¤   š {"files":{"package.json":{"size":39,"offset":"0","integrity":{"algorithm":"SHA256","hash":"ca13d54546e68c97e98c12faa18081181e8b698375f5db416e07070b290c2a32","blockSize":4194304,"blocks":["ca13d54546e68c97e98c12faa18081181e8b698375f5db416e07070b290c2a32"]}},"patcher.js":{"size":198133,"offset":"39","integrity":{"algorithm":"SHA256","hash":"97bef500054c67172ba53fdbe1b7fe4829e0ccdf90497d8c9c4450c6d8905e2d","blockSize":4194304,"blocks":["97bef500054c67172ba53fdbe1b7fe4829e0ccdf90497d8c9c4450c6d8905e2d"]}},"patcher.js.LEGAL.txt":{"size":964,"offset":"198172","integrity":{"algorithm":"SHA256","hash":"3a77a1f63d0bbc71bb238ce6a16f90288fa19aa4fe01655e23e10757526671c7","blockSize":4194304,"blocks":["3a77a1f63d0bbc71bb238ce6a16f90288fa19aa4fe01655e23e10757526671c7"]}},"patcher.js.map":{"size":767019,"offset":"199136","integrity":{"algorithm":"SHA256","hash":"2d8a7c4bfcd947378328cb8537601414e15e0e63eccc0b84fb309d475f833053","blockSize":4194304,"blocks":["2d8a7c4bfcd947378328cb8537601414e15e0e63eccc0b84fb309d475f833053"]}},"preload.js":{"size":2678,"offset":"966155","integrity":{"algorithm":"SHA256","hash":"c5db85fa35d302e5985dcb7ed7eee332415ca6d18333c1d198c46a35b1419141","blockSize":4194304,"blocks":["c5db85fa35d302e5985dcb7ed7eee332415ca6d18333c1d198c46a35b1419141"]}},"preload.js.map":{"size":10680,"offset":"968833","integrity":{"algorithm":"SHA256","hash":"9e10cf6e3bd6252a603391b8ff7746dfd169293cc63da4a8bce75dd7a367fb1a","blockSize":4194304,"blocks":["9e10cf6e3bd6252a603391b8ff7746dfd169293cc63da4a8bce75dd7a367fb1a"]}},"renderer.css":{"size":218270,"offset":"979513","integrity":{"algorithm":"SHA256","hash":"7aaee06d6f7c490836ab13adefeaf491160d9b552f92467c45bd914452caf8d9","blockSize":4194304,"blocks":["7aaee06d6f7c490836ab13adefeaf491160d9b552f92467c45bd914452caf8d9"]}},"renderer.css.map":{"size":441853,"offset":"1197783","integrity":{"algorithm":"SHA256","hash":"4497c2151bae3625d769917051d772ac32ef71216572dfb55865e8891064a018","blockSize":4194304,"blocks":["4497c2151bae3625d769917051d772ac32ef71216572dfb55865e8891064a018"]}},"renderer.js":{"size":3067768,"offset":"1639636","integrity":{"algorithm":"SHA256","hash":"dffd86ae36fe7196e44b9943ff752d8799849d90a06ad22db29c49e95fa25f39","blockSize":4194304,"blocks":["dffd86ae36fe7196e44b9943ff752d8799849d90a06ad22db29c49e95fa25f39"]}},"renderer.js.LEGAL.txt":{"size":2731,"offset":"4707404","integrity":{"algorithm":"SHA256","hash":"29c6a2c007a8335d4da7c85923295a26150aa67a3495a034ef99cb498e5adc9f","blockSize":4194304,"blocks":["29c6a2c007a8335d4da7c85923295a26150aa67a3495a034ef99cb498e5adc9f"]}},"renderer.js.map":{"size":11297876,"offset":"4710135","integrity":{"algorithm":"SHA256","hash":"8290d905b5af43a85bbf88be9e73d1d7e8d31fdd90f87489c4498a8ea3c3d489","blockSize":4194304,"blocks":["47189ca27e8f7b7086bc1ef03a75bd9b494597b6a8315e750251ca3e19dbff55","8cc158e1f70f1866c831799b61c42cd7384d9fcb93971533fccbb2d691a31c07","fb6cafd2e7129a6f04d0d4241e090e035176f0bf64fe9548706197f47503f1e9"]}}}}{"name":"equicord","main":"patcher.js"}// Equicord 0d27aec1ab604f1c0d7f7eb9114114e71da93573 // Standalone: true // Platform: Universal // Updater Disabled: false "use strict";var ka=Object.create;var It=Object.defineProperty;var ba=Object.getOwnPropertyDescriptor;var xa=Object.getOwnPropertyNames;var Ea=Object.getPrototypeOf,Sa=Object.prototype.hasOwnProperty;var O=(r,e,t)=>()=>{if(t)throw t[0];try{return r&&(e=r(r=0)),e}catch(i){throw t=[i],i}};var $=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},L=(r,e)=>{for(var t in e)It(r,t,{get:e[t],enumerable:!0})},qn=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of xa(e))!Sa.call(r,n)&&n!==t&&It(r,n,{get:()=>e[n],enumerable:!(i=ba(e,n))||i.enumerable});return r};var De=(r,e,t)=>(t=r!=null?ka(Ea(r)):{},qn(e||!r||!r.__esModule?It(t,"default",{value:r,enumerable:!0}):t,r)),Pt=r=>qn(It({},"__esModule",{value:!0}),r);var w=O(()=>{"use strict"});var Ae=O(()=>{"use strict";w()});var Re,Dt=O(()=>{w();Re="Equicord/Equicord"});function ut(r){return async function(){try{return{ok:!0,value:await r(...arguments)}}catch(e){return{ok:!1,error:e instanceof Error?{...e,message:e.message,name:e.name,stack:e.stack}:e}}}}var Ln,lr=O(()=>{"use strict";w();Ln="desktop.asar"});async function On(r,e){try{var t=await fetch(r,e)}catch(n){throw n instanceof Error&&n.cause&&(n=n.cause),new Error(`${e?.method??"GET"} ${r} failed: ${n}`)}if(t.ok)return t;let i=`${e?.method??"GET"} ${r}: ${t.status} ${t.statusText}`;try{let n=await t.text();i+=` ${n}`}catch{}throw new Error(i)}async function Fn(r,e){return(await On(r,e)).json()}async function At(r,e){let i=await(await On(r,e)).arrayBuffer();return Buffer.from(i)}var Ta,cr=O(()=>{"use strict";w();Ta=require("original-fs")});var Je,ur=O(()=>{w();Je="0d27aec1ab604f1c0d7f7eb9114114e71da93573"});var $n,Rt,jc,Ct=O(()=>{"use strict";w();ur();Dt();$n=Je.slice(0,9),Rt=`Equicord/${Je}${Re?` (https://github.com/${Re})`:""}`,jc=`Equicord${Re?` (https://github.com/${Re})`:""}`});var Aa={};async function zn(r){return Fn(Ia+r,{headers:{Accept:"application/vnd.github+json","User-Agent":Rt}})}async function Pa(){return await Bn()?(await zn(`/compare/${Je}...HEAD`)).commits.map(t=>({hash:t.sha,author:t.author?.login??t.commit?.author?.name??"Unknown Author",message:t.commit.message.split(` `)[0]})):[]}async function Bn(){let r=await zn("/releases/latest");return r.name.slice(r.name.lastIndexOf(" ")+1)===Je?!1:(Mt=r.assets.find(i=>i.name===Ln).browser_download_url,!0)}async function Da(){if(!Mt)return!0;let r=await At(Mt);return(0,jn.writeFileSync)(__dirname,r,{flush:!0}),Mt=null,!0}var pt,jn,Ia,Mt,Vn=O(()=>{"use strict";w();cr();Ae();Ct();pt=require("electron"),jn=require("original-fs");ur();Dt();lr();Ia=`https://api.github.com/repos/${Re}`,Mt=null;pt.ipcMain.handle("VencordGetRepo",ut(()=>`https://github.com/${Re}`));pt.ipcMain.handle("VencordGetUpdates",ut(Pa));pt.ipcMain.handle("VencordUpdate",ut(Bn));pt.ipcMain.handle("VencordBuild",ut(Da))});var dr,Zn,ft,Yn=O(()=>{"use strict";w();dr=Symbol("SettingsStore.isProxy"),Zn=Symbol("SettingsStore.getRawTarget"),ft=class{pathListeners=new Map;prefixListeners=new Map;globalListeners=new Set;proxyContexts=new WeakMap;proxyHandler=(()=>{let e=this;return{get(t,i,n){if(i===dr)return!0;if(i===Zn)return t;let s=Reflect.get(t,i,n),o=e.proxyContexts.get(t);if(o==null)return s;let{root:c,path:h}=o;if(!(i in t)&&e.getDefaultValue!=null&&(s=e.getDefaultValue({target:t,key:i,root:c,path:h})),typeof s=="object"&&s!==null&&!s[dr]){let f=`${h}${h&&"."}${i}`;return e.makeProxy(s,c,f)}return s},set(t,i,n){if(n?.[dr]&&(n=n[Zn]),t[i]===n)return!0;if(!Reflect.set(t,i,n))return!1;let s=e.proxyContexts.get(t);if(s==null)return!0;let{root:o,path:c}=s,h=`${c}${c&&"."}${i}`;return e.notifyListeners(h,n,o),!0},deleteProperty(t,i){if(!Reflect.deleteProperty(t,i))return!1;let n=e.proxyContexts.get(t);if(n==null)return!0;let{root:s,path:o}=n,c=`${o}${o&&"."}${i}`;return e.notifyListeners(c,void 0,s),!0}}})();constructor(e,t={}){this.plain=e,this.store=this.makeProxy(e),Object.assign(this,t)}makeProxy(e,t=e,i=""){return this.proxyContexts.set(e,{root:t,path:i}),new Proxy(e,this.proxyHandler)}notifyPrefixListeners(e,t,i){for(let n=1;n<=t.length;n++){let s=t.slice(0,n).join(".");this.prefixListeners.get(s)?.forEach(o=>o(i,e))}}notifyListeners(e,t,i){let n=e.split(".");if(n.length>3&&n[0]==="plugins"){let s=n.slice(0,3),o=s.join("."),c=s.reduce((h,f)=>h[f],i);this.globalListeners.forEach(h=>h(i,o)),this.pathListeners.get(o)?.forEach(h=>h(c))}else this.globalListeners.forEach(s=>s(i,e));this.pathListeners.get(e)?.forEach(s=>s(t)),this.notifyPrefixListeners(e,n,t)}setData(e,t){if(this.readOnly)throw new Error("SettingsStore is read-only");if(this.plain=e,this.store=this.makeProxy(e),t){let i=e,n=t.split(".");for(let s of n){if(!i){console.warn(`Settings#setData: Path ${t} does not exist in new data. Not dispatching update`);return}i=i[s]}this.pathListeners.get(t)?.forEach(s=>s(i)),this.notifyPrefixListeners(t,n,i)}this.markAsChanged()}addGlobalChangeListener(e){this.globalListeners.add(e)}addChangeListener(e,t){let i=this.pathListeners.get(e)??new Set;i.add(t),this.pathListeners.set(e,i)}addPrefixChangeListener(e,t){let i=this.prefixListeners.get(e)??new Set;i.add(t),this.prefixListeners.set(e,i)}removeGlobalChangeListener(e){this.globalListeners.delete(e)}removeChangeListener(e,t){let i=this.pathListeners.get(e);i&&(i.delete(t),i.size||this.pathListeners.delete(e))}removePrefixChangeListener(e,t){let i=this.prefixListeners.get(e);i&&(i.delete(t),i.size||this.prefixListeners.delete(e))}markAsChanged(){this.globalListeners.forEach(e=>e(this.plain,""))}}});function mr(r,e){for(let t in e){let i=e[t];typeof i=="object"&&!Array.isArray(i)?(r[t]??={},mr(r[t],i)):r[t]??=i}return r}var Jn=O(()=>{"use strict";w()});var Xn,xe,Kn,Ce,pe,Y,Ke,_r,gr,fu,Qn,Ut,ge=O(()=>{"use strict";w();Xn=require("electron"),xe=require("path"),Kn="",Ce=process.env.EQUICORD_USER_DATA_DIR??(process.env.DISCORD_USER_DATA_DIR?(0,xe.join)(process.env.DISCORD_USER_DATA_DIR,"..","EquicordData",Kn):(0,xe.join)(Xn.app.getPath("userData"),"..","Equicord",Kn)),pe=(0,xe.join)(Ce,"settings"),Y=(0,xe.join)(Ce,"themes"),Ke=(0,xe.join)(pe,"quickCss.css"),_r=(0,xe.join)(pe,"settings.json"),gr=(0,xe.join)(pe,"native-settings.json"),fu=(0,xe.join)(pe,"migration"),Qn=["https:","http:","steam:","spotify:","com.epicgames.launcher:","tidal:","itunes:","vrcx:","tg:"],Ut=process.argv.includes("--vanilla")});function ei(r,e){try{return JSON.parse((0,je.readFileSync)(e,"utf-8"))}catch(t){return t?.code!=="ENOENT"&&console.error(`Failed to read ${r} settings`,t),{}}}var Nt,je,j,Ua,ti,V,fe=O(()=>{"use strict";w();Ae();Yn();Jn();Nt=require("electron"),je=require("fs");ge();(0,je.mkdirSync)(pe,{recursive:!0});j=new ft(ei("renderer",_r));j.addGlobalChangeListener(()=>{try{(0,je.writeFileSync)(_r,JSON.stringify(j.plain,null,4))}catch(r){console.error("Failed to write renderer settings",r)}});Nt.ipcMain.handle("VencordGetSettingsDir",()=>pe);Nt.ipcMain.on("VencordGetSettings",r=>r.returnValue=j.plain);Nt.ipcMain.handle("VencordSetSettings",(r,e,t)=>{j.setData(e,t)});Ua={plugins:{},customCspRules:{}},ti=ei("native",gr);mr(ti,Ua);V=new ft(ti);V.addGlobalChangeListener(()=>{try{(0,je.writeFileSync)(gr,JSON.stringify(V.plain,null,4))}catch(r){console.error("Failed to write native settings",r)}})});var it=$(is=>{w();(function(){this.Event=class{constructor(e,t){this.start_mark=e,this.end_mark=t}},this.NodeEvent=class extends this.Event{constructor(e,t,i){super(t,i),this.anchor=e}},this.CollectionStartEvent=class extends this.NodeEvent{constructor(e,t,i,n,s,o){super(e,n,s),this.tag=t,this.implicit=i,this.flow_style=o}},this.CollectionEndEvent=class extends this.Event{},this.StreamStartEvent=class extends this.Event{constructor(e,t,i){super(e,t),this.encoding=i}},this.StreamEndEvent=class extends this.Event{},this.DocumentStartEvent=class extends this.Event{constructor(e,t,i,n,s){super(e,t),this.explicit=i,this.version=n,this.tags=s}},this.DocumentEndEvent=class extends this.Event{constructor(e,t,i){super(e,t),this.explicit=i}},this.AliasEvent=class extends this.NodeEvent{},this.ScalarEvent=class extends this.NodeEvent{constructor(e,t,i,n,s,o,c){super(e,s,o),this.tag=t,this.implicit=i,this.value=n,this.style=c}},this.SequenceStartEvent=class extends this.CollectionStartEvent{},this.SequenceEndEvent=class extends this.CollectionEndEvent{},this.MappingStartEvent=class extends this.CollectionStartEvent{},this.MappingEndEvent=class extends this.CollectionEndEvent{}}).call(is)});var _e=$(ss=>{w();(function(){var r=[].indexOf;this.Mark=class{constructor(t,i,n,s){this.line=t,this.column=i,this.buffer=n,this.pointer=s}get_snippet(t=4,i=75){var n,s,o,c,h,f,d;if(this.buffer==null)return null;for(n=`\0\r \x85\u2028\u2029`,o="",f=this.pointer;f>0&&(c=this.buffer[f-1],r.call(n,c)<0);)if(f--,this.pointer-f>i/2-1){o=" ... ",f+=5;break}for(d="",s=this.pointer;si/2-1){d=" ... ",s-=5;break}return`${new Array(t).join(" ")}${o}${this.buffer.slice(f,s)}${d} ${new Array(t+this.pointer-f+o.length).join(" ")}^`}toString(){var t,i;return t=this.get_snippet(),i=` on line ${this.line+1}, column ${this.column+1}`,t?i:`${i}: ${t}`}},this.YAMLError=class extends Error{constructor(t){super(t),Object.defineProperty(this,"stack",{get:function(){return this.toString()+` `+new Error().stack.split(` `).slice(1).join(` `)}})}toString(){return this.message}},this.MarkedYAMLError=class extends this.YAMLError{constructor(t,i,n,s,o){super(),this.context=t,this.context_mark=i,this.problem=n,this.problem_mark=s,this.note=o}toString(){var t;return t=[],this.context!=null&&t.push(this.context),this.context_mark!=null&&(this.problem==null||this.problem_mark==null||this.context_mark.line!==this.problem_mark.line||this.context_mark.column!==this.problem_mark.column)&&t.push(this.context_mark.toString()),this.problem!=null&&t.push(this.problem),this.problem_mark!=null&&t.push(this.problem_mark.toString()),this.note!=null&&t.push(this.note),t.join(` `)}}}).call(ss)});var Ve=$(as=>{w();(function(){var r;r=0,this.Node=class{constructor(t,i,n,s){this.tag=t,this.value=i,this.start_mark=n,this.end_mark=s,this.unique_id=`node_${r++}`}},this.ScalarNode=(function(){class e extends this.Node{constructor(i,n,s,o,c){super(i,n,s,o),this.style=c}}return e.prototype.id="scalar",e}).call(this),this.CollectionNode=class extends this.Node{constructor(t,i,n,s,o){super(t,i,n,s),this.flow_style=o}},this.SequenceNode=(function(){class e extends this.CollectionNode{}return e.prototype.id="sequence",e}).call(this),this.MappingNode=(function(){class e extends this.CollectionNode{}return e.prototype.id="mapping",e}).call(this)}).call(as)});var Kr=$(xt=>{w();(function(){var r,e,t;e=it(),{MarkedYAMLError:r}=_e(),t=Ve(),this.ComposerError=class extends r{},this.Composer=(function(){var i;class n{constructor(){return i.apply(this,arguments)}initialise(){return this.anchors={}}check_node(){return this.check_event(e.StreamStartEvent)&&this.get_event(),!this.check_event(e.StreamEndEvent)}get_node(){if(!this.check_event(e.StreamEndEvent))return this.compose_document()}get_single_node(){var o,c;if(this.get_event(),o=null,this.check_event(e.StreamEndEvent)||(o=this.compose_document()),!this.check_event(e.StreamEndEvent))throw c=this.get_event(),new xt.ComposerError("expected a single document in the stream",o.start_mark,"but found another document",c.start_mark);return this.get_event(),o}compose_document(){var o;return this.get_event(),o=this.compose_node(),this.get_event(),this.anchors={},o}compose_node(o,c){var h,f,d;if(this.check_event(e.AliasEvent)){if(f=this.get_event(),h=f.anchor,!(h in this.anchors))throw new xt.ComposerError(null,null,`found undefined alias ${h}`,f.start_mark);return this.anchors[h]}if(f=this.peek_event(),h=f.anchor,h!==null&&h in this.anchors)throw new xt.ComposerError(`found duplicate anchor ${h}; first occurence`,this.anchors[h].start_mark,"second occurrence",f.start_mark);return this.descend_resolver(o,c),this.check_event(e.ScalarEvent)?d=this.compose_scalar_node(h):this.check_event(e.SequenceStartEvent)?d=this.compose_sequence_node(h):this.check_event(e.MappingStartEvent)&&(d=this.compose_mapping_node(h)),this.ascend_resolver(),d}compose_scalar_node(o){var c,h,f;return c=this.get_event(),f=c.tag,(f===null||f==="!")&&(f=this.resolve(t.ScalarNode,c.value,c.implicit)),h=new t.ScalarNode(f,c.value,c.start_mark,c.end_mark,c.style),o!==null&&(this.anchors[o]=h),h}compose_sequence_node(o){var c,h,f,d,g;for(d=this.get_event(),g=d.tag,(g===null||g==="!")&&(g=this.resolve(t.SequenceNode,null,d.implicit)),f=new t.SequenceNode(g,[],d.start_mark,null,d.flow_style),o!==null&&(this.anchors[o]=f),h=0;!this.check_event(e.SequenceEndEvent);)f.value.push(this.compose_node(f,h)),h++;return c=this.get_event(),f.end_mark=c.end_mark,f}compose_mapping_node(o){var c,h,f,d,g,u;for(g=this.get_event(),u=g.tag,(u===null||u==="!")&&(u=this.resolve(t.MappingNode,null,g.implicit)),d=new t.MappingNode(u,[],g.start_mark,null,g.flow_style),o!==null&&(this.anchors[o]=d);!this.check_event(e.MappingEndEvent);)h=this.compose_node(d),f=this.compose_node(d,h),d.value.push([h,f]);return c=this.get_event(),d.end_mark=c.end_mark,d}}return i=n.prototype.initialise,n}).call(this)}).call(xt)});var Ee=$(os=>{w();(function(){var r,e,t,i={}.hasOwnProperty;this.StringStream=class{constructor(){this.string=""}write(s){return this.string+=s}},this.clone=n=>Object.assign({},n),this.extend=function(n,...s){var o,c,h,f,d,g,u;for(o=0,h=s.length;o=o?n:n.length+1===o?`${s}${n}`:`${new Array(o-n.length+1).join(s)}${n}`},this.to_hex=function(n){return typeof n=="string"&&(n=n.charCodeAt(0)),n.toString(16)}}).call(os)});var Xr=$(K=>{w();(function(){var r,e,t,i=[].indexOf;({MarkedYAMLError:r}=_e()),e=Ve(),t=Ee(),this.ConstructorError=class extends r{},this.BaseConstructor=(function(){var n;class s{constructor(){return n.apply(this,arguments)}static add_constructor(c,h){return this.prototype.hasOwnProperty("yaml_constructors")||(this.prototype.yaml_constructors=t.extend({},this.prototype.yaml_constructors)),this.prototype.yaml_constructors[c]=h}static add_multi_constructor(c,h){return this.prototype.hasOwnProperty("yaml_multi_constructors")||(this.prototype.yaml_multi_constructors=t.extend({},this.prototype.yaml_multi_constructors)),this.prototype.yaml_multi_constructors[c]=h}initialise(){return this.constructed_objects={},this.constructing_nodes=[],this.deferred_constructors=[]}check_data(){return this.check_node()}get_data(){if(this.check_node())return this.construct_document(this.get_node())}get_single_data(){var c;return c=this.get_single_node(),c!=null?this.construct_document(c):null}construct_document(c){var h;for(h=this.construct_object(c);!t.is_empty(this.deferred_constructors);)this.deferred_constructors.pop()();return h}defer(c){return this.deferred_constructors.push(c)}construct_object(c){var h,f,d,g,u;if(c.unique_id in this.constructed_objects)return this.constructed_objects[c.unique_id];if(d=c.unique_id,i.call(this.constructing_nodes,d)>=0)throw new K.ConstructorError(null,null,"found unconstructable recursive node",c.start_mark);if(this.constructing_nodes.push(c.unique_id),h=null,u=null,c.tag in this.yaml_constructors)h=this.yaml_constructors[c.tag];else{for(g in this.yaml_multi_constructors)if(c.tag.indexOf(g===0)){u=c.tag.slice(g.length),h=this.yaml_multi_constructors[g];break}h==null&&(null in this.yaml_multi_constructors?(u=c.tag,h=this.yaml_multi_constructors[null]):null in this.yaml_constructors?h=this.yaml_constructors[null]:c instanceof e.ScalarNode?h=this.construct_scalar:c instanceof e.SequenceNode?h=this.construct_sequence:c instanceof e.MappingNode&&(h=this.construct_mapping))}return f=h.call(this,u??c,c),this.constructed_objects[c.unique_id]=f,this.constructing_nodes.pop(),f}construct_scalar(c){if(!(c instanceof e.ScalarNode))throw new K.ConstructorError(null,null,`expected a scalar node but found ${c.id}`,c.start_mark);return c.value}construct_sequence(c){var h,f,d,g,u;if(!(c instanceof e.SequenceNode))throw new K.ConstructorError(null,null,`expected a sequence node but found ${c.id}`,c.start_mark);for(g=c.value,u=[],f=0,d=g.length;f=0&&(v=v.slice(1)),v==="0")return 0;if(v.indexOf("0b")===0)return m*parseInt(v.slice(2),2);if(v.indexOf("0x")===0)return m*parseInt(v.slice(2),16);if(v.indexOf("0o")===0)return m*parseInt(v.slice(2),8);if(v[0]==="0")return m*parseInt(v,8);if(i.call(v,":")>=0){for(u=(function(){var k,y,b,S;for(b=v.split(/:/g),S=[],k=0,y=b.length;k=0&&(v=v.slice(1)),v===".inf")return m*(1/0);if(v===".nan")return NaN;if(i.call(v,":")>=0){for(u=(function(){var k,y,b,S;for(b=v.split(/:/g),S=[],k=0,y=b.length;k{var u,_,a,l,p,m,v,k,y;for(p=d.value,m=[],u=0,l=p.length;u{var g,u;u=[];for(g in this.construct_mapping(f))u.push(d.push(g));return u}),d}construct_yaml_str(f){return this.construct_scalar(f)}construct_yaml_seq(f){var d;return d=[],this.defer(()=>{var g,u,_,a,l;for(a=this.construct_sequence(f),l=[],g=0,_=a.length;g<_;g++)u=a[g],l.push(d.push(u));return l}),d}construct_yaml_map(f){var d;return d={},this.defer(()=>{var g,u,_,a;u=this.construct_mapping(f),_=[];for(g in u)a=u[g],_.push(d[g]=a);return _}),d}construct_yaml_object(f,d){var g;return g=new d,this.defer(()=>{var u,_,a,l;_=this.construct_mapping(f,!0),a=[];for(u in _)l=_[u],a.push(g[u]=l);return a}),g}construct_undefined(f){throw new K.ConstructorError(null,null,`could not determine a constructor for the tag ${f.tag}`,f.start_mark)}}return n={on:!0,off:!1,true:!0,false:!1,yes:!0,no:!1},o=/^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[\x20\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\.([0-9]*))?(?:[\x20\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?)?$/,s={year:1,month:2,day:3,hour:4,minute:5,second:6,fraction:7,tz:8,tz_sign:9,tz_hour:10,tz_minute:11},c}).call(this),this.Constructor.add_constructor("tag:yaml.org,2002:null",this.Constructor.prototype.construct_yaml_null),this.Constructor.add_constructor("tag:yaml.org,2002:bool",this.Constructor.prototype.construct_yaml_bool),this.Constructor.add_constructor("tag:yaml.org,2002:int",this.Constructor.prototype.construct_yaml_int),this.Constructor.add_constructor("tag:yaml.org,2002:float",this.Constructor.prototype.construct_yaml_float),this.Constructor.add_constructor("tag:yaml.org,2002:binary",this.Constructor.prototype.construct_yaml_binary),this.Constructor.add_constructor("tag:yaml.org,2002:timestamp",this.Constructor.prototype.construct_yaml_timestamp),this.Constructor.add_constructor("tag:yaml.org,2002:omap",this.Constructor.prototype.construct_yaml_omap),this.Constructor.add_constructor("tag:yaml.org,2002:pairs",this.Constructor.prototype.construct_yaml_pairs),this.Constructor.add_constructor("tag:yaml.org,2002:set",this.Constructor.prototype.construct_yaml_set),this.Constructor.add_constructor("tag:yaml.org,2002:str",this.Constructor.prototype.construct_yaml_str),this.Constructor.add_constructor("tag:yaml.org,2002:seq",this.Constructor.prototype.construct_yaml_seq),this.Constructor.add_constructor("tag:yaml.org,2002:map",this.Constructor.prototype.construct_yaml_map),this.Constructor.add_constructor(null,this.Constructor.prototype.construct_undefined)}).call(K)});var ls=$(Qr=>{w();(function(){var r,e,t,i,n={}.hasOwnProperty,s=[].indexOf;t=it(),i=Ee(),{YAMLError:e}=_e(),this.EmitterError=class extends e{},this.Emitter=(function(){var o,c,h,f;class d{constructor(){return f.apply(this,arguments)}initialise(u,_){var a;return this.stream=u,this.encoding=null,this.states=[],this.state=this.expect_stream_start,this.events=[],this.event=null,this.indents=[],this.indent=null,this.flow_level=0,this.root_context=!1,this.sequence_context=!1,this.mapping_context=!1,this.simple_key_context=!1,this.line=0,this.column=0,this.whitespace=!0,this.indentation=!0,this.open_ended=!1,{canonical:this.canonical,allow_unicode:this.allow_unicode}=_,this.canonical==null&&(this.canonical=!1),this.allow_unicode==null&&(this.allow_unicode=!0),this.best_indent=1<_.indent&&_.indent<10?_.indent:2,this.best_width=_.width>this.indent*2?_.width:80,this.best_line_break=(a=_.line_break)==="\r"||a===` `||a===`\r `?_.line_break:` `,this.tag_prefixes=null,this.prepared_anchor=null,this.prepared_tag=null,this.analysis=null,this.style=null}dispose(){return this.states=[],this.state=null}emit(u){var _;for(this.events.push(u),_=[];!this.need_more_events();)this.event=this.events.shift(),this.state(),_.push(this.event=null);return _}need_more_events(){var u;return this.events.length===0?!0:(u=this.events[0],u instanceof t.DocumentStartEvent?this.need_events(1):u instanceof t.SequenceStartEvent?this.need_events(2):u instanceof t.MappingStartEvent?this.need_events(3):!1)}need_events(u){var _,a,l,p,m;for(p=0,m=this.events.slice(1),a=0,l=m.length;athis.best_width)&&this.write_indent(),this.states.push(this.expect_flow_sequence_item),this.expect_node({sequence:!0}))}expect_flow_sequence_item(){return this.event instanceof t.SequenceEndEvent?(this.indent=this.indents.pop(),this.flow_level--,this.canonical&&(this.write_indicator(",",!1),this.write_indent()),this.write_indicator("]",!1),this.state=this.states.pop()):(this.write_indicator(",",!1),(this.canonical||this.column>this.best_width)&&this.write_indent(),this.states.push(this.expect_flow_sequence_item),this.expect_node({sequence:!0}))}expect_flow_mapping(){return this.write_indicator("{",!0,{whitespace:!0}),this.flow_level++,this.increase_indent({flow:!0}),this.state=this.expect_first_flow_mapping_key}expect_first_flow_mapping_key(){return this.event instanceof t.MappingEndEvent?(this.indent=this.indents.pop(),this.flow_level--,this.write_indicator("}",!1),this.state=this.states.pop()):((this.canonical||this.column>this.best_width)&&this.write_indent(),!this.canonical&&this.check_simple_key()?(this.states.push(this.expect_flow_mapping_simple_value),this.expect_node({mapping:!0,simple_key:!0})):(this.write_indicator("?",!0),this.states.push(this.expect_flow_mapping_value),this.expect_node({mapping:!0})))}expect_flow_mapping_key(){return this.event instanceof t.MappingEndEvent?(this.indent=this.indents.pop(),this.flow_level--,this.canonical&&(this.write_indicator(",",!1),this.write_indent()),this.write_indicator("}",!1),this.state=this.states.pop()):(this.write_indicator(",",!1),(this.canonical||this.column>this.best_width)&&this.write_indent(),!this.canonical&&this.check_simple_key()?(this.states.push(this.expect_flow_mapping_simple_value),this.expect_node({mapping:!0,simple_key:!0})):(this.write_indicator("?",!0),this.states.push(this.expect_flow_mapping_value),this.expect_node({mapping:!0})))}expect_flow_mapping_simple_value(){return this.write_indicator(":",!1),this.states.push(this.expect_flow_mapping_key),this.expect_node({mapping:!0})}expect_flow_mapping_value(){return(this.canonical||this.column>this.best_width)&&this.write_indent(),this.write_indicator(":",!0),this.states.push(this.expect_flow_mapping_key),this.expect_node({mapping:!0})}expect_block_sequence(){var u;return u=this.mapping_context&&!this.indentation,this.increase_indent({indentless:u}),this.state=this.expect_first_block_sequence_item}expect_first_block_sequence_item(){return this.expect_block_sequence_item(!0)}expect_block_sequence_item(u=!1){return!u&&this.event instanceof t.SequenceEndEvent?(this.indent=this.indents.pop(),this.state=this.states.pop()):(this.write_indent(),this.write_indicator("-",!0,{indentation:!0}),this.states.push(this.expect_block_sequence_item),this.expect_node({sequence:!0}))}expect_block_mapping(){return this.increase_indent(),this.state=this.expect_first_block_mapping_key}expect_first_block_mapping_key(){return this.expect_block_mapping_key(!0)}expect_block_mapping_key(u=!1){return!u&&this.event instanceof t.MappingEndEvent?(this.indent=this.indents.pop(),this.state=this.states.pop()):(this.write_indent(),this.check_simple_key()?(this.states.push(this.expect_block_mapping_simple_value),this.expect_node({mapping:!0,simple_key:!0})):(this.write_indicator("?",!0,{indentation:!0}),this.states.push(this.expect_block_mapping_value),this.expect_node({mapping:!0})))}expect_block_mapping_simple_value(){return this.write_indicator(":",!1),this.states.push(this.expect_block_mapping_key),this.expect_node({mapping:!0})}expect_block_mapping_value(){return this.write_indent(),this.write_indicator(":",!0,{indentation:!0}),this.states.push(this.expect_block_mapping_key),this.expect_node({mapping:!0})}check_empty_document(){var u;return!(this.event instanceof t.DocumentStartEvent)||this.events.length===0?!1:(u=this.events[0],u instanceof t.ScalarEvent&&u.anchor==null&&u.tag==null&&u.implicit&&u.value==="")}check_empty_sequence(){return this.event instanceof t.SequenceStartEvent&&this.events[0]instanceof t.SequenceEndEvent}check_empty_mapping(){return this.event instanceof t.MappingStartEvent&&this.events[0]instanceof t.MappingEndEvent}check_simple_key(){var u;return u=0,this.event instanceof t.NodeEvent&&this.event.anchor!=null&&(this.prepared_anchor==null&&(this.prepared_anchor=this.prepare_anchor(this.event.anchor)),u+=this.prepared_anchor.length),this.event.tag!=null&&(this.event instanceof t.ScalarEvent||this.event instanceof t.CollectionStartEvent)&&(this.prepared_tag==null&&(this.prepared_tag=this.prepare_tag(this.event.tag)),u+=this.prepared_tag.length),this.event instanceof t.ScalarEvent&&(this.analysis==null&&(this.analysis=this.analyze_scalar(this.event.value)),u+=this.analysis.scalar.length),u<128&&(this.event instanceof t.AliasEvent||this.event instanceof t.ScalarEvent&&!this.analysis.empty&&!this.analysis.multiline||this.check_empty_sequence()||this.check_empty_mapping())}process_anchor(u){if(this.event.anchor==null){this.prepared_anchor=null;return}return this.prepared_anchor==null&&(this.prepared_anchor=this.prepare_anchor(this.event.anchor)),this.prepared_anchor&&this.write_indicator(`${u}${this.prepared_anchor}`,!0),this.prepared_anchor=null}process_tag(){var u;if(u=this.event.tag,this.event instanceof t.ScalarEvent){if(this.style==null&&(this.style=this.choose_scalar_style()),(!this.canonical||u==null)&&(this.style===""&&this.event.implicit[0]||this.style!==""&&this.event.implicit[1])){this.prepared_tag=null;return}this.event.implicit[0]&&u==null&&(u="!",this.prepared_tag=null)}else if((!this.canonical||u==null)&&this.event.implicit){this.prepared_tag=null;return}return u==null&&this.error("tag is not specified"),this.prepared_tag==null&&(this.prepared_tag=this.prepare_tag(u)),this.write_indicator(this.prepared_tag,!0),this.prepared_tag=null}process_scalar(){var u;switch(this.analysis==null&&(this.analysis=this.analyze_scalar(this.event.value)),this.style==null&&(this.style=this.choose_scalar_style()),u=!this.simple_key_context,this.style){case'"':this.write_double_quoted(this.analysis.scalar,u);break;case"'":this.write_single_quoted(this.analysis.scalar,u);break;case">":this.write_folded(this.analysis.scalar);break;case"|":this.write_literal(this.analysis.scalar);break;default:this.write_plain(this.analysis.scalar,u)}return this.analysis=null,this.style=null}choose_scalar_style(){var u;return this.analysis==null&&(this.analysis=this.analyze_scalar(this.event.value)),this.event.style==='"'||this.canonical?'"':!this.event.style&&this.event.implicit[0]&&!(this.simple_key_context&&(this.analysis.empty||this.analysis.multiline))&&(this.flow_level&&this.analysis.allow_flow_plain||!this.flow_level&&this.analysis.allow_block_plain)?"":this.event.style&&(u=this.event.style,s.call("|>",u)>=0)&&!this.flow_level&&!this.simple_key_context&&this.analysis.allow_block?this.event.style:(!this.event.style||this.event.style==="'")&&this.analysis.allow_single_quoted&&!(this.simple_key_context&&this.analysis.multiline)?"'":'"'}prepare_version([u,_]){var a;return a=`${u}.${_}`,u===1?a:this.error("unsupported YAML version",a)}prepare_tag_handle(u){var _,a,l,p;for(u||this.error("tag handle must not be empty"),(u[0]!=="!"||u.slice(-1)!=="!")&&this.error("tag handle must start and end with '!':",u),p=u.slice(1,-1),a=0,l=p.length;a=0||this.error(`invalid character '${_}' in the tag handle:`,u);return u}prepare_tag_prefix(u){var _,a,l,p;for(u||this.error("tag prefix must not be empty"),a=[],p=0,l=+(u[0]==="!");l=0?l++:(p=0||_==="!"&&p!=="!"?l++:(S`}prepare_anchor(u){var _,a,l;for(u||this.error("anchor must not be empty"),a=0,l=u.length;a=0||this.error(`invalid character '${_}' in the anchor:`,u);return u}analyze_scalar(u){var _,a,l,p,m,v,k,y,b,S,T,P,I,C,U,ee,Ie,ne,Pe,be,$e,We,te,lt,He,Ze;for(u||new r(u,!0,!1,!1,!0,!0,!0,!1),v=!1,b=!1,ee=!1,te=!1,Ze=!1,C=!1,I=!1,He=!1,lt=!1,k=!1,We=!1,(u.indexOf("---")===0||u.indexOf("...")===0)&&(v=!0,b=!0),Ie=!0,S=u.length===1||(be=u[1],s.call(`\0 \r \x85\u2028\u2029`,be)>=0),Pe=!1,ne=!1,P=0,P=T=0,U=u.length;T'\"%@`",y)>=0||y==="-"&&S?(b=!0,v=!0):s.call("?:",y)>=0&&(b=!0,S&&(v=!0)):s.call(",?[]{}",y)>=0?b=!0:y===":"?(b=!0,S&&(v=!0)):y==="#"&&Ie&&(b=!0,v=!0),s.call(` \x85\u2028\u2029`,y)>=0&&(ee=!0),y===` `||" "<=y&&y<="~"||(y!=="\uFEFF"&&(y==="\x85"||"\xA0"<=y&&y<="\uD7FF"||"\uE000"<=y&&y<="\uFFFD")?(Ze=!0,this.allow_unicode||(te=!0)):te=!0),y===" "?(P===0&&(C=!0),P===u.length-1&&(He=!0),ne&&(k=!0),ne=!1,Pe=!0):s.call(` \x85\u2028\u2029`,y)>=0?(P===0&&(I=!0),P===u.length-1&&(lt=!0),Pe&&(We=!0),ne=!0,Pe=!1):(ne=!1,Pe=!1),Ie=s.call(o,y)>=0,S=P+2>=u.length||($e=u[P+2],s.call(o,$e)>=0);return p=!0,a=!0,m=!0,l=!0,_=!0,(C||I||He||lt)&&(p=a=!1),He&&(_=!1),k&&(p=a=m=!1),(We||te)&&(p=a=m=_=!1),ee&&(p=a=!1),b&&(p=!1),v&&(a=!1),new r(u,!1,ee,p,a,m,l,_)}write_stream_start(){if(this.encoding&&this.encoding.indexOf("utf-16")===0)return this.stream.write("\uFEFF",this.encoding)}write_stream_end(){return this.flush_stream()}write_indicator(u,_,a={}){var l;return l=this.whitespace||!_?u:" "+u,this.whitespace=!!a.whitespace,this.indentation&&(this.indentation=!!a.indentation),this.column+=l.length,this.open_ended=!1,this.stream.write(l,this.encoding)}write_indent(){var u,_,a;if(_=(a=this.indent)!=null?a:0,(!this.indentation||this.column>_||this.column===_&&!this.whitespace)&&this.write_line_break(),this.column<_)return this.whitespace=!0,u=new Array(_-this.column+1).join(" "),this.column=_,this.stream.write(u,this.encoding)}write_line_break(u){return this.whitespace=!0,this.indentation=!0,this.line+=1,this.column=0,this.stream.write(u??this.best_line_break,this.encoding)}write_version_directive(u){return this.stream.write(`%YAML ${u}`,this.encoding),this.write_line_break()}write_tag_directive(u,_){return this.stream.write(`%TAG ${u} ${_}`,this.encoding),this.write_line_break()}write_single_quoted(u,_=!0){var a,l,p,m,v,k,y,b,S,T;for(this.write_indicator("'",!0),S=!1,l=!1,T=v=0;v<=u.length;){if(p=u[v],S)(p==null||p!==" ")&&(T+1===v&&this.column>this.best_width&&_&&T!==0&&v!==u.length?this.write_indent():(m=u.slice(T,v),this.column+=m.length,this.stream.write(m,this.encoding)),T=v);else if(l){if(p==null||s.call(` \x85\u2028\u2029`,p)<0){for(u[T]===` `&&this.write_line_break(),b=u.slice(T,v),k=0,y=b.length;k=0||p==="'")&&T=0),v++}return this.write_indicator("'",!1)}write_double_quoted(u,_=!0){var a,l,p,m;for(this.write_indicator('"',!0),m=p=0;p<=u.length;)a=u[p],(a==null||s.call('"\\\x85\u2028\u2029\uFEFF',a)>=0||!(" "<=a&&a<="~"||this.allow_unicode&&("\xA0"<=a&&a<="\uD7FF"||"\uE000"<=a&&a<="\uFFFD")))&&(m=p)&&this.column+(p-m)>this.best_width&&(l=`${u.slice(m,p)}\\`,m${v}`,!0),v.slice(-1)==="+"&&(this.open_ended=!0),this.write_line_break(),y=!0,a=!0,P=!1,I=m=0,T=[];m<=u.length;){if(l=u[m],a){if(l==null||s.call(` \x85\u2028\u2029`,l)<0){for(!y&&l!=null&&l!==" "&&u[I]===` `&&this.write_line_break(),y=l===" ",S=u.slice(I,m),k=0,b=S.length;kthis.best_width?this.write_indent():(p=u.slice(I,m),this.column+=p.length,this.stream.write(p,this.encoding)),I=m):(l==null||s.call(` \x85\u2028\u2029`,l)>=0)&&(p=u.slice(I,m),this.column+=p.length,this.stream.write(p,this.encoding),l==null&&this.write_line_break(),I=m);l!=null&&(a=s.call(` \x85\u2028\u2029`,l)>=0,P=l===" "),T.push(m++)}return T}write_literal(u){var _,a,l,p,m,v,k,y,b,S,T;for(v=this.determine_block_hints(u),this.write_indicator(`|${v}`,!0),v.slice(-1)==="+"&&(this.open_ended=!0),this.write_line_break(),a=!0,T=m=0,S=[];m<=u.length;){if(l=u[m],a){if(l==null||s.call(` \x85\u2028\u2029`,l)<0){for(b=u.slice(T,m),k=0,y=b.length;k=0)&&(p=u.slice(T,m),this.stream.write(p,this.encoding),l==null&&this.write_line_break(),T=m);l!=null&&(a=s.call(` \x85\u2028\u2029`,l)>=0),S.push(m++)}return S}write_plain(u,_=!0){var a,l,p,m,v,k,y,b,S,T,P;if(u){for(this.root_context&&(this.open_ended=!0),this.whitespace||(m=" ",this.column+=m.length,this.stream.write(m,this.encoding)),this.whitespace=!1,this.indentation=!1,T=!1,l=!1,P=v=0,S=[];v<=u.length;){if(p=u[v],T)p!==" "&&(P+1===v&&this.column>this.best_width&&_?(this.write_indent(),this.whitespace=!1,this.indentation=!1):(m=u.slice(P,v),this.column+=m.length,this.stream.write(m,this.encoding)),P=v);else if(l){if(s.call(` \x85\u2028\u2029`,p)<0){for(u[P]===` `&&this.write_line_break(),b=u.slice(P,v),k=0,y=b.length;k=0)&&(m=u.slice(P,v),this.column+=m.length,this.stream.write(m,this.encoding),P=v);p!=null&&(T=p===" ",l=s.call(` \x85\u2028\u2029`,p)>=0),S.push(v++)}return S}}determine_block_hints(u){var _,a,l,p,m;return a="",_=u[0],l=u.length-2,m=u[l++],p=u[l++],s.call(` \x85\u2028\u2029`,_)>=0&&(a+=this.best_indent),s.call(` \x85\u2028\u2029`,p)<0?a+="-":(u.length===1||s.call(` \x85\u2028\u2029`,m)>=0)&&(a+="+"),a}flush_stream(){var u;return typeof(u=this.stream).flush=="function"?u.flush():void 0}error(u,_){var a,l;throw _&&(_=(a=_!=null&&(l=_.constructor)!=null?l.name:void 0)!=null?a:i.inspect(_)),new Qr.EmitterError(`${u}${_?` ${_}`:""}`)}}return o=`\0 \r \x85\u2028\u2029`,c={"!":"!","tag:yaml.org,2002:":"!!"},h={"\0":"0","\x07":"a","\b":"b"," ":"t","\n":"n","\v":"v","\f":"f","\r":"r","\x1B":"e",'"':'"',"\\":"\\","\x85":"N","\xA0":"_","\u2028":"L","\u2029":"P"},f=d.prototype.initialise,d}).call(this),r=class{constructor(c,h,f,d,g,u,_,a){this.scalar=c,this.empty=h,this.multiline=f,this.allow_flow_plain=d,this.allow_block_plain=g,this.allow_single_quoted=u,this.allow_double_quoted=_,this.allow_block=a}}}).call(Qr)});var us=$(cs=>{w();(function(){var r,e,t,i;e=it(),t=Ve(),i=Ee(),{YAMLError:r}=_e(),this.SerializerError=class extends r{},this.Serializer=(function(){var n;class s{constructor(){return n.apply(this,arguments)}initialise({encoding:c,explicit_start:h,explicit_end:f,version:d,tags:g}={}){return this.encoding=c,this.explicit_start=h,this.explicit_end=f,this.version=d,this.tags=g,this.serialized_nodes={},this.anchors={},this.last_anchor_id=0,this.closed=null}open(){if(this.closed===null)return this.emit(new e.StreamStartEvent(this.encoding)),this.closed=!1;throw this.closed?new SerializerError("serializer is closed"):new SerializerError("serializer is already open")}close(){if(this.closed===null)throw new SerializerError("serializer is not opened");if(!this.closed)return this.emit(new e.StreamEndEvent),this.closed=!0}serialize(c){if(this.closed===null)throw new SerializerError("serializer is not opened");if(this.closed)throw new SerializerError("serializer is closed");return c!=null&&(this.emit(new e.DocumentStartEvent(void 0,void 0,this.explicit_start,this.version,this.tags)),this.anchor_node(c),this.serialize_node(c),this.emit(new e.DocumentEndEvent(void 0,void 0,this.explicit_end))),this.serialized_nodes={},this.anchors={},this.last_anchor_id=0}anchor_node(c){var h,f,d,g,u,_,a,l,p,m,v,k,y;if(c.unique_id in this.anchors)return(h=this.anchors)[l=c.unique_id]!=null?h[l]:h[l]=this.generate_anchor(c);if(this.anchors[c.unique_id]=null,c instanceof t.SequenceNode){for(p=c.value,v=[],f=0,_=p.length;f<_;f++)d=p[f],v.push(this.anchor_node(d));return v}else if(c instanceof t.MappingNode){for(m=c.value,k=[],g=0,a=m.length;g{w();(function(){var r,e,t={}.hasOwnProperty;e=Ve(),{YAMLError:r}=_e(),this.RepresenterError=class extends r{},this.BaseRepresenter=(function(){var i;class n{constructor(){return i.apply(this,arguments)}static add_representer(o,c){return this.prototype.hasOwnProperty("yaml_representers_types")||(this.prototype.yaml_representers_types=[].concat(this.prototype.yaml_representers_types)),this.prototype.hasOwnProperty("yaml_representers_handlers")||(this.prototype.yaml_representers_handlers=[].concat(this.prototype.yaml_representers_handlers)),this.prototype.yaml_representers_types.push(o),this.prototype.yaml_representers_handlers.push(c)}static add_multi_representer(o,c){return this.prototype.hasOwnProperty("yaml_multi_representers_types")||(this.prototype.yaml_multi_representers_types=[].concat(this.prototype.yaml_multi_representers_types)),this.prototype.hasOwnProperty("yaml_multi_representers_handlers")||(this.prototype.yaml_multi_representers_handlers=[].concat(this.prototype.yaml_multi_representers_handlers)),this.prototype.yaml_multi_representers_types.push(o),this.prototype.yaml_multi_representers_handlers.push(c)}initialise({default_style:o,default_flow_style:c}={}){return this.default_style=o,this.default_flow_style=c,this.represented_objects={},this.object_keeper=[],this.alias_key=null}represent(o){var c;return c=this.represent_data(o),this.serialize(c),this.represented_objects={},this.object_keeper=[],this.alias_key=null}represent_data(o){var c,h,f,d,g,u,_;if(this.ignore_aliases(o))this.alias_key=null;else if((h=this.object_keeper.indexOf(o))!==-1){if(this.alias_key=h,this.alias_key in this.represented_objects)return this.represented_objects[this.alias_key]}else this.alias_key=this.object_keeper.length,this.object_keeper.push(o);if(u=null,c=o===null?"null":typeof o,c==="object"&&(c=o.constructor),(h=this.yaml_representers_types.lastIndexOf(c))!==-1&&(u=this.yaml_representers_handlers[h]),u==null){for(g=this.yaml_multi_representers_types,h=f=0,d=g.length;f{w();(function(){var r,e,t,i=[].indexOf;e=Ve(),t=Ee(),{YAMLError:r}=_e(),this.ResolverError=class extends r{},this.BaseResolver=(function(){var n,s,o,c;class h{constructor(){return c.apply(this,arguments)}static add_implicit_resolver(d,g,u=[null]){var _,a,l,p,m;for(this.prototype.hasOwnProperty("yaml_implicit_resolvers")||(this.prototype.yaml_implicit_resolvers=t.extend({},this.prototype.yaml_implicit_resolvers)),m=[],l=0,p=u.length;lu?y.push([k,p]):_[p]=this.yaml_path_resolvers[k][p]);else for(S=this.yaml_path_resolvers,l=0,v=S.length;l=0)return a[d];if(i.call(a,null)>=0)return a[null]}if(d===e.ScalarNode)return s;if(d===e.SequenceNode)return o;if(d===e.MappingNode)return n}}return s="tag:yaml.org,2002:str",o="tag:yaml.org,2002:seq",n="tag:yaml.org,2002:map",h.prototype.yaml_implicit_resolvers={},h.prototype.yaml_path_resolvers={},c=h.prototype.initialise,h}).call(this),this.Resolver=class extends this.BaseResolver{},this.Resolver.add_implicit_resolver("tag:yaml.org,2002:bool",/^(?:yes|Yes|YES|true|True|TRUE|on|On|ON|no|No|NO|false|False|FALSE|off|Off|OFF)$/,"yYnNtTfFoO"),this.Resolver.add_implicit_resolver("tag:yaml.org,2002:float",/^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)?|\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*|[-+]?\.(?:inf|Inf|INF)|\.(?:nan|NaN|NAN))$/,"-+0123456789."),this.Resolver.add_implicit_resolver("tag:yaml.org,2002:int",/^(?:[-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[0-9a-fA-F_]+|[-+]?0o[0-7_]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$/,"-+0123456789"),this.Resolver.add_implicit_resolver("tag:yaml.org,2002:merge",/^(?:<<)$/,"<"),this.Resolver.add_implicit_resolver("tag:yaml.org,2002:null",/^(?:~|null|Null|NULL|)$/,["~","n","N",""]),this.Resolver.add_implicit_resolver("tag:yaml.org,2002:timestamp",/^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]|[0-9][0-9][0-9][0-9]-[0-9][0-9]?-[0-9][0-9]?(?:[Tt]|[\x20\t]+)[0-9][0-9]?:[0-9][0-9]:[0-9][0-9](?:\.[0-9]*)?(?:[\x20\t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$/,"0123456789"),this.Resolver.add_implicit_resolver("tag:yaml.org,2002:value",/^(?:=)$/,"="),this.Resolver.add_implicit_resolver("tag:yaml.org,2002:yaml",/^(?:!|&|\*)$/,"!&*")}).call(ps)});var ds=$(fs=>{w();(function(){var r,e,t,i,n;n=Ee(),r=ls(),i=us(),e=hs(),t=Wt(),this.make_dumper=function(s=r.Emitter,o=i.Serializer,c=e.Representer,h=t.Resolver){var f,d;return d=[s,o,c,h],f=(function(){var g;class u{constructor(a,l={}){var p,m,v;for(d[0].prototype.initialise.call(this,a,l),v=d.slice(1),p=0,m=v.length;p{w();(function(){var r,e,t=[].indexOf;({Mark:r,YAMLError:e}=_e()),this.ReaderError=class extends e{constructor(n,s,o){super(),this.position=n,this.character=s,this.reason=o}toString(){return`unacceptable character #${this.character.charCodeAt(0).toString(16)}: ${this.reason} position ${this.position}`}},this.Reader=(function(){var i,n;class s{constructor(){return n.apply(this,arguments)}initialise(c){return this.string=c,this.line=0,this.column=0,this.index=0,this.check_printable(),this.string+="\0"}peek(c=0){return this.string[this.index+c]}prefix(c=1){return this.string.slice(this.index,this.index+c)}forward(c=1){var h,f;for(f=[];c;)h=this.string[this.index],this.index++,t.call(` \x85\u2082\u2029`,h)>=0||h==="\r"&&this.string[this.index]!==` `?(this.line++,this.column=0):this.column++,f.push(c--);return f}get_mark(){return new r(this.line,this.column,this.string,this.index)}check_printable(){var c,h,f;if(h=i.exec(this.string),h)throw c=h[0],f=this.string.length-this.index+h.index,new tn.ReaderError(f,c,"special characters are not allowed")}}return i=/[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uFFFD]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,n=s.prototype.initialise,s}).call(this)}).call(tn)});var Ht=$(ms=>{w();(function(){this.Token=class{constructor(e,t){this.start_mark=e,this.end_mark=t}},this.DirectiveToken=(function(){class r extends this.Token{constructor(t,i,n,s){super(n,s),this.name=t,this.value=i}}return r.prototype.id="",r}).call(this),this.DocumentStartToken=(function(){class r extends this.Token{}return r.prototype.id="",r}).call(this),this.DocumentEndToken=(function(){class r extends this.Token{}return r.prototype.id="",r}).call(this),this.StreamStartToken=(function(){class r extends this.Token{constructor(t,i,n){super(t,i),this.encoding=n}}return r.prototype.id="",r}).call(this),this.StreamEndToken=(function(){class r extends this.Token{}return r.prototype.id="",r}).call(this),this.BlockSequenceStartToken=(function(){class r extends this.Token{}return r.prototype.id="",r}).call(this),this.BlockMappingStartToken=(function(){class r extends this.Token{}return r.prototype.id="",r}).call(this),this.BlockEndToken=(function(){class r extends this.Token{}return r.prototype.id="",r}).call(this),this.FlowSequenceStartToken=(function(){class r extends this.Token{}return r.prototype.id="[",r}).call(this),this.FlowMappingStartToken=(function(){class r extends this.Token{}return r.prototype.id="{",r}).call(this),this.FlowSequenceEndToken=(function(){class r extends this.Token{}return r.prototype.id="]",r}).call(this),this.FlowMappingEndToken=(function(){class r extends this.Token{}return r.prototype.id="}",r}).call(this),this.KeyToken=(function(){class r extends this.Token{}return r.prototype.id="?",r}).call(this),this.ValueToken=(function(){class r extends this.Token{}return r.prototype.id=":",r}).call(this),this.BlockEntryToken=(function(){class r extends this.Token{}return r.prototype.id="-",r}).call(this),this.FlowEntryToken=(function(){class r extends this.Token{}return r.prototype.id=",",r}).call(this),this.AliasToken=(function(){class r extends this.Token{constructor(t,i,n){super(i,n),this.value=t}}return r.prototype.id="",r}).call(this),this.AnchorToken=(function(){class r extends this.Token{constructor(t,i,n){super(i,n),this.value=t}}return r.prototype.id="",r}).call(this),this.TagToken=(function(){class r extends this.Token{constructor(t,i,n){super(i,n),this.value=t}}return r.prototype.id="",r}).call(this),this.ScalarToken=(function(){class r extends this.Token{constructor(t,i,n,s,o){super(n,s),this.value=t,this.plain=i,this.style=o}}return r.prototype.id="",r}).call(this)}).call(ms)});var nn=$(A=>{w();(function(){var r,e,t,i,n={}.hasOwnProperty,s=[].indexOf;({MarkedYAMLError:r}=_e()),t=Ht(),i=Ee(),this.ScannerError=class extends r{},e=class{constructor(c,h,f,d,g,u){this.token_number=c,this.required=h,this.index=f,this.line=d,this.column=g,this.mark=u}},this.Scanner=(function(){var o,c,h,f,d,g;class u{constructor(){return g.apply(this,arguments)}initialise(){return this.done=!1,this.flow_level=0,this.tokens=[],this.fetch_stream_start(),this.tokens_taken=0,this.indent=-1,this.indents=[],this.allow_simple_key=!0,this.possible_simple_keys={}}check_token(...a){for(var l,p,m;this.need_more_tokens();)this.fetch_more_tokens();if(this.tokens.length!==0){if(a.length===0)return!0;for(p=0,m=a.length;p"&&this.flow_level===0)return this.fetch_folded();if(a==="'")return this.fetch_single();if(a==='"')return this.fetch_double();if(this.check_plain())return this.fetch_plain();throw new A.ScannerError("while scanning for the next token",null,`found character ${a} that cannot start any token`,this.get_mark())}next_possible_simple_key(){var a,l,p,m;p=null,m=this.possible_simple_keys;for(l in m)n.call(m,l)&&(a=m[l],(p===null||a.token_numbera;)l=this.get_mark(),this.indent=this.indents.pop(),p.push(this.tokens.push(new t.BlockEndToken(l,l)));return p}}add_indent(a){return a>this.indent?(this.indents.push(this.indent),this.indent=a,!0):!1}fetch_stream_start(){var a;return a=this.get_mark(),this.tokens.push(new t.StreamStartToken(a,a,this.encoding))}fetch_stream_end(){var a;return this.unwind_indent(-1),this.remove_possible_simple_key(),this.allow_possible_simple_key=!1,this.possible_simple_keys={},a=this.get_mark(),this.tokens.push(new t.StreamEndToken(a,a)),this.done=!0}fetch_directive(){return this.unwind_indent(-1),this.remove_possible_simple_key(),this.allow_simple_key=!1,this.tokens.push(this.scan_directive())}fetch_document_start(){return this.fetch_document_indicator(t.DocumentStartToken)}fetch_document_end(){return this.fetch_document_indicator(t.DocumentEndToken)}fetch_document_indicator(a){var l;return this.unwind_indent(-1),this.remove_possible_simple_key(),this.allow_simple_key=!1,l=this.get_mark(),this.forward(3),this.tokens.push(new a(l,this.get_mark()))}fetch_flow_sequence_start(){return this.fetch_flow_collection_start(t.FlowSequenceStartToken)}fetch_flow_mapping_start(){return this.fetch_flow_collection_start(t.FlowMappingStartToken)}fetch_flow_collection_start(a){var l;return this.save_possible_simple_key(),this.flow_level++,this.allow_simple_key=!0,l=this.get_mark(),this.forward(),this.tokens.push(new a(l,this.get_mark()))}fetch_flow_sequence_end(){return this.fetch_flow_collection_end(t.FlowSequenceEndToken)}fetch_flow_mapping_end(){return this.fetch_flow_collection_end(t.FlowMappingEndToken)}fetch_flow_collection_end(a){var l;return this.remove_possible_simple_key(),this.flow_level--,this.allow_simple_key=!1,l=this.get_mark(),this.forward(),this.tokens.push(new a(l,this.get_mark()))}fetch_flow_entry(){var a;return this.allow_simple_key=!0,this.remove_possible_simple_key(),a=this.get_mark(),this.forward(),this.tokens.push(new t.FlowEntryToken(a,this.get_mark()))}fetch_block_entry(){var a,l;if(this.flow_level===0){if(!this.allow_simple_key)throw new A.ScannerError(null,null,"sequence entries are not allowed here",this.get_mark());this.add_indent(this.column)&&(a=this.get_mark(),this.tokens.push(new t.BlockSequenceStartToken(a,a)))}return this.allow_simple_key=!0,this.remove_possible_simple_key(),l=this.get_mark(),this.forward(),this.tokens.push(new t.BlockEntryToken(l,this.get_mark()))}fetch_key(){var a,l;if(this.flow_level===0){if(!this.allow_simple_key)throw new A.ScannerError(null,null,"mapping keys are not allowed here",this.get_mark());this.add_indent(this.column)&&(a=this.get_mark(),this.tokens.push(new t.BlockMappingStartToken(a,a)))}return this.allow_simple_key=!this.flow_level,this.remove_possible_simple_key(),l=this.get_mark(),this.forward(),this.tokens.push(new t.KeyToken(l,this.get_mark()))}fetch_value(){var a,l,p;if(a=this.possible_simple_keys[this.flow_level])delete this.possible_simple_keys[this.flow_level],this.tokens.splice(a.token_number-this.tokens_taken,0,new t.KeyToken(a.mark,a.mark)),this.flow_level===0&&this.add_indent(a.column)&&this.tokens.splice(a.token_number-this.tokens_taken,0,new t.BlockMappingStartToken(a.mark,a.mark)),this.allow_simple_key=!1;else{if(this.flow_level===0){if(!this.allow_simple_key)throw new A.ScannerError(null,null,"mapping values are not allowed here",this.get_mark());this.add_indent(this.column)&&(l=this.get_mark(),this.tokens.push(new t.BlockMappingStartToken(l,l)))}this.allow_simple_key=!this.flow_level,this.remove_possible_simple_key()}return p=this.get_mark(),this.forward(),this.tokens.push(new t.ValueToken(p,this.get_mark()))}fetch_alias(){return this.save_possible_simple_key(),this.allow_simple_key=!1,this.tokens.push(this.scan_anchor(t.AliasToken))}fetch_anchor(){return this.save_possible_simple_key(),this.allow_simple_key=!1,this.tokens.push(this.scan_anchor(t.AnchorToken))}fetch_tag(){return this.save_possible_simple_key(),this.allow_simple_key=!1,this.tokens.push(this.scan_tag())}fetch_literal(){return this.fetch_block_scalar("|")}fetch_folded(){return this.fetch_block_scalar(">")}fetch_block_scalar(a){return this.allow_simple_key=!0,this.remove_possible_simple_key(),this.tokens.push(this.scan_block_scalar(a))}fetch_single(){return this.fetch_flow_scalar("'")}fetch_double(){return this.fetch_flow_scalar('"')}fetch_flow_scalar(a){return this.save_possible_simple_key(),this.allow_simple_key=!1,this.tokens.push(this.scan_flow_scalar(a))}fetch_plain(){return this.save_possible_simple_key(),this.allow_simple_key=!1,this.tokens.push(this.scan_plain())}check_directive(){return this.column===0}check_document_start(){var a;return this.column===0&&this.prefix(3)==="---"&&(a=this.peek(3),s.call(o+h+"\0",a)>=0)}check_document_end(){var a;return this.column===0&&this.prefix(3)==="..."&&(a=this.peek(3),s.call(o+h+"\0",a)>=0)}check_block_entry(){var a;return a=this.peek(1),s.call(o+h+"\0",a)>=0}check_key(){var a;return this.flow_level!==0?!0:(a=this.peek(1),s.call(o+h+"\0",a)>=0)}check_value(){var a;return this.flow_level!==0?!0:(a=this.peek(1),s.call(o+h+"\0",a)>=0)}check_plain(){var a,l;return a=this.peek(),s.call(o+h+"\0-?:,[]{}#&*!|>'\"%@`",a)<0||(l=this.peek(1),s.call(o+h+"\0",l)<0&&(a==="-"||this.flow_level===0&&s.call("?:",a)>=0))}scan_to_next_token(){var a,l,p;for(this.index===0&&this.peek()==="\uFEFF"&&this.forward(),a=!1,p=[];!a;){for(;this.peek()===" ";)this.forward();if(this.peek()==="#")for(;l=this.peek(),s.call(o+"\0",l)<0;)this.forward();this.scan_line_break()?this.flow_level===0?p.push(this.allow_simple_key=!0):p.push(void 0):p.push(a=!0)}return p}scan_directive(){var a,l,p,m,v;if(m=this.get_mark(),this.forward(),l=this.scan_directive_name(m),v=null,l==="YAML")v=this.scan_yaml_directive_value(m),a=this.get_mark();else if(l==="TAG")v=this.scan_tag_directive_value(m),a=this.get_mark();else for(a=this.get_mark();p=this.peek(),s.call(o+"\0",p)<0;)this.forward();return this.scan_directive_ignored_line(m),new t.DirectiveToken(l,v,m,a)}scan_directive_name(a){var l,p,m;for(p=0,l=this.peek(p);"0"<=l&&l<="9"||"A"<=l&&l<="Z"||"a"<=l&&l<="z"||s.call("-_",l)>=0;)p++,l=this.peek(p);if(p===0)throw new A.ScannerError("while scanning a directive",a,`expected alphanumeric or numeric character but found ${l}`,this.get_mark());if(m=this.prefix(p),this.forward(p),l=this.peek(),s.call(o+"\0 ",l)<0)throw new A.ScannerError("while scanning a directive",a,`expected alphanumeric or numeric character but found ${l}`,this.get_mark());return m}scan_yaml_directive_value(a){for(var l,p,m;this.peek()===" ";)this.forward();if(l=this.scan_yaml_directive_number(a),this.peek()!==".")throw new A.ScannerError("while scanning a directive",a,`expected a digit or '.' but found ${this.peek()}`,this.get_mark());if(this.forward(),p=this.scan_yaml_directive_number(a),m=this.peek(),s.call(o+"\0 ",m)<0)throw new A.ScannerError("while scanning a directive",a,`expected a digit or ' ' but found ${this.peek()}`,this.get_mark());return[l,p]}scan_yaml_directive_number(a){var l,p,m,v;if(l=this.peek(),!("0"<=l&&l<="9"))throw new A.ScannerError("while scanning a directive",a,`expected a digit but found ${l}`,this.get_mark());for(p=0;"0"<=(m=this.peek(p))&&m<="9";)p++;return v=parseInt(this.prefix(p)),this.forward(p),v}scan_tag_directive_value(a){for(var l,p;this.peek()===" ";)this.forward();for(l=this.scan_tag_directive_handle(a);this.peek()===" ";)this.forward();return p=this.scan_tag_directive_prefix(a),[l,p]}scan_tag_directive_handle(a){var l,p;if(p=this.scan_tag_handle("directive",a),l=this.peek(),l!==" ")throw new A.ScannerError("while scanning a directive",a,`expected ' ' but found ${l}`,this.get_mark());return p}scan_tag_directive_prefix(a){var l,p;if(p=this.scan_tag_uri("directive",a),l=this.peek(),s.call(o+"\0 ",l)<0)throw new A.ScannerError("while scanning a directive",a,`expected ' ' but found ${l}`,this.get_mark());return p}scan_directive_ignored_line(a){for(var l,p;this.peek()===" ";)this.forward();if(this.peek()==="#")for(;p=this.peek(),s.call(o+"\0",p)<0;)this.forward();if(l=this.peek(),s.call(o+"\0",l)<0)throw new A.ScannerError("while scanning a directive",a,`expected a comment or a line break but found ${l}`,this.get_mark());return this.scan_line_break()}scan_anchor(a){var l,p,m,v,k,y;for(k=this.get_mark(),p=this.peek(),p==="*"?v="alias":v="anchor",this.forward(),m=0,l=this.peek(m);"0"<=l&&l<="9"||"A"<=l&&l<="Z"||"a"<=l&&l<="z"||s.call("-_",l)>=0;)m++,l=this.peek(m);if(m===0)throw new A.ScannerError(`while scanning an ${v}`,k,`expected alphabetic or numeric character but found '${l}'`,this.get_mark());if(y=this.prefix(m),this.forward(m),l=this.peek(),s.call(o+h+"\0?:,]}%@`",l)<0)throw new A.ScannerError(`while scanning an ${v}`,k,`expected alphabetic or numeric character but found '${l}'`,this.get_mark());return new a(y,k,this.get_mark())}scan_tag(){var a,l,p,m,v,k;if(m=this.get_mark(),a=this.peek(1),a==="<"){if(l=null,this.forward(2),v=this.scan_tag_uri("tag",m),this.peek()!==">")throw new A.ScannerError("while parsing a tag",m,`expected '>' but found ${this.peek()}`,this.get_mark());this.forward()}else if(s.call(o+h+"\0",a)>=0)l=null,v="!",this.forward();else{for(p=1,k=!1;s.call(o+"\0 ",a)<0;){if(a==="!"){k=!0;break}p++,a=this.peek(p)}k?l=this.scan_tag_handle("tag",m):(l="!",this.forward()),v=this.scan_tag_uri("tag",m)}if(a=this.peek(),s.call(o+"\0 ",a)<0)throw new A.ScannerError("while scanning a tag",m,`expected ' ' but found ${a}`,this.get_mark());return new t.TagToken([l,v],m,this.get_mark())}scan_block_scalar(a){var l,p,m,v,k,y,b,S,T,P,I,C,U,ee,Ie,ne;for(k=a===">",m=[],ne=this.get_mark(),this.forward(),[p,y]=this.scan_block_scalar_indicators(ne),this.scan_block_scalar_ignored_line(ne),C=this.indent+1,C<1&&(C=1),y==null?([l,I,v]=this.scan_block_scalar_indentation(),b=Math.max(C,I)):(b=C+y-1,[l,v]=this.scan_block_scalar_breaks(b)),P="";this.column===b&&this.peek()!=="\0";){for(m=m.concat(l),S=(U=this.peek(),s.call(" ",U)<0),T=0;ee=this.peek(T),s.call(o+"\0",ee)<0;)T++;if(m.push(this.prefix(T)),this.forward(T),P=this.scan_line_break(),[l,v]=this.scan_block_scalar_breaks(b),this.column===b&&this.peek()!=="\0")k&&P===` `&&S&&(Ie=this.peek(),s.call(" ",Ie)<0)?i.is_empty(l)&&m.push(" "):m.push(P);else break}return p!==!1&&m.push(P),p===!0&&(m=m.concat(l)),new t.ScalarToken(m.join(""),!1,ne,v,a)}scan_block_scalar_indicators(a){var l,p,m;if(p=null,m=null,l=this.peek(),s.call("+-",l)>=0){if(p=l==="+",this.forward(),l=this.peek(),s.call(c,l)>=0){if(m=parseInt(l),m===0)throw new A.ScannerError("while scanning a block scalar",a,"expected indentation indicator in the range 1-9 but found 0",this.get_mark());this.forward()}}else if(s.call(c,l)>=0){if(m=parseInt(l),m===0)throw new A.ScannerError("while scanning a block scalar",a,"expected indentation indicator in the range 1-9 but found 0",this.get_mark());this.forward(),l=this.peek(),s.call("+-",l)>=0&&(p=l==="+",this.forward())}if(l=this.peek(),s.call(o+"\0 ",l)<0)throw new A.ScannerError("while scanning a block scalar",a,`expected chomping or indentation indicators, but found ${l}`,this.get_mark());return[p,m]}scan_block_scalar_ignored_line(a){for(var l,p;this.peek()===" ";)this.forward();if(this.peek()==="#")for(;p=this.peek(),s.call(o+"\0",p)<0;)this.forward();if(l=this.peek(),s.call(o+"\0",l)<0)throw new A.ScannerError("while scanning a block scalar",a,`expected a comment or a line break but found ${l}`,this.get_mark());return this.scan_line_break()}scan_block_scalar_indentation(){var a,l,p,m;for(a=[],p=0,l=this.get_mark();m=this.peek(),s.call(o+" ",m)>=0;)this.peek()!==" "?(a.push(this.scan_line_break()),l=this.get_mark()):(this.forward(),this.column>p&&(p=this.column));return[a,p,l]}scan_block_scalar_breaks(a){var l,p,m;for(l=[],p=this.get_mark();this.column=0;)for(l.push(this.scan_line_break()),p=this.get_mark();this.column=0)m.push(p),this.forward();else if(a&&p==="\\")if(this.forward(),p=this.peek(),p in d)m.push(d[p]),this.forward();else if(p in f){for(b=f[p],this.forward(),y=k=0,T=b;0<=T?kT;y=0<=T?++k:--k)if(P=this.peek(y),s.call(`${c}ABCDEFabcdef`,P)<0)throw new A.ScannerError("while scanning a double-quoted scalar",l,`expected escape sequence of ${b} hexadecimal numbers, but found ${this.peek(y)}`,this.get_mark());v=parseInt(this.prefix(b),16),m.push(String.fromCharCode(v)),this.forward(b)}else if(s.call(o,p)>=0)this.scan_line_break(),m=m.concat(this.scan_flow_scalar_breaks(a,l));else throw new A.ScannerError("while scanning a double-quoted scalar",l,`found unknown escape character ${p}`,this.get_mark());else return m}}scan_flow_scalar_spaces(a,l){var p,m,v,k,y,b,S;for(v=[],k=0;b=this.peek(k),s.call(h,b)>=0;)k++;if(S=this.prefix(k),this.forward(k),m=this.peek(),m==="\0")throw new A.ScannerError("while scanning a quoted scalar",l,"found unexpected end of stream",this.get_mark());return s.call(o,m)>=0?(y=this.scan_line_break(),p=this.scan_flow_scalar_breaks(a,l),y!==` `?v.push(y):p.length===0&&v.push(" "),v=v.concat(p)):v.push(S),v}scan_flow_scalar_breaks(a,l){var p,m,v,k,y;for(p=[];;){if(m=this.prefix(3),m==="---"||m==="..."&&(v=this.peek(3),s.call(o+h+"\0",v)>=0))throw new A.ScannerError("while scanning a quoted scalar",l,"found unexpected document separator",this.get_mark());for(;k=this.peek(),s.call(h,k)>=0;)this.forward();if(y=this.peek(),s.call(o,y)>=0)p.push(this.scan_line_break());else return p}}scan_plain(){var a,l,p,m,v,k,y,b,S;for(l=[],S=p=this.get_mark(),m=this.indent+1,b=[];v=0,this.peek()!=="#";){for(;a=this.peek(v),!(s.call(o+h+"\0",a)>=0||this.flow_level===0&&a===":"&&(k=this.peek(v+1),s.call(o+h+"\0",k)>=0)||this.flow_level!==0&&s.call(",:?[]{}",a)>=0);)v++;if(this.flow_level!==0&&a===":"&&(y=this.peek(v+1),s.call(o+h+"\0,[]{}",y)<0))throw this.forward(v),new A.ScannerError("while scanning a plain scalar",S,"found unexpected ':'",this.get_mark(),"Please check http://pyyaml.org/wiki/YAMLColonInFlowContext");if(v===0||(this.allow_simple_key=!1,l=l.concat(b),l.push(this.prefix(v)),this.forward(v),p=this.get_mark(),b=this.scan_plain_spaces(m,S),b==null||b.length===0||this.peek()==="#"||this.flow_level===0&&this.column=0;)k++;if(C=this.prefix(k),this.forward(k),m=this.peek(),s.call(o,m)>=0){if(y=this.scan_line_break(),this.allow_simple_key=!0,b=this.prefix(3),b==="---"||b==="..."&&(T=this.peek(3),s.call(o+h+"\0",T)>=0))return;for(p=[];I=this.peek(),s.call(o+" ",I)>=0;)if(this.peek()===" ")this.forward();else if(p.push(this.scan_line_break()),b=this.prefix(3),b==="---"||b==="..."&&(P=this.peek(3),s.call(o+h+"\0",P)>=0))return;y!==` `?v.push(y):p.length===0&&v.push(" "),v=v.concat(p)}else C&&v.push(C);return v}scan_tag_handle(a,l){var p,m,v;if(p=this.peek(),p!=="!")throw new A.ScannerError(`while scanning a ${a}`,l,`expected '!' but found ${p}`,this.get_mark());if(m=1,p=this.peek(m),p!==" "){for(;"0"<=p&&p<="9"||"A"<=p&&p<="Z"||"a"<=p&&p<="z"||s.call("-_",p)>=0;)m++,p=this.peek(m);if(p!=="!")throw this.forward(m),new A.ScannerError(`while scanning a ${a}`,l,`expected '!' but found ${p}`,this.get_mark());m++}return v=this.prefix(m),this.forward(m),v}scan_tag_uri(a,l){var p,m,v;for(m=[],v=0,p=this.peek(v);"0"<=p&&p<="9"||"A"<=p&&p<="Z"||"a"<=p&&p<="z"||s.call("-;/?:@&=+$,_.!~*'()[]%",p)>=0;)p==="%"?(m.push(this.prefix(v)),this.forward(v),v=0,m.push(this.scan_uri_escapes(a,l))):v++,p=this.peek(v);if(v!==0&&(m.push(this.prefix(v)),this.forward(v),v=0),m.length===0)throw new A.ScannerError(`while parsing a ${a}`,l,`expected URI but found ${p}`,this.get_mark());return m.join("")}scan_uri_escapes(a,l){var p,m,v,k;for(p=[],k=this.get_mark();this.peek()==="%";){for(this.forward(),v=m=0;m<=2;v=++m)throw new A.ScannerError(`while scanning a ${a}`,l,`expected URI escape sequence of 2 hexadecimal numbers but found ${this.peek(v)}`,this.get_mark());p.push(String.fromCharCode(parseInt(this.prefix(2),16))),this.forward(2)}return p.join("")}scan_line_break(){var a;return a=this.peek(),s.call(`\r \x85`,a)>=0?(this.prefix(2)===`\r `?this.forward(2):this.forward(),` `):s.call("\u2028\u2029",a)>=0?(this.forward(),a):""}}return o=`\r \x85\u2028\u2029`,h=" ",c="0123456789",d={0:"\0",a:"\x07",b:"\b",t:" "," ":" ",n:` `,v:"\v",f:"\f",r:"\r",e:"\x1B"," ":" ",'"':'"',"\\":"\\",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"},f={x:2,u:4,U:8},g=u.prototype.initialise,u}).call(this)}).call(A)});var sn=$(ae=>{w();(function(){var r,e,t,i={}.hasOwnProperty;e=it(),{MarkedYAMLError:r}=_e(),t=Ht(),this.ParserError=class extends r{},this.Parser=(function(){var n,s;class o{constructor(){return s.apply(this,arguments)}initialise(){return this.current_event=null,this.yaml_version=null,this.tag_handles={},this.states=[],this.marks=[],this.state="parse_stream_start"}dispose(){return this.states=[],this.state=null}check_event(...h){var f,d,g;if(this.current_event===null&&this.state!=null&&(this.current_event=this[this.state]()),this.current_event!==null){if(h.length===0)return!0;for(d=0,g=h.length;d', but found ${this.peek_token().id}`,this.peek_token().start_mark);u=this.get_token(),h=u.end_mark,f=new e.DocumentStartEvent(d,h,!0,_,g),this.states.push("parse_document_end"),this.state="parse_document_content"}return f}parse_document_end(){var h,f,d,g,u;return u=this.peek_token(),g=h=u.start_mark,d=!1,this.check_token(t.DocumentEndToken)&&(u=this.get_token(),h=u.end_mark,d=!0),f=new e.DocumentEndEvent(g,h,d),this.state="parse_document_start",f}parse_document_content(){var h;return this.check_token(t.DirectiveToken,t.DocumentStartToken,t.DocumentEndToken,t.StreamEndToken)?(h=this.process_empty_scalar(this.peek_token().start_mark),this.state=this.states.pop(),h):this.parse_block_node()}process_directives(){var h,f,d,g,u,_,a,l;for(this.yaml_version=null,this.tag_handles={};this.check_token(t.DirectiveToken);)if(a=this.get_token(),a.name==="YAML"){if(this.yaml_version!==null)throw new ae.ParserError(null,null,"found duplicate YAML directive",a.start_mark);if([f,d]=a.value,f!==1)throw new ae.ParserError(null,null,"found incompatible YAML document (version 1.* is required)",a.start_mark);this.yaml_version=a.value}else if(a.name==="TAG"){if([h,g]=a.value,h in this.tag_handles)throw new ae.ParserError(null,null,`duplicate tag handle ${h}`,a.start_mark);this.tag_handles[h]=g}_=null,u=this.tag_handles;for(h in u)i.call(u,h)&&(g=u[h],_==null&&(_={}),_[h]=g);l=[this.yaml_version,_];for(h in n)i.call(n,h)&&(g=n[h],g in this.tag_handles||(this.tag_handles[h]=g));return l}parse_block_node(){return this.parse_node(!0)}parse_flow_node(){return this.parse_node()}parse_block_node_or_indentless_sequence(){return this.parse_node(!0,!0)}parse_node(h=!1,f=!1){var d,g,u,_,a,l,p,m,v,k,y;if(this.check_token(t.AliasToken))y=this.get_token(),u=new e.AliasEvent(y.value,y.start_mark,y.end_mark),this.state=this.states.pop();else{if(d=null,v=null,p=g=k=null,this.check_token(t.AnchorToken)?(y=this.get_token(),p=y.start_mark,g=y.end_mark,d=y.value,this.check_token(t.TagToken)&&(y=this.get_token(),k=y.start_mark,g=y.end_mark,v=y.value)):this.check_token(t.TagToken)&&(y=this.get_token(),p=k=y.start_mark,g=y.end_mark,v=y.value,this.check_token(t.AnchorToken)&&(y=this.get_token(),g=y.end_mark,d=y.value)),v!==null)if([_,m]=v,_!==null){if(!(_ in this.tag_handles))throw new ae.ParserError("while parsing a node",p,`found undefined tag handle ${_}`,k);v=this.tag_handles[_]+m}else v=m;if(p===null&&(p=g=this.peek_token().start_mark),u=null,a=v===null||v==="!",f&&this.check_token(t.BlockEntryToken))g=this.peek_token().end_mark,u=new e.SequenceStartEvent(d,v,a,p,g),this.state="parse_indentless_sequence_entry";else if(this.check_token(t.ScalarToken))y=this.get_token(),g=y.end_mark,y.plain&&v===null||v==="!"?a=[!0,!1]:v===null?a=[!1,!0]:a=[!1,!1],u=new e.ScalarEvent(d,v,a,y.value,p,g,y.style),this.state=this.states.pop();else if(this.check_token(t.FlowSequenceStartToken))g=this.peek_token().end_mark,u=new e.SequenceStartEvent(d,v,a,p,g,!0),this.state="parse_flow_sequence_first_entry";else if(this.check_token(t.FlowMappingStartToken))g=this.peek_token().end_mark,u=new e.MappingStartEvent(d,v,a,p,g,!0),this.state="parse_flow_mapping_first_key";else if(h&&this.check_token(t.BlockSequenceStartToken))g=this.peek_token().end_mark,u=new e.SequenceStartEvent(d,v,a,p,g,!1),this.state="parse_block_sequence_first_entry";else if(h&&this.check_token(t.BlockMappingStartToken))g=this.peek_token().end_mark,u=new e.MappingStartEvent(d,v,a,p,g,!1),this.state="parse_block_mapping_first_key";else if(d!==null||v!==null)u=new e.ScalarEvent(d,v,[a,!1],"",p,g),this.state=this.states.pop();else throw h?l="block":l="flow",y=this.peek_token(),new ae.ParserError(`while parsing a ${l} node`,p,`expected the node content, but found ${y.id}`,y.start_mark)}return u}parse_block_sequence_first_entry(){var h;return h=this.get_token(),this.marks.push(h.start_mark),this.parse_block_sequence_entry()}parse_block_sequence_entry(){var h,f;if(this.check_token(t.BlockEntryToken))return f=this.get_token(),this.check_token(t.BlockEntryToken,t.BlockEndToken)?(this.state="parse_block_sequence_entry",this.process_empty_scalar(f.end_mark)):(this.states.push("parse_block_sequence_entry"),this.parse_block_node());if(!this.check_token(t.BlockEndToken))throw f=this.peek_token(),new ae.ParserError("while parsing a block collection",this.marks.slice(-1)[0],`expected , but found ${f.id}`,f.start_mark);return f=this.get_token(),h=new e.SequenceEndEvent(f.start_mark,f.end_mark),this.state=this.states.pop(),this.marks.pop(),h}parse_indentless_sequence_entry(){var h,f;return this.check_token(t.BlockEntryToken)?(f=this.get_token(),this.check_token(t.BlockEntryToken,t.KeyToken,t.ValueToken,t.BlockEndToken)?(this.state="parse_indentless_sequence_entry",this.process_empty_scalar(f.end_mark)):(this.states.push("parse_indentless_sequence_entry"),this.parse_block_node())):(f=this.peek_token(),h=new e.SequenceEndEvent(f.start_mark,f.start_mark),this.state=this.states.pop(),h)}parse_block_mapping_first_key(){var h;return h=this.get_token(),this.marks.push(h.start_mark),this.parse_block_mapping_key()}parse_block_mapping_key(){var h,f;if(this.check_token(t.KeyToken))return f=this.get_token(),this.check_token(t.KeyToken,t.ValueToken,t.BlockEndToken)?(this.state="parse_block_mapping_value",this.process_empty_scalar(f.end_mark)):(this.states.push("parse_block_mapping_value"),this.parse_block_node_or_indentless_sequence());if(!this.check_token(t.BlockEndToken))throw f=this.peek_token(),new ae.ParserError("while parsing a block mapping",this.marks.slice(-1)[0],`expected , but found ${f.id}`,f.start_mark);return f=this.get_token(),h=new e.MappingEndEvent(f.start_mark,f.end_mark),this.state=this.states.pop(),this.marks.pop(),h}parse_block_mapping_value(){var h;return this.check_token(t.ValueToken)?(h=this.get_token(),this.check_token(t.KeyToken,t.ValueToken,t.BlockEndToken)?(this.state="parse_block_mapping_key",this.process_empty_scalar(h.end_mark)):(this.states.push("parse_block_mapping_key"),this.parse_block_node_or_indentless_sequence())):(this.state="parse_block_mapping_key",h=this.peek_token(),this.process_empty_scalar(h.start_mark))}parse_flow_sequence_first_entry(){var h;return h=this.get_token(),this.marks.push(h.start_mark),this.parse_flow_sequence_entry(!0)}parse_flow_sequence_entry(h=!1){var f,d;if(!this.check_token(t.FlowSequenceEndToken)){if(!h)if(this.check_token(t.FlowEntryToken))this.get_token();else throw d=this.peek_token(),new ae.ParserError("while parsing a flow sequence",this.marks.slice(-1)[0],`expected ',' or ']', but got ${d.id}`,d.start_mark);if(this.check_token(t.KeyToken))return d=this.peek_token(),f=new e.MappingStartEvent(null,null,!0,d.start_mark,d.end_mark,!0),this.state="parse_flow_sequence_entry_mapping_key",f;if(!this.check_token(t.FlowSequenceEndToken))return this.states.push("parse_flow_sequence_entry"),this.parse_flow_node()}return d=this.get_token(),f=new e.SequenceEndEvent(d.start_mark,d.end_mark),this.state=this.states.pop(),this.marks.pop(),f}parse_flow_sequence_entry_mapping_key(){var h;return h=this.get_token(),this.check_token(t.ValueToken,t.FlowEntryToken,t.FlowSequenceEndToken)?(this.state="parse_flow_sequence_entry_mapping_value",this.process_empty_scalar(h.end_mark)):(this.states.push("parse_flow_sequence_entry_mapping_value"),this.parse_flow_node())}parse_flow_sequence_entry_mapping_value(){var h;return this.check_token(t.ValueToken)?(h=this.get_token(),this.check_token(t.FlowEntryToken,t.FlowSequenceEndToken)?(this.state="parse_flow_sequence_entry_mapping_end",this.process_empty_scalar(h.end_mark)):(this.states.push("parse_flow_sequence_entry_mapping_end"),this.parse_flow_node())):(this.state="parse_flow_sequence_entry_mapping_end",h=this.peek_token(),this.process_empty_scalar(h.start_mark))}parse_flow_sequence_entry_mapping_end(){var h;return this.state="parse_flow_sequence_entry",h=this.peek_token(),new e.MappingEndEvent(h.start_mark,h.start_mark)}parse_flow_mapping_first_key(){var h;return h=this.get_token(),this.marks.push(h.start_mark),this.parse_flow_mapping_key(!0)}parse_flow_mapping_key(h=!1){var f,d;if(!this.check_token(t.FlowMappingEndToken)){if(!h)if(this.check_token(t.FlowEntryToken))this.get_token();else throw d=this.peek_token(),new ae.ParserError("while parsing a flow mapping",this.marks.slice(-1)[0],`expected ',' or '}', but got ${d.id}`,d.start_mark);if(this.check_token(t.KeyToken))return d=this.get_token(),this.check_token(t.ValueToken,t.FlowEntryToken,t.FlowMappingEndToken)?(this.state="parse_flow_mapping_value",this.process_empty_scalar(d.end_mark)):(this.states.push("parse_flow_mapping_value"),this.parse_flow_node());if(!this.check_token(t.FlowMappingEndToken))return this.states.push("parse_flow_mapping_empty_value"),this.parse_flow_node()}return d=this.get_token(),f=new e.MappingEndEvent(d.start_mark,d.end_mark),this.state=this.states.pop(),this.marks.pop(),f}parse_flow_mapping_value(){var h;return this.check_token(t.ValueToken)?(h=this.get_token(),this.check_token(t.FlowEntryToken,t.FlowMappingEndToken)?(this.state="parse_flow_mapping_key",this.process_empty_scalar(h.end_mark)):(this.states.push("parse_flow_mapping_key"),this.parse_flow_node())):(this.state="parse_flow_mapping_key",h=this.peek_token(),this.process_empty_scalar(h.start_mark))}parse_flow_mapping_empty_value(){return this.state="parse_flow_mapping_key",this.process_empty_scalar(this.peek_token().start_mark)}process_empty_scalar(h){return new e.ScalarEvent(null,null,[!0,!1],"",h,h)}}return n={"!":"!","!!":"tag:yaml.org,2002:"},s=o.prototype.initialise,o}).call(this)}).call(ae)});var gs=$(_s=>{w();(function(){var r,e,t,i,n,s,o;o=Ee(),i=rn(),s=nn(),t=sn(),r=Kr(),n=Wt(),e=Xr(),this.make_loader=function(c=i.Reader,h=s.Scanner,f=t.Parser,d=r.Composer,g=n.Resolver,u=e.Constructor){var _,a;return a=[c,h,f,d,g,u],_=(function(){var l;class p{constructor(v){var k,y,b;for(a[0].prototype.initialise.call(this,v),b=a.slice(1),k=0,y=b.length;k{w();(function(){var r,e,t,i,n,s,o,c,h,f,d,g,u;r=this.composer=Kr(),e=this.constructor=Xr(),t=this.dumper=ds(),i=this.errors=_e(),n=this.events=it(),s=this.loader=gs(),o=this.nodes=Ve(),c=this.parser=sn(),h=this.reader=rn(),f=this.resolver=Wt(),d=this.scanner=nn(),g=this.tokens=Ht(),u=Ee(),this.scan=function(_,a=s.Loader){var l,p;for(l=new a(_),p=[];l.check_token();)p.push(l.get_token());return p},this.parse=function(_,a=s.Loader){var l,p;for(l=new a(_),p=[];l.check_event();)p.push(l.get_event());return p},this.compose=function(_,a=s.Loader){var l;return l=new a(_),l.get_single_node()},this.compose_all=function(_,a=s.Loader){var l,p;for(l=new a(_),p=[];l.check_node();)p.push(l.get_node());return p},this.load=function(_,a=s.Loader){var l;return l=new a(_),l.get_single_data()},this.load_all=function(_,a=s.Loader){var l,p;for(l=new a(_),p=[];l.check_data();)p.push(l.get_data());return p},this.emit=function(_,a,l=t.Dumper,p={}){var m,v,k,y,b;v=a||new u.StringStream,m=new l(v,p);try{for(y=0,b=_.length;y{"use strict";w()});var ia,sa=O(()=>{w();ia=`About Equicord
Equicord

An enhanced version of Vencord. A fork that offers a wider selection of plugins from the community.

Links

License

Equicord is licensed under the GNU General Public License v3.0.
This is free software, and you are welcome to redistribute it under certain conditions; see the license for details.

Acknowledgements

These awesome libraries/projects empower Equicord

  • Vencord - Vencord is a modification for Discord that adds plugins and custom styles, blocks Discord's tracking and what we are a fork of!
  • Suncord - Suncord was a newer fork of Vencord which eventually merged into Equicord and brought many new users!
`});function cc(){return X.BrowserWindow.getFocusedWindow()??X.BrowserWindow.getAllWindows()[0]}function aa(r){cc()?.webContents.send(r)}function uc(r){let e=r.findIndex(t=>{let i=t.label?.toLowerCase()??"";return i.includes("open")||i.includes("show")});return e!==-1?e+1:0}function hc(r){if(!r.length)return!1;let e=r.some(n=>{let s=n.label?.toLowerCase()??"";return s.includes("open")||s.includes("show")}),t=r.some(n=>n.label?.toLowerCase().includes("quit")||n.role==="quit"),i=!r.some(n=>n.label==="&File"||n.label==="File"||n.label==="&Edit"||n.label==="Edit");return e&&t&&i}function pc(){if(Le){Le.focus();return}let r=750,e=r*(4/3);Le=new X.BrowserWindow({center:!0,autoHideMenuBar:!0,height:r,width:e}),Le.webContents.setWindowOpenHandler(({url:n})=>(X.shell.openExternal(n),{action:"deny"})),Le.webContents.on("will-navigate",(n,s)=>{n.preventDefault(),X.shell.openExternal(s)});let t=ia.replaceAll("{{VERSION}}","1.15.3.0").replaceAll("{{GIT_HASH}}",$n),i=Buffer.from(t).toString("base64");Le.loadURL(`data:text/html;base64,${i}`),Le.on("closed",()=>{Le=null})}function fc(){return[{label:"Equicord",submenu:[{label:"About Equicord",click:()=>pc()},{label:oa?"Update Equicord":"Check for Updates",click:()=>aa("VencordTrayCheckUpdates")},{label:"Repair Equicord",click:()=>aa("VencordTrayRepair")},{type:"separator"},{label:"Open Settings Folder",click:()=>X.shell.openPath(pe)},{label:"Open Themes Folder",click:()=>X.shell.openPath(Y)}]},{type:"separator"}]}function la(){let r=X.Menu.buildFromTemplate;X.Menu.buildFromTemplate=function(e){let t=e.some(i=>i.label==="Equicord");if(hc(e)&&!t){let i=uc(e),n=fc();e.splice(i,0,...n)}return r.call(this,e)}}var X,oa,Le,ca=O(()=>{"use strict";w();Ae();Ct();X=require("electron");sa();ge();oa=!1;X.ipcMain.on("VencordSetTrayUpdateState",(r,e)=>{oa=e});Le=null});var M,Q,dc,Sn,mc,_c,St,ua,gc,nr,Tn=O(()=>{"use strict";w();M=require("original-fs"),Q=require("path"),dc=JSON.stringify({name:"discord",main:"index.js"}),Sn="app-",mc=r=>`require(${JSON.stringify(r)});`,_c=r=>(0,M.existsSync)((0,Q.join)(r,"_app.asar")),St=(r,e)=>{let t=(0,Q.join)(r,"app.asar"),i=(0,Q.join)(r,"_app.asar");if(_c(r)||!(0,M.existsSync)(t)||(0,M.existsSync)(i))return!1;try{if((0,M.lstatSync)(t).isDirectory())return!1}catch{return!1}let n=[];try{return(0,M.renameSync)(t,i),n.push(()=>(0,M.renameSync)(i,t)),(0,M.mkdirSync)(t),n.push(()=>{let s=(0,Q.join)(t,"index.js"),o=(0,Q.join)(t,"package.json");(0,M.existsSync)(s)&&(0,M.unlinkSync)(s),(0,M.existsSync)(o)&&(0,M.unlinkSync)(o),(0,M.rmdirSync)(t)}),(0,M.writeFileSync)((0,Q.join)(t,"package.json"),dc),(0,M.writeFileSync)((0,Q.join)(t,"index.js"),mc(e)),!0}catch(s){for(let o=n.length-1;o>=0;o--)try{n[o]()}catch(c){console.error("[Equicord] Rollback step failed",c)}throw s}},ua=r=>parseInt(r,10)||0,gc=(r,e)=>{let t=r.slice(Sn.length).split(".").map(ua),i=e.slice(Sn.length).split(".").map(ua),n=Math.max(t.length,i.length);for(let s=0;sc)return!0;if(o{if(process.platform!=="win32")return null;let e=(0,Q.dirname)(r),t=(0,Q.basename)(r),i=t;try{for(let n of(0,M.readdirSync)(e)){if(!n.startsWith(Sn))continue;let s=!1;try{s=(0,M.statSync)((0,Q.join)(e,n)).isDirectory()}catch(o){console.error("[Equicord] Skipping unreadable sibling",n,o);continue}s&&gc(n,i)&&(i=n)}}catch(n){return console.error("[Equicord] Failed to scan for sibling versions",n),null}return i===t?null:(0,Q.join)(e,i,"resources")}});var ma={};L(ma,{installHostUpdateHook:()=>bc});var ir,B,Oe,ha,pa,fa,vc,wc,yc,In,da,kc,bc,_a=O(()=>{"use strict";w();ir=De(require("module")),B=require("path");Tn();Oe=(...r)=>console.error("[Equicord:HostUpdate]",...r),ha=new WeakSet,pa=!1,fa=()=>(0,B.join)(__dirname,"patcher.js"),vc=r=>{if(process.platform!=="darwin")return(0,B.join)(r,"resources");let e=process.execPath.split(B.sep);for(let t=e.length-1;t>=0;t--)if(e[t].endsWith(".app"))return(0,B.join)(r,e[t],"Contents","Resources");return(0,B.join)(r,"Contents","Resources")},wc=()=>process.platform==="darwin"?(0,B.resolve)(process.execPath,"..","..","..",".."):(0,B.dirname)(process.execPath),yc=r=>{if(Array.isArray(r.committedHostVersion))return r.committedHostVersion;try{let e=r.queryCurrentVersionsSync?.();if(Array.isArray(e?.current_host))return e.current_host}catch(e){Oe("queryCurrentVersionsSync failed",e)}},In=(r,e)=>{try{let t=yc(r),{rootPath:i}=r;if(!t||!i){if(process.platform!=="win32")return;let s=nr((0,B.dirname)(process.execPath));s&&St(s,fa());return}let n=(0,B.join)(i,`app-${t.join(".")}`);if((0,B.resolve)(n)===(0,B.resolve)(wc()))return;St(vc(n),fa())}catch(t){Oe(`[${e}] retain failed:`,t)}},da=r=>{if(!r||ha.has(r))return;try{ha.add(r)}catch(i){Oe("Failed to track updater instance",i);return}r.on?.("host-updated",()=>In(r,"host-updated"));let e=r.startCurrentVersionSync;if(typeof e=="function"){let i=e.bind(r);r.startCurrentVersionSync=n=>{i(n);try{In(r,"startCurrentVersionSync")}catch(s){Oe(s)}}}let t=r.startCurrentVersion;if(typeof t=="function"){let i=t.bind(r);r.startCurrentVersion=async(n,s)=>{await i(n,s);try{In(r,"startCurrentVersion")}catch(o){Oe(o)}}}},kc=r=>{if(!r?.startup||r.__equicordStartupWrapped)return;r.__equicordStartupWrapped=!0;let e=r.startup;r.startup=function(t,...i){try{let n=t?.updater,s=n?.getUpdater?.();if(s)da(s);else if(typeof n?.tryInitUpdater=="function"&&!n.__equicordTryInitWrapped){n.__equicordTryInitWrapped=!0;let o=n.tryInitUpdater.bind(n);n.tryInitUpdater=(c,h,f)=>{let d=o(c,h,f);try{da(n.getUpdater?.())}catch(g){Oe(g)}return d}}}catch(n){Oe("wrap updater failed:",n)}return e.call(this,t,...i)}},bc=()=>{if(pa)return;pa=!0;let r=ir.default.prototype.require;ir.default.prototype.require=function(e){let t=r.call(this,e);if(!e.includes("discord_desktop_core"))return t;if((0,B.basename)(e.replace(/\\/g,"/"))==="discord_desktop_core"){try{kc(t?.default??t)}catch(i){Oe(i)}ir.default.prototype.require=r}return t}}});var xc={};var ga,sr,va=O(()=>{"use strict";w();ga=require("electron"),sr=require("path");Tn();ga.app.on("before-quit",()=>{try{let r=nr((0,sr.dirname)(process.execPath));r&&St(r,(0,sr.join)(__dirname,"patcher.js"))}catch(r){console.error("[Equicord] Failed to repatch latest host update",r)}})});var Tc={};var H,Fe,Ec,Pn,Sc,wa=O(()=>{"use strict";w();na();H=De(require("electron")),Fe=require("path");fe();ca();ge();console.log("[Equicord] Starting up...");Ec=require.main.filename,Pn=(0,Fe.join)((0,Fe.dirname)(Ec),"..","_app.asar"),Sc=require((0,Fe.join)(Pn,"package.json"));require.main.filename=(0,Fe.join)(Pn,Sc.main);H.app.setAppPath(Pn);if(Ut)console.log("[Equicord] Running in vanilla mode. Not loading Equicord");else{let r=j.store;la();try{(_a(),Pt(ma)).installHostUpdateHook()}catch(n){console.error("[Equicord] Failed to install host update hook",n)}if((process.platform==="win32"||process.platform==="linux")&&(va(),Pt(xc)),process.platform==="win32"&&r.winCtrlQ){let n=H.Menu.buildFromTemplate;H.Menu.buildFromTemplate=function(s){if(s[0]?.label==="&File"){let{submenu:o}=s[0];Array.isArray(o)&&o.push({label:"Quit (Hidden)",visible:!1,acceleratorWorksWhenHidden:!0,accelerator:"Control+Q",click:()=>H.app.quit()})}return n.call(this,s)}}class e extends H.default.BrowserWindow{constructor(s){if(!s?.webPreferences?.preload||!s.title){super(s);return}let{frameless:o,mainWindowFrameless:c,winNativeTitleBar:h,disableMinSize:f,transparent:d,macosVibrancyStyle:g,windowsMaterial:u}=r,_=s.webPreferences.preload,a=s.title==="Discord";s.webPreferences.preload=(0,Fe.join)(__dirname,"preload.js"),s.webPreferences.sandbox=!1,s.webPreferences.backgroundThrottling=!1,c&&a||o?s.frame=!1:process.platform==="win32"&&h&&delete s.frame,f&&(s.minWidth=0,s.minHeight=0),d&&(s.transparent=!0,s.backgroundColor="#00000000"),process.platform==="darwin"&&g&&(s.vibrancy=g,s.backgroundColor="#00000000"),process.platform==="win32"&&u&&u!=="none"&&(s.backgroundMaterial=u,s.backgroundColor="#00000000"),process.env.DISCORD_PRELOAD=_,super(s),f&&(this.setMinimumSize=(l,p)=>{})}}Object.assign(e,H.default.BrowserWindow),Object.defineProperty(e,"name",{value:"BrowserWindow",configurable:!0});let t=require.resolve("electron");delete require.cache[t].exports,require.cache[t].exports={...H.default,BrowserWindow:e},ra(global,"appSettings",n=>{n.set("DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING",!0)}),process.env.DATA_DIR=(0,Fe.join)(H.app.getPath("userData"),"..","Equicord");let i=H.app.commandLine.appendSwitch;H.app.commandLine.appendSwitch=function(...n){if(n[0]==="disable-features"){let s=new Set((n[1]??"").split(","));s.add("UseEcoQoSForBackgroundProcess"),n[1]+=[...s].join(",")}return i.apply(this,n)},H.app.commandLine.appendSwitch("disable-renderer-backgrounding"),H.app.commandLine.appendSwitch("disable-background-timer-throttling"),H.app.commandLine.appendSwitch("disable-backgrounding-occluded-windows")}console.log("[Equicord] Loading original Discord app.asar");require(require.main.filename)});w();w();w();Ae();var Qc=require("electron");Dt();lr();Vn();w();Ae();var fn=require("electron");w();var pr={};L(pr,{fetchTrackData:()=>Ca});w();Ct();var Gn=require("child_process"),Wn=require("util"),Hn=(0,Wn.promisify)(Gn.execFile);async function hr(r){let{stdout:e}=await Hn("osascript",r.map(t=>["-e",t]).flat());return e}var he=null;async function Ra({id:r,name:e,artist:t,album:i}){if(r===he?.id){if("data"in he)return he.data;if("failures"in he&&he.failures>=5)return null}try{let n=new URL("https://itunes.apple.com/search");n.searchParams.set("term",`${e} ${t} ${i}`),n.searchParams.set("media","music"),n.searchParams.set("entity","song");let s=()=>fetch(n,{headers:{"user-agent":Rt}}).then(f=>f.json()),o=await s();o.resultCount===0&&(n.searchParams.set("term",`${e} ${t}`),o=await s());let c=o.results.find(f=>f.collectionName===i)||o.results[0],h=await fetch(c.artistViewUrl).then(f=>f.text()).then(f=>{let d=f.match(//);return d?d[1].replace(/[0-9]+x.+/,"220x220bb-60.png"):void 0}).catch(()=>{});return he={id:r,data:{appleMusicLink:c.trackViewUrl,appleMusicArtistLink:c.artistViewUrl,songLink:`https://song.link/i/${new URL(c.trackViewUrl).searchParams.get("i")}`,albumArtwork:c.artworkUrl100.replace("100x100","512x512"),artistArtwork:h}},he.data}catch(n){return console.error("[AppleMusicRichPresence] Failed to fetch remote data:",n),he={id:r,failures:(r===he?.id&&"failures"in he?he.failures:0)+1},null}}async function Ca(){try{await Hn("pgrep",["^Music$"])}catch{return null}if(await hr(['tell application "Music"',"get player state","end tell"]).then(d=>d.trim())!=="playing")return null;let e=await hr(['tell application "Music"',"get player position","end tell"]).then(d=>Number.parseFloat(d.trim())),t=await hr(['set output to ""','tell application "Music"',"set t_id to database id of current track","set t_name to name of current track","set t_album to album of current track","set t_artist to artist of current track","set t_duration to duration of current track",'set output to "" & t_id & "\\n" & t_name & "\\n" & t_album & "\\n" & t_artist & "\\n" & t_duration',"end tell","return output"]),[i,n,s,o,c]=t.split(` `).filter(d=>!!d),h=Number.parseFloat(c),f=await Ra({id:i,name:n,artist:o,album:s});return{name:n,album:s,artist:o,playerPosition:e,duration:h,...f}}var fr={};L(fr,{initDevtoolsOpenEagerLoad:()=>Ma});w();function Ma(r){let e=()=>r.sender.executeJavaScript("Vencord.Plugins.plugins.ConsoleShortcuts.eagerLoad(true)");r.sender.isDevToolsOpened()?e():r.sender.once("devtools-opened",()=>e())}var ni={};w();fe();var Lt=require("electron"),qt=[];function ri(){let r=[];for(let e=qt.length-1;e>=0;e--){let{processId:t,routingId:i}=qt[e],n=Lt.webFrameMain.fromId(t,i);if(!n){qt.splice(e,1);continue}r.push(n)}return r}Lt.app.on("browser-window-created",(r,e)=>{e.webContents.on("frame-created",(t,{frame:i})=>{i?.once("dom-ready",()=>{if(i.url.startsWith("https://open.spotify.com/embed/")){ri();let{routingId:n,processId:s}=i;qt.push({routingId:n,processId:s});let o=j.store.plugins?.FixSpotifyEmbeds;if(!o?.enabled)return;i.executeJavaScript(` globalThis._vcVolume = ${o.volume/100}; const original = Audio.prototype.play; Audio.prototype.play = function() { this.volume = _vcVolume; return original.apply(this, arguments); } `)}})})});j.addChangeListener("plugins.FixSpotifyEmbeds.volume",r=>{try{ri().forEach(e=>e.executeJavaScript(`globalThis._vcVolume = ${r/100}`))}catch(e){console.error("FixSpotifyEmbeds: Failed to update volume",e)}});var si={};w();fe();var ii=require("electron");ii.app.on("browser-window-created",(r,e)=>{e.webContents.on("frame-created",(t,{frame:i})=>{i?.once("dom-ready",()=>{if(i.url.startsWith("https://www.youtube.com/")){if(!j.store.plugins?.FixYoutubeEmbeds?.enabled)return;i.executeJavaScript(` new MutationObserver(() => { if( document.querySelector('div.ytp-error-content-wrap-subreason a[href*="www.youtube.com/watch?v="]') ) location.reload() }).observe(document.body, { childList: true, subtree:true }); `)}})})});var vr={};L(vr,{resolveRedirect:()=>qa});w();var ai=require("https"),Na=/^https:\/\/(spotify\.link|s\.team)\/.+$/;function oi(r){return new Promise((e,t)=>{let i=(0,ai.request)(new URL(r),{method:"HEAD"},n=>{e(n.headers.location?oi(n.headers.location):r)});i.on("error",t),i.end()})}async function qa(r,e){return Na.test(e)?oi(e):e}var wr={};L(wr,{makeDeeplTranslateRequest:()=>La,makeKagiTranslateRequest:()=>Oa});w();async function La(r,e,t,i){let n=e?"https://api.deepl.com/v2/translate":"https://api-free.deepl.com/v2/translate";try{let s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`DeepL-Auth-Key ${t}`},body:i}),o=await s.text();return{status:s.status,data:o}}catch(s){return{status:-1,data:String(s)}}}async function Oa(r,e,t,i,n){let s="https://translate.kagi.com/api/translate";try{let o=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json",Cookie:`kagi_session=${e}`},body:JSON.stringify({text:t,from:i,to:n,model:"standard"})}),c=await o.json();return{status:o.status,data:c}}catch(o){return{status:-1,data:String(o)}}}var yr={};L(yr,{readRecording:()=>Fa});w();var li=require("electron"),Ot=require("fs/promises"),dt=require("path");async function Fa(r,e){e=(0,dt.normalize)(e);let t=(0,dt.basename)(e),i=(0,dt.normalize)(li.app.getPath("userData")+"/");if(!/^\d*recording\.ogg$/.test(t)||!e.startsWith(i))return null;try{let n=await(0,Ot.readFile)(e);return(0,Ot.rm)(e).catch(()=>{}),new Uint8Array(n.buffer)}catch{return null}}var kr={};L(kr,{closeSocket:()=>ja,sendToOverlay:()=>$a});w();var ci=require("dgram"),Ft=null;function $a(r,e){e.messageType=e.type;let t=JSON.stringify(e);Ft??=(0,ci.createSocket)("udp4"),Ft.send(t,42069,"127.0.0.1")}function ja(){Ft?.close(),Ft=null}var hi={};w();fe();var ui=require("electron");w();var br=`"use strict";(()=>{if(window.adguardInjected)return;window.adguardInjected=!0;const c=["#__ffYoutube1","#__ffYoutube2","#__ffYoutube3","#__ffYoutube4","#feed-pyv-container","#feedmodule-PRO","#homepage-chrome-side-promo","#merch-shelf","#offer-module",'#pla-shelf > ytd-pla-shelf-renderer[class="style-scope ytd-watch"]',"#pla-shelf","#premium-yva","#promo-info","#promo-list","#promotion-shelf","#related > ytd-watch-next-secondary-results-renderer > #items > ytd-compact-promoted-video-renderer.ytd-watch-next-secondary-results-renderer","#search-pva","#shelf-pyv-container","#video-masthead","#watch-branded-actions","#watch-buy-urls","#watch-channel-brand-div","#watch7-branded-banner","#YtKevlarVisibilityIdentifier","#YtSparklesVisibilityIdentifier",".carousel-offer-url-container",".companion-ad-container",".GoogleActiveViewElement",'.list-view[style="margin: 7px 0pt;"]',".promoted-sparkles-text-search-root-container",".promoted-videos",".searchView.list-view",".sparkles-light-cta",".watch-extra-info-column",".watch-extra-info-right",".ytd-carousel-ad-renderer",".ytd-compact-promoted-video-renderer",".ytd-companion-slot-renderer",".ytd-merch-shelf-renderer",".ytd-player-legacy-desktop-watch-ads-renderer",".ytd-promoted-sparkles-text-search-renderer",".ytd-promoted-video-renderer",".ytd-search-pyv-renderer",".ytd-video-masthead-ad-v3-renderer",".ytp-ad-action-interstitial-background-container",".ytp-ad-action-interstitial-slot",".ytp-ad-image-overlay",".ytp-ad-overlay-container",".ytp-ad-progress",".ytp-ad-progress-list",'[class*="ytd-display-ad-"]','[layout*="display-ad-"]','a[href^="http://www.youtube.com/cthru?"]','a[href^="https://www.youtube.com/cthru?"]',"ytd-action-companion-ad-renderer","ytd-banner-promo-renderer","ytd-compact-promoted-video-renderer","ytd-companion-slot-renderer","ytd-display-ad-renderer","ytd-promoted-sparkles-text-search-renderer","ytd-promoted-sparkles-web-renderer","ytd-search-pyv-renderer","ytd-single-option-survey-renderer","ytd-video-masthead-ad-advertiser-info-renderer","ytd-video-masthead-ad-v3-renderer","YTM-PROMOTED-VIDEO-RENDERER"],l=()=>{const e=c;if(!e)return;const t=e.join(", ")+" { display: none!important; }",r=document.createElement("style");r.textContent=t,document.head.appendChild(r)},p=e=>{new MutationObserver(r=>{e(r)}).observe(document.documentElement,{childList:!0,subtree:!0})},a=()=>{const e=document.querySelectorAll("#contents > ytd-rich-item-renderer ytd-display-ad-renderer");e.length!==0&&e.forEach(t=>{if(t.parentNode&&t.parentNode.parentNode){const r=t.parentNode.parentNode;r.localName==="ytd-rich-item-renderer"&&(r.style.display="none")}})},s=()=>{if(document.querySelector(".ad-showing")){const e=document.querySelector("video");e&&e.duration&&(e.currentTime=e.duration,setTimeout(()=>{const t=document.querySelector("button.ytp-ad-skip-button");t&&t.click()},100))}},d=(e,t,r)=>{if(!e)return!1;let n=!1;for(const o in e)e.hasOwnProperty(o)&&o===t?(e[o]=r,n=!0):e.hasOwnProperty(o)&&typeof e[o]=="object"&&d(e[o],t,r)&&(n=!0);return n},i=(e,t)=>{const r=JSON.parse;JSON.parse=(...n)=>{const o=r.apply(this,n);return d(o,e,t),o},Response.prototype.json=new Proxy(Response.prototype.json,{async apply(...n){const o=await Reflect.apply(...n);return d(o,e,t),o}})};i("adPlacements",[]),i("playerAds",[]),l(),a(),s(),p(()=>{a(),s()})})(); `;ui.app.on("browser-window-created",(r,e)=>{e.webContents.on("frame-created",(t,{frame:i})=>{i?.once("dom-ready",()=>{j.store.plugins?.YoutubeAdblock?.enabled&&(i.url.includes("youtube.com/embed/")?i.executeJavaScript(br):i.parent?.url.includes("youtube.com/embed/")&&i.parent.executeJavaScript(br))})})});var Sr={};L(Sr,{chooseVideoFile:()=>Ha,createTempVideoFile:()=>Za,createTempVideoFileFromBytes:()=>Ya,deleteTempVideoFile:()=>Xa,getTempVideoFilePath:()=>Ja,parseClipFileMetadata:()=>Qa,readVideoFile:()=>Ka});w();ge();w();var Xe=require("path");function G(r,e){let t=(0,Xe.normalize)(r+"/"),i=(0,Xe.join)(r,e),n=(0,Xe.normalize)(i);return n===(0,Xe.normalize)(r)||n.startsWith(t)?n:null}var Qe=require("crypto"),fi=require("electron"),ie=require("fs/promises"),z=require("path"),$t=new Map,et=new Map,xr=(0,z.join)(Ce,"clipUpload"),di=new Set([".mp4",".m4v"]),za=500*1024*1024,Ba={".mp4":"video/mp4",".m4v":"video/mp4"},Er=Buffer.from([117,117,105,100,161,200,82,153,51,70,77,184,136,240,131,245,122,117,165,239]),pi=Er.length;function Va(r){return Ba[(0,z.extname)(r).toLowerCase()]??"application/octet-stream"}function Ga(r){let e=r.indexOf(Er);return e===-1?r:r.subarray(0,e)}async function Wa(r){try{let e=await(0,ie.readFile)(r);if(e.length<=pi)return null;let t=e.indexOf(Er);if(t===-1)return null;let i=e.subarray(t+pi).toString("utf-8"),n=JSON.parse(i);return n&&typeof n=="object"?Array.isArray(n)?n:[n]:null}catch{return null}}async function Ha(r){try{let{filePaths:e,canceled:t}=await fi.dialog.showOpenDialog({title:"Select clip file",filters:[{name:"MP4 Video",extensions:["mp4","m4v"]}],properties:["openFile"]});if(t||e.length===0)return null;let i=(0,z.resolve)(e[0]);if(!di.has((0,z.extname)(i).toLowerCase()))return null;let n=(0,Qe.randomUUID)();return $t.set(n,i),{token:n,name:(0,z.basename)(i),type:Va(i)}}catch{return null}}async function Za(r,e){let t=$t.get(e);if(!t)return null;$t.delete(e);try{let i=(0,z.join)(xr,(0,Qe.randomUUID)()),n=(0,z.join)(i,(0,z.basename)(t));if(!G(i,(0,z.basename)(t)))return null;await(0,ie.mkdir)(i,{recursive:!0}),await(0,ie.writeFile)(n,Ga(await(0,ie.readFile)(t)));let s=(0,Qe.randomUUID)();return et.set(s,{tmpDir:i,tmpPath:n}),s}catch{return null}}async function Ya(r,e,t){if(typeof e!="string"||!(t instanceof Uint8Array)||t.byteLength===0||t.byteLength>za)return null;let i=(0,z.basename)(e);if(i!==e||!di.has((0,z.extname)(i).toLowerCase()))return null;try{let n=(0,z.join)(xr,(0,Qe.randomUUID)()),s=(0,z.join)(n,i);if(!G(n,i))return null;await(0,ie.mkdir)(n,{recursive:!0}),await(0,ie.writeFile)(s,t);let o=(0,Qe.randomUUID)();return et.set(o,{tmpDir:n,tmpPath:s}),o}catch{return null}}function Ja(r,e){return et.get(e)?.tmpPath??null}async function Ka(r,e){let t=et.get(e);if(!t)return null;try{let i=await(0,ie.readFile)(t.tmpPath);return new Uint8Array(i.buffer,i.byteOffset,i.byteLength)}catch{return null}}async function Xa(r,e){let t=et.get(e);if(t&&(et.delete(e),!!G(xr,t.tmpDir)))try{await(0,ie.rm)(t.tmpDir,{force:!0,recursive:!0})}catch{}}async function Qa(r,e){let t=$t.get(e);return t?Wa(t):null}var yi={};w();w();fe();var Tr=require("electron"),de=["connect-src"],se=[...de,"img-src"],gi=["style-src","font-src"],mi=[...se,"media-src"],F=[...se,...gi],_i=[...F,"script-src","worker-src"],vi=["style-src","connect-src","img-src","frame-src","font-src","media-src","worker-src"],mt={"http://localhost:*":F,"http://127.0.0.1:*":F,"localhost:*":F,"127.0.0.1:*":F,"*.github.io":F,"github.com":F,"raw.githubusercontent.com":F,"*.gitlab.io":F,"gitlab.com":F,"*.codeberg.page":F,"codeberg.org":F,"*.githack.com":F,"jsdelivr.net":F,"fonts.googleapis.com":gi,"i.imgur.com":se,"i.ibb.co":se,"i.pinimg.com":se,"files.catbox.moe":F,"cdn.discordapp.com":F,"media.discordapp.net":se,"cdnjs.cloudflare.com":_i,"cdn.jsdelivr.net":_i,"api.github.com":de,"ws.audioscrobbler.com":de,"musicbrainz.org":de,"*.listenbrainz.org":de,"coverartarchive.org":de,"archive.org":de,"*.archive.org":de,"translate-pa.googleapis.com":de,"*.vencord.dev":se,"manti.vendicated.dev":se,"decor.fieryflames.dev":de,"ugc.decor.fieryflames.dev":se,"sponsor.ajay.app":de,"dearrow-thumb.ajay.app":se,"usrbg.is-hardly.online":se,"icons.duckduckgo.com":se,"*.tenor.com":mi,"*.tenor.co":mi},Ir=(r,e)=>Object.keys(r).find(t=>t.toLowerCase()===e),eo=r=>{let e={};return r.split(";").forEach(t=>{let[i,...n]=t.trim().split(/\s+/g);i&&!Object.prototype.hasOwnProperty.call(e,i)&&(e[i]=n)}),e},to=r=>Object.entries(r).filter(([,e])=>e?.length).map(e=>e.flat().join(" ")).join("; "),ro=r=>{let e=Ir(r,"content-security-policy-report-only");e&&delete r[e];let t=Ir(r,"content-security-policy");if(t){let i=eo(r[t][0]),n=(s,...o)=>{i[s]??=[...i["default-src"]??[]],i[s].push(...o)};n("style-src","'unsafe-inline'"),n("script-src","'unsafe-inline'","'unsafe-eval'");for(let s of["style-src","connect-src","img-src","font-src","media-src","worker-src"])n(s,"blob:","data:","vencord:","vesktop:","equicord:","equibop:");for(let[s,o]of Object.entries(V.store.customCspRules))for(let c of o)n(c,s);for(let[s,o]of Object.entries(mt))for(let c of o)n(c,s);r[t]=[to(i)]}};function wi(){Tr.session.defaultSession.webRequest.onHeadersReceived(({responseHeaders:r,resourceType:e},t)=>{if(r&&(e==="mainFrame"&&ro(r),e==="stylesheet")){let i=Ir(r,"content-type");i&&(r[i]=["text/css"])}t({cancel:!1,responseHeaders:r})}),Tr.session.defaultSession.webRequest.onHeadersReceived=()=>{}}mt["*"]=vi;var Pr={};L(Pr,{fetchAttachment:()=>io});w();var no=new Set(["cdn.discordapp.com","images-ext-1.discordapp.net","images-ext-2.discordapp.net","media.discordapp.net"]);async function io(r,e){let{content_type:t,filename:i}=e,n=URL.parse(e.url);if(!n||!no.has(n.hostname))throw new Error("Invalid URL");let s=await fetch(n,{headers:{Accept:"*/*"}});if(!s.ok)throw new Error("Server error");let o=await s.blob(),c=o.type||t||"application/octet-stream",h=await o.arrayBuffer();return{type:c,data:h,filename:i}}var Dr={};L(Dr,{createWebdavShare:()=>yo,fetchFile:()=>ko,uploadTo0x0:()=>oo,uploadToBuzzheavier:()=>fo,uploadToCatbox:()=>co,uploadToEzHost:()=>ao,uploadToFilebin:()=>_o,uploadToGofile:()=>ho,uploadToLitterbox:()=>uo,uploadToNest:()=>so,uploadToPixelDrain:()=>vo,uploadToPixelVault:()=>go,uploadToS3:()=>lo,uploadToTempSh:()=>mo,uploadToTmpfiles:()=>po,uploadToWebdav:()=>wo});w();async function so(r,e,t,i){try{let n=new FormData;n.append("file",new Blob([e]),t);let s=await fetch("https://nest.rip/api/files/upload",{method:"POST",headers:{Authorization:i},body:n});if(!s.ok){let c=await s.text();return{success:!1,error:`Upload failed: ${s.status} ${c}`}}let o=await s.json();return o.fileURL?{success:!0,url:o.fileURL}:{success:!1,error:"No URL returned from upload"}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function ao(r,e,t,i){try{let n=new FormData;n.append("file",new Blob([e]),t);let s=await fetch("https://api.e-z.host/files",{method:"POST",headers:{key:i},body:n});if(!s.ok){let c=await s.text();return{success:!1,error:`Upload failed: ${s.status} ${c}`}}let o=await s.json();return!o||!o.success?{success:!1,error:o?.error||"Upload failed"}:o.imageUrl||o.rawUrl?{success:!0,url:o.imageUrl||o.rawUrl}:{success:!1,error:"No URL returned from upload"}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function oo(r,e,t){try{let i=new FormData;i.append("file",new Blob([e]),t);let n=await fetch("https://0x0.st",{method:"POST",body:i});if(!n.ok){let o=await n.text();return{success:!1,error:`Upload failed: ${n.status} ${o}`}}let s=(await n.text()).trim();return s?{success:!0,url:s}:{success:!1,error:"No URL returned from upload"}}catch(i){return{success:!1,error:i instanceof Error?i.message:"Unknown error"}}}async function lo(r,e,t,i){try{let n=await fetch(t,{method:"PUT",headers:i,body:new Blob([e])});if(!n.ok){let s=await n.text();return{success:!1,error:`Upload failed: ${n.status} ${s}`}}return{success:!0,url:t}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function co(r,e,t,i){try{let n=new FormData;n.append("reqtype","fileupload"),i&&n.append("userhash",i),n.append("fileToUpload",new Blob([e]),t);let s=await fetch("https://catbox.moe/user/api.php",{method:"POST",body:n});if(!s.ok){let c=await s.text();return{success:!1,error:`Upload failed: ${s.status} ${c}`}}let o=(await s.text()).trim();return o?{success:!0,url:o}:{success:!1,error:"No URL returned from upload"}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function uo(r,e,t,i){try{let n=new FormData;n.append("reqtype","fileupload"),n.append("time",i),n.append("fileToUpload",new Blob([e]),t);let s=await fetch("https://litterbox.catbox.moe/resources/internals/api.php",{method:"POST",body:n});if(!s.ok){let c=await s.text();return{success:!1,error:`Upload failed: ${s.status} ${c}`}}let o=(await s.text()).trim();return o?{success:!0,url:o}:{success:!1,error:"No URL returned from upload"}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function ho(r,e,t,i){try{let n=new FormData;i?.trim()&&n.append("token",i.trim()),n.append("file",new Blob([e]),t);let s=await fetch("https://upload.gofile.io/uploadfile",{method:"POST",body:n});if(!s.ok){let h=await s.text();return{success:!1,error:`Upload failed: ${s.status} ${h}`}}let o=await s.json();if(o.status!=="ok")return{success:!1,error:o.error||"Upload failed"};let c=o.data?.downloadPage||(o.data?.code?`https://gofile.io/d/${o.data.code}`:"");return c?{success:!0,url:c}:{success:!1,error:"No URL returned from upload"}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function po(r,e,t){try{let i=new FormData;i.append("file",new Blob([e]),t);let n=await fetch("https://tmpfiles.org/api/v1/upload",{method:"POST",body:i});if(!n.ok){let h=await n.text();return{success:!1,error:`Upload failed: ${n.status} ${h}`}}let s=await n.json(),o=s.data?.url||"";return!o||s.status!=="success"?{success:!1,error:"No URL returned from upload"}:{success:!0,url:o.includes("tmpfiles.org/")&&!o.includes("/dl/")?o.replace(/tmpfiles\.org\/(\d+)/,"tmpfiles.org/dl/$1"):o}}catch(i){return{success:!1,error:i instanceof Error?i.message:"Unknown error"}}}async function fo(r,e,t){try{let i=await fetch(`https://w.buzzheavier.com/${encodeURIComponent(t)}`,{method:"PUT",body:new Blob([e])}),n=await i.text();if(!i.ok)return{success:!1,error:`Upload failed: ${i.status} ${n}`};try{let o=JSON.parse(n);if(o.code===201&&o.data?.id)return{success:!0,url:`https://buzzheavier.com/${o.data.id}`}}catch{}let s=n.trim();return s?{success:!0,url:s}:{success:!1,error:"No URL returned from upload"}}catch(i){return{success:!1,error:i instanceof Error?i.message:"Unknown error"}}}async function mo(r,e,t){try{let i=new FormData;i.append("file",new Blob([e]),t);let n=await fetch("https://temp.sh/upload",{method:"POST",body:i});if(!n.ok){let o=await n.text();return{success:!1,error:`Upload failed: ${n.status} ${o}`}}let s=(await n.text()).trim();return s?{success:!0,url:s}:{success:!1,error:"No URL returned from upload"}}catch(i){return{success:!1,error:i instanceof Error?i.message:"Unknown error"}}}async function _o(r,e,t){try{let i=`${Date.now().toString(16)}${Math.random().toString(16).slice(2,10)}`,n=`https://filebin.net/${i}/${encodeURIComponent(t)}`,s=new FormData;s.append("file",new Blob([e]),t);let o=await fetch(n,{method:"POST",body:s});if(!o.ok){let c=await o.text();return{success:!1,error:`Upload failed: ${o.status} ${c}`}}return{success:!0,url:`https://filebin.net/${i}/${encodeURIComponent(t)}`}}catch(i){return{success:!1,error:i instanceof Error?i.message:"Unknown error"}}}async function go(r,e,t,i){try{let n=new FormData;n.append("file",new Blob([e]),t);let s=await fetch("https://pixelvault.co/",{method:"POST",headers:{Authorization:i},body:n}),o=await s.text(),c=null;try{c=o?JSON.parse(o):null}catch{c=null}if(!s.ok)return{success:!1,error:`Upload failed: ${s.status} ${o}`};let h=c?.resource||c?.url||o.trim();return h?{success:!0,url:h}:{success:!1,error:"No URL returned from upload"}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function vo(r,e,t,i){try{let n={};i?.trim()&&(n.Authorization=`Basic ${Buffer.from(`:${i.trim()}`).toString("base64")}`);let s=await fetch(`https://pixeldrain.com/api/file/${encodeURIComponent(t)}`,{method:"PUT",headers:n,body:new Blob([e])}),o=await s.text(),c=null;try{c=o?JSON.parse(o):null}catch{c=null}return s.ok?c?.id?{success:!0,url:`https://pixeldrain.com/u/${c.id}`}:{success:!1,error:c?.message||"No URL returned from upload"}:{success:!1,error:c?.message||`Upload failed: ${s.status} ${o}`}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}function ki(r){try{return new URL(r).protocol==="https:"}catch{return!1}}async function wo(r,e,t,i){if(!ki(t))return{success:!1,error:"Invalid or non-HTTPS upload URL"};try{let n=await fetch(t,{method:"PUT",headers:i,body:new Blob([e])});if(!n.ok){let s=await n.text();return{success:!1,error:`Upload failed: ${n.status} ${s}`}}return{success:!0,url:t}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function yo(r,e,t,i){if(!ki(e))return{success:!1,error:"Invalid or non-HTTPS share endpoint URL"};try{let n=await fetch(e,{method:"POST",headers:t,body:i}),s=await n.text();if(!n.ok)return{success:!1,error:`Share creation failed: ${n.status} ${s.slice(0,200)}`};let o;try{o=JSON.parse(s)}catch{return{success:!1,error:`Invalid share response: ${s.slice(0,200)}`}}let c=o?.ocs?.data?.token;return c?{success:!0,url:c}:{success:!1,error:"No share token in server response"}}catch(n){return{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function ko(r,e){try{let t=await fetch(e);if(!t.ok)return{success:!1,error:`Fetch failed: ${t.status} ${t.statusText}`};let i=await t.arrayBuffer(),n=t.headers.get("content-type")||"";return{success:!0,data:i,contentType:n}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Unknown error"}}}var Ar={};L(Ar,{fetchMedia:()=>xo});w();var bo=new Set(["cdn.discordapp.com","images-ext-1.discordapp.net","images-ext-2.discordapp.net","media.discordapp.net","media.tenor.com","tenor.com","media.giphy.com","media0.giphy.com","media1.giphy.com","media2.giphy.com","media3.giphy.com","media4.giphy.com"]);async function xo(r,e){let t=URL.parse(e);if(!t||!bo.has(t.hostname))throw new Error("Invalid URL");let i=await fetch(t,{headers:{Accept:"*/*"}});if(!i.ok)throw new Error(`Server error ${i.status}`);let n=await i.blob();if(n.size===0)throw new Error(`Empty body (${i.status}) from ${e}`);return{data:await n.arrayBuffer(),type:n.type||"application/octet-stream"}}var qr={};L(qr,{chooseDir:()=>Oo,chooseFile:()=>$o,closeNativeLogImport:()=>Ao,deleteFileNative:()=>qo,downloadAttachment:()=>Li,finishNativeLogExport:()=>Io,getDefaultAttachmentFileExtensions:()=>Mr,getDefaultNativeDataDir:()=>Me,getDefaultNativeImageDir:()=>gt,getImageNative:()=>Uo,getNativeSavedImages:()=>Co,getSettings:()=>rt,init:()=>qi,initDirs:()=>Ni,messageLoggerEnhancedUniqueIdThingyIdkMan:()=>Ro,readNativeLogChunk:()=>Do,showItemInFolder:()=>Fo,startNativeLogExport:()=>So,startNativeLogImport:()=>Po,updateAllowedExtensions:()=>jo,writeImageNative:()=>No,writeLogs:()=>Lo,writeNativeLogChunk:()=>To});w();var me=require("node:fs/promises"),ze=De(require("node:path"));ge();var yt=require("electron");w();var Cr=De(require("fs/promises")),Ei=De(require("path"));w();var jt=require("fs/promises"),bi=De(require("path"));async function Eo(r){try{return await(0,jt.access)(r),!0}catch{return!1}}async function tt(r){await Eo(r)||await(0,jt.mkdir)(r)}function Rr(r){return bi.default.parse(r).name}var xi=r=>new Promise(e=>setTimeout(e,r));async function rt(){try{let r=await Cr.default.readFile(await Si(),"utf8");return JSON.parse(r)}catch{let e={logsDir:await Me(),imageCacheDir:await gt(),attachmentFileExtensions:await Mr()};try{await _t(e)}catch{}return e}}async function _t(r){r&&await Cr.default.writeFile(await Si(),JSON.stringify(r,null,4),"utf8")}async function Si(){let r=await Me();return await tt(r),Ei.default.join(r,"mlSettings.json")}w();var Ti=require("node:crypto"),Ii=require("node:fs"),Pi=require("electron"),vt=new Map;async function So(r,e){let{filePath:t,canceled:i}=await Pi.dialog.showSaveDialog({defaultPath:e??"message-logger-logs-idb.json",filters:[{name:"JSON",extensions:["json"]}]});if(i||!t)throw new Error("No file path selected");let n=(0,Ii.createWriteStream)(t,{flags:"w",encoding:"utf-8"}),s=(0,Ti.randomUUID)();return vt.set(s,n),n.on("error",o=>{console.error("Stream error",o),vt.delete(s)}),s}async function To(r,e,t){let i=vt.get(e);if(!i)throw new Error("Stream not found or closed");i.write(t)||await new Promise(s=>i.once("drain",s))}async function Io(r,e){let t=vt.get(e);if(t)return new Promise(i=>{t.end(()=>{vt.delete(e),i()})})}w();var Di=require("node:crypto"),Ai=require("node:fs/promises"),Ri=require("electron"),wt=new Map;async function Po(r,e){let t=await Ri.dialog.showOpenDialog({title:"Import Logs",filters:[{name:"Logs",extensions:["json"]}],properties:["openFile"],defaultPath:e}),[i]=t.filePaths;if(!i)throw Error("No file selected");let n=await(0,Ai.open)(i,"r"),s=(0,Di.randomUUID)();return wt.set(s,n),s}async function Do(r,e,t=64*1024){let i=wt.get(e);if(!i)return null;let n=Buffer.alloc(t),{bytesRead:s}=await i.read(n,0,t);return s===0?(await i.close(),wt.delete(e),null):n.toString("utf-8",0,s)}async function Ao(r,e){let t=wt.get(e);t&&(await t.close(),wt.delete(e))}w();var Ci=["com","exe","dll","ocx","ps1","ps1xml","ps2","ps2xml","psc1","psc2","msh","msh1","msh2","mshxml","msh1xml","msh2xml","js","jse","vbs","vb","vbe","cmd","bat","hta","inf","reg","pif","scr","cpl","scf","msc","pol","hlp","chm","ws","wsf","wsc","wsh","jar","z","bz2","cab","tar","ace","msi","msp","mst","msu","ppkg","bak","tmp","ost","pst","pkg","iso","img","vhd","vhdx","application","lock","lck","sln","cs","csproj","resx","config","resources","pdb","manifest","doc","dot","wbk","xls","xlt","xlm","xla","ppt","pot","pps","ade","adp","mdb","cdb","mda","mdn","mdt","mdf","mde","ldb","wps","xlsb","xlam","xll","xlw","ppam"];w();var Mi="png,jpg,jpeg,gif,webp,mp4,webm,mp3,ogg,wav";var Ui="message-logger-logs.json";function Ro(){}var Ue=new Map,Co=()=>Ue,Ur,Nr,zt=async()=>Nr??await gt(),Mo=async()=>Ur??await Me();async function Ni(){let{logsDir:r,imageCacheDir:e}=await rt();Ur=r||await Me(),Nr=e||await gt()}Ni();async function qi(r){let e=await zt();await tt(e);let t=await(0,me.readdir)(e);for(let i of t){let n=Rr(i);Ue.set(n,ze.default.join(e,i))}}async function Uo(r,e){let t=Ue.get(e);if(!t)return null;try{return await(0,me.readFile)(t)}catch(i){return console.error(i),null}}async function No(r,e,t){if(!e||!t)return;let i=await zt(),n=Rr(e);if(Ue.get(n))return;let o=ze.default.join(i,e);await tt(i),await(0,me.writeFile)(o,t),Ue.set(n,o)}async function qo(r,e){let t=Ue.get(e);t&&await(0,me.unlink)(t)}async function Lo(r,e){let t=await Mo();(0,me.writeFile)(ze.default.join(t,Ui),e)}async function gt(){return ze.default.join(await Me(),"savedImages")}async function Me(){return ze.default.join(Ce,"MessageLoggerData")}async function Mr(){return Mi}async function Oo(r,e){let t=await rt(),i=t[e]||await Me(),s=(await yt.dialog.showOpenDialog({properties:["openDirectory"],defaultPath:i})).filePaths[0];if(!s)throw Error("Invalid Directory");switch(t[e]=s,await _t(t),e){case"logsDir":Ur=s;break;case"imageCacheDir":Nr=s;break}return e==="imageCacheDir"&&await qi(r),s}async function Fo(r){yt.shell.showItemInFolder(await zt())}async function $o(r,e,t,i){let n=await yt.dialog.showOpenDialog({title:e,filters:t,properties:["openFile"],defaultPath:i}),[s]=n.filePaths;if(!s)throw Error("Invalid file");return await(0,me.readFile)(s,"utf-8")}async function Li(r,e,t=0,i=!1){try{if(!e?.url||!e.oldUrl||!e?.id)return{error:"Invalid Attachment",path:null};if(e.id.match(/[\\/.]/))return{error:"Invalid Attachment ID",path:null};let s=(await rt()).attachmentFileExtensions?.trim()||"";if(s===""||s.toLowerCase()==="none")return{error:"All attachment downloads are currently blocked by settings configurations.",path:null};let o=s.split(",").map(_=>_.trim().toLowerCase()),c=e.fileExtension?.replace(".","").toLowerCase();if(!c||!o.includes(c))return{error:`File type .${c} is blocked by settings configurations.`,path:null};let h=Ue.get(e.id);if(h)return{error:null,path:h};let f=await fetch(i?e.oldUrl:e.url);if(f.status!==200)return(f.status===404||f.status===403||f.status===415)&&(i=!0),t++,t>3?{error:`Failed to get attachment ${e.id} for caching. too many attempts, error code ${f.status}`,path:null}:(await xi(1e3),Li(r,e,t,i));let d=await f.arrayBuffer(),g=await zt();await tt(g);let u=ze.default.join(g,`${e.id}${e.fileExtension}`);return await(0,me.writeFile)(u,Buffer.from(d)),Ue.set(e.id,u),{error:null,path:u}}catch(n){return console.error(n),{error:n.message,path:null}}}async function jo(r,e){let t=await rt(),i=e?.trim()||"";if(i===""){t.attachmentFileExtensions="none",await _t(t);return}let n=i.split(",").map(s=>s.trim().toLowerCase()).filter(s=>s.length>0&&!Ci.includes(s));n.length===0?t.attachmentFileExtensions="none":t.attachmentFileExtensions=n.join(","),await _t(t)}var Lr={};L(Lr,{canOpenDevTools:()=>Fi,complete:()=>Bo,openDevTools:()=>zo});w();var Oi=require("electron");function Fi(r){return!r.sender.isDestroyed()}function zo(r){if(!Fi(r))return!1;let e=Oi.BrowserWindow.fromWebContents(r.sender);return r.sender.isDevToolsOpened()?(e?.focus(),!0):(r.sender.openDevTools(),!0)}async function Bo(r,e,t,i,n,s){let o=await Wo(e,t,n,s);if(o.error||!o.token)return{success:!1,error:"AUTH: "+JSON.stringify(o.error)};let c=await Ho(e,o.token,i,n,s);return c.error||!c.success?{success:!1,error:"PROGRESS: "+JSON.stringify(c.error)}:{success:!0,error:null}}function $i(r,e="",t){let i={"Content-Type":"application/json","X-Auth-Token":e,"X-Discord-Quest-ID":r};return t&&(i.Referer=t),i}async function Vo(r){try{return await r.json()}catch{return null}}function Go(r){return r!=null&&typeof r=="object"&&"token"in r&&typeof r.token=="string"?r.token:!1}async function Wo(r,e,t,i){let n=null;return{token:await fetch(`https://${r}.discordsays.com/.proxy/acf/authorize`,{headers:$i(t,"",i),body:JSON.stringify({code:e}),method:"POST",mode:"cors",credentials:"include"}).then(async o=>{let c=await Vo(o),h=Go(c);return!o.ok||!h?(n={status:o.status,body:c},!1):h}).catch(o=>(n=o,!1)),error:n}}async function Ho(r,e,t,i,n){let s=null;return{success:await fetch(`https://${r}.discordsays.com/.proxy/acf/quest/progress`,{headers:$i(i,e,n),body:JSON.stringify({progress:t}),method:"POST",mode:"cors",credentials:"include"}).then(c=>c.ok).catch(c=>(s=c,!1)),error:s}}var Or={};L(Or,{fetchTrackData:()=>Zo});w();async function Zo(){let r=await(await fetch("https://gensokyoradio.net/api/station/playing/")).json();return{title:r.SONGINFO.TITLE,album:r.SONGINFO.ALBUM,artist:r.SONGINFO.ARTIST,position:r.SONGTIMES.SONGSTART,duration:r.SONGTIMES.SONGEND,artwork:r.MISC.ALBUMART?`https://gensokyoradio.net/images/albums/500/${r.MISC.ALBUMART}`:""}}var Fr={};L(Fr,{getTrackData:()=>Yo});w();fe();async function Yo(r,e){let t=new URL("https://api.song.link/v1-alpha.1/links");t.searchParams.set("url",e),t.searchParams.set("userCountry",j.store.plugins?.SongLink.userCountry||"US");let i=await fetch(t.toString()).then(o=>o.json()),[,n]=Object.entries(i.entitiesByUniqueId).find(([o])=>!o.includes("YOUTUBE"))||[];return{info:n?{title:n.title,artist:n.artistName}:null,links:Object.fromEntries(Object.entries(i.linksByPlatform).map(([o,c])=>[o,{url:c.url,nativeUri:c.nativeAppUriDesktop}]))}}var Yr={};L(Yr,{parseLink:()=>ul,renderSong:()=>hl,validateSong:()=>pl});w();w();w();var Jo="2.2.0";function Ko(r){let e=new URL(r);return e.protocol="https",e.username=e.password=e.port=e.search=e.hash="",e.toString().replace(/\/?$/,"")}var zi=fetch;function jr(r){zi=r}async function J(r){if(r.body){let s=JSON.stringify(r.body);r.body=s,r.headers??={},r.headers["content-type"]??="application/json",r.headers["content-length"]??=String(s.length)}let e=new URL(r.url);for(let[s,o]of Object.entries(r.query??{}))e.searchParams.set(s,o);let t=await zi(e,{method:r.method,redirect:"follow",headers:{accept:"*/*","user-agent":`SongSpotlight/${Jo}`,"cache-control":"public, max-age=3600",...r.headers??{}},cf:{cacheTtl:3600,cacheEverything:!0},body:r.body}),i=await t.text(),n;try{n=JSON.parse(i)}catch{n=null}return{ok:t.ok,redirected:t.redirected,url:t.url,status:t.status,headers:t.headers,text:i,json:n}}function zr(r){let e=r.match(/id="__NEXT_DATA__" type="application\/json">(.*?)<\/script>/)?.[1];if(e)try{return JSON.parse(e)}catch{return}}function bt(r){return[r.service,r.type,r.id].join(":")}var Be={services:[],parsers:[]},$r=new Map,kt=new Map;async function nt(r){let e=Ko(r);if($r.has(e))return $r.get(e);let{hostname:t,pathname:i}=new URL(e),n=i.slice(1).split(/\/+/),s=null;for(let o of Be.parsers)if(o.hosts.includes(t)&&(s=await o.parse(e,t,n),s))break;return $r.set(e,s),s&&kt.set(bt(s),!0),s}var ji=new Map;async function Br(r){let e=bt(r),t=ji.get(e);if(t!==void 0&&(!t?.expiresAt||t.expiresAt>Date.now()))return t;let i=null,n=Be.services.find(s=>s.name===r.service);return n?.types.includes(r.type)&&(i=await n.render(r.type,r.id)),ji.set(e,i),r&&kt.set(bt(r),!0),i}async function Vr(r){let e=bt(r);if(kt.has(e))return kt.get(e);let t=!1,i=Be.services.find(n=>n.name===r.service);return i?.types.includes(r.type)&&(t=await i.validate(r.type,r.id)),kt.set(e,t),t}w();var Bi=/^[^-_][a-z0-9-_]+[^-_]$/i,Xo=["spotify","soundcloud","appleMusic","tidal"],Qo={name:"song.link",label:"song.link",hosts:["song.link","album.link","artist.link","pods.link","playlist.link","mylink.page","odesli.co"],async parse(r,e,t){let[i,n,s]=t;if(!i||s||n&&!Bi.test(n))return null;if(!n&&!Bi.test(i))return null;let o=(await J({url:r})).text,c=zr(o)?.props?.pageProps?.pageData?.sections;if(!c)return null;let h=c.flatMap(f=>f.links??[]).filter(f=>f.url&&f.platform);for(let f of Xo){let d=h.find(g=>g.platform===f);if(d){let g=await nt(d.url);if(g)return g}}return null}},Bt=new Map;function el(r,e){return{retrieve(...t){if(Bt.has(r))return Bt.get(r);let i=e(...t);return i instanceof Promise?i.then(n=>(Bt.set(r,n),n)):(Bt.set(r,i),i)}}}var Wr="us",tl="songspotlight";function Vi(r,e){return`https://music.apple.com/${Wr}/${r}/${tl}/${e}`}var Gi=el("applemusicToken",async r=>{r??=(await J({url:`https://music.apple.com/${Wr}/new`})).text;let e=r.match(/src="(\/assets\/index~\w+\.js)"/i)?.[1];if(e)return(await J({url:`https://music.apple.com${e}`})).text.match(/\w+="(ey.*?)"/i)?.[1]}),rl={name:"applemusic",label:"Apple Music",hosts:["music.apple.com","geo.music.apple.com"],types:["artist","album","playlist","song"],async parse(r,e,t){let[i,n,s,o,c]=t;if(!i||!n||!this.types.includes(n)||!s||!o||c)return null;let h=await J({url:Vi(n,o)});return h.status!==200?null:(await Gi.retrieve(h.text),{service:this.name,type:n,id:o})},async render(r,e){let t=await Gi.retrieve();if(!t)return null;let i=await J({url:`https://amp-api.music.apple.com/v1/catalog/${Wr}/${r}s`,query:{include:"songs",ids:e},headers:{authorization:`Bearer ${t}`,origin:"https://music.apple.com"}});if(i.status!==200)return null;let{attributes:n,relationships:s}=i.json.data[0],o={label:n.name,sublabel:n.artistName??"Top songs",link:n.url,explicit:n.contentRating==="explicit"},c=n.artwork?.url?.replace(/{[wh]}/g,"128");if(r==="song"){let h=n.durationInMillis,f=n.previews?.[0]?.url;return{form:"single",...o,thumbnailUrl:c,single:{audio:f&&h?{previewUrl:f,duration:h}:void 0}}}else return{form:"list",...o,thumbnailUrl:c,list:(s.tracks?.data??s.songs?.data??[]).slice(0,15).map(({attributes:h})=>{let f=h.durationInMillis,d=h.previews?.[0]?.url;return{label:h.name,sublabel:h.artistName,link:h.url,explicit:h.contentRating==="explicit",audio:d&&f?{previewUrl:d,duration:f}:void 0}})}},async validate(r,e){return(await J({url:Vi(r,e)})).status===200}},Hr="nIjtjiYnjkOhMyh5xrbqEW12DxeJVnic",es="1782997503";async function Gr(r,e,t){return(await J({url:`https://api-widget.soundcloud.com/${r}s/${e}${t?"/tracks":""}`,query:{format:"json",limit:"20",client_id:Hr,app_version:es}})).json}async function nl(r,e){return(await J({url:"https://api-widget.soundcloud.com/tracks",query:{ids:e.join(","),playlistId:r,playlistSecretToken:"",format:"json",client_id:Hr,app_version:es}})).json}function Wi(r){return r.format.protocol==="progressive"&&r.format.mime_type==="audio/mpeg"&&r?.url&&r?.duration}var il=.4,sl=3e4;async function Hi(r){let e=r.sort((t,i)=>+Wi(i)-+Wi(t))?.[0];if(e?.url&&e?.duration){let t=(await J({url:e.url,query:{client_id:Hr}})).json;if(!t?.url)return;if(e.duration>=1e3){let i=Math.min(sl,e.duration),n=Math.ceil(e.duration*il);return{duration:e.duration,previewUrl:t.url,previewStart:n,previewSlice:Math.min(i,e.duration-n)}}else return{duration:e.duration,previewUrl:t.url}}}function Zi(r){try{let e=new URL(r).searchParams.get("Policy");return e?JSON.parse(atob(e.replace(/_/g,"="))).Statement[0].Condition.DateLessThan["AWS:EpochTime"]*1e3:void 0}catch{return}}var al={name:"soundcloud",label:"Soundcloud",hosts:["soundcloud.com","m.soundcloud.com","on.soundcloud.com"],types:["user","track","playlist"],async parse(r,e,t){if(e==="on.soundcloud.com"){if(!t[0]||t[1])return null;let{url:i,status:n}=await J({url:r});return n===200?await nt(i):null}else{let[i,n,s,o]=t,c=!1;if((i&&!n||i&&n&&n!=="sets"&&!s||i&&n==="sets"&&s&&!o)&&(c=!0),!c)return null;let h=(await J({url:"https://soundcloud.com/oembed",query:{format:"json",url:r}})).json;if(!h?.html)return null;let f=h.html.match(/w\.soundcloud\.com.*?url=(.*?)[&"]/)?.[1];if(!f)return null;let d=decodeURIComponent(f).split(/\/+/),g=d[2],u=d[3];return!g||!u?null:{service:this.name,type:g.slice(0,-1),id:u}}},async render(r,e){let t=await Gr(r,e);if(!t?.id)return null;let i={label:t.title??t.username,sublabel:t.user?.username??"Top tracks",link:t.permalink_url,explicit:!!t.publisher_metadata?.explicit},n=t.artwork_url??t.avatar_url;if(r==="track"){let s=await Hi(t.media?.transcodings??[]).catch(()=>{});return{form:"single",...i,thumbnailUrl:n,single:{audio:s},expiresAt:s?Zi(s.previewUrl):void 0}}else{let s=[];if(r==="user"){let h=await Gr(r,e,!0).catch(()=>{});h?.collection&&(s=h.collection)}else if(t.tracks){s=t.tracks;let h=s.filter(d=>d.policy==="ALLOW"&&!d.uri).map(d=>d.id).slice(0,15),f=h.length>=1&&await nl(e,h);if(f)for(let d=0;du.id===s[d]?.id);g&&(s[d]=g)}}let o=await Promise.all(s.filter(h=>h.uri).slice(0,15).map(async h=>({label:h.title,sublabel:h.user?.username??"unknown",link:h.permalink_url,explicit:!!h.publisher_metadata.explicit,audio:await Hi(h.media?.transcodings??[]).catch(()=>{})}))),c=o.map(({audio:h})=>h?Zi(h.previewUrl):void 0).filter(h=>typeof h=="number");return{form:"list",...i,thumbnailUrl:n,list:o,expiresAt:c[0]?Math.min(...c):void 0}}},async validate(r,e){return(await Gr(r,e))?.id!==void 0}};async function Yi(r,e){return zr((await J({url:`https://open.spotify.com/embed/${r}/${e}`})).text)}function Ji(r){let[e,t,i]=r.split(":");return e==="spotify"&&t&&i?`https://open.spotify.com/${t}/${i}`:null}var ol={name:"spotify",label:"Spotify",hosts:["open.spotify.com"],types:["track","album","playlist","artist"],async parse(r,e,t){let[i,n,s]=t;return!i||!this.types.includes(i)||!n||s||!await this.validate(i,n)?null:{service:this.name,type:i,id:n}},async render(r,e){let t=(await Yi(r,e))?.props?.pageProps?.state?.data?.entity;if(!t)return null;let i={label:t.title,sublabel:t.subtitle??t.artists?.map(s=>s.name).join(", "),link:Ji(t.uri),explicit:!!t.isExplicit},n=t.visualIdentity.image.sort((s,o)=>s.maxWidth-o.maxWidth)[0]?.url.replace(/:\/\/.*?\.spotifycdn\.com\/image/,"://i.scdn.co/image");return r==="track"?{form:"single",...i,thumbnailUrl:n,single:{audio:t.audioPreview&&t.duration?{duration:t.duration,previewUrl:t.audioPreview.url}:void 0}}:{form:"list",...i,thumbnailUrl:n,list:(t.trackList??[]).slice(0,15).map(s=>({label:s.title,sublabel:s.subtitle??s.artists?.map(o=>o.name).join(", "),link:Ji(s.uri),explicit:!!s.isExplicit,audio:s.audioPreview&&s.duration?{duration:s.duration,previewUrl:s.audioPreview.url}:void 0}))}},async validate(r,e){return!(await Yi(r,e))?.props?.pageProps?.title}},ll="vNVdglQOjFJJGG2U";async function Vt(r,e,t="",i={}){return await J({url:`https://api.tidal.com/v1/${r}s/${e}/${t}`,query:{countryCode:"US",...i},headers:{"X-Tidal-Token":ll}}).then(n=>n.ok?n.json:void 0)}async function Ki(r){let e=await Vt("track",r,"playbackinfo",{audioquality:"HIGH",playbackmode:"STREAM",assetpresentation:"FULL"});if(e?.manifest)return JSON.parse(atob(e.manifest)).urls[0]}function Xi(r){try{let e=new URL(r);return e.protocol="https://",e.toString()}catch{return r}}function Qi(r){try{let e=new URL(r).searchParams.get("token");if(!e)return;let t=Number(e.split("~")[0]);return Number.isNaN(t)?void 0:t*1e3}catch{return}}var Zr=[rl,al,ol,{name:"tidal",label:"Tidal",hosts:["tidal.com","www.tidal.com","listen.tidal.com"],types:["artist","album","playlist","track"],async parse(r,e,t){let[i,n,s,o]=t,c=s&&o?s:i,h=s&&o?o:n;return!c||!this.types.includes(c)||!h||c==="playlist"&&!/^[-a-f0-9]+$/.test(h)||c!=="playlist"&&Number.isNaN(Number(h))||!await this.validate(c,h)?null:{service:this.name,type:c,id:h}},async render(r,e){let t=await Vt(r,e);if(!t)return null;let i=t.type==="playlist"?"TIDAL":"Top tracks",n={label:t.title||t.name||"Unknown",sublabel:t.artists?.map(c=>c.name).join(", ")||t.creator?.name||i,link:Xi(t.url),explicit:!!t.explicit},s=t.picture??t.squareImage??t.cover,o=s?`https://resources.tidal.com/images/${s.replace(/-/g,"/")}/160x160.jpg`:void 0;if(r==="track"){let c=t.duration&&await Ki(e).catch(()=>{});return{form:"single",...n,thumbnailUrl:o,single:{audio:c&&t.duration?{previewUrl:c,duration:t.duration*1e3}:void 0},expiresAt:c?Qi(c):void 0}}else{let c=await Vt(r,e,r==="artist"?"toptracks":"tracks",{limit:String(15)}),h=await Promise.all(c?.items.slice(0,15).map(async d=>{let g=d.duration&&await Ki(d.id).catch(()=>{});return{label:d.title,sublabel:d.artists.map(u=>u.name).join(", "),link:Xi(d.url),explicit:!!d.explicit,audio:g&&d.duration?{previewUrl:g,duration:d.duration*1e3}:void 0}})??[]),f=h.map(({audio:d})=>d?Qi(d.previewUrl):void 0).filter(d=>typeof d=="number");return{form:"list",...n,thumbnailUrl:o,list:h,expiresAt:f[0]?Math.min(...f):void 0}}},async validate(r,e){return!!await Vt(r,e)}}];Be.services=Zr;var ts=[Qo,...Zr];Be.parsers=ts;w();var rs=require("electron");jr(rs.net.fetch);async function ul(r,e){return nt(e)}async function hl(r,e){return Br(e)}async function pl(r,e){return Vr(e)}var Jr={};L(Jr,{downloadTheme:()=>dl,themeExists:()=>fl});w();ge();var Gt=require("fs");function ns(r){return r?.name?G(Y,`${r.name}.theme.css`):null}async function fl(r,e){let t=ns(e);return t?(0,Gt.existsSync)(t):!1}async function dl(r,e){if(!e?.content||!e?.name||!e?.id)return;let t=ns(e);if(!t)throw new Error("Invalid theme name");let n=await(await fetch(`https://themes.equicord.org/api/download/${encodeURIComponent(e.id)}`)).text();(0,Gt.writeFileSync)(t,n)}var cn={};L(cn,{ensurePluginsDirectory:()=>yl,getUserplugins:()=>xs,initPluginInstall:()=>xl,isUpdateAvailableForPlugin:()=>bl,openGitPathModal:()=>Il,rmPlugin:()=>kl,updatePlugin:()=>Tl});w();fe();var qe=require("child_process"),q=require("electron"),Ne=require("fs"),re=require("fs/promises"),N=require("path"),an=De(vs());var ws=` Review userplugin %WARNINGHIDER% %NATIVETSHIDER% %PRESENDHIDER%

Plugin info

%PLUGINNAME%

%PLUGINDESC%

Warnings

Uses a native.ts file

Use of this file allows the plugin to escape the browser sandbox and potentially do anything to your system and data. ONLY INSTALL THIS PLUGIN AFTER REVIEWING THE CODE AND BEING 100% SURE THAT NOTHING BAD CAN BE DONE!


Acknowledge warning (required to allow install)

Has pre-send listeners

This allows the plugin to edit your messages before they are sent.

Reminder: installing a userplugin can be a destructive action. Make sure that you know and trust the developer before installing any.

`;var ys=` Git Path

Git path

If you're having issues downloading userplugins because Git isn't properly detected, you can manually set a Git path that'll be used instead of simply looking in PATH.
If you do not specify anything, Git will be called from the PATH variable. Do not set this setting unless you have issues.

On Linux, Flatpak still isn't supported.

`;var ks=` Review userplugin

Plugin info

%PLUGINNAME%

%PLUGINDESC%

Update info

%COMMITMESSAGE%


You may want to review the source code that will be applied.

Reminder: installing a userplugin can be a destructive action. Make sure that you know and trust the developer before installing any.

`;var vl=/export default definePlugin\((?:\s|\/(?:\/|\*).*)*{\s*(?:\s|\/(?:\/|\*).*)*name:\s*(?:"|'|`)(.*)(?:"|'|`)(?:\s|\/(?:\/|\*).*)*,(?:\s|\/(?:\/|\*).*)*.+(?:\s|\/(?:\/|\*).*)*description:\s*(?:"|'|`)(.*)(?:"|'|`)(?:\s|\/(?:\/|\*).*)*/,wl=/https:\/\/(?:((?:git(?:hub|lab)\.com|git\.(?:[a-zA-Z0-9]|\.)+|codeberg\.org))\/(?!user-attachments)((?:[a-zA-Z0-9]|-)+)\/((?:[a-zA-Z0-9]|-|\.)+)(?:\.git)?|(plugins\.(nin0)\.dev)\/((?:[a-zA-Z0-9]|-|\.)+))(?:\/)?/,oe=["desktop","equibop"].includes((0,N.basename)(__dirname))?(0,N.join)(__dirname,"../"):__dirname;async function yl(r){}async function kl(r,e){return new Promise(async(t,i)=>{let s=(await xs()).find(c=>c.directory===e);if(!s)return;if((await q.dialog.showMessageBox({title:"Uninstall plugin",message:`Uninstall ${s.name}`,type:"error",detail:`The uninstall of the userplugin ${s.name} has been requested. Would you like to do so? If you did not initiate this, press No.`,buttons:["No","Yes"]})).response!==1)return i("User rejected");await(0,re.rm)((0,N.join)(oe,"../src/userplugins",e),{recursive:!0}),await on(),t("Done")})}async function bl(r,e){return new Promise(t=>{let i=(0,N.join)(oe,"../src/userplugins",e);(0,qe.exec)("git fetch",{cwd:i}).once("close",()=>{async function s(){try{let o=(await(0,re.readFile)((0,N.join)(i,".git/HEAD"),"utf8")).match(/^ref: (.+)/)[1],c=(await(0,re.readFile)((0,N.join)(i,".git/refs/remotes/origin/HEAD"),"utf8")).match(/^ref: (.+)/)[1],h=await(0,re.readFile)((0,N.join)(i,".git",o),"utf8"),f=await(0,re.readFile)((0,N.join)(i,".git",c),"utf8");t(h!==f)}catch{t(!1)}}s()})})}function xl(r,e,t,i,n){return new Promise(async(s,o)=>{let c=e.match(wl),h=t==="plugins.nin0.dev"?1:0;if(![4,7].includes(c.length)||c[0]!==e||c[[1,4][h]]!==t||c[[2,5][h]]!==i||c[[3,6][h]]!==n)return o("Invalid link");switch((await q.dialog.showMessageBox({title:"Clone userplugin",message:`You are about to clone a userplugin from ${t}.`,type:"question",detail:`The repository name is "${n}" and it is owned by "${i}". The repository URL is ${e} (If you did not request this intentionally, choose Cancel)`,buttons:["Cancel","Clone repository and continue install","Open repository in browser"]})).response){case 0:return o("Rejected by user");case 1:{await bs(e,n);break}case 2:return await q.shell.openExternal(e),o("silentStop")}let d=await ln((0,N.join)(oe,"..","src","userplugins",n)),g=new q.BrowserWindow({maximizable:!1,minimizable:!1,width:560,height:d.usesNative||d.usesPreSend?650:360,resizable:!1,webPreferences:{devTools:!0},title:"Review userplugin",modal:!0,parent:q.BrowserWindow.getAllWindows()[0],show:!1,autoHideMenuBar:!0}),u=new q.WebContentsView({webPreferences:{devTools:!0,nodeIntegration:!0}});g.contentView.addChildView(u),g.loadURL(El(d)),g.on("page-title-updated",async _=>{switch(g.webContents.getTitle()){case"abortInstall":return g.close(),await(0,re.rm)((0,N.join)(oe,"..","src","userplugins",n),{recursive:!0}),o("Rejected by user");case"install":{g.close();try{await on()}catch(a){o(a.toString())}s(JSON.stringify({name:d.name,native:d.usesNative}));break}}}),g.show()})}async function on(){return new Promise((r,e)=>{let t=(0,qe.exec)("pnpm build --dev",{cwd:(0,N.join)(oe,".."),shell:process.env.SHELL||process.env.ComSpec||"/bin/sh"});t.once("close",()=>{t.exitCode!==0&&e("Failed to build Vencord, try building from console"),r("Success")})})}async function ln(r,e={}){return new Promise((t,i)=>{let n=(0,Ne.readdirSync)(r),s;n.forEach(d=>{d==="index.ts"&&(s="index.ts"),d==="index.tsx"&&(s="index.tsx"),d==="index.js"&&(s="index.js"),d==="index.jsx"&&(s="index.jsx")}),s||i("Invalid plugin");let o=(0,Ne.readFileSync)(`${r}/${s}`,"utf8"),c;try{c=(0,Ne.readFileSync)((0,N.join)(r,".git/config"),"utf8").match(/\[remote "origin"]\s+url = (https:\/\/(?:(?:git(?:hub|lab)\.com|git\.(?:[a-zA-Z0-9]|\.)+|codeberg\.org)\/(?!user-attachments)(?:[a-zA-Z0-9]|-)+\/(?:[a-zA-Z0-9]|-|\.)+(?:\.git)?|(plugins\.(nin0)\.dev)\/((?:[a-zA-Z0-9]|-|\.)+))(?:\/)?)\n/)}catch{c=null}let h;try{let d=(0,Ne.readFileSync)((0,N.join)(r,"meta.yml"),"utf8");console.log(d);let g=an.default.load(d);g.thread&&typeof g.thread=="string"&&/^\d+$/.test(g.thread)&&(h=g.thread)}catch{h=null}let f=o.match(vl);t({name:f[1],description:f[2],usesPreSend:o.includes("PreSendListener")||o.includes("onBeforeMessage"),usesNative:n.includes("native.ts")||n.includes("native.js"),remote:c?c[1]:"",supportChannelID:h,...e})})}async function bs(r,e){return new Promise((t,i)=>{let n=(0,qe.spawn)("git",["clone",r],{cwd:(0,N.join)(oe,"..","src","userplugins")});n.once("close",async()=>{if(n.exitCode!==0){if(!(0,Ne.existsSync)((0,N.join)(oe,"..","src","userplugins",e)))return i("Failed to clone");if((await q.dialog.showMessageBox({title:"Error",message:"Plugin already exists",type:"error",detail:`The plugin that you tried to clone already exists at ${(0,N.join)(oe,"..","src","userplugins")}. Would you like to reclone it? Only do this if you want to reinstall or update the plugin.`,buttons:["No","Yes"]})).response!==1)return i("User rejected");await(0,re.rm)((0,N.join)(oe,"..","src","userplugins",e),{recursive:!0}),await bs(r,e)}t()})})}function El(r){let e=ws.replace("%PLUGINNAME%",r.name.replaceAll("<","<")).replace("%PLUGINDESC%",r.description.replaceAll("<","<")).replace("%WARNINGHIDER%",!r.usesNative&&!r.usesPreSend?'[data-useless="warning"] { display: none !important; }':"").replace("%NATIVETSHIDER%",r.usesNative?"":"#native-ts-warning { display: none !important; }").replace("%PRESENDHIDER%",r.usesPreSend?"":"#pre-send-warning { display: none !important; }");return`data:text/html;base64,${Buffer.from(e).toString("base64")}`}function Sl(r){let e=ks.replace("%PLUGINNAME%",r.name.replaceAll("<","<")).replace("%PLUGINDESC%",r.description.replaceAll("<","<")).replace("%REMOTE%",r.remote).replace("%COMMITMESSAGE%",r.commit.replaceAll(` `,"
"));return`data:text/html;base64,${Buffer.from(e).toString("base64")}`}async function xs(){let r=await(0,re.readdir)((0,N.join)(oe,"..","src","userplugins"),{withFileTypes:!0});return(await Promise.allSettled(r.filter(t=>t.isDirectory()).map(t=>({path:(0,N.join)(t.parentPath,t.name),directory:t.name})).map(({path:t,directory:i})=>ln(t,{directory:i})))).filter(t=>t.status==="fulfilled").map(t=>t.value)}async function Tl(r,e){return new Promise((t,i)=>{let n=(0,N.join)(oe,"../src/userplugins",e);async function s(){let o=await ln(n),c=new q.BrowserWindow({maximizable:!1,minimizable:!1,width:560,height:600,resizable:!1,webPreferences:{devTools:!0},title:"Review userplugin",modal:!0,parent:q.BrowserWindow.getAllWindows()[0],show:!1,autoHideMenuBar:!0}),h=new q.WebContentsView({webPreferences:{devTools:!0,nodeIntegration:!0}});c.contentView.addChildView(h);let f=(0,qe.exec)("git log origin/HEAD...HEAD --oneline --pretty=format:%an////////%h////////%H////////%s",{cwd:n}),d="";f.stdout?.on("data",g=>{d+=String(g)}),f.once("close",()=>{c.loadURL(Sl({name:o.name,description:o.description,remote:o.remote,commit:d.split(` `).map(g=>g.split("////////")).map(([g,u,_,a])=>`${g} (${u}) ~ ${a}`).join(` `)})),c.on("page-title-updated",async g=>{switch(c.webContents.getTitle().startsWith("openLink:")&&await q.shell.openExternal(c.webContents.getTitle().replace("openLink:","")),c.webContents.getTitle()){case"abortInstall":return c.close(),i("Rejected by user");case"install":{c.close();try{let u=(0,qe.exec)("git rebase origin/HEAD",{cwd:n}),_="";u.stderr?.on("data",a=>{String(a).includes("Success")||(_+=String(a))}),u.once("close",()=>{if(_&&!_.includes("Success"))return i(`Failed to apply the update, chances are you have local changes that conflict with your remote. Git errors: ${_}`);on().then(()=>t(JSON.stringify({name:o.name,native:o.usesNative})))})}catch(u){i(u.toString())}break}}})}),c.show()}s()})}async function Il(r){let e=V.store.plugins.UserpluginInstaller?.gitPath,t=new q.BrowserWindow({maximizable:!1,minimizable:!1,width:560,height:400,resizable:!1,webPreferences:{devTools:!0},title:"Set Git path",modal:!0,parent:q.BrowserWindow.getAllWindows()[0],show:!1,autoHideMenuBar:!0}),i=new q.WebContentsView({webPreferences:{devTools:!0,nodeIntegration:!0}});t.contentView.addChildView(i),t.loadURL(`data:text/html;base64,${Buffer.from(ys).toString("base64")}`),t.on("page-title-updated",async n=>{let s=t.webContents.getTitle();if(s==="abort"&&t.close(),s.startsWith("ok")){if(V.store.plugins.UserpluginInstaller||(V.store.plugins.UserpluginInstaller={gitPath:void 0}),s==="ok-")V.store.plugins.UserpluginInstaller.gitPath=void 0;else{let o=s.split("-").toSpliced(0,1).join("-");V.store.plugins.UserpluginInstaller.gitPath=o}t.close()}if(s.startsWith("check"))try{let o=(0,qe.spawn)(s==="check-"?"git":s.split("-").toSpliced(0,1).join("-"),["--version"]),c="";o.stdout?.on("data",h=>{c+=String(h)}),o.on("error",h=>{q.dialog.showMessageBox({title:"Error",message:"Git error",type:"error",detail:`${h} Double-check the path you entered.`,buttons:["OK"]})}),o.once("close",()=>{o.exitCode===0&&q.dialog.showMessageBox({title:"Success",message:"Git works!",type:"info",detail:`Successfully called ${c.trim()}`,buttons:["OK"]})})}catch(o){q.dialog.showMessageBox({title:"Error",message:"Git error",type:"error",detail:`${o} Double-check the path you entered.`,buttons:["OK"]})}}),t.show(),e&&t.webContents.executeJavaScript(`document.querySelector("input").value = ${JSON.stringify(e)};`),console.log(an.default.load(` name: test items: - a - b `))}var un={};L(un,{fetchAudio:()=>Pl});w();async function Pl(r,e){if(!e.startsWith("https://cdn.discordapp.com"))throw new Error("Unknown URL");let t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch ${e}: ${t.statusText}`);if(!t.headers.get("Content-Type")?.startsWith("audio/"))throw new Error(`${e} is not an audio file`);return new Uint8Array(await t.arrayBuffer())}var pn={};L(pn,{fetchDiscordAttachment:()=>Al});w();var Es=require("electron"),Dl="https://cdn.discordapp.com/attachments/",hn=50*1024*1024;async function Al(r,e){try{let t=Ml(e);if(!t)return{success:!1,error:"Invalid Discord attachment path"};if((await Es.dialog.showMessageBox({title:"Preview ZIP attachment",message:"Discord is about to fetch this ZIP attachment for preview.",type:"question",detail:`Attachment: ${Cl(e)} If you did not request this intentionally, choose Cancel.`,buttons:["Cancel","Preview ZIP"]})).response!==1)return{success:!1,error:"ZIP preview was cancelled."};let n=await fetch(t);return n.ok?{success:!0,data:await Rl(n)}:{success:!1,error:`Fetch failed: ${n.status} ${n.statusText}`}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Unknown error"}}}async function Rl(r){let e=Number(r.headers.get("content-length"));if(Number.isFinite(e)&&e>hn)throw new Error("ZIP is too large to preview.");if(!r.body){let c=await r.arrayBuffer();if(c.byteLength>hn)throw new Error("ZIP is too large to preview.");return c}let t=r.body.getReader(),i=[],n=0;for(;;){let{done:c,value:h}=await t.read();if(c)break;if(h){if(n+=h.byteLength,n>hn)throw await t.cancel(),new Error("ZIP is too large to preview.");i.push(h)}}let s=new Uint8Array(n),o=0;for(let c of i)s.set(c,o),o+=c.byteLength;return s.buffer}function Cl(r){let t=r.split("?",1)[0].split("/").at(-1);return t?decodeURIComponent(t):"Unknown attachment"}function Ml(r){if(!Ul(r))return null;let e=new URL(r,Dl);return e.origin==="https://cdn.discordapp.com"&&e.pathname.startsWith("/attachments/")?e:null}function Ul(r){if(r.includes("\\")||r.includes("..")||r.includes("://")||r.startsWith("/")||r.startsWith("//"))return!1;let t=r.split("?",1)[0].split("/");return t.length>=3&&/^\d+$/.test(t[0])&&/^\d+$/.test(t[1])&&t.slice(2).every(i=>i.length>0)}var Ss={AppleMusicRichPresence:pr,ConsoleShortcuts:fr,FixSpotifyEmbeds:ni,FixYoutubeEmbeds:si,OpenInApp:vr,Translate:wr,VoiceMessages:yr,XSOverlay:kr,YoutubeAdblock:hi,ClipUpload:Sr,EquicordHelper:yi,FavouriteAnything:Pr,FileUpload:Dr,GifMaker:Ar,MessageLoggerEnhanced:qr,Questify:Lr,RichPresence:Or,SongLink:Fr,SongSpotlight:Yr,ThemeLibrary:Jr,UserpluginInstaller:cn,VoiceMessageTranscriber:un,ZipPreview:pn};var Ts={};for(let[r,e]of Object.entries(Ss)){let t=Object.entries(e);if(!t.length)continue;let i=Ts[r]={};for(let[n,s]of t){let o=`VencordPluginNative_${r}_${n}`;fn.ipcMain.handle(o,s),i[n]=o}}fn.ipcMain.on("VencordGetPluginIpcMethodMap",r=>{r.returnValue=Ts});fe();w();function dn(r,e=300){let t;return function(...i){clearTimeout(t),t=setTimeout(()=>{r(...i)},e)}}Ae();var D=require("electron");w();var Is="PCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48dGl0bGU+RXF1aWNvcmQgUXVpY2tDU1MgRWRpdG9yPC90aXRsZT48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbW9uYWNvLWVkaXRvckAwLjUwLjAvbWluL3ZzL2VkaXRvci9lZGl0b3IubWFpbi5jc3MiIGludGVncml0eT0ic2hhMjU2LXRpSlBRMk8wNHovcFovQXdkeUlnaHJPTXpld2YrUEl2RWwxWUtiUXZzWms9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiPjxzdHlsZT4jY29udGFpbmVyLGJvZHksaHRtbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttYXJnaW46MDtwYWRkaW5nOjA7b3ZlcmZsb3c6aGlkZGVufTwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+PHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbW9uYWNvLWVkaXRvckAwLjUwLjAvbWluL3ZzL2xvYWRlci5qcyIgaW50ZWdyaXR5PSJzaGEyNTYtS2NVNDhUR3I4NHI3dW5GN0o1SWdCbzk1YWVWckVickdlMDRTN1RjRlVqcz0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciI+PC9zY3JpcHQ+PHNjcmlwdD5yZXF1aXJlLmNvbmZpZyh7cGF0aHM6e3ZzOiJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21vbmFjby1lZGl0b3JAMC41MC4wL21pbi92cyJ9fSkscmVxdWlyZShbInZzL2VkaXRvci9lZGl0b3IubWFpbiJdLCgoKT0+e2dldEN1cnJlbnRDc3MoKS50aGVuKChlPT57dmFyIHQ9bW9uYWNvLmVkaXRvci5jcmVhdGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLHt2YWx1ZTplLGxhbmd1YWdlOiJjc3MiLHRoZW1lOmdldFRoZW1lKCl9KTt0Lm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KCgoKT0+c2V0Q3NzKHQuZ2V0VmFsdWUoKSkpKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKCk9Pnt0LmxheW91dCgpfSkpfSkpfSkpPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4=";var Se=require("fs"),ve=require("fs/promises"),Ms=require("os"),Yt=require("path");w();fe();Ae();var st=require("electron");function Ps(){st.ipcMain.handle("VencordCspRemoveOverride",Ol),st.ipcMain.handle("VencordCspRequestAddOverride",Ll),st.ipcMain.handle("VencordCspIsDomainAllowed",Fl)}function Nl(r,e){try{let{host:t}=new URL(r);if(/[;'"\\]/.test(t))return!1}catch{return!1}return!(e.length===0||e.some(t=>!F.includes(t)))}function ql(r,e,t){let i=new URL(r).host,n=`${t} wants to allow connections to ${i}`,s=`Unless you recognise and fully trust ${i}, you should cancel this request! You will have to fully close and restart Discord for the changes to take effect.`;if(e.length===1&&e[0]==="connect-src")return{message:n,detail:s};let o=e.filter(c=>c!=="connect-src").map(c=>{switch(c){case"img-src":return"Images";case"style-src":return"CSS & Themes";case"font-src":return"Fonts";default:throw new Error(`Illegal CSP directive: ${c}`)}}).sort().join(", ");return s=`The following types of content will be allowed to load from ${i}: ${o} ${s}`,{message:n,detail:s}}async function Ll(r,e,t,i){if(!Nl(e,t))return"invalid";let n=new URL(e).host;if(n in V.store.customCspRules)return"conflict";let{checkboxChecked:s,response:o}=await st.dialog.showMessageBox({...ql(e,t,i),type:i?"info":"warning",title:"Equicord Host Permissions",buttons:["Cancel","Allow"],defaultId:0,cancelId:0,checkboxLabel:`I fully trust ${n} and understand the risks of allowing connections to it.`,checkboxChecked:!1});return o!==1?"cancelled":s?(V.store.customCspRules[n]=t,"ok"):"unchecked"}function Ol(r,e){return e in V.store.customCspRules?(delete V.store.customCspRules[e],!0):!1}function Fl(r,e,t){try{let i=new URL(e).host,n=mt[i]??V.store.customCspRules[i];return n?t.every(s=>n.includes(s)):!1}catch{return!1}}w();var $l=/[^\S\r\n]*?\r?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,jl=/^\\@/;function mn(r,e={}){return{fileName:r,name:e.name??r.replace(/\.css$/i,""),author:e.author??"Unknown Author",description:e.description??"A Discord Theme.",version:e.version,license:e.license,source:e.source,website:e.website,invite:e.invite}}function Ds(r){return r.charCodeAt(0)===65279&&(r=r.slice(1)),r}function As(r,e){if(!r)return mn(e);let t=r.split("/**",2)?.[1]?.split("*/",1)?.[0];if(!t)return mn(e);let i={},n="",s="";for(let o of t.split($l))if(o.length!==0)if(o.charAt(0)==="@"&&o.charAt(1)!==" "){i[n]=s.trim();let c=o.indexOf(" ");n=o.substring(1,c),s=o.substring(c+1)}else s+=" "+o.replace("\\n",` `).replace(jl,"@");return i[n]=s.trim(),delete i[""],mn(e,i)}ge();w();var Rs=require("electron");function Cs(r){r.webContents.setWindowOpenHandler(({url:e})=>{switch(e){case"about:blank":case"https://discord.com/popout":case"https://ptb.discord.com/popout":case"https://canary.discord.com/popout":return{action:"allow"}}try{var{protocol:t}=new URL(e)}catch{return{action:"deny"}}switch(t){case"http:":case"https:":case"mailto:":case"steam:":case"spotify:":Rs.shell.openExternal(e)}return{action:"deny"}})}var zl=(0,Yt.join)(__dirname,"renderer.css");(0,Se.mkdirSync)(Y,{recursive:!0});Ps();function Us(){return(0,ve.readFile)(Ke,"utf-8").catch(()=>"")}async function Bl(){let r=await(0,ve.readdir)(Y).catch(()=>[]),e=[];for(let t of r){if(!t.endsWith(".css"))continue;let i=await Ns(t).then(Ds).catch(()=>null);i!=null&&e.push(As(i,t))}return e}function Ns(r){r=r.replace(/\?v=\d+$/,"");let e=G(Y,r);return e?(0,ve.readFile)(e,"utf-8"):Promise.reject(`Unsafe path ${r}`)}D.ipcMain.handle("VencordOpenQuickCss",()=>D.shell.openPath(Ke));D.ipcMain.handle("VencordOpenExternal",(r,e)=>{try{var{protocol:t}=new URL(e)}catch{throw"Malformed URL"}if(!Qn.includes(t))throw"Disallowed protocol.";D.shell.openExternal(e).catch(i=>console.error("[Vencord] Failed to open external link",e,i))});D.ipcMain.handle("VencordGetQuickCss",()=>Us());D.ipcMain.handle("VencordSetQuickCss",(r,e)=>(0,Se.writeFileSync)(Ke,e));D.ipcMain.handle("VencordGetThemesList",()=>Bl());D.ipcMain.handle("VencordGetThemeData",(r,e)=>Ns(e));D.ipcMain.handle("VencordDeleteTheme",(r,e)=>{let t=G(Y,e);return t?(0,ve.unlink)(t):Promise.reject(`Unsafe path ${e}`)});D.ipcMain.handle("VencordGetThemeSystemValues",()=>{let r=D.systemPreferences.getAccentColor?.()??"";return r.length&&r[0]!=="#"&&(r=`#${r}`),{"os-accent-color":r}});D.ipcMain.handle("VencordOpenThemesFolder",()=>D.shell.openPath(Y));D.ipcMain.handle("VencordOpenSettingsFolder",()=>D.shell.openPath(pe));var _n=[];D.ipcMain.handle("VencordInitFileWatchers",({sender:r})=>{_n.forEach(n=>n.close());let e,t;(0,ve.open)(Ke,"a+").then(n=>{n.close(),e=(0,Se.watch)(Ke,{persistent:!1},dn(async()=>{r.postMessage("VencordQuickCssUpdate",await Us())},50))}).catch(()=>{});let i=(0,Se.watch)(Y,{persistent:!1},dn(()=>{r.postMessage("VencordThemeUpdate",void 0)}));_n=[e,i,t].filter(Boolean),r.once("destroyed",()=>{e?.close(),i.close(),t?.close(),_n=[]})});D.ipcMain.on("VencordGetMonacoTheme",r=>{r.returnValue=D.nativeTheme.shouldUseDarkColors?"vs-dark":"vs-light"});var le=null;D.ipcMain.handle("VencordOpenMonacoEditor",async()=>{if(le&&!le.isDestroyed()){le.show(),le.focus();return}le=new D.BrowserWindow({title:"Equicord QuickCSS Editor",autoHideMenuBar:!0,darkTheme:!0,backgroundColor:D.nativeTheme.shouldUseDarkColors?"#1e1e1e":"white",webPreferences:{preload:(0,Yt.join)(__dirname,"preload.js"),contextIsolation:!0,nodeIntegration:!1,sandbox:!1}}),le.once("closed",()=>{le=null}),Cs(le),await le.loadURL(`data:text/html;base64,${Is}`)});D.app.on("before-quit",async r=>{le&&!le.isDestroyed()&&!le.isVisible()&&(await D.dialog.showMessageBox({type:"question",buttons:["Cancel","Close Anyway"],defaultId:0,title:"QuickCSS Editor Open",message:"QuickCSS editor is still open in the background.",detail:"Do you want to close Discord anyway? This will also close the QuickCSS editor."})).response===1&&D.app.exit()});D.ipcMain.handle("VencordGetRendererCss",()=>(0,ve.readFile)(zl,"utf-8"));D.ipcMain.on("VencordPreloadGetRendererJs",r=>{r.returnValue=(0,Se.readFileSync)((0,Yt.join)(__dirname,"renderer.js"),"utf-8")});D.ipcMain.on("VencordSupportsWindowsMaterial",r=>{r.returnValue=process.platform==="win32"&&Number((0,Ms.release)().split(".")[2])>=22621});var ke=require("electron"),Dn=require("path"),Tt=require("url");fe();ge();w();var rr=require("electron");w();var Os=require("module"),Vl=(0,Os.createRequire)("/"),at,Kt,vn,Gl=";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global";try{at=Vl("worker_threads"),Kt=at.Worker,vn=at.isMarkedAsUntransferable}catch{}var Wl=Kt?function(r,e,t,i,n){var s=!1,o=new Kt(r+Gl,{eval:!0}).on("error",function(c){return n(c,null)}).on("message",function(c){return n(null,c)}).on("exit",function(c){c&&!s&&n(new Error("exited with code "+c),null)});return vn&&(i=i.filter(function(c){return!vn(c)})),o.postMessage(t,i),o.terminate=function(){return s=!0,Kt.prototype.terminate.call(o)},o}:function(r,e,t,i,n){setImmediate(function(){return n(new Error("async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)"),null)});var s=function(){};return{terminate:s,postMessage:s}},Z=Uint8Array,Ge=Uint16Array,Fs=Int32Array,yn=new Z([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),kn=new Z([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),$s=new Z([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),js=function(r,e){for(var t=new Ge(31),i=0;i<31;++i)t[i]=e+=1<>1|(R&21845)<<1,Te=(Te&52428)>>2|(Te&13107)<<2,Te=(Te&61680)>>4|(Te&3855)<<4,er[R]=((Te&65280)>>8|(Te&255)<<8)>>1;var Te,R,ot=(function(r,e,t){for(var i=r.length,n=0,s=new Ge(e);n>h]=f}else for(c=new Ge(i),n=0;n>15-r[n]);return c}),Et=new Z(288);for(R=0;R<144;++R)Et[R]=8;var R;for(R=144;R<256;++R)Et[R]=9;var R;for(R=256;R<280;++R)Et[R]=7;var R;for(R=280;R<288;++R)Et[R]=8;var R,Vs=new Z(32);for(R=0;R<32;++R)Vs[R]=5;var R;var Gs=ot(Et,9,1);var Ws=ot(Vs,5,1),Xt=function(r){for(var e=r[0],t=1;te&&(e=r[t]);return e},ce=function(r,e,t){var i=e/8|0;return(r[i]|r[i+1]<<8)>>(e&7)&t},Qt=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},Hs=function(r){return(r+7)/8|0},tr=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new Z(r.subarray(e,t))};var Zs=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],W=function(r,e,t){var i=new Error(e||Zs[r]);if(i.code=r,Error.captureStackTrace&&Error.captureStackTrace(i,W),!t)throw i;return i},Ys=function(r,e,t,i){var n=r.length,s=i?i.length:0;if(!n||e.f&&!e.l)return t||new Z(0);var o=!t,c=o||e.i!=2,h=e.i;o&&(t=new Z(n*3));var f=function(Mn){var Un=t.length;if(Mn>Un){var Nn=new Z(Math.max(Un*2,Mn));Nn.set(t),t=Nn}},d=e.f||0,g=e.p||0,u=e.b||0,_=e.l,a=e.d,l=e.m,p=e.n,m=n*8;do{if(!_){d=ce(r,g,1);var v=ce(r,g+1,3);if(g+=3,v)if(v==1)_=Gs,a=Ws,l=9,p=5;else if(v==2){var S=ce(r,g,31)+257,T=ce(r,g+10,15)+4,P=S+ce(r,g+5,31)+1;g+=14;for(var I=new Z(P),C=new Z(19),U=0;U>4;if(k<16)I[U++]=k;else{var be=0,$e=0;for(k==16?($e=3+ce(r,g,3),g+=2,be=I[U-1]):k==17?($e=3+ce(r,g,7),g+=3):k==18&&($e=11+ce(r,g,127),g+=7);$e--;)I[U++]=be}}var We=I.subarray(0,S),te=I.subarray(S);l=Xt(We),p=Xt(te),_=ot(We,l,1),a=ot(te,p,1)}else W(1);else{var k=Hs(g)+4,y=r[k-4]|r[k-3]<<8,b=k+y;if(b>n){h&&W(0);break}c&&f(u+y),t.set(r.subarray(k,b),u),e.b=u+=y,e.p=g=b*8,e.f=d;continue}if(g>m){h&&W(0);break}}c&&f(u+131072);for(var lt=(1<>4;if(g+=be&15,g>m){h&&W(0);break}if(be||W(2),Ye<256)t[u++]=Ye;else if(Ye==256){Ze=g,_=null;break}else{var An=Ye-254;if(Ye>264){var U=Ye-257,ct=yn[U];An=ce(r,g,(1<>4;ar||W(3),g+=ar&15;var te=Bs[or];if(or>3){var ct=kn[or];te+=Qt(r,g)&(1<m){h&&W(0);break}c&&f(u+131072);var Rn=u+An;if(u>>0},gn=function(r,e){return ue(r,e)+ue(r,e+4)*4294967296};function ec(r,e,t){return t||(t=e,e={}),typeof t!="function"&&W(7),Ql(r,e,[Xl],function(i){return Js(xn(i.data[0],Ks(i.data[1])))},1,t)}function xn(r,e){return Ys(r,{i:2},e&&e.out,e&&e.dictionary)}var wn=typeof TextDecoder<"u"&&new TextDecoder,tc=0;try{wn.decode(Zl,{stream:!0}),tc=1}catch{}var rc=function(r){for(var e="",t=0;;){var i=r[t++],n=(i>127)+(i>223)+(i>239);if(t+n>r.length)return{s:e,r:tr(r,t-1)};n?n==3?(i=((i&15)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,e+=String.fromCharCode(55296|i>>10,56320|i&1023)):n&1?e+=String.fromCharCode((i&31)<<6|r[t++]&63):e+=String.fromCharCode((i&15)<<12|(r[t++]&63)<<6|r[t++]&63):e+=String.fromCharCode(i)}};function nc(r,e){if(e){for(var t="",i=0;i65558)return o(W(13,0,1),null),n;var h=we(r,c+8);if(h){var f=h,d=ue(r,c+16),g=ue(r,c-20)==117853008;if(g){var u=ue(r,c-12);g=ue(r,u)==101075792,g&&(f=h=ue(r,u+32),d=ue(r,u+48))}for(var _=e&&e.filter,a=function(p){var m=sc(r,d,g),v=m[0],k=m[1],y=m[2],b=m[3],S=m[4],T=m[5],P=ic(r,T);d=S;var I=function(U,ee){U?(n(),o(U,null)):(ee&&(s[b]=ee),--h||o(null,s))};if(!_||_({name:b,size:k,originalSize:y,compression:v}))if(!v)I(null,tr(r,P,P+k));else if(v==8){var C=r.subarray(P,P+k);if(y<524288||k>.8*y)try{I(null,xn(C,{out:new Z(y)}))}catch(U){I(U,null)}else i.push(ec(C,{size:y},I))}else I(W(14,"unknown compression type "+v,1),null);else I(null,null)},l=0;l>>0,d}if(r[0]===80&&r[1]===75&&r[2]===3&&r[3]===4)return r;if(r[0]!==67||r[1]!==114||r[2]!==50||r[3]!==52)throw new Error("Invalid header: Does not start with Cr24");let t=r[4]===3,i=r[4]===2;if(!i&&!t||r[5]||r[6]||r[7])throw new Error("Unexpected crx format version number.");if(i){let o=e(r[8],r[9],r[10],r[11]),c=e(r[12],r[13],r[14],r[15]),h=16+o+c;return r.subarray(h,r.length)}let s=12+e(r[8],r[9],r[10],r[11]);return r.subarray(s,r.length)}cr();var oc=(0,En.join)(Ce,"ExtensionCache");async function lc(r,e){return await(0,ye.mkdir)(e,{recursive:!0}),new Promise((t,i)=>{Xs(r,(n,s)=>{if(n)return void i(n);Promise.all(Object.keys(s).map(async o=>{if(o.startsWith("_metadata/"))return;if(o.includes("\0"))throw new Error(`Invalid filename: "${o}"`);if(o.endsWith("/")){let g=G(e,o);if(!g)throw new Error(`Path traversal detected: "${o}"`);return void await(0,ye.mkdir)(g,{recursive:!0})}let h=o.split("/").slice(0,-1).join("/"),f=G(e,h);if(!f)throw new Error(`Path traversal detected: "${o}"`);let d=G(e,o);if(!d)throw new Error(`Path traversal detected: "${o}"`);h&&await(0,ye.mkdir)(f,{recursive:!0}),await(0,ye.writeFile)(d,s[o])})).then(()=>t()).catch(o=>{(0,ye.rm)(e,{recursive:!0,force:!0}),i(o)})})})}async function ta(r){let e=(0,En.join)(oc,r);try{await(0,ye.access)(e,ea.constants.F_OK)}catch{let i=`https://clients2.google.com/service/update2/crx?response=redirect&acceptformat=crx2,crx3&x=id%3D${r}%26uc&prodversion=${process.versions.chrome}`,n=await At(i,{headers:{"User-Agent":`Electron ${process.versions.electron} ~ Equicord (https://github.com/Equicord/Equicord)`}});await lc(Qs(n),e).catch(s=>console.error(`Failed to extract extension ${r}`,s))}rr.session.defaultSession.extensions?rr.session.defaultSession.extensions.loadExtension(e):rr.session.defaultSession.loadExtension(e)}Ut||ke.app.whenReady().then(()=>{ke.protocol.handle("vencord",({url:r})=>{let e=decodeURI(r).slice(10).replace(/\?v=\d+$/,"");if(e.endsWith("/")&&(e=e.slice(0,-1)),e.startsWith("/themes/")){let t=e.slice(8),i=G(Y,t);return i?ke.net.fetch((0,Tt.pathToFileURL)(i).toString()):new Response(null,{status:404})}switch(e){case"renderer.js.map":case"preload.js.map":case"patcher.js.map":case"main.js.map":return ke.net.fetch((0,Tt.pathToFileURL)((0,Dn.join)(__dirname,e)).toString());default:return new Response(null,{status:404})}}),ke.protocol.handle("equicord",({url:r})=>{let e=decodeURI(r).slice(11).replace(/\?v=\d+$/,"");if(e.endsWith("/")&&(e=e.slice(0,-1)),e.startsWith("/themes/")){let t=e.slice(8),i=G(Y,t);return i?ke.net.fetch((0,Tt.pathToFileURL)(i).toString()):new Response(null,{status:404})}switch(e){case"renderer.js.map":case"preload.js.map":case"patcher.js.map":case"main.js.map":return ke.net.fetch((0,Tt.pathToFileURL)((0,Dn.join)(__dirname,e)).toString());default:return new Response(null,{status:404})}});try{j.store.enableReactDevtools&&ta("fmkadmapgofadopljbjfkapdkoienihi").then(()=>console.info("[Equicord] Installed React Developer Tools")).catch(r=>console.error("[Equicord] Failed to install React Developer Tools",r))}catch{}wi()});wa(); //# sourceURL=file:///VencordPatcher //# sourceMappingURL=vencord://patcher.js.map /*! For license information please see patcher.js.LEGAL.txt */ /*! * BetterDiscord addon meta parser * Copyright 2023 BetterDiscord contributors * Copyright 2023 Vendicated and Vencord contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /*! * crxToZip * Copyright (c) 2013 Rob Wu * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ { "version": 3, "sources": ["../../scripts/build/inject/react.mjs", "../../src/shared/IpcEvents.ts", "git-remote:~git-remote", "../../src/main/updater/common.ts", "../../src/main/utils/http.ts", "git-hash:~git-hash", "../../src/shared/vencordUserAgent.ts", "../../src/main/updater/http.ts", "../../src/shared/SettingsStore.ts", "../../src/utils/mergeDefaults.ts", "../../src/main/utils/constants.ts", "../../src/main/settings.ts", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/events.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/errors.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/nodes.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/composer.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/util.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/constructor.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/emitter.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/serializer.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/representer.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/resolver.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/dumper.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/reader.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/tokens.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/scanner.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/parser.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/loader.js", "../../node_modules/.pnpm/yaml-js@0.3.1/node_modules/yaml-js/lib/yaml.js", "../../src/shared/onceDefined.ts", "file-uri:file://about.html?minify", "../../src/main/trayMenu.ts", "../../src/main/applyHostPatch.ts", "../../src/main/hostUpdateHook.ts", "../../src/main/persistAfterDiscordUpdates.ts", "../../src/main/patcher.ts", "../../src/main/index.ts", "../../src/main/ipcMain.ts", "../../src/main/updater/index.ts", "../../src/main/ipcPlugins.ts", "import-natives:~pluginNatives", "../../src/plugins/appleMusic.desktop/native.ts", "../../src/plugins/consoleShortcuts/native.ts", "../../src/plugins/fixSpotifyEmbeds.desktop/native.ts", "../../src/plugins/fixYoutubeEmbeds.desktop/native.ts", "../../src/plugins/openInApp/native.ts", "../../src/plugins/translate/native.ts", "../../src/plugins/voiceMessages/native.ts", "../../src/plugins/xsOverlay/native.ts", "../../src/plugins/youtubeAdblock.desktop/native.ts", "file-uri:file://adguard.js?minify", "../../src/equicordplugins/clipUpload.desktop/native.ts", "../../src/main/utils/ensureSafePath.ts", "../../src/equicordplugins/equicordHelper/native.ts", "../../src/main/csp/index.ts", "../../src/equicordplugins/favouriteAnything/native.ts", "../../src/equicordplugins/fileUpload/native.ts", "../../src/equicordplugins/gifMaker/native.ts", "../../src/equicordplugins/messageLoggerEnhanced/native/index.ts", "../../src/equicordplugins/messageLoggerEnhanced/native/settings.ts", "../../src/equicordplugins/messageLoggerEnhanced/native/utils.ts", "../../src/equicordplugins/messageLoggerEnhanced/native/export.ts", "../../src/equicordplugins/messageLoggerEnhanced/native/import.ts", "../../src/equicordplugins/messageLoggerEnhanced/list.ts", "../../src/equicordplugins/messageLoggerEnhanced/utils/constants.ts", "../../src/equicordplugins/questify/native.ts", "../../src/equicordplugins/richPresence/native.ts", "../../src/equicordplugins/songLink.desktop/native.ts", "../../src/equicordplugins/songSpotlight.desktop/native.ts", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/handlers.js", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/finders-B7F6qUME.js", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/core-D9kSOO4F.js", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/util.js", "../../src/equicordplugins/themeLibrary/native.ts", "../../src/equicordplugins/userpluginInstaller.dev/native.ts", "../../src/equicordplugins/userpluginInstaller.dev/misc/pluginValidate.txt", "../../src/equicordplugins/userpluginInstaller.dev/misc/setGitPath.txt", "../../src/equicordplugins/userpluginInstaller.dev/misc/updateValidate.txt", "../../src/equicordplugins/voiceMessageTranscriber.desktop/native.ts", "../../src/equicordplugins/zipPreview/native.ts", "../../src/shared/debounce.ts", "file-uri:file://monacoWin.html?minify&base64", "../../src/main/csp/manager.ts", "../../src/main/themes/index.ts", "../../src/main/utils/externalLinks.ts", "../../src/main/utils/extensions.ts", "../../node_modules/.pnpm/fflate@0.8.3/node_modules/fflate/esm/index.mjs", "../../src/main/utils/crxToZip.ts"], "sourcesContent": ["/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport const VencordFragment = /* #__PURE__*/ Symbol.for(\"react.fragment\");\nexport let VencordCreateElement =\n (...args) => (VencordCreateElement = Vencord.Webpack.Common.React.createElement)(...args);\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport const enum IpcEvents {\n INIT_FILE_WATCHERS = \"VencordInitFileWatchers\",\n QUICK_CSS_UPDATE = \"VencordQuickCssUpdate\",\n OPEN_QUICKCSS = \"VencordOpenQuickCss\",\n GET_QUICK_CSS = \"VencordGetQuickCss\",\n SET_QUICK_CSS = \"VencordSetQuickCss\",\n UPLOAD_THEME = \"VencordUploadTheme\",\n DELETE_THEME = \"VencordDeleteTheme\",\n GET_THEMES_LIST = \"VencordGetThemesList\",\n GET_THEME_DATA = \"VencordGetThemeData\",\n GET_THEME_SYSTEM_VALUES = \"VencordGetThemeSystemValues\",\n GET_SETTINGS_DIR = \"VencordGetSettingsDir\",\n GET_SETTINGS = \"VencordGetSettings\",\n SET_SETTINGS = \"VencordSetSettings\",\n THEME_UPDATE = \"VencordThemeUpdate\",\n OPEN_EXTERNAL = \"VencordOpenExternal\",\n GET_UPDATES = \"VencordGetUpdates\",\n GET_REPO = \"VencordGetRepo\",\n UPDATE = \"VencordUpdate\",\n BUILD = \"VencordBuild\",\n OPEN_MONACO_EDITOR = \"VencordOpenMonacoEditor\",\n GET_MONACO_THEME = \"VencordGetMonacoTheme\",\n\n GET_PLUGIN_IPC_METHOD_MAP = \"VencordGetPluginIpcMethodMap\",\n\n CSP_IS_DOMAIN_ALLOWED = \"VencordCspIsDomainAllowed\",\n CSP_REMOVE_OVERRIDE = \"VencordCspRemoveOverride\",\n CSP_REQUEST_ADD_OVERRIDE = \"VencordCspRequestAddOverride\",\n\n OPEN_THEMES_FOLDER = \"VencordOpenThemesFolder\",\n OPEN_SETTINGS_FOLDER = \"VencordOpenSettingsFolder\",\n GET_RENDERER_CSS = \"VencordGetRendererCss\",\n RENDERER_CSS_UPDATE = \"VencordRendererCssUpdate\",\n PRELOAD_GET_RENDERER_JS = \"VencordPreloadGetRendererJs\",\n\n SET_TRAY_UPDATE_STATE = \"VencordSetTrayUpdateState\",\n TRAY_REPAIR = \"VencordTrayRepair\",\n TRAY_CHECK_UPDATES = \"VencordTrayCheckUpdates\",\n TRAY_ABOUT = \"VencordTrayAbout\",\n SUPPORTS_WINDOWS_MATERIAL = \"VencordSupportsWindowsMaterial\",\n}\n", "export default \"Equicord/Equicord\"", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport const ASAR_FILE = IS_VESKTOP ? \"vesktop.asar\" : IS_EQUIBOP ? \"equibop.asar\" : \"desktop.asar\";\n\nexport function serializeErrors(func: (...args: any[]) => any) {\n return async function () {\n try {\n return {\n ok: true,\n value: await func(...arguments)\n };\n } catch (e: any) {\n return {\n ok: false,\n error: e instanceof Error ? {\n // prototypes get lost, so turn error into plain object\n ...e,\n message: e.message,\n name: e.name,\n stack: e.stack\n } : e\n };\n }\n };\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { createWriteStream } from \"original-fs\";\nimport { Readable } from \"stream\";\nimport { finished } from \"stream/promises\";\n\ntype Url = string | URL;\n\nexport async function checkedFetch(url: Url, options?: RequestInit) {\n try {\n var res = await fetch(url, options);\n } catch (err) {\n if (err instanceof Error && err.cause) {\n err = err.cause;\n }\n\n throw new Error(`${options?.method ?? \"GET\"} ${url} failed: ${err}`);\n }\n\n if (res.ok) {\n return res;\n }\n\n let message = `${options?.method ?? \"GET\"} ${url}: ${res.status} ${res.statusText}`;\n try {\n const reason = await res.text();\n message += `\\n${reason}`;\n } catch { }\n\n throw new Error(message);\n}\n\nexport async function fetchJson(url: Url, options?: RequestInit) {\n const res = await checkedFetch(url, options);\n return res.json() as Promise;\n}\n\nexport async function fetchBuffer(url: Url, options?: RequestInit) {\n const res = await checkedFetch(url, options);\n const buf = await res.arrayBuffer();\n\n return Buffer.from(buf);\n}\n\nexport async function downloadToFile(url: Url, path: string, options?: RequestInit) {\n const res = await checkedFetch(url, options);\n if (!res.body) {\n throw new Error(`Download ${url}: response body is empty`);\n }\n\n // @ts-expect-error weird type conflict\n const body = Readable.fromWeb(res.body);\n await finished(body.pipe(createWriteStream(path)));\n}\n", "export default \"0d27aec1ab604f1c0d7f7eb9114114e71da93573\"", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport gitHash from \"~git-hash\";\nimport gitRemote from \"~git-remote\";\n\nexport { gitHash, gitRemote };\n\nexport const gitHashShort = gitHash.slice(0, 9);\nexport const VENCORD_USER_AGENT = `Equicord/${gitHash}${gitRemote ? ` (https://github.com/${gitRemote})` : \"\"}`;\nexport const VENCORD_USER_AGENT_HASHLESS = `Equicord${gitRemote ? ` (https://github.com/${gitRemote})` : \"\"}`;\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { fetchBuffer, fetchJson } from \"@main/utils/http\";\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport { VENCORD_USER_AGENT } from \"@shared/vencordUserAgent\";\nimport { ipcMain } from \"electron\";\nimport { writeFileSync } from \"original-fs\";\n\nimport gitHash from \"~git-hash\";\nimport gitRemote from \"~git-remote\";\n\nimport { ASAR_FILE, serializeErrors } from \"./common\";\n\nconst API_BASE = `https://api.github.com/repos/${gitRemote}`;\nlet PendingUpdate: string | null = null;\n\nasync function githubGet(endpoint: string) {\n return fetchJson(API_BASE + endpoint, {\n headers: {\n Accept: \"application/vnd.github+json\",\n // \"All API requests MUST include a valid User-Agent header.\n // Requests with no User-Agent header will be rejected.\"\n \"User-Agent\": VENCORD_USER_AGENT\n }\n });\n}\n\nasync function calculateGitChanges() {\n const isOutdated = await fetchUpdates();\n if (!isOutdated) return [];\n\n const data = await githubGet(`/compare/${gitHash}...HEAD`);\n\n return data.commits.map((c: any) => ({\n hash: c.sha,\n author: c.author?.login ?? c.commit?.author?.name ?? \"Unknown Author\",\n message: c.commit.message.split(\"\\n\")[0]\n }));\n}\n\nasync function fetchUpdates() {\n const data = await githubGet(\"/releases/latest\");\n\n const hash = data.name.slice(data.name.lastIndexOf(\" \") + 1);\n if (hash === gitHash)\n return false;\n\n const asset = data.assets.find(a => a.name === ASAR_FILE);\n PendingUpdate = asset.browser_download_url;\n\n return true;\n}\n\nasync function applyUpdates() {\n if (!PendingUpdate) return true;\n\n const data = await fetchBuffer(PendingUpdate);\n writeFileSync(__dirname, data, { flush: true });\n\n PendingUpdate = null;\n\n return true;\n}\n\nipcMain.handle(IpcEvents.GET_REPO, serializeErrors(() => `https://github.com/${gitRemote}`));\nipcMain.handle(IpcEvents.GET_UPDATES, serializeErrors(calculateGitChanges));\nipcMain.handle(IpcEvents.UPDATE, serializeErrors(fetchUpdates));\nipcMain.handle(IpcEvents.BUILD, serializeErrors(applyUpdates));\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { LiteralUnion } from \"type-fest\";\n\nexport const SYM_IS_PROXY = Symbol(\"SettingsStore.isProxy\");\nexport const SYM_GET_RAW_TARGET = Symbol(\"SettingsStore.getRawTarget\");\n\n// Resolves a possibly nested prop in the form of \"some.nested.prop\" to type of T.some.nested.prop\ntype ResolvePropDeep =\n P extends `${infer Pre}.*` ?\n Pre extends keyof T\n ? T[Pre][keyof T[Pre]]\n : any\n : P extends `${infer Pre}.${infer Suf}`\n ? Pre extends keyof T\n ? ResolvePropDeep\n : any\n : P extends keyof T\n ? T[P]\n : any;\n\ninterface SettingsStoreOptions {\n readOnly?: boolean;\n getDefaultValue?: (data: {\n target: any;\n key: string;\n root: any;\n path: string;\n }) => any;\n}\n\n// merges the SettingsStoreOptions type into the class\nexport interface SettingsStore extends SettingsStoreOptions { }\n\ninterface ProxyContext {\n root: T;\n path: string;\n}\n\n/**\n * The SettingsStore allows you to easily create a mutable store that\n * has support for global and path-based change listeners.\n */\nexport class SettingsStore {\n private pathListeners = new Map void>>();\n private prefixListeners = new Map void>>();\n private globalListeners = new Set<(newData: T, path: string) => void>();\n private readonly proxyContexts = new WeakMap>();\n\n private readonly proxyHandler: ProxyHandler = (() => {\n const self = this;\n\n return {\n get(target, key: any, receiver) {\n if (key === SYM_IS_PROXY) {\n return true;\n }\n\n if (key === SYM_GET_RAW_TARGET) {\n return target;\n }\n\n let v = Reflect.get(target, key, receiver);\n\n const proxyContext = self.proxyContexts.get(target);\n if (proxyContext == null) {\n return v;\n }\n\n const { root, path } = proxyContext;\n\n if (!(key in target) && self.getDefaultValue != null) {\n v = self.getDefaultValue({\n target,\n key,\n root,\n path\n });\n }\n\n if (typeof v === \"object\" && v !== null && !v[SYM_IS_PROXY]) {\n const getPath = `${path}${path && \".\"}${key}`;\n return self.makeProxy(v, root, getPath);\n }\n\n return v;\n },\n set(target, key: string, value) {\n if (value?.[SYM_IS_PROXY]) {\n value = value[SYM_GET_RAW_TARGET];\n }\n\n if (target[key] === value) {\n return true;\n }\n\n if (!Reflect.set(target, key, value)) {\n return false;\n }\n\n const proxyContext = self.proxyContexts.get(target);\n if (proxyContext == null) {\n return true;\n }\n\n const { root, path } = proxyContext;\n\n const setPath = `${path}${path && \".\"}${key}`;\n self.notifyListeners(setPath, value, root);\n\n return true;\n },\n deleteProperty(target, key: string) {\n if (!Reflect.deleteProperty(target, key)) {\n return false;\n }\n\n const proxyContext = self.proxyContexts.get(target);\n if (proxyContext == null) {\n return true;\n }\n\n const { root, path } = proxyContext;\n\n const deletePath = `${path}${path && \".\"}${key}`;\n self.notifyListeners(deletePath, undefined, root);\n\n return true;\n }\n };\n })();\n\n /**\n * The store object. Making changes to this object will trigger the applicable change listeners\n */\n public declare store: T;\n /**\n * The plain data. Changes to this object will not trigger any change listeners\n */\n public declare plain: T;\n\n public constructor(plain: T, options: SettingsStoreOptions = {}) {\n this.plain = plain;\n this.store = this.makeProxy(plain);\n Object.assign(this, options);\n }\n\n private makeProxy(object: any, root: T = object, path = \"\") {\n this.proxyContexts.set(object, {\n root,\n path\n });\n\n return new Proxy(object, this.proxyHandler);\n }\n\n private notifyPrefixListeners(pathString: string, pathElements: string[], value: any) {\n for (let i = 1; i <= pathElements.length; i++) {\n const prefix = pathElements.slice(0, i).join(\".\");\n this.prefixListeners.get(prefix)?.forEach(cb => cb(value, pathString));\n }\n }\n\n private notifyListeners(pathStr: string, value: any, root: T) {\n const paths = pathStr.split(\".\");\n\n // Because we support any type of settings with OptionType.CUSTOM, and those objects get proxied recursively,\n // the path ends up including all the nested paths (plugins.pluginName.settingName.example.one).\n // So, we need to extract the top-level setting path (plugins.pluginName.settingName),\n // to be able to notify globalListeners and top-level setting name listeners (let { settingName } = settings.use([\"settingName\"]),\n // with the new value\n if (paths.length > 3 && paths[0] === \"plugins\") {\n const settingPath = paths.slice(0, 3);\n const settingPathStr = settingPath.join(\".\");\n const settingValue = settingPath.reduce((acc, curr) => acc[curr], root);\n\n this.globalListeners.forEach(cb => cb(root, settingPathStr));\n this.pathListeners.get(settingPathStr)?.forEach(cb => cb(settingValue));\n } else {\n this.globalListeners.forEach(cb => cb(root, pathStr));\n }\n\n this.pathListeners.get(pathStr)?.forEach(cb => cb(value));\n this.notifyPrefixListeners(pathStr, paths, value);\n }\n\n /**\n * Set the data of the store.\n * This will update this.store and this.plain (and old references to them will be stale! Avoid storing them in variables)\n *\n * Additionally, all global listeners (and those for pathToNotify, if specified) will be called with the new data\n * @param value New data\n * @param pathToNotify Optional path to notify instead of globally. Used to transfer path via ipc\n */\n public setData(value: T, pathToNotify?: string) {\n if (this.readOnly) throw new Error(\"SettingsStore is read-only\");\n\n this.plain = value;\n this.store = this.makeProxy(value);\n\n if (pathToNotify) {\n let v = value;\n\n const path = pathToNotify.split(\".\");\n for (const p of path) {\n if (!v) {\n console.warn(\n `Settings#setData: Path ${pathToNotify} does not exist in new data. Not dispatching update`\n );\n return;\n }\n v = v[p];\n }\n\n this.pathListeners.get(pathToNotify)?.forEach(cb => cb(v));\n this.notifyPrefixListeners(pathToNotify, path, v);\n }\n\n this.markAsChanged();\n }\n\n /**\n * Add a global change listener, that will fire whenever any setting is changed\n *\n * @param data The new data. This is either the new value set on the path, or the new root object if it was changed\n * @param path The path of the setting that was changed. Empty string if the root object was changed\n */\n public addGlobalChangeListener(cb: (data: any, path: string) => void) {\n this.globalListeners.add(cb);\n }\n\n /**\n * Add a scoped change listener that will fire whenever a setting matching the specified path is changed.\n *\n * For example if path is `\"foo.bar\"`, the listener will fire on\n * ```js\n * Setting.store.foo.bar = \"hi\"\n * ```\n * but not on\n * ```js\n * Setting.store.foo.baz = \"hi\"\n * ```\n */\n public addChangeListener

>(\n path: P,\n cb: (data: ResolvePropDeep) => void\n ) {\n const listeners = this.pathListeners.get(path as string) ?? new Set();\n listeners.add(cb);\n this.pathListeners.set(path as string, listeners);\n }\n\n /**\n * Add a prefix change listener that will fire whenever a setting matching the specified prefix is changed.\n * For example if prefix is `\"foo\"`, the listener will fire on\n * ```js\n * Setting.store.foo.bar = \"hi\"\n * Setting.store.foo.baz = \"hi\"\n * ```\n */\n public addPrefixChangeListener

(prefix: P, cb: (data: ResolvePropDeep, path: string) => void) {\n const listeners = this.prefixListeners.get(prefix) ?? new Set();\n listeners.add(cb);\n this.prefixListeners.set(prefix, listeners);\n }\n\n /**\n * Remove a global listener\n * @see {@link addGlobalChangeListener}\n */\n public removeGlobalChangeListener(cb: (data: any, path: string) => void) {\n this.globalListeners.delete(cb);\n }\n\n /**\n * Remove a scoped listener\n * @see {@link addChangeListener}\n */\n public removeChangeListener(path: LiteralUnion, cb: (data: any) => void) {\n const listeners = this.pathListeners.get(path as string);\n if (!listeners) return;\n\n listeners.delete(cb);\n if (!listeners.size) this.pathListeners.delete(path as string);\n }\n\n /**\n * Remove a prefix listener\n * @see {@link addPrefixChangeListener}\n */\n public removePrefixChangeListener(prefix: string, cb: (data: any, path: string) => void) {\n const listeners = this.prefixListeners.get(prefix);\n if (!listeners) return;\n\n listeners.delete(cb);\n if (!listeners.size) this.prefixListeners.delete(prefix);\n }\n\n /**\n * Call all global change listeners\n */\n public markAsChanged() {\n this.globalListeners.forEach(cb => cb(this.plain, \"\"));\n }\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\n/**\n * Recursively merges defaults into an object and returns the same object\n * @param obj Object\n * @param defaults Defaults\n * @returns obj\n */\nexport function mergeDefaults(obj: T, defaults: T): T {\n for (const key in defaults) {\n const v = defaults[key];\n if (typeof v === \"object\" && !Array.isArray(v)) {\n obj[key] ??= {} as any;\n mergeDefaults(obj[key], v);\n } else {\n obj[key] ??= v;\n }\n }\n return obj;\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { app } from \"electron\";\nimport { copyFileSync, existsSync, readFileSync, writeFileSync } from \"fs\";\nimport { join } from \"path\";\n\nconst suffix = IS_DEV ? \"dev\" : \"\";\n\nexport const DATA_DIR = process.env.EQUICORD_USER_DATA_DIR ?? (\n process.env.DISCORD_USER_DATA_DIR\n ? join(process.env.DISCORD_USER_DATA_DIR, \"..\", \"EquicordData\", suffix)\n : join(app.getPath(\"userData\"), \"..\", \"Equicord\", suffix)\n);\n\nexport const SETTINGS_DIR = join(DATA_DIR, \"settings\");\nexport const THEMES_DIR = join(DATA_DIR, \"themes\");\nexport const QUICK_CSS_PATH = join(SETTINGS_DIR, \"quickCss.css\");\nexport const SETTINGS_FILE = join(SETTINGS_DIR, \"settings.json\");\nexport const NATIVE_SETTINGS_FILE = join(SETTINGS_DIR, \"native-settings.json\");\nexport const DEV_MIGRATED = join(SETTINGS_DIR, \"migration\");\nexport const ALLOWED_PROTOCOLS = [\n \"https:\",\n \"http:\",\n \"steam:\",\n \"spotify:\",\n \"com.epicgames.launcher:\",\n \"tidal:\",\n \"itunes:\",\n \"vrcx:\",\n \"tg:\",\n];\n\nexport const IS_VANILLA = /* @__PURE__ */ process.argv.includes(\"--vanilla\");\n\nif (IS_DEV) {\n const prodDir = join(DATA_DIR, \"..\");\n const settings = join(prodDir, \"settings\", \"settings.json\");\n const quickCss = join(prodDir, \"settings\", \"quickCss.css\");\n\n let migrated = false;\n if (existsSync(DEV_MIGRATED)) {\n const content = readFileSync(DEV_MIGRATED, \"utf-8\");\n migrated = content.includes(\"migrated\");\n }\n\n if (!migrated) {\n setTimeout(() => {\n try {\n if (existsSync(settings)) copyFileSync(settings, SETTINGS_FILE);\n if (existsSync(quickCss)) copyFileSync(quickCss, QUICK_CSS_PATH);\n writeFileSync(DEV_MIGRATED, \"migrated\");\n app.relaunch();\n app.exit(0);\n } catch (err) {\n console.error(\"[Equicord] Failed to copy prod data:\", err);\n }\n }, 5000);\n }\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport type { Settings } from \"@api/Settings\";\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport { SettingsStore } from \"@shared/SettingsStore\";\nimport { mergeDefaults } from \"@utils/mergeDefaults\";\nimport { ipcMain } from \"electron\";\nimport { mkdirSync, readFileSync, writeFileSync } from \"fs\";\n\nimport { NATIVE_SETTINGS_FILE, SETTINGS_DIR, SETTINGS_FILE } from \"./utils/constants\";\n\nmkdirSync(SETTINGS_DIR, { recursive: true });\n\nfunction readSettings(name: string, file: string): Partial {\n try {\n return JSON.parse(readFileSync(file, \"utf-8\"));\n } catch (err: any) {\n if (err?.code !== \"ENOENT\")\n console.error(`Failed to read ${name} settings`, err);\n\n return {};\n }\n}\n\nexport const RendererSettings = new SettingsStore(readSettings(\"renderer\", SETTINGS_FILE));\n\nRendererSettings.addGlobalChangeListener(() => {\n try {\n writeFileSync(SETTINGS_FILE, JSON.stringify(RendererSettings.plain, null, 4));\n } catch (e) {\n console.error(\"Failed to write renderer settings\", e);\n }\n});\n\nipcMain.handle(IpcEvents.GET_SETTINGS_DIR, () => SETTINGS_DIR);\nipcMain.on(IpcEvents.GET_SETTINGS, e => e.returnValue = RendererSettings.plain);\n\nipcMain.handle(IpcEvents.SET_SETTINGS, (_, data: Settings, pathToNotify?: string) => {\n RendererSettings.setData(data, pathToNotify);\n});\n\nexport interface NativeSettings {\n plugins: {\n [plugin: string]: {\n [setting: string]: any;\n };\n };\n customCspRules: Record;\n}\n\nconst DefaultNativeSettings: NativeSettings = {\n plugins: {},\n customCspRules: {}\n};\n\nconst nativeSettings = readSettings(\"native\", NATIVE_SETTINGS_FILE);\nmergeDefaults(nativeSettings, DefaultNativeSettings);\n\nexport const NativeSettings = new SettingsStore(nativeSettings as NativeSettings);\n\nNativeSettings.addGlobalChangeListener(() => {\n try {\n writeFileSync(NATIVE_SETTINGS_FILE, JSON.stringify(NativeSettings.plain, null, 4));\n } catch (e) {\n console.error(\"Failed to write native settings\", e);\n }\n});\n", "(function() {\n this.Event = class Event {\n constructor(start_mark1, end_mark1) {\n this.start_mark = start_mark1;\n this.end_mark = end_mark1;\n }\n\n };\n\n this.NodeEvent = class NodeEvent extends this.Event {\n constructor(anchor1, start_mark, end_mark) {\n super(start_mark, end_mark);\n this.anchor = anchor1;\n }\n\n };\n\n this.CollectionStartEvent = class CollectionStartEvent extends this.NodeEvent {\n constructor(anchor, tag, implicit, start_mark, end_mark, flow_style) {\n super(anchor, start_mark, end_mark);\n this.tag = tag;\n this.implicit = implicit;\n this.flow_style = flow_style;\n }\n\n };\n\n this.CollectionEndEvent = class CollectionEndEvent extends this.Event {};\n\n this.StreamStartEvent = class StreamStartEvent extends this.Event {\n constructor(start_mark, end_mark, encoding) {\n super(start_mark, end_mark);\n this.encoding = encoding;\n }\n\n };\n\n this.StreamEndEvent = class StreamEndEvent extends this.Event {};\n\n this.DocumentStartEvent = class DocumentStartEvent extends this.Event {\n constructor(start_mark, end_mark, explicit, version, tags) {\n super(start_mark, end_mark);\n this.explicit = explicit;\n this.version = version;\n this.tags = tags;\n }\n\n };\n\n this.DocumentEndEvent = class DocumentEndEvent extends this.Event {\n constructor(start_mark, end_mark, explicit) {\n super(start_mark, end_mark);\n this.explicit = explicit;\n }\n\n };\n\n this.AliasEvent = class AliasEvent extends this.NodeEvent {};\n\n this.ScalarEvent = class ScalarEvent extends this.NodeEvent {\n constructor(anchor, tag, implicit, value, start_mark, end_mark, style) {\n super(anchor, start_mark, end_mark);\n this.tag = tag;\n this.implicit = implicit;\n this.value = value;\n this.style = style;\n }\n\n };\n\n this.SequenceStartEvent = class SequenceStartEvent extends this.CollectionStartEvent {};\n\n this.SequenceEndEvent = class SequenceEndEvent extends this.CollectionEndEvent {};\n\n this.MappingStartEvent = class MappingStartEvent extends this.CollectionStartEvent {};\n\n this.MappingEndEvent = class MappingEndEvent extends this.CollectionEndEvent {};\n\n}).call(this);\n", "(function() {\n var indexOf = [].indexOf;\n\n this.Mark = class Mark {\n constructor(line, column, buffer, pointer) {\n this.line = line;\n this.column = column;\n this.buffer = buffer;\n this.pointer = pointer;\n }\n\n get_snippet(indent = 4, max_length = 75) {\n var break_chars, end, head, ref, ref1, start, tail;\n if (this.buffer == null) {\n return null;\n }\n break_chars = '\\x00\\r\\n\\x85\\u2028\\u2029';\n head = '';\n start = this.pointer;\n while (start > 0 && (ref = this.buffer[start - 1], indexOf.call(break_chars, ref) < 0)) {\n start--;\n if (this.pointer - start > max_length / 2 - 1) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n tail = '';\n end = this.pointer;\n while (end < this.buffer.length && (ref1 = this.buffer[end], indexOf.call(break_chars, ref1) < 0)) {\n end++;\n if (end - this.pointer > max_length / 2 - 1) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n return `${(new Array(indent)).join(' ')}${head}${this.buffer.slice(start, end)}${tail}\\n${(new Array(indent + this.pointer - start + head.length)).join(' ')}^`;\n }\n\n toString() {\n var snippet, where;\n snippet = this.get_snippet();\n where = ` on line ${this.line + 1}, column ${this.column + 1}`;\n if (snippet) {\n return where;\n } else {\n return `${where}:\\n${snippet}`;\n }\n }\n\n };\n\n this.YAMLError = class YAMLError extends Error {\n constructor(message) {\n super(message);\n // Hack to get the stack on the error somehow\n Object.defineProperty(this, 'stack', {\n get: function() {\n return this.toString() + '\\n' + (new Error).stack.split('\\n').slice(1).join('\\n');\n }\n });\n }\n\n toString() {\n return this.message;\n }\n\n };\n\n this.MarkedYAMLError = class MarkedYAMLError extends this.YAMLError {\n constructor(context, context_mark, problem, problem_mark, note) {\n super();\n this.context = context;\n this.context_mark = context_mark;\n this.problem = problem;\n this.problem_mark = problem_mark;\n this.note = note;\n }\n\n toString() {\n var lines;\n lines = [];\n if (this.context != null) {\n lines.push(this.context);\n }\n if ((this.context_mark != null) && ((this.problem == null) || (this.problem_mark == null) || this.context_mark.line !== this.problem_mark.line || this.context_mark.column !== this.problem_mark.column)) {\n lines.push(this.context_mark.toString());\n }\n if (this.problem != null) {\n lines.push(this.problem);\n }\n if (this.problem_mark != null) {\n lines.push(this.problem_mark.toString());\n }\n if (this.note != null) {\n lines.push(this.note);\n }\n return lines.join('\\n');\n }\n\n };\n\n}).call(this);\n", "(function() {\n var unique_id;\n\n unique_id = 0;\n\n this.Node = class Node {\n constructor(tag1, value1, start_mark1, end_mark1) {\n this.tag = tag1;\n this.value = value1;\n this.start_mark = start_mark1;\n this.end_mark = end_mark1;\n this.unique_id = `node_${unique_id++}`;\n }\n\n };\n\n this.ScalarNode = (function() {\n class ScalarNode extends this.Node {\n constructor(tag, value, start_mark, end_mark, style) {\n super(tag, value, start_mark, end_mark);\n this.style = style;\n }\n\n };\n\n ScalarNode.prototype.id = 'scalar';\n\n return ScalarNode;\n\n }).call(this);\n\n this.CollectionNode = class CollectionNode extends this.Node {\n constructor(tag, value, start_mark, end_mark, flow_style) {\n super(tag, value, start_mark, end_mark);\n this.flow_style = flow_style;\n }\n\n };\n\n this.SequenceNode = (function() {\n class SequenceNode extends this.CollectionNode {};\n\n SequenceNode.prototype.id = 'sequence';\n\n return SequenceNode;\n\n }).call(this);\n\n this.MappingNode = (function() {\n class MappingNode extends this.CollectionNode {};\n\n MappingNode.prototype.id = 'mapping';\n\n return MappingNode;\n\n }).call(this);\n\n}).call(this);\n", "(function() {\n var MarkedYAMLError, events, nodes;\n\n events = require('./events');\n\n ({MarkedYAMLError} = require('./errors'));\n\n nodes = require('./nodes');\n\n /*\n Thrown for errors encountered during composing.\n */\n this.ComposerError = class ComposerError extends MarkedYAMLError {};\n\n /*\n The composer class handles the construction of representation trees from events.\n\n This uses the methods from {Parser} to process the event stream, and provides a similar stream-like\n interface to representation trees via {Composer#check_node}, {Composer#get_node}, and\n {Composer#get_single_node}.\n */\n this.Composer = (function() {\n var ctor;\n\n class Composer {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n /*\n Initialise a `Composer` instance.\n */\n initialise() {\n // @property {Object} A mapping from anchor names to nodes.\n return this.anchors = {};\n }\n\n /*\n Checks if a document can be composed from the event stream.\n\n So long as the event stream hasn't ended (no [StreamEndEvent]), another document can be composed.\n\n @return {Boolean} True if a document can be composed, false otherwise.\n */\n check_node() {\n if (this.check_event(events.StreamStartEvent)) {\n // Drop the STREAM-START event.\n this.get_event();\n }\n // Are there more documents available?\n return !this.check_event(events.StreamEndEvent);\n }\n\n /*\n Compose a document from the remaining event stream.\n\n {Composer#check_node} must be called before calling this method.\n\n @return {Node} The next document in the stream. Returns `undefined` if the event stream has ended.\n */\n get_node() {\n if (!this.check_event(events.StreamEndEvent)) {\n return this.compose_document();\n }\n }\n\n /*\n Compose a single document from the entire event stream.\n\n @throw {ComposerError} if there's more than one document is in the stream.\n\n @return {Node} The single document in the stream.\n */\n get_single_node() {\n var document, event;\n // Drop the STREAM-START event.\n this.get_event();\n // Compose a document if the stream is not empty.\n document = null;\n if (!this.check_event(events.StreamEndEvent)) {\n document = this.compose_document();\n }\n // Ensure that the stream contains no more documents.\n if (!this.check_event(events.StreamEndEvent)) {\n event = this.get_event();\n throw new exports.ComposerError('expected a single document in the stream', document.start_mark, 'but found another document', event.start_mark);\n }\n // Drop the STREAM-END event.\n this.get_event();\n return document;\n }\n\n /*\n Compose a document node from the event stream.\n\n A 'document' node is any single {Node} subclass. {DocumentStart} and {DocumentEnd} events delimit\n the events used for composition.\n\n @private\n\n @return {Node} The document node.\n */\n compose_document() {\n var node;\n // Drop the DOCUMENT-START event.\n this.get_event();\n // Compose the root node.\n node = this.compose_node();\n // Drop the DOCUMENT-END node.\n this.get_event();\n // Reset the anchors\n this.anchors = {};\n return node;\n }\n\n /*\n Compose a node from the event stream.\n\n Composes a {ScalarNode}, {SequenceNode}, or {MappingNode} from the event stream, depending on the\n first event encountered ({ScalarEvent}, {SequenceStartEvent}, or {MappingStartEvent}\n respectively).\n\n @private\n\n @param parent {Node} The parent of the new node.\n @param index {Number} The index of the new node within the parent's children.\n @throw {ComposerError} if an alias is encountered for an undefined anchor.\n @throw {ComposerError} if a duplicate anchor is envountered.\n @return {Node} The composed node.\n */\n compose_node(parent, index) {\n var anchor, event, node;\n if (this.check_event(events.AliasEvent)) {\n event = this.get_event();\n anchor = event.anchor;\n if (!(anchor in this.anchors)) {\n throw new exports.ComposerError(null, null, `found undefined alias ${anchor}`, event.start_mark);\n }\n return this.anchors[anchor];\n }\n event = this.peek_event();\n anchor = event.anchor;\n if (anchor !== null && anchor in this.anchors) {\n throw new exports.ComposerError(`found duplicate anchor ${anchor}; first occurence`, this.anchors[anchor].start_mark, 'second occurrence', event.start_mark);\n }\n this.descend_resolver(parent, index);\n if (this.check_event(events.ScalarEvent)) {\n node = this.compose_scalar_node(anchor);\n } else if (this.check_event(events.SequenceStartEvent)) {\n node = this.compose_sequence_node(anchor);\n } else if (this.check_event(events.MappingStartEvent)) {\n node = this.compose_mapping_node(anchor);\n }\n this.ascend_resolver();\n return node;\n }\n\n /*\n Compose a {ScalarNode} from the event stream.\n\n @private\n\n @param anchor {String} The anchor name for the node (if any).\n @return {ScalarNode} The node composed from a {ScalarEvent}.\n */\n compose_scalar_node(anchor) {\n var event, node, tag;\n event = this.get_event();\n tag = event.tag;\n if (tag === null || tag === '!') {\n tag = this.resolve(nodes.ScalarNode, event.value, event.implicit);\n }\n node = new nodes.ScalarNode(tag, event.value, event.start_mark, event.end_mark, event.style);\n if (anchor !== null) {\n this.anchors[anchor] = node;\n }\n return node;\n }\n\n /*\n Compose a {SequenceNode} from the event stream.\n\n The contents of the node are composed from events between a {SequenceStartEvent} and a\n {SequenceEndEvent}.\n\n @private\n\n @param anchor {String} The anchor name for the node (if any).\n @return {SequenceNode} The composed node.\n */\n compose_sequence_node(anchor) {\n var end_event, index, node, start_event, tag;\n start_event = this.get_event();\n tag = start_event.tag;\n if (tag === null || tag === '!') {\n tag = this.resolve(nodes.SequenceNode, null, start_event.implicit);\n }\n node = new nodes.SequenceNode(tag, [], start_event.start_mark, null, start_event.flow_style);\n if (anchor !== null) {\n this.anchors[anchor] = node;\n }\n index = 0;\n while (!this.check_event(events.SequenceEndEvent)) {\n node.value.push(this.compose_node(node, index));\n index++;\n }\n end_event = this.get_event();\n node.end_mark = end_event.end_mark;\n return node;\n }\n\n /*\n Compose a {MappingNode} from the event stream.\n\n The contents of the node are composed from events between a {MappingStartEvent} and a\n {MappingEndEvent}.\n\n @private\n\n @param anchor {String} The anchor name for the node (if any).\n @return {MappingNode} The composed node.\n */\n compose_mapping_node(anchor) {\n var end_event, item_key, item_value, node, start_event, tag;\n start_event = this.get_event();\n tag = start_event.tag;\n if (tag === null || tag === '!') {\n tag = this.resolve(nodes.MappingNode, null, start_event.implicit);\n }\n node = new nodes.MappingNode(tag, [], start_event.start_mark, null, start_event.flow_style);\n if (anchor !== null) {\n this.anchors[anchor] = node;\n }\n while (!this.check_event(events.MappingEndEvent)) {\n item_key = this.compose_node(node);\n item_value = this.compose_node(node, item_key);\n node.value.push([item_key, item_value]);\n }\n end_event = this.get_event();\n node.end_mark = end_event.end_mark;\n return node;\n }\n\n };\n\n ctor = Composer.prototype.initialise;\n\n return Composer;\n\n }).call(this);\n\n}).call(this);\n", "(function() {\n /*\n A small class to stand-in for a stream when you simply want to write to a string.\n */\n var ref, ref1, ref2,\n hasProp = {}.hasOwnProperty;\n\n this.StringStream = class StringStream {\n constructor() {\n this.string = '';\n }\n\n write(chunk) {\n return this.string += chunk;\n }\n\n };\n\n this.clone = (obj) => {\n return Object.assign({}, obj);\n };\n\n this.extend = function(destination, ...sources) {\n var i, j, len, len1, name, ref, source;\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n while (source !== Object.prototype) {\n ref = Object.getOwnPropertyNames(source);\n for (j = 0, len1 = ref.length; j < len1; j++) {\n name = ref[j];\n if (destination[name] == null) {\n destination[name] = source[name];\n }\n }\n source = Object.getPrototypeOf(source);\n }\n }\n return destination;\n };\n\n this.is_empty = function(obj) {\n var key;\n if (Array.isArray(obj) || typeof obj === 'string') {\n return obj.length === 0;\n }\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n return false;\n }\n return true;\n };\n\n this.inspect = (ref = (ref1 = (ref2 = require('util')) != null ? ref2.inspect : void 0) != null ? ref1 : global.inspect) != null ? ref : function(a) {\n return `${a}`;\n };\n\n this.pad_left = function(str, char, length) {\n str = String(str);\n if (str.length >= length) {\n return str;\n } else if (str.length + 1 === length) {\n return `${char}${str}`;\n } else {\n return `${new Array(length - str.length + 1).join(char)}${str}`;\n }\n };\n\n this.to_hex = function(num) {\n if (typeof num === 'string') {\n num = num.charCodeAt(0);\n }\n return num.toString(16);\n };\n\n}).call(this);\n", "(function() {\n var MarkedYAMLError, nodes, util,\n indexOf = [].indexOf;\n\n ({MarkedYAMLError} = require('./errors'));\n\n nodes = require('./nodes');\n\n util = require('./util');\n\n /*\n Thrown for errors encountered during construction.\n */\n this.ConstructorError = class ConstructorError extends MarkedYAMLError {};\n\n /*\n The constructor class handles the construction of Javascript objects from representation trees\n ({Node}s).\n\n This uses the methods from {Composer} to process the representation stream, and provides a similar\n stream-like interface to Javascript objects via {BaseConstructor#check_node},\n {BaseConstructor#get_node}, and {BaseConstructor#get_single_node}.\n */\n this.BaseConstructor = (function() {\n var ctor;\n\n class BaseConstructor {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n /*\n Add a constructor function for a specific tag.\n\n The constructor will be used to turn {Node Nodes} with the given tag into a Javascript object.\n\n @param tag {String} The tag for which the constructor should apply.\n @param constructor {Function} A function that turns a {Node} with the given tag into a\n Javascript object.\n @return {Function} Returns the supplied `constructor`.\n */\n static add_constructor(tag, constructor) {\n if (!this.prototype.hasOwnProperty('yaml_constructors')) {\n this.prototype.yaml_constructors = util.extend({}, this.prototype.yaml_constructors);\n }\n return this.prototype.yaml_constructors[tag] = constructor;\n }\n\n /*\n Add a constructor function for a tag prefix.\n\n The constructor will be used to turn {Node Nodes} with the given tag prefix into a Javascript\n object.\n\n @param tag_prefix {String} The tag prefix for which the constructor should apply.\n @param multi_constructor {Function} A function that turns a {Node} with the given tag\n prefix into a Javascript object.\n @return {Function} Returns the supplied `multi_constructor`.\n */\n static add_multi_constructor(tag_prefix, multi_constructor) {\n if (!this.prototype.hasOwnProperty('yaml_multi_constructors')) {\n this.prototype.yaml_multi_constructors = util.extend({}, this.prototype.yaml_multi_constructors);\n }\n return this.prototype.yaml_multi_constructors[tag_prefix] = multi_constructor;\n }\n\n /*\n Initialise a new instance.\n */\n initialise() {\n // @param {Object} A map from {Node#unique_id} to the constructed Javascript object for the node.\n this.constructed_objects = {};\n // @param {Array} An array of {Node#unique_id}s that are being constructed.\n this.constructing_nodes = [];\n // @param {Function} An array of functions to be exectied after docmuent construction.\n return this.deferred_constructors = [];\n }\n\n /*\n Checks if a document can be constructed from the representation stream.\n\n So long as the representation stream hasn't ended, another document can be constructed.\n\n @return {Boolean} True if a document can be constructed, false otherwise.\n */\n check_data() {\n return this.check_node();\n }\n\n /*\n Construct a document from the remaining representation stream.\n\n {Constructor#check_data} must be called before calling this method.\n\n @return {any} The next document in the stream. Returns `undefined` if the stream has ended.\n */\n get_data() {\n if (this.check_node()) {\n return this.construct_document(this.get_node());\n }\n }\n\n /*\n Construct a single document from the entire representation stream.\n\n @throw {ComposerError} if there's more than one document is in the stream.\n\n @return {Node} The single document in the stream.\n */\n get_single_data() {\n var node;\n node = this.get_single_node();\n if (node != null) {\n return this.construct_document(node);\n }\n return null;\n }\n\n /*\n Construct a document node\n\n @private\n */\n construct_document(node) {\n var data;\n data = this.construct_object(node);\n while (!util.is_empty(this.deferred_constructors)) {\n this.deferred_constructors.pop()();\n }\n return data;\n }\n\n defer(f) {\n return this.deferred_constructors.push(f);\n }\n\n construct_object(node) {\n var constructor, object, ref, tag_prefix, tag_suffix;\n if (node.unique_id in this.constructed_objects) {\n return this.constructed_objects[node.unique_id];\n }\n if (ref = node.unique_id, indexOf.call(this.constructing_nodes, ref) >= 0) {\n throw new exports.ConstructorError(null, null, 'found unconstructable recursive node', node.start_mark);\n }\n this.constructing_nodes.push(node.unique_id);\n constructor = null;\n tag_suffix = null;\n if (node.tag in this.yaml_constructors) {\n constructor = this.yaml_constructors[node.tag];\n } else {\n for (tag_prefix in this.yaml_multi_constructors) {\n if (node.tag.indexOf(tag_prefix === 0)) {\n tag_suffix = node.tag.slice(tag_prefix.length);\n constructor = this.yaml_multi_constructors[tag_prefix];\n break;\n }\n }\n if (constructor == null) {\n if (null in this.yaml_multi_constructors) {\n tag_suffix = node.tag;\n constructor = this.yaml_multi_constructors[null];\n } else if (null in this.yaml_constructors) {\n constructor = this.yaml_constructors[null];\n } else if (node instanceof nodes.ScalarNode) {\n constructor = this.construct_scalar;\n } else if (node instanceof nodes.SequenceNode) {\n constructor = this.construct_sequence;\n } else if (node instanceof nodes.MappingNode) {\n constructor = this.construct_mapping;\n }\n }\n }\n object = constructor.call(this, tag_suffix != null ? tag_suffix : node, node);\n this.constructed_objects[node.unique_id] = object;\n this.constructing_nodes.pop();\n return object;\n }\n\n construct_scalar(node) {\n if (!(node instanceof nodes.ScalarNode)) {\n throw new exports.ConstructorError(null, null, `expected a scalar node but found ${node.id}`, node.start_mark);\n }\n return node.value;\n }\n\n construct_sequence(node) {\n var child, i, len, ref, results;\n if (!(node instanceof nodes.SequenceNode)) {\n throw new exports.ConstructorError(null, null, `expected a sequence node but found ${node.id}`, node.start_mark);\n }\n ref = node.value;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n results.push(this.construct_object(child));\n }\n return results;\n }\n\n construct_mapping(node) {\n var i, key, key_node, len, mapping, ref, value, value_node;\n if (!(node instanceof nodes.MappingNode)) {\n throw new ConstructorError(null, null, `expected a mapping node but found ${node.id}`, node.start_mark);\n }\n mapping = {};\n ref = node.value;\n for (i = 0, len = ref.length; i < len; i++) {\n [key_node, value_node] = ref[i];\n key = this.construct_object(key_node);\n if (typeof key === 'object') {\n throw new exports.ConstructorError('while constructing a mapping', node.start_mark, 'found unhashable key', key_node.start_mark);\n }\n value = this.construct_object(value_node);\n mapping[key] = value;\n }\n return mapping;\n }\n\n construct_pairs(node) {\n var i, key, key_node, len, pairs, ref, value, value_node;\n if (!(node instanceof nodes.MappingNode)) {\n throw new exports.ConstructorError(null, null, `expected a mapping node but found ${node.id}`, node.start_mark);\n }\n pairs = [];\n ref = node.value;\n for (i = 0, len = ref.length; i < len; i++) {\n [key_node, value_node] = ref[i];\n key = this.construct_object(key_node);\n value = this.construct_object(value_node);\n pairs.push([key, value]);\n }\n return pairs;\n }\n\n };\n\n /*\n @property {Object} A map from a YAML tag to a constructor function for data with that tag.\n @private\n */\n BaseConstructor.prototype.yaml_constructors = {};\n\n /*\n @property {Object} A map from a YAML tag prefix to a constructor function for data with that tag\n prefix.\n @private\n */\n BaseConstructor.prototype.yaml_multi_constructors = {};\n\n ctor = BaseConstructor.prototype.initialise;\n\n return BaseConstructor;\n\n }).call(this);\n\n this.Constructor = (function() {\n var BOOL_VALUES, TIMESTAMP_PARTS, TIMESTAMP_REGEX;\n\n class Constructor extends this.BaseConstructor {\n construct_scalar(node) {\n var i, key_node, len, ref, value_node;\n if (node instanceof nodes.MappingNode) {\n ref = node.value;\n for (i = 0, len = ref.length; i < len; i++) {\n [key_node, value_node] = ref[i];\n if (key_node.tag === 'tag:yaml.org,2002:value') {\n return this.construct_scalar(value_node);\n }\n }\n }\n return super.construct_scalar(node);\n }\n\n flatten_mapping(node) {\n var i, index, j, key_node, len, len1, merge, ref, submerge, subnode, value, value_node;\n merge = [];\n index = 0;\n while (index < node.value.length) {\n [key_node, value_node] = node.value[index];\n if (key_node.tag === 'tag:yaml.org,2002:merge') {\n node.value.splice(index, 1);\n //delete node.value[index]\n if (value_node instanceof nodes.MappingNode) {\n this.flatten_mapping(value_node);\n merge = merge.concat(value_node.value);\n } else if (value_node instanceof nodes.SequenceNode) {\n submerge = [];\n ref = value_node.value;\n for (i = 0, len = ref.length; i < len; i++) {\n subnode = ref[i];\n if (!(subnode instanceof nodes.MappingNode)) {\n throw new exports.ConstructorError('while constructing a mapping', node.start_mark, `expected a mapping for merging, but found ${subnode.id}`, subnode.start_mark);\n }\n this.flatten_mapping(subnode);\n submerge.push(subnode.value);\n }\n submerge.reverse();\n for (j = 0, len1 = submerge.length; j < len1; j++) {\n value = submerge[j];\n merge = merge.concat(value);\n }\n } else {\n throw new exports.ConstructorError('while constructing a mapping', node.start_mark, `expected a mapping or list of mappings for merging but found ${value_node.id}`, value_node.start_mark);\n }\n } else if (key_node.tag === 'tag:yaml.org,2002:value') {\n key_node.tag = 'tag:yaml.org,2002:str';\n index++;\n } else {\n index++;\n }\n }\n if (merge.length) {\n return node.value = merge.concat(node.value);\n }\n }\n\n construct_mapping(node) {\n if (node instanceof nodes.MappingNode) {\n this.flatten_mapping(node);\n }\n return super.construct_mapping(node);\n }\n\n construct_yaml_null(node) {\n this.construct_scalar(node);\n return null;\n }\n\n construct_yaml_bool(node) {\n var value;\n value = this.construct_scalar(node);\n return BOOL_VALUES[value.toLowerCase()];\n }\n\n construct_yaml_int(node) {\n var base, digit, digits, i, len, part, ref, sign, value;\n value = this.construct_scalar(node);\n value = value.replace(/_/g, '');\n sign = value[0] === '-' ? -1 : 1;\n if (ref = value[0], indexOf.call('+-', ref) >= 0) {\n value = value.slice(1);\n }\n if (value === '0') {\n return 0;\n } else if (value.indexOf('0b') === 0) {\n return sign * parseInt(value.slice(2), 2);\n } else if (value.indexOf('0x') === 0) {\n return sign * parseInt(value.slice(2), 16);\n } else if (value.indexOf('0o') === 0) {\n return sign * parseInt(value.slice(2), 8);\n } else if (value[0] === '0') {\n return sign * parseInt(value, 8);\n } else if (indexOf.call(value, ':') >= 0) {\n digits = (function() {\n var i, len, ref1, results;\n ref1 = value.split(/:/g);\n results = [];\n for (i = 0, len = ref1.length; i < len; i++) {\n part = ref1[i];\n results.push(parseInt(part));\n }\n return results;\n })();\n digits.reverse();\n base = 1;\n value = 0;\n for (i = 0, len = digits.length; i < len; i++) {\n digit = digits[i];\n value += digit * base;\n base *= 60;\n }\n return sign * value;\n } else {\n return sign * parseInt(value);\n }\n }\n\n construct_yaml_float(node) {\n var base, digit, digits, i, len, part, ref, sign, value;\n value = this.construct_scalar(node);\n value = value.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n if (ref = value[0], indexOf.call('+-', ref) >= 0) {\n value = value.slice(1);\n }\n if (value === '.inf') {\n return sign * 2e308;\n } else if (value === '.nan') {\n return 0/0;\n } else if (indexOf.call(value, ':') >= 0) {\n digits = (function() {\n var i, len, ref1, results;\n ref1 = value.split(/:/g);\n results = [];\n for (i = 0, len = ref1.length; i < len; i++) {\n part = ref1[i];\n results.push(parseFloat(part));\n }\n return results;\n })();\n digits.reverse();\n base = 1;\n value = 0.0;\n for (i = 0, len = digits.length; i < len; i++) {\n digit = digits[i];\n value += digit * base;\n base *= 60;\n }\n return sign * value;\n } else {\n return sign * parseFloat(value);\n }\n }\n\n construct_yaml_binary(node) {\n var error, value;\n value = this.construct_scalar(node);\n try {\n if (typeof window !== \"undefined\" && window !== null) {\n return atob(value);\n }\n return new Buffer(value, 'base64').toString('ascii');\n } catch (error1) {\n error = error1;\n throw new exports.ConstructorError(null, null, `failed to decode base64 data: ${error}`, node.start_mark);\n }\n }\n\n construct_yaml_timestamp(node) {\n var date, day, fraction, hour, index, key, match, millisecond, minute, month, second, tz_hour, tz_minute, tz_sign, value, values, year;\n value = this.construct_scalar(node);\n match = node.value.match(TIMESTAMP_REGEX);\n values = {};\n for (key in TIMESTAMP_PARTS) {\n index = TIMESTAMP_PARTS[key];\n values[key] = match[index];\n }\n year = parseInt(values.year);\n month = parseInt(values.month) - 1;\n day = parseInt(values.day);\n if (!values.hour) {\n return new Date(Date.UTC(year, month, day));\n }\n hour = parseInt(values.hour);\n minute = parseInt(values.minute);\n second = parseInt(values.second);\n millisecond = 0;\n if (values.fraction) {\n fraction = values.fraction.slice(0, 6);\n while (fraction.length < 6) {\n fraction += '0';\n }\n fraction = parseInt(fraction);\n millisecond = Math.round(fraction / 1000);\n }\n if (values.tz_sign) {\n tz_sign = values.tz_sign === '-' ? 1 : -1;\n if (tz_hour = parseInt(values.tz_hour)) {\n hour += tz_sign * tz_hour;\n }\n if (tz_minute = parseInt(values.tz_minute)) {\n minute += tz_sign * tz_minute;\n }\n }\n date = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));\n return date;\n }\n\n construct_yaml_pair_list(type, node) {\n var list;\n list = [];\n if (!(node instanceof nodes.SequenceNode)) {\n throw new exports.ConstructorError(`while constructing ${type}`, node.start_mark, `expected a sequence but found ${node.id}`, node.start_mark);\n }\n this.defer(() => {\n var i, key, key_node, len, ref, results, subnode, value, value_node;\n ref = node.value;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n subnode = ref[i];\n if (!(subnode instanceof nodes.MappingNode)) {\n throw new exports.ConstructorError(`while constructing ${type}`, node.start_mark, `expected a mapping of length 1 but found ${subnode.id}`, subnode.start_mark);\n }\n if (subnode.value.length !== 1) {\n throw new exports.ConstructorError(`while constructing ${type}`, node.start_mark, `expected a mapping of length 1 but found ${subnode.id}`, subnode.start_mark);\n }\n [key_node, value_node] = subnode.value[0];\n key = this.construct_object(key_node);\n value = this.construct_object(value_node);\n results.push(list.push([key, value]));\n }\n return results;\n });\n return list;\n }\n\n construct_yaml_omap(node) {\n return this.construct_yaml_pair_list('an ordered map', node);\n }\n\n construct_yaml_pairs(node) {\n return this.construct_yaml_pair_list('pairs', node);\n }\n\n construct_yaml_set(node) {\n var data;\n data = [];\n this.defer(() => {\n var item, results;\n results = [];\n for (item in this.construct_mapping(node)) {\n results.push(data.push(item));\n }\n return results;\n });\n return data;\n }\n\n construct_yaml_str(node) {\n return this.construct_scalar(node);\n }\n\n construct_yaml_seq(node) {\n var data;\n data = [];\n this.defer(() => {\n var i, item, len, ref, results;\n ref = this.construct_sequence(node);\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n item = ref[i];\n results.push(data.push(item));\n }\n return results;\n });\n return data;\n }\n\n construct_yaml_map(node) {\n var data;\n data = {};\n this.defer(() => {\n var key, ref, results, value;\n ref = this.construct_mapping(node);\n results = [];\n for (key in ref) {\n value = ref[key];\n results.push(data[key] = value);\n }\n return results;\n });\n return data;\n }\n\n construct_yaml_object(node, klass) {\n var data;\n data = new klass;\n this.defer(() => {\n var key, ref, results, value;\n ref = this.construct_mapping(node, true);\n results = [];\n for (key in ref) {\n value = ref[key];\n results.push(data[key] = value);\n }\n return results;\n });\n return data;\n }\n\n construct_undefined(node) {\n throw new exports.ConstructorError(null, null, `could not determine a constructor for the tag ${node.tag}`, node.start_mark);\n }\n\n };\n\n BOOL_VALUES = {\n on: true,\n off: false,\n true: true,\n false: false,\n yes: true,\n no: false\n };\n\n TIMESTAMP_REGEX = /^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[\\x20\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[\\x20\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?)?$/; // 1: year\n // 2: month\n // 3: day\n // 4: hour\n // 5: minute\n // 6: second\n // 7: fraction\n // 9: tz_sign\n // 10: tz_hour\n // 11: tz_minute\n // 8: tz\n\n TIMESTAMP_PARTS = {\n year: 1,\n month: 2,\n day: 3,\n hour: 4,\n minute: 5,\n second: 6,\n fraction: 7,\n tz: 8,\n tz_sign: 9,\n tz_hour: 10,\n tz_minute: 11\n };\n\n return Constructor;\n\n }).call(this);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:null', this.Constructor.prototype.construct_yaml_null);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:bool', this.Constructor.prototype.construct_yaml_bool);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:int', this.Constructor.prototype.construct_yaml_int);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:float', this.Constructor.prototype.construct_yaml_float);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:binary', this.Constructor.prototype.construct_yaml_binary);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:timestamp', this.Constructor.prototype.construct_yaml_timestamp);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:omap', this.Constructor.prototype.construct_yaml_omap);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:pairs', this.Constructor.prototype.construct_yaml_pairs);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:set', this.Constructor.prototype.construct_yaml_set);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:str', this.Constructor.prototype.construct_yaml_str);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:seq', this.Constructor.prototype.construct_yaml_seq);\n\n this.Constructor.add_constructor('tag:yaml.org,2002:map', this.Constructor.prototype.construct_yaml_map);\n\n this.Constructor.add_constructor(null, this.Constructor.prototype.construct_undefined);\n\n}).call(this);\n", "(function() {\n var ScalarAnalysis, YAMLError, events, util,\n hasProp = {}.hasOwnProperty,\n indexOf = [].indexOf;\n\n events = require('./events');\n\n util = require('./util');\n\n ({YAMLError} = require('./errors'));\n\n this.EmitterError = class EmitterError extends YAMLError {};\n\n /*\n Emitter expects events obeying the following grammar:\n\n stream ::= STREAM-START document* STREAM-END\n document ::= DOCUMENT-START node DOCUMENT-END\n node ::= SCALA | sequence | mapping\n sequence ::= SEQUENCE-START node* SEQUENCE-END\n mapping ::= MAPPING-START (node node)* MAPPING-END\n */\n this.Emitter = (function() {\n var C_WHITESPACE, DEFAULT_TAG_PREFIXES, ESCAPE_REPLACEMENTS, ctor;\n\n class Emitter {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n initialise(stream, options) {\n var ref;\n this.stream = stream;\n // Encoding can be overriden by STREAM-START\n this.encoding = null;\n // Emitter is a state machine with a stack of states to handle nested structures.\n this.states = [];\n this.state = this.expect_stream_start;\n // Current event and the event queue\n this.events = [];\n this.event = null;\n // The current indentation level and the stack of previous indents.\n this.indents = [];\n this.indent = null;\n // Flow level.\n this.flow_level = 0;\n // Contexts.\n this.root_context = false;\n this.sequence_context = false;\n this.mapping_context = false;\n this.simple_key_context = false;\n // Characteristics of the last emitted character:\n // - current position.\n // - is it a whitespace?\n // - is it an indentation character (indentation space, '-', '?', or ':')?\n this.line = 0;\n this.column = 0;\n this.whitespace = true;\n this.indentation = true;\n // Whether the document requires an explicit document indicator.\n this.open_ended = false;\n // Formatting details\n ({canonical: this.canonical, allow_unicode: this.allow_unicode} = options);\n if (this.canonical == null) {\n this.canonical = false;\n }\n if (this.allow_unicode == null) {\n this.allow_unicode = true;\n }\n this.best_indent = 1 < options.indent && options.indent < 10 ? options.indent : 2;\n this.best_width = options.width > this.indent * 2 ? options.width : 80;\n this.best_line_break = (ref = options.line_break) === '\\r' || ref === '\\n' || ref === '\\r\\n' ? options.line_break : '\\n';\n // Tag prefixes.\n this.tag_prefixes = null;\n // Prepared anchor and tag\n this.prepared_anchor = null;\n this.prepared_tag = null;\n // Scalar analysis and style.\n this.analysis = null;\n return this.style = null;\n }\n\n /*\n Reset the state attributes (to clear self-references)\n */\n dispose() {\n this.states = [];\n return this.state = null;\n }\n\n emit(event) {\n var results;\n this.events.push(event);\n results = [];\n while (!this.need_more_events()) {\n this.event = this.events.shift();\n this.state();\n results.push(this.event = null);\n }\n return results;\n }\n\n /*\n In some cases, we wait for a few next events before emitting.\n */\n need_more_events() {\n var event;\n if (this.events.length === 0) {\n return true;\n }\n event = this.events[0];\n if (event instanceof events.DocumentStartEvent) {\n return this.need_events(1);\n } else if (event instanceof events.SequenceStartEvent) {\n return this.need_events(2);\n } else if (event instanceof events.MappingStartEvent) {\n return this.need_events(3);\n } else {\n return false;\n }\n }\n\n need_events(count) {\n var event, i, len, level, ref;\n level = 0;\n ref = this.events.slice(1);\n for (i = 0, len = ref.length; i < len; i++) {\n event = ref[i];\n if (event instanceof events.DocumentStartEvent || event instanceof events.CollectionStartEvent) {\n level++;\n } else if (event instanceof events.DocumentEndEvent || event instanceof events.CollectionEndEvent) {\n level--;\n } else if (event instanceof events.StreamEndEvent) {\n level = -1;\n }\n if (level < 0) {\n return false;\n }\n }\n return this.events.length < count + 1;\n }\n\n increase_indent(options = {}) {\n this.indents.push(this.indent);\n if (this.indent == null) {\n return this.indent = options.flow ? this.best_indent : 0;\n } else if (!options.indentless) {\n return this.indent += this.best_indent;\n }\n }\n\n // Stream states\n expect_stream_start() {\n if (this.event instanceof events.StreamStartEvent) {\n if (this.event.encoding && !('encoding' in this.stream)) {\n this.encoding = this.event.encoding;\n }\n this.write_stream_start();\n return this.state = this.expect_first_document_start;\n } else {\n return this.error('expected StreamStartEvent, but got', this.event);\n }\n }\n\n expect_nothing() {\n return this.error('expected nothing, but got', this.event);\n }\n\n // Document states\n expect_first_document_start() {\n return this.expect_document_start(true);\n }\n\n expect_document_start(first = false) {\n var explicit, handle, i, k, len, prefix, ref;\n if (this.event instanceof events.DocumentStartEvent) {\n if ((this.event.version || this.event.tags) && this.open_ended) {\n this.write_indicator('...', true);\n this.write_indent();\n }\n if (this.event.version) {\n this.write_version_directive(this.prepare_version(this.event.version));\n }\n this.tag_prefixes = util.clone(DEFAULT_TAG_PREFIXES);\n if (this.event.tags) {\n ref = ((function() {\n var ref, results;\n ref = this.event.tags;\n results = [];\n for (k in ref) {\n if (!hasProp.call(ref, k)) continue;\n results.push(k);\n }\n return results;\n }).call(this)).sort();\n for (i = 0, len = ref.length; i < len; i++) {\n handle = ref[i];\n prefix = this.event.tags[handle];\n this.tag_prefixes[prefix] = handle;\n this.write_tag_directive(this.prepare_tag_handle(handle), this.prepare_tag_prefix(prefix));\n }\n }\n explicit = !first || this.event.explicit || this.canonical || this.event.version || this.event.tags || this.check_empty_document();\n if (explicit) {\n this.write_indent();\n this.write_indicator('---', true);\n if (this.canonical) {\n this.write_indent();\n }\n }\n return this.state = this.expect_document_root;\n } else if (this.event instanceof events.StreamEndEvent) {\n if (this.open_ended) {\n this.write_indicator('...', true);\n this.write_indent();\n }\n this.write_stream_end();\n return this.state = this.expect_nothing;\n } else {\n return this.error('expected DocumentStartEvent, but got', this.event);\n }\n }\n\n expect_document_end() {\n if (this.event instanceof events.DocumentEndEvent) {\n this.write_indent();\n if (this.event.explicit) {\n this.write_indicator('...', true);\n this.write_indent();\n }\n this.flush_stream();\n return this.state = this.expect_document_start;\n } else {\n return this.error('expected DocumentEndEvent, but got', this.event);\n }\n }\n\n expect_document_root() {\n this.states.push(this.expect_document_end);\n return this.expect_node({\n root: true\n });\n }\n\n // Node states\n expect_node(expect = {}) {\n this.root_context = !!expect.root;\n this.sequence_context = !!expect.sequence;\n this.mapping_context = !!expect.mapping;\n this.simple_key_context = !!expect.simple_key;\n if (this.event instanceof events.AliasEvent) {\n return this.expect_alias();\n } else if (this.event instanceof events.ScalarEvent || this.event instanceof events.CollectionStartEvent) {\n this.process_anchor('&');\n this.process_tag();\n if (this.event instanceof events.ScalarEvent) {\n return this.expect_scalar();\n } else if (this.event instanceof events.SequenceStartEvent) {\n if (this.flow_level || this.canonical || this.event.flow_style || this.check_empty_sequence()) {\n return this.expect_flow_sequence();\n } else {\n return this.expect_block_sequence();\n }\n } else if (this.event instanceof events.MappingStartEvent) {\n if (this.flow_level || this.canonical || this.event.flow_style || this.check_empty_mapping()) {\n return this.expect_flow_mapping();\n } else {\n return this.expect_block_mapping();\n }\n }\n } else {\n return this.error('expected NodeEvent, but got', this.event);\n }\n }\n\n expect_alias() {\n if (!this.event.anchor) {\n this.error('anchor is not specified for alias');\n }\n this.process_anchor('*');\n return this.state = this.states.pop();\n }\n\n expect_scalar() {\n this.increase_indent({\n flow: true\n });\n this.process_scalar();\n this.indent = this.indents.pop();\n return this.state = this.states.pop();\n }\n\n // Flow sequence states\n expect_flow_sequence() {\n this.write_indicator('[', true, {\n whitespace: true\n });\n this.flow_level++;\n this.increase_indent({\n flow: true\n });\n return this.state = this.expect_first_flow_sequence_item;\n }\n\n expect_first_flow_sequence_item() {\n if (this.event instanceof events.SequenceEndEvent) {\n this.indent = this.indents.pop();\n this.flow_level--;\n this.write_indicator(']', false);\n return this.state = this.states.pop();\n } else {\n if (this.canonical || this.column > this.best_width) {\n this.write_indent();\n }\n this.states.push(this.expect_flow_sequence_item);\n return this.expect_node({\n sequence: true\n });\n }\n }\n\n expect_flow_sequence_item() {\n if (this.event instanceof events.SequenceEndEvent) {\n this.indent = this.indents.pop();\n this.flow_level--;\n if (this.canonical) {\n this.write_indicator(',', false);\n this.write_indent();\n }\n this.write_indicator(']', false);\n return this.state = this.states.pop();\n } else {\n this.write_indicator(',', false);\n if (this.canonical || this.column > this.best_width) {\n this.write_indent();\n }\n this.states.push(this.expect_flow_sequence_item);\n return this.expect_node({\n sequence: true\n });\n }\n }\n\n // Flow mapping states\n expect_flow_mapping() {\n this.write_indicator('{', true, {\n whitespace: true\n });\n this.flow_level++;\n this.increase_indent({\n flow: true\n });\n return this.state = this.expect_first_flow_mapping_key;\n }\n\n expect_first_flow_mapping_key() {\n if (this.event instanceof events.MappingEndEvent) {\n this.indent = this.indents.pop();\n this.flow_level--;\n this.write_indicator('}', false);\n return this.state = this.states.pop();\n } else {\n if (this.canonical || this.column > this.best_width) {\n this.write_indent();\n }\n if (!this.canonical && this.check_simple_key()) {\n this.states.push(this.expect_flow_mapping_simple_value);\n return this.expect_node({\n mapping: true,\n simple_key: true\n });\n } else {\n this.write_indicator('?', true);\n this.states.push(this.expect_flow_mapping_value);\n return this.expect_node({\n mapping: true\n });\n }\n }\n }\n\n expect_flow_mapping_key() {\n if (this.event instanceof events.MappingEndEvent) {\n this.indent = this.indents.pop();\n this.flow_level--;\n if (this.canonical) {\n this.write_indicator(',', false);\n this.write_indent();\n }\n this.write_indicator('}', false);\n return this.state = this.states.pop();\n } else {\n this.write_indicator(',', false);\n if (this.canonical || this.column > this.best_width) {\n this.write_indent();\n }\n if (!this.canonical && this.check_simple_key()) {\n this.states.push(this.expect_flow_mapping_simple_value);\n return this.expect_node({\n mapping: true,\n simple_key: true\n });\n } else {\n this.write_indicator('?', true);\n this.states.push(this.expect_flow_mapping_value);\n return this.expect_node({\n mapping: true\n });\n }\n }\n }\n\n expect_flow_mapping_simple_value() {\n this.write_indicator(':', false);\n this.states.push(this.expect_flow_mapping_key);\n return this.expect_node({\n mapping: true\n });\n }\n\n expect_flow_mapping_value() {\n if (this.canonical || this.column > this.best_width) {\n this.write_indent();\n }\n this.write_indicator(':', true);\n this.states.push(this.expect_flow_mapping_key);\n return this.expect_node({\n mapping: true\n });\n }\n\n // Block sequence states\n expect_block_sequence() {\n var indentless;\n indentless = this.mapping_context && !this.indentation;\n this.increase_indent({indentless});\n return this.state = this.expect_first_block_sequence_item;\n }\n\n expect_first_block_sequence_item() {\n return this.expect_block_sequence_item(true);\n }\n\n expect_block_sequence_item(first = false) {\n if (!first && this.event instanceof events.SequenceEndEvent) {\n this.indent = this.indents.pop();\n return this.state = this.states.pop();\n } else {\n this.write_indent();\n this.write_indicator('-', true, {\n indentation: true\n });\n this.states.push(this.expect_block_sequence_item);\n return this.expect_node({\n sequence: true\n });\n }\n }\n\n // Block mapping states\n expect_block_mapping() {\n this.increase_indent();\n return this.state = this.expect_first_block_mapping_key;\n }\n\n expect_first_block_mapping_key() {\n return this.expect_block_mapping_key(true);\n }\n\n expect_block_mapping_key(first = false) {\n if (!first && this.event instanceof events.MappingEndEvent) {\n this.indent = this.indents.pop();\n return this.state = this.states.pop();\n } else {\n this.write_indent();\n if (this.check_simple_key()) {\n this.states.push(this.expect_block_mapping_simple_value);\n return this.expect_node({\n mapping: true,\n simple_key: true\n });\n } else {\n this.write_indicator('?', true, {\n indentation: true\n });\n this.states.push(this.expect_block_mapping_value);\n return this.expect_node({\n mapping: true\n });\n }\n }\n }\n\n expect_block_mapping_simple_value() {\n this.write_indicator(':', false);\n this.states.push(this.expect_block_mapping_key);\n return this.expect_node({\n mapping: true\n });\n }\n\n expect_block_mapping_value() {\n this.write_indent();\n this.write_indicator(':', true, {\n indentation: true\n });\n this.states.push(this.expect_block_mapping_key);\n return this.expect_node({\n mapping: true\n });\n }\n\n // Checkers\n check_empty_document() {\n var event;\n if (!(this.event instanceof events.DocumentStartEvent) || this.events.length === 0) {\n return false;\n }\n event = this.events[0];\n return event instanceof events.ScalarEvent && (event.anchor == null) && (event.tag == null) && event.implicit && event.value === '';\n }\n\n check_empty_sequence() {\n return this.event instanceof events.SequenceStartEvent && this.events[0] instanceof events.SequenceEndEvent;\n }\n\n check_empty_mapping() {\n return this.event instanceof events.MappingStartEvent && this.events[0] instanceof events.MappingEndEvent;\n }\n\n check_simple_key() {\n var length;\n length = 0;\n if (this.event instanceof events.NodeEvent && (this.event.anchor != null)) {\n if (this.prepared_anchor == null) {\n this.prepared_anchor = this.prepare_anchor(this.event.anchor);\n }\n length += this.prepared_anchor.length;\n }\n if ((this.event.tag != null) && (this.event instanceof events.ScalarEvent || this.event instanceof events.CollectionStartEvent)) {\n if (this.prepared_tag == null) {\n this.prepared_tag = this.prepare_tag(this.event.tag);\n }\n length += this.prepared_tag.length;\n }\n if (this.event instanceof events.ScalarEvent) {\n if (this.analysis == null) {\n this.analysis = this.analyze_scalar(this.event.value);\n }\n length += this.analysis.scalar.length;\n }\n return length < 128 && (this.event instanceof events.AliasEvent || (this.event instanceof events.ScalarEvent && !this.analysis.empty && !this.analysis.multiline) || this.check_empty_sequence() || this.check_empty_mapping());\n }\n\n // Anchor, Tag and Scalar processors\n process_anchor(indicator) {\n if (this.event.anchor == null) {\n this.prepared_anchor = null;\n return;\n }\n if (this.prepared_anchor == null) {\n this.prepared_anchor = this.prepare_anchor(this.event.anchor);\n }\n if (this.prepared_anchor) {\n this.write_indicator(`${indicator}${this.prepared_anchor}`, true);\n }\n return this.prepared_anchor = null;\n }\n\n process_tag() {\n var tag;\n tag = this.event.tag;\n if (this.event instanceof events.ScalarEvent) {\n if (this.style == null) {\n this.style = this.choose_scalar_style();\n }\n if ((!this.canonical || (tag == null)) && ((this.style === '' && this.event.implicit[0]) || (this.style !== '' && this.event.implicit[1]))) {\n this.prepared_tag = null;\n return;\n }\n if (this.event.implicit[0] && (tag == null)) {\n tag = '!';\n this.prepared_tag = null;\n }\n } else if ((!this.canonical || (tag == null)) && this.event.implicit) {\n this.prepared_tag = null;\n return;\n }\n if (tag == null) {\n this.error('tag is not specified');\n }\n if (this.prepared_tag == null) {\n this.prepared_tag = this.prepare_tag(tag);\n }\n this.write_indicator(this.prepared_tag, true);\n return this.prepared_tag = null;\n }\n\n process_scalar() {\n var split;\n if (this.analysis == null) {\n this.analysis = this.analyze_scalar(this.event.value);\n }\n if (this.style == null) {\n this.style = this.choose_scalar_style();\n }\n split = !this.simple_key_context;\n switch (this.style) {\n case '\"':\n this.write_double_quoted(this.analysis.scalar, split);\n break;\n case \"'\":\n this.write_single_quoted(this.analysis.scalar, split);\n break;\n case '>':\n this.write_folded(this.analysis.scalar);\n break;\n case '|':\n this.write_literal(this.analysis.scalar);\n break;\n default:\n this.write_plain(this.analysis.scalar, split);\n }\n this.analysis = null;\n return this.style = null;\n }\n\n choose_scalar_style() {\n var ref;\n if (this.analysis == null) {\n this.analysis = this.analyze_scalar(this.event.value);\n }\n if (this.event.style === '\"' || this.canonical) {\n return '\"';\n }\n if (!this.event.style && this.event.implicit[0] && !(this.simple_key_context && (this.analysis.empty || this.analysis.multiline)) && ((this.flow_level && this.analysis.allow_flow_plain) || (!this.flow_level && this.analysis.allow_block_plain))) {\n return '';\n }\n if (this.event.style && (ref = this.event.style, indexOf.call('|>', ref) >= 0) && !this.flow_level && !this.simple_key_context && this.analysis.allow_block) {\n return this.event.style;\n }\n if ((!this.event.style || this.event.style === \"'\") && this.analysis.allow_single_quoted && !(this.simple_key_context && this.analysis.multiline)) {\n return \"'\";\n }\n return '\"';\n }\n\n // Analyzers\n prepare_version([major, minor]) {\n var version;\n version = `${major}.${minor}`;\n if (major === 1) {\n return version;\n } else {\n return this.error('unsupported YAML version', version);\n }\n }\n\n prepare_tag_handle(handle) {\n var char, i, len, ref;\n if (!handle) {\n this.error('tag handle must not be empty');\n }\n if (handle[0] !== '!' || handle.slice(-1) !== '!') {\n this.error(\"tag handle must start and end with '!':\", handle);\n }\n ref = handle.slice(1, -1);\n for (i = 0, len = ref.length; i < len; i++) {\n char = ref[i];\n if (!(('0' <= char && char <= '9') || ('A' <= char && char <= 'Z') || ('a' <= char && char <= 'z') || indexOf.call('-_', char) >= 0)) {\n this.error(`invalid character '${char}' in the tag handle:`, handle);\n }\n }\n return handle;\n }\n\n prepare_tag_prefix(prefix) {\n var char, chunks, end, start;\n if (!prefix) {\n this.error('tag prefix must not be empty');\n }\n chunks = [];\n start = 0;\n end = +(prefix[0] === '!');\n while (end < prefix.length) {\n char = prefix[end];\n if (('0' <= char && char <= '9') || ('A' <= char && char <= 'Z') || ('a' <= char && char <= 'z') || indexOf.call('-;/?!:@&=+$,_.~*\\'()[]', char) >= 0) {\n end++;\n } else {\n if (start < end) {\n chunks.push(prefix.slice(start, end));\n }\n start = end = end + 1;\n chunks.push(char);\n }\n }\n if (start < end) {\n chunks.push(prefix.slice(start, end));\n }\n return chunks.join('');\n }\n\n prepare_tag(tag) {\n var char, chunks, end, handle, i, k, len, prefix, ref, start, suffix, suffix_text;\n if (!tag) {\n this.error('tag must not be empty');\n }\n if (tag === '!') {\n return tag;\n }\n handle = null;\n suffix = tag;\n ref = ((function() {\n var ref, results;\n ref = this.tag_prefixes;\n results = [];\n for (k in ref) {\n if (!hasProp.call(ref, k)) continue;\n results.push(k);\n }\n return results;\n }).call(this)).sort();\n for (i = 0, len = ref.length; i < len; i++) {\n prefix = ref[i];\n if (tag.indexOf(prefix) === 0 && (prefix === '!' || prefix.length < tag.length)) {\n handle = this.tag_prefixes[prefix];\n suffix = tag.slice(prefix.length);\n }\n }\n chunks = [];\n start = end = 0;\n while (end < suffix.length) {\n char = suffix[end];\n if (('0' <= char && char <= '9') || ('A' <= char && char <= 'Z') || ('a' <= char && char <= 'z') || indexOf.call('-;/?!:@&=+$,_.~*\\'()[]', char) >= 0 || (char === '!' && handle !== '!')) {\n end++;\n } else {\n if (start < end) {\n chunks.push(suffix.slice(start, end));\n }\n start = end = end + 1;\n chunks.push(char);\n }\n }\n if (start < end) {\n chunks.push(suffix.slice(start, end));\n }\n suffix_text = chunks.join('');\n if (handle) {\n return `${handle}${suffix_text}`;\n } else {\n return `!<${suffix_text}>`;\n }\n }\n\n prepare_anchor(anchor) {\n var char, i, len;\n if (!anchor) {\n this.error('anchor must not be empty');\n }\n for (i = 0, len = anchor.length; i < len; i++) {\n char = anchor[i];\n if (!(('0' <= char && char <= '9') || ('A' <= char && char <= 'Z') || ('a' <= char && char <= 'z') || indexOf.call('-_', char) >= 0)) {\n this.error(`invalid character '${char}' in the anchor:`, anchor);\n }\n }\n return anchor;\n }\n\n analyze_scalar(scalar) {\n var allow_block, allow_block_plain, allow_double_quoted, allow_flow_plain, allow_single_quoted, block_indicators, break_space, char, flow_indicators, followed_by_whitespace, i, index, leading_break, leading_space, len, line_breaks, preceded_by_whitespace, previous_break, previous_space, ref, ref1, space_break, special_characters, trailing_break, trailing_space, unicode_characters;\n // Empty scalar is a special case.\n if (!scalar) {\n new ScalarAnalysis(scalar, true, false, false, true, true, true, false);\n }\n // Indicators and special characters.\n block_indicators = false;\n flow_indicators = false;\n line_breaks = false;\n special_characters = false;\n unicode_characters = false;\n // Important whitespace combinations\n leading_space = false;\n leading_break = false;\n trailing_space = false;\n trailing_break = false;\n break_space = false;\n space_break = false;\n // Check document indicators.\n if (scalar.indexOf('---') === 0 || scalar.indexOf('...') === 0) {\n block_indicators = true;\n flow_indicators = true;\n }\n // First character or preceded by a whitespace.\n preceded_by_whitespace = true;\n // Last character or followed by a whitespace.\n followed_by_whitespace = scalar.length === 1 || (ref = scalar[1], indexOf.call('\\0 \\t\\r\\n\\x85\\u2028\\u2029', ref) >= 0);\n // The previous character is a space.\n previous_space = false;\n // The previous character is a break\n previous_break = false;\n index = 0;\n for (index = i = 0, len = scalar.length; i < len; index = ++i) {\n char = scalar[index];\n // Check for indicators.\n if (index === 0) {\n // Leading indicators are special characters.\n if (indexOf.call('#,[]{}&*!|>\\'\"%@`', char) >= 0 || (char === '-' && followed_by_whitespace)) {\n flow_indicators = true;\n block_indicators = true;\n } else if (indexOf.call('?:', char) >= 0) {\n flow_indicators = true;\n if (followed_by_whitespace) {\n block_indicators = true;\n }\n }\n } else {\n // Some indicators cannot appear within a scalar as well.\n if (indexOf.call(',?[]{}', char) >= 0) {\n flow_indicators = true;\n } else if (char === ':') {\n flow_indicators = true;\n if (followed_by_whitespace) {\n block_indicators = true;\n }\n } else if (char === '#' && preceded_by_whitespace) {\n flow_indicators = true;\n block_indicators = true;\n }\n }\n // Check for line breaks, special, and unicode characters.\n if (indexOf.call('\\n\\x85\\u2028\\u2029', char) >= 0) {\n line_breaks = true;\n }\n if (!(char === '\\n' || ('\\x20' <= char && char <= '\\x7e'))) {\n if (char !== '\\uFEFF' && (char === '\\x85' || ('\\xA0' <= char && char <= '\\uD7FF') || ('\\uE000' <= char && char <= '\\uFFFD'))) {\n unicode_characters = true;\n if (!this.allow_unicode) {\n special_characters = true;\n }\n } else {\n special_characters = true;\n }\n }\n // Detect important whitespace combinations.\n if (char === ' ') {\n if (index === 0) {\n leading_space = true;\n }\n if (index === scalar.length - 1) {\n trailing_space = true;\n }\n if (previous_break) {\n break_space = true;\n }\n previous_break = false;\n previous_space = true;\n } else if (indexOf.call('\\n\\x85\\u2028\\u2029', char) >= 0) {\n if (index === 0) {\n leading_break = true;\n }\n if (index === scalar.length - 1) {\n trailing_break = true;\n }\n if (previous_space) {\n space_break = true;\n }\n previous_break = true;\n previous_space = false;\n } else {\n previous_break = false;\n previous_space = false;\n }\n // Prepare for the next character.\n preceded_by_whitespace = indexOf.call(C_WHITESPACE, char) >= 0;\n followed_by_whitespace = index + 2 >= scalar.length || (ref1 = scalar[index + 2], indexOf.call(C_WHITESPACE, ref1) >= 0);\n }\n // Let's decide what styles are allowed.\n allow_flow_plain = true;\n allow_block_plain = true;\n allow_single_quoted = true;\n allow_double_quoted = true;\n allow_block = true;\n // Leading and trailing whitespaces are bad for plain scalars.\n if (leading_space || leading_break || trailing_space || trailing_break) {\n allow_flow_plain = allow_block_plain = false;\n }\n // We do not permit trailing spaces for block scalars.\n if (trailing_space) {\n allow_block = false;\n }\n // Spaces at the beginning of a new line are only acceptable for block scalars.\n if (break_space) {\n allow_flow_plain = allow_block_plain = allow_single_quoted = false;\n }\n // Spaces followed by breaks, as well as special character are only allowed for double quoted\n // scalars.\n if (space_break || special_characters) {\n allow_flow_plain = allow_block_plain = allow_single_quoted = allow_block = false;\n }\n // Although the plain scalar writer supports breaks, we never emit multiline plain scalars.\n if (line_breaks) {\n allow_flow_plain = allow_block_plain = false;\n }\n // Flow indicators are forbidden for flow plain scalars.\n if (flow_indicators) {\n allow_flow_plain = false;\n }\n // Block indicators are forbidden for block plain scalars.\n if (block_indicators) {\n allow_block_plain = false;\n }\n return new ScalarAnalysis(scalar, false, line_breaks, allow_flow_plain, allow_block_plain, allow_single_quoted, allow_double_quoted, allow_block);\n }\n\n // Writers\n /*\n Write BOM if needed.\n */\n write_stream_start() {\n if (this.encoding && this.encoding.indexOf('utf-16') === 0) {\n return this.stream.write('\\uFEFF', this.encoding);\n }\n }\n\n write_stream_end() {\n return this.flush_stream();\n }\n\n write_indicator(indicator, need_whitespace, options = {}) {\n var data;\n data = this.whitespace || !need_whitespace ? indicator : ' ' + indicator;\n this.whitespace = !!options.whitespace;\n this.indentation && (this.indentation = !!options.indentation);\n this.column += data.length;\n this.open_ended = false;\n return this.stream.write(data, this.encoding);\n }\n\n write_indent() {\n var data, indent, ref;\n indent = (ref = this.indent) != null ? ref : 0;\n if (!this.indentation || this.column > indent || (this.column === indent && !this.whitespace)) {\n this.write_line_break();\n }\n if (this.column < indent) {\n this.whitespace = true;\n data = new Array(indent - this.column + 1).join(' ');\n this.column = indent;\n return this.stream.write(data, this.encoding);\n }\n }\n\n write_line_break(data) {\n this.whitespace = true;\n this.indentation = true;\n this.line += 1;\n this.column = 0;\n return this.stream.write(data != null ? data : this.best_line_break, this.encoding);\n }\n\n write_version_directive(version_text) {\n this.stream.write(`%YAML ${version_text}`, this.encoding);\n return this.write_line_break();\n }\n\n write_tag_directive(handle_text, prefix_text) {\n this.stream.write(`%TAG ${handle_text} ${prefix_text}`, this.encoding);\n return this.write_line_break();\n }\n\n write_single_quoted(text, split = true) {\n var br, breaks, char, data, end, i, len, ref, spaces, start;\n this.write_indicator(\"'\", true);\n spaces = false;\n breaks = false;\n start = end = 0;\n while (end <= text.length) {\n char = text[end];\n if (spaces) {\n if ((char == null) || char !== ' ') {\n if (start + 1 === end && this.column > this.best_width && split && start !== 0 && end !== text.length) {\n this.write_indent();\n } else {\n data = text.slice(start, end);\n this.column += data.length;\n this.stream.write(data, this.encoding);\n }\n start = end;\n }\n } else if (breaks) {\n if ((char == null) || indexOf.call('\\n\\x85\\u2028\\u2029', char) < 0) {\n if (text[start] === '\\n') {\n this.write_line_break();\n }\n ref = text.slice(start, end);\n for (i = 0, len = ref.length; i < len; i++) {\n br = ref[i];\n if (br === '\\n') {\n this.write_line_break();\n } else {\n this.write_line_break(br);\n }\n }\n this.write_indent();\n start = end;\n }\n } else if (((char == null) || indexOf.call(' \\n\\x85\\u2028\\u2029', char) >= 0 || char === \"'\") && start < end) {\n data = text.slice(start, end);\n this.column += data.length;\n this.stream.write(data, this.encoding);\n start = end;\n }\n if (char === \"'\") {\n this.column += 2;\n this.stream.write(\"''\", this.encoding);\n start = end + 1;\n }\n if (char != null) {\n spaces = char === ' ';\n breaks = indexOf.call('\\n\\x85\\u2028\\u2029', char) >= 0;\n }\n end++;\n }\n return this.write_indicator(\"'\", false);\n }\n\n write_double_quoted(text, split = true) {\n var char, data, end, start;\n this.write_indicator('\"', true);\n start = end = 0;\n while (end <= text.length) {\n char = text[end];\n if ((char == null) || indexOf.call('\"\\\\\\x85\\u2028\\u2029\\uFEFF', char) >= 0 || !(('\\x20' <= char && char <= '\\x7E') || (this.allow_unicode && (('\\xA0' <= char && char <= '\\uD7FF') || ('\\uE000' <= char && char <= '\\uFFFD'))))) {\n if (start < end) {\n data = text.slice(start, end);\n this.column += data.length;\n this.stream.write(data, this.encoding);\n start = end;\n }\n if (char != null) {\n data = char in ESCAPE_REPLACEMENTS ? '\\\\' + ESCAPE_REPLACEMENTS[char] : char <= '\\xFF' ? `\\\\x${util.pad_left(util.to_hex(char), '0', 2)}` : char <= '\\uFFFF' ? `\\\\u${util.pad_left(util.to_hex(char), '0', 4)}` : `\\\\U${util.pad_left(util.to_hex(char), '0', 16)}`;\n this.column += data.length;\n this.stream.write(data, this.encoding);\n start = end + 1;\n }\n }\n if (split && (0 < end && end < text.length - 1) && (char === ' ' || start >= end) && this.column + (end - start) > this.best_width) {\n data = `${text.slice(start, end)}\\\\`;\n if (start < end) {\n start = end;\n }\n this.column += data.length;\n this.stream.write(data, this.encoding);\n this.write_indent();\n this.whitespace = false;\n this.indentation = false;\n if (text[start] === ' ') {\n data = '\\\\';\n this.column += data.length;\n this.stream.write(data, this.encoding);\n }\n }\n end++;\n }\n return this.write_indicator('\"', false);\n }\n\n write_folded(text) {\n var br, breaks, char, data, end, hints, i, leading_space, len, ref, results, spaces, start;\n hints = this.determine_block_hints(text);\n this.write_indicator(`>${hints}`, true);\n if (hints.slice(-1) === '+') {\n this.open_ended = true;\n }\n this.write_line_break();\n leading_space = true;\n breaks = true;\n spaces = false;\n start = end = 0;\n results = [];\n while (end <= text.length) {\n char = text[end];\n if (breaks) {\n if ((char == null) || indexOf.call('\\n\\x85\\u2028\\u2029', char) < 0) {\n if (!leading_space && (char != null) && char !== ' ' && text[start] === '\\n') {\n this.write_line_break();\n }\n leading_space = char === ' ';\n ref = text.slice(start, end);\n for (i = 0, len = ref.length; i < len; i++) {\n br = ref[i];\n if (br === '\\n') {\n this.write_line_break();\n } else {\n this.write_line_break(br);\n }\n }\n if (char != null) {\n this.write_indent();\n }\n start = end;\n }\n } else if (spaces) {\n if (char !== ' ') {\n if (start + 1 === end && this.column > this.best_width) {\n this.write_indent();\n } else {\n data = text.slice(start, end);\n this.column += data.length;\n this.stream.write(data, this.encoding);\n }\n start = end;\n }\n } else if ((char == null) || indexOf.call(' \\n\\x85\\u2028\\u2029', char) >= 0) {\n data = text.slice(start, end);\n this.column += data.length;\n this.stream.write(data, this.encoding);\n if (char == null) {\n this.write_line_break();\n }\n start = end;\n }\n if (char != null) {\n breaks = indexOf.call('\\n\\x85\\u2028\\u2029', char) >= 0;\n spaces = char === ' ';\n }\n results.push(end++);\n }\n return results;\n }\n\n write_literal(text) {\n var br, breaks, char, data, end, hints, i, len, ref, results, start;\n hints = this.determine_block_hints(text);\n this.write_indicator(`|${hints}`, true);\n if (hints.slice(-1) === '+') {\n this.open_ended = true;\n }\n this.write_line_break();\n breaks = true;\n start = end = 0;\n results = [];\n while (end <= text.length) {\n char = text[end];\n if (breaks) {\n if ((char == null) || indexOf.call('\\n\\x85\\u2028\\u2029', char) < 0) {\n ref = text.slice(start, end);\n for (i = 0, len = ref.length; i < len; i++) {\n br = ref[i];\n if (br === '\\n') {\n this.write_line_break();\n } else {\n this.write_line_break(br);\n }\n }\n if (char != null) {\n this.write_indent();\n }\n start = end;\n }\n } else {\n if ((char == null) || indexOf.call('\\n\\x85\\u2028\\u2029', char) >= 0) {\n data = text.slice(start, end);\n this.stream.write(data, this.encoding);\n if (char == null) {\n this.write_line_break();\n }\n start = end;\n }\n }\n if (char != null) {\n breaks = indexOf.call('\\n\\x85\\u2028\\u2029', char) >= 0;\n }\n results.push(end++);\n }\n return results;\n }\n\n write_plain(text, split = true) {\n var br, breaks, char, data, end, i, len, ref, results, spaces, start;\n if (!text) {\n return;\n }\n if (this.root_context) {\n this.open_ended = true;\n }\n if (!this.whitespace) {\n data = ' ';\n this.column += data.length;\n this.stream.write(data, this.encoding);\n }\n this.whitespace = false;\n this.indentation = false;\n spaces = false;\n breaks = false;\n start = end = 0;\n results = [];\n while (end <= text.length) {\n char = text[end];\n if (spaces) {\n if (char !== ' ') {\n if (start + 1 === end && this.column > this.best_width && split) {\n this.write_indent();\n this.whitespace = false;\n this.indentation = false;\n } else {\n data = text.slice(start, end);\n this.column += data.length;\n this.stream.write(data, this.encoding);\n }\n start = end;\n }\n } else if (breaks) {\n if (indexOf.call('\\n\\x85\\u2028\\u2029', char) < 0) {\n if (text[start] === '\\n') {\n this.write_line_break();\n }\n ref = text.slice(start, end);\n for (i = 0, len = ref.length; i < len; i++) {\n br = ref[i];\n if (br === '\\n') {\n this.write_line_break();\n } else {\n this.write_line_break(br);\n }\n }\n this.write_indent();\n this.whitespace = false;\n this.indentation = false;\n start = end;\n }\n } else {\n if ((char == null) || indexOf.call(' \\n\\x85\\u2028\\u2029', char) >= 0) {\n data = text.slice(start, end);\n this.column += data.length;\n this.stream.write(data, this.encoding);\n start = end;\n }\n }\n if (char != null) {\n spaces = char === ' ';\n breaks = indexOf.call('\\n\\x85\\u2028\\u2029', char) >= 0;\n }\n results.push(end++);\n }\n return results;\n }\n\n determine_block_hints(text) {\n var first, hints, i, last, penultimate;\n hints = '';\n first = text[0], i = text.length - 2, penultimate = text[i++], last = text[i++];\n if (indexOf.call(' \\n\\x85\\u2028\\u2029', first) >= 0) {\n hints += this.best_indent;\n }\n if (indexOf.call('\\n\\x85\\u2028\\u2029', last) < 0) {\n hints += '-';\n } else if (text.length === 1 || indexOf.call('\\n\\x85\\u2028\\u2029', penultimate) >= 0) {\n hints += '+';\n }\n return hints;\n }\n\n flush_stream() {\n var base;\n return typeof (base = this.stream).flush === \"function\" ? base.flush() : void 0;\n }\n\n /*\n Helper for common error pattern.\n */\n error(message, context) {\n var ref, ref1;\n if (context) {\n context = (ref = context != null ? (ref1 = context.constructor) != null ? ref1.name : void 0 : void 0) != null ? ref : util.inspect(context);\n }\n throw new exports.EmitterError(`${message}${(context ? ` ${context}` : '')}`);\n }\n\n };\n\n C_WHITESPACE = '\\0 \\t\\r\\n\\x85\\u2028\\u2029';\n\n DEFAULT_TAG_PREFIXES = {\n '!': '!',\n 'tag:yaml.org,2002:': '!!'\n };\n\n ESCAPE_REPLACEMENTS = {\n '\\0': '0',\n '\\x07': 'a',\n '\\x08': 'b',\n '\\x09': 't',\n '\\x0A': 'n',\n '\\x0B': 'v',\n '\\x0C': 'f',\n '\\x0D': 'r',\n '\\x1B': 'e',\n '\"': '\"',\n '\\\\': '\\\\',\n '\\x85': 'N',\n '\\xA0': '_',\n '\\u2028': 'L',\n '\\u2029': 'P'\n };\n\n ctor = Emitter.prototype.initialise;\n\n return Emitter;\n\n }).call(this);\n\n ScalarAnalysis = class ScalarAnalysis {\n constructor(scalar1, empty, multiline, allow_flow_plain1, allow_block_plain1, allow_single_quoted1, allow_double_quoted1, allow_block1) {\n this.scalar = scalar1;\n this.empty = empty;\n this.multiline = multiline;\n this.allow_flow_plain = allow_flow_plain1;\n this.allow_block_plain = allow_block_plain1;\n this.allow_single_quoted = allow_single_quoted1;\n this.allow_double_quoted = allow_double_quoted1;\n this.allow_block = allow_block1;\n }\n\n };\n\n}).call(this);\n", "(function() {\n var YAMLError, events, nodes, util;\n\n events = require('./events');\n\n nodes = require('./nodes');\n\n util = require('./util');\n\n ({YAMLError} = require('./errors'));\n\n this.SerializerError = class SerializerError extends YAMLError {};\n\n this.Serializer = (function() {\n var ctor;\n\n class Serializer {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n initialise({\n encoding: encoding,\n explicit_start: explicit_start,\n explicit_end: explicit_end,\n version: version,\n tags: tags\n } = {}) {\n this.encoding = encoding;\n this.explicit_start = explicit_start;\n this.explicit_end = explicit_end;\n this.version = version;\n this.tags = tags;\n this.serialized_nodes = {};\n this.anchors = {};\n this.last_anchor_id = 0;\n return this.closed = null;\n }\n\n open() {\n if (this.closed === null) {\n this.emit(new events.StreamStartEvent(this.encoding));\n return this.closed = false;\n } else if (this.closed) {\n throw new SerializerError('serializer is closed');\n } else {\n throw new SerializerError('serializer is already open');\n }\n }\n\n close() {\n if (this.closed === null) {\n throw new SerializerError('serializer is not opened');\n } else if (!this.closed) {\n this.emit(new events.StreamEndEvent);\n return this.closed = true;\n }\n }\n\n serialize(node) {\n if (this.closed === null) {\n throw new SerializerError('serializer is not opened');\n } else if (this.closed) {\n throw new SerializerError('serializer is closed');\n }\n if (node != null) {\n this.emit(new events.DocumentStartEvent(void 0, void 0, this.explicit_start, this.version, this.tags));\n this.anchor_node(node);\n this.serialize_node(node);\n this.emit(new events.DocumentEndEvent(void 0, void 0, this.explicit_end));\n }\n this.serialized_nodes = {};\n this.anchors = {};\n return this.last_anchor_id = 0;\n }\n\n anchor_node(node) {\n var base, i, item, j, key, len, len1, name, ref, ref1, results, results1, value;\n if (node.unique_id in this.anchors) {\n return (base = this.anchors)[name = node.unique_id] != null ? base[name] : base[name] = this.generate_anchor(node);\n } else {\n this.anchors[node.unique_id] = null;\n if (node instanceof nodes.SequenceNode) {\n ref = node.value;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n item = ref[i];\n results.push(this.anchor_node(item));\n }\n return results;\n } else if (node instanceof nodes.MappingNode) {\n ref1 = node.value;\n results1 = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n [key, value] = ref1[j];\n this.anchor_node(key);\n results1.push(this.anchor_node(value));\n }\n return results1;\n }\n }\n }\n\n generate_anchor(node) {\n return `id${util.pad_left(++this.last_anchor_id, '0', 4)}`;\n }\n\n serialize_node(node, parent, index) {\n var alias, default_tag, detected_tag, i, implicit, item, j, key, len, len1, ref, ref1, value;\n alias = this.anchors[node.unique_id];\n if (node.unique_id in this.serialized_nodes) {\n return this.emit(new events.AliasEvent(alias));\n } else {\n this.serialized_nodes[node.unique_id] = true;\n this.descend_resolver(parent, index);\n if (node instanceof nodes.ScalarNode) {\n detected_tag = this.resolve(nodes.ScalarNode, node.value, [true, false]);\n default_tag = this.resolve(nodes.ScalarNode, node.value, [false, true]);\n implicit = [node.tag === detected_tag, node.tag === default_tag];\n this.emit(new events.ScalarEvent(alias, node.tag, implicit, node.value, void 0, void 0, node.style));\n } else if (node instanceof nodes.SequenceNode) {\n implicit = node.tag === this.resolve(nodes.SequenceNode, node.value, true);\n this.emit(new events.SequenceStartEvent(alias, node.tag, implicit, void 0, void 0, node.flow_style));\n ref = node.value;\n for (index = i = 0, len = ref.length; i < len; index = ++i) {\n item = ref[index];\n this.serialize_node(item, node, index);\n }\n this.emit(new events.SequenceEndEvent);\n } else if (node instanceof nodes.MappingNode) {\n implicit = node.tag === this.resolve(nodes.MappingNode, node.value, true);\n this.emit(new events.MappingStartEvent(alias, node.tag, implicit, void 0, void 0, node.flow_style));\n ref1 = node.value;\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n [key, value] = ref1[j];\n this.serialize_node(key, node, null);\n this.serialize_node(value, node, key);\n }\n this.emit(new events.MappingEndEvent);\n }\n return this.ascend_resolver();\n }\n }\n\n };\n\n ctor = Serializer.prototype.initialise;\n\n return Serializer;\n\n }).call(this);\n\n}).call(this);\n", "(function() {\n var YAMLError, nodes,\n hasProp = {}.hasOwnProperty;\n\n nodes = require('./nodes');\n\n ({YAMLError} = require('./errors'));\n\n this.RepresenterError = class RepresenterError extends YAMLError {};\n\n this.BaseRepresenter = (function() {\n var ctor;\n\n class BaseRepresenter {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n static add_representer(data_type, handler) {\n if (!this.prototype.hasOwnProperty('yaml_representers_types')) {\n this.prototype.yaml_representers_types = [].concat(this.prototype.yaml_representers_types);\n }\n if (!this.prototype.hasOwnProperty('yaml_representers_handlers')) {\n this.prototype.yaml_representers_handlers = [].concat(this.prototype.yaml_representers_handlers);\n }\n this.prototype.yaml_representers_types.push(data_type);\n return this.prototype.yaml_representers_handlers.push(handler);\n }\n\n static add_multi_representer(data_type, handler) {\n if (!this.prototype.hasOwnProperty('yaml_multi_representers_types')) {\n this.prototype.yaml_multi_representers_types = [].concat(this.prototype.yaml_multi_representers_types);\n }\n if (!this.prototype.hasOwnProperty('yaml_multi_representers_handlers')) {\n this.prototype.yaml_multi_representers_handlers = [].concat(this.prototype.yaml_multi_representers_handlers);\n }\n this.prototype.yaml_multi_representers_types.push(data_type);\n return this.prototype.yaml_multi_representers_handlers.push(handler);\n }\n\n initialise({\n default_style: default_style,\n default_flow_style: default_flow_style\n } = {}) {\n this.default_style = default_style;\n this.default_flow_style = default_flow_style;\n this.represented_objects = {};\n this.object_keeper = [];\n return this.alias_key = null;\n }\n\n represent(data) {\n var node;\n node = this.represent_data(data);\n this.serialize(node);\n this.represented_objects = {};\n this.object_keeper = [];\n return this.alias_key = null;\n }\n\n represent_data(data) {\n var data_type, i, j, len, ref, representer, type;\n if (this.ignore_aliases(data)) {\n this.alias_key = null;\n } else if ((i = this.object_keeper.indexOf(data)) !== -1) {\n this.alias_key = i;\n if (this.alias_key in this.represented_objects) {\n return this.represented_objects[this.alias_key];\n }\n } else {\n this.alias_key = this.object_keeper.length;\n this.object_keeper.push(data);\n }\n // Bit fiddly: we look into our non-multi representers using the JS type if `data` is not an\n // object, otherwise we use the object's constructor. For multi-representers we just use\n // instanceof. A representer for `undefined` can be called for any type.\n representer = null;\n data_type = data === null ? 'null' : typeof data;\n if (data_type === 'object') {\n data_type = data.constructor;\n }\n if ((i = this.yaml_representers_types.lastIndexOf(data_type)) !== -1) {\n representer = this.yaml_representers_handlers[i];\n }\n if (representer == null) {\n ref = this.yaml_multi_representers_types;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n type = ref[i];\n if (!(data instanceof type)) {\n continue;\n }\n representer = this.yaml_multi_representers_handlers[i];\n break;\n }\n }\n if (representer == null) {\n if ((i = this.yaml_multi_representers_types.lastIndexOf(void 0)) !== -1) {\n representer = this.yaml_multi_representers_handlers[i];\n } else if ((i = this.yaml_representers_types.lastIndexOf(void 0)) !== -1) {\n representer = this.yaml_representers_handlers[i];\n }\n }\n if (representer != null) {\n return representer.call(this, data);\n } else {\n return new nodes.ScalarNode(null, `${data}`);\n }\n }\n\n represent_scalar(tag, value, style = this.default_style) {\n var node;\n node = new nodes.ScalarNode(tag, value, null, null, style);\n if (this.alias_key != null) {\n this.represented_objects[this.alias_key] = node;\n }\n return node;\n }\n\n represent_sequence(tag, sequence, flow_style) {\n var best_style, item, j, len, node, node_item, ref, value;\n value = [];\n node = new nodes.SequenceNode(tag, value, null, null, flow_style);\n if (this.alias_key != null) {\n this.represented_objects[this.alias_key] = node;\n }\n best_style = true;\n for (j = 0, len = sequence.length; j < len; j++) {\n item = sequence[j];\n node_item = this.represent_data(item);\n if (!(node_item instanceof nodes.ScalarNode || node_item.style)) {\n best_style = false;\n }\n value.push(node_item);\n }\n if (flow_style == null) {\n node.flow_style = (ref = this.default_flow_style) != null ? ref : best_style;\n }\n return node;\n }\n\n represent_mapping(tag, mapping, flow_style) {\n var best_style, item_key, item_value, node, node_key, node_value, ref, value;\n value = [];\n node = new nodes.MappingNode(tag, value, flow_style);\n if (this.alias_key) {\n this.represented_objects[this.alias_key] = node;\n }\n best_style = true;\n for (item_key in mapping) {\n if (!hasProp.call(mapping, item_key)) continue;\n item_value = mapping[item_key];\n node_key = this.represent_data(item_key);\n node_value = this.represent_data(item_value);\n if (!(node_key instanceof nodes.ScalarNode || node_key.style)) {\n best_style = false;\n }\n if (!(node_value instanceof nodes.ScalarNode || node_value.style)) {\n best_style = false;\n }\n value.push([node_key, node_value]);\n }\n if (!flow_style) {\n node.flow_style = (ref = this.default_flow_style) != null ? ref : best_style;\n }\n return node;\n }\n\n ignore_aliases(data) {\n return false;\n }\n\n };\n\n BaseRepresenter.prototype.yaml_representers_types = [];\n\n BaseRepresenter.prototype.yaml_representers_handlers = [];\n\n BaseRepresenter.prototype.yaml_multi_representers_types = [];\n\n BaseRepresenter.prototype.yaml_multi_representers_handlers = [];\n\n ctor = BaseRepresenter.prototype.initialise;\n\n return BaseRepresenter;\n\n }).call(this);\n\n this.Representer = class Representer extends this.BaseRepresenter {\n represent_boolean(data) {\n return this.represent_scalar('tag:yaml.org,2002:bool', (data ? 'true' : 'false'));\n }\n\n represent_null(data) {\n return this.represent_scalar('tag:yaml.org,2002:null', 'null');\n }\n\n represent_number(data) {\n var tag, value;\n tag = `tag:yaml.org,2002:${(data % 1 === 0 ? 'int' : 'float')}`;\n value = data !== data ? '.nan' : data === 2e308 ? '.inf' : data === -2e308 ? '-.inf' : data.toString();\n return this.represent_scalar(tag, value);\n }\n\n represent_string(data) {\n return this.represent_scalar('tag:yaml.org,2002:str', data);\n }\n\n represent_array(data) {\n return this.represent_sequence('tag:yaml.org,2002:seq', data);\n }\n\n represent_date(data) {\n return this.represent_scalar('tag:yaml.org,2002:timestamp', data.toISOString());\n }\n\n represent_object(data) {\n return this.represent_mapping('tag:yaml.org,2002:map', data);\n }\n\n represent_undefined(data) {\n throw new exports.RepresenterError(`cannot represent an onbject: ${data}`);\n }\n\n ignore_aliases(data) {\n var ref;\n if (data == null) {\n return true;\n }\n if ((ref = typeof data) === 'boolean' || ref === 'number' || ref === 'string') {\n return true;\n }\n return false;\n }\n\n };\n\n this.Representer.add_representer('boolean', this.Representer.prototype.represent_boolean);\n\n this.Representer.add_representer('null', this.Representer.prototype.represent_null);\n\n this.Representer.add_representer('number', this.Representer.prototype.represent_number);\n\n this.Representer.add_representer('string', this.Representer.prototype.represent_string);\n\n this.Representer.add_representer(Array, this.Representer.prototype.represent_array);\n\n this.Representer.add_representer(Date, this.Representer.prototype.represent_date);\n\n this.Representer.add_representer(Object, this.Representer.prototype.represent_object);\n\n this.Representer.add_representer(null, this.Representer.prototype.represent_undefined);\n\n}).call(this);\n", "(function() {\n var YAMLError, nodes, util,\n indexOf = [].indexOf;\n\n nodes = require('./nodes');\n\n util = require('./util');\n\n ({YAMLError} = require('./errors'));\n\n this.ResolverError = class ResolverError extends YAMLError {};\n\n this.BaseResolver = (function() {\n var DEFAULT_MAPPING_TAG, DEFAULT_SCALAR_TAG, DEFAULT_SEQUENCE_TAG, ctor;\n\n class BaseResolver {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n static add_implicit_resolver(tag, regexp, first = [null]) {\n var base, char, i, len, results;\n if (!this.prototype.hasOwnProperty('yaml_implicit_resolvers')) {\n this.prototype.yaml_implicit_resolvers = util.extend({}, this.prototype.yaml_implicit_resolvers);\n }\n results = [];\n for (i = 0, len = first.length; i < len; i++) {\n char = first[i];\n results.push(((base = this.prototype.yaml_implicit_resolvers)[char] != null ? base[char] : base[char] = []).push([tag, regexp]));\n }\n return results;\n }\n\n initialise() {\n this.resolver_exact_paths = [];\n return this.resolver_prefix_paths = [];\n }\n\n descend_resolver(current_node, current_index) {\n var depth, exact_paths, i, j, kind, len, len1, path, prefix_paths, ref, ref1;\n if (util.is_empty(this.yaml_path_resolvers)) {\n return;\n }\n exact_paths = {};\n prefix_paths = [];\n if (current_node) {\n depth = this.resolver_prefix_paths.length;\n ref = this.resolver_prefix_paths.slice(-1)[0];\n for (i = 0, len = ref.length; i < len; i++) {\n [path, kind] = ref[i];\n if (this.check_resolver_prefix(depth, path, kind, current_node, current_index)) {\n if (path.length > depth) {\n prefix_paths.push([path, kind]);\n } else {\n exact_paths[kind] = this.yaml_path_resolvers[path][kind];\n }\n }\n }\n } else {\n ref1 = this.yaml_path_resolvers;\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n [path, kind] = ref1[j];\n if (!path) {\n exact_paths[kind] = this.yaml_path_resolvers[path][kind];\n } else {\n prefix_paths.push([path, kind]);\n }\n }\n }\n this.resolver_exact_paths.push(exact_paths);\n return this.resolver_prefix_paths.push(prefix_paths);\n }\n\n ascend_resolver() {\n if (util.is_empty(this.yaml_path_resolvers)) {\n return;\n }\n this.resolver_exact_paths.pop();\n return this.resolver_prefix_paths.pop();\n }\n\n check_resolver_prefix(depth, path, kind, current_node, current_index) {\n var index_check, node_check;\n [node_check, index_check] = path[depth - 1];\n if (typeof node_check === 'string') {\n if (current_node.tag !== node_check) {\n return;\n }\n } else if (node_check !== null) {\n if (!(current_node instanceof node_check)) {\n return;\n }\n }\n if (index_check === true && current_index !== null) {\n return;\n }\n if ((index_check === false || index_check === null) && current_index === null) {\n return;\n }\n if (typeof index_check === 'string') {\n if (!(current_index instanceof nodes.ScalarNode) && index_check === current_index.value) {\n return;\n }\n } else if (typeof index_check === 'number') {\n if (index_check !== current_index) {\n return;\n }\n }\n return true;\n }\n\n resolve(kind, value, implicit) {\n var empty, exact_paths, i, k, len, ref, ref1, ref2, regexp, resolvers, tag;\n if (kind === nodes.ScalarNode && implicit[0]) {\n if (value === '') {\n resolvers = (ref = this.yaml_implicit_resolvers['']) != null ? ref : [];\n } else {\n resolvers = (ref1 = this.yaml_implicit_resolvers[value[0]]) != null ? ref1 : [];\n }\n resolvers = resolvers.concat((ref2 = this.yaml_implicit_resolvers[null]) != null ? ref2 : []);\n for (i = 0, len = resolvers.length; i < len; i++) {\n [tag, regexp] = resolvers[i];\n if (value.match(regexp)) {\n return tag;\n }\n }\n implicit = implicit[1];\n }\n empty = true;\n for (k in this.yaml_path_resolvers) {\n if ({}[k] == null) {\n empty = false;\n }\n }\n if (!empty) {\n exact_paths = this.resolver_exact_paths.slice(-1)[0];\n if (indexOf.call(exact_paths, kind) >= 0) {\n return exact_paths[kind];\n }\n if (indexOf.call(exact_paths, null) >= 0) {\n return exact_paths[null];\n }\n }\n if (kind === nodes.ScalarNode) {\n return DEFAULT_SCALAR_TAG;\n }\n if (kind === nodes.SequenceNode) {\n return DEFAULT_SEQUENCE_TAG;\n }\n if (kind === nodes.MappingNode) {\n return DEFAULT_MAPPING_TAG;\n }\n }\n\n };\n\n DEFAULT_SCALAR_TAG = 'tag:yaml.org,2002:str';\n\n DEFAULT_SEQUENCE_TAG = 'tag:yaml.org,2002:seq';\n\n DEFAULT_MAPPING_TAG = 'tag:yaml.org,2002:map';\n\n BaseResolver.prototype.yaml_implicit_resolvers = {};\n\n BaseResolver.prototype.yaml_path_resolvers = {};\n\n ctor = BaseResolver.prototype.initialise;\n\n return BaseResolver;\n\n }).call(this);\n\n this.Resolver = class Resolver extends this.BaseResolver {};\n\n this.Resolver.add_implicit_resolver('tag:yaml.org,2002:bool', /^(?:yes|Yes|YES|true|True|TRUE|on|On|ON|no|No|NO|false|False|FALSE|off|Off|OFF)$/, 'yYnNtTfFoO');\n\n this.Resolver.add_implicit_resolver('tag:yaml.org,2002:float', /^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$/, '-+0123456789.');\n\n this.Resolver.add_implicit_resolver('tag:yaml.org,2002:int', /^(?:[-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[0-9a-fA-F_]+|[-+]?0o[0-7_]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$/, '-+0123456789');\n\n this.Resolver.add_implicit_resolver('tag:yaml.org,2002:merge', /^(?:<<)$/, '<');\n\n this.Resolver.add_implicit_resolver('tag:yaml.org,2002:null', /^(?:~|null|Null|NULL|)$/, ['~', 'n', 'N', '']);\n\n this.Resolver.add_implicit_resolver('tag:yaml.org,2002:timestamp', /^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]|[0-9][0-9][0-9][0-9]-[0-9][0-9]?-[0-9][0-9]?(?:[Tt]|[\\x20\\t]+)[0-9][0-9]?:[0-9][0-9]:[0-9][0-9](?:\\.[0-9]*)?(?:[\\x20\\t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$/, '0123456789');\n\n this.Resolver.add_implicit_resolver('tag:yaml.org,2002:value', /^(?:=)$/, '=');\n\n // The following resolver is only for documentation purposes. It cannot work\n // because plain scalars cannot start with '!', '&' or '*'.\n this.Resolver.add_implicit_resolver('tag:yaml.org,2002:yaml', /^(?:!|&|\\*)$/, '!&*');\n\n}).call(this);\n", "(function() {\n var emitter, representer, resolver, serializer, util;\n\n util = require('./util');\n\n emitter = require('./emitter');\n\n serializer = require('./serializer');\n\n representer = require('./representer');\n\n resolver = require('./resolver');\n\n this.make_dumper = function(Emitter = emitter.Emitter, Serializer = serializer.Serializer, Representer = representer.Representer, Resolver = resolver.Resolver) {\n var Dumper, components;\n components = [Emitter, Serializer, Representer, Resolver];\n return Dumper = (function() {\n var component;\n\n class Dumper {\n constructor(stream, options = {}) {\n var i, len, ref;\n components[0].prototype.initialise.call(this, stream, options);\n ref = components.slice(1);\n for (i = 0, len = ref.length; i < len; i++) {\n component = ref[i];\n component.prototype.initialise.call(this, options);\n }\n }\n\n };\n\n util.extend(Dumper.prototype, ...((function() {\n var i, len, results;\n results = [];\n for (i = 0, len = components.length; i < len; i++) {\n component = components[i];\n results.push(component.prototype);\n }\n return results;\n })()));\n\n return Dumper;\n\n }).call(this);\n };\n\n this.Dumper = this.make_dumper();\n\n}).call(this);\n", "(function() {\n var Mark, YAMLError,\n indexOf = [].indexOf;\n\n ({Mark, YAMLError} = require('./errors'));\n\n this.ReaderError = class ReaderError extends YAMLError {\n constructor(position1, character1, reason) {\n super();\n this.position = position1;\n this.character = character1;\n this.reason = reason;\n }\n\n toString() {\n return `unacceptable character #${this.character.charCodeAt(0).toString(16)}: ${this.reason}\\n position ${this.position}`;\n }\n\n };\n\n /*\n Reader:\n checks if characters are within the allowed range\n add '\\x00' to the end\n */\n this.Reader = (function() {\n var NON_PRINTABLE, ctor;\n\n class Reader {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n initialise(string) {\n this.string = string;\n this.line = 0;\n this.column = 0;\n this.index = 0;\n this.check_printable();\n return this.string += '\\x00';\n }\n\n peek(index = 0) {\n return this.string[this.index + index];\n }\n\n prefix(length = 1) {\n return this.string.slice(this.index, this.index + length);\n }\n\n forward(length = 1) {\n var char, results;\n results = [];\n while (length) {\n char = this.string[this.index];\n this.index++;\n if (indexOf.call('\\n\\x85\\u2082\\u2029', char) >= 0 || (char === '\\r' && this.string[this.index] !== '\\n')) {\n this.line++;\n this.column = 0;\n } else {\n this.column++;\n }\n results.push(length--);\n }\n return results;\n }\n\n get_mark() {\n return new Mark(this.line, this.column, this.string, this.index);\n }\n\n check_printable() {\n var character, match, position;\n match = NON_PRINTABLE.exec(this.string);\n if (match) {\n character = match[0];\n position = (this.string.length - this.index) + match.index;\n throw new exports.ReaderError(position, character, 'special characters are not allowed');\n }\n }\n\n };\n\n NON_PRINTABLE = /[^\\x09\\x0A\\x0D\\x20-\\x7E\\x85\\xA0-\\uFFFD]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/; // Invalid single characters\n // Missing or invalid low surrogate\n // Missing or invalid high surrogate\n\n ctor = Reader.prototype.initialise;\n\n return Reader;\n\n }).call(this);\n\n}).call(this);\n", "(function() {\n this.Token = class Token {\n constructor(start_mark1, end_mark1) {\n this.start_mark = start_mark1;\n this.end_mark = end_mark1;\n }\n\n };\n\n this.DirectiveToken = (function() {\n class DirectiveToken extends this.Token {\n constructor(name, value, start_mark, end_mark) {\n super(start_mark, end_mark);\n this.name = name;\n this.value = value;\n }\n\n };\n\n DirectiveToken.prototype.id = '';\n\n return DirectiveToken;\n\n }).call(this);\n\n this.DocumentStartToken = (function() {\n class DocumentStartToken extends this.Token {};\n\n DocumentStartToken.prototype.id = '';\n\n return DocumentStartToken;\n\n }).call(this);\n\n this.DocumentEndToken = (function() {\n class DocumentEndToken extends this.Token {};\n\n DocumentEndToken.prototype.id = '';\n\n return DocumentEndToken;\n\n }).call(this);\n\n this.StreamStartToken = (function() {\n class StreamStartToken extends this.Token {\n constructor(start_mark, end_mark, encoding) {\n super(start_mark, end_mark);\n this.encoding = encoding;\n }\n\n };\n\n StreamStartToken.prototype.id = '';\n\n return StreamStartToken;\n\n }).call(this);\n\n this.StreamEndToken = (function() {\n class StreamEndToken extends this.Token {};\n\n StreamEndToken.prototype.id = '';\n\n return StreamEndToken;\n\n }).call(this);\n\n this.BlockSequenceStartToken = (function() {\n class BlockSequenceStartToken extends this.Token {};\n\n BlockSequenceStartToken.prototype.id = '';\n\n return BlockSequenceStartToken;\n\n }).call(this);\n\n this.BlockMappingStartToken = (function() {\n class BlockMappingStartToken extends this.Token {};\n\n BlockMappingStartToken.prototype.id = '';\n\n return BlockMappingStartToken;\n\n }).call(this);\n\n this.BlockEndToken = (function() {\n class BlockEndToken extends this.Token {};\n\n BlockEndToken.prototype.id = '';\n\n return BlockEndToken;\n\n }).call(this);\n\n this.FlowSequenceStartToken = (function() {\n class FlowSequenceStartToken extends this.Token {};\n\n FlowSequenceStartToken.prototype.id = '[';\n\n return FlowSequenceStartToken;\n\n }).call(this);\n\n this.FlowMappingStartToken = (function() {\n class FlowMappingStartToken extends this.Token {};\n\n FlowMappingStartToken.prototype.id = '{';\n\n return FlowMappingStartToken;\n\n }).call(this);\n\n this.FlowSequenceEndToken = (function() {\n class FlowSequenceEndToken extends this.Token {};\n\n FlowSequenceEndToken.prototype.id = ']';\n\n return FlowSequenceEndToken;\n\n }).call(this);\n\n this.FlowMappingEndToken = (function() {\n class FlowMappingEndToken extends this.Token {};\n\n FlowMappingEndToken.prototype.id = '}';\n\n return FlowMappingEndToken;\n\n }).call(this);\n\n this.KeyToken = (function() {\n class KeyToken extends this.Token {};\n\n KeyToken.prototype.id = '?';\n\n return KeyToken;\n\n }).call(this);\n\n this.ValueToken = (function() {\n class ValueToken extends this.Token {};\n\n ValueToken.prototype.id = ':';\n\n return ValueToken;\n\n }).call(this);\n\n this.BlockEntryToken = (function() {\n class BlockEntryToken extends this.Token {};\n\n BlockEntryToken.prototype.id = '-';\n\n return BlockEntryToken;\n\n }).call(this);\n\n this.FlowEntryToken = (function() {\n class FlowEntryToken extends this.Token {};\n\n FlowEntryToken.prototype.id = ',';\n\n return FlowEntryToken;\n\n }).call(this);\n\n this.AliasToken = (function() {\n class AliasToken extends this.Token {\n constructor(value, start_mark, end_mark) {\n super(start_mark, end_mark);\n this.value = value;\n }\n\n };\n\n AliasToken.prototype.id = '';\n\n return AliasToken;\n\n }).call(this);\n\n this.AnchorToken = (function() {\n class AnchorToken extends this.Token {\n constructor(value, start_mark, end_mark) {\n super(start_mark, end_mark);\n this.value = value;\n }\n\n };\n\n AnchorToken.prototype.id = '';\n\n return AnchorToken;\n\n }).call(this);\n\n this.TagToken = (function() {\n class TagToken extends this.Token {\n constructor(value, start_mark, end_mark) {\n super(start_mark, end_mark);\n this.value = value;\n }\n\n };\n\n TagToken.prototype.id = '';\n\n return TagToken;\n\n }).call(this);\n\n this.ScalarToken = (function() {\n class ScalarToken extends this.Token {\n constructor(value, plain, start_mark, end_mark, style) {\n super(start_mark, end_mark);\n this.value = value;\n this.plain = plain;\n this.style = style;\n }\n\n };\n\n ScalarToken.prototype.id = '';\n\n return ScalarToken;\n\n }).call(this);\n\n}).call(this);\n", "(function() {\n var MarkedYAMLError, SimpleKey, tokens, util,\n hasProp = {}.hasOwnProperty,\n indexOf = [].indexOf;\n\n ({MarkedYAMLError} = require('./errors'));\n\n tokens = require('./tokens');\n\n util = require('./util');\n\n /*\n The Scanner throws these.\n */\n this.ScannerError = class ScannerError extends MarkedYAMLError {};\n\n /*\n Represents a possible simple key.\n */\n SimpleKey = class SimpleKey {\n constructor(token_number1, required1, index, line, column1, mark1) {\n this.token_number = token_number1;\n this.required = required1;\n this.index = index;\n this.line = line;\n this.column = column1;\n this.mark = mark1;\n }\n\n };\n\n /*\n The Scanner class deals with converting a YAML stream into a token stream.\n */\n this.Scanner = (function() {\n var C_LB, C_NUMBERS, C_WS, ESCAPE_CODES, ESCAPE_REPLACEMENTS, ctor;\n\n class Scanner {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n /*\n Initialise the Scanner\n */\n initialise() {\n // Have we reached the end of the stream?\n this.done = false;\n // How many unclosed '{' or '[' have been seen. '0' implies block context.\n this.flow_level = 0;\n // List of processed tokens not yet emitted.\n this.tokens = [];\n // Add the STREAM-START token.\n this.fetch_stream_start();\n // Number of tokens emitted through the `get_token` method.\n this.tokens_taken = 0;\n // Current indentation level. '-1' means no indentation has been seen.\n this.indent = -1;\n // Previous indentation levels.\n this.indents = [];\n // Simple Key Treatment\n // A simple key is a key that is not denoted by the '?' indicator, e.g.\n // block simple key: value\n // ? not a simple key\n // : { flow simple key: value }\n // We emit the KEY token before all keys, so when we find a potential\n // simple key, we try to locate the corresponding ':' indicator. Simple\n // keys should be limited to a single line and 1024 characters.\n\n // Can a simple key start at the current position? A simple key may\n // start\n // at the beginning of the line, not counting indentation spaces\n // (block context)\n // after '{', '[', ',' (flow context)\n // after '?', ':', '-' (block context)\n // In the block context, this flag also signifies if a block collection\n // may start at the current position.\n this.allow_simple_key = true;\n // Keep track of possible simple keys. This is an object. The key is\n // `flow_level`; there can be no more than one possible simple key for\n // each level. The value is a SimpleKey object. A simple key may start\n // with ALIAS, ANCHOR, TAG, SCALAR (flow), '[' or '{' tokens.\n return this.possible_simple_keys = {};\n }\n\n // API methods.\n /*\n Check if the next token is one of the given types.\n */\n check_token(...choices) {\n var choice, i, len;\n while (this.need_more_tokens()) {\n this.fetch_more_tokens();\n }\n if (this.tokens.length !== 0) {\n if (choices.length === 0) {\n return true;\n }\n for (i = 0, len = choices.length; i < len; i++) {\n choice = choices[i];\n if (this.tokens[0] instanceof choice) {\n return true;\n }\n }\n }\n return false;\n }\n\n /*\n Return the next token, but do not delete it from the queue.\n */\n peek_token() {\n while (this.need_more_tokens()) {\n this.fetch_more_tokens();\n }\n if (this.tokens.length !== 0) {\n return this.tokens[0];\n }\n }\n\n /*\n Return the next token, and remove it from the queue.\n */\n get_token() {\n while (this.need_more_tokens()) {\n this.fetch_more_tokens();\n }\n if (this.tokens.length !== 0) {\n this.tokens_taken++;\n return this.tokens.shift();\n }\n }\n\n // Non-API methods.\n need_more_tokens() {\n if (this.done) {\n return false;\n }\n if (this.tokens.length === 0) {\n return true;\n }\n // The current token may be a potential simple key, so we need to look\n // further.\n this.stale_possible_simple_keys();\n if (this.next_possible_simple_key() === this.tokens_taken) {\n return true;\n }\n return false;\n }\n\n fetch_more_tokens() {\n var char;\n // Eat whitespace and comments until we reach the next token.\n this.scan_to_next_token();\n // Remove obsolete possible simple keys\n this.stale_possible_simple_keys();\n // Compare the current indentation and column. It may add some tokens and\n // decrease the current indentation level.\n this.unwind_indent(this.column);\n // Peek the next character.\n char = this.peek();\n if (char === '\\x00') {\n // Is it the end of stream?\n return this.fetch_stream_end();\n }\n if (char === '%' && this.check_directive()) {\n // Is it a directive?\n return this.fetch_directive();\n }\n if (char === '-' && this.check_document_start()) {\n // Is it the document start?\n return this.fetch_document_start();\n }\n if (char === '.' && this.check_document_end()) {\n // Is it the document end?\n return this.fetch_document_end();\n }\n if (char === '[') {\n // TODO: support for BOM within a stream.\n\n // Is it the flow sequence start indicator?\n return this.fetch_flow_sequence_start();\n }\n if (char === '{') {\n // Is it the flow mapping start indicator?\n return this.fetch_flow_mapping_start();\n }\n if (char === ']') {\n // Is it the flow sequence end indicator?\n return this.fetch_flow_sequence_end();\n }\n if (char === '}') {\n // Is it the flow mapping end indicator?\n return this.fetch_flow_mapping_end();\n }\n if (char === ',') {\n // Is it the flow entry indicator?\n return this.fetch_flow_entry();\n }\n if (char === '-' && this.check_block_entry()) {\n // Is it the block entry indicator?\n return this.fetch_block_entry();\n }\n if (char === '?' && this.check_key()) {\n // Is it the key indicator?\n return this.fetch_key();\n }\n if (char === ':' && this.check_value()) {\n // Is it the value indicator?\n return this.fetch_value();\n }\n if (char === '*') {\n // Is it an alias?\n return this.fetch_alias();\n }\n if (char === '&') {\n // Is it an anchor?\n return this.fetch_anchor();\n }\n if (char === '!') {\n // Is it a tag?\n return this.fetch_tag();\n }\n if (char === '|' && this.flow_level === 0) {\n // Is it a literal scalar?\n return this.fetch_literal();\n }\n if (char === '>' && this.flow_level === 0) {\n // Is it a folded scalar?\n return this.fetch_folded();\n }\n if (char === '\\'') {\n // Is it a single quoted scalar?\n return this.fetch_single();\n }\n if (char === '\"') {\n // Is it a double quoted scalar?\n return this.fetch_double();\n }\n if (this.check_plain()) {\n // It must be a plain scalar then.\n return this.fetch_plain();\n }\n // No? It's an error.\n throw new exports.ScannerError('while scanning for the next token', null, `found character ${char} that cannot start any token`, this.get_mark());\n }\n\n // Simple keys treatment.\n /*\n Return the number of the nearest possible simple key.\n */\n next_possible_simple_key() {\n var key, level, min_token_number, ref;\n min_token_number = null;\n ref = this.possible_simple_keys;\n for (level in ref) {\n if (!hasProp.call(ref, level)) continue;\n key = ref[level];\n if (min_token_number === null || key.token_number < min_token_number) {\n min_token_number = key.token_number;\n }\n }\n return min_token_number;\n }\n\n /*\n Remove entries that are no longer possible simple keys. According to the\n YAML spec, simple keys:\n should be limited to a single line\n should be no longer than 1024 characters\n Disabling this procedure will allow simple keys of any length and height\n (may cause problems if indentation is broken though).\n */\n stale_possible_simple_keys() {\n var key, level, ref, results;\n ref = this.possible_simple_keys;\n results = [];\n for (level in ref) {\n if (!hasProp.call(ref, level)) continue;\n key = ref[level];\n if (key.line === this.line && this.index - key.index <= 1024) {\n continue;\n }\n if (!key.required) {\n results.push(delete this.possible_simple_keys[level]);\n } else {\n throw new exports.ScannerError('while scanning a simple key', key.mark, 'could not find expected \\':\\'', this.get_mark());\n }\n }\n return results;\n }\n\n /*\n The next token may start a simple key. We check if it's possible and save\n its position. This function is called for ALIAS, ANCHOR, TAG,\n SCALAR (flow),'[' and '{'.\n */\n save_possible_simple_key() {\n var required, token_number;\n // Check if a simple key is required at the current position.\n required = this.flow_level === 0 && this.indent === this.column;\n if (required && !this.allow_simple_key) {\n // A simple key is required only if it is the first token in the current\n // line. Therefore it is always allowed.\n throw new Error('logic failure');\n }\n // If simple keys aren't allowed here we're done.\n if (!this.allow_simple_key) {\n return;\n }\n // The next token might be a simple key. Let's save its number and\n // position.\n this.remove_possible_simple_key();\n token_number = this.tokens_taken + this.tokens.length;\n return this.possible_simple_keys[this.flow_level] = new SimpleKey(token_number, required, this.index, this.line, this.column, this.get_mark());\n }\n\n /*\n Remove the saved possible simple key at the current flow level.\n */\n remove_possible_simple_key() {\n var key;\n if (!(key = this.possible_simple_keys[this.flow_level])) {\n return;\n }\n if (!key.required) {\n return delete this.possible_simple_keys[this.flow_level];\n } else {\n throw new exports.ScannerError('while scanning a simple key', key.mark, 'could not find expected \\':\\'', this.get_mark());\n }\n }\n\n // Indentation functions\n /*\n In flow context, tokens should respect indentation.\n Actually the condition should be `self.indent >= column` according to\n the spec. But this condition will prohibit intuitively correct\n constructions such as\n key : {\n }\n */\n unwind_indent(column) {\n var mark, results;\n // In the flow context, indentation is ignored. We make the scanner less\n // restrictive than the specification requires.\n if (this.flow_level !== 0) {\n return;\n }\n results = [];\n // In block context we may need to issue the BLOCK-END tokens.\n while (this.indent > column) {\n mark = this.get_mark();\n this.indent = this.indents.pop();\n results.push(this.tokens.push(new tokens.BlockEndToken(mark, mark)));\n }\n return results;\n }\n\n /*\n Check if we need to increase indentation.\n */\n add_indent(column) {\n if (!(column > this.indent)) {\n return false;\n }\n this.indents.push(this.indent);\n this.indent = column;\n return true;\n }\n\n // Fetchers.\n fetch_stream_start() {\n var mark;\n mark = this.get_mark();\n return this.tokens.push(new tokens.StreamStartToken(mark, mark, this.encoding));\n }\n\n fetch_stream_end() {\n var mark;\n // Set the current indentation to -1.\n this.unwind_indent(-1);\n // Reset simple keys.\n this.remove_possible_simple_key();\n this.allow_possible_simple_key = false;\n this.possible_simple_keys = {};\n mark = this.get_mark();\n this.tokens.push(new tokens.StreamEndToken(mark, mark));\n // The stream is finished.\n return this.done = true;\n }\n\n fetch_directive() {\n // Set the current indentation to -1.\n this.unwind_indent(-1);\n // Reset simple keys.\n this.remove_possible_simple_key();\n this.allow_simple_key = false;\n // Scan and add DIRECTIVE\n return this.tokens.push(this.scan_directive());\n }\n\n fetch_document_start() {\n return this.fetch_document_indicator(tokens.DocumentStartToken);\n }\n\n fetch_document_end() {\n return this.fetch_document_indicator(tokens.DocumentEndToken);\n }\n\n fetch_document_indicator(TokenClass) {\n var start_mark;\n // Set the current indentation to -1.\n this.unwind_indent(-1);\n // Reset simple keys. Note that there would not be a block collection\n // after '---'.\n this.remove_possible_simple_key();\n this.allow_simple_key = false;\n // Add DOCUMENT-START or DOCUMENT-END.\n start_mark = this.get_mark();\n this.forward(3);\n return this.tokens.push(new TokenClass(start_mark, this.get_mark()));\n }\n\n fetch_flow_sequence_start() {\n return this.fetch_flow_collection_start(tokens.FlowSequenceStartToken);\n }\n\n fetch_flow_mapping_start() {\n return this.fetch_flow_collection_start(tokens.FlowMappingStartToken);\n }\n\n fetch_flow_collection_start(TokenClass) {\n var start_mark;\n // '[' and '{' may start a simple key.\n this.save_possible_simple_key();\n // Increase flow level.\n this.flow_level++;\n // Simple keys are allowed after '[' and '{'\n this.allow_simple_key = true;\n // Add FLOW-SEQUENCE-START or FLOW-MAPPING-START.\n start_mark = this.get_mark();\n this.forward();\n return this.tokens.push(new TokenClass(start_mark, this.get_mark()));\n }\n\n fetch_flow_sequence_end() {\n return this.fetch_flow_collection_end(tokens.FlowSequenceEndToken);\n }\n\n fetch_flow_mapping_end() {\n return this.fetch_flow_collection_end(tokens.FlowMappingEndToken);\n }\n\n fetch_flow_collection_end(TokenClass) {\n var start_mark;\n // Reset possible simple key on the current level.\n this.remove_possible_simple_key();\n // Decrease the flow level\n this.flow_level--;\n // No simple keys after ']' or '}'\n this.allow_simple_key = false;\n // Add FLOW-SEQUENCE-END or FLOW-MAPPING-END.\n start_mark = this.get_mark();\n this.forward();\n return this.tokens.push(new TokenClass(start_mark, this.get_mark()));\n }\n\n fetch_flow_entry() {\n var start_mark;\n // Simple keys are allowed after ','.\n this.allow_simple_key = true;\n // Reset possible simple key on the current level.\n this.remove_possible_simple_key();\n // Add FLOW-ENTRY\n start_mark = this.get_mark();\n this.forward();\n return this.tokens.push(new tokens.FlowEntryToken(start_mark, this.get_mark()));\n }\n\n fetch_block_entry() {\n var mark, start_mark;\n // Block context needs additional checks\n if (this.flow_level === 0) {\n // Are we allowed to start a new entry?\n if (!this.allow_simple_key) {\n throw new exports.ScannerError(null, null, 'sequence entries are not allowed here', this.get_mark());\n }\n // We may need to add BLOCK-SEQUENCE-START\n if (this.add_indent(this.column)) {\n mark = this.get_mark();\n this.tokens.push(new tokens.BlockSequenceStartToken(mark, mark));\n }\n }\n // It's an error for the block entry to occur in the flow context but we\n // let the parser detect this.\n\n // Simple keys are allowed after '-'\n this.allow_simple_key = true;\n // Reset possible simple key on the current level.\n this.remove_possible_simple_key();\n // Add BLOCK-ENTRY\n start_mark = this.get_mark();\n this.forward();\n return this.tokens.push(new tokens.BlockEntryToken(start_mark, this.get_mark()));\n }\n\n fetch_key() {\n var mark, start_mark;\n // Block context needs additional checks.\n if (this.flow_level === 0) {\n // Are we allowed to start a key?\n if (!this.allow_simple_key) {\n throw new exports.ScannerError(null, null, 'mapping keys are not allowed here', this.get_mark());\n }\n // We may need to add BLOCK-MAPPING-START.\n if (this.add_indent(this.column)) {\n mark = this.get_mark();\n this.tokens.push(new tokens.BlockMappingStartToken(mark, mark));\n }\n }\n // Simple keys are allowed after '?' in the flow context.\n this.allow_simple_key = !this.flow_level;\n // Reset possible simple key on the current level.\n this.remove_possible_simple_key();\n // Add KEY.\n start_mark = this.get_mark();\n this.forward();\n return this.tokens.push(new tokens.KeyToken(start_mark, this.get_mark()));\n }\n\n fetch_value() {\n var key, mark, start_mark;\n // Do we determine a simple key?\n if (key = this.possible_simple_keys[this.flow_level]) {\n // Add KEY.\n delete this.possible_simple_keys[this.flow_level];\n this.tokens.splice(key.token_number - this.tokens_taken, 0, new tokens.KeyToken(key.mark, key.mark));\n // If this key starts a new block mapping we need to add\n // BLOCK-MAPPING-START.\n if (this.flow_level === 0) {\n if (this.add_indent(key.column)) {\n this.tokens.splice(key.token_number - this.tokens_taken, 0, new tokens.BlockMappingStartToken(key.mark, key.mark));\n }\n }\n // There cannot be two simple keys one after the other.\n this.allow_simple_key = false;\n } else {\n // Block context needs additional checks.\n // TODO: do we really need them? Parser will catch them anyway.\n // It must be part of a complex key.\n if (this.flow_level === 0) {\n // We are allowed to start a complex value if and only if we can start\n // a simple key.\n if (!this.allow_simple_key) {\n throw new exports.ScannerError(null, null, 'mapping values are not allowed here', this.get_mark());\n }\n // If this value starts a new block mapping we need to add\n // BLOCK-MAPPING-START. It will be detected as an error later by the\n // parser.\n if (this.add_indent(this.column)) {\n mark = this.get_mark();\n this.tokens.push(new tokens.BlockMappingStartToken(mark, mark));\n }\n }\n // Simple keys are allowed after ':' in the block context.\n this.allow_simple_key = !this.flow_level;\n // Reset possible simple key on the current level.\n this.remove_possible_simple_key();\n }\n // Add VALUE.\n start_mark = this.get_mark();\n this.forward();\n return this.tokens.push(new tokens.ValueToken(start_mark, this.get_mark()));\n }\n\n fetch_alias() {\n // ALIAS could be a simple key.\n this.save_possible_simple_key();\n // No simple keys after ALIAS.\n this.allow_simple_key = false;\n // Scan and add ALIAS.\n return this.tokens.push(this.scan_anchor(tokens.AliasToken));\n }\n\n fetch_anchor() {\n // ANCHOR could start a simple key.\n this.save_possible_simple_key();\n // No simple keys allowed after ANCHOR.\n this.allow_simple_key = false;\n // Scan and add ANCHOR.\n return this.tokens.push(this.scan_anchor(tokens.AnchorToken));\n }\n\n fetch_tag() {\n // TAG could start a simple key\n this.save_possible_simple_key();\n // No simple keys after TAG.\n this.allow_simple_key = false;\n // Scan and add TAG.\n return this.tokens.push(this.scan_tag());\n }\n\n fetch_literal() {\n return this.fetch_block_scalar('|');\n }\n\n fetch_folded() {\n return this.fetch_block_scalar('>');\n }\n\n fetch_block_scalar(style) {\n // A simple key may follow a block sclar.\n this.allow_simple_key = true;\n // Reset possible simple key on the current level.\n this.remove_possible_simple_key();\n // Scan and add SCALAR.\n return this.tokens.push(this.scan_block_scalar(style));\n }\n\n fetch_single() {\n return this.fetch_flow_scalar('\\'');\n }\n\n fetch_double() {\n return this.fetch_flow_scalar('\"');\n }\n\n fetch_flow_scalar(style) {\n // A flow scalar could be a simple key.\n this.save_possible_simple_key();\n // No simple keys after flow scalars.\n this.allow_simple_key = false;\n // Scan and add SCALAR.\n return this.tokens.push(this.scan_flow_scalar(style));\n }\n\n fetch_plain() {\n // A plain scalar could be a simple key.\n this.save_possible_simple_key();\n // No simple keys after plain scalars. But note that `scan_plain` will\n // change this flag if the scan is finished at the beginning of the line.\n this.allow_simple_key = false;\n // Scan and add SCALAR. May change `allow_simple_key`.\n return this.tokens.push(this.scan_plain());\n }\n\n // Checkers.\n /*\n DIRECTIVE: ^ '%'\n */\n check_directive() {\n if (this.column === 0) {\n // The % indicator has already been checked.\n return true;\n }\n return false;\n }\n\n /*\n DOCUMENT-START: ^ '---' (' '|'\\n')\n */\n check_document_start() {\n var ref;\n if (this.column === 0 && this.prefix(3) === '---' && (ref = this.peek(3), indexOf.call(C_LB + C_WS + '\\x00', ref) >= 0)) {\n return true;\n }\n return false;\n }\n\n /*\n DOCUMENT-END: ^ '...' (' '|'\\n')\n */\n check_document_end() {\n var ref;\n if (this.column === 0 && this.prefix(3) === '...' && (ref = this.peek(3), indexOf.call(C_LB + C_WS + '\\x00', ref) >= 0)) {\n return true;\n }\n return false;\n }\n\n /*\n BLOCK-ENTRY: '-' (' '|'\\n')\n */\n check_block_entry() {\n var ref;\n return ref = this.peek(1), indexOf.call(C_LB + C_WS + '\\x00', ref) >= 0;\n }\n\n /*\n KEY (flow context): '?'\n KEY (block context): '?' (' '|'\\n')\n */\n check_key() {\n var ref;\n if (this.flow_level !== 0) {\n // KEY (flow context)\n return true;\n }\n // KEY (block context)\n return ref = this.peek(1), indexOf.call(C_LB + C_WS + '\\x00', ref) >= 0;\n }\n\n /*\n VALUE (flow context): ':'\n VALUE (block context): ':' (' '|'\\n')\n */\n check_value() {\n var ref;\n if (this.flow_level !== 0) {\n // VALUE (flow context)\n return true;\n }\n // VALUE (block context)\n return ref = this.peek(1), indexOf.call(C_LB + C_WS + '\\x00', ref) >= 0;\n }\n\n /*\n A plain scalar may start with any non-space character except:\n '-', '?', ':', ',', '[', ']', '{', '}',\n '#', '&', '*', '!', '|', '>', '\\'', '\"',\n '%', '@', '`'.\n\n It may also start with\n '-', '?', ':'\n if it is followed by a non-space character.\n\n Note that we limit the last rule to the block context (except the '-'\n character) because we want the flow context to be space independent.\n */\n check_plain() {\n var char, ref;\n char = this.peek();\n return indexOf.call(C_LB + C_WS + '\\x00-?:,[]{}#&*!|>\\'\"%@`', char) < 0 || ((ref = this.peek(1), indexOf.call(C_LB + C_WS + '\\x00', ref) < 0) && (char === '-' || (this.flow_level === 0 && indexOf.call('?:', char) >= 0)));\n }\n\n // Scanners.\n /*\n We ignore spaces, line breaks and comments.\n If we find a line break in the block context, we set the flag\n `allow_simple_key` on.\n The byte order mark is stripped if it's the first character in the stream.\n We do not yet support BOM inside the stream as the specification requires.\n Any such mark will be considered as a part of the document.\n\n TODO: We need to make tab handling rules more sane. A good rule is\n Tabs cannot precede tokens BLOCK-SEQUENCE-START, BLOCK-MAPPING-START,\n BLOCK-END, KEY (block context), VALUE (block context), BLOCK-ENTRY\n So the tab checking code is\n @allow_simple_key = off if \n We also need to add the check for `allow_simple_key is on` to\n `unwind_indent` before issuing BLOCK-END. Scanners for block, flow and\n plain scalars need to be modified.\n */\n scan_to_next_token() {\n var found, ref, results;\n if (this.index === 0 && this.peek() === '\\uFEFF') {\n this.forward();\n }\n found = false;\n results = [];\n while (!found) {\n while (this.peek() === ' ') {\n this.forward();\n }\n if (this.peek() === '#') {\n while (ref = this.peek(), indexOf.call(C_LB + '\\x00', ref) < 0) {\n this.forward();\n }\n }\n if (this.scan_line_break()) {\n if (this.flow_level === 0) {\n results.push(this.allow_simple_key = true);\n } else {\n results.push(void 0);\n }\n } else {\n results.push(found = true);\n }\n }\n return results;\n }\n\n /*\n See the specification for details.\n */\n scan_directive() {\n var end_mark, name, ref, start_mark, value;\n start_mark = this.get_mark();\n this.forward();\n name = this.scan_directive_name(start_mark);\n value = null;\n if (name === 'YAML') {\n value = this.scan_yaml_directive_value(start_mark);\n end_mark = this.get_mark();\n } else if (name === 'TAG') {\n value = this.scan_tag_directive_value(start_mark);\n end_mark = this.get_mark();\n } else {\n end_mark = this.get_mark();\n while (ref = this.peek(), indexOf.call(C_LB + '\\x00', ref) < 0) {\n this.forward();\n }\n }\n this.scan_directive_ignored_line(start_mark);\n return new tokens.DirectiveToken(name, value, start_mark, end_mark);\n }\n\n /*\n See the specification for details.\n */\n scan_directive_name(start_mark) {\n var char, length, value;\n length = 0;\n char = this.peek(length);\n while (('0' <= char && char <= '9') || ('A' <= char && char <= 'Z') || ('a' <= char && char <= 'z') || indexOf.call('-_', char) >= 0) {\n length++;\n char = this.peek(length);\n }\n if (length === 0) {\n throw new exports.ScannerError('while scanning a directive', start_mark, `expected alphanumeric or numeric character but found ${char}`, this.get_mark());\n }\n value = this.prefix(length);\n this.forward(length);\n char = this.peek();\n if (indexOf.call(C_LB + '\\x00 ', char) < 0) {\n throw new exports.ScannerError('while scanning a directive', start_mark, `expected alphanumeric or numeric character but found ${char}`, this.get_mark());\n }\n return value;\n }\n\n /*\n See the specification for details.\n */\n scan_yaml_directive_value(start_mark) {\n var major, minor, ref;\n while (this.peek() === ' ') {\n this.forward();\n }\n major = this.scan_yaml_directive_number(start_mark);\n if (this.peek() !== '.') {\n throw new exports.ScannerError('while scanning a directive', start_mark, `expected a digit or '.' but found ${this.peek()}`, this.get_mark());\n }\n this.forward();\n minor = this.scan_yaml_directive_number(start_mark);\n if (ref = this.peek(), indexOf.call(C_LB + '\\x00 ', ref) < 0) {\n throw new exports.ScannerError('while scanning a directive', start_mark, `expected a digit or ' ' but found ${this.peek()}`, this.get_mark());\n }\n return [major, minor];\n }\n\n /*\n See the specification for details.\n */\n scan_yaml_directive_number(start_mark) {\n var char, length, ref, value;\n char = this.peek();\n if (!(('0' <= char && char <= '9'))) {\n throw new exports.ScannerError('while scanning a directive', start_mark, `expected a digit but found ${char}`, this.get_mark());\n }\n length = 0;\n while (('0' <= (ref = this.peek(length)) && ref <= '9')) {\n length++;\n }\n value = parseInt(this.prefix(length));\n this.forward(length);\n return value;\n }\n\n /*\n See the specification for details.\n */\n scan_tag_directive_value(start_mark) {\n var handle, prefix;\n while (this.peek() === ' ') {\n this.forward();\n }\n handle = this.scan_tag_directive_handle(start_mark);\n while (this.peek() === ' ') {\n this.forward();\n }\n prefix = this.scan_tag_directive_prefix(start_mark);\n return [handle, prefix];\n }\n\n /*\n See the specification for details.\n */\n scan_tag_directive_handle(start_mark) {\n var char, value;\n value = this.scan_tag_handle('directive', start_mark);\n char = this.peek();\n if (char !== ' ') {\n throw new exports.ScannerError('while scanning a directive', start_mark, `expected ' ' but found ${char}`, this.get_mark());\n }\n return value;\n }\n\n /*\n See the specification for details.\n */\n scan_tag_directive_prefix(start_mark) {\n var char, value;\n value = this.scan_tag_uri('directive', start_mark);\n char = this.peek();\n if (indexOf.call(C_LB + '\\x00 ', char) < 0) {\n throw new exports.ScannerError('while scanning a directive', start_mark, `expected ' ' but found ${char}`, this.get_mark());\n }\n return value;\n }\n\n /*\n See the specification for details.\n */\n scan_directive_ignored_line(start_mark) {\n var char, ref;\n while (this.peek() === ' ') {\n this.forward();\n }\n if (this.peek() === '#') {\n while (ref = this.peek(), indexOf.call(C_LB + '\\x00', ref) < 0) {\n this.forward();\n }\n }\n char = this.peek();\n if (indexOf.call(C_LB + '\\x00', char) < 0) {\n throw new exports.ScannerError('while scanning a directive', start_mark, `expected a comment or a line break but found ${char}`, this.get_mark());\n }\n return this.scan_line_break();\n }\n\n /*\n The specification does not restrict characters for anchors and aliases.\n This may lead to problems, for instance, the document:\n [ *alias, value ]\n can be interpteted in two ways, as\n [ \"value\" ]\n and\n [ *alias , \"value\" ]\n Therefore we restrict aliases to numbers and ASCII letters.\n */\n scan_anchor(TokenClass) {\n var char, indicator, length, name, start_mark, value;\n start_mark = this.get_mark();\n indicator = this.peek();\n if (indicator === '*') {\n name = 'alias';\n } else {\n name = 'anchor';\n }\n this.forward();\n length = 0;\n char = this.peek(length);\n while (('0' <= char && char <= '9') || ('A' <= char && char <= 'Z') || ('a' <= char && char <= 'z') || indexOf.call('-_', char) >= 0) {\n length++;\n char = this.peek(length);\n }\n if (length === 0) {\n throw new exports.ScannerError(`while scanning an ${name}`, start_mark, `expected alphabetic or numeric character but found '${char}'`, this.get_mark());\n }\n value = this.prefix(length);\n this.forward(length);\n char = this.peek();\n if (indexOf.call(C_LB + C_WS + '\\x00' + '?:,]}%@`', char) < 0) {\n throw new exports.ScannerError(`while scanning an ${name}`, start_mark, `expected alphabetic or numeric character but found '${char}'`, this.get_mark());\n }\n return new TokenClass(value, start_mark, this.get_mark());\n }\n\n /*\n See the specification for details.\n */\n scan_tag() {\n var char, handle, length, start_mark, suffix, use_handle;\n start_mark = this.get_mark();\n char = this.peek(1);\n if (char === '<') {\n handle = null;\n this.forward(2);\n suffix = this.scan_tag_uri('tag', start_mark);\n if (this.peek() !== '>') {\n throw new exports.ScannerError('while parsing a tag', start_mark, `expected '>' but found ${this.peek()}`, this.get_mark());\n }\n this.forward();\n } else if (indexOf.call(C_LB + C_WS + '\\x00', char) >= 0) {\n handle = null;\n suffix = '!';\n this.forward();\n } else {\n length = 1;\n use_handle = false;\n while (indexOf.call(C_LB + '\\x00 ', char) < 0) {\n if (char === '!') {\n use_handle = true;\n break;\n }\n length++;\n char = this.peek(length);\n }\n if (use_handle) {\n handle = this.scan_tag_handle('tag', start_mark);\n } else {\n handle = '!';\n this.forward();\n }\n suffix = this.scan_tag_uri('tag', start_mark);\n }\n char = this.peek();\n if (indexOf.call(C_LB + '\\x00 ', char) < 0) {\n throw new exports.ScannerError('while scanning a tag', start_mark, `expected ' ' but found ${char}`, this.get_mark());\n }\n return new tokens.TagToken([handle, suffix], start_mark, this.get_mark());\n }\n\n /*\n See the specification for details.\n */\n scan_block_scalar(style) {\n var breaks, chomping, chunks, end_mark, folded, increment, indent, leading_non_space, length, line_break, max_indent, min_indent, ref, ref1, ref2, start_mark;\n folded = style === '>';\n chunks = [];\n start_mark = this.get_mark();\n // Scan the header.\n this.forward();\n [chomping, increment] = this.scan_block_scalar_indicators(start_mark);\n this.scan_block_scalar_ignored_line(start_mark);\n // Determine the indentation level and go to the first non-empty line.\n min_indent = this.indent + 1;\n if (min_indent < 1) {\n min_indent = 1;\n }\n if (increment == null) {\n [breaks, max_indent, end_mark] = this.scan_block_scalar_indentation();\n indent = Math.max(min_indent, max_indent);\n } else {\n indent = min_indent + increment - 1;\n [breaks, end_mark] = this.scan_block_scalar_breaks(indent);\n }\n line_break = '';\n // Scan the inner part of the block scalar.\n while (this.column === indent && this.peek() !== '\\x00') {\n chunks = chunks.concat(breaks);\n leading_non_space = (ref = this.peek(), indexOf.call(' \\t', ref) < 0);\n length = 0;\n while (ref1 = this.peek(length), indexOf.call(C_LB + '\\x00', ref1) < 0) {\n length++;\n }\n chunks.push(this.prefix(length));\n this.forward(length);\n line_break = this.scan_line_break();\n [breaks, end_mark] = this.scan_block_scalar_breaks(indent);\n if (this.column === indent && this.peek() !== '\\x00') {\n // Unfortunately, folding rules are ambiguous. This is the folding\n // according to the specification:\n if (folded && line_break === '\\n' && leading_non_space && (ref2 = this.peek(), indexOf.call(' \\t', ref2) < 0)) {\n if (util.is_empty(breaks)) {\n chunks.push(' ');\n }\n } else {\n chunks.push(line_break);\n }\n } else {\n // This is Clark Evan's interpretation (also in the spec examples):\n // if folded and line_break is '\\n'\n // if not breaks\n // if @peek() not in ' \\t'\n // chunks.push ' '\n // else\n // chunks.push line_break\n // else\n // chunks.push line_break\n break;\n }\n }\n if (chomping !== false) {\n // Chomp the tail\n chunks.push(line_break);\n }\n if (chomping === true) {\n chunks = chunks.concat(breaks);\n }\n // And we're done.\n return new tokens.ScalarToken(chunks.join(''), false, start_mark, end_mark, style);\n }\n\n /*\n See the specification for details.\n */\n scan_block_scalar_indicators(start_mark) {\n var char, chomping, increment;\n chomping = null;\n increment = null;\n char = this.peek();\n if (indexOf.call('+-', char) >= 0) {\n chomping = char === '+';\n this.forward();\n char = this.peek();\n if (indexOf.call(C_NUMBERS, char) >= 0) {\n increment = parseInt(char);\n if (increment === 0) {\n throw new exports.ScannerError('while scanning a block scalar', start_mark, 'expected indentation indicator in the range 1-9 but found 0', this.get_mark());\n }\n this.forward();\n }\n } else if (indexOf.call(C_NUMBERS, char) >= 0) {\n increment = parseInt(char);\n if (increment === 0) {\n throw new exports.ScannerError('while scanning a block scalar', start_mark, 'expected indentation indicator in the range 1-9 but found 0', this.get_mark());\n }\n this.forward();\n char = this.peek();\n if (indexOf.call('+-', char) >= 0) {\n chomping = char === '+';\n this.forward();\n }\n }\n char = this.peek();\n if (indexOf.call(C_LB + '\\x00 ', char) < 0) {\n throw new exports.ScannerError('while scanning a block scalar', start_mark, `expected chomping or indentation indicators, but found ${char}`, this.get_mark());\n }\n return [chomping, increment];\n }\n\n /*\n See the specification for details.\n */\n scan_block_scalar_ignored_line(start_mark) {\n var char, ref;\n while (this.peek() === ' ') {\n this.forward();\n }\n if (this.peek() === '#') {\n while (ref = this.peek(), indexOf.call(C_LB + '\\x00', ref) < 0) {\n this.forward();\n }\n }\n char = this.peek();\n if (indexOf.call(C_LB + '\\x00', char) < 0) {\n throw new exports.ScannerError('while scanning a block scalar', start_mark, `expected a comment or a line break but found ${char}`, this.get_mark());\n }\n return this.scan_line_break();\n }\n\n /*\n See the specification for details.\n */\n scan_block_scalar_indentation() {\n var chunks, end_mark, max_indent, ref;\n chunks = [];\n max_indent = 0;\n end_mark = this.get_mark();\n while (ref = this.peek(), indexOf.call(C_LB + ' ', ref) >= 0) {\n if (this.peek() !== ' ') {\n chunks.push(this.scan_line_break());\n end_mark = this.get_mark();\n } else {\n this.forward();\n if (this.column > max_indent) {\n max_indent = this.column;\n }\n }\n }\n return [chunks, max_indent, end_mark];\n }\n\n /*\n See the specification for details.\n */\n scan_block_scalar_breaks(indent) {\n var chunks, end_mark, ref;\n chunks = [];\n end_mark = this.get_mark();\n while (this.column < indent && this.peek() === ' ') {\n this.forward();\n }\n while (ref = this.peek(), indexOf.call(C_LB, ref) >= 0) {\n chunks.push(this.scan_line_break());\n end_mark = this.get_mark();\n while (this.column < indent && this.peek() === ' ') {\n this.forward();\n }\n }\n return [chunks, end_mark];\n }\n\n /*\n See the specification for details.\n Note that we loose indentation rules for quoted scalars. Quoted scalars\n don't need to adhere indentation because \" and ' clearly mark the beginning\n and the end of them. Therefore we are less restrictive than the\n specification requires. We only need to check that document separators are\n not included in scalars.\n */\n scan_flow_scalar(style) {\n var chunks, double, quote, start_mark;\n double = style === '\"';\n chunks = [];\n start_mark = this.get_mark();\n quote = this.peek();\n this.forward();\n chunks = chunks.concat(this.scan_flow_scalar_non_spaces(double, start_mark));\n while (this.peek() !== quote) {\n chunks = chunks.concat(this.scan_flow_scalar_spaces(double, start_mark));\n chunks = chunks.concat(this.scan_flow_scalar_non_spaces(double, start_mark));\n }\n this.forward();\n return new tokens.ScalarToken(chunks.join(''), false, start_mark, this.get_mark(), style);\n }\n\n /*\n See the specification for details.\n */\n scan_flow_scalar_non_spaces(double, start_mark) {\n var char, chunks, code, i, k, length, ref, ref1, ref2;\n chunks = [];\n while (true) {\n length = 0;\n while (ref = this.peek(length), indexOf.call(C_LB + C_WS + '\\'\"\\\\\\x00', ref) < 0) {\n length++;\n }\n if (length !== 0) {\n chunks.push(this.prefix(length));\n this.forward(length);\n }\n char = this.peek();\n if (!double && char === '\\'' && this.peek(1) === '\\'') {\n chunks.push('\\'');\n this.forward(2);\n } else if ((double && char === '\\'') || (!double && indexOf.call('\"\\\\', char) >= 0)) {\n chunks.push(char);\n this.forward();\n } else if (double && char === '\\\\') {\n this.forward();\n char = this.peek();\n if (char in ESCAPE_REPLACEMENTS) {\n chunks.push(ESCAPE_REPLACEMENTS[char]);\n this.forward();\n } else if (char in ESCAPE_CODES) {\n length = ESCAPE_CODES[char];\n this.forward();\n for (k = i = 0, ref1 = length; 0 <= ref1 ? i < ref1 : i > ref1; k = 0 <= ref1 ? ++i : --i) {\n if (ref2 = this.peek(k), indexOf.call(`${C_NUMBERS}ABCDEFabcdef`, ref2) < 0) {\n throw new exports.ScannerError('while scanning a double-quoted scalar', start_mark, `expected escape sequence of ${length} hexadecimal numbers, but found ${this.peek(k)}`, this.get_mark());\n }\n }\n code = parseInt(this.prefix(length), 16);\n chunks.push(String.fromCharCode(code));\n this.forward(length);\n } else if (indexOf.call(C_LB, char) >= 0) {\n this.scan_line_break();\n chunks = chunks.concat(this.scan_flow_scalar_breaks(double, start_mark));\n } else {\n throw new exports.ScannerError('while scanning a double-quoted scalar', start_mark, `found unknown escape character ${char}`, this.get_mark());\n }\n } else {\n return chunks;\n }\n }\n }\n\n /*\n See the specification for details.\n */\n scan_flow_scalar_spaces(double, start_mark) {\n var breaks, char, chunks, length, line_break, ref, whitespaces;\n chunks = [];\n length = 0;\n while (ref = this.peek(length), indexOf.call(C_WS, ref) >= 0) {\n length++;\n }\n whitespaces = this.prefix(length);\n this.forward(length);\n char = this.peek();\n if (char === '\\x00') {\n throw new exports.ScannerError('while scanning a quoted scalar', start_mark, 'found unexpected end of stream', this.get_mark());\n }\n if (indexOf.call(C_LB, char) >= 0) {\n line_break = this.scan_line_break();\n breaks = this.scan_flow_scalar_breaks(double, start_mark);\n if (line_break !== '\\n') {\n chunks.push(line_break);\n } else if (breaks.length === 0) {\n chunks.push(' ');\n }\n chunks = chunks.concat(breaks);\n } else {\n chunks.push(whitespaces);\n }\n return chunks;\n }\n\n /*\n See the specification for details.\n */\n scan_flow_scalar_breaks(double, start_mark) {\n var chunks, prefix, ref, ref1, ref2;\n chunks = [];\n while (true) {\n // Instead of checking for indentation, we check for document separators.\n prefix = this.prefix(3);\n if (prefix === '---' || prefix === '...' && (ref = this.peek(3), indexOf.call(C_LB + C_WS + '\\x00', ref) >= 0)) {\n throw new exports.ScannerError('while scanning a quoted scalar', start_mark, 'found unexpected document separator', this.get_mark());\n }\n while (ref1 = this.peek(), indexOf.call(C_WS, ref1) >= 0) {\n this.forward();\n }\n if (ref2 = this.peek(), indexOf.call(C_LB, ref2) >= 0) {\n chunks.push(this.scan_line_break());\n } else {\n return chunks;\n }\n }\n }\n\n /*\n See the specification for details.\n We add an additional restriction for the flow context:\n plain scalars in the flow context cannot contain ',', ':' and '?'.\n We also keep track of the `allow_simple_key` flag here.\n Indentation rules are loosed for the flow context.\n */\n scan_plain() {\n var char, chunks, end_mark, indent, length, ref, ref1, spaces, start_mark;\n chunks = [];\n start_mark = end_mark = this.get_mark();\n indent = this.indent + 1;\n // We allow zero indentation for scalars, but then we need to check for\n // document separators at the beginning of the line.\n // indent = 1 if indent is 0\n spaces = [];\n while (true) {\n length = 0;\n if (this.peek() === '#') {\n break;\n }\n while (true) {\n char = this.peek(length);\n if (indexOf.call(C_LB + C_WS + '\\x00', char) >= 0 || (this.flow_level === 0 && char === ':' && (ref = this.peek(length + 1), indexOf.call(C_LB + C_WS + '\\x00', ref) >= 0)) || (this.flow_level !== 0 && indexOf.call(',:?[]{}', char) >= 0)) {\n break;\n }\n length++;\n }\n // It's not clear what we should do with ':' in the flow context.\n if (this.flow_level !== 0 && char === ':' && (ref1 = this.peek(length + 1), indexOf.call(C_LB + C_WS + '\\x00,[]{}', ref1) < 0)) {\n this.forward(length);\n throw new exports.ScannerError('while scanning a plain scalar', start_mark, 'found unexpected \\':\\'', this.get_mark(), 'Please check http://pyyaml.org/wiki/YAMLColonInFlowContext');\n }\n if (length === 0) {\n break;\n }\n this.allow_simple_key = false;\n chunks = chunks.concat(spaces);\n chunks.push(this.prefix(length));\n this.forward(length);\n end_mark = this.get_mark();\n spaces = this.scan_plain_spaces(indent, start_mark);\n if ((spaces == null) || spaces.length === 0 || this.peek() === '#' || (this.flow_level === 0 && this.column < indent)) {\n break;\n }\n }\n return new tokens.ScalarToken(chunks.join(''), true, start_mark, end_mark);\n }\n\n /*\n See the specification for details.\n The specification is really confusing about tabs in plain scalars.\n We just forbid them completely. Do not use tabs in YAML!\n */\n scan_plain_spaces(indent, start_mark) {\n var breaks, char, chunks, length, line_break, prefix, ref, ref1, ref2, ref3, whitespaces;\n chunks = [];\n length = 0;\n while (ref = this.peek(length), indexOf.call(' ', ref) >= 0) {\n length++;\n }\n whitespaces = this.prefix(length);\n this.forward(length);\n char = this.peek();\n if (indexOf.call(C_LB, char) >= 0) {\n line_break = this.scan_line_break();\n this.allow_simple_key = true;\n prefix = this.prefix(3);\n if (prefix === '---' || prefix === '...' && (ref1 = this.peek(3), indexOf.call(C_LB + C_WS + '\\x00', ref1) >= 0)) {\n return;\n }\n breaks = [];\n while (ref3 = this.peek(), indexOf.call(C_LB + ' ', ref3) >= 0) {\n if (this.peek() === ' ') {\n this.forward();\n } else {\n breaks.push(this.scan_line_break());\n prefix = this.prefix(3);\n if (prefix === '---' || prefix === '...' && (ref2 = this.peek(3), indexOf.call(C_LB + C_WS + '\\x00', ref2) >= 0)) {\n return;\n }\n }\n }\n if (line_break !== '\\n') {\n chunks.push(line_break);\n } else if (breaks.length === 0) {\n chunks.push(' ');\n }\n chunks = chunks.concat(breaks);\n } else if (whitespaces) {\n chunks.push(whitespaces);\n }\n return chunks;\n }\n\n /*\n See the specification for details.\n For some strange reasons, the specification does not allow '_' in tag\n handles. I have allowed it anyway.\n */\n scan_tag_handle(name, start_mark) {\n var char, length, value;\n char = this.peek();\n if (char !== '!') {\n throw new exports.ScannerError(`while scanning a ${name}`, start_mark, `expected '!' but found ${char}`, this.get_mark());\n }\n length = 1;\n char = this.peek(length);\n if (char !== ' ') {\n while (('0' <= char && char <= '9') || ('A' <= char && char <= 'Z') || ('a' <= char && char <= 'z') || indexOf.call('-_', char) >= 0) {\n length++;\n char = this.peek(length);\n }\n if (char !== '!') {\n this.forward(length);\n throw new exports.ScannerError(`while scanning a ${name}`, start_mark, `expected '!' but found ${char}`, this.get_mark());\n }\n length++;\n }\n value = this.prefix(length);\n this.forward(length);\n return value;\n }\n\n /*\n See the specification for details.\n Note: we do not check if URI is well-formed.\n */\n scan_tag_uri(name, start_mark) {\n var char, chunks, length;\n chunks = [];\n length = 0;\n char = this.peek(length);\n while (('0' <= char && char <= '9') || ('A' <= char && char <= 'Z') || ('a' <= char && char <= 'z') || indexOf.call('-;/?:@&=+$,_.!~*\\'()[]%', char) >= 0) {\n if (char === '%') {\n chunks.push(this.prefix(length));\n this.forward(length);\n length = 0;\n chunks.push(this.scan_uri_escapes(name, start_mark));\n } else {\n length++;\n }\n char = this.peek(length);\n }\n if (length !== 0) {\n chunks.push(this.prefix(length));\n this.forward(length);\n length = 0;\n }\n if (chunks.length === 0) {\n throw new exports.ScannerError(`while parsing a ${name}`, start_mark, `expected URI but found ${char}`, this.get_mark());\n }\n return chunks.join('');\n }\n\n /*\n See the specification for details.\n */\n scan_uri_escapes(name, start_mark) {\n var bytes, i, k, mark;\n bytes = [];\n mark = this.get_mark();\n while (this.peek() === '%') {\n this.forward();\n for (k = i = 0; i <= 2; k = ++i) {\n throw new exports.ScannerError(`while scanning a ${name}`, start_mark, `expected URI escape sequence of 2 hexadecimal numbers but found ${this.peek(k)}`, this.get_mark());\n }\n bytes.push(String.fromCharCode(parseInt(this.prefix(2), 16)));\n this.forward(2);\n }\n return bytes.join('');\n }\n\n /*\n Transforms:\n '\\r\\n' : '\\n'\n '\\r' : '\\n'\n '\\n' : '\\n'\n '\\x85' : '\\n'\n '\\u2028' : '\\u2028'\n '\\u2029 : '\\u2029'\n default : ''\n */\n scan_line_break() {\n var char;\n char = this.peek();\n if (indexOf.call('\\r\\n\\x85', char) >= 0) {\n if (this.prefix(2) === '\\r\\n') {\n this.forward(2);\n } else {\n this.forward();\n }\n return '\\n';\n } else if (indexOf.call('\\u2028\\u2029', char) >= 0) {\n this.forward();\n return char;\n }\n return '';\n }\n\n };\n\n C_LB = '\\r\\n\\x85\\u2028\\u2029';\n\n C_WS = '\\t ';\n\n C_NUMBERS = '0123456789';\n\n ESCAPE_REPLACEMENTS = {\n '0': '\\x00',\n 'a': '\\x07',\n 'b': '\\x08',\n 't': '\\x09',\n '\\t': '\\x09',\n 'n': '\\x0A',\n 'v': '\\x0B',\n 'f': '\\x0C',\n 'r': '\\x0D',\n 'e': '\\x1B',\n ' ': '\\x20',\n '\"': '\"',\n '\\\\': '\\\\',\n 'N': '\\x85',\n '_': '\\xA0',\n 'L': '\\u2028',\n 'P': '\\u2029'\n };\n\n ESCAPE_CODES = {\n 'x': 2,\n 'u': 4,\n 'U': 8\n };\n\n ctor = Scanner.prototype.initialise;\n\n return Scanner;\n\n }).call(this);\n\n}).call(this);\n", "(function() {\n var MarkedYAMLError, events, tokens,\n hasProp = {}.hasOwnProperty;\n\n events = require('./events');\n\n ({MarkedYAMLError} = require('./errors'));\n\n tokens = require('./tokens');\n\n this.ParserError = class ParserError extends MarkedYAMLError {};\n\n this.Parser = (function() {\n var DEFAULT_TAGS, ctor;\n\n class Parser {\n constructor() {\n return ctor.apply(this, arguments);\n }\n\n initialise() {\n this.current_event = null;\n this.yaml_version = null;\n this.tag_handles = {};\n this.states = [];\n this.marks = [];\n return this.state = 'parse_stream_start';\n }\n\n /*\n Reset the state attributes.\n */\n dispose() {\n this.states = [];\n return this.state = null;\n }\n\n /*\n Check the type of the next event.\n */\n check_event(...choices) {\n var choice, i, len;\n if (this.current_event === null) {\n if (this.state != null) {\n this.current_event = this[this.state]();\n }\n }\n if (this.current_event !== null) {\n if (choices.length === 0) {\n return true;\n }\n for (i = 0, len = choices.length; i < len; i++) {\n choice = choices[i];\n if (this.current_event instanceof choice) {\n return true;\n }\n }\n }\n return false;\n }\n\n /*\n Get the next event.\n */\n peek_event() {\n if (this.current_event === null && (this.state != null)) {\n this.current_event = this[this.state]();\n }\n return this.current_event;\n }\n\n /*\n Get the event and proceed further.\n */\n get_event() {\n var event;\n if (this.current_event === null && (this.state != null)) {\n this.current_event = this[this.state]();\n }\n event = this.current_event;\n this.current_event = null;\n return event;\n }\n\n // stream ::= STREAM-START implicit_document? explicit_document* STREAM-END\n // implicit_document ::= block_node DOCUMENT-END*\n // explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n /*\n Parse the stream start.\n */\n parse_stream_start() {\n var event, token;\n token = this.get_token();\n event = new events.StreamStartEvent(token.start_mark, token.end_mark);\n // Prepare the next state,\n this.state = 'parse_implicit_document_start';\n return event;\n }\n\n /*\n Parse an implicit document.\n */\n parse_implicit_document_start() {\n var end_mark, event, start_mark, token;\n if (!this.check_token(tokens.DirectiveToken, tokens.DocumentStartToken, tokens.StreamEndToken)) {\n this.tag_handles = DEFAULT_TAGS;\n token = this.peek_token();\n start_mark = end_mark = token.start_mark;\n event = new events.DocumentStartEvent(start_mark, end_mark, false);\n // Prepare the next state\n this.states.push('parse_document_end');\n this.state = 'parse_block_node';\n return event;\n } else {\n return this.parse_document_start();\n }\n }\n\n /*\n Parse an explicit document.\n */\n parse_document_start() {\n var end_mark, event, start_mark, tags, token, version;\n while (this.check_token(tokens.DocumentEndToken)) {\n // Parse any extra document end indicators\n this.get_token();\n }\n if (!this.check_token(tokens.StreamEndToken)) {\n start_mark = this.peek_token().start_mark;\n [version, tags] = this.process_directives();\n if (!this.check_token(tokens.DocumentStartToken)) {\n throw new exports.ParserError(`expected '', but found ${(this.peek_token().id)}`, this.peek_token().start_mark);\n }\n token = this.get_token();\n end_mark = token.end_mark;\n event = new events.DocumentStartEvent(start_mark, end_mark, true, version, tags);\n this.states.push('parse_document_end');\n this.state = 'parse_document_content';\n } else {\n // Parse the end of the stream.\n token = this.get_token();\n event = new events.StreamEndEvent(token.start_mark, token.end_mark);\n if (this.states.length !== 0) {\n throw new Error('assertion error, states should be empty');\n }\n if (this.marks.length !== 0) {\n throw new Error('assertion error, marks should be empty');\n }\n this.state = null;\n }\n return event;\n }\n\n /*\n Parse the document end.\n */\n parse_document_end() {\n var end_mark, event, explicit, start_mark, token;\n token = this.peek_token();\n start_mark = end_mark = token.start_mark;\n explicit = false;\n if (this.check_token(tokens.DocumentEndToken)) {\n token = this.get_token();\n end_mark = token.end_mark;\n explicit = true;\n }\n event = new events.DocumentEndEvent(start_mark, end_mark, explicit);\n // Prepare next state.\n this.state = 'parse_document_start';\n return event;\n }\n\n parse_document_content() {\n var event;\n if (this.check_token(tokens.DirectiveToken, tokens.DocumentStartToken, tokens.DocumentEndToken, tokens.StreamEndToken)) {\n event = this.process_empty_scalar(this.peek_token().start_mark);\n this.state = this.states.pop();\n return event;\n } else {\n return this.parse_block_node();\n }\n }\n\n process_directives() {\n var handle, major, minor, prefix, ref, tag_handles_copy, token, value;\n this.yaml_version = null;\n this.tag_handles = {};\n while (this.check_token(tokens.DirectiveToken)) {\n token = this.get_token();\n if (token.name === 'YAML') {\n if (this.yaml_version !== null) {\n throw new exports.ParserError(null, null, 'found duplicate YAML directive', token.start_mark);\n }\n [major, minor] = token.value;\n if (major !== 1) {\n throw new exports.ParserError(null, null, 'found incompatible YAML document (version 1.* is required)', token.start_mark);\n }\n this.yaml_version = token.value;\n } else if (token.name === 'TAG') {\n [handle, prefix] = token.value;\n if (handle in this.tag_handles) {\n throw new exports.ParserError(null, null, `duplicate tag handle ${handle}`, token.start_mark);\n }\n this.tag_handles[handle] = prefix;\n }\n }\n tag_handles_copy = null;\n ref = this.tag_handles;\n for (handle in ref) {\n if (!hasProp.call(ref, handle)) continue;\n prefix = ref[handle];\n if (tag_handles_copy == null) {\n tag_handles_copy = {};\n }\n tag_handles_copy[handle] = prefix;\n }\n value = [this.yaml_version, tag_handles_copy];\n for (handle in DEFAULT_TAGS) {\n if (!hasProp.call(DEFAULT_TAGS, handle)) continue;\n prefix = DEFAULT_TAGS[handle];\n if (!(prefix in this.tag_handles)) {\n this.tag_handles[handle] = prefix;\n }\n }\n return value;\n }\n\n // block_node_or_indentless_sequence ::= ALIAS\n // | properties (block_content | indentless_sequence)?\n // | block_content\n // | indentless_block_sequence\n // block_node ::= ALIAS\n // | properties block_content?\n // | block_content\n // flow_node ::= ALIAS\n // | properties flow_content?\n // | flow_content\n // properties ::= TAG ANCHOR? | ANCHOR TAG?\n // block_content ::= block_collection | flow_collection | SCALAR\n // flow_content ::= flow_collection | SCALAR\n // block_collection ::= block_sequence | block_mapping\n // flow_collection ::= flow_sequence | flow_mapping\n parse_block_node() {\n return this.parse_node(true);\n }\n\n parse_flow_node() {\n return this.parse_node();\n }\n\n parse_block_node_or_indentless_sequence() {\n return this.parse_node(true, true);\n }\n\n parse_node(block = false, indentless_sequence = false) {\n var anchor, end_mark, event, handle, implicit, node, start_mark, suffix, tag, tag_mark, token;\n if (this.check_token(tokens.AliasToken)) {\n token = this.get_token();\n event = new events.AliasEvent(token.value, token.start_mark, token.end_mark);\n this.state = this.states.pop();\n } else {\n anchor = null;\n tag = null;\n start_mark = end_mark = tag_mark = null;\n if (this.check_token(tokens.AnchorToken)) {\n token = this.get_token();\n start_mark = token.start_mark;\n end_mark = token.end_mark;\n anchor = token.value;\n if (this.check_token(tokens.TagToken)) {\n token = this.get_token();\n tag_mark = token.start_mark;\n end_mark = token.end_mark;\n tag = token.value;\n }\n } else if (this.check_token(tokens.TagToken)) {\n token = this.get_token();\n start_mark = tag_mark = token.start_mark;\n end_mark = token.end_mark;\n tag = token.value;\n if (this.check_token(tokens.AnchorToken)) {\n token = this.get_token();\n end_mark = token.end_mark;\n anchor = token.value;\n }\n }\n if (tag !== null) {\n [handle, suffix] = tag;\n if (handle !== null) {\n if (!(handle in this.tag_handles)) {\n throw new exports.ParserError('while parsing a node', start_mark, `found undefined tag handle ${handle}`, tag_mark);\n }\n tag = this.tag_handles[handle] + suffix;\n } else {\n tag = suffix;\n }\n }\n if (start_mark === null) {\n start_mark = end_mark = this.peek_token().start_mark;\n }\n event = null;\n implicit = tag === null || tag === '!';\n if (indentless_sequence && this.check_token(tokens.BlockEntryToken)) {\n end_mark = this.peek_token().end_mark;\n event = new events.SequenceStartEvent(anchor, tag, implicit, start_mark, end_mark);\n this.state = 'parse_indentless_sequence_entry';\n } else {\n if (this.check_token(tokens.ScalarToken)) {\n token = this.get_token();\n end_mark = token.end_mark;\n if ((token.plain && tag === null) || tag === '!') {\n implicit = [true, false];\n } else if (tag === null) {\n implicit = [false, true];\n } else {\n implicit = [false, false];\n }\n event = new events.ScalarEvent(anchor, tag, implicit, token.value, start_mark, end_mark, token.style);\n this.state = this.states.pop();\n } else if (this.check_token(tokens.FlowSequenceStartToken)) {\n end_mark = this.peek_token().end_mark;\n event = new events.SequenceStartEvent(anchor, tag, implicit, start_mark, end_mark, true);\n this.state = 'parse_flow_sequence_first_entry';\n } else if (this.check_token(tokens.FlowMappingStartToken)) {\n end_mark = this.peek_token().end_mark;\n event = new events.MappingStartEvent(anchor, tag, implicit, start_mark, end_mark, true);\n this.state = 'parse_flow_mapping_first_key';\n } else if (block && this.check_token(tokens.BlockSequenceStartToken)) {\n end_mark = this.peek_token().end_mark;\n event = new events.SequenceStartEvent(anchor, tag, implicit, start_mark, end_mark, false);\n this.state = 'parse_block_sequence_first_entry';\n } else if (block && this.check_token(tokens.BlockMappingStartToken)) {\n end_mark = this.peek_token().end_mark;\n event = new events.MappingStartEvent(anchor, tag, implicit, start_mark, end_mark, false);\n this.state = 'parse_block_mapping_first_key';\n } else if (anchor !== null || tag !== null) {\n // Empty scalars are allowed even if a tag or an anchor is specified.\n event = new events.ScalarEvent(anchor, tag, [implicit, false], '', start_mark, end_mark);\n this.state = this.states.pop();\n } else {\n if (block) {\n node = 'block';\n } else {\n node = 'flow';\n }\n token = this.peek_token();\n throw new exports.ParserError(`while parsing a ${node} node`, start_mark, `expected the node content, but found ${token.id}`, token.start_mark);\n }\n }\n }\n return event;\n }\n\n // block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)*\n // BLOCK-END\n parse_block_sequence_first_entry() {\n var token;\n token = this.get_token();\n this.marks.push(token.start_mark);\n return this.parse_block_sequence_entry();\n }\n\n parse_block_sequence_entry() {\n var event, token;\n if (this.check_token(tokens.BlockEntryToken)) {\n token = this.get_token();\n if (!this.check_token(tokens.BlockEntryToken, tokens.BlockEndToken)) {\n this.states.push('parse_block_sequence_entry');\n return this.parse_block_node();\n } else {\n this.state = 'parse_block_sequence_entry';\n return this.process_empty_scalar(token.end_mark);\n }\n }\n if (!this.check_token(tokens.BlockEndToken)) {\n token = this.peek_token();\n throw new exports.ParserError('while parsing a block collection', this.marks.slice(-1)[0], `expected , but found ${token.id}`, token.start_mark);\n }\n token = this.get_token();\n event = new events.SequenceEndEvent(token.start_mark, token.end_mark);\n this.state = this.states.pop();\n this.marks.pop();\n return event;\n }\n\n // indentless_sequence ::= (BLOCK-ENTRY block_node?)+\n parse_indentless_sequence_entry() {\n var event, token;\n if (this.check_token(tokens.BlockEntryToken)) {\n token = this.get_token();\n if (!this.check_token(tokens.BlockEntryToken, tokens.KeyToken, tokens.ValueToken, tokens.BlockEndToken)) {\n this.states.push('parse_indentless_sequence_entry');\n return this.parse_block_node();\n } else {\n this.state = 'parse_indentless_sequence_entry';\n return this.process_empty_scalar(token.end_mark);\n }\n }\n token = this.peek_token();\n event = new events.SequenceEndEvent(token.start_mark, token.start_mark);\n this.state = this.states.pop();\n return event;\n }\n\n // block_mapping ::= BLOCK-MAPPING-START\n // ((KEY block_node_or_indentless_sequence?)?\n // (VALUE block_node_or_indentless_sequence?)?)* BLOCK-END\n parse_block_mapping_first_key() {\n var token;\n token = this.get_token();\n this.marks.push(token.start_mark);\n return this.parse_block_mapping_key();\n }\n\n parse_block_mapping_key() {\n var event, token;\n if (this.check_token(tokens.KeyToken)) {\n token = this.get_token();\n if (!this.check_token(tokens.KeyToken, tokens.ValueToken, tokens.BlockEndToken)) {\n this.states.push('parse_block_mapping_value');\n return this.parse_block_node_or_indentless_sequence();\n } else {\n this.state = 'parse_block_mapping_value';\n return this.process_empty_scalar(token.end_mark);\n }\n }\n if (!this.check_token(tokens.BlockEndToken)) {\n token = this.peek_token();\n throw new exports.ParserError('while parsing a block mapping', this.marks.slice(-1)[0], `expected , but found ${token.id}`, token.start_mark);\n }\n token = this.get_token();\n event = new events.MappingEndEvent(token.start_mark, token.end_mark);\n this.state = this.states.pop();\n this.marks.pop();\n return event;\n }\n\n parse_block_mapping_value() {\n var token;\n if (this.check_token(tokens.ValueToken)) {\n token = this.get_token();\n if (!this.check_token(tokens.KeyToken, tokens.ValueToken, tokens.BlockEndToken)) {\n this.states.push('parse_block_mapping_key');\n return this.parse_block_node_or_indentless_sequence();\n } else {\n this.state = 'parse_block_mapping_key';\n return this.process_empty_scalar(token.end_mark);\n }\n } else {\n this.state = 'parse_block_mapping_key';\n token = this.peek_token();\n return this.process_empty_scalar(token.start_mark);\n }\n }\n\n // flow_sequence ::= FLOW-SEQUENCE-START\n // (flow_sequence_entry FLOW-ENTRY)* flow_sequence_entry? FLOW-SEQUENCE-END\n // flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n\n // Note that while production rules for both flow_sequence_entry and\n // flow_mapping_entry are equal, their interpretations are different. For\n // `flow_sequence_entry`, the part `KEY flow_node? (VALUE flow_node?)?`\n // generate an inline mapping (set syntax).\n parse_flow_sequence_first_entry() {\n var token;\n token = this.get_token();\n this.marks.push(token.start_mark);\n return this.parse_flow_sequence_entry(true);\n }\n\n parse_flow_sequence_entry(first = false) {\n var event, token;\n if (!this.check_token(tokens.FlowSequenceEndToken)) {\n if (!first) {\n if (this.check_token(tokens.FlowEntryToken)) {\n this.get_token();\n } else {\n token = this.peek_token();\n throw new exports.ParserError('while parsing a flow sequence', this.marks.slice(-1)[0], `expected ',' or ']', but got ${token.id}`, token.start_mark);\n }\n }\n if (this.check_token(tokens.KeyToken)) {\n token = this.peek_token();\n event = new events.MappingStartEvent(null, null, true, token.start_mark, token.end_mark, true);\n this.state = 'parse_flow_sequence_entry_mapping_key';\n return event;\n } else if (!this.check_token(tokens.FlowSequenceEndToken)) {\n this.states.push('parse_flow_sequence_entry');\n return this.parse_flow_node();\n }\n }\n token = this.get_token();\n event = new events.SequenceEndEvent(token.start_mark, token.end_mark);\n this.state = this.states.pop();\n this.marks.pop();\n return event;\n }\n\n parse_flow_sequence_entry_mapping_key() {\n var token;\n token = this.get_token();\n if (!this.check_token(tokens.ValueToken, tokens.FlowEntryToken, tokens.FlowSequenceEndToken)) {\n this.states.push('parse_flow_sequence_entry_mapping_value');\n return this.parse_flow_node();\n } else {\n this.state = 'parse_flow_sequence_entry_mapping_value';\n return this.process_empty_scalar(token.end_mark);\n }\n }\n\n parse_flow_sequence_entry_mapping_value() {\n var token;\n if (this.check_token(tokens.ValueToken)) {\n token = this.get_token();\n if (!this.check_token(tokens.FlowEntryToken, tokens.FlowSequenceEndToken)) {\n this.states.push('parse_flow_sequence_entry_mapping_end');\n return this.parse_flow_node();\n } else {\n this.state = 'parse_flow_sequence_entry_mapping_end';\n return this.process_empty_scalar(token.end_mark);\n }\n } else {\n this.state = 'parse_flow_sequence_entry_mapping_end';\n token = this.peek_token();\n return this.process_empty_scalar(token.start_mark);\n }\n }\n\n parse_flow_sequence_entry_mapping_end() {\n var token;\n this.state = 'parse_flow_sequence_entry';\n token = this.peek_token();\n return new events.MappingEndEvent(token.start_mark, token.start_mark);\n }\n\n // flow_mapping ::= FLOW-MAPPING-START (flow_mapping_entry FLOW-ENTRY)*\n // flow_mapping_entry? FLOW-MAPPING-END\n // flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n parse_flow_mapping_first_key() {\n var token;\n token = this.get_token();\n this.marks.push(token.start_mark);\n return this.parse_flow_mapping_key(true);\n }\n\n parse_flow_mapping_key(first = false) {\n var event, token;\n if (!this.check_token(tokens.FlowMappingEndToken)) {\n if (!first) {\n if (this.check_token(tokens.FlowEntryToken)) {\n this.get_token();\n } else {\n token = this.peek_token();\n throw new exports.ParserError('while parsing a flow mapping', this.marks.slice(-1)[0], `expected ',' or '}', but got ${token.id}`, token.start_mark);\n }\n }\n if (this.check_token(tokens.KeyToken)) {\n token = this.get_token();\n if (!this.check_token(tokens.ValueToken, tokens.FlowEntryToken, tokens.FlowMappingEndToken)) {\n this.states.push('parse_flow_mapping_value');\n return this.parse_flow_node();\n } else {\n this.state = 'parse_flow_mapping_value';\n return this.process_empty_scalar(token.end_mark);\n }\n } else if (!this.check_token(tokens.FlowMappingEndToken)) {\n this.states.push('parse_flow_mapping_empty_value');\n return this.parse_flow_node();\n }\n }\n token = this.get_token();\n event = new events.MappingEndEvent(token.start_mark, token.end_mark);\n this.state = this.states.pop();\n this.marks.pop();\n return event;\n }\n\n parse_flow_mapping_value() {\n var token;\n if (this.check_token(tokens.ValueToken)) {\n token = this.get_token();\n if (!this.check_token(tokens.FlowEntryToken, tokens.FlowMappingEndToken)) {\n this.states.push('parse_flow_mapping_key');\n return this.parse_flow_node();\n } else {\n this.state = 'parse_flow_mapping_key';\n return this.process_empty_scalar(token.end_mark);\n }\n } else {\n this.state = 'parse_flow_mapping_key';\n token = this.peek_token();\n return this.process_empty_scalar(token.start_mark);\n }\n }\n\n parse_flow_mapping_empty_value() {\n this.state = 'parse_flow_mapping_key';\n return this.process_empty_scalar(this.peek_token().start_mark);\n }\n\n process_empty_scalar(mark) {\n return new events.ScalarEvent(null, null, [true, false], '', mark, mark);\n }\n\n };\n\n DEFAULT_TAGS = {\n '!': '!',\n '!!': 'tag:yaml.org,2002:'\n };\n\n ctor = Parser.prototype.initialise;\n\n return Parser;\n\n }).call(this);\n\n}).call(this);\n", "(function() {\n var composer, constructor, parser, reader, resolver, scanner, util;\n\n util = require('./util');\n\n reader = require('./reader');\n\n scanner = require('./scanner');\n\n parser = require('./parser');\n\n composer = require('./composer');\n\n resolver = require('./resolver');\n\n constructor = require('./constructor');\n\n this.make_loader = function(Reader = reader.Reader, Scanner = scanner.Scanner, Parser = parser.Parser, Composer = composer.Composer, Resolver = resolver.Resolver, Constructor = constructor.Constructor) {\n var Loader, components;\n components = [Reader, Scanner, Parser, Composer, Resolver, Constructor];\n return Loader = (function() {\n var component;\n\n class Loader {\n constructor(stream) {\n var i, len, ref;\n components[0].prototype.initialise.call(this, stream);\n ref = components.slice(1);\n for (i = 0, len = ref.length; i < len; i++) {\n component = ref[i];\n component.prototype.initialise.call(this);\n }\n }\n\n };\n\n util.extend(Loader.prototype, ...((function() {\n var i, len, results;\n results = [];\n for (i = 0, len = components.length; i < len; i++) {\n component = components[i];\n results.push(component.prototype);\n }\n return results;\n })()));\n\n return Loader;\n\n }).call(this);\n };\n\n this.Loader = this.make_loader();\n\n}).call(this);\n", "(function() {\n var composer, constructor, dumper, errors, events, loader, nodes, parser, reader, resolver, scanner, tokens, util;\n\n composer = this.composer = require('./composer');\n\n constructor = this.constructor = require('./constructor');\n\n dumper = this.dumper = require('./dumper');\n\n errors = this.errors = require('./errors');\n\n events = this.events = require('./events');\n\n loader = this.loader = require('./loader');\n\n nodes = this.nodes = require('./nodes');\n\n parser = this.parser = require('./parser');\n\n reader = this.reader = require('./reader');\n\n resolver = this.resolver = require('./resolver');\n\n scanner = this.scanner = require('./scanner');\n\n tokens = this.tokens = require('./tokens');\n\n util = require('./util');\n\n /*\n Scan a YAML stream and produce scanning tokens.\n */\n this.scan = function(stream, Loader = loader.Loader) {\n var _loader, results;\n _loader = new Loader(stream);\n results = [];\n while (_loader.check_token()) {\n results.push(_loader.get_token());\n }\n return results;\n };\n\n /*\n Parse a YAML stream and produce parsing events.\n */\n this.parse = function(stream, Loader = loader.Loader) {\n var _loader, results;\n _loader = new Loader(stream);\n results = [];\n while (_loader.check_event()) {\n results.push(_loader.get_event());\n }\n return results;\n };\n\n /*\n Parse the first YAML document in a stream and produce the corresponding\n representation tree.\n */\n this.compose = function(stream, Loader = loader.Loader) {\n var _loader;\n _loader = new Loader(stream);\n return _loader.get_single_node();\n };\n\n /*\n Parse all YAML documents in a stream and produce corresponding representation\n trees.\n */\n this.compose_all = function(stream, Loader = loader.Loader) {\n var _loader, results;\n _loader = new Loader(stream);\n results = [];\n while (_loader.check_node()) {\n results.push(_loader.get_node());\n }\n return results;\n };\n\n /*\n Parse the first YAML document in a stream and produce the corresponding\n Javascript object.\n */\n this.load = function(stream, Loader = loader.Loader) {\n var _loader;\n _loader = new Loader(stream);\n return _loader.get_single_data();\n };\n\n /*\n Parse all YAML documents in a stream and produce the corresponing Javascript\n object.\n */\n this.load_all = function(stream, Loader = loader.Loader) {\n var _loader, results;\n _loader = new Loader(stream);\n results = [];\n while (_loader.check_data()) {\n results.push(_loader.get_data());\n }\n return results;\n };\n\n /*\n Emit YAML parsing events into a stream.\n If stream is falsey, return the produced string instead.\n */\n this.emit = function(events, stream, Dumper = dumper.Dumper, options = {}) {\n var _dumper, dest, event, i, len;\n dest = stream || new util.StringStream;\n _dumper = new Dumper(dest, options);\n try {\n for (i = 0, len = events.length; i < len; i++) {\n event = events[i];\n _dumper.emit(event);\n }\n } finally {\n _dumper.dispose();\n }\n return stream || dest.string;\n };\n\n /*\n Serialize a representation tree into a YAML stream.\n If stream is falsey, return the produced string instead.\n */\n this.serialize = function(node, stream, Dumper = dumper.Dumper, options = {}) {\n return exports.serialize_all([node], stream, Dumper, options);\n };\n\n /*\n Serialize a sequence of representation tress into a YAML stream.\n If stream is falsey, return the produced string instead.\n */\n this.serialize_all = function(nodes, stream, Dumper = dumper.Dumper, options = {}) {\n var _dumper, dest, i, len, node;\n dest = stream || new util.StringStream;\n _dumper = new Dumper(dest, options);\n try {\n _dumper.open();\n for (i = 0, len = nodes.length; i < len; i++) {\n node = nodes[i];\n _dumper.serialize(node);\n }\n _dumper.close();\n } finally {\n _dumper.dispose();\n }\n return stream || dest.string;\n };\n\n /*\n Serialize a Javascript object into a YAML stream.\n If stream is falsey, return the produced string instead.\n */\n this.dump = function(data, stream, Dumper = dumper.Dumper, options = {}) {\n return exports.dump_all([data], stream, Dumper, options);\n };\n\n /*\n Serialize a sequence of Javascript objects into a YAML stream.\n If stream is falsey, return the produced string instead.\n */\n this.dump_all = function(documents, stream, Dumper = dumper.Dumper, options = {}) {\n var _dumper, dest, document, i, len;\n dest = stream || new util.StringStream;\n _dumper = new Dumper(dest, options);\n try {\n _dumper.open();\n for (i = 0, len = documents.length; i < len; i++) {\n document = documents[i];\n _dumper.represent(document);\n }\n _dumper.close();\n } finally {\n _dumper.dispose();\n }\n return stream || dest.string;\n };\n\n}).call(this);\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport type { LiteralUnion } from \"type-fest\";\n\n/**\n * Wait for a property to be defined on the target, then call the callback with\n * the value\n * @param target Object\n * @param property Property to be defined\n * @param callback Callback\n *\n * @example onceDefined(window, \"webpackChunkdiscord_app\", wpInstance => wpInstance.push(...));\n */\nexport function onceDefined>(\n target: T, property: P, callback: (v: P extends keyof T ? T[P] : any) => void\n): void {\n const propertyAsAny = property as any;\n\n if (property in target)\n return void callback(target[propertyAsAny]);\n\n Object.defineProperty(target, property, {\n set(v) {\n delete target[propertyAsAny];\n target[propertyAsAny] = v;\n callback(v);\n },\n configurable: true,\n enumerable: false\n });\n}\n", "export default \"About Equicord

\\\"Equicord\\\"

An enhanced version of Vencord. A fork that offers a wider selection of plugins from the community.

Links

License

Equicord is licensed under the GNU General Public License v3.0.
This is free software, and you are welcome to redistribute it under certain conditions; see the license for details.

Acknowledgements

These awesome libraries/projects empower Equicord

  • Vencord - Vencord is a modification for Discord that adds plugins and custom styles, blocks Discord's tracking and what we are a fork of!
  • Suncord - Suncord was a newer fork of Vencord which eventually merged into Equicord and brought many new users!
\"", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport { gitHashShort } from \"@shared/vencordUserAgent\";\nimport { BrowserWindow, ipcMain, Menu, MenuItemConstructorOptions, shell } from \"electron\";\nimport aboutHtml from \"file://about.html?minify\";\n\nimport { SETTINGS_DIR, THEMES_DIR } from \"./utils/constants\";\n\nlet cachedUpdateAvailable = false;\n\nipcMain.on(IpcEvents.SET_TRAY_UPDATE_STATE, (_, available: boolean) => {\n cachedUpdateAvailable = available;\n});\n\nfunction getMainWindow(): BrowserWindow | undefined {\n return BrowserWindow.getFocusedWindow() ?? BrowserWindow.getAllWindows()[0];\n}\n\nfunction sendToRenderer(event: IpcEvents): void {\n getMainWindow()?.webContents.send(event);\n}\n\nfunction findInsertIndex(template: MenuItemConstructorOptions[]): number {\n const openIndex = template.findIndex(item => {\n const label = item.label?.toLowerCase() ?? \"\";\n return label.includes(\"open\") || label.includes(\"show\");\n });\n return openIndex !== -1 ? openIndex + 1 : 0;\n}\n\nfunction isTrayMenu(template: MenuItemConstructorOptions[]): boolean {\n if (!template.length) return false;\n\n const hasOpenOrShow = template.some(item => {\n const label = item.label?.toLowerCase() ?? \"\";\n return label.includes(\"open\") || label.includes(\"show\");\n });\n\n const hasQuit = template.some(item =>\n item.label?.toLowerCase().includes(\"quit\") || item.role === \"quit\"\n );\n\n const isNotAppMenu = !template.some(item =>\n item.label === \"&File\" || item.label === \"File\" ||\n item.label === \"&Edit\" || item.label === \"Edit\"\n );\n\n return hasOpenOrShow && hasQuit && isNotAppMenu;\n}\n\nlet aboutWindow: BrowserWindow | null = null;\n\nfunction openAboutWindow() {\n if (aboutWindow) {\n aboutWindow.focus();\n return;\n }\n\n const height = 750;\n const width = height * (4 / 3);\n\n aboutWindow = new BrowserWindow({\n center: true,\n autoHideMenuBar: true,\n height,\n width\n });\n\n aboutWindow.webContents.setWindowOpenHandler(({ url }) => {\n shell.openExternal(url);\n return { action: \"deny\" };\n });\n\n aboutWindow.webContents.on(\"will-navigate\", (e, url) => {\n e.preventDefault();\n shell.openExternal(url);\n });\n\n const aboutParams = aboutHtml\n .replaceAll(\"{{VERSION}}\", VERSION)\n .replaceAll(\"{{GIT_HASH}}\", gitHashShort);\n const base64Html = Buffer.from(aboutParams).toString(\"base64\");\n aboutWindow.loadURL(`data:text/html;base64,${base64Html}`);\n aboutWindow.on(\"closed\", () => {\n aboutWindow = null;\n });\n}\n\nfunction createEquicordMenuItems(): MenuItemConstructorOptions[] {\n return [\n {\n label: \"Equicord\",\n submenu: [\n {\n label: \"About Equicord\",\n click: () => openAboutWindow()\n },\n {\n label: cachedUpdateAvailable ? \"Update Equicord\" : \"Check for Updates\",\n click: () => sendToRenderer(IpcEvents.TRAY_CHECK_UPDATES)\n },\n {\n label: \"Repair Equicord\",\n click: () => sendToRenderer(IpcEvents.TRAY_REPAIR)\n },\n { type: \"separator\" },\n {\n label: \"Open Settings Folder\",\n click: () => shell.openPath(SETTINGS_DIR)\n },\n {\n label: \"Open Themes Folder\",\n click: () => shell.openPath(THEMES_DIR)\n }\n ]\n },\n { type: \"separator\" }\n ];\n}\n\nexport function patchTrayMenu(): void {\n const originalBuildFromTemplate = Menu.buildFromTemplate;\n\n Menu.buildFromTemplate = function (template: MenuItemConstructorOptions[]) {\n const alreadyPatched = template.some(item => item.label === \"Equicord\");\n if (isTrayMenu(template) && !alreadyPatched) {\n const insertIndex = findInsertIndex(template);\n const equicordItems = createEquicordMenuItems();\n template.splice(insertIndex, 0, ...equicordItems);\n }\n\n return originalBuildFromTemplate.call(this, template);\n };\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { existsSync, lstatSync, mkdirSync, readdirSync, renameSync, rmdirSync, statSync, unlinkSync, writeFileSync } from \"original-fs\";\nimport { basename, dirname, join } from \"path\";\n\nconst STUB_PACKAGE = JSON.stringify({ name: \"discord\", main: \"index.js\" });\nconst VERSION_PREFIX = \"app-\";\n\nconst makeStubIndex = (patcherPath: string) =>\n `require(${JSON.stringify(patcherPath)});`;\n\n/** `_app.asar` next to `app.asar` marks any patched install. */\nexport const isAlreadyPatched = (resources: string) =>\n existsSync(join(resources, \"_app.asar\"));\n\n/**\n * apply the folder-shim patch to a discord `resources/` directory.\n *\n * renames vanilla `app.asar` to `_app.asar`, creates an `app/` folder\n * whose `index.js` requires the given patcher script. electron prefers\n * the folder over the asar of the same name and loads it first.\n *\n * idempotent. returns `false` if the directory is already patched or\n * has no vanilla `app.asar`. throws on partial failure after rolling\n * back any disk changes already made.\n */\nexport const patchResourcesDir = (resources: string, patcherJsPath: string): boolean => {\n const app = join(resources, \"app.asar\");\n const _app = join(resources, \"_app.asar\");\n\n if (isAlreadyPatched(resources) || !existsSync(app) || existsSync(_app)) return false;\n try {\n if (lstatSync(app).isDirectory()) return false;\n } catch {\n return false;\n }\n\n const undo: Array<() => void> = [];\n try {\n renameSync(app, _app);\n undo.push(() => renameSync(_app, app));\n\n mkdirSync(app);\n undo.push(() => {\n const indexPath = join(app, \"index.js\");\n const pkgPath = join(app, \"package.json\");\n if (existsSync(indexPath)) unlinkSync(indexPath);\n if (existsSync(pkgPath)) unlinkSync(pkgPath);\n rmdirSync(app);\n });\n\n writeFileSync(join(app, \"package.json\"), STUB_PACKAGE);\n writeFileSync(join(app, \"index.js\"), makeStubIndex(patcherJsPath));\n return true;\n } catch (err) {\n for (let i = undo.length - 1; i >= 0; i--) {\n try {\n undo[i]();\n } catch (cleanupErr) {\n console.error(\"[Equicord] Rollback step failed\", cleanupErr);\n }\n }\n throw err;\n }\n};\n\nconst parsePart = (s: string) => parseInt(s, 10) || 0;\n\nconst isNewer = ($new: string, old: string): boolean => {\n const newParts = $new.slice(VERSION_PREFIX.length).split(\".\").map(parsePart);\n const oldParts = old.slice(VERSION_PREFIX.length).split(\".\").map(parsePart);\n const len = Math.max(newParts.length, oldParts.length);\n for (let i = 0; i < len; i++) {\n const n = newParts[i] ?? 0;\n const o = oldParts[i] ?? 0;\n if (n > o) return true;\n if (n < o) return false;\n }\n return false;\n};\n\n/**\n * find the newest sibling `app-VERSION` directory's `resources/` path.\n *\n * squirrel-only layout. returns `null` on non-win32 platforms, or when\n * the running process is already in the newest sibling.\n */\nexport const findStaleSibling = (currentExeDir: string): string | null => {\n if (process.platform !== \"win32\") return null;\n\n const discordPath = dirname(currentExeDir);\n const currentVersion = basename(currentExeDir);\n\n let latest = currentVersion;\n try {\n for (const name of readdirSync(discordPath)) {\n if (!name.startsWith(VERSION_PREFIX)) continue;\n let isDir = false;\n try {\n isDir = statSync(join(discordPath, name)).isDirectory();\n } catch (statErr) {\n console.error(\"[Equicord] Skipping unreadable sibling\", name, statErr);\n continue;\n }\n if (!isDir) continue;\n if (isNewer(name, latest)) latest = name;\n }\n } catch (err) {\n console.error(\"[Equicord] Failed to scan for sibling versions\", err);\n return null;\n }\n\n if (latest === currentVersion) return null;\n return join(discordPath, latest, \"resources\");\n};\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\n/**\n * re-applies the equicord patch to a freshly installed discord host\n * version at the moment the native updater finishes writing it.\n *\n * hooks `discord_desktop_core.startup({ updater })` to capture the live\n * updater instance, listens for its `host-updated` event, and wraps\n * `startCurrentVersion` for the post-update relaunch handoff. both paths\n * are idempotent because `patchResourcesDir` checks for the `_app.asar`\n * marker before doing anything.\n *\n * targets discord's new updater code path. default on win32 and linux.\n * on darwin the new updater is opt-in via `USE_NEW_UPDATER`, so installs\n * using the legacy sparkle-style autoUpdater fall through to the normal\n * reinject flow on first post-update launch.\n */\n\nimport Module from \"module\";\nimport { basename, dirname, join, resolve as resolvePath, sep } from \"path\";\n\nimport { findStaleSibling, patchResourcesDir } from \"./applyHostPatch\";\n\ninterface DiscordVersions {\n current_host?: number[];\n current_modules?: Record;\n last_successful_update?: unknown;\n}\n\ninterface StartCurrentVersionOptions {\n allowObsoleteHost?: boolean;\n}\n\ninterface DiscordBuildInfo {\n releaseChannel: string;\n version: string;\n}\n\ninterface DiscordHostUpdater {\n committedHostVersion?: number[];\n rootPath?: string;\n on?(event: \"host-updated\", handler: () => void): void;\n queryCurrentVersionsSync?(): DiscordVersions;\n startCurrentVersion?(queryOptions?: object, options?: StartCurrentVersionOptions): Promise;\n startCurrentVersionSync?(options?: StartCurrentVersionOptions): void;\n}\n\ninterface DiscordUpdaterModule {\n getUpdater?(): DiscordHostUpdater | null | undefined;\n tryInitUpdater?(buildInfo: DiscordBuildInfo, repositoryUrl: string, useRustBspatch: boolean): boolean;\n __equicordTryInitWrapped?: boolean;\n}\n\ninterface DiscordDesktopCoreStartupOpts {\n updater?: DiscordUpdaterModule;\n [key: string]: unknown;\n}\n\ninterface DiscordDesktopCore {\n startup?(opts: DiscordDesktopCoreStartupOpts): void;\n __equicordStartupWrapped?: boolean;\n}\n\nconst error = (...args: unknown[]) => console.error(\"[Equicord:HostUpdate]\", ...args);\n\nconst hookedUpdaters = new WeakSet();\nlet hooked = false;\n\nconst getPatcherJsPath = () => join(__dirname, \"patcher.js\");\n\n/**\n * resolve `resources/` for a given discord version directory.\n *\n * on darwin, extracts the bundle name (Discord.app, DiscordCanary.app,\n * DiscordPTB.app) from `process.execPath`. matches discord's own logic\n * in `common/updater.js#_getHostExePath`. iterates from the end so a\n * nested `.app` segment near the binary wins over an outer one.\n */\nconst resourcesPathFor = (versionDir: string): string => {\n if (process.platform !== \"darwin\") return join(versionDir, \"resources\");\n\n const segs = process.execPath.split(sep);\n for (let i = segs.length - 1; i >= 0; i--) {\n if (segs[i].endsWith(\".app\")) {\n return join(versionDir, segs[i], \"Contents\", \"Resources\");\n }\n }\n return join(versionDir, \"Contents\", \"Resources\");\n};\n\n/**\n * resolve the version dir the current process runs from.\n *\n * on darwin, execPath sits four levels deep inside the version dir,\n * at `/.app/Contents/MacOS/`.\n */\nconst currentVersionDir = (): string => {\n if (process.platform === \"darwin\") {\n return resolvePath(process.execPath, \"..\", \"..\", \"..\", \"..\");\n }\n return dirname(process.execPath);\n};\n\n/**\n * resolve the new host version array.\n *\n * `committedHostVersion` is only populated after `_startCurrentVersionInner`\n * runs, so during `host-updated` we have to query the native side\n * directly to get fresh state.\n */\nconst resolveCommittedVersion = (updater: DiscordHostUpdater): number[] | undefined => {\n if (Array.isArray(updater.committedHostVersion)) return updater.committedHostVersion;\n try {\n const versions = updater.queryCurrentVersionsSync?.();\n if (Array.isArray(versions?.current_host)) return versions.current_host;\n } catch (err) {\n error(\"queryCurrentVersionsSync failed\", err);\n }\n return undefined;\n};\n\nconst retainEquicord = (updater: DiscordHostUpdater, reason: string) => {\n try {\n const committed = resolveCommittedVersion(updater);\n const { rootPath } = updater;\n\n if (!committed || !rootPath) {\n /*\n * updater state unavailable. fall back to filesystem scan\n * on win32 only because the sibling layout is squirrel\n * specific.\n */\n if (process.platform !== \"win32\") return;\n const stale = findStaleSibling(dirname(process.execPath));\n if (stale) patchResourcesDir(stale, getPatcherJsPath());\n return;\n }\n\n const versionDir = join(rootPath, `app-${committed.join(\".\")}`);\n if (resolvePath(versionDir) === resolvePath(currentVersionDir())) return;\n\n patchResourcesDir(resourcesPathFor(versionDir), getPatcherJsPath());\n } catch (err) {\n error(`[${reason}] retain failed:`, err);\n }\n};\n\nconst attachToUpdater = (updater: DiscordHostUpdater | null | undefined) => {\n if (!updater || hookedUpdaters.has(updater)) return;\n try {\n hookedUpdaters.add(updater);\n } catch (err) {\n error(\"Failed to track updater instance\", err);\n return;\n }\n\n updater.on?.(\"host-updated\", () => retainEquicord(updater, \"host-updated\"));\n\n /*\n * wrap the post-update relaunch entrypoints. retain runs after the\n * original so `committedHostVersion` is freshly populated by\n * `_startCurrentVersionInner`. relaunch is scheduled via\n * `app.once(\"will-quit\", spawn)` then `app.quit()`, so the patch\n * still finishes before the new exe is spawned.\n */\n const sync = updater.startCurrentVersionSync;\n if (typeof sync === \"function\") {\n const bound = sync.bind(updater);\n updater.startCurrentVersionSync = (options?: StartCurrentVersionOptions) => {\n bound(options);\n try { retainEquicord(updater, \"startCurrentVersionSync\"); } catch (e) { error(e); }\n };\n }\n const async_ = updater.startCurrentVersion;\n if (typeof async_ === \"function\") {\n const bound = async_.bind(updater);\n updater.startCurrentVersion = async (queryOptions?: object, options?: StartCurrentVersionOptions) => {\n await bound(queryOptions, options);\n try { retainEquicord(updater, \"startCurrentVersion\"); } catch (e) { error(e); }\n };\n }\n};\n\nconst wrapStartup = (coreExports: DiscordDesktopCore | null | undefined) => {\n if (!coreExports?.startup || coreExports.__equicordStartupWrapped) return;\n coreExports.__equicordStartupWrapped = true;\n\n const origStartup = coreExports.startup;\n coreExports.startup = function (opts, ...rest) {\n try {\n const updaterModule = opts?.updater;\n const inst = updaterModule?.getUpdater?.();\n if (inst) {\n attachToUpdater(inst);\n } else if (typeof updaterModule?.tryInitUpdater === \"function\" && !updaterModule.__equicordTryInitWrapped) {\n /*\n * updater not yet constructed at startup time. wrap the\n * factory so we attach once vanilla creates it.\n */\n updaterModule.__equicordTryInitWrapped = true;\n const origTry = updaterModule.tryInitUpdater.bind(updaterModule);\n updaterModule.tryInitUpdater = (buildInfo, repositoryUrl, useRustBspatch) => {\n const ok = origTry(buildInfo, repositoryUrl, useRustBspatch);\n try { attachToUpdater(updaterModule.getUpdater?.()); } catch (e) { error(e); }\n return ok;\n };\n }\n } catch (e) {\n error(\"wrap updater failed:\", e);\n }\n return origStartup.call(this, opts, ...rest);\n };\n};\n\nexport const installHostUpdateHook = () => {\n if (hooked) return;\n hooked = true;\n\n /*\n * intercept `require` to catch the first `discord_desktop_core` load\n * before vanilla bootstrap calls its `startup`. normalise separators\n * so absolute requires resolve correctly on windows. once we have\n * wrapped startup we restore the original require to avoid taxing\n * every subsequent require call.\n */\n const origRequire = Module.prototype.require;\n Module.prototype.require = function (this: Module, id: string) {\n const result = origRequire.call(this, id);\n if (!id.includes(\"discord_desktop_core\")) return result;\n\n if (basename(id.replace(/\\\\/g, \"/\")) === \"discord_desktop_core\") {\n try { wrapStartup(result?.default ?? result); } catch (e) { error(e); }\n Module.prototype.require = origRequire;\n }\n return result;\n } as typeof Module.prototype.require;\n};\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\n/**\n * fallback for `hostUpdateHook.ts`. scans for a newer squirrel sibling\n * `app-VERSION` directory on quit and re-applies the patch there.\n */\n\nimport { app } from \"electron\";\nimport { dirname, join } from \"path\";\n\nimport { findStaleSibling, patchResourcesDir } from \"./applyHostPatch\";\n\napp.on(\"before-quit\", () => {\n try {\n const stale = findStaleSibling(dirname(process.execPath));\n if (stale) patchResourcesDir(stale, join(__dirname, \"patcher.js\"));\n } catch (err) {\n console.error(\"[Equicord] Failed to repatch latest host update\", err);\n }\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { onceDefined } from \"@shared/onceDefined\";\nimport electron, { app, BrowserWindowConstructorOptions, Menu } from \"electron\";\nimport { dirname, join } from \"path\";\n\nimport { RendererSettings } from \"./settings\";\nimport { patchTrayMenu } from \"./trayMenu\";\nimport { IS_VANILLA } from \"./utils/constants\";\n\nconsole.log(\"[Equicord] Starting up...\");\n\n// Our injector file at app/index.js\nconst injectorPath = require.main!.filename;\n\n// The original app.asar\nconst asarPath = join(dirname(injectorPath), \"..\", \"_app.asar\");\n\nconst discordPkg = require(join(asarPath, \"package.json\"));\nrequire.main!.filename = join(asarPath, discordPkg.main);\nif (IS_VESKTOP || IS_EQUIBOP) require.main!.filename = join(dirname(injectorPath), \"..\", \"..\", \"package.json\");\n\n// @ts-expect-error Untyped method? Dies from cringe\napp.setAppPath(asarPath);\n\nif (!IS_VANILLA) {\n const settings = RendererSettings.store;\n\n patchTrayMenu();\n\n /*\n * re-apply the patch when discord ships a new host version. skipped\n * on vesktop and equibop because they manage their own updates.\n */\n if (!IS_VESKTOP && !IS_EQUIBOP) {\n try {\n require(\"./hostUpdateHook\").installHostUpdateHook();\n } catch (err) {\n console.error(\"[Equicord] Failed to install host update hook\", err);\n }\n }\n\n // Repatch after host updates on Windows and Linux\n if (process.platform === \"win32\" || process.platform === \"linux\") {\n require(\"./persistAfterDiscordUpdates\");\n }\n\n if (process.platform === \"win32\" && settings.winCtrlQ) {\n const originalBuild = Menu.buildFromTemplate;\n Menu.buildFromTemplate = function (template) {\n if (template[0]?.label === \"&File\") {\n const { submenu } = template[0];\n if (Array.isArray(submenu)) {\n submenu.push({\n label: \"Quit (Hidden)\",\n visible: false,\n acceleratorWorksWhenHidden: true,\n accelerator: \"Control+Q\",\n click: () => app.quit()\n });\n }\n }\n return originalBuild.call(this, template);\n };\n }\n\n class BrowserWindow extends electron.BrowserWindow {\n constructor(options: BrowserWindowConstructorOptions) {\n if (!options?.webPreferences?.preload || !options.title) {\n super(options);\n return;\n }\n\n const { frameless, mainWindowFrameless, winNativeTitleBar, disableMinSize, transparent, macosVibrancyStyle, windowsMaterial } = settings;\n\n const original = options.webPreferences.preload;\n const isMainWindow = options.title === \"Discord\";\n options.webPreferences.preload = join(__dirname, \"preload.js\");\n options.webPreferences.sandbox = false;\n // work around discord unloading when in background\n options.webPreferences.backgroundThrottling = false;\n\n if (mainWindowFrameless && isMainWindow) {\n options.frame = false;\n } else if (frameless) {\n options.frame = false;\n } else if (process.platform === \"win32\" && winNativeTitleBar) {\n delete options.frame;\n }\n\n if (disableMinSize) {\n options.minWidth = 0;\n options.minHeight = 0;\n }\n\n if (transparent) {\n options.transparent = true;\n options.backgroundColor = \"#00000000\";\n }\n if (process.platform === \"darwin\" && macosVibrancyStyle) {\n options.vibrancy = macosVibrancyStyle;\n options.backgroundColor = \"#00000000\";\n }\n if (process.platform === \"win32\" && windowsMaterial && windowsMaterial !== \"none\") {\n options.backgroundMaterial = windowsMaterial;\n options.backgroundColor = \"#00000000\";\n }\n\n process.env.DISCORD_PRELOAD = original;\n\n super(options);\n\n if (disableMinSize) {\n // Disable the Electron call entirely so that Discord can't dynamically change the size\n this.setMinimumSize = (_width: number, _height: number) => { };\n }\n }\n }\n Object.assign(BrowserWindow, electron.BrowserWindow);\n // esbuild may rename our BrowserWindow, which leads to it being excluded\n // from getFocusedWindow(), so this is necessary\n // https://github.com/discord/electron/blob/13-x-y/lib/browser/api/browser-window.ts#L60-L62\n Object.defineProperty(BrowserWindow, \"name\", { value: \"BrowserWindow\", configurable: true });\n\n // Replace electrons exports with our custom BrowserWindow\n const electronPath = require.resolve(\"electron\");\n delete require.cache[electronPath]!.exports;\n require.cache[electronPath]!.exports = {\n ...electron,\n BrowserWindow\n };\n\n // Patch appSettings to force enable devtools\n onceDefined(global, \"appSettings\", s => {\n s.set(\"DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING\", true);\n });\n\n process.env.DATA_DIR = join(app.getPath(\"userData\"), \"..\", \"Equicord\");\n\n // Monkey patch commandLine to:\n // - disable UseEcoQoSForBackgroundProcess: Work around Discord unloading when in background\n const originalAppend = app.commandLine.appendSwitch;\n app.commandLine.appendSwitch = function (...args) {\n if (args[0] === \"disable-features\") {\n const disabledFeatures = new Set((args[1] ?? \"\").split(\",\"));\n disabledFeatures.add(\"UseEcoQoSForBackgroundProcess\");\n args[1] += [...disabledFeatures].join(\",\");\n }\n return originalAppend.apply(this, args);\n };\n\n // disable renderer backgrounding to prevent the app from unloading when in the background\n // https://github.com/electron/electron/issues/2822\n // https://github.com/GoogleChrome/chrome-launcher/blob/5a27dd574d47a75fec0fb50f7b774ebf8a9791ba/docs/chrome-flags-for-tools.md#task-throttling\n // Work around discord unloading when in background\n // Discord also recently started adding these flags but only on windows for some reason dunno why, it happens on Linux too\n app.commandLine.appendSwitch(\"disable-renderer-backgrounding\");\n app.commandLine.appendSwitch(\"disable-background-timer-throttling\");\n app.commandLine.appendSwitch(\"disable-backgrounding-occluded-windows\");\n} else {\n console.log(\"[Equicord] Running in vanilla mode. Not loading Equicord\");\n}\n\nconsole.log(\"[Equicord] Loading original Discord app.asar\");\nrequire(require.main!.filename);\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./ipcMain\";\n\nimport { app, net, protocol } from \"electron\";\nimport { join } from \"path\";\nimport { pathToFileURL } from \"url\";\n\nimport { initCsp } from \"./csp\";\nimport { RendererSettings } from \"./settings\";\nimport { IS_VANILLA, THEMES_DIR } from \"./utils/constants\";\nimport { ensureSafePath } from \"./utils/ensureSafePath\";\nimport { installExt } from \"./utils/extensions\";\n\nif (!IS_VANILLA && !IS_EXTENSION) {\n app.whenReady().then(() => {\n protocol.handle(\"vencord\", ({ url: unsafeUrl }) => {\n let url = decodeURI(unsafeUrl).slice(\"vencord://\".length).replace(/\\?v=\\d+$/, \"\");\n\n if (url.endsWith(\"/\")) url = url.slice(0, -1);\n\n if (url.startsWith(\"/themes/\")) {\n const theme = url.slice(\"/themes/\".length);\n\n const safeUrl = ensureSafePath(THEMES_DIR, theme);\n if (!safeUrl) {\n return new Response(null, {\n status: 404\n });\n }\n\n return net.fetch(pathToFileURL(safeUrl).toString());\n }\n\n // Source Maps! Maybe there's a better way but since the renderer is executed\n // from a string I don't think any other form of sourcemaps would work\n\n switch (url) {\n case \"renderer.js.map\":\n case \"preload.js.map\":\n case \"patcher.js.map\":\n case \"main.js.map\":\n return net.fetch(pathToFileURL(join(__dirname, url)).toString());\n default:\n return new Response(null, {\n status: 404\n });\n }\n });\n\n protocol.handle(\"equicord\", ({ url: unsafeUrl }) => {\n let url = decodeURI(unsafeUrl).slice(\"equicord://\".length).replace(/\\?v=\\d+$/, \"\");\n\n if (url.endsWith(\"/\")) url = url.slice(0, -1);\n\n if (url.startsWith(\"/themes/\")) {\n const theme = url.slice(\"/themes/\".length);\n\n const safeUrl = ensureSafePath(THEMES_DIR, theme);\n if (!safeUrl) {\n return new Response(null, {\n status: 404\n });\n }\n\n return net.fetch(pathToFileURL(safeUrl).toString());\n }\n\n // Source Maps! Maybe there's a better way but since the renderer is executed\n // from a string I don't think any other form of sourcemaps would work\n\n switch (url) {\n case \"renderer.js.map\":\n case \"preload.js.map\":\n case \"patcher.js.map\":\n case \"main.js.map\":\n return net.fetch(pathToFileURL(join(__dirname, url)).toString());\n default:\n return new Response(null, {\n status: 404\n });\n }\n });\n\n try {\n if (RendererSettings.store.enableReactDevtools)\n installExt(\"fmkadmapgofadopljbjfkapdkoienihi\")\n .then(() => console.info(\"[Equicord] Installed React Developer Tools\"))\n .catch(err => console.error(\"[Equicord] Failed to install React Developer Tools\", err));\n } catch { }\n\n initCsp();\n });\n}\n\nif (IS_DISCORD_DESKTOP) {\n require(\"./patcher\");\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./updater\";\nimport \"./ipcPlugins\";\nimport \"./settings\";\n\nimport { debounce } from \"@shared/debounce\";\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport { app, BrowserWindow, dialog, ipcMain, nativeTheme, shell, systemPreferences } from \"electron\";\nimport monacoHtml from \"file://monacoWin.html?minify&base64\";\nimport { FSWatcher, mkdirSync, readFileSync, watch, writeFileSync } from \"fs\";\nimport { open, readdir, readFile, unlink } from \"fs/promises\";\nimport { release } from \"os\";\nimport { join } from \"path\";\n\nimport { registerCspIpcHandlers } from \"./csp/manager\";\nimport { getThemeInfo, stripBOM, UserThemeHeader } from \"./themes\";\nimport { ALLOWED_PROTOCOLS, QUICK_CSS_PATH, SETTINGS_DIR, THEMES_DIR } from \"./utils/constants\";\nimport { ensureSafePath } from \"./utils/ensureSafePath\";\nimport { makeLinksOpenExternally } from \"./utils/externalLinks\";\n\nconst RENDERER_CSS_PATH = join(__dirname, \"renderer.css\");\n\nmkdirSync(THEMES_DIR, { recursive: true });\n\nregisterCspIpcHandlers();\n\nfunction readCss() {\n return readFile(QUICK_CSS_PATH, \"utf-8\").catch(() => \"\");\n}\n\nasync function listThemes(): Promise {\n const files = await readdir(THEMES_DIR).catch(() => []);\n\n const themeInfo: UserThemeHeader[] = [];\n\n for (const fileName of files) {\n if (!fileName.endsWith(\".css\")) continue;\n\n const data = await getThemeData(fileName).then(stripBOM).catch(() => null);\n if (data == null) continue;\n\n themeInfo.push(getThemeInfo(data, fileName));\n }\n\n return themeInfo;\n}\n\nfunction getThemeData(fileName: string) {\n fileName = fileName.replace(/\\?v=\\d+$/, \"\");\n const safePath = ensureSafePath(THEMES_DIR, fileName);\n if (!safePath) return Promise.reject(`Unsafe path ${fileName}`);\n return readFile(safePath, \"utf-8\");\n}\n\nipcMain.handle(IpcEvents.OPEN_QUICKCSS, () => shell.openPath(QUICK_CSS_PATH));\n\nipcMain.handle(IpcEvents.OPEN_EXTERNAL, (_, url) => {\n try {\n var { protocol } = new URL(url);\n } catch {\n throw \"Malformed URL\";\n }\n if (!ALLOWED_PROTOCOLS.includes(protocol))\n throw \"Disallowed protocol.\";\n\n shell.openExternal(url)\n .catch(err => console.error(\"[Vencord] Failed to open external link\", url, err));\n});\n\nipcMain.handle(IpcEvents.GET_QUICK_CSS, () => readCss());\nipcMain.handle(IpcEvents.SET_QUICK_CSS, (_, css) =>\n writeFileSync(QUICK_CSS_PATH, css)\n);\n\nipcMain.handle(IpcEvents.GET_THEMES_LIST, () => listThemes());\nipcMain.handle(IpcEvents.GET_THEME_DATA, (_, fileName) => getThemeData(fileName));\nipcMain.handle(IpcEvents.DELETE_THEME, (_, fileName) => {\n const safePath = ensureSafePath(THEMES_DIR, fileName);\n if (!safePath) return Promise.reject(`Unsafe path ${fileName}`);\n return unlink(safePath);\n});\nipcMain.handle(IpcEvents.GET_THEME_SYSTEM_VALUES, () => {\n let accentColor = systemPreferences.getAccentColor?.() ?? \"\";\n\n if (accentColor.length && accentColor[0] !== \"#\") {\n accentColor = `#${accentColor}`;\n }\n\n return {\n \"os-accent-color\": accentColor\n };\n});\n\nipcMain.handle(IpcEvents.OPEN_THEMES_FOLDER, () => shell.openPath(THEMES_DIR));\nipcMain.handle(IpcEvents.OPEN_SETTINGS_FOLDER, () => shell.openPath(SETTINGS_DIR));\n\nlet fsWatchers = [] as FSWatcher[];\n\nipcMain.handle(IpcEvents.INIT_FILE_WATCHERS, ({ sender }) => {\n fsWatchers.forEach(w => w.close());\n\n let quickCssWatcher: FSWatcher | undefined;\n let rendererCssWatcher: FSWatcher | undefined;\n\n open(QUICK_CSS_PATH, \"a+\").then(fd => {\n fd.close();\n quickCssWatcher = watch(QUICK_CSS_PATH, { persistent: false }, debounce(async () => {\n sender.postMessage(IpcEvents.QUICK_CSS_UPDATE, await readCss());\n }, 50));\n }).catch(() => { });\n\n const themesWatcher = watch(THEMES_DIR, { persistent: false }, debounce(() => {\n sender.postMessage(IpcEvents.THEME_UPDATE, void 0);\n }));\n\n if (IS_DEV) {\n rendererCssWatcher = watch(RENDERER_CSS_PATH, { persistent: false }, async () => {\n sender.postMessage(IpcEvents.RENDERER_CSS_UPDATE, await readFile(RENDERER_CSS_PATH, \"utf-8\"));\n });\n }\n\n fsWatchers = [quickCssWatcher, themesWatcher, rendererCssWatcher].filter(Boolean) as FSWatcher[];\n\n sender.once(\"destroyed\", () => {\n quickCssWatcher?.close();\n themesWatcher.close();\n rendererCssWatcher?.close();\n fsWatchers = [];\n });\n});\n\nipcMain.on(IpcEvents.GET_MONACO_THEME, e => {\n e.returnValue = nativeTheme.shouldUseDarkColors ? \"vs-dark\" : \"vs-light\";\n});\n\nlet monacoWin: BrowserWindow | null = null;\n\nipcMain.handle(IpcEvents.OPEN_MONACO_EDITOR, async () => {\n if (monacoWin && !monacoWin.isDestroyed()) {\n monacoWin.show();\n monacoWin.focus();\n return;\n }\n\n monacoWin = new BrowserWindow({\n title: \"Equicord QuickCSS Editor\",\n autoHideMenuBar: true,\n darkTheme: true,\n backgroundColor: nativeTheme.shouldUseDarkColors ? \"#1e1e1e\" : \"white\",\n webPreferences: {\n preload: join(__dirname, \"preload.js\"),\n contextIsolation: true,\n nodeIntegration: false,\n sandbox: false\n }\n });\n\n monacoWin.once(\"closed\", () => { monacoWin = null; });\n\n makeLinksOpenExternally(monacoWin);\n\n await monacoWin.loadURL(`data:text/html;base64,${monacoHtml}`);\n});\n\napp.on(\"before-quit\", async event => {\n if (monacoWin && !monacoWin.isDestroyed() && !monacoWin.isVisible()) {\n const result = await dialog.showMessageBox({\n type: \"question\",\n buttons: [\"Cancel\", \"Close Anyway\"],\n defaultId: 0,\n title: \"QuickCSS Editor Open\",\n message: \"QuickCSS editor is still open in the background.\",\n detail: \"Do you want to close Discord anyway? This will also close the QuickCSS editor.\"\n });\n\n if (result.response === 1) {\n app.exit();\n }\n }\n});\n\nipcMain.handle(IpcEvents.GET_RENDERER_CSS, () => readFile(RENDERER_CSS_PATH, \"utf-8\"));\n\nif (IS_DISCORD_DESKTOP) {\n ipcMain.on(IpcEvents.PRELOAD_GET_RENDERER_JS, e => {\n e.returnValue = readFileSync(join(__dirname, \"renderer.js\"), \"utf-8\");\n });\n}\n\nipcMain.on(IpcEvents.SUPPORTS_WINDOWS_MATERIAL, e => {\n e.returnValue = process.platform === \"win32\" && Number(release().split(\".\")[2]) >= 22621;\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport { ipcMain } from \"electron\";\n\nimport gitRemote from \"~git-remote\";\n\nimport { serializeErrors } from \"./common\";\n\nif (!IS_UPDATER_DISABLED) {\n require(IS_STANDALONE ? \"./http\" : \"./git\");\n} else {\n ipcMain.handle(IpcEvents.GET_REPO, serializeErrors(() => `https://github.com/${gitRemote}`));\n ipcMain.handle(IpcEvents.GET_UPDATES, serializeErrors(() => []));\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport { ipcMain } from \"electron\";\n\nimport PluginNatives from \"~pluginNatives\";\n\nconst PluginIpcMappings = {} as Record>;\nexport type PluginIpcMappings = typeof PluginIpcMappings;\n\nfor (const [plugin, methods] of Object.entries(PluginNatives)) {\n const entries = Object.entries(methods);\n if (!entries.length) continue;\n\n const mappings = PluginIpcMappings[plugin] = {};\n\n for (const [methodName, method] of entries) {\n const key = `VencordPluginNative_${plugin}_${methodName}`;\n ipcMain.handle(key, method);\n mappings[methodName] = key;\n }\n}\n\nipcMain.on(IpcEvents.GET_PLUGIN_IPC_METHOD_MAP, e => {\n e.returnValue = PluginIpcMappings;\n});\n", "import * as p0 from \"./plugins/appleMusic.desktop/native\";\nimport * as p1 from \"./plugins/consoleShortcuts/native\";\nimport * as p2 from \"./plugins/fixSpotifyEmbeds.desktop/native\";\nimport * as p3 from \"./plugins/fixYoutubeEmbeds.desktop/native\";\nimport * as p4 from \"./plugins/openInApp/native\";\nimport * as p5 from \"./plugins/translate/native\";\nimport * as p6 from \"./plugins/voiceMessages/native\";\nimport * as p7 from \"./plugins/xsOverlay/native\";\nimport * as p8 from \"./plugins/youtubeAdblock.desktop/native\";\nimport * as p9 from \"./equicordplugins/clipUpload.desktop/native\";\nimport * as p10 from \"./equicordplugins/equicordHelper/native\";\nimport * as p11 from \"./equicordplugins/favouriteAnything/native\";\nimport * as p12 from \"./equicordplugins/fileUpload/native\";\nimport * as p13 from \"./equicordplugins/gifMaker/native\";\nimport * as p14 from \"./equicordplugins/messageLoggerEnhanced/native\";\nimport * as p15 from \"./equicordplugins/questify/native\";\nimport * as p16 from \"./equicordplugins/richPresence/native\";\nimport * as p17 from \"./equicordplugins/songLink.desktop/native\";\nimport * as p18 from \"./equicordplugins/songSpotlight.desktop/native\";\nimport * as p19 from \"./equicordplugins/themeLibrary/native\";\nimport * as p20 from \"./equicordplugins/userpluginInstaller.dev/native\";\nimport * as p21 from \"./equicordplugins/voiceMessageTranscriber.desktop/native\";\nimport * as p22 from \"./equicordplugins/zipPreview/native\";\nexport default {\n\"AppleMusicRichPresence\":p0,\n\"ConsoleShortcuts\":p1,\n\"FixSpotifyEmbeds\":p2,\n\"FixYoutubeEmbeds\":p3,\n\"OpenInApp\":p4,\n\"Translate\":p5,\n\"VoiceMessages\":p6,\n\"XSOverlay\":p7,\n\"YoutubeAdblock\":p8,\n\"ClipUpload\":p9,\n\"EquicordHelper\":p10,\n\"FavouriteAnything\":p11,\n\"FileUpload\":p12,\n\"GifMaker\":p13,\n\"MessageLoggerEnhanced\":p14,\n\"Questify\":p15,\n\"RichPresence\":p16,\n\"SongLink\":p17,\n\"SongSpotlight\":p18,\n\"ThemeLibrary\":p19,\n\"UserpluginInstaller\":p20,\n\"VoiceMessageTranscriber\":p21,\n\"ZipPreview\":p22,\n};", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { VENCORD_USER_AGENT } from \"@shared/vencordUserAgent\";\nimport { execFile } from \"child_process\";\nimport { promisify } from \"util\";\n\nimport type { TrackData } from \".\";\n\nconst exec = promisify(execFile);\n\nasync function applescript(cmds: string[]) {\n const { stdout } = await exec(\"osascript\", cmds.map(c => [\"-e\", c]).flat());\n return stdout;\n}\n\ninterface RemoteData {\n appleMusicLink?: string,\n appleMusicArtistLink?: string;\n songLink?: string,\n albumArtwork?: string,\n artistArtwork?: string;\n}\n\nlet cachedRemoteData: { id: string, data: RemoteData; } | { id: string, failures: number; } | null = null;\n\nasync function fetchRemoteData({ id, name, artist, album }: { id: string, name: string, artist: string, album: string; }) {\n if (id === cachedRemoteData?.id) {\n if (\"data\" in cachedRemoteData) return cachedRemoteData.data;\n if (\"failures\" in cachedRemoteData && cachedRemoteData.failures >= 5) return null;\n }\n\n try {\n const dataUrl = new URL(\"https://itunes.apple.com/search\");\n dataUrl.searchParams.set(\"term\", `${name} ${artist} ${album}`);\n dataUrl.searchParams.set(\"media\", \"music\");\n dataUrl.searchParams.set(\"entity\", \"song\");\n\n const fetchData = () => fetch(dataUrl, {\n headers: {\n \"user-agent\": VENCORD_USER_AGENT,\n },\n }).then(r => r.json());\n\n let data = await fetchData();\n\n if (data.resultCount === 0) {\n dataUrl.searchParams.set(\"term\", `${name} ${artist}`);\n data = await fetchData();\n }\n\n const songData = data.results.find(song => song.collectionName === album) || data.results[0];\n\n const artistArtworkURL = await fetch(songData.artistViewUrl)\n .then(r => r.text())\n .then(data => {\n const match = data.match(//);\n return match ? match[1].replace(/[0-9]+x.+/, \"220x220bb-60.png\") : undefined;\n })\n .catch(() => void 0);\n\n cachedRemoteData = {\n id,\n data: {\n appleMusicLink: songData.trackViewUrl,\n appleMusicArtistLink: songData.artistViewUrl,\n songLink: `https://song.link/i/${new URL(songData.trackViewUrl).searchParams.get(\"i\")}`,\n albumArtwork: (songData.artworkUrl100).replace(\"100x100\", \"512x512\"),\n artistArtwork: artistArtworkURL\n }\n };\n\n return cachedRemoteData.data;\n } catch (e) {\n console.error(\"[AppleMusicRichPresence] Failed to fetch remote data:\", e);\n cachedRemoteData = {\n id,\n failures: (id === cachedRemoteData?.id && \"failures\" in cachedRemoteData ? cachedRemoteData.failures : 0) + 1\n };\n return null;\n }\n}\n\nexport async function fetchTrackData(): Promise {\n try {\n await exec(\"pgrep\", [\"^Music$\"]);\n } catch (error) {\n return null;\n }\n\n const playerState = await applescript(['tell application \"Music\"', \"get player state\", \"end tell\"])\n .then(out => out.trim());\n if (playerState !== \"playing\") return null;\n\n const playerPosition = await applescript(['tell application \"Music\"', \"get player position\", \"end tell\"])\n .then(text => Number.parseFloat(text.trim()));\n\n const stdout = await applescript([\n 'set output to \"\"',\n 'tell application \"Music\"',\n \"set t_id to database id of current track\",\n \"set t_name to name of current track\",\n \"set t_album to album of current track\",\n \"set t_artist to artist of current track\",\n \"set t_duration to duration of current track\",\n 'set output to \"\" & t_id & \"\\\\n\" & t_name & \"\\\\n\" & t_album & \"\\\\n\" & t_artist & \"\\\\n\" & t_duration',\n \"end tell\",\n \"return output\"\n ]);\n\n const [id, name, album, artist, durationStr] = stdout.split(\"\\n\").filter(k => !!k);\n const duration = Number.parseFloat(durationStr);\n\n const remoteData = await fetchRemoteData({ id, name, artist, album });\n\n return { name, album, artist, playerPosition, duration, ...remoteData };\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { IpcMainInvokeEvent } from \"electron\";\n\nexport function initDevtoolsOpenEagerLoad(e: IpcMainInvokeEvent) {\n const handleDevtoolsOpened = () => e.sender.executeJavaScript(\"Vencord.Plugins.plugins.ConsoleShortcuts.eagerLoad(true)\");\n\n if (e.sender.isDevToolsOpened())\n handleDevtoolsOpened();\n else\n e.sender.once(\"devtools-opened\", () => handleDevtoolsOpened());\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { RendererSettings } from \"@main/settings\";\nimport { app, WebFrameMain, webFrameMain } from \"electron\";\n\n// TODO: routingID is deprecated and should be replaced with frameToken, but it's too new\nconst ids = [] as Record<\"routingId\" | \"processId\", number>[];\n\nfunction cleanUpAndGetSpotifyFrames() {\n const spotifyFrames = [] as WebFrameMain[];\n for (let i = ids.length - 1; i >= 0; i--) {\n const { processId, routingId } = ids[i];\n\n const frame = webFrameMain.fromId(processId, routingId);\n if (!frame) {\n ids.splice(i, 1);\n continue;\n }\n\n spotifyFrames.push(frame);\n }\n\n return spotifyFrames;\n}\n\napp.on(\"browser-window-created\", (_, win) => {\n win.webContents.on(\"frame-created\", (_, { frame }) => {\n frame?.once(\"dom-ready\", () => {\n if (frame.url.startsWith(\"https://open.spotify.com/embed/\")) {\n cleanUpAndGetSpotifyFrames(); // clean up stale frames\n\n const { routingId, processId } = frame;\n ids.push({ routingId, processId });\n\n const settings = RendererSettings.store.plugins?.FixSpotifyEmbeds;\n if (!settings?.enabled) return;\n\n frame.executeJavaScript(`\n globalThis._vcVolume = ${settings.volume / 100};\n const original = Audio.prototype.play;\n Audio.prototype.play = function() {\n this.volume = _vcVolume;\n return original.apply(this, arguments);\n }\n `);\n }\n });\n });\n});\n\nRendererSettings.addChangeListener(\"plugins.FixSpotifyEmbeds.volume\", newVolume => {\n try {\n cleanUpAndGetSpotifyFrames().forEach(frame =>\n frame.executeJavaScript(`globalThis._vcVolume = ${newVolume / 100}`)\n );\n } catch (e) {\n console.error(\"FixSpotifyEmbeds: Failed to update volume\", e);\n }\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { RendererSettings } from \"@main/settings\";\nimport { app } from \"electron\";\n\napp.on(\"browser-window-created\", (_, win) => {\n win.webContents.on(\"frame-created\", (_, { frame }) => {\n frame?.once(\"dom-ready\", () => {\n if (frame.url.startsWith(\"https://www.youtube.com/\")) {\n const settings = RendererSettings.store.plugins?.FixYoutubeEmbeds;\n if (!settings?.enabled) return;\n\n frame.executeJavaScript(`\n new MutationObserver(() => {\n if(\n document.querySelector('div.ytp-error-content-wrap-subreason a[href*=\"www.youtube.com/watch?v=\"]')\n ) location.reload()\n }).observe(document.body, { childList: true, subtree:true });\n `);\n }\n });\n });\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { IpcMainInvokeEvent } from \"electron\";\nimport { request } from \"https\";\n\n// These links don't support CORS, so this has to be native\nconst validRedirectUrls = /^https:\\/\\/(spotify\\.link|s\\.team)\\/.+$/;\n\nfunction getRedirect(url: string) {\n return new Promise((resolve, reject) => {\n const req = request(new URL(url), { method: \"HEAD\" }, res => {\n resolve(\n res.headers.location\n ? getRedirect(res.headers.location)\n : url\n );\n });\n req.on(\"error\", reject);\n req.end();\n });\n}\n\nexport async function resolveRedirect(_: IpcMainInvokeEvent, url: string) {\n if (!validRedirectUrls.test(url)) return url;\n\n return getRedirect(url);\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { IpcMainInvokeEvent } from \"electron\";\n\nexport async function makeDeeplTranslateRequest(_: IpcMainInvokeEvent, pro: boolean, apiKey: string, payload: string) {\n const url = pro\n ? \"https://api.deepl.com/v2/translate\"\n : \"https://api-free.deepl.com/v2/translate\";\n\n try {\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Authorization\": `DeepL-Auth-Key ${apiKey}`\n },\n body: payload\n });\n\n const data = await res.text();\n return { status: res.status, data };\n } catch (e) {\n return { status: -1, data: String(e) };\n }\n}\n\nexport async function makeKagiTranslateRequest(_: IpcMainInvokeEvent, token: string, text: string, sourceLang: string, targetLang: string) {\n const url = \"https://translate.kagi.com/api/translate\";\n\n try {\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cookie\": `kagi_session=${token}`\n },\n body: JSON.stringify({\n text,\n from: sourceLang,\n to: targetLang,\n model: \"standard\"\n }),\n });\n\n const data = await res.json();\n return { status: res.status, data };\n } catch (e) {\n return { status: -1, data: String(e) };\n }\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { app } from \"electron\";\nimport { readFile, rm } from \"fs/promises\";\nimport { basename, normalize } from \"path\";\n\nexport async function readRecording(_: any, filePath: string) {\n filePath = normalize(filePath);\n const filename = basename(filePath);\n const discordBaseDirWithTrailingSlash = normalize(app.getPath(\"userData\") + \"/\");\n if (!/^\\d*recording\\.ogg$/.test(filename) || !filePath.startsWith(discordBaseDirWithTrailingSlash)) return null;\n\n try {\n const buf = await readFile(filePath);\n rm(filePath).catch(() => { });\n return new Uint8Array(buf.buffer);\n } catch {\n return null;\n }\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { createSocket, Socket } from \"dgram\";\n\nlet xsoSocket: Socket | null = null;\n\nexport function sendToOverlay(_, data: any) {\n data.messageType = data.type;\n const json = JSON.stringify(data);\n xsoSocket ??= createSocket(\"udp4\");\n xsoSocket.send(json, 42069, \"127.0.0.1\");\n}\n\nexport function closeSocket() {\n xsoSocket?.close();\n xsoSocket = null;\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { RendererSettings } from \"@main/settings\";\nimport { app } from \"electron\";\nimport adguard from \"file://adguard.js?minify\";\n\napp.on(\"browser-window-created\", (_, win) => {\n win.webContents.on(\"frame-created\", (_, { frame }) => {\n frame?.once(\"dom-ready\", () => {\n if (!RendererSettings.store.plugins?.YoutubeAdblock?.enabled) return;\n\n if (frame.url.includes(\"youtube.com/embed/\")) {\n frame.executeJavaScript(adguard);\n } else if (frame.parent?.url.includes(\"youtube.com/embed/\")) {\n frame.parent.executeJavaScript(adguard);\n }\n });\n });\n});\n", "export default \"\\\"use strict\\\";(()=>{if(window.adguardInjected)return;window.adguardInjected=!0;const c=[\\\"#__ffYoutube1\\\",\\\"#__ffYoutube2\\\",\\\"#__ffYoutube3\\\",\\\"#__ffYoutube4\\\",\\\"#feed-pyv-container\\\",\\\"#feedmodule-PRO\\\",\\\"#homepage-chrome-side-promo\\\",\\\"#merch-shelf\\\",\\\"#offer-module\\\",'#pla-shelf > ytd-pla-shelf-renderer[class=\\\"style-scope ytd-watch\\\"]',\\\"#pla-shelf\\\",\\\"#premium-yva\\\",\\\"#promo-info\\\",\\\"#promo-list\\\",\\\"#promotion-shelf\\\",\\\"#related > ytd-watch-next-secondary-results-renderer > #items > ytd-compact-promoted-video-renderer.ytd-watch-next-secondary-results-renderer\\\",\\\"#search-pva\\\",\\\"#shelf-pyv-container\\\",\\\"#video-masthead\\\",\\\"#watch-branded-actions\\\",\\\"#watch-buy-urls\\\",\\\"#watch-channel-brand-div\\\",\\\"#watch7-branded-banner\\\",\\\"#YtKevlarVisibilityIdentifier\\\",\\\"#YtSparklesVisibilityIdentifier\\\",\\\".carousel-offer-url-container\\\",\\\".companion-ad-container\\\",\\\".GoogleActiveViewElement\\\",'.list-view[style=\\\"margin: 7px 0pt;\\\"]',\\\".promoted-sparkles-text-search-root-container\\\",\\\".promoted-videos\\\",\\\".searchView.list-view\\\",\\\".sparkles-light-cta\\\",\\\".watch-extra-info-column\\\",\\\".watch-extra-info-right\\\",\\\".ytd-carousel-ad-renderer\\\",\\\".ytd-compact-promoted-video-renderer\\\",\\\".ytd-companion-slot-renderer\\\",\\\".ytd-merch-shelf-renderer\\\",\\\".ytd-player-legacy-desktop-watch-ads-renderer\\\",\\\".ytd-promoted-sparkles-text-search-renderer\\\",\\\".ytd-promoted-video-renderer\\\",\\\".ytd-search-pyv-renderer\\\",\\\".ytd-video-masthead-ad-v3-renderer\\\",\\\".ytp-ad-action-interstitial-background-container\\\",\\\".ytp-ad-action-interstitial-slot\\\",\\\".ytp-ad-image-overlay\\\",\\\".ytp-ad-overlay-container\\\",\\\".ytp-ad-progress\\\",\\\".ytp-ad-progress-list\\\",'[class*=\\\"ytd-display-ad-\\\"]','[layout*=\\\"display-ad-\\\"]','a[href^=\\\"http://www.youtube.com/cthru?\\\"]','a[href^=\\\"https://www.youtube.com/cthru?\\\"]',\\\"ytd-action-companion-ad-renderer\\\",\\\"ytd-banner-promo-renderer\\\",\\\"ytd-compact-promoted-video-renderer\\\",\\\"ytd-companion-slot-renderer\\\",\\\"ytd-display-ad-renderer\\\",\\\"ytd-promoted-sparkles-text-search-renderer\\\",\\\"ytd-promoted-sparkles-web-renderer\\\",\\\"ytd-search-pyv-renderer\\\",\\\"ytd-single-option-survey-renderer\\\",\\\"ytd-video-masthead-ad-advertiser-info-renderer\\\",\\\"ytd-video-masthead-ad-v3-renderer\\\",\\\"YTM-PROMOTED-VIDEO-RENDERER\\\"],l=()=>{const e=c;if(!e)return;const t=e.join(\\\", \\\")+\\\" { display: none!important; }\\\",r=document.createElement(\\\"style\\\");r.textContent=t,document.head.appendChild(r)},p=e=>{new MutationObserver(r=>{e(r)}).observe(document.documentElement,{childList:!0,subtree:!0})},a=()=>{const e=document.querySelectorAll(\\\"#contents > ytd-rich-item-renderer ytd-display-ad-renderer\\\");e.length!==0&&e.forEach(t=>{if(t.parentNode&&t.parentNode.parentNode){const r=t.parentNode.parentNode;r.localName===\\\"ytd-rich-item-renderer\\\"&&(r.style.display=\\\"none\\\")}})},s=()=>{if(document.querySelector(\\\".ad-showing\\\")){const e=document.querySelector(\\\"video\\\");e&&e.duration&&(e.currentTime=e.duration,setTimeout(()=>{const t=document.querySelector(\\\"button.ytp-ad-skip-button\\\");t&&t.click()},100))}},d=(e,t,r)=>{if(!e)return!1;let n=!1;for(const o in e)e.hasOwnProperty(o)&&o===t?(e[o]=r,n=!0):e.hasOwnProperty(o)&&typeof e[o]==\\\"object\\\"&&d(e[o],t,r)&&(n=!0);return n},i=(e,t)=>{const r=JSON.parse;JSON.parse=(...n)=>{const o=r.apply(this,n);return d(o,e,t),o},Response.prototype.json=new Proxy(Response.prototype.json,{async apply(...n){const o=await Reflect.apply(...n);return d(o,e,t),o}})};i(\\\"adPlacements\\\",[]),i(\\\"playerAds\\\",[]),l(),a(),s(),p(()=>{a(),s()})})();\\n\"", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { DATA_DIR } from \"@main/utils/constants\";\nimport { ensureSafePath } from \"@main/utils/ensureSafePath\";\nimport { randomUUID } from \"crypto\";\nimport { dialog, type IpcMainInvokeEvent } from \"electron\";\nimport { mkdir, readFile, rm, writeFile } from \"fs/promises\";\nimport { basename, extname, join, resolve } from \"path\";\n\ninterface TempEntry {\n tmpDir: string;\n tmpPath: string;\n}\n\ninterface RawClipAttachment {\n id?: string;\n applicationId?: string;\n applicationName?: string;\n users?: string[];\n version?: number;\n}\n\nconst pendingTokens = new Map();\nconst tempEntries = new Map();\nconst CLIP_UPLOAD_DIR = join(DATA_DIR, \"clipUpload\");\nconst ALLOWED_EXTENSIONS = new Set([\".mp4\", \".m4v\"]);\nconst MAX_CLIP_SIZE = 500 * 1024 * 1024; // 500MB\nconst MIME_TYPES: Record = {\n \".mp4\": \"video/mp4\",\n \".m4v\": \"video/mp4\",\n};\n\nconst CLIP_FOOTER = Buffer.from([\n 0x75, 0x75, 0x69, 0x64,\n 0xA1, 0xC8, 0x52, 0x99, 0x33, 0x46, 0x4D, 0xB8, 0x88, 0xF0, 0x83, 0xF5, 0x7A, 0x75, 0xA5, 0xEF,\n]);\nconst CLIP_FOOTER_SIZE = CLIP_FOOTER.length;\n\nfunction getMimeType(filePath: string): string {\n return MIME_TYPES[extname(filePath).toLowerCase()] ?? \"application/octet-stream\";\n}\n\nfunction stripClipFooter(data: Buffer): Buffer {\n const idx = data.indexOf(CLIP_FOOTER);\n return idx === -1 ? data : data.subarray(0, idx);\n}\n\nasync function parseClipMetadata(filePath: string): Promise {\n try {\n const buf = await readFile(filePath);\n if (buf.length <= CLIP_FOOTER_SIZE) return null;\n\n const footerIdx = buf.indexOf(CLIP_FOOTER);\n if (footerIdx === -1) return null;\n\n const jsonStr = buf.subarray(footerIdx + CLIP_FOOTER_SIZE).toString(\"utf-8\");\n const parsed = JSON.parse(jsonStr);\n if (parsed && typeof parsed === \"object\") return Array.isArray(parsed) ? parsed : [parsed];\n return null;\n } catch {\n return null;\n }\n}\n\nexport async function chooseVideoFile(_: IpcMainInvokeEvent): Promise<{ token: string; name: string; type: string; } | null> {\n try {\n const { filePaths, canceled } = await dialog.showOpenDialog({\n title: \"Select clip file\",\n filters: [{ name: \"MP4 Video\", extensions: [\"mp4\", \"m4v\"] }],\n properties: [\"openFile\"],\n });\n\n if (canceled || filePaths.length === 0) return null;\n\n const resolvedPath = resolve(filePaths[0]);\n if (!ALLOWED_EXTENSIONS.has(extname(resolvedPath).toLowerCase())) return null;\n\n const token = randomUUID();\n pendingTokens.set(token, resolvedPath);\n\n return { token, name: basename(resolvedPath), type: getMimeType(resolvedPath) };\n } catch {\n return null;\n }\n}\n\nexport async function createTempVideoFile(_: IpcMainInvokeEvent, token: string): Promise {\n const originalPath = pendingTokens.get(token);\n if (!originalPath) return null;\n pendingTokens.delete(token);\n\n try {\n const tmpDir = join(CLIP_UPLOAD_DIR, randomUUID());\n const tmpPath = join(tmpDir, basename(originalPath));\n\n if (!ensureSafePath(tmpDir, basename(originalPath))) return null;\n\n await mkdir(tmpDir, { recursive: true });\n await writeFile(tmpPath, stripClipFooter(await readFile(originalPath)));\n\n const tmpToken = randomUUID();\n tempEntries.set(tmpToken, { tmpDir, tmpPath });\n return tmpToken;\n } catch {\n return null;\n }\n}\n\nexport async function createTempVideoFileFromBytes(_: IpcMainInvokeEvent, name: string, data: Uint8Array): Promise {\n if (typeof name !== \"string\" || !(data instanceof Uint8Array) || data.byteLength === 0 || data.byteLength > MAX_CLIP_SIZE) return null;\n\n const fileName = basename(name);\n if (fileName !== name || !ALLOWED_EXTENSIONS.has(extname(fileName).toLowerCase())) return null;\n\n try {\n const tmpDir = join(CLIP_UPLOAD_DIR, randomUUID());\n const tmpPath = join(tmpDir, fileName);\n\n if (!ensureSafePath(tmpDir, fileName)) return null;\n\n await mkdir(tmpDir, { recursive: true });\n await writeFile(tmpPath, data);\n\n const tmpToken = randomUUID();\n tempEntries.set(tmpToken, { tmpDir, tmpPath });\n return tmpToken;\n } catch {\n return null;\n }\n}\n\n// Note: Exposing the absolute path to the renderer is unavoidable here.\n// Discord's MediaEngineStore is a renderer-only module, and its\n// updateClipMetadata method requires an absolute filesystem path.\nexport function getTempVideoFilePath(_: IpcMainInvokeEvent, token: string): string | null {\n return tempEntries.get(token)?.tmpPath ?? null;\n}\n\nexport async function readVideoFile(_: IpcMainInvokeEvent, token: string): Promise {\n const entry = tempEntries.get(token);\n if (!entry) return null;\n\n try {\n const buf = await readFile(entry.tmpPath);\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n } catch {\n return null;\n }\n}\n\nexport async function deleteTempVideoFile(_: IpcMainInvokeEvent, token: string): Promise {\n const entry = tempEntries.get(token);\n if (!entry) return;\n\n tempEntries.delete(token);\n\n if (!ensureSafePath(CLIP_UPLOAD_DIR, entry.tmpDir)) return;\n\n try {\n await rm(entry.tmpDir, { force: true, recursive: true });\n } catch { }\n}\n\nexport async function parseClipFileMetadata(_: IpcMainInvokeEvent, token: string): Promise {\n const originalPath = pendingTokens.get(token);\n if (!originalPath) return null;\n\n return parseClipMetadata(originalPath);\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { join, normalize } from \"path\";\n\nexport function ensureSafePath(basePath: string, path: string) {\n const normalizedBasePath = normalize(basePath + \"/\");\n const newPath = join(basePath, path);\n const normalizedPath = normalize(newPath);\n return normalizedPath === normalize(basePath) || normalizedPath.startsWith(normalizedBasePath)\n ? normalizedPath\n : null;\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { CspPolicies, CSPSrc } from \"@main/csp\";\n\n// Allow all domains to have the permissions from CSPSrc\nCspPolicies[\"*\"] = CSPSrc;\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { NativeSettings } from \"@main/settings\";\nimport { session } from \"electron\";\n\ntype PolicyMap = Record;\n\nexport const ConnectSrc = [\"connect-src\"];\nexport const ImageSrc = [...ConnectSrc, \"img-src\"];\nexport const CssSrc = [\"style-src\", \"font-src\"];\nexport const ImageAndMediaSrc = [...ImageSrc, \"media-src\"];\nexport const ImageAndCssSrc = [...ImageSrc, ...CssSrc];\nexport const ImageScriptsAndCssSrc = [...ImageAndCssSrc, \"script-src\", \"worker-src\"];\nexport const CSPSrc = [\"style-src\", \"connect-src\", \"img-src\", \"frame-src\", \"font-src\", \"media-src\", \"worker-src\"];\n\n// Plugins can whitelist their own domains by importing this object in their native.ts\n// script and just adding to it. But generally, you should just edit this file instead\n\nexport const CspPolicies: PolicyMap = {\n \"http://localhost:*\": ImageAndCssSrc,\n \"http://127.0.0.1:*\": ImageAndCssSrc,\n \"localhost:*\": ImageAndCssSrc,\n \"127.0.0.1:*\": ImageAndCssSrc,\n\n \"*.github.io\": ImageAndCssSrc, // GitHub pages, used by most themes\n \"github.com\": ImageAndCssSrc, // GitHub content (stuff uploaded to markdown forms), used by most themes\n \"raw.githubusercontent.com\": ImageAndCssSrc, // GitHub raw, used by some themes\n \"*.gitlab.io\": ImageAndCssSrc, // GitLab pages, used by some themes\n \"gitlab.com\": ImageAndCssSrc, // GitLab raw, used by some themes\n \"*.codeberg.page\": ImageAndCssSrc, // Codeberg pages, used by some themes\n \"codeberg.org\": ImageAndCssSrc, // Codeberg raw, used by some themes\n\n \"*.githack.com\": ImageAndCssSrc, // githack (namely raw.githack.com), used by some themes\n \"jsdelivr.net\": ImageAndCssSrc, // jsDelivr, used by very few themes\n\n \"fonts.googleapis.com\": CssSrc, // Google Fonts, used by many themes\n\n \"i.imgur.com\": ImageSrc, // Imgur, used by some themes\n \"i.ibb.co\": ImageSrc, // ImgBB, used by some themes\n \"i.pinimg.com\": ImageSrc, // Pinterest, used by some themes\n \"files.catbox.moe\": ImageAndCssSrc, // Catbox, used by some themes\n\n \"cdn.discordapp.com\": ImageAndCssSrc, // Discord CDN, used by Vencord and some themes to load media\n \"media.discordapp.net\": ImageSrc, // Discord media CDN, possible alternative to Discord CDN\n\n // CDNs used for some things by Vencord.\n // FIXME: we really should not be using CDNs anymore\n \"cdnjs.cloudflare.com\": ImageScriptsAndCssSrc,\n \"cdn.jsdelivr.net\": ImageScriptsAndCssSrc,\n\n // Function Specific\n \"api.github.com\": ConnectSrc, // used for updating Vencord itself\n \"ws.audioscrobbler.com\": ConnectSrc, // Last.fm API\n \"musicbrainz.org\": ConnectSrc,\n \"*.listenbrainz.org\": ConnectSrc,\n \"coverartarchive.org\": ConnectSrc,\n \"archive.org\": ConnectSrc,\n \"*.archive.org\": ConnectSrc,\n \"translate-pa.googleapis.com\": ConnectSrc, // Google Translate API\n \"*.vencord.dev\": ImageSrc, // VenCloud (api.vencord.dev) and Badges (badges.vencord.dev)\n \"manti.vendicated.dev\": ImageSrc, // ReviewDB API\n \"decor.fieryflames.dev\": ConnectSrc, // Decor API\n \"ugc.decor.fieryflames.dev\": ImageSrc, // Decor CDN\n \"sponsor.ajay.app\": ConnectSrc, // Dearrow API\n \"dearrow-thumb.ajay.app\": ImageSrc, // Dearrow Thumbnail CDN\n \"usrbg.is-hardly.online\": ImageSrc, // USRBG API\n \"icons.duckduckgo.com\": ImageSrc, // DuckDuckGo Favicon API (Reverse Image Search)\n\n // Tenor, used by TenorSearch plugin and some themes\n \"*.tenor.com\": ImageAndMediaSrc,\n \"*.tenor.co\": ImageAndMediaSrc,\n};\n\nconst findHeader = (headers: PolicyMap, headerName: Lowercase) => {\n return Object.keys(headers).find(h => h.toLowerCase() === headerName);\n};\n\nconst parsePolicy = (policy: string): PolicyMap => {\n const result: PolicyMap = {};\n policy.split(\";\").forEach(directive => {\n const [directiveKey, ...directiveValue] = directive.trim().split(/\\s+/g);\n if (directiveKey && !Object.prototype.hasOwnProperty.call(result, directiveKey)) {\n result[directiveKey] = directiveValue;\n }\n });\n\n return result;\n};\n\nconst stringifyPolicy = (policy: PolicyMap): string =>\n Object.entries(policy)\n .filter(([, values]) => values?.length)\n .map(directive => directive.flat().join(\" \"))\n .join(\"; \");\n\nconst patchCsp = (headers: PolicyMap) => {\n const reportOnlyHeader = findHeader(headers, \"content-security-policy-report-only\");\n if (reportOnlyHeader)\n delete headers[reportOnlyHeader];\n\n const header = findHeader(headers, \"content-security-policy\");\n\n if (header) {\n const csp = parsePolicy(headers[header][0]);\n\n const pushDirective = (directive: string, ...values: string[]) => {\n csp[directive] ??= [...(csp[\"default-src\"] ?? [])];\n csp[directive].push(...values);\n };\n\n pushDirective(\"style-src\", \"'unsafe-inline'\");\n // we could make unsafe-inline safe by using strict-dynamic with a random nonce on our Vencord loader script https://content-security-policy.com/strict-dynamic/\n // HOWEVER, at the time of writing (24 Jan 2025), Discord is INSANE and also uses unsafe-inline\n // Once they stop using it, we also should\n pushDirective(\"script-src\", \"'unsafe-inline'\", \"'unsafe-eval'\");\n\n for (const directive of [\"style-src\", \"connect-src\", \"img-src\", \"font-src\", \"media-src\", \"worker-src\"]) {\n pushDirective(directive, \"blob:\", \"data:\", \"vencord:\", \"vesktop:\", \"equicord:\", \"equibop:\");\n }\n\n for (const [host, directives] of Object.entries(NativeSettings.store.customCspRules)) {\n for (const directive of directives) {\n pushDirective(directive, host);\n }\n }\n\n for (const [host, directives] of Object.entries(CspPolicies)) {\n for (const directive of directives) {\n pushDirective(directive, host);\n }\n }\n\n headers[header] = [stringifyPolicy(csp)];\n }\n};\n\nexport function initCsp() {\n session.defaultSession.webRequest.onHeadersReceived(({ responseHeaders, resourceType }, cb) => {\n if (responseHeaders) {\n if (resourceType === \"mainFrame\")\n patchCsp(responseHeaders);\n\n // Fix hosts that don't properly set the css content type, such as\n // raw.githubusercontent.com\n if (resourceType === \"stylesheet\") {\n const header = findHeader(responseHeaders, \"content-type\");\n if (header)\n responseHeaders[header] = [\"text/css\"];\n }\n }\n\n cb({ cancel: false, responseHeaders });\n });\n\n // assign a noop to onHeadersReceived to prevent other mods from adding their own incompatible ones.\n // For instance, OpenAsar adds their own that doesn't fix content-type for stylesheets which makes it\n // impossible to load css from github raw despite our fix above\n session.defaultSession.webRequest.onHeadersReceived = () => { };\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { MessageAttachment } from \"@vencord/discord-types\";\n\nconst allowedHosts = new Set([\n \"cdn.discordapp.com\",\n \"images-ext-1.discordapp.net\",\n \"images-ext-2.discordapp.net\",\n \"media.discordapp.net\"\n]);\n\n// Discord has very strict CORS rules for which types of assets can be fetched from where (CDN/Media proxy),\n// and most binary file types are prohibited by both. This function serves as a simple bypass.\nexport async function fetchAttachment(_: unknown, attachment: MessageAttachment) {\n const { content_type, filename } = attachment;\n const url = URL.parse(attachment.url);\n if (!url || !allowedHosts.has(url.hostname)) throw new Error(\"Invalid URL\");\n\n const res = await fetch(url, { headers: { Accept: \"*/*\" } });\n if (!res.ok) throw new Error(\"Server error\");\n\n const blob = await res.blob();\n const type = blob.type || content_type || \"application/octet-stream\";\n const data = await blob.arrayBuffer();\n\n return { type, data, filename };\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { IpcMainInvokeEvent } from \"electron\";\n\nimport { NativeUploadResult, NestUploadResponse } from \"./types\";\n\nexport async function uploadToNest(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string,\n authToken: string\n): Promise {\n try {\n const formData = new FormData();\n formData.append(\"file\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://nest.rip/api/files/upload\", {\n method: \"POST\",\n headers: {\n \"Authorization\": authToken\n },\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n const data = await response.json() as NestUploadResponse;\n\n if (data.fileURL) {\n return { success: true, url: data.fileURL };\n }\n\n return { success: false, error: \"No URL returned from upload\" };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToEzHost(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string,\n key: string\n): Promise {\n try {\n const formData = new FormData();\n formData.append(\"file\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://api.e-z.host/files\", {\n method: \"POST\",\n headers: {\n key\n },\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n const data = await response.json() as { success: boolean; error?: string; imageUrl?: string; rawUrl?: string; };\n\n if (!data || !data.success) {\n return { success: false, error: data?.error || \"Upload failed\" };\n }\n\n if (data.imageUrl || data.rawUrl) {\n return { success: true, url: data.imageUrl || data.rawUrl };\n }\n\n return { success: false, error: \"No URL returned from upload\" };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadTo0x0(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string\n): Promise {\n try {\n const formData = new FormData();\n formData.append(\"file\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://0x0.st\", {\n method: \"POST\",\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n const text = (await response.text()).trim();\n if (!text) {\n return { success: false, error: \"No URL returned from upload\" };\n }\n\n return { success: true, url: text };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToS3(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n uploadUrl: string,\n headers: Record\n): Promise {\n try {\n const response = await fetch(uploadUrl, {\n method: \"PUT\",\n headers,\n body: new Blob([fileBuffer])\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n return { success: true, url: uploadUrl };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToCatbox(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string,\n userhash?: string\n): Promise {\n try {\n const formData = new FormData();\n formData.append(\"reqtype\", \"fileupload\");\n if (userhash) {\n formData.append(\"userhash\", userhash);\n }\n formData.append(\"fileToUpload\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://catbox.moe/user/api.php\", {\n method: \"POST\",\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n const text = (await response.text()).trim();\n if (!text) {\n return { success: false, error: \"No URL returned from upload\" };\n }\n\n return { success: true, url: text };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToLitterbox(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string,\n expiry: string\n): Promise {\n try {\n const formData = new FormData();\n formData.append(\"reqtype\", \"fileupload\");\n formData.append(\"time\", expiry);\n formData.append(\"fileToUpload\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://litterbox.catbox.moe/resources/internals/api.php\", {\n method: \"POST\",\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n const text = (await response.text()).trim();\n if (!text) {\n return { success: false, error: \"No URL returned from upload\" };\n }\n\n return { success: true, url: text };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToGofile(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string,\n token?: string\n): Promise {\n try {\n const formData = new FormData();\n if (token?.trim()) {\n formData.append(\"token\", token.trim());\n }\n formData.append(\"file\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://upload.gofile.io/uploadfile\", {\n method: \"POST\",\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n const data = await response.json() as {\n status?: string;\n error?: string;\n data?: { downloadPage?: string; code?: string; };\n };\n\n if (data.status !== \"ok\") {\n return { success: false, error: data.error || \"Upload failed\" };\n }\n\n const url = data.data?.downloadPage || (data.data?.code ? `https://gofile.io/d/${data.data.code}` : \"\");\n if (!url) {\n return { success: false, error: \"No URL returned from upload\" };\n }\n\n return { success: true, url };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToTmpfiles(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string\n): Promise {\n try {\n const formData = new FormData();\n formData.append(\"file\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://tmpfiles.org/api/v1/upload\", {\n method: \"POST\",\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n const data = await response.json() as { status?: string; data?: { url?: string; }; };\n const rawUrl = data.data?.url || \"\";\n if (!rawUrl || data.status !== \"success\") {\n return { success: false, error: \"No URL returned from upload\" };\n }\n\n const url = rawUrl.includes(\"tmpfiles.org/\") && !rawUrl.includes(\"/dl/\")\n ? rawUrl.replace(/tmpfiles\\.org\\/(\\d+)/, \"tmpfiles.org/dl/$1\")\n : rawUrl;\n\n return { success: true, url };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToBuzzheavier(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string\n): Promise {\n try {\n const response = await fetch(`https://w.buzzheavier.com/${encodeURIComponent(filename)}`, {\n method: \"PUT\",\n body: new Blob([fileBuffer])\n });\n\n const text = await response.text();\n if (!response.ok) {\n return { success: false, error: `Upload failed: ${response.status} ${text}` };\n }\n\n try {\n const data = JSON.parse(text) as { code?: number; data?: { id?: string; }; };\n if (data.code === 201 && data.data?.id) {\n return { success: true, url: `https://buzzheavier.com/${data.data.id}` };\n }\n } catch {\n }\n\n const url = text.trim();\n if (!url) {\n return { success: false, error: \"No URL returned from upload\" };\n }\n\n return { success: true, url };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToTempSh(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string\n): Promise {\n try {\n const formData = new FormData();\n formData.append(\"file\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://temp.sh/upload\", {\n method: \"POST\",\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n const url = (await response.text()).trim();\n if (!url) {\n return { success: false, error: \"No URL returned from upload\" };\n }\n\n return { success: true, url };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToFilebin(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string\n): Promise {\n try {\n const binId = `${Date.now().toString(16)}${Math.random().toString(16).slice(2, 10)}`;\n const uploadUrl = `https://filebin.net/${binId}/${encodeURIComponent(filename)}`;\n\n const formData = new FormData();\n formData.append(\"file\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(uploadUrl, {\n method: \"POST\",\n body: formData\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n return { success: true, url: `https://filebin.net/${binId}/${encodeURIComponent(filename)}` };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToPixelVault(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string,\n uploadKey: string\n): Promise {\n try {\n const formData = new FormData();\n formData.append(\"file\", new Blob([fileBuffer]), filename);\n\n const response = await fetch(\"https://pixelvault.co/\", {\n method: \"POST\",\n headers: {\n Authorization: uploadKey\n },\n body: formData\n });\n\n const text = await response.text();\n let data: { resource?: string; url?: string; } | null = null;\n\n try {\n data = text ? JSON.parse(text) : null;\n } catch {\n data = null;\n }\n\n if (!response.ok) {\n return { success: false, error: `Upload failed: ${response.status} ${text}` };\n }\n\n const url = data?.resource || data?.url || text.trim();\n if (!url) {\n return { success: false, error: \"No URL returned from upload\" };\n }\n\n return { success: true, url };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function uploadToPixelDrain(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n filename: string,\n apiKey?: string\n): Promise {\n try {\n const headers: Record = {};\n if (apiKey?.trim()) {\n headers.Authorization = `Basic ${Buffer.from(`:${apiKey.trim()}`).toString(\"base64\")}`;\n }\n\n const response = await fetch(`https://pixeldrain.com/api/file/${encodeURIComponent(filename)}`, {\n method: \"PUT\",\n headers,\n body: new Blob([fileBuffer])\n });\n\n const text = await response.text();\n let data: { id?: string; message?: string; } | null = null;\n try {\n data = text ? JSON.parse(text) : null;\n } catch {\n data = null;\n }\n\n if (!response.ok) {\n return { success: false, error: data?.message || `Upload failed: ${response.status} ${text}` };\n }\n\n if (!data?.id) {\n return { success: false, error: data?.message || \"No URL returned from upload\" };\n }\n\n return { success: true, url: `https://pixeldrain.com/u/${data.id}` };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nfunction isValidHttpsUrl(url: string): boolean {\n try {\n const parsed = new URL(url);\n return parsed.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nexport async function uploadToWebdav(\n _: IpcMainInvokeEvent,\n fileBuffer: ArrayBuffer,\n uploadUrl: string,\n headers: Record\n): Promise {\n if (!isValidHttpsUrl(uploadUrl)) {\n return { success: false, error: \"Invalid or non-HTTPS upload URL\" };\n }\n\n try {\n const response = await fetch(uploadUrl, {\n method: \"PUT\",\n headers,\n body: new Blob([fileBuffer])\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return { success: false, error: `Upload failed: ${response.status} ${errorText}` };\n }\n\n return { success: true, url: uploadUrl };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function createWebdavShare(\n _: IpcMainInvokeEvent,\n ocsUrl: string,\n headers: Record,\n body: string\n): Promise {\n if (!isValidHttpsUrl(ocsUrl)) {\n return { success: false, error: \"Invalid or non-HTTPS share endpoint URL\" };\n }\n\n try {\n const response = await fetch(ocsUrl, {\n method: \"POST\",\n headers,\n body\n });\n\n const text = await response.text();\n\n if (!response.ok) {\n return { success: false, error: `Share creation failed: ${response.status} ${text.slice(0, 200)}` };\n }\n\n let data: { ocs?: { data?: { token?: string; }; }; };\n try {\n data = JSON.parse(text);\n } catch {\n return { success: false, error: `Invalid share response: ${text.slice(0, 200)}` };\n }\n\n const token = data?.ocs?.data?.token;\n if (!token) {\n return { success: false, error: \"No share token in server response\" };\n }\n\n return { success: true, url: token };\n } catch (e) {\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n }\n}\n\nexport async function fetchFile(\n\n _: IpcMainInvokeEvent,\n\n url: string\n\n): Promise<{ success: boolean; data?: ArrayBuffer; contentType?: string; error?: string; }> {\n\n try {\n\n const response = await fetch(url);\n\n if (!response.ok) {\n\n return { success: false, error: `Fetch failed: ${response.status} ${response.statusText}` };\n\n }\n\n const data = await response.arrayBuffer();\n\n const contentType = response.headers.get(\"content-type\") || \"\";\n\n return { success: true, data, contentType };\n\n } catch (e) {\n\n return { success: false, error: e instanceof Error ? e.message : \"Unknown error\" };\n\n }\n\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nconst ALLOWED_MEDIA_HOSTS = new Set([\n \"cdn.discordapp.com\",\n \"images-ext-1.discordapp.net\",\n \"images-ext-2.discordapp.net\",\n \"media.discordapp.net\",\n \"media.tenor.com\",\n \"tenor.com\",\n \"media.giphy.com\",\n \"media0.giphy.com\",\n \"media1.giphy.com\",\n \"media2.giphy.com\",\n \"media3.giphy.com\",\n \"media4.giphy.com\",\n]);\n\nexport async function fetchMedia(_: unknown, url: string) {\n const parsed = URL.parse(url);\n if (!parsed || !ALLOWED_MEDIA_HOSTS.has(parsed.hostname))\n throw new Error(\"Invalid URL\");\n\n const res = await fetch(parsed, { headers: { Accept: \"*/*\" } });\n if (!res.ok) throw new Error(`Server error ${res.status}`);\n\n const blob = await res.blob();\n if (blob.size === 0) throw new Error(`Empty body (${res.status}) from ${url}`);\n\n return {\n data: await blob.arrayBuffer(),\n type: blob.type || \"application/octet-stream\"\n };\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { readdir, readFile, unlink, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { DATA_DIR } from \"@main/utils/constants\";\nimport { dialog, IpcMainInvokeEvent, shell } from \"electron\";\n\nimport { getSettings, saveSettings } from \"./settings\";\nexport * from \"./export\";\nexport * from \"./import\";\n\nimport { blockedExts } from \"../list\";\nimport { LoggedAttachment } from \"../types\";\nimport { DEFAULT_ATTACHMENT_FILE_EXTENSIONS, LOGS_DATA_FILENAME } from \"../utils/constants\";\nimport { ensureDirectoryExists, getAttachmentIdFromFilename, sleep } from \"./utils\";\n\nexport { getSettings };\nexport function messageLoggerEnhancedUniqueIdThingyIdkMan() { }\n\nconst nativeSavedImages = new Map();\nexport const getNativeSavedImages = () => nativeSavedImages;\n\nlet logsDir: string;\nlet imageCacheDir: string;\n\nconst getImageCacheDir = async () => imageCacheDir ?? await getDefaultNativeImageDir();\nconst getLogsDir = async () => logsDir ?? await getDefaultNativeDataDir();\n\nexport async function initDirs() {\n const { logsDir: ld, imageCacheDir: icd } = await getSettings();\n\n logsDir = ld || await getDefaultNativeDataDir();\n imageCacheDir = icd || await getDefaultNativeImageDir();\n}\ninitDirs();\n\nexport async function init(_event: IpcMainInvokeEvent) {\n const imageDir = await getImageCacheDir();\n\n await ensureDirectoryExists(imageDir);\n const files = await readdir(imageDir);\n for (const filename of files) {\n const attachmentId = getAttachmentIdFromFilename(filename);\n nativeSavedImages.set(attachmentId, path.join(imageDir, filename));\n }\n}\n\nexport async function getImageNative(_event: IpcMainInvokeEvent, attachmentId: string): Promise {\n const imagePath = nativeSavedImages.get(attachmentId);\n if (!imagePath) return null;\n\n try {\n return await readFile(imagePath);\n } catch (error: any) {\n console.error(error);\n return null;\n }\n}\n\nexport async function writeImageNative(_event: IpcMainInvokeEvent, filename: string, content: Uint8Array) {\n if (!filename || !content) return;\n const imageDir = await getImageCacheDir();\n const attachmentId = getAttachmentIdFromFilename(filename);\n\n const existingImage = nativeSavedImages.get(attachmentId);\n if (existingImage) return;\n\n const imagePath = path.join(imageDir, filename);\n await ensureDirectoryExists(imageDir);\n await writeFile(imagePath, content);\n\n nativeSavedImages.set(attachmentId, imagePath);\n}\n\nexport async function deleteFileNative(_event: IpcMainInvokeEvent, attachmentId: string) {\n const imagePath = nativeSavedImages.get(attachmentId);\n if (!imagePath) return;\n\n await unlink(imagePath);\n}\n\nexport async function writeLogs(_event: IpcMainInvokeEvent, contents: string) {\n const logsDir = await getLogsDir();\n\n writeFile(path.join(logsDir, LOGS_DATA_FILENAME), contents);\n}\n\nexport async function getDefaultNativeImageDir(): Promise {\n return path.join(await getDefaultNativeDataDir(), \"savedImages\");\n}\n\nexport async function getDefaultNativeDataDir(): Promise {\n return path.join(DATA_DIR, \"MessageLoggerData\");\n}\n\nexport async function getDefaultAttachmentFileExtensions(): Promise {\n return DEFAULT_ATTACHMENT_FILE_EXTENSIONS;\n}\n\nexport async function chooseDir(event: IpcMainInvokeEvent, logKey: \"logsDir\" | \"imageCacheDir\") {\n const settings = await getSettings();\n const defaultPath = settings[logKey] || await getDefaultNativeDataDir();\n\n const res = await dialog.showOpenDialog({ properties: [\"openDirectory\"], defaultPath: defaultPath });\n const dir = res.filePaths[0];\n\n if (!dir) throw Error(\"Invalid Directory\");\n\n settings[logKey] = dir;\n\n await saveSettings(settings);\n\n switch (logKey) {\n case \"logsDir\": logsDir = dir; break;\n case \"imageCacheDir\": imageCacheDir = dir; break;\n }\n\n if (logKey === \"imageCacheDir\")\n await init(event);\n\n return dir;\n}\n\nexport async function showItemInFolder(_event: IpcMainInvokeEvent) {\n shell.showItemInFolder(await getImageCacheDir());\n}\n\nexport async function chooseFile(_event: IpcMainInvokeEvent, title: string, filters: Electron.FileFilter[], defaultPath?: string) {\n const res = await dialog.showOpenDialog({ title, filters, properties: [\"openFile\"], defaultPath });\n const [path] = res.filePaths;\n\n if (!path) throw Error(\"Invalid file\");\n\n return await readFile(path, \"utf-8\");\n}\n\nexport async function downloadAttachment(_event: IpcMainInvokeEvent, attachment: LoggedAttachment, attempts = 0, useOldUrl = false): Promise<{ error: string | null; path: string | null; }> {\n try {\n if (!attachment?.url || !attachment.oldUrl || !attachment?.id)\n return { error: \"Invalid Attachment\", path: null };\n\n if (attachment.id.match(/[\\\\/.]/)) {\n return { error: \"Invalid Attachment ID\", path: null };\n }\n\n const settings = await getSettings();\n const allowedExtensionsStr = settings.attachmentFileExtensions?.trim() || \"\";\n if (allowedExtensionsStr === \"\" || allowedExtensionsStr.toLowerCase() === \"none\") {\n return { error: \"All attachment downloads are currently blocked by settings configurations.\", path: null };\n }\n\n const allowedList = allowedExtensionsStr.split(\",\").map((ext: string) => ext.trim().toLowerCase());\n const cleanExt = attachment.fileExtension?.replace(\".\", \"\").toLowerCase();\n\n if (!cleanExt || !allowedList.includes(cleanExt)) {\n return { error: `File type .${cleanExt} is blocked by settings configurations.`, path: null };\n }\n\n const existingImage = nativeSavedImages.get(attachment.id);\n if (existingImage)\n return {\n error: null,\n path: existingImage\n };\n\n const res = await fetch(useOldUrl ? attachment.oldUrl : attachment.url);\n\n if (res.status !== 200) {\n if (res.status === 404 || res.status === 403 || res.status === 415)\n useOldUrl = true;\n\n attempts++;\n if (attempts > 3) {\n return {\n error: `Failed to get attachment ${attachment.id} for caching. too many attempts, error code ${res.status}`,\n path: null,\n };\n }\n\n await sleep(1000);\n return downloadAttachment(_event, attachment, attempts, useOldUrl);\n }\n\n const ab = await res.arrayBuffer();\n const imageCacheDir = await getImageCacheDir();\n await ensureDirectoryExists(imageCacheDir);\n\n const finalPath = path.join(imageCacheDir, `${attachment.id}${attachment.fileExtension}`);\n await writeFile(finalPath, Buffer.from(ab));\n\n nativeSavedImages.set(attachment.id, finalPath);\n\n return {\n error: null,\n path: finalPath\n };\n\n } catch (error: any) {\n console.error(error);\n return { error: error.message, path: null };\n }\n}\n\nexport async function updateAllowedExtensions(_event: IpcMainInvokeEvent, cleanExtensionsString: string | undefined) {\n const settings = await getSettings();\n const incomingRaw = cleanExtensionsString?.trim() || \"\";\n\n if (incomingRaw === \"\") {\n settings.attachmentFileExtensions = \"none\";\n await saveSettings(settings);\n return;\n }\n\n const validatedExtensions = incomingRaw\n .split(\",\")\n .map(ext => ext.trim().toLowerCase())\n .filter(ext => ext.length > 0 && !blockedExts.includes(ext));\n\n if (validatedExtensions.length === 0) {\n settings.attachmentFileExtensions = \"none\";\n } else {\n settings.attachmentFileExtensions = validatedExtensions.join(\",\");\n }\n\n await saveSettings(settings);\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport fs from \"fs/promises\";\nimport path from \"path\";\n\nimport { getDefaultAttachmentFileExtensions, getDefaultNativeDataDir, getDefaultNativeImageDir } from \".\";\nimport { ensureDirectoryExists } from \"./utils\";\n\ninterface MLSettings {\n logsDir: string;\n imageCacheDir: string;\n attachmentFileExtensions?: string;\n}\n\nexport async function getSettings(): Promise {\n try {\n const settings = await fs.readFile(await getSettingsFilePath(), \"utf8\");\n return JSON.parse(settings);\n } catch (err) {\n const settings = {\n logsDir: await getDefaultNativeDataDir(),\n imageCacheDir: await getDefaultNativeImageDir(),\n attachmentFileExtensions: await getDefaultAttachmentFileExtensions()\n };\n try {\n await saveSettings(settings);\n } catch (err) { }\n\n return settings;\n }\n}\n\nexport async function saveSettings(settings: MLSettings) {\n if (!settings) return;\n await fs.writeFile(await getSettingsFilePath(), JSON.stringify(settings, null, 4), \"utf8\");\n}\n\nasync function getSettingsFilePath() {\n const MlDataDir = await getDefaultNativeDataDir();\n await ensureDirectoryExists(MlDataDir);\n return path.join(MlDataDir, \"mlSettings.json\");\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { access, mkdir } from \"fs/promises\";\nimport path from \"path\";\n\nexport async function exists(filename: string) {\n try {\n await access(filename);\n return true;\n } catch (error) {\n return false;\n }\n}\n\nexport async function ensureDirectoryExists(cacheDir: string) {\n if (!await exists(cacheDir))\n await mkdir(cacheDir);\n}\n\nexport function getAttachmentIdFromFilename(filename: string) {\n return path.parse(filename).name;\n}\n\nexport const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { createWriteStream, WriteStream } from \"node:fs\";\n\nimport { dialog, IpcMainInvokeEvent } from \"electron\";\n\nconst activeStreams = new Map();\n\nexport async function startNativeLogExport(_event: IpcMainInvokeEvent, filename: string) {\n const { filePath, canceled } = await dialog.showSaveDialog({\n defaultPath: filename ?? \"message-logger-logs-idb.json\",\n filters: [{ name: \"JSON\", extensions: [\"json\"] }]\n });\n\n if (canceled || !filePath)\n throw new Error(\"No file path selected\");\n\n const stream = createWriteStream(filePath, { flags: \"w\", encoding: \"utf-8\" });\n\n const streamId = randomUUID();\n activeStreams.set(streamId, stream);\n\n stream.on(\"error\", err => {\n console.error(\"Stream error\", err);\n activeStreams.delete(streamId);\n });\n\n return streamId;\n}\n\nexport async function writeNativeLogChunk(_event: IpcMainInvokeEvent, streamId: string, chunk: string) {\n const stream = activeStreams.get(streamId);\n if (!stream) throw new Error(\"Stream not found or closed\");\n\n // if returns false, buffer is full; wait for drain to prevent RAM spike\n const canContinue = stream.write(chunk);\n if (!canContinue) {\n await new Promise(resolve => stream.once(\"drain\", resolve));\n }\n}\n\nexport async function finishNativeLogExport(_event: IpcMainInvokeEvent, streamId: string) {\n const stream = activeStreams.get(streamId);\n if (!stream) return;\n\n return new Promise(resolve => {\n stream.end(() => {\n activeStreams.delete(streamId);\n resolve();\n });\n });\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { FileHandle, open } from \"node:fs/promises\";\n\nimport { dialog, IpcMainInvokeEvent } from \"electron\";\n\nconst activeFiles = new Map();\n\nexport async function startNativeLogImport(_event: IpcMainInvokeEvent, defaultPath?: string) {\n const res = await dialog.showOpenDialog({\n title: \"Import Logs\",\n filters: [{ name: \"Logs\", extensions: [\"json\"] }],\n properties: [\"openFile\"],\n defaultPath\n });\n const [path] = res.filePaths;\n\n if (!path) throw Error(\"No file selected\");\n\n const fileHandle = await open(path, \"r\");\n const fileId = randomUUID();\n activeFiles.set(fileId, fileHandle);\n\n return fileId;\n}\n\nexport async function readNativeLogChunk(_event: IpcMainInvokeEvent, fileId: string, size: number = 64 * 1024): Promise {\n const fileHandle = activeFiles.get(fileId);\n if (!fileHandle) return null;\n\n const buffer = Buffer.alloc(size);\n const { bytesRead } = await fileHandle.read(buffer, 0, size);\n\n if (bytesRead === 0) {\n await fileHandle.close();\n activeFiles.delete(fileId);\n return null;\n }\n\n return buffer.toString(\"utf-8\", 0, bytesRead);\n}\n\nexport async function closeNativeLogImport(_event: IpcMainInvokeEvent, fileId: string) {\n const fileHandle = activeFiles.get(fileId);\n if (fileHandle) {\n await fileHandle.close();\n activeFiles.delete(fileId);\n }\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nexport const blockedExts = [\n \"com\",\n \"exe\",\n \"dll\",\n \"ocx\",\n \"ps1\",\n \"ps1xml\",\n \"ps2\",\n \"ps2xml\",\n \"psc1\",\n \"psc2\",\n \"msh\",\n \"msh1\",\n \"msh2\",\n \"mshxml\",\n \"msh1xml\",\n \"msh2xml\",\n \"js\",\n \"jse\",\n \"vbs\",\n \"vb\",\n \"vbe\",\n \"cmd\",\n \"bat\",\n \"hta\",\n \"inf\",\n \"reg\",\n \"pif\",\n \"scr\",\n \"cpl\",\n \"scf\",\n \"msc\",\n \"pol\",\n \"hlp\",\n \"chm\",\n \"ws\",\n \"wsf\",\n \"wsc\",\n \"wsh\",\n \"jar\",\n \"z\",\n \"bz2\",\n \"cab\",\n \"tar\",\n \"ace\",\n \"msi\",\n \"msp\",\n \"mst\",\n \"msu\",\n \"ppkg\",\n \"bak\",\n \"tmp\",\n \"ost\",\n \"pst\",\n \"pkg\",\n \"iso\",\n \"img\",\n \"vhd\",\n \"vhdx\",\n \"application\",\n \"lock\",\n \"lck\",\n \"sln\",\n \"cs\",\n \"csproj\",\n \"resx\",\n \"config\",\n \"resources\",\n \"pdb\",\n \"manifest\",\n \"doc\",\n \"dot\",\n \"wbk\",\n \"xls\",\n \"xlt\",\n \"xlm\",\n \"xla\",\n \"ppt\",\n \"pot\",\n \"pps\",\n \"ade\",\n \"adp\",\n \"mdb\",\n \"cdb\",\n \"mda\",\n \"mdn\",\n \"mdt\",\n \"mdf\",\n \"mde\",\n \"ldb\",\n \"wps\",\n \"xlsb\",\n \"xlam\",\n \"xll\",\n \"xlw\",\n \"ppam\"\n];\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport const DEFAULT_IMAGE_CACHE_DIR = \"savedImages\";\nexport const DEFAULT_ATTACHMENT_FILE_EXTENSIONS = \"png,jpg,jpeg,gif,webp,mp4,webm,mp3,ogg,wav\";\nexport const DB_NAME = \"MessageLoggerIDB\";\nexport const DB_VERSION = 1;\nexport const LOGS_DATA_FILENAME = \"message-logger-logs.json\";\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { BrowserWindow, type IpcMainInvokeEvent } from \"electron\";\n\nexport function canOpenDevTools(event: IpcMainInvokeEvent): boolean {\n return !event.sender.isDestroyed();\n}\n\nexport function openDevTools(event: IpcMainInvokeEvent): boolean {\n if (!canOpenDevTools(event)) {\n return false;\n }\n\n const window = BrowserWindow.fromWebContents(event.sender);\n\n if (event.sender.isDevToolsOpened()) {\n window?.focus();\n\n return true;\n }\n\n event.sender.openDevTools();\n\n return true;\n}\n\nexport async function complete(_: IpcMainInvokeEvent, appId: string, authCode: string, questTarget: number, questId: string, activityReferrer?: string): Promise<{ success: boolean; error: string | null; }> {\n const authorization = await authorize(appId, authCode, questId, activityReferrer);\n\n if (authorization.error || !authorization.token) {\n return { success: false, error: \"AUTH: \" + JSON.stringify(authorization.error) };\n }\n\n const progressResult = await progress(appId, authorization.token, questTarget, questId, activityReferrer);\n\n if (progressResult.error || !progressResult.success) {\n return { success: false, error: \"PROGRESS: \" + JSON.stringify(progressResult.error) };\n }\n\n return { success: true, error: null };\n}\n\nfunction getActivityHeaders(questId: string, authToken: string = \"\", activityReferrer?: string): Record {\n const headers: Record = {\n \"Content-Type\": \"application/json\",\n \"X-Auth-Token\": authToken,\n \"X-Discord-Quest-ID\": questId,\n };\n\n if (activityReferrer) {\n headers.Referer = activityReferrer;\n }\n\n return headers;\n}\n\nasync function readJson(res: Response): Promise {\n try {\n return await res.json();\n } catch {\n return null;\n }\n}\n\nfunction getResponseToken(data: unknown): string | false {\n if (data != null && typeof data === \"object\" && \"token\" in data && typeof data.token === \"string\") {\n return data.token;\n }\n\n return false;\n}\n\nasync function authorize(appId: string, authCode: string, questId: string, activityReferrer?: string): Promise<{ token: string | false; error: unknown; }> {\n let error: unknown = null;\n\n const token = await fetch(`https://${appId}.discordsays.com/.proxy/acf/authorize`, {\n headers: getActivityHeaders(questId, \"\", activityReferrer),\n body: JSON.stringify({ code: authCode }),\n method: \"POST\",\n mode: \"cors\",\n credentials: \"include\",\n })\n .then(async res => {\n const data = await readJson(res);\n const token = getResponseToken(data);\n\n if (!res.ok || !token) {\n error = { status: res.status, body: data };\n return false as const;\n }\n\n return token;\n })\n .catch(e => {\n error = e;\n return false as const;\n });\n\n return { token, error };\n}\n\nasync function progress(appId: string, token: string, questTarget: number, questId: string, activityReferrer?: string): Promise<{ success: boolean; error: unknown; }> {\n let error: unknown = null;\n\n const success = await fetch(`https://${appId}.discordsays.com/.proxy/acf/quest/progress`, {\n headers: getActivityHeaders(questId, token, activityReferrer),\n body: JSON.stringify({ progress: questTarget }),\n method: \"POST\",\n mode: \"cors\",\n credentials: \"include\",\n })\n .then(res => res.ok)\n .catch(e => {\n error = e;\n return false;\n });\n\n return { success, error };\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport type { GrTrackData } from \"./types/gensokyoRadio\";\n\nexport async function fetchTrackData(): Promise {\n const song = await (await fetch(\"https://gensokyoradio.net/api/station/playing/\")).json();\n\n return {\n title: song.SONGINFO.TITLE,\n album: song.SONGINFO.ALBUM,\n artist: song.SONGINFO.ARTIST,\n position: song.SONGTIMES.SONGSTART,\n duration: song.SONGTIMES.SONGEND,\n artwork: song.MISC.ALBUMART ? `https://gensokyoradio.net/images/albums/500/${song.MISC.ALBUMART}` : \"\",\n };\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 nin0\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { RendererSettings } from \"@main/settings\";\n\ntype SongLinkResult = {\n info?: {\n title: string;\n artist: string;\n };\n links: {\n [platform: string]: {\n url: string;\n nativeUri?: string;\n };\n };\n};\n\nexport async function getTrackData(_, trackURL: string): Promise {\n const url = new URL(\"https://api.song.link/v1-alpha.1/links\");\n url.searchParams.set(\"url\", trackURL);\n url.searchParams.set(\"userCountry\", RendererSettings.store.plugins?.SongLink.userCountry || \"US\");\n const raw = await fetch(url.toString()).then(u => u.json());\n const [, entry]: any = Object.entries(raw.entitiesByUniqueId)\n .find(([key]) => !key.includes(\"YOUTUBE\")) || [];\n const possibleTrackInfo = entry\n ? { title: (entry.title as string), artist: (entry.artistName as string) }\n : null;\n return {\n // @ts-ignore\n info: possibleTrackInfo,\n links: Object.fromEntries(Object.entries(raw.linksByPlatform).map(([name, data]) => [name, {\n url: data.url,\n nativeUri: data.nativeAppUriDesktop\n }]))\n };\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport * as handlers from \"@song-spotlight/api/handlers\";\nimport type { Song } from \"@song-spotlight/api/structs\";\nimport { setFetchHandler } from \"@song-spotlight/api/util\";\nimport { type IpcMainInvokeEvent, net } from \"electron\";\n\nsetFetchHandler(net.fetch as unknown as typeof fetch);\n\nexport async function parseLink(_: IpcMainInvokeEvent, link: string) {\n return handlers.parseLink(link);\n}\nexport async function renderSong(_: IpcMainInvokeEvent, song: Song) {\n return handlers.renderSong(song);\n}\nexport async function validateSong(_: IpcMainInvokeEvent, song: Song) {\n return handlers.validateSong(song);\n}\n", "import { a as validateSong, i as renderSong, n as clearCache, r as parseLink, t as $ } from \"./finders-B7F6qUME.js\";\nimport { n as services, t as parsers } from \"./core-D9kSOO4F.js\";\nexport { $, clearCache, parseLink, parsers, renderSong, services, validateSong };\n", "//#region package.json\nvar version = \"2.2.0\";\n//#endregion\n//#region src/handlers/common.ts\nfunction clean(link) {\n\tconst url = new URL(link);\n\turl.protocol = \"https\";\n\turl.username = url.password = url.port = url.search = url.hash = \"\";\n\treturn url.toString().replace(/\\/?$/, \"\");\n}\nlet makeRequest = fetch;\n/**\n* Lets you to set a custom `fetch()` function. Useful for passing requests through Electron's [net.fetch](https://www.electronjs.org/docs/latest/api/net#netfetchinput-init) for example.\n* @example ```ts\n* import { net } from \"electron\";\n*\n* setFetchHandler(net.fetch as unknown as typeof fetch);\n* ```\n*/\nfunction setFetchHandler(fetcher) {\n\tmakeRequest = fetcher;\n}\nasync function request(options) {\n\tif (options.body) {\n\t\tconst body = JSON.stringify(options.body);\n\t\toptions.body = body;\n\t\toptions.headers ??= {};\n\t\toptions.headers[\"content-type\"] ??= \"application/json\";\n\t\toptions.headers[\"content-length\"] ??= String(body.length);\n\t}\n\tconst url = new URL(options.url);\n\tfor (const [key, value] of Object.entries(options.query ?? {})) url.searchParams.set(key, value);\n\tconst res = await makeRequest(url, {\n\t\tmethod: options.method,\n\t\tredirect: \"follow\",\n\t\theaders: {\n\t\t\t\"accept\": \"*/*\",\n\t\t\t\"user-agent\": `SongSpotlight/${version}`,\n\t\t\t\"cache-control\": \"public, max-age=3600\",\n\t\t\t...options.headers ?? {}\n\t\t},\n\t\tcf: {\n\t\t\tcacheTtl: 3600,\n\t\t\tcacheEverything: true\n\t\t},\n\t\tbody: options.body\n\t});\n\tconst text = await res.text();\n\tlet json;\n\ttry {\n\t\tjson = JSON.parse(text);\n\t} catch {\n\t\tjson = null;\n\t}\n\treturn {\n\t\tok: res.ok,\n\t\tredirected: res.redirected,\n\t\turl: res.url,\n\t\tstatus: res.status,\n\t\theaders: res.headers,\n\t\ttext,\n\t\tjson\n\t};\n}\nfunction parseNextData(html) {\n\tconst data = html.match(/id=\"__NEXT_DATA__\" type=\"application\\/json\">(.*?)<\\/script>/)?.[1];\n\tif (!data) return void 0;\n\ttry {\n\t\treturn JSON.parse(data);\n\t} catch {\n\t\treturn;\n\t}\n}\n//#endregion\n//#region src/util.ts\n/**\n* Returns whether the specified **Song** should have a tall layout (for **playlists**, **albums** and **artists**) or a short layout (for **tracks**).\n* @example ```ts\n* isListLayout({ service: \"soundcloud\", type: \"user\", id: \"914653456\" });\n* // true\n* ```\n*/\nfunction isListLayout(song, render) {\n\treturn render?.form === \"list\" || ![\"track\", \"song\"].includes(song.type);\n}\n/**\n* Loops through all **services** and returns the corresponding **service**'s label.\n* @example ```ts\n* getServiceLabel(\"applemusic\");\n* // \"Apple Music\"\n* ```\n*/\nfunction getServiceLabel(service) {\n\tfor (const serviced of $.services) if (serviced.name === service) return serviced.label;\n}\n/**\n* Helper function which stringifies a **Song**, useful for caching or for using as keys.\n* @example ```ts\n* sid({ service: \"soundcloud\", type: \"user\", id: \"914653456\" });\n* // \"soundcloud:user:914653456\"\n* ```\n*/\nfunction sid(song) {\n\treturn [\n\t\tsong.service,\n\t\tsong.type,\n\t\tsong.id\n\t].join(\":\");\n}\n//#endregion\n//#region src/handlers/finders.ts\nconst $ = {\n\tservices: [],\n\tparsers: []\n};\nconst parseCache = /* @__PURE__ */ new Map();\nconst validateCache = /* @__PURE__ */ new Map();\n/**\n* Tries to parse the provided **link**. Returns a **Song** if successful, or `null` if nothing was found. Either response is temporarily cached.\n* @example ```ts\n* await parseLink(\"https://soundcloud.com/c0ncernn\");\n* // { service: \"soundcloud\", type: \"user\", id: \"914653456\" }\n* ```\n*/\nasync function parseLink(link) {\n\tconst cleaned = clean(link);\n\tif (parseCache.has(cleaned)) return parseCache.get(cleaned);\n\tconst { hostname, pathname } = new URL(cleaned);\n\tconst path = pathname.slice(1).split(/\\/+/);\n\tlet song = null;\n\tfor (const parser of $.parsers) if (parser.hosts.includes(hostname)) {\n\t\tsong = await parser.parse(cleaned, hostname, path);\n\t\tif (song) break;\n\t}\n\tparseCache.set(cleaned, song);\n\tif (song) validateCache.set(sid(song), true);\n\treturn song;\n}\nconst renderCache = /* @__PURE__ */ new Map();\n/**\n* Tries to render the provided **Song**. Returns `RenderSongInfo` if successful, or `null` if nothing was found. Either response is temporarily cached.\n* @example ```ts\n* await renderSong({ service: \"soundcloud\", type: \"user\", id: \"914653456\" });\n* // { label: \"leroy\", sublabel: \"Top tracks\", explicit: false, form: \"list\", ... }\n* ```\n*/\nasync function renderSong(song) {\n\tconst id = sid(song);\n\tconst cached = renderCache.get(id);\n\tif (cached !== void 0 && (!cached?.expiresAt || cached.expiresAt > Date.now())) return cached;\n\tlet info = null;\n\tconst service = $.services.find((x) => x.name === song.service);\n\tif (service?.types.includes(song.type)) info = await service.render(song.type, song.id);\n\trenderCache.set(id, info);\n\tif (song) validateCache.set(sid(song), true);\n\treturn info;\n}\n/**\n* Validates if the provided **Song** exists. Returns a `boolean` depending on if the check was successful or not. Either response is temporarily cached.\n* @example ```ts\n* await renderSong({ service: \"soundcloud\", type: \"user\", id: \"914653456\" });\n* // true\n* ```\n*/\nasync function validateSong(song) {\n\tconst id = sid(song);\n\tif (validateCache.has(id)) return validateCache.get(id);\n\tlet valid = false;\n\tconst service = $.services.find((x) => x.name === song.service);\n\tif (service?.types.includes(song.type)) valid = await service.validate(song.type, song.id);\n\tvalidateCache.set(id, valid);\n\treturn valid;\n}\n/** Clears the cache for all handler functions */\nfunction clearCache() {\n\tparseCache.clear();\n\trenderCache.clear();\n\tvalidateCache.clear();\n}\n//#endregion\nexport { validateSong as a, sid as c, setFetchHandler as d, renderSong as i, parseNextData as l, clearCache as n, getServiceLabel as o, parseLink as r, isListLayout as s, $ as t, request as u };\n", "import { l as parseNextData, r as parseLink, t as $, u as request } from \"./finders-B7F6qUME.js\";\n//#region src/handlers/defs/parsers/songdotlink.ts\nconst alphabeticRegex = /^[^-_][a-z0-9-_]+[^-_]$/i;\nconst platforms = [\n\t\"spotify\",\n\t\"soundcloud\",\n\t\"appleMusic\",\n\t\"tidal\"\n];\nconst songdotlink = {\n\tname: \"song.link\",\n\tlabel: \"song.link\",\n\thosts: [\n\t\t\"song.link\",\n\t\t\"album.link\",\n\t\t\"artist.link\",\n\t\t\"pods.link\",\n\t\t\"playlist.link\",\n\t\t\"mylink.page\",\n\t\t\"odesli.co\"\n\t],\n\tasync parse(link, _host, path) {\n\t\tconst [first, second, third] = path;\n\t\tif (!first || third) return null;\n\t\tif (second && !alphabeticRegex.test(second)) return null;\n\t\telse if (!second && !alphabeticRegex.test(first)) return null;\n\t\tconst html = (await request({ url: link })).text;\n\t\tconst sections = parseNextData(html)?.props?.pageProps?.pageData?.sections;\n\t\tif (!sections) return null;\n\t\tconst links = sections.flatMap((x) => x.links ?? []).filter((x) => x.url && x.platform);\n\t\tfor (const platform of platforms) {\n\t\t\tconst link = links.find((x) => x.platform === platform);\n\t\t\tif (link) {\n\t\t\t\tconst parsed = await parseLink(link.url);\n\t\t\t\tif (parsed) return parsed;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n//#endregion\n//#region src/handlers/defs/cache.ts\nconst handlerCache = /* @__PURE__ */ new Map();\nfunction makeCache(name, retrieve) {\n\treturn { retrieve(...args) {\n\t\tif (handlerCache.has(name)) return handlerCache.get(name);\n\t\tconst res = retrieve(...args);\n\t\tif (res instanceof Promise) return res.then((ret) => {\n\t\t\thandlerCache.set(name, ret);\n\t\t\treturn ret;\n\t\t});\n\t\telse {\n\t\t\thandlerCache.set(name, res);\n\t\t\treturn res;\n\t\t}\n\t} };\n}\n//#endregion\n//#region src/handlers/defs/services/applemusic.ts\nconst geo = \"us\";\nconst defaultName = \"songspotlight\";\nfunction applemusicLink(type, id) {\n\treturn `https://music.apple.com/${geo}/${type}/${defaultName}/${id}`;\n}\nconst applemusicToken = makeCache(\"applemusicToken\", async (html) => {\n\thtml ??= (await request({ url: `https://music.apple.com/${geo}/new` })).text;\n\tconst asset = html.match(/src=\"(\\/assets\\/index~\\w+\\.js)\"/i)?.[1];\n\tif (!asset) return;\n\treturn (await request({ url: `https://music.apple.com${asset}` })).text.match(/\\w+=\"(ey.*?)\"/i)?.[1];\n});\nconst applemusic = {\n\tname: \"applemusic\",\n\tlabel: \"Apple Music\",\n\thosts: [\"music.apple.com\", \"geo.music.apple.com\"],\n\ttypes: [\n\t\t\"artist\",\n\t\t\"album\",\n\t\t\"playlist\",\n\t\t\"song\"\n\t],\n\tasync parse(_link, _host, path) {\n\t\tconst [country, type, name, id, fourth] = path;\n\t\tif (!country || !type || !this.types.includes(type) || !name || !id || fourth) return null;\n\t\tconst res = await request({ url: applemusicLink(type, id) });\n\t\tif (res.status !== 200) return null;\n\t\tawait applemusicToken.retrieve(res.text);\n\t\treturn {\n\t\t\tservice: this.name,\n\t\t\ttype,\n\t\t\tid\n\t\t};\n\t},\n\tasync render(type, id) {\n\t\tconst token = await applemusicToken.retrieve();\n\t\tif (!token) return null;\n\t\tconst res = await request({\n\t\t\turl: `https://amp-api.music.apple.com/v1/catalog/${geo}/${type}s`,\n\t\t\tquery: {\n\t\t\t\tinclude: \"songs\",\n\t\t\t\tids: id\n\t\t\t},\n\t\t\theaders: {\n\t\t\t\tauthorization: `Bearer ${token}`,\n\t\t\t\torigin: \"https://music.apple.com\"\n\t\t\t}\n\t\t});\n\t\tif (res.status !== 200) return null;\n\t\tconst { attributes, relationships } = res.json.data[0];\n\t\tconst base = {\n\t\t\tlabel: attributes.name,\n\t\t\tsublabel: attributes.artistName ?? \"Top songs\",\n\t\t\tlink: attributes.url,\n\t\t\texplicit: attributes.contentRating === \"explicit\"\n\t\t};\n\t\tconst thumbnailUrl = attributes.artwork?.url?.replace(/{[wh]}/g, \"128\");\n\t\tif (type === \"song\") {\n\t\t\tconst duration = attributes.durationInMillis, previewUrl = attributes.previews?.[0]?.url;\n\t\t\treturn {\n\t\t\t\tform: \"single\",\n\t\t\t\t...base,\n\t\t\t\tthumbnailUrl,\n\t\t\t\tsingle: { audio: previewUrl && duration ? {\n\t\t\t\t\tpreviewUrl,\n\t\t\t\t\tduration\n\t\t\t\t} : void 0 }\n\t\t\t};\n\t\t} else return {\n\t\t\tform: \"list\",\n\t\t\t...base,\n\t\t\tthumbnailUrl,\n\t\t\tlist: (relationships.tracks?.data ?? relationships.songs?.data ?? []).slice(0, 15).map(({ attributes }) => {\n\t\t\t\tconst duration = attributes.durationInMillis, previewUrl = attributes.previews?.[0]?.url;\n\t\t\t\treturn {\n\t\t\t\t\tlabel: attributes.name,\n\t\t\t\t\tsublabel: attributes.artistName,\n\t\t\t\t\tlink: attributes.url,\n\t\t\t\t\texplicit: attributes.contentRating === \"explicit\",\n\t\t\t\t\taudio: previewUrl && duration ? {\n\t\t\t\t\t\tpreviewUrl,\n\t\t\t\t\t\tduration\n\t\t\t\t\t} : void 0\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t},\n\tasync validate(type, id) {\n\t\treturn (await request({ url: applemusicLink(type, id) })).status === 200;\n\t}\n};\n//#endregion\n//#region src/handlers/defs/services/soundcloud.ts\nconst client_id = \"nIjtjiYnjkOhMyh5xrbqEW12DxeJVnic\";\nconst app_version = \"1782997503\";\nasync function parseWidget(type, id, tracks) {\n\treturn (await request({\n\t\turl: `https://api-widget.soundcloud.com/${type}s/${id}${tracks ? \"/tracks\" : \"\"}`,\n\t\tquery: {\n\t\t\tformat: \"json\",\n\t\t\tlimit: \"20\",\n\t\t\tclient_id,\n\t\t\tapp_version\n\t\t}\n\t})).json;\n}\nasync function parsePlaylistTracks(playlistId, trackIds) {\n\treturn (await request({\n\t\turl: `https://api-widget.soundcloud.com/tracks`,\n\t\tquery: {\n\t\t\tids: trackIds.join(\",\"),\n\t\t\tplaylistId,\n\t\t\tplaylistSecretToken: \"\",\n\t\t\tformat: \"json\",\n\t\t\tclient_id,\n\t\t\tapp_version\n\t\t}\n\t})).json;\n}\nfunction filterPreview(track) {\n\treturn track.format.protocol === \"progressive\" && track.format.mime_type === \"audio/mpeg\" && track?.url && track?.duration;\n}\nconst previewPoint = .4;\nconst previewDuration = 3e4;\nasync function parsePreview(transcodings) {\n\tconst preview = transcodings.sort((a, b) => {\n\t\treturn +filterPreview(b) - +filterPreview(a);\n\t})?.[0];\n\tif (preview?.url && preview?.duration) {\n\t\tconst link = (await request({\n\t\t\turl: preview.url,\n\t\t\tquery: { client_id }\n\t\t})).json;\n\t\tif (!link?.url) return;\n\t\tif (preview.duration >= 1e3) {\n\t\t\tconst previewChunk = Math.min(previewDuration, preview.duration);\n\t\t\tconst previewStart = Math.ceil(preview.duration * previewPoint);\n\t\t\treturn {\n\t\t\t\tduration: preview.duration,\n\t\t\t\tpreviewUrl: link.url,\n\t\t\t\tpreviewStart,\n\t\t\t\tpreviewSlice: Math.min(previewChunk, preview.duration - previewStart)\n\t\t\t};\n\t\t} else return {\n\t\t\tduration: preview.duration,\n\t\t\tpreviewUrl: link.url\n\t\t};\n\t}\n}\nfunction extractExpiry$1(url) {\n\ttry {\n\t\tconst policy = new URL(url).searchParams.get(\"Policy\");\n\t\tif (!policy) return void 0;\n\t\treturn JSON.parse(atob(policy.replace(/_/g, \"=\"))).Statement[0].Condition.DateLessThan[\"AWS:EpochTime\"] * 1e3;\n\t} catch {\n\t\treturn;\n\t}\n}\nconst soundcloud = {\n\tname: \"soundcloud\",\n\tlabel: \"Soundcloud\",\n\thosts: [\n\t\t\"soundcloud.com\",\n\t\t\"m.soundcloud.com\",\n\t\t\"on.soundcloud.com\"\n\t],\n\ttypes: [\n\t\t\"user\",\n\t\t\"track\",\n\t\t\"playlist\"\n\t],\n\tasync parse(link, host, path) {\n\t\tif (host === \"on.soundcloud.com\") {\n\t\t\tif (!path[0] || path[1]) return null;\n\t\t\tconst { url, status } = await request({ url: link });\n\t\t\treturn status === 200 ? await parseLink(url) : null;\n\t\t} else {\n\t\t\tconst [user, second, track, fourth] = path;\n\t\t\tlet valid = false;\n\t\t\tif (user && !second) valid = true;\n\t\t\telse if (user && second && second !== \"sets\" && !track) valid = true;\n\t\t\telse if (user && second === \"sets\" && track && !fourth) valid = true;\n\t\t\tif (!valid) return null;\n\t\t\tconst data = (await request({\n\t\t\t\turl: \"https://soundcloud.com/oembed\",\n\t\t\t\tquery: {\n\t\t\t\t\tformat: \"json\",\n\t\t\t\t\turl: link\n\t\t\t\t}\n\t\t\t})).json;\n\t\t\tif (!data?.html) return null;\n\t\t\tconst rawUrl = data.html.match(/w\\.soundcloud\\.com.*?url=(.*?)[&\"]/)?.[1];\n\t\t\tif (!rawUrl) return null;\n\t\t\tconst splits = decodeURIComponent(rawUrl).split(/\\/+/);\n\t\t\tconst kind = splits[2], id = splits[3];\n\t\t\tif (!kind || !id) return null;\n\t\t\treturn {\n\t\t\t\tservice: this.name,\n\t\t\t\ttype: kind.slice(0, -1),\n\t\t\t\tid\n\t\t\t};\n\t\t}\n\t},\n\tasync render(type, id) {\n\t\tconst data = await parseWidget(type, id);\n\t\tif (!data?.id) return null;\n\t\tconst base = {\n\t\t\tlabel: data.title ?? data.username,\n\t\t\tsublabel: data.user?.username ?? \"Top tracks\",\n\t\t\tlink: data.permalink_url,\n\t\t\texplicit: Boolean(data.publisher_metadata?.explicit)\n\t\t};\n\t\tconst thumbnailUrl = data.artwork_url ?? data.avatar_url;\n\t\tif (type === \"track\") {\n\t\t\tconst audio = await parsePreview(data.media?.transcodings ?? []).catch(() => void 0);\n\t\t\treturn {\n\t\t\t\tform: \"single\",\n\t\t\t\t...base,\n\t\t\t\tthumbnailUrl,\n\t\t\t\tsingle: { audio },\n\t\t\t\texpiresAt: audio ? extractExpiry$1(audio.previewUrl) : void 0\n\t\t\t};\n\t\t} else {\n\t\t\tlet tracks = [];\n\t\t\tif (type === \"user\") {\n\t\t\t\tconst got = await parseWidget(type, id, true).catch(() => void 0);\n\t\t\t\tif (got?.collection) tracks = got.collection;\n\t\t\t} else if (data.tracks) {\n\t\t\t\ttracks = data.tracks;\n\t\t\t\tconst missingIds = tracks.filter((x) => x.policy === \"ALLOW\" && !x.uri).map((x) => x.id).slice(0, 15);\n\t\t\t\tconst retrieved = missingIds.length >= 1 && await parsePlaylistTracks(id, missingIds);\n\t\t\t\tif (retrieved) for (let i = 0; i < tracks.length; i++) {\n\t\t\t\t\tconst replaced = retrieved.find((x) => x.id === tracks[i]?.id);\n\t\t\t\t\tif (replaced) tracks[i] = replaced;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst list = await Promise.all(tracks.filter((x) => x.uri).slice(0, 15).map(async (track) => ({\n\t\t\t\tlabel: track.title,\n\t\t\t\tsublabel: track.user?.username ?? \"unknown\",\n\t\t\t\tlink: track.permalink_url,\n\t\t\t\texplicit: Boolean(track.publisher_metadata.explicit),\n\t\t\t\taudio: await parsePreview(track.media?.transcodings ?? []).catch(() => void 0)\n\t\t\t})));\n\t\t\tconst expires = list.map(({ audio }) => audio ? extractExpiry$1(audio.previewUrl) : void 0).filter((x) => typeof x === \"number\");\n\t\t\treturn {\n\t\t\t\tform: \"list\",\n\t\t\t\t...base,\n\t\t\t\tthumbnailUrl,\n\t\t\t\tlist,\n\t\t\t\texpiresAt: expires[0] ? Math.min(...expires) : void 0\n\t\t\t};\n\t\t}\n\t},\n\tasync validate(type, id) {\n\t\treturn (await parseWidget(type, id))?.id !== void 0;\n\t}\n};\n//#endregion\n//#region src/handlers/defs/services/spotify.ts\nasync function parseEmbed(type, id) {\n\treturn parseNextData((await request({ url: `https://open.spotify.com/embed/${type}/${id}` })).text);\n}\nfunction fromUri(uri) {\n\tconst [sanityCheck, type, id] = uri.split(\":\");\n\tif (sanityCheck === \"spotify\" && type && id) return `https://open.spotify.com/${type}/${id}`;\n\telse return null;\n}\nconst spotify = {\n\tname: \"spotify\",\n\tlabel: \"Spotify\",\n\thosts: [\"open.spotify.com\"],\n\ttypes: [\n\t\t\"track\",\n\t\t\"album\",\n\t\t\"playlist\",\n\t\t\"artist\"\n\t],\n\tasync parse(_link, _host, path) {\n\t\tconst [type, id, third] = path;\n\t\tif (!type || !this.types.includes(type) || !id || third) return null;\n\t\tif (!await this.validate(type, id)) return null;\n\t\treturn {\n\t\t\tservice: this.name,\n\t\t\ttype,\n\t\t\tid\n\t\t};\n\t},\n\tasync render(type, id) {\n\t\tconst data = (await parseEmbed(type, id))?.props?.pageProps?.state?.data?.entity;\n\t\tif (!data) return null;\n\t\tconst base = {\n\t\t\tlabel: data.title,\n\t\t\tsublabel: data.subtitle ?? data.artists?.map((x) => x.name).join(\", \"),\n\t\t\tlink: fromUri(data.uri),\n\t\t\texplicit: Boolean(data.isExplicit)\n\t\t};\n\t\tconst thumbnailUrl = data.visualIdentity.image.sort((a, b) => a.maxWidth - b.maxWidth)[0]?.url.replace(/:\\/\\/.*?\\.spotifycdn\\.com\\/image/, \"://i.scdn.co/image\");\n\t\tif (type === \"track\") return {\n\t\t\tform: \"single\",\n\t\t\t...base,\n\t\t\tthumbnailUrl,\n\t\t\tsingle: { audio: data.audioPreview && data.duration ? {\n\t\t\t\tduration: data.duration,\n\t\t\t\tpreviewUrl: data.audioPreview.url\n\t\t\t} : void 0 }\n\t\t};\n\t\telse return {\n\t\t\tform: \"list\",\n\t\t\t...base,\n\t\t\tthumbnailUrl,\n\t\t\tlist: (data.trackList ?? []).slice(0, 15).map((track) => ({\n\t\t\t\tlabel: track.title,\n\t\t\t\tsublabel: track.subtitle ?? track.artists?.map((x) => x.name).join(\", \"),\n\t\t\t\tlink: fromUri(track.uri),\n\t\t\t\texplicit: Boolean(track.isExplicit),\n\t\t\t\taudio: track.audioPreview && track.duration ? {\n\t\t\t\t\tduration: track.duration,\n\t\t\t\t\tpreviewUrl: track.audioPreview.url\n\t\t\t\t} : void 0\n\t\t\t}))\n\t\t};\n\t},\n\tasync validate(type, id) {\n\t\treturn !(await parseEmbed(type, id))?.props?.pageProps?.title;\n\t}\n};\n//#endregion\n//#region src/handlers/defs/services/tidal.ts\nconst tidalToken = \"vNVdglQOjFJJGG2U\";\nasync function getInfo(type, id, path = \"\", query = {}) {\n\treturn await request({\n\t\turl: `https://api.tidal.com/v1/${type}s/${id}/${path}`,\n\t\tquery: {\n\t\t\tcountryCode: \"US\",\n\t\t\t...query\n\t\t},\n\t\theaders: { \"X-Tidal-Token\": tidalToken }\n\t}).then((x) => x.ok ? x.json : void 0);\n}\nasync function getAudioPreview(id) {\n\tconst info = await getInfo(\"track\", id, \"playbackinfo\", {\n\t\taudioquality: \"HIGH\",\n\t\tplaybackmode: \"STREAM\",\n\t\tassetpresentation: \"FULL\"\n\t});\n\tif (!info?.manifest) return;\n\treturn JSON.parse(atob(info.manifest)).urls[0];\n}\nfunction prettyLink(link) {\n\ttry {\n\t\tconst url = new URL(link);\n\t\turl.protocol = \"https://\";\n\t\treturn url.toString();\n\t} catch {\n\t\treturn link;\n\t}\n}\nfunction extractExpiry(url) {\n\ttry {\n\t\tconst token = new URL(url).searchParams.get(\"token\");\n\t\tif (!token) return void 0;\n\t\tconst timestamp = Number(token.split(\"~\")[0]);\n\t\treturn !Number.isNaN(timestamp) ? timestamp * 1e3 : void 0;\n\t} catch {\n\t\treturn;\n\t}\n}\n//#endregion\n//#region src/handlers/core.ts\nconst services = [\n\tapplemusic,\n\tsoundcloud,\n\tspotify,\n\t{\n\t\tname: \"tidal\",\n\t\tlabel: \"Tidal\",\n\t\thosts: [\n\t\t\t\"tidal.com\",\n\t\t\t\"www.tidal.com\",\n\t\t\t\"listen.tidal.com\"\n\t\t],\n\t\ttypes: [\n\t\t\t\"artist\",\n\t\t\t\"album\",\n\t\t\t\"playlist\",\n\t\t\t\"track\"\n\t\t],\n\t\tasync parse(_link, _host, path) {\n\t\t\tconst [typeFoo, idFoo, typeBar, idBar] = path;\n\t\t\tconst type = typeBar && idBar ? typeBar : typeFoo, id = typeBar && idBar ? idBar : idFoo;\n\t\t\tif (!type || !this.types.includes(type) || !id) return null;\n\t\t\tif (type === \"playlist\" && !/^[-a-f0-9]+$/.test(id)) return null;\n\t\t\telse if (type !== \"playlist\" && Number.isNaN(Number(id))) return null;\n\t\t\tif (!await this.validate(type, id)) return null;\n\t\t\treturn {\n\t\t\t\tservice: this.name,\n\t\t\t\ttype,\n\t\t\t\tid\n\t\t\t};\n\t\t},\n\t\tasync render(type, id) {\n\t\t\tconst data = await getInfo(type, id);\n\t\t\tif (!data) return null;\n\t\t\tconst defaultSublabel = data.type === \"playlist\" ? \"TIDAL\" : \"Top tracks\";\n\t\t\tconst base = {\n\t\t\t\tlabel: data.title || data.name || \"Unknown\",\n\t\t\t\tsublabel: data.artists?.map((x) => x.name).join(\", \") || data.creator?.name || defaultSublabel,\n\t\t\t\tlink: prettyLink(data.url),\n\t\t\t\texplicit: Boolean(data.explicit)\n\t\t\t};\n\t\t\tconst thumbnailKey = data.picture ?? data.squareImage ?? data.cover;\n\t\t\tconst thumbnailUrl = thumbnailKey ? `https://resources.tidal.com/images/${thumbnailKey.replace(/-/g, \"/\")}/160x160.jpg` : void 0;\n\t\t\tif (type === \"track\") {\n\t\t\t\tconst previewUrl = data.duration && await getAudioPreview(id).catch(() => void 0);\n\t\t\t\treturn {\n\t\t\t\t\tform: \"single\",\n\t\t\t\t\t...base,\n\t\t\t\t\tthumbnailUrl,\n\t\t\t\t\tsingle: { audio: previewUrl && data.duration ? {\n\t\t\t\t\t\tpreviewUrl,\n\t\t\t\t\t\tduration: data.duration * 1e3\n\t\t\t\t\t} : void 0 },\n\t\t\t\t\texpiresAt: previewUrl ? extractExpiry(previewUrl) : void 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tconst tracks = await getInfo(type, id, type === \"artist\" ? \"toptracks\" : \"tracks\", { limit: String(15) });\n\t\t\t\tconst list = await Promise.all(tracks?.items.slice(0, 15).map(async (track) => {\n\t\t\t\t\tconst previewUrl = track.duration && await getAudioPreview(track.id).catch(() => void 0);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tlabel: track.title,\n\t\t\t\t\t\tsublabel: track.artists.map((x) => x.name).join(\", \"),\n\t\t\t\t\t\tlink: prettyLink(track.url),\n\t\t\t\t\t\texplicit: Boolean(track.explicit),\n\t\t\t\t\t\taudio: previewUrl && track.duration ? {\n\t\t\t\t\t\t\tpreviewUrl,\n\t\t\t\t\t\t\tduration: track.duration * 1e3\n\t\t\t\t\t\t} : void 0\n\t\t\t\t\t};\n\t\t\t\t}) ?? []);\n\t\t\t\tconst expires = list.map(({ audio }) => audio ? extractExpiry(audio.previewUrl) : void 0).filter((x) => typeof x === \"number\");\n\t\t\t\treturn {\n\t\t\t\t\tform: \"list\",\n\t\t\t\t\t...base,\n\t\t\t\t\tthumbnailUrl,\n\t\t\t\t\tlist,\n\t\t\t\t\texpiresAt: expires[0] ? Math.min(...expires) : void 0\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tasync validate(type, id) {\n\t\t\treturn !!await getInfo(type, id);\n\t\t}\n\t}\n];\n$.services = services;\nconst parsers = [songdotlink, ...services];\n$.parsers = parsers;\n//#endregion\nexport { services as n, parsers as t };\n", "import { c as sid, d as setFetchHandler, o as getServiceLabel, s as isListLayout } from \"./finders-B7F6qUME.js\";\nexport { getServiceLabel, isListLayout, setFetchHandler, sid };\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { THEMES_DIR } from \"@main/utils/constants\";\nimport { ensureSafePath } from \"@main/utils/ensureSafePath\";\nimport { IpcMainInvokeEvent } from \"electron\";\nimport { existsSync, writeFileSync } from \"fs\";\n\nimport type { Theme } from \"./types\";\n\nfunction getThemePath(theme: Theme): string | null {\n if (!theme?.name) return null;\n return ensureSafePath(THEMES_DIR, `${theme.name}.theme.css`);\n}\n\nexport async function themeExists(_: IpcMainInvokeEvent, theme: Theme) {\n const path = getThemePath(theme);\n return path ? existsSync(path) : false;\n}\n\nexport async function downloadTheme(_: IpcMainInvokeEvent, theme: Theme) {\n if (!theme?.content || !theme?.name || !theme?.id) return;\n\n const path = getThemePath(theme);\n if (!path) throw new Error(\"Invalid theme name\");\n\n const download = await fetch(`https://themes.equicord.org/api/download/${encodeURIComponent(theme.id)}`);\n const content = await download.text();\n writeFileSync(path, content);\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 nin0\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { NativeSettings } from \"@main/settings\";\nimport { exec, spawn } from \"child_process\";\nimport { BrowserWindow, dialog, shell, WebContentsView } from \"electron\";\nimport { existsSync, readdirSync, readFileSync } from \"fs\";\nimport { mkdir, readdir, readFile, rm } from \"fs/promises\";\nimport { basename, join } from \"path\";\nimport yaml from \"yaml-js\";\n\n// @ts-ignore fuck off\nimport pluginValidateContent from \"./misc/pluginValidate.txt\"; // i would use HTML but esbuild is being whiny\n// @ts-ignore fuck off\nimport setGitPathContent from \"./misc/setGitPath.txt\";\n// @ts-ignore fuck off\nimport updateValidateContent from \"./misc/updateValidate.txt\"; // see above\n\nconst PLUGIN_META_REGEX = /export default definePlugin\\((?:\\s|\\/(?:\\/|\\*).*)*{\\s*(?:\\s|\\/(?:\\/|\\*).*)*name:\\s*(?:\"|'|`)(.*)(?:\"|'|`)(?:\\s|\\/(?:\\/|\\*).*)*,(?:\\s|\\/(?:\\/|\\*).*)*.+(?:\\s|\\/(?:\\/|\\*).*)*description:\\s*(?:\"|'|`)(.*)(?:\"|'|`)(?:\\s|\\/(?:\\/|\\*).*)*/;\n// if edited, also edit in misc/constants.ts!!!\nconst CLONE_LINK_REGEX = /https:\\/\\/(?:((?:git(?:hub|lab)\\.com|git\\.(?:[a-zA-Z0-9]|\\.)+|codeberg\\.org))\\/(?!user-attachments)((?:[a-zA-Z0-9]|-)+)\\/((?:[a-zA-Z0-9]|-|\\.)+)(?:\\.git)?|(plugins\\.(nin0)\\.dev)\\/((?:[a-zA-Z0-9]|-|\\.)+))(?:\\/)?/;\n\nconst vencordPath = [\"desktop\", \"equibop\"].includes(basename(__dirname)) ? join(__dirname, \"../\") : __dirname;\n\nexport async function ensurePluginsDirectory(_: any) {\n if (!IS_DEV) return;\n try {\n await mkdir(join(vencordPath, \"../src/userplugins\"), { recursive: true });\n } catch(e) { }\n}\n\nexport async function rmPlugin(_, name: string): Promise {\n // eslint-disable-next-line\n return new Promise(async (resolve, reject) => {\n const ups = await getUserplugins();\n const pl = ups.find(p => p.directory! === name);\n if (!pl) return;\n\n const deleteReqDialog = await dialog.showMessageBox({\n title: \"Uninstall plugin\",\n message: `Uninstall ${pl.name}`,\n type: \"error\",\n detail: `The uninstall of the userplugin ${pl.name} has been requested. Would you like to do so?\\n\\nIf you did not initiate this, press No.`,\n buttons: [\"No\", \"Yes\"]\n });\n\n if (deleteReqDialog.response !== 1) return reject(\"User rejected\");\n await rm(join(vencordPath, \"../src/userplugins\", name), { recursive: true });\n\n await build();\n resolve(\"Done\");\n });\n}\n\nexport async function isUpdateAvailableForPlugin(_, name: string): Promise {\n return new Promise(resolve => {\n const pluginDir = join(vencordPath, \"../src/userplugins\", name);\n const otherProc = exec(\"git fetch\", {\n cwd: pluginDir\n });\n otherProc.once(\"close\", () => {\n async function doStuff() {\n try {\n const head = (await readFile(join(pluginDir, \".git/HEAD\"), \"utf8\")).match(/^ref: (.+)/)![1];\n const remoteHead = (await readFile(join(pluginDir, \".git/refs/remotes/origin/HEAD\"), \"utf8\")).match(/^ref: (.+)/)![1];\n const localCommit = await readFile(join(pluginDir, \".git\", head), \"utf8\");\n const remoteCommit = await readFile(join(pluginDir, \".git\", remoteHead), \"utf8\");\n\n resolve(localCommit !== remoteCommit);\n }\n catch (e) {\n resolve(false);\n }\n }\n doStuff();\n });\n });\n}\n\nexport function initPluginInstall(_, link: string, source: string, owner: string, repo: string): Promise {\n // eslint-disable-next-line\n return new Promise(async (resolve, reject) => {\n const verifiedRegex = link.match(CLONE_LINK_REGEX)!;\n const idpl = source === \"plugins.nin0.dev\" ? 1 : 0;\n if (![4, 7].includes(verifiedRegex.length) || verifiedRegex[0] !== link || verifiedRegex[[1, 4][idpl]] !== source || verifiedRegex[[2, 5][idpl]] !== owner || verifiedRegex[[3, 6][idpl]] !== repo) return reject(\"Invalid link\");\n\n // Ask for clone\n const cloneDialog = await dialog.showMessageBox({\n title: \"Clone userplugin\",\n message: `You are about to clone a userplugin from ${source}.`,\n type: \"question\",\n detail: `The repository name is \"${repo}\" and it is owned by \"${owner}\".\\nThe repository URL is ${link}\\n\\n(If you did not request this intentionally, choose Cancel)`,\n buttons: [\"Cancel\", \"Clone repository and continue install\", \"Open repository in browser\"]\n });\n switch (cloneDialog.response) {\n case 0: {\n return reject(\"Rejected by user\");\n }\n case 1: {\n await cloneRepo(link, repo);\n break;\n }\n case 2: {\n await shell.openExternal(link);\n return reject(\"silentStop\");\n }\n }\n\n // Get plugin meta\n const meta = await getPluginMeta(join(vencordPath, \"..\", \"src\", \"userplugins\", repo));\n\n // Review plugin\n const win = new BrowserWindow({\n maximizable: false,\n minimizable: false,\n width: 560,\n height: meta.usesNative || meta.usesPreSend ? 650 : 360,\n resizable: false,\n webPreferences: {\n devTools: true\n },\n title: \"Review userplugin\",\n modal: true,\n parent: BrowserWindow.getAllWindows()[0],\n show: false,\n autoHideMenuBar: true\n });\n const reView /* haha got it */ = new WebContentsView({\n webPreferences: {\n devTools: true,\n nodeIntegration: true\n }\n });\n win.contentView.addChildView(reView);\n win.loadURL(generateReviewPluginContent(meta));\n win.on(\"page-title-updated\", async e => {\n switch (win.webContents.getTitle() as \"abortInstall\" | \"reviewCode\" | \"install\") {\n case \"abortInstall\": {\n win.close();\n await rm(join(vencordPath, \"..\", \"src\", \"userplugins\", repo), {\n recursive: true\n });\n return reject(\"Rejected by user\");\n }\n case \"install\": {\n win.close();\n try {\n await build();\n }\n catch (e) {\n reject((e as Error).toString());\n }\n resolve(JSON.stringify({\n name: meta.name,\n native: meta.usesNative\n }));\n break;\n }\n }\n });\n win.show();\n });\n}\n\nasync function build(): Promise {\n return new Promise((resolve, reject) => {\n const proc = exec(\"pnpm build --dev\", {\n cwd: join(vencordPath, \"..\"),\n shell: process.env.SHELL || process.env.ComSpec || \"/bin/sh\"\n });\n proc.once(\"close\", () => {\n if (proc.exitCode !== 0) {\n reject(\"Failed to build Vencord, try building from console\");\n }\n resolve(\"Success\");\n });\n });\n}\n\nasync function getPluginMeta(path: string, extra: object = {}): Promise<{\n name: string;\n description: string;\n usesPreSend: boolean;\n usesNative: boolean;\n directory?: string;\n remote: string;\n supportChannelID?: string;\n}> {\n return new Promise((resolve, reject) => {\n const files = readdirSync(path);\n let fileToRead: \"index.ts\" | \"index.tsx\" | \"index.js\" | \"index.jsx\" | undefined;\n files.forEach(f => {\n if (f === \"index.ts\") fileToRead = \"index.ts\";\n if (f === \"index.tsx\") fileToRead = \"index.tsx\";\n if (f === \"index.js\") fileToRead = \"index.js\";\n if (f === \"index.jsx\") fileToRead = \"index.jsx\";\n });\n if (!fileToRead) reject(\"Invalid plugin\");\n\n const file = readFileSync(`${path}/${fileToRead}`, \"utf8\");\n let remoteURL;\n try {\n const remoteC = readFileSync(join(path, \".git/config\"), \"utf8\");\n remoteURL = remoteC.match(/\\[remote \"origin\"]\\s+url = (https:\\/\\/(?:(?:git(?:hub|lab)\\.com|git\\.(?:[a-zA-Z0-9]|\\.)+|codeberg\\.org)\\/(?!user-attachments)(?:[a-zA-Z0-9]|-)+\\/(?:[a-zA-Z0-9]|-|\\.)+(?:\\.git)?|(plugins\\.(nin0)\\.dev)\\/((?:[a-zA-Z0-9]|-|\\.)+))(?:\\/)?)\\n/);\n } catch {\n remoteURL = null;\n }\n\n let supportChannelID;\n try {\n const meta = readFileSync(join(path, \"meta.yml\"), \"utf8\");\n console.log(meta);\n const parsed = yaml.load(meta);\n if (parsed.thread && typeof parsed.thread === \"string\" && /^\\d+$/.test(parsed.thread)) {\n supportChannelID = parsed.thread;\n }\n } catch {\n supportChannelID = null;\n }\n\n const rawMeta = file.match(PLUGIN_META_REGEX);\n resolve({\n name: rawMeta![1],\n description: rawMeta![2],\n usesPreSend: file.includes(\"PreSendListener\") || file.includes(\"onBeforeMessage\"),\n usesNative: files.includes(\"native.ts\") || files.includes(\"native.js\"),\n remote: remoteURL ? remoteURL[1] : \"\",\n supportChannelID,\n ...extra\n });\n\n });\n}\n\nasync function cloneRepo(link: string, repo: string): Promise {\n return new Promise((resolve, reject) => {\n const proc = spawn(\"git\", [\"clone\", link], {\n cwd: join(vencordPath, \"..\", \"src\", \"userplugins\")\n });\n proc.once(\"close\", async () => {\n if (proc.exitCode !== 0) {\n if (!existsSync(join(vencordPath, \"..\", \"src\", \"userplugins\", repo)))\n return reject(\"Failed to clone\");\n const deleteReqDialog = await dialog.showMessageBox({\n title: \"Error\",\n message: \"Plugin already exists\",\n type: \"error\",\n detail: `The plugin that you tried to clone already exists at ${join(vencordPath, \"..\", \"src\", \"userplugins\")}.\\nWould you like to reclone it? Only do this if you want to reinstall or update the plugin.`,\n buttons: [\"No\", \"Yes\"]\n });\n if (deleteReqDialog.response !== 1) return reject(\"User rejected\");\n await rm(join(vencordPath, \"..\", \"src\", \"userplugins\", repo), {\n recursive: true\n });\n await cloneRepo(link, repo);\n }\n resolve();\n });\n });\n}\n\nfunction generateReviewPluginContent(meta: {\n name: string;\n description: string;\n usesPreSend: boolean;\n usesNative: boolean;\n}): string {\n const template = pluginValidateContent.replace(\"%PLUGINNAME%\", meta.name.replaceAll(\"<\", \"<\")).replace(\"%PLUGINDESC%\", meta.description.replaceAll(\"<\", \"<\")).replace(\"%WARNINGHIDER%\", !meta.usesNative && !meta.usesPreSend ? \"[data-useless=\\\"warning\\\"] { display: none !important; }\" : \"\").replace(\"%NATIVETSHIDER%\", meta.usesNative ? \"\" : \"#native-ts-warning { display: none !important; }\").replace(\"%PRESENDHIDER%\", meta.usesPreSend ? \"\" : \"#pre-send-warning { display: none !important; }\");\n const buf = Buffer.from(template).toString(\"base64\");\n return `data:text/html;base64,${buf}`;\n}\n\nfunction generateUpdatePluginContent(meta: {\n name: string;\n description: string;\n remote: string;\n commit: string;\n}): string {\n const template = updateValidateContent.replace(\"%PLUGINNAME%\", meta.name.replaceAll(\"<\", \"<\")).replace(\"%PLUGINDESC%\", meta.description.replaceAll(\"<\", \"<\")).replace(\"%REMOTE%\", meta.remote).replace(\"%COMMITMESSAGE%\", meta.commit.replaceAll(\"\\n\", \"
\"));\n const buf = Buffer.from(template).toString(\"base64\");\n return `data:text/html;base64,${buf}`;\n}\n\nexport async function getUserplugins() {\n const folderContents = await readdir(join(vencordPath, \"..\", \"src\", \"userplugins\"), {\n withFileTypes: true\n });\n const plugins = await Promise.allSettled(\n folderContents\n .filter(item => item.isDirectory())\n .map(item => ({\n path: join(item.parentPath, item.name),\n directory: item.name\n }))\n .map(({ path, directory }) => getPluginMeta(path, { directory }))\n );\n\n return plugins\n .filter(p => p.status === \"fulfilled\")\n .map(p => p.value);\n}\n\nexport async function updatePlugin(_, directory: string) {\n return new Promise((resolve, reject) => {\n const pluginDir = join(vencordPath, \"../src/userplugins\", directory);\n\n async function doStuff() {\n const pluginMeta = await getPluginMeta(pluginDir);\n\n const win = new BrowserWindow({\n maximizable: false,\n minimizable: false,\n width: 560,\n height: 600,\n resizable: false,\n webPreferences: {\n devTools: true\n },\n title: \"Review userplugin\",\n modal: true,\n parent: BrowserWindow.getAllWindows()[0],\n show: false,\n autoHideMenuBar: true\n });\n const reView /* haha got it */ = new WebContentsView({\n webPreferences: {\n devTools: true,\n nodeIntegration: true\n }\n });\n win.contentView.addChildView(reView);\n\n const commitProc = exec(\"git log origin/HEAD...HEAD --oneline --pretty=format:%an////////%h////////%H////////%s\", {\n cwd: pluginDir\n });\n let rawOutput = \"\";\n commitProc.stdout?.on(\"data\", d => {\n rawOutput += String(d);\n });\n commitProc.once(\"close\", () => {\n win.loadURL(generateUpdatePluginContent({\n name: pluginMeta.name,\n description: pluginMeta.description,\n remote: pluginMeta.remote,\n commit: rawOutput.split(\"\\n\").map(line => line.split(\"////////\")).map(([user, shortCommit, longCommit, message]) => `${user} (${shortCommit}) ~ ${message}`).join(\"\\n\")\n }));\n win.on(\"page-title-updated\", async e => {\n if (win.webContents.getTitle().startsWith(\"openLink:\")) {\n await shell.openExternal(win.webContents.getTitle().replace(\"openLink:\", \"\"));\n }\n switch (win.webContents.getTitle() as \"abortInstall\" | \"install\") {\n case \"abortInstall\": {\n win.close();\n return reject(\"Rejected by user\");\n }\n case \"install\": {\n win.close();\n try {\n const otherProc = exec(\"git rebase origin/HEAD\", {\n cwd: pluginDir\n });\n let errored = \"\";\n otherProc.stderr?.on(\"data\", d => { if (String(d).includes(\"Success\")) return; errored += String(d); });\n otherProc.once(\"close\", () => {\n if (errored) if (!errored.includes(\"Success\")) return reject(`Failed to apply the update, chances are you have local changes that conflict with your remote. Git errors:\\n\\n${errored}`);\n build().then(() => resolve(JSON.stringify({\n name: pluginMeta.name,\n native: pluginMeta.usesNative\n })));\n });\n }\n catch (e) {\n reject((e as Error).toString());\n }\n break;\n }\n }\n });\n });\n win.show();\n }\n doStuff();\n });\n}\n\nexport async function openGitPathModal(_: any) {\n const gitPathSet: string | undefined = NativeSettings.store.plugins.UserpluginInstaller?.gitPath;\n const win = new BrowserWindow({\n maximizable: false,\n minimizable: false,\n width: 560,\n height: 400,\n resizable: false,\n webPreferences: {\n devTools: true\n },\n title: \"Set Git path\",\n modal: true,\n parent: BrowserWindow.getAllWindows()[0],\n show: false,\n autoHideMenuBar: true\n });\n const reView = new WebContentsView({\n webPreferences: {\n devTools: true,\n nodeIntegration: true\n }\n });\n win.contentView.addChildView(reView);\n win.loadURL(`data:text/html;base64,${Buffer.from(setGitPathContent).toString(\"base64\")}`);\n win.on(\"page-title-updated\", async _ => {\n const t = win.webContents.getTitle();\n if (t === \"abort\") win.close();\n if (t.startsWith(\"ok\")) {\n if (!NativeSettings.store.plugins.UserpluginInstaller) {\n NativeSettings.store.plugins.UserpluginInstaller = {\n gitPath: undefined\n };\n }\n if (t === \"ok-\") {\n NativeSettings.store.plugins.UserpluginInstaller.gitPath = undefined;\n } else {\n const gitPath2 = t.split(\"-\").toSpliced(0, 1).join(\"-\");\n NativeSettings.store.plugins.UserpluginInstaller.gitPath = gitPath2;\n }\n win.close();\n }\n if (t.startsWith(\"check\")) {\n try {\n const gitProc = spawn(t === \"check-\" ? \"git\" : t.split(\"-\").toSpliced(0, 1).join(\"-\"), [\"--version\"]);\n let rawOutput = \"\";\n gitProc.stdout?.on(\"data\", d => {\n rawOutput += String(d);\n });\n gitProc.on(\"error\", e => {\n dialog.showMessageBox({\n title: \"Error\",\n message: \"Git error\",\n type: \"error\",\n detail: `${e}\\n\\nDouble-check the path you entered.`,\n buttons: [\"OK\"]\n });\n });\n gitProc.once(\"close\", () => {\n if (gitProc.exitCode === 0) {\n dialog.showMessageBox({\n title: \"Success\",\n message: \"Git works!\",\n type: \"info\",\n detail: `Successfully called ${rawOutput.trim()}`,\n buttons: [\"OK\"]\n });\n }\n });\n } catch (e) {\n dialog.showMessageBox({\n title: \"Error\",\n message: \"Git error\",\n type: \"error\",\n detail: `${e}\\n\\nDouble-check the path you entered.`,\n buttons: [\"OK\"]\n });\n }\n }\n });\n win.show();\n if (gitPathSet) {\n win.webContents.executeJavaScript(`document.querySelector(\"input\").value = ${JSON.stringify(gitPathSet)};`);\n }\n\n console.log(yaml.load(`\n name: test\n items:\n - a\n - b\n `));\n}\n", "\n\n \n \n \n Review userplugin\n \n \n \n %WARNINGHIDER% %NATIVETSHIDER% %PRESENDHIDER%\n \n \n \n

Plugin info

\n
\n

%PLUGINNAME%

\n

%PLUGINDESC%

\n
\n\n

Warnings

\n \n

Uses a native.ts file

\n

\n Use of this file allows the plugin to escape the browser sandbox\n and potentially do anything to your system and data.\n ONLY INSTALL THIS PLUGIN AFTER REVIEWING THE CODE AND BEING\n 100% SURE THAT NOTHING BAD CAN BE DONE!\n

\n
\n Acknowledge warning (required to allow\n install)\n \n \n

Has pre-send listeners

\n

\n This allows the plugin to edit your messages before they are\n sent.\n

\n \n

\n Reminder: installing a userplugin can be a destructive action. Make\n sure that you know and trust the developer before installing any.\n

\n
\n \n \n
\n \n\n", "\n\n\n\n \n \n Git Path\n \n \n\n\n\n

Git path

\n

\n If you're having issues downloading userplugins because Git isn't properly detected, you can manually set a Git\n path\n that'll be used instead of\n simply looking in PATH.\n
\n If you do not specify anything, Git will be called from the PATH variable. Do not set this setting unless you\n have issues.\n
\n
\n On Linux, Flatpak still isn't supported.\n

\n \n
\n \n \n \n
\n\n\n\n", "\n\n \n \n \n Review userplugin\n \n \n \n \n

Plugin info

\n
\n

%PLUGINNAME%

\n

%PLUGINDESC%

\n
\n

Update info

\n
\n

%COMMITMESSAGE%

\n
\n

\n You may want to review the\n source code that will be applied.\n

\n
\n\n

\n Reminder: installing a userplugin can be a destructive action. Make\n sure that you know and trust the developer before installing any.\n

\n
\n \n \n
\n \n\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { IpcMainInvokeEvent } from \"electron\";\n\n// we love CORS\nexport async function fetchAudio(_: IpcMainInvokeEvent, url: string): Promise {\n if (!url.startsWith(\"https://cdn.discordapp.com\")) throw new Error(\"Unknown URL\");\n const res = await fetch(url);\n if (!res.ok) throw new Error(`Failed to fetch ${url}: ${res.statusText}`);\n if (!res.headers.get(\"Content-Type\")?.startsWith(\"audio/\")) throw new Error(`${url} is not an audio file`);\n return new Uint8Array(await res.arrayBuffer());\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { dialog, IpcMainInvokeEvent } from \"electron\";\n\nconst DISCORD_ATTACHMENT_BASE_URL = \"https://cdn.discordapp.com/attachments/\";\nconst MAX_ZIP_BYTES = 50 * 1024 * 1024;\n\nexport async function fetchDiscordAttachment(\n _: IpcMainInvokeEvent,\n pathAndQuery: string\n): Promise<{ success: boolean; data?: ArrayBuffer; error?: string; }> {\n try {\n const attachmentUrl = getDiscordAttachmentUrl(pathAndQuery);\n if (!attachmentUrl) return { success: false, error: \"Invalid Discord attachment path\" };\n\n const previewDialog = await dialog.showMessageBox({\n title: \"Preview ZIP attachment\",\n message: \"Discord is about to fetch this ZIP attachment for preview.\",\n type: \"question\",\n detail: `Attachment: ${getAttachmentFileName(pathAndQuery)}\\n\\nIf you did not request this intentionally, choose Cancel.`,\n buttons: [\"Cancel\", \"Preview ZIP\"]\n });\n if (previewDialog.response !== 1) return { success: false, error: \"ZIP preview was cancelled.\" };\n\n const response = await fetch(attachmentUrl);\n if (!response.ok) return { success: false, error: `Fetch failed: ${response.status} ${response.statusText}` };\n\n return {\n success: true,\n data: await readLimitedResponse(response)\n };\n } catch (error) {\n return { success: false, error: error instanceof Error ? error.message : \"Unknown error\" };\n }\n}\n\nasync function readLimitedResponse(response: Response): Promise {\n const contentLength = Number(response.headers.get(\"content-length\"));\n if (Number.isFinite(contentLength) && contentLength > MAX_ZIP_BYTES) {\n throw new Error(\"ZIP is too large to preview.\");\n }\n\n if (!response.body) {\n const buffer = await response.arrayBuffer();\n if (buffer.byteLength > MAX_ZIP_BYTES) throw new Error(\"ZIP is too large to preview.\");\n return buffer;\n }\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n if (!value) continue;\n\n totalBytes += value.byteLength;\n if (totalBytes > MAX_ZIP_BYTES) {\n await reader.cancel();\n throw new Error(\"ZIP is too large to preview.\");\n }\n\n chunks.push(value);\n }\n\n const result = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n return result.buffer;\n}\n\nfunction getAttachmentFileName(pathAndQuery: string): string {\n const path = pathAndQuery.split(\"?\", 1)[0];\n const fileName = path.split(\"/\").at(-1);\n return fileName ? decodeURIComponent(fileName) : \"Unknown attachment\";\n}\n\nfunction getDiscordAttachmentUrl(pathAndQuery: string): URL | null {\n if (!isValidDiscordAttachmentPathAndQuery(pathAndQuery)) return null;\n\n const url = new URL(pathAndQuery, DISCORD_ATTACHMENT_BASE_URL);\n return url.origin === \"https://cdn.discordapp.com\" && url.pathname.startsWith(\"/attachments/\")\n ? url\n : null;\n}\n\nfunction isValidDiscordAttachmentPathAndQuery(pathAndQuery: string): boolean {\n if (\n pathAndQuery.includes(\"\\\\\")\n || pathAndQuery.includes(\"..\")\n || pathAndQuery.includes(\"://\")\n || pathAndQuery.startsWith(\"/\")\n || pathAndQuery.startsWith(\"//\")\n ) {\n return false;\n }\n\n const path = pathAndQuery.split(\"?\", 1)[0];\n const parts = path.split(\"/\");\n\n return parts.length >= 3\n && /^\\d+$/.test(parts[0])\n && /^\\d+$/.test(parts[1])\n && parts.slice(2).every(part => part.length > 0);\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n/**\n * Returns a new function that will call the wrapped function\n * after the specified delay. If the function is called again\n * within the delay, the timer will be reset.\n * @param func The function to wrap\n * @param delay The delay in milliseconds\n */\nexport function debounce(func: T, delay = 300): T {\n let timeout: NodeJS.Timeout;\n return function (...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => { func(...args); }, delay);\n } as any;\n}\n", "export default \"PCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48dGl0bGU+RXF1aWNvcmQgUXVpY2tDU1MgRWRpdG9yPC90aXRsZT48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbW9uYWNvLWVkaXRvckAwLjUwLjAvbWluL3ZzL2VkaXRvci9lZGl0b3IubWFpbi5jc3MiIGludGVncml0eT0ic2hhMjU2LXRpSlBRMk8wNHovcFovQXdkeUlnaHJPTXpld2YrUEl2RWwxWUtiUXZzWms9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiPjxzdHlsZT4jY29udGFpbmVyLGJvZHksaHRtbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttYXJnaW46MDtwYWRkaW5nOjA7b3ZlcmZsb3c6aGlkZGVufTwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+PHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbW9uYWNvLWVkaXRvckAwLjUwLjAvbWluL3ZzL2xvYWRlci5qcyIgaW50ZWdyaXR5PSJzaGEyNTYtS2NVNDhUR3I4NHI3dW5GN0o1SWdCbzk1YWVWckVickdlMDRTN1RjRlVqcz0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciI+PC9zY3JpcHQ+PHNjcmlwdD5yZXF1aXJlLmNvbmZpZyh7cGF0aHM6e3ZzOiJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21vbmFjby1lZGl0b3JAMC41MC4wL21pbi92cyJ9fSkscmVxdWlyZShbInZzL2VkaXRvci9lZGl0b3IubWFpbiJdLCgoKT0+e2dldEN1cnJlbnRDc3MoKS50aGVuKChlPT57dmFyIHQ9bW9uYWNvLmVkaXRvci5jcmVhdGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLHt2YWx1ZTplLGxhbmd1YWdlOiJjc3MiLHRoZW1lOmdldFRoZW1lKCl9KTt0Lm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KCgoKT0+c2V0Q3NzKHQuZ2V0VmFsdWUoKSkpKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKCk9Pnt0LmxheW91dCgpfSkpfSkpfSkpPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4=\"", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { NativeSettings } from \"@main/settings\";\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport { dialog, ipcMain, IpcMainInvokeEvent } from \"electron\";\n\nimport { CspPolicies, ImageAndCssSrc } from \".\";\n\nexport type CspRequestResult = \"invalid\" | \"cancelled\" | \"unchecked\" | \"ok\" | \"conflict\";\n\nexport function registerCspIpcHandlers() {\n ipcMain.handle(IpcEvents.CSP_REMOVE_OVERRIDE, removeCspRule);\n ipcMain.handle(IpcEvents.CSP_REQUEST_ADD_OVERRIDE, addCspRule);\n ipcMain.handle(IpcEvents.CSP_IS_DOMAIN_ALLOWED, isDomainAllowed);\n}\n\nfunction validate(url: string, directives: string[]) {\n try {\n const { host } = new URL(url);\n\n if (/[;'\"\\\\]/.test(host)) return false;\n } catch {\n return false;\n }\n\n if (directives.length === 0) return false;\n if (directives.some(d => !ImageAndCssSrc.includes(d))) return false;\n\n return true;\n}\n\nfunction getMessage(url: string, directives: string[], callerName: string) {\n const domain = new URL(url).host;\n\n const message = `${callerName} wants to allow connections to ${domain}`;\n\n let detail =\n `Unless you recognise and fully trust ${domain}, you should cancel this request!\\n\\n` +\n `You will have to fully close and restart ${IS_DISCORD_DESKTOP ? \"Discord\" : \"Vesktop\"} for the changes to take effect.`;\n\n if (directives.length === 1 && directives[0] === \"connect-src\") {\n return { message, detail };\n }\n\n const contentTypes = directives\n .filter(type => type !== \"connect-src\")\n .map(type => {\n switch (type) {\n case \"img-src\":\n return \"Images\";\n case \"style-src\":\n return \"CSS & Themes\";\n case \"font-src\":\n return \"Fonts\";\n default:\n throw new Error(`Illegal CSP directive: ${type}`);\n }\n })\n .sort()\n .join(\", \");\n\n detail = `The following types of content will be allowed to load from ${domain}:\\n${contentTypes}\\n\\n${detail}`;\n\n return { message, detail };\n}\n\nasync function addCspRule(_: IpcMainInvokeEvent, url: string, directives: string[], callerName: string): Promise {\n if (!validate(url, directives)) {\n return \"invalid\";\n }\n\n const domain = new URL(url).host;\n\n if (domain in NativeSettings.store.customCspRules) {\n return \"conflict\";\n }\n\n const { checkboxChecked, response } = await dialog.showMessageBox({\n ...getMessage(url, directives, callerName),\n type: callerName ? \"info\" : \"warning\",\n title: \"Equicord Host Permissions\",\n buttons: [\"Cancel\", \"Allow\"],\n defaultId: 0,\n cancelId: 0,\n checkboxLabel: `I fully trust ${domain} and understand the risks of allowing connections to it.`,\n checkboxChecked: false,\n });\n\n if (response !== 1) {\n return \"cancelled\";\n }\n\n if (!checkboxChecked) {\n return \"unchecked\";\n }\n\n NativeSettings.store.customCspRules[domain] = directives;\n return \"ok\";\n}\n\nfunction removeCspRule(_: IpcMainInvokeEvent, domain: string) {\n if (domain in NativeSettings.store.customCspRules) {\n delete NativeSettings.store.customCspRules[domain];\n return true;\n }\n\n return false;\n}\n\nfunction isDomainAllowed(_: IpcMainInvokeEvent, url: string, directives: string[]) {\n try {\n const domain = new URL(url).host;\n\n const ruleForDomain = CspPolicies[domain] ?? NativeSettings.store.customCspRules[domain];\n if (!ruleForDomain) return false;\n\n return directives.every(d => ruleForDomain.includes(d));\n } catch (e) {\n return false;\n }\n}\n", "/* eslint-disable simple-header/header */\n\n/*!\n * BetterDiscord addon meta parser\n * Copyright 2023 BetterDiscord contributors\n * Copyright 2023 Vendicated and Vencord contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst splitRegex = /[^\\S\\r\\n]*?\\r?(?:\\r\\n|\\n)[^\\S\\r\\n]*?\\*[^\\S\\r\\n]?/;\nconst escapedAtRegex = /^\\\\@/;\n\nexport interface UserThemeHeader {\n fileName: string;\n name: string;\n author: string;\n description: string;\n version?: string;\n license?: string;\n source?: string;\n website?: string;\n invite?: string;\n content?: string;\n customName?: string;\n}\n\nfunction makeHeader(fileName: string, opts: Partial = {}): UserThemeHeader {\n return {\n fileName,\n name: opts.name ?? fileName.replace(/\\.css$/i, \"\"),\n author: opts.author ?? \"Unknown Author\",\n description: opts.description ?? \"A Discord Theme.\",\n version: opts.version,\n license: opts.license,\n source: opts.source,\n website: opts.website,\n invite: opts.invite\n };\n}\n\nexport function stripBOM(fileContent: string) {\n if (fileContent.charCodeAt(0) === 0xFEFF) {\n fileContent = fileContent.slice(1);\n }\n return fileContent;\n}\n\nexport function getThemeInfo(css: string, fileName: string): UserThemeHeader {\n if (!css) return makeHeader(fileName);\n\n const block = css.split(\"/**\", 2)?.[1]?.split(\"*/\", 1)?.[0];\n if (!block) return makeHeader(fileName);\n\n const header: Partial = {};\n let field = \"\";\n let accum = \"\";\n for (const line of block.split(splitRegex)) {\n if (line.length === 0) continue;\n if (line.charAt(0) === \"@\" && line.charAt(1) !== \" \") {\n header[field] = accum.trim();\n const l = line.indexOf(\" \");\n field = line.substring(1, l);\n accum = line.substring(l + 1);\n }\n else {\n accum += \" \" + line.replace(\"\\\\n\", \"\\n\").replace(escapedAtRegex, \"@\");\n }\n }\n header[field] = accum.trim();\n delete header[\"\"];\n return makeHeader(fileName, header);\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { type BrowserWindow, shell } from \"electron\";\n\nexport function makeLinksOpenExternally(win: BrowserWindow) {\n win.webContents.setWindowOpenHandler(({ url }) => {\n switch (url) {\n case \"about:blank\":\n case \"https://discord.com/popout\":\n case \"https://ptb.discord.com/popout\":\n case \"https://canary.discord.com/popout\":\n return { action: \"allow\" };\n }\n\n try {\n var { protocol } = new URL(url);\n } catch {\n return { action: \"deny\" };\n }\n\n switch (protocol) {\n case \"http:\":\n case \"https:\":\n case \"mailto:\":\n case \"steam:\":\n case \"spotify:\":\n shell.openExternal(url);\n }\n\n return { action: \"deny\" };\n });\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { session } from \"electron\";\nimport { unzip } from \"fflate\";\nimport { constants as fsConstants } from \"fs\";\nimport { access, mkdir, rm, writeFile } from \"fs/promises\";\nimport { join } from \"path\";\n\nimport { DATA_DIR } from \"./constants\";\nimport { crxToZip } from \"./crxToZip\";\nimport { ensureSafePath } from \"./ensureSafePath\";\nimport { fetchBuffer } from \"./http\";\n\nconst extensionCacheDir = join(DATA_DIR, \"ExtensionCache\");\n\nasync function extract(data: Buffer, outDir: string) {\n await mkdir(outDir, { recursive: true });\n return new Promise((resolve, reject) => {\n unzip(data, (err, files) => {\n if (err) return void reject(err);\n\n Promise.all(Object.keys(files).map(async f => {\n // Signature stuff\n // 'Cannot load extension with file or directory name\n // _metadata. Filenames starting with \"_\" are reserved for use by the system.';\n if (f.startsWith(\"_metadata/\")) return;\n\n if (f.includes(\"\\0\")) throw new Error(`Invalid filename: \"${f}\"`);\n\n if (f.endsWith(\"/\")) {\n const dir = ensureSafePath(outDir, f);\n if (!dir) throw new Error(`Path traversal detected: \"${f}\"`);\n return void await mkdir(dir, { recursive: true });\n }\n\n const pathElements = f.split(\"/\");\n const directories = pathElements.slice(0, -1).join(\"/\");\n\n const dir = ensureSafePath(outDir, directories);\n if (!dir) throw new Error(`Path traversal detected: \"${f}\"`);\n\n const filePath = ensureSafePath(outDir, f);\n if (!filePath) throw new Error(`Path traversal detected: \"${f}\"`);\n\n if (directories) {\n await mkdir(dir, { recursive: true });\n }\n\n await writeFile(filePath, files[f]);\n }))\n .then(() => resolve())\n .catch(err => {\n rm(outDir, { recursive: true, force: true });\n reject(err);\n });\n });\n });\n}\n\nexport async function installExt(id: string) {\n const extDir = join(extensionCacheDir, id);\n\n try {\n await access(extDir, fsConstants.F_OK);\n } catch (err) {\n const url = `https://clients2.google.com/service/update2/crx?response=redirect&acceptformat=crx2,crx3&x=id%3D${id}%26uc&prodversion=${process.versions.chrome}`;\n\n const buf = await fetchBuffer(url, {\n headers: {\n \"User-Agent\": `Electron ${process.versions.electron} ~ Equicord (https://github.com/Equicord/Equicord)`\n }\n });\n\n await extract(crxToZip(buf), extDir)\n .catch(err => console.error(`Failed to extract extension ${id}`, err));\n }\n\n if (session.defaultSession.extensions) {\n session.defaultSession.extensions.loadExtension(extDir);\n } else {\n session.defaultSession.loadExtension(extDir);\n }\n}\n", "import { createRequire } from 'module';\nvar require = createRequire('/');\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar _a;\n// Mediocre shim\nvar Worker;\nvar isMarkedAsUntransferable;\nvar workerAdd = \";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global\";\ntry {\n (_a = require('worker_threads'), Worker = _a.Worker, isMarkedAsUntransferable = _a.isMarkedAsUntransferable);\n}\ncatch (e) {\n}\nvar wk = Worker ? function (c, _, msg, transfer, cb) {\n var done = false;\n var w = new Worker(c + workerAdd, { eval: true })\n .on('error', function (e) { return cb(e, null); })\n .on('message', function (m) { return cb(null, m); })\n .on('exit', function (c) {\n if (c && !done)\n cb(new Error('exited with code ' + c), null);\n });\n if (isMarkedAsUntransferable)\n transfer = transfer.filter(function (t) { return !isMarkedAsUntransferable(t); });\n w.postMessage(msg, transfer);\n w.terminate = function () {\n done = true;\n return Worker.prototype.terminate.call(w);\n };\n return w;\n} : function (_, __, ___, ____, cb) {\n setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });\n var NOP = function () { };\n return {\n terminate: NOP,\n postMessage: NOP\n };\n};\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n , // determined by compression function\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data[0]) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush(ev.data[1]);\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n // can fail for cross-realm Uint8Array, but ok - only a small performance penalty\n w.postMessage([d, t = f], d.buffer instanceof ArrayBuffer ? [d.buffer] : []);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function (sync) { w.postMessage([0, sync]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read 8 bytes\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n if (final) {\n // cleanup unneeded buffers/state to reduce memory usage\n this.s = this.o = {};\n this.b = et;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible. A separate DEFLATE stream may be concatenated\n * with the current output after a sync flush.\n */\n Deflate.prototype.flush = function (sync) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n // could technically skip writing the type-0 block for (this.s.r & 7) == 0,\n // but the deterministic trailer (00 00 FF FF) is useful in some situations\n if (sync) {\n var c = new u8(6);\n c[0] = this.s.r >> 3;\n // write empty, non-final type-0 block\n var ep = wfblk(c, this.s.r, et);\n this.s.r = 0;\n this.ondata(c.subarray(0, ep >> 3), false);\n }\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible.\n */\n Gzip.prototype.flush = function (sync) {\n Deflate.prototype.flush.call(this, sync);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, 0);\n // process concatenated GZIP\n if (this.s.f && !this.s.l) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n else if (final) {\n Inflate.prototype.c.call(this, final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible.\n */\n Zlib.prototype.flush = function (sync) {\n Deflate.prototype.flush.call(this, sync);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (ArrayBuffer.isView(val))\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), efl = b2(d, b + 30), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n var _a = z64hs(d, es, efl, z, b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)), sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + efl + b2(d, b + 32), off];\n};\n// read zip64 header sizes\nvar z64hs = function (d, b, l, z, sc, su, off) {\n var nsc = sc == 4294967295, nsu = su == 4294967295, noff = off == 4294967295, e = b + l;\n var nf = nsc + nsu + noff;\n if (z && nf) {\n for (; b + 4 < e; b += 4 + b2(d, b + 2)) {\n if (b2(d, b) == 1) {\n return [\n nsc ? b8(d, b + 4 + 8 * nsu) : sc,\n nsu ? b8(d, b + 4) : su,\n noff ? b8(d, b + 4 + 8 * (nsu + nsc)) : off,\n 1\n ];\n }\n }\n // z == 2 for unknown whether or not zip64\n if (z < 2)\n err(13);\n }\n return [sc, su, off, 0];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n // we shouldn't really do this cast, but properly handling ArrayBufferLike\n // makes the API unergonomic with Buffer\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (chunk, final) {\n // same as ZipPassThrough: cast to retain Buffer ergonomics\n this.ondata(null, chunk, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (chunk, final) {\n try {\n this.i.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (chunk, final) {\n if (this.i.terminate)\n chunk = slc(chunk, 0);\n this.i.push(chunk, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var lsc = b4(buf, i + 18), lsu = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n var _a = z64hs(buf, i, es, 2, lsc, lsu, 0), sc_1 = _a[0], su_1 = _a[1], z64 = _a[3];\n if (dd)\n sc_1 = -1 - z64;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = b4(data, e - 20) == 0x7064B50;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = b4(data, e - 20) == 0x7064B50;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n", "/* eslint-disable simple-header/header */\n\n/*!\n * crxToZip\n * Copyright (c) 2013 Rob Wu \n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n */\n\nexport function crxToZip(buf: Buffer) {\n function calcLength(a: number, b: number, c: number, d: number) {\n let length = 0;\n\n length += a << 0;\n length += b << 8;\n length += c << 16;\n length += d << 24 >>> 0;\n return length;\n }\n\n // 50 4b 03 04\n // This is actually a zip file\n if (buf[0] === 80 && buf[1] === 75 && buf[2] === 3 && buf[3] === 4) {\n return buf;\n }\n\n // 43 72 32 34 (Cr24)\n if (buf[0] !== 67 || buf[1] !== 114 || buf[2] !== 50 || buf[3] !== 52) {\n throw new Error(\"Invalid header: Does not start with Cr24\");\n }\n\n // 02 00 00 00\n // or\n // 03 00 00 00\n const isV3 = buf[4] === 3;\n const isV2 = buf[4] === 2;\n\n if ((!isV2 && !isV3) || buf[5] || buf[6] || buf[7]) {\n throw new Error(\"Unexpected crx format version number.\");\n }\n\n if (isV2) {\n const publicKeyLength = calcLength(buf[8], buf[9], buf[10], buf[11]);\n const signatureLength = calcLength(buf[12], buf[13], buf[14], buf[15]);\n\n // 16 = Magic number (4), CRX format version (4), lengths (2x4)\n const zipStartOffset = 16 + publicKeyLength + signatureLength;\n\n return buf.subarray(zipStartOffset, buf.length);\n }\n // v3 format has header size and then header\n const headerSize = calcLength(buf[8], buf[9], buf[10], buf[11]);\n const zipStartOffset = 12 + headerSize;\n\n return buf.subarray(zipStartOffset, buf.length);\n}\n"], "mappings": ";;;;iwBAAA,IAAAA,EAAAC,EAAA,oBCAA,IAAAC,GAAAC,EAAA,kBAAAC,MCAA,IAAOC,GAAPC,GAAAC,EAAA,KAAAC,IAAOH,GAAQ,sBCoBR,SAASI,GAAgBC,EAA+B,CAC3D,OAAO,gBAAkB,CACrB,GAAI,CACA,MAAO,CACH,GAAI,GACJ,MAAO,MAAMA,EAAK,GAAG,SAAS,CAClC,CACJ,OAAS,EAAQ,CACb,MAAO,CACH,GAAI,GACJ,MAAO,aAAa,MAAQ,CAExB,GAAG,EACH,QAAS,EAAE,QACX,KAAM,EAAE,KACR,MAAO,EAAE,KACb,EAAI,CACR,CACJ,CACJ,CACJ,CAxCA,IAkBaC,GAlBbC,GAAAC,EAAA,kBAAAC,IAkBaH,GAAwE,iBCMrF,eAAsBI,GAAaC,EAAUC,EAAuB,CAChE,GAAI,CACA,IAAIC,EAAM,MAAM,MAAMF,EAAKC,CAAO,CACtC,OAASE,EAAK,CACV,MAAIA,aAAe,OAASA,EAAI,QAC5BA,EAAMA,EAAI,OAGR,IAAI,MAAM,GAAGF,GAAS,QAAU,KAAK,IAAID,CAAG,YAAYG,CAAG,EAAE,CACvE,CAEA,GAAID,EAAI,GACJ,OAAOA,EAGX,IAAIE,EAAU,GAAGH,GAAS,QAAU,KAAK,IAAID,CAAG,KAAKE,EAAI,MAAM,IAAIA,EAAI,UAAU,GACjF,GAAI,CACA,IAAMG,EAAS,MAAMH,EAAI,KAAK,EAC9BE,GAAW;AAAA,EAAKC,CAAM,EAC1B,MAAQ,CAAE,CAEV,MAAM,IAAI,MAAMD,CAAO,CAC3B,CAEA,eAAsBE,GAAmBN,EAAUC,EAAuB,CAEtE,OADY,MAAMF,GAAaC,EAAKC,CAAO,GAChC,KAAK,CACpB,CAEA,eAAsBM,GAAYP,EAAUC,EAAuB,CAE/D,IAAMO,EAAM,MADA,MAAMT,GAAaC,EAAKC,CAAO,GACrB,YAAY,EAElC,OAAO,OAAO,KAAKO,CAAG,CAC1B,CA1DA,IAkBAC,GAlBAC,GAAAC,EAAA,kBAAAC,IAkBAH,GAAkC,yBClBlC,IAAOI,GAAPC,GAAAC,EAAA,KAAAC,IAAOH,GAAQ,6CCAf,IAWaI,GACAC,GACAC,GAbbC,GAAAC,EAAA,kBAAAC,IAMAC,KACAC,KAIaP,GAAeQ,GAAQ,MAAM,EAAG,CAAC,EACjCP,GAAqB,YAAYO,EAAO,GAAGC,GAAY,wBAAwBA,EAAS,IAAM,EAAE,GAChGP,GAA8B,WAAWO,GAAY,wBAAwBA,EAAS,IAAM,EAAE,KCb3G,IAAAC,GAAA,GAgCA,eAAeC,GAAmBC,EAAkB,CAChD,OAAOC,GAAaC,GAAWF,EAAU,CACrC,QAAS,CACL,OAAQ,8BAGR,aAAcG,EAClB,CACJ,CAAC,CACL,CAEA,eAAeC,IAAsB,CAEjC,OADmB,MAAMC,GAAa,GAGzB,MAAMN,GAAU,YAAYO,EAAO,SAAS,GAE7C,QAAQ,IAAKC,IAAY,CACjC,KAAMA,EAAE,IACR,OAAQA,EAAE,QAAQ,OAASA,EAAE,QAAQ,QAAQ,MAAQ,iBACrD,QAASA,EAAE,OAAO,QAAQ,MAAM;AAAA,CAAI,EAAE,CAAC,CAC3C,EAAE,EARsB,CAAC,CAS7B,CAEA,eAAeF,IAAe,CAC1B,IAAMG,EAAO,MAAMT,GAAU,kBAAkB,EAG/C,OADaS,EAAK,KAAK,MAAMA,EAAK,KAAK,YAAY,GAAG,EAAI,CAAC,IAC9CF,GACF,IAGXG,GADcD,EAAK,OAAO,KAAKE,GAAKA,EAAE,OAASC,EAAS,EAClC,qBAEf,GACX,CAEA,eAAeC,IAAe,CAC1B,GAAI,CAACH,GAAe,MAAO,GAE3B,IAAMD,EAAO,MAAMK,GAAYJ,EAAa,EAC5C,2BAAc,UAAWD,EAAM,CAAE,MAAO,EAAK,CAAC,EAE9CC,GAAgB,KAET,EACX,CA9EA,IAqBAK,GACAC,GAOMb,GACFO,GA9BJO,GAAAC,EAAA,kBAAAC,IAkBAF,KACAG,KACAC,KACAN,GAAwB,oBACxBC,GAA8B,uBAE9BM,KACAC,KAEAC,KAEMrB,GAAW,gCAAgCsB,EAAS,GACtDf,GAA+B,KAkDnC,WAAQ,wBAA2BgB,GAAgB,IAAM,sBAAsBD,EAAS,EAAE,CAAC,EAC3F,WAAQ,2BAA8BC,GAAgBrB,EAAmB,CAAC,EAC1E,WAAQ,uBAAyBqB,GAAgBpB,EAAY,CAAC,EAC9D,WAAQ,sBAAwBoB,GAAgBb,EAAY,CAAC,ICnF7D,IAQac,GACAC,GAsCAC,GA/CbC,GAAAC,EAAA,kBAAAC,IAQaL,GAAe,OAAO,uBAAuB,EAC7CC,GAAqB,OAAO,4BAA4B,EAsCxDC,GAAN,KAAsC,CACjC,cAAgB,IAAI,IACpB,gBAAkB,IAAI,IACtB,gBAAkB,IAAI,IACb,cAAgB,IAAI,QAEpB,cAAmC,IAAM,CACtD,IAAMI,EAAO,KAEb,MAAO,CACH,IAAIC,EAAQC,EAAUC,EAAU,CAC5B,GAAID,IAAQR,GACR,MAAO,GAGX,GAAIQ,IAAQP,GACR,OAAOM,EAGX,IAAIG,EAAI,QAAQ,IAAIH,EAAQC,EAAKC,CAAQ,EAEnCE,EAAeL,EAAK,cAAc,IAAIC,CAAM,EAClD,GAAII,GAAgB,KAChB,OAAOD,EAGX,GAAM,CAAE,KAAAE,EAAM,KAAAC,CAAK,EAAIF,EAWvB,GATI,EAAEH,KAAOD,IAAWD,EAAK,iBAAmB,OAC5CI,EAAIJ,EAAK,gBAAgB,CACrB,OAAAC,EACA,IAAAC,EACA,KAAAI,EACA,KAAAC,CACJ,CAAC,GAGD,OAAOH,GAAM,UAAYA,IAAM,MAAQ,CAACA,EAAEV,EAAY,EAAG,CACzD,IAAMc,EAAU,GAAGD,CAAI,GAAGA,GAAQ,GAAG,GAAGL,CAAG,GAC3C,OAAOF,EAAK,UAAUI,EAAGE,EAAME,CAAO,CAC1C,CAEA,OAAOJ,CACX,EACA,IAAIH,EAAQC,EAAaO,EAAO,CAK5B,GAJIA,IAAQf,EAAY,IACpBe,EAAQA,EAAMd,EAAkB,GAGhCM,EAAOC,CAAG,IAAMO,EAChB,MAAO,GAGX,GAAI,CAAC,QAAQ,IAAIR,EAAQC,EAAKO,CAAK,EAC/B,MAAO,GAGX,IAAMJ,EAAeL,EAAK,cAAc,IAAIC,CAAM,EAClD,GAAII,GAAgB,KAChB,MAAO,GAGX,GAAM,CAAE,KAAAC,EAAM,KAAAC,CAAK,EAAIF,EAEjBK,EAAU,GAAGH,CAAI,GAAGA,GAAQ,GAAG,GAAGL,CAAG,GAC3C,OAAAF,EAAK,gBAAgBU,EAASD,EAAOH,CAAI,EAElC,EACX,EACA,eAAeL,EAAQC,EAAa,CAChC,GAAI,CAAC,QAAQ,eAAeD,EAAQC,CAAG,EACnC,MAAO,GAGX,IAAMG,EAAeL,EAAK,cAAc,IAAIC,CAAM,EAClD,GAAII,GAAgB,KAChB,MAAO,GAGX,GAAM,CAAE,KAAAC,EAAM,KAAAC,CAAK,EAAIF,EAEjBM,EAAa,GAAGJ,CAAI,GAAGA,GAAQ,GAAG,GAAGL,CAAG,GAC9C,OAAAF,EAAK,gBAAgBW,EAAY,OAAWL,CAAI,EAEzC,EACX,CACJ,CACJ,GAAG,EAWI,YAAYM,EAAUC,EAAgC,CAAC,EAAG,CAC7D,KAAK,MAAQD,EACb,KAAK,MAAQ,KAAK,UAAUA,CAAK,EACjC,OAAO,OAAO,KAAMC,CAAO,CAC/B,CAEQ,UAAUC,EAAaR,EAAUQ,EAAQP,EAAO,GAAI,CACxD,YAAK,cAAc,IAAIO,EAAQ,CAC3B,KAAAR,EACA,KAAAC,CACJ,CAAC,EAEM,IAAI,MAAMO,EAAQ,KAAK,YAAY,CAC9C,CAEQ,sBAAsBC,EAAoBC,EAAwBP,EAAY,CAClF,QAASQ,EAAI,EAAGA,GAAKD,EAAa,OAAQC,IAAK,CAC3C,IAAMC,EAASF,EAAa,MAAM,EAAGC,CAAC,EAAE,KAAK,GAAG,EAChD,KAAK,gBAAgB,IAAIC,CAAM,GAAG,QAAQC,GAAMA,EAAGV,EAAOM,CAAU,CAAC,CACzE,CACJ,CAEQ,gBAAgBK,EAAiBX,EAAYH,EAAS,CAC1D,IAAMe,EAAQD,EAAQ,MAAM,GAAG,EAO/B,GAAIC,EAAM,OAAS,GAAKA,EAAM,CAAC,IAAM,UAAW,CAC5C,IAAMC,EAAcD,EAAM,MAAM,EAAG,CAAC,EAC9BE,EAAiBD,EAAY,KAAK,GAAG,EACrCE,EAAeF,EAAY,OAAO,CAACG,EAAKC,IAASD,EAAIC,CAAI,EAAGpB,CAAI,EAEtE,KAAK,gBAAgB,QAAQa,GAAMA,EAAGb,EAAMiB,CAAc,CAAC,EAC3D,KAAK,cAAc,IAAIA,CAAc,GAAG,QAAQJ,GAAMA,EAAGK,CAAY,CAAC,CAC1E,MACI,KAAK,gBAAgB,QAAQL,GAAMA,EAAGb,EAAMc,CAAO,CAAC,EAGxD,KAAK,cAAc,IAAIA,CAAO,GAAG,QAAQD,GAAMA,EAAGV,CAAK,CAAC,EACxD,KAAK,sBAAsBW,EAASC,EAAOZ,CAAK,CACpD,CAUO,QAAQA,EAAUkB,EAAuB,CAC5C,GAAI,KAAK,SAAU,MAAM,IAAI,MAAM,4BAA4B,EAK/D,GAHA,KAAK,MAAQlB,EACb,KAAK,MAAQ,KAAK,UAAUA,CAAK,EAE7BkB,EAAc,CACd,IAAIvB,EAAIK,EAEFF,EAAOoB,EAAa,MAAM,GAAG,EACnC,QAAWC,KAAKrB,EAAM,CAClB,GAAI,CAACH,EAAG,CACJ,QAAQ,KACJ,0BAA0BuB,CAAY,qDAC1C,EACA,MACJ,CACAvB,EAAIA,EAAEwB,CAAC,CACX,CAEA,KAAK,cAAc,IAAID,CAAY,GAAG,QAAQR,GAAMA,EAAGf,CAAC,CAAC,EACzD,KAAK,sBAAsBuB,EAAcpB,EAAMH,CAAC,CACpD,CAEA,KAAK,cAAc,CACvB,CAQO,wBAAwBe,EAAuC,CAClE,KAAK,gBAAgB,IAAIA,CAAE,CAC/B,CAcO,kBACHZ,EACAY,EACF,CACE,IAAMU,EAAY,KAAK,cAAc,IAAItB,CAAc,GAAK,IAAI,IAChEsB,EAAU,IAAIV,CAAE,EAChB,KAAK,cAAc,IAAIZ,EAAgBsB,CAAS,CACpD,CAUO,wBAA0CX,EAAWC,EAAyD,CACjH,IAAMU,EAAY,KAAK,gBAAgB,IAAIX,CAAM,GAAK,IAAI,IAC1DW,EAAU,IAAIV,CAAE,EAChB,KAAK,gBAAgB,IAAID,EAAQW,CAAS,CAC9C,CAMO,2BAA2BV,EAAuC,CACrE,KAAK,gBAAgB,OAAOA,CAAE,CAClC,CAMO,qBAAqBZ,EAAqCY,EAAyB,CACtF,IAAMU,EAAY,KAAK,cAAc,IAAItB,CAAc,EAClDsB,IAELA,EAAU,OAAOV,CAAE,EACdU,EAAU,MAAM,KAAK,cAAc,OAAOtB,CAAc,EACjE,CAMO,2BAA2BW,EAAgBC,EAAuC,CACrF,IAAMU,EAAY,KAAK,gBAAgB,IAAIX,CAAM,EAC5CW,IAELA,EAAU,OAAOV,CAAE,EACdU,EAAU,MAAM,KAAK,gBAAgB,OAAOX,CAAM,EAC3D,CAKO,eAAgB,CACnB,KAAK,gBAAgB,QAAQC,GAAMA,EAAG,KAAK,MAAO,EAAE,CAAC,CACzD,CACJ,ICxSO,SAASW,GAAiBC,EAAQC,EAAgB,CACrD,QAAWC,KAAOD,EAAU,CACxB,IAAME,EAAIF,EAASC,CAAG,EAClB,OAAOC,GAAM,UAAY,CAAC,MAAM,QAAQA,CAAC,GACzCH,EAAIE,CAAG,IAAM,CAAC,EACdH,GAAcC,EAAIE,CAAG,EAAGC,CAAC,GAEzBH,EAAIE,CAAG,IAAMC,CAErB,CACA,OAAOH,CACX,CAvBA,IAAAI,GAAAC,EAAA,kBAAAC,MCAA,IAkBAC,GAEAC,GAEMC,GAEOC,GAMAC,GACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GAYAC,GAhDbC,GAAAC,EAAA,kBAAAC,IAkBAd,GAAoB,oBAEpBC,GAAqB,gBAEfC,GAA0B,GAEnBC,GAAW,QAAQ,IAAI,yBAChC,QAAQ,IAAI,yBACN,SAAK,QAAQ,IAAI,sBAAuB,KAAM,eAAgBD,EAAM,KACpE,SAAK,OAAI,QAAQ,UAAU,EAAG,KAAM,WAAYA,EAAM,GAGnDE,MAAe,SAAKD,GAAU,UAAU,EACxCE,KAAa,SAAKF,GAAU,QAAQ,EACpCG,MAAiB,SAAKF,GAAc,cAAc,EAClDG,MAAgB,SAAKH,GAAc,eAAe,EAClDI,MAAuB,SAAKJ,GAAc,sBAAsB,EAChEK,MAAe,SAAKL,GAAc,WAAW,EAC7CM,GAAoB,CAC7B,SACA,QACA,SACA,WACA,0BACA,SACA,UACA,QACA,KACJ,EAEaC,GAA6B,QAAQ,KAAK,SAAS,WAAW,IC/B3E,SAASI,GAAyBC,EAAcC,EAA0B,CACtE,GAAI,CACA,OAAO,KAAK,SAAM,iBAAaA,EAAM,OAAO,CAAC,CACjD,OAASC,EAAU,CACf,OAAIA,GAAK,OAAS,UACd,QAAQ,MAAM,kBAAkBF,CAAI,YAAaE,CAAG,EAEjD,CAAC,CACZ,CACJ,CA1BA,IAUAC,GACAC,GAiBaC,EA0BPC,GAKAC,GAGOC,EA9DbC,GAAAC,EAAA,kBAAAC,IAOAC,KACAC,KACAC,KACAX,GAAwB,oBACxBC,GAAuD,cAEvDW,QAEA,cAAUC,GAAc,CAAE,UAAW,EAAK,CAAC,EAa9BX,EAAmB,IAAIY,GAAclB,GAAuB,WAAYmB,EAAa,CAAC,EAEnGb,EAAiB,wBAAwB,IAAM,CAC3C,GAAI,IACA,kBAAca,GAAe,KAAK,UAAUb,EAAiB,MAAO,KAAM,CAAC,CAAC,CAChF,OAASc,EAAG,CACR,QAAQ,MAAM,oCAAqCA,CAAC,CACxD,CACJ,CAAC,EAED,WAAQ,+BAAmC,IAAMH,EAAY,EAC7D,WAAQ,wBAA2BG,GAAKA,EAAE,YAAcd,EAAiB,KAAK,EAE9E,WAAQ,4BAA+B,CAACe,EAAGC,EAAgBC,IAA0B,CACjFjB,EAAiB,QAAQgB,EAAMC,CAAY,CAC/C,CAAC,EAWKhB,GAAwC,CAC1C,QAAS,CAAC,EACV,eAAgB,CAAC,CACrB,EAEMC,GAAiBR,GAA6B,SAAUwB,EAAoB,EAClFC,GAAcjB,GAAgBD,EAAqB,EAEtCE,EAAiB,IAAIS,GAAcV,EAAgC,EAEhFC,EAAe,wBAAwB,IAAM,CACzC,GAAI,IACA,kBAAce,GAAsB,KAAK,UAAUf,EAAe,MAAO,KAAM,CAAC,CAAC,CACrF,OAASW,EAAG,CACR,QAAQ,MAAM,kCAAmCA,CAAC,CACtD,CACJ,CAAC,ICtED,IAAAM,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,KAAK,MAAQ,KAAY,CACvB,YAAYC,EAAaC,EAAW,CAClC,KAAK,WAAaD,EAClB,KAAK,SAAWC,CAClB,CAEF,EAEA,KAAK,UAAY,cAAwB,KAAK,KAAM,CAClD,YAAYC,EAASC,EAAYC,EAAU,CACzC,MAAMD,EAAYC,CAAQ,EAC1B,KAAK,OAASF,CAChB,CAEF,EAEA,KAAK,qBAAuB,cAAmC,KAAK,SAAU,CAC5E,YAAYG,EAAQC,EAAKC,EAAUJ,EAAYC,EAAUI,EAAY,CACnE,MAAMH,EAAQF,EAAYC,CAAQ,EAClC,KAAK,IAAME,EACX,KAAK,SAAWC,EAChB,KAAK,WAAaC,CACpB,CAEF,EAEA,KAAK,mBAAqB,cAAiC,KAAK,KAAM,CAAC,EAEvE,KAAK,iBAAmB,cAA+B,KAAK,KAAM,CAChE,YAAYL,EAAYC,EAAUK,EAAU,CAC1C,MAAMN,EAAYC,CAAQ,EAC1B,KAAK,SAAWK,CAClB,CAEF,EAEA,KAAK,eAAiB,cAA6B,KAAK,KAAM,CAAC,EAE/D,KAAK,mBAAqB,cAAiC,KAAK,KAAM,CACpE,YAAYN,EAAYC,EAAUM,EAAUC,EAASC,EAAM,CACzD,MAAMT,EAAYC,CAAQ,EAC1B,KAAK,SAAWM,EAChB,KAAK,QAAUC,EACf,KAAK,KAAOC,CACd,CAEF,EAEA,KAAK,iBAAmB,cAA+B,KAAK,KAAM,CAChE,YAAYT,EAAYC,EAAUM,EAAU,CAC1C,MAAMP,EAAYC,CAAQ,EAC1B,KAAK,SAAWM,CAClB,CAEF,EAEA,KAAK,WAAa,cAAyB,KAAK,SAAU,CAAC,EAE3D,KAAK,YAAc,cAA0B,KAAK,SAAU,CAC1D,YAAYL,EAAQC,EAAKC,EAAUM,EAAOV,EAAYC,EAAUU,EAAO,CACrE,MAAMT,EAAQF,EAAYC,CAAQ,EAClC,KAAK,IAAME,EACX,KAAK,SAAWC,EAChB,KAAK,MAAQM,EACb,KAAK,MAAQC,CACf,CAEF,EAEA,KAAK,mBAAqB,cAAiC,KAAK,oBAAqB,CAAC,EAEtF,KAAK,iBAAmB,cAA+B,KAAK,kBAAmB,CAAC,EAEhF,KAAK,kBAAoB,cAAgC,KAAK,oBAAqB,CAAC,EAEpF,KAAK,gBAAkB,cAA8B,KAAK,kBAAmB,CAAC,CAEhF,GAAG,KAAKhB,EAAI,IC9EZ,IAAAiB,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAU,CAAC,EAAE,QAEjB,KAAK,KAAO,KAAW,CACrB,YAAYC,EAAMC,EAAQC,EAAQC,EAAS,CACzC,KAAK,KAAOH,EACZ,KAAK,OAASC,EACd,KAAK,OAASC,EACd,KAAK,QAAUC,CACjB,CAEA,YAAYC,EAAS,EAAGC,EAAa,GAAI,CACvC,IAAIC,EAAaC,EAAKC,EAAMC,EAAKC,EAAMC,EAAOC,EAC9C,GAAI,KAAK,QAAU,KACjB,OAAO,KAKT,IAHAN,EAAc;AAAA,kBACdE,EAAO,GACPG,EAAQ,KAAK,QACNA,EAAQ,IAAMF,EAAM,KAAK,OAAOE,EAAQ,CAAC,EAAGZ,EAAQ,KAAKO,EAAaG,CAAG,EAAI,IAElF,GADAE,IACI,KAAK,QAAUA,EAAQN,EAAa,EAAI,EAAG,CAC7CG,EAAO,QACPG,GAAS,EACT,KACF,CAIF,IAFAC,EAAO,GACPL,EAAM,KAAK,QACJA,EAAM,KAAK,OAAO,SAAWG,EAAO,KAAK,OAAOH,CAAG,EAAGR,EAAQ,KAAKO,EAAaI,CAAI,EAAI,IAE7F,GADAH,IACIA,EAAM,KAAK,QAAUF,EAAa,EAAI,EAAG,CAC3CO,EAAO,QACPL,GAAO,EACP,KACF,CAEF,MAAO,GAAI,IAAI,MAAMH,CAAM,EAAG,KAAK,GAAG,CAAC,GAAGI,CAAI,GAAG,KAAK,OAAO,MAAMG,EAAOJ,CAAG,CAAC,GAAGK,CAAI;AAAA,EAAM,IAAI,MAAMR,EAAS,KAAK,QAAUO,EAAQH,EAAK,MAAM,EAAG,KAAK,GAAG,CAAC,GAC9J,CAEA,UAAW,CACT,IAAIK,EAASC,EAGb,OAFAD,EAAU,KAAK,YAAY,EAC3BC,EAAQ,aAAa,KAAK,KAAO,CAAC,YAAY,KAAK,OAAS,CAAC,GACzDD,EACKC,EAEA,GAAGA,CAAK;AAAA,EAAMD,CAAO,EAEhC,CAEF,EAEA,KAAK,UAAY,cAAwB,KAAM,CAC7C,YAAYE,EAAS,CACnB,MAAMA,CAAO,EAEb,OAAO,eAAe,KAAM,QAAS,CACnC,IAAK,UAAW,CACd,OAAO,KAAK,SAAS,EAAI;AAAA,EAAQ,IAAI,QAAO,MAAM,MAAM;AAAA,CAAI,EAAE,MAAM,CAAC,EAAE,KAAK;AAAA,CAAI,CAClF,CACF,CAAC,CACH,CAEA,UAAW,CACT,OAAO,KAAK,OACd,CAEF,EAEA,KAAK,gBAAkB,cAA8B,KAAK,SAAU,CAClE,YAAYC,EAASC,EAAcC,EAASC,EAAcC,EAAM,CAC9D,MAAM,EACN,KAAK,QAAUJ,EACf,KAAK,aAAeC,EACpB,KAAK,QAAUC,EACf,KAAK,aAAeC,EACpB,KAAK,KAAOC,CACd,CAEA,UAAW,CACT,IAAIC,EACJ,OAAAA,EAAQ,CAAC,EACL,KAAK,SAAW,MAClBA,EAAM,KAAK,KAAK,OAAO,EAEpB,KAAK,cAAgB,OAAW,KAAK,SAAW,MAAU,KAAK,cAAgB,MAAS,KAAK,aAAa,OAAS,KAAK,aAAa,MAAQ,KAAK,aAAa,SAAW,KAAK,aAAa,SAC/LA,EAAM,KAAK,KAAK,aAAa,SAAS,CAAC,EAErC,KAAK,SAAW,MAClBA,EAAM,KAAK,KAAK,OAAO,EAErB,KAAK,cAAgB,MACvBA,EAAM,KAAK,KAAK,aAAa,SAAS,CAAC,EAErC,KAAK,MAAQ,MACfA,EAAM,KAAK,KAAK,IAAI,EAEfA,EAAM,KAAK;AAAA,CAAI,CACxB,CAEF,CAEF,GAAG,KAAKxB,EAAI,ICvGZ,IAAAyB,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAEJA,EAAY,EAEZ,KAAK,KAAO,KAAW,CACrB,YAAYC,EAAMC,EAAQC,EAAaC,EAAW,CAChD,KAAK,IAAMH,EACX,KAAK,MAAQC,EACb,KAAK,WAAaC,EAClB,KAAK,SAAWC,EAChB,KAAK,UAAY,QAAQJ,GAAW,EACtC,CAEF,EAEA,KAAK,YAAc,UAAW,CAC5B,MAAMK,UAAmB,KAAK,IAAK,CACjC,YAAYC,EAAKC,EAAOC,EAAYC,EAAUC,EAAO,CACnD,MAAMJ,EAAKC,EAAOC,EAAYC,CAAQ,EACtC,KAAK,MAAQC,CACf,CAEF,CAEA,OAAAL,EAAW,UAAU,GAAK,SAEnBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,eAAiB,cAA6B,KAAK,IAAK,CAC3D,YAAYC,EAAKC,EAAOC,EAAYC,EAAUE,EAAY,CACxD,MAAML,EAAKC,EAAOC,EAAYC,CAAQ,EACtC,KAAK,WAAaE,CACpB,CAEF,EAEA,KAAK,cAAgB,UAAW,CAC9B,MAAMC,UAAqB,KAAK,cAAe,CAAC,CAEhD,OAAAA,EAAa,UAAU,GAAK,WAErBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,aAAe,UAAW,CAC7B,MAAMC,UAAoB,KAAK,cAAe,CAAC,CAE/C,OAAAA,EAAY,UAAU,GAAK,UAEpBA,CAET,GAAG,KAAK,IAAI,CAEd,GAAG,KAAKf,EAAI,ICzDZ,IAAAgB,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAiBC,EAAQC,EAE7BD,EAAS,KAER,CAAC,gBAAAD,CAAe,EAAI,KAErBE,EAAQ,KAKR,KAAK,cAAgB,cAA4BF,CAAgB,CAAC,EASlE,KAAK,UAAY,UAAW,CAC1B,IAAIG,EAEJ,MAAMC,CAAS,CACb,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAKA,YAAa,CAEX,OAAO,KAAK,QAAU,CAAC,CACzB,CASA,YAAa,CACX,OAAI,KAAK,YAAYF,EAAO,gBAAgB,GAE1C,KAAK,UAAU,EAGV,CAAC,KAAK,YAAYA,EAAO,cAAc,CAChD,CASA,UAAW,CACT,GAAI,CAAC,KAAK,YAAYA,EAAO,cAAc,EACzC,OAAO,KAAK,iBAAiB,CAEjC,CASA,iBAAkB,CAChB,IAAII,EAAUC,EASd,GAPA,KAAK,UAAU,EAEfD,EAAW,KACN,KAAK,YAAYJ,EAAO,cAAc,IACzCI,EAAW,KAAK,iBAAiB,GAG/B,CAAC,KAAK,YAAYJ,EAAO,cAAc,EACzC,MAAAK,EAAQ,KAAK,UAAU,EACjB,IAAIR,GAAQ,cAAc,2CAA4CO,EAAS,WAAY,6BAA8BC,EAAM,UAAU,EAGjJ,YAAK,UAAU,EACRD,CACT,CAYA,kBAAmB,CACjB,IAAIE,EAEJ,YAAK,UAAU,EAEfA,EAAO,KAAK,aAAa,EAEzB,KAAK,UAAU,EAEf,KAAK,QAAU,CAAC,EACTA,CACT,CAiBA,aAAaC,EAAQC,EAAO,CAC1B,IAAIC,EAAQJ,EAAOC,EACnB,GAAI,KAAK,YAAYN,EAAO,UAAU,EAAG,CAGvC,GAFAK,EAAQ,KAAK,UAAU,EACvBI,EAASJ,EAAM,OACX,EAAEI,KAAU,KAAK,SACnB,MAAM,IAAIZ,GAAQ,cAAc,KAAM,KAAM,yBAAyBY,CAAM,GAAIJ,EAAM,UAAU,EAEjG,OAAO,KAAK,QAAQI,CAAM,CAC5B,CAGA,GAFAJ,EAAQ,KAAK,WAAW,EACxBI,EAASJ,EAAM,OACXI,IAAW,MAAQA,KAAU,KAAK,QACpC,MAAM,IAAIZ,GAAQ,cAAc,0BAA0BY,CAAM,oBAAqB,KAAK,QAAQA,CAAM,EAAE,WAAY,oBAAqBJ,EAAM,UAAU,EAE7J,YAAK,iBAAiBE,EAAQC,CAAK,EAC/B,KAAK,YAAYR,EAAO,WAAW,EACrCM,EAAO,KAAK,oBAAoBG,CAAM,EAC7B,KAAK,YAAYT,EAAO,kBAAkB,EACnDM,EAAO,KAAK,sBAAsBG,CAAM,EAC/B,KAAK,YAAYT,EAAO,iBAAiB,IAClDM,EAAO,KAAK,qBAAqBG,CAAM,GAEzC,KAAK,gBAAgB,EACdH,CACT,CAUA,oBAAoBG,EAAQ,CAC1B,IAAIJ,EAAOC,EAAMI,EACjB,OAAAL,EAAQ,KAAK,UAAU,EACvBK,EAAML,EAAM,KACRK,IAAQ,MAAQA,IAAQ,OAC1BA,EAAM,KAAK,QAAQT,EAAM,WAAYI,EAAM,MAAOA,EAAM,QAAQ,GAElEC,EAAO,IAAIL,EAAM,WAAWS,EAAKL,EAAM,MAAOA,EAAM,WAAYA,EAAM,SAAUA,EAAM,KAAK,EACvFI,IAAW,OACb,KAAK,QAAQA,CAAM,EAAIH,GAElBA,CACT,CAaA,sBAAsBG,EAAQ,CAC5B,IAAIE,EAAWH,EAAOF,EAAMM,EAAaF,EAWzC,IAVAE,EAAc,KAAK,UAAU,EAC7BF,EAAME,EAAY,KACdF,IAAQ,MAAQA,IAAQ,OAC1BA,EAAM,KAAK,QAAQT,EAAM,aAAc,KAAMW,EAAY,QAAQ,GAEnEN,EAAO,IAAIL,EAAM,aAAaS,EAAK,CAAC,EAAGE,EAAY,WAAY,KAAMA,EAAY,UAAU,EACvFH,IAAW,OACb,KAAK,QAAQA,CAAM,EAAIH,GAEzBE,EAAQ,EACD,CAAC,KAAK,YAAYR,EAAO,gBAAgB,GAC9CM,EAAK,MAAM,KAAK,KAAK,aAAaA,EAAME,CAAK,CAAC,EAC9CA,IAEF,OAAAG,EAAY,KAAK,UAAU,EAC3BL,EAAK,SAAWK,EAAU,SACnBL,CACT,CAaA,qBAAqBG,EAAQ,CAC3B,IAAIE,EAAWE,EAAUC,EAAYR,EAAMM,EAAaF,EAUxD,IATAE,EAAc,KAAK,UAAU,EAC7BF,EAAME,EAAY,KACdF,IAAQ,MAAQA,IAAQ,OAC1BA,EAAM,KAAK,QAAQT,EAAM,YAAa,KAAMW,EAAY,QAAQ,GAElEN,EAAO,IAAIL,EAAM,YAAYS,EAAK,CAAC,EAAGE,EAAY,WAAY,KAAMA,EAAY,UAAU,EACtFH,IAAW,OACb,KAAK,QAAQA,CAAM,EAAIH,GAElB,CAAC,KAAK,YAAYN,EAAO,eAAe,GAC7Ca,EAAW,KAAK,aAAaP,CAAI,EACjCQ,EAAa,KAAK,aAAaR,EAAMO,CAAQ,EAC7CP,EAAK,MAAM,KAAK,CAACO,EAAUC,CAAU,CAAC,EAExC,OAAAH,EAAY,KAAK,UAAU,EAC3BL,EAAK,SAAWK,EAAU,SACnBL,CACT,CAEF,CAEA,OAAAJ,EAAOC,EAAS,UAAU,WAEnBA,CAET,GAAG,KAAK,IAAI,CAEd,GAAG,KAAKN,EAAI,IC3PZ,IAAAkB,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CAIV,IAAIC,EAAKC,EAAMC,EACbC,EAAU,CAAC,EAAE,eAEf,KAAK,aAAe,KAAmB,CACrC,aAAc,CACZ,KAAK,OAAS,EAChB,CAEA,MAAMC,EAAO,CACX,OAAO,KAAK,QAAUA,CACxB,CAEF,EAEA,KAAK,MAASC,GACL,OAAO,OAAO,CAAC,EAAGA,CAAG,EAG9B,KAAK,OAAS,SAASC,KAAgBC,EAAS,CAC9C,IAAIC,EAAGC,EAAGC,EAAKC,EAAMC,EAAMZ,EAAKa,EAChC,IAAKL,EAAI,EAAGE,EAAMH,EAAQ,OAAQC,EAAIE,EAAKF,IAEzC,IADAK,EAASN,EAAQC,CAAC,EACXK,IAAW,OAAO,WAAW,CAElC,IADAb,EAAM,OAAO,oBAAoBa,CAAM,EAClCJ,EAAI,EAAGE,EAAOX,EAAI,OAAQS,EAAIE,EAAMF,IACvCG,EAAOZ,EAAIS,CAAC,EACRH,EAAYM,CAAI,GAAK,OACvBN,EAAYM,CAAI,EAAIC,EAAOD,CAAI,GAGnCC,EAAS,OAAO,eAAeA,CAAM,CACvC,CAEF,OAAOP,CACT,EAEA,KAAK,SAAW,SAASD,EAAK,CAC5B,IAAIS,EACJ,GAAI,MAAM,QAAQT,CAAG,GAAK,OAAOA,GAAQ,SACvC,OAAOA,EAAI,SAAW,EAExB,IAAKS,KAAOT,EACV,GAAKF,EAAQ,KAAKE,EAAKS,CAAG,EAC1B,MAAO,GAET,MAAO,EACT,EAEA,KAAK,SAAWd,GAAOC,GAAQC,EAAO,QAAQ,MAAM,IAAM,KAAOA,EAAK,QAAU,SAAW,KAAOD,EAAO,OAAO,UAAY,KAAOD,EAAM,SAASe,EAAG,CACnJ,MAAO,GAAGA,CAAC,EACb,EAEA,KAAK,SAAW,SAASC,EAAKC,EAAMC,EAAQ,CAE1C,OADAF,EAAM,OAAOA,CAAG,EACZA,EAAI,QAAUE,EACTF,EACEA,EAAI,OAAS,IAAME,EACrB,GAAGD,CAAI,GAAGD,CAAG,GAEb,GAAG,IAAI,MAAME,EAASF,EAAI,OAAS,CAAC,EAAE,KAAKC,CAAI,CAAC,GAAGD,CAAG,EAEjE,EAEA,KAAK,OAAS,SAASG,EAAK,CAC1B,OAAI,OAAOA,GAAQ,WACjBA,EAAMA,EAAI,WAAW,CAAC,GAEjBA,EAAI,SAAS,EAAE,CACxB,CAEF,GAAG,KAAKrB,EAAI,IC1EZ,IAAAsB,GAAAC,EAAAC,GAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAiBC,EAAOC,EAC1BC,EAAU,CAAC,EAAE,SAEd,CAAC,gBAAAH,CAAe,EAAI,MAErBC,EAAQ,KAERC,EAAO,KAKP,KAAK,iBAAmB,cAA+BF,CAAgB,CAAC,EAUxE,KAAK,iBAAmB,UAAW,CACjC,IAAII,EAEJ,MAAMC,CAAgB,CACpB,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAYA,OAAO,gBAAgBE,EAAKC,EAAa,CACvC,OAAK,KAAK,UAAU,eAAe,mBAAmB,IACpD,KAAK,UAAU,kBAAoBL,EAAK,OAAO,CAAC,EAAG,KAAK,UAAU,iBAAiB,GAE9E,KAAK,UAAU,kBAAkBI,CAAG,EAAIC,CACjD,CAaA,OAAO,sBAAsBC,EAAYC,EAAmB,CAC1D,OAAK,KAAK,UAAU,eAAe,yBAAyB,IAC1D,KAAK,UAAU,wBAA0BP,EAAK,OAAO,CAAC,EAAG,KAAK,UAAU,uBAAuB,GAE1F,KAAK,UAAU,wBAAwBM,CAAU,EAAIC,CAC9D,CAKA,YAAa,CAEX,YAAK,oBAAsB,CAAC,EAE5B,KAAK,mBAAqB,CAAC,EAEpB,KAAK,sBAAwB,CAAC,CACvC,CASA,YAAa,CACX,OAAO,KAAK,WAAW,CACzB,CASA,UAAW,CACT,GAAI,KAAK,WAAW,EAClB,OAAO,KAAK,mBAAmB,KAAK,SAAS,CAAC,CAElD,CASA,iBAAkB,CAChB,IAAIC,EAEJ,OADAA,EAAO,KAAK,gBAAgB,EACxBA,GAAQ,KACH,KAAK,mBAAmBA,CAAI,EAE9B,IACT,CAOA,mBAAmBA,EAAM,CACvB,IAAIC,EAEJ,IADAA,EAAO,KAAK,iBAAiBD,CAAI,EAC1B,CAACR,EAAK,SAAS,KAAK,qBAAqB,GAC9C,KAAK,sBAAsB,IAAI,EAAE,EAEnC,OAAOS,CACT,CAEA,MAAMC,EAAG,CACP,OAAO,KAAK,sBAAsB,KAAKA,CAAC,CAC1C,CAEA,iBAAiBF,EAAM,CACrB,IAAIH,EAAaM,EAAQC,EAAKN,EAAYO,EAC1C,GAAIL,EAAK,aAAa,KAAK,oBACzB,OAAO,KAAK,oBAAoBA,EAAK,SAAS,EAEhD,GAAII,EAAMJ,EAAK,UAAWP,EAAQ,KAAK,KAAK,mBAAoBW,CAAG,GAAK,EACtE,MAAM,IAAIhB,EAAQ,iBAAiB,KAAM,KAAM,uCAAwCY,EAAK,UAAU,EAKxG,GAHA,KAAK,mBAAmB,KAAKA,EAAK,SAAS,EAC3CH,EAAc,KACdQ,EAAa,KACTL,EAAK,OAAO,KAAK,kBACnBH,EAAc,KAAK,kBAAkBG,EAAK,GAAG,MACxC,CACL,IAAKF,KAAc,KAAK,wBACtB,GAAIE,EAAK,IAAI,QAAQF,IAAe,CAAC,EAAG,CACtCO,EAAaL,EAAK,IAAI,MAAMF,EAAW,MAAM,EAC7CD,EAAc,KAAK,wBAAwBC,CAAU,EACrD,KACF,CAEED,GAAe,OACb,QAAQ,KAAK,yBACfQ,EAAaL,EAAK,IAClBH,EAAc,KAAK,wBAAwB,IAAI,GACtC,QAAQ,KAAK,kBACtBA,EAAc,KAAK,kBAAkB,IAAI,EAChCG,aAAgBT,EAAM,WAC/BM,EAAc,KAAK,iBACVG,aAAgBT,EAAM,aAC/BM,EAAc,KAAK,mBACVG,aAAgBT,EAAM,cAC/BM,EAAc,KAAK,mBAGzB,CACA,OAAAM,EAASN,EAAY,KAAK,KAAMQ,GAAkCL,EAAMA,CAAI,EAC5E,KAAK,oBAAoBA,EAAK,SAAS,EAAIG,EAC3C,KAAK,mBAAmB,IAAI,EACrBA,CACT,CAEA,iBAAiBH,EAAM,CACrB,GAAI,EAAEA,aAAgBT,EAAM,YAC1B,MAAM,IAAIH,EAAQ,iBAAiB,KAAM,KAAM,oCAAoCY,EAAK,EAAE,GAAIA,EAAK,UAAU,EAE/G,OAAOA,EAAK,KACd,CAEA,mBAAmBA,EAAM,CACvB,IAAIM,EAAOC,EAAGC,EAAKJ,EAAKK,EACxB,GAAI,EAAET,aAAgBT,EAAM,cAC1B,MAAM,IAAIH,EAAQ,iBAAiB,KAAM,KAAM,sCAAsCY,EAAK,EAAE,GAAIA,EAAK,UAAU,EAIjH,IAFAI,EAAMJ,EAAK,MACXS,EAAU,CAAC,EACNF,EAAI,EAAGC,EAAMJ,EAAI,OAAQG,EAAIC,EAAKD,IACrCD,EAAQF,EAAIG,CAAC,EACbE,EAAQ,KAAK,KAAK,iBAAiBH,CAAK,CAAC,EAE3C,OAAOG,CACT,CAEA,kBAAkBT,EAAM,CACtB,IAAIO,EAAGG,EAAKC,EAAUH,EAAKI,EAASR,EAAKS,EAAOC,EAChD,GAAI,EAAEd,aAAgBT,EAAM,aAC1B,MAAM,IAAI,iBAAiB,KAAM,KAAM,qCAAqCS,EAAK,EAAE,GAAIA,EAAK,UAAU,EAIxG,IAFAY,EAAU,CAAC,EACXR,EAAMJ,EAAK,MACNO,EAAI,EAAGC,EAAMJ,EAAI,OAAQG,EAAIC,EAAKD,IAAK,CAG1C,GAFA,CAACI,EAAUG,CAAU,EAAIV,EAAIG,CAAC,EAC9BG,EAAM,KAAK,iBAAiBC,CAAQ,EAChC,OAAOD,GAAQ,SACjB,MAAM,IAAItB,EAAQ,iBAAiB,+BAAgCY,EAAK,WAAY,uBAAwBW,EAAS,UAAU,EAEjIE,EAAQ,KAAK,iBAAiBC,CAAU,EACxCF,EAAQF,CAAG,EAAIG,CACjB,CACA,OAAOD,CACT,CAEA,gBAAgBZ,EAAM,CACpB,IAAIO,EAAGG,EAAKC,EAAUH,EAAKO,EAAOX,EAAKS,EAAOC,EAC9C,GAAI,EAAEd,aAAgBT,EAAM,aAC1B,MAAM,IAAIH,EAAQ,iBAAiB,KAAM,KAAM,qCAAqCY,EAAK,EAAE,GAAIA,EAAK,UAAU,EAIhH,IAFAe,EAAQ,CAAC,EACTX,EAAMJ,EAAK,MACNO,EAAI,EAAGC,EAAMJ,EAAI,OAAQG,EAAIC,EAAKD,IACrC,CAACI,EAAUG,CAAU,EAAIV,EAAIG,CAAC,EAC9BG,EAAM,KAAK,iBAAiBC,CAAQ,EACpCE,EAAQ,KAAK,iBAAiBC,CAAU,EACxCC,EAAM,KAAK,CAACL,EAAKG,CAAK,CAAC,EAEzB,OAAOE,CACT,CAEF,CAMA,OAAApB,EAAgB,UAAU,kBAAoB,CAAC,EAO/CA,EAAgB,UAAU,wBAA0B,CAAC,EAErDD,EAAOC,EAAgB,UAAU,WAE1BA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,aAAe,UAAW,CAC7B,IAAIqB,EAAaC,EAAiBC,EAElC,MAAMC,UAAoB,KAAK,eAAgB,CAC7C,iBAAiBnB,EAAM,CACrB,IAAIO,EAAGI,EAAUH,EAAKJ,EAAKU,EAC3B,GAAId,aAAgBT,EAAM,aAExB,IADAa,EAAMJ,EAAK,MACNO,EAAI,EAAGC,EAAMJ,EAAI,OAAQG,EAAIC,EAAKD,IAErC,GADA,CAACI,EAAUG,CAAU,EAAIV,EAAIG,CAAC,EAC1BI,EAAS,MAAQ,0BACnB,OAAO,KAAK,iBAAiBG,CAAU,EAI7C,OAAO,MAAM,iBAAiBd,CAAI,CACpC,CAEA,gBAAgBA,EAAM,CACpB,IAAIO,EAAGa,EAAOC,EAAGV,EAAUH,EAAKc,EAAMC,EAAOnB,EAAKoB,EAAUC,EAASZ,EAAOC,EAG5E,IAFAS,EAAQ,CAAC,EACTH,EAAQ,EACDA,EAAQpB,EAAK,MAAM,QAExB,GADA,CAACW,EAAUG,CAAU,EAAId,EAAK,MAAMoB,CAAK,EACrCT,EAAS,MAAQ,0BAGnB,GAFAX,EAAK,MAAM,OAAOoB,EAAO,CAAC,EAEtBN,aAAsBvB,EAAM,YAC9B,KAAK,gBAAgBuB,CAAU,EAC/BS,EAAQA,EAAM,OAAOT,EAAW,KAAK,UAC5BA,aAAsBvB,EAAM,aAAc,CAGnD,IAFAiC,EAAW,CAAC,EACZpB,EAAMU,EAAW,MACZP,EAAI,EAAGC,EAAMJ,EAAI,OAAQG,EAAIC,EAAKD,IAAK,CAE1C,GADAkB,EAAUrB,EAAIG,CAAC,EACX,EAAEkB,aAAmBlC,EAAM,aAC7B,MAAM,IAAIH,EAAQ,iBAAiB,+BAAgCY,EAAK,WAAY,6CAA6CyB,EAAQ,EAAE,GAAIA,EAAQ,UAAU,EAEnK,KAAK,gBAAgBA,CAAO,EAC5BD,EAAS,KAAKC,EAAQ,KAAK,CAC7B,CAEA,IADAD,EAAS,QAAQ,EACZH,EAAI,EAAGC,EAAOE,EAAS,OAAQH,EAAIC,EAAMD,IAC5CR,EAAQW,EAASH,CAAC,EAClBE,EAAQA,EAAM,OAAOV,CAAK,CAE9B,KACE,OAAM,IAAIzB,EAAQ,iBAAiB,+BAAgCY,EAAK,WAAY,gEAAgEc,EAAW,EAAE,GAAIA,EAAW,UAAU,OAEnLH,EAAS,MAAQ,4BAC1BA,EAAS,IAAM,yBACfS,IAKJ,GAAIG,EAAM,OACR,OAAOvB,EAAK,MAAQuB,EAAM,OAAOvB,EAAK,KAAK,CAE/C,CAEA,kBAAkBA,EAAM,CACtB,OAAIA,aAAgBT,EAAM,aACxB,KAAK,gBAAgBS,CAAI,EAEpB,MAAM,kBAAkBA,CAAI,CACrC,CAEA,oBAAoBA,EAAM,CACxB,YAAK,iBAAiBA,CAAI,EACnB,IACT,CAEA,oBAAoBA,EAAM,CACxB,IAAIa,EACJ,OAAAA,EAAQ,KAAK,iBAAiBb,CAAI,EAC3BgB,EAAYH,EAAM,YAAY,CAAC,CACxC,CAEA,mBAAmBb,EAAM,CACvB,IAAI0B,EAAMC,EAAOC,EAAQrB,EAAGC,EAAKqB,EAAMzB,EAAK0B,EAAMjB,EAOlD,GANAA,EAAQ,KAAK,iBAAiBb,CAAI,EAClCa,EAAQA,EAAM,QAAQ,KAAM,EAAE,EAC9BiB,EAAOjB,EAAM,CAAC,IAAM,IAAM,GAAK,EAC3BT,EAAMS,EAAM,CAAC,EAAGpB,EAAQ,KAAK,KAAMW,CAAG,GAAK,IAC7CS,EAAQA,EAAM,MAAM,CAAC,GAEnBA,IAAU,IACZ,MAAO,GACF,GAAIA,EAAM,QAAQ,IAAI,IAAM,EACjC,OAAOiB,EAAO,SAASjB,EAAM,MAAM,CAAC,EAAG,CAAC,EACnC,GAAIA,EAAM,QAAQ,IAAI,IAAM,EACjC,OAAOiB,EAAO,SAASjB,EAAM,MAAM,CAAC,EAAG,EAAE,EACpC,GAAIA,EAAM,QAAQ,IAAI,IAAM,EACjC,OAAOiB,EAAO,SAASjB,EAAM,MAAM,CAAC,EAAG,CAAC,EACnC,GAAIA,EAAM,CAAC,IAAM,IACtB,OAAOiB,EAAO,SAASjB,EAAO,CAAC,EAC1B,GAAIpB,EAAQ,KAAKoB,EAAO,GAAG,GAAK,EAAG,CAcxC,IAbAe,GAAU,UAAW,CACnB,IAAIrB,EAAGC,EAAKuB,EAAMtB,EAGlB,IAFAsB,EAAOlB,EAAM,MAAM,IAAI,EACvBJ,EAAU,CAAC,EACNF,EAAI,EAAGC,EAAMuB,EAAK,OAAQxB,EAAIC,EAAKD,IACtCsB,EAAOE,EAAKxB,CAAC,EACbE,EAAQ,KAAK,SAASoB,CAAI,CAAC,EAE7B,OAAOpB,CACT,GAAG,EACHmB,EAAO,QAAQ,EACfF,EAAO,EACPb,EAAQ,EACHN,EAAI,EAAGC,EAAMoB,EAAO,OAAQrB,EAAIC,EAAKD,IACxCoB,EAAQC,EAAOrB,CAAC,EAChBM,GAASc,EAAQD,EACjBA,GAAQ,GAEV,OAAOI,EAAOjB,CAChB,KACE,QAAOiB,EAAO,SAASjB,CAAK,CAEhC,CAEA,qBAAqBb,EAAM,CACzB,IAAI0B,EAAMC,EAAOC,EAAQrB,EAAGC,EAAKqB,EAAMzB,EAAK0B,EAAMjB,EAOlD,GANAA,EAAQ,KAAK,iBAAiBb,CAAI,EAClCa,EAAQA,EAAM,QAAQ,KAAM,EAAE,EAAE,YAAY,EAC5CiB,EAAOjB,EAAM,CAAC,IAAM,IAAM,GAAK,EAC3BT,EAAMS,EAAM,CAAC,EAAGpB,EAAQ,KAAK,KAAMW,CAAG,GAAK,IAC7CS,EAAQA,EAAM,MAAM,CAAC,GAEnBA,IAAU,OACZ,OAAOiB,EAAO,MACT,GAAIjB,IAAU,OACnB,MAAO,KACF,GAAIpB,EAAQ,KAAKoB,EAAO,GAAG,GAAK,EAAG,CAcxC,IAbAe,GAAU,UAAW,CACnB,IAAIrB,EAAGC,EAAKuB,EAAMtB,EAGlB,IAFAsB,EAAOlB,EAAM,MAAM,IAAI,EACvBJ,EAAU,CAAC,EACNF,EAAI,EAAGC,EAAMuB,EAAK,OAAQxB,EAAIC,EAAKD,IACtCsB,EAAOE,EAAKxB,CAAC,EACbE,EAAQ,KAAK,WAAWoB,CAAI,CAAC,EAE/B,OAAOpB,CACT,GAAG,EACHmB,EAAO,QAAQ,EACfF,EAAO,EACPb,EAAQ,EACHN,EAAI,EAAGC,EAAMoB,EAAO,OAAQrB,EAAIC,EAAKD,IACxCoB,EAAQC,EAAOrB,CAAC,EAChBM,GAASc,EAAQD,EACjBA,GAAQ,GAEV,OAAOI,EAAOjB,CAChB,KACE,QAAOiB,EAAO,WAAWjB,CAAK,CAElC,CAEA,sBAAsBb,EAAM,CAC1B,IAAIgC,EAAOnB,EACXA,EAAQ,KAAK,iBAAiBb,CAAI,EAClC,GAAI,CACF,OAAI,OAAO,OAAW,KAAe,SAAW,KACvC,KAAKa,CAAK,EAEZ,IAAI,OAAOA,EAAO,QAAQ,EAAE,SAAS,OAAO,CACrD,OAASoB,EAAQ,CACf,MAAAD,EAAQC,EACF,IAAI7C,EAAQ,iBAAiB,KAAM,KAAM,iCAAiC4C,CAAK,GAAIhC,EAAK,UAAU,CAC1G,CACF,CAEA,yBAAyBA,EAAM,CAC7B,IAAIkC,EAAMC,EAAKC,EAAUC,EAAMjB,EAAOV,EAAK4B,EAAOC,EAAaC,EAAQC,EAAOC,EAAQC,EAASC,EAAWC,EAAShC,EAAOiC,EAAQC,EAClIlC,EAAQ,KAAK,iBAAiBb,CAAI,EAClCsC,EAAQtC,EAAK,MAAM,MAAMkB,CAAe,EACxC4B,EAAS,CAAC,EACV,IAAKpC,KAAOO,EACVG,EAAQH,EAAgBP,CAAG,EAC3BoC,EAAOpC,CAAG,EAAI4B,EAAMlB,CAAK,EAK3B,GAHA2B,EAAO,SAASD,EAAO,IAAI,EAC3BL,EAAQ,SAASK,EAAO,KAAK,EAAI,EACjCX,EAAM,SAASW,EAAO,GAAG,EACrB,CAACA,EAAO,KACV,OAAO,IAAI,KAAK,KAAK,IAAIC,EAAMN,EAAON,CAAG,CAAC,EAM5C,GAJAE,EAAO,SAASS,EAAO,IAAI,EAC3BN,EAAS,SAASM,EAAO,MAAM,EAC/BJ,EAAS,SAASI,EAAO,MAAM,EAC/BP,EAAc,EACVO,EAAO,SAAU,CAEnB,IADAV,EAAWU,EAAO,SAAS,MAAM,EAAG,CAAC,EAC9BV,EAAS,OAAS,GACvBA,GAAY,IAEdA,EAAW,SAASA,CAAQ,EAC5BG,EAAc,KAAK,MAAMH,EAAW,GAAI,CAC1C,CACA,OAAIU,EAAO,UACTD,EAAUC,EAAO,UAAY,IAAM,EAAI,IACnCH,EAAU,SAASG,EAAO,OAAO,KACnCT,GAAQQ,EAAUF,IAEhBC,EAAY,SAASE,EAAO,SAAS,KACvCN,GAAUK,EAAUD,IAGxBV,EAAO,IAAI,KAAK,KAAK,IAAIa,EAAMN,EAAON,EAAKE,EAAMG,EAAQE,EAAQH,CAAW,CAAC,EACtEL,CACT,CAEA,yBAAyBc,EAAMhD,EAAM,CACnC,IAAIiD,EAEJ,GADAA,EAAO,CAAC,EACJ,EAAEjD,aAAgBT,EAAM,cAC1B,MAAM,IAAIH,EAAQ,iBAAiB,sBAAsB4D,CAAI,GAAIhD,EAAK,WAAY,iCAAiCA,EAAK,EAAE,GAAIA,EAAK,UAAU,EAE/I,YAAK,MAAM,IAAM,CACf,IAAIO,EAAGG,EAAKC,EAAUH,EAAKJ,EAAKK,EAASgB,EAASZ,EAAOC,EAGzD,IAFAV,EAAMJ,EAAK,MACXS,EAAU,CAAC,EACNF,EAAI,EAAGC,EAAMJ,EAAI,OAAQG,EAAIC,EAAKD,IAAK,CAE1C,GADAkB,EAAUrB,EAAIG,CAAC,EACX,EAAEkB,aAAmBlC,EAAM,aAC7B,MAAM,IAAIH,EAAQ,iBAAiB,sBAAsB4D,CAAI,GAAIhD,EAAK,WAAY,4CAA4CyB,EAAQ,EAAE,GAAIA,EAAQ,UAAU,EAEhK,GAAIA,EAAQ,MAAM,SAAW,EAC3B,MAAM,IAAIrC,EAAQ,iBAAiB,sBAAsB4D,CAAI,GAAIhD,EAAK,WAAY,4CAA4CyB,EAAQ,EAAE,GAAIA,EAAQ,UAAU,EAEhK,CAACd,EAAUG,CAAU,EAAIW,EAAQ,MAAM,CAAC,EACxCf,EAAM,KAAK,iBAAiBC,CAAQ,EACpCE,EAAQ,KAAK,iBAAiBC,CAAU,EACxCL,EAAQ,KAAKwC,EAAK,KAAK,CAACvC,EAAKG,CAAK,CAAC,CAAC,CACtC,CACA,OAAOJ,CACT,CAAC,EACMwC,CACT,CAEA,oBAAoBjD,EAAM,CACxB,OAAO,KAAK,yBAAyB,iBAAkBA,CAAI,CAC7D,CAEA,qBAAqBA,EAAM,CACzB,OAAO,KAAK,yBAAyB,QAASA,CAAI,CACpD,CAEA,mBAAmBA,EAAM,CACvB,IAAIC,EACJ,OAAAA,EAAO,CAAC,EACR,KAAK,MAAM,IAAM,CACf,IAAIiD,EAAMzC,EACVA,EAAU,CAAC,EACX,IAAKyC,KAAQ,KAAK,kBAAkBlD,CAAI,EACtCS,EAAQ,KAAKR,EAAK,KAAKiD,CAAI,CAAC,EAE9B,OAAOzC,CACT,CAAC,EACMR,CACT,CAEA,mBAAmBD,EAAM,CACvB,OAAO,KAAK,iBAAiBA,CAAI,CACnC,CAEA,mBAAmBA,EAAM,CACvB,IAAIC,EACJ,OAAAA,EAAO,CAAC,EACR,KAAK,MAAM,IAAM,CACf,IAAIM,EAAG2C,EAAM1C,EAAKJ,EAAKK,EAGvB,IAFAL,EAAM,KAAK,mBAAmBJ,CAAI,EAClCS,EAAU,CAAC,EACNF,EAAI,EAAGC,EAAMJ,EAAI,OAAQG,EAAIC,EAAKD,IACrC2C,EAAO9C,EAAIG,CAAC,EACZE,EAAQ,KAAKR,EAAK,KAAKiD,CAAI,CAAC,EAE9B,OAAOzC,CACT,CAAC,EACMR,CACT,CAEA,mBAAmBD,EAAM,CACvB,IAAIC,EACJ,OAAAA,EAAO,CAAC,EACR,KAAK,MAAM,IAAM,CACf,IAAIS,EAAKN,EAAKK,EAASI,EACvBT,EAAM,KAAK,kBAAkBJ,CAAI,EACjCS,EAAU,CAAC,EACX,IAAKC,KAAON,EACVS,EAAQT,EAAIM,CAAG,EACfD,EAAQ,KAAKR,EAAKS,CAAG,EAAIG,CAAK,EAEhC,OAAOJ,CACT,CAAC,EACMR,CACT,CAEA,sBAAsBD,EAAMmD,EAAO,CACjC,IAAIlD,EACJ,OAAAA,EAAO,IAAIkD,EACX,KAAK,MAAM,IAAM,CACf,IAAIzC,EAAKN,EAAKK,EAASI,EACvBT,EAAM,KAAK,kBAAkBJ,EAAM,EAAI,EACvCS,EAAU,CAAC,EACX,IAAKC,KAAON,EACVS,EAAQT,EAAIM,CAAG,EACfD,EAAQ,KAAKR,EAAKS,CAAG,EAAIG,CAAK,EAEhC,OAAOJ,CACT,CAAC,EACMR,CACT,CAEA,oBAAoBD,EAAM,CACxB,MAAM,IAAIZ,EAAQ,iBAAiB,KAAM,KAAM,iDAAiDY,EAAK,GAAG,GAAIA,EAAK,UAAU,CAC7H,CAEF,CAEA,OAAAgB,EAAc,CACZ,GAAI,GACJ,IAAK,GACL,KAAM,GACN,MAAO,GACP,IAAK,GACL,GAAI,EACN,EAEAE,EAAkB,2LAYlBD,EAAkB,CAChB,KAAM,EACN,MAAO,EACP,IAAK,EACL,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,SAAU,EACV,GAAI,EACJ,QAAS,EACT,QAAS,GACT,UAAW,EACb,EAEOE,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,YAAY,gBAAgB,yBAA0B,KAAK,YAAY,UAAU,mBAAmB,EAEzG,KAAK,YAAY,gBAAgB,yBAA0B,KAAK,YAAY,UAAU,mBAAmB,EAEzG,KAAK,YAAY,gBAAgB,wBAAyB,KAAK,YAAY,UAAU,kBAAkB,EAEvG,KAAK,YAAY,gBAAgB,0BAA2B,KAAK,YAAY,UAAU,oBAAoB,EAE3G,KAAK,YAAY,gBAAgB,2BAA4B,KAAK,YAAY,UAAU,qBAAqB,EAE7G,KAAK,YAAY,gBAAgB,8BAA+B,KAAK,YAAY,UAAU,wBAAwB,EAEnH,KAAK,YAAY,gBAAgB,yBAA0B,KAAK,YAAY,UAAU,mBAAmB,EAEzG,KAAK,YAAY,gBAAgB,0BAA2B,KAAK,YAAY,UAAU,oBAAoB,EAE3G,KAAK,YAAY,gBAAgB,wBAAyB,KAAK,YAAY,UAAU,kBAAkB,EAEvG,KAAK,YAAY,gBAAgB,wBAAyB,KAAK,YAAY,UAAU,kBAAkB,EAEvG,KAAK,YAAY,gBAAgB,wBAAyB,KAAK,YAAY,UAAU,kBAAkB,EAEvG,KAAK,YAAY,gBAAgB,wBAAyB,KAAK,YAAY,UAAU,kBAAkB,EAEvG,KAAK,YAAY,gBAAgB,KAAM,KAAK,YAAY,UAAU,mBAAmB,CAEvF,GAAG,KAAK/B,CAAI,ICjoBZ,IAAAgE,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAgBC,EAAWC,EAAQC,EACrCC,EAAU,CAAC,EAAE,eACbC,EAAU,CAAC,EAAE,QAEfH,EAAS,KAETC,EAAO,KAEN,CAAC,UAAAF,CAAS,EAAI,KAEf,KAAK,aAAe,cAA2BA,CAAU,CAAC,EAW1D,KAAK,SAAW,UAAW,CACzB,IAAIK,EAAcC,EAAsBC,EAAqBC,EAE7D,MAAMC,CAAQ,CACZ,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAEA,WAAWE,EAAQC,EAAS,CAC1B,IAAIC,EACJ,YAAK,OAASF,EAEd,KAAK,SAAW,KAEhB,KAAK,OAAS,CAAC,EACf,KAAK,MAAQ,KAAK,oBAElB,KAAK,OAAS,CAAC,EACf,KAAK,MAAQ,KAEb,KAAK,QAAU,CAAC,EAChB,KAAK,OAAS,KAEd,KAAK,WAAa,EAElB,KAAK,aAAe,GACpB,KAAK,iBAAmB,GACxB,KAAK,gBAAkB,GACvB,KAAK,mBAAqB,GAK1B,KAAK,KAAO,EACZ,KAAK,OAAS,EACd,KAAK,WAAa,GAClB,KAAK,YAAc,GAEnB,KAAK,WAAa,GAEjB,CAAC,UAAW,KAAK,UAAW,cAAe,KAAK,aAAa,EAAIC,EAC9D,KAAK,WAAa,OACpB,KAAK,UAAY,IAEf,KAAK,eAAiB,OACxB,KAAK,cAAgB,IAEvB,KAAK,YAAc,EAAIA,EAAQ,QAAUA,EAAQ,OAAS,GAAKA,EAAQ,OAAS,EAChF,KAAK,WAAaA,EAAQ,MAAQ,KAAK,OAAS,EAAIA,EAAQ,MAAQ,GACpE,KAAK,iBAAmBC,EAAMD,EAAQ,cAAgB,MAAQC,IAAQ;AAAA,GAAQA,IAAQ;AAAA,EAASD,EAAQ,WAAa;AAAA,EAEpH,KAAK,aAAe,KAEpB,KAAK,gBAAkB,KACvB,KAAK,aAAe,KAEpB,KAAK,SAAW,KACT,KAAK,MAAQ,IACtB,CAKA,SAAU,CACR,YAAK,OAAS,CAAC,EACR,KAAK,MAAQ,IACtB,CAEA,KAAKE,EAAO,CACV,IAAIC,EAGJ,IAFA,KAAK,OAAO,KAAKD,CAAK,EACtBC,EAAU,CAAC,EACJ,CAAC,KAAK,iBAAiB,GAC5B,KAAK,MAAQ,KAAK,OAAO,MAAM,EAC/B,KAAK,MAAM,EACXA,EAAQ,KAAK,KAAK,MAAQ,IAAI,EAEhC,OAAOA,CACT,CAKA,kBAAmB,CACjB,IAAID,EACJ,OAAI,KAAK,OAAO,SAAW,EAClB,IAETA,EAAQ,KAAK,OAAO,CAAC,EACjBA,aAAiBZ,EAAO,mBACnB,KAAK,YAAY,CAAC,EAChBY,aAAiBZ,EAAO,mBAC1B,KAAK,YAAY,CAAC,EAChBY,aAAiBZ,EAAO,kBAC1B,KAAK,YAAY,CAAC,EAElB,GAEX,CAEA,YAAYc,EAAO,CACjB,IAAIF,EAAOG,EAAGC,EAAKC,EAAON,EAG1B,IAFAM,EAAQ,EACRN,EAAM,KAAK,OAAO,MAAM,CAAC,EACpBI,EAAI,EAAGC,EAAML,EAAI,OAAQI,EAAIC,EAAKD,IASrC,GARAH,EAAQD,EAAII,CAAC,EACTH,aAAiBZ,EAAO,oBAAsBY,aAAiBZ,EAAO,qBACxEiB,IACSL,aAAiBZ,EAAO,kBAAoBY,aAAiBZ,EAAO,mBAC7EiB,IACSL,aAAiBZ,EAAO,iBACjCiB,EAAQ,IAENA,EAAQ,EACV,MAAO,GAGX,OAAO,KAAK,OAAO,OAASH,EAAQ,CACtC,CAEA,gBAAgBJ,EAAU,CAAC,EAAG,CAE5B,GADA,KAAK,QAAQ,KAAK,KAAK,MAAM,EACzB,KAAK,QAAU,KACjB,OAAO,KAAK,OAASA,EAAQ,KAAO,KAAK,YAAc,EAClD,GAAI,CAACA,EAAQ,WAClB,OAAO,KAAK,QAAU,KAAK,WAE/B,CAGA,qBAAsB,CACpB,OAAI,KAAK,iBAAiBV,EAAO,kBAC3B,KAAK,MAAM,UAAY,EAAE,aAAc,KAAK,UAC9C,KAAK,SAAW,KAAK,MAAM,UAE7B,KAAK,mBAAmB,EACjB,KAAK,MAAQ,KAAK,6BAElB,KAAK,MAAM,qCAAsC,KAAK,KAAK,CAEtE,CAEA,gBAAiB,CACf,OAAO,KAAK,MAAM,4BAA6B,KAAK,KAAK,CAC3D,CAGA,6BAA8B,CAC5B,OAAO,KAAK,sBAAsB,EAAI,CACxC,CAEA,sBAAsBkB,EAAQ,GAAO,CACnC,IAAIC,EAAUC,EAAQL,EAAGM,EAAGL,EAAKM,EAAQX,EACzC,GAAI,KAAK,iBAAiBX,EAAO,mBAAoB,CASnD,IARK,KAAK,MAAM,SAAW,KAAK,MAAM,OAAS,KAAK,aAClD,KAAK,gBAAgB,MAAO,EAAI,EAChC,KAAK,aAAa,GAEhB,KAAK,MAAM,SACb,KAAK,wBAAwB,KAAK,gBAAgB,KAAK,MAAM,OAAO,CAAC,EAEvE,KAAK,aAAeC,EAAK,MAAMI,CAAoB,EAC/C,KAAK,MAAM,KAWb,IAVAM,GAAQ,UAAW,CACjB,IAAIA,EAAKE,EACTF,EAAM,KAAK,MAAM,KACjBE,EAAU,CAAC,EACX,IAAKQ,KAAKV,EACHT,EAAQ,KAAKS,EAAKU,CAAC,GACxBR,EAAQ,KAAKQ,CAAC,EAEhB,OAAOR,CACT,GAAG,KAAK,IAAI,EAAG,KAAK,EACfE,EAAI,EAAGC,EAAML,EAAI,OAAQI,EAAIC,EAAKD,IACrCK,EAAST,EAAII,CAAC,EACdO,EAAS,KAAK,MAAM,KAAKF,CAAM,EAC/B,KAAK,aAAaE,CAAM,EAAIF,EAC5B,KAAK,oBAAoB,KAAK,mBAAmBA,CAAM,EAAG,KAAK,mBAAmBE,CAAM,CAAC,EAG7F,OAAAH,EAAW,CAACD,GAAS,KAAK,MAAM,UAAY,KAAK,WAAa,KAAK,MAAM,SAAW,KAAK,MAAM,MAAQ,KAAK,qBAAqB,EAC7HC,IACF,KAAK,aAAa,EAClB,KAAK,gBAAgB,MAAO,EAAI,EAC5B,KAAK,WACP,KAAK,aAAa,GAGf,KAAK,MAAQ,KAAK,oBAC3B,KAAO,QAAI,KAAK,iBAAiBnB,EAAO,gBAClC,KAAK,aACP,KAAK,gBAAgB,MAAO,EAAI,EAChC,KAAK,aAAa,GAEpB,KAAK,iBAAiB,EACf,KAAK,MAAQ,KAAK,gBAElB,KAAK,MAAM,uCAAwC,KAAK,KAAK,CAExE,CAEA,qBAAsB,CACpB,OAAI,KAAK,iBAAiBA,EAAO,kBAC/B,KAAK,aAAa,EACd,KAAK,MAAM,WACb,KAAK,gBAAgB,MAAO,EAAI,EAChC,KAAK,aAAa,GAEpB,KAAK,aAAa,EACX,KAAK,MAAQ,KAAK,uBAElB,KAAK,MAAM,qCAAsC,KAAK,KAAK,CAEtE,CAEA,sBAAuB,CACrB,YAAK,OAAO,KAAK,KAAK,mBAAmB,EAClC,KAAK,YAAY,CACtB,KAAM,EACR,CAAC,CACH,CAGA,YAAYuB,EAAS,CAAC,EAAG,CAKvB,GAJA,KAAK,aAAe,CAAC,CAACA,EAAO,KAC7B,KAAK,iBAAmB,CAAC,CAACA,EAAO,SACjC,KAAK,gBAAkB,CAAC,CAACA,EAAO,QAChC,KAAK,mBAAqB,CAAC,CAACA,EAAO,WAC/B,KAAK,iBAAiBvB,EAAO,WAC/B,OAAO,KAAK,aAAa,EACpB,GAAI,KAAK,iBAAiBA,EAAO,aAAe,KAAK,iBAAiBA,EAAO,qBAAsB,CAGxG,GAFA,KAAK,eAAe,GAAG,EACvB,KAAK,YAAY,EACb,KAAK,iBAAiBA,EAAO,YAC/B,OAAO,KAAK,cAAc,EACrB,GAAI,KAAK,iBAAiBA,EAAO,mBACtC,OAAI,KAAK,YAAc,KAAK,WAAa,KAAK,MAAM,YAAc,KAAK,qBAAqB,EACnF,KAAK,qBAAqB,EAE1B,KAAK,sBAAsB,EAE/B,GAAI,KAAK,iBAAiBA,EAAO,kBACtC,OAAI,KAAK,YAAc,KAAK,WAAa,KAAK,MAAM,YAAc,KAAK,oBAAoB,EAClF,KAAK,oBAAoB,EAEzB,KAAK,qBAAqB,CAGvC,KACE,QAAO,KAAK,MAAM,8BAA+B,KAAK,KAAK,CAE/D,CAEA,cAAe,CACb,OAAK,KAAK,MAAM,QACd,KAAK,MAAM,mCAAmC,EAEhD,KAAK,eAAe,GAAG,EAChB,KAAK,MAAQ,KAAK,OAAO,IAAI,CACtC,CAEA,eAAgB,CACd,YAAK,gBAAgB,CACnB,KAAM,EACR,CAAC,EACD,KAAK,eAAe,EACpB,KAAK,OAAS,KAAK,QAAQ,IAAI,EACxB,KAAK,MAAQ,KAAK,OAAO,IAAI,CACtC,CAGA,sBAAuB,CACrB,YAAK,gBAAgB,IAAK,GAAM,CAC9B,WAAY,EACd,CAAC,EACD,KAAK,aACL,KAAK,gBAAgB,CACnB,KAAM,EACR,CAAC,EACM,KAAK,MAAQ,KAAK,+BAC3B,CAEA,iCAAkC,CAChC,OAAI,KAAK,iBAAiBA,EAAO,kBAC/B,KAAK,OAAS,KAAK,QAAQ,IAAI,EAC/B,KAAK,aACL,KAAK,gBAAgB,IAAK,EAAK,EACxB,KAAK,MAAQ,KAAK,OAAO,IAAI,KAEhC,KAAK,WAAa,KAAK,OAAS,KAAK,aACvC,KAAK,aAAa,EAEpB,KAAK,OAAO,KAAK,KAAK,yBAAyB,EACxC,KAAK,YAAY,CACtB,SAAU,EACZ,CAAC,EAEL,CAEA,2BAA4B,CAC1B,OAAI,KAAK,iBAAiBA,EAAO,kBAC/B,KAAK,OAAS,KAAK,QAAQ,IAAI,EAC/B,KAAK,aACD,KAAK,YACP,KAAK,gBAAgB,IAAK,EAAK,EAC/B,KAAK,aAAa,GAEpB,KAAK,gBAAgB,IAAK,EAAK,EACxB,KAAK,MAAQ,KAAK,OAAO,IAAI,IAEpC,KAAK,gBAAgB,IAAK,EAAK,GAC3B,KAAK,WAAa,KAAK,OAAS,KAAK,aACvC,KAAK,aAAa,EAEpB,KAAK,OAAO,KAAK,KAAK,yBAAyB,EACxC,KAAK,YAAY,CACtB,SAAU,EACZ,CAAC,EAEL,CAGA,qBAAsB,CACpB,YAAK,gBAAgB,IAAK,GAAM,CAC9B,WAAY,EACd,CAAC,EACD,KAAK,aACL,KAAK,gBAAgB,CACnB,KAAM,EACR,CAAC,EACM,KAAK,MAAQ,KAAK,6BAC3B,CAEA,+BAAgC,CAC9B,OAAI,KAAK,iBAAiBA,EAAO,iBAC/B,KAAK,OAAS,KAAK,QAAQ,IAAI,EAC/B,KAAK,aACL,KAAK,gBAAgB,IAAK,EAAK,EACxB,KAAK,MAAQ,KAAK,OAAO,IAAI,KAEhC,KAAK,WAAa,KAAK,OAAS,KAAK,aACvC,KAAK,aAAa,EAEhB,CAAC,KAAK,WAAa,KAAK,iBAAiB,GAC3C,KAAK,OAAO,KAAK,KAAK,gCAAgC,EAC/C,KAAK,YAAY,CACtB,QAAS,GACT,WAAY,EACd,CAAC,IAED,KAAK,gBAAgB,IAAK,EAAI,EAC9B,KAAK,OAAO,KAAK,KAAK,yBAAyB,EACxC,KAAK,YAAY,CACtB,QAAS,EACX,CAAC,GAGP,CAEA,yBAA0B,CACxB,OAAI,KAAK,iBAAiBA,EAAO,iBAC/B,KAAK,OAAS,KAAK,QAAQ,IAAI,EAC/B,KAAK,aACD,KAAK,YACP,KAAK,gBAAgB,IAAK,EAAK,EAC/B,KAAK,aAAa,GAEpB,KAAK,gBAAgB,IAAK,EAAK,EACxB,KAAK,MAAQ,KAAK,OAAO,IAAI,IAEpC,KAAK,gBAAgB,IAAK,EAAK,GAC3B,KAAK,WAAa,KAAK,OAAS,KAAK,aACvC,KAAK,aAAa,EAEhB,CAAC,KAAK,WAAa,KAAK,iBAAiB,GAC3C,KAAK,OAAO,KAAK,KAAK,gCAAgC,EAC/C,KAAK,YAAY,CACtB,QAAS,GACT,WAAY,EACd,CAAC,IAED,KAAK,gBAAgB,IAAK,EAAI,EAC9B,KAAK,OAAO,KAAK,KAAK,yBAAyB,EACxC,KAAK,YAAY,CACtB,QAAS,EACX,CAAC,GAGP,CAEA,kCAAmC,CACjC,YAAK,gBAAgB,IAAK,EAAK,EAC/B,KAAK,OAAO,KAAK,KAAK,uBAAuB,EACtC,KAAK,YAAY,CACtB,QAAS,EACX,CAAC,CACH,CAEA,2BAA4B,CAC1B,OAAI,KAAK,WAAa,KAAK,OAAS,KAAK,aACvC,KAAK,aAAa,EAEpB,KAAK,gBAAgB,IAAK,EAAI,EAC9B,KAAK,OAAO,KAAK,KAAK,uBAAuB,EACtC,KAAK,YAAY,CACtB,QAAS,EACX,CAAC,CACH,CAGA,uBAAwB,CACtB,IAAIwB,EACJ,OAAAA,EAAa,KAAK,iBAAmB,CAAC,KAAK,YAC3C,KAAK,gBAAgB,CAAC,WAAAA,CAAU,CAAC,EAC1B,KAAK,MAAQ,KAAK,gCAC3B,CAEA,kCAAmC,CACjC,OAAO,KAAK,2BAA2B,EAAI,CAC7C,CAEA,2BAA2BN,EAAQ,GAAO,CACxC,MAAI,CAACA,GAAS,KAAK,iBAAiBlB,EAAO,kBACzC,KAAK,OAAS,KAAK,QAAQ,IAAI,EACxB,KAAK,MAAQ,KAAK,OAAO,IAAI,IAEpC,KAAK,aAAa,EAClB,KAAK,gBAAgB,IAAK,GAAM,CAC9B,YAAa,EACf,CAAC,EACD,KAAK,OAAO,KAAK,KAAK,0BAA0B,EACzC,KAAK,YAAY,CACtB,SAAU,EACZ,CAAC,EAEL,CAGA,sBAAuB,CACrB,YAAK,gBAAgB,EACd,KAAK,MAAQ,KAAK,8BAC3B,CAEA,gCAAiC,CAC/B,OAAO,KAAK,yBAAyB,EAAI,CAC3C,CAEA,yBAAyBkB,EAAQ,GAAO,CACtC,MAAI,CAACA,GAAS,KAAK,iBAAiBlB,EAAO,iBACzC,KAAK,OAAS,KAAK,QAAQ,IAAI,EACxB,KAAK,MAAQ,KAAK,OAAO,IAAI,IAEpC,KAAK,aAAa,EACd,KAAK,iBAAiB,GACxB,KAAK,OAAO,KAAK,KAAK,iCAAiC,EAChD,KAAK,YAAY,CACtB,QAAS,GACT,WAAY,EACd,CAAC,IAED,KAAK,gBAAgB,IAAK,GAAM,CAC9B,YAAa,EACf,CAAC,EACD,KAAK,OAAO,KAAK,KAAK,0BAA0B,EACzC,KAAK,YAAY,CACtB,QAAS,EACX,CAAC,GAGP,CAEA,mCAAoC,CAClC,YAAK,gBAAgB,IAAK,EAAK,EAC/B,KAAK,OAAO,KAAK,KAAK,wBAAwB,EACvC,KAAK,YAAY,CACtB,QAAS,EACX,CAAC,CACH,CAEA,4BAA6B,CAC3B,YAAK,aAAa,EAClB,KAAK,gBAAgB,IAAK,GAAM,CAC9B,YAAa,EACf,CAAC,EACD,KAAK,OAAO,KAAK,KAAK,wBAAwB,EACvC,KAAK,YAAY,CACtB,QAAS,EACX,CAAC,CACH,CAGA,sBAAuB,CACrB,IAAIY,EACJ,MAAI,EAAE,KAAK,iBAAiBZ,EAAO,qBAAuB,KAAK,OAAO,SAAW,EACxE,IAETY,EAAQ,KAAK,OAAO,CAAC,EACdA,aAAiBZ,EAAO,aAAgBY,EAAM,QAAU,MAAUA,EAAM,KAAO,MAASA,EAAM,UAAYA,EAAM,QAAU,GACnI,CAEA,sBAAuB,CACrB,OAAO,KAAK,iBAAiBZ,EAAO,oBAAsB,KAAK,OAAO,CAAC,YAAaA,EAAO,gBAC7F,CAEA,qBAAsB,CACpB,OAAO,KAAK,iBAAiBA,EAAO,mBAAqB,KAAK,OAAO,CAAC,YAAaA,EAAO,eAC5F,CAEA,kBAAmB,CACjB,IAAIyB,EACJ,OAAAA,EAAS,EACL,KAAK,iBAAiBzB,EAAO,WAAc,KAAK,MAAM,QAAU,OAC9D,KAAK,iBAAmB,OAC1B,KAAK,gBAAkB,KAAK,eAAe,KAAK,MAAM,MAAM,GAE9DyB,GAAU,KAAK,gBAAgB,QAE5B,KAAK,MAAM,KAAO,OAAU,KAAK,iBAAiBzB,EAAO,aAAe,KAAK,iBAAiBA,EAAO,wBACpG,KAAK,cAAgB,OACvB,KAAK,aAAe,KAAK,YAAY,KAAK,MAAM,GAAG,GAErDyB,GAAU,KAAK,aAAa,QAE1B,KAAK,iBAAiBzB,EAAO,cAC3B,KAAK,UAAY,OACnB,KAAK,SAAW,KAAK,eAAe,KAAK,MAAM,KAAK,GAEtDyB,GAAU,KAAK,SAAS,OAAO,QAE1BA,EAAS,MAAQ,KAAK,iBAAiBzB,EAAO,YAAe,KAAK,iBAAiBA,EAAO,aAAe,CAAC,KAAK,SAAS,OAAS,CAAC,KAAK,SAAS,WAAc,KAAK,qBAAqB,GAAK,KAAK,oBAAoB,EAC/N,CAGA,eAAe0B,EAAW,CACxB,GAAI,KAAK,MAAM,QAAU,KAAM,CAC7B,KAAK,gBAAkB,KACvB,MACF,CACA,OAAI,KAAK,iBAAmB,OAC1B,KAAK,gBAAkB,KAAK,eAAe,KAAK,MAAM,MAAM,GAE1D,KAAK,iBACP,KAAK,gBAAgB,GAAGA,CAAS,GAAG,KAAK,eAAe,GAAI,EAAI,EAE3D,KAAK,gBAAkB,IAChC,CAEA,aAAc,CACZ,IAAIC,EAEJ,GADAA,EAAM,KAAK,MAAM,IACb,KAAK,iBAAiB3B,EAAO,YAAa,CAI5C,GAHI,KAAK,OAAS,OAChB,KAAK,MAAQ,KAAK,oBAAoB,IAEnC,CAAC,KAAK,WAAc2B,GAAO,QAAY,KAAK,QAAU,IAAM,KAAK,MAAM,SAAS,CAAC,GAAO,KAAK,QAAU,IAAM,KAAK,MAAM,SAAS,CAAC,GAAK,CAC1I,KAAK,aAAe,KACpB,MACF,CACI,KAAK,MAAM,SAAS,CAAC,GAAMA,GAAO,OACpCA,EAAM,IACN,KAAK,aAAe,KAExB,UAAY,CAAC,KAAK,WAAcA,GAAO,OAAU,KAAK,MAAM,SAAU,CACpE,KAAK,aAAe,KACpB,MACF,CACA,OAAIA,GAAO,MACT,KAAK,MAAM,sBAAsB,EAE/B,KAAK,cAAgB,OACvB,KAAK,aAAe,KAAK,YAAYA,CAAG,GAE1C,KAAK,gBAAgB,KAAK,aAAc,EAAI,EACrC,KAAK,aAAe,IAC7B,CAEA,gBAAiB,CACf,IAAIC,EAQJ,OAPI,KAAK,UAAY,OACnB,KAAK,SAAW,KAAK,eAAe,KAAK,MAAM,KAAK,GAElD,KAAK,OAAS,OAChB,KAAK,MAAQ,KAAK,oBAAoB,GAExCA,EAAQ,CAAC,KAAK,mBACN,KAAK,MAAO,CAClB,IAAK,IACH,KAAK,oBAAoB,KAAK,SAAS,OAAQA,CAAK,EACpD,MACF,IAAK,IACH,KAAK,oBAAoB,KAAK,SAAS,OAAQA,CAAK,EACpD,MACF,IAAK,IACH,KAAK,aAAa,KAAK,SAAS,MAAM,EACtC,MACF,IAAK,IACH,KAAK,cAAc,KAAK,SAAS,MAAM,EACvC,MACF,QACE,KAAK,YAAY,KAAK,SAAS,OAAQA,CAAK,CAChD,CACA,YAAK,SAAW,KACT,KAAK,MAAQ,IACtB,CAEA,qBAAsB,CACpB,IAAIjB,EAIJ,OAHI,KAAK,UAAY,OACnB,KAAK,SAAW,KAAK,eAAe,KAAK,MAAM,KAAK,GAElD,KAAK,MAAM,QAAU,KAAO,KAAK,UAC5B,IAEL,CAAC,KAAK,MAAM,OAAS,KAAK,MAAM,SAAS,CAAC,GAAK,EAAE,KAAK,qBAAuB,KAAK,SAAS,OAAS,KAAK,SAAS,cAAiB,KAAK,YAAc,KAAK,SAAS,kBAAsB,CAAC,KAAK,YAAc,KAAK,SAAS,mBACvN,GAEL,KAAK,MAAM,QAAUA,EAAM,KAAK,MAAM,MAAOR,EAAQ,KAAK,KAAMQ,CAAG,GAAK,IAAM,CAAC,KAAK,YAAc,CAAC,KAAK,oBAAsB,KAAK,SAAS,YACvI,KAAK,MAAM,OAEf,CAAC,KAAK,MAAM,OAAS,KAAK,MAAM,QAAU,MAAQ,KAAK,SAAS,qBAAuB,EAAE,KAAK,oBAAsB,KAAK,SAAS,WAC9H,IAEF,GACT,CAGA,gBAAgB,CAACkB,EAAOC,CAAK,EAAG,CAC9B,IAAIC,EAEJ,OADAA,EAAU,GAAGF,CAAK,IAAIC,CAAK,GACvBD,IAAU,EACLE,EAEA,KAAK,MAAM,2BAA4BA,CAAO,CAEzD,CAEA,mBAAmBX,EAAQ,CACzB,IAAIY,EAAMjB,EAAGC,EAAKL,EAQlB,IAPKS,GACH,KAAK,MAAM,8BAA8B,GAEvCA,EAAO,CAAC,IAAM,KAAOA,EAAO,MAAM,EAAE,IAAM,MAC5C,KAAK,MAAM,0CAA2CA,CAAM,EAE9DT,EAAMS,EAAO,MAAM,EAAG,EAAE,EACnBL,EAAI,EAAGC,EAAML,EAAI,OAAQI,EAAIC,EAAKD,IACrCiB,EAAOrB,EAAII,CAAC,EACL,KAAOiB,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAQ7B,EAAQ,KAAK,KAAM6B,CAAI,GAAK,GAChI,KAAK,MAAM,sBAAsBA,CAAI,uBAAwBZ,CAAM,EAGvE,OAAOA,CACT,CAEA,mBAAmBE,EAAQ,CACzB,IAAIU,EAAMC,EAAQC,EAAKC,EAOvB,IANKb,GACH,KAAK,MAAM,8BAA8B,EAE3CW,EAAS,CAAC,EACVE,EAAQ,EACRD,EAAM,EAAEZ,EAAO,CAAC,IAAM,KACfY,EAAMZ,EAAO,QAClBU,EAAOV,EAAOY,CAAG,EACZ,KAAOF,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAQ7B,EAAQ,KAAK,wBAA0B6B,CAAI,GAAK,EAClJE,KAEIC,EAAQD,GACVD,EAAO,KAAKX,EAAO,MAAMa,EAAOD,CAAG,CAAC,EAEtCC,EAAQD,EAAMA,EAAM,EACpBD,EAAO,KAAKD,CAAI,GAGpB,OAAIG,EAAQD,GACVD,EAAO,KAAKX,EAAO,MAAMa,EAAOD,CAAG,CAAC,EAE/BD,EAAO,KAAK,EAAE,CACvB,CAEA,YAAYN,EAAK,CACf,IAAIK,EAAMC,EAAQC,EAAKd,EAAQL,EAAGM,EAAGL,EAAKM,EAAQX,EAAKwB,EAAOC,EAAQC,EAItE,GAHKV,GACH,KAAK,MAAM,uBAAuB,EAEhCA,IAAQ,IACV,OAAOA,EAcT,IAZAP,EAAS,KACTgB,EAAST,EACThB,GAAQ,UAAW,CACjB,IAAIA,EAAKE,EACTF,EAAM,KAAK,aACXE,EAAU,CAAC,EACX,IAAKQ,KAAKV,EACHT,EAAQ,KAAKS,EAAKU,CAAC,GACxBR,EAAQ,KAAKQ,CAAC,EAEhB,OAAOR,CACT,GAAG,KAAK,IAAI,EAAG,KAAK,EACfE,EAAI,EAAGC,EAAML,EAAI,OAAQI,EAAIC,EAAKD,IACrCO,EAASX,EAAII,CAAC,EACVY,EAAI,QAAQL,CAAM,IAAM,IAAMA,IAAW,KAAOA,EAAO,OAASK,EAAI,UACtEP,EAAS,KAAK,aAAaE,CAAM,EACjCc,EAAST,EAAI,MAAML,EAAO,MAAM,GAKpC,IAFAW,EAAS,CAAC,EACVE,EAAQD,EAAM,EACPA,EAAME,EAAO,QAClBJ,EAAOI,EAAOF,CAAG,EACZ,KAAOF,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAQ7B,EAAQ,KAAK,wBAA0B6B,CAAI,GAAK,GAAMA,IAAS,KAAOZ,IAAW,IACnLc,KAEIC,EAAQD,GACVD,EAAO,KAAKG,EAAO,MAAMD,EAAOD,CAAG,CAAC,EAEtCC,EAAQD,EAAMA,EAAM,EACpBD,EAAO,KAAKD,CAAI,GAOpB,OAJIG,EAAQD,GACVD,EAAO,KAAKG,EAAO,MAAMD,EAAOD,CAAG,CAAC,EAEtCG,EAAcJ,EAAO,KAAK,EAAE,EACxBb,EACK,GAAGA,CAAM,GAAGiB,CAAW,GAEvB,KAAKA,CAAW,GAE3B,CAEA,eAAeC,EAAQ,CACrB,IAAIN,EAAMjB,EAAGC,EAIb,IAHKsB,GACH,KAAK,MAAM,0BAA0B,EAElCvB,EAAI,EAAGC,EAAMsB,EAAO,OAAQvB,EAAIC,EAAKD,IACxCiB,EAAOM,EAAOvB,CAAC,EACR,KAAOiB,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAQ7B,EAAQ,KAAK,KAAM6B,CAAI,GAAK,GAChI,KAAK,MAAM,sBAAsBA,CAAI,mBAAoBM,CAAM,EAGnE,OAAOA,CACT,CAEA,eAAeC,EAAQ,CACrB,IAAIC,EAAaC,EAAmBC,EAAqBC,EAAkBC,EAAqBC,EAAkBC,EAAad,EAAMe,EAAiBC,EAAwBjC,EAAGkC,EAAOC,EAAeC,EAAenC,EAAKoC,GAAaC,GAAwBC,GAAgBC,GAAgB5C,GAAK6C,GAAMC,GAAaC,GAAoBC,GAAgBC,GAAgBC,GAgC5W,IA9BKtB,GACH,IAAIzC,EAAeyC,EAAQ,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,EAAK,EAGxEM,EAAmB,GACnBE,EAAkB,GAClBK,GAAc,GACdM,GAAqB,GACrBG,GAAqB,GAErBV,EAAgB,GAChBD,EAAgB,GAChBU,GAAiB,GACjBD,GAAiB,GACjBb,EAAc,GACdW,GAAc,IAEVlB,EAAO,QAAQ,KAAK,IAAM,GAAKA,EAAO,QAAQ,KAAK,IAAM,KAC3DM,EAAmB,GACnBE,EAAkB,IAGpBM,GAAyB,GAEzBL,EAAyBT,EAAO,SAAW,IAAM5B,GAAM4B,EAAO,CAAC,EAAGpC,EAAQ,KAAK;AAAA,kBAA6BQ,EAAG,GAAK,GAEpH4C,GAAiB,GAEjBD,GAAiB,GACjBL,EAAQ,EACHA,EAAQlC,EAAI,EAAGC,EAAMuB,EAAO,OAAQxB,EAAIC,EAAKiC,EAAQ,EAAElC,EAC1DiB,EAAOO,EAAOU,CAAK,EAEfA,IAAU,EAER9C,EAAQ,KAAK,oBAAqB6B,CAAI,GAAK,GAAMA,IAAS,KAAOgB,GACnED,EAAkB,GAClBF,EAAmB,IACV1C,EAAQ,KAAK,KAAM6B,CAAI,GAAK,IACrCe,EAAkB,GACdC,IACFH,EAAmB,KAKnB1C,EAAQ,KAAK,SAAU6B,CAAI,GAAK,EAClCe,EAAkB,GACTf,IAAS,KAClBe,EAAkB,GACdC,IACFH,EAAmB,KAEZb,IAAS,KAAOqB,KACzBN,EAAkB,GAClBF,EAAmB,IAInB1C,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,GAAK,IAC9CoB,GAAc,IAEVpB,IAAS;AAAA,GAAS,KAAUA,GAAQA,GAAQ,MAC5CA,IAAS,WAAaA,IAAS,QAAW,QAAUA,GAAQA,GAAQ,UAAc,UAAYA,GAAQA,GAAQ,WAChH6B,GAAqB,GAChB,KAAK,gBACRH,GAAqB,KAGvBA,GAAqB,IAIrB1B,IAAS,KACPiB,IAAU,IACZE,EAAgB,IAEdF,IAAUV,EAAO,OAAS,IAC5BqB,GAAiB,IAEfN,KACFR,EAAc,IAEhBQ,GAAiB,GACjBC,GAAiB,IACRpD,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,GAAK,GACjDiB,IAAU,IACZC,EAAgB,IAEdD,IAAUV,EAAO,OAAS,IAC5BoB,GAAiB,IAEfJ,KACFE,GAAc,IAEhBH,GAAiB,GACjBC,GAAiB,KAEjBD,GAAiB,GACjBC,GAAiB,IAGnBF,GAAyBlD,EAAQ,KAAKC,EAAc4B,CAAI,GAAK,EAC7DgB,EAAyBC,EAAQ,GAAKV,EAAO,SAAWiB,GAAOjB,EAAOU,EAAQ,CAAC,EAAG9C,EAAQ,KAAKC,EAAcoD,EAAI,GAAK,GAGxH,OAAAb,EAAmB,GACnBF,EAAoB,GACpBG,EAAsB,GACtBF,EAAsB,GACtBF,EAAc,IAEVW,GAAiBD,GAAiBU,IAAkBD,MACtDhB,EAAmBF,EAAoB,IAGrCmB,KACFpB,EAAc,IAGZM,IACFH,EAAmBF,EAAoBG,EAAsB,KAI3Da,IAAeC,MACjBf,EAAmBF,EAAoBG,EAAsBJ,EAAc,IAGzEY,KACFT,EAAmBF,EAAoB,IAGrCM,IACFJ,EAAmB,IAGjBE,IACFJ,EAAoB,IAEf,IAAI3C,EAAeyC,EAAQ,GAAOa,GAAaT,EAAkBF,EAAmBG,EAAqBF,EAAqBF,CAAW,CAClJ,CAMA,oBAAqB,CACnB,GAAI,KAAK,UAAY,KAAK,SAAS,QAAQ,QAAQ,IAAM,EACvD,OAAO,KAAK,OAAO,MAAM,SAAU,KAAK,QAAQ,CAEpD,CAEA,kBAAmB,CACjB,OAAO,KAAK,aAAa,CAC3B,CAEA,gBAAgBd,EAAWoC,EAAiBpD,EAAU,CAAC,EAAG,CACxD,IAAIqD,EACJ,OAAAA,EAAO,KAAK,YAAc,CAACD,EAAkBpC,EAAY,IAAMA,EAC/D,KAAK,WAAa,CAAC,CAAChB,EAAQ,WAC5B,KAAK,cAAgB,KAAK,YAAc,CAAC,CAACA,EAAQ,aAClD,KAAK,QAAUqD,EAAK,OACpB,KAAK,WAAa,GACX,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,CAC9C,CAEA,cAAe,CACb,IAAIA,EAAMC,EAAQrD,EAKlB,GAJAqD,GAAUrD,EAAM,KAAK,SAAW,KAAOA,EAAM,GACzC,CAAC,KAAK,aAAe,KAAK,OAASqD,GAAW,KAAK,SAAWA,GAAU,CAAC,KAAK,aAChF,KAAK,iBAAiB,EAEpB,KAAK,OAASA,EAChB,YAAK,WAAa,GAClBD,EAAO,IAAI,MAAMC,EAAS,KAAK,OAAS,CAAC,EAAE,KAAK,GAAG,EACnD,KAAK,OAASA,EACP,KAAK,OAAO,MAAMD,EAAM,KAAK,QAAQ,CAEhD,CAEA,iBAAiBA,EAAM,CACrB,YAAK,WAAa,GAClB,KAAK,YAAc,GACnB,KAAK,MAAQ,EACb,KAAK,OAAS,EACP,KAAK,OAAO,MAAMA,GAAsB,KAAK,gBAAiB,KAAK,QAAQ,CACpF,CAEA,wBAAwBE,EAAc,CACpC,YAAK,OAAO,MAAM,SAASA,CAAY,GAAI,KAAK,QAAQ,EACjD,KAAK,iBAAiB,CAC/B,CAEA,oBAAoBC,EAAaC,EAAa,CAC5C,YAAK,OAAO,MAAM,QAAQD,CAAW,IAAIC,CAAW,GAAI,KAAK,QAAQ,EAC9D,KAAK,iBAAiB,CAC/B,CAEA,oBAAoBC,EAAMxC,EAAQ,GAAM,CACtC,IAAIyC,EAAIC,EAAQtC,EAAM+B,EAAM7B,EAAKnB,EAAGC,EAAKL,EAAK4D,EAAQpC,EAKtD,IAJA,KAAK,gBAAgB,IAAK,EAAI,EAC9BoC,EAAS,GACTD,EAAS,GACTnC,EAAQD,EAAM,EACPA,GAAOkC,EAAK,QAAQ,CAEzB,GADApC,EAAOoC,EAAKlC,CAAG,EACXqC,GACGvC,GAAQ,MAASA,IAAS,OACzBG,EAAQ,IAAMD,GAAO,KAAK,OAAS,KAAK,YAAcN,GAASO,IAAU,GAAKD,IAAQkC,EAAK,OAC7F,KAAK,aAAa,GAElBL,EAAOK,EAAK,MAAMjC,EAAOD,CAAG,EAC5B,KAAK,QAAU6B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,GAEvC5B,EAAQD,WAEDoC,GACT,GAAKtC,GAAQ,MAAS7B,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,EAAI,EAAG,CAKlE,IAJIoC,EAAKjC,CAAK,IAAM;AAAA,GAClB,KAAK,iBAAiB,EAExBxB,EAAMyD,EAAK,MAAMjC,EAAOD,CAAG,EACtBnB,EAAI,EAAGC,EAAML,EAAI,OAAQI,EAAIC,EAAKD,IACrCsD,EAAK1D,EAAII,CAAC,EACNsD,IAAO;AAAA,EACT,KAAK,iBAAiB,EAEtB,KAAK,iBAAiBA,CAAE,EAG5B,KAAK,aAAa,EAClBlC,EAAQD,CACV,OACWF,GAAQ,MAAS7B,EAAQ,KAAK;AAAA,kBAAuB6B,CAAI,GAAK,GAAKA,IAAS,MAAQG,EAAQD,IACvG6B,EAAOK,EAAK,MAAMjC,EAAOD,CAAG,EAC5B,KAAK,QAAU6B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,EACrC5B,EAAQD,GAENF,IAAS,MACX,KAAK,QAAU,EACf,KAAK,OAAO,MAAM,KAAM,KAAK,QAAQ,EACrCG,EAAQD,EAAM,GAEZF,GAAQ,OACVuC,EAASvC,IAAS,IAClBsC,EAASnE,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,GAAK,GAEvDE,GACF,CACA,OAAO,KAAK,gBAAgB,IAAK,EAAK,CACxC,CAEA,oBAAoBkC,EAAMxC,EAAQ,GAAM,CACtC,IAAII,EAAM+B,EAAM7B,EAAKC,EAGrB,IAFA,KAAK,gBAAgB,IAAK,EAAI,EAC9BA,EAAQD,EAAM,EACPA,GAAOkC,EAAK,QACjBpC,EAAOoC,EAAKlC,CAAG,GACVF,GAAQ,MAAS7B,EAAQ,KAAK,4BAA6B6B,CAAI,GAAK,GAAK,EAAG,KAAUA,GAAQA,GAAQ,KAAY,KAAK,gBAAmB,QAAUA,GAAQA,GAAQ,UAAc,UAAYA,GAAQA,GAAQ,cAC7MG,EAAQD,IACV6B,EAAOK,EAAK,MAAMjC,EAAOD,CAAG,EAC5B,KAAK,QAAU6B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,EACrC5B,EAAQD,GAENF,GAAQ,OACV+B,EAAO/B,KAAQ1B,EAAsB,KAAOA,EAAoB0B,CAAI,EAAIA,GAAQ,OAAS,MAAM/B,EAAK,SAASA,EAAK,OAAO+B,CAAI,EAAG,IAAK,CAAC,CAAC,GAAKA,GAAQ,SAAW,MAAM/B,EAAK,SAASA,EAAK,OAAO+B,CAAI,EAAG,IAAK,CAAC,CAAC,GAAK,MAAM/B,EAAK,SAASA,EAAK,OAAO+B,CAAI,EAAG,IAAK,EAAE,CAAC,GACjQ,KAAK,QAAU+B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,EACrC5B,EAAQD,EAAM,IAGdN,GAAU,EAAIM,GAAOA,EAAMkC,EAAK,OAAS,IAAOpC,IAAS,KAAOG,GAASD,IAAQ,KAAK,QAAUA,EAAMC,GAAS,KAAK,aACtH4B,EAAO,GAAGK,EAAK,MAAMjC,EAAOD,CAAG,CAAC,KAC5BC,EAAQD,IACVC,EAAQD,GAEV,KAAK,QAAU6B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,EACrC,KAAK,aAAa,EAClB,KAAK,WAAa,GAClB,KAAK,YAAc,GACfK,EAAKjC,CAAK,IAAM,MAClB4B,EAAO,KACP,KAAK,QAAUA,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,IAGzC7B,IAEF,OAAO,KAAK,gBAAgB,IAAK,EAAK,CACxC,CAEA,aAAakC,EAAM,CACjB,IAAIC,EAAIC,EAAQtC,EAAM+B,EAAM7B,EAAKsC,EAAOzD,EAAGoC,EAAenC,EAAKL,EAAKE,EAAS0D,EAAQpC,EAYrF,IAXAqC,EAAQ,KAAK,sBAAsBJ,CAAI,EACvC,KAAK,gBAAgB,IAAII,CAAK,GAAI,EAAI,EAClCA,EAAM,MAAM,EAAE,IAAM,MACtB,KAAK,WAAa,IAEpB,KAAK,iBAAiB,EACtBrB,EAAgB,GAChBmB,EAAS,GACTC,EAAS,GACTpC,EAAQD,EAAM,EACdrB,EAAU,CAAC,EACJqB,GAAOkC,EAAK,QAAQ,CAEzB,GADApC,EAAOoC,EAAKlC,CAAG,EACXoC,GACF,GAAKtC,GAAQ,MAAS7B,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,EAAI,EAAG,CAMlE,IALI,CAACmB,GAAkBnB,GAAQ,MAASA,IAAS,KAAOoC,EAAKjC,CAAK,IAAM;AAAA,GACtE,KAAK,iBAAiB,EAExBgB,EAAgBnB,IAAS,IACzBrB,EAAMyD,EAAK,MAAMjC,EAAOD,CAAG,EACtBnB,EAAI,EAAGC,EAAML,EAAI,OAAQI,EAAIC,EAAKD,IACrCsD,EAAK1D,EAAII,CAAC,EACNsD,IAAO;AAAA,EACT,KAAK,iBAAiB,EAEtB,KAAK,iBAAiBA,CAAE,EAGxBrC,GAAQ,MACV,KAAK,aAAa,EAEpBG,EAAQD,CACV,OACSqC,EACLvC,IAAS,MACPG,EAAQ,IAAMD,GAAO,KAAK,OAAS,KAAK,WAC1C,KAAK,aAAa,GAElB6B,EAAOK,EAAK,MAAMjC,EAAOD,CAAG,EAC5B,KAAK,QAAU6B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,GAEvC5B,EAAQD,IAEAF,GAAQ,MAAS7B,EAAQ,KAAK;AAAA,kBAAuB6B,CAAI,GAAK,KACxE+B,EAAOK,EAAK,MAAMjC,EAAOD,CAAG,EAC5B,KAAK,QAAU6B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,EACjC/B,GAAQ,MACV,KAAK,iBAAiB,EAExBG,EAAQD,GAENF,GAAQ,OACVsC,EAASnE,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,GAAK,EACrDuC,EAASvC,IAAS,KAEpBnB,EAAQ,KAAKqB,GAAK,CACpB,CACA,OAAOrB,CACT,CAEA,cAAcuD,EAAM,CAClB,IAAIC,EAAIC,EAAQtC,EAAM+B,EAAM7B,EAAKsC,EAAOzD,EAAGC,EAAKL,EAAKE,EAASsB,EAU9D,IATAqC,EAAQ,KAAK,sBAAsBJ,CAAI,EACvC,KAAK,gBAAgB,IAAII,CAAK,GAAI,EAAI,EAClCA,EAAM,MAAM,EAAE,IAAM,MACtB,KAAK,WAAa,IAEpB,KAAK,iBAAiB,EACtBF,EAAS,GACTnC,EAAQD,EAAM,EACdrB,EAAU,CAAC,EACJqB,GAAOkC,EAAK,QAAQ,CAEzB,GADApC,EAAOoC,EAAKlC,CAAG,EACXoC,GACF,GAAKtC,GAAQ,MAAS7B,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,EAAI,EAAG,CAElE,IADArB,EAAMyD,EAAK,MAAMjC,EAAOD,CAAG,EACtBnB,EAAI,EAAGC,EAAML,EAAI,OAAQI,EAAIC,EAAKD,IACrCsD,EAAK1D,EAAII,CAAC,EACNsD,IAAO;AAAA,EACT,KAAK,iBAAiB,EAEtB,KAAK,iBAAiBA,CAAE,EAGxBrC,GAAQ,MACV,KAAK,aAAa,EAEpBG,EAAQD,CACV,OAEKF,GAAQ,MAAS7B,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,GAAK,KAChE+B,EAAOK,EAAK,MAAMjC,EAAOD,CAAG,EAC5B,KAAK,OAAO,MAAM6B,EAAM,KAAK,QAAQ,EACjC/B,GAAQ,MACV,KAAK,iBAAiB,EAExBG,EAAQD,GAGRF,GAAQ,OACVsC,EAASnE,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,GAAK,GAEvDnB,EAAQ,KAAKqB,GAAK,CACpB,CACA,OAAOrB,CACT,CAEA,YAAYuD,EAAMxC,EAAQ,GAAM,CAC9B,IAAIyC,EAAIC,EAAQtC,EAAM+B,EAAM7B,EAAKnB,EAAGC,EAAKL,EAAKE,EAAS0D,EAAQpC,EAC/D,GAAKiC,EAiBL,KAdI,KAAK,eACP,KAAK,WAAa,IAEf,KAAK,aACRL,EAAO,IACP,KAAK,QAAUA,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,GAEvC,KAAK,WAAa,GAClB,KAAK,YAAc,GACnBQ,EAAS,GACTD,EAAS,GACTnC,EAAQD,EAAM,EACdrB,EAAU,CAAC,EACJqB,GAAOkC,EAAK,QAAQ,CAEzB,GADApC,EAAOoC,EAAKlC,CAAG,EACXqC,EACEvC,IAAS,MACPG,EAAQ,IAAMD,GAAO,KAAK,OAAS,KAAK,YAAcN,GACxD,KAAK,aAAa,EAClB,KAAK,WAAa,GAClB,KAAK,YAAc,KAEnBmC,EAAOK,EAAK,MAAMjC,EAAOD,CAAG,EAC5B,KAAK,QAAU6B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,GAEvC5B,EAAQD,WAEDoC,GACT,GAAInE,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,EAAI,EAAG,CAKhD,IAJIoC,EAAKjC,CAAK,IAAM;AAAA,GAClB,KAAK,iBAAiB,EAExBxB,EAAMyD,EAAK,MAAMjC,EAAOD,CAAG,EACtBnB,EAAI,EAAGC,EAAML,EAAI,OAAQI,EAAIC,EAAKD,IACrCsD,EAAK1D,EAAII,CAAC,EACNsD,IAAO;AAAA,EACT,KAAK,iBAAiB,EAEtB,KAAK,iBAAiBA,CAAE,EAG5B,KAAK,aAAa,EAClB,KAAK,WAAa,GAClB,KAAK,YAAc,GACnBlC,EAAQD,CACV,OAEKF,GAAQ,MAAS7B,EAAQ,KAAK;AAAA,kBAAuB6B,CAAI,GAAK,KACjE+B,EAAOK,EAAK,MAAMjC,EAAOD,CAAG,EAC5B,KAAK,QAAU6B,EAAK,OACpB,KAAK,OAAO,MAAMA,EAAM,KAAK,QAAQ,EACrC5B,EAAQD,GAGRF,GAAQ,OACVuC,EAASvC,IAAS,IAClBsC,EAASnE,EAAQ,KAAK;AAAA,kBAAsB6B,CAAI,GAAK,GAEvDnB,EAAQ,KAAKqB,GAAK,CACpB,CACA,OAAOrB,EACT,CAEA,sBAAsBuD,EAAM,CAC1B,IAAIlD,EAAOsD,EAAOzD,EAAG0D,EAAMC,EAC3B,OAAAF,EAAQ,GACRtD,EAAQkD,EAAK,CAAC,EAAGrD,EAAIqD,EAAK,OAAS,EAAGM,EAAcN,EAAKrD,GAAG,EAAG0D,EAAOL,EAAKrD,GAAG,EAC1EZ,EAAQ,KAAK;AAAA,kBAAuBe,CAAK,GAAK,IAChDsD,GAAS,KAAK,aAEZrE,EAAQ,KAAK;AAAA,kBAAsBsE,CAAI,EAAI,EAC7CD,GAAS,KACAJ,EAAK,SAAW,GAAKjE,EAAQ,KAAK;AAAA,kBAAsBuE,CAAW,GAAK,KACjFF,GAAS,KAEJA,CACT,CAEA,cAAe,CACb,IAAIG,EACJ,OAAO,OAAQA,EAAO,KAAK,QAAQ,OAAU,WAAaA,EAAK,MAAM,EAAI,MAC3E,CAKA,MAAMC,EAASC,EAAS,CACtB,IAAIlE,EAAK6C,EACT,MAAIqB,IACFA,GAAWlE,EAAMkE,GAAW,OAAQrB,EAAOqB,EAAQ,cAAgB,KAAOrB,EAAK,KAAgB,SAAW,KAAO7C,EAAMV,EAAK,QAAQ4E,CAAO,GAEvI,IAAIjF,GAAQ,aAAa,GAAGgF,CAAO,GAAIC,EAAU,IAAIA,CAAO,GAAK,EAAG,EAAE,CAC9E,CAEF,CAEA,OAAAzE,EAAe;AAAA,kBAEfC,EAAuB,CACrB,IAAK,IACL,qBAAsB,IACxB,EAEAC,EAAsB,CACpB,KAAM,IACN,OAAQ,IACR,KAAQ,IACR,IAAQ,IACR,KAAQ,IACR,KAAQ,IACR,KAAQ,IACR,KAAQ,IACR,OAAQ,IACR,IAAK,IACL,KAAM,KACN,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,GACZ,EAEAC,EAAOC,EAAQ,UAAU,WAElBA,CAET,GAAG,KAAK,IAAI,EAEZV,EAAiB,KAAqB,CACpC,YAAYgF,EAASC,EAAOC,EAAWC,EAAmBC,EAAoBC,EAAsBC,EAAsBC,EAAc,CACtI,KAAK,OAASP,EACd,KAAK,MAAQC,EACb,KAAK,UAAYC,EACjB,KAAK,iBAAmBC,EACxB,KAAK,kBAAoBC,EACzB,KAAK,oBAAsBC,EAC3B,KAAK,oBAAsBC,EAC3B,KAAK,YAAcC,CACrB,CAEF,CAEF,GAAG,KAAKzF,EAAI,IC9yCZ,IAAA0F,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAWC,EAAQC,EAAOC,EAE9BF,EAAS,KAETC,EAAQ,KAERC,EAAO,KAEN,CAAC,UAAAH,CAAS,EAAI,KAEf,KAAK,gBAAkB,cAA8BA,CAAU,CAAC,EAEhE,KAAK,YAAc,UAAW,CAC5B,IAAII,EAEJ,MAAMC,CAAW,CACf,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAEA,WAAW,CACP,SAAUE,EACV,eAAgBC,EAChB,aAAcC,EACd,QAASC,EACT,KAAMC,CACR,EAAI,CAAC,EAAG,CACR,YAAK,SAAWJ,EAChB,KAAK,eAAiBC,EACtB,KAAK,aAAeC,EACpB,KAAK,QAAUC,EACf,KAAK,KAAOC,EACZ,KAAK,iBAAmB,CAAC,EACzB,KAAK,QAAU,CAAC,EAChB,KAAK,eAAiB,EACf,KAAK,OAAS,IACvB,CAEA,MAAO,CACL,GAAI,KAAK,SAAW,KAClB,YAAK,KAAK,IAAIT,EAAO,iBAAiB,KAAK,QAAQ,CAAC,EAC7C,KAAK,OAAS,GAChB,MAAI,KAAK,OACR,IAAI,gBAAgB,sBAAsB,EAE1C,IAAI,gBAAgB,4BAA4B,CAE1D,CAEA,OAAQ,CACN,GAAI,KAAK,SAAW,KAClB,MAAM,IAAI,gBAAgB,0BAA0B,EAC/C,GAAI,CAAC,KAAK,OACf,YAAK,KAAK,IAAIA,EAAO,cAAc,EAC5B,KAAK,OAAS,EAEzB,CAEA,UAAUU,EAAM,CACd,GAAI,KAAK,SAAW,KAClB,MAAM,IAAI,gBAAgB,0BAA0B,EAC/C,GAAI,KAAK,OACd,MAAM,IAAI,gBAAgB,sBAAsB,EAElD,OAAIA,GAAQ,OACV,KAAK,KAAK,IAAIV,EAAO,mBAAmB,OAAQ,OAAQ,KAAK,eAAgB,KAAK,QAAS,KAAK,IAAI,CAAC,EACrG,KAAK,YAAYU,CAAI,EACrB,KAAK,eAAeA,CAAI,EACxB,KAAK,KAAK,IAAIV,EAAO,iBAAiB,OAAQ,OAAQ,KAAK,YAAY,CAAC,GAE1E,KAAK,iBAAmB,CAAC,EACzB,KAAK,QAAU,CAAC,EACT,KAAK,eAAiB,CAC/B,CAEA,YAAYU,EAAM,CAChB,IAAIC,EAAMC,EAAGC,EAAMC,EAAGC,EAAKC,EAAKC,EAAMC,EAAMC,EAAKC,EAAMC,EAASC,EAAUC,EAC1E,GAAIb,EAAK,aAAa,KAAK,QACzB,OAAQC,EAAO,KAAK,SAASO,EAAOR,EAAK,SAAS,GAAK,KAAOC,EAAKO,CAAI,EAAIP,EAAKO,CAAI,EAAI,KAAK,gBAAgBR,CAAI,EAGjH,GADA,KAAK,QAAQA,EAAK,SAAS,EAAI,KAC3BA,aAAgBT,EAAM,aAAc,CAGtC,IAFAkB,EAAMT,EAAK,MACXW,EAAU,CAAC,EACNT,EAAI,EAAGI,EAAMG,EAAI,OAAQP,EAAII,EAAKJ,IACrCC,EAAOM,EAAIP,CAAC,EACZS,EAAQ,KAAK,KAAK,YAAYR,CAAI,CAAC,EAErC,OAAOQ,CACT,SAAWX,aAAgBT,EAAM,YAAa,CAG5C,IAFAmB,EAAOV,EAAK,MACZY,EAAW,CAAC,EACPR,EAAI,EAAGG,EAAOG,EAAK,OAAQN,EAAIG,EAAMH,IACxC,CAACC,EAAKQ,CAAK,EAAIH,EAAKN,CAAC,EACrB,KAAK,YAAYC,CAAG,EACpBO,EAAS,KAAK,KAAK,YAAYC,CAAK,CAAC,EAEvC,OAAOD,CACT,CAEJ,CAEA,gBAAgBZ,EAAM,CACpB,MAAO,KAAKR,EAAK,SAAS,EAAE,KAAK,eAAgB,IAAK,CAAC,CAAC,EAC1D,CAEA,eAAeQ,EAAMc,EAAQC,EAAO,CAClC,IAAIC,EAAOC,EAAaC,EAAchB,EAAGiB,EAAUhB,EAAMC,EAAGC,EAAKC,EAAKC,EAAME,EAAKC,EAAMG,EAEvF,GADAG,EAAQ,KAAK,QAAQhB,EAAK,SAAS,EAC/BA,EAAK,aAAa,KAAK,iBACzB,OAAO,KAAK,KAAK,IAAIV,EAAO,WAAW0B,CAAK,CAAC,EAI7C,GAFA,KAAK,iBAAiBhB,EAAK,SAAS,EAAI,GACxC,KAAK,iBAAiBc,EAAQC,CAAK,EAC/Bf,aAAgBT,EAAM,WACxB2B,EAAe,KAAK,QAAQ3B,EAAM,WAAYS,EAAK,MAAO,CAAC,GAAM,EAAK,CAAC,EACvEiB,EAAc,KAAK,QAAQ1B,EAAM,WAAYS,EAAK,MAAO,CAAC,GAAO,EAAI,CAAC,EACtEmB,EAAW,CAACnB,EAAK,MAAQkB,EAAclB,EAAK,MAAQiB,CAAW,EAC/D,KAAK,KAAK,IAAI3B,EAAO,YAAY0B,EAAOhB,EAAK,IAAKmB,EAAUnB,EAAK,MAAO,OAAQ,OAAQA,EAAK,KAAK,CAAC,UAC1FA,aAAgBT,EAAM,aAAc,CAI7C,IAHA4B,EAAWnB,EAAK,MAAQ,KAAK,QAAQT,EAAM,aAAcS,EAAK,MAAO,EAAI,EACzE,KAAK,KAAK,IAAIV,EAAO,mBAAmB0B,EAAOhB,EAAK,IAAKmB,EAAU,OAAQ,OAAQnB,EAAK,UAAU,CAAC,EACnGS,EAAMT,EAAK,MACNe,EAAQb,EAAI,EAAGI,EAAMG,EAAI,OAAQP,EAAII,EAAKS,EAAQ,EAAEb,EACvDC,EAAOM,EAAIM,CAAK,EAChB,KAAK,eAAeZ,EAAMH,EAAMe,CAAK,EAEvC,KAAK,KAAK,IAAIzB,EAAO,gBAAgB,CACvC,SAAWU,aAAgBT,EAAM,YAAa,CAI5C,IAHA4B,EAAWnB,EAAK,MAAQ,KAAK,QAAQT,EAAM,YAAaS,EAAK,MAAO,EAAI,EACxE,KAAK,KAAK,IAAIV,EAAO,kBAAkB0B,EAAOhB,EAAK,IAAKmB,EAAU,OAAQ,OAAQnB,EAAK,UAAU,CAAC,EAClGU,EAAOV,EAAK,MACPI,EAAI,EAAGG,EAAOG,EAAK,OAAQN,EAAIG,EAAMH,IACxC,CAACC,EAAKQ,CAAK,EAAIH,EAAKN,CAAC,EACrB,KAAK,eAAeC,EAAKL,EAAM,IAAI,EACnC,KAAK,eAAea,EAAOb,EAAMK,CAAG,EAEtC,KAAK,KAAK,IAAIf,EAAO,eAAe,CACtC,CACA,OAAO,KAAK,gBAAgB,CAEhC,CAEF,CAEA,OAAAG,EAAOC,EAAW,UAAU,WAErBA,CAET,GAAG,KAAK,IAAI,CAEd,GAAG,KAAKP,EAAI,ICxJZ,IAAAiC,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAWC,EACbC,EAAU,CAAC,EAAE,eAEfD,EAAQ,KAEP,CAAC,UAAAD,CAAS,EAAI,KAEf,KAAK,iBAAmB,cAA+BA,CAAU,CAAC,EAElE,KAAK,iBAAmB,UAAW,CACjC,IAAIG,EAEJ,MAAMC,CAAgB,CACpB,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAEA,OAAO,gBAAgBE,EAAWC,EAAS,CACzC,OAAK,KAAK,UAAU,eAAe,yBAAyB,IAC1D,KAAK,UAAU,wBAA0B,CAAC,EAAE,OAAO,KAAK,UAAU,uBAAuB,GAEtF,KAAK,UAAU,eAAe,4BAA4B,IAC7D,KAAK,UAAU,2BAA6B,CAAC,EAAE,OAAO,KAAK,UAAU,0BAA0B,GAEjG,KAAK,UAAU,wBAAwB,KAAKD,CAAS,EAC9C,KAAK,UAAU,2BAA2B,KAAKC,CAAO,CAC/D,CAEA,OAAO,sBAAsBD,EAAWC,EAAS,CAC/C,OAAK,KAAK,UAAU,eAAe,+BAA+B,IAChE,KAAK,UAAU,8BAAgC,CAAC,EAAE,OAAO,KAAK,UAAU,6BAA6B,GAElG,KAAK,UAAU,eAAe,kCAAkC,IACnE,KAAK,UAAU,iCAAmC,CAAC,EAAE,OAAO,KAAK,UAAU,gCAAgC,GAE7G,KAAK,UAAU,8BAA8B,KAAKD,CAAS,EACpD,KAAK,UAAU,iCAAiC,KAAKC,CAAO,CACrE,CAEA,WAAW,CACP,cAAeC,EACf,mBAAoBC,CACtB,EAAI,CAAC,EAAG,CACR,YAAK,cAAgBD,EACrB,KAAK,mBAAqBC,EAC1B,KAAK,oBAAsB,CAAC,EAC5B,KAAK,cAAgB,CAAC,EACf,KAAK,UAAY,IAC1B,CAEA,UAAUC,EAAM,CACd,IAAIC,EACJ,OAAAA,EAAO,KAAK,eAAeD,CAAI,EAC/B,KAAK,UAAUC,CAAI,EACnB,KAAK,oBAAsB,CAAC,EAC5B,KAAK,cAAgB,CAAC,EACf,KAAK,UAAY,IAC1B,CAEA,eAAeD,EAAM,CACnB,IAAIJ,EAAWM,EAAGC,EAAGC,EAAKC,EAAKC,EAAaC,EAC5C,GAAI,KAAK,eAAeP,CAAI,EAC1B,KAAK,UAAY,cACPE,EAAI,KAAK,cAAc,QAAQF,CAAI,KAAO,IAEpD,GADA,KAAK,UAAYE,EACb,KAAK,aAAa,KAAK,oBACzB,OAAO,KAAK,oBAAoB,KAAK,SAAS,OAGhD,KAAK,UAAY,KAAK,cAAc,OACpC,KAAK,cAAc,KAAKF,CAAI,EAa9B,GARAM,EAAc,KACdV,EAAYI,IAAS,KAAO,OAAS,OAAOA,EACxCJ,IAAc,WAChBA,EAAYI,EAAK,cAEdE,EAAI,KAAK,wBAAwB,YAAYN,CAAS,KAAO,KAChEU,EAAc,KAAK,2BAA2BJ,CAAC,GAE7CI,GAAe,MAEjB,IADAD,EAAM,KAAK,8BACNH,EAAIC,EAAI,EAAGC,EAAMC,EAAI,OAAQF,EAAIC,EAAKF,EAAI,EAAEC,EAE/C,GADAI,EAAOF,EAAIH,CAAC,EACNF,aAAgBO,EAGtB,CAAAD,EAAc,KAAK,iCAAiCJ,CAAC,EACrD,OAUJ,OAPII,GAAe,QACZJ,EAAI,KAAK,8BAA8B,YAAY,MAAM,KAAO,GACnEI,EAAc,KAAK,iCAAiCJ,CAAC,GAC3CA,EAAI,KAAK,wBAAwB,YAAY,MAAM,KAAO,KACpEI,EAAc,KAAK,2BAA2BJ,CAAC,IAG/CI,GAAe,KACVA,EAAY,KAAK,KAAMN,CAAI,EAE3B,IAAIR,EAAM,WAAW,KAAM,GAAGQ,CAAI,EAAE,CAE/C,CAEA,iBAAiBQ,EAAKC,EAAOC,EAAQ,KAAK,cAAe,CACvD,IAAIT,EACJ,OAAAA,EAAO,IAAIT,EAAM,WAAWgB,EAAKC,EAAO,KAAM,KAAMC,CAAK,EACrD,KAAK,WAAa,OACpB,KAAK,oBAAoB,KAAK,SAAS,EAAIT,GAEtCA,CACT,CAEA,mBAAmBO,EAAKG,EAAUC,EAAY,CAC5C,IAAIC,EAAYC,EAAMX,EAAGC,EAAKH,EAAMc,EAAWV,EAAKI,EAOpD,IANAA,EAAQ,CAAC,EACTR,EAAO,IAAIT,EAAM,aAAagB,EAAKC,EAAO,KAAM,KAAMG,CAAU,EAC5D,KAAK,WAAa,OACpB,KAAK,oBAAoB,KAAK,SAAS,EAAIX,GAE7CY,EAAa,GACRV,EAAI,EAAGC,EAAMO,EAAS,OAAQR,EAAIC,EAAKD,IAC1CW,EAAOH,EAASR,CAAC,EACjBY,EAAY,KAAK,eAAeD,CAAI,EAC9BC,aAAqBvB,EAAM,YAAcuB,EAAU,QACvDF,EAAa,IAEfJ,EAAM,KAAKM,CAAS,EAEtB,OAAIH,GAAc,OAChBX,EAAK,YAAcI,EAAM,KAAK,qBAAuB,KAAOA,EAAMQ,GAE7DZ,CACT,CAEA,kBAAkBO,EAAKQ,EAASJ,EAAY,CAC1C,IAAIC,EAAYI,EAAUC,EAAYjB,EAAMkB,EAAUC,EAAYf,EAAKI,EACvEA,EAAQ,CAAC,EACTR,EAAO,IAAIT,EAAM,YAAYgB,EAAKC,EAAOG,CAAU,EAC/C,KAAK,YACP,KAAK,oBAAoB,KAAK,SAAS,EAAIX,GAE7CY,EAAa,GACb,IAAKI,KAAYD,EACVvB,EAAQ,KAAKuB,EAASC,CAAQ,IACnCC,EAAaF,EAAQC,CAAQ,EAC7BE,EAAW,KAAK,eAAeF,CAAQ,EACvCG,EAAa,KAAK,eAAeF,CAAU,EACrCC,aAAoB3B,EAAM,YAAc2B,EAAS,QACrDN,EAAa,IAETO,aAAsB5B,EAAM,YAAc4B,EAAW,QACzDP,EAAa,IAEfJ,EAAM,KAAK,CAACU,EAAUC,CAAU,CAAC,GAEnC,OAAKR,IACHX,EAAK,YAAcI,EAAM,KAAK,qBAAuB,KAAOA,EAAMQ,GAE7DZ,CACT,CAEA,eAAeD,EAAM,CACnB,MAAO,EACT,CAEF,CAEA,OAAAL,EAAgB,UAAU,wBAA0B,CAAC,EAErDA,EAAgB,UAAU,2BAA6B,CAAC,EAExDA,EAAgB,UAAU,8BAAgC,CAAC,EAE3DA,EAAgB,UAAU,iCAAmC,CAAC,EAE9DD,EAAOC,EAAgB,UAAU,WAE1BA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,YAAc,cAA0B,KAAK,eAAgB,CAChE,kBAAkBK,EAAM,CACtB,OAAO,KAAK,iBAAiB,yBAA2BA,EAAO,OAAS,OAAQ,CAClF,CAEA,eAAeA,EAAM,CACnB,OAAO,KAAK,iBAAiB,yBAA0B,MAAM,CAC/D,CAEA,iBAAiBA,EAAM,CACrB,IAAIQ,EAAKC,EACT,OAAAD,EAAM,qBAAsBR,EAAO,IAAM,EAAI,MAAQ,OAAQ,GAC7DS,EAAQT,IAASA,EAAO,OAASA,IAAS,IAAQ,OAASA,IAAS,KAAS,QAAUA,EAAK,SAAS,EAC9F,KAAK,iBAAiBQ,EAAKC,CAAK,CACzC,CAEA,iBAAiBT,EAAM,CACrB,OAAO,KAAK,iBAAiB,wBAAyBA,CAAI,CAC5D,CAEA,gBAAgBA,EAAM,CACpB,OAAO,KAAK,mBAAmB,wBAAyBA,CAAI,CAC9D,CAEA,eAAeA,EAAM,CACnB,OAAO,KAAK,iBAAiB,8BAA+BA,EAAK,YAAY,CAAC,CAChF,CAEA,iBAAiBA,EAAM,CACrB,OAAO,KAAK,kBAAkB,wBAAyBA,CAAI,CAC7D,CAEA,oBAAoBA,EAAM,CACxB,MAAM,IAAIX,GAAQ,iBAAiB,gCAAgCW,CAAI,EAAE,CAC3E,CAEA,eAAeA,EAAM,CACnB,IAAIK,EAIJ,OAHIL,GAAQ,OAGPK,EAAM,OAAOL,IAAU,WAAaK,IAAQ,UAAYA,IAAQ,QAIvE,CAEF,EAEA,KAAK,YAAY,gBAAgB,UAAW,KAAK,YAAY,UAAU,iBAAiB,EAExF,KAAK,YAAY,gBAAgB,OAAQ,KAAK,YAAY,UAAU,cAAc,EAElF,KAAK,YAAY,gBAAgB,SAAU,KAAK,YAAY,UAAU,gBAAgB,EAEtF,KAAK,YAAY,gBAAgB,SAAU,KAAK,YAAY,UAAU,gBAAgB,EAEtF,KAAK,YAAY,gBAAgB,MAAO,KAAK,YAAY,UAAU,eAAe,EAElF,KAAK,YAAY,gBAAgB,KAAM,KAAK,YAAY,UAAU,cAAc,EAEhF,KAAK,YAAY,gBAAgB,OAAQ,KAAK,YAAY,UAAU,gBAAgB,EAEpF,KAAK,YAAY,gBAAgB,KAAM,KAAK,YAAY,UAAU,mBAAmB,CAEvF,GAAG,KAAKhB,EAAI,IC5PZ,IAAAgC,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAWC,EAAOC,EACpBC,EAAU,CAAC,EAAE,QAEfF,EAAQ,KAERC,EAAO,KAEN,CAAC,UAAAF,CAAS,EAAI,KAEf,KAAK,cAAgB,cAA4BA,CAAU,CAAC,EAE5D,KAAK,cAAgB,UAAW,CAC9B,IAAII,EAAqBC,EAAoBC,EAAsBC,EAEnE,MAAMC,CAAa,CACjB,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAEA,OAAO,sBAAsBE,EAAKC,EAAQC,EAAQ,CAAC,IAAI,EAAG,CACxD,IAAIC,EAAMC,EAAMC,EAAGC,EAAKC,EAKxB,IAJK,KAAK,UAAU,eAAe,yBAAyB,IAC1D,KAAK,UAAU,wBAA0Bd,EAAK,OAAO,CAAC,EAAG,KAAK,UAAU,uBAAuB,GAEjGc,EAAU,CAAC,EACNF,EAAI,EAAGC,EAAMJ,EAAM,OAAQG,EAAIC,EAAKD,IACvCD,EAAOF,EAAMG,CAAC,EACdE,EAAQ,OAAOJ,EAAO,KAAK,UAAU,yBAAyBC,CAAI,GAAK,KAAOD,EAAKC,CAAI,EAAID,EAAKC,CAAI,EAAI,CAAC,GAAG,KAAK,CAACJ,EAAKC,CAAM,CAAC,CAAC,EAEjI,OAAOM,CACT,CAEA,YAAa,CACX,YAAK,qBAAuB,CAAC,EACtB,KAAK,sBAAwB,CAAC,CACvC,CAEA,iBAAiBC,EAAcC,EAAe,CAC5C,IAAIC,EAAOC,EAAaN,EAAGO,EAAGC,EAAMP,EAAKQ,EAAMC,EAAMC,EAAcC,EAAKC,EACxE,GAAI,CAAAzB,EAAK,SAAS,KAAK,mBAAmB,EAK1C,IAFAkB,EAAc,CAAC,EACfK,EAAe,CAAC,EACZR,EAGF,IAFAE,EAAQ,KAAK,sBAAsB,OACnCO,EAAM,KAAK,sBAAsB,MAAM,EAAE,EAAE,CAAC,EACvCZ,EAAI,EAAGC,EAAMW,EAAI,OAAQZ,EAAIC,EAAKD,IACrC,CAACU,EAAMF,CAAI,EAAII,EAAIZ,CAAC,EAChB,KAAK,sBAAsBK,EAAOK,EAAMF,EAAML,EAAcC,CAAa,IACvEM,EAAK,OAASL,EAChBM,EAAa,KAAK,CAACD,EAAMF,CAAI,CAAC,EAE9BF,EAAYE,CAAI,EAAI,KAAK,oBAAoBE,CAAI,EAAEF,CAAI,OAM7D,KADAK,EAAO,KAAK,oBACPN,EAAI,EAAGE,EAAOI,EAAK,OAAQN,EAAIE,EAAMF,IACxC,CAACG,EAAMF,CAAI,EAAIK,EAAKN,CAAC,EAChBG,EAGHC,EAAa,KAAK,CAACD,EAAMF,CAAI,CAAC,EAF9BF,EAAYE,CAAI,EAAI,KAAK,oBAAoBE,CAAI,EAAEF,CAAI,EAM7D,YAAK,qBAAqB,KAAKF,CAAW,EACnC,KAAK,sBAAsB,KAAKK,CAAY,EACrD,CAEA,iBAAkB,CAChB,GAAI,CAAAvB,EAAK,SAAS,KAAK,mBAAmB,EAG1C,YAAK,qBAAqB,IAAI,EACvB,KAAK,sBAAsB,IAAI,CACxC,CAEA,sBAAsBiB,EAAOK,EAAMF,EAAML,EAAcC,EAAe,CACpE,IAAIU,EAAaC,EAEjB,GADA,CAACA,EAAYD,CAAW,EAAIJ,EAAKL,EAAQ,CAAC,EACtC,OAAOU,GAAe,UACxB,GAAIZ,EAAa,MAAQY,EACvB,eAEOA,IAAe,MACpB,EAAEZ,aAAwBY,GAC5B,OAGJ,GAAI,EAAAD,IAAgB,IAAQV,IAAkB,OAGzC,GAAAU,IAAgB,IAASA,IAAgB,OAASV,IAAkB,MAGzE,IAAI,OAAOU,GAAgB,UACzB,GAAI,EAAEV,aAAyBjB,EAAM,aAAe2B,IAAgBV,EAAc,MAChF,eAEO,OAAOU,GAAgB,UAC5BA,IAAgBV,EAClB,OAGJ,MAAO,GACT,CAEA,QAAQI,EAAMQ,EAAOC,EAAU,CAC7B,IAAIC,EAAOZ,EAAaN,EAAGmB,EAAGlB,EAAKW,EAAKC,EAAMO,EAAMxB,EAAQyB,EAAW1B,EACvE,GAAIa,IAASrB,EAAM,YAAc8B,EAAS,CAAC,EAAG,CAO5C,IANID,IAAU,GACZK,GAAaT,EAAM,KAAK,wBAAwB,EAAE,IAAM,KAAOA,EAAM,CAAC,EAEtES,GAAaR,EAAO,KAAK,wBAAwBG,EAAM,CAAC,CAAC,IAAM,KAAOH,EAAO,CAAC,EAEhFQ,EAAYA,EAAU,QAAQD,EAAO,KAAK,wBAAwB,IAAI,IAAM,KAAOA,EAAO,CAAC,CAAC,EACvFpB,EAAI,EAAGC,EAAMoB,EAAU,OAAQrB,EAAIC,EAAKD,IAE3C,GADA,CAACL,EAAKC,CAAM,EAAIyB,EAAUrB,CAAC,EACvBgB,EAAM,MAAMpB,CAAM,EACpB,OAAOD,EAGXsB,EAAWA,EAAS,CAAC,CACvB,CACAC,EAAQ,GACR,IAAKC,KAAK,KAAK,qBACT,CAAC,GAAEA,CAAC,GAAK,OACXD,EAAQ,IAGZ,GAAI,CAACA,EAAO,CAEV,GADAZ,EAAc,KAAK,qBAAqB,MAAM,EAAE,EAAE,CAAC,EAC/CjB,EAAQ,KAAKiB,EAAaE,CAAI,GAAK,EACrC,OAAOF,EAAYE,CAAI,EAEzB,GAAInB,EAAQ,KAAKiB,EAAa,IAAI,GAAK,EACrC,OAAOA,EAAY,IAAI,CAE3B,CACA,GAAIE,IAASrB,EAAM,WACjB,OAAOI,EAET,GAAIiB,IAASrB,EAAM,aACjB,OAAOK,EAET,GAAIgB,IAASrB,EAAM,YACjB,OAAOG,CAEX,CAEF,CAEA,OAAAC,EAAqB,wBAErBC,EAAuB,wBAEvBF,EAAsB,wBAEtBI,EAAa,UAAU,wBAA0B,CAAC,EAElDA,EAAa,UAAU,oBAAsB,CAAC,EAE9CD,EAAOC,EAAa,UAAU,WAEvBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,SAAW,cAAuB,KAAK,YAAa,CAAC,EAE1D,KAAK,SAAS,sBAAsB,yBAA0B,mFAAoF,YAAY,EAE9J,KAAK,SAAS,sBAAsB,0BAA2B,4KAA6K,eAAe,EAE3P,KAAK,SAAS,sBAAsB,wBAAyB,mIAAoI,cAAc,EAE/M,KAAK,SAAS,sBAAsB,0BAA2B,WAAY,GAAG,EAE9E,KAAK,SAAS,sBAAsB,yBAA0B,0BAA2B,CAAC,IAAK,IAAK,IAAK,EAAE,CAAC,EAE5G,KAAK,SAAS,sBAAsB,8BAA+B,mNAAoN,YAAY,EAEnS,KAAK,SAAS,sBAAsB,0BAA2B,UAAW,GAAG,EAI7E,KAAK,SAAS,sBAAsB,yBAA0B,eAAgB,KAAK,CAErF,GAAG,KAAKV,EAAI,IChMZ,IAAAsC,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAASC,EAAaC,EAAUC,EAAYC,EAEhDA,EAAO,KAEPJ,EAAU,KAEVG,EAAa,KAEbF,EAAc,KAEdC,EAAW,KAEX,KAAK,YAAc,SAASG,EAAUL,EAAQ,QAASM,EAAaH,EAAW,WAAYI,EAAcN,EAAY,YAAaO,EAAWN,EAAS,SAAU,CAC9J,IAAIO,EAAQC,EACZ,OAAAA,EAAa,CAACL,EAASC,EAAYC,EAAaC,CAAQ,EACjDC,GAAU,UAAW,CAC1B,IAAIE,EAEJ,MAAMF,CAAO,CACX,YAAYG,EAAQC,EAAU,CAAC,EAAG,CAChC,IAAIC,EAAGC,EAAKC,EAGZ,IAFAN,EAAW,CAAC,EAAE,UAAU,WAAW,KAAK,KAAME,EAAQC,CAAO,EAC7DG,EAAMN,EAAW,MAAM,CAAC,EACnBI,EAAI,EAAGC,EAAMC,EAAI,OAAQF,EAAIC,EAAKD,IACrCH,EAAYK,EAAIF,CAAC,EACjBH,EAAU,UAAU,WAAW,KAAK,KAAME,CAAO,CAErD,CAEF,CAEA,OAAAT,EAAK,OAAOK,EAAO,UAAW,IAAK,UAAW,CAC5C,IAAIK,EAAGC,EAAKE,EAEZ,IADAA,EAAU,CAAC,EACNH,EAAI,EAAGC,EAAML,EAAW,OAAQI,EAAIC,EAAKD,IAC5CH,EAAYD,EAAWI,CAAC,EACxBG,EAAQ,KAAKN,EAAU,SAAS,EAElC,OAAOM,CACT,GAAG,CAAE,EAEER,CAET,GAAG,KAAK,IAAI,CACd,EAEA,KAAK,OAAS,KAAK,YAAY,CAEjC,GAAG,KAAKX,EAAI,ICjDZ,IAAAoB,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAMC,EACRC,EAAU,CAAC,EAAE,SAEd,CAAC,KAAAF,EAAM,UAAAC,CAAS,EAAI,MAErB,KAAK,YAAc,cAA0BA,CAAU,CACrD,YAAYE,EAAWC,EAAYC,EAAQ,CACzC,MAAM,EACN,KAAK,SAAWF,EAChB,KAAK,UAAYC,EACjB,KAAK,OAASC,CAChB,CAEA,UAAW,CACT,MAAO,2BAA2B,KAAK,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,MAAM;AAAA,aAAgB,KAAK,QAAQ,EAC1H,CAEF,EAOA,KAAK,QAAU,UAAW,CACxB,IAAIC,EAAeC,EAEnB,MAAMC,CAAO,CACX,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAEA,WAAWE,EAAQ,CACjB,YAAK,OAASA,EACd,KAAK,KAAO,EACZ,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,gBAAgB,EACd,KAAK,QAAU,IACxB,CAEA,KAAKC,EAAQ,EAAG,CACd,OAAO,KAAK,OAAO,KAAK,MAAQA,CAAK,CACvC,CAEA,OAAOC,EAAS,EAAG,CACjB,OAAO,KAAK,OAAO,MAAM,KAAK,MAAO,KAAK,MAAQA,CAAM,CAC1D,CAEA,QAAQA,EAAS,EAAG,CAClB,IAAIC,EAAMC,EAEV,IADAA,EAAU,CAAC,EACJF,GACLC,EAAO,KAAK,OAAO,KAAK,KAAK,EAC7B,KAAK,QACDV,EAAQ,KAAK;AAAA,kBAAsBU,CAAI,GAAK,GAAMA,IAAS,MAAQ,KAAK,OAAO,KAAK,KAAK,IAAM;AAAA,GACjG,KAAK,OACL,KAAK,OAAS,GAEd,KAAK,SAEPC,EAAQ,KAAKF,GAAQ,EAEvB,OAAOE,CACT,CAEA,UAAW,CACT,OAAO,IAAIb,EAAK,KAAK,KAAM,KAAK,OAAQ,KAAK,OAAQ,KAAK,KAAK,CACjE,CAEA,iBAAkB,CAChB,IAAIc,EAAWC,EAAOC,EAEtB,GADAD,EAAQT,EAAc,KAAK,KAAK,MAAM,EAClCS,EACF,MAAAD,EAAYC,EAAM,CAAC,EACnBC,EAAY,KAAK,OAAO,OAAS,KAAK,MAASD,EAAM,MAC/C,IAAIjB,GAAQ,YAAYkB,EAAUF,EAAW,oCAAoC,CAE3F,CAEF,CAEA,OAAAR,EAAgB,mHAIhBC,EAAOC,EAAO,UAAU,WAEjBA,CAET,GAAG,KAAK,IAAI,CAEd,GAAG,KAAKV,EAAI,IC7FZ,IAAAmB,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,KAAK,MAAQ,KAAY,CACvB,YAAYC,EAAaC,EAAW,CAClC,KAAK,WAAaD,EAClB,KAAK,SAAWC,CAClB,CAEF,EAEA,KAAK,gBAAkB,UAAW,CAChC,MAAMC,UAAuB,KAAK,KAAM,CACtC,YAAYC,EAAMC,EAAOC,EAAYC,EAAU,CAC7C,MAAMD,EAAYC,CAAQ,EAC1B,KAAK,KAAOH,EACZ,KAAK,MAAQC,CACf,CAEF,CAEA,OAAAF,EAAe,UAAU,GAAK,cAEvBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,oBAAsB,UAAW,CACpC,MAAMK,UAA2B,KAAK,KAAM,CAAC,CAE7C,OAAAA,EAAmB,UAAU,GAAK,mBAE3BA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,kBAAoB,UAAW,CAClC,MAAMC,UAAyB,KAAK,KAAM,CAAC,CAE3C,OAAAA,EAAiB,UAAU,GAAK,iBAEzBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,kBAAoB,UAAW,CAClC,MAAMC,UAAyB,KAAK,KAAM,CACxC,YAAYJ,EAAYC,EAAUI,EAAU,CAC1C,MAAML,EAAYC,CAAQ,EAC1B,KAAK,SAAWI,CAClB,CAEF,CAEA,OAAAD,EAAiB,UAAU,GAAK,iBAEzBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,gBAAkB,UAAW,CAChC,MAAME,UAAuB,KAAK,KAAM,CAAC,CAEzC,OAAAA,EAAe,UAAU,GAAK,eAEvBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,yBAA2B,UAAW,CACzC,MAAMC,UAAgC,KAAK,KAAM,CAAC,CAElD,OAAAA,EAAwB,UAAU,GAAK,yBAEhCA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,wBAA0B,UAAW,CACxC,MAAMC,UAA+B,KAAK,KAAM,CAAC,CAEjD,OAAAA,EAAuB,UAAU,GAAK,sBAE/BA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,eAAiB,UAAW,CAC/B,MAAMC,UAAsB,KAAK,KAAM,CAAC,CAExC,OAAAA,EAAc,UAAU,GAAK,cAEtBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,wBAA0B,UAAW,CACxC,MAAMC,UAA+B,KAAK,KAAM,CAAC,CAEjD,OAAAA,EAAuB,UAAU,GAAK,IAE/BA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,uBAAyB,UAAW,CACvC,MAAMC,UAA8B,KAAK,KAAM,CAAC,CAEhD,OAAAA,EAAsB,UAAU,GAAK,IAE9BA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,sBAAwB,UAAW,CACtC,MAAMC,UAA6B,KAAK,KAAM,CAAC,CAE/C,OAAAA,EAAqB,UAAU,GAAK,IAE7BA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,qBAAuB,UAAW,CACrC,MAAMC,UAA4B,KAAK,KAAM,CAAC,CAE9C,OAAAA,EAAoB,UAAU,GAAK,IAE5BA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,UAAY,UAAW,CAC1B,MAAMC,UAAiB,KAAK,KAAM,CAAC,CAEnC,OAAAA,EAAS,UAAU,GAAK,IAEjBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,YAAc,UAAW,CAC5B,MAAMC,UAAmB,KAAK,KAAM,CAAC,CAErC,OAAAA,EAAW,UAAU,GAAK,IAEnBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,iBAAmB,UAAW,CACjC,MAAMC,UAAwB,KAAK,KAAM,CAAC,CAE1C,OAAAA,EAAgB,UAAU,GAAK,IAExBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,gBAAkB,UAAW,CAChC,MAAMC,UAAuB,KAAK,KAAM,CAAC,CAEzC,OAAAA,EAAe,UAAU,GAAK,IAEvBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,YAAc,UAAW,CAC5B,MAAMC,UAAmB,KAAK,KAAM,CAClC,YAAYnB,EAAOC,EAAYC,EAAU,CACvC,MAAMD,EAAYC,CAAQ,EAC1B,KAAK,MAAQF,CACf,CAEF,CAEA,OAAAmB,EAAW,UAAU,GAAK,UAEnBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,aAAe,UAAW,CAC7B,MAAMC,UAAoB,KAAK,KAAM,CACnC,YAAYpB,EAAOC,EAAYC,EAAU,CACvC,MAAMD,EAAYC,CAAQ,EAC1B,KAAK,MAAQF,CACf,CAEF,CAEA,OAAAoB,EAAY,UAAU,GAAK,WAEpBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,UAAY,UAAW,CAC1B,MAAMC,UAAiB,KAAK,KAAM,CAChC,YAAYrB,EAAOC,EAAYC,EAAU,CACvC,MAAMD,EAAYC,CAAQ,EAC1B,KAAK,MAAQF,CACf,CAEF,CAEA,OAAAqB,EAAS,UAAU,GAAK,QAEjBA,CAET,GAAG,KAAK,IAAI,EAEZ,KAAK,aAAe,UAAW,CAC7B,MAAMC,UAAoB,KAAK,KAAM,CACnC,YAAYtB,EAAOuB,EAAOtB,EAAYC,EAAUsB,EAAO,CACrD,MAAMvB,EAAYC,CAAQ,EAC1B,KAAK,MAAQF,EACb,KAAK,MAAQuB,EACb,KAAK,MAAQC,CACf,CAEF,CAEA,OAAAF,EAAY,UAAU,GAAK,WAEpBA,CAET,GAAG,KAAK,IAAI,CAEd,GAAG,KAAK5B,EAAI,ICpOZ,IAAA+B,GAAAC,EAAAC,GAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAiBC,EAAWC,EAAQC,EACtCC,EAAU,CAAC,EAAE,eACbC,EAAU,CAAC,EAAE,SAEd,CAAC,gBAAAL,CAAe,EAAI,MAErBE,EAAS,KAETC,EAAO,KAKP,KAAK,aAAe,cAA2BH,CAAgB,CAAC,EAKhEC,EAAY,KAAgB,CAC1B,YAAYK,EAAeC,EAAWC,EAAOC,EAAMC,EAASC,EAAO,CACjE,KAAK,aAAeL,EACpB,KAAK,SAAWC,EAChB,KAAK,MAAQC,EACb,KAAK,KAAOC,EACZ,KAAK,OAASC,EACd,KAAK,KAAOC,CACd,CAEF,EAKA,KAAK,SAAW,UAAW,CACzB,IAAIC,EAAMC,EAAWC,EAAMC,EAAcC,EAAqBC,EAE9D,MAAMC,CAAQ,CACZ,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAKA,YAAa,CAEX,YAAK,KAAO,GAEZ,KAAK,WAAa,EAElB,KAAK,OAAS,CAAC,EAEf,KAAK,mBAAmB,EAExB,KAAK,aAAe,EAEpB,KAAK,OAAS,GAEd,KAAK,QAAU,CAAC,EAkBhB,KAAK,iBAAmB,GAKjB,KAAK,qBAAuB,CAAC,CACtC,CAMA,eAAeE,EAAS,CAEtB,QADIC,EAAQC,EAAGC,EACR,KAAK,iBAAiB,GAC3B,KAAK,kBAAkB,EAEzB,GAAI,KAAK,OAAO,SAAW,EAAG,CAC5B,GAAIH,EAAQ,SAAW,EACrB,MAAO,GAET,IAAKE,EAAI,EAAGC,EAAMH,EAAQ,OAAQE,EAAIC,EAAKD,IAEzC,GADAD,EAASD,EAAQE,CAAC,EACd,KAAK,OAAO,CAAC,YAAaD,EAC5B,MAAO,EAGb,CACA,MAAO,EACT,CAKA,YAAa,CACX,KAAO,KAAK,iBAAiB,GAC3B,KAAK,kBAAkB,EAEzB,GAAI,KAAK,OAAO,SAAW,EACzB,OAAO,KAAK,OAAO,CAAC,CAExB,CAKA,WAAY,CACV,KAAO,KAAK,iBAAiB,GAC3B,KAAK,kBAAkB,EAEzB,GAAI,KAAK,OAAO,SAAW,EACzB,YAAK,eACE,KAAK,OAAO,MAAM,CAE7B,CAGA,kBAAmB,CACjB,OAAI,KAAK,KACA,GAEL,KAAK,OAAO,SAAW,IAK3B,KAAK,2BAA2B,EAC5B,KAAK,yBAAyB,IAAM,KAAK,aAI/C,CAEA,mBAAoB,CAClB,IAAIG,EAUJ,GARA,KAAK,mBAAmB,EAExB,KAAK,2BAA2B,EAGhC,KAAK,cAAc,KAAK,MAAM,EAE9BA,EAAO,KAAK,KAAK,EACbA,IAAS,KAEX,OAAO,KAAK,iBAAiB,EAE/B,GAAIA,IAAS,KAAO,KAAK,gBAAgB,EAEvC,OAAO,KAAK,gBAAgB,EAE9B,GAAIA,IAAS,KAAO,KAAK,qBAAqB,EAE5C,OAAO,KAAK,qBAAqB,EAEnC,GAAIA,IAAS,KAAO,KAAK,mBAAmB,EAE1C,OAAO,KAAK,mBAAmB,EAEjC,GAAIA,IAAS,IAIX,OAAO,KAAK,0BAA0B,EAExC,GAAIA,IAAS,IAEX,OAAO,KAAK,yBAAyB,EAEvC,GAAIA,IAAS,IAEX,OAAO,KAAK,wBAAwB,EAEtC,GAAIA,IAAS,IAEX,OAAO,KAAK,uBAAuB,EAErC,GAAIA,IAAS,IAEX,OAAO,KAAK,iBAAiB,EAE/B,GAAIA,IAAS,KAAO,KAAK,kBAAkB,EAEzC,OAAO,KAAK,kBAAkB,EAEhC,GAAIA,IAAS,KAAO,KAAK,UAAU,EAEjC,OAAO,KAAK,UAAU,EAExB,GAAIA,IAAS,KAAO,KAAK,YAAY,EAEnC,OAAO,KAAK,YAAY,EAE1B,GAAIA,IAAS,IAEX,OAAO,KAAK,YAAY,EAE1B,GAAIA,IAAS,IAEX,OAAO,KAAK,aAAa,EAE3B,GAAIA,IAAS,IAEX,OAAO,KAAK,UAAU,EAExB,GAAIA,IAAS,KAAO,KAAK,aAAe,EAEtC,OAAO,KAAK,cAAc,EAE5B,GAAIA,IAAS,KAAO,KAAK,aAAe,EAEtC,OAAO,KAAK,aAAa,EAE3B,GAAIA,IAAS,IAEX,OAAO,KAAK,aAAa,EAE3B,GAAIA,IAAS,IAEX,OAAO,KAAK,aAAa,EAE3B,GAAI,KAAK,YAAY,EAEnB,OAAO,KAAK,YAAY,EAG1B,MAAM,IAAIzB,EAAQ,aAAa,oCAAqC,KAAM,mBAAmByB,CAAI,+BAAgC,KAAK,SAAS,CAAC,CAClJ,CAMA,0BAA2B,CACzB,IAAIC,EAAKC,EAAOC,EAAkBC,EAClCD,EAAmB,KACnBC,EAAM,KAAK,qBACX,IAAKF,KAASE,EACPvB,EAAQ,KAAKuB,EAAKF,CAAK,IAC5BD,EAAMG,EAAIF,CAAK,GACXC,IAAqB,MAAQF,EAAI,aAAeE,KAClDA,EAAmBF,EAAI,eAG3B,OAAOE,CACT,CAUA,4BAA6B,CAC3B,IAAIF,EAAKC,EAAOE,EAAKC,EACrBD,EAAM,KAAK,qBACXC,EAAU,CAAC,EACX,IAAKH,KAASE,EACZ,GAAKvB,EAAQ,KAAKuB,EAAKF,CAAK,IAC5BD,EAAMG,EAAIF,CAAK,EACX,EAAAD,EAAI,OAAS,KAAK,MAAQ,KAAK,MAAQA,EAAI,OAAS,OAGxD,GAAI,CAACA,EAAI,SACPI,EAAQ,KAAK,OAAO,KAAK,qBAAqBH,CAAK,CAAC,MAEpD,OAAM,IAAI3B,EAAQ,aAAa,8BAA+B0B,EAAI,KAAM,8BAAiC,KAAK,SAAS,CAAC,EAG5H,OAAOI,CACT,CAOA,0BAA2B,CACzB,IAAIC,EAAUC,EAGd,GADAD,EAAW,KAAK,aAAe,GAAK,KAAK,SAAW,KAAK,OACrDA,GAAY,CAAC,KAAK,iBAGpB,MAAM,IAAI,MAAM,eAAe,EAGjC,GAAK,KAAK,iBAKV,YAAK,2BAA2B,EAChCC,EAAe,KAAK,aAAe,KAAK,OAAO,OACxC,KAAK,qBAAqB,KAAK,UAAU,EAAI,IAAI7B,EAAU6B,EAAcD,EAAU,KAAK,MAAO,KAAK,KAAM,KAAK,OAAQ,KAAK,SAAS,CAAC,CAC/I,CAKA,4BAA6B,CAC3B,IAAIL,EACJ,GAAMA,EAAM,KAAK,qBAAqB,KAAK,UAAU,EAGrD,IAAKA,EAAI,SAGP,MAAM,IAAI1B,EAAQ,aAAa,8BAA+B0B,EAAI,KAAM,8BAAiC,KAAK,SAAS,CAAC,EAFxH,OAAO,OAAO,KAAK,qBAAqB,KAAK,UAAU,EAI3D,CAWA,cAAcO,EAAQ,CACpB,IAAIC,EAAMJ,EAGV,GAAI,KAAK,aAAe,EAKxB,KAFAA,EAAU,CAAC,EAEJ,KAAK,OAASG,GACnBC,EAAO,KAAK,SAAS,EACrB,KAAK,OAAS,KAAK,QAAQ,IAAI,EAC/BJ,EAAQ,KAAK,KAAK,OAAO,KAAK,IAAI1B,EAAO,cAAc8B,EAAMA,CAAI,CAAC,CAAC,EAErE,OAAOJ,EACT,CAKA,WAAWG,EAAQ,CACjB,OAAMA,EAAS,KAAK,QAGpB,KAAK,QAAQ,KAAK,KAAK,MAAM,EAC7B,KAAK,OAASA,EACP,IAJE,EAKX,CAGA,oBAAqB,CACnB,IAAIC,EACJ,OAAAA,EAAO,KAAK,SAAS,EACd,KAAK,OAAO,KAAK,IAAI9B,EAAO,iBAAiB8B,EAAMA,EAAM,KAAK,QAAQ,CAAC,CAChF,CAEA,kBAAmB,CACjB,IAAIA,EAEJ,YAAK,cAAc,EAAE,EAErB,KAAK,2BAA2B,EAChC,KAAK,0BAA4B,GACjC,KAAK,qBAAuB,CAAC,EAC7BA,EAAO,KAAK,SAAS,EACrB,KAAK,OAAO,KAAK,IAAI9B,EAAO,eAAe8B,EAAMA,CAAI,CAAC,EAE/C,KAAK,KAAO,EACrB,CAEA,iBAAkB,CAEhB,YAAK,cAAc,EAAE,EAErB,KAAK,2BAA2B,EAChC,KAAK,iBAAmB,GAEjB,KAAK,OAAO,KAAK,KAAK,eAAe,CAAC,CAC/C,CAEA,sBAAuB,CACrB,OAAO,KAAK,yBAAyB9B,EAAO,kBAAkB,CAChE,CAEA,oBAAqB,CACnB,OAAO,KAAK,yBAAyBA,EAAO,gBAAgB,CAC9D,CAEA,yBAAyB+B,EAAY,CACnC,IAAIC,EAEJ,YAAK,cAAc,EAAE,EAGrB,KAAK,2BAA2B,EAChC,KAAK,iBAAmB,GAExBA,EAAa,KAAK,SAAS,EAC3B,KAAK,QAAQ,CAAC,EACP,KAAK,OAAO,KAAK,IAAID,EAAWC,EAAY,KAAK,SAAS,CAAC,CAAC,CACrE,CAEA,2BAA4B,CAC1B,OAAO,KAAK,4BAA4BhC,EAAO,sBAAsB,CACvE,CAEA,0BAA2B,CACzB,OAAO,KAAK,4BAA4BA,EAAO,qBAAqB,CACtE,CAEA,4BAA4B+B,EAAY,CACtC,IAAIC,EAEJ,YAAK,yBAAyB,EAE9B,KAAK,aAEL,KAAK,iBAAmB,GAExBA,EAAa,KAAK,SAAS,EAC3B,KAAK,QAAQ,EACN,KAAK,OAAO,KAAK,IAAID,EAAWC,EAAY,KAAK,SAAS,CAAC,CAAC,CACrE,CAEA,yBAA0B,CACxB,OAAO,KAAK,0BAA0BhC,EAAO,oBAAoB,CACnE,CAEA,wBAAyB,CACvB,OAAO,KAAK,0BAA0BA,EAAO,mBAAmB,CAClE,CAEA,0BAA0B+B,EAAY,CACpC,IAAIC,EAEJ,YAAK,2BAA2B,EAEhC,KAAK,aAEL,KAAK,iBAAmB,GAExBA,EAAa,KAAK,SAAS,EAC3B,KAAK,QAAQ,EACN,KAAK,OAAO,KAAK,IAAID,EAAWC,EAAY,KAAK,SAAS,CAAC,CAAC,CACrE,CAEA,kBAAmB,CACjB,IAAIA,EAEJ,YAAK,iBAAmB,GAExB,KAAK,2BAA2B,EAEhCA,EAAa,KAAK,SAAS,EAC3B,KAAK,QAAQ,EACN,KAAK,OAAO,KAAK,IAAIhC,EAAO,eAAegC,EAAY,KAAK,SAAS,CAAC,CAAC,CAChF,CAEA,mBAAoB,CAClB,IAAIF,EAAME,EAEV,GAAI,KAAK,aAAe,EAAG,CAEzB,GAAI,CAAC,KAAK,iBACR,MAAM,IAAIpC,EAAQ,aAAa,KAAM,KAAM,wCAAyC,KAAK,SAAS,CAAC,EAGjG,KAAK,WAAW,KAAK,MAAM,IAC7BkC,EAAO,KAAK,SAAS,EACrB,KAAK,OAAO,KAAK,IAAI9B,EAAO,wBAAwB8B,EAAMA,CAAI,CAAC,EAEnE,CAKA,YAAK,iBAAmB,GAExB,KAAK,2BAA2B,EAEhCE,EAAa,KAAK,SAAS,EAC3B,KAAK,QAAQ,EACN,KAAK,OAAO,KAAK,IAAIhC,EAAO,gBAAgBgC,EAAY,KAAK,SAAS,CAAC,CAAC,CACjF,CAEA,WAAY,CACV,IAAIF,EAAME,EAEV,GAAI,KAAK,aAAe,EAAG,CAEzB,GAAI,CAAC,KAAK,iBACR,MAAM,IAAIpC,EAAQ,aAAa,KAAM,KAAM,oCAAqC,KAAK,SAAS,CAAC,EAG7F,KAAK,WAAW,KAAK,MAAM,IAC7BkC,EAAO,KAAK,SAAS,EACrB,KAAK,OAAO,KAAK,IAAI9B,EAAO,uBAAuB8B,EAAMA,CAAI,CAAC,EAElE,CAEA,YAAK,iBAAmB,CAAC,KAAK,WAE9B,KAAK,2BAA2B,EAEhCE,EAAa,KAAK,SAAS,EAC3B,KAAK,QAAQ,EACN,KAAK,OAAO,KAAK,IAAIhC,EAAO,SAASgC,EAAY,KAAK,SAAS,CAAC,CAAC,CAC1E,CAEA,aAAc,CACZ,IAAIV,EAAKQ,EAAME,EAEf,GAAIV,EAAM,KAAK,qBAAqB,KAAK,UAAU,EAEjD,OAAO,KAAK,qBAAqB,KAAK,UAAU,EAChD,KAAK,OAAO,OAAOA,EAAI,aAAe,KAAK,aAAc,EAAG,IAAItB,EAAO,SAASsB,EAAI,KAAMA,EAAI,IAAI,CAAC,EAG/F,KAAK,aAAe,GAClB,KAAK,WAAWA,EAAI,MAAM,GAC5B,KAAK,OAAO,OAAOA,EAAI,aAAe,KAAK,aAAc,EAAG,IAAItB,EAAO,uBAAuBsB,EAAI,KAAMA,EAAI,IAAI,CAAC,EAIrH,KAAK,iBAAmB,OACnB,CAIL,GAAI,KAAK,aAAe,EAAG,CAGzB,GAAI,CAAC,KAAK,iBACR,MAAM,IAAI1B,EAAQ,aAAa,KAAM,KAAM,sCAAuC,KAAK,SAAS,CAAC,EAK/F,KAAK,WAAW,KAAK,MAAM,IAC7BkC,EAAO,KAAK,SAAS,EACrB,KAAK,OAAO,KAAK,IAAI9B,EAAO,uBAAuB8B,EAAMA,CAAI,CAAC,EAElE,CAEA,KAAK,iBAAmB,CAAC,KAAK,WAE9B,KAAK,2BAA2B,CAClC,CAEA,OAAAE,EAAa,KAAK,SAAS,EAC3B,KAAK,QAAQ,EACN,KAAK,OAAO,KAAK,IAAIhC,EAAO,WAAWgC,EAAY,KAAK,SAAS,CAAC,CAAC,CAC5E,CAEA,aAAc,CAEZ,YAAK,yBAAyB,EAE9B,KAAK,iBAAmB,GAEjB,KAAK,OAAO,KAAK,KAAK,YAAYhC,EAAO,UAAU,CAAC,CAC7D,CAEA,cAAe,CAEb,YAAK,yBAAyB,EAE9B,KAAK,iBAAmB,GAEjB,KAAK,OAAO,KAAK,KAAK,YAAYA,EAAO,WAAW,CAAC,CAC9D,CAEA,WAAY,CAEV,YAAK,yBAAyB,EAE9B,KAAK,iBAAmB,GAEjB,KAAK,OAAO,KAAK,KAAK,SAAS,CAAC,CACzC,CAEA,eAAgB,CACd,OAAO,KAAK,mBAAmB,GAAG,CACpC,CAEA,cAAe,CACb,OAAO,KAAK,mBAAmB,GAAG,CACpC,CAEA,mBAAmBiC,EAAO,CAExB,YAAK,iBAAmB,GAExB,KAAK,2BAA2B,EAEzB,KAAK,OAAO,KAAK,KAAK,kBAAkBA,CAAK,CAAC,CACvD,CAEA,cAAe,CACb,OAAO,KAAK,kBAAkB,GAAI,CACpC,CAEA,cAAe,CACb,OAAO,KAAK,kBAAkB,GAAG,CACnC,CAEA,kBAAkBA,EAAO,CAEvB,YAAK,yBAAyB,EAE9B,KAAK,iBAAmB,GAEjB,KAAK,OAAO,KAAK,KAAK,iBAAiBA,CAAK,CAAC,CACtD,CAEA,aAAc,CAEZ,YAAK,yBAAyB,EAG9B,KAAK,iBAAmB,GAEjB,KAAK,OAAO,KAAK,KAAK,WAAW,CAAC,CAC3C,CAMA,iBAAkB,CAChB,OAAI,KAAK,SAAW,CAKtB,CAKA,sBAAuB,CACrB,IAAIR,EACJ,OAAI,KAAK,SAAW,GAAK,KAAK,OAAO,CAAC,IAAM,QAAUA,EAAM,KAAK,KAAK,CAAC,EAAGtB,EAAQ,KAAKO,EAAOE,EAAO,KAAQa,CAAG,GAAK,EAIvH,CAKA,oBAAqB,CACnB,IAAIA,EACJ,OAAI,KAAK,SAAW,GAAK,KAAK,OAAO,CAAC,IAAM,QAAUA,EAAM,KAAK,KAAK,CAAC,EAAGtB,EAAQ,KAAKO,EAAOE,EAAO,KAAQa,CAAG,GAAK,EAIvH,CAKA,mBAAoB,CAClB,IAAIA,EACJ,OAAOA,EAAM,KAAK,KAAK,CAAC,EAAGtB,EAAQ,KAAKO,EAAOE,EAAO,KAAQa,CAAG,GAAK,CACxE,CAMA,WAAY,CACV,IAAIA,EACJ,OAAI,KAAK,aAAe,EAEf,IAGFA,EAAM,KAAK,KAAK,CAAC,EAAGtB,EAAQ,KAAKO,EAAOE,EAAO,KAAQa,CAAG,GAAK,EACxE,CAMA,aAAc,CACZ,IAAIA,EACJ,OAAI,KAAK,aAAe,EAEf,IAGFA,EAAM,KAAK,KAAK,CAAC,EAAGtB,EAAQ,KAAKO,EAAOE,EAAO,KAAQa,CAAG,GAAK,EACxE,CAeA,aAAc,CACZ,IAAIJ,EAAMI,EACV,OAAAJ,EAAO,KAAK,KAAK,EACVlB,EAAQ,KAAKO,EAAOE,EAAO,yBAA4BS,CAAI,EAAI,IAAOI,EAAM,KAAK,KAAK,CAAC,EAAGtB,EAAQ,KAAKO,EAAOE,EAAO,KAAQa,CAAG,EAAI,IAAOJ,IAAS,KAAQ,KAAK,aAAe,GAAKlB,EAAQ,KAAK,KAAMkB,CAAI,GAAK,GAC1N,CAoBA,oBAAqB,CACnB,IAAIa,EAAOT,EAAKC,EAMhB,IALI,KAAK,QAAU,GAAK,KAAK,KAAK,IAAM,UACtC,KAAK,QAAQ,EAEfQ,EAAQ,GACRR,EAAU,CAAC,EACJ,CAACQ,GAAO,CACb,KAAO,KAAK,KAAK,IAAM,KACrB,KAAK,QAAQ,EAEf,GAAI,KAAK,KAAK,IAAM,IAClB,KAAOT,EAAM,KAAK,KAAK,EAAGtB,EAAQ,KAAKO,EAAO,KAAQe,CAAG,EAAI,GAC3D,KAAK,QAAQ,EAGb,KAAK,gBAAgB,EACnB,KAAK,aAAe,EACtBC,EAAQ,KAAK,KAAK,iBAAmB,EAAI,EAEzCA,EAAQ,KAAK,MAAM,EAGrBA,EAAQ,KAAKQ,EAAQ,EAAI,CAE7B,CACA,OAAOR,CACT,CAKA,gBAAiB,CACf,IAAIS,EAAUC,EAAMX,EAAKO,EAAYK,EAKrC,GAJAL,EAAa,KAAK,SAAS,EAC3B,KAAK,QAAQ,EACbI,EAAO,KAAK,oBAAoBJ,CAAU,EAC1CK,EAAQ,KACJD,IAAS,OACXC,EAAQ,KAAK,0BAA0BL,CAAU,EACjDG,EAAW,KAAK,SAAS,UAChBC,IAAS,MAClBC,EAAQ,KAAK,yBAAyBL,CAAU,EAChDG,EAAW,KAAK,SAAS,MAGzB,KADAA,EAAW,KAAK,SAAS,EAClBV,EAAM,KAAK,KAAK,EAAGtB,EAAQ,KAAKO,EAAO,KAAQe,CAAG,EAAI,GAC3D,KAAK,QAAQ,EAGjB,YAAK,4BAA4BO,CAAU,EACpC,IAAIhC,EAAO,eAAeoC,EAAMC,EAAOL,EAAYG,CAAQ,CACpE,CAKA,oBAAoBH,EAAY,CAC9B,IAAIX,EAAMiB,EAAQD,EAGlB,IAFAC,EAAS,EACTjB,EAAO,KAAK,KAAKiB,CAAM,EACf,KAAOjB,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAQlB,EAAQ,KAAK,KAAMkB,CAAI,GAAK,GACjIiB,IACAjB,EAAO,KAAK,KAAKiB,CAAM,EAEzB,GAAIA,IAAW,EACb,MAAM,IAAI1C,EAAQ,aAAa,6BAA8BoC,EAAY,wDAAwDX,CAAI,GAAI,KAAK,SAAS,CAAC,EAK1J,GAHAgB,EAAQ,KAAK,OAAOC,CAAM,EAC1B,KAAK,QAAQA,CAAM,EACnBjB,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKO,EAAO,MAASW,CAAI,EAAI,EACvC,MAAM,IAAIzB,EAAQ,aAAa,6BAA8BoC,EAAY,wDAAwDX,CAAI,GAAI,KAAK,SAAS,CAAC,EAE1J,OAAOgB,CACT,CAKA,0BAA0BL,EAAY,CAEpC,QADIO,EAAOC,EAAOf,EACX,KAAK,KAAK,IAAM,KACrB,KAAK,QAAQ,EAGf,GADAc,EAAQ,KAAK,2BAA2BP,CAAU,EAC9C,KAAK,KAAK,IAAM,IAClB,MAAM,IAAIpC,EAAQ,aAAa,6BAA8BoC,EAAY,qCAAqC,KAAK,KAAK,CAAC,GAAI,KAAK,SAAS,CAAC,EAI9I,GAFA,KAAK,QAAQ,EACbQ,EAAQ,KAAK,2BAA2BR,CAAU,EAC9CP,EAAM,KAAK,KAAK,EAAGtB,EAAQ,KAAKO,EAAO,MAASe,CAAG,EAAI,EACzD,MAAM,IAAI7B,EAAQ,aAAa,6BAA8BoC,EAAY,qCAAqC,KAAK,KAAK,CAAC,GAAI,KAAK,SAAS,CAAC,EAE9I,MAAO,CAACO,EAAOC,CAAK,CACtB,CAKA,2BAA2BR,EAAY,CACrC,IAAIX,EAAMiB,EAAQb,EAAKY,EAEvB,GADAhB,EAAO,KAAK,KAAK,EACb,EAAG,KAAOA,GAAQA,GAAQ,KAC5B,MAAM,IAAIzB,EAAQ,aAAa,6BAA8BoC,EAAY,8BAA8BX,CAAI,GAAI,KAAK,SAAS,CAAC,EAGhI,IADAiB,EAAS,EACD,MAAQb,EAAM,KAAK,KAAKa,CAAM,IAAMb,GAAO,KACjDa,IAEF,OAAAD,EAAQ,SAAS,KAAK,OAAOC,CAAM,CAAC,EACpC,KAAK,QAAQA,CAAM,EACZD,CACT,CAKA,yBAAyBL,EAAY,CAEnC,QADIS,EAAQC,EACL,KAAK,KAAK,IAAM,KACrB,KAAK,QAAQ,EAGf,IADAD,EAAS,KAAK,0BAA0BT,CAAU,EAC3C,KAAK,KAAK,IAAM,KACrB,KAAK,QAAQ,EAEf,OAAAU,EAAS,KAAK,0BAA0BV,CAAU,EAC3C,CAACS,EAAQC,CAAM,CACxB,CAKA,0BAA0BV,EAAY,CACpC,IAAIX,EAAMgB,EAGV,GAFAA,EAAQ,KAAK,gBAAgB,YAAaL,CAAU,EACpDX,EAAO,KAAK,KAAK,EACbA,IAAS,IACX,MAAM,IAAIzB,EAAQ,aAAa,6BAA8BoC,EAAY,0BAA0BX,CAAI,GAAI,KAAK,SAAS,CAAC,EAE5H,OAAOgB,CACT,CAKA,0BAA0BL,EAAY,CACpC,IAAIX,EAAMgB,EAGV,GAFAA,EAAQ,KAAK,aAAa,YAAaL,CAAU,EACjDX,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKO,EAAO,MAASW,CAAI,EAAI,EACvC,MAAM,IAAIzB,EAAQ,aAAa,6BAA8BoC,EAAY,0BAA0BX,CAAI,GAAI,KAAK,SAAS,CAAC,EAE5H,OAAOgB,CACT,CAKA,4BAA4BL,EAAY,CAEtC,QADIX,EAAMI,EACH,KAAK,KAAK,IAAM,KACrB,KAAK,QAAQ,EAEf,GAAI,KAAK,KAAK,IAAM,IAClB,KAAOA,EAAM,KAAK,KAAK,EAAGtB,EAAQ,KAAKO,EAAO,KAAQe,CAAG,EAAI,GAC3D,KAAK,QAAQ,EAIjB,GADAJ,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKO,EAAO,KAAQW,CAAI,EAAI,EACtC,MAAM,IAAIzB,EAAQ,aAAa,6BAA8BoC,EAAY,gDAAgDX,CAAI,GAAI,KAAK,SAAS,CAAC,EAElJ,OAAO,KAAK,gBAAgB,CAC9B,CAYA,YAAYU,EAAY,CACtB,IAAIV,EAAMsB,EAAWL,EAAQF,EAAMJ,EAAYK,EAW/C,IAVAL,EAAa,KAAK,SAAS,EAC3BW,EAAY,KAAK,KAAK,EAClBA,IAAc,IAChBP,EAAO,QAEPA,EAAO,SAET,KAAK,QAAQ,EACbE,EAAS,EACTjB,EAAO,KAAK,KAAKiB,CAAM,EACf,KAAOjB,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAQlB,EAAQ,KAAK,KAAMkB,CAAI,GAAK,GACjIiB,IACAjB,EAAO,KAAK,KAAKiB,CAAM,EAEzB,GAAIA,IAAW,EACb,MAAM,IAAI1C,EAAQ,aAAa,qBAAqBwC,CAAI,GAAIJ,EAAY,uDAAuDX,CAAI,IAAK,KAAK,SAAS,CAAC,EAKzJ,GAHAgB,EAAQ,KAAK,OAAOC,CAAM,EAC1B,KAAK,QAAQA,CAAM,EACnBjB,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKO,EAAOE,EAAO,aAAqBS,CAAI,EAAI,EAC1D,MAAM,IAAIzB,EAAQ,aAAa,qBAAqBwC,CAAI,GAAIJ,EAAY,uDAAuDX,CAAI,IAAK,KAAK,SAAS,CAAC,EAEzJ,OAAO,IAAIU,EAAWM,EAAOL,EAAY,KAAK,SAAS,CAAC,CAC1D,CAKA,UAAW,CACT,IAAIX,EAAMoB,EAAQH,EAAQN,EAAYY,EAAQC,EAG9C,GAFAb,EAAa,KAAK,SAAS,EAC3BX,EAAO,KAAK,KAAK,CAAC,EACdA,IAAS,IAAK,CAIhB,GAHAoB,EAAS,KACT,KAAK,QAAQ,CAAC,EACdG,EAAS,KAAK,aAAa,MAAOZ,CAAU,EACxC,KAAK,KAAK,IAAM,IAClB,MAAM,IAAIpC,EAAQ,aAAa,sBAAuBoC,EAAY,0BAA0B,KAAK,KAAK,CAAC,GAAI,KAAK,SAAS,CAAC,EAE5H,KAAK,QAAQ,CACf,SAAW7B,EAAQ,KAAKO,EAAOE,EAAO,KAAQS,CAAI,GAAK,EACrDoB,EAAS,KACTG,EAAS,IACT,KAAK,QAAQ,MACR,CAGL,IAFAN,EAAS,EACTO,EAAa,GACN1C,EAAQ,KAAKO,EAAO,MAASW,CAAI,EAAI,GAAG,CAC7C,GAAIA,IAAS,IAAK,CAChBwB,EAAa,GACb,KACF,CACAP,IACAjB,EAAO,KAAK,KAAKiB,CAAM,CACzB,CACIO,EACFJ,EAAS,KAAK,gBAAgB,MAAOT,CAAU,GAE/CS,EAAS,IACT,KAAK,QAAQ,GAEfG,EAAS,KAAK,aAAa,MAAOZ,CAAU,CAC9C,CAEA,GADAX,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKO,EAAO,MAASW,CAAI,EAAI,EACvC,MAAM,IAAIzB,EAAQ,aAAa,uBAAwBoC,EAAY,0BAA0BX,CAAI,GAAI,KAAK,SAAS,CAAC,EAEtH,OAAO,IAAIrB,EAAO,SAAS,CAACyC,EAAQG,CAAM,EAAGZ,EAAY,KAAK,SAAS,CAAC,CAC1E,CAKA,kBAAkBC,EAAO,CACvB,IAAIa,EAAQC,EAAUC,EAAQb,EAAUc,EAAQC,EAAWC,EAAQC,EAAmBd,EAAQe,EAAYC,EAAYC,EAAY9B,EAAK+B,GAAMC,GAAMzB,GAsBnJ,IArBAiB,EAAShB,IAAU,IACnBe,EAAS,CAAC,EACVhB,GAAa,KAAK,SAAS,EAE3B,KAAK,QAAQ,EACb,CAACe,EAAUG,CAAS,EAAI,KAAK,6BAA6BlB,EAAU,EACpE,KAAK,+BAA+BA,EAAU,EAE9CuB,EAAa,KAAK,OAAS,EACvBA,EAAa,IACfA,EAAa,GAEXL,GAAa,MACf,CAACJ,EAAQQ,EAAYnB,CAAQ,EAAI,KAAK,8BAA8B,EACpEgB,EAAS,KAAK,IAAII,EAAYD,CAAU,IAExCH,EAASI,EAAaL,EAAY,EAClC,CAACJ,EAAQX,CAAQ,EAAI,KAAK,yBAAyBgB,CAAM,GAE3DE,EAAa,GAEN,KAAK,SAAWF,GAAU,KAAK,KAAK,IAAM,MAAQ,CAIvD,IAHAH,EAASA,EAAO,OAAOF,CAAM,EAC7BM,GAAqB3B,EAAM,KAAK,KAAK,EAAGtB,EAAQ,KAAK,KAAOsB,CAAG,EAAI,GACnEa,EAAS,EACFkB,GAAO,KAAK,KAAKlB,CAAM,EAAGnC,EAAQ,KAAKO,EAAO,KAAQ8C,EAAI,EAAI,GACnElB,IAMF,GAJAU,EAAO,KAAK,KAAK,OAAOV,CAAM,CAAC,EAC/B,KAAK,QAAQA,CAAM,EACnBe,EAAa,KAAK,gBAAgB,EAClC,CAACP,EAAQX,CAAQ,EAAI,KAAK,yBAAyBgB,CAAM,EACrD,KAAK,SAAWA,GAAU,KAAK,KAAK,IAAM,KAGxCF,GAAUI,IAAe;AAAA,GAAQD,IAAsBK,GAAO,KAAK,KAAK,EAAGtD,EAAQ,KAAK,KAAOsD,EAAI,EAAI,GACrGxD,EAAK,SAAS6C,CAAM,GACtBE,EAAO,KAAK,GAAG,EAGjBA,EAAO,KAAKK,CAAU,MAYxB,MAEJ,CACA,OAAIN,IAAa,IAEfC,EAAO,KAAKK,CAAU,EAEpBN,IAAa,KACfC,EAASA,EAAO,OAAOF,CAAM,GAGxB,IAAI9C,EAAO,YAAYgD,EAAO,KAAK,EAAE,EAAG,GAAOhB,GAAYG,EAAUF,CAAK,CACnF,CAKA,6BAA6BD,EAAY,CACvC,IAAIX,EAAM0B,EAAUG,EAIpB,GAHAH,EAAW,KACXG,EAAY,KACZ7B,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAK,KAAMkB,CAAI,GAAK,GAI9B,GAHA0B,EAAW1B,IAAS,IACpB,KAAK,QAAQ,EACbA,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKQ,EAAWU,CAAI,GAAK,EAAG,CAEtC,GADA6B,EAAY,SAAS7B,CAAI,EACrB6B,IAAc,EAChB,MAAM,IAAItD,EAAQ,aAAa,gCAAiCoC,EAAY,8DAA+D,KAAK,SAAS,CAAC,EAE5J,KAAK,QAAQ,CACf,UACS7B,EAAQ,KAAKQ,EAAWU,CAAI,GAAK,EAAG,CAE7C,GADA6B,EAAY,SAAS7B,CAAI,EACrB6B,IAAc,EAChB,MAAM,IAAItD,EAAQ,aAAa,gCAAiCoC,EAAY,8DAA+D,KAAK,SAAS,CAAC,EAE5J,KAAK,QAAQ,EACbX,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAK,KAAMkB,CAAI,GAAK,IAC9B0B,EAAW1B,IAAS,IACpB,KAAK,QAAQ,EAEjB,CAEA,GADAA,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKO,EAAO,MAASW,CAAI,EAAI,EACvC,MAAM,IAAIzB,EAAQ,aAAa,gCAAiCoC,EAAY,0DAA0DX,CAAI,GAAI,KAAK,SAAS,CAAC,EAE/J,MAAO,CAAC0B,EAAUG,CAAS,CAC7B,CAKA,+BAA+BlB,EAAY,CAEzC,QADIX,EAAMI,EACH,KAAK,KAAK,IAAM,KACrB,KAAK,QAAQ,EAEf,GAAI,KAAK,KAAK,IAAM,IAClB,KAAOA,EAAM,KAAK,KAAK,EAAGtB,EAAQ,KAAKO,EAAO,KAAQe,CAAG,EAAI,GAC3D,KAAK,QAAQ,EAIjB,GADAJ,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKO,EAAO,KAAQW,CAAI,EAAI,EACtC,MAAM,IAAIzB,EAAQ,aAAa,gCAAiCoC,EAAY,gDAAgDX,CAAI,GAAI,KAAK,SAAS,CAAC,EAErJ,OAAO,KAAK,gBAAgB,CAC9B,CAKA,+BAAgC,CAC9B,IAAI2B,EAAQb,EAAUmB,EAAY7B,EAIlC,IAHAuB,EAAS,CAAC,EACVM,EAAa,EACbnB,EAAW,KAAK,SAAS,EAClBV,EAAM,KAAK,KAAK,EAAGtB,EAAQ,KAAKO,EAAO,IAAKe,CAAG,GAAK,GACrD,KAAK,KAAK,IAAM,KAClBuB,EAAO,KAAK,KAAK,gBAAgB,CAAC,EAClCb,EAAW,KAAK,SAAS,IAEzB,KAAK,QAAQ,EACT,KAAK,OAASmB,IAChBA,EAAa,KAAK,SAIxB,MAAO,CAACN,EAAQM,EAAYnB,CAAQ,CACtC,CAKA,yBAAyBgB,EAAQ,CAC/B,IAAIH,EAAQb,EAAUV,EAGtB,IAFAuB,EAAS,CAAC,EACVb,EAAW,KAAK,SAAS,EAClB,KAAK,OAASgB,GAAU,KAAK,KAAK,IAAM,KAC7C,KAAK,QAAQ,EAEf,KAAO1B,EAAM,KAAK,KAAK,EAAGtB,EAAQ,KAAKO,EAAMe,CAAG,GAAK,GAGnD,IAFAuB,EAAO,KAAK,KAAK,gBAAgB,CAAC,EAClCb,EAAW,KAAK,SAAS,EAClB,KAAK,OAASgB,GAAU,KAAK,KAAK,IAAM,KAC7C,KAAK,QAAQ,EAGjB,MAAO,CAACH,EAAQb,CAAQ,CAC1B,CAUA,iBAAiBF,EAAO,CACtB,IAAIe,EAAQU,EAAQC,EAAO3B,EAO3B,IANA0B,EAASzB,IAAU,IACnBe,EAAS,CAAC,EACVhB,EAAa,KAAK,SAAS,EAC3B2B,EAAQ,KAAK,KAAK,EAClB,KAAK,QAAQ,EACbX,EAASA,EAAO,OAAO,KAAK,4BAA4BU,EAAQ1B,CAAU,CAAC,EACpE,KAAK,KAAK,IAAM2B,GACrBX,EAASA,EAAO,OAAO,KAAK,wBAAwBU,EAAQ1B,CAAU,CAAC,EACvEgB,EAASA,EAAO,OAAO,KAAK,4BAA4BU,EAAQ1B,CAAU,CAAC,EAE7E,YAAK,QAAQ,EACN,IAAIhC,EAAO,YAAYgD,EAAO,KAAK,EAAE,EAAG,GAAOhB,EAAY,KAAK,SAAS,EAAGC,CAAK,CAC1F,CAKA,4BAA4ByB,EAAQ1B,EAAY,CAC9C,IAAIX,EAAM2B,EAAQY,EAAMzC,EAAG0C,EAAGvB,EAAQb,EAAK+B,EAAMC,EAEjD,IADAT,EAAS,CAAC,IACG,CAEX,IADAV,EAAS,EACFb,EAAM,KAAK,KAAKa,CAAM,EAAGnC,EAAQ,KAAKO,EAAOE,EAAO,SAAaa,CAAG,EAAI,GAC7Ea,IAOF,GALIA,IAAW,IACbU,EAAO,KAAK,KAAK,OAAOV,CAAM,CAAC,EAC/B,KAAK,QAAQA,CAAM,GAErBjB,EAAO,KAAK,KAAK,EACb,CAACqC,GAAUrC,IAAS,KAAQ,KAAK,KAAK,CAAC,IAAM,IAC/C2B,EAAO,KAAK,GAAI,EAChB,KAAK,QAAQ,CAAC,UACJU,GAAUrC,IAAS,KAAU,CAACqC,GAAUvD,EAAQ,KAAK,MAAOkB,CAAI,GAAK,EAC/E2B,EAAO,KAAK3B,CAAI,EAChB,KAAK,QAAQ,UACJqC,GAAUrC,IAAS,KAG5B,GAFA,KAAK,QAAQ,EACbA,EAAO,KAAK,KAAK,EACbA,KAAQP,EACVkC,EAAO,KAAKlC,EAAoBO,CAAI,CAAC,EACrC,KAAK,QAAQ,UACJA,KAAQR,EAAc,CAG/B,IAFAyB,EAASzB,EAAaQ,CAAI,EAC1B,KAAK,QAAQ,EACRwC,EAAI1C,EAAI,EAAGqC,EAAOlB,EAAQ,GAAKkB,EAAOrC,EAAIqC,EAAOrC,EAAIqC,EAAMK,EAAI,GAAKL,EAAO,EAAErC,EAAI,EAAEA,EACtF,GAAIsC,EAAO,KAAK,KAAKI,CAAC,EAAG1D,EAAQ,KAAK,GAAGQ,CAAS,eAAgB8C,CAAI,EAAI,EACxE,MAAM,IAAI7D,EAAQ,aAAa,wCAAyCoC,EAAY,+BAA+BM,CAAM,mCAAmC,KAAK,KAAKuB,CAAC,CAAC,GAAI,KAAK,SAAS,CAAC,EAG/LD,EAAO,SAAS,KAAK,OAAOtB,CAAM,EAAG,EAAE,EACvCU,EAAO,KAAK,OAAO,aAAaY,CAAI,CAAC,EACrC,KAAK,QAAQtB,CAAM,CACrB,SAAWnC,EAAQ,KAAKO,EAAMW,CAAI,GAAK,EACrC,KAAK,gBAAgB,EACrB2B,EAASA,EAAO,OAAO,KAAK,wBAAwBU,EAAQ1B,CAAU,CAAC,MAEvE,OAAM,IAAIpC,EAAQ,aAAa,wCAAyCoC,EAAY,kCAAkCX,CAAI,GAAI,KAAK,SAAS,CAAC,MAG/I,QAAO2B,CAEX,CACF,CAKA,wBAAwBU,EAAQ1B,EAAY,CAC1C,IAAIc,EAAQzB,EAAM2B,EAAQV,EAAQe,EAAY5B,EAAKqC,EAGnD,IAFAd,EAAS,CAAC,EACVV,EAAS,EACFb,EAAM,KAAK,KAAKa,CAAM,EAAGnC,EAAQ,KAAKS,EAAMa,CAAG,GAAK,GACzDa,IAKF,GAHAwB,EAAc,KAAK,OAAOxB,CAAM,EAChC,KAAK,QAAQA,CAAM,EACnBjB,EAAO,KAAK,KAAK,EACbA,IAAS,KACX,MAAM,IAAIzB,EAAQ,aAAa,iCAAkCoC,EAAY,iCAAkC,KAAK,SAAS,CAAC,EAEhI,OAAI7B,EAAQ,KAAKO,EAAMW,CAAI,GAAK,GAC9BgC,EAAa,KAAK,gBAAgB,EAClCP,EAAS,KAAK,wBAAwBY,EAAQ1B,CAAU,EACpDqB,IAAe;AAAA,EACjBL,EAAO,KAAKK,CAAU,EACbP,EAAO,SAAW,GAC3BE,EAAO,KAAK,GAAG,EAEjBA,EAASA,EAAO,OAAOF,CAAM,GAE7BE,EAAO,KAAKc,CAAW,EAElBd,CACT,CAKA,wBAAwBU,EAAQ1B,EAAY,CAC1C,IAAIgB,EAAQN,EAAQjB,EAAK+B,EAAMC,EAE/B,IADAT,EAAS,CAAC,IACG,CAGX,GADAN,EAAS,KAAK,OAAO,CAAC,EAClBA,IAAW,OAASA,IAAW,QAAUjB,EAAM,KAAK,KAAK,CAAC,EAAGtB,EAAQ,KAAKO,EAAOE,EAAO,KAAQa,CAAG,GAAK,GAC1G,MAAM,IAAI7B,EAAQ,aAAa,iCAAkCoC,EAAY,sCAAuC,KAAK,SAAS,CAAC,EAErI,KAAOwB,EAAO,KAAK,KAAK,EAAGrD,EAAQ,KAAKS,EAAM4C,CAAI,GAAK,GACrD,KAAK,QAAQ,EAEf,GAAIC,EAAO,KAAK,KAAK,EAAGtD,EAAQ,KAAKO,EAAM+C,CAAI,GAAK,EAClDT,EAAO,KAAK,KAAK,gBAAgB,CAAC,MAElC,QAAOA,CAEX,CACF,CASA,YAAa,CACX,IAAI3B,EAAM2B,EAAQb,EAAUgB,EAAQb,EAAQb,EAAK+B,EAAMO,EAAQ/B,EAQ/D,IAPAgB,EAAS,CAAC,EACVhB,EAAaG,EAAW,KAAK,SAAS,EACtCgB,EAAS,KAAK,OAAS,EAIvBY,EAAS,CAAC,EAERzB,EAAS,EACL,KAAK,KAAK,IAAM,KAFT,CAKX,KACEjB,EAAO,KAAK,KAAKiB,CAAM,EACnB,EAAAnC,EAAQ,KAAKO,EAAOE,EAAO,KAAQS,CAAI,GAAK,GAAM,KAAK,aAAe,GAAKA,IAAS,MAAQI,EAAM,KAAK,KAAKa,EAAS,CAAC,EAAGnC,EAAQ,KAAKO,EAAOE,EAAO,KAAQa,CAAG,GAAK,IAAQ,KAAK,aAAe,GAAKtB,EAAQ,KAAK,UAAWkB,CAAI,GAAK,IAG1OiB,IAGF,GAAI,KAAK,aAAe,GAAKjB,IAAS,MAAQmC,EAAO,KAAK,KAAKlB,EAAS,CAAC,EAAGnC,EAAQ,KAAKO,EAAOE,EAAO,UAAa4C,CAAI,EAAI,GAC1H,WAAK,QAAQlB,CAAM,EACb,IAAI1C,EAAQ,aAAa,gCAAiCoC,EAAY,uBAA0B,KAAK,SAAS,EAAG,4DAA4D,EAWrL,GATIM,IAAW,IAGf,KAAK,iBAAmB,GACxBU,EAASA,EAAO,OAAOe,CAAM,EAC7Bf,EAAO,KAAK,KAAK,OAAOV,CAAM,CAAC,EAC/B,KAAK,QAAQA,CAAM,EACnBH,EAAW,KAAK,SAAS,EACzB4B,EAAS,KAAK,kBAAkBZ,EAAQnB,CAAU,EAC7C+B,GAAU,MAASA,EAAO,SAAW,GAAK,KAAK,KAAK,IAAM,KAAQ,KAAK,aAAe,GAAK,KAAK,OAASZ,GAC5G,KAEJ,CACA,OAAO,IAAInD,EAAO,YAAYgD,EAAO,KAAK,EAAE,EAAG,GAAMhB,EAAYG,CAAQ,CAC3E,CAOA,kBAAkBgB,EAAQnB,EAAY,CACpC,IAAIc,EAAQzB,EAAM2B,EAAQV,EAAQe,EAAYX,EAAQjB,EAAK+B,EAAMC,EAAMO,EAAMF,EAG7E,IAFAd,EAAS,CAAC,EACVV,EAAS,EACFb,EAAM,KAAK,KAAKa,CAAM,EAAGnC,EAAQ,KAAK,IAAKsB,CAAG,GAAK,GACxDa,IAKF,GAHAwB,EAAc,KAAK,OAAOxB,CAAM,EAChC,KAAK,QAAQA,CAAM,EACnBjB,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAKO,EAAMW,CAAI,GAAK,EAAG,CAIjC,GAHAgC,EAAa,KAAK,gBAAgB,EAClC,KAAK,iBAAmB,GACxBX,EAAS,KAAK,OAAO,CAAC,EAClBA,IAAW,OAASA,IAAW,QAAUc,EAAO,KAAK,KAAK,CAAC,EAAGrD,EAAQ,KAAKO,EAAOE,EAAO,KAAQ4C,CAAI,GAAK,GAC5G,OAGF,IADAV,EAAS,CAAC,EACHkB,EAAO,KAAK,KAAK,EAAG7D,EAAQ,KAAKO,EAAO,IAAKsD,CAAI,GAAK,GAC3D,GAAI,KAAK,KAAK,IAAM,IAClB,KAAK,QAAQ,UAEblB,EAAO,KAAK,KAAK,gBAAgB,CAAC,EAClCJ,EAAS,KAAK,OAAO,CAAC,EAClBA,IAAW,OAASA,IAAW,QAAUe,EAAO,KAAK,KAAK,CAAC,EAAGtD,EAAQ,KAAKO,EAAOE,EAAO,KAAQ6C,CAAI,GAAK,GAC5G,OAIFJ,IAAe;AAAA,EACjBL,EAAO,KAAKK,CAAU,EACbP,EAAO,SAAW,GAC3BE,EAAO,KAAK,GAAG,EAEjBA,EAASA,EAAO,OAAOF,CAAM,CAC/B,MAAWgB,GACTd,EAAO,KAAKc,CAAW,EAEzB,OAAOd,CACT,CAOA,gBAAgBZ,EAAMJ,EAAY,CAChC,IAAIX,EAAMiB,EAAQD,EAElB,GADAhB,EAAO,KAAK,KAAK,EACbA,IAAS,IACX,MAAM,IAAIzB,EAAQ,aAAa,oBAAoBwC,CAAI,GAAIJ,EAAY,0BAA0BX,CAAI,GAAI,KAAK,SAAS,CAAC,EAI1H,GAFAiB,EAAS,EACTjB,EAAO,KAAK,KAAKiB,CAAM,EACnBjB,IAAS,IAAK,CAChB,KAAQ,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAQlB,EAAQ,KAAK,KAAMkB,CAAI,GAAK,GACjIiB,IACAjB,EAAO,KAAK,KAAKiB,CAAM,EAEzB,GAAIjB,IAAS,IACX,WAAK,QAAQiB,CAAM,EACb,IAAI1C,EAAQ,aAAa,oBAAoBwC,CAAI,GAAIJ,EAAY,0BAA0BX,CAAI,GAAI,KAAK,SAAS,CAAC,EAE1HiB,GACF,CACA,OAAAD,EAAQ,KAAK,OAAOC,CAAM,EAC1B,KAAK,QAAQA,CAAM,EACZD,CACT,CAMA,aAAaD,EAAMJ,EAAY,CAC7B,IAAIX,EAAM2B,EAAQV,EAIlB,IAHAU,EAAS,CAAC,EACVV,EAAS,EACTjB,EAAO,KAAK,KAAKiB,CAAM,EACf,KAAOjB,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAS,KAAOA,GAAQA,GAAQ,KAAQlB,EAAQ,KAAK,yBAA2BkB,CAAI,GAAK,GAClJA,IAAS,KACX2B,EAAO,KAAK,KAAK,OAAOV,CAAM,CAAC,EAC/B,KAAK,QAAQA,CAAM,EACnBA,EAAS,EACTU,EAAO,KAAK,KAAK,iBAAiBZ,EAAMJ,CAAU,CAAC,GAEnDM,IAEFjB,EAAO,KAAK,KAAKiB,CAAM,EAOzB,GALIA,IAAW,IACbU,EAAO,KAAK,KAAK,OAAOV,CAAM,CAAC,EAC/B,KAAK,QAAQA,CAAM,EACnBA,EAAS,GAEPU,EAAO,SAAW,EACpB,MAAM,IAAIpD,EAAQ,aAAa,mBAAmBwC,CAAI,GAAIJ,EAAY,0BAA0BX,CAAI,GAAI,KAAK,SAAS,CAAC,EAEzH,OAAO2B,EAAO,KAAK,EAAE,CACvB,CAKA,iBAAiBZ,EAAMJ,EAAY,CACjC,IAAIiC,EAAO9C,EAAG0C,EAAG/B,EAGjB,IAFAmC,EAAQ,CAAC,EACTnC,EAAO,KAAK,SAAS,EACd,KAAK,KAAK,IAAM,KAAK,CAE1B,IADA,KAAK,QAAQ,EACR+B,EAAI1C,EAAI,EAAGA,GAAK,EAAG0C,EAAI,EAAE1C,EAC5B,MAAM,IAAIvB,EAAQ,aAAa,oBAAoBwC,CAAI,GAAIJ,EAAY,mEAAmE,KAAK,KAAK6B,CAAC,CAAC,GAAI,KAAK,SAAS,CAAC,EAE3KI,EAAM,KAAK,OAAO,aAAa,SAAS,KAAK,OAAO,CAAC,EAAG,EAAE,CAAC,CAAC,EAC5D,KAAK,QAAQ,CAAC,CAChB,CACA,OAAOA,EAAM,KAAK,EAAE,CACtB,CAYA,iBAAkB,CAChB,IAAI5C,EAEJ,OADAA,EAAO,KAAK,KAAK,EACblB,EAAQ,KAAK;AAAA,MAAYkB,CAAI,GAAK,GAChC,KAAK,OAAO,CAAC,IAAM;AAAA,EACrB,KAAK,QAAQ,CAAC,EAEd,KAAK,QAAQ,EAER;AAAA,GACElB,EAAQ,KAAK,eAAgBkB,CAAI,GAAK,GAC/C,KAAK,QAAQ,EACNA,GAEF,EACT,CAEF,CAEA,OAAAX,EAAO;AAAA,kBAEPE,EAAO,KAEPD,EAAY,aAEZG,EAAsB,CACpB,EAAK,KACL,EAAK,OACL,EAAK,KACL,EAAK,IACL,IAAM,IACN,EAAK;AAAA,EACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,OACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,QACP,EAEAD,EAAe,CACb,EAAK,EACL,EAAK,EACL,EAAK,CACP,EAEAE,EAAOC,EAAQ,UAAU,WAElBA,CAET,GAAG,KAAK,IAAI,CAEd,GAAG,KAAKpB,CAAI,ICjhDZ,IAAAsE,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAiBC,EAAQC,EAC3BC,EAAU,CAAC,EAAE,eAEfF,EAAS,KAER,CAAC,gBAAAD,CAAe,EAAI,KAErBE,EAAS,KAET,KAAK,YAAc,cAA0BF,CAAgB,CAAC,EAE9D,KAAK,QAAU,UAAW,CACxB,IAAII,EAAcC,EAElB,MAAMC,CAAO,CACX,aAAc,CACZ,OAAOD,EAAK,MAAM,KAAM,SAAS,CACnC,CAEA,YAAa,CACX,YAAK,cAAgB,KACrB,KAAK,aAAe,KACpB,KAAK,YAAc,CAAC,EACpB,KAAK,OAAS,CAAC,EACf,KAAK,MAAQ,CAAC,EACP,KAAK,MAAQ,oBACtB,CAKA,SAAU,CACR,YAAK,OAAS,CAAC,EACR,KAAK,MAAQ,IACtB,CAKA,eAAeE,EAAS,CACtB,IAAIC,EAAQC,EAAGC,EAMf,GALI,KAAK,gBAAkB,MACrB,KAAK,OAAS,OAChB,KAAK,cAAgB,KAAK,KAAK,KAAK,EAAE,GAGtC,KAAK,gBAAkB,KAAM,CAC/B,GAAIH,EAAQ,SAAW,EACrB,MAAO,GAET,IAAKE,EAAI,EAAGC,EAAMH,EAAQ,OAAQE,EAAIC,EAAKD,IAEzC,GADAD,EAASD,EAAQE,CAAC,EACd,KAAK,yBAAyBD,EAChC,MAAO,EAGb,CACA,MAAO,EACT,CAKA,YAAa,CACX,OAAI,KAAK,gBAAkB,MAAS,KAAK,OAAS,OAChD,KAAK,cAAgB,KAAK,KAAK,KAAK,EAAE,GAEjC,KAAK,aACd,CAKA,WAAY,CACV,IAAIG,EACJ,OAAI,KAAK,gBAAkB,MAAS,KAAK,OAAS,OAChD,KAAK,cAAgB,KAAK,KAAK,KAAK,EAAE,GAExCA,EAAQ,KAAK,cACb,KAAK,cAAgB,KACdA,CACT,CAQA,oBAAqB,CACnB,IAAIA,EAAOC,EACX,OAAAA,EAAQ,KAAK,UAAU,EACvBD,EAAQ,IAAIV,EAAO,iBAAiBW,EAAM,WAAYA,EAAM,QAAQ,EAEpE,KAAK,MAAQ,gCACND,CACT,CAKA,+BAAgC,CAC9B,IAAIE,EAAUF,EAAOG,EAAYF,EACjC,OAAK,KAAK,YAAYV,EAAO,eAAgBA,EAAO,mBAAoBA,EAAO,cAAc,EAUpF,KAAK,qBAAqB,GATjC,KAAK,YAAcE,EACnBQ,EAAQ,KAAK,WAAW,EACxBE,EAAaD,EAAWD,EAAM,WAC9BD,EAAQ,IAAIV,EAAO,mBAAmBa,EAAYD,EAAU,EAAK,EAEjE,KAAK,OAAO,KAAK,oBAAoB,EACrC,KAAK,MAAQ,mBACNF,EAIX,CAKA,sBAAuB,CAErB,QADIE,EAAUF,EAAOG,EAAYC,EAAMH,EAAOI,EACvC,KAAK,YAAYd,EAAO,gBAAgB,GAE7C,KAAK,UAAU,EAEjB,GAAK,KAAK,YAAYA,EAAO,cAAc,EAWpC,CAIL,GAFAU,EAAQ,KAAK,UAAU,EACvBD,EAAQ,IAAIV,EAAO,eAAeW,EAAM,WAAYA,EAAM,QAAQ,EAC9D,KAAK,OAAO,SAAW,EACzB,MAAM,IAAI,MAAM,yCAAyC,EAE3D,GAAI,KAAK,MAAM,SAAW,EACxB,MAAM,IAAI,MAAM,wCAAwC,EAE1D,KAAK,MAAQ,IACf,KAtB8C,CAG5C,GAFAE,EAAa,KAAK,WAAW,EAAE,WAC/B,CAACE,EAASD,CAAI,EAAI,KAAK,mBAAmB,EACtC,CAAC,KAAK,YAAYb,EAAO,kBAAkB,EAC7C,MAAM,IAAIJ,GAAQ,YAAY,0CAA2C,KAAK,WAAW,EAAE,EAAG,GAAI,KAAK,WAAW,EAAE,UAAU,EAEhIc,EAAQ,KAAK,UAAU,EACvBC,EAAWD,EAAM,SACjBD,EAAQ,IAAIV,EAAO,mBAAmBa,EAAYD,EAAU,GAAMG,EAASD,CAAI,EAC/E,KAAK,OAAO,KAAK,oBAAoB,EACrC,KAAK,MAAQ,wBACf,CAYA,OAAOJ,CACT,CAKA,oBAAqB,CACnB,IAAIE,EAAUF,EAAOM,EAAUH,EAAYF,EAC3C,OAAAA,EAAQ,KAAK,WAAW,EACxBE,EAAaD,EAAWD,EAAM,WAC9BK,EAAW,GACP,KAAK,YAAYf,EAAO,gBAAgB,IAC1CU,EAAQ,KAAK,UAAU,EACvBC,EAAWD,EAAM,SACjBK,EAAW,IAEbN,EAAQ,IAAIV,EAAO,iBAAiBa,EAAYD,EAAUI,CAAQ,EAElE,KAAK,MAAQ,uBACNN,CACT,CAEA,wBAAyB,CACvB,IAAIA,EACJ,OAAI,KAAK,YAAYT,EAAO,eAAgBA,EAAO,mBAAoBA,EAAO,iBAAkBA,EAAO,cAAc,GACnHS,EAAQ,KAAK,qBAAqB,KAAK,WAAW,EAAE,UAAU,EAC9D,KAAK,MAAQ,KAAK,OAAO,IAAI,EACtBA,GAEA,KAAK,iBAAiB,CAEjC,CAEA,oBAAqB,CACnB,IAAIO,EAAQC,EAAOC,EAAOC,EAAQC,EAAKC,EAAkBX,EAAOY,EAGhE,IAFA,KAAK,aAAe,KACpB,KAAK,YAAc,CAAC,EACb,KAAK,YAAYtB,EAAO,cAAc,GAE3C,GADAU,EAAQ,KAAK,UAAU,EACnBA,EAAM,OAAS,OAAQ,CACzB,GAAI,KAAK,eAAiB,KACxB,MAAM,IAAId,GAAQ,YAAY,KAAM,KAAM,iCAAkCc,EAAM,UAAU,EAG9F,GADA,CAACO,EAAOC,CAAK,EAAIR,EAAM,MACnBO,IAAU,EACZ,MAAM,IAAIrB,GAAQ,YAAY,KAAM,KAAM,6DAA8Dc,EAAM,UAAU,EAE1H,KAAK,aAAeA,EAAM,KAC5B,SAAWA,EAAM,OAAS,MAAO,CAE/B,GADA,CAACM,EAAQG,CAAM,EAAIT,EAAM,MACrBM,KAAU,KAAK,YACjB,MAAM,IAAIpB,GAAQ,YAAY,KAAM,KAAM,wBAAwBoB,CAAM,GAAIN,EAAM,UAAU,EAE9F,KAAK,YAAYM,CAAM,EAAIG,CAC7B,CAEFE,EAAmB,KACnBD,EAAM,KAAK,YACX,IAAKJ,KAAUI,EACRnB,EAAQ,KAAKmB,EAAKJ,CAAM,IAC7BG,EAASC,EAAIJ,CAAM,EACfK,GAAoB,OACtBA,EAAmB,CAAC,GAEtBA,EAAiBL,CAAM,EAAIG,GAE7BG,EAAQ,CAAC,KAAK,aAAcD,CAAgB,EAC5C,IAAKL,KAAUd,EACRD,EAAQ,KAAKC,EAAcc,CAAM,IACtCG,EAASjB,EAAac,CAAM,EACtBG,KAAU,KAAK,cACnB,KAAK,YAAYH,CAAM,EAAIG,IAG/B,OAAOG,CACT,CAiBA,kBAAmB,CACjB,OAAO,KAAK,WAAW,EAAI,CAC7B,CAEA,iBAAkB,CAChB,OAAO,KAAK,WAAW,CACzB,CAEA,yCAA0C,CACxC,OAAO,KAAK,WAAW,GAAM,EAAI,CACnC,CAEA,WAAWC,EAAQ,GAAOC,EAAsB,GAAO,CACrD,IAAIC,EAAQd,EAAUF,EAAOO,EAAQU,EAAUC,EAAMf,EAAYgB,EAAQC,EAAKC,EAAUpB,EACxF,GAAI,KAAK,YAAYV,EAAO,UAAU,EACpCU,EAAQ,KAAK,UAAU,EACvBD,EAAQ,IAAIV,EAAO,WAAWW,EAAM,MAAOA,EAAM,WAAYA,EAAM,QAAQ,EAC3E,KAAK,MAAQ,KAAK,OAAO,IAAI,MACxB,CA0BL,GAzBAe,EAAS,KACTI,EAAM,KACNjB,EAAaD,EAAWmB,EAAW,KAC/B,KAAK,YAAY9B,EAAO,WAAW,GACrCU,EAAQ,KAAK,UAAU,EACvBE,EAAaF,EAAM,WACnBC,EAAWD,EAAM,SACjBe,EAASf,EAAM,MACX,KAAK,YAAYV,EAAO,QAAQ,IAClCU,EAAQ,KAAK,UAAU,EACvBoB,EAAWpB,EAAM,WACjBC,EAAWD,EAAM,SACjBmB,EAAMnB,EAAM,QAEL,KAAK,YAAYV,EAAO,QAAQ,IACzCU,EAAQ,KAAK,UAAU,EACvBE,EAAakB,EAAWpB,EAAM,WAC9BC,EAAWD,EAAM,SACjBmB,EAAMnB,EAAM,MACR,KAAK,YAAYV,EAAO,WAAW,IACrCU,EAAQ,KAAK,UAAU,EACvBC,EAAWD,EAAM,SACjBe,EAASf,EAAM,QAGfmB,IAAQ,KAEV,GADA,CAACb,EAAQY,CAAM,EAAIC,EACfb,IAAW,KAAM,CACnB,GAAI,EAAEA,KAAU,KAAK,aACnB,MAAM,IAAIpB,GAAQ,YAAY,uBAAwBgB,EAAY,8BAA8BI,CAAM,GAAIc,CAAQ,EAEpHD,EAAM,KAAK,YAAYb,CAAM,EAAIY,CACnC,MACEC,EAAMD,EAQV,GALIhB,IAAe,OACjBA,EAAaD,EAAW,KAAK,WAAW,EAAE,YAE5CF,EAAQ,KACRiB,EAAWG,IAAQ,MAAQA,IAAQ,IAC/BL,GAAuB,KAAK,YAAYxB,EAAO,eAAe,EAChEW,EAAW,KAAK,WAAW,EAAE,SAC7BF,EAAQ,IAAIV,EAAO,mBAAmB0B,EAAQI,EAAKH,EAAUd,EAAYD,CAAQ,EACjF,KAAK,MAAQ,0CAET,KAAK,YAAYX,EAAO,WAAW,EACrCU,EAAQ,KAAK,UAAU,EACvBC,EAAWD,EAAM,SACZA,EAAM,OAASmB,IAAQ,MAASA,IAAQ,IAC3CH,EAAW,CAAC,GAAM,EAAK,EACdG,IAAQ,KACjBH,EAAW,CAAC,GAAO,EAAI,EAEvBA,EAAW,CAAC,GAAO,EAAK,EAE1BjB,EAAQ,IAAIV,EAAO,YAAY0B,EAAQI,EAAKH,EAAUhB,EAAM,MAAOE,EAAYD,EAAUD,EAAM,KAAK,EACpG,KAAK,MAAQ,KAAK,OAAO,IAAI,UACpB,KAAK,YAAYV,EAAO,sBAAsB,EACvDW,EAAW,KAAK,WAAW,EAAE,SAC7BF,EAAQ,IAAIV,EAAO,mBAAmB0B,EAAQI,EAAKH,EAAUd,EAAYD,EAAU,EAAI,EACvF,KAAK,MAAQ,0CACJ,KAAK,YAAYX,EAAO,qBAAqB,EACtDW,EAAW,KAAK,WAAW,EAAE,SAC7BF,EAAQ,IAAIV,EAAO,kBAAkB0B,EAAQI,EAAKH,EAAUd,EAAYD,EAAU,EAAI,EACtF,KAAK,MAAQ,uCACJY,GAAS,KAAK,YAAYvB,EAAO,uBAAuB,EACjEW,EAAW,KAAK,WAAW,EAAE,SAC7BF,EAAQ,IAAIV,EAAO,mBAAmB0B,EAAQI,EAAKH,EAAUd,EAAYD,EAAU,EAAK,EACxF,KAAK,MAAQ,2CACJY,GAAS,KAAK,YAAYvB,EAAO,sBAAsB,EAChEW,EAAW,KAAK,WAAW,EAAE,SAC7BF,EAAQ,IAAIV,EAAO,kBAAkB0B,EAAQI,EAAKH,EAAUd,EAAYD,EAAU,EAAK,EACvF,KAAK,MAAQ,wCACJc,IAAW,MAAQI,IAAQ,KAEpCpB,EAAQ,IAAIV,EAAO,YAAY0B,EAAQI,EAAK,CAACH,EAAU,EAAK,EAAG,GAAId,EAAYD,CAAQ,EACvF,KAAK,MAAQ,KAAK,OAAO,IAAI,MAE7B,OAAIY,EACFI,EAAO,QAEPA,EAAO,OAETjB,EAAQ,KAAK,WAAW,EAClB,IAAId,GAAQ,YAAY,mBAAmB+B,CAAI,QAASf,EAAY,wCAAwCF,EAAM,EAAE,GAAIA,EAAM,UAAU,CAGpJ,CACA,OAAOD,CACT,CAIA,kCAAmC,CACjC,IAAIC,EACJ,OAAAA,EAAQ,KAAK,UAAU,EACvB,KAAK,MAAM,KAAKA,EAAM,UAAU,EACzB,KAAK,2BAA2B,CACzC,CAEA,4BAA6B,CAC3B,IAAID,EAAOC,EACX,GAAI,KAAK,YAAYV,EAAO,eAAe,EAEzC,OADAU,EAAQ,KAAK,UAAU,EAClB,KAAK,YAAYV,EAAO,gBAAiBA,EAAO,aAAa,GAIhE,KAAK,MAAQ,6BACN,KAAK,qBAAqBU,EAAM,QAAQ,IAJ/C,KAAK,OAAO,KAAK,4BAA4B,EACtC,KAAK,iBAAiB,GAMjC,GAAI,CAAC,KAAK,YAAYV,EAAO,aAAa,EACxC,MAAAU,EAAQ,KAAK,WAAW,EAClB,IAAId,GAAQ,YAAY,mCAAoC,KAAK,MAAM,MAAM,EAAE,EAAE,CAAC,EAAG,mCAAmCc,EAAM,EAAE,GAAIA,EAAM,UAAU,EAE5J,OAAAA,EAAQ,KAAK,UAAU,EACvBD,EAAQ,IAAIV,EAAO,iBAAiBW,EAAM,WAAYA,EAAM,QAAQ,EACpE,KAAK,MAAQ,KAAK,OAAO,IAAI,EAC7B,KAAK,MAAM,IAAI,EACRD,CACT,CAGA,iCAAkC,CAChC,IAAIA,EAAOC,EACX,OAAI,KAAK,YAAYV,EAAO,eAAe,GACzCU,EAAQ,KAAK,UAAU,EAClB,KAAK,YAAYV,EAAO,gBAAiBA,EAAO,SAAUA,EAAO,WAAYA,EAAO,aAAa,GAIpG,KAAK,MAAQ,kCACN,KAAK,qBAAqBU,EAAM,QAAQ,IAJ/C,KAAK,OAAO,KAAK,iCAAiC,EAC3C,KAAK,iBAAiB,KAMjCA,EAAQ,KAAK,WAAW,EACxBD,EAAQ,IAAIV,EAAO,iBAAiBW,EAAM,WAAYA,EAAM,UAAU,EACtE,KAAK,MAAQ,KAAK,OAAO,IAAI,EACtBD,EACT,CAKA,+BAAgC,CAC9B,IAAIC,EACJ,OAAAA,EAAQ,KAAK,UAAU,EACvB,KAAK,MAAM,KAAKA,EAAM,UAAU,EACzB,KAAK,wBAAwB,CACtC,CAEA,yBAA0B,CACxB,IAAID,EAAOC,EACX,GAAI,KAAK,YAAYV,EAAO,QAAQ,EAElC,OADAU,EAAQ,KAAK,UAAU,EAClB,KAAK,YAAYV,EAAO,SAAUA,EAAO,WAAYA,EAAO,aAAa,GAI5E,KAAK,MAAQ,4BACN,KAAK,qBAAqBU,EAAM,QAAQ,IAJ/C,KAAK,OAAO,KAAK,2BAA2B,EACrC,KAAK,wCAAwC,GAMxD,GAAI,CAAC,KAAK,YAAYV,EAAO,aAAa,EACxC,MAAAU,EAAQ,KAAK,WAAW,EAClB,IAAId,GAAQ,YAAY,gCAAiC,KAAK,MAAM,MAAM,EAAE,EAAE,CAAC,EAAG,mCAAmCc,EAAM,EAAE,GAAIA,EAAM,UAAU,EAEzJ,OAAAA,EAAQ,KAAK,UAAU,EACvBD,EAAQ,IAAIV,EAAO,gBAAgBW,EAAM,WAAYA,EAAM,QAAQ,EACnE,KAAK,MAAQ,KAAK,OAAO,IAAI,EAC7B,KAAK,MAAM,IAAI,EACRD,CACT,CAEA,2BAA4B,CAC1B,IAAIC,EACJ,OAAI,KAAK,YAAYV,EAAO,UAAU,GACpCU,EAAQ,KAAK,UAAU,EAClB,KAAK,YAAYV,EAAO,SAAUA,EAAO,WAAYA,EAAO,aAAa,GAI5E,KAAK,MAAQ,0BACN,KAAK,qBAAqBU,EAAM,QAAQ,IAJ/C,KAAK,OAAO,KAAK,yBAAyB,EACnC,KAAK,wCAAwC,KAMtD,KAAK,MAAQ,0BACbA,EAAQ,KAAK,WAAW,EACjB,KAAK,qBAAqBA,EAAM,UAAU,EAErD,CAUA,iCAAkC,CAChC,IAAIA,EACJ,OAAAA,EAAQ,KAAK,UAAU,EACvB,KAAK,MAAM,KAAKA,EAAM,UAAU,EACzB,KAAK,0BAA0B,EAAI,CAC5C,CAEA,0BAA0BqB,EAAQ,GAAO,CACvC,IAAItB,EAAOC,EACX,GAAI,CAAC,KAAK,YAAYV,EAAO,oBAAoB,EAAG,CAClD,GAAI,CAAC+B,EACH,GAAI,KAAK,YAAY/B,EAAO,cAAc,EACxC,KAAK,UAAU,MAEf,OAAAU,EAAQ,KAAK,WAAW,EAClB,IAAId,GAAQ,YAAY,gCAAiC,KAAK,MAAM,MAAM,EAAE,EAAE,CAAC,EAAG,gCAAgCc,EAAM,EAAE,GAAIA,EAAM,UAAU,EAGxJ,GAAI,KAAK,YAAYV,EAAO,QAAQ,EAClC,OAAAU,EAAQ,KAAK,WAAW,EACxBD,EAAQ,IAAIV,EAAO,kBAAkB,KAAM,KAAM,GAAMW,EAAM,WAAYA,EAAM,SAAU,EAAI,EAC7F,KAAK,MAAQ,wCACND,EACF,GAAI,CAAC,KAAK,YAAYT,EAAO,oBAAoB,EACtD,YAAK,OAAO,KAAK,2BAA2B,EACrC,KAAK,gBAAgB,CAEhC,CACA,OAAAU,EAAQ,KAAK,UAAU,EACvBD,EAAQ,IAAIV,EAAO,iBAAiBW,EAAM,WAAYA,EAAM,QAAQ,EACpE,KAAK,MAAQ,KAAK,OAAO,IAAI,EAC7B,KAAK,MAAM,IAAI,EACRD,CACT,CAEA,uCAAwC,CACtC,IAAIC,EAEJ,OADAA,EAAQ,KAAK,UAAU,EAClB,KAAK,YAAYV,EAAO,WAAYA,EAAO,eAAgBA,EAAO,oBAAoB,GAIzF,KAAK,MAAQ,0CACN,KAAK,qBAAqBU,EAAM,QAAQ,IAJ/C,KAAK,OAAO,KAAK,yCAAyC,EACnD,KAAK,gBAAgB,EAKhC,CAEA,yCAA0C,CACxC,IAAIA,EACJ,OAAI,KAAK,YAAYV,EAAO,UAAU,GACpCU,EAAQ,KAAK,UAAU,EAClB,KAAK,YAAYV,EAAO,eAAgBA,EAAO,oBAAoB,GAItE,KAAK,MAAQ,wCACN,KAAK,qBAAqBU,EAAM,QAAQ,IAJ/C,KAAK,OAAO,KAAK,uCAAuC,EACjD,KAAK,gBAAgB,KAM9B,KAAK,MAAQ,wCACbA,EAAQ,KAAK,WAAW,EACjB,KAAK,qBAAqBA,EAAM,UAAU,EAErD,CAEA,uCAAwC,CACtC,IAAIA,EACJ,YAAK,MAAQ,4BACbA,EAAQ,KAAK,WAAW,EACjB,IAAIX,EAAO,gBAAgBW,EAAM,WAAYA,EAAM,UAAU,CACtE,CAKA,8BAA+B,CAC7B,IAAIA,EACJ,OAAAA,EAAQ,KAAK,UAAU,EACvB,KAAK,MAAM,KAAKA,EAAM,UAAU,EACzB,KAAK,uBAAuB,EAAI,CACzC,CAEA,uBAAuBqB,EAAQ,GAAO,CACpC,IAAItB,EAAOC,EACX,GAAI,CAAC,KAAK,YAAYV,EAAO,mBAAmB,EAAG,CACjD,GAAI,CAAC+B,EACH,GAAI,KAAK,YAAY/B,EAAO,cAAc,EACxC,KAAK,UAAU,MAEf,OAAAU,EAAQ,KAAK,WAAW,EAClB,IAAId,GAAQ,YAAY,+BAAgC,KAAK,MAAM,MAAM,EAAE,EAAE,CAAC,EAAG,gCAAgCc,EAAM,EAAE,GAAIA,EAAM,UAAU,EAGvJ,GAAI,KAAK,YAAYV,EAAO,QAAQ,EAElC,OADAU,EAAQ,KAAK,UAAU,EAClB,KAAK,YAAYV,EAAO,WAAYA,EAAO,eAAgBA,EAAO,mBAAmB,GAIxF,KAAK,MAAQ,2BACN,KAAK,qBAAqBU,EAAM,QAAQ,IAJ/C,KAAK,OAAO,KAAK,0BAA0B,EACpC,KAAK,gBAAgB,GAKzB,GAAI,CAAC,KAAK,YAAYV,EAAO,mBAAmB,EACrD,YAAK,OAAO,KAAK,gCAAgC,EAC1C,KAAK,gBAAgB,CAEhC,CACA,OAAAU,EAAQ,KAAK,UAAU,EACvBD,EAAQ,IAAIV,EAAO,gBAAgBW,EAAM,WAAYA,EAAM,QAAQ,EACnE,KAAK,MAAQ,KAAK,OAAO,IAAI,EAC7B,KAAK,MAAM,IAAI,EACRD,CACT,CAEA,0BAA2B,CACzB,IAAIC,EACJ,OAAI,KAAK,YAAYV,EAAO,UAAU,GACpCU,EAAQ,KAAK,UAAU,EAClB,KAAK,YAAYV,EAAO,eAAgBA,EAAO,mBAAmB,GAIrE,KAAK,MAAQ,yBACN,KAAK,qBAAqBU,EAAM,QAAQ,IAJ/C,KAAK,OAAO,KAAK,wBAAwB,EAClC,KAAK,gBAAgB,KAM9B,KAAK,MAAQ,yBACbA,EAAQ,KAAK,WAAW,EACjB,KAAK,qBAAqBA,EAAM,UAAU,EAErD,CAEA,gCAAiC,CAC/B,YAAK,MAAQ,yBACN,KAAK,qBAAqB,KAAK,WAAW,EAAE,UAAU,CAC/D,CAEA,qBAAqBsB,EAAM,CACzB,OAAO,IAAIjC,EAAO,YAAY,KAAM,KAAM,CAAC,GAAM,EAAK,EAAG,GAAIiC,EAAMA,CAAI,CACzE,CAEF,CAEA,OAAA9B,EAAe,CACb,IAAK,IACL,KAAM,oBACR,EAEAC,EAAOC,EAAO,UAAU,WAEjBA,CAET,GAAG,KAAK,IAAI,CAEd,GAAG,KAAKR,EAAI,ICzmBZ,IAAAqC,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAUC,EAAaC,EAAQC,EAAQC,EAAUC,EAASC,EAE9DA,EAAO,KAEPH,EAAS,KAETE,EAAU,KAEVH,EAAS,KAETF,EAAW,KAEXI,EAAW,KAEXH,EAAc,KAEd,KAAK,YAAc,SAASM,EAASJ,EAAO,OAAQK,EAAUH,EAAQ,QAASI,EAASP,EAAO,OAAQQ,EAAWV,EAAS,SAAUW,EAAWP,EAAS,SAAUQ,EAAcX,EAAY,YAAa,CACxM,IAAIY,EAAQC,EACZ,OAAAA,EAAa,CAACP,EAAQC,EAASC,EAAQC,EAAUC,EAAUC,CAAW,EAC/DC,GAAU,UAAW,CAC1B,IAAIE,EAEJ,MAAMF,CAAO,CACX,YAAYG,EAAQ,CAClB,IAAIC,EAAGC,EAAKC,EAGZ,IAFAL,EAAW,CAAC,EAAE,UAAU,WAAW,KAAK,KAAME,CAAM,EACpDG,EAAML,EAAW,MAAM,CAAC,EACnBG,EAAI,EAAGC,EAAMC,EAAI,OAAQF,EAAIC,EAAKD,IACrCF,EAAYI,EAAIF,CAAC,EACjBF,EAAU,UAAU,WAAW,KAAK,IAAI,CAE5C,CAEF,CAEA,OAAAT,EAAK,OAAOO,EAAO,UAAW,IAAK,UAAW,CAC5C,IAAII,EAAGC,EAAKE,EAEZ,IADAA,EAAU,CAAC,EACNH,EAAI,EAAGC,EAAMJ,EAAW,OAAQG,EAAIC,EAAKD,IAC5CF,EAAYD,EAAWG,CAAC,EACxBG,EAAQ,KAAKL,EAAU,SAAS,EAElC,OAAOK,CACT,GAAG,CAAE,EAEEP,CAET,GAAG,KAAK,IAAI,CACd,EAEA,KAAK,OAAS,KAAK,YAAY,CAEjC,GAAG,KAAKf,EAAI,ICrDZ,IAAAuB,GAAAC,EAAAC,IAAA,CAAAC,KAAC,UAAW,CACV,IAAIC,EAAUC,EAAaC,EAAQC,EAAQC,EAAQC,EAAQC,EAAOC,EAAQC,EAAQC,EAAUC,EAASC,EAAQC,EAE7GZ,EAAW,KAAK,SAAW,KAE3BC,EAAc,KAAK,YAAc,KAEjCC,EAAS,KAAK,OAAS,KAEvBC,EAAS,KAAK,OAAS,KAEvBC,EAAS,KAAK,OAAS,KAEvBC,EAAS,KAAK,OAAS,KAEvBC,EAAQ,KAAK,MAAQ,KAErBC,EAAS,KAAK,OAAS,KAEvBC,EAAS,KAAK,OAAS,KAEvBC,EAAW,KAAK,SAAW,KAE3BC,EAAU,KAAK,QAAU,KAEzBC,EAAS,KAAK,OAAS,KAEvBC,EAAO,KAKP,KAAK,KAAO,SAASC,EAAQC,EAAST,EAAO,OAAQ,CACnD,IAAIU,EAASC,EAGb,IAFAD,EAAU,IAAID,EAAOD,CAAM,EAC3BG,EAAU,CAAC,EACJD,EAAQ,YAAY,GACzBC,EAAQ,KAAKD,EAAQ,UAAU,CAAC,EAElC,OAAOC,CACT,EAKA,KAAK,MAAQ,SAASH,EAAQC,EAAST,EAAO,OAAQ,CACpD,IAAIU,EAASC,EAGb,IAFAD,EAAU,IAAID,EAAOD,CAAM,EAC3BG,EAAU,CAAC,EACJD,EAAQ,YAAY,GACzBC,EAAQ,KAAKD,EAAQ,UAAU,CAAC,EAElC,OAAOC,CACT,EAMA,KAAK,QAAU,SAASH,EAAQC,EAAST,EAAO,OAAQ,CACtD,IAAIU,EACJ,OAAAA,EAAU,IAAID,EAAOD,CAAM,EACpBE,EAAQ,gBAAgB,CACjC,EAMA,KAAK,YAAc,SAASF,EAAQC,EAAST,EAAO,OAAQ,CAC1D,IAAIU,EAASC,EAGb,IAFAD,EAAU,IAAID,EAAOD,CAAM,EAC3BG,EAAU,CAAC,EACJD,EAAQ,WAAW,GACxBC,EAAQ,KAAKD,EAAQ,SAAS,CAAC,EAEjC,OAAOC,CACT,EAMA,KAAK,KAAO,SAASH,EAAQC,EAAST,EAAO,OAAQ,CACnD,IAAIU,EACJ,OAAAA,EAAU,IAAID,EAAOD,CAAM,EACpBE,EAAQ,gBAAgB,CACjC,EAMA,KAAK,SAAW,SAASF,EAAQC,EAAST,EAAO,OAAQ,CACvD,IAAIU,EAASC,EAGb,IAFAD,EAAU,IAAID,EAAOD,CAAM,EAC3BG,EAAU,CAAC,EACJD,EAAQ,WAAW,GACxBC,EAAQ,KAAKD,EAAQ,SAAS,CAAC,EAEjC,OAAOC,CACT,EAMA,KAAK,KAAO,SAASZ,EAAQS,EAAQI,EAASf,EAAO,OAAQgB,EAAU,CAAC,EAAG,CACzE,IAAIC,EAASC,EAAMC,EAAOC,EAAGC,EAC7BH,EAAOP,GAAU,IAAID,EAAK,aAC1BO,EAAU,IAAIF,EAAOG,EAAMF,CAAO,EAClC,GAAI,CACF,IAAKI,EAAI,EAAGC,EAAMnB,EAAO,OAAQkB,EAAIC,EAAKD,IACxCD,EAAQjB,EAAOkB,CAAC,EAChBH,EAAQ,KAAKE,CAAK,CAEtB,QAAE,CACAF,EAAQ,QAAQ,CAClB,CACA,OAAON,GAAUO,EAAK,MACxB,EAMA,KAAK,UAAY,SAASI,EAAMX,EAAQI,EAASf,EAAO,OAAQgB,EAAU,CAAC,EAAG,CAC5E,OAAOpB,GAAQ,cAAc,CAAC0B,CAAI,EAAGX,EAAQI,EAAQC,CAAO,CAC9D,EAMA,KAAK,cAAgB,SAASZ,EAAOO,EAAQI,EAASf,EAAO,OAAQgB,EAAU,CAAC,EAAG,CACjF,IAAIC,EAASC,EAAME,EAAGC,EAAKC,EAC3BJ,EAAOP,GAAU,IAAID,EAAK,aAC1BO,EAAU,IAAIF,EAAOG,EAAMF,CAAO,EAClC,GAAI,CAEF,IADAC,EAAQ,KAAK,EACRG,EAAI,EAAGC,EAAMjB,EAAM,OAAQgB,EAAIC,EAAKD,IACvCE,EAAOlB,EAAMgB,CAAC,EACdH,EAAQ,UAAUK,CAAI,EAExBL,EAAQ,MAAM,CAChB,QAAE,CACAA,EAAQ,QAAQ,CAClB,CACA,OAAON,GAAUO,EAAK,MACxB,EAMA,KAAK,KAAO,SAASK,EAAMZ,EAAQI,EAASf,EAAO,OAAQgB,EAAU,CAAC,EAAG,CACvE,OAAOpB,GAAQ,SAAS,CAAC2B,CAAI,EAAGZ,EAAQI,EAAQC,CAAO,CACzD,EAMA,KAAK,SAAW,SAASQ,EAAWb,EAAQI,EAASf,EAAO,OAAQgB,EAAU,CAAC,EAAG,CAChF,IAAIC,EAASC,EAAMO,EAAUL,EAAGC,EAChCH,EAAOP,GAAU,IAAID,EAAK,aAC1BO,EAAU,IAAIF,EAAOG,EAAMF,CAAO,EAClC,GAAI,CAEF,IADAC,EAAQ,KAAK,EACRG,EAAI,EAAGC,EAAMG,EAAU,OAAQJ,EAAIC,EAAKD,IAC3CK,EAAWD,EAAUJ,CAAC,EACtBH,EAAQ,UAAUQ,CAAQ,EAE5BR,EAAQ,MAAM,CAChB,QAAE,CACAA,EAAQ,QAAQ,CAClB,CACA,OAAON,GAAUO,EAAK,MACxB,CAEF,GAAG,KAAKtB,EAAI,ICvJL,SAAS8B,GACZC,EAAWC,EAAaC,EACpB,CACJ,IAAMC,EAAgBF,EAEtB,GAAIA,KAAYD,EACZ,OAAO,KAAKE,EAASF,EAAOG,CAAa,CAAC,EAE9C,OAAO,eAAeH,EAAQC,EAAU,CACpC,IAAIG,EAAG,CACH,OAAOJ,EAAOG,CAAa,EAC3BH,EAAOG,CAAa,EAAIC,EACxBF,EAASE,CAAC,CACd,EACA,aAAc,GACd,WAAY,EAChB,CAAC,CACL,CA9CA,IAAAC,GAAAC,EAAA,kBAAAC,MCAA,IAAOC,GAAPC,GAAAC,EAAA,KAAAC,IAAOH,GAAQ,8hGCmBf,SAASI,IAA2C,CAChD,OAAO,gBAAc,iBAAiB,GAAK,gBAAc,cAAc,EAAE,CAAC,CAC9E,CAEA,SAASC,GAAeC,EAAwB,CAC5CF,GAAc,GAAG,YAAY,KAAKE,CAAK,CAC3C,CAEA,SAASC,GAAgBC,EAAgD,CACrE,IAAMC,EAAYD,EAAS,UAAUE,GAAQ,CACzC,IAAMC,EAAQD,EAAK,OAAO,YAAY,GAAK,GAC3C,OAAOC,EAAM,SAAS,MAAM,GAAKA,EAAM,SAAS,MAAM,CAC1D,CAAC,EACD,OAAOF,IAAc,GAAKA,EAAY,EAAI,CAC9C,CAEA,SAASG,GAAWJ,EAAiD,CACjE,GAAI,CAACA,EAAS,OAAQ,MAAO,GAE7B,IAAMK,EAAgBL,EAAS,KAAKE,GAAQ,CACxC,IAAMC,EAAQD,EAAK,OAAO,YAAY,GAAK,GAC3C,OAAOC,EAAM,SAAS,MAAM,GAAKA,EAAM,SAAS,MAAM,CAC1D,CAAC,EAEKG,EAAUN,EAAS,KAAKE,GAC1BA,EAAK,OAAO,YAAY,EAAE,SAAS,MAAM,GAAKA,EAAK,OAAS,MAChE,EAEMK,EAAe,CAACP,EAAS,KAAKE,GAChCA,EAAK,QAAU,SAAWA,EAAK,QAAU,QACzCA,EAAK,QAAU,SAAWA,EAAK,QAAU,MAC7C,EAEA,OAAOG,GAAiBC,GAAWC,CACvC,CAIA,SAASC,IAAkB,CACvB,GAAIC,GAAa,CACbA,GAAY,MAAM,EAClB,MACJ,CAEA,IAAMC,EAAS,IACTC,EAAQD,GAAU,EAAI,GAE5BD,GAAc,IAAI,gBAAc,CAC5B,OAAQ,GACR,gBAAiB,GACjB,OAAAC,EACA,MAAAC,CACJ,CAAC,EAEDF,GAAY,YAAY,qBAAqB,CAAC,CAAE,IAAAG,CAAI,KAChD,QAAM,aAAaA,CAAG,EACf,CAAE,OAAQ,MAAO,EAC3B,EAEDH,GAAY,YAAY,GAAG,gBAAiB,CAACI,EAAGD,IAAQ,CACpDC,EAAE,eAAe,EACjB,QAAM,aAAaD,CAAG,CAC1B,CAAC,EAED,IAAME,EAAcC,GACf,WAAW,cAAe,UAAO,EACjC,WAAW,eAAgBC,EAAY,EACtCC,EAAa,OAAO,KAAKH,CAAW,EAAE,SAAS,QAAQ,EAC7DL,GAAY,QAAQ,yBAAyBQ,CAAU,EAAE,EACzDR,GAAY,GAAG,SAAU,IAAM,CAC3BA,GAAc,IAClB,CAAC,CACL,CAEA,SAASS,IAAwD,CAC7D,MAAO,CACH,CACI,MAAO,WACP,QAAS,CACL,CACI,MAAO,iBACP,MAAO,IAAMV,GAAgB,CACjC,EACA,CACI,MAAOW,GAAwB,kBAAoB,oBACnD,MAAO,IAAMtB,4BAA2C,CAC5D,EACA,CACI,MAAO,kBACP,MAAO,IAAMA,sBAAoC,CACrD,EACA,CAAE,KAAM,WAAY,EACpB,CACI,MAAO,uBACP,MAAO,IAAM,QAAM,SAASuB,EAAY,CAC5C,EACA,CACI,MAAO,qBACP,MAAO,IAAM,QAAM,SAASC,CAAU,CAC1C,CACJ,CACJ,EACA,CAAE,KAAM,WAAY,CACxB,CACJ,CAEO,SAASC,IAAsB,CAClC,IAAMC,EAA4B,OAAK,kBAEvC,OAAK,kBAAoB,SAAUvB,EAAwC,CACvE,IAAMwB,EAAiBxB,EAAS,KAAKE,GAAQA,EAAK,QAAU,UAAU,EACtE,GAAIE,GAAWJ,CAAQ,GAAK,CAACwB,EAAgB,CACzC,IAAMC,EAAc1B,GAAgBC,CAAQ,EACtC0B,EAAgBR,GAAwB,EAC9ClB,EAAS,OAAOyB,EAAa,EAAG,GAAGC,CAAa,CACpD,CAEA,OAAOH,EAA0B,KAAK,KAAMvB,CAAQ,CACxD,CACJ,CA1IA,IAQA2B,EAKIR,GA0CAV,GAvDJmB,GAAAC,EAAA,kBAAAC,IAMAC,KACAC,KACAL,EAAgF,oBAChFM,KAEAC,KAEIf,GAAwB,GAE5B,UAAQ,+BAAoC,CAACgB,EAAGC,IAAuB,CACnEjB,GAAwBiB,CAC5B,CAAC,EAsCG3B,GAAoC,OCvDxC,IAMA4B,EACAC,EAEMC,GACAC,GAEAC,GAIOC,GAcAC,GAwCPC,GAEAC,GAmBOC,GA3FbC,GAAAC,EAAA,kBAAAC,IAMAZ,EAA0H,uBAC1HC,EAAwC,gBAElCC,GAAe,KAAK,UAAU,CAAE,KAAM,UAAW,KAAM,UAAW,CAAC,EACnEC,GAAiB,OAEjBC,GAAiBS,GACnB,WAAW,KAAK,UAAUA,CAAW,CAAC,KAG7BR,GAAoBS,MAC7B,iBAAW,QAAKA,EAAW,WAAW,CAAC,EAa9BR,GAAoB,CAACQ,EAAmBC,IAAmC,CACpF,IAAMC,KAAM,QAAKF,EAAW,UAAU,EAChCG,KAAO,QAAKH,EAAW,WAAW,EAExC,GAAIT,GAAiBS,CAAS,GAAK,IAAC,cAAWE,CAAG,MAAK,cAAWC,CAAI,EAAG,MAAO,GAChF,GAAI,CACA,MAAI,aAAUD,CAAG,EAAE,YAAY,EAAG,MAAO,EAC7C,MAAQ,CACJ,MAAO,EACX,CAEA,IAAME,EAA0B,CAAC,EACjC,GAAI,CACA,uBAAWF,EAAKC,CAAI,EACpBC,EAAK,KAAK,OAAM,cAAWD,EAAMD,CAAG,CAAC,KAErC,aAAUA,CAAG,EACbE,EAAK,KAAK,IAAM,CACZ,IAAMC,KAAY,QAAKH,EAAK,UAAU,EAChCI,KAAU,QAAKJ,EAAK,cAAc,KACpC,cAAWG,CAAS,MAAG,cAAWA,CAAS,KAC3C,cAAWC,CAAO,MAAG,cAAWA,CAAO,KAC3C,aAAUJ,CAAG,CACjB,CAAC,KAED,oBAAc,QAAKA,EAAK,cAAc,EAAGd,EAAY,KACrD,oBAAc,QAAKc,EAAK,UAAU,EAAGZ,GAAcW,CAAa,CAAC,EAC1D,EACX,OAASM,EAAK,CACV,QAASC,EAAIJ,EAAK,OAAS,EAAGI,GAAK,EAAGA,IAClC,GAAI,CACAJ,EAAKI,CAAC,EAAE,CACZ,OAASC,EAAY,CACjB,QAAQ,MAAM,kCAAmCA,CAAU,CAC/D,CAEJ,MAAMF,CACV,CACJ,EAEMd,GAAaiB,GAAc,SAASA,EAAG,EAAE,GAAK,EAE9ChB,GAAU,CAACiB,EAAcC,IAAyB,CACpD,IAAMC,EAAWF,EAAK,MAAMtB,GAAe,MAAM,EAAE,MAAM,GAAG,EAAE,IAAII,EAAS,EACrEqB,EAAWF,EAAI,MAAMvB,GAAe,MAAM,EAAE,MAAM,GAAG,EAAE,IAAII,EAAS,EACpEsB,EAAM,KAAK,IAAIF,EAAS,OAAQC,EAAS,MAAM,EACrD,QAASN,EAAI,EAAGA,EAAIO,EAAKP,IAAK,CAC1B,IAAMQ,EAAIH,EAASL,CAAC,GAAK,EACnBS,EAAIH,EAASN,CAAC,GAAK,EACzB,GAAIQ,EAAIC,EAAG,MAAO,GAClB,GAAID,EAAIC,EAAG,MAAO,EACtB,CACA,MAAO,EACX,EAQatB,GAAoBuB,GAAyC,CACtE,GAAI,QAAQ,WAAa,QAAS,OAAO,KAEzC,IAAMC,KAAc,WAAQD,CAAa,EACnCE,KAAiB,YAASF,CAAa,EAEzCG,EAASD,EACb,GAAI,CACA,QAAWE,OAAQ,eAAYH,CAAW,EAAG,CACzC,GAAI,CAACG,EAAK,WAAWjC,EAAc,EAAG,SACtC,IAAIkC,EAAQ,GACZ,GAAI,CACAA,KAAQ,eAAS,QAAKJ,EAAaG,CAAI,CAAC,EAAE,YAAY,CAC1D,OAASE,EAAS,CACd,QAAQ,MAAM,yCAA0CF,EAAME,CAAO,EACrE,QACJ,CACKD,GACD7B,GAAQ4B,EAAMD,CAAM,IAAGA,EAASC,EACxC,CACJ,OAASf,EAAK,CACV,eAAQ,MAAM,iDAAkDA,CAAG,EAC5D,IACX,CAEA,OAAIc,IAAWD,EAAuB,QAC/B,QAAKD,EAAaE,EAAQ,WAAW,CAChD,ICtHA,IAAAI,GAAA,GAAAC,EAAAD,GAAA,2BAAAE,KAAA,IAsBAC,GACAC,EA4CMC,GAEAC,GACFC,GAEEC,GAUAC,GAkBAC,GAcAC,GAWAC,GA0BAC,GAoCAC,GA+BOZ,GA1Nba,GAAAC,EAAA,kBAAAC,IAsBAd,GAAmB,sBACnBC,EAAqE,gBAErEc,KA0CMb,GAAQ,IAAIc,IAAoB,QAAQ,MAAM,wBAAyB,GAAGA,CAAI,EAE9Eb,GAAiB,IAAI,QACvBC,GAAS,GAEPC,GAAmB,OAAM,QAAK,UAAW,YAAY,EAUrDC,GAAoBW,GAA+B,CACrD,GAAI,QAAQ,WAAa,SAAU,SAAO,QAAKA,EAAY,WAAW,EAEtE,IAAMC,EAAO,QAAQ,SAAS,MAAM,KAAG,EACvC,QAASC,EAAID,EAAK,OAAS,EAAGC,GAAK,EAAGA,IAClC,GAAID,EAAKC,CAAC,EAAE,SAAS,MAAM,EACvB,SAAO,QAAKF,EAAYC,EAAKC,CAAC,EAAG,WAAY,WAAW,EAGhE,SAAO,QAAKF,EAAY,WAAY,WAAW,CACnD,EAQMV,GAAoB,IAClB,QAAQ,WAAa,YACd,EAAAa,SAAY,QAAQ,SAAU,KAAM,KAAM,KAAM,IAAI,KAExD,WAAQ,QAAQ,QAAQ,EAU7BZ,GAA2Ba,GAAsD,CACnF,GAAI,MAAM,QAAQA,EAAQ,oBAAoB,EAAG,OAAOA,EAAQ,qBAChE,GAAI,CACA,IAAMC,EAAWD,EAAQ,2BAA2B,EACpD,GAAI,MAAM,QAAQC,GAAU,YAAY,EAAG,OAAOA,EAAS,YAC/D,OAASC,EAAK,CACVrB,GAAM,kCAAmCqB,CAAG,CAChD,CAEJ,EAEMd,GAAiB,CAACY,EAA6BG,IAAmB,CACpE,GAAI,CACA,IAAMC,EAAYjB,GAAwBa,CAAO,EAC3C,CAAE,SAAAK,CAAS,EAAIL,EAErB,GAAI,CAACI,GAAa,CAACC,EAAU,CAMzB,GAAI,QAAQ,WAAa,QAAS,OAClC,IAAMC,EAAQC,MAAiB,WAAQ,QAAQ,QAAQ,CAAC,EACpDD,GAAOE,GAAkBF,EAAOtB,GAAiB,CAAC,EACtD,MACJ,CAEA,IAAMY,KAAa,QAAKS,EAAU,OAAOD,EAAU,KAAK,GAAG,CAAC,EAAE,EAC9D,MAAI,EAAAL,SAAYH,CAAU,OAAM,EAAAG,SAAYb,GAAkB,CAAC,EAAG,OAElEsB,GAAkBvB,GAAiBW,CAAU,EAAGZ,GAAiB,CAAC,CACtE,OAASkB,EAAK,CACVrB,GAAM,IAAIsB,CAAM,mBAAoBD,CAAG,CAC3C,CACJ,EAEMb,GAAmBW,GAAmD,CACxE,GAAI,CAACA,GAAWlB,GAAe,IAAIkB,CAAO,EAAG,OAC7C,GAAI,CACAlB,GAAe,IAAIkB,CAAO,CAC9B,OAASE,EAAK,CACVrB,GAAM,mCAAoCqB,CAAG,EAC7C,MACJ,CAEAF,EAAQ,KAAK,eAAgB,IAAMZ,GAAeY,EAAS,cAAc,CAAC,EAS1E,IAAMS,EAAOT,EAAQ,wBACrB,GAAI,OAAOS,GAAS,WAAY,CAC5B,IAAMC,EAAQD,EAAK,KAAKT,CAAO,EAC/BA,EAAQ,wBAA2BW,GAAyC,CACxED,EAAMC,CAAO,EACb,GAAI,CAAEvB,GAAeY,EAAS,yBAAyB,CAAG,OAASY,EAAG,CAAE/B,GAAM+B,CAAC,CAAG,CACtF,CACJ,CACA,IAAMC,EAASb,EAAQ,oBACvB,GAAI,OAAOa,GAAW,WAAY,CAC9B,IAAMH,EAAQG,EAAO,KAAKb,CAAO,EACjCA,EAAQ,oBAAsB,MAAOc,EAAuBH,IAAyC,CACjG,MAAMD,EAAMI,EAAcH,CAAO,EACjC,GAAI,CAAEvB,GAAeY,EAAS,qBAAqB,CAAG,OAASY,EAAG,CAAE/B,GAAM+B,CAAC,CAAG,CAClF,CACJ,CACJ,EAEMtB,GAAeyB,GAAuD,CACxE,GAAI,CAACA,GAAa,SAAWA,EAAY,yBAA0B,OACnEA,EAAY,yBAA2B,GAEvC,IAAMC,EAAcD,EAAY,QAChCA,EAAY,QAAU,SAAUE,KAASC,EAAM,CAC3C,GAAI,CACA,IAAMC,EAAgBF,GAAM,QACtBG,EAAOD,GAAe,aAAa,EACzC,GAAIC,EACA/B,GAAgB+B,CAAI,UACb,OAAOD,GAAe,gBAAmB,YAAc,CAACA,EAAc,yBAA0B,CAKvGA,EAAc,yBAA2B,GACzC,IAAME,EAAUF,EAAc,eAAe,KAAKA,CAAa,EAC/DA,EAAc,eAAiB,CAACG,EAAWC,EAAeC,IAAmB,CACzE,IAAMC,EAAKJ,EAAQC,EAAWC,EAAeC,CAAc,EAC3D,GAAI,CAAEnC,GAAgB8B,EAAc,aAAa,CAAC,CAAG,OAASP,EAAG,CAAE/B,GAAM+B,CAAC,CAAG,CAC7E,OAAOa,CACX,CACJ,CACJ,OAASb,EAAG,CACR/B,GAAM,uBAAwB+B,CAAC,CACnC,CACA,OAAOI,EAAY,KAAK,KAAMC,EAAM,GAAGC,CAAI,CAC/C,CACJ,EAEaxC,GAAwB,IAAM,CACvC,GAAIK,GAAQ,OACZA,GAAS,GAST,IAAM2C,EAAc,GAAAC,QAAO,UAAU,QACrC,GAAAA,QAAO,UAAU,QAAU,SAAwBC,EAAY,CAC3D,IAAMC,EAASH,EAAY,KAAK,KAAME,CAAE,EACxC,GAAI,CAACA,EAAG,SAAS,sBAAsB,EAAG,OAAOC,EAEjD,MAAI,YAASD,EAAG,QAAQ,MAAO,GAAG,CAAC,IAAM,uBAAwB,CAC7D,GAAI,CAAEtC,GAAYuC,GAAQ,SAAWA,CAAM,CAAG,OAASjB,EAAG,CAAE/B,GAAM+B,CAAC,CAAG,CACtE,GAAAe,QAAO,UAAU,QAAUD,CAC/B,CACA,OAAOG,CACX,CACJ,IChPA,IAAAC,GAAA,OAWAC,GACAC,GAZAC,GAAAC,EAAA,kBAAAC,IAWAJ,GAAoB,oBACpBC,GAA8B,gBAE9BI,KAEA,OAAI,GAAG,cAAe,IAAM,CACxB,GAAI,CACA,IAAMC,EAAQC,MAAiB,YAAQ,QAAQ,QAAQ,CAAC,EACpDD,GAAOE,GAAkBF,KAAO,SAAK,UAAW,YAAY,CAAC,CACrE,OAASG,EAAK,CACV,QAAQ,MAAM,kDAAmDA,CAAG,CACxE,CACJ,CAAC,ICvBD,IAAAC,GAAA,OAmBAC,EACAC,GASMC,GAGAC,GAEAC,GAlCNC,GAAAC,EAAA,kBAAAC,IAkBAC,KACAR,EAAqE,wBACrEC,GAA8B,gBAE9BQ,KACAC,KACAC,KAEA,QAAQ,IAAI,2BAA2B,EAGjCT,GAAe,QAAQ,KAAM,SAG7BC,MAAW,YAAK,YAAQD,EAAY,EAAG,KAAM,WAAW,EAExDE,GAAa,WAAQ,SAAKD,GAAU,cAAc,CAAC,EACzD,QAAQ,KAAM,YAAW,SAAKA,GAAUC,GAAW,IAAI,EAIvD,MAAI,WAAWD,EAAQ,EAEvB,GAAKS,GAuID,QAAQ,IAAI,0DAA0D,MAvIzD,CACb,IAAMC,EAAWC,EAAiB,MAElCC,GAAc,EAOV,GAAI,CACA,cAA4B,sBAAsB,CACtD,OAASC,EAAK,CACV,QAAQ,MAAM,gDAAiDA,CAAG,CACtE,CAQJ,IAJI,QAAQ,WAAa,SAAW,QAAQ,WAAa,UACrD,cAGA,QAAQ,WAAa,SAAWH,EAAS,SAAU,CACnD,IAAMI,EAAgB,OAAK,kBAC3B,OAAK,kBAAoB,SAAUC,EAAU,CACzC,GAAIA,EAAS,CAAC,GAAG,QAAU,QAAS,CAChC,GAAM,CAAE,QAAAC,CAAQ,EAAID,EAAS,CAAC,EAC1B,MAAM,QAAQC,CAAO,GACrBA,EAAQ,KAAK,CACT,MAAO,gBACP,QAAS,GACT,2BAA4B,GAC5B,YAAa,YACb,MAAO,IAAM,MAAI,KAAK,CAC1B,CAAC,CAET,CACA,OAAOF,EAAc,KAAK,KAAMC,CAAQ,CAC5C,CACJ,CAEA,MAAME,UAAsB,EAAAC,QAAS,aAAc,CAC/C,YAAYC,EAA0C,CAClD,GAAI,CAACA,GAAS,gBAAgB,SAAW,CAACA,EAAQ,MAAO,CACrD,MAAMA,CAAO,EACb,MACJ,CAEA,GAAM,CAAE,UAAAC,EAAW,oBAAAC,EAAqB,kBAAAC,EAAmB,eAAAC,EAAgB,YAAAC,EAAa,mBAAAC,EAAoB,gBAAAC,CAAgB,EAAIhB,EAE1HiB,EAAWR,EAAQ,eAAe,QAClCS,EAAeT,EAAQ,QAAU,UACvCA,EAAQ,eAAe,WAAU,SAAK,UAAW,YAAY,EAC7DA,EAAQ,eAAe,QAAU,GAEjCA,EAAQ,eAAe,qBAAuB,GAE1CE,GAAuBO,GAEhBR,EADPD,EAAQ,MAAQ,GAGT,QAAQ,WAAa,SAAWG,GACvC,OAAOH,EAAQ,MAGfI,IACAJ,EAAQ,SAAW,EACnBA,EAAQ,UAAY,GAGpBK,IACAL,EAAQ,YAAc,GACtBA,EAAQ,gBAAkB,aAE1B,QAAQ,WAAa,UAAYM,IACjCN,EAAQ,SAAWM,EACnBN,EAAQ,gBAAkB,aAE1B,QAAQ,WAAa,SAAWO,GAAmBA,IAAoB,SACvEP,EAAQ,mBAAqBO,EAC7BP,EAAQ,gBAAkB,aAG9B,QAAQ,IAAI,gBAAkBQ,EAE9B,MAAMR,CAAO,EAETI,IAEA,KAAK,eAAiB,CAACM,EAAgBC,IAAoB,CAAE,EAErE,CACJ,CACA,OAAO,OAAOb,EAAe,EAAAC,QAAS,aAAa,EAInD,OAAO,eAAeD,EAAe,OAAQ,CAAE,MAAO,gBAAiB,aAAc,EAAK,CAAC,EAG3F,IAAMc,EAAe,gBAAgB,UAAU,EAC/C,OAAO,QAAQ,MAAMA,CAAY,EAAG,QACpC,QAAQ,MAAMA,CAAY,EAAG,QAAU,CACnC,GAAG,EAAAb,QACH,cAAAD,CACJ,EAGAe,GAAY,OAAQ,cAAeC,GAAK,CACpCA,EAAE,IAAI,qEAAsE,EAAI,CACpF,CAAC,EAED,QAAQ,IAAI,YAAW,SAAK,MAAI,QAAQ,UAAU,EAAG,KAAM,UAAU,EAIrE,IAAMC,EAAiB,MAAI,YAAY,aACvC,MAAI,YAAY,aAAe,YAAaC,EAAM,CAC9C,GAAIA,EAAK,CAAC,IAAM,mBAAoB,CAChC,IAAMC,EAAmB,IAAI,KAAKD,EAAK,CAAC,GAAK,IAAI,MAAM,GAAG,CAAC,EAC3DC,EAAiB,IAAI,+BAA+B,EACpDD,EAAK,CAAC,GAAK,CAAC,GAAGC,CAAgB,EAAE,KAAK,GAAG,CAC7C,CACA,OAAOF,EAAe,MAAM,KAAMC,CAAI,CAC1C,EAOA,MAAI,YAAY,aAAa,gCAAgC,EAC7D,MAAI,YAAY,aAAa,qCAAqC,EAClE,MAAI,YAAY,aAAa,wCAAwC,CACzE,CAIA,QAAQ,IAAI,8CAA8C,EAC1D,QAAQ,QAAQ,KAAM,QAAQ,ICpL9BE,ICAAC,ICAAC,IAkBAC,KACA,IAAAC,GAAwB,oBAExBC,KAEAC,KAGI,KC1BJC,IAkBAC,KACA,IAAAC,GAAwB,oBCnBxBC,ICAA,IAAAC,GAAA,GAAAC,EAAAD,GAAA,oBAAAE,KAAAC,IAMAC,KACA,IAAAC,GAAyB,yBACzBC,GAA0B,gBAIpBC,MAAO,cAAU,WAAQ,EAE/B,eAAeC,GAAYC,EAAgB,CACvC,GAAM,CAAE,OAAAC,CAAO,EAAI,MAAMH,GAAK,YAAaE,EAAK,IAAIE,GAAK,CAAC,KAAMA,CAAC,CAAC,EAAE,KAAK,CAAC,EAC1E,OAAOD,CACX,CAUA,IAAIE,GAAiG,KAErG,eAAeC,GAAgB,CAAE,GAAAC,EAAI,KAAAC,EAAM,OAAAC,EAAQ,MAAAC,CAAM,EAAiE,CACtH,GAAIH,IAAOF,IAAkB,GAAI,CAC7B,GAAI,SAAUA,GAAkB,OAAOA,GAAiB,KACxD,GAAI,aAAcA,IAAoBA,GAAiB,UAAY,EAAG,OAAO,IACjF,CAEA,GAAI,CACA,IAAMM,EAAU,IAAI,IAAI,iCAAiC,EACzDA,EAAQ,aAAa,IAAI,OAAQ,GAAGH,CAAI,IAAIC,CAAM,IAAIC,CAAK,EAAE,EAC7DC,EAAQ,aAAa,IAAI,QAAS,OAAO,EACzCA,EAAQ,aAAa,IAAI,SAAU,MAAM,EAEzC,IAAMC,EAAY,IAAM,MAAMD,EAAS,CACnC,QAAS,CACL,aAAcE,EAClB,CACJ,CAAC,EAAE,KAAKC,GAAKA,EAAE,KAAK,CAAC,EAEjBC,EAAO,MAAMH,EAAU,EAEvBG,EAAK,cAAgB,IACrBJ,EAAQ,aAAa,IAAI,OAAQ,GAAGH,CAAI,IAAIC,CAAM,EAAE,EACpDM,EAAO,MAAMH,EAAU,GAG3B,IAAMI,EAAWD,EAAK,QAAQ,KAAKE,GAAQA,EAAK,iBAAmBP,CAAK,GAAKK,EAAK,QAAQ,CAAC,EAErFG,EAAmB,MAAM,MAAMF,EAAS,aAAa,EACtD,KAAKF,GAAKA,EAAE,KAAK,CAAC,EAClB,KAAKC,GAAQ,CACV,IAAMI,EAAQJ,EAAK,MAAM,4CAA4C,EACrE,OAAOI,EAAQA,EAAM,CAAC,EAAE,QAAQ,YAAa,kBAAkB,EAAI,MACvE,CAAC,EACA,MAAM,IAAG,EAAS,EAEvB,OAAAd,GAAmB,CACf,GAAAE,EACA,KAAM,CACF,eAAgBS,EAAS,aACzB,qBAAsBA,EAAS,cAC/B,SAAU,uBAAuB,IAAI,IAAIA,EAAS,YAAY,EAAE,aAAa,IAAI,GAAG,CAAC,GACrF,aAAeA,EAAS,cAAe,QAAQ,UAAW,SAAS,EACnE,cAAeE,CACnB,CACJ,EAEOb,GAAiB,IAC5B,OAASe,EAAG,CACR,eAAQ,MAAM,wDAAyDA,CAAC,EACxEf,GAAmB,CACf,GAAAE,EACA,UAAWA,IAAOF,IAAkB,IAAM,aAAcA,GAAmBA,GAAiB,SAAW,GAAK,CAChH,EACO,IACX,CACJ,CAEA,eAAsBV,IAA4C,CAC9D,GAAI,CACA,MAAMK,GAAK,QAAS,CAAC,SAAS,CAAC,CACnC,MAAgB,CACZ,OAAO,IACX,CAIA,GAFoB,MAAMC,GAAY,CAAC,2BAA4B,mBAAoB,UAAU,CAAC,EAC7F,KAAKoB,GAAOA,EAAI,KAAK,CAAC,IACP,UAAW,OAAO,KAEtC,IAAMC,EAAiB,MAAMrB,GAAY,CAAC,2BAA4B,sBAAuB,UAAU,CAAC,EACnG,KAAKsB,GAAQ,OAAO,WAAWA,EAAK,KAAK,CAAC,CAAC,EAE1CpB,EAAS,MAAMF,GAAY,CAC7B,mBACA,2BACA,2CACA,sCACA,wCACA,0CACA,8CACA,qGACA,WACA,eACJ,CAAC,EAEK,CAACM,EAAIC,EAAME,EAAOD,EAAQe,CAAW,EAAIrB,EAAO,MAAM;AAAA,CAAI,EAAE,OAAOsB,GAAK,CAAC,CAACA,CAAC,EAC3EC,EAAW,OAAO,WAAWF,CAAW,EAExCG,EAAa,MAAMrB,GAAgB,CAAE,GAAAC,EAAI,KAAAC,EAAM,OAAAC,EAAQ,MAAAC,CAAM,CAAC,EAEpE,MAAO,CAAE,KAAAF,EAAM,MAAAE,EAAO,OAAAD,EAAQ,eAAAa,EAAgB,SAAAI,EAAU,GAAGC,CAAW,CAC1E,CCvHA,IAAAC,GAAA,GAAAC,EAAAD,GAAA,+BAAAE,KAAAC,IAQO,SAASD,GAA0BE,EAAuB,CAC7D,IAAMC,EAAuB,IAAMD,EAAE,OAAO,kBAAkB,0DAA0D,EAEpHA,EAAE,OAAO,iBAAiB,EAC1BC,EAAqB,EAErBD,EAAE,OAAO,KAAK,kBAAmB,IAAMC,EAAqB,CAAC,CACrE,CCfA,IAAAC,GAAA,GAAAC,IAMAC,KACA,IAAAC,GAAgD,oBAG1CC,GAAM,CAAC,EAEb,SAASC,IAA6B,CAClC,IAAMC,EAAgB,CAAC,EACvB,QAASC,EAAIH,GAAI,OAAS,EAAGG,GAAK,EAAGA,IAAK,CACtC,GAAM,CAAE,UAAAC,EAAW,UAAAC,CAAU,EAAIL,GAAIG,CAAC,EAEhCG,EAAQ,gBAAa,OAAOF,EAAWC,CAAS,EACtD,GAAI,CAACC,EAAO,CACRN,GAAI,OAAOG,EAAG,CAAC,EACf,QACJ,CAEAD,EAAc,KAAKI,CAAK,CAC5B,CAEA,OAAOJ,CACX,CAEA,OAAI,GAAG,yBAA0B,CAACK,EAAGC,IAAQ,CACzCA,EAAI,YAAY,GAAG,gBAAiB,CAACD,EAAG,CAAE,MAAAD,CAAM,IAAM,CAClDA,GAAO,KAAK,YAAa,IAAM,CAC3B,GAAIA,EAAM,IAAI,WAAW,iCAAiC,EAAG,CACzDL,GAA2B,EAE3B,GAAM,CAAE,UAAAI,EAAW,UAAAD,CAAU,EAAIE,EACjCN,GAAI,KAAK,CAAE,UAAAK,EAAW,UAAAD,CAAU,CAAC,EAEjC,IAAMK,EAAWC,EAAiB,MAAM,SAAS,iBACjD,GAAI,CAACD,GAAU,QAAS,OAExBH,EAAM,kBAAkB;AAAA,6CACKG,EAAS,OAAS,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAMjD,CACL,CACJ,CAAC,CACL,CAAC,CACL,CAAC,EAEDC,EAAiB,kBAAkB,kCAAmCC,GAAa,CAC/E,GAAI,CACAV,GAA2B,EAAE,QAAQK,GACjCA,EAAM,kBAAkB,0BAA0BK,EAAY,GAAG,EAAE,CACvE,CACJ,OAAS,EAAG,CACR,QAAQ,MAAM,4CAA6C,CAAC,CAChE,CACJ,CAAC,EC9DD,IAAAC,GAAA,GAAAC,IAMAC,KACA,IAAAC,GAAoB,oBAEpB,OAAI,GAAG,yBAA0B,CAACC,EAAGC,IAAQ,CACzCA,EAAI,YAAY,GAAG,gBAAiB,CAACD,EAAG,CAAE,MAAAE,CAAM,IAAM,CAClDA,GAAO,KAAK,YAAa,IAAM,CAC3B,GAAIA,EAAM,IAAI,WAAW,0BAA0B,EAAG,CAElD,GAAI,CADaC,EAAiB,MAAM,SAAS,kBAClC,QAAS,OAExBD,EAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAMvB,CACL,CACJ,CAAC,CACL,CAAC,CACL,CAAC,EC1BD,IAAAE,GAAA,GAAAC,EAAAD,GAAA,qBAAAE,KAAAC,IAOA,IAAAC,GAAwB,iBAGlBC,GAAoB,0CAE1B,SAASC,GAAYC,EAAa,CAC9B,OAAO,IAAI,QAAgB,CAACC,EAASC,IAAW,CAC5C,IAAMC,KAAM,YAAQ,IAAI,IAAIH,CAAG,EAAG,CAAE,OAAQ,MAAO,EAAGI,GAAO,CACzDH,EACIG,EAAI,QAAQ,SACNL,GAAYK,EAAI,QAAQ,QAAQ,EAChCJ,CACV,CACJ,CAAC,EACDG,EAAI,GAAG,QAASD,CAAM,EACtBC,EAAI,IAAI,CACZ,CAAC,CACL,CAEA,eAAsBR,GAAgBU,EAAuBL,EAAa,CACtE,OAAKF,GAAkB,KAAKE,CAAG,EAExBD,GAAYC,CAAG,EAFmBA,CAG7C,CC9BA,IAAAM,GAAA,GAAAC,EAAAD,GAAA,+BAAAE,GAAA,6BAAAC,KAAAC,IAQA,eAAsBF,GAA0BG,EAAuBC,EAAcC,EAAgBC,EAAiB,CAClH,IAAMC,EAAMH,EACN,qCACA,0CAEN,GAAI,CACA,IAAMI,EAAM,MAAM,MAAMD,EAAK,CACzB,OAAQ,OACR,QAAS,CACL,eAAgB,mBAChB,cAAiB,kBAAkBF,CAAM,EAC7C,EACA,KAAMC,CACV,CAAC,EAEKG,EAAO,MAAMD,EAAI,KAAK,EAC5B,MAAO,CAAE,OAAQA,EAAI,OAAQ,KAAAC,CAAK,CACtC,OAASC,EAAG,CACR,MAAO,CAAE,OAAQ,GAAI,KAAM,OAAOA,CAAC,CAAE,CACzC,CACJ,CAEA,eAAsBT,GAAyBE,EAAuBQ,EAAeC,EAAcC,EAAoBC,EAAoB,CACvI,IAAMP,EAAM,2CAEZ,GAAI,CACA,IAAMC,EAAM,MAAM,MAAMD,EAAK,CACzB,OAAQ,OACR,QAAS,CACL,eAAgB,mBAChB,OAAU,gBAAgBI,CAAK,EACnC,EACA,KAAM,KAAK,UAAU,CACjB,KAAAC,EACA,KAAMC,EACN,GAAIC,EACJ,MAAO,UACX,CAAC,CACL,CAAC,EAEKL,EAAO,MAAMD,EAAI,KAAK,EAC5B,MAAO,CAAE,OAAQA,EAAI,OAAQ,KAAAC,CAAK,CACtC,OAASC,EAAG,CACR,MAAO,CAAE,OAAQ,GAAI,KAAM,OAAOA,CAAC,CAAE,CACzC,CACJ,CCrDA,IAAAK,GAAA,GAAAC,EAAAD,GAAA,mBAAAE,KAAAC,IAMA,IAAAC,GAAoB,oBACpBC,GAA6B,uBAC7BC,GAAoC,gBAEpC,eAAsBJ,GAAcK,EAAQC,EAAkB,CAC1DA,KAAW,cAAUA,CAAQ,EAC7B,IAAMC,KAAW,aAASD,CAAQ,EAC5BE,KAAkC,cAAU,OAAI,QAAQ,UAAU,EAAI,GAAG,EAC/E,GAAI,CAAC,sBAAsB,KAAKD,CAAQ,GAAK,CAACD,EAAS,WAAWE,CAA+B,EAAG,OAAO,KAE3G,GAAI,CACA,IAAMC,EAAM,QAAM,aAASH,CAAQ,EACnC,gBAAGA,CAAQ,EAAE,MAAM,IAAM,CAAE,CAAC,EACrB,IAAI,WAAWG,EAAI,MAAM,CACpC,MAAQ,CACJ,OAAO,IACX,CACJ,CCvBA,IAAAC,GAAA,GAAAC,EAAAD,GAAA,iBAAAE,GAAA,kBAAAC,KAAAC,IAMA,IAAAC,GAAqC,iBAEjCC,GAA2B,KAExB,SAASH,GAAcI,EAAGC,EAAW,CACxCA,EAAK,YAAcA,EAAK,KACxB,IAAMC,EAAO,KAAK,UAAUD,CAAI,EAChCF,QAAc,iBAAa,MAAM,EACjCA,GAAU,KAAKG,EAAM,MAAO,WAAW,CAC3C,CAEO,SAASP,IAAc,CAC1BI,IAAW,MAAM,EACjBA,GAAY,IAChB,CCpBA,IAAAI,GAAA,GAAAC,IAMAC,KACA,IAAAC,GAAoB,oBCPpBC,IAAA,IAAOC,GAAQ;EDUf,OAAI,GAAG,yBAA0B,CAACC,EAAGC,IAAQ,CACzCA,EAAI,YAAY,GAAG,gBAAiB,CAACD,EAAG,CAAE,MAAAE,CAAM,IAAM,CAClDA,GAAO,KAAK,YAAa,IAAM,CACtBC,EAAiB,MAAM,SAAS,gBAAgB,UAEjDD,EAAM,IAAI,SAAS,oBAAoB,EACvCA,EAAM,kBAAkBE,EAAO,EACxBF,EAAM,QAAQ,IAAI,SAAS,oBAAoB,GACtDA,EAAM,OAAO,kBAAkBE,EAAO,EAE9C,CAAC,CACL,CAAC,CACL,CAAC,EEtBD,IAAAC,GAAA,GAAAC,EAAAD,GAAA,qBAAAE,GAAA,wBAAAC,GAAA,iCAAAC,GAAA,wBAAAC,GAAA,yBAAAC,GAAA,0BAAAC,GAAA,kBAAAC,KAAAC,IAMAC,KCNAC,IAMA,IAAAC,GAAgC,gBAEzB,SAASC,EAAeC,EAAkBC,EAAc,CAC3D,IAAMC,KAAqB,cAAUF,EAAW,GAAG,EAC7CG,KAAU,SAAKH,EAAUC,CAAI,EAC7BG,KAAiB,cAAUD,CAAO,EACxC,OAAOC,OAAmB,cAAUJ,CAAQ,GAAKI,EAAe,WAAWF,CAAkB,EACvFE,EACA,IACV,CDPA,IAAAC,GAA2B,kBAC3BC,GAAgD,oBAChDC,GAA+C,uBAC/CC,EAAiD,gBAe3CC,GAAgB,IAAI,IACpBC,GAAc,IAAI,IAClBC,MAAkB,QAAKC,GAAU,YAAY,EAC7CC,GAAqB,IAAI,IAAI,CAAC,OAAQ,MAAM,CAAC,EAC7CC,GAAgB,IAAM,KAAO,KAC7BC,GAAqC,CACvC,OAAQ,YACR,OAAQ,WACZ,EAEMC,GAAc,OAAO,KAAK,CAC5B,IAAM,IAAM,IAAM,IAClB,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAC9F,CAAC,EACKC,GAAmBD,GAAY,OAErC,SAASE,GAAYC,EAA0B,CAC3C,OAAOJ,MAAW,WAAQI,CAAQ,EAAE,YAAY,CAAC,GAAK,0BAC1D,CAEA,SAASC,GAAgBC,EAAsB,CAC3C,IAAMC,EAAMD,EAAK,QAAQL,EAAW,EACpC,OAAOM,IAAQ,GAAKD,EAAOA,EAAK,SAAS,EAAGC,CAAG,CACnD,CAEA,eAAeC,GAAkBJ,EAAuD,CACpF,GAAI,CACA,IAAMK,EAAM,QAAM,aAASL,CAAQ,EACnC,GAAIK,EAAI,QAAUP,GAAkB,OAAO,KAE3C,IAAMQ,EAAYD,EAAI,QAAQR,EAAW,EACzC,GAAIS,IAAc,GAAI,OAAO,KAE7B,IAAMC,EAAUF,EAAI,SAASC,EAAYR,EAAgB,EAAE,SAAS,OAAO,EACrEU,EAAS,KAAK,MAAMD,CAAO,EACjC,OAAIC,GAAU,OAAOA,GAAW,SAAiB,MAAM,QAAQA,CAAM,EAAIA,EAAS,CAACA,CAAM,EAClF,IACX,MAAQ,CACJ,OAAO,IACX,CACJ,CAEA,eAAsBC,GAAgBC,EAAuF,CACzH,GAAI,CACA,GAAM,CAAE,UAAAC,EAAW,SAAAC,CAAS,EAAI,MAAM,UAAO,eAAe,CACxD,MAAO,mBACP,QAAS,CAAC,CAAE,KAAM,YAAa,WAAY,CAAC,MAAO,KAAK,CAAE,CAAC,EAC3D,WAAY,CAAC,UAAU,CAC3B,CAAC,EAED,GAAIA,GAAYD,EAAU,SAAW,EAAG,OAAO,KAE/C,IAAME,KAAe,WAAQF,EAAU,CAAC,CAAC,EACzC,GAAI,CAACjB,GAAmB,OAAI,WAAQmB,CAAY,EAAE,YAAY,CAAC,EAAG,OAAO,KAEzE,IAAMC,KAAQ,eAAW,EACzB,OAAAxB,GAAc,IAAIwB,EAAOD,CAAY,EAE9B,CAAE,MAAAC,EAAO,QAAM,YAASD,CAAY,EAAG,KAAMd,GAAYc,CAAY,CAAE,CAClF,MAAQ,CACJ,OAAO,IACX,CACJ,CAEA,eAAsBE,GAAoBL,EAAuBI,EAAuC,CACpG,IAAME,EAAe1B,GAAc,IAAIwB,CAAK,EAC5C,GAAI,CAACE,EAAc,OAAO,KAC1B1B,GAAc,OAAOwB,CAAK,EAE1B,GAAI,CACA,IAAMG,KAAS,QAAKzB,MAAiB,eAAW,CAAC,EAC3C0B,KAAU,QAAKD,KAAQ,YAASD,CAAY,CAAC,EAEnD,GAAI,CAACG,EAAeF,KAAQ,YAASD,CAAY,CAAC,EAAG,OAAO,KAE5D,QAAM,UAAMC,EAAQ,CAAE,UAAW,EAAK,CAAC,EACvC,QAAM,cAAUC,EAASjB,GAAgB,QAAM,aAASe,CAAY,CAAC,CAAC,EAEtE,IAAMI,KAAW,eAAW,EAC5B,OAAA7B,GAAY,IAAI6B,EAAU,CAAE,OAAAH,EAAQ,QAAAC,CAAQ,CAAC,EACtCE,CACX,MAAQ,CACJ,OAAO,IACX,CACJ,CAEA,eAAsBC,GAA6BX,EAAuBY,EAAcpB,EAA0C,CAC9H,GAAI,OAAOoB,GAAS,UAAY,EAAEpB,aAAgB,aAAeA,EAAK,aAAe,GAAKA,EAAK,WAAaP,GAAe,OAAO,KAElI,IAAM4B,KAAW,YAASD,CAAI,EAC9B,GAAIC,IAAaD,GAAQ,CAAC5B,GAAmB,OAAI,WAAQ6B,CAAQ,EAAE,YAAY,CAAC,EAAG,OAAO,KAE1F,GAAI,CACA,IAAMN,KAAS,QAAKzB,MAAiB,eAAW,CAAC,EAC3C0B,KAAU,QAAKD,EAAQM,CAAQ,EAErC,GAAI,CAACJ,EAAeF,EAAQM,CAAQ,EAAG,OAAO,KAE9C,QAAM,UAAMN,EAAQ,CAAE,UAAW,EAAK,CAAC,EACvC,QAAM,cAAUC,EAAShB,CAAI,EAE7B,IAAMkB,KAAW,eAAW,EAC5B,OAAA7B,GAAY,IAAI6B,EAAU,CAAE,OAAAH,EAAQ,QAAAC,CAAQ,CAAC,EACtCE,CACX,MAAQ,CACJ,OAAO,IACX,CACJ,CAKO,SAASI,GAAqBd,EAAuBI,EAA8B,CACtF,OAAOvB,GAAY,IAAIuB,CAAK,GAAG,SAAW,IAC9C,CAEA,eAAsBW,GAAcf,EAAuBI,EAA2C,CAClG,IAAMY,EAAQnC,GAAY,IAAIuB,CAAK,EACnC,GAAI,CAACY,EAAO,OAAO,KAEnB,GAAI,CACA,IAAMrB,EAAM,QAAM,aAASqB,EAAM,OAAO,EACxC,OAAO,IAAI,WAAWrB,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,CACpE,MAAQ,CACJ,OAAO,IACX,CACJ,CAEA,eAAsBsB,GAAoBjB,EAAuBI,EAA8B,CAC3F,IAAMY,EAAQnC,GAAY,IAAIuB,CAAK,EACnC,GAAKY,IAELnC,GAAY,OAAOuB,CAAK,EAEpB,EAACK,EAAe3B,GAAiBkC,EAAM,MAAM,GAEjD,GAAI,CACA,QAAM,OAAGA,EAAM,OAAQ,CAAE,MAAO,GAAM,UAAW,EAAK,CAAC,CAC3D,MAAQ,CAAE,CACd,CAEA,eAAsBE,GAAsBlB,EAAuBI,EAAoD,CACnH,IAAME,EAAe1B,GAAc,IAAIwB,CAAK,EAC5C,OAAKE,EAEEZ,GAAkBY,CAAY,EAFX,IAG9B,CE5KA,IAAAa,GAAA,GAAAC,ICAAC,IAMAC,KACA,IAAAC,GAAwB,oBAIXC,GAAa,CAAC,aAAa,EAC3BC,GAAW,CAAC,GAAGD,GAAY,SAAS,EACpCE,GAAS,CAAC,YAAa,UAAU,EACjCC,GAAmB,CAAC,GAAGF,GAAU,WAAW,EAC5CG,EAAiB,CAAC,GAAGH,GAAU,GAAGC,EAAM,EACxCG,GAAwB,CAAC,GAAGD,EAAgB,aAAc,YAAY,EACtEE,GAAS,CAAC,YAAa,cAAe,UAAW,YAAa,WAAY,YAAa,YAAY,EAKnGC,GAAyB,CAClC,qBAAsBH,EACtB,qBAAsBA,EACtB,cAAeA,EACf,cAAeA,EAEf,cAAeA,EACf,aAAcA,EACd,4BAA6BA,EAC7B,cAAeA,EACf,aAAcA,EACd,kBAAmBA,EACnB,eAAgBA,EAEhB,gBAAiBA,EACjB,eAAgBA,EAEhB,uBAAwBF,GAExB,cAAeD,GACf,WAAYA,GACZ,eAAgBA,GAChB,mBAAoBG,EAEpB,qBAAsBA,EACtB,uBAAwBH,GAIxB,uBAAwBI,GACxB,mBAAoBA,GAGpB,iBAAkBL,GAClB,wBAAyBA,GACzB,kBAAmBA,GACnB,qBAAsBA,GACtB,sBAAuBA,GACvB,cAAeA,GACf,gBAAiBA,GACjB,8BAA+BA,GAC/B,gBAAiBC,GACjB,uBAAwBA,GACxB,wBAAyBD,GACzB,4BAA6BC,GAC7B,mBAAoBD,GACpB,yBAA0BC,GAC1B,yBAA0BA,GAC1B,uBAAwBA,GAGxB,cAAeE,GACf,aAAcA,EAClB,EAEMK,GAAa,CAACC,EAAoBC,IAC7B,OAAO,KAAKD,CAAO,EAAE,KAAKE,GAAKA,EAAE,YAAY,IAAMD,CAAU,EAGlEE,GAAeC,GAA8B,CAC/C,IAAMC,EAAoB,CAAC,EAC3B,OAAAD,EAAO,MAAM,GAAG,EAAE,QAAQE,GAAa,CACnC,GAAM,CAACC,EAAc,GAAGC,CAAc,EAAIF,EAAU,KAAK,EAAE,MAAM,MAAM,EACnEC,GAAgB,CAAC,OAAO,UAAU,eAAe,KAAKF,EAAQE,CAAY,IAC1EF,EAAOE,CAAY,EAAIC,EAE/B,CAAC,EAEMH,CACX,EAEMI,GAAmBL,GACrB,OAAO,QAAQA,CAAM,EAChB,OAAO,CAAC,CAAC,CAAEM,CAAM,IAAMA,GAAQ,MAAM,EACrC,IAAIJ,GAAaA,EAAU,KAAK,EAAE,KAAK,GAAG,CAAC,EAC3C,KAAK,IAAI,EAEZK,GAAYX,GAAuB,CACrC,IAAMY,EAAmBb,GAAWC,EAAS,qCAAqC,EAC9EY,GACA,OAAOZ,EAAQY,CAAgB,EAEnC,IAAMC,EAASd,GAAWC,EAAS,yBAAyB,EAE5D,GAAIa,EAAQ,CACR,IAAMC,EAAMX,GAAYH,EAAQa,CAAM,EAAE,CAAC,CAAC,EAEpCE,EAAgB,CAACT,KAAsBI,IAAqB,CAC9DI,EAAIR,CAAS,IAAM,CAAC,GAAIQ,EAAI,aAAa,GAAK,CAAC,CAAE,EACjDA,EAAIR,CAAS,EAAE,KAAK,GAAGI,CAAM,CACjC,EAEAK,EAAc,YAAa,iBAAiB,EAI5CA,EAAc,aAAc,kBAAmB,eAAe,EAE9D,QAAWT,IAAa,CAAC,YAAa,cAAe,UAAW,WAAY,YAAa,YAAY,EACjGS,EAAcT,EAAW,QAAS,QAAS,WAAY,WAAY,YAAa,UAAU,EAG9F,OAAW,CAACU,EAAMC,CAAU,IAAK,OAAO,QAAQC,EAAe,MAAM,cAAc,EAC/E,QAAWZ,KAAaW,EACpBF,EAAcT,EAAWU,CAAI,EAIrC,OAAW,CAACA,EAAMC,CAAU,IAAK,OAAO,QAAQnB,EAAW,EACvD,QAAWQ,KAAaW,EACpBF,EAAcT,EAAWU,CAAI,EAIrChB,EAAQa,CAAM,EAAI,CAACJ,GAAgBK,CAAG,CAAC,CAC3C,CACJ,EAEO,SAASK,IAAU,CACtB,WAAQ,eAAe,WAAW,kBAAkB,CAAC,CAAE,gBAAAC,EAAiB,aAAAC,CAAa,EAAGC,IAAO,CAC3F,GAAIF,IACIC,IAAiB,aACjBV,GAASS,CAAe,EAIxBC,IAAiB,cAAc,CAC/B,IAAMR,EAASd,GAAWqB,EAAiB,cAAc,EACrDP,IACAO,EAAgBP,CAAM,EAAI,CAAC,UAAU,EAC7C,CAGJS,EAAG,CAAE,OAAQ,GAAO,gBAAAF,CAAgB,CAAC,CACzC,CAAC,EAKD,WAAQ,eAAe,WAAW,kBAAoB,IAAM,CAAE,CAClE,CDzJAG,GAAY,GAAG,EAAIC,GETnB,IAAAC,GAAA,GAAAC,EAAAD,GAAA,qBAAAE,KAAAC,IAQA,IAAMC,GAAe,IAAI,IAAI,CACzB,qBACA,8BACA,8BACA,sBACJ,CAAC,EAID,eAAsBF,GAAgBG,EAAYC,EAA+B,CAC7E,GAAM,CAAE,aAAAC,EAAc,SAAAC,CAAS,EAAIF,EAC7BG,EAAM,IAAI,MAAMH,EAAW,GAAG,EACpC,GAAI,CAACG,GAAO,CAACL,GAAa,IAAIK,EAAI,QAAQ,EAAG,MAAM,IAAI,MAAM,aAAa,EAE1E,IAAMC,EAAM,MAAM,MAAMD,EAAK,CAAE,QAAS,CAAE,OAAQ,KAAM,CAAE,CAAC,EAC3D,GAAI,CAACC,EAAI,GAAI,MAAM,IAAI,MAAM,cAAc,EAE3C,IAAMC,EAAO,MAAMD,EAAI,KAAK,EACtBE,EAAOD,EAAK,MAAQJ,GAAgB,2BACpCM,EAAO,MAAMF,EAAK,YAAY,EAEpC,MAAO,CAAE,KAAAC,EAAM,KAAAC,EAAM,SAAAL,CAAS,CAClC,CC9BA,IAAAM,GAAA,GAAAC,EAAAD,GAAA,uBAAAE,GAAA,cAAAC,GAAA,gBAAAC,GAAA,wBAAAC,GAAA,mBAAAC,GAAA,mBAAAC,GAAA,oBAAAC,GAAA,mBAAAC,GAAA,sBAAAC,GAAA,iBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,eAAAC,GAAA,mBAAAC,GAAA,qBAAAC,GAAA,mBAAAC,KAAAC,IAUA,eAAsBP,GAClBQ,EACAC,EACAC,EACAC,EAC2B,CAC3B,GAAI,CACA,IAAMC,EAAW,IAAI,SACrBA,EAAS,OAAO,OAAQ,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAExD,IAAMG,EAAW,MAAM,MAAM,oCAAqC,CAC9D,OAAQ,OACR,QAAS,CACL,cAAiBF,CACrB,EACA,KAAMC,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,IAAMC,EAAO,MAAMF,EAAS,KAAK,EAEjC,OAAIE,EAAK,QACE,CAAE,QAAS,GAAM,IAAKA,EAAK,OAAQ,EAGvC,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAClE,OAASC,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBpB,GAClBY,EACAC,EACAC,EACAO,EAC2B,CAC3B,GAAI,CACA,IAAML,EAAW,IAAI,SACrBA,EAAS,OAAO,OAAQ,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAExD,IAAMG,EAAW,MAAM,MAAM,6BAA8B,CACvD,OAAQ,OACR,QAAS,CACL,IAAAI,CACJ,EACA,KAAML,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,IAAMC,EAAO,MAAMF,EAAS,KAAK,EAEjC,MAAI,CAACE,GAAQ,CAACA,EAAK,QACR,CAAE,QAAS,GAAO,MAAOA,GAAM,OAAS,eAAgB,EAG/DA,EAAK,UAAYA,EAAK,OACf,CAAE,QAAS,GAAM,IAAKA,EAAK,UAAYA,EAAK,MAAO,EAGvD,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAClE,OAASC,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBvB,GAClBe,EACAC,EACAC,EAC2B,CAC3B,GAAI,CACA,IAAME,EAAW,IAAI,SACrBA,EAAS,OAAO,OAAQ,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAExD,IAAMG,EAAW,MAAM,MAAM,iBAAkB,CAC3C,OAAQ,OACR,KAAMD,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,IAAMI,GAAQ,MAAML,EAAS,KAAK,GAAG,KAAK,EAC1C,OAAKK,EAIE,CAAE,QAAS,GAAM,IAAKA,CAAK,EAHvB,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAItE,OAASF,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBb,GAClBK,EACAC,EACAU,EACAC,EAC2B,CAC3B,GAAI,CACA,IAAMP,EAAW,MAAM,MAAMM,EAAW,CACpC,OAAQ,MACR,QAAAC,EACA,KAAM,IAAI,KAAK,CAACX,CAAU,CAAC,CAC/B,CAAC,EAED,GAAI,CAACI,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,MAAO,CAAE,QAAS,GAAM,IAAKK,CAAU,CAC3C,OAASH,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBrB,GAClBa,EACAC,EACAC,EACAW,EAC2B,CAC3B,GAAI,CACA,IAAMT,EAAW,IAAI,SACrBA,EAAS,OAAO,UAAW,YAAY,EACnCS,GACAT,EAAS,OAAO,WAAYS,CAAQ,EAExCT,EAAS,OAAO,eAAgB,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAEhE,IAAMG,EAAW,MAAM,MAAM,kCAAmC,CAC5D,OAAQ,OACR,KAAMD,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,IAAMI,GAAQ,MAAML,EAAS,KAAK,GAAG,KAAK,EAC1C,OAAKK,EAIE,CAAE,QAAS,GAAM,IAAKA,CAAK,EAHvB,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAItE,OAASF,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBjB,GAClBS,EACAC,EACAC,EACAY,EAC2B,CAC3B,GAAI,CACA,IAAMV,EAAW,IAAI,SACrBA,EAAS,OAAO,UAAW,YAAY,EACvCA,EAAS,OAAO,OAAQU,CAAM,EAC9BV,EAAS,OAAO,eAAgB,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAEhE,IAAMG,EAAW,MAAM,MAAM,2DAA4D,CACrF,OAAQ,OACR,KAAMD,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,IAAMI,GAAQ,MAAML,EAAS,KAAK,GAAG,KAAK,EAC1C,OAAKK,EAIE,CAAE,QAAS,GAAM,IAAKA,CAAK,EAHvB,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAItE,OAASF,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBlB,GAClBU,EACAC,EACAC,EACAa,EAC2B,CAC3B,GAAI,CACA,IAAMX,EAAW,IAAI,SACjBW,GAAO,KAAK,GACZX,EAAS,OAAO,QAASW,EAAM,KAAK,CAAC,EAEzCX,EAAS,OAAO,OAAQ,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAExD,IAAMG,EAAW,MAAM,MAAM,sCAAuC,CAChE,OAAQ,OACR,KAAMD,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,IAAMC,EAAO,MAAMF,EAAS,KAAK,EAMjC,GAAIE,EAAK,SAAW,KAChB,MAAO,CAAE,QAAS,GAAO,MAAOA,EAAK,OAAS,eAAgB,EAGlE,IAAMS,EAAMT,EAAK,MAAM,eAAiBA,EAAK,MAAM,KAAO,uBAAuBA,EAAK,KAAK,IAAI,GAAK,IACpG,OAAKS,EAIE,CAAE,QAAS,GAAM,IAAAA,CAAI,EAHjB,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAItE,OAASR,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBX,GAClBG,EACAC,EACAC,EAC2B,CAC3B,GAAI,CACA,IAAME,EAAW,IAAI,SACrBA,EAAS,OAAO,OAAQ,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAExD,IAAMG,EAAW,MAAM,MAAM,qCAAsC,CAC/D,OAAQ,OACR,KAAMD,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,IAAMC,EAAO,MAAMF,EAAS,KAAK,EAC3BY,EAASV,EAAK,MAAM,KAAO,GACjC,MAAI,CAACU,GAAUV,EAAK,SAAW,UACpB,CAAE,QAAS,GAAO,MAAO,6BAA8B,EAO3D,CAAE,QAAS,GAAM,IAJZU,EAAO,SAAS,eAAe,GAAK,CAACA,EAAO,SAAS,MAAM,EACjEA,EAAO,QAAQ,uBAAwB,oBAAoB,EAC3DA,CAEsB,CAChC,OAAST,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBtB,GAClBc,EACAC,EACAC,EAC2B,CAC3B,GAAI,CACA,IAAMG,EAAW,MAAM,MAAM,6BAA6B,mBAAmBH,CAAQ,CAAC,GAAI,CACtF,OAAQ,MACR,KAAM,IAAI,KAAK,CAACD,CAAU,CAAC,CAC/B,CAAC,EAEKS,EAAO,MAAML,EAAS,KAAK,EACjC,GAAI,CAACA,EAAS,GACV,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIK,CAAI,EAAG,EAGhF,GAAI,CACA,IAAMH,EAAO,KAAK,MAAMG,CAAI,EAC5B,GAAIH,EAAK,OAAS,KAAOA,EAAK,MAAM,GAChC,MAAO,CAAE,QAAS,GAAM,IAAK,2BAA2BA,EAAK,KAAK,EAAE,EAAG,CAE/E,MAAQ,CACR,CAEA,IAAMS,EAAMN,EAAK,KAAK,EACtB,OAAKM,EAIE,CAAE,QAAS,GAAM,IAAAA,CAAI,EAHjB,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAItE,OAASR,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBZ,GAClBI,EACAC,EACAC,EAC2B,CAC3B,GAAI,CACA,IAAME,EAAW,IAAI,SACrBA,EAAS,OAAO,OAAQ,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAExD,IAAMG,EAAW,MAAM,MAAM,yBAA0B,CACnD,OAAQ,OACR,KAAMD,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,IAAMU,GAAO,MAAMX,EAAS,KAAK,GAAG,KAAK,EACzC,OAAKW,EAIE,CAAE,QAAS,GAAM,IAAAA,CAAI,EAHjB,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAItE,OAASR,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBnB,GAClBW,EACAC,EACAC,EAC2B,CAC3B,GAAI,CACA,IAAMgB,EAAQ,GAAG,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAG,EAAE,CAAC,GAC5EP,EAAY,uBAAuBO,CAAK,IAAI,mBAAmBhB,CAAQ,CAAC,GAExEE,EAAW,IAAI,SACrBA,EAAS,OAAO,OAAQ,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAExD,IAAMG,EAAW,MAAM,MAAMM,EAAW,CACpC,OAAQ,OACR,KAAMP,CACV,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,MAAO,CAAE,QAAS,GAAM,IAAK,uBAAuBY,CAAK,IAAI,mBAAmBhB,CAAQ,CAAC,EAAG,CAChG,OAASM,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBd,GAClBM,EACAC,EACAC,EACAiB,EAC2B,CAC3B,GAAI,CACA,IAAMf,EAAW,IAAI,SACrBA,EAAS,OAAO,OAAQ,IAAI,KAAK,CAACH,CAAU,CAAC,EAAGC,CAAQ,EAExD,IAAMG,EAAW,MAAM,MAAM,yBAA0B,CACnD,OAAQ,OACR,QAAS,CACL,cAAec,CACnB,EACA,KAAMf,CACV,CAAC,EAEKM,EAAO,MAAML,EAAS,KAAK,EAC7BE,EAAoD,KAExD,GAAI,CACAA,EAAOG,EAAO,KAAK,MAAMA,CAAI,EAAI,IACrC,MAAQ,CACJH,EAAO,IACX,CAEA,GAAI,CAACF,EAAS,GACV,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIK,CAAI,EAAG,EAGhF,IAAMM,EAAMT,GAAM,UAAYA,GAAM,KAAOG,EAAK,KAAK,EACrD,OAAKM,EAIE,CAAE,QAAS,GAAM,IAAAA,CAAI,EAHjB,CAAE,QAAS,GAAO,MAAO,6BAA8B,CAItE,OAASR,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBf,GAClBO,EACAC,EACAC,EACAkB,EAC2B,CAC3B,GAAI,CACA,IAAMR,EAAkC,CAAC,EACrCQ,GAAQ,KAAK,IACbR,EAAQ,cAAgB,SAAS,OAAO,KAAK,IAAIQ,EAAO,KAAK,CAAC,EAAE,EAAE,SAAS,QAAQ,CAAC,IAGxF,IAAMf,EAAW,MAAM,MAAM,mCAAmC,mBAAmBH,CAAQ,CAAC,GAAI,CAC5F,OAAQ,MACR,QAAAU,EACA,KAAM,IAAI,KAAK,CAACX,CAAU,CAAC,CAC/B,CAAC,EAEKS,EAAO,MAAML,EAAS,KAAK,EAC7BE,EAAkD,KACtD,GAAI,CACAA,EAAOG,EAAO,KAAK,MAAMA,CAAI,EAAI,IACrC,MAAQ,CACJH,EAAO,IACX,CAEA,OAAKF,EAAS,GAITE,GAAM,GAIJ,CAAE,QAAS,GAAM,IAAK,4BAA4BA,EAAK,EAAE,EAAG,EAHxD,CAAE,QAAS,GAAO,MAAOA,GAAM,SAAW,6BAA8B,EAJxE,CAAE,QAAS,GAAO,MAAOA,GAAM,SAAW,kBAAkBF,EAAS,MAAM,IAAIK,CAAI,EAAG,CAQrG,OAASF,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,SAASa,GAAgBL,EAAsB,CAC3C,GAAI,CAEA,OADe,IAAI,IAAIA,CAAG,EACZ,WAAa,QAC/B,MAAQ,CACJ,MAAO,EACX,CACJ,CAEA,eAAsBlB,GAClBE,EACAC,EACAU,EACAC,EAC2B,CAC3B,GAAI,CAACS,GAAgBV,CAAS,EAC1B,MAAO,CAAE,QAAS,GAAO,MAAO,iCAAkC,EAGtE,GAAI,CACA,IAAMN,EAAW,MAAM,MAAMM,EAAW,CACpC,OAAQ,MACR,QAAAC,EACA,KAAM,IAAI,KAAK,CAACX,CAAU,CAAC,CAC/B,CAAC,EAED,GAAI,CAACI,EAAS,GAAI,CACd,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAO,CAAE,QAAS,GAAO,MAAO,kBAAkBA,EAAS,MAAM,IAAIC,CAAS,EAAG,CACrF,CAEA,MAAO,CAAE,QAAS,GAAM,IAAKK,CAAU,CAC3C,OAASH,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBzB,GAClBiB,EACAsB,EACAV,EACAW,EAC2B,CAC3B,GAAI,CAACF,GAAgBC,CAAM,EACvB,MAAO,CAAE,QAAS,GAAO,MAAO,yCAA0C,EAG9E,GAAI,CACA,IAAMjB,EAAW,MAAM,MAAMiB,EAAQ,CACjC,OAAQ,OACR,QAAAV,EACA,KAAAW,CACJ,CAAC,EAEKb,EAAO,MAAML,EAAS,KAAK,EAEjC,GAAI,CAACA,EAAS,GACV,MAAO,CAAE,QAAS,GAAO,MAAO,0BAA0BA,EAAS,MAAM,IAAIK,EAAK,MAAM,EAAG,GAAG,CAAC,EAAG,EAGtG,IAAIH,EACJ,GAAI,CACAA,EAAO,KAAK,MAAMG,CAAI,CAC1B,MAAQ,CACJ,MAAO,CAAE,QAAS,GAAO,MAAO,2BAA2BA,EAAK,MAAM,EAAG,GAAG,CAAC,EAAG,CACpF,CAEA,IAAMK,EAAQR,GAAM,KAAK,MAAM,MAC/B,OAAKQ,EAIE,CAAE,QAAS,GAAM,IAAKA,CAAM,EAHxB,CAAE,QAAS,GAAO,MAAO,mCAAoC,CAI5E,OAASP,EAAG,CACR,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CACrF,CACJ,CAEA,eAAsBxB,GAElBgB,EAEAgB,EAEwF,CAExF,GAAI,CAEA,IAAMX,EAAW,MAAM,MAAMW,CAAG,EAEhC,GAAI,CAACX,EAAS,GAEV,MAAO,CAAE,QAAS,GAAO,MAAO,iBAAiBA,EAAS,MAAM,IAAIA,EAAS,UAAU,EAAG,EAI9F,IAAME,EAAO,MAAMF,EAAS,YAAY,EAElCmB,EAAcnB,EAAS,QAAQ,IAAI,cAAc,GAAK,GAE5D,MAAO,CAAE,QAAS,GAAM,KAAAE,EAAM,YAAAiB,CAAY,CAE9C,OAAShB,EAAG,CAER,MAAO,CAAE,QAAS,GAAO,MAAOA,aAAa,MAAQA,EAAE,QAAU,eAAgB,CAErF,CAEJ,CCxjBA,IAAAiB,GAAA,GAAAC,EAAAD,GAAA,gBAAAE,KAAAC,IAMA,IAAMC,GAAsB,IAAI,IAAI,CAChC,qBACA,8BACA,8BACA,uBACA,kBACA,YACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACJ,CAAC,EAED,eAAsBF,GAAWG,EAAYC,EAAa,CACtD,IAAMC,EAAS,IAAI,MAAMD,CAAG,EAC5B,GAAI,CAACC,GAAU,CAACH,GAAoB,IAAIG,EAAO,QAAQ,EACnD,MAAM,IAAI,MAAM,aAAa,EAEjC,IAAMC,EAAM,MAAM,MAAMD,EAAQ,CAAE,QAAS,CAAE,OAAQ,KAAM,CAAE,CAAC,EAC9D,GAAI,CAACC,EAAI,GAAI,MAAM,IAAI,MAAM,gBAAgBA,EAAI,MAAM,EAAE,EAEzD,IAAMC,EAAO,MAAMD,EAAI,KAAK,EAC5B,GAAIC,EAAK,OAAS,EAAG,MAAM,IAAI,MAAM,eAAeD,EAAI,MAAM,UAAUF,CAAG,EAAE,EAE7E,MAAO,CACH,KAAM,MAAMG,EAAK,YAAY,EAC7B,KAAMA,EAAK,MAAQ,0BACvB,CACJ,CCpCA,IAAAC,GAAA,GAAAC,EAAAD,GAAA,eAAAE,GAAA,eAAAC,GAAA,yBAAAC,GAAA,qBAAAC,GAAA,uBAAAC,GAAA,0BAAAC,GAAA,uCAAAC,GAAA,4BAAAC,GAAA,6BAAAC,GAAA,mBAAAC,GAAA,yBAAAC,GAAA,gBAAAC,GAAA,SAAAC,GAAA,aAAAC,GAAA,8CAAAC,GAAA,uBAAAC,GAAA,qBAAAC,GAAA,yBAAAC,GAAA,yBAAAC,GAAA,4BAAAC,GAAA,qBAAAC,GAAA,cAAAC,GAAA,wBAAAC,KAAAC,IAMA,IAAAC,GAAqD,4BACrDC,GAAiB,yBAEjBC,KACA,IAAAC,GAAkD,oBCVlDC,IAMA,IAAAC,GAAe,2BACfC,GAAiB,oBCPjBC,IAMA,IAAAC,GAA8B,uBAC9BC,GAAiB,oBAEjB,eAAsBC,GAAOC,EAAkB,CAC3C,GAAI,CACA,eAAM,WAAOA,CAAQ,EACd,EACX,MAAgB,CACZ,MAAO,EACX,CACJ,CAEA,eAAsBC,GAAsBC,EAAkB,CACrD,MAAMH,GAAOG,CAAQ,GACtB,QAAM,UAAMA,CAAQ,CAC5B,CAEO,SAASC,GAA4BH,EAAkB,CAC1D,OAAO,GAAAI,QAAK,MAAMJ,CAAQ,EAAE,IAChC,CAEO,IAAMK,GAASC,GAAe,IAAI,QAAQC,GAAW,WAAWA,EAASD,CAAE,CAAC,EDTnF,eAAsBE,IAAmC,CACrD,GAAI,CACA,IAAMC,EAAW,MAAM,GAAAC,QAAG,SAAS,MAAMC,GAAoB,EAAG,MAAM,EACtE,OAAO,KAAK,MAAMF,CAAQ,CAC9B,MAAc,CACV,IAAMA,EAAW,CACb,QAAS,MAAMG,GAAwB,EACvC,cAAe,MAAMC,GAAyB,EAC9C,yBAA0B,MAAMC,GAAmC,CACvE,EACA,GAAI,CACA,MAAMC,GAAaN,CAAQ,CAC/B,MAAc,CAAE,CAEhB,OAAOA,CACX,CACJ,CAEA,eAAsBM,GAAaN,EAAsB,CAChDA,GACL,MAAM,GAAAC,QAAG,UAAU,MAAMC,GAAoB,EAAG,KAAK,UAAUF,EAAU,KAAM,CAAC,EAAG,MAAM,CAC7F,CAEA,eAAeE,IAAsB,CACjC,IAAMK,EAAY,MAAMJ,GAAwB,EAChD,aAAMK,GAAsBD,CAAS,EAC9B,GAAAE,QAAK,KAAKF,EAAW,iBAAiB,CACjD,CE7CAG,IAMA,IAAAC,GAA2B,uBAC3BC,GAA+C,mBAE/CC,GAA2C,oBAErCC,GAAgB,IAAI,IAE1B,eAAsBC,GAAqBC,EAA4BC,EAAkB,CACrF,GAAM,CAAE,SAAAC,EAAU,SAAAC,CAAS,EAAI,MAAM,UAAO,eAAe,CACvD,YAAaF,GAAY,+BACzB,QAAS,CAAC,CAAE,KAAM,OAAQ,WAAY,CAAC,MAAM,CAAE,CAAC,CACpD,CAAC,EAED,GAAIE,GAAY,CAACD,EACb,MAAM,IAAI,MAAM,uBAAuB,EAE3C,IAAME,KAAS,sBAAkBF,EAAU,CAAE,MAAO,IAAK,SAAU,OAAQ,CAAC,EAEtEG,KAAW,eAAW,EAC5B,OAAAP,GAAc,IAAIO,EAAUD,CAAM,EAElCA,EAAO,GAAG,QAASE,GAAO,CACtB,QAAQ,MAAM,eAAgBA,CAAG,EACjCR,GAAc,OAAOO,CAAQ,CACjC,CAAC,EAEMA,CACX,CAEA,eAAsBE,GAAoBP,EAA4BK,EAAkBG,EAAe,CACnG,IAAMJ,EAASN,GAAc,IAAIO,CAAQ,EACzC,GAAI,CAACD,EAAQ,MAAM,IAAI,MAAM,4BAA4B,EAGrCA,EAAO,MAAMI,CAAK,GAElC,MAAM,IAAI,QAAcC,GAAWL,EAAO,KAAK,QAASK,CAAO,CAAC,CAExE,CAEA,eAAsBC,GAAsBV,EAA4BK,EAAkB,CACtF,IAAMD,EAASN,GAAc,IAAIO,CAAQ,EACzC,GAAKD,EAEL,OAAO,IAAI,QAAcK,GAAW,CAChCL,EAAO,IAAI,IAAM,CACbN,GAAc,OAAOO,CAAQ,EAC7BI,EAAQ,CACZ,CAAC,CACL,CAAC,CACL,CCxDAE,IAMA,IAAAC,GAA2B,uBAC3BC,GAAiC,4BAEjCC,GAA2C,oBAErCC,GAAc,IAAI,IAExB,eAAsBC,GAAqBC,EAA4BC,EAAsB,CACzF,IAAMC,EAAM,MAAM,UAAO,eAAe,CACpC,MAAO,cACP,QAAS,CAAC,CAAE,KAAM,OAAQ,WAAY,CAAC,MAAM,CAAE,CAAC,EAChD,WAAY,CAAC,UAAU,EACvB,YAAAD,CACJ,CAAC,EACK,CAACE,CAAI,EAAID,EAAI,UAEnB,GAAI,CAACC,EAAM,MAAM,MAAM,kBAAkB,EAEzC,IAAMC,EAAa,QAAM,SAAKD,EAAM,GAAG,EACjCE,KAAS,eAAW,EAC1B,OAAAP,GAAY,IAAIO,EAAQD,CAAU,EAE3BC,CACX,CAEA,eAAsBC,GAAmBN,EAA4BK,EAAgBE,EAAe,GAAK,KAA8B,CACnI,IAAMH,EAAaN,GAAY,IAAIO,CAAM,EACzC,GAAI,CAACD,EAAY,OAAO,KAExB,IAAMI,EAAS,OAAO,MAAMD,CAAI,EAC1B,CAAE,UAAAE,CAAU,EAAI,MAAML,EAAW,KAAKI,EAAQ,EAAGD,CAAI,EAE3D,OAAIE,IAAc,GACd,MAAML,EAAW,MAAM,EACvBN,GAAY,OAAOO,CAAM,EAClB,MAGJG,EAAO,SAAS,QAAS,EAAGC,CAAS,CAChD,CAEA,eAAsBC,GAAqBV,EAA4BK,EAAgB,CACnF,IAAMD,EAAaN,GAAY,IAAIO,CAAM,EACrCD,IACA,MAAMA,EAAW,MAAM,EACvBN,GAAY,OAAOO,CAAM,EAEjC,CCrDAM,IAMO,IAAMC,GAAc,CACvB,MACA,MACA,MACA,MACA,MACA,SACA,MACA,SACA,OACA,OACA,MACA,OACA,OACA,SACA,UACA,UACA,KACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,cACA,OACA,MACA,MACA,KACA,SACA,OACA,SACA,YACA,MACA,WACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,MACJ,ECtGAC,IAmBO,IAAMC,GAAqC,6CAG3C,IAAMC,GAAqB,2BNA3B,SAASC,IAA4C,CAAE,CAE9D,IAAMC,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", "names": ["init_react", "__esmMin", "init_IpcEvents", "__esmMin", "init_react", "git_remote_default", "init_git_remote", "__esmMin", "init_react", "serializeErrors", "func", "ASAR_FILE", "init_common", "__esmMin", "init_react", "checkedFetch", "url", "options", "res", "err", "message", "reason", "fetchJson", "fetchBuffer", "buf", "import_original_fs", "init_http", "__esmMin", "init_react", "git_hash_default", "init_git_hash", "__esmMin", "init_react", "gitHashShort", "VENCORD_USER_AGENT", "VENCORD_USER_AGENT_HASHLESS", "init_vencordUserAgent", "__esmMin", "init_react", "init_git_hash", "init_git_remote", "git_hash_default", "git_remote_default", "http_exports", "githubGet", "endpoint", "fetchJson", "API_BASE", "VENCORD_USER_AGENT", "calculateGitChanges", "fetchUpdates", "git_hash_default", "c", "data", "PendingUpdate", "a", "ASAR_FILE", "applyUpdates", "fetchBuffer", "import_electron", "import_original_fs", "init_http", "__esmMin", "init_react", "init_IpcEvents", "init_vencordUserAgent", "init_git_hash", "init_git_remote", "init_common", "git_remote_default", "serializeErrors", "SYM_IS_PROXY", "SYM_GET_RAW_TARGET", "SettingsStore", "init_SettingsStore", "__esmMin", "init_react", "self", "target", "key", "receiver", "v", "proxyContext", "root", "path", "getPath", "value", "setPath", "deletePath", "plain", "options", "object", "pathString", "pathElements", "i", "prefix", "cb", "pathStr", "paths", "settingPath", "settingPathStr", "settingValue", "acc", "curr", "pathToNotify", "p", "listeners", "mergeDefaults", "obj", "defaults", "key", "v", "init_mergeDefaults", "__esmMin", "init_react", "import_electron", "import_path", "suffix", "DATA_DIR", "SETTINGS_DIR", "THEMES_DIR", "QUICK_CSS_PATH", "SETTINGS_FILE", "NATIVE_SETTINGS_FILE", "DEV_MIGRATED", "ALLOWED_PROTOCOLS", "IS_VANILLA", "init_constants", "__esmMin", "init_react", "readSettings", "name", "file", "err", "import_electron", "import_fs", "RendererSettings", "DefaultNativeSettings", "nativeSettings", "NativeSettings", "init_settings", "__esmMin", "init_react", "init_IpcEvents", "init_SettingsStore", "init_mergeDefaults", "init_constants", "SETTINGS_DIR", "SettingsStore", "SETTINGS_FILE", "e", "_", "data", "pathToNotify", "NATIVE_SETTINGS_FILE", "mergeDefaults", "require_events", "__commonJSMin", "exports", "init_react", "start_mark1", "end_mark1", "anchor1", "start_mark", "end_mark", "anchor", "tag", "implicit", "flow_style", "encoding", "explicit", "version", "tags", "value", "style", "require_errors", "__commonJSMin", "exports", "init_react", "indexOf", "line", "column", "buffer", "pointer", "indent", "max_length", "break_chars", "end", "head", "ref", "ref1", "start", "tail", "snippet", "where", "message", "context", "context_mark", "problem", "problem_mark", "note", "lines", "require_nodes", "__commonJSMin", "exports", "init_react", "unique_id", "tag1", "value1", "start_mark1", "end_mark1", "ScalarNode", "tag", "value", "start_mark", "end_mark", "style", "flow_style", "SequenceNode", "MappingNode", "require_composer", "__commonJSMin", "exports", "init_react", "MarkedYAMLError", "events", "nodes", "ctor", "Composer", "document", "event", "node", "parent", "index", "anchor", "tag", "end_event", "start_event", "item_key", "item_value", "require_util", "__commonJSMin", "exports", "init_react", "ref", "ref1", "ref2", "hasProp", "chunk", "obj", "destination", "sources", "i", "j", "len", "len1", "name", "source", "key", "a", "str", "char", "length", "num", "require_constructor", "__commonJSMin", "exports", "init_react", "MarkedYAMLError", "nodes", "util", "indexOf", "ctor", "BaseConstructor", "tag", "constructor", "tag_prefix", "multi_constructor", "node", "data", "f", "object", "ref", "tag_suffix", "child", "i", "len", "results", "key", "key_node", "mapping", "value", "value_node", "pairs", "BOOL_VALUES", "TIMESTAMP_PARTS", "TIMESTAMP_REGEX", "Constructor", "index", "j", "len1", "merge", "submerge", "subnode", "base", "digit", "digits", "part", "sign", "ref1", "error", "error1", "date", "day", "fraction", "hour", "match", "millisecond", "minute", "month", "second", "tz_hour", "tz_minute", "tz_sign", "values", "year", "type", "list", "item", "klass", "require_emitter", "__commonJSMin", "exports", "init_react", "ScalarAnalysis", "YAMLError", "events", "util", "hasProp", "indexOf", "C_WHITESPACE", "DEFAULT_TAG_PREFIXES", "ESCAPE_REPLACEMENTS", "ctor", "Emitter", "stream", "options", "ref", "event", "results", "count", "i", "len", "level", "first", "explicit", "handle", "k", "prefix", "expect", "indentless", "length", "indicator", "tag", "split", "major", "minor", "version", "char", "chunks", "end", "start", "suffix", "suffix_text", "anchor", "scalar", "allow_block", "allow_block_plain", "allow_double_quoted", "allow_flow_plain", "allow_single_quoted", "block_indicators", "break_space", "flow_indicators", "followed_by_whitespace", "index", "leading_break", "leading_space", "line_breaks", "preceded_by_whitespace", "previous_break", "previous_space", "ref1", "space_break", "special_characters", "trailing_break", "trailing_space", "unicode_characters", "need_whitespace", "data", "indent", "version_text", "handle_text", "prefix_text", "text", "br", "breaks", "spaces", "hints", "last", "penultimate", "base", "message", "context", "scalar1", "empty", "multiline", "allow_flow_plain1", "allow_block_plain1", "allow_single_quoted1", "allow_double_quoted1", "allow_block1", "require_serializer", "__commonJSMin", "exports", "init_react", "YAMLError", "events", "nodes", "util", "ctor", "Serializer", "encoding", "explicit_start", "explicit_end", "version", "tags", "node", "base", "i", "item", "j", "key", "len", "len1", "name", "ref", "ref1", "results", "results1", "value", "parent", "index", "alias", "default_tag", "detected_tag", "implicit", "require_representer", "__commonJSMin", "exports", "init_react", "YAMLError", "nodes", "hasProp", "ctor", "BaseRepresenter", "data_type", "handler", "default_style", "default_flow_style", "data", "node", "i", "j", "len", "ref", "representer", "type", "tag", "value", "style", "sequence", "flow_style", "best_style", "item", "node_item", "mapping", "item_key", "item_value", "node_key", "node_value", "require_resolver", "__commonJSMin", "exports", "init_react", "YAMLError", "nodes", "util", "indexOf", "DEFAULT_MAPPING_TAG", "DEFAULT_SCALAR_TAG", "DEFAULT_SEQUENCE_TAG", "ctor", "BaseResolver", "tag", "regexp", "first", "base", "char", "i", "len", "results", "current_node", "current_index", "depth", "exact_paths", "j", "kind", "len1", "path", "prefix_paths", "ref", "ref1", "index_check", "node_check", "value", "implicit", "empty", "k", "ref2", "resolvers", "require_dumper", "__commonJSMin", "exports", "init_react", "emitter", "representer", "resolver", "serializer", "util", "Emitter", "Serializer", "Representer", "Resolver", "Dumper", "components", "component", "stream", "options", "i", "len", "ref", "results", "require_reader", "__commonJSMin", "exports", "init_react", "Mark", "YAMLError", "indexOf", "position1", "character1", "reason", "NON_PRINTABLE", "ctor", "Reader", "string", "index", "length", "char", "results", "character", "match", "position", "require_tokens", "__commonJSMin", "exports", "init_react", "start_mark1", "end_mark1", "DirectiveToken", "name", "value", "start_mark", "end_mark", "DocumentStartToken", "DocumentEndToken", "StreamStartToken", "encoding", "StreamEndToken", "BlockSequenceStartToken", "BlockMappingStartToken", "BlockEndToken", "FlowSequenceStartToken", "FlowMappingStartToken", "FlowSequenceEndToken", "FlowMappingEndToken", "KeyToken", "ValueToken", "BlockEntryToken", "FlowEntryToken", "AliasToken", "AnchorToken", "TagToken", "ScalarToken", "plain", "style", "require_scanner", "__commonJSMin", "exports", "init_react", "MarkedYAMLError", "SimpleKey", "tokens", "util", "hasProp", "indexOf", "token_number1", "required1", "index", "line", "column1", "mark1", "C_LB", "C_NUMBERS", "C_WS", "ESCAPE_CODES", "ESCAPE_REPLACEMENTS", "ctor", "Scanner", "choices", "choice", "i", "len", "char", "key", "level", "min_token_number", "ref", "results", "required", "token_number", "column", "mark", "TokenClass", "start_mark", "style", "found", "end_mark", "name", "value", "length", "major", "minor", "handle", "prefix", "indicator", "suffix", "use_handle", "breaks", "chomping", "chunks", "folded", "increment", "indent", "leading_non_space", "line_break", "max_indent", "min_indent", "ref1", "ref2", "double", "quote", "code", "k", "whitespaces", "spaces", "ref3", "bytes", "require_parser", "__commonJSMin", "exports", "init_react", "MarkedYAMLError", "events", "tokens", "hasProp", "DEFAULT_TAGS", "ctor", "Parser", "choices", "choice", "i", "len", "event", "token", "end_mark", "start_mark", "tags", "version", "explicit", "handle", "major", "minor", "prefix", "ref", "tag_handles_copy", "value", "block", "indentless_sequence", "anchor", "implicit", "node", "suffix", "tag", "tag_mark", "first", "mark", "require_loader", "__commonJSMin", "exports", "init_react", "composer", "constructor", "parser", "reader", "resolver", "scanner", "util", "Reader", "Scanner", "Parser", "Composer", "Resolver", "Constructor", "Loader", "components", "component", "stream", "i", "len", "ref", "results", "require_yaml", "__commonJSMin", "exports", "init_react", "composer", "constructor", "dumper", "errors", "events", "loader", "nodes", "parser", "reader", "resolver", "scanner", "tokens", "util", "stream", "Loader", "_loader", "results", "Dumper", "options", "_dumper", "dest", "event", "i", "len", "node", "data", "documents", "document", "onceDefined", "target", "property", "callback", "propertyAsAny", "v", "init_onceDefined", "__esmMin", "init_react", "about_default", "init_about", "__esmMin", "init_react", "getMainWindow", "sendToRenderer", "event", "findInsertIndex", "template", "openIndex", "item", "label", "isTrayMenu", "hasOpenOrShow", "hasQuit", "isNotAppMenu", "openAboutWindow", "aboutWindow", "height", "width", "url", "e", "aboutParams", "about_default", "gitHashShort", "base64Html", "createEquicordMenuItems", "cachedUpdateAvailable", "SETTINGS_DIR", "THEMES_DIR", "patchTrayMenu", "originalBuildFromTemplate", "alreadyPatched", "insertIndex", "equicordItems", "import_electron", "init_trayMenu", "__esmMin", "init_react", "init_IpcEvents", "init_vencordUserAgent", "init_about", "init_constants", "_", "available", "import_original_fs", "import_path", "STUB_PACKAGE", "VERSION_PREFIX", "makeStubIndex", "isAlreadyPatched", "patchResourcesDir", "parsePart", "isNewer", "findStaleSibling", "init_applyHostPatch", "__esmMin", "init_react", "patcherPath", "resources", "patcherJsPath", "app", "_app", "undo", "indexPath", "pkgPath", "err", "i", "cleanupErr", "s", "$new", "old", "newParts", "oldParts", "len", "n", "o", "currentExeDir", "discordPath", "currentVersion", "latest", "name", "isDir", "statErr", "hostUpdateHook_exports", "__export", "installHostUpdateHook", "import_module", "import_path", "error", "hookedUpdaters", "hooked", "getPatcherJsPath", "resourcesPathFor", "currentVersionDir", "resolveCommittedVersion", "retainEquicord", "attachToUpdater", "wrapStartup", "init_hostUpdateHook", "__esmMin", "init_react", "init_applyHostPatch", "args", "versionDir", "segs", "i", "resolvePath", "updater", "versions", "err", "reason", "committed", "rootPath", "stale", "findStaleSibling", "patchResourcesDir", "sync", "bound", "options", "e", "async_", "queryOptions", "coreExports", "origStartup", "opts", "rest", "updaterModule", "inst", "origTry", "buildInfo", "repositoryUrl", "useRustBspatch", "ok", "origRequire", "Module", "id", "result", "persistAfterDiscordUpdates_exports", "import_electron", "import_path", "init_persistAfterDiscordUpdates", "__esmMin", "init_react", "init_applyHostPatch", "stale", "findStaleSibling", "patchResourcesDir", "err", "patcher_exports", "import_electron", "import_path", "injectorPath", "asarPath", "discordPkg", "init_patcher", "__esmMin", "init_react", "init_onceDefined", "init_settings", "init_trayMenu", "init_constants", "IS_VANILLA", "settings", "RendererSettings", "patchTrayMenu", "err", "originalBuild", "template", "submenu", "BrowserWindow", "electron", "options", "frameless", "mainWindowFrameless", "winNativeTitleBar", "disableMinSize", "transparent", "macosVibrancyStyle", "windowsMaterial", "original", "isMainWindow", "_width", "_height", "electronPath", "onceDefined", "s", "originalAppend", "args", "disabledFeatures", "init_react", "init_react", "init_react", "init_IpcEvents", "import_electron", "init_git_remote", "init_common", "init_react", "init_IpcEvents", "import_electron", "init_react", "native_exports", "__export", "fetchTrackData", "init_react", "init_vencordUserAgent", "import_child_process", "import_util", "exec", "applescript", "cmds", "stdout", "c", "cachedRemoteData", "fetchRemoteData", "id", "name", "artist", "album", "dataUrl", "fetchData", "VENCORD_USER_AGENT", "r", "data", "songData", "song", "artistArtworkURL", "match", "e", "out", "playerPosition", "text", "durationStr", "k", "duration", "remoteData", "native_exports", "__export", "initDevtoolsOpenEagerLoad", "init_react", "e", "handleDevtoolsOpened", "native_exports", "init_react", "init_settings", "import_electron", "ids", "cleanUpAndGetSpotifyFrames", "spotifyFrames", "i", "processId", "routingId", "frame", "_", "win", "settings", "RendererSettings", "newVolume", "native_exports", "init_react", "init_settings", "import_electron", "_", "win", "frame", "RendererSettings", "native_exports", "__export", "resolveRedirect", "init_react", "import_https", "validRedirectUrls", "getRedirect", "url", "resolve", "reject", "req", "res", "_", "native_exports", "__export", "makeDeeplTranslateRequest", "makeKagiTranslateRequest", "init_react", "_", "pro", "apiKey", "payload", "url", "res", "data", "e", "token", "text", "sourceLang", "targetLang", "native_exports", "__export", "readRecording", "init_react", "import_electron", "import_promises", "import_path", "_", "filePath", "filename", "discordBaseDirWithTrailingSlash", "buf", "native_exports", "__export", "closeSocket", "sendToOverlay", "init_react", "import_dgram", "xsoSocket", "_", "data", "json", "native_exports", "init_react", "init_settings", "import_electron", "init_react", "adguard_default", "_", "win", "frame", "RendererSettings", "adguard_default", "native_exports", "__export", "chooseVideoFile", "createTempVideoFile", "createTempVideoFileFromBytes", "deleteTempVideoFile", "getTempVideoFilePath", "parseClipFileMetadata", "readVideoFile", "init_react", "init_constants", "init_react", "import_path", "ensureSafePath", "basePath", "path", "normalizedBasePath", "newPath", "normalizedPath", "import_crypto", "import_electron", "import_promises", "import_path", "pendingTokens", "tempEntries", "CLIP_UPLOAD_DIR", "DATA_DIR", "ALLOWED_EXTENSIONS", "MAX_CLIP_SIZE", "MIME_TYPES", "CLIP_FOOTER", "CLIP_FOOTER_SIZE", "getMimeType", "filePath", "stripClipFooter", "data", "idx", "parseClipMetadata", "buf", "footerIdx", "jsonStr", "parsed", "chooseVideoFile", "_", "filePaths", "canceled", "resolvedPath", "token", "createTempVideoFile", "originalPath", "tmpDir", "tmpPath", "ensureSafePath", "tmpToken", "createTempVideoFileFromBytes", "name", "fileName", "getTempVideoFilePath", "readVideoFile", "entry", "deleteTempVideoFile", "parseClipFileMetadata", "native_exports", "init_react", "init_react", "init_settings", "import_electron", "ConnectSrc", "ImageSrc", "CssSrc", "ImageAndMediaSrc", "ImageAndCssSrc", "ImageScriptsAndCssSrc", "CSPSrc", "CspPolicies", "findHeader", "headers", "headerName", "h", "parsePolicy", "policy", "result", "directive", "directiveKey", "directiveValue", "stringifyPolicy", "values", "patchCsp", "reportOnlyHeader", "header", "csp", "pushDirective", "host", "directives", "NativeSettings", "initCsp", "responseHeaders", "resourceType", "cb", "CspPolicies", "CSPSrc", "native_exports", "__export", "fetchAttachment", "init_react", "allowedHosts", "_", "attachment", "content_type", "filename", "url", "res", "blob", "type", "data", "native_exports", "__export", "createWebdavShare", "fetchFile", "uploadTo0x0", "uploadToBuzzheavier", "uploadToCatbox", "uploadToEzHost", "uploadToFilebin", "uploadToGofile", "uploadToLitterbox", "uploadToNest", "uploadToPixelDrain", "uploadToPixelVault", "uploadToS3", "uploadToTempSh", "uploadToTmpfiles", "uploadToWebdav", "init_react", "_", "fileBuffer", "filename", "authToken", "formData", "response", "errorText", "data", "e", "key", "text", "uploadUrl", "headers", "userhash", "expiry", "token", "url", "rawUrl", "binId", "uploadKey", "apiKey", "isValidHttpsUrl", "ocsUrl", "body", "contentType", "native_exports", "__export", "fetchMedia", "init_react", "ALLOWED_MEDIA_HOSTS", "_", "url", "parsed", "res", "blob", "native_exports", "__export", "chooseDir", "chooseFile", "closeNativeLogImport", "deleteFileNative", "downloadAttachment", "finishNativeLogExport", "getDefaultAttachmentFileExtensions", "getDefaultNativeDataDir", "getDefaultNativeImageDir", "getImageNative", "getNativeSavedImages", "getSettings", "init", "initDirs", "messageLoggerEnhancedUniqueIdThingyIdkMan", "readNativeLogChunk", "showItemInFolder", "startNativeLogExport", "startNativeLogImport", "updateAllowedExtensions", "writeImageNative", "writeLogs", "writeNativeLogChunk", "init_react", "import_promises", "import_node_path", "init_constants", "import_electron", "init_react", "import_promises", "import_path", "init_react", "import_promises", "import_path", "exists", "filename", "ensureDirectoryExists", "cacheDir", "getAttachmentIdFromFilename", "path", "sleep", "ms", "resolve", "getSettings", "settings", "fs", "getSettingsFilePath", "getDefaultNativeDataDir", "getDefaultNativeImageDir", "getDefaultAttachmentFileExtensions", "saveSettings", "MlDataDir", "ensureDirectoryExists", "path", "init_react", "import_node_crypto", "import_node_fs", "import_electron", "activeStreams", "startNativeLogExport", "_event", "filename", "filePath", "canceled", "stream", "streamId", "err", "writeNativeLogChunk", "chunk", "resolve", "finishNativeLogExport", "init_react", "import_node_crypto", "import_promises", "import_electron", "activeFiles", "startNativeLogImport", "_event", "defaultPath", "res", "path", "fileHandle", "fileId", "readNativeLogChunk", "size", "buffer", "bytesRead", "closeNativeLogImport", "init_react", "blockedExts", "init_react", "DEFAULT_ATTACHMENT_FILE_EXTENSIONS", "LOGS_DATA_FILENAME", "messageLoggerEnhancedUniqueIdThingyIdkMan", "nativeSavedImages", "getNativeSavedImages", "logsDir", "imageCacheDir", "getImageCacheDir", "getDefaultNativeImageDir", "getLogsDir", "getDefaultNativeDataDir", "initDirs", "ld", "icd", "getSettings", "init", "_event", "imageDir", "ensureDirectoryExists", "files", "filename", "attachmentId", "getAttachmentIdFromFilename", "path", "getImageNative", "imagePath", "error", "writeImageNative", "content", "deleteFileNative", "writeLogs", "contents", "LOGS_DATA_FILENAME", "DATA_DIR", "getDefaultAttachmentFileExtensions", "DEFAULT_ATTACHMENT_FILE_EXTENSIONS", "chooseDir", "event", "logKey", "settings", "defaultPath", "dir", "saveSettings", "showItemInFolder", "chooseFile", "title", "filters", "res", "downloadAttachment", "attachment", "attempts", "useOldUrl", "allowedExtensionsStr", "allowedList", "ext", "cleanExt", "existingImage", "sleep", "ab", "finalPath", "updateAllowedExtensions", "cleanExtensionsString", "incomingRaw", "validatedExtensions", "blockedExts", "native_exports", "__export", "canOpenDevTools", "complete", "openDevTools", "init_react", "import_electron", "event", "window", "_", "appId", "authCode", "questTarget", "questId", "activityReferrer", "authorization", "authorize", "progressResult", "progress", "getActivityHeaders", "authToken", "headers", "readJson", "res", "getResponseToken", "data", "error", "token", "e", "native_exports", "__export", "fetchTrackData", "init_react", "song", "native_exports", "__export", "getTrackData", "init_react", "init_settings", "_", "trackURL", "url", "RendererSettings", "raw", "u", "entry", "key", "name", "data", "native_exports", "__export", "parseLink", "renderSong", "validateSong", "init_react", "init_react", "init_react", "version", "clean", "link", "url", "makeRequest", "setFetchHandler", "fetcher", "request", "options", "body", "key", "value", "res", "text", "json", "parseNextData", "html", "data", "sid", "song", "$", "parseCache", "validateCache", "parseLink", "link", "cleaned", "clean", "hostname", "pathname", "path", "parser", "renderCache", "renderSong", "id", "cached", "info", "service", "x", "validateSong", "valid", "init_react", "alphabeticRegex", "platforms", "songdotlink", "link", "_host", "path", "first", "second", "third", "html", "request", "sections", "parseNextData", "links", "x", "platform", "parsed", "parseLink", "handlerCache", "makeCache", "name", "retrieve", "args", "res", "ret", "geo", "defaultName", "applemusicLink", "type", "id", "applemusicToken", "asset", "applemusic", "_link", "country", "fourth", "token", "attributes", "relationships", "base", "thumbnailUrl", "duration", "previewUrl", "client_id", "app_version", "parseWidget", "tracks", "parsePlaylistTracks", "playlistId", "trackIds", "filterPreview", "track", "previewPoint", "previewDuration", "parsePreview", "transcodings", "preview", "a", "b", "previewChunk", "previewStart", "extractExpiry$1", "url", "policy", "soundcloud", "host", "status", "user", "valid", "data", "rawUrl", "splits", "kind", "audio", "got", "missingIds", "retrieved", "i", "replaced", "list", "expires", "parseEmbed", "fromUri", "uri", "sanityCheck", "spotify", "tidalToken", "getInfo", "query", "getAudioPreview", "info", "prettyLink", "extractExpiry", "timestamp", "services", "typeFoo", "idFoo", "typeBar", "idBar", "defaultSublabel", "thumbnailKey", "$", "parsers", "init_react", "import_electron", "setFetchHandler", "parseLink", "_", "link", "renderSong", "song", "validateSong", "native_exports", "__export", "downloadTheme", "themeExists", "init_react", "init_constants", "import_fs", "getThemePath", "theme", "ensureSafePath", "THEMES_DIR", "themeExists", "_", "path", "downloadTheme", "content", "native_exports", "__export", "ensurePluginsDirectory", "getUserplugins", "initPluginInstall", "isUpdateAvailableForPlugin", "openGitPathModal", "rmPlugin", "updatePlugin", "init_react", "init_settings", "import_child_process", "import_electron", "import_fs", "import_promises", "import_path", "import_yaml_js", "pluginValidate_default", "setGitPath_default", "updateValidate_default", "PLUGIN_META_REGEX", "CLONE_LINK_REGEX", "vencordPath", "ensurePluginsDirectory", "_", "rmPlugin", "name", "resolve", "reject", "pl", "getUserplugins", "p", "build", "isUpdateAvailableForPlugin", "pluginDir", "doStuff", "head", "remoteHead", "localCommit", "remoteCommit", "initPluginInstall", "link", "source", "owner", "repo", "verifiedRegex", "idpl", "cloneRepo", "meta", "getPluginMeta", "win", "reView", "generateReviewPluginContent", "e", "proc", "path", "extra", "files", "fileToRead", "f", "file", "remoteURL", "supportChannelID", "parsed", "yaml", "rawMeta", "template", "pluginValidate_default", "generateUpdatePluginContent", "updateValidate_default", "folderContents", "item", "directory", "updatePlugin", "pluginMeta", "commitProc", "rawOutput", "d", "line", "user", "shortCommit", "longCommit", "message", "otherProc", "errored", "openGitPathModal", "gitPathSet", "NativeSettings", "setGitPath_default", "t", "gitPath2", "gitProc", "native_exports", "__export", "fetchAudio", "init_react", "_", "url", "res", "native_exports", "__export", "fetchDiscordAttachment", "init_react", "import_electron", "DISCORD_ATTACHMENT_BASE_URL", "MAX_ZIP_BYTES", "_", "pathAndQuery", "attachmentUrl", "getDiscordAttachmentUrl", "getAttachmentFileName", "response", "readLimitedResponse", "error", "contentLength", "buffer", "reader", "chunks", "totalBytes", "done", "value", "result", "offset", "chunk", "fileName", "isValidDiscordAttachmentPathAndQuery", "url", "parts", "part", "pluginNatives_default", "native_exports", "PluginIpcMappings", "plugin", "methods", "pluginNatives_default", "entries", "mappings", "methodName", "method", "key", "e", "init_settings", "init_react", "debounce", "func", "delay", "timeout", "args", "init_IpcEvents", "import_electron", "init_react", "monacoWin_default", "import_fs", "import_promises", "import_os", "import_path", "init_react", "init_settings", "init_IpcEvents", "import_electron", "registerCspIpcHandlers", "removeCspRule", "addCspRule", "isDomainAllowed", "validate", "url", "directives", "host", "d", "ImageAndCssSrc", "getMessage", "callerName", "domain", "message", "detail", "contentTypes", "type", "_", "NativeSettings", "checkboxChecked", "response", "ruleForDomain", "CspPolicies", "init_react", "splitRegex", "escapedAtRegex", "makeHeader", "fileName", "opts", "stripBOM", "fileContent", "getThemeInfo", "css", "block", "header", "field", "accum", "line", "l", "init_constants", "init_react", "import_electron", "makeLinksOpenExternally", "win", "url", "protocol", "RENDERER_CSS_PATH", "THEMES_DIR", "registerCspIpcHandlers", "readCss", "QUICK_CSS_PATH", "listThemes", "files", "themeInfo", "fileName", "data", "getThemeData", "stripBOM", "getThemeInfo", "safePath", "ensureSafePath", "_", "url", "protocol", "ALLOWED_PROTOCOLS", "err", "css", "accentColor", "SETTINGS_DIR", "fsWatchers", "sender", "w", "quickCssWatcher", "rendererCssWatcher", "fd", "debounce", "themesWatcher", "e", "monacoWin", "makeLinksOpenExternally", "monacoWin_default", "event", "import_electron", "import_path", "import_url", "init_settings", "init_constants", "init_react", "import_electron", "init_react", "import_module", "require", "_a", "Worker", "isMarkedAsUntransferable", "workerAdd", "wk", "c", "_", "msg", "transfer", "cb", "done", "w", "e", "m", "t", "__", "___", "____", "NOP", "u8", "u16", "i32", "fleb", "fdeb", "clim", "freb", "eb", "start", "b", "r", "j", "fl", "revfl", "_b", "fd", "revfd", "rev", "i", "x", "hMap", "cd", "mb", "s", "l", "le", "co", "rvb", "sv", "r_1", "v", "flt", "fdt", "flrm", "hMap", "flt", "fdrm", "hMap", "fdt", "max", "a", "m", "i", "bits", "d", "p", "o", "bits16", "shft", "slc", "v", "s", "e", "u8", "ec", "err", "ind", "msg", "nt", "e", "inflt", "dat", "st", "buf", "dict", "sl", "dl", "u8", "noBuf", "resize", "noSt", "cbuf", "l", "bl", "nbuf", "final", "pos", "bt", "lm", "dm", "lbt", "dbt", "tbts", "bits", "type", "flrm", "fdrm", "hLit", "hcLen", "tl", "ldt", "clt", "i", "clim", "clb", "max", "clbmsk", "clm", "hMap", "r", "s", "c", "n", "lt", "dt", "shft", "t", "lms", "dms", "lpos", "bits16", "sym", "add", "b", "fleb", "fl", "d", "dsym", "fd", "fdeb", "end", "shift", "dend", "slc", "et", "u8", "mrg", "a", "b", "o", "k", "wcln", "fn", "fnStr", "td", "dt", "st", "ks", "i", "v", "st_1", "spInd", "t", "ch", "cbfs", "tl", "wrkr", "fns", "init", "id", "cb", "td_1", "m", "wk", "bInflt", "u8", "u16", "i32", "fleb", "fdeb", "clim", "fl", "fd", "flrm", "fdrm", "rev", "ec", "hMap", "max", "bits", "bits16", "shft", "slc", "err", "inflt", "inflateSync", "pbf", "gopt", "pbf", "msg", "gopt", "o", "u8", "cbify", "dat", "opts", "fns", "init", "id", "cb", "w", "wrkr", "err", "b2", "d", "b", "b4", "b8", "inflate", "data", "opts", "cb", "err", "cbify", "bInflt", "ev", "pbf", "inflateSync", "gopt", "inflt", "td", "tds", "et", "dutf8", "d", "r", "i", "c", "eb", "slc", "strFromU8", "dat", "latin1", "r", "td", "_a", "dutf8", "err", "slzh", "d", "b", "b2", "zh", "z", "fnl", "efl", "fn", "strFromU8", "es", "_a", "z64hs", "b4", "sc", "su", "off", "l", "nsc", "nsu", "noff", "e", "nf", "b8", "err", "mt", "fn", "unzip", "data", "opts", "cb", "err", "term", "tAll", "i", "files", "cbd", "a", "b", "e", "b4", "lft", "b2", "c", "o", "z", "ze", "fltr", "_loop_3", "_a", "zh", "c_1", "sc", "su", "no", "off", "slzh", "cbl", "d", "slc", "infl", "inflateSync", "u8", "inflate", "import_fs", "import_promises", "import_path", "init_constants", "init_react", "crxToZip", "buf", "calcLength", "a", "b", "c", "d", "length", "isV3", "isV2", "publicKeyLength", "signatureLength", "zipStartOffset", "init_http", "extensionCacheDir", "DATA_DIR", "extract", "data", "outDir", "resolve", "reject", "unzip", "err", "files", "f", "dir", "ensureSafePath", "directories", "filePath", "installExt", "id", "extDir", "fsConstants", "url", "buf", "fetchBuffer", "crxToZip", "IS_VANILLA", "unsafeUrl", "url", "theme", "safeUrl", "ensureSafePath", "THEMES_DIR", "RendererSettings", "installExt", "err", "initCsp"] } // Equicord 0d27aec1ab604f1c0d7f7eb9114114e71da93573 // Standalone: true // Platform: Universal // Updater Disabled: false "use strict";function a(e,o=300){let t;return function(...T){clearTimeout(t),t=setTimeout(()=>{e(...T)},o)}}var i=require("electron/renderer");var n=require("electron/renderer");function r(e,...o){return n.ipcRenderer.invoke(e,...o)}function s(e,...o){return n.ipcRenderer.sendSync(e,...o)}var S={},g=s("VencordGetPluginIpcMethodMap");for(let[e,o]of Object.entries(g)){let t=S[e]={};for(let[T,R]of Object.entries(o))t[T]=(...m)=>r(R,...m)}var E={themes:{uploadTheme:async(e,o)=>{throw new Error("uploadTheme is WEB only")},deleteTheme:async e=>{throw new Error("deleteTheme is WEB only")},getThemesList:()=>r("VencordGetThemesList"),getThemeData:e=>r("VencordGetThemeData",e),getSystemValues:()=>r("VencordGetThemeSystemValues"),openFolder:()=>r("VencordOpenThemesFolder")},updater:{getUpdates:()=>r("VencordGetUpdates"),update:()=>r("VencordUpdate"),rebuild:()=>r("VencordBuild"),getRepo:()=>r("VencordGetRepo")},settings:{get:()=>s("VencordGetSettings"),set:(e,o)=>r("VencordSetSettings",e,o),getSettingsDir:()=>r("VencordGetSettingsDir"),openFolder:()=>r("VencordOpenSettingsFolder")},quickCss:{get:()=>r("VencordGetQuickCss"),set:e=>r("VencordSetQuickCss",e),addChangeListener(e){n.ipcRenderer.on("VencordQuickCssUpdate",(o,t)=>e(t))},addThemeChangeListener(e){n.ipcRenderer.on("VencordThemeUpdate",()=>e())},openFile:()=>r("VencordOpenQuickCss"),openEditor:()=>r("VencordOpenMonacoEditor"),getEditorTheme:()=>s("VencordGetMonacoTheme")},native:{getVersions:()=>process.versions,supportsWindowsMaterial:()=>s("VencordSupportsWindowsMaterial"),openExternal:e=>r("VencordOpenExternal",e),getRendererCss:()=>r("VencordGetRendererCss"),onRendererCssUpdate:e=>{}},csp:{isDomainAllowed:(e,o)=>r("VencordCspIsDomainAllowed",e,o),removeOverride:e=>r("VencordCspRemoveOverride",e),requestAddOverride:(e,o,t)=>r("VencordCspRequestAddOverride",e,o,t)},tray:{setUpdateState:e=>n.ipcRenderer.send("VencordSetTrayUpdateState",e),onCheckUpdates:e=>{n.ipcRenderer.on("VencordTrayCheckUpdates",e)},onRepair:e=>{n.ipcRenderer.on("VencordTrayRepair",e)}},pluginHelpers:S};i.contextBridge.exposeInMainWorld("VencordNative",E);location.protocol!=="data:"?(r("VencordInitFileWatchers"),i.webFrame.executeJavaScript(s("VencordPreloadGetRendererJs")),require(process.env.DISCORD_PRELOAD)):(i.contextBridge.exposeInMainWorld("setCss",a(E.quickCss.set)),i.contextBridge.exposeInMainWorld("getCurrentCss",E.quickCss.get),i.contextBridge.exposeInMainWorld("getTheme",E.quickCss.getEditorTheme)); //# sourceURL=file:///VencordPreload //# sourceMappingURL=vencord://preload.js.map { "version": 3, "sources": ["../../src/shared/debounce.ts", "../../src/preload.ts", "../../src/VencordNative.ts"], "sourcesContent": ["/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n/**\n * Returns a new function that will call the wrapped function\n * after the specified delay. If the function is called again\n * within the delay, the timer will be reset.\n * @param func The function to wrap\n * @param delay The delay in milliseconds\n */\nexport function debounce(func: T, delay = 300): T {\n let timeout: NodeJS.Timeout;\n return function (...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => { func(...args); }, delay);\n } as any;\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { debounce } from \"@shared/debounce\";\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport { contextBridge, webFrame } from \"electron/renderer\";\n\nimport VencordNative, { invoke, sendSync } from \"./VencordNative\";\n\ncontextBridge.exposeInMainWorld(\"VencordNative\", VencordNative);\n\n// Discord\nif (location.protocol !== \"data:\") {\n invoke(IpcEvents.INIT_FILE_WATCHERS);\n\n if (IS_DISCORD_DESKTOP) {\n webFrame.executeJavaScript(sendSync(IpcEvents.PRELOAD_GET_RENDERER_JS));\n // Not supported in sandboxed preload scripts but Discord doesn't support it either so who cares\n require(process.env.DISCORD_PRELOAD!);\n }\n} // Monaco popout\nelse {\n contextBridge.exposeInMainWorld(\"setCss\", debounce(VencordNative.quickCss.set));\n contextBridge.exposeInMainWorld(\"getCurrentCss\", VencordNative.quickCss.get);\n contextBridge.exposeInMainWorld(\"getTheme\", VencordNative.quickCss.getEditorTheme);\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport type { Settings } from \"@api/Settings\";\nimport type { CspRequestResult } from \"@main/csp/manager\";\nimport type { PluginIpcMappings } from \"@main/ipcPlugins\";\nimport { UserThemeHeader } from \"@main/themes\";\nimport { IpcEvents } from \"@shared/IpcEvents\";\nimport type { IpcRes } from \"@utils/types\";\nimport { ipcRenderer } from \"electron/renderer\";\n\nexport function invoke(event: IpcEvents, ...args: any[]) {\n return ipcRenderer.invoke(event, ...args) as Promise;\n}\n\nexport function sendSync(event: IpcEvents, ...args: any[]) {\n return ipcRenderer.sendSync(event, ...args) as T;\n}\n\nconst PluginHelpers = {} as Record Promise>>;\nconst pluginIpcMap = sendSync(IpcEvents.GET_PLUGIN_IPC_METHOD_MAP);\n\nfor (const [plugin, methods] of Object.entries(pluginIpcMap)) {\n const map = PluginHelpers[plugin] = {};\n for (const [methodName, method] of Object.entries(methods)) {\n map[methodName] = (...args: any[]) => invoke(method as IpcEvents, ...args);\n }\n}\n\nexport default {\n themes: {\n uploadTheme: async (fileName: string, fileData: string): Promise => {\n throw new Error(\"uploadTheme is WEB only\");\n },\n deleteTheme: async (fileName: string): Promise => {\n throw new Error(\"deleteTheme is WEB only\");\n },\n getThemesList: () => invoke>(IpcEvents.GET_THEMES_LIST),\n getThemeData: (fileName: string) => invoke(IpcEvents.GET_THEME_DATA, fileName),\n getSystemValues: () => invoke>(IpcEvents.GET_THEME_SYSTEM_VALUES),\n\n openFolder: () => invoke(IpcEvents.OPEN_THEMES_FOLDER),\n },\n\n updater: {\n getUpdates: () => invoke[]>>(IpcEvents.GET_UPDATES),\n update: () => invoke>(IpcEvents.UPDATE),\n rebuild: () => invoke>(IpcEvents.BUILD),\n getRepo: () => invoke>(IpcEvents.GET_REPO),\n },\n\n settings: {\n get: () => sendSync(IpcEvents.GET_SETTINGS),\n set: (settings: Settings, pathToNotify?: string) => invoke(IpcEvents.SET_SETTINGS, settings, pathToNotify),\n getSettingsDir: () => invoke(IpcEvents.GET_SETTINGS_DIR),\n\n openFolder: () => invoke(IpcEvents.OPEN_SETTINGS_FOLDER),\n },\n\n quickCss: {\n get: () => invoke(IpcEvents.GET_QUICK_CSS),\n set: (css: string) => invoke(IpcEvents.SET_QUICK_CSS, css),\n\n addChangeListener(cb: (newCss: string) => void) {\n ipcRenderer.on(IpcEvents.QUICK_CSS_UPDATE, (_, css) => cb(css));\n },\n\n addThemeChangeListener(cb: () => void) {\n ipcRenderer.on(IpcEvents.THEME_UPDATE, () => cb());\n },\n\n openFile: () => invoke(IpcEvents.OPEN_QUICKCSS),\n openEditor: () => invoke(IpcEvents.OPEN_MONACO_EDITOR),\n getEditorTheme: () => sendSync(IpcEvents.GET_MONACO_THEME),\n },\n\n native: {\n getVersions: () => process.versions as Partial,\n supportsWindowsMaterial: () => sendSync(IpcEvents.SUPPORTS_WINDOWS_MATERIAL),\n openExternal: (url: string) => invoke(IpcEvents.OPEN_EXTERNAL, url),\n getRendererCss: () => invoke(IpcEvents.GET_RENDERER_CSS),\n onRendererCssUpdate: (cb: (newCss: string) => void) => {\n if (!IS_DEV) return;\n\n ipcRenderer.on(IpcEvents.RENDERER_CSS_UPDATE, (_e, newCss: string) => cb(newCss));\n }\n },\n\n csp: {\n /**\n * Note: Only supports full explicit matches, not wildcards.\n *\n * If `*.example.com` is allowed, `isDomainAllowed(\"https://sub.example.com\")` will return false.\n */\n isDomainAllowed: (url: string, directives: string[]) => invoke(IpcEvents.CSP_IS_DOMAIN_ALLOWED, url, directives),\n removeOverride: (url: string) => invoke(IpcEvents.CSP_REMOVE_OVERRIDE, url),\n requestAddOverride: (url: string, directives: string[], callerName: string) =>\n invoke(IpcEvents.CSP_REQUEST_ADD_OVERRIDE, url, directives, callerName),\n },\n\n tray: {\n setUpdateState: (available: boolean) => ipcRenderer.send(IpcEvents.SET_TRAY_UPDATE_STATE, available),\n onCheckUpdates: (cb: () => void) => { ipcRenderer.on(IpcEvents.TRAY_CHECK_UPDATES, cb); },\n onRepair: (cb: () => void) => { ipcRenderer.on(IpcEvents.TRAY_REPAIR, cb); },\n },\n\n pluginHelpers: PluginHelpers\n};\n"], "mappings": "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", "names": ["debounce", "func", "delay", "timeout", "args", "import_renderer", "import_renderer", "invoke", "event", "args", "sendSync", "PluginHelpers", "pluginIpcMap", "plugin", "methods", "map", "methodName", "method", "VencordNative_default", "fileName", "fileData", "settings", "pathToNotify", "css", "cb", "_", "url", "directives", "callerName", "available", "VencordNative_default", "invoke", "sendSync", "debounce"] } [class*=profile] [class*=tags] [class*=container]{gap:1px}.vc-error-card{padding:1em;background-color:var(--background-feedback-critical, rgb(237 66 69 / 10%));border:1px solid var(--text-status-dnd, #ed4245);border-radius:var(--radius-sm, 8px);color:var(--text-default)}.vc-error-card a{color:var(--text-link)}.vc-error-card a:hover{text-decoration:underline}.vc-text-base{font-family:var(--font-primary);line-height:normal;margin:0}.vc-text-selectable{user-select:text}.vc-text-line-clamp-1{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vc-text-line-clamp{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.vc-text-tabular-numbers{font-variant-numeric:tabular-nums}.vc-text-defaultColor{color:var(--text-default)}.vc-btn-base{position:relative;display:flex;justify-content:center;align-items:center;max-width:100%;border:1px solid transparent;border-radius:var(--radius-sm, 8px);font-family:var(--font-primary);text-align:start;transition:50ms ease-in;transition-property:background-color,color,border-color,opacity;background:var(--control-secondary-background-default);color:var(--text-default);white-space:nowrap;&:hover{transition:.15s ease-out}&:disabled{opacity:.5;pointer-events:none;cursor:not-allowed}&:focus-visible{box-shadow:0 0 0 4px var(--__adaptive-focus-ring-color, var(--border-focus, #00b0f4))}}.vc-btn-min,.vc-btn-xs{padding:3px 7px;min-height:22px;min-width:unset;font-size:12px;font-weight:400;line-height:1.3333}.vc-btn-xs{min-width:60px}.vc-btn-small{padding:3px 11px;min-height:30px;min-width:60px;font-size:14px;font-weight:500;line-height:1.2857}.vc-btn-medium{padding:7px 15px;min-height:38px;min-width:100px;font-size:16px;font-weight:500;line-height:1.25}.vc-btn-iconOnly{width:32px;height:32px;min-width:unset;min-height:unset;padding:0;background-color:transparent;border-color:transparent;&:hover{background-color:var(--control-icon-only-background-hover);border-color:var(--control-icon-only-border-hover)}&:active{background-color:var(--control-icon-only-background-active);border-color:var(--control-icon-only-border-active)}}.vc-btn-primary{background-color:var(--control-primary-background-default);border-color:var(--control-primary-border-default);color:var(--control-primary-text-default);&:hover{background-color:var(--control-primary-background-hover);border-color:var(--control-primary-border-hover);color:var(--control-primary-text-hover)}}.vc-btn-secondary,.vc-btn-link{background-color:var(--control-secondary-background-default);border-color:var(--control-secondary-border-default);color:var(--control-secondary-text-default);&:hover{background-color:var(--control-secondary-background-hover);border-color:var(--control-secondary-border-hover);color:var(--control-secondary-text-hover)}}.vc-btn-dangerPrimary{background-color:var(--control-critical-primary-background-default);border-color:var(--control-critical-primary-border-default);color:var(--control-critical-primary-text-default);&:hover{background-color:var(--control-critical-primary-background-hover);border-color:var(--control-critical-primary-border-hover);color:var(--control-critical-primary-text-hover)}}.vc-btn-dangerSecondary{background-color:var(--control-critical-secondary-background-default);border-color:var(--control-critical-secondary-border-default);color:var(--control-critical-secondary-text-default);&:hover{background-color:var(--control-critical-secondary-background-hover);border-color:var(--control-critical-secondary-border-hover);color:var(--control-critical-secondary-text-hover)}}.vc-btn-overlayPrimary{background-color:var(--control-overlay-primary-background-default);border-color:var(--control-overlay-primary-border-default);color:var(--control-overlay-primary-text-default);&:hover{background-color:var(--control-overlay-primary-background-hover);border-color:var(--control-overlay-primary-border-hover);color:var(--control-overlay-primary-text-hover)}}.vc-btn-positive{background-color:var(--control-connected-background-default, var(--green-430));color:var(--white);&:hover{background-color:var(--control-connected-background-hover, var(--green-460))}}.vc-btn-none{background-color:transparent;border-color:transparent;color:var(--control-icon-only-icon-default);&:hover{background-color:var(--control-icon-only-background-hover);border-color:var(--control-icon-only-border-hover);color:var(--control-icon-only-icon-hover)}}.vc-btn-link-icon{width:.875em;height:.875em;margin-left:8px;flex-shrink:0}.vc-text-btn-base{display:inline-flex;justify-content:center;align-items:center;gap:var(--space-4, 4px);background:initial;color:var(--text-default);font-size:medium;font-weight:400;margin:0;padding:0;text-align:start;text-decoration:none;max-width:100%;white-space:nowrap;&:disabled{opacity:.5}&:hover{text-decoration:underline}&:focus-visible{box-shadow:0 0 0 4px var(--__adaptive-focus-ring-color, var(--border-focus, #00b0f4))}}.vc-text-btn-primary{color:var(--text-brand)}.vc-text-btn-secondary{color:var(--text-strong, var(--text-default))}.vc-text-btn-danger{color:var(--text-feedback-critical)}.vc-text-btn-link{color:var(--text-link)}.vc-owner-crown-icon{color:var(--status-warning)}.vc-link{color:var(--text-link);text-decoration:var(--link-decoration)}.vc-link-underline-on-hover:hover{text-decoration:underline}.vc-link-disabled{pointer-events:none;opacity:.5}.enable-forced-colors .vc-link,.enable-forced-colors .vc-link-underline-on-hover{background-color:canvas;text-decoration:underline;color:linktext!important}.enable-forced-colors .vc-link svg,.enable-forced-colors .vc-link-underline-on-hover svg{color:currentcolor}.enable-forced-colors .vc-link:not([href]),.enable-forced-colors .vc-link-underline-on-hover:not([href]){background-color:buttonface;color:buttontext!important}.vc-divider{height:1px;width:100%;border:none;border-top:1px solid var(--border-subtle)}.vc-form-switch-container{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--border-subtle)}.vc-form-switch-no-border{border-bottom:none;margin-bottom:0}.vc-form-switch{display:flex;align-items:flex-start;justify-content:space-between;cursor:pointer;gap:16px}.vc-form-switch-disabled{opacity:.5;cursor:not-allowed}.vc-form-switch-text{flex:1;min-width:0;max-width:80%}.vc-form-switch-control{flex-shrink:0;padding-top:2px}.vc-switch-container{display:flex;align-items:center;position:relative}.vc-switch-indicator{background:var(--switch-background-default);border:1px solid var(--switch-border-default);border-radius:var(--radius-lg);box-sizing:border-box;cursor:pointer;height:24px;position:relative;width:48px;transition:background-color .2s ease,border-color .2s ease}.vc-switch-checked .vc-switch-indicator{background:var(--switch-background-selected-default);border-color:var(--switch-border-selected-default)}.vc-switch-disabled{cursor:not-allowed;opacity:.5}.vc-switch-disabled .vc-switch-indicator{cursor:not-allowed}.vc-switch-focusVisible .vc-switch-indicator{box-shadow:0 0 0 2px var(--border-focus, #00a8fc)}.vc-switch-container:hover .vc-switch-indicator{background:var(--switch-background-hover);border-color:var(--switch-border-hover)}.vc-switch-checked:hover .vc-switch-indicator{background:var(--switch-background-selected-hover);border-color:var(--switch-border-selected-hover)}.vc-switch-thumb{align-items:center;display:flex;height:24px;justify-content:center;left:1px;margin-left:-1px;margin-top:-1px;position:absolute;width:24px;transition:left .15s ease-in-out}.vc-switch-checked .vc-switch-thumb{left:24px}.vc-switch-checked .vc-switch-thumb rect{fill:var(--switch-thumb-background-selected-default)}.vc-switch-input{border-radius:14px;cursor:pointer;height:100%;left:0;margin:0;opacity:0;position:absolute;top:0;width:100%;&:disabled{pointer-events:none;cursor:not-allowed}}.vc-h1,.vc-h2,.vc-h3,.vc-h4,.vc-h5{color:var(--text-strong);font-family:var(--font-display)}.vc-h1{font-size:20px;font-weight:600;line-height:1.2}.vc-h2{font-size:16px;font-weight:600;line-height:1.25}.vc-h3{font-size:16px;font-weight:500;line-height:1.25}.vc-h4{font-size:16px;font-weight:600;line-height:1.25}.vc-h5{font-size:16px;font-weight:500;line-height:1.25}.vc-h1-defaultMargin,.vc-h2-defaultMargin{margin-bottom:20px}.vc-h4-defaultMargin{margin-bottom:0;margin-top:0}.vc-h3-defaultMargin,.vc-h5-defaultMargin{margin-bottom:8px}.vc-global-badges-settings-button{width:100%;height:50px}.vc-chatbar-button{display:flex;align-items:center}.vc-chatbar-discord-button{opacity:.7;align-items:center;align-self:center;border-radius:8px;cursor:pointer;display:flex;justify-content:center;padding:10px;&:hover{background:#ffffff1a;opacity:1}}.vc-chatbar-button-wrapper{align-self:center;display:flex;flex-direction:row;gap:8px}.vc-settings-tab-bar{margin-top:20px;margin-bottom:10px;border-bottom:1px solid var(--border-subtle)}.vc-settings-tab-bar-item{margin-right:32px;padding-bottom:16px;margin-bottom:-2px}.vc-settings-donate,.vc-settings-discordinvite{display:flex;flex-direction:row}.vc-settings-card{padding:1em;margin-bottom:1em}.vc-settings-card-buttons{display:flex;margin-top:1.5em;gap:.5em}.vc-warning-card{padding:1em;background:var(--background-feedback-warning);border:1px solid var(--text-status-idle);color:var(--text-status-idle)}.vc-backup-restore-card{background-color:var(--background-feedback-warning);border-color:var(--text-status-idle);color:var(--text-status-idle)}.vc-settings-theme-links{display:inline-block!important;color:var(--text-default)!important;padding:.5em 1em;border:1px solid var(--input-border-default);max-height:unset;background-color:transparent;box-sizing:border-box;resize:none;width:100%;font-size:1em;line-height:2em;white-space:nowrap}.vc-settings-theme-links::placeholder{color:var(--text-subtle)!important}.vc-settings-theme-links:focus{background-color:var(--background-base-lowest)}.vc-cloud-settings-sync-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1em;margin-top:16px}.vc-cloud-erase-data-danger-btn{color:var(--control-critical-primary-text-default);background-color:var(--control-critical-primary-background-default)}.vc-cloud-icon-with-button{display:flex;gap:.5em;padding-inline:.5em 1em}.vc-cloud-button-icon{height:1.25em}.vc-settings-switches{display:grid;gap:8px}.vc-changelog-entry{padding:.75em;margin-bottom:.5em;background-color:var(--background-base-lower-alt);border-radius:8px;transition:.1s ease-out;transition-property:box-shadow,transform,background,opacity}.vc-changelog-entry:hover{background-color:var(--background-base-low);transform:translateY(-1px);box-shadow:var(--elevation-high)}.vc-changelog-entry.required{border-left:4px solid var(--status-warning);background-color:var(--background-base-lower-alt);padding-left:calc(.75em - 4px)}.vc-changelog-entry.required:hover{background-color:var(--background-base-low);border-left-color:var(--status-warning-background)}.vc-changelog-entry-header{display:flex;align-items:center;gap:.5em;margin-bottom:.25em}.vc-changelog-entry-hash{font-size:.875em;font-family:var(--font-code);color:var(--text-subtle)}.vc-changelog-entry-author{font-size:.875em;color:var(--text-subtle);font-weight:500}.vc-changelog-entry-message{color:var(--text-default);font-size:.95em;line-height:1.4}.vc-changelog-entry.required .vc-changelog-entry-hash{color:var(--text-subtle);font-weight:600}.vc-changelog-loading{text-align:center;padding:2em;color:var(--text-subtle)}.vc-changelog-empty{text-align:center;padding:2em;background-color:var(--background-base-lower-alt);border-radius:8px;color:var(--text-subtle)}.vc-changelog-controls{display:flex;align-items:center;flex-wrap:wrap;gap:.5em}.vc-changelog-repo-info{display:flex;align-items:center;gap:.5em;margin-bottom:1em}.vc-changelog-current-hash{font-family:var(--font-code);background-color:var(--background-base-lowest);padding:.125em .25em;border-radius:3px;font-size:.875em}.vc-changelog-new-plugins-section{margin-bottom:1.5em;padding:1em;background-color:var(--background-base-lower-alt);border-radius:8px;border-left:4px solid var(--brand)}.vc-changelog-new-plugins-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.75em}.vc-changelog-new-plugin-card{background-color:var(--background-base-low);border-radius:6px;padding:.5em;transition:all .1s ease-out}.vc-changelog-new-plugin-card:hover{background-color:var(--background-base-lowest);transform:translateY(-1px);box-shadow:var(--elevation-medium)}.vc-changelog-new-plugin-card.required{border-left:4px solid var(--status-warning);background-color:var(--background-base-lower-alt)}.vc-changelog-new-plugin-card.required:hover{background-color:var(--background-base-low);border-left-color:var(--status-warning-background)}.vc-changelog-new-plugins-compact{display:flex;flex-wrap:wrap;gap:.5em;margin-bottom:0;padding-top:0}.vc-changelog-new-plugins-list{display:flex;flex-wrap:wrap;gap:.5em}.vc-changelog-new-plugin-tag{display:inline-flex;align-items:center;padding:.25em .5em;background-color:var(--brand);color:var(--white);border-radius:4px;font-size:.875em;font-weight:500;text-decoration:none;transition:background-color .1s ease}.vc-changelog-new-plugin-tag:hover{background-color:var(--brand-700)}.vc-changelog-new-plugin-tag.more{background-color:var(--background-base-lower-alt);color:var(--text-subtle)}.vc-changelog-new-plugin-tag.required{background-color:var(--status-warning);color:var(--white);border:1px solid var(--status-warning-background)}.vc-changelog-new-plugin-tag.required:hover{background-color:var(--status-warning-background)}.vc-changelog-restart-notice{margin-top:1em;padding:.75em;background-color:var(--background-feedback-warning);border-radius:6px;border-left:4px solid var(--status-warning)}.vc-changelog-history{margin-top:1.5em}.vc-changelog-history-list{display:flex;flex-direction:column;gap:.75em;padding-right:.5em;min-height:auto!important;max-height:none!important;height:auto!important}.vc-changelog-log{background-color:var(--background-base-lower-alt);border-radius:8px;overflow:hidden;transition:all .1s ease-out}.vc-changelog-log:hover{box-shadow:var(--elevation-medium)}.vc-changelog-log-header{display:flex;align-items:center;justify-content:space-between;padding:1em;cursor:pointer;transition:background-color .1s ease;user-select:none;gap:.5em;position:relative}.vc-changelog-log-header:hover{background-color:var(--background-base-low)}.vc-changelog-log-info{flex:1}.vc-changelog-log-title{font-weight:600;font-size:.95em;color:var(--text-default);margin-bottom:.25em;font-family:var(--font-code);display:flex;align-items:center;gap:8px;flex:1}.vc-changelog-log-meta{font-size:.875em;color:var(--text-subtle);line-height:1.3}.vc-changelog-log-toggle{transition:transform .2s ease;color:var(--text-subtle);font-size:.75em;flex-shrink:0}.vc-changelog-log-toggle.expanded{transform:rotate(180deg)}.vc-changelog-log-content{padding:0 1em 1em;border-top:1px solid var(--background-base-lowest);animation:expand-content .2s ease-out;min-height:auto!important;max-height:none!important;overflow:visible!important}.vc-changelog-log-plugins{margin-bottom:1em;padding-top:.75em}.vc-changelog-log-plugins:last-child{margin-bottom:0}.vc-changelog-log-commits{margin-bottom:1em;padding-top:.75em}.vc-changelog-log-commits:last-child{margin-bottom:0}.vc-changelog-log-commits-list{display:flex;flex-direction:column;gap:.5em;padding-right:.5em;padding-top:0}.vc-changelog-plugins-list .vc-changelog-entry{padding:.75em;margin-bottom:.5em}.visual-refresh .vc-changelog-entry{background-color:var(--background-surface-high);border:1px solid var(--border-subtle)}.vc-changelog-log-commits-list .vc-changelog-entry:last-child{margin-bottom:0}.vc-changelog-plugins-list{display:flex;flex-direction:column;gap:.5em;padding-right:.5em;padding-top:0}.visual-refresh .vc-changelog-entry.required{border-left:4px solid var(--status-warning);background-color:var(--background-surface-high);border:1px solid var(--border-subtle);padding-left:calc(.75em - 4px)}.vc-changelog-plugins-list .vc-changelog-entry:last-child{margin-bottom:0}.vc-changelog-plugins-list .vc-changelog-entry.required{padding-left:calc(.75em - 4px);margin-bottom:.5em}.vc-changelog-plugins-list .vc-changelog-entry.required:last-child{margin-bottom:0}.vc-changelog-log-commits-list::-webkit-scrollbar{width:6px}.vc-changelog-log-commits-list::-webkit-scrollbar-track{background:var(--background-base-lower-alt);border-radius:3px}.vc-changelog-log-commits-list::-webkit-scrollbar-thumb{background:var(--text-subtle);border-radius:3px}.vc-changelog-log-commits-list::-webkit-scrollbar-thumb:hover{background:var(--text-default)}.vc-changelog-current{margin-bottom:1.5em}.vc-changelog-commits-list{display:flex;flex-direction:column;gap:.5em}.vc-changelog-history-list::-webkit-scrollbar,.vc-changelog-log-content::-webkit-scrollbar{width:6px}.vc-changelog-history-list::-webkit-scrollbar-track,.vc-changelog-log-content::-webkit-scrollbar-track{background:var(--background-base-lower-alt);border-radius:3px}.vc-changelog-history-list::-webkit-scrollbar-thumb,.vc-changelog-log-content::-webkit-scrollbar-thumb{background:var(--text-subtle);border-radius:3px}.vc-changelog-history-list::-webkit-scrollbar-thumb:hover,.vc-changelog-log-content::-webkit-scrollbar-thumb:hover{background:var(--text-default)}.visual-refresh .vc-changelog-entry:hover{background-color:var(--background-surface-high);box-shadow:0 2px 8px #0000001a}.visual-refresh .vc-changelog-empty{background-color:var(--background-surface-high);border:1px solid var(--border-subtle)}.visual-refresh .vc-changelog-current-hash{background-color:var(--input-background);border:1px solid var(--border-subtle)}.visual-refresh .vc-changelog-new-plugins-section{background-color:var(--background-surface-high);border:1px solid var(--border-subtle);border-left:4px solid var(--brand)}.visual-refresh .vc-changelog-new-plugin-card{background-color:var(--card-secondary-bg);border:1px solid var(--border-subtle)}.visual-refresh .vc-changelog-log{background-color:var(--background-surface-high);border:1px solid var(--border-subtle)}.visual-refresh .vc-changelog-log-header:hover{background-color:var(--card-secondary-bg)}.visual-refresh .vc-changelog-log-content{border-top:1px solid var(--border-subtle)}.visual-refresh .vc-changelog-restart-notice{background-color:var(--background-surface-high);border:1px solid var(--status-warning);border-left:4px solid var(--status-warning)}@media(width<=768px){.vc-changelog-new-plugins-grid{grid-template-columns:1fr}.vc-changelog-controls{flex-direction:column;align-items:stretch}.vc-changelog-session-header{flex-direction:column;align-items:flex-start;gap:.5em}.vc-changelog-log-toggle{align-self:flex-end;margin-top:-1.5em}.vc-changelog-log-title{flex-wrap:wrap;gap:4px}.vc-changelog-delete-button{order:1}}@keyframes expand-content{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.vc-changelog-badge{display:inline-flex;align-items:center;padding:.125em .375em;background-color:var(--brand);color:var(--white);border-radius:12px;font-size:.75em;font-weight:600;margin-left:.5em}.vc-changelog-badge.warning{background-color:var(--status-warning)}.vc-changelog-badge.success{background-color:var(--status-positive)}.vc-changelog-dep-text{font-size:.875em;color:var(--text-subtle);margin-left:1em;font-style:italic}.visual-refresh .vc-changelog-new-plugin-tag.required{background-color:var(--status-warning);border:1px solid var(--status-warning-background)}.visual-refresh .vc-changelog-new-plugin-card.required{border-left:4px solid var(--status-warning);background-color:var(--card-secondary-bg)}.vc-settings-tab [class*=changelog]{min-height:auto!important;max-height:none!important;overflow:visible!important}.vc-settings-tab .vc-changelog-history,.vc-settings-tab .vc-changelog-history-list,.vc-settings-tab .vc-changelog-log-content{min-height:auto!important;max-height:none!important;height:auto!important;overflow:visible!important}.visual-refresh .vc-changelog-entry.required:hover{background-color:var(--card-secondary-bg)}.vc-changelog-delete-button{transition:opacity .2s ease,color .2s ease,background-color .2s ease;border-radius:4px;flex-shrink:0}.vc-changelog-delete-button:hover{opacity:1!important;color:var(--status-danger)!important;background-color:var(--background-mod-subtle)}.vc-changelog-log-header:hover .vc-changelog-delete-button{opacity:.8}.vc-card-base{border-style:solid;border-width:1px;border-radius:var(--radius-sm);position:relative}.vc-card-primary{background-color:var(--card-background-default);border-color:var(--border-subtle);color:var(--text-default)}.vc-card-normal{border:1px solid var(--border-subtle)}.vc-card-danger{background-color:var(--background-feedback-critical);border-color:var(--background-feedback-critical);color:var(--text-feedback-critical)}.vc-card-warning{background-color:var(--background-feedback-warning);border-color:var(--background-feedback-warning);color:var(--text-feedback-warning)}.vc-card-success{background-color:var(--background-feedback-positive);border-color:var(--background-feedback-positive);color:var(--text-feedback-positive)}.vc-card-brand{background-color:var(--brand-500);border-color:var(--brand-500)}.vc-card-outline{background-color:transparent}.vc-card-base a{color:var(--text-link)}.vc-card-danger a,.vc-card-warning a,.vc-card-success a,.vc-card-brand a{color:var(--white);font-weight:var(--font-weight-bold)}.vc-card-base a:hover{text-decoration:underline}.vc-card-defaultPadding{padding:1em}.vc-notification-root{all:unset;display:flex;flex-direction:column;color:var(--text-default);background-color:var(--background-base-low);border-radius:6px;overflow:hidden;cursor:pointer;width:100%}.vc-notification-root:not(.vc-notification-log-wrapper>.vc-notification-root){position:absolute;z-index:2147483647;right:1rem;width:min(25vw,400px);min-height:10vh}.vc-notification{display:flex;flex-direction:row;padding:1.25rem;gap:1.25rem}.vc-notification-content{width:100%;overflow:hidden}.vc-notification-header{display:flex;justify-content:space-between}.vc-notification-title{color:var(--text-strong);font-size:1rem;font-weight:600;line-height:1.25rem;text-transform:uppercase}.vc-notification-close-btn{all:unset;cursor:pointer;color:var(--interactive-icon-default);opacity:.5;transition:opacity .2s ease-in-out,color .2s ease-in-out}.vc-notification-close-btn:hover{color:var(--interactive-icon-hover);opacity:1}.vc-notification-icon{height:4rem;width:4rem;border-radius:6px}.vc-notification-progressbar{height:.25rem;border-radius:5px;margin-top:auto}.vc-notification-p{margin:.5rem 0 0;line-height:140%}.vc-notification-img{width:100%}.vc-notification-log-modal{max-width:962px;width:clamp(var(--modal-width-large, 800px),962px,85vw)}.vc-notification-log-empty{height:218px;background:url(/assets/b36de980b174d7b798c89f35c116e5c6.svg) center no-repeat;margin-bottom:40px}.vc-notification-log-wrapper{height:120px;width:100%;padding-bottom:16px;box-sizing:border-box;transition:.2s ease;transition-property:height,opacity;.vc-notification-root{height:104px}}.vc-notification-log-removing{height:0!important;opacity:0;margin-bottom:1em}.vc-notification-log-body-wrapper{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.vc-notification-log-body{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;line-height:1.2em}.vc-notification-log-timestamp{margin-left:auto;font-size:.8em;font-weight:lighter}.vc-notification-log-danger-btn{color:var(--control-critical-primary-text-default);background-color:var(--control-critical-primary-background-default)}.vc-addon-card{background-color:var(--card-background-default);color:var(--interactive-icon-active);border:1px solid var(--border-subtle);border-radius:8px;display:block;height:100%;padding:12px;width:100%;transition:.1s ease-out;transition-property:box-shadow,transform,background,opacity;box-sizing:border-box}.vc-addon-card-disabled{opacity:.6}.vc-addon-card:hover{transform:translateY(-1px);box-shadow:var(--elevation-high)}.vc-addon-header{margin-top:auto;display:flex;width:100%;justify-content:flex-end;align-items:center;gap:8px;margin-bottom:.5em}.vc-addon-note{height:34px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;box-orient:vertical;color:var(--text-default)}.vc-addon-name-author{width:100%}.vc-addon-name{display:flex;width:100%;align-items:center;flex-grow:1}.vc-addon-author{font-size:.8em}.vc-addon-author:before{content:"by "}.vc-addon-title-container{width:100%;overflow:hidden;height:1.25em;position:relative}.vc-addon-title{position:absolute;inset:0;overflow:hidden;text-overflow:ellipsis}@keyframes vc-addon-title{0%{transform:translate(0)}50%{transform:translate(var(--offset))}to{transform:translate(0)}}.vc-addon-title:hover{overflow:visible;animation:vc-addon-title var(--duration) linear infinite}.vc-addon-editable{border:none;background:transparent;color:inherit;font:inherit}.vc-addon-footer{font-size:small}.vc-badge-base{display:inline-flex;align-items:center;align-self:center;gap:var(--space-4, 4px);padding:0 var(--space-8, 8px);border-radius:var(--radius-round, 9999px);box-sizing:border-box;font-family:var(--font-display);font-size:12px;font-weight:700;line-height:1.3333;letter-spacing:.02em;text-align:center;text-transform:uppercase;white-space:nowrap}.vc-badge-icon{width:12px;height:12px;flex-shrink:0}.vc-badge-default{background-color:var(--badge-background-brand);color:var(--badge-text-brand)}.vc-badge-expressive{background-color:var(--badge-expressive-background-default);color:var(--badge-expressive-text-default)}.vc-badge-danger{background-color:var(--status-danger);color:var(--white)}.vc-badge-positive{background-color:var(--status-positive);color:var(--white)}.vc-badge-warning{background-color:var(--status-warning);color:var(--black)}.vc-badge-premium{background-color:var(--premium-tier-2-purple-for-gradients);color:var(--white)}.vc-plugin-modal-header{align-items:flex-start;position:relative}.vc-plugin-modal-header-content{display:flex;flex-direction:column;gap:8px;flex:1}.vc-plugin-modal-header-trailing{position:absolute;top:8px;right:8px;display:flex;flex-direction:column;align-items:flex-end;gap:4px}.vc-plugin-modal-title{color:var(--text-strong);padding-right:32px}.vc-plugin-modal-description{color:var(--text-subtle);padding-right:60px}.vc-plugin-modal-links{display:flex;gap:4px;margin-left:auto}.vc-plugin-modal-confirm [class*=footer]{flex-direction:row-reverse;gap:var(--space-8, 8px)}.vc-plugin-modal-confirm [class*=footer]>button{flex:1;margin:0;width:100%}.vc-plugin-modal-warning{display:flex;align-items:center;gap:4px;color:var(--text-feedback-critical)}.vc-settings-modal-content{padding-bottom:24px}.vc-plugin-modal-info{display:flex;gap:1em;justify-content:space-between;align-items:start}.vc-plugin-modal-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.vc-plugin-modal-tag{align-items:center;border:1px solid var(--border-normal);border-radius:9999px;display:flex;justify-content:center;padding:6px 12px;color:var(--text-default)}.vc-plugin-modal-about-box{padding:16px;border-radius:8px;border:1px solid var(--border-normal, var(--background-modifier-accent))}.vc-plugins-setting-section,.vc-plugins-setting-content{display:flex;flex-direction:column;gap:.5em}.vc-plugins-setting-inline{flex-direction:row;align-items:center;justify-content:space-between}.vc-plugins-setting-label{display:flex;flex-direction:column;gap:.25em}.vc-plugins-setting-title{color:var(--text-strong)}.vc-plugins-setting-inline .vc-plugins-setting-description{color:var(--text-subtle)}.vc-plugins-setting-error{color:var(--text-feedback-critical, #FF5C5C)}.vc-author-modal-root{padding:0 0 16px}.vc-author-modal-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.vc-author-modal-name{text-transform:none;margin:0;flex-grow:0;background:var(--background-base-lowest);border-radius:0 9999px 9999px 0;padding:6px .8em 6px .5em;font-size:20px;line-height:1;position:relative;text-wrap:nowrap}.vc-author-modal-name:before{content:"";display:block;position:absolute;height:100%;width:32px;background:var(--background-base-lowest);z-index:-1;left:-32px;top:0;border-top-left-radius:9999px;border-bottom-left-radius:9999px}.vc-author-modal-avatar{flex-shrink:0;transform:translate(4px);position:relative;z-index:2;height:32px;width:32px;border-radius:50%;border:2px solid var(--background-primary);box-shadow:0 0 0 1px #ffffff2e,0 2px 6px #00000059}.vc-author-modal-links{display:flex;gap:4px;margin-left:auto;width:100%;justify-content:flex-end}.vc-author-modal-plugins{display:grid;gap:.5em;margin-top:.75em}.vc-settings-modal-light{color:#000}.vc-settings-modal-dark{color:#fff}.vc-settings-modal-favorite-button{cursor:pointer;transition:color .2s ease-in-out}.vc-settings-modal-favorite-button-active,.vc-settings-modal-favorite-button:hover{color:var(--yellow-300)}.vc-settings-modal-link-icon{height:32px;width:32px;border-radius:50%;border:4px solid var(--background-base-lowest);box-sizing:border-box}.vc-settings-modal-favorite-icon{background:var(--background-base-lowest);padding:1px}.vc-settings-modal-links{display:flex;gap:.2em;margin-left:auto}.vc-plugins-grid{margin-top:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.vc-plugins-info-button{height:24px;width:24px;padding:0;background:transparent;margin-right:8px;color:var(--icon-muted);transition:background-color .2s ease;&:hover{color:var(--interactive-icon-hover)}}.vc-plugins-settings-button:hover{color:var(--interactive-icon-hover)}.vc-plugins-filter-controls{display:grid;height:40px;gap:10px;grid-template-columns:1fr 1fr;align-items:center}.vc-plugins-filter-control{height:40px}.vc-plugins-dep-name{margin:0 auto}.vc-plugins-info-card{padding:1em;height:fit-content;display:flex;flex-direction:column;background-color:var(--background-base-lower-alt)!important;transition:.1s ease-out;transition-property:box-shadow,transform,background,opacity;gap:.25em}.vc-plugins-restart-card{padding:1em;background:var(--icon-status-idle)!important;border:1px solid var(--icon-status-idle)!important;color:var(--text-status-idle)}.vc-plugins-info-icon:not(:hover,:focus){color:var(--text-subtle)}.vc-plugins-restart-button{background-color:var(--background-base-low)!important;border:1px solid var(--text-status-idle)!important;margin-top:.5em}.vc-plugins-restart-button:hover{background-color:var(--text-status-idle)!important}.vc-plugin-stats{background-color:var(--background-base-lower-alt);border-radius:8px;padding:12px;box-sizing:border-box;width:100%;display:flex;flex-direction:column;justify-content:space-evenly;transition:.1s ease-out;transition-property:box-shadow,transform,background,opacity}.vc-plugins-info-card:hover,.vc-plugin-stats:hover{background-color:var(--background-base-low)!important;transform:translateY(-1px);box-shadow:var(--elevation-high)}.vc-plugin-stats-card-container{display:flex;justify-content:space-between;align-items:center}.vc-plugin-stats-card-section{text-align:center;flex:1}.vc-plugin-stats-card-divider{border-left:1px solid #ccc;height:100%;margin:0 10px}.vc-text-selectable{user-select:none}.vc-warning-info{gap:15px;display:grid!important;flex-direction:column;user-select:none}.vc-warning-info img{width:70%;height:auto;display:block;margin:auto auto 10px}.vc-warning-info strong{font-weight:700}.text-danger{color:var(--text-feedback-critical)!important;font-size:1.2rem;font-weight:700}.text-normal{color:var(--text-default);font-size:1.2rem}.text-normal.margin-bottom{margin-bottom:10px}.vc-plugins-disable-warning,.vc-plugin-modal-disable-warning{background-color:color-mix(in srgb,var(--status-danger) 10%,transparent)!important;border-style:solid!important;border-width:.1rem!important;border-color:color-mix(in srgb,var(--status-danger) 80%,transparent)!important;border-radius:5px!important;color:color-mix(in srgb,var(--status-danger) 100%,transparent)!important}.vc-plugins-disable-warning:hover,.vc-plugin-modal-disable-warning:hover{background-color:color-mix(in srgb,var(--status-danger) 40%,transparent)!important}.vc-plugins-confirm-reset,.vc-plugin-modal-confirm-reset{background-color:var(--status-danger)!important;color:var(--text-default)}.vc-plugins-confirm-reset:hover,.vc-plugin-modal-confirm-reset:hover{background-color:var(--text-feedback-critical)!important;color:var(--text-default)}.vc-modal-close-button{margin-left:auto!important}.vc-modal-align-reset{align-self:end}.vc-modal-footer{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.vc-modal-footer .vc-button-container{gap:10px;align-items:center;justify-content:space-between!important}.warning-text{color:var(--text-feedback-critical)!important;font-size:1.2rem!important}.warning-text span{font-weight:700;text-decoration:underline}.visual-refresh .button-danger-background{font-size:16px;background-color:#f047471a!important;color:#f04747!important;border:1px solid rgb(240 71 71 / 60%)!important;border-radius:4px;font-weight:500;padding:6px 10px;text-align:center}.visual-refresh .button-danger-background:hover{background-color:var(--status-danger-background)!important;color:var(--status-danger-text)!important}.visual-refresh .vc-plugins-info-card,.visual-refresh .vc-plugin-stats{background-color:var(--background-surface-high)!important;border:1px solid var(--border-subtle)!important;&:hover{background-color:var(--background-surface-high)!important}}.vc-plugins-settings{display:flex;flex-direction:column;gap:1.25em}.vc-plugins-page-buttons{margin-top:12px;display:flex;align-items:center;justify-content:center;gap:8px}.vc-plugins-source{width:22px;height:22px;margin-top:2px;margin-right:8px}.vc-plugins-stats-container{margin-top:16px;gap:16px;display:flex;flex-direction:row;width:100%}.vc-plugins-ui-elements{margin-top:16px}.vc-settings-quickActions-card{display:grid;grid-template-columns:repeat(3,1fr);gap:.5em;padding:.5em;margin-bottom:1em}@media(width<=1040px){.vc-settings-quickActions-card{grid-template-columns:repeat(2,1fr)}}.vc-settings-quickActions-pill{all:unset;background:var(--control-secondary-background-default);color:var(--control-secondary-text-default, var(--text-default));display:flex;align-items:center;justify-content:center;gap:.5em;padding:8px 12px 8px 8px;border-radius:8px;transition:.1s ease-out;box-sizing:border-box;line-height:1;cursor:pointer}.vc-settings-quickActions-pill:hover{background:var(--control-secondary-background-hover);transform:translateY(-1px);box-shadow:var(--elevation-high)}.vc-settings-quickActions-pill:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.vc-settings-quickActions-img{width:24px;height:24px;flex-shrink:0}.vc-invite-button,.vc-donate-button{overflow:visible!important;color:#000;background-color:color-mix(in srgb,#ED87A9 25%,pink)}.vc-invite-button:hover,.vc-donate-button:hover{overflow:visible!important;color:#000;background-color:color-mix(in srgb,#ED87A9 50%,pink)}.vc-invite-support-button,.vc-donate-support-button{overflow:visible!important;color:#000;background-color:color-mix(in srgb,#c3a3ce 25%,rgb(240 178 240))}.vc-invite-support-button:hover,.vc-donate-support-button:hover{overflow:visible!important;color:#000;background-color:color-mix(in srgb,#c3a3ce 50%,rgb(240 178 240))}.vc-translate-button{overflow:visible!important;color:#000;background-color:color-mix(in srgb,#575757 50%,rgb(255 255 255))}.vc-translate-button:hover{overflow:visible!important;color:#000;background-color:color-mix(in srgb,#575757 50%,rgb(201 201 201))}.vc-invite-link{width:16px;height:16px;margin-left:8px;flex-shrink:0}.vc-contrib-button{overflow:visible!important;margin-top:1em;color:#000;background-color:color-mix(in srgb,#EDCC87 60%,lightyellow)}.vc-contrib-button:hover{color:#000;background-color:color-mix(in srgb,#EDCC87 75%,lightyellow)}.vc-contrib-github{width:24px;height:24px;flex-shrink:0;transition:transform .3s}.vc-invite-button .vc-invite-link,.vc-contrib-button .vc-contrib-github,.vc-donate-button .vc-heart-icon,.vc-invite-support-button .vc-invite-link,.vc-donate-support-button .vc-heart-icon{transition:transform .3s;margin-right:.5em}.vc-invite-button:hover .vc-invite-link,.vc-contrib-button:hover .vc-contrib-github,.vc-donate-button:hover .vc-heart-icon,.vc-invite-support-button:hover .vc-invite-link,.vc-donate-support-button:hover .vc-heart-icon{transform:scale(1.1);z-index:10;position:relative}.vc-special-card-special{padding:1em 1.5em;margin-bottom:1em;background-size:cover;background-position:center}.vc-special-card-flex{display:flex;flex-direction:row}.vc-special-card-flex-main{width:100%}.vc-special-title{color:#000}.vc-special-subtitle{color:#000;font-size:1.2em;font-weight:700;margin-top:.5em}.vc-special-text{color:#000;font-size:1em;margin-top:.75em;white-space:pre-line}.vc-special-seperator{margin-top:.75em;border-top:1px solid white;opacity:.4}.vc-special-hyperlink{margin-top:1em;cursor:pointer}.vc-special-hyperlink-text{color:#000;font-size:1em;font-weight:700;text-align:center;transition:text-decoration .5s;cursor:pointer}.vc-special-hyperlink:hover .vc-special-hyperlink-text{text-decoration:underline}.vc-special-image-container{display:flex;justify-content:center;align-items:center;margin-left:1em;flex-shrink:0;width:100px;height:100px;border-radius:50%}.vc-special-image{width:65%}.vc-translate-modal-icon{margin:auto;width:60px}.vc-translate-modal-paragraph{padding:12px;text-align:center}.vc-plugin-ui-elements-button{display:flex;align-items:center;color:var(--interactive-icon-default);margin-top:.5em;cursor:pointer;&:hover{background-color:var(--background-mod-subtle);color:var(--interactive-icon-hover)}}.vc-plugin-ui-elements-button-arrow{margin-left:auto;width:24px;height:24px}.vc-plugin-ui-elements-modal-content{display:flex;flex-direction:column;gap:2em}.vc-plugin-ui-elements-switches{display:flex;flex-direction:column;gap:1em}.vc-plugin-ui-elements-switches-row{display:flex;gap:1em;width:100%;align-items:center;:last-child{margin-left:auto}}.vc-plugin-ui-elements-description{color:var(--text-subtle)}.vc-notice-container{border-radius:var(--radius-sm, 8px);box-sizing:border-box;display:grid;font-weight:500;grid-template-rows:1fr;padding:8px;width:100%;transition-duration:var(--expand-structural-duration, .2s);transition-property:grid-template-rows,padding-bottom,padding-top,border-width;transition-timing-function:var(--expand-easing-function, ease)}.vc-notice-hidden{border-width:0;grid-template-rows:0fr;padding-bottom:0;padding-top:0;transition-delay:var(--collapse-fade-duration, .1s);transition-duration:var(--collapse-structural-duration, .2s);transition-timing-function:var(--collapse-easing-function, ease)}.vc-notice-inner{display:flex;min-height:0;opacity:1;overflow:hidden;transition:opacity var(--expand-fade-duration, .1s) var(--expand-easing-function, ease) var(--expand-structural-duration, .2s)}.vc-notice-hidden .vc-notice-inner{opacity:0;transition-delay:0s;transition-duration:var(--collapse-fade-duration, .1s);transition-timing-function:var(--collapse-easing-function, ease)}.vc-notice-icon-wrapper{display:flex}.vc-notice-icon{flex-shrink:0;width:20px;height:20px}.vc-notice-text{align-self:center;flex:1 1 0%;margin-left:var(--space-8, 8px);font-family:var(--font-primary);font-size:14px;font-weight:500;line-height:1.2857;color:var(--text-default)}.vc-notice-text p{margin:0}.vc-notice-text p~p{margin-top:8px}.vc-notice-action{margin:auto 0 auto 16px}.vc-notice-info{background:var(--background-feedback-info);border:1px solid var(--icon-feedback-info);color:var(--text-feedback-info)}.vc-notice-info .vc-notice-icon{color:var(--icon-feedback-info)}.vc-notice-warning{background:var(--background-feedback-warning);border:1px solid var(--icon-feedback-warning);color:var(--text-feedback-warning)}.vc-notice-warning .vc-notice-icon{color:var(--icon-feedback-warning)}.vc-notice-danger{background:var(--background-feedback-critical);border:1px solid var(--icon-feedback-critical);color:var(--text-feedback-critical)}.vc-notice-danger .vc-notice-icon{color:var(--icon-feedback-critical)}.vc-notice-positive{background:var(--background-feedback-positive);border:1px solid var(--icon-feedback-positive);color:var(--text-feedback-positive)}.vc-notice-positive .vc-notice-icon{color:var(--icon-feedback-positive)}.vc-settings-theme-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.vc-settings-theme-link-row{display:grid;height:40px;gap:8px;grid-template-columns:1fr auto}.vc-settings-theme-filter-row{display:grid;height:40px;gap:8px;grid-template-columns:1fr 150px}.vc-settings-theme-error-card{padding:16px}.vc-settings-csp-list{display:flex;flex-direction:column;gap:8px}.vc-settings-csp-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0}.vc-settings-csp-row a{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1;min-width:0}.vc-settings-theme-menu-button{cursor:pointer;color:var(--interactive-icon-default, var(--interactive-normal));display:flex;align-items:center;height:24px}.vc-settings-theme-menu-button:hover{color:var(--interactive-icon-hover, var(--interactive-hover))}.vc-settings-theme-footer-pin-icon{display:flex}.vc-settings-theme-footer-pin-icon svg{width:16px;height:16px}.vc-settings-theme-footer-pin-icon svg path{fill:var(--text-muted)}:root{--vc-donatebutton: #ffc1cbc2;--vc-donatebutton-secondary: #f7536fe5}.vc-donatebutton{background-color:var(--background-base-low)!important;border-color:var(--vc-donatebutton)!important;filter:brightness(1);border-width:.1rem!important;border-style:solid!important}.vc-donatebutton:hover{background-color:var(--vc-donatebutton)!important;border-color:transparent!important}.vc-joindiscordbutton{background-color:var(--channeltextarea-background)!important}.vc-joindiscordbutton:hover{background-color:var(--redesign-button-tertiary-pressed-background)!important}.vc-settings-card-buttons{display:flex;gap:1em!important;margin-left:.2rem;margin-bottom:.2rem}.vc-settingbuttons{border-radius:5px!important}.form-switch-warning{font-size:16px;background-color:#f047471a;color:#f04747;border:1px solid rgb(240 71 71 / 60%);border-radius:4px;font-weight:500;padding:6px 10px;text-align:center;margin-top:10px}.vc-vencord-tab-settings-link{color:var(--text-link);display:inline-block}.vc-betterFolders-sidebar{grid-area:betterFoldersSidebar}.vc-betterFolders-nested-parent-list{height:auto!important;padding-bottom:6px!important}.vc-betterFolders-sidebar-grid{grid-template-columns:[start] min-content [guildsEnd] min-content [sidebarEnd] min-content [channelsEnd] 1fr [end];grid-template-areas:"titleBar titleBar titleBar titleBar" "guildsList betterFoldersSidebar notice notice" "guildsList betterFoldersSidebar channelsList page"}.vc-betterSessions-footer-buttons{display:flex;gap:.5em;align-items:center;justify-content:center;margin-top:2px}.vc-betterSessions-rename-btn{margin-left:4px;translate:0 -2px}.vc-betterSessions-new-btn{margin-left:4px;translate:0 -2px;pointer-events:none;padding:1px 4px}.vc-betterSessions-lowerBadge{width:20px;height:20px;display:flex;justify-content:center;align-items:center;overflow:hidden;border-radius:50%;background-color:var(--interactive-icon-default);color:var(--background-base-lower)}.vc-betterSessions-lowerBadge-icon{display:block}.vc-betterSessions-icon{align-items:center;border-radius:var(--radius-sm);display:flex;height:48px;justify-content:center;width:48px}.vc-betterSessions-description{display:flex;gap:4px}.vc-toolbox-btn,.vc-toolbox-icon{-webkit-app-region:no-drag}.vc-toolbox-icon{color:var(--interactive-icon-default)}.vc-toolbox-btn[class*=selected] .vc-toolbox-icon{color:var(--interactive-icon-active)}.vc-toolbox-btn:hover .vc-toolbox-icon{color:var(--interactive-icon-hover)}.vc-charCounter-counter{font-size:12px;color:var(--text-muted);position:absolute;bottom:4px;right:11px;pointer-events:none;z-index:2;background:transparent;transition:color .3s ease}.vc-charCounter-count{transition:color .3s ease}.vc-charCounter-selected{color:var(--brand-500)}.vc-clientTheme-settings{display:flex;flex-direction:column}.vc-clientTheme-container{display:flex;flex-direction:row;justify-content:space-between}.vc-clientTheme-labels{display:flex;flex-direction:column;justify-content:flex-start}.vc-clientTheme-container [class*=swatch]{border:thin solid var(--input-border-default)!important}.vc-clientTheme-buttons-container{margin-top:16px;display:flex;gap:4px}.vc-cfc-button{display:flex;align-items:center;margin-left:16px;cursor:pointer}.vc-customCommands-card{padding:.5em .5em .5em 1em;display:grid;grid-template-columns:1fr min-content min-content;align-items:center;gap:.25em}.vc-expandable-card{color:var(--text-default)}.vc-expandable-card-header{display:flex;cursor:pointer;padding:.75em 1em;margin:4px;border-radius:var(--radius-xs);.vc-expandable-card[data-expanded=true] &{background:var(--card-secondary-bg)}}.vc-expandable-card-icon{margin-left:auto}.vc-expandable-card-content{padding:.5em 1em}.vc-customRPC-settings-root{display:flex;flex-direction:column;gap:.5em;& h5{margin:0}}.vc-customRPC-settings-pair{display:grid;grid-template-columns:repeat(2,1fr);align-items:start;gap:.5em;width:100%}.vc-customRPC-settings-presets{display:grid;gap:.5em}.vc-customRPC-settings-preset-create{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5em}.vc-customRPC-settings-preset-actions{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.5em}.vc-customRPC-settings-single{display:grid;gap:.5em}.vc-customRPC-settings-disabled{opacity:.5;cursor:not-allowed}.vc-customRPC-settings-error{color:var(--text-feedback-critical)}.vc-dearrow-toggle-off .vc-dearrow-icon{filter:grayscale(1)}.vc-dearrow-toggle-on,.vc-dearrow-toggle-off{all:unset;display:inline;cursor:pointer;position:absolute;top:.75rem;right:.75rem}.vc-decor-danger-btn{color:var(--control-critical-primary-text-default);background-color:var(--control-critical-primary-background-default)}.vc-decor-change-decoration-modal-content{position:relative;display:flex;border-radius:5px 5px 0 0;gap:4px}.vc-decor-change-decoration-modal-preview{display:flex;flex-direction:column;margin-top:24px;gap:8px;max-width:280px}.vc-decor-change-decoration-modal-decoration{width:80px;height:80px}.vc-decor-change-decoration-modal-footer{justify-content:space-between}.vc-decor-create-decoration-modal-content{display:flex;flex-direction:column;gap:20px}.vc-decor-create-decoration-modal-form-preview-container{display:flex;gap:16px}.vc-decor-modal-header,.vc-decor-modal-footer{padding:16px}.vc-decor-modal-footer-btn-container{display:flex;flex-direction:row;gap:.5em}.vc-decor-create-decoration-modal-form{display:flex;flex-direction:column;flex-grow:1;gap:16px}.vc-decor-sectioned-grid-list-container{display:flex;flex-direction:column;overflow:hidden scroll;max-height:512px;gap:12px;width:352px}.vc-decor-sectioned-grid-list-grid{display:flex;flex-wrap:wrap;gap:8px}.vc-decor-section-remove-margin{margin-bottom:0}.vc-fpt-preview *{pointer-events:none}.vc-emoji-alias-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px;border-radius:8px;background:var(--background-secondary)}.vc-emoji-alias-row-editing{display:flex;align-items:center;gap:8px}.vc-emoji-alias-row-editing-text-input{width:180px}.vc-emoji-alias-row-arrow{color:var(--text-muted)}.vc-emoji-alias-row-error{color:var(--text-feedback-critical)}.vc-emoji-alias-row-button{display:flex;align-items:center;gap:8px}.vc-emoji-alias-settings{display:flex;flex-direction:column;gap:8px}.vc-hideAttachments-accessory{color:var(--text-muted);margin-top:.5em;font-style:italic;font-weight:400}.vc-hideAttachments-no-content{margin-top:0}.vc-customColors-modal-header{place-content:center;justify-content:space-between}.vc-customColors-modal-header h1{margin:0}.vc-customColors-modal-content{padding:1em}.vc-customColors-modal-footer{gap:16px}.vc-membercount-widget{gap:.85em;display:flex;align-content:center;--color-online: var(--green-360);--color-total: var(--primary-400);--color-voice: var(--primary-400)}.vc-membercount-tooltip{margin-top:.25em;margin-left:2px}.vc-membercount-member-list{justify-content:center;flex-wrap:wrap;margin-top:1em;padding-inline:1em;line-height:1.2em}.vc-membercount-container{display:flex;align-items:center;gap:.5em}.vc-membercount-online{color:var(--color-online)}.vc-membercount-total{color:var(--color-total)}.vc-membercount-voice{color:var(--color-voice)}.vc-membercount-online-count{fill:var(--status-online);width:18px;height:18px}.vc-membercount-total-count{fill:none;stroke:var(--icon-status-offline);stroke-width:4px;width:15px;height:15px}.vc-membercount-voice-icon{color:var(--color-voice);width:15px;height:15px}.vc-mentionAvatars-icon{vertical-align:middle;width:1em!important;height:1em;margin:0 4px .2rem 2px;box-sizing:border-box}.vc-mentionAvatars-role-icon{margin:0 2px .2rem 4px}.vc-gp-owner .vc-mentionAvatars-icon{display:none}@keyframes smyn-animation{0%{background-position:0}to{background-position:100px}}.smyn-gradient{position:relative;z-index:0}.smyn-gradient:after{background-clip:text;content:attr(data-text) / "";inset:0;position:absolute;filter:blur(4px);opacity:0;text-indent:0;transition:opacity .1s ease-in-out;text-wrap-style:balance;z-index:-1}.smyn-gradient-unset-bg:after{background:unset;-webkit-text-fill-color:currentcolor}.smyn-gradient-inherit-bg:after{background:inherit;-webkit-text-fill-color:transparent}.smyn-gradient-hovered:after{opacity:.7;transition:opacity .1s ease-in-out}.smyn-modal-footer-container button{width:100%}.smyn-reset-button{margin-top:8px;font-size:14px;font-weight:500}.smyn-native-gradient-animated>[data-username-with-effects],:where(.smyn-native-gradient-glow-overflow) .smyn-native-gradient-glow>[data-username-with-effects]{animation:smyn-animation var(--smyn-gradient-duration, 1.5s) linear infinite;background-image:linear-gradient(to right,var(--custom-display-name-styles-gradient-stops),var(--custom-display-name-styles-main-color) 100%)!important;background-size:100px auto!important}.smyn-native-gradient-glow>[data-username-with-effects]:after{background:inherit;background-clip:text;content:attr(data-username-with-effects) / "";filter:blur(4px);inset:0;opacity:0;position:absolute;text-indent:0;transition:opacity .1s ease-in-out;-webkit-text-fill-color:transparent;z-index:-1}.smyn-native-gradient-glow-active>[data-username-with-effects],.smyn-native-gradient-glow-overflow,.smyn-native-gradient-glow-overflow>.smyn-name-group,.smyn-native-gradient-glow-overflow>.smyn-name-group>.smyn-name,.smyn-native-gradient-glow-overflow :where([class^=text_],[class*=" text_"],[class^=username_],[class*=" username_"]){overflow:visible}.smyn-native-gradient-glow-active>[data-username-with-effects]:after,:where(.smyn-native-gradient-glow-overflow) .smyn-native-gradient-glow>[data-username-with-effects]:after{opacity:.7!important;transition:opacity .1s ease-in-out}.smyn-native-effect.smyn-native-message-effect{display:inline}.smyn-native-gummy-animated>[data-username-with-effects]{--smyn-gummy-inline-headroom: .12em;margin-inline:calc(var(--smyn-gummy-inline-headroom) * -1);padding-inline:var(--smyn-gummy-inline-headroom);text-overflow:clip}.smyn-container:hover{text-decoration-color:var(--smyn-underline-color, currentcolor);text-decoration-line:underline;text-decoration-style:initial;text-decoration-thickness:initial}.smyn-container:hover .smyn-native-effect>[data-username-with-effects]{text-decoration-color:var(--smyn-underline-color, currentcolor);text-decoration-line:underline;text-decoration-style:initial;text-decoration-thickness:initial}.smyn-container:hover .smyn-native-pop>[data-username-with-effects],.smyn-container:hover .smyn-native-gummy>[data-username-with-effects]{text-decoration:none}.smyn-container:hover .smyn-native-pop>[data-username-with-effects]:before{text-decoration-color:var(--smyn-underline-color, currentcolor);text-decoration-line:underline;text-decoration-style:initial;text-decoration-thickness:initial;text-underline-offset:.08em}.smyn-container:hover .smyn-native-gummy>[data-username-with-effects]{position:relative}.smyn-container:hover .smyn-native-gummy>[data-username-with-effects]:before{color:transparent;content:attr(data-username-with-effects) / "";inset:var(--custom-gummy-squish-headroom, 0) 0 0;pointer-events:none;position:absolute;text-decoration-color:var(--smyn-underline-color, currentcolor);text-decoration-line:underline;text-decoration-style:initial;text-decoration-thickness:initial;white-space:var(--custom-display-name-styles-wrap)}.vc-message-click-actions-emoji-trigger{min-width:46px;height:46px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:var(--background-secondary-alt);border:1px solid var(--input-border);cursor:pointer;line-height:1}.vc-message-click-actions-emoji-preview{display:block}.vc-message-click-actions-unicode-preview{font-size:28px;line-height:1}.messagelogger-deleted [class*=buttons]{display:none}.messagelogger-deleted-attachment,.messagelogger-deleted :is(.emoji,[data-type=sticker],[class*=embedIframe],[class*=embedSpotify],[class*=imageContainer]){filter:grayscale(1)!important;transition:.15s filter ease-in-out;&[class*=hiddenMosaicItem]{filter:grayscale(1) blur(var(--custom-message-attachment-spoiler-blur-radius, 44px))!important}&:hover{filter:grayscale(0)!important}}.messagelogger-deleted [class*=spoilerWarning]{color:var(--status-danger)}.theme-dark .messagelogger-edited{filter:brightness(80%)}.theme-light .messagelogger-edited{opacity:.5}.messagelogger-edit-marker{cursor:pointer}.vc-ml-modal-timestamp{cursor:unset;height:unset}.vc-ml-modal-tab-bar{flex-wrap:wrap;gap:16px}.messagelogger-diff-added{color:#85e89d}.messagelogger-diff-removed{color:#f47068}.messagelogger-diff-added [class*=emojiContainer],.messagelogger-diff-added img.emoji{position:relative}.messagelogger-diff-added [class*=emojiContainer]:after,.messagelogger-diff-added img.emoji:after{content:"";position:absolute;inset:0;background-color:#85e89d99;border-radius:3px;pointer-events:none}.messagelogger-diff-removed [class*=emojiContainer],.messagelogger-diff-removed img.emoji{position:relative}.messagelogger-diff-removed [class*=emojiContainer]:after,.messagelogger-diff-removed img.emoji:after{content:"";position:absolute;inset:0;background-color:#f4706899;border-radius:3px;pointer-events:none}.messagelogger-diff-view{display:inline-flex;flex-direction:column;gap:4px}.messagelogger-diff-original,.messagelogger-diff-updated{display:block;white-space:pre-wrap}.messagelogger-diff-disabled .messagelogger-diff-added,.messagelogger-diff-disabled .messagelogger-diff-removed{color:inherit}.messagelogger-diff-disabled .messagelogger-diff-added [class*=emojiContainer]:after,.messagelogger-diff-disabled .messagelogger-diff-added img.emoji:after,.messagelogger-diff-disabled .messagelogger-diff-removed [class*=emojiContainer]:after,.messagelogger-diff-disabled .messagelogger-diff-removed img.emoji:after{display:none!important}.vc-better-quick-react{padding:4px 1px 6px;justify-content:center;grid-template-columns:repeat(var(--vc-better-quick-react-columns),44px);grid-template-rows:unset;grid-auto-rows:44px;z-index:10}.vc-better-quick-react.vc-better-quick-react-compact{grid-template-columns:repeat(var(--vc-better-quick-react-columns),33px);grid-auto-rows:33px}.vc-better-quick-react.vc-better-quick-react-compact>div{scale:.75}.vc-better-quick-react.vc-better-quick-react-compact img{width:25px;height:25px}.vc-better-quick-react-padding{min-width:fit-content}.vc-mutual-gdms-modal-tab-bar{gap:0}.vc-mutual-gdms-modal-v2-tab-bar{--space-xl: 16px}.vc-mutual-gdms-scroller{gap:12px;margin-inline-start:-12px}.vc-mutual-gdms-dm-page-list{gap:0;margin-inline-start:-8px}.vc-block-keywords-regex{padding:.75em}.vc-block-keywords-card{padding:.4em .75em;display:flex;align-items:center;justify-content:space-between}.vc-block-keywords-error{font-size:12px;margin-left:1em;flex-shrink:0}.vc-permviewer-user-header-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.vc-permviewer-user-header-btns{display:flex;gap:8px}.vc-permviewer-user-header-btn{cursor:pointer;display:flex;align-items:center;justify-content:center}.vc-permviewer-modal-no-perms{width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center}.vc-permviewer-modal-container{width:100%;height:min(760px,80vh);min-height:0;display:flex;gap:8px;overflow:hidden}.vc-permviewer-modal-list{display:flex;flex-direction:column;gap:2px;flex:0 0 200px;max-height:100%;min-height:0;overflow:auto;padding-right:8px}.vc-permviewer-modal-list-item-btn{cursor:pointer}.vc-permviewer-modal-list-item{display:flex;align-items:center;gap:8px;padding:8px;border-radius:5px}.vc-permviewer-modal-list-item:hover{background-color:var(--background-mod-subtle)}.vc-permviewer-modal-list-item-active{background-color:var(--background-mod-strong)}.vc-permviewer-modal-list-item-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vc-permviewer-modal-role-circle{border-radius:50%;width:12px;height:12px;flex-shrink:0}.vc-permviewer-modal-role-image{width:20px;height:20px;object-fit:contain}.vc-permviewer-modal-user-img{border-radius:50%;width:20px;height:20px}.vc-permviewer-modal-divider{width:2px;background-color:var(--background-mod-normal)}.vc-permviewer-modal-perms{display:flex;flex-direction:column;flex:1 1 0;max-height:100%;min-width:0;min-height:0;overflow:auto;padding-right:8px}.vc-permviewer-modal-perms-item{display:flex;align-items:center;gap:5px;padding:10px 2px 10px 10px;border-bottom:2px solid var(--background-mod-normal)}.vc-permviewer-modal-perms-item:last-child{border:0}.vc-permviewer-modal-perms-item-icon{border:1px solid var(--background-mod-strong);width:24px;height:24px}.vc-permviewer-modal-perms-item .vc-info-icon{color:var(--interactive-muted);margin-left:auto;cursor:pointer;transition:color ease-in .1s}.vc-permviewer-modal-perms-item .vc-info-icon:hover{color:var(--interactive-icon-active)}.vc-permviewer-role-button{border-radius:var(--radius-sm);color:var(--interactive-icon-default);border:1px solid var(--user-profile-border);width:-moz-fit-content;width:fit-content;height:24px;padding:4px}.vc-permviewer-role-button:hover{background-color:var(--user-profile-background-hover)}.vc-permviewer-granted-by-container{max-width:300px;width:auto}.vc-permviewer-granted-by-content{display:flex;align-items:center;gap:4px}.vc-pip-button{color:var(--interactive-icon-default)}.vc-pip-button:hover{background-color:var(--background-mod-subtle);color:var(--interactive-icon-hover)}.vc-pindms-section-container{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-transform:uppercase;font-size:12px;line-height:16px;letter-spacing:.02em;font-family:var(--font-display);font-weight:600;flex:1 1 auto;color:var(--channels-default);cursor:pointer}.vc-pindms-modal-color-picker{margin-inline-end:0;[class*=defaultContainer]{display:none}}.vc-pindms-modal-content{display:grid;gap:1.5em}.vc-pindms-collapse-icon{width:16px;height:16px;color:var(--interactive-icon-default);transform:rotate(90deg)}.vc-pindms-collapsed .vc-pindms-collapse-icon{transform:rotate(0)}.vc-plainFolderIcon-plain{transition:none!important;transform:translateZ(0);background-color:color-mix(in oklab,var(--custom-folder-color, var(--badge-background-default)) 40%,transparent)}.vc-platform-indicator{display:inline-flex;justify-content:center;align-items:center;gap:2px}.vc-platform-indicator-profile{margin:0 1px;padding:0 1px}.vc-platform-indicator-message{position:relative;vertical-align:top;top:-1px}.vc-ranb-button{color:var(--interactive-icon-default);padding:0 .5em;width:100%;font-size:14px;white-space:nowrap;box-sizing:border-box}.vc-ranb-button:hover{color:var(--interactive-icon-active)}.vc-reply-timestamp{margin-inline-end:.5rem;width:unset!important}.vc-rdb-badge{vertical-align:middle;margin-left:4px}.vc-rdb-input{padding-inline:12px;margin-top:6px;margin-bottom:12px;resize:none;overflow:hidden;background:transparent;border:1px solid var(--input-border-default, var(--border-muted));box-sizing:border-box}.vc-rdb-placeholder{margin-bottom:4px;font-weight:700;font-style:italic;color:var(--text-muted)}.vc-rdb-input *{font-size:14px}.vc-rdb-modal-footer{padding:0}.vc-rdb-modal-footer .vc-rdb-input{margin-bottom:0;background:var(--input-background-default)}.vc-rdb-modal-footer [class*=pageControlContainer]{margin-top:0;white-space:nowrap}.vc-rdb-review{padding-top:8px!important;padding-bottom:8px!important;padding-right:64px!important}.vc-rdb-review:hover{background:var(--message-background-hover)!important;border-radius:8px}.vc-rdb-review-comment [class*=avatar]{vertical-align:text-top}.vc-rdb-review-comment{overflow-y:hidden;margin-top:1px;line-height:1.2;margin-bottom:8px;color:var(--text-default);font-size:15px}.vc-rdb-blocked-badge{cursor:pointer}.vc-rdb-block-modal{display:grid;gap:.75em}.vc-rdb-button-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:600px){.vc-rdb-button-grid{grid-template-columns:1fr}}.vc-rdb-block-modal-row{display:flex;height:2em;gap:.5em;align-items:center}.vc-rdb-block-modal-avatar{border-radius:50%;height:2em;width:2em}.vc-rdb-block-modal-avatar:before{content:"";display:block;width:100%;height:100%;background-color:var(--border-subtle)}.vc-rdb-block-modal-username{flex-grow:1}.vc-rdb-block-modal-unblock{cursor:pointer}.vc-rdb-profile-popout-disabled{opacity:.4;cursor:not-allowed}.vc-rdb-vote-column{position:absolute;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:row;align-items:center;justify-content:center;gap:4px}.vc-rdb-vote-column-buttons{display:flex;flex-direction:column;gap:0}.vc-rdb-vote-column-button{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:0;border-radius:4px;background:transparent;color:var(--interactive-muted);cursor:pointer}.vc-rdb-vote-column-button:disabled{cursor:default;opacity:.65}.vc-rdb-vote-column-button:hover:not(:disabled){background:var(--background-modifier-hover);color:var(--interactive-hover)}.vc-rdb-vote-column-score{min-width:15px;color:var(--text-muted);font-size:1rem;font-weight:700;line-height:20px;text-align:center}.vc-rdb-vote-column-score-positive,.vc-rdb-vote-column-up-selected{color:var(--status-positive)}.vc-rdb-vote-column-score-negative,.vc-rdb-vote-column-down-selected{color:var(--status-danger)}.vc-rdb-vote-column-up-selected:hover:not(:disabled){background:color-mix(in srgb,var(--status-positive) 14%,transparent);color:var(--status-positive)}.vc-rdb-vote-column-down-selected:hover:not(:disabled){background:color-mix(in srgb,var(--status-danger) 14%,transparent);color:var(--status-danger)}.vc-st-date-picker{background-color:var(--input-background-default);color:var(--text-default);width:95%;padding:8px 8px 8px 12px;margin-bottom:1em;outline:none;border:1px solid var(--input-background-default);border-radius:4px;font-weight:500;font-style:inherit;font-size:100%}.vc-st-format-select{margin-bottom:1em;--border-subtle: transparent}.vc-st-format-label{--border-subtle: transparent}.vc-st-modal-header{place-content:center space-between}.vc-st-modal-title{margin:0}.vc-st-modal-close-button{padding:0}.vc-st-preview-text{margin-bottom:1em}.vc-gp-banner{cursor:pointer;aspect-ratio:auto 240 / 135;height:334px;width:100%;padding-inline:.5em;box-sizing:border-box;object-fit:cover;overflow:clip;overflow-clip-margin:content-box}.vc-gp-header{display:flex;flex-direction:row;align-items:center;gap:.5em;margin:.5em}.vc-gp-icon{width:48px;height:48px;cursor:pointer}.vc-gp-name-and-description{display:flex;flex-direction:column;gap:.2em}.vc-gp-name{margin:0}.vc-gp-tab-bar{border-bottom:1px solid var(--border-subtle);margin:20px 12px 0;display:flex;align-items:stretch;flex-direction:row;justify-content:center}.vc-gp-tab{border-bottom:2px solid transparent;color:var(--interactive-icon-default);cursor:pointer;line-height:14px}.vc-gp-tab-content{margin:1em}.vc-gp-tab:where(.vc-gp-selected,:hover,:focus){border-bottom-color:var(--interactive-icon-active)}.vc-gp-info{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1em}.vc-gp-server-info-pair{color:var(--text-default)}.vc-gp-server-info-pair [class*=timestamp]{margin-left:0}.vc-gp-owner{display:flex;align-items:center;gap:.2em}.vc-gp-owner-avatar{height:20px;border-radius:50%;cursor:pointer}.vc-gp-scroller{max-height:500px}.vc-gp-member-row{display:flex;align-items:center;padding-right:16px;cursor:pointer;position:relative;margin:1px 0;width:100%}.vc-gp-member-row:hover{background-color:var(--background-mod-subtle)}.vc-gp-member-content{flex:1;min-width:0;width:100%;position:relative}.vc-gp-member-icons{user-select:none;position:absolute;right:20px;z-index:2}.vc-gp-mutual-guilds{display:flex;align-items:center;gap:4px;margin-left:auto;padding-left:8px}.vc-gp-guild-icon{width:20px;height:20px;border-radius:50%;background:var(--background-base-low);overflow:hidden}.vc-gp-guild-icon img{width:100%;height:100%;object-fit:cover}.vc-gp-guild-acronym{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:600;color:var(--text-default);text-transform:uppercase}.vc-gp-guild-count{font-size:12px;color:var(--text-muted);font-weight:600}.vc-gp-scroller [class*=listRow]{margin:1px 0}.vc-gp-scroller [class*=listRow]:hover{background-color:var(--background-mod-subtle)}.vc-gp-scroller [class*=row]{margin:1px 0}#vc-indicators-container,#vc-indicators-compact-container{width:100%;display:flex;align-items:center;justify-content:center}#vc-indicators-indicator-items{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border-radius:24%;height:var(--guildbar-avatar-size);width:var(--guildbar-avatar-size);background-color:var(--background-mod-subtle);transition:border-radius .15s ease-out,background-color .15s ease-out}.custom-theme-background #vc-indicators-indicator-items{background-color:var(--background-mod-strong)}#vc-indicators-indicator-items:before{position:absolute;content:"";display:block;width:0px;height:0px;opacity:0;border-radius:0 4px 4px 0;left:-4px;background-color:var(--text-strong);transition:height .15s ease-out,width .15s ease-out,opacity .15s ease-out}#vc-indicators-indicator-items:hover:before{width:8px;height:20px;opacity:1}#vc-indicators-compact-indicator-items{display:flex;flex-direction:column;align-items:center;justify-content:center}#vc-indicators-indicator-items:hover{background-color:var(--brand-500)}#vc-friendcount,#vc-guildcount{display:flex;align-items:center;justify-content:center;gap:4px;font-size:12px;font-weight:600;width:100%;color:var(--text-default)}#vc-friendcount-icon,#vc-guildcount-icon{width:var(--size-14);height:var(--size-14)}.vc-shiki-container{border:4px;background-color:var(--background-base-lower)}.vc-shiki-root{border-radius:4px}.vc-shiki-root .vc-shiki-code{display:block;overflow-x:auto;padding:.5em;position:relative;font-size:.875rem;line-height:1.125rem;text-indent:0;white-space:pre-wrap;background:transparent;border:none}.vc-shiki-devicon{margin-right:8px;user-select:none}.vc-shiki-plain .vc-shiki-code{padding-top:8px}.vc-shiki-btns{font-size:1em;position:absolute;right:0;bottom:0;opacity:0}.vc-shiki-root:hover .vc-shiki-btns{opacity:1}.vc-shiki-btn{border-radius:4px 4px 0 0;padding:4px 8px;user-select:none}.vc-shiki-btn~.vc-shiki-btn{margin-left:4px}.vc-shiki-btn:last-child{border-radius:4px 0}.vc-shiki-spinner-container{align-items:center;background-color:#0009;display:flex;position:absolute;justify-content:center;inset:0}.vc-shiki-preview{margin-bottom:2em}.vc-shiki-lang{padding:0 5px;margin-bottom:6px;font-weight:700;text-transform:capitalize;display:flex;align-items:center}.vc-shiki-table{border-collapse:collapse;width:100%}.vc-shiki-table-row{height:19px;width:100%}.vc-shiki-root .vc-shiki-table-cell:first-child{border-right:1px solid transparent;padding-left:5px;padding-right:8px;user-select:none;white-space:nowrap}.vc-shiki-root .vc-shiki-table-cell:last-child{padding-left:8px;overflow-wrap:anywhere;width:100%}.vc-user-connection{all:unset;display:inline-block;cursor:pointer}.vc-sc-tooltip{display:inline-flex;gap:.25em;align-items:center}.vc-sc-connection-name{word-break:break-all}.vc-sc-tooltip-icon{min-width:16px}.vc-shc-container{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.65em;margin:.5em 0;min-height:100%}.vc-shc-logo{width:12em;height:12em}.vc-shc-heading-container{display:flex;flex-direction:row;align-items:center;gap:.5em}.vc-shc-heading-nsfw-icon{color:var(--text-default)}.vc-shc-topic-container{color:var(--text-default);background:var(--background-base-lower);border-radius:5px;padding:10px;max-width:70vw}.vc-shc-default-emoji-container{display:flex;flex-direction:row;align-items:center;background:var(--background-base-lower);border-radius:8px;padding:.75em;margin-left:.75em}.vc-shc-tags-container{display:flex;flex-direction:column;background:var(--background-base-lower);border-radius:5px;padding:.75em;gap:.75em;max-width:70vw}.vc-shc-tags{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.35em}.vc-shc-allowed-users-and-roles-container{display:flex;flex-direction:column;align-items:center;background:var(--background-base-lower);border-radius:5px;padding:.75em;max-width:70vw}.vc-shc-allowed-users-and-roles-container-title{display:flex;flex-direction:row;align-items:center;gap:.5em}.vc-shc-allowed-users-and-roles-container-toggle-btn,.vc-shc-allowed-users-and-roles-container-permdetails-btn{all:unset;cursor:pointer;display:flex;align-items:center;color:var(--text-default)}.vc-shc-allowed-users-and-roles-container>[class*=members]{margin-left:12px;flex-wrap:wrap;justify-content:center}.vc-shc-hidden-channel-icon{cursor:not-allowed;margin-left:6px;z-index:0}.vc-shc-channel-list-icon{fill:var(--channel-icon)}.vc-std-wrapper{display:flex;align-items:center;width:max-content;max-width:100%}.vc-std-wrapper [class*=communicationDisabled]{margin-right:0}.vc-sortFriends-wrapper{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%;margin-right:.5em}.vc-sortFriends-tooltip{max-width:none;white-space:nowrap}.vc-sortFriends-date{color:var(--text-muted);font-family:var(--font-code)}.vc-textReplace-input-grid{display:grid;grid-template-columns:max-content 1fr;gap:.25em 1em;align-items:center}.vc-textReplace-delete-button{width:100%;margin-block:.75em .5em}.vc-trans-accessory{color:var(--text-muted);margin-top:.5em;font-style:italic;font-weight:400;line-height:1.2rem;white-space:break-spaces}.vc-trans-accessory-icon{margin-right:.25em}.vc-trans-dismiss{all:unset;cursor:pointer;color:var(--text-link)}.vc-trans-dismiss:is(:hover,:focus){text-decoration:underline}.vc-trans-auto-translate{color:var(--green-360)}.vc-trans-chat-button{scale:1.085}.vc-typing-indicator{display:flex;align-items:center;height:20px}.vc-typing-indicator-avatars{margin-left:6px}.vc-typing-indicator-dots{margin-left:6px;height:16px;display:flex;align-items:center;z-index:0;cursor:pointer}.vc-uvs-speaker{color:var(--interactive-icon-default);display:flex;align-items:center;justify-content:center}.vc-uvs-clickable{cursor:pointer}.vc-uvs-clickable:hover{color:var(--interactive-icon-hover)}.vc-uvs-profile-speaker{height:var(--custom-nickname-icon-size);margin-right:4px;transform:translateY(1.3px)}.vc-uvs-tooltip-container{max-width:50vw}.vc-uvs-tooltip-content{display:flex;flex-direction:column;gap:6px}.vc-uvs-name{display:flex;align-items:center;gap:8px}.vc-uvs-guild-icon{border-radius:100%;align-self:center}.vc-uvs-vc-members{display:flex;gap:6px}.vc-usrbg-settings-button{width:100%;height:50px}.vc-viewRaw-codeBlock,.vc-viewRaw-codeBlock :is(pre,code,[class*=codeContainer]){max-width:unset;width:100%;box-sizing:border-box}.vc-voice-download{width:24px;height:24px;color:var(--interactive-icon-default);cursor:pointer;position:relative}.vc-voice-download:hover{color:var(--interactive-icon-active)}.vc-vmsg-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5em;margin-bottom:1em}.vc-vmsg-preview{color:var(--text-default);border-radius:24px;background-color:var(--background-base-lower);position:relative;display:flex;align-items:center;padding:0 16px;height:48px}.vc-vmsg-preview-indicator{background:var(--control-secondary-background-default);width:16px;height:16px;border-radius:50%;transition:background .2s ease-in-out}.vc-vmsg-preview-recording .vc-vmsg-preview-indicator{background:var(--status-danger)}.vc-vmsg-preview-time{opacity:.8;margin:0 .5em;font-size:80%;font-family:var(--font-code)}.vc-vmsg-preview-label{opacity:.5;letter-spacing:.125em;font-weight:600;flex:1;text-align:center}.vc-vmsg-error{color:var(--text-feedback-critical, #FF5C5C)}.vc-declutter-accessibility-notice{margin-top:8px;margin-bottom:8px}.vc-declutter-section-separator{margin-top:12px;margin-bottom:6px}.vc-declutter-section-title{margin-top:14px;margin-bottom:0;font-size:16px;line-height:20px;text-transform:uppercase;letter-spacing:.02em;color:var(--text-muted)}.vc-bactivities-row{display:flex;flex-wrap:nowrap;align-items:center;margin-left:5px;text-align:center;gap:3px}.vc-bactivities-icon{height:var(--icon-size);width:var(--icon-size)}.vc-bactivities-icon img{width:var(--icon-size);height:var(--icon-size);object-fit:cover;border-radius:50%}.vc-bactivities-activity-tooltip{padding:1px}.vc-bactivities-caret-left,.vc-bactivities-caret-right{color:#ddd}.vc-bactivities-caret-left{transform:rotate(90deg)}.vc-bactivities-caret-right{transform:rotate(-90deg)}.vc-bactivities-controls{display:flex;align-items:center;justify-content:space-between;padding:5px;background:var(--background-base-lower-alt);border-radius:3px;flex:1 0;margin-top:10px;background-color:var(--user-profile-overlay-background)}.vc-bactivities-controls [class*=vc-activities-caret-]{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border-radius:3px;background-color:#ffffff4d}.vc-bactivities-controls [class*=vc-activities-caret-].disabled{cursor:not-allowed;opacity:.3}.vc-bactivities-controls [class*=vc-activities-caret-]:hover:not(.disabled){background:var(--input-border-default, var(--input-border))}.vc-bactivities-controls .vc-bactivities-controls-carousel{display:flex;align-items:center}.vc-bactivities-controls .vc-bactivities-controls-carousel .vc-bactivities-controls-dot{margin:0 4px;width:10px;cursor:pointer;height:10px;border-radius:100px;background:var(--interactive-muted);transition:background .3s;opacity:.6}.vc-bactivities-controls .vc-bactivities-controls-carousel .vc-bactivities-controls-dot:hover:not(.vc-bactivities-controls-selected){opacity:1}.vc-bactivities-controls .vc-bactivities-controls-carousel .vc-bactivities-controls-dot.vc-bactivities-controls-selected{opacity:1;background:var(--dot-color, var(--brand-500))}.vc-bactivities-controls-tooltip{--background-floating: var(--background-secondary-alt)}.vc-better-audio-player-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1;border:none;border-radius:inherit}.vc-bbr-reason-wrapper{display:grid;padding-bottom:12px;gap:4px 12px;align-items:center;grid-template-columns:1fr 24px}.vc-bbr-remove-button{color:var(--text-muted);align-self:start}.vc-bbr-duration-row{display:flex;flex-direction:column;gap:4px}.vc-bbr-remove-button:hover{color:var(--text-feedback-critical)}.vc-bbr-add-button{justify-content:start!important;border:0;padding:2px 12px;color:var(--text-muted)!important;font-size:16px}.vc-bbr-add-button div{display:flex;justify-content:start;align-items:center;gap:12px;margin:0!important}[class*=usersList] [class*=text]{user-select:text!important}.vc-bbu-search,.vc-bbu-search *{border-radius:0!important}.vc-bi-inviter-avatar{margin:0;height:18px;width:18px;position:static;flex-shrink:0}.vc-bi-header-inner{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:0 0 5px;font-size:14px}.vc-bi-header-text{flex:1;white-space:normal;color:var(--text-subtle)}.vc-bi-tooltip-icon{color:var(--text-muted);width:18px;height:18px;margin-top:1.5px}.channel-badge{margin-left:.2rem;padding:2px 8px;border-radius:20px;font-size:12px;font-weight:700;display:inline-block;color:var(--white);order:2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.badge-container{display:flex;gap:.1rem;align-items:center;margin-left:.2rem;order:2}.channel-badge-text{background-color:#5865f2}.channel-badge-voice{background-color:#3ba55d}.channel-badge-category{background-color:#4f545c}.channel-badge-directory{background-color:#faa61a}.channel-badge-thread,.channel-badge-public-thread,.channel-badge-announcement-thread,.channel-badge-private-thread{background-color:#7289da}.channel-badge-announcement,.channel-badge-announcement-channel{background-color:#faa61a}.channel-badge-rules,.channel-badge-stage,.channel-badge-media,.channel-badge-forum{background-color:#5865f2}.channel-badge-nsfw{background-color:#e91e63}.channel-badge-locked{background-color:#b9bbbe}.channel-badge-unknown{background-color:#747f8d}:root{--channeltabs-red: var(--danger-color, #f23f42);--channeltabs-blue: #0052b6;--channeltabs-yellow: #f0b132;--channeltabs-green: #24934f;--channeltabs-black: #000;--channeltabs-white: #fff;--channeltabs-orange: #e67e22;--channeltabs-pink: #ff73fa}.vc-channeltabs-icon{height:1.5rem;width:1.5rem;border-radius:50%}.vc-channeltabs-guild-acronym-icon{height:1.25rem;width:1.5rem;min-width:1.5rem;border-radius:50%;padding-top:.25rem;background-color:var(--background-primary);overflow:hidden}.vc-channeltabs-name-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:.125rem;font-weight:400;color:var(--text-muted);transition:color .15s ease,font-weight .1s ease,transform .2s ease}.vc-channeltabs-tab-inner{border-radius:12px;padding:0 28px 0 0;display:flex;flex-direction:row;align-items:center;gap:.5rem;transition:gap .15s ease,padding .2s ease-in-out}.vc-channeltabs-tab-container,.vc-channeltabs-bookmark-container{display:flex;flex-flow:row nowrap;align-items:center;padding:0 4px}.vc-channeltabs-bookmark-container{position:relative}.vc-channeltabs-container{padding:4px;display:flex;flex-direction:column-reverse;-webkit-app-region:no-drag;background-color:var(--background-primary);box-shadow:inset 0 1px 0 var(--background-base-low)}.vc-channeltabs-container-top{padding-left:4px;box-shadow:inset 0 -1px 0 var(--background-base-low);grid-area:notice;z-index:102}[class*=notice]+.vc-channeltabs-container-top{z-index:1;height:32px;overflow:hidden}.vc-channeltabs-separator{width:98%;height:1px;background:var(--input-border-default, var(--input-border));margin:4px auto}.vc-channeltabs-scroller{display:flex;flex-direction:row;align-items:center;overflow-x:auto;white-space:nowrap;padding-top:15px;padding-bottom:15px;margin-top:-15px;margin-bottom:-15px}.vc-channeltabs-scroller::-webkit-scrollbar{display:none}.vc-channeltabs-tab-scroller{display:flex;flex-direction:row;align-items:center;overflow-x:auto;white-space:nowrap;flex:1;min-width:0;padding-top:16px;padding-bottom:15px;margin-top:-15px;margin-bottom:-15px}.vc-channeltabs-tab-scroller-following{max-width:100%}.vc-channeltabs-tab-scroller::-webkit-scrollbar{display:none}.vc-channeltabs-bookmarks{flex-grow:1;overflow:hidden;padding:2px 0 2px 8px}.vc-channeltabs-bookmark-placeholder-text{color:var(--text-muted);padding:.25rem 0 0 .25rem}.vc-channeltabs-bookmark-star{fill:none;stroke:var(--text-muted);stroke-width:.075rem;transition:all .15s ease}.vc-channeltabs-bookmark-star:hover{stroke:var(--interactive-icon-hover)}.vc-channeltabs-bookmark-star-checked{fill:var(--main-color, var(--brand-experiment, var(--brand-500)));stroke:var(--main-color, var(--brand-experiment, var(--brand-500)))}.vc-channeltabs-bookmark{display:flex;flex-direction:row;max-width:calc(8rem * var(--tab-width-scale, 1));padding:4px 8px;border-radius:4px;align-items:center;position:relative;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background-color .14s ease}.vc-channeltabs-bookmark.vc-channeltabs-wider{max-width:calc(12rem * var(--tab-width-scale, 1))}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-folder{margin-left:4px;margin-right:4px}.vc-channeltabs-bookmark .vc-channeltabs-name-text{margin-left:.25rem;margin-right:.25rem}.vc-channeltabs-bookmark-icon{height:1rem;width:1rem;border-radius:50%;background-color:var(--background-primary);text-align:center}.vc-channeltabs-channel-info{flex-grow:1;overflow:hidden}.vc-channeltabs-tab{display:flex;flex-direction:row;justify-content:space-between;align-items:center;border-radius:12px;width:calc(12rem * var(--tab-width-scale, 1));min-width:0;margin:0 4px;background-color:transparent;border:1px solid var(--background-mod-muted);transition:transform .2s cubic-bezier(.34,1.56,.64,1),background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease;min-height:calc(38px * var(--tab-height-scale, 1));padding:calc(6px * var(--tab-height-scale, 1)) 8px;position:relative;cursor:grab;flex-shrink:0}.vc-channeltabs-tab:active{cursor:grabbing}.vc-channeltabs-tab-resize-handle{position:absolute;right:0;top:0;bottom:0;width:6px;cursor:ew-resize;z-index:10;opacity:0;background:var(--hover-color, var(--main-color, var(--brand-experiment, var(--brand-500))));border-radius:0 11px 11px 0;transition:opacity .2s ease}.vc-channeltabs-tab-resize-handle:hover{opacity:.7!important}.vc-channeltabs-no-resize-handle-animation .vc-channeltabs-tab-resize-handle{transition:none!important}.vc-channeltabs-tab:hover .vc-channeltabs-tab-resize-handle{opacity:.3}.vc-channeltabs-tab-resizing,.vc-channeltabs-tab-resizing *{pointer-events:none;user-select:none}.vc-channeltabs-tab.vc-channeltabs-wider:not(.vc-channeltabs-tab-compact){width:calc(16rem * var(--tab-width-scale, 1))}.vc-channeltabs-tab-compact{width:auto;min-width:calc(3rem * var(--tab-width-scale, 1));transition:all .4s ease-out}.vc-channeltabs-tab-compact .vc-channeltabs-tab-inner{padding-right:0;transition:padding .4s ease-out}.vc-channeltabs-tab-compact:hover .vc-channeltabs-tab-inner,.vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-tab-inner{padding-right:28px}.vc-channeltabs-tab-compact .vc-channeltabs-name-text{max-width:0;opacity:0;overflow:hidden;margin-left:.125rem;transform:translate(-20px);transition:max-width .4s ease-out,opacity .4s ease-out,transform .4s ease-out}.vc-channeltabs-tab-compact:hover .vc-channeltabs-name-text,.vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-name-text{max-width:200px;opacity:1;transform:translate(0)}.vc-channeltabs-tab-selected{transform:translateY(-1px);background-color:var(--background-base-low);border:1px solid var(--main-color, var(--brand-experiment, var(--brand-500)));border-bottom:2px solid var(--main-color, var(--brand-experiment, var(--brand-500)));box-shadow:0 1px 3px #0003}.vc-channeltabs-dark-theme.vc-channeltabs-tab-selected .vc-channeltabs-name-text{font-weight:600;color:var(--white-500)}.vc-channeltabs-light-theme.vc-channeltabs-tab-selected .vc-channeltabs-name-text{font-weight:600}.vc-channeltabs-tab-selected .vc-channeltabs-guild-acronym-icon span{color:var(--white-500)}.vc-channeltabs-tab-container svg{-webkit-app-region:no-drag}.vc-channeltabs-tab-selected svg,.vc-channeltabs-tab-selected .vc-channeltabs-close-button svg{color:var(--white-500);fill:var(--white-500)}.vc-channeltabs-container [class*=iconContainer]{margin:0 -.25rem 0 0;pointer-events:none;height:1rem;transform:scale(.8)}.vc-channeltabs-container [class*=numberBadge]{background-color:var(--channeltabs-red)!important;color:var(--channeltabs-white);border-radius:50%;min-width:16px;height:16px;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;padding:0 4px}.vc-channeltabs-ghost-tab{visibility:hidden}.vc-channeltabs-hoverable:hover,.vc-channeltabs-tab:hover:not(.vc-channeltabs-tab-selected){transform:translateY(-1px) scale(1.02);background-color:var(--background-secondary-alt);border-color:var(--hover-color, var(--border-subtle));box-shadow:0 2px 4px #0000001a}.vc-channeltabs-tab:active:not(.vc-channeltabs-tab-selected){transform:translateY(0) scale(.98);transition-duration:.05s}.vc-channeltabs-button{background-color:transparent;color:var(--text-default)}.vc-channeltabs-bookmark-search-shell{position:relative;width:28px;height:28px;margin-right:6px;flex-shrink:0}.vc-channeltabs-bookmark-search-shell-open{z-index:3}.vc-channeltabs-bookmark-search-field{position:absolute;right:0;top:50%;width:0;opacity:0;pointer-events:none;overflow:hidden;transform:translateY(-50%) scaleX(.92);transform-origin:right center;transition:width .18s ease,opacity .15s ease,transform .18s ease}.vc-channeltabs-bookmark-search-shell-open .vc-channeltabs-bookmark-search-field{width:160px;opacity:1;pointer-events:auto;transform:translateY(-50%) scaleX(1)}.vc-channeltabs-bookmark-search-input{padding-right:34px!important}.vc-channeltabs-bookmark-search-button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;position:absolute;right:0;top:0;flex-shrink:0;color:var(--text-muted);transition:color .15s ease}.vc-channeltabs-bookmark-search-button:hover{color:var(--interactive-icon-hover)}.vc-channeltabs-new-button{padding:4px;margin:0 4px;border-radius:4px;background-color:var(--background-base-low);transition:all .2s ease;flex-shrink:0}.vc-channeltabs-new-button:hover{background-color:var(--background-mod-subtle);transform:scale(1.1)}.vc-channeltabs-new-button:active{transform:scale(.95)}.vc-channeltabs-new-button svg{transition:all .2s ease}.vc-channeltabs-new-button:hover svg{color:var(--interactive-icon-hover);animation:vc-channeltabs-plus-spin .3s ease-in-out}@keyframes vc-channeltabs-plus-spin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(90deg) scale(1.15)}to{transform:rotate(90deg) scale(1)}}.vc-channeltabs-close-button{height:1rem;padding:0;margin:0 0 0 4px;border-radius:50%;color:var(--text-muted);transition:all .15s ease,transform .2s ease-in-out}.vc-channeltabs-close-button:hover{background-color:var(--background-mod-subtle);transform:rotate(90deg)}.vc-channeltabs-close-button:active{transform:rotate(90deg) scale(.9)}.vc-channeltabs-tab-selected .vc-channeltabs-close-button{color:var(--white-500)}.vc-channeltabs-tab-selected .vc-channeltabs-close-button:hover{background-color:color-mix(in srgb,white 15%,transparent);transform:rotate(90deg)}.vc-channeltabs-tab-selected .vc-channeltabs-close-button:active{transform:rotate(90deg) scale(.9)}.vc-channeltabs-close-button-compact{position:absolute;opacity:0;width:2rem;height:2rem;margin-left:.35rem;display:flex;align-items:center;justify-content:center;border-radius:50%;transform:translate(-10px) scale(.8);transition:opacity .3s ease-out .2s,transform .3s ease-out .2s;right:4px}.vc-channeltabs-tab-compact:hover .vc-channeltabs-close-button-compact,.vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-close-button-compact{opacity:1;transform:translate(0) scale(1)}.vc-channeltabs-close-button.vc-channeltabs-close-button-compact:hover{background-color:var(--background-mod-subtle);transform:translate(0) scale(1) rotate(90deg)!important;transition:opacity .3s ease-out .2s,transform .2s ease-in-out,background-color .15s ease}.vc-channeltabs-close-button.vc-channeltabs-close-button-compact:active{transform:translate(0) scale(.9) rotate(90deg)!important;transition:opacity .3s ease-out .2s,transform .2s ease-in-out,background-color .15s ease}.vc-channeltabs-preview-tab{display:flex;flex-direction:row;align-items:center;width:calc(12rem * var(--tab-width-scale, 1));padding:.125rem 0;min-width:0;border-radius:.25rem;border:1px solid var(--input-border-default, var(--input-border))}.vc-channeltabs-preview-tab-compact{width:unset;min-width:unset}.vc-channeltabs-preview-tab>:is(.vc-channeltabs-emoji-container,.vc-channeltabs-typing-indicator,[data-has-mention]){display:none}.vc-channeltabs-preview-text{overflow:hidden}.vc-channeltabs-tab-container .vc-channeltabs-new-button,.vc-channeltabs-tab-container .vc-channeltabs-hoverable,.vc-channeltabs-tab-container .vc-channeltabs-button{-webkit-app-region:no-drag}.vc-channeltabs-tab-container .vc-channeltabs-hoverable,.vc-channeltabs-tab-container .vc-channeltabs-button,.vc-channeltabs-tab-container svg{-webkit-app-region:no-drag}.vc-channeltabs-tab:has([data-has-mention=true]){animation:vc-channeltabs-mention-pulse 2s ease-in-out infinite;box-shadow:0 0 8px color-mix(in srgb,var(--danger-color, rgb(242 63 66)) 60%,transparent),0 0 16px color-mix(in srgb,var(--danger-color, rgb(242 63 66)) 30%,transparent)}@keyframes vc-channeltabs-mention-pulse{0%,to{box-shadow:0 0 8px color-mix(in srgb,var(--danger-color, rgb(242 63 66)) 60%,transparent),0 0 16px color-mix(in srgb,var(--danger-color, rgb(242 63 66)) 30%,transparent)}50%{box-shadow:0 0 12px color-mix(in srgb,var(--danger-color, rgb(242 63 66)) 80%,transparent),0 0 24px color-mix(in srgb,var(--danger-color, rgb(242 63 66)) 50%,transparent)}}.vc-channeltabs-tab-selected:has([data-has-mention=true]){box-shadow:0 1px 3px #0003,0 0 12px color-mix(in srgb,var(--danger-color, rgb(242 63 66)) 80%,transparent),0 0 24px color-mix(in srgb,var(--danger-color, rgb(242 63 66)) 50%,transparent)}.vc-channeltabs-tab-nitro{animation:vc-channeltabs-nitro-pulse 3s ease-in-out infinite;box-shadow:0 0 10px #ff73fab3,0 0 20px #ff73fa66}@keyframes vc-channeltabs-nitro-pulse{0%,to{box-shadow:0 0 10px #ff73fab3,0 0 20px #ff73fa66}50%{box-shadow:0 0 16px #ff73fae5,0 0 32px #ff73fa99}}.vc-channeltabs-tab-selected.vc-channeltabs-tab-nitro{box-shadow:0 1px 3px #0003,0 0 16px #ff73fae5,0 0 32px #ff73fa99}.vc-channeltabs-tab-nitro .vc-channeltabs-tab-inner svg{filter:drop-shadow(0 0 2px rgb(255 115 250 / 80%))}.vc-channeltabs-tab-nitro .vc-channeltabs-tab-inner svg path{fill:#ff73fa!important;animation:vc-channeltabs-nitro-icon-gradient 3s ease-in-out infinite}@keyframes vc-channeltabs-nitro-icon-gradient{0%,to{fill:#ff73fa}50%{fill:#ffb4fa}}.vc-channeltabs-tab-quests-active{position:relative;overflow:visible}.vc-channeltabs-tab-quests-active:before{content:"";position:absolute;inset:0;border-radius:11px;background:linear-gradient(135deg,transparent,transparent 25%,rgb(114 137 218) 40%,rgb(88 101 242) 50%,rgb(71 82 196) 60%,transparent 75%,transparent);background-size:300% 300%;animation:vc-channeltabs-quests-diagonal 5s linear infinite;opacity:.8;filter:blur(2px);pointer-events:none}.vc-channeltabs-tab-quests-active:after{content:"";position:absolute;inset:0;border-radius:11px;animation:vc-channeltabs-quests-glow 3s ease-in-out infinite;pointer-events:none}@keyframes vc-channeltabs-quests-diagonal{0%,40%{background-position:100% 0;opacity:0}50%{opacity:.8}60%,to{background-position:0 100%;opacity:0}}@keyframes vc-channeltabs-quests-glow{0%{box-shadow:0 0 8px 1px #7289da99}33%{box-shadow:0 0 8px 1px #5865f299}66%{box-shadow:0 0 8px 1px #4752c499}to{box-shadow:0 0 8px 1px #7289da99}}.vc-channeltabs-tab-selected.vc-channeltabs-tab-quests-active:before{opacity:1;filter:blur(3px)}.vc-channeltabs-tab-selected.vc-channeltabs-tab-quests-active:after{animation:vc-channeltabs-quests-glow-selected 3s ease-in-out infinite}@keyframes vc-channeltabs-quests-glow-selected{0%{box-shadow:0 0 12px 2px #7289dacc}33%{box-shadow:0 0 12px 2px #5865f2cc}66%{box-shadow:0 0 12px 2px #4752c4cc}to{box-shadow:0 0 12px 2px #7289dacc}}.vc-channeltabs-container.vc-channeltabs-no-quests-active-animation .vc-channeltabs-tab-quests-active:before,.vc-channeltabs-container.vc-channeltabs-no-quests-active-animation .vc-channeltabs-tab-quests-active:after{animation:none!important;opacity:0!important}@keyframes vc-channeltabs-tab-close{0%{opacity:1;transform:scale(1);max-width:100%;margin:0 4px}50%{opacity:.5;transform:scale(.95);max-width:50%}to{opacity:0;transform:scale(.9) translate(-20px)}}.vc-channeltabs-tab-closing{animation:vc-channeltabs-tab-close .2s ease-in-out forwards;pointer-events:none;overflow:hidden}@keyframes vc-channeltabs-tab-enter{0%{opacity:0;transform:scale(.8) translate(-20px)}60%{transform:scale(1.05) translate(0)}to{opacity:1;transform:scale(1) translate(0)}}.vc-channeltabs-tab-entering{animation:vc-channeltabs-tab-enter .3s cubic-bezier(.34,1.56,.64,1)}.vc-channeltabs-tab-selected .vc-channeltabs-icon,.vc-channeltabs-tab-selected .vc-channeltabs-guild-acronym-icon{animation:vc-channeltabs-icon-pop .3s cubic-bezier(.34,1.56,.64,1)}@keyframes vc-channeltabs-icon-pop{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}.vc-channeltabs-tab-dragging{opacity:.5;transform:rotate(3deg);cursor:grabbing!important;z-index:1000;transition:none!important}.vc-channeltabs-tab-container:has(.vc-channeltabs-tab-dragging) .vc-channeltabs-tab:not(.vc-channeltabs-tab-dragging){transition:transform .2s cubic-bezier(.25,.46,.45,.94),opacity .2s ease,box-shadow .2s ease}.vc-channeltabs-tab-drop-target{position:relative}.vc-channeltabs-tab-drop-target:before{content:"";position:absolute;left:-4px;top:0;bottom:0;width:3px;background:var(--main-color, var(--brand-experiment, var(--brand-500)));border-radius:3px;animation:vc-channeltabs-drop-indicator .5s ease-in-out infinite}@keyframes vc-channeltabs-drop-indicator{0%,to{opacity:.6;box-shadow:0 0 8px var(--main-color, var(--brand-experiment, var(--brand-500)))}50%{opacity:1;box-shadow:0 0 12px var(--main-color, var(--brand-experiment, var(--brand-500)))}}.vc-channeltabs-tab-container{transition:all .2s ease-out}.vc-channeltabs-container.vc-channeltabs-no-hover-animation .vc-channeltabs-tab:hover:not(.vc-channeltabs-tab-selected){transform:none!important}.vc-channeltabs-container.vc-channeltabs-no-selection-animation .vc-channeltabs-tab-selected{transform:none!important}.vc-channeltabs-container.vc-channeltabs-no-drag-animation .vc-channeltabs-tab-dragging{opacity:1!important;transform:none!important}.vc-channeltabs-container.vc-channeltabs-no-drag-animation .vc-channeltabs-tab-drop-target:before{display:none!important}.vc-channeltabs-container.vc-channeltabs-no-drag-animation .vc-channeltabs-tab-drop-target{transform:none!important;background-color:transparent!important;border-color:var(--background-mod-muted)!important;box-shadow:none!important}.vc-channeltabs-container.vc-channeltabs-no-enter-exit-animation .vc-channeltabs-tab-entering{animation:none!important}.vc-channeltabs-container.vc-channeltabs-no-enter-exit-animation .vc-channeltabs-tab-closing{animation:none!important;opacity:0!important;display:none!important}.vc-channeltabs-container.vc-channeltabs-no-enter-exit-animation .vc-channeltabs-tab{transition:opacity .2s ease-out,transform .2s ease-in-out,background-color .15s ease!important}.vc-channeltabs-container.vc-channeltabs-no-icon-pop-animation .vc-channeltabs-tab-selected .vc-channeltabs-icon,.vc-channeltabs-container.vc-channeltabs-no-icon-pop-animation .vc-channeltabs-tab-selected .vc-channeltabs-guild-acronym-icon{animation:none!important}.vc-channeltabs-container.vc-channeltabs-no-selected-border .vc-channeltabs-tab-selected{border:1px solid var(--background-mod-muted)!important;border-bottom:1px solid var(--background-mod-muted)!important}.vc-channeltabs-container.vc-channeltabs-no-selected-background .vc-channeltabs-tab-selected{background-color:transparent!important}.vc-channeltabs-container.vc-channeltabs-no-tab-shadows .vc-channeltabs-tab,.vc-channeltabs-container.vc-channeltabs-no-tab-shadows .vc-channeltabs-tab-selected,.vc-channeltabs-container.vc-channeltabs-no-tab-shadows .vc-channeltabs-tab:hover{box-shadow:none!important}.vc-channeltabs-container.vc-channeltabs-no-close-rotation .vc-channeltabs-tab-selected .vc-channeltabs-close-button:hover,.vc-channeltabs-container.vc-channeltabs-no-close-rotation .vc-channeltabs-close-button:hover,.vc-channeltabs-container.vc-channeltabs-no-close-rotation .vc-channeltabs-tab-selected .vc-channeltabs-close-button:active,.vc-channeltabs-container.vc-channeltabs-no-close-rotation .vc-channeltabs-close-button:active,.vc-channeltabs-container.vc-channeltabs-no-plus-animation .vc-channeltabs-new-button:hover,.vc-channeltabs-container.vc-channeltabs-no-plus-animation .vc-channeltabs-new-button:active{transform:none!important}.vc-channeltabs-container.vc-channeltabs-no-plus-animation .vc-channeltabs-new-button:hover svg{animation:none!important}.vc-channeltabs-container.vc-channeltabs-no-mention-glow .vc-channeltabs-tab:has([data-has-mention=true]){animation:none!important;box-shadow:0 1px 3px #0003!important}.vc-channeltabs-container.vc-channeltabs-no-mention-glow .vc-channeltabs-tab-selected:has([data-has-mention=true]){box-shadow:0 1px 3px #0003!important}.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact,.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact .vc-channeltabs-name-text,.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-close-button-compact,.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact .vc-channeltabs-tab-inner{transition:none!important}.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact:hover .vc-channeltabs-close-button-compact,.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-close-button-compact{transition:none!important;transition-delay:0s!important}.vc-channeltabs-container.vc-channeltabs-no-tab-positioning .vc-channeltabs-tab-container,.vc-channeltabs-container.vc-channeltabs-no-tab-positioning .vc-channeltabs-tab{transition:none!important}.vc-channeltabs-container.vc-channeltabs-no-tab-positioning .vc-channeltabs-tab-container:has(.vc-channeltabs-tab-dragging) .vc-channeltabs-tab:not(.vc-channeltabs-tab-dragging){transition:none!important}.vc-channeltabs-container.vc-channeltabs-no-compact-auto-expand .vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-tab-inner{padding-right:0!important}.vc-channeltabs-container.vc-channeltabs-no-compact-auto-expand .vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-name-text{max-width:0!important;opacity:0!important;transform:translate(-20px)!important}.vc-channeltabs-container.vc-channeltabs-no-compact-auto-expand .vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-close-button-compact{opacity:0!important;pointer-events:none}.vc-channeltabs-container.vc-channeltabs-no-compact-hover-expand .vc-channeltabs-tab-compact:hover .vc-channeltabs-tab-inner{padding-right:0!important}.vc-channeltabs-container.vc-channeltabs-no-compact-hover-expand .vc-channeltabs-tab-compact:hover .vc-channeltabs-name-text{max-width:0!important;opacity:0!important;transform:translate(-20px)!important}.vc-channeltabs-container.vc-channeltabs-no-compact-hover-expand .vc-channeltabs-tab-compact:hover .vc-channeltabs-close-button-compact{opacity:0!important;pointer-events:none}.vc-channeltabs-bookmarks-drop-target{background-color:color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 15%,transparent);border:1px dashed color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 65%,transparent);border-radius:6px}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-dragging{opacity:.55;transform:scale(.98)}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-target{border-color:color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 70%,var(--border-subtle));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 35%,transparent)}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-before:before,.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-after:after{content:"";position:absolute;top:3px;bottom:3px;width:2px;border-radius:999px;background-color:var(--main-color, var(--brand-experiment, var(--brand-500)));box-shadow:0 0 0 1px color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 30%,transparent)}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-before:before{left:-3px}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-after:after{right:-3px}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-before{transform:translate(5px)}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-after{transform:translate(-5px)}.vc-channeltabs-bookmark.vc-channeltabs-folder-drop-target{background-color:color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 22%,transparent);border:1px solid color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 80%,var(--border-subtle));transform:scale(1.03);box-shadow:0 0 0 2px color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 20%,transparent)}.vc-channeltabs-bookmark.vc-channeltabs-folder-expanded{background-color:var(--background-mod-strong)}.vc-channeltabs-bookmark.vc-channeltabs-folder-item{margin-left:.5rem;border-left:2px solid var(--background-mod-muted);padding-left:.5rem;opacity:.9;background-color:var(--background-secondary-alt)}.vc-channeltabs-bookmark.vc-channeltabs-folder-item:hover{opacity:1;background-color:var(--background-mod-subtle)}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-active{border:1px solid var(--main-color, var(--brand-experiment, var(--brand-500)));box-shadow:0 0 4px var(--main-color, var(--brand-experiment, var(--brand-500)));background-color:color-mix(in srgb,var(--main-color, var(--brand-experiment, var(--brand-500))) 15%,transparent)}.vc-channeltabs-bookmark.vc-channeltabs-bookmark-active:hover{box-shadow:0 0 6px var(--hover-color, var(--main-color, var(--brand-experiment, var(--brand-500))))}.channelTabs-keybind-settings{display:flex;flex-direction:column;gap:16px;padding:8px 0}.channelTabs-keybind-input{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:16px;padding:12px;background-color:var(--background-secondary-alt);border-radius:8px;transition:background-color .2s ease}.channelTabs-keybind-input:hover{background-color:var(--background-secondary-alt)}.channelTabs-keybind-info{display:flex;flex-direction:column;gap:4px;flex:1}.channelTabs-keybind-controls{display:flex;flex-direction:row;align-items:center;gap:8px}.channelTabs-keybind-button{padding:8px 16px;background-color:var(--background-base-low);border:2px solid var(--input-border-default, var(--input-border));border-radius:8px;cursor:pointer;min-width:140px;text-align:center;font-family:var(--font-code);font-weight:600;color:var(--text-strong);transition:all .2s ease;outline:none;box-shadow:0 0 0 1px var(--background-mod-muted)}.channelTabs-keybind-button:hover:not(:disabled){background-color:var(--background-mod-subtle);border-color:var(--hover-color, var(--main-color, var(--brand-experiment, var(--brand-500))));transform:translateY(-1px);box-shadow:0 2px 8px #0003}.channelTabs-keybind-button:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 4px #0003}.channelTabs-keybind-button:disabled{opacity:.5;cursor:not-allowed}.channelTabs-keybind-button.listening{background:linear-gradient(135deg,var(--main-color, var(--brand-experiment, var(--brand-500))) 0%,var(--brand-experiment-560) 100%);color:var(--white);border-color:var(--main-color, var(--brand-experiment, var(--brand-500)));animation:keybind-pulse 1.5s ease-in-out infinite;box-shadow:0 0 12px var(--main-color, var(--brand-experiment, var(--brand-500)))}@keyframes keybind-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.02)}}.channelTabs-keybind-conflict{color:var(--text-feedback-critical);font-size:12px;font-weight:500;margin-top:2px;animation:shake .3s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.vc-channeltabs-tab-number-badge{background-color:#00000040;color:var(--text-default);border-radius:50%;width:20px;height:20px;min-width:20px;max-width:20px;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0;transition:opacity .2s ease-out,transform .2s ease-out,max-width .2s ease-out,margin .2s ease-out;flex-shrink:0;overflow:hidden}.vc-channeltabs-tab-number-badge[data-position=left]{margin-right:.5rem;transition:opacity .2s ease-out,transform .2s ease-out,max-width .2s ease-out,margin-right .2s ease-out}.vc-channeltabs-tab-number-badge[data-position=right]{margin-left:.5rem;transition:opacity .2s ease-out,transform .2s ease-out,max-width .2s ease-out,margin-left .2s ease-out}.vc-channeltabs-tab:hover .vc-channeltabs-tab-number-badge{transform:scale(1.05)}.vc-channeltabs-tab-compact:not(:hover,.vc-channeltabs-tab-selected) .vc-channeltabs-tab-number-badge[data-position=right]{opacity:0;transform:translate(-6px) scale(.95);max-width:0;margin-left:0;pointer-events:none}.vc-channeltabs-tab-compact:not(:hover,.vc-channeltabs-tab-selected) .vc-channeltabs-tab-number-badge[data-position=left]{opacity:0;transform:translate(-6px) scale(.95);max-width:0;margin-right:0;pointer-events:none}.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-number-badge{transition:none!important}.vc-clickableroles-trigger{cursor:pointer}.vc-clickableroles-popout{background-color:var(--background-surface-highest);border-radius:8px;padding:12px;width:250px;max-height:var(--reference-position-layer-max-height, 350px);box-sizing:border-box;display:flex;flex-direction:column}.vc-clickableroles-list{max-height:260px;min-height:0;flex:1}.vc-clickableroles-header{display:flex;align-items:center;gap:6px;margin-bottom:8px}.vc-clickableroles-color{width:12px;height:12px;border-radius:50%;flex-shrink:0}.vc-clickableroles-name{font-weight:600;color:var(--interactive-text-default)}.vc-clickableroles-count{color:var(--text-muted);margin-left:auto;font-size:12px}.vc-clickableroles-empty{padding:8px;text-align:center;color:var(--text-muted);font-size:13px}.vc-clickableroles-user{display:flex;align-items:center;gap:8px;padding:4px 6px;cursor:pointer;border-radius:4px;color:var(--interactive-text-default);font-size:14px}.vc-clickableroles-user:hover{background-color:var(--interactive-background-hover)}.vc-clickableroles-avatar{width:24px;height:24px;border-radius:50%}.vc-clickableroles-overflow{padding:6px;text-align:center;color:var(--text-muted);font-size:12px}.vc-cmdpal-shell{--cmdpal-top: clamp(24px, calc(32vh - 28px) , calc(100vh - 504px) );position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:var(--cmdpal-top);pointer-events:none}.vc-cmdpal-backdrop{position:absolute;inset:0;background:#00000073;backdrop-filter:blur(6px);pointer-events:auto;animation:vc-cmdpal-backdrop-in .15s ease-out}@keyframes vc-cmdpal-backdrop-in{0%{opacity:0}to{opacity:1}}.vc-cmdpal-root{--cmdpal-bg: #111114;--cmdpal-bg-elevated: #0e0e11;--cmdpal-footer-bg: #151518;--cmdpal-text: #a0a0a0;--cmdpal-text-bright: #f0f0f0;--cmdpal-text-muted: #6b6b6b;--cmdpal-raised: #1c1c20;--cmdpal-soft: #252528;--cmdpal-selection: #2a2a2e;--cmdpal-hairline: rgb(255 255 255 / 12%);position:relative;z-index:1;display:flex;flex-direction:column;width:680px;max-width:90vw;max-height:min(480px,calc(100vh - var(--cmdpal-top, 24px) - 24px));pointer-events:auto;border-radius:14px;overflow:hidden;background:var(--cmdpal-bg);border:1px solid var(--cmdpal-hairline);box-shadow:0 20px 60px #0000007f,0 4px 16px #00000059;transform-origin:top center;color:var(--cmdpal-text);animation:vc-cmdpal-in .13s ease-out}@keyframes vc-cmdpal-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.vc-cmdpal-root-compact{max-height:none}.vc-cmdpal-root-form{max-height:min(720px,85vh,calc(100vh - var(--cmdpal-top, 24px) - 24px));height:auto}.vc-cmdpal-header{display:flex;align-items:center;gap:12px;min-height:56px;padding:0 18px;flex-shrink:0;background:var(--cmdpal-bg)}.vc-cmdpal-root:not(.vc-cmdpal-root-compact) .vc-cmdpal-header{border-bottom:1px solid var(--cmdpal-hairline)}.vc-cmdpal-search-icon{width:18px;height:18px;color:var(--cmdpal-text-muted);flex-shrink:0}.vc-cmdpal-input{flex:1;background:none;border:none;outline:none;font-size:17px;font-weight:400;font-family:var(--font-primary);color:var(--cmdpal-text-bright);caret-color:var(--cmdpal-text-bright)}.vc-cmdpal-input::placeholder{color:var(--cmdpal-text-muted)}.vc-cmdpal-back{display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid var(--cmdpal-hairline);border-radius:7px;background:var(--cmdpal-raised);color:var(--cmdpal-text);cursor:pointer;flex-shrink:0;transition:color .1s ease,background .1s ease}.vc-cmdpal-back:hover{background:var(--cmdpal-soft);color:var(--cmdpal-text-bright)}.vc-cmdpal-breadcrumb{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:500;color:var(--cmdpal-text-bright)}.vc-cmdpal-breadcrumb-icon{width:14px;height:14px;color:var(--cmdpal-text)}.vc-cmdpal-chip-wrap{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;background:var(--cmdpal-raised);overflow:hidden;flex-shrink:0}.vc-cmdpal-chip-wrap-sm{width:22px;height:22px;border-radius:6px}.vc-cmdpal-chip-img{width:100%;height:100%;object-fit:cover}.vc-cmdpal-body{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;background:var(--cmdpal-bg)}.vc-cmdpal-results{flex:1;overflow-y:auto;padding:8px;scrollbar-width:thin;scrollbar-color:var(--cmdpal-soft) transparent}.vc-cmdpal-results::-webkit-scrollbar{width:8px}.vc-cmdpal-results::-webkit-scrollbar-thumb{background:var(--cmdpal-soft);border-radius:4px}.vc-cmdpal-results::-webkit-scrollbar-track{background:transparent}.vc-cmdpal-section{padding-bottom:4px}.vc-cmdpal-section-label{padding:10px 10px 6px;font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--cmdpal-text-muted)}.vc-cmdpal-row{display:flex;align-items:center;gap:12px;height:40px;padding:0 10px;border-radius:10px;cursor:pointer}.vc-cmdpal-row-selected{background:var(--cmdpal-selection)}.vc-cmdpal-row-icon{width:15px;height:15px;color:var(--cmdpal-text);flex-shrink:0}.vc-cmdpal-row-selected .vc-cmdpal-row-icon{color:var(--cmdpal-text-bright)}.vc-cmdpal-row-text{display:flex;align-items:baseline;gap:8px;flex:1;min-width:0}.vc-cmdpal-row-label{font-size:14px;font-weight:450;color:var(--cmdpal-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vc-cmdpal-row-selected .vc-cmdpal-row-label{color:var(--cmdpal-text-bright)}.vc-cmdpal-row-sublabel{font-size:12.5px;color:var(--cmdpal-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vc-cmdpal-row-accessory{display:flex;align-items:center;gap:8px;flex-shrink:0}.vc-cmdpal-row-kind{font-size:12px;color:var(--cmdpal-text-muted)}.vc-cmdpal-alias-chip{font-size:11px;padding:2px 6px;border-radius:5px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-raised);color:var(--cmdpal-text-muted)}.vc-cmdpal-empty{padding:40px 0;text-align:center;font-size:14px;color:var(--cmdpal-text-muted)}.vc-cmdpal-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;padding:0 14px;border-top:1px solid var(--cmdpal-hairline);background:var(--cmdpal-footer-bg);flex-shrink:0}.vc-cmdpal-footer-hint{font-size:12.5px;font-weight:500;color:var(--cmdpal-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vc-cmdpal-footer-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.vc-cmdpal-footer-action{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:500;color:var(--cmdpal-text)}.vc-cmdpal-footer-divider{width:1px;height:14px;background:var(--cmdpal-hairline)}.vc-cmdpal-shortcut{display:inline-flex;gap:3px}.vc-cmdpal-key{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 5px;border-radius:5px;background:var(--cmdpal-soft);font-size:11px;font-family:var(--font-primary);color:var(--cmdpal-text)}.vc-cmdpal-panel{position:absolute;right:10px;bottom:10px;width:300px;max-height:300px;display:flex;flex-direction:column;border-radius:12px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-bg-elevated);box-shadow:0 12px 40px #0000007f;overflow:hidden;animation:vc-cmdpal-panel-in .11s ease-out}@keyframes vc-cmdpal-panel-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.vc-cmdpal-panel-title{padding:12px 14px 6px;font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--cmdpal-text-muted)}.vc-cmdpal-panel-list{overflow-y:auto;padding:0 6px 6px;scrollbar-width:thin;scrollbar-color:var(--cmdpal-soft) transparent}.vc-cmdpal-panel-row{display:flex;align-items:center;gap:10px;height:36px;padding:0 8px;border-radius:8px;cursor:pointer}.vc-cmdpal-panel-row-selected{background:var(--cmdpal-selection)}.vc-cmdpal-panel-icon{width:13px;height:13px;color:var(--cmdpal-text);flex-shrink:0}.vc-cmdpal-panel-label{font-size:13px;font-weight:450;color:var(--cmdpal-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vc-cmdpal-panel-row-selected .vc-cmdpal-panel-label{color:var(--cmdpal-text-bright)}.vc-cmdpal-form{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:16px;padding:18px}.vc-cmdpal-root-form .vc-cmdpal-body{flex:none;min-height:0}.vc-cmdpal-root-form .vc-cmdpal-form{flex:none;overflow:visible}.vc-cmdpal-field{display:flex;flex-direction:column;gap:7px}.vc-cmdpal-field-label{font-size:12px;font-weight:600;letter-spacing:.01em;color:var(--cmdpal-text-muted)}.vc-cmdpal-field-input,.vc-cmdpal-field-textarea{width:100%;box-sizing:border-box;padding:9px 11px;border-radius:9px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-raised);font-size:14px;font-family:var(--font-primary);color:var(--cmdpal-text-bright);outline:none;resize:vertical;transition:border-color .1s ease,background .1s ease}.vc-cmdpal-field-input:focus,.vc-cmdpal-field-textarea:focus{border-color:#ffffff2e;background:var(--cmdpal-soft)}.vc-cmdpal-field-input::placeholder,.vc-cmdpal-field-textarea::placeholder{color:var(--cmdpal-text-muted)}.vc-cmdpal-textarea-stack{display:flex;flex-direction:column;gap:8px}.vc-cmdpal-markdown-preview{display:flex;flex-direction:column;gap:6px}.vc-cmdpal-markdown-preview-label{font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--cmdpal-text-muted)}.vc-cmdpal-markdown-preview-body{padding:10px 11px;border-radius:9px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-bg-elevated);overflow-wrap:break-word;overflow:hidden}.vc-cmdpal-message-preview{pointer-events:none}.vc-cmdpal-preview-attachments{display:flex;flex-direction:column;gap:8px;margin-top:8px}.vc-cmdpal-preview-image{display:block;max-width:100%;max-height:220px;border-radius:8px;object-fit:contain}.vc-cmdpal-preview-video{display:block;max-width:100%;max-height:220px;border-radius:8px}.vc-cmdpal-preview-file{display:inline-flex;align-items:center;width:fit-content;max-width:100%;padding:8px 10px;border-radius:8px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-raised);font-size:13px;color:var(--cmdpal-text);word-break:break-all}.vc-cmdpal-attachments{display:flex;flex-direction:column;gap:6px}.vc-cmdpal-attachments-label{display:inline-flex;align-items:center;gap:8px;width:fit-content;padding:7px 11px;border-radius:9px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-raised);font-size:13px;color:var(--cmdpal-text);cursor:pointer}.vc-cmdpal-attachments-input{display:none}.vc-cmdpal-attachments-list{display:flex;flex-wrap:wrap;gap:6px}.vc-cmdpal-attachments-item{display:inline-flex;align-items:center;gap:8px;padding:5px 9px;border-radius:8px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-bg-elevated);font-size:12px;color:var(--cmdpal-text-muted)}.vc-cmdpal-attachments-remove{border:none;background:transparent;padding:0;font-size:12px;color:var(--text-link, var(--brand-500));cursor:pointer}.vc-cmdpal-chips{display:flex;flex-wrap:wrap;gap:6px}.vc-cmdpal-chip{display:flex;align-items:center;gap:7px;padding:7px 11px;border-radius:9px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-raised);font-size:13px;font-weight:450;font-family:var(--font-primary);color:var(--cmdpal-text);cursor:pointer;transition:border-color .1s ease,background .1s ease,color .1s ease}.vc-cmdpal-chip:hover{background:var(--cmdpal-soft);color:var(--cmdpal-text-bright)}.vc-cmdpal-chip-selected{border-color:#ffffff38;background:var(--cmdpal-selection);color:var(--cmdpal-text-bright)}.vc-cmdpal-chip-icon{width:14px;height:14px;color:var(--cmdpal-text-muted)}.vc-cmdpal-picker{position:relative}.vc-cmdpal-picker-input{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;padding:9px 11px;border-radius:9px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-raised);transition:border-color .1s ease,background .1s ease}.vc-cmdpal-picker-input-focused{border-color:#ffffff2e;background:var(--cmdpal-soft)}.vc-cmdpal-picker-input-field{flex:1;min-width:0;border:none;background:transparent;padding:0;font-size:14px;font-family:var(--font-primary);color:var(--cmdpal-text-bright);outline:none}.vc-cmdpal-picker-input-field::placeholder{color:var(--cmdpal-text-muted)}.vc-cmdpal-picker-list{margin-top:6px;padding:4px;border-radius:10px;border:1px solid var(--cmdpal-hairline);background:var(--cmdpal-bg-elevated);box-shadow:0 12px 40px #0000007f;max-height:180px;min-height:0;overflow:hidden auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--cmdpal-soft) transparent;animation:vc-cmdpal-panel-in .11s ease-out}.vc-cmdpal-picker-list::-webkit-scrollbar{width:8px}.vc-cmdpal-picker-list::-webkit-scrollbar-thumb{background:var(--cmdpal-soft);border-radius:4px}.vc-cmdpal-picker-item{display:flex;align-items:center;gap:9px;height:34px;flex-shrink:0;padding:0 8px;border-radius:7px;font-size:13px;color:var(--cmdpal-text);cursor:pointer}.vc-cmdpal-picker-item-selected{background:var(--cmdpal-selection);color:var(--cmdpal-text-bright)}.vc-cmdpal-picker-icon{width:18px;height:18px;border-radius:50%;object-fit:cover;color:var(--cmdpal-text-muted)}.vc-cmdpal-form-error{padding:9px 11px;border-radius:9px;border:1px solid color-mix(in srgb,var(--text-danger) 30%,transparent);background:color-mix(in srgb,var(--text-danger) 8%,transparent);font-size:13px;color:var(--text-danger)}.vc-cmdpal-detail{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:16px;padding:22px}.vc-cmdpal-detail-heading{font-size:30px;font-weight:600;letter-spacing:-.01em;color:var(--cmdpal-text-bright)}.vc-cmdpal-detail-body{font-size:14px;color:var(--cmdpal-text)}.vc-cmdpal-detail-rows{display:flex;flex-direction:column}.vc-cmdpal-detail-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px solid var(--cmdpal-hairline)}.vc-cmdpal-detail-row:last-child{border-bottom:none}.vc-cmdpal-detail-row-label{font-size:13px;color:var(--cmdpal-text-muted)}.vc-cmdpal-detail-row-value{font-size:13px;font-weight:500;color:var(--cmdpal-text-bright)}.vc-cmdpal-hotkey-setting{display:flex;align-items:center;justify-content:space-between;gap:12px}@media(prefers-reduced-motion:reduce){.vc-cmdpal-backdrop,.vc-cmdpal-root,.vc-cmdpal-panel,.vc-cmdpal-picker-list{animation:none}}.vc-content-warning-container{filter:blur(5px) brightness(30%);transition:filter .2s ease-in-out;cursor:pointer}.vc-content-warning-enter{filter:none}.vc-content-warning-leave{filter:blur(5px) brightness(30%)}.vc-cursor-buddy-modal{display:flex;flex-direction:column;gap:15px;margin-top:10px}.vc-cursor-buddy-color{display:flex;align-items:center;gap:10px}.vc-custom-sounds-card{padding:1em 1em 0}.vc-custom-sounds-id{color:var(--text-muted)}.vc-custom-sounds-upload{display:inline}.vc-custom-sounds-seasonal-title{margin-top:16px;padding-top:8px;border-top:1px solid var(--background-mod-muted)}.vc-custom-sounds-sound-section{margin-bottom:16px}.vc-custom-sounds-url-input{width:100%;padding:8px;background:var(--input-background-default, var(--input-background));border:none;border-radius:3px;color:var(--text-default)}.vc-custom-sounds-buttons{display:flex;gap:8px;margin-bottom:16px}.vc-custom-sounds-search{margin-bottom:16px}.vc-custom-sounds-search input{width:100%;padding:8px;background:var(--input-background-default, var(--input-background));border:none;border-radius:3px;color:var(--text-default)}.vc-custom-sounds-sounds-list{display:flex;flex-direction:column;gap:16px}.vc-custom-sounds-override-controls{display:flex;gap:8px;margin-bottom:16px}.vc-custom-sounds-file-input{display:none}.vc-cmt-info-card{background-color:var(--background-feedback-info);border:1px solid var(--icon-feedback-info);padding:8px;border-radius:var(--radius-xs);margin:10px 0}.vc-cmt-demo-message-container{position:sticky;background:var(--background-base-lowest);padding:10px 0;cursor:pointer;top:-8px;z-index:10;border:solid grey 1px;border-radius:5px}.vc-discord-dev-banner-text{white-space:pre-wrap;padding:2px}.vc-discord-dev-banner-error{margin-top:8px;color:var(--text-feedback-critical)}.vc-discord-dev-banner-icons{display:inline-flex;align-items:center;vertical-align:middle;height:1em;width:1em;margin-right:.25em}.vc-discord-dev-banner-input{width:100%;resize:none;overflow:hidden;background-color:var(--background-base-low);color:var(--text-default);border:1px solid var(--border-subtle)!important;border-radius:12px;outline:none;margin-top:12px}.vc-drag-favorite-emotes-indicator:before{content:"";position:absolute;z-index:1;top:4px;right:0;left:2px;height:calc(100% - (var(--custom-emoji-picker-constants-emoji-container-padding-vertical) * 2));width:4px;transform:translate(-4px);background-color:var(--green-360);border-radius:2px}.vc-drag-favorite-emotes-wrapper{inset:0;flex-direction:row}.vc-drag-favorite-emotes-item{background-size:40px;height:40px;width:40px;display:block}.vc-dragify-ghost-container{position:fixed;inset:0;pointer-events:none;z-index:9999}.vc-dragify-ghost{position:fixed;top:0;left:0;pointer-events:none;color:var(--text-normal, #fff);opacity:1;animation:vc-dragify-fade-in .2s ease-out forwards;will-change:transform}.vc-dragify-ghost-exit{animation:vc-dragify-fade-out .2s ease-in forwards}.vc-dragify-card{display:flex;align-items:center;gap:12px;padding:6px 10px;min-width:220px;max-width:320px;border-radius:6px;background:#000000b3;border:1px solid rgb(255 255 255 / 10%);box-shadow:0 12px 40px #00000059;backdrop-filter:blur(12px);transform:translateZ(0);color:var(--text-default, #fff);font-family:var(--font-code);line-height:1.4;animation:none;will-change:transform}.vc-dragify-icon{width:28px;height:28px;border-radius:6px;background:#ffffff1a;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;color:var(--text-default, #fff);font-weight:600}.vc-dragify-icon-image{width:100%;height:100%;object-fit:cover}.vc-dragify-icon-text{font-size:13px;color:var(--text-default, #fff)}.vc-dragify-body{display:flex;flex-direction:column;min-width:0;flex:1}.vc-dragify-title-row{display:flex;align-items:center;gap:6px;min-width:0}.vc-dragify-title{font-size:14px;font-weight:600;color:var(--text-default, #fff);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vc-dragify-voice-icon{flex-shrink:0;color:var(--interactive-normal, #b9bbbe)}.vc-dragify-voice-icon-muted{color:var(--status-danger, #ed4245)}.vc-dragify-voice-icon-stream{color:var(--status-positive, #3ba55d)}.vc-dragify-subtitle{font-size:11px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vc-dragify-badge{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-left:auto}@keyframes vc-dragify-fade-in{0%{opacity:0}to{opacity:1}}@keyframes vc-dragify-fade-out{0%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.vc-dragify-ghost{animation:none}.vc-dragify-ghost-exit{animation:none;opacity:0}}.vc-plugins-management-cards.vc-plugins-grid{display:flex;flex-wrap:wrap;width:100%}.vc-plugins-management-cards .vc-addon-card{width:auto;height:auto}.vc-plugins-management-cards .vc-addon-title-container{width:max-content}.vc-plugins-management-cards .vc-addon-title{position:static;overflow:visible}.vc-plugins-management-cards .vc-addon-note{max-width:400px}.vc-exitsounds-input-row{display:flex;gap:8px;align-items:center}.vc-exitsounds-input-wrapper{flex:1}.vc-exitsounds-guild-icon{width:24px;height:24px;border-radius:4px;margin-right:8px;vertical-align:middle}.export-contacts-button{display:flex;justify-content:center;align-items:center;text-align:center;min-width:40px;-webkit-app-region:no-drag;border-radius:4px;margin:0 8px;padding:2px 8px;position:relative;font-size:16px;line-height:20px;cursor:pointer;font-weight:500;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:0;outline:0;background-color:#5865f2;color:var(--status-positive-text)}.export-contacts-button:hover{background-color:#454fbf}.vc-file-upload-progress-wrap{margin-top:8px;border-radius:8px;border:1px solid var(--border-subtle);padding:8px 10px;background:var(--background-secondary);display:flex;flex-direction:column;gap:6px}.vc-file-upload-progress-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.vc-file-upload-progress-label{font-size:12px;color:var(--text-default)}.vc-file-upload-progress-meta{display:flex;align-items:center;gap:8px}.vc-file-upload-progress-attempt{font-size:12px;color:var(--text-muted)}.vc-file-upload-progress-percent{font-size:12px;color:var(--text-default);white-space:nowrap}.vc-file-upload-progress-cancel{border:none;border-radius:6px;background:var(--button-danger-background);color:var(--white-500);font-size:11px;padding:3px 8px;cursor:pointer}.vc-file-upload-progress-track{width:100%;height:6px;background:var(--background-tertiary);border-radius:999px}.vc-file-upload-progress-fill{height:100%;border-radius:999px;background:var(--brand-500);transition:width .2s ease}.vc-file-upload-progress-file{font-size:11px;color:var(--text-default);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vc-file-upload-progress-wrap[data-phase=failed] .vc-file-upload-progress-fill{background:var(--status-danger)}.vc-file-upload-progress-wrap[data-phase=success] .vc-file-upload-progress-fill{background:var(--status-positive)}.vc-file-upload-settings-fallback-order-list{display:grid;gap:6px}.vc-file-upload-settings-fallback-order-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--background-secondary);color:var(--text-default);cursor:grab}.vc-file-upload-settings-fallback-order-item[data-dragging=true]{background:var(--background-modifier-hover)}.vc-file-upload-settings-fallback-order-label{color:var(--text-default)}.vc-file-upload-settings-fallback-order-handle{color:var(--text-muted);font-size:12px}.vc-file-upload-settings-fallback-order-actions{margin-top:8px}.vc-file-upload-settings-group{display:grid;gap:10px}.vc-file-upload-settings-service-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.vc-file-upload-settings-service-option{min-height:38px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--background-secondary);color:var(--text-default);cursor:pointer;padding:8px 10px;text-align:left}.vc-file-upload-settings-service-option:hover{background:var(--background-modifier-hover)}.vc-file-upload-settings-service-option[data-selected=true]{border-color:var(--brand-500);background:var(--background-modifier-selected)}.vc-file-upload-settings-service-option-label{font-size:13px;font-weight:500}.vc-file-upload-settings-actions{display:flex;flex-wrap:wrap;gap:8px}.vc-findreply-paginator{margin-top:inherit!important}.vc-findreply-close{align-items:inherit!important;line-height:0!important}.vc-findreply-div{background-color:var(--background-base-lowest);display:flex;flex-direction:row;align-items:center;width:fit-content;padding:10px;gap:10px}.eq-googlefonts-results{max-height:400px;overflow-y:auto}.eq-googlefonts-card{padding:16px;cursor:pointer!important;background:var(--background-secondary-alt);border:1px solid var(--background-base-low)}.eq-googlefonts-card:hover{background:var(--background-mod-subtle);cursor:pointer!important}.eq-googlefonts-preview{display:flex;flex-direction:column;gap:8px;cursor:pointer!important}.vc-friend-codes-card{padding:20px;margin-bottom:var(--custom-margin-margin-small);border-width:1px;border-style:solid;border-radius:5px;border-color:var(--background-base-low);background-color:var(--background-secondary-alt)}.vc-friend-codes-card-title span{color:var(--text-default);font-family:var(--font-primary);font-size:14px;font-weight:400}.vc-friend-codes-info-header{margin-top:16px;margin-bottom:8px;color:var(--text-default);text-transform:uppercase;font-size:12px;line-height:16px;letter-spacing:.02em;font-family:var(--font-display);font-weight:600}.vc-friend-codes-text{display:flex;justify-content:center;align-items:center}.vc-friendship-ranks-flex{width:100%;justify-content:center;height:18px}.vc-friendship-ranks-img{display:flex;width:100%;text-align:center;place-content:center center;margin:0;gap:4px}.vc-friendship-ranks-text{padding:1em;text-align:center}.vc-friendship-ranks-decoration{vertical-align:middle;display:inline-flex;align-items:center}.vc-friendship-ranks-icon{width:16px;height:16px}.vc-boo-icon{height:42px}#vc-boo-container{display:flex;flex-direction:row;align-items:center;justify-content:center;background-color:var(--background-primary);height:30px;width:48px;margin-left:auto;margin-right:auto;color:var(--text-default);fill:var(--text-default)}.vc-boo-clickable{cursor:pointer;transition:opacity .2s ease}.vc-boo-clickable:hover{opacity:.8}.vc-boo-clickable:active{opacity:.6}.vc-boo-ghosted-entry{padding:12px;cursor:pointer;border-radius:8px;margin-bottom:8px;background-color:var(--background-secondary-alt);display:flex;align-items:center;gap:8px;transition:background-color .1s ease}.vc-boo-ghosted-entry:hover{background-color:var(--background-mod-subtle)}.vc-boo-user-info{flex:1;display:flex;flex-direction:column;gap:2px}.vc-boo-clear{margin-right:16px}.vc-boo-modal-header{flex-grow:1}.vc-boo-modal-content{padding:16px 0}.vc-boo-modal-text{color:var(--text-muted)}.vc-gif-collections-sort-container{padding:12px;background-color:var(--background-secondary-alt);border-radius:8px;margin-bottom:16px}.vc-gif-collections-sort-title{font-size:16px;font-weight:600;color:var(--text-strong);margin-bottom:8px}.vc-gif-collections-sort-divider{margin:10px 0;border-top:1px solid var(--border-subtle)}.vc-gif-collections-sort-description,.vc-gif-collections-sort-section-title{font-size:14px;font-weight:500;color:var(--text-default);margin-bottom:8px}.vc-gif-collections-sort-section{margin-top:12px}.vc-gif-collections-sort-option{display:flex;align-items:center;margin-bottom:8px}.vc-gif-collections-sort-label{font-size:14px;font-weight:400;color:var(--text-default);cursor:pointer;display:flex;align-items:center}.vc-gif-collections-sort-input{margin-right:10px;cursor:pointer;accent-color:var(--brand-experiment)}.vc-gif-collections-sort-label:hover{color:var(--text-strong)}.vc-gif-collections-modal{background-color:var(--modal-background)!important;border-radius:8px}.vc-gif-collections-modal-header{padding:16px;background-color:var(--background-secondary-alt);border-bottom:1px solid var(--border-subtle)}.vc-gif-collections-modal-title{font-size:16px;font-weight:600;color:var(--text-strong)}.vc-gif-collections-modal-content{padding:16px;display:flex;flex-direction:column;gap:16px}.vc-gif-collections-info-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding:8px 0}.vc-gif-collections-info-row:last-child{border-bottom:none}.vc-gif-collections-info-title{font-size:14px;font-weight:500;color:var(--text-default)}.vc-gif-collections-info-text{font-size:14px;color:var(--text-muted);max-width:70%;white-space:normal;overflow:hidden;text-overflow:ellipsis}.vc-gif-collections-modal-footer{padding:16px;background-color:var(--background-secondary-alt);display:flex;justify-content:flex-end}.vc-gif-collections-rename-text{font-size:14px;font-weight:500;color:var(--text-default);margin:16px 0 2px}.vc-gif-collections-rename-input{outline:0 solid transparent;transition:outline .2s;border-radius:4px}.vc-gif-collections-input-warning{outline:1px solid var(--text-feedback-critical)}.vc-gif-collections-warning-text{margin-top:16px;font-size:14px;color:var(--text-feedback-critical)}.vc-gif-collections-buttons{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;max-height:200px;overflow:hidden auto}.vc-gif-collections-button{min-width:0;text-align:center;padding:8px;background-color:var(--background-secondary);color:var(--text-default);border:none;border-radius:4px;cursor:pointer;transition:background-color .15s;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.vc-gif-collections-button:hover{background-color:var(--background-modifier-hover)}.vc-github-repos-container{display:flex;flex-direction:column;gap:8px}.vc-github-repos-header{color:var(--text-default)}.vc-github-repos-list{display:flex;flex-direction:column;gap:8px}.vc-github-repos-star-icon{color:var(--text-status-idle);fill:var(--text-status-idle);flex-shrink:0}.vc-github-repos-footer{display:flex;align-items:center;justify-content:center;margin-top:2px;padding-top:12px;border-top:1px solid var( --profile-body-divider-color, var(--input-border-default, var(--input-border)) )}.vc-github-repos-show-more{color:var(--text-muted);font-size:12px;font-weight:500;cursor:pointer}.vc-github-repos-show-more:hover{color:var(--text-default);text-decoration:underline}.vc-github-repos-subtabs{display:flex;align-items:center;justify-content:flex-start;gap:8px;min-width:0;border-bottom:1px solid var( --profile-body-divider-color, var(--input-border-default, var(--input-border)) );padding-bottom:6px}.vc-github-repos-subtabs-list{display:flex;align-items:center;gap:4px;overflow-x:auto;flex:0 1 auto;min-width:0;scrollbar-width:none}.vc-github-repos-subtabs-list::-webkit-scrollbar{display:none}.vc-github-repos-subtab{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-round);color:var(--text-muted);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;transition:background-color .15s ease,color .15s ease}.vc-github-repos-subtab:hover{background-color:var(--background-mod-subtle);color:var(--text-default)}.vc-github-repos-subtab-active,.vc-github-repos-subtab-active:hover{background-color:var(--background-mod-strong);color:var(--text-default)}.vc-github-repos-subtab-avatar{width:14px;height:14px;border-radius:var(--radius-round);flex-shrink:0}.vc-github-repos-subtab-count{color:var(--text-faint)}.vc-github-repos-sort-toggle{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:var(--radius-xs);color:var(--text-muted);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;flex-shrink:0;transition:background-color .15s ease,color .15s ease}.vc-github-repos-sort-toggle:hover{background-color:var(--background-mod-subtle);color:var(--text-default)}.vc-github-repos-sort-icon{flex-shrink:0}.vc-github-repos-card{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:var(--radius-sm);cursor:pointer;position:relative;transition:background-color .15s ease}.vc-github-repos-card:hover{background-color:var(--background-mod-subtle)}.vc-github-repos-art{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);flex-shrink:0}.vc-github-repos-art-icon{width:20px;height:20px;object-fit:contain}.vc-github-repos-info{display:flex;flex-direction:column;min-width:0;flex:1;gap:1px}.vc-github-repos-name{color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vc-github-repos-description{color:var(--text-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vc-github-repos-meta{display:flex;align-items:center;gap:10px;margin-top:2px}.vc-github-repos-stars{display:flex;align-items:center;gap:4px;color:var(--text-muted);font-size:11px}.vc-github-repos-language{display:flex;align-items:center;gap:5px;color:var(--text-muted);font-size:11px}.vc-github-repos-language-color{width:var(--size-sm);height:var(--size-sm);border-radius:var(--radius-round);display:inline-block}.vc-github-repos-link{cursor:pointer;fill:var(--interactive-icon-default);flex-shrink:0;opacity:0;transition:opacity .15s ease}.vc-github-repos-link:hover{fill:var(--interactive-icon-hover)}.vc-github-repos-card:hover .vc-github-repos-link{opacity:1}.vc-github-repos-modal{width:100%;max-width:900px;background-color:var(--background-base-lower)}.vc-github-repos-modal-content{display:flex;flex-direction:column;gap:12px;padding:16px 0}.vc-github-repos-modal-list{max-height:60vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thin-thumb) var(--scrollbar-thin-track)}.vc-github-repos-modal-footer-close{margin-right:5px}.vc-github-repos-modal-footer-close,.vc-github-repos-modal-footer-github{color:var(--text-default);background-color:color-mix(in srgb,var(--background-base-low) 90%,white);border:0}.vc-github-repos-modal-footer-close:hover,.vc-github-repos-modal-footer-github:hover{background-color:color-mix(in srgb,var(--background-base-low) 75%,white)}.vc-github-repos-modal-footer{background-color:var(--background-base-lower)}.vc-github-repos-loading{color:var(--text-default);margin-top:10px}.vc-github-repos-error{color:var(--text-feedback-critical);margin-top:10px}.vc-github-repos-container.vc-github-repos-tab{margin-top:10px;padding:8px 12px;height:97%;width:100%;box-sizing:border-box;display:grid;grid-template-rows:auto auto 1fr auto;gap:6px;overflow:hidden;position:relative}.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-list{overflow:hidden scroll;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thin-thumb) var(--scrollbar-thin-track);align-content:start}.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-card{padding:4px 6px}.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-art{width:32px;height:32px}.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-art-icon{width:16px;height:16px}.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-name{font-size:13px;line-height:1.2}.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-description{font-size:11px}.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-language,.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-stars{font-size:10px}.vc-hide-messages-eye{width:16px;height:16px;margin-right:.2rem;display:flex;align-items:center;justify-content:center}.vc-hideservers-button-wrapper{display:flex;justify-content:center;margin:0 0 8px}.vc-hideservers-button{max-width:48px;font-size:60%;background-color:var(--background-primary);color:var(--text-default)}.vc-hideservers-list{flex:1 1 auto}.vc-hideservers-row{height:62px;display:flex;align-items:center;flex-direction:row;margin-left:20px;margin-right:20px;border-top:1px solid var(--input-border-default, var(--input-border));border-bottom:1px solid transparent;justify-content:space-between}.vc-hideservers-guildicon{display:flex;align-items:center;margin-right:1em}.vc-hideservers-guildicon img{border-radius:50%}.vc-hideservers-name{flex-grow:1}.vc-hideservers-row-button{margin-left:auto}.vc-hideservers-folder-header{display:flex;justify-content:space-between;align-items:center;margin-right:20px}.vc-home-typing-dots{margin-right:2px}.vc-i-remember-you-header-container{display:contents;justify-content:space-between;align-items:center;flex-direction:column}.vc-i-remember-you-header-name{margin-top:16px}.vc-i-remember-you-header-id{display:inline-block;font-size:.8em;font-weight:400;opacity:.75;cursor:pointer;margin-left:6px}.vc-i-remember-you-header-id:hover{opacity:1}.vc-i-remember-you-header-btns{display:grid;grid-template-columns:repeat(2,minmax(0,350px));gap:10px;margin-top:8px}.vc-i-remember-you-header{color:var(--text-default)}.vc-i-remember-you-rows{gap:5px;flex-direction:column}.vc-i-remember-you-search{margin-top:10px}.vc-i-remember-you-search-user{flex-direction:column;padding-top:18px}.vc-i-remember-you-user-avatar{cursor:pointer;margin-right:0}.vc-i-remember-you-user-row{display:flex;flex-direction:column;gap:6px;padding:4px;align-items:flex-start}.vc-i-remember-you-user-id{align-self:flex-start;opacity:.75;height:min-content;cursor:pointer}.vc-i-remember-you-user-id:hover{opacity:1}.vc-i-remember-you-user{display:flex;flex-direction:row;align-items:center;gap:8px;width:100%;margin-top:0}.vc-i-remember-you-user-username{margin-top:2px}.vc-i-remember-you-user-tooltip{display:flex;flex-direction:column;align-items:flex-start}.vc-icons-tab-grid-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px}.vc-icon-box{display:flex;flex-direction:column;align-items:center}.vc-icon-container{padding:12px;border-radius:8px;transition:background-color .15s ease}.vc-icon-container:hover{background-color:var(--background-modifier-hover)}.vc-icon-icon{transition:transform .15s ease,filter .15s ease}.vc-icon-container:hover .vc-icon-icon{transform:scale(1.1);filter:brightness(1.5)}.vc-icon-title{font-size:.75rem;margin-top:4px;text-align:center;overflow:hidden;text-overflow:ellipsis;max-width:64px}.vc-icon-tab-search-bar-grid{display:flex;gap:8px;margin-bottom:16px}.vc-icon-tab-search-bar-grid>div:first-child{flex:1}.vc-icon-sentinel{height:32px}.vc-ic-modal-header{position:relative;padding:16px 16px 16px 24px}.vc-ic-modal-header-trailing{position:absolute;top:8px;right:8px}.vc-ic-modal-main{gap:24px;align-items:center}.vc-ic-icon-preview{width:128px;height:128px;display:flex;align-items:center;justify-content:center;background-image:repeating-linear-gradient(45deg,#ffffff1a 0 10px,#0000001a 10px 20px);border-radius:8px;cursor:context-menu}.vc-ic-icon-large{width:96px;height:96px}.vc-ic-icon-info{gap:12px}.vc-ic-icon-sizes{gap:16px;align-items:flex-end}.vc-ic-color-label{cursor:help}.vc-ic-modal-footer{flex-direction:row-reverse}.vc-ic-use-as{margin-top:16px;margin-bottom:8px}.vc-ic-unordered-list li{margin-left:16px;list-style:disc}.vc-ignore-calls-button{width:64px;border-radius:12px}.vc-inrole-member-list{max-height:400px;margin-top:10px;margin-bottom:13px;overflow-x:hidden}.vc-inrole-member-list::-webkit-scrollbar{background-color:#fff1;border-radius:100px;width:10px}.vc-inrole-member-list::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:100px}.vc-inrole-modal-member{margin:11px 0}.vc-inrole-header{padding-top:15px}.vc-inrole-close{margin-left:auto}.vc-command-palette-root{border-radius:10px;overflow:hidden;background-color:var(--background-base-low)}.vc-command-palette-option{padding:5px;background-color:var(--background-base-low);color:var(--white-500);font-family:var(--font-display);text-align:left;padding-left:.8rem}.vc-command-palette-key-hover{padding:5px;background-color:var(--background-mod-strong);border-radius:3px;font-family:var(--font-display);color:var(--interactive-icon-hover);padding-left:.8rem}.vc-command-palette-option-container{display:grid;gap:2px;margin-left:.8rem;margin-right:.8rem}.vc-command-palette-textinfo{font-family:var(--font-display);color:var(--white-500);margin-left:.8rem;margin-right:.8rem;padding:.8rem 0}.vc-command-palette-simple-text{background-color:var(--input-background-default, var(--input-background));width:30vh}.vc-command-palette-registrar{position:absolute;color:var(--interactive-icon-default);white-space:nowrap;text-overflow:ellipsis;right:1.6rem}.vc-command-palette-key-recorder-container{position:relative;display:block;cursor:pointer;height:40px;width:20rem}.vc-command-palette-key-recorder{display:flex;align-items:center;border-radius:3px;background-color:hsl(var(--black-500-hsl) / 10%);color:var(--text-strong);line-height:22px;font-weight:600;padding:10px 0 10px 10px;text-overflow:ellipsis;overflow:hidden;border:1px solid;border-color:hsl(var(--black-500-hsl) / 30%);transition:border.15s ease;user-select:none;font-family:var(--font-primary)}.vc-command-palette-recording{animation:shadowPulse_b16790 1s ease-in infinite;box-shadow:0 0 6px hsl(var(--red-400-hsl) / 30%);border-color:hsl(var(--red-400-hsl) / 30%);color:var(--status-danger)}.vc-command-palette-key-recorder:hover{border-color:hsl(var(--red-400-hsl) / 30%)}.vc-command-palette-recording-button{color:var(--status-danger)!important;background-color:hsl(var(--red-400-hsl) / 10%)!important;opacity:1;transition:opacity.2s ease-in-out,transform.2s ease-in-out}.vc-command-palette-key-recorder-button{position:absolute;right:1rem;height:30px;width:128px;color:var(--white-500);background-color:var(--channeltextarea-background);border-radius:10px;transition:background-color .15s ease}.vc-command-palette-key-recorder-button:hover{background-color:var(--channeltextarea-background)}.vc-keywordnotify-delete{padding:0;color:var(--primary-400);transition:color .2s ease-in-out}.vc-keywordnotify-delete:hover{color:var(--status-danger)}.vc-keywordnotify-ignoreCaseSwitch{margin-top:.5em;margin-right:40px}.vc-keywordnotify-collapsible{display:flex;align-items:center;padding:8px;cursor:pointer}.vc-keywordnotify-form-generic-label-wrapper{margin-bottom:20px;cursor:pointer}.vc-keywordnotify-form-generic-label{display:flex;width:100%;>:last-child{margin-left:auto;max-width:fit-content;min-width:fit-content}}.vc-keywordnotify-form-generic-label-disabled{opacity:.5;pointer-events:none;cursor:not-allowed}.vc-keywordnotify-form-generic-label-text{display:flex;flex-direction:column;justify-content:center;gap:8px}.vc-keywordnotify-form-generic-label-border{margin-top:20px}.vc-limitlessScreenshare-settings-card{white-space:nowrap;text-wrap-mode:nowrap}.vc-limitlessScreenshare-settings-preset-label{padding-left:.5em}.vc-limitlessScreenshare-settings-flex-input>div:first-child>div>div>div{--custom-text-input-height: 2em;width:5em}.qrlogin-modal-filepaste{width:30rem;height:13rem;border-radius:1rem;background-color:var(--background-secondary-alt);border-style:dashed;border-color:var(--input-border-default, var(--input-border));border-width:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:.2s background-color ease-in-out,.2s border-color ease-in-out,.2s opacity ease-in-out,.2s border-width ease-in-out,.25s width cubic-bezier(.76,0,.24,1),.25s height cubic-bezier(.76,0,.24,1)}.qrlogin-modal-filepaste *{pointer-events:none}.qrlogin-modal-filepaste-drop{background-color:var(--mention-background)}.qrlogin-modal-filepaste-disabled{background-color:var(--background-secondary-alt)!important;opacity:.5;cursor:unset}.qrlogin-modal-filepaste-preview{border-width:0;background-color:#0005}.qrlogin-modal-filepaste-preview video{object-fit:fill}.qrlogin-preview-crosses{animation:.5s preview-crosses cubic-bezier(.25,1,.5,1) forwards}.qrlogin-preview-cross{position:absolute;width:var(--size);height:var(--size);transform:translate(-50%,-50%) rotate(var(--rot));--size: 0rem;--rot: 0deg}.qrlogin-preview-cross img{width:var(--size);height:var(--size);transform-origin:bottom right;animation:.3s cross ease-out forwards .5s;opacity:0}.qrlogin-device-content{padding:24px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px}.qrlogin-device-image{height:8rem;user-select:none}.qrlogin-device-header{margin:6px 0 12px}.qrlogin-device-confirm{margin-top:18px;width:20rem;background:linear-gradient(to right,var(--status-danger) calc(var(--progress) - 1%),var(--text-feedback-critical) var(--progress))!important;border-radius:420rem;--progress: 0%}.qrlogin-device-footer{justify-content:space-between}.qrlogin-settings-btns{display:flex;align-items:center;gap:8px}.qrlogin-modal-container{margin-left:100px}[data-tab-id="Scan QR Code"]:before{-webkit-mask:var(--si-scan-qr-code) center/contain no-repeat!important;mask:var(--si-scan-qr-code) center/contain no-repeat!important;--si-scan-qr-code: url(data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0icmVkIiBkPSJNNCA2YzAtMS4xLjktMiAyLTJoM2ExIDEgMCAwIDAgMC0ySDZhNCA0IDAgMCAwLTQgNHYzYTEgMSAwIDAgMCAyIDBWNlpNNCAxOGMwIDEuMS45IDIgMiAyaDNhMSAxIDAgMSAxIDAgMkg2YTQgNCAwIDAgMS00LTR2LTNhMSAxIDAgMSAxIDIgMHYzWk0yMCA2YTIgMiAwIDAgMC0yLTJoLTNhMSAxIDAgMSAxIDAtMmgzYTQgNCAwIDAgMSA0IDR2M2ExIDEgMCAxIDEtMiAwVjZaIiBjbGFzcz0iIj48L3BhdGg+PHBhdGggZmlsbD0icmVkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01IDdjMC0xLjEuOS0yIDItMmgyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY3Wm0yIDBoMnYySDdWN1pNNSAxNWMwLTEuMS45LTIgMi0yaDJhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMS0yIDJIN2EyIDIgMCAwIDEtMi0ydi0yWm0yIDBoMnYySDd2LTJaTTEzIDdjMC0xLjEuOS0yIDItMmgyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAyaC0yYTIgMiAwIDAgMS0yLTJWN1ptMiAwaDJ2MmgtMlY3Wk0xNy4wOCAxM2ExLjUgMS41IDAgMCAwLTEuNDIgMS4wM2MtLjA5LjI1LS4zLjQ3LS41Ni40N0gxNWEyIDIgMCAwIDAtMiAyVjIwYzAgMS4xLjkgMiAyIDJoNmEyIDIgMCAwIDAgMi0ydi0zLjVhMiAyIDAgMCAwLTItMmgtLjFjLS4yNiAwLS40Ny0uMjItLjU2LS40N0ExLjUgMS41IDAgMCAwIDE4LjkyIDEzaC0xLjg0Wk0yMCAxOGEyIDIgMCAxIDEtNCAwIDIgMiAwIDAgMSA0IDBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGNsYXNzPSIiPjwvcGF0aD48L3N2Zz4=)}@keyframes cross{0%{transform:scale(1.25)}to{opacity:1}}@keyframes preview-crosses{to{transform:translate(var(--offset-x),var(--offset-y)) scale(var(--scale))}}.vc-media-playback-speed-icon{background-color:transparent;height:100%;z-index:2;line-height:0;color:var(--interactive-text-default)}.vc-media-playback-speed-icon:hover{color:var(--interactive-text-hover)}.vc-color-block{aspect-ratio:1/1;background:var(--color);height:1rem;vertical-align:middle;margin-bottom:.2rem;border-radius:4px;display:inline-block;user-select:none;box-sizing:border-box}.vc-color-bg{background:var(--color)}.theme-dark .vc-color-bg.vc-color-bg-invert,.theme-light .vc-color-bg:not(.vc-color-bg-invert){color:var(--background-secondary-alt)}.c98-message-link-tooltip{width:max-content;max-width:80vw}.vc-msg-logger-enhanced-modal-root{max-height:100%;max-width:100%}.vc-msg-logger-enhanced-modal-empty-logs{display:grid;place-content:center;height:100%}.vc-msg-logger-enhanced-modal-info-icon{position:absolute;top:-24px;right:-24px;color:var(--interactive-icon-default);cursor:pointer}.vc-msg-logger-enhanced-modal-content-container{overflow:hidden;height:100%;width:100%;transition:opacity .1s ease-in}.vc-msg-logger-enhanced-modal-content{padding-bottom:20px;height:100%}.vc-msg-logger-enhanced-modal-content-inner{padding-top:1rem;padding-bottom:1rem;height:100%}.vc-msg-logger-enhanced-modal-tab-bar-item{padding-bottom:16px;margin-bottom:-2px}.vc-msg-logger-enhanced-modal-tab-bar{margin-bottom:12px;margin-left:-24px;width:114.5%;justify-content:space-around}.vc-msg-logger-enhanced-modal-from{font-size:14px;margin-left:12px}.msg-logger-modal-from-deleted{color:var(--status-danger)}.vc-msg-logger-enhanced-modal-from-edited{color:var(--white-600)}.vc-msg-logger-enhanced-toolbox-btn svg{color:var(--interactive-icon-default)}:is(.vc-msg-logger-enhanced-toolbox-btn:hover,.vc-msg-logger-enhanced-toolbox-btn[class*=selected]) svg{color:var(--interactive-icon-active)}.vc-msg-logger-enhanced-folder-upload-container{display:flex;justify-content:space-between;align-items:center;padding:0;background-color:var(--background-secondary-alt)}.vc-msg-logger-enhanced-folder-upload-input{cursor:pointer;padding:10px 0 10px 10px;color:var(--text-default)}.vc-msg-logger-enhanced-folder-upload-button{margin:6px;padding:4px 8px}.vc-updater-modal-content{padding:1rem 2rem}.vc-msg-logger-enhanced-modal{display:flex;flex-direction:column;gap:10px;width:100%;padding-right:20px}.vc-msg-logger-enhanced-modal-filter{width:106%}.vc-message-peek-timestamp{position:absolute;top:8px;right:8px;font-size:12px;font-weight:500;line-height:16px;color:var(--text-default)}.vc-message-peek-timestamp-favorites{font-size:12px;font-weight:500;line-height:16px;color:var(--text-default)}[class*=interactiveSelected__] .vc-message-peek-timestamp{color:var(--white)}[class*=interactive__]:hover .vc-message-peek-timestamp{display:none}.vc-message-peek-preview{display:flex;align-items:center;gap:4px}.vc-message-peek-icon{display:flex;margin-top:.8px}[class*=interactive__]:hover .vc-message-peek-icon svg path{fill:var(--white)!important}.vc-message-peek-activity-row{display:flex;align-items:center;gap:4px}.vc-message-peek-activity-row>[class*=textXs]{min-width:0}.vc-message-peek-activity-row>[class*=vc-bactivities-row]{flex-shrink:0}.mt-icon{vertical-align:-2px;margin-right:.25em;color:var(--text-muted)}.mt-subtext{display:flex;align-items:center;gap:.25em;color:var(--text-muted);font-size:.85rem;margin-top:.15em}.mt-indicator{color:var(--text-muted);font-style:italic;font-weight:400;font-size:.7rem;line-height:1;margin-top:.15em;opacity:.75}.vc-more-stickers-icon{fill:var(--interactive-icon-default);margin-top:20%}.vc-more-stickers-icon:hover,.vc-more-stickers-icon:focus-visible,.vc-more-stickers-icon-active{fill:var(--interactive-icon-active)}.vc-more-stickers-picker-container{background-color:var(--background-base-low);overflow:hidden;border-radius:4px;width:100%}.vc-more-stickers-picker-container>div:first-child{display:flex;flex:1 1 auto;flex-flow:wrap;padding:1px 0 1px 1px;overflow:hidden}.vc-more-stickers-picker-search-box{height:30px;line-height:32px;font-size:16px;flex:1;min-width:48px;margin:1px}.vc-more-stickers-picker-search-icon{width:32px;height:32px;display:flex;justify-content:center;align-items:center;cursor:text;box-sizing:border-box;margin-right:8px}.vc-more-stickers-foreign-object>img{text-indent:-9999px;align-items:center;background-color:var(--background-primary);color:var(--text-default);display:flex;height:100%;justify-content:center;width:100%}.vc-more-stickers-foreign-object{mask:url(#svg-mask-avatar-default)!important}.vc-more-stickers-foreign-object:hover,.vc-more-stickers-foreign-object-active{mask:url(#svg-mask-squircle)!important}.vc-more-stickers-category-wrapper{background-color:var(--background-base-low);position:absolute;overflow:hidden;width:48px;top:50px;left:0;height:calc(100% - 50px)}.vc-more-stickers-picker-content{position:absolute;margin-left:48px}.vc-more-stickers-category-scroller{overflow:hidden scroll;padding-right:0;height:100%;position:relative;box-sizing:border-box;min-height:0;flex:1 1 auto}.vc-more-stickers-category-scroller>:first-child{inset:8px;contain:layout;position:absolute}.vc-more-stickers-category-scroller>:last-child{position:absolute;pointer-events:none;min-height:0;min-width:1px;flex:0 0 auto;height:0}.vc-more-stickers-category-scroller,.vc-more-stickers-picker-content-scroller{scrollbar-width:none;scrollbar-color:var(--scrollbar-thin-thumb) var(--scrollbar-thin-track)}.vc-more-stickers-category-scroller::-webkit-scrollbar,.vc-more-stickers-picker-content-scroller::-webkit-scrollbar{width:8px;height:8px}.vc-more-stickers-category-scroller::-webkit-scrollbar-corner,.vc-more-stickers-picker-content-scroller::-webkit-scrollbar-corner{background-color:transparent}.vc-more-stickers-category-scroller::-webkit-scrollbar-thumb,.vc-more-stickers-picker-content-scroller::-webkit-scrollbar-thumb{background-clip:padding-box;border:2px solid transparent;border-radius:4px;background-color:var(--scrollbar-thin-thumb);min-height:40px}.vc-more-stickers-category-scroller::-webkit-scrollbar-track,.vc-more-stickers-picker-content-scroller::-webkit-scrollbar-track{border:2px solid var(--scrollbar-thin-track);border-color:var(--scrollbar-thin-track);background-color:var(--scrollbar-thin-track)}.vc-more-stickers-header{box-shadow:var(--elevation-low);grid-column:1/3;grid-row:1/2;min-height:1px;z-index:1;padding:0 16px 16px;display:flex;align-items:center}.vc-more-stickers-sticker-category{border-radius:4px;color:var(--interactive-icon-default);cursor:pointer;height:32px;margin-bottom:8px}.vc-more-stickers-sticker-category:hover,.vc-more-stickers-sticker-category-active{background-color:var(--background-mod-subtle)}.vc-more-stickers-clear-icon{color:var(--interactive-icon-default);cursor:pointer}.vc-more-stickers-clear-icon:hover{color:var(--interactive-icon-hover)}.vc-more-stickers-picker-content-list-wrapper{grid-row:2/2;grid-column:2/2;overflow:hidden;position:relative}.vc-more-stickers-picker-content-wrapper{display:grid;grid-template-rows:1fr auto;height:100%;position:absolute;inset:0}.vc-more-stickers-picker-content-scroller{overflow:hidden scroll;padding-right:0;height:100%;position:relative;box-sizing:border-box;min-height:0;flex:1 1 auto;flex-grow:1}.vc-more-stickers-picker-content-list-items{contain:layout;position:absolute;inset:0 0 0 8px}.vc-more-stickers-picker-content-header-wrapper{position:sticky;top:0;-ms-flex-align:center;align-items:center;background-color:var(--background-secondary-alt);box-sizing:border-box;display:flex;height:32px;padding:0 4px;z-index:1}.vc-more-stickers-picker-content-header-header{color:var(--text-default);display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:12px;font-weight:600;transition:color .125s}.vc-more-stickers-picker-content-header-header-icon{display:contents;height:100%;margin-right:8px}.vc-more-stickers-picker-content-header-svg{display:block;contain:paint}.vc-more-stickers-picker-content-header-guild-icon,.vc-more-stickers-picker-content-inspector-graphic-secondary img{text-indent:-9999px;-ms-flex-align:center;align-items:center;background-color:var(--background-primary);color:var(--text-default);display:flex;height:100%;-ms-flex-pack:center;justify-content:center;width:100%}.vc-more-stickers-picker-content-header-header-label{margin-left:8px;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;margin-right:8px}.vc-more-stickers-picker-content-header-header:hover{color:var(--interactive-icon-active);cursor:pointer}.vc-more-stickers-picker-content-row{column-gap:67px;grid-template-columns:repeat(auto-fill,96px);height:96px;position:relative;display:grid;margin-bottom:12px;overflow:hidden}.vc-more-stickers-picker-content-row-grid-sticker{width:96px;height:96px;padding:2px;cursor:pointer;border-radius:4px;position:relative}.vc-more-stickers-picker-content-row-grid-hidden-visually{clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.vc-more-stickers-picker-content-row-grid-inspected-indicator{height:100%;width:100%;position:absolute;left:0;top:0;mask:url(https://discord.com/assets/7d65d61e6cd25bf1847ec2d3e4a0144d.svg) 0 0/100% 100%;transition:background-color .08s ease-out,color .08s ease-out;z-index:-1}.vc-more-stickers-picker-content-row-grid-inspected-indicator.inspected{background-color:var(--background-accent)}.vc-more-stickers-picker-content-row-grid-sticker-node{transition:opacity .25s}.vc-more-stickers-picker-content-row-grid-asset-wrapper{position:relative;user-select:none}.vc-more-stickers-picker-content-row-grid-asset-wrapper:hover{mask:url(https://discord.com/assets/7d65d61e6cd25bf1847ec2d3e4a0144d.svg) 0 0/100% 100%}.vc-more-stickers-picker-content-row-grid-img,.vc-more-stickers-picker-content-inspector-img{text-indent:-9999px;display:block;object-fit:contain;height:100%;left:0;position:absolute;top:0;width:100%}.vc-more-stickers-picker-content-inspector{box-sizing:border-box;height:48px;width:100%;padding:0 16px;background-color:var(--background-base-lower-alt);display:flex;flex:0 0 auto;flex-direction:row;align-items:center;overflow:hidden}.vc-more-stickers-picker-content-inspector-graphic-primary{height:28px;width:28px}.vc-more-stickers-picker-content-inspector-text-wrapper{flex:1;margin-left:8px;overflow:hidden}.vc-more-stickers-picker-content-inspector-title-primary{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-family:var(--font-primary);font-size:16px;line-height:20px;font-weight:600;color:var(--text-default)}.vc-more-stickers-picker-content-inspector-title-secondary{color:var(--interactive-icon-default);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-family:var(--font-primary);font-size:12px;line-height:16px;font-weight:400}.vc-more-stickers-picker-content-inspector-graphic-secondary{height:32px;margin-left:8px;width:32px}.vc-more-stickers-picker-content-inspector-graphic-secondary svg{display:block;contain:paint}.vc-more-stickers-picker-settings-cog-container{position:fixed;transform:translateY(-100%);background-color:var(--background-base-low);padding:8px 4px 8px 8px;border-bottom-left-radius:5px}.vc-more-stickers-picker-settings-cog{cursor:pointer;border-radius:2em;background-color:var(--background-primary);padding:8px;transform:translate(-5%,10%);transition:all .15s ease-out}.vc-more-stickers-picker-settings-cog-active{border-radius:1em;background-color:var(--green-300)}.vc-more-stickers-picker-settings-cog>svg{color:var(--green-360)!important;width:100%;height:100%;transform:translateY(10%)}.vc-more-stickers-picker-settings-cog-active>svg{color:var(--white-360)!important}.vc-more-stickers-picker-content-header-collapse-icon{transition:transform .1s ease-out}.vc-more-stickers-settings{margin-top:16px}.vc-more-stickers-settings .bg{border-radius:8px;background-color:var(--background-secondary-alt);padding:16px;margin:8px 16px 16px}.vc-more-stickers-settings .sticker-pack{position:relative;text-align:center}.vc-more-stickers-settings .sticker-pack button{display:flex;position:absolute;top:0;right:0;border-radius:8px;background:var(--background-secondary-alt);width:26px;height:0;align-items:center;justify-content:center;padding:2px;opacity:0}.vc-more-stickers-settings button.show{height:26px;opacity:1;transition:opacity .25s linear}.vc-more-stickers-settings .section{margin-top:8px}.vc-more-stickers-settings .tab-bar{margin-bottom:16px}.vc-more-stickers-settings .tab-bar-item{margin-right:2px;padding-bottom:4px}.vc-more-stickers-pack-title{font-family:var(--font-primary);font-size:8pt;font-weight:600;color:var(--text-default)}.vc-message-decorations-wrapper .vc-mut-message-tag{margin-bottom:1px}.vc-mut-message-tag{margin-top:unset!important;bottom:0;top:-2px;margin-right:3px}.vc-mut-message-verified{height:1rem!important}span[class*=botTagCozy][data-moreTags-darkFg=true]>svg>path{fill:#000}span[class*=botTagCozy][data-moreTags-darkFg=false]>svg>path{fill:#fff}.vc-spotify-lyrics{padding:.375rem .5rem;text-align:center;overflow:hidden;max-height:60px;cursor:pointer}.vc-spotify-lyrics-music-note{font-size:16px;text-align:center;animation:side-to-side 2s ease-in-out infinite;color:var(--text-muted);height:18px;margin:3px}.vc-spotify-lyrics-next,.vc-spotify-lyrics-prev{color:var(--text-muted);margin-bottom:1%}@keyframes side-to-side{0%,to{transform:translate(0)}50%{transform:translate(-10px)}}.vc-spotify-lyrics-header-content{display:flex;align-items:center;width:100%}.vc-spotify-lyrics-album-image{width:100px;height:100px;margin-right:5%;border-radius:5px;cursor:pointer}.vc-spotify-lyrics-modal-line-current,.vc-spotify-lyrics-modal-line{margin:4px 0;padding:4px 8px;position:relative}.vc-spotify-lyrics-modal-line-current{font-weight:700}.vc-spotify-lyrics-modal-note{height:1lh}.vc-spotify-lyrics-modal-timestamp{color:var(--text-muted);margin-right:.5em;cursor:pointer}.vc-spotify-lyrics-modal-timestamp:hover{text-decoration:underline}.vc-spotify-lyrics-modal-no-lyrics{text-align:center;padding:1rem}.eq-tidal-lyrics{padding:.375rem .5rem;text-align:center;overflow:hidden;max-height:60px;cursor:pointer;mask-image:linear-gradient(90deg,transparent 0,#000 12px,#000 calc(100% - 12px),transparent 100%);user-select:none}.eq-tidal-lyrics-music-note{font-size:16px;text-align:center;animation:side-to-side 2s ease-in-out infinite;color:var(--text-muted);height:18px;margin:3px;filter:drop-shadow(0 0 4px rgb(0 0 0 / 15%))}.eq-tidal-lyrics-next,.eq-tidal-lyrics-prev{color:var(--text-muted);margin-bottom:1%}@keyframes side-to-side{to{transform:translate(0)}50%{transform:translate(-10px)}}.eq-tidal-lyrics-header-content{display:flex;align-items:center;width:100%}.eq-tidal-lyrics-album-image{width:100px;height:100px;margin-right:5%;border-radius:5px;cursor:pointer}.eq-tidal-lyrics-modal-line-current,.eq-tidal-lyrics-modal-line{margin:4px 0;padding:4px 8px;position:relative}.eq-tidal-lyrics-modal-line-current{font-weight:700}.eq-tidal-lyrics-modal-note{height:1lh}.eq-tidal-lyrics-modal-timestamp{color:var(--text-muted);margin-right:.5em;cursor:pointer}.eq-tidal-lyrics-modal-timestamp:hover{text-decoration:underline}.eq-tidal-lyrics-modal-no-lyrics{text-align:center;padding:1rem}.eq-tidal-lyrics-char{color:var(--text-muted);padding:0 1px;display:inline-block;transition:color .15s ease,opacity .15s ease,transform .15s ease,text-shadow .15s ease;will-change:transform,color,opacity,text-shadow}.eq-tidal-lyrics-char-active{color:var(--brand-experiment);font-weight:600;text-shadow:0 0 .25em currentcolor}.eq-tidal-lyrics-word{color:var(--text-muted);border-radius:4px;padding:0 1px;margin-right:2px;border:1px solid transparent;display:inline-block;transition:color .15s ease,opacity .15s ease,background-color .15s ease,box-shadow .15s ease,transform .15s ease;will-change:transform,color,opacity,background-color,box-shadow}.eq-tidal-lyrics-word:last-child{margin-right:0}.eq-tidal-lyrics-word-active{color:var(--brand-experiment);background:none;box-shadow:none;text-shadow:0 0 .25em currentcolor}.eq-tidal-lyrics-current,.eq-tidal-lyrics-next,.eq-tidal-lyrics-prev{transition:color .2s ease,opacity .2s ease,transform .2s ease,text-shadow .2s ease}.eq-tidal-lyrics-current{font-weight:600;text-shadow:0 0 .35em rgb(0 0 0 / 15%)}.eq-tidal-lyrics-next{opacity:.85}.eq-tidal-lyrics-prev{opacity:.65}.eq-tidal-lyrics-current .eq-tidal-lyrics-char,.eq-tidal-lyrics-current .eq-tidal-lyrics-word{color:var(--text-default)}.eq-tidal-lyrics-next .eq-tidal-lyrics-char,.eq-tidal-lyrics-prev .eq-tidal-lyrics-char,.eq-tidal-lyrics-next .eq-tidal-lyrics-word,.eq-tidal-lyrics-prev .eq-tidal-lyrics-word{color:var(--text-muted)}@media(prefers-reduced-motion:reduce){.eq-tidal-lyrics-current,.eq-tidal-lyrics-next,.eq-tidal-lyrics-prev,.eq-tidal-lyrics-char,.eq-tidal-lyrics-word{transition:none;text-shadow:none}.eq-tidal-lyrics-char-active,.eq-tidal-lyrics-word-active{transform:none}}#vc-spotify-player{padding:12px;background:var(--background-base-low);margin:0;border-top-left-radius:10px;border-top-right-radius:10px;border-bottom:1px solid var(--border-subtle);--vc-spotify-green: var(--spotify, #1db954);--vc-spotify-green-90: color-mix(in hsl, var(--vc-spotify-green), transparent 90%);--vc-spotify-green-80: color-mix(in hsl, var(--vc-spotify-green), transparent 80%)}.vc-spotify-button{margin:0 2px;border-radius:var(--radius-sm);background:none;color:var(--interactive-icon-default);padding:0;width:32px;height:32px;display:flex;justify-content:center;align-items:center}.vc-spotify-button:hover{color:var(--interactive-icon-hover);background-color:var(--background-mod-strong)}.vc-spotify-button-icon{height:24px;width:24px}.vc-spotify-shuffle .vc-spotify-button-icon,.vc-spotify-repeat .vc-spotify-button-icon{width:22px;height:22px}.vc-spotify-repeat-context,.vc-spotify-repeat-track,.vc-spotify-shuffle-on{background-color:var(--vc-spotify-green-90)}.vc-spotify-repeat-context:hover,.vc-spotify-repeat-track:hover,.vc-spotify-shuffle-on:hover{background-color:var(--vc-spotify-green-80)}.vc-spotify-tooltip-text{overflow:hidden;white-space:nowrap;padding-right:.2em;max-width:100%;margin:unset}.vc-spotify-repeat-1{font-size:70%;position:absolute;top:50%;left:50%;transform:translate(-55%,-50%)}.vc-spotify-button-row{justify-content:center;margin-top:14px}.vc-spotify-secondary-song-info{font-size:12px}.vc-spotify-song-info-prefix{display:none}#vc-spotify-info-wrapper{display:flex;flex-direction:row;align-items:center;height:3em;gap:.5em}#vc-spotify-album-image{height:90%;object-fit:contain;border-radius:3px;transition:filter .2s}#vc-spotify-album-image:hover{filter:brightness(1.2);cursor:pointer}#vc-spotify-album-expanded-wrapper #vc-spotify-album-image{width:100%;object-fit:contain}#vc-spotify-titles{display:flex;flex-direction:column;padding:.2rem;align-items:flex-start;place-content:flex-start center;overflow:hidden}#vc-spotify-song-title{color:var(--text-strong);font-size:14px;font-weight:600}.vc-spotify-ellipoverflow{white-space:nowrap;overflow:hidden;width:100%;text-overflow:ellipsis}.vc-spotify-artist,.vc-spotify-album{font-size:12px;text-decoration:none;color:var(--text-strong)}.vc-spotify-comma{color:var(--text-default)}.vc-spotify-artist[role=link]:hover,#vc-spotify-album-title[role=link]:hover,#vc-spotify-song-title[role=link]:hover{text-decoration:underline;cursor:pointer}#vc-spotify-progress-bar{position:relative;color:var(--text-default);width:100%;margin:.5em 0 5px}#vc-spotify-progress-bar>[class*=slider]{flex-grow:1;width:100%;padding:0!important}#vc-spotify-progress-bar>[class*=slider] [class*=bar]{height:3px!important;top:calc(12px - 4px / 2 + var(--bar-offset))}#vc-spotify-progress-bar>[class*=slider] [class*=barFill]{background-color:var(--interactive-icon-active)}#vc-spotify-progress-bar>[class*=slider]:hover [class*=barFill]{background-color:var(--vc-spotify-green)}#vc-spotify-progress-bar>[class*=slider] [class*=grabber]{height:16px!important;width:16px!important;margin-top:calc(17px/-2 + var(--bar-offset)/2);margin-left:-.5px;background-color:var(--interactive-icon-active);border-color:var(--interactive-icon-default);color:var(--interactive-icon-default);opacity:0;transition:opacity .1s}#vc-spotify-progress-bar:hover>[class*=slider] [class*=grabber]{opacity:1}#vc-spotify-progress-text{margin:0}.vc-spotify-progress-time{font-size:12px;top:10px;position:absolute;margin-top:8px;font-family:var(--font-code)}.vc-spotify-time-left{left:0}.vc-spotify-time-right{right:0}.vc-spotify-fallback{padding:.5em;color:var(--text-default)}#eq-tdl-player{padding:12px;background:var(--background-base-low);margin:0;border-top-left-radius:10px;border-top-right-radius:10px;--eq-tdl-slider-gradient: linear-gradient(to right, #f03 80%, #ff2791 100%);--eq-tdl-slider-grabber: #f03;--eq-tdl-red-90: color-mix(in hsl, var(--eq-tdl-slider-grabber), transparent 90%);--eq-tdl-red-80: color-mix(in hsl, var(--eq-tdl-slider-grabber), transparent 80%)}.eq-tdl-song-info-prefix{display:none}.eq-tdl-artist,.eq-tdl-album{color:var(--text-strong)}.eq-tdl-secondary-song-info{font-size:12px}#eq-tdl-progress-bar{position:relative;color:var(--text-default);width:100%;margin:.5em 0 5px}#eq-tdl-progress-bar>[class*=slider]{flex-grow:1;width:100%;padding:0!important}#eq-tdl-progress-bar>[class*=slider] [class*=bar]{height:3px!important;top:calc(12px - 4px / 2 + var(--bar-offset))}#eq-tdl-progress-bar>[class*=slider] [class*=barFill]{background-image:var(--eq-tdl-slider-gradient)}#eq-tdl-progress-bar>[class*=slider]:hover [class*=barFill]{background-image:var(--eq-tdl-slider-gradient)}#eq-tdl-progress-bar>[class*=slider] [class*=grabber]{background-color:var(--eq-tdl-slider-grabber);width:12px!important;height:12px!important;margin-top:calc(13px/-2 + var(--bar-offset)/2);margin-left:-.5px;border:unset;color:var(--interactive-icon-default);opacity:0;transition:opacity .1s}#eq-tdl-progress-bar:hover>[class*=slider] [class*=grabber]{opacity:1}.eq-tdl-progress-time{margin-top:8px;font-family:var(--font-code);font-size:12px;top:10px;position:absolute}.eq-tdl-button-row{justify-content:center;margin-top:14px}.eq-tdl-button{margin:0 2px;border-radius:var(--radius-sm);background:none;color:var(--interactive-icon-default);padding:0;width:32px;height:32px;display:flex;justify-content:center;align-items:center;position:relative}.eq-tdl-button:hover{color:var(--interactive-icon-hover);background-color:var(--background-mod-strong)}.eq-tdl-button svg{height:24px;width:24px}[class*=shuffle]>svg,[class*=repeat]>svg{width:22px;height:22px}.eq-tdl-button svg path{width:100%;height:100%}.eq-tdl-repeat-context,.eq-tdl-repeat-track,.eq-tdl-shuffle-on{background-color:var(--eq-tdl-red-90)}.eq-tdl-repeat-context:hover,.eq-tdl-repeat-track:hover,.eq-tdl-shuffle-on:hover{background-color:var(--eq-tdl-red-80)}.eq-tdl-repeat-1{font-size:70%;position:absolute;top:50%;left:50%;transform:translate(-55%,-50%)}#eq-tdl-info-wrapper{display:flex;flex-direction:row;align-items:center;height:3em;gap:.5em}#eq-tdl-info-wrapper img{height:90%;object-fit:contain}#eq-tdl-album-expanded-wrapper img{width:100%;object-fit:contain}#eq-tdl-titles{display:flex;flex-direction:column;padding:.2rem;align-items:flex-start;place-content:flex-start center;overflow:hidden}#eq-tdl-song-title{color:var(--text-strong);font-size:14px;font-weight:600}.eq-tdl-ellipoverflow{white-space:nowrap;overflow:hidden;width:100%;text-overflow:ellipsis}.eq-tdl-artist[role=link]:hover,#eq-tdl-album-title[role=link]:hover,#eq-tdl-song-title[role=link]:hover{text-decoration:underline;cursor:pointer}#eq-tdl-album-image{border-radius:3px;transition:filter .2s}#eq-tdl-album-image:hover{filter:brightness(1.2);cursor:pointer}#eq-tdl-progress-text{margin:0}.eq-tdl-time-left{left:0}.eq-tdl-time-right{right:0}.vc-new-plugins-header{align-items:flex-start;position:relative;padding:16px 16px 0 24px}.vc-new-plugins-header-content{display:flex;flex-direction:column;gap:8px;flex:1}.vc-new-plugins-header-trailing{position:absolute;top:8px;right:8px}.vc-new-plugins-title{color:var(--text-strong);padding-right:32px}.vc-new-plugins-description{color:var(--text-subtle);padding-right:60px}.vc-new-plugins-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.vc-new-plugins-footer{width:100%;align-items:center;flex-direction:row-reverse;gap:16px}.vc-new-plugins-restart-list{padding-left:1.25em;margin-top:8px}.vc-new-plugins-restart-list li{list-style:disc}.vc-profile-presets-tab-heading{margin-bottom:16px}.vc-profile-presets-section-switch{display:flex;gap:8px;margin-bottom:16px}.vc-profile-presets-guild-picker{max-width:300px;margin-bottom:16px}.vc-profile-presets-empty-state{color:var(--text-muted)}.vc-profile-presets-section{margin-bottom:20px;padding:0;background-color:transparent;max-width:660px;width:100%;min-width:0;align-self:flex-start}.vc-profile-presets-section-server{max-width:660px}.vc-profile-presets-heading{margin-bottom:8px;font-size:16px;font-weight:600}.vc-profile-presets-text{margin-bottom:8px}.vc-profile-presets-text-input{width:100%;max-width:500px;min-width:0;height:38px;padding:1px 12px;background:transparent;color:var(--text-normal);border:none;outline:none;box-shadow:none;box-sizing:border-box;font-size:16px;line-height:normal}.vc-profile-presets-text-input input{width:100%;height:38px;padding:1px 12px;background:transparent;color:var(--text-normal);border:none;outline:none;box-shadow:none;box-sizing:border-box;font-size:16px;line-height:normal}.vc-profile-presets-text-input input::placeholder{color:var(--text-muted)}.vc-profile-presets-search{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.vc-profile-presets-search-button{min-width:120px}.vc-profile-presets-pagination{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:12px}.vc-profile-presets-section-server .vc-profile-presets-pagination{width:300px;max-width:100%}.vc-profile-presets-page{display:flex;align-items:center;gap:4px}.vc-profile-presets-page-of{font-size:14px;color:var(--text-default);font-weight:500}.vc-profile-presets-import{display:flex;gap:8px;margin-top:12px;margin-bottom:16px}.vc-profile-presets-block{margin:16px 0;border:none;border-top:1px solid var(--background-modifier-accent)}.vc-profile-presets-avatar-url{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.vc-profile-presets-rename{min-width:0;flex:1}.vc-profile-presets-updated{display:flex;align-items:center;gap:8px;flex-shrink:0}.vc-profile-presets-list-container{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;padding:12px;background-color:var(--background-secondary);border-radius:8px;border:2px solid var(--background-modifier-accent);min-width:0;width:100%;max-width:660px;align-self:flex-start}.vc-profile-presets-row{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background-color:var(--background-primary);border-radius:6px;cursor:pointer;transition:all .15s ease;border:2px solid transparent;outline:none;min-width:0;width:100%;max-width:300px;align-self:flex-start}.vc-profile-presets-row:hover{background-color:var(--background-modifier-hover)!important;border-color:var(--background-modifier-accent)!important}.vc-profile-presets-row:focus-visible{border-color:var(--brand-experiment)!important;box-shadow:0 0 0 2px var(--brand-experiment-30a)}.vc-profile-presets-row.selected{background-color:var(--background-modifier-selected)}.vc-profile-presets-avatar{border-radius:50%;border:2px solid var(--background-tertiary);flex-shrink:0}.vc-profile-presets-name{font-size:15px;font-weight:600;color:var(--header-primary);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vc-profile-presets-timestamp{font-size:12px;color:var(--text-default);font-weight:500;opacity:.8}.vc-profile-presets-menu-icon{opacity:.7;cursor:pointer;transition:opacity .15s ease}.vc-profile-presets-menu-icon:hover{opacity:1}.vc-profile-presets-page-input{width:40px;text-align:center;padding:4px;background-color:var(--background-secondary);border:2px solid var(--background-modifier-accent);border-radius:4px;color:var(--text-default)}.questify-setting{border-radius:3px;border-left:3px solid var(--text-strong);padding:8px;user-select:text}.questify-settings-divider-small{margin:10px 0}.questify-settings-divider-medium{margin:15px 0}.questify-settings-divider-large{margin:20px 0}.questify-dimmed-settings-item{filter:brightness(.5)}.questify-setting-header{font-size:19px;font-weight:600;margin-bottom:10px}.questify-setting-subheader{font-size:16px;font-weight:500;margin:15px 0 5px}.questify-setting-paragraph{font-size:14px;font-weight:400;margin:5px 0;line-height:normal}.questify-setting-description{margin-bottom:15px;line-height:normal}.questify-setting-description-multi-paragraph{line-height:.2em}[class*=clickTrapContainer]>div>.questify-settings-tooltip{margin-right:4px}.questify-settings-tooltip-content{text-align:justify;white-space:pre-line}.questify-setting-switch{margin-bottom:5px}.questify-setting-switch [class*=container_] [class*=labelContainer_] label{font-size:16px;font-weight:500}.questify-setting-subtle-switch [class*=container_] [class*=labelContainer_] label,.questify-setting-switch [class*=container_] [class*=labelContainer_] div{font-size:14px;font-weight:400}.questify-notice-card{margin:12px 0;padding:12px;border-radius:4px;line-height:.2em}.questify-notice-card-red{border-left:3px solid var(--status-danger);background-color:color-mix(in srgb,var(--status-danger) 12%,transparent)}.questify-notice-card-blue{border-left:3px solid var(--background-brand);background-color:color-mix(in srgb,var(--background-brand) 12%,transparent)}.questify-notice-card-solo{margin:12px 0 0}.questify-settings-button>button[data-mana-component=button]{border-radius:3px}.questify-settings-button>button[data-mana-component=button] span{font-size:14px}.questify-setting [data-floating-ui-focusable][class*=selectDropdown],.questify-setting [data-mana-component=select-input-field]>[class*=selectField],.questify-setting [data-mana-component=select-input-field] [class*=tagList]>div{border-radius:3px}.questify-inline-volume-slider{margin-top:0}.questify-sound-preview-button{color:var(--interactive-normal);display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:0;border-radius:4px;background:transparent;cursor:pointer;flex:0 0 auto}.questify-sound-preview-button:hover,.questify-sound-preview-button.questify-playing-audio{background:var(--background-modifier-hover)}.questify-sound-preview-button:hover{color:var(--interactive-active)}.questify-sound-preview-button.questify-playing-audio{color:var(--red-500)}.questify-sound-preview-button:disabled{cursor:default}.questify-sound-select [class*=selectedIcon]{display:none}.questify-no-top-margin,.questify-margin-top-0{margin-top:0}.questify-margin-top-1{margin-top:1px}.questify-margin-top-2{margin-top:2px}.questify-margin-top-3{margin-top:3px}.questify-margin-top-4{margin-top:4px}.questify-margin-top-5{margin-top:5px}.questify-margin-top-6{margin-top:6px}.questify-margin-top-7{margin-top:7px}.questify-margin-top-8{margin-top:8px}.questify-margin-top-9{margin-top:9px}.questify-margin-top-10{margin-top:10px}.questify-margin-top-11{margin-top:11px}.questify-margin-top-12{margin-top:12px}.questify-margin-top-13{margin-top:13px}.questify-margin-top-14{margin-top:14px}.questify-margin-top-15{margin-top:15px}.questify-no-bottom-margin,.questify-margin-bottom-0{margin-bottom:0}.questify-margin-bottom-1{margin-bottom:1px}.questify-margin-bottom-2{margin-bottom:2px}.questify-margin-bottom-3{margin-bottom:3px}.questify-margin-bottom-4{margin-bottom:4px}.questify-margin-bottom-5{margin-bottom:5px}.questify-margin-bottom-6{margin-bottom:6px}.questify-margin-bottom-7{margin-bottom:7px}.questify-margin-bottom-8{margin-bottom:8px}.questify-margin-bottom-9{margin-bottom:9px}.questify-margin-bottom-10{margin-bottom:10px}.questify-margin-bottom-11{margin-bottom:11px}.questify-margin-bottom-12{margin-bottom:12px}.questify-margin-bottom-13{margin-bottom:13px}.questify-margin-bottom-14{margin-bottom:14px}.questify-margin-bottom-15{margin-bottom:15px}.questify-settings-row{margin-top:4px;display:flex;gap:4px;align-items:flex-start}.questify-settings-row-item{flex:1 1 0;min-width:0}.questify-settings-row-item-content{flex:0 0 auto}.questify-settings-slider-control-container{margin:4px 0 0;background-color:var(--input-background-default, var(--input-background));padding:0 12px 0 4px;border-radius:3px;border:1px solid var(--border-normal);min-height:40px;box-sizing:border-box;display:flex;align-items:center}.questify-settings-slider-control{margin:0 4px;width:100%}.questify-sound-select-row-item{flex:0 1 67%}.questify-volume-slider-row-item{flex:0 1 33%}.questify-quest-tile-gradient-row-item{flex:0 1 42%}.questify-quest-tile-preload-row-item{flex:0 1 58%}.questify-quest-tile-color-row{align-items:stretch}.questify-quest-tile-color-row-item{display:flex;flex-direction:column}.questify-settings-color-picker.questify-quest-tile-color-picker{display:flex;height:38px;min-height:38px;min-width:0;margin-top:5px}.questify-settings-color-picker.questify-quest-tile-color-picker>[class*=colorSwatch]{display:flex;width:100%;height:100%;min-height:38px}.questify-settings-color-picker.questify-quest-tile-color-picker [class*=swatch],.questify-settings-color-picker.questify-quest-tile-color-picker [class*=Swatch]{width:100%;height:100%;min-height:38px;border-radius:3px}.questify-settings-color-picker.questify-disabled-color-picker{filter:brightness(.5);pointer-events:none}.questify-quest-tile-color-button{margin-top:6px}.questify-settings-color-picker.questify-quest-button-color-picker{display:flex;height:38px;min-height:38px;min-width:0;margin-top:5px}.questify-settings-color-picker.questify-quest-button-color-picker>[class*=colorSwatch]{display:flex;width:100%;height:100%;min-height:38px}.questify-settings-color-picker.questify-quest-button-color-picker [class*=swatch],.questify-settings-color-picker.questify-quest-button-color-picker [class*=Swatch]{width:100%;height:100%;min-height:38px;border-radius:3px}.vc-random-voice-record{display:flex;flex-direction:column;gap:8px}.vc-random-voice-keybind{color:"var(--text-muted)"}.vc-random-voice-recording{display:flex;gap:8px;align-items:center}.vc-rdms-background{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:168px;height:95px;border-radius:10px;background:var(--background-floating)}.vc-rdms-avatar{width:48px;height:48px;border-radius:50%;background-size:cover}.vc-rdms-name{margin-top:8px;color:var(--text-strong);font-size:12px;max-width:152px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.vc-rdms-page-indicator-container{display:flex;gap:8px;align-items:center;justify-content:center;margin-top:10px}.vc-rdms-page-indicator{width:8px;height:8px;border-radius:50%}.vc-rdms-overlay-container{display:grid;place-items:center;position:fixed;inset:0;background:#00000061;backdrop-filter:blur(2px);pointer-events:none}.vc-rdms-cards-container{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;padding:12px 16px;border-radius:12px;background:color-mix(in oklab,var(--background-floating) 85%,transparent);backdrop-filter:saturate(120%);box-shadow:0 6px 24px #00000040}.vc-rdms-cards{display:flex;gap:12px;align-items:center;justify-content:center}.vc-remix-settings-color-swatch-row{display:flex;flex-direction:row;width:100%;align-items:center}.vc-remix-settings-color-swatch-row>span{display:block;flex:1;overflow:hidden;margin-top:0;margin-bottom:0;color:var(--text-strong);line-height:24px;font-size:16px;font-weight:500;overflow-wrap:break-word}a.vc-magnet-link{background:var(--mention-background);border-radius:3px;color:var(--mention-foreground);font-weight:var(--font-weight-medium);padding:0 2px;unicode-bidi:plaintext;display:flex;flex-direction:row;align-items:center;width:max-content;&:hover{text-decoration:none}}a.vc-magnet-link svg{height:1em;vertical-align:middle;width:1em;margin:0 var(--space-4);scale:.9}.vc-scheduled-msg-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px;gap:16px}.vc-scheduled-msg-modal-title{flex:1;margin:0!important;color:var(--text-strong);font-size:20px;font-weight:600}.vc-scheduled-msg-modal-content{padding:0 16px 16px}.vc-scheduled-msg-modal-footer{display:flex;flex-direction:row-reverse;justify-content:flex-start;align-items:center;gap:8px;padding:16px}.vc-scheduled-msg-channel-info{display:flex;align-items:center;gap:10px;margin-bottom:16px;padding:12px;background:var(--background-secondary);border-radius:8px}.vc-scheduled-msg-channel-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0}.theme-dark .vc-scheduled-msg-channel-text{color:#dbdee1!important}.theme-dark .vc-scheduled-msg-channel-text strong{color:#f2f3f5!important}.theme-light .vc-scheduled-msg-channel-text{color:#313338!important}.theme-light .vc-scheduled-msg-channel-text strong{color:#060607!important}.vc-scheduled-msg-field-label{margin:16px 0 8px!important;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.theme-dark .vc-scheduled-msg-field-label{color:#b5bac1!important}.theme-light .vc-scheduled-msg-field-label{color:#4e5058!important}.vc-scheduled-msg-schedule-type-buttons{display:flex;gap:8px}.vc-scheduled-msg-datetime-input{width:100%;padding:10px;border:none;border-radius:3px;background:var(--input-background-default, var(--input-background));font-size:16px}.vc-scheduled-msg-datetime-input:focus{outline:none}.theme-dark .vc-scheduled-msg-datetime-input{color:#dbdee1!important;color-scheme:dark}.theme-dark .vc-scheduled-msg-datetime-input::-webkit-calendar-picker-indicator{filter:invert(1)}.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit,.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-fields-wrapper,.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-text,.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-month-field,.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-day-field,.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-year-field,.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-hour-field,.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-minute-field,.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-ampm-field{color:#dbdee1!important}.theme-light .vc-scheduled-msg-datetime-input{color:#313338!important;color-scheme:light}.theme-light .vc-scheduled-msg-datetime-input::-webkit-calendar-picker-indicator{filter:none}.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit,.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-fields-wrapper,.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-text,.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-month-field,.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-day-field,.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-year-field,.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-hour-field,.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-minute-field,.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-ampm-field{color:#313338!important}.vc-scheduled-msg-error{display:flex;align-items:center;gap:10px;margin-top:16px;padding:12px;background:var(--background-feedback-critical);border-radius:5px;color:var(--text-default);font-size:14px}.vc-scheduled-msg-error svg{flex-shrink:0;color:var(--status-danger)}.vc-scheduled-msg-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 32px;color:var(--text-muted)}.vc-scheduled-msg-empty-state svg{opacity:.5}.vc-scheduled-msg-message-list{display:flex;flex-direction:column;gap:12px;max-height:400px;overflow-y:auto}.vc-scheduled-msg-message-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px;background:var(--background-secondary);border-radius:8px}.vc-scheduled-msg-message-info{flex:1;min-width:0}.vc-scheduled-msg-message-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.vc-scheduled-msg-message-avatar{width:20px;height:20px;border-radius:50%;object-fit:cover;flex-shrink:0}.vc-scheduled-msg-message-channel{font-weight:600;color:var(--text-strong)}.vc-scheduled-msg-message-time{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-muted);margin-bottom:8px}.vc-scheduled-msg-message-content{overflow-wrap:break-word;white-space:pre-wrap}.theme-dark .vc-scheduled-msg-message-content{color:#dbdee1!important}.theme-light .vc-scheduled-msg-message-content{color:#313338!important}.vc-scheduled-msg-phantom{opacity:.5!important}.vc-scheduled-msg-phantom:hover{opacity:.7!important}.vc-scheduled-msg-accessory{display:flex;align-items:center;gap:6px;margin-top:4px;padding:4px 8px;background:var(--background-secondary);border-radius:4px;font-size:12px;color:var(--text-muted);pointer-events:none;width:fit-content}#vc-searchbutton-container{width:100%;display:flex;align-items:center;justify-content:center;margin-bottom:8px}#vc-searchbutton{display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:var(--background-primary);height:48px;width:48px;border-radius:100%;transition:border-radius .15s ease-out,background-color .15s ease-out}#vc-searchbutton-icon{color:var(--text-default)}#vc-searchbutton:hover{border-radius:34%;background-color:var(--green-360);cursor:pointer}#vc-searchbutton:hover #vc-searchbutton-icon{color:var(--white-500)}.vc-sbic-badge-settings{display:flex;gap:5px;flex-direction:row}.vc-sbic-image-container{position:relative;transition:.15s}.vc-sbic-image-container img{width:25px;height:25px;cursor:pointer}.vc-sbic-disabled{opacity:.5;scale:.95}.vc-sbic-settings-avatar{width:50px;height:50px;border-radius:50%;margin-right:12px}.vc-sbic-settings-username{font-size:22px;color:#fff;margin-right:5px}.vc-sbic-badge-row{display:inline-flex;justify-content:center;align-items:center;vertical-align:top;position:relative;margin-top:6px!important;margin-left:-3px!important}.vc-sric-indicator{display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;height:16px;padding:0 6px 0 4px;background:var(--background-mod-strong);border-radius:4px;font-size:.72rem;font-weight:600;line-height:16px;color:var(--text-default);cursor:default}.vc-sric-icon{width:14px;height:14px;flex-shrink:0}.vc-sric-name{white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.vc-sric-indicator-compact{padding:0 2px}.vc-sric-indicator-compact .vc-sric-name{display:none}.vc-songspotlight-mono{font-family:var(--font-code)}.vc-songspotlight-icon{color:var(--interactive-icon-default)}.vc-songspotlight-sub{color:var(--text-muted)}.vc-songspotlight-errored{color:var(--text-feedback-critical)}.vc-songspotlight-header{color:var(--text-strong)}.vc-songspotlight-clamped{display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}.vc-songspotlight-icon-button{display:flex;justify-content:center;align-items:center;width:28px;height:28px;background:var(--opacity-20);border:1px solid var(--border-strong);border-radius:64px;transition-property:opacity,background;transition-duration:.18s;&:disabled{cursor:unset;opacity:.5}&[data-toggled=true]{background:var(--opacity-28)}&:enabled:hover{background:var(--opacity-32)}}.vc-songspotlight-icon-spinner{>span{gap:2px;>span{width:5px!important;height:5px!important;margin-right:0!important}}}.vc-songspotlight-explicit-tag{background:var(--opacity-40);border-radius:4px;padding:0 5px;flex-shrink:0}.vc-songspotlight-editable-song-container{position:relative;&[data-dragging=true]{opacity:.5}&[data-insert=top]:before,&[data-insert=bottom]:after{content:"";position:absolute;background:var(--green-360);inset-inline:-8px 0;height:2px;border-radius:2px;z-index:1}&[data-insert=top]:before{top:-4px}&[data-insert=bottom]:after{bottom:-4px}}.vc-songspotlight-editable-song{background:var(--background-surface-higher);padding:10px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;transition:.18s background;isolation:isolate;&:hover{background:var(--background-surface-highest)}}.vc-songspotlight-add-song{height:28px}.vc-songspotlight-empty-song{background:var(--background-base-low);height:30px;border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.vc-songspotlight-twin-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.vc-songspotlight-songs-container{--base-height: 68px;--list-height: calc(var(--base-height) + 80px);--number-size: 32px;display:flex;flex-direction:column;gap:6px;&.vc-songspotlight-songs-container-sidebar{margin:12px 16px 0;padding:12px}}.vc-songspotlight-songs-more{cursor:pointer;margin-right:4px}.vc-songspotlight-widget-container{--base-height: 88px;--list-height: calc(var(--base-height) + 120px);--number-size: 38px}.vc-songspotlight-song-container{--spread: 50px;--time: .2s;position:relative;height:var(--base-height);flex-shrink:0;&.vc-songspotlight-list-song-container{height:var(--list-height)}&:after{--anim-duration: 1.8s;--anim-offset: mod(calc(.15s * var(--index)), var(--anim-duration));content:"";position:absolute;inset:0;border-radius:inherit;background-image:linear-gradient(90deg,var(--opacity-12) 0,var(--opacity-32) var(--spread),var(--opacity-12) calc(var(--spread) * 2));background-size:600% 200%;animation:songspotlight-skeleton-shine var(--anim-duration) var(--anim-offset) infinite linear backwards;pointer-events:none;transition:var(--time) opacity}&:has(>.vc-songspotlight-song):after{opacity:0}}.user-profile-sidebar .vc-songspotlight-song-container{padding:8px}.vc-songspotlight-song{height:100%;animation:songspotlight-fade-in var(--time) linear forwards;border-radius:inherit}.vc-songspotlight-song-grid{height:var(--base-height);display:grid;grid-template-columns:1fr auto;grid-template-rows:1fr auto;gap:8px;border-radius:inherit}.vc-songspotlight-song-core{grid-column:1;grid-row:1 / 3;border-radius:inherit;min-width:0}.vc-songspotlight-song-cover{position:relative;height:100%;aspect-ratio:1 / 1;border-radius:inherit;background:var(--background-mod-muted);flex-shrink:0;box-shadow:0 3px 12px #00000029;transition:.18s transform;&:hover{transform:scale(1.03)}&:active{transform:scale(.97)}>a{border-radius:inherit;>img{position:relative;border-radius:inherit;width:100%;height:100%}}&:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;transition:.18s background}&:hover:after{background:#0003}}.vc-songspotlight-song-service{grid-column:2;grid-row:1 / 3}.vc-songspotlight-song-player{grid-column:1 / 3;grid-row:2;transition:.18s opacity;&[data-idle=true]{opacity:0}}.vc-songspotlight-song:hover .vc-songspotlight-song-player{opacity:1}.vc-songspotlight-song-progress-container{position:relative;padding:2px}.vc-songspotlight-song-progress{position:absolute;inset:0;color:var(--icon-default);pointer-events:none;>circle{will-change:stroke-dashoffset;&[data-empty=true]{transition:.18s stroke-dashoffset}}}.vc-songspotlight-song-divider{width:100%;background:var(--user-profile-border);height:1px;margin-top:6px}.vc-songspotlight-song-list{flex:1;padding:6px 0}.vc-songspotlight-song-entry{padding-right:8px;border-radius:var(--radius-sm);transition-property:opacity,background,transform;transition-duration:.18s;cursor:pointer;&[aria-disabled=true]{cursor:unset;opacity:.5}&[aria-disabled=false][data-playing=true]{background:var(--opacity-12)}&[aria-disabled=false]:hover{background:var(--opacity-20)}}.vc-songspotlight-song-entry-number{width:var(--number-size);text-align:center;flex-shrink:0}@keyframes songspotlight-skeleton-shine{0%{background-position:calc(var(--spread) * -2) 0}30%,to{background-position:calc(500px + var(--spread) * 2) 0}}@keyframes songspotlight-fade-in{0%{opacity:0}}.vc-sp-disabled{opacity:.5}.vc-sp-icon{transform:rotate(45deg);width:16px;height:16px;color:var(--interactive-normal);opacity:0}[data-menu-item=true]:hover .vc-sp-icon{opacity:1}[data-menu-item=true]:hover .vc-sp-icon:hover{color:var(--status-danger)}[data-menu-item=true][id^=sp-custom-status-submenu] img.emoji{width:16px!important;height:16px!important}.vc-streaks-badge{display:inline-flex;align-items:center;gap:2px;margin-left:4px;vertical-align:middle}.vc-streaks-count{font-size:12px;font-weight:700;line-height:1}[data-tab-id=ThemeLibrary]:before{-webkit-mask:var(--si-widget) center/contain no-repeat!important;mask:var(--si-widget) center/contain no-repeat!important}.vce-theme-info{padding:.5rem;margin-bottom:10px;display:flex;align-items:center;justify-content:flex-start;flex-direction:row;overflow:hidden;transition:all .3s ease}.vce-theme-info-preview{max-width:100%;max-height:100%;border-radius:5px;margin:.5rem}.vce-theme-info-preview img{width:1080px!important;height:1920px!important;object-fit:cover}.vce-theme-text-title{padding:.5rem;padding-bottom:0}.vce-theme-text-description{padding:.5rem;padding-top:0;padding-bottom:.25rem}.vce-theme-info-tag{background:var(--background-secondary-alt);color:var(--text-strong);border:2px solid var(--background-base-low);padding:.25rem .5rem;display:inline-block;border-radius:5px;margin-right:.5rem;margin-bottom:.5rem}.vce-text-input{display:inline-block!important;color:var(--text-default)!important;font-size:16px!important;padding:.5em;border:2px solid var(--background-base-low);line-height:1.2;max-height:unset}.vce-likes-icon{overflow:visible;margin-right:.5rem;transition:fill .3s ease}.vce-button-grid{display:grid;grid-template-columns:1fr;gap:10px}.vce-warning-button{display:flex;width:100%}.vce-search-grid{display:grid;height:40px;gap:10px;grid-template-columns:1fr 200px}.vce-button{white-space:normal;display:inline-flex;align-items:center;justify-content:center}.vce-overwrite-modal{border:1px solid var(--input-border-default, var(--input-border));border-radius:8px;padding:.5em}.vce-image-paste{border-radius:8px;border:3px dashed var(--input-border-default, var(--input-border));background-color:var(--background-secondary-alt);padding:20px;text-align:center;position:relative;cursor:pointer;margin-top:20px;transition:border .3s ease}.vce-image-paste:hover{border:3px dashed var(--brand-500);transition:border .3s ease}.vce-styled-list{list-style-type:none;padding:0;margin:0}.vce-styled-list li{padding:10px 0;border-bottom:thin solid var(--input-border-default, var(--input-border))}.vce-styled-list li:last-child{border-bottom:none}.vce-divider-border{border-bottom:thin solid var(--input-border-default, var(--input-border));padding:10px 0;width:100%}.timezone-profile-item{position:absolute;right:0;bottom:0;margin:28px 16px 4px;background-color:#0000007f;border-radius:4px;padding:.25rem .5rem;font-size:.75rem;color:var(--text-default)}[class*=topSection] .timezone-profile-item{margin:16px}.timezone-message-item{margin-left:4px}.vc-timezone-modal-header{place-content:center;justify-content:space-between}.vc-timezone-modal-header h1{margin:0}.vc-timezone-modal-content{padding:1em}.vc-timezone-modal-footer{gap:16px}.timezone-tooltip{max-width:none!important;white-space:nowrap}.timezone-local-text{opacity:.7;font-style:italic}:root{--vc-toast-notifications-background-color: var(--background-base-lower-alt);--vc-toast-notifications-text-color: var(--text-default);--vc-toast-notifications-border-radius: 6px;--vc-toast-notifications-width: fit-content;--vc-toast-notifications-min-width: 25rem;--vc-toast-notifications-max-width: 50%;--vc-toast-notifications-min-height: 10vh;--vc-toast-notifications-max-height: 50%;--vc-toast-notifications-padding: 1rem;--vc-toast-notifications-title-color: var(--text-strong);--vc-toast-notifications-title-font-size: 1rem;--vc-toast-notifications-title-font-weight: 600;--vc-toast-notifications-title-line-height: 1.25rem;--vc-toast-notifications-close-button-color: var(--interactive-icon-default);--vc-toast-notifications-close-button-hover-color: var(--interactive-icon-hover);--vc-toast-notifications-close-button-opacity: .5;--vc-toast-notifications-close-button-hover-opacity: 1;--vc-toast-notifications-image-height: 4rem;--vc-toast-notifications-image-width: var(--vc-toast-notifications-image-height);--vc-toast-notifications-image-border-radius: 6px;--vc-toast-notifications-progressbar-height: .25rem;--vc-toast-notifications-progressbar-color: var(--brand-500);--vc-toast-notifications-position-offset: 1rem}#vc-toast-notifications-container{position:fixed;z-index:2147483647;display:flex;gap:.75rem;pointer-events:none;max-height:calc(100vh - var(--vc-toast-notifications-position-offset) * 2)}#vc-toast-notifications-container.vc-toast-notifications-position-bottom-left,#vc-toast-notifications-container.vc-toast-notifications-position-bottom-right{flex-direction:column;justify-content:flex-end}#vc-toast-notifications-container.vc-toast-notifications-position-top-left,#vc-toast-notifications-container.vc-toast-notifications-position-top-right{flex-direction:column-reverse;justify-content:flex-start}.vc-toast-notifications-notification-root{all:unset;pointer-events:auto;position:relative;display:flex;flex-direction:column;color:var(--vc-toast-notifications-text-color);background-color:var(--vc-toast-notifications-background-color);border-radius:var(--vc-toast-notifications-border-radius);overflow:hidden;cursor:pointer;min-width:var(--vc-toast-notifications-min-width);width:var(--vc-toast-notifications-width);max-width:var(--vc-toast-notifications-max-width);min-height:var(--vc-toast-notifications-min-height);max-height:var(--vc-toast-notifications-max-height);flex-shrink:0}.vc-toast-notifications-notification-content{display:flex;flex-direction:column;padding:var(--vc-toast-notifications-padding) .2rem;width:100%}.vc-toast-notifications-context-header{display:flex;align-items:center;gap:.5rem;color:var(--vc-toast-notifications-title-color);font-size:var(--vc-toast-notifications-title-font-size);font-weight:var(--vc-toast-notifications-title-font-weight);line-height:var(--vc-toast-notifications-title-line-height);padding:0 .8rem .5rem}.vc-toast-notifications-context-header-icon{width:1.5rem;height:1.5rem;border-radius:50%;object-fit:cover;flex-shrink:0}.vc-toast-notifications-context-header-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.vc-toast-notifications-context-header-separator{color:var(--text-muted);font-weight:400}.vc-toast-notifications-context-header-channel{color:var(--text-muted);font-weight:500}.vc-toast-notifications-notification-system{display:flex;flex-direction:row;padding:var(--vc-toast-notifications-padding);gap:1.25rem;width:100%}.vc-toast-notifications-notification-system .vc-toast-notifications-notification-content{display:block;padding:0;flex:1;min-width:0}.vc-toast-notifications-notification-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.vc-toast-notifications-notification-title{color:var(--vc-toast-notifications-title-color);font-size:var(--vc-toast-notifications-title-font-size);font-weight:var(--vc-toast-notifications-title-font-weight);line-height:var(--vc-toast-notifications-title-line-height);min-width:0;overflow:hidden;text-overflow:ellipsis}.vc-toast-notifications-notification-close-btn{all:unset;cursor:pointer;color:var(--vc-toast-notifications-close-button-color);opacity:var(--vc-toast-notifications-close-button-opacity);transition:opacity .2s ease-in-out,color .2s ease-in-out;position:absolute;top:.4rem;right:.4rem;z-index:1;width:1.5rem;height:1.5rem;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--vc-toast-notifications-background-color)}.vc-toast-notifications-notification-close-btn svg{width:1.25rem;height:1.25rem}.vc-toast-notifications-notification-close-btn:hover{color:var(--vc-toast-notifications-close-button-hover-color);opacity:var(--vc-toast-notifications-close-button-hover-opacity)}.vc-toast-notifications-notification-icon{height:var(--vc-toast-notifications-image-height);width:var(--vc-toast-notifications-image-width);border-radius:var(--vc-toast-notifications-image-border-radius)}.vc-toast-notifications-notification-progressbar{height:var(--vc-toast-notifications-progressbar-height);background-color:var(--vc-toast-notifications-progressbar-color);border-radius:5px;margin-top:auto}.vc-toast-notifications-notification-p{margin:.5rem 0 0;margin-bottom:3px;line-height:140%;overflow-wrap:anywhere}#vc-toast-notifications-container.vc-toast-notifications-position-bottom-left{bottom:var(--vc-toast-notifications-position-offset);left:var(--vc-toast-notifications-position-offset)}#vc-toast-notifications-container.vc-toast-notifications-position-top-left{top:var(--vc-toast-notifications-position-offset);left:var(--vc-toast-notifications-position-offset)}#vc-toast-notifications-container.vc-toast-notifications-position-top-right{top:var(--vc-toast-notifications-position-offset);right:var(--vc-toast-notifications-position-offset)}#vc-toast-notifications-container.vc-toast-notifications-position-bottom-right{bottom:var(--vc-toast-notifications-position-offset);right:var(--vc-toast-notifications-position-offset)}.visual-refresh .vc-toast-notifications-notification-root{background-color:var(--background-base-low)}.eq-trans-accessory{color:var(--text-muted);margin-top:.5em;font-style:italic;font-weight:400;display:block;white-space:pre-wrap}.eq-trans-accessory svg{margin-right:.25em}.eq-trans-dismiss{all:unset;cursor:pointer;color:var(--text-link)}.eq-trans-dismiss:is(:hover,:focus){text-decoration:underline}.vc-converter-dismiss{all:unset;cursor:pointer;color:var(--text-link)}.vc-converter-dismiss:is(:hover,:focus){text-decoration:underline}.vc-converter-accessory{color:var(--text-muted);margin-top:.5em;font-style:italic;font-weight:400}.vc-converter-accessory svg{margin-right:.25em}.vc-converter-chat-button{scale:1.085}.vc-url-hl-highlight{color:var(--vc-url-hl-color)!important}.vc-url-hl-marked{color:var(--vc-url-hl-color)!important;font-weight:600}.vc-url-hl-pattern-wrapper{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;padding-bottom:12px}.vc-url-hl-color-picker{display:flex;align-items:center}.vc-url-hl-color-picker [class*=swatch]{width:32px;height:32px;border-radius:4px}.vc-url-hl-remove-button{width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;box-sizing:border-box}.vc-url-hl-add-button{display:flex;align-items:center;gap:2px}.vc-url-hl-icon{width:20px;height:20px}.vc-userpfp-settings{flex-direction:row}.vc-userpfp-settings-button{width:100%;height:50px}.vc-userpfp-settings-heart{margin-left:6px}.vc-userpfp-preview-row{display:flex;align-items:center;justify-content:center;flex-direction:row;gap:24px;margin:12px 0}.vc-userpfp-preview-box{display:flex;flex-direction:column;align-items:center;gap:6px}.vc-userpfp-preview-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.vc-userpfp-avatar{width:80px;height:80px;border-radius:50%;object-fit:cover;border:3px solid var(--background-modifier-accent)}.vc-userpfp-avatar-active{border:3px solid var(--brand-experiment);box-shadow:0 0 12px var(--brand-experiment-30a)}.vc-userpfp-arrow{font-size:24px;color:var(--text-muted);margin-top:20px}.vc-userpfp-dropzone{border:2px dashed var(--background-modifier-accent);border-radius:10px;padding:20px;text-align:center;cursor:pointer;transition:background-color .15s,border-color .15s;user-select:none;color:var(--text-muted);font-size:14px;margin-top:8px}.vc-userpfp-dropzone-active{border-color:var(--brand-experiment);background:var(--brand-experiment-10a)}.vc-panelsettings-underline-on-hover:hover{text-decoration:underline}.voice-user-buttons{flex:none!important}.voice-user-buttons-left{order:-1}.voice-user-buttons-right{order:1;margin-left:4px}.voice-user-button-container{padding-right:4px}div[class*=list][class*=collapsed] .voice-user-buttons{display:none}.vc-voice-channel-log-entry{list-style-type:none;display:flex;align-items:center;gap:12px;padding:8px 16px;min-height:44px;border-radius:4px}.vc-voice-channel-log-entry:hover{background-color:var(--background-modifier-hover)}.vc-voice-channel-log-entry-timestamp{display:flex;flex-direction:column;align-items:flex-end;min-width:72px;flex-shrink:0}.vc-voice-channel-log-timestamp{font-size:.75rem;color:var(--text-muted);line-height:1.3}.vc-voice-channel-log-elapsed{font-size:.625rem;color:var(--text-muted);line-height:1.3}.vc-voice-channel-log-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:20px}.vc-voice-channel-log-icon-brand{color:var(--brand-experiment)}.vc-voice-channel-log-icon-danger{color:var(--status-danger)}.vc-voice-channel-log-icon-positive{color:var(--status-positive)}.vc-voice-channel-log-icon-warning{color:var(--status-warning)}.vc-voice-channel-log-app-icon{width:20px;height:20px;border-radius:4px;flex-shrink:0}.vc-voice-channel-log-avatar{width:32px;height:32px;border-radius:50%;cursor:pointer;flex-shrink:0;object-fit:cover}.vc-voice-channel-log-avatar:hover{opacity:.8}.vc-voice-channel-log-content{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.vc-voice-channel-log-username{font-weight:600;font-size:.875rem;color:var(--text-strong);cursor:pointer;width:fit-content}.vc-voice-channel-log-username:hover{text-decoration:underline}.vc-voice-channel-log-description{font-size:.8125rem;color:var(--text-subtle)}.vc-voice-channel-log-soundboard-info{display:flex;align-items:center;gap:6px}.vc-voice-channel-log-soundboard-emoji{width:16px;height:16px}.vc-voice-channel-log-soundboard-id{font-size:.8125rem;color:var(--text-subtle)}.vc-voice-channel-log-soundboard-actions{display:flex;align-items:center;gap:4px;margin-left:4px}.vc-voice-channel-log-soundboard-action{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;color:var(--interactive-icon-default);cursor:pointer}.vc-voice-channel-log-soundboard-action:hover{color:var(--interactive-icon-active);background-color:var(--background-modifier-hover)}.vc-voice-channel-log-date-separator{display:flex;align-items:center;margin:8px 16px;color:var(--text-muted);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.vc-voice-channel-log-date-separator:before,.vc-voice-channel-log-date-separator:after{content:"";flex:1;height:1px;background:var(--border-subtle)}.vc-voice-channel-log-date-separator span{padding:0 8px}.vc-voice-channel-log-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 32px;color:var(--text-muted);font-size:.875rem}.vc-voice-channel-log-scroller{padding:8px 0}.vc-transcription-button{width:24px;height:24px;padding:0;cursor:pointer;position:relative}.vc-transcription-icon{color:var(--interactive-icon-default)}.vc-transcription-icon:hover{color:var(--interactive-background-hover)}.vc-transcription-content{min-height:200px}.vc-transcription-result{padding:16px;white-space:pre-wrap;user-select:text;max-height:400px;overflow-y:auto}.vc-transcription-model-option{display:flex;align-items:center;gap:8px;width:100%}.vc-transcription-model-size{font-size:12px;color:var(--text-muted);opacity:.75;flex-shrink:0}.vc-transcription-container:has(>.vc-transcription-embed),.vc-transcription-container.vc-transcription-has-embed{flex-wrap:wrap!important}.vc-transcription-container:has(>.vc-transcription-embed-maintain-horizontal),.vc-transcription-container.vc-transcription-maintain-horizontal{flex-wrap:wrap!important;width:fit-content!important;max-width:100%!important}.vc-transcription-embed{order:9999!important;display:flex;flex-direction:column;width:100%;flex-basis:100%;min-width:0;margin-top:8px;border-radius:8px;background:#00000040;border:1px solid var(--border-subtle, rgb(255 255 255 / 8%));backdrop-filter:blur(4px);box-sizing:border-box;overflow:hidden;user-select:text}.vc-transcription-embed-header{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:#00000026;border-bottom:1px solid var(--border-subtle, rgb(255 255 255 / 6%))}.vc-transcription-embed-title{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.vc-transcription-status-dot{width:6px;height:6px;border-radius:50%;background-color:var(--text-muted);transition:background-color .2s ease}.vc-transcription-status-dot-active{background-color:var(--main-color, var(--brand-experiment, var(--brand-500, #5865f2)));animation:vc-transcription-pulse 1.5s infinite}.vc-transcription-status-dot-error{background-color:var(--text-feedback-critical, #ed4245)}@keyframes vc-transcription-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.85)}}.vc-transcription-embed-actions{display:flex;align-items:center;gap:4px}.vc-transcription-action-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--interactive-icon-default, var(--text-muted));cursor:pointer;transition:color .15s ease,background-color .15s ease}.vc-transcription-action-btn:hover{color:var(--interactive-icon-hover, var(--text-normal));background-color:var(--background-modifier-hover, rgb(255 255 255 / 8%))}.vc-transcription-action-btn-active{color:var(--main-color, var(--brand-experiment, var(--brand-500, #5865f2)));background-color:var(--background-modifier-selected, rgb(255 255 255 / 12%))}.vc-transcription-embed-body{padding:8px 12px;max-height:180px;overflow-y:auto}.vc-transcription-embed-text{white-space:pre-wrap;user-select:text}.vc-transcription-embed-maintain-horizontal{order:9999!important;width:0!important;min-width:100%!important;max-width:100%!important;flex-basis:100%!important;flex-grow:1!important;box-sizing:border-box!important;margin-left:0!important;margin-right:0!important}.vc-transcription-embed-maintain-horizontal .vc-transcription-embed-header{width:100%!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important}.vc-transcription-embed-maintain-horizontal .vc-transcription-embed-body{width:100%!important;min-width:0!important;max-width:100%!important;max-height:280px;box-sizing:border-box!important;overflow-wrap:anywhere}.vc-transcription-embed-maintain-horizontal .vc-transcription-embed-text{width:100%!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important;overflow-wrap:anywhere;display:block}.vc-voicestats-profile-section{gap:4px}.emoji-container{display:grid;gap:10px;background-color:var(--background-secondary-alt);max-height:300px;overflow-y:auto}.guild-section{border:1px solid var(--background-base-low);border-radius:4px;overflow:hidden}.guild-header{display:flex;justify-content:space-between;align-items:center;padding:10px;background-color:var(--background-base-low);cursor:pointer}.guild-name{font-size:18px;font-weight:700;color:var(--white-500);margin:0}.remove-all-button{cursor:pointer;background-color:var(--status-danger);color:var(--white-500);transition:background-color .2s ease}.remove-all-button:hover{filter:saturate(75%)}.guild-emojis{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px;padding:10px}.emoji-item{display:flex;flex-direction:column;align-items:center;padding:8px;background-color:var(--background-base-lower-alt);border-radius:4px}.emoji-image{max-height:32px;width:auto;height:auto}.emoji-surrogate{font-size:32px}.emoji-name{font-weight:700;color:var(--white-500);margin-bottom:10px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.remove-button{cursor:pointer;background-color:var(--status-danger);color:var(--white-500);transition:background-color .2s ease;margin-top:10px}.remove-button:hover{filter:saturate(75%)}.emoji-container::-webkit-scrollbar{background-color:#fff1;width:10px}.emoji-container::-webkit-scrollbar-thumb{background-color:#fff3}.no-emoji-message{font-size:25px;color:var(--white-500);text-align:center;margin:20px}.vc-whos-watching-user-avatar{border-radius:8px;width:16px;height:16px}.vc-whos-watching-spectating-header{margin-top:8px;margin-bottom:0;text-transform:uppercase}body{app-region:no-drag} { "version": 3, "sources": ["../../src/plugins/_api/badges/fixDiscordBadgePadding.css", "../../src/components/ErrorCard.css", "../../src/components/BaseText.css", "../../src/components/Button.css", "../../src/components/iconStyles.css", "../../src/components/Link.css", "../../src/components/Divider.css", "../../src/components/FormSwitch.css", "../../src/components/Switch.css", "../../src/components/Heading.css", "../../src/equicordplugins/globalBadges/styles.css", "../../src/api/ChatButton.css", "../../src/components/settings/tabs/styles.css", "../../src/components/settings/tabs/changelog/styles.css", "../../src/components/Card.css", "../../src/api/Notifications/styles.css", "../../src/components/settings/AddonCard.css", "../../src/components/Badge.css", "../../src/components/settings/tabs/plugins/PluginModal.css", "../../src/components/settings/tabs/plugins/components/styles.css", "../../src/components/settings/tabs/plugins/ContributorModal.css", "../../src/components/settings/tabs/plugins/PluginModalButtons.css", "../../src/components/settings/tabs/plugins/styles.css", "../../src/components/settings/QuickAction.css", "../../src/components/settings/SpecialCard.css", "../../src/components/settings/tabs/plugins/UIElements.css", "../../src/components/Notice.css", "../../src/components/settings/tabs/themes/styles.css", "../../src/components/settings/tabs/vencord/VencordTab.css", "../../src/plugins/betterFolders/style.css", "../../src/plugins/betterSessions/styles.css", "../../src/equicordplugins/equicordToolbox/styles.css", "../../src/plugins/characterCounter/style.css", "../../src/plugins/clientTheme/clientTheme.css", "../../src/plugins/copyFileContents/style.css", "../../src/plugins/customCommands/styles.css", "../../src/components/ExpandableCard.css", "../../src/plugins/customRPC/settings.css", "../../src/plugins/dearrow/styles.css", "../../src/plugins/decor/ui/styles.css", "../../src/plugins/fakeProfileThemes/styles.css", "../../src/plugins/favEmojiFirst/styles.css", "../../src/plugins/hideAttachments/styles.css", "../../src/equicordplugins/customUserColors/styles.css", "../../src/plugins/memberCount/style.css", "../../src/plugins/mentionAvatars/styles.css", "../../src/plugins/showMeYourName/style.css", "../../src/plugins/messageClickActions/styles.css", "../../src/plugins/messageLogger/messageLogger.css", "../../src/plugins/moreQuickReactions/styles.css", "../../src/plugins/mutualGroupDMs/style.css", "../../src/equicordplugins/blockKeywords/styles.css", "../../src/plugins/permissionsViewer/styles.css", "../../src/plugins/pictureInPicture/styles.css", "../../src/plugins/pinDms/styles.css", "../../src/plugins/plainFolderIcon/style.css", "../../src/plugins/platformIndicators/style.css", "../../src/plugins/readAllNotificationsButton/style.css", "../../src/plugins/replyTimestamp/style.css", "../../src/plugins/reviewDB/style.css", "../../src/plugins/sendTimestamps/styles.css", "../../src/plugins/serverInfo/styles.css", "../../src/plugins/serverListIndicators/styles.css", "../../src/plugins/shikiCodeblocks.desktop/shiki.css", "../../src/plugins/showConnections/styles.css", "../../src/plugins/showHiddenChannels/style.css", "../../src/plugins/showTimeoutDuration/styles.css", "../../src/plugins/sortFriendRequests/styles.css", "../../src/plugins/textReplace/styles.css", "../../src/plugins/translate/styles.css", "../../src/plugins/typingIndicator/style.css", "../../src/plugins/userVoiceShow/style.css", "../../src/plugins/usrbg/styles.css", "../../src/plugins/viewRaw/style.css", "../../src/plugins/voiceDownload/style.css", "../../src/plugins/voiceMessages/styles.css", "../../src/equicordplugins/declutter/style.css", "../../src/equicordplugins/betterActivities/styles.css", "../../src/equicordplugins/betterAudioPlayer/styles.css", "../../src/equicordplugins/betterBanReasons/styles.css", "../../src/equicordplugins/betterBlockedUsers/styles.css", "../../src/equicordplugins/betterInvites/style.css", "../../src/equicordplugins/channelBadges/style.css", "../../src/equicordplugins/channelTabs/style.css", "../../src/equicordplugins/clickableRoles/style.css", "../../src/equicordplugins/commandPalette/style.css", "../../src/equicordplugins/contentWarning/styles.css", "../../src/equicordplugins/cursorBuddy/styles.css", "../../src/equicordplugins/customSounds/styles.css", "../../src/equicordplugins/customTimestamps/style.css", "../../src/equicordplugins/discordDevBanner/styles.css", "../../src/equicordplugins/dragFavoriteEmotes/styles.css", "../../src/equicordplugins/dragify/style.css", "../../src/equicordplugins/equicordHelper/pluginCards.css", "../../src/equicordplugins/exitSounds/styles.css", "../../src/equicordplugins/exportMessages/styles.css", "../../src/equicordplugins/fileUpload/styles.css", "../../src/equicordplugins/findReply/styles.css", "../../src/equicordplugins/fontLoader/styles.css", "../../src/equicordplugins/friendCodes/styles.css", "../../src/equicordplugins/friendshipRanks/styles.css", "../../src/equicordplugins/ghosted/styles.css", "../../src/equicordplugins/gifCollections/style.css", "../../src/equicordplugins/githubRepos/styles.css", "../../src/equicordplugins/hideMessages/styles.css", "../../src/equicordplugins/hideServers/components/style.css", "../../src/equicordplugins/homeTyping/styles.css", "../../src/equicordplugins/iRememberYou/styles.css", "../../src/equicordplugins/iconViewer/styles.css", "../../src/equicordplugins/ignoreCalls/styles.css", "../../src/equicordplugins/inRole/style.css", "../../src/equicordplugins/keyboardNavigation/components/style.css", "../../src/equicordplugins/keywordNotify/style.css", "../../src/equicordplugins/keywordNotify/components/Collapsible.css", "../../src/equicordplugins/keywordNotify/components/FormGenericLabel.css", "../../src/equicordplugins/limitlessScreenshare/style.css", "../../src/equicordplugins/loginWithQR/ui/styles.css", "../../src/equicordplugins/mediaPlaybackSpeed/styles.css", "../../src/equicordplugins/messageColors/styles.css", "../../src/equicordplugins/messageLinkTooltip/style.css", "../../src/equicordplugins/messageLoggerEnhanced/styles.css", "../../src/equicordplugins/messagePeek/style.css", "../../src/equicordplugins/messageTranslate/styles.css", "../../src/equicordplugins/moreStickers/style.css", "../../src/equicordplugins/moreUserTags/styles.css", "../../src/equicordplugins/musicControls/styles.css", "../../src/equicordplugins/musicControls/spotify/spotifyStyles.css", "../../src/equicordplugins/musicControls/tidal/tidalStyles.css", "../../src/equicordplugins/newPluginsManager/styles.css", "../../src/equicordplugins/profileSets/styles.css", "../../src/equicordplugins/questify/settings.css", "../../src/equicordplugins/randomVoice/styles.css", "../../src/equicordplugins/recentDMSwitcher/styles.css", "../../src/equicordplugins/remix/editor/components/colorStyles.css", "../../src/equicordplugins/richMagnetLinks/styles.css", "../../src/equicordplugins/scheduledMessages/styles.css", "../../src/equicordplugins/serverSearch/styles.css", "../../src/equicordplugins/showBadgesInChat/styles.css", "../../src/equicordplugins/showRolesInChat/styles.css", "../../src/equicordplugins/songSpotlight.desktop/style.css", "../../src/equicordplugins/statusPresets/style.css", "../../src/equicordplugins/streaks/style.css", "../../src/equicordplugins/themeLibrary/components/styles.css", "../../src/equicordplugins/timezones/styles.css", "../../src/equicordplugins/toastNotifications/components/styles.css", "../../src/equicordplugins/translatePlus/style.css", "../../src/equicordplugins/unitConverter/style.css", "../../src/equicordplugins/urlHighlighter/styles.css", "../../src/equicordplugins/userpfp/styles.css", "../../src/equicordplugins/vcPanelSettings/style.css", "../../src/equicordplugins/voiceButtons/styles.css", "../../src/equicordplugins/voiceChannelLog/components/VoiceChannelLogEntryComponent.css", "../../src/equicordplugins/voiceMessageTranscriber.desktop/style.css", "../../src/equicordplugins/voiceStats/styles.css", "../../src/equicordplugins/whitelistedEmojis/style.css", "../../src/equicordplugins/whosWatching/styles.css", "../../src/fixWeirdAppRegionBug.css"], "sourcesContent": ["/* the profile popout badge container(s) */\n[class*=\"profile\"] [class*=\"tags\"] [class*=\"container\"] {\n /* Discord has gap set to 2px instead of 1px, which causes the 12th badge to wrap to a new line. */\n gap: 1px;\n}", ".vc-error-card {\n padding: 1em;\n background-color: var(--background-feedback-critical, rgb(237 66 69 / 10%));\n border: 1px solid var(--text-status-dnd, #ed4245);\n border-radius: var(--radius-sm, 8px);\n color: var(--text-default);\n}\n\n.vc-error-card a {\n color: var(--text-link);\n}\n\n.vc-error-card a:hover {\n text-decoration: underline;\n}", ".vc-text-base {\n font-family: var(--font-primary);\n line-height: normal;\n\n /* Discord puts an insane default margin on p tags, so reset that here */\n margin: 0;\n}\n\n.vc-text-selectable {\n user-select: text;\n}\n\n.vc-text-line-clamp-1 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vc-text-line-clamp {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.vc-text-tabular-numbers {\n font-variant-numeric: tabular-nums;\n}\n\n.vc-text-defaultColor {\n color: var(--text-default);\n}", ".vc-btn-base {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n max-width: 100%;\n border: 1px solid transparent;\n border-radius: var(--radius-sm, 8px);\n font-family: var(--font-primary);\n text-align: start;\n transition: 50ms ease-in;\n transition-property: background-color, color, border-color, opacity;\n background: var(--control-secondary-background-default);\n color: var(--text-default);\n white-space: nowrap;\n\n &:hover {\n transition: .15s ease-out;\n }\n\n &:disabled {\n opacity: .5;\n pointer-events: none;\n cursor: not-allowed;\n }\n\n &:focus-visible {\n /* stylelint-disable-next-line custom-property-pattern */\n box-shadow: 0 0 0 4px var(--__adaptive-focus-ring-color, var(--border-focus, #00b0f4));\n }\n}\n\n.vc-btn-min,\n.vc-btn-xs {\n padding: 3px 7px;\n min-height: 22px;\n min-width: unset;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.3333;\n}\n\n.vc-btn-xs {\n min-width: 60px;\n}\n\n.vc-btn-small {\n padding: 3px 11px;\n min-height: 30px;\n min-width: 60px;\n font-size: 14px;\n font-weight: 500;\n line-height: 1.2857;\n}\n\n.vc-btn-medium {\n padding: 7px 15px;\n min-height: 38px;\n min-width: 100px;\n font-size: 16px;\n font-weight: 500;\n line-height: 1.25;\n}\n\n.vc-btn-iconOnly {\n width: 32px;\n height: 32px;\n min-width: unset;\n min-height: unset;\n padding: 0;\n background-color: transparent;\n border-color: transparent;\n\n &:hover {\n background-color: var(--control-icon-only-background-hover);\n border-color: var(--control-icon-only-border-hover);\n }\n\n &:active {\n background-color: var(--control-icon-only-background-active);\n border-color: var(--control-icon-only-border-active);\n }\n}\n\n.vc-btn-primary {\n background-color: var(--control-primary-background-default);\n border-color: var(--control-primary-border-default);\n color: var(--control-primary-text-default);\n\n &:hover {\n background-color: var(--control-primary-background-hover);\n border-color: var(--control-primary-border-hover);\n color: var(--control-primary-text-hover);\n }\n}\n\n.vc-btn-secondary,\n.vc-btn-link {\n background-color: var(--control-secondary-background-default);\n border-color: var(--control-secondary-border-default);\n color: var(--control-secondary-text-default);\n\n &:hover {\n background-color: var(--control-secondary-background-hover);\n border-color: var(--control-secondary-border-hover);\n color: var(--control-secondary-text-hover);\n }\n}\n\n.vc-btn-dangerPrimary {\n background-color: var(--control-critical-primary-background-default);\n border-color: var(--control-critical-primary-border-default);\n color: var(--control-critical-primary-text-default);\n\n &:hover {\n background-color: var(--control-critical-primary-background-hover);\n border-color: var(--control-critical-primary-border-hover);\n color: var(--control-critical-primary-text-hover);\n }\n}\n\n.vc-btn-dangerSecondary {\n background-color: var(--control-critical-secondary-background-default);\n border-color: var(--control-critical-secondary-border-default);\n color: var(--control-critical-secondary-text-default);\n\n &:hover {\n background-color: var(--control-critical-secondary-background-hover);\n border-color: var(--control-critical-secondary-border-hover);\n color: var(--control-critical-secondary-text-hover);\n }\n}\n\n.vc-btn-overlayPrimary {\n background-color: var(--control-overlay-primary-background-default);\n border-color: var(--control-overlay-primary-border-default);\n color: var(--control-overlay-primary-text-default);\n\n &:hover {\n background-color: var(--control-overlay-primary-background-hover);\n border-color: var(--control-overlay-primary-border-hover);\n color: var(--control-overlay-primary-text-hover);\n }\n}\n\n.vc-btn-positive {\n background-color: var(--control-connected-background-default, var(--green-430));\n color: var(--white);\n\n &:hover {\n background-color: var(--control-connected-background-hover, var(--green-460));\n }\n}\n\n.vc-btn-none {\n background-color: transparent;\n border-color: transparent;\n color: var(--control-icon-only-icon-default);\n\n &:hover {\n background-color: var(--control-icon-only-background-hover);\n border-color: var(--control-icon-only-border-hover);\n color: var(--control-icon-only-icon-hover);\n }\n}\n\n.vc-btn-link-icon {\n width: 0.875em;\n height: 0.875em;\n margin-left: 8px;\n flex-shrink: 0;\n}\n\n.vc-text-btn-base {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n gap: var(--space-4, 4px);\n background: initial;\n color: var(--text-default);\n font-size: medium;\n font-weight: 400;\n margin: 0;\n padding: 0;\n text-align: start;\n text-decoration: none;\n max-width: 100%;\n white-space: nowrap;\n\n &:disabled {\n opacity: 0.5;\n }\n\n &:hover {\n text-decoration: underline;\n }\n\n &:focus-visible {\n /* stylelint-disable-next-line custom-property-pattern */\n box-shadow: 0 0 0 4px var(--__adaptive-focus-ring-color, var(--border-focus, #00b0f4));\n }\n}\n\n.vc-text-btn-primary {\n color: var(--text-brand);\n}\n\n.vc-text-btn-secondary {\n color: var(--text-strong, var(--text-default));\n}\n\n.vc-text-btn-danger {\n color: var(--text-feedback-critical);\n}\n\n.vc-text-btn-link {\n color: var(--text-link);\n}", ".vc-owner-crown-icon {\n color: var(--status-warning);\n}", ".vc-link {\n color: var(--text-link);\n text-decoration: var(--link-decoration);\n}\n\n.vc-link-underline-on-hover:hover {\n text-decoration: underline;\n}\n\n.vc-link-disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n\n/* Forced colors mode (high contrast accessibility) */\n.enable-forced-colors .vc-link,\n.enable-forced-colors .vc-link-underline-on-hover {\n background-color: canvas;\n text-decoration: underline;\n color: linktext !important;\n}\n\n.enable-forced-colors .vc-link svg,\n.enable-forced-colors .vc-link-underline-on-hover svg {\n color: currentcolor;\n}\n\n.enable-forced-colors .vc-link:not([href]),\n.enable-forced-colors .vc-link-underline-on-hover:not([href]) {\n background-color: buttonface;\n color: buttontext !important;\n}\n", ".vc-divider {\n height: 1px;\n width: 100%;\n border: none;\n border-top: 1px solid var(--border-subtle);\n}", ".vc-form-switch-container {\n padding-bottom: 20px;\n margin-bottom: 20px;\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.vc-form-switch-no-border {\n border-bottom: none;\n margin-bottom: 0;\n}\n\n.vc-form-switch {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n cursor: pointer;\n gap: 16px;\n}\n\n.vc-form-switch-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.vc-form-switch-text {\n flex: 1;\n min-width: 0;\n max-width: 80%;\n}\n\n.vc-form-switch-control {\n flex-shrink: 0;\n padding-top: 2px;\n}\n", ".vc-switch-container {\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.vc-switch-indicator {\n background: var(--switch-background-default);\n border: 1px solid var(--switch-border-default);\n border-radius: var(--radius-lg);\n box-sizing: border-box;\n cursor: pointer;\n height: 24px;\n position: relative;\n width: 48px;\n transition: background-color 200ms ease, border-color 200ms ease;\n}\n\n.vc-switch-checked .vc-switch-indicator {\n background: var(--switch-background-selected-default);\n border-color: var(--switch-border-selected-default);\n}\n\n.vc-switch-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.vc-switch-disabled .vc-switch-indicator {\n cursor: not-allowed;\n}\n\n.vc-switch-focusVisible .vc-switch-indicator {\n box-shadow: 0 0 0 2px var(--border-focus, #00a8fc);\n}\n\n.vc-switch-container:hover .vc-switch-indicator {\n background: var(--switch-background-hover);\n border-color: var(--switch-border-hover);\n}\n\n.vc-switch-checked:hover .vc-switch-indicator {\n background: var(--switch-background-selected-hover);\n border-color: var(--switch-border-selected-hover);\n}\n\n.vc-switch-thumb {\n align-items: center;\n display: flex;\n height: 24px;\n justify-content: center;\n left: 1px;\n margin-left: -1px;\n margin-top: -1px;\n position: absolute;\n width: 24px;\n transition: left 150ms ease-in-out;\n}\n\n.vc-switch-checked .vc-switch-thumb {\n left: 24px;\n}\n\n.vc-switch-checked .vc-switch-thumb rect {\n fill: var(--switch-thumb-background-selected-default);\n}\n\n.vc-switch-input {\n border-radius: 14px;\n cursor: pointer;\n height: 100%;\n left: 0;\n margin: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 100%;\n\n &:disabled {\n pointer-events: none;\n cursor: not-allowed\n }\n}\n", ".vc-h1,\n.vc-h2,\n.vc-h3,\n.vc-h4,\n.vc-h5 {\n color: var(--text-strong);\n font-family: var(--font-display);\n}\n\n.vc-h1 {\n font-size: 20px;\n font-weight: 600;\n line-height: 1.2;\n}\n\n.vc-h2 {\n font-size: 16px;\n font-weight: 600;\n line-height: 1.25;\n}\n\n.vc-h3 {\n font-size: 16px;\n font-weight: 500;\n line-height: 1.25;\n}\n\n.vc-h4 {\n font-size: 16px;\n font-weight: 600;\n line-height: 1.25;\n}\n\n.vc-h5 {\n font-size: 16px;\n font-weight: 500;\n line-height: 1.25;\n}\n\n.vc-h1-defaultMargin,\n.vc-h2-defaultMargin {\n margin-bottom: 20px\n}\n\n/* This is copied from Discord, don't ask me why 0 margin */\n.vc-h4-defaultMargin {\n margin-bottom: 0;\n margin-top: 0;\n}\n\n.vc-h3-defaultMargin,\n.vc-h5-defaultMargin {\n margin-bottom: 8px\n}\n", ".vc-global-badges-settings-button {\n width: 100%;\n height: 50px;\n}", ".vc-chatbar-button {\n display: flex;\n align-items: center;\n}\n\n/* FIXME: bad name\n_7f7a2c5f23327d73 */\n.vc-chatbar-discord-button {\n opacity: .7;\n align-items: center;\n align-self: center;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n justify-content: center;\n padding: 10px;\n\n &:hover {\n background: hsl(0deg 0% 100% / 10%);\n opacity: 1\n }\n}\n\n/* _3f4f204c3133fb93 */\n.vc-chatbar-button-wrapper {\n align-self: center;\n display: flex;\n flex-direction: row;\n gap: 8px;\n}", ".vc-settings-tab-bar {\n margin-top: 20px;\n margin-bottom: 10px;\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.vc-settings-tab-bar-item {\n margin-right: 32px;\n padding-bottom: 16px;\n margin-bottom: -2px;\n}\n\n.vc-settings-donate {\n display: flex;\n flex-direction: row;\n}\n\n.vc-settings-discordinvite {\n display: flex;\n flex-direction: row;\n}\n\n.vc-settings-card {\n padding: 1em;\n margin-bottom: 1em;\n}\n\n.vc-settings-card-buttons {\n display: flex;\n margin-top: 1.5em;\n gap: 0.5em;\n}\n\n.vc-warning-card {\n padding: 1em;\n background: var(--background-feedback-warning);\n border: 1px solid var(--text-status-idle);\n color: var(--text-status-idle);\n}\n\n.vc-backup-restore-card {\n background-color: var(--background-feedback-warning);\n border-color: var(--text-status-idle);\n color: var(--text-status-idle);\n}\n\n.vc-settings-theme-links {\n /* Needed to fix bad themes that hide certain textarea elements for whatever eldritch reason */\n display: inline-block !important;\n color: var(--text-default) !important;\n padding: 0.5em 1em;\n border: 1px solid var(--input-border-default);\n max-height: unset;\n background-color: transparent;\n box-sizing: border-box;\n resize: none;\n width: 100%;\n font-size: 1em;\n line-height: 2em;\n white-space: nowrap;\n}\n\n.vc-settings-theme-links::placeholder {\n color: var(--text-subtle) !important;\n}\n\n.vc-settings-theme-links:focus {\n background-color: var(--background-base-lowest);\n}\n\n.vc-cloud-settings-sync-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 1em;\n margin-top: 16px;\n}\n\n.vc-cloud-erase-data-danger-btn {\n color: var(--control-critical-primary-text-default);\n background-color: var(--control-critical-primary-background-default);\n}\n\n.vc-cloud-icon-with-button {\n display: flex;\n gap: 0.5em;\n padding-inline: 0.5em 1em;\n}\n\n.vc-cloud-button-icon {\n height: 1.25em;\n}\n\n.vc-settings-switches {\n display: grid;\n gap: 8px;\n}", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\n/* Existing changelog styles */\n.vc-changelog-entry {\n padding: 0.75em;\n margin-bottom: 0.5em;\n background-color: var(--background-base-lower-alt);\n border-radius: 8px;\n transition: 0.1s ease-out;\n transition-property: box-shadow, transform, background, opacity;\n}\n\n.vc-changelog-entry:hover {\n background-color: var(--background-base-low);\n transform: translateY(-1px);\n box-shadow: var(--elevation-high);\n}\n\n.vc-changelog-entry.required {\n border-left: 4px solid var(--status-warning);\n background-color: var(--background-base-lower-alt);\n padding-left: calc(0.75em - 4px);\n}\n\n.vc-changelog-entry.required:hover {\n background-color: var(--background-base-low);\n border-left-color: var(--status-warning-background);\n}\n\n.vc-changelog-entry-header {\n display: flex;\n align-items: center;\n gap: 0.5em;\n margin-bottom: 0.25em;\n}\n\n.vc-changelog-entry-hash {\n font-size: 0.875em;\n font-family: var(--font-code);\n color: var(--text-subtle);\n}\n\n.vc-changelog-entry-author {\n font-size: 0.875em;\n color: var(--text-subtle);\n font-weight: 500;\n}\n\n.vc-changelog-entry-message {\n color: var(--text-default);\n font-size: 0.95em;\n line-height: 1.4;\n}\n\n.vc-changelog-entry.required .vc-changelog-entry-hash {\n color: var(--text-subtle);\n font-weight: 600;\n}\n\n.vc-changelog-loading {\n text-align: center;\n padding: 2em;\n color: var(--text-subtle);\n}\n\n.vc-changelog-empty {\n text-align: center;\n padding: 2em;\n background-color: var(--background-base-lower-alt);\n border-radius: 8px;\n color: var(--text-subtle);\n}\n\n.vc-changelog-controls {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.5em;\n}\n\n.vc-changelog-repo-info {\n display: flex;\n align-items: center;\n gap: 0.5em;\n margin-bottom: 1em;\n}\n\n.vc-changelog-current-hash {\n font-family: var(--font-code);\n background-color: var(--background-base-lowest);\n padding: 0.125em 0.25em;\n border-radius: 3px;\n font-size: 0.875em;\n}\n\n/* New Plugins Section Styles */\n.vc-changelog-new-plugins-section {\n margin-bottom: 1.5em;\n padding: 1em;\n background-color: var(--background-base-lower-alt);\n border-radius: 8px;\n border-left: 4px solid var(--brand);\n}\n\n.vc-changelog-new-plugins-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 0.75em;\n}\n\n.vc-changelog-new-plugin-card {\n background-color: var(--background-base-low);\n border-radius: 6px;\n padding: 0.5em;\n transition: all 0.1s ease-out;\n}\n\n.vc-changelog-new-plugin-card:hover {\n background-color: var(--background-base-lowest);\n transform: translateY(-1px);\n box-shadow: var(--elevation-medium);\n}\n\n.vc-changelog-new-plugin-card.required {\n border-left: 4px solid var(--status-warning);\n background-color: var(--background-base-lower-alt);\n}\n\n.vc-changelog-new-plugin-card.required:hover {\n background-color: var(--background-base-low);\n border-left-color: var(--status-warning-background);\n}\n\n.vc-changelog-new-plugins-compact {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5em;\n margin-bottom: 0;\n padding-top: 0;\n}\n\n.vc-changelog-new-plugins-list {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5em;\n}\n\n.vc-changelog-new-plugin-tag {\n display: inline-flex;\n align-items: center;\n padding: 0.25em 0.5em;\n background-color: var(--brand);\n color: var(--white);\n border-radius: 4px;\n font-size: 0.875em;\n font-weight: 500;\n text-decoration: none;\n transition: background-color 0.1s ease;\n}\n\n.vc-changelog-new-plugin-tag:hover {\n background-color: var(--brand-700);\n}\n\n.vc-changelog-new-plugin-tag.more {\n background-color: var(--background-base-lower-alt);\n color: var(--text-subtle);\n}\n\n.vc-changelog-new-plugin-tag.required {\n background-color: var(--status-warning);\n color: var(--white);\n border: 1px solid var(--status-warning-background);\n}\n\n.vc-changelog-new-plugin-tag.required:hover {\n background-color: var(--status-warning-background);\n}\n\n.vc-changelog-restart-notice {\n margin-top: 1em;\n padding: 0.75em;\n background-color: var(--background-feedback-warning);\n border-radius: 6px;\n border-left: 4px solid var(--status-warning);\n}\n\n/* Update Logs Styles */\n.vc-changelog-history {\n margin-top: 1.5em;\n}\n\n.vc-changelog-history-list {\n display: flex;\n flex-direction: column;\n gap: 0.75em;\n padding-right: 0.5em;\n min-height: auto !important;\n max-height: none !important;\n height: auto !important;\n}\n\n.vc-changelog-log {\n background-color: var(--background-base-lower-alt);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.1s ease-out;\n}\n\n.vc-changelog-log:hover {\n box-shadow: var(--elevation-medium);\n}\n\n.vc-changelog-log-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1em;\n cursor: pointer;\n transition: background-color 0.1s ease;\n user-select: none;\n gap: 0.5em;\n position: relative;\n}\n\n.vc-changelog-log-header:hover {\n background-color: var(--background-base-low);\n}\n\n.vc-changelog-log-info {\n flex: 1;\n}\n\n.vc-changelog-log-title {\n font-weight: 600;\n font-size: 0.95em;\n color: var(--text-default);\n margin-bottom: 0.25em;\n font-family: var(--font-code);\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n}\n\n.vc-changelog-log-meta {\n font-size: 0.875em;\n color: var(--text-subtle);\n line-height: 1.3;\n}\n\n.vc-changelog-log-toggle {\n transition: transform 0.2s ease;\n color: var(--text-subtle);\n font-size: 0.75em;\n flex-shrink: 0;\n}\n\n.vc-changelog-log-toggle.expanded {\n transform: rotate(180deg);\n}\n\n.vc-changelog-log-content {\n padding: 0 1em 1em;\n border-top: 1px solid var(--background-base-lowest);\n animation: expand-content 0.2s ease-out;\n\n /* allow content to expand naturally (fixes cramming of elements) */\n min-height: auto !important;\n max-height: none !important;\n overflow: visible !important;\n}\n\n.vc-changelog-log-plugins {\n margin-bottom: 1em;\n padding-top: 0.75em;\n}\n\n.vc-changelog-log-plugins:last-child {\n margin-bottom: 0;\n}\n\n.vc-changelog-log-commits {\n margin-bottom: 1em;\n padding-top: 0.75em;\n}\n\n.vc-changelog-log-commits:last-child {\n margin-bottom: 0;\n}\n\n.vc-changelog-log-commits-list {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n padding-right: 0.5em;\n padding-top: 0;\n}\n\n/* fix plugin entry padding to match commit entries (this took 3 different tries bro) */\n.vc-changelog-plugins-list .vc-changelog-entry {\n padding: 0.75em;\n margin-bottom: 0.5em;\n}\n\n/* Visual refresh support */\n.visual-refresh .vc-changelog-entry {\n background-color: var(--background-surface-high);\n border: 1px solid var(--border-subtle);\n}\n\n.vc-changelog-log-commits-list .vc-changelog-entry:last-child {\n margin-bottom: 0;\n}\n\n.vc-changelog-plugins-list {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n padding-right: 0.5em;\n padding-top: 0;\n}\n\n.visual-refresh .vc-changelog-entry.required {\n border-left: 4px solid var(--status-warning);\n background-color: var(--background-surface-high);\n border: 1px solid var(--border-subtle);\n padding-left: calc(0.75em - 4px);\n}\n\n.vc-changelog-plugins-list .vc-changelog-entry:last-child {\n margin-bottom: 0;\n}\n\n/* consistent padding for required plugin entries in logs */\n.vc-changelog-plugins-list .vc-changelog-entry.required {\n padding-left: calc(0.75em - 4px);\n margin-bottom: 0.5em;\n}\n\n.vc-changelog-plugins-list .vc-changelog-entry.required:last-child {\n margin-bottom: 0;\n}\n\n.vc-changelog-log-commits-list::-webkit-scrollbar {\n width: 6px;\n}\n\n.vc-changelog-log-commits-list::-webkit-scrollbar-track {\n background: var(--background-base-lower-alt);\n border-radius: 3px;\n}\n\n.vc-changelog-log-commits-list::-webkit-scrollbar-thumb {\n background: var(--text-subtle);\n border-radius: 3px;\n}\n\n.vc-changelog-log-commits-list::-webkit-scrollbar-thumb:hover {\n background: var(--text-default);\n}\n\n/* Current changes section */\n.vc-changelog-current {\n margin-bottom: 1.5em;\n}\n\n.vc-changelog-commits-list {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n}\n\n/* Scrollbar styling for history list and log content */\n.vc-changelog-history-list::-webkit-scrollbar,\n.vc-changelog-log-content::-webkit-scrollbar {\n width: 6px;\n}\n\n.vc-changelog-history-list::-webkit-scrollbar-track,\n.vc-changelog-log-content::-webkit-scrollbar-track {\n background: var(--background-base-lower-alt);\n border-radius: 3px;\n}\n\n.vc-changelog-history-list::-webkit-scrollbar-thumb,\n.vc-changelog-log-content::-webkit-scrollbar-thumb {\n background: var(--text-subtle);\n border-radius: 3px;\n}\n\n.vc-changelog-history-list::-webkit-scrollbar-thumb:hover,\n.vc-changelog-log-content::-webkit-scrollbar-thumb:hover {\n background: var(--text-default);\n}\n\n.visual-refresh .vc-changelog-entry:hover {\n background-color: var(--background-surface-high);\n box-shadow: 0 2px 8px rgb(0 0 0 / 10%);\n}\n\n.visual-refresh .vc-changelog-empty {\n background-color: var(--background-surface-high);\n border: 1px solid var(--border-subtle);\n}\n\n.visual-refresh .vc-changelog-current-hash {\n background-color: var(--input-background);\n border: 1px solid var(--border-subtle);\n}\n\n.visual-refresh .vc-changelog-new-plugins-section {\n background-color: var(--background-surface-high);\n border: 1px solid var(--border-subtle);\n border-left: 4px solid var(--brand);\n}\n\n.visual-refresh .vc-changelog-new-plugin-card {\n background-color: var(--card-secondary-bg);\n border: 1px solid var(--border-subtle);\n}\n\n.visual-refresh .vc-changelog-log {\n background-color: var(--background-surface-high);\n border: 1px solid var(--border-subtle);\n}\n\n.visual-refresh .vc-changelog-log-header:hover {\n background-color: var(--card-secondary-bg);\n}\n\n.visual-refresh .vc-changelog-log-content {\n border-top: 1px solid var(--border-subtle);\n}\n\n.visual-refresh .vc-changelog-restart-notice {\n background-color: var(--background-surface-high);\n border: 1px solid var(--status-warning);\n border-left: 4px solid var(--status-warning);\n}\n\n/* Responsive design */\n@media (width <=768px) {\n .vc-changelog-new-plugins-grid {\n grid-template-columns: 1fr;\n }\n\n .vc-changelog-controls {\n flex-direction: column;\n align-items: stretch;\n }\n\n .vc-changelog-session-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.5em;\n }\n\n .vc-changelog-log-toggle {\n align-self: flex-end;\n margin-top: -1.5em;\n }\n\n .vc-changelog-log-title {\n flex-wrap: wrap;\n gap: 4px;\n }\n\n .vc-changelog-delete-button {\n order: 1;\n }\n}\n\n/* Animation for expanding/collapsing logs */\n\n@keyframes expand-content {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Badge styles for plugin counts */\n.vc-changelog-badge {\n display: inline-flex;\n align-items: center;\n padding: 0.125em 0.375em;\n background-color: var(--brand);\n color: var(--white);\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 600;\n margin-left: 0.5em;\n}\n\n.vc-changelog-badge.warning {\n background-color: var(--status-warning);\n}\n\n.vc-changelog-badge.success {\n background-color: var(--status-positive);\n}\n\n/* Required plugin styling */\n.vc-changelog-dep-text {\n font-size: 0.875em;\n color: var(--text-subtle);\n margin-left: 1em;\n font-style: italic;\n}\n\n/* Visual refresh support for required plugins */\n.visual-refresh .vc-changelog-new-plugin-tag.required {\n background-color: var(--status-warning);\n border: 1px solid var(--status-warning-background);\n}\n\n.visual-refresh .vc-changelog-new-plugin-card.required {\n border-left: 4px solid var(--status-warning);\n background-color: var(--card-secondary-bg);\n}\n\n/* Global overrides for changelog in settings modal */\n.vc-settings-tab [class*=\"changelog\"] {\n min-height: auto !important;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* Ensure Forms.FormSection doesn't constrain changelog */\n.vc-settings-tab .vc-changelog-history,\n.vc-settings-tab .vc-changelog-history-list,\n.vc-settings-tab .vc-changelog-log-content {\n min-height: auto !important;\n max-height: none !important;\n height: auto !important;\n overflow: visible !important;\n}\n\n.visual-refresh .vc-changelog-entry.required:hover {\n background-color: var(--card-secondary-bg);\n}\n\n/* Trash icon styling */\n.vc-changelog-delete-button {\n transition:\n opacity 0.2s ease,\n color 0.2s ease,\n background-color 0.2s ease;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.vc-changelog-delete-button:hover {\n opacity: 1 !important;\n color: var(--status-danger) !important;\n background-color: var(--background-mod-subtle);\n}\n\n.vc-changelog-log-header:hover .vc-changelog-delete-button {\n opacity: 0.8;\n}", ".vc-card-base {\n border-style: solid;\n border-width: 1px;\n border-radius: var(--radius-sm);\n position: relative;\n}\n\n.vc-card-primary {\n background-color: var(--card-background-default);\n border-color: var(--border-subtle);\n color: var(--text-default);\n}\n\n.vc-card-normal {\n border: 1px solid var(--border-subtle);\n}\n\n.vc-card-danger {\n background-color: var(--background-feedback-critical);\n border-color: var(--background-feedback-critical);\n color: var(--text-feedback-critical);\n}\n\n.vc-card-warning {\n background-color: var(--background-feedback-warning);\n border-color: var(--background-feedback-warning);\n color: var(--text-feedback-warning);\n}\n\n.vc-card-success {\n background-color: var(--background-feedback-positive);\n border-color: var(--background-feedback-positive);\n color: var(--text-feedback-positive);\n}\n\n.vc-card-brand {\n background-color: var(--brand-500);\n border-color: var(--brand-500);\n}\n\n.vc-card-outline {\n background-color: transparent;\n}\n\n.vc-card-base a {\n color: var(--text-link);\n}\n\n.vc-card-danger a,\n.vc-card-warning a,\n.vc-card-success a,\n.vc-card-brand a {\n color: var(--white);\n font-weight: var(--font-weight-bold);\n}\n\n.vc-card-base a:hover {\n text-decoration: underline;\n}\n\n.vc-card-defaultPadding {\n padding: 1em;\n}", ".vc-notification-root {\n /* clear default button styles */\n all: unset;\n display: flex;\n flex-direction: column;\n color: var(--text-default);\n background-color: var(--background-base-low);\n border-radius: 6px;\n overflow: hidden;\n cursor: pointer;\n width: 100%;\n}\n\n.vc-notification-root:not(.vc-notification-log-wrapper > .vc-notification-root) {\n position: absolute;\n z-index: 2147483647;\n right: 1rem;\n width: min(25vw, 400px);\n min-height: 10vh;\n}\n\n.vc-notification {\n display: flex;\n flex-direction: row;\n padding: 1.25rem;\n gap: 1.25rem;\n}\n\n.vc-notification-content {\n width: 100%;\n overflow: hidden;\n}\n\n.vc-notification-header {\n display: flex;\n justify-content: space-between;\n}\n\n.vc-notification-title {\n color: var(--text-strong);\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.25rem;\n text-transform: uppercase;\n}\n\n.vc-notification-close-btn {\n all: unset;\n cursor: pointer;\n color: var(--interactive-icon-default);\n opacity: 0.5;\n transition: opacity 0.2s ease-in-out, color 0.2s ease-in-out;\n}\n\n.vc-notification-close-btn:hover {\n color: var(--interactive-icon-hover);\n opacity: 1;\n}\n\n.vc-notification-icon {\n height: 4rem;\n width: 4rem;\n border-radius: 6px;\n}\n\n.vc-notification-progressbar {\n height: 0.25rem;\n border-radius: 5px;\n margin-top: auto;\n}\n\n.vc-notification-p {\n margin: 0.5rem 0 0;\n line-height: 140%;\n}\n\n.vc-notification-img {\n width: 100%;\n}\n\n.vc-notification-log-modal {\n max-width: 962px;\n width: clamp(var(--modal-width-large, 800px), 962px, 85vw);\n}\n\n.vc-notification-log-empty {\n height: 218px;\n background: url(\"/assets/b36de980b174d7b798c89f35c116e5c6.svg\") center no-repeat;\n margin-bottom: 40px;\n}\n\n.vc-notification-log-wrapper {\n height: 120px;\n width: 100%;\n padding-bottom: 16px;\n box-sizing: border-box;\n transition: 200ms ease;\n transition-property: height, opacity;\n\n /* stylelint-disable-next-line no-descending-specificity */\n .vc-notification-root {\n height: 104px;\n }\n}\n\n.vc-notification-log-removing {\n height: 0 !important;\n opacity: 0;\n margin-bottom: 1em;\n}\n\n.vc-notification-log-body-wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n.vc-notification-log-body {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n line-height: 1.2em;\n}\n\n.vc-notification-log-timestamp {\n margin-left: auto;\n font-size: 0.8em;\n font-weight: lighter;\n}\n\n.vc-notification-log-danger-btn {\n color: var(--control-critical-primary-text-default);\n background-color: var(--control-critical-primary-background-default);\n}", ".vc-addon-card {\n background-color: var(--card-background-default);\n color: var(--interactive-icon-active);\n border: 1px solid var(--border-subtle);\n border-radius: 8px;\n display: block;\n height: 100%;\n padding: 12px;\n width: 100%;\n transition: 0.1s ease-out;\n transition-property: box-shadow, transform, background, opacity;\n box-sizing: border-box;\n}\n\n.vc-addon-card-disabled {\n opacity: 0.6;\n}\n\n.vc-addon-card:hover {\n transform: translateY(-1px);\n box-shadow: var(--elevation-high);\n}\n\n.vc-addon-header {\n margin-top: auto;\n display: flex;\n width: 100%;\n justify-content: flex-end;\n align-items: center;\n gap: 8px;\n margin-bottom: 0.5em;\n}\n\n.vc-addon-note {\n height: 34px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n /* stylelint-disable-next-line property-no-unknown */\n box-orient: vertical;\n color: var(--text-default);\n}\n\n.vc-addon-name-author {\n width: 100%;\n}\n\n.vc-addon-name {\n display: flex;\n width: 100%;\n align-items: center;\n flex-grow: 1;\n}\n\n.vc-addon-author {\n font-size: 0.8em;\n}\n\n.vc-addon-author::before {\n content: \"by \";\n}\n\n.vc-addon-title-container {\n width: 100%;\n overflow: hidden;\n height: 1.25em;\n position: relative;\n}\n\n.vc-addon-title {\n position: absolute;\n inset: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n@keyframes vc-addon-title {\n 0% {\n transform: translateX(0);\n }\n\n 50% {\n transform: translateX(var(--offset));\n }\n\n 100% {\n transform: translateX(0);\n }\n}\n\n.vc-addon-title:hover {\n overflow: visible;\n animation: vc-addon-title var(--duration) linear infinite;\n}\n\n.vc-addon-editable {\n border: none;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n\n.vc-addon-footer {\n font-size: small;\n}", ".vc-badge-base {\n display: inline-flex;\n align-items: center;\n align-self: center;\n gap: var(--space-4, 4px);\n padding: 0 var(--space-8, 8px);\n border-radius: var(--radius-round, 9999px);\n box-sizing: border-box;\n font-family: var(--font-display);\n font-size: 12px;\n font-weight: 700;\n line-height: 1.3333;\n letter-spacing: 0.02em;\n text-align: center;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.vc-badge-icon {\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n}\n\n/* Discord variants */\n.vc-badge-default {\n background-color: var(--badge-background-brand);\n color: var(--badge-text-brand);\n}\n\n.vc-badge-expressive {\n background-color: var(--badge-expressive-background-default);\n color: var(--badge-expressive-text-default);\n}\n\n/* Equicord variants */\n.vc-badge-danger {\n background-color: var(--status-danger);\n color: var(--white);\n}\n\n.vc-badge-positive {\n background-color: var(--status-positive);\n color: var(--white);\n}\n\n.vc-badge-warning {\n background-color: var(--status-warning);\n color: var(--black);\n}\n\n.vc-badge-premium {\n background-color: var(--premium-tier-2-purple-for-gradients);\n color: var(--white);\n}", ".vc-plugin-modal-header {\n align-items: flex-start;\n position: relative;\n}\n\n.vc-plugin-modal-header-content {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n}\n\n.vc-plugin-modal-header-trailing {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 4px;\n}\n\n.vc-plugin-modal-title {\n color: var(--text-strong);\n padding-right: 32px;\n}\n\n.vc-plugin-modal-description {\n color: var(--text-subtle);\n padding-right: 60px;\n}\n\n.vc-plugin-modal-links {\n display: flex;\n gap: 4px;\n margin-left: auto;\n}\n\n.vc-plugin-modal-confirm [class*=\"footer\"] {\n flex-direction: row-reverse;\n gap: var(--space-8, 8px);\n}\n\n.vc-plugin-modal-confirm [class*=\"footer\"] > button {\n flex: 1;\n margin: 0;\n width: 100%;\n}\n\n.vc-plugin-modal-warning {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--text-feedback-critical);\n}\n\n.vc-settings-modal-content {\n padding-bottom: 24px;\n}\n\n.vc-plugin-modal-info {\n display: flex;\n gap: 1em;\n justify-content: space-between;\n align-items: start;\n}\n\n.vc-plugin-modal-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 8px;\n}\n\n.vc-plugin-modal-tag {\n align-items: center;\n border: 1px solid var(--border-normal);\n border-radius: 9999px;\n display: flex;\n justify-content: center;\n padding: 6px 12px;\n color: var(--text-default);\n}\n\n.vc-plugin-modal-about-box {\n padding: 16px;\n border-radius: 8px;\n border: 1px solid var(--border-normal, var(--background-modifier-accent));\n}", ".vc-plugins-setting-section {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n}\n\n.vc-plugins-setting-content {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n}\n\n.vc-plugins-setting-inline {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n\n.vc-plugins-setting-label {\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n}\n\n.vc-plugins-setting-title {\n color: var(--text-strong);\n}\n\n.vc-plugins-setting-inline .vc-plugins-setting-description {\n color: var(--text-subtle);\n}\n\n.vc-plugins-setting-error {\n color: var(--text-feedback-critical, #FF5C5C);\n}\n", ".vc-author-modal-root {\n padding: 0 0 16px;\n}\n\n.vc-author-modal-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vc-author-modal-name {\n text-transform: none;\n margin: 0;\n flex-grow: 0;\n background: var(--background-base-lowest);\n border-radius: 0 9999px 9999px 0;\n padding: 6px 0.8em 6px 0.5em;\n font-size: 20px;\n line-height: 1;\n position: relative;\n text-wrap: nowrap;\n}\n\n.vc-author-modal-name::before {\n content: \"\";\n display: block;\n position: absolute;\n height: 100%;\n width: 32px;\n background: var(--background-base-lowest);\n z-index: -1;\n left: -32px;\n top: 0;\n border-top-left-radius: 9999px;\n border-bottom-left-radius: 9999px;\n}\n\n.vc-author-modal-avatar {\n flex-shrink: 0;\n transform: translateX(4px);\n position: relative;\n z-index: 2;\n height: 32px;\n width: 32px;\n border-radius: 50%;\n border: 2px solid var(--background-primary);\n box-shadow:\n 0 0 0 1px rgb(255 255 255 / 18%),\n 0 2px 6px rgb(0 0 0 / 35%);\n}\n\n.vc-author-modal-links {\n display: flex;\n gap: 4px;\n margin-left: auto;\n width: 100%;\n justify-content: flex-end;\n}\n\n.vc-author-modal-plugins {\n display: grid;\n gap: 0.5em;\n margin-top: 0.75em;\n}", ".vc-settings-modal-light {\n color: black;\n}\n\n.vc-settings-modal-dark {\n color: white;\n}\n\n\n.vc-settings-modal-favorite-button {\n cursor: pointer;\n transition: color 0.2s ease-in-out;\n}\n\n.vc-settings-modal-favorite-button-active,\n.vc-settings-modal-favorite-button:hover {\n color: var(--yellow-300);\n}\n\n.vc-settings-modal-link-icon {\n height: 32px;\n width: 32px;\n border-radius: 50%;\n border: 4px solid var(--background-base-lowest);\n box-sizing: border-box\n}\n\n.vc-settings-modal-favorite-icon {\n background: var(--background-base-lowest);\n padding: 1px;\n}\n\n.vc-settings-modal-links {\n display: flex;\n gap: 0.2em;\n margin-left: auto;\n}", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n.vc-plugins-grid {\n margin-top: 16px;\n display: grid;\n gap: 16px;\n grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n}\n\n.vc-plugins-info-button {\n height: 24px;\n width: 24px;\n padding: 0;\n background: transparent;\n margin-right: 8px;\n color: var(--icon-muted);\n transition: background-color .2s ease;\n\n &:hover {\n color: var(--interactive-icon-hover)\n }\n}\n\n.vc-plugins-settings-button:hover {\n color: var(--interactive-icon-hover);\n}\n\n.vc-plugins-filter-controls {\n display: grid;\n height: 40px;\n gap: 10px;\n grid-template-columns: 1fr 1fr;\n align-items: center;\n}\n\n.vc-plugins-filter-control {\n height: 40px;\n}\n\n.vc-plugins-dep-name {\n margin: 0 auto;\n}\n\n.vc-plugins-info-card {\n padding: 1em;\n height: fit-content;\n display: flex;\n flex-direction: column;\n background-color: var(--background-base-lower-alt) !important;\n transition: 0.1s ease-out;\n transition-property: box-shadow, transform, background, opacity;\n gap: 0.25em;\n}\n\n.vc-plugins-restart-card {\n padding: 1em;\n background: var(--icon-status-idle) !important;\n border: 1px solid var(--icon-status-idle) !important;\n color: var(--text-status-idle);\n}\n\n.vc-plugins-info-icon:not(:hover, :focus) {\n color: var(--text-subtle);\n}\n\n.vc-plugins-restart-button {\n background-color: var(--background-base-low) !important;\n border: 1px solid var(--text-status-idle) !important;\n margin-top: 0.5em;\n}\n\n.vc-plugins-restart-button:hover {\n background-color: var(--text-status-idle) !important;\n}\n\n.vc-plugin-stats {\n background-color: var(--background-base-lower-alt);\n border-radius: 8px;\n padding: 12px;\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n transition: 0.1s ease-out;\n transition-property: box-shadow, transform, background, opacity;\n}\n\n.vc-plugins-info-card:hover,\n.vc-plugin-stats:hover {\n background-color: var(--background-base-low) !important;\n transform: translateY(-1px);\n box-shadow: var(--elevation-high);\n}\n\n.vc-plugin-stats-card-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.vc-plugin-stats-card-section {\n text-align: center;\n flex: 1;\n}\n\n.vc-plugin-stats-card-divider {\n border-left: 1px solid #ccc;\n height: 100%;\n margin: 0 10px;\n}\n\n/* Shared styles for warning modal and disable all modal */\n\n.vc-text-selectable {\n user-select: none;\n}\n\n.vc-warning-info {\n gap: 15px;\n display: grid !important;\n flex-direction: column;\n user-select: none;\n}\n\n.vc-warning-info img {\n width: 70%;\n height: auto;\n display: block;\n margin: auto auto 10px;\n}\n\n.vc-warning-info strong {\n font-weight: bold;\n}\n\n.text-danger {\n color: var(--text-feedback-critical) !important;\n font-size: 1.2rem;\n font-weight: bold;\n}\n\n.text-normal {\n color: var(--text-default);\n font-size: 1.2rem;\n}\n\n.text-normal.margin-bottom {\n margin-bottom: 10px;\n}\n\n.vc-plugins-disable-warning,\n.vc-plugin-modal-disable-warning {\n background-color: color-mix(in srgb, var(--status-danger) 10%, transparent) !important;\n border-style: solid !important;\n border-width: .1rem !important;\n border-color: color-mix(in srgb, var(--status-danger) 80%, transparent) !important;\n border-radius: 5px !important;\n color: color-mix(in srgb, var(--status-danger) 100%, transparent) !important;\n}\n\n.vc-plugins-disable-warning:hover,\n.vc-plugin-modal-disable-warning:hover {\n background-color: color-mix(in srgb, var(--status-danger) 40%, transparent) !important;\n}\n\n.vc-plugins-confirm-reset,\n.vc-plugin-modal-confirm-reset {\n background-color: var(--status-danger) !important;\n color: var(--text-default);\n}\n\n.vc-plugins-confirm-reset:hover,\n.vc-plugin-modal-confirm-reset:hover {\n background-color: var(--text-feedback-critical) !important;\n color: var(--text-default);\n}\n\n.vc-modal-close-button {\n margin-left: auto !important;\n}\n\n.vc-modal-align-reset {\n align-self: end;\n}\n\n.vc-modal-footer {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n.vc-modal-footer .vc-button-container {\n gap: 10px;\n align-items: center;\n justify-content: space-between !important;\n}\n\n/* Specific to disable all modal */\n\n.warning-text {\n color: var(--text-feedback-critical) !important;\n font-size: 1.2rem !important;\n}\n\n.warning-text span {\n font-weight: bold;\n text-decoration: underline;\n}\n\n.visual-refresh .button-danger-background {\n font-size: 16px;\n background-color: rgb(240 71 71 / 10%) !important;\n color: rgb(240 71 71) !important;\n border: 1px solid rgb(240 71 71 / 60%) !important;\n border-radius: 4px;\n font-weight: 500;\n padding: 6px 10px;\n text-align: center;\n}\n\n.visual-refresh .button-danger-background:hover {\n background-color: var(--status-danger-background) !important;\n color: var(--status-danger-text) !important;\n}\n\n.visual-refresh .vc-plugins-info-card {\n background-color: var(--background-surface-high) !important;\n border: 1px solid var(--border-subtle) !important;\n\n &:hover {\n background-color: var(--background-surface-high) !important;\n }\n}\n\n.visual-refresh .vc-plugin-stats {\n background-color: var(--background-surface-high) !important;\n border: 1px solid var(--border-subtle) !important;\n\n &:hover {\n background-color: var(--background-surface-high) !important;\n }\n}\n\n.vc-plugins-settings {\n display: flex;\n flex-direction: column;\n gap: 1.25em;\n}\n\n.vc-plugins-page-buttons {\n margin-top: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.vc-plugins-source {\n width: 22px;\n height: 22px;\n margin-top: 2px;\n margin-right: 8px;\n}\n\n.vc-plugins-stats-container {\n margin-top: 16px;\n gap: 16px;\n display: flex;\n flex-direction: row;\n width: 100%;\n}\n\n.vc-plugins-ui-elements {\n margin-top: 16px;\n}\n", ".vc-settings-quickActions-card {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 0.5em;\n padding: 0.5em;\n margin-bottom: 1em;\n}\n\n@media (width <=1040px) {\n .vc-settings-quickActions-card {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n.vc-settings-quickActions-pill {\n all: unset;\n background: var(--control-secondary-background-default);\n color: var(--control-secondary-text-default, var(--text-default));\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5em;\n padding: 8px 12px 8px 8px;\n border-radius: 8px;\n transition: 0.1s ease-out;\n box-sizing: border-box;\n line-height: 1;\n cursor: pointer;\n}\n\n.vc-settings-quickActions-pill:hover {\n background: var(--control-secondary-background-hover);\n transform: translateY(-1px);\n box-shadow: var(--elevation-high);\n}\n\n.vc-settings-quickActions-pill:focus-visible {\n outline: 2px solid var(--border-focus);\n outline-offset: 2px;\n}\n\n.vc-settings-quickActions-img {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n}", ".vc-invite-button,\n.vc-donate-button {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #ED87A9 25%, pink);\n}\n\n.vc-invite-button:hover,\n.vc-donate-button:hover {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #ED87A9 50%, pink);\n}\n\n.vc-invite-support-button,\n.vc-donate-support-button {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #c3a3ce 25%, rgb(240 178 240));\n}\n\n.vc-invite-support-button:hover,\n.vc-donate-support-button:hover {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #c3a3ce 50%, rgb(240 178 240));\n}\n\n.vc-translate-button {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #575757 50%, rgb(255 255 255));\n}\n\n.vc-translate-button:hover {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #575757 50%, rgb(201 201 201));\n}\n\n.vc-invite-link {\n width: 16px;\n height: 16px;\n margin-left: 8px;\n flex-shrink: 0;\n}\n\n.vc-contrib-button {\n overflow: visible !important;\n margin-top: 1em;\n color: black;\n background-color: color-mix(in srgb, #EDCC87 60%, lightyellow);\n}\n\n.vc-contrib-button:hover {\n color: black;\n background-color: color-mix(in srgb, #EDCC87 75%, lightyellow);\n}\n\n.vc-contrib-github {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n transition: transform 0.3s;\n}\n\n.vc-invite-button .vc-invite-link,\n.vc-contrib-button .vc-contrib-github,\n.vc-donate-button .vc-heart-icon,\n.vc-invite-support-button .vc-invite-link,\n.vc-donate-support-button .vc-heart-icon {\n transition: transform 0.3s;\n margin-right: 0.5em;\n}\n\n.vc-invite-button:hover .vc-invite-link,\n.vc-contrib-button:hover .vc-contrib-github,\n.vc-donate-button:hover .vc-heart-icon,\n.vc-invite-support-button:hover .vc-invite-link,\n.vc-donate-support-button:hover .vc-heart-icon {\n transform: scale(1.1);\n z-index: 10;\n position: relative;\n}\n\n.vc-special-card-special {\n padding: 1em 1.5em;\n margin-bottom: 1em;\n background-size: cover;\n background-position: center;\n}\n\n.vc-special-card-flex {\n display: flex;\n flex-direction: row;\n}\n\n.vc-special-card-flex-main {\n width: 100%;\n}\n\n.vc-special-title {\n color: black;\n}\n\n.vc-special-subtitle {\n color: black;\n font-size: 1.2em;\n font-weight: bold;\n margin-top: 0.5em;\n}\n\n.vc-special-text {\n color: black;\n font-size: 1em;\n margin-top: .75em;\n white-space: pre-line;\n}\n\n.vc-special-seperator {\n margin-top: .75em;\n border-top: 1px solid white;\n opacity: 0.4;\n}\n\n.vc-special-hyperlink {\n margin-top: 1em;\n cursor: pointer;\n}\n\n.vc-special-hyperlink-text {\n color: black;\n font-size: 1em;\n font-weight: bold;\n text-align: center;\n transition: text-decoration 0.5s;\n cursor: pointer;\n}\n\n.vc-special-hyperlink:hover .vc-special-hyperlink-text {\n text-decoration: underline;\n}\n\n.vc-special-image-container {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: 1em;\n flex-shrink: 0;\n width: 100px;\n height: 100px;\n border-radius: 50%;\n}\n\n.vc-special-image {\n width: 65%;\n}\n\n.vc-translate-modal-icon {\n margin: auto;\n width: 60px;\n}\n\n.vc-translate-modal-paragraph {\n padding: 12px;\n text-align: center;\n}", ".vc-plugin-ui-elements-button {\n display: flex;\n align-items: center;\n color: var(--interactive-icon-default);\n margin-top: 0.5em;\n cursor: pointer;\n\n &:hover {\n background-color: var(--background-mod-subtle);\n color: var(--interactive-icon-hover);\n }\n}\n\n.vc-plugin-ui-elements-button-arrow {\n margin-left: auto;\n width: 24px;\n height: 24px;\n}\n\n.vc-plugin-ui-elements-modal-content {\n display: flex;\n flex-direction: column;\n gap: 2em;\n}\n\n.vc-plugin-ui-elements-switches {\n display: flex;\n flex-direction: column;\n gap: 1em;\n}\n\n.vc-plugin-ui-elements-switches-row {\n display: flex;\n gap: 1em;\n width: 100%;\n align-items: center;\n\n :last-child {\n margin-left: auto;\n }\n}\n\n.vc-plugin-ui-elements-description {\n color: var(--text-subtle);\n}", ".vc-notice-container {\n border-radius: var(--radius-sm, 8px);\n box-sizing: border-box;\n display: grid;\n font-weight: 500;\n grid-template-rows: 1fr;\n padding: 8px;\n width: 100%;\n transition-duration: var(--expand-structural-duration, 0.2s);\n transition-property: grid-template-rows, padding-bottom, padding-top, border-width;\n transition-timing-function: var(--expand-easing-function, ease);\n}\n\n.vc-notice-hidden {\n border-width: 0;\n grid-template-rows: 0fr;\n padding-bottom: 0;\n padding-top: 0;\n transition-delay: var(--collapse-fade-duration, 0.1s);\n transition-duration: var(--collapse-structural-duration, 0.2s);\n transition-timing-function: var(--collapse-easing-function, ease);\n}\n\n.vc-notice-inner {\n display: flex;\n min-height: 0;\n opacity: 1;\n overflow: hidden;\n transition: opacity var(--expand-fade-duration, 0.1s) var(--expand-easing-function, ease) var(--expand-structural-duration, 0.2s);\n}\n\n.vc-notice-hidden .vc-notice-inner {\n opacity: 0;\n transition-delay: 0s;\n transition-duration: var(--collapse-fade-duration, 0.1s);\n transition-timing-function: var(--collapse-easing-function, ease);\n}\n\n.vc-notice-icon-wrapper {\n display: flex;\n}\n\n.vc-notice-icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n}\n\n.vc-notice-text {\n align-self: center;\n flex: 1 1 0%;\n margin-left: var(--space-8, 8px);\n font-family: var(--font-primary);\n font-size: 14px;\n font-weight: 500;\n line-height: 1.2857;\n color: var(--text-default);\n}\n\n.vc-notice-text p {\n margin: 0;\n}\n\n.vc-notice-text p~p {\n margin-top: 8px;\n}\n\n.vc-notice-action {\n margin: auto 0 auto 16px;\n}\n\n/* Info variant */\n.vc-notice-info {\n background: var(--background-feedback-info);\n border: 1px solid var(--icon-feedback-info);\n color: var(--text-feedback-info);\n}\n\n.vc-notice-info .vc-notice-icon {\n color: var(--icon-feedback-info);\n}\n\n/* Warning variant */\n.vc-notice-warning {\n background: var(--background-feedback-warning);\n border: 1px solid var(--icon-feedback-warning);\n color: var(--text-feedback-warning);\n}\n\n.vc-notice-warning .vc-notice-icon {\n color: var(--icon-feedback-warning);\n}\n\n/* Danger variant */\n.vc-notice-danger {\n background: var(--background-feedback-critical);\n border: 1px solid var(--icon-feedback-critical);\n color: var(--text-feedback-critical);\n}\n\n.vc-notice-danger .vc-notice-icon {\n color: var(--icon-feedback-critical);\n}\n\n/* Positive variant */\n.vc-notice-positive {\n background: var(--background-feedback-positive);\n border: 1px solid var(--icon-feedback-positive);\n color: var(--text-feedback-positive);\n}\n\n.vc-notice-positive .vc-notice-icon {\n color: var(--icon-feedback-positive);\n}\n", ".vc-settings-theme-grid {\n display: grid;\n gap: 8px;\n grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n}\n\n.vc-settings-theme-link-row {\n display: grid;\n height: 40px;\n gap: 8px;\n grid-template-columns: 1fr auto;\n}\n\n.vc-settings-theme-filter-row {\n display: grid;\n height: 40px;\n gap: 8px;\n grid-template-columns: 1fr 150px;\n}\n\n.vc-settings-theme-error-card {\n padding: 16px;\n}\n\n.vc-settings-csp-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vc-settings-csp-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n padding: 8px 0;\n}\n\n.vc-settings-csp-row a {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n}\n\n.vc-settings-theme-menu-button {\n cursor: pointer;\n color: var(--interactive-icon-default, var(--interactive-normal));\n display: flex;\n align-items: center;\n height: 24px;\n}\n\n.vc-settings-theme-menu-button:hover {\n color: var(--interactive-icon-hover, var(--interactive-hover));\n}\n\n.vc-settings-theme-footer-pin-icon {\n display: flex;\n}\n\n.vc-settings-theme-footer-pin-icon svg {\n width: 16px;\n height: 16px;\n}\n\n.vc-settings-theme-footer-pin-icon svg path {\n fill: var(--text-muted);\n}", ":root {\n --vc-donatebutton: #ffc1cbc2;\n --vc-donatebutton-secondary: #f7536fe5;\n}\n\n.vc-donatebutton {\n background-color: var(--background-base-low) !important;\n border-color: var(--vc-donatebutton) !important;\n filter: brightness(1);\n border-width: .1rem !important;\n border-style: solid !important;\n}\n\n.vc-donatebutton:hover {\n background-color: var(--vc-donatebutton) !important;\n border-color: transparent !important;\n}\n\n\n.vc-joindiscordbutton {\n background-color: var(--channeltextarea-background) !important;\n}\n\n.vc-joindiscordbutton:hover {\n background-color: var(--redesign-button-tertiary-pressed-background) !important;\n}\n\n.vc-settings-card-buttons {\n display: flex;\n gap: 1em !important;\n margin-left: .2rem;\n margin-bottom: .2rem;\n}\n\n.vc-settingbuttons {\n border-radius: 5px !important;\n}\n\n.form-switch-warning {\n font-size: 16px;\n background-color: rgb(240 71 71 / 10%);\n color: rgb(240 71 71);\n border: 1px solid rgb(240 71 71 / 60%);\n border-radius: 4px;\n font-weight: 500;\n padding: 6px 10px;\n text-align: center;\n margin-top: 10px;\n}\n\n.vc-vencord-tab-settings-link {\n color: var(--text-link);\n display: inline-block;\n}", ".vc-betterFolders-sidebar {\n grid-area: betterFoldersSidebar\n}\n\n.vc-betterFolders-nested-parent-list {\n height: auto !important;\n padding-bottom: 6px !important;\n}\n\n/* These area names need to be hardcoded. Only betterFoldersSidebar is added by the plugin. */\n.vc-betterFolders-sidebar-grid {\n /* stylelint-disable-next-line value-keyword-case */\n grid-template-columns: [start] min-content [guildsEnd] min-content [sidebarEnd] min-content [channelsEnd] 1fr [end];\n grid-template-areas:\n \"titleBar titleBar titleBar titleBar\"\n \"guildsList betterFoldersSidebar notice notice\"\n \"guildsList betterFoldersSidebar channelsList page\";\n}\n", ".vc-betterSessions-footer-buttons {\n display: flex;\n gap: 0.5em;\n align-items: center;\n justify-content: center;\n margin-top: 2px;\n}\n\n.vc-betterSessions-rename-btn {\n margin-left: 4px;\n translate: 0 -2px;\n}\n\n.vc-betterSessions-new-btn {\n margin-left: 4px;\n translate: 0 -2px;\n pointer-events: none;\n padding: 1px 4px;\n}\n\n.vc-betterSessions-lowerBadge {\n width: 20px;\n height: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n border-radius: 50%;\n background-color: var(--interactive-icon-default);\n color: var(--background-base-lower);\n}\n\n.vc-betterSessions-lowerBadge-icon {\n display: block;\n}\n\n.vc-betterSessions-icon {\n align-items: center;\n border-radius: var(--radius-sm);\n display: flex;\n height: 48px;\n justify-content: center;\n width: 48px\n}\n\n.vc-betterSessions-description {\n display: flex;\n gap: 4px;\n}", ".vc-toolbox-btn,\n.vc-toolbox-icon {\n -webkit-app-region: no-drag;\n}\n\n.vc-toolbox-icon {\n color: var(--interactive-icon-default);\n}\n\n.vc-toolbox-btn[class*=\"selected\"] .vc-toolbox-icon {\n color: var(--interactive-icon-active);\n}\n\n.vc-toolbox-btn:hover .vc-toolbox-icon {\n color: var(--interactive-icon-hover);\n}", ".vc-charCounter-counter {\n font-size: 12px;\n color: var(--text-muted);\n position: absolute;\n bottom: 4px;\n right: 11px;\n pointer-events: none;\n z-index: 2;\n background: transparent;\n transition: color 0.3s ease;\n}\n\n.vc-charCounter-count {\n transition: color 0.3s ease;\n}\n\n.vc-charCounter-selected {\n color: var(--brand-500);\n}\n", ".vc-clientTheme-settings {\n display: flex;\n flex-direction: column;\n}\n\n.vc-clientTheme-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n}\n\n.vc-clientTheme-labels {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n}\n\n.vc-clientTheme-container [class*=\"swatch\"] {\n border: thin solid var(--input-border-default) !important;\n}\n\n.vc-clientTheme-buttons-container {\n margin-top: 16px;\n display: flex;\n gap: 4px;\n}", ".vc-cfc-button {\n display: flex;\n align-items: center;\n margin-left: 16px;\n cursor: pointer;\n}", ".vc-customCommands-card {\n padding: 0.5em;\n padding-left: 1em;\n display: grid;\n grid-template-columns: 1fr min-content min-content;\n align-items: center;\n gap: 0.25em;\n}", ".vc-expandable-card {\n color: var(--text-default);\n}\n\n.vc-expandable-card-header {\n display: flex;\n cursor: pointer;\n padding: .75em 1em;\n margin: 4px;\n border-radius: var(--radius-xs);\n\n .vc-expandable-card[data-expanded=\"true\"] & {\n background: var(--card-secondary-bg);\n }\n}\n\n.vc-expandable-card-icon {\n margin-left: auto;\n}\n\n.vc-expandable-card-content {\n padding: 0.5em 1em;\n}", ".vc-customRPC-settings-root {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n\n & h5 {\n margin: 0;\n }\n}\n\n.vc-customRPC-settings-pair {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n align-items: start;\n gap: 0.5em;\n width: 100%;\n}\n\n.vc-customRPC-settings-presets {\n display: grid;\n gap: 0.5em;\n}\n\n.vc-customRPC-settings-preset-create {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 0.5em;\n}\n\n.vc-customRPC-settings-preset-actions {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto auto;\n gap: 0.5em;\n}\n\n.vc-customRPC-settings-single {\n display: grid;\n gap: 0.5em;\n}\n\n.vc-customRPC-settings-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.vc-customRPC-settings-error {\n color: var(--text-feedback-critical);\n}\n", ".vc-dearrow-toggle-off .vc-dearrow-icon {\n filter: grayscale(1);\n}\n\n.vc-dearrow-toggle-on, .vc-dearrow-toggle-off {\n all: unset;\n display: inline;\n cursor: pointer;\n position: absolute;\n top: 0.75rem;\n right: 0.75rem;\n}\n", ".vc-decor-danger-btn {\n color: var(--control-critical-primary-text-default);\n background-color: var(--control-critical-primary-background-default);\n}\n\n.vc-decor-change-decoration-modal-content {\n position: relative;\n display: flex;\n border-radius: 5px 5px 0 0;\n gap: 4px;\n}\n\n.vc-decor-change-decoration-modal-preview {\n display: flex;\n flex-direction: column;\n margin-top: 24px;\n gap: 8px;\n max-width: 280px;\n}\n\n.vc-decor-change-decoration-modal-decoration {\n width: 80px;\n height: 80px;\n}\n\n.vc-decor-change-decoration-modal-footer {\n justify-content: space-between;\n}\n\n.vc-decor-create-decoration-modal-content {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.vc-decor-create-decoration-modal-form-preview-container {\n display: flex;\n gap: 16px;\n}\n\n.vc-decor-modal-header {\n padding: 16px;\n}\n\n.vc-decor-modal-footer {\n padding: 16px;\n}\n\n.vc-decor-modal-footer-btn-container {\n display: flex;\n flex-direction: row;\n gap: 0.5em;\n}\n\n.vc-decor-create-decoration-modal-form {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n gap: 16px;\n}\n\n.vc-decor-sectioned-grid-list-container {\n display: flex;\n flex-direction: column;\n overflow: hidden scroll;\n max-height: 512px;\n gap: 12px;\n\n /* ((80 + 8 (grid gap)) * desired columns) (scrolled takes the extra 8 padding off conveniently) */\n width: 352px;\n}\n\n.vc-decor-sectioned-grid-list-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.vc-decor-section-remove-margin {\n margin-bottom: 0;\n}", ".vc-fpt-preview * {\n pointer-events: none;\n}\n", ".vc-emoji-alias-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 8px;\n border-radius: 8px;\n background: var(--background-secondary);\n}\n\n.vc-emoji-alias-row-editing {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vc-emoji-alias-row-editing-text-input {\n width: 180px;\n}\n\n.vc-emoji-alias-row-arrow {\n color: var(--text-muted);\n}\n\n.vc-emoji-alias-row-error {\n color: var(--text-feedback-critical);\n}\n\n.vc-emoji-alias-row-button {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vc-emoji-alias-settings {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}", ".vc-hideAttachments-accessory {\n color: var(--text-muted);\n margin-top: 0.5em;\n font-style: italic;\n font-weight: 400;\n}\n\n.vc-hideAttachments-no-content {\n margin-top: 0;\n}", ".vc-customColors-modal-header {\n place-content: center;\n justify-content: space-between;\n}\n\n.vc-customColors-modal-header h1 {\n margin: 0;\n}\n\n.vc-customColors-modal-content {\n padding: 1em;\n}\n\n.vc-customColors-modal-footer {\n gap: 16px;\n}\n", ".vc-membercount-widget {\n gap: 0.85em;\n display: flex;\n align-content: center;\n\n --color-online: var(--green-360);\n --color-total: var(--primary-400);\n --color-voice: var(--primary-400);\n}\n\n.vc-membercount-tooltip {\n margin-top: 0.25em;\n margin-left: 2px;\n}\n\n.vc-membercount-member-list {\n justify-content: center;\n flex-wrap: wrap;\n margin-top: 1em;\n padding-inline: 1em;\n line-height: 1.2em;\n}\n\n.vc-membercount-container {\n display: flex;\n align-items: center;\n gap: 0.5em;\n}\n\n.vc-membercount-online {\n color: var(--color-online);\n}\n\n.vc-membercount-total {\n color: var(--color-total);\n}\n\n.vc-membercount-voice {\n color: var(--color-voice);\n}\n\n.vc-membercount-online-count {\n fill: var(--status-online);\n width: 18px;\n height: 18px;\n}\n\n.vc-membercount-total-count {\n fill: none;\n stroke: var(--icon-status-offline);\n stroke-width: 4px;\n width: 15px;\n height: 15px;\n}\n\n.vc-membercount-voice-icon {\n color: var(--color-voice);\n width: 15px;\n height: 15px;\n}", ".vc-mentionAvatars-icon {\n vertical-align: middle;\n width: 1em !important; /* insane discord sets width: 100% in channel topic */\n height: 1em;\n margin: 0 4px 0.2rem 2px;\n box-sizing: border-box;\n}\n\n.vc-mentionAvatars-role-icon {\n margin: 0 2px 0.2rem 4px;\n}\n\n/** don't display inside the ServerInfo modal owner mention */\n.vc-gp-owner .vc-mentionAvatars-icon {\n display: none;\n}\n", "/* stylelint-disable rule-empty-line-before */\n/* stylelint-disable property-no-vendor-prefix */\n\n@keyframes smyn-animation {\n 0% {\n background-position: 0;\n }\n\n 100% {\n background-position: 100px;\n }\n}\n\n.smyn-gradient {\n position: relative;\n z-index: 0;\n}\n\n.smyn-gradient::after {\n background-clip: text;\n content: attr(data-text) / \"\";\n inset: 0;\n position: absolute;\n filter: blur(4px);\n opacity: 0;\n text-indent: 0;\n transition: opacity .1s ease-in-out;\n text-wrap-style: balance;\n z-index: -1;\n}\n\n.smyn-gradient-unset-bg::after {\n background: unset;\n -webkit-text-fill-color: currentcolor;\n}\n\n.smyn-gradient-inherit-bg::after {\n background: inherit;\n -webkit-text-fill-color: transparent;\n}\n\n.smyn-gradient-hovered::after {\n opacity: .7;\n transition: opacity .1s ease-in-out;\n}\n\n.smyn-modal-footer-container button {\n width: 100%;\n}\n\n.smyn-reset-button {\n margin-top: 8px;\n font-size: 14px;\n font-weight: 500;\n}\n\n.smyn-native-gradient-animated > [data-username-with-effects],\n:where(.smyn-native-gradient-glow-overflow) .smyn-native-gradient-glow > [data-username-with-effects] {\n animation: smyn-animation var(--smyn-gradient-duration, 1.5s) linear infinite;\n background-image: linear-gradient(to right, var(--custom-display-name-styles-gradient-stops), var(--custom-display-name-styles-main-color) 100%) !important;\n background-size: 100px auto !important;\n}\n\n.smyn-native-gradient-glow > [data-username-with-effects]::after {\n background: inherit;\n background-clip: text;\n content: attr(data-username-with-effects) / \"\";\n filter: blur(4px);\n inset: 0;\n opacity: 0;\n position: absolute;\n text-indent: 0;\n transition: opacity .1s ease-in-out;\n -webkit-text-fill-color: transparent;\n z-index: -1;\n}\n\n.smyn-native-gradient-glow-active > [data-username-with-effects],\n.smyn-native-gradient-glow-overflow,\n.smyn-native-gradient-glow-overflow > .smyn-name-group,\n.smyn-native-gradient-glow-overflow > .smyn-name-group > .smyn-name,\n.smyn-native-gradient-glow-overflow :where(\n [class^=\"text_\"],\n [class*=\" text_\"],\n [class^=\"username_\"],\n [class*=\" username_\"]\n) {\n overflow: visible;\n}\n\n.smyn-native-gradient-glow-active > [data-username-with-effects]::after,\n:where(.smyn-native-gradient-glow-overflow) .smyn-native-gradient-glow > [data-username-with-effects]::after {\n opacity: .7 !important;\n transition: opacity .1s ease-in-out;\n}\n\n.smyn-native-effect.smyn-native-message-effect {\n display: inline;\n}\n\n.smyn-native-gummy-animated > [data-username-with-effects] {\n --smyn-gummy-inline-headroom: .12em;\n\n margin-inline: calc(var(--smyn-gummy-inline-headroom) * -1);\n padding-inline: var(--smyn-gummy-inline-headroom);\n text-overflow: clip;\n}\n\n.smyn-container:hover {\n text-decoration-color: var(--smyn-underline-color, currentcolor);\n text-decoration-line: underline;\n text-decoration-style: initial;\n text-decoration-thickness: initial;\n}\n\n.smyn-container:hover .smyn-native-effect > [data-username-with-effects] {\n text-decoration-color: var(--smyn-underline-color, currentcolor);\n text-decoration-line: underline;\n text-decoration-style: initial;\n text-decoration-thickness: initial;\n}\n\n.smyn-container:hover .smyn-native-pop > [data-username-with-effects],\n.smyn-container:hover .smyn-native-gummy > [data-username-with-effects] {\n text-decoration: none;\n}\n\n.smyn-container:hover .smyn-native-pop > [data-username-with-effects]::before {\n text-decoration-color: var(--smyn-underline-color, currentcolor);\n text-decoration-line: underline;\n text-decoration-style: initial;\n text-decoration-thickness: initial;\n text-underline-offset: .08em;\n}\n\n.smyn-container:hover .smyn-native-gummy > [data-username-with-effects] {\n position: relative;\n}\n\n.smyn-container:hover .smyn-native-gummy > [data-username-with-effects]::before {\n color: transparent;\n content: attr(data-username-with-effects) / \"\";\n inset: var(--custom-gummy-squish-headroom, 0) 0 0;\n pointer-events: none;\n position: absolute;\n text-decoration-color: var(--smyn-underline-color, currentcolor);\n text-decoration-line: underline;\n text-decoration-style: initial;\n text-decoration-thickness: initial;\n white-space: var(--custom-display-name-styles-wrap);\n}\n", ".vc-message-click-actions-emoji-trigger {\n min-width: 46px;\n height: 46px;\n padding: 0 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n background: var(--background-secondary-alt);\n border: 1px solid var(--input-border);\n cursor: pointer;\n line-height: 1;\n}\n\n.vc-message-click-actions-emoji-preview {\n display: block;\n}\n\n.vc-message-click-actions-unicode-preview {\n font-size: 28px;\n line-height: 1;\n}\n", ".messagelogger-deleted [class*=\"buttons\"] {\n display: none;\n}\n\n\n/* non-deleted messages can have deleted attachments */\n.messagelogger-deleted-attachment,\n.messagelogger-deleted :is(.emoji,\n [data-type=\"sticker\"],\n [class*=\"embedIframe\"],\n [class*=\"embedSpotify\"],\n [class*=\"imageContainer\"]) {\n filter: grayscale(1) !important;\n transition: 150ms filter ease-in-out;\n\n &[class*=\"hiddenMosaicItem\"] {\n filter: grayscale(1) blur(var(--custom-message-attachment-spoiler-blur-radius, 44px)) !important;\n }\n\n &:hover {\n filter: grayscale(0) !important;\n }\n}\n\n.messagelogger-deleted [class*=\"spoilerWarning\"] {\n color: var(--status-danger);\n}\n\n.theme-dark .messagelogger-edited {\n filter: brightness(80%);\n}\n\n.theme-light .messagelogger-edited {\n opacity: 0.5;\n}\n\n.messagelogger-edit-marker {\n cursor: pointer;\n}\n\n.vc-ml-modal-timestamp {\n cursor: unset;\n height: unset;\n}\n\n.vc-ml-modal-tab-bar {\n flex-wrap: wrap;\n gap: 16px;\n}\n\n.messagelogger-diff-added {\n color: #85E89D;\n}\n\n.messagelogger-diff-removed {\n color: #F47068;\n}\n\n.messagelogger-diff-added [class*=\"emojiContainer\"],\n.messagelogger-diff-added img.emoji {\n position: relative;\n}\n\n.messagelogger-diff-added [class*=\"emojiContainer\"]::after,\n.messagelogger-diff-added img.emoji::after {\n content: '';\n position: absolute;\n inset: 0;\n background-color: rgb(133 232 157 / 60%);\n border-radius: 3px;\n pointer-events: none;\n}\n\n.messagelogger-diff-removed [class*=\"emojiContainer\"],\n.messagelogger-diff-removed img.emoji {\n position: relative;\n}\n\n.messagelogger-diff-removed [class*=\"emojiContainer\"]::after,\n.messagelogger-diff-removed img.emoji::after {\n content: '';\n position: absolute;\n inset: 0;\n background-color: rgb(244 112 104 / 60%);\n border-radius: 3px;\n pointer-events: none;\n}\n\n.messagelogger-diff-view {\n display: inline-flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.messagelogger-diff-original,\n.messagelogger-diff-updated {\n display: block;\n white-space: pre-wrap;\n}\n\n/* when diffs are disabled for a specific message, remove diff colors */\n.messagelogger-diff-disabled .messagelogger-diff-added,\n.messagelogger-diff-disabled .messagelogger-diff-removed {\n color: inherit;\n}\n\n.messagelogger-diff-disabled .messagelogger-diff-added [class*=\"emojiContainer\"]::after,\n.messagelogger-diff-disabled .messagelogger-diff-added img.emoji::after,\n.messagelogger-diff-disabled .messagelogger-diff-removed [class*=\"emojiContainer\"]::after,\n.messagelogger-diff-disabled .messagelogger-diff-removed img.emoji::after {\n display: none !important;\n}", "/* Fixes to make the quick reactions look better */\n\n.vc-better-quick-react {\n /* Discord officially has a 2px right margin and a 0px left margin, which is a hack for their selection border being cut off on the right */\n padding: 4px 1px 6px;\n justify-content: center;\n grid-template-columns: repeat(var(--vc-better-quick-react-columns), 44px);\n grid-template-rows: unset;\n grid-auto-rows: 44px;\n z-index: 10;\n}\n\n.vc-better-quick-react.vc-better-quick-react-compact {\n grid-template-columns: repeat(var(--vc-better-quick-react-columns), 33px);\n grid-auto-rows: 33px;\n}\n\n.vc-better-quick-react.vc-better-quick-react-compact > div {\n scale: 0.75;\n}\n\n.vc-better-quick-react.vc-better-quick-react-compact img {\n width: 25px;\n height: 25px;\n}\n\n.vc-better-quick-react-padding {\n min-width: fit-content;\n}", ".vc-mutual-gdms-modal-tab-bar {\n gap: 0;\n}\n\n.vc-mutual-gdms-modal-v2-tab-bar {\n --space-xl: 16px;\n}\n\n.vc-mutual-gdms-scroller {\n gap: 12px;\n margin-inline-start: -12px;\n}\n\n.vc-mutual-gdms-dm-page-list {\n gap: 0;\n margin-inline-start: -8px;\n}", ".vc-block-keywords-regex {\n padding: 0.75em\n}\n\n.vc-block-keywords-card {\n padding: 0.4em 0.75em;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.vc-block-keywords-error {\n font-size: 12px;\n margin-left: 1em;\n flex-shrink: 0;\n}", "/* User Permissions Component */\n\n.vc-permviewer-user-header-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.vc-permviewer-user-header-btns {\n display: flex;\n gap: 8px;\n}\n\n.vc-permviewer-user-header-btn {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* RolesAndUsersPermissions Component */\n\n.vc-permviewer-modal-no-perms {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.vc-permviewer-modal-container {\n width: 100%;\n height: min(760px, 80vh);\n min-height: 0;\n display: flex;\n gap: 8px;\n overflow: hidden;\n}\n\n.vc-permviewer-modal-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 0 0 200px;\n max-height: 100%;\n min-height: 0;\n overflow: auto;\n padding-right: 8px;\n}\n\n.vc-permviewer-modal-list-item-btn {\n cursor: pointer;\n}\n\n.vc-permviewer-modal-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n border-radius: 5px;\n}\n\n.vc-permviewer-modal-list-item:hover {\n background-color: var(--background-mod-subtle);\n}\n\n.vc-permviewer-modal-list-item-active {\n background-color: var(--background-mod-strong);\n}\n\n.vc-permviewer-modal-list-item-text {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.vc-permviewer-modal-role-circle {\n border-radius: 50%;\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n}\n\n.vc-permviewer-modal-role-image {\n width: 20px;\n height: 20px;\n object-fit: contain;\n}\n\n.vc-permviewer-modal-user-img {\n border-radius: 50%;\n width: 20px;\n height: 20px;\n}\n\n.vc-permviewer-modal-divider {\n width: 2px;\n background-color: var(--background-mod-normal);\n}\n\n.vc-permviewer-modal-perms {\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n max-height: 100%;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n padding-right: 8px;\n}\n\n.vc-permviewer-modal-perms-item {\n display: flex;\n align-items: center;\n gap: 5px;\n padding: 10px 2px 10px 10px;\n border-bottom: 2px solid var(--background-mod-normal);\n}\n\n.vc-permviewer-modal-perms-item:last-child {\n border: 0;\n}\n\n.vc-permviewer-modal-perms-item-icon {\n border: 1px solid var(--background-mod-strong);\n width: 24px;\n height: 24px;\n}\n\n.vc-permviewer-modal-perms-item .vc-info-icon {\n color: var(--interactive-muted);\n margin-left: auto;\n cursor: pointer;\n transition: color ease-in 0.1s;\n}\n\n.vc-permviewer-modal-perms-item .vc-info-icon:hover {\n color: var(--interactive-icon-active);\n}\n\n/* copy pasted from discord cause impossible to webpack find */\n.vc-permviewer-role-button {\n border-radius: var(--radius-sm);\n color: var(--interactive-icon-default);\n border: 1px solid var(--user-profile-border);\n /* stylelint-disable-next-line value-no-vendor-prefix */\n width: -moz-fit-content;\n width: fit-content;\n height: 24px;\n padding: 4px\n}\n\n.vc-permviewer-role-button:hover {\n background-color: var(--user-profile-background-hover);\n}\n\n.vc-permviewer-granted-by-container {\n max-width: 300px;\n width: auto;\n}\n\n.vc-permviewer-granted-by-content {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n", ".vc-pip-button {\n color: var(--interactive-icon-default);\n}\n\n.vc-pip-button:hover {\n background-color: var(--background-mod-subtle);\n color: var(--interactive-icon-hover);\n}", ".vc-pindms-section-container {\n box-sizing: border-box;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n text-transform: uppercase;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: .02em;\n font-family: var(--font-display);\n font-weight: 600;\n flex: 1 1 auto;\n color: var(--channels-default);\n cursor: pointer;\n}\n\n.vc-pindms-modal-color-picker {\n margin-inline-end: 0;\n\n [class*=\"defaultContainer\"] {\n display: none;\n }\n}\n\n.vc-pindms-modal-content {\n display: grid;\n gap: 1.5em;\n}\n\n.vc-pindms-collapse-icon {\n width: 16px;\n height: 16px;\n color: var(--interactive-icon-default);\n transform: rotate(90deg)\n}\n\n.vc-pindms-collapsed .vc-pindms-collapse-icon {\n transform: rotate(0deg);\n}\n", ".vc-plainFolderIcon-plain {\n /* Without this, they are a bit laggier */\n transition: none !important;\n\n /* Don't show the mini guild icons */\n transform: translateZ(0);\n\n /* The new icons are fully transparent. Add a sane default to match the old behavior */\n background-color: color-mix(in oklab, var(--custom-folder-color, var(--badge-background-default)) 40%, transparent);\n}", ".vc-platform-indicator {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n gap: 2px;\n}\n\n.vc-platform-indicator-profile {\n margin: 0 1px;\n padding: 0 1px;\n}\n\n.vc-platform-indicator-message {\n position: relative;\n vertical-align: top;\n top: -1px;\n}\n", ".vc-ranb-button {\n color: var(--interactive-icon-default);\n padding: 0 0.5em;\n width: 100%;\n font-size: 14px;\n white-space: nowrap;\n box-sizing: border-box;\n}\n\n.vc-ranb-button:hover {\n color: var(--interactive-icon-active);\n}", ".vc-reply-timestamp {\n margin-inline-end: 0.5rem;\n width: unset !important;\n}", ".vc-rdb-badge {\n vertical-align: middle;\n margin-left: 4px;\n}\n\n.vc-rdb-input {\n padding-inline: 12px;\n margin-top: 6px;\n margin-bottom: 12px;\n resize: none;\n overflow: hidden;\n background: transparent;\n border: 1px solid var(--input-border-default, var(--border-muted));\n box-sizing: border-box;\n}\n\n.vc-rdb-placeholder {\n margin-bottom: 4px;\n font-weight: bold;\n font-style: italic;\n color: var(--text-muted);\n}\n\n.vc-rdb-input * {\n font-size: 14px;\n}\n\n.vc-rdb-modal-footer {\n padding: 0;\n}\n\n.vc-rdb-modal-footer .vc-rdb-input {\n margin-bottom: 0;\n background: var(--input-background-default);\n}\n\n.vc-rdb-modal-footer [class*=\"pageControlContainer\"] {\n margin-top: 0;\n white-space: nowrap;\n}\n\n.vc-rdb-review {\n padding-top: 8px !important;\n padding-bottom: 8px !important;\n padding-right: 64px !important;\n}\n\n.vc-rdb-review:hover {\n background: var(--message-background-hover) !important;\n border-radius: 8px;\n}\n\n.vc-rdb-review-comment [class*=\"avatar\"] {\n vertical-align: text-top;\n}\n\n.vc-rdb-review-comment {\n overflow-y: hidden;\n margin-top: 1px;\n line-height: 1.2;\n margin-bottom: 8px;\n color: var(--text-default);\n font-size: 15px;\n}\n\n.vc-rdb-blocked-badge {\n cursor: pointer;\n}\n\n.vc-rdb-block-modal {\n display: grid;\n gap: 0.75em;\n}\n\n.vc-rdb-button-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n}\n\n/* stylelint-disable-next-line media-feature-range-notation */\n@media (max-width: 600px) {\n .vc-rdb-button-grid {\n grid-template-columns: 1fr;\n }\n}\n\n.vc-rdb-block-modal-row {\n display: flex;\n height: 2em;\n gap: 0.5em;\n align-items: center;\n}\n\n.vc-rdb-block-modal-avatar {\n border-radius: 50%;\n height: 2em;\n width: 2em;\n}\n\n.vc-rdb-block-modal-avatar::before {\n content: \"\";\n display: block;\n width: 100%;\n height: 100%;\n background-color: var(--border-subtle);\n}\n\n.vc-rdb-block-modal-username {\n flex-grow: 1;\n}\n\n.vc-rdb-block-modal-unblock {\n cursor: pointer;\n}\n\n.vc-rdb-profile-popout-disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n\n.vc-rdb-vote-column {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 4px;\n}\n\n.vc-rdb-vote-column-buttons {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n.vc-rdb-vote-column-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: 0;\n border-radius: 4px;\n background: transparent;\n color: var(--interactive-muted);\n cursor: pointer;\n}\n\n.vc-rdb-vote-column-button:disabled {\n cursor: default;\n opacity: 0.65;\n}\n\n.vc-rdb-vote-column-button:hover:not(:disabled) {\n background: var(--background-modifier-hover);\n color: var(--interactive-hover);\n}\n\n.vc-rdb-vote-column-score {\n min-width: 15px;\n color: var(--text-muted);\n font-size: 1rem;\n font-weight: 700;\n line-height: 20px;\n text-align: center;\n}\n\n.vc-rdb-vote-column-score-positive,\n.vc-rdb-vote-column-up-selected {\n color: var(--status-positive);\n}\n\n.vc-rdb-vote-column-score-negative,\n.vc-rdb-vote-column-down-selected {\n color: var(--status-danger);\n}\n\n.vc-rdb-vote-column-up-selected:hover:not(:disabled) {\n background: color-mix(in srgb, var(--status-positive) 14%, transparent);\n color: var(--status-positive);\n}\n\n.vc-rdb-vote-column-down-selected:hover:not(:disabled) {\n background: color-mix(in srgb, var(--status-danger) 14%, transparent);\n color: var(--status-danger);\n}\n", ".vc-st-date-picker {\n background-color: var(--input-background-default);\n color: var(--text-default);\n width: 95%;\n padding: 8px 8px 8px 12px;\n margin-bottom: 1em;\n outline: none;\n border: 1px solid var(--input-background-default);\n border-radius: 4px;\n font-weight: 500;\n font-style: inherit;\n font-size: 100%;\n}\n\n.vc-st-format-select {\n margin-bottom: 1em;\n\n --border-subtle: transparent;\n}\n\n.vc-st-format-label {\n --border-subtle: transparent;\n}\n\n.vc-st-modal-header {\n place-content: center space-between;\n}\n\n.vc-st-modal-title {\n margin: 0;\n}\n\n.vc-st-modal-close-button {\n padding: 0;\n}\n\n.vc-st-preview-text {\n margin-bottom: 1em;\n}", ".vc-gp-banner {\n cursor: pointer;\n aspect-ratio: auto 240 / 135;\n height: 334px;\n width: 100%;\n padding-inline: 0.5em;\n box-sizing: border-box;\n object-fit: cover;\n overflow: clip;\n overflow-clip-margin: content-box;\n}\n\n.vc-gp-header {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5em;\n margin: 0.5em;\n}\n\n.vc-gp-icon {\n width: 48px;\n height: 48px;\n cursor: pointer;\n}\n\n.vc-gp-name-and-description {\n display: flex;\n flex-direction: column;\n gap: 0.2em;\n}\n\n.vc-gp-name {\n margin: 0;\n}\n\n.vc-gp-tab-bar {\n border-bottom: 1px solid var(--border-subtle);\n margin: 20px 12px 0;\n display: flex;\n align-items: stretch;\n flex-direction: row;\n justify-content: center;\n}\n\n.vc-gp-tab {\n border-bottom: 2px solid transparent;\n color: var(--interactive-icon-default);\n cursor: pointer;\n line-height: 14px;\n}\n\n.vc-gp-tab-content {\n margin: 1em;\n}\n\n.vc-gp-tab:where(.vc-gp-selected, :hover, :focus) {\n border-bottom-color: var(--interactive-icon-active);\n}\n\n.vc-gp-info {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 1em;\n}\n\n.vc-gp-server-info-pair {\n color: var(--text-default);\n}\n\n.vc-gp-server-info-pair [class*=\"timestamp\"] {\n margin-left: 0;\n}\n\n.vc-gp-owner {\n display: flex;\n align-items: center;\n gap: 0.2em;\n}\n\n.vc-gp-owner-avatar {\n height: 20px;\n border-radius: 50%;\n cursor: pointer;\n}\n\n.vc-gp-scroller {\n max-height: 500px;\n}\n\n.vc-gp-member-row {\n display: flex;\n align-items: center;\n padding-right: 16px;\n cursor: pointer;\n position: relative;\n margin: 1px 0;\n width: 100%;\n}\n\n.vc-gp-member-row:hover {\n background-color: var(--background-mod-subtle);\n}\n\n.vc-gp-member-content {\n flex: 1;\n min-width: 0;\n width: 100%;\n position: relative;\n}\n\n.vc-gp-member-icons {\n user-select: none;\n position: absolute;\n right: 20px;\n z-index: 2;\n}\n\n.vc-gp-mutual-guilds {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n padding-left: 8px;\n}\n\n.vc-gp-guild-icon {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--background-base-low);\n overflow: hidden;\n}\n\n.vc-gp-guild-icon img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.vc-gp-guild-acronym {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 8px;\n font-weight: 600;\n color: var(--text-default);\n text-transform: uppercase;\n}\n\n.vc-gp-guild-count {\n font-size: 12px;\n color: var(--text-muted);\n font-weight: 600;\n}\n\n.vc-gp-scroller [class*=\"listRow\"] {\n margin: 1px 0;\n}\n\n.vc-gp-scroller [class*=\"listRow\"]:hover {\n background-color: var(--background-mod-subtle);\n}\n\n.vc-gp-scroller [class*=\"row\"] {\n margin: 1px 0;\n}\n", "#vc-indicators-container,\n#vc-indicators-compact-container {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n#vc-indicators-indicator-items {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-radius: 24%;\n height: var(--guildbar-avatar-size);\n width: var(--guildbar-avatar-size);\n background-color: var(--background-mod-subtle);\n transition: border-radius 0.15s ease-out, background-color 0.15s ease-out;\n}\n\n.custom-theme-background #vc-indicators-indicator-items {\n background-color: var(--background-mod-strong);\n}\n\n#vc-indicators-indicator-items::before {\n position: absolute;\n content: \"\";\n display: block;\n /* stylelint-disable-next-line length-zero-no-unit */\n width: 0px;\n /* stylelint-disable-next-line length-zero-no-unit */\n height: 0px;\n opacity: 0;\n border-radius: 0 4px 4px 0;\n left: -4px;\n background-color: var(--text-strong);\n transition: height 0.15s ease-out, width 0.15s ease-out,\n opacity 0.15s ease-out;\n}\n\n#vc-indicators-indicator-items:hover::before {\n width: 8px;\n height: 20px;\n opacity: 1;\n}\n\n#vc-indicators-compact-indicator-items {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n#vc-indicators-indicator-items:hover {\n background-color: var(--brand-500);\n}\n\n#vc-friendcount,\n#vc-guildcount {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n width: 100%;\n color: var(--text-default);\n}\n\n#vc-friendcount-icon,\n#vc-guildcount-icon {\n width: var(--size-14);\n height: var(--size-14);\n}", ".vc-shiki-container {\n border: 4px;\n background-color: var(--background-base-lower);\n}\n\n.vc-shiki-root {\n border-radius: 4px;\n}\n\n.vc-shiki-root .vc-shiki-code {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n position: relative;\n font-size: 0.875rem;\n line-height: 1.125rem;\n text-indent: 0;\n white-space: pre-wrap;\n background: transparent;\n border: none;\n}\n\n.vc-shiki-devicon {\n margin-right: 8px;\n user-select: none;\n}\n\n.vc-shiki-plain .vc-shiki-code {\n padding-top: 8px;\n}\n\n.vc-shiki-btns {\n font-size: 1em;\n position: absolute;\n right: 0;\n bottom: 0;\n opacity: 0;\n}\n\n.vc-shiki-root:hover .vc-shiki-btns {\n opacity: 1;\n}\n\n.vc-shiki-btn {\n border-radius: 4px 4px 0 0;\n padding: 4px 8px;\n user-select: none;\n}\n\n.vc-shiki-btn ~ .vc-shiki-btn {\n margin-left: 4px;\n}\n\n.vc-shiki-btn:last-child {\n border-radius: 4px 0;\n}\n\n.vc-shiki-spinner-container {\n align-items: center;\n background-color: rgb(0 0 0 / 60%);\n display: flex;\n position: absolute;\n justify-content: center;\n inset: 0;\n}\n\n.vc-shiki-preview {\n margin-bottom: 2em;\n}\n\n.vc-shiki-lang {\n padding: 0 5px;\n margin-bottom: 6px;\n font-weight: bold;\n text-transform: capitalize;\n display: flex;\n align-items: center;\n}\n\n.vc-shiki-table {\n border-collapse: collapse;\n width: 100%;\n}\n\n.vc-shiki-table-row {\n height: 19px;\n width: 100%;\n}\n\n.vc-shiki-root .vc-shiki-table-cell:first-child {\n border-right: 1px solid transparent;\n padding-left: 5px;\n padding-right: 8px;\n user-select: none;\n white-space: nowrap;\n}\n\n.vc-shiki-root .vc-shiki-table-cell:last-child {\n padding-left: 8px;\n overflow-wrap: anywhere;\n width: 100%;\n}\n", ".vc-user-connection {\n all: unset;\n display: inline-block;\n cursor: pointer;\n}\n\n.vc-sc-tooltip {\n display: inline-flex;\n gap: 0.25em;\n align-items: center;\n}\n\n.vc-sc-connection-name {\n word-break: break-all;\n}\n\n.vc-sc-tooltip-icon {\n min-width: 16px;\n}\n", ".vc-shc-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: 0.65em;\n margin: 0.5em 0;\n min-height: 100%;\n}\n\n.vc-shc-logo {\n width: 12em;\n height: 12em;\n}\n\n.vc-shc-heading-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5em;\n}\n\n.vc-shc-heading-nsfw-icon {\n color: var(--text-default);\n}\n\n.vc-shc-topic-container {\n color: var(--text-default);\n background: var(--background-base-lower);\n border-radius: 5px;\n padding: 10px;\n max-width: 70vw;\n}\n\n.vc-shc-default-emoji-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n background: var(--background-base-lower);\n border-radius: 8px;\n padding: 0.75em;\n margin-left: 0.75em;\n}\n\n.vc-shc-tags-container {\n display: flex;\n flex-direction: column;\n background: var(--background-base-lower);\n border-radius: 5px;\n padding: 0.75em;\n gap: 0.75em;\n max-width: 70vw;\n}\n\n.vc-shc-tags {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n gap: 0.35em;\n}\n\n.vc-shc-allowed-users-and-roles-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n background: var(--background-base-lower);\n border-radius: 5px;\n padding: 0.75em;\n max-width: 70vw;\n}\n\n.vc-shc-allowed-users-and-roles-container-title {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5em;\n}\n\n.vc-shc-allowed-users-and-roles-container-toggle-btn {\n all: unset;\n cursor: pointer;\n display: flex;\n align-items: center;\n color: var(--text-default);\n}\n\n.vc-shc-allowed-users-and-roles-container-permdetails-btn {\n all: unset;\n cursor: pointer;\n display: flex;\n align-items: center;\n color: var(--text-default);\n}\n\n.vc-shc-allowed-users-and-roles-container > [class*=\"members\"] {\n margin-left: 12px;\n flex-wrap: wrap;\n justify-content: center;\n}\n\n.vc-shc-hidden-channel-icon {\n cursor: not-allowed;\n margin-left: 6px;\n z-index: 0;\n}\n\n.vc-shc-channel-list-icon {\n fill: var(--channel-icon);\n}", ".vc-std-wrapper {\n display: flex;\n align-items: center;\n width: max-content;\n max-width: 100%;\n}\n\n.vc-std-wrapper [class*=\"communicationDisabled\"] {\n margin-right: 0;\n}\n", ".vc-sortFriends-wrapper {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n margin-right: 0.5em;\n}\n\n.vc-sortFriends-tooltip {\n max-width: none;\n white-space: nowrap;\n}\n\n.vc-sortFriends-date {\n color: var(--text-muted);\n font-family: var(--font-code);\n}", ".vc-textReplace-input-grid {\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 0.25em 1em;\n align-items: center;\n}\n\n.vc-textReplace-delete-button {\n width: 100%;\n margin-block: 0.75em 0.5em\n}", ".vc-trans-accessory {\n color: var(--text-muted);\n margin-top: 0.5em;\n font-style: italic;\n font-weight: 400;\n line-height: 1.2rem;\n white-space: break-spaces;\n}\n\n.vc-trans-accessory-icon {\n margin-right: 0.25em;\n}\n\n.vc-trans-dismiss {\n all: unset;\n cursor: pointer;\n color: var(--text-link);\n}\n\n.vc-trans-dismiss:is(:hover, :focus) {\n text-decoration: underline;\n}\n\n.vc-trans-auto-translate {\n color: var(--green-360);\n}\n\n.vc-trans-chat-button {\n scale: 1.085;\n}", ".vc-typing-indicator {\n display: flex;\n align-items: center;\n height: 20px;\n}\n\n.vc-typing-indicator-avatars {\n margin-left: 6px;\n}\n\n.vc-typing-indicator-dots {\n margin-left: 6px;\n height: 16px;\n display: flex;\n align-items: center;\n z-index: 0;\n cursor: pointer;\n}\n", ".vc-uvs-speaker {\n color: var(--interactive-icon-default);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.vc-uvs-clickable {\n cursor: pointer;\n}\n\n.vc-uvs-clickable:hover {\n color: var(--interactive-icon-hover);\n}\n\n.vc-uvs-profile-speaker {\n height: var(--custom-nickname-icon-size);\n margin-right: 4px;\n transform: translateY(1.3px);\n}\n\n.vc-uvs-tooltip-container {\n max-width: 50vw;\n}\n\n.vc-uvs-tooltip-content {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.vc-uvs-name {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vc-uvs-guild-icon {\n border-radius: 100%;\n align-self: center;\n}\n\n.vc-uvs-vc-members {\n display: flex;\n gap: 6px;\n}\n", ".vc-usrbg-settings-button {\n width: 100%;\n height: 50px;\n}", ".vc-viewRaw-codeBlock,\n.vc-viewRaw-codeBlock :is(pre, code, [class*=\"codeContainer\"]) {\n max-width: unset;\n width: 100%;\n box-sizing: border-box;\n}\n", ".vc-voice-download {\n width: 24px;\n height: 24px;\n color: var(--interactive-icon-default);\n cursor: pointer;\n position: relative;\n}\n\n.vc-voice-download:hover {\n color: var(--interactive-icon-active);\n}\n", ".vc-vmsg-buttons {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 0.5em;\n margin-bottom: 1em;\n}\n\n.vc-vmsg-preview {\n color: var(--text-default);\n border-radius: 24px;\n background-color: var(--background-base-lower);\n position: relative;\n display: flex;\n align-items: center;\n padding: 0 16px;\n height: 48px;\n}\n\n.vc-vmsg-preview-indicator {\n background: var(--control-secondary-background-default);\n width: 16px;\n height: 16px;\n border-radius: 50%;\n transition: background 0.2s ease-in-out;\n}\n\n.vc-vmsg-preview-recording .vc-vmsg-preview-indicator {\n background: var(--status-danger);\n}\n\n.vc-vmsg-preview-time {\n opacity: 0.8;\n margin: 0 0.5em;\n font-size: 80%;\n\n /* monospace so different digits have same size */\n font-family: var(--font-code);\n}\n\n.vc-vmsg-preview-label {\n opacity: 0.5;\n letter-spacing: 0.125em;\n font-weight: 600;\n flex: 1;\n text-align: center;\n}\n\n.vc-vmsg-error {\n color: var(--text-feedback-critical, #FF5C5C);\n}", ".vc-declutter-accessibility-notice {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.vc-declutter-section-separator {\n margin-top: 12px;\n margin-bottom: 6px;\n}\n\n.vc-declutter-section-title {\n margin-top: 14px;\n margin-bottom: 0;\n font-size: 16px;\n line-height: 20px;\n text-transform: uppercase;\n letter-spacing: 0.02em;\n color: var(--text-muted);\n}\n", ".vc-bactivities-row {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n margin-left: 5px;\n text-align: center;\n gap: 3px;\n}\n\n.vc-bactivities-icon {\n height: var(--icon-size);\n width: var(--icon-size);\n}\n\n.vc-bactivities-icon img {\n width: var(--icon-size);\n height: var(--icon-size);\n object-fit: cover;\n border-radius: 50%;\n}\n\n.vc-bactivities-activity-tooltip {\n padding: 1px;\n}\n\n.vc-bactivities-caret-left,\n.vc-bactivities-caret-right {\n color: #ddd;\n}\n\n.vc-bactivities-caret-left {\n transform: rotate(90deg);\n}\n\n.vc-bactivities-caret-right {\n transform: rotate(-90deg);\n}\n\n.vc-bactivities-controls {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 5px;\n background: var(--background-base-lower-alt);\n border-radius: 3px;\n flex: 1 0;\n margin-top: 10px;\n background-color: var(--user-profile-overlay-background);\n}\n\n.vc-bactivities-controls [class*=\"vc-activities-caret-\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 3px;\n background-color: #ffffff4d;\n}\n\n.vc-bactivities-controls [class*=\"vc-activities-caret-\"].disabled {\n cursor: not-allowed;\n opacity: 0.3;\n}\n\n.vc-bactivities-controls [class*=\"vc-activities-caret-\"]:hover:not(.disabled) {\n background: var(--input-border-default, var(--input-border));\n}\n\n.vc-bactivities-controls .vc-bactivities-controls-carousel {\n display: flex;\n align-items: center;\n}\n\n.vc-bactivities-controls .vc-bactivities-controls-carousel .vc-bactivities-controls-dot {\n margin: 0 4px;\n width: 10px;\n cursor: pointer;\n height: 10px;\n border-radius: 100px;\n background: var(--interactive-muted);\n transition: background 0.3s;\n opacity: 0.6;\n}\n\n.vc-bactivities-controls .vc-bactivities-controls-carousel .vc-bactivities-controls-dot:hover:not(.vc-bactivities-controls-selected) {\n opacity: 1;\n}\n\n.vc-bactivities-controls .vc-bactivities-controls-carousel .vc-bactivities-controls-dot.vc-bactivities-controls-selected {\n opacity: 1;\n background: var(--dot-color, var(--brand-500));\n}\n\n.vc-bactivities-controls-tooltip {\n --background-floating: var(--background-secondary-alt);\n}", ".vc-better-audio-player-canvas {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 1;\n border: none;\n border-radius: inherit;\n}", ".vc-bbr-reason-wrapper {\n display: grid;\n padding-bottom: 12px;\n gap: 4px 12px;\n align-items: center;\n grid-template-columns: 1fr 24px;\n}\n\n.vc-bbr-remove-button {\n color: var(--text-muted);\n align-self: start;\n}\n\n.vc-bbr-duration-row {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.vc-bbr-remove-button:hover {\n color: var(--text-feedback-critical);\n}\n\n.vc-bbr-add-button {\n justify-content: start !important;\n border: 0;\n padding: 2px 12px;\n color: var(--text-muted) !important;\n font-size: 16px;\n}\n\n.vc-bbr-add-button div {\n display: flex;\n justify-content: start;\n align-items: center;\n gap: 12px;\n margin: 0 !important;\n}", "[class*=\"usersList\"] [class*=\"text\"] {\n user-select: text !important;\n}\n\n.vc-bbu-search,\n.vc-bbu-search * {\n border-radius: 0 !important;\n}", ".vc-bi-inviter-avatar {\n margin: 0;\n height: 18px;\n width: 18px;\n position: static;\n flex-shrink: 0;\n}\n\n.vc-bi-header-inner {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px;\n margin: 0;\n margin-bottom: 5px;\n font-size: 14px;\n}\n\n.vc-bi-header-text {\n flex: 1;\n white-space: normal;\n color: var(--text-subtle);\n}\n\n.vc-bi-tooltip-icon {\n color: var(--text-muted);\n width: 18px;\n height: 18px;\n margin-top: 1.5px;\n}", ".channel-badge {\n margin-left: 0.2rem;\n padding: 2px 8px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: bold;\n display: inline-block;\n color: var(--white);\n order: 2;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n}\n\n.badge-container {\n display: flex;\n gap: 0.1rem;\n align-items: center;\n margin-left: 0.2rem;\n order: 2;\n}\n\n.channel-badge-text {\n background-color: #5865F2;\n}\n\n.channel-badge-voice {\n background-color: #3BA55D;\n}\n\n.channel-badge-category {\n background-color: #4F545C;\n}\n\n.channel-badge-directory {\n background-color: #FAA61A;\n}\n\n.channel-badge-thread,\n.channel-badge-public-thread,\n.channel-badge-announcement-thread,\n.channel-badge-private-thread {\n background-color: #7289DA;\n}\n\n.channel-badge-announcement,\n.channel-badge-announcement-channel {\n background-color: #FAA61A;\n}\n\n.channel-badge-rules,\n.channel-badge-stage,\n.channel-badge-media,\n.channel-badge-forum {\n background-color: #5865F2;\n}\n\n.channel-badge-nsfw {\n background-color: #E91E63;\n}\n\n.channel-badge-locked {\n background-color: #B9BBBE;\n}\n\n.channel-badge-unknown {\n background-color: #747F8D;\n}\n", ":root {\n --channeltabs-red: var(--danger-color, #f23f42);\n --channeltabs-blue: #0052b6;\n --channeltabs-yellow: #f0b132;\n --channeltabs-green: #24934f;\n --channeltabs-black: #000;\n --channeltabs-white: #fff;\n --channeltabs-orange: #e67e22;\n --channeltabs-pink: #ff73fa;\n}\n\n.vc-channeltabs-icon {\n height: 1.5rem;\n width: 1.5rem;\n border-radius: 50%;\n}\n\n.vc-channeltabs-guild-acronym-icon {\n height: 1.25rem;\n width: 1.5rem;\n min-width: 1.5rem;\n border-radius: 50%;\n padding-top: 0.25rem;\n background-color: var(--background-primary);\n overflow: hidden;\n}\n\n.vc-channeltabs-name-text {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin-left: 0.125rem;\n font-weight: 400;\n color: var(--text-muted);\n transition:\n color 0.15s ease,\n font-weight 0.1s ease,\n transform 0.2s ease;\n}\n\n.vc-channeltabs-tab-inner {\n border-radius: 12px;\n padding: 0 28px 0 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n transition: gap 0.15s ease, padding 0.2s ease-in-out;\n}\n\n.vc-channeltabs-tab-container,\n.vc-channeltabs-bookmark-container {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n padding: 0 4px;\n}\n\n.vc-channeltabs-bookmark-container {\n position: relative;\n}\n\n.vc-channeltabs-container {\n padding: 4px;\n display: flex;\n flex-direction: column-reverse;\n -webkit-app-region: no-drag;\n background-color: var(--background-primary);\n box-shadow: inset 0 1px 0 var(--background-base-low);\n}\n\n.vc-channeltabs-container-top {\n padding-left: 4px;\n box-shadow: inset 0 -1px 0 var(--background-base-low);\n grid-area: notice;\n z-index: 102;\n}\n\n/* as its in the same region as notices, it needs to hide itself when a notice is shown\n there's no permanent notices, right? */\n[class*=\"notice\"] + .vc-channeltabs-container-top {\n z-index: 1;\n height: 32px;\n overflow: hidden;\n}\n\n.vc-channeltabs-separator {\n width: 98%;\n height: 1px;\n background: var(--input-border-default, var(--input-border));\n margin: 4px auto;\n}\n\n.vc-channeltabs-scroller {\n display: flex;\n flex-direction: row;\n align-items: center;\n overflow-x: auto;\n white-space: nowrap;\n padding-top: 15px;\n padding-bottom: 15px;\n margin-top: -15px;\n margin-bottom: -15px;\n}\n\n.vc-channeltabs-scroller::-webkit-scrollbar {\n display: none;\n}\n\n/* tab scroller for horizontal overflow */\n.vc-channeltabs-tab-scroller {\n display: flex;\n flex-direction: row;\n align-items: center;\n overflow-x: auto;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n padding-top: 16px;\n padding-bottom: 15px;\n margin-top: -15px;\n margin-bottom: -15px;\n}\n\n.vc-channeltabs-tab-scroller-following {\n max-width: 100%;\n}\n\n.vc-channeltabs-tab-scroller::-webkit-scrollbar {\n display: none;\n}\n\n.vc-channeltabs-bookmarks {\n flex-grow: 1;\n overflow: hidden;\n padding: 2px 0 2px 8px;\n}\n\n.vc-channeltabs-bookmark-placeholder-text {\n color: var(--text-muted);\n padding: 0.25rem 0 0 0.25rem;\n}\n\n.vc-channeltabs-bookmark-star {\n fill: none;\n stroke: var(--text-muted);\n stroke-width: 0.075rem;\n transition: all 0.15s ease;\n}\n\n.vc-channeltabs-bookmark-star:hover {\n stroke: var(--interactive-icon-hover);\n}\n\n.vc-channeltabs-bookmark-star-checked {\n fill: var(--main-color, var(--brand-experiment, var(--brand-500)));\n stroke: var(--main-color, var(--brand-experiment, var(--brand-500)));\n}\n\n.vc-channeltabs-bookmark {\n display: flex;\n flex-direction: row;\n max-width: calc(8rem * var(--tab-width-scale, 1));\n padding: 4px 8px;\n border-radius: 4px;\n align-items: center;\n position: relative;\n transition: transform 0.14s ease, border-color 0.14s ease, box-shadow 0.14s ease, background-color 0.14s ease;\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-wider {\n max-width: calc(12rem * var(--tab-width-scale, 1));\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-folder {\n margin-left: 4px;\n margin-right: 4px;\n}\n\n.vc-channeltabs-bookmark .vc-channeltabs-name-text {\n margin-left: 0.25rem;\n margin-right: 0.25rem;\n}\n\n.vc-channeltabs-bookmark-icon {\n height: 1rem;\n width: 1rem;\n border-radius: 50%;\n background-color: var(--background-primary);\n text-align: center;\n}\n\n.vc-channeltabs-channel-info {\n flex-grow: 1;\n overflow: hidden;\n}\n\n.vc-channeltabs-tab {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n border-radius: 12px;\n width: calc(12rem * var(--tab-width-scale, 1));\n min-width: 0;\n margin: 0 4px;\n background-color: transparent;\n border: 1px solid var(--background-mod-muted);\n transition:\n transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1),\n background-color 0.15s ease,\n border-color 0.15s ease,\n box-shadow 0.15s ease,\n opacity 0.15s ease;\n min-height: calc(38px * var(--tab-height-scale, 1));\n padding: calc(6px * var(--tab-height-scale, 1)) 8px;\n position: relative;\n cursor: grab;\n flex-shrink: 0;\n}\n\n.vc-channeltabs-tab:active {\n cursor: grabbing;\n}\n\n.vc-channeltabs-tab-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n z-index: 10;\n opacity: 0;\n background: var(--hover-color, var(--main-color, var(--brand-experiment, var(--brand-500))));\n border-radius: 0 11px 11px 0;\n transition: opacity 0.2s ease;\n}\n\n.vc-channeltabs-tab-resize-handle:hover {\n opacity: 0.7 !important;\n}\n\n.vc-channeltabs-no-resize-handle-animation .vc-channeltabs-tab-resize-handle {\n transition: none !important;\n}\n\n.vc-channeltabs-tab:hover .vc-channeltabs-tab-resize-handle {\n opacity: 0.3;\n}\n\n.vc-channeltabs-tab-resizing {\n pointer-events: none;\n user-select: none;\n}\n\n.vc-channeltabs-tab-resizing * {\n pointer-events: none;\n user-select: none;\n}\n\n.vc-channeltabs-tab.vc-channeltabs-wider:not(.vc-channeltabs-tab-compact) {\n width: calc(16rem * var(--tab-width-scale, 1));\n}\n\n.vc-channeltabs-tab-compact {\n width: auto;\n min-width: calc(3rem * var(--tab-width-scale, 1));\n transition: all 0.4s ease-out;\n}\n\n.vc-channeltabs-tab-compact .vc-channeltabs-tab-inner {\n padding-right: 0;\n transition: padding 0.4s ease-out;\n}\n\n.vc-channeltabs-tab-compact:hover .vc-channeltabs-tab-inner,\n.vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-tab-inner {\n padding-right: 28px;\n}\n\n.vc-channeltabs-tab-compact .vc-channeltabs-name-text {\n max-width: 0;\n opacity: 0;\n overflow: hidden;\n margin-left: 0.125rem;\n transform: translateX(-20px);\n transition:\n max-width 0.4s ease-out,\n opacity 0.4s ease-out,\n transform 0.4s ease-out;\n}\n\n.vc-channeltabs-tab-compact:hover .vc-channeltabs-name-text,\n.vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-name-text {\n max-width: 200px;\n opacity: 1;\n transform: translateX(0);\n}\n\n.vc-channeltabs-tab-selected {\n transform: translateY(-1px);\n background-color: var(--background-base-low);\n border: 1px solid var(--main-color, var(--brand-experiment, var(--brand-500)));\n border-bottom: 2px solid var(--main-color, var(--brand-experiment, var(--brand-500)));\n box-shadow: 0 1px 3px rgb(0 0 0 / 20%);\n}\n\n/* stylelint-disable-next-line no-descending-specificity */\n.vc-channeltabs-dark-theme.vc-channeltabs-tab-selected .vc-channeltabs-name-text {\n font-weight: 600;\n color: var(--white-500);\n}\n\n/* stylelint-disable-next-line no-descending-specificity */\n.vc-channeltabs-light-theme.vc-channeltabs-tab-selected .vc-channeltabs-name-text {\n font-weight: 600;\n}\n\n.vc-channeltabs-tab-selected .vc-channeltabs-guild-acronym-icon span {\n color: var(--white-500);\n}\n\n.vc-channeltabs-tab-container svg {\n -webkit-app-region: no-drag;\n}\n\n.vc-channeltabs-tab-selected svg,\n.vc-channeltabs-tab-selected .vc-channeltabs-close-button svg {\n color: var(--white-500);\n fill: var(--white-500);\n}\n\n.vc-channeltabs-container [class*=\"iconContainer\"] {\n margin: 0 -0.25rem 0 0;\n pointer-events: none;\n height: 1rem;\n transform: scale(0.8);\n}\n\n.vc-channeltabs-container [class*=\"numberBadge\"] {\n background-color: var(--channeltabs-red) !important;\n color: var(--channeltabs-white);\n border-radius: 50%;\n min-width: 16px;\n height: 16px;\n font-size: 11px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n\n.vc-channeltabs-ghost-tab {\n visibility: hidden;\n}\n\n.vc-channeltabs-hoverable:hover,\n.vc-channeltabs-tab:hover:not(.vc-channeltabs-tab-selected) {\n transform: translateY(-1px) scale(1.02);\n background-color: var(--background-secondary-alt);\n border-color: var(--hover-color, var(--border-subtle));\n box-shadow: 0 2px 4px rgb(0 0 0 / 10%);\n}\n\n.vc-channeltabs-tab:active:not(.vc-channeltabs-tab-selected) {\n transform: translateY(0) scale(0.98);\n transition-duration: 0.05s;\n}\n\n.vc-channeltabs-button {\n background-color: transparent;\n color: var(--text-default);\n}\n\n.vc-channeltabs-bookmark-search-shell {\n position: relative;\n width: 28px;\n height: 28px;\n margin-right: 6px;\n flex-shrink: 0;\n}\n\n.vc-channeltabs-bookmark-search-shell-open {\n z-index: 3;\n}\n\n.vc-channeltabs-bookmark-search-field {\n position: absolute;\n right: 0;\n top: 50%;\n width: 0;\n opacity: 0;\n pointer-events: none;\n overflow: hidden;\n transform: translateY(-50%) scaleX(0.92);\n transform-origin: right center;\n transition: width 0.18s ease, opacity 0.15s ease, transform 0.18s ease;\n}\n\n.vc-channeltabs-bookmark-search-shell-open .vc-channeltabs-bookmark-search-field {\n width: 160px;\n opacity: 1;\n pointer-events: auto;\n transform: translateY(-50%) scaleX(1);\n}\n\n.vc-channeltabs-bookmark-search-input {\n padding-right: 34px !important;\n}\n\n.vc-channeltabs-bookmark-search-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 8px;\n position: absolute;\n right: 0;\n top: 0;\n flex-shrink: 0;\n color: var(--text-muted);\n transition: color 0.15s ease;\n}\n\n.vc-channeltabs-bookmark-search-button:hover {\n color: var(--interactive-icon-hover);\n}\n\n.vc-channeltabs-new-button {\n padding: 4px;\n margin: 0 4px;\n border-radius: 4px;\n background-color: var(--background-base-low);\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.vc-channeltabs-new-button:hover {\n background-color: var(--background-mod-subtle);\n transform: scale(1.1);\n}\n\n.vc-channeltabs-new-button:active {\n transform: scale(0.95);\n}\n\n/* stylelint-disable-next-line no-descending-specificity */\n.vc-channeltabs-new-button svg {\n transition: all 0.2s ease;\n}\n\n.vc-channeltabs-new-button:hover svg {\n color: var(--interactive-icon-hover);\n animation: vc-channeltabs-plus-spin 0.3s ease-in-out;\n}\n\n@keyframes vc-channeltabs-plus-spin {\n 0% {\n transform: rotate(0deg) scale(1);\n }\n\n 50% {\n transform: rotate(90deg) scale(1.15);\n }\n\n 100% {\n transform: rotate(90deg) scale(1);\n }\n}\n\n.vc-channeltabs-close-button {\n height: 1rem;\n padding: 0;\n margin: 0 0 0 4px;\n border-radius: 50%;\n color: var(--text-muted);\n transition: all 0.15s ease, transform 0.2s ease-in-out;\n}\n\n.vc-channeltabs-close-button:hover {\n background-color: var(--background-mod-subtle);\n transform: rotate(90deg);\n}\n\n.vc-channeltabs-close-button:active {\n transform: rotate(90deg) scale(0.9);\n}\n\n.vc-channeltabs-tab-selected .vc-channeltabs-close-button {\n color: var(--white-500);\n}\n\n.vc-channeltabs-tab-selected .vc-channeltabs-close-button:hover {\n background-color: color-mix(in srgb, white 15%, transparent);\n transform: rotate(90deg);\n}\n\n.vc-channeltabs-tab-selected .vc-channeltabs-close-button:active {\n transform: rotate(90deg) scale(0.9);\n}\n\n.vc-channeltabs-close-button-compact {\n position: absolute;\n opacity: 0;\n width: 2rem;\n height: 2rem;\n margin-left: 0.35rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n transform: translateX(-10px) scale(0.8);\n transition:\n opacity 0.3s ease-out 0.2s,\n transform 0.3s ease-out 0.2s;\n right: 4px;\n}\n\n.vc-channeltabs-tab-compact:hover .vc-channeltabs-close-button-compact,\n.vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-close-button-compact {\n opacity: 1;\n transform: translateX(0) scale(1);\n}\n\n/* stylelint-disable-next-line no-descending-specificity */\n.vc-channeltabs-close-button.vc-channeltabs-close-button-compact:hover {\n background-color: var(--background-mod-subtle);\n transform: translateX(0) scale(1) rotate(90deg) !important;\n transition:\n opacity 0.3s ease-out 0.2s,\n transform 0.2s ease-in-out,\n background-color 0.15s ease;\n}\n\n/* stylelint-disable-next-line no-descending-specificity */\n.vc-channeltabs-close-button.vc-channeltabs-close-button-compact:active {\n transform: translateX(0) scale(0.9) rotate(90deg) !important;\n transition:\n opacity 0.3s ease-out 0.2s,\n transform 0.2s ease-in-out,\n background-color 0.15s ease;\n}\n\n.vc-channeltabs-preview-tab {\n display: flex;\n flex-direction: row;\n align-items: center;\n width: calc(12rem * var(--tab-width-scale, 1));\n padding: 0.125rem 0;\n min-width: 0;\n border-radius: 0.25rem;\n border: 1px solid var(--input-border-default, var(--input-border));\n}\n\n.vc-channeltabs-preview-tab-compact {\n width: unset;\n min-width: unset;\n}\n\n.vc-channeltabs-preview-tab > :is(.vc-channeltabs-emoji-container,\n .vc-channeltabs-typing-indicator,\n [data-has-mention]) {\n display: none;\n}\n\n.vc-channeltabs-preview-text {\n overflow: hidden;\n}\n\n.vc-channeltabs-tab-container .vc-channeltabs-new-button,\n.vc-channeltabs-tab-container .vc-channeltabs-hoverable,\n.vc-channeltabs-tab-container .vc-channeltabs-button {\n -webkit-app-region: no-drag;\n}\n\n.vc-channeltabs-tab-container .vc-channeltabs-hoverable,\n.vc-channeltabs-tab-container .vc-channeltabs-button,\n/* stylelint-disable-next-line no-descending-specificity */\n.vc-channeltabs-tab-container svg {\n -webkit-app-region: no-drag;\n}\n\n/* Red glow effect for tabs with mentions */\n/* stylelint-disable-next-line no-descending-specificity */\n.vc-channeltabs-tab:has([data-has-mention=\"true\"]) {\n animation: vc-channeltabs-mention-pulse 2s ease-in-out infinite;\n box-shadow: 0 0 8px color-mix(in srgb, var(--danger-color, rgb(242 63 66)) 60%, transparent), 0 0 16px color-mix(in srgb, var(--danger-color, rgb(242 63 66)) 30%, transparent);\n}\n\n@keyframes vc-channeltabs-mention-pulse {\n\n /* stylelint-disable-next-line rule-empty-line-before */\n 0%,\n 100% {\n box-shadow: 0 0 8px color-mix(in srgb, var(--danger-color, rgb(242 63 66)) 60%, transparent), 0 0 16px color-mix(in srgb, var(--danger-color, rgb(242 63 66)) 30%, transparent);\n }\n\n 50% {\n box-shadow: 0 0 12px color-mix(in srgb, var(--danger-color, rgb(242 63 66)) 80%, transparent), 0 0 24px color-mix(in srgb, var(--danger-color, rgb(242 63 66)) 50%, transparent);\n }\n}\n\n/* Enhance glow for selected tabs with mentions */\n.vc-channeltabs-tab-selected:has([data-has-mention=\"true\"]) {\n box-shadow:\n 0 1px 3px rgb(0 0 0 / 20%),\n 0 0 12px color-mix(in srgb, var(--danger-color, rgb(242 63 66)) 80%, transparent),\n 0 0 24px color-mix(in srgb, var(--danger-color, rgb(242 63 66)) 50%, transparent);\n}\n\n/* Pink Nitro glow effect (easter egg) */\n.vc-channeltabs-tab-nitro {\n animation: vc-channeltabs-nitro-pulse 3s ease-in-out infinite;\n box-shadow: 0 0 10px rgb(255 115 250 / 70%), 0 0 20px rgb(255 115 250 / 40%);\n}\n\n@keyframes vc-channeltabs-nitro-pulse {\n\n /* stylelint-disable-next-line rule-empty-line-before */\n 0%,\n 100% {\n box-shadow: 0 0 10px rgb(255 115 250 / 70%), 0 0 20px rgb(255 115 250 / 40%);\n }\n\n 50% {\n box-shadow: 0 0 16px rgb(255 115 250 / 90%), 0 0 32px rgb(255 115 250 / 60%);\n }\n}\n\n/* Enhanced Nitro glow for selected tab */\n.vc-channeltabs-tab-selected.vc-channeltabs-tab-nitro {\n box-shadow:\n 0 1px 3px rgb(0 0 0 / 20%),\n 0 0 16px rgb(255 115 250 / 90%),\n 0 0 32px rgb(255 115 250 / 60%);\n}\n\n/* Nitro icon gradient animation */\n.vc-channeltabs-tab-nitro .vc-channeltabs-tab-inner svg {\n filter: drop-shadow(0 0 2px rgb(255 115 250 / 80%));\n}\n\n.vc-channeltabs-tab-nitro .vc-channeltabs-tab-inner svg path {\n fill: rgb(255 115 250) !important;\n animation: vc-channeltabs-nitro-icon-gradient 3s ease-in-out infinite;\n}\n\n@keyframes vc-channeltabs-nitro-icon-gradient {\n\n /* stylelint-disable-next-line rule-empty-line-before */\n 0%,\n 100% {\n fill: rgb(255 115 250);\n }\n\n 50% {\n fill: rgb(255 180 250);\n }\n}\n\n/* quests active gradient when quests are running */\n.vc-channeltabs-tab-quests-active {\n position: relative;\n overflow: visible;\n}\n\n.vc-channeltabs-tab-quests-active::before {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: 11px;\n background: linear-gradient(135deg,\n transparent,\n transparent 25%,\n rgb(114 137 218) 40%,\n rgb(88 101 242) 50%,\n rgb(71 82 196) 60%,\n transparent 75%,\n transparent);\n background-size: 300% 300%;\n animation: vc-channeltabs-quests-diagonal 5s linear infinite;\n opacity: 0.8;\n filter: blur(2px);\n pointer-events: none;\n}\n\n.vc-channeltabs-tab-quests-active::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: 11px;\n animation: vc-channeltabs-quests-glow 3s ease-in-out infinite;\n pointer-events: none;\n}\n\n@keyframes vc-channeltabs-quests-diagonal {\n\n /* stylelint-disable-next-line rule-empty-line-before */\n 0%,\n 40% {\n background-position: 100% 0;\n opacity: 0;\n }\n\n 50% {\n opacity: 0.8;\n }\n\n 60%,\n 100% {\n background-position: 0 100%;\n opacity: 0;\n }\n}\n\n@keyframes vc-channeltabs-quests-glow {\n 0% {\n box-shadow: 0 0 8px 1px rgb(114 137 218 / 60%);\n }\n\n 33% {\n box-shadow: 0 0 8px 1px rgb(88 101 242 / 60%);\n }\n\n 66% {\n box-shadow: 0 0 8px 1px rgb(71 82 196 / 60%);\n }\n\n 100% {\n box-shadow: 0 0 8px 1px rgb(114 137 218 / 60%);\n }\n}\n\n/* Enhanced gradient for selected Quests tab with active quests */\n.vc-channeltabs-tab-selected.vc-channeltabs-tab-quests-active::before {\n opacity: 1;\n filter: blur(3px);\n}\n\n.vc-channeltabs-tab-selected.vc-channeltabs-tab-quests-active::after {\n animation: vc-channeltabs-quests-glow-selected 3s ease-in-out infinite;\n}\n\n@keyframes vc-channeltabs-quests-glow-selected {\n 0% {\n box-shadow: 0 0 12px 2px rgb(114 137 218 / 80%);\n }\n\n 33% {\n box-shadow: 0 0 12px 2px rgb(88 101 242 / 80%);\n }\n\n 66% {\n box-shadow: 0 0 12px 2px rgb(71 82 196 / 80%);\n }\n\n 100% {\n box-shadow: 0 0 12px 2px rgb(114 137 218 / 80%);\n }\n}\n\n/* Disable Quests active animations when setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-quests-active-animation .vc-channeltabs-tab-quests-active::before,\n.vc-channeltabs-container.vc-channeltabs-no-quests-active-animation .vc-channeltabs-tab-quests-active::after {\n animation: none !important;\n opacity: 0 !important;\n}\n\n/* Tab closing animation */\n@keyframes vc-channeltabs-tab-close {\n 0% {\n opacity: 1;\n transform: scale(1);\n max-width: 100%;\n margin: 0 4px;\n }\n\n 50% {\n opacity: 0.5;\n transform: scale(0.95);\n max-width: 50%;\n }\n\n 100% {\n opacity: 0;\n transform: scale(0.9) translateX(-20px);\n }\n}\n\n.vc-channeltabs-tab-closing {\n animation: vc-channeltabs-tab-close 0.2s ease-in-out forwards;\n pointer-events: none;\n overflow: hidden;\n}\n\n/* New tab slide-in animation */\n@keyframes vc-channeltabs-tab-enter {\n 0% {\n opacity: 0;\n transform: scale(0.8) translateX(-20px);\n }\n\n 60% {\n transform: scale(1.05) translateX(0);\n }\n\n 100% {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n}\n\n.vc-channeltabs-tab-entering {\n animation: vc-channeltabs-tab-enter 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n/* Icon scale on selection */\n.vc-channeltabs-tab-selected .vc-channeltabs-icon,\n.vc-channeltabs-tab-selected .vc-channeltabs-guild-acronym-icon {\n animation: vc-channeltabs-icon-pop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n@keyframes vc-channeltabs-icon-pop {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(1.15);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n\n/* Drag and drop visual feedback */\n.vc-channeltabs-tab-dragging {\n opacity: 0.5;\n transform: rotate(3deg);\n cursor: grabbing !important;\n z-index: 1000;\n transition: none !important;\n}\n\n/* Disable tab transitions when any tab is being dragged for smoother reordering */\n.vc-channeltabs-tab-container:has(.vc-channeltabs-tab-dragging) .vc-channeltabs-tab:not(.vc-channeltabs-tab-dragging) {\n transition: transform 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 0.2s ease, box-shadow 0.2s ease;\n}\n\n.vc-channeltabs-tab-drop-target {\n position: relative;\n}\n\n.vc-channeltabs-tab-drop-target::before {\n content: '';\n position: absolute;\n left: -4px;\n top: 0;\n bottom: 0;\n width: 3px;\n background: var(--main-color, var(--brand-experiment, var(--brand-500)));\n border-radius: 3px;\n animation: vc-channeltabs-drop-indicator 0.5s ease-in-out infinite;\n}\n\n@keyframes vc-channeltabs-drop-indicator {\n\n /* stylelint-disable-next-line rule-empty-line-before */\n 0%,\n 100% {\n opacity: 0.6;\n box-shadow: 0 0 8px var(--main-color, var(--brand-experiment, var(--brand-500)));\n }\n\n 50% {\n opacity: 1;\n box-shadow: 0 0 12px var(--main-color, var(--brand-experiment, var(--brand-500)));\n }\n}\n\n.vc-channeltabs-tab-container {\n transition: all 0.2s ease-out;\n}\n\n/* animation override settings */\n/* stylelint-disable no-descending-specificity */\n\n/* Hover animation - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-hover-animation .vc-channeltabs-tab:hover:not(.vc-channeltabs-tab-selected) {\n transform: none !important;\n}\n\n/* Selection animation - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-selection-animation .vc-channeltabs-tab-selected {\n transform: none !important;\n}\n\n/* Drag & drop animation - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-drag-animation .vc-channeltabs-tab-dragging {\n opacity: 1 !important;\n transform: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-drag-animation .vc-channeltabs-tab-drop-target::before {\n display: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-drag-animation .vc-channeltabs-tab-drop-target {\n transform: none !important;\n background-color: transparent !important;\n border-color: var(--background-mod-muted) !important;\n box-shadow: none !important;\n}\n\n/* Enter/exit animation - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-enter-exit-animation .vc-channeltabs-tab-entering {\n animation: none !important;\n}\n\n/* Also disable closing animation for instant disappear */\n.vc-channeltabs-container.vc-channeltabs-no-enter-exit-animation .vc-channeltabs-tab-closing {\n animation: none !important;\n opacity: 0 !important;\n display: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-enter-exit-animation .vc-channeltabs-tab {\n transition: opacity 0.2s ease-out,\n transform 0.2s ease-in-out,\n background-color 0.15s ease !important;\n}\n\n/* Icon pop animation - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-icon-pop-animation .vc-channeltabs-tab-selected .vc-channeltabs-icon,\n.vc-channeltabs-container.vc-channeltabs-no-icon-pop-animation .vc-channeltabs-tab-selected .vc-channeltabs-guild-acronym-icon {\n animation: none !important;\n}\n\n/* Selected tab border - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-selected-border .vc-channeltabs-tab-selected {\n border: 1px solid var(--background-mod-muted) !important;\n border-bottom: 1px solid var(--background-mod-muted) !important;\n}\n\n/* Selected tab background - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-selected-background .vc-channeltabs-tab-selected {\n background-color: transparent !important;\n}\n\n/* Tab shadows - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-tab-shadows .vc-channeltabs-tab,\n.vc-channeltabs-container.vc-channeltabs-no-tab-shadows .vc-channeltabs-tab-selected,\n.vc-channeltabs-container.vc-channeltabs-no-tab-shadows .vc-channeltabs-tab:hover {\n box-shadow: none !important;\n}\n\n/* Close button rotation - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-close-rotation .vc-channeltabs-tab-selected .vc-channeltabs-close-button:hover {\n transform: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-close-rotation .vc-channeltabs-close-button:hover {\n transform: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-close-rotation .vc-channeltabs-tab-selected .vc-channeltabs-close-button:active {\n transform: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-close-rotation .vc-channeltabs-close-button:active {\n transform: none !important;\n}\n\n/* Plus button animation - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-plus-animation .vc-channeltabs-new-button:hover {\n transform: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-plus-animation .vc-channeltabs-new-button:active {\n transform: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-plus-animation .vc-channeltabs-new-button:hover svg {\n animation: none !important;\n}\n\n/* Mention glow - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-mention-glow .vc-channeltabs-tab:has([data-has-mention=\"true\"]) {\n animation: none !important;\n box-shadow: 0 1px 3px rgb(0 0 0 / 20%) !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-mention-glow .vc-channeltabs-tab-selected:has([data-has-mention=\"true\"]) {\n box-shadow: 0 1px 3px rgb(0 0 0 / 20%) !important;\n}\n\n/* Compact mode expansion animation - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact {\n transition: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact .vc-channeltabs-name-text {\n transition: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-close-button-compact {\n transition: none !important;\n}\n\n/* Also disable tab-inner padding transition */\n.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact .vc-channeltabs-tab-inner {\n transition: none !important;\n}\n\n/* Make close button appear instantly with more specificity */\n.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact:hover .vc-channeltabs-close-button-compact,\n.vc-channeltabs-container.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-close-button-compact {\n transition: none !important;\n transition-delay: 0s !important;\n}\n\n/* Tab positioning - disable if setting is off for INSTANT position changes */\n.vc-channeltabs-container.vc-channeltabs-no-tab-positioning .vc-channeltabs-tab-container {\n transition: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-tab-positioning .vc-channeltabs-tab {\n transition: none !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-tab-positioning .vc-channeltabs-tab-container:has(.vc-channeltabs-tab-dragging) .vc-channeltabs-tab:not(.vc-channeltabs-tab-dragging) {\n transition: none !important;\n}\n\n/* Compact auto-expand selected - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-compact-auto-expand .vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-tab-inner {\n padding-right: 0 !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-compact-auto-expand .vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-name-text {\n max-width: 0 !important;\n opacity: 0 !important;\n transform: translateX(-20px) !important;\n}\n\n/* Hide close button on selected compact tabs when auto-expand is disabled */\n.vc-channeltabs-container.vc-channeltabs-no-compact-auto-expand .vc-channeltabs-tab-compact.vc-channeltabs-tab-selected .vc-channeltabs-close-button-compact {\n opacity: 0 !important;\n pointer-events: none;\n}\n\n/* Compact hover expansion - disable if setting is off */\n.vc-channeltabs-container.vc-channeltabs-no-compact-hover-expand .vc-channeltabs-tab-compact:hover .vc-channeltabs-tab-inner {\n padding-right: 0 !important;\n}\n\n.vc-channeltabs-container.vc-channeltabs-no-compact-hover-expand .vc-channeltabs-tab-compact:hover .vc-channeltabs-name-text {\n max-width: 0 !important;\n opacity: 0 !important;\n transform: translateX(-20px) !important;\n}\n\n/* Hide close button on hover for compact tabs when hover-expand is disabled */\n.vc-channeltabs-container.vc-channeltabs-no-compact-hover-expand .vc-channeltabs-tab-compact:hover .vc-channeltabs-close-button-compact {\n opacity: 0 !important;\n pointer-events: none;\n}\n\n/* Drag and drop visual feedback */\n.vc-channeltabs-bookmarks-drop-target {\n background-color: color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 15%, transparent);\n border: 1px dashed color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 65%, transparent);\n border-radius: 6px;\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-dragging {\n opacity: 0.55;\n transform: scale(0.98);\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-target {\n border-color: color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 70%, var(--border-subtle));\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 35%, transparent);\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-before::before,\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-after::after {\n content: \"\";\n position: absolute;\n top: 3px;\n bottom: 3px;\n width: 2px;\n border-radius: 999px;\n background-color: var(--main-color, var(--brand-experiment, var(--brand-500)));\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 30%, transparent);\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-before::before {\n left: -3px;\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-after::after {\n right: -3px;\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-before {\n transform: translateX(5px);\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-drop-after {\n transform: translateX(-5px);\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-folder-drop-target {\n background-color: color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 22%, transparent);\n border: 1px solid color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 80%, var(--border-subtle));\n transform: scale(1.03);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 20%, transparent);\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-folder-expanded {\n background-color: var(--background-mod-strong);\n}\n\n/* Folder item styling - indented and visually connected to folder */\n.vc-channeltabs-bookmark.vc-channeltabs-folder-item {\n margin-left: 0.5rem;\n border-left: 2px solid var(--background-mod-muted);\n padding-left: 0.5rem;\n opacity: 0.9;\n background-color: var(--background-secondary-alt);\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-folder-item:hover {\n opacity: 1;\n background-color: var(--background-mod-subtle);\n}\n\n/* Active bookmark visual indicator */\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-active {\n border: 1px solid var(--main-color, var(--brand-experiment, var(--brand-500)));\n box-shadow: 0 0 4px var(--main-color, var(--brand-experiment, var(--brand-500)));\n background-color: color-mix(in srgb, var(--main-color, var(--brand-experiment, var(--brand-500))) 15%, transparent);\n}\n\n.vc-channeltabs-bookmark.vc-channeltabs-bookmark-active:hover {\n box-shadow: 0 0 6px var(--hover-color, var(--main-color, var(--brand-experiment, var(--brand-500))));\n}\n\n/* keybind Settings Styles */\n.channelTabs-keybind-settings {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 8px 0;\n}\n\n.channelTabs-keybind-input {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 12px;\n background-color: var(--background-secondary-alt);\n border-radius: 8px;\n transition: background-color 0.2s ease;\n}\n\n.channelTabs-keybind-input:hover {\n background-color: var(--background-secondary-alt);\n}\n\n.channelTabs-keybind-info {\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1;\n}\n\n.channelTabs-keybind-controls {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n}\n\n.channelTabs-keybind-button {\n padding: 8px 16px;\n background-color: var(--background-base-low);\n border: 2px solid var(--input-border-default, var(--input-border));\n border-radius: 8px;\n cursor: pointer;\n min-width: 140px;\n text-align: center;\n font-family: var(--font-code);\n font-weight: 600;\n color: var(--text-strong);\n transition: all 0.2s ease;\n outline: none;\n box-shadow: 0 0 0 1px var(--background-mod-muted);\n}\n\n.channelTabs-keybind-button:hover:not(:disabled) {\n background-color: var(--background-mod-subtle);\n border-color: var(--hover-color, var(--main-color, var(--brand-experiment, var(--brand-500))));\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgb(0 0 0 / 20%);\n}\n\n.channelTabs-keybind-button:active:not(:disabled) {\n transform: translateY(0);\n box-shadow: 0 1px 4px rgb(0 0 0 / 20%);\n}\n\n.channelTabs-keybind-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.channelTabs-keybind-button.listening {\n background: linear-gradient(135deg, var(--main-color, var(--brand-experiment, var(--brand-500))) 0%, var(--brand-experiment-560) 100%);\n color: var(--white);\n border-color: var(--main-color, var(--brand-experiment, var(--brand-500)));\n animation: keybind-pulse 1.5s ease-in-out infinite;\n box-shadow: 0 0 12px var(--main-color, var(--brand-experiment, var(--brand-500)));\n}\n\n@keyframes keybind-pulse {\n\n /* stylelint-disable-next-line rule-empty-line-before */\n 0%,\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n\n 50% {\n opacity: 0.85;\n transform: scale(1.02);\n }\n}\n\n.channelTabs-keybind-conflict {\n color: var(--text-feedback-critical);\n font-size: 12px;\n font-weight: 500;\n margin-top: 2px;\n animation: shake 0.3s ease;\n}\n\n@keyframes shake {\n\n /* stylelint-disable-next-line rule-empty-line-before */\n 0%,\n 100% {\n transform: translateX(0);\n }\n\n 25% {\n transform: translateX(-4px);\n }\n\n 75% {\n transform: translateX(4px);\n }\n}\n\n/* Tab Number Badge Styles */\n.vc-channeltabs-tab-number-badge {\n background-color: rgb(0 0 0 / 25%);\n color: var(--text-default);\n border-radius: 50%;\n width: 20px;\n height: 20px;\n min-width: 20px;\n max-width: 20px;\n font-size: 12px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition:\n opacity 0.2s ease-out,\n transform 0.2s ease-out,\n max-width 0.2s ease-out,\n margin 0.2s ease-out;\n flex-shrink: 0;\n overflow: hidden;\n}\n\n/* position: Left */\n.vc-channeltabs-tab-number-badge[data-position=\"left\"] {\n margin-right: 0.5rem;\n transition:\n opacity 0.2s ease-out,\n transform 0.2s ease-out,\n max-width 0.2s ease-out,\n margin-right 0.2s ease-out;\n}\n\n/* position: Right */\n.vc-channeltabs-tab-number-badge[data-position=\"right\"] {\n margin-left: 0.5rem;\n transition:\n opacity 0.2s ease-out,\n transform 0.2s ease-out,\n max-width 0.2s ease-out,\n margin-left 0.2s ease-out;\n}\n\n/* hover effect (slight scale up) */\n.vc-channeltabs-tab:hover .vc-channeltabs-tab-number-badge {\n transform: scale(1.05);\n}\n\n/* directional slide animations for compact mode */\n.vc-channeltabs-tab-compact:not(:hover, .vc-channeltabs-tab-selected) .vc-channeltabs-tab-number-badge[data-position=\"right\"] {\n opacity: 0;\n transform: translateX(-6px) scale(0.95);\n max-width: 0;\n margin-left: 0;\n pointer-events: none;\n}\n\n.vc-channeltabs-tab-compact:not(:hover, .vc-channeltabs-tab-selected) .vc-channeltabs-tab-number-badge[data-position=\"left\"] {\n opacity: 0;\n transform: translateX(-6px) scale(0.95);\n max-width: 0;\n margin-right: 0;\n pointer-events: none;\n}\n\n/* disable transitions when compact expand animation is disabled */\n.vc-channeltabs-no-compact-animation .vc-channeltabs-tab-number-badge {\n transition: none !important;\n}\n", ".vc-clickableroles-trigger {\n cursor: pointer;\n}\n\n.vc-clickableroles-popout {\n background-color: var(--background-surface-highest);\n border-radius: 8px;\n padding: 12px;\n width: 250px;\n max-height: var(--reference-position-layer-max-height, 350px);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n}\n\n.vc-clickableroles-list {\n max-height: 260px;\n min-height: 0;\n flex: 1;\n}\n\n.vc-clickableroles-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 8px;\n}\n\n.vc-clickableroles-color {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.vc-clickableroles-name {\n font-weight: 600;\n color: var(--interactive-text-default);\n}\n\n.vc-clickableroles-count {\n color: var(--text-muted);\n margin-left: auto;\n font-size: 12px;\n}\n\n.vc-clickableroles-empty {\n padding: 8px;\n text-align: center;\n color: var(--text-muted);\n font-size: 13px;\n}\n\n.vc-clickableroles-user {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 6px;\n cursor: pointer;\n border-radius: 4px;\n color: var(--interactive-text-default);\n font-size: 14px;\n}\n\n.vc-clickableroles-user:hover {\n background-color: var(--interactive-background-hover);\n}\n\n.vc-clickableroles-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n}\n\n.vc-clickableroles-overflow {\n padding: 6px;\n text-align: center;\n color: var(--text-muted);\n font-size: 12px;\n}\n", ".vc-cmdpal-shell {\n --cmdpal-top: clamp(24px, calc(32vh - 28px), calc(100vh - 504px));\n\n position: fixed;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n padding-top: var(--cmdpal-top);\n pointer-events: none;\n}\n\n.vc-cmdpal-backdrop {\n position: absolute;\n inset: 0;\n background: rgb(0 0 0 / 45%);\n backdrop-filter: blur(6px);\n pointer-events: auto;\n animation: vc-cmdpal-backdrop-in 150ms ease-out;\n}\n\n@keyframes vc-cmdpal-backdrop-in {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.vc-cmdpal-root {\n --cmdpal-bg: #111114;\n --cmdpal-bg-elevated: #0e0e11;\n --cmdpal-footer-bg: #151518;\n --cmdpal-text: #a0a0a0;\n --cmdpal-text-bright: #f0f0f0;\n --cmdpal-text-muted: #6b6b6b;\n --cmdpal-raised: #1c1c20;\n --cmdpal-soft: #252528;\n --cmdpal-selection: #2a2a2e;\n --cmdpal-hairline: rgb(255 255 255 / 12%);\n\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n width: 680px;\n max-width: 90vw;\n max-height: min(480px, calc(100vh - var(--cmdpal-top, 24px) - 24px));\n pointer-events: auto;\n border-radius: 14px;\n overflow: hidden;\n background: var(--cmdpal-bg);\n border: 1px solid var(--cmdpal-hairline);\n box-shadow:\n 0 20px 60px rgb(0 0 0 / 50%),\n 0 4px 16px rgb(0 0 0 / 35%);\n transform-origin: top center;\n color: var(--cmdpal-text);\n animation: vc-cmdpal-in 130ms ease-out;\n}\n\n@keyframes vc-cmdpal-in {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.vc-cmdpal-root-compact {\n max-height: none;\n}\n\n.vc-cmdpal-root-form {\n max-height: min(720px, 85vh, calc(100vh - var(--cmdpal-top, 24px) - 24px));\n height: auto;\n}\n\n.vc-cmdpal-header {\n display: flex;\n align-items: center;\n gap: 12px;\n min-height: 56px;\n padding: 0 18px;\n flex-shrink: 0;\n background: var(--cmdpal-bg);\n}\n\n.vc-cmdpal-root:not(.vc-cmdpal-root-compact) .vc-cmdpal-header {\n border-bottom: 1px solid var(--cmdpal-hairline);\n}\n\n.vc-cmdpal-search-icon {\n width: 18px;\n height: 18px;\n color: var(--cmdpal-text-muted);\n flex-shrink: 0;\n}\n\n.vc-cmdpal-input {\n flex: 1;\n background: none;\n border: none;\n outline: none;\n font-size: 17px;\n font-weight: 400;\n font-family: var(--font-primary);\n color: var(--cmdpal-text-bright);\n caret-color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-input::placeholder {\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n padding: 0;\n border: 1px solid var(--cmdpal-hairline);\n border-radius: 7px;\n background: var(--cmdpal-raised);\n color: var(--cmdpal-text);\n cursor: pointer;\n flex-shrink: 0;\n transition: color 100ms ease, background 100ms ease;\n}\n\n.vc-cmdpal-back:hover {\n background: var(--cmdpal-soft);\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-breadcrumb {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 500;\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-breadcrumb-icon {\n width: 14px;\n height: 14px;\n color: var(--cmdpal-text);\n}\n\n.vc-cmdpal-chip-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border-radius: 7px;\n background: var(--cmdpal-raised);\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.vc-cmdpal-chip-wrap-sm {\n width: 22px;\n height: 22px;\n border-radius: 6px;\n}\n\n.vc-cmdpal-chip-img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.vc-cmdpal-body {\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n background: var(--cmdpal-bg);\n}\n\n.vc-cmdpal-results {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--cmdpal-soft) transparent;\n}\n\n.vc-cmdpal-results::-webkit-scrollbar {\n width: 8px;\n}\n\n.vc-cmdpal-results::-webkit-scrollbar-thumb {\n background: var(--cmdpal-soft);\n border-radius: 4px;\n}\n\n.vc-cmdpal-results::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.vc-cmdpal-section {\n padding-bottom: 4px;\n}\n\n.vc-cmdpal-section-label {\n padding: 10px 10px 6px;\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-row {\n display: flex;\n align-items: center;\n gap: 12px;\n height: 40px;\n padding: 0 10px;\n border-radius: 10px;\n cursor: pointer;\n}\n\n.vc-cmdpal-row-selected {\n background: var(--cmdpal-selection);\n}\n\n.vc-cmdpal-row-icon {\n width: 15px;\n height: 15px;\n color: var(--cmdpal-text);\n flex-shrink: 0;\n}\n\n.vc-cmdpal-row-selected .vc-cmdpal-row-icon {\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-row-text {\n display: flex;\n align-items: baseline;\n gap: 8px;\n flex: 1;\n min-width: 0;\n}\n\n.vc-cmdpal-row-label {\n font-size: 14px;\n font-weight: 450;\n color: var(--cmdpal-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-cmdpal-row-selected .vc-cmdpal-row-label {\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-row-sublabel {\n font-size: 12.5px;\n color: var(--cmdpal-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-cmdpal-row-accessory {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.vc-cmdpal-row-kind {\n font-size: 12px;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-alias-chip {\n font-size: 11px;\n padding: 2px 6px;\n border-radius: 5px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-raised);\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-empty {\n padding: 40px 0;\n text-align: center;\n font-size: 14px;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 40px;\n padding: 0 14px;\n border-top: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-footer-bg);\n flex-shrink: 0;\n}\n\n.vc-cmdpal-footer-hint {\n font-size: 12.5px;\n font-weight: 500;\n color: var(--cmdpal-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-cmdpal-footer-actions {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-shrink: 0;\n}\n\n.vc-cmdpal-footer-action {\n display: flex;\n align-items: center;\n gap: 7px;\n font-size: 12.5px;\n font-weight: 500;\n color: var(--cmdpal-text);\n}\n\n.vc-cmdpal-footer-divider {\n width: 1px;\n height: 14px;\n background: var(--cmdpal-hairline);\n}\n\n.vc-cmdpal-shortcut {\n display: inline-flex;\n gap: 3px;\n}\n\n.vc-cmdpal-key {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 19px;\n height: 19px;\n padding: 0 5px;\n border-radius: 5px;\n background: var(--cmdpal-soft);\n font-size: 11px;\n font-family: var(--font-primary);\n color: var(--cmdpal-text);\n}\n\n.vc-cmdpal-panel {\n position: absolute;\n right: 10px;\n bottom: 10px;\n width: 300px;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n border-radius: 12px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-bg-elevated);\n box-shadow: 0 12px 40px rgb(0 0 0 / 50%);\n overflow: hidden;\n animation: vc-cmdpal-panel-in 110ms ease-out;\n}\n\n@keyframes vc-cmdpal-panel-in {\n from {\n opacity: 0;\n transform: translateY(6px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n.vc-cmdpal-panel-title {\n padding: 12px 14px 6px;\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-panel-list {\n overflow-y: auto;\n padding: 0 6px 6px;\n scrollbar-width: thin;\n scrollbar-color: var(--cmdpal-soft) transparent;\n}\n\n.vc-cmdpal-panel-row {\n display: flex;\n align-items: center;\n gap: 10px;\n height: 36px;\n padding: 0 8px;\n border-radius: 8px;\n cursor: pointer;\n}\n\n.vc-cmdpal-panel-row-selected {\n background: var(--cmdpal-selection);\n}\n\n.vc-cmdpal-panel-icon {\n width: 13px;\n height: 13px;\n color: var(--cmdpal-text);\n flex-shrink: 0;\n}\n\n.vc-cmdpal-panel-label {\n font-size: 13px;\n font-weight: 450;\n color: var(--cmdpal-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-cmdpal-panel-row-selected .vc-cmdpal-panel-label {\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-form {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 18px;\n}\n\n.vc-cmdpal-root-form .vc-cmdpal-body {\n flex: none;\n min-height: 0;\n}\n\n.vc-cmdpal-root-form .vc-cmdpal-form {\n flex: none;\n overflow: visible;\n}\n\n.vc-cmdpal-field {\n display: flex;\n flex-direction: column;\n gap: 7px;\n}\n\n.vc-cmdpal-field-label {\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.01em;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-field-input,\n.vc-cmdpal-field-textarea {\n width: 100%;\n box-sizing: border-box;\n padding: 9px 11px;\n border-radius: 9px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-raised);\n font-size: 14px;\n font-family: var(--font-primary);\n color: var(--cmdpal-text-bright);\n outline: none;\n resize: vertical;\n transition: border-color 100ms ease, background 100ms ease;\n}\n\n.vc-cmdpal-field-input:focus,\n.vc-cmdpal-field-textarea:focus {\n border-color: rgb(255 255 255 / 18%);\n background: var(--cmdpal-soft);\n}\n\n.vc-cmdpal-field-input::placeholder,\n.vc-cmdpal-field-textarea::placeholder {\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-textarea-stack {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vc-cmdpal-markdown-preview {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.vc-cmdpal-markdown-preview-label {\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-markdown-preview-body {\n padding: 10px 11px;\n border-radius: 9px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-bg-elevated);\n overflow-wrap: break-word;\n overflow: hidden;\n}\n\n.vc-cmdpal-message-preview {\n pointer-events: none;\n}\n\n.vc-cmdpal-preview-attachments {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n}\n\n.vc-cmdpal-preview-image {\n display: block;\n max-width: 100%;\n max-height: 220px;\n border-radius: 8px;\n object-fit: contain;\n}\n\n.vc-cmdpal-preview-video {\n display: block;\n max-width: 100%;\n max-height: 220px;\n border-radius: 8px;\n}\n\n.vc-cmdpal-preview-file {\n display: inline-flex;\n align-items: center;\n width: fit-content;\n max-width: 100%;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-raised);\n font-size: 13px;\n color: var(--cmdpal-text);\n word-break: break-all;\n}\n\n.vc-cmdpal-attachments {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.vc-cmdpal-attachments-label {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n width: fit-content;\n padding: 7px 11px;\n border-radius: 9px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-raised);\n font-size: 13px;\n color: var(--cmdpal-text);\n cursor: pointer;\n}\n\n.vc-cmdpal-attachments-input {\n display: none;\n}\n\n.vc-cmdpal-attachments-list {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.vc-cmdpal-attachments-item {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 5px 9px;\n border-radius: 8px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-bg-elevated);\n font-size: 12px;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-attachments-remove {\n border: none;\n background: transparent;\n padding: 0;\n font-size: 12px;\n color: var(--text-link, var(--brand-500));\n cursor: pointer;\n}\n\n.vc-cmdpal-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.vc-cmdpal-chip {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 7px 11px;\n border-radius: 9px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-raised);\n font-size: 13px;\n font-weight: 450;\n font-family: var(--font-primary);\n color: var(--cmdpal-text);\n cursor: pointer;\n transition: border-color 100ms ease, background 100ms ease, color 100ms ease;\n}\n\n.vc-cmdpal-chip:hover {\n background: var(--cmdpal-soft);\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-chip-selected {\n border-color: rgb(255 255 255 / 22%);\n background: var(--cmdpal-selection);\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-chip-icon {\n width: 14px;\n height: 14px;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-picker {\n position: relative;\n}\n\n.vc-cmdpal-picker-input {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n box-sizing: border-box;\n padding: 9px 11px;\n border-radius: 9px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-raised);\n transition: border-color 100ms ease, background 100ms ease;\n}\n\n.vc-cmdpal-picker-input-focused {\n border-color: rgb(255 255 255 / 18%);\n background: var(--cmdpal-soft);\n}\n\n.vc-cmdpal-picker-input-field {\n flex: 1;\n min-width: 0;\n border: none;\n background: transparent;\n padding: 0;\n font-size: 14px;\n font-family: var(--font-primary);\n color: var(--cmdpal-text-bright);\n outline: none;\n}\n\n.vc-cmdpal-picker-input-field::placeholder {\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-picker-list {\n margin-top: 6px;\n padding: 4px;\n border-radius: 10px;\n border: 1px solid var(--cmdpal-hairline);\n background: var(--cmdpal-bg-elevated);\n box-shadow: 0 12px 40px rgb(0 0 0 / 50%);\n max-height: 180px;\n min-height: 0;\n overflow: hidden auto;\n overscroll-behavior: contain;\n scrollbar-width: thin;\n scrollbar-color: var(--cmdpal-soft) transparent;\n animation: vc-cmdpal-panel-in 110ms ease-out;\n}\n\n.vc-cmdpal-picker-list::-webkit-scrollbar {\n width: 8px;\n}\n\n.vc-cmdpal-picker-list::-webkit-scrollbar-thumb {\n background: var(--cmdpal-soft);\n border-radius: 4px;\n}\n\n.vc-cmdpal-picker-item {\n display: flex;\n align-items: center;\n gap: 9px;\n height: 34px;\n flex-shrink: 0;\n padding: 0 8px;\n border-radius: 7px;\n font-size: 13px;\n color: var(--cmdpal-text);\n cursor: pointer;\n}\n\n.vc-cmdpal-picker-item-selected {\n background: var(--cmdpal-selection);\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-picker-icon {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n object-fit: cover;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-form-error {\n padding: 9px 11px;\n border-radius: 9px;\n border: 1px solid color-mix(in srgb, var(--text-danger) 30%, transparent);\n background: color-mix(in srgb, var(--text-danger) 8%, transparent);\n font-size: 13px;\n color: var(--text-danger);\n}\n\n.vc-cmdpal-detail {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 22px;\n}\n\n.vc-cmdpal-detail-heading {\n font-size: 30px;\n font-weight: 600;\n letter-spacing: -0.01em;\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-detail-body {\n font-size: 14px;\n color: var(--cmdpal-text);\n}\n\n.vc-cmdpal-detail-rows {\n display: flex;\n flex-direction: column;\n}\n\n.vc-cmdpal-detail-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 9px 0;\n border-bottom: 1px solid var(--cmdpal-hairline);\n}\n\n.vc-cmdpal-detail-row:last-child {\n border-bottom: none;\n}\n\n.vc-cmdpal-detail-row-label {\n font-size: 13px;\n color: var(--cmdpal-text-muted);\n}\n\n.vc-cmdpal-detail-row-value {\n font-size: 13px;\n font-weight: 500;\n color: var(--cmdpal-text-bright);\n}\n\n.vc-cmdpal-hotkey-setting {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .vc-cmdpal-backdrop,\n .vc-cmdpal-root,\n .vc-cmdpal-panel,\n .vc-cmdpal-picker-list {\n animation: none;\n }\n}\n", ".vc-content-warning-container {\n filter: blur(5px) brightness(30%);\n transition: filter 0.2s ease-in-out;\n cursor: pointer;\n}\n\n.vc-content-warning-enter {\n filter: none;\n}\n\n.vc-content-warning-leave {\n filter: blur(5px) brightness(30%);\n}", ".vc-cursor-buddy-modal {\n display: flex;\n flex-direction: column;\n gap: 15px;\n margin-top: 10px;\n}\n\n.vc-cursor-buddy-color {\n display: flex;\n align-items: center;\n gap: 10px;\n}", ".vc-custom-sounds-card {\n padding: 1em 1em 0;\n}\n\n.vc-custom-sounds-id {\n color: var(--text-muted);\n}\n\n.vc-custom-sounds-upload {\n display: inline;\n}\n\n.vc-custom-sounds-seasonal-title {\n margin-top: 16px;\n padding-top: 8px;\n border-top: 1px solid var(--background-mod-muted);\n}\n\n.vc-custom-sounds-sound-section {\n margin-bottom: 16px;\n}\n\n.vc-custom-sounds-url-input {\n width: 100%;\n padding: 8px;\n background: var(--input-background-default, var(--input-background));\n border: none;\n border-radius: 3px;\n color: var(--text-default);\n}\n\n.vc-custom-sounds-buttons {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.vc-custom-sounds-search {\n margin-bottom: 16px;\n}\n\n.vc-custom-sounds-search input {\n width: 100%;\n padding: 8px;\n background: var(--input-background-default, var(--input-background));\n border: none;\n border-radius: 3px;\n color: var(--text-default);\n}\n\n.vc-custom-sounds-sounds-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.vc-custom-sounds-override-controls {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.vc-custom-sounds-file-input {\n display: none;\n}", ".vc-cmt-info-card {\n background-color: var(--background-feedback-info);\n border: 1px solid var(--icon-feedback-info);\n padding: 8px;\n border-radius: var(--radius-xs);\n margin: 10px 0;\n}\n\n.vc-cmt-demo-message-container {\n position: sticky;\n background: var(--background-base-lowest);\n padding: 10px 0;\n cursor: pointer;\n top: -8px;\n z-index: 10;\n border: solid grey 1px;\n border-radius: 5px;\n}", ".vc-discord-dev-banner-text {\n white-space: pre-wrap;\n padding: 2px;\n}\n\n.vc-discord-dev-banner-error {\n margin-top: 8px;\n color: var(--text-feedback-critical);\n}\n\n.vc-discord-dev-banner-icons {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n height: 1em;\n width: 1em;\n margin-right: 0.25em;\n}\n\n.vc-discord-dev-banner-input {\n width: 100%;\n resize: none;\n overflow: hidden;\n background-color: var(--background-base-low);\n color: var(--text-default);\n border: 1px solid var(--border-subtle) !important;\n border-radius: 12px;\n outline: none;\n margin-top: 12px;\n}", ".vc-drag-favorite-emotes-indicator::before {\n content: \"\";\n position: absolute;\n z-index: 1;\n top: 4px;\n right: 0;\n left: 2px;\n height: calc(100% - (var(--custom-emoji-picker-constants-emoji-container-padding-vertical) * 2));\n width: 4px;\n transform: translateX(-4px);\n background-color: var(--green-360);\n border-radius: 2px;\n}\n\n.vc-drag-favorite-emotes-wrapper {\n inset: 0;\n flex-direction: row;\n}\n\n.vc-drag-favorite-emotes-item {\n background-size: 40px;\n height: 40px;\n width: 40px;\n display: block;\n}", ".vc-dragify-ghost-container {\n position: fixed;\n inset: 0;\n pointer-events: none;\n z-index: 9999;\n}\n\n.vc-dragify-ghost {\n position: fixed;\n top: 0;\n left: 0;\n pointer-events: none;\n color: var(--text-normal, #fff);\n opacity: 1;\n animation: vc-dragify-fade-in 200ms ease-out forwards;\n will-change: transform;\n}\n\n.vc-dragify-ghost-exit {\n animation: vc-dragify-fade-out 200ms ease-in forwards;\n}\n\n.vc-dragify-card {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n min-width: 220px;\n max-width: 320px;\n border-radius: 6px;\n background: rgb(0 0 0 / 70%);\n border: 1px solid rgb(255 255 255 / 10%);\n box-shadow: 0 12px 40px rgb(0 0 0 / 35%);\n backdrop-filter: blur(12px);\n transform: translateZ(0);\n color: var(--text-default, #fff);\n font-family: var(--font-code);\n line-height: 1.4;\n animation: none;\n will-change: transform;\n}\n\n.vc-dragify-icon {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n background: rgb(255 255 255 / 10%);\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n flex-shrink: 0;\n color: var(--text-default, #fff);\n font-weight: 600;\n}\n\n.vc-dragify-icon-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.vc-dragify-icon-text {\n font-size: 13px;\n color: var(--text-default, #fff);\n}\n\n.vc-dragify-body {\n display: flex;\n flex-direction: column;\n min-width: 0;\n flex: 1;\n}\n\n.vc-dragify-title-row {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n}\n\n.vc-dragify-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-default, #fff);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-dragify-voice-icon {\n flex-shrink: 0;\n color: var(--interactive-normal, #b9bbbe);\n}\n\n.vc-dragify-voice-icon-muted {\n color: var(--status-danger, #ed4245);\n}\n\n.vc-dragify-voice-icon-stream {\n color: var(--status-positive, #3ba55d);\n}\n\n.vc-dragify-subtitle {\n font-size: 11px;\n color: var(--text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-dragify-badge {\n font-size: 10px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--text-muted);\n margin-left: auto;\n}\n\n@keyframes vc-dragify-fade-in {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes vc-dragify-fade-out {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .vc-dragify-ghost {\n animation: none;\n }\n\n .vc-dragify-ghost-exit {\n animation: none;\n opacity: 0;\n }\n}\n", ".vc-plugins-management-cards.vc-plugins-grid {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n}\n\n.vc-plugins-management-cards .vc-addon-card {\n width: auto;\n height: auto;\n}\n\n.vc-plugins-management-cards .vc-addon-title-container {\n width: max-content;\n}\n\n.vc-plugins-management-cards .vc-addon-title {\n position: static;\n overflow: visible;\n}\n\n.vc-plugins-management-cards .vc-addon-note {\n max-width: 400px;\n}", ".vc-exitsounds-input-row {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.vc-exitsounds-input-wrapper {\n flex: 1;\n}\n\n.vc-exitsounds-guild-icon {\n width: 24px;\n height: 24px;\n border-radius: 4px;\n margin-right: 8px;\n vertical-align: middle;\n}\n", ".export-contacts-button {\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n min-width: 40px;\n -webkit-app-region: no-drag;\n border-radius: 4px;\n margin: 0 8px;\n padding: 2px 8px;\n position: relative;\n font-size: 16px;\n line-height: 20px;\n cursor: pointer;\n font-weight: 500;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex-shrink: 0;\n outline: 0;\n background-color: #5865f2;\n color: var(--status-positive-text);\n}\n\n.export-contacts-button:hover {\n background-color: #454fbf;\n}", ".vc-file-upload-progress-wrap {\n margin-top: 8px;\n border-radius: 8px;\n border: 1px solid var(--border-subtle);\n padding: 8px 10px;\n background: var(--background-secondary);\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.vc-file-upload-progress-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.vc-file-upload-progress-label {\n font-size: 12px;\n color: var(--text-default);\n}\n\n.vc-file-upload-progress-meta {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vc-file-upload-progress-attempt {\n font-size: 12px;\n color: var(--text-muted);\n}\n\n.vc-file-upload-progress-percent {\n font-size: 12px;\n color: var(--text-default);\n white-space: nowrap;\n}\n\n.vc-file-upload-progress-cancel {\n border: none;\n border-radius: 6px;\n background: var(--button-danger-background);\n color: var(--white-500);\n font-size: 11px;\n padding: 3px 8px;\n cursor: pointer;\n}\n\n.vc-file-upload-progress-track {\n width: 100%;\n height: 6px;\n background: var(--background-tertiary);\n border-radius: 999px;\n}\n\n.vc-file-upload-progress-fill {\n height: 100%;\n border-radius: 999px;\n background: var(--brand-500);\n transition: width 200ms ease;\n}\n\n.vc-file-upload-progress-file {\n font-size: 11px;\n color: var(--text-default);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vc-file-upload-progress-wrap[data-phase=\"failed\"] .vc-file-upload-progress-fill {\n background: var(--status-danger);\n}\n\n.vc-file-upload-progress-wrap[data-phase=\"success\"] .vc-file-upload-progress-fill {\n background: var(--status-positive);\n}\n\n.vc-file-upload-settings-fallback-order-list {\n display: grid;\n gap: 6px;\n}\n\n.vc-file-upload-settings-fallback-order-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid var(--border-subtle);\n background: var(--background-secondary);\n color: var(--text-default);\n cursor: grab;\n}\n\n.vc-file-upload-settings-fallback-order-item[data-dragging=\"true\"] {\n background: var(--background-modifier-hover);\n}\n\n.vc-file-upload-settings-fallback-order-label {\n color: var(--text-default);\n}\n\n.vc-file-upload-settings-fallback-order-handle {\n color: var(--text-muted);\n font-size: 12px;\n}\n\n.vc-file-upload-settings-fallback-order-actions {\n margin-top: 8px;\n}\n\n.vc-file-upload-settings-group {\n display: grid;\n gap: 10px;\n}\n\n.vc-file-upload-settings-service-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 8px;\n}\n\n.vc-file-upload-settings-service-option {\n min-height: 38px;\n border: 1px solid var(--border-subtle);\n border-radius: 8px;\n background: var(--background-secondary);\n color: var(--text-default);\n cursor: pointer;\n padding: 8px 10px;\n text-align: left;\n}\n\n.vc-file-upload-settings-service-option:hover {\n background: var(--background-modifier-hover);\n}\n\n.vc-file-upload-settings-service-option[data-selected=\"true\"] {\n border-color: var(--brand-500);\n background: var(--background-modifier-selected);\n}\n\n.vc-file-upload-settings-service-option-label {\n font-size: 13px;\n font-weight: 500;\n}\n\n.vc-file-upload-settings-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n", ".vc-findreply-paginator {\n margin-top: inherit !important;\n}\n\n.vc-findreply-close {\n align-items: inherit !important;\n line-height: 0 !important;\n}\n\n.vc-findreply-div {\n background-color: var(--background-base-lowest);\n display: flex;\n flex-direction: row;\n align-items: center;\n width: fit-content;\n padding: 10px;\n gap: 10px;\n}", ".eq-googlefonts-results {\n max-height: 400px;\n overflow-y: auto;\n}\n\n.eq-googlefonts-card {\n padding: 16px;\n cursor: pointer !important;\n background: var(--background-secondary-alt);\n border: 1px solid var(--background-base-low);\n}\n\n.eq-googlefonts-card:hover {\n background: var(--background-mod-subtle);\n cursor: pointer !important;\n}\n\n.eq-googlefonts-preview {\n display: flex;\n flex-direction: column;\n gap: 8px;\n cursor: pointer !important;\n}", ".vc-friend-codes-card {\n padding: 20px;\n margin-bottom: var(--custom-margin-margin-small);\n border-width: 1px;\n border-style: solid;\n border-radius: 5px;\n border-color: var(--background-base-low);\n background-color: var(--background-secondary-alt);\n}\n\n.vc-friend-codes-card-title span {\n color: var(--text-default);\n font-family: var(--font-primary);\n font-size: 14px;\n font-weight: 400;\n}\n\n.vc-friend-codes-info-header {\n margin-top: 16px;\n margin-bottom: 8px;\n color: var(--text-default);\n text-transform: uppercase;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: .02em;\n font-family: var(--font-display);\n font-weight: 600;\n}\n\n.vc-friend-codes-text {\n display: flex;\n justify-content: center;\n align-items: center;\n}", ".vc-friendship-ranks-flex {\n width: 100%;\n justify-content: center;\n height: 18px;\n}\n\n.vc-friendship-ranks-img {\n display: flex;\n width: 100%;\n text-align: center;\n place-content: center center;\n margin: 0;\n gap: 4px;\n}\n\n.vc-friendship-ranks-text {\n padding: 1em;\n text-align: center;\n}\n\n.vc-friendship-ranks-decoration {\n vertical-align: middle;\n display: inline-flex;\n align-items: center;\n}\n\n.vc-friendship-ranks-icon {\n width: 16px;\n height: 16px;\n}", ".vc-boo-icon {\n height: 42px;\n}\n\n#vc-boo-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n background-color: var(--background-primary);\n height: 30px;\n width: 48px;\n margin-left: auto;\n margin-right: auto;\n color: var(--text-default);\n fill: var(--text-default);\n}\n\n.vc-boo-clickable {\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.vc-boo-clickable:hover {\n opacity: 0.8;\n}\n\n.vc-boo-clickable:active {\n opacity: 0.6;\n}\n\n/* modal styling */\n.vc-boo-ghosted-entry {\n padding: 12px;\n cursor: pointer;\n border-radius: 8px;\n margin-bottom: 8px;\n background-color: var(--background-secondary-alt);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background-color 0.1s ease;\n}\n\n.vc-boo-ghosted-entry:hover {\n background-color: var(--background-mod-subtle);\n}\n\n.vc-boo-user-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n\n.vc-boo-clear {\n margin-right: 16px;\n}\n\n.vc-boo-modal-header {\n flex-grow: 1;\n}\n\n.vc-boo-modal-content {\n padding: 16px 0;\n}\n\n.vc-boo-modal-text {\n color: var(--text-muted);\n}", ".vc-gif-collections-sort-container {\n padding: 12px;\n background-color: var(--background-secondary-alt);\n border-radius: 8px;\n margin-bottom: 16px;\n}\n\n.vc-gif-collections-sort-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-strong);\n margin-bottom: 8px;\n}\n\n.vc-gif-collections-sort-divider {\n margin: 10px 0;\n border-top: 1px solid var(--border-subtle);\n}\n\n.vc-gif-collections-sort-description,\n.vc-gif-collections-sort-section-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-default);\n margin-bottom: 8px;\n}\n\n.vc-gif-collections-sort-section {\n margin-top: 12px;\n}\n\n.vc-gif-collections-sort-option {\n display: flex;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.vc-gif-collections-sort-label {\n font-size: 14px;\n font-weight: 400;\n color: var(--text-default);\n cursor: pointer;\n display: flex;\n align-items: center;\n}\n\n.vc-gif-collections-sort-input {\n margin-right: 10px;\n cursor: pointer;\n accent-color: var(--brand-experiment);\n}\n\n.vc-gif-collections-sort-label:hover {\n color: var(--text-strong);\n}\n\n.vc-gif-collections-modal {\n background-color: var(--modal-background) !important;\n border-radius: 8px;\n}\n\n.vc-gif-collections-modal-header {\n padding: 16px;\n background-color: var(--background-secondary-alt);\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.vc-gif-collections-modal-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-strong);\n}\n\n.vc-gif-collections-modal-content {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.vc-gif-collections-info-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding: 8px 0;\n}\n\n.vc-gif-collections-info-row:last-child {\n border-bottom: none;\n}\n\n.vc-gif-collections-info-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-default);\n}\n\n.vc-gif-collections-info-text {\n font-size: 14px;\n color: var(--text-muted);\n max-width: 70%;\n white-space: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-gif-collections-modal-footer {\n padding: 16px;\n background-color: var(--background-secondary-alt);\n display: flex;\n justify-content: flex-end;\n}\n\n.vc-gif-collections-rename-text {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-default);\n margin: 16px 0 2px;\n}\n\n.vc-gif-collections-rename-input {\n outline: 0 solid transparent;\n transition: outline 0.2s;\n border-radius: 4px;\n}\n\n.vc-gif-collections-input-warning {\n outline: 1px solid var(--text-feedback-critical);\n}\n\n.vc-gif-collections-warning-text {\n margin-top: 16px;\n font-size: 14px;\n color: var(--text-feedback-critical);\n}\n\n.vc-gif-collections-buttons {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));\n gap: 8px;\n max-height: 200px;\n overflow: hidden auto;\n}\n\n.vc-gif-collections-button {\n min-width: 0;\n text-align: center;\n padding: 8px;\n background-color: var(--background-secondary);\n color: var(--text-default);\n border: none;\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.15s;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.vc-gif-collections-button:hover {\n background-color: var(--background-modifier-hover);\n}\n", ".vc-github-repos-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vc-github-repos-header {\n color: var(--text-default);\n}\n\n.vc-github-repos-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vc-github-repos-star-icon {\n color: var(--text-status-idle);\n fill: var(--text-status-idle);\n flex-shrink: 0;\n}\n\n.vc-github-repos-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 2px;\n padding-top: 12px;\n border-top: 1px solid\n var(\n --profile-body-divider-color,\n var(--input-border-default, var(--input-border))\n );\n}\n\n.vc-github-repos-show-more {\n color: var(--text-muted);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.vc-github-repos-show-more:hover {\n color: var(--text-default);\n text-decoration: underline;\n}\n\n/* Sub-tabs */\n\n.vc-github-repos-subtabs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n min-width: 0;\n border-bottom: 1px solid\n var(\n --profile-body-divider-color,\n var(--input-border-default, var(--input-border))\n );\n padding-bottom: 6px;\n}\n\n.vc-github-repos-subtabs-list {\n display: flex;\n align-items: center;\n gap: 4px;\n overflow-x: auto;\n flex: 0 1 auto;\n min-width: 0;\n scrollbar-width: none;\n}\n\n.vc-github-repos-subtabs-list::-webkit-scrollbar {\n display: none;\n}\n\n.vc-github-repos-subtab {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: var(--radius-round);\n color: var(--text-muted);\n font-size: 12px;\n font-weight: 500;\n white-space: nowrap;\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n\n.vc-github-repos-subtab:hover {\n background-color: var(--background-mod-subtle);\n color: var(--text-default);\n}\n\n.vc-github-repos-subtab-active,\n.vc-github-repos-subtab-active:hover {\n background-color: var(--background-mod-strong);\n color: var(--text-default);\n}\n\n.vc-github-repos-subtab-avatar {\n width: 14px;\n height: 14px;\n border-radius: var(--radius-round);\n flex-shrink: 0;\n}\n\n.vc-github-repos-subtab-count {\n color: var(--text-faint);\n}\n\n.vc-github-repos-sort-toggle {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: var(--radius-xs);\n color: var(--text-muted);\n font-size: 12px;\n font-weight: 500;\n white-space: nowrap;\n cursor: pointer;\n flex-shrink: 0;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n\n.vc-github-repos-sort-toggle:hover {\n background-color: var(--background-mod-subtle);\n color: var(--text-default);\n}\n\n.vc-github-repos-sort-icon {\n flex-shrink: 0;\n}\n\n/* Repo card (song-spotlight style) */\n\n.vc-github-repos-card {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 8px;\n border-radius: var(--radius-sm);\n cursor: pointer;\n position: relative;\n transition: background-color 0.15s ease;\n}\n\n.vc-github-repos-card:hover {\n background-color: var(--background-mod-subtle);\n}\n\n.vc-github-repos-art {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: var(--radius-sm);\n flex-shrink: 0;\n}\n\n.vc-github-repos-art-icon {\n width: 20px;\n height: 20px;\n object-fit: contain;\n}\n\n.vc-github-repos-info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n flex: 1;\n gap: 1px;\n}\n\n.vc-github-repos-name {\n color: var(--text-strong);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vc-github-repos-description {\n color: var(--text-muted);\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vc-github-repos-meta {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 2px;\n}\n\n.vc-github-repos-stars {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--text-muted);\n font-size: 11px;\n}\n\n.vc-github-repos-language {\n display: flex;\n align-items: center;\n gap: 5px;\n color: var(--text-muted);\n font-size: 11px;\n}\n\n.vc-github-repos-language-color {\n width: var(--size-sm);\n height: var(--size-sm);\n border-radius: var(--radius-round);\n display: inline-block;\n}\n\n.vc-github-repos-link {\n cursor: pointer;\n fill: var(--interactive-icon-default);\n flex-shrink: 0;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.vc-github-repos-link:hover {\n fill: var(--interactive-icon-hover);\n}\n\n.vc-github-repos-card:hover .vc-github-repos-link {\n opacity: 1;\n}\n\n/* Modal */\n\n.vc-github-repos-modal {\n width: 100%;\n max-width: 900px;\n background-color: var(--background-base-lower);\n}\n\n.vc-github-repos-modal-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 0;\n}\n\n.vc-github-repos-modal-list {\n max-height: 60vh;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--scrollbar-thin-thumb) var(--scrollbar-thin-track);\n}\n\n.vc-github-repos-modal-footer-close {\n margin-right: 5px;\n}\n\n.vc-github-repos-modal-footer-close,\n.vc-github-repos-modal-footer-github {\n color: var(--text-default);\n background-color: color-mix(in srgb, var(--background-base-low) 90%, white);\n border: 0;\n}\n\n.vc-github-repos-modal-footer-close:hover,\n.vc-github-repos-modal-footer-github:hover {\n background-color: color-mix(in srgb, var(--background-base-low) 75%, white);\n}\n\n.vc-github-repos-modal-footer {\n background-color: var(--background-base-lower);\n}\n\n.vc-github-repos-loading {\n color: var(--text-default);\n margin-top: 10px;\n}\n\n.vc-github-repos-error {\n color: var(--text-feedback-critical);\n margin-top: 10px;\n}\n\n/* Tab variant styles */\n\n.vc-github-repos-container.vc-github-repos-tab {\n margin-top: 10px;\n padding: 8px 12px;\n height: 97%;\n width: 100%;\n box-sizing: border-box;\n display: grid;\n grid-template-rows: auto auto 1fr auto;\n gap: 6px;\n overflow: hidden;\n position: relative;\n}\n\n.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-list {\n overflow: hidden scroll;\n scrollbar-width: thin;\n scrollbar-color: var(--scrollbar-thin-thumb) var(--scrollbar-thin-track);\n align-content: start;\n}\n\n.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-card {\n padding: 4px 6px;\n}\n\n.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-art {\n width: 32px;\n height: 32px;\n}\n\n.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-art-icon {\n width: 16px;\n height: 16px;\n}\n\n.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-name {\n font-size: 13px;\n line-height: 1.2;\n}\n\n.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-description {\n font-size: 11px;\n}\n\n.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-language,\n.vc-github-repos-container.vc-github-repos-tab .vc-github-repos-stars {\n font-size: 10px;\n}\n", ".vc-hide-messages-eye {\n width: 16px;\n height: 16px;\n margin-right: 0.2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n}", ".vc-hideservers-button-wrapper {\n display: flex;\n justify-content: center;\n margin: 0 0 8px;\n}\n\n.vc-hideservers-button {\n max-width: 48px;\n font-size: 60%;\n background-color: var(--background-primary);\n color: var(--text-default);\n}\n\n.vc-hideservers-list {\n flex: 1 1 auto;\n}\n\n/* copied from blocked row */\n.vc-hideservers-row {\n height: 62px;\n display: flex;\n align-items: center;\n flex-direction: row;\n margin-left: 20px;\n margin-right: 20px;\n border-top: 1px solid var(--input-border-default, var(--input-border));\n border-bottom: 1px solid transparent;\n justify-content: space-between;\n}\n\n.vc-hideservers-guildicon {\n display: flex;\n align-items: center;\n margin-right: 1em;\n}\n\n.vc-hideservers-guildicon img {\n border-radius: 50%;\n}\n\n.vc-hideservers-name {\n flex-grow: 1;\n}\n\n.vc-hideservers-row-button {\n margin-left: auto;\n}\n\n.vc-hideservers-folder-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-right: 20px;\n}", ".vc-home-typing-dots {\n margin-right: 2px;\n}", ".vc-i-remember-you-header-container {\n display: contents;\n justify-content: space-between;\n align-items: center;\n flex-direction: column;\n}\n\n.vc-i-remember-you-header-name {\n margin-top: 16px;\n}\n\n.vc-i-remember-you-header-id {\n display: inline-block;\n font-size: 0.8em;\n font-weight: normal;\n opacity: 0.75;\n cursor: pointer;\n margin-left: 6px;\n}\n\n.vc-i-remember-you-header-id:hover {\n opacity: 1;\n}\n\n.vc-i-remember-you-header-btns {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 350px));\n gap: 10px;\n margin-top: 8px;\n}\n\n.vc-i-remember-you-header {\n color: var(--text-default);\n}\n\n.vc-i-remember-you-rows {\n gap: 5px;\n flex-direction: column;\n}\n\n.vc-i-remember-you-search {\n margin-top: 10px;\n}\n\n.vc-i-remember-you-search-user {\n flex-direction: column;\n padding-top: 18px;\n}\n\n.vc-i-remember-you-user-avatar {\n cursor: pointer;\n margin-right: 0;\n}\n\n.vc-i-remember-you-user-row {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 4px;\n align-items: flex-start;\n}\n\n.vc-i-remember-you-user-id {\n align-self: flex-start;\n opacity: 0.75;\n height: min-content;\n cursor: pointer;\n}\n\n.vc-i-remember-you-user-id:hover {\n opacity: 1;\n}\n\n.vc-i-remember-you-user {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n width: 100%;\n margin-top: 0;\n}\n\n.vc-i-remember-you-user-username {\n margin-top: 2px;\n}\n\n.vc-i-remember-you-user-tooltip {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}", "/* Icon grid */\n.vc-icons-tab-grid-container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));\n gap: 8px;\n}\n\n.vc-icon-box {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.vc-icon-container {\n padding: 12px;\n border-radius: 8px;\n transition: background-color 0.15s ease;\n}\n\n.vc-icon-container:hover {\n background-color: var(--background-modifier-hover);\n}\n\n.vc-icon-icon {\n transition: transform 0.15s ease, filter 0.15s ease;\n}\n\n.vc-icon-container:hover .vc-icon-icon {\n transform: scale(1.1);\n filter: brightness(1.5);\n}\n\n.vc-icon-title {\n font-size: 0.75rem;\n margin-top: 4px;\n text-align: center;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 64px;\n}\n\n.vc-icon-tab-search-bar-grid {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.vc-icon-tab-search-bar-grid>div:first-child {\n flex: 1;\n}\n\n.vc-icon-sentinel {\n height: 32px;\n}\n\n/* Modal */\n.vc-ic-modal-header {\n position: relative;\n padding: 16px 16px 16px 24px;\n}\n\n.vc-ic-modal-header-trailing {\n position: absolute;\n top: 8px;\n right: 8px;\n}\n\n.vc-ic-modal-main {\n gap: 24px;\n align-items: center;\n}\n\n.vc-ic-icon-preview {\n width: 128px;\n height: 128px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-image: repeating-linear-gradient(45deg, #ffffff1a 0, #ffffff1a 10px, #0000001a 10px, #0000001a 20px);\n border-radius: 8px;\n cursor: context-menu;\n}\n\n.vc-ic-icon-large {\n width: 96px;\n height: 96px;\n}\n\n.vc-ic-icon-info {\n gap: 12px;\n}\n\n.vc-ic-icon-sizes {\n gap: 16px;\n align-items: flex-end;\n}\n\n.vc-ic-color-label {\n cursor: help;\n}\n\n.vc-ic-modal-footer {\n flex-direction: row-reverse;\n}\n\n.vc-ic-use-as {\n margin-top: 16px;\n margin-bottom: 8px;\n}\n\n.vc-ic-unordered-list li {\n margin-left: 16px;\n list-style: disc;\n}\n", ".vc-ignore-calls-button {\n width: 64px;\n border-radius: 12px;\n}", ".vc-inrole-member-list {\n max-height: 400px;\n margin-top: 10px;\n margin-bottom: 13px;\n overflow-x: hidden;\n}\n\n.vc-inrole-member-list::-webkit-scrollbar {\n background-color: #fff1;\n border-radius: 100px;\n width: 10px;\n}\n\n.vc-inrole-member-list::-webkit-scrollbar-thumb {\n background-color: #fff3;\n border-radius: 100px;\n}\n\n.vc-inrole-modal-member {\n margin: 11px 0;\n}\n\n.vc-inrole-header {\n padding-top: 15px;\n}\n\n.vc-inrole-close {\n margin-left: auto;\n}\n", "/* cl = vc-command-palette- */\n\n.vc-command-palette-root {\n border-radius: 10px;\n overflow: hidden;\n background-color: var(--background-base-low);\n}\n\n.vc-command-palette-option {\n padding: 5px;\n background-color: var(--background-base-low);\n color: var(--white-500);\n font-family: var(--font-display);\n text-align: left;\n padding-left: 0.8rem;\n}\n\n.vc-command-palette-key-hover {\n padding: 5px;\n background-color: var(--background-mod-strong);\n border-radius: 3px;\n font-family: var(--font-display);\n color: var(--interactive-icon-hover);\n padding-left: 0.8rem;\n}\n\n.vc-command-palette-option-container {\n display: grid;\n gap: 2px;\n margin-left: 0.8rem;\n margin-right: 0.8rem;\n}\n\n.vc-command-palette-textinfo {\n font-family: var(--font-display);\n color: var(--white-500);\n margin-left: 0.8rem;\n margin-right: 0.8rem;\n padding: 0.8rem 0;\n}\n\n.vc-command-palette-simple-text {\n background-color: var(--input-background-default, var(--input-background));\n width: 30vh;\n}\n\n.vc-command-palette-registrar {\n position: absolute;\n color: var(--interactive-icon-default);\n white-space: nowrap;\n text-overflow: ellipsis;\n right: 1.6rem;\n}\n\n.vc-command-palette-key-recorder-container {\n position: relative;\n display: block;\n cursor: pointer;\n height: 40px;\n width: 20rem;\n}\n\n.vc-command-palette-key-recorder {\n display: flex;\n align-items: center;\n border-radius: 3px;\n background-color: hsl(var(--black-500-hsl) / 10%);\n color: var(--text-strong);\n line-height: 22px;\n font-weight: 600;\n padding: 10px 0 10px 10px;\n text-overflow: ellipsis;\n overflow: hidden;\n border: 1px solid;\n border-color: hsl(var(--black-500-hsl) / 30%);\n transition: border.15s ease;\n user-select: none;\n font-family: var(--font-primary);\n}\n\n.vc-command-palette-recording {\n animation: shadowPulse_b16790 1s ease-in infinite;\n box-shadow: 0 0 6px hsl(var(--red-400-hsl) / 30%);\n border-color: hsl(var(--red-400-hsl) / 30%);\n color: var(--status-danger);\n}\n\n.vc-command-palette-key-recorder:hover {\n border-color: hsl(var(--red-400-hsl) / 30%);\n}\n\n.vc-command-palette-recording-button {\n color: var(--status-danger) !important;\n background-color: hsl(var(--red-400-hsl) / 10%) !important;\n opacity: 1;\n transition: opacity.2s ease-in-out, transform.2s ease-in-out;\n}\n\n.vc-command-palette-key-recorder-button {\n position: absolute;\n right: 1rem;\n height: 30px;\n width: 128px;\n color: var(--white-500);\n background-color: var(--channeltextarea-background);\n border-radius: 10px;\n transition: background-color 0.15s ease;\n}\n\n.vc-command-palette-key-recorder-button:hover {\n background-color: var(--channeltextarea-background);\n}", ".vc-keywordnotify-delete {\n padding: 0;\n color: var(--primary-400);\n transition: color 0.2s ease-in-out;\n}\n\n.vc-keywordnotify-delete:hover {\n color: var(--status-danger);\n}\n\n.vc-keywordnotify-ignoreCaseSwitch {\n margin-top: 0.5em;\n margin-right: 40px;\n}", ".vc-keywordnotify-collapsible {\n display: flex;\n align-items: center;\n padding: 8px;\n cursor: pointer;\n}\n", ".vc-keywordnotify-form-generic-label-wrapper {\n margin-bottom: 20px;\n cursor: pointer;\n}\n\n.vc-keywordnotify-form-generic-label {\n display: flex;\n width: 100%;\n\n > :last-child {\n margin-left: auto;\n max-width: fit-content;\n min-width: fit-content;\n }\n}\n\n.vc-keywordnotify-form-generic-label-disabled {\n opacity: 0.5;\n pointer-events: none;\n cursor: not-allowed;\n}\n\n.vc-keywordnotify-form-generic-label-text {\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 8px;\n}\n\n.vc-keywordnotify-form-generic-label-border {\n margin-top: 20px;\n}\n", ".vc-limitlessScreenshare-settings-card {\n white-space: nowrap;\n text-wrap-mode: nowrap;\n}\n\n.vc-limitlessScreenshare-settings-preset-label {\n padding-left: 0.5em;\n}\n\n.vc-limitlessScreenshare-settings-flex-input > div:first-child > div > div > div {\n --custom-text-input-height: 2em;\n\n width: 5em;\n}", ".qrlogin-modal-filepaste {\n width: 30rem;\n height: 13rem;\n border-radius: 1rem;\n background-color: var(--background-secondary-alt);\n border-style: dashed;\n border-color: var(--input-border-default, var(--input-border));\n border-width: 4px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n overflow: hidden;\n transition: 200ms background-color ease-in-out, 200ms border-color ease-in-out,\n 200ms opacity ease-in-out, 200ms border-width ease-in-out,\n 250ms width cubic-bezier(0.76, 0, 0.24, 1),\n 250ms height cubic-bezier(0.76, 0, 0.24, 1);\n}\n\n.qrlogin-modal-filepaste * {\n pointer-events: none;\n}\n\n.qrlogin-modal-filepaste-drop {\n background-color: var(--mention-background);\n}\n\n.qrlogin-modal-filepaste-disabled {\n background-color: var(--background-secondary-alt) !important;\n opacity: 0.5;\n cursor: unset;\n}\n\n.qrlogin-modal-filepaste-preview {\n border-width: 0;\n background-color: #0005;\n}\n\n.qrlogin-modal-filepaste-preview video {\n object-fit: fill;\n}\n\n.qrlogin-preview-crosses {\n animation: 500ms preview-crosses cubic-bezier(0.25, 1, 0.5, 1) forwards;\n}\n\n.qrlogin-preview-cross {\n position: absolute;\n width: var(--size);\n height: var(--size);\n transform: translate(-50%, -50%) rotate(var(--rot));\n\n --size: 0rem;\n --rot: 0deg;\n}\n\n.qrlogin-preview-cross img {\n width: var(--size);\n height: var(--size);\n transform-origin: bottom right;\n animation: 300ms cross ease-out forwards 500ms;\n opacity: 0;\n}\n\n.qrlogin-device-content {\n padding: 24px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 2px;\n}\n\n.qrlogin-device-image {\n height: 8rem;\n user-select: none;\n}\n\n.qrlogin-device-header {\n margin: 6px 0 12px;\n}\n\n.qrlogin-device-confirm {\n margin-top: 18px;\n width: 20rem;\n background: linear-gradient(to right,\n var(--status-danger) calc(var(--progress) - 1%),\n var(--text-feedback-critical) var(--progress)) !important;\n border-radius: 420rem;\n\n --progress: 0%;\n}\n\n.qrlogin-device-footer {\n justify-content: space-between;\n}\n\n.qrlogin-settings-btns {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.qrlogin-modal-container {\n margin-left: 100px;\n}\n\n[data-tab-id=\"Scan QR Code\"]::before {\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-mask: var(--si-scan-qr-code) center/contain no-repeat !important;\n mask: var(--si-scan-qr-code) center/contain no-repeat !important;\n\n --si-scan-qr-code: url(\"data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0icmVkIiBkPSJNNCA2YzAtMS4xLjktMiAyLTJoM2ExIDEgMCAwIDAgMC0ySDZhNCA0IDAgMCAwLTQgNHYzYTEgMSAwIDAgMCAyIDBWNlpNNCAxOGMwIDEuMS45IDIgMiAyaDNhMSAxIDAgMSAxIDAgMkg2YTQgNCAwIDAgMS00LTR2LTNhMSAxIDAgMSAxIDIgMHYzWk0yMCA2YTIgMiAwIDAgMC0yLTJoLTNhMSAxIDAgMSAxIDAtMmgzYTQgNCAwIDAgMSA0IDR2M2ExIDEgMCAxIDEtMiAwVjZaIiBjbGFzcz0iIj48L3BhdGg+PHBhdGggZmlsbD0icmVkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01IDdjMC0xLjEuOS0yIDItMmgyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY3Wm0yIDBoMnYySDdWN1pNNSAxNWMwLTEuMS45LTIgMi0yaDJhMiAyIDAgMCAxIDIgMnYyYTIgMiAwIDAgMS0yIDJIN2EyIDIgMCAwIDEtMi0ydi0yWm0yIDBoMnYySDd2LTJaTTEzIDdjMC0xLjEuOS0yIDItMmgyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAyaC0yYTIgMiAwIDAgMS0yLTJWN1ptMiAwaDJ2MmgtMlY3Wk0xNy4wOCAxM2ExLjUgMS41IDAgMCAwLTEuNDIgMS4wM2MtLjA5LjI1LS4zLjQ3LS41Ni40N0gxNWEyIDIgMCAwIDAtMiAyVjIwYzAgMS4xLjkgMiAyIDJoNmEyIDIgMCAwIDAgMi0ydi0zLjVhMiAyIDAgMCAwLTItMmgtLjFjLS4yNiAwLS40Ny0uMjItLjU2LS40N0ExLjUgMS41IDAgMCAwIDE4LjkyIDEzaC0xLjg0Wk0yMCAxOGEyIDIgMCAxIDEtNCAwIDIgMiAwIDAgMSA0IDBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGNsYXNzPSIiPjwvcGF0aD48L3N2Zz4=\");\n}\n\n@keyframes cross {\n 0% {\n transform: scale(1.25);\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes preview-crosses {\n to {\n transform: translate(var(--offset-x), var(--offset-y)) scale(var(--scale));\n }\n}\n", ".vc-media-playback-speed-icon {\n background-color: transparent;\n height: 100%;\n z-index: 2;\n line-height: 0;\n color: var(--interactive-text-default);\n}\n\n.vc-media-playback-speed-icon:hover {\n color: var(--interactive-text-hover);\n}\n", ".vc-color-block {\n aspect-ratio: 1/1;\n background: var(--color);\n height: 1rem;\n vertical-align: middle;\n margin-bottom: 0.2rem;\n border-radius: 4px;\n display: inline-block;\n user-select: none;\n box-sizing: border-box;\n}\n\n.vc-color-bg {\n background: var(--color);\n}\n\n/* Light color in dark theme */\n.theme-dark .vc-color-bg.vc-color-bg-invert,\n.theme-light .vc-color-bg:not(.vc-color-bg-invert) {\n color: var(--background-secondary-alt);\n}", ".c98-message-link-tooltip {\n width: max-content;\n max-width: 80vw;\n}\n", ".vc-msg-logger-enhanced-modal-root {\n max-height: 100%;\n max-width: 100%;\n}\n\n.vc-msg-logger-enhanced-modal-empty-logs {\n display: grid;\n place-content: center;\n height: 100%;\n}\n\n.vc-msg-logger-enhanced-modal-info-icon {\n position: absolute;\n top: -24px;\n right: -24px;\n color: var(--interactive-icon-default);\n cursor: pointer;\n}\n\n.vc-msg-logger-enhanced-modal-content-container {\n /* max-height: 80vh; */\n overflow: hidden;\n height: 100%;\n width: 100%;\n transition: opacity 100ms ease-in;\n}\n\n.vc-msg-logger-enhanced-modal-content {\n padding-bottom: 20px;\n height: 100%;\n}\n\n.vc-msg-logger-enhanced-modal-content-inner {\n padding-top: 1rem;\n padding-bottom: 1rem;\n height: 100%;\n}\n\n.vc-msg-logger-enhanced-modal-tab-bar-item {\n padding-bottom: 16px;\n margin-bottom: -2px;\n}\n\n.vc-msg-logger-enhanced-modal-tab-bar {\n margin-bottom: 12px;\n margin-left: -24px;\n width: 114.5%;\n justify-content: space-around;\n}\n\n.vc-msg-logger-enhanced-modal-from {\n font-size: 14px;\n margin-left: 12px;\n}\n\n.msg-logger-modal-from-deleted {\n color: var(--status-danger);\n}\n\n.vc-msg-logger-enhanced-modal-from-edited {\n color: var(--white-600);\n}\n\n.vc-msg-logger-enhanced-toolbox-btn svg {\n color: var(--interactive-icon-default);\n}\n\n:is(.vc-msg-logger-enhanced-toolbox-btn:hover, .vc-msg-logger-enhanced-toolbox-btn[class*=\"selected\"]) svg {\n color: var(--interactive-icon-active);\n}\n\n.vc-msg-logger-enhanced-folder-upload-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0;\n background-color: var(--background-secondary-alt);\n}\n\n.vc-msg-logger-enhanced-folder-upload-input {\n cursor: pointer;\n padding: 10px 0 10px 10px;\n color: var(--text-default);\n}\n\n.vc-msg-logger-enhanced-folder-upload-button {\n margin: 6px;\n padding: 4px 8px;\n}\n\n.vc-updater-modal-content {\n padding: 1rem 2rem;\n}\n\n.vc-msg-logger-enhanced-modal {\n display: flex;\n flex-direction: column;\n gap: 10px;\n width: 100%;\n padding-right: 20px;\n}\n\n.vc-msg-logger-enhanced-modal-filter {\n width: 106%;\n}", ".vc-message-peek-timestamp {\n position: absolute;\n top: 8px;\n right: 8px;\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n color: var(--text-default);\n}\n\n.vc-message-peek-timestamp-favorites {\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n color: var(--text-default);\n}\n\n[class*=\"interactiveSelected__\"] .vc-message-peek-timestamp {\n color: var(--white);\n}\n\n[class*=\"interactive__\"]:hover .vc-message-peek-timestamp {\n display: none;\n}\n\n.vc-message-peek-preview {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.vc-message-peek-icon {\n display: flex;\n margin-top: 0.8px;\n}\n\n[class*=\"interactive__\"]:hover .vc-message-peek-icon svg path {\n fill: var(--white) !important;\n}\n\n.vc-message-peek-activity-row {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.vc-message-peek-activity-row > [class*=\"textXs\"] {\n min-width: 0;\n}\n\n.vc-message-peek-activity-row > [class*=\"vc-bactivities-row\"] {\n flex-shrink: 0;\n}", ".mt-icon {\n vertical-align: -2px;\n margin-right: 0.25em;\n color: var(--text-muted);\n}\n\n.mt-subtext {\n display: flex;\n align-items: center;\n gap: 0.25em;\n color: var(--text-muted);\n font-size: 0.85rem;\n margin-top: 0.15em;\n}\n\n.mt-indicator {\n color: var(--text-muted);\n font-style: italic;\n font-weight: 400;\n font-size: 0.7rem;\n line-height: 1;\n margin-top: 0.15em;\n opacity: 0.75;\n}", "/* stylelint-disable function-url-quotes */\n.vc-more-stickers-icon {\n fill: var(--interactive-icon-default);\n margin-top: 20%;\n}\n\n.vc-more-stickers-icon:hover,\n.vc-more-stickers-icon:focus-visible,\n.vc-more-stickers-icon-active {\n fill: var(--interactive-icon-active);\n}\n\n.vc-more-stickers-picker-container {\n background-color: var(--background-base-low);\n overflow: hidden;\n border-radius: 4px;\n width: 100%;\n}\n\n.vc-more-stickers-picker-container > div:first-child {\n display: flex;\n flex: 1 1 auto;\n flex-flow: wrap;\n padding: 1px 0 1px 1px;\n overflow: hidden;\n}\n\n.vc-more-stickers-picker-search-box {\n height: 30px;\n line-height: 32px;\n font-size: 16px;\n flex: 1;\n min-width: 48px;\n margin: 1px;\n}\n\n.vc-more-stickers-picker-search-icon {\n width: 32px;\n height: 32px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: text;\n box-sizing: border-box;\n margin-right: 8px;\n}\n\n.vc-more-stickers-foreign-object > img {\n text-indent: -9999px;\n align-items: center;\n background-color: var(--background-primary);\n color: var(--text-default);\n display: flex;\n height: 100%;\n justify-content: center;\n width: 100%;\n}\n\n.vc-more-stickers-foreign-object {\n mask: url(#svg-mask-avatar-default) !important;\n}\n\n.vc-more-stickers-foreign-object:hover,\n.vc-more-stickers-foreign-object-active {\n mask: url(#svg-mask-squircle) !important;\n}\n\n.vc-more-stickers-category-wrapper {\n background-color: var(--background-base-low);\n position: absolute;\n overflow: hidden;\n width: 48px;\n top: 50px;\n left: 0;\n height: calc(100% - 50px);\n}\n\n.vc-more-stickers-picker-content {\n position: absolute;\n margin-left: 48px;\n}\n\n.vc-more-stickers-category-scroller {\n overflow: hidden scroll;\n padding-right: 0;\n height: 100%;\n position: relative;\n box-sizing: border-box;\n min-height: 0;\n flex: 1 1 auto;\n}\n\n.vc-more-stickers-category-scroller > :first-child {\n inset: 8px;\n contain: layout;\n position: absolute;\n}\n\n.vc-more-stickers-category-scroller > :last-child {\n position: absolute;\n pointer-events: none;\n min-height: 0;\n min-width: 1px;\n flex: 0 0 auto;\n height: 0;\n}\n\n.vc-more-stickers-category-scroller,\n.vc-more-stickers-picker-content-scroller {\n scrollbar-width: none;\n scrollbar-color: var(--scrollbar-thin-thumb) var(--scrollbar-thin-track);\n}\n\n.vc-more-stickers-category-scroller::-webkit-scrollbar,\n.vc-more-stickers-picker-content-scroller::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n.vc-more-stickers-category-scroller::-webkit-scrollbar-corner,\n.vc-more-stickers-picker-content-scroller::-webkit-scrollbar-corner {\n background-color: transparent;\n}\n\n.vc-more-stickers-category-scroller::-webkit-scrollbar-thumb,\n.vc-more-stickers-picker-content-scroller::-webkit-scrollbar-thumb {\n background-clip: padding-box;\n border: 2px solid transparent;\n border-radius: 4px;\n background-color: var(--scrollbar-thin-thumb);\n min-height: 40px;\n}\n\n.vc-more-stickers-category-scroller::-webkit-scrollbar-track,\n.vc-more-stickers-picker-content-scroller::-webkit-scrollbar-track {\n border: 2px solid var(--scrollbar-thin-track);\n border-color: var(--scrollbar-thin-track);\n background-color: var(--scrollbar-thin-track);\n}\n\n.vc-more-stickers-header {\n box-shadow: var(--elevation-low);\n grid-column: 1/3;\n grid-row: 1/2;\n min-height: 1px;\n z-index: 1;\n padding: 0 16px 16px;\n display: flex;\n align-items: center;\n}\n\n.vc-more-stickers-sticker-category {\n border-radius: 4px;\n color: var(--interactive-icon-default);\n cursor: pointer;\n height: 32px;\n margin-bottom: 8px;\n}\n\n.vc-more-stickers-sticker-category:hover,\n.vc-more-stickers-sticker-category-active {\n background-color: var(--background-mod-subtle);\n}\n\n.vc-more-stickers-clear-icon {\n color: var(--interactive-icon-default);\n cursor: pointer;\n}\n\n.vc-more-stickers-clear-icon:hover {\n color: var(--interactive-icon-hover);\n}\n\n.vc-more-stickers-picker-content-list-wrapper {\n grid-row: 2/2;\n grid-column: 2/2;\n overflow: hidden;\n position: relative;\n}\n\n.vc-more-stickers-picker-content-wrapper {\n display: grid;\n grid-template-rows: 1fr auto;\n height: 100%;\n position: absolute;\n inset: 0;\n}\n\n.vc-more-stickers-picker-content-scroller {\n overflow: hidden scroll;\n padding-right: 0;\n height: 100%;\n position: relative;\n box-sizing: border-box;\n min-height: 0;\n flex: 1 1 auto;\n flex-grow: 1;\n}\n\n.vc-more-stickers-picker-content-list-items {\n contain: layout;\n position: absolute;\n inset: 0 0 0 8px;\n}\n\n.vc-more-stickers-picker-content-header-wrapper {\n position: sticky;\n top: 0;\n -ms-flex-align: center;\n align-items: center;\n background-color: var(--background-secondary-alt);\n box-sizing: border-box;\n display: flex;\n height: 32px;\n padding: 0 4px;\n z-index: 1;\n}\n\n.vc-more-stickers-picker-content-header-header {\n color: var(--text-default);\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: start;\n justify-content: flex-start;\n font-size: 12px;\n font-weight: 600;\n transition: color 0.125s;\n}\n\n.vc-more-stickers-picker-content-header-header-icon {\n display: contents;\n height: 100%;\n margin-right: 8px;\n}\n\n.vc-more-stickers-picker-content-header-svg {\n display: block;\n contain: paint;\n}\n\n.vc-more-stickers-picker-content-header-guild-icon,\n.vc-more-stickers-picker-content-inspector-graphic-secondary img {\n text-indent: -9999px;\n -ms-flex-align: center;\n align-items: center;\n background-color: var(--background-primary);\n color: var(--text-default);\n display: flex;\n height: 100%;\n -ms-flex-pack: center;\n justify-content: center;\n width: 100%;\n}\n\n.vc-more-stickers-picker-content-header-header-label {\n margin-left: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: uppercase;\n white-space: nowrap;\n margin-right: 8px;\n}\n\n.vc-more-stickers-picker-content-header-header:hover {\n color: var(--interactive-icon-active);\n cursor: pointer;\n}\n\n.vc-more-stickers-picker-content-row {\n column-gap: 67px;\n grid-template-columns: repeat(auto-fill, 96px);\n height: 96px;\n position: relative;\n display: grid;\n margin-bottom: 12px;\n overflow: hidden;\n}\n\n.vc-more-stickers-picker-content-row-grid-sticker {\n width: 96px;\n height: 96px;\n padding: 2px;\n cursor: pointer;\n border-radius: 4px;\n position: relative;\n}\n\n.vc-more-stickers-picker-content-row-grid-hidden-visually {\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n.vc-more-stickers-picker-content-row-grid-inspected-indicator {\n height: 100%;\n width: 100%;\n position: absolute;\n left: 0;\n top: 0;\n mask: url(\"https://discord.com/assets/7d65d61e6cd25bf1847ec2d3e4a0144d.svg\") 0 0/100% 100%;\n transition: background-color 0.08s ease-out, color 0.08s ease-out;\n z-index: -1;\n}\n\n.vc-more-stickers-picker-content-row-grid-inspected-indicator.inspected {\n background-color: var(--background-accent);\n}\n\n.vc-more-stickers-picker-content-row-grid-sticker-node {\n transition: opacity 0.25s;\n}\n\n.vc-more-stickers-picker-content-row-grid-asset-wrapper {\n position: relative;\n user-select: none;\n}\n\n.vc-more-stickers-picker-content-row-grid-asset-wrapper:hover {\n mask: url(\"https://discord.com/assets/7d65d61e6cd25bf1847ec2d3e4a0144d.svg\") 0 0/100% 100%;\n}\n\n.vc-more-stickers-picker-content-row-grid-img,\n.vc-more-stickers-picker-content-inspector-img {\n text-indent: -9999px;\n display: block;\n object-fit: contain;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n.vc-more-stickers-picker-content-inspector {\n box-sizing: border-box;\n height: 48px;\n width: 100%;\n padding: 0 16px;\n background-color: var(--background-base-lower-alt);\n display: flex;\n flex: 0 0 auto;\n flex-direction: row;\n align-items: center;\n overflow: hidden;\n}\n\n.vc-more-stickers-picker-content-inspector-graphic-primary {\n height: 28px;\n width: 28px;\n}\n\n.vc-more-stickers-picker-content-inspector-text-wrapper {\n flex: 1;\n margin-left: 8px;\n overflow: hidden;\n}\n\n.vc-more-stickers-picker-content-inspector-title-primary {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n font-family: var(--font-primary);\n font-size: 16px;\n line-height: 20px;\n font-weight: 600;\n color: var(--text-default);\n}\n\n.vc-more-stickers-picker-content-inspector-title-secondary {\n color: var(--interactive-icon-default);\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n font-family: var(--font-primary);\n font-size: 12px;\n line-height: 16px;\n font-weight: 400;\n}\n\n.vc-more-stickers-picker-content-inspector-graphic-secondary {\n height: 32px;\n margin-left: 8px;\n width: 32px;\n}\n\n.vc-more-stickers-picker-content-inspector-graphic-secondary svg {\n display: block;\n contain: paint;\n}\n\n.vc-more-stickers-picker-settings-cog-container {\n position: fixed;\n transform: translateY(-100%);\n background-color: var(--background-base-low);\n padding: 8px;\n padding-right: 4px;\n border-bottom-left-radius: 5px;\n}\n\n.vc-more-stickers-picker-settings-cog {\n cursor: pointer;\n border-radius: 2em;\n background-color: var(--background-primary);\n padding: 8px;\n transform: translate(-5%, 10%);\n transition: all 0.15s ease-out;\n}\n\n.vc-more-stickers-picker-settings-cog-active {\n border-radius: 1em;\n background-color: var(--green-300);\n}\n\n.vc-more-stickers-picker-settings-cog > svg {\n color: var(--green-360) !important;\n width: 100%;\n height: 100%;\n transform: translateY(10%);\n}\n\n/* prettier-ignore */\n.vc-more-stickers-picker-settings-cog-active > svg {\n color: var(--white-360) !important;\n}\n\n.vc-more-stickers-picker-content-header-collapse-icon {\n transition: transform 0.1s ease-out;\n}\n\n.vc-more-stickers-settings {\n margin-top: 16px;\n}\n\n.vc-more-stickers-settings .bg {\n border-radius: 8px;\n background-color: var(--background-secondary-alt);\n padding: 16px;\n margin: 8px 16px 16px;\n}\n\n.vc-more-stickers-settings .sticker-pack {\n position: relative;\n text-align: center;\n}\n\n.vc-more-stickers-settings .sticker-pack button {\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n border-radius: 8px;\n background: var(--background-secondary-alt);\n width: 26px;\n height: 0;\n align-items: center;\n justify-content: center;\n padding: 2px;\n opacity: 0;\n}\n\n.vc-more-stickers-settings button.show {\n height: 26px;\n opacity: 1;\n transition: opacity 0.25s linear;\n}\n\n.vc-more-stickers-settings .section {\n margin-top: 8px;\n}\n\n.vc-more-stickers-settings .tab-bar {\n margin-bottom: 16px;\n}\n\n.vc-more-stickers-settings .tab-bar-item {\n margin-right: 2px;\n padding-bottom: 4px;\n}\n\n.vc-more-stickers-pack-title {\n font-family: var(--font-primary);\n font-size: 8pt;\n font-weight: 600;\n color: var(--text-default);\n}", ".vc-message-decorations-wrapper .vc-mut-message-tag {\n margin-bottom: 1px;\n}\n\n/* stylelint-disable-next-line no-descending-specificity */\n.vc-mut-message-tag {\n /* Remove default margin from tags in messages */\n margin-top: unset !important;\n\n /* Align with Discord default tags in messages */\n /* stylelint-disable-next-line length-zero-no-unit */\n bottom: 0px;\n top: -2px;\n margin-right: 3px;\n}\n\n.vc-mut-message-verified {\n height: 1rem !important;\n}\n\nspan[class*=\"botTagCozy\"][data-moreTags-darkFg=\"true\"]>svg>path {\n fill: #000;\n}\n\nspan[class*=\"botTagCozy\"][data-moreTags-darkFg=\"false\"]>svg>path {\n fill: #fff;\n}\n", "/* stylelint-disable rule-empty-line-before */\n.vc-spotify-lyrics {\n padding: 0.375rem 0.5rem;\n text-align: center;\n overflow: hidden;\n max-height: 60px;\n cursor: pointer;\n}\n\n.vc-spotify-lyrics-music-note {\n font-size: 16px;\n text-align: center;\n animation: side-to-side 2s ease-in-out infinite;\n color: var(--text-muted);\n height: 18px;\n margin: 3px;\n}\n\n.vc-spotify-lyrics-next,\n.vc-spotify-lyrics-prev {\n color: var(--text-muted);\n margin-bottom: 1%;\n}\n\n@keyframes side-to-side {\n\n 0%,\n 100% {\n transform: translateX(0);\n }\n\n 50% {\n transform: translateX(-10px);\n }\n}\n\n.vc-spotify-lyrics-header-content {\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.vc-spotify-lyrics-album-image {\n width: 100px;\n height: 100px;\n margin-right: 5%;\n border-radius: 5px;\n cursor: pointer;\n}\n\n.vc-spotify-lyrics-modal-line-current,\n.vc-spotify-lyrics-modal-line {\n margin: 4px 0;\n padding: 4px 8px;\n position: relative;\n}\n\n.vc-spotify-lyrics-modal-line-current {\n font-weight: bold;\n}\n\n.vc-spotify-lyrics-modal-note {\n height: 1lh;\n}\n\n.vc-spotify-lyrics-modal-timestamp {\n color: var(--text-muted);\n margin-right: 0.5em;\n cursor: pointer;\n}\n\n.vc-spotify-lyrics-modal-timestamp:hover {\n text-decoration: underline;\n}\n\n.vc-spotify-lyrics-modal-no-lyrics {\n text-align: center;\n padding: 1rem;\n}\n\n.eq-tidal-lyrics {\n padding: 0.375rem 0.5rem;\n text-align: center;\n overflow: hidden;\n max-height: 60px;\n cursor: pointer;\n\n /* fade edges a touch to suggest scroll without harsh clipping */\n mask-image: linear-gradient(90deg, transparent 0, #000 12px, #000 calc(100% - 12px), transparent 100%);\n user-select: none;\n}\n\n.eq-tidal-lyrics-music-note {\n font-size: 16px;\n text-align: center;\n animation: side-to-side 2s ease-in-out infinite;\n color: var(--text-muted);\n height: 18px;\n margin: 3px;\n filter: drop-shadow(0 0 4px rgb(0 0 0 / 15%));\n}\n\n.eq-tidal-lyrics-next,\n.eq-tidal-lyrics-prev {\n color: var(--text-muted);\n margin-bottom: 1%;\n}\n\n@keyframes side-to-side {\n 100% {\n transform: translateX(0);\n }\n\n 50% {\n transform: translateX(-10px);\n }\n}\n\n.eq-tidal-lyrics-header-content {\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.eq-tidal-lyrics-album-image {\n width: 100px;\n height: 100px;\n margin-right: 5%;\n border-radius: 5px;\n cursor: pointer;\n}\n\n.eq-tidal-lyrics-modal-line-current,\n.eq-tidal-lyrics-modal-line {\n margin: 4px 0;\n padding: 4px 8px;\n position: relative;\n}\n\n.eq-tidal-lyrics-modal-line-current {\n font-weight: bold;\n}\n\n.eq-tidal-lyrics-modal-note {\n height: 1lh;\n}\n\n.eq-tidal-lyrics-modal-timestamp {\n color: var(--text-muted);\n margin-right: 0.5em;\n cursor: pointer;\n}\n\n.eq-tidal-lyrics-modal-timestamp:hover {\n text-decoration: underline;\n}\n\n.eq-tidal-lyrics-modal-no-lyrics {\n text-align: center;\n padding: 1rem;\n}\n\n.eq-tidal-lyrics-char {\n color: var(--text-muted);\n padding: 0 1px;\n display: inline-block;\n transition: color .15s ease, opacity .15s ease, transform .15s ease, text-shadow .15s ease;\n will-change: transform, color, opacity, text-shadow;\n}\n\n.eq-tidal-lyrics-char-active {\n color: var(--brand-experiment);\n font-weight: 600;\n text-shadow: 0 0 .25em currentcolor;\n}\n\n.eq-tidal-lyrics-word {\n color: var(--text-muted);\n border-radius: 4px;\n padding: 0 1px;\n margin-right: 2px;\n border: 1px solid transparent;\n display: inline-block;\n transition: color .15s ease, opacity .15s ease, background-color .15s ease, box-shadow .15s ease, transform .15s ease;\n will-change: transform, color, opacity, background-color, box-shadow;\n}\n\n.eq-tidal-lyrics-word:last-child {\n margin-right: 0;\n}\n\n.eq-tidal-lyrics-word-active {\n color: var(--brand-experiment);\n background: none;\n box-shadow: none;\n text-shadow: 0 0 .25em currentcolor;\n}\n\n.eq-tidal-lyrics-current,\n.eq-tidal-lyrics-next,\n.eq-tidal-lyrics-prev {\n transition: color .2s ease, opacity .2s ease, transform .2s ease, text-shadow .2s ease;\n}\n\n.eq-tidal-lyrics-current {\n font-weight: 600;\n text-shadow: 0 0 .35em rgb(0 0 0 / 15%);\n}\n\n.eq-tidal-lyrics-next {\n opacity: .85;\n}\n\n.eq-tidal-lyrics-prev {\n opacity: .65;\n}\n\n.eq-tidal-lyrics-current .eq-tidal-lyrics-char,\n.eq-tidal-lyrics-current .eq-tidal-lyrics-word {\n color: var(--text-default);\n}\n\n.eq-tidal-lyrics-next .eq-tidal-lyrics-char,\n.eq-tidal-lyrics-prev .eq-tidal-lyrics-char,\n.eq-tidal-lyrics-next .eq-tidal-lyrics-word,\n.eq-tidal-lyrics-prev .eq-tidal-lyrics-word {\n color: var(--text-muted);\n}\n\n\n@media (prefers-reduced-motion: reduce) {\n\n .eq-tidal-lyrics-current,\n .eq-tidal-lyrics-next,\n .eq-tidal-lyrics-prev,\n .eq-tidal-lyrics-char,\n .eq-tidal-lyrics-word {\n transition: none;\n text-shadow: none;\n }\n\n .eq-tidal-lyrics-char-active,\n .eq-tidal-lyrics-word-active {\n transform: none;\n }\n}", "#vc-spotify-player {\n padding: 12px;\n background: var(--background-base-low);\n margin: 0;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n border-bottom: 1px solid var(--border-subtle);\n\n /* so custom themes can easily change it */\n --vc-spotify-green: var(--spotify, #1db954);\n --vc-spotify-green-90: color-mix(in hsl, var(--vc-spotify-green), transparent 90%);\n --vc-spotify-green-80: color-mix(in hsl, var(--vc-spotify-green), transparent 80%);\n}\n\n.vc-spotify-button {\n margin: 0 2px;\n border-radius: var(--radius-sm);\n background: none;\n color: var(--interactive-icon-default);\n padding: 0;\n width: 32px;\n height: 32px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.vc-spotify-button:hover {\n color: var(--interactive-icon-hover);\n background-color: var(--background-mod-strong);\n}\n\n.vc-spotify-button-icon {\n height: 24px;\n width: 24px;\n}\n\n.vc-spotify-shuffle .vc-spotify-button-icon,\n.vc-spotify-repeat .vc-spotify-button-icon {\n width: 22px;\n height: 22px;\n}\n\n/* .vc-spotify-button:hover {\n filter: brightness(1.3);\n} */\n\n.vc-spotify-repeat-context,\n.vc-spotify-repeat-track,\n.vc-spotify-shuffle-on {\n background-color: var(--vc-spotify-green-90);\n}\n\n.vc-spotify-repeat-context:hover,\n.vc-spotify-repeat-track:hover,\n.vc-spotify-shuffle-on:hover {\n background-color: var(--vc-spotify-green-80);\n}\n\n.vc-spotify-tooltip-text {\n overflow: hidden;\n white-space: nowrap;\n padding-right: 0.2em;\n max-width: 100%;\n margin: unset;\n}\n\n.vc-spotify-repeat-1 {\n font-size: 70%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-55%, -50%);\n}\n\n.vc-spotify-button-row {\n justify-content: center;\n margin-top: 14px;\n}\n\n.vc-spotify-secondary-song-info {\n font-size: 12px;\n}\n\n.vc-spotify-song-info-prefix {\n display: none;\n}\n\n#vc-spotify-info-wrapper {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 3em;\n gap: 0.5em;\n}\n\n#vc-spotify-album-image {\n height: 90%;\n object-fit: contain;\n border-radius: 3px;\n transition: filter 0.2s;\n}\n\n#vc-spotify-album-image:hover {\n filter: brightness(1.2);\n cursor: pointer;\n}\n\n#vc-spotify-album-expanded-wrapper #vc-spotify-album-image {\n width: 100%;\n object-fit: contain;\n}\n\n#vc-spotify-titles {\n display: flex;\n flex-direction: column;\n padding: 0.2rem;\n align-items: flex-start;\n place-content: flex-start center;\n overflow: hidden;\n}\n\n#vc-spotify-song-title {\n color: var(--text-strong);\n font-size: 14px;\n font-weight: 600;\n}\n\n.vc-spotify-ellipoverflow {\n white-space: nowrap;\n overflow: hidden;\n width: 100%;\n text-overflow: ellipsis;\n}\n\n.vc-spotify-artist,\n.vc-spotify-album {\n font-size: 12px;\n text-decoration: none;\n color: var(--text-strong);\n}\n\n.vc-spotify-comma {\n color: var(--text-default);\n}\n\n.vc-spotify-artist[role=\"link\"]:hover,\n#vc-spotify-album-title[role=\"link\"]:hover,\n#vc-spotify-song-title[role=\"link\"]:hover {\n text-decoration: underline;\n cursor: pointer;\n}\n\n#vc-spotify-progress-bar {\n position: relative;\n color: var(--text-default);\n width: 100%;\n margin: 0.5em 0;\n margin-bottom: 5px;\n}\n\n#vc-spotify-progress-bar > [class*=\"slider\"] {\n flex-grow: 1;\n width: 100%;\n padding: 0 !important;\n}\n\n#vc-spotify-progress-bar > [class*=\"slider\"] [class*=\"bar\"] {\n height: 3px !important;\n top: calc(12px - 4px / 2 + var(--bar-offset));\n}\n\n#vc-spotify-progress-bar > [class*=\"slider\"] [class*=\"barFill\"] {\n background-color: var(--interactive-icon-active);\n}\n\n#vc-spotify-progress-bar > [class*=\"slider\"]:hover [class*=\"barFill\"] {\n background-color: var(--vc-spotify-green);\n}\n\n#vc-spotify-progress-bar > [class*=\"slider\"] [class*=\"grabber\"] {\n /* these importants are necessary, it applies a width and height through inline styles */\n height: 16px !important;\n width: 16px !important;\n margin-top: calc(17px/-2 + var(--bar-offset)/2);\n margin-left: -0.5px;\n background-color: var(--interactive-icon-active);\n border-color: var(--interactive-icon-default);\n color: var(--interactive-icon-default);\n opacity: 0;\n transition: opacity 0.1s;\n}\n\n#vc-spotify-progress-bar:hover > [class*=\"slider\"] [class*=\"grabber\"] {\n opacity: 1;\n}\n\n#vc-spotify-progress-text {\n margin: 0;\n}\n\n.vc-spotify-progress-time {\n font-size: 12px;\n top: 10px;\n position: absolute;\n margin-top: 8px;\n font-family: var(--font-code);\n}\n\n.vc-spotify-time-left {\n left: 0;\n}\n\n.vc-spotify-time-right {\n right: 0;\n}\n\n.vc-spotify-fallback {\n padding: 0.5em;\n color: var(--text-default);\n}", "#eq-tdl-player {\n padding: 12px;\n background: var(--background-base-low);\n margin: 0;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n\n --eq-tdl-slider-gradient: linear-gradient(to right, #f03 80%, #ff2791 100%);\n --eq-tdl-slider-grabber: #f03;\n\n /* so custom themes can easily change it */\n --eq-tdl-red-90: color-mix(in hsl, var(--eq-tdl-slider-grabber), transparent 90%);\n --eq-tdl-red-80: color-mix(in hsl, var(--eq-tdl-slider-grabber), transparent 80%);\n}\n\n.eq-tdl-song-info-prefix {\n display: none;\n}\n\n.eq-tdl-artist,\n.eq-tdl-album {\n color: var(--text-strong);\n}\n\n.eq-tdl-secondary-song-info {\n font-size: 12px;\n}\n\n#eq-tdl-progress-bar {\n position: relative;\n color: var(--text-default);\n width: 100%;\n margin: 0.5em 0;\n margin-bottom: 5px;\n}\n\n#eq-tdl-progress-bar > [class*=\"slider\"] {\n flex-grow: 1;\n width: 100%;\n padding: 0 !important;\n}\n\n#eq-tdl-progress-bar > [class*=\"slider\"] [class*=\"bar\"] {\n height: 3px !important;\n top: calc(12px - 4px / 2 + var(--bar-offset));\n}\n\n#eq-tdl-progress-bar > [class*=\"slider\"] [class*=\"barFill\"] {\n background-image: var(--eq-tdl-slider-gradient);\n}\n\n#eq-tdl-progress-bar > [class*=\"slider\"]:hover [class*=\"barFill\"] {\n background-image: var(--eq-tdl-slider-gradient);\n}\n\n#eq-tdl-progress-bar > [class*=\"slider\"] [class*=\"grabber\"] {\n background-color: var(--eq-tdl-slider-grabber);\n width: 12px !important;\n height: 12px !important;\n margin-top: calc(13px/-2 + var(--bar-offset)/2);\n margin-left: -0.5px;\n border: unset;\n color: var(--interactive-icon-default);\n opacity: 0;\n transition: opacity 0.1s;\n}\n\n#eq-tdl-progress-bar:hover > [class*=\"slider\"] [class*=\"grabber\"] {\n opacity: 1;\n}\n\n.eq-tdl-progress-time {\n margin-top: 8px;\n font-family: var(--font-code);\n font-size: 12px;\n top: 10px;\n position: absolute;\n}\n\n.eq-tdl-button-row {\n justify-content: center;\n margin-top: 14px;\n}\n\n.eq-tdl-button {\n margin: 0 2px;\n border-radius: var(--radius-sm);\n background: none;\n color: var(--interactive-icon-default);\n padding: 0;\n width: 32px;\n height: 32px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n}\n\n.eq-tdl-button:hover {\n color: var(--interactive-icon-hover);\n background-color: var(--background-mod-strong);\n}\n\n.eq-tdl-button svg {\n height: 24px;\n width: 24px;\n}\n\n[class*=\"shuffle\"] > svg,\n[class*=\"repeat\"] > svg {\n width: 22px;\n height: 22px;\n}\n\n.eq-tdl-button svg path {\n width: 100%;\n height: 100%;\n}\n\n\n.eq-tdl-repeat-context,\n.eq-tdl-repeat-track,\n.eq-tdl-shuffle-on {\n background-color: var(--eq-tdl-red-90);\n}\n\n.eq-tdl-repeat-context:hover,\n.eq-tdl-repeat-track:hover,\n.eq-tdl-shuffle-on:hover {\n background-color: var(--eq-tdl-red-80);\n}\n\n.eq-tdl-repeat-1 {\n font-size: 70%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-55%, -50%);\n}\n\n#eq-tdl-info-wrapper {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 3em;\n gap: 0.5em;\n}\n\n#eq-tdl-info-wrapper img {\n height: 90%;\n object-fit: contain;\n}\n\n#eq-tdl-album-expanded-wrapper img {\n width: 100%;\n object-fit: contain;\n}\n\n#eq-tdl-titles {\n display: flex;\n flex-direction: column;\n padding: 0.2rem;\n align-items: flex-start;\n place-content: flex-start center;\n overflow: hidden;\n}\n\n#eq-tdl-song-title {\n color: var(--text-strong);\n font-size: 14px;\n font-weight: 600;\n}\n\n.eq-tdl-ellipoverflow {\n white-space: nowrap;\n overflow: hidden;\n width: 100%;\n text-overflow: ellipsis;\n}\n\n.eq-tdl-artist[role=\"link\"]:hover,\n#eq-tdl-album-title[role=\"link\"]:hover,\n#eq-tdl-song-title[role=\"link\"]:hover {\n text-decoration: underline;\n cursor: pointer;\n}\n\n#eq-tdl-album-image {\n border-radius: 3px;\n transition: filter 0.2s;\n}\n\n#eq-tdl-album-image:hover {\n filter: brightness(1.2);\n cursor: pointer;\n}\n\n#eq-tdl-progress-text {\n margin: 0;\n}\n\n.eq-tdl-time-left {\n left: 0;\n}\n\n.eq-tdl-time-right {\n right: 0;\n}", ".vc-new-plugins-header {\n align-items: flex-start;\n position: relative;\n padding: 16px 16px 0 24px;\n}\n\n.vc-new-plugins-header-content {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n}\n\n.vc-new-plugins-header-trailing {\n position: absolute;\n top: 8px;\n right: 8px;\n}\n\n.vc-new-plugins-title {\n color: var(--text-strong);\n padding-right: 32px;\n}\n\n.vc-new-plugins-description {\n color: var(--text-subtle);\n padding-right: 60px;\n}\n\n.vc-new-plugins-grid {\n display: grid;\n gap: 16px;\n grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n}\n\n.vc-new-plugins-footer {\n width: 100%;\n align-items: center;\n flex-direction: row-reverse;\n gap: 16px;\n}\n\n.vc-new-plugins-restart-list {\n padding-left: 1.25em;\n margin-top: 8px;\n}\n\n.vc-new-plugins-restart-list li {\n list-style: disc;\n}\n", ".vc-profile-presets-tab-heading {\n margin-bottom: 16px;\n}\n\n.vc-profile-presets-section-switch {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.vc-profile-presets-guild-picker {\n max-width: 300px;\n margin-bottom: 16px;\n}\n\n.vc-profile-presets-empty-state {\n color: var(--text-muted);\n}\n\n.vc-profile-presets-section {\n margin-bottom: 20px;\n padding: 0;\n background-color: transparent;\n max-width: 660px;\n width: 100%;\n min-width: 0;\n align-self: flex-start;\n}\n\n.vc-profile-presets-section-server {\n max-width: 660px;\n}\n\n.vc-profile-presets-heading {\n margin-bottom: 8px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.vc-profile-presets-text {\n margin-bottom: 8px;\n}\n\n.vc-profile-presets-text-input {\n width: 100%;\n max-width: 500px;\n min-width: 0;\n height: 38px;\n padding: 1px 12px;\n background: transparent;\n color: var(--text-normal);\n border: none;\n outline: none;\n box-shadow: none;\n box-sizing: border-box;\n font-size: 16px;\n line-height: normal;\n}\n\n.vc-profile-presets-text-input input {\n width: 100%;\n height: 38px;\n padding: 1px 12px;\n background: transparent;\n color: var(--text-normal);\n border: none;\n outline: none;\n box-shadow: none;\n box-sizing: border-box;\n font-size: 16px;\n line-height: normal;\n}\n\n.vc-profile-presets-text-input input::placeholder {\n color: var(--text-muted);\n}\n\n.vc-profile-presets-search {\n display: flex;\n gap: 8px;\n margin-bottom: 12px;\n flex-wrap: wrap;\n}\n\n.vc-profile-presets-search-button {\n min-width: 120px;\n}\n\n.vc-profile-presets-pagination {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 8px;\n margin-top: 12px;\n}\n\n.vc-profile-presets-section-server .vc-profile-presets-pagination {\n width: 300px;\n max-width: 100%;\n}\n\n.vc-profile-presets-page {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.vc-profile-presets-page-of {\n font-size: 14px;\n color: var(--text-default);\n font-weight: 500;\n}\n\n.vc-profile-presets-import {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n margin-bottom: 16px;\n}\n\n.vc-profile-presets-block {\n margin: 16px 0;\n border: none;\n border-top: 1px solid var(--background-modifier-accent);\n}\n\n.vc-profile-presets-avatar-url {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.vc-profile-presets-rename {\n min-width: 0;\n flex: 1;\n}\n\n.vc-profile-presets-updated {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.vc-profile-presets-list-container {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin-bottom: 12px;\n padding: 12px;\n background-color: var(--background-secondary);\n border-radius: 8px;\n border: 2px solid var(--background-modifier-accent);\n min-width: 0;\n width: 100%;\n max-width: 660px;\n align-self: flex-start;\n}\n\n.vc-profile-presets-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 12px;\n background-color: var(--background-primary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 2px solid transparent;\n outline: none;\n min-width: 0;\n width: 100%;\n max-width: 300px;\n align-self: flex-start;\n}\n\n.vc-profile-presets-row:hover {\n background-color: var(--background-modifier-hover) !important;\n border-color: var(--background-modifier-accent) !important;\n}\n\n.vc-profile-presets-row:focus-visible {\n border-color: var(--brand-experiment) !important;\n box-shadow: 0 0 0 2px var(--brand-experiment-30a);\n}\n\n.vc-profile-presets-row.selected {\n background-color: var(--background-modifier-selected);\n}\n\n.vc-profile-presets-avatar {\n border-radius: 50%;\n border: 2px solid var(--background-tertiary);\n flex-shrink: 0;\n}\n\n.vc-profile-presets-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--header-primary);\n margin-bottom: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vc-profile-presets-timestamp {\n font-size: 12px;\n color: var(--text-default);\n font-weight: 500;\n opacity: 0.8;\n}\n\n.vc-profile-presets-menu-icon {\n opacity: 0.7;\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n\n.vc-profile-presets-menu-icon:hover {\n opacity: 1;\n}\n\n.vc-profile-presets-page-input {\n width: 40px;\n text-align: center;\n padding: 4px;\n background-color: var(--background-secondary);\n border: 2px solid var(--background-modifier-accent);\n border-radius: 4px;\n color: var(--text-default);\n}", "/* Settings */\n\n.questify-setting {\n border-radius: 3px;\n border-left: 3px solid var(--text-strong);\n padding: 8px;\n user-select: text;\n}\n\n.questify-settings-divider-small {\n margin: 10px 0;\n}\n\n.questify-settings-divider-medium {\n margin: 15px 0;\n}\n\n.questify-settings-divider-large {\n margin: 20px 0;\n}\n\n.questify-dimmed-settings-item {\n filter: brightness(0.5);\n}\n\n.questify-setting-header {\n font-size: 19px;\n font-weight: 600;\n margin-bottom: 10px;\n}\n\n.questify-setting-subheader {\n font-size: 16px;\n font-weight: 500;\n margin: 15px 0 5px;\n}\n\n.questify-setting-paragraph {\n font-size: 14px;\n font-weight: 400;\n margin: 5px 0;\n line-height: normal;\n}\n\n.questify-setting-description {\n margin-bottom: 15px;\n line-height: normal;\n}\n\n.questify-setting-description-multi-paragraph {\n line-height: 0.2em;\n}\n\n[class*=\"clickTrapContainer\"] > div > .questify-settings-tooltip {\n margin-right: 4px;\n}\n\n.questify-settings-tooltip-content {\n text-align: justify;\n white-space: pre-line;\n}\n\n.questify-setting-switch {\n margin-bottom: 5px;\n}\n\n.questify-setting-switch [class*=\"container_\"] [class*=\"labelContainer_\"] label {\n font-size: 16px;\n font-weight: 500;\n}\n\n.questify-setting-subtle-switch [class*=\"container_\"] [class*=\"labelContainer_\"] label,\n.questify-setting-switch [class*=\"container_\"] [class*=\"labelContainer_\"] div {\n font-size: 14px;\n font-weight: 400;\n}\n\n.questify-notice-card {\n margin: 12px 0;\n padding: 12px;\n border-radius: 4px;\n line-height: 0.2em;\n}\n\n.questify-notice-card-red {\n border-left: 3px solid var(--status-danger);\n background-color: color-mix(in srgb, var(--status-danger) 12%, transparent);\n}\n\n.questify-notice-card-blue {\n border-left: 3px solid var(--background-brand);\n background-color: color-mix(in srgb, var(--background-brand) 12%, transparent);\n}\n\n.questify-notice-card-solo {\n margin: 12px 0 0;\n}\n\n.questify-settings-button > button[data-mana-component=\"button\"] {\n border-radius: 3px;\n}\n\n.questify-settings-button > button[data-mana-component=\"button\"] span {\n font-size: 14px;\n}\n\n.questify-setting [data-floating-ui-focusable][class*=\"selectDropdown\"],\n.questify-setting [data-mana-component=\"select-input-field\"] > [class*=\"selectField\"],\n.questify-setting [data-mana-component=\"select-input-field\"] [class*=\"tagList\"] > div {\n border-radius: 3px;\n}\n\n.questify-inline-volume-slider {\n margin-top: 0;\n}\n\n.questify-sound-preview-button {\n color: var(--interactive-normal);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: 0;\n border-radius: 4px;\n background: transparent;\n cursor: pointer;\n flex: 0 0 auto;\n}\n\n.questify-sound-preview-button:hover,\n.questify-sound-preview-button.questify-playing-audio {\n background: var(--background-modifier-hover);\n}\n\n.questify-sound-preview-button:hover {\n color: var(--interactive-active);\n}\n\n.questify-sound-preview-button.questify-playing-audio {\n color: var(--red-500);\n}\n\n.questify-sound-preview-button:disabled {\n cursor: default;\n}\n\n.questify-sound-select [class*=\"selectedIcon\"] {\n display: none;\n}\n\n.questify-no-top-margin,\n.questify-margin-top-0 {\n margin-top: 0;\n}\n\n.questify-margin-top-1 {\n margin-top: 1px;\n}\n\n.questify-margin-top-2 {\n margin-top: 2px;\n}\n\n.questify-margin-top-3 {\n margin-top: 3px;\n}\n\n.questify-margin-top-4 {\n margin-top: 4px;\n}\n\n.questify-margin-top-5 {\n margin-top: 5px;\n}\n\n.questify-margin-top-6 {\n margin-top: 6px;\n}\n\n.questify-margin-top-7 {\n margin-top: 7px;\n}\n\n.questify-margin-top-8 {\n margin-top: 8px;\n}\n\n.questify-margin-top-9 {\n margin-top: 9px;\n}\n\n.questify-margin-top-10 {\n margin-top: 10px;\n}\n\n.questify-margin-top-11 {\n margin-top: 11px;\n}\n\n.questify-margin-top-12 {\n margin-top: 12px;\n}\n\n.questify-margin-top-13 {\n margin-top: 13px;\n}\n\n.questify-margin-top-14 {\n margin-top: 14px;\n}\n\n.questify-margin-top-15 {\n margin-top: 15px;\n}\n\n.questify-no-bottom-margin,\n.questify-margin-bottom-0 {\n margin-bottom: 0;\n}\n\n.questify-margin-bottom-1 {\n margin-bottom: 1px;\n}\n\n.questify-margin-bottom-2 {\n margin-bottom: 2px;\n}\n\n.questify-margin-bottom-3 {\n margin-bottom: 3px;\n}\n\n.questify-margin-bottom-4 {\n margin-bottom: 4px;\n}\n\n.questify-margin-bottom-5 {\n margin-bottom: 5px;\n}\n\n.questify-margin-bottom-6 {\n margin-bottom: 6px;\n}\n\n.questify-margin-bottom-7 {\n margin-bottom: 7px;\n}\n\n.questify-margin-bottom-8 {\n margin-bottom: 8px;\n}\n\n.questify-margin-bottom-9 {\n margin-bottom: 9px;\n}\n\n.questify-margin-bottom-10 {\n margin-bottom: 10px;\n}\n\n.questify-margin-bottom-11 {\n margin-bottom: 11px;\n}\n\n.questify-margin-bottom-12 {\n margin-bottom: 12px;\n}\n\n.questify-margin-bottom-13 {\n margin-bottom: 13px;\n}\n\n.questify-margin-bottom-14 {\n margin-bottom: 14px;\n}\n\n.questify-margin-bottom-15 {\n margin-bottom: 15px;\n}\n\n.questify-settings-row {\n margin-top: 4px;\n display: flex;\n gap: 4px;\n align-items: flex-start;\n}\n\n.questify-settings-row-item {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.questify-settings-row-item-content {\n flex: 0 0 auto;\n}\n\n.questify-settings-slider-control-container {\n margin: 4px 0 0;\n background-color: var(--input-background-default, var(--input-background));\n padding: 0 12px 0 4px;\n border-radius: 3px;\n border: 1px solid var(--border-normal);\n min-height: 40px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n}\n\n.questify-settings-slider-control {\n margin: 0 4px;\n width: 100%;\n}\n\n.questify-sound-select-row-item {\n flex: 0 1 67%;\n}\n\n.questify-volume-slider-row-item {\n flex: 0 1 33%;\n}\n\n/* Quest Tiles */\n\n.questify-quest-tile-gradient-row-item {\n flex: 0 1 42%;\n}\n\n.questify-quest-tile-preload-row-item {\n flex: 0 1 58%;\n}\n\n.questify-quest-tile-color-row {\n align-items: stretch;\n}\n\n.questify-quest-tile-color-row-item {\n display: flex;\n flex-direction: column;\n}\n\n.questify-settings-color-picker.questify-quest-tile-color-picker {\n display: flex;\n height: 38px;\n min-height: 38px;\n min-width: 0;\n margin-top: 5px;\n}\n\n.questify-settings-color-picker.questify-quest-tile-color-picker > [class*=\"colorSwatch\"] {\n display: flex;\n width: 100%;\n height: 100%;\n min-height: 38px;\n}\n\n.questify-settings-color-picker.questify-quest-tile-color-picker [class*=\"swatch\"],\n.questify-settings-color-picker.questify-quest-tile-color-picker [class*=\"Swatch\"] {\n width: 100%;\n height: 100%;\n min-height: 38px;\n border-radius: 3px;\n}\n\n.questify-settings-color-picker.questify-disabled-color-picker {\n filter: brightness(0.5);\n pointer-events: none;\n}\n\n.questify-quest-tile-color-button {\n margin-top: 6px;\n}\n\n/* Quest Button Settings */\n\n.questify-settings-color-picker.questify-quest-button-color-picker {\n display: flex;\n height: 38px;\n min-height: 38px;\n min-width: 0;\n margin-top: 5px;\n}\n\n.questify-settings-color-picker.questify-quest-button-color-picker > [class*=\"colorSwatch\"] {\n display: flex;\n width: 100%;\n height: 100%;\n min-height: 38px;\n}\n\n.questify-settings-color-picker.questify-quest-button-color-picker [class*=\"swatch\"],\n.questify-settings-color-picker.questify-quest-button-color-picker [class*=\"Swatch\"] {\n width: 100%;\n height: 100%;\n min-height: 38px;\n border-radius: 3px;\n}\n", ".vc-random-voice-record {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vc-random-voice-keybind {\n color: \"var(--text-muted)\"\n}\n\n.vc-random-voice-recording {\n display: flex;\n gap: 8px;\n align-items: center;\n}", ".vc-rdms-background {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 168px;\n height: 95px;\n border-radius: 10px;\n background: var(--background-floating);\n}\n\n.vc-rdms-avatar {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background-size: cover;\n}\n\n.vc-rdms-name {\n margin-top: 8px;\n color: var(--text-strong);\n font-size: 12px;\n max-width: 152px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n}\n\n.vc-rdms-page-indicator-container {\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: center;\n margin-top: 10px;\n}\n\n.vc-rdms-page-indicator {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n}\n\n.vc-rdms-overlay-container {\n display: grid;\n place-items: center;\n position: fixed;\n inset: 0;\n background: rgb(0 0 0 / 38%);\n backdrop-filter: blur(2px);\n pointer-events: none;\n}\n\n.vc-rdms-cards-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n align-items: center;\n justify-content: center;\n padding: 12px 16px;\n border-radius: 12px;\n background: color-mix(in oklab, var(--background-floating) 85%, transparent);\n backdrop-filter: saturate(120%);\n box-shadow: 0 6px 24px rgb(0 0 0 / 25%);\n}\n\n.vc-rdms-cards {\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: center;\n}", ".vc-remix-settings-color-swatch-row {\n display: flex;\n flex-direction: row;\n width: 100%;\n align-items: center;\n}\n\n.vc-remix-settings-color-swatch-row > span {\n display: block;\n flex: 1;\n overflow: hidden;\n margin-top: 0;\n margin-bottom: 0;\n color: var(--text-strong);\n line-height: 24px;\n font-size: 16px;\n font-weight: 500;\n overflow-wrap: break-word;\n}", "/* `a.` is needed for specificity */\na.vc-magnet-link {\n background: var(--mention-background);\n border-radius: 3px;\n color: var(--mention-foreground);\n font-weight: var(--font-weight-medium);\n padding: 0 2px;\n unicode-bidi: plaintext;\n display: flex;\n flex-direction: row;\n align-items: center;\n width: max-content;\n \n &:hover { text-decoration: none }\n}\n\na.vc-magnet-link svg {\n height: 1em;\n vertical-align: middle;\n width: 1em;\n margin: 0 var(--space-4);\n scale: 0.9;\n}\n", "/* Modal Header */\n.vc-scheduled-msg-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n gap: 16px;\n}\n\n.vc-scheduled-msg-modal-title {\n flex: 1;\n margin: 0 !important;\n color: var(--text-strong);\n font-size: 20px;\n font-weight: 600;\n}\n\n/* Modal Content */\n.vc-scheduled-msg-modal-content {\n padding: 0 16px 16px;\n}\n\n/* Modal Footer */\n.vc-scheduled-msg-modal-footer {\n display: flex;\n flex-direction: row-reverse;\n justify-content: flex-start;\n align-items: center;\n gap: 8px;\n padding: 16px;\n}\n\n/* Channel Info */\n.vc-scheduled-msg-channel-info {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 16px;\n padding: 12px;\n background: var(--background-secondary);\n border-radius: 8px;\n}\n\n.vc-scheduled-msg-channel-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n object-fit: cover;\n flex-shrink: 0;\n}\n\n/* Dark theme channel text */\n.theme-dark .vc-scheduled-msg-channel-text {\n color: #dbdee1 !important;\n}\n\n.theme-dark .vc-scheduled-msg-channel-text strong {\n color: #f2f3f5 !important;\n}\n\n/* Light theme channel text */\n.theme-light .vc-scheduled-msg-channel-text {\n color: #313338 !important;\n}\n\n.theme-light .vc-scheduled-msg-channel-text strong {\n color: #060607 !important;\n}\n\n/* Field Labels */\n.vc-scheduled-msg-field-label {\n margin: 16px 0 8px !important;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.02em;\n}\n\n/* Dark theme field labels */\n.theme-dark .vc-scheduled-msg-field-label {\n color: #b5bac1 !important;\n}\n\n/* Light theme field labels */\n.theme-light .vc-scheduled-msg-field-label {\n color: #4e5058 !important;\n}\n\n/* Schedule Type Buttons */\n.vc-scheduled-msg-schedule-type-buttons {\n display: flex;\n gap: 8px;\n}\n\n/* DateTime Input */\n.vc-scheduled-msg-datetime-input {\n width: 100%;\n padding: 10px;\n border: none;\n border-radius: 3px;\n background: var(--input-background-default, var(--input-background));\n font-size: 16px;\n}\n\n.vc-scheduled-msg-datetime-input:focus {\n outline: none;\n}\n\n/* Dark theme datetime */\n.theme-dark .vc-scheduled-msg-datetime-input {\n color: #dbdee1 !important;\n color-scheme: dark;\n}\n\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-calendar-picker-indicator {\n filter: invert(1);\n}\n\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit,\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-fields-wrapper,\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-text,\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-month-field,\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-day-field,\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-year-field,\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-hour-field,\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-minute-field,\n.theme-dark .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-ampm-field {\n color: #dbdee1 !important;\n}\n\n/* Light theme datetime */\n.theme-light .vc-scheduled-msg-datetime-input {\n color: #313338 !important;\n color-scheme: light;\n}\n\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-calendar-picker-indicator {\n filter: none;\n}\n\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit,\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-fields-wrapper,\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-text,\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-month-field,\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-day-field,\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-year-field,\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-hour-field,\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-minute-field,\n.theme-light .vc-scheduled-msg-datetime-input::-webkit-datetime-edit-ampm-field {\n color: #313338 !important;\n}\n\n/* Error Display */\n.vc-scheduled-msg-error {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 16px;\n padding: 12px;\n background: var(--background-feedback-critical);\n border-radius: 5px;\n color: var(--text-default);\n font-size: 14px;\n}\n\n.vc-scheduled-msg-error svg {\n flex-shrink: 0;\n color: var(--status-danger);\n}\n\n/* Empty State */\n.vc-scheduled-msg-empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 48px 32px;\n color: var(--text-muted);\n}\n\n.vc-scheduled-msg-empty-state svg {\n opacity: 0.5;\n}\n\n/* Message List */\n.vc-scheduled-msg-message-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.vc-scheduled-msg-message-item {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n padding: 12px;\n background: var(--background-secondary);\n border-radius: 8px;\n}\n\n.vc-scheduled-msg-message-info {\n flex: 1;\n min-width: 0;\n}\n\n.vc-scheduled-msg-message-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vc-scheduled-msg-message-avatar {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.vc-scheduled-msg-message-channel {\n font-weight: 600;\n color: var(--text-strong);\n}\n\n.vc-scheduled-msg-message-time {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--text-muted);\n margin-bottom: 8px;\n}\n\n.vc-scheduled-msg-message-content {\n overflow-wrap: break-word;\n white-space: pre-wrap;\n}\n\n/* Dark theme message content */\n.theme-dark .vc-scheduled-msg-message-content {\n color: #dbdee1 !important;\n}\n\n/* Light theme message content */\n.theme-light .vc-scheduled-msg-message-content {\n color: #313338 !important;\n}\n\n/* Phantom Message Styles */\n.vc-scheduled-msg-phantom {\n opacity: 0.5 !important;\n}\n\n.vc-scheduled-msg-phantom:hover {\n opacity: 0.7 !important;\n}\n\n/* Scheduled message accessory */\n.vc-scheduled-msg-accessory {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 4px;\n padding: 4px 8px;\n background: var(--background-secondary);\n border-radius: 4px;\n font-size: 12px;\n color: var(--text-muted);\n pointer-events: none;\n width: fit-content;\n}", "#vc-searchbutton-container {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 8px;\n}\n\n#vc-searchbutton {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: var(--background-primary);\n height: 48px;\n width: 48px;\n border-radius: 100%;\n transition: border-radius 0.15s ease-out, background-color 0.15s ease-out;\n}\n\n#vc-searchbutton-icon {\n color: var(--text-default);\n}\n\n#vc-searchbutton:hover {\n border-radius: 34%;\n background-color: var(--green-360);\n cursor: pointer;\n}\n\n#vc-searchbutton:hover #vc-searchbutton-icon {\n color: var(--white-500);\n}", ".vc-sbic-badge-settings {\n display: flex;\n gap: 5px;\n flex-direction: row;\n}\n\n.vc-sbic-image-container {\n position: relative;\n transition: 0.15s;\n}\n\n.vc-sbic-image-container img {\n width: 25px;\n height: 25px;\n cursor: pointer;\n}\n\n.vc-sbic-disabled {\n opacity: 0.5;\n scale: 0.95;\n}\n\n.vc-sbic-settings-avatar {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n margin-right: 12px;\n}\n\n.vc-sbic-settings-username {\n font-size: 22px;\n color: white;\n margin-right: 5px;\n}\n\n.vc-sbic-badge-row {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: top;\n position: relative;\n margin-top: 6px !important;\n margin-left: -3px !important;\n}\n", ".vc-sric-indicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n box-sizing: border-box;\n height: 16px;\n padding: 0 6px 0 4px;\n background: var(--background-mod-strong);\n border-radius: 4px;\n font-size: .72rem;\n font-weight: 600;\n line-height: 16px;\n color: var(--text-default);\n cursor: default;\n}\n\n.vc-sric-icon {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n}\n\n.vc-sric-name {\n white-space: nowrap;\n max-width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-sric-indicator-compact {\n padding: 0 2px;\n}\n\n.vc-sric-indicator-compact .vc-sric-name {\n display: none;\n}", ".vc-songspotlight-mono {\n font-family: var(--font-code);\n}\n\n.vc-songspotlight-icon {\n color: var(--interactive-icon-default);\n}\n\n.vc-songspotlight-sub {\n color: var(--text-muted);\n}\n\n.vc-songspotlight-errored {\n color: var(--text-feedback-critical);\n}\n\n.vc-songspotlight-header {\n color: var(--text-strong);\n}\n\n.vc-songspotlight-clamped {\n display: -webkit-box;\n -webkit-line-clamp: 1;\n line-clamp: 1;\n -webkit-box-orient: vertical;\n min-width: 0;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* components */\n.vc-songspotlight-icon-button {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 28px;\n height: 28px;\n background: var(--opacity-20);\n border: 1px solid var(--border-strong);\n border-radius: 64px;\n transition-property: opacity, background;\n transition-duration: 0.18s;\n\n &:disabled {\n cursor: unset;\n opacity: 0.5;\n }\n\n &[data-toggled=\"true\"] {\n background: var(--opacity-28);\n }\n\n &:enabled:hover {\n background: var(--opacity-32);\n }\n}\n\n.vc-songspotlight-icon-spinner {\n > span {\n gap: 2px;\n\n > span {\n width: 5px !important;\n height: 5px !important;\n margin-right: 0 !important;\n }\n }\n}\n\n.vc-songspotlight-explicit-tag {\n background: var(--opacity-40);\n border-radius: 4px;\n padding: 0 5px;\n flex-shrink: 0;\n}\n\n/* settings */\n.vc-songspotlight-editable-song-container {\n position: relative;\n\n &[data-dragging=\"true\"] {\n opacity: 0.5;\n }\n\n &[data-insert=\"top\"]::before,\n &[data-insert=\"bottom\"]::after {\n content: \"\";\n position: absolute;\n background: var(--green-360);\n inset-inline: -8px 0;\n height: 2px;\n border-radius: 2px;\n z-index: 1;\n }\n\n &[data-insert=\"top\"]::before {\n top: -4px;\n }\n\n &[data-insert=\"bottom\"]::after {\n bottom: -4px;\n }\n}\n\n.vc-songspotlight-editable-song {\n background: var(--background-surface-higher);\n padding: 10px;\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: 0.18s background;\n isolation: isolate;\n\n &:hover {\n background: var(--background-surface-highest);\n }\n}\n\n.vc-songspotlight-add-song {\n height: 28px;\n}\n\n.vc-songspotlight-empty-song {\n background: var(--background-base-low);\n height: 30px;\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-md);\n}\n\n.vc-songspotlight-twin-buttons {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n}\n\n/* popout */\n.vc-songspotlight-songs-container {\n --base-height: 68px;\n --list-height: calc(var(--base-height) + 80px);\n --number-size: 32px;\n\n display: flex;\n flex-direction: column;\n gap: 6px;\n\n &.vc-songspotlight-songs-container-sidebar {\n margin: 12px 16px 0;\n padding: 12px;\n }\n}\n\n.vc-songspotlight-songs-more {\n cursor: pointer;\n margin-right: 4px;\n}\n\n/* widget */\n.vc-songspotlight-widget-container {\n --base-height: 88px;\n --list-height: calc(var(--base-height) + 120px);\n --number-size: 38px;\n}\n\n/* somg sponglight */\n.vc-songspotlight-song-container {\n --spread: 50px;\n --time: 0.2s;\n\n position: relative;\n height: var(--base-height);\n flex-shrink: 0;\n\n &.vc-songspotlight-list-song-container {\n height: var(--list-height);\n }\n\n &::after {\n --anim-duration: 1.8s;\n --anim-offset: mod(calc(0.15s * var(--index)), var(--anim-duration));\n\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background-image: linear-gradient(90deg,\n var(--opacity-12) 0,\n var(--opacity-32) var(--spread),\n var(--opacity-12) calc(var(--spread) * 2));\n background-size: 600% 200%;\n animation: songspotlight-skeleton-shine var(--anim-duration) var(--anim-offset) infinite linear backwards;\n pointer-events: none;\n transition: var(--time) opacity;\n }\n\n &:has(> .vc-songspotlight-song)::after {\n opacity: 0;\n }\n}\n\n.user-profile-sidebar .vc-songspotlight-song-container {\n padding: 8px;\n}\n\n.vc-songspotlight-song {\n height: 100%;\n animation: songspotlight-fade-in var(--time) linear forwards;\n border-radius: inherit;\n}\n\n/* song grid */\n.vc-songspotlight-song-grid {\n height: var(--base-height);\n display: grid;\n grid-template-columns: 1fr auto;\n grid-template-rows: 1fr auto;\n gap: 8px;\n border-radius: inherit;\n}\n\n/* song core */\n.vc-songspotlight-song-core {\n grid-column: 1;\n grid-row: 1 / 3;\n border-radius: inherit;\n min-width: 0;\n}\n\n.vc-songspotlight-song-cover {\n position: relative;\n height: 100%;\n aspect-ratio: 1 / 1;\n border-radius: inherit;\n background: var(--background-mod-muted);\n flex-shrink: 0;\n box-shadow: 0 3px 12px 0 rgb(0 0 0 / 16%);\n transition: 0.18s transform;\n\n &:hover {\n transform: scale(1.03);\n }\n\n &:active {\n transform: scale(0.97);\n }\n\n > a {\n border-radius: inherit;\n\n > img {\n position: relative;\n border-radius: inherit;\n width: 100%;\n height: 100%;\n }\n }\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n transition: 0.18s background;\n }\n\n &:hover::after {\n background: rgb(0 0 0 / 20%);\n }\n}\n\n/* song service */\n.vc-songspotlight-song-service {\n grid-column: 2;\n grid-row: 1 / 3;\n}\n\n/* song player */\n.vc-songspotlight-song-player {\n grid-column: 1 / 3;\n grid-row: 2;\n transition: 0.18s opacity;\n\n &[data-idle=\"true\"] {\n opacity: 0;\n }\n}\n\n.vc-songspotlight-song:hover .vc-songspotlight-song-player {\n opacity: 1;\n}\n\n.vc-songspotlight-song-progress-container {\n position: relative;\n padding: 2px;\n}\n\n.vc-songspotlight-song-progress {\n position: absolute;\n inset: 0;\n color: var(--icon-default);\n pointer-events: none;\n\n > circle {\n will-change: stroke-dashoffset;\n\n &[data-empty=\"true\"] {\n transition: 0.18s stroke-dashoffset;\n }\n }\n}\n\n.vc-songspotlight-song-divider {\n width: 100%;\n background: var(--user-profile-border);\n height: 1px;\n margin-top: 6px;\n}\n\n/* song list */\n.vc-songspotlight-song-list {\n flex: 1;\n padding: 6px 0;\n}\n\n/* song entry */\n.vc-songspotlight-song-entry {\n padding-right: 8px;\n border-radius: var(--radius-sm);\n transition-property: opacity, background, transform;\n transition-duration: 0.18s;\n cursor: pointer;\n\n &[aria-disabled=\"true\"] {\n cursor: unset;\n opacity: 0.5;\n }\n\n &[aria-disabled=\"false\"][data-playing=\"true\"] {\n background: var(--opacity-12);\n }\n\n &[aria-disabled=\"false\"]:hover {\n background: var(--opacity-20);\n }\n}\n\n.vc-songspotlight-song-entry-number {\n width: var(--number-size);\n text-align: center;\n flex-shrink: 0;\n}\n\n@keyframes songspotlight-skeleton-shine {\n 0% {\n background-position: calc(var(--spread) * -2) 0;\n }\n\n 30%,\n 100% {\n background-position: calc(500px + var(--spread) * 2) 0;\n }\n}\n\n@keyframes songspotlight-fade-in {\n from {\n opacity: 0;\n }\n}", ".vc-sp-disabled {\n opacity: 0.5;\n}\n\n.vc-sp-icon {\n transform: rotate(45deg);\n width: 16px;\n height: 16px;\n color: var(--interactive-normal);\n opacity: 0;\n}\n\n[data-menu-item=\"true\"]:hover .vc-sp-icon {\n opacity: 1;\n}\n\n[data-menu-item=\"true\"]:hover .vc-sp-icon:hover {\n color: var(--status-danger);\n}\n\n[data-menu-item=\"true\"][id^=\"sp-custom-status-submenu\"] img.emoji {\n width: 16px !important;\n height: 16px !important;\n}", ".vc-streaks-badge {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n margin-left: 4px;\n vertical-align: middle;\n}\n\n.vc-streaks-count {\n font-size: 12px;\n font-weight: 700;\n line-height: 1;\n}\n", "[data-tab-id=\"ThemeLibrary\"]::before {\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-mask: var(--si-widget) center/contain no-repeat !important;\n mask: var(--si-widget) center/contain no-repeat !important;\n}\n\n.vce-theme-info {\n padding: 0.5rem;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex-direction: row;\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n.vce-theme-info-preview {\n max-width: 100%;\n max-height: 100%;\n border-radius: 5px;\n margin: 0.5rem;\n}\n\n.vce-theme-info-preview img {\n width: 1080px !important;\n height: 1920px !important;\n object-fit: cover;\n}\n\n.vce-theme-text-title {\n padding: 0.5rem;\n padding-bottom: 0;\n}\n\n.vce-theme-text-description {\n padding: 0.5rem;\n padding-top: 0;\n padding-bottom: 0.25rem;\n}\n\n.vce-theme-info-tag {\n background: var(--background-secondary-alt);\n color: var(--text-strong);\n border: 2px solid var(--background-base-low);\n padding: 0.25rem 0.5rem;\n display: inline-block;\n border-radius: 5px;\n margin-right: 0.5rem;\n margin-bottom: 0.5rem;\n}\n\n.vce-text-input {\n display: inline-block !important;\n color: var(--text-default) !important;\n font-size: 16px !important;\n padding: 0.5em;\n border: 2px solid var(--background-base-low);\n line-height: 1.2;\n max-height: unset;\n}\n\n.vce-likes-icon {\n overflow: visible;\n margin-right: 0.5rem;\n transition: fill 0.3s ease;\n}\n\n.vce-button-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 10px;\n}\n\n.vce-warning-button {\n display: flex;\n width: 100%;\n}\n\n.vce-search-grid {\n display: grid;\n height: 40px;\n gap: 10px;\n grid-template-columns: 1fr 200px;\n}\n\n.vce-button {\n white-space: normal;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.vce-overwrite-modal {\n border: 1px solid var(--input-border-default, var(--input-border));\n border-radius: 8px;\n padding: 0.5em;\n}\n\n.vce-image-paste {\n border-radius: 8px;\n border: 3px dashed var(--input-border-default, var(--input-border));\n background-color: var(--background-secondary-alt);\n padding: 20px;\n text-align: center;\n position: relative;\n cursor: pointer;\n margin-top: 20px;\n transition: border 0.3s ease;\n}\n\n.vce-image-paste:hover {\n border: 3px dashed var(--brand-500);\n transition: border 0.3s ease;\n}\n\n.vce-styled-list {\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n\n.vce-styled-list li {\n padding: 10px 0;\n border-bottom: thin solid var(--input-border-default, var(--input-border));\n}\n\n.vce-styled-list li:last-child {\n border-bottom: none;\n}\n\n.vce-divider-border {\n border-bottom: thin solid var(--input-border-default, var(--input-border));\n padding: 10px 0;\n width: 100%;\n}", ".timezone-profile-item {\n position: absolute;\n right: 0;\n bottom: 0;\n margin: 28px 16px 4px;\n background-color: rgb(0 0 0 / 50%);\n border-radius: 4px;\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n color: var(--text-default);\n}\n\n[class*=\"topSection\"] .timezone-profile-item {\n margin: 16px;\n}\n\n.timezone-message-item {\n margin-left: 4px;\n}\n\n.vc-timezone-modal-header {\n place-content: center;\n justify-content: space-between;\n}\n\n.vc-timezone-modal-header h1 {\n margin: 0;\n}\n\n.vc-timezone-modal-content {\n padding: 1em;\n}\n\n.vc-timezone-modal-footer {\n gap: 16px;\n}\n\n.timezone-tooltip {\n max-width: none !important;\n white-space: nowrap\n}\n\n.timezone-local-text {\n opacity: 0.7;\n font-style: italic;\n}", ":root {\n /* Body */\n --vc-toast-notifications-background-color: var(--background-base-lower-alt);\n --vc-toast-notifications-text-color: var(--text-default);\n --vc-toast-notifications-border-radius: 6px;\n --vc-toast-notifications-width: fit-content;\n --vc-toast-notifications-min-width: 25rem;\n --vc-toast-notifications-max-width: 50%;\n --vc-toast-notifications-min-height: 10vh;\n --vc-toast-notifications-max-height: 50%;\n --vc-toast-notifications-padding: 1rem;\n\n /* Title */\n --vc-toast-notifications-title-color: var(--text-strong);\n --vc-toast-notifications-title-font-size: 1rem;\n --vc-toast-notifications-title-font-weight: 600;\n --vc-toast-notifications-title-line-height: 1.25rem;\n\n /* Close Button */\n --vc-toast-notifications-close-button-color: var(--interactive-icon-default);\n --vc-toast-notifications-close-button-hover-color: var(--interactive-icon-hover);\n --vc-toast-notifications-close-button-opacity: 0.5;\n --vc-toast-notifications-close-button-hover-opacity: 1;\n\n /* Message Author Image */\n --vc-toast-notifications-image-height: 4rem;\n --vc-toast-notifications-image-width: var(--vc-toast-notifications-image-height);\n --vc-toast-notifications-image-border-radius: 6px;\n\n /* Progress Bar */\n --vc-toast-notifications-progressbar-height: 0.25rem;\n --vc-toast-notifications-progressbar-color: var(--brand-500);\n\n /* Position Offset - Global inherited offset by all positions */\n --vc-toast-notifications-position-offset: 1rem;\n}\n\n#vc-toast-notifications-container {\n position: fixed;\n z-index: 2147483647;\n display: flex;\n gap: 0.75rem;\n pointer-events: none;\n max-height: calc(100vh - var(--vc-toast-notifications-position-offset) * 2);\n}\n\n#vc-toast-notifications-container.vc-toast-notifications-position-bottom-left,\n#vc-toast-notifications-container.vc-toast-notifications-position-bottom-right {\n flex-direction: column;\n justify-content: flex-end;\n}\n\n#vc-toast-notifications-container.vc-toast-notifications-position-top-left,\n#vc-toast-notifications-container.vc-toast-notifications-position-top-right {\n flex-direction: column-reverse;\n justify-content: flex-start;\n}\n\n.vc-toast-notifications-notification-root {\n all: unset;\n pointer-events: auto;\n position: relative;\n display: flex;\n flex-direction: column;\n color: var(--vc-toast-notifications-text-color);\n background-color: var(--vc-toast-notifications-background-color);\n border-radius: var(--vc-toast-notifications-border-radius);\n overflow: hidden;\n cursor: pointer;\n min-width: var(--vc-toast-notifications-min-width);\n width: var(--vc-toast-notifications-width);\n max-width: var(--vc-toast-notifications-max-width);\n min-height: var(--vc-toast-notifications-min-height);\n max-height: var(--vc-toast-notifications-max-height);\n flex-shrink: 0;\n}\n\n.vc-toast-notifications-notification-content {\n display: flex;\n flex-direction: column;\n padding: var(--vc-toast-notifications-padding) 0.2rem;\n width: 100%;\n}\n\n.vc-toast-notifications-context-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: var(--vc-toast-notifications-title-color);\n font-size: var(--vc-toast-notifications-title-font-size);\n font-weight: var(--vc-toast-notifications-title-font-weight);\n line-height: var(--vc-toast-notifications-title-line-height);\n padding: 0 0.8rem 0.5rem;\n}\n\n.vc-toast-notifications-context-header-icon {\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 50%;\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.vc-toast-notifications-context-header-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n\n.vc-toast-notifications-context-header-separator {\n color: var(--text-muted);\n font-weight: 400;\n}\n\n.vc-toast-notifications-context-header-channel {\n color: var(--text-muted);\n font-weight: 500;\n}\n\n/* System-mode notifications (friend activity, example) */\n.vc-toast-notifications-notification-system {\n display: flex;\n flex-direction: row;\n padding: var(--vc-toast-notifications-padding);\n gap: 1.25rem;\n width: 100%;\n}\n\n.vc-toast-notifications-notification-system .vc-toast-notifications-notification-content {\n display: block;\n padding: 0;\n flex: 1;\n min-width: 0;\n}\n\n.vc-toast-notifications-notification-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 0.5rem;\n}\n\n.vc-toast-notifications-notification-title {\n color: var(--vc-toast-notifications-title-color);\n font-size: var(--vc-toast-notifications-title-font-size);\n font-weight: var(--vc-toast-notifications-title-font-weight);\n line-height: var(--vc-toast-notifications-title-line-height);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vc-toast-notifications-notification-close-btn {\n all: unset;\n cursor: pointer;\n color: var(--vc-toast-notifications-close-button-color);\n opacity: var(--vc-toast-notifications-close-button-opacity);\n transition: opacity 0.2s ease-in-out, color 0.2s ease-in-out;\n position: absolute;\n top: 0.4rem;\n right: 0.4rem;\n z-index: 1;\n width: 1.5rem;\n height: 1.5rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background-color: var(--vc-toast-notifications-background-color);\n}\n\n.vc-toast-notifications-notification-close-btn svg {\n width: 1.25rem;\n height: 1.25rem;\n}\n\n.vc-toast-notifications-notification-close-btn:hover {\n color: var(--vc-toast-notifications-close-button-hover-color);\n opacity: var(--vc-toast-notifications-close-button-hover-opacity);\n}\n\n.vc-toast-notifications-notification-icon {\n height: var(--vc-toast-notifications-image-height);\n width: var(--vc-toast-notifications-image-width);\n border-radius: var(--vc-toast-notifications-image-border-radius);\n}\n\n.vc-toast-notifications-notification-progressbar {\n height: var(--vc-toast-notifications-progressbar-height);\n background-color: var(--vc-toast-notifications-progressbar-color);\n border-radius: 5px;\n margin-top: auto;\n}\n\n.vc-toast-notifications-notification-p {\n margin: 0.5rem 0 0;\n margin-bottom: 3px;\n line-height: 140%;\n overflow-wrap: anywhere;\n}\n\n/* Container positioning. */\n#vc-toast-notifications-container.vc-toast-notifications-position-bottom-left {\n bottom: var(--vc-toast-notifications-position-offset);\n left: var(--vc-toast-notifications-position-offset);\n}\n\n#vc-toast-notifications-container.vc-toast-notifications-position-top-left {\n top: var(--vc-toast-notifications-position-offset);\n left: var(--vc-toast-notifications-position-offset);\n}\n\n#vc-toast-notifications-container.vc-toast-notifications-position-top-right {\n top: var(--vc-toast-notifications-position-offset);\n right: var(--vc-toast-notifications-position-offset);\n}\n\n#vc-toast-notifications-container.vc-toast-notifications-position-bottom-right {\n bottom: var(--vc-toast-notifications-position-offset);\n right: var(--vc-toast-notifications-position-offset);\n}\n\n.visual-refresh .vc-toast-notifications-notification-root {\n background-color: var(--background-base-low);\n}", ".eq-trans-accessory {\n color: var(--text-muted);\n margin-top: 0.5em;\n font-style: italic;\n font-weight: 400;\n display: block;\n white-space: pre-wrap;\n}\n\n.eq-trans-accessory svg {\n margin-right: 0.25em;\n}\n\n.eq-trans-dismiss {\n all: unset;\n cursor: pointer;\n color: var(--text-link);\n}\n\n.eq-trans-dismiss:is(:hover, :focus) {\n text-decoration: underline;\n}", ".vc-converter-dismiss {\n all: unset;\n cursor: pointer;\n color: var(--text-link);\n}\n\n.vc-converter-dismiss:is(:hover, :focus) {\n text-decoration: underline;\n}\n\n.vc-converter-accessory {\n color: var(--text-muted);\n margin-top: 0.5em;\n font-style: italic;\n font-weight: 400;\n}\n\n.vc-converter-accessory svg {\n margin-right: 0.25em;\n}\n\n.vc-converter-chat-button {\n scale: 1.085;\n}\n", ".vc-url-hl-highlight {\n color: var(--vc-url-hl-color) !important;\n}\n\n.vc-url-hl-marked {\n color: var(--vc-url-hl-color) !important;\n font-weight: 600;\n}\n\n.vc-url-hl-pattern-wrapper {\n display: grid;\n grid-template-columns: 1fr auto auto;\n gap: 8px;\n align-items: center;\n padding-bottom: 12px;\n}\n\n.vc-url-hl-color-picker {\n display: flex;\n align-items: center;\n}\n\n.vc-url-hl-color-picker [class*=\"swatch\"] {\n width: 32px;\n height: 32px;\n border-radius: 4px;\n}\n\n.vc-url-hl-remove-button {\n width: 36px !important;\n height: 36px !important;\n min-width: 36px !important;\n min-height: 36px !important;\n padding: 0 !important;\n box-sizing: border-box;\n}\n\n.vc-url-hl-add-button {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n\n.vc-url-hl-icon {\n width: 20px;\n height: 20px;\n}", ".vc-userpfp-settings {\n flex-direction: row;\n}\n\n.vc-userpfp-settings-button {\n width: 100%;\n height: 50px;\n}\n\n.vc-userpfp-settings-heart {\n margin-left: 6px;\n}\n\n.vc-userpfp-preview-row {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n gap: 24px;\n margin: 12px 0;\n}\n\n.vc-userpfp-preview-box {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n}\n\n.vc-userpfp-preview-label {\n font-size: 11px;\n color: var(--text-muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.vc-userpfp-avatar {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n object-fit: cover;\n border: 3px solid var(--background-modifier-accent);\n}\n\n.vc-userpfp-avatar-active {\n border: 3px solid var(--brand-experiment);\n box-shadow: 0 0 12px var(--brand-experiment-30a);\n}\n\n.vc-userpfp-arrow {\n font-size: 24px;\n color: var(--text-muted);\n margin-top: 20px;\n}\n\n.vc-userpfp-dropzone {\n border: 2px dashed var(--background-modifier-accent);\n border-radius: 10px;\n padding: 20px;\n text-align: center;\n cursor: pointer;\n transition: background-color 0.15s, border-color 0.15s;\n user-select: none;\n color: var(--text-muted);\n font-size: 14px;\n margin-top: 8px;\n}\n\n.vc-userpfp-dropzone-active {\n border-color: var(--brand-experiment);\n background: var(--brand-experiment-10a);\n}", ".vc-panelsettings-underline-on-hover:hover {\n text-decoration: underline;\n}\n", ".voice-user-buttons {\n flex: none !important;\n}\n\n.voice-user-buttons-left {\n order: -1;\n}\n\n.voice-user-buttons-right {\n order: 1;\n margin-left: 4px;\n}\n\n.voice-user-button-container {\n padding-right: 4px;\n}\n\ndiv[class*='list'][class*='collapsed'] .voice-user-buttons {\n display: none;\n}\n", ".vc-voice-channel-log-entry {\n list-style-type: none;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 16px;\n min-height: 44px;\n border-radius: 4px;\n}\n\n.vc-voice-channel-log-entry:hover {\n background-color: var(--background-modifier-hover);\n}\n\n.vc-voice-channel-log-entry-timestamp {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n min-width: 72px;\n flex-shrink: 0;\n}\n\n.vc-voice-channel-log-timestamp {\n font-size: 0.75rem;\n color: var(--text-muted);\n line-height: 1.3;\n}\n\n.vc-voice-channel-log-elapsed {\n font-size: 0.625rem;\n color: var(--text-muted);\n line-height: 1.3;\n}\n\n.vc-voice-channel-log-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n}\n\n.vc-voice-channel-log-icon-brand {\n color: var(--brand-experiment);\n}\n\n.vc-voice-channel-log-icon-danger {\n color: var(--status-danger);\n}\n\n.vc-voice-channel-log-icon-positive {\n color: var(--status-positive);\n}\n\n.vc-voice-channel-log-icon-warning {\n color: var(--status-warning);\n}\n\n.vc-voice-channel-log-app-icon {\n width: 20px;\n height: 20px;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.vc-voice-channel-log-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n cursor: pointer;\n flex-shrink: 0;\n object-fit: cover;\n}\n\n.vc-voice-channel-log-avatar:hover {\n opacity: 0.8;\n}\n\n.vc-voice-channel-log-content {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n flex: 1;\n}\n\n.vc-voice-channel-log-username {\n font-weight: 600;\n font-size: 0.875rem;\n color: var(--text-strong);\n cursor: pointer;\n width: fit-content;\n}\n\n.vc-voice-channel-log-username:hover {\n text-decoration: underline;\n}\n\n.vc-voice-channel-log-description {\n font-size: 0.8125rem;\n color: var(--text-subtle);\n}\n\n.vc-voice-channel-log-soundboard-info {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.vc-voice-channel-log-soundboard-emoji {\n width: 16px;\n height: 16px;\n}\n\n.vc-voice-channel-log-soundboard-id {\n font-size: 0.8125rem;\n color: var(--text-subtle);\n}\n\n.vc-voice-channel-log-soundboard-actions {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: 4px;\n}\n\n.vc-voice-channel-log-soundboard-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n color: var(--interactive-icon-default);\n cursor: pointer;\n}\n\n.vc-voice-channel-log-soundboard-action:hover {\n color: var(--interactive-icon-active);\n background-color: var(--background-modifier-hover);\n}\n\n.vc-voice-channel-log-date-separator {\n display: flex;\n align-items: center;\n margin: 8px 16px;\n color: var(--text-muted);\n font-size: 0.75rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.02em;\n}\n\n.vc-voice-channel-log-date-separator::before,\n.vc-voice-channel-log-date-separator::after {\n content: \"\";\n flex: 1;\n height: 1px;\n background: var(--border-subtle);\n}\n\n.vc-voice-channel-log-date-separator span {\n padding: 0 8px;\n}\n\n.vc-voice-channel-log-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 32px;\n color: var(--text-muted);\n font-size: 0.875rem;\n}\n\n.vc-voice-channel-log-scroller {\n padding: 8px 0;\n}\n", ".vc-transcription-button {\n width: 24px;\n height: 24px;\n padding: 0;\n cursor: pointer;\n position: relative;\n}\n\n.vc-transcription-icon {\n color: var(--interactive-icon-default);\n}\n\n.vc-transcription-icon:hover {\n color: var(--interactive-background-hover);\n}\n\n.vc-transcription-content {\n min-height: 200px;\n}\n\n.vc-transcription-result {\n padding: 16px;\n white-space: pre-wrap;\n user-select: text;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.vc-transcription-model-option {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.vc-transcription-model-size {\n font-size: 12px;\n color: var(--text-muted);\n opacity: 0.75;\n flex-shrink: 0;\n}\n\n.vc-transcription-container:has(> .vc-transcription-embed),\n.vc-transcription-container.vc-transcription-has-embed {\n flex-wrap: wrap !important;\n}\n\n.vc-transcription-container:has(> .vc-transcription-embed-maintain-horizontal),\n.vc-transcription-container.vc-transcription-maintain-horizontal {\n flex-wrap: wrap !important;\n width: fit-content !important;\n max-width: 100% !important;\n}\n\n.vc-transcription-embed {\n order: 9999 !important;\n display: flex;\n flex-direction: column;\n width: 100%;\n flex-basis: 100%;\n min-width: 0;\n margin-top: 8px;\n border-radius: 8px;\n background: rgb(0 0 0 / 25%);\n border: 1px solid var(--border-subtle, rgb(255 255 255 / 8%));\n backdrop-filter: blur(4px);\n box-sizing: border-box;\n overflow: hidden;\n user-select: text;\n}\n\n.vc-transcription-embed-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 6px 10px;\n background: rgb(0 0 0 / 15%);\n border-bottom: 1px solid var(--border-subtle, rgb(255 255 255 / 6%));\n}\n\n.vc-transcription-embed-title {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--text-muted);\n}\n\n.vc-transcription-status-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--text-muted);\n transition: background-color 0.2s ease;\n}\n\n.vc-transcription-status-dot-active {\n background-color: var(--main-color, var(--brand-experiment, var(--brand-500, #5865f2)));\n animation: vc-transcription-pulse 1.5s infinite;\n}\n\n.vc-transcription-status-dot-error {\n background-color: var(--text-feedback-critical, #ed4245);\n}\n\n@keyframes vc-transcription-pulse {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n\n 50% {\n opacity: 0.35;\n transform: scale(0.85);\n }\n}\n\n.vc-transcription-embed-actions {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.vc-transcription-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--interactive-icon-default, var(--text-muted));\n cursor: pointer;\n transition: color 0.15s ease, background-color 0.15s ease;\n}\n\n.vc-transcription-action-btn:hover {\n color: var(--interactive-icon-hover, var(--text-normal));\n background-color: var(--background-modifier-hover, rgb(255 255 255 / 8%));\n}\n\n.vc-transcription-action-btn-active {\n color: var(--main-color, var(--brand-experiment, var(--brand-500, #5865f2)));\n background-color: var(--background-modifier-selected, rgb(255 255 255 / 12%));\n}\n\n.vc-transcription-embed-body {\n padding: 8px 12px;\n max-height: 180px;\n overflow-y: auto;\n}\n\n.vc-transcription-embed-text {\n white-space: pre-wrap;\n user-select: text;\n}\n\n.vc-transcription-embed-maintain-horizontal {\n order: 9999 !important;\n width: 0 !important;\n min-width: 100% !important;\n max-width: 100% !important;\n flex-basis: 100% !important;\n flex-grow: 1 !important;\n box-sizing: border-box !important;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.vc-transcription-embed-maintain-horizontal .vc-transcription-embed-header {\n width: 100% !important;\n min-width: 0 !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n.vc-transcription-embed-maintain-horizontal .vc-transcription-embed-body {\n width: 100% !important;\n min-width: 0 !important;\n max-width: 100% !important;\n max-height: 280px;\n box-sizing: border-box !important;\n overflow-wrap: anywhere;\n}\n\n.vc-transcription-embed-maintain-horizontal .vc-transcription-embed-text {\n width: 100% !important;\n min-width: 0 !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n overflow-wrap: anywhere;\n display: block;\n}", ".vc-voicestats-profile-section {\n gap: 4px;\n}\n", ".emoji-container {\n display: grid;\n gap: 10px;\n background-color: var(--background-secondary-alt);\n max-height: 300px;\n overflow-y: auto;\n}\n\n.guild-section {\n border: 1px solid var(--background-base-low);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.guild-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px;\n background-color: var(--background-base-low);\n cursor: pointer;\n}\n\n.guild-name {\n font-size: 18px;\n font-weight: bold;\n color: var(--white-500);\n margin: 0;\n}\n\n.remove-all-button {\n cursor: pointer;\n background-color: var(--status-danger);\n color: var(--white-500);\n transition: background-color 0.2s ease;\n}\n\n.remove-all-button:hover {\n filter: saturate(75%);\n}\n\n.guild-emojis {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));\n gap: 10px;\n padding: 10px;\n}\n\n.emoji-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px;\n background-color: var(--background-base-lower-alt);\n border-radius: 4px;\n}\n\n.emoji-image {\n max-height: 32px;\n width: auto;\n height: auto;\n}\n\n.emoji-surrogate {\n font-size: 32px;\n}\n\n.emoji-name {\n font-weight: bold;\n color: var(--white-500);\n margin-bottom: 10px;\n text-align: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n}\n\n.remove-button {\n cursor: pointer;\n background-color: var(--status-danger);\n color: var(--white-500);\n transition: background-color 0.2s ease;\n margin-top: 10px;\n}\n\n.remove-button:hover {\n filter: saturate(75%);\n}\n\n.emoji-container::-webkit-scrollbar {\n background-color: #fff1;\n width: 10px;\n}\n\n.emoji-container::-webkit-scrollbar-thumb {\n background-color: #fff3;\n}\n\n.no-emoji-message {\n font-size: 25px;\n color: var(--white-500);\n text-align: center;\n margin: 20px;\n}", ".vc-whos-watching-user-avatar {\n border-radius: 8px;\n width: 16px;\n height: 16px;\n}\n\n.vc-whos-watching-spectating-header {\n margin-top: 8px;\n margin-bottom: 0;\n text-transform: uppercase;\n}", "/* Works around a very strange issue where *something* (electron?) will inject body { app-region: drag } when using online themes */\nbody {\n app-region: no-drag;\n}"], "mappings": "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", "names": [] } // Equicord 0d27aec1ab604f1c0d7f7eb9114114e71da93573 // Standalone: true // Platform: Universal // Updater Disabled: false "use strict";var Vencord=(()=>{var yQe=Object.create;var t3=Object.defineProperty;var bQe=Object.getOwnPropertyDescriptor;var SQe=Object.getOwnPropertyNames;var wQe=Object.getPrototypeOf,AQe=Object.prototype.hasOwnProperty;var kQe=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,o)=>(typeof require<"u"?require:t)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var h=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(r){throw o=[r],r}};var xa=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},Bt=(e,t)=>{for(var o in t)t3(e,o,{get:t[o],enumerable:!0})},Kce=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of SQe(t))!AQe.call(e,n)&&n!==o&&t3(e,n,{get:()=>t[n],enumerable:!(r=bQe(t,n))||r.enumerable});return e};var Xu=(e,t,o)=>(o=e!=null?yQe(wQe(e)):{},Kce(t||!e||!e.__esModule?t3(o,"default",{value:e,enumerable:!0}):o,e)),Jx=e=>Kce(t3({},"__esModule",{value:!0}),e);var f,i,d=h(()=>{"use strict";f=Symbol.for("react.fragment"),i=(...e)=>(i=Vencord.Webpack.Common.React.createElement)(...e)});var Qce=h(()=>{});function _l(e,t=5){let o=0,r;return()=>(r===void 0&&t>o++&&(r=e(),r===void 0&&t===o&&console.error("Lazy factory failed:",e)),r)}function ko(e,t=5,o=!1){let r=!0;o||setTimeout(()=>r=!1,0);let n=0,a=Object.assign(function(){},{[kp]:void 0,[Zc](){return!a[kp]&&t>n++&&(a[kp]=e(),!a[kp]&&t===n&&console.error("Lazy factory failed:",e)),a[kp]}});return new Proxy(a,{...o3,get(s,l,c){if(l===kp||l===Zc)return Reflect.get(s,l,c);if(!o&&r)return ko(()=>Reflect.get(s[Zc](),l,c),t,!0);let u=s[Zc]();if(typeof u=="object"||typeof u=="function")return Reflect.get(u,l,c);throw new Error("proxyLazy called on a primitive value")}})}var Zce,o3,Zc,kp,Er=h(()=>{"use strict";d();Zce=["arguments","caller","prototype"],o3={},Zc=Symbol.for("vencord.lazy.get"),kp=Symbol.for("vencord.lazy.cached");for(let e of["apply","construct","defineProperty","deleteProperty","getOwnPropertyDescriptor","getPrototypeOf","has","isExtensible","ownKeys","preventExtensions","set","setPrototypeOf"])o3[e]=(t,...o)=>Reflect[e](t[Zc](),...o);o3.ownKeys=e=>{let t=e[Zc](),o=Reflect.ownKeys(t);for(let r of Zce)o.includes(r)||o.push(r);return o};o3.getOwnPropertyDescriptor=(e,t)=>{if(typeof t=="string"&&Zce.includes(t))return Reflect.getOwnPropertyDescriptor(e,t);let o=Reflect.getOwnPropertyDescriptor(e[Zc](),t);return o&&Object.defineProperty(e,t,o),o}});function Vo(e,t=5){let o=_l(e,t),r=n=>{let a=o()??CQe;return i(a,{...n})};return r.$$vencordGetWrappedComponent=o,r}var CQe,A0=h(()=>{"use strict";d();Er();CQe=()=>null});var ie,He=h(()=>{"use strict";d();ie=class{constructor(t,o="white"){this.name=t;this.color=o}name;color;static makeTitle(t,o){return["%c %c %s ","",`background: ${t}; color: black; font-weight: bold; border-radius: 5px;`,o]}_log(t,o,r,n=""){console[t](`%c Equicord %c %c ${this.name} ${n}`,`background: ${o}; color: black; font-weight: bold; border-radius: 5px;`,"",`background: ${this.color}; color: black; font-weight: bold; border-radius: 5px;`,...r)}log(...t){this._log("log","#a6d189",t)}info(...t){this._log("info","#a6d189",t)}error(...t){this._log("error","#e78284",t)}errorCustomFmt(t,...o){this._log("error","#e78284",o,t)}warn(...t){this._log("warn","#e5c890",t)}debug(...t){this._log("debug","#eebebe",t)}}});function bs(e,t){let o=document.createElement("style");return o.id=e,t.append(o),o}var sU,K,we=h(()=>{"use strict";d();sU=(e,t="")=>e.split(" ").map(o=>`.${t}${o}`).join(""),K=(e="")=>(...t)=>{let o=new Set;for(let r of t)r&&typeof r=="string"?o.add(r):Array.isArray(r)?r.forEach(n=>o.add(n)):r&&typeof r=="object"&&Object.entries(r).forEach(([n,a])=>a&&o.add(n));return Array.from(o,r=>e+r).join(" ")}});function cU(){let e="";for(let t of TQe)for(let o of IQe){let r=lU(`${t}-${o}`);z[`${t}${o}`]=r,e+=`.${r}{margin-${t}:${o}px;}`}return z.reset=lU("reset"),e+=`.${z.reset}{margin:0;}`,z.centerHorz=lU("center-horz"),e+=`.${z.centerHorz}{margin-left:auto;margin-right:auto;}`,e}var lU,TQe,IQe,z,Ja=h(()=>{"use strict";d();we();lU=K("vc-margin-"),TQe=["top","bottom","left","right"],IQe=[4,8,16,20,24,40,60],z={}});var Wt=h(()=>{"use strict";d();Ja()});var Yce=h(()=>{});var Jce=h(()=>{});function uU(){let e="";for(let[t,{fontSize:o,lineHeight:r}]of Object.entries(Xce))e+=`.${Qm(t)}{font-size:${o};line-height:${r};}`;for(let[t,o]of Object.entries(Vce))e+=`.${Qm(t)}{font-weight:${o};}`;return e}function Y(e){let{size:t="md",weight:o="normal",color:r,tag:n="div",selectable:a=!1,lineClamp:s,tabularNumbers:l=!1,defaultColor:c=!0,children:u,className:p,style:m,...g}=e;return i(n,{className:X(Qm("base",t,o),a&&Qm("selectable"),s===1&&Qm("line-clamp-1"),s!=null&&s>1&&Qm("line-clamp"),l&&Qm("tabular-numbers"),c&&Qm("defaultColor"),p),style:{...m,...r&&{color:eue[r]},...s&&s>1&&{WebkitLineClamp:s}},...g},u)}var Qm,Xce,Vce,eue,dU,yt=h(()=>{"use strict";d();Jce();we();Be();Qm=K("vc-text-"),Xce={xxs:{fontSize:"10px",lineHeight:"1.2"},xs:{fontSize:"12px",lineHeight:"1.33333"},sm:{fontSize:"14px",lineHeight:"1.28571"},md:{fontSize:"16px",lineHeight:"1.25"},lg:{fontSize:"20px",lineHeight:"1.2"},xl:{fontSize:"24px",lineHeight:"1.25"},xxl:{fontSize:"32px",lineHeight:"1.25"}},Vce={thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800"},eue={"text-default":"var(--text-default)","text-muted":"var(--text-muted)","text-link":"var(--text-link)","text-danger":"var(--text-feedback-critical)","text-brand":"var(--text-brand)","text-strong":"var(--text-strong)","text-subtle":"var(--text-subtle)","text-invert":"var(--text-invert)","text-feedback-critical":"var(--text-feedback-critical)","text-feedback-info":"var(--text-feedback-info)","text-feedback-positive":"var(--text-feedback-positive)","text-feedback-warning":"var(--text-feedback-warning)","text-status-dnd":"var(--text-status-dnd)","text-status-idle":"var(--text-status-idle)","text-status-offline":"var(--text-status-offline)","text-status-online":"var(--text-status-online)","control-text-critical":"var(--control-text-critical-secondary-default)","control-text-primary":"var(--control-text-primary-default)"};dU=function({color:t,variant:o,...r}){let n=r;if(o){let[a,s]=o.split("/");if(a&&s){let l=a.split("-").pop();n.size=l,n.weight=s}}return t&&(n.style??={},n.style.color=`var(--${t}, var(--text-default))`),i(Y,{...n})}});var tue=h(()=>{});var oue=h(()=>{});function po(e){return DiscordNative.clipboard.copy(e)}function pU(){return DiscordNative.clipboard.read()}var mi=h(()=>{"use strict";d()});function iue(e,t,o,r){return BigInt(e)|BigInt(t)<<16n|BigInt(o)<<32n|BigInt(r)<<48n}function Cp(e,t){return BigInt(e[t])|BigInt(e[t+1])<<8n|BigInt(e[t+2])<<16n|BigInt(e[t+3])<<24n|BigInt(e[t+4])<<32n|BigInt(e[t+5])<<40n|BigInt(e[t+6])<<48n|BigInt(e[t+7])<<56n}function fi(e,t){return e<>aue-t}function io(e){return BigInt.asUintN(64,e)}function Xx(e,t=0){return new mU(t).update(e).digest()}var zr,va,nue,J2,rue,aue,EQe,DQe,mU,fU=h(()=>{d();zr=11400714785074694791n,va=14029467366897019727n,nue=1609587929392839161n,J2=9650029242287828579n,rue=2870177450012600261n,aue=64n,EQe=2n**aue-1n,DQe=new TextEncoder;mU=class{#e;#t;#o;#i;#a;#s;#n;#r;constructor(t=0){this.reset(t)}reset(t=this.#e){return this.#e=BigInt.asUintN(32,BigInt(t)),this.#t=io(this.#e+zr+va),this.#o=io(this.#e+va),this.#i=this.#e,this.#a=io(this.#e-zr),this.#s=null,this.#n=0,this.#r=0,this}update(t){typeof t=="string"&&(t=DQe.encode(t));let o=0,r=t.length,n=o+r;if(r===0)return this;if(this.#n+=r,this.#r===0&&(this.#s=new Uint8Array(32)),this.#r+r<32)return this.#s.set(t.subarray(0,r),this.#r),this.#r+=r,this;if(this.#r>0){this.#s.set(t.subarray(0,32-this.#r),this.#r);let a=0,s;s=Cp(this.#s,a),this.#t=io(fi(io(this.#t+s*va),31n)*zr),a+=8,s=Cp(this.memory,a),this.#o=io(fi(io(this.#o+s*va),31n)*zr),a+=8,s=Cp(this.memory,a),this.#i=io(fi(io(this.#i+s*va),31n)*zr),a+=8,s=Cp(this.memory,a),this.#a=io(fi(io(this.#a+s*va),31n)*zr),o+=32-this.#r,this.#r=0}if(o<=n-32){let a=n-32;do{let s;s=Cp(t,o),this.#t=io(fi(io(this.#t+s*va),31n)*zr),o+=8,s=Cp(t,o),this.#o=io(fi(io(this.#o+s*va),31n)*zr),o+=8,s=Cp(t,o),this.#i=io(fi(io(this.#i+s*va),31n)*zr),o+=8,s=Cp(t,o),this.#a=io(fi(io(this.#a+s*va),31n)*zr),o+=8}while(o<=a)}return o=32?(n=fi(this.#t,1n)+fi(this.#o,7n)+fi(this.#i,12n)+fi(this.#a,18n),n=io(n^fi(io(this.#t*va),31n)*zr),n=io(n*zr+J2),n=io(n^fi(io(this.#o*va),31n)*zr),n=io(n*zr+J2),n=io(n^fi(io(this.#i*va),31n)*zr),n=io(n*zr+J2),n=io(n^fi(io(this.#a*va),31n)*zr),n=io(n*zr+J2)):n=io(this.#e+rue),n+=BigInt(this.#n);r<=o-8;)s=Cp(t,r),s=io(fi(io(s*va),31n)*zr),n=io(fi(n^s,27n)*zr+J2),r+=8;for(r+4<=o&&(s=iue(t[r+1]<<8|t[r],t[r+3]<<8|t[r+2],0,0),n=io(fi(n^io(s*zr),23n)*va+nue),r+=4);r>33n),n=io((n^a)*va),a=io(n>>29n),n=io((n^a)*nue),a=io(n>>32n),n=io(n^a),n}}});function MQe(e){e=BigInt(e);let t=[],o=Math.ceil(Math.floor(Math.log2(Number(e))+1)/8);for(let n=0;n>BigInt(8*n)&BigInt(255)));let r=new Uint8Array(t);return PQe?r:r.reverse()}function k0(e){let t=Xx(e,0),o=MQe(t);return[Vx[o[0]>>2],Vx[(o[0]&3)<<4|o[1]>>4],Vx[(o[1]&15)<<2|o[2]>>6],Vx[o[2]&63],Vx[o[3]>>2],Vx[(o[3]&3)<<4|o[4]>>4]].join("")}var Vx,PQe,X2=h(()=>{"use strict";d();fU();Vx="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),PQe=(()=>{let e=new Uint8Array(4),t=new Uint32Array(e.buffer);return!((t[0]=1)&e[0])})()});function Xe(e,t){return sue(k0(e),t,e)}function sue(e,t,o){try{return t==null?Zm.intl.string(Zm.t[e]):Zm.intl.format(Zm.t[e],t)}catch(r){return NQe.error(`Failed to get intl message for key: ${o??e}`,r),o??""}}async function Yi(e){let{invite:t}=await gU.resolveInvite(e,"Desktop Modal");if(!t)throw new Error("Invalid invite: "+e);return Q.dispatch({type:"INVITE_MODAL_OPEN",invite:t,code:e,context:"APP"}),new Promise(o=>{let r,n,a=!1;Q.subscribe("INVITE_ACCEPT",n=()=>{a=!0}),Q.subscribe("INVITE_MODAL_CLOSE",r=()=>{Q.unsubscribe("INVITE_MODAL_CLOSE",r),Q.unsubscribe("INVITE_ACCEPT",n),o(a)})})}function zo(){return W.getChannel(Fe.getChannelId())}function Ss(){return $e.getGuild(zo()?.guild_id)}function V2(e,t=!0){return Sa.openPrivateChannel({recipientIds:[e],navigateToChannel:t})}function C0(){try{return ba.PreloadedUserSettingsActionCreators.getCurrentValue()?.appearance?.theme}catch{return 1}}function tr(e){sc.dispatchToLastSubscribed("INSERT_TEXT",{rawText:e,plainText:e})}async function ft(e,t="Copied to clipboard!"){await po(e),D.show({message:t,id:D.genId(),type:D.Type.SUCCESS})}function or(e,t,o=!0,r={}){let n={content:"",invalidEmojis:[],tts:!1,validNonShortcutEmojis:[],...t};return fo.sendMessage(e,n,o,r)}function Ji(e,t){return tS({items:[{type:"IMAGE",original:e.original??e.url,...e}],...t})}async function Ko(e){if(!await Xi.getUser(e))throw new Error("No such user: "+e);let o=ao.getGuildId();oS.openUserProfileModal({userId:e,guildId:o,channelId:Fe.getChannelId(),analyticsLocation:{page:o?"Guild Channel":"DM Channel",section:"Profile Popout"}})}async function Ym(e,t,o=!0){let r=Co.getUserProfile(e);if(r&&o)return r;Q.dispatch({type:"USER_PROFILE_FETCH_START",userId:e});let{body:n}=await mt.get({url:Gt.Endpoints.USER_PROFILE(e),query:{with_mutual_guilds:!1,with_mutual_friends_count:!1,...t},oldFormErrors:!0});return Q.dispatch({type:"USER_UPDATE",user:n.user}),await Q.dispatch({type:"USER_PROFILE_FETCH_SUCCESS",userProfile:n}),t?.guild_id&&n.guild_member&&Q.dispatch({type:"GUILD_MEMBER_PROFILE_UPDATE",guildId:t.guild_id,guildMember:n.guild_member}),Co.getUserProfile(e)}function Tp(e){return e.discriminator==="0"?e.username:e.tag}function ya(e){return e.name.replaceAll("'s "," ").replace(/\w+/g,t=>t[0]).replace(/\s/g,"")}function T0(e,t){return e.features?.has(t)??!1}var NQe,eS,_e=h(()=>{"use strict";d();C();mi();X2();He();NQe=new ie("IntlManager");eS=(o=>(o[o.Dark=1]="Dark",o[o.Light=2]="Light",o))(eS||{})});function st({height:e=24,width:t=24,className:o,children:r,viewBox:n,...a}){return i("svg",{className:X(o,"vc-icon"),role:"img",width:t,height:e,viewBox:n,...a},r)}function sn({height:e=24,width:t=24,className:o}){return i(st,{height:e,width:t,className:X(o,"vc-link-icon"),viewBox:"0 0 24 24"},i("g",{fill:"none",fillRule:"evenodd"},i("path",{fill:"currentColor",d:"M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24zm2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"}),i("rect",{width:t,height:e})))}function wa(e){return i(st,{...e,className:X(e.className,"vc-copy-icon"),viewBox:"0 0 24 24"},i("g",{fill:"currentColor"},i("path",{d:"M3 16a1 1 0 0 1-1-1v-5a8 8 0 0 1 8-8h5a1 1 0 0 1 1 1v.5a.5.5 0 0 1-.5.5H10a6 6 0 0 0-6 6v5.5a.5.5 0 0 1-.5.5H3Z"}),i("path",{d:"M6 18a4 4 0 0 0 4 4h8a4 4 0 0 0 4-4v-4h-3a5 5 0 0 1-5-5V6h-4a4 4 0 0 0-4 4v8Z"}),i("path",{d:"M21.73 12a3 3 0 0 0-.6-.88l-4.25-4.24a3 3 0 0 0-.88-.61V9a3 3 0 0 0 3 3h2.73Z"})))}function Jm(e){return i(st,{...e,className:X(e.className,"vc-copy-id-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M15.3 14.48c-.46.45-1.08.67-1.86.67h-1.39V9.2h1.39c.78 0 1.4.22 1.86.67.46.45.68 1.22.68 2.31 0 1.1-.22 1.86-.68 2.31Z"}),i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H5Zm1 15h2.04V7.34H6V17Zm4-9.66V17h3.44c1.46 0 2.6-.42 3.38-1.25.8-.83 1.2-2.02 1.2-3.58s-.4-2.75-1.2-3.58c-.79-.83-1.92-1.25-3.38-1.25H10Z"}))}function gn(e){return i(st,{...e,className:X(e.className,"vc-open-external-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M15 2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0V4.41l-4.3 4.3a1 1 0 1 1-1.4-1.42L19.58 3H16a1 1 0 0 1-1-1Z"}),i("path",{fill:"currentColor",d:"M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-6a1 1 0 1 0-2 0v6a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h6a1 1 0 1 0 0-2H5Z"}))}function On(e){return i(st,{...e,className:X(e.className,"vc-image-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z"}))}function gi(e){return i(st,{...e,className:X(e.className,"vc-info-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",fillRule:"evenodd",d:"M23 12a11 11 0 1 1-22 0 11 11 0 0 1 22 0Zm-9.5-4.75a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Zm-.77 3.96a1 1 0 1 0-1.96-.42l-1.04 4.86a2.77 2.77 0 0 0 4.31 2.83l.24-.17a1 1 0 1 0-1.16-1.62l-.24.17a.77.77 0 0 1-1.2-.79l1.05-4.86Z",clipRule:"evenodd"}))}function Xm({height:e=32,width:t=32,className:o}){return i(st,{height:e,width:t,className:X(o,"vc-warning-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",fillRule:"evenodd",d:"M10 3.1a2.37 2.37 0 0 1 4 0l8.71 14.75c.84 1.41-.26 3.15-2 3.15H3.29c-1.74 0-2.84-1.74-2-3.15L9.99 3.1Zm3.25 14.65a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM13.06 14l.37-5.94a1 1 0 0 0-1-1.06h-.87a1 1 0 0 0-1 1.06l.38 5.94a1.06 1.06 0 0 0 2.12 0Z"}))}function hU(e){return i(st,{"aria-label":Xe("GUILD_OWNER"),...e,className:X(e.className,"vc-owner-crown-icon"),role:"img",viewBox:"0 0 16 16"},i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M13.6572 5.42868C13.8879 5.29002 14.1806 5.30402 14.3973 5.46468C14.6133 5.62602 14.7119 5.90068 14.6473 6.16202L13.3139 11.4954C13.2393 11.7927 12.9726 12.0007 12.6666 12.0007H3.33325C3.02725 12.0007 2.76058 11.792 2.68592 11.4954L1.35258 6.16202C1.28792 5.90068 1.38658 5.62602 1.60258 5.46468C1.81992 5.30468 2.11192 5.29068 2.34325 5.42868L5.13192 7.10202L7.44592 3.63068C7.46173 3.60697 7.48377 3.5913 7.50588 3.57559C7.5192 3.56612 7.53255 3.55663 7.54458 3.54535L6.90258 2.90268C6.77325 2.77335 6.77325 2.56068 6.90258 2.43135L7.76458 1.56935C7.89392 1.44002 8.10658 1.44002 8.23592 1.56935L9.09792 2.43135C9.22725 2.56068 9.22725 2.77335 9.09792 2.90268L8.45592 3.54535C8.46794 3.55686 8.48154 3.56651 8.49516 3.57618C8.51703 3.5917 8.53897 3.60727 8.55458 3.63068L10.8686 7.10202L13.6572 5.42868ZM2.66667 12.6673H13.3333V14.0007H2.66667V12.6673Z"}))}function n3(e){return i(st,{...e,className:X(e.className,"vc-screenshare-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M2 4.5C2 3.397 2.897 2.5 4 2.5H20C21.103 2.5 22 3.397 22 4.5V15.5C22 16.604 21.103 17.5 20 17.5H13V19.5H17V21.5H7V19.5H11V17.5H4C2.897 17.5 2 16.604 2 15.5V4.5ZM13.2 14.3375V11.6C9.864 11.6 7.668 12.6625 6 15C6.672 11.6625 8.532 8.3375 13.2 7.6625V5L18 9.6625L13.2 14.3375Z"}))}function Ip(e){return i(st,{...e,className:X(e.className,"vc-image-visible"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M5 21q-.825 0-1.413-.587Q3 19.825 3 19V5q0-.825.587-1.413Q4.175 3 5 3h14q.825 0 1.413.587Q21 4.175 21 5v14q0 .825-.587 1.413Q19.825 21 19 21Zm0-2h14V5H5v14Zm1-2h12l-3.75-5-3 4L9 13Zm-1 2V5v14Z"}))}function Vu(e){return i(st,{...e,className:X(e.className,"vc-image-invisible"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"m21 18.15-2-2V5H7.85l-2-2H19q.825 0 1.413.587Q21 4.175 21 5Zm-1.2 4.45L18.2 21H5q-.825 0-1.413-.587Q3 19.825 3 19V5.8L1.4 4.2l1.4-1.4 18.4 18.4ZM6 17l3-4 2.25 3 .825-1.1L5 7.825V19h11.175l-2-2Zm7.425-6.425ZM10.6 13.4Z"}))}function e1(e){return i(st,{...e,className:X(e.className,"vc-microphone"),viewBox:"0 0 24 24"},i("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.99 11C14.99 12.66 13.66 14 12 14C10.34 14 9 12.66 9 11V5C9 3.34 10.34 2 12 2C13.66 2 15 3.34 15 5L14.99 11ZM12 16.1C14.76 16.1 17.3 14 17.3 11H19C19 14.42 16.28 17.24 13 17.72V21H11V17.72C7.72 17.23 5 14.41 5 11H6.7C6.7 14 9.24 16.1 12 16.1ZM12 4C11.2 4 11 4.66667 11 5V11C11 11.3333 11.2 12 12 12C12.8 12 13 11.3333 13 11V5C13 4.66667 12.8 4 12 4Z",fill:"currentColor"}),i("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.99 11C14.99 12.66 13.66 14 12 14C10.34 14 9 12.66 9 11V5C9 3.34 10.34 2 12 2C13.66 2 15 3.34 15 5L14.99 11ZM12 16.1C14.76 16.1 17.3 14 17.3 11H19C19 14.42 16.28 17.24 13 17.72V22H11V17.72C7.72 17.23 5 14.41 5 11H6.7C6.7 14 9.24 16.1 12 16.1Z",fill:"currentColor"}))}function ed(e){return i(st,{...e,className:X(e.className,"vc-cog-wheel"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.56 1.1c-.46.05-.7.53-.64.98.18 1.16-.19 2.2-.98 2.53-.8.33-1.79-.15-2.49-1.1-.27-.36-.78-.52-1.14-.24-.77.59-1.45 1.27-2.04 2.04-.28.36-.12.87.24 1.14.96.7 1.43 1.7 1.1 2.49-.33.8-1.37 1.16-2.53.98-.45-.07-.93.18-.99.64a11.1 11.1 0 0 0 0 2.88c.06.46.54.7.99.64 1.16-.18 2.2.19 2.53.98.33.8-.14 1.79-1.1 2.49-.36.27-.52.78-.24 1.14.59.77 1.27 1.45 2.04 2.04.36.28.87.12 1.14-.24.7-.95 1.7-1.43 2.49-1.1.8.33 1.16 1.37.98 2.53-.07.45.18.93.64.99a11.1 11.1 0 0 0 2.88 0c.46-.06.7-.54.64-.99-.18-1.16.19-2.2.98-2.53.8-.33 1.79.14 2.49 1.1.27.36.78.52 1.14.24.77-.59 1.45-1.27 2.04-2.04.28-.36.12-.87-.24-1.14-.96-.7-1.43-1.7-1.1-2.49.33-.8 1.37-1.16 2.53-.98.45.07.93-.18.99-.64a11.1 11.1 0 0 0 0-2.88c-.06-.46-.54-.7-.99-.64-1.16.18-2.2-.19-2.53-.98-.33-.8.14-1.79 1.1-2.49.36-.27.52-.78.24-1.14a11.07 11.07 0 0 0-2.04-2.04c-.36-.28-.87-.12-1.14.24-.7.96-1.7 1.43-2.49 1.1-.8-.33-1.16-1.37-.98-2.53.07-.45-.18-.93-.64-.99a11.1 11.1 0 0 0-2.88 0ZM16 12a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z",clipRule:"evenodd"}))}function RQe(e){return i(st,{...e,className:X(e.className,"vc-reply-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M10 8.26667V4L3 11.4667L10 18.9333V14.56C15 14.56 18.5 16.2667 21 20C20 14.6667 17 9.33333 10 8.26667Z"}))}function hr(e){return i(st,{...e,className:X(e.className,"vc-delete-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M15 3.999V2H9V3.999H3V5.999H21V3.999H15Z"}),i("path",{fill:"currentColor",d:"M5 6.99902V18.999C5 20.101 5.897 20.999 7 20.999H17C18.103 20.999 19 20.101 19 18.999V6.99902H5ZM11 17H9V11H11V17ZM15 17H13V11H15V17Z"}))}function LQe(e){return i(st,{...e,className:X(e.className,"vc-plugin-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"}))}function Yc(e){return i(st,{...e,className:X(e.className,"vc-plus-icon"),viewBox:"0 0 18 18"},i("polygon",{fillRule:"nonzero",fill:"currentColor",points:"15 10 10 10 10 15 8 15 8 10 3 10 3 8 8 8 8 3 10 3 10 8 15 8"}))}function nS(e){return i(st,{...e,className:X(e.className,"vc-no-entry-sign-icon"),viewBox:"0 0 24 24"},i("path",{d:"M0 0h24v24H0z",fill:"none"}),i("path",{fill:"currentColor",d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z"}))}function OQe(e){return i(st,{...e,className:X(e.className,"vc-paste-icon"),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},i("rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1"}),i("path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"}))}function FQe(e){return i(st,{...e,width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},i("path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}),i("path",{d:"M3 3v5h5"}))}function r3(e){return i(st,{...e,className:X(e.className,"vc-safety-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M4.27 5.22A2.66 2.66 0 0 0 3 7.5v2.3c0 5.6 3.3 10.68 8.42 12.95.37.17.79.17 1.16 0A14.18 14.18 0 0 0 21 9.78V7.5c0-.93-.48-1.78-1.27-2.27l-6.17-3.76a3 3 0 0 0-3.12 0L4.27 5.22ZM6 7.68l6-3.66V12H6.22C6.08 11.28 6 10.54 6 9.78v-2.1Zm6 12.01V12h5.78A11.19 11.19 0 0 1 12 19.7Z"}))}function _Qe(e){return i(st,{...e,className:X(e.className,"vc-notes-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M8 3C7.44771 3 7 3.44772 7 4V5C7 5.55228 7.44772 6 8 6H16C16.5523 6 17 5.55228 17 5V4C17 3.44772 16.5523 3 16 3H15.1245C14.7288 3 14.3535 2.82424 14.1002 2.52025L13.3668 1.64018C13.0288 1.23454 12.528 1 12 1C11.472 1 10.9712 1.23454 10.6332 1.64018L9.8998 2.52025C9.64647 2.82424 9.27121 3 8.8755 3H8Z"}),i("path",{fillRule:"evenodd",clipRule:"evenodd",fill:"currentColor",d:"M19 4.49996V4.99996C19 6.65681 17.6569 7.99996 16 7.99996H8C6.34315 7.99996 5 6.65681 5 4.99996V4.49996C5 4.22382 4.77446 3.99559 4.50209 4.04109C3.08221 4.27826 2 5.51273 2 6.99996V19C2 20.6568 3.34315 22 5 22H19C20.6569 22 22 20.6568 22 19V6.99996C22 5.51273 20.9178 4.27826 19.4979 4.04109C19.2255 3.99559 19 4.22382 19 4.49996ZM8 12C7.44772 12 7 12.4477 7 13C7 13.5522 7.44772 14 8 14H16C16.5523 14 17 13.5522 17 13C17 12.4477 16.5523 12 16 12H8ZM7 17C7 16.4477 7.44772 16 8 16H13C13.5523 16 14 16.4477 14 17C14 17.5522 13.5523 18 13 18H8C7.44772 18 7 17.5522 7 17Z"}))}function UQe(e){return i(st,{...e,className:X(e.className,"vc-id-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M15.3 14.48c-.46.45-1.08.67-1.86.67h-1.39V9.2h1.39c.78 0 1.4.22 1.86.67.46.45.68 1.22.68 2.31 0 1.1-.22 1.86-.68 2.31Z"}),i("path",{fill:"currentColor",fillRule:"evenodd",d:"M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H5Zm1 15h2.04V7.34H6V17Zm4-9.66V17h3.44c1.46 0 2.6-.42 3.38-1.25.8-.83 1.2-2.02 1.2-3.58s-.4-2.75-1.2-3.58c-.79-.83-1.92-1.25-3.38-1.25H10Z",clipRule:"evenodd"}))}function td(e){return i(st,{...e,className:X(e.className,"vc-folder-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M2 5a3 3 0 0 1 3-3h3.93a2 2 0 0 1 1.66.9L12 5h7a3 3 0 0 1 3 3v11a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V5Z"}))}function rS(e){return i(st,{...e,className:X(e.className,"vc-log-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M3.11 8H6v10.82c0 .86.37 1.68 1 2.27.46.43 1.02.71 1.63.84A1 1 0 0 0 9 22h10a4 4 0 0 0 4-4v-1a2 2 0 0 0-2-2h-1V5a3 3 0 0 0-3-3H4.67c-.87 0-1.7.32-2.34.9-.63.6-1 1.42-1 2.28 0 .71.3 1.35.52 1.75a5.35 5.35 0 0 0 .48.7l.01.01h.01L3.11 7l-.76.65a1 1 0 0 0 .76.35Zm1.56-4c-.38 0-.72.14-.97.37-.24.23-.37.52-.37.81a1.69 1.69 0 0 0 .3.82H6v-.83c0-.29-.13-.58-.37-.8C5.4 4.14 5.04 4 4.67 4Zm5 13a3.58 3.58 0 0 1 0 3H19a2 2 0 0 0 2-2v-1H9.66ZM3.86 6.35ZM11 8a1 1 0 1 0 0 2h5a1 1 0 1 0 0-2h-5Zm-1 5a1 1 0 0 1 1-1h5a1 1 0 1 1 0 2h-5a1 1 0 0 1-1-1Z"}))}function iS(e){return i(st,{...e,className:X(e.className,"vc-restart-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M4 12a8 8 0 0 1 14.93-4H15a1 1 0 1 0 0 2h6a1 1 0 0 0 1-1V3a1 1 0 1 0-2 0v3a9.98 9.98 0 0 0-18 6 10 10 0 0 0 16.29 7.78 1 1 0 0 0-1.26-1.56A8 8 0 0 1 4 12Z"}))}function od(e){return i(st,{...e,className:X(e.className,"vc-paintbrush-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M15.35 7.24C15.9 6.67 16 5.8 16 5a3 3 0 1 1 3 3c-.8 0-1.67.09-2.24.65a1.5 1.5 0 0 0 0 2.11l1.12 1.12a3 3 0 0 1 0 4.24l-5 5a3 3 0 0 1-4.25 0l-5.76-5.75a3 3 0 0 1 0-4.24l4.04-4.04.97-.97a3 3 0 0 1 4.24 0l1.12 1.12c.58.58 1.52.58 2.1 0ZM6.9 9.9 4.3 12.54a1 1 0 0 0 0 1.42l2.17 2.17.83-.84a1 1 0 0 1 1.42 1.42l-.84.83.59.59 1.83-1.84a1 1 0 0 1 1.42 1.42l-1.84 1.83.17.17a1 1 0 0 0 1.42 0l2.63-2.62L6.9 9.9Z"}))}function Vi(e){return i(st,{...e,className:X(e.className,"vc-pencil-icon"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"m13.96 5.46 4.58 4.58a1 1 0 0 0 1.42 0l1.38-1.38a2 2 0 0 0 0-2.82l-3.18-3.18a2 2 0 0 0-2.82 0l-1.38 1.38a1 1 0 0 0 0 1.42ZM2.11 20.16l.73-4.22a3 3 0 0 1 .83-1.61l7.87-7.87a1 1 0 0 1 1.42 0l4.58 4.58a1 1 0 0 1 0 1.42l-7.87 7.87a3 3 0 0 1-1.6.83l-4.23.73a1.5 1.5 0 0 1-1.73-1.73Z"}))}function t1(e){return i(st,{...e,viewBox:"-3 -3 30 30"},i("path",{fill:e.fill||"currentColor",d:"M12 0C5.37 0 0 5.37 0 12c0 5.3 3.438 9.8 8.205 11.385.6.11.82-.26.82-.577v-2.17c-3.338.726-4.042-1.61-4.042-1.61-.546-1.387-1.333-1.757-1.333-1.757-1.09-.745.083-.73.083-.73 1.205.084 1.84 1.237 1.84 1.237 1.07 1.835 2.807 1.305 3.492.998.108-.775.42-1.305.763-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.467-2.38 1.235-3.22-.123-.303-.535-1.523.117-3.176 0 0 1.008-.322 3.3 1.23.957-.266 1.98-.398 3-.403 1.02.005 2.043.137 3 .403 2.29-1.552 3.297-1.23 3.297-1.23.653 1.653.24 2.873.118 3.176.77.84 1.233 1.91 1.233 3.22 0 4.61-2.803 5.625-5.475 5.92.43.37.823 1.102.823 2.222v3.293c0 .32.218.694.825.577C20.565 21.797 24 17.298 24 12c0-6.63-5.37-12-12-12z"}))}function xU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM4 12c0-.899.156-1.762.431-2.569L6 11l2 2v2l2 2 1 1v1.931C7.061 19.436 4 16.072 4 12zm14.33 4.873C17.677 16.347 16.687 16 16 16v-1a2 2 0 0 0-2-2h-4v-3a2 2 0 0 0 2-2V7h1a2 2 0 0 0 2-2v-.411C17.928 5.778 20 8.65 20 12a7.947 7.947 0 0 1-1.67 4.873z"}))}function vU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H5Zm6.81 7c-.54 0-1 .26-1.23.61A1 1 0 0 1 8.92 8.5 3.49 3.49 0 0 1 11.82 7c1.81 0 3.43 1.38 3.43 3.25 0 1.45-.98 2.61-2.27 3.06a1 1 0 0 1-1.96.37l-.19-1a1 1 0 0 1 .98-1.18c.87 0 1.44-.63 1.44-1.25S12.68 9 11.81 9ZM13 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm7-10.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM18.5 20a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM7 18.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM5.5 7a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z",clipRule:"evenodd"}))}function aS(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M10.56 1.1c-.46.05-.7.53-.64.98.18 1.16-.19 2.2-.98 2.53-.8.33-1.79-.15-2.49-1.1-.27-.36-.78-.52-1.14-.24-.77.59-1.45 1.27-2.04 2.04-.28.36-.12.87.24 1.14.96.7 1.43 1.7 1.1 2.49-.33.8-1.37 1.16-2.53.98-.45-.07-.93.18-.99.64a11.1 11.1 0 0 0 0 2.88c.06.46.54.7.99.64 1.16-.18 2.2.19 2.53.98.33.8-.14 1.79-1.1 2.49-.36.27-.52.78-.24 1.14.59.77 1.27 1.45 2.04 2.04.36.28.87.12 1.14-.24.7-.95 1.7-1.43 2.49-1.1.8.33 1.16 1.37.98 2.53-.07.45.18.93.64.99a11.1 11.1 0 0 0 2.88 0c.46-.06.7-.54.64-.99-.18-1.16.19-2.2.98-2.53.8-.33 1.79.14 2.49 1.1.27.36.78.52 1.14.24.77-.59 1.45-1.27 2.04-2.04.28-.36.12-.87-.24-1.14-.96-.7-1.43-1.7-1.1-2.49.33-.8 1.37-1.16 2.53-.98.45.07.93-.18.99-.64a11.1 11.1 0 0 0 0-2.88c-.06-.46-.54-.7-.99-.64-1.16.18-2.2-.19-2.53-.98-.33-.8.14-1.79 1.1-2.49.36-.27.52-.78.24-1.14a11.07 11.07 0 0 0-2.04-2.04c-.36-.28-.87-.12-1.14.24-.7.96-1.7 1.43-2.49 1.1-.8-.33-1.16-1.37-.98-2.53.07-.45-.18-.93-.64-.99a11.1 11.1 0 0 0-2.88 0ZM16 12a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z"}))}function yU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M18.559 12.8227C17.7884 13.4957 16.6663 13.3616 15.9404 12.641C14.7975 11.5063 11.4931 8.21104 11.4931 8.21104C10.897 7.63087 10.897 6.44662 11.4931 5.85464C12.319 5.03435 13.6053 3.75146 13.6053 3.75146C13.9641 3.39195 14.456 3.18972 14.9653 3.18886L18.3363 3.18425L19.5255 2L22.5 4.96048L21.3108 6.14473L21.3021 9.50878C21.2992 10.0164 21.0967 10.5026 20.735 10.8613C20.735 10.8613 19.5718 11.9384 18.559 12.8227ZM15.2315 13.9548L13.4954 15.8273C14.0972 16.4265 14.0972 16.9113 13.64 17.6997L11.3976 20.2485C11.0359 20.6081 10.5469 20.8103 10.0347 20.8111L6.66378 20.8158L5.47455 22L2.5 19.0395L3.68927 17.8553L3.70082 14.4912C3.70082 13.9836 3.90338 13.4974 4.26507 13.1387L6.37153 11.0404C6.96759 10.4485 8.15685 10.4485 8.73844 11.0404L8.74424 11.0465L10.5295 9.26998L11.7188 10.4542L9.93347 12.2305L12.3119 14.599L14.0972 12.8227L15.2315 13.9548Z"}))}function bU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M16.8333 19H5.16667C3.16667 19 1.5 17.3333 1.5 15.3333C1.5 13.4 2.96667 11.8667 4.83333 11.6667V11.3333C4.83333 7.86667 7.7 5 11.1667 5C14.0333 5 16.5667 6.93333 17.3 9.66667C19.7 9.86667 21.5 11.8667 21.5 14.3333C21.5 16.9333 19.4333 19 16.8333 19Z"}))}function SU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M21 2.01232C21.2652 2.01232 21.5196 2.11757 21.7071 2.30492C21.8946 2.49226 22 2.74636 22 3.0113V9.00521C22 9.27015 21.8946 9.52425 21.7071 9.7116C21.5196 9.89894 21.2652 10.0042 21 10.0042H15C14.7348 10.0042 14.4804 9.89894 14.2929 9.7116C14.1054 9.52425 14 9.27015 14 9.00521C14 8.74026 14.1054 8.48617 14.2929 8.29882C14.4804 8.11147 14.7348 8.00622 15 8.00622H18.93C18.352 7.00597 17.5638 6.14275 16.6198 5.47602C15.6758 4.80929 14.5983 4.35488 13.4616 4.1441C12.3249 3.93332 11.1559 3.97117 10.0353 4.25505C8.91459 4.53892 7.86883 5.06208 6.97 5.78848C6.76313 5.9554 6.49836 6.03338 6.23393 6.00528C5.96951 5.97718 5.72709 5.84529 5.56 5.63863C5.39291 5.43197 5.31485 5.16747 5.34298 4.90331C5.37111 4.63916 5.50313 4.39698 5.71 4.23006C6.7542 3.38308 7.959 2.7557 9.25204 2.38561C10.5451 2.01552 11.8996 1.91037 13.2344 2.07646C14.5691 2.24255 15.8565 2.67646 17.0191 3.35212C18.1818 4.02778 19.1957 4.93125 20 6.00826V3.0113C20 2.74636 20.1054 2.49226 20.2929 2.30492C20.4804 2.11757 20.7348 2.01232 21 2.01232ZM3 21.992C2.73478 21.992 2.48043 21.8867 2.29289 21.6994C2.10536 21.5121 2 21.258 2 20.993V14.9991C2 14.7342 2.10536 14.4801 2.29289 14.2927C2.48043 14.1054 2.73478 14.0001 3 14.0001H9C9.26522 14.0001 9.51957 14.1054 9.70711 14.2927C9.89464 14.4801 10 14.7342 10 14.9991C10 15.2641 9.89464 15.5182 9.70711 15.7055C9.51957 15.8928 9.26522 15.9981 9 15.9981H5.07C5.64801 16.9983 6.43617 17.8616 7.3802 18.5283C8.32424 19.195 9.40171 19.6494 10.5384 19.8602C11.6751 20.071 12.8441 20.0331 13.9647 19.7493C15.0854 19.4654 16.1312 18.9422 17.03 18.2158C17.1324 18.1332 17.2502 18.0715 17.3764 18.0343C17.5027 17.9971 17.6351 17.9851 17.7661 17.999C17.897 18.013 18.0239 18.0525 18.1395 18.1154C18.2552 18.1783 18.3573 18.2634 18.44 18.3657C18.5227 18.468 18.5845 18.5856 18.6217 18.7118C18.659 18.8379 18.6709 18.9702 18.657 19.101C18.6431 19.2318 18.6035 19.3586 18.5405 19.4741C18.4776 19.5896 18.3924 19.6916 18.29 19.7743C17.2452 20.6199 16.0403 21.2461 14.7475 21.6154C13.4547 21.9847 12.1005 22.0895 10.7662 21.9235C9.43181 21.7574 8.14476 21.324 6.98212 20.6491C5.81947 19.9743 4.80518 19.0719 4 17.9961V20.993C4 21.258 3.89464 21.5121 3.70711 21.6994C3.51957 21.8867 3.26522 21.992 3 21.992Z"}))}function wU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M12 2C12.2652 2 12.5196 2.10536 12.7071 2.29289C12.8946 2.48043 13 2.73478 13 3V13.59L16.3 10.29C16.3904 10.186 16.5013 10.1018 16.6258 10.0427C16.7503 9.98362 16.8856 9.95088 17.0234 9.94656C17.1611 9.94224 17.2982 9.96644 17.4261 10.0176C17.5541 10.0688 17.6701 10.1459 17.7668 10.244C17.8635 10.3421 17.939 10.4592 17.9883 10.5878C18.0377 10.7165 18.0599 10.8539 18.0537 10.9916C18.0474 11.1292 18.0127 11.2641 17.9519 11.3877C17.891 11.5114 17.8053 11.6211 17.7 11.71L12.7 16.71C12.5131 16.8932 12.2618 16.9959 12 16.9959C11.7382 16.9959 11.4869 16.8932 11.3 16.71L6.3 11.71C6.19474 11.6211 6.10898 11.5114 6.04812 11.3877C5.98726 11.2641 5.95261 11.1292 5.94634 10.9916C5.94007 10.8539 5.96231 10.7165 6.01167 10.5878C6.06104 10.4592 6.13646 10.3421 6.2332 10.244C6.32994 10.1459 6.44592 10.0688 6.57385 10.0176C6.70179 9.96644 6.83892 9.94224 6.97665 9.94656C7.11438 9.95088 7.24972 9.98362 7.3742 10.0427C7.49868 10.1018 7.6096 10.186 7.7 10.29L11 13.59V3C11 2.73478 11.1054 2.48043 11.2929 2.29289C11.4804 2.10536 11.7348 2 12 2ZM3 20C2.73478 20 2.48043 20.1054 2.29289 20.2929C2.10536 20.4804 2 20.7348 2 21C2 21.2652 2.10536 21.5196 2.29289 21.7071C2.48043 21.8946 2.73478 22 3 22H21C21.2652 22 21.5196 21.8946 21.7071 21.7071C21.8946 21.5196 22 21.2652 22 21C22 20.7348 21.8946 20.4804 21.7071 20.2929C21.5196 20.1054 21.2652 20 21 20H3Z"}))}function zQe(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M7.79997 15.7699C8.49996 16.1999 8.99997 16.9099 8.99997 17.7299V20.9999C8.99997 21.2651 9.10533 21.5195 9.29286 21.707C9.48039 21.8945 9.73476 21.9999 9.99996 21.9999H14C14.2652 21.9999 14.5196 21.8945 14.7071 21.707C14.8946 21.5195 15 21.2651 15 20.9999V17.7299C15 16.9099 15.5 16.1999 16.2 15.7699C17.357 15.0536 18.3137 14.056 18.9812 12.8701C19.6486 11.6842 20.0048 10.3487 20.0168 8.98795C20.0288 7.62724 19.6961 6.28564 19.0497 5.08819C18.4032 3.89074 17.4642 2.87647 16.32 2.13989C15.72 1.74989 15 2.22989 15 2.93989V8.91988C15 9.18511 14.8946 9.43945 14.7071 9.62701C14.5196 9.81454 14.2652 9.9199 14 9.9199H9.99996C9.73476 9.9199 9.48039 9.81454 9.29286 9.62701C9.10533 9.43945 8.99997 9.18511 8.99997 8.91988V2.93989C8.99997 2.22989 8.27997 1.74989 7.67997 2.13989C6.53577 2.87647 5.59671 3.89074 4.9503 5.08819C4.30386 6.28564 3.97113 7.62724 3.9831 8.98795C3.9951 10.3487 4.35138 11.6842 5.01879 12.8701C5.6862 14.056 6.64299 15.0536 7.79997 15.7699Z"}))}function $Qe(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M18.157.056a1.224 1.224 0 0 0-.709.628c-.105.229-.114.305-.115 1.081v.836l-.351.176a5.545 5.545 0 0 0-.586.342l-.233.167-.543-.311c-.899-.515-.944-.535-1.293-.539-.562-.004-1.018.352-1.17.917-.07.262-.021.567.138.858.151.28.21.325 1.02.794l.606.35v1.38l-.606.35c-.81.469-.869.514-1.02.793-.16.291-.208.597-.137.859.151.564.607.92 1.17.916.347-.004.393-.023 1.289-.537l.54-.308.313.21c.172.116.438.262.588.325l.275.114v.85c.001.793.009.87.115 1.098a1.19 1.19 0 0 0 1.969.282c.269-.307.292-.412.292-1.37v-.869l.315-.148c.173-.081.435-.228.582-.325l.266-.177.706.4c.796.45 1.029.523 1.408.438.882-.198 1.235-1.287.635-1.96-.085-.097-.457-.348-.827-.56l-.67-.385V5.359l.67-.386c.37-.212.742-.463.827-.56.6-.672.247-1.762-.635-1.96-.38-.084-.612-.012-1.405.437l-.7.397-.235-.18a3.792 3.792 0 0 0-.586-.344l-.35-.163v-.848c0-.935-.023-1.044-.292-1.35a1.2 1.2 0 0 0-1.26-.346M4.007 1.25a4.15 4.15 0 0 0-1.21.44c-.354.207-1.102.955-1.309 1.309-.199.34-.374.837-.441 1.252-.07.434-.07 10.426 0 10.86.127.792.42 1.343 1.039 1.963.477.478.81.697 1.317.874.59.204.818.216 4.125.217h3.163v2.42l-1.975.014c-2.202.015-2.148.008-2.5.362-.255.253-.346.474-.346.84s.09.587.345.84c.376.376-.09.348 5.688.348 5.75 0 5.309.025 5.67-.327a1.1 1.1 0 0 0 .362-.86c.002-.367-.09-.586-.344-.84-.353-.355-.3-.348-2.5-.363l-1.976-.014v-2.42h3.164c3.306-.001 3.535-.013 4.124-.217.508-.177.84-.396 1.318-.874.882-.882 1.113-1.57 1.082-3.213-.018-.956-.047-1.068-.364-1.384-.253-.255-.474-.346-.84-.346s-.586.091-.84.346c-.317.316-.343.42-.372 1.47-.023.846-.036.966-.13 1.14a1.22 1.22 0 0 1-.597.553c-.217.098-.276.098-7.757.098-7.48 0-7.54 0-7.757-.098a1.153 1.153 0 0 1-.612-.602l-.114-.242V9.68c.001-5.041.003-5.119.1-5.333.122-.27.3-.462.553-.599.19-.103.242-.104 2.958-.128 3.08-.027 2.927-.01 3.288-.372.255-.254.345-.474.345-.84s-.09-.587-.345-.84c-.364-.365-.204-.347-3.288-.355-1.52-.004-2.881.012-3.024.036m15.047 3.693c.207.108.452.361.57.59.143.278.143.755 0 1.028-.285.54-1.08.81-1.636.556a1.357 1.357 0 0 1-.59-.625c-.107-.255-.092-.7.032-.956.121-.251.46-.568.69-.645.213-.073.755-.043.934.052"}))}function ea(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M15.56 11.77c.2-.1.44.02.44.23a4 4 0 1 1-4-4c.21 0 .33.25.23.44a2.5 2.5 0 0 0 3.32 3.32Z"}),i("path",{clipRule:"evenodd",fillRule:"evenodd",fill:e.fill||"currentColor",d:"M22.89 11.7c.07.2.07.4 0 .6C22.27 13.9 19.1 21 12 21c-7.11 0-10.27-7.11-10.89-8.7a.83.83 0 0 1 0-.6C1.73 10.1 4.9 3 12 3c7.11 0 10.27 7.11 10.89 8.7Zm-4.5-3.62A15.11 15.11 0 0 1 20.85 12c-.38.88-1.18 2.47-2.46 3.92C16.87 17.62 14.8 19 12 19c-2.8 0-4.87-1.38-6.39-3.08A15.11 15.11 0 0 1 3.15 12c.38-.88 1.18-2.47 2.46-3.92C7.13 6.38 9.2 5 12 5c2.8 0 4.87 1.38 6.39 3.08Z"}))}function AU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M12.37 9.04c.25-.26.73-.2 1.06.13L15 10.7c.33.33.39.8.13 1.06L4.92 21.84c-.27.26-.74.2-1.07-.13l-1.56-1.54c-.33-.32-.39-.8-.13-1.05l10.2-10.08ZM16.09 5.16c.25-.26.73-.2 1.06.13l1.56 1.54c.33.32.39.8.13 1.05l-2.1 2.08c-.26.25-.74.2-1.07-.13l-1.56-1.54c-.33-.33-.38-.8-.13-1.05l2.1-2.08ZM17.48 14.36a.56.56 0 0 1 1.04 0l.85 2.27 2.27.85c.48.18.48.86 0 1.04l-2.27.85-.85 2.27a.56.56 0 0 1-1.04 0l-.85-2.27-2.27-.85a.56.56 0 0 1 0-1.04l2.27-.85.85-2.27ZM7.6 2.32a.5.5 0 0 1 .94 0L9.17 4l1.66.62a.5.5 0 0 1 0 .93l-1.66.63-.63 1.66a.5.5 0 0 1-.93 0l-.63-1.66-1.66-.63a.5.5 0 0 1 0-.93l1.66-.62.63-1.67Z"}))}function kU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{clipRule:"evenodd",fillRule:"evenodd",fill:e.fill||"currentColor",d:"M15.62 17.03a9 9 0 1 1 1.41-1.41l4.68 4.67a1 1 0 0 1-1.42 1.42l-4.67-4.68ZM17 10a7 7 0 1 1-14 0 7 7 0 0 1 14 0Z"}))}function o1(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M6.5 20Q4.22 20 2.61 18.43 1 16.85 1 14.58 1 12.63 2.17 11.1 3.35 9.57 5.25 9.15 5.83 7.13 7.39 5.75 8.95 4.38 11 4.08V12.15L9.4 10.6L8 12L12 16L16 12L14.6 10.6L13 12.15V4.08Q15.58 4.43 17.29 6.39 19 8.35 19 11 20.73 11.2 21.86 12.5 23 13.78 23 15.5 23 17.38 21.69 18.69 20.38 20 18.5 20Z"}))}function n1(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M11 20H6.5Q4.22 20 2.61 18.43 1 16.85 1 14.58 1 12.63 2.17 11.1 3.35 9.57 5.25 9.15 5.88 6.85 7.75 5.43 9.63 4 12 4 14.93 4 16.96 6.04 19 8.07 19 11 20.73 11.2 21.86 12.5 23 13.78 23 15.5 23 17.38 21.69 18.69 20.38 20 18.5 20H13V12.85L14.6 14.4L16 13L12 9L8 13L9.4 14.4L11 12.85Z"}))}function sS(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fillRule:"evenodd",clipRule:"evenodd",fill:e.fill||"currentColor",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm1-18a1 1 0 1 0-2 0v7c0 .27.1.52.3.7l3 3a1 1 0 0 0 1.4-1.4L13 11.58V5Z"}))}function CU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M5.3 9.3a1 1 0 0 1 1.4 0l5.3 5.29 5.3-5.3a1 1 0 1 1 1.4 1.42l-6 6a1 1 0 0 1-1.4 0l-6-6a1 1 0 0 1 0-1.42Z"}))}function TU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M5.3 14.7a1 1 0 0 0 1.4 0l5.3-5.29 5.3 5.3a1 1 0 1 0 1.4-1.42l-6-6a1 1 0 0 0-1.4 0l-6 6a1 1 0 0 0 0 1.42Z"}))}function IU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M5.3 9.3a1 1 0 0 1 1.4 0l5.3 5.29 5.3-5.3a1 1 0 1 1 1.4 1.42l-6 6a1 1 0 0 1-1.4 0l-6-6a1 1 0 0 1 0-1.42Z"}))}function r1(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"}))}function i1(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M7.89 13.46a1 1 0 0 1-1.78-.9L7 13l-.9-.45.01-.01.01-.02a2.24 2.24 0 0 1 .14-.23c.1-.14.23-.31.4-.5.37-.36.98-.79 1.84-.79.86 0 1.47.43 1.83.8a3.28 3.28 0 0 1 .55.72v.02h.01v.01L10 13l.9-.45a1 1 0 0 1-1.79.9 1.28 1.28 0 0 0-.19-.25c-.14-.13-.28-.2-.42-.2-.14 0-.28.07-.42.2a1.28 1.28 0 0 0-.19.25ZM13.55 13.9a1 1 0 0 0 1.34-.44c0-.02.02-.04.04-.06.03-.05.08-.13.15-.2.14-.13.28-.2.42-.2.14 0 .28.07.42.2a1.28 1.28 0 0 1 .19.25 1 1 0 0 0 1.78-.9L17 13l.9-.45-.01-.01-.01-.02a2.1 2.1 0 0 0-.14-.23 3.28 3.28 0 0 0-.4-.5c-.37-.36-.98-.79-1.84-.79-.86 0-1.47.43-1.83.8a3.28 3.28 0 0 0-.55.72v.02h-.01v.01L14 13l-.9-.45a1 1 0 0 0 .45 1.34Z"}),i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M12 21c5.52 0 10-1.86 10-6 0-5.59-2.8-10.07-4.26-11.67a1 1 0 1 0-1.48 1.34 14.8 14.8 0 0 1 2.35 3.86A10.23 10.23 0 0 0 12 6C9.47 6 7.15 7.02 5.4 8.53a14.8 14.8 0 0 1 2.34-3.86 1 1 0 1 0-1.48-1.34A18.65 18.65 0 0 0 2 15c0 4.14 4.48 6 10 6Zm0-12c3.87 0 7 2 7 4.2S15.87 17 12 17s-7-1.6-7-3.8C5 11 8.13 9 12 9Z",clipRule:"evenodd"}))}function EU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M12 3a9 9 0 0 0-8.95 10h1.87a5 5 0 0 1 4.1 2.13l1.37 1.97a3.1 3.1 0 0 1-.17 3.78 2.85 2.85 0 0 1-3.55.74 11 11 0 1 1 10.66 0c-1.27.71-2.73.23-3.55-.74a3.1 3.1 0 0 1-.17-3.78l1.38-1.97a5 5 0 0 1 4.1-2.13h1.86A9 9 0 0 0 12 3Z"}))}function i3(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M17.05 8.76a4.7 4.7 0 0 1-1.29-.88c-.36-.33-.7-.73-.88-1.13-.33-.73-.16-.77-1.08-.77h-3.64c-.91 0-.74.04-1.08.77a4.94 4.94 0 0 1-2.17 2.01c-.74.33-.85.14-.86.82 0 .88-.22 3.34 1.78 5.19a13.68 13.68 0 0 0 3.98 2.47c.09.03.08.04.17.04.09 0 .08 0 .17-.04.76-.25 2.67-1.25 3.98-2.47 2-1.85 1.78-4.3 1.78-5.19-.01-.68-.12-.49-.86-.82Z"}),i("path",{fill:e.fill||"currentColor",d:"M19.91 5.41c-.84 0-1.52-.65-1.52-1.46v-.3c0-.9-.77-1.65-1.71-1.65H7.31c-.94 0-1.71.74-1.71 1.65v.3c0 .81-.68 1.46-1.52 1.46H3.7c-.94 0-1.7.73-1.7 1.64v3.52l.01.49c.05 3.11.94 4.69 2.92 6.63C6.72 19.46 11.58 22 11.99 22c.41 0 5.27-2.54 7.06-4.31 1.98-1.95 2.92-3.53 2.92-6.63L22 7.05c0-.9-.76-1.64-1.7-1.64h-.39Zm-2.18 10.74a21.76 21.76 0 0 1-5.58 3.38c-.1.03-.2.03-.31 0a21.76 21.76 0 0 1-5.58-3.38c-1.15-1.08-2.12-2.37-2.12-5.29v-.33l.03-2.57c0-.31.26-.57.59-.57a2.88 2.88 0 0 0 2.89-2.8v-.03c0-.3.26-.55.59-.55h7.56c.32 0 .59.25.59.55v.03c0 1.53 1.3 2.77 2.89 2.8.32 0 .59.26.59.57l.03 2.57v.34c0 2.92-.98 4.2-2.14 5.28h-.03Z"}))}function jQe(e){return i(st,{...e,viewBox:"0 0 24 24"},i("circle",{cx:"12",cy:"12",r:"10",fill:"transparent"}),i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm-.28-16c-.98 0-1.81.47-2.27 1.14A1 1 0 1 1 7.8 7.01 4.73 4.73 0 0 1 11.72 5c2.5 0 4.65 1.88 4.65 4.38 0 2.1-1.54 3.77-3.52 4.24l.14 1a1 1 0 0 1-1.98.27l-.28-2a1 1 0 0 1 .99-1.14c1.54 0 2.65-1.14 2.65-2.38 0-1.23-1.1-2.37-2.65-2.37ZM13 17.88a1.13 1.13 0 1 1-2.25 0 1.13 1.13 0 0 1 2.25 0Z",clipRule:"evenodd"}))}function DU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M10.57 4.01a6.97 6.97 0 0 1 9.86 0l.54.55a6.99 6.99 0 0 1 0 9.88l-7.26 7.27a1 1 0 0 1-1.42-1.42l7.27-7.26a4.99 4.99 0 0 0 0-7.06L19 5.43a4.97 4.97 0 0 0-7.02 0l-8.02 8.02a3.24 3.24 0 1 0 4.58 4.58l6.24-6.24a1.12 1.12 0 0 0-1.58-1.58l-3.5 3.5a1 1 0 0 1-1.42-1.42l3.5-3.5a3.12 3.12 0 1 1 4.42 4.42l-6.24 6.24a5.24 5.24 0 0 1-7.42-7.42l8.02-8.02Z"}))}function PU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M6 2h12a4 4 0 0 1 4 4v7.5a.5.5 0 0 1-.5.5H19a5 5 0 0 0-5 5v2.5a.5.5 0 0 1-.5.5H6a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4Zm.5 8a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM19 8.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm-9.91 2.94a1 1 0 0 0-1.66 1.12 5.5 5.5 0 0 0 9.14 0 1 1 0 0 0-1.66-1.12 3.5 3.5 0 0 1-5.82 0Z",clipRule:"evenodd"}),i("path",{fill:e.fill||"currentColor",d:"M21.66 16c.03 0 .05.03.04.06a3 3 0 0 1-.58.82l-4.24 4.24a3 3 0 0 1-.82.58.04.04 0 0 1-.06-.04V19a3 3 0 0 1 3-3h2.66Z"}))}function MU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H5Zm2.18 13.87a2.9 2.9 0 0 1-1.66-.49 3.18 3.18 0 0 1-1.12-1.35A4.88 4.88 0 0 1 4 12c0-.75.14-1.42.42-2 .29-.59.7-1.04 1.24-1.37a3.7 3.7 0 0 1 1.95-.5c.64 0 1.21.14 1.72.4.5.28.89.67 1.15 1.16l-1.22.88a1.76 1.76 0 0 0-1.64-1.02c-.66 0-1.17.22-1.52.65a2.74 2.74 0 0 0-.53 1.8c0 .78.18 1.39.53 1.81.35.42.86.64 1.52.64.3 0 .57-.06.81-.16.25-.12.45-.27.58-.47v-.93H7.3v-1.4h3.24v4.23H9.27l-.2-.71c-.43.57-1.06.86-1.89.86Zm6.34-.15h-1.57V8.28h1.57v7.44Zm1.51 0h1.57v-2.83h2.76v-1.42H16.6V9.7H20V8.28h-4.97v7.44Z",clipRule:"evenodd"}))}function NU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M4 4a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h11a3 3 0 0 0 3-3v-2.12a1 1 0 0 0 .55.9l3 1.5a1 1 0 0 0 1.45-.9V7.62a1 1 0 0 0-1.45-.9l-3 1.5a1 1 0 0 0-.55.9V7a3 3 0 0 0-3-3H4Z"}))}function BU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M0 6c0-1.1 1.07-2 2.4-2h19.2c1.32 0 2.4.9 2.4 2v1H0V6ZM2.4 20C1.07 20 0 19.1 0 18v-8h24v8c0 1.1-1.08 2-2.4 2H2.4ZM18 12a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2h-2ZM3 13a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2H4a1 1 0 0 1-1-1Zm0 3a1 1 0 0 1 1-1h4a1 1 0 1 1 0 2H4a1 1 0 0 1-1-1Z",clipRule:"evenodd"}))}function RU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M2.06 7.61c-.25.95.31 1.92 1.26 2.18l4.3 1.15c.94.25 1.91-.31 2.17-1.26l1.15-4.3c.25-.94-.31-1.91-1.26-2.17l-4.3-1.15c-.94-.25-1.91.31-2.17 1.26l-1.15 4.3ZM12.98 7.87a2 2 0 0 0 1.75 2.95H20a2 2 0 0 0 1.76-2.95l-2.63-4.83a2 2 0 0 0-3.51 0l-2.63 4.83ZM5.86 13.27a.89.89 0 0 1 1.28 0l.75.77a.9.9 0 0 0 .54.26l1.06.12c.5.06.85.52.8 1.02l-.13 1.08c-.02.2.03.42.14.6l.56.92c.27.43.14 1-.28 1.26l-.9.58a.92.92 0 0 0-.37.48l-.36 1.02a.9.9 0 0 1-1.15.57l-1-.36a.89.89 0 0 0-.6 0l-1 .36a.9.9 0 0 1-1.15-.57l-.36-1.02a.92.92 0 0 0-.37-.48l-.9-.58a.93.93 0 0 1-.28-1.26l.56-.93c.11-.17.16-.38.14-.59l-.12-1.08c-.06-.5.3-.96.8-1.02l1.05-.12a.9.9 0 0 0 .54-.26l.75-.77ZM18.52 13.71a1.1 1.1 0 0 0-2.04 0l-.46 1.24c-.19.5-.57.88-1.07 1.07l-1.24.46a1.1 1.1 0 0 0 0 2.04l1.24.46c.5.19.88.57 1.07 1.07l.46 1.24c.35.95 1.7.95 2.04 0l.46-1.24c.19-.5.57-.88 1.07-1.07l1.24-.46a1.1 1.1 0 0 0 0-2.04l-1.24-.46a1.8 1.8 0 0 1-1.07-1.07l-.46-1.24Z"}))}function qQe(e){return i(st,{...e,viewBox:"0 0 610 586"},i("path",{fill:e.fill||"currentColor",d:"M240.875458,322.015472 C239.579453,327.095581 238.283447,332.175720 236.910065,337.652496 C223.109085,338.982452 209.390930,340.007935 195.660019,340.816925 C186.376282,341.363861 177.070068,341.981476 167.782318,341.869720 C159.888062,341.774780 156.266205,335.406860 152.836319,329.539215 C139.268463,306.328217 125.797729,283.059875 112.405266,259.747162 C107.852547,251.822067 103.636757,243.703415 99.365936,235.132172 C112.918289,208.185944 126.142929,181.660477 139.931274,155.431335 C145.930435,144.019333 140.456161,132.696594 130.697876,127.808655 C98.693672,111.777679 66.725327,95.672440 34.875256,79.338280 C26.783905,75.188660 19.107172,73.213310 10.972735,78.739143 C10.486573,79.069405 9.676579,78.922958 9.017271,78.998337 C6.577906,75.680458 4.138540,72.362564 1.349587,69.022339 C1.000000,64.975456 1.000000,60.950912 1.347918,56.440510 C5.256115,53.635960 8.676971,51.058758 12.403757,49.048798 C22.176937,43.777843 32.027573,38.642818 41.950962,33.659988 C54.691505,27.262581 67.373085,20.706268 80.392570,14.921761 C87.964279,11.557677 94.672966,14.098548 99.087044,21.305969 C102.969276,27.644970 106.085487,34.453621 109.530113,41.060017 C117.961426,57.230301 126.336914,73.429932 134.829407,89.568001 C142.870880,104.848999 151.082397,120.040489 159.129547,135.318527 C170.354034,156.628906 181.473862,177.994400 192.701797,199.302948 C193.960358,201.691467 195.629410,203.863708 197.569595,206.845505 C198.843307,204.772537 199.820374,203.634079 200.308548,202.314713 C203.531113,193.605270 206.942612,184.949921 209.740707,176.102432 C216.129395,155.901627 222.188904,135.596802 228.405060,115.341263 C233.800217,97.761017 238.865036,80.068565 244.733490,62.647228 C251.671890,42.049618 254.225037,19.924837 266.000000,1.000000 C270.689240,1.000000 275.378510,1.000000 280.533875,1.000001 C284.008881,2.317548 286.914490,4.003310 290.046539,4.881639 C298.485748,7.248262 307.021515,9.270583 315.534973,11.972240 C315.222260,13.626742 314.799835,14.720258 314.578583,15.853061 C309.679688,40.938194 304.663849,66.001755 299.986359,91.128265 C297.935760,102.143555 303.122192,112.135971 312.523438,114.862137 C320.461365,117.163963 328.738342,118.296577 336.865234,119.946686 C335.125977,127.173126 333.700195,134.493088 331.578644,141.605499 C327.790344,154.305618 323.582092,166.880508 318.912354,179.694824 C302.841492,175.203064 287.440918,170.410294 271.955994,165.907654 C266.594330,164.348618 260.947906,162.274200 255.563660,162.602341 C244.753159,163.261169 240.035583,170.989502 237.151398,180.770218 C226.571045,216.649841 216.121368,252.584671 204.495575,288.130157 C200.504532,300.332703 208.235657,312.647186 218.410660,315.335754 C225.960159,317.330566 233.391495,319.772644 240.875458,322.015472z"}),i("path",{fill:e.fill||"currentColor",d:"M240.954163,321.633789 C233.391495,319.772644 225.960159,317.330566 218.410660,315.335754 C208.235657,312.647186 200.504532,300.332703 204.495575,288.130157 C216.121368,252.584671 226.571045,216.649841 237.151398,180.770218 C240.035583,170.989502 244.753159,163.261169 255.563660,162.602341 C260.947906,162.274200 266.594330,164.348618 271.955994,165.907654 C287.440918,170.410294 302.841492,175.203064 318.658691,179.944458 C318.672699,182.036469 318.551422,184.150482 317.893433,186.081650 C313.660217,198.506317 309.309479,210.890961 305.013580,223.675049 C299.289612,229.461945 293.518707,234.830505 287.825714,240.280457 C285.827545,242.193344 284.020752,244.306137 281.684326,246.779663 C275.181580,255.479965 269.121063,263.728241 263.060547,271.976532 C257.684631,282.704987 252.078827,293.326721 247.029846,304.206879 C244.506195,309.645142 242.999512,315.555359 240.954163,321.633789z M337.047852,119.622253 C328.738342,118.296577 320.461365,117.163963 312.523438,114.862137 C303.122192,112.135971 297.935760,102.143555 299.986359,91.128265 C304.663849,66.001755 309.679688,40.938194 314.578583,15.853061 C314.799835,14.720258 315.222260,13.626742 315.803040,12.225180 C327.439850,14.690221 338.973297,16.968834 350.130432,20.452518 C354.152008,21.708208 357.269196,25.929571 356.938293,31.067894 C356.672913,35.188766 356.517639,39.380028 355.623627,43.386101 C351.883484,60.145611 347.959106,76.865311 343.947021,93.562294 C341.876007,102.181137 339.479736,110.721825 337.047852,119.622253z M9.075607,79.351349 C9.676579,78.922958 10.486573,79.069405 10.972735,78.739143 C19.107172,73.213310 26.783905,75.188660 34.875256,79.338280 C66.725327,95.672440 98.693672,111.777679 130.697876,127.808655 C140.456161,132.696594 145.930435,144.019333 139.931274,155.431335 C126.142929,181.660477 112.918289,208.185944 99.205185,234.823608 C95.887917,230.188309 92.663872,225.416153 89.802979,220.435394 C80.069077,203.488861 70.488564,186.454285 60.800640,169.481201 C52.932827,155.696930 44.999329,141.950119 37.086643,128.191483 C29.506889,115.011749 21.918219,101.837151 14.329316,88.662689 C12.606311,85.671516 10.866189,82.690208 9.075607,79.351349z"}),i("path",{fill:e.fill||"currentColor",d:"M293.917664,531.091248 C282.143158,520.584412 272.624603,508.204865 264.019318,495.067963 C263.319763,493.999969 262.648254,492.913574 262.285889,491.385681 C263.777527,489.186951 265.626526,487.553467 265.947296,485.660980 C266.363770,483.203400 266.498718,479.172607 265.111145,478.224426 C261.143982,475.513550 256.345947,474.018585 251.874680,472.045441 C251.628647,471.453705 251.434402,471.222687 251.173950,471.047302 C250.185745,468.940277 249.197556,466.833252 248.572937,464.377655 C253.825348,462.442474 258.645050,460.582733 263.617035,459.324951 C274.677002,456.527100 282.804688,450.618927 286.408417,439.365265 C286.908020,437.805176 287.872467,436.378967 288.716858,434.946899 C292.313507,428.847046 291.659088,426.486938 285.288330,423.132874 C272.477692,416.388367 259.697357,409.583801 246.810715,402.987335 C242.413239,400.736298 237.734573,399.034485 233.184402,397.081726 C232.243835,378.646271 233.529358,360.324615 236.037827,342.069336 C236.187271,340.981720 236.656281,339.938019 236.982025,338.064880 C238.283447,332.175720 239.579453,327.095581 240.954163,321.633789 C242.999512,315.555359 244.506195,309.645142 247.029846,304.206879 C252.078827,293.326721 257.684631,282.704987 263.370239,272.132874 C266.620087,273.846436 269.550140,275.423126 272.502838,276.956268 C276.904572,279.241791 279.616943,278.465149 281.906921,274.166870 C283.701569,270.798431 285.319611,267.336121 287.102051,263.960907 C293.078369,252.644272 293.093109,252.652054 281.978424,246.634338 C284.020752,244.306137 285.827545,242.193344 287.825714,240.280457 C293.518707,234.830505 299.289612,229.461945 305.029846,224.061356 C320.359344,212.882477 336.542938,203.218185 354.284149,196.325119 C354.873962,196.095963 355.553101,196.096710 356.899719,196.106842 C369.531921,202.442108 381.456177,208.658615 393.377533,214.880676 C397.970947,217.278076 400.596924,216.488235 403.063995,211.875732 C405.721832,206.906540 408.373138,201.933060 410.953125,196.923248 C413.183319,192.592697 412.304810,189.870590 407.910156,187.542160 C404.983948,185.991760 401.971466,184.604294 398.997589,183.143921 C409.016968,181.780533 419.000519,179.907593 429.065979,179.199234 C438.840576,178.511383 448.699310,179.030075 458.521027,178.998596 C485.910736,178.910828 512.252258,184.476212 537.633850,194.414902 C545.602783,197.535309 553.078613,202.015579 560.546570,206.282257 C566.340515,209.592529 568.826843,217.958344 566.351624,225.135056 C557.974548,249.423599 549.531799,273.690369 540.929321,297.899780 C538.349976,305.158600 530.142700,307.970337 523.134155,304.660553 C516.554871,301.553497 509.869202,298.671661 503.304626,295.081573 C507.234619,292.936798 510.978058,290.957031 514.967041,289.948761 C527.032104,286.899292 536.117310,280.704590 539.973999,268.261810 C540.454590,266.711243 541.575562,265.358948 542.401184,263.915527 C545.015381,259.345184 544.459534,256.436493 539.826172,253.984802 C523.349915,245.266571 506.775208,236.734329 490.247650,228.112839 C486.554382,226.186279 483.918488,227.146759 482.032715,230.799896 C479.361633,235.974396 476.542603,241.072830 473.893127,246.258102 C471.521881,250.898743 472.189240,252.867142 476.981781,255.406555 C481.248383,257.667297 485.609833,259.748535 489.889099,261.986176 C490.942413,262.536926 491.838623,263.388123 493.272705,264.444092 C491.738953,265.254486 490.924255,265.806915 490.027985,266.139771 C480.358765,269.730743 470.720642,273.413452 460.980865,276.803314 C455.571075,278.686127 452.740479,282.318207 452.013794,287.834320 C437.031891,287.990204 422.559601,290.912231 409.154816,297.519958 C396.139557,303.935669 385.074982,312.934692 377.132385,325.683533 C359.795105,316.744568 342.994385,307.921692 326.195648,299.095001 C322.793182,297.307220 320.125854,297.941162 318.256409,301.419800 C316.444550,304.791382 314.491180,308.090790 312.781342,311.512512 C307.409393,322.262878 304.495514,322.488922 318.828583,329.403809 C322.260376,331.059387 325.617188,332.870422 329.008453,334.610016 C328.882996,335.124359 328.757538,335.638702 328.632080,336.153046 C322.166565,338.696930 315.889648,342.052673 309.194458,343.608032 C296.979706,346.445709 287.778198,352.103577 284.015015,364.721954 C283.600677,366.111237 282.566406,367.335632 281.728546,368.574890 C279.128387,372.420746 280.434052,375.084351 284.199951,377.062317 C289.646851,379.923279 295.074097,382.821930 300.534760,385.656311 C312.803192,392.024231 325.059082,398.417328 337.377716,404.686951 C342.616913,407.353455 344.460846,406.657837 347.338165,401.299408 C349.544006,397.191376 351.474030,392.930481 353.781769,388.883026 C357.567749,382.242981 357.058258,380.144958 350.354950,376.739197 C344.942139,373.989105 339.521606,371.254211 334.104523,368.512573 C334.127991,367.995270 334.151489,367.477997 334.174988,366.960693 C344.387451,363.275085 354.599915,359.589447 364.812378,355.903839 C364.207977,366.084747 362.712708,376.305298 363.163757,386.439240 C364.602905,418.773285 383.230743,447.459503 414.965851,460.074524 C425.682159,464.334381 436.673523,466.463013 448.214264,467.139404 C468.704834,468.340363 487.811554,463.836151 506.263184,455.381165 C523.408264,447.524841 538.705627,436.985779 551.256836,422.974701 C556.915039,416.658386 568.375122,417.999512 572.804871,425.639374 C581.105652,439.955658 588.932495,454.546265 597.009155,468.993286 C601.433533,476.907440 605.965698,484.761353 610.724609,492.321198 C611.000000,496.356903 611.000000,500.713806 610.742065,505.218292 C608.989990,507.071136 607.566772,508.845062 605.990784,510.471008 C591.491882,525.429443 575.872375,539.026733 557.958618,549.475708 C556.302795,547.433167 554.926758,545.267517 552.956177,544.151245 C547.425964,541.018555 541.650635,538.318604 535.971985,535.447937 C536.067749,534.954224 536.163574,534.460510 536.259338,533.966797 C541.990662,531.875977 547.606873,529.354248 553.477661,527.785461 C565.128357,524.672241 573.988281,518.746582 577.776489,506.681946 C578.360840,504.821014 579.658142,503.174255 580.684387,501.463623 C583.049255,497.521454 582.094727,494.248688 578.234558,492.209503 C561.458862,483.347626 544.603027,474.637329 527.758118,465.907013 C524.489014,464.212738 521.992065,465.208710 520.273254,468.395905 C518.299377,472.056152 516.216980,475.661072 514.343018,479.371490 C509.635590,488.691803 506.601013,489.564301 519.892944,495.935150 C523.646606,497.734253 527.308533,499.724854 531.012512,501.627594 C530.905823,502.151611 530.799072,502.675629 530.692322,503.199615 C523.593689,505.927155 516.672546,509.350647 509.354309,511.217285 C498.679047,513.940125 490.302704,518.615112 486.938416,529.860718 C486.382080,531.720337 484.925476,533.294861 484.009918,535.065735 C481.309570,540.288757 481.715302,541.669067 487.015106,544.469482 C500.692383,551.696411 514.403442,558.859253 527.936035,566.370972 C508.026276,575.722473 487.631897,582.547241 465.947632,585.081604 C465.233459,585.165100 464.646362,586.335999 464.000000,587.000000 C445.312439,587.000000 426.624878,587.000000 407.468689,587.000000 C406.359619,586.335999 405.780945,585.169067 405.069763,585.081787 C388.114716,583.001343 371.925507,578.181580 356.066528,570.940735 C358.210449,565.432617 360.259155,560.511169 362.819489,555.872131 C366.489227,549.222961 366.037598,547.133728 359.341919,543.732056 C353.933411,540.984314 348.517517,538.251099 341.894531,534.898743 C344.515442,533.680603 345.748383,532.998230 347.055817,532.519165 C352.210693,530.630615 357.301575,528.492004 362.576996,527.023865 C373.001831,524.122742 380.768219,518.551453 384.203705,507.819458 C384.899384,505.646210 386.403442,503.731323 387.537628,501.698883 C389.950653,497.374878 389.417358,494.429657 385.039764,492.109680 C368.427612,483.305695 351.711548,474.697876 335.031738,466.021667 C331.559906,464.215790 328.973663,465.141815 327.170380,468.568420 C324.614288,473.425568 321.970642,478.237366 319.464172,483.119781 C316.308014,489.267670 316.840210,490.794006 323.060455,493.975769 C328.011932,496.508575 332.981415,499.006134 338.820923,501.964142 C336.735596,503.146210 335.833984,503.817200 334.823608,504.204620 C327.059357,507.181488 319.477112,511.001160 311.444519,512.818115 C301.078827,515.162842 296.781677,522.157959 293.917664,531.091248z"}),i("path",{fill:e.fill||"currentColor",d:"M364.995605,355.569946 C354.599915,359.589447 344.387451,363.275085 334.174988,366.960693 C334.151489,367.477997 334.127991,367.995270 334.104523,368.512573 C339.521606,371.254211 344.942139,373.989105 350.354950,376.739197 C357.058258,380.144958 357.567749,382.242981 353.781769,388.883026 C351.474030,392.930481 349.544006,397.191376 347.338165,401.299408 C344.460846,406.657837 342.616913,407.353455 337.377716,404.686951 C325.059082,398.417328 312.803192,392.024231 300.534760,385.656311 C295.074097,382.821930 289.646851,379.923279 284.199951,377.062317 C280.434052,375.084351 279.128387,372.420746 281.728546,368.574890 C282.566406,367.335632 283.600677,366.111237 284.015015,364.721954 C287.778198,352.103577 296.979706,346.445709 309.194458,343.608032 C315.889648,342.052673 322.166565,338.696930 328.632080,336.153046 C328.757538,335.638702 328.882996,335.124359 329.008453,334.610016 C325.617188,332.870422 322.260376,331.059387 318.828583,329.403809 C304.495514,322.488922 307.409393,322.262878 312.781342,311.512512 C314.491180,308.090790 316.444550,304.791382 318.256409,301.419800 C320.125854,297.941162 322.793182,297.307220 326.195648,299.095001 C342.994385,307.921692 359.795105,316.744568 376.815308,325.835571 C373.083282,335.813568 369.131073,345.524811 364.995605,355.569946z M452.476288,287.908447 C452.740479,282.318207 455.571075,278.686127 460.980865,276.803314 C470.720642,273.413452 480.358765,269.730743 490.027985,266.139771 C490.924255,265.806915 491.738953,265.254486 493.272705,264.444092 C491.838623,263.388123 490.942413,262.536926 489.889099,261.986176 C485.609833,259.748535 481.248383,257.667297 476.981781,255.406555 C472.189240,252.867142 471.521881,250.898743 473.893127,246.258102 C476.542603,241.072830 479.361633,235.974396 482.032715,230.799896 C483.918488,227.146759 486.554382,226.186279 490.247650,228.112839 C506.775208,236.734329 523.349915,245.266571 539.826172,253.984802 C544.459534,256.436493 545.015381,259.345184 542.401184,263.915527 C541.575562,265.358948 540.454590,266.711243 539.973999,268.261810 C536.117310,280.704590 527.032104,286.899292 514.967041,289.948761 C510.978058,290.957031 507.234619,292.936798 503.143524,294.739319 C495.043732,293.324707 487.242950,291.182373 479.297821,290.085449 C470.580841,288.881958 461.730835,288.642242 452.476288,287.908447z M398.610199,183.206009 C401.971466,184.604294 404.983948,185.991760 407.910156,187.542160 C412.304810,189.870590 413.183319,192.592697 410.953125,196.923248 C408.373138,201.933060 405.721832,206.906540 403.063995,211.875732 C400.596924,216.488235 397.970947,217.278076 393.377533,214.880676 C381.456177,208.658615 369.531921,202.442108 357.291016,196.071411 C366.996307,192.621689 376.996399,189.251526 387.054535,186.064407 C390.706024,184.907349 394.496002,184.187454 398.610199,183.206009z M294.068390,531.394653 C296.781677,522.157959 301.078827,515.162842 311.444519,512.818115 C319.477112,511.001160 327.059357,507.181488 334.823608,504.204620 C335.833984,503.817200 336.735596,503.146210 338.820923,501.964142 C332.981415,499.006134 328.011932,496.508575 323.060455,493.975769 C316.840210,490.794006 316.308014,489.267670 319.464172,483.119781 C321.970642,478.237366 324.614288,473.425568 327.170380,468.568420 C328.973663,465.141815 331.559906,464.215790 335.031738,466.021667 C351.711548,474.697876 368.427612,483.305695 385.039764,492.109680 C389.417358,494.429657 389.950653,497.374878 387.537628,501.698883 C386.403442,503.731323 384.899384,505.646210 384.203705,507.819458 C380.768219,518.551453 373.001831,524.122742 362.576996,527.023865 C357.301575,528.492004 352.210693,530.630615 347.055817,532.519165 C345.748383,532.998230 344.515442,533.680603 341.894531,534.898743 C348.517517,538.251099 353.933411,540.984314 359.341919,543.732056 C366.037598,547.133728 366.489227,549.222961 362.819489,555.872131 C360.259155,560.511169 358.210449,565.432617 355.911560,570.599854 C351.151031,569.050293 346.237427,567.469604 341.704132,565.146729 C324.318390,556.238159 308.518707,545.018066 294.068390,531.394653z M233.118271,397.506958 C237.734573,399.034485 242.413239,400.736298 246.810715,402.987335 C259.697357,409.583801 272.477692,416.388367 285.288330,423.132874 C291.659088,426.486938 292.313507,428.847046 288.716858,434.946899 C287.872467,436.378967 286.908020,437.805176 286.408417,439.365265 C282.804688,450.618927 274.677002,456.527100 263.617035,459.324951 C258.645050,460.582733 253.825348,462.442474 248.546539,464.019409 C238.981995,442.930176 234.892441,420.688263 233.118271,397.506958z M557.958618,549.475708 C548.263855,555.214966 538.560669,560.598328 528.479248,566.014709 C514.403442,558.859253 500.692383,551.696411 487.015106,544.469482 C481.715302,541.669067 481.309570,540.288757 484.009918,535.065735 C484.925476,533.294861 486.382080,531.720337 486.938416,529.860718 C490.302704,518.615112 498.679047,513.940125 509.354309,511.217285 C516.672546,509.350647 523.593689,505.927155 530.692322,503.199615 C530.799072,502.675629 530.905823,502.151611 531.012512,501.627594 C527.308533,499.724854 523.646606,497.734253 519.892944,495.935150 C506.601013,489.564301 509.635590,488.691803 514.343018,479.371490 C516.216980,475.661072 518.299377,472.056152 520.273254,468.395905 C521.992065,465.208710 524.489014,464.212738 527.758118,465.907013 C544.603027,474.637329 561.458862,483.347626 578.234558,492.209503 C582.094727,494.248688 583.049255,497.521454 580.684387,501.463623 C579.658142,503.174255 578.360840,504.821014 577.776489,506.681946 C573.988281,518.746582 565.128357,524.672241 553.477661,527.785461 C547.606873,529.354248 541.990662,531.875977 536.259338,533.966797 C536.163574,534.460510 536.067749,534.954224 535.971985,535.447937 C541.650635,538.318604 547.425964,541.018555 552.956177,544.151245 C554.926758,545.267517 556.302795,547.433167 557.958618,549.475708z"}),i("path",{fill:e.fill||"currentColor",d:"M263.370209,272.132874 C269.121063,263.728241 275.181580,255.479965 281.536194,247.086365 C293.093109,252.652054 293.078369,252.644272 287.102051,263.960907 C285.319611,267.336121 283.701569,270.798431 281.906921,274.166870 C279.616943,278.465149 276.904572,279.241791 272.502838,276.956268 C269.550140,275.423126 266.620087,273.846436 263.370209,272.132874z"}),i("path",{fill:e.fill||"currentColor",d:"M251.941895,472.411499 C256.345947,474.018585 261.143982,475.513550 265.111145,478.224426 C266.498718,479.172607 266.363770,483.203400 265.947296,485.660980 C265.626526,487.553467 263.777527,489.186951 262.265747,491.027588 C258.618652,485.005585 255.313889,478.891602 251.941895,472.411499z M251.158188,471.309387 C251.434402,471.222687 251.628647,471.453705 251.884430,471.931396 C251.722275,471.938751 251.432343,471.755127 251.158188,471.309387z"}))}function LU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M20.97 4.06c0 .18.08.35.24.43.55.28.9.82 1.04 1.42.3 1.24.75 3.7.75 7.09v4.91a3.09 3.09 0 0 1-5.85 1.38l-1.76-3.51a1.09 1.09 0 0 0-1.23-.55c-.57.13-1.36.27-2.16.27s-1.6-.14-2.16-.27c-.49-.11-1 .1-1.23.55l-1.76 3.51A3.09 3.09 0 0 1 1 17.91V13c0-3.38.46-5.85.75-7.1.15-.6.49-1.13 1.04-1.4a.47.47 0 0 0 .24-.44c0-.7.48-1.32 1.2-1.47l2.93-.62c.5-.1 1 .06 1.36.4.35.34.78.71 1.28.68a42.4 42.4 0 0 1 4.4 0c.5.03.93-.34 1.28-.69.35-.33.86-.5 1.36-.39l2.94.62c.7.15 1.19.78 1.19 1.47ZM20 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM15.5 12a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM5 7a1 1 0 0 1 2 0v1h1a1 1 0 0 1 0 2H7v1a1 1 0 1 1-2 0v-1H4a1 1 0 1 1 0-2h1V7Z",clipRule:"evenodd"}))}function OU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M2 20.59V19.4a1 1 0 0 1 .3-.7l2.4-2.42a1 1 0 0 1 .71-.29H6l9-9-.85-.85a1 1 0 0 1-.23-.34l-1.49-3.73a.5.5 0 0 1 .65-.65l3.73 1.5a1 1 0 0 1 .34.22l.64.64a1 1 0 0 1 1.42 0l1 1a1 1 0 0 1 0 1.42l1.58 1.58a1 1 0 0 1 0 1.42l-1.58 1.58a1 1 0 0 1-1.42 0L17 9l-9 9v.59a1 1 0 0 1-.3.7l-2.4 2.42a1 1 0 0 1-.71.29H3.4a1 1 0 0 1-.7-.3l-.42-.4a1 1 0 0 1-.29-.71Z"}),i("path",{fill:e.fill||"currentColor",d:"M8.23 10.23c.2.2.51.2.7 0l1.3-1.3a.5.5 0 0 0 0-.7L6.5 4.5l.3-.3a1 1 0 0 0 0-1.4l-.5-.5c-.2-.2-.45-.3-.7-.22-.43.14-1.17.49-2.1 1.42a5.37 5.37 0 0 0-1.42 2.1c-.08.25.03.5.21.7l.5.5a1 1 0 0 0 1.42 0l.29-.3 3.73 3.73ZM13.77 15.06a.5.5 0 0 0 0 .7l1.73 1.74 1.44 2.4a1 1 0 0 0 .15.19l1.73 1.73c.1.1.26.1.36 0l2.64-2.64c.1-.1.1-.26 0-.36L20.1 17.1a1 1 0 0 0-.2-.15L17.5 15.5l-1.73-1.73a.5.5 0 0 0-.7 0l-1.3 1.3Z"}))}function FU(e){return i(st,{...e,viewBox:"0 0 442.07 442.46"},i("path",{fill:e.fill||"currentColor",d:"M220.7,442.46c-58.95,0-114.37-22.96-156.06-64.64C22.96,336.14,0,280.71,0,221.76S22.96,107.39,64.64,65.7C106.33,24.02,161.75,1.06,220.7,1.06s114.37,22.96,156.06,64.64,64.64,97.11,64.64,156.06-22.96,114.37-64.64,156.06c-41.68,41.68-97.11,64.64-156.06,64.64ZM220.7,78.65c-78.61,0-142.56,63.95-142.56,142.56s63.95,142.56,142.56,142.56,142.56-63.95,142.56-142.56-63.95-142.56-142.56-142.56Z"}),i("path",{fill:e.fill||"currentColor",d:"M363.36,380.6c-4.24,0-8.46-1.04-12.22-3.01l-1.33-.7c-12.32-6.45-21.14-17.92-24.19-31.48-3.09-13.72.03-28.04,8.54-39.31,19.82-26.22,29.69-57.53,28.54-90.55-.29-8.45-1.36-16.93-3.17-25.21l-.05-.24-66.29,30.91v.12c-.38,7.4-1.87,14.7-4.43,21.71-10.6,28.93-38.52,48.37-69.47,48.37-8.09,0-16.08-1.34-23.75-3.98-19.34-6.65-35.18-21.18-43.47-39.86-8.43-19-8.53-40.02-.28-59.19,11.63-27.02,38.26-44.47,67.84-44.47,6.89,0,13.74.98,20.37,2.9,10.63,3.09,20.2,8.36,28.43,15.67l.1.09,63.58-29.65-.16-.2c-26.98-33.87-67.08-53.48-110.04-53.78h-1.02c-60.28,0-114.13,38.21-133.99,95.09-6.6,18.9-24.65,31.6-44.92,31.6-5.16,0-10.27-.83-15.2-2.47l-2.68-.89c-13.58-4.52-21.6-18.93-18.26-32.8,11.41-47.44,38.82-90.43,77.18-121.05C122.55,16.67,170.23,0,220.9,0c16.01,0,32.25,1.72,48.3,5.11,84.84,17.94,150.85,84.53,168.16,169.63,14.76,72.59-5.33,144.66-55.12,197.73-4.84,5.16-11.73,8.12-18.88,8.12h0Z"}),i("path",{fill:e.fill||"currentColor",transform:"translate(318.98 -15.92) rotate(65)",d:"M171.98,152.39h0c17.66,0,32,14.34,32,32v148h-64v-148c0-17.66,14.34-32,32-32Z"}))}function uS(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M12 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM11.53 11A9.53 9.53 0 0 0 2 20.53c0 .81.66 1.47 1.47 1.47h.22c.24 0 .44-.17.5-.4.29-1.12.84-2.17 1.32-2.91.14-.21.43-.1.4.15l-.26 2.61c-.02.3.2.55.5.55h11.7a.5.5 0 0 0 .5-.55l-.27-2.6c-.02-.26.27-.37.41-.16.48.74 1.03 1.8 1.32 2.9.06.24.26.41.5.41h.22c.81 0 1.47-.66 1.47-1.47A9.53 9.53 0 0 0 12.47 11h-.94Z"}))}function _U(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M6.3 2.55a.85.85 0 0 0-1.6 0l-.35.97a1.4 1.4 0 0 1-.83.83l-.97.35a.85.85 0 0 0 0 1.6l.97.35c.38.15.68.45.83.83l.35.97a.85.85 0 0 0 1.6 0l.35-.97c.15-.38.45-.68.83-.83l.97-.35a.85.85 0 0 0 0-1.6l-.97-.35a1.4 1.4 0 0 1-.83-.83l-.35-.97ZM13.96 5.46l4.58 4.58a1 1 0 0 0 1.42 0l1.38-1.38a2 2 0 0 0 0-2.82l-3.18-3.18a2 2 0 0 0-2.82 0l-1.38 1.38a1 1 0 0 0 0 1.42ZM2.11 20.16l.73-4.22a3 3 0 0 1 .83-1.61l7.87-7.87a1 1 0 0 1 1.42 0l4.58 4.58a1 1 0 0 1 0 1.42l-7.87 7.87a3 3 0 0 1-1.6.83l-4.23.73a1.5 1.5 0 0 1-1.73-1.73ZM18.48 15.71a1.1 1.1 0 0 1 2.04 0l.46 1.24c.19.5.57.88 1.07 1.07l1.24.46c.95.35.95 1.7 0 2.04l-1.24.46c-.5.19-.88.57-1.07 1.07l-.46 1.24a1.1 1.1 0 0 1-2.04 0l-.46-1.24a1.8 1.8 0 0 0-1.07-1.07l-1.24-.46a1.1 1.1 0 0 1 0-2.04l1.24-.46c.5-.19.88-.57 1.07-1.07l.46-1.24Z"}))}function WQe(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M1.23 21.13a1 1 0 0 1 0-1.41l7.48-7.47c.2-.2.51-.2.7 0l2.13 2.12c.2.2.2.5 0 .7l-7.48 7.48a1 1 0 0 1-1.41 0l-1.42-1.42ZM7.76 7.76l8.48 8.49a2 2 0 0 0 2.83 0l3.54-3.54a2 2 0 0 0 0-2.83l-2.94-2.94.65-.66a1 1 0 0 0 0-1.4l-1.41-1.42a1 1 0 0 0-1.41 0l-.66.65-2.72-2.71a2 2 0 0 0-2.83 0L7.76 4.93a2 2 0 0 0 0 2.83Z"}))}function UU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M13.76 4.97a1 1 0 0 1-.73-1.21l.5-2a1 1 0 1 1 1.94.48l-.5 2a1 1 0 0 1-1.21.73ZM19.2 3.8a1 1 0 0 1 0 1.4l-1.5 1.5a1 1 0 1 1-1.4-1.4l1.5-1.5a1 1 0 0 1 1.4 0ZM7.46 11.05 9.6 8.2a3 3 0 0 1 4.8 0l2.14 2.85-.83.83a1 1 0 0 1-1.42 0l-.17-.17a3 3 0 0 0-4.24 0l-.17.17a1 1 0 0 1-1.42 0l-.83-.83ZM6.25 12.67 2.4 17.8A2 2 0 0 0 4 21h16a2 2 0 0 0 1.6-3.2l-3.85-5.13-.63.62a3 3 0 0 1-4.24 0l-.17-.17a1 1 0 0 0-1.42 0l-.17.17a3 3 0 0 1-4.24 0l-.63-.62ZM4.8 5.2a1 1 0 0 1 1.4-1.4l1.5 1.5a1 1 0 0 1-1.4 1.4L4.8 5.2ZM21.97 8.26a1 1 0 0 1-.73 1.21l-2 .5a1 1 0 1 1-.48-1.94l2-.5a1 1 0 0 1 1.21.73ZM2.76 9.47a1 1 0 1 1 .48-1.94l2 .5a1 1 0 1 1-.48 1.94l-2-.5ZM10.97 3.76a1 1 0 0 1-1.94.48l-.5-2a1 1 0 1 1 1.94-.48l.5 2Z"}))}function zU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"m13.47 1 .07.04c.45.06.9.1 1.35.18.95.17 1.88.46 2.75.88.78.36 1.5.84 2.14 1.42.77.7 1.38 1.55 1.8 2.5.3.68.5 1.4.6 2.13l.09.49v1.8c-.03.18-.07.35-.09.53a8.9 8.9 0 0 1-.65 2.5c-.17.4-.41.8-.58 1.2-.05.19-.05.38 0 .56.09.56 0 1.14-.25 1.66a3.88 3.88 0 0 1-2.2 2l-.6.2a.54.54 0 0 0-.44.63c.01.5-.08.98-.28 1.43a2.58 2.58 0 0 1-1.34 1.28c-.2.1-.41.18-.63.25a.84.84 0 0 1-1.09-.81v-.85h.02v-.45a.5.5 0 0 0-.85-.36.5.5 0 0 0-.15.36v1.58a.8.8 0 0 1-.78.8h-.41a.8.8 0 0 1-.8-.8v-1.58a.5.5 0 0 0-.86-.35.5.5 0 0 0-.14.35v1.3a.84.84 0 0 1-1.09.8c-.36-.1-.7-.26-1.03-.46a2.62 2.62 0 0 1-1.17-2.05l-.04-.58c-.01-.29-.21-.4-.45-.48a5.53 5.53 0 0 1-1.63-.8 3.27 3.27 0 0 1-1.38-2.12 5.1 5.1 0 0 1 .02-1.26c.02-.22-.11-.36-.2-.51-.4-.76-.7-1.57-.9-2.4a10.79 10.79 0 0 1-.25-3.27c.06-.98.3-1.94.72-2.83a7.35 7.35 0 0 1 1.86-2.49 9.5 9.5 0 0 1 4-2.03c.7-.2 1.42-.3 2.14-.35.02 0 .04-.03.06-.04h2.66Zm-1.35 13.91a.48.48 0 0 0-.34.15l-.76.8a.48.48 0 0 0 .35.82h1.5a.48.48 0 0 0 .46-.3.48.48 0 0 0-.1-.52l-.75-.8a.48.48 0 0 0-.36-.15Zm4.07-6.08a2.82 2.82 0 0 0-3.26 3.45 2.82 2.82 0 0 0 3.41 2.04h.01c.05 0 .09-.02.13-.03l.25-.1h.02l.16-.07.04-.02a2.86 2.86 0 0 0 .47-.31l.04-.03a2.83 2.83 0 0 0 .53-.59H18l.04-.07.06-.1.05-.08.04-.09.04-.08a2.78 2.78 0 0 0 .11-.29l.03-.1.03-.11.01-.07.01-.04.01-.06a2.82 2.82 0 0 0 .05-.48v-.08l-.01-.13-.01-.1a2.77 2.77 0 0 0-.05-.3l-.03-.12a2.82 2.82 0 0 0-.09-.28l-.02-.07-.03-.06a2.83 2.83 0 0 0-.46-.71l-.04-.05-.08-.1-.07-.05a2.87 2.87 0 0 0-.1-.1l-.07-.05a2.84 2.84 0 0 0-.37-.25l-.08-.04a2.82 2.82 0 0 0-.19-.1L16.74 9l-.05-.02a2.8 2.8 0 0 0-.2-.07h-.01a2.82 2.82 0 0 0-.23-.07h-.06Zm-6.28.28a2.81 2.81 0 0 0-4.1 1.98v.03l-.01.06c-.02.1-.02.21-.03.32v.04a2.82 2.82 0 0 0 0 .24l.02.12v.08l.03.13v.03l.01.04.04.14c0 .04.02.07.03.11l.02.08a2.81 2.81 0 0 0 3.21 1.84l.08-.01a2.97 2.97 0 0 0 .19-.06l.09-.03c.04 0 .07-.02.11-.04.02 0 .04 0 .06-.02l.03-.01a2.78 2.78 0 0 0 .27-.14l.09-.05.13-.08.03-.03a2.83 2.83 0 0 0 .26-.2l.07-.07.03-.03.06-.06.05-.05.08-.1.06-.07.06-.09.04-.05.02-.03.05-.09.06-.1.03-.06.07-.13.02-.07a2.87 2.87 0 0 0 .08-.2l.03-.11.03-.1.02-.1.01-.03.01-.06a2.74 2.74 0 0 0 .03-.23v-.07l.01-.17v-.04A2.8 2.8 0 0 0 9.91 9.1Z",clipRule:"evenodd"}))}function $U(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M16.7 8.7a1 1 0 0 0-1.4-1.4l-3.26 3.24a1 1 0 0 0 1.42 1.42L16.7 8.7ZM3.7 11.3a1 1 0 0 0-1.4 1.4l4.5 4.5a1 1 0 0 0 1.4-1.4l-4.5-4.5Z"}),i("path",{fill:"currentColor",d:"M21.7 9.7a1 1 0 0 0-1.4-1.4L13 15.58l-3.3-3.3a1 1 0 0 0-1.4 1.42l4 4a1 1 0 0 0 1.4 0l8-8Z"}))}function a1(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M10.81 2.86c.38-1.15 2-1.15 2.38 0l1.89 5.83h6.12c1.2 0 1.71 1.54.73 2.25l-4.95 3.6 1.9 5.82a1.25 1.25 0 0 1-1.93 1.4L12 18.16l-4.95 3.6c-.98.7-2.3-.25-1.92-1.4l1.89-5.82-4.95-3.6a1.25 1.25 0 0 1 .73-2.25h6.12l1.9-5.83Z"}))}function Vm(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M2.07 10.94a1.25 1.25 0 0 1 .73-2.25h6.12l1.9-5.83c.37-1.15 2-1.15 2.37 0l1.89 5.83h6.12c1.2 0 1.71 1.54.73 2.25l-4.95 3.6 1.9 5.82a1.25 1.25 0 0 1-1.93 1.4L12 18.16l-4.95 3.6c-.98.7-2.3-.25-1.92-1.4l1.89-5.82-4.95-3.6Zm11.55-.25h5.26l-4.25 3.09 1.62 5-4.25-3.1-4.25 3.1 1.62-5-4.25-3.1h5.26l1.62-5 1.62 5Z"}))}function dS(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M15.62 17.03a9 9 0 1 1 1.41-1.41l4.68 4.67a1 1 0 0 1-1.42 1.42l-4.67-4.68ZM17 10a7 7 0 1 1-14 0 7 7 0 0 1 14 0Z",clipRule:"evenodd"}))}function GU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M8 5a1 1 0 0 0 0 2h7.59L5.29 17.3a1 1 0 1 0 1.42 1.4L17 8.42V16a1 1 0 1 0 2 0V6a1 1 0 0 0-1-1H8Z"}))}function KQe(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M21.7 5.3a1 1 0 0 1 0 1.4l-12 12a1 1 0 0 1-1.4 0l-6-6a1 1 0 1 1 1.4-1.4L9 16.58l11.3-11.3a1 1 0 0 1 1.4 0Z"}))}function nd(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M18.94 21.06a1.5 1.5 0 1 0 2.12-2.12L14.12 12l6.94-6.94a1.5 1.5 0 1 0-2.12-2.12L12 9.88 5.06 2.94a1.5 1.5 0 1 0-2.12 2.12L9.88 12l-6.94 6.94a1.5 1.5 0 1 0 2.12 2.12L12 14.12l6.94 6.94Z"}))}function a3(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M3 2a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 0-2H5.07a8 8 0 1 1 13.29 8.86l-.01.01a7.97 7.97 0 0 1-1.9 1.78 1 1 0 0 0 1.1 1.67c.19-.12.36-.25.53-.38.7-.54 1.32-1.16 1.85-1.85l.01-.01A9.95 9.95 0 0 0 22 12 10 10 0 0 0 4 6V3a1 1 0 0 0-1-1ZM3.18 14.06a1 1 0 0 0-.61 1.27c.11.33.24.64.4.95a1 1 0 0 0 1.8-.86c-.12-.24-.22-.5-.32-.75a1 1 0 0 0-1.27-.61ZM5.33 18.12a1 1 0 0 0 .09 1.41c.51.45 1.07.85 1.67 1.18a1 1 0 0 0 .98-1.74 8.02 8.02 0 0 1-1.33-.95 1 1 0 0 0-1.41.1ZM14.17 20.8a1 1 0 0 0-1.12-.87 8.08 8.08 0 0 1-1.87.03 1 1 0 1 0-.2 1.99 10.1 10.1 0 0 0 2.32-.03 1 1 0 0 0 .87-1.13Z"}))}function s3(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M4 5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v.18a1 1 0 1 0 2 0V5a3 3 0 0 0-3-3H5a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h.18a1 1 0 1 0 0-2H5a1 1 0 0 1-1-1V5Z"}),i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M8 11a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3h-8a3 3 0 0 1-3-3v-8Zm2 0a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1v-8Z",clipRule:"evenodd"}))}function s1(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M15 2a3 3 0 0 1 3 3v12H5.5a1.5 1.5 0 0 0 0 3h14a.5.5 0 0 0 .5-.5V5h1a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h10Zm-.3 5.7a1 1 0 0 0-1.4-1.4L9 10.58l-2.3-2.3a1 1 0 0 0-1.4 1.42l3 3a1 1 0 0 0 1.4 0l5-5Z",clipRule:"evenodd"}))}function l3(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M14.25 1c.41 0 .75.34.75.75V3h5.25c.41 0 .75.34.75.75v.5c0 .41-.34.75-.75.75H3.75A.75.75 0 0 1 3 4.25v-.5c0-.41.34-.75.75-.75H9V1.75c0-.41.34-.75.75-.75h4.5Z"}),i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M5.06 7a1 1 0 0 0-1 1.06l.76 12.13a3 3 0 0 0 3 2.81h8.36a3 3 0 0 0 3-2.81l.75-12.13a1 1 0 0 0-1-1.06H5.07ZM11 12a1 1 0 1 0-2 0v6a1 1 0 1 0 2 0v-6Zm3-1a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0v-6a1 1 0 0 1 1-1Z",clipRule:"evenodd"}))}function HU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M16.44 6.96c.29 0 .51.25.47.54l-.82 6.34c-.02.08-.03.2-.03.34 0 .71.28 1.07.85 1.07.49 0 .94-.21 1.36-.63.43-.42.77-1 1.02-1.72.26-.75.38-1.57.38-2.48 0-1.35-.29-2.54-.87-3.56a5.92 5.92 0 0 0-2.45-2.35 7.68 7.68 0 0 0-3.61-.83c-1.55 0-2.96.37-4.22 1.1a7.66 7.66 0 0 0-2.96 3.07 9.53 9.53 0 0 0-1.09 4.66c0 1.45.26 2.77.78 3.95a6.3 6.3 0 0 0 2.47 2.81 8.3 8.3 0 0 0 4.36 1.05 12.43 12.43 0 0 0 5.35-1.18.5.5 0 0 1 .7.24l.46 1.07c.1.22.02.47-.19.59-.77.43-1.69.77-2.75 1.02-1.23.3-2.48.44-3.76.44-2.18 0-4-.44-5.48-1.33a8.1 8.1 0 0 1-3.27-3.57 11.93 11.93 0 0 1-1.07-5.12c0-2.24.47-4.19 1.4-5.84a9.7 9.7 0 0 1 3.86-3.8c1.62-.9 3.4-1.34 5.36-1.34 1.8 0 3.4.37 4.8 1.12 1.4.72 2.5 1.76 3.28 3.1a8.86 8.86 0 0 1 1.16 4.56c0 1.36-.23 2.57-.7 3.64a5.81 5.81 0 0 1-1.92 2.47c-.82.58-1.76.87-2.81.87a2.4 2.4 0 0 1-1.6-.5c-.4-.35-.65-.78-.73-1.32-.3.55-.74 1-1.36 1.34a4.3 4.3 0 0 1-2.03.48A3.4 3.4 0 0 1 8 16C7.33 15.16 7 14 7 12.5c0-1.14.2-2.16.6-3.05.43-.89 1-1.57 1.73-2.06a4.3 4.3 0 0 1 4.27-.31c.47.29.82.68 1.07 1.16l.3-.95c.06-.2.25-.33.46-.33h1.02Zm-5.06 8.24c.8 0 1.45-.35 1.97-1.04.51-.7.77-1.6.77-2.7 0-.88-.18-1.56-.53-2.03a1.76 1.76 0 0 0-1.5-.73c-.8 0-1.45.35-1.97 1.04a4.28 4.28 0 0 0-.78 2.67c0 .9.17 1.58.51 2.06.36.49.87.73 1.53.73Z"}))}function jU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M10.99 3.16A1 1 0 1 0 9 2.84L8.15 8H4a1 1 0 0 0 0 2h3.82l-.67 4H3a1 1 0 1 0 0 2h3.82l-.8 4.84a1 1 0 0 0 1.97.32L8.85 16h4.97l-.8 4.84a1 1 0 0 0 1.97.32l.86-5.16H20a1 1 0 1 0 0-2h-3.82l.67-4H21a1 1 0 1 0 0-2h-3.82l.8-4.84a1 1 0 1 0-1.97-.32L15.15 8h-4.97l.8-4.84ZM14.15 14l.67-4H9.85l-.67 4h4.97Z",clipRule:"evenodd"}))}function qU(e){return i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",fillRule:"evenodd",d:"M3 14a9 9 0 1 0 18 0c0-2.63-.61-5.22-1.79-7.58L18.2 4.38a.7.7 0 0 0-1.3.18l-.78 3.9a.66.66 0 0 1-1.27.11L12.22 1.6a.9.9 0 0 0-1.48-.33l-4.2 4.2A12.07 12.07 0 0 0 3 14Zm9.26-.84a.57.57 0 0 0-1-.23L9.6 15a3.08 3.08 0 1 0 5.12.48c-.14-.26-.5-.28-.71-.06L13 16.5l-.74-3.34Z",clipRule:"evenodd"}))}var BQe,lS,GQe,cS,HQe,ot=h(()=>{"use strict";d();oue();_e();Be();BQe={xxs:12,xs:16,sm:18,md:24,lg:32,refresh_sm:20};lS=e=>i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M4 6c0-1.1.9-2 2-2h3a1 1 0 0 0 0-2H6a4 4 0 0 0-4 4v3a1 1 0 0 0 2 0V6ZM4 18c0 1.1.9 2 2 2h3a1 1 0 1 1 0 2H6a4 4 0 0 1-4-4v-3a1 1 0 1 1 2 0v3ZM20 6a2 2 0 0 0-2-2h-3a1 1 0 1 1 0-2h3a4 4 0 0 1 4 4v3a1 1 0 1 1-2 0V6Z"}),i("path",{fillRule:"evenodd",clipRule:"evenodd",fill:e.fill||"currentColor",d:"M5 7c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V7Zm2 0h2v2H7V7ZM5 15c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-2Zm2 0h2v2H7v-2ZM13 7c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2V7Zm2 0h2v2h-2V7ZM17.08 13a1.5 1.5 0 0 0-1.42 1.03c-.09.25-.3.47-.56.47H15a2 2 0 0 0-2 2V20c0 1.1.9 2 2 2h6a2 2 0 0 0 2-2v-3.5a2 2 0 0 0-2-2h-.1c-.26 0-.47-.22-.56-.47A1.5 1.5 0 0 0 18.92 13h-1.84ZM20 18a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"})),GQe=e=>i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M3 15.5V6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v.5a.5.5 0 0 1-.5.5H17a4 4 0 0 0-4 4v4.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5ZM12.5 18H2a1 1 0 1 0 0 2h10.48c.33 0 .57-.3.54-.63A4.08 4.08 0 0 1 13 19v-.5a.5.5 0 0 0-.5-.5Z"}),i("path",{fillRule:"evenodd",clipRule:"evenodd",fill:e.fill||"currentColor",d:"M15 11c0-1.1.9-2 2-2h4a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-8Zm2 1a1 1 0 0 1 1-1h2a1 1 0 1 1 0 2h-2a1 1 0 0 1-1-1Z"})),cS=e=>i(st,{...e,viewBox:"0 0 24 24"},i("path",{fillRule:"evenodd",clipRule:"evenodd",fill:e.fill||"currentColor",d:"M21 21.93V2.07a1 1 0 0 0-1.27-.97l-2.5.7a3 3 0 0 1-1.46.04l-3.12-.7a3 3 0 0 0-1.3 0l-3.12.7a3 3 0 0 1-1.45-.04l-2.51-.7A1 1 0 0 0 3 2.07v19.86a1 1 0 0 0 1.27.97l2.5-.7a3 3 0 0 1 1.46-.04l3.12.7a3 3 0 0 0 1.3 0l3.12-.7a3 3 0 0 1 1.45.04l2.51.7a1 1 0 0 0 1.27-.97ZM7 8a1 1 0 0 1 1-1h8a1 1 0 1 1 0 2H8a1 1 0 0 1-1-1Zm1 3a1 1 0 0 0 0 2h8a1 1 0 1 0 0-2H8Zm-1 5a1 1 0 0 1 1-1h3a1 1 0 0 1 0 2H8a1 1 0 0 1-1-1Zm8-1a1 1 0 0 0 0 2h1a1 1 0 1 0 0-2h-1Z"})),HQe=e=>i(st,{...e,viewBox:"0 0 24 24"},i("path",{fill:e.fill||"currentColor",d:"M4 5a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v16a1 1 0 0 1-1.67.74l-5.66-5.13a1 1 0 0 0-1.34 0l-5.66 5.13A1 1 0 0 1 4 20.99V5Z"}))});var lue=h(()=>{});function so({disabled:e,useDefaultUnderlineStyles:t=!0,href:o,rel:r,target:n,className:a,children:s,...l}){let c=o&&/^(?:discord:\/)?\/[a-zA-Z0-9_-]/.test(o),u=o&&!c;return i("a",{role:"link",href:o,target:n??(u?"_blank":void 0),rel:r??(u?"noreferrer noopener":void 0),className:X("vc-link",t&&"vc-link-underline-on-hover",e&&"vc-link-disabled",a),"aria-disabled":e,...l},s)}var $r=h(()=>{"use strict";d();lue();Be()});function de({variant:e="primary",size:t="medium",children:o,className:r,...n}){return i("button",{"data-mana-component":"button",className:X(c3("base",e,t),r),...n},o,e==="link"&&i(gn,{className:c3("link-icon")}))}function WU({variant:e="link",size:t="medium",className:o,children:r,...n}){return i(so,{"data-mana-component":"button",className:X(c3("base",e,t),o),...n},r,i(gn,{className:c3("link-icon")}))}function Ys({variant:e="primary",className:t,...o}){return i("button",{className:X(QQe("base",e),t),...o})}var c3,QQe,Ep,ZQe,YQe,Tt=h(()=>{"use strict";d();tue();we();Be();ot();$r();c3=K("vc-btn-"),QQe=K("vc-text-btn-");Ep=function({look:t,color:o="BRAND",size:r="medium",...n}){return t==="LINK"?i(Ys,{variant:YQe[o],...n}):i(de,{variant:ZQe[o],size:r,...n})};Ep.Looks={FILLED:"",LINK:"LINK"};Ep.Colors={BRAND:"BRAND",PRIMARY:"PRIMARY",RED:"RED",TRANSPARENT:"TRANSPARENT",CUSTOM:"CUSTOM",GREEN:"GREEN",LINK:"LINK",WHITE:"WHITE"};ZQe={BRAND:"primary",PRIMARY:"secondary",RED:"dangerPrimary",TRANSPARENT:"secondary",CUSTOM:"none",GREEN:"positive",LINK:"link",WHITE:"overlayPrimary"},YQe={BRAND:"primary",PRIMARY:"primary",RED:"danger",TRANSPARENT:"secondary",CUSTOM:"secondary",GREEN:"primary",LINK:"link",WHITE:"secondary"};Ep.Sizes={SMALL:"small",MEDIUM:"medium",LARGE:"medium",XLARGE:"medium",NONE:"min",MIN:"min"}});var cue=h(()=>{});function Rt({className:e,...t}){return i("hr",{className:X("vc-divider",e),...t})}var xr=h(()=>{"use strict";d();cue();Be()});var uue=h(()=>{});function pe({flexDirection:e,gap:t="1em",alignContent:o,justifyContent:r,alignItems:n,flexWrap:a,children:s,style:l,...c}){return l={display:"flex",flexDirection:e,gap:t,alignContent:o,justifyContent:r,alignItems:n,flexWrap:a,...l},i("div",{style:l,...c},s)}var Lt=h(()=>{"use strict";d()});function nr({children:e,size:t="sm",weight:o="normal",...r}){return i(Y,{tag:"span",size:t,weight:o,...r},e)}var Jc=h(()=>{"use strict";d();yt()});var due=h(()=>{});function Mi({checked:e,onChange:t,disabled:o,id:r,hasIcon:n=!1,innerRef:a,...s}){let[l,c]=T(!1),u=p=>{let m=p.currentTarget;c(m.matches(":focus-visible"))};return i("label",{className:u3("container",{checked:e,disabled:o,focusVisible:l})},i("div",{className:u3("indicator"),"data-mana-component":"switch"},i("svg",{className:u3("thumb"),viewBox:"0 0 24 24",preserveAspectRatio:"xMidYMin meet","aria-hidden":"true"},i("rect",{fill:"var(--switch-thumb-background-default)",x:4,y:4,width:16,height:16,rx:8}),n&&i("svg",{viewBox:"0 0 24 24",fill:"none"},i("g",{transform:"translate(4 4)"},e?i(f,null,i("path",{fill:"var(--switch-thumb-icon-active)",d:"M6.31649 11.88304L5.0437 10.61032L11.44792 4.20604L12.72072 5.47883L6.31649 11.88304Z"}),i("path",{fill:"var(--switch-thumb-icon-active)",d:"M3.26914 8.87224L4.54194 7.59943L7.5588 10.61632L6.28601 11.88912L3.26914 8.87224Z"})):i(f,null,i("path",{fill:"var(--switch-thumb-icon-default)",d:"M4.10585 5.3837L5.37864 4.11091L11.884 10.61632L10.6112 11.88912L4.10585 5.3837Z"}),i("path",{fill:"var(--switch-thumb-icon-default)",d:"M10.61632 4.11091L11.88912 5.3837L5.3837 11.88912L4.11091 10.61632L10.61632 4.11091Z"})))))),i("input",{ref:a,id:r,type:"checkbox",role:"switch",className:u3("input"),tabIndex:0,checked:e,disabled:o,onChange:p=>t(p.currentTarget.checked),onFocus:u,onBlur:u,...s}))}var u3,rd=h(()=>{"use strict";d();due();we();C();u3=K("vc-switch-")});function mo({onChange:e,title:t,value:o,description:r,disabled:n,className:a,hideBorder:s}){return i("div",{className:X("vc-form-switch-container",s&&"vc-form-switch-no-border")},i("label",{className:X("vc-form-switch",a,n&&"vc-form-switch-disabled")},i("div",{className:"vc-form-switch-text"},i(pe,{flexDirection:"column",gap:"4px"},i(nr,{size:"md",weight:"medium",color:"text-strong"},t),r&&i(nr,{size:"sm",color:"text-subtle"},r))),i("div",{className:"vc-form-switch-control"},i(Mi,{checked:o,onChange:e,disabled:n}))))}function KU({note:e,children:t,...o}){return i(mo,{title:t??"",description:e,...o})}var hi=h(()=>{"use strict";d();uue();Be();Lt();Jc();rd()});var pue=h(()=>{});function oe(e){let{tag:t="h5",children:o,className:r,...n}=e;return i(t,{className:X(`vc-${t}`,`vc-${t}-defaultMargin`,r),...n},o)}function ta({children:e,...t}){return i(oe,{tag:"h2",...t},e)}function Ot({children:e,...t}){return i(oe,{tag:"h3",...t},e)}function Gr({children:e,...t}){return i(oe,{tag:"h4",...t},e)}var We=h(()=>{"use strict";d();pue();Be()});function U({children:e,size:t="sm",weight:o="normal",...r}){return i(Y,{tag:"p",size:t,weight:o,...r},e)}var Je=h(()=>{"use strict";d();yt()});function Dr({children:e,...t}){return i(ve,{...t},o=>i("div",{...o},e))}var lc=h(()=>{"use strict";d();C()});var l1,QU,mue=h(()=>{"use strict";d();l1=()=>{},QU=({children:e})=>{if(typeof e!="function")return null;let t=e({onBlur:l1,onFocus:l1,onMouseEnter:l1,onMouseLeave:l1,onClick:l1,onContextMenu:l1});return i(f,null,t)};QU.Colors={}});function JQe(e,t,o){return function(...r){return[t.apply(this,r),0]}}function XQe(e,t,o){return t}var fue,Dp,d3=h(()=>{"use strict";d();He();fue=JQe,Dp=XQe});function xi(e){let t=typeof e=="string"?e:e.source;if(t=t.replaceAll(/#{intl::([\w$+/]*)(?:::(\w+))?}/g,(n,a,s)=>{let l=typeof e=="string",c=s==="raw"?a:k0(a);return s==="hash"?l?c:String.raw`(?:${c})`.replaceAll("+","\\+"):!Number.isNaN(Number(c[0]))||c.includes("+")||c.includes("/")?l?`["${c}"]`:String.raw`(?:\["${c}"\])`.replaceAll("+","\\+"):l?`.${c}`:String.raw`(?:\.${c})`}),typeof e=="string")return t;let o=t.replaceAll(/(\\*)\\i/g,(n,a)=>a.length%2===0?`${a}${String.raw`(?:[A-Za-z_$][\w$]*)`}`:n.slice(1)),r=new RegExp(o,e.flags);return r.toString=e.toString.bind(e),r}function pS(e,t){return typeof e!="function"?e.replaceAll("$self",t):((...o)=>e(...o).replaceAll("$self",t))}function p3(e,t){if(e.get){let o=e.get;e.get=function(){return t(o.call(this))}}else e.value&&(e.value=t(e.value));return e}function mS(e,t){let o=Object.getOwnPropertyDescriptors(e);o.match=p3(o.match,xi),o.replace=p3(o.replace,r=>pS(r,t)),Object.defineProperties(e,o)}function ZU(e){let t=Object.getOwnPropertyDescriptors(e);t.find=p3(t.find,xi),Object.defineProperties(e,t)}var id=h(()=>{"use strict";d();X2()});function Aa(e){return!!e}function ka(e){return e!=null}var Ca=h(()=>{"use strict";d()});function gue(e,t,o){return o===!1?t?e.slice(0,-1):e:e[0]}function hS(e,t,o=!1){let{moment:r}=(C(),Jx(tf)),n=r.duration(e,t),a=aZe.map(u=>({amount:n[u](),unit:u})),s=0;e:for(let u=0;uu==="days");if(l!==-1){let u=a[l],p=u.amount%7;p===0?a.splice(l,1):u.amount=p}let c="";for(;a.length;){let{amount:u,unit:p}=a.shift();c.length&&(c+=a.length?", ":" and "),(u>0||c.length)&&(c+=`${u} ${gue(p,u===1,o)}`)}return c.length?c:`0 ${gue(t,!1,o)}`}function xS(e,t=!1){let a=Math.floor(e/864e5),s=Math.floor(e%864e5/36e5),l=Math.floor(e%36e5/6e4),c=Math.floor(e%6e4/1e3),u=A=>t?A:A.toString().padStart(2,"0"),p=A=>t?A:"",m=a!==0,g=m||s!==0,x=g||l!==0||!t,v=[g&&`${u(s)}${p("h")}`,x&&`${u(l)}${p("m")}`,`${u(c)}${p("s")}`].filter(Aa).join(t?" ":":");return(m?`${a}d `:"")+v}function ef(e,t=!1,o=!0){let r=m=>t?m:m.toString().padStart(2,"0"),n=m=>t?m:"",a=t?" ":":",s=Math.floor(e/864e5),l=Math.floor(e%864e5/36e5),c=Math.floor(e%864e5%36e5/6e4),u=Math.floor(e%864e5%36e5%6e4/1e3),p="";return s&&(p+=`${s}${n("d")}${a}`),(l||p||!o)&&(p+=`${r(l)}${n("h")}${a}`),(c||p||!t||!o)&&(p+=`${r(c)}${n("m")}`),o&&(c||p||!t)&&(p+=`${a}`),o&&(p+=`${r(u)}${n("s")}`),p}function JU(e,t=o=>o){let{length:o}=e;if(o===0)return"";if(o===1)return t(e[0]);let r="";for(let n=0;n2?r+=", ":o-n>1&&(r+=" and ");return r}function I0(e,t){return`\`\`\`${t||""} ${e.replaceAll("```","\\`\\`\\`")} \`\`\``}function hue(e,...t){let o=String.raw({raw:e},...t),r=o.match(/^[ \t]*(?=\S)/gm);if(!r)return o.trim();let n=r.reduce((a,s)=>Math.min(a,s.length),1/0);return o.replace(new RegExp(`^[ \\t]{${n}}`,"gm"),"").trim()}function sZe(e){return"``"+fS+e.replaceAll("`",fS+"`"+fS)+fS+"``"}var gS,VQe,eZe,YU,tZe,oZe,nZe,rZe,iZe,Pp,aZe,fS,XU,Ta=h(()=>{"use strict";d();Ca();gS=e=>e.split(/(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])/).map(t=>/^[A-Z]{2,}$/.test(t)?t:t.toLowerCase()),VQe=e=>e.toLowerCase().split("_"),eZe=e=>e.toLowerCase().split("-"),YU=e=>e.split(/(?=[A-Z])/).map(t=>t.toLowerCase()),tZe=e=>e.toLowerCase().split(" "),oZe=e=>e.map((t,o)=>o?t[0].toUpperCase()+t.slice(1):t).join(""),nZe=e=>e.join("_").toUpperCase(),rZe=e=>e.join("-").toLowerCase(),iZe=e=>e.map(t=>t[0].toUpperCase()+t.slice(1)).join(""),Pp=e=>e.map(t=>t[0].toUpperCase()+t.slice(1)).join(" "),aZe=["years","months","weeks","days","hours","minutes","seconds"];fS="\u200B";XU=RegExp.escape??function(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}});var y3={};Bt(y3,{ChunkIdsRegex:()=>kS,DefaultExtractAndLoadChunksRegex:()=>af,LazyComponentWebpack:()=>Sue,_blacklistBadModules:()=>g3,_initWebpack:()=>bS,_resolveReady:()=>vS,cache:()=>cc,extract:()=>CS,extractAndLoadChunks:()=>tz,extractAndLoadChunksLazy:()=>vr,factoryListeners:()=>D0,filters:()=>Re,find:()=>Ni,findAll:()=>nf,findBulk:()=>h3,findByCode:()=>rf,findByCodeLazy:()=>Oe,findByProps:()=>P0,findByPropsLazy:()=>Ae,findComponentByCode:()=>v3,findComponentByCodeLazy:()=>he,findComponentLazy:()=>c1,findCssClasses:()=>VU,findCssClassesLazy:()=>Ie,findExportedComponentLazy:()=>wS,findLazy:()=>qn,findModuleFactory:()=>SS,findModuleId:()=>sd,findStore:()=>M0,findStoreLazy:()=>x3,fluxStores:()=>ad,handleModuleNotFound:()=>Xc,lazyWebpackSearchHistory:()=>bue,makeClassNameRegex:()=>m3,mapMangledCssClasses:()=>AS,mapMangledModule:()=>ez,mapMangledModuleLazy:()=>Qo,moduleListeners:()=>f3,onceReady:()=>of,proxyLazyWebpack:()=>ln,search:()=>u1,stringMatches:()=>yS,waitFor:()=>Zo,waitForSubscriptions:()=>E0,wreq:()=>vo});function m3(e){return new RegExp(`(?<=^|\\s)${XU(e)}(?:_\\S*)?(?=$|\\s)`)}function bS(e){vo=e,cc=e.c,Reflect.defineProperty(e.c,Symbol.toStringTag,{value:"ModuleCache",configurable:!0,writable:!0,enumerable:!1})}function vue(e){return e==null||e===window||e===document||e===document.documentElement||e[Symbol.toStringTag]==="DOMTokenList"||e[Symbol.toStringTag]==="IntlMessagesProxy"?!0:e[xue]!==void 0?(Reflect.deleteProperty(e,xue),!0):e instanceof lZe}function yue(e,t){let o=Object.getOwnPropertyDescriptor(e,t);o!=null&&Reflect.defineProperty(e,t,{...o,enumerable:!1})}function g3(e,t,o){try{if(vue(t))return yue(e,o),!0}catch(a){Mp.error(`Error while blacklisting module: `,a,` Module id:`,o,` Module exports:`,t)}if(typeof t!="object")return!1;let r=!0;for(let a in t)try{try{var n=t[a]}catch{continue}vue(n)?yue(t,a):r=!1}catch(s){Mp.error(`Error while blacklistng module: `,s,` Module id:`,o,` Export value:`,n)}return r}function Xc(e,...t){let o=new Error(`webpack.${e} found no module`);Mp.error(o,"Filter:",t)}function nf(e,{topLevelOnly:t=!1}={}){if(typeof e!="function")throw new Error("Invalid filter. Expected a function got "+typeof e);let o=[];for(let r in cc){let n=cc[r];if(!(!n?.loaded||n.exports==null)&&(e(n.exports)&&o.push(n.exports),!(typeof n.exports!="object"||t)))for(let a in n.exports){let s=n.exports[a];s&&e(s)&&o.push(s)}}return o}function SS(...e){let t=sd(...e);return t?vo.m[t]:null}function ln(e,t){return ko(e,t)}function Sue(e,t){return Vo(e,t)}function qn(e,t=!0){return ko(()=>Ni(e))}function P0(...e){let t=Ni(Re.byProps(...e),{isIndirect:!0});return t||Xc("findByProps",...e),t}function Ae(...e){return ko(()=>P0(...e))}function rf(...e){let t=Ni(Re.byCode(...e),{isIndirect:!0});return t||Xc("findByCode",...e),t}function Oe(...e){return ko(()=>rf(...e))}function cZe(){let{Flux:e}=(C(),Jx(tf));e.Store.getAll?.().forEach(t=>ad.set(t.getName(),t));try{let o=rf("libdiscoreWasm is not initialized")();for(let r in o){if(!r.endsWith("Store"))continue;let n=r,a=o[n];ad.set(n,a)}}catch{}}function M0(e){if(ad.has(e)||cZe(),ad.has(e))return ad.get(e);let t=Ni(Re.byStoreName(e),{isIndirect:!0});return t?(ad.set(e,t),t):(Xc("findStore",e),null)}function x3(e){return ko(()=>M0(e))}function v3(...e){let t=Ni(Re.componentByCode(...e),{isIndirect:!0});return t||Xc("findComponentByCode",...e),t}function c1(e){return Vo(()=>{let t=Ni(e,{isIndirect:!0});return t||Xc("findComponent",e),t})}function he(...e){return Vo(()=>{let t=Ni(Re.componentByCode(...e),{isIndirect:!0});return t||Xc("findComponentByCode",...e),t})}function wS(...e){return Vo(()=>{let t=Ni(Re.byProps(...e),{isIndirect:!0});return t||Xc("findExportedComponent",...e),t[e[0]]})}function AS(e,t){let o=Object.values(e),r={};for(let n of t){let a=m3(n);if(r[n]=o.find(s=>typeof s=="string"&&a.test(s)),!r[n])throw new Error(`mapMangledCssClasses: Invalid input. ${n} not found in module`)}return r}function VU(...e){let t=Ni(Re.byClassNames(...e),{isIndirect:!0,topLevelOnly:!0});return t?AS(t,e):(Xc("findCssClasses",...e),{})}function Ie(...e){return ko(()=>VU(...e))}function uZe(e,t){let o=new Set,r=t?Object.getOwnPropertyNames:Object.keys;do r(e).forEach(n=>n!=="__esModule"&&o.add(n)),e=Object.getPrototypeOf(e);while(e!=null);return o}function Qo(e,t,o=!1){return ko(()=>ez(e,t,o))}async function tz(e,t=af){let o=SS(...e);if(!o){let c=new Error("extractAndLoadChunks: Couldn't find module factory");return Mp.warn(c,"Code:",e,"Matcher:",t),!1}let r=String(o).match(xi(t));if(!r){let c=new Error("extractAndLoadChunks: Couldn't find chunk loading in module factory code");return Mp.warn(c,"Code:",e,"Matcher:",t),!1}let[,n,a]=r;if(a==null){let c=new Error("extractAndLoadChunks: Matcher didn't return a capturing group with the chunk ids array or the entry point id");return Mp.warn(c,"Code:",e,"Matcher:",t),!1}let s=Number(a),l=Number.isNaN(s)?a:String(s);if(n){let c=Array.from(n.matchAll(kS)).map(u=>{let p=Number(u[1]);return Number.isNaN(p)?u[1]:String(p)});await Promise.all(c.map(u=>vo.e(u)))}if(vo.m[l]==null){let c=new Error("extractAndLoadChunks: Entry point is not loaded in the module factories, perhaps one of the chunks failed to load");return Mp.warn(c,"Code:",e,"Matcher:",t),!1}return vo(l),!0}function vr(e,t=af){return _l(()=>tz(e,t))}function Zo(e,t,{isIndirect:o=!1}={}){if(typeof e=="string")e=Re.byProps(e);else if(Array.isArray(e))e=Re.byProps(...e);else if(typeof e!="function")throw new Error("filter must be a string, string[] or function, got "+typeof e);if(cc!=null){let[r,n]=Ni(e,{isIndirect:!0,isWaitFor:!0});if(r)return void t(r,n)}E0.set(e,t)}function u1(...e){e=e.map(xi);let t={},o=vo.m;for(let r in o){let n=o[r];yS(n.toString(),e)&&(t[r]=n)}return t}function CS(e){let t=vo.m[e];if(!t)return null;let o=String(t),n="0,"+(o.startsWith("(")?"":"function")+o.slice(o.indexOf("(")),a=` // [EXTRACTED] WebpackModule${String(e)} // WARNING: This module was extracted to be more easily readable. // This module is NOT ACTUALLY USED! This means putting breakpoints will have NO EFFECT!! 0,${n} //# sourceURL=file:///ExtractedWebpackModule${String(e)} `;return(0,eval)(a)}var Mp,vS,of,vo,cc,ad,yS,Re,E0,f3,D0,lZe,xue,Ni,h3,sd,bue,ez,af,kS,le=h(()=>{"use strict";d();d3();Er();A0();He();id();Ta();Mp=new ie("Webpack"),of=new Promise(e=>vS=e),ad=new Map,yS=(e,t)=>t.every(o=>typeof o=="string"?e.includes(o):(o.global&&(o.lastIndex=0),o.test(e)));Re={byProps:(...e)=>e.length===1?t=>t[e[0]]!==void 0:t=>e.every(o=>t[o]!==void 0),byCode:(...e)=>{let t=e.map(xi),o=r=>typeof r!="function"?!1:yS(Function.prototype.toString.call(r),t);return o.$$vencordProps=[...e],o},byStoreName:e=>t=>t.constructor?.displayName===e,componentByCode:(...e)=>{let t=Re.byCode(...e),o=r=>{let n=r;for(;n!=null;){if(t(n))return!0;if(n.$$typeof)if(n.type)n=n.type;else if(n.render)n=n.render;else return!1;else return!1}return!1};return o.$$vencordProps=[...e],o},byClassNames:(...e)=>{let t=e.map(m3);return o=>{if(typeof o!="object")return!1;let r=Object.values(o);return t.every(n=>r.some(a=>typeof a=="string"&&n.test(a)))}}},E0=new Map,f3=new Set,D0=new Set;lZe=Object.getPrototypeOf(Int8Array),xue="is this a proxy that returns values for any key?";Ni=Dp("find",function(t,{isIndirect:o=!1,isWaitFor:r=!1,topLevelOnly:n=!1}={}){if(typeof t!="function")throw new Error("Invalid filter. Expected a function got "+typeof t);for(let a in cc){let s=cc[a];if(!(!s?.loaded||s.exports==null)){if(t(s.exports))return r?[s.exports,a]:s.exports;if(!(typeof s.exports!="object"||n))for(let l in s.exports){let c=s.exports[l];if(c&&t(c))return r?[c,a]:c}}}return o||Xc("find",t),r?[null,null]:null});h3=Dp("findBulk",function(...t){if(!Array.isArray(t))throw new Error("Invalid filters. Expected function[] got "+typeof t);let{length:o}=t;if(o===0)throw new Error("Expected at least two filters.");if(o===1)return Ni(t[0]);let r=t,n=0,a=Array(o);e:for(let s in cc){let l=cc[s];if(!(!l?.loaded||l.exports==null))for(let c=0;c{let a=!0;return r.pending||n({...r,pending:!0}),e().then(s=>{a&&(n({value:s,error:null,pending:!1}),o.onSuccess?.(s))}).catch(s=>{a&&(n({value:o.fallbackValue,error:s,pending:!1}),o.onError?.(s))}),()=>{a=!1}},o.deps),[r.value,r.error,r.pending]}function Vt(e){let t=d1(o=>o+1,0);return e?t:t[1]}function TS({interval:e=1e3,deps:t=[]}){let[o,r]=T(0),n=Ne(()=>Date.now(),t);return G(()=>{let a=setInterval(()=>r(Date.now()-n),e);return()=>{r(0),clearInterval(a)}},t),o}function IS({interval:e=1e3,initialTime:t=Date.now()}){let[o,r]=T(Date.now()-t);return G(()=>{let n=setInterval(()=>r(Date.now()-t),e);return()=>{clearInterval(n)}},[t]),o}function rz(e,t){G(()=>e,t)}var oz,N0,Kt=h(()=>{"use strict";d();C();Be();A0();oz=()=>null;N0=(e=!1)=>{let t=V.useRef(null),[o,r]=T(!1);return[a=>{t.current?.disconnect(),t.current=null,a&&(iz(a)&&(r(!0),e)||(t.current=new IntersectionObserver(s=>{for(let l of s)l.target===a&&(l.isIntersecting&&e?(r(!0),t.current?.disconnect(),t.current=null):r(l.isIntersecting))}),t.current.observe(a)))},o]}});function oa(e,t,o=null){let r=null,n=Vo(()=>{if(r)return r;let a=new Error(`Vencord could not find the ${e} Component`);return dZe.error(a),o});return Zo(t,a=>{r=a,Object.assign(n,a)},{isIndirect:!0}),n}function gt(e,t){Zo(Re.byStoreName(e),t,{isIndirect:!0})}var dZe,az=h(()=>{"use strict";d();He();Kt();le();dZe=new ie("Webpack")});function lz(e){Pr=e}function cz(e){b3=e}function uz(e){DS=e}function dz(e){PS=e}var Ia,vi,ue,pZe,Np,ve,mZe,Te,Ea,qt,Fn,cn,Xa,sz,rr,eo,Js,Vc,Pr,b3,DS,PS,S3,wue,ld,fZe,gZe,ES,hZe,ei,pz,MS,xZe,w3,NS,B0,Hr,ws,A3,Aue=h(()=>{"use strict";d();yt();Tt();xr();hi();We();Je();lc();mue();A0();le();az();Ia={FormTitle:oe,FormText:U,FormSection:"section",FormDivider:Rt},vi=dU,ue=Ep,pZe=KU,Np=oa("Checkbox",Re.componentByCode('"data-toggleable-component":"checkbox')),ve=oa("Tooltip",e=>e.prototype?.shouldShowTooltip&&e.prototype.render,QU),mZe=Dr,Te=oa("TextInput",Re.componentByCode('setHasValue?.(""!==','="text",')),Ea=oa("TextArea",Re.componentByCode("!0,rows:","showRemainingCharacterCount:")),qt=oa("Select",Re.componentByCode('selectionMode:"single",onSelectionChange:',"isSelected:")),Fn=oa("SearchableSelect",Re.componentByCode('?"multiple":"single",required:')),cn=oa("Slider",Re.componentByCode("markDash","this.renderMark(")),Xa=oa("Popout",Re.componentByCode("ref:this.ref,","renderPopout:this.renderPopout,")),sz=oa("Dialog",Re.componentByCode('role:"dialog",tabIndex:-1')),rr=oa("TabBar",Re.componentByCode("ref:this.tabBarRef,className:")),eo=oa("Clickable",Re.componentByCode("this.context?this.renderNonInteractive():")),Js=oa("Avatar",Re.componentByCode(".size-1.375*")),Vc=oa("UserSummaryItem",Re.componentByCode("defaultRenderUser","showDefaultAvatarsForNullUsers")),Pr=()=>null;b3=()=>null;DS=()=>null;Zo(Re.byCode("getScrollerNode:","resizeObserver:","sectionHeight:"),e=>S3=e);wue=["thin","auto","fade"],ld=Ie("thin","auto","fade","customTheme","none"),fZe=Re.byClassNames(...wue),gZe=Re.byClassNames("customTheme"),ES=ln(()=>{let e=Ni(t=>fZe(t)&&!gZe(t),{topLevelOnly:!0});return e?AS(e,wue):{}}),hZe=Vo(()=>PS?.(ld.none,ld.fade,ld.customTheme)),ei=Vo(()=>PS?.(ld.thin,ld.fade,ld.customTheme)),pz=Vo(()=>PS?.(ld.auto,ld.fade,ld.customTheme)),MS=Vo(()=>S3(ES.thin,ES.fade,"",ResizeObserver)),xZe=Vo(()=>S3(ES.auto,ES.fade,"",ResizeObserver)),w3=oa("FocusLock",Re.componentByCode(".containerRef,{keyboardModeEnabled:"));Zo(e=>{if(typeof e!="function")return!1;let t=String(e);return t.includes(".resolve({theme:")&&t.includes('"refresh-fast-follow-avatars"')&&!t.includes("useMemo")},e=>NS=e);B0=oa("MaskedLink",Re.componentByCode("MASKED_LINK)")),Hr=oa("Timestamp",Re.componentByCode("#{intl::MESSAGE_EDITED_TIMESTAMP_A11Y_LABEL}")),ws=oa("OAuth2AuthorizeModal",Re.componentByCode("hasContentBackground","nextStep","onClose?.()")),A3=Qo(".assign({colorNames:",{Transition:Re.componentByCode('["items","children"]',",null,"),animated:Re.byProps("div","text")})});var P,rt,mz=h(()=>{"use strict";d();le();P={};Zo(Re.componentByCode('path:["empty"]'),e=>P.Menu=e);Zo(Re.componentByCode("SLIDER)","handleSize:16"),e=>P.MenuSliderControl=e);Zo(Re.componentByCode(".SEARCH)",".focus()","query:"),e=>P.MenuSearchControl=e);rt=Qo('type:"CONTEXT_MENU_OPEN',{closeContextMenu:Re.byCode("CONTEXT_MENU_CLOSE"),openContextMenu:Re.byCode("renderLazy:"),openContextMenuLazy:e=>typeof e=="function"&&e.toString().length<100})});var be,Dn,tS,vZe,na,ce,Lo,ir,kue=h(()=>{"use strict";d();le();be=wS("Modal"),Dn=wS("ConfirmModal"),tS=Oe("hasMediaOptions","shouldHideMediaOptions"),vZe=Qo(".modalKey?",{openModalLazy:Re.byCode(".modalKey?"),openModal:Re.byCode(",instant:"),closeModal:Re.byCode(".onCloseCallback()"),closeAllModals:Re.byCode(".getState();for")}),{openModalLazy:na,openModal:ce,closeModal:Lo,closeAllModals:ir}=vZe});var V,T,G,Va,Ne,Se,d1,jt,BS,Bi,Cue=h(()=>{"use strict";d();le();BS=Ae("createPortal"),Bi=Oe("(299));",".onRecoverableError");Zo(["createElement","useEffect"],e=>{V=e,{useEffect:G,useState:T,useLayoutEffect:Va,useMemo:Ne,useRef:Se,useReducer:d1,useCallback:jt}=V})});var Tue={};Bt(Tue,{AccessibilityStore:()=>Ul,ActiveJoinedThreadsStore:()=>cf,ApplicationCommandIndexStore:()=>OS,ApplicationStore:()=>Xs,ApplicationStreamPreviewStore:()=>FS,ApplicationStreamingSettingsStore:()=>US,ApplicationStreamingStore:()=>pc,AuthSessionsStore:()=>$S,AuthenticationStore:()=>oi,AuthorizedAppsStore:()=>zS,BasicGuildStore:()=>b1,CallStore:()=>vz,ChannelMemberStore:()=>h1,ChannelRTCStore:()=>cd,ChannelSectionStore:()=>O0,ChannelStore:()=>W,ClientThemesBackgroundStore:()=>f1,CollapsedVoiceChannelStore:()=>GS,ConnectedAccountsStore:()=>g1,DraftStore:()=>lf,DraftType:()=>yo,EditMessageStore:()=>m1,EmojiStore:()=>ar,ExpandedGuildFolderStore:()=>tu,ExperimentStore:()=>R0,Flux:()=>yi,FriendsStore:()=>yz,GuildAvailabilityStore:()=>F0,GuildChannelStore:()=>Da,GuildMemberCountStore:()=>p1,GuildMemberStore:()=>bt,GuildRoleStore:()=>To,GuildScheduledEventStore:()=>fz,GuildStore:()=>$e,InstantInviteStore:()=>bz,InviteStore:()=>Sz,JoinedThreadsStore:()=>_S,LocaleStore:()=>RS,MediaEngineStore:()=>$o,MessageStore:()=>lt,NotificationSettingsStore:()=>hz,OverridePremiumTypeStore:()=>es,PendingReplyStore:()=>Pa,PermissionStore:()=>ht,PopoutWindowStore:()=>ks,PresenceStore:()=>Yo,PrivateChannelSortStore:()=>L0,QuestStore:()=>kn,RTCConnectionStore:()=>wz,ReadStateStore:()=>ti,ReferencedMessageStore:()=>HS,RelationshipStore:()=>qe,RunningGameStore:()=>uc,SafetyHubStore:()=>df,SelectedChannelStore:()=>Fe,SelectedGuildStore:()=>ao,SessionsStore:()=>v1,SortedGuildStore:()=>jr,SoundboardStore:()=>LS,SpellCheckStore:()=>xz,SpotifyStore:()=>gz,StickersStore:()=>ra,StreamerModeStore:()=>zl,ThemeStore:()=>sf,ThreadMemberListStore:()=>x1,TypingStore:()=>As,UploadAttachmentStore:()=>el,UserAffinitiesStore:()=>uf,UserGuildJoinRequestStore:()=>y1,UserGuildSettingsStore:()=>sr,UserProfileSettingsStore:()=>eu,UserProfileStore:()=>Co,UserSettingsProtoStore:()=>dc,UserStore:()=>L,VoiceStateStore:()=>Et,WindowStore:()=>Vs,useStateFromStores:()=>ye});var yi,yo,lt,ht,Da,ti,Yo,Ul,Pa,$e,To,fz,p1,bt,L,oi,Xs,Co,Fe,ao,W,As,qe,Et,ar,ra,sf,Vs,lf,zl,gz,$o,hz,xz,el,es,uc,cf,sr,dc,vz,cd,yz,bz,Sz,RS,wz,LS,ks,OS,m1,kn,R0,uf,pc,FS,jr,_S,df,L0,US,eu,zS,O0,tu,$S,f1,g1,h1,x1,GS,HS,v1,F0,y1,b1,ye,Az=h(()=>{"use strict";d();le();az();yi=Ae("connectStores"),yo=Ae("ChannelMessage","SlashCommand"),ye=Oe("useStateFromStores");gt("AccessibilityStore",e=>Ul=e);gt("ApplicationStore",e=>Xs=e);gt("AuthenticationStore",e=>oi=e);gt("DraftStore",e=>lf=e);gt("UserStore",e=>L=e);gt("UserProfileStore",e=>Co=e);gt("ChannelStore",e=>W=e);gt("SelectedChannelStore",e=>Fe=e);gt("SelectedGuildStore",e=>ao=e);gt("GuildStore",e=>$e=e);gt("GuildMemberStore",e=>bt=e);gt("RelationshipStore",e=>qe=e);gt("MediaEngineStore",e=>$o=e);gt("NotificationSettingsStore",e=>hz=e);gt("SpellcheckStore",e=>xz=e);gt("PermissionStore",e=>ht=e);gt("PresenceStore",e=>Yo=e);gt("ReadStateStore",e=>ti=e);gt("GuildChannelStore",e=>Da=e);gt("GuildRoleStore",e=>To=e);gt("GuildScheduledEventStore",e=>fz=e);gt("GuildMemberCountStore",e=>p1=e);gt("MessageStore",e=>lt=e);gt("WindowStore",e=>Vs=e);gt("EmojiStore",e=>ar=e);gt("StickersStore",e=>ra=e);gt("TypingStore",e=>As=e);gt("VoiceStateStore",e=>Et=e);gt("StreamerModeStore",e=>zl=e);gt("SpotifyStore",e=>gz=e);gt("OverridePremiumTypeStore",e=>es=e);gt("UploadAttachmentStore",e=>el=e);gt("RunningGameStore",e=>uc=e);gt("ActiveJoinedThreadsStore",e=>cf=e);gt("UserGuildSettingsStore",e=>sr=e);gt("UserSettingsProtoStore",e=>dc=e);gt("CallStore",e=>vz=e);gt("ChannelRTCStore",e=>cd=e);gt("FriendsStore",e=>yz=e);gt("InstantInviteStore",e=>bz=e);gt("InviteStore",e=>Sz=e);gt("LocaleStore",e=>RS=e);gt("RTCConnectionStore",e=>wz=e);gt("SoundboardStore",e=>LS=e);gt("PopoutWindowStore",e=>ks=e);gt("PendingReplyStore",e=>Pa=e);gt("ApplicationCommandIndexStore",e=>OS=e);gt("EditMessageStore",e=>m1=e);gt("ExperimentStore",e=>R0=e);gt("QuestStore",e=>kn=e);gt("UserAffinitiesV2Store",e=>uf=e);gt("ApplicationStreamingStore",e=>pc=e);gt("ApplicationStreamPreviewStore",e=>FS=e);gt("SortedGuildStore",e=>jr=e);gt("JoinedThreadsStore",e=>_S=e);gt("SafetyHubStore",e=>df=e);gt("PrivateChannelSortStore",e=>L0=e);gt("ApplicationStreamingSettingsStore",e=>US=e);gt("UserProfileSettingsStore",e=>eu=e);gt("AuthorizedAppsStore",e=>zS=e);gt("ChannelSectionStore",e=>O0=e);gt("ExpandedGuildFolderStore",e=>tu=e);gt("AuthSessionsStore",e=>$S=e);gt("ClientThemesBackgroundStore",e=>f1=e);gt("ConnectedAccountsStore",e=>g1=e);gt("ChannelMemberStore",e=>h1=e);gt("ThreadMemberListStore",e=>x1=e);gt("CollapsedVoiceChannelStore",e=>GS=e);gt("ReferencedMessageStore",e=>HS=e);gt("SessionsStore",e=>v1=e);gt("GuildAvailabilityStore",e=>F0=e);gt("UserGuildJoinRequestStore",e=>y1=e);gt("BasicGuildStore",e=>b1=e);gt("ThemeStore",e=>{sf=e,Vencord.Api.Themes.initQuickCssThemeStore(e)})});var ba,Iue=h(()=>{"use strict";d();le();ba={FrecencyUserSettingsActionCreators:qn(e=>e.ProtoClass?.typeName?.endsWith(".FrecencyUserSettings")),PreloadedUserSettingsActionCreators:qn(e=>e.ProtoClass?.typeName?.endsWith(".PreloadedUserSettings"))}});function Pue(e,t,o){return{message:e,id:D.genId(),type:t,options:o}}function ne(e,t=Due.MESSAGE,o){D.show(D.create(e,t,o))}var Q,sc,Gt,mt,bi,pf,ud,k3,yZe,ia,Zm,en,kt,Oo,Due,bZe,Eue,D,Xi,Ma,Mr,Ri,Yt,Li,un,ct,Cs,_0,fo,C3,oS,gU,Sa,_n,T3,S1,SZe,U0,at,kz,wZe,w1,dd,mf,Cz,AZe,pd,jS,kZe,ou,CZe,I3,TZe,E3=h(()=>{"use strict";d();le();Zo(["dispatch","subscribe"],e=>{Q=e,Vencord.Api.PluginManager.subscribeAllPluginsFluxEvents(e);let t=()=>{e.unsubscribe("CONNECTION_OPEN",t),vS()};e.subscribe("CONNECTION_OPEN",t)});Zo(["dispatchToLastSubscribed"],e=>sc=e);Gt=Qo('ME:"/users/@me"',{Endpoints:Re.byProps("USER","ME"),UserFlags:Re.byProps("STAFF","SPAMMER"),FriendsSections:e=>e.PENDING==="PENDING"&&e.ADD_FRIEND}),mt=qn(e=>typeof e=="object"&&e.del&&e.put),bi=Ae("parseTwoDigitYear"),pf=Oe("useDrag::spec.begin was deprecated"),ud=Oe(".disconnectDropTarget()",".dropTargetOptions="),{match:k3,P:yZe}=Qo("@ts-pattern/matcher",{match:Re.byCode("return new"),P:Re.byProps("when")}),ia=Ae("debounce","cloneDeep"),Zm=Qo(['defaultLocale:"en-US"',/initialLocale:\i/],{t:e=>e?.[Symbol.toStringTag]==="IntlMessagesProxy",intl:e=>e!=null&&Object.getPrototypeOf(e)?.withFormatters!=null},!0);Zo(["fromTimestamp","extractTimestamp"],e=>en=e);Zo("parseTopic",e=>kt=e);Zo(["show","close"],e=>Oo=e);Due={MESSAGE:"message",SUCCESS:"success",FAILURE:"failure",CUSTOM:"custom",CLIP:"clip",LINK:"link",FORWARD:"forward",BOOKMARK:"bookmark",CLOCK:"clock"},bZe={TOP:0,BOTTOM:1},Eue=Qo(".currentToastMap.has(",{showToast:Re.byCode(".currentToastMap.has("),popToast:Re.byCode(".delete(")});D={Type:Due,Position:bZe,genId:()=>(Math.random()||Math.random()).toString(36).slice(2),show:Eue.showToast,pop:Eue.popToast,create:Pue};Xi={getUser:Oe(".USER(")},Ma=Ae("clearAll","addFile"),Mr={promptToUpload:Oe("Unexpected mismatch between files and file metadata")},Ri=Qo("getAssetImage: size must === [",{fetchAssetIds:Re.byCode('.startsWith("http:")',".dispatch({"),getAssetFromImageURL:Re.byCode("].serialize(",":null"),getAssetImage:Re.byCode("getAssetImage: size must === ["),getAssets:Re.byCode(".assets")}),Yt=Qo("transitionTo - Transitioning to",{transitionTo:Re.byCode("transitionTo -"),transitionToGuild:Re.byCode("transitionToGuild -"),back:Re.byCode("goBack()"),forward:Re.byCode("goForward()")}),Li=Qo('"Thread must have a parent ID."',{transitionToChannel:Re.byCode(".preload"),transitionToThread:Re.byCode('"Thread must have a parent ID."')});Zo(["openUserSettings","USER_SETTINGS_MODAL_KEY"],e=>un=e);ct=qn(e=>typeof e.ADMINISTRATOR=="bigint"),{zustandCreate:Cs}=Qo(["useSyncExternalStoreWithSelector:","Object.assign"],{zustandCreate:Re.byCode(/=>(\i)\?\i\(\1/)}),{zustandPersist:_0}=Qo(".onRehydrateStorage)?",{zustandPersist:Re.byCode(/(\(\i,\i\))=>.+?\i\1/)}),fo=Ae("editMessage","sendMessage"),C3=Ae("clearCache","_channelMessages"),oS=Ae("openUserProfileModal","closeUserProfileModal"),gU=Ae("resolveInvite"),Sa=Ae("openPrivateChannel"),_n=Ae("toggleSelfMute"),T3=Ae("setServerMute","setServerDeaf"),S1=Ae("selectChannel","selectVoiceChannel"),SZe=Ae("saveDraft","changeDraft"),U0=Ae("pinMessage","unpinMessage"),at=Ae("getGuildBannerURL","getUserAvatarURL"),kz=Qo("Invalid hex color format",{rgbToHex:Re.byCode(".toString(16).slice(1)"),hexToRgba:Re.byCode("`rgba(${"),hexToRgb:Re.byCode(".rgb();return"),rgbToHsl:Re.byCode("saturation:","lightness:"),mixColors:Re.byCode(".substring(1,3),16)"),hexWithAlpha:Re.byCode("Invalid hex color format"),getDominantColor:Re.byCode("hex:","hsv:"),generatePalette:Re.byCode("360/(")}),wZe=Qo("Input data is not a valid image.",{extractColors:Re.byCode('"number"==typeof'),fileToDataURL:Re.byCode("Result must be a string"),dataURLToBlob:Re.byCode("new Uint8Array("),dataURLToFile:Re.byCode("new File(["),fitDimensions:Re.byCode("minWidth:","minHeight:"),loadImage:Re.byCode('addEventListener("load"'),isAnimatedPNG:Re.byCode("File is not a PNG"),base64Size:Re.byCode("Input data is not a valid image.")}),w1=Qo('type:"ENABLE_AUTOMATIC_ACK",',{ackChannel:Re.byCode(".isForumLikeChannel(")}),dd=Qo("expression-picker-last-active-view",{openExpressionPicker:Re.byCode(/setState\({activeView:(?:(?!null)\i),activeViewType:/),closeExpressionPicker:Re.byCode("setState({activeView:null"),toggleMultiExpressionPicker:Re.byCode(".EMOJI,"),toggleExpressionPicker:Re.byCode(/\i\.activeView===\i&&\i\.activeViewType===\i&&/),setExpressionPickerView:Re.byCode(/setState\({activeView:\i,lastActiveView:/),setSearchQuery:Re.byCode("searchQuery:"),useExpressionPickerStore:Re.byCode(/\(\i,\i=\i\)=>/)}),mf=Qo('type:"POPOUT_WINDOW_OPEN"',{open:Re.byCode('type:"POPOUT_WINDOW_OPEN"'),close:Re.byCode('type:"POPOUT_WINDOW_CLOSE"'),setAlwaysOnTop:Re.byCode('type:"POPOUT_WINDOW_SET_ALWAYS_ON_TOP"')}),Cz=Ae("useName","getGlobalName"),AZe=Qo(/=\i\.getUserProfile\(\i\),\i=\i\.getGuildMemberProfile\(/,{getDisplayProfile:Re.byCode(".getGuildMemberProfile("),useDisplayProfile:Re.byCode(/\[\i\.\i,\i\.\i],\(\)=>/)}),pd=Qo("millisecondsInUnit:",{calendarFormat:Re.byCode('<-1?"sameElse":'),dateFormat:Re.byCode('<2?"nextDay":"sameElse";'),isSameDay:Re.byCode(/Math\.abs\(\i-\i\)/),diffAsUnits:Re.byCode("days:0","millisecondsInUnit")}),jS=Ae("REPLYABLE","FORWARDABLE"),kZe=Oe('"Invalid Origin"',".application"),ou=qn(e=>e.prototype?.trackUploadFinished),CZe=Ae("URL_REGEX","makeUrl","isDiscordUrl"),I3=Ae("filesize","relativeTime","ordinal"),TZe=Ae("getEmojiColors","getURL")});var tf={};Bt(tf,{AccessibilityStore:()=>Ul,ActiveJoinedThreadsStore:()=>cf,Alerts:()=>Oo,Animations:()=>A3,ApplicationAssetUtils:()=>Ri,ApplicationCommandIndexStore:()=>OS,ApplicationStore:()=>Xs,ApplicationStreamPreviewStore:()=>FS,ApplicationStreamingSettingsStore:()=>US,ApplicationStreamingStore:()=>pc,AuthSessionsStore:()=>$S,AuthenticationStore:()=>oi,AuthorizedAppsStore:()=>zS,Avatar:()=>Js,BasicGuildStore:()=>b1,Button:()=>ue,CallStore:()=>vz,ChannelActionCreators:()=>Sa,ChannelActions:()=>S1,ChannelMemberStore:()=>h1,ChannelRTCStore:()=>cd,ChannelRouter:()=>Li,ChannelSectionStore:()=>O0,ChannelStore:()=>W,Checkbox:()=>Np,Clickable:()=>eo,ClientThemesBackgroundStore:()=>f1,CloudUploader:()=>ou,CollapsedVoiceChannelStore:()=>GS,ColorPicker:()=>Pr,ColorUtils:()=>kz,ComponentDispatch:()=>sc,ConfirmModal:()=>Dn,ConnectedAccountsStore:()=>g1,Constants:()=>Gt,ContextMenuApi:()=>rt,DateUtils:()=>pd,Dialog:()=>sz,DisplayProfileUtils:()=>AZe,DraftActions:()=>SZe,DraftStore:()=>lf,DraftType:()=>yo,EditMessageStore:()=>m1,EmojiStore:()=>ar,EmojiUtils:()=>TZe,ExpandedGuildFolderStore:()=>tu,ExperimentStore:()=>R0,ExpressionPickerStore:()=>dd,Flux:()=>yi,FluxDispatcher:()=>Q,FocusLock:()=>w3,Forms:()=>Ia,FriendsStore:()=>yz,GuildActions:()=>T3,GuildAvailabilityStore:()=>F0,GuildChannelStore:()=>Da,GuildMemberCountStore:()=>p1,GuildMemberStore:()=>bt,GuildRoleStore:()=>To,GuildScheduledEventStore:()=>fz,GuildStore:()=>$e,Humanize:()=>I3,IconUtils:()=>at,ImageUtils:()=>wZe,InstantInviteStore:()=>bz,InviteActions:()=>gU,InviteStore:()=>Sz,JoinedThreadsStore:()=>_S,ListScrollerAuto:()=>xZe,ListScrollerThin:()=>MS,LocaleStore:()=>RS,MaskedLink:()=>B0,MediaEngineStore:()=>$o,Menu:()=>P,MessageActions:()=>fo,MessageCache:()=>C3,MessageStore:()=>lt,MessageTypeSets:()=>jS,Modal:()=>be,NavigationRouter:()=>Yt,NewCustomizationSection:()=>DS,NotificationSettingsStore:()=>hz,OAuth2AuthorizeModal:()=>ws,OverridePremiumTypeStore:()=>es,P:()=>yZe,Parser:()=>kt,PendingReplyStore:()=>Pa,PermissionStore:()=>ht,PermissionsBits:()=>ct,PinActions:()=>U0,Popout:()=>Xa,PopoutActions:()=>mf,PopoutWindowStore:()=>ks,PresenceStore:()=>Yo,PrivateChannelSortStore:()=>L0,QuestStore:()=>kn,RTCConnectionStore:()=>wz,React:()=>V,ReactDOM:()=>BS,ReadStateStore:()=>ti,ReadStateUtils:()=>w1,ReferencedMessageStore:()=>HS,RelationshipStore:()=>qe,RestAPI:()=>mt,RoleMemberPopout:()=>b3,RunningGameStore:()=>uc,SafetyHubStore:()=>df,ScrollerAuto:()=>pz,ScrollerNone:()=>hZe,ScrollerThin:()=>ei,SearchableSelect:()=>Fn,Select:()=>qt,SelectedChannelStore:()=>Fe,SelectedGuildStore:()=>ao,SessionsStore:()=>v1,SettingsRouter:()=>un,Slider:()=>cn,SnowflakeUtils:()=>en,SortedGuildStore:()=>jr,SoundboardStore:()=>LS,SpellCheckStore:()=>xz,SpotifyStore:()=>gz,StickersStore:()=>ra,StreamerModeStore:()=>zl,Switch:()=>pZe,TabBar:()=>rr,Text:()=>vi,TextArea:()=>Ea,TextInput:()=>Te,ThemeStore:()=>sf,ThreadMemberListStore:()=>x1,Timestamp:()=>Hr,Toasts:()=>D,Tooltip:()=>ve,TooltipContainer:()=>mZe,TypingStore:()=>As,URLUtils:()=>CZe,UploadAttachmentStore:()=>el,UploadHandler:()=>Mr,UploadManager:()=>Ma,UserAffinitiesStore:()=>uf,UserGuildJoinRequestStore:()=>y1,UserGuildSettingsStore:()=>sr,UserProfileActions:()=>oS,UserProfileSettingsStore:()=>eu,UserProfileStore:()=>Co,UserSettingsActionCreators:()=>ba,UserSettingsProtoStore:()=>dc,UserStore:()=>L,UserSummaryItem:()=>Vc,UserUtils:()=>Xi,UsernameUtils:()=>Cz,VoiceActions:()=>_n,VoiceStateStore:()=>Et,WindowStore:()=>Vs,closeAllModals:()=>ir,closeModal:()=>Lo,createListScroller:()=>S3,createRoot:()=>Bi,createScroller:()=>PS,createToast:()=>Pue,fetchApplicationsRPC:()=>kZe,i18n:()=>Zm,listScrollerClasses:()=>ES,lodash:()=>ia,match:()=>k3,moment:()=>bi,openMediaModal:()=>tS,openModal:()=>ce,openModalLazy:()=>na,scrollerClasses:()=>ld,setColorPicker:()=>lz,setCreateScroller:()=>dz,setNewCustomizationSection:()=>uz,setRoleMemberPopout:()=>cz,showToast:()=>ne,useCallback:()=>jt,useDrag:()=>pf,useDrop:()=>ud,useEffect:()=>G,useLayoutEffect:()=>Va,useMemo:()=>Ne,useReducer:()=>d1,useRef:()=>Se,useState:()=>T,useStateFromStores:()=>ye,useToken:()=>NS,zustandCreate:()=>Cs,zustandPersist:()=>_0});var C=h(()=>{"use strict";d();Aue();mz();kue();Cue();Az();Iue();E3()});var IZe,md,mc,z0,D3,Tz,Iz,P3,qS,Ez,Dz,$0,Pz,A1,M3,Mz,Nz,EZe,Mue,Bz,Rz,G0,DZe,PZe,Lz,$l,Go,WS,MZe,b,F,ff,gf,O=h(()=>{"use strict";d();IZe="Vencord.Webpack.Common.React",md="1297590739911573585",mc="1173279886065029291",z0="1173316879083896912",D3="1222677964760682556",Tz="1173520023239786538",Iz="1326406112144265257",P3="1173343399470964856",qS="1243063117852835941",Ez="1466558228379992266",Dz="1026515880080842772",$0="1015060230222131221",Pz="1017176847865352332",A1="1042507929485586532",M3="1026534353167208489",Mz="1026504932959977532",Nz="1108135649699180705",EZe="1257025907625951423",Mue="1345457031426871417",Bz=[Dz,Mue],Rz=[mc,$0],G0=[md,Dz],DZe=[z0,A1],PZe=[D3,P3,M3],Lz=navigator.platform.toLowerCase(),$l=Lz.startsWith("win"),Go=Lz.startsWith("mac"),WS=Lz.startsWith("linux"),MZe=navigator.userAgent.includes("Mobi"),b=Object.freeze({Ven:{name:"V",id:343383572805058560n},Apexo:{name:"Apexo",id:228548952687902720n},Arjix:{name:"ArjixWasTaken",id:674710789138939916n,badge:!1},Cyn:{name:"Cynosphere",id:150745989836308480n},Trwy:{name:"trey",id:354427199023218689n},Megu:{name:"Megumin",id:545581357812678656n},botato:{name:"botato",id:440990343899643943n},fawn:{name:"fawn",id:336678828233588736n},rushii:{name:"rushii",id:295190422244950017n},Glitch:{name:"Glitchy",id:269567451199569920n},Samu:{name:"Samu",id:702973430449832038n},Nyako:{name:"nyako",id:118437263754395652n},MaiKokain:{name:"Mai",id:722647978577363026n},amy:{name:"Amy",id:603229858612510720n},katlyn:{name:"katlyn",id:250322741406859265n},nea:{name:"nea",id:310702108997320705n},Nuckyz:{name:"Nuckyz",id:235834946571337729n},D3SOX:{name:"D3SOX",id:201052085641281538n},Nickyux:{name:"Nickyux",id:427146305651998721n},mantikafasi:{name:"mantikafasi",id:287555395151593473n},Xinto:{name:"Xinto",id:423915768191647755n},JacobTm:{name:"Jacob.Tm",id:302872992097107991n},DustyAngel47:{name:"DustyAngel47",id:714583473804935238n},BanTheNons:{name:"BanTheNons",id:460478012794863637n},BigDuck:{name:"BigDuck",id:1024588272623681609n},AverageReactEnjoyer:{name:"Average React Enjoyer",id:1004904120056029256n},adryd:{name:"adryd",id:0n},Tyman:{name:"Tyman",id:487443883127472129n},afn:{name:"afn",id:420043923822608384n},KraXen72:{name:"KraXen72",id:379304073515499530n},kemo:{name:"kemo",id:715746190813298788n},Ducko:{name:"Ducko",id:506482395269169153n},jewdev:{name:"jewdev",id:222369866529636353n},Luna:{name:"Luny",id:821472922140803112n},Vap:{name:"Vap0r1ze",id:454072114492866560n},KingFish:{name:"King Fish",id:499400512559382538n},Commandtechno:{name:"Commandtechno",id:296776625432035328n},TheSun:{name:"sunnie",id:406028027768733696n},rae:{name:"rae",id:1398136199503282277n},pointy:{name:"pointy",id:99914384989519872n},SammCheese:{name:"Samm-Cheese",id:372148345894076416n},zt:{name:"zt",id:289556910426816513n},captain:{name:"Captain",id:347366054806159360n},nick:{name:"nick",id:347884694408265729n,badge:!1},whqwert:{name:"whqwert",id:586239091520176128n},lewisakura:{name:"lewisakura",id:96269247411400704n},RuiNtD:{name:"RuiNtD",id:157917665162297344n},hunt:{name:"hunt-g",id:222800179697287168n},cloudburst:{name:"cloudburst",id:892128204150685769n},Aria:{name:"Syncxv",id:549244932213309442n},TheKodeToad:{name:"TheKodeToad",id:706152404072267788n},LordElias:{name:"LordElias",id:319460781567639554n},juby:{name:"Juby210",id:324622488644616195n},Alyxia:{name:"Alyxia Sother",id:952185386350829688n},Remty:{name:"Remty",id:335055032204656642n},skyevg:{name:"skyevg",id:1090310844283363348n},Dziurwa:{name:"Dziurwa",id:1001086404203389018n},arHSM:{name:"arHSM",id:841509053422632990n},AutumnVN:{name:"AutumnVN",id:393694671383166998n},pylix:{name:"pylix",id:492949202121261067n},Tyler:{name:"\\\\GGTyler\\\\",id:143117463788191746n},RyanCaoDev:{name:"RyanCaoDev",id:952235800110694471n},FieryFlames:{name:"Fiery",id:890228870559698955n},KannaDev:{name:"Kanna",id:317728561106518019n},carince:{name:"carince",id:818323528755314698n},PandaNinjas:{name:"PandaNinjas",id:455128749071925248n},CatNoir:{name:"CatNoir",id:260371016348336128n},outfoxxed:{name:"outfoxxed",id:837425748435796060n},UwUDev:{name:"UwU",id:691413039156690994n},amia:{name:"amia",id:142007603549962240n},phil:{name:"phil",id:305288513941667851n},ImLvna:{name:"lillith <3",id:799319081723232267n},rad:{name:"rad",id:610945092504780823n},AndrewDLO:{name:"Andrew-DLO",id:434135504792059917n},HypedDomi:{name:"HypedDomi",id:354191516979429376n},Rini:{name:"rini",id:0n},castdrian:{name:"castdrian",id:224617799434108928n},Arrow:{name:"arrow",id:958158495302176778n},bb010g:{name:"bb010g",id:72791153467990016n},Dolfies:{name:"Dolfies",id:852892297661906993n},RuukuLada:{name:"RuukuLada",id:119705748346241027n},blahajZip:{name:"blahaj.zip",id:683954422241427471n},archeruwu:{name:"archer_uwu",id:160068695383736320n},ProffDea:{name:"ProffDea",id:609329952180928513n},UlyssesZhan:{name:"UlyssesZhan",id:586808226058862623n},ant0n:{name:"ant0n",id:145224646868860928n},Board:{name:"BoardTM",id:285475344817848320n},philipbry:{name:"philipbry",id:554994003318276106n},Korbo:{name:"Korbo",id:455856406420258827n},maisymoe:{name:"maisy",id:257109471589957632n},Lexi:{name:"Lexi",id:506101469787717658n},Mopi:{name:"Mopi",id:1022189106614243350n},Grzesiek11:{name:"Grzesiek11",id:368475654662127616n},Samwich:{name:"Samwich",id:976176454511509554n},coolelectronics:{name:"coolelectronics",id:696392247205298207n},Av32000:{name:"Av32000",id:593436735380127770n},Noxillio:{name:"Noxillio",id:138616536502894592n},Kyuuhachi:{name:"Kyuuhachi",id:236588665420251137n},nin0dev:{name:"nin0dev",id:1395533040914141235n},Elvyra:{name:"Elvyra",id:708275751816003615n},HappyEnderman:{name:"Happy enderman",id:1083437693347827764n},Vishnya:{name:"Vishnya",id:282541644484575233n},Inbestigator:{name:"Inbestigator",id:761777382041714690n},newwares:{name:"newwares",id:421405303951851520n},JohnyTheCarrot:{name:"JohnyTheCarrot",id:132819036282159104n},puv:{name:"puv",id:469441552251355137n},IcedMarina:{name:"icedmarina",id:594406131670188042n},nakoyasha:{name:"nakoyasha",id:222069018507345921n},Sqaaakoi:{name:"Sqaaakoi",id:259558259491340288n},iamme:{name:"i am me",id:984392761929256980n},Byeoon:{name:"byeoon",id:495683688474869781n},Kaitlyn:{name:"kaitlyn",id:306158896630988801n},PolisanTheEasyNick:{name:"Oleh Polisan",id:242305263313485825n},HAHALOSAH:{name:"HAHALOSAH",id:903418691268513883n},GabiRP:{name:"GabiRP",id:507955112027750401n},ImBanana:{name:"Im_Banana",id:635250116688871425n},xocherry:{name:"xocherry",id:221288171013406720n},ScattrdBlade:{name:"ScattrdBlade",id:678007540608532491n},goodbee:{name:"goodbee",id:658968552606400512n},Moxxie:{name:"Moxxie",id:712653921692155965n},Ethan:{name:"Ethan",id:721717126523781240n},nyx:{name:"verticalsync.",id:1207087393929171095n},nekohaxx:{name:"nekohaxx",id:1176270221628153886n},Antti:{name:"Antti",id:312974985876471810n},Joona:{name:"Joona",id:297410829589020673n},sadan:{name:"sadan",id:521819891141967883n},Kylie:{name:"Cookie",id:721853658941227088n},AshtonMemer:{name:"AshtonMemer",id:373657230530052099n},surgedevs:{name:"Chloe",id:1084592643784331324n},Lumap:{name:"Lumap",id:585278686291427338n},Obsidian:{name:"Obsidian",id:683171006717755446n},SerStars:{name:"SerStars",id:861631850681729045n},niko:{name:"niko",id:341377368075796483n},relitrix:{name:"Relitrix",id:423165393901715456n},RamziAH:{name:"RamziAH",id:1279957227612147747n},ThaUnknown:{name:"ThaUnknown_",id:252390917665718273n},SomeAspy:{name:"SomeAspy",id:516750892372852754n},jamesbt365:{name:"jamesbt365",id:158567567487795200n},Darxoon:{name:"Darxoon",id:409745838898937866n},samsam:{name:"samsam",id:400482410279469056n},Cootshk:{name:"Cootshk",id:921605971577548820n},koish1:{name:"koish1",id:291089948709486593n,badge:!1},thororen:{name:"thororen",id:848339671629299742n},alfred:{name:"alfred",id:1038466644353232967n},vv:{name:"VV",id:254866377087778816n},u32:{name:"u32",id:1063237286818488351n},prism:{name:"prism",id:390884143749136386n},creations:{name:"creations",id:209830981060788225n},nightmaresan:{name:"NightmareSan",id:304239816466235392n},angelcube:{name:"angelcube",id:958505257288208446n},Lunascape:{name:"Lunascape",id:383365021415243776n},paige:{name:"paige",id:1375697625864601650n},jax:{name:"jax",id:1493703027801194598n},yuna0x0:{name:"yuna0x0",id:213656926414831616n},Davri:{name:"Davri",id:457579346282938368n}}),F=Object.freeze({nobody:{name:"nobody",id:0n},thororen:{name:"thororen",id:848339671629299742n},dotdas:{name:"dotdas",id:353229259482857475n},nyx:{name:"verticalsync",id:1207087393929171095n},Cortex:{name:"Cortex",id:913205935319691335n},KrystalSkull:{name:"krystalskullofficial",id:929208515883569182n},Naibuu:{name:"hs50",id:1120045713867423835n},Ven:{name:"Vee",id:343383572805058560n},nexpid:{name:"Nexpid",id:853550207039832084n},FoxStorm1:{name:"FoxStorm1",id:789872551731527690n},camila314:{name:"camila314",id:738592270617542716n},nickwoah:{name:"nickwoah",id:644298972420374528n},Wolfie:{name:"wolfieeeeeeee",id:347096063569559553n},ryan:{name:"ryan",id:479403382994632704n},MrDiamond:{name:"MrDiamond",id:523338295644782592n},Fres:{name:"fres",id:843448897737064448n},Dams:{name:"Dams",id:769939285792653325n},KawaiianPizza:{name:"KawaiianPizza",id:501000986735673347n},Perny:{name:"Perny",id:1101508982570504244n},Jaxx:{name:"Jaxx",id:901016640253227059n},Balaclava:{name:"Balaclava",id:854886148455399436n},tt:{name:"_.tt",id:497966466617049089n},dat_insanity:{name:"dat_insanity",id:0n},coolesding:{name:"cooles",id:406084422308331522n},SerStars:{name:"SerStars",id:861631850681729045n},MaxHerbold:{name:"MaxHerbold",id:1189527130611138663n},Combatmaster:{name:"Combatmaster331",id:790562534503612437n},Megal:{name:"Megal",id:387790666484285441n},Synth:{name:"synthxcx",id:1116836557396119613n},Hanzy:{name:"hanzydev",id:1093131781043126322n},zoodogood:{name:"zoodogood",id:921403577539387454n},Drag:{name:"dragalt_",id:1189903210564038697n},bhop:{name:"femeie",id:442626774841556992n},Panniku:{name:"Panniku",id:703634705152606318n},Tolgchu:{name:"\u2728Tolgchu\u2728",id:329671025312923648n},DaBluLite:{name:"DaBluLite",id:582170007505731594n},meowabyte:{name:"meowabyte",id:105170831130234880n},Fafa:{name:"Fafa",id:428188716641812481n},Colorman:{name:"colorman",id:298842558610800650n},walrus:{name:"walrus",id:305317288775778306n},Prince527:{name:"Prince527",id:364105797162237952n},ThePirateStoner:{name:"ThePirateStoner",id:1196220620376121381n},Sampath:{name:"Sampath",id:984015688807100419n},catcraft:{name:"catcraft",id:290162449213292546n},ShadyGoat:{name:"Shady Goat",id:376079696489742338n},Joona:{name:"Joona",id:297410829589020673n},SimplyData:{name:"SimplyData",id:301494563514613762n},keifufu:{name:"keifufu",id:469588398110146590n},Blackilykat:{name:"Blackilykat",id:442033332952498177n},niko:{name:"niko",id:341377368075796483n},sadan:{name:"sadan",id:521819891141967883n},x3rt:{name:"x3rt",id:131602100332396544n},Hen:{name:"Hen",id:279266228151779329n},Crxa:{name:"Crxa",id:711604934201704469n},vmohammad:{name:"vMohammad",id:840854894881538079n},SpikeHD:{name:"SpikeHD",id:221757857836564485n},bep:{name:"bep",id:0n},llytz:{name:"llytz",id:1271128098301022240n},nin0dev:{name:"nin0",id:1395533040914141235n},D3SOX:{name:"D3SOX",id:201052085641281538n},newwares:{name:"newwares",id:421405303951851520n},Kyuuhachi:{name:"Kyuuhachi",id:236588665420251137n},ImLvna:{name:"lillith <3",id:799319081723232267n},AutumnVN:{name:"AutumnVN",id:393694671383166998n},Arjix:{name:"ArjixWasTaken",id:674710789138939916n,badge:!1},Inbestigator:{name:"Inbestigator",id:761777382041714690n},Sqaaakoi:{name:"Sqaaakoi",id:259558259491340288n},Samwich:{name:"Samwich",id:976176454511509554n},TheSun:{name:"sunnie",id:406028027768733696n},TheKodeToad:{name:"TheKodeToad",id:706152404072267788n},Nickyux:{name:"Nickyux",id:427146305651998721n},Ethan:{name:"Ethan",id:721717126523781240n},castdrian:{name:"castdrian",id:224617799434108928n},amy:{name:"Amy",id:603229858612510720n},RyanCaoDev:{name:"RyanCaoDev",id:952235800110694471n},HypedDomi:{name:"HypedDomi",id:354191516979429376n},Grzesiek11:{name:"Grzesiek11",id:368475654662127616n},Aria:{name:"Syncxv",id:549244932213309442n},ProffDea:{name:"ProffDea",id:609329952180928513n},HappyEnderman:{name:"Happy enderman",id:1083437693347827764n},Nyako:{name:"nyako",id:118437263754395652n},ant0n:{name:"ant0n",id:145224646868860928n},MaiKokain:{name:"Mai",id:722647978577363026n},Korbo:{name:"Korbo",id:455856406420258827n},Moxxie:{name:"Moxxie",id:712653921692155965n},arHSM:{name:"arHSM",id:841509053422632990n},iamme:{name:"i am me",id:984392761929256980n},creations:{name:"creations",id:209830981060788225n},Leko:{name:"Leko",id:108153734541942784n},SomeAspy:{name:"SomeAspy",id:516750892372852754n},nvhhr:{name:"nvhhr",id:165098921071345666n},Z1xus:{name:"Z1xus",id:377450600797044746n},Oggetto:{name:"Oggetto",id:619203349954166804n},zyqunix:{name:"zyqunix",id:1201415921802170388n},examplegit:{name:"example.user",id:175411535357673473n},Loukios:{name:"Loukios",id:211461918127292416n},vappstar:{name:"vappstar",id:747192967311261748n},voidbbg:{name:"voidbbg",id:117126234588184582n},OIRNOIR:{name:"OIRNOIR",id:720842469024989195n},cassie:{name:"cassie",id:280411966126948353n},mochienya:{name:"mochie",id:1043599230247374869n},okiso:{name:"okiso",id:274178934143451137n},port22exposed:{name:"port",id:1318383159645311009n},PhoenixAceVFX:{name:"PhoenixAceVFX",id:1016895892055396484n},TheArmagan:{name:"TheArmagan",id:707309693449535599n},seth:{name:"S\u20ACth",id:1273447359417942128n},SteelTech:{name:"SteelTech",id:1344190786476183643n},talhakf:{name:"talhakf",id:1140716160560676976n},xijexo:{name:"xijexo",id:1284113557201620995n},omaw:{name:"omaw",id:1155026301791514655n},WKoA:{name:"WKoA",id:724416180097384498n},smuki:{name:"smuki",id:691517398523576331n},ItsAlex:{name:"ItsAlex",id:551023598203043840n},Byeoon:{name:"byeoon",id:495683688474869781n},Skully:{name:"Skully",id:150298098516754432n},Buzzy:{name:"Buzzy",id:1273353654644117585n},Reycko:{name:"Reycko",id:1123725368004726794n},Campfire:{name:"Campfire",id:376414446840578081n},Cootshk:{name:"Cootshk",id:921605971577548820n},sliwka:{name:"sliwka",id:1165286199628419129n},bbgaming25k:{name:"bbgaming25k",id:851222385528274964n},davidkra230:{name:"davidkra230",id:652699312631054356n},GroupXyz:{name:"GroupXyz",id:950033410229944331n},Suffocate:{name:"Suffocate",id:772601756776923187n},veygax:{name:"veygax",id:1119938236245094521n},secp192k1:{name:"secp192k1",id:477497542205243392n},VillainsRule:{name:"VillainsRule",id:0n},Etorix:{name:"Etorix",id:94597845868355584n},Johannes7k75:{name:"Johannes7k75",id:587701169103699994n},DiabeloDEV:{name:"DiabeloDEV",id:1231342375465390100n},ryanamay:{name:"ryanamay",id:1262793452236570667n},Mocha:{name:"Mocha",id:808802000224518264n},justjxke:{name:"justjxke",id:852558183087472640n},nicola02nb:{name:"nicola02nb",id:257900031351193600n},qouesm:{name:"qouesm",id:130388483494641664n},CallMeGii:{name:"gii",id:156481332652802048n},mmeta:{name:"mmeta",id:297075664530440192n},SSnowly:{name:"Snowy",id:1183482753375809537n},ZcraftElite:{name:"ZcraftElite",id:926788037785047050n},mart:{name:"mja00",id:108698087769260032n},vei:{name:"Vei",id:239414094799699968n},prism:{name:"prism",id:390884143749136386n},square:{name:"square",id:219363409097916416n},neoarz:{name:"neoarz",id:218675193592283137n},KamiRu:{name:"KamiRu",id:819191621676695563n},soapphia:{name:"soap phia",id:1012095822957133976n},benjii:{name:"Benjii",id:463702169443368970n},keircn:{name:"Key",id:1230319937155760131n},PWall:{name:"PWall",id:0n},busyboxkitty:{name:"busyboxkitty",id:1312185484159483948n},BioTomateDE:{name:"BioTomateDE",id:553499669226061844n},korzi:{name:"korzi",id:740966310875365416n},yash:{name:"yash",id:889150838658977874n},Leon135:{name:"Leon135",id:309275452231385088n},bbpltergiest:{name:"bbpltergiest",id:279448683672502274n},mshl:{name:"m.shl",id:1025245410224263258n},ScattrdBlade:{name:"ScattrdBlade",id:678007540608532491n},Ape:{name:"Ape",id:722832640360841308n},Kiri:{name:"Kiri",id:310525496771346434n},pointy:{name:"pointy",id:99914384989519872n},dka:{name:"DKA",id:119386840624005121n},Gir0fa:{name:"gir0fa",id:1282734265955520545n},yonn2222:{name:"yonn2222",id:821835831844012103n},Moowi:{name:"Moowi",id:246128594756173824n},sketchmyname:{name:"sketchmyname",id:1412164910443663491n},NassCT:{name:"NassCT",id:354996937868705793n},yafyx:{name:"kiniyaku",id:658209494609821699n},dhopcs:{name:"dhopcs",id:206309860038410240n},qdnx:{name:"qdnx",id:1374803023506702508n},BachLe2000:{name:"BachLe2000",id:624091967625625610n},pandaptable:{name:"pandaptable",id:97153209843335168n},SobakinTech:{name:"sobakintech",id:745203026335236178n},Nyro:{name:"zeyno36",id:1325431712406179962n},Jahsohsani:{name:"jahsohsani",id:806442568564604968n},dawn:{name:"dawn",id:604653220341743618n},Willow:{name:"Willow",id:965933914092888074n},kat:{name:"kat",id:665120188047556609n},Star123451:{name:"Star123451",id:1037526188039618560n},auggeeo:{name:"August (auggeeo)",id:594864203102158859n},bastih18:{name:"bastih18",id:273797150880563201n},lucabeyer:{name:"luca.beyer",id:405090676771127317n},benjas333:{name:"benjas333",id:456577284464443394n},k304:{name:"k304",id:255004979637649408n}}),ff=Object.freeze(Object.fromEntries(Object.entries(b).filter(e=>e[1].id!==0n).map(([e,t])=>[t.id,t]))),gf=Object.freeze(Object.fromEntries(Object.entries(F).filter(e=>e[1].id!==0n).map(([e,t])=>[t.id,t])))});function X(...e){return e.filter(Boolean).join(" ")}function lr(e){return new Promise(t=>setTimeout(t,e))}function Bp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function KS(e){for(let t in e)if(Object.hasOwn(e,t))return!1;return!0}function fc(e){try{return new URL(e)}catch{return null}}function gc(e){return e}function QS(e,t,o=t+"s"){return e===1?`${e} ${t}`:`${e} ${o}`}function ZS(e,...t){return t.some(o=>o==null)?"":String.raw({raw:e},...t)}function YS(e,t){try{let o=e();return o instanceof Promise?o.catch(()=>t):o}catch{return t}}function hf(e,t=!1){if(!e)return!1;if(t)return e===mc;let o=W.getChannel(e);return o?o.guild_id===mc:!1}function JS(e){return e?e===md:!1}function _z(e){return e?e===Ez:!1}function H0(e){if(!e)return!1;let t=bt.getMember(mc,e);return t&&t.roles.includes(Iz)||!1}function Gl(e,t){let o=e.findIndex(t);o!==-1&&e.splice(o,1)}function xf(e,t,o,r){let n=t&&bt.getMember(t,e.id)?.avatar||null;return n?at.getGuildMemberAvatarURLSimple({guildId:t,userId:e.id,avatar:n,canAnimate:o,size:r}):at.getUserAvatarURL(e,o,r)??at.getDefaultAvatarURL(e.id,e?.discriminator)}var iz,N3,Oz,B3,Fz,hc,Be=h(()=>{"use strict";d();C();O();iz=e=>{let t=e.getBoundingClientRect(),o=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(t.bottom<0||t.top-o>=0)};N3=e=>Object.hasOwn(ff,e),Oz=e=>N3(e)&&ff[e].badge!==!1,B3=e=>Object.hasOwn(gf,e),Fz=e=>B3(e)&&gf[e].badge!==!1,hc=e=>Object.hasOwn(ff,e)||Object.hasOwn(gf,e)});function Nr(e){return i("div",{...e,className:X(e.className,"vc-error-card")},e.children)}var xc=h(()=>{"use strict";d();Yce();Be()});var NZe,BZe,Nue,Uz,H,Pe=h(()=>{"use strict";d();A0();He();Wt();xc();NZe="#e78284",BZe=new ie("React ErrorBoundary",NZe),Nue={},Uz=Vo(()=>class extends Vencord.Webpack.Common.React.PureComponent{state={error:Nue,stack:"",message:""};static getDerivedStateFromError(t){let o=t?.stack??"",r=t?.message||String(t);if(t instanceof Error&&o){let n=o.indexOf(` `);n!==-1&&(r=o.slice(0,n),o=o.slice(n+1).replace(/https:\/\/\S+\/assets\//g,""))}return{error:t,stack:o,message:r}}componentDidCatch(t,o){this.props.onError?.({error:t,errorInfo:o,props:this.props.wrappedProps}),BZe.error(`${this.props.message||"A component threw an Error"} `,t,o.componentStack)}get isNoop(){return this.props.noop}render(){if(this.state.error===Nue)return this.props.children;if(this.isNoop)return null;if(this.props.fallback)return i(this.props.fallback,{wrappedProps:this.props.wrappedProps,...this.state},this.props.children);let t=this.props.message||"An error occurred while rendering this Component. More info can be found below and in your console.";return i(Nr,{style:{overflow:"hidden"}},i("h1",null,"Oh no!"),i("p",null,t),i("code",null,this.state.message,!!this.state.stack&&i("pre",{className:z.top8},this.state.stack)))}});Uz.wrap=(e,t)=>{let o=r=>i(Uz,{...t,wrappedProps:r},i(e,{...r}));return t?.displayName&&(o.displayName=t.displayName),o};H=Uz});var zz=h(()=>{});function S(e){return e}function zt(e,t,o=1){let r=[];for(let n=e;n<=t;n+=o)r.push(Math.round(n*100)/100);return r}var Bue,R=h(()=>{"use strict";d();Bue=["Accessibility","Activity","Appearance","Chat","Commands","Console","Customisation","Developers","Emotes","Friends","Fun","Media","Notifications","Organisation","Privacy","Reactions","Roles","Servers","Shortcuts","Utility","Voice"]});var $z,Rue,R3,Lue=h(()=>{"use strict";d();$z=Symbol("SettingsStore.isProxy"),Rue=Symbol("SettingsStore.getRawTarget"),R3=class{pathListeners=new Map;prefixListeners=new Map;globalListeners=new Set;proxyContexts=new WeakMap;proxyHandler=(()=>{let t=this;return{get(o,r,n){if(r===$z)return!0;if(r===Rue)return o;let a=Reflect.get(o,r,n),s=t.proxyContexts.get(o);if(s==null)return a;let{root:l,path:c}=s;if(!(r in o)&&t.getDefaultValue!=null&&(a=t.getDefaultValue({target:o,key:r,root:l,path:c})),typeof a=="object"&&a!==null&&!a[$z]){let u=`${c}${c&&"."}${r}`;return t.makeProxy(a,l,u)}return a},set(o,r,n){if(n?.[$z]&&(n=n[Rue]),o[r]===n)return!0;if(!Reflect.set(o,r,n))return!1;let a=t.proxyContexts.get(o);if(a==null)return!0;let{root:s,path:l}=a,c=`${l}${l&&"."}${r}`;return t.notifyListeners(c,n,s),!0},deleteProperty(o,r){if(!Reflect.deleteProperty(o,r))return!1;let n=t.proxyContexts.get(o);if(n==null)return!0;let{root:a,path:s}=n,l=`${s}${s&&"."}${r}`;return t.notifyListeners(l,void 0,a),!0}}})();constructor(t,o={}){this.plain=t,this.store=this.makeProxy(t),Object.assign(this,o)}makeProxy(t,o=t,r=""){return this.proxyContexts.set(t,{root:o,path:r}),new Proxy(t,this.proxyHandler)}notifyPrefixListeners(t,o,r){for(let n=1;n<=o.length;n++){let a=o.slice(0,n).join(".");this.prefixListeners.get(a)?.forEach(s=>s(r,t))}}notifyListeners(t,o,r){let n=t.split(".");if(n.length>3&&n[0]==="plugins"){let a=n.slice(0,3),s=a.join("."),l=a.reduce((c,u)=>c[u],r);this.globalListeners.forEach(c=>c(r,s)),this.pathListeners.get(s)?.forEach(c=>c(l))}else this.globalListeners.forEach(a=>a(r,t));this.pathListeners.get(t)?.forEach(a=>a(o)),this.notifyPrefixListeners(t,n,o)}setData(t,o){if(this.readOnly)throw new Error("SettingsStore is read-only");if(this.plain=t,this.store=this.makeProxy(t),o){let r=t,n=o.split(".");for(let a of n){if(!r){console.warn(`Settings#setData: Path ${o} does not exist in new data. Not dispatching update`);return}r=r[a]}this.pathListeners.get(o)?.forEach(a=>a(r)),this.notifyPrefixListeners(o,n,r)}this.markAsChanged()}addGlobalChangeListener(t){this.globalListeners.add(t)}addChangeListener(t,o){let r=this.pathListeners.get(t)??new Set;r.add(o),this.pathListeners.set(t,r)}addPrefixChangeListener(t,o){let r=this.prefixListeners.get(t)??new Set;r.add(o),this.prefixListeners.set(t,r)}removeGlobalChangeListener(t){this.globalListeners.delete(t)}removeChangeListener(t,o){let r=this.pathListeners.get(t);r&&(r.delete(o),r.size||this.pathListeners.delete(t))}removePrefixChangeListener(t,o){let r=this.prefixListeners.get(t);r&&(r.delete(o),r.size||this.prefixListeners.delete(t))}markAsChanged(){this.globalListeners.forEach(t=>t(this.plain,""))}}});function k1(e,t){for(let o in t){let r=t[o];typeof r=="object"&&!Array.isArray(r)?(e[o]??={},k1(e[o],r)):e[o]??=r}return e}var L3=h(()=>{"use strict";d()});var jz={};Bt(jz,{PlainSettings:()=>Wn,Settings:()=>Me,SettingsStore:()=>to,definePluginSettings:()=>M,migrateOldSettingToNewPlugin:()=>OZe,migratePluginSetting:()=>Br,migratePluginSettings:()=>oo,migratePluginToSettings:()=>Rp,migrateSettingToPlugin:()=>LZe,migrateSettingsFromPlugin:()=>Hz,useSettings:()=>lo});function lo(e){let[,t]=V.useReducer(()=>({}),{});return G(()=>e?(e.forEach(o=>{o.endsWith(".*")?to.addPrefixChangeListener(o.slice(0,-2),t):to.addChangeListener(o,t)}),()=>e.forEach(o=>{o.endsWith(".*")?to.removePrefixChangeListener(o.slice(0,-2),t):to.removeChangeListener(o,t)})):(to.addGlobalChangeListener(t),()=>to.removeGlobalChangeListener(t)),[e]),to.store}function oo(e,...t){let{plugins:o}=to.plain;if(!(e in o)){for(let r of t)if(r in o){C1.info(`Migrating settings from old name ${r} to ${e}`),o[e]=o[r],delete o[r],to.markAsChanged();break}}}function Br(e,t,o){let r=to.plain.plugins[e];r&&(!Object.hasOwn(r,o)||Object.hasOwn(r,t)||(C1.info(`Migrating plugin setting from ${o} to ${t} on ${e}`),r[t]=r[o],delete r[o],to.markAsChanged()))}function Rp(e,t,o,...r){let{plugins:n}=to.plain,a=n[t],s=n[o];if(a&&s?.enabled){for(let l of r)C1.info(`Migrating plugin to setting from old name ${o} to ${t} as ${l}`),a[l]=!0;a.enabled=!0,e&&delete n[o],to.markAsChanged()}}function LZe(e,t,o){let{plugins:r}=to.plain,n=r[e],a=r[t];n&&a?.enabled&&a?.[o]&&(C1.info(`Migrating setting ${o} from ${t} to seperate plugin ${e}`),delete a[o],n.enabled=!0,to.markAsChanged())}function Hz(e,t,...o){let{plugins:r}=to.plain,n=r[t],a=r[e];if(!(!n||!a)){for(let s of o)Object.hasOwn(n,s)&&(Object.hasOwn(a,s)||(C1.info(`Migrating plugin setting "${s}" from ${t} to ${e}`),a[s]=n[s],delete n[s]));to.markAsChanged()}}function OZe(e,t,o,r){let{plugins:n}=to.plain,a=n[o],s=n[e];!a||!s||!Object.hasOwn(a,r)||Object.hasOwn(s,t)||(C1.info(`Migrating plugin setting "${r}" from ${o} to "${t}" on ${e}`),s[t]=a[r],delete a[r],to.markAsChanged())}function M(e,t){if(t)for(let[r,n]of Object.entries(t))Object.assign(e[r],n);let o={get store(){if(!o.pluginName)throw new Error("Cannot access settings before plugin is initialized");return Me.plugins[o.pluginName]},get plain(){if(!o.pluginName)throw new Error("Cannot access settings before plugin is initialized");return Wn.plugins[o.pluginName]},use:r=>lo(r?r.map(n=>`plugins.${o.pluginName}.${n}`):[`plugins.${o.pluginName}.*`]).plugins[o.pluginName],def:e,pluginName:"",withPrivateSettings(){return this}};return o}var C1,RZe,Gz,to,Wn,Me,j=h(()=>{"use strict";d();Lue();He();L3();R();C();Na();C1=new ie("Settings"),RZe={autoUpdate:!0,autoUpdateNotification:!0,useQuickCss:!0,themeLinks:[],eagerPatches:!1,enabledThemes:[],enabledThemeLinks:[],enableOnlineThemes:!0,pinnedThemes:[],themeNames:{},themeActivationModes:{},enableReactDevtools:!1,mainWindowFrameless:!1,frameless:!1,transparent:!1,winCtrlQ:!1,macosVibrancyStyle:void 0,windowsMaterial:"none",disableMinSize:!1,winNativeTitleBar:!1,plugins:{},uiElements:{chatBarButtons:{},messagePopoverButtons:{}},notifications:{timeout:5e3,position:"bottom-right",useNative:"not-focused",missed:!0,logLimit:50},cloud:{authenticated:!1,url:"https://cloud.equicord.org/",settingsSync:!1,settingsSyncVersion:0},ignoreResetWarning:!1},Gz=VencordNative.settings.get();k1(Gz,RZe);to=new R3(Gz,{readOnly:!0,getDefaultValue({target:e,key:t,path:o}){let r=e[t];if(!et)return r;if(o==="plugins"&&t in et)return e[t]={enabled:et[t].required||et[t].enabledByDefault||!1};if(o.startsWith("plugins.")){let n=o.slice(8);if(n in et){let a=et[n].settings?.def[t];if(!a)return r;if("default"in a)return e[t]=a.default;if(a.type===4){let s=a.options.find(l=>l.default);return s&&(e[t]=s.value),s?.value}}}return r}});to.addGlobalChangeListener((e,t)=>{to.plain.cloud.settingsSyncVersion=Date.now(),VencordNative.settings.set(to.plain,t)});Wn=Gz,Me=to.store});async function T1(){let e=Kn.store.apiUrl.endsWith("/")?Kn.store.apiUrl+"users":Kn.store.apiUrl+"/users",t=await fetch(e,{cache:"no-cache"}).then(r=>r.json()),o={};for(let r in t.users)o[r]=t.users[r].filter(n=>{let{mod:a}=n;if(!a||_Ze.includes(a))return!1;let s={aero:Kn.store.showAero,velocity:Kn.store.showVelocity,badgevault:Kn.store.showCustom,nekocord:Kn.store.showNekocord,reviewdb:Kn.store.showReviewDB,aliucord:Kn.store.showAliucord,raincord:Kn.store.showRaincord,enmity:Kn.store.showEnmity,paicord:Kn.store.showPaicord,bunny:Kn.store.showBunny,goosemod:Kn.store.showGooseMod,replugged:Kn.store.showReplugged,betterdiscord:Kn.store.showBetterDiscord,vendroidenhanced:Kn.store.showVendroidEnhanced,revenge:Kn.store.showRevenge,record:Kn.store.showReCord};return!(a in s&&!s[a])}).map(n=>{let a=FZe[n.mod],s=Kn.store.showModStyle==="prefix"?`${a} - `:"",l=Kn.store.showModStyle==="suffix"?` - ${a}`:"",c=s+n.tooltip+l;return{...n,key:n.tooltip,tooltip:c}});O3=o}var O3,Oue,Fue,FZe,_Ze,qz=h(()=>{"use strict";d();zz();we();Wz();O3={},Oue="kwHCJPxp8t",Fue=K("vc-global-badges-"),FZe={badgevault:"BadgeVault",nekocord:"Nekocord",reviewdb:"ReviewDB",aero:"Aero",aliucord:"Aliucord",raincord:"Raincord",velocity:"Velocity",enmity:"Enmity",paicord:"Paicord",bunny:"Bunny",goosemod:"GooseMod",replugged:"Replugged",betterdiscord:"BetterDiscord",vendroidenhanced:"VendroidEnhanced",revenge:"Revenge",record:"ReCord",vencord:"Vencord",equicord:"Equicord"},_Ze=["vencord","equicord"]});function $Ze(){let e=Kn.use(F3.map(r=>r.value)),t=F3.filter(r=>e[r.value]).map(r=>r.value);async function o(r){let n=new Set(Array.isArray(r)?r:r?[r]:[]);for(let a of F3)Kn.store[a.value]=n.has(a.value);await T1()}return i(UZe,{label:"Specific Client Mods",options:zZe,value:t,closeOnSelect:!1,maxOptionsVisible:7,selectionMode:"multiple",wrapTags:!0,onSelectionChange:o})}var UZe,F3,zZe,Kn,Wz=h(()=>{"use strict";d();j();R();le();qz();UZe=he('"data-mana-component":"select"'),F3=[{label:"BadgeVault",value:"showCustom"},{label:"Nekocord",value:"showNekocord"},{label:"ReviewDB",value:"showReviewDB"},{label:"Aero",value:"showAero"},{label:"Aliucord",value:"showAliucord"},{label:"Raincord",value:"showRaincord"},{label:"Velocity",value:"showVelocity"},{label:"Enmity",value:"showEnmity"},{label:"Paicord",value:"showPaicord"},{label:"Bunny",value:"showBunny"},{label:"GooseMod",value:"showGooseMod"},{label:"Replugged",value:"showReplugged"},{label:"BetterDiscord",value:"showBetterDiscord"},{label:"Vendroid Enhanced",value:"showVendroidEnhanced"},{label:"Revenge",value:"showRevenge"},{label:"ReCord",value:"showReCord"}],zZe=F3.map(e=>({...e,id:e.value}));Kn=M({showModStyle:{type:4,description:"Mod Style",default:"none",options:[{label:"Don't Show Mod",value:"none"},{label:"Show Mod as Prefix",value:"prefix"},{label:"Show Mod as Suffix",value:"suffix"}]},apiUrl:{type:0,description:"API to use",default:"https://badges.equicord.org/",restartNeeded:!1,isValid:(e=>!!e)},showClientMods:{type:6,component:$Ze},showCustom:{type:3,description:"Show Custom Badges",default:!0,restartNeeded:!1,hidden:!0},showNekocord:{type:3,description:"Show Nekocord Badges",default:!0,restartNeeded:!1,hidden:!0},showReviewDB:{type:3,description:"Show ReviewDB Badges",default:!0,restartNeeded:!1,hidden:!0},showAero:{type:3,description:"Show Aero Badges",default:!0,restartNeeded:!1,hidden:!0},showAliucord:{type:3,description:"Show Aliucord Badges",default:!0,restartNeeded:!1,hidden:!0},showRaincord:{type:3,description:"Show Raincord Badges",default:!0,restartNeeded:!1,hidden:!0},showVelocity:{type:3,description:"Show Velocity Badges",default:!0,restartNeeded:!1,hidden:!0},showEnmity:{type:3,description:"Show Enmity Badges",default:!0,restartNeeded:!1,hidden:!0},showPaicord:{type:3,description:"Show Paicord Badges",default:!0,restartNeeded:!1,hidden:!0},showBunny:{type:3,description:"Show Bunny Badges",default:!0,restartNeeded:!1,hidden:!0},showGooseMod:{type:3,description:"Show GooseMod Badges",default:!0,restartNeeded:!1,hidden:!0},showReplugged:{type:3,description:"Show Replugged Badges",default:!0,restartNeeded:!1,hidden:!0},showBetterDiscord:{type:3,description:"Show BetterDiscord Badges",default:!0,restartNeeded:!1,hidden:!0},showVendroidEnhanced:{type:3,description:"Show Vendroid Enhanced Badges",default:!0,restartNeeded:!1,hidden:!0},showRevenge:{type:3,description:"Show Revenge Badges",default:!0,restartNeeded:!1,hidden:!0},showReCord:{type:3,description:"Show ReCord Badges",default:!0,restartNeeded:!1,hidden:!0}})});var Kz,j0,Qz=h(()=>{"use strict";d();zz();I1();Tt();q0();O();_e();R();C();Wz();qz();j0=S({name:"GlobalBadges",description:"Adds global badges from other client mods",tags:["Appearance"],authors:[b.HypedDomi,F.Wolfie,b.thororen],settings:Kn,settingsAboutComponent:()=>i(f,null,i(de,{variant:"link",className:Fue("settings-button"),onClick:()=>Yi(Oue)},"Join GlobalBadges Server")),async start(){await T1(),clearInterval(Kz),Kz=setInterval(T1,1e3*60*30)},async stop(){clearInterval(Kz)},toolboxActions:{async"Refetch Global Badges"(){await T1(),D.show({id:D.genId(),message:"Successfully refetched global badges!",type:D.Type.SUCCESS})}},get GlobalBadges(){return O3},getGlobalBadges(e){return O3[e]?.map((t,o)=>({id:`global_badges_badge_${o}`,iconSrc:t.badge,description:t.tooltip,position:0,props:{style:{borderRadius:"50%",transform:"scale(0.9)"}},onContextMenu(r,n){rt.openContextMenu(r,()=>i(_3,{badge:n}))}}))}})});var _ue=h(()=>{});var Xz={};Bt(Xz,{_usePatchContextMenu:()=>GZe,addContextMenuPatch:()=>tl,addGlobalContextMenuPatch:()=>Yz,findGroupChildrenByChildId:()=>wt,globalPatches:()=>U3,navPatches:()=>VS,removeContextMenuPatch:()=>vc,removeGlobalContextMenuPatch:()=>Jz});function tl(e,t){Array.isArray(e)||(e=[e]);for(let o of e){let r=VS.get(o);r||(r=new Set,VS.set(o,r)),r.add(t)}}function Yz(e){U3.add(e)}function vc(e,t){let r=(Array.isArray(e)?e:[e]).map(n=>VS.get(n)?.delete(t)??!1);return Array.isArray(e)?r:r[0]}function Jz(e){return U3.delete(e)}function wt(e,t,o=!1){for(let r of t){if(r==null)continue;if(Array.isArray(r)){let a=wt(e,r,o);if(a!==null)return a}if(Array.isArray(e)&&e.some(a=>o?r.props?.id?.includes(a):r.props?.id===a)||(o?r.props?.id?.includes(e):r.props?.id===e))return t;let n=r.props?.children;if(n){Array.isArray(n)||(n=[n],r.props.children=n);let a=wt(e,n,o);if(a!==null)return a}}return null}function GZe(e){if(!P.MenuItem)return e;e={...e,children:Zz(e.children)},e.contextMenuAPIArguments??=[];let t=VS.get(e.navId);if(Array.isArray(e.children)||(e.children=[e.children]),t)for(let o of t)try{o(e.children,...e.contextMenuAPIArguments)}catch(r){Uue.error(`Patch for ${e.navId} errored,`,r)}for(let o of U3)try{o(e.navId,e.children,...e.contextMenuAPIArguments)}catch(r){Uue.error("Global patch errored,",r)}return e}function Zz(e){return Array.isArray(e)?e.map(Zz):(V.isValidElement(e)&&(e=V.cloneElement(e),e?.props?.children&&(e.type!==P.MenuControlItem||e.type===P.MenuControlItem&&e.props.control!=null)&&(e.props.children=Zz(e.props.children))),e)}var Uue,VS,U3,Fo=h(()=>{"use strict";d();He();C();Uue=new ie("ContextMenu"),VS=new Map,U3=new Set});var n$={};Bt(n$,{ChatBarButton:()=>Un,ChatBarButtonMap:()=>W0,ChatBarButtonWrappers:()=>z3,_injectButtons:()=>qZe,_wrapButtons:()=>WZe,addChatBarButton:()=>Vz,addChatBarButtonWrapper:()=>t$,removeChatBarButton:()=>e$,removeChatBarButtonWrapper:()=>o$});function jZe(e){let{chatBarButtons:t}=lo(["uiElements.chatBarButtons.*"]).uiElements,{analyticsName:o}=e.type;return i(f,null,Array.from(W0).filter(([r])=>t[r]?.enabled!==!1).map(([r,{render:n}])=>i(H,{noop:!0,key:r,onError:a=>HZe.error(`Failed to render ${r}`,a.error)},i(n,{...e,isMainChat:o==="normal",isAnyChat:["normal","sidebar"].includes(o)}))))}function qZe(e,t){t.disabled||e.length===0||e.unshift(i(jZe,{key:"vencord-chat-buttons",...t}))}function WZe(e){let t=[...z3.values()].sort((r,n)=>r.priority-n.priority),o=e;for(let{wrapper:r}of t)o=r(o);return o}var zue,$ue,W0,HZe,Vz,e$,Un,z3,t$,o$,Ba=h(()=>{"use strict";d();_ue();Pe();He();Be();le();C();Fo();j();zue=Ie("button","buttonWrapper","notificationDot"),$ue=Ie("buttonContainer","channelTextArea","button"),W0=new Map,HZe=new ie("ChatButtons");Vz=(e,t,o)=>W0.set(e,{render:t,icon:o}),e$=e=>W0.delete(e),Un=H.wrap(e=>i(ve,{text:e.tooltip},({onMouseEnter:t,onMouseLeave:o})=>i("div",{className:`expression-picker-chat-input-button ${$ue?.buttonContainer??""} vc-chatbar-button`},i(eo,{"aria-label":e.tooltip,onMouseEnter:t,onMouseLeave:o,className:X(zue.button,$ue?.button),onClick:e.onClick,onContextMenu:e.onContextMenu,onAuxClick:e.onAuxClick,...e.buttonProps},i("div",{className:zue.buttonWrapper},e.children)))),{noop:!0});tl("textarea-context",(e,t)=>{let{chatBarButtons:o}=lo(["uiElements.chatBarButtons.*"]).uiElements,r=Array.from(W0.entries());if(!r.length)return;let n=wt("submit-button",e);if(!n)return;let a=n.findIndex(s=>s?.props?.id==="submit-button");a!==-1&&n.splice(a,0,i(P.MenuItem,{id:"vc-chat-buttons",key:"vencord-chat-buttons",label:"Vencord Buttons"},r.map(([s])=>i(P.MenuCheckboxItem,{label:s,key:s,id:`vc-chat-button-${s}`,checked:o[s]?.enabled!==!1,action:()=>{let l=o[s]?.enabled!==!1;o[s]??={},o[s].enabled=!l}}))))});z3=new Map,t$=(e,t,o=0)=>z3.set(e,{wrapper:t,priority:o}),o$=e=>z3.delete(e)});function fd(){return`-${en.fromTimestamp(Date.now())}`}function Ft(e,t){let o=KZe({channelId:e,content:"",embeds:[]});return fo.receiveMessage(e,k1(t,o)),t}function St(e,t,o){return e.find(r=>r.name===t)?.value??o}var KZe,r$=h(()=>{"use strict";d();L3();le();C();KZe=Oe('username:"Clyde"')});var Gue=h(()=>{"use strict";d()});var Hue=h(()=>{"use strict";d()});var jue=h(()=>{"use strict";d()});var ol,Ra,$3,que=h(()=>{"use strict";d();ol=(m=>(m[m.SUB_COMMAND=1]="SUB_COMMAND",m[m.SUB_COMMAND_GROUP=2]="SUB_COMMAND_GROUP",m[m.STRING=3]="STRING",m[m.INTEGER=4]="INTEGER",m[m.BOOLEAN=5]="BOOLEAN",m[m.USER=6]="USER",m[m.CHANNEL=7]="CHANNEL",m[m.ROLE=8]="ROLE",m[m.MENTIONABLE=9]="MENTIONABLE",m[m.NUMBER=10]="NUMBER",m[m.ATTACHMENT=11]="ATTACHMENT",m))(ol||{}),Ra=(a=>(a[a.BUILT_IN=0]="BUILT_IN",a[a.BUILT_IN_TEXT=1]="BUILT_IN_TEXT",a[a.BUILT_IN_INTEGRATION=2]="BUILT_IN_INTEGRATION",a[a.BOT=3]="BOT",a[a.PLACEHOLDER=4]="PLACEHOLDER",a))(Ra||{}),$3=(n=>(n[n.CHAT_INPUT=1]="CHAT_INPUT",n[n.USER=2]="USER",n[n.MESSAGE=3]="MESSAGE",n[n.PRIMARY_ENTRY_POINT=4]="PRIMARY_ENTRY_POINT",n))($3||{})});var Wue=h(()=>{"use strict";d()});var Kue=h(()=>{"use strict";d()});var Que=h(()=>{"use strict";d()});var Zue=h(()=>{"use strict";d()});var Yue=h(()=>{"use strict";d()});var Jue=h(()=>{"use strict";d()});var Xue=h(()=>{"use strict";d()});var co=h(()=>{"use strict";d();Gue();Hue();jue();que();Wue();Kue();Que();Zue();Yue();Jue();Xue()});var i$=h(()=>{"use strict";d();co()});var s$={};Bt(s$,{ApplicationCommandInputType:()=>Ra,ApplicationCommandOptionType:()=>ol,ApplicationCommandType:()=>$3,BUILT_IN:()=>Lp,OptionalMessageOption:()=>dn,RequiredMessageOption:()=>Op,_handleCommand:()=>ZZe,_init:()=>QZe,commands:()=>ew,findOption:()=>St,generateId:()=>fd,prepareOption:()=>a$,registerCommand:()=>E1,sendBotMessage:()=>Ft,unregisterCommand:()=>Fp});function a$(e){return e.displayName||=e.name,e.displayDescription||=e.description,e.options?.forEach((t,o,r)=>{t===ede?r[o]=dn:t===tde&&(r[o]=Op),t.choices?.forEach(n=>n.displayName||=n.name),a$(r[o])}),e}function YZe(e,t){e.options?.forEach(o=>{if(o.type!==1)throw new Error("When specifying sub-command options, all options must be sub-commands.");let r={...e,...o,options:o.options!==void 0?o.options:void 0,type:1,id:`${o.name}-${e.id}`,name:Vue(e,o),displayName:Vue(e,o),subCommandPath:[{name:o.name,type:o.type,displayName:o.name}],rootCommand:e};E1(r,t)})}function JZe(e){let t=Lp.filter(o=>o.rootCommand===e).map(o=>Fp(o.name));return t.length>0&&t.every(o=>o)}function E1(e,t){if(!Lp){console.warn("[CommandsAPI]",`Not registering ${e.name} as the CommandsAPI hasn't been initialised.`,"Please restart to use commands");return}if(Lp.some(o=>o.name===e.name))throw new Error(`Command '${e.name}' already exists.`);if(e.isVencordCommand=!0,e.untranslatedName??=e.name,e.untranslatedDescription??=e.description,e.id??=`-${ode++}`,e.applicationId??="-1",e.type??=1,e.inputType??=1,e.plugin||=t,a$(e),ew[e.name]=e,nde(e)){YZe(e,t);return}Lp.push(e)}function Fp(e,t=!1){let o=ew[e];if(o&&nde(o))return delete ew[e],JZe(o);let r=Lp.findIndex(n=>n.name===e);return r===-1?!1:(Lp.splice(r,1),delete ew[e],!0)}var Lp,ew,ede,tde,dn,Op,ode,QZe,ZZe,nde,Vue,yr=h(()=>{"use strict";d();He();Ta();r$();i$();r$();i$();ew={},ede=Symbol("OptionalMessageOption"),tde=Symbol("RequiredMessageOption"),dn=ede,Op=tde,ode=99,QZe=function(e){try{Lp=e,dn=e.find(t=>(t.untranslatedName||t.displayName)==="shrug").options[0],Op=e.find(t=>(t.untranslatedName||t.displayName)==="me").options[0],ode=Math.abs(Lp.map(t=>Number(t.id)).sort((t,o)=>t-o)[0])+1}catch(t){new ie("CommandsAPI").error("Failed to load CommandsApi",t," - cmds is",e)}return e},ZZe=function(e,t,o){if(!e.isVencordCommand)return e.execute(t,o);let r=n=>{let a=`An Error occurred while executing command "${e.name}"`,s=n instanceof Error?n.stack||n.message:String(n);console.error(a,n),Ft(o.channel.id,{content:`${a}: ${I0(s)}`,author:{username:"Equicord"}})};try{let n=e.execute(t,o);return n instanceof Promise?n.catch(r):n}catch(n){return r(n)}};nde=e=>e.options?.[0]?.type===1,Vue=(e,t)=>`${e.name} ${t.name}`});var u$={};Bt(u$,{__getDecorators:()=>XZe,addMemberListDecorator:()=>l$,decoratorsFactories:()=>G3,removeMemberListDecorator:()=>c$});function l$(e,t,o){G3.set(e,{render:t,onlyIn:o})}function c$(e){G3.delete(e)}function XZe(e,t){let o=Array.from(G3.entries(),([r,{render:n,onlyIn:a}])=>a==="guilds"&&t!=="guild"||a==="dms"&&t!=="dm"?null:i(H,{noop:!0,key:r,message:`Failed to render ${r} Member List Decorator`},i(n,{...e,type:t})));return i("div",{className:"vc-member-list-decorators-wrapper"},o)}var G3,d$=h(()=>{"use strict";d();Pe();G3=new Map});var p$={};Bt(p$,{_modifyAccessories:()=>VZe,accessories:()=>H3,addMessageAccessory:()=>K0,removeMessageAccessory:()=>tw});function K0(e,t,o){H3.set(e,{render:t,position:o})}function tw(e){H3.delete(e)}function VZe(e,t){try{for(let[o,r]of H3.entries()){let n=i(H,{noop:!0,message:`Failed to render ${o} Message Accessory`,key:o},i(r.render,{...t}));e.splice(r.position!=null?r.position<0?e.length+r.position:r.position:e.length,0,n)}return e}catch(o){return new ie("MessageAccessories").error("Failed to modify message accessories",o),e}}var H3,ow=h(()=>{"use strict";d();Pe();He();H3=new Map});var g$={};Bt(g$,{__addDecorationsToMessage:()=>eYe,addMessageDecoration:()=>m$,decorationsFactories:()=>j3,removeMessageDecoration:()=>f$});function m$(e,t){j3.set(e,t)}function f$(e){j3.delete(e)}function eYe(e){let t=Array.from(j3.entries(),([o,r])=>i(H,{noop:!0,message:`Failed to render ${o} Message Decoration`,key:o},i(r,{...e})));return i("div",{className:"vc-message-decorations-wrapper"},t)}var j3,h$=h(()=>{"use strict";d();Pe();j3=new Map});var A$={};Bt(A$,{_handleClick:()=>nYe,_handlePreEdit:()=>oYe,_handlePreSend:()=>tYe,addMessageClickListener:()=>S$,addMessagePreEditListener:()=>Q0,addMessagePreSendListener:()=>ni,removeMessageClickListener:()=>w$,removeMessagePreEditListener:()=>Z0,removeMessagePreSendListener:()=>ri});async function tYe(e,t,o,r,n){o={...n,...o};for(let a of v$)try{if((await a(e,t,o,r))?.cancel)return!0}catch(s){x$.error(`MessageSendHandler: Listener encountered an unknown error `,s)}return!1}async function oYe(e,t,o){for(let r of y$)try{if((await r(e,t,o))?.cancel)return!0}catch(n){x$.error(`MessageEditHandler: Listener encountered an unknown error `,n)}return!1}function ni(e){return v$.add(e),e}function Q0(e){return y$.add(e),e}function ri(e){return v$.delete(e)}function Z0(e){return y$.delete(e)}function nYe(e,t,o){e=lt.getMessage(t.id,e.id)??e;for(let r of b$)try{r(e,t,o)}catch(n){x$.error(`MessageClickHandler: Listener encountered an unknown error `,n)}}function S$(e){return b$.add(e),e}function w$(e){return b$.delete(e)}var x$,v$,y$,b$,yc=h(()=>{"use strict";d();He();C();x$=new ie("MessageEvents","#e5c890"),v$=new Set,y$=new Set;b$=new Set});var T$={};Bt(T$,{MessagePopoverButtonMap:()=>D1,_buildPopoverElements:()=>aYe,addMessagePopoverButton:()=>k$,removeMessagePopoverButton:()=>C$});function k$(e,t,o){D1.set(e,{render:t,icon:o})}function C$(e){D1.delete(e)}function iYe(e){let{Component:t,message:o}=e,{messagePopoverButtons:r}=lo(["uiElements.messagePopoverButtons.*"]).uiElements,n=Array.from(D1.entries()).filter(([a])=>r[a]?.enabled!==!1).map(([a,{render:s}])=>{try{let l=s(o);return l?i(H,{noop:!0},i(t,{key:a,...l})):null}catch(l){return rYe.error(`[${a}]`,l),null}});return i(f,null,n)}function aYe(e,t){return i(iYe,{Component:e,message:t})}var rYe,D1,q3=h(()=>{"use strict";d();Pe();He();j();rYe=new ie("MessagePopover"),D1=new Map});var P$={};Bt(P$,{_renderIcons:()=>lYe,addNicknameIcon:()=>E$,removeNicknameIcon:()=>D$});function E$(e,t,o=0){return I$.set(e,{priority:o,factory:H.wrap(t,{noop:!0,onError:r=>sYe.error(`Failed to render ${e}`,r)})})}function D$(e){return I$.delete(e)}function lYe(e){return Array.from(I$).sort((t,o)=>o[1].priority-t[1].priority).map(([t,{factory:o}])=>i(o,{key:t,...e}))}var I$,sYe,M$=h(()=>{"use strict";d();Pe();He();I$=new Map,sYe=new ie("NicknameIcons")});var L$={};Bt(L$,{classNameFactory:()=>cYe,compileStyle:()=>R$,coreStyleRootNode:()=>gd,disableStyle:()=>La,enableStyle:()=>Oi,initStyles:()=>N$,isStyleEnabled:()=>B$,managedStyleRootNode:()=>_p,requireStyle:()=>nw,setStyleClassNames:()=>dYe,styleMap:()=>rde,toggleStyle:()=>uYe,userStyleRootNode:()=>M1,vencordRootNode:()=>P1});function N$(){let e=bs("vencord-os-theme-values",gd);bs("vencord-text",gd).textContent=uU();let t=bs("vencord-css-core",gd),o=null;bs("vencord-margins",gd).textContent=cU(),VencordNative.native.getRendererCss().then(r=>t.textContent=r),VencordNative.themes.getSystemValues().then(r=>{let n=Object.entries(r).filter(([,a])=>!!a).map(([a,s])=>`--${a}: ${s};`).join("");e.textContent=`:root{${n}}`})}function nw(e){let t=rde.get(e);if(!t)throw new Error(`Style "${e}" does not exist`);return t}function Oi(e){let t=nw(e);return t.dom?.isConnected?!1:(t.dom||(t.dom=document.createElement("style"),t.dom.dataset.vencordName=t.name),R$(t),_p.appendChild(t.dom),!0)}function La(e){let t=nw(e);return t.dom?.isConnected?(t.dom.remove(),t.dom=null,!0):!1}var cYe,rde,P1,gd,_p,M1,uYe,B$,dYe,R$,nl=h(()=>{"use strict";d();yt();Ja();we();cYe=K,rde=window.VencordStyles??=new Map,P1=document.createElement("vencord-root"),gd=document.createElement("vencord-styles"),_p=document.createElement("vencord-managed-styles"),M1=document.createElement("vencord-user-styles");P1.style.display="none";P1.append(gd,_p,M1);document.addEventListener("DOMContentLoaded",()=>{document.documentElement.append(P1)},{once:!0});uYe=e=>B$(e)?La(e):Oi(e),B$=e=>nw(e).dom?.isConnected??!1,dYe=(e,t,o=!0)=>{let r=nw(e);r.classNames=t,o&&B$(r.name)&&R$(r)},R$=e=>{if(!e.dom)throw new Error("Style has no DOM element");e.dom.textContent=e.source.replace(/\[--(\w+)\]/g,(t,o)=>{let r=e.classNames[o];return r?sU(r):t})}});function Up(e){let t=!1,o;return function(){return t?o:(t=!0,o=e.apply(this,arguments))}}var N1=h(()=>{"use strict";d()});var ide=h(()=>{"use strict";d()});var U$={};Bt(U$,{SYM_IS_PROXIED_FACTORY:()=>lde,SYM_ORIGINAL_FACTORY:()=>vf,SYM_ORIGINAL_MODULE_FACTORIES:()=>O$,SYM_PATCHED_BY:()=>_$,SYM_PATCHED_SOURCE:()=>F$,allWebpackInstances:()=>W3,getBuildNumber:()=>cde,getFactoryPatchedBy:()=>fYe,getFactoryPatchedSource:()=>mYe,patchTimings:()=>pYe,patches:()=>Y0});function mYe(e,t=vo){return t.m[e]?.[F$]}function fYe(e,t=vo){return t.m[e]?.[_$]}function ude(e,t,o,r,n=!1){vYe(t,o);let a=new Proxy(Me.eagerPatches?pde(t,o):o,hYe);return xYe(e,t,o,a,n)?!0:Reflect.set(e,t,a,r)}function xYe(e,t,o,r,n){let a;for(let s of W3){let l=s.m[O$]??s.m;if(!(n&&l===e)&&Object.hasOwn(s.m,t)){a=s.m[t];break}}return a!=null?(a[vf]!=null?a[vf]=o:dde(t,r),!0):!1}function dde(e,t){for(let o of W3)nu(o.m,e,{value:t})}function vYe(e,t){for(let o of D0)try{o(t,e)}catch(r){bc.error(`Error in Webpack factory listener: `,r,o)}}function sde(e,t,o){let r=e[vf];e===r&&delete e[vf];let[n,a,s]=o;if(dde(n.id,r),vo==null&&!ade&&(ade=!0,typeof s=="function"&&s.m!=null&&s.c!=null)){let{stack:u}=new Error,p=u?.match(/\/assets\/(.+?\.js)/)?.[1];bc.warn(`WebpackRequire was not initialized, falling back to WebpackRequire passed to the first called wrapped module factory (id: ${String(n.id)}`+ZS`, WebpackInstance origin: ${p}`+")"),bS(s)}let l;try{l=e.apply(t,o)}catch(u){if(e===r)throw u;return bc.error(`Error in patched module factory: `,u),r.apply(t,o)}if(a=n.exports,typeof s=="function"&&s.c&&g3(s.c,a,n.id)||a==null)return l;for(let u of f3)try{u(a,n.id)}catch(p){bc.error(`Error in Webpack module listener: `,p,u)}for(let[u,p]of E0){try{if(u(a)){E0.delete(u),p(a,n.id);continue}}catch(m){bc.error(`Error while filtering or firing callback for Webpack waitFor subscription: `,m,` Module exports:`,a,` Filter:`,u,` Callback:`,p)}if(typeof a=="object")for(let m in a)try{try{var c=a[m]}catch{continue}if(c!=null&&u(c)){E0.delete(u),p(c,n.id);break}}catch(g){bc.error(`Error while filtering or firing callback for Webpack waitFor subscription: `,g,` Export value:`,a,` Filter:`,u,` Callback:`,p)}}return l}function pde(e,t){let o=String(t),n="0,"+(o.startsWith("(")?"":"function")+o.slice(o.indexOf("(")),a=n,s=t,l=new Set;for(let c=0;cu.toBuild)){Y0.splice(c--,1);continue}if(!(typeof u.find=="string"?o.includes(u.find):(u.find.global&&(u.find.lastIndex=0),u.find.test(o))))continue;let x=n,v=a,y=s,A=!1,k=!1,w=fue(`patch by ${u.plugin}`,(I,E)=>(typeof I!="string"&&I.global&&(I.lastIndex=0),n.replace(I,E)));for(let I of u.replacement){if(m&&(I.fromBuild!=null&&pI.toBuild))continue;let E="";try{let[N,B]=w(I.match,I.replace);if(E=N,E===n){if(u.noWarn||I.noWarn||bc.warn(`Patch by ${u.plugin} had no effect (Module id is ${String(e)}): ${I.match}`),u.group){bc.warn(`Undoing patch group ${u.find} by ${u.plugin} because replacement ${I.match} had no effect`),k&&l.delete(u.plugin),A=!0;break}continue}let _=[...l];l.has(u.plugin)||_.push(u.plugin);let q=`// Webpack Module ${String(e)} - Patched by ${_.join(", ")} ${E} //# sourceURL=file:///WebpackModule${String(e)}`,$=(0,eval)(q);l.has(u.plugin)||(l.add(u.plugin),k=!0),n=E,a=q,s=$}catch(N){if(u.plugin==="ContextMenuAPI"&&N instanceof SyntaxError&&N.message.includes("arguments")||bc.error(`Patch by ${u.plugin} errored (Module id is ${String(e)}): ${I.match} `,N),u.group){bc.warn(`Undoing patch group ${u.find} by ${u.plugin} because replacement ${I.match} errored`),A=!0;break}}}A&&(n=x,a=v,s=y,k&&l.delete(u.plugin)),u.all||Y0.splice(c--,1)}return s[vf]=t,s}var Y0,O$,lde,vf,F$,_$,W3,pYe,cde,bc,ade,nu,gYe,hYe,K3=h(()=>{"use strict";d();j();ide();d3();Er();He();Be();le();Y0=[],O$=Symbol("WebpackPatcher.originalModuleFactories"),lde=Symbol("WebpackPatcher.isProxiedFactory"),vf=Symbol("WebpackPatcher.originalFactory"),F$=Symbol("WebpackPatcher.patchedSource"),_$=Symbol("WebpackPatcher.patchedBy"),W3=new Set,pYe=[],cde=_l(()=>{try{let t=function(n){let a=n.match(/"Trying to open a changelog for an invalid build number (\d+?)"\)/);return a==null?-1:Number(a[1])};var e=t;let o=String(vo.m[927815]);if(o.includes("Trying to open a changelog for an invalid build number")){let n=t(o);if(n!==-1)return n}let r=SS("Trying to open a changelog for an invalid build number");return t(String(r))}catch{return-1}});bc=new ie("WebpackPatcher","#8caaee"),ade=!1,nu=(e,t,o)=>(Object.hasOwn(o,"value")&&(o.writable=!0),Reflect.defineProperty(e,t,{configurable:!0,enumerable:!0,...o}));nu(Function.prototype,"m",{enumerable:!1,set(e){nu(this,"m",{value:e});let{stack:t}=new Error;if(!t?.includes("http")||t.match(/at \d+? \(/)||!String(this).includes("exports:{}"))return;let o=t.match(/\/assets\/(.+?\.js)/)?.[1];if(["sentry","libdiscore","fast-connect"].some(s=>o?.toLowerCase()?.includes(s)))return;nu(this,"p",{enumerable:!1,set(s){nu(this,"p",{value:s}),clearTimeout(r),!(s!=="/assets/"||/(?:=>|{return)"[^"]+?"[^=]/.exec(String(this.u)))&&(vo==null&&this.c!=null&&(bc.info("Main WebpackInstance found"+ZS` in ${o}`+", initializing internal references to WebpackRequire"),bS(this)),a())}}),nu(this,"O",{enumerable:!1,set(s){nu(this,"O",{value:s}),clearTimeout(n);let l=this;nu(s,"j",{enumerable:!1,set(c){nu(this,"j",{value:c}),l.p==null&&a()}})}});let r=setTimeout(()=>Reflect.deleteProperty(this,"p"),0),n=setTimeout(()=>Reflect.deleteProperty(this,"O"),0),a=()=>{bc.info("Found Webpack module factories"+ZS` in ${o}`),W3.add(this);for(let l in e)ude(e,l,e[l],e,!0);nu(e,Symbol.toStringTag,{value:"ModuleFactories",enumerable:!1});let s=new Proxy(e,gYe);nu(this,"m",{value:s}),this.d=function(l,c){for(let u in c)Object.hasOwn(c,u)&&!Object.hasOwn(l,u)&&Object.defineProperty(l,u,{enumerable:!0,configurable:!0,get:c[u]})}}}});gYe={get(e,t,o){return t===O$?e:Reflect.get(e,t,o)},set:ude},hYe={apply(e,t,o){if(e[vf]!=null)return sde(e,t,o);let r=e.name,n=pde(r,e);return sde(n,t,o)},get(e,t,o){if(t===lde)return!0;let r=e[vf]??e;if(t==="toString"||t===F$||t===_$){let n=Reflect.get(r,t,r);return t==="toString"?n.bind(r):n}return Reflect.get(e,t,o)}}});var H$={};Bt(H$,{AudioType:()=>Q3,addAudioProcessor:()=>$$,audioProcessorFunctions:()=>rw,createAudioPlayer:()=>yf,defaultAudioNames:()=>Z3,identifyAudioType:()=>iw,playAudio:()=>ii,removeAudioProcessor:()=>G$});function yf(e,t={}){let o=new bYe(t,e,null,null,"default");return new z$(o)}function ii(e,t={}){let o=yf(e,t);return o.play(),o}function iw(e){if(Z3().includes(e))return"discord";try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"?"url":t.protocol==="data:"?"data-uri":t.protocol==="blob:"?"blob":t.protocol==="file:"?"file-path":"other"}catch{return"other"}}function $$(e,t){rw[e]=t}function G$(e){delete rw[e]}function Z3(){return mde??=(yYe.keys()||[]).map(e=>{let t=e.match(/((?:\w|-)+)\.mp3$/);return t?t[1]:null}).filter(Boolean),mde}var mde,yYe,bYe,rw,Q3,z$,rl=h(()=>{"use strict";d();le();mde=null,yYe=qn(e=>e.resolve&&e.id&&e.keys().some(t=>t.endsWith(".mp3")),!1),bYe=Oe("could not play audio"),rw={},Q3=(s=>(s.URL="url",s.DATA="data-uri",s.BLOB="blob",s.PATH="file-path",s.DISCORD="discord",s.OTHER="other",s))(Q3||{}),z$=class{internalPlayer;constructor(t){this.internalPlayer=t}get audio(){return this.internalPlayer.audio}set audio(t){this.internalPlayer.preprocessDataOriginal.audio=t,this.internalPlayer.processAudio()}get volume(){return this.internalPlayer._volume*100}set volume(t){this.internalPlayer.preprocessDataOriginal.volume=Math.max(0,Math.min(1,t/100)),this.internalPlayer.processAudio()}get speed(){return this.internalPlayer._speed}set speed(t){this.internalPlayer.preprocessDataOriginal.speed=Math.max(.0625,Math.min(16,t)),this.internalPlayer.processAudio()}get time(){return this.internalPlayer._audio?.then(t=>t.currentTime)??null}set time(t){this.internalPlayer.ensureAudio().then(o=>o.currentTime=t)}get persistent(){return this.internalPlayer.persistent}set persistent(t){this.internalPlayer.persistent=t}get preload(){return this.internalPlayer.preload}set preload(t){this.internalPlayer.preload=t,t&&this.internalPlayer.ensureAudio()}get muted(){return this.internalPlayer._audio?.then(t=>t.muted)??null}set muted(t){this.internalPlayer.ensureAudio().then(o=>o.muted=t)}get paused(){return this.internalPlayer._audio?.then(t=>t.paused)??null}set paused(t){t?this.internalPlayer.pause():this.internalPlayer.play()}get type(){return this.internalPlayer.type}get duration(){return this.internalPlayer._audio?.then(t=>t.duration)??null}load(){this.internalPlayer.ensureAudio()}loop(){this.internalPlayer.loop()}play(){this.internalPlayer.play()}pause(){this.internalPlayer.pause()}stop(t){this.internalPlayer.stop(t)}restart(){this.internalPlayer.stop(!0)}seek(t){this.internalPlayer.ensureAudio().then(o=>o.currentTime=t)}mute(){this.internalPlayer.ensureAudio().then(t=>t.muted=!0)}unmute(){this.internalPlayer.ensureAudio().then(t=>t.muted=!1)}delete(){this.internalPlayer.destroyAudio()}}});var K$={};Bt(K$,{_openGifPickerContextMenu:()=>W$,addGifPickerContextMenuPatch:()=>j$,removeGifPickerContextMenuPatch:()=>q$});function j$(e,t,o=0){Y3.set(e,{render:t,priority:o})}function q$(e){Y3.delete(e)}function W$(e,t){if(!Y3.size)return;let o=[];for(let[r,{render:n}]of Array.from(Y3).sort(([,a],[,s])=>a.priority-s.priority))try{let a=n(t,e);a&&o.push(a)}catch(a){SYe.error(`Failed to render context menu for ${r}`,a)}o.length&&rt.openContextMenu(e,()=>i(wYe,{items:o}))}function wYe({items:e}){return i(P.Menu,{navId:"gif-picker-context",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"GIF Options"},e)}var SYe,Y3,J3=h(()=>{"use strict";d();He();C();SYe=new ie("GifPickerContextMenu"),Y3=new Map});var tG={};Bt(tG,{ChannelToolbarButton:()=>Q$,HeaderBarButton:()=>il,_addChannelToolbarButtons:()=>EYe,_addHeaderBarButtons:()=>IYe,addChannelToolbarButton:()=>V$,addHeaderBarButton:()=>J$,removeChannelToolbarButton:()=>eG,removeHeaderBarButton:()=>X$});function il(e){let{icon:t,tooltip:o,onClick:r,onContextMenu:n,className:a,iconSize:s=18,position:l="bottom",selected:c,ref:u,"aria-label":p}=e,m=p??(typeof o=="string"?o:void 0);return i(ve,{text:o??"",position:l,shouldShow:o!=null},({onMouseEnter:g,onMouseLeave:x})=>i(eo,{innerRef:u,className:X(AYe.clickable,a),style:{width:Math.max(s,24),height:Math.max(s,24),boxSizing:"content-box",justifyContent:"center"},onClick:r,onContextMenu:n,onMouseEnter:g,onMouseLeave:x,role:"button",tabIndex:0,"aria-label":m,"aria-expanded":c},i(t,{size:"custom",width:s,height:s,color:"currentColor"})))}function Q$(e){return i(kYe,{...e})}function J$(e,t,o=0){Z$.set(e,{render:t,priority:o}),X3.forEach(r=>r())}function X$(e){Z$.delete(e),X3.forEach(t=>t())}function V$(e,t,o=0){Y$.set(e,{render:t,priority:o}),V3.forEach(r=>r())}function eG(e){Y$.delete(e),V3.forEach(t=>t())}function CYe(){let[,e]=T(0);return G(()=>{let t=()=>e(o=>o+1);return X3.add(t),()=>{X3.delete(t)}},[]),Array.from(Z$).sort(([,t],[,o])=>t.priority-o.priority).map(([t,{render:o}])=>i(H,{noop:!0,key:t,onError:r=>fde.error(`Failed to render header bar button: ${t}`,r.error)},i(o,null)))}function TYe(){let[,e]=T(0);return G(()=>{let t=()=>e(o=>o+1);return V3.add(t),()=>{V3.delete(t)}},[]),Array.from(Y$).sort(([,t],[,o])=>t.priority-o.priority).map(([t,{render:o}])=>i(H,{noop:!0,key:t,onError:r=>fde.error(`Failed to render channel toolbar button: ${t}`,r.error)},i(o,null)))}function IYe(){return[i(CYe,{key:"vc-header-bar-buttons"})]}function EYe(e){e.push(i(TYe,{key:"vc-channel-toolbar-buttons"}))}var fde,AYe,kYe,Z$,Y$,X3,V3,zp=h(()=>{"use strict";d();Pe();He();Be();le();C();fde=new ie("HeaderBarAPI"),AYe=Ie("clickable","selected","badge","badgeContainer"),kYe=he(".HEADER_BAR_BADGE_TOP:",'"aria-haspopup":');Z$=new Map,Y$=new Map,X3=new Set,V3=new Set});var iG={};Bt(iG,{addProfileCollection:()=>nG,removeProfileCollection:()=>rG,renderProfileCollections:()=>MYe});function nG(e,t,o=0){oG.set(e,{render:t,priority:o}),e9.forEach(r=>r())}function rG(e){oG.delete(e),e9.forEach(t=>t())}function PYe({props:e}){let[,t]=T(0);return G(()=>{let o=()=>t(r=>r+1);return e9.add(o),()=>{e9.delete(o)}},[]),Array.from(oG).sort(([,o],[,r])=>r.priority-o.priority).map(([o,{render:r}])=>i(H,{noop:!0,key:o,onError:n=>DYe.error(`Failed to render profile collection: ${o}`,n.error)},i(r,{...e,user:e.user??e.currentUser})))}function MYe(e){return i(PYe,{props:e})}var DYe,oG,e9,aG=h(()=>{"use strict";d();Pe();He();C();DYe=new ie("ProfileCollectionAPI"),oG=new Map,e9=new Set});var uG={};Bt(uG,{addProfileSection:()=>lG,removeProfileSection:()=>cG,renderProfileSections:()=>RYe});function lG(e,t,o=0){sG.set(e,{render:t,priority:o}),t9.forEach(r=>r())}function cG(e){sG.delete(e),t9.forEach(t=>t())}function BYe({userId:e,isSideBar:t}){let[,o]=T(0);return G(()=>{let r=()=>o(n=>n+1);return t9.add(r),()=>{t9.delete(r)}},[]),Array.from(sG).sort(([,r],[,n])=>n.priority-r.priority).map(([r,{render:n}])=>i(H,{noop:!0,key:r,onError:a=>NYe.error(`Failed to render profile section: ${r}`,a.error)},i(n,{userId:e,isSideBar:t})))}function RYe(e){return i(BYe,{...e})}var NYe,sG,t9,dG=h(()=>{"use strict";d();Pe();He();C();NYe=new ie("ProfileSectionsAPI"),sG=new Map,t9=new Set});var fG={};Bt(fG,{UserAreaButton:()=>aw,_renderButtons:()=>_Ye,addUserAreaButton:()=>pG,buttons:()=>o9,removeUserAreaButton:()=>mG});function pG(e,t,o=0){o9.set(e,{render:t,priority:o})}function mG(e){o9.delete(e)}function FYe({props:e}){return i(f,null,Array.from(o9).sort(([,t],[,o])=>t.priority-o.priority).map(([t,{render:o}])=>i(H,{noop:!0,key:t,onError:r=>OYe.error(`Failed to render ${t}`,r.error)},i(o,{...e}))))}function _Ye(e){return[i(FYe,{key:"vc-user-area-buttons",props:e})]}var LYe,aw,OYe,o9,sw=h(()=>{"use strict";d();Pe();He();le();LYe=he("tooltipPositionKey","positionKeyStemOverride"),aw=LYe,OYe=new ie("UserArea"),o9=new Map});var uw={};Bt(uw,{PMLogger:()=>UYe,addPatch:()=>hde,hasAnyVisibleSettings:()=>lw,initPluginManager:()=>vG,isPluginEnabled:()=>Ve,isPluginRequired:()=>hG,isSettingDisabled:()=>al,isSettingHidden:()=>B1,pluginRequiresRestart:()=>R1,plugins:()=>et,startAllPlugins:()=>cw,startDependenciesRecursive:()=>bf,startPlugin:()=>$p,stopPlugin:()=>Gp,subscribeAllPluginsFluxEvents:()=>zYe,subscribePluginFluxEvents:()=>xG,unsubscribePluginFluxEvents:()=>xde});function Ve(e){return(et[e]?.required||et[e]?.isDependency||Me.plugins[e]?.enabled)??!1}function hG(e){return et[e]?.required??!1}function B1(e,t){return"hidden"in t?typeof t.hidden=="function"?t.hidden.call(e):!!t.hidden:!1}function al(e,t){return"disabled"in t?typeof t.disabled=="function"?t.disabled.call(e):!!t.disabled:!1}function lw({settings:e}){return!!e&&Object.values(e.def).some(t=>!B1(e,t))}function hde(e,t,o=`Vencord.Plugins.plugins[${JSON.stringify(t)}]`){if(t==="Vesktop"&&e.find===".STREAMING_AUTO_STREAMER_MODE,"||t==="Equibop"&&e.find===".STREAMING_AUTO_STREAMER_MODE,")return;let r=e;if(r.plugin=t,!(r.predicate&&!r.predicate())){ZU(r),Array.isArray(r.replacement)||(r.replacement=[r.replacement]);for(let n of r.replacement)mS(n,o);r.replacement=r.replacement.filter(({predicate:n})=>!n||n()),Y0.push(r)}}function R1(e){return e.requiresRestart!==!1&&(e.requiresRestart||!!e.patches?.length)}function bf(e){let t=Me.plugins,o=!1,r=[];return e.dependencies?.forEach(n=>{if(!t[n].enabled){let a=et[n];if(bf(a),t[n].enabled=!0,a.isDependency=!0,R1(a)){Si.warn(`Enabling dependency ${n} requires restart.`),o=!0;return}$p(a)||r.push(n)}}),{restartNeeded:o,failures:r}}function xG(e,t){if(e.flux&&!gG.has(e.name)){gG.add(e.name),Si.debug("Subscribing to flux events of plugin",e.name);for(let[o,r]of Object.entries(e.flux)){let n=e.flux[o]=function(){if(!(e.name==="Encryptcord"&&o==="MESSAGE_CREATE"))try{let a=r.apply(e,arguments);return a instanceof Promise?a.catch(s=>Si.error(`${e.name}: Error while handling ${o} `,s)):a}catch(a){Si.error(`${e.name}: Error while handling ${o} `,a)}};t.subscribe(o,n)}}}function xde(e,t){if(e.flux){gG.delete(e.name),Si.debug("Unsubscribing from flux events of plugin",e.name);for(let[o,r]of Object.entries(e.flux))t.unsubscribe(o,r)}}function zYe(e){gde=!0;for(let t in et)Ve(t)&&xG(et[t],e)}var Si,UYe,gde,gG,cw,$p,Gp,vG,Jt=h(()=>{"use strict";d();I1();Ba();yr();Fo();d$();ow();h$();yc();q3();M$();j();nl();d3();He();N1();id();R();C();K3();Na();rl();J3();zp();aG();dG();sw();Si=new ie("PluginManager","#a6d189"),UYe=Si,gde=!1,gG=new Set;cw=Dp("startAllPlugins",function(t){Si.info(`Starting plugins (stage ${t})`);for(let o in et)if(Ve(o)){if((et[o].startAt??"WebpackReady")!==t)continue;$p(et[o])}});$p=Dp("startPlugin",function(t){let{name:o,commands:r,contextMenus:n,managedStyle:a,userProfileBadges:s,onBeforeMessageEdit:l,onBeforeMessageSend:c,onMessageClick:u,chatBarButton:p,renderMemberListDecorator:m,renderMessageAccessory:g,renderMessageDecoration:x,messagePopoverButton:v,renderNicknameIcon:y,headerBarButton:A,audioProcessor:k,userAreaButton:w,renderProfileCollection:I,chatBarButtonWrapper:E,renderProfileSection:N,gifPickerContextMenu:B}=t;if(t.start){if(Si.info("Starting plugin",o),t.started)return Si.warn(`${o} already started`),!1;try{t.start()}catch(_){return Si.error(`Failed to start ${o} `,_),!1}}if(t.started=!0,r?.length){Si.debug("Registering commands of plugin",o);for(let _ of r)try{E1(_,o)}catch(q){return Si.error(`Failed to register command ${_.name} `,q),!1}}if(gde&&xG(t,Q),n){Si.debug("Adding context menus patches of plugin",o);for(let _ in n)tl(_,n[_])}return a&&Oi(a),s&&s.forEach(_=>yG(_)),l&&Q0(l),c&&ni(c),u&&S$(u),p&&Vz(o,p.render,p.icon),m&&l$(o,m),x&&m$(o,x),g&&K0(o,g),v&&k$(o,v.render,v.icon),y&&E$(o,y),A&&(A.location==="channeltoolbar"?V$(o,A.render,A.priority):J$(o,A.render,A.priority)),k&&$$(o,k),w&&pG(o,w.render,w.priority),I&&nG(o,I.render,I.priority),E&&t$(o,E.wrapper,E.priority),N&&lG(o,N.render,N.priority),B&&j$(o,B),!0},e=>`startPlugin ${e.name}`),Gp=Dp("stopPlugin",function(t){let{name:o,commands:r,contextMenus:n,managedStyle:a,userProfileBadges:s,onBeforeMessageEdit:l,onBeforeMessageSend:c,onMessageClick:u,chatBarButton:p,renderMemberListDecorator:m,renderMessageAccessory:g,renderMessageDecoration:x,messagePopoverButton:v,renderNicknameIcon:y,headerBarButton:A,audioProcessor:k,userAreaButton:w,renderProfileCollection:I,chatBarButtonWrapper:E,renderProfileSection:N,gifPickerContextMenu:B}=t;if(t.stop){if(Si.info("Stopping plugin",o),!t.started)return Si.warn(`${o} already stopped`),!1;try{t.stop()}catch(_){return Si.error(`Failed to stop ${o} `,_),!1}}if(t.started=!1,r?.length){Si.debug("Unregistering commands of plugin",o);for(let _ of r)try{Fp(_.name)}catch(q){return Si.error(`Failed to unregister command ${_.name} `,q),!1}}if(xde(t,Q),n){Si.debug("Removing context menus patches of plugin",o);for(let _ in n)vc(_,n[_])}return a&&La(a),s&&s.forEach(_=>bG(_)),l&&Z0(l),c&&ri(c),u&&w$(u),p&&e$(o),m&&c$(o),x&&f$(o),g&&tw(o),v&&C$(o),y&&D$(o),A&&(A.location==="channeltoolbar"?eG(o):X$(o)),k&&G$(o),w&&mG(o),I&&rG(o),E&&o$(o),N&&cG(o),B&&q$(o),!0},e=>`stopPlugin ${e.name}`),vG=Up(function(){let t=Object.values(et),o=Me.plugins,r=["onBeforeMessageEdit","onBeforeMessageSend","onMessageClick","renderMemberListDecorator","renderMessageAccessory","renderMessageDecoration","renderNicknameIcon"],n=new Set;for(let a of t)if(Ve(a.name)){a.dependencies?.forEach(s=>{let l=et[s];if(!l){let c=new Error(`Plugin ${a.name} has unresolved dependency ${s}`);Si.warn(c);return}o[s].enabled=!0,l.isDependency=!0}),a.commands?.length&&n.add("CommandsAPI"),(a.onBeforeMessageEdit||a.onBeforeMessageSend||a.onMessageClick)&&n.add("MessageEventsAPI"),a.chatBarButton&&n.add("ChatInputButtonAPI"),a.renderMemberListDecorator&&n.add("MemberListDecoratorsAPI"),a.renderMessageAccessory&&n.add("MessageAccessoriesAPI"),a.renderMessageDecoration&&n.add("MessageDecorationsAPI"),a.messagePopoverButton&&n.add("MessagePopoverAPI"),a.userProfileBadge&&n.add("BadgeAPI"),a.renderNicknameIcon&&n.add("NicknameIconsAPI"),a.headerBarButton&&n.add("HeaderBarAPI"),a.audioProcessor&&n.add("AudioPlayerAPI"),a.userAreaButton&&n.add("UserAreaAPI"),a.renderProfileCollection&&n.add("ProfileCollectionsAPI"),a.chatBarButtonWrapper&&n.add("ChatInputButtonAPI"),a.renderProfileSection&&n.add("ProfileSectionsAPI"),a.gifPickerContextMenu&&n.add("ExtraContextMenusAPI");for(let s of r)a[s]&&=a[s].bind(a)}for(let a of n)et[a].isDependency=!0,o[a].enabled=!0;for(let a of t){if(a.settings){a.settings.pluginName=a.name;for(let[s,l]of Object.entries(a.settings.def))l.onChange&&to.addChangeListener(`plugins.${a.name}.${s}`,l.onChange)}if(a.patches&&Ve(a.name))for(let s of a.patches)hde(s,a.name)}})});var AG={};Bt(AG,{BadgePosition:()=>XS,_getBadges:()=>wG,addProfileBadge:()=>yG,removeProfileBadge:()=>bG});function yG(e){e.component&&=H.wrap(e.component,{noop:!0}),SG.add(e)}function bG(e){return SG.delete(e)}function wG(e){let t=[];for(let a of SG){if(a.shouldShow&&!a.shouldShow(e))continue;let s=a.getBadges?a.getBadges(e).map(l=>({...e,...l,component:l.component&&H.wrap(l.component,{noop:!0})})):[{...e,...a}];a.position===0?t.unshift(...s):t.push(...s)}let o=sl.getDonorBadges(e.userId),r=sl.getEquicordDonorBadges(e.userId),n=Ve(j0.name)?j0.getGlobalBadges(e.userId):!1;return n&&t.unshift(...n.map(a=>({...e,...a}))),o&&t.unshift(...o.map(a=>({...e,...a}))),r&&t.unshift(...r.map(a=>({...e,...a}))),t}var XS,SG,I1=h(()=>{"use strict";d();Pe();Qz();q0();Jt();XS=(o=>(o[o.START=0]="START",o[o.END=1]="END",o))(XS||{}),SG=new Set});var vde=h(()=>{});var ts,L1=h(()=>{d();ts="0d27aec1ab604f1c0d7f7eb9114114e71da93573"});function ai(){window.DiscordNative.app.relaunch()}function n9(e){window.DiscordNative.fileManager.showItemInFolder(e)}var hd=h(()=>{"use strict";d()});var kG={};Bt(kG,{UpdateLogger:()=>Hl,changes:()=>J0,checkForUpdates:()=>Sc,getRepo:()=>X0,isNewer:()=>i9,isOutdated:()=>Sf,maybePromptToUpdate:()=>dw,update:()=>Hp,updateError:()=>O1});async function r9(e){let t=await e;if(t.ok)return t.value;throw O1=t.error,t.error}async function Sc(){return J0=await r9(VencordNative.updater.getUpdates()),Sf=J0.length>0}async function Hp(){if(!Sf)return!0;let e=await r9(VencordNative.updater.update());if(e&&(Sf=!1,!await r9(VencordNative.updater.rebuild())))throw new Error("The Build failed. Please try manually building the new update");return e}async function dw(e,t=!1){try{if(await Sc()){let r=confirm(e);if(r&&i9)return alert("Your local copy has more recent commits. Please stash or reset them.");r&&(await Hp(),ai())}}catch(o){Hl.error(o),alert("That also failed :( Try updating or re-installing with the installer!")}}var Hl,Sf,i9,O1,J0,X0,ru=h(()=>{"use strict";d();L1();He();hd();Hl=new ie("Updater","white"),Sf=!1,i9=!1;X0=()=>r9(VencordNative.updater.getRepo())});function yde(){dw("Uh Oh! Failed to render this Page. However, there is an update available that might fix it. Would you like to update and restart now?")}var bde=h(()=>{"use strict";d();ru()});function br({children:e}){return i("section",{className:"vc-settings-tab"},e)}function Sr(e,t){return H.wrap(e,{displayName:`${t}SettingsTab`,message:`Failed to render the ${t} tab. If this issue persists, try using the installer to reinstall!`,onError:CG})}function xd(e){e=Sr(e,e.displayName||"SettingsTab");try{ce(t=>i(be,{...t,size:"lg",title:e.displayName?.replace("SettingsTab","")||"Settings"},i(e,null)))}catch{CG()}}var CG,wf=h(()=>{"use strict";d();Pe();bde();N1();C();CG=Up(yde)});var Sde=h(()=>{});var wde=h(()=>{});function Ht({variant:e="primary",outline:t=!1,defaultPadding:o,children:r,className:n,...a}){return i("div",{className:X($Ye("base",e,t&&"outline",(o??!n)&&"defaultPadding"),n),...a},r)}var $Ye,Qn=h(()=>{"use strict";d();wde();we();Be();$Ye=K("vc-card-")});function GYe(e){if(!e?.code||!e.cmd)return`An unknown error occurred. Please try again or see the console for more info.`;let{code:t,path:o,cmd:r,stderr:n}=e;if(t==="ENOENT")return`Command \`${o}\` not found. Please install it and try again.`;let a=n||`Code \`${t}\`. See the console for more info.`;return`An error occurred while running \`${r}\`: ${a}`}function TG(e,t){return async()=>{e(!0);try{await t()}catch(o){Hl.error(o);let r=GYe(o);ce(n=>i(Dn,{...n,title:"Oops!",confirmText:"OK",variant:"primary"},i(Nr,null,r.split(` `).map((a,s)=>i("div",{key:s},kt.parse(a))))))}finally{e(!1)}}}var Ade=h(()=>{"use strict";d();xc();ru();C()});function F1({repo:e,hash:t,disabled:o=!1}){return i(so,{href:`${e}/commit/${t}`,disabled:o},t.slice(0,7))}function kde({updates:e,repo:t,repoPending:o}){return i(Ht,{className:z.top16,style:{padding:0},defaultPadding:!1},e.map(({hash:r,author:n,message:a},s)=>i("div",{key:r,style:{padding:"12px 16px",borderBottom:s0;return i(f,null,i(pe,{className:z.bottom8,gap:"8px"},i(de,{disabled:a||r,onClick:TG(n,async()=>{await Sc()?o(J0):(o([]),D.show({message:"No updates found!",id:D.genId(),type:D.Type.MESSAGE,options:{position:D.Position.BOTTOM}}))})},"Check for Updates"),l&&i(de,{size:"small",variant:"primary",disabled:a||r,onClick:TG(s,async()=>{await Hp()&&(o([]),await new Promise(c=>{ce(u=>i(Dn,{...u,title:"Update Success!",subtitle:"Successfully updated. Restart now to apply the changes?",confirmText:"Restart",cancelText:"Not now!",variant:"primary",onConfirm:()=>{ai(),c()},onCancel:c}))}))})},"Update Now")),!t&&O1?i(f,null,i(nr,{size:"md",weight:"medium",color:"text-strong"},"Error checking for updates"),i(Nr,{className:z.top8,style:{padding:"1em"}},i("p",null,O1.stderr||O1.stdout||"An unknown error occurred"))):l?i(f,null,i(U,null,"There ",t.length===1?"is 1 update":`are ${t.length} updates`," available. Click the button above to download and install."),i(kde,{updates:t,...e})):i(U,null,"You're running the latest version of Equicord."))}var IG=h(()=>{"use strict";d();Tt();Qn();xc();Lt();$r();Je();Jc();Wt();hd();ru();C();Ade()});var Cn={};Bt(Cn,{clear:()=>HYe,createStore:()=>a9,del:()=>aa,delMany:()=>MG,entries:()=>RG,get:()=>vt,getMany:()=>PG,keys:()=>BG,promisifyRequest:()=>Is,set:()=>Ct,setMany:()=>DG,update:()=>Es,values:()=>jYe});function Is(e){return new Promise((t,o)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>o(e.error)})}function a9(e,t){let o=indexedDB.open(e);o.onupgradeneeded=()=>o.result.createObjectStore(t);let r=Is(o);return(n,a)=>r.then(s=>a(s.transaction(t,n).objectStore(t)))}function iu(){return EG||(EG=a9("VencordData","VencordStore")),EG}function vt(e,t=iu()){return t("readonly",o=>Is(o.get(e)))}function Ct(e,t,o=iu()){return o("readwrite",r=>(r.put(t,e),Is(r.transaction)))}function DG(e,t=iu()){return t("readwrite",o=>(e.forEach(r=>o.put(r[1],r[0])),Is(o.transaction)))}function PG(e,t=iu()){return t("readonly",o=>Promise.all(e.map(r=>Is(o.get(r)))))}function Es(e,t,o=iu()){return o("readwrite",r=>new Promise((n,a)=>{r.get(e).onsuccess=function(){try{r.put(t(this.result),e),n(Is(r.transaction))}catch(s){a(s)}}}))}function aa(e,t=iu()){return t("readwrite",o=>(o.delete(e),Is(o.transaction)))}function MG(e,t=iu()){return t("readwrite",o=>(e.forEach(r=>o.delete(r)),Is(o.transaction)))}function HYe(e=iu()){return e("readwrite",t=>(t.clear(),Is(t.transaction)))}function NG(e,t){return e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},Is(e.transaction)}function BG(e=iu()){return e("readonly",t=>{if(t.getAllKeys)return Is(t.getAllKeys());let o=[];return NG(t,r=>o.push(r.key)).then(()=>o)})}function jYe(e=iu()){return e("readonly",t=>{if(t.getAll)return Is(t.getAll());let o=[];return NG(t,r=>o.push(r.value)).then(()=>o)})}function RG(e=iu()){return e("readonly",t=>{if(t.getAll&&t.getAllKeys)return Promise.all([Is(t.getAllKeys()),Is(t.getAll())]).then(([r,n])=>r.map((a,s)=>[a,n[s]]));let o=[];return e("readonly",r=>NG(r,n=>o.push([n.key,n.value])).then(()=>o))})}var EG,Io=h(()=>{"use strict";d();});var LG={};Bt(LG,{updateMessage:()=>Ds});function Ds(e,t,o){let r=C3.getOrCreate(e);if(!r.has(t))return;let n=r.update(t,a=>o?a.merge(o):new a.constructor(a));C3.commit(n),lt.emitChange()}var V0=h(()=>{"use strict";d();C()});var FG={};Bt(FG,{currentNotice:()=>eh,nextNotice:()=>Ide,noticesQueue:()=>pw,popNotice:()=>au,showNotice:()=>sa});function au(){OG.dismiss()}function Ide(){eh=pw.shift(),eh&&OG.show(...eh,"EquicordNotice")}function sa(e,t,o){let r=nz(e)?e:i(H,{fallback:()=>"Error Showing Notice"},e);pw.push(["GENERIC",r,t,o]),eh||Ide()}var OG,pw,eh,Af=h(()=>{"use strict";d();Pe();Kt();le();Zo(e=>e.show&&e.dismiss&&!e.suppressAll,e=>OG=e);pw=[],eh=null});var Oa,jp=h(()=>{"use strict";d();Oa=class{constructor(t=1/0){this.maxSize=t}maxSize;queue=[];promise;next(){let t=this.queue.shift();t?this.promise=Promise.resolve().then(t).finally(()=>this.next()):this.promise=void 0}run(){this.promise||this.next()}push(t){this.size>=this.maxSize&&this.queue.shift(),this.queue.push(t),this.run()}unshift(t){this.size>=this.maxSize&&this.queue.pop(),this.queue.unshift(t),this.run()}get size(){return this.queue.length}}});var Ede=h(()=>{});var s9,_G=h(()=>{"use strict";d();Ede();j();Pe();Be();C();s9=H.wrap(function({title:t,body:o,richBody:r,color:n,icon:a,onClick:s,onClose:l,image:c,permanent:u,className:p,dismissOnClick:m}){let{timeout:g,position:x}=lo(["notifications.timeout","notifications.position"]).notifications,[v,y]=T(!1),[A,k]=T(0),w=Se(Date.now()),I=Se(null);G(()=>{if(g===0||u)return;if(v){I.current===null&&(I.current=Date.now());return}if(I.current!==null){let B=Date.now()-I.current;w.current+=B,I.current=null}let N=setInterval(()=>{let B=Date.now()-w.current;B>=g?l():k(B)},10);return()=>clearInterval(N)},[g,v,u]);let E=A/g;return i("button",{className:X("vc-notification-root",p),style:x==="bottom-right"?{bottom:"1rem"}:{top:"3rem"},onClick:()=>{s?.(),m!==!1&&l()},onContextMenu:N=>{N.preventDefault(),N.stopPropagation(),l()},onMouseEnter:()=>y(!0),onMouseLeave:()=>y(!1)},i("div",{className:"vc-notification"},a&&i("img",{className:"vc-notification-icon",src:a,alt:""}),i("div",{className:"vc-notification-content"},i("div",{className:"vc-notification-header"},i("h2",{className:"vc-notification-title"},t),i("button",{className:"vc-notification-close-btn",onClick:N=>{N.preventDefault(),N.stopPropagation(),l()}},i("svg",{width:"24",height:"24",viewBox:"0 0 24 24",role:"img","aria-labelledby":"vc-notification-dismiss-title"},i("title",{id:"vc-notification-dismiss-title"},"Dismiss Notification"),i("path",{fill:"currentColor",d:"M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"})))),r??i("p",{className:"vc-notification-p"},o))),c&&i("img",{className:"vc-notification-img",src:c,alt:""}),g!==0&&!u&&i("div",{className:"vc-notification-progressbar",style:{width:`${(1-E)*100}%`,backgroundColor:n||"var(--brand-500)"}}))},{onError:({props:e})=>e.onClose()})});function Dde(){return i("section",{className:z.top16},i(oe,null,"Notifications"),i(U,{className:z.bottom8},"Settings for Notifications sent by Vencord. This does NOT include Discord notifications (messages, etc)"),i(pe,null,i(de,{onClick:UG},"Notification Settings"),i(de,{onClick:kf},"View Notification Log")))}function UG(){ce(e=>i(be,{...e,size:"lg",title:"Notification Settings"},i(qYe,null)))}function qYe(){let e=lo(["notifications.*"]).notifications;return i(f,null,i(oe,{tag:"h5"},"Notification Style"),e.useNative!=="never"&&Notification?.permission==="denied"&&i(Nr,{style:{padding:"1em"},className:z.bottom8},i(oe,null,"Desktop Notification Permission denied"),i(U,null,"You have denied Notification Permissions. Thus, Desktop notifications will not work!")),i(U,{className:z.bottom8},"Some plugins may show you notifications. These come in two styles:",i("ul",null,i("li",null,i("strong",null,"Equicord Notifications"),": These are in-app notifications"),i("li",null,i("strong",null,"Desktop Notifications"),": Native Desktop notifications (like when you get a ping)"))),i(qt,{placeholder:"Notification Style",options:[{label:"Only use Desktop notifications when Discord is not focused",value:"not-focused",default:!0},{label:"Always use Desktop notifications",value:"always"},{label:"Always use Equicord notifications",value:"never"}],closeOnSelect:!0,select:t=>e.useNative=t,isSelected:t=>t===e.useNative,serialize:gc}),i(oe,{className:z.top16+" "+z.bottom8},"Notification Position"),i(qt,{isDisabled:e.useNative==="always",placeholder:"Notification Position",options:[{label:"Bottom Right",value:"bottom-right",default:!0},{label:"Top Right",value:"top-right"}],select:t=>e.position=t,isSelected:t=>t===e.position,serialize:gc}),i(oe,{className:z.top16+" "+z.bottom8},"Missed Notification Count"),i(mo,{title:"When refocusing discord a notification will popup with how you missed",value:e.missed,onChange:t=>e.missed=t}),i(oe,{className:z.top16+" "+z.bottom8},"Notification Timeout"),i(U,{className:z.bottom16},"Set to 0s to never automatically time out"),i(cn,{disabled:e.useNative==="always",markers:[0,1e3,2500,5e3,1e4,2e4],minValue:0,maxValue:2e4,initialValue:e.timeout,onValueChange:t=>e.timeout=t,onValueRender:t=>(t/1e3).toFixed(2)+"s",onMarkerRender:t=>t/1e3+"s",stickToMarkers:!1}),i(oe,{className:z.top16+" "+z.bottom8},"Notification Log Limit"),i(U,{className:z.bottom16},"The amount of notifications to save in the log until old ones are removed. Set to ",i("code",null,"0")," to disable Notification log and ",i("code",null,"\u221E")," to never automatically remove old Notifications"),i(cn,{markers:[0,25,50,75,100,200],minValue:0,maxValue:200,stickToMarkers:!0,initialValue:e.logLimit,onValueChange:t=>e.logLimit=t,onValueRender:t=>t===200?"\u221E":t,onMarkerRender:t=>t===200?"\u221E":t}))}var zG=h(()=>{"use strict";d();mw();j();Tt();xc();Lt();hi();We();Je();Wt();Be();C()});var Pde,Mde=h(()=>{d();Pde="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"});var Nde,Bde=h(()=>{d();Mde();Nde=(e=21)=>{let t="",o=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=Pde[o[e]&63];return t}});async function Rde(e){if(e.noPersist)return;let t=Me.notifications.logLimit;t!==0&&(await Es(l9,o=>{let r=o??[],{onClick:n,onClose:a,richBody:s,permanent:l,noPersist:c,dismissOnClick:u,...p}=e;return r.unshift({...p,timestamp:Date.now(),id:Nde()}),r.length>t&&t!==200&&(r.length=t),r}),fw.forEach(o=>o()))}async function KYe(e){let t=!1;await Es(l9,o=>{let r=o??[],n=r.findIndex(a=>a.id===e);return n===-1||(r.splice(n,1),t=!0),r}),t&&fw.forEach(o=>o())}function QYe(){let[e,t]=d1(a=>a+1,0);G(()=>(fw.add(t),()=>{fw.delete(t)}),[]);let[o,r,n]=Ro(WYe,{fallbackValue:[],deps:[e]});return[o,n]}function ZYe({data:e}){let[t,o]=T(!1);return i("div",{className:_1("wrapper",{removing:t})},i(s9,{...e,permanent:!0,dismissOnClick:!1,onClose:()=>{t||(o(!0),setTimeout(()=>KYe(e.id),200))},richBody:i("div",{className:_1("body-wrapper")},i("div",{className:_1("body")},e.body),i(Hr,{timestamp:new Date(e.timestamp),className:_1("timestamp")}))}))}function YYe({log:e,pending:t}){return!e.length&&!t?i("div",null,i("div",{className:_1("empty")}),i(U,{style:{textAlign:"center"}},"No notifications yet")):i(MS,{className:_1("container"),sections:[e.length],sectionHeight:0,rowHeight:120,renderSection:()=>null,renderRow:o=>i(ZYe,{data:e[o.row],key:e[o.row].id})})}function JYe(e){let[t,o]=QYe();return i(be,{...e,size:"xl",title:"Notification Log",actions:[{text:"Notification Settings",variant:"primary",onClick:UG},{text:"Clear Notification Log",variant:"critical-primary",disabled:!t.length,onClick(){ce(r=>i(Dn,{...r,title:"Are you sure?",subtitle:`This will permanently remove ${t.length} notification${t.length===1?"":"s"}. This action cannot be undone.`,confirmText:"Do it!",onConfirm:async()=>{await Ct(l9,[]),fw.forEach(n=>n())}}))}}]},i(YYe,{log:t,pending:o}))}function kf(){ce(e=>i(JYe,{...e}))}var l9,WYe,_1,fw,mw=h(()=>{"use strict";d();Io();j();Je();zG();we();Kt();C();Bde();_G();l9="notification-log",WYe=async()=>await vt(l9)??[],_1=K("vc-notification-log-"),fw=new Set});function eJe(){if(!$G){let e=document.createElement("div");e.id="vc-notification-container",document.body.append(e),$G=Bi(e)}return $G}function tJe(e,t){let o=eJe();return new Promise(r=>{o.render(i(s9,{key:t,...e,onClose:()=>{e.onClose?.(),o.render(null),r()}}))})}function oJe(){if(typeof Notification>"u")return!1;let{useNative:e}=Me.notifications;return e==="always"?!0:e==="not-focused"?!document.hasFocus():!1}async function Lde(){return Notification.permission==="granted"||Notification.permission!=="denied"&&await Notification.requestPermission()==="granted"}async function At(e){if(Rde(e),oJe()&&await Lde()){let{title:t,body:o,icon:r,image:n,onClick:a=null,onClose:s=null}=e,l=new Notification(t,{body:o,icon:r,image:n});l.onclick=a,l.onclose=s,Vs.isFocused()||gw++}else XYe.push(()=>tJe({...e,onClose:()=>{e.onClose?.(),Vs.isFocused()||gw++}},VYe++))}var XYe,$G,VYe,gw,Ode=h(()=>{"use strict";d();j();jp();C();_G();mw();XYe=new Oa,VYe=42,gw=0;window.addEventListener("focus",()=>{let{missed:e,timeout:t,useNative:o}=Me.notifications;e&&gw>0&&t>0&&o==="never"&&(At({title:"While you were away",body:`${gw} notifications received`,onClick:()=>kf()}),gw=0)})});var GG={};Bt(GG,{requestPermission:()=>Lde,showNotification:()=>At});var Fa=h(()=>{"use strict";d();Ode()});var jG={};Bt(jG,{ServerListRenderPosition:()=>Cf,addServerListElement:()=>jl,removeServerListElement:()=>ll,renderAll:()=>aJe});function HG(e){switch(e){case 0:return rJe;case 1:return nJe;case 2:return iJe}}function jl(e,t,o=0){HG(e).set(t,o)}function ll(e,t){HG(e).delete(t)}var Cf,nJe,rJe,iJe,aJe,Tf=h(()=>{"use strict";d();Pe();Cf=(r=>(r[r.Above=0]="Above",r[r.In=1]="In",r[r.Below=2]="Below",r))(Cf||{}),nJe=new Map,rJe=new Map,iJe=new Map;aJe=e=>Array.from(HG(e).entries()).sort((t,o)=>o[1]-t[1]).map(([t],o)=>i(H,{noop:!0,key:o},i(t,null)))});var WG={};Bt(WG,{_getSurfaceProps:()=>pJe,_trackSurfaceInstance:()=>fJe,_useSurfaceProps:()=>mJe,addSurfacePropsProvider:()=>vd,notifySurfaceClassesChanged:()=>su});function lJe(e){let t=c9.get(e);return t==null&&(t=new Set,c9.set(e,t)),t}function cJe(e){let t=u9.get(e);return t==null&&(t=new Set,u9.set(e,t)),t}function hw(e,t){return e?t?o=>{e(o),t(o)}:e:t}function uJe(e,t){return e?t?o=>{e(o),t(o)}:e:t}function dJe(e,t){let o=uJe(e.ref,t.ref);o&&(e.ref=o);let r=hw(e.onFocusCapture,t.onFocusCapture);r&&(e.onFocusCapture=r);let n=hw(e.onBlurCapture,t.onBlurCapture);n&&(e.onBlurCapture=n);let a=hw(e.onMouseDownCapture,t.onMouseDownCapture);a&&(e.onMouseDownCapture=a);let s=hw(e.onMouseOverCapture,t.onMouseOverCapture);s&&(e.onMouseOverCapture=s);let l=hw(e.onMouseOutCapture,t.onMouseOutCapture);l&&(e.onMouseOutCapture=l),t.style&&(e.style={...e.style,...t.style});for(let[c,u]of Object.entries(t))c.startsWith("data-")&&typeof u=="string"&&(e[c]=u);return e}function _de(e){let t={};for(let o of c9.get(e)??[]){let r;try{r=o()}catch(n){Fde.has(o)||(Fde.add(o),sJe.error(`Surface props provider failed for ${e}`,n));continue}r&&dJe(t,r)}return t}function qG(e){let t=d9.get(e)?.deref();t?t.forceUpdate():d9.delete(e);for(let o of u9.get(e)??[])o()}function vd(e,t){return lJe(e).add(t),qG(e),()=>{c9.get(e)?.delete(t),qG(e)}}function su(e){qG(e)}function pJe(e){return _de(e)}function mJe(e){let t=Vt();return G(()=>{let o=()=>t();return cJe(e).add(o),()=>{u9.get(e)?.delete(o)}},[e]),_de(e)}function fJe(e,t){d9.get(e)?.deref()!==t&&d9.set(e,new WeakRef(t))}var c9,u9,d9,Fde,sJe,KG=h(()=>{"use strict";d();He();Kt();C();c9=new Map,u9=new Map,d9=new Map,Fde=new WeakSet,sJe=new ie("SurfaceClasses")});var ZG={};Bt(ZG,{addThemeChangeListener:()=>hJe,initQuickCssThemeStore:()=>gJe,removeThemeChangeListener:()=>xJe});function zde(e){return Me.themeActivationModes?.[e]??"always"}function $de(e,t){return e==="always"?!0:t?e===t:!1}async function Gde(e){U1?U1.disabled=!e:e&&(U1=bs("vencord-custom-css",M1),VencordNative.quickCss.addChangeListener(t=>{U1.textContent=t,U1.disabled=!Me.useQuickCss,jde()}),U1.textContent=await VencordNative.quickCss.get())}async function th(){Ude??=bs("vencord-themes",M1);let{enabledThemeLinks:e,enabledThemes:t}=Me,{ThemeStore:o}=(Az(),Jx(Tue)),r=o==null?void 0:o.theme==="light"?"light":"dark",n=new Set;for(let a of e){let l=/^@(light|dark) (.*)/.exec(a)?.[2]??a,c=zde(a);$de(c,r)&&n.add(l)}{let a=Date.now();for(let s of t){let l=zde(s);$de(l,r)&&n.add(`vencord:///themes/${s}?v=${a}`)}}Ude.textContent=Array.from(n).map(a=>`@import url("${a.trim()}");`).join(` `),jde(),QG.forEach(a=>a())}function Hde(e,t){if(!e?.document)return;let o=e.document;o.querySelector("vencord-root")?.remove();let r=P1.cloneNode(!1);r.append(gd.cloneNode(!0),_p.cloneNode(!0)),t!=="DISCORD_OutOfProcessOverlay"&&r.append(M1.cloneNode(!0)),o.documentElement.appendChild(r)}function jde(){if(ks)for(let e of ks.getWindowKeys())Hde(ks.getWindow(e),e)}function gJe(e){th();let t=e.theme;e.addChangeListener(()=>{t!==e.theme&&(t=e.theme,th())})}function hJe(e){QG.add(e)}function xJe(e){QG.delete(e)}var U1,Ude,QG,qde=h(()=>{"use strict";d();j();we();Ca();C();nl();QG=new Set;document.addEventListener("DOMContentLoaded",()=>{th(),Gde(Me.useQuickCss),to.addChangeListener("useQuickCss",Gde),to.addChangeListener("enabledThemeLinks",th),to.addChangeListener("enabledThemes",th),to.addChangeListener("themeActivationModes",th),window.addEventListener("message",e=>{let{discordPopoutEvent:t}=e.data||{};t?.type==="loaded"&&Hde(ks.getWindow(t.key),t.key)}),VencordNative.quickCss.addThemeChangeListener(th)},{once:!0})});var JG={};Bt(JG,{UserSettings:()=>YG,getUserSetting:()=>Wde,getUserSettingLazy:()=>tn});function Wde(e,t){if(!Ve("UserSettingsAPI"))throw new Error("Cannot use UserSettingsAPI without setting it as a dependency.");for(let o in YG){let r=YG[o];if(r.userSettingsAPIGroup===e&&r.userSettingsAPIName===t)return r}}function tn(e,t){return ko(()=>Wde(e,t))}var YG,_a=h(()=>{"use strict";d();Er();He();le();Jt();YG=ln(()=>{let e=sd('"textAndImages","renderSpoilers"');return e==null?new ie("UserSettingsAPI").error("Didn't find settings module."):vo(e)})});var XG={};Bt(XG,{AudioPlayer:()=>OJe,Badges:()=>p9,ChatButtons:()=>PJe,Commands:()=>bJe,ContextMenu:()=>DJe,DataStore:()=>Le,GifPickerContextMenu:()=>$Je,HeaderBar:()=>MJe,MemberListDecorators:()=>TJe,MessageAccessories:()=>SJe,MessageDecorations:()=>CJe,MessageEvents:()=>vJe,MessagePopover:()=>wJe,MessageUpdater:()=>NJe,NicknameIcons:()=>LJe,Notices:()=>yJe,Notifications:()=>xw,PluginManager:()=>uw,ProfileCollections:()=>UJe,ProfileSections:()=>zJe,ServerList:()=>AJe,Settings:()=>IJe,Styles:()=>EJe,SurfaceClasses:()=>kJe,Themes:()=>RJe,UserArea:()=>FJe,UserSettings:()=>BJe,isEquicord:()=>_Je});var vJe,yJe,bJe,Le,SJe,wJe,p9,AJe,kJe,CJe,TJe,IJe,EJe,xw,DJe,PJe,MJe,NJe,BJe,RJe,LJe,OJe,FJe,_Je,UJe,zJe,$Je,on=h(()=>{"use strict";d();rl();I1();Ba();yr();Fo();Io();J3();zp();d$();ow();h$();yc();q3();V0();M$();Af();Fa();sw();Jt();aG();dG();Tf();j();nl();KG();qde();_a();vJe=A$,yJe=FG,bJe=s$,Le=Cn,SJe=p$,wJe=T$,p9=AG,AJe=jG,kJe=WG,CJe=g$,TJe=u$,IJe=jz,EJe=L$,xw=GG,DJe=Xz,PJe=n$,MJe=tG,NJe=LG,BJe=JG,RJe=ZG,LJe=P$,OJe=H$,FJe=fG,_Je=!0,UJe=iG,zJe=uG,$Je=K$});function HJe(e){if(!e)return null;try{let t=e.replace(/^git\+/,""),o=new URL(t);if(!o.hostname.endsWith("github.com"))return null;let r=o.pathname.replace(/\.git$/,"").split("/").filter(Boolean);return r.length<2?null:`${r[0]}/${r[1]}`}catch{return null}}async function jJe(e,t,o){if(!e||typeof fetch!="function")return[];try{let r=await fetch(`${GJe}/${e}/compare/${t}...${o}`,{headers:{Accept:"application/vnd.github+json","Cache-Control":"no-cache"}});if(!r.ok)return[];let n=await r.json();return!n||!Array.isArray(n.commits)?[]:n.commits.map(a=>{let l=(a?.commit?.message??"").split(` `)[0]||"No message",c=a?.commit?.author?.name||a?.author?.login||"Unknown",u=a?.commit?.author?.date?Date.parse(a.commit.author.date):void 0;return{hash:a?.sha||"",author:c,message:l,timestamp:Number.isNaN(u)?void 0:u}})}catch(r){return console.warn("Failed to fetch commits between hashes",r),[]}}function qJe(e){let t=new Set,o=r=>{r!=null&&t.add(typeof r=="string"?r:String(r))};return e instanceof Set||e instanceof Map||Array.isArray(e)?e.forEach(o):typeof e=="string"?o(e):e&&typeof e=="object"&&Object.values(e).forEach(o),t}function WJe(e){let t=new Map,o=(r,n)=>{r!=null&&t.set(String(r),qJe(n))};return e?e instanceof Map?(e.forEach((r,n)=>o(n,r)),t):Array.isArray(e)?(e.forEach(r=>{Array.isArray(r)&&r.length>0&&o(r[0],r[1])}),t):(typeof e=="object"&&Object.entries(e).forEach(([r,n])=>o(r,n)),t):t}function KJe(e){return Object.fromEntries(Array.from(e.entries()).map(([t,o])=>[t,Array.from(o)]))}async function VG(e){await Le.set(tH,KJe(e))}function Zde(e){return e&&typeof e.get=="function"&&typeof e.size=="number"}function vw(e){return e?Zde(e)?e.size:Object.keys(e).length:0}function oH(e){return e?Zde(e)?Array.from(e.entries()):Object.entries(e):[]}async function f9(){let e=await Le.get(m9);return e&&e.forEach(t=>{t.newSettings&&!(t.newSettings instanceof Map)&&(t.newSettings=new Map(Object.entries(t.newSettings)))}),e||[]}async function nH(e,t,o,r,n=!1){let a=await f9(),s=await rH(),l=ts;if(n){let g=await x9(),x=e.length>0?e[0].hash:l;if(g===x)return}if(!n&&e.length===0&&t.length===0&&o.length===0&&vw(r)===0)return;let c=n?"repository_fetch":"update",u=l,p=l;n?e.length>0&&(p=e[0].hash):(u=s||"unknown",p=l);let m={id:crypto.randomUUID(),timestamp:Date.now(),fromHash:u,toHash:p,commits:e,newPlugins:t,updatedPlugins:o,newSettings:vw(r)>0?Object.fromEntries(r):void 0,type:c};if(a.unshift(m),a.length>50&&a.splice(50),await Le.set(m9,a),!n)await Yde(l);else{let g=e.length>0?e[0].hash:l;await ZJe(g)}await Xde(),await tpe()}async function rH(){return await Le.get(eH)}async function Yde(e){await Le.set(eH,e)}async function Jde(){let e=await Le.get(Kde);return new Set(e||[])}async function Xde(){let e=Object.keys(et);await Le.set(Kde,e)}function QJe(e){let t=et[e]?.settings?.def||{};return new Set(Object.keys(t).filter(o=>o!=="enabled"))}function iH(e){return new Map(e.map(t=>[t,QJe(t)]))}async function Vde(){let e=await Le.get(tH);if(e===void 0){let o=await Jde(),r=[...new Set([...Object.keys(et),...Array.from(o)])],n=iH(r);return await VG(n),n}let t=WJe(e);return(e instanceof Map||Array.isArray(e)||e&&typeof e=="object"&&Object.values(e).some(o=>o instanceof Set||o instanceof Map))&&await VG(t),t}async function aH(){let e=iH(Object.keys(et)),t=await Vde(),o=new Map;return e.forEach((r,n)=>{let a=t.get(n);if(!a)return;let s=[...r].filter(l=>!a.has(l));s.length>0&&o.set(n,s)}),o}async function epe(e){let t=await rH();if(!t||t==="unknown"||t===ts)return[];let o=HJe(e);return o?jJe(o,t,ts):[]}async function tpe(){let e=iH(Object.keys(et)),t=await Vde(),o=new Map;new Set([...e.keys(),...t.keys()]).forEach(r=>{o.set(r,new Set([...t.get(r)||[],...e.get(r)||[]]))}),await VG(o)}async function g9(){let e=Object.keys(et),t=await Jde();return e.filter(o=>!t.has(o)&&!et[o].hidden&&!et[o].required)}async function h9(){return[]}async function ope(){await Le.del(m9),await Le.del(eH),await Le.del(tH)}async function npe(e){let o=(await f9()).filter(r=>r.id!==e);await Le.set(m9,o)}async function rpe(){await rH()||(await Yde(ts),await Xde(),await tpe())}async function x9(){return await Le.get(Qde)}async function ZJe(e){await Le.set(Qde,e)}function ipe(e){let t=new Date(e),r=new Date().getTime()-t.getTime(),n=Math.floor(r/(1e3*60)),a=Math.floor(r/(1e3*60*60)),s=Math.floor(r/(1e3*60*60*24));return n<60?`${n} minute${n!==1?"s":""} ago`:a<24?`${a} hour${a!==1?"s":""} ago`:s<7?`${s} day${s!==1?"s":""} ago`:t.toLocaleDateString()}var m9,eH,Kde,tH,Qde,GJe,ape=h(()=>{"use strict";d();on();L1();Na();m9="EquicordChangelog_History",eH="EquicordChangelog_LastSeenHash",Kde="EquicordChangelog_KnownPlugins",tH="EquicordChangelog_KnownSettings",Qde="EquicordChangelog_LastRepoCheck",GJe="https://api.github.com/repos"});var sH=h(()=>{});var spe=h(()=>{});function yw({text:e,variant:t="default",icon:o,className:r,color:n,backgroundColor:a,style:s,...l}){let c=n||a?{...s,...n&&{color:n},...a&&{backgroundColor:a}}:s;return i("div",{className:X(lpe("base",t),r),style:c,...l},o&&i(o,{size:"xxs",className:lpe("icon")}),e)}var lpe,YJe,v9=h(()=>{"use strict";d();spe();we();Be();lpe=K("vc-badge-"),YJe=["default","expressive","danger","positive","warning","premium"]});function bw({disabled:e,isNew:t,sourceBadge:o,tooltip:r,name:n,infoButton:a,footer:s,author:l,enabled:c,setEnabled:u,description:p,onMouseEnter:m,onMouseLeave:g}){let x=Se(null),v=Se(null);return i("div",{className:yd("card",{"card-disabled":e}),onMouseEnter:m,onMouseLeave:g},i("div",{className:yd("header")},i("div",{className:yd("name-author")},i(Y,{size:"md",weight:"bold",className:yd("name")},i("div",{ref:v,className:yd("title-container")},i("div",{ref:x,className:yd("title"),onMouseOver:()=>{let y=x.current,A=v.current;y.style.setProperty("--offset",`${A.clientWidth-y.scrollWidth}px`),y.style.setProperty("--duration",`${Math.max(.5,(y.scrollWidth-A.clientWidth)/7)}s`)}},n)),t&&i(yw,{text:"NEW",variant:"danger"})),!!l&&i(Y,{size:"md",color:"text-subtle",className:yd("author")},l)),i(ve,{text:r},({onMouseEnter:y,onMouseLeave:A})=>i("div",{className:yd("source"),onMouseEnter:y,onMouseLeave:A},o)),a,i(Mi,{checked:c,onChange:u,disabled:e})),i("div",{className:yd("note"),style:{lineHeight:"1.25em",fontSize:"small"},title:p?p.toString():""},p),s&&i("div",{className:yd("footer")},s))}var yd,lH=h(()=>{"use strict";d();sH();v9();yt();rd();we();C();yd=K("vc-addon-")});var cpe=h(()=>{});function Jo(e,t=300){let o;return function(...r){clearTimeout(o),o=setTimeout(()=>{e(...r)},t)}}var os=h(()=>{"use strict";d()});var lu,cH=h(()=>{d();lu="Equicord/Equicord"});var If,upe,JRt,Ef=h(()=>{"use strict";d();L1();cH();If=ts.slice(0,9),upe=`Equicord/${ts}${lu?` (https://github.com/${lu})`:""}`,JRt=`Equicord${lu?` (https://github.com/${lu})`:""}`});var dpe=h(()=>{});function wc(e){return typeof e=="string"?e:e?null:"Invalid input provided"}function go({tag:e="div",name:t,id:o,description:r,error:n,inlineSetting:a,children:s}){return i(e,{className:oh("section")},i("div",{className:X(oh("content"),a&&oh("inline"))},i("div",{className:oh("label")},i(Y,{className:oh("title"),size:"md",weight:"medium"},t??Pp(gS(o))),r&&i(Y,{className:oh("description"),size:"sm"},r)),s),n&&i(Y,{className:oh("error"),size:"sm"},n))}var oh,cu=h(()=>{"use strict";d();yt();we();Be();Ta();oh=K("vc-plugins-setting-")});function ppe({setting:e,pluginSettings:t,definedSettings:o,id:r,onChange:n}){let a=t[r]??e.default,[s,l]=T(a??!1),[c,u]=T(null);function p(m){let g=e.isValid?.call(o,m)??!0;l(m),u(wc(g)),g===!0&&n(m)}return i(go,{tag:"label",name:e.displayName,id:r,description:e.description,error:c,inlineSetting:!0},i(Mi,{checked:s,onChange:p,disabled:al(o,e)}))}var mpe=h(()=>{"use strict";d();Jt();rd();C();cu()});function fpe({setting:e,onChange:t,closePluginSettings:o}){return e.component({setValue:t,option:e,closePluginSettings:o})}var gpe=h(()=>{"use strict";d()});function uH({setting:e,pluginSettings:t,definedSettings:o,id:r,onChange:n}){function a(m){return e.type===2?BigInt(m):Number(m)}let[s,l]=T(`${t[r]??e.default??0}`),[c,u]=T(null);function p(m){let g=e.isValid?.call(o,m)??!0;u(wc(g)),g===!0&&n(a(m)),e.type===1&&BigInt(m)>=JJe?l(`${Number.MAX_SAFE_INTEGER}`):l(m)}return i(go,{name:e.displayName,id:r,description:e.description,error:c},i(Te,{type:"number",pattern:"-?[0-9]+",placeholder:e.placeholder??"Enter a number",value:s,onChange:p,disabled:al(o,e),...e.componentProps}))}var JJe,hpe=h(()=>{"use strict";d();Jt();R();C();cu();JJe=BigInt(Number.MAX_SAFE_INTEGER)});function xpe({setting:e,pluginSettings:t,definedSettings:o,onChange:r,id:n}){let a=t[n]??e.options?.find(m=>m.default)?.value,[s,l]=T(a??null),[c,u]=T(null);function p(m){let g=e.isValid?.call(o,m)??!0;l(m),u(wc(g)),g===!0&&r(m)}return i(go,{name:e.displayName,id:n,description:e.description,error:c},i(qt,{placeholder:e.placeholder??"Select an option",options:e.options,maxVisibleItems:5,closeOnSelect:!0,select:p,isSelected:m=>m===s,serialize:m=>String(m),isDisabled:al(o,e),...e.componentProps}))}var vpe=h(()=>{"use strict";d();Jt();C();cu()});function ype({setting:e,pluginSettings:t,definedSettings:o,id:r,onChange:n}){let a=t[r]??e.default,[s,l]=T(null);function c(u){let p=e.isValid?.call(o,u)??!0;l(wc(p)),p===!0&&n(u)}return i(go,{name:e.displayName,id:r,description:e.description,error:s},i(cn,{markers:e.markers,minValue:e.markers[0],maxValue:e.markers[e.markers.length-1],initialValue:a,onValueChange:c,onValueRender:u=>String(u.toFixed(2)),stickToMarkers:e.stickToMarkers??!0,disabled:al(o,e),...e.componentProps}))}var bpe=h(()=>{"use strict";d();Jt();C();cu()});function Spe({setting:e,pluginSettings:t,definedSettings:o,id:r,onChange:n}){let[a,s]=T(t[r]??e.default??null),[l,c]=T(null);function u(p){let m=e.isValid?.call(o,p)??!0;s(p),c(wc(m)),m===!0&&n(p)}return i(go,{name:e.displayName,id:r,description:e.description,error:l},e.multiline?i(Ea,{placeholder:e.placeholder??"Enter a value",value:a,onChange:u,disabled:al(o,e),...e.componentProps}):i(Te,{type:"text",placeholder:e.placeholder??"Enter a value",value:a,onChange:u,maxLength:null,disabled:al(o,e),...e.componentProps}))}var wpe=h(()=>{"use strict";d();Jt();C();cu()});var Ape,kpe=h(()=>{"use strict";d();dpe();R();mpe();gpe();hpe();vpe();bpe();wpe();Ape={0:Spe,1:uH,2:uH,3:ppe,4:xpe,5:ype,6:fpe,7:()=>null}});var Cpe=h(()=>{});var Tpe=h(()=>{});function Epe({text:e,href:t,Icon:o}){return i(ve,{text:e},r=>i(B0,{...r,href:t,className:Sw("link-button",Ipe())},i(o,null)))}function Dpe({isFavorite:e,onClick:t}){let o=e?a1:Vm;return i(ve,{text:e?"Unfavorite plugin":"Favorite plugin - pins it to the top of the plugin list"},r=>i(eo,{...r,onClick:t,className:Sw("favorite-button",e&&"favorite-button-active",Ipe())},i(o,{"aria-hidden":!0,className:Sw("link-icon","favorite-icon")})))}var Sw,Ipe,XJe,VJe,y9,b9,dH=h(()=>{"use strict";d();Tpe();ot();we();_e();C();Sw=K("vc-settings-modal-"),Ipe=()=>C0()!==2?"dark":"light";XJe=()=>i(t1,{"aria-hidden":!0,className:Sw("link-icon")}),VJe=()=>i(xU,{"aria-hidden":!0,className:Sw("link-icon")}),y9=e=>i(Epe,{...e,Icon:XJe}),b9=e=>i(Epe,{...e,Icon:VJe})});function uu(e){ce(t=>i(eXe,{user:e,modalProps:t}))}function eXe({user:e,modalProps:t}){lo();let o=ye([Co],()=>Co.getUserProfile(e.id));G(()=>{!o&&!e.bot&&e.id&&Ym(e.id)},[e.id,e.bot,o]);let r=o?.connectedAccounts?.find(c=>c.type==="github")?.name,n=o?.connectedAccounts?.find(c=>c.type==="domain")?.name,a=Ne(()=>{let c=Object.values(et);return(ff[e.id]||gf[e.id]?c.filter(p=>p.authors.includes(ff[e.id]||gf[e.id])):c.filter(p=>wi[p.name]?.userPlugin&&p.authors.some(m=>m.id.toString()===e.id)||p.authors.some(m=>m.name===e.username))).filter(p=>!p.name.endsWith("API")).sort((p,m)=>Number(p.required??!1)-Number(m.required??!1))},[e.id,e.username]),s=i(so,{href:"https://github.com/Equicord/Equicord"},"contributed"),l=n||r;return i(be,{...t,title:i("div",{className:z1("header")},i("img",{className:z1("avatar"),src:e.getAvatarURL(void 0,512,!0),alt:""}),i(oe,{tag:"h2",className:z1("name")},e.username)),subtitle:a.length?i(U,null,e.username," has ",s," to ",QS(a.length,"plugin"),"!"):i(U,null,e.username," has not made any plugins. They likely ",s," in other ways!"),actionBarInput:l&&i("div",{className:z1("links"),style:{width:"100%",justifyContent:"flex-end"}},n&&i(b9,{text:n,href:`https://${n}`}),r&&i(y9,{text:r,href:`https://github.com/${r}`}))},i("div",{className:z1("root")},!!a.length&&i("div",{className:z1("plugins")},a.map(c=>i(cl,{key:c.name,plugin:c,disabled:c.required??!1,onRestartNeeded:()=>ne("Restart to apply changes!")})))))}var z1,pH=h(()=>{"use strict";d();Cpe();j();We();$r();Je();O();we();_e();Be();C();Na();$1();dH();z1=K("vc-author-modal-")});function fH(e){let t=new nXe({username:e.username,id:e.id??fd(),avatar:e.avatar,bot:!0});return Q.dispatch({type:"USER_UPDATE",user:t}),t}function rXe({tags:e}){return i("div",{className:qp("tags")},e.map(t=>i("div",{key:t,className:qp("tag")},t)))}function S9({plugin:e,onRestartNeeded:t,onClose:o,transitionState:r}){let n=lo([`plugins.${e.name}.*`]).plugins[e.name],a=lw(e),s=Ne(()=>[fH({username:"Loading...",id:"-1465912127305809920"})],[]),[l,c]=T([]);G(()=>{(async()=>{for(let[v,y]of e.authors.slice(0,6).entries())try{let A=y.id?await Xi.getUser(String(y.id)).catch(()=>fH({username:y.name})):fH({username:y.name});c(k=>[...k,A])}catch{continue}})()},[e.authors]);function u(){gH(e,t)}function p(){let{settings:v}=e;if(!a||!v)return i(U,null,"There are no settings for this plugin.");let y=Object.entries(v.def).map(([A,k])=>{if(k.type===7||B1(v,k))return null;function w(E){let N=e.settings.def[A];!N||N.type===7||(n[A]=E,N.restartNeeded&&t(A))}let I=Ape[k.type];return i(H,{noop:!0,key:A},i(I,{id:A,setting:k,onChange:Jo(w),pluginSettings:n,definedSettings:v,closePluginSettings:o}))});return i("div",{className:"vc-plugins-settings"},y)}function m(v){let y=e.authors.slice(6);return i(ve,{text:y.map(A=>A.name).join(", ")},({onMouseEnter:A,onMouseLeave:k})=>i("div",{className:mH.moreUsers,onMouseEnter:A,onMouseLeave:k},"+",y.length))}let g=wi[e.name],x=g.folderName.startsWith("src/equicordplugins/")??!1;return i(be,{transitionState:r,onClose:o,size:"lg",title:i("div",{className:qp("header")},i(Y,{tag:"h1",weight:"semibold",size:"lg"},e.name)),subtitle:i("div",{className:qp("info")},i("div",null,i(U,{size:"md"},e.description),!!e.tags?.length&&i(rXe,{tags:e.tags})))},!!e.settingsAboutComponent&&i("div",{className:X(z.top16,qp("about-box"))},i("section",null,i(H,{message:"An error occurred while rendering this plugin's custom Info Component"},i(e.settingsAboutComponent,null)))),i("div",{className:"vc-settings-modal-content"},i("section",null,i(vi,{variant:"heading-lg/semibold",className:X(z.top8,z.bottom8)},"Authors"),i("div",{style:{width:"fit-content"}},i(H,{noop:!0},i(Vc,{users:l.length?l:s,guildId:void 0,renderIcon:!1,showDefaultAvatarsForNullUsers:!0,renderMoreUsers:m,renderUser:v=>i(eo,{className:mH.clickableAvatar,onClick:()=>x?uu(v):uu(v)},i("img",{className:mH.avatar,src:v.getAvatarURL(void 0,80,!0),alt:v.username,title:v.username}))})))),i("section",null,i(Y,{size:"lg",weight:"semibold",color:"text-strong",className:X(z.top16,z.bottom8)},"Settings"),p())),i("div",null,i(pe,{flexDirection:"column",style:{width:"100%"}},i(pe,{style:{justifyContent:"space-between",alignItems:"center"}},a?i(ve,{text:"Reset to default settings",shouldShow:!KS(n)},({onMouseEnter:v,onMouseLeave:y})=>i(de,{className:qp("disable-warning"),size:"small",variant:"primary",onClick:u,onMouseEnter:v,onMouseLeave:y},"Reset")):i("div",null),!g.userPlugin&&i("div",{className:qp("links")},i(Dpe,{isFavorite:n.isFavorite??!1,onClick:()=>n.isFavorite=!n.isFavorite}),i(b9,{text:"Website",href:x?`https://equicord.org/plugins/${e.name}`:`https://vencord.dev/plugins/${e.name}`}),i(y9,{text:"Source Code",href:`https://github.com/${lu}/tree/main/${g.folderName}`}))))))}function ns(e,t){ce(o=>i(S9,{...o,plugin:e,onRestartNeeded:r=>t?.(e.name,r)}))}function iXe(e,t){let o=e.settings?.def,r=e.name;if(!o)return;let n={},a=!1;for(let l in o){if(l==="enabled")continue;let c=o[l];c.type=c.type??0,c.type===0?n[l]=c.default!==void 0&&c.default!==""?c.default:"":"default"in c&&c.default!==void 0&&(n[l]=c.default),c?.restartNeeded&&(a=!0)}let s=e.settings?.store;s&&Object.assign(s,n),a&&t?.(e.name),D.show({message:`Settings for ${r} have been reset.`,id:D.genId(),type:D.Type.SUCCESS,options:{position:D.Position.TOP}})}function gH(e,t,o=!0,r,n){ce(a=>i(tXe,{...a,className:qp("confirm"),header:o?"Reset Settings":"Disable Plugins",confirmText:o?"Reset":"Disable All",cancelText:"Cancel",onConfirm:()=>{o&&e?iXe(e,t):n?.()},onCancel:a.onClose},i(U,null,o?i(f,null,"Are you sure you want to reset all settings for ",i("strong",null,e?.name)," to their default values?"):`Are you sure you want to disable ${r} plugins?`),i("div",{className:X(z.top16,qp("warning"))},i(oXe,{color:"var(--text-feedback-critical)"}),i("span",null,"This action cannot be undone."))))}var qp,mH,oFt,tXe,oXe,nXe,nh=h(()=>{"use strict";d();cpe();yr();Jt();j();yt();Tt();Pe();Lt();Je();os();Ef();we();Er();Wt();Be();R();le();C();Na();kpe();pH();dH();qp=K("vc-plugin-modal-"),mH=Ie("moreUsers","avatar","clickableAvatar"),oFt=he("CLOSE_BUTTON_LABEL"),tXe=he('parentComponent:"ConfirmModal"'),oXe=he("3.15H3.29c-1.74"),nXe=ko(()=>L.getCurrentUser().constructor)});function cl({plugin:e,disabled:t,onRestartNeeded:o,onMouseEnter:r,onMouseLeave:n,isNew:a}){let s=Me.plugins[e.name],l=wi[e.name],c=l.folderName.startsWith("src/equicordplugins/")??!1,u=l.folderName.startsWith("src/plugins/")??!1,p=l?.userPlugin??!1,m=e.isModified??!1,g=()=>Ve(e.name);function x(){let w=g();if(!w){let{restartNeeded:E,failures:N}=bf(e);if(N.length){aXe.error(`Failed to start dependencies for ${e.name}: ${N.join(", ")}`),sa("Failed to start dependencies: "+N.join(", "),"Close",()=>null);return}if(E){s.enabled=!0,o(e.name,"enabled");return}}if(R1(e)){s.enabled=!w,o(e.name,"enabled");return}if(w&&!e.started){s.enabled=!w;return}if(!(w?Gp(e):$p(e))){s.enabled=!1;let E=`Error while ${w?"stopping":"starting"} plugin ${e.name}`;ne(E,D.Type.FAILURE,{position:D.Position.BOTTOM});return}s.enabled=!w}let y=[{condition:m,src:"https://equicord.org/assets/icons/equicord/modified.png",alt:"Modified",title:"Modified Vencord Plugin"},{condition:c,src:"https://equicord.org/assets/favicon.png",alt:"Equicord",title:"Equicord Plugin"},{condition:u,src:"https://equicord.org/assets/icons/vencord/icon-light.png",alt:"Vencord",title:"Vencord Plugin"},{condition:p,src:"https://equicord.org/assets/icons/misc/userplugin.png",alt:"User",title:"User Plugin"}].find(w=>w.condition),A=y?i("img",{src:y.src,alt:y.alt,className:w9("source")}):null,k=y?.title||"Unknown Plugin";return i(bw,{name:e.name,sourceBadge:A,tooltip:k,description:e.description,isNew:a,enabled:g(),setEnabled:x,disabled:t,onMouseEnter:r,onMouseLeave:n,infoButton:i("button",{role:"switch",onClick:()=>ns(e,o),className:w9("info-button")},lw(e)?i(ed,{className:w9("info-icon")}):i(gi,{className:w9("info-icon")}))})}var aXe,w9,$1=h(()=>{"use strict";d();Af();Jt();j();ot();lH();we();He();C();Na();nh();aXe=new ie("PluginCard"),w9=K("vc-plugins-")});var Wp,ww=h(()=>{"use strict";d();Wp=class{set=new Set;get changeCount(){return this.set.size}get hasChanges(){return this.changeCount>0}handleChange(t){this.set.delete(t)||this.set.add(t)}add(t){return this.set.add(t)}remove(t){return this.set.delete(t)}getChanges(){return this.set.values()}map(t){return[...this.getChanges()].map(t)}}});function Ppe({newPlugins:e,onPluginToggle:t}){let o=lo(),r=V.useMemo(()=>new Wp,[]),n=Vt(),a=V.useMemo(()=>{let u={};for(let p in et){let m=et[p].dependencies;if(m)for(let g of m)u[g]??=[],u[g].push(p)}return u},[]),s=u=>u.map(p=>et[p]).filter(p=>p&&!p.hidden).sort((p,m)=>p.name.localeCompare(m.name)),l=V.useMemo(()=>s(e),[e]);if(l.length===0)return null;let c=u=>u?i(V.Fragment,null,i(U,null,"This plugin is required by:"),u.map(p=>i(U,{key:p,className:"vc-changelog-dep-text"},p))):null;return i("div",{className:G1("new-plugins-section")},i(oe,{className:z.bottom8},"New Plugins (",l.length,")"),i(U,{className:z.bottom16},"The following plugins have been added in recent updates:"),i("div",{className:G1("new-plugins-grid")},l.map(u=>{let p=u.required||a[u.name]?.some(g=>o.plugins[g].enabled)||u.name.endsWith("API"),m=u.required?"This plugin is required for Equicord to function.":c(a[u.name]?.filter(g=>o.plugins[g].enabled));return p?i(ve,{text:m,key:u.name},({onMouseLeave:g,onMouseEnter:x})=>i(Ht,{className:G1("new-plugin-card","required")},i(cl,{onMouseLeave:g,onMouseEnter:x,onRestartNeeded:v=>{r.handleChange(v),n()},disabled:!0,plugin:u,isNew:!0}))):i(Ht,{key:u.name,className:G1("new-plugin-card")},i(cl,{onRestartNeeded:g=>{r.handleChange(g),n()},disabled:!1,plugin:u,isNew:!0}))})),r.hasChanges&&i("div",{className:G1("restart-notice")},i(ve,{text:i(f,null,"The following plugins require a restart:",i("div",{className:z.bottom8}),i("ul",null,r.map(u=>i("li",{key:u},u))))},u=>i(de,{...u,variant:"link",size:"small",onClick:()=>location.reload(),className:z.top16},"Restart Required"))))}function sXe({pluginName:e,depMap:t,settings:o}){let r=et[e];if(!r||r.hidden)return null;let n=r.required||t[r.name]?.some(s=>o.plugins[s].enabled),a=r.required?"This plugin is required for Equicord to function.":t[r.name]?.length>0?`This plugin is required by: ${t[r.name]?.filter(s=>o.plugins[s].enabled).join(", ")}`:null;return i("div",{className:`vc-changelog-entry ${n?"required":""}`},i("div",{className:"vc-changelog-entry-header"},i("span",{className:"vc-changelog-entry-hash"},r.name,n&&" *"),i("span",{className:"vc-changelog-entry-author"},r.authors?.[0]?.name||"Unknown")),i("div",{className:"vc-changelog-entry-message"},r.description||"No description available"),a&&i("div",{className:"vc-changelog-dep-text"},a))}function A9({newPlugins:e,maxDisplay:t=20}){let o=lo(),r=V.useMemo(()=>{let s={};for(let l in et){let c=et[l].dependencies;if(c)for(let u of c)s[u]??=[],s[u].push(l)}return s},[]);if(e.length===0)return null;let n=e.slice(0,t),a=e.length>t;return i("div",{className:G1("new-plugins-compact")},i("div",{className:"vc-changelog-plugins-list"},n.map(s=>i(sXe,{key:s,pluginName:s,depMap:r,settings:o})),a&&i("div",{className:"vc-changelog-entry"},i("div",{className:"vc-changelog-entry-message"},"+",e.length-t," more plugins"))))}var G1,Mpe=h(()=>{"use strict";d();j();Tt();Qn();We();Je();$1();ww();we();Wt();Kt();C();Na();G1=K("vc-changelog-")});function Npe({entry:e,repo:t,repoPending:o}){return i(Ht,{className:"vc-changelog-entry"},i("div",{style:{display:"flex",flexDirection:"column",gap:"0.25em"}},i("div",{className:"vc-changelog-entry-header"},i("code",{className:"vc-changelog-entry-hash"},i(F1,{repo:t,hash:e.hash,disabled:o})),i("span",{className:"vc-changelog-entry-author"},"by ",e.author)),i("div",{className:"vc-changelog-entry-message"},e.message)))}function lXe({log:e,repo:t,repoPending:o,isExpanded:r,onToggleExpand:n,onClearLog:a}){let s=e.type==="repository_fetch"||e.type===void 0&&e.fromHash===e.toHash&&e.commits.length===0,l=e.fromHash===e.toHash;return i(Ht,{className:"vc-changelog-log"},i("div",{className:"vc-changelog-log-header",onClick:n},i("div",{className:"vc-changelog-log-info"},i("div",{className:"vc-changelog-log-title"},i("span",null,s?l?`Repository check: ${e.fromHash.slice(0,7)} (up to date)`:`Repository check: ${e.fromHash.slice(0,7)} \u2192 ${e.toHash.slice(0,7)}`:`Update: ${e.fromHash.slice(0,7)} \u2192 ${e.toHash.slice(0,7)}`),i(de,{size:"min",variant:"secondary",className:"vc-changelog-delete-button",style:{padding:"4px",color:"var(--status-danger)",opacity:.6,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},onClick:c=>{c.stopPropagation(),a(e.id)}},i(hr,{width:16,height:16}))),i("div",{className:"vc-changelog-log-meta"},ipe(e.timestamp),e.commits.length>0&&` \u2022 ${e.commits.length} commits available`,e.commits.length===0&&" \u2022 No new commits",e.newPlugins.length>0&&` \u2022 ${e.newPlugins.length} new plugins`,e.updatedPlugins.length>0&&` \u2022 ${e.updatedPlugins.length} updated plugins`,e.newSettings&&vw(e.newSettings)>0&&` \u2022 ${oH(e.newSettings).reduce((c,[,u])=>c+u.length,0)} new settings`)),i("div",{className:`vc-changelog-log-toggle ${r?"expanded":""}`},"\u25BC")),r&&i("div",{className:"vc-changelog-log-content"},e.newPlugins.length>0&&i("div",{className:"vc-changelog-log-plugins"},i(A9,{newPlugins:e.newPlugins,maxDisplay:50})),e.updatedPlugins.length>0&&i("div",{className:"vc-changelog-log-plugins"},i(oe,{className:z.bottom8},"Updated Plugins"),i(A9,{newPlugins:e.updatedPlugins,maxDisplay:50})),e.newSettings&&vw(e.newSettings)>0&&i("div",{className:"vc-changelog-log-plugins"},i(oe,{className:z.bottom8},"New Settings"),i("div",{className:"vc-changelog-new-plugins-list"},oH(e.newSettings).map(([c,u])=>u.map(p=>i("span",{key:`${c}-${p}`,className:"vc-changelog-new-plugin-tag",title:`New setting in ${c}`},c,".",p))))),e.commits.length>0&&i("div",{className:"vc-changelog-log-commits"},i("div",{className:"vc-changelog-log-commits-list"},e.commits.map(c=>i(Npe,{key:c.hash,entry:c,repo:t,repoPending:o}))))))}function cXe(){let[e,t,o]=Ro(X0,{fallbackValue:"Loading..."}),[r,n]=V.useState([]),[a,s]=V.useState([]),[l,c]=V.useState([]),[u,p]=V.useState([]),[m,g]=V.useState(!0),[x,v]=V.useState(null),[y,A]=V.useState(new Set),[k,w]=V.useState(!1),[I,E]=V.useState(!1);V.useEffect(()=>{(async()=>{try{await rpe(),await N()}catch(ee){console.error("Failed to initialize changelog:",ee)}})()},[]),V.useEffect(()=>{t&&(Hl.error("Failed to retrieve repo",t),v("Failed to retrieve repository information"))},[t]);let N=V.useCallback(async()=>{try{let Z=await f9();s(Z)}catch(Z){console.error("Failed to load changelog history:",Z)}},[]),B=V.useCallback(async()=>{try{let Z=await g9(),ee=await h9();c(Z),p(ee)}catch(Z){console.error("Failed to load new plugins:",Z)}},[]),_=V.useCallback(async()=>{if(o||t)return!1;let Z=e;if(!Z)return!1;try{let ee=await epe(Z);if(ee.length===0)return!1;let ae=await g9(),ge=await h9(),ke=await aH();return await nH(ee,ae,ge,ke),n(ee),c(ae),p(ge),await N(),!0}catch(ee){return console.error("Failed to log local update:",ee),!1}},[e,t,o,N]);V.useEffect(()=>{!o&&!t&&(async()=>{try{let ee=await x9(),ae=await VencordNative.updater.getUpdates();if(ae.ok){let ge=ae.value.length>0?ae.value[0].hash:ts;E(ee===ge)}}catch{E(!1)}})()},[o,t]);let q=V.useCallback(async()=>{if(!(o||t)){g(!0),v(null);try{let Z=await VencordNative.updater.getUpdates(),ee=await x9(),ae=Z.ok&&Z.value.length>0?Z.value[0].hash:ts;if(ee===ae){g(!1),E(!0),await _()||(n([]),D.show({message:"Already up to date with repository",id:D.genId(),type:D.Type.MESSAGE,options:{position:D.Position.BOTTOM}}));return}if(Z.ok&&Z.value)if(Z.value.length>0){n(Z.value);let ge=await g9(),ke=await h9(),Ee=await aH();c(ge),p(ke),await nH(Z.value,ge,ke,Ee,!0),await N(),E(!0),D.show({message:`Found ${Z.value.length} commit${Z.value.length===1?"":"s"} from repository`,id:D.genId(),type:D.Type.SUCCESS,options:{position:D.Position.BOTTOM}})}else{let ge=await _();E(!0),D.show({message:ge?"Logged commits from your latest update":"Repository is up to date with your local copy",id:D.genId(),type:ge?D.Type.SUCCESS:D.Type.MESSAGE,options:{position:D.Position.BOTTOM}}),ge||n([])}else if(!Z.ok)throw new Error(Z.error?.message||"Failed to fetch from repository")}catch(Z){Hl.error("Failed to fetch commits from repository",Z);let ee=Z?.message||"Failed to connect to repository. Check your internet connection.";v(ee),D.show({message:"Could not fetch commits from repository",id:D.genId(),type:D.Type.FAILURE,options:{position:D.Position.BOTTOM}})}finally{g(!1)}}},[o,t,B,N]);V.useEffect(()=>{(async()=>!o&&!t?(await B(),await _()?g(!1):await q()):o||(await B(),g(!1)))()},[o,t,q,B,_]);let $=Z=>{let ee=new Set(y);ee.has(Z)?ee.delete(Z):ee.add(Z),A(ee)},re=r.length>0||l.length>0||u.length>0;return i(f,null,i(oe,{className:z.top16},"Fetch Changes"),i(U,{className:z.bottom16},"Check the repository for new commits, plugin updates, and code changes. This will compare your current version with the latest available and show you what's new."),i("div",{className:"vc-changelog-controls"},i(de,{size:"small",disabled:m||o||!!t,onClick:q,variant:I?"positive":"primary"},m?"Loading...":I?"Repository Up to Date":"Fetch from Repository"),a.length>0&&i(f,null,i(de,{size:"small",variant:k?"primary":"secondary",onClick:()=>w(!k),style:{marginLeft:"8px"}},k?"Hide Logs":"Show Logs"),i(de,{size:"small",variant:"dangerPrimary",onClick:()=>{Oo.show({title:"Clear All Logs",body:"Are you sure you would like to clear all logs? This can't be undone.",confirmText:"Clear All",confirmColor:"danger",cancelText:"Cancel",onConfirm:async()=>{await ope(),await N(),w(!1),D.show({message:"All logs have been cleared",id:D.genId(),type:D.Type.SUCCESS,options:{position:D.Position.BOTTOM}})}})},style:{marginLeft:"8px"}},"Clear All Logs"))),x&&i(Nr,{style:{padding:"1em",marginTop:"1em"}},i(U,null,x),i(U,{color:"text-subtle",style:{marginTop:"0.5em"}},"Make sure you have an internet connection and try again.")),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Repository"),i(U,{className:z.bottom8},"This is the GitHub repository where Equicord fetches updates from."),i(U,{color:"text-subtle"},o?e:t?"Failed to retrieve - check console":i(so,{href:e},e.split("/").slice(-2).join("/"))," ","(",i(F1,{repo:e,hash:ts,disabled:o}),")"),re&&i(f,null,i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Recent Changes"),i(U,{className:z.bottom16},"These are the new commits and plugin updates since your last version. You can see what features were added, bugs were fixed, and which plugins received updates."),l.length>0&&i("div",{className:z.bottom16},i(Ppe,{newPlugins:l,onPluginToggle:()=>{}})),u.length>0&&i("div",{className:z.bottom16},i(oe,{className:z.bottom8},"Updated Plugins (",u.length,")"),i(A9,{newPlugins:u})),r.length>0&&i("div",null,i(oe,{className:z.bottom8},"Code Changes (",r.length," ",r.length===1?"commit":"commits",")"),i("div",{className:"vc-changelog-commits-list"},r.map(Z=>i(Npe,{key:Z.hash,entry:Z,repo:e,repoPending:o}))))),!re&&!m&&!x&&i(f,null,i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Recent Changes"),i(U,{color:"text-subtle"},'No commits available ahead of your current version. Click "Fetch from Repository" to check for new changes.')),k&&a.length>0&&i(f,null,i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Update Logs (",a.length," ",a.length===1?"log":"logs",")"),i(U,{className:z.bottom16},"A history of your previous update sessions with their commit history and plugin changes. Click on a log to expand it and see the details."),i("div",{className:"vc-changelog-history-list"},a.map(Z=>i(lXe,{key:Z.id,log:Z,repo:e,repoPending:o,isExpanded:y.has(Z.id),onToggleExpand:()=>$(Z.id),onClearLog:ee=>{Oo.show({title:"Clear Log",body:"Are you sure you would like to clear this log? This can't be undone.",confirmText:"Clear Log",confirmColor:"danger",cancelText:"Cancel",onConfirm:async()=>{await npe(ee),await N(),A(new Set(Array.from(y).filter(ae=>ae!==ee))),D.show({message:"Log has been cleared",id:D.genId(),type:D.Type.SUCCESS,options:{position:D.Position.BOTTOM}})}})}})))))}function uXe(){return i(br,null,i(cXe,null))}var k9,Bpe=h(()=>{"use strict";d();Sde();Tt();Qn();xr();xc();We();ot();$r();Je();wf();IG();Wt();Kt();ru();C();L1();ape();Mpe();k9=Sr(uXe,"Changelog")});function Ps({className:e,...t}){return i("div",{className:X(Rpe.markup,e)},kt.defaultRules.codeBlock.react(t,null,{}))}function rh({children:e,className:t}){return i("span",{className:X(Rpe.markup,t)},i("code",{className:"inline"},e))}var Rpe,bd=h(()=>{"use strict";d();Be();le();C();Rpe=Ie("markup","codeContainer")});var Lpe=h(()=>{"use strict";d();Je();C()});var Ope=h(()=>{"use strict";d();We();Je();Wt();id();Ta();C()});var Fpe=h(()=>{"use strict";d();hi();We();Je();Wt();C()});var Z_t,_pe,Upe=h(()=>{"use strict";d();Tt();bd();xr();Lt();We();Je();wf();Jc();os();_e();Wt();Ta();le();C();Lpe();Ope();Fpe();Z_t=Jo(function({find:e,setModule:t,setError:o}){let r=u1(e),n=Object.keys(r),a=n.length;a===0?o("No match. Perhaps that module is lazy loaded?"):a!==1?o("Multiple matches. Please refine your filter"):t([n[0],r[n[0]]])}),_pe=null});var hH=h(()=>{});function Sd(e){return i("svg",{"aria-hidden":"true",viewBox:"0 0 16 16",height:"16",width:"16",...e,className:X("vc-heart-icon",e.className)},i("path",{fill:"#db61a2",fillRule:"evenodd",d:"M4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.565 20.565 0 008 13.393a20.561 20.561 0 003.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.75.75 0 01-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5zM8 14.25l-.345.666-.002-.001-.006-.003-.018-.01a7.643 7.643 0 01-.31-.17 22.075 22.075 0 01-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.08 22.08 0 01-3.744 2.584l-.018.01-.006.003h-.002L8 14.25zm0 0l.345.666a.752.752 0 01-.69 0L8 14.25z"}))}var H1=h(()=>{"use strict";d();Be()});function j1({equicord:e=!1,className:t,...o}){let r=e?"https://github.com/sponsors/thororen1234":"https://github.com/sponsors/Vendicated";return i(de,{...o,variant:"none",size:"medium",type:"button",onClick:()=>VencordNative.native.openExternal(r),className:t||"vc-donate-button"},i(Sd,null),"Donate")}function xH({className:e,...t}){return i(de,{...t,variant:"none",size:"medium",type:"button",onClick:async o=>{o.preventDefault(),Yi("wKgT9j2xfN").catch(()=>ne("Invalid or expired invite"))},className:e||"vc-donate-button"},"Invite",i(gn,{className:"vc-invite-link"}))}function vH({className:e,...t}){let o="https://weblate.equicord.org/projects/equicord/";return i(de,{...t,variant:"none",size:"medium",type:"button",onClick:()=>VencordNative.native.openExternal(o),className:e||"vc-translate-button"},"Translate Here")}var yH=h(()=>{"use strict";d();Tt();H1();ot();_e();C()});var zpe=h(()=>{});function Ac(e){let{Icon:t,action:o,text:r,disabled:n,style:a}=e;return i("button",{className:bH("pill"),onClick:o,disabled:n,style:a},i(t,{className:bH("img")}),r)}function Aw(e){return i(Ht,{className:bH("card"),style:e.columns?{gridTemplateColumns:`repeat(${e.columns}, 1fr)`}:void 0},e.children)}var bH,SH=h(()=>{"use strict";d();zpe();Qn();we();bH=K("vc-settings-quickActions-")});var $pe=h(()=>{});function kw({title:e,subtitle:t,description:o,cardImage:r,backgroundImage:n,backgroundColor:a,buttonTitle:s,buttonOnClick:l,children:c}){let u={backgroundColor:a||"#9c85ef",backgroundImage:`url(${n||""})`};return i(Ht,{className:du("card","card-special"),style:u},i("div",{className:du("card-flex")},i("div",{className:du("card-flex-main")},i(oe,{className:du("title"),tag:"h5"},e),i(U,{className:du("subtitle")},t),i(U,{className:du("text")},o),c),r&&i("div",{className:du("image-container")},i("img",{role:"presentation",src:r,alt:"",className:du("image")}))),s&&i(f,null,i(Rt,{className:du("seperator")}),i(eo,{onClick:l,className:du("hyperlink")},i(U,{className:du("hyperlink-text")},s))))}var du,wH=h(()=>{"use strict";d();$pe();Qn();xr();We();Je();we();C();du=K("vc-special-")});var Fi=h(()=>{"use strict";d();v9();rd();lH();yH();SH();wH();AH()});function Gpe({totalStockPlugins:e,enabledStockPlugins:t}){return i("div",{className:"vc-plugin-stats vc-stockplugins-stats-card"},i("div",{className:"vc-plugin-stats-card-container"},i("div",{className:"vc-plugin-stats-card-section"},i(Y,{size:"md",weight:"semibold"},"Enabled Plugins"),i(Y,{size:"xl",weight:"bold"},t)),i("div",{className:"vc-plugin-stats-card-divider"}),i("div",{className:"vc-plugin-stats-card-section"},i(Y,{size:"md",weight:"semibold"},"Total Plugins"),i(Y,{size:"xl",weight:"bold"},e))))}function Hpe({totalUserPlugins:e,enabledUserPlugins:t}){return e===0?i("div",{className:"vc-plugin-stats vc-stockplugins-stats-card"},i("div",{className:"vc-plugin-stats-card-container "},i("div",{className:"vc-plugin-stats-card-section"},i(Y,{size:"md",weight:"semibold"},"Total Userplugins"),i(ve,{text:i("img",{src:"https://discord.com/assets/ab6835d2922224154ddf.svg",style:{width:"40px",height:"40px"}})},o=>i("span",{style:{display:"inline",position:"relative"}},i(Y,{size:"xl",weight:"bold",...o},e)))))):i("div",{className:"vc-plugin-stats vc-stockplugins-stats-card"},i("div",{className:"vc-plugin-stats-card-container"},i("div",{className:"vc-plugin-stats-card-section"},i(Y,{size:"md",weight:"semibold"},"Enabled Userplugins"),i(Y,{size:"xl",weight:"bold"},t)),i("div",{className:"vc-plugin-stats-card-divider"}),i("div",{className:"vc-plugin-stats-card-section"},i(Y,{size:"md",weight:"semibold"},"Total Userplugins"),i(Y,{size:"xl",weight:"bold"},e))))}var jpe=h(()=>{"use strict";d();hH();yt();C()});var qpe=h(()=>{});function Kpe(){return i(eo,{onClick:()=>ce(e=>i(dXe,{...e}))},i(Ht,{className:Df("button"),defaultPadding:!0},i("div",{className:Df("button-description")},i(U,{size:"md",weight:"semibold"},"Manage plugin UI elements"),i(U,{size:"xs"},"Allows you to hide buttons you don't like")),i("svg",{className:Df("button-arrow"),"aria-hidden":"true",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"}))))}function Wpe(e){let{buttonMap:t,description:o,title:r,settings:n}=e,a=Array.from(t,([s,{icon:l}])=>{let c=l??vU;return i(U,{size:"md",weight:"semibold",key:s,className:Df("switches-row")},i(c,{height:20,width:20}),s,i(Mi,{checked:n[s]?.enabled??!0,onChange:u=>{n[s]??={},n[s].enabled=u}}))});return i("section",null,i(Y,{tag:"h3",size:"lg",weight:"semibold"},r),i(U,{size:"sm",className:X(z.top8,z.bottom20,Df("description"))},o),i("div",{className:Df("switches")},a.length===0&&i(U,{weight:"medium",className:Df("switches-row"),style:{color:"var(--text-muted)"}},"Buttons of enabled plugins will appear here."),a))}function dXe(e){let{uiElements:t}=lo(["uiElements.*"]);return i(be,{...e,size:"md",title:"Manage plugin UI elements"},i("div",{className:Df("modal-content")},i(Wpe,{title:"Chatbar Buttons",description:"These are the buttons on the right side of the chat input bar",buttonMap:W0,settings:t.chatBarButtons}),i(Wpe,{title:"Message Popover Buttons",description:"These are the floating buttons on the right when you hover over a message",buttonMap:D1,settings:t.messagePopoverButtons})))}var Df,Qpe=h(()=>{"use strict";d();qpe();Ba();q3();j();yt();Qn();ot();Je();rd();we();Wt();Be();C();Df=K("vc-plugin-ui-elements-")});function mXe(e){D.show({message:e,type:D.Type.FAILURE,id:D.genId(),options:{position:D.Position.BOTTOM}})}function fXe({required:e,enabledPlugins:t,openWarningModal:o,resetCheckAndDo:r}){return i(Ht,{className:X(wd("info-card"),e&&"vc-warning-card")},e?i(f,null,i(Gr,null,"Restart required!"),i(U,{className:wd("dep-text")},"Restart now to apply new plugins and their settings"),i(de,{variant:"primary",className:wd("restart-button"),onClick:()=>location.reload()},"Restart")):i(f,null,i(Gr,null,"Plugin Management"),i(U,null,"Press the cog wheel or info icon to get more info on a plugin"),i(U,null,"Plugins with a cog wheel have settings you can modify!")),t.length>0&&!e&&i(de,{variant:"secondary",size:"small",className:"vc-plugins-disable-warning vc-modal-align-reset",onClick:()=>o(null,void 0,!1,t.length,r)},"Disable All Plugins"))}function gXe({search:e}){let t=e?Object.entries(Tw).filter(([o])=>o.toLowerCase().includes(e)):[];return i(U,{className:z.top16},t.length?i(f,null,i(U,null,"Are you looking for:"),i("ul",null,t.map(([o,r])=>i("li",{key:o},i("b",null,o),": Only available on the ",kH[r])))):"No plugins meet the search criteria.")}function ih(){let e=lo(),t=Se(null),o=t.current??=new Wp;rz(()=>()=>{if(!o.hasChanges)return;let ae=[...o.getChanges()],ge=[...new Set(ae.map(it=>it.split(":")[0]))],Ee=ge.slice(0,15),Ue=ge.length-Ee.length;ce(it=>i(Dn,{...it,title:"Restart required",confirmText:"Restart now",cancelText:"Later!",variant:"primary",onConfirm:()=>location.reload()},i(f,null,i("p",null,"The following plugins require a restart:"),i("div",null,Ee.map((se,te)=>i(V.Fragment,{key:te},te>0&&", ",kt.parse("`"+se+"`"))),Ue>0&&i("span",null," and ",Ue," more")))))},[]);let r=Ne(()=>{let ae={};for(let ge in et){let ke=et[ge].dependencies;if(ke)for(let Ee of ke)ae[Ee]??=[],ae[Ee].push(ge)}return ae},[]),n=Ne(()=>Object.values(et).sort((ae,ge)=>ae.name.localeCompare(ge.name)),[]).toSorted((ae,ge)=>Number(e.plugins[ge.name]?.isFavorite??!1)-Number(e.plugins[ae.name]?.isFavorite??!1)),a=Ne(()=>!1,[]),[s,l]=T({value:"",tags:[],status:0}),c=s.value.toLowerCase(),u=ae=>l(ge=>({...ge,value:ae})),p=jt((ae,ge)=>{let{status:ke,tags:Ee}=s;switch(ke){case 1:if(!e.plugins[ae.name]?.isFavorite)return!1;break;case 3:if(Ve(ae.name))return!1;break;case 2:if(!Ve(ae.name))return!1;break;case 4:if(!wi[ae.name].folderName.startsWith("src/equicordplugins/"))return!1;break;case 5:if(!wi[ae.name].folderName.startsWith("src/plugins/"))return!1;break;case 6:if(!ge?.has(ae.name))return!1;break;case 7:if(!wi[ae.name]?.userPlugin)return!1;break;case 8:if(!ae.name.endsWith("API"))return!1;break}return Ee.length&&Ee.some(Ue=>!ae.tags?.includes(Ue))?!1:c.length?ae.name.toLowerCase().includes(c.replace(/\s+/g,""))||ae.name.match(/[A-Z]/g)?.join("").toLowerCase().includes(c)||ae.description.toLowerCase().includes(c)||ae.searchTerms?.some(Ue=>Ue.toLowerCase().includes(c)):!0},[s,c]),[m]=Ro(()=>vt("Vencord_existingPlugins").then(ae=>{let ge=Date.now()/1e3,ke={},Ee=Object.values(n).map(it=>it.name),Ue=[];for(let{name:it}of n)(ke[it]=ae?.[it]??ge)+3600*24*2>ge&&Ue.push(it);return Ct("Vencord_existingPlugins",ke),ia.isEqual(Ue,Ee)?null:new Set(Ue)})),g=jt((ae,ge)=>o.handleChange(`${ae}:${ge}`),[o]),{plugins:x,requiredPlugins:v}=Ne(()=>{let ae=[],ge=[],ke=s.status===8;for(let Ee of n){if(Ee.hidden||!Ee.settings?.def&&Ee.name.endsWith("API")&&!ke||!p(Ee,m))continue;if(Ee.required||Ee.isDependency||r[Ee.name]?.some(it=>e.plugins[it].enabled)){let it=Ee.required||!r[Ee.name]?"This plugin is required for Equicord to function.":i(Cw,{deps:r[Ee.name]?.filter(se=>e.plugins[se].enabled)});ge.push(i(ve,{text:it,key:Ee.name},({onMouseLeave:se,onMouseEnter:te})=>i(cl,{onMouseLeave:se,onMouseEnter:te,onRestartNeeded:g,disabled:!0,plugin:Ee})))}else ae.push(i(cl,{onRestartNeeded:g,disabled:!1,plugin:Ee,isNew:m?.has(Ee.name),key:Ee.name}))}return{plugins:ae,requiredPlugins:ge}},[n,s,m,r,e.plugins,p,g]);function y(){let ae=!1;for(let ge of E){let ke=e.plugins[ge];if(et[ge].patches?.length){ke.enabled=!1,o.handleChange(ge),ae=!0;continue}if(!Gp(et[ge])){pXe.error(`Error while stopping plugin ${ge}`),mXe(`Error while stopping plugin ${ge}`);continue}ke.enabled=!1}ae&&Oo.show({title:"Restart Required",body:i(f,null,i("p",{style:{textAlign:"center"}},"Some plugins require a restart to fully disable."),i("p",{style:{textAlign:"center"}},"Would you like to restart now?")),confirmText:"Restart Now",cancelText:"Later",onConfirm:()=>location.reload()})}let{totalStockPlugins:A,totalUserPlugins:k,enabledStockPlugins:w,enabledUserPlugins:I,enabledPlugins:E}=Ne(()=>{let ae=te=>te.endsWith("API")||et[te].required,ge=Object.keys(et).filter(te=>!ae(te)),ke=Object.keys(et).filter(te=>Ve(te)&&!ae(te)),Ee=ge.filter(te=>!wi[te].userPlugin&&!et[te].hidden).length,Ue=ge.filter(te=>wi[te].userPlugin).length,it=ke.filter(te=>!wi[te].userPlugin).length,se=ke.filter(te=>wi[te].userPlugin).length;return{totalStockPlugins:Ee,totalUserPlugins:Ue,enabledStockPlugins:it,enabledUserPlugins:se,enabledPlugins:ke}},[e.plugins]),N=Math.min(36,x.length),[B,_]=V.useState(N),q=V.useCallback(()=>{_(ae=>Math.min(ae+N,x.length))},[x.length]),$=Ne(()=>Jo(q,100),[q]),[re,Z]=N0();V.useEffect(()=>{Z&&Bl(ge=>({...ge,status:ae})),isSelected:ae=>ae===s.status,closeOnSelect:!0,placeholder:"Filter by Type"}),i(Fn,{options:Bue.map(ae=>({label:ae,value:ae})),value:s.tags,onChange:ae=>l(ge=>({...ge,tags:ae})),closeOnSelect:!1,placeholder:"Filter by Tags",multi:!0}))),i(Gr,{className:z.top20},"Plugins"),x.length||v.length?i(f,null,i("div",{className:wd("grid")},ee.length?ee:i(U,null,"No plugins meet the search criteria.")),Bi(U,{key:t,className:wd("dep-text")},t)))}var wd,pXe,kH,C9=h(()=>{"use strict";d();hH();Io();Jt();j();Tt();Qn();xr();Pe();We();Je();Fi();os();ww();we();Ca();He();Wt();Be();Kt();R();C();Na();$1();nh();jpe();Qpe();wd=K("vc-plugins-"),pXe=new ie("PluginSettings","#a6d189");kH={desktop:"Discord Desktop app or Vesktop/Equibop",discordDesktop:"Discord Desktop app",vesktop:"Vesktop/Equibop apps",equibop:"Vesktop/Equibop apps",web:"Vesktop/Equibop apps & Discord web",dev:"Developer version of Equicord",browser:"Web Browser version of Equicord"}});function q1(e){let t=document.createElement("a");t.href=URL.createObjectURL(e),t.download=e.name,document.body.appendChild(t),t.click(),setImmediate(()=>{URL.revokeObjectURL(t.href),document.body.removeChild(t)})}function T9(e){return new Promise(t=>{let o=document.createElement("input");o.type="file",o.style.display="none",o.accept=e,o.onchange=async()=>{t(o.files?.[0]??null)},document.body.appendChild(o),o.click(),setImmediate(()=>document.body.removeChild(o))})}var ul=h(()=>{"use strict";d()});function CH(e,t){for(let o in t){let r=t[o];r!==null&&typeof r=="object"&&!Array.isArray(r)?((e[o]===null||e[o]===void 0||typeof e[o]!="object"||Array.isArray(e[o]))&&(e[o]={}),CH(e[o],r)):e[o]=r}return e}function Zpe(e){if(e==null||typeof e!="object")return!0;for(let t in e)if(["__proto__","constructor","prototype"].includes(t)||!Zpe(e[t]))return!1;return!0}async function D9(e,t="all",o=!1){try{var r=JSON.parse(e)}catch(n){throw console.log(e),new Error("Failed to parse JSON: "+String(n))}if(!Zpe(r))throw new Error("Unsafe Settings");switch(t){case"all":{if(!o&&!("settings"in r))throw new Error("Invalid Settings. Plugin settings is required for this import try a different one.");r.settings&&(CH(Wn,r.settings),await VencordNative.settings.set(Wn)),r.quickCss&&await VencordNative.quickCss.set(r.quickCss),r.dataStore&&await Le.setMany(r.dataStore);break}case"plugins":{if(!r.settings)throw new Error("Plugin settings missing");CH(Wn,r.settings),await VencordNative.settings.set(Wn);break}case"css":{if(!r.quickCss)throw new Error("CSS missing");await VencordNative.quickCss.set(r.quickCss);break}case"datastore":{if(!r.dataStore)throw new Error("DataStore data missing");await Le.setMany(r.dataStore);break}}}async function TH({syncDataStore:e=!0,type:t="all",minify:o}){let r=VencordNative.settings.get(),n=await VencordNative.quickCss.get(),a;if(e)try{a=await Le.entries()}catch(s){if(I9.error("Failed to read DataStore entries:",s),t==="all")I9.warn("Skipping DataStore in backup due to size. Export DataStore separately if needed."),E9(D.Type.MESSAGE,"DataStore too large - exported without it. Use 'Export DataStore' separately if needed."),a=void 0;else if(t==="datastore")throw new Error("DataStore is too large to export. Please clear some plugin data and try again.")}switch(t){case"all":return JSON.stringify({settings:r,quickCss:n,...a&&{dataStore:a}},null,o?void 0:4);case"plugins":return JSON.stringify({settings:r},null,o?void 0:4);case"css":return JSON.stringify({quickCss:n},null,o?void 0:4);case"datastore":return JSON.stringify({dataStore:a},null,o?void 0:4)}}async function Iw(e="all",{minify:t}={}){try{let r=await TH({minify:t,type:e,syncDataStore:e==="all"||e==="datastore"}),n=`equicord-${e}-backup-${bi().format("YYYY-MM-DD")}.json`,a=new TextEncoder().encode(r);DiscordNative.fileManager.saveWithDialog(a,n)}catch(o){throw I9.error("Failed to export settings:",o),E9(D.Type.FAILURE,"Failed to export settings, check console"),o}}async function Ew(e="all",t=!0){{let[o]=await DiscordNative.fileManager.openFiles({filters:[{name:"Equicord Settings Backup",extensions:["json"]},{name:"all",extensions:["*"]}]});if(o)try{await D9(new TextDecoder().decode(o.data),e),t&&hXe()}catch(r){I9.error(r),t&&xXe(r)}}}var E9,hXe,xXe,I9,IH=h(()=>{"use strict";d();j();He();ul();C();on();E9=(e,t)=>D.show({type:e,message:t,id:D.genId()}),hXe=()=>E9(D.Type.SUCCESS,"Settings successfully imported. Restart to apply changes!"),xXe=e=>E9(D.Type.FAILURE,`Failed to import settings: ${String(e)}`),I9=new ie("SettingsSync:Offline","#39b7e0")});var Ype=h(()=>{});function yXe(e){return i("svg",{"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",fill:"none",viewBox:"0 0 24 24",...e},i("path",{fill:"currentColor",fillRule:"evenodd",d:"M23 12a11 11 0 1 1-22 0 11 11 0 0 1 22 0Zm-9.5-4.75a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Zm-.77 3.96a1 1 0 1 0-1.96-.42l-1.04 4.86a2.77 2.77 0 0 0 4.31 2.83l.24-.17a1 1 0 1 0-1.16-1.62l-.24.17a.77.77 0 0 1-1.2-.79l1.05-4.86Z",clipRule:"evenodd"}))}function bXe(e){return i("svg",{"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",fill:"none",viewBox:"0 0 24 24",...e},i("path",{fill:"currentColor",fillRule:"evenodd",d:"M10 3.1a2.37 2.37 0 0 1 4 0l8.71 14.75c.84 1.41-.26 3.15-2 3.15H3.29c-1.74 0-2.84-1.74-2-3.15L9.99 3.1Zm3.25 14.65a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM13.06 14l.37-5.94a1 1 0 0 0-1-1.06h-.87a1 1 0 0 0-1 1.06l.38 5.94a1.06 1.06 0 0 0 2.12 0Z",clipRule:"evenodd"}))}function SXe(e){return i("svg",{"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",fill:"none",viewBox:"0 0 24 24",...e},i("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm4.7-15.7a1 1 0 0 0-1.4 0L12 10.58l-3.3-3.3a1 1 0 0 0-1.4 1.42L10.58 12l-3.3 3.3a1 1 0 1 0 1.42 1.4L12 13.42l3.3 3.3a1 1 0 0 0 1.4-1.42L13.42 12l3.3-3.3a1 1 0 0 0 0-1.4Z",clipRule:"evenodd"}))}function wXe(e){return i("svg",{"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",fill:"none",viewBox:"0 0 24 24",...e},i("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm5.7-13.3a1 1 0 0 0-1.4-1.4L10 14.58l-2.3-2.3a1 1 0 0 0-1.4 1.42l3 3a1 1 0 0 0 1.4 0l7-7Z",clipRule:"evenodd"}))}function Xo({children:e,variant:t="info",icon:o,action:r,hidden:n=!1,className:a,...s}){let l=o??AXe[t];return i("div",{className:X(ah("container",t),n&&ah("hidden"),a),...s},i("div",{className:ah("inner")},i("div",{className:ah("icon-wrapper")},i(l,{className:ah("icon")})),i("div",{className:ah("text")},e),r&&i("div",{className:ah("action")},r)))}var ah,vXe,AXe,ql=h(()=>{"use strict";d();Ype();we();Be();ah=K("vc-notice-"),vXe=["info","warning","danger","positive"];AXe={info:yXe,warning:bXe,danger:SXe,positive:wXe};Xo.Info=e=>i(Xo,{variant:"info",...e});Xo.Warning=e=>i(Xo,{variant:"warning",...e});Xo.Danger=e=>i(Xo,{variant:"danger",...e});Xo.Positive=e=>i(Xo,{variant:"positive",...e})});function kXe(){return i(br,null,i(oe,{className:z.top16},"Backup & Restore"),i(U,{className:z.bottom20},"Import and export your Equicord settings as a JSON file. This allows you to easily transfer your settings to another device, or recover them after reinstalling Equicord or Discord."),i(Xo.Warning,{className:z.bottom20},"Importing a settings file will overwrite your current settings. Make sure to export a backup first if you want to keep your current configuration."),i(oe,null,"What's included in a backup"),i(U,{className:z.bottom20},"\u2022 Custom QuickCSS",i("br",null),"\u2022 Theme Links",i("br",null),"\u2022 Plugin Settings",i("br",null),"\u2022 DataStore Data"),i(Rt,{className:z.bottom20}),i(oe,null,"Import Settings"),i(U,{className:z.bottom16},"Select a previously exported settings file to restore your configuration. This will replace all your current settings with the ones from the backup."),i(pe,{gap:"8px",className:z.bottom20,style:{flexWrap:"wrap"}},i(de,{onClick:()=>Ew("all"),size:"small",variant:"secondary"},"Import All Settings"),i(de,{onClick:()=>Ew("plugins"),size:"small"},"Import Plugins"),i(de,{onClick:()=>Ew("css"),size:"small"},"Import QuickCSS"),i(de,{onClick:()=>Ew("datastore"),size:"small"},"Import DataStore")),i(Rt,{className:z.bottom20}),i(oe,null,"Export Settings"),i(U,{className:z.bottom16},"Download your current settings as a backup file. You can export everything at once, or choose to export only specific parts of your configuration."),i(pe,{gap:"8px",style:{flexWrap:"wrap"}},i(de,{onClick:()=>Iw("all"),size:"small",variant:"secondary"},"Export All Settings"),i(de,{onClick:()=>Iw("plugins"),size:"small"},"Export Plugins"),i(de,{onClick:()=>Iw("css"),size:"small"},"Export QuickCSS"),i(de,{onClick:()=>Iw("datastore"),size:"small"},"Export DataStore")))}var P9,Jpe=h(()=>{"use strict";d();IH();Tt();xr();Lt();We();ql();Je();wf();Wt();P9=Sr(kXe,"Backup & Restore")});async function Xpe(){let e=await vt("Vencord_cloudSecret")??{},t=DH();return e[t]?(await Es("Vencord_cloudSecret",o=>(o??={},o[`${t}:${Dw()}`]=o[t],delete o[t],o)),e[t]):e[`${t}:${Dw()}`]}async function CXe(e){await Es("Vencord_cloudSecret",t=>(t??={},t[`${DH()}:${Dw()}`]=e,t))}async function W1(){await Es("Vencord_cloudSecret",e=>(e??={},delete e[`${DH()}:${Dw()}`],e))}async function M9(){if(await Xpe()!==void 0){Me.cloud.authenticated=!0;return}try{let o=await fetch(new URL("/v1/oauth/settings",kc()));var{clientId:e,redirectUri:t}=await o.json()}catch{At({title:"Cloud Integration",body:"Setup failed (couldn't retrieve OAuth configuration)."}),Me.cloud.authenticated=!1;return}ce(o=>i(ws,{...o,scopes:["identify"],responseType:"code",redirectUri:t,permissions:0n,clientId:e,cancelCompletesFlow:!1,callback:async({location:r})=>{if(!r){Me.cloud.authenticated=!1;return}try{let a=await(await fetch(r,{headers:{Accept:"application/json"}})).json();a.secret?(EH.info("Authorized with cloud"),await CXe(a.secret),At({title:"Cloud Integration",body:"Cloud integrations enabled!"}),Me.cloud.authenticated=!0):(EH.error("OAuth callback returned no secret",a),At({title:"Cloud Integration",body:a.error?`Setup failed: ${a.error}`:"Setup failed (no secret returned)."}),Me.cloud.authenticated=!1)}catch(n){EH.error("Failed to authorize",n),At({title:"Cloud Integration",body:`Setup failed (${n.toString()}).`}),Me.cloud.authenticated=!1}}}))}async function sh(){let e=await Xpe();return window.btoa(`${e}:${Dw()}`)}var EH,kc,DH,Dw,PH=h(()=>{"use strict";d();Io();Fa();j();He();C();EH=new ie("SettingsSync:CloudSetup","#39b7e0"),kc=()=>new URL(Me.cloud.url),DH=()=>kc().origin,Dw=()=>{let e=L.getCurrentUser()?.id;if(!e)throw new Error("User not yet logged in");return e}});var dl,N9=h(()=>{"use strict";d();({localStorage:dl}=window)});function Rw(e,t){return FXe(e,t||{},0,0)}function Lw(e,t){return NXe(e,{i:2},t&&t.out,t&&t.dictionary)}function nme(e,t){if(t){for(var o=new qr(e.length),r=0;r>1)),s=0,l=function(p){a[s++]=p},r=0;ra.length){var c=new qr(s+8+(n-r<<1));c.set(a),a=c}var u=e.charCodeAt(r);u<128||t?l(u):u<2048?(l(192|u>>6),l(128|u&63)):u>55295&&u<57344?(u=65536+(u&1047552)|e.charCodeAt(++r)&1023,l(240|u>>18),l(128|u>>12&63),l(128|u>>6&63),l(128|u&63)):(l(224|u>>12),l(128|u>>6&63),l(128|u&63))}return Bw(a,0,s)}function zXe(e,t){if(t){for(var o="",r=0;r65535&&rs(11);var k=p?Rw(c,u):c,w=k.length,I=OXe();I.p(c),r.push(dme(u,{size:c.length,crc:I.d(),c:k,f:m,m:v,u:g!=s.length||v&&x.length!=y,o:n,compression:p})),n+=30+g+A+w,a+=76+2*(g+A)+(y||0)+w}for(var E=new qr(a+22),N=n,B=a-n,_=0;_65558)&&rs(13);var n=Ad(e,r+8);if(!n)return{};var a=Cc(e,r+16),s=Cc(e,r-20)==117853008;if(s){var l=Cc(e,r-12);s=Cc(e,l)==101075792,s&&(n=Cc(e,l+32),a=Cc(e,l+48))}for(var c=t&&t.filter,u=0;u{d();qr=Uint8Array,Wl=Uint16Array,$H=Int32Array,B9=new qr([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),R9=new qr([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),LH=new qr([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ime=function(e,t){for(var o=new Wl(31),r=0;r<31;++r)o[r]=t+=1<>1|(pn&21845)<<1,Kp=(Kp&52428)>>2|(Kp&13107)<<2,Kp=(Kp&61680)>>4|(Kp&3855)<<4,FH[pn]=((Kp&65280)>>8|(Kp&255)<<8)>>1;kd=(function(e,t,o){for(var r=e.length,n=0,a=new Wl(t);n>c]=u}else for(l=new Wl(r),n=0;n>15-e[n]);return l}),Pf=new qr(288);for(pn=0;pn<144;++pn)Pf[pn]=8;for(pn=144;pn<256;++pn)Pf[pn]=9;for(pn=256;pn<280;++pn)Pf[pn]=7;for(pn=280;pn<288;++pn)Pf[pn]=8;Nw=new qr(32);for(pn=0;pn<32;++pn)Nw[pn]=5;IXe=kd(Pf,9,0),EXe=kd(Pf,9,1),DXe=kd(Nw,5,0),PXe=kd(Nw,5,1),MH=function(e){for(var t=e[0],o=1;ot&&(t=e[o]);return t},pu=function(e,t,o){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&o},NH=function(e,t){var o=t/8|0;return(e[o]|e[o+1]<<8|e[o+2]<<16)>>(t&7)},GH=function(e){return(e+7)/8|0},Bw=function(e,t,o){return(t==null||t<0)&&(t=0),(o==null||o>e.length)&&(o=e.length),new qr(e.subarray(t,o))},MXe=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],rs=function(e,t,o){var r=new Error(t||MXe[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,rs),!o)throw r;return r},NXe=function(e,t,o,r){var n=e.length,a=r?r.length:0;if(!n||t.f&&!t.l)return o||new qr(0);var s=!o,l=s||t.i!=2,c=t.i;s&&(o=new qr(n*3));var u=function(An){var So=o.length;if(An>So){var fr=new qr(Math.max(So*2,An));fr.set(o),o=fr}},p=t.f||0,m=t.p||0,g=t.b||0,x=t.l,v=t.d,y=t.m,A=t.n,k=n*8;do{if(!x){p=pu(e,m,1);var w=pu(e,m+1,3);if(m+=3,w)if(w==1)x=EXe,v=PXe,y=9,A=5;else if(w==2){var B=pu(e,m,31)+257,_=pu(e,m+10,15)+4,q=B+pu(e,m+5,31)+1;m+=14;for(var $=new qr(q),re=new qr(19),Z=0;Z<_;++Z)re[LH[Z]]=pu(e,m+Z*3,7);m+=_*3;for(var ee=MH(re),ae=(1<>4;if(I<16)$[Z++]=I;else{var Ee=0,Ue=0;for(I==16?(Ue=3+pu(e,m,3),m+=2,Ee=$[Z-1]):I==17?(Ue=3+pu(e,m,7),m+=3):I==18&&(Ue=11+pu(e,m,127),m+=7);Ue--;)$[Z++]=Ee}}var it=$.subarray(0,B),se=$.subarray(B);y=MH(it),A=MH(se),x=kd(it,y,1),v=kd(se,A,1)}else rs(1);else{var I=GH(m)+4,E=e[I-4]|e[I-3]<<8,N=I+E;if(N>n){c&&rs(0);break}l&&u(g+E),o.set(e.subarray(I,N),g),t.b=g+=E,t.p=m=N*8,t.f=p;continue}if(m>k){c&&rs(0);break}}l&&u(g+131072);for(var te=(1<>4;if(m+=Ee&15,m>k){c&&rs(0);break}if(Ee||rs(2),ze<256)o[g++]=ze;else if(ze==256){me=m,x=null;break}else{var dt=ze-254;if(ze>264){var Z=ze-257,pt=B9[Z];dt=pu(e,m,(1<>4;Dt||rs(3),m+=Dt&15;var se=TXe[Wo];if(Wo>3){var pt=R9[Wo];se+=NH(e,m)&(1<k){c&&rs(0);break}l&&u(g+131072);var Ar=g+dt;if(g>8},Pw=function(e,t,o){o<<=t&7;var r=t/8|0;e[r]|=o,e[r+1]|=o>>8,e[r+2]|=o>>16},BH=function(e,t){for(var o=[],r=0;rg&&(g=a[r].s);var x=new Wl(g+1),v=_H(o[p-1],x,0);if(v>t){var r=0,y=0,A=v-t,k=1<t)y+=k-(1<>=A;y>0;){var I=a[r].s;x[I]=0&&y;--r){var E=a[r].s;x[E]==t&&(--x[E],++y)}v=t}return{t:new qr(x),l:v}},_H=function(e,t,o){return e.s==-1?Math.max(_H(e.l,t,o+1),_H(e.r,t,o+1)):t[e.s]=o},eme=function(e){for(var t=e.length;t&&!e[--t];);for(var o=new Wl(++t),r=0,n=e[0],a=1,s=function(c){o[r++]=c},l=1;l<=t;++l)if(e[l]==n&&l!=t)++a;else{if(!n&&a>2){for(;a>138;a-=138)s(32754);a>2&&(s(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(s(n),--a;a>6;a-=6)s(8304);a>2&&(s(a-3<<5|8208),a=0)}for(;a--;)s(n);a=1,n=e[l]}return{c:o.subarray(0,r),n:t}},Mw=function(e,t){for(var o=0,r=0;r>8,e[n+2]=e[n]^255,e[n+3]=e[n+1]^255;for(var a=0;a4&&!re[LH[ee-1]];--ee);var ae=u+5<<3,ge=Mw(n,Pf)+Mw(a,Nw)+s,ke=Mw(n,g)+Mw(a,y)+s+14+3*ee+Mw(_,re)+2*_[16]+3*_[17]+7*_[18];if(c>=0&&ae<=ge&&ae<=ke)return cme(t,p,e.subarray(c,c+u));var Ee,Ue,it,se;if(Qp(t,p,1+(ke15&&(Qp(t,p,ze[q]>>5&127),p+=ze[q]>>12)}}else Ee=IXe,Ue=Pf,it=DXe,se=Nw;for(var q=0;q255){var dt=pt>>18&31;Pw(t,p,Ee[dt+257]),p+=Ue[dt+257],dt>7&&(Qp(t,p,pt>>23&31),p+=B9[dt]);var Dt=pt&31;Pw(t,p,it[Dt]),p+=se[Dt],Dt>3&&(Pw(t,p,pt>>5&8191),p+=R9[Dt])}else Pw(t,p,Ee[pt]),p+=Ue[pt]}return Pw(t,p,Ee[256]),p+Ue[256]},BXe=new $H([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),ume=new qr(0),RXe=function(e,t,o,r,n,a){var s=a.z||e.length,l=new qr(r+s+5*(1+Math.ceil(s/7e3))+n),c=l.subarray(r,l.length-n),u=a.l,p=(a.r||0)&7;if(t){p&&(c[0]=a.r>>3);for(var m=BXe[t-1],g=m>>13,x=m&8191,v=(1<7e3||re>24576)&&(Ee>423||!u)){p=tme(e,c,0,E,N,B,q,re,ee,$-ee,p),re=_=q=0,ee=$;for(var Ue=0;Ue<286;++Ue)N[Ue]=0;for(var Ue=0;Ue<30;++Ue)B[Ue]=0}var it=2,se=0,te=x,xe=ge-ke&32767;if(Ee>2&&ae==I($-xe))for(var me=Math.min(g,Ee)-1,ze=Math.min(32767,$),dt=Math.min(258,Ee);xe<=ze&&--te&&ge!=ke;){if(e[$+it]==e[$+it-xe]){for(var pt=0;ptit){if(it=pt,se=xe,pt>me)break;for(var Dt=Math.min(xe,pt-2),Wo=0,Ue=0;UeWo&&(Wo=Uo,ke=Ar)}}}ge=ke,ke=y[ge],xe+=ge-ke&32767}if(se){E[re++]=268435456|OH[it]<<18|Vpe[se];var An=OH[it]&31,So=Vpe[se]&31;q+=B9[An]+R9[So],++N[257+An],++B[So],Z=$+it,++_}else E[re++]=e[$],++N[e[$]]}}for($=Math.max($,Z);$=s&&(c[p/8|0]=u,fr=s),p=cme(c,p+1,e.subarray($,fr))}a.i=s}return Bw(l,0,r+GH(p)+n)},LXe=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var o=t,r=9;--r;)o=(o&1&&-306674912)^o>>>1;e[t]=o}return e})(),OXe=function(){var e=-1;return{p:function(t){for(var o=e,r=0;r>>8;e=o},d:function(){return~e}}},FXe=function(e,t,o,r,n){if(!n&&(n={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),s=new qr(a.length+e.length);s.set(a),s.set(e,a.length),e=s,n.w=a.length}return RXe(e,t.level==null?6:t.level,t.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,o,r,n)},dme=function(e,t){var o={};for(var r in e)o[r]=e[r];for(var r in t)o[r]=t[r];return o},Ad=function(e,t){return e[t]|e[t+1]<<8},Cc=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},RH=function(e,t){return Cc(e,t)+Cc(e,t+4)*4294967296},Ua=function(e,t,o){for(;o;++t)e[t]=o,o>>>=8};pme=function(e,t,o,r){for(var n in e){var a=e[n],s=t+n,l=r;Array.isArray(a)&&(l=dme(r,a[1]),a=a[0]),ArrayBuffer.isView(a)?o[s]=[a,l]:(o[s+="/"]=[new qr(0),l],pme(a,s,o,r))}},ome=typeof TextEncoder<"u"&&new TextEncoder,UH=typeof TextDecoder<"u"&&new TextDecoder,_Xe=0;try{UH.decode(ume,{stream:!0}),_Xe=1}catch{}UXe=function(e){for(var t="",o=0;;){var r=e[o++],n=(r>127)+(r>223)+(r>239);if(o+n>e.length)return{s:t,r:Bw(e,o-1)};n?n==3?(r=((r&15)<<18|(e[o++]&63)<<12|(e[o++]&63)<<6|e[o++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):n&1?t+=String.fromCharCode((r&31)<<6|e[o++]&63):t+=String.fromCharCode((r&15)<<12|(e[o++]&63)<<6|e[o++]&63):t+=String.fromCharCode(r)}};$Xe=function(e,t){return t+30+Ad(e,t+26)+Ad(e,t+28)},GXe=function(e,t,o){var r=Ad(e,t+28),n=Ad(e,t+30),a=zXe(e.subarray(t+46,t+46+r),!(Ad(e,t+8)&2048)),s=t+46+r,l=HXe(e,s,n,o,Cc(e,t+20),Cc(e,t+24),Cc(e,t+42)),c=l[0],u=l[1],p=l[2];return[Ad(e,t+10),c,u,a,s+n+Ad(e,t+32),p]},HXe=function(e,t,o,r,n,a,s){var l=n==4294967295,c=a==4294967295,u=s==4294967295,p=t+o,m=l+c+u;if(r&&m){for(;t+465535&&rs(9),t+=r+4}return t},rme=function(e,t,o,r,n,a,s,l){var c=r.length,u=o.extra,p=l&&l.length,m=zH(u);Ua(e,t,s!=null?33639248:67324752),t+=4,s!=null&&(e[t++]=20,e[t++]=o.os),e[t]=20,t+=2,e[t++]=o.flag<<1|(a<0&&8),e[t++]=n&&8,e[t++]=o.compression&255,e[t++]=o.compression>>8;var g=new Date(o.mtime==null?Date.now():o.mtime),x=g.getFullYear()-1980;if((x<0||x>119)&&rs(10),Ua(e,t,x<<25|g.getMonth()+1<<21|g.getDate()<<16|g.getHours()<<11|g.getMinutes()<<5|g.getSeconds()>>1),t+=4,a!=-1&&(Ua(e,t,o.crc),Ua(e,t+4,a<0?-a-2:a),Ua(e,t+8,o.size)),Ua(e,t+12,c),Ua(e,t+14,m),t+=16,s!=null&&(Ua(e,t,p),Ua(e,t+6,o.attrs),Ua(e,t+10,s),t+=14),e.set(r,t),t+=c,m)for(var v in u){var y=u[v],A=y.length;Ua(e,t,+v),Ua(e,t+2,A),e.set(y,t+4),t+=4+A}return p&&(e.set(l,t),t+=p),t},jXe=function(e,t,o,r,n){Ua(e,t,101010256),Ua(e,t+8,o),Ua(e,t+10,o),Ua(e,t+12,r),Ua(e,t+16,n)}});async function WXe(){return await vt(xme)??{}}async function Fw(){return(await WXe())[kc().origin]??"v2"}async function KXe(e){await Es(xme,t=>(t??={},t[kc().origin]=e,t))}function QXe(e){let t="";for(let o=0;or.toString(16).padStart(2,"0")).join("")}async function wme(){return await vt(hme)??[]}async function L9(e){await Ct(hme,e)}async function JXe(){let e=new TextEncoder,t=new Map;t.set("settings",e.encode(JSON.stringify(VencordNative.settings.get())));let o=await VencordNative.quickCss.get();o&&t.set("quickCss",e.encode(o));let r=await RG();return r&&t.set("dataStore",e.encode(JSON.stringify(r))),t}async function Ame(e){if(e.length===0)return!1;let t=!1,o=new TextDecoder;for(let r of e){let n=o.decode(ZXe(r.value));if(r.key==="settings")try{await D9(JSON.stringify({settings:JSON.parse(n)}),"all",!0),t=!0}catch(a){Zn.error("Failed to apply settings download",a)}else if(r.key==="quickCss")await VencordNative.quickCss.set(n),t=!0;else if(r.key==="dataStore")try{let a=JSON.parse(n);await DG(a),t=!0}catch(a){Zn.error("Failed to apply dataStore download",a)}else if(r.key.startsWith("dataStore/")){let a=r.key.slice(10);try{await Ct(a,JSON.parse(n)),t=!0}catch(s){Zn.error(`Failed to apply dataStore download for ${a}`,s)}}}return t}function kme(){At({title:"Cloud Settings",body:"Cloud sync was disabled because this account isn't connected. Reconnect in Cloud Settings.",color:"var(--yellow-360)",onClick:()=>un.openUserSettings("equicord_cloud_panel")}),Me.cloud.authenticated=!1}async function Cme(e,t){let o;try{o=await fetch(new URL("/v2/sync",kc()),{method:"POST",headers:{Authorization:await sh(),"Content-Type":"application/json"},body:JSON.stringify({client_manifest:t,uploads:e})})}catch(r){return Zn.error("v2 sync network error, will retry next sync",r),null}return o.status===404?(Zn.info("Server does not support v2, falling back to v1"),await KXe("v1"),null):o.status===401?(kme(),null):o.ok?await o.json():(Zn.error(`Sync failed, API returned ${o.status}`),At({title:"Cloud Settings",body:`Could not synchronize settings (API returned ${o.status}).`,color:"var(--red-360)"}),null)}async function XXe(e){let t=await wme(),o=new Map(t.map(l=>[l.key,l])),r=await JXe(),n=[];for(let[l,c]of r){let u=await YXe(c),p=o.get(l);(!p||p.checksum!==u)&&n.push({key:l,value:QXe(c),checksum:u})}if(n.length===0&&!e){Zn.info("No changes to push"),delete dl.Vencord_settingsDirty;return}let a=await Cme(n,t);if(!a)return;for(let l of a.errors)Zn.error(`Sync error for ${l.key}: ${l.error}`);let s=await Ame(a.downloads);await L9(a.server_manifest),Wn.cloud.settingsSyncVersion=Date.now(),await VencordNative.settings.set(Wn),Zn.info(`Sync complete: ${a.uploaded.length} uploaded, ${a.downloads.length} downloaded`),e&&At({title:"Cloud Settings",body:s?"Settings synced! Click here to restart to fully apply changes.":"Settings synchronized to the cloud!",color:"var(--green-360)",onClick:s?ai:void 0,noPersist:!0}),delete dl.Vencord_settingsDirty}async function VXe(e,t){let o=t?[]:await wme(),r=await Cme([],o);if(!r)return!1;for(let a of r.errors)Zn.error(`Sync error for ${a.key}: ${a.error}`);if(r.downloads.length===0)return Zn.info("Settings up to date"),e&&At({title:"Cloud Settings",body:"Your settings are up to date.",noPersist:!0}),!1;let n=await Ame(r.downloads);return await L9(r.server_manifest),Wn.cloud.settingsSyncVersion=Date.now(),await VencordNative.settings.set(Wn),Zn.info(`Pulled ${r.downloads.length} keys from cloud`),e&&At({title:"Cloud Settings",body:n?"Your settings have been updated! Click here to restart to fully apply changes!":"Cloud data synchronized.",color:"var(--green-360)",onClick:n?ai:void 0,noPersist:!0}),delete dl.Vencord_settingsDirty,!0}async function eVe(){let e=await sh(),t=await fetch(new URL("/v2/manifest",kc()),{headers:{Authorization:e}});if(!t.ok){At({title:"Cloud Settings",body:`Could not fetch manifest for deletion (API returned ${t.status}).`,color:"var(--red-360)"});return}let{entries:o}=await t.json();await Promise.all(o.map(async r=>{let n=await fetch(new URL(`/v2/data/${encodeURIComponent(r.key)}`,kc()),{method:"DELETE",headers:{Authorization:e}});!n.ok&&n.status!==404&&Zn.error(`Failed to delete key ${r.key}: ${n.status}`)})),await L9([]),Wn.cloud.settingsSyncVersion=0,await VencordNative.settings.set(Wn),Zn.info("Settings deleted from cloud successfully"),At({title:"Cloud Settings",body:"Settings deleted from cloud!",color:"var(--green-360)"})}async function fme(e){let t=await TH({syncDataStore:!1,minify:!0}),o=await fetch(new URL("/v1/settings",kc()),{method:"PUT",headers:{Authorization:await sh(),"Content-Type":"application/octet-stream"},body:Rw(new TextEncoder().encode(t))});if(!o.ok){Zn.error(`Failed to sync up, API returned ${o.status}`),At({title:"Cloud Settings",body:`Could not synchronize settings to cloud (API returned ${o.status}).`,color:"var(--red-360)"});return}let{written:r}=await o.json();Wn.cloud.settingsSyncVersion=r,VencordNative.settings.set(Wn),Zn.info("Settings uploaded to cloud successfully"),e&&At({title:"Cloud Settings",body:"Synchronized settings to the cloud!",noPersist:!0}),delete dl.Vencord_settingsDirty}async function gme(e,t){let o=await fetch(new URL("/v1/settings",kc()),{method:"GET",headers:{Authorization:await sh(),Accept:"application/octet-stream","If-None-Match":Me.cloud.settingsSyncVersion.toString()}});if(o.status===401)return kme(),!1;if(o.status===404)return Zn.info("No settings on the cloud"),e&&At({title:"Cloud Settings",body:"There are no settings in the cloud.",noPersist:!0}),!1;if(o.status===304)return Zn.info("Settings up to date"),e&&At({title:"Cloud Settings",body:"Your settings are up to date.",noPersist:!0}),!1;if(!o.ok)return Zn.error(`Failed to sync down, API returned ${o.status}`),At({title:"Cloud Settings",body:`Could not synchronize settings from the cloud (API returned ${o.status}).`,color:"var(--red-360)"}),!1;let r=Number(o.headers.get("etag")),n=Me.cloud.settingsSyncVersion;if(!t&&r{"use strict";d();Io();Fa();j();N9();He();hd();C();K1();PH();IH();Zn=new ie("SettingsSync:Cloud","#39b7e0"),hme="Vencord_cloudManifest",xme="Vencord_cloudApiVersions",qXe="Vencord_cloudSyncDirection",vme="Vencord_settingsDirty",yme=()=>dl.getItem(qXe)||"both",bme=()=>dl.getItem(vme)==="true",Sme=()=>dl.setItem(vme,"true")});function Cd({initialValue:e,onChange:t,validate:o,placeholder:r}){let[n,a]=T(e),[s,l]=T();function c(u){a(u);let p=o(u);p===!0?(l(void 0),t(u)):l(p)}return i(f,null,i(Te,{type:"text",value:n,onChange:c,error:s,placeholder:r}))}var Q1=h(()=>{"use strict";d();C()});function oVe(){return i("img",{src:"https://equicord.org/assets/favicon.png",alt:"Equicord",style:Dme})}function nVe(){return i("img",{src:"https://equicord.org/assets/icons/vencord/icon-light.png",alt:"Vencord",style:Dme})}function aVe(e){try{return new URL(e),!0}catch{return"Invalid URL"}}function lVe(){let e=lo(["cloud.authenticated","cloud.url","cloud.settingsSync"]),[t,o]=T(0),r=Vt(),{cloud:n}=e,a=n.authenticated,s=a&&n.settingsSync;async function l(c){n.url=c,n.authenticated=!1,await W1(),await M9(),o(u=>u+1)}return i(br,null,i(oe,{className:z.top16},"Cloud Integration"),i(U,{className:z.bottom16},"Equicord's cloud integration allows you to sync your settings across multiple devices and Discord installations. Your data is securely stored and can be easily restored at any time."),i(Xo.Info,{className:z.bottom16},"We use our own ",i(so,{href:"https://github.com/Equicord/Equicloud"},"Equicloud backend")," with enhanced features. View our ",i(so,{href:"https://equicord.org/cloud/policy"},"privacy policy")," to see what we store and how we use your data. Equicloud is BSD 3.0 licensed, so you can self-host if preferred."),i(mo,{title:"Enable Cloud Integration",description:"Connect to the cloud backend for settings synchronization. This will request authorization if you haven't set up cloud integration yet.",value:a,onChange:c=>{c?M9():n.authenticated=c},hideBorder:!0}),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Cloud Backend"),i(U,{className:z.bottom16},"Choose which cloud backend to use for storing your settings. You can switch between Equicord's and Vencord's cloud services, or use a self-hosted instance."),i("div",{className:z.bottom8},i(Fn,{options:Eme,value:Eme.find(c=>c.value===n.url)?.value,onChange:c=>l(c),closeOnSelect:!0,renderOptionPrefix:c=>c?.value?.includes("equicord")?i(oVe,null):i(nVe,null)})),i(pe,{gap:"8px",alignItems:"center"},i("div",{style:{flex:1}},i(Cd,{key:`backendUrl-${t}`,initialValue:n.url,onChange:async c=>{n.url=c,n.authenticated=!1,await W1()},validate:aVe})),i(de,{disabled:!a,onClick:async()=>{n.authenticated=!1,await W1(),await M9()}},i(pe,{gap:"8px",alignItems:"center"},i(rVe,{color:"currentColor"}),"Reauthorize"))),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Settings Sync"),i(U,{className:z.bottom16},"Synchronize your Equicord settings to the cloud. This makes it easy to keep your configuration consistent across multiple devices without manual import/export."),i(mo,{title:"Enable Settings Sync",description:"When enabled, your settings can be synced to and from the cloud. Use the actions below to manually sync.",value:n.settingsSync,onChange:c=>{n.settingsSync=c},disabled:!a,hideBorder:!0}),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Sync Rules for This Device"),i(U,{className:z.bottom16},"This setting controls how settings move between ",i("strong",null,"this device")," and the cloud. You can let changes flow both ways, or choose one place to be the main source of truth."),i(qt,{options:sVe,isSelected:c=>c===(dl.Vencord_cloudSyncDirection??"both"),select:c=>{dl.Vencord_cloudSyncDirection=c,r()},serialize:c=>c,isDisabled:!s}),i(pe,{gap:"8px",className:z.top16},i(de,{style:{flex:1},disabled:!s,onClick:()=>_w(!0)},i(pe,{gap:"8px",alignItems:"center"},i(n1,null),"Sync to Cloud")),i(de,{style:{flex:1},disabled:!s,onClick:()=>F9(!0,!0)},i(pe,{gap:"8px",alignItems:"center"},i(o1,null),"Sync from Cloud"))),!a&&i(Xo.Warning,{className:z.top8},"Enable cloud integration above to use settings sync features."),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Danger Zone"),i(U,{className:z.bottom16},"Permanently delete all your data from the cloud. This action cannot be undone and will remove all synced settings and any other data stored on the cloud backend."),i(pe,{gap:"8px"},i(de,{variant:"dangerPrimary",size:"medium",disabled:!s,onClick:()=>Tme()},i(pe,{gap:"8px",alignItems:"center"},i(iVe,{color:"currentColor"}),"Delete Cloud Settings")),i(de,{variant:"dangerSecondary",size:"medium",disabled:!a,onClick:()=>Oo.show({title:"Delete Cloud Account",body:"Are you sure you want to permanently delete your cloud account and all associated data? This action cannot be undone.",onConfirm:Ime,confirmText:"Delete Account",confirmColor:"vc-cloud-erase-data-danger-btn",cancelText:"Cancel"})},i(pe,{gap:"8px",alignItems:"center"},i(zU,null),"Delete Cloud Account"))))}var Dme,rVe,iVe,Eme,sVe,_9,Pme=h(()=>{"use strict";d();j();PH();HH();Tt();Q1();xr();Lt();hi();We();ot();$r();ql();Je();wf();N9();Wt();Kt();le();C();Dme={width:20,height:20,borderRadius:4,verticalAlign:"middle"};rVe=he("M4 12a8 8 0 0 1 14.93-4H15"),iVe=he("2.81h8.36a3");Eme=[{label:"Equicord Cloud",value:"https://cloud.equicord.org/"},{label:"Vencord Cloud",value:"https://api.vencord.dev/"}],sVe=[{label:"Two-way sync (changes go both directions)",value:"both"},{label:"This device is the source (upload only)",value:"push"},{label:"The cloud is the source (download only)",value:"pull"},{label:"Do not sync automatically (manual sync via buttons below only)",value:"manual"}];_9=Sr(lVe,"Cloud")});var Mme=h(()=>{});function jH(e,t={}){return{fileName:e,name:t.name??e.replace(/\.css$/i,""),author:t.author??"Unknown Author",description:t.description??"A Discord Theme.",version:t.version,license:t.license,source:t.source,website:t.website,invite:t.invite}}function qH(e,t){if(!e)return jH(t);let o=e.split("/**",2)?.[1]?.split("*/",1)?.[0];if(!o)return jH(t);let r={},n="",a="";for(let s of o.split(cVe))if(s.length!==0)if(s.charAt(0)==="@"&&s.charAt(1)!==" "){r[n]=a.trim();let l=s.indexOf(" ");n=s.substring(1,l),a=s.substring(l+1)}else a+=" "+s.replace("\\n",` `).replace(uVe,"@");return r[n]=a.trim(),delete r[""],jH(t,r)}var cVe,uVe,Nme=h(()=>{"use strict";d();cVe=/[^\S\r\n]*?\r?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,uVe=/^\\@/});function pVe({link:e,onValidate:t}){let[o,r,n]=Ro(()=>fetch(e).then(s=>{if(s.status>300)throw`${s.status} ${s.statusText}`;let l=s.headers.get("Content-Type");if(!l?.startsWith("text/css")&&!l?.startsWith("text/plain"))throw t(!1),"Not a CSS file. Remember to use the raw link!";return t(!0),"Okay!"})),a=n?"Checking...":r?`Error: ${r instanceof Error?r.message:String(r)}`:"Valid!";return i(U,{style:{color:n?"var(--text-muted)":r?"var(--text-feedback-critical)":"var(--status-positive)"}},a)}function Bme({enableOnlineThemes:e,setEnableOnlineThemes:t,currentThemeLink:o,setCurrentThemeLink:r,themeLinkValid:n,setThemeLinkValid:a,addThemeLink:s}){return i(f,null,i(oe,{className:z.top20},"Online Themes"),i(U,{className:z.bottom16},"Load themes directly from URLs instead of local files. Online themes auto-update when the source changes, so you always have the latest version without manual downloads."),i(mo,{title:"Enable Online Themes",description:"Toggle online theme loading. When disabled, all online themes will be turned off and you won't be able to add new ones.",value:e,onChange:t}),i(Xo.Info,{className:z.bottom16,style:{width:"100%"}},"Looking for themes? Check out ",i(so,{href:"https://betterdiscord.app/themes"},"BetterDiscord Themes")," or search on ",i(so,{href:"https://github.com/search?q=discord+theme"},"GitHub"),'. When downloading from BetterDiscord, click "Download" and place the .theme.css file into your themes folder.'),i("div",{className:dVe("link-row")},i(Te,{placeholder:"https://example.com/theme.css",value:o,onChange:r,disabled:!e}),i(de,{onClick:()=>s(o),disabled:!n||!e},"Add")),o&&i("div",{className:z.top8},i(pVe,{link:o,onValidate:a})))}var dVe,Rme=h(()=>{"use strict";d();Tt();hi();We();$r();ql();Je();we();Wt();Kt();C();dVe=K("vc-settings-theme-")});function Lme({fileInputRef:e,onFileUpload:t,refreshLocalThemes:o}){return i(Aw,null,i(Ac,{text:"Open Themes Folder",action:()=>VencordNative.themes.openFolder(),Icon:td}),i(Ac,{text:"Load missing Themes",action:o,Icon:iS}),i(Ac,{text:"Edit QuickCSS",action:()=>VencordNative.quickCss.openEditor(),Icon:od}),Me.plugins.ClientTheme.enabled&&i(Ac,{text:"Edit ClientTheme",action:()=>ns(et.ClientTheme),Icon:Vi}))}var CGt,Ome=h(()=>{"use strict";d();j();ot();Fi();nh();le();Na();CGt=qn(e=>e.prototype?.activateUploadDialogue&&e.prototype.setRef)});function Fme({value:e,onChange:t,className:o}){let[r,n]=T(!1),[a,s]=T(e),l=Se(null);return G(()=>{r&&l.current&&l.current.focus()},[r]),r?i("input",{ref:l,className:o,value:a,onChange:c=>s(c.target.value),onBlur:()=>{n(!1),t(a)},onKeyDown:c=>{c.key==="Enter"?(n(!1),t(a)):c.key==="Escape"&&(n(!1),s(e))}}):i(Y,{className:o,onClick:()=>n(!0),style:{cursor:"pointer"}},e)}var _me=h(()=>{"use strict";d();yt();C()});function Ume(e){let t=Se(null),[o,r]=T(e);return G(()=>{if(!t.current)return;let n=t.current,a=36,s=e;if(n.textContent=s,n.scrollHeight<=a){r(s);return}let l=0,c=s.length;for(;l{"use strict";d();C()});function $me({disabled:e,isNew:t,name:o,infoButton:r,footer:n,author:a,enabled:s,setEnabled:l,description:c,onMouseEnter:u,onMouseLeave:p,customName:m,onEditName:g}){let x=Se(null),v=Se(null),{truncated:y,containerRef:A}=Ume(c?c.toString():"");return i("div",{className:Td("card",{"card-disabled":e}),onMouseEnter:u,onMouseLeave:p},i("div",{className:Td("header")},i("div",{className:Td("name-author")},i(Y,{size:"md",weight:"bold",className:Td("name")},i("div",{ref:v,className:Td("title-container")},i("div",{ref:x,className:Td("title"),onMouseOver:()=>{let k=x.current,w=v.current;k.style.setProperty("--offset",`${w.clientWidth-k.scrollWidth}px`),k.style.setProperty("--duration",`${Math.max(.5,(k.scrollWidth-w.clientWidth)/7)}s`)}},g?i(Fme,{value:m||(o?o.toString():""),onChange:g,className:Td("editable")}):m||o)),t&&i(yw,{text:"NEW",variant:"danger"})),!!a&&i(Y,{size:"md",color:"text-subtle",className:Td("author")},a)),r,i(Mi,{checked:s,onChange:l,disabled:e})),i("div",{ref:A,className:Td("note"),style:{lineHeight:"1.25em",fontSize:"small"},title:c?c.toString():""},y),n&&i("div",{className:Td("footer")},n))}var Td,Gme=h(()=>{"use strict";d();sH();v9();yt();Fi();we();C();_me();zme();Td=K("vc-addon-")});function vVe(e){return qme.find(t=>t.value===e)?.label??"Always on"}function yVe({themeId:e,activationMode:t,onActivationModeChange:o,children:r}){let[n,a]=T(t);return i(P.Menu,{navId:`theme-card-menu-${e}`,onClose:rt.closeContextMenu},o&&i(P.MenuItem,{id:`theme-activation-${e}`,label:"Theme activation"},qme.map(s=>i(P.MenuRadioItem,{key:s.value,id:`theme-activation-${e}-${s.value}`,group:`theme-activation-${e}`,label:s.label,checked:n===s.value,action:()=>{a(s.value),o(s.value)}}))),r)}function bVe({size:e}){let t=e==="sm"?16:24;return i("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:"currentColor"},i("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2z"}))}function SVe({size:e}){let t=e==="sm"?16:24;return i("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:"currentColor"},i("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"}))}function WH({theme:e,enabled:t,onChange:o,onDelete:r,showDeleteButton:n,onEditName:a,disabled:s,onPin:l,isPinned:c,onRefresh:u,onOpenFolder:p,onCopyUrl:m,onDownload:g,themeLink:x,isLocal:v,activationMode:y="always",onActivationModeChange:A}){let k=w=>{rt.openContextMenu(w,()=>i(yVe,{themeId:x??e.fileName,activationMode:y,onActivationModeChange:A},l&&i(P.MenuItem,{id:"pin-theme",label:c?"Unpin":"Pin",icon:Hme,action:l}),e.website&&i(P.MenuItem,{id:"open-website",label:"Open Website",icon:mVe,action:()=>window.open(e.website,"_blank")}),e.invite&&i(P.MenuItem,{id:"join-discord",label:"Join Discord",icon:hVe,action:()=>{Yi(e.invite).catch(()=>ne("Invalid or expired invite"))}}),m&&x&&i(P.MenuItem,{id:"copy-url",label:"Copy URL",icon:gVe,action:m}),g&&i(P.MenuItem,{id:"download-theme",label:"Download",icon:xVe,action:g}),p&&i(P.MenuItem,{id:"open-folder",label:"Open in Folder",icon:td,action:p}),u&&i(P.MenuItem,{id:"refresh-theme",label:"Refresh",icon:fVe,action:u}),n&&r&&i(f,null,i(P.MenuSeparator,null),i(P.MenuItem,{id:"delete-theme",label:"Delete",color:"danger",icon:hr,action:()=>r()}))))};return i($me,{customName:e.customName,name:e.name||e.fileName||"Unknown Theme",description:e.description||"No description provided.",author:e.author||"Unknown",enabled:t,setEnabled:o,disabled:s,infoButton:(n||l)&&i("div",{className:jme("menu-button"),onClick:k},i(ed,null)),footer:i(pe,{flexDirection:"row",gap:"0.4em",alignItems:"center"},i(ve,{text:v?"Local Theme":"Online Theme"},({onMouseLeave:w,onMouseEnter:I})=>i("div",{onMouseEnter:I,onMouseLeave:w,style:{color:"var(--text-muted)",display:"flex"}},v?i(bVe,{size:"sm"}):i(SVe,{size:"sm"}))),c&&i(ve,{text:"Pinned"},({onMouseLeave:w,onMouseEnter:I})=>i("div",{onMouseEnter:I,onMouseLeave:w,className:jme("footer-pin-icon")},i(Hme,{size:"xs"}))),!!e.website&&i(so,{href:e.website},"Website"),!!(e.website&&e.invite)&&i("span",{style:{color:"var(--text-muted)"}},"\u2022"),!!e.invite&&i(so,{href:`https://discord.gg/${e.invite}`,onClick:async w=>{w.preventDefault(),e.invite!=null&&Yi(e.invite).catch(()=>ne("Invalid or expired invite"))}},"Discord Server"),y!=="always"&&i(f,null,!!(e.website||e.invite)&&i("span",{style:{color:"var(--text-muted)"}},"\u2022"),i("span",{style:{color:"var(--text-muted)"}},vVe(y)))),onEditName:a})}var Hme,mVe,fVe,gVe,hVe,xVe,jme,qme,Wme=h(()=>{"use strict";d();Lt();ot();$r();Gme();we();_e();le();C();mz();Hme=he("1-.06-.63L6.16"),mVe=he("m2.4 8.4 8.38-6.46a2"),fVe=he("M21 2a1 1 0 0 1 1 1v6"),gVe=he("M16.32 14.72a1 1 0 0 1 0-1.41l2.51-2.51"),hVe=he("1.6 5.64-2.87"),xVe=he("1.42l3.3 3.3V3a1"),jme=K("vc-settings-theme-"),qme=[{value:"always",label:"Always on"},{value:"light",label:"Light only"},{value:"dark",label:"Dark only"}]});function AVe(e){let t=e.replace(/^\uFEFF/,"");for(;;){let r=t.trimStart();r!==t&&(t=r);let n=/^\/\*[\s\S]*?\*\/\s*/.exec(t);if(!n)break;t=t.slice(n[0].length)}return/^@(light|dark)\b/i.exec(t)?.[1].toLowerCase()}function Qme(e,t){let o=Me.themeActivationModes?.[e]??AVe(t);!o||e in(Me.themeActivationModes??{})||(Me.themeActivationModes={...Me.themeActivationModes??{},[e]:o})}function kVe(){let e=lo(["themeLinks","enabledThemeLinks","enabledThemes","enableOnlineThemes","pinnedThemes","themeActivationModes.*"]),t=Se(null),[o,r]=T(""),[n,a]=T(!1),[s,l]=T(null),[c,u]=T(null),[p,m]=T(()=>e.themeNames??{}),[g,x]=T(""),[v,y]=T("all");G(()=>{A()},[]);async function A(){await Promise.allSettled([k(),_()])}async function k(){let te=await VencordNative.themes.getThemesList();l(te)}function w(te,xe){if(xe){if(e.enabledThemes.includes(te))return;e.enabledThemes=[...e.enabledThemes,te]}else e.enabledThemes=e.enabledThemes.filter(me=>me!==te)}async function I(te){let xe=Array.from(te,me=>{let{name:ze}=me;if(ze.endsWith(".css"))return new Promise((dt,pt)=>{let Dt=new FileReader;Dt.onload=()=>{VencordNative.themes.uploadTheme(ze,Dt.result).then(dt).catch(pt)},Dt.readAsText(me)})});await Promise.all(xe),k()}async function E(te){te.stopPropagation(),te.preventDefault(),te.currentTarget?.files?.length&&await I(te.currentTarget.files)}function N(te){G(()=>{let xe=ze=>{ze.dataTransfer?.items.length&&Array.from(ze.dataTransfer.items).some(dt=>dt.kind==="file"&&dt.getAsFile()?.name.endsWith(".css"))&&(ze.preventDefault(),ze.dataTransfer.dropEffect="copy")},me=async ze=>{ze.preventDefault(),ze.dataTransfer?.files.length&&(await I(Array.from(ze.dataTransfer.files).filter(dt=>dt.name.endsWith(".css"))),te())};return window.addEventListener("dragover",xe),window.addEventListener("drop",me),()=>{window.removeEventListener("dragover",xe),window.removeEventListener("drop",me)}},[])}function B(te){n&&(e.themeLinks.includes(te)||(e.themeLinks=[...e.themeLinks,te],r(""),_()))}async function _(){let te=await Promise.all(e.themeLinks.map(async xe=>{try{let me=await fetch(xe);if(!me.ok)throw new Error(`Failed to fetch ${xe}`);let ze=await me.text();return Qme(xe,ze),{...qH(ze,xe),link:xe}}catch{return null}}));u(te.filter(xe=>xe!==null))}function q(te,xe){if(xe){if(e.enabledThemeLinks.includes(te))return;e.enabledThemeLinks=[...e.enabledThemeLinks,te]}else e.enabledThemeLinks=e.enabledThemeLinks.filter(me=>me!==te)}function $(te){e.pinnedThemes=e.pinnedThemes.filter(me=>me!==te),e.enabledThemes=e.enabledThemes.filter(me=>me!==te),e.enabledThemeLinks=e.enabledThemeLinks.filter(me=>me!==te),e.themeNames=Object.fromEntries(Object.entries(e.themeNames).filter(([me])=>me!==te));let xe={...e.themeActivationModes??{}};delete xe[te],e.themeActivationModes=xe}function re(te){e.themeLinks=e.themeLinks.filter(xe=>xe!==te),$(te),_()}function Z(te,xe){let me={...e.themeActivationModes??{}};xe==="always"?delete me[te]:me[te]=xe,e.themeActivationModes=me}function ee(te){e.pinnedThemes.includes(te)?e.pinnedThemes=e.pinnedThemes.filter(xe=>xe!==te):e.pinnedThemes=[...e.pinnedThemes,te]}async function ae(te){try{let xe=await fetch(te);if(!xe.ok)throw new Error(`Failed to fetch ${te}`);let me=await xe.text();Qme(te,me);let ze={...qH(me,te),link:te};u(dt=>dt?.map(pt=>pt.link===te?ze:pt)??null),ne("Theme refreshed!",D.Type.SUCCESS)}catch{ne("Failed to refresh theme",D.Type.FAILURE)}}async function ge(te,xe){try{let me=await fetch(te);if(!me.ok)throw new Error(`Failed to fetch ${te}`);let ze=await me.text(),dt=xe.replace(/[^a-z0-9]/gi,"-")+".css";DiscordNative.fileManager.saveWithDialog(new TextEncoder().encode(ze),dt)}catch{ne("Failed to download theme",D.Type.FAILURE)}}let ke=Ne(()=>{let te=[];for(let xe of c??[]){let me=p[xe.link]??null;te.push({type:"online",name:me??xe.name??xe.fileName,enabled:e.enabledThemeLinks.includes(xe.link),header:{...xe,customName:me},link:xe.link,activationMode:e.themeActivationModes?.[xe.link]??"always"})}for(let xe of s??[]){let me=xe.name??xe.fileName;te.push({type:"local",name:me,enabled:e.enabledThemes.includes(xe.fileName),header:xe,activationMode:e.themeActivationModes?.[xe.fileName]??"always"})}return te},[c,s,p,e.enabledThemeLinks,e.enabledThemes,e.themeActivationModes]),Ee=Ne(()=>{let te=ke;if(g.trim()){let me=g.toLowerCase();te=te.filter(ze=>ze.name.toLowerCase().includes(me))}switch(v){case"online":te=te.filter(me=>me.type==="online");break;case"local":te=te.filter(me=>me.type==="local");break;case"enabled":te=te.filter(me=>me.enabled);break;case"disabled":te=te.filter(me=>!me.enabled);break}let xe=me=>me.type==="online"?me.link:me.header.fileName;return te.sort((me,ze)=>{let dt=xe(me),pt=xe(ze),Dt=e.pinnedThemes.indexOf(dt),Wo=e.pinnedThemes.indexOf(pt),Ar=Dt!==-1,kr=Wo!==-1;return Ar&&!kr?-1:!Ar&&kr?1:Ar&&kr?Dt-Wo:0}),te},[ke,g,v,e.pinnedThemes]),Ue=ke.filter(te=>te.type==="local").length,it=ke.filter(te=>te.type==="online").length,se=ke.filter(te=>te.enabled).length;return i(br,null,i(oe,{className:z.top16},"Theme Management"),i(U,{className:z.bottom16},"Customize Discord's appearance with themes. Add local .css files or load themes directly from URLs. Themes with a cog wheel icon have customizable settings you can modify."),i(oe,null,"Quick Actions"),i(U,{className:z.bottom16},"Shortcuts for managing your themes. Open your themes folder to add new themes, use QuickCSS for quick style tweaks, or reload themes after making changes."),i(Lme,{fileInputRef:t,onFileUpload:E,refreshLocalThemes:k}),i(Rt,{className:z.top20}),i(Bme,{enableOnlineThemes:e.enableOnlineThemes??!0,setEnableOnlineThemes:te=>{e.enableOnlineThemes=te,te||(e.enabledThemeLinks=[])},currentThemeLink:o,setCurrentThemeLink:r,themeLinkValid:n,setThemeLinkValid:a,addThemeLink:B}),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Installed Themes"),i(U,{className:z.bottom8},"Manage your themes here. Local themes load from your themes folder, online themes from URLs. Themes with a cog wheel icon have customizable settings."),i(U,{color:"text-subtle",className:z.bottom16},ke.length," theme",ke.length!==1?"s":""," installed (",Ue," local, ",it," online) \xB7 ",se," enabled"),i("div",{className:Kme("filter-row")},i(Te,{placeholder:"Search for a theme...",value:g,onChange:x}),i("div",null,i(qt,{options:wVe,select:y,isSelected:te=>te===v,serialize:te=>te}))),s===null?i(U,{color:"text-muted",className:z.top16},"Loading themes..."):Ee.length===0?i(U,{color:"text-muted",className:z.top16},ke.length===0?"No themes installed yet. Add theme files to your themes folder or add an online theme above to get started.":"No themes match your search or filter criteria."):i("div",{className:X(Kme("grid"),z.top16)},Ee.map(te=>{if(te.type==="online"){let me=te.header,ze=!(e.enableOnlineThemes??!0);return i(WH,{key:me.link,theme:me,enabled:te.enabled,onChange:dt=>q(me.link,dt),onDelete:()=>{q(me.link,!1),re(me.link)},showDeleteButton:!0,disabled:ze,onPin:()=>ee(me.link),isPinned:e.pinnedThemes.includes(me.link),themeLink:me.link,onCopyUrl:()=>ft(me.link,"Theme URL copied!"),onRefresh:()=>ae(me.link),onDownload:()=>ge(me.link,me.name??"theme"),isLocal:!1,activationMode:te.activationMode,onActivationModeChange:dt=>Z(me.link,dt),onEditName:dt=>{let pt={...p,[me.link]:dt};m(pt),e.themeNames={...e.themeNames,[me.link]:dt}}})}let xe=te.header;return i(WH,{key:xe.fileName,enabled:te.enabled,onChange:me=>w(xe.fileName,me),onDelete:async()=>{w(xe.fileName,!1),$(xe.fileName),await VencordNative.themes.deleteTheme(xe.fileName),k()},showDeleteButton:!0,onPin:()=>ee(xe.fileName),isPinned:e.pinnedThemes.includes(xe.fileName),onRefresh:k,isLocal:!0,theme:xe,activationMode:te.activationMode,onActivationModeChange:me=>Z(xe.fileName,me)})})))}var Kme,wVe,lh,Zme=h(()=>{"use strict";d();Mme();j();xr();We();$r();Je();wf();Nme();we();_e();Wt();Be();ul();C();Rme();Ome();Wme();Kme=K("vc-settings-theme-"),wVe=[{label:"Show All",value:"all"},{label:"Online Themes",value:"online"},{label:"Local Themes",value:"local"},{label:"Enabled",value:"enabled"},{label:"Disabled",value:"disabled"}];lh=Sr(kVe,"Themes")});function CVe(){return null}function TVe(){let e=lo(["autoUpdate","autoUpdateNotification"]),[t,o,r]=Ro(X0,{fallbackValue:"Loading..."});V.useEffect(()=>{o&&Hl.error("Failed to retrieve repo",o)},[o]);let n={repo:t,repoPending:r};return i(br,null,i(CVe,null),i(oe,{className:z.top16},"Update Preferences"),i(U,{className:z.bottom20},"Control how Equicord keeps itself up to date. You can choose to update automatically in the background or be notified when new updates are available."),i("div",{className:"vc-settings-switches"},i(mo,{title:"Automatically update",description:"When enabled, Equicord will automatically download and install updates in the background without asking for confirmation. You'll need to restart Discord to apply the changes.",value:e.autoUpdate,onChange:a=>e.autoUpdate=a,hideBorder:!0}),i(mo,{title:"Get notified when an automatic update completes",description:"Receive a notification when Equicord finishes downloading an update in the background, so you know when to restart Discord.",value:e.autoUpdateNotification,onChange:a=>e.autoUpdateNotification=a,disabled:!e.autoUpdate,hideBorder:!0})),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Repository"),i(U,{className:z.bottom8},"This is the GitHub repository where Equicord fetches updates from."),i(U,{color:"text-subtle"},r?t:o?"Failed to retrieve - check console":i(so,{href:t},t.split("/").slice(-2).join("/"))," ","(",i(F1,{hash:ts,repo:t,disabled:r}),")"),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Updates"),i9?i(Cde,{...n}):i(Tde,{...n}))}var Id,Yme=h(()=>{"use strict";d();j();Tt();Qn();xr();Lt();hi();We();$r();Je();wf();Wt();Kt();ru();C();L1();IG();Id=Sr(TVe,"Updater")});var Jme=h(()=>{});var Z1,KH,Pn,mu=h(()=>{"use strict";d();j();ot();Fi();Ef();O();Ca();R();le();Z1={SECTION:1,SIDEBAR_ITEM:2,PANEL:3,CATEGORY:5,CUSTOM:19};Zo(["SECTION","SIDEBAR_ITEM","PANEL","CUSTOM"],e=>Z1=e);KH=M({settingsLocation:{type:4,description:"Where to put the Equicord settings section",options:[{label:"At the very top",value:"top"},{label:"Above Billing section",value:"aboveNitro",default:!0},{label:"Below Billing section",value:"belowNitro"},{label:"Above Games & Apps Settings",value:"aboveActivity"},{label:"Below Games & Apps Settings",value:"belowActivity"},{label:"At the very bottom",value:"bottom"}]},includeVencordInfoWhenCopying:{type:3,description:"Also copy Equicord info (Equicord, Electron, Chromium) when clicking the version info in the bottom left area of the Settings page",default:!0}}),Pn=S({name:"Settings",description:"Adds Settings UI and debug info",authors:[b.Ven,b.Megu],tags:["Utility"],required:!0,settings:KH,patches:[{find:"#{intl::COPY_VERSION}",replacement:[{match:/\.RELEASE_CHANNEL/,replace:"$&.replace(/^./, c => c.toUpperCase())"},{match:/"text-xxs\/normal".{0,300}?(?=null!=(\i)&&(.{0,20}\i\.\i.{0,200}?,children:).{0,15}?("span"),{className:(\i\.\i),children:\["Build Override: ",\1\.id,\i\]\}\)\}\))/,replace:(e,t,o,r,n)=>`${e},$self.makeInfoElements(${r},${n}).map(e=>${o}e})),`},{match:/copyValue:\i\.join\(" "\)/g,replace:"$& + $self.getInfoString()"}]},{find:".buildLayout().map",replacement:{match:/(\i)\.buildLayout\(\)(?=\.map)/,replace:"$self.buildLayout($1)"}}],buildEntry(e){let{key:t,title:o,panelTitle:r=o,Component:n,Icon:a}=e,s={key:t+"_panel",type:Z1.PANEL,useTitle:()=>r,buildLayout:()=>[{type:Z1.CATEGORY,key:t+"_category",buildLayout:()=>[{type:Z1.CUSTOM,key:t+"_custom",Component:n,useSearchTerms:()=>[o]}]}]};return{key:t,type:Z1.SIDEBAR_ITEM,useTitle:()=>o,icon:()=>i(a,{width:20,height:20}),buildLayout:()=>[s]}},buildLayout(e){let t=e.buildLayout();if(e.key!=="$Root"||!Array.isArray(t)||t.some(u=>u?.key==="equicord_section"))return t;let{buildEntry:o}=this,r=[o({key:"equicord_main",title:"Equicord",panelTitle:"Equicord Settings",Component:U9,Icon:aS}),o({key:"equicord_plugins",title:"Plugins",Component:ih,Icon:yU}),o({key:"equicord_themes",title:"Themes",Component:lh,Icon:od}),Id&&o({key:"equicord_updater",title:"Updater",panelTitle:"Equicord Updater",Component:Id,Icon:wU}),o({key:"equicord_changelog",title:"Changelog",Component:k9,Icon:rS}),o({key:"equicord_cloud",title:"Cloud",panelTitle:"Equicord Cloud",Component:_9,Icon:bU}),o({key:"equicord_backup_restore",title:"Backup & Restore",Component:P9,Icon:SU}),!1,...this.customEntries.map(o)].filter(Aa),n={key:"equicord_section",type:Z1.SECTION,useTitle:()=>"Equicord Settings",buildLayout:()=>r},{settingsLocation:a}=KH.store,s={top:"user_section",aboveNitro:"billing_section",belowNitro:"billing_section",aboveActivity:"games_and_apps_section",belowActivity:"games_and_apps_section",bottom:"utility_section"},l=s[a]??s.top,c=t.findIndex(u=>typeof u?.key=="string"&&u.key===l);return c===-1?c=2:a.startsWith("below")&&(c+=1),t.splice(c,0,n),t},customSections:[],customEntries:[],get electronVersion(){return VencordNative.native.getVersions().electron??window.legcord?.electron??null},get chromiumVersion(){try{return VencordNative.native.getVersions().chrome??navigator.userAgentData?.brands?.find(e=>e.brand==="Chromium"||e.brand==="Google Chrome")?.version??null}catch{return null}},getVersionInfo(e=!0){let t="";return t="Standalone",e&&t?` (${t})`:t},getInfoRows(){let{electronVersion:e,chromiumVersion:t,getVersionInfo:o}=this,r=[`Equicord ${If}${o()}`];return e&&r.push(`Electron ${e}`),t&&r.push(`Chromium ${t}`),r},getInfoString(){return KH.store.includeVencordInfoWhenCopying?` `+this.getInfoRows().join(` `):""},makeInfoElements(e,t){return this.getInfoRows().map((o,r)=>i(e,{key:r,className:t},o))}})});function QH({donated:e=!1}){return i(pe,null,i(j1,{equicord:!0,className:e?"":"vc-donate-support-button",style:{marginTop:"1em"}}),i(xH,{className:e?"":"vc-invite-support-button",style:{marginTop:"1em"}}))}var Xme=h(()=>{"use strict";d();Lt();yH();q0();O();C()});function Vme(){let e=lo(["macosVibrancyStyle"]);return Go?i(H,{noop:!0},i(oe,{tag:"h5"},"MacOS Window vibrancy style (requires restart)"),i(qt,{className:z.bottom20,placeholder:"Window vibrancy style",options:[{label:"No vibrancy",value:void 0},{label:"Under Page (window tinting)",value:"under-page"},{label:"Content",value:"content"},{label:"Window",value:"window"},{label:"Selection",value:"selection"},{label:"Titlebar",value:"titlebar"},{label:"Header",value:"header"},{label:"Sidebar",value:"sidebar"},{label:"Tooltip",value:"tooltip"},{label:"Menu",value:"menu"},{label:"Popover",value:"popover"},{label:"Fullscreen UI (transparent but slightly muted)",value:"fullscreen-ui"},{label:"HUD (Most transparent)",value:"hud"}],select:t=>e.macosVibrancyStyle=t,isSelected:t=>e.macosVibrancyStyle===t,serialize:gc})):null}var efe=h(()=>{"use strict";d();j();Pe();We();O();Wt();Be();C()});function tfe(){let e=lo(["windowsMaterial"]);return!$l||!VencordNative.native.supportsWindowsMaterial()?null:i(H,{noop:!0},i(oe,{tag:"h5"},"Background Material"),i(U,{className:z.bottom8},"Windows transparent background effects. You need a theme that supports transparency or this will do nothing. A restart is required after changing this setting."),i(qt,{placeholder:"None",options:[{label:"None",value:"none",default:!0},{label:"Mica (incorporates system theme + desktop wallpaper to paint the background)",value:"mica"},{label:"Tabbed (variant of Mica with stronger background tinting)",value:"tabbed"},{label:"Acrylic (blurs the window behind Vesktop for a translucent background)",value:"acrylic"}],closeOnSelect:!0,select:t=>e.windowsMaterial=t,isSelected:t=>t===e.windowsMaterial,serialize:t=>t}))}var ofe=h(()=>{"use strict";d();j();Pe();We();Ja();Je();O();C()});function NVe(){let e=lo(["useQuickCss","enableReactDevtools","mainWindowFrameless","frameless","winNativeTitleBar","transparent","winCtrlQ","disableMinSize"]);return[{key:"useQuickCss",title:"Enable Custom CSS",description:"Apply your configured QuickCSS"},!$l&&{key:"mainWindowFrameless",title:"Disable the Main Window Frame",description:"Remove the native window frame for a cleaner look. You can still move the window by dragging the title bar area.",restartRequired:!0},$l?{key:"winNativeTitleBar",title:"Use Windows' native title bar instead of Discord's custom one",description:"Replace Discord's custom title bar with the standard Windows title bar. This may improve compatibility with some window management tools.",restartRequired:!0}:{key:"frameless",title:"Disable All Window Frames",description:"Remove the native window frame for a cleaner look. You can still move the window by dragging the title bar area.",restartRequired:!0},{key:"transparent",title:"Enable Window Transparency",description:"Make the Discord window transparent. A theme that supports transparency is required or this will do nothing.",restartRequired:!0,warning:$l?"This will stop the window from being resizable and prevents you from snapping the window to screen edges.":"This will stop the window from being resizable."},{key:"disableMinSize",title:"Disable Minimum Window Size",description:"Allows you to resize the window to any size, even smaller than Discord's minimum size",restartRequired:!0},$l&&{key:"winCtrlQ",title:"Register Ctrl+Q as shortcut to close Discord",description:"Add Ctrl+Q as a keyboard shortcut to close Discord. This provides an alternative to Alt+F4 for quickly closing the application.",restartRequired:!0},{key:"enableReactDevtools",title:"Enable React Developer Tools",description:"Mainly useful for plugin developers. Ignore this if you don't know what it is",restartRequired:!0}].map(o=>{if(!o)return null;let{key:r,title:n,description:a,restartRequired:s,warning:l}=o;return i(mo,{key:r,title:n,description:l?i(f,null,a,i(Xo.Warning,{className:z.top8,style:{width:"100%"}},l)):a,value:e[r],hideBorder:!0,onChange:c=>{e[r]=c,s&&Oo.show({title:"Restart Required",body:"A restart is required to apply this change",confirmText:"Restart now",cancelText:"Later!",onConfirm:ai})}})})}function BVe(){let e=Ne(()=>Math.random()>.5?IVe:EVe,[]),t=L?.getCurrentUser();return i(br,null,rfe(t?.id)||ZH(t?.id)?i(kw,{title:"Donations",subtitle:"Thank you for donating!",description:rfe(t?.id)&&ZH(t?.id)?"All Vencord users can see your Vencord donor badge, and Equicord users can see your Equicord donor badge. To change your Vencord donor badge, contact @vending.machine. For your Equicord donor badge, make a ticket in Equicord's server.":ZH(t?.id)?"All Vencord users can see your badge! You can manage your perks by messaging @vending.machine.":"All Equicord users can see your badge! You can manage your perks by making a ticket in Equicord's server.",cardImage:DVe,backgroundImage:nfe,backgroundColor:"#ED87A9"},i(QH,{donated:!0})):i(kw,{title:"Support the Project",description:"Please consider supporting the development of Equicord by donating!",cardImage:e,backgroundImage:nfe,backgroundColor:"#c3a3ce"},i(QH,null)),hc(t?.id)&&i(kw,{title:"Contributions",subtitle:"Thank you for contributing!",description:"Since you've contributed to Equicord you now have a cool new badge!",cardImage:PVe,backgroundImage:MVe,backgroundColor:"#EDCC87"},i(de,{variant:"none",size:"medium",type:"button",onClick:()=>uu(t),className:"vc-contrib-button"},i(t1,{"aria-hidden":!0,fill:"#000000",className:"vc-contrib-github"}),"See what you've contributed to")),i(oe,{className:z.top16},"Quick Actions"),i(U,{className:z.bottom16},"Common actions you might want to perform. These shortcuts give you quick access to frequently used features without navigating through menus."),i(Aw,null,i(Ac,{Icon:rS,text:"Notification Log",action:kf}),i(Ac,{Icon:od,text:"Edit QuickCSS",action:()=>VencordNative.quickCss.openEditor()}),i(Ac,{Icon:iS,text:"Relaunch Discord",action:ai}),i(Ac,{Icon:td,text:"Open Settings Folder",action:()=>VencordNative.settings.openFolder()}),i(Ac,{Icon:t1,text:"View Source Code",action:()=>VencordNative.native.openExternal("https://github.com/"+lu)})),i(Rt,{className:z.top20}),i(oe,{className:z.top20},"Client Settings"),i(U,{className:z.bottom16},"Configure how Equicord behaves and integrates with Discord. These settings affect the Discord client's appearance and behavior."),i(Xo.Info,{className:z.bottom20,style:{width:"100%"}},"You can customize where this settings section appears in Discord's settings menu by configuring the"," ",i("a",{role:"button",onClick:()=>ns(Pn),style:{cursor:"pointer",color:"var(--text-link)"}},"Settings Plugin"),"."),i(NVe,null),i(Vme,null),i(tfe,null),i(Dde,null))}function rfe(e){let t=sl.getEquicordDonorBadges(e);return bt.getMember(mc,e)?.roles.includes(z0)||!!t}function ZH(e){let t=sl.getDonorBadges(e);return bt.getMember($0,e)?.roles.includes(A1)||!!t}var IVe,EVe,DVe,PVe,nfe,MVe,nqt,U9,ife=h(()=>{"use strict";d();Jme();mw();j();Tt();xr();hi();We();ot();ql();Je();Fi();SH();wH();q0();mu();Ef();O();we();Wt();Be();hd();C();Xme();efe();zG();ofe();IVe="https://cdn.discordapp.com/emojis/1026533090627174460.png",EVe="https://equicord.org/assets/favicon.png",DVe="https://cdn.discordapp.com/emojis/1238120638020063377.png",PVe="https://cdn.discordapp.com/emojis/1026533070955872337.png",nfe="https://media.discordapp.net/stickers/1311070116305436712.png?size=2048",MVe="https://media.discordapp.net/stickers/1311070166481895484.png?size=2048",nqt=K("vc-vencord-tab-");U9=Sr(BVe,"Equicord Settings")});var AH=h(()=>{"use strict";d();vde();wf();Bpe();Upe();C9();pH();nh();Jpe();Pme();Zme();Yme();ife()});function afe(){ce(e=>i(H,{noop:!0,onError:()=>{e.onClose(),VencordNative.native.openExternal("https://github.com/sponsors/Vendicated")}},i(be,{...e,title:i(oe,{tag:"h2",style:{width:"100%",textAlign:"center",margin:0}},i(pe,{justifyContent:"center",alignItems:"center",gap:"0.5em"},i(Sd,null),"Vencord Donor"))},i("div",null,i(pe,null,i("img",{role:"presentation",src:"https://cdn.discordapp.com/emojis/1026533070955872337.png",alt:"",style:{margin:"auto"}}),i("img",{role:"presentation",src:"https://cdn.discordapp.com/emojis/1026533090627174460.png",alt:"",style:{margin:"auto"}})),i("div",{style:{padding:"1em"}},i(U,null,"This Badge is a special perk for Vencord Donors"),i(U,{className:z.top20},"Please consider supporting the development of Vencord by becoming a donor. It would mean a lot!!"))),i("div",null,i(pe,{justifyContent:"center",style:{width:"100%"}},i(j1,null))))))}function sfe(){ce(e=>i(H,{noop:!0,onError:()=>{e.onClose(),VencordNative.native.openExternal("https://github.com/sponsors/thororen1234")}},i(be,{...e,title:i(oe,{tag:"h2",style:{width:"100%",textAlign:"center",margin:0}},i(pe,{justifyContent:"center",alignItems:"center",gap:"0.5em"},i(Sd,null),"Equicord Donor"))},i("div",null,i(pe,null,i("img",{role:"presentation",src:"https://cdn.discordapp.com/emojis/1026533070955872337.png",alt:"",style:{margin:"auto"}}),i("img",{role:"presentation",src:"https://cdn.discordapp.com/emojis/1026533090627174460.png",alt:"",style:{margin:"auto"}})),i("div",{style:{padding:"1em"}},i(U,null,"This Badge is a special perk for Equicord (Not Vencord) Donors"),i(U,{className:z.top20},"Please consider supporting the development of Equicord by becoming a donor. It would mean a lot! :3"))),i("div",null,i(pe,{justifyContent:"center",style:{width:"100%"}},i(j1,{equicord:!0}))))))}function lfe(){ce(e=>i(H,{noop:!0,onError:()=>{e.onClose()}},i(be,{...e,title:i(oe,{tag:"h2",style:{width:"100%",textAlign:"center",margin:0}},i(pe,{justifyContent:"center",alignItems:"center",gap:"0.5em"},"Equicord Translator"))},i("div",null,i(pe,null,i("img",{className:"vc-translate-modal-icon",role:"presentation",src:"https://badge.equicord.org/translator.png",alt:""})),i("div",{className:"vc-translate-modal-paragraph"},i(U,null,"Awarded to contributors who expand Equicord\u2019s language support by translating content for the community."))),i("div",null,i(pe,{justifyContent:"center",style:{width:"100%"}},i(vH,null))))))}var cfe=h(()=>{"use strict";d();Pe();Lt();We();H1();Je();Fi();Wt();C()});async function ufe(e,t=!1){let o={};return t&&(o.cache="no-cache"),await fetch(e,o).then(r=>r.json())}async function YH(e=!1){let t=await ufe("https://badges.vencord.dev/badges.json",e),o=await ufe("https://badge.equicord.org/badges.json",e);XH=t,VH=o}function _3({badge:e}){return i(P.Menu,{navId:"vc-badge-context",onClose:rt.closeContextMenu,"aria-label":"Badge Options"},e.description&&i(P.MenuItem,{id:"vc-badge-copy-name",label:"Copy Badge Name",action:()=>ft(e.description),leadingAccessory:{type:"icon",icon:wa}}),e.iconSrc&&i(P.MenuItem,{id:"vc-badge-copy-link",label:"Copy Badge Image Link",action:()=>ft(e.iconSrc),leadingAccessory:{type:"icon",icon:sn}}))}var RVe,LVe,OVe,FVe,_Ve,UVe,XH,VH,JH,sl,q0=h(()=>{"use strict";d();Qce();I1();Pe();ot();AH();O();_e();He();Be();R();C();Na();cfe();RVe="https://cdn.discordapp.com/emojis/1092089799109775453.png?size=64",LVe="https://equicord.org/assets/favicon.png",OVe="https://equicord.org/assets/icons/misc/userplugin.png",FVe={id:"vencord_contributor_badge",description:"Vencord Contributor",iconSrc:RVe,position:0,shouldShow:({userId:e})=>Oz(e),onClick:(e,{userId:t})=>uu(L.getUser(t))},_Ve={id:"equicord_contributor_badge",description:"Equicord Contributor",iconSrc:LVe,position:0,shouldShow:({userId:e})=>Fz(e),onClick:(e,{userId:t})=>uu(L.getUser(t)),props:{style:{borderRadius:"50%",transform:"scale(0.9)"}}},UVe={id:"user_plugin_contributor_badge",description:"User Plugin Contributor",iconSrc:OVe,position:0,shouldShow:({userId:e})=>!1,onClick:(e,{userId:t})=>uu(L.getUser(t)),props:{style:{borderRadius:"50%",transform:"scale(0.9)"}}},XH={},VH={};sl=S({name:"BadgeAPI",description:"API to add badges to users",authors:[b.Megu,b.Ven,b.TheSun],required:!0,patches:[{find:"#{intl::PROFILE_USER_BADGES}",replacement:[{match:/alt:" ","aria-hidden":!0,src:.{0,50}(\i).iconSrc/,replace:"...$1.props,$&"},{match:/(?<=forceOpen:.{0,40}?ariaHidden:!0,)children:(?=.{0,50}?(\i)\.id)/,replace:"children:$1.component?$self.renderBadgeComponent({...$1}):"},{match:/(?<=fallbackIconSrc:.{0,50}?)children:(?=.{0,50}?(\i)\.id)/,replace:"children:$1.component?$self.renderBadgeComponent({...$1}):"},{match:/href:(\i)\.link/,replace:"...$self.getBadgeMouseEventHandlers($1),$&"}]},{find:"getLegacyUsername(){",replacement:{match:/getBadges\(\)\{.{0,100}?return\[/,replace:"$&...$self.getBadges(this),"}}],get DonorBadges(){return XH},get EquicordDonorBadges(){return VH},toolboxActions:{async"Refetch Badges"(){await YH(!0),D.show({id:D.genId(),message:"Successfully refetched badges!",type:D.Type.SUCCESS})}},userProfileBadges:[FVe,_Ve,UVe],async start(){await YH(),clearInterval(JH),JH=setInterval(YH,1e3*60*30)},async stop(){clearInterval(JH)},getBadges(e){if(!e)return[];try{return wG(e)}catch(t){return new ie("BadgeAPI#getBadges").error(t),[]}},renderBadgeComponent:H.wrap(e=>{let t=e.component;return i(t,{...e})},{noop:!0}),getBadgeMouseEventHandlers(e){let t={};if(!e)return t;let{onClick:o,onContextMenu:r}=e;return o&&(t.onClick=n=>o(n,e)),r&&(t.onContextMenu=n=>r(n,e)),t},getDonorBadges(e){return XH[e]?.map((t,o)=>({id:`vencord_donor_badge_${o}`,iconSrc:t.badge,description:t.tooltip,position:0,props:{style:{borderRadius:"50%",transform:"scale(0.9)"}},onContextMenu(r,n){rt.openContextMenu(r,()=>i(_3,{badge:n}))},onClick(){return afe()}}))},getEquicordDonorBadges(e){return VH[e]?.map((t,o)=>({id:`equicord_donor_badge_${o}`,iconSrc:t.badge,description:t.tooltip,position:0,props:{style:{borderRadius:"50%",transform:"scale(0.9)"}},onContextMenu(r,n){rt.openContextMenu(r,()=>i(_3,{badge:n}))},onClick(){return t.tooltip==="Equicord Translator"?lfe():sfe()}}))}})});var z9,dfe=h(()=>{"use strict";d();O();R();z9=S({name:"ChatInputButtonAPI",description:"API to add buttons to the chat input",authors:[b.Ven],patches:[{find:'"sticker")',replacement:[{match:/0===(\i)\.length(?=.{0,25}?\(0,\i\.jsxs?\)\(.{0,75}?children:\1)/,replace:"(Vencord.Api.ChatButtons._injectButtons($1,arguments[0]),$&)"},{match:/(?<="submit"\)\).{0,100}"div",\{className:\i\.\i,children:)(\i)\}/,replace:"Vencord.Api.ChatButtons._wrapButtons($1)}"}]}]})});var $9,pfe=h(()=>{"use strict";d();O();R();$9=S({name:"CommandsAPI",authors:[b.Arjix],description:"Api required by anything that uses commands",patches:[{find:',"tableflip","unflip"',replacement:[{match:/(?<=\w=)(\w)(\.filter\(.{0,60}tableflip)/,replace:"Vencord.Api.Commands._init($1)$2"}]},{find:"Unexpected value for option",replacement:{match:/,(\i)\.execute\((\i),(\i)\)/,replace:(e,t,o,r)=>`,Vencord.Api.Commands._handleCommand(${t}, ${o}, ${r})`}},{find:"#{intl::COMMANDS_OPTIONAL_COUNT}",replacement:[{match:/children:(?=\i\?\?\i\?\.name)(?<=command:(\i),.+?)/,replace:"children:$1.plugin??"}]}]})});var mfe,G9,ffe=h(()=>{"use strict";d();O();id();R();C();mfe={radio:"MenuRadioItem",separator:"MenuSeparator",checkbox:"MenuCheckboxItem",groupstart:"MenuGroup",control:"MenuControlItem",compositecontrol:"MenuControlItem",item:"MenuItem",customitem:"MenuItem"},G9=S({name:"ContextMenuAPI",description:"API for adding/removing items to/from context menus.",authors:[b.Nuckyz,b.Ven,b.Kyuuhachi],required:!0,patches:[{find:"navId:",all:!0,noWarn:!0,replacement:[{match:/navId:(?=.+?([,}].*?\)))/g,replace:(e,t,...o)=>{if(t.match(/}=.+/))return e;let r=o[1]?.slice(Math.max(0,+o[0]-2e3),+o[0]);return r&&Math.max(r.lastIndexOf("PureComponent{"),r.lastIndexOf("Component{"))>r.lastIndexOf("function")?e:`contextMenuAPIArguments:typeof arguments!=='undefined'?arguments:[],${e}`}}]},{find:"Menu API only allows Items",replacement:[{match:/(?=let{navId:)(?<=function \i\((\i)\).+?)/,replace:"$1=Vencord.Api.ContextMenu._usePatchContextMenu($1);"},{match:/(?<=(\(\i\.type===(\i\.\i)\).{0,50}?navigable:.+Menu API).+?)}$/s,replace:(e,t)=>{let o=[],r=xi(/\(\i\.type===(\i\.\i)\)/g),n=/type:"(\w+)"/g,a;for(;(a=r.exec(t))!==null;){let s=a[1];n.lastIndex=r.lastIndex;let l=n.exec(t)?.[1];if(l&&l in mfe){let c=mfe[l];o.push(`$self.registerMenuItem("${c}",${s})`)}}return o.length<6&&console.warn("[MenuItemDemanglerAPI] Expected to remap 6 items, only remapped",o.length),`${o.join(";")};}`}}]}],registerMenuItem(e,t){Object.defineProperty(t,"name",{value:e}),P[e]=t}})});var H9,gfe=h(()=>{"use strict";d();O();R();H9=S({name:"DynamicImageModalAPI",authors:[b.sadan,b.Nuckyz],description:"Allows you to omit either width or height when opening an image modal",patches:[{find:".renderLinkComponent",replacement:{match:/(?<=\i=)(null!=\i&&0!==\i)&&(null!=\i&&0!==\i)/,replace:"($1)||($2)"}}]})});var hfe,xfe=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/_api/memberListDecorators/style.css",{name:"src/plugins/_api/memberListDecorators/style.css",source:`.vc-member-list-decorators-wrapper { display: flex; align-items: center; justify-content: center; gap: 0.25em; } .vc-member-list-decorators-wrapper:not(:empty) { /* Margin to match default Discord decorators */ margin-left: 0.25em; } [class*="withDisplayNameStyles"] [class^="name"] { flex: initial; }`,classNames:{},dom:null});hfe="src/plugins/_api/memberListDecorators/style.css"});var j9,vfe=h(()=>{"use strict";d();O();R();xfe();j9=S({name:"MemberListDecoratorsAPI",description:"API to add decorators to member list (both in servers and DMs)",authors:[b.TheSun,b.Ven],managedStyle:hfe,patches:[{find:"#{intl::GUILD_OWNER}),children:",replacement:[{match:/children:\[(?=.{0,300},lostPermissionTooltipText:)/,replace:"children:[Vencord.Api.MemberListDecorators.__getDecorators(arguments[0],'guild'),"}]},{find:"PrivateChannel.renderAvatar",replacement:{match:/decorators:(\i\.isSystemDM\(\)\?.{0,100}:null)/,replace:"decorators:[Vencord.Api.MemberListDecorators.__getDecorators(arguments[0],'dm'),$1]"}}]})});var q9,yfe=h(()=>{"use strict";d();O();R();q9=S({name:"MessageAccessoriesAPI",description:"API to add message accessories.",authors:[b.Cyn],patches:[{find:"#{intl::REMOVE_ATTACHMENT_BODY}",replacement:{match:/children:(\[[^\]]{0,100}?this.renderSuppressConfirmModal[^\]]{0,100}?\])/,replace:"children:Vencord.Api.MessageAccessories._modifyAccessories($1,this?.props)"}}]})});var bfe,Sfe=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/_api/messageDecorations/style.css",{name:"src/plugins/_api/messageDecorations/style.css",source:`.vc-message-decorations-wrapper { display: inline-flex; align-items: center; justify-content: center; gap: 0.25em; } .vc-message-decorations-wrapper:not(:empty) { /* Margin to match default Discord decorators */ margin-left: 0.25em; /* Align vertically */ position: relative; vertical-align: top; top: 0.1rem; height: calc(1rem + 4px); max-height: calc(1rem + 4px) } `,classNames:{},dom:null});bfe="src/plugins/_api/messageDecorations/style.css"});var W9,wfe=h(()=>{"use strict";d();O();R();Sfe();W9=S({name:"MessageDecorationsAPI",description:"API to add decorations to messages",authors:[b.TheSun],managedStyle:bfe,patches:[{find:"#{intl::GUILD_COMMUNICATION_DISABLED_ICON_TOOLTIP_BODY}",replacement:{match:/#{intl::GUILD_COMMUNICATION_DISABLED_BOTTOM_SHEET_TITLE}.+?renderPopout:.+?(?=\])/,replace:"$&,Vencord.Api.MessageDecorations.__addDecorationsToMessage(arguments[0])"}}]})});var K9,Afe=h(()=>{"use strict";d();O();R();K9=S({name:"MessageEventsAPI",description:"Api required by anything using message events.",authors:[b.Arjix,b.hunt,b.Ven],patches:[{find:"#{intl::EDIT_TEXTAREA_HELP}",replacement:{match:/(?<=,channel:\i,message:\i\}\)\.then\().+?(?=\i\.content!==this\.props\.message\.content&&\i\((.+?)\)\})/,replace:(e,t)=>`async ${e}if(await Vencord.Api.MessageEvents._handlePreEdit(${t}))return Promise.resolve({shouldClear:false,shouldRefocus:true});`}},{find:".handleSendMessage,onResize:",replacement:{match:/(?<=channel:\i\}\)\.then\()(?:async )?(\i=>.+?let (\i)=\i\.\i\.parse\((\i),.+?\.getSendMessageOptions\((\{.+?\})\),.{0,100}?\};)(?=.+?(\i)\.flags=)(?<=\)\(({.+?})\)\.then.+?)/,replace:(e,t,o,r,n,a,s)=>"async "+t+`if(await Vencord.Api.MessageEvents._handlePreSend(${r}.id,${o},${a},${s},${n}))return{shouldClear:false,shouldRefocus:true};`}},{find:'("interactionUsernameProfile',replacement:{match:/let\{id:\i}=(\i),{id:\i}=(\i);return \i\.useCallback\((\i)=>\{/,replace:(e,t,o,r)=>`const vcMsg=${t},vcChan=${o};${e}Vencord.Api.MessageEvents._handleClick(vcMsg,vcChan,${r});`}}]})});var Q9,kfe=h(()=>{"use strict";d();O();R();Q9=S({name:"MessagePopoverAPI",description:"API to add buttons to message popovers.",authors:[b.KingFish,b.Ven,b.Nuckyz],patches:[{find:"#{intl::MESSAGE_UTILITIES_A11Y_LABEL}",replacement:{match:/(?<=\]\}\)),(.{0,40}togglePopout:.+?\}\))\]\}\):null,(?<=\((\i),\{label:.+?:null,(\i)\?\(0,\i\.jsxs?\)\(\i\.Fragment.+?message:(\i).+?)/,replace:(e,t,o,r,n)=>`]}):null,Vencord.Api.MessagePopover._buildPopoverElements(${o},${n}),${r}?${t}:null,`}}]})});var Z9,Cfe=h(()=>{"use strict";d();O();R();Z9=S({name:"MessageUpdaterAPI",description:"API for updating and re-rendering messages.",authors:[b.Nuckyz],patches:[{find:"}renderStickersAccessories(",replacement:{match:/(?<=this.props,\i,\[)"message",/,replace:""}}]})});var Y9,Tfe=h(()=>{"use strict";d();O();R();Y9=S({name:"NicknameIconsAPI",description:"API to add icons to the nickname, in profiles",authors:[b.Nuckyz],patches:[{find:"#{intl::USER_PROFILE_PRONOUNS}",replacement:[{match:/(?<=children:\i\}\):\i,)null!=\i/,replace:"($&||!!Vencord.Api.NicknameIcons._renderIcons({userId:arguments[0].user?.id})?.length)"},{match:/(?<=shouldUnderlineOnHover:null.{0,300})children:(\i)(?=\}\)\])/,replace:"children:[...Vencord.Api.NicknameIcons._renderIcons({userId:arguments[0].user?.id}),$1]"}]}]})});var J9,Ife=h(()=>{"use strict";d();O();R();J9=S({name:"NoticesAPI",description:"Fixes notices being automatically dismissed",authors:[b.Ven],required:!0,patches:[{find:'"NoticeStore"',replacement:[{match:/(?<=!1;)\i=null;(?=.{0,80}getPremiumSubscription\(\))/g,replace:"if(Vencord.Api.Notices.currentNotice)return false;$&"},{match:/(?<=,NOTICE_DISMISS:function\(\i\){)return null!=(\i)/,replace:(e,t)=>`if(${t}?.id=="EquicordNotice")return(${t}=null,Vencord.Api.Notices.nextNotice(),true);${e}`}]}]})});var X9,Efe=h(()=>{"use strict";d();O();R();X9=S({name:"ServerListAPI",authors:[b.kemo],description:"Api required for plugins that modify the server list",patches:[{find:"#{intl::DISCODO_DISABLED}",replacement:{match:/(?<=#{intl::DISCODO_DISABLED}.+?return)(\(.{0,150}?tutorialId:"friends-list".+?}\))(?=}function)/,replace:"[$1].concat(Vencord.Api.ServerList.renderAll(Vencord.Api.ServerList.ServerListRenderPosition.Above))"}},{find:".setGuildsTree(",replacement:[{match:/(?<=#{intl::SERVERS}\),gap:"xs",children:)\i\.map\(.{0,50}\.length\)/,replace:"Vencord.Api.ServerList.renderAll(Vencord.Api.ServerList.ServerListRenderPosition.In).concat($&)"},{match:/lastTargetNode.{0,25}\?null:\i,/,replace:"$&...Vencord.Api.ServerList.renderAll(Vencord.Api.ServerList.ServerListRenderPosition.Below),"}]}]})});var V9,Dfe=h(()=>{"use strict";d();O();R();V9=S({name:"UserSettingsAPI",description:"Patches Discord's UserSettings to expose their group and name.",authors:[b.Nuckyz],patches:[{find:",updateSetting:",replacement:[{match:/\.updateAsync\(.+?(?=,useSetting:)/,replace:"$&,userSettingsAPIGroup:arguments[0],userSettingsAPIName:arguments[1]"},{match:/updateSetting:.{0,100}SELECTIVELY_SYNCED_USER_SETTINGS_UPDATE/,replace:"userSettingsAPIGroup:arguments[0].userSettingsAPIGroup,userSettingsAPIName:arguments[0].userSettingsAPIName,$&"},{match:/updateSetting:.{0,60}USER_SETTINGS_OVERRIDE_CLEAR/,replace:"userSettingsAPIGroup:arguments[0].userSettingsAPIGroup,userSettingsAPIName:arguments[0].userSettingsAPIName,$&"}]}]})});var ek,Pfe=h(()=>{"use strict";d();O();R();C();ek=S({name:"ConcatenatedComponentExtractor",description:"Extract components that have been concatenated by the bundler",authors:[b.sadan],tags:["Developers","Utility"],required:!0,patches:[{find:"#{intl::USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR}),focusProps:",replacement:{match:/(?=function (\i)\(\i\)\{let\{onChange:\i,onClose:\i,[^}]+?showEyeDropper:)/,replace:"$self.setColorPicker($1);"}},{find:/="ltr",orientation:\i="vertical"[^}]+?customTheme:/,replacement:{match:/(?=function (\i)\(\i,\i,\i\)\{.{0,20}?return \i\.forwardRef\(function\(\i,\i\)\{let\{[^}]+?="ltr",orientation:)/,replace:"$self.setCreateScroller($1);"}},{find:'("UserProfileModalV2EditingPanel")',replacement:[{match:/function (\i).{0,50}showNitroIcon:.{0,500}\}\),\i\]\}\)\}/,replace:"$&$self.setNewCustomizationSection($1);"}]},{find:".ROLE_MENTION)",replacement:{match:/function (\i)(?=.+?renderPopout:.{0,20}\1,\{guildId:\i,channelId:\i)/,replace:"$self.setRoleMemberPopout($1);$&"}}],setCreateScroller:dz,setColorPicker:lz,setNewCustomizationSection:uz,setRoleMemberPopout:cz})});var Mfe,tk,Nfe=h(()=>{"use strict";d();j();O();He();R();C();Mfe=M({disableAnalytics:{type:3,description:"Disable Discord's tracking (analytics/'science')",default:!0,restartNeeded:!0}}),tk=S({name:"NoTrack",description:"Disable Discord's tracking (analytics/'science'), metrics and Sentry crash reporting",authors:[b.Cyn,b.Ven,b.Nuckyz,b.Arrow],tags:["Utility"],required:!0,settings:Mfe,patches:[{find:"AnalyticsActionHandlers.handle",predicate:()=>Mfe.store.disableAnalytics,replacement:{match:/\(0,\i\.analyticsTrackingStoreMaker\)/,replace:"$self.analyticsTrackingStoreMaker"}},{find:".METRICS_V2",replacement:[{match:/this\._intervalId=/,replace:"this._intervalId=void 0&&"},{match:/(?:increment|distribution)\(\i(?:,\i)?\){/g,replace:"$&return;"}]},{find:".BetterDiscord||null!=",replacement:{match:/(?=let \i=window;)/,replace:"return false;"}}],flux:{TRACK(e){e?.resolve?.()}},startAt:"Init",start(){Object.defineProperty(Function.prototype,"d",{configurable:!0,set(e){Object.defineProperty(this,"d",{value:e,configurable:!0,enumerable:!0,writable:!0});let{stack:t}=new Error;if(this.c!=null||!t?.includes("http")||!String(this).includes("exports:{}"))return;let o=t.match(/http.+?(?=:\d+?:\d+?$)/m)?.[0];if(!o)return;let r=new XMLHttpRequest;if(r.open("GET",o,!1),r.send(),!!r.responseText.includes(".DiscordSentry="))throw new ie("NoTrack","#8caaee").info("Disabling Sentry by erroring its WebpackInstance"),Reflect.deleteProperty(Function.prototype,"d"),Reflect.deleteProperty(window,"DiscordSentry"),new Error("Sentry successfully disabled")}}),Object.defineProperty(window,"DiscordSentry",{configurable:!0,set(){new ie("NoTrack","#8caaee").error("Failed to disable Sentry. Falling back to deleting window.DiscordSentry"),Reflect.deleteProperty(Function.prototype,"d"),Reflect.deleteProperty(window,"DiscordSentry")}})},analyticsTrackingStoreMaker(){class e extends yi.Store{static displayName="AnalyticsTrackingStore";requestDrain(){}async submitEventsImmediately(){throw{ok:!1,status:500,body:{message:"Analytics tracking is disabled by NoTrack",code:0},headers:{},text:JSON.stringify({message:"Analytics tracking is disabled by NoTrack",code:0})}}}return new e(Q)}})});function zVe(e){D.show({message:e,type:D.Type.FAILURE,id:D.genId(),options:{position:D.Position.BOTTOM}})}function $Ve(){return new Promise(e=>{Oo.show({title:"Restart Required",body:i(f,null,i("p",{style:{textAlign:"center"}},"Some plugins require a restart to fully disable."),i("p",{style:{textAlign:"center"}},"Would you like to restart now?")),confirmText:"Restart Now",cancelText:"Later",onConfirm:()=>e(!0),onCancel:()=>e(!1)})})}async function Bfe(e){let t=!1;function o(){t=!0}async function r(u,p){return t?await $Ve()?(u.enabled=!p,location.reload(),!0):!1:!0}let n=et[e],a=Me.plugins[n.name],l=a.enabled??!1;if(!l){let{restartNeeded:u,failures:p}=bf(n);if(p.length)return console.error(`Failed to start dependencies for ${n.name}: ${p.join(", ")}`),sa("Failed to start dependencies: "+p.join(", "),"Close",()=>null),!1;if(u)return a.enabled=!0,o(),await r(a,l)}if(n.patches?.length)return o(),await r(a,l);if(l&&!n.started)return a.enabled=!l,await r(a,l);if(!(l?Gp(n):$p(n))){a.enabled=!1;let u=`Error while ${l?"stopping":"starting"} plugin ${n.name}`;return console.error(u),zVe(u),!1}return a.enabled=!l,await r(a,l)}function GVe(e){let t=parseInt(e.split(".")[2]);return t>=22e3?"Windows 11":t>=10240?"Windows 10":t>=9200?"Windows 8.1":t>=7600?"Windows 7":`Windows (${e})`}function HVe(e){let t=parseInt(e.split(".")[0]);return t===25?"MacOS 26 (Tahoe)":t===24?"MacOS 15 (Sequoia)":t===23?"MacOS 14 (Sonoma)":t===22?"MacOS 13 (Ventura)":t===21?"MacOS 12 (Monterey)":t===20?"MacOS 11 (Big Sur)":t===19?"MacOS 10.15 (Catalina)":`MacOS (${e})`}function ej(){return typeof DiscordNative>"u"?navigator.platform:DiscordNative.process.platform==="win32"?`${GVe(DiscordNative.os.release)}`:DiscordNative.process.platform==="darwin"?`${HVe(DiscordNative.os.release)} (${DiscordNative.process.arch==="arm64"?"Apple Silicon":"Intel Silicon"})`:DiscordNative.process.platform==="linux"?`${navigator.platform} (${DiscordNative.os.release})`:DiscordNative.process.platform}var tj=h(()=>{"use strict";d();Af();Jt();j();C()});var oj,Mf,nj=h(()=>{"use strict";d();Af();j();O();R();C();oj=M({idleTimeout:{description:"Minutes before Discord goes idle (0 to disable auto-idle)",type:5,markers:zt(0,60,5),default:10,stickToMarkers:!1,restartNeeded:!0},remainInIdle:{description:"When you come back to Discord, remain idle until you confirm you want to go online",type:3,default:!0}}),Mf=S({name:"CustomIdle",description:"Allows you to set the time before Discord goes idle (or disable auto-idle)",tags:["Activity","Customisation"],authors:[b.newwares],settings:oj,patches:[{find:'type:"IDLE",idle:',replacement:[{match:/(?<=Date\.now\(\)-\i>)\i\.\i\|\|/,replace:"$self.getIdleTimeout()||"},{match:/Math\.min\((\i\*\i\.\i\.\i\.SECOND),\i\.\i\)/,replace:"$1"},{match:/\i\.\i\.dispatch\({type:"IDLE",idle:!1}\)/,replace:"$self.handleOnline()"}]}],handleOnline(){if(!oj.store.remainInIdle){Q.dispatch({type:"IDLE",idle:!1});return}let e="Welcome back! Click the button to go online. Click the X to stay idle until reload.";eh?.[1]===e||pw.some(([,t])=>t===e)||sa(e,"Exit idle",()=>{au(),Q.dispatch({type:"IDLE",idle:!1})})},getIdleTimeout(){let{idleTimeout:e}=oj.store;return e===0?1/0:e*6e4}})});async function Rfe(){let e=await Sc();return e&&(await Hp(),ai()),e}function rj(){return{name:"Discord Desktop",version:DiscordNative.app.getVersion()}}async function Lfe(){let{RELEASE_CHANNEL:e}=window.GLOBAL_ENV,t=rj(),o=`${t.name}`;o+=`${t.version?` v${t.version}`:""}`,o+=`${t.info?` \u2022 ${t.info}`:""}`,o+=`${t.shortHash?` \u2022 [${t.shortHash}]()`:""}`;let r=null,n=r?.spoofed?`${ej()} (spoofed from ${r.originalPlatform})`:ej(),a={Equicord:`v1.15.3.0 \u2022 [${If}]()${Pn.getVersionInfo()} - ${Intl.DateTimeFormat("en-US",{dateStyle:"medium"}).format(1787892682040)}`,Client:`${e} ~ ${o}`,Platform:n};a["Last Crash Reason"]=(await YS(()=>DiscordNative.processUtils.getLastCrash(),void 0))?.rendererCrashReason??"N/A";let s=(["NoRPC","NoProfileThemes","NoMosaic","NoRoleHeaders","NoSystemBadge","AlwaysAnimate","ClientTheme","SoundTroll","Ingtoninator","NeverPausePreviews","IdleAutoRestart"].filter(Ve)??[]).sort();Ve(Mf.name)&&Mf.settings.store.idleTimeout===0&&s.push(Mf.name);let c={"Activity Sharing Disabled":YS(()=>!KVe.getSetting(),!1),"Link Embeds Disabled":YS(()=>!QVe.getSetting(),!1),"Equicord DevBuild":!1,"Equibop DevBuild":!1,"Platform Spoofed":r?.spoofed??!1,"Has UserPlugins":Object.values(wi).some(p=>p.userPlugin),">2 Weeks Outdated":1787892682040>> ${Object.entries(a).map(([p,m])=>`**${p}**: ${m}`).join(` `)}`;return u+=` `+Object.entries(c).filter(([,p])=>p).map(([p])=>`\u26A0\uFE0F ${p}`).join(` `),u.trim()}async function Ofe(e,t,o){let r=new File([t],o,{type:"text/plain"}),n=new ou({file:r,platform:1},e);return new Promise((a,s)=>{n.on("complete",()=>{mt.post({url:Gt.Endpoints.MESSAGES(e),body:{flags:0,channel_id:e,content:`\u26A0\uFE0F Plugin list attached as file due to high plugin count (${t.split(` `).filter(l=>l.startsWith(" -")).length} plugins enabled)`,nonce:en.fromTimestamp(Date.now()),sticker_ids:[],type:0,attachments:[{id:"0",filename:n.filename,uploaded_filename:n.uploadedFilename}]}}).then(()=>a()).catch(s)}),n.on("error",()=>s(new Error("Failed to upload file"))),n.upload()})}function Ffe(){let e=s=>s.endsWith("API")||et[s].required,t=Object.keys(et).filter(s=>Ve(s)&&!e(s)),o=t.filter(s=>!wi[s].userPlugin).sort(),r=t.filter(s=>wi[s].userPlugin).sort(),n=L.getCurrentUser();if(t.length>100&&!hc(n.id)){Oo.show({title:"Warning: High Plugin Count",body:i("div",null,i("div",{style:{display:"flex",justifyContent:"center",marginBottom:"1rem"}},i("img",{src:"https://media.tenor.com/QtGqjwBpRzwAAAAi/wumpus-dancing.gif"})),i(U,null,"You have more than 100 plugins enabled."),i(U,null,"Due to the sheer amount of plugins, you may not receive support."),i(U,null,"Your issue is likely caused by plugin conflicts."),i(U,null,"Please consider disabling some plugins to troubleshoot."),i(U,{className:z.top8},"Your plugin list will be sent as a text file."))});let s=[`Enabled Stock Plugins (${o.length}):`,...o.map(l=>` - ${l}`),""];return r.length&&s.push(`Enabled User Plugins (${r.length}):`,...r.map(l=>` - ${l}`),""),s.push("---",`Total Enabled Plugins: ${t.length}`,"Warning: Due to the high number of enabled plugins, support may be limited."),{uploadFile:!0,fileContent:s.join(` `),filename:`${n.username}-plugins.txt`}}let a=`**Enabled Plugins (${o.length}):** ${I0(o.join(", "))}`;return r.length&&(a+=`**Enabled UserPlugins (${r.length}):** ${I0(r.join(", "))}`),a}var jVe,qVe,WVe,KVe,QVe,ZVe,YVe,nk,ij=h(()=>{"use strict";d();yr();Jt();j();_a();Tt();Qn();Pe();Lt();$r();Je();Fi();tj();nj();Ef();O();_e();He();Wt();Be();hd();N1();Ta();R();ru();co();C();Na();mu();jVe=/```snippet\n(.+?)```/s,qVe=[M3,Mz,A1,Tz,z0,D3,P3],WVe=async function(){}.constructor,KVe=tn("status","showCurrentGame"),QVe=tn("textAndImages","renderEmbeds");ZVe=Up(Sc),YVe=M({}).withPrivateSettings(),nk=S({name:"SupportHelper",required:!0,description:"Helps us provide support to you",authors:[b.Ven],dependencies:["UserSettingsAPI","CommandsAPI","MessageAccessoriesAPI"],tags:["Utility"],settings:YVe,patches:[{find:"#{intl::BEGINNING_DM}",replacement:{match:/#{intl::BEGINNING_DM},{.+?}\),(?=.{0,300}(\i)\.isMultiUserDM)/,replace:"$& $self.renderContributorDmWarningCard({ channel: $1 }),"}}],commands:[{name:"equicord-debug",description:"Send Equicord debug info",predicate:e=>hc(L.getCurrentUser()?.id)||hf(e?.guild?.id,!0),execute:async()=>({content:await Lfe()})},{name:"equicord-plugins",description:"Send Equicord plugin list",predicate:e=>hc(L.getCurrentUser()?.id)||hf(e?.guild?.id,!0),execute:async()=>{let e=Fe.getChannelId(),t=Ffe();if(typeof t=="string")return{content:t};if(t&&typeof t=="object"&&t.uploadFile)try{return await Ofe(e,t.fileContent,t.filename),{content:""}}catch(o){return new ie("SupportHelper").error("Failed to upload plugin list:",o),{content:"Failed to upload plugin list file. Please try again."}}return{content:"Unable to generate plugin list."}}}],flux:{async CHANNEL_SELECT({channelId:e}){if(!G0.includes(e))return;let o=L.getCurrentUser()?.id;if(!o||hc(o))return;if(await ZVe().catch(()=>{}),Sf){ce(n=>i(Dn,{...n,variant:"primary",title:"Hold on!",confirmText:"Update & Restart Now",cancelText:"View Updates",onConfirm:Rfe,onCancel:()=>xd(Id)},i("div",null,i(U,null,"You are using an outdated version of Equicord! Chances are, your issue is already fixed."),i(U,{className:z.top8},"Please first update before asking for support!"),i(U,{className:z.top8},"If you know what you're doing or cannot update, you can dismiss this prompt."))));return}let r=bt.getSelfMember($0)?.roles||bt.getSelfMember(mc)?.roles;!r||qVe.some(n=>r.includes(n))}},renderMessageAccessory(e){let t=[],o=H0(e.message.author.id);if(JS(e.channel.id)&&o&&e.message.content?.toLowerCase().includes("update")&&t.push(i(de,{key:"vc-update",variant:"positive",onClick:async()=>{try{await Rfe()?ne("Success! Restarting...",D.Type.SUCCESS):ne("Already up to date!",D.Type.MESSAGE)}catch(n){new ie(this.name).error("Error while updating:",n),ne("Failed to update :(",D.Type.FAILURE)}}},"Update Now")),o&&JS(e.channel.id)&&ht.can(ct.SEND_MESSAGES,e.channel)&&(e.message.content.includes("/equicord-debug")||e.message.content.includes("/equicord-plugins"))&&t.push(i(de,{key:"vc-dbg",variant:"secondary",onClick:async()=>or(e.channel.id,{content:await Lfe()})},"Run /equicord-debug"),i(de,{key:"vc-plg-list",variant:"secondary",onClick:async()=>{let n=Ffe();if(typeof n=="string")or(e.channel.id,{content:n});else if(n&&typeof n=="object"&&n.uploadFile)try{await Ofe(e.channel.id,n.fileContent,n.filename),ne("Plugin list uploaded successfully!",D.Type.SUCCESS)}catch(a){new ie("SupportHelper").error("Failed to upload plugin list:",a),ne("Failed to upload plugin list",D.Type.FAILURE)}}},"Run /equicord-plugins")),o||JS(e.channel.id)||_z(e.channel.parent_id)){let n=jVe.exec(e.message.content||e.message.embeds[0]?.rawDescription||"");n&&t.push(i(de,{key:"vc-run-snippet",onClick:async()=>{try{let a=await WVe(n[1])(),s=String(a);s&&await Ft(Fe.getChannelId(),{content:s}),ne("Success!",D.Type.SUCCESS)}catch(a){new ie(this.name).error("Error while running snippet:",a),ne("Failed to run snippet :(",D.Type.FAILURE)}}},"Run Snippet"))}return t.length?i(pe,null,t):null},renderContributorDmWarningCard:H.wrap(({channel:e})=>{let t=e.getRecipientId();return!hc(t)||qe.isFriend(t)||hc(L.getCurrentUser()?.id)?null:i(Ht,{variant:"warning",className:z.top8,defaultPadding:!0},"Please do not private message Equicord & Vencord plugin developers for support!",i("br",null),"Instead, use the support channel: ",kt.parse("https://discord.com/channels/1173279886065029291/1297590739911573585"),!W.getChannel(md)&&" (Click the link to join)")},{noop:!0})})});var ch,aj=h(()=>{"use strict";d();O();R();ch=S({name:"AlwaysExpandProfiles",description:"Always expands profile popouts to the full modal",tags:["Appearance","Utility"],authors:[b.thororen],patches:[{find:'"view-profile"',replacement:{match:/function (\i)\(\i?\)\{.{0,45}\(0,\i\.openUserProfileModal.{0,300}(?=return)/,replace:"$&return $1();"},all:!0}]})});function XVe({popoutProps:e,userId:t,guildId:o}){return G(()=>{e.closePopout?.(),e.onRequestClose?.(),Ym(t,{guild_id:o},!1).then(r=>{r&&Ko(r.userId)})},[]),null}var _fe,rk,sj,JVe,Uw,ik,Ufe=h(()=>{"use strict";d();Jt();j();Pe();aj();O();_e();R();le();C();_fe=he(".isNonUserBot()?",",onClickContainer:"),rk=!1,sj={current:null},JVe=H.wrap(()=>{let{prioritizeServerProfile:e}=Uw.use(["prioritizeServerProfile"]);return i(P.Menu,{navId:"vc-ap-server-profile",onClose:rt.closeContextMenu},i(P.MenuItem,{id:"vc-ap-view-alternate-popout",label:e?"View Account Profile":"View Server Profile",disabled:zo()?.getGuildId()==null,action:async t=>{if(Ve(ch.name)){let o=await Ym(L.getCurrentUser().id,{guild_id:e?void 0:zo()?.getGuildId()},!1);return Ko(o.userId)}rk=!0,sj.current?.click()}}),i(P.MenuCheckboxItem,{id:"vc-ap-prioritize-server-profile",label:"Prioritize Server Profile",checked:e,action:()=>Uw.store.prioritizeServerProfile=!e}))},{noop:!0}),Uw=M({prioritizeServerProfile:{type:3,description:"Prioritize Server Profile when left clicking your account panel",default:!1}}),ik=S({name:"AccountPanelServerProfile",description:"Right click your account panel in the bottom left to view your profile in the current server",tags:["Appearance","Servers"],authors:[b.Nuckyz,b.relitrix],settings:Uw,patches:[{find:"handleOpenSettingsContextMenu=",group:!0,replacement:[{match:/(\.AVATAR,children:.+?renderPopout:\((\i),\i\)=>)\{(.+?)\}(?=,position)(?<=currentUser:(\i).+?)/,replace:(e,t,o,r,n)=>`${t}$self.UserProfile({popoutProps:${o},currentUser:${n},originalRenderPopout:()=>{${r}}})`},{match:/\.AVATAR,children:.+?onRequestClose:\(\)=>\{/,replace:"$&$self.onPopoutClose();"},{match:/ref:(\i),style:\i(?=.{0,250}#{intl::USER_PROFILE_ACCOUNT_POPOUT_BUTTON_A11Y_LABEL})/,replace:"$&,onContextMenu:($self.grabRef($1),$self.openAccountPanelContextMenu)"}]}],get accountPanelRef(){return sj},grabRef(e){return sj=e,e},openAccountPanelContextMenu(e){rt.openContextMenu(e,JVe)},onPopoutClose(){rk=!1},UserProfile:H.wrap(({popoutProps:e,currentUser:t,originalRenderPopout:o})=>{if(Uw.store.prioritizeServerProfile&&rk||!Uw.store.prioritizeServerProfile&&!rk)return o();let r=zo();return r?.getGuildId()==null||!_fe.$$vencordGetWrappedComponent()?o():Ve(ch.name)?i(XVe,{popoutProps:e,userId:t.id,guildId:r.getGuildId()}):i(_fe,{...e,user:t,currentUser:t,guildId:r.getGuildId(),channelId:r.id})},{noop:!0})})});var Y1,ak,zfe=h(()=>{"use strict";d();j();O();R();Y1=M({icons:{type:3,description:"Always animate server icons, avatars, decor and more",default:!0},statusEmojis:{type:3,description:"Always animate status emojis",default:!0},serverBanners:{type:3,description:"Always animate server banners",default:!0},nameplates:{type:3,description:"Always animate nameplates",default:!0},roleGradients:{type:3,description:"Always animate role gradients",default:!0}}),ak=S({name:"AlwaysAnimate",description:"Animates anything that can be animated",tags:["Appearance","Fun"],authors:[b.FieryFlames],settings:Y1,patches:[{find:"canAnimate:",predicate:()=>Y1.store.icons,all:!0,noWarn:!0,replacement:{match:/canAnimate:.+?([,}].*?\))/g,replace:(e,t)=>t.match(/}=.+/)==null?`canAnimate:!0${t}`:e}},{find:"#{intl::GUILD_OWNER}),children:",predicate:()=>Y1.store.statusEmojis,replacement:{match:/(\.CUSTOM_STATUS.+?animateEmoji:)\i/,replace:"$1!0"}},{find:"#{intl::DISCOVERABLE_GUILD_HEADER_PUBLIC_INFO}",predicate:()=>Y1.store.serverBanners,replacement:{match:/(guildBanner:\i,animate:)\i(?=}\):null)/,replace:"$1!0"}},{find:"=!1,contentOnly:",replacement:{match:/animate:\i/,replace:"animate:!0"}},{find:'="left",className:',replacement:{match:/,animateGradient:/,replace:",animateGradient:!0,_oldAnimateGradient:"}},{find:".MINI_PREVIEW,[",predicate:()=>Y1.store.nameplates,replacement:{match:/animate:\i,loop:/,replace:"animate:true,loop:true,_loop:"}},{find:"animateGradient:",predicate:()=>Y1.store.roleGradients,all:!0,noWarn:!0,replacement:{match:/animateGradient:.+?([,}].*?\))/g,replace:(e,t)=>t.match(/}=.+/)==null?`animateGradient:!0${t}`:e}}]})});var $fe,sk,Gfe=h(()=>{"use strict";d();j();O();R();$fe=M({hideArrow:{type:3,default:!1,description:"Hide Arrow",restartNeeded:!0}});oo("AlwaysExpandRoles","ShowAllRoles");sk=S({name:"AlwaysExpandRoles",description:"Always expands the role list in profile popouts",tags:["Appearance","Roles"],authors:[b.surgedevs],isModified:!0,settings:$fe,patches:[{find:"hasDeveloperContextMenu:",replacement:[{match:/(?<=\?\i\.current\[\i\].{0,100}?)useState\(!1\)/,replace:"useState(!0)"},{match:/(?<=useLayoutEffect\(\(\)=>\{if\()\i/,replace:"false"},{match:/return \i\.length<\i\.length/,replace:"return false",predicate:()=>$fe.store.hideArrow}]}]})});function Hfe(e){let t=$e.getGuild(e);t&&VVe(e,t.name)}var VVe,zw,lk,jfe=h(()=>{"use strict";d();j();O();R();le();C();VVe=Ae("deleteGuild","sendTransferOwnershipPincode").deleteGuild;zw=M({domain:{type:3,default:!0,description:"Remove the untrusted domain popup when opening links",restartNeeded:!0},file:{type:3,default:!0,description:"Remove the 'Potentially Dangerous Download' popup when opening links",restartNeeded:!0},noDeleteSafety:{type:3,default:!0,description:"Removes the enter server name requirement when deleting a server",restartNeeded:!0},confirmModal:{type:3,description:'Should a "are you sure you want to delete" modal be shown?',default:!0}}),lk=S({name:"AlwaysTrust",description:"Removes the annoying untrusted domain and suspicious file popup",tags:["Utility"],authors:[b.zt,b.Trwy],isModified:!0,settings:zw,patches:[{find:'="MaskedLinkStore",',replacement:{match:/(?<=isTrustedDomain\(\i\){)return \i\(\i\)/,replace:"return true"},predicate:()=>zw.store.domain},{find:"bitbucket.org",replacement:{match:/function \i\(\i\){(?=.{0,30}pathname:\i)/,replace:"$&return null;"},predicate:()=>zw.store.file},{find:".DELETE,onClick(){let",replacement:{match:/let\{name:\i\}=(\i)\.guild/,replace:"$self.HandleGuildDeleteModal($1);$&"},predicate:()=>zw.store.noDeleteSafety}],async HandleGuildDeleteModal(e){return zw.store.confirmModal?Oo.show({title:"Delete server?",body:i("p",null,"It's permanent, if that wasn't obvious."),confirmColor:ue.Colors.RED,confirmText:"Delete",onConfirm:()=>Hfe(e.id),cancelText:"Cancel"}):Hfe(e.id)}})});var eet,lj,ck,cj=h(()=>{"use strict";d();Jt();dj();O();R();eet={ogg:[".ogv",".oga",".ogx",".ogm",".spx",".aac",".wma"],jpg:[".jpe",".jif",".jfi",".pjpeg",".pjp",".bmp",".tiff",".tif"],svg:[".svgz",".ai",".eps"],mp4:[".m4v",".m4r",".m4p",".avi",".mkv",".wmv",".flv",".3gp"],m4a:[".m4b",".aiff"],mov:[".movie",".qt",".asf",".rm",".rmvb"],png:[".ico",".cur"]},lj=Object.entries(eet).reduce((e,[t,o])=>(o.forEach(r=>e[r]=`.${t}`),e),{}),ck=S({name:"FixFileExtensions",authors:[b.thororen],description:"Fixes file extensions by renaming them to a compatible supported format if possible",tags:["Media","Utility"],reporterTestable:2,patches:[{find:"async uploadFiles(",replacement:[{match:/async uploadFiles\((\i)\){/,replace:"$&$1.forEach($self.fixExt);"}],predicate:()=>!Ve(J1.name)}],fixExt(e){let t=e.filename,r=uj.exec(t)?.index??t.lastIndexOf("."),n=r!==-1?t.substring(0,r):"",a=r!==-1?t.slice(r):"",s=lj[a]||a;e.filename=n+s}})});var tet,pj,uj,fu,J1,dj=h(()=>{"use strict";d();yr();j();Pe();cj();O();R();le();C();tet=Oe("Children.map","isValidElement","dangerous:"),pj=Symbol("vcAnonymise"),uj=/\.tar\.\w+$/,fu=M({anonymiseByDefault:{description:"Whether to anonymise file names by default",type:3,default:!0},spoilerMessages:{description:"Spoiler messages",type:3,default:!1},method:{description:"Anonymising method",type:4,options:[{label:"Random Characters",value:0,default:!0},{label:"Consistent",value:1},{label:"Timestamp",value:2},{label:"Date",value:3}]},randomisedLength:{description:"Random characters length",type:1,default:7},consistent:{description:"Consistent filename",type:0,default:"image"},dateFormat:{description:"Date format (YYYY, MM, DD, HH, mm, ss, SSS are supported)",type:0,default:"YYYY-MM-DD_HH-mm-ss-SSS"}},{randomisedLength:{disabled(){return this.store.method!==0}},consistent:{disabled(){return this.store.method!==1}},dateFormat:{disabled(){return this.store.method!==3}}}),J1=S({name:"AnonymiseFileNames",authors:[b.fawn],description:"Anonymise uploaded file names",dependencies:["CommandsAPI"],tags:["Privacy","Utility"],isModified:!0,settings:fu,patches:[{find:"async uploadFiles(",replacement:[{match:/async uploadFiles\((\i)\){/,replace:"$&$1.forEach($self.anonymise);"}]},{find:"#{intl::ATTACHMENT_UTILITIES_SPOILER}",replacement:{match:/(?<=children:\[)(?=.{10,80}tooltip:.{0,100}#{intl::ATTACHMENT_UTILITIES_SPOILER})/,replace:"arguments[0].canEdit!==false?$self.AnonymiseUploadButton(arguments[0]):null,"}}],AnonymiseUploadButton:H.wrap(({upload:e})=>{let[t,o]=T(e[pj]??fu.store.anonymiseByDefault);function r(){e[pj]=!t,o(!t)}return i(tet,{tooltip:t?"Using anonymous file name":"Using normal file name",onClick:r},t?i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M17.06 13C15.2 13 13.64 14.33 13.24 16.1C12.29 15.69 11.42 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C19.23 21 21 19.21 21 17C21 14.79 19.23 13 17.06 13M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17S5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17S8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17S15.5 14.14 17.06 14.14C18.62 14.14 19.88 15.42 19.88 17S18.61 19.86 17.06 19.86M22 10.5H2V12H22V10.5M15.53 2.63C15.31 2.14 14.75 1.88 14.22 2.05L12 2.79L9.77 2.05L9.72 2.04C9.19 1.89 8.63 2.17 8.43 2.68L6 9H18L15.56 2.68L15.53 2.63Z"})):i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",style:{transform:"scale(-1,1)"}},i("path",{fill:"currentColor",d:"M22.11 21.46L2.39 1.73L1.11 3L6.31 8.2L6 9H7.11L8.61 10.5H2V12H10.11L13.5 15.37C13.38 15.61 13.3 15.85 13.24 16.1C12.29 15.69 11.41 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C17.66 21 18.22 20.86 18.72 20.61L20.84 22.73L22.11 21.46M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17C4.13 15.42 5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17C9.75 18.58 8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17C14.25 16.74 14.29 16.5 14.36 16.25L17.84 19.73C17.59 19.81 17.34 19.86 17.06 19.86M22 12H15.2L13.7 10.5H22V12M17.06 13C19.23 13 21 14.79 21 17C21 17.25 20.97 17.5 20.93 17.73L19.84 16.64C19.68 15.34 18.66 14.32 17.38 14.17L16.29 13.09C16.54 13.03 16.8 13 17.06 13M12.2 9L7.72 4.5L8.43 2.68C8.63 2.17 9.19 1.89 9.72 2.04L9.77 2.05L12 2.79L14.22 2.05C14.75 1.88 15.32 2.14 15.54 2.63L15.56 2.68L18 9H12.2Z"})))},{noop:!0}),anonymise(e){let t=e.filename,r=uj.exec(t)?.index??t.lastIndexOf("."),n=r!==-1?t.slice(r):"",a=l=>fu.store.spoilerMessages?"SPOILER_"+l:l;if(Me.plugins.FixFileExtensions.enabled&&(n=lj[n]||n),(e[pj]??fu.store.anonymiseByDefault)===!1)return a(t+n);let s=(()=>{switch(fu.store.method){case 0:let l="0123456789bdfhjkmnpqrstvwxz",c=Array.from({length:fu.store.randomisedLength},()=>l[Math.floor(Math.random()*l.length)]).join("")+n;return a(c);case 1:return a(fu.store.consistent+n);case 2:return a(Date.now().toString()+n);case 3:let u=new Date,p=fu.store.dateFormat.replace(/YYYY/g,u.getFullYear().toString()).replace(/MM/g,(u.getMonth()+1).toString().padStart(2,"0")).replace(/DD/g,u.getDate().toString().padStart(2,"0")).replace(/HH/g,u.getHours().toString().padStart(2,"0")).replace(/mm/g,u.getMinutes().toString().padStart(2,"0")).replace(/ss/g,u.getSeconds().toString().padStart(2,"0")).replace(/SSS/g,u.getMilliseconds().toString().padStart(3,"0"));return a(p?p+n:Date.now().toString()+n)}})();e.filename=s},commands:[{name:"Spoiler",description:"Toggle your spoiler",inputType:0,options:[{name:"value",description:"Toggle your Spoiler (default is toggle)",required:!1,type:5}],execute:async(e,t)=>{fu.store.spoilerMessages=!!St(e,"value",!fu.store.spoilerMessages),Ft(t.channel.id,{content:fu.store.spoilerMessages?"Spoiler enabled!":"Spoiler disabled!"})}}]})});function net(e){Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:e,socketId:"AppleMusic"})}function $w(e,t){return e.replaceAll("{name}",t.name).replaceAll("{album}",t.album??"").replaceAll("{artist}",t.artist??"")}function uk(e,t){return e==="Album"?t.appleMusicLink:e==="Artist"?t.appleMusicArtistLink:void 0}function qfe(e,t){let o=e==="Album"?t.albumArtwork:t.artistArtwork;if(o)return Ri.fetchAssetIds(Kfe,[o]).then(r=>r[0])}var oet,Kfe,mj,_i,dk,Qfe=h(()=>{"use strict";d();j();Je();O();R();co();C();oet=VencordNative.pluginHelpers.AppleMusicRichPresence,Kfe="1239490006054207550";_i=M({activityType:{type:4,description:"Which type of activity",options:[{label:"Playing",value:0,default:!0},{label:"Listening",value:2}]},statusDisplayType:{description:"Show the track / artist name in the member list",type:4,options:[{label:"Don't show (shows generic listening message)",value:"off",default:!0},{label:"Show artist name",value:"artist"},{label:"Show track name",value:"track"}]},refreshInterval:{type:5,description:"The interval between activity refreshes (seconds)",markers:[1,2,2.5,3,5,10,15],default:5,restartNeeded:!0},enableTimestamps:{type:3,description:"Whether or not to enable timestamps",default:!0},enableButtons:{type:3,description:"Whether or not to enable buttons",default:!0},nameString:{type:0,description:"Activity name format string",default:"Apple Music"},detailsString:{type:0,description:"Activity details format string",default:"{name}"},stateString:{type:0,description:"Activity state format string",default:"{artist} \xB7 {album}"},detailsLink:{type:4,description:"Activity details link",options:[{label:"Album",value:"Album",default:!0},{label:"Artist",value:"Artist"},{label:"Disabled",value:"Disabled"}]},stateLink:{type:4,description:"Activity state link",options:[{label:"Album",value:"Album"},{label:"Artist",value:"Artist",default:!0},{label:"Disabled",value:"Disabled"}]},largeImageType:{type:4,description:"Activity assets large image type",options:[{label:"Album artwork",value:"Album",default:!0},{label:"Artist artwork",value:"Artist"},{label:"Disabled",value:"Disabled"}]},largeTextString:{type:0,description:"Activity assets large text format string",default:"{album}"},largeImageLink:{type:4,description:"Activity assets large image link",options:[{label:"Album",value:"Album",default:!0},{label:"Artist",value:"Artist"},{label:"Disabled",value:"Disabled"}]},smallImageType:{type:4,description:"Activity assets small image type",options:[{label:"Album artwork",value:"Album"},{label:"Artist artwork",value:"Artist",default:!0},{label:"Disabled",value:"Disabled"}]},smallTextString:{type:0,description:"Activity assets small text format string",default:"{artist}"},smallImageLink:{type:4,description:"Activity assets small image link",options:[{label:"Album",value:"Album"},{label:"Artist",value:"Artist",default:!0},{label:"Disabled",value:"Disabled"}]}});dk=S({name:"AppleMusicRichPresence",description:"Discord rich presence for your Apple Music!",tags:["Activity","Media"],authors:[b.RyanCaoDev],hidden:!Go,reporterTestable:2,settingsAboutComponent(){return i(f,null,i(U,null,"For the customizable activity format strings, you can use several special strings to include track data in activities!"," ",i("code",null,"{name}")," is replaced with the track name; ",i("code",null,"{artist}")," is replaced with the artist(s)' name(s); and ",i("code",null,"{album}")," is replaced with the album name."))},settings:_i,start(){this.updatePresence(),mj=setInterval(()=>{this.updatePresence()},_i.store.refreshInterval*1e3)},stop(){clearInterval(mj),mj=void 0,Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:null})},updatePresence(){this.getActivity().then(e=>{net(e)})},async getActivity(){let e=await oet.fetchTrackData();if(!e)return null;let[t,o]=await Promise.all([qfe(_i.store.largeImageType,e),qfe(_i.store.smallImageType,e)]),r={},n=Number.isNaN(e.duration)&&e.playerPosition===0;_i.store.largeImageType!=="Disabled"&&(r.large_image=t,n||(r.large_text=$w(_i.store.largeTextString,e)),r.large_url=uk(_i.store.largeImageLink,e)),_i.store.smallImageType!=="Disabled"&&(r.small_image=o,n||(r.small_text=$w(_i.store.smallTextString,e)),r.small_url=uk(_i.store.smallImageLink,e));let a=[];return _i.store.enableButtons&&(e.appleMusicLink&&a.push({label:"Listen on Apple Music",url:e.appleMusicLink}),e.songLink&&a.push({label:"View on SongLink",url:e.songLink})),{application_id:Kfe,name:$w(_i.store.nameString,e),details:$w(_i.store.detailsString,e),state:n?void 0:$w(_i.store.stateString,e),details_url:uk(_i.store.detailsLink,e),state_url:uk(_i.store.stateLink,e),timestamps:e.playerPosition&&e.duration&&_i.store.enableTimestamps?{start:Date.now()-e.playerPosition*1e3,end:Date.now()-e.playerPosition*1e3+e.duration*1e3}:void 0,assets:r,buttons:!n&&a.length?a.map(s=>s.label):void 0,metadata:!n&&a.length?{button_urls:a.map(s=>s.url)}:void 0,type:_i.store.activityType,status_display_type:{off:0,artist:1,track:2}[_i.store.statusDisplayType],flags:1}}})});function Zfe(){let e=pk.getSetting();e!==mk&&(mk=e,Hw=null)}async function Yfe(e){mk=e,await pk.updateSetting(e)}var Hw,pk,fj,mk,fk,Jfe=h(()=>{"use strict";d();j();_a();O();R();C();pk=tn("status","status"),fj=M({statusToSet:{type:4,description:"Status to set while playing a game",options:[{label:"Online",value:"online"},{label:"Idle",value:"idle"},{label:"Do Not Disturb",value:"dnd",default:!0},{label:"Invisible",value:"invisible"}]}}),mk=null;fk=S({name:"AutoDNDWhilePlaying",description:"Automatically updates your online status (online, idle, dnd) when launching games",tags:["Activity","Utility"],authors:[b.thororen],settings:fj,flux:{async RUNNING_GAMES_CHANGE({games:e}){let t=pk.getSetting();if(e.length>0)t!==fj.store.statusToSet&&t!=="invisible"&&(Hw=t,await Yfe(fj.store.statusToSet));else if(Hw){let o=Hw;Hw=null,t!==o&&await Yfe(o)}}},start(){mk=pk.getSetting(),dc.addChangeListener(Zfe)},stop(){dc.removeChangeListener(Zfe)}})});var Xfe=h(()=>{});function iet(){let e=tu.getExpandedFolders(),t=jr.getGuildFolders(),o=new Set;for(let r of t)e.has(r.folderId)&&r.guildIds?.length&&o.add(r.folderId);return o}var ret,Vfe,ege=h(()=>{"use strict";d();Pe();le();C();gj();ret=he('("guildsnav")');Vfe=H.wrap(e=>{let t=ye([tu,jr],()=>iet()),o=ye([cd],()=>cd.isFullscreenInContext()),r=i(ret,{...e,isBetterFolders:!0,betterFoldersExpandedIds:t}),n=!!t.size,a=document.querySelector(e.className.split(" ").map(l=>`.${l}`).join("")),s={display:o?"none":"flex"};return!a||!Wr.store.sidebarAnim?n?i("div",{className:"vc-betterFolders-sidebar",style:s},r):null:i(A3.Transition,{items:n,from:{width:0},enter:{width:a.getBoundingClientRect().width},leave:{width:0},config:{duration:200}},(l,c)=>c&&i(A3.animated.div,{className:"vc-betterFolders-sidebar",style:{...l,...s}},r))},{noop:!0})});function aet(e){return jr.getGuildFolders().find(t=>t.guildIds.includes(e))}function xj(){for(let e of tu.getExpandedFolders())gk.toggleGuildFolderExpand(e)}function vj(e,t){if(e==null)return!1;if(!Array.isArray(e))return t(e)?!0:vj(e.props?.children,t);let o=!1;for(let r=0;r{"use strict";d();Xfe();j();O();_e();He();R();le();C();ege();gk=Ae("move","toggleGuildFolderExpand"),tge=null,hj=!1;Wr=M({sidebar:{type:3,description:"Display servers from folder on dedicated sidebar",restartNeeded:!0,default:!0},sidebarAnim:{type:3,description:"Animate opening the folder sidebar",default:!0},closeAllFolders:{type:3,description:"Close all folders when selecting a server not in a folder",default:!1},closeAllHomeButton:{type:3,description:"Close all folders when clicking on the home button",restartNeeded:!0,default:!1},closeOthers:{type:3,description:"Close other folders when opening a folder",default:!1},closeServerFolder:{type:3,description:"Close folder when selecting a server in that folder",default:!1},forceOpen:{type:3,description:"Force a folder to open when switching to a server of that folder",default:!1},keepIcons:{type:3,description:"Keep showing guild icons in the primary guild bar folder when it's open in the BetterFolders sidebar",restartNeeded:!0,default:!1},showFolderIcon:{type:4,description:"Show the folder icon above the folder guilds in the BetterFolders sidebar",options:[{label:"Never",value:0},{label:"Always",value:1,default:!0},{label:"When more than one folder is expanded",value:2}],restartNeeded:!0}}),oge="typeof isBetterFolders!=='undefined'?isBetterFolders:arguments[0]?.isBetterFolders",set="typeof betterFoldersExpandedIds!=='undefined'?betterFoldersExpandedIds:arguments[0]?.betterFoldersExpandedIds",cet="vc-betterFolders-sidebar-grid",hk=S({name:"BetterFolders",description:"Shows server folders on dedicated sidebar and adds folder related improvements",authors:[b.juby,b.AutumnVN,b.Nuckyz],isModified:!0,tags:["Organisation","Servers","Appearance"],settings:Wr,patches:[{find:'("guildsnav")',predicate:()=>Wr.store.sidebar,replacement:[{match:/let{disableAppDownload:\i=\i\.isPlatformEmbedded,isOverlay:.+?(?=}=\i)/,replace:"$&,isBetterFolders,betterFoldersExpandedIds"},{match:/,{guildDiscoveryButton:\i,/g,replace:"$&isBetterFolders:arguments[0]?.isBetterFolders,betterFoldersExpandedIds:arguments[0]?.betterFoldersExpandedIds,"},{match:/switch\((\i)\.type\){.+?default:return null}/,replace:`return $self.wrapGuildNodeComponent($1,()=>{$&},${oge},${set});`},{match:/switch\(\i\.type\){case \i\.\i\.FOLDER:.+?folderNode:\i,/,replace:`$&isBetterFolders:${oge},`},{match:/switch\(\i\.type\).+?,\i,\i\.setNodeRef/,replace:"$&,arguments[0]?.isBetterFolders,arguments[0]?.betterFoldersExpandedIds"},{match:/lastTargetNode:\i\[\i\.length-1\].+?}\)(?::null)?\](?=}\))/,replace:"$&.filter($self.makeGuildsBarGuildListFilter(!!arguments[0]?.isBetterFolders))"},{match:/reverse:!0,.{0,150}?barClassName:.+?\}\)\]/,replace:"$&.filter($self.makeGuildsBarSidebarFilter(!!arguments[0]?.isBetterFolders))"}]},{find:".toggleGuildFolderExpand(",predicate:()=>Wr.store.sidebar&&Wr.store.showFolderIcon!==1,replacement:[{match:/(\],\(\)=>)(\i\.\i)\.isFolderExpanded\(\i\)\)/,replace:(e,t,o)=>`${t}${o}.getExpandedFolders())`},{match:/(?<=\.\.\.\i,folderNode:(\i),expanded:)\i(?=,)/,replace:(e,t)=>`typeof ${e}==="boolean"?${e}:${e}.has(${t}.id),betterFoldersExpandedIds:${e} instanceof Set?${e}:void 0`}]},{find:".FOLDER_ITEM_ANIMATION_DURATION),",predicate:()=>Wr.store.sidebar,replacement:[{predicate:()=>Wr.store.keepIcons,match:/let ?(?:\i,)*?{folderNode:\i,setNodeRef:\i,.+?expanded:(\i),.+?;(?=let)/,replace:(e,t)=>`${e}${t}=!!arguments[0]?.isBetterFolders&&${t};`},{predicate:()=>!Wr.store.keepIcons,match:/(?=,\{from:\{height)/,replace:"&&$self.shouldShowTransition(arguments[0])"},{predicate:()=>!Wr.store.keepIcons,match:/"--custom-folder-color".+?(?=\i\(\(\i,\i,\i\)=>{let{key:.{0,70}"ul")(?<=selected:\i,expanded:(\i),.+?)/,replace:(e,t)=>`${e}$self.shouldRenderContents(arguments[0],${t})?null:`},{predicate:()=>Wr.store.showFolderIcon!==1,match:/"--custom-folder-color".{0,110}?children:\[/,replace:"$&$self.shouldShowFolderIconAndBackground(!!arguments[0]?.isBetterFolders,arguments[0]?.betterFoldersExpandedIds)&&"},{predicate:()=>Wr.store.showFolderIcon!==1,match:/"--custom-folder-color".+?className:\i\.\i}\),(?=\i,)/,replace:"$&!$self.shouldShowFolderIconAndBackground(!!arguments[0]?.isBetterFolders,arguments[0]?.betterFoldersExpandedIds)?null:"}]},{find:"APPLICATION_LIBRARY,render:",predicate:()=>Wr.store.sidebar,group:!0,replacement:[{match:/(?<=[[,])((?:!?\i&&)+)\(.{0,50}({className:\i\.\i,themeOverride:\i})\)/g,replace:(e,t,o)=>`${e},${t}$self.FolderSideBar(${o})`},{match:/(?<=className:)\i\.\i(?=,"data-fullscreen")/,replace:`"${cet} "+$&`}]},{find:"#{intl::DISCODO_DISABLED}",predicate:()=>Wr.store.closeAllHomeButton,replacement:{match:/(?<=onClick:(?:function)?\(\)(?:=>)?{)(?=.{0,300}"discodo")/,replace:"$self.closeFolders();"}}],flux:{CHANNEL_SELECT(e){if(!(!Wr.store.closeAllFolders&&!Wr.store.forceOpen&&!Wr.store.closeServerFolder)&&tge!==e.guildId){tge=e.guildId;let t=aet(e.guildId);t?.folderId?(Wr.store.forceOpen&&!tu.isFolderExpanded(t.folderId)&&gk.toggleGuildFolderExpand(t.folderId),Wr.store.closeServerFolder&&tu.isFolderExpanded(t.folderId)&&gk.toggleGuildFolderExpand(t.folderId)):Wr.store.closeAllFolders&&xj()}},TOGGLE_GUILD_FOLDER_EXPAND(e){Wr.store.closeOthers&&!hj&&(hj=!0,Q.wait(()=>{let t=tu.getExpandedFolders();if(t.size>1)for(let o of t)o!==e.folderId&&gk.toggleGuildFolderExpand(o);hj=!1}))},LOGOUT(){xj()}},FolderSideBar:Vfe,closeFolders:xj,wrapGuildNodeComponent(e,t,o,r){return!o||e.type==="folder"&&r?.has(e.id)||e.type==="guild"&&r?.has(e.parentId)?t():i("div",{style:{display:"none"}},t())},makeGuildsBarGuildListFilter(e){return t=>{if(!e)return!0;try{let o=Xe("SERVERS");return o?t?.props?.["aria-label"]===o:(new ie("BetterFolders").error("Failed to get SERVERS intl message"),!0)}catch(o){return console.error(o),!0}}},makeGuildsBarSidebarFilter(e){return t=>{if(!e)return!0;try{return vj(t,o=>o?.props?.renderTreeNode!=null)}catch(o){return console.error(o),!0}}},shouldShowFolderIconAndBackground(e,t){if(!e)return!0;switch(Wr.store.showFolderIcon){case 0:return!1;case 1:return!0;case 2:return(t?.size??0)>1;default:return!0}},shouldShowTransition(e){return e?.folderNode?.id===1?!0:!!e?.isBetterFolders},shouldRenderContents(e,t){return e?.folderNode?.id===1?!1:!e?.isBetterFolders&&t}})});var xk,nge=h(()=>{"use strict";d();O();R();xk=S({name:"BetterGifAltText",authors:[b.Ven],description:"Change GIF alt text from simply being 'GIF' to containing the gif tags / filename",tags:["Media","Accessibility","Customisation"],patches:[{find:".modalContext})};",replacement:{match:/(return.{0,10}\.jsx.{0,50}isWindowFocused)/,replace:"$self.altify(e);$1"}},{find:"#{intl::GIF}",replacement:{match:/alt:(\i)=(\i\.\i\.string\(\i\.\i#{intl::GIF}\))(?=,[^}]*\}=(\i))/,replace:"alt_$$:$1=$self.altify($3)||$2"}}],altify(e){if(e.contentType&&e.contentType!=="image/gif"||(e.alt??="GIF",e.alt!=="GIF"))return e.alt;let t=e.original||e.src;try{t=decodeURI(t)}catch{}let o=t.slice(t.lastIndexOf("/")+1).replace(/\d/g,"").replace(/.gif$/,"").split(/[,\-_ ]+/g).slice(0,20).join(" ");return o.length>300&&(o=o.slice(0,300)+"..."),o&&(e.alt+=` - ${o}`),e.alt}})});var vk,rge=h(()=>{"use strict";d();O();R();vk=S({name:"BetterGifPicker",description:"Makes the gif picker open the favourite category by default",tags:["Emotes","Customisation"],authors:[b.Samwich],patches:[{find:"renderHeaderContent(){",replacement:[{match:/(?<=state={resultType:)null/,replace:'"Favorites"'}]}]})});async function pet(e,t,o){let r=yj.store.roleIconFileFormat,n=`${location.protocol}//${window.GLOBAL_ENV.CDN_HOST}/role-icons/${e}/${t}.${r}`,a=n.replace(`//${window.GLOBAL_ENV.CDN_HOST}/`,"//media.discordapp.net/");Ji({url:a,original:n,height:128,width:128})}function bk(){return i("svg",{role:"img",width:"18",height:"18",fill:"none",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"m13.96 5.46 4.58 4.58a1 1 0 0 0 1.42 0l1.38-1.38a2 2 0 0 0 0-2.82l-3.18-3.18a2 2 0 0 0-2.82 0l-1.38 1.38a1 1 0 0 0 0 1.42ZM2.11 20.16l.73-4.22a3 3 0 0 1 .83-1.61l7.87-7.87a1 1 0 0 1 1.42 0l4.58 4.58a1 1 0 0 1 0 1.42l-7.87 7.87a3 3 0 0 1-1.6.83l-4.23.73a1.5 1.5 0 0 1-1.73-1.73Z"}))}function Sk(){return i("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M 12,0 C 5.3733333,0 0,5.3733333 0,12 c 0,6.626667 5.3733333,12 12,12 1.106667,0 2,-0.893333 2,-2 0,-0.52 -0.2,-0.986667 -0.52,-1.346667 -0.306667,-0.346666 -0.506667,-0.813333 -0.506667,-1.32 0,-1.106666 0.893334,-2 2,-2 h 2.36 C 21.013333,17.333333 24,14.346667 24,10.666667 24,4.7733333 18.626667,0 12,0 Z M 4.6666667,12 c -1.1066667,0 -2,-0.893333 -2,-2 0,-1.1066667 0.8933333,-2 2,-2 1.1066666,0 2,0.8933333 2,2 0,1.106667 -0.8933334,2 -2,2 z M 8.666667,6.6666667 c -1.106667,0 -2.0000003,-0.8933334 -2.0000003,-2 0,-1.1066667 0.8933333,-2 2.0000003,-2 1.106666,0 2,0.8933333 2,2 0,1.1066666 -0.893334,2 -2,2 z m 6.666666,0 c -1.106666,0 -2,-0.8933334 -2,-2 0,-1.1066667 0.893334,-2 2,-2 1.106667,0 2,0.8933333 2,2 0,1.1066666 -0.893333,2 -2,2 z m 4,5.3333333 c -1.106666,0 -2,-0.893333 -2,-2 0,-1.1066667 0.893334,-2 2,-2 1.106667,0 2,0.8933333 2,2 0,1.106667 -0.893333,2 -2,2 z"}))}function met(){return i("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M12 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM11.53 11A9.53 9.53 0 0 0 2 20.53c0 .81.66 1.47 1.47 1.47h.22c.24 0 .44-.17.5-.4.29-1.12.84-2.17 1.32-2.91.14-.21.43-.1.4.15l-.26 2.61c-.02.3.2.55.5.55h11.7a.5.5 0 0 0 .5-.55l-.27-2.6c-.02-.26.27-.37.41-.16.48.74 1.03 1.8 1.32 2.9.06.24.26.41.5.41h.22c.81 0 1.47-.66 1.47-1.47A9.53 9.53 0 0 0 12.47 11h-.94Z"}))}function bj(e,t,o){if(!e)return{before:[],after:[]};let r=[ht.getGuildPermissionProps(t).canManageRoles&&i(P.MenuItem,{key:"vc-edit-role",id:"vc-edit-role",label:"Edit Role",action:async()=>{await yk.open(t.id,"ROLES"),yk.selectRole(e.id)},icon:bk,leadingAccessory:{type:"icon",icon:bk}}),e.colorString&&i(P.MenuItem,{key:"vc-copy-role-color",id:"vc-copy-role-color",label:"Copy Role Color",action:()=>po(e.colorString),icon:Sk,leadingAccessory:{type:"icon",icon:Sk}})].filter(Aa),n=[e.icon&&i(P.MenuItem,{key:"vc-view-role-icon",id:"vc-view-role-icon",label:"View Role Icon",action:()=>{Ji({url:`${location.protocol}//${window.GLOBAL_ENV.CDN_HOST}/role-icons/${e.id}/${e.icon}.${yj.store.roleIconFileFormat}`,height:128,width:128})},icon:On,leadingAccessory:{type:"icon",icon:On}}),o&&i(P.MenuItem,{key:"vc-view-role-members",id:"vc-view-role-members",label:"View Role Members",render:()=>i(Xa,{position:"right",align:"center",targetElementRef:o,preload:()=>uet(t.id,e.id),renderPopout:a=>i(b3,{popoutProps:a,guildId:t.id,channelId:zo().id,roleId:e.id})},a=>i("div",{className:X(jw.item,jw.labelContainer,jw.colorDefault),ref:o,role:"menuitem",...a},i("div",{className:jw.label},"View Role Members"),i("div",{className:jw.iconContainer},i(met,null))))})].filter(Aa);return{before:r,after:n}}function fet(e,{guildId:t,id:o}){let r=Ss();if(!r||r.id!==t)return;let n=To.getRole(t,o);n&&rt.openContextMenu(e,()=>{let a=Se(null),{before:s,after:l}=bj(n,r,a);return i(P.Menu,{navId:"vc-better-role-context-member-list",onClose:rt.closeContextMenu,"aria-label":"Role Actions"},s,l,i(P.MenuItem,{key:"vc-better-role-context-copy-role-id",id:"vc-better-role-context-copy-role-id",label:Xe("COPY_ID_ROLE"),icon:Jm,leadingAccessory:{type:"icon",icon:Jm},action:()=>po(n.id)}))})}var yk,jw,uet,det,yj,wk,Sj=h(()=>{"use strict";d();j();_a();ot();mi();O();_e();Ca();Be();R();le();C();yk=Ae("open","selectRole","updateGuild"),jw=Ie("item","labelContainer","colorDefault","label","iconContainer"),uet=Oe(".GUILD_ROLE_MEMBER_IDS(","requestMembersById"),det=tn("appearance","developerMode");yj=M({roleIconFileFormat:{type:4,description:"File format to use when viewing role icons",options:[{label:"png",value:"png",default:!0},{label:"webp",value:"webp"},{label:"jpg",value:"jpg"}]}});wk=S({name:"BetterRoleContext",description:"Adds options to copy role color / edit role / view role icon when right clicking roles in the user profile or in the member list",tags:["Roles","Appearance"],authors:[b.Ven,b.goodbee,b.nightmaresan],dependencies:["UserSettingsAPI"],settings:yj,openRoleContextMenu:fet,patches:[{find:'tutorialId:"whos-online',replacement:{match:/(?<=#{intl::CHANNEL_MEMBERS_A11Y_LABEL}.{0,200}?"aria-hidden":!0,)children:.{0,200}?(?:—|\\u2014) ",\i\]\}\)\]/,replace:"onContextMenu:e=>$self.openRoleContextMenu(e,arguments[0]),$&"}}],start(){det.updateSetting(!0)},contextMenus:{"dev-context"(e,{id:t}){let o=Se(null),r=Ss();if(!r)return;let n=To.getRole(r.id,t);if(n&&(n.colorString&&e.unshift(i(P.MenuItem,{id:"vc-copy-role-color",label:"Copy Role Color",action:()=>po(n.colorString),icon:Sk,leadingAccessory:{type:"icon",icon:Sk}})),ht.getGuildPermissionProps(r).canManageRoles&&e.unshift(i(P.MenuItem,{id:"vc-edit-role",label:"Edit Role",action:async()=>{await yk.open(r.id,"ROLES"),yk.selectRole(t)},icon:bk,leadingAccessory:{type:"icon",icon:bk}})),n.icon)){let a=n.icon;e.push(i(P.MenuItem,{id:"vc-view-role-icon",label:"View Role Icon",action:()=>pet(n.id,a,n.name),icon:On,leadingAccessory:{type:"icon",icon:On}}))}}}})});var X1,Ak,ige=h(()=>{"use strict";d();j();O();_e();R();X1=M({bothStyles:{type:3,description:"Show both role dot and coloured names",restartNeeded:!0,default:!1},copyRoleColorInProfilePopout:{type:3,description:"Allow click on role dot in profile popout to copy role color",restartNeeded:!0,default:!1}}),Ak=S({name:"BetterRoleDot",authors:[b.Ven,b.AutumnVN],description:"Copy role colour on RoleDot (accessibility setting) click. Also allows using both RoleDot and coloured names simultaneously",tags:["Roles","Appearance"],settings:X1,patches:[{find:"M0 4C0 1.79086 1.79086 0 4 0H16C18.2091 0 20 1.79086 20 4V16C20 18.2091 18.2091 20 16 20H4C1.79086 20 0 18.2091 0 16V4Z",replacement:{match:/,viewBox:"0 0 20 20"/,replace:"$&,onClick:()=>$self.copyToClipBoard(arguments[0].color),style:{cursor:'pointer'}"}},{find:'"dot"===',all:!0,noWarn:!0,predicate:()=>X1.store.bothStyles,replacement:{match:/"(?:username|dot)"===\i(?!\.\i)/g,replace:"true"}},{find:"#{intl::ADD_ROLE_A11Y_LABEL}",all:!0,predicate:()=>X1.store.copyRoleColorInProfilePopout&&!X1.store.bothStyles,noWarn:!0,replacement:{match:/"dot"===\i/,replace:"true"}},{find:".roleVerifiedIcon",all:!0,predicate:()=>X1.store.copyRoleColorInProfilePopout&&!X1.store.bothStyles,noWarn:!0,replacement:{match:/"dot"===\i/,replace:"true"}}],copyToClipBoard(e){ft(e)}})});var age=h(()=>{});var sge,lge,cge,uge,dge,pge,mge,fge,gge,hge=h(()=>{"use strict";d();Kt();le();sge=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 16 16",style:{marginLeft:.1}},i("path",{d:"M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"})),lge=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 512 512",style:{marginLeft:"0.0044em",marginTop:"0.46px"}},i("path",{d:"M188.8,255.93A67.2,67.2,0,1,0,256,188.75,67.38,67.38,0,0,0,188.8,255.93Z"}),i("path",{d:"M476.75,217.79s0,0,0,.05a206.63,206.63,0,0,0-7-28.84h-.11a202.16,202.16,0,0,1,7.07,29h0a203.5,203.5,0,0,0-7.07-29H314.24c19.05,17,31.36,40.17,31.36,67.05a86.55,86.55,0,0,1-12.31,44.73L231,478.45a2.44,2.44,0,0,1,0,.27V479h0v-.26A224,224,0,0,0,256,480c6.84,0,13.61-.39,20.3-1a222.91,222.91,0,0,0,29.78-4.74C405.68,451.52,480,362.4,480,255.94A225.25,225.25,0,0,0,476.75,217.79Z"}),i("path",{d:"M256,345.5c-33.6,0-61.6-17.91-77.29-44.79L76,123.05l-.14-.24A224,224,0,0,0,207.4,474.55l0-.05,77.69-134.6A84.13,84.13,0,0,1,256,345.5Z"}),i("path",{d:"M91.29,104.57l77.35,133.25A89.19,89.19,0,0,1,256,166H461.17a246.51,246.51,0,0,0-25.78-43.94l.12.08A245.26,245.26,0,0,1,461.17,166h.17a245.91,245.91,0,0,0-25.66-44,2.63,2.63,0,0,1-.35-.26A223.93,223.93,0,0,0,91.14,104.34l.14.24Z"})),cge=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 24 24",style:{marginLeft:"0.0.0043403em",marginTop:"0.46px"}},i("path",{d:"M21.86 17.86q.14 0 .25.12.1.13.1.25t-.11.33l-.32.46-.43.53-.44.5q-.21.25-.38.42l-.22.23q-.58.53-1.34 1.04-.76.51-1.6.91-.86.4-1.74.64t-1.67.24q-.9 0-1.69-.28-.8-.28-1.48-.78-.68-.5-1.22-1.17-.53-.66-.92-1.44-.38-.77-.58-1.6-.2-.83-.2-1.67 0-1 .32-1.96.33-.97.87-1.8.14.95.55 1.77.41.82 1.02 1.5.6.68 1.38 1.21.78.54 1.64.9.86.36 1.77.56.92.2 1.8.2 1.12 0 2.18-.24 1.06-.23 2.06-.72l.2-.1.2-.05zm-15.5-1.27q0 1.1.27 2.15.27 1.06.78 2.03.51.96 1.24 1.77.74.82 1.66 1.4-1.47-.2-2.8-.74-1.33-.55-2.48-1.37-1.15-.83-2.08-1.9-.92-1.07-1.58-2.33T.36 14.94Q0 13.54 0 12.06q0-.81.32-1.49.31-.68.83-1.23.53-.55 1.2-.96.66-.4 1.35-.66.74-.27 1.5-.39.78-.12 1.55-.12.7 0 1.42.1.72.12 1.4.35.68.23 1.32.57.63.35 1.16.83-.35 0-.7.07-.33.07-.65.23v-.02q-.63.28-1.2.74-.57.46-1.05 1.04-.48.58-.87 1.26-.38.67-.65 1.39-.27.71-.42 1.44-.15.72-.15 1.38zM11.96.06q1.7 0 3.33.39 1.63.38 3.07 1.15 1.43.77 2.62 1.93 1.18 1.16 1.98 2.7.49.94.76 1.96.28 1 .28 2.08 0 .89-.23 1.7-.24.8-.69 1.48-.45.68-1.1 1.22-.64.53-1.45.88-.54.24-1.11.36-.58.13-1.16.13-.42 0-.97-.03-.54-.03-1.1-.12-.55-.1-1.05-.28-.5-.19-.84-.5-.12-.09-.23-.24-.1-.16-.1-.33 0-.15.16-.35.16-.2.35-.5.2-.28.36-.68.16-.4.16-.95 0-1.06-.4-1.96-.4-.91-1.06-1.64-.66-.74-1.52-1.28-.86-.55-1.79-.89-.84-.3-1.72-.44-.87-.14-1.76-.14-1.55 0-3.06.45T.94 7.55q.71-1.74 1.81-3.13 1.1-1.38 2.52-2.35Q6.68 1.1 8.37.58q1.7-.52 3.58-.52Z"})),uge=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 512 512",style:{marginLeft:"0.0044em",marginTop:"0.46px"}},i("path",{d:"M130.22 127.548C130.38 127.558 130.3 127.558 130.22 127.548V127.548ZM481.64 172.898C471.03 147.398 449.56 119.898 432.7 111.168C446.42 138.058 454.37 165.048 457.4 185.168C457.405 185.306 457.422 185.443 457.45 185.578C429.87 116.828 383.098 89.1089 344.9 28.7479C329.908 5.05792 333.976 3.51792 331.82 4.08792L331.7 4.15792C284.99 30.1109 256.365 82.5289 249.12 126.898C232.503 127.771 216.219 131.895 201.19 139.035C199.838 139.649 198.736 140.706 198.066 142.031C197.396 143.356 197.199 144.87 197.506 146.323C197.7 147.162 198.068 147.951 198.586 148.639C199.103 149.327 199.76 149.899 200.512 150.318C201.264 150.737 202.096 150.993 202.954 151.071C203.811 151.148 204.676 151.045 205.491 150.768L206.011 150.558C221.511 143.255 238.408 139.393 255.541 139.238C318.369 138.669 352.698 183.262 363.161 201.528C350.161 192.378 326.811 183.338 304.341 187.248C392.081 231.108 368.541 381.784 246.951 376.448C187.487 373.838 149.881 325.467 146.421 285.648C146.421 285.648 157.671 243.698 227.041 243.698C234.541 243.698 255.971 222.778 256.371 216.698C256.281 214.698 213.836 197.822 197.281 181.518C188.434 172.805 184.229 168.611 180.511 165.458C178.499 163.75 176.392 162.158 174.201 160.688C168.638 141.231 168.399 120.638 173.51 101.058C148.45 112.468 128.96 130.508 114.8 146.428H114.68C105.01 134.178 105.68 93.7779 106.25 85.3479C106.13 84.8179 99.022 89.0159 98.1 89.6579C89.5342 95.7103 81.5528 102.55 74.26 110.088C57.969 126.688 30.128 160.242 18.76 211.318C14.224 231.701 12 255.739 12 263.618C12 398.318 121.21 507.508 255.92 507.508C376.56 507.508 478.939 420.281 496.35 304.888C507.922 228.192 481.64 173.82 481.64 172.898Z"})),dge=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 512 512",style:{marginLeft:"0.0.00434028em",marginTop:"0.456px"}},i("path",{d:"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z"})),pge=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 496 512",style:{marginLeft:"0.00434027777em",marginTop:"2px"}},i("path",{d:"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"})),mge=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 512 512",style:{marginLeft:"0.00434027777em",marginTop:"0.46px"}},i("path",{d:"M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"})),fge=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 16 16",style:{marginLeft:"0.00434027777em",marginTop:"0.456px"}},i("path",{fillRule:"evenodd",d:"M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215 0 1.344-.665 2.288-1.79 2.973-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712 1.03-.632 1.397-1.135 1.397-2.028 0-.979-.758-1.698-1.926-1.698-1.009 0-1.71.529-1.938 1.402-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09 0-.618-.473-1.092-1.095-1.092-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"})),gge=Vo(()=>rf("M15.5 1h-8C6.12 1 5 2.12 5 3.5v17C5 21.88 6.12 23 7.5 23h8c1.38"))});function qw(e){return`${e.os} \xB7 ${e.platform}`}function Ww(){return Ct(xge(),pl)}async function vge(){(await vt(xge())||new Map).forEach((t,o)=>{pl.set(o,t)})}function yge(e){switch(e){case"Windows Mobile":case"Windows":return"#55a6ef";case"Linux":return"#cdcd31";case"Android":return"#7bc958";case"Mac OS X":case"iOS":return"";case"Horizon OS":return"#0081fb";default:return"#f3799a"}}function bge(e){switch(e){case"Discord Android":case"Discord iOS":case"Discord Client":case"Discord VR":return sge;case"Android Chrome":case"Chrome iOS":case"Chrome":return lge;case"Edge":return cge;case"Firefox":return uge;case"Internet Explorer":return dge;case"Opera Mini":case"Opera":return pge;case"Mobile Safari":case"Safari":return mge;case"BlackBerry":case"Facebook Mobile":case"Android Mobile":return gge;default:return fge}}var xge,Zp,pl,kk=h(()=>{"use strict";d();Io();we();C();hge();xge=()=>`BetterSessions_savedSessions_${L.getCurrentUser().id}`,Zp=K("vc-betterSessions-"),pl=new Map});function Sge({props:e,session:t,state:o}){let[r,n]=o,[a,s]=V.useState(pl.get(t.id_hash)?.name??"");function l(){pl.set(t.id_hash,{name:a,isNew:!1}),n(a!==""?`${a}*`:qw(t.client_info)),Ww(),e.onClose()}return i(be,{...e,title:"Rename",actions:[{text:"Cancel",variant:"secondary",onClick:()=>e.onClose()},{text:"Save",variant:"primary",onClick:l}]},i("div",null,i(oe,{tag:"h5"},"New device name"),i(Te,{style:{marginBottom:"10px"},placeholder:qw(t.client_info),value:a,onChange:s,onKeyDown:c=>{c.key==="Enter"&&l()}}),i(Ys,{style:{paddingLeft:"1px",opacity:.6},onClick:()=>s("")},"Reset Name")))}var wge=h(()=>{"use strict";d();Tt();We();kk();C()});function Age({session:e,state:t}){return i(de,{variant:"secondary",size:"xs",className:Zp("rename-btn"),onClick:()=>ce(o=>i(Sge,{props:o,session:e,state:t}))},"Rename")}function kge(){return i(de,{variant:"dangerPrimary",size:"min",className:Zp("new-btn")},"NEW")}var Cge=h(()=>{"use strict";d();Tt();kk();C();wge()});var get,het,wj,Ck,Tge=h(()=>{"use strict";d();age();Fa();j();Pe();Je();O();R();le();C();Cge();kk();get=Ie("timestamp","blockquoteContainer"),het=he("!1,lowerBadgeSize:"),wj=M({backgroundCheck:{type:3,description:"Check for new sessions in the background, and display notifications when they are detected",default:!1,restartNeeded:!0},checkInterval:{description:"How often to check for new sessions in the background (if enabled), in minutes",type:1,default:20,restartNeeded:!0}}),Ck=S({name:"BetterSessions",description:"Enhances the sessions (devices) menu. Allows you to view exact timestamps, give each session a custom name, and receive notifications about new sessions.",authors:[b.amia],tags:["Notifications","Customisation","Utility"],settings:wj,patches:[{find:"#{intl::AUTH_SESSIONS_OS_UNKNOWN}",replacement:[{match:/(#{intl::AUTH_SESSIONS_ACTIVE_RECENTLY}.{0,230}role:"listitem",children:\[.{0,15},\{icon:)\i/,replace:"$1()=>$self.renderIcon(arguments[0])"},{match:/("horizontal",gap:"xs",children:)\[.{0,250}"text-subtle",children:\i\}\)\]\}\),/,replace:"$1$self.renderName(arguments[0])}),"},{match:/("text-muted",children:)\i(?=\}\)\]\}\),.{0,120}\.client_info\?\.location)/,replace:"$1$self.renderDescription(arguments[0])"},{match:/:\i\(\i\.approx_last_used_time\).{0,40}\(0,\i\.jsxs?\)\(\i,\{/,replace:"$&session:arguments[0]?.session,"}]}],renderName:H.wrap(({session:e})=>{let t=pl.get(e.id_hash),o=V.useState(t?.name?`${t.name}*`:qw(e.client_info)),[r,n]=o;return i(f,null,i(U,{size:"md",weight:"semibold",color:"text-strong"},r),i("div",{className:Zp("footer-buttons")},(t==null||t.isNew)&&i(kge,null),i(Age,{session:e,state:o})))},{noop:!0}),renderDescription:H.wrap(({session:e,description:t})=>{let[o,r]=t.split(" \xB7 ");return i("div",{className:Zp("description")},i(U,{size:"sm",weight:"normal",color:"text-muted"},o),r&&i(f,null," \xB7 ",i(ve,{text:e.approx_last_used_time.toLocaleString()},n=>i("span",{...n,className:get.timestamp},r))))},{noop:!0}),renderIcon:H.wrap(({session:e,icon:t})=>{let o=bge(e.client_info.platform);return i(het,{isFolder:!0,style:{cursor:"unset"},selected:!1,lowerBadge:i("div",{className:Zp("lowerBadge")},i(o,{width:14,height:14,className:Zp("lowerBadge-icon")})),lowerBadgeSize:{width:20,height:20}},i("div",{className:Zp("icon"),style:{backgroundColor:yge(e.client_info.os)}},i(t,{size:"md",color:"currentColor"})))},{noop:!0}),async checkNewSessions(){let e=await mt.get({url:Gt.Endpoints.AUTH_SESSIONS});for(let t of e.body.user_sessions)pl.has(t.id_hash)||(pl.set(t.id_hash,{name:"",isNew:!0}),At({title:"BetterSessions",body:`New session: ${t.client_info.os} \xB7 ${t.client_info.platform} \xB7 ${t.client_info.location}`,permanent:!0,onClick:()=>un.openUserSettings("sessions_panel")}));Ww()},flux:{USER_SETTINGS_ACCOUNT_RESET_AND_CLOSE_FORM(){let e=$S.getSessions().map(t=>t.id_hash);e.forEach(t=>{pl.has(t)||pl.set(t,{name:"",isNew:!1})}),e.length>0&&pl.forEach((t,o)=>{e.includes(o)||pl.delete(o)}),pl.forEach(t=>{t.isNew=!1}),Ww()}},async start(){await vge(),this.checkNewSessions(),wj.store.backgroundCheck&&(this.checkInterval=setInterval(this.checkNewSessions,wj.store.checkInterval*60*1e3))},stop(){clearInterval(this.checkInterval)}})});var Ige=h(()=>{});function Ege(e){return i("svg",{viewBox:"0 0 443 443",width:20,height:20,...e},i("path",{fill:"currentColor",d:"M221.5.6C99.2.6,0,99.7,0,222.1s99.2,221.5,221.5,221.5,221.5-99.2,221.5-221.5S343.8.6,221.5.6ZM221.5,363.3c-78.3,0-141.8-63.5-141.8-141.8s63.5-141.8,141.8-141.8,141.8,63.5,141.8,141.8-63.5,141.8-141.8,141.8Z"}),i("path",{fill:"currentColor",d:"M438.3,175C421,90.1,354.7,23.1,269.9,5.1,145-21.3,33.1,57.6,6.2,169.5c-3.4,14.1,4.6,28.5,18.4,33.1l2.7.9c24.7,8.2,51.8-4.7,60.4-29.3,19.4-55.6,72.5-95.4,134.9-95,44.3.3,84.1,21.2,109.9,53.7l-63.3,29.5c-7.9-7-17.5-12.5-28.5-15.7-35.6-10.3-73.8,7.7-88.5,41.7-17.2,39.8,3.3,85.4,43.9,99.4,37.9,13,79.7-6.9,93.5-44.5,2.6-7.2,4.1-14.5,4.4-21.8l66-30.8c1.8,8.2,2.9,16.6,3.2,25.2,1.2,34-9.6,65.5-28.5,90.5-17.8,23.6-10.5,57.4,15.7,71.1l1.3.7c10.4,5.5,23.3,3.4,31.4-5.2,46.8-49.9,70.8-121.4,55.2-198Z"}),i("path",{fill:"currentColor",transform:"translate(319.7 -16.5) rotate(65)",d:"M172.8,152.7h0c17.7,0,32,14.3,32,32v148h-64v-148c0-17.7,14.3-32,32-32Z"}))}function xet(){let e=Se(null),[t,o]=T(!1);return i(Xa,{position:"bottom",align:"center",spacing:0,animation:Xa.Animation.NONE,shouldShow:t,onRequestClose:()=>o(!1),targetElementRef:e,renderPopout:()=>Dge(()=>o(!1))},(r,{isShown:n})=>i(il,{ref:e,className:"vc-toolbox-btn",onClick:()=>o(a=>!a),tooltip:n?null:"Equicord Toolbox",icon:Ege,selected:n}))}var Aj,Yp,Kw=h(()=>{"use strict";d();Ige();zp();j();O();R();C();kj();Aj=M({showPluginMenu:{type:3,default:!0,description:"Show the plugins menu in the toolbox"}});oo("EquicordToolbox","VencordToolbox");Yp=S({name:"EquicordToolbox",description:"Adds a button next to the inbox button in the channel header that houses Equicord quick actions",tags:["Voice","Accessibility"],authors:[b.Ven,b.AutumnVN],dependencies:["HeaderBarAPI"],settings:Aj,headerBarButton:{icon:Ege,render:xet,priority:1337}})});function vet(){let{showPluginMenu:e}=Aj.use(["showPluginMenu"]),t=Cj();return e?i(P.MenuItem,{id:"plugins",label:"Plugins",action:()=>xd(ih)},t):null}function Cj(e=!1){let t=lo().plugins,[o,r]=T(""),n=o.toLowerCase(),a=Ne(()=>Object.values(et).sort((l,c)=>l.name.localeCompare(c.name)),[]),s=Ne(()=>a.filter(l=>!Ve(l.name)||l.name.endsWith("API")?!1:l.name.toLowerCase().includes(n)),[n]);return i(f,null,i(P.MenuControlItem,{id:"plugins-search",control:(l,c)=>i(P.MenuSearchControl,{...l,query:o,onChange:r,ref:c})}),i(P.MenuSeparator,null),s.map(l=>{let c=[],u=!1;if(l.settings)for(let[g,x]of Object.entries(l.settings.def)){if(B1(l.settings,x))continue;u=!0;let v=t[l.name],y={id:`${l.name}-${g}`,key:g,label:Pp(gS(g)),disabled:al(l.settings,x)};switch(x.type){case 3:c.push(i(P.MenuCheckboxItem,{...y,checked:v[g],action:()=>{v[g]=!v[g],x.restartNeeded&&ne("Restart to apply the change")}}));break;case 4:c.push(i(P.MenuItem,{...y},x.options.map(A=>i(P.MenuRadioItem,{group:`${l.name}-${g}`,id:`${l.name}-${g}-${A.value}`,key:A.label,label:A.label,checked:v[g]===A.value,action:()=>{v[g]=A.value,x.restartNeeded&&ne("Restart to apply the change")}}))));break;case 5:if(x.stickToMarkers||x.componentProps)continue;c.push(i(P.MenuControlItem,{...y,control:(A,k)=>i(P.MenuSliderControl,{ref:k,...A,minValue:x.markers[0],maxValue:x.markers.at(-1),value:v[g],onChange:w=>v[g]=w})}));break}}let p=c.length>0;return!p&&!(e&&u)?null:i(P.MenuItem,{id:`${l.name}-menu`,key:l.name,label:l.name,action:()=>ns(l)},p&&i(f,null,i(P.MenuGroup,{label:l.name},c),i(P.MenuSeparator,null),i(P.MenuItem,{id:`${l.name}-open`,label:"Open Settings",action:()=>ns(l)})))}))}function yet(){return i(P.MenuItem,{id:"themes",label:"Themes",action:()=>xd(lh)},Tj())}function Tj(){let{useQuickCss:e,enabledThemes:t}=lo(["useQuickCss","enabledThemes"]),[o]=Ro(VencordNative.themes.getThemesList);return i(f,null,i(P.MenuCheckboxItem,{id:"toggle-quickcss",checked:e,label:"Enable QuickCSS",action:()=>{Me.useQuickCss=!e}}),i(P.MenuItem,{id:"edit-quickcss",label:"Edit QuickCSS",action:()=>VencordNative.quickCss.openEditor()}),i(P.MenuItem,{id:"manage-themes",label:"Manage Themes",action:()=>xd(lh)}),!!o?.length&&i(P.MenuGroup,null,o.map(r=>i(P.MenuCheckboxItem,{id:`theme-${r.fileName}`,key:r.fileName,label:r.fileName,checked:t.includes(r.fileName),action:()=>{t.includes(r.fileName)?Me.enabledThemes=t.filter(n=>n!==r.fileName):Me.enabledThemes=[...t,r.fileName]}}))))}function bet(){let e=[];for(let o of Object.values(et))if(o.toolboxActions&&Ve(o.name)){let r=typeof o.toolboxActions=="function"?o.toolboxActions():Object.entries(o.toolboxActions).map(([n,a])=>{let s=`${o.name}-${n}`;return i(P.MenuItem,{id:s,key:s,label:n,action:a})});if(!r||Array.isArray(r)&&r.length===0)continue;e.push({plugin:o,node:i(P.MenuGroup,{label:o.name,key:`${o.name}-group`},r)})}if(e.length<=5)return e.map(o=>o.node);let t=e.map(({node:o,plugin:r})=>i(P.MenuItem,{id:`${r.name}-menu`,key:`${r.name}-menu`,label:r.name,action:()=>ns(r)},o));return i(P.MenuGroup,null,t)}function Dge(e){return i(P.Menu,{navId:"vc-toolbox",onClose:e},i(P.MenuItem,{id:"notifications",label:"Open Notification Log",action:kf}),yet(),vet(),bet())}var kj=h(()=>{"use strict";d();mw();Jt();j();Fi();Kt();Ta();R();C();Kw()});var Ij,Pge=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/betterSettings/fullHeightContext.css",{name:"src/plugins/betterSettings/fullHeightContext.css",source:`/* * Discord has dumb max height logic for their context menus. * If a context menu is at the bottom of the screen, its submenus are capped to its max height and can't even grow upwards * We unset the variable they use to cap height. This allows submenus to grow as tall as they want */ #user-settings-cog, [aria-activedescendant^="user-settings-cog"] { --reference-position-layer-max-height: initial !important; }`,classNames:{},dom:null});Ij="src/plugins/betterSettings/fullHeightContext.css"});function ket({mode:e,baseLayer:t=!1,...o}){let r=e==="HIDDEN",n=Se(null);G(()=>()=>{sc.dispatch("LAYER_POP_START"),sc.dispatch("LAYER_POP_COMPLETE")},[]);let a=i("div",{ref:n,"aria-hidden":r,className:wet({[Ej.layer]:!0,[Ej.baseLayer]:t,"stop-animations":r}),style:{opacity:r?0:void 0},...o});return t?a:i(w3,{containerRef:n},a)}var wet,Ej,Aet,Jp,Tk,Mge=h(()=>{"use strict";d();j();nl();ot();kj();O();we();_e();He();R();le();C();Pge();wet=K(""),Ej=Ie("animating","baseLayer","bg","layer","layers"),Aet={profile_section:_U,user_section:uS,equicord_section:FU,billing_section:BU,app_section:RU,games_and_apps_section:LU,developer_section:OU,utility_section:aS,playgrounds:UU},Jp=M({disableFade:{description:"Disable the crossfade animation",type:3,default:!0,restartNeeded:!0},organizeMenu:{description:"Organizes the settings cog context menu into categories",type:3,default:!0,restartNeeded:!0},eagerLoad:{description:"Removes the loading delay when opening the menu for the first time",type:3,default:!0,restartNeeded:!0}});Tk=S({name:"BetterSettings",description:"Enhances your settings-menu-opening experience",authors:[b.Kyuuhachi],tags:["Appearance","Customisation","Organisation"],settings:Jp,start(){Jp.store.organizeMenu&&Oi(Ij)},stop(){La(Ij)},patches:[{find:"this.renderArtisanalHack()",replacement:[{match:/class (\i)( extends \i\.PureComponent.+?jsx\)\(\1,\{mode:)/,replace:"var $1=$self.Layer;class VencordPatchedOldFadeLayer$2",predicate:()=>Jp.store.disableFade},{match:/createPromise:\(\)=>([^:}]*?),webpackId:"?\d+"?,name:(?!="CollectiblesShop")"[^"]+"/g,replace:"$&,_:$1",predicate:()=>Jp.store.eagerLoad}]},{find:'minimal:"contentColumnMinimal"',replacement:[{match:/(?=\(0,\i\.\i\)\((\i),\{from:\{position:"absolute")/,replace:"(_cb=>_cb(void 0,$1))||"},{match:/\i\.animated\.div/,replace:'"div"'}],predicate:()=>Jp.store.disableFade},{find:'"data-mana-component":"layer-modal"',replacement:[{match:/(\i)\.animated\.div(?=,\{"data-mana-component":"layer-modal")/,replace:'"div"'},{match:/(?<="data-mana-component":"layer-modal"[^}]*?)style:\i,/,replace:"style:{},"}],predicate:()=>Jp.store.disableFade},{find:"headerId:void 0,headerIdIsManaged:!1",replacement:{match:/let (\i)=300/,replace:"let $1=0"},predicate:()=>Jp.store.disableFade},{find:"handleOpenSettingsContextMenu=",replacement:{match:/(?=handleOpenSettingsContextMenu=.{0,100}?null!=\i&&.{0,100}?(await [^};]*?\)\)))/,replace:"_vencordBetterSettingsEagerLoad=(async ()=>$1)();"},predicate:()=>Jp.store.eagerLoad},{find:"#{intl::USER_SETTINGS_ACTIONS_MENU_LABEL}",predicate:()=>Jp.store.organizeMenu,replacement:[{match:/children:\[(\i),null!=(\i).{0,30}\}\),(\i)\](?<=\1=(?:function|.{0,30}\.openUserSettings).+?)/,replace:"children:$self.transformSettingsEntries([$1,$2,$3])"}]}],Layer(e){try{[w3.$$vencordGetWrappedComponent(),sc,Ej.layer].forEach(t=>t.test)}catch{return new ie("BetterSettings").error("Failed to find some components"),e.children}return i(ket,{...e})},transformSettingsEntries(e){let t=[],o={user_section:Xe("USER_SETTINGS"),utility_section:Xe("USER_SETTINGS_KEYBINDS_MISCELLANEOUS_SECTION_TITLE")},r=e.flat(1/0),n=null;for(let a of r){if(!a?.props)continue;let{key:s,props:l}=a;if(s==="equicord_plugins"||s==="equicord_themes"){let c=s==="equicord_plugins"?Cj():Tj();t.push(i(P.MenuItem,{key:s,label:l.label,id:l.label,...l},c))}else if((s?.endsWith("_section")||s==="playgrounds")&&(l.label??o[s])){let c=Aet[s],u=[].concat(l.children??[]).flat(1/0),p=u.find(m=>m?.key==="logout_sidebar_item");p&&(n=i(P.MenuItem,{key:p.key,...p.props})),t.push(i(P.MenuItem,{key:s,label:l.label??o[s],id:l.label??o[s],...c&&{iconLeft:c}},this.transformSettingsEntries(u.filter(m=>m?.key!=="logout_sidebar_item"))))}else t.push(a)}return n&&t.push(n),t}})});var Ik,Nge=h(()=>{"use strict";d();O();R();Ik=S({name:"BetterUploadButton",authors:[b.fawn,b.Ven],description:"Upload with a single click, open menu with right click",tags:["Utility","Shortcuts"],patches:[{find:".CHAT_INPUT_BUTTON_NOTIFICATION,",replacement:[{match:/onClick:(\i\?void 0:\i)(?=,onDoubleClick:(\i\?void 0:\i),)/,replace:"$&,...$self.getOverrides(arguments[0],$1,$2)"}]}],getOverrides(e,t,o){return e?.className?.includes("attachButton")?{onClick:o,onContextMenu:t}:{}}})});var Cet,Bge,Tet,Iet,Ek,Rge=h(()=>{"use strict";d();ot();O();_e();R();C();Cet=async({guildId:e,channelId:t,ownerId:o})=>{let r=await FS.getPreviewURL(e,t,o);r&&Ji({url:r,height:720,width:1280})},Bge=(e,{userId:t})=>{let o=pc.getAnyStreamForUser(t);if(!o)return;let r=i(P.MenuItem,{label:"View Stream Preview",id:"view-stream-preview",icon:n3,leadingAccessory:{type:"icon",icon:n3},action:()=>o&&Cet(o),disabled:!o});e.push(i(P.MenuSeparator,null),r)},Tet=(e,{stream:t})=>Bge(e,{userId:t.ownerId}),Iet=(e,{user:t})=>{if(t)return Bge(e,{userId:t.id})},Ek=S({name:"BiggerStreamPreview",description:"This plugin allows you to enlarge stream previews",tags:["Media","Appearance"],authors:[b.phil],contextMenus:{"user-context":Iet,"stream-context":Tet}})});function Oge(){Dj.textContent=` .vc-nsfw-img [class*=imageContainer] img, .vc-nsfw-img [class*=imageContainer] video, .vc-nsfw-img [class*=wrapperPaused] img, .vc-nsfw-img [class*=wrapperPaused] video { filter: blur(${Lge.store.blurAmount}px); transition: filter 0.2s; } .vc-nsfw-img [class*=imageContainer]:hover img, .vc-nsfw-img [class*=imageContainer]:hover video, .vc-nsfw-img [class*=wrapperPaused]:hover img, .vc-nsfw-img [class*=wrapperPaused]:hover video { filter: blur(0); } `}var Dj,Lge,Dk,Fge=h(()=>{"use strict";d();j();nl();O();we();R();Lge=M({blurAmount:{type:1,description:"Blur Amount (in pixels)",default:10,onChange:Oge},blurAllChannels:{type:3,description:"Blur attachments in all channels (not just NSFW)",default:!1}});Dk=S({name:"BlurNSFW",description:"Blur attachments in NSFW channels until hovered",tags:["Privacy","Appearance"],authors:[b.Ven],isModified:!0,settings:Lge,patches:[{find:"}renderStickersAccessories(",replacement:[{match:/(\.renderReactions\(\i\).+?className:)/,replace:'$&(this?.props?.channel?.nsfw || $self.settings.store.blurAllChannels ? "vc-nsfw-img ": "")+'}]}],start(){Dj=bs("VcBlurNsfw",_p),Oge()},stop(){Dj?.remove()}})});var _ge,Uge=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/callTimer/alignedChatInputFix.css",{name:"src/plugins/callTimer/alignedChatInputFix.css",source:`[class*="panels"] [class*="inner"], [class*="rtcConnectionStatus"] { height: fit-content !important; } `,classNames:{},dom:null});_ge="src/plugins/callTimer/alignedChatInputFix.css"});function zge({height:e=16,width:t=16,className:o}){return i("svg",{viewBox:"0 0 455 455",height:e,width:t,className:o,style:{color:"var(--channels-default)"}},i("path",{fill:"currentColor",d:`M332.229,90.04l14.238-27.159l-26.57-13.93L305.67,76.087c-19.618-8.465-40.875-13.849-63.17-15.523V30h48.269V0H164.231v30 H212.5v30.563c-22.295,1.674-43.553,7.059-63.171,15.523L135.103,48.95l-26.57,13.93l14.239,27.16 C67.055,124.958,30,186.897,30,257.5C30,366.576,118.424,455,227.5,455S425,366.576,425,257.5 C425,186.896,387.944,124.958,332.229,90.04z M355,272.5H212.5V130h30v112.5H355V272.5z`}))}var $ge=h(()=>{"use strict";d()});function Gge({text:e,className:t}){return i("div",{className:`timeCounter ${t}`,style:{marginTop:-6,fontWeight:"bold",fontFamily:"monospace",fontSize:11,position:"relative"}},e)}var Hge=h(()=>{"use strict";d()});function jge({time:e}){let t=IS({initialTime:e}),o=ef(t,ml.store.format==="human",ml.store.showSeconds),r=ml.store.showRoleColor?"":"usernameFont__71dd5 username__73ce9";return ml.store.showWithoutHover?i(Gge,{text:o,className:r}):i(ve,{text:o},({onMouseEnter:n,onMouseLeave:a})=>i("div",{onMouseEnter:n,onMouseLeave:a,role:"tooltip"},i(zge,null)))}var qge=h(()=>{"use strict";d();Kt();Ta();C();Pj();$ge();Hge()});function Mj(e,t,o){dh.set(e,{channelId:t,time:Date.now(),guildId:o})}function Wge(e){dh.delete(e)}var ml,dh,Nj,Kge,Pk,Pj=h(()=>{"use strict";d();j();Pe();O();Kt();Ta();R();C();Uge();qge();ml=M({format:{type:4,description:"Compact or human readable format:",options:[{label:"30:23:00:42",value:"stopwatch",default:!0},{label:"30d 23h 00m 42s",value:"human"}]},allCallTimers:{type:3,description:"Add call timer to all users in a server voice channel",restartNeeded:!0,default:!1},showWithoutHover:{type:3,description:"Always show the timer without needing to hover",restartNeeded:!0,default:!1},showRoleColor:{type:3,description:"Show the user's role color (if this plugin in enabled)",restartNeeded:!1,default:!1},trackSelf:{type:3,description:"Also track yourself",restartNeeded:!1,default:!1},showSeconds:{type:3,description:"Show seconds in the timer",restartNeeded:!1,default:!1},watchLargeGuilds:{type:3,description:"Track users in large guilds. This may cause lag if you're in a lot of large guilds with active voice users. Tested with up to 2000 active voice users with no issues.",restartNeeded:!0,default:!1}}),dh=new Map;Kge=!0,Pk=S({name:"CallTimer",description:"Add call timers for all users in voice channels and in the connection status.",tags:["Voice","Utility"],authors:[b.Ven,F.MaxHerbold,b.D3SOX],managedStyle:_ge,settings:ml,isModified:!0,startTime:0,interval:void 0,patches:[{find:"VOICE_PANEL}}",predicate:()=>ml.store.allCallTimers,replacement:[{match:/user:(\i).*?\.EMBEDDED.{0,25};(?=return 0!==(\i)\.length)/,replace:"$&$2.push($self.renderTimer($1.id));",predicate:()=>!ml.store.showWithoutHover},{match:/#{intl::GUEST_NAME_SUFFIX}\)\]\}\):""(?=.*?userId:(\i\.\i))/,replace:"$&,$self.renderTimer($1)",predicate:()=>ml.store.showWithoutHover}]},{find:'"RTCConnectionMenu"',replacement:{match:/("RTCConnectionMenu".{0,200}?lineClamp:1,children:)(\i)(?=,|}\))/,replace:"$1[$2,$self.renderConnectionTimer({ channelId: this?.props?.channel?.id })]"}}],flux:{VOICE_STATE_UPDATES({voiceStates:e}){let t=L.getCurrentUser().id;for(let o of e){let{userId:r,channelId:n,guildId:a}=o,s=r===t;if(!("oldChannelId"in o)&&!Kge&&!ml.store.watchLargeGuilds)continue;let{oldChannelId:l}=o;s&&n!==Nj&&(l=Nj,Nj=n??void 0),n!==l&&(n?Mj(r,n,a??null):l&&Wge(r))}Kge=!1},PASSIVE_UPDATE_V1(e){if(ml.store.watchLargeGuilds)return;let{voiceStates:t}=e;if(!t)return;let{guildId:o}=e;for(let[r,n]of dh)n.guildId===o&&(t.find(s=>s.userId===r)||Wge(r));for(let r of t){let{userId:n,channelId:a}=r;a&&(dh.has(n)?a!==dh.get(n)?.channelId&&Mj(n,a,o):Mj(n,a,o))}}},subscribeToAllGuilds(){let t=Object.values($e.getGuilds()).map(o=>o.id).reduce((o,r)=>({...o,[r]:{typing:!0}}),{});Q.dispatch({type:"GUILD_SUBSCRIPTIONS_FLUSH",subscriptions:t})},start(){ml.store.watchLargeGuilds&&this.subscribeToAllGuilds()},renderTimer(e){let t=dh.get(e);if(t?.time&&!(e===L.getCurrentUser().id&&!ml.store.trackSelf))return i(H,null,i(jge,{time:t.time}))},renderConnectionTimer({channelId:e}){return i(H,{noop:!0},i(this.ConnectionTimer,{channelId:e}))},ConnectionTimer:H.wrap(e=>{let t=dh.get(L.getCurrentUser().id)?.time,o=IS({initialTime:t});return t==null?null:i("p",{style:{margin:0,fontFamily:"var(--font-code)"}},ef(o,ml.store.format==="human"))},{noop:!0})})});var Qge=h(()=>{});function Eet(e){return Zge.store.colorEffects?e<50?"var(--text-muted)":e<75?"var(--yellow-330)":e<90?"var(--orange-330)":"var(--red-360)":"var(--primary-330)"}var Mk,Zge,Nk,Yge=h(()=>{"use strict";d();Qge();j();Pe();O();we();R();C();Mk=K("vc-charCounter-"),Zge=M({colorEffects:{type:3,description:"Enable yellow/red colouring as you get closer to the character limit",default:!0}});Nk=S({name:"CharacterCounter",description:"Adds a character counter to the chat input",authors:[b.thororen,b.creations],tags:["Utility"],settings:Zge,patches:[{find:".CREATE_FORUM_POST||",replacement:[{match:/(?<=,editorRef:(\i),.{0,200}textValue:(\i),editorHeight:\i,channelId:\i\.id\}\)),\i/,replace:",$self.renderCharCounter({editorRef:$1,text:$2})"}]},{find:"#{intl::PREMIUM_MESSAGE_LENGTH_UPSELL_TOOLTIP}",replacement:{match:/(?<=\.PREMIUM_UPSELL\);)(?=.{0,50}\.PREMIUM_UPSELL_VIEWED)/,replace:"return null;"}}],renderCharCounter:H.wrap(({editorRef:e,text:t})=>{let[o,r]=T(0),n=o>0&&(e?.current?.state?.focused??!1);if(G(()=>{let c=()=>{r(document.getSelection()?.toString()?.length??0)};return document.addEventListener("selectionchange",c),()=>document.removeEventListener("selectionchange",c)},[]),!t.length)return null;let s=(L.getCurrentUser().premiumType??0)===2?4e3:2e3,l=Eet(t.length/s*100);return i("div",{className:Mk("counter"),style:{color:l}},n&&i(f,null,i("span",{className:Mk("selected")},o),"/"),i("span",{className:Mk("count")},t.length),"/",i("span",{className:Mk("max")},s))},{noop:!0})})});var Det,Bk,Jge=h(()=>{"use strict";d();O();R();Det="https://raw.githubusercontent.com/ClearURLs/Rules/master/data.min.json",Bk=S({name:"ClearURLs",description:"Automatically removes tracking elements from URLs you send",dependencies:["MessageEventsAPI"],tags:["Privacy","Utility"],authors:[b.adryd,b.thororen],rules:[],async start(){await this.createRules()},stop(){this.rules=[]},onBeforeMessageSend(e,t){return this.cleanMessage(t)},onBeforeMessageEdit(e,t,o){return this.cleanMessage(o)},async createRules(){let e=await fetch(Det).then(t=>t.json());this.rules=[];for(let[t,o]of Object.entries(e.providers)){let r=new RegExp(o.urlPattern,"i"),n=o.rules?.map(l=>new RegExp(l,"i")),a=o.rawRules?.map(l=>new RegExp(l,"i")),s=o.exceptions?.map(l=>new RegExp(l,"i"));this.rules.push({name:t,urlPattern:r,rules:n,rawRules:a,exceptions:s})}},replacer(e){try{var t=new URL(e)}catch{return e}return t.searchParams.entries().next().done?e:(this.rules.forEach(({urlPattern:o,exceptions:r,rawRules:n,rules:a})=>{if(!o.test(t.href)||r?.some(c=>c.test(t.href)))return;let s=[];a&&t.searchParams.forEach((c,u)=>{a.some(p=>p.test(u))&&s.push(u)}),s.forEach(c=>t.searchParams.delete(c));let l=t.href;n?.forEach(c=>{l=l.replace(c,"")}),t=new URL(l)}),t.toString())},cleanMessage(e){/http(s)?:\/\//.test(e.content)&&(e.content=e.content.replace(/(https?:\/\/[^\s<]+[^<.,:;"'>)|\]\s])/g,t=>this.replacer(t)))}})});var Xge=h(()=>{});function Vge(e){let t=parseInt(e.substring(0,2),16)/255,o=parseInt(e.substring(2,4),16)/255,r=parseInt(e.substring(4,6),16)/255,n=Math.max(t,o,r),a=Math.min(t,o,r),s=n-a,l,c,u;return u=(n+a)/2,s===0?(l=0,c=0):(c=s/(1-Math.abs(2*u-1)),n===t?l=(o-r)/s%6:n===o?l=(r-t)/s+2:l=(t-o)/s+4,l*=60,l<0&&(l+=360)),c*=100,u*=100,{hue:l,saturation:c,lightness:u}}function e0e(e){let t=a=>a<=.03928?a/12.92:((a+.055)/1.055)**2.4,o=t(parseInt(e.substring(0,2),16)/255),r=t(parseInt(e.substring(2,4),16)/255),n=t(parseInt(e.substring(4,6),16)/255);return o*.2126+r*.7152+n*.0722}var Bj=h(()=>{"use strict";d()});function Oj(e){let{hue:t,saturation:o,lightness:r}=Vge(e);r0e(Rj,`:root { --theme-h: ${t}; --theme-s: ${o}%; --theme-l: ${r}%; }`)}async function o0e(e){Oj(e),Bet(await Met())}function n0e(){ph[Rj]?.remove(),ph[Lj]?.remove(),ph[Rj]=null,ph[Lj]=null}function Pet(e){return ph[e]||(ph[e]=bs(e,_p)),ph[e]}function r0e(e,t){let o=Pet(e);o.textContent=t}async function Met(){let e=document.querySelectorAll('link[rel="stylesheet"]');return(await Promise.all(Array.from(e,async o=>o.href?fetch(o.href).then(r=>r.text()):null))).filter(Boolean).join(` `)}function Bet(e){let t={};for(let[,n,a]of e.matchAll(Net))t[n]=parseFloat(a);let o=t["--neutral-2-hsl"],r=t["--neutral-69-hsl"];r0e(Lj,[`.theme-light { ${t0e(t,o)} }`,`.theme-dark { ${t0e(t,r)} }`].join(` `))}function t0e(e,t){return Object.entries(e).map(([o,r])=>{let n=r-t,a=n>=0?"+":"-";return`${o}: var(--theme-h) var(--theme-s) calc(var(--theme-l) ${a} ${Math.abs(n).toFixed(2)}%);`}).join(` `)}var Rj,Lj,ph,Net,Fj=h(()=>{"use strict";d();nl();we();Bj();Rj="vc-clientTheme-vars",Lj="vc-clientTheme-overrides",ph={};Net=/(--neutral-\d{1,3}?-hsl):.+?([\d.]+?)%;/g});function a0e(e){let t=e.toString(16).padStart(6,"0");V1.store.color=t,Oj(t)}function i0e(e){Ret({theme:e})}function s0e(){let e=ye([sf],()=>sf.theme),t=e==="light",o=t?"Dark":"Light",r=ye([f1],()=>f1.gradientPreset!=null),n=e0e(V1.store.color),a=!1,s=!0;return(t&&n<.26||!t&&n>.12)&&(a=!0),n<.26&&n>.12&&(s=!1),t&&n>.65&&(a=!0,s=!1),i("div",{className:Rk("settings")},i("div",{className:Rk("container")},i("div",{className:Rk("settings-labels")},i(Ot,null,"Theme Color"),i(U,null,"Add a color to your Discord client theme")),i(Pr,{color:parseInt(V1.store.color,16),onChange:a0e,showEyeDropper:!1,suggestedColors:Let})),(a||r)&&i(f,null,i(Nr,{className:z.top8},i(ta,null,"Your theme won't look good!"),a&&i(U,null,">"," Selected color won't contrast well with text"),r&&i(U,null,">"," Nitro themes aren't supported"),i("div",{className:Rk("buttons-container")},a&&s&&i(ue,{onClick:()=>i0e(o),color:ue.Colors.RED},"Switch to ",o," mode"),r&&i(ue,{onClick:()=>i0e(e),color:ue.Colors.RED},"Disable Nitro Theme")))))}function l0e(){return i(ue,{onClick:()=>a0e(3224376)},"Reset Theme Color")}var Ret,Rk,Let,c0e=h(()=>{"use strict";d();xc();We();Je();Bj();Fj();we();Wt();le();C();_j();Ret=Oe('type:"UNSYNCED_USER_SETTINGS_UPDATE','"system"==='),Rk=K("vc-clientTheme-"),Let=["#1E1514","#172019","#13171B","#1C1C28","#402D2D","#3A483D","#344242","#313D4B","#2D2F47","#322B42","#3C2E42","#422938","#b6908f","#bfa088","#d3c77d","#86ac86","#88aab3","#8693b5","#8a89ba","#ad94bb"]});var V1,Lk,_j=h(()=>{"use strict";d();Xge();j();O();R();c0e();Fj();V1=M({color:{type:6,default:"313338",component:s0e},resetColor:{type:6,component:l0e}}),Lk=S({name:"ClientTheme",authors:[b.Nuckyz],description:"Recreation of the old client theme experiment. Add a color to your Discord client theme",tags:["Appearance","Customisation"],settings:V1,startAt:"DOMContentLoaded",start:()=>o0e(V1.store.color),stop:n0e})});var Ok,u0e=h(()=>{"use strict";d();O();R();Ok=S({name:"ColorSighted",description:"Removes the colorblind-friendly icons from statuses, just like 2015-2017 Discord",authors:[b.lewisakura],tags:["Appearance","Accessibility"],patches:[{find:"Masks.STATUS_ONLINE",replacement:{match:/Masks\.STATUS_(?:IDLE|DND|STREAMING|OFFLINE)/g,replace:"Masks.STATUS_ONLINE"}},{find:".AVATAR_STATUS_MOBILE_16;",replacement:{match:/(fromIsMobile:\i=!0,.+?)status:(\i)/,replace:'$1status_$:$2="online"'}}]})});function Fet({settingKey:e}){let{allowLevel:t}=fh.use(["allowLevel"]),o=t[e];return i(Np,{value:o,onChange:(r,n)=>fh.store.allowLevel[e]=n,size:20},i(Y,{size:"sm"},e[0].toUpperCase()+e.slice(1)))}var gu,Oet,mh,_et,fh,Fk,d0e=h(()=>{"use strict";d();j();yt();Pe();cu();O();R();C();gu=()=>{},Oet={logDangerously:gu,log:gu,verboseDangerously:gu,verbose:gu,info:gu,warn:gu,error:gu,trace:gu,time:gu,fileOnly:gu},mh=new Set;_et=H.wrap(()=>i(go,{name:"Filter List",id:"filterList",description:"Always allow loggers of these types"},i("div",{style:{display:"flex",flexDirection:"row"}},Object.keys(fh.store.allowLevel).map(e=>i(Fet,{key:e,settingKey:e}))))),fh=M({disableLoggers:{type:3,description:"Disables Discords loggers",default:!1,restartNeeded:!0},disableSpotifyLogger:{type:3,description:"Disable the Spotify logger, which leaks account information and access token",default:!0,restartNeeded:!0},whitelistedLoggers:{type:0,description:"Semicolon (;) separated list of loggers to allow even if others are hidden",default:"GatewaySocket; Routing/Utils",multiline:!0,onChange(e){mh.clear(),e.split(";").map(t=>t.trim()).forEach(mh.add.bind(mh))}},allowLevel:{type:6,component:_et,default:{error:!0,warn:!1,trace:!1,log:!1,info:!1,debug:!1}}}),Fk=S({name:"ConsoleJanitor",description:"Disables annoying console messages/errors",authors:[b.Nuckyz,b.sadan],tags:["Developers","Console","Utility"],settings:fh,startAt:"Init",start(){mh.clear(),this.settings.store.whitelistedLoggers?.split(";").map(e=>e.trim()).forEach(mh.add.bind(mh))},Noop:gu,NoopLogger:()=>Oet,shouldLog(e,t){return mh.has(e)||fh.store.allowLevel[t]===!0},patches:[{find:"https://github.com/highlightjs/highlight.js/issues/2277",replacement:{match:/\(console.log\(`Deprecated.+?`\),/,replace:"("}},{find:'The "interpolate" function is deprecated in v10 (use "to" instead)',replacement:{match:/,console.warn\('react-spring: The "interpolate" function is deprecated in v10 \(use "to" instead\)'\)/,replace:""}},{find:'console.warn("Window state not initialized"',replacement:{match:/console\.warn\("Window state not initialized",\i\),/,replace:""}},{find:"is not a valid locale.",replacement:[{match:/\i\.error(?=\(`\$\{\i\} is not a valid locale.`)/,replace:"$self.Noop"}]},{find:'"AppCrashedFatalReport: getLastCrash not supported."',replacement:{match:/console\.log(?=\("AppCrashedFatalReport: getLastCrash not supported\."\))/,replace:"$self.Noop"}},{find:"RPCServer:WSS",replacement:{match:/\i\.error\(`Error: \$\{(\i)\.message\}/,replace:'!$1.message.includes("EADDRINUSE")&&$&'}},{find:"Tried getting Dispatch instance before instantiated",replacement:{match:/null==\i&&\i\.warn\("Tried getting Dispatch instance before instantiated"\),/,replace:""}},{find:"Unable to determine render window for element",replacement:{match:/console\.warn\("Unable to determine render window for element",\i\),/,replace:""}},{find:"failed to send analytics events",replacement:[{match:/console\.error\(`\[analytics\] failed to send analytics events query: \$\{\i\}`\)/,replace:""}]},{find:"Slow dispatch on",replacement:[{match:/\i\.totalTime>\d+?&&\i\.verbose\([`"]Slow dispatch on.{0,55}\);/,replace:""}]},{find:'"file-only"!==',predicate:()=>fh.store.disableLoggers,replacement:{match:/(?<=&&)(?=console)/,replace:"$self.shouldLog(arguments[0],arguments[1])&&"}},{find:'("Spotify")',predicate:()=>fh.store.disableSpotifyLogger,replacement:{match:/new \i\.\i\("Spotify"\)/,replace:"$self.NoopLogger()"}}]})});var Uj,Qw,p0e=h(()=>{d();Uj=class{value;next;constructor(t){this.value=t}},Qw=class{#e;#t;#o;constructor(){this.clear()}enqueue(t){let o=new Uj(t);this.#e?(this.#t.next=o,this.#t=o):(this.#e=o,this.#t=o),this.#o++}dequeue(){let t=this.#e;if(t)return this.#e=this.#e.next,this.#o--,this.#e||(this.#t=void 0),t.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#t=void 0,this.#o=0}get size(){return this.#o}*[Symbol.iterator](){let t=this.#e;for(;t;)yield t.value,t=t.next}*drain(){for(;this.#e;)yield this.dequeue()}}});function zj(e){let t=!1;if(typeof e=="object"&&({concurrency:e,rejectOnClear:t=!1}=e),m0e(e),typeof t!="boolean")throw new TypeError("Expected `rejectOnClear` to be a boolean");let o=new Qw,r=0,n=()=>{r0&&(r++,o.dequeue().run())},a=()=>{r--,n()},s=async(u,p,m)=>{let g=(async()=>u(...m))();p(g);try{await g}catch{}a()},l=(u,p,m,g)=>{let x={reject:m};new Promise(v=>{x.run=v,o.enqueue(x)}).then(s.bind(void 0,u,p,g)),rnew Promise((m,g)=>{l(u,m,g,p)});return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>o.size},clearQueue:{value(){if(!t){o.clear();return}let u=AbortSignal.abort().reason;for(;o.size>0;)o.dequeue().reject(u)}},concurrency:{get:()=>e,set(u){m0e(u),e=u,queueMicrotask(()=>{for(;r0;)n()})}},map:{async value(u,p){let m=Array.from(u,(g,x)=>this(p,g,x));return Promise.all(m)}}}),c}function m0e(e){if(!((Number.isInteger(e)||e===Number.POSITIVE_INFINITY)&&e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var f0e=h(()=>{d();p0e()});function Uet(){let e=Symbol(),t=null;return Object.defineProperty(Object.prototype,e,{get(){return t=this,""},configurable:!0}),vo.u(e),delete Object.prototype[e],t}async function h0e(){let e=new ie("LazyChunkLoader");if(g0e){e.log("Lazy chunks have already been loaded");return}let t=zj(50),o=new Map,r=/importScripts\(|self\.postMessage/;async function n(s,l=!0){if(o.has(s))return o.get(s);let c=()=>fetch(s).then(p=>p.text()).then(p=>r.test(p)),u=l?t(c):c();return o.set(s,u),u}try{let A=function(E){let N=!1;y(String(E)).finally(()=>N=!0),m.push(()=>N)};var a=A;e.log("Loading all chunks...");let s=new Set,l=new Set,c=new Set,{promise:u,resolve:p}=Promise.withResolvers(),m=[],g=xi(/(?:(?:Promise\.all\(\[)?((?:\i\.e\("?[^)]+?"?\),?)+?)(?:\]\))?)\.then\(\i(?:\.\i)?\.bind\(\i,"?([^)]+?)"?(?:,[^)]+?)?\)\)/g),x=xi(/(?:(?:Promise\.all\(\[)?((?:\i\.e\("?[^)]+?"?\),?)+?)(?:\]\))?)\.then\(\i\.bind\(\i,"?([^)]+?)"?\)\)/g),v=!1;async function y(E){let N=v=!1,B=E.matchAll(N?g:x),_=new Set,q=!1;await Promise.all(Array.from(B).map(async([,$,re])=>{let Z=$?.matchAll(kS).map(ae=>{let ge=Number(ae[1]);return Number.isNaN(ge)?ae[1]:String(ge)}).toArray()??[];if(Z.length===0)return;let ee=!1;for(let ae of Z){if(N){if(Z.length>1)throw new Error("Found multiple chunks in factory that loads the CSS debugging chunk");l.add(ae),ee=!0;break}if(!(vo.u(ae)==null||vo.u(ae)==="undefined.js")){if(await n(vo.p+vo.u(ae))){l.add(ae),ee=!0;continue}s.add(ae)}}if(!ee){let ae=Number(re);_.add([Z,Number.isNaN(ae)?re:String(ae)])}})),await Promise.all(Array.from(_).map(([$])=>Promise.all($.map(re=>vo.e(re)))));for(let[,$]of _)try{if(q){c.add($);continue}vo.m[$]&&vo($)}catch(re){if(re instanceof TypeError&&re.message.includes("reading 'nativeModules'"))continue;console.error(re)}setTimeout(()=>{m=m.filter($=>!$()),m.length===0&&p()},0)}D0.add(A);for(let E in vo.m)A(vo.m[E]);await u,D0.delete(A);for(let E of c)vo(E);let k=Uet();if(!k)throw new Error("Failed to get chunk map");let w=Object.keys(k);if(w.length===0)throw new Error("Failed to get all chunks");let I=w.filter(E=>!(s.has(E)||l.has(E)));await Promise.all(I.map(async E=>t(async()=>{await n(vo.p+vo.u(E),!1)||await vo.e(E)}))),e.log("Finished loading all chunks!"),g0e=!0}catch(s){e.log("A fatal error occurred:",s)}}var g0e,x0e=h(()=>{"use strict";d();He();id();le();le();f0e();g0e=!1});function $j(){function e(a,s=!1){let l=new Map;return function(...c){let u=String(c);if(l.has(u))return l.get(u);let p=nf(a(...c),{topLevelOnly:s}),m=(()=>{switch(p.length){case 0:return null;case 1:return p[0];default:let g=[...new Set(p)];return g.length>1&&console.warn(`Warning: This filter matches ${g.length} exports. Make it more specific! `,g),p[0]}})();return m&&u&&l.set(u,m),m}}function t(a){let s=new Map;return function(l){let c=String(l);if(s.has(c))return s.get(c);let u;try{u=a(l)}catch{}return u&&s.set(c,u),u}}let o,r=e(a=>a),n=e(Re.byProps);return{...Object.fromEntries(Object.keys(tf).map(a=>[a,{getter:()=>tf[a]}])),wp:y3,wpc:{getter:()=>cc},wreq:{getter:()=>vo},wpPatcher:{getter:()=>Vencord.WebpackPatcher},wpInstances:{getter:()=>Vencord.WebpackPatcher.allWebpackInstances},wpsearch:u1,wpex:CS,wpexs:a=>CS(sd(a)),loadLazyChunks:h0e,find:r,findAll:nf,findByProps:n,findAllByProps:(...a)=>nf(Re.byProps(...a)),findByCode:e(Re.byCode),findCssClasses:e(Re.byClassNames,!0),findAllByCode:a=>nf(Re.byCode(a)),findComponentByCode:e(Re.componentByCode),findAllComponentsByCode:(...a)=>nf(Re.componentByCode(...a)),findExportedComponent:(...a)=>n(...a)[a[0]],findStore:t(M0),PluginsApi:{getter:()=>Vencord.Plugins},plugins:{getter:()=>Vencord.Plugins.plugins},Settings:{getter:()=>Vencord.Settings},Api:{getter:()=>Vencord.Api},Util:{getter:()=>Vencord.Util},reload:()=>location.reload(),restart:ai,canonicalizeMatch:xi,canonicalizeReplace:pS,canonicalizeReplacement:mS,runtimeHashMessageKey:k0,fakeRender:(a,s)=>{let l=o?.deref(),c=l?.closed===!1?l:window.open("about:blank","Fake Render","popup,width=500,height=500");o=new WeakRef(c),c.focus();let u=c.document;u.body.style.margin="1em",c.prepared||(c.prepared=!0,[...document.querySelectorAll("style"),...document.querySelectorAll("link[rel=stylesheet]")].forEach(m=>{let g=m.cloneNode(!0);m.parentElement?.tagName==="HEAD"?u.head.append(g):g.id?.startsWith("vencord-")||g.id?.startsWith("vcd-")?u.documentElement.append(g):u.body.append(g)}));let p=Bi(u.body.appendChild(document.createElement("div")));p.render(V.createElement(a,s)),u.addEventListener("close",()=>p.unmount(),{once:!0})},preEnable:a=>(Vencord.Settings.plugins[a]??={enabled:!0}).enabled=!0,channel:{getter:()=>zo(),preload:!1},channelId:{getter:()=>Fe.getChannelId(),preload:!1},guild:{getter:()=>Ss(),preload:!1},guildId:{getter:()=>ao.getGuildId(),preload:!1},me:{getter:()=>L.getCurrentUser(),preload:!1},meId:{getter:()=>L.getCurrentUser().id,preload:!1},messages:{getter:()=>lt.getMessages(Fe.getChannelId()),preload:!1},openModal:{getter:()=>ce},openModalLazy:{getter:()=>na},Stores:{getter:()=>Object.fromEntries(ad)},setExperiment:(a,s)=>{Q.dispatch({type:"EXPERIMENT_OVERRIDE_BUCKET",experimentId:a,experimentBucket:s})},switchBranch:zet}}function v0e(e,t,o){let r=t.getter();if(!r||t.preload===!1)return r;function n(s){if(s[Zc])o?r[Zc]():r[kp];else if(s.$$vencordGetWrappedComponent)return o?s.$$vencordGetWrappedComponent():s;return s}let a=n(r);if(typeof a=="object"&&a!==null){let s=Object.getOwnPropertyDescriptors(a);for(let l in s){if(a[l]==null)continue;let c=s[l];if(c.writable===!0||c.set!=null){let u=a[l],p=n(u);p!=null&&u!==p&&(a[l]=p)}}}return a!=null&&(_k(window.shortcutList,e,{value:a}),_k(window,e,{value:a})),a}var zet,_k,$et,Uk,y0e=h(()=>{"use strict";d();x0e();O();_e();X2();Er();Be();hd();id();R();le();le();C();zet=e=>()=>{throw new Error("This function only works on vesktop and equibop.")},_k=(e,t,o)=>(Object.hasOwn(o,"value")&&(o.writable=!0),Object.defineProperty(e,t,{configurable:!0,enumerable:!0,...o}));$et=of.then(()=>lr(1e3)),Uk=S({name:"ConsoleShortcuts",description:"Adds shorter Aliases for many things on the window. Run `shortcutList` for a list.",authors:[b.Ven],tags:["Developers","Console","Shortcuts","Utility"],startAt:"Init",patches:[{find:"&&this.initializeIfNeeded()",replacement:[{match:/\i&&this\.initializeIfNeeded\(\)/,replace:"$&,Reflect.defineProperty(this,Symbol.toStringTag,{value:this.getName(),configurable:!0,writable:!0,enumerable:!1})"}]}],start(){let e=$j();window.shortcutList={};for(let[t,o]of Object.entries(e))"getter"in o?(_k(window.shortcutList,t,{get:()=>v0e(t,o,!0)}),_k(window,t,{get:()=>window.shortcutList[t]})):(window.shortcutList[t]=o,window[t]=o);this.eagerLoad(!1),VencordNative.pluginHelpers.ConsoleShortcuts.initDevtoolsOpenEagerLoad()},async eagerLoad(e){await $et;let t=$j();for(let[o,r]of Object.entries(t))if(!(!Object.hasOwn(r,"getter")||r.preload===!1))try{v0e(o,r,e)}catch{}},stop(){delete window.shortcutList;for(let e in $j())delete window[e]}})});function Het(e,t){let{id:o,name:r}=e.dataset;if(!o)return t?Get(r):`:${r}:`;let n=new URL(e.firstChild.src),a=n.searchParams.get("animated")==="true",s=n.pathname.endsWith(".gif");return`<${a||s?"a":""}:${r.replace(/~\d+$/,"")}:${o}>`}var Get,b0e,zk,S0e=h(()=>{"use strict";d();j();ot();O();_e();R();le();C();({convertNameToSurrogate:Get}=Ae("convertNameToSurrogate"));b0e=M({copyUnicode:{type:3,description:"Copy the raw unicode character instead of :name: for default emojis (\u{1F47D})",default:!0}}),zk=S({name:"CopyEmojiMarkdown",description:"Allows you to copy emojis as formatted string (<:blobcatcozy:1026533070955872337>)",tags:["Emotes","Utility"],authors:[b.HappyEnderman,b.Vishnya],settings:b0e,contextMenus:{"expression-picker"(e,{target:t}){t.dataset.type==="emoji"&&e.push(i(P.MenuItem,{id:"vc-copy-emoji-markdown",label:"Copy Emoji Markdown",action:()=>{ft(Het(t,b0e.store.copyUnicode),"Success! Copied emoji markdown.")},leadingAccessory:{type:"icon",icon:wa}}))}}})});var w0e=h(()=>{});var jet,$k,A0e=h(()=>{"use strict";d();w0e();Pe();ot();O();_e();R();C();jet=()=>i("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M21.7 5.3a1 1 0 0 1 0 1.4l-12 12a1 1 0 0 1-1.4 0l-6-6a1 1 0 1 1 1.4-1.4L9 16.58l11.3-11.3a1 1 0 0 1 1.4 0Z"})),$k=S({name:"CopyFileContents",description:"Adds a button to text file attachments to copy their contents",tags:["Utility"],authors:[b.Obsidian,b.Nuckyz],patches:[{find:"#{intl::PREVIEW_BYTES_LEFT}",replacement:[{match:/fileContents:(\i),bytesLeft:(\i)\}\):null,/,replace:"$&$self.addCopyButton({fileContents:$1,bytesLeft:$2}),"},{match:/align:"\i"\}\),(?=\(0,\i\.jsx\)\(\i,\{wordWrap:\i,setWordWrap:\i)/,replace:"$&$self.addCopyButton(arguments[0]),"}]}],addCopyButton:H.wrap(({fileContents:e,bytesLeft:t})=>{let[o,r]=T(!1);return i(ve,{text:o?"Copied!":t>0?"File too large to copy":"Copy File Contents"},n=>i("div",{...n,className:"vc-cfc-button",role:"button",onClick:()=>{!o&&t<=0&&(ft(e),r(!0),setTimeout(()=>r(!1),2e3))}},o?i(jet,null):t>0?i(nS,{width:18,height:18,color:"var(--channel-icon)"}):i(wa,{width:18,height:18})))},{noop:!0})})});function Yet(e){return e.features.has("MORE_STICKERS")&&e.premiumTier===3?120:k0e[e.premiumTier]??k0e[0]}function Jet(e){return Math.max(T0(e,"MORE_EMOJI")?200:50,50+(e.premiumFeatures?.additionalEmojiSlots??0))}function C0e(e,t){return e.t==="Emoji"?`${location.protocol}//${window.GLOBAL_ENV.CDN_HOST}/emojis/${e.id}.webp?size=${t}&lossless=true&animated=true`:`${window.GLOBAL_ENV.MEDIA_PROXY_ENDPOINT}/stickers/${e.id}.${Ket[e.format_type]}?size=${t}&lossless=true&animated=true`}async function T0e(e){let t=ra.getStickerById(e);if(t)return t;let{body:o}=await mt.get({url:Gt.Endpoints.STICKER(e)});return Q.dispatch({type:"STICKER_FETCH_SUCCESS",sticker:o}),o}async function Xet(e,t){let o=new FormData;o.append("name",t.name),o.append("tags",t.tags),o.append("description",t.description),o.append("file",await I0e(t));let{body:r}=await mt.post({url:Gt.Endpoints.GUILD_STICKER_PACKS(e),body:o});Q.dispatch({type:"GUILD_STICKERS_CREATE_SUCCESS",guildId:e,sticker:{...r,user:L.getCurrentUser()}})}async function Vet(e,t){let o=await I0e(t),r=await new Promise(n=>{let a=new FileReader;a.onload=()=>n(a.result),a.readAsDataURL(o)});return Wet({guildId:e,name:t.name.split("~")[0],image:r})}function ett(e){let t=L.getCurrentUser().id;return Object.values($e.getGuilds()).filter(o=>{if(!(o.ownerId===t||(ht.getGuildPermissions({id:o.id})&ct.CREATE_GUILD_EXPRESSIONS)===ct.CREATE_GUILD_EXPRESSIONS))return!1;if(e.t==="Sticker"){let c=Yet(o),u=ra.getStickersByGuildId(o.id);return!u||u.lengtho.name.localeCompare(r.name))}async function I0e(e){let t=e.t==="Sticker"?Zet:Qet;for(let o=4096;o>=16;o/=2){let r=C0e(e,o),n=await fetch(r);if(!n.ok)throw new Error(`Failed to fetch ${r} - ${n.status}`);let a=await n.blob();if(a.size<=t)return a}throw new Error(`Failed to fetch ${e.t} within size limit of ${t/1e3}kB`)}async function ttt(e,t){try{t.t==="Sticker"?await Xet(e,t):await Vet(e,t),D.show({message:`Successfully cloned ${t.name} to ${$e.getGuild(e)?.name??"your server"}!`,type:D.Type.SUCCESS,id:D.genId()})}catch(o){let r="Something went wrong (check console!)";try{r=JSON.parse(o.text).message}catch{}new ie("ExpressionCloner").error("Failed to clone",t.name,"to",e,o),D.show({message:"Failed to clone: "+r,type:D.Type.FAILURE,id:D.genId()})}}function rtt({data:e}){let[t,o]=V.useState(!1),[r,n]=V.useState(e.name),[a,s]=V.useReducer(c=>c+1,0),l=V.useMemo(()=>ett(e),[e.id,a]);return i(f,null,i(oe,{tag:"h5"},"Custom Name"),i(Cd,{initialValue:r,onChange:c=>{e.name=c,n(c)},validate:c=>e.t==="Emoji"&&c.length>2&&c.length<32&&ntt.test(c)||e.t==="Sticker"&&c.length>2&&c.length<30||"Name must be between 2 and 32 characters and only contain alphanumeric characters"}),i("div",{style:{display:"flex",flexWrap:"wrap",gap:"1em",padding:"1em 0.5em",justifyContent:"center",alignItems:"center"}},l.map(c=>i(ve,{key:c.id,text:c.name},({onMouseLeave:u,onMouseEnter:p})=>i("div",{onMouseLeave:u,onMouseEnter:p,role:"button","aria-label":"Clone to "+c.name,"aria-disabled":t,style:{borderRadius:"50%",backgroundColor:"var(--background-base-lower)",display:"inline-flex",justifyContent:"center",alignItems:"center",width:"4em",height:"4em",cursor:t?"not-allowed":"pointer",filter:t?"brightness(50%)":"none"},onClick:t?void 0:async()=>{o(!0),ttt(c.id,e).finally(()=>{s(),o(!1)})}},c.icon?i("img",{"aria-hidden":!0,style:{borderRadius:"50%",width:"100%",height:"100%"},src:at.getGuildIconURL({id:c.id,icon:c.icon,canAnimate:!0,size:512}),alt:c.name}):i(U,{style:{fontSize:ott(ya(c)),width:"100%",overflow:"hidden",whiteSpace:"nowrap",textAlign:"center",cursor:t?"not-allowed":"pointer"}},ya(c)))))))}function Gk(e,t){return i(P.MenuItem,{id:"emote-cloner",key:"emote-cloner",label:`Clone ${e}`,leadingAccessory:{type:"icon",icon:Yc},action:()=>na(async()=>{let o=await t(),r={t:e,...o},n=C0e(r,128);return a=>i(be,{...a,title:i(pe,{gap:"0.5em",alignItems:"center"},i("img",{role:"presentation","aria-hidden":!0,src:n,alt:"",height:24,width:24}),i(Y,{tag:"h3",size:"md",weight:"medium"},"Clone ",r.name))},i(rtt,{data:r}))})})}function E0e(e){let t=new URL(e);return t.pathname.endsWith(".gif")||t.searchParams.get("animated")==="true"}var Wet,Ket,k0e,Qet,Zet,ott,ntt,itt,att,ev,Gj=h(()=>{"use strict";d();Fo();j();yt();Q1();Lt();We();ot();Je();O();_e();He();R();co();le();C();Wet=Oe(".GUILD_EMOJIS(","EMOJI_UPLOAD_START"),Ket={1:"png",2:"png",3:"json",4:"gif"},k0e={0:5,1:15,2:30,3:60},Qet=256*1024,Zet=512*1024;ott=e=>[20,20,18,18,16,14,12][e.length]??4,ntt=/^\w+$/i;itt=(e,t)=>{let{favoriteableId:o,itemHref:r,itemSrc:n,favoriteableType:a}=t??{};if(!o)return;let s=(()=>{switch(a){case"emoji":let l=t.message.content.match(RegExp(`|https://cdn\\.discordapp\\.com/emojis/${o}\\.`)),c=t.message.reactions.find(m=>m.emoji.id===o);if(!l&&!c)return;let u=(l&&l[1])??c?.emoji.name??"FakeNitroEmoji";return Gk("Emoji",()=>({id:o,name:u,isAnimated:E0e(r??n)}));case"sticker":return t.message.stickerItems.find(m=>m.id===o)?.format_type===3?void 0:Gk("Sticker",()=>T0e(o))}})();s&&wt("copy-link",e)?.push(s)},att=(e,t)=>{let{id:o,name:r,type:n}=t?.target?.dataset??{};if(o)if(n==="emoji"&&r){let a=t.target.firstChild;e.push(Gk("Emoji",()=>({id:o,name:r,isAnimated:a&&E0e(a.src)})))}else n==="sticker"&&!t.target.className?.includes("lottieCanvas")&&e.push(Gk("Sticker",()=>T0e(o)))};oo("ExpressionCloner","EmoteCloner");ev=S({name:"ExpressionCloner",description:"Allows you to clone Emotes & Stickers to your own server (right click them)",tags:["Emotes","Servers"],searchTerms:["StickerCloner","EmoteCloner","EmojiCloner"],authors:[b.Ven,b.Nuckyz],contextMenus:{message:itt,"expression-picker":att}})});function D0e(e){return e.format_type===4?`https:${window.GLOBAL_ENV.MEDIA_PROXY_ENDPOINT}/stickers/${e.id}.gif?size=512&lossless=true`:`https://${window.GLOBAL_ENV.CDN_HOST}/stickers/${e.id}.${stt[e.format_type]}?size=512&lossless=true`}function P0e(e,t){return i(f,null,i(P.MenuGroup,null,i(P.MenuItem,{id:"vc-copy-sticker-link",key:"vc-copy-sticker-link",label:"Copy Sticker Link",leadingAccessory:{type:"icon",icon:sn},action:()=>ft(D0e(e),"Link copied!")}),i(P.MenuItem,{id:"vc-open-sticker-link",key:"vc-open-sticker-link",label:"Open Sticker Link",leadingAccessory:{type:"icon",icon:sn},trailingIndicator:{type:"icon",icon:GU},action:()=>VencordNative.native.openExternal(D0e(e))})),t&&i(P.MenuSeparator,null))}var stt,ltt,ctt,Hk,M0e=h(()=>{"use strict";d();Jt();ot();Gj();O();_e();R();C();stt=[,"png","png","json","gif"];ltt=(e,{favoriteableId:t,favoriteableType:o,message:r})=>{if(!t||o!=="sticker")return;let n=r.stickerItems.find(a=>a.id===t);n?.format_type&&e.splice(-1,0,P0e(n,!1))},ctt=(e,t)=>{let o=t?.target?.dataset?.id;if(!o||t.target.className?.includes("lottieCanvas"))return;let r=ra.getStickerById(o);r&&e.push(P0e(r,Ve(ev.name)))},Hk=S({name:"CopyStickerLinks",description:"Adds the ability to copy & open Sticker links",tags:["Emotes","Utility"],authors:[b.Ven,b.Byeoon],contextMenus:{message:ltt,"expression-picker":ctt}})});var utt,jk,N0e=h(()=>{"use strict";d();ot();mi();O();R();C();utt=(e,{user:t})=>{t&&e.push(i(P.MenuItem,{id:"vc-copy-user-url",label:"Copy User URL",action:()=>po(``),icon:sn,leadingAccessory:{type:"icon",icon:sn}}))},jk=S({name:"CopyUserURLs",authors:[b.castdrian],description:"Adds a 'Copy User URL' option to the user context menu.",tags:["Utility","Friends"],contextMenus:{"user-context":utt}})});var hu,dtt,ptt,Hj,B0e,jj,qj,qk,R0e=h(()=>{"use strict";d();on();Fa();j();O();He();R();ru();le();C();hu=new ie("CrashHandler"),{ModalStack:dtt,DraftManager:ptt}=ln(()=>{let[e,t]=h3(Re.byProps("pushLazy","popAll"),Re.byProps("clearDraft","saveDraft"));return{ModalStack:e,DraftManager:t}}),Hj=M({attemptToPreventCrashes:{type:3,description:"Whether to attempt to prevent Discord crashes.",default:!0},attemptToNavigateToHome:{type:3,description:"Whether to attempt to navigate to the home when preventing Discord crashes.",default:!1}}),B0e=!1,jj=!1,qj=!0,qk=S({name:"CrashHandler",description:"Utility plugin for handling and possibly recovering from crashes without a restart",authors:[b.Nuckyz],tags:["Utility","Developers"],enabledByDefault:!0,settings:Hj,patches:[{find:"#{intl::ERRORS_UNEXPECTED_CRASH}",replacement:{match:/this\.setState\((.+?)\)/,replace:"$self.handleCrash(this,$1);"}}],handleCrash(e,t){Le.del("KeepCurrentChannel_previousData"),e.setState(t),!jj&&(jj=!0,setTimeout(()=>{try{if(!qj){try{At({color:"#eed202",title:"Discord has crashed!",body:"Awn :( Discord has crashed two times rapidly, not attempting to recover.",noPersist:!0})}catch{}return}qj=!1,setTimeout(()=>qj=!0,1e3)}catch{}try{B0e||(B0e=!0,dw("Uh oh, Discord has just crashed... but good news, there is a Equicord update available that might fix this issue! Would you like to update now?",!0))}catch{}try{Hj.store.attemptToPreventCrashes&&this.handlePreventCrash(e)}catch(o){hu.error("Failed to handle crash",o)}},1))},handlePreventCrash(e){try{At({color:"#eed202",title:"Discord has crashed!",body:"Attempting to recover...",noPersist:!0})}catch{}try{let t=Fe.getChannelId();for(let o in yo)Number.isNaN(Number(o))&&ptt.clearDraft(t,yo[o])}catch(t){hu.debug("Failed to clear drafts.",t)}try{dd.closeExpressionPicker()}catch(t){hu.debug("Failed to close expression picker.",t)}try{Q.dispatch({type:"CONTEXT_MENU_CLOSE"})}catch(t){hu.debug("Failed to close open context menu.",t)}try{dtt.popAll()}catch(t){hu.debug("Failed to close old modals.",t)}try{ir()}catch(t){hu.debug("Failed to close all open modals.",t)}try{Q.dispatch({type:"USER_PROFILE_MODAL_CLOSE"})}catch(t){hu.debug("Failed to close user popout.",t)}try{Q.dispatch({type:"LAYER_POP_ALL"})}catch(t){hu.debug("Failed to pop all layers.",t)}try{Q.dispatch({type:"DEV_TOOLS_SETTINGS_UPDATE",settings:{displayTools:!1,lastOpenTabId:"analytics"}})}catch(t){hu.debug("Failed to close DevTools.",t)}if(Hj.store.attemptToNavigateToHome)try{Yt.transitionToGuild("@me")}catch(t){hu.debug("Failed to navigate to home",t)}setImmediate(()=>jj=!1);try{e.setState({error:null,info:null})}catch(t){hu.debug("Failed to update crash handler component.",t)}}})});var L0e=h(()=>{});var O0e=h(()=>{});function Wk({children:e,renderContent:t,className:o,initialExpanded:r=!1}){let[n,a]=T(r),s=n?IU:r1;return i(Ht,{"data-expanded":n,className:X("vc-expandable-card",o)},i(eo,{className:"vc-expandable-card-header",onClick:()=>a(l=>!l)},e,i(s,{className:"vc-expandable-card-icon"})),n?i("div",{className:"vc-expandable-card-content"},i(t,null)):null)}var Wj=h(()=>{"use strict";d();O0e();Be();C();Qn();ot()});function F0e(){let{tagsList:e}=Bf.use(["tagsList"]);return i("section",{className:z.top8},i(Y,{size:"md",weight:"semibold"},"Registered Tags"),i(pe,{flexDirection:"column",gap:"0.5em",className:z.top8},Object.values(e).map(t=>i(Ht,{key:t.name,className:"vc-customCommands-card"},i(U,{size:"md",weight:"medium"},t.name),i(de,{variant:"secondary",size:"iconOnly",onClick:()=>Zw(t)},i(Vi,{"aria-label":"Edit Tag",width:20,height:20})),i(de,{variant:"dangerSecondary",size:"iconOnly",onClick:()=>tv(t.name)},i(hr,{"aria-label":"Delete Tag",width:20,height:20})))),i(de,{onClick:()=>Zw()},"Create Tag")))}var _0e=h(()=>{"use strict";d();yt();Tt();Qn();Lt();ot();Ja();Je();Kj();Kk()});function Qk(){return Object.values(Bf.store.tagsList)}function Zk(e){return Bf.store.tagsList[e]}function U0e(e){Fp(e.name),Bf.store.tagsList[e.name]=e,Qj(e)}function tv(e){delete Bf.store.tagsList[e],Fp(e)}var Bf,Kk=h(()=>{"use strict";d();yr();j();R();Yk();_0e();Bf=M({tagsList:{type:7,description:"",default:{}},tagComponent:{type:6,component:F0e}})});function Zw(e={name:"",message:""}){ce(t=>i(mtt,{initialValue:e,modalProps:t}))}function mtt({initialValue:e,modalProps:t}){let[o,r]=T(e.name),[n,a]=T(e.message.replaceAll("\\n",` `)),s=!!e.name,l=Zj(n),c=l.some(m=>m.name==="ephemeral"),u=o!==e.name&&Zk(o),p=c?'The argument name "ephemeral" is reserved and cannot be used.':u?`A tag with the name "${o}" already exists and will be overwritten.`:void 0;return i(be,{...t,title:s?"Edit Tag":"Create New Tag",subtitle:s?"Edit your custom command.":"Create a new tag which will be registered as a slash command.",actions:[{text:"Cancel",variant:"secondary",onClick:t.onClose},{text:s?"Save":"Create",variant:"primary",onClick:()=>{s&&e.name!==o&&tv(e.name),U0e({name:o,message:n}),t.onClose()},disabled:!o||!n||c}],notice:p?{message:p,type:"critical"}:void 0},i(pe,{flexDirection:"column",gap:12},i("section",null,i(Ot,null,"Name"),i(Te,{value:o,onChange:r,placeholder:"greet"})),i("section",null,i(Ot,null,"Response"),i(Ea,{value:n,onChange:a,placeholder:z0e,autosize:!0})),l.length>0&&i("section",null,i(Ot,null,"Detected Arguments"),i(U,null,i("ul",null,l.map(m=>i("li",{key:m.name},"\u2014 ",i("b",null,m.name),m.defaultValue?` (default: ${m.defaultValue})`:""))))),i(Wk,{renderContent:()=>i(pe,{flexDirection:"column",gap:12},i(U,null,"Your response can include variables wrapped in double curly braces which will become command arguments, for example ",i(rh,null,"Hello {{user}}"),"."),i(U,null,"You can specify arguments with default values by using an equals sign, for example ",i(rh,null,"Hello {{user = pal}}"),"."),i("section",null,i(U,null,i("b",null,"Example Command response:")," ",i(rh,null,z0e)),i(U,null,i("b",null,"Example usage:")," ",i(rh,null,"/greet user:@Clyde")),i(U,null,i("b",null,"Example output:")," ",i(rh,null,"Hello @Clyde! I am feeling great."))))},i(pe,{alignItems:"center",gap:8},i(gi,{color:"var(--text-muted)",height:16,width:16}),"View Arguments guide"))))}var z0e,Kj=h(()=>{"use strict";d();bd();Wj();Lt();We();ot();Je();C();Yk();Kk();z0e="Hello {{user}}! I am feeling {{mood = great}}."});function Zj(e){let t=[];for(let[,o]of e.matchAll($0e)){let[r,n]=o.split("=").map(a=>a.trim());r&&(t.some(a=>a.name===r)||t.push({name:r.toLowerCase(),defaultValue:n??null}))}return t}function Qj(e){let t=Zj(e.message);E1({name:e.name,description:e.name,inputType:0,options:[...t.map(o=>({name:o.name,description:o.name,type:3,required:o.defaultValue===null})),{name:"ephemeral",description:"Whether the response should only be visible to you",type:5,required:!1}],execute:async(o,{channel:r})=>{let n=St(o,"ephemeral",!1),a=e.message.replace($0e,(l,c)=>{let[u,p]=c.split("=").map(m=>m.trim());return St(o,u,null)??p??l}).replaceAll("\\n",` `);(n?Ft:or)(r.id,{content:a},!1,fo.getSendMessageOptionsForReply(Pa.getPendingReply(r.id))),Q.dispatch({type:"DELETE_PENDING_REPLY",channelId:r.id})},[ftt]:!0},"CustomCommands")}var ftt,$0e,Jk,Yk=h(()=>{"use strict";d();L0e();yr();j();O();_e();R();C();Kj();Kk();ftt=Symbol("CustomCommands"),$0e=/{{(.+?)}}/g;oo("CustomCommands","MessageTags");Jk=S({name:"CustomCommands",description:"Allows you to create custom slash commands / tags",dependencies:["CommandsAPI"],searchTerms:["MessageTags"],authors:[b.Ven,b.Luna],tags:["Commands","Customisation","Utility"],settings:Bf,start(){Qk().forEach(Qj)},stop(){Qk().forEach(e=>Fp(e.name))},commands:[{name:"tags",description:"Manage all custom commands",inputType:0,options:[{name:"create",description:"Create a new tag",type:1},{name:"list",description:"List all your tags",type:1,options:[]},{name:"delete",description:"Remove a tag by name",type:1,options:[{name:"tag-name",description:"The name of the tag",type:3,required:!0}]}],async execute(e,t){switch(e[0].name){case"create":{Zw();break}case"delete":{let o=St(e[0].options,"tag-name","");if(!Zk(o))return Ft(t.channel.id,{content:`A Tag with the name **${o}** does not exist!`});tv(o),Ft(t.channel.id,{content:`Successfully deleted the tag **${o}**!`});break}case"list":{let o=Qk().map(r=>`\`${r.name}\`: ${r.message.slice(0,72).replaceAll("\\n"," ")}${r.message.length>72?"...":""}`).join(` `);Ft(t.channel.id,{content:o||"Woops! There are no tags yet, use `/tags create` to create one!"});break}}}}]})});var G0e=h(()=>{});function gtt(e){return/^\d{16,21}$/.test(e)?!0:"Must be a valid Discord ID."}function htt(){return fl.store.type!==1}function xtt(e){return!htt()&&!/https?:\/\/(www\.)?(twitch\.tv|youtube\.com)\/\w+/.test(e)?"Streaming link must be a valid URL.":e&&e.length>512?"Streaming link must be not longer than 512 characters.":!0}function Vk(e){return e?parseInt(e,10):0}function eC(e){return isNaN(e)?"Must be a number.":e<0?"Must be a positive number.":!0}function ov(e){return e&&!/^https?:\/\/.+/.test(e)?"Must be a valid URL.":!0}function H0e(e){return/https?:\/\/(cdn|media)\.discordapp\.(com|net)\//.test(e)?"Don't use a Discord link. Use an Imgur image link instead.":/https?:\/\/(?!i\.)?imgur\.com\//.test(e)?"Imgur link must be a direct link to the image (e.g. https://i.imgur.com/...). Right click the image and click 'Copy image address'":/https?:\/\/(?!media\.)?tenor\.com\//.test(e)?"Tenor link must be a direct link to the image (e.g. https://media.tenor.com/...). Right click the GIF and click 'Copy image address'":!0}function Xp(e){let[t,o]=e.data;return i("div",{className:Rf("pair")},i(Yw,{...t}),i(Yw,{...o}))}function Yw({settingsKey:e,label:t,disabled:o,isValid:r,transform:n}){let[a,s]=T(fl.store[e]??""),[l,c]=T(null);function u(p){n&&(p=n(p));let m=r?.(p)??!0;s(p),c(wc(m)),m===!0&&(fl.store[e]=p,Jj())}return i("div",{className:Rf("single",{disabled:o})},i(oe,{tag:"h5"},t),i(Te,{type:"text",placeholder:"Enter a value",value:a,onChange:u,disabled:o}),l&&i(vi,{className:Rf("error"),variant:"text-sm/normal"},l))}function j0e({settingsKey:e,label:t,options:o,disabled:r}){return i("div",{className:Rf("single",{disabled:r})},i(oe,{tag:"h5"},t),i(qt,{placeholder:"Select an option",options:o,maxVisibleItems:5,closeOnSelect:!0,select:n=>{fl.store[e]=n,Jj()},isSelected:n=>n===fl.store[e],serialize:n=>String(n),isDisabled:r}))}function vtt(){let{config:e,...t}=fl.store;return t}function ytt({onLoad:e}){let[t]=Ro(async()=>await Le.get(Yj)??[],{fallbackValue:[]}),[o,r]=T(null),[n,a]=T(""),[s,l]=T(""),c=o??t;async function u(){let g=n.trim();if(!g)return;let x=[...c.filter(v=>v.name!==g),{name:g,config:vtt()}].sort((v,y)=>v.name.localeCompare(y.name));await Le.set(Yj,x),r(x),l(g),ne(`Saved preset ${g}.`,D.Type.SUCCESS)}function p(){let g=c.find(x=>x.name===s);g&&(Object.assign(fl.store,g.config),e(),Jj(),ne(`Loaded preset ${g.name}.`,D.Type.SUCCESS))}async function m(){let g=c.filter(x=>x.name!==s);g.length!==c.length&&(await Le.set(Yj,g),r(g),l(""),ne(`Deleted preset ${s}.`,D.Type.SUCCESS))}return i("div",{className:Rf("presets")},i(oe,{tag:"h5"},"Presets"),i("div",{className:Rf("preset-create")},i(Te,{type:"text",placeholder:"Preset name",value:n,onChange:a}),i(ue,{disabled:!n.trim(),onClick:u},"Save")),c.length?i("div",{className:Rf("preset-actions")},i(qt,{placeholder:"Select a preset",options:c.map(g=>({label:g.name,value:g.name})),closeOnSelect:!0,select:l,isSelected:g=>g===s,serialize:String}),i(ue,{disabled:!s,onClick:p},"Load"),i(ue,{color:ue.Colors.RED,disabled:!s,onClick:m},"Delete")):i(vi,{variant:"text-sm/normal"},"No saved presets yet."))}function btt(){let{type:e,timestampMode:t}=fl.use(["type","timestampMode"]);return i(f,null,i(j0e,{settingsKey:"type",label:"Activity Type",options:[{label:"Playing",value:0,default:!0},{label:"Streaming",value:1},{label:"Listening",value:2},{label:"Watching",value:3},{label:"Competing",value:5}]}),i(Xp,{data:[{settingsKey:"appID",label:"Application ID",isValid:gtt},{settingsKey:"appName",label:"Application Name",isValid:tC(128,!0)}]}),i(Xp,{data:[{settingsKey:"details",label:"Detail (line 1)",isValid:Xk},{settingsKey:"detailsURL",label:"Detail URL",isValid:ov}]}),i(Xp,{data:[{settingsKey:"state",label:"State (line 2)",isValid:Xk},{settingsKey:"stateURL",label:"State URL",isValid:ov}]}),i(Yw,{settingsKey:"streamLink",label:"Stream Link (Twitch or YouTube, only if activity type is Streaming)",disabled:e!==1,isValid:xtt}),i(Xp,{data:[{settingsKey:"partySize",label:"Party Size",transform:Vk,isValid:eC,disabled:e!==0},{settingsKey:"partyMaxSize",label:"Maximum Party Size",transform:Vk,isValid:eC,disabled:e!==0}]}),i(Rt,null),i(Xp,{data:[{settingsKey:"imageBig",label:"Large Image URL/Key",isValid:H0e},{settingsKey:"imageBigTooltip",label:"Large Image Text",isValid:Xk}]}),i(Yw,{settingsKey:"imageBigURL",label:"Large Image clickable URL",isValid:ov}),i(Xp,{data:[{settingsKey:"imageSmall",label:"Small Image URL/Key",isValid:H0e},{settingsKey:"imageSmallTooltip",label:"Small Image Text",isValid:Xk}]}),i(Yw,{settingsKey:"imageSmallURL",label:"Small Image clickable URL",isValid:ov}),i(Rt,null),i(Xp,{data:[{settingsKey:"buttonOneText",label:"Button1 Text",isValid:tC(31)},{settingsKey:"buttonOneURL",label:"Button1 URL",isValid:ov}]}),i(Xp,{data:[{settingsKey:"buttonTwoText",label:"Button2 Text",isValid:tC(31)},{settingsKey:"buttonTwoURL",label:"Button2 URL",isValid:ov}]}),i(Rt,null),i(j0e,{settingsKey:"timestampMode",label:"Timestamp Mode",options:[{label:"None",value:0,default:!0},{label:"Since discord open",value:1},{label:"Same as your current time (not reset after 24h)",value:2},{label:"Custom",value:3}]}),i(Xp,{data:[{settingsKey:"startTime",label:"Start Timestamp (in milliseconds)",transform:Vk,isValid:eC,disabled:t!==3},{settingsKey:"endTime",label:"End Timestamp (in milliseconds)",transform:Vk,isValid:eC,disabled:t!==3}]}))}function q0e(){let[e,t]=T(0);return i("div",{className:Rf("root")},i(ytt,{onLoad:()=>t(o=>o+1)}),i(Rt,null),i(btt,{key:e}))}var Rf,Yj,tC,Xk,Jj,W0e=h(()=>{"use strict";d();G0e();on();Jt();xr();We();cu();os();we();Kt();co();C();Jw();Rf=K("vc-customRPC-settings-"),Yj="CustomRPC_presets",tC=(e,t=!1)=>o=>t&&!o?"This field is required.":o.length>e?`Must be not longer than ${e} characters.`:!0,Xk=tC(128);Jj=Jo(()=>{nv(!0),Ve(Ed.name)&&nv()})});async function Q0e(e){return(await Ri.fetchAssetIds(fl.store.appID,[e]))[0]}async function Z0e(){let{appID:e,appName:t,details:o,detailsURL:r,state:n,stateURL:a,type:s,streamLink:l,startTime:c,endTime:u,imageBig:p,imageBigURL:m,imageBigTooltip:g,imageSmall:x,imageSmallURL:v,imageSmallTooltip:y,buttonOneText:A,buttonOneURL:k,buttonTwoText:w,buttonTwoURL:I,partyMaxSize:E,partySize:N,timestampMode:B}=fl.store;if(!t)return;let _={application_id:e||"0",name:t,state:n,details:o,type:s??0,flags:1};switch(s===1&&(_.url=l),B){case 1:_.timestamps={start:Date.now()};break;case 2:_.timestamps={start:Date.now()-(new Date().getHours()*3600+new Date().getMinutes()*60+new Date().getSeconds())*1e3};break;case 3:if(c||u)if(_.timestamps={},c&&u&&u>c){let q=Att();_.timestamps.start=q,_.timestamps.end=q+(u-c)}else c&&(_.timestamps.start=c),u&&(_.timestamps.end=u);break;default:break}r&&(_.details_url=r),a&&(_.state_url=a),A&&(_.buttons=[A,w].filter(Aa),_.metadata={button_urls:[k,I].filter(Aa)}),p&&(_.assets={large_image:await Q0e(p),large_text:g||void 0,large_url:m||void 0}),x&&(_.assets={..._.assets,small_image:await Q0e(x),small_text:y||void 0,small_url:v||void 0}),E&&N&&(_.party={size:[N,E]});for(let q in _){if(q==="type")continue;let $=_[q];(!$||$.length===0)&&delete _[q]}return _}async function nv(e){let t=await Z0e();Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:e?null:t,socketId:"CustomRPC"})}function Att(){return Xw}function ktt(){let{timestampMode:e,startTime:t,endTime:o}=fl.store;if(e!==3||!t||!o)return;let r=o-t;r<=0||(Y0e(),Xw=Date.now(),oC=setInterval(()=>{Date.now()>=Xw+r&&(Xw=Date.now(),nv())},1e3))}function Y0e(){oC!==void 0&&(clearInterval(oC),oC=void 0),Xw=0}var Stt,wtt,K0e,fl,oC,Xw,Ed,Jw=h(()=>{"use strict";d();j();_a();xr();xc();Lt();We();$r();Je();O();Ca();Wt();Be();Kt();R();co();le();C();W0e();Stt=Oe("profileThemeStyle:","--profile-gradient-primary-color"),wtt=he(".party?(0","USER_PROFILE_ACTIVITY"),K0e=tn("status","showCurrentGame");fl=M({config:{type:6,component:q0e}}).withPrivateSettings();Xw=0;Ed=S({name:"CustomRPC",description:"Add a fully customisable Rich Presence (Game status) to your Discord profile",tags:["Activity","Customisation"],authors:[b.captain,b.AutumnVN,b.nin0dev],dependencies:["UserSettingsAPI"],requiresRestart:!1,settings:fl,start(){ktt(),nv()},stop(){nv(!0),Y0e()},patches:[{find:".USER_PROFILE_ACTIVITY_BUTTONS),",replacement:{match:/.getId\(\)===\i.id/,replace:"$& && false"}}],settingsAboutComponent:()=>{let[e]=Ro(Z0e,{fallbackValue:void 0,deps:Object.values(fl.store)}),t=K0e.useSetting(),{profileThemeStyle:o}=Stt({});return i(f,null,!t&&i(Nr,{className:X(z.top16,z.bottom16),style:{padding:"1em"}},i(oe,null,"Notice"),i(U,null,"Activity Sharing isn't enabled, people won't be able to see your custom rich presence!"),i(ue,{color:ue.Colors.TRANSPARENT,className:z.top8,onClick:()=>K0e.updateSetting(!0)},"Enable")),i(pe,{flexDirection:"column",gap:".5em",className:z.top16},i(U,null,"Go to the ",i(so,{href:"https://discord.com/developers/applications"},"Discord Developer Portal")," to create an application and get the application ID."),i(U,null,"Upload images in the Rich Presence tab to get the image keys."),i(U,null,"If you want to use an image link, download your image and reupload the image to ",i(so,{href:"https://imgur.com"},"Imgur"),' and get the image link by right-clicking the image and selecting "Copy image address".'),i(U,null,"You can't see your own buttons on your profile, but everyone else can see it fine."),i(U,null,'Some weird unicode text ("fonts" \u{1D591}\u{1D58E}\u{1D590}\u{1D58A} \u{1D599}\u{1D58D}\u{1D58E}\u{1D598}) may cause the rich presence to not show up, try using normal letters instead.')),i(Rt,{className:z.top8}),i("div",{style:{width:"284px",...o,marginTop:8,borderRadius:8,background:"var(--background-mod-muted)"}},e&&i(wtt,{activity:e,user:L.getCurrentUser(),currentUser:L.getCurrentUser()})))}})});var J0e=h(()=>{});async function Ttt(){try{let{embed:e}=this.props,{replaceElements:t,dearrowByDefault:o}=Xj.store;if(!e||e.dearrow||e.provider?.name!=="YouTube"||!e.video?.url)return;let r=Ctt.exec(e.video.url)?.[1];if(!r)return;let n=await fetch(`https://sponsor.ajay.app/api/branding?videoID=${r}`);if(!n.ok)return;let{titles:a,thumbnails:s}=await n.json(),l=a[0]?.votes>=0,c=s[0]?.votes>=0;if(!l&&!c)return;if(e.dearrow={enabled:o},l&&t!==2){let u=a[0].title.replace(/(^|\s)>(\S)/g,"$1$2");e.dearrow.oldTitle=o?e.rawTitle:u,o&&(e.rawTitle=u)}if(c&&t!==1){let u=`https://dearrow-thumb.ajay.app/api/v1/getThumbnail?videoID=${r}&time=${s[0].timestamp}`;e.dearrow.oldThumb=o?e.thumbnail.proxyURL:u,o&&(e.thumbnail.proxyURL=u)}this.forceUpdate()}catch(e){new ie("Dearrow").error("Failed to dearrow embed",e)}}function Itt({component:e}){let{embed:t}=e.props;return t?.dearrow?i(ve,{text:t.dearrow.enabled?"This embed has been dearrowed, click to restore":"Click to dearrow"},({onMouseEnter:o,onMouseLeave:r})=>i("button",{onMouseEnter:o,onMouseLeave:r,className:"vc-dearrow-toggle-"+(t.dearrow.enabled?"on":"off"),onClick:()=>{let{enabled:n,oldThumb:a,oldTitle:s}=t.dearrow;t.dearrow.enabled=!n,s&&(t.dearrow.oldTitle=t.rawTitle,t.rawTitle=s),a&&(t.dearrow.oldThumb=t.thumbnail.proxyURL,t.thumbnail.proxyURL=a),e.forceUpdate()}},i("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24px",height:"24px",viewBox:"0 0 36 36","aria-label":"Toggle Dearrow",className:"vc-dearrow-icon"},i("path",{fill:"#1213BD",d:"M36 18.302c0 4.981-2.46 9.198-5.655 12.462s-7.323 5.152-12.199 5.152s-9.764-1.112-12.959-4.376S0 23.283 0 18.302s2.574-9.38 5.769-12.644S13.271 0 18.146 0s9.394 2.178 12.589 5.442C33.931 8.706 36 13.322 36 18.302z"}),i("path",{fill:"#88c9f9",d:"m 30.394282,18.410186 c 0,3.468849 -1.143025,6.865475 -3.416513,9.137917 -2.273489,2.272442 -5.670115,2.92874 -9.137918,2.92874 -3.467803,0 -6.373515,-1.147212 -8.6470033,-3.419654 -2.2734888,-2.272442 -3.5871299,-5.178154 -3.5871299,-8.647003 0,-3.46885 0.9420533,-6.746149 3.2144954,-9.0196379 2.2724418,-2.2734888 5.5507878,-3.9513905 9.0196378,-3.9513905 3.46885,0 6.492841,1.9322561 8.76633,4.204698 2.273489,2.2724424 3.788101,5.2974804 3.788101,8.7663304 z"}),i("path",{fill:"#0a62a5",d:"m 23.95823,17.818306 c 0,3.153748 -2.644888,5.808102 -5.798635,5.808102 -3.153748,0 -5.599825,-2.654354 -5.599825,-5.808102 0,-3.153747 2.446077,-5.721714 5.599825,-5.721714 3.153747,0 5.798635,2.567967 5.798635,5.721714 z"})))):null}var Ctt,Xj,nC,X0e=h(()=>{"use strict";d();J0e();j();Pe();O();He();R();C();Ctt=/https:\/\/www\.youtube\.com\/embed\/([a-zA-Z0-9_-]{11})/;Xj=M({hideButton:{description:"Hides the Dearrow button from YouTube embeds",type:3,default:!1,restartNeeded:!0},replaceElements:{description:"Choose which elements of the embed will be replaced",type:4,restartNeeded:!0,options:[{label:"Everything (Titles & Thumbnails)",value:0,default:!0},{label:"Titles",value:1},{label:"Thumbnails",value:2}]},dearrowByDefault:{description:"Dearrow videos automatically",type:3,default:!0,restartNeeded:!1}}),nC=S({name:"Dearrow",description:"Makes YouTube embed titles and thumbnails less sensationalist, powered by Dearrow",tags:["Media","Utility"],authors:[b.Ven],settings:Xj,embedDidMount:Ttt,renderButton(e){return i(H,{noop:!0},i(Itt,{component:e}))},patches:[{find:"this.renderInlineMediaEmbed",replacement:[{match:/render\(\)\{.{0,30}let\{embed:/,replace:"componentDidMount=$self.embedDidMount;$&"},{match:/children:\[(?=null!=\i\?(\i)\.renderSuppressButton)/,replace:"children:[$self.renderButton($1),",predicate:()=>!Xj.store.hideButton}]}]})});var V0e=h(()=>{});async function ehe(e){try{let t=await fetch(`${e}/api/config`).then(o=>o.json());Vj=e,Dd=Vj+"/api",eq=Dd+"/authorize",tq=t.CDN_URL,oq=t.CLIENT_ID}catch{console.error("failed to fetch decor config")}}var Vj,Dd,eq,tq,oq,gh,Vw,rv,e4,nq,Lf=h(()=>{"use strict";d();Vj="https://decor.fieryflames.dev",Dd=Vj+"/api",eq=Dd+"/authorize",tq="https://ugc.decor.fieryflames.dev",oq="1096966363416899624",gh="100101099111114",Vw="11497119",rv="1096357702931841148",e4="dXp2SdxDcP",nq=1e3*60*60*4});var Ett,Of,t4=h(()=>{"use strict";d();Io();Lf();Er();He();C();Ett={async getItem(e){return vt(e).then(t=>t??null)},async setItem(e,t){await Ct(e,t)},async removeItem(e){await aa(e)}},Of=ko(()=>Cs(_0((e,t)=>({token:null,tokens:{},init:()=>{e({token:t().tokens[L.getCurrentUser().id]??null})},setToken:o=>e({token:o,tokens:{...t().tokens,[L.getCurrentUser().id]:o}}),remove:o=>{let{tokens:r,init:n}=t(),a={...r};delete a[o],e({tokens:a}),n()},async authorize(){return new Promise((o,r)=>ce(n=>i(ws,{...n,scopes:["identify"],responseType:"code",redirectUri:eq,permissions:0n,clientId:oq,cancelCompletesFlow:!1,callback:async a=>{try{let s=new URL(a.location);s.searchParams.append("client","vencord");let l=await fetch(s);if(l?.ok){let c=await l.text();t().setToken(c)}else throw new Error("Request not OK");o(void 0)}catch(s){s instanceof Error&&(ne(`Failed to authorize: ${s.message}`,D.Type.FAILURE),new ie("Decor").error("Failed to authorize",s),r(s))}}}),{onCloseCallback(){r(new Error("Authorization cancelled"))}}))},isAuthorized:()=>!!t().token}),{name:"decor-auth",storage:Ett,partialize:e=>({tokens:e.tokens}),onRehydrateStorage:()=>e=>e?.init()})))});async function rC(e,t){let o=await fetch(e,{...t,headers:{...t?.headers,Authorization:`Bearer ${Of.getState().token}`}});if(o.ok)return o;throw new Error(await o.text())}var the,ohe,nhe,rq,rhe,ihe,iC=h(()=>{"use strict";d();Lf();t4();the=async e=>{if(e?.length===0)return{};let t=new URL(Dd+"/users");return e&&e.length!==0&&t.searchParams.set("ids",JSON.stringify(e)),await fetch(t).then(o=>o.json())},ohe=async(e="@me")=>rC(Dd+`/users/${e}/decorations`).then(t=>t.json()),nhe=async(e="@me")=>rC(Dd+`/users/${e}/decoration`).then(t=>t.json()),rq=async(e,t="@me")=>{let o=new FormData;return e?"hash"in e?o.append("hash",e.hash):"file"in e&&(o.append("image",e.file),o.append("alt",e.alt??"null")):o.append("hash","null"),rC(Dd+`/users/${t}/decoration`,{method:"PUT",body:o}).then(r=>e&&"file"in e?r.json():r.text())},rhe=async e=>{await rC(Dd+`/decorations/${e}`,{method:"DELETE"})},ihe=async()=>fetch(Dd+"/decorations/presets").then(e=>e.json())});function iq(e){return`${e.animated?"a_":""}${e.hash}`}function aC(e){return{asset:iq(e),skuId:gh}}var sC=h(()=>{"use strict";d();Lf()});function ahe(e){try{let[t,o]=T(e?Vp.getState().getAsset(e.id)??null:null);return G(()=>{let r=(()=>{try{return Vp.subscribe(n=>{if(!e)return;let a=n.getAsset(e.id);a&&t!==a&&o(a)})}catch{return()=>{}}})();try{if(e){let{fetch:n}=Vp.getState();n(e.id)}}catch{}return r},[]),t?{asset:t,skuId:gh}:null}catch(t){console.error(t)}return null}var Vp,aq=h(()=>{"use strict";d();iC();Lf();os();Er();C();Vp=ko(()=>Cs((e,t)=>({usersDecorations:new Map,fetchQueue:new Set,bulkFetch:Jo(async()=>{let{fetchQueue:o,usersDecorations:r}=t();if(o.size===0)return;e({fetchQueue:new Set});let n=[...o],a=await the(n),s=new Map(r),l=new Date;for(let c of n){let u=a[c]??null;s.set(c,{asset:u,fetchedAt:l})}e({usersDecorations:s})}),async fetch(o,r=!1){let{usersDecorations:n,fetchQueue:a,bulkFetch:s}=t(),{fetchedAt:l}=n.get(o)??{};l&&!r&&Date.now()-l.getTime(){"use strict";d();iC();sC();Er();C();aq();Pd=ko(()=>Cs((e,t)=>({decorations:[],selectedDecoration:null,async fetch(){let o=await ohe(),r=await nhe();e({decorations:o,selectedDecoration:r})},async create(o){let r=await rq(o);e({decorations:[...t().decorations,r]})},async delete(o){let r=typeof o=="object"?o.hash:o;await rhe(r);let{selectedDecoration:n,decorations:a}=t(),s={decorations:a.filter(l=>l.hash!==r),selectedDecoration:n?.hash===r?null:n};e(s)},async select(o){t().selectedDecoration!==o&&(e({selectedDecoration:o}),rq(o),Vp.getState().set(L.getCurrentUser().id,o?iq(o):null))},clear:()=>e({decorations:[],selectedDecoration:null})})))});var Kr,av,sv,she,Ff=h(()=>{"use strict";d();we();le();Kr=K("vc-decor-"),av=Ie("modalPreview","modalCloseButton","spinner","modal"),sv=vr(["initialSelectedDecoration:",/initialSelectedDecoration:\i,.{0,300}\i\.e\(/]),she=vr([".CREATE_STICKER_MODAL,","isDisplayingIndividualStickers"])});var o4,lhe,n4,che,sq,uhe,hh=h(()=>{"use strict";d();lhe=e=>o4=e,n4=()=>null,che=e=>n4=e,uhe=e=>sq=e});function lq(e){return i(o4,{...e,isSelected:!1},i(Yc,null),i(Y,{size:"xs",color:"text-strong"},Xe("CREATE")))}var dhe=h(()=>{"use strict";d();yt();ot();_e();hh()});function cq(e){return i(o4,{...e},i(nS,null),i(Y,{size:"xs",color:"text-strong"},Xe("NONE")))}var phe=h(()=>{"use strict";d();yt();ot();_e();hh()});function uq({decoration:e}){let{delete:t}=Pd();return i(P.Menu,{navId:Kr("decoration-context-menu"),onClose:rt.closeContextMenu,"aria-label":"Decoration Options"},i(P.MenuItem,{id:Kr("decoration-context-menu-copy-hash"),label:"Copy Decoration Hash",icon:wa,leadingAccessory:{type:"icon",icon:wa},action:()=>po(e.hash)}),e.authorId===L.getCurrentUser().id&&i(P.MenuItem,{id:Kr("decoration-context-menu-delete"),label:"Delete Decoration",color:"danger",icon:hr,leadingAccessory:{type:"icon",icon:hr},action:()=>ce(o=>i(Dn,{...o,title:"Delete Decoration",subtitle:`Are you sure you want to delete ${e.alt}?`,confirmText:"Delete",cancelText:"Cancel",onConfirm:()=>{t(e)}}))}))}var mhe=h(()=>{"use strict";d();ot();iv();Ff();mi();C()});function dq(e){let{decoration:t}=e;return i(sq,{...e,onContextMenu:o=>{rt.openContextMenu(o,()=>i(uq,{decoration:t}))},avatarDecoration:aC(t)})}var fhe=h(()=>{"use strict";d();sC();C();hh();mhe()});function pq({renderItem:e,getItemKey:t,itemKeyPrefix:o,items:r}){return i("div",{className:Kr("sectioned-grid-list-grid")},r.map(n=>i(V.Fragment,{key:`${o?`${o}-`:""}${t(n)}`},e(n))))}var ghe=h(()=>{"use strict";d();Ff();C()});function mq(e){return i("div",{className:X(Kr("sectioned-grid-list-container"),Dtt.thin)},e.sections.map(t=>i("div",{key:e.getSectionKey(t),className:Kr("sectioned-grid-list-section")},e.renderSectionHeader(t),i(pq,{renderItem:e.renderItem,getItemKey:e.getItemKey,itemKeyPrefix:e.getSectionKey(t),items:t.items}))))}var Dtt,hhe=h(()=>{"use strict";d();Ff();Be();le();ghe();Dtt=Ie("managedReactiveScroller","thin")});function Mtt(e){let[t,o]=T(null);return G(()=>{if(!e)return;let r=URL.createObjectURL(e);return o(r),()=>{URL.revokeObjectURL(r),o(null)}},[e]),t}function Ntt(e){let[t,o]=T(""),[r,n]=T(null),[a,s]=T(!1),[l,c]=T(null);G(()=>{l&&c(null)},[r]);let{create:u}=Pd(),p=Mtt(r),m=Ne(()=>p?{asset:p,skuId:Vw}:null,[p]);return i(be,{...e,size:"lg",title:"Create Decoration",actions:[{text:"Cancel",variant:"secondary",onClick:e.onClose},{text:"Submit for Review",variant:"primary",onClick:()=>{s(!0),u({alt:t,file:r}).then(e.onClose).catch(g=>{s(!1),c(g)})},disabled:!r||!t||a}]},i("div",{className:Kr("create-decoration-modal-content",av.modal)},i(H,null,i(xhe,{messageType:vhe.WARNING},"Make sure your decoration does not violate ",i(so,{href:"https://github.com/decor-discord/.github/blob/main/GUIDELINES.md"},"the guidelines")," before submitting it."),i("div",{className:Kr("create-decoration-modal-form-preview-container")},i("div",{className:Kr("create-decoration-modal-form")},l!==null&&i(Y,{size:"xs",color:"text-danger"},l.message),i("section",null,i(oe,null,"File"),i(Ptt,{filename:r?.name,placeholder:"Choose a file",buttonText:"Browse",filters:[{name:"Decoration file",extensions:["png","apng"]}],onFileSelect:n}),i(U,{className:z.top8},"File should be APNG or PNG.")),i("section",null,i(oe,null,"Name"),i(Te,{placeholder:"Companion Cube",value:t,onChange:o}),i(U,{className:z.top8},"This name will be used when referring to this decoration."))),i("div",null,i(n4,{avatarDecoration:m,user:L.getCurrentUser()}))),i(xhe,{messageType:vhe.INFO,className:z.bottom8},"To receive updates on your decoration's review, join ",i(so,{href:`https://discord.gg/${e4}`,onClick:async g=>{g.preventDefault(),$e.getGuild(rv)?(ir(),Q.dispatch({type:"LAYER_POP_ALL"}),Yt.transitionToGuild(rv)):await Yi(e4)&&(ir(),Q.dispatch({type:"LAYER_POP_ALL"}))}},"Decor's Discord server")," and allow direct messages."))))}var Ptt,xhe,vhe,lC,fq=h(()=>{"use strict";d();yt();Pe();We();$r();Je();Lf();iv();Ff();hh();_e();Wt();le();C();Ptt=he(".currentTarget.files","lineClamp:1"),{HelpMessage:xhe,HelpMessageTypes:vhe}=Qo('POSITIVE="positive',{HelpMessageTypes:Re.byProps("POSITIVE","WARNING","INFO"),HelpMessage:Re.byCode("messageType:")});lC=()=>Promise.all([sv(),she()]).then(()=>ce(e=>i(Ntt,{...e})))});function Btt(e){return i(Dn,{...e,title:"Hold on",confirmText:"Continue",variant:"primary",onConfirm:()=>{xh.store.agreedToGuidelines=!0,e.onClose(),lC()}},i("div",{className:av.modal},i(U,null,"By submitting a decoration, you agree to ",i(so,{href:"https://github.com/decor-discord/.github/blob/main/GUIDELINES.md"},"the guidelines"),". Not reading these guidelines may get your account suspended from creating more decorations in the future.")))}var yhe,bhe=h(()=>{"use strict";d();$r();Je();cC();Ff();C();fq();yhe=()=>sv().then(()=>ce(e=>i(Btt,{...e})))});function Rtt(){let[e,t]=T([]);return G(()=>{ihe().then(t)},[]),e}function Ott({section:e}){let t=typeof e.subtitle<"u",o=typeof e.authorIds<"u",[r,n]=T([]);return G(()=>{Ltt.push(async()=>{if(e.authorIds)for(let a of e.authorIds){let s=L.getUser(a)??await Xi.getUser(a).catch(()=>null);s!=null&&n(l=>[...l,s])}})},[e.authorIds]),i("div",null,i(pe,null,i(Ia.FormTitle,{style:{flexGrow:1}},e.title),o&&i(Vc,{users:r,guildId:void 0,renderIcon:!1,max:5,showDefaultAvatarsForNullUsers:!0,size:16,showUserPopout:!0,className:z.bottom8})),t&&i(U,{className:z.bottom8},e.subtitle))}function Ftt(e){let[t,o]=T(void 0),r=typeof t<"u",n=t!=null?aC(t):t,{decorations:a,selectedDecoration:s,fetch:l,select:c}=Pd();G(()=>{l()},[]);let u=r?t:s,p=typeof u?.authorId<"u",m=a.some(w=>w.reviewed===!1),g=Rtt(),x=g.flatMap(w=>w.decorations),v=g.find(w=>w.id===u?.presetId),y=typeof v<"u",k=[{title:"Your Decorations",subtitle:"You can delete your own decorations by right clicking on them.",sectionKey:"ownDecorations",items:["none",...a.filter(w=>!x.some(I=>I.hash===w.hash)),"create"]},...g.map(w=>({title:w.name,subtitle:w.description||void 0,sectionKey:`preset-${w.id}`,items:w.decorations,authorIds:w.authorIds}))];return i(be,{...e,title:"Change Decoration",size:"lg",actions:[{text:"Cancel",variant:"secondary",onClick:e.onClose},{text:"Apply",variant:"primary",onClick:()=>{c(t).then(e.onClose)},disabled:!r}],preview:i("div",{className:Kr("modal-footer-btn-container",z.top8)},i(ve,{text:"Join Decor's Discord Server for notifications on your decoration's review, and when new presets are released"},w=>i(de,{...w,onClick:async()=>{$e.getGuild(rv)?(e.onClose(),Q.dispatch({type:"LAYER_POP_ALL"}),Yt.transitionToGuild(rv)):await Yi(e4)&&(ir(),Q.dispatch({type:"LAYER_POP_ALL"}))},variant:"link"},"Discord Server")),i(de,{onClick:()=>ce(w=>i(Dn,{...w,title:"Log Out",subtitle:"Are you sure you want to log out of Decor?",confirmText:"Log Out",cancelText:"Cancel",onConfirm:()=>{Of.getState().remove(L.getCurrentUser().id),e.onClose()}})),variant:"dangerSecondary"},"Log Out"))},i("div",{className:Kr("change-decoration-modal-content",av.modal)},i(mq,{renderItem:w=>{if(typeof w=="string")switch(w){case"none":return i(cq,{className:Kr("change-decoration-modal-decoration"),isSelected:u===null,onSelect:()=>o(null)});case"create":return i(ve,{text:"You already have a decoration pending review",shouldShow:m},I=>i(lq,{className:Kr("change-decoration-modal-decoration"),...I,onSelect:m?()=>{}:xh.store.agreedToGuidelines?lC:yhe}))}else return i(ve,{text:"Pending review",shouldShow:w.reviewed===!1},I=>i(dq,{...I,className:Kr("change-decoration-modal-decoration"),onSelect:w.reviewed!==!1?()=>o(w):()=>{},isSelected:u?.hash===w.hash,decoration:w}))},getItemKey:w=>typeof w=="string"?w:w.hash,getSectionKey:w=>w.sectionKey,renderSectionHeader:w=>i(Ott,{section:w}),sections:k}),i("div",{className:Kr("change-decoration-modal-preview")},i(n4,{avatarDecoration:n,user:L.getCurrentUser()}),y&&i(Ia.FormTitle,{className:""},"Part of the ",v.name," Preset"),typeof u=="object"&&i(Y,{size:"sm",weight:"semibold",style:{color:"var(--text-strong)"}},u?.alt),p&&i(Y,{key:`createdBy-${u.authorId}`},"Created by ",kt.parse(`<@${u.authorId}>`)),y&&i(de,{onClick:()=>ft(v.id)},"Copy Preset ID"))))}var Ltt,gq,She=h(()=>{"use strict";d();yt();Tt();Lt();Je();iC();Lf();t4();iv();sC();cC();Ff();hh();dhe();phe();fhe();hhe();_e();Wt();jp();C();fq();bhe();Ltt=new Oa;gq=()=>sv().then(()=>ce(e=>i(Ftt,{...e})))});function lv({hideTitle:e=!1,hideDivider:t=!1,noMargin:o=!1,useNewSection:r=!1}){let n=Of(),{selectedDecoration:a,select:s,fetch:l}=Pd();if(G(()=>{n.isAuthorized()&&l()},[n.token]),r&&!(r?DS:void 0))return null;let u=r?DS:_tt,p=r?{heading:e?void 0:"Decor"}:{title:e?void 0:"Decor",hasBackground:!0,hideDivider:t,className:o?Kr("section-remove-margin"):void 0},m=r?"Change":"Change Decoration",g=r?"Remove":"Remove Decoration";return i(u,{...p},i(pe,{gap:"4px"},i(de,{onClick:()=>{n.isAuthorized()?gq():n.authorize().then(gq).catch(()=>{})},variant:"primary",size:"small"},m),a&&n.isAuthorized()&&i(de,{onClick:()=>s(null),variant:"secondary",size:"small"},g)))}var _tt,hq=h(()=>{"use strict";d();Tt();Lt();t4();iv();Ff();She();le();C();_tt=he(".DESCRIPTION","hasBackground:")});var xh,cC=h(()=>{"use strict";d();j();Tt();Je();Wt();Be();R();C();uC();hq();xh=M({changeDecoration:{type:6,component({closePluginSettings:e}){return Md.started?i("div",null,i(lv,{hideTitle:!0,hideDivider:!0,noMargin:!0}),i(U,{className:X(z.top8,z.bottom8)},"You can also access Decor decorations from the ",i(Ys,{variant:"link",onClick:async()=>{e(),un.openUserSettings("profile_panel")}},"Profiles")," page.")):i(U,null,"Enable Decor and restart your client to change your avatar decoration.")}},baseUrl:{type:0,hidden:!0,description:"Decor api url",default:"https://decor.fieryflames.dev"},agreedToGuidelines:{type:3,description:"Agreed to guidelines",hidden:!0,default:!1}})});var Md,uC=h(()=>{"use strict";d();V0e();Pe();O();R();C();Lf();t4();iv();aq();cC();hh();hq();Md=S({name:"Decor",description:"Create and use your own custom avatar decorations, or pick your favorite from the presets.",tags:["Appearance","Customisation"],authors:[b.FieryFlames],patches:[{find:"getAvatarDecorationURL:",replacement:{match:/(?<=function \i\((\i)\){)(?=.{0,20}let{avatarDecoration)/,replace:"const vcDecorDecoration=$self.getDecorAvatarDecorationURL($1);if(vcDecorDecoration)return vcDecorDecoration;"}},{find:"DefaultCustomizationSections",replacement:{match:/(?<=#{intl::USER_SETTINGS_AVATAR_DECORATION}\)},"decoration"\),)/,replace:"$self.DecorSection(),"}},{find:"80,onlyAnimateOnHoverOrFocus:!",replacement:[{match:/(?=function (\i)\(\i\){let{children.{20,200}isSelected:\i,\.\.\.\i\}=\i)/,replace:"$self.DecorationGridItem=$1;"},{match:/(?<=(?:(\i)=)?)(?:\i=>|function (\i)\(\i\)){let{user:\i,avatarDecoration/,replace:(e,t,o)=>`$self.DecorationGridDecoration=${t??o}${t?"":";"}${e}`},{match:/(?<=\i\.PURCHASE)(?=,)(?<=avatarDecoration:(\i).+?)/,replace:"||$1.skuId===$self.SKU_ID"}]},{find:"isAvatarDecorationAnimating:",group:!0,replacement:[{match:/(?<=\.avatarDecoration,guildId:\i\}\)\),)(?<=user:(\i).+?)/,replace:"vcDecorAvatarDecoration=$self.useUserDecorAvatarDecoration($1),"},{match:/(?<={avatarDecoration:).{1,20}?(?=,)(?<=avatarDecorationOverride:(\i).+?)/,replace:"$1??vcDecorAvatarDecoration??($&)"},{match:/(?<=size:\i}\),\[)/,replace:"vcDecorAvatarDecoration,"}]},{find:"#{intl::USER_PROFILE_ACCOUNT_POPOUT_BUTTON_A11Y_LABEL}",replacement:[{match:/(?<=\i\)\({avatarDecoration:)\i(?=,)(?<=currentUser:(\i).+?)/,replace:"$self.useUserDecorAvatarDecoration($1)??$&"}]},...["#{intl::COLLECTIBLES_NAMEPLATE_PREVIEW_A11Y}","#{intl::COLLECTIBLES_PROFILE_PREVIEW_A11Y}"].map(e=>({find:e,replacement:{match:/(?<=userValue:)((\i(?:\.author)?)\?\.avatarDecoration)/,replace:"$self.useUserDecorAvatarDecoration($2)??$1"}})),{find:"#{intl::PREMIUM_UPSELL_PROFILE_AVATAR_DECO_INLINE_UPSELL_DESCRIPTION}",replacement:[{match:/(?<==)function\(\i\){let{user:\i,guildId:\i,avatarDecoration:/,replace:"$self.AvatarDecorationModalPreview=$&"}]},{find:'("UserProfileModalV2EditingPanel")',replacement:[{match:/"inline"===.{0,100}bannerErrorMessage:\i\}\)/,replace:"$self.ExperimentDecorSection(),$&"}]}],settings:xh,flux:{CONNECTION_OPEN:()=>{Of.getState().init(),Pd.getState().clear(),Vp.getState().fetch(L.getCurrentUser().id,!0)},USER_PROFILE_MODAL_OPEN:e=>{Vp.getState().fetch(e.userId,!0)}},set DecorationGridItem(e){lhe(e)},set DecorationGridDecoration(e){uhe(e)},set AvatarDecorationModalPreview(e){che(e)},SKU_ID:gh,RAW_SKU_ID:Vw,useUserDecorAvatarDecoration:ahe,async start(){await ehe(xh.store.baseUrl),Vp.getState().fetch(L.getCurrentUser().id,!0)},getDecorAvatarDecorationURL({avatarDecoration:e,canAnimate:t}){if(e?.skuId===gh){let o=e.asset.split("_");return e.asset.startsWith("a_")&&!t&&o.shift(),`${tq}/${o.join("_")}.png`}else if(e?.skuId===Vw)return e.asset},DecorSection:H.wrap(lv,{noop:!0}),ExperimentDecorSection:H.wrap(e=>i(lv,{...e,useNewSection:!0}),{noop:!0})})});var dC,whe=h(()=>{"use strict";d();O();R();dC=S({name:"DisableCallIdle",description:"Disables automatically getting kicked from a DM voice call after 3 minutes and being moved to an AFK voice channel.",tags:["Voice","Utility"],authors:[b.Nuckyz],patches:[{find:"this.idleTimeout.start(",replacement:{match:/this\.idleTimeout\.(start|stop)/g,replace:"$self.noop"}},{find:"handleIdleUpdate(){",replacement:{match:"handleIdleUpdate(){",replace:"handleIdleUpdate(){return;"}}],noop(){}})});var pC,Ahe=h(()=>{"use strict";d();O();R();C();pC=S({name:"DontRoundMyTimestamps",authors:[b.Lexi],description:"Always rounds relative timestamps down, so 7.6y becomes 7y instead of 8y",tags:["Appearance","Utility"],start(){bi.relativeTimeRounding(Math.floor)},stop(){bi.relativeTimeRounding(Math.round)}})});var xq,khe=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/experiments/hideBugReport.css",{name:"src/plugins/experiments/hideBugReport.css",source:`#staff-help-popout-staff-help-bug-reporter { display: none; } `,classNames:{},dom:null});xq="src/plugins/experiments/hideBugReport.css"});var mC,Utt,ztt,Che,fC,The=h(()=>{"use strict";d();j();nl();yt();Pe();xc();We();Je();O();Wt();R();le();C();khe();mC=Ae("key","combo"),Utt=Go?"cmd":"ctrl",ztt=Go?"opt":"alt",Che=M({toolbarDevMenu:{type:3,description:"Change the Help (?) toolbar button (top right in chat) to Discord's developer menu",default:!1,restartNeeded:!0}}),fC=S({name:"Experiments",description:"Enable Access to Experiments & other dev-only features in Discord!",tags:["Developers","Utility"],authors:[b.Megu,b.Ven,b.Nickyux,b.BanTheNons,b.Nuckyz],isModified:!0,settings:Che,patches:[{find:"Object.defineProperties(this,{isDeveloper",replacement:{match:/(?<={isDeveloper:\{[^}]+?,get:\(\)=>)\i/,replace:"true"}},{find:'type:"user",revision',replacement:{match:/!(\i)(?=&&"CONNECTION_OPEN")/,replace:"!($1=true)"}},{find:'placeholder:"Search experiments"',replacement:[{match:/(?<=children:\[)(?=null!=.{0,150}"Installation ID:)/,replace:"$self.WarningCard(),"},{match:/(?<=,marginBottom:16)(?=\},children:\[)/,replace:',flexDirection:"row",alignItems:"center"'}]},{find:'?"BACK_FORWARD_NAVIGATION":',replacement:{match:/hasBugReporterAccess:(\i)/,replace:"_hasBugReporterAccess:$1=true"},predicate:()=>Che.store.toolbarDevMenu},{find:'navId:"staff-help-popout"',replacement:{match:/(isShown.+?)onClick:\i/,replace:(e,t)=>`${t}onClick:()=>{}`}},{find:"Clear Treatment ",replacement:[{match:/\i\?\.isStaff\(\)/,replace:"true"},{match:/\.isStaffPersonal\(\).+?if\(null==(\i)\|\|null==\i(?=\)return null;)/,replace:"$&||({})[$1]!=null"}]},{find:"}getServerAssignment(",replacement:{match:/}getServerAssignment\((\i),\i,\i\){/,replace:"$&if($1==null)return;"}},{find:"{PlaygroundEmbed:()=>",replacement:{match:/"Revenue".{0,250}getCurrentUser\(\);return/,replace:"$& true||"}},{find:'"^dev://experiment/',replacement:{match:/(\[0-9\]\+)/,replace:"[a-zA-Z0-9-]+"}},{find:".EXPERIMENT_TREATMENT&&null",replacement:[{match:/(?<=find\(\i=>)((\i).value===\i)/,replace:"{return($1)||($self.matchExperiment(arguments[0].url,$2.label))}"}]}],matchExperiment(e,t){let o=e.split("/"),r=t.replace(/[^a-zA-Z0-9]+/g,"").toLowerCase(),n=o[o.length-1]?.replace(/[^a-zA-Z0-9]+/g,"").toLowerCase();return!!r&&n!==void 0&&r===n},start:()=>R0.getUserExperimentBucket("2026-01-bug-reporter")>0&&Oi(xq),stop:()=>La(xq),settingsAboutComponent:()=>i(V.Fragment,null,i(Ot,null,"More Information"),i(Y,{size:"md"},"You can open Discord's DevTools via "," ",i("div",{className:mC.combo,style:{display:"inline-flex"}},i("kbd",{className:mC.key},Utt)," ",i("kbd",{className:mC.key},ztt)," ",i("kbd",{className:mC.key},"O")," "))),WarningCard:H.wrap(()=>i(Nr,{id:"vc-experiments-warning-card",className:z.bottom16},i(ta,null,"Hold on!!"),i(U,null,"Experiments are unreleased Discord features. They might not work, or even break your client or get your account disabled."),i(U,{className:z.top8},"Only use experiments if you know what you're doing. Equicord is not responsible for any damage caused by enabling experiments. If you don't know what an experiment does, ignore it. Do not ask us what experiments do either, we probably don't know."),i(U,{className:z.top8},'No, you cannot use server-side features like checking the "Send to Client" box.')),{noop:!0})})});var gC,Ihe=h(()=>{"use strict";d();O();R();gC=S({name:"F8Break",description:"Pause the client when you press F8 with DevTools (+ breakpoints) open.",tags:["Developers","Shortcuts"],authors:[b.lewisakura],start(){window.addEventListener("keydown",this.event)},stop(){window.removeEventListener("keydown",this.event)},event(e){if(e.code==="F8")debugger}})});function $tt(e,t=0,o){o=o??e.length-t;let r=-1;for(let n=t,a=t+o;n>>8^Bhe[(r^e[n])&255];return r^-1}function Rhe(e){let t=new Uint8Array(e);return new Promise(function(o,r){for(let x=0;x>>0;for(let r=1;r<4;r++)o+=e[r+t]<<(3-r)*8;return o}function Dhe(e,t){let o=0;for(let r=0;r<2;r++)o+=e[r+t]<<(1-r)*8;return o}function Phe(e,t){return e[t]}function Mhe(e,t,o){let r=new Uint8Array(o);return r.set(e.subarray(t,t+o)),r}function Gtt(e,t,o){let r=Array.prototype.slice.call(e.subarray(t,t+o));return String.fromCharCode.apply(String,r)}function hC(e){return[e>>>24&255,e>>>16&255,e>>>8&255,e&255]}function Htt(e){let t=[];for(let o=0;o{"use strict";d();yq=class{width=0;height=0;numPlays=0;playTime=0;frames=[]},Bhe=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let o=0;o<8;o++)t=t&1?3988292384^t>>>1:t>>>1;Bhe[e]=t}vq=new Uint8Array([137,80,78,71,13,10,26,10])});var cv=xa(Aq=>{d();var Uhe=Object.defineProperty,jtt=e=>Uhe(e,"__esModule",{value:!0}),qtt=(e,t)=>{for(var o in t)Uhe(e,o,{get:t[o],enumerable:!0})};jtt(Aq);qtt(Aq,{GIFEncoder:()=>Whe,applyPalette:()=>eot,default:()=>uot,nearestColor:()=>rot,nearestColorIndex:()=>jhe,nearestColorIndexWithDistance:()=>qhe,prequantize:()=>Vtt,quantize:()=>Jtt,snapColorsToPalette:()=>not});var Wtt={signature:"GIF",version:"89a",trailer:59,extensionIntroducer:33,applicationExtensionLabel:255,graphicControlExtensionLabel:249,imageSeparator:44,signatureSize:3,versionSize:3,globalColorTableFlagMask:128,colorResolutionMask:112,sortFlagMask:8,globalColorTableSizeMask:7,applicationIdentifierSize:8,applicationAuthCodeSize:3,disposalMethodMask:28,userInputFlagMask:2,transparentColorFlagMask:1,localColorTableFlagMask:128,interlaceFlagMask:64,idSortFlagMask:32,localColorTableSizeMask:7};function zhe(e=256){let t=0,o=new Uint8Array(e);return{get buffer(){return o.buffer},reset(){t=0},bytesView(){return o.subarray(0,t)},bytes(){return o.slice(0,t)},writeByte(n){r(t+1),o[t]=n,t++},writeBytes(n,a=0,s=n.length){r(t+s);for(let l=0;l=n)return;var s=1024*1024;n=Math.max(n,a*(a>>0),a!=0&&(n=Math.max(n,256));let l=o;o=new Uint8Array(n),t>0&&o.set(l.subarray(0,t),0)}}var bq=12,Ohe=5003,Ktt=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function Qtt(e,t,o,r,n=zhe(512),a=new Uint8Array(256),s=new Int32Array(Ohe),l=new Int32Array(Ohe)){let c=s.length,u=Math.max(2,r);a.fill(0),l.fill(0),s.fill(-1);let p=0,m=0,g=u+1,x=g,v=!1,y=x,A=(1<=0;)if(ee-=ae,ee<0&&(ee+=c),s[ee]===Z){N=l[ee];break e}q(N),N=re,I<1<0?p|=$<=8;)a[E++]=p&255,E>=254&&(n.writeByte(E),n.writeBytesView(a,0,E),E=0),p>>=8,m-=8;if((I>A||v)&&(v?(y=x,A=(1<0;)a[E++]=p&255,E>=254&&(n.writeByte(E),n.writeBytesView(a,0,E),E=0),p>>=8,m-=8;E>0&&(n.writeByte(E),n.writeBytesView(a,0,E),E=0)}}}var Ztt=Qtt;function $he(e,t,o){return e<<8&63488|t<<2&992|o>>3}function Ghe(e,t,o,r){return e>>4|t&240|(o&240)<<4|(r&240)<<8}function Hhe(e,t,o){return e>>4<<8|t&240|o>>4}function xC(e,t,o){return eo?o:e}function r4(e){return e*e}function Fhe(e,t,o){var r=0,n=1e100;let a=e[t],s=a.cnt,l=a.ac,c=a.rc,u=a.gc,p=a.bc;for(var m=a.fw;m!=0;m=e[m].fw){let x=e[m],v=x.cnt,y=s*v/(s+v);if(!(y>=n)){var g=0;o&&(g+=y*r4(x.ac-l),g>=n)||(g+=y*r4(x.rc-c),!(g>=n)&&(g+=y*r4(x.gc-u),!(g>=n)&&(g+=y*r4(x.bc-p),!(g>=n)&&(n=g,r=m))))}}a.err=n,a.nn=r}function Sq(){return{ac:0,rc:0,gc:0,bc:0,cnt:0,nn:0,fw:0,bk:0,tm:0,mtm:0,err:0}}function Ytt(e,t){let o=t==="rgb444"?4096:65536,r=new Array(o),n=e.length;if(t==="rgba4444")for(let a=0;a>24&255,c=s>>16&255,u=s>>8&255,p=s&255,m=Ghe(p,u,c,l),g=m in r?r[m]:r[m]=Sq();g.rc+=p,g.gc+=u,g.bc+=c,g.ac+=l,g.cnt++}else if(t==="rgb444")for(let a=0;a>16&255,c=s>>8&255,u=s&255,p=Hhe(u,c,l),m=p in r?r[p]:r[p]=Sq();m.rc+=u,m.gc+=c,m.bc+=l,m.cnt++}else for(let a=0;a>16&255,c=s>>8&255,u=s&255,p=$he(u,c,l),m=p in r?r[p]:r[p]=Sq();m.rc+=u,m.gc+=c,m.bc+=l,m.cnt++}return r}function Jtt(e,t,o={}){let{format:r="rgb565",clearAlpha:n=!0,clearAlphaColor:a=0,clearAlphaThreshold:s=0,oneBitAlpha:l=!1}=o;if(!e||!e.buffer)throw new Error("quantize() expected RGBA Uint8Array data");if(!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw new Error("quantize() expected RGBA Uint8Array data");let c=new Uint32Array(e.buffer),u=o.useSqrt!==!1,p=r==="rgba4444",m=Ytt(c,r),g=m.length,x=g-1,v=new Uint32Array(g+1);for(var y=0,k=0;k1&&(E=I>>1,!(m[w=v[E]].err<=N));I=E)v[I]=w;v[I]=k}var B=y-t;for(k=0;k=_.mtm&&m[_.nn].mtm<=_.tm)break;_.mtm==x?q=v[1]=v[v[0]--]:(Fhe(m,q,!1),_.tm=k);var N=m[q].err;for(I=1;(E=I+I)<=v[0]&&(Em[v[E+1]].err&&E++,!(N<=m[w=v[E]].err));I=E)v[I]=w;v[I]=q}var $=m[_.nn],re=_.cnt,Z=$.cnt,A=1/(re+Z);p&&(_.ac=A*(re*_.ac+Z*$.ac)),_.rc=A*(re*_.rc+Z*$.rc),_.gc=A*(re*_.gc+Z*$.gc),_.bc=A*(re*_.bc+Z*$.bc),_.cnt+=$.cnt,_.mtm=++k,m[$.bk].fw=$.fw,m[$.fw].bk=$.bk,$.mtm=x}let ee=[];var ae=0;for(k=0;;++ae){let ge=xC(Math.round(m[k].rc),0,255),ke=xC(Math.round(m[k].gc),0,255),Ee=xC(Math.round(m[k].bc),0,255),Ue=255;p&&(Ue=xC(Math.round(m[k].ac),0,255),l&&(Ue=Ue<=(typeof l=="number"?l:127)?0:255),n&&Ue<=s&&(ge=ke=Ee=a,Ue=0));let it=p?[ge,ke,Ee,Ue]:[ge,ke,Ee];if(Xtt(ee,it)||ee.push(it),(k=m[k].fw)==0)break}return ee}function Xtt(e,t){for(let o=0;o=4&&t.length>=4?r[3]===t[3]:!0;if(n&&a)return!0}return!1}function yC(e,t){var o=0,r;for(r=0;r1?Math.round(e/t)*t:e}function Vtt(e,{roundRGB:t=5,roundAlpha:o=10,oneBitAlpha:r=null}={}){let n=new Uint32Array(e.buffer);for(let a=0;a>24&255,c=s>>16&255,u=s>>8&255,p=s&255;l=vC(l,o),r&&(l=l<=(typeof r=="number"?r:127)?0:255),p=vC(p,t),u=vC(u,t),c=vC(c,t),n[a]=l<<24|c<<16|u<<8|p<<0}}function eot(e,t,o="rgb565"){if(!e||!e.buffer)throw new Error("quantize() expected RGBA Uint8Array data");if(!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw new Error("quantize() expected RGBA Uint8Array data");if(t.length>256)throw new Error("applyPalette() only works with 256 colors or less");let r=new Uint32Array(e.buffer),n=r.length,a=o==="rgb444"?4096:65536,s=new Uint8Array(n),l=new Array(a),c=o==="rgba4444";if(o==="rgba4444")for(let u=0;u>24&255,g=p>>16&255,x=p>>8&255,v=p&255,y=Ghe(v,x,g,m),A=y in l?l[y]:l[y]=tot(v,x,g,m,t);s[u]=A}else{let u=o==="rgb444"?Hhe:$he;for(let p=0;p>16&255,x=m>>8&255,v=m&255,y=u(v,x,g),A=y in l?l[y]:l[y]=oot(v,x,g,t);s[p]=A}}return s}function tot(e,t,o,r,n){let a=0,s=1e100;for(let l=0;ls)continue;let m=c[0];if(p+=vh(m-e),p>s)continue;let g=c[1];if(p+=vh(g-t),p>s)continue;let x=c[2];p+=vh(x-o),!(p>s)&&(s=p,a=l)}return a}function oot(e,t,o,r){let n=0,a=1e100;for(let s=0;sa)continue;let p=l[1];if(u+=vh(p-t),u>a)continue;let m=l[2];u+=vh(m-o),!(u>a)&&(a=u,n=s)}return n}function not(e,t,o=5){if(!e.length||!t.length)return;let r=e.map(s=>s.slice(0,3)),n=o*o,a=e[0].length;for(let s=0;sa?l=l.slice(0,3):l=l.slice();let c=qhe(r,l.slice(0,3),yC),u=c[0],p=c[1];p>0&&p<=n&&(e[u]=l)}}function vh(e){return e*e}function jhe(e,t,o=yC){let r=1/0,n=-1;for(let a=0;a=0&&sot(r,w)}let B=Math.round(A/10);iot(r,E,B,v,y);let _=!!k&&!N;lot(r,m,g,_?k:null),_&&_he(r,k),cot(r,p,m,g,I,a,s,l)}};function u(){Khe(r,"GIF89a")}}function iot(e,t,o,r,n){e.writeByte(33),e.writeByte(249),e.writeByte(4),n<0&&(n=0,r=!1);var a,s;r?(a=1,s=2):(a=0,s=0),t>=0&&(s=t&7),s<<=2,e.writeByte(0|s|0|a),Uf(e,o),e.writeByte(n||0),e.writeByte(0)}function aot(e,t,o,r,n=8){let l=wq(r.length)-1,c=128|n-1<<4|0|l,u=0,p=0;Uf(e,t),Uf(e,o),e.writeBytes([c,u,p])}function sot(e,t){e.writeByte(33),e.writeByte(255),e.writeByte(11),Khe(e,"NETSCAPE2.0"),e.writeByte(3),e.writeByte(1),Uf(e,t),e.writeByte(0)}function _he(e,t){let o=1<>8&255)}function Khe(e,t){for(var o=0;on.localName===e);return o?Object.values(o).find(n=>typeof n=="function")?.():void 0}function AC(e,t){let o=W.getChannel(e);return!o||o.isPrivate()?!0:ht.can(t,o)}function i4(e,t){return!e[t]||/\s/.test(e[t])?"":" "}function got({modalProps:e,resolve:t}){let o=mn.use(["disableEmbedPermissionCheck"]);return i(Dn,{...e,title:"Hold on!",subtitle:"You are trying to send/edit a message that contains a FakeNitro emoji or sticker, however you do not have permissions to embed links in the current channel. Are you sure you want to send this message? Your FakeNitro items will appear as a link only.",confirmText:"Send Anyway",cancelText:"Cancel",onConfirm:()=>t(!0),onCloseCallback:()=>setImmediate(()=>t(!1)),checkboxProps:{checked:o.disableEmbedPermissionCheck===!0,onChange:r=>o.disableEmbedPermissionCheck=r}})}function Vhe(){return new Promise(e=>{ce(t=>i(got,{modalProps:t,resolve:e}))})}var uv,Qhe,wC,yh,Zhe,dot,bC,kq,Cq,SC,Yhe,Jhe,Tq,txe,mn,pot,mot,Xhe,fot,kC,oxe=h(()=>{"use strict";d();yc();j();Je();Lhe();O();_e();He();R();co();le();C();uv=Xu(cv()),Qhe=Ae("readerFactory");wC=ln(()=>ba.PreloadedUserSettingsActionCreators),yh=ln(()=>exe("appearance",wC.ProtoClass)),Zhe=ln(()=>exe("clientThemeSettings",yh)),dot=Oe(".getUserIsAdmin("),bC="[3,4].includes(fakeNitroIntention)",kq=/\/emojis\/(\d+?)\.(png|webp|gif)/,Cq=/\/stickers\/(\d+?)\./,SC=/\/attachments\/\d+?\/\d+?\/(\d+?)\.gif/,Yhe=/\[.+?\]\((https?:\/\/.+?)\)/,Jhe=[16,32,48,56,64,96,128,160,256,512,1024],Tq=48,txe=160,mn=M({enableEmojiBypass:{description:"Allows sending fake emojis (also bypasses missing permission to use custom emojis)",type:3,default:!0,restartNeeded:!0},emojiSize:{description:"Size of the emojis when sending",type:4,default:Tq,options:Jhe.map(e=>({label:`${e}px`,value:e}))},transformEmojis:{description:"Whether to transform fake emojis into real ones",type:3,default:!0,restartNeeded:!0},enableStickerBypass:{description:"Allows sending fake stickers (also bypasses missing permission to use stickers)",type:3,default:!0,restartNeeded:!0},stickerSize:{description:"Size of the stickers when sending",type:4,default:txe,options:Jhe.map(e=>({label:`${e}px`,value:e}))},transformStickers:{description:"Whether to transform fake stickers into real ones",type:3,default:!0,restartNeeded:!0},transformCompoundSentence:{description:"Whether to transform fake stickers and emojis in compound sentences (sentences with more content than just the fake emoji or sticker link)",type:3,default:!1},enableStreamQualityBypass:{description:"Allow streaming in nitro quality",type:3,default:!0,restartNeeded:!0},useStickerHyperLinks:{description:"Whether to use hyperlinks when sending fake stickers",type:3,default:!0},useEmojiHyperLinks:{description:"Whether to use hyperlinks when sending fake emojis",type:3,default:!0},hyperLinkText:{description:"What text the hyperlink should use. {{NAME}} will be replaced with the emoji/sticker name.",type:0,default:"{{NAME}}"},disableEmbedPermissionCheck:{description:"Whether to disable the embed permission check when sending fake emojis and stickers",type:3,default:!1}});pot=e=>AC(e,ct.USE_EXTERNAL_EMOJIS),mot=e=>AC(e,ct.USE_EXTERNAL_STICKERS),Xhe=e=>AC(e,ct.EMBED_LINKS),fot=e=>AC(e,ct.ATTACH_FILES);kC=S({name:"FakeNitro",authors:[b.Arjix,b.D3SOX,b.Ven,b.fawn,b.captain,b.Nuckyz,b.AutumnVN,b.sadan],description:"Allows you to send fake emojis/stickers, use nitro themes, and stream in nitro quality",tags:["Emotes","Appearance","Customisation","Chat"],dependencies:["MessageEventsAPI"],settings:mn,patches:[{find:"canUseCustomStickersEverywhere:",replacement:[{match:/(?<=canUseCustomStickersEverywhere:function\(\i\)\{)/,replace:"return true;",predicate:()=>mn.store.enableStickerBypass},{match:/(?<=canUseHighVideoUploadQuality:function\(\i\)\{)/,replace:"return true;",predicate:()=>mn.store.enableStreamQualityBypass},{match:/(?<=canStreamQuality:function\(\i,\i\)\{)/,replace:"return true;",predicate:()=>mn.store.enableStreamQualityBypass},{match:/(?<=canUseClientThemes:function\(\i\)\{)/,replace:"return true;"},{match:/(?<=canUsePremiumAppIcons:function\(\i\)\{)/,replace:"return true;"}]},{find:'.getByName("fork_and_knife")',predicate:()=>mn.store.enableEmojiBypass,replacement:{match:".CHAT",replace:".STATUS"}},{find:".GUILD_SUBSCRIPTION_UNAVAILABLE;",group:!0,predicate:()=>mn.store.enableEmojiBypass,replacement:[{match:/(?<=\.USE_EXTERNAL_EMOJIS.+?;)(?<=intention:(\i).+?)/,replace:(e,t)=>`const fakeNitroIntention=${t};`},{match:/&&!\i&&!\i(?=\)return \i\.\i\.DISALLOW_EXTERNAL;)/,replace:e=>`${e}&&!${bC}`},{match:/!\i\.available(?=\)return \i\.\i\.GUILD_SUBSCRIPTION_UNAVAILABLE;)/,replace:e=>`${e}&&!${bC}`},{match:/(?<=!\(\i\|\|)\i\.\i\.canUseEmojisEverywhere\(\i\)/,replace:e=>`(${e}||${bC})`},{match:/(?<=\|\|)\i\.\i\.canUseAnimatedEmojis\(\i\)/,replace:e=>`(${e}||${bC})`}]},{find:".getUserIsAdmin(",replacement:{match:/(function \i\(\i,\i)\){(.{0,250}.getUserIsAdmin\(.+?return!1})/,replace:(e,t,o)=>`${t},fakeNitroOriginal){if(!fakeNitroOriginal)return false;${o}`}},{find:'"SENDABLE"',predicate:()=>mn.store.enableStickerBypass,replacement:{match:/\i\.available\?/,replace:"true?"}},{find:"#{intl::STREAM_FPS_OPTION}",predicate:()=>mn.store.enableStreamQualityBypass,replacement:{match:/guildPremiumTier:\i\.\i\.TIER_\d,?/g,replace:""}},{find:'"UserSettingsProtoStore"',replacement:[{match:/(?<=CONNECTION_OPEN:function\((\i)\){)/,replace:(e,t)=>`$self.handleProtoChange(${t}.userSettingsProto,${t}.user);`},{match:/let{settings:/,replace:"arguments[0].local||$self.handleProtoChange(arguments[0].settings.proto);$&"}]},{find:",updateTheme(",replacement:{match:/(function \i\(\i\){let{backgroundGradientPresetId:(\i).+?)(\i\.\i\.updateAsync.+?theme=(.+?),.+?},\i\))/,replace:(e,t,o,r,n)=>`${t}$self.handleGradientThemeSelect(${o},${n},()=>${r});`}},{find:".CLIENT_THEMES_EDITOR?",replacement:{match:/(?<=\i=)\(0,\i\.\i\)\(\i\.\i\.TIER_2\)(?=,|;)/g,replace:"true"}},{find:'["strong","em","u","text","inlineCode","s","spoiler"]',replacement:[{predicate:()=>mn.store.transformEmojis,match:/1!==(\i)\.length\|\|1!==\i\.length/,replace:(e,t)=>`${e}||$self.shouldKeepEmojiLink(${t}[0])`},{predicate:()=>mn.store.transformEmojis||mn.store.transformStickers,match:/(?=return{hasSpoilerEmbeds:\i,hasBailedAst:\i,content:(\i))/,replace:(e,t)=>`${t}=$self.patchFakeNitroEmojisOrRemoveStickersLinks(${t},arguments[2]?.formatInline);`}]},{find:"}renderStickersAccessories(",replacement:[{predicate:()=>mn.store.transformEmojis||mn.store.transformStickers,match:/(renderEmbeds\((\i)\){)(.+?embeds\.map\(\((\i),\i\)?=>{)/,replace:(e,t,o,r,n)=>`${t}const fakeNitroMessage=${o};${r}if($self.shouldIgnoreEmbed(${n},fakeNitroMessage))return null;`},{predicate:()=>mn.store.transformStickers,match:/renderStickersAccessories\((\i)\){let (\i)=\(0,\i\.\i\)\(\i\).+?;/,replace:(e,t,o)=>`${e}${o}=$self.patchFakeNitroStickers(${o},${t});`},{predicate:()=>mn.store.transformStickers,match:/renderAttachments\(\i\){.+?{attachments:(\i).+?;/,replace:(e,t)=>`${e}${t}=$self.filterAttachments(${t});`}]},{find:"#{intl::STICKER_POPOUT_UNJOINED_PRIVATE_GUILD_DESCRIPTION}",predicate:()=>mn.store.transformStickers,replacement:[{match:/let{renderableSticker:(\i).{0,270}sticker:\i,channel:\i,/,replace:(e,t)=>`${e}fakeNitroRenderableSticker:${t},`},{match:/(let \i,{sticker:\i,channel:\i,closePopout:\i.+?}=(\i).+?;)(.+?description:)(\i)(?=,sticker:\i)/,replace:(e,t,o,r,n)=>`${t}let{fakeNitroRenderableSticker}=${o};${r}$self.addFakeNotice(0,${n},!!fakeNitroRenderableSticker?.fake)`}]},{find:".EMOJI_UPSELL_POPOUT_MORE_EMOJIS_OPENED,",predicate:()=>mn.store.transformEmojis,replacement:{match:/isDiscoverable:\i,shouldHideRoleSubscriptionCTA:\i,(?<={node:(\i),.+?)/,replace:(e,t)=>`${e}fakeNitroNode:${t},`}},{find:"#{intl::EMOJI_POPOUT_UNJOINED_DISCOVERABLE_GUILD_DESCRIPTION}",predicate:()=>mn.store.transformEmojis,replacement:{match:/(?<=emojiDescription:)(\i)(?<=\1=function\(\i\)\{let\{sourceType:.+?)/,replace:(e,t)=>`$self.addFakeNotice(1,${t},!!arguments[0]?.fakeNitroNode?.fake)`}},{find:"getCurrentDesktopIcon(),",replacement:{match:/\i\.\i\.isPremium\(\i\.\i\.getCurrentUser\(\)\)/,replace:"true"}},{find:'type:"GUILD_SOUNDBOARD_SOUND_CREATE"',replacement:{match:/(?<=type:"(?:SOUNDBOARD_SOUNDS_RECEIVED|GUILD_SOUNDBOARD_SOUND_CREATE|GUILD_SOUNDBOARD_SOUND_UPDATE|GUILD_SOUNDBOARD_SOUNDS_UPDATE)".+?available:)\i\.available/g,replace:"true"}}],get guildId(){return Ss()?.id},get canUseEmotes(){return(es.getState().premiumTypeActual??0)>0},get canUseStickers(){return(es.getState().premiumTypeActual??0)>1},handleProtoChange(e,t){try{if(e==null||typeof e=="string")return;if((es.getState().premiumTypeActual??0)!==2){e.appearance??=yh.create();let r=dc.settings.appearance,n=yh.create({...e.appearance,theme:r?.theme,clientThemeSettings:r?.clientThemeSettings});e.appearance=n}}catch(o){new ie("FakeNitro").error(o)}},handleGradientThemeSelect(e,t,o){if((es.getState().premiumTypeActual??0)===2||e==null)return o();if(!wC||!yh||!Zhe||!Qhe)return;let n=wC.getCurrentValue().appearance,a=n!=null?yh.fromBinary(yh.toBinary(n),Qhe):yh.create();a.theme=t;let s=Zhe.create({backgroundGradientPresetId:{value:e}});a.clientThemeSettings??=s,a.clientThemeSettings.backgroundGradientPresetId=s.backgroundGradientPresetId;let l=wC.ProtoClass.create();l.appearance=a,Q.dispatch({type:"USER_SETTINGS_PROTO_UPDATE",local:!0,partial:!0,settings:{type:1,proto:l}})},trimContent(e){let t=e[0];typeof t=="string"?(e[0]=t.trimStart(),e[0]||e.shift()):typeof t?.props?.children=="string"&&(t.props.children=t.props.children.trimStart(),t.props.children||e.shift());let o=e.length-1,r=e[o];typeof r=="string"?(e[o]=r.trimEnd(),e[o]||e.pop()):typeof r?.props?.children=="string"&&(r.props.children=r.props.children.trimEnd(),r.props.children||e.pop())},clearEmptyArrayItems(e){return e.filter(t=>t!=null)},ensureChildrenIsArray(e){Array.isArray(e.props.children)||(e.props.children=[e.props.children])},patchFakeNitroEmojisOrRemoveStickersLinks(e,t){if((e.length>1||typeof e[0]?.type=="string")&&!mn.store.transformCompoundSentence)return e;let o=e.length,r=l=>{if(mn.store.transformEmojis){let c=l.props.href.match(kq);if(c){let u=null;try{u=new URL(l.props.href)}catch{}let p=ar.getCustomEmojiById(c[1])?.name??u?.searchParams.get("name")??"FakeNitroEmoji",m=c[2]==="gif"||u?.searchParams.get("animated")==="true";return kt.defaultRules.customEmoji.react({jumboable:!t&&e.length===1&&typeof e[0].type!="string",animated:m,emojiId:c[1],name:p,fake:!0},void 0,{key:String(o++)})}}if(mn.store.transformStickers){if(Cq.test(l.props.href))return null;let c=l.props.href.match(SC);if(c&&ra.getStickerById(c[1]))return null}return l},n=l=>l?.props?.trusted!=null?r(l):l?.props?.children!=null?Array.isArray(l.props.children)?(l.props.children=s(l.props.children),l.props.children.length===0?null:l):(l.props.children=a(l.props.children),l):l,a=l=>{let c=n(l);if(c?.type==="ul"||c?.type==="ol"){if(this.ensureChildrenIsArray(c),c.props.children.length===0)return null;let u=!1;for(let[p,m]of c.props.children.entries()){if(m==null){delete c.props.children[p];continue}this.ensureChildrenIsArray(m),m.props.children.length>0?u=!0:delete c.props.children[p]}if(!u)return null;c.props.children=this.clearEmptyArrayItems(c.props.children)}return c},s=l=>{for(let[c,u]of l.entries())l[c]=a(u);return l=this.clearEmptyArrayItems(l),l};try{let l=s(ia.cloneDeep(e));return this.trimContent(l),l}catch(l){return new ie("FakeNitro").error(l),e}},patchFakeNitroStickers(e,t){let o=[],r=t.content.split(/\s/);mn.store.transformCompoundSentence?o.push(...r):r.length===1&&o.push(r[0]),o.push(...t.attachments.filter(n=>n.content_type==="image/gif").map(n=>n.url));for(let n of o){if(!mn.store.transformCompoundSentence&&!n.startsWith("http")&&!Yhe.test(n))continue;let a=n.match(Cq);if(a){let l=null;try{l=new URL(n)}catch{}let c=ra.getStickerById(a[1])?.name??l?.searchParams.get("name")??"FakeNitroSticker";e.push({format_type:1,id:a[1],name:c,fake:!0});continue}let s=n.match(SC);if(s){if(!ra.getStickerById(s[1]))continue;let l=ra.getStickerById(s[1])?.name??"FakeNitroSticker";e.push({format_type:2,id:s[1],name:l,fake:!0})}}return e},shouldIgnoreEmbed(e,t){try{let o=t.content.split(/\s/);if(o.length>1&&!mn.store.transformCompoundSentence)return!1;switch(e.type){case"image":{let r=e.url??e.image?.url;if(!r||!mn.store.transformCompoundSentence&&!o.some(n=>n===r||n.match(Yhe)?.[1]===r))return!1;if(mn.store.transformEmojis&&kq.test(r))return!0;if(mn.store.transformStickers){if(Cq.test(r))return!0;let n=r.match(SC);if(n&&ra.getStickerById(n[1]))return!0}break}}}catch(o){new ie("FakeNitro").error("Error in shouldIgnoreEmbed:",o)}return!1},filterAttachments(e){return e.filter(t=>{if(t.content_type!=="image/gif")return!0;let o=t.url.match(SC);return!(o&&ra.getStickerById(o[1]))})},shouldKeepEmojiLink(e){return e.target&&kq.test(e.target)},addFakeNotice(e,t,o){if(!o)return t;switch(t=Array.isArray(t)?t:[t],e){case 0:return t.push(" This is a FakeNitro sticker and renders like a real sticker only for you. Appears as a link to non-plugin users."),t;case 1:return t.push(" This is a FakeNitro emoji and renders like a real emoji only for you. Appears as a link to non-plugin users."),t}},getStickerLink({format_type:e,id:t}){let o=e===4?"gif":"png";return`https://media.discordapp.net/stickers/${t}.${o}?size=${mn.store.stickerSize}`},async sendAnimatedSticker(e,t,o){let{frames:r,width:n,height:a}=await fetch(e).then(x=>x.arrayBuffer()).then(Rhe),s=(0,uv.GIFEncoder)(),l=mn.store.stickerSize??txe,c=document.createElement("canvas");c.width=l,c.height=l;let u=c.getContext("2d",{willReadFrequently:!0}),p=l/Math.max(n,a);u.scale(p,p);let m;for(let x of r){let{left:v,top:y,width:A,height:k,img:w,delay:I,blendOp:E,disposeOp:N}=x;m=u.getImageData(v,y,A,k),E===0&&u.clearRect(v,y,A,k),u.drawImage(w,v,y,A,k);let{data:B}=u.getImageData(0,0,l,l),_=(0,uv.quantize)(B,256),q=(0,uv.applyPalette)(B,_);s.writeFrame(q,l,l,{transparent:!0,palette:_,delay:I}),N===1?u.clearRect(v,y,A,k):N===2&&u.putImageData(m,v,y)}s.finish();let g=new File([s.bytesView()],`${t}.gif`,{type:"image/gif"});Mr.promptToUpload([g],W.getChannel(o),yo.ChannelMessage)},canUseEmote(e,t){if(e.type===0)return!0;if(e.available===!1||dot(e,this.guildId,!0))return!1;let o=!1;if(e.managed&&e.guildId){let r=bt.getSelfMember(e.guildId)?.roles??[];o=e.roles.some(n=>r.includes(n))}return this.canUseEmotes||o?e.guildId===this.guildId||pot(t):!e.animated&&e.guildId===this.guildId},start(){let e=mn.store;!e.enableEmojiBypass&&!e.enableStickerBypass||(this.preSend=ni(async(t,o,r)=>{let{guildId:n}=this,a=!1;e:{if(!e.enableStickerBypass)break e;let s=ra.getStickerById(r.stickerIds?.[0]);if(!s||"pack_id"in s)break e;let l=this.canUseStickers&&mot(t);if(s.available!==!1&&(l||s.guild_id===n))break e;let c=this.getStickerLink(s);if(s.format_type===2)return fot(t)?this.sendAnimatedSticker(c,s.id,t):ce(u=>i(Dn,{...u,title:"Hold on!",confirmText:"OK",variant:"primary"},i("div",null,i(U,null,"You cannot send this message because it contains an animated FakeNitro sticker, and you do not have permissions to attach files in the current channel. Please remove the sticker to proceed.")))),{cancel:!0};{a=!0;let u=new URL(c);u.searchParams.set("name",s.name),u.searchParams.set("lossless","true");let p=e.hyperLinkText.replaceAll("{{NAME}}",s.name);o.content+=`${i4(o.content,o.content.length-1)}${e.useStickerHyperLinks?`[${p}](${u})`:u}`,r.stickerIds.length=0}}if(e.enableEmojiBypass)for(let s of o.validNonShortcutEmojis){if(this.canUseEmote(s,t))continue;a=!0;let l=e.emojiSize??Tq,c=`<${s.animated?"a":""}:${s.originalName||s.name}:${s.id}>`,u=new URL(at.getEmojiURL({id:s.id,animated:s.animated,size:l}));u.searchParams.set("size",l.toString()),u.searchParams.set("name",s.name),u.searchParams.set("lossless","true"),s.animated&&(u.pathname=u.pathname.replace(".webp",".gif"));let p=e.hyperLinkText.replaceAll("{{NAME}}",s.name);o.content=o.content.replace(c,(m,g,x)=>`${i4(x,g-1)}${e.useEmojiHyperLinks?`[${p}](${u})`:u}${i4(x,g+m.length)}`)}return a&&!e.disableEmbedPermissionCheck&&!Xhe(t)&&!await Vhe()?{cancel:!0}:{cancel:!1}}),this.preEdit=Q0(async(t,o,r)=>{if(!e.enableEmojiBypass)return;let n=!1;return r.content=r.content.replace(/(?/ig,(a,s,l,c)=>{let u=ar.getCustomEmojiById(s);if(u==null||this.canUseEmote(u,t))return a;n=!0;let p=e.emojiSize??Tq,m=new URL(at.getEmojiURL({id:u.id,animated:u.animated,size:p}));m.searchParams.set("size",p.toString()),m.searchParams.set("name",u.name),m.searchParams.set("lossless","true");let g=e.hyperLinkText.replaceAll("{{NAME}}",u.name);return`${i4(c,l-1)}${e.useEmojiHyperLinks?`[${g}](${m})`:m}${i4(c,l+a.length)}`}),n&&!e.disableEmbedPermissionCheck&&!Xhe(t)&&!await Vhe()?{cancel:!0}:{cancel:!1}}))},stop(){ri(this.preSend),Z0(this.preEdit)}})});var nxe=h(()=>{});function hot(...e){let t={};function o(n){for(let a=e.length-1;a>=0;a--)if(n in e[a])return e[a];return t}let r={ownKeys(){return e.reduce((n,a)=>(n.push(...Reflect.ownKeys(a)),n),Reflect.ownKeys(t))}};for(let n of["defineProperty","deleteProperty","get","getOwnPropertyDescriptor","has","set"])r[n]=function(a,...s){return Reflect[n](o(s[0]),...s)};return new Proxy(t,r)}var rxe,ixe=h(()=>{d();rxe=hot});function sxe(e,t){let o=`[#${e.toString(16).padStart(6,"0")},#${t.toString(16).padStart(6,"0")}]`,r="",n=Array.from(o).map(a=>a.codePointAt(0)).filter(a=>a>=32&&a<=127).map(a=>String.fromCodePoint(a+917504)).join("");return(r||"")+" "+n}function lxe(e){if(e==null)return null;let t=e.match(/\u{e005b}\u{e0023}([\u{e0061}-\u{e0066}\u{e0041}-\u{e0046}\u{e0030}-\u{e0039}]{1,6})\u{e002c}\u{e0023}([\u{e0061}-\u{e0066}\u{e0041}-\u{e0046}\u{e0030}-\u{e0039}]{1,6})\u{e005d}/u);if(t!=null){let o=[...t[0]].map(n=>String.fromCodePoint(n.codePointAt(0)-917504)).join("");return o.substring(1,o.length-1).split(",").map(n=>parseInt(n.replace("#","0x"),16))}else return null}function vot(){let[,,e]=Ro(()=>Ym(L.getCurrentUser().id));return!e&&i(yot,null)}function yot(){let e=lxe(Co.getUserProfile(L.getCurrentUser().id)?.bio??"")??[0,0],[t,o]=T(e[0]),[r,n]=T(e[1]);return i("section",null,i(Ot,null,"Usage"),i(U,null,"After enabling this plugin, you will see custom colors in the profiles of other people using compatible plugins."," "),i(U,{className:z.top8},i("strong",null,"To set your own profile theme colors:"),i("ul",null,i("li",null,"\u2014 use the color pickers below to choose your colors"),i("li",null,'\u2014 click the "Copy 3y3" button'),i("li",null,"\u2014 paste the invisible text anywhere in your bio")),i(Rt,{className:X(z.top8,z.bottom8)}),i(Ia.FormTitle,{tag:"h3"},"Color pickers"),i(pe,{gap:"1em"},i(Pr,{color:t,label:i(Y,{size:"xs",style:{marginTop:"4px"}},"Primary"),onChange:a=>{o(a)}}),i(Pr,{color:r,label:i(Y,{size:"xs",style:{marginTop:"4px"}},"Accent"),onChange:a=>{n(a)}}),i(ue,{onClick:()=>{let a=sxe(t,r);ft(a)},color:ue.Colors.PRIMARY,size:ue.Sizes.XLARGE,style:{marginBottom:"auto"}},"Copy 3y3")),i(Rt,{className:X(z.top8,z.bottom8)}),i(Ot,null,"Preview"),i("div",{className:"vc-fpt-preview"},i(xot,{user:L.getCurrentUser(),pendingThemeColors:[t,r],onAvatarChange:()=>{},onBannerChange:()=>{},canUsePremiumCustomization:!0,hideExampleButton:!0,hideFakeActivity:!0,isTryItOut:!0}))))}var axe,xot,CC,cxe=h(()=>{"use strict";d();nxe();j();yt();xr();Pe();Lt();We();Je();O();_e();Wt();Be();Kt();R();le();C();ixe();axe=M({nitroFirst:{description:"Default color source if both are present",type:4,options:[{label:"Nitro colors",value:!0,default:!0},{label:"Fake colors",value:!1}]}}),xot=he("isTryItOut:","pendingThemeColors:","pendingAvatarDecoration:","EDIT_PROFILE_BANNER");CC=S({name:"FakeProfileThemes",description:"Allows profile theming by hiding the colors in your bio thanks to invisible 3y3 encoding",tags:["Appearance","Customisation"],authors:[b.Alyxia,b.Remty],patches:[{find:"UserProfileStore",replacement:{match:/(?<=getUserProfile\(\i\){return )(.+?)(?=})/,replace:"$self.colorDecodeHook($1)"}},{find:"#{intl::USER_SETTINGS_RESET_PROFILE_THEME}),onClick:",replacement:{match:/#{intl::USER_SETTINGS_RESET_PROFILE_THEME}\).+?}\)(?=\])(?<=color:(\i),.{0,500}?color:(\i),.{0,500}?)/,replace:"$&,$self.addCopy3y3Button({primary:$1,accent:$2})"}},{find:'("UserProfileModalV2EditingPanel")',replacement:[{match:/disabled:\i\|\|\i\}\)/,replace:"$&,$self.addCopy3y3Button()"}]}],settingsAboutComponent:vot,settings:axe,colorDecodeHook(e){if(e?.bio){if(axe.store.nitroFirst&&e.themeColors)return e;let t=lxe(e.bio);if(t)return rxe(e,{premiumType:2,themeColors:t})}return e},addCopy3y3Button:H.wrap(function({primary:e,accent:t}){return i(ue,{onClick:()=>{let o=sxe(e,t);ft(o)},color:ue.Colors.PRIMARY,size:ue.Sizes.XLARGE},"Copy 3y3")},{noop:!0})})});var uxe=h(()=>{});function dxe({modalProps:e,onConfirm:t}){return i(be,{...e,size:"sm",title:"Delete all aliases",actions:[{text:"Delete all aliases",variant:"danger-primary",onClick:async()=>{await t(),e.onClose()}}]},i(U,null,"This will remove every emoji alias you saved."))}var pxe=h(()=>{"use strict";d();Je();C()});function mxe({modalProps:e,emojiDisplayName:t,initialAlias:o,getValidationError:r,isDuplicateAlias:n,onSave:a}){let[s,l]=T(o),[c,u]=T(null),p=r(s),m=n(s),g=m?"Duplicate alias":c??p;return i(be,{...e,size:"sm",title:"Set alias",actions:[{text:"Save",variant:"primary",disabled:!(!p&&!m),onClick:async()=>{let v=await a(s);if(!v.ok){u(v.error);return}e.onClose()}}]},i(U,{style:{margin:0,marginBottom:8}},"Set an alias for ",t),i(Te,{value:s,onChange:v=>{l(v),u(null)},placeholder:'Alias, e.g. "sob"'}),g&&i(Y,{style:{color:"var(--text-feedback-critical)",marginTop:8}},g))}var fxe=h(()=>{"use strict";d();yt();Je();C()});function yxe(e){return Eq.add(e),()=>{Eq.delete(e)}}function bxe(){for(let e of Eq)e()}function c4(e){return typeof e!="string"?"":e.trim().replace(/^:+|:+$/g,"").toLowerCase()}function xu(e){return e.trim().replace(/^:+|:+$/g,"")}function Dq(e){return xu(e??"").toLowerCase()}function Sxe(e){let t=c4(e);return t.length?/^[a-z0-9_]{2,32}$/.test(t)?null:"Alias must be 2-32 characters and only use lowercase letters, numbers, or underscores.":"Alias is required."}function Sot(e){if(!e||typeof e!="object")return!1;let t=e;return!(t.kind!=="custom"&&t.kind!=="unicode"||typeof t.name!="string"||t.name.length===0||t.kind==="custom"&&(!t.id||typeof t.id!="string")||t.id!=null&&typeof t.id!="string"||t.surrogates!=null&&typeof t.surrogates!="string"||t.animated!=null&&typeof t.animated!="boolean")}function wot(e){if(!e||typeof e!="object"||Array.isArray(e))return dv.warn("Alias store was invalid and has been reset."),{};let t={};for(let[o,r]of Object.entries(e)){if(!/^[a-z0-9_]{2,32}$/.test(o)||!Sot(r)){dv.warn(`Ignoring invalid alias entry: ${o}`);continue}if(r.kind==="unicode"){let n=Nd(r)??wh(r.name);t[o]={...r,name:xu(r.name),surrogates:n};continue}t[o]=r}return t}async function Aot(){try{za=wot(await Le.get(xxe))}catch(e){za={},dv.error("Failed to load emoji aliases.",e)}s4.clear(),Sh.clear(),bxe()}async function Mq(e){za=e,await Le.set(xxe,za),Sh.clear(),bxe()}function l4(e){if(e.kind==="custom"&&e.id)return`custom:${e.id}`;let t=Nd(e)?.trim();return t?`unicode:${t}`:`unicode-name:${e.name.toLowerCase()}`}function Nq(e){let t=e.id??e.emojiObject?.id;if(t)return`custom:${t}`;let o=(e.surrogates??e.emojiObject?.surrogates)?.trim();return o?`unicode:${o}`:`unicode-name:${(e.uniqueName??e.name??e.emojiObject?.name??"").toLowerCase()}`}function TC(e,t){return l4(e)===l4(t)}function IC(e){return e.kind==="custom"?`:${e.name}:`:Nd(e)??wh(e.name)??`:${xu(e.name)}:`}function pv(e){try{let t=new URL(e);return t.pathname.endsWith(".gif")||t.searchParams.get("animated")==="true"}catch{return!1}}function em(e){return e?e.match(/\p{Extended_Pictographic}(?:\uFE0F|\u200D\p{Extended_Pictographic})*/u)?.[0]??null:null}function Nd(e){return e.surrogates??em(e.name)??void 0}function wh(e){let t=xu(e);if(!t.length)return;let o=s4.get(t);if(o!==void 0)return o??void 0;let r=[t,`:${t}:`];for(let n of r){let s=vxe.queryEmojiResults({query:n,channel:void 0,intention:void 0,maxCount:100})?.emojis?.unlocked;if(s?.length)for(let l of s){let c=l.surrogates??l.emojiObject?.surrogates;if(!c)continue;if(Dq(l.uniqueName??l.name??l.originalName??"")===t.toLowerCase())return s4.set(t,c),c}}s4.set(t,null)}function kot(e){let t=Nd(e)??wh(e.name);if(!t)return null;let o=Array.from(t).map(r=>r.codePointAt(0)?.toString(16)).filter(r=>!!r).join("-");return o.length?`https://twemoji.maxcdn.com/v/latest/72x72/${o}.png`:null}function Cot(e){let t=e.textContent?.trim();if(!t)return null;let o=em(t);return!o||t.replace(o,"").trim().length?null:o}function Pq(e){if(!e)return null;if(e.nodeType===Node.TEXT_NODE){let n=e.textContent?.trim();if(!n)return null;let a=em(n);return a?n.replace(a,"").trim().length?null:a:null}if(!(e instanceof HTMLElement))return null;let t=e.closest("[role='img']"),o=t?.getAttribute("aria-label")??t?.textContent,r=em(o);return r||Cot(e)}function wxe(e){let t=e?.dataset;if(!t||t.type!=="emoji"||!t.name)return null;let o=t.name.replace(/~\d+$/,"");return t.id?{kind:"custom",id:t.id,name:o,animated:!!e.firstChild?.src&&pv(e.firstChild.src)}:{kind:"unicode",name:o,surrogates:t.surrogates}}function Tot(e){let t=e instanceof HTMLElement?e:e instanceof Node?e.parentElement:null;if(!t)return null;let o=t.closest("[data-type='emoji']");if(o){let u={dataset:{id:o.dataset.id,name:o.dataset.name,surrogates:o.dataset.surrogates,type:o.dataset.type},firstChild:o.firstChild},p=wxe(u);if(p)return p}let r=t.closest("img"),n=r?.src;if(!n){let u=Pq(t)??em(r?.alt);return u?{kind:"unicode",name:u,surrogates:u}:null}let a=n.match(/\/emojis\/(\d+)\.(?:png|gif|webp|jpe?g)/);if(!a)return null;let s=a[1],l=ar.getCustomEmojiById(s),c=l?.name??r.alt?.replace(/^:|:$/g,"")??"emoji";return{kind:"custom",id:s,name:c,animated:!!l?.animated||pv(n)}}function Iot(e){let t=e.itemHref??e.itemSrc;if(!t){let s=em(e.itemTextContent);return s?{kind:"unicode",name:s,surrogates:s}:null}let o=t.match(/\/emojis\/(\d+)\.(?:png|gif|webp|jpe?g)/);if(!o)return null;let r=o[1],n=ar.getCustomEmojiById(r);if(n)return{kind:"custom",id:r,name:n.name,animated:!!n.animated||pv(t)};let a=e.favoriteableName??e.itemTextContent?.match(/:([a-zA-Z0-9_]+):/)?.[1]??e.message?.content.match(RegExp(``))?.[1]??"emoji";return{kind:"custom",id:r,name:a,animated:pv(t)}}function Eot(e){if(e.favoriteableType!=="emoji")return null;if(!e.favoriteableId){let n=Pq(e.rawTarget)??Pq(e.target instanceof Node?e.target:null)??em(e.itemTextContent);return n?{kind:"unicode",name:xu(e.favoriteableName??n),surrogates:n}:e.favoriteableName?{kind:"unicode",name:xu(e.favoriteableName)}:null}let t=e.favoriteableId,o=ar.getCustomEmojiById(t);if(o)return{kind:"custom",id:t,name:o.name,animated:!!o.animated||pv(e.itemHref??e.itemSrc??"")};let r=e.favoriteableName??e.itemTextContent?.match(/:([a-zA-Z0-9_]+):/)?.[1]??e.message?.content.match(RegExp(``))?.[1]??"emoji";return{kind:"custom",id:t,name:r,animated:pv(e.itemHref??e.itemSrc??"")}}function Dot(e){if(!(e.target instanceof HTMLElement))return null;let t=Tot(e.target);return t||Iot(e)}function Axe(e){let t=Eot(e);return t||Dot(e)}function kxe(e){if(e.favoriteableType==="emoji"||e.favoriteableId||(e.itemHref??e.itemSrc)?.includes("/emojis/"))return!0;let o=e.target instanceof HTMLElement?e.target:e.target instanceof Node?e.target.parentElement:null;if(!o)return!1;if(o.closest("[data-type='emoji']"))return!0;let r=o.closest("[role='img']");if(r){let a=r.getAttribute("aria-label")??r.textContent;if(em(a))return!0}let n=o.closest("img");return!!(n?.src?.includes("/emojis/")||em(n?.alt))}function gxe(e){if(e==null)return"";if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(typeof e!="object")return typeof e;let t=e,o=[t.id,t.channelId,t.guildId,t.type,t.emojiIntention,t.name].filter(n=>typeof n=="string"||typeof n=="number");return o.length?o.map(String).join(":"):Object.keys(t).sort().slice(0,6).map(n=>{let a=t[n];return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?`${n}:${String(a)}`:`${n}:${typeof a}`}).join("|")}function Pot(e){for(let t of e){if(t instanceof HTMLElement)return t;if(t instanceof Node)return t.parentElement;if(!t||typeof t!="object")continue;let o=t.target;if(o instanceof HTMLElement)return o;if(o instanceof Node)return o.parentElement;let r=t.nativeEvent?.target;if(r instanceof HTMLElement)return r;if(r instanceof Node)return r.parentElement}return null}function Mot(e){for(let t of e){if(t instanceof Node)return t;if(!t||typeof t!="object")continue;let o=t.target;if(o instanceof Node)return o;let r=t.nativeEvent?.target;if(r instanceof Node)return r}return null}function Cxe(e){let t={};for(let n of e){if(!n||typeof n!="object")continue;let a=n,s=a.props;a.favoriteableId&&(t.favoriteableId=a.favoriteableId),a.favoriteableName&&(t.favoriteableName=a.favoriteableName),a.favoriteableType&&(t.favoriteableType=a.favoriteableType),a.itemHref&&(t.itemHref=a.itemHref),a.itemSrc&&(t.itemSrc=a.itemSrc),a.itemTextContent&&(t.itemTextContent=a.itemTextContent),a.message&&(t.message=a.message),a.target instanceof HTMLElement&&(t.target=a.target),s&&(s.favoriteableId&&(t.favoriteableId=s.favoriteableId),s.favoriteableName&&(t.favoriteableName=s.favoriteableName),s.favoriteableType&&(t.favoriteableType=s.favoriteableType),s.itemHref&&(t.itemHref=s.itemHref),s.itemSrc&&(t.itemSrc=s.itemSrc),s.itemTextContent&&(t.itemTextContent=s.itemTextContent),s.message&&(t.message=s.message),s.target instanceof HTMLElement&&(t.target=s.target))}let o=Pot(e);o&&(t.target=o);let r=Mot(e);return r&&(t.rawTarget=r),!t.target&&!t.favoriteableId&&!t.itemHref&&!t.itemSrc?null:t}function Not(){return Object.entries(za).sort(([e],[t])=>e.localeCompare(t))}function Txe(e){for(let[t,o]of Object.entries(za))if(TC(o,e))return t;return""}async function Ixe(e,t){let o=Sxe(e);if(o)return{ok:!1,error:o};let r=c4(e),n=za[r];if(n&&!TC(n,t))return{ok:!1,error:"Duplicate alias"};let a=t.kind==="unicode"?{...t,name:xu(t.name),surrogates:Nd(t)??wh(t.name)}:t,s={...za};for(let[l,c]of Object.entries(s))l!==r&&TC(c,a)&&delete s[l];s[r]=a;try{return await Mq(s),{ok:!0}}catch(l){return dv.error("Failed to save emoji alias.",l),{ok:!1,error:"Failed to save alias."}}}function Exe(e){return Txe(e)?"Edit alias":"Set alias"}async function Bot(e){if(!(e in za))return;let t={...za};delete t[e];try{await Mq(t),D.show({id:D.genId(),message:`Removed alias :${e}:`,type:D.Type.SUCCESS})}catch(o){dv.error("Failed to remove emoji alias.",o),D.show({id:D.genId(),message:"Failed to remove alias.",type:D.Type.FAILURE})}}async function Rot(){if(Object.keys(za).length)try{await Mq({}),D.show({id:D.genId(),message:"Deleted all emoji aliases.",type:D.Type.SUCCESS})}catch(e){dv.error("Failed to clear emoji aliases.",e),D.show({id:D.genId(),message:"Failed to delete aliases.",type:D.Type.FAILURE})}}function Dxe(e){ce(t=>i(mxe,{modalProps:t,emojiDisplayName:IC(e),initialAlias:Txe(e),getValidationError:Sxe,isDuplicateAlias:o=>{let r=c4(o),n=r?za[r]:null;return!!n&&!TC(n,e)},onSave:async o=>{let r=await Ixe(o,e);return r.ok&&D.show({id:D.genId(),message:`Alias set for ${IC(e)}.`,type:D.Type.SUCCESS}),r}}))}function Lot(e,t,o){let r=[e.kind,e.id??"",xu(e.name),Nd(e)??"",gxe(t),gxe(o)].join("|"),n=Sh.get(r);if(n!==void 0)return n;let a=Nd(e)??wh(e.name)??e.name;if(!a.length)return Sh.set(r,null),null;let s=e.kind==="custom"?[e.name,`:${e.name}:`,a]:[Nd(e),xu(e.name),`:${xu(e.name)}:`,a].filter(l=>!!l&&l.length>0);for(let l of s){let u=vxe.queryEmojiResults({query:l,channel:t,intention:o,maxCount:100})?.emojis?.unlocked;if(!u?.length)continue;let p=u.find(m=>{if(e.kind==="custom")return Nq(m)===l4(e);let g=Nd(e)??wh(e.name),x=(m.surrogates??m.emojiObject?.surrogates)?.trim();if(g&&x)return g===x;if(m.id??m.emojiObject?.id)return!1;let y=Dq(e.name),A=Dq(m.uniqueName??m.name??m.originalName??"");return!!y&&y===A})??null;if(p)return Sh.set(r,p),p}return Sh.set(r,null),null}function Pxe(e,t){if(e.kind==="unicode"||!e.id)return null;let o=ar.getUsableCustomEmojiById(e.id)??ar.getCustomEmojiById(e.id);return o?!!t?.emojiObject||"emojiObject"in(t??{})?{emojiObject:{id:o.id,name:o.name,guildId:o.guildId,animated:!!o.animated},id:o.id,name:o.name,uniqueName:o.name,originalName:o.name,guildId:o.guildId,surrogates:t?.surrogates,type:t?.type??"EMOJI",index:typeof t?.index=="number"?t.index:0,useSpriteSheet:t?.useSpriteSheet??!1,names:[o.name]}:{id:o.id,name:o.name,uniqueName:o.name}:null}function hxe(e,t,o,r){let n=c4(t);if(!n)return e;let a=e[0],s=new Set(e.map(Nq)),l=[],c=[];for(let[u,p]of Object.entries(za)){if(!u.startsWith(n))continue;let m=l4(p);if(s.has(m))continue;let g=Lot(p,o,r),x=p.kind==="unicode"?g:g??Pxe(p,a);x&&(u===n?l.push(x):c.push(x),s.add(m))}return!l.length&&!c.length?e:[...l,...c,...e]}function Oot(e){return e?typeof e.queryText=="string"?e.queryText:typeof e.query=="string"?e.query:typeof e.text=="string"?e.text:"":""}function Mxe(e,t){if(e.some(s=>s?.props?.id==="vc-emoji-alias-set"))return;let r=i(P.MenuItem,{id:"vc-emoji-alias-set",label:Exe(t),action:()=>Dxe(t)}),n=wt(["favorite-emoji","favourite-emoji","unfavorite-emoji","unfavourite-emoji"],e,!0);if(n){n.push(r);return}let a=wt(["copy-link","copy-text","copy-message-link"],e,!0);if(a){a.push(r);return}e.push(r)}function Fot(){ce(e=>i(dxe,{modalProps:e,onConfirm:Rot}))}function _ot({emojiRef:e}){if(e.kind==="custom"&&e.id)return i("img",{src:`https://${window.GLOBAL_ENV.CDN_HOST}/emojis/${e.id}.${e.animated?"gif":"png"}?size=32`,width:"20",height:"20",alt:e.name});let t=kot(e);return t?i("img",{src:t,width:"20",height:"20",alt:IC(e)}):i(Y,null,IC(e))}function Uot({alias:e,emojiRef:t}){let[o,r]=T(!1),[n,a]=T(e),[s,l]=T(null);G(()=>{a(e)},[e]);let c=async()=>{let u=await Ixe(n,t);if(!u.ok){l(u.error);return}l(null),r(!1)};return i("div",{className:bh("row")},i("div",{className:bh("row-editing")},o?i(Te,{className:bh("row-editing-text-input"),value:n,autoFocus:!0,onChange:u=>{a(u),l(null)},onKeyDown:async u=>{u.key==="Enter"&&(u.preventDefault(),await c()),u.key==="Escape"&&(u.preventDefault(),a(e),l(null),r(!1))}}):i(Y,{weight:"semibold"},":",e,":"),i(Y,{className:bh("row-arrow")},"\u2192"),i(_ot,{emojiRef:t}),i(Y,null,`:${xu(t.name)}:`),s&&i(Y,{className:bh("row-error")},s)),i("div",{className:bh("row-button")},i(de,{variant:"secondary",size:"iconOnly",onClick:()=>{a(e),l(null),r(!0)}},i(Vi,{width:14,height:14})),i(de,{variant:"dangerSecondary",size:"small",onClick:()=>Bot(e)},"Remove")))}function zot(){let[,e]=T(0);G(()=>yxe(()=>e(o=>o+1)),[]);let t=Not();return t.length?i("div",{className:bh("settings")},t.map(([o,r])=>i(Uot,{key:o,alias:o,emojiRef:r}))):i(U,null,"No aliases set yet.")}function $ot(){let[,e]=T(0);G(()=>yxe(()=>e(o=>o+1)),[]);let t=!Object.keys(za).length;return i(de,{variant:"dangerPrimary",size:"small",disabled:t,onClick:Fot},"Delete all aliases")}var xxe,dv,vxe,bh,za,Eq,a4,s4,Sh,bot,Got,Iq,Hot,EC,Nxe=h(()=>{"use strict";d();uxe();Fo();on();j();yt();Tt();ot();Je();O();we();He();R();le();C();pxe();fxe();xxe="emoji-aliases",dv=new ie("EmojiAlias"),vxe=Ae("queryEmojiResults"),bh=K("vc-emoji-alias-"),za={},Eq=new Set,a4=null,s4=new Map,Sh=new Map,bot=M({aliases:{type:6,description:"Manage your emoji aliases.",component:zot},clearAll:{type:6,description:"Delete all aliases.",component:$ot}});Got=(e,{target:t})=>{let o=wxe(t);o&&e.push(i(P.MenuItem,{id:"vc-emoji-alias-set",label:Exe(o),action:()=>Dxe(o)}))},Iq=(e,...t)=>{let o=Cxe(t);if(!o||!kxe(o))return;let r=Axe(o);r&&Mxe(e,r)},Hot=(e,t)=>{!t.content||!Object.keys(za).length||(t.content=t.content.replace(/:([a-z0-9_]{2,32}):/gi,(o,r)=>{let n=za[r.toLowerCase()];return n?n.kind==="custom"&&n.id?`<${n.animated?"a":""}:${n.name}:${n.id}>`:Nd(n)??wh(n.name)??o:o}))},EC=S({name:"FavoriteEmojiFirst",authors:[b.Aria,b.Ven,F.justjxke],tags:["Emotes","Customisation"],description:"Puts your favorite emoji first in the emoji autocomplete and also has emoji alias.",dependencies:["MessagePopoverAPI"],settings:bot,contextMenus:{"expression-picker":Got,message:Iq,"message-actions":Iq,"textarea-context":Iq},isModified:!0,onBeforeMessageSend:Hot,patches:[{find:"renderResults({results:",replacement:[{match:/let \i=.{1,100}renderResults\({results:(\i)\.query\.results,/,replace:"$self.sortEmojis($1);$&"}]},{find:"renderResults({results:",replacement:{match:/let \i=.{1,100}renderResults\({results:(\i)\.query\.results,/,replace:"$self.sortEmojis($1);$&"}},{find:"numEmojiResults:",replacement:[{match:/\{emojis:\{unlocked:(\i)\}\}=.{0,25}\(\{query:(\i),channel:(\i),intention:(\i).{0,30}\}\);/,replace:"$&$1=$self.injectAliasResults($1,$2,$3,$4.emojiIntention);"},{match:/(intention:\i\.emojiIntention,maxCount:)\i/,replace:"$1Infinity"},{match:/(\i)\.slice\(0,(Math\.max\(\d+?,\i(?:-\i\.length){2}\))\)/,replace:"($1.sliceTo = $2, $1)"}]}],injectAliasResults:hxe,async start(){await Aot(),a4=(e,t,...o)=>{if(e==="expression-picker"||e==="message"||e==="message-actions"||e==="textarea-context"||t.some(s=>s?.props?.id==="vc-emoji-alias-set"))return;let n=Cxe(o);if(!n||!kxe(n))return;let a=Axe(n);a&&Mxe(t,a)},Yz(a4)},stop(){a4&&(Jz(a4),a4=null,s4.clear(),Sh.clear())},sortEmojis(e){if(!e.query?.results?.emojis?.length)return;let t=c4(Oot(e.query));if(!t)return;let{channel:o,intention:r}=e.query,n=hxe(e.query.results.emojis,t,o,r),a=ar.getDisambiguatedEmojiContext(),s=new Map,l=new Map;for(let[v,y]of Object.entries(za)){if(!v.startsWith(t))continue;let A=v===t?2:1,k=l4(y),w=s.get(k)??0;A>w&&(s.set(k,A),l.set(k,y))}let c=[],u=[],p=[],m=new Set,g=n[0],x=[...n];for(let v of x){let y=Nq(v);if(m.has(y))continue;m.add(y);let A=s.get(y)??0,k=a.isFavoriteEmojiWithoutFetchingLatest(v);A===2?c.push(v):A===1?u.push(v):k?c.push(v):p.push(v)}for(let[v,y]of s.entries()){if(m.has(v))continue;let A=l.get(v);if(!A||A.kind==="unicode")continue;let k=Pxe(A,g);k&&(m.add(v),y===2?c.push(k):u.push(k))}e.query.results.emojis=[...c,...u,...p].slice(0,e.query.results.emojis.sliceTo??1/0)}})});var DC,Bxe=h(()=>{"use strict";d();O();R();DC=S({name:"FixCodeblockGap",description:"Removes the gap between codeblocks and text below it",tags:["Appearance"],authors:[b.Grzesiek11],patches:[{find:String.raw`/^${"```"}(?:([a-z0-9_+\-.#]+?)\n)?\n*([^\n][^]*?)\n*${"```"}`,replacement:{match:String.raw`/^${"```"}(?:([a-z0-9_+\-.#]+?)\n)?\n*([^\n][^]*?)\n*${"```"}`,replace:"$&\\n?"}}]})});var Rxe,PC,Lxe=h(()=>{"use strict";d();j();Qn();Lt();Ja();Je();O();He();R();Rxe=M({originalImagesInChat:{type:3,description:"Also load the original image in Chat. WARNING: Read the caveats above",default:!1}}),PC=S({name:"FixImagesQuality",description:"Improves quality of images by loading them at their original resolution",tags:["Media","Appearance"],authors:[b.Nuckyz,b.Ven],settings:Rxe,patches:[{find:".handleImageLoad)",replacement:{match:/getSrc\(\i\)\{/,replace:"$&var _vcSrc=$self.getSrc(this?.props,arguments[1]);if(_vcSrc)return _vcSrc;"}}],settingsAboutComponent(){return i(Ht,{variant:"primary"},i(pe,{flexDirection:"column",gap:"4px"},i(U,{size:"md",weight:"semibold"},"The default behaviour is the following:"),i(U,null,i("ul",null,i("li",null,"\u2014 In chat, optimised but full resolution images will be loaded."),i("li",null,"\u2014 In the image modal, the original image will be loaded."))),i(U,{size:"md",weight:"semibold",className:z.top8},"You can also enable original image in chat, but beware of the following caveats:"),i(U,null,i("ul",null,i("li",null,"\u2014 Animated images (GIF, WebP, etc.) in chat will always animate, regardless of if the App is focused."),i("li",null,"\u2014 May cause lag.")))))},getSrc(e,t){if(e?.src)try{let{contentType:o,height:r,src:n,width:a,mosaicStyleAlt:s,trigger:l}=e;if(!(o?.startsWith("image/")??typeof s=="boolean")||n.startsWith("data:"))return;let u=new URL(n);if(!u.pathname.startsWith("/attachments/"))return;u.searchParams.set("animated",String(!t)),t&&u.pathname.endsWith(".gif")&&u.searchParams.set("format","webp");let p=!!l;if(!Rxe.store.originalImagesInChat&&!p){let m=a*r,g=2e3*1200;if(m<=g)return u.toString();let x=Math.sqrt(m/g);return u.searchParams.set("width",Math.round(a/x).toString()),u.searchParams.set("height",Math.round(r/x).toString()),u.toString()}return u.hostname="cdn.discordapp.com",u.toString()}catch(o){new ie("FixImagesQuality").error("Failed to make image src",o);return}}})});var jot,MC,Oxe=h(()=>{"use strict";d();j();O();R();jot=M({volume:{type:5,description:"The volume % to set for spotify embeds. Anything above 10% is veeeery loud",markers:zt(0,100,10),stickToMarkers:!1,default:10}}),MC=S({name:"FixSpotifyEmbeds",description:"Fixes spotify embeds being incredibly loud by letting you customise the volume",authors:[b.Ven],tags:["Media","Customisation"],settings:jot})});var Fxe,NC,_xe=h(()=>{"use strict";d();j();Pe();O();R();C();Fxe=M({youtubeDescription:{description:"Adds descriptions to youtube video embeds",type:3,default:!1,restartNeeded:!0}});oo("FixYoutubeEmbeds","YoutubeDescription");NC=S({name:"FixYoutubeEmbeds",description:"Bypasses youtube videos being blocked from display on Discord (for example by UMG)",tags:["Media","Utility"],authors:[b.coolelectronics,b.arHSM],settings:Fxe,patches:[{find:"this.renderContentPlaceholder({",predicate:()=>Fxe.store.youtubeDescription,replacement:{match:/(\i)=(\i\.\i\.has\((\i)\.type\))\?null:(?:(this\.renderDescription)\(\))/,replace:'$1=$3.type==="video"?$self.ToggleableDescriptionWrapper({embed:this.props.embed,original:$4.bind(this)}):($2?null:$4())'}}],ToggleableDescription:H.wrap(({embed:e,original:t})=>{let[o,r]=T(!1);return e.rawDescription?e.rawDescription.length<=20?t():i("div",{style:{cursor:"pointer",marginTop:o?"0px":"8px"},onClick:()=>r(n=>!n)},o?t():e.rawDescription.substring(0,20)+"..."):null}),ToggleableDescriptionWrapper(e){return i(this.ToggleableDescription,{...e})}})});var BC,Uxe=h(()=>{"use strict";d();O();R();C();BC=S({name:"ForceOwnerCrown",description:"Force the owner crown next to usernames even if the server is large.",authors:[b.D3SOX,b.Nickyux],tags:["Roles","Appearance","Servers"],patches:[{find:"#{intl::GUILD_OWNER}),children:",replacement:{match:/(?<=decorators:.{0,200}?isOwner:)\i/,replace:"$self.isGuildOwner(arguments[0])"}}],isGuildOwner(e){if(!e?.user?.id||e.channel?.type===3)return e.isOwner;let t=e.guildId??e.channel?.guild_id,o=e.user.id;return $e.getGuild(t)?.ownerId===o}})});var Bq,RC,zxe=h(()=>{"use strict";d();yr();O();R();le();Bq=Ae("createFriendInvite"),RC=S({name:"FriendInvites",description:"Create and manage friend invite links via slash commands (/create friend invite, /view friend invites, /revoke friend invites).",dependencies:["CommandsAPI"],tags:["Friends","Commands"],authors:[b.afn,b.Dziurwa],commands:[{name:"create friend invite",description:"Generates a friend invite link.",inputType:0,execute:async(e,t)=>{let o=await Bq.createFriendInvite();Ft(t.channel.id,{content:` discord.gg/${o.code} \xB7 Expires: \xB7 Max uses: \`${o.max_uses}\` `.trim().replace(/\s+/g," ")})}},{name:"view friend invites",description:"View a list of all generated friend invites.",inputType:0,execute:async(e,t)=>{let r=(await Bq.getAllFriendInvites()).map(n=>` _discord.gg/${n.code}_ \xB7 Expires: \xB7 Times used: \`${n.uses}/${n.max_uses}\` `.trim().replace(/\s+/g," "));Ft(t.channel.id,{content:r.join(` `)||"You have no active friend invites!"})}},{name:"revoke friend invites",description:"Revokes all generated friend invites.",inputType:0,execute:async(e,t)=>{await Bq.revokeFriendInvites(),Ft(t.channel.id,{content:"All friend invites have been revoked."})}}]})});function Wot({message:e,channel:t,onHeightUpdate:o}){let r=e.author&&!(e.author.id===L.getCurrentUser().id||e.author.system);return qot({navId:"message-actions",ariaLabel:Xe("MESSAGE_UTILITIES_A11Y_LABEL"),message:e,channel:t,canReport:r,onHeightUpdate:o,onClose:()=>rt.closeContextMenu(),textSelection:"",favoriteableType:null,favoriteableId:null,favoriteableName:null,itemHref:void 0,itemSrc:void 0,itemSafeSrc:void 0,itemTextContent:void 0,isFullSearchContextMenu:!0})}var qot,$xe,Kot,LC,Gxe=h(()=>{"use strict";d();Fo();j();O();_e();Kt();R();le();C();qot=Oe(".MESSAGE,commandTargetId:"),$xe=oz;Zo(Re.componentByCode('"cannot copy null text"'),e=>$xe=e);Kot=(e,t)=>{if(t?.isFullSearchContextMenu==null)return;wt("devmode-copy-id",e,!0)?.push($xe({id:t.message.author.id,label:Xe("COPY_ID_AUTHOR")}))};oo("FullSearchContext","SearchReply");LC=S({name:"FullSearchContext",description:"Makes the message context menu in message search results have all options you'd expect",tags:["Utility"],authors:[b.Ven,b.Aria],patches:[{find:"Listbox navigator was given an unhandled action",replacement:{match:/this(?=\.handleContextMenu\(\i,\i\))/,replace:"$self"}}],handleContextMenu(e,t){let o=W.getChannel(t.channel_id);o&&(e.stopPropagation(),rt.openContextMenu(e,r=>i(Wot,{message:t,channel:o,onHeightUpdate:r.onHeightUpdate})))},contextMenus:{"message-actions":Kot}})});var Qot,OC,Hxe=h(()=>{"use strict";d();Pe();O();R();le();C();Qot=he(".USER_MENTION)"),OC=S({name:"FullUserInChatbox",description:"Makes the user mention in the chatbox have more functionalities, like left/right clicking",tags:["Shortcuts","Utility"],authors:[b.sadan],patches:[{find:'"text":"locked"',replacement:{match:/(hidePersonalInformation\).+?)(if\(null!=\i\){.+?return \i)(?=})/,replace:"$1return $self.UserMentionComponent({...arguments[0],originalComponent:()=>{$2}});"}}],UserMentionComponent:H.wrap(e=>ye([L],()=>L.getUser(e.id))==null?e.originalComponent():i(Qot,{className:"mention",userId:e.id,channelId:e.channelId}),{fallback:({wrappedProps:{originalComponent:e}})=>e()})})});function qxe({className:e}){let{oldIcon:t}=FC.use(["oldIcon"]),o=u4.useSetting();return i("svg",{className:e,width:"20",height:"20",viewBox:"0 0 24 24"},i("path",{fill:!o&&!t?"var(--status-danger)":"currentColor",mask:o?void 0:"url(#gameActivityMask)",d:"M3.06 20.4q-1.53 0-2.37-1.065T.06 16.74l1.26-9q.27-1.8 1.605-2.97T6.06 3.6h11.88q1.8 0 3.135 1.17t1.605 2.97l1.26 9q.21 1.53-.63 2.595T20.94 20.4q-.63 0-1.17-.225T18.78 19.5l-2.7-2.7H7.92l-2.7 2.7q-.45.45-.99.675t-1.17.225Zm14.94-7.2q.51 0 .855-.345T19.2 12q0-.51-.345-.855T18 10.8q-.51 0-.855.345T16.8 12q0 .51.345 .855T18 13.2Zm-2.4-3.6q.51 0 .855-.345T16.8 8.4q0-.51-.345-.855T15.6 7.2q-.51 0-.855.345T14.4 8.4q0 .51.345 .855T15.6 9.6ZM6.9 13.2h1.8v-2.1h2.1v-1.8h-2.1v-2.1h-1.8v2.1h-2.1v1.8h2.1v2.1Z"}),!o&&i(f,null,i("path",{fill:"var(--status-danger)",d:t?"M23 2.27 21.73 1 1 21.73 2.27 23 23 2.27Z":"M22.7 2.7a1 1 0 0 0-1.4-1.4l-20 20a1 1 0 1 0 1.4 1.4Z"}),i("mask",{id:"gameActivityMask"},i("rect",{fill:"white",x:"0",y:"0",width:"24",height:"24"}),i("path",{fill:"black",d:t?"M23.27 4.54 19.46.73 .73 19.46 4.54 23.27 23.27 4.54Z":"M23.27 4.73 19.27 .73 -.27 20.27 3.73 24.27Z"}))))}function Yot(e){let{location:t}=FC.use(["location"]),o=u4.useSetting(),n=ye([g1],()=>g1.getAccounts()).filter(u=>u.type==="spotify"&&!u.revoked),[a,s]=T({}),l=Se(null);if(t!=="PANEL"&&Ve(Yp.name))return null;let c={tooltipText:o?"Disable Game Activity":"Enable Game Activity",icon:qxe,role:"switch",ariaChecked:!o,redGlow:!o,plated:e?.nameplate!=null,onClick:()=>u4.updateSetting(u=>!u)};return n.length===0?i(jxe,{...c}):i(Xa,{position:"top",align:"left",targetElementRef:l,renderPopout:({closePopout:u})=>i(P.Menu,{navId:"vc-gameActivityToggle-menu",onClose:u},n.map(p=>{let m=a[p.id]??p.showActivity;return i(P.MenuCheckboxItem,{key:p.id,id:`vc-toggle-spotify-${p.id}`,label:n.length===1?"Share Spotify Activity":`Share Spotify Activity (${p.name})`,checked:m,action:()=>{Zot.setShowActivity(p.type,p.id,!m),s(g=>({...g,[p.id]:!m}))}})}))},u=>i(jxe,{ref:l,onContextMenu:u.onClick,...c}))}var jxe,Zot,u4,FC,_C,Wxe=h(()=>{"use strict";d();Jt();j();_a();Kw();O();R();le();C();jxe=he(".GREEN,positionKeyStemOverride:"),Zot=Ae("setShowActivity"),u4=tn("status","showCurrentGame"),FC=M({oldIcon:{type:3,description:"Use the old icon style before Discord icon redesign",default:!1},location:{type:4,description:"Where to show the game activity toggle button",options:[{label:"Next to Mute/Deafen",value:"PANEL",default:!0},{label:"Equicord Toolbox",value:"TOOLBOX"}],get hidden(){return!Ve(Yp.name)}}});_C=S({name:"GameActivityToggle",description:"Adds a button next to the mic and deafen button to toggle game activity. Right click it to toggle Spotify activity.",tags:["Activity","Shortcuts"],authors:[b.Nuckyz,b.RuukuLada],dependencies:["UserSettingsAPI","UserAreaAPI"],settings:FC,userAreaButton:{icon:qxe,render:Yot},toolboxActions(){let{location:e}=FC.use(["location"]),t=u4.useSetting();return e!=="TOOLBOX"?null:i(P.MenuCheckboxItem,{id:"game-activity-toggle-toolbox",label:"Enable Game Activity",checked:t,action:()=>u4.updateSetting(o=>!o)})}})});var UC,Kxe=h(()=>{"use strict";d();O();_e();R();C();UC=S({name:"GifPaste",description:"Makes picking a gif in the gif picker insert a link into the chatbox instead of instantly sending it",tags:["Media","Chat"],authors:[b.Ven],patches:[{find:"handleSelectGIF=",replacement:{match:/handleSelectGIF=(\i)=>\{/,replace:"$&if (!this?.props?.className) return $self.handleSelect($1);"}}],handleSelect(e){e&&(tr(e.url+" "),dd.closeExpressionPicker())}})});function Qxe(e,t,o){let r=fo.getSendMessageOptionsForReply({channel:e,message:t,shouldMention:!0,showMentionToggle:!0});if(zC.store.greetMode==="Message"||o.length>1){r.stickerIds=o;let n={content:"",tts:!1,invalidEmojis:[],validNonShortcutEmojis:[]};fo._sendMessage(e.id,n,r)}else fo.sendGreetMessage(e.id,o[0],r)}function Jot({channel:e,message:t}){let o=zC.use(["greetMode","multiGreetChoices"]),{greetMode:r,multiGreetChoices:n=[]}=o;return i(P.Menu,{navId:"greet-sticker-picker",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Greet Sticker Picker"},i(P.MenuGroup,{label:"Greet Mode"},Object.values(Zxe).map(a=>i(P.MenuRadioItem,{key:a,group:"greet-mode",id:"greet-mode-"+a,label:a,checked:a===r,action:()=>o.greetMode=a}))),i(P.MenuSeparator,null),i(P.MenuGroup,{label:"Greet Stickers"},Rq.map(a=>i(P.MenuItem,{key:a.id,id:"greet-"+a.id,label:a.description.split(" ")[0],action:()=>Qxe(e,t,[a.id])}))),zC.store.unholyMultiGreetEnabled?i(f,null,i(P.MenuSeparator,null),i(P.MenuItem,{label:"Unholy Multi-Greet",id:"unholy-multi-greet"},Rq.map(a=>{let s=n.some(l=>l===a.id);return i(P.MenuCheckboxItem,{key:a.id,id:"multi-greet-"+a.id,label:a.description.split(" ")[0],checked:s,disabled:!s&&n.length>=3,action:()=>{o.multiGreetChoices=s?n.filter(l=>l!==a.id):[...n,a.id]}})}),i(P.MenuSeparator,null),i(P.MenuItem,{id:"multi-greet-submit",label:"Send Greets",action:()=>Qxe(e,t,n),disabled:n.length===0}))):null)}var Zxe,zC,Rq,$C,Yxe=h(()=>{"use strict";d();j();O();R();C();Zxe=(o=>(o.Greet="Greet",o.NormalMessage="Message",o))(Zxe||{}),zC=M({greetMode:{type:4,options:[{label:"Greet (you can only greet 3 times)",value:"Greet",default:!0},{label:"Normal Message (you can greet spam)",value:"Message"}],description:"Choose the greet mode"}}).withPrivateSettings();$C=S({name:"GreetStickerPicker",description:"Allows you to use any greet sticker instead of only the random one by right-clicking the 'Wave to say hi!' button",tags:["Emotes","Customisation"],authors:[b.Ven],settings:zC,patches:[{find:"#{intl::WELCOME_CTA_LABEL}",replacement:{match:/className:\i\.\i,(?=.{0,40}?"sticker")(?<={channel:\i,message:\i}=(\i).+?)/,replace:"$&onContextMenu:(vcEvent)=>$self.pickSticker(vcEvent, $1),"}},{find:'"Wumpus waves hello"',replacement:{match:/(?<==)(?=\[{id:"749054660769218631",format_type:\d,description:"Wumpus waves hello")/,replace:"$self.WELCOME_STICKERS="}}],set WELCOME_STICKERS(e){Rq=e},pickSticker(e,t){t.message.deleted||rt.openContextMenu(e,()=>i(Jot,{...t}))}})});var Jxe=h(()=>{});async function e1e(){let e=await vt(Vxe);return d4=new Set(e??[]),d4}async function Vot(e,t){let o=await e1e();o.delete(t)||o.add(t),await Xot(o),Ds(e,t)}var Vxe,d4,Xot,Xxe,GC,t1e=h(()=>{"use strict";d();Jxe();Io();V0();j();ot();O();Be();R();C();Vxe="HideMedia_HiddenIds",d4=new Set;Xot=e=>Ct(Vxe,[...e]);oo("HideMedia","HideAttachments");Xxe=e=>e.attachments.length>0||e.embeds.length>0||e.stickerItems.length>0||e.components.length>0;GC=S({name:"HideMedia",description:"Hide attachments and embeds for individual messages via hover button",tags:["Chat","Appearance"],authors:[b.Ven],dependencies:["MessageUpdaterAPI","MessageAccessoriesAPI","MessagePopoverAPI"],patches:[{find:"this.renderAttachments(",replacement:{match:/(?<=\i=)this\.render(?:Attachments|Embeds|StickersAccessories|ComponentAccessories)\((\i)\)/g,replace:"$self.shouldHide($1?.id)?null:$&"}}],messagePopoverButton:{icon:Vu,render(e){if(!Xxe(e)&&!e.messageSnapshots.some(o=>Xxe(o.message)))return null;let t=d4.has(e.id);return{label:t?"Show Media":"Hide Media",icon:t?Ip:Vu,message:e,channel:W.getChannel(e.channel_id),onClick:()=>Vot(e.channel_id,e.id)}}},renderMessageAccessory({message:e}){return this.shouldHide(e.id)?i("span",{className:X("vc-hideAttachments-accessory",!e.content&&"vc-hideAttachments-no-content")},"Media Hidden"):null},async start(){await e1e()},stop(){d4.clear()},shouldHide(e){return d4.has(e)}})});var HC,o1e=h(()=>{"use strict";d();j();O();R();oo("IloveSpam","iLoveSpam");HC=S({name:"ILoveSpam",description:"Do not hide messages from 'likely spammers'",tags:["Utility","Chat"],authors:[b.botato,b.Nyako],patches:[{find:"hasFlag:{writable",replacement:{match:/if\((\i)<=(?:0x40000000|(?:1<<30|1073741824))\)return/,replace:"if($1===(1<<20))return false;$&"}}]})});function r1e(e,t,o,r){return i(ve,{text:t},n=>i("button",{...n,onClick:a=>nnt(a,e),style:{all:"unset",cursor:"pointer",display:"flex",justifyContent:"center",alignItems:"center"}},i("svg",{width:"24",height:"24",viewBox:"0 -960 960 960"},i("path",{fill:r,d:o}))))}function n1e(e,t=!1){let o=si.use(["ignoredActivities"]),{ignoredActivities:r}=o;return r.some(n=>n.id===e.id)?ont(e,"var(--status-danger)"):tnt(e,t?"var(--green-300)":"var(--interactive-icon-default)")}function nnt(e,t){e.stopPropagation();let o=si.store.ignoredActivities.findIndex(r=>r.id===t.id);o===-1?si.store.ignoredActivities.push(t):si.store.ignoredActivities.splice(o,1)}function zf(){ent.updateSetting(e=>e)}function rnt(){return i(pe,{flexDirection:"column"},i(U,null,"Import the application id of the CustomRPC plugin to the filter list"),i("div",null,i(ue,{onClick:()=>{let e=Ed.settings.store.appID;if(!e)return ne("CustomRPC application ID is not set.",D.Type.FAILURE);Lq?.(e)&&ne("CustomRPC application ID is already added.",D.Type.FAILURE)}},"Import CustomRPC ID")))}function int(e){let[t,o]=T(si.store.idsList??"");Lq=n=>{let a=new Set(t.split(",").map(c=>c.trim()).filter(Boolean)),s=a.has(n)||(a.add(n),!1),l=Array.from(a).join(", ");return o(l),e.setValue(l),s},G(()=>()=>{Lq=null},[]);function r(n){o(n),e.setValue(n)}return i("section",null,i(Ot,null,"Filter List"),i(U,{className:z.bottom8},"Comma separated list of activity IDs to filter (Useful for filtering specific RPC activities and CustomRPC"),i(Ea,{type:"text",value:t,onChange:r,placeholder:"235834946571337729, 343383572805058560"}))}function ant(e,t){if(t&&si.store.idsList.includes(t))return si.store.listMode===1;switch(e){case 0:return si.store.ignorePlaying;case 1:return si.store.ignoreStreaming;case 2:return si.store.ignoreListening;case 3:return si.store.ignoreWatching;case 5:return si.store.ignoreCompeting}return!1}var ent,tnt,ont,Lq,si,jC,i1e=h(()=>{"use strict";d();j();_a();Pe();Lt();We();Je();Jw();O();Wt();R();C();ent=tn("status","showCurrentGame");tnt=(e,t)=>r1e(e,"Disable activity","M480-320q75 0 127.5-52.5T660-500q0-75-52.5-127.5T480-680q-75 0-127.5 52.5T300-500q0 75 52.5 127.5T480-320Zm0-72q-45 0-76.5-31.5T372-500q0-45 31.5-76.5T480-608q45 0 76.5 31.5T588-500q0 45-31.5 76.5T480-392Zm0 192q-146 0-266-81.5T40-500q54-137 174-218.5T480-800q146 0 266 81.5T920-500q-54 137-174 218.5T480-200Zm0-300Zm0 220q113 0 207.5-59.5T832-500q-50-101-144.5-160.5T480-720q-113 0-207.5 59.5T128-500q50 101 144.5 160.5T480-280Z",t),ont=(e,t)=>r1e(e,"Enable activity","m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z",t);Lq=null;si=M({importCustomRPC:{type:6,component:rnt},listMode:{type:4,description:"Change the mode of the filter list",options:[{label:"Whitelist",value:0,default:!0},{label:"Blacklist",value:1}],onChange:zf},idsList:{type:6,default:"",onChange(e){let t=new Set(e.split(",").map(o=>o.trim()).filter(Boolean));si.store.idsList=Array.from(t).join(", "),zf()},component:e=>i(int,{setValue:e.setValue})},ignorePlaying:{type:3,description:"Ignore all playing activities (These are usually game and RPC activities)",default:!1,onChange:zf},ignoreStreaming:{type:3,description:"Ignore all streaming activities",default:!1,onChange:zf},ignoreListening:{type:3,description:"Ignore all listening activities (These are usually spotify activities)",default:!1,onChange:zf},ignoreWatching:{type:3,description:"Ignore all watching activities",default:!1,onChange:zf},ignoreCompeting:{type:3,description:"Ignore all competing activities (These are normally special game activities)",default:!1,onChange:zf},ignoredActivities:{type:7,default:[],onChange:zf,description:""}});jC=S({name:"IgnoreActivities",authors:[b.Nuckyz,b.Kylie],description:"Ignore activities from showing up on your status ONLY. You can configure which ones are specifically ignored from the Registered Games and Activities tabs, or use the general settings below",tags:["Activity","Privacy","Customisation"],dependencies:["UserSettingsAPI"],settings:si,patches:[{find:'"LocalActivityStore"',replacement:[{match:/\.LISTENING.+?(?=!?\i\(\)\(\i,\i\))(?<=(\i)\.push.+?)/,replace:(e,t)=>`${e}${t}=${t}.filter($self.isActivityNotIgnored);`}]},{find:'"ActivityTrackingStore"',replacement:{match:/getVisibleRunningGames\(\).+?;(?=for)(?<=(\i)=\i\.\i\.getVisibleRunningGames.+?)/,replace:(e,t)=>`${e}${t}=${t}.filter(({id,name})=>$self.isActivityNotIgnored({type:0,application_id:id,name}));`}},{find:"#{intl::SETTINGS_GAMES_TOGGLE_OVERLAY}",replacement:{match:/(\i)&&!\i\|\|\i\?null(?<=(\i)\.verified&&.+?)/,replace:"$self.renderToggleGameActivityButton($2,$1),$&"}},{find:"#{intl::EMBEDDED_ACTIVITIES_DEVELOPER_ACTIVITY}",replacement:{match:/lineClamp:1.{0,50}?(?=!\i&&\i\?.+?application:(\i))/,replace:"$&$self.renderToggleActivityButton($1),"}}],async start(){if(si.store.ignoredActivities.length!==0){let e=uc.getGamesSeen();for(let[t,o]of si.store.ignoredActivities.entries())o.type===0&&(e.some(r=>r.id===o.id||r.exePath===o.id)||si.store.ignoredActivities.splice(t,1))}},isActivityNotIgnored(e){if(ant(e.type,e.application_id))return!1;if(e.application_id!=null)return!si.store.ignoredActivities.some(t=>t.id===e.application_id)||si.store.listMode===0&&si.store.idsList.includes(e.application_id);{let t=uc.getRunningGames().find(o=>o.name===e.name)?.exePath;if(t)return!si.store.ignoredActivities.some(o=>o.id===t)}return!0},renderToggleGameActivityButton(e,t){return i(H,{noop:!0},i("div",{style:{marginLeft:12,zIndex:0}},n1e({id:e.id??e.exePath,name:e.name,type:0},t)))},renderToggleActivityButton(e){return i(H,{noop:!0},n1e({id:e.id,name:e.name,type:1}))}})});var snt,lnt,a1e,qC,s1e=h(()=>{"use strict";d();j();O();R();snt=/\.(png|jpg|jpeg|gif|webp|avif)$/i,lnt=/^(.+?\.)?(tenor|giphy|imgur)\.com$/i,a1e=M({showFullUrl:{description:"Show the full URL of the image instead of just the file name. Always enabled for GIFs because they usually have no meaningful file name",type:3,default:!1}}),qC=S({name:"ImageFilename",authors:[b.Ven],description:"Display the file name of images & GIFs as a tooltip when hovering over them",tags:["Media","Utility"],settings:a1e,patches:[{find:".RESPONSIVE?",replacement:{match:/(?="data-role":"img","data-safe-src":)(?<=href:(\i).+?)/,replace:"title:$self.getTitle($1),"}}],getTitle(e){try{let t=new URL(e),o=lnt.test(t.hostname);return!o&&!snt.test(t.pathname)?void 0:o||a1e.store.showFullUrl?e:t.pathname.split("/").pop()}catch{return}}})});var WC,l1e=h(()=>{"use strict";d();O();R();WC=S({name:"ImageLink",description:"Never hide image links in messages, even if it's the only content",tags:["Media","Appearance"],authors:[b.Kyuuhachi,b.Sqaaakoi],patches:[{find:"unknownUserMentionPlaceholder:",replacement:{match:/\i\.has\(\i\.type\)&&\(0,\i\.\i\)\(\i\)/,replace:"false"}}]})});var p4,Oq=h(()=>{"use strict";d();p4="vc-imgzoom-magnify-modal"});function Fq(e,t){e()?t():requestAnimationFrame(()=>Fq(e,t))}var c1e=h(()=>{"use strict";d()});var u1e,_q,d1e=h(()=>{"use strict";d();Pe();Uq();Oq();c1e();we();C();u1e=K("vc-imgzoom-"),_q=H.wrap(({instance:e,size:t,zoom:o})=>{let[r,n]=T(!1),[a,s]=T({x:0,y:0}),[l,c]=T({x:0,y:0}),[u,p]=T(0),m=Se(!1),g=Se(o),x=Se(t),v=Se(null),y=Se(null),A=Se(null),k=Se(null);Va(()=>{let E=Z=>{Z.key==="Shift"&&(m.current=!0)},N=Z=>{Z.key==="Shift"&&(m.current=!1)},B=()=>{y.current&&A.current&&(y.current.currentTime=A.current.currentTime)},_=Z=>{if(v.current)if(e.state.mouseOver&&e.state.mouseDown){let ee=x.current/2,ae={x:Z.pageX,y:Z.pageY},ge=-((ae.x-v.current.getBoundingClientRect().left)*g.current-ee),ke=-((ae.y-v.current.getBoundingClientRect().top)*g.current-ee);s({x:Z.x-ee,y:Z.y-ee}),c({x:ge,y:ke}),p(1)}else p(0)},q=Z=>{e.state.mouseOver&&Z.button===0&&(g.current=cr.store.zoom,x.current=cr.store.size,document.getElementById("image-context")&&Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),_(Z),p(1))},$=()=>{p(0)},re=async Z=>{if(e.state.mouseOver&&e.state.mouseDown&&!m.current){let ee=g.current+Z.deltaY/100*(cr.store.invertScroll?-1:1)*cr.store.zoomSpeed;g.current=ee<=1?1:ee,cr.store.saveZoomValues&&(cr.store.zoom=g.current),_(Z)}if(e.state.mouseOver&&e.state.mouseDown&&m.current){let ee=x.current+Z.deltaY*(cr.store.invertScroll?-1:1)*cr.store.zoomSpeed;x.current=ee<=50?50:ee,cr.store.saveZoomValues&&(cr.store.size=x.current),_(Z)}};return Fq(()=>e.state.readyState==="READY",()=>{let Z=document.getElementById(p4);v.current=Z,Z.querySelector("img,video")?.setAttribute("draggable","false"),e.props.animated&&(A.current=Z.querySelector("video"),A.current.addEventListener("timeupdate",B)),n(!0)}),document.addEventListener("keydown",E),document.addEventListener("keyup",N),document.addEventListener("mousemove",_),document.addEventListener("mousedown",q),document.addEventListener("mouseup",$),document.addEventListener("wheel",re),()=>{document.removeEventListener("keydown",E),document.removeEventListener("keyup",N),document.removeEventListener("mousemove",_),document.removeEventListener("mousedown",q),document.removeEventListener("mouseup",$),document.removeEventListener("wheel",re)}},[]);let w=Ne(()=>{try{let E=new URL(e.props.src);return E.protocol!=="http:"&&E.protocol!=="https:"?e.props.src:(E.pathname.startsWith("/attachments/")&&(E.hostname="cdn.discordapp.com"),E.searchParams.set("animated","true"),E.toString())}catch{return e.props.src}},[e.props.src]);if(!r)return null;let I=v.current?.getBoundingClientRect();return I?i("div",{className:u1e("lens",{"nearest-neighbor":cr.store.nearestNeighbour,square:cr.store.square}),style:{opacity:u,width:x.current+"px",height:x.current+"px",transform:`translate(${a.x}px, ${a.y}px)`}},e.props.animated?i("video",{ref:y,style:{position:"absolute",left:`${l.x}px`,top:`${l.y}px`},width:`${I.width*g.current}px`,height:`${I.height*g.current}px`,poster:e.props.src,src:A.current?.src??e.props.src,autoPlay:!0,loop:!0,muted:!0}):i("img",{className:u1e("image"),ref:k,style:{position:"absolute",transform:`translate(${l.x}px, ${l.y}px)`},width:`${I.width*g.current}px`,height:`${I.height*g.current}px`,src:w,alt:""})):null},{noop:!0})});var p1e,m1e=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/imageZoom/styles.css",{name:"src/plugins/imageZoom/styles.css",source:`.vc-imgzoom-lens { position: absolute; inset: 0; z-index: 9999; border: 2px solid grey; margin: -2px; border-radius: 50%; overflow: hidden; cursor: none; box-shadow: inset 0 0 10px 2px grey; filter: drop-shadow(0 0 2px grey); pointer-events: none; } .vc-imgzoom-square { border-radius: 0; } .vc-imgzoom-nearest-neighbor > .vc-imgzoom-image { image-rendering: pixelated; /* https://googlechrome.github.io/samples/image-rendering-pixelated/index.html */ } .vc-image-metadata { position: absolute; top: 0; right: 0; background: rgb(0 0 0 / 60%); color: white; padding: 4px 8px; font-size: 12px; z-index: 10; pointer-events: none; } .vc-image-wrapper { position: relative; display: inline-block; } `,classNames:{},dom:null});p1e="src/plugins/imageZoom/styles.css"});var cr,cnt,KC,Uq=h(()=>{"use strict";d();j();os();O();He();R();C();d1e();Oq();m1e();cr=M({saveZoomValues:{type:3,description:"Whether to save zoom and lens size values",default:!0},invertScroll:{type:3,description:"Invert scroll",default:!0},nearestNeighbour:{type:3,description:"Use Nearest Neighbour Interpolation when scaling images",default:!1},square:{type:3,description:"Make the lens square",default:!1},zoom:{description:"Zoom of the lens",type:5,markers:[1,5,10,20,30,40,50],default:2,stickToMarkers:!1},size:{description:"Radius / Size of the lens",type:5,markers:[50,100,250,500,750,1e3],default:100,stickToMarkers:!1},zoomSpeed:{description:"How fast the zoom / lens size changes",type:5,markers:[.1,.5,1,2,3,4,5],default:.5,stickToMarkers:!1}}),cnt=(e,t)=>{if("href"in t||t.target?.classList?.contains("emoji"))return;let{square:o,nearestNeighbour:r}=cr.use(["square","nearestNeighbour"]);e.push(i(P.MenuGroup,{id:"image-zoom"},i(P.MenuCheckboxItem,{id:"vc-square",label:"Square Lens",checked:o,action:()=>{cr.store.square=!o}}),i(P.MenuCheckboxItem,{id:"vc-nearest-neighbour",label:"Nearest Neighbour",checked:r,action:()=>{cr.store.nearestNeighbour=!r}}),i(P.MenuControlItem,{id:"vc-zoom",label:"Zoom",control:(n,a)=>i(P.MenuSliderControl,{ref:a,...n,minValue:1,maxValue:50,value:cr.store.zoom,onChange:Jo(s=>cr.store.zoom=s,100)})}),i(P.MenuControlItem,{id:"vc-size",label:"Lens Size",control:(n,a)=>i(P.MenuSliderControl,{ref:a,...n,minValue:50,maxValue:1e3,value:cr.store.size,onChange:Jo(s=>cr.store.size=s,100)})}),i(P.MenuControlItem,{id:"vc-zoom-speed",label:"Zoom Speed",control:(n,a)=>i(P.MenuSliderControl,{ref:a,...n,minValue:.1,maxValue:5,value:cr.store.zoomSpeed,onChange:Jo(s=>cr.store.zoomSpeed=s,100),renderValue:s=>`${s.toFixed(3)}x`})})))},KC=S({name:"ImageZoom",description:"Lets you zoom in to images and gifs. Use scroll wheel to zoom in and shift + scroll wheel to increase lens radius / size",tags:["Media","Utility"],authors:[b.Aria],searchTerms:["ImageUtilities"],managedStyle:p1e,patches:[{find:"disableArrowKeySeek:!0",replacement:[{match:/useFullWidth:!0,shouldLink:/,replace:`id:"${p4}",$&`},{match:/(?<=null!=(\i)\?.{0,20})\i(?:\.\i)?,{children:\1/,replace:"'div',{onClick:e=>e.stopPropagation(),children:$1"}]},{find:'="FOCUS_SENSITIVE",',replacement:{match:/(?<=\[\i\.\i]:)\i&&!\i&&"PINNED"!==\i/,replace:"false"}},{find:".handleImageLoad)",replacement:[{match:/placeholderVersion:\i,(?=.{0,50}children:)/,replace:"...$self.makeProps(this),$&"},{match:/componentDidMount\(\){/,replace:"$&$self.renderMagnifier(this);"},{match:/componentWillUnmount\(\){/,replace:"$&$self.unMountMagnifier();"},{match:/componentDidUpdate\(\i\){/,replace:"$&$self.updateMagnifier(this);"}]}],settings:cr,contextMenus:{"image-context":cnt},currentMagnifierElement:null,element:null,Magnifier:_q,root:null,makeProps(e){return{onMouseOver:()=>this.onMouseOver(e),onMouseOut:()=>this.onMouseOut(e),onMouseDown:t=>this.onMouseDown(t,e),onMouseUp:()=>this.onMouseUp(e),id:e.props.id}},renderMagnifier(e){try{e.props.id===p4&&(this.root||(this.root=Bi(this.element)),this.currentMagnifierElement=i(_q,{size:cr.store.size,zoom:cr.store.zoom,instance:e}),this.root.render(this.currentMagnifierElement))}catch(t){new ie("ImageZoom").error("Failed to render magnifier:",t)}},updateMagnifier(e){this.renderMagnifier(e)},unMountMagnifier(){this.root?.unmount(),this.currentMagnifierElement=null,this.root=null},onMouseOver(e){e.setState(t=>({...t,mouseOver:!0}))},onMouseOut(e){e.setState(t=>({...t,mouseOver:!1}))},onMouseDown(e,t){e.button===0&&t.setState(o=>({...o,mouseDown:!0}))},onMouseUp(e){e.setState(t=>({...t,mouseDown:!1}))},start(){this.element=document.createElement("div"),this.element.classList.add("MagnifierContainer"),document.body.appendChild(this.element)},stop(){this.root&&this.root.unmount(),this.element?.remove()}})});var f1e,QC,g1e=h(()=>{"use strict";d();j();O();He();R();C();f1e=M({sortByAffinity:{type:3,default:!0,description:"Whether to sort implicit relationships by their affinity to you.",restartNeeded:!0}}),QC=S({name:"ImplicitRelationships",description:"Shows your implicit relationships in the Friends tab.",tags:["Friends","Servers"],authors:[b.Dolfies],settings:f1e,patches:[{find:"#{intl::FRIENDS_ALL_HEADER}",replacement:{match:/toString\(\)\}\);case (\i\.\i)\.PENDING/,replace:'toString()});case $1.IMPLICIT:return "Implicit \u2014 "+arguments[1];case $1.BLOCKED'}},{find:"FriendsEmptyState: Invalid empty state",replacement:{match:/case (\i\.\i)\.ONLINE:(?=return (\i)\.SECTION_ONLINE)/,replace:"case $1.ONLINE:case $1.IMPLICIT:"}},{find:"#{intl::FRIENDS_SECTION_ONLINE}),className:",replacement:{match:/,{id:(\i\.\i)\.PENDING,show:.+?className:(\i\.\i)(?=\},\{id:)/,replace:(e,t,o)=>`,{id:${t}.IMPLICIT,show:true,className:${o},content:"Implicit"}${e}`}},{find:'"FriendsStore"',replacement:{match:/(?<=case (\i\.\i)\.SUGGESTIONS:return \d+===(\i)\.type)/,replace:";case $1.IMPLICIT:return $2.type===5"}},{find:'"FriendsStore',replacement:{match:/(\i\.\i)\.fetchRelationships\(\)/,replace:"$1.fetchRelationships(),$self.fetchImplicitRelationships()"}},{find:"getRelationshipCounts(){",replacement:{predicate:()=>f1e.store.sortByAffinity,match:/\}\)\.sortBy\((.+?)\)\.value\(\)/,replace:"}).sortBy(row => $self.wrapSort(($1), row)).value()"}},{find:".REQUEST_GUILD_MEMBERS,",replacement:{match:/\.REQUEST_GUILD_MEMBERS,{/,replace:"$&nonce:arguments[1]?.nonce,"}},{find:"GUILD_MEMBERS_REQUEST:",replacement:{match:/presences:!!(\i)\.presences/,replace:"$&,nonce:$1.nonce"}},{find:".not_found",replacement:{match:/notFound:(\i)\.not_found/,replace:"$&,nonce:$1.nonce"}}],wrapSort(e,t){return t.type===5?uf.getUserAffinity(t.user.id)?.communicationRank??0:e(t)},async fetchImplicitRelationships(){let e=uf.getUserAffinities(),t=qe.getMutableRelationships(),o=e.filter(c=>!qe.getRelationshipType(c.otherUserId));o.forEach(c=>{t.set(c.otherUserId,5)}),qe.emitChange();let r=o.filter(c=>!L.getUser(c.otherUserId)),n=Object.keys($e.getGuilds()),a=en.fromTimestamp(Date.now()),s=n.length*Math.ceil(r.length/100),l=({chunks:c})=>{try{let u=c.filter(p=>p.nonce===a).length;if(u===0)return;s-=u,qe.emitChange(),s<=0&&Q.unsubscribe("GUILD_MEMBERS_CHUNK_BATCH",l)}catch(u){new ie("ImplicitRelationships").error("Error in GUILD_MEMBERS_CHUNK_BATCH handler",u)}};Q.subscribe("GUILD_MEMBERS_CHUNK_BATCH",l);for(let c=0;c{});function zq({id:e,modalProps:t}){let o=parseInt(Bd[e],16)||372735,[r,n]=T(o);function a(u){n(u)}function s(u){u.key==="Enter"&&l()}async function l(){Bd[e]=r.toString(16).padStart(6,"0"),await Ct(ZC,Bd),t.onClose()}async function c(){delete Bd[e],await Ct(ZC,Bd),t.onClose()}return i(be,{...t,size:"sm",title:"Custom Color",actions:[{text:"Save",variant:"primary",onClick:l},{text:"Delete Entry",variant:"dangerPrimary",onClick:c}]},i("div",{onKeyDown:s,className:unt("modal-content")},i("section",{className:z.bottom16},i(Ot,null,"Pick a Color"),i(Pr,{color:r,onChange:a,showEyeDropper:!1}))))}var unt,x1e=h(()=>{"use strict";d();Io();We();we();Wt();C();mv();unt=K("vc-customColors-")});function vu(e,t){if(e&&!(!Bd[e]||!Me.plugins.CustomUserColors.enabled))return t?`#${Bd[e]}`:Bd[e]}var ZC,Bd,$q,YC,dnt,pnt,m4,JC,mv=h(()=>{"use strict";d();h1e();Io();j();O();R();le();C();x1e();ZC="equicord-customcolors",Bd={};(async()=>Bd=await vt(ZC)||{})();$q=vr(['type:"USER_SETTINGS_MODAL_OPEN"']),YC=()=>i("svg",{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",width:"18",height:"18"},i("path",{d:"m9.17 12.67 2.16 2.16a1 1 0 0 0 .99.25l2.57-.75A3 3 0 0 0 16.6 13l4.91-8.05a1.8 1.8 0 0 0-2.47-2.47L11 7.39a3 3 0 0 0-1.32 1.72l-.75 2.57a1 1 0 0 0 .25.99ZM8.03 13.14c.27.07.51.23.7.43l1.7 1.7c.2.19.36.43.43.7A4 4 0 0 1 7 21H2a1 1 0 1 1 0-2c.68 0 1.13-.77 1.04-1.44a4 4 0 0 1 5-4.42Z"})),dnt=(e,{user:t})=>{if(t?.id==null)return;let o=i(P.MenuItem,{label:"Set Color",id:"set-color",icon:YC,leadingAccessory:{type:"icon",icon:YC},action:async()=>{await $q(),ce(r=>i(zq,{id:t.id,modalProps:r}))}});e.push(i(P.MenuSeparator,null),o)},pnt=(e,{channel:t})=>{if(t?.id==null)return;let o=i(P.MenuItem,{label:"Set Color",id:"set-color",icon:YC,leadingAccessory:{type:"icon",icon:YC},action:async()=>{await $q(),ce(r=>i(zq,{id:t.id,modalProps:r}))}});e.push(i(P.MenuSeparator,null),o)};m4=M({dmList:{type:3,description:"Users with custom colors defined will have their name in the dm list colored",default:!0},colorInServers:{type:3,description:"If name colors should be changed within servers",default:!0}}),JC=S({name:"CustomUserColors",description:"Lets you add a custom color to any user, anywhere! Highly recommend to use with typingTweaks and roleColorEverywhere",tags:["Appearance","Customisation","Chat"],authors:[F.mochienya],contextMenus:{"user-context":dnt,"gdm-context":pnt},settings:m4,requireSettingsMenu:$q,getCustomColorString:vu,patches:[{find:'="SYSTEM_TAG"',replacement:{match:/(?<=colorString:\i,colorStrings:\i,colorRoleName:\i.*?}=)(\i),/,replace:"$self.wrapMessageColorProps($1, arguments[0]),"},predicate:()=>!Me.plugins.IrcColors.enabled,noWarn:!0},{find:"PrivateChannel.renderAvatar",replacement:{match:/(\i\]:\i\}\),children:\i\}\),)(?=.{0,100}isSystemDM\(\))/,replace:"$1style:{color:`${$self.colorDMList(arguments[0])}`},"},predicate:()=>m4.store.dmList},{find:'"AvatarWithText"',replacement:[{match:/(\}=\i)/,replace:",style$1"},{match:/(?<="div",\{className:\i\.\i,)(?=children:\[)/,replace:"style:style||{},"}],predicate:()=>m4.store.dmList},{find:'"Reply Chain Nudge")',replacement:{match:/(className:.{0,15},colorString:)(\i),/,replace:"$1$self.colorInReplyingTo(arguments[0]) ?? $2,"}}],wrapMessageColorProps(e,t){try{let o=Fe.getChannelId(),r=W.getChannel(o),n=r.isDM()||r.isMultiUserDM(),a=this.colorIfServer(t);return a===e.colorString||!m4.store.colorInServers&&!n?e:{...e,colorString:a,colorStrings:e.colorStrings&&{primaryColor:a,secondaryColor:void 0,tertiaryColor:void 0}}}catch(o){return console.error("Failed to calculate message color strings:",o),e}},colorDMList(e){let t=e?.user?.id??e?.channel?.id;return vu(t,!0)??"inherit"},colorIfServer(e){let t=e?.message?.author?.id,o=e?.author?.colorString;return e?.message?.channel_id==="1337"&&t==="313337"||e?.channel?.guild_id&&!m4.store.colorInServers?o:vu(t,!0)??o??void 0},colorInReplyingTo(e){let{id:t}=e.reply.message.author;return vu(t,!0)}})});function v1e(e){let{lightness:t}=$f.use(["lightness"]),o=Ne(()=>e?Xx(e):null,[e]);return o&&`hsl(${o%360n}, 100%, ${t}%)`}var $f,Gf,Gq=h(()=>{"use strict";d();j();mv();fU();O();R();C();$f=M({lightness:{description:"Lightness, in %. Change if the colors are too light or too dark",type:1,default:70},memberListColors:{description:"Replace role colors in the member list",restartNeeded:!0,type:3,default:!0},applyColorOnlyToUsersWithoutColor:{description:"Apply colors only to users who don't have a predefined color",restartNeeded:!1,type:3,default:!1},applyColorOnlyInDms:{displayName:"Apply Color Only In DMs",description:"Apply colors only in direct messages; do not apply colors in servers.",restartNeeded:!1,type:3,default:!1}}),Gf=S({name:"IrcColors",description:"Makes username colors in chat unique, like in IRC clients",tags:["Appearance","Customisation"],authors:[b.Grzesiek11,b.jamesbt365],settings:$f,patches:[{find:'="SYSTEM_TAG"',replacement:{match:/(?<=colorString:\i,colorStrings:\i,colorRoleName:\i.*?}=)(\i),/,replace:"$self.wrapMessageColorProps($1, arguments[0]),"}},{find:"#{intl::GUILD_OWNER}),children:",replacement:{match:/(?<=roleName:\i,)colorString:/,replace:"colorString:$self.calculateNameColorForListContext(arguments[0]),originalColor:"},predicate:()=>$f.store.memberListColors}],wrapMessageColorProps(e,t){try{let o=this.calculateNameColorForMessageContext(t);return o===e.colorString?e:{...e,colorString:o,colorStrings:e.colorStrings&&{primaryColor:o,secondaryColor:void 0,tertiaryColor:void 0}}}catch(o){return console.error("Failed to calculate message color strings:",o),e}},calculateNameColorForMessageContext(e){let t=e?.message?.author?.id,o=e?.author?.colorString,r=v1e(t);if(Me.plugins.CustomUserColors.enabled){let a=vu(t,!0);if(a)return a}if(e?.message?.channel_id==="1337"&&t==="313337"||$f.store.applyColorOnlyInDms&&!e?.channel?.isPrivate())return o;let n=!$f.store.applyColorOnlyToUsersWithoutColor||!o?r:o;if(e?.channel?.isPrivate?.()&&n&&t){let a=L.getCurrentUser()?.id;if(a&&t!==a){let s=Number(Xx(a)%360n),l=Number(Xx(t)%360n);if(Math.min(Math.abs(s-l),360-Math.abs(s-l))<70)return`hsl(${(l+180)%360}, 100%, ${$f.store.lightness}%)`}}return n},calculateNameColorForListContext(e){try{let t=e?.user?.id,o=e?.colorString,r=v1e(t);if(Me.plugins.CustomUserColors.enabled){let n=vu(t,!0);if(n)return n}return $f.store.applyColorOnlyInDms&&e?.guildId!==void 0?o:!$f.store.applyColorOnlyToUsersWithoutColor||!o?r:o}catch(t){console.error("Failed to calculate name color for list context:",t)}}})});var XC,yu,VC,y1e=h(()=>{"use strict";d();Io();O();R();C();XC=!1,VC=S({name:"KeepCurrentChannel",description:"Attempt to navigate to the channel you were in before switching accounts or loading Discord.",tags:["Utility","Organisation"],authors:[b.Nuckyz],patches:[{find:'"Switching accounts"',replacement:{match:/goHomeAfterSwitching:\i/,replace:"goHomeAfterSwitching:!1"}}],flux:{LOGOUT(e){({isSwitchingAccount:XC}=e)},CONNECTION_OPEN(){XC&&(XC=!1,yu?.channelId&&(W.hasChannel(yu.channelId)?Li.transitionToChannel(yu.channelId):Yt.transitionToGuild("@me")))},async CHANNEL_SELECT({guildId:e,channelId:t}){XC||(yu={guildId:e,channelId:t},await Ct("KeepCurrentChannel_previousData",yu))}},async start(){yu=await vt("KeepCurrentChannel_previousData"),yu?yu.channelId&&Li.transitionToChannel(yu.channelId):(yu={guildId:ao.getGuildId(),channelId:Fe.getChannelId()??null},await Ct("KeepCurrentChannel_previousData",yu))}})});var b1e,S1e=h(()=>{d();b1e=`# Blank lines and lines starting with "#" are ignored Explode Read if cute Have a nice day! Starting Lightcord... Loading 0BDFDB.plugin.js... Installing BetterDiscord... h shhhhh did you know that you're my favourite user? But don't tell the others!! Today's video is sponsored by Raid Shadow Legends, one of the biggest mobile role-playing games of 2019 and it's totally free! Never gonna give you up, Never gonna let you down ( \u0361\xB0 \u035C\u0296 \u0361\xB0) (\uFF89\u25D5\u30EE\u25D5)\uFF89*:\uFF65\uFF9F\u2727 You look so pretty today! Thinking of a funny quote... 3.141592653589793 meow Welcome, friend If you, or someone you love, has Ligma, please see the Ligma health line at https://bit.ly/ligma_hotline Trans Rights I\u2019d just like to interject for a moment. What you\u2019re refering to as Linux, is in fact, GNU/Linux, or as I\u2019ve recently taken to calling it, GNU plus Linux. You're doing good today! Don't worry, it's nothing 9 cups of coffee couldn't solve! \uFFFD(repeat like 30 times) a light amount of tomfoolery is okay do you love? horror so eepy So without further ado, let's just jump right into it! Dying is absolutely safe hey you! you're cute :)) heya ~ <:trolley:997086295010594867> Time is gone, space is insane. Here it comes, here again. sometimes it's okay to just guhhhhhhhhhhhhhh Welcome to nginx!`});var mnt,fnt,Hq,eT,w1e=h(()=>{"use strict";d();j();O();He();R();S1e();mnt=b1e.split(` `).map(e=>/^\s*[^#\s]/.test(e)&&e.trim()).filter(Boolean),fnt="Did you really disable all loading quotes? What a buffoon you are...",Hq=M({replaceEvents:{description:"Should this plugin also apply during events with special event themed quotes? (e.g. Halloween)",type:3,default:!0},enablePluginPresetQuotes:{description:"Enable the quotes preset by this plugin",type:3,default:!0},enableDiscordPresetQuotes:{description:"Enable Discord's preset quotes (including event quotes, during events)",type:3,default:!1},additionalQuotes:{description:"Additional custom quotes to possibly appear, separated by the below delimiter",type:0,default:"",multiline:!0},additionalQuotesDelimiter:{description:"Delimiter for additional quotes",type:0,default:"|"}}),eT=S({name:"LoadingQuotes",description:"Replace Discords loading quotes",tags:["Appearance","Fun","Customisation"],authors:[b.Ven,b.KraXen72,b.UlyssesZhan],settings:Hq,patches:[{find:"#{intl::LOADING_DID_YOU_KNOW}",replacement:[{match:/_loadingText.+?(?=(\i)\[.{0,10}\.random)/,replace:"$&$self.mutateQuotes($1),"},{match:/_eventLoadingText.+?(?=(\i)\[.{0,10}\.random)/,replace:"$&$self.mutateQuotes($1),",predicate:()=>Hq.store.replaceEvents}]}],mutateQuotes(e){try{let{enableDiscordPresetQuotes:t,additionalQuotes:o,additionalQuotesDelimiter:r,enablePluginPresetQuotes:n}=Hq.store;t||(e.length=0),n&&e.push(...mnt),e.push(...o.split(r).filter(Boolean)),e.length||e.push(fnt)}catch(t){new ie("LoadingQuotes").error("Failed to mutate quotes",t)}}})});var A1e=h(()=>{});function jq({className:e}){return i("svg",{viewBox:"0 0 24 24",className:e},i("circle",{cx:"12",cy:"12",r:"8"}))}var k1e=h(()=>{"use strict";d()});var tT,C1e=h(()=>{"use strict";d();Er();Be();jp();C();tT=ko(()=>{let e=new Oa,t=new Map;class o extends yi.Store{getCount(n){return t.get(n)}async _ensureCount(n){t.has(n)||await Sa.preload(n,Da.getDefaultChannel(n).id)}ensureCount(n){!n||t.has(n)||e.push(()=>this._ensureCount(n).then(()=>lr(200),()=>lr(200)))}}return new o(Q,{GUILD_MEMBER_LIST_UPDATE({guildId:r,groups:n}){t.set(r,n.reduce((a,s)=>a+(s.id==="offline"?0:s.count),0))},ONLINE_GUILD_MEMBER_COUNT_UPDATE({guildId:r,count:n}){t.set(r,n)}})})});function T1e({className:e}){return i("svg",{viewBox:"0 0 32 32",fill:"currentColor",className:e},i("path",{d:"M15.6668 3C14.2523 3 12.8958 3.5619 11.8956 4.5621C10.8954 5.56229 10.3335 6.91884 10.3335 8.33333V13.6666C10.3335 15.0811 10.8954 16.4378 11.8956 17.438C12.8958 18.4381 14.2523 19 15.6668 19C17.0813 19 18.4378 18.4381 19.438 17.438C20.4382 16.4378 21.0001 15.0811 21.0001 13.6666V8.33333C21.0001 6.91884 20.4382 5.56229 19.438 4.5621C18.4378 3.5619 17.0813 3 15.6668 3Z"}),i("path",{d:"M7.66667 13.6666C7.66667 13.313 7.52619 12.9739 7.27614 12.7238C7.02609 12.4738 6.68695 12.3333 6.33333 12.3333C5.97971 12.3333 5.64057 12.4738 5.39052 12.7238C5.14047 12.9739 5 13.313 5 13.6666C4.99911 16.2653 5.94692 18.7749 7.66545 20.7243C9.38399 22.6736 11.7551 23.9285 14.3334 24.2533V27H11.6667C11.3131 27 10.9739 27.1404 10.7239 27.3905C10.4738 27.6405 10.3334 27.9797 10.3334 28.3333C10.3334 28.6869 10.4738 29.0261 10.7239 29.2761C10.9739 29.5262 11.3131 29.6666 11.6667 29.6666H19.6667C20.0203 29.6666 20.3595 29.5262 20.6095 29.2761C20.8596 29.0261 21 28.6869 21 28.3333C21 27.9797 20.8596 27.6405 20.6095 27.3905C20.3595 27.1404 20.0203 27 19.6667 27H17V24.2533C19.5783 23.9285 21.9494 22.6736 23.6679 20.7243C25.3864 18.7749 26.3343 16.2653 26.3334 13.6666C26.3334 13.313 26.1929 12.9739 25.9428 12.7238C25.6928 12.4738 25.3536 12.3333 25 12.3333C24.6464 12.3333 24.3073 12.4738 24.0572 12.7238C23.8072 12.9739 23.6667 13.313 23.6667 13.6666C23.6667 15.7884 22.8238 17.8232 21.3235 19.3235C19.8233 20.8238 17.7884 21.6666 15.6667 21.6666C13.545 21.6666 11.5101 20.8238 10.0098 19.3235C8.50952 17.8232 7.66667 15.7884 7.66667 13.6666Z"}))}var I1e=h(()=>{"use strict";d()});function qq({isTooltip:e,tooltipGuildId:t}){let{voiceActivity:o}=g4.use(["voiceActivity"]),r=o&&!e,n=ye([Fe],()=>e?void 0:zo(),[],(x,v)=>x?.id===v?.id),a=t??n?.guild_id,s=ye([Et],()=>{if(!r||!a)return 0;let x=Et.getVoiceStates(a);return x?Object.values(x).filter(({channelId:v})=>{if(!v)return!1;let y=W.getChannel(v);return y&&ht.can(ct.VIEW_CHANNEL,y)}).length:0}),l=ye([p1],()=>a?p1.getMemberCount(a):null),c=ye([tT],()=>a?tT.getCount(a):null),u=ye([h1],()=>{if(e||!a)return null;let{groups:x}=h1.getProps(a,n?.id);return x.length>=1||x[0].id!=="unknown"?x.reduce((v,y)=>v+(y.id==="offline"?0:y.count),0):null}),p=ye([x1],()=>{if(e)return null;let x=x1.getMemberListSections(n?.id);return x&&!KS(x)?Object.values(x).reduce((v,y)=>v+(y.sectionId==="offline"?0:y.userIds.length),0):null});if(u!=null&&(c=u),p!=null&&(c=p),G(()=>{a&&tT.ensureCount(a)},[a]),l==null)return null;let m=f4(s??0),g=c!=null?f4(c):"?";return i("div",{className:bu("widget",{tooltip:e,"member-list":!e})},i(ve,{text:`${g} online in this channel`,position:"bottom"},x=>i("div",{...x,className:bu("container")},i(jq,{className:bu("online-count")}),i("span",{className:bu("online")},g))),i(ve,{text:`${f4(l)} total server members`,position:"bottom"},x=>i("div",{...x,className:bu("container")},i(jq,{className:bu("total-count")}),i("span",{className:bu("total")},f4(l)))),r&&s>0&&i(ve,{text:`${m} members in voice`,position:"bottom"},x=>i("div",{...x,className:bu("container")},i(T1e,{className:bu("voice-icon")}),i("span",{className:bu("voice")},m))))}var E1e=h(()=>{"use strict";d();_e();Be();C();Wq();k1e();C1e();I1e()});var g4,gnt,f4,bu,oT,Wq=h(()=>{"use strict";d();A1e();j();Pe();O();we();R();E1e();g4=M({toolTip:{type:3,description:"Show member count on the server tooltip",default:!0,restartNeeded:!0},memberList:{type:3,description:"Show member count in the member list",default:!0,restartNeeded:!0},voiceActivity:{type:3,description:"Show voice activity with member count in the member list",default:!0}}),gnt=new Intl.NumberFormat,f4=e=>gnt.format(e),bu=K("vc-membercount-"),oT=S({name:"MemberCount",description:"Shows the number of online members, total members, and users in voice channels on the server - in the member list and tooltip.",tags:["Servers","Utility"],authors:[b.Ven,b.Commandtechno,b.Apexo],settings:g4,patches:[{find:"{isSidebarVisible:",replacement:[{match:/children:\[(\i\.useMemo[^}]+"aria-multiselectable")(?<=className:(\i),.+?)/,replace:"children:[$2?.includes('members')?$self.render():null,$1"}],predicate:()=>g4.store.memberList},{find:"GuildTooltip - ",replacement:{match:/#{intl::VIEW_AS_ROLES_MENTIONS_WARNING}.{0,100}(?=])/,replace:"$&,$self.renderTooltip(arguments[0].guild)"},predicate:()=>g4.store.toolTip}],render:H.wrap(()=>i(qq,null),{noop:!0}),renderTooltip:H.wrap(e=>i(qq,{isTooltip:!0,tooltipGuildId:e.id}),{noop:!0})})});var D1e=h(()=>{});var P1e=h(()=>{});function hnt(e,t,o){let r=t;if(t in e)return void o(e[r]);Object.defineProperty(e,t,{set(n){delete e[r],e[r]=n,o(n)},configurable:!0,enumerable:!1})}var M1e=h(()=>{"use strict";d()});function vnt(){let e=Vt();return Va(()=>(Kq.add(e),()=>{Kq.delete(e)}),[e]),[...Qq]}var xnt,Qq,Kq,N1e=h(()=>{"use strict";d();C();Kt();xnt=["style-src","style-src-elem","img-src","font-src"],Qq=new Set,Kq=new Set;document.addEventListener("securitypolicyviolation",({effectiveDirective:e,blockedURI:t})=>{!t||!xnt.includes(e)||(Qq.add(t),Kq.forEach(o=>o()))})});var B1e,fv,ynt,bnt,Snt,wnt,Ant,knt,Cnt,R1e=h(()=>{"use strict";d();le();C();Kt();B1e=(n=>(n.SMALL="small",n.MEDIUM="medium",n.LARGE="large",n.DYNAMIC="dynamic",n))(B1e||{}),fv=Qo(".MODAL_ROOT_LEGACY,",{ModalRoot:Re.componentByCode('.MODAL,"aria-labelledby":'),ModalHeader:Re.componentByCode(",id:"),ModalContent:Re.componentByCode("scrollbarType:"),ModalFooter:Re.componentByCode(".HORIZONTAL_REVERSE,"),ModalCloseButton:Re.componentByCode(".withCircleBackground")}),ynt=Vo(()=>fv.ModalRoot),bnt=Vo(()=>fv.ModalHeader),Snt=Vo(()=>fv.ModalContent),wnt=Vo(()=>fv.ModalFooter),Ant=Vo(()=>fv.ModalCloseButton),knt=he("CLOSE_BUTTON_LABEL"),Cnt={openModal:ce,openModalLazy:na,closeModal:Lo,closeAllModals:ir}});var Zq={};Bt(Zq,{CONTRIB_ROLE_ID:()=>D3,CONTRIB_ROLE_IDS:()=>PZe,ChangeList:()=>Wp,CloseButton:()=>knt,CspBlockedUrls:()=>Qq,DONOR_ROLE_ID:()=>z0,DONOR_ROLE_IDS:()=>DZe,Devs:()=>b,EQUIBOT_USER_ID:()=>qS,EQUICORD_HELPERS:()=>Iz,EQUICORD_TEAM:()=>Tz,EquicordDevs:()=>F,EquicordDevsById:()=>gf,GUILD_ID:()=>mc,GUILD_IDS:()=>Rz,IS_LINUX:()=>WS,IS_MAC:()=>Go,IS_MOBILE:()=>MZe,IS_WINDOWS:()=>$l,KNOWN_ISSUES_CHANNEL_ID:()=>Ez,LazyComponent:()=>Vo,Logger:()=>ie,Margins:()=>z,ModalAPI:()=>Cnt,ModalCloseButton:()=>Ant,ModalContent:()=>Snt,ModalFooter:()=>wnt,ModalHeader:()=>bnt,ModalRoot:()=>ynt,ModalSize:()=>B1e,Modals:()=>fv,NoopComponent:()=>oz,Queue:()=>Oa,REACT_GLOBAL:()=>IZe,SUPPORT_CHANNEL_ID:()=>md,SUPPORT_CHANNEL_IDS:()=>G0,SYM_LAZY_CACHED:()=>kp,SYM_LAZY_GET:()=>Zc,Theme:()=>eS,VC_CONTRIB_ROLE_ID:()=>M3,VC_DONOR_ROLE_ID:()=>A1,VC_GUILD_ID:()=>$0,VC_KNOWN_ISSUES_CHANNEL_ID:()=>EZe,VC_REGULAR_ROLE_ID:()=>Mz,VC_SUPPORT_CATEGORY_ID:()=>Nz,VC_SUPPORT_CHANNEL_ID:()=>Dz,VC_SUPPORT_CHANNEL_IDS:()=>Bz,VENBOT_USER_ID:()=>Pz,VENCORD_CONTRIB_ROLE_ID:()=>P3,VESKTOP_SUPPORT_CHANNEL_ID:()=>Mue,VencordDevsById:()=>ff,ZWSP:()=>fS,canonicalizeDescriptor:()=>p3,canonicalizeFind:()=>ZU,canonicalizeMatch:()=>xi,canonicalizeReplace:()=>pS,canonicalizeReplacement:()=>mS,checkIntersecting:()=>iz,classNameFactory:()=>K,classNameToSelector:()=>sU,classes:()=>X,closeAllModals:()=>ir,closeModal:()=>Lo,copyToClipboard:()=>po,copyWithToast:()=>ft,createAndAppendStyle:()=>bs,debounce:()=>Jo,escapeRegExp:()=>XU,fetchUserProfile:()=>Ym,formatDuration:()=>xS,formatDurationMs:()=>ef,formatDurationVerbose:()=>hS,getCurrentChannel:()=>zo,getCurrentGuild:()=>Ss,getGuildAcronym:()=>ya,getIntlMessage:()=>Xe,getIntlMessageFromHash:()=>sue,getTheme:()=>C0,getUniqueUsername:()=>Tp,getUserAvatarUrl:()=>xf,hasGuildFeature:()=>T0,humanFriendlyJoin:()=>JU,identity:()=>gc,insertTextIntoChatInputBox:()=>tr,interpolateIfDefined:()=>ZS,isAnyPluginDev:()=>hc,isEquicordGuild:()=>hf,isEquicordPluginDev:()=>B3,isEquicordSupport:()=>H0,isKnownIssuesCategory:()=>_z,isNonNullish:()=>ka,isObject:()=>Bp,isObjectEmpty:()=>KS,isPluginDev:()=>N3,isPrimitiveReactNode:()=>nz,isSupportChannel:()=>JS,isTruthy:()=>Aa,localStorage:()=>dl,makeCodeblock:()=>I0,makeLazy:()=>_l,mergeDefaults:()=>k1,onceDefined:()=>hnt,onlyOnce:()=>Up,openImageModal:()=>Ji,openInviteModal:()=>Yi,openMediaModal:()=>tS,openModal:()=>ce,openModalLazy:()=>na,openPrivateChannel:()=>V2,openUserProfile:()=>Ko,parseUrl:()=>fc,pluralise:()=>QS,proxyLazy:()=>ko,readClipboard:()=>pU,removeFromArray:()=>Gl,runtimeHashMessageKey:()=>k0,sendMessage:()=>or,shouldShowContributorBadge:()=>Oz,shouldShowEquicordContributorBadge:()=>Fz,sleep:()=>lr,stripIndent:()=>hue,toInlineCode:()=>sZe,tryOrElse:()=>YS,useAwaiter:()=>Ro,useCleanupEffect:()=>rz,useCspErrors:()=>vnt,useFixedTimer:()=>IS,useForceUpdater:()=>Vt,useIntersection:()=>N0,useTimer:()=>TS,wordsFromCamel:()=>gS,wordsFromKebab:()=>eZe,wordsFromPascal:()=>YU,wordsFromSnake:()=>VQe,wordsFromTitle:()=>tZe,wordsToCamel:()=>oZe,wordsToKebab:()=>rZe,wordsToPascal:()=>iZe,wordsToSnake:()=>nZe,wordsToTitle:()=>Pp});var Su=h(()=>{"use strict";d();os();M1e();ww();mi();O();N1e();we();_e();Ca();X2();Er();A0();N9();He();Wt();L3();Be();R1e();N1();id();jp();Kt();Ta();});function Hf(e){if(e==null)return null;if(typeof e=="number")return`#${e.toString(16).padStart(6,"0")}`;if(!e)return null;let t=v4?.get(e);if(t!==void 0)return t??null;if(!xv)return null;xv.style.color="",xv.style.color=e;let o=xv.style.color!==""?e:null;return v4?.set(e,o),o}function Dnt(e){let t=y4?.get(e);if(t!==void 0)return t??null;if(!hv||!jf)return null;jf.fillStyle="#000000",jf.clearRect(0,0,1,1),jf.fillStyle=e,jf.fillRect(0,0,1,1);let[o,r,n]=jf.getImageData(0,0,1,1).data,a=[o,r,n];return y4?.set(e,a),a}function Yq(e,t){let o=Dnt(e);if(!o)return e;let[r,n,a]=o;r=Math.max(0,Math.min(255,r+Math.round(r*(t/100)))),n=Math.max(0,Math.min(255,n+Math.round(n*(t/100)))),a=Math.max(0,Math.min(255,a+Math.round(a*(t/100))));let s=`#${(r<<16|n<<8|a).toString(16).padStart(6,"0")}`;return s==="#ffffff"||s==="#000000"?e:s}function x4(e){let t=e.trim();if(!e)return!0;if(t.length!==e.length)return!1;if(t.toLowerCase()==="role")return!0;if(e.toLowerCase().includes("role")){let o=parseInt(O1e.exec(e)?.[1]||"");return!isNaN(o)&&o<=100&&o>=-100}return!!Hf(e)}function gv(e,t,o,r,n,a,s){let l=getComputedStyle(document.documentElement).getPropertyValue("--text-strong").trim()||null;if(!l)return null;o=o.trim()||l;let c=o.toLowerCase().includes("role"),u=!n&&!a&&!t&&c&&!s,p=null,m=null,g=null,x=null,v=null,y=null,A=null;if(c){let I=O1e.exec(o)?.[1]||"";if(I&&isNaN(parseInt(I)))return null;m=u?l:Hf(e?.primaryColor)||!n&&Hf(t?.colors?.[0])||l,g=u?null:Hf(e?.secondaryColor)||!n&&Hf(t?.colors?.[1])||null,x=u?null:Hf(e?.tertiaryColor)||!n&&Hf(t?.colors?.[2])||null,v=I?Yq(m,parseInt(I)):m,y=g&&I?Yq(g,parseInt(I)):g,A=x&&I?Yq(x,parseInt(I)):x}else m=u?l:Hf(o),v=m;p=!r||!g||u?null:x?"linear-gradient(to right,var(--custom-gradient-color-1),var(--custom-gradient-color-2),var(--custom-gradient-color-3),var(--custom-gradient-color-1))":"linear-gradient(to right,var(--custom-gradient-color-1),var(--custom-gradient-color-2),var(--custom-gradient-color-1))";let k={isolation:"isolate"},w={"background-clip":"text","background-size":"100px auto","-webkit-text-fill-color":"transparent","-webkit-background-clip":"text",isolation:"isolate"};return{normal:{original:{...k,color:m,"text-decoration-color":m,"-webkit-text-fill-color":m},adjusted:{...k,color:v,"text-decoration-color":v,"-webkit-text-fill-color":v}},gradient:p?{animated:{...w,color:m,"text-decoration-color":m,"--custom-gradient-color-1":m,"--custom-gradient-color-2":g||m,"--custom-gradient-color-3":x||m,"background-image":p,animation:"smyn-animation var(--smyn-gradient-duration) linear infinite"},static:{original:{...w,color:m,"text-decoration-color":m,"--custom-gradient-color-1":m,"--custom-gradient-color-2":g||m,"--custom-gradient-color-3":x||m,"background-image":p},adjusted:{...w,color:v,"text-decoration-color":v,"--custom-gradient-color-1":v,"--custom-gradient-color-2":y||v,"--custom-gradient-color-3":A||v,"background-image":p}}}:null}}function F1e(e){return e.trim().split(/(?n.trim()).filter(n=>n.length>0)}}function Pnt(e){let t=F1e(e);return!(t.length>4||!t.length||t.some(r=>{let{prefix:n,suffix:a,targetProcessedNames:s}=_1e(r);return n.length>3||a.length>3||!!n&&!L1e.test(n)||!!a&&!L1e.test(a)||s.length>5||s.some(l=>!["custom","friend","nick","display","user"].includes(l.trim()))}))}function Mnt(e,t,o,r,n,a){let s=null;if(o){let v=e;v?.bot&&!isNaN(v?.discriminator)&&Number(v?.discriminator)!==0&&(s=v.discriminator,v&&(v.globalName=v.username))}let l=e?.username?zl.enabled?e.username[0]+"...":e.username+(s?`#${s}`:""):null,c=e?.globalName?zl.enabled&&(t||e.globalName.toLowerCase()===e.username.toLowerCase())?e.globalName[0]+"...":e.globalName:null,u=e?.nick?zl.enabled&&(t||e.nick.toLowerCase()===e.username.toLowerCase())?e.nick[0]+"...":e.nick:null,p=e&&!(r&&n)&&qe.getNickname(e.id)||null,m=p?zl.enabled&&(t||p.toLowerCase()===e.username.toLowerCase())?p[0]+"...":p:null,g=e&&!(r&&a)&&Rd[e.id]||null,x=g?zl.enabled&&(t||g.toLowerCase()===e.username.toLowerCase())?g[0]+"...":g:null;return{username:l,display:c,nick:u,friend:m,custom:x}}function U1e(e){let{user:t,type:o}=e,r=e.guildId||e.tags?.props?.displayProfile?.guildId||null,n=r&&t?bt.getMember(r,t.id):null,a=t&&n?{...t,...n}:t||n||null,s=["typingIndicator","reactionsTooltip","profilesTooltip"].includes(o);return oW(a,null,null,o,"",s,!!r,void 0,void 0,e.isHovered)}function z1e(e){return U1e(e)[2]}function Nnt(e){return U1e(e)[1]}function Bnt({user:e,guildId:t,isHovered:o}){let r=z1e({user:e,guildId:t,type:"membersList"});if(!r)return null;let n=Ul.displayNameStylesEnabled&&e?.displayNameStyles||null;return n?i(Jq,{name:r,styles:n,animate:nT(o,Tc.store.styleActiveNow),showStaticEffect:Tc.store.styleActiveNow}):r}function eW(e){let{hideDefaultAtSign:t,replies:o}=Tc.use(["hideDefaultAtSign","replies"]),{message:r,userOverride:n,isRepliedMessage:a,withMentionPrefix:s}=e,l=!!r?.webhookId&&!r?.interaction,c=r&&W.getChannel(r.channel_id)||null,u=n||r?.author,p=l?u:u?L.getUser(u.id):null,m=l?null:u&&c?bt.getMember(c.guild_id,u.id):null,g=p&&m?{...p,...m}:p||m||null,x=t&&(!a||o)?"":s?"@":"";return oW(g,c?.id||null,r?.id||null,a?"replies":"messages",x,!1,!!c?.guild_id,e.colorString,e.colorStrings)}function Rnt(e){return eW(e)[1]}function Lnt(e){return eW(e)[0]}function Ont(e){let{hideDefaultAtSign:t,mentions:o}=Tc.use(["hideDefaultAtSign","mentions"]),{channelId:r,userId:n,props:a}=e,s=r&&W.getChannel(r)||null,l=L.getUser(n),c=s?bt.getMember(s.guild_id,n):null,u=l&&c?{...l,...c}:l||c||null,p=t&&o?"":"@",m,g;if(Ve(Gf.name)){let x=Gf.calculateNameColorForMessageContext({message:{author:u},author:u,channel:s});x&&(m=x,g={primaryColor:x,secondaryColor:null,tertiaryColor:null})}return oW(u,r||null,a?.messageId||null,"mentions",p,!1,!!s?.guild_id,m,g)[1]}function Fnt(e,t){return t?{...e,fontId:Int.DEFAULT}:e}function _nt(e,t=!0){return nT(e,t)?Ld.ANIMATED:t?Ld.STATIC:Ld.PLAIN}function nT(e,t=!0){return e||t&&Tc.store.alwaysAnimateEffects}function tW(e,t){return Ul.displayNameStylesEnabled&&t&&e?.effectId===qf.GRADIENT&&Tc.store.gradientGlow&&!Ul.useReducedMotion}function Unt(e,t,o){return Ah(o,{"smyn-native-gradient-glow-overflow":tW(e,t===Ld.ANIMATED)})}function $1e(e,t){let o=G1e(e)&&t===Ld.ANIMATED&&!Ul.useReducedMotion,r=tW(e,t===Ld.ANIMATED);return["smyn-native-effect",o&&"smyn-native-gradient-animated",e?.effectId===qf.GRADIENT&&Tc.store.gradientGlow&&"smyn-native-gradient-glow",r&&"smyn-native-gradient-glow-active",e?.effectId===qf.POP&&"smyn-native-pop",e?.effectId===qf.GUMMY&&"smyn-native-gummy",e?.effectId===qf.GUMMY&&t===Ld.ANIMATED&&!Ul.useReducedMotion&&"smyn-native-gummy-animated"].filter(Boolean).join(" ")}function Jq({name:e,styles:t,animate:o,ignoreFont:r=!1,showStaticEffect:n=!0,useMessageLayout:a=!1}){let s=o?Ld.ANIMATED:n?Ld.STATIC:Ld.PLAIN;return i(Tnt,{userName:e,displayNameStyles:Fnt(t,r),effectDisplayType:s,textClassName:Ah($1e(t,s),{"smyn-native-message-effect":a}),loop:!0})}function G1e(e){return e?.effectId===qf.GRADIENT||e?.effectId===qf.GLOW}function znt(e,t,o,r,n){return e?t?!n||!e.gradient?{}:r?e.gradient.animated:e.gradient.static.original:o?e.normal.adjusted:r&&e.gradient?e.gradient.animated:e.gradient?.static.original??e.normal.adjusted:{}}function oW(e,t,o,r,n,a,s,l,c,u){let p=r==="messages",m=r==="replies",g=r==="mentions",x=r==="typingIndicator",v=r==="membersList",y=r==="profilesPopout",A=r==="reactionsPopout",w=r==="reactionsTooltip"||A,I=r==="voiceChannel",E=a?Tc.store:Tc.use(["messages","replies","mentions","typingIndicator","memberList","styleDirectMessagesList","styleDirectMessagesMessages","styleFriendsList","styleActiveNow","profilePopout","reactions","friendNameOnlyInDirectMessages","customNameOnlyInDirectMessages","discriminators","hideDefaultAtSign","truncateAllNamesWithStreamerMode","removeDuplicates","ignoreEffects","ignoreFonts","animateEffects","alwaysAnimateEffects","gradientGlow","includedNames","customNameColor","friendNameColor","nicknameColor","displayNameColor","usernameColor","nameSeparator","triggerNameRerender"]),{messages:N,replies:B,mentions:_,typingIndicator:q,memberList:$,styleDirectMessagesMessages:re,profilePopout:Z,reactions:ee,friendNameOnlyInDirectMessages:ae,customNameOnlyInDirectMessages:ge,discriminators:ke,truncateAllNamesWithStreamerMode:Ee,removeDuplicates:Ue,ignoreEffects:it,ignoreFonts:se,animateEffects:te,includedNames:xe,customNameColor:me,friendNameColor:ze,nicknameColor:dt,displayNameColor:pt,usernameColor:Dt,nameSeparator:Wo,triggerNameRerender:Ar}=E,kr=t&&W.getChannel(t)||null,An=(t&&o?lt.getMessage(t,o):null)?.showMeYourNameGroupId||null,So=!p||!(kr?.isDM()||kr?.isGroupDM())||re,fr=u??(p||g?!!(o&&kh.has(o)||An&&kh.has(An)):m?!!(o&&Ch.has(o)||An&&Ch.has(An)):!1),xo=nT(fr,So),Cr=So||xo;l&&!c&&(c={primaryColor:l,secondaryColor:null,tertiaryColor:null});let ha=Ve(Gf.name),Vr=c||e?.colorStrings||null,Di=!s&&!ha&&Ul.displayNameStylesEnabled&&e?.displayNameStyles||null,Pi=!!Di,Z2=G1e(Di),Zu=e?.guildId?($e.getGuild(e.guildId)??{}).premiumFeatures?.features.includes("ENHANCED_ROLE_COLORS"):!s,Yx=g||A||kr?.isDM()||kr?.isGroupDM(),Fl=e?gv(Vr,Di,"Role",Zu,s,ha,xo):null,$Ke=!!Fl?.gradient&&Object.keys(Fl.gradient).length>0,Rce=getComputedStyle(document.documentElement)?.getPropertyValue("--text-muted")?.trim()||"#72767d",GKe=F1e(xe),Lce=e?gv(Vr,Di,Dt.trim(),Zu,s,ha,xo):null,HKe=e?gv(Vr,Di,pt.trim(),Zu,s,ha,xo):null,jKe=e?gv(Vr,Di,dt.trim(),Zu,s,ha,xo):null,qKe=e?gv(Vr,Di,ze.trim(),Zu,s,ha,xo):null,WKe=e?gv(Vr,Di,me.trim(),Zu,s,ha,xo):null,Oce={color:Rce,"-webkit-text-fill-color":Rce,isolation:"isolate","white-space":"pre","font-family":"var(--font-primary)","letter-spacing":"normal"},{username:X6,display:KKe,nick:QKe,friend:ZKe,custom:YKe}=Mnt(e,Ee,ke,s,ae,ge),nU={user:[X6,Lce],display:[KKe,HKe],nick:[QKe,jKe],friend:[ZKe,qKe],custom:[YKe,WKe]},Wm=[];for(let Ju of GKe){let{prefix:V6,suffix:iU,targetProcessedNames:aU}=_1e(Ju),w0=null,qce=null,Wce="";for(let e3 of aU)if(nU[e3]&&(w0=nU[e3][0],qce=nU[e3][1],Wce=e3,w0))break;w0&&Wm.push({prefix:V6||"",name:w0,wrapped:w0,type:Wce,suffix:iU||"",style:qce})}Wm.length||Wm.push({prefix:"",name:X6||"Unknown",wrapped:X6||"Unknown",suffix:"",style:Lce});let Tr=Wm.shift(),Ir=Wm.shift(),gr=Wm.shift(),er=Wm.shift(),jn=Wm.shift(),JKe=a?Tr.name||"":h4(Tr.name||""),XKe=a?(Ir??{}).name||"":h4((Ir??{}).name||""),VKe=a?(gr??{}).name||"":h4((gr??{}).name||""),eQe=a?(er??{}).name||"":h4((er??{}).name||""),tQe=a?(jn??{}).name||"":h4((jn??{}).name||"");if(Tr.wrapped=JKe,Ir&&(Ir.wrapped=XKe),gr&&(gr.wrapped=VKe),er&&(er.wrapped=eQe),jn&&(jn.wrapped=tQe),p&&!N)return[null,null,null];if(m&&!B)return[null,null,null];if(g&&!_)return[null,null,null];if(x&&!q)return[null,null,null];if(v&&!$)return[null,null,null];if(y&&!Z)return[null,null,null];if(w&&!ee)return[null,null,null];if(I&&!ee)return[null,null,null];if(!e||!X6)return[null,null,null];let Yu=new Set([Tr,Ir,gr,er,jn].filter(Boolean).map(Ju=>Ju.name.toLowerCase())).size>1;Ue&&(jn&&er&&jn.name.toLowerCase()===er.name.toLowerCase()&&(jn.type==="user"&&Yu?er=null:jn=null),jn&&gr&&jn.name.toLowerCase()===gr.name.toLowerCase()&&(jn.type==="user"&&Yu?gr=null:jn=null),jn&&Ir&&jn.name.toLowerCase()===Ir.name.toLowerCase()&&(jn.type==="user"&&Yu?Ir=null:jn=null),jn&&Tr&&jn.name.toLowerCase()===Tr.name.toLowerCase()&&(jn.type==="user"&&Yu?Tr=null:jn=null),er&&gr&&er.name.toLowerCase()===gr.name.toLowerCase()&&(er.type==="user"&&Yu?gr=null:er=null),er&&Ir&&er.name.toLowerCase()===Ir.name.toLowerCase()&&(er.type==="user"&&Yu?Ir=null:er=null),er&&Tr&&er.name.toLowerCase()===Tr.name.toLowerCase()&&(er.type==="user"&&Yu?Tr=null:er=null),gr&&Ir&&gr.name.toLowerCase()===Ir.name.toLowerCase()&&(gr.type==="user"&&Yu?Ir=null:gr=null),gr&&Tr&&gr.name.toLowerCase()===Tr.name.toLowerCase()&&(gr.type==="user"&&Yu?Tr=null:gr=null),Ir&&Tr&&Ir.name.toLowerCase()===Tr.name.toLowerCase()&&(Ir.type==="user"&&Yu?Tr=null:Ir=null));let Y2=[Tr,Ir,gr,er,jn].filter(Boolean);Tr=Y2.shift(),Ir=Y2.shift(),gr=Y2.shift(),er=Y2.shift(),jn=Y2.shift();let S0=xo&&$Ke&&(!Di||Z2&&Di.effectId!==qf.GRADIENT),rU=S0&&!Ul.useReducedMotion,Km=xo&&te&&!it,Fce=Pi&&!it,oQe=tW(Di,xo),_ce=n+Tr.name,Uce=Ir&&Km?Ir.name:"",zce=gr&&Km?gr.name:"",$ce=er&&Km?er.name:"",Gce=jn&&Km?jn.name:"",nQe=[_ce,Uce,zce,$ce,Gce].filter(Boolean).join(Wo).trim(),Hce=xo?" smyn-gradient-hovered":"",jce=Yx?"smyn-gradient smyn-gradient-inherit-bg"+Hce:"smyn-gradient smyn-gradient-unset-bg"+Hce,rQe="smyn-name-group smyn-first-name-group",iQe="smyn-name-group smyn-second-name-group",aQe="smyn-name-group smyn-third-name-group",sQe="smyn-name-group smyn-fourth-name-group",lQe="smyn-name-group smyn-fifth-name-group",cQe="smyn-name smyn-first-name",uQe="smyn-name smyn-second-name",dQe="smyn-name smyn-third-name",pQe="smyn-name smyn-fourth-name",mQe="smyn-name smyn-fifth-name",fQe="smyn-affix smyn-prefix",gQe="smyn-affix smyn-suffix",hQe=Math.max(1,1.5*(Tr.name.length/12)),xQe={...A?{display:"flex",flexWrap:"wrap",lineHeight:"1.1em",fontSize:"0.9em"}:{},"--smyn-gradient-duration":`${hQe}s`,"--smyn-underline-color":Fl?.normal.original?.["text-decoration-color"]},vQe=i("span",{style:{...xQe,...Pi?{}:Fl?.normal.original||{}},className:Ah("smyn-container",{"smyn-native-gradient-glow-overflow":oQe})},n&&i("span",null,n),i("span",{className:Ah(rQe,{[jce]:S0}),"data-text":S0?_ce:void 0,style:S0&&Yx&&Fl?.gradient?rU?Fl.gradient.animated:Fl.gradient.static.original:void 0},i("span",{className:Ah(cQe),style:Pi?void 0:Fl?rU&&Fl.gradient?Fl.gradient.animated:Fl.gradient?Fl.gradient.static.original:Fl.normal.original:void 0},Pi&&Di?i(Jq,{name:Tr.name,styles:Di,animate:xo,showStaticEffect:So,useMessageLayout:p}):Tr.wrapped)),[{name:Ir,dataText:Uce,groupClass:iQe,nameClass:uQe,position:"second"},{name:gr,dataText:zce,groupClass:aQe,nameClass:dQe,position:"third"},{name:er,dataText:$ce,groupClass:sQe,nameClass:pQe,position:"fourth"},{name:jn,dataText:Gce,groupClass:lQe,nameClass:mQe,position:"fifth"}].map(({name:Ju,dataText:V6,groupClass:iU,nameClass:aU,position:w0})=>Ju&&i("span",{key:w0,className:Ah(iU)},i("span",{style:Oce,className:fQe},i("span",null,Wo),Ju.prefix),i("span",{className:Ah(aU,{[jce]:S0&&Km}),"data-text":S0&&V6?V6:void 0,style:{...se?{fontFamily:"var(--font-primary)",letterSpacing:"normal"}:{},...znt(Cr?Ju.style:null,Fce,it,rU&&Km,S0&&Km)}},Fce&&Di?i(Jq,{name:Ju.name,styles:Di,animate:Km,ignoreFont:se,showStaticEffect:So,useMessageLayout:p}):Ju.wrapped),i("span",{style:Oce,className:gQe},Ju.suffix))));return[nQe,vQe,Tr.name]}function $nt(e,t){let o=e?.id,r=e?.messageReference?.message_id,n=e?.showMeYourNameGroupId??"";G(()=>{if(!(!e||!t))return Xq(o),Xq(n),Gnt(r),()=>{Vq(o),Vq(n),Hnt(r)}},[o,r,n,t])}function Xq(e){if(!e)return;let t=kh.get(e)||0;kh.set(e,t+1),t===0&&wu()}function Vq(e){if(!e)return;let t=kh.get(e)||0;t<=1?(kh.delete(e),wu()):kh.set(e,t-1)}function Gnt(e){if(!e)return;let t=Ch.get(e)||0;Ch.set(e,t+1),t===0&&wu()}function Hnt(e){if(!e)return;let t=Ch.get(e)||0;t<=1?(Ch.delete(e),wu()):Ch.set(e,t-1)}function jnt(){return T(!1)}function wu(){Tc.store.triggerNameRerender=!Tc.store.triggerNameRerender}function qnt({modalProps:e,user:t}){let[o,r]=T(Rd[t.id]??"");return i(be,{...e,size:"sm",title:Rd[t.id]?"Change SMYN Nickname":"Add SMYN Nickname",actions:[{text:"Save",variant:"primary",onClick:async()=>{let n=o.trim().slice(0,32).trim();n?Rd[t.id]=n:delete Rd[t.id],await Le.set("SMYNCustomNicknames",Rd),wu(),e.onClose()}},{text:"Cancel",variant:"secondary",onClick:e.onClose}]},i(oe,{tag:"h3",style:{marginBottom:8,fontSize:"16px",fontWeight:"400",lineHeight:"1.25",color:"var(--text-subtle)"}},"Set a custom SMYN nickname for this user. Make use of it by specifying {custom} in the SMYN template settings."),i("div",{style:{paddingTop:"10px",flexGrow:0}}),i(oe,{tag:"h3",style:{marginBottom:8,fontSize:"14px",fontWeight:600}},"SMYN Nickname"),i(Te,{value:o,maxLength:32,onChange:r,placeholder:t.globalName??t.username,style:{width:"100%"}}),i(Ys,{className:"smyn-reset-button",onClick:async()=>{r(""),delete Rd[t.id],await Le.set("SMYNCustomNicknames",Rd),wu()}},"Reset SMYN Nickname"),i("div",{style:{paddingTop:"10px",flexGrow:0}}))}var Ah,h4,Tnt,Ld,qf,Int,O1e,L1e,Ent,Rd,v4,xv,hv,jf,y4,kh,Ch,Wnt,Tc,tm,rT=h(()=>{"use strict";d();P1e();Fo();on();Jt();j();Tt();Pe();We();Gq();nW();O();Su();R();le();C();Ah=K(),h4=Oe("lastIndex;return"),Tnt=he("UserNameWithEffects","--custom-display-name-styles-prism-cycle"),Ld=Ae("PLAIN","STATIC","ANIMATED"),qf=Ae("SOLID","GRADIENT","NEON","TOON","POP","GLOW","PRISM","GUMMY"),Int=Ae("DEFAULT","CHERRY_BOMB","CHICLE","MUSEO_MODERNO"),O1e=/^role((?:\+|-)\d{0,4})?$/iu,L1e=/^[\p{S}\p{P}]{1,3}$/iu,Ent=/(?:\{(?:custom|friend|nick|display|user)(?:,\s*(?:custom|friend|nick|display|user))*\})/iu,Rd={},v4=null,xv=null;hv=null,jf=null,y4=null;kh=new Map,Ch=new Map;Wnt=(e,{user:t})=>{if(!t)return;let o=L.getCurrentUser();if(!o||t.id===o.id)return;let r=wt("user-profile",e);!r&&e.push(i(P.MenuSeparator,null)),(r||e).push(i(P.MenuItem,{id:"smyn-custom-nickname",label:Rd[t.id]?"Change SMYN Nickname":"Add SMYN Nickname",action:()=>ce(n=>i(H,null,i(qnt,{modalProps:n,user:t})))}))};Br("ShowMeYourName","ignoreEffects","ignoreGradients");Br("ShowMeYourName","animateEffects","animateGradients");Br("ShowMeYourName","alwaysAnimateEffects","alwaysShowEffects");Tc=M({messages:{type:3,default:!0,description:"Display custom name format in messages."},replies:{type:3,default:!0,description:"Display custom name format in replies."},mentions:{type:3,default:!0,description:"Display custom name format in mentions."},typingIndicator:{type:3,default:!0,description:"Display the first available name listed in your custom name format in the typing indicator."},memberList:{type:3,default:!0,description:"Display the first available name listed in your custom name format in the members list, DMs list, friends list, and Active Now."},styleDirectMessagesList:{type:3,default:!0,displayName:"Style Direct Messages List",description:"Show display name effects on unselected entries without requiring hover. Selected and hovered entries are still styled when disabled."},styleDirectMessagesMessages:{type:3,default:!0,displayName:"Style Direct Messages Messages",description:"Show display name effects on message authors without requiring hover. Hovered names are still styled when disabled."},styleFriendsList:{type:3,default:!0,displayName:"Style Friends List",description:"Show display name effects without requiring hover. Hovered entries are still styled when disabled."},styleActiveNow:{type:3,default:!0,displayName:"Style Active Now",description:"Show display name effects without requiring hover. Hovered entries are still styled when disabled."},profilePopout:{type:3,default:!0,description:"Display the first available name listed in your custom name format in profile popouts."},voiceChannels:{type:3,default:!0,description:"Display the first available name listed in your custom name format in voice channels."},reactions:{type:3,default:!0,description:"Display the first available name listed in your custom name format in reaction tooltips, and the full name in reaction popouts."},discriminators:{type:3,default:!0,description:"Append discriminators to usernames for bots. Discriminators were deprecated for users, but are still used for bots. By default, a bot's username is equivalent to a user's global name, therefore multiple bots can have the same username. Appending discriminators makes them unique again."},hideDefaultAtSign:{type:3,default:!1,description:'Hide the default "@" symbol before the name in mentions and replies. Only applied if either feature is enabled.'},truncateAllNamesWithStreamerMode:{type:3,default:!0,description:"Truncate all names, not just usernames, while in Streamer Mode."},removeDuplicates:{type:3,default:!0,description:"If any of the names are equivalent, remove them, leaving only the unique names."},ignoreFonts:{type:3,default:!1,description:"For the non-primary names, use Discord's default fonts regardless of the user's custom nitro font."},ignoreEffects:{type:3,default:!0,description:"For non-primary names, use only the primary role color and omit display name effects."},animateEffects:{type:3,default:!1,description:'Animate role gradients and display name effects on non-primary names. This is disabled by "Ignore Effects" and reduced motion.'},alwaysAnimateEffects:{type:3,default:!1,displayName:"Always Animate Effects",description:"Force display name effects to animate when they would already be visible, even without hover."},gradientGlow:{type:3,default:!0,description:"Add a glow to animated user gradients the same way server role gradients glow."},nameSeparator:{type:0,description:"The separator to use between names. The default is a single space.",default:" "},friendNameOnlyInDirectMessages:{type:3,default:!1,description:"Only display friend names when in DMs, and not in servers."},customNameOnlyInDirectMessages:{type:3,default:!1,description:"Only display custom names when in DMs, and not in servers."},includedNames:{type:0,description:"The order to display usernames, display names, nicknames, friend names, and custom names. Use the following placeholders: {user}, {display}, {nick}, {friend}, {custom}. You can provide multiple name options to use as fallbacks if one is unavailable by separating them with commas as such: {custom, friend, nick}. You can have up to three prefixes and three suffixes per name.",default:"{custom, friend, nick} [{display}] (@{user})",isValid:Pnt},customNameColor:{type:0,description:`The color to use for the custom name you assigned a user if it's not the first displayed. Accepts any valid CSS input. Use "Role" to follow the user's top role colors, nitro effect colors, or IRCColors color if enabled. Use "Role+-#" to adjust the brightness by that percentage (ex: "Role+15")`,default:"Role-25",isValid:x4},friendNameColor:{type:0,description:`The color to use for a friend's nickname if it's not the first displayed. Accepts any valid CSS input. Use "Role" to follow the user's top role colors, nitro effect colors, or IRCColors color if enabled. Use "Role+-#" to adjust the brightness by that percentage (ex: "Role+15")`,default:"Role-25",isValid:x4},nicknameColor:{type:0,description:`The color to use for the nickname if it's not the first displayed. Accepts any valid CSS input. Use "Role" to follow the user's top role colors, nitro effect colors, or IRCColors color if enabled. Use "Role+-#" to adjust the brightness by that percentage (ex: "Role+15")`,default:"Role-25",isValid:x4},displayNameColor:{type:0,description:`The color to use for the display name if it's not the first displayed. Accepts any valid CSS input. Use "Role" to follow the user's top role colors, nitro effect colors, or IRCColors color if enabled. Use "Role+-#" to adjust the brightness by that percentage (ex: "Role+15")`,default:"Role-25",isValid:x4},usernameColor:{type:0,description:`The color to use for the username if it's not the first displayed. Accepts any valid CSS input. Use "Role" to follow the user's top role colors, nitro effect colors, or IRCColors color if enabled. Use "Role+-#" to adjust the brightness by that percentage (ex: "Role+15")`,default:"Role-25",isValid:x4},triggerNameRerender:{type:3,description:"Trigger a name rerender by toggling this setting.",default:!1,hidden:!0}}),tm=S({name:"ShowMeYourName",description:"Display any permutation of custom nicknames, friend nicknames, server nicknames, display names, and usernames in chat.",authors:[F.Etorix,b.Rini,b.TheKodeToad,b.sadan,b.prism],tags:["Appearance","Customisation"],searchTerms:["SMYN","Nicknames","Custom Nicknames"],isModified:!0,settings:Tc,patches:[{find:'="SYSTEM_TAG"',group:!0,replacement:[{match:/(?<=colorString:(\i),colorStrings:(\i).{0,900}?)style:.{0,120}?,(onClick:\i,onContextMenu:\i,children:)(.{0,250}?),"data-text":(\i\+\i)/,replace:'$3$self.getMessageNameElement({...arguments[0],colorString:$1,colorStrings:$2})??($4),"data-text":$self.getMessageNameText(arguments[0])??($5)'},{match:/(\(\{)(shouldSubscribe)/,replace:"$1message:arguments[0].message,$2"}]},{find:"activityInviteEducationActivity:",replacement:{match:/(?=\i.\i.getName\((\i.guild_id),\i.id,(\i)\))/,replace:'$self.getTypingMemberListProfilesReactionsVoiceNameText({user:$2,type:"typingIndicator",guildId:$1})??'}},{find:"ImpressionNames.DM_LIST_RIGHT_CLICK_MENU_SHOWN",group:!0,replacement:[{match:/(?<=getMentionCount\(\i.id\)>0\),\i=)/,replace:'$self.getTypingMemberListProfilesReactionsVoiceNameText({...arguments[0],type:"membersList"})??'},{match:/(?<=userName:\i,)displayNameStyles:(\i)\?\.displayNameStyles,effectDisplayType:(\i\|\|\i\|\|\i)\?\i\.\i\.ANIMATED:\i\.\i\.PLAIN,loop:\i(?=,boldFontOpacity:)/,replace:"displayNameStyles:$1?.displayNameStyles,effectDisplayType:$self.getDisplayNameEffectDisplayType($2,$self.settings.store.styleDirectMessagesList),textClassName:$self.getDisplayNameEffectClassName($1?.displayNameStyles,$self.getDisplayNameEffectDisplayType($2,$self.settings.store.styleDirectMessagesList)),loop:$self.shouldAnimateNameEffects($2,$self.settings.store.styleDirectMessagesList)"}]},{find:"hasUniqueUsername()}),usernameClass",group:!0,replacement:[{match:/(?<=\(0,\i\.jsx\)\(\i\.\i,\{user:\i,nick:\i,)(?=botClass:)/,replace:"displayNameStylesType:$self.getDisplayNameEffectDisplayType(arguments[0].hovered,$self.settings.store.styleFriendsList),"},{match:/(?<=nick:)(\i)/,replace:'$self.getTypingMemberListProfilesReactionsVoiceNameText({user:arguments[0].user,type:"membersList"})??$1'}]},{find:"handleMouseEnter=()=>{let{isFocused:",group:!0,replacement:[{match:/(?<=handleMouseEnter=\(\)=>\{let\{isFocused:\i,isActive:\i,onOtherHover:\i}=this.props,\{isContextMenuActive:\i}=this.state;this.setState\(\{hovered:)\i(?=}\),)/,replace:"!0"},{match:/(?<=let\{role:\i,\.\.\.\i\}=\i,)(\i)=(\i\(\)\(\i,\i\.\i,null!=\i\?\{\[\i\]:\i\|\|\i\}:null,\{\[\i\.\i\]:\i\|\|\i\}\))(?=;return null!=\i\?)/,replace:"$1=$self.getNativeGradientGlowOverflowClassName(this.props.user.displayNameStyles,$self.getDisplayNameEffectDisplayType(this.state.hovered||this.props.isActive||this.state.isContextMenuActive,$self.settings.store.styleFriendsList),$2)"}]},{find:'location:"DiscordTag"})',group:!0,replacement:[{match:/(?<=showStreamerModeTooltip:\i&&\i\.\i\.isNameConcealed\(e\),displayNameStyles:)\i!==\i\?(\i\.displayNameStyles):null/,replace:"!arguments[0].forceUsername?$1:null"},{match:/(?<=displayNameStylesType:\i=\i\.\i\.)PLAIN(?=,\.\.\.\i}=e)/,replace:"STATIC"},{match:/(?<=userName:\i,displayNameStyles:(\i),effectDisplayType:(\i))(?=}\):\i)/,replace:",textClassName:$self.getDisplayNameEffectClassName($1,$2)"}]},{find:'("NowPlayingHeader")',group:!0,replacement:[{match:/(?<=\.Header,\{priorityUser:(\i),guildId:(\i)\?\.id,title:)(\i)(?=,subtitle:.{0,200}?displayNameFont:1===\i\.length)/,replace:"$self.getActiveNowNameElement({user:$1.user,guildId:$2?.id,isHovered:arguments[0].smynHovered})??$3"},{match:/(hasStaffQuestActivityPanelOverride:\i}=\i,\i=(\i)\.useRef\(null\),\[\i,\i\]=\2\.useState\(null\))/,replace:"$1,[smynHovered,setSmynHovered]=$2.useState(!1)"},{match:/(?<=\(0,\i\.jsx\)\(\i,\{party:\i,onUserContextMenu:\i,quest:\i)(?=}\))/,replace:",smynHovered"},{match:/(?<=\{\.\.\.(\i),ref:\i,)onMouseEnter:(\i)(?=,"aria-haspopup":"menu",className:)/,replace:"onMouseEnter:smynEvent=>{$2(smynEvent);setSmynHovered(!0)},onMouseLeave:smynEvent=>{$1.onMouseLeave?.(smynEvent);setSmynHovered(!1)}"}]},{find:"channel.isSystemDM(),",replacement:{match:/(?<=(\i\.\i\.getUser).{650,750}length>0,\i=\i&&null!=\i&&!\i,)(\i=)(.{0,125}?"aria-label":)(\i.\i.getName\(\i\).{0,1700}?text:)(?=\i,position)/,replace:'smynName=arguments[0].channel.recipients.length===1?$self.getTypingMemberListProfilesReactionsVoiceNameText({user:$1(arguments[0].channel.recipients[0]),type:"profilesPopout"})??null:null,$2smynName??$3smynName??$4smynName??'}},{find:'CUSTOM_GIFT?"":',replacement:[{match:/(hasHovered:\i,isHovered:(\i).{0,2000})(let \i=\i.id===\i,\i=)/,replace:"$1arguments[0].message.showMeYourNameGroupId=!!arguments[0].groupId?`g-${arguments[0].groupId}`:null;$self.handleHoveringMessage(arguments[0].message,$2);$3"}]},{find:".USER_MENTION)",group:!0,replacement:[{match:/(?=function \i\(\i\){return\(0)/,replace:"const showMeYourNameMention=$self.getMentionNameElement(arguments[0]);"},{match:/(?<=onContextMenu:\i,\.\.\.\i,children:)/,replace:"showMeYourNameMention??",predicate:()=>!Ve(vv.name)}]},{find:"noStyleAndInteraction},",replacement:{match:/(className:"mention",)/,replace:"$1props:arguments[2],"}},{find:"let{colorRoleName:",replacement:{match:/(let{colorRoleName:\i,colorString:\i,colorStrings:\i,)name:(\i)/,replace:'$1showMeYourNameName:$2=$self.getTypingMemberListProfilesReactionsVoiceNameText({...arguments[0],type:"membersList"})??(arguments[0].name)'}},{find:"shouldWrap:!0,loop:!0,inProfile:!0",replacement:{match:/displayName:(\i),(?=trailing:\i,|size:\i=|displayNameSize:\i)/g,replace:'showMeYourNameNickname:$1=$self.getTypingMemberListProfilesReactionsVoiceNameText({...arguments[0],type:"profilesPopout"})??(arguments[0].nickname),'}},{find:'id:"view-server-profile",',group:!0,replacement:[{match:/(displayName:)(\i.\i.getName\(void 0,void 0,\i\))/,replace:'$1$self.getTypingMemberListProfilesReactionsVoiceNameText({user:arguments[0].user,guildId:null,type:"profilesTooltip"})??($2)'},{match:/(displayName:)(\i.\i.getName\(\i,\i,\i\))/,replace:'$1$self.getTypingMemberListProfilesReactionsVoiceNameText({user:arguments[0].user,guildId:arguments[0].guildId,type:"profilesTooltip"})??($2)'}]},{find:"reactionTooltip1,",replacement:{match:/(\i.\i.getName\((\i),\i\?\.id,(\i)\))/,replace:'$self.getTypingMemberListProfilesReactionsVoiceNameText({user:$3,guildId:$2,type:"reactionsTooltip"})??($1)'}},{find:".MESSAGE,userId:",group:!0,replacement:[{match:/(function \i\(\i\)\{let\{emoji:\i,user:\i,message:\i,channel:\i,guildId:\i,reactionType:\i,onRemoveReactor:\i\}=\i,)/,replace:"$1[smynHovered,setSmynHovered]=$self.useNameHoverState(),"},{match:/(?<=\(0,\i.\i\)\(\i.\i,{className:\i.\i,)(?=(?:align:\i\.\i\.\i\.CENTER|onContextMenu:\i=>))/g,replace:"onMouseEnter:()=>setSmynHovered(!0),onMouseLeave:()=>setSmynHovered(!1),"},{match:/(?<=Child,{className:\i.\i,children:)/g,replace:'($self.getTypingMemberListProfilesReactionsVoiceNameElement({user:arguments[0].user,guildId:arguments[0].guildId,type:"reactionsPopout",isHovered:smynHovered}))??'}]},{find:",connectUserDragSource:",replacement:{match:/(serverDeaf:\i,)nick:(\i)/,replace:'$1showMeYourNameVoice:$2=$self.getTypingMemberListProfilesReactionsVoiceNameText({user:arguments[0].user,guildId:arguments[0].channel.guild_id,type:"voiceChannel"})??(arguments[0].nick)'}}],async start(){v4=new Map,xv=document.createElement("div"),hv=document.createElement("canvas"),hv.width=hv.height=1,jf=hv.getContext("2d",{willReadFrequently:!0}),y4=new Map,Rd=await Le.get("SMYNCustomNicknames")??{}},stop(){v4?.clear(),v4=null,xv=null,y4?.clear(),y4=null,hv=null,jf=null},contextMenus:{"user-context":Wnt},flux:{RELATIONSHIP_UPDATE:wu,RUNNING_STREAMER_TOOLS_CHANGE:wu,ACCESSIBILITY_SET_DISPLAY_NAME_STYLES_ENABLED:wu,ACCESSIBILITY_SYSTEM_PREFERS_REDUCED_MOTION_CHANGED:wu,ACCESSIBILITY_SET_PREFERS_REDUCED_MOTION:wu},addHoveringMessage:Xq,removeHoveringMessage:Vq,handleHoveringMessage:$nt,useNameHoverState:jnt,getMessageName:eW,getMessageNameText:Lnt,getMessageNameElement:Rnt,getMentionNameElement:Ont,getActiveNowNameElement:Bnt,getDisplayNameEffectClassName:$1e,getDisplayNameEffectDisplayType:_nt,getNativeGradientGlowOverflowClassName:Unt,shouldAnimateNameEffects:nT,getTypingMemberListProfilesReactionsVoiceNameText:z1e,getTypingMemberListProfilesReactionsVoiceNameElement:Nnt})});function Knt(){return i("svg",{className:"vc-mentionAvatars-icon vc-mentionAvatars-role-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},i("path",{d:"M14 8.00598C14 10.211 12.206 12.006 10 12.006C7.795 12.006 6 10.211 6 8.00598C6 5.80098 7.794 4.00598 10 4.00598C12.206 4.00598 14 5.80098 14 8.00598ZM2 19.006C2 15.473 5.29 13.006 10 13.006C14.711 13.006 18 15.473 18 19.006V20.006H2V19.006Z"}),i("path",{d:"M20.0001 20.006H22.0001V19.006C22.0001 16.4433 20.2697 14.4415 17.5213 13.5352C19.0621 14.9127 20.0001 16.8059 20.0001 19.006V20.006Z"}),i("path",{d:"M14.8834 11.9077C16.6657 11.5044 18.0001 9.9077 18.0001 8.00598C18.0001 5.96916 16.4693 4.28218 14.4971 4.0367C15.4322 5.09511 16.0001 6.48524 16.0001 8.00598C16.0001 9.44888 15.4889 10.7742 14.6378 11.8102C14.7203 11.8418 14.8022 11.8743 14.8834 11.9077Z"}))}function rW(e){return H1e.store.showAtSymbol?`@${e}`:e}var H1e,vv,nW=h(()=>{"use strict";d();D1e();Jt();j();Pe();rT();O();R();C();H1e=M({showAtSymbol:{type:3,displayName:"Show @ Symbol",description:"Whether the the @ symbol should be displayed on user mentions",default:!0}});vv=S({name:"MentionAvatars",description:"Shows user avatars and role icons inside mentions",tags:["Appearance","Customisation"],authors:[b.Ven,b.SerStars],patches:[{find:".USER_MENTION)",replacement:{match:/children:`@\$\{(\i\?\?\i)\}`(?<=\.useName\((\i)\).+?)/,replace:"children:$self.renderUsername({username:$1,user:$2,showMeYourNameMention:typeof showMeYourNameMention!=='undefined'?showMeYourNameMention:undefined})"}},{find:".ROLE_MENTION)",replacement:{match:/children:\[\i&&.{0,100}className:\i.\i,background:!1,.{0,50}?,\i(?=\])/,replace:"$&,$self.renderRoleIcon(arguments[0])"}},{find:'"text":"locked"',replacement:{match:/(?<=,(\i)\).{0,55})`@\$\{(\i)\}`/,replace:"$self.renderInputMention($2,$1)"}}],settings:H1e,renderUsername:H.wrap(({user:e,username:t,showMeYourNameMention:o})=>{let[r,n]=T(!1),a=Ve(tm.name)&&o?o:i(f,null,rW(t));return i("span",{onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),className:"vc-mentionAvatars-container"},e&&i("img",{src:e.getAvatarURL(ao.getGuildId(),16,r),className:"vc-mentionAvatars-icon",style:{borderRadius:"50%"}}),a)},{noop:!0}),renderInputMention(e,t){return t?i(f,null,i("img",{src:t.getAvatarURL(ao.getGuildId(),16),className:"vc-mentionAvatars-icon",style:{borderRadius:"50%"}}),rW(e)):rW(e)},renderRoleIcon:H.wrap(({roleId:e,guildId:t})=>{if(!e)return null;let o=To.getRole(t,e);return o?.icon?i("img",{className:"vc-mentionAvatars-icon vc-mentionAvatars-role-icon",src:`${location.protocol}//${window.GLOBAL_ENV.CDN_HOST}/role-icons/${e}/${o.icon}.webp?size=24&quality=lossless`}):i(Knt,null)},{noop:!0})})});var b4,Ic,iT=h(()=>{"use strict";d();j();O();R();C();b4=M({userList:{description:"List of user ids to allow or exempt pings for (separated by commas or spaces)",type:0,default:"1234567890123445,1234567890123445",multiline:!0},roleList:{description:"List of role ids to allow or exempt pings for (separated by commas or spaces)",type:0,default:"1234567890123445,1234567890123445",multiline:!0},shouldPingListed:{description:"Behaviour",type:4,options:[{label:"Do not ping the listed users / roles",value:!1},{label:"Only ping the listed users / roles",value:!0,default:!0}]},inverseShiftReply:{description:"Invert Discord's shift replying behaviour (enable to make shift reply mention user)",type:3,default:!1}}),Ic=S({name:"NoReplyMention",description:"Disables reply pings by default",tags:["Chat","Notifications"],authors:[b.DustyAngel47,b.rae,b.pylix,b.outfoxxed],settings:b4,shouldMention(e,t){let o=b4.store.userList.includes(e.author.id),r=W.getChannel(e.channel_id);if(r?.guild_id&&!o){let a=bt.getMember(r.guild_id,e.author.id)?.roles;o=!!a&&a.some(s=>b4.store.roleList.includes(s))}let n=b4.store.shouldPingListed?o:!o;return b4.store.inverseShiftReply?t!==n:!t&&n},patches:[{find:',"Message")}function',replacement:{match:/:(\i),shouldMention:!(\i)\.shiftKey/,replace:":$1,shouldMention:$self.shouldMention($1,$2.shiftKey)"}}]})});var j1e=h(()=>{});function Znt(e){return e.match(/^(?:<(?:(a):)?|:)?([\w-]+?)(?:~\d+)?:([0-9]+)>?$/)}function Ynt(e){return e?e.id&&e.name?`${e.name}:${e.id}`:e.optionallyDiverseSequence?.trim()?e.optionallyDiverseSequence:e.name?.trim()??"":""}function Jnt(e){let t=e.trim();if(!t)return null;let o=Znt(t);return o?{kind:"custom",id:o[3],name:o[2],animated:o[1]==="a"}:{kind:"unicode",name:t,animated:!1}}function Xnt(e,t){let o=at.getEmojiURL({id:e,animated:!1,size:48});if(!t)return[o];let r=at.getEmojiURL({id:e,animated:!0,size:48});return r===o?[o]:[r,o]}function Vnt({id:e,name:t,animated:o}){let r=Xnt(e,o),[n,a]=T(0);return i("img",{src:r[n],alt:t,width:34,height:34,className:aT("emoji-preview"),onError:()=>a(s=>s{let n=Fe.getChannelId();return n?W.getChannel(n):null});return i(Xa,{position:"bottom",align:"left",targetElementRef:o,renderPopout:({closePopout:n})=>i(Qnt,{channel:r,closePopout:n,onSelectEmoji:({emoji:a,willClose:s})=>{let l=Ynt(a);l&&e(l),s&&n()}})},n=>i("div",{...n,ref:o,className:aT("emoji-trigger")},t??"Pick Emoji"))}function ert(e){return Array.from(new Set(e.split(/[\n,]/g).map(t=>t.trim()).filter(Boolean))).slice(0,yv)}function trt(e,t){let o=ert(e);return o.includes(t)?o.join(", "):[...o,t].slice(0,yv).join(", ")}function ort({value:e}){let t=Jnt(e);return t?t.kind==="custom"?i(Vnt,{id:t.id,name:t.name,animated:t.animated}):i("span",{className:aT("unicode-preview")},t.name):i(f,null,"Pick Emoji")}function W1e({setValue:e}){let[t,o]=T(Tn.store.reactEmoji??"\u{1F480}");return i("div",null,i(oe,null,"Select Emoji For Reactions"),i("div",{className:aT("primary-emoji-picker")},i(q1e,{onSelect:r=>{o(r),e(r)}},i(ort,{value:t}))))}function K1e({setValue:e}){let{addAdditionalReacts:t}=Tn.use(["addAdditionalReacts"]),[o,r]=T(Tn.store.additionalReactEmojis??"");return t?i("div",null,i(oe,null,"Select Additional Emojis"),i("div",{style:{marginTop:8,display:"flex",alignItems:"center",gap:12,maxWidth:420}},i(Te,{value:o,placeholder:`comma/newline separated, max ${yv}`,onChange:n=>{r(n),e(n)},onClick:n=>n.stopPropagation(),onMouseDown:n=>n.stopPropagation(),style:{flex:1}}),i(q1e,{onSelect:n=>{let a=trt(o,n);r(a),e(a)}}))):null}var yv,aT,Qnt,Q1e=h(()=>{"use strict";d();j1e();We();we();le();C();iW();yv=8,aT=K("vc-message-click-actions-"),Qnt=he("showAddEmojiButton:","pickerIntention:","messageId:")});function ove(e){return e.key==="Shift"?"SHIFT":e.key==="Control"?"CTRL":e.key==="Alt"?"ALT":null}function S4(e){return e==="NONE"?Kl.size===0:Kl.has(e)}function uT(e){D.show({message:e,type:D.Type.FAILURE,id:D.genId(),options:{duration:3e3}})}function srt(){Od&&(clearTimeout(Od),Od=null),gl&&(clearTimeout(gl),gl=null)}function bv(){uW=0,lT=!1,mW=0}function cT(e){let t=e.trim();if(!t)return null;let o=t.match(/^(?:<(?:(a):)?|:)?([\w-]+?)(?:~\d+)?:([0-9]+)>?$/);return o?`${o[2]}:${o[3]}`:t}function lrt(){let t=[cT(Tn.store.reactEmoji)];if(Tn.store.addAdditionalReacts){let o=Tn.store.additionalReactEmojis.split(/[\n,]/g).map(cT).filter(r=>!!r).slice(0,yv);t.push(...o)}return Array.from(new Set(t.filter(o=>!!o)))}async function urt(e,t,o,r,n){let a=cT(o);if(!a)return;if(r.guild_id&&(!ht.can(ct.ADD_REACTIONS,r)||!ht.can(ct.READ_MESSAGE_HISTORY,r))){uT("Cannot react: Missing permissions");return}let s=n.reactions?.some(l=>{let c=l.emoji.id?`${l.emoji.name}:${l.emoji.id}`:l.emoji.name;return l.me&&c===a});try{s?await mt.del({url:Gt.Endpoints.REACTION(e,t,a,"@me")}):await mt.put({url:Gt.Endpoints.REACTION(e,t,a,"@me")})}catch(l){tve.error("Failed to toggle reaction:",l)}}async function drt(e,t,o,r){let n=cT(o);if(n){if(r.guild_id&&(!ht.can(ct.ADD_REACTIONS,r)||!ht.can(ct.READ_MESSAGE_HISTORY,r))){uT("Cannot react: Missing permissions");return}try{await mt.put({url:Gt.Endpoints.REACTION(e,t,n,"@me")})}catch(a){tve.error("Failed to add reaction:",a)}}}async function prt(e,t){let[o,...r]=lrt();if(o){await urt(e.id,t.id,o,e,t);for(let n of r)await new Promise(a=>setTimeout(a,rrt)),await drt(e.id,t.id,n,e)}}function nve(e,t){let o=t.guild_id??"@me";return`${window.location.origin}/channels/${o}/${t.id}/${e.id}`}function mrt(e,t){ft(nve(e,t),"Link copied!")}function frt(e,t){if(!ht.can(ct.MANAGE_MESSAGES,e)){uT("Cannot pin: Missing permissions");return}t.pinned?U0.unpinMessage(e,t.id):U0.pinMessage(e,t.id)}function grt(e,t){if(!pW(t)){uT("Cannot quote this message type");return}let{content:o}=t;if(Tn.store.useSelectionForQuote){let n=window.getSelection()?.toString().trim();n&&t.content?.includes(n)&&(o=n)}if(!o)return;let r=o.split(` `).map(n=>`> ${n}`).join(` `)+` `;tr(r),Tn.store.quoteWithReply&&Q.dispatch({type:"CREATE_PENDING_REPLY",channel:e,message:t,shouldMention:!1,showMentionToggle:!e.isPrivate?.()})}function hrt(e,t){VencordNative.native.openExternal(nve(e,t))}function xrt(e,t){Q.dispatch({type:"OPEN_THREAD_FLOW_MODAL",channelId:t.id,messageId:e.id})}async function sW(e,t,o,r,n="NONE"){let a=oi.getId(),s=t.author.id===a;switch(e){case"DELETE":if(!crt(t,o))return;t.deleted?Q.dispatch({type:"MESSAGE_DELETE",channelId:o.id,id:t.id,mlDeleted:!0}):fo.deleteMessage(o.id,t.id),r.preventDefault();break;case"COPY_LINK":mrt(t,o),r.preventDefault();break;case"COPY_ID":ft(t.id,"Message ID copied!"),r.preventDefault();break;case"COPY_CONTENT":ft(t.content||"","Message content copied!"),r.preventDefault();break;case"COPY_USER_ID":ft(t.author.id,"User ID copied!"),r.preventDefault();break;case"EDIT":if(!s||m1.isEditing(o.id,t.id)||t.state!=="SENT")return;fo.startEditMessage(o.id,t.id,t.content),r.preventDefault();break;case"REPLY":if(!pW(t)||!dW(o))return;let l=r.shiftKey&&n!=="SHIFT",c=Ve(Ic.name)?Ic.shouldMention(t,l):!l;Q.dispatch({type:"CREATE_PENDING_REPLY",channel:o,message:t,shouldMention:c,showMentionToggle:o.guild_id!==null}),r.preventDefault();break;case"EDIT_REPLY":if(s){if(m1.isEditing(o.id,t.id)||t.state!=="SENT")return;fo.startEditMessage(o.id,t.id,t.content)}else{if(!pW(t)||!dW(o))return;let u=Ve(Ic.name)?Ic.shouldMention(t,!1):!0;Q.dispatch({type:"CREATE_PENDING_REPLY",channel:o,message:t,shouldMention:u,showMentionToggle:o.guild_id!==null})}r.preventDefault();break;case"QUOTE":grt(o,t),r.preventDefault();break;case"PIN":frt(o,t),r.preventDefault();break;case"REACT":await prt(o,t),r.preventDefault();break;case"OPEN_THREAD":xrt(t,o),r.preventDefault();break;case"OPEN_TAB":hrt(t,o),r.preventDefault();break;case"NONE":break}}var tve,rrt,aW,irt,art,lW,Z1e,Kl,Y1e,J1e,X1e,cW,V1e,Od,gl,w4,sT,uW,lT,mW,Tn,dW,crt,pW,dT,iW=h(()=>{"use strict";d();Jt();j();iT();O();_e();He();R();co();C();Q1e();tve=new ie("MessageClickActions"),rrt=300,aW=[{label:"None",value:"NONE"},{label:"Delete",value:"DELETE"},{label:"Copy Link",value:"COPY_LINK"},{label:"Copy ID",value:"COPY_ID"},{label:"Copy Content",value:"COPY_CONTENT"},{label:"Copy User ID",value:"COPY_USER_ID"},{label:"Edit",value:"EDIT"},{label:"Reply",value:"REPLY"},{label:"React",value:"REACT"},{label:"Open Thread",value:"OPEN_THREAD"},{label:"Open Tab",value:"OPEN_TAB"}],irt=[{label:"None",value:"NONE"},{label:"Delete",value:"DELETE"},{label:"Reply",value:"REPLY"},{label:"Edit",value:"EDIT"},{label:"Quote",value:"QUOTE"},{label:"Copy Content",value:"COPY_CONTENT"},{label:"Copy Link",value:"COPY_LINK"},{label:"Copy ID",value:"COPY_ID"},{label:"Copy User ID",value:"COPY_USER_ID"},{label:"React",value:"REACT"},{label:"Pin",value:"PIN"}],art=[{label:"None",value:"NONE"},{label:"Delete",value:"DELETE"},{label:"Reply",value:"REPLY"},{label:"Quote",value:"QUOTE"},{label:"Copy Content",value:"COPY_CONTENT"},{label:"Copy Link",value:"COPY_LINK"},{label:"Copy ID",value:"COPY_ID"},{label:"Copy User ID",value:"COPY_USER_ID"},{label:"React",value:"REACT"},{label:"Pin",value:"PIN"}],lW=[{label:"None",value:"NONE"},{label:"Shift",value:"SHIFT"},{label:"Ctrl",value:"CTRL"},{label:"Alt",value:"ALT"}],Z1e=[{label:"Backspace",value:"BACKSPACE"},{label:"Delete",value:"DELETE"},...lW],Kl=new Set,Y1e=e=>{let t=ove(e);t&&Kl.add(t),e.key==="Backspace"&&Kl.add("BACKSPACE"),e.key==="Delete"&&Kl.add("DELETE")},J1e=e=>{let t=ove(e);t&&Kl.delete(t),e.key==="Backspace"&&Kl.delete("BACKSPACE"),e.key==="Delete"&&Kl.delete("DELETE")},X1e=()=>{Vs.isFocused()||Kl.clear()},cW=0,V1e=()=>{let e=Date.now();uW>=1&&e-cW!e.guild_id||ht.can(ct.SEND_MESSAGES,e),crt=(e,t)=>{let o=oi.getId();return e.author.id===o||ht.can(ct.MANAGE_MESSAGES,t)||e.interactionMetadata?.authorizing_integration_owners?.[1]===o},pW=e=>jS.REPLYABLE.has(e.type)&&!e.hasFlag(64);dT=S({name:"MessageClickActions",description:"Customize click actions on messages.",tags:["Chat","Shortcuts"],authors:[b.Ven,F.keircn,F.ZcraftElite,F.omaw],isModified:!0,settings:Tn,start(){document.addEventListener("keydown",Y1e),document.addEventListener("keyup",J1e),document.addEventListener("mousedown",V1e),Vs.addChangeListener(X1e)},stop(){document.removeEventListener("keydown",Y1e),document.removeEventListener("keyup",J1e),document.removeEventListener("mousedown",V1e),Vs.removeChangeListener(X1e),srt(),w4=null,bv()},onMessageClick(e,t,o){let r=o.target;r.nodeType===Node.TEXT_NODE&&(r=r.parentElement);let n=oi.getId(),a=e.author.id===n,s=t.isDM(),l=t.isSystemDM();if(Tn.store.disableInDms&&s||Tn.store.disableInSystemDms&&l)return;let c=a?Tn.store.singleClickAction:Tn.store.singleClickOthersAction,u=a?Tn.store.doubleClickAction:Tn.store.doubleClickOthersAction,p=Tn.store.tripleClickAction,m=a?Tn.store.singleClickModifier:Tn.store.singleClickOthersModifier,g=Tn.store.doubleClickModifier,x=Tn.store.tripleClickModifier,v=o.detail===1&&o.button===0,y=o.detail===2,A=o.detail===3;if(Date.now()-cW>Tn.store.selectionHoldTimeout){Kl.clear(),bv();return}if(gl&&(clearTimeout(gl),gl=null),A){if(!Tn.store.deferDoubleClickForTriple){bv();return}Od&&(clearTimeout(Od),Od=null,w4=null),S4(x)&&p!=="NONE"&&(sW(p,e,t,o,x),Kl.clear()),sT=!1,bv();return}let k=(S4(g)||g==="NONE")&&u!=="NONE",w=Tn.store.deferDoubleClickForTriple&&S4(x)&&p!=="NONE",I=k&&w&&g===x;if(y){sT=!0,gl&&(clearTimeout(gl),gl=null);let E=!lT||Date.now()-mW{dW(t)&&e.deleted!==!0&&k&&E&&(sW(u,e,t,o,g),Kl.clear())};I?(Od&&clearTimeout(Od),w4=N,Od=setTimeout(()=>{w4?.(),w4=null,Od=null},Tn.store.clickTimeout)):N(),E&&o.preventDefault(),bv();return}if(v){sT=!1;let E=()=>{!sT&&!lT&&S4(m)&&c!=="NONE"&&(sW(c,e,t,o,m),Kl.clear()),bv()};u!=="NONE"&&(g==="NONE"||S4(g))&&m==="NONE"?gl=setTimeout(()=>{E(),gl=null},Tn.store.clickTimeout):E()}}})});var rve,pT,ive=h(()=>{"use strict";d();j();Pe();O();Ca();R();C();rve=1471228928,pT=S({name:"MessageLatency",description:"Displays an indicator for messages that took \u2265n seconds to send",tags:["Chat","Utility"],authors:[b.arHSM],settings:M({latency:{type:1,description:"Threshold in seconds for latency indicator",default:2},detectDiscordKotlin:{type:3,description:"Detect old Discord Android clients",default:!0},showMillis:{type:3,description:"Show milliseconds",default:!1},ignoreSelf:{type:3,description:"Don't add indicator to your own messages",default:!1}}),patches:[{find:"showCommunicationDisabledStyles",replacement:{match:/(message:(\i),avatar:\i,username:\(0,\i.jsxs\)\(\i.Fragment,\{children:\[)(\i&&)/,replace:"$1$self.Tooltip()({ message: $2 }),$3"}}],stringDelta(e,t){let o={days:Math.floor(e/864e5),hours:Math.floor(e/36e5%24),minutes:Math.floor(e/6e4%60),seconds:Math.floor(e/1e3%60),milliseconds:Math.floor(e%1e3)},r=s=>o[s]>0?`${o[s]} ${o[s]>1?s:s.substring(0,s.length-1)}`:null;return Object.keys(o).reduce((s,l)=>{let c=r(l);return s+(ka(c)?(s!==""?(t?l==="milliseconds":l==="seconds")?" and ":" ":"")+c:"")},"")||"0 seconds"},latencyTooltipData(e){let{latency:t,detectDiscordKotlin:o,showMillis:r,ignoreSelf:n}=this.settings.store,{id:a,nonce:s}=e;if(!ka(s)||e.author.bot||n&&e.author.id===oi.getId())return null;let l=!1,c=en.extractTimestamp(a)-en.extractTimestamp(s);r||(c=Math.round(c/1e3)*1e3),-c>=rve-864e5&&(l=o,c+=rve);let u=Math.abs(c),p=u!==c,m=t*1e3,g=u>=m?this.stringDelta(u,r):null,x=120*1e3,v=l?["status-positive","status-positive","text-muted"]:c>=x||p?["text-muted","text-muted","text-muted"]:c>=m*2?["status-danger","text-muted","text-muted"]:["status-warning","status-warning","text-muted"];return u>=m||l?{delta:g,ahead:p,fill:v,isDiscordKotlin:l}:null},Tooltip(){return H.wrap(({message:e})=>{let t=this.latencyTooltipData(e);if(!ka(t))return null;let o;return t.delta?o=(t.ahead?`This user's clock is ${t.delta} ahead.`:`This message was sent with a delay of ${t.delta}.`)+(t.isDiscordKotlin?" User is suspected to be on an old Discord Android client.":""):o="User is suspected to be on an old Discord Android client",i(ve,{text:o,position:"top"},r=>i(this.Icon,{delta:t.delta,fill:t.fill,props:r}))},{noop:!0})},Icon({delta:e,fill:t,props:o}){return i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"12",height:"12",role:"img",fill:"none",style:{marginRight:"8px",verticalAlign:-1},"aria-label":e??"Old Discord Android client","aria-hidden":"false",...o},i("path",{fill:`var(--${t[0]})`,d:"M4.8001 12C4.8001 11.5576 4.51344 11.2 4.16023 11.2H2.23997C1.88676 11.2 1.6001 11.5576 1.6001 12V13.6C1.6001 14.0424 1.88676 14.4 2.23997 14.4H4.15959C4.5128 14.4 4.79946 14.0424 4.79946 13.6L4.8001 12Z"}),i("path",{fill:`var(--${t[1]})`,d:"M9.6001 7.12724C9.6001 6.72504 9.31337 6.39998 8.9601 6.39998H7.0401C6.68684 6.39998 6.40011 6.72504 6.40011 7.12724V13.6727C6.40011 14.0749 6.68684 14.4 7.0401 14.4H8.9601C9.31337 14.4 9.6001 14.0749 9.6001 13.6727V7.12724Z"}),i("path",{fill:`var(--${t[2]})`,d:"M14.4001 2.31109C14.4001 1.91784 14.1134 1.59998 13.7601 1.59998H11.8401C11.4868 1.59998 11.2001 1.91784 11.2001 2.31109V13.6888C11.2001 14.0821 11.4868 14.4 11.8401 14.4H13.7601C14.1134 14.4 14.4001 14.0821 14.4001 13.6888V2.31109Z"}))}})});async function Srt(e,t){let o=Sv.get(t);if(o)return o.message;Sv.set(t,{fetched:!1});let n=(await mt.get({url:Gt.Endpoints.MESSAGES(e),query:{limit:1,around:t},retries:2}).catch(()=>null))?.body?.[0];if(!n)return;let a=lt.getMessages(n.channel_id).receiveMessage(n).get(n.id);if(a)return Sv.set(a.id,{message:a,fetched:!0}),a}function wrt(e){let t=[];for(let{content_type:o,height:r,width:n,url:a,proxy_url:s}of e.attachments??[])o?.startsWith("image/")&&t.push({height:r,width:n,url:a,proxyURL:s});for(let{type:o,image:r,thumbnail:n,url:a}of e.embeds??[])o==="image"?t.push({...r??n}):a&&o==="gifv"&&!lve.test(a)&&t.push({height:n.height,width:n.width,url:a});return t}function Art(e,t){return!e&&!t?"":e?t?`[no content, ${e} attachment${e!==1?"s":""} and ${t} embed${t!==1?"s":""}]`:`[no content, ${e} attachment${e!==1?"s":""}]`:`[no content, ${t} embed${t!==1?"s":""}]`}function krt(e){return!!(e.components.length||e.attachments.some(t=>!t.content_type?.startsWith("image/"))||e.embeds.some(t=>t.type!=="image"&&(t.type!=="gifv"||lve.test(t.url))))}function Crt(e,t){if(e>t){let a=Math.min(e,400);return{width:a,height:Math.round(t/(e/a))}}let n=Math.min(t,300);return{width:Math.round(e/(t/n)),height:n}}function Trt(e,t){return new Proxy(e,{get(o,r){return r==="vencordEmbeddedBy"?t:Reflect.get(...arguments)}})}function Irt({message:e}){let t=e.vencordEmbeddedBy??[],o=[];for(let[r,n,a]of e.content.matchAll(gW)){if(t.includes(a)||t.length>2)continue;let s=W.getChannel(n);if(!s||!s.isPrivate()&&!ht.can(ct.VIEW_CHANNEL,s))continue;let{listMode:l,idList:c}=mT.store,u=[s.guild_id,n,e.author.id].some(x=>x&&c.includes(x));if(l==="blacklist"&&u||l==="whitelist"&&!u)continue;let p=Sv.get(a)?.message;if(!p)if(p??=lt.getMessage(n,a),p)Sv.set(a,{message:p,fetched:!0});else{brt.unshift(()=>Srt(n,a).then(x=>x&&Ds(e.channel_id,e.id)));continue}let m={message:Trt(p,[...t,e.id]),channel:s},g=mT.store.automodEmbeds;o.push(g==="always"||g==="prefer"&&!krt(p)?i(Drt,{...m}):i(Ert,{...m}))}return o.length?i(f,null,o):null}function cve(e){return e.isDM()?["Direct Message",at.getUserAvatarURL(L.getUser(e.recipients[0]))]:e.isGroupDM()?["Group DM",at.getChannelIconURL(e)]:["Server",at.getGuildIconURL($e.getGuild(e.guild_id))]}function Ert({message:e,channel:t}){let o=sve.useSetting(),r=L.getUser(W.getChannel(t.id).recipients?.[0]),[n,a]=cve(t);return i(vrt,{embed:{rawDescription:"",color:"var(--background-base-lower)",author:{name:i(Y,{size:"xs",weight:"medium",tag:"span"},i("span",null,n," - "),kt.parse(t.isDM()?`<@${r.id}>`:`<#${t.id}>`)),iconProxyURL:a}},renderDescription:()=>i("div",{key:e.id,style:mT.store.messageBackgroundColor?{backgroundColor:"var(--background-base-lower)",border:"1px solid var(--border-subtle)",borderRadius:"8px",paddingBottom:"8px"}:void 0},i(yrt,{id:`message-link-embeds-${e.id}`,message:e,channel:t,subscribeToComponentDispatch:!1,compact:o}))})}function Drt(e){let{message:t,channel:o}=e,r=sve.useSetting(),n=wrt(t),{parse:a}=kt,[s,l]=cve(o);return i(ave,{channel:o,childrenAccessories:i(Y,{size:"xs",weight:"medium",color:"text-muted",tag:"span",className:`${fW.embedAuthor} ${fW.embedMargin}`},l&&i("img",{src:l,className:fW.embedAuthorIcon,alt:""}),i("span",null,i("span",null,s," - "),o.isDM()?kt.parse(`<@${W.getChannel(o.id).recipients[0]}>`):kt.parse(`<#${o.id}>`))),compact:r,content:i(f,null,t.content||t.attachments.length<=n.length?a(t.content):[Art(t.attachments.length,t.embeds.length)],n.map((c,u)=>{let{width:p,height:m}=Crt(c.width,c.height);return i("div",{key:u},i("img",{src:c.proxyURL??c.url,width:p,height:m}))})),hideTimestamp:!1,message:t,_messageEmbed:"automod"})}var Sv,vrt,yrt,ave,fW,sve,gW,lve,brt,mT,fT,uve=h(()=>{"use strict";d();ow();V0();j();_a();yt();O();jp();R();le();C();Sv=new Map,vrt=c1(e=>e.prototype?.renderSuppressButton),yrt=he("childrenExecutedCommand:",".hideAccessories"),ave=()=>null,fW=Ie("embedAuthorIcon","embedAuthor","embedAuthor","embedMargin"),sve=tn("textAndImages","messageDisplayCompact"),gW=/(?i(ue,{onClick:()=>Sv.clear()},"Clear the linked message cache")}});fT=S({name:"MessageLinkEmbeds",description:"Adds a preview to messages that link another message",tags:["Chat","Appearance"],authors:[b.TheSun,b.Ven,b.RyanCaoDev],dependencies:["MessageAccessoriesAPI","MessageUpdaterAPI","UserSettingsAPI"],settings:mT,patches:[{find:"!1,withFooter:",replacement:{match:/(?=function (\i)\(\i\){let{message:\i,channel:\i,[^}]+?withFooter:)/,replace:"$self.AutoModEmbed=$1;"}}],set AutoModEmbed(e){ave=e},start(){K0("MessageLinkEmbeds",e=>gW.test(e.message.content)?(gW.lastIndex=0,i(Irt,{message:e.message})):null,4)},stop(){tw("MessageLinkEmbeds")}})});var dve=h(()=>{});var hW,pve=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/messageLogger/deleteStyleOverlay.css",{name:"src/plugins/messageLogger/deleteStyleOverlay.css",source:`.messagelogger-deleted { background-color: hsl(var(--red-430-hsl, 0 85% 61%) / 15%) !important; }`,classNames:{},dom:null});hW="src/plugins/messageLogger/deleteStyleOverlay.css"});var xW,mve=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/messageLogger/deleteStyleText.css",{name:"src/plugins/messageLogger/deleteStyleText.css",source:`.messagelogger-deleted { --text-default: var(--status-danger, #f04747); --interactive-icon-default: var(--status-danger, #f04747); --text-muted: var(--status-danger, #f04747); --embed-title: var(--red-460, #be3535); --text-link: var(--red-460, #be3535); --text-strong: var(--red-460, #be3535); }`,classNames:{},dom:null});xW="src/plugins/messageLogger/deleteStyleText.css"});function fve(e){let t=[],o=0;for(;o",o);if(n!==-1){t.push(e.slice(o,n+1)),o=n+1;continue}}if(e[o]==="<"&&e[o+1]==="@"||e[o]==="<"&&e[o+1]==="#"){let n=e.indexOf(">",o);if(n!==-1){t.push(e.slice(o,n+1)),o=n+1;continue}}let r=Array.from(e.slice(o))[0];t.push(r),o+=r.length}return t}function Prt(e,t){if(e.length0&&m.push({type:"unchanged",text:e}),m.push({type:"added",text:p}),m}if(e.length0&&m.push({type:"unchanged",text:e}),m}if(t.length0&&m.push({type:"unchanged",text:t}),m.push({type:"removed",text:p}),m}if(t.length0&&m.push({type:"unchanged",text:t}),m}let o=fve(e),r=fve(t),n=[],a=[];for(let p=0;p<=o.length;p++){a[p]=[];for(let m=0;m<=r.length;m++)a[p][m]=0}for(let p=1;p<=o.length;p++)for(let m=1;m<=r.length;m++)o[p-1]===r[m-1]?a[p][m]=a[p-1][m-1]+1:a[p][m]=Math.max(a[p-1][m],a[p][m-1]);let s=o.length,l=r.length,c=[];for(;s>0||l>0;)s>0&&l>0&&o[s-1]===r[l-1]?(c.unshift({type:"unchanged",text:o[s-1]}),s--,l--):l>0&&(s===0||a[s][l-1]>a[s-1][l])?(c.unshift({type:"added",text:r[l-1]}),l--):s>0&&(c.unshift({type:"removed",text:o[s-1]}),s--);let u=[];for(let p of c){let m=u[u.length-1];m&&m.type===p.type?m.text+=p.text:u.push(p)}return u}function vW(e,t){return Prt(e,t)}var gve=h(()=>{"use strict";d()});function hve(e){ce(t=>i(H,null,i(Brt,{modalProps:t,message:e})))}function Brt({modalProps:e,message:t}){let[o,r]=T(t.editHistory.length),[n,a]=T(hl.store.showEditDiffs),s=[t.firstEditTimestamp,...t.editHistory.map(c=>c.timestamp)],l=[...t.editHistory.map(c=>c.content),t.content];return i(be,{...e,size:"lg",title:"Message Edit History"},i(mo,{title:"Show Diff",value:n,onChange:a}),i(rr,{type:"top",look:"brand",className:X("vc-settings-tab-bar",yW("tab-bar")),selectedItem:o,onItemSelect:r},t.firstEditTimestamp.getTime()!==t.timestamp.getTime()&&i(Dr,{text:"This edit state was not logged so it can't be displayed."},i(rr.Item,{className:"vc-settings-tab-bar-item",id:-1,disabled:!0},i(Hr,{className:yW("timestamp"),timestamp:t.timestamp,isEdited:!0,isInline:!1}))),s.map((c,u)=>i(rr.Item,{key:u,className:"vc-settings-tab-bar-item",id:u},i(Hr,{className:yW("timestamp"),timestamp:c,isEdited:!0,isInline:!1})))),i("div",{className:X(Mrt.markup,Nrt.messageContent,z.top20)},bW(l[o],t,n?o===l.length-1?void 0:l[l.length-1]:void 0)))}var Mrt,Nrt,yW,xve=h(()=>{"use strict";d();Pe();hi();lc();we();Wt();Be();le();C();SW();Mrt=Ie("markup","codeContainer"),Nrt=Ie("messageContent","markupRtl"),yW=K("vc-ml-modal-")});function wve(e){typeof queueMicrotask=="function"?queueMicrotask(e):setTimeout(e,0)}function Ave(){hl.store.deleteStyle==="text"?(Oi(xW),La(hW)):(La(xW),Oi(hW))}function kve(e){if(e.deleted)Q.dispatch({type:"MESSAGE_DELETE",channelId:e.channel_id,id:e.id,mlDeleted:!0});else{let t=e.attachments?.filter(o=>!o.deleted);Ds(e.channel_id,e.id,{editHistory:[],attachments:t})}}function wW(e){return e.deleted||!!e.editHistory?.length||e.attachments?.some(t=>t.deleted)}function AW(e,t,o){let r={__messageloggerDiff:!0,__messageloggerDiffKey:t,content:i("div",{key:t},o)},a=e.customRenderedContent?.__messageloggerDiffKey!==t;e.__messageloggerLastAppliedKey=t,e.customRenderedContent=r,wve(()=>{e.__messageloggerLastAppliedKey===t&&(e.customRenderedContent=r,a&&Ds(e.channel_id,e.id,{customRenderedContent:r}))})}function hT(e){if(!e.customRenderedContent?.__messageloggerDiff)return;let o=e.__messageloggerLastAppliedKey;delete e.__messageloggerLastAppliedKey,delete e.customRenderedContent,wve(()=>{if(e.customRenderedContent?.__messageloggerDiff)return;let n=e.__messageloggerLastAppliedKey;typeof n=="string"&&n!==o||Ds(e.channel_id,e.id,{customRenderedContent:null})})}function Lrt(e,t,o,r){let n=kt.parse(e.text,!0,{channelId:t.channel_id,messageId:t.id,allowLinks:!0,allowHeading:!0,allowList:!0,allowEmojiLinks:!0,viewingChannelId:Fe.getChannelId()}),a;return(e.type==="added"||e.type==="removed")&&(!r||r===e.type)&&(a=`messagelogger-diff-${e.type}`),i("span",{key:o,className:a},n)}function Av(e,t){return e.map((o,r)=>Lrt(o,t,r))}function xT(e,t){let o=[];for(let r of e)if(t==="original"){if(r.type==="added")continue;o.push(r)}else{if(r.type==="removed")continue;o.push(r)}return o}function bW(e,t,o){let r=!wv.has(t.id),n=t.__messageloggerAggregated;if(o&&e!==o&&hl.store.showEditDiffs&&r){let a=vW(e,o),s=xT(a,"original"),l=xT(a,"updated");if(hl.store.separatedDiffs){let u=o===t.content;if(u)if(n)AW(t,n.key,n.aggregatedNodes);else{let p=`${t.id}:current:${t.content}:${t.editedTimestamp?.valueOf?.()??0}`;AW(t,p,Av(l,t))}else!n&&t.customRenderedContent?.__messageloggerDiff&&hT(t);return i("div",{className:"messagelogger-diff-view"},s.length?i("div",{className:"messagelogger-diff-original"},Av(s,t)):null,!u&&l.length?i("div",{className:"messagelogger-diff-updated"},Av(l,t)):null)}return!n&&t.customRenderedContent?.__messageloggerDiff&&hT(t),Av(a,t)}return!n&&t.customRenderedContent?.__messageloggerDiff&&hT(t),kt.parse(e,!0,{channelId:t.channel_id,messageId:t.id,allowLinks:!0,allowHeading:!0,allowList:!0,allowEmojiLinks:!0,viewingChannelId:Fe.getChannelId()})}var vve,wv,yve,bve,Sve,Rrt,gT,hl,vT,SW=h(()=>{"use strict";d();dve();Fo();V0();Jt();j();nl();Pe();ot();O();_e();He();Be();R();le();C();pve();mve();gve();xve();vve=Ie("edited","communicationDisabled","isSystemMessage"),wv=new Set;yve="ml-remove-history",bve="ml-toggle-style",Sve="ml-toggle-diff",Rrt=(e,t)=>{let{message:o}=t,{deleted:r,id:n,channel_id:a}=o;if(!wW(o))return;e:{if(!r)break e;let l=document.getElementById(`chat-messages-${a}-${n}`);if(!l)break e;e.push(i(P.MenuItem,{id:bve,key:bve,label:"Toggle Deleted Highlight",leadingAccessory:{type:"icon",icon:ea},action:()=>l.classList.toggle("messagelogger-deleted")}))}if(wW(o)&&hl.store.showEditDiffs){let l=wv.has(n);e.push(i(P.MenuItem,{id:Sve,key:Sve,label:l?"Enable Diff View":"Disable Diff View",color:"danger",action:()=>{l?wv.delete(n):wv.add(n),document.getElementById(`chat-messages-${a}-${n}`)?.classList.toggle("messagelogger-diff-disabled",wv.has(n)),Ds(a,n)}}))}let s;Ve("MessageLoggerEnhanced")?s="Remove Message (Temporary)":s="Remove Message History",e.push(i(P.MenuItem,{id:yve,key:yve,label:s,leadingAccessory:{type:"icon",icon:hr},color:"danger",action:()=>{kve(o)}}))},gT=(e,{channel:t})=>{let o=lt.getMessages(t?.id);if(!o?.some(n=>wW(n)))return;(wt("mark-channel-read",e)??e).push(i(P.MenuItem,{id:"vc-ml-clear-channel",label:"Clear Message Log",color:"danger",action:()=>{o.forEach(n=>{kve(n)})}}))};hl=M({deleteStyle:{type:4,description:"The style of deleted messages",default:"text",options:[{label:"Red text",value:"text",default:!0},{label:"Red overlay",value:"overlay"}],onChange:()=>Ave()},logDeletes:{type:3,description:"Whether to log deleted messages",default:!0},collapseDeleted:{type:3,description:"Whether to collapse deleted messages, similar to blocked messages",default:!1,restartNeeded:!0},logEdits:{type:3,description:"Whether to log edited messages",default:!0},logDeletedAttachments:{type:3,description:"Whether to log deleted attachments",default:!0,restartNeeded:!0},inlineEdits:{type:3,description:"Whether to display edit history as part of message content",default:!0},ignoreBots:{type:3,description:"Whether to ignore messages by bots",default:!0},ignoreSelf:{type:3,description:"Whether to ignore messages by yourself",default:!1},ignoreSelfEdits:{type:3,description:"Whether to ignore edits by yourself",default:!1},ignoreUsers:{type:0,description:"Comma-separated list of user IDs to ignore",default:"",multiline:!0},ignoreChannels:{type:0,description:"Comma-separated list of channel IDs to ignore",default:"",multiline:!0},ignoreGuilds:{type:0,description:"Comma-separated list of guild IDs to ignore",default:"",multiline:!0},showEditDiffs:{type:3,description:"Show visual differences between edited message versions",default:!1,onChange:e=>{!e&&hl.store.separatedDiffs&&(hl.store.separatedDiffs=!1)}},separatedDiffs:{type:3,description:"Separate addition and removals in diffs for a more readable differential",default:!1}},{separatedDiffs:{disabled(){return!this.store.showEditDiffs}},ignoreSelfEdits:{disabled(){return this.store.ignoreSelf}}}),vT=S({name:"MessageLogger",description:"Temporarily logs deleted and edited messages.",tags:["Chat","Utility"],authors:[b.rushii,b.Ven,b.AutumnVN,b.Nickyux,b.Kyuuhachi,b.sadan,F.justjxke],dependencies:["MessageUpdaterAPI"],isModified:!0,settings:hl,contextMenus:{message:Rrt,"channel-context":gT,"thread-context":gT,"user-context":gT,"gdm-context":gT},start(){Ave()},renderEdits:H.wrap(({message:{id:e,channel_id:t}})=>{let o=ye([lt],()=>lt.getMessage(t,e),null,(c,u)=>c?.editHistory===u?.editHistory&&c?.diffViewDisabled===u?.diffViewDisabled&&c?.content===u?.content&&(c?.editedTimestamp?.valueOf?.()??0)===(u?.editedTimestamp?.valueOf?.()??0)),{showEditDiffs:r,inlineEdits:n,separatedDiffs:a}=hl.use(["showEditDiffs","inlineEdits","separatedDiffs"]),s=o.editHistory??[];if(n&&r&&a&&s.length>0){let c=s[0],u=`${o.id}:${s.length}:${o.content}:${o.editedTimestamp?.valueOf?.()??0}`,p=o.__messageloggerAggregated;if(!p||p.key!==u){let m=vW(c.content,o.content),g=xT(m,"original"),x=xT(m,"updated"),v=g.length?Av(g,o):kt.parse(c.content,!0,{channelId:o.channel_id,messageId:o.id,allowLinks:!0,allowHeading:!0,allowList:!0,allowEmojiLinks:!0,viewingChannelId:Fe.getChannelId()}),y=Av(x,o);p={key:u,originalNodes:v,aggregatedNodes:y,originalTimestamp:c.timestamp},o.__messageloggerAggregated=p}return AW(o,p.key,p.aggregatedNodes),i("div",{key:`diff-aggregated-${e}`},i("div",{className:"messagelogger-edited",key:"ml-aggregated-original"},p.originalNodes,i(Hr,{timestamp:p.originalTimestamp,isEdited:!0,isInline:!1},i("span",{className:vve.edited}," ","(",Xe("MESSAGE_EDITED"),")"))))}return o.__messageloggerAggregated&&delete o.__messageloggerAggregated,o.customRenderedContent?.__messageloggerDiff&&hT(o),n&&i("div",{key:wv.has(e)?`diff-off-${e}`:`diff-on-${e}`},s.map((c,u)=>{let p=u===s.length-1?o.content:s[u+1]?.content;return i("div",{key:u,className:"messagelogger-edited"},bW(c.content,o,p),i(Hr,{timestamp:c.timestamp,isEdited:!0,isInline:!1},i("span",{className:vve.edited}," ","(",Xe("MESSAGE_EDITED"),")")))}))},{noop:!0}),makeEdit(e,t){return{timestamp:new Date(e.edited_timestamp),content:t.content}},handleUpdateAttachments(e){let t=lt.getMessage(e.channel_id,e.id);return!t||this.shouldIgnore(e,!0)?e.attachments:e.attachments?.length?t.attachments.map(o=>e.attachments.find(r=>r.id===o.id)??{...o,deleted:!0}).concat(e.attachments.filter(o=>!t.attachments.some(r=>r.id===o.id))):t.attachments.map(o=>({...o,deleted:!0}))},handleDelete(e,t,o){try{if(e==null||!o&&!e.has(t.id))return e;let r=n=>{let a=e.get(n);if(!a)return;let s=64;t.mlDeleted||(a.flags&s)===s||this.shouldIgnore(a)?e=e.remove(n):e=e.update(n,c=>c.set("deleted",!0).set("attachments",c.attachments.map(u=>(u.deleted=!0,u))))};o?t.ids.forEach(r):r(t.id)}catch(r){new ie("MessageLogger").error("Error during handleDelete",r)}return e},shouldIgnore(e,t=!1){try{let{ignoreBots:o,ignoreSelf:r,ignoreSelfEdits:n,ignoreUsers:a,ignoreChannels:s,ignoreGuilds:l,logEdits:c,logDeletes:u}=hl.store,p=L.getCurrentUser().id;return o&&e.author?.bot||r&&e.author?.id===p||n&&t&&e.author?.id===p||a.includes(e.author?.id)||s.includes(e.channel_id)||s.includes(W.getChannel(e.channel_id)?.parent_id)||(t?!c:!u)||l.includes(W.getChannel(e.channel_id)?.guild_id)||e.author?.id===Pz&&W.getChannel(e.channel_id)?.parent_id===Nz||e.author?.id===qS&&W.getChannel(e.channel_id)?.id===md}catch{return!1}},normalizeNonce(e){try{if(!e.nonce||e.author.id===oi.getId())return;let t=lt.getMessage(e.channel_id,e.nonce);if(!t||t.state!=="SENT")return;t.id!==e.id&&delete e.nonce}catch{console.error("[MessageLogger] Error normalizing nonce")}},EditMarker({message:e,className:t,children:o,...r}){return i("span",{...r,className:X("messagelogger-edit-marker",t),onClick:()=>hve(e),role:"button"},o)},DELETED_MESSAGE_COUNT:()=>({ast:[[6,"count",{"=0":["No deleted messages"],one:[[1,"count"]," deleted message"],other:[[1,"count"]," deleted messages"]},0,"cardinal"]]}),patches:[{find:'"MessageStore"',replacement:[{match:/(?<=MESSAGE_DELETE:function\((\i)\)\{)(?=let.{0,100}(\i\.\i)\.getOrCreate)/,replace:` let cache = $2.getOrCreate($1.channelId); cache = $self.handleDelete(cache, $1, false); $2.commit(cache); return; `},{match:/(?<=MESSAGE_DELETE_BULK:function\((\i)\){)(?=let.{0,100}(\i\.\i)\.getOrCreate)/,replace:` let cache = $2.getOrCreate($1.channelId); cache = $self.handleDelete(cache, $1, true); $2.commit(cache); return; `},{match:/(MESSAGE_UPDATE:function\((\i)\).+?)\.update\((\i)/,replace:` $1 .update($3, m => (($2.message.flags & 64) === 64 || $self.shouldIgnore($2.message, true)) ? m : $2.message.edited_timestamp && $2.message.content !== m.content ? m.set('editHistory',[...(m.editHistory || []), $self.makeEdit($2.message, m)]) : m ) .update($3 `},{match:/(?<=getLastEditableMessage\(\i\)\{.{0,200}\.find\((\i)=>)/,replace:"!$1.deleted &&"}]},{find:"}addReaction(",replacement:[{match:/this\.customRenderedContent=(\i)\.customRenderedContent,/,replace:"this.customRenderedContent = $1.customRenderedContent,this.deleted = $1.deleted || false,this.editHistory = $1.editHistory || [],this.firstEditTimestamp = $1.firstEditTimestamp || this.editedTimestamp || this.timestamp,this.diffViewDisabled = $1.diffViewDisabled || false,"}]},{find:".PREMIUM_REFERRAL&&(",replacement:[{match:/(?<=null!=\i\.edited_timestamp\)return )\i\(\i,\{reactions:(\i)\.reactions.{0,50}\}\)/,replace:"Object.assign($&,{ deleted:$1.deleted, editHistory:$1.editHistory, firstEditTimestamp:$1.firstEditTimestamp, diffViewDisabled:$1.diffViewDisabled })"},{match:/attachments:(\i)\.attachments\?\?\[\],/,predicate:()=>hl.store.logDeletedAttachments,replace:"attachments: $self.handleUpdateAttachments($1),"}]},{find:"#{intl::REMOVE_ATTACHMENT_TOOLTIP_TEXT}",replacement:[{match:/\.SPOILER,(?=\[\i\.\i\]:)(?<=item:(\i),.{0,200}?)/,replace:'$&"messagelogger-deleted-attachment": $1?.originalItem?.deleted,'},{match:/(?<=\{let\{[^}]*?item:(\i),autoPlayGif:\i,)canRemoveItem:(\i)(?=,onRemoveItem:)/,replace:"_canRemoveItem:$2 = arguments[0].canRemoveItem && !$1?.originalItem?.deleted"}]},{find:"Message must not be a thread starter message",replacement:[{match:/\)\("li",\{(.+?),className:/,replace:')("li",{$1,className:(arguments[0].message.deleted ? "messagelogger-deleted " : "")+'}]},{find:".SEND_FAILED,",replacement:{match:/\]:\i.isUnsupported.{0,20}?,children:\[/,replace:"$&arguments[0]?.message?.editHistory?.length>0&&$self.renderEdits(arguments[0]),"}},{find:"#{intl::MESSAGE_EDITED}",replacement:{match:/(isInline:!1,children:.{0,50}?)"span",\{(?=className:)/,replace:"$1$self.EditMarker,{message:arguments[0].message,"}},{find:'"ReferencedMessageStore"',replacement:[{match:/(?<=MESSAGE_DELETE:function\(\i\)\{)/,replace:"return;"},{match:/(?<=MESSAGE_DELETE_BULK:function\(\i\)\{)/,replace:"return;"}]},{find:".MESSAGE,commandTargetId:",replacement:[{match:/children:(\[""===.+?\])/,replace:"children:arguments[0].message.deleted?[]:$1"}]},{find:"NON_COLLAPSIBLE.has(",replacement:{match:/if\((\i)\.blocked\)return \i\.\i\.MESSAGE_GROUP_BLOCKED;/,replace:'$&else if($1.deleted) return"MESSAGE_GROUP_DELETED";'},predicate:()=>hl.store.collapseDeleted},{find:"#{intl::NEW_MESSAGES_ESTIMATED_WITH_DATE}",replacement:[{match:/(\i).type===\i\.\i\.MESSAGE_GROUP_BLOCKED\|\|/,replace:'$&$1.type==="MESSAGE_GROUP_DELETED"||'},{match:/(\i).type===\i\.\i\.MESSAGE_GROUP_BLOCKED\?(\i)=.*?:/,replace:'$&$1.type==="MESSAGE_GROUP_DELETED"?$2=$self.DELETED_MESSAGE_COUNT:'}],predicate:()=>hl.store.collapseDeleted},{find:"this.truncateTop",replacement:{match:/receiveMessage\((\i)\)\{/,replace:"$& $self.normalizeNonce($1);"}}]})});var Cve=h(()=>{});var Th,yT,Tve=h(()=>{"use strict";d();Cve();j();O();R();Th=M({reactionCount:{description:"Number of reactions (0-42)",type:1,default:5},frequentEmojis:{description:"Use frequently used emojis instead of favourite emojis",type:3,restartNeeded:!0,default:!0},rows:{description:"Rows of quick reactions to display",type:5,default:2,markers:zt(1,16,1),stickToMarkers:!0},columns:{description:"Columns of quick reactions to display",type:5,default:4,markers:zt(1,12,1),stickToMarkers:!0},compactMode:{description:"Scales the buttons to 75% of their original scale, whilst increasing the inner emoji to 125% scale. Emojis will be 93.75% of the original size. Recommended to have a minimum of 5 columns",type:3,default:!1},scroll:{description:"Enable scrolling the list of emojis",type:3,default:!0}});oo("MoreQuickReactions","BetterQuickReact");yT=S({name:"MoreQuickReactions",description:"Improves the quick react buttons in the message context menu.",tags:["Emotes","Reactions","Customisation","Shortcuts"],authors:[b.Ven,b.Sqaaakoi,b.iamme],isModified:!0,settings:Th,patches:[{find:"#{intl::MESSAGE_UTILITIES_A11Y_LABEL}",replacement:{match:/(?<=length>=3\?.{0,40})\.slice\(0,3\)/,replace:".slice(0,$self.reactionCount)"}},{find:"this.favoriteEmojisWithoutFetchingLatest.concat",replacement:{match:/(this\.favoriteEmojisWithoutFetchingLatest)\.concat/,replace:"[].concat"},predicate:()=>Th.store.frequentEmojis},{find:"#{intl::ADD_REACTION_NAMED}",group:!0,replacement:[{match:/isEmojiPremiumLocked\(\{.{0,25}channel:(\i),/,replace:"$&guild_id:$1?.guild_id??null,"},{match:/"MessageContextMenu"\},\{autoTrackExposure.{0,5}\}\),/,replace:"$&[moreQuickReactionsScrollValue,setMoreQuickReactionsScrollValue]=Vencord.Webpack.Common.React.useState(0),"},{match:/\.length>4&&\(\i\.length=4\)/,replace:""},{match:/className:(\i\.\i),(?=children:)/,replace:'className:"vc-better-quick-react "+($self.settings.store.compactMode?"vc-better-quick-react-compact ":"")+$1,style:{"--vc-better-quick-react-columns":$self.settings.store.columns},'},{match:/children:(\i)\.map\(/,replace:"onWheel:$self.onWheelWrapper(moreQuickReactionsScrollValue,setMoreQuickReactionsScrollValue,$1.length),children:$self.applyScroll($1,moreQuickReactionsScrollValue).map("}]},{find:/\.groupLabel,\i\.hideInteraction,/,replacement:{match:/role:"group",/,replace:"$&style:arguments[0].style,onWheel:arguments[0].onWheel,"}},{find:'"--custom-menu-viewport-padding"',replacement:{match:/className:\i\(\)\(\i\.menu/,replace:'$&,"vc-better-quick-react-padding"'}}],getMaxQuickReactions(){return Th.store.rows*Th.store.columns},get reactionCount(){return Th.store.reactionCount},applyScroll(e,t){return e.slice(t,t+this.getMaxQuickReactions())},onWheelWrapper(e,t,o){if(Th.store.scroll)return r=>{if(r.deltaY===0||r.shiftKey)return;r.stopPropagation();let n=r.deltaY<0?-1:1,a=e+n*Th.store.columns;t(Math.max(0,Math.min(a,o-this.getMaxQuickReactions())))}}})});var Ort,Ive,kW,Eve,Dve=h(()=>{"use strict";d();He();bT();Ort="790c37d90400163a5a5fe00d6ca32ef0",Ive=new ie("MusicRichPresence/LastFM"),kW=e=>`https://www.last.fm${e}`,Eve={name:"Last.FM",id:"lastfm",async fetchTrackData(){try{let e=new URLSearchParams({method:"user.getrecenttracks",api_key:Yn.store.apiKey||Ort,user:Yn.store.username,limit:"1",format:"json"}),t=await fetch(`https://ws.audioscrobbler.com/2.0/?${e}`);if(!t.ok)throw`${t.status} ${t.statusText}`;let o=await t.json();if(o.error)return Ive.error("Error from Last.fm API",`${o.error}: ${o.message}`),null;let r=o.recenttracks?.track[0];return r?.["@attr"]?.nowplaying?{name:r.name||"Unknown",album:r.album["#text"],artist:r.artist["#text"]||"Unknown",trackURL:r.url,artistURL:r.artist["#text"]?kW(`/music/${encodeURIComponent(r.artist["#text"])}`):void 0,albumURL:kW(`/music/${encodeURIComponent(r.artist["#text"])}/${encodeURIComponent(r.album["#text"])}`),imageURL:r.image?.find(n=>n.size==="large")?.["#text"]}:null}catch(e){return Ive.error("Failed to query Last.FM API",e),null}},getUserURL(e){return kW(`/user/${e}`)}}});var A4,Pve=h(()=>{"use strict";d();A4=class extends Map{constructor(o,r){super();this.expiryMs=o;this.onExpire=r}expiryMs;onExpire;_timers=new Map;set(o,r){this._timers.has(o)&&clearTimeout(this._timers.get(o));let n=setTimeout(()=>{this.delete(o),this.onExpire?.(o,r)},this.expiryMs);return this._timers.set(o,n),super.set(o,r)}delete(o){return this._timers.has(o)&&(clearTimeout(this._timers.get(o)),this._timers.delete(o)),super.delete(o)}clear(){for(let o of this._timers.values())clearTimeout(o);return this._timers.clear(),super.clear()}}});function CW(){ST.clear(),k4.clear()}function Rve(e){if(!e)return;let t=e.match(Urt);return t?`https://i.ytimg.com/vi/${t[5]}/maxresdefault.jpg`:void 0}async function Mve(e,t){if(ST.has(e))return ST.get(e);let o=await fetch(`https://coverartarchive.org${t}`).then(r=>r.ok?r.json():Promise.reject(new Error(`${r.status} ${r.statusText}`))).then(r=>r.images[0].thumbnails.large);return ST.set(e,o),o}async function Nve(e,t,o){return e&&await Mve(e,`/release/${e}`).catch(()=>null)||t&&await Mve(t,`/release-group/${t}`).catch(()=>null)||Rve(o)}async function zrt(e){let t=new URLSearchParams({fmt:"json",limit:"1"});return await fetch("https://musicbrainz.org/ws/2/recording/?"+t+"&query="+e,{headers:{"User-Agent":upe}}).then(o=>o.ok?o.json():Promise.reject(new Error(`${o.status} ${o.statusText}`))).then(o=>o.recordings?.[0])}async function $rt(e,t,o,r){if(e?.recording_mbid){let{release_group_mbid:l,release_mbid:c,recording_mbid:u,artist_mbids:p,origin_url:m}=e;return{imageURL:await Nve(c,l,m),trackURL:om(`/track/${u}`),albumURL:c?om(`/release/${c}`):l?om(`/release-group/${l}`):void 0,artistURL:p?.length?om(`/artist/${p[0]}`):void 0}}let n=encodeURIComponent(`artist:"${o}" AND recording:"${t}"${r?` AND release:"${r}"`:""}`).replace(/[!()*\-~]/g,"\\$&"),a=e?.isrc?[encodeURIComponent(`isrc:${e.isrc}`),n]:[n];for(let l of a){if(k4.has(l))return k4.get(l)??{};let c=await zrt(l);if(!c)continue;let u=c["artist-credit"]?.[0]?.artist,p=c.releases?.find(g=>g.title===r)||c.releases?.[0],m={imageURL:await Nve(p?.id,p?.["release-group"]?.id,e?.origin_url),trackURL:om(`/track/${c.id}/`),albumURL:p?.id?om(`/release/${p.id}/`):p?.["release-group"]?.id?om(`/release-group/${p["release-group"].id}/`):void 0,artistURL:u?.id?om(`/artist/${u.id}/`):void 0,album:e?.release_name??p?.title??"Unknown"};return k4.set(l,m),m}let s=e?.origin_url?{imageURL:Rve(e.origin_url)}:{};return k4.set(a.at(-1),s),s}var Frt,ST,k4,Bve,om,_rt,Urt,Lve,Ove=h(()=>{"use strict";d();Ef();He();Pve();bT();Frt=new ie("AudioScrobblerRichPresence/ListenBrainz"),ST=new A4(900*1e3),k4=new A4(900*1e3),Bve=()=>Yn.store.scrobblerBackend==="listenbrainz-compatible",om=e=>`${Bve()?Yn.store.instanceBaseURL:"https://listenbrainz.org"}${e}`,_rt=e=>`${Bve()?Yn.store.instanceAPIBaseUrl:"https://api.listenbrainz.org"}${e}`;Urt=/^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube(?:-nocookie)?\.com|youtu.be))(\/(?:[\w-]+\?v=|embed\/|live\/|v\/)?)([\w-]+)(\S+)?$/;Lve={name:"ListenBrainz",id:"listenbrainz",async fetchTrackData(){try{let e=await fetch(_rt(`/1/user/${Yn.store.username}/playing-now`));if(!e.ok)throw new Error(`${e.status} ${e.statusText}`);let t=await e.json().then(l=>l.payload?.listens[0]);if(!t?.playing_now||!t?.track_metadata)return null;let{track_name:o,artist_name:r,release_name:n,additional_info:a}=t.track_metadata;return{name:o||"Unknown",artist:r,album:n||"Unknown",serviceName:a?.music_service_name||a?.submission_client,...await $rt(a,o,r,n)}}catch(e){return Frt.error("Failed to query ListenBrainz API",e),null}},getUserURL(e){return om(`/user/${e}`)}}});async function TW(e){return(await Ri.fetchAssetIds(wT,[e]))[0]}function Hrt(e){Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:e,socketId:"LastFM"})}var wT,Grt,Yn,AT,bT=h(()=>{"use strict";d();j();Tt();Qn();We();Ja();Je();O();R();co();C();Dve();Ove();wT="1108588077900898414",Grt="2a96cbd8b46e442fc41c2b86b821562f";Yn=M({scrobblerBackend:{description:"The scrobbler backend to use.",type:4,options:[{label:"Last.FM",value:"lastfm",default:!0},{label:"ListenBrainz",value:"listenbrainz"},{label:"ListenBrainz Compatible (self-hosted)",value:"listenbrainz-compatible"}]},instanceBaseURL:{description:"The base url of your ListenBrainz instance.",type:0,placeholder:"https://example.org",onChange:CW},instanceAPIBaseUrl:{description:"The base url of your ListenBrainz API.",type:0,placeholder:"https://api.example.org",onChange:CW},apiKey:{displayName:"API Key",description:"Last.fm API key. Not required but highly recommended to avoid rate limiting with our shared key",type:0},username:{description:"Username",type:0},shareUsername:{description:"Show link to scrobbler profile",type:3,default:!1},clickableLinks:{description:"Make track, artist and album names clickable links",type:3,default:!0},hideWithSpotify:{description:"Hide presence if Spotify is running",type:3,default:!0},hideWithActivity:{description:"Hide presence if you have any other presence",type:3,default:!1},statusName:{description:"Custom status text. You can use the following variables: {artist} | {album} | {title}",type:0,default:"some music"},statusDisplayType:{description:"Show the track / artist name in the member list",type:4,options:[{label:"Don't show (shows generic listening message)",value:"off"},{label:"Show artist name",value:"artist",default:!0},{label:"Show track name",value:"track"}]},nameFormat:{description:"Show name of song and artist in status name",type:4,options:[{label:"Use custom status name",value:"status-name",default:!0},{label:"Use music service name (falls back to custom status text)",value:"service-name"},{label:"Use format 'artist - song'",value:"artist-first"},{label:"Use format 'song - artist'",value:"song-first"},{label:"Use artist name only",value:"artist"},{label:"Use song name only",value:"song"},{label:"Use album name (falls back to custom status text if song has no album)",value:"album"}]},useListeningStatus:{description:'Show "Listening to" status instead of "Playing"',type:3,default:!1},missingArt:{description:"When album or album art is missing",type:4,options:[{label:"Use large scrobbler logo",value:"logo",default:!0},{label:"Use generic placeholder",value:"placeholder"}]},showLogo:{displayName:"Show Scrobbler Logo",description:"Show the scrobbler service logo by the album cover",type:3,default:!0},showAlbumCover:{description:"Show album cover. Disabling this will display a placeholder. Useful if your music has inappropriate art",type:3,default:!0}},{apiKey:{hidden(){return this.store.scrobblerBackend!=="lastfm"}},instanceBaseURL:{hidden(){return this.store.scrobblerBackend!=="listenbrainz-compatible"}},instanceAPIBaseUrl:{hidden(){return this.store.scrobblerBackend!=="listenbrainz-compatible"}}});oo("MusicRichPresence","LastFMRichPresence");Br("MusicRichPresence","showLastFmLogo","showLogo");AT=S({name:"MusicRichPresence",description:"Rich Presence for Last.FM/Listenbrainz",tags:["Activity","Media"],searchTerms:["lastfm","LastFMRichPresence"],authors:[b.Rini,b.Ven,b.angelcube,b.RuiNtD,b.blahajZip,b.archeruwu],settings:Yn,settingsAboutComponent(){return Yn.store.scrobblerBackend!=="lastfm"?null:i(Ht,null,i(oe,{tag:"h2"},"Last.FM"),i(oe,{tag:"h5"},"How to create an API key"),i(U,null,"Set ",i("strong",null,"Application name")," and ",i("strong",null,"Application description")," to anything and leave the rest blank."),i(WU,{size:"small",href:"https://www.last.fm/api/account/create",className:z.top8},"Create API Key"))},start(){this.updatePresence(),this.updateInterval=setInterval(()=>{this.updatePresence()},16e3)},stop(){clearInterval(this.updateInterval)},async updatePresence(){let{username:e,scrobblerBackend:t,instanceAPIBaseUrl:o,instanceBaseURL:r}=Yn.store;e&&(t==="listenbrainz-compatible"&&(!o||!r)||Hrt(await this.getActivity()))},getLargeImage(e){if(Yn.store.showAlbumCover&&e.imageURL&&!e.imageURL.includes(Grt))return e.imageURL;if(Yn.store.missingArt==="placeholder")return"placeholder"},async getActivity(){if(Yn.store.hideWithActivity&&Yo.getActivities(oi.getId()).some(l=>l.application_id!==wT&&l.type!==4)||Yn.store.hideWithSpotify&&Yo.getActivities(oi.getId()).some(l=>l.type===2&&l.application_id!==wT))return null;let e=Yn.store.scrobblerBackend==="lastfm"?Eve:Lve,t=await e.fetchTrackData();if(!t)return null;let o=this.getLargeImage(t),r=o?{large_image:await TW(o),large_text:t.album||void 0,...Yn.store.showLogo&&{small_image:await TW(`${e.id}-small`),small_text:e.id}}:{large_image:await TW(`${e.id}-large`),large_text:t.album||void 0},n=[];Yn.store.shareUsername&&n.push({label:`${e.name} Profile`,url:e.getUserURL(Yn.store.username)});let a=(()=>{switch(Yn.store.nameFormat){case"artist-first":return t.artist+" - "+t.name;case"song-first":return t.name+" - "+t.artist;case"artist":return t.artist;case"song":return t.name;case"album":return t.album||Yn.store.statusName.replaceAll("{artist}",t.artist||"").replaceAll("{album}",t.album||"").replaceAll("{title}",t.name||"");case"service-name":return t.serviceName||Yn.store.statusName.replaceAll("{artist}",t.artist||"").replaceAll("{album}",t.album||"").replaceAll("{title}",t.name||"");default:return Yn.store.statusName.replaceAll("{artist}",t.artist||"").replaceAll("{album}",t.album||"").replaceAll("{title}",t.name||"")}})(),s={application_id:wT,name:a,details:t.name,state:t.artist,status_display_type:{off:0,artist:1,track:2}[Yn.store.statusDisplayType],assets:r,buttons:n.length?n.map(l=>l.label):void 0,metadata:{button_urls:n.map(l=>l.url)},type:Yn.store.useListeningStatus?2:0,flags:1};return Yn.store.clickableLinks&&(s.details_url=t.trackURL,s.state_url=t.artistURL,t.album&&(s.assets.large_url=t.albumURL)),s}})});var Fve=h(()=>{});function Wrt(e){return e.name||e.recipients.map(L.getUser).filter(ka).map(t=>qe.getNickname(t.id)||Cz.getName(t)).join(", ")}function Qrt(e){let t=CT(e.id).length;return`${t===0?"No":t} Mutual Group${t!==1?"s":""}`}function $ve(e,t){return e.map(o=>i(eo,{key:o.id,className:kT.row,onClick:()=>{t?.(),jrt.selectPrivateChannel(o.id)}},i(Js,{src:at.getChannelIconURL({id:o.id,icon:o.icon,size:32}),size:"SIZE_40",className:kT.icon}),i("div",{className:kT.details},i("div",{className:kT.name},Wrt(o)),i(Y,{size:"xs",weight:"medium"},o.recipients.length+1," Members"))))}var jrt,_ve,qrt,kT,Uve,zve,CT,Krt,TT,Gve=h(()=>{"use strict";d();Fve();yt();Pe();O();Ca();He();Be();R();le();C();jrt=Ae("selectPrivateChannel"),_ve=Ie("empty","textContainer","connectionIcon"),qrt=Ie("tabPanelScroller","tabBarPanel"),kT=Ie("row","icon","name","details"),Uve=()=>null,zve=new ie("MutualGroupDMs");CT=e=>W.getSortedPrivateChannels().filter(t=>t.isGroupDM()&&t.recipients.includes(e)),Krt=e=>e.bot||e.id===L.getCurrentUser().id;TT=S({name:"MutualGroupDMs",description:"Shows mutual group dms in profiles",tags:["Friends","Appearance"],authors:[b.amia],patches:[{find:".BOT_DATA_ACCESS?(",replacement:[{match:/(?<=initialSection:\i=\i\.\i\.USER_INFO,onClose:\i\}=)(\i)/,replace:"$self.getProps($1)"},{match:/\(0,\i\.jsx\)\(\i,\{items:\i,section:(\i)/,replace:"$1==='MUTUAL_GDMS'?$self.renderMutualGDMs({...arguments[0],isLegacy:true}):$&"},{match:/className:\i\.\i(?=,type:"top")/,replace:'$& + " vc-mutual-gdms-modal-tab-bar"'}]},{find:".WIDGETS?",replacement:[{match:/(?<=items:\i,initialSection:\i,onClose:\i\}=)(\i)/,replace:"$self.getProps($1)"},{match:/children:(?=.{0,100}?component:.+?section:(\i))/,replace:"$&$1.section==='MUTUAL_GDMS'?$self.renderMutualGDMs(arguments[0]):"},{match:/type:"top",/,replace:'$&className:"vc-mutual-gdms-modal-v2-tab-bar",'}]},{find:'section:"MUTUAL_FRIENDS"',replacement:[{match:/\i\|\|\i(?=\?\(0,\i\.jsxs?\)\(\i\.\i\.Overlay,)/,replace:"$&||$self.getMutualGroupDms(arguments[0].user.id).length>0"},{match:/\.openUserProfileModal.+?\)}\)}\)(?<=,(\i)&&(\i)&&(\(0,\i\.jsxs?\)\(\i\.\i,{className:(\i)\.\i}\)).{0,50}?"MUTUAL_FRIENDS".+?)/,replace:(e,t,o,r,n)=>`${e},$self.renderDMPageList({user:arguments[0].user,hasDivider:${t}||${o},Divider:${r},listStyle:${n}.list})`},{match:/(?=function (\i)\(\i\){let{section:\i,header:\i[^}]+?onExpand:)/,replace:"$self.ExpandableList=$1;"}]}],set ExpandableList(e){Uve=e},getMutualGroupDms(e){try{return CT(e)}catch(t){zve.error("Failed to get mutual group dms:",t)}return[]},getProps(e){try{if(Krt(e.user))return e;let t={text:Qrt(e.user),section:"MUTUAL_GDMS"};return{...e,items:[...e.items,t]}}catch(t){zve.error("Failed to append mutual group dms section:",t)}return e},renderMutualGDMs:H.wrap(({user:e,onClose:t,isLegacy:o})=>{let r=Ne(()=>CT(e.id),[e.id]),n=$ve(r,t);return i(ei,{className:X(qrt.tabPanelScroller,!o&&"vc-mutual-gdms-scroller"),fade:!0,onClose:t},n.length>0?n:i("div",{className:_ve.empty},i("div",{className:_ve.textContainer},i(Y,{tag:"h3",size:"md",weight:"medium",style:{color:"var(--text-strong)"}},"You don't have any group chats in common"))))}),renderDMPageList:H.wrap(({user:e,hasDivider:t,Divider:o,listStyle:r})=>{let n=CT(e.id);return n.length===0?null:i(f,null,t&&o,i(Uve,{listClassName:X(r,"vc-mutual-gdms-dm-page-list"),header:"Mutual Groups",isLoading:!1,items:$ve(n)}))},{noop:!0})})});function Xrt(e){if(Ec.store.voiceChannels)try{W.getChannelIds(e).filter(t=>W.getChannel(t).isGuildVocal()&&!GS.isCollapsed(t)).forEach(t=>Jrt.update(t))}catch(t){console.warn("[NewGuildSettings] Error applying voice name hiding:",t)}}function IT(e){e==="@me"||e==="null"||e==null||(Hve(e,{muted:Ec.store.guild,mobile_push:!Ec.store.mobilePush,suppress_everyone:Ec.store.everyone,suppress_roles:Ec.store.role,mute_scheduled_events:Ec.store.events,notify_highlights:Ec.store.highlights?1:0}),Ec.store.messages!==3&&Hve(e,{message_notifications:Ec.store.messages}),Ec.store.showAllChannels&&Yrt(e)&&Zrt(e),Ec.store.voiceChannels&&Xrt(e))}var Hve,Zrt,Yrt,Jrt,Ec,jve,ET,qve=h(()=>{"use strict";d();Fo();j();ot();O();Be();R();le();C();({updateGuildNotificationSettings:Hve}=Ae("updateGuildNotificationSettings")),{toggleShowAllChannels:Zrt}=Qo(".onboardExistingMember(",{toggleShowAllChannels:e=>{let t=String(e);return t.length<100&&!t.includes("onboardExistingMember")&&!t.includes("getOptedInChannels")}}),Yrt=Oe(".COMMUNITY)||",".isOptInEnabled("),Jrt=Ae("toggleCollapseGuild"),Ec=M({guild:{description:"Mute Guild automatically",type:3,default:!0},messages:{description:"Server Notification Settings",type:4,options:[{label:"All messages",value:0},{label:"Only @mentions",value:1},{label:"Nothing",value:2},{label:"Server default",value:3,default:!0}]},everyone:{description:"Suppress @everyone and @here",type:3,default:!0},role:{description:"Suppress All Role @mentions",type:3,default:!0},highlights:{description:"Suppress Highlights automatically",type:3,default:!0},events:{description:"Mute New Events automatically",type:3,default:!0},showAllChannels:{description:"Show all channels automatically",type:3,default:!0},mobilePush:{description:"Mute Mobile Push Notifications automatically",type:3,default:!0},voiceChannels:{description:"Hide names in Voice channels automatically",type:3,default:!1}}),jve=e=>(t,o)=>{let{guild:r,folderId:n}=o;if(r){let a=wt("privacy",t);if(!a)return;a.push(i(P.MenuItem,{label:"Apply NewGuildSettings",id:"vc-newguildsettings-apply",icon:e?ed:void 0,leadingAccessory:e?{type:"icon",icon:ed}:void 0,action:()=>IT(r.id)}))}if(n){let a=jr.getGuildFolderById(n);t.push(i(P.MenuItem,{label:"Apply NewGuildSettings to Folder",id:"vc-newguildsettings-apply-folder",icon:e?ed:void 0,leadingAccessory:e?{type:"icon",icon:ed}:void 0,action:async()=>{for(let s of a.guildIds)IT(s),await lr(250)}}))}};ET=S({name:"NewGuildSettings",description:"Automatically mute new servers and change various other settings upon joining",tags:["Servers","Customisation"],searchTerms:["MuteNewGuild","mute","server"],authors:[b.Glitch,b.Nuckyz,b.carince,b.Mopi,b.GabiRP],isModified:!0,contextMenus:{"guild-context":jve(!1),"guild-header-popout":jve(!0)},patches:[{find:",acceptInvite(",replacement:{match:/INVITE_ACCEPT_SUCCESS.+?,(\i)=\i\?\.guild_id.+?;/,replace:(e,t)=>`${e}$self.applyDefaultSettings(${t});`}},{find:"{joinGuild:",replacement:{match:/guildId:(\i),lurker:(\i).{0,20}}\)\);/,replace:(e,t,o)=>`${e}if(!${o})$self.applyDefaultSettings(${t});`}}],settings:Ec,applyDefaultSettings:IT,flux:{GUILD_JOIN_REQUEST_UPDATE({guildId:e,request:t,status:o}){o==="APPROVED"&&t.user_id===L.getCurrentUser().id&&IT(e)}}})});var Wve=h(()=>{});function Vrt(e){let t={display:e.inline?"inline-grid":"grid",gridTemplateColumns:`repeat(${e.columns}, 1fr)`,gap:e.gap,...e.style};return i("div",{...e,style:t},e.children)}var Kve=h(()=>{"use strict";d()});var IW={};Bt(IW,{AchievementsIcon:()=>UU,AddonCard:()=>bw,AppsIcon:()=>RU,AtIcon:()=>HU,AttachmentIcon:()=>DU,BackupAndRestoreTab:()=>P9,BackupRestoreIcon:()=>SU,Badge:()=>yw,BadgeVariants:()=>YJe,BaseText:()=>Y,BookCheckIcon:()=>s1,BookmarkIcon:()=>HQe,Button:()=>de,ButtonCompat:()=>Ep,Card:()=>Ht,ChangelogTab:()=>k9,CheckedTextInput:()=>Cd,CheckmarkLargeBoldIcon:()=>KQe,ChevronSmallDownIcon:()=>CU,ChevronSmallUpIcon:()=>TU,CircleQuestionIcon:()=>jQe,ClockIcon:()=>sS,CloudDownloadIcon:()=>o1,CloudIcon:()=>bU,CloudTab:()=>_9,CloudUploadIcon:()=>n1,CodeBlock:()=>Ps,CogWheel:()=>ed,ColorPaletteIcon:()=>AU,ComponentsIcon:()=>GQe,CopyIcon:()=>wa,CopyIdIcon:()=>Jm,CreditCardIcon:()=>BU,DeleteIcon:()=>hr,DiscordIconSizes:()=>BQe,Divider:()=>Rt,DonateButton:()=>j1,DoubleCheckmarkIcon:()=>$U,DownArrow:()=>IU,EquicordIcon:()=>FU,ErrorBoundary:()=>H,ErrorCard:()=>Nr,EyeIcon:()=>ea,FireIcon:()=>qU,Flex:()=>pe,FolderIcon:()=>td,FormSwitch:()=>mo,FormSwitchCompat:()=>KU,GameControllerIcon:()=>LU,GifIcon:()=>MU,GithubIcon:()=>t1,Grid:()=>Vrt,HammerAndChiselIcon:()=>OU,HammerIcon:()=>WQe,Heading:()=>oe,HeadingPrimary:()=>ta,HeadingSecondary:()=>Ot,HeadingTertiary:()=>Gr,HeadphonesIcon:()=>EU,Heart:()=>Sd,IDIcon:()=>UQe,ImageIcon:()=>On,ImageInvisible:()=>Vu,ImageVisible:()=>Ip,InfoIcon:()=>gi,InlineCode:()=>rh,InviteButton:()=>xH,Link:()=>so,LinkButton:()=>WU,LinkIcon:()=>sn,LogIcon:()=>rS,LogsIcon:()=>cS,MagnifyingGlassIcon:()=>kU,MainSettingsIcon:()=>aS,Margins:()=>z,Microphone:()=>e1,NoEntrySignIcon:()=>nS,NotesIcon:()=>_Qe,Notice:()=>Xo,NoticeVariants:()=>vXe,OpenExternalIcon:()=>gn,OwnerCrownIcon:()=>hU,PaintbrushIcon:()=>od,Paragraph:()=>U,PasteIcon:()=>OQe,PatchHelperIcon:()=>zQe,PatchHelperTab:()=>_pe,PencilIcon:()=>Vi,PencilSparkleIcon:()=>_U,PlaceholderIcon:()=>vU,PluginIcon:()=>LQe,PluginsIcon:()=>yU,PluginsTab:()=>ih,PlusIcon:()=>Yc,QrCodeIcon:()=>lS,QuickAction:()=>Ac,QuickActionCard:()=>Aw,ReplyIcon:()=>RQe,ResetIcon:()=>FQe,RestartIcon:()=>iS,RightArrow:()=>r1,RobotIcon:()=>i1,SafetyIcon:()=>r3,ScreenshareIcon:()=>n3,SearchIcon:()=>dS,SettingsTab:()=>br,ShieldIcon:()=>i3,SkullIcon:()=>zU,Span:()=>nr,SpecialCard:()=>kw,StarFilled:()=>a1,StarOutlined:()=>Vm,StickerIcon:()=>PU,Switch:()=>Mi,TextButton:()=>Ys,TextColors:()=>eue,TextCompat:()=>dU,TextIcon:()=>jU,TextSizes:()=>Xce,TextWeights:()=>Vce,ThemesTab:()=>lh,TopRightArrow:()=>GU,TranslateButton:()=>vH,TrashIcon:()=>l3,UnsendIcon:()=>a3,UpdaterIcon:()=>wU,UpdaterTab:()=>Id,UserIcon:()=>uS,VencordIcon:()=>qQe,VencordTab:()=>U9,VesktopSettingsIcon:()=>$Qe,VideoIcon:()=>NU,WarningIcon:()=>Xm,WebsiteIcon:()=>xU,WindowTopOutlineIcon:()=>s3,XLargeBoldIcon:()=>nd,generateMarginCss:()=>cU,generateTextCss:()=>uU,handleSettingsTabError:()=>CG,openContributorModal:()=>uu,openPluginModal:()=>ns,openSettingsTabModal:()=>xd,wrapTab:()=>Sr});var Ih=h(()=>{"use strict";d();yt();Tt();Qn();Q1();bd();xr();Pe();xc();Lt();hi();Kve();We();H1();ot();$r();Ja();ql();Je();Fi();Jc();rd()});function Qve(e){return e.replace(/\[([^\]]*)\]/g,t=>t.replace(/,/g,"\0")).replace(/\{(\d+,?\d*|,\d+)\}/g,t=>t.replace(",","\0")).split(",").map(t=>t.replace(/\x00/g,",").trim()).filter(Boolean)}function eit(){let[e,t]=V.useState(""),{blockedWords:o,caseSensitive:r,useRegex:n}=Fd.use(["blockedWords","caseSensitive","useRegex"]),a=V.useMemo(()=>{let s=r?"":"i";return Qve(o).map(l=>{try{let c=n?new RegExp(l,s):new RegExp(`\\b${l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\b`,s);return{pattern:l,matches:c.test(e)}}catch(c){return{pattern:l,matches:!1,error:c instanceof Error?c.message:String(c)}}})},[e,o,r,n]);return i(Ht,{className:DT("regex")},i(Gr,{className:z.bottom8},"Regex Helper"),i(Te,{type:"text",placeholder:"Input to test...",value:e,onChange:t,maxLength:null}),a.length===0?i(Ht,{key:"vc-no-patterns-regex",variant:"warning",className:X(DT("card"),z.top8)},i("code",null,"No patterns configured")):a.map(({pattern:s,matches:l,error:c},u)=>i(Ht,{key:`vc-pattern-card-${u}`,variant:c?"danger":l?"success":"primary",className:X(DT("card"),z.top8)},i("code",null,s),c&&i("span",{className:DT("error")},c))))}function EW(e){if(!C4)return!1;let t=o=>o!=null&&C4.some(r=>r.test(o));return C4.some(o=>o.test(e.content))||e.embeds.some(o=>t(o.rawDescription)||t(o.rawTitle))}var C4,DT,Fd,PT,DW=h(()=>{"use strict";d();Wve();j();Qn();We();Ih();Ja();O();we();Be();R();C();DT=K("vc-block-keywords-");Fd=M({blockedWords:{type:0,description:"Comma-separated list of words to block",default:"",restartNeeded:!0},useRegex:{type:3,description:"Use each value as a regular expression when checking message content (advanced)",default:!1,restartNeeded:!0},regexHelper:{type:6,description:"Test your regular expressions against a sample input",component:()=>i(H,{noop:!0},i(eit,null))},caseSensitive:{type:3,description:"Whether to use a case sensitive search or not",default:!1,restartNeeded:!0},ignoreBlockedMessages:{description:"Completely ignores (recent) new messages bar",type:3,default:!0,restartNeeded:!0}},{regexHelper:{hidden(){return!this.store.useRegex}}});PT=S({name:"BlockKeywords",description:"Blocks messages containing specific user-defined keywords, as if the user sending them was blocked.",tags:["Appearance","Customisation","Privacy"],authors:[F.catcraft,F.secp192k1],patches:[{find:"_channelMessages={}",predicate:()=>Fd.store.blockedWords!=="",replacement:{match:/static commit\((\i)\)\{/g,replace:"$&$1=$self.blockMessagesWithKeywords($1);"}},{find:'"MessageStore"',predicate:()=>Fd.store.ignoreBlockedMessages&&Fd.store.blockedWords!=="",replacement:[{match:/(?<=MESSAGE_CREATE:function\((\i)\){)/,replace:(e,t)=>`if($self.containsBlockedKeywords(${t}.message))return;`}]},{find:'"ReadStateStore"',predicate:()=>Fd.store.ignoreBlockedMessages&&Fd.store.blockedWords!=="",replacement:[{match:/(?<=MESSAGE_CREATE:function\((\i)\){)/,replace:(e,t)=>`if($self.containsBlockedKeywords(${t}.message))return;`}]}],settings:Fd,containsBlockedKeywords:EW,start(){let e=Qve(Fd.store.blockedWords),t=Fd.store.caseSensitive?"":"i";e.length!==0&&(Fd.store.useRegex?C4=e.map(o=>new RegExp(o,t)):C4=e.map(o=>new RegExp(`\\b${o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\b`,t)))},blockMessagesWithKeywords(e){return e.reset(e.map(t=>t.set("blocked",t.blocked||this.containsBlockedKeywords(t))))}})});var _d,Au,MT=h(()=>{"use strict";d();j();DW();O();He();R();C();Br("NoBlockedMessages","disableNotifications","ignoreMessages");Br("NoBlockedMessages","alsoHideIgnoredUsers","applyToIgnoredUsers");_d=M({alsoHideIgnoredUsers:{description:"Also hide messages from ignored users.",type:3,default:!0,restartNeeded:!1},disableNotifications:{description:'Hide new message notifications for blocked users. Always true if "Default Hide Users" is enabled below and the user triggering the notification is not exempted in "Override Users".',type:3,default:!1,restartNeeded:!1},allowAutoModMessages:{description:"Allow messages sent by AutoMod to bypass filtering.",type:3,default:!0,restartNeeded:!1},hideBlockedUserReplies:{description:"Hide replies to blocked users.",type:3,default:!1,restartNeeded:!1},defaultHideUsers:{type:3,description:"If enabled, messages from blocked users will be completely hidden and any messages from user IDs in the override list will be collapsed (default Discord behavior) instead. If disabled, messages from blocked users will be collapsed and any messages from user IDs in the override list will be completely hidden instead.",default:!0,restartNeeded:!1},overrideUsers:{type:0,description:"Comma separated list of user IDs which will be hidden or collapsed instead of the default behavior selected above.",restartNeeded:!1,default:""}}),Au=S({name:"NoBlockedMessages",description:"Hide all blocked/ignored messages from chat completely.",authors:[b.rushii,b.Samu,b.jamesbt365,b.Elvyra,F.Etorix],tags:["Accessibility","Chat"],isModified:!0,settings:_d,patches:[{find:'"MessageStore"',replacement:[{match:/(?<=MESSAGE_CREATE:function\((\i)\){)/,replace:(e,t)=>`if($self.disableNotification(${t}.message))return;`}]},{find:'"ReadStateStore"',replacement:[{match:/(?<=MESSAGE_CREATE:function\((\i)\){)/,replace:(e,t)=>`if($self.disableNotification(${t}.message))return;`}]},{find:"`forum-post-action-bar-",replacement:[{match:/(?<=\);)(let \i=null,\i=\[\],\i=(\i))/,replace:"$2=$self.filterStream($2);$1"}]}],keepSuppressedMessage(e){let t=_d.store.overrideUsers.split(",").map(o=>o.trim()).filter(o=>o.length>0);return _d.store.defaultHideUsers?t.includes(e):!t.includes(e)},shouldKeepMessage(e){let t=this.isSuppressed(e),o=this.isReplyToSuppressed(e);return e.type===24&&_d.store.allowAutoModMessages?[!0,t]:t.suppressed?[!t.hide,!0]:o.suppressed?[!o.hide,!0]:[!0,!1]},disableNotification(e){if(!e)return!1;let t=this.shouldKeepMessage(e),o=!t[0],r=t[1];return o||r&&_d.store.disableNotifications},filterStream(e){let{alsoHideIgnoredUsers:t,disableNotifications:o,hideBlockedUserReplies:r,allowAutoModMessages:n,defaultHideUsers:a,overrideUsers:s}=_d.use(["alsoHideIgnoredUsers","disableNotifications","hideBlockedUserReplies","allowAutoModMessages","defaultHideUsers","overrideUsers"]),l=[];e.forEach(u=>{let p=u.type==="MESSAGE_GROUP_BLOCKED",m=u.type==="MESSAGE_GROUP_IGNORED",g=u.type==="THREAD_STARTER_MESSAGE",x=(p||m)&&u.content?.[0]?.type==="THREAD_STARTER_MESSAGE",v=g&&u.content||x&&u.content?.[0]?.content||null,y=v?.messageReference&&HS.getMessageByReference(v.messageReference)?.message||null,A=!1;if(x&&v&&y){let k=this.getRelationshipStatus(y.author);k.ignored||k.blocked||(l.push(u.content[0]),A=!0)}if(p||m&&t){let k=u.content.filter((I,E)=>{let N=["MESSAGE","THREAD_STARTER_MESSAGE"].includes(I.type),B=E===0&&I.type==="THREAD_STARTER_MESSAGE",_=N&&(B?y:I.content)||null;return!(B&&A)&&(!_||this.shouldKeepMessage(_)[0])});k.length&&l.push({...u,content:k})}else{let k=["MESSAGE","THREAD_STARTER_MESSAGE"].includes(u.type),w=k&&(g?y:u.content)||null;(!k||!w||this.shouldKeepMessage(w)[0])&&l.push(u)}});let c=l[l.length-1];for(;c&&c.type==="DIVIDER";)l.pop(),c=l[l.length-1];return l},isReplyToSuppressed(e){if(!_d.store.hideBlockedUserReplies)return{suppressed:!1,hide:!1};try{let t=e.referenced_message||null;if(!t){let o=e.messageReference||e.message_reference;t=o?lt.getMessage(o.channel_id,o.message_id):null}return t?this.isSuppressed(t):{suppressed:!1,hide:!1}}catch(t){return new ie("NoBlockedMessages").error("Failed to check if referenced message is blocked or ignored:",t),{suppressed:!1,hide:!1}}},isSuppressed(e){try{let{BlockKeywords:t}=Me.plugins,o=t?.enabled&&t?.ignoreBlockedMessages&&EW(e),r=this.getRelationshipStatus(e.author),n=e.interaction&&this.getRelationshipStatus(e.interaction.user),a=e.author.bot&&(e.messageReference||e.message_reference),s=a&<.getMessage(a.channel_id,a.message_id),l=s&&this.getRelationshipStatus(s.author),c=o||r.blocked||r.ignored&&_d.store.alsoHideIgnoredUsers||n&&(n.blocked||n.ignored&&_d.store.alsoHideIgnoredUsers)||l&&(l.blocked||l.ignored&&_d.store.alsoHideIgnoredUsers),u=!this.keepSuppressedMessage(e.author.id)||e.interaction&&!this.keepSuppressedMessage(e.interaction.user.id)||s&&!this.keepSuppressedMessage(s.author.id);return{suppressed:c,hide:u}}catch(t){return new ie("NoBlockedMessages").error("Failed to check if message is blocked or ignored:",t),{suppressed:!1,hide:!1}}},getRelationshipStatus(e){let t=qe.isBlocked(e.id);return{ignored:qe.isIgnored(e.id),blocked:t}}})});var NT,Zve=h(()=>{"use strict";d();O();R();NT=S({name:"NoDevtoolsWarning",description:"Disables the 'HOLD UP' banner in the console. As a side effect, also prevents Discord from hiding your token, which prevents random logouts.",authors:[b.Ven],tags:["Developers","Console"],patches:[{find:"setDevtoolsCallbacks",replacement:{match:/if\(null!=\i&&"0.0.0"===\i\.app\.getVersion\(\)\)/,replace:"if(true)"}}]})});var BT,Yve=h(()=>{"use strict";d();O();R();BT=S({name:"NoF1",description:"Disables F1 help bind.",tags:["Utility"],authors:[b.Cyn],patches:[{find:',"f1"],comboKeysBindGlobal:',replacement:{match:',"f1"],comboKeysBindGlobal:',replace:"],comboKeysBindGlobal:"}}]})});var RT,Jve=h(()=>{"use strict";d();O();R();RT=S({name:"NoMaskedUrlPaste",authors:[b.CatNoir],description:"Pasting a link while having text selected will not paste as masked URL",tags:["Chat","Utility"],patches:[{find:".selection,preventEmojiSurrogates:",replacement:{match:/if\(null!=\i.selection&&\i.\i.isExpanded\(\i.selection\)\)/,replace:"if(false)"}}]})});function Xve(e){e.button===1&&e.preventDefault()}var LT,Vve=h(()=>{"use strict";d();O();R();LT=S({name:"NoMiddleClickPaste",description:"Disable Linux middle-click paste - Linux only",authors:[b.Darxoon],tags:["Accessibility"],hidden:!WS,start(){window.addEventListener("mouseup",Xve)},stop(){window.removeEventListener("mouseup",Xve)}})});var eye,OT,tye=h(()=>{"use strict";d();j();O();R();eye=M({inlineVideo:{description:"Play videos without carousel modal",type:3,default:!0,restartNeeded:!0}}),OT=S({name:"NoMosaic",authors:[b.AutumnVN],description:"Removes Discord image mosaic",tags:["Media","Appearance","Chat"],searchTerms:["image","mosaic","media"],settings:eye,patches:[{find:'"PLAINTEXT_PREVIEW":"OTHER"',replacement:{match:/"IMAGE"===\i\|\|"VIDEO"===\i\|\|"CLIP"===\i/,replace:"(false)"}},{find:"return{visualMediaItems:",replacement:{match:/return{visualMediaItems:.+?props:(\i)(?=.{0,20}?\1\.item\.uniqueId)/,replace:'$&,useFullWidth:["IMAGE","VIDEO","CLIP"].includes($1.item?.type)?false:undefined'}},{find:"renderAttachments(",predicate:()=>eye.store.inlineVideo,replacement:{match:/url:(\i)\.url\}\);return /,replace:"$&$1.content_type?.startsWith('image/')&&"}}]})});var FT,oye=h(()=>{"use strict";d();O();R();FT=S({name:"NoOnboardingDelay",description:"Skips the slow and annoying onboarding delay",tags:["Utility","Servers"],authors:[b.nekohaxx],patches:[{find:"#{intl::ONBOARDING_COVER_WELCOME_SUBTITLE}",replacement:{match:"3e3",replace:"0"}}]})});var tit,T4,_T,nye=h(()=>{"use strict";d();j();O();R();le();tit=Ae("getMessageRequestsCount"),T4=M({hideFriendRequestsCount:{type:3,description:"Hide incoming friend requests count",default:!0,restartNeeded:!0},hideMessageRequestsCount:{type:3,description:"Hide message requests count",default:!0,restartNeeded:!0},hidePremiumOffersCount:{type:3,description:"Hide nitro offers count",default:!0,restartNeeded:!0}}),_T=S({name:"NoPendingCount",description:"Removes the ping count of incoming friend requests, message requests, and nitro offers.",tags:["Notifications","Appearance"],authors:[b.amia],settings:T4,patches:[{find:"getPendingCount(){",predicate:()=>T4.store.hideFriendRequestsCount,replacement:{match:/(?<=getPendingCount\(\)\{)/,replace:"return 0;"}},{find:"getMessageRequestsCount(){",predicate:()=>T4.store.hideMessageRequestsCount,replacement:{match:/(?<=getMessageRequestsCount\(\)\{)/,replace:"return 0;"}},{find:".getSpamChannelsCount();return",predicate:()=>T4.store.hideMessageRequestsCount,replacement:{match:/(?<=getSpamChannelsCount\(\);return )\i\.getMessageRequestsCount\(\)/,replace:"$self.getRealMessageRequestCount()"}},{find:"showProgressBadge:",predicate:()=>T4.store.hidePremiumOffersCount,replacement:{match:/(\{unviewedTrialCount:(\i),unviewedDiscountCount:(\i)\}.+?)\2\+\3/,replace:(e,t)=>`${t}0`}}],getRealMessageRequestCount(){return tit.getMessageRequestChannelIds().size}})});var UT,rye=h(()=>{"use strict";d();O();R();C();UT=S({name:"NoProfileThemes",description:"Completely removes Nitro profile themes from everyone but yourself",tags:["Appearance"],authors:[b.TheKodeToad],patches:[{find:"hasThemeColors(){",replacement:{match:/get canUsePremiumProfileCustomization\(\){return /,replace:"$&$self.isCurrentUser(this?.userId)&&"}}],isCurrentUser:e=>e===L.getCurrentUser()?.id})});var PW,zT,iye=h(()=>{"use strict";d();j();O();R();PW=M({shownEmojis:{description:"The types of emojis to show in the autocomplete menu.",type:4,default:"onlyUnicode",options:[{label:"Only unicode emojis",value:"onlyUnicode"},{label:"Unicode emojis and server emojis from current server",value:"currentServer"},{label:"Unicode emojis and all server emojis (Discord default)",value:"all"}]}}),zT=S({name:"NoServerEmojis",authors:[b.UlyssesZhan],description:"Do not show server emojis in the autocomplete menu.",tags:["Emotes","Servers"],settings:PW,patches:[{find:"}searchWithoutFetchingLatest(",replacement:{match:/\.nameMatchesChain\(\i\)\.reduce\(\((\i),(\i)\)=>\{(?<=channel:(\i).+?)/,replace:"$&if($self.shouldSkip($3,$2))return $1;"}}],shouldSkip(e,t){return t.type!==1?!1:PW.store.shownEmojis==="onlyUnicode"?!0:PW.store.shownEmojis==="currentServer"?t.guildId!==(e!=null?e.getGuildId():null):!1}})});var $T,aye=h(()=>{"use strict";d();O();R();$T=S({name:"NoSystemBadge",description:"Disables the taskbar and system tray unread count badge.",tags:["Notifications","Appearance"],authors:[b.rushii],patches:[{find:",setSystemTrayApplications",replacement:[{match:/setBadge\(\i\).+?},/,replace:"setBadge(){},"},{match:/setSystemTrayIcon\(\i\).+?},/,replace:"setSystemTrayIcon(){},"}]}]})});var GT,sye=h(()=>{"use strict";d();O();R();GT=S({name:"NoTypingAnimation",authors:[b.AutumnVN],description:"Disables the CPU-intensive typing dots animation",tags:["Appearance"],patches:[{find:"dotCycle",replacement:{match:/focused:(\i)/g,replace:(e,t)=>`_focused:${t}=false`}}]})});var HT,lye=h(()=>{"use strict";d();O();R();HT=S({name:"NoUnblockToJump",description:"Allows you to jump to messages of blocked or ignored users and likely spammers without unblocking them",tags:["Utility"],authors:[b.Rini],patches:[{find:"#{intl::UNIGNORE_TO_JUMP_BODY}",replacement:{match:/if\(\i\.\i\.isBlockedForMessage\(/,replace:"return true;$&"}}]})});var oit,jT,cye=h(()=>{"use strict";d();j();O();R();oit=M({notificationVolume:{type:5,description:"Notification volume",markers:[0,25,50,75,100],default:100,stickToMarkers:!1}}),jT=S({name:"NotificationVolume",description:"Save your ears and set a separate volume for notifications and in-app sounds",tags:["Notifications","Voice"],authors:[b.philipbry],settings:oit,patches:[{find:"ensureAudio(){",replacement:{match:/(?=Math\.min\(\i\.\i\.getOutputVolume\(\)\/100)/g,replace:"$self.settings.store.notificationVolume/100*"}}]})});var Eh,qT,uye=h(()=>{"use strict";d();j();O();R();co();C();Eh=M({channelToAffect:{type:4,description:"Select the type of DM for the plugin to affect",options:[{label:"Both",value:"both_dms",default:!0},{label:"User DMs",value:"user_dm"},{label:"Group DMs",value:"group_dm"}]},allowMentions:{type:3,description:"Receive audio pings for @mentions",default:!1},allowEveryone:{type:3,description:"Receive audio pings for @everyone and @here in group DMs",default:!1},ignoreUsers:{type:0,description:"User IDs (comma + space) whose pings should NEVER be throttled",restartNeeded:!0,default:""},alwaysPlaySound:{type:3,description:"Play the message notification sound even when its disabled",restartNeeded:!0,default:!1}}),qT=S({name:"OnePingPerDM",description:"If unread messages are sent by a user in DMs multiple times, you'll only receive one audio ping. Read the messages to reset the limit",tags:["Notifications","Customisation"],authors:[b.ProffDea],isModified:!0,settings:Eh,patches:[{find:'"NotificationStore"',replacement:[{match:/\i\.\i\.getDesktopType\(\)===\i\.\i\.NEVER\)(?=.*?(\i\.\i\.playNotificationSound\(.{0,5}\)))/,replace:"$&if(!$self.isPrivateChannelRead(arguments[0]?.message))return;else if($self.playSound())return $1;else "},{match:/sound:(\i\?(\i):void 0,volume:\i,onClick)/,replace:"sound:!$self.isPrivateChannelRead(arguments[0]?.message)?undefined:$self.playSound()?$2:$1"}]}],playSound(){return Eh.store.alwaysPlaySound},isPrivateChannelRead(e){if(Eh.store.ignoreUsers.split(", ").filter(Boolean).includes(e.author.id))return!0;let o=W.getChannel(e.channel_id)?.type;return o!==1&&o!==3||o===1&&Eh.store.channelToAffect==="group_dm"||o===3&&Eh.store.channelToAffect==="user_dm"||Eh.store.allowMentions&&e.mentions.some(r=>r.id===L.getCurrentUser().id)||Eh.store.allowEveryone&&e.mention_everyone?!0:ti.getOldestUnreadMessageId(e.channel_id)===e.id}})});var NW,MW,nit,nm,WT=h(()=>{"use strict";d();j();O();R();C();NW={spotify:{match:/^https:\/\/open\.spotify\.com\/(?:intl-[a-z]{2}\/)?(track|album|artist|playlist|user|episode|prerelease)\/(.+)(?:\?.+?)?$/,replace:(e,t,o)=>`spotify://${t}/${o}`,description:"Open Spotify links in the Spotify app",shortlinkMatch:/^https:\/\/spotify\.link\/.+$/,accountViewReplace:e=>`spotify:user:${e}`},steam:{match:/^https:\/\/(steamcommunity\.com|(?:help|store)\.steampowered\.com)\/.+$/,replace:e=>`steam://openurl/${e}`,description:"Open Steam links in the Steam app",shortlinkMatch:/^https:\/\/s.team\/.+$/,accountViewReplace:e=>`steam://openurl/https://steamcommunity.com/profiles/${e}`},epic:{match:/^https:\/\/store\.epicgames\.com\/(.+)$/,replace:(e,t)=>`com.epicgames.launcher://store/${t}`,description:"Open Epic Games links in the Epic Games Launcher"},tidal:{match:/^https:\/\/(?:listen\.)?tidal\.com\/(?:browse\/)?(track|album|artist|playlist|user|video|mix)\/([a-f0-9-]+).*/,replace:(e,t,o)=>`tidal://${t}/${o}`,description:"Open Tidal links in the Tidal app"},itunes:{match:/^https:\/\/(?:geo\.)?music\.apple\.com\/([a-z]{2}\/)?(album|artist|playlist|song|curator)\/([^/?#]+)\/?([^/?#]+)?(?:\?.*)?(?:#.*)?$/,replace:(e,t,o,r,n)=>n?`itunes://music.apple.com/us/${o}/${r}/${n}`:`itunes://music.apple.com/us/${o}/${r}`,displayName:"iTunes",description:"Open Apple Music links in the iTunes app"},vrcx:{match:/^https:\/\/vrchat.com\/home\/(user|avatar|world|group)\/(.+)$/,replace:(e,t,o)=>`vrcx://${t}/${o}`,description:"Open VRChat links in the VRCX app"},telegram:{match:/^https:\/\/t\.me\/([a-zA-Z0-9_]+)$/,replace:(e,t)=>`tg://resolve?domain=${t}`,description:"Open Telegram links in the Telegram app"}},MW=M(Object.entries(NW).reduce((e,[t,o])=>(e[t]={type:3,displayName:o.displayName,description:o.description,default:!0},e),{})),nit=VencordNative.pluginHelpers.OpenInApp,nm=S({name:"OpenInApp",description:"Open links in their respective apps instead of your browser",tags:["Utility"],authors:[b.Ven,b.surgedevs],settings:MW,isModified:!0,patches:[{find:"trackAnnouncementMessageLinkClicked({",replacement:{match:/function (\i\(\i,\i\)\{)(?=.{0,150}trusted:)/,replace:"async function $1 if(await $self.handleLink(...arguments)) return;"}},{find:"no artist ids in metadata",predicate:()=>!1,replacement:[{match:/\i\.\i\.isProtocolRegistered\(\)/g,replace:"true"},{match:/\(0,\i\.isDesktop\)\(\)/,replace:"true"}]},...[".__invalid_connectedAccountOpenIconContainer",".BLUESKY||"].map(e=>({find:e,replacement:{match:/(?<=onClick:(\i)=>\{)(?=.{0,100}\.CONNECTED_ACCOUNT_VIEWED)(?<==(\i)\.metadata.+?)/,replace:"if($self.handleAccountView($1,$2.type,$2.id)) return;"}}))],async handleLink(e,t){if(!e)return!1;let o=e.href;if(!o)return!1;for(let[r,n]of Object.entries(NW))if(MW.store[r]&&(n.shortlinkMatch?.test(o)&&(t?.preventDefault(),o=await nit.resolveRedirect(o)),n.match.test(o))){ne("Opened link in native app",D.Type.SUCCESS);let a=o.replace(n.match,n.replace);return VencordNative.native.openExternal(a),t?.preventDefault(),!0}return t?.defaultPrevented?(window.open(o,"_blank"),!0):!1},handleAccountView(e,t,o){let r=NW[t];if(r?.accountViewReplace&&MW.store[t])return VencordNative.native.openExternal(r.accountViewReplace(o)),e.preventDefault(),!0}})});var BW,KT,dye=h(()=>{"use strict";d();j();O();R();BW=M({defaultLayout:{type:4,options:[{label:"List",value:1,default:!0},{label:"Gallery",value:2}],description:"Which layout to use as default"},defaultSortOrder:{type:4,options:[{label:"Recently Active",value:0,default:!0},{label:"Date Posted",value:1}],description:"Which sort order to use as default"}}),KT=S({name:"OverrideForumDefaults",description:"Allows you to override default forum layout/sort order. you can still change it on a per-channel basis",tags:["Servers","Organisation","Customisation"],authors:[b.Inbestigator],patches:[{find:"getDefaultLayout(){",replacement:[{match:/}getDefaultLayout\(\){/,replace:"$&return $self.getLayout();"},{match:/}getDefaultSortOrder\(\){/,replace:"$&return $self.getSortOrder();"}]}],getLayout:()=>BW.store.defaultLayout,getSortOrder:()=>BW.store.defaultSortOrder,settings:BW})});function rit(e){let t=$e.getGuild(e);return t?!T0(t,"INVITES_DISABLED")&&ht.getGuildPermissionProps(t).canManageRoles:!1}function iit(e){let o=[...$e.getGuild(e).features,"INVITES_DISABLED"];mt.patch({url:Gt.Endpoints.GUILD(e),body:{features:o}})}var QT,pye=h(()=>{"use strict";d();Pe();O();_e();R();C();QT=S({name:"PauseInvitesForever",searchTerms:["DisableInvitesForever"],description:"Brings back the option to pause invites indefinitely that stupit Discord removed.",tags:["Servers"],authors:[b.Dolfies,b.amia],patches:[{find:"#{intl::GUILD_INVITE_DISABLE_ACTION_SHEET_DESCRIPTION}",group:!0,replacement:[{match:/children:\i\.\i\.string\(\i\.\i#{intl::GUILD_INVITE_DISABLE_ACTION_SHEET_DESCRIPTION}\)/,replace:"children: $self.renderInvitesLabel({guildId:arguments[0].guildId,setChecked})"},{match:/\.INVITES_DISABLED\)(?=.+?#{intl::INVITES_PERMANENTLY_DISABLED_TIP}.+?checked:(\i)).+?\[\1,(\i)\]=\i.useState\(\i\)/,replace:"$&,setChecked=$2"}]}],renderInvitesLabel:H.wrap(({guildId:e,setChecked:t})=>i("div",null,Xe("GUILD_INVITE_DISABLE_ACTION_SHEET_DESCRIPTION"),rit(e)&&i("a",{role:"button",onClick:()=>{t(!0),iit(e)}}," Pause Indefinitely.")),{noop:!0})})});var RW,ZT,mye=h(()=>{"use strict";d();j();O();id();R();RW=M({lockout:{type:3,default:!0,description:`Bypass the permission lockout prevention ("Pretty sure you don't want to do this")`,restartNeeded:!0},onboarding:{type:3,default:!0,description:'Bypass the onboarding requirements ("Making this change will make your server incompatible [...]")',restartNeeded:!0}}),ZT=S({name:"PermissionFreeWill",description:"Disables the client-side restrictions for channel permission management.",tags:["Servers","Roles"],authors:[b.lewisakura],patches:[{find:"#{intl::STAGE_CHANNEL_CANNOT_OVERWRITE_PERMISSION}",replacement:[{match:/case"DENY":.{0,50}if\((?=\i\.\i\.can)/,replace:"$&true||"}],predicate:()=>RW.store.lockout},{find:"#{intl::ONBOARDING_CHANNEL_THRESHOLD_WARNING}",replacement:[{match:/{(?:\i:\(\)=>\i,?){2}}/,replace:e=>e.replaceAll(xi(/\(\)=>\i/g),"()=>()=>Promise.resolve(true)")}],predicate:()=>RW.store.onboarding}],settings:RW})});var fye=h(()=>{});function XT({id:e},t){return To.getSortedRoles(e).filter(o=>o.id===e||t.roles.includes(o.id))}function gye(e){switch(Kf.store.permissionsSortOrder){case 0:return e.sort((t,o)=>o.position-t.position);case 1:return e.sort((t,o)=>t.position-o.position);default:return e}}function VT(e,t){let o=To.getRolesSnapshot(t);return e.sort((r,n)=>{if(r.type!==0||n.type!==0)return 0;let a=o[r.id],s=o[n.id],l=a?.position??-1/0;return(s?.position??-1/0)-l})}var YT,JT,Jn,I4=h(()=>{"use strict";d();we();co();le();C();kv();YT=vr([".PRIMARY,badgeTooltipDelay:"]),{getGuildPermissionSpecMap:JT}=Ae("getGuildPermissionSpecMap"),Jn=K("vc-permviewer-")});function hye(){return i("svg",{height:"24",width:"24",viewBox:"0 0 24 24"},i("title",null,"Denied"),i("path",{fill:"var(--status-danger)",d:"M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"}))}function xye(){return i("svg",{height:"24",width:"24",viewBox:"0 0 24 24"},i("title",null,"Allowed"),i("path",{fill:"var(--status-positive)",d:"M8.99991 16.17L4.82991 12L3.40991 13.41L8.99991 19L20.9999 7.00003L19.5899 5.59003L8.99991 16.17ZZ"}))}var vye=h(()=>{"use strict";d()});function lit(e){let t=sit(e,20);if(!t)return;let{customIconSrc:o,unicodeEmoji:r}=t;return o??r?.url}function cit({permissions:e,guild:t,modalProps:o,header:r}){let n=Ne(()=>JT(t),[t.id]);ye([bt],()=>bt.getMemberIds(t.id),null,(u,p)=>u.length===p.length),G(()=>{e.sort((u,p)=>u.type-p.type)},[e]),G(()=>{let u=e.filter(p=>p.type===1&&!bt.isMember(t.id,p.id)).map(({id:p})=>p);Q.dispatch({type:"GUILD_MEMBERS_REQUEST",guildIds:[t.id],userIds:u})},[]);let[a,s]=T(0),l=e[a],c=To.getRolesSnapshot(t.id);return i(be,{...o,size:"xl",title:`${r} Permissions`},!l&&i("div",{className:Jn("modal-no-perms")},i(vi,{variant:"heading-lg/normal"},"No permissions to display!")),l&&i("div",{className:Jn("modal-container")},i(ei,{className:Jn("modal-list"),orientation:"auto"},e.map((u,p)=>{let m=L.getUser(u.id??""),g=c[u.id??""],x=g!=null?lit(g):void 0;return i("div",{key:p,className:Jn("modal-list-item-btn"),onClick:()=>s(p),role:"button",tabIndex:0},i("div",{className:Jn("modal-list-item",{"modal-list-item-active":a===p}),onContextMenu:v=>{u.type===0?rt.openContextMenu(v,()=>i(uit,{guild:t,roleId:u.id,onClose:o.onClose})):u.type===1&&rt.openContextMenu(v,()=>i(dit,{userId:u.id}))}},(u.type===0||u.type===2)&&i("span",{className:Jn("modal-role-circle"),style:{backgroundColor:g?.colorString??"var(--primary-300)"}}),u.type===0&&x!=null&&i("img",{className:Jn("modal-role-image"),src:x}),u.type===1&&m!=null&&i("img",{className:Jn("modal-user-img"),src:m.getAvatarURL(void 0,void 0,!1)}),i(vi,{variant:"text-md/normal",className:Jn("modal-list-item-text")},u.type===0?g?.name??"Unknown Role":u.type===1?(m!=null&&Tp(m))??"Unknown User":i(pe,{gap:"0.2em"},"@owner",i(hU,{height:18,width:18,"aria-hidden":"true"})))))})),i("div",{className:Jn("modal-divider")}),i(ei,{className:Jn("modal-perms"),orientation:"auto"},Object.values(ct).map(u=>{let p=(()=>{let{permissions:m,overwriteAllow:g,overwriteDeny:x}=l;return m!=null?(m&u)===u?"allowed":"denied":g&&(g&u)===u?"allowed":x&&(x&u)===u?"denied":"default"})();return p==="default"?null:i("div",{key:u,className:Jn("modal-perms-item")},i("div",{className:Jn("modal-perms-item-icon")},p==="allowed"&&i(xye,null),p==="denied"&&i(hye,null)),i(vi,{variant:"text-md/normal"},n[String(u)].title),i(ve,{text:(()=>{let{description:m}=n[String(u)];return typeof m=="function"?Zm.intl.format(m,{}):m})()},m=>i(gi,{...m})))}))))}function yye(){return i("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M20.7 12.7a1 1 0 0 0 0-1.4l-5-5a1 1 0 1 0-1.4 1.4l3.29 3.3H4a1 1 0 1 0 0 2h13.59l-3.3 3.3a1 1 0 0 0 1.42 1.4l5-5Z"}))}function uit({guild:e,roleId:t,onClose:o}){let r=Se(null),n=To.getRole(e.id,t),{before:a,after:s}=bj(n,e,r);return i(P.Menu,{navId:Jn("role-context-menu"),onClose:rt.closeContextMenu,"aria-label":"Role Options"},a,i(P.MenuItem,{id:Jn("copy-role-id"),label:Xe("COPY_ID_ROLE"),icon:Jm,leadingAccessory:{type:"icon",icon:Jm},action:()=>po(t)}),s,Kf.store.unsafeViewAsRole&&i(P.MenuItem,{id:Jn("view-as-role"),label:Xe("VIEW_AS_ROLE"),icon:yye,leadingAccessory:{type:"icon",icon:yye},action:()=>{o(),Q.dispatch({type:"IMPERSONATE_UPDATE",guildId:e.id,data:{type:"ROLES",roles:{[t]:n}}})}}))}function dit({userId:e}){return i(P.Menu,{navId:Jn("user-context-menu"),onClose:rt.closeContextMenu,"aria-label":"User Options"},i(P.MenuItem,{id:Jn("copy-user-id"),label:Xe("COPY_ID_USER"),leadingAccessory:{type:"icon",icon:Jm},action:()=>{po(e)}}))}function Dh(e,t,o){return na(async()=>(await YT(),r=>i(pit,{modalProps:r,permissions:e,guild:t,header:o})))}var sit,pit,eI=h(()=>{"use strict";d();Pe();Lt();ot();Sj();I4();mi();_e();co();le();C();kv();vye();sit=Oe("convertSurrogateToName","customIconSrc","unicodeEmoji");pit=H.wrap(cit)});function bye({text:e,color:t,...o}){return i("div",{...o,className:X(E4.role)},i("div",{className:E4.roleRemoveButton},i("span",{className:mit.roleCircle,style:{backgroundColor:t}})),i("div",{className:E4.roleName},i(Y,{size:"xs",weight:"medium",className:E4.roleNameOverflow},e)))}function fit({roleName:e,roleColor:t}){return i(f,null,i(Y,{size:"sm"},"Granted By"),i(bye,{text:e,color:t}))}function git({guild:e,guildMember:t,closePopout:o}){let{permissionsSortOrder:r}=Kf.use(["permissionsSortOrder"]),n=Ne(()=>JT(e),[e.id]),[a,s]=Ne(()=>{let l=[],c=XT(e,t),u=c.map(p=>({type:0,...p}));if(e.ownerId===t.userId){u.push({type:2,permissions:Object.values(ct).reduce((m,g)=>m|g,0n)});let p=Xe("GUILD_OWNER")??"Server Owner";l.push({permission:p,roleName:"Owner",roleColor:"var(--primary-300)",rolePosition:1/0})}gye(c);for(let p of Object.values(ct))for(let{permissions:m,colorString:g,position:x,name:v}of c)if((m&p)===p){l.push({permission:n[String(p)].title,roleName:v,roleColor:g||"var(--primary-300)",rolePosition:x});break}return l.sort((p,m)=>m.rolePosition-p.rolePosition),[u,l]},[r]);return i("div",null,i("div",{className:Jn("user-header-container")},i(Gr,null,"Permissions"),i("div",{className:Jn("user-header-btns")},i(ve,{text:`Sorting by ${r===0?"Highest Role":"Lowest Role"}`},l=>i("div",{...l,className:Jn("user-header-btn"),role:"button",tabIndex:0,onClick:()=>{Kf.store.permissionsSortOrder=r===0?1:0}},i("svg",{width:"24",height:"24",viewBox:"0 96 960 960",transform:r===0?"scale(1 1)":"scale(1 -1)"},i("path",{fill:"var(--text-default)",d:"M440 896V409L216 633l-56-57 320-320 320 320-56 57-224-224v487h-80Z"})))),i(ve,{text:"Role Details"},l=>i("div",{...l,className:Jn("user-header-btn"),role:"button",tabIndex:0,onClick:()=>{o(),Dh(a,e,t.nick||L.getUser(t.userId).username)}},i("svg",{width:"24",height:"24",viewBox:"0 0 24 24"},i("path",{fill:"var(--text-default)",d:"M7 12.001C7 10.8964 6.10457 10.001 5 10.001C3.89543 10.001 3 10.8964 3 12.001C3 13.1055 3.89543 14.001 5 14.001C6.10457 14.001 7 13.1055 7 12.001ZM14 12.001C14 10.8964 13.1046 10.001 12 10.001C10.8954 10.001 10 10.8964 10 12.001C10 13.1055 10.8954 14.001 12 14.001C13.1046 14.001 14 13.1055 14 12.001ZM19 10.001C20.1046 10.001 21 10.8964 21 12.001C21 13.1055 20.1046 14.001 19 14.001C17.8954 14.001 17 13.1055 17 12.001C17 10.8964 17.8954 10.001 19 10.001Z"})))))),s.length>0&&i("div",{className:X(E4.root)},s.map(({permission:l,roleColor:c,roleName:u})=>i(ve,{key:l,text:i(fit,{roleName:u,roleColor:c}),tooltipClassName:Jn("granted-by-container"),tooltipContentClassName:Jn("granted-by-content")},p=>i(bye,{...p,text:l,color:c})))))}var E4,mit,Sye,wye=h(()=>{"use strict";d();yt();Pe();We();I4();_e();Be();co();le();C();kv();eI();E4=Ie("role","roleName","roleRemoveButton","roleNameOverflow","root"),mit=Ie("roleCircle","dot","dotBorderColor");Sye=H.wrap(git,{noop:!0})});function OW(e,{id:t,type:o,withIcon:r}){return o===0&&!bt.isMember(e,t)?null:i(P.MenuItem,{id:"perm-viewer-permissions",label:"View Permissions",leadingAccessory:r?{type:"icon",icon:r3}:void 0,action:()=>{let n=$e.getGuild(e),{permissions:a,header:s}=k3(o).returnType().with(0,()=>{let l=bt.getMember(e,t),c=XT(n,l).map(u=>({type:0,...u}));return n.ownerId===t&&c.push({type:2,permissions:Object.values(ct).reduce((u,p)=>u|p,0n)}),{permissions:c,header:l.nick??L.getUser(l.userId).username}}).with(1,()=>{let l=W.getChannel(t);return{permissions:VT(Object.values(l.permissionOverwrites).map(({id:u,allow:p,deny:m,type:g})=>({type:g,id:u,overwriteAllow:p,overwriteDeny:m})),e),header:l.name}}).otherwise(()=>({permissions:To.getSortedRoles(n.id).map(c=>({type:0,...c})),header:n.name}));Dh(a,n,s)}})}function tI(e,t,o=!1){return(r,n)=>{if(!n||t===0&&!n.user||t===2&&!n.guild||t===1&&(!n.channel||!n.guild))return;let a=wt(e,r),s=k3(t).with(0,()=>OW(n.guildId,{id:n.user.id,type:t,withIcon:o})).with(1,()=>OW(n.guild.id,{id:n.channel.id,type:t,withIcon:o})).with(2,()=>OW(n.guild.id,{withIcon:o})).otherwise(()=>null);if(s!=null){if(a)return a.push(s);e==="roles"&&n.guildId&&r.splice(-1,0,i(P.MenuGroup,null,s))}}}var hit,Kf,Ph,kv=h(()=>{"use strict";d();fye();Fo();j();Pe();ot();lc();O();Be();R();co();le();C();eI();wye();I4();hit=Ie("container","popoutRoleDot"),Kf=M({permissionsSortOrder:{description:"The sort method used for defining which role grants an user a certain permission",type:4,options:[{label:"Highest Role",value:0,default:!0},{label:"Lowest Role",value:1}]}});Ph=S({name:"PermissionsViewer",description:"View the permissions a user or channel has, and the roles of a server",tags:["Servers","Roles","Utility"],authors:[b.Nuckyz,b.Ven],settings:Kf,patches:[{find:"#{intl::COLLAPSE_ROLES}",replacement:{match:/(?<=\i\.id\)\),\i\(\))(?=,\i\?)/,replace:",$self.ViewPermissionsButton(arguments[0])"}}],ViewPermissionsButton:H.wrap(({className:e,guild:t,userId:o})=>{let r=Se(null);G(()=>{YT()},[]);let n=bt.getMember(t.id,o);return n?i(Xa,{position:"bottom",align:"center",targetElementRef:r,renderPopout:({closePopout:a})=>i(sz,{className:hit.container,style:{width:"500px"}},i(Sye,{guild:t,guildMember:n,closePopout:a}))},a=>i(Dr,{text:"View Permissions"},i(ue,{...a,ref:r,color:ue.Colors.CUSTOM,look:ue.Looks.FILLED,size:ue.Sizes.NONE,className:X(e,"vc-permviewer-role-button")},i(r3,{height:"16",width:"16"})))):null},{noop:!0}),contextMenus:{"user-context":tI("roles",0),"channel-context":tI(["mute-channel","unmute-channel"],1),"guild-context":tI("privacy",2),"guild-header-popout":tI("privacy",2,!0)}})});function Aye(e){let t=e instanceof File,o=t?URL.createObjectURL(e):e;return new Promise((r,n)=>{let a=new Image;a.onload=()=>{t&&URL.revokeObjectURL(o),r(a)},a.onerror=s=>n(Error(`An error occurred while loading ${o}. Check the console for more info.`)),a.crossOrigin="Anonymous",a.src=o})}async function bit(e,t,o){for(let r of e)switch(r.name){case"image":let n=el.getUpload(t.channel.id,r.name,yo.SlashCommand);if(n){if(!n.isImage)throw Ma.clearAll(t.channel.id,yo.SlashCommand),"Upload is not an image";return n.item.file}break;case"url":return r.value;case"user":try{return(await Xi.getUser(r.value)).getAvatarURL(o?void 0:t.guild?.id,2048).replace(/\?size=\d+$/,"?size=2048")}catch(a){throw console.error(`[petpet] Failed to fetch user `,a),Ma.clearAll(t.channel.id,yo.SlashCommand),"Failed to fetch user. Check the console for more info."}}return Ma.clearAll(t.channel.id,yo.SlashCommand),null}function Sit(e,t,o){return e<<8&63488|t<<3&2016|o>>3}function wit(e,t,o,r){let n=new Uint8Array(Math.floor(e.length/4));for(let a=0;a{"use strict";d();yr();j();O();Er();R();C();Cv=Xu(cv()),xit=20,vit=128,oI=10,yit=_l(()=>Promise.all(Array.from({length:oI},(e,t)=>Aye(`https://raw.githubusercontent.com/VenPlugs/petpet/main/frames/pet${t}.gif`))));oo("PetPet","petpet");nI=S({name:"PetPet",description:"Adds a /petpet slash command to create headpet gifs from any image",dependencies:["CommandsAPI"],tags:["Fun","Commands"],authors:[b.Ven,b.u32],commands:[{inputType:0,name:"petpet",description:"Create a petpet gif. You can only specify one of the image options",options:[{name:"delay",description:"The delay between each frame in ms. Rounded to nearest 10ms. Defaults to the minimum value of 20.",type:4},{name:"resolution",description:"Resolution for the gif. Defaults to 120. If you enter an insane number and it freezes Discord that's your fault.",type:4},{name:"image",description:"Image attachment to use",type:11},{name:"url",description:"URL to fetch image from",type:3},{name:"user",description:"User whose avatar to use as image",type:6},{name:"no-server-pfp",description:"Use the normal avatar instead of the server specific one when using the 'user' option",type:5}],execute:async(e,t)=>{let o=await yit(),r=St(e,"no-server-pfp",!1);try{var n=await bit(e,t,r);if(!n)throw"No Image specified!"}catch(A){Ma.clearAll(t.channel.id,yo.SlashCommand),Ft(t.channel.id,{content:String(A)});return}let a=await Aye(n),s=St(e,"delay",xit);if(s<20)return Ft(t.channel.id,{content:"Delay must be at least 20."});let l=St(e,"resolution",vit),c=(0,Cv.GIFEncoder)(),u=Math.min(120,l),p=document.createElement("canvas");p.width=l,p.height=Math.max(l,2*u);let m=p.getContext("2d",{willReadFrequently:!0});Ma.clearAll(t.channel.id,yo.SlashCommand),m.drawImage(a,0,u,.8*u,.8*u),m.drawImage(o[0],0,0,u,u);let{data:g}=m.getImageData(0,0,u,2*u),x=(0,Cv.quantize)(g,255),v=new Array(2**16);for(let A=0;AMr.promptToUpload([y],t.channel,yo.ChannelMessage),10)}}]})});var Cye=h(()=>{});var Tye,rI,Iye=h(()=>{"use strict";d();Cye();j();Pe();O();R();C();Tye=M({loop:{description:"Whether to make the PiP video loop or not",type:3,default:!0,restartNeeded:!1}}),rI=S({name:"PictureInPicture",description:"Adds picture in picture to videos (next to the Download button)",tags:["Media","Utility"],authors:[b.Lumap],settings:Tye,patches:[{find:'["VIDEO","CLIP","AUDIO"]',replacement:{match:/(\[\i>0&&\i\.length>0.{0,150}?children:)(\i.slice\(\i\))(?<=mimeType:(\i),downloadURL:(\i).+?showDownload:(\i).+?isVisualMediaType:(\i).+?)/,replace:(e,t,o,r,n,a,s)=>`${t}[${a}&&${s}&&$self.shouldShowButton(${r},${n})&&$self.PictureInPictureButton(),...${o}]`}}],shouldShowButton(e=[],t){return e.join("/").startsWith("video/")?!0:t?/\.(mp4|webm|mov|m4v|ogv|avi)(?:$|[?#])/i.test(t):!1},PictureInPictureButton:H.wrap(()=>i(ve,{text:"Toggle Picture in Picture"},e=>i("div",{...e,className:"vc-pip-button",role:"button",style:{cursor:"pointer",paddingTop:"4px",paddingLeft:"4px",paddingRight:"4px"},onClick:t=>{let o=t.currentTarget.parentNode.parentNode.querySelector("video"),r=document.body.appendChild(o.cloneNode(!0));r.loop=Tye.store.loop,r.style.display="none";let n=!1;function a(){if(n)return;n=!0;let{currentTime:l}=r;r.onloadedmetadata=null,r.onleavepictureinpicture=null,r.pause(),r.removeAttribute("src"),r.load(),r.remove(),o.isConnected&&(o.currentTime=l,o.play().catch(()=>0))}r.onleavepictureinpicture=a;async function s(){try{r.currentTime=o.currentTime,o.pause(),await r.play(),await r.requestPictureInPicture()}catch(l){console.error("Failed to enter Picture-in-Picture",l),a()}}r.readyState>=1?s():r.onloadedmetadata=s}},i("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M21 3a1 1 0 0 1 1 1v7h-2V5H4v14h6v2H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h18zm0 10a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h8zm-1 2h-6v4h6v-4z"})))),{noop:!0})})});var Eye=h(()=>{});async function _W(){let e=L.getCurrentUser()?.id;e!=null&&(Qr=Ms.store.userBasedCategoryList[e]??=[],Pye?.())}function Mye(){Pye=Vt(),Ms.use(["pinOrder","canCollapseDmSection","dmSectionCollapsed","userBasedCategoryList"])}function Nye(e){return Qr.find(t=>t.id===e)}function P4(e){return Qr[e]}function Bye(e){Qr.push(e)}function Rye(e,t){let o=Qr.find(r=>r.id===t);o!=null&&(o.channels.includes(e)||o.channels.push(e))}function Lye(e){let t=Qr.find(o=>o.channels.includes(e));t!=null&&(t.channels=t.channels.filter(o=>o!==e))}function Oye(e){let t=Qr.findIndex(o=>o.id===e);t!==-1&&Qr.splice(t,1)}function Fye(e,t=!0){let o=Qr.find(r=>r.id===e);o!=null&&(o.collapsed=t)}function Mh(e){return Qr.some(t=>t.channels.includes(e))}function iI(){return Qr.length}function _ye(){return Qr.reduce((e,t)=>(e.push(t.channels.length===0?1:t.channels.length),e),[])}function Ait(e){if(e!==Dye){Dye=e,FW.clear();for(let t=0;t(o.get(r)??1/0)-(o.get(n)??1/0))}return e.channels}function Uye(){return Qr.filter(e=>!e.collapsed).flatMap(M4)}function Gye(e,t,o){!e[t]||!e[o]||([e[t],e[o]]=[e[o],e[t]])}function zW(e,t){let o=Qr.findIndex(n=>n.id===e),r=o+t;Gye(Qr,o,r)}function $W(e,t){let o=Qr.find(a=>a.channels.includes(e));if(o==null)return;let r=o.channels.indexOf(e),n=r+t;Gye(o.channels,r,n)}var Pye,Dye,FW,Qr,zye,D4,$ye,UW,N4=h(()=>{"use strict";d();B4();Kt();C();Dye=null,FW=new Map,Qr=[];zye=(e,t,o)=>{let r=e[t],n=e[t+o];return r&&n},D4=(e,t)=>{let o=Qr.findIndex(r=>r.id===e);return zye(Qr,o,t)},$ye=e=>D4(e,-1)||D4(e,1),UW=(e,t)=>{let o=Qr.find(n=>n.channels.includes(e));if(o==null)return!1;let r=o.channels.indexOf(e);return zye(o.channels,r,t)}});var Hye,GW=h(()=>{"use strict";d();Hye=[1752220,3066993,3447003,10181046,15277667,15844367,15105570,15158332,9807270,6323595,1146986,2067276,2123412,7419530,11342935,12745742,11027200,10038562,9936031,5533306]});function Tit(e,t){return Ne(()=>{if(e)return Nye(e);if(t)return{id:D.genId(),name:`Pin Category ${iI()+1}`,color:10070709,collapsed:!1,channels:[t]}},[e,t])}function Iit({categoryId:e,modalProps:t,initialChannelId:o}){let r=Tit(e,o);if(!r)return null;let[n,a]=T(r.name),[s,l]=T(r.color),c=()=>{r.name=n,r.color=s,e||Bye(r),t.onClose()};return i(be,{...t,title:`${e?"Edit":"New"} Category`,actions:[{text:e?"Save":"Create",variant:"primary",onClick:c,disabled:!n}]},i("form",{className:jye("content"),onSubmit:u=>{u.preventDefault(),c()}},i("section",null,i(oe,{tag:"h5"},"Name"),i(Te,{value:n,onChange:u=>a(u)})),i("section",null,i(oe,{tag:"h5"},"Color"),i(Cit,{className:jye("color-picker"),key:r.id,defaultColor:10070709,colors:Hye,onChange:u=>l(u),value:s,renderDefaultButton:()=>null,renderCustomButton:()=>i(Pr,{color:s,onChange:u=>l(u),key:r.id,showEyeDropper:!1})}))))}var Cit,HW,jye,aI,jW=h(()=>{"use strict";d();We();GW();N4();we();le();C();Cit=he('id:"color-picker"'),HW=vr(['type:"USER_SETTINGS_MODAL_OPEN"']),jye=K("vc-pindms-modal-");aI=(e,t)=>na(async()=>(await HW(),o=>i(Iit,{categoryId:e,modalProps:o,initialChannelId:t})))});function Wye(e){let t=Mh(e),o=t||Qr.length>0;return i(P.MenuItem,{id:"vc-pin-dm",label:"Pin DMs"},!t&&i(f,null,i(P.MenuItem,{id:"vc-add-category",label:"Add Category",color:"brand",action:()=>aI(null,e)}),o&&i(P.MenuSeparator,null),Qr.map(r=>i(P.MenuItem,{key:r.id,id:`pin-category-${r.id}`,label:r.name,action:()=>Rye(e,r.id)}))),t&&i(f,null,i(P.MenuItem,{id:"vc-unpin-dm",label:"Unpin DM",color:"danger",action:()=>Lye(e)}),Ms.store.pinOrder===1&&UW(e,-1)&&i(P.MenuItem,{id:"move-up",label:"Move Up",action:()=>$W(e,-1)}),Ms.store.pinOrder===1&&UW(e,1)&&i(P.MenuItem,{id:"move-down",label:"Move Down",action:()=>$W(e,1)})))}var Eit,Dit,Kye,Qye=h(()=>{"use strict";d();Fo();B4();N4();C();jW();Eit=(e,t)=>{wt("leave-channel",e)?.unshift(Wye(t.channel.id))},Dit=(e,t)=>{let o=wt("close-dm",e);if(o){let r=o.findIndex(n=>n?.props?.id==="close-dm");o.splice(r,0,Wye(t.channel.id))}},Kye={"gdm-context":Eit,"user-context":Dit}});var Zye,Mit,Ms,Tv,B4=h(()=>{"use strict";d();Eye();j();Pe();O();Be();R();le();C();Qye();jW();GW();N4();Zye=Ie("privateChannelsHeaderContainer","headerText"),Ms=M({pinOrder:{type:4,description:"Which order should pinned DMs be displayed in?",options:[{label:"Most recent message",value:0,default:!0},{label:"Custom (right click channels to reorder)",value:1}]},canCollapseDmSection:{type:3,displayName:"Can Collapse DM Section",description:"Allow uncategorised DMs section to be collapsable",default:!1},dmSectionCollapsed:{type:3,displayName:"DM Section Collapsed",description:"Collapse DM section",default:!1,hidden:!0},userBasedCategoryList:{type:7,default:{},description:""}}),Tv=S({name:"PinDMs",description:"Allows you to pin private channels to the top of your DM list. To pin/unpin or re-order pins, right click DMs",tags:["Friends","Organisation"],authors:[b.Ven,b.Aria],settings:Ms,contextMenus:Kye,patches:[{find:'"dm-quick-launcher"===',replacement:[{match:/(?<=channels:\i,)privateChannelIds:(\i)(?=,listRef:)/,replace:"privateChannelIds:$1.filter(c=>!$self.isPinned(c))"},{match:/(?<=renderRow:this\.renderRow,)sections:\[.+?1\)]/,replace:"...$self.makeProps(this,{$&})"},{match:/renderRow(?:",|=)(\i)=>{(?<=renderDM(?:",|=).+?(\i\.\i),\{channel:.+?)/,replace:"$&if($self.isChannelIndex($1.section, $1.row))return $self.renderChannel($1.section,$1.row,$2)();"},{match:/renderSection(?:",|=)(\i)=>{/,replace:"$&if($self.isCategoryIndex($1.section))return $self.renderCategory($1);"},{match:/renderSection(?:",|=).{0,300}?"span",{/,replace:"$&...$self.makeSpanProps(),"},{match:/(\.startsWith\("section-divider"\).+?return 1===)(\i)/,replace:"$1($2-$self.categoryLen())"},{match:/getRowHeight(?:",|=)\((\i),(\i)\)=>{/,replace:"$&if($self.isChannelHidden($1,$2))return 0;"},{match:/(?<=scrollTo\(\{to:\i\}\):\(\i\+=)(\d+)\*\(.+?(?=,)/,replace:"$self.getScrollOffset(arguments[0],$1,this?.props?.padding,this?.state?.preRenderedChildren,$&)"},{match:/(scrollToChannel\(\i\){.{1,300})(this\.props\.privateChannelIds)/,replace:"$1[...$2,...$self.getAllUncollapsedChannels()]"}]},{find:'.FRIENDS},"friends"',replacement:{match:/let{showLibrary:\i,/,replace:"$self.usePinnedDms();$&"}},{find:".APPLICATION_STORE&&",replacement:{match:/(?<=\i=__OVERLAY__\?\i:\[\.\.\.\i\(\),\.\.\.)\i/,replace:"$self.getAllUncollapsedChannels().concat($&.filter(c=>!$self.isPinned(c)))"}},{find:"=()=>!1,ensureChatIsVisible:",replacement:{match:/(?<=\i===\i\.ME\?)\i\.\i\.getPrivateChannelIds\(\)/,replace:"$self.getAllUncollapsedChannels().concat($&.filter(c=>!$self.isPinned(c)))"}}],sections:null,set _instance(e){this.instance=e,Mit=e},startAt:"WebpackReady",start:_W,flux:{CONNECTION_OPEN:_W},usePinnedDms:Mye,isPinned:Mh,categoryLen:iI,getSections:_ye,getAllUncollapsedChannels:Uye,requireSettingsMenu:HW,makeProps(e,{sections:t}){return this._instance=e,this.sections=t,this.sections.splice(1,0,...this.getSections()),this.instance?.props?.privateChannelIds?.length===0&&(this.sections[this.sections.length-1]=0),{sections:this.sections,chunkSize:this.getChunkSize()}},makeSpanProps(){return Ms.store.canCollapseDmSection?{onClick:()=>this.collapseDMList(),role:"button",style:{cursor:"pointer"}}:void 0},getChunkSize(){let e=this.getSections();return(e.length*40+e.reduce((o,r)=>o+=r*44,0)+256)*1.5},isCategoryIndex(e){return this.sections&&e>0&&e{let t=P4(e-1);return t?i(eo,{onClick:()=>Fye(t.id,!t.collapsed),onContextMenu:o=>{rt.openContextMenu(o,()=>i(P.Menu,{navId:"vc-pindms-header-menu",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),color:"danger","aria-label":"Pin DMs Category Menu"},i(P.MenuItem,{id:"vc-pindms-edit-category",label:"Edit Category",action:()=>aI(t.id,null)}),$ye(t.id)&&i(f,null,D4(t.id,-1)&&i(P.MenuItem,{id:"vc-pindms-move-category-up",label:"Move Up",action:()=>zW(t.id,-1)}),D4(t.id,1)&&i(P.MenuItem,{id:"vc-pindms-move-category-down",label:"Move Down",action:()=>zW(t.id,1)})),i(P.MenuSeparator,null),i(P.MenuItem,{id:"vc-pindms-delete-category",color:"danger",label:"Delete Category",action:()=>Oye(t.id)})))}},i("h2",{className:X(Zye.privateChannelsHeaderContainer,"vc-pindms-section-container",t.collapsed?"vc-pindms-collapsed":""),style:{color:`#${t.color.toString(16).padStart(6,"0")}`}},i("span",{className:Zye.headerText},t?.name??"uh oh"),i("svg",{className:"vc-pindms-collapse-icon","aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"})))):null},{noop:!0}),renderChannel(e,t,o){return H.wrap(()=>{let{channel:r,category:n}=this.getChannel(e,t,this.instance.props.channels);return!r||!n||this.isChannelHidden(e,t)?null:i(o,{channel:r,selected:this.instance.props.selectedChannelId===r.id},r.id)},{noop:!0})},getChannel(e,t,o){let r=P4(e-1);if(!r)return{channel:null,category:null};let n=M4(r)[t];return{channel:o[n],category:r}},getCategoryChannels(e){return M4(e)}})});var Yye=h(()=>{});var sI,Jye=h(()=>{"use strict";d();Yye();O();R();sI=S({name:"PlainFolderIcon",description:"Dont show the small guild icons in folders",tags:["Appearance","Customisation"],authors:[b.botato],patches:[{find:"#{intl::GUILD_FOLDER_TOOLTIP_A11Y_LABEL}",replacement:[{match:/\.slice\(0,4\).+?\]:(\i),\[\i\.\i\]:!\1/,replace:(e,t)=>`${e},"vc-plainFolderIcon-plain":!${t}`}]}]})});var Xye=h(()=>{});function Nh(e,t){return({color:o,tooltip:r,small:n})=>i(ve,{text:r},a=>i("svg",{...a,height:(t?.height??20)-(n?3:0),width:(t?.width??20)-(n?3:0),viewBox:t?.viewBox??"0 0 24 24",fill:o},i("path",{d:e})))}function Lit(e){if(e.id!==oi.getId())return;let t=ye([v1],()=>v1.getSessions());if(typeof t!="object")return null;let o=Object.values(t).sort(({status:a},{status:s})=>a===s?0:a==="online"?1:s==="online"?-1:a==="idle"?1:s==="idle"?-1:0),r=Object.values(o).reduce((a,s)=>(s.clientInfo.client!=="unknown"&&(a[s.clientInfo.client]=s.status),a),{}),{clientStatuses:n}=Yo.getState();n[L.getCurrentUser().id]=r}var Nit,Bit,Iv,Rit,qW,rm,lI,Vye=h(()=>{"use strict";d();Xye();j();O();Be();R();le();C();({useStatusFillColor:Nit}=Qo([".5625*","translate"],{useStatusFillColor:Re.byCode(".hex")})),Bit={embedded:"Embedded (Console or Game)",vr:"VR"};Iv={desktop:Nh("M4 2.5c-1.103 0-2 .897-2 2v11c0 1.104.897 2 2 2h7v2H7v2h10v-2h-4v-2h7c1.103 0 2-.896 2-2v-11c0-1.103-.897-2-2-2H4Zm16 2v9H4v-9h16Z"),web:Nh("M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93Zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39Z"),mobile:Nh("M 187 0 L 813 0 C 916.277 0 1000 83.723 1000 187 L 1000 1313 C 1000 1416.277 916.277 1500 813 1500 L 187 1500 C 83.723 1500 0 1416.277 0 1313 L 0 187 C 0 83.723 83.723 0 187 0 Z M 125 1000 L 875 1000 L 875 250 L 125 250 Z M 500 1125 C 430.964 1125 375 1180.964 375 1250 C 375 1319.036 430.964 1375 500 1375 C 569.036 1375 625 1319.036 625 1250 C 625 1180.964 569.036 1125 500 1125 Z",{viewBox:"0 0 1000 1500",height:17,width:17}),embedded:Nh("M3.06 20.4q-1.53 0-2.37-1.065T.06 16.74l1.26-9q.27-1.8 1.605-2.97T6.06 3.6h11.88q1.8 0 3.135 1.17t1.605 2.97l1.26 9q.21 1.53-.63 2.595T20.94 20.4q-.63 0-1.17-.225T18.78 19.5l-2.7-2.7H7.92l-2.7 2.7q-.45.45-.99.675t-1.17.225Zm14.94-7.2q.51 0 .855-.345T19.2 12q0-.51-.345-.855T18 10.8q-.51 0-.855.345T16.8 12q0 .51.345 .855T18 13.2Zm-2.4-3.6q.51 0 .855-.345T16.8 8.4q0-.51-.345-.855T15.6 7.2q-.51 0-.855.345T14.4 8.4q0 .51.345 .855T15.6 9.6ZM6.9 13.2h1.8v-2.1h2.1v-1.8h-2.1v-2.1h-1.8v2.1h-2.1v1.8h2.1v2.1Z",{viewBox:"0 0 24 24",height:20,width:20}),vr:Nh("M8.46 8.64a1 1 0 0 1 1 1c0 .44-.3.8-.72.92l-.11.07c-.08.06-.2.19-.2.41a.99.99 0 0 1-.98.86h-.06a1 1 0 0 1-.94-1.05l.02-.32c.05-1.06.92-1.9 1.99-1.9ZM15.55 5a5.5 5.5 0 0 1 5.15 3.67h.3a2 2 0 0 1 2 2v3.18a2 2 0 0 1-2 1.99h-.2A4.54 4.54 0 0 1 16.55 19a4.45 4.45 0 0 1-3.6-1.83 1.2 1.2 0 0 0-1.9 0 4.44 4.44 0 0 1-3.9 1.82 4.54 4.54 0 0 1-3.94-3.15H3a2 2 0 0 1-2-2v-3.18c0-1.1.9-1.99 2-1.99h.3A5.5 5.5 0 0 1 8.46 5h7.09Zm-7.1 2C6.6 7 5.06 8.5 4.97 10.41l-.02.66v3.18c0 1.43 1.05 2.66 2.34 2.74.85.06 1.63-.32 2.14-1.01a3.2 3.2 0 0 1 2.57-1.3c1 0 1.97.48 2.57 1.3.5.69 1.3 1.08 2.14 1.01 1.3-.08 2.34-1.31 2.34-2.74l-.02-3.84a3.54 3.54 0 0 0-3.49-3.43H8.45Z",{viewBox:"0 4 24 16",height:20,width:20}),suncord:Nh("M7 4a6 6 0 00-6 6v4a6 6 0 006 6h10a6 6 0 006-6v-4a6 6 0 00-6-6H7zm0 11a1 1 0 01-1-1v-1H5a1 1 0 010-2h1v-1a1 1 0 012 0v1h1a1 1 0 010 2H8v1a1 1 0 01-1 1zm10-4a1 1 0 100-2 1 1 0 000 2zm1 3a1 1 0 11-2 0 1 1 0 012 0zm0-2a1 1 0 102 0 1 1 0 00-2 0zm-3 1a1 1 0 110-2 1 1 0 010 2z",{viewBox:"0 0 24 24",height:24,width:24}),vencord:Nh("M14.8 2.7 9 3.1V47h3.3c1.7 0 6.2.3 10 .7l6.7.6V2l-4.2.2c-2.4.1-6.9.3-10 .5zm1.8 6.4c1 1.7-1.3 3.6-2.7 2.2C12.7 10.1 13.5 8 15 8c.5 0 1.2.5 1.6 1.1zM16 33c0 6-.4 10-1 10s-1-4-1-10 .4-10 1-10 1 4 1 10zm15-8v23.3l3.8-.7c2-.3 4.7-.6 6-.6H43V3h-2.2c-1.3 0-4-.3-6-.6L31 1.7V25z",{viewBox:"0 0 50 50"})},Rit=({platform:e,status:t,small:o})=>{let r=Bit[e]??e.charAt(0).toUpperCase()+e.slice(1),n=Iv[e]??Iv.desktop,{ConsoleIcon:a}=rm.store;if(e==="embedded")switch(a){case"equicord":n=Iv.embedded;break;case"suncord":n=Iv.suncord;break;case"vencord":n=Iv.vencord;break;default:n=Iv.embedded;break}return i(n,{color:Nit(t),tooltip:r,small:o})};qW=({user:e,isProfile:t,isMessage:o,isMemberList:r})=>{if(e==null||e.bot&&!rm.store.showBots)return null;Lit(e);let n=ye([Yo],()=>Yo.getClientStatus(e.id));if(!n)return null;let a=Array.from(Object.entries(n),([s,l])=>i(Rit,{key:s,platform:s,status:l,small:t||r}));return a.length?i("div",{className:X("vc-platform-indicator",t&&"vc-platform-indicator-profile",o&&"vc-platform-indicator-message"),style:{marginLeft:r?"4px":void 0}},a):null};Br("PlatformIndicators","profiles","badges");rm=M({list:{type:3,description:"Show indicators in the member list",default:!0},profiles:{type:3,description:"Show indicators in user profiles",default:!0},messages:{type:3,description:"Show indicators inside messages",default:!0},colorMobileIndicator:{type:3,description:"Whether to make the mobile indicator match the color of the user status.",default:!0,restartNeeded:!0},showBots:{type:3,description:"Whether to show platform indicators on bots",default:!1,restartNeeded:!1},ConsoleIcon:{type:4,description:"What console icon to use",restartNeeded:!0,options:[{label:"Equicord",value:"equicord",default:!0},{label:"Suncord",value:"suncord"},{label:"Vencord",value:"vencord"}]}}),lI=S({name:"PlatformIndicators",description:"Adds platform indicators (Desktop, Mobile, Web...) to users",dependencies:["MemberListDecoratorsAPI","MessageDecorationsAPI","NicknameIconsAPI"],tags:["Appearance"],authors:[b.kemo,b.TheSun,b.Nuckyz,b.Ven,F.neoarz],isModified:!0,settings:rm,renderNicknameIcon(e){return rm.store.profiles?i(qW,{user:L.getUser(e.userId),isProfile:!0}):null},renderMemberListDecorator(e){return rm.store.list?i(qW,{user:e.user,isMemberList:!0}):null},renderMessageDecoration(e){return rm.store.messages?i(qW,{user:e.message?.author,isMessage:!0}):null},patches:[{find:".Masks.STATUS_ONLINE_MOBILE",predicate:()=>rm.store.colorMobileIndicator,replacement:[{match:/\.STATUS_TYPING;switch(?=.+?(if\(\i\)return \i\.\i\.Masks\.STATUS_ONLINE_MOBILE))/,replace:".STATUS_TYPING;$1;switch"},{match:/switch\(\i\)\{case \i\.\i\.ONLINE:(if\(\i\)return\{[^}]+\})/,replace:"$1;$&"}]},{find:".AVATAR_STATUS_MOBILE_16;",predicate:()=>rm.store.colorMobileIndicator,replacement:[{match:/\i===\i\.\i\.ONLINE&&(?=.{0,70}\.AVATAR_STATUS_MOBILE_16;)/,replace:""},{match:/(?<=\(\i\.status,)(\i)(?=,\{.{0,15}isMobile:(\i))/,replace:'$2?"online":$1'},{match:/(?<=\i&&!\i)&&\i===\i\.\i\.ONLINE/,replace:""}]},{find:"}isMobileOnline(",predicate:()=>rm.store.colorMobileIndicator,replacement:{match:/(?<=\i\[\i\.\i\.MOBILE\])===\i\.\i\.ONLINE/,replace:"!= null"}}]})});var WW,ebe,Oit,Fit,tbe,_it,cI,obe=h(()=>{"use strict";d();Ba();yr();ot();O();R();C();WW=new Map,ebe=e=>lf.getDraft(e,yo.ChannelMessage),Oit=e=>new Promise(t=>{let o=new Image;o.onload=()=>t({width:o.width,height:o.height}),o.onerror=()=>t(null),o.src=e}),Fit=async e=>await Promise.all(el.getUploads(e,yo.ChannelMessage).map(async t=>{let{isImage:o,filename:r,spoiler:n,item:{file:a}}=t,s=URL.createObjectURL(a),l={id:fd(),filename:n?"SPOILER_"+r:r,content_type:void 0,size:t.getSize(),spoiler:n,url:s+"#",proxy_url:s+"#"};if(o){let c=await Oit(s);c&&(l.width=c.width,l.height=c.height)}return{attachment:l,objectURL:s}})),tbe=({height:e=20,width:t=20,className:o})=>i(ea,{width:t,height:e,className:o,style:{scale:"1.096",translate:"0 -1px"}}),_it=({isAnyChat:e,isEmpty:t,type:{attachments:o},channel:{id:r}})=>{let n=ye([lf],()=>ebe(r));if(!e)return null;let a=o&&el.getUploads(r,yo.ChannelMessage).length>0;return!(!t&&n?.length>0)&&!a?null:i(Un,{tooltip:"Preview Message",onClick:async()=>{let l=a?await Fit(r):void 0,c=Ft(r,{content:ebe(r),author:L.getCurrentUser(),attachments:l?.map(u=>u.attachment)});l&&WW.set(c.id,l.map(u=>u.objectURL))},buttonProps:{style:{translate:"0 2px"}}},i(tbe,null))},cI=S({name:"PreviewMessage",description:"Lets you preview your message before sending it.",dependencies:["ChatInputButtonAPI"],tags:["Chat","Utility"],authors:[b.Aria],startAt:"Init",chatBarButton:{icon:tbe,render:_it},flux:{MESSAGE_DELETE({id:e}){let t=WW.get(e);t&&(t.forEach(o=>URL.revokeObjectURL(o)),WW.delete(e))}}})});function nbe({height:e=24,width:t=24,className:o="icon"}){return i("svg",{className:o,height:e,width:t,viewBox:"0 0 24 24",fill:"currentColor"},i("path",{d:"M12 2C6.486 2 2 6.486 2 12C2 17.515 6.486 22 12 22C14.039 22 15.993 21.398 17.652 20.259L16.521 18.611C15.195 19.519 13.633 20 12 20C7.589 20 4 16.411 4 12C4 7.589 7.589 4 12 4C16.411 4 20 7.589 20 12V12.782C20 14.17 19.402 15 18.4 15L18.398 15.018C18.338 15.005 18.273 15 18.209 15H18C17.437 15 16.6 14.182 16.6 13.631V12C16.6 9.464 14.537 7.4 12 7.4C9.463 7.4 7.4 9.463 7.4 12C7.4 14.537 9.463 16.6 12 16.6C13.234 16.6 14.35 16.106 15.177 15.313C15.826 16.269 16.93 17 18 17L18.002 16.981C18.064 16.994 18.129 17 18.195 17H18.4C20.552 17 22 15.306 22 12.782V12C22 6.486 17.514 2 12 2ZM12 14.599C10.566 14.599 9.4 13.433 9.4 11.999C9.4 10.565 10.566 9.399 12 9.399C13.434 9.399 14.6 10.565 14.6 11.999C14.6 13.433 13.434 14.599 12 14.599Z"}))}var uI,rbe=h(()=>{"use strict";d();O();_e();R();C();uI=S({name:"QuickMention",authors:[b.kemo],description:"Adds a quick mention button to the message actions bar",dependencies:["MessagePopoverAPI"],tags:["Chat","Shortcuts"],messagePopoverButton:{icon:nbe,render(e){let t=W.getChannel(e.channel_id);return t.guild_id&&!ht.can(ct.SEND_MESSAGES,t)?null:{label:"Quick Mention",icon:nbe,message:e,channel:t,onClick:()=>tr(`<@${e.author.id}> `)}}}})});function Uit({messageId:e,_isQuickEdit:t}){t||(L4=e)}function zit({message:e,_isQuickReply:t}){t||(R4=e.id)}function ibe(e){let t=e.key==="ArrowUp";!t&&e.key!=="ArrowDown"||!$it(e)||Git(e)||(e.preventDefault(),e.shiftKey?qit(t):jit(t))}function abe(e,t){let o=document.getElementById("message-content-"+t);if(!o)return;let r=Math.max(document.documentElement.clientHeight,window.innerHeight),n=o.getBoundingClientRect();(n.bottom<150||n.top-r>=-150)&&fo.jumpToMessage({channelId:e,messageId:t,flash:!1,jumpType:"INSTANT"})}function sbe(e,t){let o=lt.getMessages(Fe.getChannelId())._array,r=L.getCurrentUser().id,n=Ve(Au.name);o=o.filter(s=>!(s.deleted||!t&&s.author.id!==r||!jS.REPLYABLE.has(s.type)||s.hasFlag(64)||KW.store.ignoreBlockedAndIgnored&&qe.isBlockedOrIgnored(s.author.id)||n&&Au.isSuppressed(s).suppressed));let a=s=>{if(s===null)return o[o.length-1];let l=o.findIndex(u=>u.id===s);if(l===-1)return o[o.length-1];let c=e?l-1:l+1;return o[c]??null};if(t){let s=a(R4);return R4=s?.id??null,s}else{let s=a(L4);return L4=s?.id??null,s}}function Hit(e){switch(KW.store.shouldMention){case 2:return Ve(Ic.name)?Ic.shouldMention(e,!1):!0;case 0:return!1;default:return!0}}function jit(e){let t=W.getChannel(Fe.getChannelId());if(t.guild_id&&!ht.can(ct.SEND_MESSAGES,t))return;let o=sbe(e,!0);if(!o)return void Q.dispatch({type:"DELETE_PENDING_REPLY",channelId:Fe.getChannelId()});let r=W.getChannel(o.channel_id),n=L.getCurrentUser().id;Q.dispatch({type:"CREATE_PENDING_REPLY",channel:r,message:o,shouldMention:Hit(o),showMentionToggle:!r.isPrivate()&&o.author.id!==n,_isQuickReply:!0}),sc.dispatchToLastSubscribed("TEXTAREA_FOCUS"),abe(r.id,o.id)}function qit(e){let t=W.getChannel(Fe.getChannelId());if(t.guild_id&&!ht.can(ct.SEND_MESSAGES,t))return;let o=sbe(e,!1);if(!o)return Q.dispatch({type:"MESSAGE_END_EDIT",channelId:Fe.getChannelId()});Q.dispatch({type:"MESSAGE_START_EDIT",channelId:o.channel_id,messageId:o.id,content:o.content,_isQuickEdit:!0}),abe(o.channel_id,o.id)}var R4,L4,KW,dI,$it,Git,lbe=h(()=>{"use strict";d();Jt();j();MT();iT();O();R();co();C();R4=null,L4=null,KW=M({shouldMention:{type:4,description:"Ping reply by default",options:[{label:"Follow NoReplyMention plugin (if enabled)",value:2,default:!0},{label:"Enabled",value:1},{label:"Disabled",value:0}]},ignoreBlockedAndIgnored:{type:3,description:"Ignore messages by blocked/ignored users when navigating",default:!0}}),dI=S({name:"QuickReply",authors:[b.fawn,b.Ven,b.pylix],description:"Reply to (ctrl + up/down) and edit (ctrl + shift + up/down) messages via keybinds",tags:["Chat","Shortcuts"],settings:KW,start(){document.addEventListener("keydown",ibe)},stop(){document.removeEventListener("keydown",ibe)},flux:{DELETE_PENDING_REPLY(){R4=null},MESSAGE_END_EDIT(){L4=null},CHANNEL_SELECT(){R4=null,L4=null},MESSAGE_START_EDIT:Uit,CREATE_PENDING_REPLY:zit}});$it=e=>Go?e.metaKey:e.ctrlKey,Git=e=>e.altKey||!Go&&e.metaKey});var QW,pI,cbe=h(()=>{"use strict";d();O();R();C();pI=S({name:"ReactErrorDecoder",description:'Replaces "Minified React Error" with the actual error.',tags:["Developers"],authors:[b.Cyn,b.maisymoe],patches:[{find:"React has blocked a javascript: URL as a security precaution.",replacement:{match:/"https:\/\/react.dev\/errors\/"\+\i;/,replace:"$&const vcDecodedError=$self.decodeError(...arguments);if(vcDecodedError)return vcDecodedError;"}}],async start(){let e=`https://raw.githubusercontent.com/facebook/react/v${V.version}/scripts/error-codes/codes.json`;QW=await fetch(e).then(t=>t.json()).catch(t=>console.error(`[ReactErrorDecoder] Failed to fetch React error codes `,t))},stop(){QW=void 0},decodeError(e,...t){let o=0;return QW?.[e]?.replace(/%s/g,()=>{let r=t[o];return o++,r})}})});var ube=h(()=>{});function Wit(){let e=[];Object.values($e.getGuilds()).forEach(t=>{Da.getChannels(t.id).SELECTABLE.concat(Da.getChannels(t.id).VOCAL).concat(Object.values(cf.getActiveJoinedThreadsForGuild(t.id)).flatMap(o=>Object.values(o))).forEach(o=>{ti.hasUnread(o.channel.id)&&e.push({channelId:o.channel.id,messageId:ti.lastMessageId(o.channel.id),readStateType:0})})}),Q.dispatch({type:"BULK_ACK",context:"APP",channels:e})}var Kit,mI,dbe=h(()=>{"use strict";d();ube();Tf();Tt();Pe();O();R();C();Kit=()=>i(Ys,{variant:"secondary",onClick:Wit,className:"vc-ranb-button"},"Read All"),mI=S({name:"ReadAllNotificationsButton",description:"Read all server notifications with a single button click!",tags:["Notifications","Shortcuts"],authors:[b.kemo,F.KrystalSkull],dependencies:["ServerListAPI"],renderReadAllButton:H.wrap(Kit,{noop:!0}),start(){jl(0,this.renderReadAllButton)},stop(){ll(0,this.renderReadAllButton)}})});var xl,fI=h(()=>{"use strict";d();j();R();xl=M({notices:{type:3,description:"Also show a notice at the top of your screen when removed (use this if you don't want to miss any notifications).",default:!1},offlineRemovals:{type:3,description:"Notify you when starting discord if you were removed while offline.",default:!0},friends:{type:3,description:"Notify when a friend removes you",default:!0},friendRequestCancels:{type:3,description:"Notify when a friend request is cancelled",default:!0},servers:{type:3,description:"Notify when removed from a server",default:!0},groups:{type:3,description:"Notify when removed from a group chat",default:!0}})});async function Qit(){MG(["relationship-notifier-guilds","relationship-notifier-groups","relationship-notifier-friends"])}async function ZW(){if(await Qit(),L.getCurrentUser()==null)return;let[e,t,o]=await PG([mbe(),fbe(),gbe()]);if(await Promise.all([gI(),hI(),O4()]),xl.store.offlineRemovals){if(xl.store.groups&&t?.size)for(let[r,n]of t)Dv.has(r)||im(`You are no longer in the group ${n.name}.`,n.iconURL);if(xl.store.servers&&e?.size)for(let[r,n]of e)!Ev.has(r)&&!F0.isUnavailable(r)&&im(`You are no longer in the server ${n.name}.`,n.iconURL);if(xl.store.friends&&o?.friends.length)for(let r of o.friends){if(Bh.friends.includes(r))continue;let n=await Xi.getUser(r).catch(()=>{});n&&im(`You are no longer friends with ${Tp(n)}.`,n.getAvatarURL(void 0,void 0,!1),()=>Ko(n.id))}if(xl.store.friendRequestCancels&&o?.requests?.length)for(let r of o.requests){if(Bh.requests.includes(r)||[1,2,4].includes(qe.getRelationshipType(r)))continue;let n=await Xi.getUser(r).catch(()=>{});n&&im(`Friend request from ${Tp(n)} has been revoked.`,n.getAvatarURL(void 0,void 0,!1),()=>Ko(n.id))}}}function im(e,t,o){xl.store.notices&&sa(e,"OK",()=>au()),At({title:"Relationship Notifier",body:e,icon:t,onClick:o})}function hbe(e){return Ev.get(e)}function YW(e){Ev.delete(e),gI()}async function gI(){Ev.clear();let e=L.getCurrentUser().id;for(let[t,{name:o,icon:r}]of Object.entries($e.getGuilds()))bt.isMember(t,e)&&Ev.set(t,{id:t,name:o,iconURL:r&&`https://cdn.discordapp.com/icons/${t}/${r}.png`});await Ct(mbe(),Ev)}function xbe(e){return Dv.get(e)}function JW(e){Dv.delete(e),hI()}async function hI(){Dv.clear();for(let{type:e,id:t,name:o,rawRecipients:r,icon:n}of W.getSortedPrivateChannels())e===3&&Dv.set(t,{id:t,name:o||r.map(a=>a.username).join(", "),iconURL:n&&`https://cdn.discordapp.com/channel-icons/${t}/${n}.png`});await Ct(fbe(),Dv)}async function O4(){Bh.friends=[],Bh.requests=[];let e=qe.getMutableRelationships();for(let[t,o]of e)switch(o){case 1:Bh.friends.push(t);break;case 3:Bh.requests.push(t);break}await Ct(gbe(),Bh)}var Ev,Dv,Bh,mbe,fbe,gbe,XW=h(()=>{"use strict";d();Io();Af();Fa();_e();co();C();fI();Ev=new Map,Dv=new Map,Bh={friends:[],requests:[]},mbe=()=>`relationship-notifier-guilds-${L.getCurrentUser().id}`,fbe=()=>`relationship-notifier-groups-${L.getCurrentUser().id}`,gbe=()=>`relationship-notifier-friends-${L.getCurrentUser().id}`});async function Sbe({relationship:{type:e,id:t}}){if(VW===t){VW=void 0;return}let o=await Xi.getUser(t).catch(()=>null);if(o)switch(e){case 1:xl.store.friends&&im(`${Tp(o)} removed you as a friend.`,o.getAvatarURL(void 0,void 0,!1),()=>Ko(o.id));break;case 3:xl.store.friendRequestCancels&&im(`A friend request from ${Tp(o)} has been removed.`,o.getAvatarURL(void 0,void 0,!1),()=>Ko(o.id));break}}function wbe({guild:{id:e,unavailable:t}}){if(!xl.store.servers||t||F0.isUnavailable(e))return;if(eK===e){YW(e),eK=void 0;return}let o=hbe(e);o&&(YW(e),im(`You were removed from the server ${o.name}.`,o.iconURL))}function Abe({channel:{id:e,type:t}}){if(!xl.store.groups||t!==3)return;if(tK===e){JW(e),tK=void 0;return}let o=xbe(e);o&&(JW(e),im(`You were removed from the group ${o.name}.`,o.iconURL))}var VW,eK,tK,vbe,ybe,bbe,kbe=h(()=>{"use strict";d();_e();co();C();fI();XW();vbe=e=>VW=e,ybe=e=>eK=e,bbe=e=>tK=e});var xI,Cbe=h(()=>{"use strict";d();O();R();kbe();fI();XW();xI=S({name:"RelationshipNotifier",description:"Notifies you when a friend, group chat, or server removes you.",tags:["Friends","Notifications"],authors:[b.nick],settings:xl,patches:[{find:"removeRelationship:(",replacement:{match:/(removeRelationship:\((\i),\i,\i\)=>)/,replace:"$1($self.removeFriend($2),0)||"}},{find:"async leaveGuild(",replacement:{match:/(leaveGuild\((\i)\){)/,replace:"$1$self.removeGuild($2);"}},{find:"},closePrivateChannel(",replacement:{match:/(closePrivateChannel\((\i)\){)/,replace:"$1$self.removeGroup($2);"}}],flux:{GUILD_CREATE:gI,GUILD_DELETE:wbe,CHANNEL_CREATE:hI,CHANNEL_DELETE:Abe,RELATIONSHIP_ADD:O4,RELATIONSHIP_UPDATE:O4,RELATIONSHIP_REMOVE(e){Sbe(e),O4()},CONNECTION_OPEN:ZW},async start(){setTimeout(()=>{ZW()},5e3)},removeFriend:vbe,removeGroup:bbe,removeGuild:ybe})});function Tbe(e,t){open(t+encodeURIComponent(e.trim()),"_blank")}function Zit(e){let{customEngineName:t,customEngineURL:o,replacementEngine:r}=Ebe.store,n=!!(t&&o),a=r!=="off"&&!(r==="custom"&&!n),s={...Ibe};if(n&&(s[t]=o),a){let l=r==="custom"&&n?t:r;return i(P.MenuItem,{label:`Search with ${l}`,key:"search-custom-engine",id:"vc-search-custom-engine",action:()=>Tbe(e,s[l])})}return i(P.MenuItem,{label:"Search Text",key:"search-text",id:"vc-search-text",leadingAccessory:{type:"icon",icon:dS}},Object.keys(s).map(l=>{let c="vc-search-content-"+l;return i(P.MenuItem,{key:c,id:c,label:l,leadingAccessory:{type:"image",src:`https://icons.duckduckgo.com/ip3/${new URL(s[l]).hostname}.ico`},action:()=>Tbe(e,s[l])})}))}var Ibe,Ebe,Yit,vI,Dbe=h(()=>{"use strict";d();Fo();j();ot();O();R();C();Ibe={Google:"https://www.google.com/search?q=",DuckDuckGo:"https://duckduckgo.com/?q=",Brave:"https://search.brave.com/search?q=",Bing:"https://www.bing.com/search?q=",Yahoo:"https://search.yahoo.com/search?p=",Yandex:"https://yandex.com/search/?text=",GitHub:"https://github.com/search?q=",Reddit:"https://www.reddit.com/search?q=",Wikipedia:"https://wikipedia.org/w/index.php?search=",Startpage:"https://www.startpage.com/sp/search?query=",Kagi:"https://kagi.com/search?q="},Ebe=M({customEngineName:{description:"Name of the custom search engine",type:0,placeholder:"Google"},customEngineURL:{displayName:"Custom Engine URL",description:"The URL of your Engine",type:0,placeholder:"https://google.com/search?q="},replacementEngine:{description:"Replace with a specific search engine instead of adding a menu",type:4,options:[{label:"Off",value:"off",default:!0},{label:"Custom Engine",value:"custom"},...Object.keys(Ibe).map(e=>({label:e,value:e}))]}});Yit=(e,t)=>{let o=document.getSelection()?.toString();if(!o)return;let r=wt("search-google",e);if(r){let n=r.findIndex(a=>a?.props?.id==="search-google");n!==-1&&(r[n]=Zit(o))}};oo("ReplaceGoogleSearch","Search");vI=S({name:"ReplaceGoogleSearch",description:"Replaces the Google search with different Engine(s)",tags:["Utility","Customisation"],authors:[b.Moxxie,b.Ethan],settings:Ebe,contextMenus:{message:Yit}})});var Pbe=h(()=>{});function Mbe(e){return i("i",{className:Jit.separator,"aria-hidden":!0,...e})}function Xit({referencedMessage:e,baseMessage:t}){if(e.state!==0)return null;let o=e.message.timestamp,r=t.timestamp;return i(Hr,{className:"vc-reply-timestamp",compact:pd.isSameDay(o,r),timestamp:o,isInline:!1},i(Mbe,null,"["),pd.isSameDay(o,r)?pd.dateFormat(o,"LT"):pd.calendarFormat(o),i(Mbe,null,"]"))}var Jit,yI,Nbe=h(()=>{"use strict";d();Pbe();Pe();O();R();le();C();Jit=Ie("separator","latin24CompactTimeStamp");yI=S({name:"ReplyTimestamp",description:"Shows a timestamp on replied-message previews",tags:["Chat","Appearance"],authors:[b.Kyuuhachi],patches:[{find:"#{intl::REPLY_QUOTE_MESSAGE_NOT_LOADED}",replacement:{match:/\.onClickReply,.+?}\),(?=\i,\i,\i\])/,replace:"$&$self.ReplyTimestamp(arguments[0]),"}}],ReplyTimestamp:H.wrap(Xit,{noop:!0})})});var Vit,eat,bI,Bbe=h(()=>{"use strict";d();O();R();le();Vit=Ie("spoilerContent","hidden"),eat=Ie("messagesWrapper","navigationDescription"),bI=S({name:"RevealAllSpoilers",description:"Reveal all spoilers in a message by Ctrl-clicking a spoiler, or in the chat with Ctrl+Shift-click",authors:[b.whqwert],tags:["Accessibility","Chat","Shortcuts","Utility"],patches:[{find:".removeObscurity,",replacement:{match:/(?<=removeObscurity(?:",|=)(\i)=>{)/,replace:(e,t)=>`$self.reveal(${t});`}}],reveal(e){let{ctrlKey:t,metaKey:o,shiftKey:r,target:n}=e;if(!(Go?o:t))return;let{spoilerContent:a,hidden:s}=Vit,{messagesWrapper:l}=eat,c=r?document.querySelector(`div.${l}`):n.parentElement;for(let u of c.querySelectorAll(`span.${a}.${s}`))u.click()}})});function Rbe(e,t){open(t+encodeURIComponent(e),"_blank")}function Lbe(e){return i(P.MenuItem,{label:"Search Image",key:"search-image",id:"search-image",leadingAccessory:{type:"icon",icon:dS}},Object.keys(SI).map((t,o)=>{let r="search-image-"+t;return i(P.MenuItem,{key:r,id:r,label:t,leadingAccessory:{type:"image",src:`https://icons.duckduckgo.com/ip3/${new URL(SI[t]).host}.ico`},action:()=>Rbe(e,SI[t])})}),i(P.MenuItem,{key:"search-image-all",id:"search-image-all",label:"All",leadingAccessory:{type:"icon",icon:gn},action:()=>Object.values(SI).forEach(t=>Rbe(e,t))}))}var SI,tat,oat,wI,Obe=h(()=>{"use strict";d();Fo();ot();O();R();C();SI={Google:"https://lens.google.com/uploadbyurl?url=",Yandex:"https://yandex.com/images/search?rpt=imageview&url=",SauceNAO:"https://saucenao.com/search.php?url=",IQDB:"https://iqdb.org/?url=",Bing:"https://www.bing.com/images/search?view=detailv2&iss=sbi&q=imgurl:",TinEye:"https://www.tineye.com/search?url=",ImgOps:"https://imgops.com/start?url="};tat=(e,t)=>{if(t?.reverseImageSearchType!=="img")return;let o=t.itemHref??t.itemSrc;wt("copy-link",e)?.push(Lbe(o))},oat=(e,t)=>{if(!t?.src)return;(wt("copy-native-link",e)??e).push(Lbe(t.src))},wI=S({name:"ReverseImageSearch",description:"Adds ImageSearch to image context menus",tags:["Media","Utility"],authors:[b.Ven,b.Nuckyz],searchTerms:["ImageUtilities"],patches:[{find:"#{intl::MESSAGE_ACTIONS_MENU_LABEL}),shouldHideMediaOptions:",replacement:{match:/favoriteableType:\i,(?<=(\i)\.getAttribute\("data-type"\).+?)/,replace:(e,t)=>`${e}reverseImageSearchType:${t}.getAttribute("data-role"),`}}],contextMenus:{message:tat,"image-context":oat}})});var Fbe=h(()=>{});async function oK(){Rr=await Ube()??{}}async function Ube(){return(await vt(_be))?.[L.getCurrentUser()?.id]}async function Dc(){return(await Ube())?.token}async function F4(e){return Es(_be,t=>(t??={},Rr=t[L.getCurrentUser().id]??={},e.token&&(Rr.token=e.token),e.user&&(Rr.user=e.user),t))}function Qf(e){ce(t=>i(ws,{...t,scopes:["identify"],responseType:"code",redirectUri:"https://manti.vendicated.dev/api/reviewdb/auth",permissions:0n,clientId:"915703782174752809",cancelCompletesFlow:!1,callback:async o=>{try{let r=new URL(o.location);r.searchParams.append("clientMod","vencord");let n=await fetch(r,{headers:{Accept:"application/json"}});if(!n.ok){let{message:s}=await n.json();ne(s??"An error occured while authorizing",D.Type.FAILURE);return}let{token:a}=await n.json();F4({token:a}),ne("Successfully logged in!",D.Type.SUCCESS),e?.()}catch(r){new ie("ReviewDB").error("Failed to authorize",r)}}}))}var _be,Rr,am=h(()=>{"use strict";d();Io();He();C();_be="rdb-auth",Rr={}});var Pv=h(()=>{"use strict";d()});function zbe(e,t){let o=L.getCurrentUser().id;return o===e||t.sender.discordID===o||Rr.user?.type===1}function $be(e,t){let o=L.getCurrentUser().id;return e===o&&t.sender.discordID!==o}function Gbe(e){return e.sender.discordID!==L.getCurrentUser().id}function Ai(e,t=D.Type.MESSAGE){D.show({id:D.genId(),message:e,type:t,options:{position:D.Position.BOTTOM}})}var Ho,sm=h(()=>{"use strict";d();we();C();am();Pv();Ho=K("vc-rdb-")});function nat(e){return i(ve,{text:"Unblock user"},t=>i("div",{...t,role:"button",onClick:e.onClick,className:Ho("block-modal-unblock")},i("svg",{height:"20",viewBox:"0 -960 960 960",width:"20",fill:"var(--status-danger)"},i("path",{d:"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q54 0 104-17.5t92-50.5L228-676q-33 42-50.5 92T160-480q0 134 93 227t227 93Zm252-124q33-42 50.5-92T800-480q0-134-93-227t-227-93q-54 0-104 17.5T284-732l448 448Z"}))))}function rat({user:e,isBusy:t,setIsBusy:o}){let[r,n]=T(!1);return r?null:i("div",{className:Ho("block-modal-row")},i("img",{className:Ho("block-modal-avatar"),src:e.profilePhoto,alt:""}),i(U,{className:Ho("block-modal-username")},e.username),i(nat,{onClick:t?void 0:async()=>{o(!0);try{await kI(e.discordID),n(!0)}finally{o(!1)}}}))}function iat(){let[e,t]=T(!1),[o,r,n]=Ro(Hbe,{onError:a=>new ie("ReviewDB").error("Failed to fetch blocks",a),fallbackValue:[]});return n?null:r?i(U,null,"Failed to fetch blocks: $",String(r)):o.length?i(f,null,o.map(a=>i(rat,{key:a.discordID,user:a,isBusy:e,setIsBusy:t}))):i(U,null,"No blocked users.")}function AI(){ce(e=>i(be,{...e,title:"Blocked Users"},i("div",{className:Ho("block-modal")},Rr.token?i(iat,null):i(U,null,"You are not logged into ReviewDB!"))))}var nK=h(()=>{"use strict";d();Je();am();Mv();sm();He();Kt();C()});var lm,_4=h(()=>{"use strict";d();j();Tt();_e();R();am();nK();sm();lm=M({authorize:{type:6,component:()=>i(de,{onClick:()=>Qf()},"Authorize with ReviewDB")},notifyReviews:{type:3,description:"Notify about new reviews on startup",default:!0},showWarning:{type:3,description:"Display warning to be respectful at the top of the reviews list",default:!0},hideTimestamps:{type:3,description:"Hide timestamps on reviews",default:!1},hideBlockedUsers:{type:3,description:"Hide reviews from blocked users",default:!0},buttons:{type:6,component:()=>i("div",{className:Ho("button-grid")},i(de,{onClick:AI},"Manage Blocked Users"),i(de,{variant:"positive",onClick:()=>{VencordNative.native.openExternal("https://github.com/sponsors/mantikafasi")}},"Support ReviewDB development"),i(de,{variant:"link",onClick:async()=>{let e="https://reviewdb.mantikafasi.dev",t=await Dc();t&&(e+="/api/redirect?token="+encodeURIComponent(t)),VencordNative.native.openExternal(e)}},"ReviewDB website"),i(de,{variant:"link",onClick:()=>Yi("eWPBSbvznt")},"ReviewDB Support Server"))}}).withPrivateSettings()});async function Ud(e,t={}){let o={Accept:"application/json",Authorization:await Dc()??"",...t.headers};t.body&&(o["Content-Type"]="application/json");let r=await fetch(jbe+e,{...t,headers:o}).catch(a=>(Ai("Network error: Failed to connect to ReviewDB.",D.Type.FAILURE),null));if(!r)return null;let n=await r.json().catch(()=>null);if(!r.ok){let a=n?.message??`ReviewDB: Request failed with status ${r.status}`;return Ai(a,D.Type.FAILURE),null}return n}async function CI(e,{limit:t,offset:o=0,fetchVotes:r=!1}={}){let n=0;lm.store.showWarning||(n|=aat);let a=new URLSearchParams;n&&a.append("flags",String(n)),o&&a.append("offset",String(o)),t&&a.append("limit",String(t));let s=r?sat(e).catch(()=>[]):Promise.resolve([]),l=await fetch(`${jbe}/users/${e}/reviews?${a}`),c=l.ok?await l.json():{message:l.status===429?"You are sending requests too fast. Wait a few seconds and try again.":"An Error occured while fetching reviews. Please try again later.",reviews:[],updated:!1,hasNextPage:!1,reviewCount:0,hasOptedOut:!1};if(!l.ok)return Ai(c.message,D.Type.FAILURE),{...c,reviews:[{id:0,comment:c.message,star:0,timestamp:0,type:3,sender:{id:0,username:"ReviewDB",profilePhoto:"https://cdn.discordapp.com/avatars/1134864775000629298/3f87ad315b32ee464d84f1270c8d1b37.png?size=256&format=webp&quality=lossless",discordID:"1134864775000629298",badges:[]}}]};if(!r||c.reviews.length===0)return c;let u=await s;if(u.length===0)return c;let p=new Map;for(let m of u)p.set(m.reviewID,m.isUpvote);return c.reviews=c.reviews.map(m=>({...m,userVote:p.get(m.id)??null})),c}async function sat(e){return await Dc()?(await Ud(`/users/${e}/reviews/votes`))?.votes??[]:[]}async function qbe(e){if(!await Dc())return Ai("Please authorize to add a review."),Qf(),null;let o=await Ud(`/users/${e.userid}/reviews`,{method:"PUT",body:JSON.stringify(e)});return o?.message&&Ai(o.message),o}async function Wbe(e){let t=await Ud(`/users/${e}/reviews`,{method:"DELETE",body:JSON.stringify({reviewid:e})});return t?.message&&Ai(t.message),t}async function Kbe(e){let t=await Ud("/reports",{method:"PUT",body:JSON.stringify({reviewid:e})});t?.message&&Ai(t.message)}async function Qbe(e,t){return await Dc()?!!await Ud(`/reviews/${e}/vote`,{method:"POST",body:JSON.stringify({isUpvote:t})}):(Ai("Please authorize to vote on reviews."),Qf(),!1)}async function Zbe(e){return await Dc()?!!await Ud(`/reviews/${e}/vote`,{method:"DELETE"}):(Ai("Please authorize to vote on reviews."),Qf(),!1)}async function Ybe(e,t){if(await Ud("/blocks",{method:"PATCH",body:JSON.stringify({action:e,discordId:t})})&&(Ai(`Successfully ${e}ed user`,D.Type.SUCCESS),Rr?.user?.blockedUsers)){let r=e==="block"?[...Rr.user.blockedUsers,t]:Rr.user.blockedUsers.filter(n=>n!==t);F4({user:{...Rr.user,blockedUsers:r}})}}async function Hbe(){return await Ud("/blocks")??[]}function Xbe(){return Ud("/users",{method:"POST"})}async function Vbe(e){return await Ud(`/notifications?id=${e}`,{method:"PATCH"})}var jbe,U4,aat,Jbe,kI,Mv=h(()=>{"use strict";d();C();am();Pv();_4();sm();jbe="https://manti.vendicated.dev/api/reviewdb",U4=50,aat=2;Jbe=e=>Ybe("block",e),kI=e=>Ybe("unblock",e)});function e2e({onClick:e}){return i(ve,{text:"Delete Review"},t=>i("div",{...t,className:X(TI.button,TI.dangerous),onClick:e,role:"button"},i(hr,{width:"20",height:"20"})))}function t2e({onClick:e}){return i(ve,{text:"Report Review"},t=>i("div",{...t,className:TI.button,onClick:e,role:"button"},i("svg",{width:"20",height:"20",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M20,6.002H14V3.002C14,2.45 13.553,2.002 13,2.002H4C3.447,2.002 3,2.45 3,3.002V22.002H5V14.002H10.586L8.293,16.295C8.007,16.581 7.922,17.011 8.076,17.385C8.23,17.759 8.596,18.002 9,18.002H20C20.553,18.002 21,17.554 21,17.002V7.002C21,6.45 20.553,6.002 20,6.002Z"}))))}function o2e({onClick:e,isBlocked:t}){return i(ve,{text:`${t?"Unblock":"Block"} user`},o=>i("div",{...o,className:TI.button,onClick:e,role:"button"},i("svg",{height:"20",viewBox:"0 -960 960 960",width:"20",fill:"currentColor"},t?i("path",{d:"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"}):i("path",{d:"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q54 0 104-17.5t92-50.5L228-676q-33 42-50.5 92T160-480q0 134 93 227t227 93Zm252-124q33-42 50.5-92T800-480q0-134-93-227t-227-93q-54 0-104 17.5T284-732l448 448Z"}))))}var TI,n2e=h(()=>{"use strict";d();ot();Be();le();C();TI=Ie("button","wrapper","disabled","separator","dangerous")});function II(e){let t=e.redirectURL?B0:o=>i("span",{...o,role:"button"},o.children);return i(ve,{text:e.name},({onMouseEnter:o,onMouseLeave:r})=>i(t,{className:Ho("blocked-badge"),href:e.redirectURL,onClick:e.onClick},i("img",{className:Ho("badge"),width:"22px",height:"22px",onMouseEnter:o,onMouseLeave:r,src:e.icon,alt:e.description})))}var r2e=h(()=>{"use strict";d();sm();C()});function G4({review:e,refetch:t,profileId:o}){let[r,n]=T(!1),[a,s]=T(e.userVote??null),[l,c]=T(e.score??0),[u,p]=T(!1);G(()=>{s(e.userVote??null),c(e.score??0)},[e.score,e.userVote]);function m(){Ko(e.sender.discordID)}function g(){ce(k=>i(Dn,{...k,title:"Are you sure?",subtitle:"Do you really want to delete this review?",confirmText:"Delete",cancelText:"Nevermind",onConfirm:async()=>{if(!await Dc())return Ai("You must be logged in to delete reviews.");await Wbe(e.id)&&t()}}))}function x(){ce(k=>i(Dn,{...k,title:"Are you sure?",subtitle:"Do you really want to report this review?",confirmText:"Report",cancelText:"Nevermind",onConfirm:async()=>{if(!await Dc())return Ai("You must be logged in to report reviews.");await Kbe(e.id)}}))}let v=Rr?.user?.blockedUsers?.includes(e.sender.discordID)??!1;function y(){if(v)return kI(e.sender.discordID);ce(k=>i(Dn,{...k,title:"Are you sure?",subtitle:"Do you really want to block this user? They will be unable to leave further reviews on your profile. You can unblock users in the plugin settings.",confirmText:"Block",cancelText:"Nevermind",onConfirm:async()=>{if(!await Dc())return Ai("You must be logged in to block users.");await Jbe(e.sender.discordID)}}))}async function A(k){if(!u){if(e.sender.discordID===Rr.user?.discordID)return Ai("You cannot vote on your own review.");p(!0);try{if(a===k){await Zbe(e.id)&&(s(null),c(w=>w+(k?-1:1)));return}if(await Qbe(e.id,k)){let w=a==null?k?1:-1:k?2:-2;s(k),c(I=>I+w)}}finally{p(!1)}}}return i("div",{className:X(Ho("review"),z4.cozyMessage,Nv.wrapper,z4.message,z4.groupStart,Nv.cozy),style:{marginLeft:"0px",paddingLeft:"52px"}},e.id!==0&&i("div",{className:Ho("vote-column")},i("span",{className:X(Ho("vote-column-score"),l>0&&Ho("vote-column-score-positive"),l<0&&Ho("vote-column-score-negative"))},l),i("div",{className:Ho("vote-column-buttons")},i("button",{className:X(Ho("vote-column-button"),!!a&&Ho("vote-column-up-selected")),disabled:u,onClick:()=>A(!0),type:"button"},i("svg",{height:"20",viewBox:"0 0 12 12",width:"20",fill:"none"},i("path",{d:"M3 7.5 6 4.5l3 3",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.8"}))),i("button",{className:X(Ho("vote-column-button"),a===!1&&Ho("vote-column-down-selected")),disabled:u,onClick:()=>A(!1),type:"button"},i("svg",{height:"20",viewBox:"0 0 12 12",width:"20",fill:"none"},i("path",{d:"M3 4.5 6 7.5l3-3",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.8"}))))),i("img",{className:X(Nv.avatar,Nv.clickable),onClick:m,src:e.sender.profilePhoto??at.getDefaultAvatarURL(e.sender.discordID),style:{left:"0px",zIndex:0},onError:k=>k.currentTarget.src=at.getDefaultAvatarURL(e.sender.discordID)}),i("div",{style:{display:"inline-flex",justifyContent:"center",alignItems:"center"}},i("span",{className:X(Nv.clickable,Nv.username),style:{color:"var(--channels-default)",fontSize:"14px"},onClick:()=>m()},e.sender.username),e.type===3&&i("span",{className:X($4.botTagVerified,$4.botTagRegular,$4.px,$4.rem),style:{marginLeft:"4px"}},i("span",{className:$4.botText},"System"))),v&&i(II,{name:"You have blocked this user",description:"You have blocked this user",icon:"/assets/aaee57e0090991557b66.svg",type:0,onClick:()=>AI()}),e.sender.badges.map((k,w)=>i(II,{key:w,...k})),!lm.store.hideTimestamps&&e.type!==3&&i(Hr,{timestamp:new Date(e.timestamp*1e3)},cat.format(e.timestamp*1e3)),i("div",{className:Ho("review-comment")},e.comment.length>200&&!r?i(f,null,kt.parseGuildEventDescription(e.comment.substring(0,200)),"...",i("br",null),i("a",{onClick:()=>n(!0)},"Read more")):kt.parseGuildEventDescription(e.comment)),e.id!==0&&i("div",{className:X(i2e.container,i2e.isHeader,z4.buttons),style:{padding:"0px"}},i("div",{className:X(lat.wrapper,z4.buttonsInner)},Gbe(e)&&i(t2e,{onClick:x}),$be(o,e)&&i(o2e,{isBlocked:v,onClick:y}),zbe(o,e)&&i(e2e,{onClick:g}))))}var z4,i2e,Nv,lat,$4,cat,iK=h(()=>{"use strict";d();am();Pv();Mv();_4();sm();_e();Be();le();C();nK();n2e();r2e();z4=Ie("cozyMessage","message","groupStart","buttons","buttonsInner"),i2e=Ie("container","isHeader"),Nv=Ie("avatar","wrapper","cozy","clickable","username"),lat=Ie("button","wrapper","selected"),$4=Ie("botTagVerified","botTagRegular","botText","px","rem"),cat=new Intl.DateTimeFormat});function aK({discordId:e,name:t,onFetchReviews:o,refetchSignal:r,scrollToTop:n,page:a=1,showInput:s=!1,hideOwnReview:l=!1,type:c}){let[u,p]=Vt(!0),[m]=Ro(()=>CI(e,{offset:(a-1)*U4,limit:U4,fetchVotes:!0}),{fallbackValue:null,deps:[r,u,a],onSuccess:g=>{lm.store.hideBlockedUsers&&(g.reviews=g.reviews?.filter(y=>!qe.isBlocked(y.sender.discordID)));let x=g.reviews.filter(y=>y.type===3),v=g.reviews.filter(y=>y.type!==3);g.reviews=[...x,...v],n?.(),o(g)}});return m?i(f,null,i(fat,{refetch:p,reviews:m.reviews,hideOwnReview:l,profileId:e,type:c}),s&&i(sK,{name:t,discordId:e,refetch:p,isAuthor:m.reviews?.some(g=>g.sender.discordID===L.getCurrentUser().id)})):null}function fat({refetch:e,reviews:t,hideOwnReview:o,profileId:r,type:n}){let a=L.getCurrentUser().id;return i("div",{className:Ho("view")},t?.map(s=>(s.sender.discordID!==a||!o)&&i(G4,{key:s.id,review:s,refetch:e,profileId:r})),t?.length===0&&i(U,{className:Ho("placeholder")},"Looks like nobody reviewed this ",n===0?"user":"server"," yet. You could be the first!"))}function sK({discordId:e,isAuthor:t,refetch:o,name:r,modalKey:n,repliesTo:a}){let{token:s}=Rr,l=Se(null),c=dat.USER_PROFILE_REPLY;c.disableAutoFocus=!0;let u=mat({id:"0",type:1});return i(f,null,i("div",{onClick:()=>{s||(Ai("Opening authorization window..."),Qf())}},i(pat,{className:Ho("input"),channel:u,placeholder:s?a?`Reply to @${r}`:t?`Update review for @${r}`:`Review @${r}`:"You need to authorize to review users!",type:c,disableThemedBackground:!0,setEditorRef:p=>l.current=p,parentModalKey:n,textValue:"",onSubmit:async p=>{if(await qbe({userid:e,comment:p.value,repliesto:a})){o();let g=l.current.ref.current.getSlateEditor();uat.delete(g,{at:{anchor:a2e.start(g,[]),focus:a2e.end(g,[])}})}return{shouldClear:!1,shouldRefocus:!0}}})))}var uat,a2e,dat,pat,mat,s2e=h(()=>{"use strict";d();Je();am();Pv();Mv();_4();sm();Kt();le();C();iK();uat=Ae("insertNodes","textToText"),a2e=Ae("start","end","toSlateRange"),dat=Ae("FORM","USER_PROFILE"),pat=he("editorClassName","CHANNEL_TEXT_AREA"),mat=Oe(".GUILD_TEXT]","fromServer)")});function gat({modalProps:e,modalKey:t,discordId:o,name:r,type:n}){let[a,s]=T(),[l,c]=Vt(!0),[u,p]=T(1),m=Se(null),g=a?.reviewCount,x=a?.reviews.find(v=>v.sender.discordID===Rr.user?.discordID);return i(be,{...e,size:"lg",title:i(Y,{size:"lg",weight:"semibold",className:Ho("modal-header")},r,"'s Reviews",!!g&&i("span",null," (",g," Reviews)")),preview:i("div",{className:Ho("modal-footer")},i("div",{className:Ho("modal-footer-wrapper")},x&&i(G4,{refetch:c,review:x,profileId:o}),i(sK,{isAuthor:x!=null,discordId:o,name:r,refetch:c,modalKey:t}),!!g&&i(lK,{currentPage:u,maxVisiblePages:5,pageSize:U4,totalCount:g,onPageChange:p}))),scrollerRef:m},i("div",{className:Ho("modal-reviews")},i(aK,{discordId:o,name:r,page:u,refetchSignal:l,onFetchReviews:s,scrollToTop:()=>m.current?.scrollTo({top:0,behavior:"smooth"}),hideOwnReview:!0,type:n})))}function EI(e,t,o){let r="vc-rdb-modal-"+Date.now();na(async()=>(await cK(),n=>i(gat,{modalKey:r,modalProps:n,discordId:e,name:t,type:o})),{modalKey:r})}var lK,cK,uK=h(()=>{"use strict";d();yt();am();Mv();sm();Kt();le();C();iK();s2e();lK=he('rel:"prev",children:'),cK=vr(['name:"SearchResults"'],new RegExp(`name:"StageChannelCall",renderLoader:.+?(?:${af.source}).{0,30}?name:"SearchResults"`))});var hat,DI,Rh,xat,l2e,dK,PI,c2e=h(()=>{"use strict";d();Fbe();ot();Je();Jc();O();Be();Kt();R();le();C();am();uK();Pv();Mv();_4();sm();hat=Ie("widgetPreviews"),DI=Ie("cardsList","firstCardContainer","card","container"),Rh=Ie("innerContainer","icons","icon","displayCount","displayCountText","displayCountTextColor","breadcrumb"),xat=Ie("overlay","isPrivate","outer"),l2e=(e,{guild:t})=>{t&&e.push(i(P.MenuItem,{label:"View Reviews",id:"vc-rdb-server-reviews",icon:gn,leadingAccessory:{type:"icon",icon:gn},action:()=>EI(t.id,t.name,1)}))},dK=(e,{user:t})=>{t&&e.push(i(P.MenuItem,{label:"View Reviews",id:"vc-rdb-user-reviews",icon:gn,leadingAccessory:{type:"icon",icon:gn},action:()=>EI(t.id,t.username,0)}))},PI=S({name:"ReviewDB",description:"Review other users (Adds a new settings to profiles)",dependencies:["ProfileCollectionsAPI"],tags:["Friends","Servers"],authors:[b.mantikafasi,b.Ven],isModified:!0,settings:lm,contextMenus:{"guild-header-popout":l2e,"guild-context":l2e,"user-context":dK,"user-profile-actions":dK,"user-profile-overflow-menu":dK},flux:{CONNECTION_OPEN:oK},async start(){let e=lm.store,{lastReviewId:t,notifyReviews:o}=e;await oK(),setTimeout(async()=>{if(!Rr.token)return;let r=await Xbe();if(r){F4({user:r}),o&&t&&tVencordNative.native.openExternal("https://reviewdb.mantikafasi.dev/api/redirect?"+new URLSearchParams({token:Rr.token,page:"dashboard/appeal"}))}:{};ce(s=>i(Dn,{...s,title:n.title,confirmText:a.confirmText??"OK",cancelText:a.cancelText,variant:"primary",onCancel:a.onCancel},kt.parse(n.content,!1))),Vbe(n.id)}}},4e3)},renderProfileCollection:{priority:0,render:({user:e,isSideBar:t=!1})=>{let[o]=Ro(()=>CI(e.id,{limit:4}),{deps:[e.id],fallbackValue:null}),r=i("section",{className:DI.container},i("ul",{className:DI.cardsList,tabIndex:-1},i("li",{className:DI.firstCardContainer},i(eo,{className:X(Rh.breadcrumb,o?.hasOptedOut&&Ho("profile-popout-disabled")),onClick:()=>!o?.hasOptedOut&&EI(e.id,e.username,0)},i("div",{className:X(xat.overlay,Rh.innerContainer,DI.card)},i(U,{size:t?"sm":"xs",weight:"medium"},"User Reviews"),o?.reviewCount?i("div",{className:Rh.icons},o.reviews.filter(n=>n.id!==0).slice(0,4).map((n,a)=>{let s=a===3&&o.reviewCount>4;return i("div",{className:Rh.icon,key:n.id},i("img",{src:n.sender.profilePhoto,alt:n.sender.username,className:s?Rh.displayCount:void 0,onError:l=>l.currentTarget.src=at.getDefaultAvatarURL(n.sender.discordID)}),s&&i("div",{className:Rh.displayCountText},i(nr,{className:Rh.displayCountTextColor,size:"xs",weight:"medium",defaultColor:!1},"+",o.reviewCount-4)))})):i(U,{size:t?"sm":"xs"},o?.hasOptedOut?"User opted out":"No reviews yet"))))));return t?i("div",{className:hat.widgetPreviews},r):r}}})});var vat,zd,MI,u2e=h(()=>{"use strict";d();j();Pe();mv();O();He();R();le();C();vat=Oe('"Result cannot be null because the message is not null"'),zd=M({chatMentions:{type:3,default:!0,description:"Show role colors in chat mentions (including in the message box)",restartNeeded:!0},memberList:{type:3,default:!0,description:"Show role colors in member list role headers",restartNeeded:!0},voiceUsers:{type:3,default:!0,description:"Show role colors in the voice chat user list",restartNeeded:!0},reactorsList:{type:3,default:!0,description:"Show role colors in the reactors list",restartNeeded:!0},pollResults:{type:3,default:!0,description:"Show role colors in the poll results",restartNeeded:!0},colorChatMessages:{type:3,default:!1,description:"Color chat messages based on the author's role color",restartNeeded:!0},messageSaturation:{type:5,description:"Intensity of message coloring.",markers:zt(0,100,10),default:30}}),MI=S({name:"RoleColorEverywhere",authors:[b.KingFish,b.lewisakura,b.AutumnVN,b.Kyuuhachi,b.jamesbt365],description:"Adds the top role color anywhere possible",tags:["Roles","Appearance"],settings:zd,patches:[{find:".USER_MENTION)",replacement:[{match:/(?<=user:(\i),guildId:([^,]+?),.{0,100}?children:\i=>\i)\((\i)\)/,replace:"({...$3,color:$self.getColorInt($1?.id,$2)})"}],predicate:()=>zd.store.chatMentions},{find:'"text":"locked"',replacement:[{match:/let\{id:(\i),guildId:\i,channelId:(\i)[^}]*\}.*?\.\i,{(?=children)/,replace:"$&color:$self.getColorInt($1,$2),"}],predicate:()=>zd.store.chatMentions},{find:'tutorialId:"whos-online',replacement:[{match:/(#{intl::CHANNEL_MEMBERS_A11Y_LABEL}.+}\):null,).{0,100}?(?:—|\\u2014) ",\i\]\}\)\]/,replace:"$1$self.RoleGroupColor(arguments[0])]"}],predicate:()=>zd.store.memberList},{find:"#{intl::THREAD_BROWSER_PRIVATE}",replacement:[{match:/children:\[\i," (?:—|\\u2014) ",\i\]/,replace:"children:[$self.RoleGroupColor(arguments[0])]"}],predicate:()=>zd.store.memberList},{find:"#{intl::GUEST_NAME_SUFFIX})]",replacement:[{match:/#{intl::GUEST_NAME_SUFFIX}.{0,50}?"".{0,100}\](?=\}\))(?<=guildId:(\i),.+?user:(\i).+?)/,replace:"$&,style:$self.getColorStyle($2.id,$1),"}],predicate:()=>zd.store.voiceUsers},{find:"MessageReactions.render:",replacement:{match:/tag:"strong",variant:"text-md\/medium"(?<=onContextMenu:.{0,15}\((\i),(\i),\i\).+?)/,replace:"$&,style:$self.getColorStyle($2?.id,$1?.channel?.id)"},predicate:()=>zd.store.reactorsList},{find:",reactionVoteCounts",replacement:{match:/\.SIZE_32.+?variant:"text-md\/normal",className:\i\.\i,(?="aria-label":)/,replace:"$&style:$self.getColorStyle(arguments[0]?.user?.id,arguments[0]?.channel?.id),"},predicate:()=>zd.store.pollResults},{find:".SEND_FAILED,",replacement:{match:/(?<=\]:(\i)\.isUnsupported.{0,50}?,)(?=children:\[)/,replace:"style:$self.useMessageColorsStyle($1),"},predicate:()=>zd.store.colorChatMessages}],getColorString(e,t){try{if(Me.plugins.CustomUserColors.enabled){let r=vu(e,!0);if(r)return r}let o=W.getChannel(t)?.guild_id??$e.getGuild(t)?.id;return o==null?null:bt.getMember(o,e)?.colorString??null}catch(o){new ie("RoleColorEverywhere").error("Failed to get color string",o)}return null},getColorInt(e,t){let o=this.getColorString(e,t);return o&&parseInt(o.slice(1),16)},getColorStyle(e,t){let o=this.getColorString(e,t);return o&&{color:o}},useMessageColorsStyle(e){try{let{messageSaturation:t}=zd.use(["messageSaturation"]),o=vat(e);if(e.state==="SEND_FAILED")return;if(o.colorString!=null&&t!==0){let r=`color-mix(in oklab, ${o.colorString} ${t}%, var({DEFAULT}))`;return{color:r.replace("{DEFAULT}","--text-default"),"--text-strong":r.replace("{DEFAULT}","--text-strong"),"--text-muted":r.replace("{DEFAULT}","--text-muted")}}}catch(t){new ie("RoleColorEverywhere").error("Failed to get message color",t)}return null},RoleGroupColor:H.wrap(({id:e,count:t,title:o,guildId:r,label:n})=>{let a=To.getRole(r,e);return i("span",{style:{color:a?.colorString,fontWeight:"unset",letterSpacing:".05em"}},o??n," \u2014 ",t)},{noop:!0})})});var d2e,NI,p2e=h(()=>{"use strict";d();j();O();R();d2e=M({onlySnow:{type:3,description:"Only play the Snow Halation Theme",default:!1,restartNeeded:!0}}),NI=S({name:"SecretRingToneEnabler",description:"Always play the secret version of the discord ringtone (except during special ringtone events)",tags:["Notifications","Fun"],authors:[b.AndrewDLO,b.FieryFlames,b.RamziAH],settings:d2e,patches:[{find:'"call_ringing_beat"',replacement:[{match:/500!==\i\(\)\.random\(1,1e3\)/,replace:"false"},{predicate:()=>d2e.store.onlySnow,match:/"call_ringing_beat",/,replace:""}]}]})});function bat(e,t){return{id:e.id,topic:e.topic,summShort:e.summ_short,people:Array.from(new Set(e.people)),startId:e.start_id,endId:e.end_id,count:e.count,channelId:t,source:e.source,type:e.type}}var yat,m2e,BI,f2e=h(()=>{"use strict";d();Io();j();O();_e();R();le();C();yat=Ae("allSummaries","findSummary"),m2e=M({summaryExpiryThresholdDays:{type:5,description:"The time in days before a summary is removed. Note that only up to 50 summaries are kept per channel",markers:[1,3,5,7,10,15,20,25,30],stickToMarkers:!1,default:3}});BI=S({name:"Summaries",description:"Enables Discord's experimental Summaries feature on every server, displaying AI generated summaries of conversations",tags:["Chat","Fun"],authors:[b.mantikafasi],settings:m2e,patches:[{find:"SUMMARIZEABLE.has",replacement:{match:/\i\.features\.has\(\i\.\i\.SUMMARIES_ENABLED\w+?\)/g,replace:"true"}},{find:"RECEIVE_CHANNEL_SUMMARY(",replacement:{match:/shouldFetch\((\i),\i\){/,replace:"$& if(!$self.shouldFetch($1)) return false;"}}],flux:{CONVERSATION_SUMMARY_UPDATE(e){let t=e.summaries.map(o=>({...bat(o,void 0),time:Date.now()}));Es("summaries-data",o=>(o??={},o[e.channel_id]?o[e.channel_id].unshift(...t):o[e.channel_id]=t,o[e.channel_id].length>50&&(o[e.channel_id]=o[e.channel_id].slice(0,50)),o))}},async start(){await Es("summaries-data",e=>{e??={};for(let t of Object.keys(e)){for(let o=e[t].length-1;o>=0;o--)e[t][o].time{});function x2e(e){let t=e.slice(1,-1).replace(/(\d)(AM|PM)$/i,"$1 $2"),o=new Date(`${new Date().toDateString()} ${t}`).getTime()/1e3;return isNaN(o)?e:(Date.now()/1e3>o&&(o+=86400),``)}function wat(e){let[t,o]=T(),[r,n]=T(""),a=Math.round((new Date(t).getTime()||Date.now())/1e3),s=(u,p)=>``,[l,c]=Ne(()=>{let u=s(a,r);return[u,kt.parse(u)]},[a,r]);return i(be,{...e,title:"Timestamp Picker",actions:[{text:"Insert",variant:"primary",onClick(){tr(l+" "),e.onClose()}}]},i("input",{className:RI("date-picker"),type:"datetime-local",value:t,onChange:u=>o(u.currentTarget.value),style:{colorScheme:C0()===2?"light":"dark"}}),i(oe,{tag:"h5"},"Timestamp Format"),i("div",{className:RI("format-select")},i(qt,{options:Sat.map(u=>({label:u,value:u})),isSelected:u=>u===r,select:u=>n(u),serialize:u=>u,renderOptionLabel:u=>i("div",{className:RI("format-label")},kt.parse(s(a,u.value))),renderOptionValue:()=>c})),i(oe,{tag:"h5",className:z.bottom8},"Preview"),i(U,{className:RI("preview-text")},c," (",l,")"))}var h2e,Sat,RI,v2e,Aat,LI,y2e=h(()=>{"use strict";d();g2e();Ba();j();We();Je();O();we();_e();Wt();R();C();h2e=M({replaceMessageContents:{description:"Replace timestamps in message contents",type:3,default:!0}});Sat=["","t","T","d","D","f","F","s","S","R"],RI=K("vc-st-");v2e=({height:e=20,width:t=20,className:o})=>i("svg",{"aria-hidden":"true",role:"img",width:t,height:e,className:o,viewBox:"0 0 24 24",style:{scale:"1.2"}},i("g",{fill:"none",fillRule:"evenodd"},i("path",{fill:"currentColor",d:"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7v-5z"}),i("rect",{width:"24",height:"24"}))),Aat=({isAnyChat:e})=>e?i(Un,{tooltip:"Insert Timestamp",onClick:()=>ce(t=>i(wat,{...t})),buttonProps:{"aria-haspopup":"dialog"}},i(v2e,null)):null,LI=S({name:"SendTimestamps",description:"Send timestamps easily via chat box button & text shortcuts. Read the extended description!",dependencies:["ChatInputButtonAPI","MessagePopoverAPI"],tags:["Chat","Commands"],authors:[b.Ven,b.Tyler,b.Grzesiek11],settings:h2e,chatBarButton:{icon:v2e,render:Aat},onBeforeMessageSend(e,t){h2e.store.replaceMessageContents&&(t.content=t.content.replace(/`\d{1,2}:\d{2} ?(?:AM|PM)?`/gi,x2e))},settingsAboutComponent(){let e=["12:00","3:51","17:59","24:00","12:00 AM","0:13PM"].map(t=>`\`${t}\``);return i(f,null,i(U,null,"To quickly send time only timestamps, include timestamps formatted as `HH:MM` (including the backticks!) in your message"),i(U,null,"See below for examples. If you need anything more specific, use the Date button in the chat bar!"),i(U,null,"Examples:",i("ul",null,e.map(t=>i("li",{key:t},i("code",null,t)," ","->"," ",kt.parse(x2e(t)))))))}})});var b2e=h(()=>{});function k2e(e){ce(t=>i(kat,{guild:e,modalProps:t}))}function w2e(e){return i(Hr,{timestamp:new Date(e)})}function kat({guild:e,modalProps:t}){let[o,r]=T(),[n,a]=T(),[s,l]=T(),[c,u]=T();G(()=>{H4.friends=!1,H4.blocked=!1,H4.ignored=!1},[]);let[p,m]=T(0),g=e.banner&&at.getGuildBannerURL(e,!0).replace(/\?size=\d+$/,"?size=1024"),x=e.icon&&at.getGuildIconURL({id:e.id,icon:e.icon,canAnimate:!0,size:512});return i(be,{...t,size:"lg",title:i("div",{className:ur("header")},x?i("img",{className:ur("icon"),src:x,alt:"",onClick:()=>Ji({url:x,height:512,width:512})}):i("div",{"aria-hidden":!0,className:X(S2e.childWrapper,S2e.acronym)},ya(e)),i("div",{className:ur("name-and-description")},i(Ia.FormTitle,{tag:"h5",className:ur("name")},e.name),e.description&&i(Ia.FormText,null,e.description)))},g&&p===0&&i("img",{className:ur("banner"),src:g,alt:"",onClick:()=>Ji({url:g,width:1024})}),i(rr,{type:"top",look:"brand",className:ur("tab-bar"),selectedItem:p,onItemSelect:m},i(rr.Item,{className:ur("tab",{selected:p===0}),id:0},i("div",{style:{textAlign:"center"}},i("div",null,"Server Info"))),i(rr.Item,{className:ur("tab",{selected:p===1}),id:1},i("div",{style:{textAlign:"center"}},i("div",null,"Friends"),o!==void 0?` (${o})`:"")),i(rr.Item,{className:ur("tab",{selected:p===4}),id:4},i("div",{style:{textAlign:"center"}},i("div",null,"Mutual Users"),c!==void 0?` (${c})`:"")),i(rr.Item,{className:ur("tab",{selected:p===2}),id:2},i("div",{style:{textAlign:"center"}},i("div",null,"Blocked Users"),n!==void 0?` (${n})`:"")),i(rr.Item,{className:ur("tab",{selected:p===3}),id:3},i("div",{style:{textAlign:"center"}},i("div",null,"Ignored Users"),s!==void 0?`(${s})`:""))),i("div",{className:ur("tab-content")},p===0&&i(Tat,{guild:e}),p===1&&i(Iat,{guild:e,setCount:r}),p===4&&i(Nat,{guild:e,setCount:u}),p===2&&i(Eat,{guild:e,setCount:a}),p===3&&i(Dat,{guild:e,setCount:l})))}function Cat(e,t){let o=bt.getMember(e,t.id)?.avatar,r=o?at.getGuildMemberAvatarURLSimple({userId:t.id,avatar:o,guildId:e,canAnimate:!0}):at.getUserAvatarURL(t,!0);return i("div",{className:ur("owner")},i("img",{className:ur("owner-avatar"),src:r,alt:"",onClick:()=>Ji({url:r,height:512,width:512})}),kt.parse(`<@${t.id}>`))}function Tat({guild:e}){let[t]=Ro(()=>Xi.getUser(e.ownerId),{deps:[e.ownerId],fallbackValue:null}),o={"Server Owner":t?Cat(e.id,t):"Loading...","Created At":w2e(en.extractTimestamp(e.id)),"Joined At":e.joinedAt?w2e(e.joinedAt.getTime()):"-","Vanity Link":e.vanityURLCode?i("a",null,`discord.gg/${e.vanityURLCode}`):"-","Preferred Locale":e.preferredLocale||"-","Verification Level":["None","Low","Medium","High","Highest"][e.verificationLevel]||"?","Server Boosts":`${e.premiumSubscriberCount??0} (Level ${e.premiumTier??0})`,Channels:Da.getChannels(e.id)?.count-1||"?",Roles:To.getSortedRoles(e.id).length-1};return i("div",{className:ur("info")},Object.entries(o).map(([r,n])=>i("div",{className:ur("server-info-pair"),key:r},i(oe,null,r),typeof n=="string"?i("span",null,n):n)))}function Iat({guild:e,setCount:t}){return pK("friends",e,qe.getFriendIDs(),t)}function Eat({guild:e,setCount:t}){let o=qe.getBlockedIDs();return pK("blocked",e,o,t)}function Dat({guild:e,setCount:t}){let o=qe.getIgnoredIDs();return pK("ignored",e,o,t)}function pK(e,t,o,r){let n=[],a=[];for(let l of o)bt.isMember(t.id,l)?a.push(l):n.push(l);ye([bt],()=>bt.getMemberIds(t.id),null,(l,c)=>l.length===c.length),G(()=>{!H4[e]&&n.length&&(H4[e]=!0,Q.dispatch({type:"GUILD_MEMBERS_REQUEST",guildIds:[t.id],userIds:n}))},[]),G(()=>r(a.length),[a.length]);let s=a.map(l=>L.getUser(l)).sort((l,c)=>{switch(OI.store.sorting){case"username":return l.username.localeCompare(c.username);case"displayname":return l?.globalName?.localeCompare(c?.globalName||c.username)||l.username.localeCompare(c?.globalName||c.username);default:return 0}});return i(ei,{fade:!0,className:ur("scroller")},s.map(l=>i(A2e,{key:l.id,user:l,status:Yo.getStatus(l.id)||"offline",onSelect:()=>Ko(l.id),onContextMenu:()=>{}})))}function Pat(e){let t=[];for(let o of Object.values($e.getGuilds()))if(bt.isMember(o.id,e)){let r=o.icon?at.getGuildIconURL({id:o.id,icon:o.icon,canAnimate:!0,size:20})??null:null;t.push({guild:o,iconUrl:r})}return{id:e,mutualCount:t.length,mutualGuilds:t}}function Mat({member:e}){let{mutualGuilds:o,mutualCount:r}=e;return i("div",{className:ur("mutual-guilds")},o.slice(0,3).map(({guild:n,iconUrl:a})=>i("div",{key:n.id,className:ur("guild-icon"),role:"img","aria-label":n.name},a?i("img",{src:a,alt:""}):i("div",{className:ur("guild-acronym")},ya(n)))),r>3&&i("div",{className:ur("guild-count")},"+",r-3))}function Nat({guild:e,setCount:t}){let[o,r]=T([]),n=L.getCurrentUser().id;return G(()=>{let s=bt.getMemberIds(e.id).map(l=>Pat(l)).filter(l=>l.mutualCount>1&&l.id!==n);s.sort((l,c)=>c.mutualCount-l.mutualCount),r(s),t(s.length)},[e.id]),i(ei,{fade:!0,className:ur("scroller")},o.map(a=>{let s=L.getUser(a.id);return{...a,user:s}}).filter(Boolean).sort((a,s)=>{switch(OI.store.sorting){case"username":return a.user.username.localeCompare(s.user.username);case"displayname":return a.user?.globalName?.localeCompare(s.user?.globalName||s.user.username)||a.user.username.localeCompare(s.user?.globalName||s.user.username);default:return 0}}).map(a=>i("div",{className:ur("member-row"),key:a.id,onClick:()=>Ko(a.id)},i("div",{className:ur("member-content")},i(A2e,{user:a.user,status:Yo.getStatus(a.id)||"offline",onSelect:()=>{},onContextMenu:()=>{},mutualGuilds:a.mutualCount})),i("div",{className:ur("member-icons"),onClick:s=>s.stopPropagation()},i(Mat,{member:a})))))}var S2e,A2e,ur,H4,C2e=h(()=>{"use strict";d();b2e();We();we();_e();Be();Kt();le();C();mK();S2e=Ie("icon","acronym","childWrapper"),A2e=he("discriminatorClass:",".isMobileOnline","avatarSrc:"),ur=K("vc-gp-");H4={friends:!1,blocked:!1,ignored:!1}});var T2e,OI,FI,mK=h(()=>{"use strict";d();Fo();j();ot();O();R();C();C2e();T2e=e=>(t,{guild:o})=>{wt("privacy",t)?.push(i(P.MenuItem,{id:"vc-server-info",label:"Server Info",leadingAccessory:e?{type:"icon",icon:gi}:void 0,action:()=>k2e(o)}))},OI=M({sorting:{type:4,description:"Username or if applicable Display Name",options:[{label:"Username",value:"username"},{label:"Display Name",value:"displayname",default:!0},{label:"Dont Sort",value:"none"}]}}),FI=S({name:"ServerInfo",description:"Allows you to view info about a server",tags:["Servers","Utility"],authors:[b.Ven,b.Nuckyz,F.Z1xus],dependencies:["DynamicImageModalAPI"],searchTerms:["guild","info","ServerProfile"],isModified:!0,settings:OI,contextMenus:{"guild-context":T2e(!1),"guild-header-popout":T2e(!0)}})});var I2e=h(()=>{});function Bat(){return _I=ye([qe,Yo],()=>{let e=0,t=qe.getFriendIDs();for(let o of t)(Yo.getStatus(o)??"offline")!=="offline"&&e++;return e}),i("div",{id:"vc-friendcount"},!Bv.store.useCompact&&i("svg",{id:"vc-friendcount-icon",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",fill:"currentColor",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M13 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z"}),i("path",{fill:"currentColor",d:"M3 5v-.75C3 3.56 3.56 3 4.25 3s1.24.56 1.33 1.25C6.12 8.65 9.46 12 13 12h1a8 8 0 0 1 8 8 2 2 0 0 1-2 2 .21.21 0 0 1-.2-.15 7.65 7.65 0 0 0-1.32-2.3c-.15-.2-.42-.06-.39.17l.25 2c.02.15-.1.28-.25.28H9a2 2 0 0 1-2-2v-2.22c0-1.57-.67-3.05-1.53-4.37A15.85 15.85 0 0 1 3 5Z"})),i(Y,{size:"xs",id:"vc-friendcount-text"},_I),!!Bv.store.useCompact&&i(Y,{size:"xs",id:"vc-friendcount-text-compact"},"Friends"))}function Rat(){return UI=ye([$e,y1],()=>{let e=y1.computeGuildIds(),t=$e.getGuilds();return $e.getGuildCount()+e.filter(o=>t[o]==null).length}),i("div",{id:"vc-guildcount"},!Bv.store.useCompact&&i("svg",{id:"vc-guildcount-icon","aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",fill:"currentColor",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M19.73 4.87a18.2 18.2 0 0 0-4.6-1.44c-.21.4-.4.8-.58 1.21-1.69-.25-3.4-.25-5.1 0-.18-.41-.37-.82-.59-1.2-1.6.27-3.14.75-4.6 1.43A19.04 19.04 0 0 0 .96 17.7a18.43 18.43 0 0 0 5.63 2.87c.46-.62.86-1.28 1.2-1.98-.65-.25-1.29-.55-1.9-.92.17-.12.32-.24.47-.37 3.58 1.7 7.7 1.7 11.28 0l.46.37c-.6.36-1.25.67-1.9.92.35.7.75 1.35 1.2 1.98 2.03-.63 3.94-1.6 5.64-2.87.47-4.87-.78-9.09-3.3-12.83ZM8.3 15.12c-1.1 0-2-1.02-2-2.27 0-1.24.88-2.26 2-2.26s2.02 1.02 2 2.26c0 1.25-.89 2.27-2 2.27Zm7.4 0c-1.1 0-2-1.02-2-2.27 0-1.24.88-2.26 2-2.26s2.02 1.02 2 2.26c0 1.25-.88 2.27-2 2.27Z"})),i(Y,{size:"xs",id:"vc-guildcount-text"},UI),!!Bv.store.useCompact&&i(Y,{size:"xs",id:"vc-guildcount-text-compact"},"Servers"))}var _I,UI,Bv,zI,E2e=h(()=>{"use strict";d();I2e();Tf();j();yt();Pe();O();we();R();C();_I=0,UI=0;Bv=M({mode:{description:"Mode",type:4,options:[{label:"Only online friend count",value:2,default:!0},{label:"Only server count",value:1},{label:"Both server and online friend counts",value:3}],restartNeeded:!0},useCompact:{description:"Makes the indicator appear with only text",type:3,default:!1,restartNeeded:!0}}),zI=S({name:"ServerListIndicators",description:"Add online friend count or server count in the server list",tags:["Servers","Appearance"],authors:[b.Rini,F.Panniku],dependencies:["ServerListAPI"],settings:Bv,renderIndicator:()=>{let{mode:e,useCompact:t}=Bv.store,o;switch(e){case 3:o=`${_I} Friends, ${UI} Servers`;break;case 2:o=`${_I} Friends`;break;case 1:o=`${UI} Servers`;break}let r=t?K("vc-indicators-compact-"):K("vc-indicators-");return i(H,{noop:!0},i("div",{id:r("container")},i(ve,{text:o,position:"right"},({onMouseEnter:n,onMouseLeave:a})=>i("div",{id:r("indicator-items"),onMouseEnter:n,onMouseLeave:a},!!(e&2)&&i(Bat,null),!!(e&1)&&i(Rat,null)))))},start(){jl(0,this.renderIndicator)},stop(){ll(0,this.renderIndicator)}})});var D2e=h(()=>{});var P2e,M2e=h(()=>{d();P2e=`/* eslint-disable simple-header/header */ import React from "react"; const handleClick = async () => console.log((await import("@utils/clipboard")).copyToClipboard("\\u200b")); export const Example: React.FC<{ real: boolean, shigged?: number, }> = ({ real, shigged }) => <>

{\`Shigg\${real ? \`ies\${shigged === 0x1B ? "t" : ""}\` : "y"}\`}

;`});function gK(e){$I.id!==e.id&&(Object.assign($I,e),fK.forEach(t=>t(e)))}var $I,fK,N2e,hK=h(()=>{"use strict";d();C();$I={id:null,theme:null},fK=new Set,N2e=()=>{let[,e]=V.useState($I);return V.useEffect(()=>(fK.add(e),()=>{fK.delete(e)}),[]),$I}});var B2e,R2e,L2e,xK=h(()=>{"use strict";d();Er();B2e="https://cdn.jsdelivr.net/npm/@vap/shiki-worker@0.0.8/dist/index.min.js",R2e="https://cdn.jsdelivr.net/npm/@vap/shiki@0.10.3/dist/onig.wasm",L2e=_l(()=>import("https://cdn.jsdelivr.net/npm/stegcloak-dist@1.0.0/index.js"))});var F2e=xa((F4o,vK)=>{"use strict";d();var Lat=Object.prototype.hasOwnProperty,Ns="~";function j4(){}Object.create&&(j4.prototype=Object.create(null),new j4().__proto__||(Ns=!1));function Oat(e,t,o){this.fn=e,this.context=t,this.once=o||!1}function O2e(e,t,o,r,n){if(typeof o!="function")throw new TypeError("The listener must be a function");var a=new Oat(o,r||e,n),s=Ns?Ns+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],a]:e._events[s].push(a):(e._events[s]=a,e._eventsCount++),e}function GI(e,t){--e._eventsCount===0?e._events=new j4:delete e._events[t]}function is(){this._events=new j4,this._eventsCount=0}is.prototype.eventNames=function(){var t=[],o,r;if(this._eventsCount===0)return t;for(r in o=this._events)Lat.call(o,r)&&t.push(Ns?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(o)):t};is.prototype.listeners=function(t){var o=Ns?Ns+t:t,r=this._events[o];if(!r)return[];if(r.fn)return[r.fn];for(var n=0,a=r.length,s=new Array(a);n{"use strict";d();Object.defineProperty(Rv,"__esModule",{value:!0});Rv.Channel=Rv.ChannelPort=void 0;var Fat=F2e(),HI="vapIpc",yK=Symbol.for("vapIpc.edgeCreate"),bK=class{_pipes=new Map;_listeners=new Map;_createListenerMap(){return new Map}_emit(t,o,...r){for(let[n,a]of this._listeners.entries()){if(n===t)continue;let s=a.get(o);s&&s(...r)}}createPipe(t){let o=this.getPipe(t);if(o)return o;let r=this._createListenerMap();this._listeners.set(t,r);let n={emit:this._emit.bind(this,t),listen:(a,s)=>{r.set(a,s)}};return this._pipes.set(t,n),n}getPipe(t){return this._pipes.get(t)??null}};Rv.ChannelPort=bK;var SK=class{id;_edges=new Map;_callbacks=new Map;_callers=new Map;_edgePipes=new Map;_pipes=[];_emitter=new Fat.EventEmitter;_logger;_destroyed=!1;constructor(t){this.id=t}addPipe(t){t.listen(`${HI}:handshake`,o=>{this._handleHandshake(t,o)}),t.listen(`${HI}:message`,o=>{this._handleMessage(t,o)}),this._pipes.push(t),this._logger?.log(`Adding pipe to channel "${this.id}"`)}setLogger(t){this._logger=t}_handleHandshake(t,o){if(this.id===o.id)return;this._logger?.log(`\u{1F91D} "${o.id}" -> "${this.id}" (edges: [${o.channelIds.join(", ")}])`);let r=this._edges.get(o.id);if(r){let n=o.channelIds.filter(a=>!r?.channelIds.includes(a));if(n.includes(this.id)&&n.splice(n.indexOf(this.id),1),!n.length)return;this._edges.set(o.id,{...o,channelIds:[...r.channelIds,...n]})}else{let n=[...o.channelIds].filter(a=>a!==this.id);this._edges.set(o.id,{...o,channelIds:n}),this._edgePipes.set(o.id,t)}this._emitter.emit(yK,o),this.handshakeAll()}_handleMessage(t,o){if(o.proxiedBy===this.id)return;if(o.destination!==this.id)return this._emitMessage({...o,proxiedBy:this.id});if(!o.nonce)return void this._emitter.emit(o.name,o.data);let r=this._callbacks.get(o.nonce);if(r)return void r(o.data);let n=this._callers.get(o.name);if(n){n(o.data).catch(a=>(console.error(a),new Error(a?.message??`${a}`))).then(a=>{this._emitMessage({name:o.name,source:this.id,destination:o.source,data:a,nonce:o.nonce})});return}}_emitHandshake(t){let o=this.getEdge();t.emit(`${HI}:handshake`,o)}_emitMessage(t){let o=this.findEdgeId(t.destination);if(!o)return;this._edgePipes.get(o)?.emit(`${HI}:message`,t)}getEdge(){let t=[...this._edges.keys(),...[...this._edges.values()].map(o=>o.channelIds).flat()].filter((o,r,n)=>n.indexOf(o)===r);return{id:this.id,channelIds:t}}findEdgeId(t){for(let o of this._edges.values())if(o.id===t||o.channelIds.includes(t))return o.id;return null}waitForEdge(t){let o=this.findEdgeId(t);return o?Promise.resolve(o):new Promise(r=>{let n=a=>{(a.id===t||a.channelIds.includes(t))&&(this._emitter.off(yK,n),r(a.id))};this._emitter.on(yK,n)})}createNonce(){return Math.random().toString(16).slice(2)}send(t){this._emitMessage({...t,source:this.id})}call(t,o={timeout:1e4}){let r=this.createNonce(),n=new Promise((a,s)=>{let l=setTimeout(()=>{this._callbacks.delete(r),s(new Error("Call timed out"))},o.timeout);this._callbacks.set(r,c=>{this._callbacks.delete(r),clearTimeout(l),o.signal?.aborted?o.signal.reason instanceof Error&&s(o.signal.reason):c instanceof Error?s(c):a(c)})});return this._emitMessage({...t,source:this.id,nonce:r}),n}on(t,o){return this._emitter.on(t,o),this}off(t,o){return this._emitter.off(t,o),this}once(t,o){this._emitter.once(t,o)}onCall(t,o){this._callers.set(t,async(...r)=>await o(...r))}removeCaller(){}handshakeAll(){this._pipes.forEach(t=>this._emitHandshake(t))}destroy(){this._emitter.removeAllListeners(),this._callbacks.clear(),this._callers.clear(),this._edgePipes.clear(),this._pipes=[],this._destroyed=!0}};Rv.Channel=SK});var CK=xa(Lv=>{"use strict";d();Object.defineProperty(Lv,"__esModule",{value:!0});Lv.RemoteClient=Lv.RemoteHost=void 0;var AK=class{channel;constructor(t,o){this.channel=t;for(let[r,n]of Object.entries(o))t.onCall(r,async a=>await n(...a));t.handshakeAll()}};Lv.RemoteHost=AK;var kK=class{hostName;channel;constructor(t,o){this.hostName=t,this.channel=o}async connect(){await this.channel.waitForEdge(this.hostName)}run(t,...o){return this.channel.call({name:t,destination:this.hostName,data:o})}};Lv.RemoteClient=kK});var z2e=xa(Ov=>{"use strict";d();Object.defineProperty(Ov,"__esModule",{value:!0});Ov.WorkerClient=Ov.createWorkerHost=void 0;var _2e=wK(),U2e=CK(),_at=(e,t)=>{let o=new _2e.Channel(e);return o.addPipe({emit:(r,n)=>postMessage({event:r,data:n}),listen:(r,n)=>addEventListener("message",({data:a})=>{a.event===r&&n(a.data)})}),new U2e.RemoteHost(o,t)};Ov.createWorkerHost=_at;var TK=class extends U2e.RemoteClient{workerOpts;worker;workerListeners=[];url;constructor(t,o,r,n={}){let a=new _2e.Channel(t);if(super(o,a),this.workerOpts=n,r instanceof Blob){let s=new Blob([r],{type:"text/javascript"});this.url=URL.createObjectURL(s)}else this.url=r}async init(){let t=this.worker=new Worker(this.url,this.workerOpts);this.channel.addPipe({emit:(o,r)=>t.postMessage({event:o,data:r}),listen:(o,r)=>{let n=a=>{let{event:s,data:l}=a.data;s===o&&r(l)};this.workerListeners.push(n),t.addEventListener("message",n)}}),await this.connect()}destroy(){if(this.worker){for(let t of this.workerListeners)this.worker.removeEventListener("message",t);this.worker.terminate()}this.channel.destroy(),this.url.startsWith("blob:")&&URL.revokeObjectURL(this.url)}};Ov.WorkerClient=TK});var $2e=xa(cm=>{"use strict";d();var Uat=cm&&cm.__createBinding||(Object.create?(function(e,t,o,r){r===void 0&&(r=o);var n=Object.getOwnPropertyDescriptor(t,o);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,n)}):(function(e,t,o,r){r===void 0&&(r=o),e[r]=t[o]})),IK=cm&&cm.__exportStar||function(e,t){for(var o in e)o!=="default"&&!Object.prototype.hasOwnProperty.call(t,o)&&Uat(t,e,o)};Object.defineProperty(cm,"__esModule",{value:!0});IK(wK(),cm);IK(CK(),cm);IK(z2e(),cm)});var EK,DK,_t,um,jI=h(()=>{"use strict";d();EK="shikijs/textmate-grammars-themes",DK="bc5436518111d87ea58eb56d97b3f9bec30e6b83",_t=e=>`https://cdn.jsdelivr.net/gh/${EK}@${DK}/packages/tm-themes/themes/${e}.json`,um={DarkPlus:_t("dark-plus"),MaterialCandy:"https://raw.githubusercontent.com/millsp/material-candy/master/material-candy.json",Andromeeda:_t("andromeeda"),AuroraX:_t("aurora-x"),AyuDark:_t("ayu-dark"),CatppuccinLatte:_t("catppuccin-latte"),CatppuccinFrappe:_t("catppuccin-frappe"),CatppuccinMacchiato:_t("catppuccin-macchiato"),CatppuccinMocha:_t("catppuccin-mocha"),DraculaSoft:_t("dracula-soft"),Dracula:_t("dracula"),EverforestDark:_t("everforest-dark"),EverforestLight:_t("everforest-light"),GithubDarkDefault:_t("github-dark-default"),GithubDarkDimmed:_t("github-dark-dimmed"),GithubDarkHighContrast:_t("github-dark-high-contrast"),GithubDark:_t("github-dark"),GithubLightDefault:_t("github-light-default"),GithubLightHighContrast:_t("github-light-high-contrast"),GithubLight:_t("github-light"),GruvBoxDarkHard:_t("gruvbox-dark-hard"),GruvBoxDarkMedium:_t("gruvbox-dark-medium"),GruvBoxDarkSoft:_t("gruvbox-dark-soft"),GruvBoxLightHard:_t("gruvbox-light-hard"),GruvBoxLightMedium:_t("gruvbox-light-medium"),GruvBoxLightSoft:_t("gruvbox-light-soft"),Houston:_t("houston"),KanagawaDragon:_t("kanagawa-dragon"),KanagawaLotus:_t("kanagawa-lotus"),KanagawaWave:_t("kanagawa-wave"),LaserWave:_t("laserwave"),LightPlus:_t("light-plus"),MaterialDarker:_t("material-theme-darker"),MaterialDefault:_t("material-theme"),MaterialLighter:_t("material-theme-lighter"),MaterialOcean:_t("material-theme-ocean"),MaterialPalenight:_t("material-theme-palenight"),MinDark:_t("min-dark"),MinLight:_t("min-light"),Monokai:_t("monokai"),NightOwl:_t("night-owl"),Nord:_t("nord"),OneDarkPro:_t("one-dark-pro"),OneLight:_t("one-light"),Plastic:_t("plastic"),Poimandres:_t("poimandres"),Red:_t("red"),RosePineDawn:_t("rose-pine-dawn"),RosePineMoon:_t("rose-pine-moon"),RosePine:_t("rose-pine"),SlackDark:_t("slack-dark"),SlackOchin:_t("slack-ochin"),SnazzyLight:_t("snazzy-light"),SolarizedDark:_t("solarized-dark"),SolarizedLight:_t("solarized-light"),Synthwave84:_t("synthwave-84"),TokyoNight:_t("tokyo-night"),Vesper:_t("vesper"),VitesseBlack:_t("vitesse-black"),VitesseDark:_t("vitesse-dark"),VitesseLight:_t("vitesse-light")}});function Lh(e){if(Object.prototype.hasOwnProperty.call(Fv,e))return Fv[e];let t=Object.values(Fv).find(o=>o.aliases?.includes(e));return t?(jat.set(e,t),t):null}var zat,$at,Gat,Hat,Fv,G2e,H2e,jat,qI=h(()=>{"use strict";d();jI();zat="Vencord/ShikiPluginAssets",$at="75d69df9fdf596a31eef8b7f6f891231a6feab44",Gat=`https://cdn.jsdelivr.net/gh/${zat}@${$at}/grammars.json`,Hat=e=>`https://cdn.jsdelivr.net/gh/${EK}@${DK}/packages/tm-grammars/grammars/${e}.json`,Fv={},G2e=async()=>{let e=await fetch(Gat).then(o=>o.ok?o.json():[]),t=Object.fromEntries(e.map(o=>{let{name:r,displayName:n,...a}=o;return[r,{...a,id:r,name:n,grammarUrl:Hat(r)}]}));Object.assign(Fv,t)},H2e=e=>e.grammar?Promise.resolve(e.grammar):fetch(e.grammarUrl).then(t=>t.json()),jat=new Map});var q2e,PK,j2e,Eo,q4=h(()=>{"use strict";d();hK();xK();q2e=Xu($2e());qI();jI();PK=Object.values(um),Eo={client:null,currentTheme:null,currentThemeUrl:null,timeoutMs:1e4,languages:Fv,themes:um,loadedThemes:new Set,loadedLangs:new Set,clientPromise:new Promise(e=>j2e=e),init:async e=>{let t=await fetch(B2e).then(n=>n.blob()),o=Eo.client=new q2e.WorkerClient("shiki-client","shiki-host",t,{name:"ShikiWorker"});await o.init();let r=e||PK[0];await G2e(),await o.run("setOnigasm",{wasm:R2e}),await o.run("setHighlighter",{theme:r,langs:[]}),Eo.loadedThemes.add(r),await Eo._setTheme(r),j2e(o)},_setTheme:async e=>{Eo.currentThemeUrl=e;let{themeData:t}=await Eo.client.run("getTheme",{theme:e});Eo.currentTheme=JSON.parse(t),gK({id:e,theme:Eo.currentTheme})},loadTheme:async e=>{let t=await Eo.clientPromise;Eo.loadedThemes.has(e)||(await t.run("loadTheme",{theme:e}),Eo.loadedThemes.add(e))},setTheme:async e=>{await Eo.clientPromise,e||=PK[0],Eo.loadedThemes.has(e)||await Eo.loadTheme(e),await Eo._setTheme(e)},loadLang:async e=>{let t=await Eo.clientPromise,o=Lh(e);!o||Eo.loadedLangs.has(o.id)||(await t.run("loadLanguage",{lang:{...o,grammar:o.grammar??await H2e(o)}}),Eo.loadedLangs.add(o.id))},tokenizeCode:async(e,t)=>{let o=await Eo.clientPromise,r=Lh(t);return r?(Eo.loadedLangs.has(r.id)||await Eo.loadLang(r.id),await o.run("codeToThemedTokens",{code:e,lang:t,theme:Eo.currentThemeUrl??PK[0]})):[]},destroy(){Eo.currentTheme=null,Eo.currentThemeUrl=null,gK({id:null,theme:null}),Eo.client?.destroy()}}});var W4,MK=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/shikiCodeblocks.desktop/devicon.css",{name:"src/plugins/shikiCodeblocks.desktop/devicon.css",source:'@import url("https://cdn.jsdelivr.net/gh/devicons/devicon@v2.17.0/devicon.min.css");',classNames:{},dom:null});W4="src/plugins/shikiCodeblocks.desktop/devicon.css"});var K4=h(()=>{"use strict";d()});var Wat,Zf,NK=h(()=>{"use strict";d();j();nl();Be();Ta();R();q4();jI();MK();K4();Wat=Object.keys(um),Zf=M({theme:{type:4,description:"Default themes",options:Wat.map(e=>({label:Pp(YU(e)),value:um[e],default:um[e]===um.DarkPlus})),onChange:Eo.setTheme},customTheme:{type:0,description:"A link to a custom vscode theme",placeholder:um.MaterialCandy,onChange:e=>{Eo.setTheme(e||Zf.store.theme)}},tryHljs:{type:4,displayName:"Try Highlight.js",description:"Use the more lightweight default Discord highlighter and theme.",options:[{label:"Never",value:"NEVER"},{label:"Prefer Shiki instead of Highlight.js",value:"SECONDARY",default:!0},{label:"Prefer Highlight.js instead of Shiki",value:"PRIMARY"},{label:"Always",value:"ALWAYS"}]},useDevIcon:{type:4,description:"How to show language icons on codeblocks",options:[{label:"Disabled",value:"DISABLED"},{label:"Colorless",value:"GREYSCALE",default:!0},{label:"Colored",value:"COLOR"}],onChange:e=>{e==="DISABLED"?La(W4):Oi(W4)}},bgOpacity:{type:5,description:"Background opacity",markers:[0,20,40,60,80,100],default:100,stickToMarkers:!1,componentProps:{onValueRender:null}}},{theme:{disabled(){return!!this.store.customTheme}},customTheme:{isValid(e){if(!e)return!0;let t=fc(e);return t?t.pathname.endsWith(".json")?!0:"Must be a json file":"Must be a valid URL"}}})});function K2e(e){let t=Zf.use([...e,"customTheme","theme"]),[o,r]=V.useState(!1),n=t.customTheme||t.theme,a=Eo.currentThemeUrl&&n&&n!==Eo.currentThemeUrl;return o&&!a&&r(!1),!o&&a&&(r(!0),Eo.setTheme(n)),{...t,isThemeLoading:o}}var Q2e=h(()=>{"use strict";d();q4();NK();C()});function Z2e(e){return e=e.slice(1),e.length<6&&(e=e.split("").map(t=>t+t).join("")),e.length===6&&(e+="ff"),e.length>6&&(e=e.slice(0,6)),e.split(/(..)/).filter(Boolean).map(t=>parseInt(t,16))}var Y2e=h(()=>{"use strict";d()});var Bs,Q4,J2e,X2e,Z4=h(()=>{"use strict";d();qI();K4();we();le();Bs=K("vc-shiki-"),Q4=Ae("highlight","registerLanguage"),J2e=vr(["codeBlock:{react("],new RegExp(`"hljs".+?${af.source}`)),X2e=({lang:e,tryHljs:t})=>{let o=e?Q4?.getLanguage?.(e):null,n=(e?Lh(e):null)?.name;switch(t){case"ALWAYS":return!0;case"PRIMARY":return!!o||e==="";case"SECONDARY":return!n&&!!o;case"NEVER":return!1;default:return!1}}});function V2e(e){let[t,o]=V.useState(!1);function r(n){po(n),o(!0),setTimeout(()=>{o(!1)},e)}return[t,r]}var eSe=h(()=>{"use strict";d();mi();C()});function tSe({content:e,...t}){let[o,r]=V2e(1e3);return i("button",{...t,style:{...t.style,cursor:o?"default":void 0},onClick:()=>r(e)},o?"Copied!":"Copy")}var oSe=h(()=>{"use strict";d();eSe()});function nSe({content:e,theme:t}){return i("div",{className:Bs("btns")},i(tSe,{content:e,className:Bs("btn"),style:{backgroundColor:t.accentBgColor,color:t.accentFgColor}}))}var rSe=h(()=>{"use strict";d();Z4();oSe()});var iSe,aSe=h(()=>{"use strict";d();Z4();iSe=({theme:e,useHljs:t,lang:o,content:r,tokens:n})=>{let a;if(t)try{let{value:l}=Q4.highlight(r,{language:o,ignoreIllegals:!0});a=l.split(` `).map((c,u)=>i("span",{key:u,dangerouslySetInnerHTML:{__html:c}}))}catch{a=r.split(` `).map((l,c)=>i("span",{key:c},l))}else a=(n??r.split(` `).map(c=>[{color:e.plainColor,content:c}])).map((c,u)=>c.length===0?i("span",{key:u},` `):i(f,null,c.map(({content:p,color:m,fontStyle:g},x)=>i("span",{key:x,style:{color:m,fontStyle:(g??0)&1?"italic":void 0,fontWeight:(g??0)&2?"bold":void 0,textDecoration:(g??0)&4?"underline":void 0}},p))));let s=a.map((l,c)=>i("tr",{className:Bs("table-row"),key:c},i("td",{className:Bs("table-cell"),style:{color:e.plainColor}},c+1),i("td",{className:Bs("table-cell")},l)));return i("table",{className:Bs("table")},...s)}});function sSe({langName:e,useDevIcon:t,shikiLang:o}){return e?i("div",{className:Bs("lang")},t!=="DISABLED"&&o?.devicon&&i("i",{className:`${Bs("devicon")} devicon-${o.devicon}${t==="COLOR"?" colored":""}`}),e):i(f,null)}var lSe=h(()=>{"use strict";d();K4();Z4()});var cSe,BK,Kat,uSe=h(()=>{"use strict";d();Pe();qI();q4();Q2e();hK();Y2e();Z4();Kt();C();rSe();aSe();lSe();cSe=!1,BK=e=>{let[t,o,r]=Ro(J2e);return G(()=>{r||(cSe=!0)},[r]),!cSe&&r?null:i("pre",{className:Bs("container")},i(H,null,i(Kat,{...e})))},Kat=({lang:e,content:t,isPreview:o})=>{let{tryHljs:r,useDevIcon:n,bgOpacity:a}=K2e(["tryHljs","useDevIcon","bgOpacity"]),{id:s,theme:l}=N2e(),c=e?Lh(e):null,u=X2e({lang:e,tryHljs:r}),[p,m]=N0(!0),[g]=Ro(async()=>!c||u||!m?null:await Eo.tokenizeCode(t,e),{fallbackValue:null,deps:[e,t,s,m]}),x={plainColor:l?.fg||"var(--text-default)",accentBgColor:l?.colors?.["statusBar.background"]||(u?"#7289da":"#007BC8"),accentFgColor:l?.colors?.["statusBar.foreground"]||"#FFF",backgroundColor:l?.colors?.["editor.background"]||"var(--background-base-lower)"},v;return e&&(v=u?Q4?.getLanguage?.(e)?.name:c?.name),i("div",{ref:p,className:Bs("root",{plain:!v,preview:o}),style:{backgroundColor:u?x.backgroundColor:`rgba(${Z2e(x.backgroundColor).concat(a/100).join(", ")})`,color:x.plainColor}},i("code",{className:Bs("code")},i(sSe,{langName:v,useDevIcon:n,shikiLang:c}),i(iSe,{theme:x,useHljs:u,lang:e,content:t,tokens:g}),!o&&i(nSe,{content:t,theme:x})))}});var dSe,pSe,mSe=h(()=>{"use strict";d();dSe=new Map,pSe=()=>{dSe.forEach(e=>e.remove()),dSe.clear()}});var WI,fSe=h(()=>{"use strict";d();D2e();nl();O();R();M2e();q4();uSe();MK();NK();K4();mSe();WI=S({name:"ShikiCodeblocks",description:"Brings vscode-style codeblocks into Discord, powered by Shiki",tags:["Appearance","Chat","Customisation"],authors:[b.Vap],reporterTestable:8,settings:Zf,patches:[{find:"codeBlock:{react(",replacement:{match:/codeBlock:\{react\((\i),(\i),(\i)\)\{/,replace:"$&return $self.renderHighlighter($1,$2,$3);"}},{find:"#{intl::PREVIEW_NUM_LINES}",replacement:{match:/(?<=function \i\((\i)\)\{)(?=let\{text:\i,language:)/,replace:"return $self.renderHighlighter({lang:$1.language,content:$1.text});"}}],start:async()=>{Zf.store.useDevIcon!=="DISABLED"&&Oi(W4),await Eo.init(Zf.store.customTheme||Zf.store.theme)},stop:()=>{Eo.destroy(),pSe()},settingsAboutComponent:()=>i(BK,{lang:"tsx",content:P2e,isPreview:!0}),shiki:Eo,renderHighlighter:({lang:e,content:t})=>i(BK,{lang:e?.toLowerCase(),content:t,isPreview:!1})})});var KI,QI,gSe=h(()=>{"use strict";d();j();O();R();C();KI=M({noShiftDelete:{type:3,description:"Remove requirement to hold shift for deleting a message.",default:!0},noShiftPin:{type:3,description:"Remove requirement to hold shift for pinning a message.",default:!0},noQuickReacts:{default:!0,restartNeeded:!0,type:3,description:"Hide quick reacts. By default, showing the full menu hides quick react buttons."}}),QI=S({name:"ShowAllMessageButtons",description:"Always show all message buttons no matter if you are holding the shift key or not.",tags:["Chat","Utility"],authors:[b.Nuckyz],settings:KI,patches:[{find:"#{intl::MESSAGE_UTILITIES_A11Y_LABEL}",replacement:[{match:/isExpanded:\i&&(.+?),/,replace:"isExpanded:$1,"},{predicate:()=>KI.store.noShiftDelete,match:/onClick:.{10,20}(?=,dangerous:!0)/,replace:"onClick:() => $self.deleteMessage(arguments[0].message)"},{predicate:()=>KI.store.noShiftPin,match:/onClick:.{10,30}(?=\},"pin")/,replace:"onClick:() => $self.toggleMessagePin(arguments[0]),"},{predicate:()=>!KI.store.noQuickReacts,match:/\i(\?null:\(0,\i\.jsxs\).{0,100}message:\i\}\)),\(0,\i\.jsxs?\)\(\i,\{\}\)/,replace:"false$1"}]}],deleteMessage({channel_id:e,id:t}){fo.deleteMessage(e,t)},toggleMessagePin({channel:e,message:t}){if(t.pinned)return U0.unpinMessage(e,t.id);U0.pinMessage(e,t.id)}})});var hSe=h(()=>{});function xSe(){let e=NS(RK.colors.INTERACTIVE_MUTED).hex(),t=NS(RK.colors.INTERACTIVE_ICON_ACTIVE??RK.colors.INTERACTIVE_ACTIVE).hex();return i(Qat,{color:e,forcedIconColor:t,size:16,tooltipText:Xe("CONNECTION_VERIFIED"),className:"vc-sc-tooltip-icon"})}var RK,Qat,vSe=h(()=>{"use strict";d();_e();le();C();RK=qn(e=>e.colors?.INTERACTIVE_MUTED?.css),Qat=he("#{intl::CONNECTIONS_ROLE_OFFICIAL_ICON_TOOLTIP}")});async function Vat(e){try{let t=await fetch(`https://api.github.com/users/${encodeURIComponent(e)}/orgs`);return t.ok?await t.json():[]}catch{return[]}}function est({username:e,size:t,iconSrc:o}){let[r,n]=T([]);return G(()=>{let a=!1;return Vat(e).then(s=>{a||n(s)}),()=>{a=!0}},[e]),r.length?i(f,null,r.map(a=>i(ve,{text:a.login,key:a.login},s=>i("a",{...s,className:"vc-user-connection",href:`https://github.com/${a.login}`,target:"_blank",rel:"noreferrer"},i("img",{src:o,alt:a.login,style:{width:t,height:t}}))))):null}function ost({id:e,theme:t}){let o=Co.getUserProfile(e);if(!o)return null;let r=o.connectedAccounts;return r?.length?i(pe,{gap:Xat(Yf.store.iconSpacing),flexWrap:"wrap"},r.map(n=>i(nst,{connection:n,theme:t,key:n.id}))):null}function nst({connection:e,theme:t}){let o=Yat.get(Zat(e.type)),r=o.getPlatformUserUrl?.(e),n=i("img",{"aria-label":e.name,src:t==="light"?o.icon.lightSVG:o.icon.darkSVG,style:{width:Yf.store.iconSize,height:Yf.store.iconSize}}),a=r?sn:wa;return i(f,null,i(ve,{text:i("span",{className:"vc-sc-tooltip"},i("span",{className:"vc-sc-connection-name"},e.name),e.verified&&i(xSe,null),i(a,{height:16,width:16,className:"vc-sc-tooltip-icon"})),key:e.id},s=>r?i("a",{...s,className:"vc-user-connection",href:r,target:"_blank",rel:"noreferrer",onClick:l=>{Ve(nm.name)&&nm.handleLink(l.currentTarget,l)}},n):i("button",{...s,className:"vc-user-connection",onClick:()=>{e.type==="xbox"?VencordNative.native.openExternal(`https://www.xbox.com/en-US/play/user/${encodeURIComponent(e.name)}`):ft(e.name)}},n)),e.type==="github"&&Yf.store.showGithubOrgs&&i(est,{username:e.name,size:Yf.store.iconSize,iconSrc:t==="light"?o.icon.lightSVG:o.icon.darkSVG}))}var Zat,Yat,Jat,Xat,Yf,tst,ZI,ySe=h(()=>{"use strict";d();hSe();Jt();j();Pe();Lt();ot();WT();O();_e();R();le();C();vSe();Zat=Oe(".TWITTER_LEGACY:"),Yat=Ae("isSupported","getByUrl"),Jat=Oe(".getPreviewThemeColors","primaryColor:"),Xat=e=>(e??0)*2+4,Yf=M({iconSize:{type:1,description:"Icon size (px)",default:32},iconSpacing:{type:4,description:"Icon margin",default:1,options:[{label:"Compact",value:0},{label:"Cozy",value:1},{label:"Roomy",value:2}]},showGithubOrgs:{type:3,description:"Show GitHub organizations the user is a member of",default:!0},showOnModal:{type:3,description:"Show connected accounts in the full-size profile modal",default:!0}});tst=H.wrap(e=>i(ost,{...e,id:e.user.id,theme:Jat(e).theme}),{noop:!0});ZI=S({name:"ShowConnections",description:"Show connected accounts in user popouts",tags:["Friends","Appearance"],authors:[b.TheKodeToad],settings:Yf,patches:[{find:'"UserProfilePopout");',replacement:{match:/userId:\i\.id,guild:\i\}\)(?=])/,replace:"$&,$self.profilePopoutComponent(arguments[0])"}},{find:",applicationRoleConnection:",predicate:()=>Yf.store.showOnModal,replacement:{match:/\i\.length>0.{0,250}locale:\i\}\)\}\)/,replace:"$self.profilePopoutComponent(arguments[0]),"}},{find:".MODAL_V2,onClose:",predicate:()=>Yf.store.showOnModal,replacement:{match:/!\i&&\(\i\|\|\i\).{0,250}profileAppConnections\}\)\}\)/,replace:"$self.profilePopoutComponent(arguments[0]),"}}],profilePopoutComponent:tst})});var bSe=h(()=>{});function pst({channel:e}){let{defaultAllowedUsersAndRolesDropdownState:t}=Pc.use(["defaultAllowedUsersAndRolesDropdownState"]),[o,r]=T([]),{type:n,topic:a,lastMessageId:s,defaultForumLayout:l,lastPinTimestamp:c,defaultAutoArchiveDuration:u,availableTags:p,id:m,rateLimitPerUser:g,defaultThreadRateLimitPerUser:x,defaultSortOrder:v,defaultReactionEmoji:y,bitrate:A,rtcRegion:k,videoQualityMode:w,permissionOverwrites:I,guild_id:E}=e;return G(()=>{let N=[],B=$e.getGuild(E)?.ownerId;bt.getMember(E,B)||N.push(B),Object.values(I).forEach(({type:_,id:q})=>{_===1&&!bt.getMember(E,q)&&N.push(q)}),N.length>0&&Q.dispatch({type:"GUILD_MEMBERS_REQUEST",guildIds:[E],userIds:N}),Ve(Ph.name)&&r(VT(Object.values(I).map(_=>({type:_.type,id:_.id,overwriteAllow:_.allow,overwriteDeny:_.deny})),E))},[m]),i("div",{className:X(LK.auto,LK.customTheme,LK.managedReactiveScroller)},i("div",{className:$a("container")},i("img",{className:$a("logo"),src:dst}),i("div",{className:$a("heading-container")},i(Y,{size:"xxl",weight:"bold"},"This is a ",ht.can(ct.VIEW_CHANNEL,e)?"locked":"hidden"," ",sst[n]," channel"),e.isNSFW()&&i(ve,{text:"NSFW"},({onMouseLeave:N,onMouseEnter:B})=>i("svg",{onMouseLeave:N,onMouseEnter:B,className:$a("heading-nsfw-icon"),width:"32",height:"32",viewBox:"0 0 48 48","aria-hidden":!0,role:"img"},i("path",{fill:"currentColor",d:"M.7 43.05 24 2.85l23.3 40.2Zm23.55-6.25q.75 0 1.275-.525.525-.525.525-1.275 0-.75-.525-1.3t-1.275-.55q-.8 0-1.325.55-.525.55-.525 1.3t.55 1.275q.55.525 1.3.525Zm-1.85-6.1h3.65V19.4H22.4Z"})))),!e.isGuildVoice()&&!e.isGuildStageVoice()&&i(Y,{size:"lg"},"You can not see the ",e.isForumChannel()?"posts":"messages"," of this channel.",e.isForumChannel()&&a&&a.length>0&&" However you may see its guidelines:"),e.isForumChannel()&&a&&a.length>0&&i("div",{className:$a("topic-container")},kt.parseTopic(a,!1,{channelId:m})),s&&i(Y,{size:"md"},"Last ",e.isForumChannel()?"post":"message"," created:",i(Hr,{timestamp:new Date(en.extractTimestamp(s))})),c&&i(Y,{size:"md"},"Last message pin: ",i(Hr,{timestamp:new Date(c)})),(g??0)>0&&i(Y,{size:"md"},"Slowmode: ",hS(g,"seconds")),(x??0)>0&&i(Y,{size:"md"},"Default thread slowmode: ",hS(x,"seconds")),(e.isGuildVoice()||e.isGuildStageVoice())&&A!=null&&i(Y,{size:"md"},"Bitrate: ",A," bits"),k!==void 0&&i(Y,{size:"md"},"Region: ",k??"Automatic"),(e.isGuildVoice()||e.isGuildStageVoice())&&i(Y,{size:"md"},"Video quality mode: ",ust[w??1]),(u??0)>0&&i(Y,{size:"md"},"Default inactivity duration before archiving ",e.isForumChannel()?"posts":"threads",":"," "+hS(u,"minutes")),l!=null&&i(Y,{size:"md"},"Default layout: ",cst[l]),v!=null&&i(Y,{size:"md"},"Default sort order: ",lst[v]),y!=null&&i("div",{className:$a("default-emoji-container")},i(Y,{size:"md"},"Default reaction emoji:"),kt.defaultRules[y.emojiName?"emoji":"customEmoji"].react({name:y.emojiName?ist.convertSurrogateToName(y.emojiName):ar.getCustomEmojiById(y.emojiId)?.name??"",emojiId:y.emojiId??void 0,surrogate:y.emojiName??void 0,src:y.emojiName?ast.getURL(y.emojiName):void 0},void 0,{key:0})),e.hasFlag(16)&&i(Y,{size:"md"},"Posts on this forum require a tag to be set."),p&&p.length>0&&i("div",{className:$a("tags-container")},i(Y,{size:"lg",weight:"bold"},"Available tags:"),i("div",{className:$a("tags")},p.map(N=>i(rst,{tag:N,key:N.id})))),i("div",{className:$a("allowed-users-and-roles-container")},i("div",{className:$a("allowed-users-and-roles-container-title")},Ve(Ph.name)&&i(ve,{text:"Permission Details"},({onMouseLeave:N,onMouseEnter:B})=>i("button",{onMouseLeave:N,onMouseEnter:B,className:$a("allowed-users-and-roles-container-permdetails-btn"),onClick:()=>Dh(o,$e.getGuild(e.guild_id),e.name)},i("svg",{width:"24",height:"24",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M7 12.001C7 10.8964 6.10457 10.001 5 10.001C3.89543 10.001 3 10.8964 3 12.001C3 13.1055 3.89543 14.001 5 14.001C6.10457 14.001 7 13.1055 7 12.001ZM14 12.001C14 10.8964 13.1046 10.001 12 10.001C10.8954 10.001 10 10.8964 10 12.001C10 13.1055 10.8954 14.001 12 14.001C13.1046 14.001 14 13.1055 14 12.001ZM19 10.001C20.1046 10.001 21 10.8964 21 12.001C21 13.1055 20.1046 14.001 19 14.001C17.8954 14.001 17 13.1055 17 12.001C17 10.8964 17.8954 10.001 19 10.001Z"})))),i(Y,{size:"lg",weight:"bold"},"Allowed users and roles:"),i(ve,{text:t?"Hide Allowed Users and Roles":"View Allowed Users and Roles"},({onMouseLeave:N,onMouseEnter:B})=>i("button",{onMouseLeave:N,onMouseEnter:B,className:$a("allowed-users-and-roles-container-toggle-btn"),onClick:()=>Pc.store.defaultAllowedUsersAndRolesDropdownState=!t},i("svg",{width:"24",height:"24",viewBox:"0 0 24 24",transform:t?"scale(1 -1)":"scale(1 1)"},i("path",{fill:"currentColor",d:"M16.59 8.59003L12 13.17L7.41 8.59003L6 10L12 16L18 10L16.59 8.59003Z"}))))),t&&i(SSe,{channel:e}))))}var LK,rst,SSe,wSe,ist,ast,sst,lst,cst,ust,dst,ASe,kSe=h(()=>{"use strict";d();Jt();yt();Pe();kv();eI();I4();Be();Ta();le();C();YI();LK=Ie("auto","managedReactiveScroller","customTheme"),rst=he("#{intl::FORUM_TAG_A11Y_FILTER_BY_TAG}"),SSe=()=>null,wSe=e=>SSe=e,ist=Ae("convertSurrogateToName"),ast=Ae("getURL","getEmojiColors"),sst={0:"text",5:"announcement",15:"forum",2:"voice",13:"stage"},lst={0:"Latest activity",1:"Creation date"},cst={0:"Not set",1:"List view",2:"Gallery view"},ust={1:"Automatic",2:"720p"},dst="/assets/433e3ec4319a9d11b0cbe39342614982.svg";ASe=H.wrap(pst)});function fst(e){return e.channel.id==="null"&&e.channel.name==="Uncategorized"&&e.comparator===-1}var $a,mst,Pc,_v,YI=h(()=>{"use strict";d();bSe();j();Pe();O();we();Be();R();C();kSe();$a=K("vc-shc-"),mst=1n<<20n,Pc=M({channelStyle:{description:"The style used to display hidden channels.",type:4,options:[{label:"Classic",value:0,default:!0},{label:"Muted",value:1},{label:"Show Unreads",value:2},{label:"Muted and Show Unreads",value:3}],restartNeeded:!0},showMode:{description:"The mode used to display hidden channels.",type:4,options:[{label:"Lock Icon replacing channel icon",value:0,default:!0},{label:"Eye icon on the right",value:2},{label:"Lock icon on the right",value:1}],restartNeeded:!0},defaultAllowedUsersAndRolesDropdownState:{description:"Whether the allowed users and roles dropdown on hidden channels should be open by default",type:3,default:!0}});_v=S({name:"ShowHiddenChannels",description:"Show channels that you do not have access to view.",tags:["Servers","Utility"],authors:[b.BigDuck,b.AverageReactEnjoyer,b.D3SOX,b.Ven,b.Nuckyz,b.Nickyux,b.Rini,F.Oggetto],isModified:!0,settings:Pc,patches:[{find:'"placeholder-channel-id"',replacement:[{match:/if\(!\i\.\i\.can\(\i\.\i\.VIEW_CHANNEL.+?{if\(this\.id===\i\).+?threadIds:\[\]}}/,replace:""},{match:/(?<=&&)(?=!\i\.\i\.hasUnread\(this\.record\.id\))/,replace:"$self.isHiddenChannel(this.record)||"},{match:/(this\.record\)\?{renderLevel:(.+?),threadIds.+?renderLevel:).+?(?=,threadIds)/g,replace:(e,t,o)=>`${t}${o}`},{match:/(getRenderLevel\(\i\){.+?return)!\i\.\i\.can\(\i\.\i\.VIEW_CHANNEL,this\.record\)\|\|/,replace:(e,t)=>`${t} `}]},{find:"VoiceChannel, transitionTo: Channel does not have a guildId",replacement:[{match:/(?<=getIgnoredUsersForVoiceChannel\((\i)\.id\)[^;]{0,300}?;return\()/,replace:(e,t)=>`!$self.isHiddenChannel(${t})&&`},{match:/(?=\|\|\i\.\i\.selectVoiceChannel\((\i)\.id\))/,replace:(e,t)=>`||$self.isHiddenChannel(${t})`},{match:/!__OVERLAY__&&\((?<=selectVoiceChannel\((\i)\.id\).+?)/,replace:(e,t)=>`${e}$self.isHiddenChannel(${t},true)||`}]},{find:".AUDIENCE),{isSubscriptionGated",replacement:{match:/(\i)\.isRoleSubscriptionTemplatePreviewChannel\(\)/,replace:(e,t)=>`${e}||$self.isHiddenChannel(${t})`}},{find:'tutorialId:"instant-invite"',replacement:[...["renderEditButton","renderInviteButton"].map(e=>({match:new RegExp(`(?<=${e}\\(\\){)`,"g"),replace:"if($self.isHiddenChannel(this?.props?.channel))return null;"}))]},{find:"VoiceChannel.renderPopout: There must always be something to render",all:!0,replacement:{match:/(?<=renderOpenChatButton(?:",|=)\(\)=>{)/,replace:"if($self.isHiddenChannel(this?.props?.channel))return null;"}},{find:"#{intl::CHANNEL_TOOLTIP_DIRECTORY}",predicate:()=>Pc.store.showMode===0,replacement:{match:/(?<=(\i)\.isNSFW\(\);)switch\(\i\.type\).{0,15}\.GUILD_ANNOUNCEMENT/,replace:(e,t)=>`if($self.isHiddenChannel(${t}))return $self.LockIcon;${e}`}},{find:"UNREAD_IMPORTANT:",predicate:()=>Pc.store.showMode!==0,replacement:[{predicate:()=>Pc.store.showMode===2,match:/\.Children\.count.+?:null(?<=,channel:(\i).+?)/,replace:(e,t)=>`${e},$self.isHiddenChannel(${t})?$self.EyeRightIcon():null`},{predicate:()=>Pc.store.showMode===1,match:/\.Children\.count.+?:null(?<=,channel:(\i).+?)/,replace:(e,t)=>`${e},$self.isHiddenChannel(${t})?$self.LockRightIcon():null`}]},{find:"UNREAD_IMPORTANT:",predicate:()=>Pc.store.channelStyle===1||Pc.store.channelStyle===3,replacement:[{match:/Children\.count.+?;(?=return\(0,\i\.jsxs?\)\(\i\.\i,{focusTarget:)(?<={channel:(\i),name:\i,muted:(\i).+?;)/,replace:(e,t,o)=>`${e}${o}=$self.isHiddenChannel(${t})?true:${o};`},{match:/(?<=\?\i\.\i:\i\.\i,)(.{0,150}?)if\((\i)(?:\)return |\?)(\i\.MUTED)/,replace:(e,t,o,r)=>`${o}?${r}:"",${t}if(${o})return ""`}]},{find:"UNREAD_IMPORTANT:",predicate:()=>Pc.store.channelStyle!==2&&Pc.store.channelStyle!==3,replacement:[{match:/(?<=\.LOCKED;if\()(?<={channel:(\i).+?)/,replace:(e,t)=>`!$self.isHiddenChannel(${t})&&`},{match:/Children\.count.+?;(?=return\(0,\i\.jsxs?\)\(\i\.\i,{focusTarget:)(?<={channel:(\i),name:\i,.+?unread:(\i).+?)/,replace:(e,t,o)=>`${e}${o}=$self.isHiddenChannel(${t})?false:${o};`}]},{find:'"ChannelListUnreadsStore"',replacement:{match:/(?<=\.id\)\))(?=&&\(0,\i\.\i\)\((\i)\))/,replace:(e,t)=>`&&!$self.isHiddenChannel(${t})`}},{find:"renderBottomUnread(){",replacement:{match:/(?<=!0\))(?=&&\(0,\i\.\i\)\((\i\.record)\))/,replace:"&&!$self.isHiddenChannel($1)"}},{find:"GUILD_EVENT)}),[",replacement:{match:/(?<=\.id\)\))(?=&&\(0,\i\.\i\)\((\i)\))/,replace:"&&!$self.isHiddenChannel($1)"}},{find:"Missing channel in Channel.renderHeaderToolbar",replacement:[{match:/renderHeaderToolbar(?:",|=)\(\)=>{.+?case \i\.\i\.GUILD_TEXT:(?=.+?(\i\.push.{0,50}channel:(\i)},"notifications"\)\)))(?<=isLurking:(\i).+?)/,replace:(e,t,o,r)=>`${e}if(!${r}&&$self.isHiddenChannel(${o})){${t};break;}`},{match:/renderHeaderToolbar(?:",|=)\(\)=>{.+?case \i\.\i\.GUILD_MEDIA:(?=.+?(\i\.push.{0,40}channel:(\i)},"notifications"\)\)))(?<=isLurking:(\i).+?)/,replace:(e,t,o,r)=>`${e}if(!${r}&&$self.isHiddenChannel(${o})){${t};break;}`},{match:/renderMobileToolbar(?:",|=)\(\)=>{.+?case \i\.\i\.GUILD_DIRECTORY:(?<=let{channel:(\i).+?)/,replace:(e,t)=>`${e}if($self.isHiddenChannel(${t}))break;`},{match:/(?<=renderHeaderBar(?:",|=)\(\)=>{.+?hideSearch:(\i)\.isDirectory\(\))/,replace:(e,t)=>`||$self.isHiddenChannel(${t})`},{match:/(?<=renderSidebar\(\){)/,replace:"if($self.isHiddenChannel(this?.props?.channel))return null;"},{match:/(?<=renderChat\(\){)/,replace:"if($self.isHiddenChannel(this?.props?.channel))return $self.HiddenChannelLockScreen(this?.props?.channel);"}]},{find:'"MessageManager"',replacement:{match:/forceFetch:\i,isPreload:.+?}=\i;(?=.+?getChannel\((\i)\))/,replace:(e,t)=>`${e}if($self.isHiddenChannel({channelId:${t}}))return;`}},{find:'"alt+shift+down"',replacement:{match:/(?<=getChannel\(\i\);return null!=(\i))(?=.{0,200}?>0\)&&\(0,\i\.\i\)\(\i\))/,replace:(e,t)=>`&&!$self.isHiddenChannel(${t})`}},{find:".APPLICATION_STORE&&null!=",replacement:{match:/getState\(\)\.channelId.+?(?=\.map\(\i=>\i\.id)/,replace:"$&.filter(e=>!$self.isHiddenChannel(e))"}},{find:"#{intl::ROLE_REQUIRED_SINGLE_USER_MESSAGE}",replacement:[{match:/(forceRoles:.+?)(\i\.\i\(\i\.\i\.ADMINISTRATOR,\i\.\i\.VIEW_CHANNEL\))(?<=context:(\i)}.+?)/,replace:(e,t,o,r)=>`${t}$self.swapViewChannelWithConnectPermission(${o},${r})`},{match:/permissionOverwrites\[.+?\i=(?<=context:(\i)}.+?)(?=(.+?)VIEW_CHANNEL)/,replace:(e,t,o)=>`${e}!Vencord.Webpack.Common.PermissionStore.can(${mst}n,${t})?${o}CONNECT):`},{match:/getSortedRoles.+?\.filter\(\i=>(?=!)/,replace:e=>`${e}$self.isHiddenChannel(arguments[0]?.channel)?true:`},{match:/forceRoles:.+?.value\(\)(?<=channel:(\i).+?)/,replace:(e,t)=>`${e}.reduce(...$self.makeAllowedRolesReduce(${t}.guild_id))`},{match:/return\(0,\i\.jsxs?\)\(\i\.\i,{channelId:(\i)\.id,children:\[(?=.{0,1000}?(\(0,\i\.jsxs?\)\("div",{className:\i\.\i,children:\[.{0,100}\i\.length>0.+?\]}\)),)/,replace:(e,t,o)=>`if($self.isHiddenChannel(${t},true)){return${o};}${e}`},{match:/maxUsers:\d+?,users:\i(?<=channel:(\i).+?)/,replace:(e,t)=>`${e},shcChannel:${t}`},{match:/1!==\i\.length(?=\|\|)/,replace:"true"}]},{find:'="interactive-text-default",overflowCountClassName:',replacement:[{match:/let{users:\i,maxUsers:\i,/,replace:"let{shcChannel}=arguments[0];$&"},{match:/\i>0(?=&&!\i&&!\i)/,replace:e=>`($self.isHiddenChannel(typeof shcChannel!=="undefined"?shcChannel:void 0,true)?true:${e})`},{match:/(?<=`\+\$\{)\i(?=\})/,replace:e=>`$self.isHiddenChannel(typeof shcChannel!=="undefined"?shcChannel:void 0,true)&&(${e}-1)<=0?"":${e}`}]},{find:"#{intl::CHANNEL_CALL_CURRENT_SPEAKER}",replacement:[{match:/(?<=&&)\i\.push\(.{0,120}"chat-spacer"/,replace:"(arguments[0]?.inCall||!$self.isHiddenChannel(arguments[0]?.channel,true))&&$&"}]},{find:"#{intl::EMBEDDED_ACTIVITIES_DEVELOPER_ACTIVITY_SHELF_FETCH_ERROR}",replacement:[{match:/renderContent\(\i\){.+?this\.renderVoiceChannelEffects.+?children:/,replace:"$&!this?.props?.inCall&&$self.isHiddenChannel(this?.props?.channel,true)?$self.HiddenChannelLockScreen(this?.props?.channel):"},{match:/renderContent\(\i\){.+?disableGradients:/,replace:"$&!this?.props?.inCall&&$self.isHiddenChannel(this?.props?.channel,true)||"},{match:/(?:{|,)render(?!Header|ExternalHeader).{0,30}?:/g,replace:"$&!this?.props?.inCall&&$self.isHiddenChannel(this?.props?.channel,true)?()=>null:"},{match:/(?=\i\|\|\i!==\i\.\i\.FULL_SCREEN.{0,100}?this\._callContainerRef)/,replace:'$&!this?.props?.inCall&&$self.isHiddenChannel(this?.props?.channel,true)?"":'}]},{find:'"HasBeenInStageChannel"',replacement:[{match:/screenMessage:(\i)\?.+?children:(?=!\1)(?<=let \i,{channel:(\i).+?)/,replace:(e,t,o)=>`${e}$self.isHiddenChannel(${o})?$self.HiddenChannelLockScreen(${o}):`},{match:/render(?:BottomLeft|BottomCenter|BottomRight|ChatToasts):\(\)=>(?<=let \i,{channel:(\i).+?)/g,replace:(e,t)=>`${e}$self.isHiddenChannel(${t})?null:`},{match:/"124px".+?disableGradients:(?<=let \i,{channel:(\i).+?)/,replace:(e,t)=>`${e}$self.isHiddenChannel(${t})||`},{match:/"124px".+?style:(?<=let \i,{channel:(\i).+?)/,replace:(e,t)=>`${e}$self.isHiddenChannel(${t})?void 0:`}]},{find:"#{intl::STAGE_FULL_MODERATOR_TITLE}",replacement:[{match:/\(0,\i\.jsx\)\(\i\.\i\.Divider.+?}\)]}\)(?=.+?:(\i)\.guild_id)/,replace:(e,t)=>`$self.isHiddenChannel(${t})?null:(${e})`},{match:/(?<=numRequestToSpeak:\i\}\)\}\):null,!\i&&)\(0,\i\.jsxs?\).{0,280}?iconClassName:/,replace:"!$self.isHiddenChannel(arguments[0]?.channel,true)&&$&"}]},{find:",queryStaticRouteChannels(",replacement:[{match:/(?<=queryChannels\(\i\){.+?getChannels\(\i)(?=\))/,replace:",true"},{match:/(?<=queryChannels\(\i\){.+?\)\((\i)\.type\))(?=&&!\i\.\i\.can\()/,replace:"&&!$self.isHiddenChannel($1)"}]},{find:'"^/guild-stages/(\\\\d+)(?:/)?(\\\\d+)?"',replacement:{match:/\i\.\i\.can\(\i\.\i\.VIEW_CHANNEL,\i\)/,replace:"true"}},{find:'getConfig({location:"channel_mention"})',replacement:{match:/(?<=getChannel\(\i\);if\(null!=(\i)).{0,200}?return void (?=\i\.default\.selectVoiceChannel)/,replace:(e,t)=>`${e}!$self.isHiddenChannel(${t})&&`}},{find:'"GuildChannelStore"',replacement:[{match:/isChannelGated\(.+?\)(?=&&)/,replace:e=>`${e}&&false`},{match:/(?<=getChannels\(\i)(\){.*?)return (.+?)}/,replace:(e,t,o)=>`,shouldIncludeHidden${t}return $self.resolveGuildChannels(${o},shouldIncludeHidden??arguments[0]==="@favorites");}`}]},{find:"GuildTooltip - ",replacement:{match:/(?<=getChannels\(\i)(?=\))/,replace:",true"}},{find:'"NowPlayingViewStore"',replacement:{match:/(getVoiceStateForUser.{0,150}?)&&\i\.\i\.canWithPartialContext.{0,20}VIEW_CHANNEL.+?}\)(?=\?)/,replace:"$1"}},{find:"#{intl::ROLE_REQUIRED_SINGLE_USER_MESSAGE}",replacement:{match:/(?=function (\i)\(\i\){let{channel:.{0,200}?getSortedRoles\()/,replace:"$self.ChannelBeginHeader=$1;"}},{find:"2026-02-private-channel-hiding",replacement:{match:/(?<=enableObfuscation|enableIntegrityCheck):!0/g,replace:":false"}}],set ChannelBeginHeader(e){wSe(e)},swapViewChannelWithConnectPermission(e,t){return ht.can(ct.CONNECT,t)||(e&=~ct.VIEW_CHANNEL,e|=ct.CONNECT),e},isHiddenChannel(e,t=!1){try{return e==null||Object.hasOwn(e,"channelId")&&e.channelId==null||(e.channelId!=null&&(e=W.getChannel(e.channelId)),e==null||e.isDM()||e.isGroupDM()||e.isMultiUserDM())||["browse","customize","guide"].includes(e.id)?!1:!ht.can(ct.VIEW_CHANNEL,e)||t&&!ht.can(ct.CONNECT,e)}catch(o){return console.error("[ViewHiddenChannels#isHiddenChannel]: ",o),!1}},resolveGuildChannels(e,t){if(t)return e;let o={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n)){o[r]=n;continue}o[r]??=[];for(let a of n)(fst(a)||a.channel.id===null||!this.isHiddenChannel(a.channel))&&o[r].push(a)}return o},makeAllowedRolesReduce(e){return[(t,o,r,n)=>{if(r!==0)return t;let a=n.find(s=>s.id===e);return a?[a]:n},[]]},HiddenChannelLockScreen:e=>i(ASe,{channel:e}),LockIcon:H.wrap(()=>i("svg",{className:$a("channel-list-icon"),height:"18",width:"20",viewBox:"0 0 24 24","aria-hidden":!0,role:"img"},i("path",{fillRule:"evenodd",d:"M17 11V7C17 4.243 14.756 2 12 2C9.242 2 7 4.243 7 7V11C5.897 11 5 11.896 5 13V20C5 21.103 5.897 22 7 22H17C18.103 22 19 21.103 19 20V13C19 11.896 18.103 11 17 11ZM12 18C11.172 18 10.5 17.328 10.5 16.5C10.5 15.672 11.172 15 12 15C12.828 15 13.5 15.672 13.5 16.5C13.5 17.328 12.828 18 12 18ZM15 11H9V7C9 5.346 10.346 4 12 4C13.654 4 15 5.346 15 7V11Z"})),{noop:!0}),EyeRightIcon:H.wrap(()=>i(ve,{text:"Hidden Channel"},({onMouseLeave:e,onMouseEnter:t})=>i("svg",{onMouseLeave:e,onMouseEnter:t,className:X($a("channel-list-icon"),$a("hidden-channel-icon")),width:"24",height:"24",viewBox:"0 0 24 24","aria-hidden":!0,role:"img"},i("path",{fillRule:"evenodd",d:"m19.8 22.6-4.2-4.15q-.875.275-1.762.413Q12.95 19 12 19q-3.775 0-6.725-2.087Q2.325 14.825 1 11.5q.525-1.325 1.325-2.463Q3.125 7.9 4.15 7L1.4 4.2l1.4-1.4 18.4 18.4ZM12 16q.275 0 .512-.025.238-.025.513-.1l-5.4-5.4q-.075.275-.1.513-.025.237-.025.512 0 1.875 1.312 3.188Q10.125 16 12 16Zm7.3.45-3.175-3.15q.175-.425.275-.862.1-.438.1-.938 0-1.875-1.312-3.188Q13.875 7 12 7q-.5 0-.938.1-.437.1-.862.3L7.65 4.85q1.025-.425 2.1-.638Q10.825 4 12 4q3.775 0 6.725 2.087Q21.675 8.175 23 11.5q-.575 1.475-1.512 2.738Q20.55 15.5 19.3 16.45Zm-4.625-4.6-3-3q.7-.125 1.288.112.587.238 1.012.688.425.45.613 1.038.187.587.087 1.162Z"}))),{noop:!0}),LockRightIcon:H.wrap(()=>i(ve,{text:"Hidden Channel"},({onMouseLeave:e,onMouseEnter:t})=>i("svg",{onMouseLeave:e,onMouseEnter:t,className:$a("channel-list-icon")+" shc-hidden-channel-icon",width:"24",height:"24",viewBox:"0 0 24 24","aria-hidden":!0,role:"img"},i("path",{className:"shc-evenodd-fill-current-color",d:"M17 11V7C17 4.243 14.756 2 12 2C9.242 2 7 4.243 7 7V11C5.897 11 5 11.896 5 13V20C5 21.103 5.897 22 7 22H17C18.103 22 19 21.103 19 20V13C19 11.896 18.103 11 17 11ZM12 18C11.172 18 10.5 17.328 10.5 16.5C10.5 15.672 11.172 15 12 15C12.828 15 13.5 15.672 13.5 16.5C13.5 17.328 12.828 18 12 18ZM15 11H9V7C9 5.346 10.346 4 12 4C13.654 4 15 5.346 15 7V11Z"}))),{noop:!0})})});var OK,Uv,JI,CSe=h(()=>{"use strict";d();j();O();He();R();OK=e=>({type:3,description:e,default:!0,restartNeeded:!0}),Uv=M({showTimeouts:OK("Show member timeout icons in chat."),showInvitesPaused:OK("Show the invites paused tooltip in the server list."),showModView:OK("Show the member mod view context menu item in all servers.")}),JI=S({name:"ShowHiddenThings",searchTerms:["ShowTimeouts","ShowInvitesPaused","ShowModView","DisableDiscoveryFilters"],description:"Displays various hidden & moderator-only things regardless of permissions.",tags:["Servers","Utility"],authors:[b.Dolfies],settings:Uv,patches:[{find:"showCommunicationDisabledStyles",predicate:()=>Uv.store.showTimeouts,replacement:{match:/&&\i\.\i\.canManageUser\(\i\.\i\.MODERATE_MEMBERS,\i\.author,\i\)/,replace:""}},{find:"INVITES_DISABLED)||",predicate:()=>Uv.store.showInvitesPaused,replacement:{match:/\i\.\i\.can\(\i\.\i.MANAGE_GUILD,\i\)/,replace:"true"}},{find:/,checkElevated:!1}\),\i\.\i\)}(?<=getCurrentUser\(\);return.+?)/,predicate:()=>Uv.store.showModView,replacement:{match:/return \i\.\i\(\i\.\i\(\{user:\i,context:\i,checkElevated:!1\}\),\i\.\i\)/,replace:"return true"}},{find:"#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}),children:",predicate:()=>Uv.store.showModView,replacement:{match:/(#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}.{0,80})role:\i(?<=\[\i\.roles,\i\.highestRoleId,(\i)\].+?)/,replace:(e,t,o)=>`${t}role:$self.getHighestRole(arguments[0],${o})`}},{find:'action:"PRESS_MOD_VIEW",icon:',predicate:()=>Uv.store.showModView,replacement:{match:/\i(?=\?null)/,replace:"false"}}],getHighestRole({member:e},t){try{return t.find(o=>o.id===e.highestRoleId)}catch(o){new ie("ShowHiddenThings").error("Failed to find highest role",o);return}}})});var TSe=h(()=>{});function FK(e,t){let o=W.getChannel(e.channel_id)?.guild_id;if(!o)return null;let r=bt.getMember(o,e.author.id);if(!r?.communicationDisabledUntil)return null;let n=()=>i(hst,{deadline:new Date(r.communicationDisabledUntil),showUnits:!0,stopAtOneSec:!0});return Xe("GUILD_ENABLE_COMMUNICATION_TIME_REMAINING",{username:e.author.username,countdown:n}),t?n():Xe("GUILD_ENABLE_COMMUNICATION_TIME_REMAINING",{username:e.author.username,countdown:n})}var gst,hst,ISe,XI,ESe=h(()=>{"use strict";d();TSe();j();yt();Pe();O();_e();id();R();le();C();gst=xi(/#{intl::MAX_AGE_NEVER}/),hst=c1(e=>e.prototype?.render&&gst.test(e.prototype.render.toString())),ISe=M({displayStyle:{description:"How to display the timeout duration",type:4,options:[{label:"In the Tooltip",value:"tooltip"},{label:"Next to the timeout icon",value:"ssalggnikool",default:!0}]}});XI=S({name:"ShowTimeoutDuration",description:"Shows how much longer a user's timeout will last, either in the timeout icon tooltip or next to it",tags:["Servers","Utility"],authors:[b.Ven,b.Sqaaakoi],settings:ISe,patches:[{find:"#{intl::GUILD_COMMUNICATION_DISABLED_ICON_TOOLTIP_BODY}",replacement:[{match:/\i\.\i,{(text:.{0,30}#{intl::GUILD_COMMUNICATION_DISABLED_ICON_TOOLTIP_BODY}\))/,replace:"$self.TooltipWrapper,{message:arguments[0].message,$1"}]}],TooltipWrapper:H.wrap(({message:e,children:t,text:o})=>ISe.store.displayStyle==="tooltip"?i(ve,{text:FK(e,!1)},r=>i("span",{...r},t)):i(ve,{text:FK(e,!1)},r=>i("div",{...r,className:"vc-std-wrapper"},t,i(Y,{tag:"span",size:"md",color:"text-danger"},FK(e,!0)," timeout remaining"))),{noop:!0})})});function xst(){return i(_K,null,i("mask",{id:"vc-silent-msg-mask"},i("path",{fill:"#fff",d:"M0 0h24v24H0Z"}),i("path",{stroke:"#000",strokeWidth:"5.99068",d:"M0 24 24 0"})),i("path",{fill:"var(--status-danger)",d:"m21.178 1.70703 1.414 1.414L4.12103 21.593l-1.414-1.415L21.178 1.70703Z"}))}var zv,VI,_K,vst,eE,UK=h(()=>{"use strict";d();Ba();yc();j();O();R();C();zv=!1,VI=M({persistState:{type:4,description:"How to persist the silent message toggle state",options:[{label:"Don't persist (reset on channel change)",value:"none",default:!0},{label:"Persist between channels",value:"channels"},{label:"Persist between channels and restarts",value:"restarts"}],onChange(e){zv=e!=="none"&&zv}},autoDisable:{type:3,description:"Automatically disable the silent message toggle again after sending one",default:!0}});_K=({height:e=20,width:t=20,className:o,children:r})=>i("svg",{width:t,height:e,viewBox:"0 0 24 24",className:o,style:{scale:"1.2"}},i("path",{fill:"currentColor",mask:"url(#vc-silent-msg-mask)",d:"M18 10.7101C15.1085 9.84957 13 7.17102 13 4c0-.30736.0198-.6101.0582-.907C12.7147 3.03189 12.3611 3 12 3 8.686 3 6 5.686 6 9v5c0 1.657-1.344 3-3 3v1h18v-1c-1.656 0-3-1.343-3-3v-3.2899ZM8.55493 19c.693 1.19 1.96897 2 3.44497 2s2.752-.81 3.445-2H8.55493ZM18.2624 5.50209 21 2.5V1h-4.9651v1.49791h2.4411L16 5.61088V7h5V5.50209h-2.7376Z"}),r),vst=({isMainChat:e})=>{let[t,o]=T(VI.store.persistState==="restarts"||zv);function r(n){VI.store.persistState!=="none"&&(zv=n),o(n)}return G(()=>{let n=(a,s)=>{t&&(VI.store.autoDisable&&r(!1),s.content.startsWith("@silent ")||(s.content="@silent "+s.content))};return ni(n),()=>{ri(n)}},[t]),e?i(Un,{tooltip:t?"Disable Silent Message":"Enable Silent Message",onClick:()=>r(!t)},t?i(_K,null):i(xst,null)):null},eE=S({name:"SilentMessageToggle",authors:[b.Nuckyz,b.CatNoir,F.Z1xus],description:"Adds a button to the chat bar to toggle sending a silent message.",dependencies:["ChatInputButtonAPI"],tags:["Chat","Utility"],settings:VI,chatBarButton:{icon:_K,render:vst}})});function zK(){for(let e of $K)e()}function DSe(){ho.store.enabledGlobally=!ho.store.enabledGlobally}function GK(e,t,o){t.includes(e)?t.splice(t.indexOf(e),1):t.push(e),o?ho.store.disabledLocations=t.join(", "):ho.store.enabledLocations=t.join(", ")}function bst(){return i("svg",{width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",style:{scale:"1.2"}},i("path",{fill:"currentColor",d:"M18.333 15.556H1.667a1.667 1.667 0 0 1 -1.667 -1.667v-10a1.667 1.667 0 0 1 1.667 -1.667h16.667a1.667 1.667 0 0 1 1.667 1.667v10a1.667 1.667 0 0 1 -1.667 1.667M4.444 6.25V4.861a0.417 0.417 0 0 0 -0.417 -0.417H2.639a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V4.861a0.417 0.417 0 0 0 -0.417 -0.417H5.973a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V4.861a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V4.861a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V4.861a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m-11.667 3.333V8.194a0.417 0.417 0 0 0 -0.417 -0.417H4.306a0.417 0.417 0 0 0 -0.417 0.417V9.583a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V8.194a0.417 0.417 0 0 0 -0.417 -0.417H7.639a0.417 0.417 0 0 0 -0.417 0.417V9.583a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V8.194a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V9.583a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V8.194a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V9.583a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m-11.667 3.333v-1.389a0.417 0.417 0 0 0 -0.417 -0.417H2.639a0.417 0.417 0 0 0 -0.417 0.417V12.917a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m10 0v-1.389a0.417 0.417 0 0 0 -0.417 -0.417H5.973a0.417 0.417 0 0 0 -0.417 0.417V12.917a0.417 0.417 0 0 0 0.417 0.417h8.056a0.417 0.417 0 0 0 0.417 -0.417m3.333 0v-1.389a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V12.917a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417",transform:"translate(2, 3)"}))}function HK(){return ho.store.defaultHidden?ho.store.disabledLocations?ho.store.disabledLocations.split(",").map(e=>e.trim()).filter(Boolean):(ho.store.disabledLocations="",[]):ho.store.enabledLocations?ho.store.enabledLocations.split(",").map(e=>e.trim()).filter(Boolean):(ho.store.enabledLocations="",[])}function PSe(e){let t=typeof e=="string"?W.getChannel(e):e;if(!t)return 0;let o=Fe.getVoiceChannelId(),r=t.guild_id;if(ho.store.alwaysEnableInActiveVoiceChat&&o===t.id)return 1;let n=r?ho.store.temporaryEnableThresholdServers:ho.store.temporaryEnableThresholdDirectMessages;if(n===0)return 0;let s=lt.getLastEditableMessage(t.id)?.timestamp?.getTime?.();return s&&Date.now(){"use strict";d();Ba();yr();Fo();Jt();j();Fi();O();Kt();R();C();$K=new Set;ho=M({enabledGlobally:{type:3,description:"Toggle functionality of your own typing indicator globally.",default:!0},hideChatBoxTypingIndicators:{type:3,description:"Hide other users' typing indicators from above the chat bar.",default:!1},hideMembersListTypingIndicators:{type:3,description:"Hide other users' typing indicators from the members list.",default:!1},chatIcon:{type:3,description:"Show an icon in the chat bar for modifying the plugin on the go.",default:!0},chatIconLeftClickAction:{type:4,description:"What to do when left clicking the chat icon.",options:[{label:"Toggle Typing Globally",value:"global"},{label:"Toggle Typing in Channel",value:"channel",default:!0},{label:"Toggle Typing in Guild",value:"guild"},{label:"Open Plugin Settings",value:"settings"}]},chatIconMiddleClickAction:{type:4,description:"What to do when middle clicking the chat icon.",options:[{label:"Toggle Typing Globally",value:"global"},{label:"Toggle Typing in Channel",value:"channel"},{label:"Toggle Typing in Guild",value:"guild"},{label:"Open Plugin Settings",value:"settings",default:!0}]},chatIconRightClickAction:{type:4,description:"What to do when right clicking the chat icon.",options:[{label:"Toggle Typing Globally",value:"global",default:!0},{label:"Toggle Typing in Channel",value:"channel"},{label:"Toggle Typing in Guild",value:"guild"},{label:"Open Plugin Settings",value:"settings"}]},chatContextMenu:{type:3,description:"Show a dropdown in the chat context menu to modify plugin settings on the go.",default:!0},defaultHidden:{type:3,description:'If enabled, the plugin will hide your typing from others in any DMs/channels/guilds not listed in "Disabled Locations" below. If disabled, the plugin will show your typing to others for any DMs/channels/guilds not listed in "Enabled Locations" below.',default:!0},alwaysEnableInActiveVoiceChat:{type:3,description:"Always allow your typing indicator to show when typing in a voice channel you are connected to.",default:!1},temporaryEnableThresholdServers:{type:1,description:"Temporarily allow your typing indicator to show for this many seconds after sending a message in a server channel. If the typing indicator is already visible in the channel, this setting will have no effect.",default:0},temporaryEnableThresholdDirectMessages:{type:1,description:"Temporarily allow your typing indicator to show for this many seconds after sending a message in a DM or Group DM. If the typing indicator is already visible in the channel, this setting will have no effect.",default:0},enabledLocations:{type:0,description:'Enable functionality for these IDs. Accepts a comma separated list of DM IDs, channel IDs, and guild IDs. Only used if "Default Hidden" is disabled.',default:""},disabledLocations:{type:0,description:'Disable functionality for these IDs. Accepts a comma separated list of DM IDs, channel IDs, and guild IDs. Only used if "Default Hidden" is enabled.',default:""}});yst=({channel:e,type:t})=>{let{enabledGlobally:o,chatIcon:r,defaultHidden:n,enabledLocations:a,disabledLocations:s,alwaysEnableInActiveVoiceChat:l,temporaryEnableThresholdServers:c,temporaryEnableThresholdDirectMessages:u,chatIconLeftClickAction:p,chatIconMiddleClickAction:m,chatIconRightClickAction:g}=ho.use(["enabledGlobally","chatIcon","defaultHidden","enabledLocations","disabledLocations","alwaysEnableInActiveVoiceChat","temporaryEnableThresholdServers","temporaryEnableThresholdDirectMessages","chatIconLeftClickAction","chatIconMiddleClickAction","chatIconRightClickAction"]),x=Vt();if(G(()=>($K.add(x),()=>{$K.delete(x)}),[]),!["normal","sidebar"].some(N=>t.analyticsName===N)||!r)return null;let y=HK(),A=MSe(e),k=PSe(e),w=e.guild_id&&y.includes(e.guild_id)?"Guild":y.includes(e.id)?"Channel":"Global",I=o?k===1?"Typing Always Visible In The Connected Voice Channel Chat":k===2?"Typing Temporarily Visible In This Channel Due To A Recent Message":A?`Typing Hidden (${w})`:`Typing Visible (${w})`:"Typing Visible (Global)";function E(N){switch(N){case"global":DSe();break;case"channel":GK(e.id,y,n);break;case"guild":e.guild_id&&GK(e.guild_id,y,n);break;case"settings":ns(et.SilentTyping);break}}return i(Un,{tooltip:I,onClick:N=>{N.button===0&&E(ho.store.chatIconLeftClickAction)},onAuxClick:N=>{N.button===1&&E(ho.store.chatIconMiddleClickAction)},onContextMenu:N=>{N.button===2&&E(ho.store.chatIconRightClickAction)}},i("svg",{width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",style:{scale:"1.2"}},i("path",{fill:"currentColor",mask:`url(#silent-typing-msg-mask-${e.id})`,d:"M18.333 15.556H1.667a1.667 1.667 0 0 1 -1.667 -1.667v-10a1.667 1.667 0 0 1 1.667 -1.667h16.667a1.667 1.667 0 0 1 1.667 1.667v10a1.667 1.667 0 0 1 -1.667 1.667M4.444 6.25V4.861a0.417 0.417 0 0 0 -0.417 -0.417H2.639a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V4.861a0.417 0.417 0 0 0 -0.417 -0.417H5.973a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V4.861a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V4.861a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V4.861a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V6.25a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m-11.667 3.333V8.194a0.417 0.417 0 0 0 -0.417 -0.417H4.306a0.417 0.417 0 0 0 -0.417 0.417V9.583a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V8.194a0.417 0.417 0 0 0 -0.417 -0.417H7.639a0.417 0.417 0 0 0 -0.417 0.417V9.583a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V8.194a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V9.583a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m3.333 0V8.194a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V9.583a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m-11.667 3.333v-1.389a0.417 0.417 0 0 0 -0.417 -0.417H2.639a0.417 0.417 0 0 0 -0.417 0.417V12.917a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417m10 0v-1.389a0.417 0.417 0 0 0 -0.417 -0.417H5.973a0.417 0.417 0 0 0 -0.417 0.417V12.917a0.417 0.417 0 0 0 0.417 0.417h8.056a0.417 0.417 0 0 0 0.417 -0.417m3.333 0v-1.389a0.417 0.417 0 0 0 -0.417 -0.417h-1.389a0.417 0.417 0 0 0 -0.417 0.417V12.917a0.417 0.417 0 0 0 0.417 0.417h1.389a0.417 0.417 0 0 0 0.417 -0.417",transform:"translate(2, 3)"}),A&&!k&&i(f,null,i("mask",{id:`silent-typing-msg-mask-${e.id}`},i("path",{fill:"#fff",d:"M0 0h24v24H0Z"}),i("path",{stroke:"#000",strokeWidth:"5.99068",d:"M0 24 24 0",transform:"translate(-2, -3)"})),i("path",{fill:"var(--status-danger)",d:"m21.178 1.70703 1.414 1.414L4.12103 21.593l-1.414-1.415L21.178 1.70703Z"}))))};Sst=e=>{let{chatIcon:t,chatContextMenu:o,enabledGlobally:r,defaultHidden:n,hideChatBoxTypingIndicators:a,hideMembersListTypingIndicators:s}=ho.use(["chatIcon","chatContextMenu","enabledGlobally","defaultHidden","hideChatBoxTypingIndicators","hideMembersListTypingIndicators"]);if(!o)return;let l=wt("submit-button",e);if(!l)return;let c=l.findIndex(u=>u?.props?.id==="submit-button");l.splice(c>=0?c:0,0,i(P.MenuItem,{id:"vc-silent-typing",label:"Silent Typing"},i(P.MenuCheckboxItem,{id:"vc-silent-typing-enabled",label:"Enabled",checked:r,action:()=>ho.store.enabledGlobally=!ho.store.enabledGlobally}),i(P.MenuCheckboxItem,{id:"vc-silent-typing-chat-bar-indicators",label:"Chat Bar Indicators",checked:ho.store.hideChatBoxTypingIndicators,action:()=>ho.store.hideChatBoxTypingIndicators=!ho.store.hideChatBoxTypingIndicators}),i(P.MenuCheckboxItem,{id:"vc-silent-typing-members-list-indicators",label:"Members List Indicators",checked:ho.store.hideMembersListTypingIndicators,action:()=>ho.store.hideMembersListTypingIndicators=!ho.store.hideMembersListTypingIndicators}),i(P.MenuCheckboxItem,{id:"vc-silent-typing-chat-icon",label:"Chat Icon",checked:t,action:()=>ho.store.chatIcon=!ho.store.chatIcon}),i(P.MenuCheckboxItem,{id:"vc-silent-typing-default",label:"Default Hidden",checked:n,action:()=>ho.store.defaultHidden=!ho.store.defaultHidden})))};tE=S({name:"SilentTyping",authors:[b.Ven,b.Rini,b.ImBanana,F.Etorix],description:"Hide that you are typing",dependencies:["CommandsAPI","ChatInputButtonAPI"],tags:["Chat","Privacy"],isModified:!0,settings:ho,shouldHideChatBarTypingIndicators:wst,shouldHideMembersListTypingIndicators:Ast,contextMenus:{"textarea-context":Sst},chatBarButton:{icon:bst,render:yst},flux:{VOICE_STATE_UPDATES({voiceStates:e}){let t=e?.[0];t&&t.userId===L.getCurrentUser().id&&t.channelId!==t.oldChannelId&&ho.store.alwaysEnableInActiveVoiceChat&&zK()},MESSAGE_CREATE({message:e}){if(e.author.id===L.getCurrentUser().id){let t=e.guild_id?ho.store.temporaryEnableThresholdServers:ho.store.temporaryEnableThresholdDirectMessages;t>0&&(zK(),setTimeout(()=>{zK()},t*1e3+25))}}},patches:[{find:'.dispatch({type:"TYPING_START_LOCAL"',replacement:{match:/startTyping\(\i\){.+?},stop/,replace:"startTyping:$self.startTyping,stop"}},{find:"activityInviteEducationActivity:",group:!0,replacement:[{match:/(let{activityInviteEducationActivity)/,replace:"const silentTypingShouldHideChatBarTypingIndicators=$self.shouldHideChatBarTypingIndicators();$1"},{match:/("stop-animation".{0,100}?ref:\i,children:)/,replace:"$1silentTypingShouldHideChatBarTypingIndicators?[]:"}]},{find:",{avatarCutoutX",replacement:{match:/isTyping:(\i)=!1(,typingIndicatorRef:\i,isSpeaking:)/,replace:"silentTypingIsTyping:$1=$self.shouldHideMembersListTypingIndicators()?false:(arguments[0].isTyping??false)$2"}}],commands:[{name:"silent-typing",description:"Hide your typing indicator from chat.",inputType:0,options:[{name:"toggle",description:"Toggle functionality globally, for the channel, or for the guild.",required:!1,type:3,choices:[{name:"Global",label:"Global",value:"global"},{name:"Channel",label:"Channel",value:"channel"},{name:"Guild",label:"Guild",value:"guild"}]},{name:"chat-bar-indicators",description:"Hide other users' typing indicators from above the chat bar.",required:!1,type:5},{name:"members-list-indicators",description:"Hide other users' typing indicators from the members list.",required:!1,type:5},{name:"chat-icon",description:"Show an icon in the chat bar for toggling the plugin on the go.",required:!1,type:5},{name:"chat-context-menu",description:"Show a dropdown in the chat context menu to toggle plugin settings on the go.",required:!1,type:5},{name:"default-hidden",description:"Whether to hide typing in DMs/channels/guilds by default or not.",required:!1,type:5}],execute:async(e,t)=>{let o=!1,r=St(e,"toggle");if(typeof r=="string")if(o=!0,r==="global")DSe();else{let l=r==="guild"?t.channel.guild_id:t.channel.id;GK(l,HK(),ho.store.defaultHidden)}let n=St(e,"chat-icon");typeof n=="boolean"&&(o=!0,ho.store.chatIcon=!!n);let a=St(e,"chat-context-menu");typeof a=="boolean"&&(o=!0,ho.store.chatContextMenu=!!a);let s=St(e,"default-hidden");typeof s=="boolean"&&(o=!0,ho.store.defaultHidden=!!s),Ft(t.channel.id,{content:o?"Silent typing settings updated.":"No changes made to silent typing settings."})}}],async startTyping(e){MSe(e)&&!PSe(e)||Q.dispatch({type:"TYPING_START_LOCAL",channelId:e})}})});var BSe=h(()=>{});function qK(e){return new Date(qe.getSince(e.id))}var kst,jK,WK,oE,RSe=h(()=>{"use strict";d();BSe();j();yt();Pe();Lt();lc();O();we();R();C();kst=new Intl.DateTimeFormat(void 0,{month:"numeric",day:"numeric",year:"numeric"}),jK=K("vc-sortFriends-");WK=M({showDates:{type:3,description:"Show dates on friend requests",default:!1,restartNeeded:!0}});oo("SortFriends","SortFriendRequests");oE=S({name:"SortFriends",authors:[b.Megu,F.CallMeGii],description:"Sorts friend requests by date of receipt",tags:["Friends","Organisation"],isModified:!0,settings:WK,patches:[{find:"getRelationshipCounts(){",replacement:{match:/\}\)\.sortBy\((.+?)\)\.value\(\)/,replace:"}).sortBy(row => $self.wrapSort(($1), row)).value()"}},{find:"peopleListItemRef",replacement:{predicate:()=>WK.store.showDates,match:/(?<=children:.*user:(\i),.*subText:).+?(?=,hovered:\i,showAccountIdentifier)/,replace:"$self.makeSubtext($1, $&)"}},{find:"#{intl::FRIEND_REQUEST_CANCEL}",replacement:{predicate:()=>WK.store.showDates,match:/(?<=children:\[)\(0,.{0,100}user:\i,hovered:\i.+?(?=,\(0)(?<=user:(\i).+?)/,replace:(e,t)=>`$self.WrapperDateComponent({user:${t},children:${e}})`}}],wrapSort(e,t){return t.type===3||t.type===4?-qK(t.user):e(t)},makeSubtext(e,t){let o=qK(e);return isNaN(o.getTime())?null:i(pe,{flexDirection:"column",style:{gap:"0px",flexWrap:"wrap",lineHeight:"0.9rem"}},i("span",null,t),i("span",null,i("div",{className:"",style:{display:"flex",alignItems:"center"}},i("svg",{"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"8",height:"8",fill:"none",viewBox:"0 0 24 24",style:{marginRight:"4px",display:"inline-block"}},i("path",{fill:"var(--input-placeholder-text)",fillRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm1-18a1 1 0 1 0-2 0v7c0 .27.1.52.3.7l3 3a1 1 0 0 0 1.4-1.4L13 11.58V5Z",clipRule:"evenodd"})),i("span",null,"Added \u2014 ",o.toDateString()))))},WrapperDateComponent:H.wrap(({user:e,children:t})=>{let o=qK(e);return i("div",{className:jK("wrapper")},t,!isNaN(o.getTime())&&i(Dr,{text:pd.dateFormat(o,"LLLL"),tooltipClassName:jK("tooltip")},i(Y,{size:"xs",className:jK("date")},kst.format(o))))},{noop:!0})})});var KK,nE,LSe=h(()=>{"use strict";d();j();O();R();KK=M({noSpotifyAutoPause:{description:"Disable Spotify auto-pause",type:3,default:!0,restartNeeded:!0},keepSpotifyActivityOnIdle:{description:"Keep Spotify activity playing when idling",type:3,default:!1,restartNeeded:!0}}),nE=S({name:"SpotifyCrack",description:"Free listen along, no auto-pausing in voice chat, and allows activity to continue playing when idling",tags:["Media","Utility","Activity"],authors:[b.Cyn,b.Nuckyz],settings:KK,patches:[{find:'dispatch({type:"SPOTIFY_PROFILE_UPDATE"',replacement:{match:/SPOTIFY_PROFILE_UPDATE.+?isPremium:(?="premium"===(\i)\.body\.product)/,replace:(e,t)=>`${e}(${t}.body.product="premium")&&`}},{find:"}getPlayableComputerDevices(){",replacement:[{predicate:()=>KK.store.noSpotifyAutoPause,match:/(?<=function \i\(\){)(?=.{0,200}SPOTIFY_AUTO_PAUSED\))/,replace:"return;"},{predicate:()=>KK.store.keepSpotifyActivityOnIdle,match:/(shouldShowActivity\(\){.{0,50})&&!\i\.\i\.isIdle\(\)/,replace:"$1"}]}]})});function QK(e,t){return{name:e,description:`Share your current Spotify ${e} in chat`,inputType:0,options:[dn],execute(o,{channel:r}){let n=Cst.getTrack();if(!n)return Ft(r.id,{content:"You're not listening to any music."});if(n.id==null)return Ft(r.id,{content:"Failed to find the track on spotify."});let a=t(n),s=St(o,"message");or(r.id,{content:s?`${s} ${a}`:a},!1,fo.getSendMessageOptionsForReply(Pa.getPendingReply(r.id))).then(()=>{Q.dispatch({type:"DELETE_PENDING_REPLY",channelId:r.id})})}}}var Cst,rE,OSe=h(()=>{"use strict";d();yr();O();_e();R();le();C();Cst=Ae("getPlayerState");rE=S({name:"SpotifyShareCommands",description:"Share your current Spotify track, album or artist via slash command (/track, /album, /artist)",dependencies:["CommandsAPI"],tags:["Media","Commands"],authors:[b.katlyn],commands:[QK("track",e=>`https://open.spotify.com/track/${e.id}`),QK("album",e=>`https://open.spotify.com/album/${e.album.id}`),QK("artist",e=>e.artists[0].external_urls.spotify)]})});function Tst({emoji:e,prefix:t,log:o,delta:r,instance:n}){return i(V.Fragment,null,i("span",null,n.sinceStart.toFixed(3),"s"),i("span",null,n.sinceLast.toFixed(3),"s"),i("span",null,r?.toFixed(0)??""),i("span",null,i("pre",null,e," ",t??" ",o)))}function Ist({title:e,logs:t,traceEnd:o}){let r=t.find(s=>s.timestamp)?.timestamp??0,n=r,a=t.map(s=>{let l=s.timestamp??n,c=(l-r)/1e3,u=(l-n)/1e3;return n=l,{sinceStart:c,sinceLast:u}});return i("section",null,i(ta,null,e),i("code",null,o&&i("div",{style:{color:"var(--text-strong)",marginBottom:5,userSelect:"text"}},"Trace ended at: ",new Date(o).toTimeString()),i("div",{style:{color:"var(--text-strong)",display:"grid",gridTemplateColumns:"repeat(3, auto) 1fr",gap:"2px 10px",userSelect:"text"}},i("span",null,"Start"),i("span",null,"Interval"),i("span",null,"Delta"),i("span",{style:{marginBottom:5}},"Event"),Y4.logs.map((s,l)=>i(Tst,{key:l,...s,instance:a[l]})))))}function Est({trace:e}){let t=e.split(` `);return i("section",null,i(Ot,null,"Server Trace"),i("code",null,i(pe,{flexDirection:"column",gap:"5px",style:{color:"var(--text-strong)",userSelect:"text"}},t.map((o,r)=>i("span",{key:r},o)))))}function Dst(){if(!Y4?.logs)return i("div",null,"Loading...");let e=Y4.logGroups.find(t=>t.serverTrace)?.serverTrace;return i(V.Fragment,null,i(Ist,{title:"Startup Timings",logs:Y4.logs,traceEnd:Y4.endTime_}),i("div",{style:{marginTop:5}},"\xA0"),e&&i(Est,{trace:e}))}var Y4,FSe,_Se=h(()=>{"use strict";d();Pe();Lt();We();le();C();Y4=Ae("markWithDelta","markAndLog","markAt");FSe=H.wrap(Dst)});var iE,USe=h(()=>{"use strict";d();ot();mu();O();Be();R();_Se();iE=S({name:"StartupTimings",description:"Adds Startup Timings to the Settings menu",tags:["Developers"],authors:[b.Megu],start(){Pn.customEntries.push({key:"vencord_startup_timings",title:"Startup Timings",Component:FSe,Icon:sS})},stop(){Gl(Pn.customEntries,e=>e.key==="vencord_startup_timings")}})});var aE,zSe=h(()=>{"use strict";d();O();R();aE=S({name:"StickerPaste",description:"Makes picking a sticker in the sticker picker insert it into the chatbox instead of instantly sending",tags:["Emotes","Chat"],authors:[b.ImBanana],patches:[{find:".stickers,previewSticker:",replacement:{match:/if\(\i\.\i\.getUploadCount/,replace:"return true;$&"}}]})});function $Se({streamKey:e},t){e.endsWith(L.getCurrentUser().id)&&Q.dispatch({type:"STREAMER_MODE_UPDATE",key:"enabled",value:t})}var sE,GSe=h(()=>{"use strict";d();O();R();C();sE=S({name:"StreamerModeOn",description:"Automatically enables streamer mode when you start streaming in Discord",tags:["Privacy","Utility"],authors:[b.IcedMarina],flux:{STREAM_CREATE:e=>$Se(e,!0),STREAM_DELETE:e=>$Se(e,!1)}})});var lE,cE,HSe=h(()=>{"use strict";d();j();O();R();C();lE=M({superReactByDefault:{type:3,description:"Reaction picker will default to Super Reactions",default:!0},unlimitedSuperReactionPlaying:{type:3,description:"Remove the limit on Super Reactions playing at once",default:!1},superReactionPlayingLimit:{description:"Max Super Reactions to play at once. 0 to disable playing Super Reactions",type:5,default:20,markers:[0,5,10,20,40,60,80,100],stickToMarkers:!0}},{superReactionPlayingLimit:{disabled(){return this.store.unlimitedSuperReactionPlaying}}}),cE=S({name:"SuperReactionTweaks",description:"Customize the limit of Super Reactions playing at once, and super react by default",tags:["Reactions","Emotes"],authors:[b.FieryFlames,b.ant0n],patches:[{find:",BURST_REACTION_EFFECT_PLAY",replacement:[{match:/(BURST_REACTION_EFFECT_PLAY:(?:\i=>|function\(\i\)){.+?if\()(\(?(?:function)?\(\i,\i\)(?:=>)?{.+?\(\i,\i\))>=5+?(?=\))/,replace:(e,t,o)=>`${t}!$self.shouldPlayBurstReaction(${o})`}]},{find:".EMOJI_PICKER_CONSTANTS_EMOJI_CONTAINER_PADDING_HORIZONTAL)",replacement:{match:/(openPopoutType:void 0(?=.+?isBurstReaction:(\i).+?;(\i===\i\.\i\.REACTION)&&\i\.push\().+?\[\2,\i\]=\i\.useState\()!1\)/,replace:(e,t,o,r)=>`${t}$self.shouldSuperReactByDefault&&${r})`}}],settings:lE,shouldPlayBurstReaction(e){return!!(lE.store.unlimitedSuperReactionPlaying||lE.store.superReactionPlayingLimit>e)},get shouldSuperReactByDefault(){return lE.store.superReactByDefault&&es.getState().premiumTypeActual!=null}})});function Nst(e){let t=Mst.getSelectedFormat()==="tinywebp"?"webp":"tinywebm",{title:o,h1_title:r,id:n,itemurl:a}=e,{gif:s,[t]:l}=e.media[0];return{id:n,title:o||r,url:a,gif_src:s.url,src:l.url,width:l.dims[0],height:l.dims[1],preview:l.preview}}function ZK(e){return e.map(Nst).filter(ka)}async function uE(e,t){let o=`https://api.tenor.com/v1${e}?`+new URLSearchParams({key:Pst,locale:RS.locale.replace("-","_").toLowerCase(),...t}),r=await fetch(o);if(!r.ok)throw new Error(`GET ${e}: Tenor API request failed with status ${r.status}`);return r.json()}async function YK(e,t,o={}){let r=Math.min(t,50),n=[],a=new Set,s="";for(;n.length=t))break;if(n.length===p||!c||c===s)break;s=c}return n}async function jSe(){return uE("/categories",{type:"featured"}).then(({tags:e})=>e?.length?{trendingCategories:e.map(t=>({name:t.searchterm,src:t.image})),trendingGIFPreview:{src:e[0].image}}:null).catch(()=>null)}var Pst,Mst,$v,dE,qSe=h(()=>{"use strict";d();O();Ca();R();le();C();Pst="3Z0688EVWYKH",Mst=x3("GIFPickerViewStore"),$v=null;dE=S({name:"TenorGifSearch",description:"Restore Tenor GIF search",authors:[b.Lunascape],patches:[{find:"renderHeaderContent()",replacement:{match:/placeholder:(\i),"aria-label":(\i)/,replace:'placeholder:$1?.replace(/Giphy|Klipy/gi,"Tenor"),"aria-label":$2?.replace(/Giphy|Klipy/gi,"Tenor")'}},{find:'"GIF_PICKER_TRENDING_FETCH_SUCCESS",trendingCategories:',replacement:[{match:/let \i=Date\.now\(\);\i\([^)]+\),\i\.\i\.get\(\{url:\i\.\i\.GIFS_SEARCH,query:\{q:(\i),/,replace:"return $self.handleSearchFetch($1);$&"},{match:/""!==(\i)&&null!=\1&&\i\.\i\.get\(\{url:\i\.\i\.GIFS_SUGGEST,/,replace:"return $self.handleSuggestionsFetch($1);$&"},{match:/\i\.\i\.get\(\{url:\i\.\i\.GIFS_TRENDING,/,replace:"return $self.handleTrendingFetch();$&"},{match:/let \i=Date\.now\(\);\i\([^)]+\),\i\.\i\.get\(\{url:\i\.\i\.GIFS_TRENDING_GIFS,/,replace:"return $self.handleTrendingGifsFetch();$&"},{match:/\i\.\i\.post\(\{url:\i\.\i\.GIFS_SELECT,body:\{id:(\i),q:(\i)\}/,replace:"$self.handleGifSelect($1,$2)&&false&&$&"}]},{find:'"IntegrationQueryStore"',replacement:{match:/(?<=search\((\i),(\i)\)\{)let \i=\i\.getResults\(\1,\2\)[,;]/,replace:"return $self.tenorIntegrationSearch($1,$2);$&"}},{find:'commandId:"-16"',replacement:{match:/commandId:"-16"}/,replace:'$&,TENOR:{type:"GIF",command:"tenor",title:"Tenor",commandId:"-9"}'}},{find:"#{intl::COMMAND_GIPHY_DESCRIPTION}",replacement:{match:/(\i)===\i\.\i\.GIF\.title/,replace:'$&||$1==="Tenor"'}}],async start(){$v=await jSe()??$v},handleSearchFetch(e){YK("/search",100,{q:e}).then(t=>{let o=ZK(t);Q.dispatch(o.length?{type:"GIF_PICKER_QUERY_SUCCESS",query:e,items:o}:{type:"GIF_PICKER_QUERY_FAILURE",query:e})}).catch(()=>{Q.dispatch({type:"GIF_PICKER_QUERY_FAILURE",query:e})})},async handleSuggestionsFetch(e){if(!e)return;let{results:t}=await uE("/search_suggestions",{q:e,limit:"5"});Q.dispatch({type:"GIF_PICKER_SUGGESTIONS_SUCCESS",query:e,items:t})},async handleTrendingFetch(){!$v&&($v=await jSe(),!$v)||Q.dispatch({type:"GIF_PICKER_TRENDING_FETCH_SUCCESS",...$v})},handleGifSelect(e,t){uE("/registershare",{id:e,q:t})},handleTrendingGifsFetch(){YK("/trending",50).then(e=>{let t=ZK(e);Q.dispatch(t.length?{type:"GIF_PICKER_QUERY_SUCCESS",items:t}:{type:"GIF_PICKER_QUERY_FAILURE"})}).catch(()=>{Q.dispatch({type:"GIF_PICKER_QUERY_FAILURE"})})},tenorIntegrationSearch(e,t){Q.dispatch({type:"INTEGRATION_QUERY",integration:e,query:t}),YK("/search",20,{q:t}).then(o=>{let r=ZK(o);Q.dispatch(r.length?{type:"INTEGRATION_QUERY_SUCCESS",integration:e,query:t,results:r}:{type:"INTEGRATION_QUERY_FAILURE",integration:e,query:t})}).catch(()=>{Q.dispatch({type:"INTEGRATION_QUERY_FAILURE",integration:e,query:t,results:[]})})}})});var WSe=h(()=>{});function VSe(e){let t=e.match(/^(\/)?(.+?)(?:\/([gimsuyv]*))?$/);return t?new RegExp(t[2],t[3]?.split("").filter((o,r,n)=>n.indexOf(o)===r).join("")??"g"):new RegExp(e)}function Bst(e){try{return VSe(e),null}catch(t){return i("span",{style:{color:"var(--text-feedback-critical)"}},String(t))}}function Rst({initialValue:e,onChange:t,placeholder:o}){let[r,n]=T(e);return i(Te,{placeholder:o,value:r,onChange:n,spellCheck:!1,onBlur:()=>r!==e&&setTimeout(()=>t(r),0)})}function pE({label:e,description:t,value:o,onChange:r}){return i(f,null,i(Dr,{text:t},i(nr,{weight:"medium",size:"md"},e)),i(Rst,{placeholder:t,initialValue:o,onChange:r}))}function Lst(e,t){if(!t)return!0;let o=t.trim().toLowerCase();return[e.name??"",e.find,e.replace,e.onlyIfIncludes].some(r=>r.toLowerCase().includes(o))}function YSe(e){e.name??="",e.scope??="myMessages",e.id??=crypto.randomUUID()}function JSe({title:e,description:t,rulesArray:o,isRegex:r=!1}){let[n,a]=T(""),[s,l]=T(null);function c(x){o.splice(x,1)}function u(x,v,y){o[v][y]=x,o[v].name===""&&o[v].find===""&&o[v].replace===""&&o[v].onlyIfIncludes===""&&v!==o.length-1&&o.splice(v,1)}let p=[{label:"Apply to your messages (visible to everyone)",value:"myMessages"},{label:"Apply to others' messages (only visible to you)",value:"othersMessages"},{label:"Apply to all messages",value:"allMessages"}],m=o.reduce((x,v,y)=>(Lst(v,n)&&x.push({rule:v,index:y}),x),[]),g=x=>v=>{if(v.preventDefault(),s===null||s===x||n)return;let y=o.splice(s,1)[0];o.splice(x,0,y),l(null)};return i(f,null,i("div",null,i(Ot,null,e),i(U,null,t),i(Te,{placeholder:"Search for a rule...",value:n,onChange:a})),i(pe,{flexDirection:"column",style:{gap:"0.5em",paddingBottom:"1.25em"}},!m.length&&n&&i(U,null,"No rules match your search criteria."),m.map(({rule:x,index:v})=>i("div",{key:x.id,onDragOver:y=>y.preventDefault(),onDrop:g(v),style:{opacity:s===v?.5:1}},i(Wk,{renderContent:()=>i(f,null,i("div",{className:KSe("input-grid")},i(pE,{label:"Name",description:"An optional name to help you identify this rule.",value:x.name??"",onChange:y=>u(y,v,"name")}),i(pE,{label:"Find",description:r?"The regex pattern":"The text to replace",value:x.find,onChange:y=>u(y,v,"find")}),i(pE,{label:"Replace",description:"The text to replace the found text with",value:x.replace,onChange:y=>u(y,v,"replace")}),i(pE,{label:"Only if includes",description:"Optionally, only apply this rule if the message includes this text.",value:x.onlyIfIncludes,onChange:y=>u(y,v,"onlyIfIncludes")})),i("div",{style:{marginTop:"0.25em"}},i(qt,{options:p,isSelected:y=>y===x.scope,select:y=>u(y,v,"scope"),serialize:y=>y})),r&&Bst(x.find),i(de,{className:KSe("delete-button"),variant:"dangerPrimary",onClick:()=>c(v)},"Delete Rule"))},i("div",{draggable:!n,onDragStart:y=>{l(v),y.dataTransfer.setData("text/plain",v.toString())},onDragEnd:()=>l(null),style:{cursor:n?"default":"grab",flex:1}},i(U,{weight:"medium",size:"md"},x.name?x.name:ZSe(x)?`Empty Rule ${v+1}`:`Rule ${v+1} - ${x.find}`))))),i(de,{onClick:()=>{a(""),o.push(XSe())},disabled:o.length>0&&ZSe(o[o.length-1])},"Add Rule")))}function Ost(){let[e,t]=T("");return i("div",null,i(Ot,null,"Rule Tester"),i(pe,{flexDirection:"column",gap:6},i(Te,{placeholder:"Type a message to test rules on",onChange:t}),i(Te,{placeholder:"Message with rules applied",editable:!1,value:JK(e,"allMessages"),style:{opacity:.7}})))}function JK(e,t){if(e.length===0)return e;for(let o of J4.store.stringRules)o.find&&(o.onlyIfIncludes&&!e.includes(o.onlyIfIncludes)||o.scope!=="allMessages"&&o.scope!==t&&t!=="allMessages"||(e=` ${e} `.replaceAll(o.find,o.replace.replaceAll("\\n",` `)).replace(/^\s|\s$/g,"")));for(let o of J4.store.regexRules)if(o.find&&!(o.onlyIfIncludes&&!e.includes(o.onlyIfIncludes))&&!(o.scope!=="allMessages"&&o.scope!==t&&t!=="allMessages"))try{let r=VSe(o.find);e=e.replace(r,o.replace.replaceAll("\\n",` `))}catch{new ie("TextReplace").error(`Invalid regex: ${o.find}`)}return e=e.trim(),e}function Fst(e){let t=L.getCurrentUser(),o=e.author;return!e.content||!t?.id||!o?.id||o.id===t.id?e.content:JK(e.content,"othersMessages")}var KSe,XSe,QSe,J4,ZSe,_st,mE,ewe=h(()=>{"use strict";d();WSe();j();Tt();Wj();Lt();We();Je();Jc();lc();O();Su();He();R();C();KSe=K("vc-textReplace-"),XSe=()=>({name:"",find:"",replace:"",onlyIfIncludes:"",scope:"myMessages",id:crypto.randomUUID()}),QSe=()=>[XSe()],J4=M({replace:{type:6,component:()=>{let{stringRules:e,regexRules:t}=J4.use(["stringRules","regexRules"]);return i(f,null,i(Ost,null),i(JSe,{title:"Simple Replacements",description:"Simple find and replace rules. For example, find 'brb' and replace it with 'be right back'",rulesArray:e}),i(JSe,{title:"Regex Replacements",description:"More powerful replacements using Regular Expressions. This section is for advanced users. If you don't understand it, just ignore it",rulesArray:t,isRegex:!0}))}},stringRules:{type:7,default:QSe(),description:"Rules for replacing text using string matching."},regexRules:{type:7,default:QSe(),description:"Rules for replacing text using regular expressions."}});ZSe=e=>!e.find;_st=["1102784112584040479","1419347113745059961",...G0],mE=S({name:"TextReplace",description:"Replace text in your messages. You can find pre-made rules in the #textreplace-rules channel in Vencord's Server",dependencies:["MessagePopoverAPI"],tags:["Chat","Customisation","Utility"],authors:[b.AutumnVN,b.TheKodeToad,F.Etorix,F.Ape],isModified:!0,settings:J4,modifyIncomingMessage:Fst,patches:[{find:"!1,hideSimpleEmbedContent",replacement:{match:/(let{toAST:.{0,125}?)\(\i\?\?\i\).content/,replace:"const textReplaceContent=$self.modifyIncomingMessage(arguments[2]?.contentMessage??arguments[1]);$1textReplaceContent"}}],start(){let{stringRules:e,regexRules:t}=J4.store;e.forEach(YSe),t.forEach(YSe)},onBeforeMessageSend(e,t){_st.includes(e)||(t.content=JK(t.content,"myMessages"))}})});var fE,twe=h(()=>{"use strict";d();O();He();R();C();fE=S({name:"ThemeAttributes",description:"Adds data attributes to various elements for theming purposes",tags:["Appearance","Customisation"],authors:[b.Ven,b.Board],patches:[{find:".tabBarRef",replacement:{match:/style:this\.getStyle\(\),role:\i/,replace:"$&,'data-tab-id':this?.props?.id"}},{find:"Message must not be a thread starter message",replacement:{match:/"aria-setsize":-1,(?=.{0,150}?#{intl::MESSAGE_A11Y_ROLE_DESCRIPTION})/,replace:"...$self.getMessageProps(arguments[0]),$&"}},{find:"#{intl::LABEL_WITH_ONLINE_STATUS}",replacement:[{match:/src:(\i)\?\?void 0.{1,50}"aria-hidden":!0/,replace:"$&,style:$self.getAvatarStyles($1)"}]},{find:"showCommunicationDisabledStyles",replacement:{match:/src:(\i),"aria-hidden":!0/,replace:"$&,style:$self.getAvatarStyles($1)"}}],getAvatarStyles(e){return typeof e!="string"||e.startsWith("data:")?{}:Object.fromEntries([128,256,512,1024,2048,4096].map(t=>[`--avatar-url-${t}`,`url(${e.replace(/\d+$/,String(t))})`]))},getMessageProps(e){try{let t=e.message?.author,o=t?.id;return{"data-author-id":o,"data-author-username":t?.username,"data-is-self":o&&o===L.getCurrentUser()?.id}}catch(t){return new ie("ThemeAttributes").error("Error in getMessageProps",t),{}}}})});var owe=h(()=>{});function eQ(e){switch(e){case"":return"auto";case"nb":return"no";case"zh-hans":return"zh-CN";case"zh-hant":return"zh-TW";case"en-us":case"en-gb":return"en";case"pt-br":case"pt-pt":return"pt";default:return e}}var XK,VK,nwe,rwe=h(()=>{"use strict";d();XK={auto:"Detect language",af:"Afrikaans",sq:"Albanian",am:"Amharic",ar:"Arabic",hy:"Armenian",as:"Assamese",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",eu:"Basque",be:"Belarusian",bn:"Bengali",bho:"Bhojpuri",bs:"Bosnian",bg:"Bulgarian",ca:"Catalan",ceb:"Cebuano",ny:"Chichewa","zh-CN":"Chinese (Simplified)","zh-TW":"Chinese (Traditional)",co:"Corsican",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Dhivehi",doi:"Dogri",nl:"Dutch",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",tl:"Filipino",fi:"Finnish",fr:"French",fy:"Frisian",gl:"Galician",ka:"Georgian",de:"German",el:"Greek",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",haw:"Hawaiian",iw:"Hebrew",hi:"Hindi",hmn:"Hmong",hu:"Hungarian",is:"Icelandic",ig:"Igbo",ilo:"Ilocano",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",jw:"Javanese",kn:"Kannada",kk:"Kazakh",km:"Khmer",rw:"Kinyarwanda",gom:"Konkani",ko:"Korean",kri:"Krio",ku:"Kurdish (Kurmanji)",ckb:"Kurdish (Sorani)",ky:"Kyrgyz",lo:"Lao",la:"Latin",lv:"Latvian",ln:"Lingala",lt:"Lithuanian",lg:"Luganda",lb:"Luxembourgish",mk:"Macedonian",mai:"Maithili",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi","mni-Mtei":"Meiteilon (Manipuri)",lus:"Mizo",mn:"Mongolian",my:"Myanmar (Burmese)",ne:"Nepali",no:"Norwegian",or:"Odia (Oriya)",om:"Oromo",ps:"Pashto",fa:"Persian",pl:"Polish",pt:"Portuguese",pa:"Punjabi",qu:"Quechua",ro:"Romanian",ru:"Russian",sm:"Samoan",sa:"Sanskrit",gd:"Scots Gaelic",nso:"Sepedi",sr:"Serbian",st:"Sesotho",sn:"Shona",sd:"Sindhi",si:"Sinhala",sk:"Slovak",sl:"Slovenian",so:"Somali",es:"Spanish",su:"Sundanese",sw:"Swahili",sv:"Swedish",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",ti:"Tigrinya",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",ak:"Twi",uk:"Ukrainian",ur:"Urdu",ug:"Uyghur",uz:"Uzbek",vi:"Vietnamese",cy:"Welsh",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",zu:"Zulu"},VK={"":"Detect language",ace:"Acehnese",af:"Afrikaans",sq:"Albanian",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",ay:"Aymara",az:"Azerbaijani",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bho:"Bhojpuri",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",yue:"Cantonese",ca:"Catalan",ceb:"Cebuano","zh-hans":"Chinese (Simplified)","zh-hant":"Chinese (Traditional)",hr:"Croatian",cs:"Czech",da:"Danish",prs:"Dari",nl:"Dutch","en-us":"English (American)","en-gb":"English (British)",eo:"Esperanto",et:"Estonian",fi:"Finnish",fr:"French",gl:"Galician",ka:"Georgian",de:"German",el:"Greek",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",ig:"Igbo",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",ko:"Korean",pam:"Kapampangan",kk:"Kazakh",kmr:"Kurdish (Kurmanji)",ckb:"Kurdish (Sorani)",ky:"Kyrgyz",lo:"Lao",la:"Latin",lv:"Latvian",ln:"Lingala",lt:"Lithuanian",lmo:"Lombard",lb:"Luxembourgish",mk:"Macedonian",mai:"Maithili",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mn:"Mongolian",ne:"Nepali",nb:"Norwegian (Bokm\xE5l)",oc:"Occitan",om:"Oromo",pag:"Pangasinan",ps:"Pashto",fa:"Persian",pl:"Polish","pt-br":"Portuguese (Brazilian)","pt-pt":"Portuguese (European)",pa:"Punjabi",qu:"Quechua",ro:"Romanian",ru:"Russian",sm:"Samoan",sa:"Sanskrit",gd:"Scottish Gaelic",sr:"Serbian",st:"Sesotho",sn:"Shona",scn:"Sicilian",sd:"Sindhi",si:"Sinhala",sk:"Slovak",sl:"Slovenian",so:"Somali",es:"Spanish","es-419":"Spanish (Latin American)",su:"Sundanese",sw:"Swahili",sv:"Swedish",tl:"Tagalog",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",ti:"Tigrinya",ts:"Tsonga",tn:"Tswana",tr:"Turkish",tk:"Turkmen",uk:"Ukrainian",ur:"Urdu",ug:"Uyghur",uz:"Uzbek",vi:"Vietnamese",cy:"Welsh",wo:"Wolof",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",zu:"Zulu"};nwe={auto:"Detect language",om:"(Afan)/Oromoor/Oriya",ab:"Abkhazian",ace:"Acehnese",ach:"Acholi",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",alz:"Alur",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ava:"Awadhi",ay:"Aymara",az:"Azerbaijani",ban:"Balinese",bal:"Baluchi",bm:"Bambara",bci:"Baoul\xE9",ba:"Bashkir",eu:"Basque",btk:"Batak",bar:"Bavarian",be:"Belarusian",bem:"Bemba",bn:"Bengali",bew:"Betawi",bho:"Bhojpuri",dz:"Bhutani",bh:"Bihari",bcl:"Bikol",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",bua:"Buryat",km:"Cambodian",yue:"Cantonese",ca:"Catalan",ceb:"Cebuano",ch:"Chamorro",ce:"Chechen",chr:"Cherokee",ny:"Chichewa",zh_cn:"Chinese (Simplified)",zh_tw:"Chinese (Traditional)",cu:"Church Slavonic",chk:"Chuukese",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",crh:"Crimean Tatar",hr:"Croatian",cs:"Czech",da:"Danish",din:"Dinka",div:"Divehi",doi:"Dogri",dov:"Dombe",nl:"Dutch",dyu:"Dyula",en_gb:"English (UK)",en_us:"English (US)",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fiji",fil:"Filipino",fi:"Finnish",fon:"Fon",fr:"French",fy:"Frisian",fur:"Friulian",ff:"Fulah",gaa:"Ga",gl:"Galician",lg:"Ganda",ka:"Georgian",de:"German",hac:"Gorani (Hawrami)",el:"Greek",kl:"Greenlandic",gn:"Guarani",gu:"Gujarati",ht:"Haitian",ha:"Hausa",haw:"Hawaiian",he:"Hebrew",hz:"Herero",hil:"Hiligaynon",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",hrx:"Hunsrik",iba:"Iban",is:"Icelandic",io:"Ido",ig:"Igbo",ilo:"Ilocano",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish Gaelic",it:"Italian",jam:"Jamaican Patois",ja:"Japanese",jv:"Javanese",cpe:"Jingpo",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",kha:"Khasi",ki:"Kikuyu",rw:"Kinyarwanda",ky:"Kirghiz",rn:"Kirundi",ktu:"Kituba",kv:"Komi",kg:"Kongo",kok:"Konkani",ko:"Korean",kj:"Kuanyama",ku:"Kurdish (Kurmanji)",ckb:"Kurdish (Sorani)",sdh:"Kurdish (Xwarin)",lo:"Laothian",ltg:"Latgalian",la:"Latin",lv:"Latvian",lij:"Ligurian",li:"Limburgan",lim:"Limburgish",ln:"Lingala",lt:"Lithuanian",lmo:"Lombard",lu:"Luba_Katanga",luo:"Luo",lb:"Luxembourgish",mk:"Macedonian",mad:"Madurese",mai:"Maithili",mak:"Makassar",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",gv:"Manx Gaelic",mi:"Maori",mr:"Marathi",mh:"Marshallese",mwr:"Marwadi",mo:"Moldavian",mn:"Mongolian",cnr:"Montenegrin",nqo:"NKo",nhe:"Nahuatl",na:"Nauru",nv:"Navajo",ndc:"Ndau",ng:"Ndonga",new:"Nepalbhasa",ne:"Nepali",nd:"North Ndebele",se:"Northern Sami",ns:"Northern Sotho",no:"Norwegian",nb:"Norwegian (Bokm\xE5l)",nn:"Norwegian (Nynorsk)",nus:"Nuer",oc:"Occitan",oj:"Ojibwa",or:"Oriya",os:"Ossetian",pi:"Pali",pag:"Pangasinan",pap:"Papiamento",ps:"Pashto/Pushto",fa:"Persian",pl:"Polish",pt_br:"Portuguese (Brazil)",pt_pt:"Portuguese (Portugal)",pa:"Punjabi",qu:"Quechua",kek:"Q\u02BCeqchi\u02BC",rm:"Rhaeto_Romanic",rom:"Romani",ro:"Romanian",ru:"Russian",sm:"Samoan",sg:"Sangro",sa:"Sanskrit",sat:"Santali",sc:"Sardinian",sco:"Scots",gd:"Scottish Gaelic",sr:"Serbian",sh:"Serbo_Croatian",st:"Sesotho",seto:"Seto",shn:"Shan",sn:"Shona",ii:"Sichuan Yi",scn:"Sicilian",szl:"Silesian",sd:"Sindhi",si:"Sinhalese",ss:"Siswati",sk:"Slovak",sl:"Slovenian",so:"Somali",sb:"Sorbian",nr:"South Ndebele",sma:"Southern Sami",es:"Spanish",su:"Sundanese",sus:"Susu",sx:"Sutu",sw:"Swahili",sv:"Swedish",gsw:"Swiss German",syr:"Syriac",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",tet:"Tetum",th:"Thai",bo:"Tibetan",ti:"Tigrinya",tiv:"Tiv",tpi:"Tok Pisin",to:"Tonga",ts:"Tsonga",tn:"Tswana",tum:"Tumbuka",tr:"Turkish",tk:"Turkmen",tyv:"Tuvan",tw:"Twi",udm:"Udmurt",ug:"Uighur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vec:"Venetian",vi:"Vietnamese",vo:"Volapuk",vro:"V\xF5ro",wa:"Walloon",war:"Waray",cy:"Welsh",wo:"Wolof",xh:"Xhosa",sah:"Yakut",yi:"Yiddish",yo:"Yoruba",yua:"Yucatec Maya",zap:"Zapotec",diq:"Zazaki",za:"Zhuang",zu:"Zulu"}});async function X4(e,t){let o=(()=>{switch(Do.store.service){case"google":return lwe;case"kagi":return $st;default:return zst}})();try{return await o(t,Do.store[`${e}Input`],Do.store[`${e}Output`])}catch(r){let n=typeof r=="string"?r:"Something went wrong. If this issue persists, please check the console or ask for help in the support server.";throw ne(n,D.Type.FAILURE),r instanceof Error?r:new Error(n)}}async function lwe(e,t,o){let r="https://translate-pa.googleapis.com/v1/translate?"+new URLSearchParams({"params.client":"gtx",dataTypes:"TRANSLATION",key:"AIzaSyDLEeFI5OtFBwYBIoK_jj5m32rZK5CkCXA","query.sourceLanguage":t,"query.targetLanguage":o,"query.text":e}),n=await fetch(r);if(!n.ok)throw new Error(`Failed to translate "${e}" (${t} -> ${o}) ${n.status} ${n.statusText}`);let{sourceLanguage:a,translation:s}=await n.json();return{sourceLanguage:XK[a]??a,text:s}}function iwe(e,t,o){return lwe(e,eQ(t),eQ(o))}async function zst(e,t,o){if(!Do.store.deeplApiKey)return ne("DeepL API key is not set. Resetting to Google",D.Type.FAILURE),Do.store.service="google",tQ(),iwe(e,t,o);let{status:r,data:n}=await awe.makeDeeplTranslateRequest(Do.store.service==="deepl-pro",Do.store.deeplApiKey,JSON.stringify({text:[e],target_lang:o,source_lang:t.split("-")[0]}));switch(r){case 200:break;case-1:throw"Failed to connect to DeepL API: "+n;case 403:throw"Invalid DeepL API key or version";case 456:return Ust(),iwe(e,t,o);default:throw new Error(`Failed to translate "${e}" (${t} -> ${o}) ${r} ${n}`)}let{translations:a}=JSON.parse(n),s=a[0].detected_source_language;return{sourceLanguage:VK[s]??s,text:a[0].text}}async function $st(e,t,o){let{status:r,data:n}=await awe.makeKagiTranslateRequest(Do.store.kagiSession,e,t,o);switch(r){case 200:break;case 401:throw"Invalid or expired Kagi session token";default:throw new Error(`Failed to translate "${e}" (${t} -> ${o}) ${r} ${n}`)}let{detected_language:a,translation:s}=n;return{sourceLanguage:a.label,text:s}}var Oh,awe,swe,Ust,V4=h(()=>{"use strict";d();we();N1();C();rwe();e5();Oh=K("vc-trans-"),awe=VencordNative.pluginHelpers.Translate,swe=()=>{switch(Do.store.service){case"google":return XK;case"kagi":return nwe;default:return VK}};Ust=Up(()=>ne("Deepl API quota exceeded. Falling back to Google Translate",D.Type.FAILURE))});function Hst({settingsKey:e,includeAuto:t}){let o=Do.use([e])[e],r=Ne(()=>{let n=Object.entries(swe()).map(([a,s])=>({value:a,label:s}));return t||n.shift(),n},[]);return i("section",{className:z.bottom16},i(Ot,null,Do.def[e].description),i(Fn,{options:r,value:r.find(n=>n.value===o)?.value,placeholder:"Select a language",maxVisibleItems:5,closeOnSelect:!0,onChange:n=>Do.store[e]=n}))}function jst(){let e=Do.use(["autoTranslate"]).autoTranslate;return i(mo,{title:"Auto Translate",description:Do.def.autoTranslate.description,value:e,onChange:t=>Do.store.autoTranslate=t,hideBorder:!0})}function qst({rootProps:e}){return i(be,{...e,title:"Translate"},Gst.map(t=>i(Hst,{key:t,settingsKey:t,includeAuto:t.endsWith("Input")})),i(Rt,{className:z.bottom16}),i(jst,null))}function gE(){ce(e=>i(qst,{rootProps:e}))}var Gst,oQ=h(()=>{"use strict";d();xr();hi();We();Wt();C();e5();V4();Gst=["receivedInput","receivedOutput","sentInput","sentOutput"]});function tQ(){Do.store.service==="google"||Do.store.service==="kagi"?(Do.store.receivedInput="auto",Do.store.receivedOutput="en",Do.store.sentInput="auto",Do.store.sentOutput="en"):(Do.store.receivedInput="",Do.store.receivedOutput="en-us",Do.store.sentInput="",Do.store.sentOutput="en-us")}var Do,e5=h(()=>{"use strict";d();j();Tt();R();oQ();Do=M({receivedInput:{type:0,description:"Language incoming messages are translated from",default:"auto",hidden:!0},receivedOutput:{type:0,description:"Language incoming messages are translated to",default:"en",hidden:!0},sentInput:{type:0,description:"Language your messages are translated from",default:"auto",hidden:!0},sentOutput:{type:0,description:"Language your messages are translated to",default:"en",hidden:!0},service:{type:4,description:"Translation provider",hidden:!1,options:[{label:"Google Translate",value:"google",default:!0},{label:"DeepL Free - API key required",value:"deepl"},{label:"DeepL Pro - API key required",value:"deepl-pro"},{label:"Kagi Translate - API key required",value:"kagi"}],onChange:tQ},deeplApiKey:{type:0,displayName:"DeepL API Key",description:"Your DeepL API key (from deepl.com/your-account)",default:""},kagiSession:{type:0,description:"Your Kagi session token (from kagi.com/settings?p=user_details)",default:""},autoTranslate:{type:3,description:"Automatically translate your messages before sending. You can also Shift+click or right-click the translate button to toggle this",default:!1},showAutoTranslateTooltip:{type:3,description:"Show a tooltip on the chat bar button when a message is auto-translated",default:!0},manageTranslateSettings:{type:6,component:()=>i(de,{onClick:gE},"Customize translation languages & Auto-Translate")}},{deeplApiKey:{hidden(){return this.store.service!=="deepl"&&this.store.service!=="deepl-pro"}},kagiSession:{hidden(){return this.store.service!=="kagi"}}}).withPrivateSettings()});function Wst(e){let t=Do.use(["dismissedAutoTranslateAlert"]);return i(Dn,{...e,title:"Vencord Auto-Translate Enabled",subtitle:"You just enabled Auto Translate! Any message will automatically be translated before being sent.",confirmText:"Disable Auto-Translate",onConfirm:()=>Do.store.autoTranslate=!1,cancelText:"Got it",variant:"primary",checkboxProps:{checked:t.dismissedAutoTranslateAlert===!0,onChange:o=>t.dismissedAutoTranslateAlert=o}})}var ku,t5,cwe,hE=h(()=>{"use strict";d();Ba();lc();Be();C();e5();oQ();V4();ku=({height:e=20,width:t=20,className:o})=>i("svg",{viewBox:"0 96 960 960",height:e,width:t,className:X(Oh("icon"),o)},i("path",{fill:"currentColor",d:"m475 976 181-480h82l186 480h-87l-41-126H604l-47 126h-82Zm151-196h142l-70-194h-2l-70 194Zm-466 76-55-55 204-204q-38-44-67.5-88.5T190 416h87q17 33 37.5 62.5T361 539q45-47 75-97.5T487 336H40v-80h280v-80h80v80h280v80H567q-22 69-58.5 135.5T419 598l98 99-30 81-127-122-200 200Z"}));cwe=({isMainChat:e})=>{let{autoTranslate:t}=Do.use(["autoTranslate"]),[o,r]=T(!1);if(G(()=>(t5=r,()=>t5=void 0),[]),!e)return null;let n=()=>{let s=!t;Do.store.autoTranslate=s,s&&!Do.store.dismissedAutoTranslateAlert&&ce(l=>i(Wst,{...l}))},a=i(Un,{tooltip:"Open Translate Modal",onClick:s=>{if(s.shiftKey)return n();gE()},onContextMenu:n,buttonProps:{"aria-haspopup":"dialog"}},i(ku,{className:Oh({"auto-translate":t,"chat-button":!0})}));return o&&Do.store.showAutoTranslateTooltip?i(Dr,{text:"Auto Translate Enabled",forceOpen:!0},a):a}});function rQ(e,t){nQ.get(e)(t)}function Kst({onDismiss:e}){return i("button",{onClick:e,className:Oh("dismiss")},"Dismiss")}function uwe({message:e}){let[t,o]=T();return G(()=>{if(!e.vencordEmbeddedBy)return nQ.set(e.id,o),()=>{nQ.delete(e.id)}},[]),t?i("span",{className:Oh("accessory")},i(ku,{width:16,height:16,className:Oh("accessory-icon")}),kt.parse(t.text),i("br",null),"(translated from ",t.sourceLanguage," - ",i(Kst,{onDismiss:()=>o(void 0)}),")"):null}var nQ,dwe=h(()=>{"use strict";d();C();hE();V4();nQ=new Map});function mwe(e){return e.content||e.messageSnapshots?.[0]?.message.content||e.embeds?.find(t=>t.type==="auto_moderation_message")?.rawDescription||""}var Qst,pwe,xE,fwe=h(()=>{"use strict";d();owe();Fo();O();R();C();e5();hE();dwe();V4();Qst=(e,{message:t})=>{let o=mwe(t);if(!o)return;let r=wt("copy-text",e);r&&r.splice(r.findIndex(n=>n?.props?.id==="copy-text")+1,0,i(P.MenuItem,{id:"vc-trans",label:"Translate",icon:ku,leadingAccessory:{type:"icon",icon:ku},action:async()=>{let n=await X4("received",o);rQ(t.id,n)}}))};xE=S({name:"Translate",description:"Translate messages with Google Translate, DeepL or Kagi.",dependencies:["ChatInputButtonAPI","MessageAccessoriesAPI","MessagePopoverAPI"],tags:["Chat","Utility"],authors:[b.Ven,b.AshtonMemer,b.koish1],settings:Do,contextMenus:{message:Qst},translate:X4,renderMessageAccessory:e=>i(uwe,{message:e.message}),chatBarButton:{icon:ku,render:cwe},messagePopoverButton:{icon:ku,render(e){let t=mwe(e);return t?{label:"Translate",icon:ku,message:e,channel:W.getChannel(e.channel_id),onClick:async()=>{let o=await X4("received",t);rQ(e.id,o)}}:null}},async onBeforeMessageSend(e,t){if(!Do.store.autoTranslate||!t.content)return;t5?.(!0),clearTimeout(pwe),pwe=setTimeout(()=>t5?.(!1),2e3);let o=await X4("sent",t.content);t.content=o.text}})});var gwe=h(()=>{});var hwe,xwe=h(()=>{d();(window.VencordStyles??=new Map).set("src/plugins/typingTweaks/style.css",{name:"src/plugins/typingTweaks/style.css",source:`.vc-typing-tweaks-user { cursor: pointer; [class*="wrapper"] { display: inline-block; margin-right: 0.25em; vertical-align: -4px; } }`,classNames:{},dom:null});hwe="src/plugins/typingTweaks/style.css"});function Zst(e,t){if(Fh.store.showRoleColors){if(Me.plugins.CustomUserColors.enabled){let o=vu(t,!0);if(o)return o}return bt.getMember(e,t)?.colorString}}var vwe,Fh,iQ,ywe,Gv,aQ=h(()=>{"use strict";d();j();Pe();mv();O();we();_e();Ca();He();R();C();xwe();vwe=K("vc-typing-tweaks-"),Fh=M({showAvatars:{type:3,default:!0,description:"Show avatars in the typing indicator"},showRoleColors:{type:3,default:!0,description:"Show role colors in the typing indicator"},alternativeFormatting:{type:3,default:!0,description:"Show a more useful message when several users are typing"},amITyping:{type:3,default:!1,restartNeeded:!0,description:"Shows you if other people can see you typing"}}),iQ=H.wrap(function({users:t,count:o,guildId:r}){return i(f,null,t.slice(0,o).map(n=>i(V.Fragment,{key:n.id},i(ywe,{user:n,guildId:r}),", ")),"and ",o," others are typing...")},{noop:!0});ywe=H.wrap(function({user:t,guildId:o}){return i("strong",{className:vwe("user"),role:"button",onClick:()=>{Ko(t.id)},style:{color:Fh.store.showRoleColors?Zst(o,t.id):void 0}},Fh.store.showAvatars&&i(Js,{className:vwe("avatar"),size:"SIZE_16",src:t.getAvatarURL(o,128)}),bt.getNick(o,t.id)||!o&&qe.getNickname(t.id)||t.globalName||t.username)},{noop:!0});Rp(!0,"TypingTweaks","AmITyping","amITyping");Gv=S({name:"TypingTweaks",description:"Show avatars and role colours in the typing indicator",tags:["Appearance","Customisation"],authors:[b.zt,b.sadan,F.MrDiamond],settings:Fh,isModified:!0,managedStyle:hwe,patches:[{find:"#{intl::SEVERAL_USERS_TYPING_STRONG}",group:!0,replacement:[{match:/(?<="aria-hidden":!0,children:)\i/,replace:"$self.renderTypingUsers({ users: arguments[0]?.typingUserObjects, guildId: arguments[0]?.channel?.guild_id, children: $& })"},{match:/(?<=function \i\(\i\)\{)(?=[^}]+?\{channel:\i,isThreadCreation:\i=!1,\.\.\.\i\})/,replace:"let typingUserObjects = $self.useTypingUsers(arguments[0]?.channel);"},{match:/typingUsers:(\i)\?\[\]:\i,/,replace:"$&typingUserObjects: $1 || typeof typingUserObjects === 'undefined' ? [] : typingUserObjects,"},{match:/(&&\(\i=)\i\.\i\.format\(\i\.\i#{intl::SEVERAL_USERS_TYPING_STRONG},\{\}\)/,replace:"$1$self.buildSeveralUsers({ users: arguments[0]?.typingUserObjects, count: arguments[0]?.typingUserObjects?.length - 2, guildId: arguments[0]?.channel?.guild_id })",predicate:()=>Fh.store.alternativeFormatting}]},{find:"this.handleDismissInviteEducation",predicate:()=>Fh.store.amITyping,replacement:{match:/\i\.default\.getCurrentUser\(\)/,replace:'""'}}],useTypingUsers(e){try{if(!e)throw new Error("No channel");let t=ye([As],()=>As.getTypingUsers(e.id)),o=ye([oi],()=>oi.getId());return Object.keys(t).filter(r=>!r||qe.isBlockedOrIgnored(r)?!1:r===o?Fh.store.amITyping:!0).map(r=>L.getUser(r)).filter(ka)}catch(t){return new ie("TypingTweaks").error("Failed to get typing users:",t),[]}},buildSeveralUsers:iQ,renderTypingUsers:H.wrap(({guildId:e,users:t,children:o})=>{try{if(!Array.isArray(o))return o;let r=0;return o.map(n=>{if(n.type!=="strong"&&!(typeof n!="string"&&!V.isValidElement(n)))return n;let a=t[r++];return i(ywe,{key:a.id,guildId:e,user:a})})}catch(r){new ie("TypingTweaks").error("Failed to render typing users:",r)}return o},{noop:!0})})});function Hv(e,t){let o=L.getUser(t);return bt.getNick(e,t)??o.globalName??o.username}function Jst({channelId:e,guildId:t}){let o=ye([As],()=>({...As.getTypingUsers(e)}),null,(p,m)=>{let g=Object.keys(p),x=Object.keys(m);return g.length===x.length&&x.every(v=>p[v]!=null)}),r=ye([Fe],()=>Fe.getChannelId());if(!_h.store.includeMutedChannels&&sr.isChannelMuted(t,e)||!_h.store.includeCurrentChannel&&r===e)return null;let n=L.getCurrentUser()?.id,a=Object.keys(o).filter(p=>p!==n&&!(qe.isBlocked(p)&&!_h.store.includeBlockedUsers)&&!(qe.isIgnored(p)&&!_h.store.includeIgnoredUsers)),[s,l,c]=a,u;switch(a.length){case 0:break;case 1:{u=Xe("ONE_USER_TYPING",{a:Hv(t,s)});break}case 2:{u=Xe("TWO_USERS_TYPING",{a:Hv(t,s),b:Hv(t,l)});break}case 3:{u=Xe("THREE_USERS_TYPING",{a:Hv(t,s),b:Hv(t,l),c:Hv(t,c)});break}default:{u=Ve(Gv.name)?iQ({users:[s,l].map(L.getUser),count:a.length-2,guildId:t}):Xe("SEVERAL_USERS_TYPING");break}}return a.length>0?i(ve,{text:u},p=>i("div",{className:"vc-typing-indicator",...p},(_h.store.indicatorMode&2)===2&&i("div",{onClick:m=>{m.stopPropagation(),m.preventDefault()},onKeyPress:m=>m.stopPropagation()},i(Vc,{users:a.map(m=>L.getUser(m)),guildId:t,renderIcon:!1,max:3,showDefaultAvatarsForNullUsers:!0,showUserPopout:!0,size:16,className:"vc-typing-indicator-avatars"})),(_h.store.indicatorMode&1)===1&&i("div",{className:"vc-typing-indicator-dots"},i(Yst,{dotRadius:3,themed:!0})))):null}var Yst,_h,vE,bwe=h(()=>{"use strict";d();gwe();Jt();j();Pe();aQ();O();_e();R();le();C();Yst=he("Math.min(1,Math.max(","dotRadius:");_h=M({includeCurrentChannel:{type:3,description:"Whether to show the typing indicator for the currently selected channel",default:!0},includeMutedChannels:{type:3,description:"Whether to show the typing indicator for muted channels.",default:!1},includeIgnoredUsers:{type:3,description:"Whether to show the typing indicator for ignored users.",default:!1},includeBlockedUsers:{type:3,description:"Whether to show the typing indicator for blocked users.",default:!1},indicatorMode:{type:4,description:"How should the indicator be displayed?",options:[{label:"Avatars and animated dots",value:3,default:!0},{label:"Animated dots",value:1},{label:"Avatars",value:2}]}}),vE=S({name:"TypingIndicator",description:"Adds an indicator if someone is typing on a channel.",tags:["Notifications","Appearance","Servers"],authors:[b.Nuckyz,b.fawn,b.Sqaaakoi],isModified:!0,settings:_h,patches:[{find:"UNREAD_IMPORTANT:",replacement:{match:/\.Children\.count.+?:null(?<=,channel:(\i).+?)/,replace:"$&,$self.TypingIndicator($1.id,$1.getGuildId())"}},{find:"M0 15H2c0 1.6569",replacement:{match:/mentionsCount:\i.+?null(?<=channel:(\i).+?)/,replace:"$&,$self.TypingIndicator($1.id,$1.getGuildId())"}}],TypingIndicator:(e,t)=>i(H,{noop:!0},i(Jst,{channelId:e,guildId:t}))})});var yE,Swe=h(()=>{"use strict";d();O();R();yE=S({name:"Unindent",description:"Trims leading indentation from codeblocks",dependencies:["MessageEventsAPI"],tags:["Chat","Utility"],authors:[b.Ven],patches:[{find:"inQuote:",replacement:{match:/,content:([^,]+),inQuote/,replace:(e,t)=>`,content:$self.unindent(${t}),inQuote`}}],unindent(e){e=e.replace(/\t/g," ");let t=e.match(/^ *(?=\S)/gm)?.reduce((o,r)=>Math.min(o,r.length),1/0)??0;return t?e.replace(new RegExp(`^ {${t}}`,"gm"),""):e},unindentMsg(e){e.content=e.content.replace(/```(.|\n)*?```/g,t=>{let o=t.split(` `);if(o.length<2)return t;let r="";return o[o.length-1]==="```"&&(r=o.pop()),`${o[0]} ${this.unindent(o.slice(1).join(` `))} ${r}`})},onBeforeMessageSend(e,t){return this.unindentMsg(t)},onBeforeMessageEdit(e,t,o){return this.unindentMsg(o)}})});var Xst,bE,wwe=h(()=>{"use strict";d();j();O();R();Xst=M({zoomMultiplier:{type:5,description:"Zoom multiplier",markers:zt(2,16),default:4}}),bE=S({name:"UnlockedAvatarZoom",description:"Allows you to zoom in further in the image crop tool when changing your avatar",tags:["Media","Utility"],authors:[b.nakoyasha],settings:Xst,patches:[{find:"#{intl::AVATAR_UPLOAD_EDIT_MEDIA}",replacement:{match:/maxValue:\d/,replace:"maxValue:$self.settings.store.zoomMultiplier"}}]})});var sQ,Vst,SE,Awe=h(()=>{"use strict";d();Fo();ot();O();R();C();sQ=4,Vst=(e,{channel:t,message:{author:o,messageSnapshots:r,embeds:n,flags:a,id:s}})=>{let l=(a&sQ)!==0,c=r.some(g=>g.message.embeds.length);if(!l&&!n.length&&!c)return;let u=t.isPrivate()||!!(ht.getChannelPermissions({id:t.id})&ct.EMBED_LINKS);if(o.id===L.getCurrentUser().id&&!u)return;let p=wt("delete",e),m=p?.findIndex(g=>g?.props?.id==="delete");m==null||!p||p.splice(m-1,0,i(P.MenuItem,{id:"unsuppress-embeds",key:"unsuppress-embeds",label:l?"Unsuppress Embeds":"Suppress Embeds",color:l?void 0:"danger",icon:l?Ip:Vu,leadingAccessory:{type:"icon",icon:l?Ip:Vu},action:()=>mt.patch({url:Gt.Endpoints.MESSAGE(t.id,s),body:{flags:l?a&~sQ:a|sQ}})}))},SE=S({name:"UnsuppressEmbeds",authors:[b.rad,b.HypedDomi],description:"Allows you to unsuppress embeds in messages",tags:["Chat","Utility"],contextMenus:{message:Vst}})});var jv,wE=h(()=>{"use strict";d();j();R();jv=M({pronounsFormat:{type:4,description:"The format for pronouns to appear in chat",options:[{label:"Lowercase",value:"LOWERCASE",default:!0},{label:"Capitalized",value:"CAPITALIZED"}]},showSelf:{type:3,description:"Enable or disable showing pronouns for yourself",default:!0}})});function elt(e,t=!1){let o=ye([Co],()=>Co.getUserProfile(e)?.pronouns),r=ye([Co],()=>Co.getGuildMemberProfile(e,zo()?.getGuildId())?.pronouns);return t?o:r||o}function kwe(e,t=!1){let o=elt(e,t)?.trim().replace(/\n+/g,"");return jv.store.pronounsFormat==="LOWERCASE"?o?.toLowerCase():o}var Cwe=h(()=>{"use strict";d();_e();C();wE()});function Iwe(e){return!(e.author.bot||e.author.system||e.type===olt||!jv.store.showSelf&&e.author.id===L.getCurrentUser().id)}function Ewe({message:e}){let t=kwe(e.author.id);return t&&i(ve,{text:Xe("USER_PROFILE_PRONOUNS")},o=>i("span",{...o,className:X(Twe.timestampInline,Twe.timestamp)},"\u2022 ",t))}var Twe,tlt,olt,Dwe,Pwe,Mwe=h(()=>{"use strict";d();_a();Pe();_e();Be();le();C();wE();Cwe();Twe=Ie("timestampInline","timestamp"),tlt=tn("textAndImages","messageDisplayCompact"),olt=24;Dwe=H.wrap(({message:e})=>Iwe(e)?i(Ewe,{message:e}):null,{noop:!0}),Pwe=H.wrap(({message:e})=>!tlt.useSetting()||!Iwe(e)?null:i(Ewe,{message:e}),{noop:!0})});var AE,Nwe=h(()=>{"use strict";d();j();O();R();Mwe();wE();oo("UserMessagesPronouns","PronounDB");AE=S({name:"UserMessagesPronouns",authors:[b.Tyman,b.TheKodeToad,b.Ven,b.Elvyra],description:"Adds pronouns to chat user messages",tags:["Chat","Appearance"],settings:jv,patches:[{find:"showCommunicationDisabledStyles",replacement:{match:/(?<=return\s*\(0,\i\.jsxs?\)\(.+!\i&&)(\(0,\i.jsxs?\)\(.+?\{.+?\}\))/,replace:"[$1, $self.PronounsChatComponentWrapper(arguments[0])]"}},{find:'="SYSTEM_TAG"',replacement:[{match:/className:\i\(\)\(\i\.className(?:,\i\.\i)?,\i\)\}\)(?:\))?,(?=\i)/g,replace:"$&$self.CompactPronounsChatComponentWrapper(arguments[0]),"}]}],PronounsChatComponentWrapper:Dwe,CompactPronounsChatComponentWrapper:Pwe})});var Bwe=h(()=>{});function CE(e){let{size:t=16,className:o,...r}=e;return i("div",{...r,className:X(qv("speaker"),o)},i("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor"},e.children))}function Lwe(e){return i(CE,{...e},i("path",{d:"M12 3a1 1 0 0 0-1-1h-.06a1 1 0 0 0-.74.32L5.92 7H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2.92l4.28 4.68a1 1 0 0 0 .74.32H11a1 1 0 0 0 1-1V3ZM15.1 20.75c-.58.14-1.1-.33-1.1-.92v-.03c0-.5.37-.92.85-1.05a7 7 0 0 0 0-13.5A1.11 1.11 0 0 1 14 4.2v-.03c0-.6.52-1.06 1.1-.92a9 9 0 0 1 0 17.5Z"}),i("path",{d:"M15.16 16.51c-.57.28-1.16-.2-1.16-.83v-.14c0-.43.28-.8.63-1.02a3 3 0 0 0 0-5.04c-.35-.23-.63-.6-.63-1.02v-.14c0-.63.59-1.1 1.16-.83a5 5 0 0 1 0 9.02Z"}))}function Owe(e){return i(CE,{...e},i("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16 4h.5v-.5a2.5 2.5 0 0 1 5 0V4h.5a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Zm4-.5V4h-2v-.5a1 1 0 1 1 2 0Z"}),i("path",{d:"M11 2a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1h-.06a1 1 0 0 1-.74-.32L5.92 17H3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h2.92l4.28-4.68a1 1 0 0 1 .74-.32H11ZM20.5 12c-.28 0-.5.22-.52.5a7 7 0 0 1-5.13 6.25c-.48.13-.85.55-.85 1.05v.03c0 .6.52 1.06 1.1.92a9 9 0 0 0 6.89-8.25.48.48 0 0 0-.49-.5h-1ZM16.5 12c-.28 0-.5.23-.54.5a3 3 0 0 1-1.33 2.02c-.35.23-.63.6-.63 1.02v.14c0 .63.59 1.1 1.16.83a5 5 0 0 0 2.82-4.01c.02-.28-.2-.5-.48-.5h-1Z"}))}function rlt(e){return i(CE,{...e},i("path",{d:"m2.7 22.7 20-20a1 1 0 0 0-1.4-1.4l-20 20a1 1 0 1 0 1.4 1.4ZM10.8 17.32c-.21.21-.1.58.2.62V20H9a1 1 0 1 0 0 2h6a1 1 0 1 0 0-2h-2v-2.06A8 8 0 0 0 20 10a1 1 0 0 0-2 0c0 1.45-.52 2.79-1.38 3.83l-.02.02A5.99 5.99 0 0 1 12.32 16a.52.52 0 0 0-.34.15l-1.18 1.18ZM15.36 4.52c.15-.15.19-.38.08-.56A4 4 0 0 0 8 6v4c0 .3.03.58.1.86.07.34.49.43.74.18l6.52-6.52ZM5.06 13.98c.16.28.53.31.75.09l.75-.75c.16-.16.19-.4.08-.61A5.97 5.97 0 0 1 6 10a1 1 0 0 0-2 0c0 1.45.39 2.81 1.06 3.98Z"}))}function ilt(e){return i(CE,{...e},i("path",{d:"M22.7 2.7a1 1 0 0 0-1.4-1.4l-20 20a1 1 0 1 0 1.4 1.4l20-20ZM17.06 2.94a.48.48 0 0 0-.11-.77A11 11 0 0 0 2.18 16.94c.14.3.53.35.76.12l3.2-3.2c.25-.25.15-.68-.2-.76a5 5 0 0 0-1.02-.1H3.05a9 9 0 0 1 12.66-9.2c.2.09.44.05.59-.1l.76-.76ZM20.2 8.28a.52.52 0 0 1 .1-.58l.76-.76a.48.48 0 0 1 .77.11 11 11 0 0 1-4.5 14.57c-1.27.71-2.73.23-3.55-.74a3.1 3.1 0 0 1-.17-3.78l1.38-1.97a5 5 0 0 1 4.1-2.13h1.86a9.1 9.1 0 0 0-.75-4.72ZM10.1 17.9c.25-.25.65-.18.74.14a3.1 3.1 0 0 1-.62 2.84 2.85 2.85 0 0 1-3.55.74.16.16 0 0 1-.04-.25l3.48-3.48Z"}))}function alt({channel:e,isLocked:t}){let o=ye([Et],()=>Et.getVoiceStatesForChannel(e.id)),r=Ne(()=>Object.values(o).map(a=>L.getUser(a.userId)).filter(a=>a!=null),[o]),n=t?Owe:Lwe;return i(f,null,i(Y,{size:"sm",weight:"bold"},"In Voice Chat"),i(Y,{size:"sm",weight:"bold"},kt.parse(`<#${e.id}>`)),i("div",{className:qv("vc-members")},i(n,{size:18}),i(Vc,{users:r,renderIcon:!1,max:13,size:18})))}var qv,nlt,Rwe,kE,o5,Fwe=h(()=>{"use strict";d();Jt();yt();Pe();YI();we();Be();le();C();qv=K("vc-uvs-"),{selectVoiceChannel:nlt}=Ae("selectVoiceChannel","selectChannel"),Rwe=Ie("actionButton","highlight");kE=new Map,o5=H.wrap(({userId:e,isProfile:t,isMessage:o,isActionButton:r,shouldHighlight:n})=>{let a=ye([Et],()=>Et.getVoiceStateForUser(e)?.channelId),{isMuted:s,isDeaf:l}=ye([Et],()=>{let x=Et.getVoiceStateForUser(e);return{isMuted:x?.mute||x?.selfMute||!1,isDeaf:x?.deaf||x?.selfDeaf||!1}}),c=a==null?void 0:W.getChannel(a);if(c==null)return null;let u=c.isDM()||c.isMultiUserDM();if(!u&&!ht.can(ct.VIEW_CHANNEL,c)&&!Ve(_v.name))return null;let p=!u&&(!ht.can(ct.VIEW_CHANNEL,c)||!ht.can(ct.CONNECT,c));function m(x){if(x.preventDefault(),x.stopPropagation(),!(c==null||a==null))if(clearTimeout(kE.get(a)),kE.delete(a),x.detail>1){if(!u&&!ht.can(ct.CONNECT,c)){ne("You cannot join the user's Voice Channel",D.Type.FAILURE);return}nlt(a)}else{let v=setTimeout(()=>{Li.transitionToChannel(a),kE.delete(a)},250);kE.set(a,v)}}let g=p?Owe:l?ilt:s?rlt:Lwe;return i(ve,{text:i(alt,{channel:c,isLocked:p}),tooltipClassName:qv("tooltip-container"),tooltipContentClassName:qv("tooltip-content")},x=>i(g,{...x,role:"button",onClick:m,className:X(qv("clickable"),r&&Rwe.actionButton,r&&n&&Rwe.highlight,qv(t&&"profile-speaker")),size:r||o?20:16}))},{noop:!0})});var n5,TE,_we=h(()=>{"use strict";d();Bwe();j();O();R();Fwe();n5=M({showInUserProfileModal:{type:3,description:"Show a user's Voice Channel indicator in their profile next to the name",default:!0,restartNeeded:!0},showInMemberList:{type:3,description:"Show a user's Voice Channel indicator in the member and DMs list",default:!0,restartNeeded:!0},showInMessages:{type:3,description:"Show a user's Voice Channel indicator in messages",default:!0,restartNeeded:!0}}),TE=S({name:"UserVoiceShow",description:"Shows an indicator when a user is in a Voice Channel",tags:["Voice","Appearance","Friends"],dependencies:["MemberListDecoratorsAPI","MessageDecorationsAPI","NicknameIconsAPI"],authors:[b.Nuckyz,b.LordElias,F.omaw],settings:n5,renderNicknameIcon({userId:e}){return n5.store.showInUserProfileModal?i(o5,{userId:e,isProfile:!0}):null},renderMemberListDecorator({user:e}){return n5.store.showInMemberList?e==null?null:i(o5,{userId:e.id}):null},renderMessageDecoration({message:e}){return n5.store.showInMessages?e?.author==null?null:i(o5,{userId:e.author.id,isMessageIndicator:!0}):null},patches:[{find:"null!=this.peopleListItemRef.current",replacement:{match:/\.isProvisional.{0,50}?className:\i\.\i,children:\[(?<=isFocused:(\i).+?)/,replace:"$&$self.VoiceChannelIndicator({userId:this?.props?.user?.id,isActionButton:true,shouldHighlight:$1}),"},predicate:()=>n5.store.showInMemberList}],VoiceChannelIndicator:o5})});var Uwe=h(()=>{});var slt,llt,lQ,Jf,cQ=h(()=>{"use strict";d();Uwe();j();Tt();O();we();R();slt=K("vc-usrbg-"),llt="https://usrbg.is-hardly.online/users",lQ=M({nitroFirst:{description:"Banner to use if both Nitro and USRBG banners are present",type:4,options:[{label:"Nitro banner",value:!0,default:!0},{label:"USRBG banner",value:!1}]},voiceBackground:{description:"Use USRBG banners as voice chat backgrounds",type:3,default:!0,restartNeeded:!0}}),Jf=S({name:"USRBG",description:"Displays user banners from USRBG, allowing anyone to get a banner without Nitro",tags:["Appearance","Customisation"],authors:[b.AutumnVN,b.katlyn,b.pylix,b.TheKodeToad],settings:lQ,patches:[{find:':"SHOULD_LOAD");',replacement:{match:/\i(?:\?)?.getPreviewBanner\(\i,\i,\i\)(?=.{0,100}"COMPLETE")/,replace:"$self.patchBannerUrl(arguments[0])||$&"}},{find:'"data-selenium-video-tile":',replacement:[{match:/(?<=function\((\i),\i\)\{)(?=let.{20,40},style:)/,replace:"Object.assign($1.style=$1.style||{},$self.getVoiceBackgroundStyles($1));"}]},{find:'"VideoBackground-web"',predicate:()=>lQ.store.voiceBackground,replacement:{match:/backgroundColor:.{0,25},\{style:(?=\i\?)/,replace:"$&$self.userHasBackground(arguments[0]?.userId)?null:"}}],data:null,settingsAboutComponent:()=>i(de,{variant:"link",className:slt("settings-button"),onClick:()=>VencordNative.native.openExternal("https://github.com/AutumnVN/usrbg#how-to-request-your-own-usrbg-banner")},"Get your own USRBG banner"),getVoiceBackgroundStyles({className:e,participantUserId:t}){if(e.includes("tile")&&this.userHasBackground(t))return{backgroundImage:`url(${this.getImageUrl(t)})`,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"}},patchBannerUrl({displayProfile:e}){if(!(e?.banner&&lQ.store.nitroFirst)&&this.userHasBackground(e?.userId))return this.getImageUrl(e?.userId)},userHasBackground(e){return!!this.data?.users[e]},getImageUrl(e){if(!this.userHasBackground(e))return null;let{endpoint:t,bucket:o,prefix:r,users:{[e]:n}}=this.data;return`${t}/${o}/${r}${e}?${n}`},async start(){let e=await fetch(llt);e.ok&&(this.data=await e.json())}})});var uQ,dQ,clt,IE,zwe=h(()=>{"use strict";d();O();R();le();C();uQ=new Map,clt=Oe(".createFromServer(",".isBlockedForMessage","messageReference:"),IE=S({name:"ValidReply",description:'Fixes "Message could not be loaded" upon hovering over the reply',tags:["Chat","Utility"],authors:[b.newwares],patches:[{find:"#{intl::REPLY_QUOTE_MESSAGE_NOT_LOADED}",replacement:{match:/#{intl::REPLY_QUOTE_MESSAGE_NOT_LOADED}\)/,replace:"$&,onMouseEnter:()=>$self.fetchReply(arguments[0])"}},{find:"ReferencedMessageStore",replacement:[{match:/_channelCaches=new Map;/,replace:"$&_=$self.setReplyStore(this);"}]}],setReplyStore(e){dQ=e},async fetchReply(e){let{channel_id:t,message_id:o}=e.baseMessage.messageReference;uQ.has(o)||(uQ.set(o,t),mt.get({url:`/channels/${t}/messages`,query:{limit:1,around:o},retries:2}).then(r=>{let n=r?.body?.[0];n&&(n.id!==o?(dQ.set(t,o,{state:2}),Q.dispatch({type:"MESSAGE_DELETE",channelId:t,message:o})):(dQ.set(n.channel_id,n.id,{state:0,message:clt(n)}),Q.dispatch({type:"MESSAGE_UPDATE",message:n})))}).catch(()=>{}).finally(()=>{uQ.delete(o)}))}})});async function dlt(e){let t=L.getUser(e);if(t)return t;let o=await mt.get({url:Gt.Endpoints.USER(e)}).then(a=>(Q.dispatch({type:"USER_UPDATE",user:a.body}),a.body));await Q.dispatch({type:"USER_PROFILE_FETCH_FAILURE",userId:e}),t=L.getUser(e);let r=Object.entries(ult).filter(([a,s])=>!isNaN(s)&&t.hasFlag(s)).map(([a])=>$we[a.toLowerCase()]).filter(ka);(o.premium_type||!o.bot&&(o.banner||o.avatar?.startsWith?.("a_")))&&r.push($we.premium);let n=Co.getUserProfile(e);return n&&(n.accentColor=o.accent_color,n.badges=r,n.banner=o.banner,n.premiumType=o.premium_type),t}function plt({data:e,UserMention:t,RoleMention:o,parse:r,props:n}){let[a,s]=T(e.userId);if(a)return i(t,{className:"mention",userId:a,channelId:e.channelId,inlinePreview:n.noStyleAndInteraction,props:n,key:n.key});let l=r(e.content,n);return i(o,{...e,props:n,inlinePreview:n.formatInline},i("span",{onMouseEnter:()=>{let c=l?.[0]?.props?.children;if(typeof c!="string")return;let u=c.match(/<@!?(\d+)>/)?.[1];if(!u||EE.has(u))return;if(L.getUser(u))return s(u);let p=()=>{EE.add(u),Gwe.unshift(()=>dlt(u).then(()=>{s(u),EE.delete(u)}).catch(m=>{m?.status===429&&(Gwe.unshift(()=>lr(m?.body?.retry_after??1e3).then(p)),EE.delete(u))}).finally(()=>lr(300)))};p()}},l))}var ult,$we,EE,Gwe,DE,Hwe=h(()=>{"use strict";d();Pe();O();Ca();Be();jp();R();C();ult=Gt.UserFlags,$we={active_developer:{id:"active_developer",description:"Active Developer",icon:"6bdc42827a38498929a4920da12695d9",link:"https://support-dev.discord.com/hc/en-us/articles/10113997751447"},bug_hunter_level_1:{id:"bug_hunter_level_1",description:"Discord Bug Hunter",icon:"2717692c7dca7289b35297368a940dd0",link:"https://support.discord.com/hc/en-us/articles/360046057772-Discord-Bugs"},bug_hunter_level_2:{id:"bug_hunter_level_2",description:"Discord Bug Hunter",icon:"848f79194d4be5ff5f81505cbd0ce1e6",link:"https://support.discord.com/hc/en-us/articles/360046057772-Discord-Bugs"},certified_moderator:{id:"certified_moderator",description:"Moderator Programs Alumni",icon:"fee1624003e2fee35cb398e125dc479b",link:"https://discord.com/safety"},discord_employee:{id:"staff",description:"Discord Staff",icon:"5e74e9b61934fc1f67c65515d1f7e60d",link:"https://discord.com/company"},get staff(){return this.discord_employee},hypesquad:{id:"hypesquad",description:"HypeSquad Events",icon:"bf01d1073931f921909045f3a39fd264",link:"https://discord.com/hypesquad"},hypesquad_online_house_1:{id:"hypesquad_house_1",description:"HypeSquad Bravery",icon:"8a88d63823d8a71cd5e390baa45efa02",link:"https://discord.com/settings/hypesquad-online"},hypesquad_online_house_2:{id:"hypesquad_house_2",description:"HypeSquad Brilliance",icon:"011940fd013da3f7fb926e4a1cd2e618",link:"https://discord.com/settings/hypesquad-online"},hypesquad_online_house_3:{id:"hypesquad_house_3",description:"HypeSquad Balance",icon:"3aa41de486fa12454c3761e8e223442e",link:"https://discord.com/settings/hypesquad-online"},partner:{id:"partner",description:"Partnered Server Owner",icon:"3f9748e53446a137a052f3454e2de41e",link:"https://discord.com/partners"},premium:{id:"premium",description:"Subscriber",icon:"2ba85e8026a8614b640c2837bcdfe21b",link:"https://discord.com/settings/premium"},premium_early_supporter:{id:"early_supporter",description:"Early Supporter",icon:"7060786766c9c840eb3019e725d2b358",link:"https://discord.com/settings/premium"},verified_developer:{id:"verified_developer",description:"Early Verified Bot Developer",icon:"6df5892e0f35b051f8b61eace34f4967"}},EE=new Set,Gwe=new Oa(5);DE=S({name:"ValidUser",description:"Fix mentions for unknown users showing up as '@unknown-user' (hover over a mention to fix it)",tags:["Chat","Utility"],authors:[b.Ven,b.Dolfies],searchTerms:["MentionCacheFix"],patches:[{find:'className:"mention"',replacement:{match:/react(?=\(\i,\i,\i\).{0,100}return null==.{0,70}\?\(0,\i\.jsx\)\((\i\.\i),.+?jsx\)\((\i\.\i),\{className:"mention")/,replace:"react:(...args)=>$self.renderMention($1,$2,...args),originalReact"}},{find:"unknownUserMentionPlaceholder:",replacement:{match:/unknownUserMentionPlaceholder:/,replace:"$&false&&"}}],renderMention(e,t,o,r,n){return i(H,{noop:!0},i(plt,{key:"mention"+o.userId,RoleMention:e,UserMention:t,data:o,parse:r,props:n}))}})});var pQ,PE,jwe=h(()=>{"use strict";d();O();R();C();pQ={},PE=S({name:"VoiceChatDoubleClick",description:"Join voice chats via double click instead of single click",tags:["Voice"],authors:[b.Ven,b.D3SOX,b.sadan],patches:[{find:".handleClickChat",replacement:[{match:/onClick:\(\)=>\{this.handleClick\(\)/g,replace:"onClick:()=>{$self.schedule(()=>{this.handleClick()},this)"}]},{find:'className:"channelMention",children:[null!=',replacement:{match:/onClick:(\i)(?=,.{0,30}className:"channelMention".+?(\i)\.inContent)/,replace:(e,t,o)=>`onClick:(vcDoubleClickEvt)=>$self.shouldRunOnClick(vcDoubleClickEvt,${o})&&${t}()`}},{find:',["embedded_background"]',replacement:{match:/(?=children)(?<=selectVoiceChannel\((\i)\.id\).{0,100})/,replace:"onClick:$self.goToChannel.bind(null,$1),"}}],goToChannel(e){let{id:t}=e??{};if(!t)return console.error("No channel id found");Li.transitionToChannel(t)},shouldRunOnClick(e,{channelId:t}){let o=W.getChannel(t);return!o||![2,13].includes(o.type)?!0:e.detail>=2},schedule(e,t){let o=t.props.channel.id;if(Fe.getVoiceChannelId()===o){e();return}let r=pQ[o]??={timeout:void 0,i:0};clearTimeout(r.timeout),++r.i>=2?(e(),delete pQ[o]):r.timeout=setTimeout(()=>{delete pQ[o]},500)}})});function mlt(e,t){return e.reduce((o,r)=>{let n=t(r);return o[n]??=[],o[n].push(r),o},{})}function mQ({voice:e,voices:t}){let o=t.map(r=>({label:r.name,value:r.voiceURI,default:r.default}));return i(Fn,{placeholder:"Select a voice",maxVisibleItems:5,options:o,value:o.find(r=>r.value===e)?.value,onChange:r=>Ga.store.voice=r,closeOnSelect:!0})}function glt({voice:e,voices:t}){let o=Ne(()=>mlt(t,c=>c.lang),[t]),r=Ne(()=>{let c=[];for(let u in o)try{let p=flt.of(u);p&&c.push({name:u,friendlyName:p})}catch{}return c},[o]),[n,a]=T(()=>ME()?.lang??r[0].name);if(r.length===1)return i(mQ,{voice:e,voices:o[r[0].name]});let s=o[n],l=r.map(c=>({label:c.friendlyName,value:c.name}));return i(f,null,i(oe,null,"Language"),i(Fn,{placeholder:"Select a language",options:l,value:l.find(c=>c.value===n)?.value,onChange:c=>a(c),maxVisibleItems:5,closeOnSelect:!0}),i(oe,null,"Voice"),i(mQ,{voice:e,voices:s}))}function hlt(){let e=Ne(()=>window.speechSynthesis?.getVoices()??[],[]),{voice:t}=Ga.use(["voice"]);if(!e.length)return i(U,null,"No voices found.");let o=e.length>20?glt:mQ;return i(o,{voice:t,voices:e})}function qwe(){return i("section",null,i(oe,null,"Voice"),i(hlt,null))}var flt,Wwe=h(()=>{"use strict";d();We();Je();C();fQ();flt=new Intl.DisplayNames(["en"],{type:"language"})});function ME(e=window.speechSynthesis?.getVoices()){if(!e)return;if(Ga.store.voice){let o=e.find(r=>r.voiceURI===Ga.store.voice);if(o)return o;new ie("VcNarrator").error(`Voice "${Ga.store.voice}" not found. Resetting to default.`)}let t=e.find(o=>o.default);return Ga.store.voice=t?.voiceURI,t}var xlt,Ga,fQ=h(()=>{"use strict";d();j();He();R();Wwe();xlt=()=>window.speechSynthesis?.getVoices().find(e=>e.default);Ga=M({voice:{type:6,component:qwe,get default(){return xlt()?.voiceURI}},volume:{type:5,description:"Narrator Volume",default:1,markers:[0,.25,.5,.75,1],stickToMarkers:!1},rate:{type:5,description:"Narrator Speed",default:1,markers:[.1,.5,1,2,5,10],stickToMarkers:!1},sayOwnName:{description:"Say own name",type:3,default:!1},latinOnly:{description:"Strip non latin characters from names before saying them",type:3,default:!1},joinMessage:{type:0,description:"Join Message",default:"{{USER}} joined"},leaveMessage:{type:0,description:"Leave Message",default:"{{USER}} left"},moveMessage:{type:0,description:"Move Message",default:"{{USER}} moved to {{CHANNEL}}"},muteMessage:{type:0,description:"Mute Message (only self for now)",default:"{{USER}} muted"},unmuteMessage:{type:0,description:"Unmute Message (only self for now)",default:"{{USER}} unmuted"},deafenMessage:{type:0,description:"Deafen Message (only self for now)",default:"{{USER}} deafened"},undeafenMessage:{type:0,description:"Undeafen Message (only self for now)",default:"{{USER}} undeafened"}})});function BE(e){if(!e||window.__OVERLAY__)return;let{volume:t,rate:o}=Ga.store,r=new SpeechSynthesisUtterance(e),n=ME();r.voice=n,r.volume=t,r.rate=o,speechSynthesis.speak(r)}function NE(e){let t=Ga.store.latinOnly?/[^\p{Script=Latin}\p{Number}\p{Punctuation}\s]/gu:/[^\p{Letter}\p{Number}\p{Punctuation}\s]/gu;return e.normalize("NFKC").replace(t,"").replace(/_{2,}/g,"_").trim()}function RE(e,t,o,r,n){return e.replaceAll("{{USER}}",NE(t)||(t?"Someone":"")).replaceAll("{{CHANNEL}}",NE(o)||"channel").replaceAll("{{DISPLAY_NAME}}",NE(r)||(r?"Someone":"")).replaceAll("{{NICKNAME}}",NE(n)||(n?"Someone":""))}function vlt({channelId:e,oldChannelId:t},o){if(o&&e!==gQ&&(t=gQ,gQ=e),e!==t){if(e)return[t?"move":"join",e];if(t)return["leave",t]}return["",""]}function ylt(e){let t=L.getCurrentUser(),o=ao.getGuildId();BE(RE(Ga.store[e+"Message"],t.username,"general",t.globalName??t.username,bt.getNick(o,t.id)??t.username))}var gQ,LE,Kwe=h(()=>{"use strict";d();j();xc();We();Je();O();He();Wt();Ta();R();C();fQ();Hz("VcNarrator","VcNarratorCustom","enabled");LE=S({name:"VcNarrator",description:"Announces when users join, leave, or move voice channels via narrator",tags:["Voice","Accessibility"],authors:[b.Ven],reporterTestable:2,settings:Ga,flux:{VOICE_STATE_UPDATES({voiceStates:e}){let t=ao.getGuildId(),o=Fe.getVoiceChannelId(),r=L.getCurrentUser().id;if(W.getChannel(o)?.type!==13)for(let n of e){let{userId:a,channelId:s,oldChannelId:l}=n,c=a===r;if(c&&n.sessionId!==oi.getSessionId()||!c&&(!o||s!==o&&l!==o))continue;let[u,p]=vlt(n,c);if(!u)continue;let m=Ga.store[u+"Message"],g=c&&!Ga.store.sayOwnName?"":L.getUser(a).username,x=g&&(L.getUser(a).globalName??g),v=g&&(bt.getNick(t,a)??x),y=W.getChannel(p).name;BE(RE(m,g,y,x,v))}},AUDIO_TOGGLE_SELF_MUTE(){let e=Fe.getVoiceChannelId(),t=Et.getVoiceStateForChannel(e);if(!t)return;let o=t.mute||t.selfMute?"unmute":"mute";BE(RE(Ga.store[o+"Message"],"",W.getChannel(e).name,"",""))},AUDIO_TOGGLE_SELF_DEAF(){let e=Fe.getVoiceChannelId(),t=Et.getVoiceStateForChannel(e);if(!t)return;let o=t.deaf||t.selfDeaf?"undeafen":"deafen";BE(RE(Ga.store[o+"Message"],"",W.getChannel(e).name,"",""))}},start(){if(typeof speechSynthesis>"u"||speechSynthesis.getVoices().length===0){new ie("VcNarrator").warn("SpeechSynthesis not supported or no Narrator voices found. Thus, this plugin will not work. Check my Settings for more info");return}},settingsAboutComponent(){let[e,t]=Ne(()=>{let n=speechSynthesis.getVoices();return[n.length!==0,n.some(a=>a.lang.startsWith("en"))]},[]),o=Ne(()=>Object.keys(Ga.def).filter(n=>n.endsWith("Message")).map(n=>n.slice(0,-7)),[]),r=null;if(e)t||(r=i(Nr,null,"You don't have any English voices installed, so the narrator might sound weird"));else{let n="No narrator voices found. ";n+=WS?"Install speech-dispatcher or espeak and run Discord with the --enable-speech-dispatcher flag":"Try installing some in the Narrator settings of your Operating System",r=i(Nr,null,n)}return i("section",null,i(U,null,"You can customise the spoken messages below. You can disable specific messages by setting them to nothing"),i(U,null,"The special placeholders ",i("code",null,"{{USER}}"),", ",i("code",null,"{{DISPLAY_NAME}}"),", ",i("code",null,"{{NICKNAME}}")," and ",i("code",null,"{{CHANNEL}}")," ","will be replaced with the user's name (nothing if it's yourself), the user's display name, the user's nickname on current server and the channel's name respectively"),t&&i(f,null,i(Ot,{className:z.top20},"Play Example Sounds"),i("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem"},className:"vc-narrator-buttons"},o.map(n=>i(ue,{key:n,onClick:()=>ylt(n)},Pp([n]))))),r)}})});function Zwe({url:e,width:t,height:o,event:r}){r?.stopPropagation();let n=new URL(e,window.location.href),a=e.startsWith("/")?"png":n.searchParams.get("animated")==="true"?"webp":hQ.store.format;n.searchParams.set("size",hQ.store.imgSize),n.pathname=n.pathname.replace(/\.(png|jpe?g|webp)$/,`.${a}`),e=n.toString(),n.searchParams.set("size","4096");let s=n.toString();Ji({url:e,original:s,width:t,height:o})}var hQ,Wv,Qwe,blt,Slt,wlt,OE,Ywe=h(()=>{"use strict";d();j();ot();O();_e();R();C();hQ=M({format:{type:4,description:"Choose the image format to use for non-animated images. Animated images will always use .webp",options:[{label:"webp",value:"webp",default:!0},{label:"png",value:"png"},{label:"jpg",value:"jpg"}]},imgSize:{type:4,displayName:"Image Size",description:"The image size to use",options:["128","256","512","1024","2048","4096"].map(e=>({label:e,value:e,default:e==="1024"}))}}),Wv=(e,t)=>Zwe({url:e,width:512,height:512,event:t}),Qwe=(e,t)=>Zwe({url:e,width:1024,event:t});blt=(e,{user:t,guildId:o})=>{if(!t)return;let r=bt.getMember(o,t.id)?.avatar||null,n=t.avatarDecorationData??t.avatarDecoration;e.splice(-1,0,i(P.MenuGroup,null,i(P.MenuItem,{id:"view-avatar",label:"View Avatar",action:()=>Wv(at.getUserAvatarURL(t,!0)),icon:On,leadingAccessory:{type:"icon",icon:On}}),r&&i(P.MenuItem,{id:"view-server-avatar",label:"View Server Avatar",action:()=>Wv(at.getGuildMemberAvatarURLSimple({userId:t.id,avatar:r,guildId:o,canAnimate:!0})),icon:On,leadingAccessory:{type:"icon",icon:On}}),n&&i(P.MenuItem,{id:"view-avatar-decoration",label:"View Avatar Decoration",action:()=>Wv(at.getAvatarDecorationURL({avatarDecoration:n,size:1024,canAnimate:!0})),icon:On,leadingAccessory:{type:"icon",icon:On}})))},Slt=(e,{guild:t})=>{if(!t)return;let{id:o,icon:r,banner:n}=t;!n&&!r||e.splice(-1,0,i(P.MenuGroup,null,r?i(P.MenuItem,{id:"view-icon",label:"View Icon",action:()=>Wv(at.getGuildIconURL({id:o,icon:r,canAnimate:!0})),icon:On,leadingAccessory:{type:"icon",icon:On}}):null,n?i(P.MenuItem,{id:"view-banner",label:"View Banner",action:()=>Qwe(at.getGuildBannerURL(t,!0)),icon:On,leadingAccessory:{type:"icon",icon:On}}):null))},wlt=(e,{channel:t})=>{t&&e.splice(-1,0,i(P.MenuGroup,null,i(P.MenuItem,{id:"view-group-channel-icon",label:"View Icon",action:()=>Wv(at.getChannelIconURL(t)),icon:On,leadingAccessory:{type:"icon",icon:On}})))},OE=S({name:"ViewIcons",authors:[b.Ven,b.TheKodeToad,b.Nuckyz,b.nyx],description:"Makes avatars and banners in user profiles clickable, adds View Icon/Banner/Avatar Decoration entries in the user, server and group channel context menu.",tags:["Media","Servers","Appearance"],searchTerms:["ImageUtilities"],dependencies:["DynamicImageModalAPI"],settings:hQ,openAvatar:Wv,openBanner:Qwe,contextMenus:{"user-context":blt,"guild-context":Slt,"gdm-context":wlt},patches:[{find:"return{avatarProps:{",replacement:{match:/(?<=onClick:.{0,30}?)null!=(\i)(?=.{0,200}children:.{0,50}...(\i),imageClassName:)/,replace:"null!=($1&&=$self.openAvatar.bind(undefined,$2.src))"}},{find:'"--custom-cutout-radius":',replacement:{match:/style:{(?=\.\.\.\i,backgroundImage:null!=(\i).{0,20}?\?`url\(\$\{\1\}\)`)/,replace:(e,t)=>`onClick:vcEvent=>${t}!=null&&$self.openBanner(${t},vcEvent),style:{cursor:${t}!=null?"pointer":void 0,`}},{find:'["aria-hidden"],"aria-label":',replacement:{match:/null==\i\.icon\?.+?src:(\(0,\i\.\i\).+?\))(?=[,}])/,replace:(e,t)=>`${e},onClick:vcEvent=>arguments[0]?.size!=="SIZE_40"&&$self.openAvatar(${t},vcEvent)`}},{find:".channel.getRecipientId(),",replacement:{match:/(?=,src:(\i.getAvatarURL\(.+?[)]))/,replace:(e,t)=>`,onClick:vcEvent=>$self.openAvatar(${t},vcEvent)`}},{find:".EMPTY_GROUP_DM)",replacement:{match:/(?<=SIZE_80,)(?=src:(.+?\))[,}])/,replace:(e,t)=>`onClick:vcEvent=>$self.openAvatar(${t},vcEvent),`}}]})});var Jwe=h(()=>{});function Alt(e){return Object.fromEntries(Object.entries(e).sort(([t],[o])=>t.localeCompare(o)))}function klt(e){let t=Alt(JSON.parse(JSON.stringify(e)));for(let r of["email","phone","mfaEnabled","personalConnectionId"])delete t.author[r];let o=t;return delete o.editHistory,delete o.deleted,delete o.firstEditTimestamp,o.attachments?.forEach(r=>delete r.deleted),t}function vQ(e,t,o){ce(r=>i(H,null,i(be,{...r,title:`Raw ${t} Data`,size:"xl",actions:[{text:`Copy ${t} Data`,variant:"secondary",onClick:()=>ft(e,`${t} data copied to clipboard!`)},o&&{text:"Copy Raw Content",variant:"secondary",onClick:()=>ft(o,"Content copied to clipboard!")}].filter(Aa)},!!o&&i(f,null,i(Ot,null,"Message Content"),i(Ps,{className:"vc-viewRaw-codeBlock",content:o,lang:""}),i(Ot,{className:z.top16},"Message Data")),i(Ps,{className:"vc-viewRaw-codeBlock",content:e,lang:"json"}))))}function xQ(e){e=klt(e);let t=JSON.stringify(e,null,4);return vQ(t,"Message",e.content)}function Xf(e,t){return(o,r)=>{let n=t?t(r):r[e.toLowerCase()];if(!n||r.label===Xe("CHANNEL_ACTIONS_MENU_LABEL"))return;let a=e==="Message";if(a&&!r5.store.messageContextMenu)return;let s=`vc-view-${e.toLowerCase()}-raw`,l=a?()=>xQ(n):()=>vQ(JSON.stringify(n,null,4),e);(wt(`devmode-copy-id-${n.id}`,o)??o).splice(-1,0,i(P.MenuItem,{id:s,label:"View Raw",action:l,icon:Kv,leadingAccessory:{type:"icon",icon:Kv}}))}}var Kv,r5,Clt,FE,Xwe=h(()=>{"use strict";d();Jwe();Fo();j();bd();Pe();We();Ja();O();_e();Ca();R();C();Kv=({height:e=20,width:t=20,className:o})=>i("svg",{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",width:t,height:e,className:o},i("path",{d:"M12.9297 3.25007C12.7343 3.05261 12.4154 3.05226 12.2196 3.24928L11.5746 3.89824C11.3811 4.09297 11.3808 4.40733 11.5739 4.60245L16.5685 9.64824C16.7614 9.84309 16.7614 10.1569 16.5685 10.3517L11.5739 15.3975C11.3808 15.5927 11.3811 15.907 11.5746 16.1017L12.2196 16.7507C12.4154 16.9477 12.7343 16.9474 12.9297 16.7499L19.2604 10.3517C19.4532 10.1568 19.4532 9.84314 19.2604 9.64832L12.9297 3.25007Z"}),i("path",{d:"M8.42616 4.60245C8.6193 4.40733 8.61898 4.09297 8.42545 3.89824L7.78047 3.24928C7.58466 3.05226 7.26578 3.05261 7.07041 3.25007L0.739669 9.64832C0.5469 9.84314 0.546901 10.1568 0.739669 10.3517L7.07041 16.7499C7.26578 16.9474 7.58465 16.9477 7.78047 16.7507L8.42545 16.1017C8.61898 15.907 8.6193 15.5927 8.42616 15.3975L3.43155 10.3517C3.23869 10.1569 3.23869 9.84309 3.43155 9.64824L8.42616 4.60245Z"}));r5=M({clickMethod:{description:"Change the button to view the raw content/data of any message.",type:4,options:[{label:"Left Click to view the raw content.",value:"Left",default:!0},{label:"Right click to view the raw content.",value:"Right"}]},messageContextMenu:{description:"Show in message context menu",type:3,default:!1}});Clt=(e,{id:t})=>{let o=Ss();if(!o)return;let r=To.getRole(o.id,t);r&&e.push(i(P.MenuItem,{id:"vc-view-role-raw",label:"View Raw",action:()=>vQ(JSON.stringify(r,null,4),"Role"),icon:Kv,leadingAccessory:{type:"icon",icon:Kv}}))};oo("ViewRaw","ViewRawVariant");FE=S({name:"ViewRaw",description:"Copy and view the raw content/data of any message, channel or guild",dependencies:["MessagePopoverAPI"],tags:["Chat","Developers"],authors:[b.KingFish,b.Ven,b.rad,b.ImLvna],settings:r5,contextMenus:{"guild-context":Xf("Guild"),"guild-settings-role-context":Xf("Role"),"channel-context":Xf("Channel"),"thread-context":Xf("Channel"),"gdm-context":Xf("Channel"),"user-context":Xf("User"),"dev-context":Clt,message:Xf("Message"),"user-profile-overflow-menu":Xf("Profile",e=>Co.getGuildMemberProfile(e.user?.id,e.guildId)??Co.getUserProfile(e.user?.id))},messagePopoverButton:{icon:Kv,render(e){let t=()=>{r5.store.clickMethod==="Right"?ft(e.content):xQ(e)},o=n=>{r5.store.clickMethod==="Left"?(n.preventDefault(),n.stopPropagation(),ft(e.content)):(n.preventDefault(),n.stopPropagation(),xQ(e))};return{label:r5.store.clickMethod==="Right"?"Copy Raw (Left Click) / View Raw (Right Click)":"View Raw (Left Click) / Copy Raw (Right Click)",icon:Kv,message:e,channel:W.getChannel(e.channel_id),onClick:t,onContextMenu:o}}}})});var Vwe=h(()=>{});var _E,e4e=h(()=>{"use strict";d();Vwe();O();R();_E=S({name:"VoiceDownload",description:"Adds a download to voice messages. (Opens a new browser tab)",tags:["Voice","Media"],authors:[b.puv],patches:[{find:"#{intl::VOICE_MESSAGES_PLAYBACK_RATE_LABEL}",replacement:{match:/(?<=onVolumeHide:\i\}\))/,replace:",$self.renderDownload(arguments[0].src)"}}],renderDownload(e){return i("a",{className:"vc-voice-download",href:e,onClick:t=>t.stopPropagation(),"aria-label":"Download voice message",target:"_blank"},i(this.Icon,null))},Icon:()=>i("svg",{height:"24",width:"24",viewBox:"0 0 24 24",fill:"currentColor"},i("path",{d:"M12 2a1 1 0 0 1 1 1v10.59l3.3-3.3a1 1 0 1 1 1.4 1.42l-5 5a1 1 0 0 1-1.4 0l-5-5a1 1 0 1 1 1.4-1.42l3.3 3.3V3a1 1 0 0 1 1-1ZM3 20a1 1 0 1 0 0 2h18a1 1 0 1 0 0-2H3Z"}))})});var t4e=h(()=>{});var Tlt,o4e,n4e=h(()=>{"use strict";d();C();a5();Tlt=VencordNative.pluginHelpers.VoiceMessages,o4e=({setAudioBlob:e,onRecordingChange:t})=>{let[o,r]=T(!1),n=s=>{r(s),t?.(s)};function a(){let s=DiscordNative.nativeModules.requireModule("discord_voice");!o?s.startLocalAudioRecording({echoCancellation:i5.store.echoCancellation,noiseCancellation:i5.store.noiseSuppression,deviceId:$o.getInputDeviceId()},c=>{c?n(!0):ne("Failed to start recording",D.Type.FAILURE)}):s.stopLocalAudioRecording(async c=>{if(c){let u=await Tlt.readRecording(c);u?e(new Blob([new Uint8Array(u)],{type:"audio/ogg; codecs=opus"})):ne("Failed to finish recording",D.Type.FAILURE)}n(!1)})}return i(ue,{onClick:a},o?"Stop":"Start"," recording")}});var Ilt,Elt,r4e,i4e=h(()=>{"use strict";d();Kt();a5();Ilt="----",Elt="RECORDING",r4e=({src:e,waveform:t,recording:o})=>{let r=TS({deps:[o]}),n=o?Math.floor(r/1e3):0,a=Math.floor(n/60)+":"+(n%60).toString().padStart(2,"0");return e&&!o?i(yQ,{key:e,src:e,waveform:t}):i("div",{className:Uh("preview",o?"preview-recording":[])},i("div",{className:Uh("preview-indicator")}),i("div",{className:Uh("preview-time")},a),i("div",{className:Uh("preview-label")},o?Elt:Ilt))}});var a4e=h(()=>{"use strict";d();C();a5()});function Flt(e){let t=e.getChannelData(0),o=ia.clamp(Math.floor(e.duration*Llt),Math.min(Blt,t.length),Rlt),r=new Uint8Array(o),n=Math.floor(t.length/o);for(let s=0;s{mt.post({url:Gt.Endpoints.MESSAGES(o),body:{flags:Dlt|(zv?Plt:0),channel_id:o,content:"",nonce:en.fromTimestamp(Date.now()),sticker_ids:[],type:0,attachments:[{id:"0",filename:n.filename,uploaded_filename:n.uploadedFilename,waveform:t.waveform,duration_secs:t.duration}],message_reference:r?fo.getSendMessageOptionsForReply(r)?.messageReference:null}})}),n.on("error",()=>ne("Failed to upload voice message",D.Type.FAILURE)),n.upload()}function Ult(){let[e,t]=T();return[e,r=>{e&&URL.revokeObjectURL(e),t(URL.createObjectURL(r))}]}function zlt({modalProps:e}){let[t,o]=T(!1),[r,n]=T(),[a,s]=Ult(),l=o4e;G(()=>()=>{a&&URL.revokeObjectURL(a)},[a]);let[c,u]=Ro(async()=>{if(!r)return bQ;let g=await new AudioContext().decodeAudioData(await r.arrayBuffer());return{waveform:Flt(g),duration:g.duration}},{deps:[r],fallbackValue:bQ}),p=r&&(!r.type.startsWith("audio/ogg")||r.type.includes("codecs")&&!r.type.includes("opus"));return i(be,{...e,title:"Record Voice Message",actions:[{text:"Send",variant:"primary",onClick:()=>{_lt(r,c??bQ),e.onClose(),ne("Now sending voice message... Please be patient",D.Type.MESSAGE)},disabled:!r}]},i("div",{className:Uh("buttons")},i(l,{setAudioBlob:m=>{n(m),s(m)},onRecordingChange:o}),i(ue,{onClick:async()=>{let m=await T9("audio/*");m&&(n(m),s(m))}},"Upload File")),i(Ia.FormTitle,null,"Preview"),u?i(U,{className:Uh("error")},"Failed to parse selected audio file: ",u.message):i(r4e,{src:a,waveform:c.waveform,recording:t}),p&&i(Ht,{variant:"warning",className:z.top16,defaultPadding:!0},i(Ia.FormText,null,"Voice Messages have to be OggOpus to be playable on iOS. This file is ",i("code",null,r.type)," so it will not be playable on iOS."),i(Ia.FormText,{className:z.top8},"To fix it, first convert it to OggOpus, for example using the ",i(so,{href:"https://convertio.co/mp3-opus/"},"convertio web converter"))))}var Dlt,Plt,Mlt,Nlt,Blt,Rlt,Llt,UE,bQ,Uh,yQ,i5,Olt,zE,a5=h(()=>{"use strict";d();t4e();j();Qn();ot();$r();Je();UK();O();we();Wt();Kt();R();ul();co();C();n4e();i4e();a4e();Dlt=8192,Plt=4096,Mlt="AAAAAAAAAAAA",Nlt=1,Blt=32,Rlt=256,Llt=10,UE=255,bQ={waveform:Mlt,duration:Nlt},Uh=K("vc-vmsg-"),yQ=()=>null,i5=M({noiseSuppression:{type:3,description:"Noise Suppression",default:!0},echoCancellation:{type:3,description:"Echo Cancellation",default:!0}}),Olt=(e,t)=>{t.channel.guild_id&&!(ht.can(ct.SEND_VOICE_MESSAGES,t.channel)&&ht.can(ct.SEND_MESSAGES,t.channel))||e.push(i(P.MenuItem,{id:"vc-send-vmsg",iconLeft:e1,leadingAccessory:{type:"icon",icon:e1},label:"Send Voice Message",action:()=>ce(o=>i(zlt,{modalProps:o}))}))},zE=S({name:"VoiceMessages",description:"Allows you to send voice messages like on mobile. To do so, right click the upload button and click Send Voice Message",tags:["Voice"],authors:[b.Ven,b.Vap,b.Nickyux],settings:i5,patches:[{find:"#{intl::PAUSE_VOICE_MESSAGE_A11Y_LABEL}",replacement:{match:/(?<=\i=)(?=\i\.memo\(.{0,50}?=1,onVolumeChange:[^}]+?waveform:[^}]+?playbackCacheKey:)/,replace:"$self.VoiceMessage="}}],set VoiceMessage(e){yQ=e},contextMenus:{"channel-attach":Olt}})});var $lt,$E,s4e=h(()=>{"use strict";d();j();O();R();$lt=M({multiplier:{description:"Volume Multiplier",type:5,markers:zt(1,5,.5),default:2,stickToMarkers:!0}}),$E=S({name:"VolumeBooster",authors:[b.Nuckyz,b.sadan],description:"Allows you to set the user and stream volume above the default maximum",tags:["Voice","Utility"],settings:$lt,patches:[{find:"#{intl::USER_VOLUME}",replacement:{match:/(?<=maxValue:)\i\.isPlatformEmbedded\?(\i\.\i):\i\.\i(?=,)/,replace:(e,t)=>`${t}*$self.settings.store.multiplier`}},{find:"currentVolume:",replacement:{match:/(?<=maxValue:)\i\.\i\?(\d+?):\d+?(?=,)/,replace:(e,t)=>`${t}*$self.settings.store.multiplier`}},{find:"streamSourceNode",predicate:()=>!1,group:!0,replacement:[{match:/Math\.max.{0,30}\)\)/,replace:"arguments[0]"},{match:/\}return"video"/,replace:"this.updateAudioElement();$&"},{match:/\.volume=this\._volume\/100;/,replace:".volume=0.00;$self.patchVolume(this);"}]},{find:"AudioContextSettingsMigrated",replacement:[{match:/(?<=isLocalMute\(\i,\i\),volume:(\i).+?\(0,\i\.\i\)\(\i,\i,\{volume:)\1(?=\}\))/,replace:"$&>200?200:$&"},{match:/(?<=Object\.entries\(\i\.localMutes\).+?volume:).+?(?=,)/,replace:"$&>200?200:$&"},{match:/(?<=Object\.entries\(\i\.localVolumes\).+?volume:).+?(?=})/,replace:"$&>200?200:$&"}]},{find:'="MediaEngineStore",',replacement:[{match:/(\.settings\.audioContextSettings.+?)(\i\[\i\])=(\i\.volume)(.+?setLocalVolume\(\i,).+?\)/,replace:(e,t,o,r,n)=>t+`(${o}>200?void 0:${o}=${r})`+n+`${o}??${r})`}]}],patchVolume(e){if(e.stream.getAudioTracks().length!==0){if(e.streamSourceNode??=e.audioContext.createMediaStreamSource(e.stream),!e.gainNode){let t=e.gainNode=e.audioContext.createGain();e.streamSourceNode.connect(t),t.connect(e.audioContext.destination)}e.sinkId!=null&&e.sinkId!==e.audioContext.sinkId&&"setSinkId"in AudioContext.prototype&&e.audioContext.setSinkId(e.sinkId==="default"?"":e.sinkId),e.gainNode.gain.value=e._mute?0:e._volume/100}}})});function Hlt(e,t,o){let r=t.name+(t.id?`:${t.id}`:"");return mt.get({url:Gt.Endpoints.REACTIONS(e.channel_id,e.id,r),query:{limit:100,type:o},oldFormErrors:!0}).then(n=>{for(let a of n.body)Q.dispatch({type:"USER_UPDATE",user:a});Q.dispatch({type:"MESSAGE_REACTION_ADD_USERS",channelId:e.channel_id,messageId:e.id,users:n.body,emoji:t,reactionType:o})}).catch(console.error).finally(()=>lr(250))}function jlt(e,t,o){let r=`${e.id}:${t.name}:${t.id??""}:${o}`,n=c4e[r]??={fetched:!1,users:new Map};return n.fetched||(Glt.unshift(()=>Hlt(e,t,o)),n.fetched=!0),n.users}function l4e(e){e.stopPropagation()}function qlt({message:e,users:t}){return Va(()=>{SQ?.scrollCounter>0&&SQ.setAutomaticAnchor(null)}),i("div",{style:{marginLeft:"0.5em",transform:"scale(0.9)"}},i("div",{onClick:l4e,onKeyDown:l4e,style:u4e.store.avatarClick?{}:{pointerEvents:"none"}},i(Vc,{users:t,guildId:W.getChannel(e.channel_id)?.guild_id,renderIcon:!1,max:5,showDefaultAvatarsForNullUsers:!0,showUserPopout:!0})))}var SQ,Glt,c4e,u4e,GE,d4e=h(()=>{"use strict";d();Jt();j();Pe();MT();O();Be();jp();Kt();R();C();SQ=null,Glt=new Oa,c4e={};u4e=M({avatarClick:{description:"Toggle clicking avatars in reactions",type:3,default:!1,restartNeeded:!0}}),GE=S({name:"WhoReacted",description:"Renders the avatars of users who reacted to a message",tags:["Reactions","Chat","Appearance"],authors:[b.Ven,b.KannaDev,b.newwares,b.paige],isModified:!0,settings:u4e,patches:[{find:",reactionRef:",replacement:{match:/(\i)\?null:\(0,\i\.jsx\)\(\i\.\i,{className:\i\.reactionCount,.*?}\),(?<=(emoji:\i,message:\i,type:\i).+?)/,replace:"$&$1?null:$self.renderUsers({$2}),"}},{find:'"MessageReactionsStore"',replacement:{match:/CONNECTION_OPEN:function\(\){(\i)={}/,replace:"$&;$self.reactions=$1;"}},{find:"cleanAutomaticAnchor(){",replacement:{match:/constructor\(\i\)\{(?=.{0,100}(?:automaticAnchor|\.messages\.loadingMore))/,replace:"$&$self.setScrollObj(this);"}}],renderUsers:H.wrap(({message:e,emoji:t,type:o})=>{let r=Vt();if(G(()=>{let s=l=>{l?.messageId===e.id&&r()};return Q.subscribe("MESSAGE_REACTION_ADD_USERS",s),()=>Q.unsubscribe("MESSAGE_REACTION_ADD_USERS",s)},[e.id,r]),e.reactions.length>10)return null;let n=jlt(e,t,o),a=Array.from(n,([s])=>L.getUser(s)).filter(Boolean);return Ve(Au.name)&&(a=a.filter(s=>{let{blocked:l,ignored:c}=Au.getRelationshipStatus(s);return!(l||c&&Au.settings.store.alsoHideIgnoredUsers)})),a.length===0?null:i(qlt,{message:e,users:a})},{noop:!0}),setScrollObj(e){SQ=e},set reactions(e){c4e=e}})});async function wQ(){return dm&&dm.close(),dm=new WebSocket(`ws://127.0.0.1:${ki.store.webSocketPort??42070}/?client=Equicord`),new Promise((e,t)=>{dm.onopen=e,dm.onerror=t,setTimeout(t,3e3)})}function Klt(e){return e.type===HE.DM&&ki.store.dmNotifications||e.type===HE.GROUP_DM&&ki.store.groupDmNotifications?!1:!ki.store.serverNotifications}function Qlt(e,t,o){fetch(`https://cdn.discordapp.com/avatars/${o.author.id}/${o.author.avatar}.png?size=128`).then(r=>r.blob()).then(r=>new Promise(n=>{let a=new FileReader;a.onload=()=>n(a.result.split(",")[1]),a.readAsDataURL(r)})).then(r=>{let n={type:1,timeout:ki.store.lengthBasedTimeout?h4e(t):ki.store.timeout,height:g4e(t),opacity:ki.store.opacity,volume:ki.store.volume,audioPath:ki.store.soundPath,title:e,content:t,useBase64Icon:!0,icon:r,sourceApp:"Vencord"};f4e(n)})}function p4e(e,t){let o={type:1,timeout:ki.store.lengthBasedTimeout?h4e(e):ki.store.timeout,height:g4e(e),opacity:ki.store.opacity,volume:ki.store.volume,audioPath:ki.store.soundPath,title:t,content:e,useBase64Icon:!1,icon:"default",sourceApp:"Equicord"};f4e(o)}async function f4e(e){if(ki.store.preferUDP){m4e.sendToOverlay(e);return}let t={sender:"Vencord",target:"xsoverlay",command:"SendNotification",jsonData:JSON.stringify(e),rawData:null};dm.readyState!==dm.OPEN&&await wQ(),dm.send(JSON.stringify(t))}function Zlt(e,t){let o=L.getCurrentUser();return e.author.id===o.id||e.author.bot&&!ki.store.botNotifications?!1:Wlt(e,t)}function g4e(e){return e.length<=100?100:e.length<=200?150:e.length<=300?200:250}function h4e(e){return e.length<=100?3:e.length<=200?4:e.length<=300?5:6}var HE,Wlt,EEo,ki,dm,m4e,jE,x4e=h(()=>{"use strict";d();j();O();He();R();le();C();HE=qn(e=>e.ANNOUNCEMENT_THREAD===10),Wlt=Oe(".SUPPRESS_NOTIFICATIONS))return!1"),EEo=new ie("XSOverlay"),ki=M({webSocketPort:{type:1,description:"Websocket port",default:42070,async onChange(){await wQ()}},preferUDP:{type:3,displayName:"Prefer UDP",description:"Enable if you use an older build of XSOverlay unable to connect through websockets. This setting is ignored on web.",default:!1,disabled:()=>!1},botNotifications:{type:3,description:"Allow bot notifications",default:!1},serverNotifications:{type:3,description:"Allow server notifications",default:!0},dmNotifications:{type:3,displayName:"DM Notifications",description:"Allow Direct Message notifications",default:!0},groupDmNotifications:{type:3,displayName:"Group DM Notifications",description:"Allow Group DM notifications",default:!0},callNotifications:{type:3,description:"Allow call notifications",default:!0},pingColor:{type:0,description:"User mention color",default:"#7289da"},channelPingColor:{type:0,description:"Channel mention color",default:"#8a2be2"},soundPath:{type:0,description:"Notification sound (default/warning/error)",default:"default"},timeout:{type:1,description:"Notification duration (secs)",default:3},lengthBasedTimeout:{type:3,description:"Extend duration with message length",default:!0},opacity:{type:5,description:"Notif opacity",default:1,markers:zt(0,1,.1)},volume:{type:5,description:"Volume",default:.2,markers:zt(0,1,.1)}});m4e=VencordNative.pluginHelpers.XSOverlay,jE=S({name:"XSOverlay",description:"Forwards discord notifications to XSOverlay, for easy viewing in VR",tags:["Notifications"],authors:[b.Nyako],searchTerms:["vr","notify"],reporterTestable:2,settings:ki,flux:{CALL_UPDATE({call:e}){if(e?.ringing?.includes(L.getCurrentUser().id)&&ki.store.callNotifications){let t=W.getChannel(e.channel_id);p4e("Incoming call",`${t.name} is calling you...`)}},MESSAGE_CREATE({message:e,optimistic:t}){if(t)return;let o=W.getChannel(e.channel_id);if(!Zlt(e,e.channel_id))return;let r=ki.store.pingColor.replaceAll("#","").trim(),n=ki.store.channelPingColor.replaceAll("#","").trim(),a=e.content,s="";if(o.guild_id){let p=$e.getGuild(o.guild_id);s=`${e.author.username} (${p.name}, #${o.name})`}switch(o.type){case HE.DM:s=e.author.username.trim();break;case HE.GROUP_DM:let p=o.name.trim()??o.rawRecipients.map(m=>m.username).join(", ");s=`${e.author.username} (${p})`;break}if(e.referenced_message&&(s+=" (reply)"),e.embeds.length>0&&(a+=" [embed] ",e.content===""&&(a="sent message embed(s)")),e.sticker_items&&(a+=" [sticker] ",e.content===""&&(a="sent a sticker")),e.attachments.filter(p=>typeof p?.content_type=="string"&&p?.content_type.startsWith("image")).forEach(p=>{a+=` [image: ${p.filename}] `}),e.attachments.filter(p=>p&&!p.content_type?.startsWith("image")).forEach(p=>{a+=` [attachment: ${p.filename}] `}),e.mentions.length>0&&(a=a.replace(/<@!?(\d{17,20})>/g,(p,m)=>`@${L.getUser(m)?.username||"unknown-user"}`)),e.mention_roles.length>0)for(let p of e.mention_roles){let m=To.getRole(o.guild_id,p);if(!m)continue;let g=m.colorString??`#${r}`;a=a.replace(`<@&${p}>`,`@${m.name}`)}let c=a.match(new RegExp("()","g")),u=a.match(new RegExp("<(#\\d+)>","g"));if(c)for(let p of c)a=a.replace(new RegExp(`${p}`,"g"),`:${p.split(":")[1]}:`);if(u)for(let p of u){let m=p.split("<#")[1];m=m.substring(0,m.length-1),a=a.replace(new RegExp(`${p}`,"g"),`#${W.getChannel(m).name}`)}Klt(o)||Qlt(s,a,e)}},start:wQ,stop(){dm.close(),m4e.closeSocket()},settingsAboutComponent:()=>i(f,null,i(ue,{onClick:()=>p4e("This is a test notification! explode","Hello from Vendor!")},"Send test notification"))})});var qE,v4e=h(()=>{"use strict";d();O();R();qE=S({name:"YoutubeAdblock",description:"Block ads in YouTube embeds and the WatchTogether activity via AdGuard",tags:["Media","Utility"],authors:[b.ImLvna,b.Ven]})});var WE,y4e=h(()=>{"use strict";d();rl();O();R();WE=S({name:"AudioPlayerAPI",description:"API to play internal Discord audio files or external audio links.",authors:[F.Etorix],AudioType:Q3,playAudio:ii,patches:[{find:"could not play audio",group:!0,replacement:[{match:/(let \i=class.{0,1000}?new Audio;\i.src=)((\i\(\d+\))(?:\(`\.\/\$\{|.{0,50}concat\())this.name(\}\.mp3`\))/,replace:"$3;$1this.type!==$self.AudioType.DISCORD?this.audio:$2this.audio$4"},{match:/constructor\(((?:\i,){3}\i)([^)]*)\)\{[^}]+}/,replace:"constructor(options,$1$2){$self.buildPlayer(this,options,$1);}"},{match:/(\i.pause\(\),(\i).src="".{0,20}?null)/,replace:"$2.onerror=()=>{},$1"},{match:/(?<=(\i).onloadeddata=\(\)=>{)/,replace:"$1.playbackRate=this._speed,"},{match:/(onerror=\()(\)=>{)(?=let)/,replace:"$1error$2this.onError?.(error);"},{match:/(?<=onended=\(\)=>)(.{0,40}?),/,replace:"{$self.stopAudio(this);this.onEnded?.();},"},{match:/(stop\()(\){)this.destroyAudio\(\)/,replace:"$1restart$2$self.stopAudio(this,restart);"},{match:/let \i=new Audio\((\(0,\i.\i\)\(\i\)).{0,35}?play\(\)/,replace:"$self.playAudio($1)"}]},{find:"SoundUtils",replacement:{match:/return new (\i)\((.{0,50}?)(?=}function)/,replace:"return new $1(undefined,$2"}},{find:'"UPDATE_OPEN_ON_STARTUP"',group:!0,replacement:[{match:/(?<=discodo",\i)(\);return )\i.volume=1,/,replace:",1$1"},{match:/,(this._connectedSound.volume)=1/,replace:";"}]}],stopAudio(e,t){t?e.ensureAudio().then(o=>{o.currentTime=0,o.play()}):e.persistent?e._audio?.then(o=>{o.pause(),o.currentTime=0}):e.destroyAudio()},processAudio(e){e.preprocessDataPrevious=e.preprocessDataCurrent?structuredClone(e.preprocessDataCurrent):null,e.preprocessDataCurrent=structuredClone(e.preprocessDataOriginal),e.preprocessDataCurrent.volume*=100;for(let t of Object.values(rw))t(e.preprocessDataCurrent);e.preprocessDataCurrent.volume/=100,e.audio=e.preprocessDataCurrent.audio,e.type=iw(e.preprocessDataCurrent.audio),e._volume=Math.max(0,Math.min(1,e.preprocessDataCurrent.volume)),e._speed=Math.max(.0625,Math.min(16,e.preprocessDataCurrent.speed)),e.preprocessDataCurrent.audio!==e.preprocessDataPrevious?.audio&&(e.destroyAudio(),e.persistent&&e.ensureAudio()),e.preprocessDataCurrent.volume!==e.preprocessDataPrevious?.volume&&e._audio?.then(t=>{t.volume=e._volume}),e.preprocessDataCurrent.speed!==e.preprocessDataPrevious?.speed&&e._audio?.then(t=>{t.playbackRate=e._speed})},buildPlayer(e,t={},o,r,n,a){e.preprocessDataOriginal={audio:o,type:iw(o),volume:Math.max(0,Math.min(1,n||(t.volume?t.volume/100:1))),speed:Math.max(.0625,Math.min(16,t.speed??1))},e.audio=e.preprocessDataOriginal.audio,e._audio=null,e._volume=e.preprocessDataOriginal.volume,e._speed=e.preprocessDataOriginal.speed,e.preload=t.preload??!1,e.persistent=t.persistent??!1,e.type=iw(o),e.outputChannel=a,e.onEnded=t.onEnded,e.onError=t.onError,e.processAudio=()=>this.processAudio(e),e.processAudio(),e.preload&&e.ensureAudio()}})});var KE,b4e=h(()=>{"use strict";d();J3();O();R();KE=S({name:"ExtraContextMenusAPI",description:"API that adds more context menus to patch.",authors:[F.thororen],required:!0,patches:[{find:"renderEmptyFavorite",replacement:{match:/(render\(\){.{0,500})onContextMenu:this\.handleContextMenu,/,replace:"$1onContextMenu:(e)=>$self.openContextMenu(e,this),"}}],openContextMenu(e,t){t&&W$(e,t)}})});var QE,S4e=h(()=>{"use strict";d();O();R();QE=S({name:"HeaderBarAPI",description:"API to add buttons to the header bar and channel toolbar.",authors:[b.prism],patches:[{find:'?"BACK_FORWARD_NAVIGATION":',replacement:{match:/(?<="HELP"===.{0,75}\{\}\))(?=\])/,replace:",...Vencord.Api.HeaderBar._addHeaderBarButtons()"}},{find:"Missing channel in Channel.renderHeaderToolbar",replacement:{match:/(?<=renderHeaderToolbar"\);let (\i)=\[\];)/,replace:"Vencord.Api.HeaderBar._addChannelToolbarButtons($1);"}}]})});var ZE,w4e=h(()=>{"use strict";d();O();R();ZE=S({name:"ProfileCollectionsAPI",description:"API to add collections to the user profile panel like discords game collection.",authors:[b.thororen],patches:[{find:'"UserProfilePopout");',replacement:{match:/user:\i,widgets:.{0,100}?\}\),/,replace:"$&Vencord.Api.ProfileCollections.renderProfileCollections(arguments[0]),"}},{find:'"UserProfileAccountPopout"',replacement:{match:/user:\i,widgets:.{0,100}}\),/,replace:"$&Vencord.Api.ProfileCollections.renderProfileCollections(arguments[0]),"}},{find:".SIDEBAR,disableToolbar:",replacement:{match:/user:\i,widgets:.{0,100}?\}\),(?=.{0,100}unownedWishlistItems:\i,wishlistId:\i)/,replace:"$&Vencord.Api.ProfileCollections.renderProfileCollections({...arguments[0],isSideBar:true}),"}}]})});var YE,A4e=h(()=>{"use strict";d();O();R();YE=S({name:"ProfileSectionsAPI",description:"API to add sections near the 'Member Since' area of user profile panels.",authors:[b.thororen],patches:[{find:".SIDEBAR,disableToolbar:",replacement:{match:/(#{intl::USER_PROFILE_MEMBER_SINCE}\),.{0,100}userId:(\i\.id)\}\)\}\))(?=.{0,100}unownedWishlistItems:\i,wishlistId:\i)/,replace:"$1,Vencord.Api.ProfileSections.renderProfileSections({userId:$2,isSideBar:true})"}},{find:",applicationRoleConnection:",replacement:{match:/(#{intl::USER_PROFILE_MEMBER_SINCE}\),.{0,100}userId:(\i\.id),.{0,100}}\)}\)),/,replace:"$1,Vencord.Api.ProfileSections.renderProfileSections({userId:$2,isSideBar:false}),"}},{find:".MODAL_V2,onClose:",replacement:{match:/(#{intl::USER_PROFILE_MEMBER_SINCE}\),.{0,100}userId:(\i\.id),.{0,100}}\)}\)),/,replace:"$1,Vencord.Api.ProfileSections.renderProfileSections({userId:$2,isSideBar:false}),"}}]})});var JE,k4e=h(()=>{"use strict";d();O();R();JE=S({name:"SurfaceClassesAPI",description:"API to add plugin-owned semantic data attributes and limited props to stable Discord layout surfaces.",authors:[F.benjii],patches:[{find:"AnnouncementsSpoilerIcon:",replacement:[{match:/"data-fullscreen":\i.{0,150},\{isSidebarOpen:/,replace:'...Vencord.Api.SurfaceClasses._useSurfaceProps("base"),$&'},{match:/"data-collapsed":\i,.{0,130}themeOverride/,replace:'...Vencord.Api.SurfaceClasses._useSurfaceProps("sidebar"),$&'},{match:/\.CHANNEL_SIDEBAR_RESIZED,\{.{0,100}\i=\{/,replace:'$&...Vencord.Api.SurfaceClasses._useSurfaceProps("channelList"),'},{match:/ref:\i.{0,70}#{intl::vTl6Lk::raw}\),/,replace:"...Vencord.Api.SurfaceClasses._useSurfaceProps('userArea'),$&"}]},{find:"#{intl::GUILDS_BAR_A11Y_LABEL}",replacement:[{match:/"aria-label":.{0,50}#{intl::GUILDS_BAR_A11Y_LABEL}\),children:/,replace:'...Vencord.Api.SurfaceClasses._useSurfaceProps("guildBar"),$&'}]},{find:"#{intl::MEMBERS_LIST_LANDMARK_LABEL}",replacement:{match:/"aria-labelledby":.{0,130}#{intl::MEMBERS_LIST_LANDMARK_LABEL}/,replace:'...(Vencord.Api.SurfaceClasses._trackSurfaceInstance("membersList",this),Vencord.Api.SurfaceClasses._getSurfaceProps("membersList")),$&'}},{find:'?"refresh-title-bar-small":',replacement:{match:/"data-window-chrome":"true"/,replace:'...Vencord.Api.SurfaceClasses._useSurfaceProps("headerBar"),$&'}},{find:".Masks.HEADER_BAR_BADGE_TOP:",replacement:{match:/"aria-label":\i.{0,25}role:\i,ref:\i/,replace:'...Vencord.Api.SurfaceClasses._useSurfaceProps("titleBar"),$&'}}]})});var C4e=h(()=>{});function AQ(e){return i("div",{className:kQ("section-separator")},i(Rt,null),i(Ot,{className:kQ("section-title")},e))}var kQ,fn,pm,CQ=h(()=>{"use strict";d();C4e();Jt();j();xr();We();ql();uC();we();Su();R();Br("Declutter","removeShopAboveDms","removeShopAboveDM");Br("Declutter","removeQuestsAboveDms","removeQuestsAboveDM");kQ=K("vc-declutter-"),fn=M({userProfileHeader:{type:6,component:()=>AQ("User Profile")},removeAvatarDecoration:{type:3,description:"Remove avatar decorations. This is/will be disabled if Decor is enabled.",default:!1,disabled:()=>Ve("Decor"),restartNeeded:!0},removeNameplate:{type:3,description:"Remove nameplates.",default:!0,restartNeeded:!0},removeProfileEffect:{type:3,description:"Remove profile animation effects on open.",default:!0,restartNeeded:!0},removeProfileFrame:{type:3,description:"Remove profile frames.",default:!0,restartNeeded:!0},removeClanTag:{type:3,description:"Remove clan tags.",default:!0,restartNeeded:!0},alwaysShowUsername:{type:3,description:"Always show username instead of status.",default:!0,restartNeeded:!0},accessibilityNotice:{type:6,component:()=>i(Xo.Info,{className:kQ("accessibility-notice")},"Discord already has a built-in username style option in Accessibility settings.")},friendsListHeader:{type:6,component:()=>AQ("Above Friends/DMs List")},removeShopAboveDms:{type:3,description:"Remove shops above DMs list.",default:!1,restartNeeded:!0},removeQuestsAboveDms:{type:3,description:"Remove quests above DMs list.",default:!1,restartNeeded:!0},removeLibraryAboveDms:{type:3,description:"Remove library above DMs list.",default:!1,restartNeeded:!0},removeFamilyCenterAboveDms:{type:3,description:"Remove family center above DMs list.",default:!1,restartNeeded:!0},miscHeader:{type:6,component:()=>AQ("Misc")},removeServerBoostInfo:{type:3,description:"Remove server boost info above channel list.",default:!0,restartNeeded:!0},removeBillingSettings:{type:3,description:"Remove billing settings.",default:!0,restartNeeded:!0},removeGiftButton:{type:3,description:"Remove gift button.",default:!0,restartNeeded:!0},removeUnavailableEmojiPicker:{type:3,description:"Remove unavailable categories from the emoji picker.",default:!0,restartNeeded:!0},removeAudioMenus:{type:3,description:"Remove menus next to mute and deafen buttons.",default:!0,restartNeeded:!0},removeButtonTooltips:{type:3,description:"Remove button tooltips.",default:!1,restartNeeded:!0}});pm=S({name:"Declutter",description:"Cleans up Discord by removing non-essential UI elements like profile effects, shop tabs, boosts, and more.",tags:["Appearance","Customisation"],authors:[F.Leon135,b.prism,b.Kyuuhachi,b.SomeAspy],start(){Ve("Decor")&&fn.store.removeAvatarDecoration&&(fn.store.removeAvatarDecoration=!1)},settings:fn,patches:[{find:"skuId,layers:null!=",replacement:{match:/(?=0!==\i.length&&\i\?\(0,)/,replace:"null&&"},predicate:()=>fn.store.removeProfileFrame},{find:"isAvatarDecorationAnimating:",replacement:{match:/(?<=\{avatarDecoration:.{0,40}?)(void 0!==\i\?\i:)\i(?=\)?,canAnimate:)/,replace:"$1null"},predicate:()=>fn.store.removeAvatarDecoration&&!Ve(Md.name)},{find:"showCommunicationDisabledStyles",replacement:{match:/null==\i\|\|\i\?null:\(0,\i\.jsxs?\)\("img",\{className:\i\.\i,src:\i,alt:" ","aria-hidden":!0\}\)/,replace:"null"},predicate:()=>fn.store.removeAvatarDecoration&&!Ve(Md.name)},{find:"#{intl::USER_PROFILE_ACCOUNT_POPOUT_BUTTON_A11Y_LABEL}",replacement:[{match:/((\i)=\i\?\.avatarDecoration,\i=)\(0,\i\.\i\)\(\2\)/,replace:"$1null",predicate:()=>fn.store.removeAvatarDecoration&&!Ve(Md.name)},{match:/(iconForeground:null!=\i\?\i\.\i:void 0,nameplate:)\i/g,replace:"$1null",predicate:()=>fn.store.removeNameplate},{match:/let\{ref:\i,speaking:\i,voiceDb:/,replace:"arguments[0].nameplate=null;$&",predicate:()=>fn.store.removeNameplate}]},{find:".MINI_PREVIEW,[",replacement:{match:/function \i\((\i)\)\{(?=let.{1,5}\{nameplate:\i,)/,replace:'$&if($1.placement!=="preview"&&$1.placement!=="mini_preview")return null;'},predicate:()=>fn.store.removeNameplate},{find:"bannerAdjustment,isHovering",replacement:{match:/\i=function\((\i)\)\{(?=.{0,50}\.useReducedMotion\))/,replace:"$&if(!$1.shopPreview)return null;"},predicate:()=>fn.store.removeProfileEffect},{find:".GuildFeatures.GUILD_TAGS)",replacement:{match:/(?<=\.profile\?\.badge.{0,50}\i\)\{)/,replace:"return false;"},predicate:()=>fn.store.removeClanTag},{find:"#{intl::USER_PROFILE_ACCOUNT_POPOUT_BUTTON_A11Y_LABEL}",replacement:{match:/hoverText:(\i),forceHover:\i,children:/g,replace:"hoverText:$1,forceHover:!0,children:"},predicate:()=>fn.store.alwaysShowUsername},{find:'"MicrophoneButton"',replacement:[{match:/:\{tooltipText:\i\};/,replace:":{tooltipText:void 0};",predicate:()=>fn.store.removeButtonTooltips},{match:/(?<=#{intl::MUTE}\),)className:\i\.\i,/,replace:"",predicate:()=>fn.store.removeAudioMenus},{match:/,\(0,\i\.jsxs?\)\(\i\.\i,\{.{0,600}#{intl::ACCOUNT_INPUT_OPTIONS}\)\}\)(?=\])/,replace:"",predicate:()=>fn.store.removeAudioMenus}]},{find:"#{intl::f+DDY/::raw},{outputDeviceName",replacement:[{match:/(?<=role:"switch",)tooltipText:\i\}/,replace:"tooltipText:void 0}",predicate:()=>fn.store.removeButtonTooltips},{match:/(?<=#{intl::DEAFEN}\),)className:\i\.\i,/,replace:"",predicate:()=>fn.store.removeAudioMenus},{match:/,\(0,\i\.jsxs?\)\(\i\.\i,\{.{0,650}#{intl::ACCOUNT_OUTPUT_OPTIONS}\)\}\)(?=\])/,replace:"",predicate:()=>fn.store.removeAudioMenus}]},{find:"#{intl::USER_SETTINGS_WITH_BUILD_OVERRIDE}",replacement:{match:/tooltipText:\i,tooltipPositionKey/,replace:"tooltipText:void 0,tooltipPositionKey"},predicate:()=>fn.store.removeButtonTooltips},{find:'tutorialId:"direct-messages"',replacement:[{match:/"nitro-tab-group"\)/,replace:"$&&&undefined",predicate:()=>fn.store.removeShopAboveDms},{match:/NAVIGATION_LINK\}\}\},"discord-shop"\)/,replace:"$&&&undefined",predicate:()=>fn.store.removeShopAboveDms},{match:/\.QUEST_HOME\)\},"quests"\)/,replace:"$&&&undefined",predicate:()=>fn.store.removeQuestsAboveDms},{match:/\.APPLICATION_LIBRARY\)\},"library"\)/,replace:"$&&&undefined",predicate:()=>fn.store.removeLibraryAboveDms},{match:/\.FAMILY_CENTER\)\},"family-center"\)/,replace:"$&&&undefined",predicate:()=>fn.store.removeFamilyCenterAboveDms}]},{find:".hasLibraryApplication()&&!",replacement:[{match:/\i\.\i\.APPLICATION_STORE,/,replace:"/*$&*/"},{match:/\i\.\i\.COLLECTIBLES_SHOP,/,replace:"/*$&*/"}],predicate:()=>fn.store.removeShopAboveDms},{find:"useGuildActionRow",replacement:{match:/(GUILD_NEW_MEMBER_ACTIONS_PROGRESS_BAR\)):\i(?:\.premiumProgressBarEnabled)?/,replace:"$1:null"},predicate:()=>fn.store.removeServerBoostInfo},{find:".BILLING_SECTION,",replacement:{match:/(\.BILLING_SECTION.{0,50}buildLayout:\(\)=>\[).{0,15}?\]/,replace:"$1]"},predicate:()=>fn.store.removeBillingSettings},{find:'"sticker")',replacement:{match:/&&\i\.push\(\([^&]*?,"gift"\)\)/,replace:""},predicate:()=>fn.store.removeGiftButton},{find:"#{intl::EMOJI_PICKER_EXPAND_EMOJI_SECTION}),size:",replacement:{match:/(\i)=\i\|\|!\i&&\i.\i.isEmojiCategoryNitroLocked\(\{[^}]*\}\);/,replace:"$&$1||"},predicate:()=>fn.store.removeUnavailableEmojiPicker},{find:"#{intl::EMOJI_CATEGORY_TOP_GUILD_EMOJI},{guildName:",replacement:{match:/(?<=(\i)\.unshift\((\i)\):)(?=\1\.push\(\2\))/,replace:"$2.isNitroLocked||"},predicate:()=>fn.store.removeUnavailableEmojiPicker}]})});var Ylt,XE,T4e=h(()=>{"use strict";d();Jt();CQ();O();R();le();Ylt=Ie("iconForeground","accountPopoutButtonWrapper"),XE=S({name:"UserAreaAPI",description:"API to add buttons to the user area panel.",authors:[b.prism],patches:[{find:"#{intl::USER_PROFILE_ACCOUNT_POPOUT_BUTTON_A11Y_LABEL}",replacement:[{match:/children:\[(?=.{0,50}accountContainerRef:\i)/,replace:"children:[...$self.renderButtons(arguments[0]),"},{match:/(?<=\{ref:\i,)style:(\i)/,replace:"style:{...$1,minWidth:0}"}]}],renderButtons(e){return Vencord.Api.UserArea._renderButtons({nameplate:this.shouldHideNameplate()?null:e.nameplate,iconForeground:Ylt.iconForeground,hideTooltips:this.shouldHideTooltips()})},shouldHideTooltips(){return Ve(pm.name)&&pm.settings.store.removeButtonTooltips},shouldHideNameplate(){return Ve(pm.name)&&pm.settings.store.removeNameplate}})});var $d,VE,s5=h(()=>{"use strict";d();O();R();VE=S({name:"ConcatenatedModules",description:"Extract modules that have been concatenated by the bundler",authors:[b.thororen],patches:[{find:"AngleBracketsIcon",replacement:{match:/\i\.\i\((\i)\),\i\.\i\(\i,\{AIcon/,replace:"$self.setIconsModule($1),$&"}}],setIconsModule(e){$d=e,this.iconsModule=e}})});var TQ,Jlt,IQ,Xlt,e7,t7,I4e=h(()=>{"use strict";d();j();yt();Pe();O();Wt();R();le();C();TQ=Ie("trigger","advancedTitle","titleCaret"),Jlt=H.wrap(({children:e})=>{let[t,o]=T(!e7.store.collapsedByDefault);return i("div",{className:z.top16},i(eo,{className:TQ.trigger,"aria-expanded":t,onClick:()=>o(r=>!r)},i(Y,{size:"lg",weight:"semibold",className:TQ.advancedTitle},"Simplified permissions",i("svg",{className:TQ.titleCaret,width:"20",height:"20",viewBox:"0 0 24 24",style:{transform:t?"rotate(0deg)":"rotate(-90deg)",transition:"transform .2s"}},i("path",{fill:"currentColor",d:"M5.3 9.3a1 1 0 0 1 1.4 0l5.3 5.29 5.3-5.3a1 1 0 1 1 1.4 1.42l-6 6a1 1 0 0 1-1.4 0l-6-6a1 1 0 0 1 0-1.42Z"})))),t?e:null)},{noop:!0}),IQ=null,Xlt=H.wrap(()=>{switch(e7.store.simplifiedCard){case"hide":return null;case"collapse":return i(Jlt,null,IQ);default:return i(f,null,IQ)}},{noop:!0}),e7=M({simplifiedCard:{type:4,description:"What to do with Discord's simplified permissions card",options:[{label:"Hide it",value:"hide",default:!0},{label:"Make it collapsible",value:"collapse"},{label:"Leave it visible",value:"show"}]},collapsedByDefault:{type:3,default:!1,description:"Start the simplified permissions collapsed.",disabled:()=>e7.store.simplifiedCard!=="collapse"}}),t7=S({name:"AdvancedPermissions",description:"Show advanced permissions card by default.",authors:[F.bastih18],tags:["Utility"],settings:e7,patches:[{find:'id:"PrivateChannelSettingCard"',replacement:[{match:/(?<=children:\i\.subtitle\}\),)/,replace:"$self.renderCard(),"},{match:/(?<=permissionUpdates:\i\}\):null,).{0,100}?roles:\i,members:\i\}\)/,replace:"$self.saveCard($&)"},{match:/(?<=advancedMode\);.{0,30}children:\[)/,replace:"null&&"},{match:/isExpanded:\i(?=,onExpandedChange:)/,replace:"isExpanded:!0"},{match:/component:(?=.{0,50}slot:"trigger")/,replace:"component:null&&"}]}],renderCard(){return i(Xlt,null)},saveCard(e){return IQ=e,null}})});var o7,E4e=h(()=>{"use strict";d();O();R();o7=S({name:"AltKrispSwitch",description:"Makes the Noise Suppression Popout switch between None and Krisp instead of Krisp and Standard",tags:["Customisation","Voice"],authors:[b.newwares],patches:[{find:",setNoiseCancellation(",replacement:{match:/(}\),)(.{1,2}\.\i\.dispatch\({type:"AUDIO_SET_NOISE_SUPPRESSION",)/,replace:"$1!$self.shouldCancelSuppression(arguments)&&$2"}}],shouldCancelSuppression([e,t]){if(t?.section==="Noise Cancellation Popout")return!e}})});async function tct(){li||(li=new AudioContext);let e=Vf.store.soundQuality;for(let t of Vlt){let o=t.replace(".wav","");D4e[o]=await oct(`${ect}/${e}/${t}`)}}async function oct(e){li||(li=new AudioContext);let t=await fetch(e);if(!t.ok)throw new Error("Network response was not OK");let o=await t.arrayBuffer();return li.decodeAudioData(o)}async function nct(e){li||(li=new AudioContext);let t=[],o=e.toLowerCase();for(let u=0;u=t.length*.8){let k=(u-t.length*.8)/(t.length*.2);g+=k*.1+.1}let v=p.getChannelData(0),y=v.length,A=Math.floor(y/g);for(let k=0;k{"use strict";d();j();O();R();C();Vf=M({volume:{type:5,description:"Volume of the animalese sound",default:.5,markers:[0,.1,.25,.5,.6,.75,1]},speed:{type:5,description:"Speed of the animalese sound",default:1,markers:[.5,.75,1,1.25,1.5]},pitch:{type:5,description:"Pitch multiplier",default:1,markers:[.75,.8,.85,1,1.15,1.25,1.35,1.5]},messageLengthLimit:{type:1,description:"Maximum length of message to process",default:50},processOwnMessages:{type:3,description:"Enable to yap your own messages too",default:!0},soundQuality:{type:4,description:"Quality of sound to use",options:[{label:"High",value:"high",default:!0},{label:"Medium",value:"med"},{label:"Low",value:"low"},{label:"Lowest",value:"low"}]}}),li=null,Vlt=Array.from({length:30},(e,t)=>`sound${String(t+1).padStart(2,"0")}.wav`),D4e={},ect="https://raw.githubusercontent.com/Equicord/Equibored/main/sounds/animalese";n7=S({name:"Animalese",description:"Plays animal crossing animalese for every message sent (they yap a lot)",tags:["Customisation","Fun"],authors:[F.ryanamay,F.Mocha],settings:Vf,flux:{async MESSAGE_CREATE({optimistic:e,type:t,message:o,channelId:r}){if(e||t!=="MESSAGE_CREATE"||o.state==="SENDING"||!o.content||o.author?.bot||r!==Fe.getChannelId())return;let n=/https?:\/\/[^\s]+/,a=Vf.store.messageLengthLimit||100,s=Vf.store.processOwnMessages??!0;if(!(n.test(o.content)||o.content.length>a||!s&&String(o.author.id)===String(L.getCurrentUser().id)))try{let l=await nct(o.content);l&&await rct(l,Vf.store.volume)}catch(l){console.error("[Animalese]",l)}}},async start(){li||(li=new AudioContext,await tct())},stop(){li&&(li.close(),li=null)}})});var r7,ict,M4e=h(()=>{"use strict";d();yc();O();R();C();r7=S({name:"AtSomeone",authors:[b.Joona],description:"Mention someone randomly",tags:["Chat","Fun"],patches:[{find:".LAUNCHABLE_APPLICATIONS;",replacement:[{match:/&(\i)\(\)\((\i),\i\(\)\.test\)&&(\i)\.push\(\i\(\)\)/g,replace:"$&,$1()($2,/someone/.test)&&$3.push({text:'@someone',description:'Mention someone randomly'})"}]},{find:"inQuote:",replacement:{match:/\|here/,replace:"$&|someone"}}],start(){this.preSend=ni((e,t)=>{t.content=t.content.replace(/@someone/g,()=>`<@${ict()}>`)})},stop(){ri(this.preSend)}}),ict=()=>{let e=ao.getGuildId();if(e===null){let o=W.getChannel(Fe.getChannelId()).recipients;return o[~~(o.length*Math.random())]}let t=bt.getMembers(e);return t[~~(t.length*Math.random())].userId}});var N4e,i7,B4e=h(()=>{"use strict";d();j();O();R();C();N4e=M({onlyWhenUnfocused:{type:3,default:!0,description:"Only automatically jump to messages when Discord's window is unfocused."}}),i7=S({name:"AutoJumpToMessage",description:"Automatically opens the channel from new messages.",tags:["Chat","Utility"],authors:[F.k304],settings:N4e,flux:{RPC_NOTIFICATION_CREATE({channelId:e}){!e||N4e.store.onlyWhenUnfocused&&document.hasFocus()||sr.isGuildOrCategoryOrChannelMuted(W.getChannel(e)?.guild_id,e)||Li.transitionToChannel(e)}}})});function F4e(){l5.clear(),O4e.store.extensions.split(",").map(t=>t.trim().toLowerCase()).forEach(t=>{t&&!t.startsWith(".")?l5.add("."+t):t&&l5.add(t)})}function a7(e){let t=e.name.substring(e.name.lastIndexOf(".")).toLowerCase();return t!==""&&l5.has(t)}async function _4e(e){let t=await e.arrayBuffer(),o=new Uint8Array(t),r=Ow({[e.name]:o}),n=e.name.substring(0,e.name.lastIndexOf("."))||e.name;return new File([r],`${n}.zip`,{type:"application/zip"})}async function act(e,t){let o=Ow(t);return new File([o],`${e}.zip`,{type:"application/zip"})}async function sct(e){return new Promise((t,o)=>{e.file(t,o)})}async function lct(e){let t={};async function o(r,n=""){let a=r.createReader(),s=async()=>new Promise((l,c)=>{a.readEntries(async u=>{if(u.length===0){l();return}for(let p of u){let m=n?`${n}/${p.name}`:p.name;if(p.isFile){let x=await(await sct(p)).arrayBuffer();t[m]=new Uint8Array(x)}else p.isDirectory&&await o(p,m)}await s(),l()},c)});await s()}return await o(e),t}async function cct(e){let t=[];for(let o of e)if(a7(o)){Qv.info(`Auto-zipping file: ${o.name}`);try{let r=await _4e(o);t.push(r)}catch(r){Qv.error(`Failed to zip file ${o.name}:`,r),t.push(o)}}else t.push(o);return t}function R4e(e){if(!e.dataTransfer)return;let t=Array.from(e.dataTransfer.items);if(t.length===0||!t.some(n=>n.webkitGetAsEntry()?.isDirectory||n.kind==="file"&&n.getAsFile()&&a7(n.getAsFile())))return;e.preventDefault(),e.stopPropagation();let r=[];for(let n of t){let a=n.webkitGetAsEntry();if(a?.isDirectory){Qv.info(`Zipping folder: ${a.name}`);let s=lct(a).then(l=>act(a.name,l)).catch(l=>(Qv.error(`Failed to zip folder ${a.name}:`,l),null));r.push(s)}else if(a?.isFile){let s=n.getAsFile();s&&(a7(s)?(Qv.info(`Auto-zipping file: ${s.name}`),r.push(_4e(s).catch(l=>(Qv.error(`Failed to zip file ${s.name}:`,l),s)))):r.push(Promise.resolve(s)))}}Promise.all(r).then(n=>{let a=n.filter(c=>c!==null),s=Fe.getChannelId(),l=W.getChannel(s);l&&a.length>0&&setTimeout(()=>Mr.promptToUpload(a,l,yo.ChannelMessage),10)})}function L4e(e){let t=Array.from(e.clipboardData?.files||[]);t.length===0||!t.some(a7)||(e.preventDefault(),e.stopPropagation(),cct(t).then(r=>{let n=Fe.getChannelId(),a=W.getChannel(n);a&&r.length>0&&setTimeout(()=>Mr.promptToUpload(r,a,yo.ChannelMessage),10)}))}var Qv,O4e,l5,EQ,s7,U4e=h(()=>{"use strict";d();j();O();He();R();C();K1();Qv=new ie("AutoZipper"),O4e=M({extensions:{type:0,description:"Comma-separated list of file extensions to auto-zip (e.g., .psd,.blend,.exe,.dmg)",default:".psd,.blend,.exe,.dmg,.app,.apk,.iso",onChange:()=>{l5.clear(),F4e()}}}),l5=new Set;EQ=!1;s7=S({name:"AutoZipper",description:"Automatically zips specified file types and folders before uploading to Discord",tags:["Chat","Organisation"],authors:[F.SSnowly],settings:O4e,start(){EQ||(EQ=!0,F4e(),document.addEventListener("drop",R4e,!0),document.addEventListener("paste",L4e,!0))},stop(){document.removeEventListener("drop",R4e,!0),document.removeEventListener("paste",L4e,!0),EQ=!1}})});var z4e,$4e=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/bannersEverywhere/style.css",{name:"src/equicordplugins/bannersEverywhere/style.css",source:`/* stylelint-disable property-no-vendor-prefix */ .vc-banners-everywhere-memberlist { position: absolute; left: 0; border-radius: var(--radius-sm); opacity: 0.8; -webkit-mask-image: linear-gradient(to right, transparent 20%, #fff); mask-image: linear-gradient(to right, transparent 20%, #fff); object-fit: cover; width: 100%; height: 100%; cursor: pointer; } .vc-banners-everywhere-memberlist ~ div { z-index: 1; } `,classNames:{},dom:null});z4e="src/equicordplugins/bannersEverywhere/style.css"});var l7,DQ,c7,G4e=h(()=>{"use strict";d();Io();Jt();j();cQ();O();R();C();$4e();l7=M({animate:{description:"Animate banners",type:3,default:!1},preferNameplate:{description:"prefer nameplate over banner",type:3,default:!1}}),DQ="bannersEverywhere",c7=S({name:"BannersEverywhere",description:"Displays banners in the member list ",tags:["Appearance","Customisation"],authors:[b.ImLvna,b.AutumnVN],settings:l7,patches:[{find:"#{intl::GUILD_OWNER}),",replacement:[{match:/user:(\i).{0,150}nameplate:(\i).*?name:null.*?(?=avatar:)/,replace:"$&banner:$self.memberListBannerHook($1, $2),"},{match:/(?<=\),nameplate:)(\i)/,replace:"$self.nameplate($1)"}]},{find:'role:"listitem",innerRef',replacement:{match:/children:\[(?=.{0,100}\.MEMBER_LIST)/,replace:"$&arguments[0].banner,"}}],data:{},managedStyle:z4e,async start(){this.data=await vt(DQ)||{}},stop(){Ct(DQ,this.data)},nameplate(e){if(l7.store.preferNameplate)return e},memberListBannerHook(e,t){let o=this.getBanner(e.id);if(o&&!(l7.store.preferNameplate&&t))return l7.store.animate||(o=o.replace(".gif",".png"),this.gifToPng(o).then(r=>{let n=document.getElementById(`vc-banners-everywhere-${e.id}`);n&&(n.src=r)}).catch()),i("img",{alt:"",id:`vc-banners-everywhere-${e.id}`,src:o,className:"vc-banners-everywhere-memberlist"})},async gifToPng(e){return new Promise((t,o)=>{let r=new Image;r.crossOrigin="anonymous",r.onload=()=>{let n=document.createElement("canvas");n.width=r.width,n.height=r.height;let a=n.getContext("2d");a?(a.drawImage(r,0,0),t(n.toDataURL("image/png"))):o(new Error("Failed to get canvas context."))},r.onerror=()=>t(""),r.src=e})},getBanner(e){if(Ve(Jf.name)&&Jf.userHasBackground(e)){let o=Jf.getImageUrl(e);return o===null&&(o=""),o}let t=Co.getUserProfile(e);return t?.banner&&(this.data[e]=`https://cdn.discordapp.com/banners/${e}/${t.banner}.${t.banner.startsWith("a_")?"gif":"png"}`,Ct(DQ,this.data)),this.data[e]}})});function H4e(){return i("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i("path",{d:"M6.5 9.50026H14.0385C15.4063 9.50026 16.0902 9.50026 16.5859 9.82073C16.8235 9.97438 17.0259 10.1767 17.1795 10.4144C17.5 10.91 17.5 11.5939 17.5 12.9618C17.5 14.3297 17.5 15.0136 17.1795 15.5092C17.0259 15.7469 16.8235 15.9492 16.5859 16.1029C16.0902 16.4233 15.4063 16.4233 14.0385 16.4233H9.5M6.5 9.50026L8.75 7.42334M6.5 9.50026L8.75 11.5772",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}))}function uct(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(new Uint8Array(e.split("").map(t=>t.charCodeAt(0)))),!0}catch{return!1}}function j4e(e){let t=/\b[A-Za-z0-9+/]{4,}(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?\b/g;return e.match(t)||[]}function q4e(e){return e.map(t=>{try{let o=atob(t);return uct(o)?o:null}catch(o){return console.error("Failed to decode base64 content:",o),null}}).filter(t=>t!==null)}function W4e(e){ce(t=>i(H,null,i(be,{...t,size:"lg",title:"Decoded Base64 Content",actions:e.map((o,r)=>({text:`Copy Decoded Content ${r+1}`,variant:"primary",onClick:()=>ft(o,"Decoded content copied to clipboard!")}))},i("div",{style:{padding:"16px 0"}},i(oe,null,"Decoded Content"),e.map((o,r)=>i(Ps,{key:r,content:o,lang:""}))))))}var u7,d7,K4e=h(()=>{"use strict";d();j();bd();Pe();We();O();_e();R();C();u7=M({clickMethod:{description:"Change the button to decode base64 content of any message.",type:4,options:[{label:"Left Click to decode the base64 content.",value:"Left",default:!0},{label:"Right click to decode the base64 content.",value:"Right"}]}}),d7=S({name:"DecodeBase64",description:"Decode base64 content of any message and copy the decoded content.",dependencies:["MessagePopoverAPI"],tags:["Appearance","Customisation","Chat"],authors:[F.ThePirateStoner],settings:u7,messagePopoverButton:{icon:H4e,render(e){let t=()=>{let n=j4e(e.content),a=q4e(n);u7.store.clickMethod==="Right"?a.forEach(s=>ft(s)):W4e(a)},o=n=>{let a=j4e(e.content),s=q4e(a);u7.store.clickMethod==="Left"?(n.preventDefault(),n.stopPropagation(),s.forEach(l=>ft(l))):(n.preventDefault(),n.stopPropagation(),W4e(s))};return{label:u7.store.clickMethod==="Right"?"Copy Decoded (Left Click) / Decode Base64 (Right Click)":"Decode Base64 (Left Click) / Copy Decoded (Right Click)",icon:H4e,message:e,channel:W.getChannel(e.channel_id),onClick:t,onContextMenu:o}}}})});var Q4e=h(()=>{});var vl,c5=h(()=>{"use strict";d();j();R();vl=M({memberList:{type:3,description:"Show activity icons in the member list",default:!0,restartNeeded:!0},iconSize:{type:5,description:"Size of the activity icons",markers:[10,15,20],default:15,stickToMarkers:!1},specialFirst:{type:3,description:"Show special activities first (Currently Spotify and Twitch)",default:!0,restartNeeded:!1},renderGifs:{type:3,description:"Allow rendering GIFs",default:!0,restartNeeded:!1},removeGameActivityStatus:{type:3,description:"Remove game activity icon and status",default:!1,restartNeeded:!0},divider:{type:6,description:"",component:()=>i("div",{style:{width:"100%",height:1,borderTop:"thin solid var(--input-border-default, var(--input-border))",paddingTop:5,paddingBottom:5}})},userPopout:{type:3,description:"Show all activities in the profile popout/sidebar",default:!0,restartNeeded:!0},hideTooltip:{type:3,description:"Hides activities in various places",default:!0},allActivitiesStyle:{type:4,description:"Style for showing all activities",options:[{default:!0,label:"Carousel",value:"carousel"},{label:"List",value:"list"}]}})});function MQ(e){if(!e)return;let{application_id:t}=e;if(!t)return;let o=Xs.getApplication(t);return!o&&Zv.has(t)&&(o=Zv.get(t)),o??void 0}function Z4e(e,t=!1){let o=[],r=e.filter(n=>n!=null&&(n.application_id||n.platform||n.id?.startsWith("spotify:")));for(let n of r){let{assets:a,application_id:s,platform:l,id:c}=n;if(!(!s&&!l&&!c?.startsWith("spotify:")))if(a){let{small_image:u,small_text:p,large_image:m,large_text:g}=a,x=p??"Small Text",v=g??"Large Text",y=(A,k)=>{if(A.startsWith("mp:")){let w=`https://media.discordapp.net/${A.replace(/mp:/,"")}`;(vl.store.renderGifs||!w.endsWith(".gif"))&&o.push({image:{src:w,alt:k},activity:n})}else if(A.startsWith("spotify:")){let w=`https://i.scdn.co/image/${A.split(":")[1]}`;o.push({image:{src:w,alt:k},activity:n})}else{let w=`https://cdn.discordapp.com/app-assets/${s}/${A}.png`;o.push({image:{src:w,alt:k},activity:n})}};t?u?y(u,x):m&&y(m,v):m?y(m,v):u&&y(u,x)}else if(s){let u=Xs.getApplication(s);if(u||(Zv.has(s)?u=Zv.get(s):(Zv.set(s,null),dct(s).then(p=>{Zv.set(s,p)}).catch(console.error))),u)if(u.icon){let p=`https://cdn.discordapp.com/app-icons/${u.id}/${u.icon}.png`;o.push({image:{src:p,alt:u.name},activity:n,application:u})}else l==="xbox"&&o.push({image:{src:PQ,alt:"Xbox"},activity:n,application:u});else l==="xbox"&&o.push({image:{src:PQ,alt:"Xbox"},activity:n})}else l==="xbox"&&o.push({image:{src:PQ,alt:"Xbox"},activity:n})}return o}var dct,Zv,PQ,zh,Cu,u5=h(()=>{"use strict";d();we();le();C();c5();({fetchApplication:dct}=Ae("fetchApplication")),Zv=new Map,PQ="https://discord.com/assets/9a15d086141be29d9fcd.png",zh=he('location:"UserProfileActivityCard",'),Cu=K("vc-bactivities-")});function NQ({activity:e,application:t,user:o}){let r=L.getCurrentUser();return r?i(H,null,i("div",{className:Cu("activity-tooltip")},i(zh,{activity:e,user:o,application:t,currentUser:r}))):null}var Y4e=h(()=>{"use strict";d();Pe();u5();C()});function J4e(e){return i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 268",...e},i("path",{fill:"#5a3e85",d:"M17.458 0L0 46.556v186.201h63.983v34.934h34.931l34.898-34.934h52.36L256 162.954V0zm23.259 23.263H232.73v128.029l-40.739 40.741H128L93.113 226.92v-34.886H40.717zm64.008 116.405H128V69.844h-23.275zm63.997 0h23.27V69.844h-23.27z"}))}var X4e=h(()=>{"use strict";d()});function V4e({activities:e,user:t,hideTooltip:o}){let r=[];if(t.bot||vl.store.hideTooltip&&o)return null;let n=e?.filter(l=>l!=null)??[],a=Z4e(n);if(a.length){let l=(u,p)=>u.image?.src===p.image?.src,c=a.filter((u,p,m)=>m.findIndex(g=>l(g,u))===p);for(let u of c)r.push({iconElement:i("img",{...u.image}),tooltip:i(NQ,{activity:u.activity,application:u.application,user:t})})}if(((l,c)=>{let u=n.findIndex(({name:p})=>p===l);if(u!==-1){let p=n[u],m={iconElement:i(c,null),tooltip:i(NQ,{activity:p,user:t})};vl.store.specialFirst?r.unshift(m):r.splice(u,0,m)}})("Twitch",J4e),r.length){let l={"--icon-size":`${vl.store.iconSize}px`};return i(H,{noop:!0},i("div",{className:Cu("row")},r.map(({iconElement:c,tooltip:u},p)=>i("div",{key:p,className:Cu("icon"),style:l},u?i(ve,{text:u},({onMouseEnter:m,onMouseLeave:g})=>i("div",{onMouseEnter:m,onMouseLeave:g},c)):c))))}else if(n.filter(c=>c.type!==4).length!==r.length)return i(pct,{size:"xs"});return null}var pct,e5e=h(()=>{"use strict";d();Pe();le();C();Y4e();X4e();c5();u5();pct=he("M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H5Zm6.81 7c-.54 0-1 .26-1.23.61A1 1 0 0 1 8.92 8.5 3.49 3.49 0 0 1 11.82 7c1.81 0 3.43 1.38 3.43 3.25 0 1.45-.98 2.61-2.27 3.06a1 1 0 0 1-1.96.37l-.19-1a1 1 0 0 1 .98-1.18c.87 0 1.44-.63 1.44-1.25S12.68 9 11.81 9ZM13 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm7-10.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM18.5 20a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM7 18.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM5.5 7a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z")});function BQ({disabled:e,direction:t}){return i("svg",{className:`vc-bactivities-caret-${t.toLowerCase()} ${e&&"disabled"}`,width:"24",height:"24",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M16.59 8.59004L12 13.17L7.41 8.59004L6 10L12 16L18 10L16.59 8.59004Z"}))}var t5e=h(()=>{"use strict";d()});function o5e({activities:e,currentActivity:t,onActivityChange:o}){let r=e.findIndex(n=>n.id===t.id);return i("div",{className:Cu("controls"),style:{display:"flex",flexDirection:"row",justifyContent:"space-between"}},i(ve,{text:"Left",tooltipClassName:Cu("controls-tooltip")},({onMouseEnter:n,onMouseLeave:a})=>i("span",{onMouseEnter:n,onMouseLeave:a,onClick:()=>{r-1>=0?o(e[r-1]):o(e[e.length-1])}},i(BQ,{disabled:r<1,direction:"left"}))),i("div",{className:Cu("controls-carousel")},e.map((n,a)=>i("div",{key:"dot--"+a,onClick:()=>o(n),className:Cu("controls-dot",t.id===n.id&&"controls-selected")}))),i(ve,{text:"Right",tooltipClassName:Cu("controls-tooltip")},({onMouseEnter:n,onMouseLeave:a})=>i("span",{onMouseEnter:n,onMouseLeave:a,onClick:()=>{r+1=e.length-1,direction:"right"}))))}var n5e=h(()=>{"use strict";d();C();u5();t5e()});function r5e({activity:e,user:t,...o}){let r=L.getCurrentUser();if(!r)return null;let[n,a]=T(e?.type!==4?e:null),s=ye([Yo],()=>Yo.getActivities(t.id).filter(c=>c!=null&&c.type!==4));G(()=>{if(!s.length){a(null);return}let c=n&&s.find(u=>u.id===n.id);c?c!==n&&a(c):a(s[0])},[s]);let l=Ne(()=>Object.keys(o).reduce((c,u)=>(u!=="renderActions"&&u!=="application"&&(c[u]=o[u]),c),{}),[o]);return s.length?vl.store.allActivitiesStyle==="carousel"?n?i(H,{noop:!0},i("div",{style:{display:"flex",flexDirection:"column"}},e&&n?.application_id===e.application_id?i(zh,{activity:n,user:t,currentUser:r,...o}):i(zh,{activity:n,user:t,application:MQ(n),currentUser:r,...l}),s.length>1&&n&&i(o5e,{activities:s,currentActivity:n,onActivityChange:a}))):null:i(H,{noop:!0},i("div",{style:{display:"flex",flexDirection:"column",gap:"5px"}},s.map((c,u)=>u===0?i(zh,{key:u,activity:c,user:t,currentUser:r,...o}):i(zh,{key:u,activity:c,user:t,application:MQ(c),currentUser:r,...l})))):null}var i5e=h(()=>{"use strict";d();Pe();C();n5e();c5();u5()});var $h,RQ=h(()=>{"use strict";d();Q4e();j();O();R();e5e();i5e();c5();oo("BetterActivities","MemberListActivities");$h=S({name:"BetterActivities",description:"Shows activity icons in the member list and allows showing all activities",authors:[b.D3SOX,b.Arjix,b.AutumnVN,b.thororen],tags:["Activity"],settings:vl,patchActivityList:V4e,showAllActivitiesComponent:r5e,patches:[{find:'"ActivityStatus"),',replacement:[{match:/(?<=className:\i,children:\[).*?(?=\i\(\),\i&&)/,replace:"",predicate:()=>vl.store.removeGameActivityStatus},{match:/(?<=className:\i,children:\[\i\(\),)null.*?tooltipClassName:\i\}\),/,replace:"",predicate:()=>vl.store.removeGameActivityStatus},{match:/(?<=hideTooltip:.{0,4}}=(\i).*?{}\))\]/g,replace:",$self.patchActivityList($1)]",predicate:()=>vl.store.memberList}]},{find:'"UserProfilePopout");',replacement:{match:/((\i)=.{0,10}(\i)\.id\).*?)\(0,\i\.jsxs?.{0,150}onClose:\i\}\)(?=.{0,30}userId:\i\.id)/,replace:"$1$self.showAllActivitiesComponent({ activity: $2, user: $3 })"},predicate:()=>vl.store.userPopout}]})});var a5e=h(()=>{});function s5e(e,t,o){if(!/^\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}$/.test(e)){try{let r=kz.hexToRgb(e.replace("#",""));if(r){mm.store[t]=`${r.r}, ${r.g}, ${r.b}`;return}}catch{}ne(`Invalid color format for ${t}, use "R, G, B" or "#RRGGBB"`,D.Type.FAILURE),mm.store[t]=o}}function hct(e){let t=0;for(let o=0;ot&&(t=e[o]);return t}function xct(e,t,o,r,n){let a=t/n,[s,l,c]=mm.store.oscilloscopeColor.split(",").map(Number),u=3,p=0;e.lineWidth=2,e.beginPath();for(let m=0;mgct)return null;let n=await o.blob();return URL.createObjectURL(n)}function bct({playerRef:e,src:t}){let o=V.useRef(null),r=V.useRef(null),n=V.useRef(null),a=V.useRef(0),s=V.useRef(!1),l=V.useRef(null);return V.useEffect(()=>{let c=e.current,u=o.current;if(!c||!u)return()=>{};let p=!1,m=async()=>{let w=await yct(t).catch(()=>null);if(p||!w)return;l.current=w;let I=!c.paused,{currentTime:E}=c;c.src=w,c.currentTime=E;let N=new AudioContext,B=N.createAnalyser();B.fftSize=2048,N.createMediaElementSource(c).connect(B),B.connect(N.destination),r.current=N,n.current=B,s.current=!0,I&&c.play().catch(()=>{})},g=u.getContext("2d"),x=null,v=null,y=()=>{let w=n.current;if(!g||!w)return;if(!x||!v){let N=w.frequencyBinCount;x=new Uint8Array(N),v=new Uint8Array(N)}c.paused||(a.current=requestAnimationFrame(y)),w.getByteTimeDomainData(x),w.getByteFrequencyData(v);let{width:I,height:E}=u.getBoundingClientRect();g.clearRect(0,0,I,E),mm.store.oscilloscope&&xct(g,I,E,x,x.length),mm.store.spectrograph&&vct(g,I,E,v,v.length)},A=()=>{s.current&&(r.current?.state==="suspended"&&r.current.resume(),y())},k=()=>{r.current?.suspend(),cancelAnimationFrame(a.current)};return c.addEventListener("play",A),c.addEventListener("pause",k),m(),()=>{p=!0,c.removeEventListener("play",A),c.removeEventListener("pause",k),cancelAnimationFrame(a.current),r.current?.close(),r.current=null,n.current=null,s.current=!1,l.current&&(URL.revokeObjectURL(l.current),l.current=null)}},[e]),V.useEffect(()=>{let c=o.current;if(!c)return()=>{};let u=()=>{let m=c.getBoundingClientRect();c.width=m.width*window.devicePixelRatio,c.height=m.height*window.devicePixelRatio,c.getContext("2d")?.scale(window.devicePixelRatio,window.devicePixelRatio)};u();let p=new ResizeObserver(u);return p.observe(c),()=>p.disconnect()},[]),i("canvas",{className:mct("canvas"),ref:o})}var mct,fct,gct,mm,p7,l5e=h(()=>{"use strict";d();a5e();j();O();we();R();C();mct=K("vc-better-audio-player-"),fct="https://cors.keiran0.workers.dev?url=",gct=12e6;mm=M({oscilloscope:{type:3,description:"Enable oscilloscope visualizer.",default:!0},spectrograph:{type:3,description:"Enable spectrograph visualizer.",default:!0},oscilloscopeSolidColor:{type:3,description:"Use a solid color for the oscilloscope.",default:!1},oscilloscopeColor:{type:0,description:"Color for the oscilloscope (R, G, B or #hex).",default:"255, 255, 255",onChange:e=>s5e(e,"oscilloscopeColor","255, 255, 255")},spectrographSolidColor:{type:3,description:"Use a solid color for the spectrograph.",default:!1},spectrographColor:{type:0,description:"Color for the spectrograph (R, G, B or #hex).",default:"33, 150, 243",onChange:e=>s5e(e,"spectrographColor","33, 150, 243")}}),p7=S({name:"BetterAudioPlayer",description:"Adds a spectrograph and oscilloscope visualizer to audio attachment players.",tags:["Appearance","Media","Voice"],authors:[F.creations],settings:mm,patches:[{find:"}renderPlayIcon(){",replacement:{match:/this\.renderAudio\(\):this\.renderVideo\(\)/,replace:"$&,$self.renderVisualizer(this)"}}],renderVisualizer(e){return e.props.type!=="AUDIO"?null:i(bct,{playerRef:e.mediaRef,src:e.props.src,key:e.props.src})}})});var c5e=h(()=>{});function wct(e){return typeof e=="string"?{text:e}:e}function LQ(){return m7.store.reasons.map(wct)}function Act(){let[e,t]=T(LQ),o=r=>{t(r),m7.store.reasons=r};return i("section",null,i(oe,null,"Reasons"),e.map((r,n)=>i("div",{key:n,className:d5("reason-wrapper")},i(Te,{value:r.text,onChange:a=>o(e.map((s,l)=>l===n?{...s,text:a}:s)),placeholder:"Reason"}),i(ue,{className:d5("remove-button"),color:ue.Colors.TRANSPARENT,onClick:()=>o(e.filter((a,s)=>s!==n)),look:ue.Looks.FILLED,size:ue.Sizes.MIN},i(hr,null)),i("div",{className:d5("duration-row")},i("span",{className:"vc-text-base vc-text-sm vc-text-normal vc-text-defaultColor vc-plugins-setting-description"},"Message Auto-delete duration"),i(qt,{options:Sct,select:a=>o(e.map((s,l)=>l===n?{...s,deleteSeconds:a===null?void 0:a}:s)),isSelected:a=>(a??null)===(r.deleteSeconds??null),serialize:a=>a==null?"default":String(a)})))),i("div",{className:d5("reason-wrapper")},i(ue,{onClick:()=>o([...e,{text:""}]),className:d5("add-button"),size:ue.Sizes.LARGE,color:ue.Colors.TRANSPARENT},i(Yc,null)," Add another reason")))}var d5,Sct,m7,f7,u5e=h(()=>{"use strict";d();c5e();j();We();ot();O();we();R();C();d5=K("vc-bbr-"),Sct=[{label:"Discord default",value:null},{label:"Don't delete any",value:0},{label:"Previous hour",value:3600},{label:"Previous 6 hours",value:21600},{label:"Previous 12 hours",value:43200},{label:"Previous 24 hours",value:86400},{label:"Previous 3 days",value:259200},{label:"Previous 7 days",value:604800}];m7=M({reasons:{description:"Your custom reasons",type:6,default:[],component:Act},isTextInputDefault:{type:3,description:'Shows a text input instead of a select menu by default. (Equivalent to clicking the "Other" option)'}}),f7=S({name:"BetterBanReasons",description:"Create custom reasons to use in the Discord ban modal, and/or show a text input by default instead of the options.",tags:["Appearance","Customisation"],authors:[b.Inbestigator,F.yonn2222],durationSetter:null,patches:[{find:"#{intl::BAN_REASON_OPTION_SPAM_ACCOUNT}",replacement:[{match:/(\[\{name:\i\.\i\.\i\(\i\.\i\.\i\),.+?"other"\}\])/,replace:"$self.getReasons($1)"},{match:/useState\(null\)(?=.{0,300}targetUserId:)/,replace:"useState($self.getDefaultState())"},{match:/(\[\i,\i\])=(\i)\.useState\((null!=\i\?\i:\i)\)/,replace:"$1=$self.captureDeleteState($2.useState,$3)"},{match:/\i=\i\.useCallback\((\i)=>\{.{0,10},\i\(null\)(?=\},\[\]\))/,replace:"$&,$self.onReasonSelect($1)"}]}],getReasons(e){return[...LQ().filter(o=>o.text.trim()).map(o=>({name:o.text,value:o.text})),...e]},getDefaultState:()=>m7.store.isTextInputDefault?1:0,captureDeleteState(e,t){let o=e(t);return this.durationSetter=o[1],o},onReasonSelect(e){let t=LQ().find(o=>o.text===e);t?.deleteSeconds!==void 0&&this.durationSetter?.(t.deleteSeconds)},settings:m7})});var d5e=h(()=>{});var g7,OQ,h7,p5e=h(()=>{"use strict";d();d5e();O();_e();R();C();g7="",OQ=e=>{},h7=S({name:"BetterBlockedUsers",description:"Allows you to search in blocked users list and makes names selectable in settings.",tags:["Appearance","Shortcuts"],authors:[F.TheArmagan],patches:[{find:'"],{numberOfBlockedUsers:',group:!0,replacement:[{match:/(?<=\(0,\i\.jsx\)\(\i,\{listType:(\i),numberOfUsers:\i\.length\}\),)/,replace:"$1==='blocked'?$self.renderSearchInput():null,"},{match:/(?<=\{userId:(\i).*?\.globalName.{0,25}\}\)\]\}\),)(\(.*?loading:\i\}\))/,replace:"$self.renderUser($1,$2)"},{match:/(?<=userIds:\i,listType:\i\}=(\i).{0,30}(\i)\.useState\(\d+\);)/,replace:"let [searchResults,setSearchResults]=$2.useState([]);$self.setUpdateFunc($1,setSearchResults);"},{match:/(?<=\i,children:)(\i)(?=\.slice)/,replace:"(searchResults.length?searchResults:$1)"}]}],renderSearchInput(){let[e,t]=V.useState(g7);return V.useEffect(()=>{let o=this.getFilteredUsers(g7);OQ(o)},[]),i("div",{className:"vc-bbu-search"},i(Te,{placeholder:"Search users...",style:{width:"200px"},onInput:o=>{let r=o.target.value.toLowerCase().trim();t(r),g7=r;let n=this.getFilteredUsers(r);OQ(n)},value:e}))},renderUser(e,t){return i("div",{style:{display:"flex",gap:"8px"}},i(ue,{color:ue.Colors.PRIMARY,onClick:()=>Ko(e)},Xe("SHOW_USER_PROFILE")),t)},getSearchResults(){return!!g7},setUpdateFunc(e,t){if(e.listType==="blocked")return OQ=t,!0},getFilteredUsers(e){return e=e.toLowerCase(),qe.getBlockedIDs().filter(t=>{let o=L.getUser(t);return o?t===e||o?.username?.toLowerCase()?.includes(e)||o?.globalName?.toLowerCase()?.includes(e):t===e})}})});function _Q(e){Q.dispatch({type:"APPLICATION_COMMAND_INDEX_FETCH_REQUEST",target:e})}var FQ,x7,m5e=h(()=>{"use strict";d();yr();j();O();R();C();FQ=M({autoFillArguments:{description:"Automatically fill command with all arguments instead of just required ones.",type:3,default:!0},allowNewlinesInCommands:{description:"Allow newlines in command inputs (CTRL + Shift + Enter)",type:3,default:!0}});x7=S({name:"BetterCommands",description:"Enhances the command system with miscellaneous improvements.",dependencies:["CommandsAPI"],tags:["Appearance","Commands","Shortcuts"],authors:[b.thororen],settings:FQ,patches:[{find:'applicationCommand",',predicate:()=>FQ.store.autoFillArguments,replacement:[{match:/\(\i\.required.{0,20}\]\)/,replace:"true"}]},{find:'"italics"),!0;',predicate:()=>FQ.store.allowNewlinesInCommands,replacement:[{match:/case (\i\.\i)\.TAB:if\(null!=(\i).selection&&\i\((\i)(?=.{0,300}(\i\.\i\.insertText))/,replace:(e,t,o,r,n)=>`case ${t}.ENTER: if(${r}.shiftKey && ${r}.ctrlKey){ ${r}.preventDefault(); ${r}.stopPropagation(); ${n}(${o},'\\n'); return true; } break; ${e}`}]}],commands:[{name:"refresh",description:"Refreshes the specified applications commands locally",options:[{name:"user",description:"specific user to try and refresh",type:6}],inputType:3,execute:async(e,t)=>{try{let o=t.channel.id,r=t.guild?.id,n=St(e,"user");if(Ft(t.channel.id,{content:"Refreshing application commands..."}),_Q({type:"channel",channelId:o}),r&&_Q({type:"guild",guildId:r}),n){let a=await L.getUser(n);_Q(a.bot?{type:"application",applicationId:a.id}:{type:"user"})}Ft(t.channel.id,{content:"Commands refreshed successfully!"})}catch(o){console.error("[Refresh Command] Error refreshing commands:",o),Ft(t.channel.id,{content:"Failed to refresh commands. Check the console for details."})}}}]})});function g5e({guildId:e}){let t=ye([ao],()=>ao.getGuildId(),[]),o=ye([$e,b1],()=>$e.getGuild(e)??b1.getGuild(e),[e]),r=Ne(()=>o?o.icon?i("img",{src:at.getGuildIconURL({...o,canAnimate:!0,size:16}),alt:`Server icon for ${o.name}`,className:Ql("guild-icon")}):i("div",{className:Ql("guild-acronym")},ya(o)):null,[o]),n=Se(null);return G(()=>{Dct(e)},[e]),t!==e&&i(Xa,{position:"top",renderPopout:()=>i(kct,{guildId:e}),targetElementRef:n},a=>i("div",{ref:n,className:Ql("footer-element"),...a},r,i(Y,{size:"sm",weight:"medium",className:Ql("footer-text")},o?o.name:"View server"),i(r1,{width:12,height:12,fill:"currentColor"})))}function h5e({guildId:e,channelId:t,messageId:o}){let r=ye([W],()=>W.getChannel(t),[t]),n=ye([L,qe],()=>r?Tct(r,L,qe,!1,!1):i("i",null,e?Xe("UNKNOWN_CHANNEL").toLowerCase():Xe("UNKNOWN_USER")),[r,e]),a=Ne(()=>{if(r?.isDM()){let[l]=r.recipients.map(L.getUser).filter(Boolean);if(l)return i("img",{src:xf(l,e,!0,16),alt:`DM icon for ${n}`,className:Ql("user-icon")})}if(r?.isGroupDM())return i("img",{src:at.getChannelIconURL({...r,applicationId:r.getApplicationId(),size:16}),alt:`Group DM icon for ${n}`,className:Ql("user-icon")});let s=(r&&Ict(r))??(e?jU:HU);return i(s,{size:"xs",color:"currentColor"})},[r,e,n]);return i("div",{className:Ql("footer-element"),onClick:()=>Ect(e??"@me",t,o),onMouseEnter:()=>Sa.preload(e??"@me",t)},a,i(Y,{size:"sm",weight:"medium",className:Ql("footer-text")},n),i(r1,{width:12,height:12,fill:"currentColor"}))}function x5e({snowflake:e}){let t=Ne(()=>pd.calendarFormat(new Date(en.extractTimestamp(e))),[e]);return i("div",{className:Ql("footer-element"),style:{pointerEvents:"none"}},i(Y,{size:"sm",weight:"medium",className:Ql("footer-text")},t))}function v5e(){let e=V.useContext(UQ),{message:t}=e;return!t||t.embeds.length+t.attachments.length===0?null:i(pe,{gap:12,flexDirection:"column"},t.attachments.length>0&&i(Mct,{...e,message:t}),t.embeds.length>0&&i(Pct,{...e,message:t}))}function Pct({message:e,opts:t,setOpts:o,hasOpts:r,defaultOpts:n}){let a=Ne(()=>{let c=0;return e.embeds.map(({rawTitle:u,rawDescription:p,image:m,images:g=m?[m]:[],video:x},v)=>{let y={title:u?.trim()||p?.trim()||`Embed ${v+1}`,subEmbeds:[]};return g.length>0?y.subEmbeds=g.map((A,k)=>({id:c++,name:`${k===0?"Embed + ":""}Image ${g.length>1?`${k+1} `:""}(${A.width} x ${A.height})`,isMainEmbed:k===0})):x?y.subEmbeds=[{id:c++,name:"Embed + Video",isMainEmbed:!0}]:y.subEmbeds=[{id:c++,name:"Embed",isMainEmbed:!0}],y})},[e]),{EmbedIcon:s,ImageIcon:l}=$d;return a?.map(({title:c,subEmbeds:u})=>i(pe,{gap:4,flexDirection:"column",key:u[0].id},i(Y,{size:"sm",color:"text-subtle",className:Ql("embed-name"),style:{opacity:r?void 0:.5}},c),i(y5e,null,u.map(({id:p,name:m,isMainEmbed:g})=>{let x=g?s:l;return i(b5e,{key:p,id:p,source:r?t.onlyEmbedIndices??[]:n.onlyEmbedIndices,onChange:v=>o(y=>({...y,onlyEmbedIndices:v})),disabled:!r},x&&i(x,{size:"xs",style:{flexShrink:0}}),i(Y,{size:"sm"},m))}))))}function Mct({message:e,opts:t,setOpts:o,hasOpts:r,defaultOpts:n}){return i(y5e,null,e.attachments.map(a=>i(b5e,{key:a.id,id:a.id,source:r?t.onlyAttachmentIds??[]:n.onlyAttachmentIds,onChange:s=>o(l=>({...l,onlyAttachmentIds:s})),disabled:!r},i(Bct,{attachment:a}),i(Y,{size:"sm"},a.filename))))}function y5e(e){return i(pe,{gap:8,flexWrap:"wrap",className:f5e.tagGroup,"data-layout":"inline",...e})}function b5e({id:e,children:t,source:o,onChange:r,disabled:n}){let a=Ne(()=>o.includes(e),[o,e]);return i("div",{className:f5e.tag,"data-selection-mode":"multiple","data-selected":!n&&a?"true":void 0,onClick:()=>r(a?o.filter(s=>s!==e):[...o,e]),style:{textWrap:"wrap",opacity:n?.5:void 0},inert:n},t)}function Bct({attachment:e}){let t=Ne(()=>{let o=Cct(e,!0);return $d[(Nct[o]??"ImageFile")+"Icon"]},[e]);return t&&i(t,{size:"xs",style:{flexShrink:0}})}var f5e,kct,Cct,Tct,Ict,Ect,Dct,Nct,S5e=h(()=>{"use strict";d();yt();Lt();ot();s5();_e();Be();le();C();zQ();f5e=Ie("tagList","tagGroup","tag"),kct=he("{guildProfile:","GUILD_PROFILE"),Cct=Oe('"PLAINTEXT_PREVIEW":"OTHER"'),Tct=Oe("#{intl::NO_ACCESS}","isObfuscated()"),Ict=Oe("textFocused:","isGameInvitesChannel()"),Ect=Oe('getConfig({location:"channel_mention"})'),Dct=Oe('type:"BASIC_GUILD_FETCH_SUCCESS"');Nct={IMAGE:"Image",VIDEO:"Video",CLIP:"Clips",AUDIO:"Music",PLAINTEXT_PREVIEW:"A"}});var w5e,A5e=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/betterForwards/style.css",{name:"src/equicordplugins/betterForwards/style.css",source:`.vc-betterforwards-footer { margin-top: 3px; margin-left: -2px; .vc-betterforwards-footer-text { font-weight: 400; font-size: 14px; color: var(--text-muted); } .vc-betterforwards-guild-icon, .vc-betterforwards-user-icon, .vc-betterforwards-guild-acronym { margin-right: 2px; width: 16px; height: 16px; flex-shrink: 0; } .vc-betterforwards-guild-icon { border-radius: 4px; } .vc-betterforwards-user-icon { border-radius: 9999px; } .vc-betterforwards-guild-acronym { line-height: 16px; text-align: center; overflow: hidden; font-size: 9.6px; border-radius: 4px; white-space: nowrap; background-color: var(--background-base-lower); color: var(--text-default); } .vc-betterforwards-footer-element { &:hover { .vc-betterforwards-footer-text { color: var(--interactive-text-hover); } svg path { fill: var(--interactive-text-hover) !important; } background-color: var(--interactive-background-hover); cursor: pointer; } &:first-of-type { margin-left: 0; } align-items: center; align-self: flex-start; display: inline-flex; gap: 2px; padding: 1px 0 1px 2px; border-radius: 4px; vertical-align: middle; color: var(--text-muted); svg, img { flex-shrink: 0; } } } .vc-betterforwards-embed-name { overflow: hidden; text-wrap: nowrap; text-overflow: ellipsis; } [class^="forwardPreview"] { height: fit-content; > [class^="contentWrapper"] { max-height: 250px; overflow-y: auto; scrollbar-width: thin; > [class^="forwardPreviewMessage"] { flex-shrink: 0; } [class^="tagGroup"] > [class^="tag"] { text-wrap: nowrap !important; min-width: 0; .vc-text-base { text-overflow: ellipsis; overflow: hidden; } } } } `,classNames:{},dom:null});w5e="src/equicordplugins/betterForwards/style.css"});var Ql,UQ,k5e,Rct,eg,v7,zQ=h(()=>{"use strict";d();j();yt();Pe();Lt();ot();Ja();O();we();_e();R();le();C();S5e();A5e();Ql=K("vc-betterforwards-"),UQ=ln(()=>V.createContext({opts:{},setOpts:()=>{},defaultOpts:{onlyAttachmentIds:[],onlyEmbedIndices:[]},hasOpts:!1})),k5e=!1,Rct=({id:e,type:t})=>t!=="user"?e:W.getDMFromUserId(e)??Sa.getOrEnsurePrivateChannel(e),eg=M({resendOnFail:{description:"This will attempt to resend a forwarded message if the forward fails. Could cause unintentional pings or text spam. Bypasses NSFW restrictions.",type:3,default:!0,restartNeeded:!0},forwardPreface:{description:"What should the forwarded message be prefaced with",type:4,hidden:()=>!eg.store.resendOnFail,options:[{label:">",value:">",default:!0},{label:"-#",value:"-#"}]},dontFollowForwards:{description:"After forwarding a single message, don't jump to it. Hold shift to ignore this behavior.",displayName:"Don't Follow Forwards",type:3,default:!1,restartNeeded:!0},selfForward:{description:"Show the current channel in the forward list popup.",type:3,default:!1,restartNeeded:!0}});oo("BetterForwards","ForwardAnywhere");v7=S({name:"BetterForwards",description:"Message forward utilities including NSFW bypass and UI improvements.",tags:["Chat","Utility"],searchTerms:["selfForward","betterForwardMeta"],authors:[b.thororen,b.sadan,b.nin0dev,F.VillainsRule,b.Davri],settings:eg,managedStyle:w5e,patches:[{find:"#{intl::MESSAGE_FORWARDING_NSFW_NOT_ALLOWED}",predicate:()=>eg.store.resendOnFail,replacement:{match:/(\{if\().{0,50}(\)return.{0,25}#{intl::MESSAGE_FORWARDING_NSFW_NOT_ALLOWED})/,replace:"$1false$2"}},{find:"#{intl::MESSAGE_ACTION_FORWARD_TO}",replacement:[{match:/(?<=hasContextMessage:null!=(\i)&&.{100,150}?let (\i)=.{0,25}rejected.{0,25}\);)(?=.{0,25}message:(\i))/,replace:(e,t,o,r)=>`if(${o}.length>0)return await $self.sendForward(${t},${o},${r},__state.opts);`,predicate:()=>eg.store.resendOnFail},{match:/(?<=source:\i,)\.\.\.(\i)\}=(\i),/,replace:"__state,...$1}=$self.useProps($2),"},{match:/\(0,\i\.jsx\)\(\i,\{message:\i,forwardOptions:\i,channel:\i\}\)/,replace:"$self.renderWrapper(__state,$&)"},{match:/(?<=#{intl::CHECKPOINT_2025}.{50,100}?)\i>0&&\(.{200,250}?\}\)\]\}\)/,replace:"$self.renderForwardPicker()"},{match:/(?<=transitionToDestination:)(1===\i\.length)(?=,|\})/,replace:"$self.shouldTransition($1)",predicate:()=>eg.store.dontFollowForwards},{match:/((\i)=\i\.useCallback\(\()(\)=>\{)(null!=\i&&\i\.\i\.clearDraft)(?=.{1500,2000}onClick:\2)/,replace:(e,t,o,r,n)=>`${t}vencordArg1${r}$self.setShift(vencordArg1);${n}`,predicate:()=>eg.store.dontFollowForwards}]},{find:'location:"ForwardFooter"',replacement:{match:/let{message:\i,snapshot:\i,index:\i}=(\i)/,replace:"return $self.renderForwardFooter($1);$&"}},{find:".getChannelHistory(),",predicate:()=>eg.store.selfForward,replacement:{match:/\i.id\]/,replace:"]"}}],async sendForward(e,t,o,r){let n=o.messageSnapshots[0]?.message??o,a=` ${eg.store.forwardPreface} `,s=`${a}*Forwarded from <#${o.channel_id}>*${a}${n.content.trim().replaceAll(` `,a)}`,l=e?` ${e.trim()}`:"",c=r.onlyAttachmentIds,u=c?n.attachments.filter(g=>c.includes(g.id)):n.attachments,p=(await Promise.all(t.map(Rct))).filter(Boolean),m=5;p.forEach(g=>{if(u.length>0)for(let x=0;xA.url).join(a)}`,x+m>=u.length&&(y+=l),or(g,{content:y})}else or(g,{content:s+l})})},shouldTransition(e){return k5e?e:!1},setShift(e){k5e=!!e?.shiftKey},renderForwardFooter({message:e}){if(!e.messageReference)return null;let{guild_id:t,channel_id:o,message_id:r}=e.messageReference;return i(H,{noop:!0},i("div",{className:Ql("footer")},t&&i(g5e,{guildId:t}),i(h5e,{messageId:r,channelId:o,guildId:t}),i(x5e,{snowflake:r})))},useProps(e){let t=e.message?.messageSnapshots[0]?.message??e.message,[o,r]=T(()=>{if(!e.forwardOptions||!e.forwardOptions.onlyEmbedIndices)return e.forwardOptions??{};let c=0,u=new Set(e.forwardOptions.onlyEmbedIndices),p=t?.embeds.flatMap((m,g)=>m.images?.map(()=>({id:c++,eId:g}))??{id:c++,eId:g}).filter(({eId:m})=>u.has(m)).map(({id:m})=>m)??[];return{...e.forwardOptions,onlyEmbedIndices:p}}),n=Ne(()=>({onlyAttachmentIds:t?.attachments.map(c=>c.id)??[],onlyEmbedIndices:t?.embeds.flatMap(c=>c.images??[{}]).map((c,u)=>u)??[]}),[t]),a=!!o.onlyAttachmentIds||!!o.onlyEmbedIndices,s=Ne(()=>{if(!a)return o;let c={onlyAttachmentIds:[],onlyEmbedIndices:[],...o};return c.onlyAttachmentIds.length+c.onlyEmbedIndices.length===0&&(c.onlyAttachmentIds=["0"]),c.onlyEmbedIndices=c.onlyEmbedIndices.toSorted((u,p)=>u-p),c},[o,a]),l=Ne(()=>({message:t,opts:o,setOpts:r,defaultOpts:n,hasOpts:a}),[t,o,n,a]);return{...e,forwardOptions:s,__state:l}},renderWrapper(e,t){let{message:o,hasOpts:r,setOpts:n,defaultOpts:a}=e;return i(H,{noop:!0},i(UQ.Provider,{value:e},t,o&&o.embeds.length+o.attachments.length>0&&i(pe,{className:z.top16},i(Np,{value:!r,onChange:()=>n(r?{}:a),size:20},i(Y,{size:"sm"},"Forward everything")),i(ve,{text:"Message text will not be forwarded when this option is disabled"},s=>i(gi,{...s,color:"var(--text-muted)",width:20,height:20})))))},renderForwardPicker(){return i(H,{noop:!0},i(v5e,null))}})});var C5e=h(()=>{});function Lct(e){I5e.joinGuild(e,{lurker:!0}).then(()=>{I5e.transitionToGuildSync(e)}).catch(()=>{throw new Error("Guild is not lurkable")})}var T5e,I5e,y7,E5e=h(()=>{"use strict";d();C5e();ot();O();_e();Be();R();le();C();T5e=Ie("avatar","zalgo","clickable"),I5e=Ae("joinGuild");y7=S({name:"BetterInvites",description:"See invites expiration date, view inviter profile and preview servers before joining by clicking the name",tags:["Appearance","Customisation","Chat","Servers"],authors:[F.iamme,b.thororen],patches:[{find:"#{intl::xdCLeM::raw}",replacement:[{match:/profile:\i,disableGuildNameClick:!\i/,replace:"$&,invite:arguments[0].invite"}]},{find:"isBannerVisible:!1})},",replacement:[{match:/children:(\i)\.name\}\)\}\)\}\)/,replace:"onClick:$self.Lurkable($1),$&"},{match:/(profile:\i\}\))/,replace:"$1,$self.RenderTip(arguments[0]?.invite?.expires_at)"},{match:/(?<=\]\}\),)(?=.{0,15}onlineCount:\i\.onlineCount)/,replace:"$self.Header(arguments[0]?.invite?.inviter,arguments[0]?.profile?.name),"}]}],RenderTip(e){if(!e)return null;let t=i(f,null,kt.parse(``));return i(ve,{text:i(f,null,"This invite will ",e?i(f,null,"expire ",t):i(f,null,"not expire"))},({onMouseEnter:r,onMouseLeave:n})=>i("div",{className:"vc-bi-tooltip",onMouseEnter:r,onMouseLeave:n},i(gi,{className:"vc-bi-tooltip-icon"})))},Header(e,t){if(!e)return null;let r=L.getCurrentUser().id===e.id;return i("div",{className:"vc-bi-header-inner"},i("img",{alt:"",className:X(T5e.avatar,T5e.clickable)+" vc-bi-inviter-avatar",onClick:()=>Ko(e.id),src:e.avatar?`https://cdn.discordapp.com/avatars/${e.id}/${e.avatar}.webp?size=80`:"/assets/1f0bfc0865d324c2587920a7d80c609b.png?size=128"}),i("div",{className:"vc-bi-header-text"},r?`You sent an invite to join ${t}`:`${e.global_name||e.username} invited you to ${t}`))},Lurkable:e=>e&&new Set(e.features).has("DISCOVERABLE")?()=>Lct(e.id):null,startAt:"WebpackReady"})});var b7,D5e=h(()=>{"use strict";d();O();R();C();b7=S({name:"BetterPlusReacts",authors:[b.Joona],description:"The amount of plus before :emoji: is the message to add it to",tags:["Chat","Emotes"],patches:[{find:".SLASH_COMMAND_USED,",replacement:[{match:/\\\+/,replace:"$&*"},{match:/\i.trim\(\)/,replace:"$&.replace(/^\\++/, '+')"},{match:/=\i\.\i\.getMessages\(\i\.id\)\.last\(\)(?=.{78,85}.getByName\(\i\.)/,replace:"=$self.getMsgReference()"}]},{find:"this.props.activeCommandOption,",replacement:[{match:/:this.props.currentWord/,replace:"$&.replace(/^\\++/, '+')"},{match:/this.props.editorRef.current\)return;/,replace:"$&$self.setMsgReference(this.props.currentWord.split(':')[0],this.props.channel.id);"}]}],message:null,getMsgReference(){let{message:e}=this;return this.message=null,e},setMsgReference(e,t){let{getMessages:o}=lt;this.message=o(t).getByIndex(o(t).length-e.split("+").length+1)??null}})});var S7,P5e=h(()=>{"use strict";d();O();R();S7=S({name:"BlockKrisp",description:"Prevent Krisp from loading",tags:["Privacy","Utility","Voice"],authors:[b.D3SOX],patches:[{find:"Failed to load Krisp module",replacement:{match:/await \i.\i.ensureModule\("discord_krisp"\)/,replace:"throw new Error();$&"}},{find:"krisp_browser_models",replacement:{match:/if\(this._noiseCancellation\)/,replace:"if(false)"}},{find:"isNoiseCancellationSupported(){",replacement:{match:/isNoiseCancellationSupported\(\)\{/,replace:"$&return false;"}}]})});var w7,M5e=h(()=>{"use strict";d();O();R();w7=S({name:"BypassPinPrompt",description:"Bypass the pin prompt when using the pin functions",tags:["Shortcuts"],authors:[b.thororen],patches:[...['source:"message-actions"','id:"pin",action','"Channel Pins"'].map(e=>({find:e,replacement:[{match:/(\i\.\i\.(?:unpin|pin)Message\(\i,\i\.id\)):\i\.\i\.confirm(?:Unpin|Pin)\(\i,\i\)/g,replace:"$1:$1"}]}))]})});function N5e(){return i("svg",{width:"18",height:"18"},i("circle",{cx:"9",cy:"9",r:"8",fill:"var(--status-danger)"}),i("circle",{cx:"9",cy:"9",r:"3.75",fill:"white"}))}function B5e(){return i("svg",{width:"18",height:"18"},i("circle",{cx:"9",cy:"9",r:"8",fill:"currentColor"}),i("circle",{cx:"9",cy:"9",r:"3.75",fill:"black"}))}function $Q(e){return e.replace(/\s/g,"").split(",").filter(t=>t.trim()!=="").join(", ")}async function R5e(e,t){try{let o=W.getChannel(e.channel_id),r=/<#(\d{19})>/g,n=/<@(\d{18})>/g;e.content=e.content.replace(r,(a,s)=>`#${W.getChannel(s)?.name}`),e.content=e.content.replace(n,(a,s)=>`@${L.getUser(s).globalName}`),await xw.showNotification({title:`${e.author.globalName} ${t?`(#${o?.name}, ${W.getChannel(o?.parent_id)?.name})`:""}`,body:e.content,icon:L.getUser(e.author.id).getAvatarURL(void 0,void 0,!1),onClick:function(){Yt.transitionTo(`/channels/${t??"@me"}/${e.channel_id}/${e.id}`)}}),yl.store.notificationSound&&ii("message1")}catch(o){new ie("BypassStatus").error("Failed to notify user: ",o)}}function GQ(e){return(t,o)=>{let r=o[e];if(!r)return;let n=yl.store[`${e}s`].split(", ").includes(r.id);e==="user"&&r.id===L.getCurrentUser().id||t.splice(-1,0,i(P.MenuGroup,null,i(P.MenuItem,{id:`status-${e}-bypass`,label:`${n?"Remove":"Add"} Status Bypass`,icon:n?B5e:N5e,leadingAccessory:{type:"icon",icon:n?B5e:N5e},action:()=>{let a=yl.store[`${e}s`].split(", ");n?a=a.filter(s=>s!==r.id):a.push(r.id),yl.store[`${e}s`]=a.filter(s=>s.trim()!=="").join(", ")}})))}}var Oct,yl,A7,L5e=h(()=>{"use strict";d();rl();on();j();O();_e();He();R();C();Oct=4096;yl=M({guilds:{type:0,description:"Guilds to let bypass (notified when pinged anywhere in guild)",default:"",placeholder:"Separate with commas",onChange:e=>yl.store.guilds=$Q(e)},channels:{type:0,description:"Channels to let bypass (notified when pinged in that channel)",default:"",placeholder:"Separate with commas",onChange:e=>yl.store.channels=$Q(e)},users:{type:0,description:"Users to let bypass (notified for all messages sent in DMs)",default:"",placeholder:"Separate with commas",onChange:e=>yl.store.users=$Q(e)},allowOutsideOfDms:{type:3,description:"Allow selected users to bypass status outside of DMs too (acts like a channel/guild bypass, but it's for all messages sent by the selected users)"},notificationSound:{type:3,description:"Whether the notification sound should be played",default:!0},respectSilentPings:{type:3,description:"Respect silent pings (@silent / suppress notifications)",default:!0},statusToUse:{type:4,description:"Status to use for whitelist",options:[{label:"Online",value:"online"},{label:"Idle",value:"idle"},{label:"Do Not Disturb",value:"dnd",default:!0},{label:"Invisible",value:"invisible"}]}}),A7=S({name:"BypassStatus",description:"Still get notifications from specific sources when in do not disturb mode. Right-click on users/channels/guilds to set them to bypass do not disturb mode.",tags:["Activity","Customisation","Notifications","Servers"],authors:[b.Inbestigator],dependencies:["AudioPlayerAPI"],flux:{async MESSAGE_CREATE({message:e,guildId:t,channelId:o}){try{let r=L.getCurrentUser(),n=await Yo.getStatus(r.id),a=zo()?.id??"0";if(e.state==="SENDING"||e.content===""||e.author.id===r.id||o===a&&Vs.isFocused()||n!==yl.store.statusToUse||yl.store.respectSilentPings&&e.flags&Oct)return;let s=lt.getMessage(o,e.id)?.mentioned;if((yl.store.guilds.split(", ").includes(t)||yl.store.channels.split(", ").includes(o))&&s)await R5e(e,t);else if(yl.store.users.split(", ").includes(e.author.id)){let l=await Sa.getOrEnsurePrivateChannel(e.author.id);(o===l||s&&yl.store.allowOutsideOfDms===!0)&&await R5e(e,t)}}catch(r){new ie("BypassStatus").error("Failed to handle message: ",r)}}},settings:yl,contextMenus:{"guild-context":GQ("guild"),"channel-context":GQ("channel"),"user-context":GQ("user")}})});var O5e=h(()=>{});function k7(e){let t=jo.store;switch(e){case 0:return t.showTextBadge;case 2:return t.showVoiceBadge;case 4:return t.showCategoryBadge;case 5:return t.showAnnouncementBadge;case 10:return t.showAnnouncementThreadBadge;case 11:return t.showPublicThreadBadge;case 12:return t.showPrivateThreadBadge;case 13:return t.showStageBadge;case 14:return t.showDirectoryBadge;case 15:return t.showForumBadge;case 16:return t.showMediaBadge;case 6100:return t.showNSFWBadge;case 6101:return t.showLockedBadge;case 6102:return t.showRulesBadge;default:return t.showUnknownBadge}}function C7(e){switch(e){case 0:return{css:"text",label:jo.store.textBadgeLabel,color:jo.store.textBadgeColor};case 2:return{css:"voice",label:jo.store.voiceBadgeLabel,color:jo.store.voiceBadgeColor};case 4:return{css:"category",label:jo.store.categoryBadgeLabel,color:jo.store.categoryBadgeColor};case 5:return{css:"announcement",label:jo.store.announcementBadgeLabel,color:jo.store.announcementBadgeColor};case 10:return{css:"announcement-thread",label:jo.store.announcementThreadBadgeLabel,color:jo.store.announcementThreadBadgeColor};case 11:return{css:"thread",label:jo.store.publicThreadBadgeLabel,color:jo.store.publicThreadBadgeColor};case 12:return{css:"private-thread",label:jo.store.privateThreadBadgeLabel,color:jo.store.privateThreadBadgeColor};case 13:return{css:"stage",label:jo.store.stageBadgeLabel,color:jo.store.stageBadgeColor};case 14:return{css:"directory",label:jo.store.directoryBadgeLabel,color:jo.store.directoryBadgeColor};case 15:return{css:"forum",label:jo.store.forumBadgeLabel,color:jo.store.forumBadgeColor};case 16:return{css:"media",label:jo.store.mediaBadgeLabel,color:jo.store.mediaBadgeColor};case 6100:return{css:"nsfw",label:jo.store.nsfwBadgeLabel,color:jo.store.nsfwBadgeColor};case 6101:return{css:"locked",label:jo.store.lockedBadgeLabel,color:jo.store.lockedBadgeColor};case 6102:return{css:"rules",label:jo.store.rulesBadgeLabel,color:jo.store.rulesBadgeColor};default:return{css:"unknown",label:jo.store.unknownBadgeLabel,color:jo.store.unknownBadgeColor}}}var jo,F5e=h(()=>{"use strict";d();j();R();jo=M({oneBadgePerChannel:{type:3,default:!1,description:"Show only one badge per channel",restartNeeded:!0},showTextBadge:{type:3,default:!0,description:"Show Text badge",restartNeeded:!0},showVoiceBadge:{type:3,default:!0,description:"Show Voice badge",restartNeeded:!0},showCategoryBadge:{type:3,default:!0,description:"Show Category badge",restartNeeded:!0},showDirectoryBadge:{type:3,default:!0,description:"Show Directory badge",restartNeeded:!0},showAnnouncementThreadBadge:{type:3,default:!0,description:"Show Announcement Thread badge",restartNeeded:!0},showPublicThreadBadge:{type:3,default:!0,description:"Show Public Thread badge",restartNeeded:!0},showPrivateThreadBadge:{type:3,default:!0,description:"Show Private Thread badge",restartNeeded:!0},showStageBadge:{type:3,default:!0,description:"Show Stage badge",restartNeeded:!0},showAnnouncementBadge:{type:3,default:!0,description:"Show Announcement badge",restartNeeded:!0},showForumBadge:{type:3,default:!0,description:"Show Forum badge",restartNeeded:!0},showMediaBadge:{type:3,default:!0,description:"Show Media badge",restartNeeded:!0},showNSFWBadge:{type:3,default:!0,description:"Show NSFW badge",restartNeeded:!0},showLockedBadge:{type:3,default:!0,description:"Show Locked badge",restartNeeded:!0},showRulesBadge:{type:3,default:!0,description:"Show Rules badge",restartNeeded:!0},showUnknownBadge:{type:3,default:!0,description:"Show Unknown badge",restartNeeded:!0},textBadgeLabel:{type:0,default:"Text",description:"Text badge label",restartNeeded:!0},voiceBadgeLabel:{type:0,default:"Voice",description:"Voice badge label",restartNeeded:!0},categoryBadgeLabel:{type:0,default:"Category",description:"Category badge label",restartNeeded:!0},announcementBadgeLabel:{type:0,default:"News",description:"Announcement badge label",restartNeeded:!0},announcementThreadBadgeLabel:{type:0,default:"News Thread",description:"Announcement Thread badge label",restartNeeded:!0},publicThreadBadgeLabel:{type:0,default:"Thread",description:"Public Thread badge label",restartNeeded:!0},privateThreadBadgeLabel:{type:0,default:"Private Thread",description:"Private Thread badge label",restartNeeded:!0},stageBadgeLabel:{type:0,default:"Stage",description:"Stage badge label",restartNeeded:!0},directoryBadgeLabel:{type:0,default:"Directory",description:"Directory badge label",restartNeeded:!0},forumBadgeLabel:{type:0,default:"Forum",description:"Forum badge label",restartNeeded:!0},mediaBadgeLabel:{type:0,default:"Media",description:"Media badge label",restartNeeded:!0},nsfwBadgeLabel:{type:0,default:"NSFW",description:"NSFW badge label",restartNeeded:!0},lockedBadgeLabel:{type:0,default:"Locked",description:"Locked badge label",restartNeeded:!0},rulesBadgeLabel:{type:0,default:"Rules",description:"Rules badge label",restartNeeded:!0},unknownBadgeLabel:{type:0,default:"Unknown",description:"Unknown badge label",restartNeeded:!0},textBadgeColor:{type:0,description:"Text badge color",restartNeeded:!0},voiceBadgeColor:{type:0,description:"Voice badge color",restartNeeded:!0},categoryBadgeColor:{type:0,description:"Category badge color",restartNeeded:!0},announcementBadgeColor:{type:0,description:"Announcement badge color",restartNeeded:!0},announcementThreadBadgeColor:{type:0,description:"Announcement Thread badge color",restartNeeded:!0},publicThreadBadgeColor:{type:0,description:"Public Thread badge color",restartNeeded:!0},privateThreadBadgeColor:{type:0,description:"Private Thread badge color",restartNeeded:!0},stageBadgeColor:{type:0,description:"Stage badge color",restartNeeded:!0},directoryBadgeColor:{type:0,description:"Directory badge color",restartNeeded:!0},forumBadgeColor:{type:0,description:"Forum badge color",restartNeeded:!0},mediaBadgeColor:{type:0,description:"Media badge color",restartNeeded:!0},nsfwBadgeColor:{type:0,description:"NSFW badge color",restartNeeded:!0},lockedBadgeColor:{type:0,description:"Locked badge color",restartNeeded:!0},rulesBadgeColor:{type:0,description:"Rules badge color",restartNeeded:!0},unknownBadgeColor:{type:0,description:"Unknown badge color",restartNeeded:!0}})});function T7(e,t){let{css:o,label:r,color:n}=C7(e);return i("div",{key:e,className:`channel-badge channel-badge-${o}`,style:n?{backgroundColor:n}:void 0,title:t},r)}var I7,_5e=h(()=>{"use strict";d();O5e();O();R();C();F5e();I7=S({name:"ChannelBadges",description:"Adds badges to channels based on their type",tags:["Appearance","Customisation","Servers"],authors:[F.creations,b.thororen],settings:jo,patches:[{find:"UNREAD_IMPORTANT:",replacement:{match:/\.Children\.count.+?:null(?<=,channel:(\i).+?)/,replace:"$&,$self.renderChannelBadges($1)"}},{find:"18V16H9v2H6Zm3",replacement:{match:/mentionsCount:\i.+?null(?<=channel:(\i).+?)/,replace:"$&,$self.renderChannelBadges($1)"}}],renderChannelBadges(e){if(!e||!k7(e.type))return null;let{type:t,nsfw:o,threadMetadata:r}=e,n=e.isPrivate()||r?.locked||e.isArchivedThread(),a=o||e.isNSFW(),s=ao.getGuildId(),l=s?$e.getGuild(s):null,c=[{id:6101,condition:n,title:"This channel is locked."},{id:6100,condition:a,title:"This channel is marked as NSFW."},{id:6102,condition:l?.rulesChannelId===e.id,title:"This channel is the server rules channel."}],u=[];if(jo.store.oneBadgePerChannel){let p=c.find(({id:m,condition:g})=>g&&k7(m));p?u.push(T7(p.id,p.title)):u.push(T7(t,C7(t).label))}else u=c.filter(({id:p,condition:m})=>m&&k7(p)).map(({id:p,title:m})=>T7(p,m)),u.push(T7(t,C7(t).label));return i("div",{className:"badge-container"},u)}})});var U5e=h(()=>{});function E7({label:e,description:t,settingKey:o,enabledKey:r}){let a=je.use([o])[o],[s,l]=T(!1),[c,u]=T(null),p=Se(null);G(()=>{if(!s)return;let x=y=>{if(y.preventDefault(),y.stopPropagation(),["Control","Shift","Alt","Meta"].includes(y.key))return;let A=[];Go&&y.ctrlKey?(y.ctrlKey&&A.push("CONTROL"),y.metaKey&&A.push("CTRL")):y.ctrlKey&&A.push("CTRL"),y.shiftKey&&A.push("SHIFT"),y.altKey&&A.push("ALT");let k=y.key.toUpperCase();k===" "&&(k="SPACE"),k==="ESCAPE"&&(k="ESC"),A.push(k);let w=A.join("+"),I={closeTabKeybind:je.store.closeTabKeybind,newTabKeybind:je.store.newTabKeybind,cycleTabForwardKeybind:je.store.cycleTabForwardKeybind,cycleTabBackwardKeybind:je.store.cycleTabBackwardKeybind},E=Object.entries(I).find(([N,B])=>N!==o&&B===w);if(E){u(`This keybind is already used by: ${E[0]}`),setTimeout(()=>u(null),3e3),l(!1);return}je.store[o]=w,u(null),l(!1)},v=()=>{l(!1)};return document.addEventListener("keydown",x,!0),window.addEventListener("blur",v),p.current?.focus(),()=>{document.removeEventListener("keydown",x,!0),window.removeEventListener("blur",v)}},[s,o]);let m=()=>{let x={closeTabKeybind:"CTRL+W",newTabKeybind:"CTRL+T",cycleTabForwardKeybind:"CTRL+TAB",cycleTabBackwardKeybind:"CTRL+SHIFT+TAB"};je.store[o]=x[o],u(null)},g=r?je.use([r])[r]:!0;return i("div",{className:"channelTabs-keybind-input"},i("div",{className:"channelTabs-keybind-info"},i(vi,{variant:"text-md/semibold"},e),i(vi,{variant:"text-sm/normal",style:{color:"var(--text-muted)"}},t),!g&&i(vi,{variant:"text-xs/normal",style:{color:"var(--text-feedback-critical)"}},"This shortcut is currently disabled"),c&&i(vi,{variant:"text-xs/normal",className:"channelTabs-keybind-conflict"},c)),i("div",{className:"channelTabs-keybind-controls"},i("button",{ref:p,className:`channelTabs-keybind-button ${s?"listening":""}`,onClick:()=>l(!0),disabled:!g},s?"Press any key...":Fct(a)),i(ue,{size:ue.Sizes.SMALL,color:ue.Colors.PRIMARY,onClick:m,disabled:!g},"Reset")))}function Fct(e){return navigator.platform.toUpperCase().includes("MAC")?e.includes("CTRL+TAB")||e.includes("CTRL+SHIFT+TAB")?e.replace("CTRL","^"):e.replace("CTRL","\u2318"):e}function z5e(){let e=()=>{je.store.closeTabKeybind="CTRL+W",je.store.newTabKeybind="CTRL+T",je.store.cycleTabForwardKeybind="CTRL+TAB",je.store.cycleTabBackwardKeybind="CTRL+SHIFT+TAB"};return i(H,null,i(Rt,null),i("div",{className:"channelTabs-keybind-settings"},i(oe,null,"Keyboard Shortcuts"),i(U,null,"Click a button and press your desired key combination. Modifiers like CTRL, SHIFT, and ALT are supported."),i(E7,{label:"Close Tab",description:"Close the currently active tab",settingKey:"closeTabKeybind",enabledKey:"enableCloseTabShortcut"}),i(E7,{label:"New Tab",description:"Open a new tab with the current channel",settingKey:"newTabKeybind",enabledKey:"enableNewTabShortcut"}),i(E7,{label:"Cycle Tabs Forward",description:"Switch to the next tab (wraps around to first)",settingKey:"cycleTabForwardKeybind",enabledKey:"enableTabCycleShortcut"}),i(E7,{label:"Cycle Tabs Backward",description:"Switch to the previous tab (wraps around to last)",settingKey:"cycleTabBackwardKeybind",enabledKey:"enableTabCycleShortcut"}),i("div",{style:{marginTop:"16px"}},i(ue,{color:ue.Colors.RED,onClick:e},"Reset All to Defaults"))))}var $5e=h(()=>{"use strict";d();xr();Pe();We();Je();tg();O();C()});function _ct(){let e=[{label:"Tab Hover Effects (lift + scale)",value:"hover",selected:je.store.animationHover},{label:"Selected Tab Lift Animation",value:"selection",selected:je.store.animationSelection},{label:"Tab Drag & Drop (ghost + reorder)",value:"drag-drop",selected:je.store.animationDragDrop},{label:"Tab Enter/Exit Slides (creation + closing)",value:"enter-exit",selected:je.store.animationEnterExit},{label:"Icon Pop on Selection (icon scale-up)",value:"icon-pop",selected:je.store.animationIconPop},{label:"Close Button Rotation",value:"close-rotation",selected:je.store.animationCloseRotation},{label:"Plus Button Pulse",value:"plus-pulse",selected:je.store.animationPlusPulse},{label:"Mention Badge Glow",value:"mention-glow",selected:je.store.animationMentionGlow},{label:"Compact Mode Expansion",value:"compact-expand",selected:je.store.animationCompactExpand},{label:"Selected Tab Accent Border",value:"selected-border",selected:je.store.animationSelectedBorder},{label:"Selected Tab Background Color",value:"selected-background",selected:je.store.animationSelectedBackground},{label:"Tab Shadow Effects",value:"tab-shadows",selected:je.store.animationTabShadows},{label:"Tab Repositioning (smooth position changes)",value:"tab-positioning",selected:je.store.animationTabPositioning},{label:"Resize Handle Fade",value:"resize-handle",selected:je.store.animationResizeHandle},{label:"Active Quests Gradient",value:"quests-active",selected:je.store.animationQuestsActive}],[t,o]=T(e.filter(a=>a.selected).map(a=>a.value));function r(a){e.forEach(s=>{s.selected=a.includes(s.value)}),je.store.animationHover=a.includes("hover"),je.store.animationSelection=a.includes("selection"),je.store.animationDragDrop=a.includes("drag-drop"),je.store.animationEnterExit=a.includes("enter-exit"),je.store.animationIconPop=a.includes("icon-pop"),je.store.animationCloseRotation=a.includes("close-rotation"),je.store.animationPlusPulse=a.includes("plus-pulse"),je.store.animationMentionGlow=a.includes("mention-glow"),je.store.animationCompactExpand=a.includes("compact-expand"),je.store.animationSelectedBorder=a.includes("selected-border"),je.store.animationSelectedBackground=a.includes("selected-background"),je.store.animationTabShadows=a.includes("tab-shadows"),je.store.animationTabPositioning=a.includes("tab-positioning"),je.store.animationResizeHandle=a.includes("resize-handle"),je.store.animationQuestsActive=a.includes("quests-active"),o(a)}function n(a){let s=a.map(c=>typeof c=="string"?c:c.value),l=s.length>t.length?s.find(c=>!t.includes(c)):t.find(c=>!s.includes(c));if(l==null){r(s);return}t.includes(l)?r(t.filter(c=>c!==l)):r([...t,l])}return i("section",null,i(oe,null,"Animation Controls"),i(U,null,"Enable or disable specific animations for channel tabs. Each option can be toggled independently."),i("div",{style:{marginTop:"8px"}},i(Fn,{placeholder:"Select which animations to enable...",maxVisibleItems:12,clearable:!0,multi:!0,value:t,options:e,onChange:n,closeOnSelect:!1})))}var Zr,Ha,je,D7=h(()=>{"use strict";d();j();We();Je();HQ();$5e();He();R();C();Zr=new ie("ChannelTabs"),Ha={Red:"#f23f42",Blue:"#0052b6",Yellow:"#f0b132",Green:"#24934f",Black:"#000",White:"#fff",Orange:"#e67e22",Pink:"#ff73fa"},je=M({onStartup:{type:4,description:"On startup",options:[{label:"Do nothing (open on the friends tab)",value:"nothing",default:!0},{label:"Remember tabs from last session",value:"remember"},{label:"Open on a specific set of tabs",value:"preset"}]},tabSet:{component:G5e,type:6,default:{}},showStatusIndicators:{description:"Show status indicators for DM's",type:3,default:!0},showBookmarkBar:{description:"",type:3,default:!0},bookmarkNotificationDot:{description:"Show notification dot for bookmarks",type:3,default:!0},persistUnreadCountFallback:{description:"Persist unread badge fallbacks across reloads for tabs and bookmarks",type:3,default:!0,restartNeeded:!1},widerTabsAndBookmarks:{description:"Extend the length of tabs and bookmarks for larger monitors",type:3,default:!1,restartNeeded:!1},tabWidthScale:{type:1,description:"Tab width scale (percentage) - adjustable by dragging tab edges",default:100,hidden:!0,restartNeeded:!1},tabHeightScale:{type:1,description:"Tab height scale (percentage).",default:100,restartNeeded:!1},renderAllTabs:{type:3,description:"Keep all tabs cached in memory for faster switching (caches scroll position and state)",default:!1,restartNeeded:!1},switchToExistingTab:{type:3,description:"Switch to tab if it already exists for the channel you're navigating to",default:!1,restartNeeded:!1},createNewTabIfNotExists:{type:3,description:"Create a new tab if one doesn't exist for the channel you're navigating to",default:!1,restartNeeded:!1},enableRapidNavigation:{type:3,description:"Enable rapid navigation behavior - quickly navigating between channels will replace the current tab instead of creating new ones",default:!1,restartNeeded:!1},rapidNavigationThreshold:{type:5,description:"Time window (in seconds) for rapid navigation. Within this time, new channels replace the current tab instead of creating new ones.",markers:[1,2,3,5,10,20,30,40,50,60],default:3,stickToMarkers:!1},tabBarPosition:{type:4,description:"Where to show the tab bar.",options:[{label:"Top",value:"top",default:!0},{label:"Bottom",value:"bottom"}],restartNeeded:!0},enableNumberKeySwitching:{type:3,description:"Enable number keys (1-9) to switch tabs",default:!0,restartNeeded:!1},numberKeySwitchCount:{type:5,description:"Number of tabs accessible via number keys (1-9)",markers:zt(1,9,1),default:3,stickToMarkers:!0},enableCloseTabShortcut:{type:3,description:"Enable close tab keyboard shortcut",default:!0,restartNeeded:!1},enableNewTabShortcut:{type:3,description:"Enable new tab keyboard shortcut",default:!0,restartNeeded:!1},enableTabCycleShortcut:{type:3,description:"Enable tab cycling keyboard shortcut",default:!0,restartNeeded:!1},keybindsSection:{type:6,component:z5e},closeTabKeybind:{type:0,description:"Keyboard shortcut to close the current tab",default:"CTRL+W",hidden:!0},newTabKeybind:{type:0,description:"Keyboard shortcut to open a new tab",default:"CTRL+T",hidden:!0},cycleTabForwardKeybind:{type:0,description:"Keyboard shortcut to cycle to the next tab",default:"CTRL+TAB",hidden:!0},cycleTabBackwardKeybind:{type:0,description:"Keyboard shortcut to cycle to the previous tab",default:"CTRL+SHIFT+TAB",hidden:!0},showTabNumbers:{type:3,description:"Show numbered badges on tabs to indicate keyboard shortcuts",default:!1,restartNeeded:!1},tabNumberPosition:{type:4,description:"Where to display the numbered badge on tabs",options:[{label:"Left side (before icon)",value:"left",default:!0},{label:"Right side (after content)",value:"right"}],restartNeeded:!1},animations:{type:6,component:_ct},animationHover:{type:3,description:"Enable hover lift and scale effects",default:!0,hidden:!0},animationSelection:{type:3,description:"Enable selection animations (border glow, lift)",default:!0,hidden:!0},animationDragDrop:{type:3,description:"Enable drag and drop ghost effects",default:!0,hidden:!0},animationEnterExit:{type:3,description:"Enable tab creation/closing slide animations",default:!0,hidden:!0},animationIconPop:{type:3,description:"Enable icon scale-up animation on selection",default:!0,hidden:!0},animationCloseRotation:{type:3,description:"Enable rotation animation for close buttons",default:!0,hidden:!0},animationPlusPulse:{type:3,description:"Enable pulse animation for plus button",default:!0,hidden:!0},animationMentionGlow:{type:3,description:"Enable pulsing red glow for mentions",default:!0,hidden:!0},animationCompactExpand:{type:3,description:"Enable smooth expansion for compact tabs",default:!0,hidden:!0},animationSelectedBorder:{type:3,description:"Enable border and glow styling for selected tabs",default:!0,hidden:!0},animationSelectedBackground:{type:3,description:"Enable background color change for selected tabs",default:!0,hidden:!0},animationTabShadows:{type:3,description:"Enable shadow effects on tabs",default:!0,hidden:!0},animationTabPositioning:{type:3,description:"Enable smooth transitions when tabs move positions",default:!0,hidden:!0},animationResizeHandle:{type:3,description:"Enable fade animation for resize handle",default:!0,hidden:!0},animationQuestsActive:{type:3,description:"Enable gradient animations on Quests tab when quests are actively running",default:!0,hidden:!0},compactAutoExpandSelected:{type:3,description:"Automatically expand compact tabs when selected to show the full channel name",default:!0,restartNeeded:!1},compactAutoExpandOnHover:{type:3,description:"Automatically expand compact tabs on hover to show the full channel name",default:!0,restartNeeded:!1},openInNewTabAutoSwitch:{type:3,description:"Automatically switch to new tabs opened from 'Open in New Tab' context menu",default:!0,restartNeeded:!1},bookmarksIndependentFromTabs:{type:3,description:"Bookmarks navigate independently without affecting the active tabs bar",default:!0,restartNeeded:!1},showResizeHandle:{type:3,description:"Show resize handle when hovering over tabs to adjust tab width",default:!0,restartNeeded:!1},openNewTabsInCompactMode:{type:3,description:"Open all newly created tabs in compact mode by default",default:!1,restartNeeded:!1},newTabButtonBehavior:{type:3,description:"New tab (+) button follows tabs instead of staying pinned to the right",default:!0,restartNeeded:!1},oneTabPerServer:{type:3,description:"Limit to one tab per server, so opening a new channel in that server will use the existing tab.",default:!1,restartNeeded:!1},maxOpenTabs:{type:5,description:"Maximum number of open tabs (0 = unlimited)",markers:zt(0,20,1),default:0,stickToMarkers:!0,restartNeeded:!1}})});function hn(e){return"bookmarks"in e}function P7(e){if(hn(e))return"Folder";let{channelId:t}=e;if(t?.startsWith("__"))return{__quests__:"Quests","__message-requests__":"Message Requests",__friends__:"Friends",__shop__:"Shop",__library__:"Library",__discovery__:"Discovery",__nitro__:"Nitro",__icymi__:"ICYMI",__activity__:"Activity"}[t]||"Special Page";let o=W.getChannel(t);return o?o.name?`#${o.name}`:o.recipients?L.getUser(o.recipients?.[0])?.username??"Unknown User":"Bookmark":"Bookmark"}function jQ(e){let[t,o]=T({}),r=jt(a=>{o(a),Le.update("ChannelTabs_bookmarks",s=>({...s,[e]:a[e]}))},[e]);Ro(()=>Le.get("ChannelTabs_bookmarks"),{fallbackValue:void 0,onSuccess(a){a||(a={[e]:[]},Le.set("ChannelTabs_bookmarks",{[e]:[]})),a[e]||(a[e]=[]),r(a)}});let n={addBookmark:(a,s)=>{if(!t)return;if(typeof s=="number"&&!hn(t[e][s]))return Zr.error("Attempted to add bookmark to non-folder "+s,t);let l=a.name??P7(a);typeof s=="number"?t[e][s].bookmarks.push({...a,name:l}):t[e].push({...a,name:l}),r({...t})},addFolder(a,s,l){if(!t)return;let c=t[e].push({name:a?.trim()||"Folder",iconColor:s??Ha.Black,iconName:l,bookmarks:[]});return r({...t}),c-1},editBookmark(a,s){t&&(Object.entries(s).forEach(([l,c])=>{t[e][a][l]=c}),r({...t}))},deleteBookmark(a,s){if(t){if(typeof s=="number"){let l=t[e][s];if(!hn(l))return Zr.error("Attempted to delete bookmark from non-folder "+s,t);if(a<0||a>l.bookmarks.length-1)return Zr.error("Attempted to delete bookmark at index "+a,t);l.bookmarks.splice(a,1)}else{if(a<0||a>t[e].length-1)return Zr.error("Attempted to delete bookmark at index "+a,t);t[e].splice(a,1)}r({...t})}},moveDraggedBookmarks(a,s){if(a<0||s>t[e].length)return Zr.error(`Out of bounds drag (swap between indexes ${a} and ${s})`,t);let l=t[e].splice(a,1)[0];t[e].splice(s,0,l),r({...t})}};return[t[e],n]}var H5e=h(()=>{"use strict";d();on();Kt();C();D7()});function p5(e){if(!e)return;let t=$d[e];return typeof t=="function"&&e.endsWith("Icon")?t:void 0}function qQ(){return M7||(M7=Object.keys($d).filter(e=>e.endsWith("Icon")&&typeof $d[e]=="function").sort((e,t)=>e.localeCompare(t)),M7)}var M7,j5e=h(()=>{"use strict";d();s5()});var m5,f5,g5,h5,x5,Yv,WQ,KQ,v5,N7=h(()=>{"use strict";d();le();m5=he("10.47a.76.76"),f5=he("M2.63 4.19A3"),g5=he("M1.16 5.02c-.1.28"),h5=he("M7.74 9.3A2 2 0 0 1 9.3 7.75l7.22"),x5=he("M16.23 12c0 1.29-.95 2.25"),Yv=he("12h1a8"),WQ=he("0-.66-1.75h-4.81a"),KQ=he("17.3 9 16.8 9 15.92V8.1Z"),v5=he("10.58l-3.3-3.3a1")});function w5(){return je.store.bookmarksIndependentFromTabs&&S5}function L7(){return y5}function YQ(){clearTimeout(B7),y5=!1}function O7(){S5=!1}function b5(e,t,o){ng={guildId:e||"@me",channelId:t,timestamp:Date.now(),source:o}}function JQ(e,t,o){if(!ng)return!1;let r=e||"@me";return(ng.guildId||"@me")===r&&ng.channelId===t&&ng.source===o}function XQ(){ng&&Date.now()-ng.timestamp>2e3&&(ng=null)}function Gh(e,...t){let o=e.length;for(let r=0;rp.guildId===e.guildId);if(u){u.channelId=e.channelId,u.messageId=o,u.compact="compact"in e?e.compact:je.store.openNewTabsInCompactMode,t?Ui(u.id):ca(r);return}}let a=je.store.maxOpenTabs;if(a>0&&Pt.length>=a){let u=Pt.find(p=>p.id===la);u&&(u.channelId=e.channelId,u.guildId=e.guildId,u.messageId=o,u.compact="compact"in e?e.compact:je.store.openNewTabsInCompactMode,t?ca(r):Ui(u.id));return}let c=zct();Pt.push({...e,id:c,messageId:o,compact:"compact"in e?e.compact:je.store.openNewTabsInCompactMode}),t&&Ui(c),VQ(),ca(r)}function ig(e){if(Pt.length<=1)return;let t=Pt.findIndex(r=>r.id===e);if(t===-1)return Zr.error("Couldn't find channel tab with ID "+e,Pt);let o=Pt.splice(t,1);if(rg.push(...o),Gd.delete(e),e===la)if(og.length){og.pop();let r;for(;!r;){let n=og.at(-1);if(og.pop(),!n){let s=ts.id===n);a&&(r=a)}r&&(Ui(r.id),og.pop())}else{let r=tn.id===e);if(t===void 0)return Zr.error("Couldn't find channel tab with ID "+e,Pt);let o=Pt.filter(n=>n.id!==e);rg.push(...o.reverse());let r=Pt.find(n=>n.id===la);Gh(Pt,t),sZ(e),Gh(og,e),t.channelId!==r.channelId?Ui(e):ca()}function tZ(e){let t=Pt.findIndex(n=>n.id===e);if(t===-1)return Zr.error("Couldn't find channel tab with ID "+e,Pt);let o=Pt.filter((n,a)=>a>t);rg.push(...o.reverse());let r=Pt.filter((n,a)=>a<=t);Gh(Pt,...r),r.some(n=>n.id===la)?ca():Ui(Pt.at(-1).id)}function oZ(e){let t=Pt.findIndex(n=>n.id===e);if(t===-1)return Zr.error("Couldn't find channel tab with ID "+e,Pt);let o=Pt.filter((n,a)=>aa>=t);Gh(Pt,...r),r.some(n=>n.id===la)?ca():Ui(Pt[0].id)}function Hh(e){if(!e.channelId||w5())return;let t=Pt.find(n=>n.id===la),o=e.guildId||"@me",r=Pt.find(n=>{let a=n.guildId||"@me";return n.channelId===e.channelId&&a===o});if(je.store.switchToExistingTab&&r){Ui(r.id);return}if(je.store.createNewTabIfNotExists){let n=Date.now(),a=n-K5el.id===la);if(s&&s.channelId!==e.channelId){s.channelId=e.channelId,s.guildId=e.guildId,ca();return}}r||Rs(e,!0);return}t&&t.channelId!==e.channelId&&(Pt[Pt.indexOf(t)]={id:t.id,compact:t.compact,...e},ca())}function nZ(){return!!rg.length}function Tu(e){return S5&&je.store.bookmarksIndependentFromTabs?!1:e===la}function rZ(e,t){if(e<0||e>=Pt.length||t<0||t>=Pt.length)return Zr.error(`Out of bounds drag (swap between indexes ${e} and ${t})`,Pt);let o=Pt.splice(e,1)[0];if(!o)return Zr.error(`Tab at index ${e} is undefined`,Pt);Pt.splice(t,0,o),ca()}function J5e(){return document.querySelector('[class*="scrollerInner"]')}function Hct(){let e=Date.now();for(let[t,o]of Gd.entries())e-o.timestamp>$ct&&Gd.delete(t);if(Gd.size>W5e){let o=Array.from(Gd.entries()).sort((r,n)=>r[1].timestamp-n[1].timestamp).slice(0,Gd.size-W5e);for(let[r]of o)Gd.delete(r)}}function jct(){if(!je.store.renderAllTabs)return;let e=J5e();e&&la!==void 0&&(Hct(),Gd.set(la,{scrollPosition:e.scrollTop,timestamp:Date.now()}))}function qct(e){if(!je.store.renderAllTabs)return;let t=Gd.get(e);t&&requestAnimationFrame(()=>{setTimeout(()=>{let o=J5e();o&&(o.scrollTop=t.scrollPosition)},50)})}function Ui(e){let t=Pt.find(o=>o.id===e);if(t===void 0)return Zr.error("Couldn't find channel tab with ID "+e,Pt);if(S5=!1,jct(),sZ(e),clearTimeout(B7),y5=!0,t.channelId&&t.channelId.startsWith("__")){let r={__quests__:"/quest-home","__message-requests__":"/message-requests",__friends__:"/channels/@me",__shop__:"/shop",__library__:"/library",__discovery__:"/discovery",__nitro__:"/store",__icymi__:"/icymi",__activity__:"/channels/@me/activity"}[t.channelId];if(r){b5(t.guildId,t.channelId,"tab"),Yt.transitionTo(r),B7=setTimeout(()=>{y5=!1},q5e);return}}t.messageId?(b5(t.guildId,t.channelId,"tab"),Yt.transitionTo(`/channels/${t.guildId}/${t.channelId}/${t.messageId}`),delete Pt[Pt.indexOf(t)].messageId):t.channelId!==Fe.getChannelId()||t.guildId!==ao.getGuildId()?(b5(t.guildId,t.channelId,"tab"),Yt.transitionToGuild(t.guildId,t.channelId),qct(e)):ca(),B7=setTimeout(()=>{y5=!1},q5e)}async function iZ(e,t){let{userId:o}=e;if(QQ===o&&Pt.length){t(o),ca(!1);return}t("");let r=++ZQ;if(await R7,r!==ZQ)return;let n=je.store.onStartup!=="nothing"&&Ve("KeepCurrentChannel"),a;if(je.store.onStartup==="remember"&&!n)try{let s=await Le.get("ChannelTabs_openChannels_v2");if(r!==ZQ)return;a=s?.[o]}catch(s){Zr.error("Failed to load persisted tabs from DataStore",s),ne("Failed to load saved tabs",D.Type.FAILURE)}if(Gh(Pt),Gh(rg),Gh(og),Gd.clear(),Q5e=0,n){QQ=void 0,ne("Not restoring tabs as KeepCurrentChannel is enabled",D.Type.FAILURE);return}switch(je.store.onStartup){case"remember":{if(!a?.openTabs.length){ne("Failed to restore tabs",D.Type.FAILURE);break}a.openTabs.forEach(s=>Rs(s,!1,s.messageId,!1)),la=Pt[a.openTabIndex]?.id??Pt[0]?.id;break}case"preset":{let s=je.store.tabSet?.[o];if(!s)break;s.forEach(l=>Rs(l,!1,l.messageId,!1)),la=Pt[0]?.id;break}}Pt.length||Rs({channelId:e.channelId,guildId:e.guildId},!1,void 0,!1),la=Pt.find(s=>s.id===la)?.id??Pt[0].id,QQ=o,t(o),Ui(la)}function aZ(){if(!rg.length)return;let e=rg.pop();Rs(e,!0)}function F7(e){if(!e)return Promise.resolve();let t={openTabs:Pt.map(o=>({...o})),openTabIndex:Pt.findIndex(o=>o.id===la)};return R7=R7.then(()=>Le.update("ChannelTabs_openChannels_v2",o=>({...o??{},[e]:t}))).catch(o=>{Zr.error("Failed to save tabs to DataStore",o)}),R7}function sZ(e){if(Pt.findIndex(o=>o.id===e)===-1)return Zr.error("Couldn't find channel tab with ID "+e,Pt);la=e,og.push(e)}function lZ(e){return ca=e,()=>{ca===e&&(ca=Z5e)}}function X5e(e){Hh(e),Ui(Pt.find(t=>t.id===la).id)}function _7(e){if(je.store.bookmarksIndependentFromTabs){if(S5=!0,b5(e.guildId,e.channelId,"bookmark"),e.channelId&&e.channelId.startsWith("__")){let o={__quests__:"/quest-home","__message-requests__":"/message-requests",__friends__:"/channels/@me",__shop__:"/shop",__library__:"/library",__discovery__:"/discovery",__nitro__:"/store",__icymi__:"/icymi",__activity__:"/channels/@me/activity"}[e.channelId];if(o){Yt.transitionTo(o),ca();return}}Yt.transitionToGuild(e.guildId,e.channelId),ca()}else X5e(e)}function cZ(e){let t=Pt.findIndex(o=>o.id===e);if(t===-1)return Zr.error("Couldn't find channel tab with ID "+e,Pt);Pt[t]={...Pt[t],compact:!Pt[t].compact},ca()}function uZ(){let e=Se(void 0),[t,o]=T(0);return Y5e=()=>{o(r=>r+1),clearTimeout(e.current),e.current=setTimeout(()=>{o(0)},3e3)},VQ=()=>{clearTimeout(e.current),o(0)},G(()=>()=>{clearTimeout(e.current)},[]),new Array(t).fill(i("div",{className:Uct("tab","ghost-tab")}))}var Uct,ng,S5,y5,B7,q5e,Q5e,zct,Pt,rg,la,og,QQ,ZQ,R7,Gd,W5e,$ct,Gct,nn,Z5e,ca,Y5e,VQ,K5e,V5e=h(()=>{"use strict";d();on();Jt();we();C();D7();Uct=K("vc-channeltabs-"),ng=null,S5=!1,y5=!1,q5e=1e3;Q5e=0,zct=()=>Q5e++,Pt=[],rg=[],og=[],ZQ=0,R7=Promise.resolve(),Gd=new Map,W5e=50,$ct=1800*1e3,Gct={get openedTabs(){return Pt}},{openedTabs:nn}=Gct,Z5e=()=>{Zr.warn("Update function not set")},ca=Z5e,Y5e=()=>{Zr.warn("Set ghost tab function not set")},VQ=()=>{Zr.warn("Clear ghost tab function not set")};K5e=0});var e8e=h(()=>{"use strict";d()});function dZ(e,t,o){let r=e.reduce((l,c)=>l+c.mentionCount,0);if(r>0)return{badgeText:String(r),hasMention:!0,shouldShow:!0};let n=0,a=0;for(let l of e)n+=l.unreadCount,!(l.unreadCount>0||!o||!l.hasUnread)&&(a+=Math.max(t[l.channelId]??0,1));let s=n+a;return s===0?{badgeText:null,hasMention:!1,shouldShow:!1}:{badgeText:a>0?`${s}+`:String(s),hasMention:!1,shouldShow:!0}}function pZ(e,t){let o={...e};for(let r of t){if(r.unreadCount>0){o[r.channelId]=r.unreadCount;continue}r.hasUnread||delete o[r.channelId]}return o}var mZ=h(()=>{"use strict";d()});function fZ(e){return fm[e]??{}}async function gZ(e){if(fm[e])return fm[e];if(U7.has(e))return U7.get(e);let t=Le.get(o8e).then(o=>(fm[e]={...o?.[e]??{},...fm[e]??{}},U7.delete(e),fm[e]));return U7.set(e,t),t}function hZ(e,t){let o=fm[e]??{},r=pZ(o,t);if(JSON.stringify(r)===JSON.stringify(o))return;fm[e]=r;let a=(t8e.get(e)??Promise.resolve()).catch(()=>{}).then(()=>Le.update(o8e,s=>({...s??{},[e]:fm[e]})));t8e.set(e,a)}var o8e,fm,U7,t8e,n8e=h(()=>{"use strict";d();on();mZ();o8e="ChannelTabs_unreadFallbacks_v1",fm={},U7=new Map,t8e=new Map});var xZ={};Bt(xZ,{ActivityIcon:()=>KQ,CircleQuestionIcon:()=>v5,DiscoveryIcon:()=>h5,EnvelopeIcon:()=>g5,FriendsIcon:()=>Yv,ICYMIIcon:()=>WQ,NitroIcon:()=>x5,QuestIcon:()=>m5,ShopIcon:()=>f5,bookmarkFolderColors:()=>Ha,bookmarkPlaceholderName:()=>P7,clearBookmarkViewingMode:()=>O7,clearNavigationFlag:()=>YQ,clearStaleNavigationContext:()=>XQ,closeOtherTabs:()=>eZ,closeTab:()=>ig,closeTabsToTheLeft:()=>oZ,closeTabsToTheRight:()=>tZ,createTab:()=>Rs,ensureUnreadFallbackCountsLoaded:()=>gZ,getDiscordFolderIcon:()=>p5,getDiscordFolderIconNames:()=>qQ,getNotificationDotState:()=>dZ,getUnreadFallbackCounts:()=>fZ,handleChannelSwitch:()=>Hh,hasClosedTabs:()=>nZ,isBookmarkFolder:()=>hn,isNavigatingViaTab:()=>L7,isNavigationFromSource:()=>JQ,isTabSelected:()=>Tu,isViewingViaBookmarkMode:()=>w5,logger:()=>Zr,moveDraggedTabs:()=>rZ,moveToTab:()=>Ui,navigateToBookmark:()=>_7,openStartupTabs:()=>iZ,openedTabs:()=>nn,reconcileUnreadFallbackCache:()=>pZ,reopenClosedTab:()=>aZ,saveTabs:()=>F7,setNavigationSource:()=>b5,setOpenTab:()=>sZ,setUpdaterFunction:()=>lZ,settings:()=>je,switchChannel:()=>X5e,toggleCompactTab:()=>cZ,updateUnreadFallbackCounts:()=>hZ,useBookmarks:()=>jQ,useGhostTabs:()=>uZ});var tg=h(()=>{"use strict";d();H5e();D7();j5e();N7();V5e();e8e();n8e();mZ()});function De(){return Me.plugins[vZ]}function zi(e){return lo(e.map(t=>`plugins.${vZ}.${t}`)).plugins[vZ]}function gm(e){return e??L.getCurrentUser()?.id??null}var vZ,as=h(()=>{"use strict";d();j();C();vZ="Questify"});function Xv(e){return!0}var r8e,Kct,Qct,Zct,i8e,a8e,z7,$7,G7,H7,Hd,s8e,l8e,c8e,u8e,d8e,p8e,m8e,f8e,g8e,h8e,x8e,v8e,y8e,b8e,j7,q7,S8e,W7,K7,Q7,Z7,w8e,A8e,k8e,C8e,T8e,Yct,Jv,aRo,Vv,I8e,E8e,D8e,P8e,M8e,N8e,B8e,Y7,J7,X7,V7,R8e,L8e,O8e,F8e,_8e,ey,U8e,z8e,jd=h(()=>{"use strict";d();co();r8e=2842239,Kct=6105983,Qct=8334124,Zct=2368553,i8e="intense",a8e=!0,z7={enabled:!0,color:r8e},$7={enabled:!0,color:Kct},G7={enabled:!0,color:Qct},H7={enabled:!0,color:Zct},Hd=["UNCLAIMED","CLAIMED","IGNORED","EXPIRED"],s8e=r8e,l8e="always",c8e="both",u8e="open-quests",d8e="plugin-settings",p8e="context-menu",m8e=!1,f8e=!0,g8e=!1,h8e=!0,x8e=!1,v8e=!1,y8e=!0,b8e=!0,j7=!1,q7=!1,S8e={},W7=!1,K7=!1,Q7=!1,Z7=!1,w8e=!0,A8e=!0,k8e=!1,C8e="bop_message1",T8e=100,Yct=["WATCH_VIDEO","WATCH_VIDEO_ON_MOBILE","ACHIEVEMENT_IN_ACTIVITY","ACHIEVEMENT_IN_GAME","PLAY_ACTIVITY","PLAY_ON_DESKTOP","PLAY_ON_DESKTOP_V2","STREAM_ON_DESKTOP","PLAY_ON_PLAYSTATION","PLAY_ON_XBOX"],Jv=["PLAY_ON_DESKTOP","PLAY_ON_XBOX","PLAY_ON_PLAYSTATION","PLAY_ACTIVITY","WATCH_VIDEO","WATCH_VIDEO_ON_MOBILE","ACHIEVEMENT_IN_ACTIVITY"],aRo=new Set(["PLAY_ON_DESKTOP","PLAY_ON_PLAYSTATION","PLAY_ON_XBOX","PLAY_ACTIVITY"]);Vv=Object.fromEntries(Jv.map(e=>[e,!1])),I8e={...Object.fromEntries(Yct.map(e=>[e,!0])),1:!0,2:!0,3:!0,4:!0,5:!0},E8e=0,D8e=2700,P8e="discodo",M8e=100,N8e=null,B8e=100,Y7="Expiring ASC",J7="Claimed DESC",X7="Recent DESC",V7="Expiring DESC",R8e=!1,L8e=!0,O8e=!0,F8e="questify",_8e={},ey="questIDs",U8e={[ey]:[]},z8e={}});function $8e(e,t){let o=new Set(e.map(r=>r.id));return t.filter(r=>!o.has(r.id))}function jh(e,t){let o=e.config.rewardsConfig.rewards.some(n=>!!t[n.type]),r=Object.values(e.config.taskConfigV2.tasks).some(n=>!!t[n.type]);return o&&r}function qd(e){let t=e.config.messages.questName.trim().toUpperCase();return t.endsWith("QUEST")?t.slice(0,-5).trim():t}var ty=h(()=>{"use strict";d()});function ss(e){return kn.getQuest(e.id)??e}function tD(e){return e==="WATCH_VIDEO"||e==="WATCH_VIDEO_ON_MOBILE"}function eD(e,t){return e.config.taskConfigV2?.tasks[t]??null}function Vct(e){return eD(e,"WATCH_VIDEO")??eD(e,"WATCH_VIDEO_ON_MOBILE")}function G8e(e){let t=e.heartbeat?.lastBeatAt??e.updatedAt,o=t?new Date(t).getTime():0;return Number.isFinite(o)?o:0}function eut(e){let t=Object.entries(e.userStatus?.progress??{});t.sort(([,o],[,r])=>G8e(r)-G8e(o));for(let[o,r]of t){let n=eD(e,r.eventName??o);if(n)return n}return null}function tut(e){if(!e.config.taskConfigV2?.tasks)return null;let t=eut(e)??Vct(e);if(t)return t;for(let o of Xct){let r=eD(e,o);if(r)return r}return null}function ag(e,t){if(e.userStatus?.completedAt)return t.target;let o=e.userStatus?.progress;if(!o)return null;if(tD(t.type)){let r=o.WATCH_VIDEO?.value,n=o.WATCH_VIDEO_ON_MOBILE?.value;return r!==void 0||n!==void 0?Math.max(r??0,n??0):null}return o[t.type]?.value??null}function out(){return Array.from(De().ignoredQuestIDs[ey]??[])}function nut(){let e=sg(),t=e.filter(l=>l.status==="running"),o=t.length>0?t:e,r=null,n=1/0,a=null,s=1/0;for(let l of o){let c=kn.getQuest(l.questId);if(!c)continue;let u=l.progress??0,{adjusted:p}=T5(l.task),m=Math.max(0,p-u);l.questId===yZ&&(a=c,s=m),m=s-Jct?a:(yZ=r.id,r):(yZ=null,null)}function rut(){return Array.from(kn.quests.values()).filter(e=>!!e.userStatus?.completedAt&&Iu(e,out())==="UNCLAIMED").sort((e,t)=>{let o=new Date(e.userStatus?.completedAt??0).getTime();return new Date(t.userStatus?.completedAt??0).getTime()-o})[0]??null}function H8e(e){let t=zi(["disableQuestsEverything","disableAccountPanelPromo","disableAccountPanelQuestProgress"]);return t.disableQuestsEverything||t.disableAccountPanelPromo&&t.disableAccountPanelQuestProgress?null:t.disableAccountPanelQuestProgress?e:nut()??rut()??(t.disableAccountPanelPromo?null:e)}function j8e(e){let t=De();return!e||t.disableQuestsEverything||t.disableAccountPanelQuestProgress?!1:C5(ss(e))!==null}function bZ({quest:e,percentCompleteText:t}){if(!e)return null;let o=ss(e),r=C5(o),n=r?.task??tut(o);if(!n)return null;let a=r?T5(n).adjusted:n.target,s=r?.progress??ag(o,n);if(!a||s===null)return null;let l=Math.min(1,s/a);return t?{percentComplete:l,percentCompleteText:`${Math.floor(l*100)}%`}:{percentComplete:l}}function q8e(e){let t=bZ({quest:e,percentCompleteText:" "});return t?{completedRatio:t.percentComplete,completedRatioDisplay:t.percentCompleteText}:null}function Iu(e,t,o=!0){let r=e.userStatus?.completedAt,n=e.userStatus?.claimedAt,a=new Date(e.config.expiresAt){"use strict";d();co();C();as();jd();oy();ty();Jct=3,yZ=null,Xct=["WATCH_VIDEO","WATCH_VIDEO_ON_MOBILE","ACHIEVEMENT_IN_ACTIVITY","ACHIEVEMENT_IN_GAME","PLAY_ACTIVITY","PLAY_ON_DESKTOP","PLAY_ON_DESKTOP_V2","STREAM_ON_DESKTOP","PLAY_ON_PLAYSTATION","PLAY_ON_XBOX"]});function iut(e){return SZ.add(e),()=>SZ.delete(e)}function aut(){return K8e}function Lr(){K8e++,SZ.forEach(e=>e())}function Q8e(){return V.useSyncExternalStore(iut,aut)}var K8e,SZ,lg=h(()=>{"use strict";d();C();K8e=0,SZ=new Set});function sut(){let e=De(),t=e.questButtonIncludedTypes,o=Array.from(kn.quests.values()),r=Ls(),n=W8e(o,r,t);e.questButtonBadgeCount=n}function Ls(){let{ignoredQuestIDs:e}=De();return Array.from(e[ey]??[])}function I5(e){De().ignoredQuestIDs[ey]=e}function Eu(e){let t=Ls(),o=e??Array.from(kn.quests.values()),r=Array.from(kn.excludedQuests.values()),n=Array.from(new Set(t.filter(a=>o.some(s=>s.id===a)||r.some(s=>s.id===a))));I5(n),sut(),Lr()}function Y8e(){I5([]),Eu()}function J8e(e){I5(Array.from(new Set([...Ls(),e]))),Eu()}function X8e(e){I5(Ls().filter(t=>t!==e)),Eu()}function E5(e){return Ls().includes(e)}function V8e(){let e=new Set(Ls()),t=new Set;for(let o of kn.quests.values())(e.has(o.id)||Iu(o,Array.from(e),!1)==="UNCLAIMED")&&t.add(o.id);for(let o of kn.excludedQuests.values())e.has(o.id)&&t.add(o.id);I5(Array.from(t)),Eu()}var cg=h(()=>{"use strict";d();C();k5();as();jd();lg()});function P5(e){return{r:e>>16&255,g:e>>8&255,b:e&255}}function ny(e,t){return{r:Math.max(0,Math.min(255,e.r+t)),g:Math.max(0,Math.min(255,e.g+t)),b:Math.max(0,Math.min(255,e.b+t))}}function M5(e,t=.5){return(.299*e.r+.587*e.g+.114*e.b)/255=1e3){a=999,s=l[u];break}a=p,s=l[u]}let c=o?`<-${a}${s}`:`${a}${s}+`;return[c,D5(c,o)]}var hm,Ut,eAe,oD,tAe,wZ,rD,Zl=h(()=>{"use strict";d();we();le();hm="/quest-home",Ut=K("questify-"),eAe=0,oD=1,tAe=2;wZ=Ae("show","close","confirm"),rD={show:e=>wZ.show(e),close:()=>wZ.close(),confirm:e=>wZ.confirm(e)}});function lut(){return new Date().toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0}).replace(",","")}function iAe(e){return`[${lut()}] [${e}] `}function B5(e,t,...o){let r=o.length?iAe(t):iAe(t).trim();switch(e){case"debug":N5.debug(r,...o);return;case"error":N5.error(r,...o);return;case"info":N5.info(r,...o);return;case"warn":N5.warn(r,...o);return;default:N5.log(r,...o);return}}function aAe(e){e&&(At({title:"Quest Completed!",body:`The ${qd(e)} Quest has completed.`,dismissOnClick:!0,onClick:()=>Yt.transitionTo(`${hm}#${e.id}`)}),Qt.log("NOTIFY_QUEST_COMPLETION",{quest:e}))}var N5,Qt,R5=h(()=>{"use strict";d();Fa();He();E3();ty();Zl();N5=new ie("Questify");Qt={log(e,...t){B5("log",e,...t)},info(e,...t){B5("info",e,...t)},warn(e,...t){B5("warn",e,...t)},error(e,...t){B5("error",e,...t)},debug(e,...t){B5("debug",e,...t)}}});function ry(e){return Array.isArray(e)?e.map(ry):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,o])=>[t.replace(/_([a-z])/g,(r,n)=>n.toUpperCase()),ry(o)])):e}async function dut(e){try{let{body:t}=await mt.get({url:`/quests/${e}`,retries:3});return!cut({config:t})?(Qt.warn("FETCH_QUEST_BY_ID_INVALID_BODY",{questId:e,body:t}),null):uut(t)}catch(t){return Qt.warn("FETCH_QUEST_BY_ID_FAILED",{questId:e,error:t}),null}}async function put(e){let t=[];for(let[o,r]of e.entries()){o>0&&await lr(1e3);let n=await dut(r);n&&t.push(n)}return t}function iD(){return typeof AZ?.canOpenDevTools=="function"&&typeof AZ?.openDevTools=="function"}async function CZ(){if(!iD())return!1;let e=AZ;return await e.canOpenDevTools()?e.openDevTools():!1}function mut(e,t){let o=e[0],r=qd(o);return e.length===1?{title:t?"New Excluded Quest Detected!":"New Quest Detected!",body:t?`The excluded ${r} Quest was detected. ID: ${o.id}`:`The ${r} Quest is now available.`}:{title:t?"New Excluded Quests Detected!":"New Quests Detected!",body:t?`${e.length} new excluded Quests were detected. Check the console for their Quest IDs.`:`${e.length} new Quests are now available.`}}function sAe(e,t){if(e.length===0)return;let o=e[0],{title:r,body:n}=mut(e,t),a=t?iD()?CZ:void 0:()=>Yt.transitionTo(`${hm}#${o.id}`);At({title:r,body:n,dismissOnClick:!0,onClick:a}),Qt.log("NOTIFY_NEW_QUESTS",{excluded:t,quests:e})}async function aD(e){let t=De(),o=t.newQuestAlertSound,r=t.newQuestAlertVolume,n=t.newExcludedQuestAlertSound,a=t.newExcludedQuestAlertVolume,s=t.notifyOnNewExcludedQuests||!!n,l=Array.from(kn.quests.values()),c=new Set(Array.from(kn.excludedQuests.values()).map(E=>E.id)),u=t.questButtonIncludedTypes;await kZ(),await lr(1e3);let p=Array.from(kn.quests.values());if(!p||l.length===0)return p;let m=$8e(l,p),g=s?Array.from(kn.excludedQuests.values()).map(E=>E.id).filter(E=>!c.has(E)):[];if(m.length===0&&g.length===0)return p;let x=g.length>0?await put(g):[],v=m.filter(E=>jh(E,u)&&!E5(E.id)),y=x.filter(E=>jh(E,u)&&!E5(E.id)),A=!!o&&v.length>0,k=!!n&&y.length>0,w=t.notifyOnNewQuests&&v.length>0,I=t.notifyOnNewExcludedQuests&&y.length>0;return Qt.info("FETCH_AND_ALERT_QUESTS_NEW_QUESTS",{source:e,newQuestCount:m.length,newQuests:v,matchedQuestCount:v.length+y.length,...s?{newExcludedQuestCount:g.length,newExcludedQuests:y,matchedExcludedQuestCount:y.length}:{},shouldAlert:A,shouldAlertExcluded:k,shouldNotify:w,shouldNotifyExcluded:I}),A&&ii(o,{volume:Math.max(0,Math.min(100,r))}),k&&ii(n,{volume:Math.max(0,Math.min(100,a))}),w&&sAe(v,!1),I&&sAe(y,!0),p}var AZ,kZ,cut,uut,L5=h(()=>{"use strict";d();rl();Fa();Be();le();C();E3();as();cg();ty();R5();Zl();AZ=VencordNative?.pluginHelpers?.Questify;kZ=Oe("QUESTS_FETCH_CURRENT_QUESTS_BEGIN"),cut=Oe("config).with({config_version:"),uut=Oe("config),userStatus:null==")});function hut(){let e=De(),{newExcludedQuestAlertSound:t,newQuestAlertSound:o,questFetchInterval:r,notifyOnNewExcludedQuests:n,notifyOnNewQuests:a,questButtonDisplay:s,questButtonIndicator:l}=e,c=!e.disableQuestsEverything&&r>0,u=a||n||!!o||!!t,p=!1;return s==="always"?p=["pill","badge","both"].includes(l):s==="unclaimed"&&(p=!0),c&&(p||u)}function Du(e=!1){if(!hut()){sD();return}if(iy){if(!e)return;sD()}let{questFetchInterval:t}=De(),o=Math.min(Math.max(t,fut),gut);iy=setInterval(()=>{aD("AUTO_FETCH")},o*1e3),Qt.info("START_AUTO_FETCHING_QUESTS",{autoFetchIntervalID:iy,questFetchInterval:t,questFetchIntervalClamped:o})}function sD(){iy&&(clearInterval(iy),iy=null,Qt.info("STOP_AUTO_FETCHING_QUESTS"))}function O5(e,t){let{resumeQuestIDs:o}=De(),r=gm(t);if(!r){Qt.warn("RESET_QUESTS_TO_RESUME_NO_USER");return}let n=o[r];if(n){if(!e){delete o[r];return}o[r]={timestamp:n.timestamp,questIDs:n.questIDs.filter(a=>a!==e.id)}}}var iy,fut,gut,F5=h(()=>{"use strict";d();L5();R5();as();iy=null,fut=1800,gut=720*60});function yut(e,t){switch(e){case"CLAIMED":return t.questTileClaimedColor;case"UNCLAIMED":return t.questTileUnclaimedColor;case"IGNORED":return t.questTileIgnoredColor;case"EXPIRED":return t.questTileExpiredColor;default:return null}}function cAe(e,t){let o=Iu(e,Ls()),r=e.dummyColor??yut(o,t);return r?.enabled?r.color:null}function but(e){return e==="black"?Ut("quest-item-black-gradient"):e==="hide"?Ut("quest-item-hide-gradient"):e==="default"?Ut("quest-item-default-gradient"):Ut("quest-item-intense-gradient")}function dD(e,t,o){let r=zi(["disableQuestsEverything","ignoredQuestIDs","questTileUnclaimedColor","questTileClaimedColor","questTileIgnoredColor","questTileExpiredColor","questTileGradient"]),n=e.split(" ").filter(p=>p&&!xut.includes(p)),a={questTileUnclaimedColor:r.questTileUnclaimedColor,questTileClaimedColor:r.questTileClaimedColor,questTileIgnoredColor:r.questTileIgnoredColor,questTileExpiredColor:r.questTileExpiredColor},s=r.disableQuestsEverything?null:cAe(t,a);if(s==null)return n.join(" ");let l=[...n,Ut("quest-item-restyle")],c=o??r.questTileGradient,u=but(c);return u!=null&&l.push(u),c!=="black"&&c!=="hide"&&!M5(P5(s),.875)&&l.push(Ut("quest-item-contrast-logo")),l.join(" ")}function pD(e){let t=zi(["disableQuestsEverything","ignoredQuestIDs","questTileUnclaimedColor","questTileClaimedColor","questTileIgnoredColor","questTileExpiredColor"]),o={},r={questTileUnclaimedColor:t.questTileUnclaimedColor,questTileClaimedColor:t.questTileClaimedColor,questTileIgnoredColor:t.questTileIgnoredColor,questTileExpiredColor:t.questTileExpiredColor},n=e&&!t.disableQuestsEverything?cAe(e,r):null;if(n==null)return o;let a=P5(n),l=M5(a)?1:-1,c=ny(a,200*l),u=ny(a,150*l),p=ny(a,100*l),m=ny(a,50*l),g=ny(a,75*l);function x(v){return`rgb(${v.r}, ${v.g}, ${v.b})`}return o["--questify-color"]=x(a),o["--questify-quest-name"]=x(c),o["--questify-reward-title"]=x(u),o["--questify-reward-description"]=x(p),o["--questify-button-normal"]=x(m),o["--questify-button-hover"]=x(g),o}function cD(e){switch(e){case"Recent ASC":return(t,o)=>new Date(t.config.startsAt).getTime()-new Date(o.config.startsAt).getTime();case"Recent DESC":return(t,o)=>new Date(o.config.startsAt).getTime()-new Date(t.config.startsAt).getTime();case"Expiring ASC":return(t,o)=>new Date(t.config.expiresAt).getTime()-new Date(o.config.expiresAt).getTime();case"Expiring DESC":return(t,o)=>new Date(o.config.expiresAt).getTime()-new Date(t.config.expiresAt).getTime();case"Claimed ASC":return(t,o)=>new Date(t.userStatus?.claimedAt||0).getTime()-new Date(o.userStatus?.claimedAt||0).getTime();case"Claimed DESC":return(t,o)=>new Date(o.userStatus?.claimedAt||0).getTime()-new Date(t.userStatus?.claimedAt||0).getTime()}}function uD(e,t){return vut.has(e)?e:t}function Sut(e){let t=new Set(Hd),r=(Array.isArray(e)?e:Hd).filter(n=>t.has(n));for(let n of Hd)r.includes(n)||r.push(n);return r}function wut(e){for(let t of e){let o=t.config.taskConfigV2?.tasks,r=o?.WATCH_VIDEO_ON_MOBILE;if(!o||!r||o.WATCH_VIDEO)continue;let n={...r,type:"WATCH_VIDEO"},a={};for(let[s,l]of Object.entries(o))s==="WATCH_VIDEO_ON_MOBILE"&&(a.WATCH_VIDEO=n),a[s]=l;t.config.taskConfigV2.tasks=a,lAe.add(t.id)}}function uAe(e){return e?lAe.has(typeof e=="string"?e:e.id):!1}function dAe(e,t){let o=zi(["disableQuestsEverything","ignoredQuestIDs","makeMobileVideoQuestsDesktopCompatible","completeVideoQuestsQuicker","questOrder","unclaimedSubsort","claimedSubsort","ignoredSubsort","expiredSubsort","autoCompleteQuestTypes"]);if(o.disableQuestsEverything||((o.makeMobileVideoQuestsDesktopCompatible||o.autoCompleteQuestTypes.WATCH_VIDEO_ON_MOBILE)&&wut(e),t))return e;let r=Ls(),n={claimed:[],expired:[],ignored:[],unclaimed:[],unknown:[]};for(let s of e)switch(Iu(s,r)){case"CLAIMED":n.claimed.push(s);break;case"UNCLAIMED":n.unclaimed.push(s);break;case"EXPIRED":n.expired.push(s);break;case"IGNORED":n.ignored.push(s);break;default:n.unknown.push(s);break}let a=cD(uD(o.unclaimedSubsort,lD.unclaimed));return n.unclaimed.sort((s,l)=>{let c=!!s.userStatus?.completedAt,u=!!l.userStatus?.completedAt;return c!==u?c?1:-1:a(s,l)}),n.claimed.sort(cD(uD(o.claimedSubsort,lD.claimed))),n.ignored.sort(cD(uD(o.ignoredSubsort,lD.ignored))),n.expired.sort(cD(uD(o.expiredSubsort,lD.expired))),[...Sut(o.questOrder).flatMap(s=>n[s.toLowerCase()]),...n.unknown]}function pAe(){let e=De();return!e.disableQuestsEverything&&e.questTilePreload}function mAe(){let{rememberQuestPageSort:e,lastQuestPageSort:t}=De();return e?t:"questify"}function fAe(e){De().lastQuestPageSort=e||"questify"}function Aut({group:e,filter:t}){return JSON.stringify([e,t])}function gAe(){let{rememberQuestPageFilters:e,lastQuestPageFilters:t}=De();return e?Object.values(t).map(o=>JSON.parse(JSON.stringify(o))):null}function hAe(e){if(!e?.length){De().lastQuestPageFilters={};return}e.every(t=>t?.group&&t?.filter)&&(De().lastQuestPageFilters=JSON.parse(JSON.stringify(e)).reduce((t,o)=>(t[Aut(o)]=o,t),{}))}var lAe,xut,lD,vut,mD=h(()=>{"use strict";d();co();as();jd();cg();k5();Zl();lAe=new Set,xut=[Ut("quest-item-restyle"),Ut("quest-item-intense-gradient"),Ut("quest-item-default-gradient"),Ut("quest-item-black-gradient"),Ut("quest-item-hide-gradient"),Ut("quest-item-contrast-logo")],lD={unclaimed:Y7,claimed:J7,ignored:X7,expired:V7},vut=new Set(["Recent ASC","Recent DESC","Expiring ASC","Expiring DESC","Claimed ASC","Claimed DESC"])});function vAe(e){return e?["ACHIEVEMENT_IN_ACTIVITY","PLAY_ACTIVITY","WATCH_VIDEO"].includes(e)?xAe.START_QUEST:xAe.ACCEPT_QUEST:void 0}async function Dut(e){try{let t=await Tut(e),o=new URL(`https://${e}.discordsays.com/`);return o.searchParams.set("instance_id","example-cl-instance"),o.searchParams.set("platform","desktop"),o.searchParams.set("discord_proxy_ticket",t),o.toString()}catch(t){Qt.error("AUTO_COMPLETE_ACHIEVEMENT_PROXY_TICKET_FAILED",{appId:e,error:t})}}function Put(e){return{questContent:e.analyticsCtxQuestContent,questContentCTA:vAe(e.taskType),sourceQuestContent:e.analyticsCtxSourceQuestContent,sourceQuestContentCTA:vAe(e.taskType),questContentPosition:e.analyticsCtxQuestContentPosition,questContentRowIndex:e.analyticsCtxQuestContentRowIndex}}function sy(e,t){return t?.aborted?Promise.reject(new Error("Auto-complete aborted.")):new Promise((o,r)=>{let n=setTimeout(()=>{t?.removeEventListener("abort",a),o()},e);function a(){clearTimeout(n),t?.removeEventListener("abort",a),r(new Error("Auto-complete aborted."))}t?.addEventListener("abort",a,{once:!0})})}function Pu(e,t=6){return Number(e.toFixed(t))}function TZ(e,t){return Pu(e+Math.random()*(t-e))}function CAe(){AAe=!0}function TAe(){kAe=!0}function Lut(){return{videoProgress:AAe,heartbeat:kAe}}function Out(){bAe||(bAe=!0,ne("AutoComplete is broken. A fix will be implemented shortly.",D.Type.FAILURE))}function z5(){return Jv.some(e=>De().autoCompleteQuestTypes[e])}function IAe(e=!1){let t=Lut();return t.videoProgress&&t.heartbeat?!0:(e&&(Out(),Qt.warn("AUTO_COMPLETE_STACK_TRACE_PATCH_MISSING",t)),!1)}function EAe(e){return Ci.get(e.id)?.progress??null}function C5(e){let t=typeof e=="string"?e:e.id;return Ci.get(t)??null}function T5(e){let t=e.target;return{raw:t,adjusted:Math.max(0,t-(tD(e.type)&&De().completeVideoQuestsQuicker?Mut:0))}}function Fut(e){let t=e.config.taskConfigV2?.tasks;return t?Jv.flatMap(o=>{let r=t[o];return r?[r]:[]}):[]}function DAe(e){switch(e.type){case"WATCH_VIDEO":case"WATCH_VIDEO_ON_MOBILE":return"watch";case"PLAY_ON_DESKTOP":case"PLAY_ON_XBOX":case"PLAY_ON_PLAYSTATION":case"PLAY_ACTIVITY":return"play";case"ACHIEVEMENT_IN_ACTIVITY":return"achievement";default:return null}}function _ut(e,t){return e.type==="WATCH_VIDEO"&&uAe(t)?"WATCH_VIDEO_ON_MOBILE":e.type}function Uut(e,t){let o=_ut(t,e),r=Xv(o),n=De().autoCompleteQuestTypes[o]===!0;return r&&n&&DAe(t)!=null}function DZ(e){for(let t of Fut(e)){let o=DAe(t);if(o&&Uut(e,t))return{task:t,kind:o}}return null}function PZ(){return Array.from(Ci.keys())}function PAe(e){return Date.now()-e>wAe}function xm(e=PZ()){let t=gm();if(!t){Qt.warn("AUTO_COMPLETE_RESUME_NO_USER");return}if(!De().resumeInterruptedQuests||e.length===0){delete De().resumeQuestIDs[t];return}De().resumeQuestIDs[t]={timestamp:Date.now(),questIDs:e}}function zut(e,t,o){return{questId:e.id,questName:qd(e),task:t,kind:o,status:"queued",progress:ag(e,t),abortController:new AbortController,progressInterval:null,rerenderInterval:null}}function hD(e){e.progressInterval&&(clearInterval(e.progressInterval),e.progressInterval=null),e.rerenderInterval&&(clearInterval(e.rerenderInterval),e.rerenderInterval=null)}function Mu(e){return Ci.get(e.questId)===e&&!e.abortController.signal.aborted}function IZ(e,t=!1){let o=Math.max(0,Math.floor(e)),r=Math.floor(o/60),n=o%60;return t?o>=60?`${r}m ${n}s`:`${n}s`:`${String(r).padStart(2,"0")}:${String(n).padStart(2,"0")}`}function $ut(e){if(!De().resumeInterruptedQuests)return!1;let t=gm(),o=t?De().resumeQuestIDs[t]:null;return!!(o&&!PAe(o.timestamp)&&o.questIDs.includes(e))}function Gut(e){let o=Array.from(Ci.values()).filter(r=>r.status==="queued").map(r=>r.questId).indexOf(e);return o===-1?null:o+1}function MAe(e,t={}){e=ss(e);let o=Ci.get(e.id),r=o??DZ(e);if(!r)return[null,"UNENROLLED"];let{task:n,kind:a}=r,s=T5(n).adjusted,l=e.userStatus?.enrolledAt?new Date(e.userStatus.enrolledAt):null,c=o?.progress??ag(e,n)??0,u=!o&&l&&tD(n.type)&&De().completeVideoQuestsQuicker?Math.max(0,(Date.now()-l.getTime())/1e3):0,p=Math.min(s,Math.max(c,u)),m=Math.max(0,s-p),g=IZ(m,t.prepositional),x=a==="achievement"||m<=1;if(o?.status==="running")return[x?"Completing...":`Completing ${t.prepositional?`in ${g}`:`(${g})`}`,"COMPLETING"];if(o?.status==="queued")return[`Queued (${Gut(e.id)??"?"})`,"QUEUED"];if(l){if($ut(e.id))return["Resuming...","QUEUED"];let v=p>=1;return[x?"Complete Now":`${v?"Resume":"Complete"} (${IZ(m)})`,"ACCEPTED"]}return[x?"Complete Now":`Complete (${IZ(s)})`,"UNENROLLED"]}function MZ(e){if(!ly(e.quest))return null;let[t,o]=MAe(e.quest);return t?{icon:void 0,text:t,onClick:async()=>{o==="UNENROLLED"?(e.preClickCallback?.(),(await LAe(e.quest,{analytics:e,method:"native"})).type==="success"&&(dg(e.quest,{force:!0,source:"manual"}),Lr())):o==="COMPLETING"?(pg(e.quest,{manual:!0,preserveResume:!1,terminalHeartbeat:!0}),Lr()):o==="QUEUED"?(pg(e.quest,{manual:!0,preserveResume:!1,terminalHeartbeat:!0}),Lr()):o==="ACCEPTED"&&(dg(e.quest,{force:!0,source:"manual"}),Lr())}}:null}function NAe(e){e=ss(e);let t=!!e.userStatus?.completedAt&&Iu(e,Ls())==="UNCLAIMED",[o]=MAe(e,{prepositional:!0}),n=(t?"Completed":null)??o;if(!n)return null;let a=e.config.rewardsConfig.rewards[0]??null,s=Eut(e.config,L.getCurrentUser())??0;return s>0?`${n} for ${s} Orbs.`:a?.messages?.nameWithArticle?`${n} for ${a.messages.nameWithArticle}.`:`${n} for an unrecognized reward.`}function ly(e){return!IAe()||e.userStatus?.completedAt||Iu(e,Ls())!=="UNCLAIMED"?!1:DZ(e)!=null}function BAe(e){let t=e,o=t.body?.retry_after??t.body?.retryAfter??t.retry_after??t.retryAfter;return typeof o=="number"&&Number.isFinite(o)&&o>0?o:null}function Hut(e){return e.status===429||BAe(e)!==null}function RAe(){return _5<=Date.now()?(_5=0,null):(_5-Date.now())/1e3}function NZ(){return RAe()!==null}function jut(e){e!==null&&(_5=Math.max(_5,Date.now()+e*1e3))}function qut(e,t){let o=t.type==="rate_limited"?" due to rate limits":"";ne(`Enrollment in ${qd(e)} Quest failed${o}.`,D.Type.FAILURE)}async function Wut(e){e=ss(e);let t=gm();if(e.userStatus?.enrolledAt)return{type:"success"};let o=RAe();if(o!==null)return{type:"rate_limited",retryAfter:o};Q.dispatch({type:"QUESTS_ENROLL_BEGIN",questId:e.id});try{let r=await mt.post({url:`/quests/${e.id}/enroll`,body:{location:11}});return gm()!==t?{type:"cancelled"}:(Q.dispatch({type:"QUESTS_ENROLL_SUCCESS",enrolledQuestUserStatus:ry(r.body)}),{type:"success"})}catch(r){if(gm()!==t)return{type:"cancelled"};if(Q.dispatch({type:"QUESTS_ENROLL_FAILURE",questId:e.id}),Hut(r)){let n=BAe(r);return jut(n),{type:"rate_limited",retryAfter:n}}return{type:"unknown_error",error:r}}}async function LAe(e,t={}){if(e=ss(e),e.userStatus?.enrolledAt)return{type:"success"};let o=t.method==="manual"?await Wut(e):await Iut(e.id,Put(t.analytics??{}));if(o.type==="cancelled")return{type:"cancelled"};if(o.type==="success"||o.type==="previous_in_flight_request")return{type:"success"};let r=o.type==="rate_limited"?{type:"rate_limited",retryAfter:o.retryAfter}:{type:"unknown_error"};return qut(e,r),r}function SAe(e){let t=new Date(e.config.expiresAt).getTime();return Number.isFinite(t)?t:1/0}function BZ(){let t=De().questButtonIncludedTypes;return Array.from(kn.quests.values()).filter(o=>!Ci.has(o.id)).filter(o=>jh(o,t)).filter(ly).sort((o,r)=>SAe(o)-SAe(r))}function ug(e,t){let o=typeof e=="string"?e:e.id,r=Ci.get(o);return r?(r.progress=t==null?null:Math.max(0,t),!0):!1}async function RZ(e,t,o=6e4,r=500){let n=Date.now();if(e=ss(e),e.userStatus?.enrolledAt)return e;if(e.userStatus?.completedAt)return null;for(;Mu(t)&&!e.userStatus?.enrolledAt&&Date.now()-n{};return{promise:new Promise(a=>{let s="QUESTS_SEND_HEARTBEAT_SUCCESS",l="QUESTS_SEND_HEARTBEAT_FAILURE",c=setTimeout(()=>{r(),a({type:"timeout"})},t);r=()=>{o||(o=!0,clearTimeout(c),Q.unsubscribe(s,u),Q.unsubscribe(l,p))};function u(m){m.questId===e&&(r(),a({type:"success",userStatus:m.userStatus??null}))}function p(m){m.questId===e&&(r(),a({type:"failure",error:m.error}))}Q.subscribe(s,u),Q.subscribe(l,p)}),cancel:r}}function Qut(e,t){return e?.progress?.[t.type]?.value??null}async function gD(e,t,o,r={}){if(e=ss(e),!e.userStatus?.enrolledAt)return Qt.warn("AUTO_COMPLETE_PLAY_UNENROLLED",{questId:e.id,questName:t.questName}),{progress:null,completed:!1};if(e.userStatus?.completedAt&&!o)return{progress:ag(e,t.task),completed:!0};let n=r.attempts??1,a=r.delay??2500,s=r.timeout??1e4,l=r.applicationId??t.task.applications?.[0]?.id;for(let c=1;c<=n;c++){try{let u=Kut(e.id,s);try{await Cut({questId:e.id,streamKey:r.streamKey,applicationId:l,terminal:o})}catch(m){throw u.cancel(),m}let p=await u.promise;if(p.type==="failure")Qt.error("AUTO_COMPLETE_PLAY_HEARTBEAT_FAILURE",{questId:e.id,questName:t.questName,attempt:c,attempts:n,error:p.error});else if(p.type==="timeout")Qt.warn("AUTO_COMPLETE_PLAY_HEARTBEAT_TIMEOUT",{questId:e.id,questName:t.questName,attempt:c,attempts:n,timeout:s});else{let m=ss(e),g=Qut(p.userStatus,t.task)??ag(m,t.task)??0,x=!!p.userStatus?.completedAt||!!m.userStatus?.completedAt;return ug(e,o?g:Math.max(g,t.progress??0)),Qt.info("AUTO_COMPLETE_PLAY_HEARTBEAT_SENT",{questId:e.id,questName:t.questName,progress:g,target:t.task.target,terminal:o}),{progress:g,completed:x}}}catch(u){Qt.error("AUTO_COMPLETE_PLAY_HEARTBEAT_ERROR",{questId:e.id,questName:t.questName,attempt:c,attempts:n,error:u})}c{if(!Mu(e)){hD(e);return}Lr()},1e3)}async function Zut(e,t,o){if(e=await RZ(e,t,6e4,500)??e,!Mu(t)||!e.userStatus?.enrolledAt)return!1;let r=o.raw,n=o.adjusted,a=new Date(e.userStatus.enrolledAt),s=ag(e,t.task)??0,l=De().completeVideoQuestsQuicker?Pu(Math.max(1,(Date.now()-a.getTime())/1e3)):Math.max(0,s),c=Pu(Math.min(n,l)),u=Pu(Math.min(r,l)),p=Math.floor(u),m=0,g=u<=0,x=performance.now();ug(e,c),OAe(t);let v=Math.max(0,n-c),y=Math.max(0,r-u),A=v>0?y/v:0;if(Qt.info("AUTO_COMPLETE_VIDEO_STARTED",{questId:e.id,questName:t.questName,timeRemaining:v,target:o}),v<=0)return fD(e,t,Math.min(r,p),{attempts:3,displayProgress:n});if(u>0){let k=Pu(Math.min(r,u));if(!await fD(e,t,k,{attempts:3,displayProgress:c})||!Mu(t))return!1;g=!0,m=Pu(k+TZ(6,8))}for(;Mu(t)&&c=m&&c{!Mu(t)||t.progress==null||ug(t.questId,Math.min(r,t.progress+1))},1e3),Qt.info("AUTO_COMPLETE_PLAY_STARTED",{questId:e.id,questName:t.questName,remaining:Math.max(0,r-n),target:o});let l=await gD(e,t,!1,{attempts:3,delay:2500});if(l.progress===null)return!1;for(;Mu(t);){if(l.completed||l.progress>=r)return await gD(ss(e),t,!0,{attempts:3,delay:2500}),!0;let c=Math.max(0,(r-l.progress)*1e3);if(await sy(c<=a?c+s:a,t.abortController.signal),l=await gD(e,t,!1,{attempts:3,delay:2500}),l.progress===null)return!1}return!1}async function Jut(e,t,o){if(e=await RZ(e,t,6e4,500)??e,!Mu(t)||!e.userStatus?.enrolledAt)return!1;if(!yAe?.complete)return Qt.error("AUTO_COMPLETE_ACHIEVEMENT_NATIVE_MISSING",{questId:e.id,questName:t.questName}),!1;let r=t.task.applications?.[0]?.id;if(!r)return Qt.warn("AUTO_COMPLETE_ACHIEVEMENT_APP_MISSING",{questId:e.id,questName:t.questName}),!1;ug(e,0);let n=null;try{let c=(await mt.post({url:`/oauth2/authorize?client_id=${r}&response_type=code&scope=identify%20applications.entitlements&state=`,body:{authorize:!0}}))?.body?.location;n=c?new URL(c).searchParams.get("code"):null}catch(l){return Qt.error("AUTO_COMPLETE_ACHIEVEMENT_AUTH_FAILED",{questId:e.id,questName:t.questName,error:l}),!1}if(!n)return Qt.warn("AUTO_COMPLETE_ACHIEVEMENT_AUTH_CODE_MISSING",{questId:e.id,questName:t.questName}),!1;let a=await yAe.complete(r,n,o.adjusted,e.id,await Dut(r)),s=a.success===!0;ug(e,s?o.adjusted:0);try{let l=zS.getNewestTokenForApplication(r)?.id;l&&await mt.del({url:`/oauth2/tokens/${l}`})}catch(l){Qt.error("AUTO_COMPLETE_ACHIEVEMENT_DEAUTH_FAILED",{questId:e.id,questName:t.questName,error:l})}return s||Qt.error("AUTO_COMPLETE_ACHIEVEMENT_FAILED",{questId:e.id,questName:t.questName,error:a.error}),s}async function Xut(e,t){let o=T5(t.task);switch(Qt.info("AUTO_COMPLETE_RUN_START",{questId:e.id,questName:t.questName,kind:t.kind,taskType:t.task.type,target:o}),t.kind){case"watch":return Zut(e,t,o);case"play":return Yut(e,t,o);case"achievement":return Jut(e,t,o)}}function Vut(){return Array.from(Ci.values()).some(e=>e.status==="running")}async function FAe(e,t){t.status="running",xm();try{let o=await Xut(e,t);if(!Mu(t))return;o?Qt.info("AUTO_COMPLETE_COMPLETED",{questId:t.questId,questName:t.questName}):Qt.warn("AUTO_COMPLETE_FAILED",{questId:t.questId,questName:t.questName})}catch(o){t.abortController.signal.aborted?Qt.warn("AUTO_COMPLETE_RUN_ABORTED",{questId:t.questId,questName:t.questName}):Qt.error("AUTO_COMPLETE_RUN_ERROR",{questId:t.questId,questName:t.questName,error:o})}finally{if(hD(t),Ci.get(t.questId)!==t)return;Ci.delete(t.questId),O5(e),xm(),!De().autoCompleteQuestsSimultaneously&&!U5&&xD()}}function xD(){if(U5||De().autoCompleteQuestsSimultaneously||Vut())return;let e=Array.from(Ci.values()).find(o=>o.status==="queued");if(!e)return;let t=kn.getQuest(e.questId);if(!t){Ci.delete(e.questId),xm(),xD();return}FAe(t,e)}function dg(e,t={}){let{force:o=!1,source:r="manual"}=t,n=qd(e),a=Ci.get(e.id);if(!IAe(!0))return!1;if(a)return!0;if(o)EZ.delete(e.id);else if(EZ.has(e.id))return Qt.warn("AUTO_COMPLETE_MANUALLY_STOPPED",{questId:e.id,questName:n}),!1;if(e.userStatus?.completedAt||Iu(e,Ls())!=="UNCLAIMED")return Qt.warn("AUTO_COMPLETE_INCOMPATIBLE_STATUS",{questId:e.id,questName:n}),!1;let s=DZ(e);if(!s)return Qt.warn("AUTO_COMPLETE_INCOMPATIBLE_TASKS",{questId:e.id,questName:n}),!1;let l=zut(e,s.task,s.kind);return Ci.set(e.id,l),De().autoCompleteQuestsSimultaneously?FAe(e,l):(xm(),xD()),Qt.info("AUTO_COMPLETE_STARTED",{questId:e.id,questName:n,source:r,mode:De().autoCompleteQuestsSimultaneously?"simultaneous":"queue",taskType:l.task.type}),!0}function _Ae(){return ay!==null}function edt(){ay?.abort()}async function UAe(){if(ay!==null||De().autoCompleteQuestsSimultaneously||NZ())return 0;let e=new AbortController,{signal:t}=e;ay=e;try{let o=0,r=0,n=0,a=0,s=!0;for(let l of BZ()){if(t.aborted)break;if(!s)try{await sy(1e3,t)}catch(p){if(t.aborted)break;throw p}s=!1;let c=ss(l);if(!c.userStatus?.enrolledAt){if(r>=Nut)break;r++}let u=await LAe(c,{method:"manual"});if(t.aborted)break;if(u.type!=="success"){if(u.type==="rate_limited"){if(n++,n>=Rut)break}else if(a++,a>=But)break;continue}dg(ss(c),{force:!0,source:"manual"})&&o++}return o}finally{ay===e&&(ay=null)}}function pg(e,t={}){let{manual:o=!0,preserveResume:r=!1,terminalHeartbeat:n=!1}=t,a=typeof e=="string"?e:e.id,s=Ci.get(a),l=r?PZ():void 0;if(o&&EZ.add(a),!s)return xm(l),!1;hD(s),s.abortController.abort(),Ci.delete(a);let c=typeof e=="string"?kn.getQuest(a):e;return n&&c&&s.kind==="play"&&s.status==="running"&&gD(ss(c),s,!0,{attempts:1}),r||O5(c),xm(l),!De().autoCompleteQuestsSimultaneously&&!U5&&xD(),Qt.info("AUTO_COMPLETE_STOPPED",{questId:a,manual:o,preserveResume:r,terminalHeartbeat:n}),!0}function vD(e={}){edt();let t=e.preserveResume?PZ():void 0;U5=!0;try{for(let o of Array.from(Ci.keys()))pg(o,e);xm(t)}finally{U5=!1}}function zAe(e){let t=!1;for(let o of Array.from(Ci.values())){let r=kn.getQuest(o.questId);o.kind==="play"&&r&&o.task.applications?.some(({id:n})=>e.includes(n))&&(pg(r,{manual:!1,preserveResume:!1}),t=!0)}return t&&Lr(),t}function $Ae(){if(!De().resumeInterruptedQuests)return;let e=gm(),t=e?De().resumeQuestIDs[e]:null;if(!e||!t?.questIDs.length)return;if(PAe(t.timestamp)){delete De().resumeQuestIDs[e],Qt.info("AUTO_COMPLETE_RESUME_EXPIRED",{userId:e,timestamp:t.timestamp,maxAge:wAe});return}let o=Array.from(new Set(t.questIDs)),r=o.map(s=>kn.getQuest(s)).filter(s=>s!=null);if(r.length===0){xm();return}Qt.info("AUTO_COMPLETE_RESUME_INTERRUPTED",{userId:e,timestamp:t.timestamp,questIDs:o});let n=new Set;for(let s of r)dg(s,{force:!0,source:"resume"})&&n.add(s.id);xm();let a=o.filter(s=>!n.has(s));a.length>0&&Qt.warn("AUTO_COMPLETE_RESUME_DROPPED_QUESTS",{userId:e,questIDs:a})}function sg(){return Array.from(Ci.values())}var kut,Cut,Tut,Iut,Eut,xAe,yAe,Mut,wAe,Nut,But,Rut,Ci,EZ,_5,ay,U5,AAe,kAe,bAe,oy=h(()=>{"use strict";d();co();le();C();as();jd();F5();cg();lg();L5();ty();R5();k5();mD();kut=Oe(".QUESTS_VIDEO_PROGRESS("),Cut=Oe(".QUESTS_HEARTBEAT("),Tut=Oe("APPLICATION_PROXY_TICKET","body.ticket"),Iut=Oe('type:"QUESTS_ENROLL_BEGIN",'),Eut=Oe("premiumOrbQuantity??","orbQuantity"),xAe=qn(e=>!!e?.START_QUEST&&!!e?.ACCEPT_QUEST);yAe=VencordNative?.pluginHelpers?.Questify,Mut=24,wAe=3600*1e3,Nut=25,But=3,Rut=1,Ci=new Map,EZ=new Set,_5=0,ay=null,U5=!1,AAe=!1,kAe=!1,bAe=!1});function jAe(){let{showBookmarkBar:e}=je.use(["showBookmarkBar"]);return i(P.Menu,{navId:"channeltabs-context",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"ChannelTabs Context Menu"},i(P.MenuGroup,null,i(P.MenuCheckboxItem,{checked:e,id:"show-bookmark-bar",label:"Bookmark Bar",action:()=>{je.store.showBookmarkBar=!je.store.showBookmarkBar}})))}function qAe({color:e,iconName:t}){let o=p5(t),r=cy(e),n=t==="CircleShieldIcon"?"var(--background-base-low)":r,a=16;return i("div",{style:{alignItems:"center",color:r,display:"flex",justifyContent:"center",lineHeight:0}},o?i(o,{height:a,width:a,color:r,fill:n,style:{transform:"scale(0.6666667)",transformOrigin:"center"}}):i("svg",{height:16,width:16,viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M20 7H12L10.553 5.106C10.214 4.428 9.521 4 8.764 4H3C2.447 4 2 4.447 2 5V19C2 20.104 2.895 21 4 21H20C21.104 21 22 20.104 22 19V9C22 7.896 21.104 7 20 7Z"})))}function WAe({name:e,color:t,iconName:o}){return i("div",{style:{alignItems:"center",border:"1px solid var(--border-subtle)",borderRadius:8,display:"inline-flex",gap:8,marginTop:12,maxWidth:"100%",padding:"6px 10px"}},i(qAe,{color:t,iconName:o}),i(Y,{size:"sm"},e.trim()||"Folder"))}function odt({modalProps:e,modalKey:t,name:o,color:r,iconName:n,onSelect:a,onColorChange:s}){let[l,c]=T(""),[u,p]=T(cy(r)),m=Ne(()=>qQ(),[]),g=Ne(()=>{let x=l.trim().toLowerCase();return x?m.filter(v=>v.toLowerCase().includes(x)):m},[m,l]);return i(be,{...e,size:"sm",title:i(Y,{size:"lg",weight:"semibold"},"Choose Folder Icon"),actions:[{text:"Close",variant:"secondary",onClick:()=>Lo(t)}]},i(oe,{className:z.top16},"Preview"),i(WAe,{name:o,color:u,iconName:n}),i(oe,{className:z.top16},"Icon Color"),i("div",{className:z.top8},i(Pr,{color:GAe(u),onChange:x=>{let v=HAe(x);p(v),s(v)},showEyeDropper:!1})),i(oe,{className:z.top16},"Search"),i(Te,{value:l,placeholder:`Search ${m.length} icons...`,onChange:c}),i("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fill, minmax(52px, 1fr))",marginTop:16,maxHeight:320,overflowY:"auto"}},g.map(x=>i("button",{key:x,onClick:()=>{a(x),Lo(t)},style:{alignItems:"center",background:x===n?"var(--background-modifier-hover)":"var(--background-secondary)",border:"1px solid var(--border-subtle)",borderRadius:8,cursor:"pointer",display:"flex",height:52,justifyContent:"center",padding:0},title:x,type:"button"},i(qAe,{color:u,iconName:x})))))}function KAe({name:e,setName:t,color:o,setColor:r,iconName:n,setIconName:a,placeholder:s="Folder"}){return i(f,null,i(oe,{className:z.top16},"Folder Name"),i(Te,{value:e===s?void 0:e,placeholder:s,onChange:t}),i(oe,{className:z.top16},"Folder Color"),i("div",{className:z.top8},i(Pr,{color:GAe(o),onChange:l=>r(HAe(l)),showEyeDropper:!1})),i(oe,{className:z.top16},"Folder Icon"),i(WAe,{name:e,color:o,iconName:n}),i(ue,{className:z.top8,onClick:()=>{let l=ce(c=>i(odt,{modalProps:c,modalKey:l,name:e,color:o,iconName:n,onSelect:a,onColorChange:r}))}},"Choose Icon"),n&&i(ue,{className:z.top8,color:ue.Colors.TRANSPARENT,look:ue.Looks.FILLED,onClick:()=>a(void 0)},"Use Default Icon"))}function LZ({modalProps:e,modalKey:t,bookmark:o,onSave:r}){let[n,a]=T(o.name),[s,l]=T(hn(o)?cy(o.iconColor):Ha.Black),[c,u]=T(hn(o)?o.iconName:void 0),p=P7(o);return i(be,{...e,size:"sm",title:i(Y,{size:"lg",weight:"semibold"},"Edit Bookmark"),actions:[{text:"Save",variant:"primary",onClick:()=>r(n||p,s,c)},{text:"Cancel",variant:"secondary",onClick:()=>Lo(t)}]},hn(o)?i(KAe,{name:n,setName:a,color:s,setColor:l,iconName:c,setIconName:u,placeholder:p}):i(f,null,i(oe,{className:z.top16},"Bookmark Name"),i(Te,{value:n===p?void 0:n,placeholder:p,onChange:a})))}function ndt({modalProps:e,modalKey:t,bookmarks:o,onSave:r}){let[n,a]=T(-1),[s,l]=T(""),[c,u]=T(Ha.Black),[p,m]=T();return i(be,{...e,size:"sm",title:i(Y,{size:"lg",weight:"semibold"},"Add Bookmark to Folder"),actions:[{text:"Save",variant:"primary",onClick:()=>r(n,s,c,p)},{text:"Cancel",variant:"secondary",onClick:()=>Lo(t)}]},i(oe,{className:z.top16},"Select a folder"),i(qt,{options:[...Object.entries(o).filter(([,g])=>hn(g)).map(([g,x])=>({label:x.name,value:parseInt(g,10)})),{label:"Create one",value:-1,default:!0}],isSelected:g=>g===n,select:a,serialize:String}),n===-1&&i(KAe,{name:s,setName:l,color:c,setColor:u,iconName:p,setIconName:m}))}function rdt({modalProps:e,modalKey:t,onConfirm:o}){return i(be,{...e,size:"sm",title:i(Y,{size:"lg",weight:"semibold"},"Are you sure?"),actions:[{text:"Delete",variant:"critical-primary",onClick:o},{text:"Cancel",variant:"secondary",onClick:()=>Lo(t)}]},i(U,{className:z.top16},"Deleting a bookmark folder will also delete all bookmarks within it."))}function QAe({bookmarks:e,index:t,methods:o}){let{showBookmarkBar:r,bookmarkNotificationDot:n}=je.use(["showBookmarkBar","bookmarkNotificationDot"]),a=e[t],s=hn(a);return i(P.Menu,{navId:"channeltabs-bookmark-context",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"ChannelTabs Bookmark Context Menu"},i(P.MenuGroup,null,n&&!s&&i(P.MenuItem,{id:"mark-as-read",icon:s1,leadingAccessory:{type:"icon",icon:s1},label:Xe("MARK_AS_READ"),disabled:!ti.hasUnread(a.channelId),action:()=>w1.ackChannel(W.getChannel(a.channelId))}),s?i(P.MenuItem,{id:"open-all-in-folder",label:"Open All Bookmarks",icon:a1,leadingAccessory:{type:"icon",icon:a1},action:()=>a.bookmarks.forEach(l=>Rs(l))}):i(P.MenuItem,{id:"open-in-tab",label:"Open in New Tab",icon:gn,leadingAccessory:{type:"icon",icon:gn},action:()=>Rs(a)})),i(P.MenuGroup,null,i(P.MenuItem,{id:"edit-bookmark",label:"Edit Bookmark",icon:Vi,leadingAccessory:{type:"icon",icon:Vi},action:()=>{let l=ce(c=>i(LZ,{modalProps:c,modalKey:l,bookmark:a,onSave:(u,p,m)=>{o.editBookmark(t,{name:u,...s&&{iconColor:cy(p),iconName:m}}),Lo(l)}}))}}),i(P.MenuItem,{id:"delete-bookmark",label:"Delete Bookmark",icon:l3,leadingAccessory:{type:"icon",icon:l3},action:()=>{if(s){let l=ce(c=>i(rdt,{modalProps:c,modalKey:l,onConfirm:()=>{o.deleteBookmark(t),Lo(l)}}))}else o.deleteBookmark(t)}}),i(P.MenuItem,{id:"add-to-folder",label:"Add Bookmark to Folder",icon:Vi,leadingAccessory:{type:"icon",icon:Vi},disabled:s,action:()=>{let l=ce(c=>i(ndt,{modalProps:c,modalKey:l,bookmarks:e,onSave:(u,p,m,g)=>{if(u===-1){let x=o.addFolder(p,cy(m),g);o.addBookmark(a,x)}else o.addBookmark(a,u);o.deleteBookmark(e.indexOf(a)),Lo(l)}}))}})),i(P.MenuGroup,null,i(P.MenuCheckboxItem,{checked:r,id:"show-bookmark-bar",label:"Bookmark Bar",icon:Vm,leadingAccessory:{type:"icon",icon:Vm},action:()=>{je.store.showBookmarkBar=!je.store.showBookmarkBar}})))}function ZAe({tab:e}){let t=W.getChannel(e.channelId),[o,r]=T(e.compact),{showBookmarkBar:n}=je.use(["showBookmarkBar"]);return i(P.Menu,{navId:"channeltabs-tab-context",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"ChannelTabs Tab Context Menu"},i(P.MenuGroup,null,t&&i(P.MenuItem,{id:"mark-as-read",label:Xe("MARK_AS_READ"),icon:s1,leadingAccessory:{type:"icon",icon:s1},disabled:!ti.hasUnread(t.id),action:()=>w1.ackChannel(t)}),i(P.MenuCheckboxItem,{checked:o,id:"toggle-compact-tab",label:"Compact",icon:s3,leadingAccessory:{type:"icon",icon:s3},action:()=>{r(a=>!a),cZ(e.id)}})),nn.length!==1&&i(P.MenuGroup,null,i(P.MenuItem,{id:"close-tab",label:"Close Tab",icon:nd,leadingAccessory:{type:"icon",icon:nd},action:()=>ig(e.id)}),i(P.MenuItem,{id:"close-other-tabs",label:"Close Other Tabs",icon:nd,leadingAccessory:{type:"icon",icon:nd},action:()=>eZ(e.id)}),i(P.MenuItem,{id:"close-right-tabs",label:"Close Tabs to the Right",icon:nd,leadingAccessory:{type:"icon",icon:nd},disabled:nn.indexOf(e)===nn.length-1,action:()=>tZ(e.id)}),i(P.MenuItem,{id:"close-left-tabs",label:"Close Tabs to the Left",icon:nd,leadingAccessory:{type:"icon",icon:nd},disabled:nn.indexOf(e)===0,action:()=>oZ(e.id)}),i(P.MenuItem,{id:"reopen-closed-tab",label:"Reopen Closed Tab",icon:a3,leadingAccessory:{type:"icon",icon:a3},disabled:!nZ(),action:()=>aZ()})),i(P.MenuGroup,null,i(P.MenuCheckboxItem,{checked:n,id:"show-bookmark-bar",label:"Bookmark Bar",icon:Vm,leadingAccessory:{type:"icon",icon:Vm},action:()=>{je.store.showBookmarkBar=!je.store.showBookmarkBar}})))}var tdt,cy,GAe,HAe,yD=h(()=>{"use strict";d();yt();We();ot();Je();tg();_e();Wt();C();tdt={"var(--channeltabs-red)":Ha.Red,"var(--channeltabs-blue)":Ha.Blue,"var(--channeltabs-yellow)":Ha.Yellow,"var(--channeltabs-green)":Ha.Green,"var(--channeltabs-black)":Ha.Black,"var(--channeltabs-white)":Ha.White,"var(--channeltabs-orange)":Ha.Orange,"var(--channeltabs-pink)":Ha.Pink},cy=e=>e?tdt[e]??e:Ha.Black,GAe=e=>{let t=cy(e);return/^#([0-9a-f]{6})$/i.test(t)?parseInt(t.slice(1),16):parseInt(Ha.Black.slice(1),16)},HAe=e=>e==null?Ha.Black:`#${e.toString(16).padStart(6,"0")}`});function sdt(e=20,t=20,o){return i("svg",{viewBox:"0 0 24 24",height:e,width:t,fill:"none",className:o},i("path",{fill:"currentColor",d:"M3 3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3zm2 1v16h10V4H5zm13-1h2a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-2V3zm0 2v12h1V5h-1z"}))}function ldt({size:e,fill:t}){return i("svg",{width:e,height:e,viewBox:"0 0 24 24"},i("path",{fill:t,d:"M17.3 18.7a1 1 0 0 0 1.4-1.4L13.42 12l5.3-5.3a1 1 0 0 0-1.42-1.4L12 10.58l-5.3-5.3a1 1 0 0 0-1.4 1.42L10.58 12l-5.3 5.3a1 1 0 1 0 1.42 1.4L12 13.42l5.3 5.3Z"}))}function OZ({isTyping:e}){return e?i(idt,{dotRadius:3,themed:!0,className:Ti("typing-indicator")}):null}function udt(e){let t=W.getChannel(e),o=t?.guild_id&&t.isForumLikeChannel?.()?cf.getNewThreadCount(t.guild_id,t.id):0,r=ti.getUnreadCount(e)||o;return{channelId:e,hasUnread:ti.hasUnread(e)||o>0,mentionCount:ti.getMentionCount(e),unreadCount:r}}function VAe(e){let{guild:t,guildId:o,channel:r,channelId:n,compact:a}=e,s=L.getCurrentUser()?.id,l=r?.recipients,{showStatusIndicators:c}=je.use(["showStatusIndicators"]),[u,p,m]=ye([As,Yo],()=>{let g=l?.[0]??"";return[!!Object.keys(As.getTypingUsers(e.channelId)).filter(x=>x!==s).length,Yo.getStatus(g),Yo.isMobileOnline(g)]});if(t){if(r)return i(f,null,i(JAe,{guild:t}),i(adt,{channel:r,guild:t}),i(Y,{className:Ti("name-text")},r.name),i(uy,{channelIds:[r.id]}),i(OZ,{isTyping:u}));{let g=`${Xe("UNKNOWN_CHANNEL")} (${n})`;switch(n){case"customize-community":g=Xe("CHANNELS_AND_ROLES");break;case"channel-browser":g=Xe("GUILD_SIDEBAR_CHANNEL_BROWSER");break;case"shop":g=Xe("GUILD_SHOP_CHANNEL_LABEL");break;case"member-safety":g=Xe("MEMBER_SAFETY_CHANNEL_TITLE");break;case"@home":g=Xe("SERVER_GUIDE");break}return i(f,null,i(JAe,{guild:t}),i(Y,{className:Ti("name-text")},g))}}if(r&&l?.length)if(l.length===1){let g=L.getUser(l[0]),x=g.globalName||g.username;return i(f,null,i(Js,{size:"SIZE_24",src:g.getAvatarURL(o,128),status:c?p:void 0,isTyping:u,isMobile:m}),i(Y,{className:Ti("name-text")},x),i(uy,{channelIds:[r.id]}),!c&&i(OZ,{isTyping:u}))}else return i(f,null,i(cdt,{channel:r}),i(Y,{className:Ti("name-text")},r?.name||Xe("GROUP_DM")),i(uy,{channelIds:[r.id]}),i(OZ,{isTyping:u}));if(n&&n.startsWith("__")){let x={__quests__:{label:"Quests",Icon:m5},"__message-requests__":{label:"Message Requests",Icon:g5},__friends__:{label:Xe("FRIENDS"),Icon:Yv},__shop__:{label:"Shop",Icon:f5},__library__:{label:"Library",Icon:()=>sdt(20,20)},__discovery__:{label:"Discovery",Icon:h5},__nitro__:{label:"Nitro",Icon:x5},__icymi__:{label:"ICYMI",Icon:WQ},__activity__:{label:"Activity",Icon:KQ}}[n];if(x){let{label:v,Icon:y}=x;return i(f,null,i(y,null),i(Y,{className:Ti("name-text")},v))}}return o==="@me"||o===void 0?i(f,null,i(Yv,null),i(Y,{className:Ti("name-text")},Xe("FRIENDS"))):i(f,null,i(v5,null),i(Y,{className:Ti("name-text")},Xe("UNKNOWN_CHANNEL")))}function FZ(e){let{channelId:t,guildId:o,id:r,index:n,compact:a}=e,s=$e.getGuild(o),l=W.getChannel(t),[c,u]=T(!0),[p,m]=T(!1),[g,x]=T(!1),[v,y]=T(!1),[A,k]=T(!1),{showTabNumbers:w,tabNumberPosition:I}=je.use(["showTabNumbers","tabNumberPosition"]);G(()=>{if(c){let Z=setTimeout(()=>u(!1),300);return()=>clearTimeout(Z)}},[c]),G(()=>{if(v&&!g){let Z=setTimeout(()=>y(!1),100);return()=>clearTimeout(Z)}},[v,g]);let E=Se(null),N=Se(0),B=100,_=Z=>{Z.preventDefault(),Z.stopPropagation();let ee=Z.clientX,ae=E.current?.getBoundingClientRect().width||0,ge=192,ke=je.store.tabWidthScale;document.body.style.cursor="ew-resize",document.body.style.userSelect="none";let Ee=it=>{let se=it.clientX-ee,xe=(ae+se)/ge,me=Math.max(.5,Math.min(2,xe));ke=Math.round(me*100),E.current&&E.current.style.setProperty("--tab-width-scale",String(ke/100))},Ue=()=>{document.removeEventListener("mousemove",Ee),document.removeEventListener("mouseup",Ue),document.body.style.cursor="",document.body.style.userSelect="",je.store.tabWidthScale=ke,E.current&&E.current.style.removeProperty("--tab-width-scale")};document.addEventListener("mousemove",Ee),document.addEventListener("mouseup",Ue)},[,q]=pf(()=>({type:"vc_ChannelTab",item:()=>{x(!0),N.current=Date.now()-B;let Z=nn.find(ee=>ee.id===r);return{id:r,channelId:Z?.channelId||t,guildId:Z?.guildId||o}},collect:Z=>({isDragging:!!Z.isDragging()}),end:()=>{x(!1),y(!1),N.current=0}}),[r,t,o]),[,$]=ud(()=>({accept:"vc_ChannelTab",hover:(Z,ee)=>{if(!E.current)return;let ae=Date.now(),ge=Z.id,ke=r;if(ge===ke)return;let Ee=nn.findIndex(Ar=>Ar.id===ge),Ue=nn.findIndex(Ar=>Ar.id===ke);if(Ee===-1||Ue===-1)return;let it=ee.isOver({shallow:!0});if(y(it),ae-N.currentUe&&xe-Dt>ze-Wo||(N.current=ae,rZ(Ee,Ue))},drop:()=>{y(!1)}}),[]);q($(E));let re=sg().length>0;return i("div",{className:Ti("tab",{"tab-compact":a,"tab-selected":Tu(r),"tab-entering":c,"tab-closing":p,"tab-dragging":g,"tab-drop-target":v,"tab-nitro":t==="__nitro__","tab-quests-active":t==="__quests__"&&re,wider:je.store.widerTabsAndBookmarks}),key:n,ref:E,onMouseEnter:()=>k(!0),onMouseLeave:()=>k(!1),onAuxClick:Z=>{Z.button===1&&ig(r)},onContextMenu:Z=>rt.openContextMenu(Z,()=>i(ZAe,{tab:e}))},i("button",{className:Ti("button","channel-info"),onClick:()=>Ui(r)},i("div",{className:Ti("tab-inner"),"data-compact":a},w&&I==="left"&&i(XAe,{number:n+1,position:"left",isSelected:Tu(r),isCompact:a,isHovered:A}),i(VAe,{...e,guild:s,channel:l}),w&&I==="right"&&i(XAe,{number:n+1,position:"right",isSelected:Tu(r),isCompact:a,isHovered:A}))),nn.length>1&&i("button",{className:Ti("button","close-button",{"close-button-compact":a,hoverable:!a}),onClick:()=>{m(!0),setTimeout(()=>ig(r),150)}},i(ldt,{size:16,fill:"var(--interactive-icon-default)"})),!a&&je.store.showResizeHandle&&i("div",{className:Ti("tab-resize-handle"),onMouseDown:_}))}var idt,YAe,adt,Ti,JAe,cdt,uy,XAe,e6e,_Z=h(()=>{"use strict";d();yt();tg();N7();oy();we();_e();Be();le();C();yD();idt=he("Math.min(1,Math.max(","dotRadius:"),YAe=Ie("numberBadge","baseShapeRound"),adt=he('"ChannelItemIcon")');Ti=K("vc-channeltabs-");JAe=({guild:e})=>e.icon?i("img",{src:`https://${window.GLOBAL_ENV.CDN_HOST}/icons/${e?.id}/${e?.icon}.png`,className:Ti("icon")}):i("div",{className:Ti("guild-acronym-icon")},i(Y,{size:"xs",weight:"semibold",tag:"span"},ya(e))),cdt=({channel:e})=>i("img",{src:e?.icon?`https://${window.GLOBAL_ENV.CDN_HOST}/channel-icons/${e?.id}/${e?.icon}.png`:"https://discord.com/assets/c6851bd0b03f1cca5a8c1e720ea6ea17.png",className:Ti("icon")});uy=({channelIds:e})=>{let t=L.getCurrentUser()?.id,{persistUnreadCountFallback:o}=je.use(["persistUnreadCountFallback"]),[,r]=T(0),n=e.join(","),a=ye([cf,ti],()=>e.map(udt)),s=a.map(p=>`${p.channelId}:${Number(p.hasUnread)}:${p.mentionCount}:${p.unreadCount}`).join("|"),{badgeText:l,hasMention:c,shouldShow:u}=dZ(a,t?fZ(t):{},o);return G(()=>{if(!t||!o)return;let p=!1;return gZ(t).then(()=>{p||r(m=>m+1)}),()=>{p=!0}},[o,t]),G(()=>{!t||!o||hZ(t,a)},[n,o,s,t]),u?i("div",{"data-has-mention":c,className:X(Ti("notification-badge"),YAe.numberBadge,YAe.baseShapeRound),style:{width:"16px"},ref:p=>p?.style.setProperty("background-color",c?"var(--danger-color, var(--red-400))":"var(--main-color, var(--brand-experiment, var(--brand-500)))","important")},l):null},XAe=({number:e,position:t,isSelected:o,isCompact:r,isHovered:n})=>o||r&&!n?null:i("div",{className:Ti("tab-number-badge",`position-${t}`),"data-position":t},e);e6e=e=>{let t=$e.getGuild(e.guildId),o=W.getChannel(e.channelId);return i("div",{className:X(Ti("preview-tab"),e.compact?Ti("preview-tab-compact"):null)},i(VAe,{...e,guild:t,channel:o}))}});function t6e({height:e=16,width:t=16}){return i("svg",{viewBox:"0 0 24 24",height:e,width:t,fill:"none"},i("path",{fill:"currentColor",d:"M3 3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3zm2 1v16h10V4H5zm13-1h2a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-2V3zm0 2v12h1V5h-1z"}))}function pdt({fill:e}){return i("path",{fill:e,d:"M20 7H12L10.553 5.106C10.214 4.428 9.521 4 8.764 4H3C2.447 4 2 4.447 2 5V19C2 20.104 2.895 21 4 21H20C21.104 21 22 20.104 22 19V9C22 7.896 21.104 7 20 7Z"})}function o6e({bookmark:e}){if(hn(e)){let n=p5(e.iconName),a=e.iconName==="CircleShieldIcon"?"var(--background-base-low)":e.iconColor,s=16;return n?i(n,{height:s,width:s,color:e.iconColor,fill:a,style:{transform:"scale(0.6666667)",transformOrigin:"center"}}):i("svg",{height:16,width:16,viewBox:"0 0 24 24"},i(pdt,{fill:e.iconColor}))}let{channelId:t}=e;if(t?.startsWith("__")){let a={__quests__:m5,"__message-requests__":g5,__friends__:Yv,__shop__:f5,__library__:()=>i(t6e,{height:16,width:16}),__discovery__:h5,__nitro__:x5}[t];if(a)return t==="__library__"?i(t6e,{height:16,width:16}):i(a,{height:16,width:16})}let o=W.getChannel(e.channelId),r=$e.getGuild(e.guildId);return r?r.icon?i("img",{src:`https://${window.GLOBAL_ENV.CDN_HOST}/icons/${r?.id}/${r?.icon}.png`,className:_o("bookmark-icon")}):i("div",{className:_o("bookmark-icon")},i(Y,{size:"xxs",weight:"semibold",tag:"span"},ya(r))):o?.recipients?.length?o.recipients.length===1?i(Js,{size:"SIZE_16",src:L.getUser(o.recipients[0]).getAvatarURL(void 0,128)}):i("img",{src:o.icon?`https://${window.GLOBAL_ENV.CDN_HOST}/channel-icons/${o?.id}/${o?.icon}.png`:"/assets/c6851bd0b03f1cca5a8c1e720ea6ea17.png",className:_o("bookmark-icon")}):i(v5,{height:16,width:16})}function mdt({bookmark:e,bookmarks:t,folderIndex:o,bookmarkIndex:r,methods:n,isCurrentChannel:a,searchActive:s}){let{bookmarkNotificationDot:l}=je.use(["bookmarkNotificationDot"]),c=Se(null),[{isDragging:u},p]=pf(()=>({type:"vc_Bookmark",canDrag:()=>!s,item:()=>({index:r,folderIndex:o,bookmark:e,isFromFolder:!0}),collect:A=>({isDragging:!!A.isDragging()})}),[e,o,r,s]),[m,g]=T(null),[{isOver:x,canDrop:v},y]=ud(()=>({accept:"vc_Bookmark",canDrop:A=>!s&&A.isFromFolder&&A.folderIndex===o,hover:(A,k)=>{if(!c.current||s||!A.isFromFolder||A.folderIndex!==o)return;let w=A.index,I=r;if(w===I){g(null);return}let E=c.current.getBoundingClientRect(),N=(E.right-E.left)/2,B=k.getClientOffset();if(!B)return;let _=B.x-E.left,q=_I&&_>N)return;let $=t[o];if(!hn($))return;let re=[...$.bookmarks],Z=re.splice(w,1)[0];re.splice(I,0,Z),n.editBookmark(o,{bookmarks:re}),A.index=I},collect:A=>({isOver:A.isOver({shallow:!0}),canDrop:A.canDrop()})}),[r,t,o,n,s]);return G(()=>{!x&&m&&g(null)},[m,x]),p(y(c)),i("div",{ref:c,className:X(_o("bookmark","folder-item","hoverable"),a&&_o("bookmark-active"),u&&_o("bookmark-dragging"),x&&v&&_o("bookmark-drop-target"),x&&v&&m==="before"&&_o("bookmark-drop-before"),x&&v&&m==="after"&&_o("bookmark-drop-after")),onClick:()=>_7(e),onContextMenu:A=>{A.stopPropagation(),rt.openContextMenu(A,()=>i(P.Menu,{navId:"folder-item-context",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"})},i(P.MenuItem,{key:"edit-bookmark",id:"edit-bookmark",label:"Edit Bookmark",action:()=>{let k=ce(w=>i(LZ,{modalProps:w,modalKey:k,bookmark:e,onSave:I=>{let E=t[o];if(!hn(E))return;let N=[...E.bookmarks];N[r].name=I,n.editBookmark(o,{bookmarks:N}),Lo(k)}}))}}),i(P.MenuItem,{key:"delete-bookmark",id:"delete-bookmark",label:"Delete Bookmark",action:()=>n.deleteBookmark(r,o)}),i(P.MenuItem,{key:"remove-from-folder",id:"remove-from-folder",label:"Remove from Folder",action:()=>{n.addBookmark(e),n.deleteBookmark(r,o)}}),l&&ti.hasUnread(e.channelId)&&i(P.MenuItem,{key:"mark-as-read",id:"mark-as-read",label:Xe("MARK_AS_READ"),action:()=>w1.ackChannel(W.getChannel(e.channelId))})))}},i("svg",{width:"12",height:"12",viewBox:"0 0 24 24",style:{marginRight:"0.25rem"}},i("path",{fill:"currentColor",d:"M10 17l5-5-5-5z"})),i(o6e,{bookmark:e}),i(Y,{size:"sm",className:_o("name-text")},e.name),l&&i(uy,{channelIds:[e.channelId]}))}function UZ(e){let{bookmarks:t,index:o,methods:r,isExpanded:n,onToggleFolder:a,isCurrentChannel:s,searchActive:l}=e,c=t[o],{bookmarkNotificationDot:u}=je.use(["bookmarkNotificationDot"]),p=Se(null),[m,g]=T(null),[{isDragging:x},v]=pf(()=>({type:"vc_Bookmark",canDrag:()=>!hn(c)&&!l,item:()=>{let E=t.findIndex(N=>hn(N)?hn(c)&&N.bookmarks===c.bookmarks:!hn(c)&&N.channelId===c.channelId&&N.guildId===c.guildId);return{index:E!==-1?E:o,folderIndex:void 0,bookmark:c,isFromFolder:!1}},collect:E=>({isDragging:!!E.isDragging()})}),[t,c,o,l]),[{isOver:y,canDrop:A},k]=ud(()=>({accept:"vc_Bookmark",canDrop:E=>!l&&!E.isFromFolder,hover:(E,N)=>{if(!p.current||l||E.isFromFolder)return;let B=E.index,_=o;if(B===_){g(null);return}let q=p.current.getBoundingClientRect(),$=(q.right-q.left)/2,re=N.getClientOffset();if(!re)return;let Z=re.x-q.left,ee=Z<$?"before":"after";g(ee),!(B<_&&Z<$||B>_&&Z>$)&&(r.moveDraggedBookmarks(B,_),E.index=_)},collect:E=>({isOver:E.isOver({shallow:!0}),canDrop:E.canDrop()})}),[o,r,l]);G(()=>{!y&&m&&g(null)},[m,y]);let[{isOver:w},I]=ud(()=>({accept:["vc_ChannelTab","vc_Bookmark"],canDrop:()=>hn(c),drop:(E,N)=>{if(!hn(c))return;let B=N.getItemType();if(B==="vc_ChannelTab"&&r.addBookmark({guildId:E.guildId,channelId:E.channelId},o),B==="vc_Bookmark"){let _=E.bookmark||t[E.index];if(hn(_)||E.isFromFolder&&E.folderIndex===o)return;E.isFromFolder?(r.deleteBookmark(E.index,E.folderIndex),r.addBookmark(_,o)):(r.deleteBookmark(E.index),r.addBookmark(_,E.index({isOver:E.isOver({shallow:!0})&&E.canDrop()})}),[t,o,r]);return hn(c)?v(I(k(p))):v(k(p)),i("div",{className:X(_o("bookmark","hoverable",{wider:je.store.widerTabsAndBookmarks}),hn(c)&&_o("bookmark-folder"),w&&_o("folder-drop-target"),n&&_o("folder-expanded"),s&&_o("bookmark-active"),x&&_o("bookmark-dragging"),y&&A&&_o("bookmark-drop-target"),y&&A&&m==="before"&&_o("bookmark-drop-before"),y&&A&&m==="after"&&_o("bookmark-drop-after")),ref:p,onClick:E=>{hn(c)?a?.():_7(c)},onContextMenu:E=>rt.openContextMenu(E,()=>i(QAe,{...e}))},i(o6e,{bookmark:c}),hn(c)&&i("svg",{width:"12",height:"12",viewBox:"0 0 24 24",style:{marginLeft:"0.25rem"}},i("path",{fill:"currentColor",d:n?"M7 10l5 5 5-5z":"M10 17l5-5-5-5z"})),i(Y,{size:"sm",className:_o("name-text")},c.name),u&&i(uy,{channelIds:hn(c)?c.bookmarks.map(E=>E.channelId):[c.channelId]}))}function zZ({children:e,className:t,customRef:o}){let r=Se(null);G(()=>{let a=r.current;if(!a)return;let s=l=>{l.preventDefault(),a.scrollLeft+=l.deltaX+l.deltaY};return a.addEventListener("wheel",s),()=>a.removeEventListener("wheel",s)},[]);let n=a=>{r.current=a,o&&o(a)};return i("div",{className:X(_o("scroller"),t),ref:n},e)}function $Z(e){let{guildId:t,channelId:o,userId:r}=e,[n,a]=jQ(r),[s,l]=T(new Set),[c,u]=T(!1),[p,m]=T(""),g=Se(null),{bookmarksIndependentFromTabs:x}=je.use(["bookmarksIndependentFromTabs"]),v=Fe.getChannelId(),y=ao.getGuildId()||"@me",A=nn.find(re=>Tu(re.id)),k=A&&A.channelId===v&&(A.guildId||"@me")===y,w=p.trim().toLowerCase(),I=w.length>0;G(()=>{c&&g.current?.focus()},[c]);let E=re=>{l(Z=>{let ee=new Set(Z);return ee.has(re)?ee.delete(re):ee.add(re),ee})},N=!1,B=-1;n?.forEach((re,Z)=>{hn(re)?re.bookmarks.some(ee=>ee.channelId===o)&&(N=!0,B=Z):re.channelId===o&&(N=!0)});let[{isOver:_},q]=ud(()=>({accept:["vc_ChannelTab","vc_Bookmark"],canDrop:()=>!I,drop:(re,Z)=>{if(!n||I||Z.didDrop())return;let ee=Z.getItemType();if(ee==="vc_ChannelTab")a.addBookmark({guildId:re.guildId,channelId:re.channelId});else if(ee==="vc_Bookmark"&&re.isFromFolder&&re.folderIndex!==void 0){let ae=n[re.folderIndex];if(hn(ae)){let ge=re.bookmark||ae.bookmarks[re.index];a.deleteBookmark(re.index,re.folderIndex),a.addBookmark(ge)}}},collect:re=>({isOver:re.isOver({shallow:!0})})}),[n,a,I]),$=re=>re?.toLowerCase().includes(w)??!1;return i("div",{className:_o("bookmark-container")},i(zZ,{className:X(_o("bookmarks"),_&&_o("bookmarks-drop-target")),customRef:q},!n&&i(Y,{className:_o("bookmark-placeholder-text"),size:"xs"},"Loading bookmarks..."),n&&!n.length&&i(Y,{className:_o("bookmark-placeholder-text"),size:"xs"},"You have no bookmarks. You can add an open tab or hide this by right clicking it"),Array.isArray(n)&&n.length>0&&n.flatMap((re,Z)=>{if(!hn(re))return I&&!$(re.name)?[]:[i(UZ,{key:Z,index:Z,bookmarks:n,methods:a,searchActive:I,isExpanded:!1,isCurrentChannel:x&&!k&&re.channelId===v&&(re.guildId||"@me")===y})];let ee=I?$(re.name):!1,ae=re.bookmarks.map((Ee,Ue)=>({childBookmark:Ee,childIndex:Ue})).filter(({childBookmark:Ee})=>!I||ee||$(Ee.name));if(I&&!ee&&!ae.length)return[];let ge=I?ae.length>0:s.has(Z),ke=[i(UZ,{key:Z,index:Z,bookmarks:n,methods:a,searchActive:I,isExpanded:ge,onToggleFolder:I?void 0:()=>E(Z),isCurrentChannel:!1})];return ge&&ae.forEach(({childBookmark:Ee,childIndex:Ue})=>{ke.push(i(mdt,{key:`${Z}-${Ue}`,bookmark:Ee,bookmarks:n,folderIndex:Z,bookmarkIndex:Ue,methods:a,searchActive:I,isCurrentChannel:x&&!k&&Ee.channelId===v&&(Ee.guildId||"@me")===y}))}),ke})),i("div",{className:X(_o("bookmark-search-shell"),c&&_o("bookmark-search-shell-open"))},i("div",{className:_o("bookmark-search-field")},i(Te,{inputRef:g,inputClassName:_o("bookmark-search-input"),style:{width:"100%"},value:p,onChange:m,placeholder:"Search bookmarks",onBlur:()=>{p.trim()||u(!1)},onKeyDown:re=>{re.key==="Escape"&&(p.trim()?m(""):u(!1))}})),i(ve,{text:"Search bookmarks",position:"left"},re=>i("button",{className:X(_o("button"),_o("bookmark-search-button")),...re,onClick:()=>{if(c&&!p.trim()){u(!1);return}u(!0)}},i("svg",{width:20,height:20,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},i("circle",{cx:"11",cy:"11",r:"6.5",stroke:"currentColor",strokeWidth:"2"}),i("path",{d:"m16 16 4 4",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))))),i(ve,{text:N?"Remove from Bookmarks":"Add to Bookmarks",position:"left"},re=>i("button",{className:_o("button"),...re,onClick:()=>{N?B===-1?a.deleteBookmark(n.findIndex(Z=>!hn(Z)&&Z.channelId===o)):a.deleteBookmark(n[B].bookmarks.findIndex(Z=>Z.channelId===o),B):a.addBookmark({guildId:t,channelId:o})}},i(ddt,{height:20,width:20,colorClass:_o(N?"bookmark-star-checked":"bookmark-star")}))))}var _o,ddt,n6e=h(()=>{"use strict";d();yt();tg();N7();we();_e();Be();le();C();_Z();yD();_o=K("vc-channeltabs-"),ddt=he(".73-2.25h6.12l1.9-5.83Z")});function GZ(e){let[t,o]=T(""),[r,n]=T(!1),{showBookmarkBar:a,widerTabsAndBookmarks:s,tabWidthScale:l,tabHeightScale:c,enableNumberKeySwitching:u,numberKeySwitchCount:p,enableCloseTabShortcut:m,enableNewTabShortcut:g,enableTabCycleShortcut:x,closeTabKeybind:v,newTabKeybind:y,cycleTabForwardKeybind:A,cycleTabBackwardKeybind:k,tabBarPosition:w,animationHover:I,animationSelection:E,animationDragDrop:N,animationEnterExit:B,animationIconPop:_,animationCloseRotation:q,animationPlusPulse:$,animationMentionGlow:re,animationCompactExpand:Z,animationSelectedBorder:ee,animationSelectedBackground:ae,animationTabShadows:ge,animationTabPositioning:ke,animationResizeHandle:Ee,animationQuestsActive:Ue,compactAutoExpandSelected:it,compactAutoExpandOnHover:se,newTabButtonBehavior:te}=je.use(["showBookmarkBar","widerTabsAndBookmarks","tabWidthScale","tabHeightScale","enableNumberKeySwitching","numberKeySwitchCount","enableCloseTabShortcut","enableNewTabShortcut","enableTabCycleShortcut","closeTabKeybind","newTabKeybind","cycleTabForwardKeybind","cycleTabBackwardKeybind","tabBarPosition","animationHover","animationSelection","animationDragDrop","animationEnterExit","animationIconPop","animationCloseRotation","animationPlusPulse","animationMentionGlow","animationCompactExpand","animationSelectedBorder","animationSelectedBackground","animationTabShadows","animationTabPositioning","animationResizeHandle","animationQuestsActive","compactAutoExpandSelected","compactAutoExpandOnHover","newTabButtonBehavior"]),xe=uZ(),me=ye([],()=>cd.isFullscreenInContext()??!1),ze=Vt(),dt=jt((Uo=!0)=>{ze();let An=L.getCurrentUser()?.id;Uo&&An&&F7(An)},[]),pt=Se(null),Dt=Se(null),Wo=Se(e);if(Wo.current=e,G(()=>lZ(dt),[dt]),G(()=>{let Uo=()=>{let An=L.getCurrentUser();An&&iZ({...Wo.current,userId:An.id},o)};return Uo(),Q.subscribe("CONNECTION_OPEN_SUPPLEMENTAL",Uo),()=>{Q.unsubscribe("CONNECTION_OPEN_SUPPLEMENTAL",Uo)}},[]),G(()=>{if(pt.current)try{dy.containerHeight=pt.current.clientHeight}catch{}},[t,a,w]),G(()=>{ze()},[s]),G(()=>{let Uo=Dt.current;if(!Uo)return;let An=()=>{if(!te){n(!0);return}let fr=Uo.scrollWidth>Uo.clientWidth;n(fr)};An();let So=new ResizeObserver(An);return So.observe(Uo),()=>So.disconnect()},[nn.length,te]),G(()=>{let Uo=(So,fr)=>{let xo=fr.split("+"),Cr=xo.includes("CTRL"),ha=xo.includes("SHIFT"),Vr=xo.includes("ALT"),Di=xo[xo.length-1].toLowerCase(),Pi=So.ctrlKey||So.metaKey,Z2=So.shiftKey,Zu=So.altKey,Yx=So.key.toLowerCase();return Di==="tab"?Cr===Pi&&ha===Z2&&Vr===Zu&&Yx==="tab":Di==="space"?Cr===Pi&&ha===Z2&&Vr===Zu&&Yx===" ":Cr===Pi&&ha===Z2&&Vr===Zu&&Yx===Di},An=So=>{let fr=So.target;if(!(fr.tagName==="INPUT"||fr.tagName==="TEXTAREA"||fr.isContentEditable)){if(u){let xo=parseInt(So.key,10);if(!isNaN(xo)&&xo>=1&&xo<=p){let Cr=xo-1;if(nn[Cr]){So.preventDefault(),Ui(nn[Cr].id);return}}}if(m&&Uo(So,v)){So.preventDefault();let xo=nn.find(Cr=>Tu(Cr.id));xo&&nn.length>1&&ig(xo.id);return}if(g&&Uo(So,y)){So.preventDefault(),So.stopPropagation(),Rs(e,!0);return}if(x&&Uo(So,A)){So.preventDefault(),So.stopPropagation();let xo=nn.findIndex(Cr=>Tu(Cr.id));if(xo!==-1&&nn.length>1){let Cr=(xo+1)%nn.length;Ui(nn[Cr].id)}return}if(x&&Uo(So,k)){So.preventDefault(),So.stopPropagation();let xo=nn.findIndex(Cr=>Tu(Cr.id));if(xo!==-1&&nn.length>1){let Cr=(xo-1+nn.length)%nn.length;Ui(nn[Cr].id)}return}}};return document.addEventListener("keydown",An,!0),()=>{document.removeEventListener("keydown",An,!0)}},[u,p,m,v,g,y,x,A,k,e,nn]),G(()=>{if(t){let Uo=e.guildId||"@me";JQ(Uo,e.channelId,"bookmark")||Hh(e),F7(t),XQ()}},[t,e.channelId,e.guildId]),!t||me)return null;let Ar=te&&!r,kr=i("button",{onClick:()=>Rs(e,!0),className:Or("button","new-button","hoverable")},i(fdt,null));return i("div",{className:X(Or("container"),w==="top"&&Or("container-top"),!I&&Or("no-hover-animation"),!E&&Or("no-selection-animation"),!N&&Or("no-drag-animation"),!B&&Or("no-enter-exit-animation"),!_&&Or("no-icon-pop-animation"),!q&&Or("no-close-rotation"),!$&&Or("no-plus-animation"),!re&&Or("no-mention-glow"),!Z&&Or("no-compact-animation"),!ee&&Or("no-selected-border"),!ae&&Or("no-selected-background"),!ge&&Or("no-tab-shadows"),!ke&&Or("no-tab-positioning"),!Ee&&Or("no-resize-handle-animation"),!Ue&&Or("no-quests-active-animation"),!it&&Or("no-compact-auto-expand"),!se&&Or("no-compact-hover-expand")),ref:pt,style:{"--tab-width-scale":l/100,"--tab-height-scale":c/100},onContextMenu:Uo=>rt.openContextMenu(Uo,()=>i(jAe,null))},a&&i(f,null,i($Z,{...e,userId:t}),i("div",{className:Or("separator")})),i("div",{className:Or("tab-container")},i(zZ,{customRef:Uo=>{Dt.current=Uo},className:Or("tab-scroller",Ar&&"tab-scroller-following")},nn.filter(Uo=>Uo!=null).map((Uo,An)=>i(FZ,{...Uo,index:An,key:Uo.id})),xe,Ar&&kr),!Ar&&kr))}function G5e(e){let t=L.getCurrentUser()?.id;if(!t)return i(U,null,"there's no logged in account?????");let{setValue:o}=e,{tabSet:r}=je.use(["tabSet"]),n=[{guildId:"@me",channelId:void 0}],[a,s]=T(r?.[t]??n);return i(f,null,i(oe,null,"Startup tabs"),i(pe,{flexDirection:"row",style:{gap:"2px"}},a.map(l=>i(f,null,i(e6e,{...l})))),i(pe,{flexDirection:"row-reverse"},i(ue,{onClick:()=>{s([...nn]),o({...r,[t]:[...nn]})}},"Set to currently open tabs")))}var fdt,Or,HQ=h(()=>{"use strict";d();Lt();We();Je();tg();we();Be();Kt();le();C();HZ();n6e();_Z();yD();fdt=he("0v-5h5a1"),Or=K("vc-channeltabs-")});var bD,dy,HZ=h(()=>{"use strict";d();U5e();Fo();Pe();ot();O();R();C();HQ();tg();tg();bD=(e,t)=>{let{channel:o,messageId:r}=t,n=i(P.MenuItem,{label:"Open in New Tab",id:"open-link-in-tab",icon:sn,leadingAccessory:{type:"icon",icon:sn},action:()=>Rs({guildId:o.guild_id||"@me",channelId:o.id},je.store.openInNewTabAutoSwitch,r,!0,!0)}),a=wt("channel-copy-link",e);a?a.push(n):e.splice(-1,0,i(P.MenuGroup,null,n))},dy=S({name:"ChannelTabs",description:"Group your commonly visited channels in tabs, like a browser",tags:["Appearance","Customisation","Organisation","Servers"],authors:[b.TheSun,b.TheKodeToad,F.keifufu,b.Nickyux,F.DiabeloDEV,F.justjxke,F.keircn],dependencies:["ContextMenuAPI","ConcatenatedModules"],contextMenus:{"channel-mention-context":bD,"channel-context":bD,"user-context":bD,"gdm-context":bD},patches:[{find:'"AppView"',replacement:[{match:/"div",{(?=.{0,80}(\i\?\.params))/,replace:"$self.render,{currentChannel:$1,"}]},{find:"`transitionToGuild - Transitioning to",replacement:{match:/(\i\((\i),(\i),\i,\i\)\{)(.{0,25}`transitionToGuild)/,replace:"$1$self.handleNavigation($2,$3);$4"}},{find:".deleteRecentMention(",replacement:{match:/(?<=className:\i.\i,onJump:)(\i)=>(\i\(\i,\i\.id\))(?=.{0,40}message:(\i))/,replace:"$1 => { if ($1?.ctrlKey) $self.open($3); else $2 }"}},{find:"__invalid_searchResultFocusRing",replacement:{match:/(\i)\.stopPropagation.{0,50}(?=null!=(\i))/,replace:"$&if ($1.ctrlKey) return $self.open($2);"}}],settings:je,start(){let e=je.store;if(e.enableHotkeys!==void 0){let t=e.enableHotkeys;je.store.enableNumberKeySwitching=t,je.store.enableCloseTabShortcut=t,je.store.enableNewTabShortcut=t,je.store.enableTabCycleShortcut=t,delete e.enableHotkeys}e.hotkeyCount!==void 0&&(je.store.numberKeySwitchCount=e.hotkeyCount,delete e.hotkeyCount)},containerHeight:0,flux:{CHANNEL_SELECT(e){if(L7()){YQ();return}let t=w5(),{channelId:o}=e,{guildId:r}=e;if(!o){let n=window.location.pathname;if(n==="/quest-home"||n.includes("quest-home"))o="__quests__",r="@me";else if(n.includes("/message-requests"))o="__message-requests__",r="@me";else if(n==="/channels/@me")o="__friends__",r="@me";else if(n==="/channels/@me/activity")o="__activity__",r="@me";else if(n.includes("/shop"))o="__shop__",r="@me";else if(n.includes("/library"))o="__library__",r="@me";else if(n.includes("/discovery"))o="__discovery__",r="@me";else if(n.includes("/store"))o="__nitro__",r="@me";else if(n.includes("/icymi"))o="__icymi__",r="@me";else return}t||(O7(),o&&r&&Hh({guildId:r,channelId:o}))}},render({currentChannel:e,children:t}){let o=i(H,null,i(GZ,{...e}));return je.store.tabBarPosition==="top"?i(f,null,o,t):i(f,null,t,o)},open(e){let t={channelId:e.channel_id,guildId:W.getChannel(e.channel_id)?.guild_id,compact:!1};Rs(t,!1,e.id)},handleNavigation(e,t){L7()||w5()||(O7(),requestAnimationFrame(()=>{Hh({guildId:e,channelId:t})}))},util:xZ})});function hdt(e,t){let o=[2,4].includes(t)?" ":"-";return e.normalize("NFKC").replace(/[ᴀʙᴄᴅᴇꜰɢʜɪᴊᴋʟá´É´á´á´˜Ç«Ê€êœ±á´›á´œá´ á´¡xÊá´¢]/g,n=>gdt[n]).replace(/[^ -~]?\p{Extended_Pictographic}[^ -~]?/ug,"").replace(/-?\|-?/g,o).replace(/-?[^\p{Letter} -~]-?/ug,o).replace(/-+/g,"-").replace(/(^-|-$)/g,"")||e}var gdt,$5,jZ,SD,r6e=h(()=>{"use strict";d();O();R();C();gdt={"\u1D00":"a",\u0299:"b","\u1D04":"c","\u1D05":"d","\u1D07":"e","\uA730":"f",\u0262:"g",\u029C:"h",\u026A:"i","\u1D0A":"j","\u1D0B":"k",\u029F:"l","\u1D0D":"m",\u0274:"n","\u1D0F":"o","\u1D18":"p",\u01EB:"q",\u0280:"r","\uA731":"s","\u1D1B":"t","\u1D1C":"u","\u1D20":"v","\u1D21":"w",x:"x",\u028F:"y","\u1D22":"z"},$5=Symbol("cleanChannelName.original"),jZ=null;SD=S({name:"CleanChannelName",authors:[b.AutumnVN],description:"Remove emoji and decoration from channel names. Reverts to the original while you're editing the channel.",tags:["Appearance","Customisation","Chat","Emotes","Servers"],patches:[{find:"loadAllGuildAndPrivateChannelsFromDisk(){",replacement:{match:/(?<=getChannel\(\i\)\{if\(null!=\i\)return )\i\(\i\)/,replace:"$self.cleanChannelName($&)"}}],flux:{CHANNEL_SETTINGS_INIT({channelId:e}){jZ=e,W.emitChange?.()},CHANNEL_SETTINGS_CLOSE(){jZ=null,W.emitChange?.()}},cleanChannelName(e){if(e==null)return e;let t=e;return t[$5]!==void 0||(t[$5]=e.name,Object.defineProperty(e,"name",{configurable:!0,enumerable:!0,get(){return jZ===e.id?t[$5]:hdt(t[$5],e.type)},set(o){t[$5]=o}})),e}})});var wD,i6e=h(()=>{"use strict";d();O();R();wD=S({name:"CleanerChannelGroups",description:"Hides all channels in collapsed categories, even if they have unread messages.",tags:["Appearance","Customisation","Chat","Organisation","Servers"],authors:[F.justjxke],patches:[{find:'"placeholder-channel-id"',replacement:[{match:/this\.category\.isCollapsed&&\(.{0,600}?\)\?\{renderLevel:3,threadIds:/,replace:"this.category.isCollapsed?{renderLevel:3,threadIds:"},{match:/(?<=!this.category.isCollapsed.{0,50}\i=)(\i\(this\.record,.{0,5},\i\.hideMutedChannels\);)/,replace:"this.category.isCollapsed?[]:$1"}]}]})});var a6e=h(()=>{});function ydt(e,t){let o=`${e}-${t}`,r=c6e.get(o);return r&&Date.now()-r.timestampTo.getRole(t,e)),[u,p]=T(0);G(()=>{let g=!1,x=ydt(t,e);if(x){p(x.length);let v=x.slice(0,AD);a(v),v.length&&s6e.requestMembersById(t,v,!1),l(!1)}else mt.get({url:Gt.Endpoints.GUILD_ROLE_MEMBER_IDS(t,e)}).then(v=>{if(g)return;let y=v.body;bdt(t,e,y),p(y.length);let A=y.slice(0,AD);a(A),A.length&&s6e.requestMembersById(t,A,!1),l(!1)}).catch(v=>{g||(xdt.error("Failed to fetch role members",v),l(!1))});return()=>{g=!0}},[t,e]);let m=ye([L],()=>n.map(g=>L.getUser(g)).filter(Aa),[n]);return i("div",{className:Mc("popout"),ref:r},i("div",{className:Mc("header")},i("span",{className:Mc("color"),style:{backgroundColor:c?.colorString??"var(--background-mod-strong)"}}),i("span",{className:Mc("name")},c?.name??"Unknown Role"),i("span",{className:Mc("count")},u)),i(ei,{className:Mc("list"),fade:!0},s?i("div",{className:Mc("empty")},"Loading members..."):m.length===0?i("div",{className:Mc("empty")},"No members found."):m.map(g=>i("div",{key:g.id,className:Mc("user"),onClick:()=>{o(),Ko(g.id)}},i("img",{src:at.getUserAvatarURL(g),alt:"",className:Mc("avatar")}),i("span",null,g.globalName??g.username))),u>AD&&i("div",{className:Mc("overflow")},"and ",u-AD," more")))}function wdt({roleId:e,guildId:t,children:o}){let r=Se(null);return i(Xa,{targetElementRef:r,position:"right",align:"center",autoInvert:!0,nudgeAlignIntoViewport:!0,renderPopout:({closePopout:n,setPopoutRef:a})=>i(Sdt,{roleId:e,guildId:t,closePopout:n,setPopoutRef:a})},n=>i("div",{ref:r,...n,className:Mc("trigger")},o))}var xdt,Mc,s6e,AD,vdt,c6e,l6e,kD,u6e=h(()=>{"use strict";d();a6e();Pe();O();we();_e();Ca();He();R();le();C();xdt=new ie("ClickableRoles"),Mc=K("vc-clickableroles-"),s6e=Ae("requestMembersById","banUser"),AD=20,vdt=6e4,c6e=new Map;l6e=H.wrap(wdt,{noop:!0}),kD=S({name:"ClickableRoles",description:"Click on roles in user profiles and the member list to see which members have them.",tags:["Appearance","Roles"],authors:[b.prism],patches:[{find:"#{intl::zr0Y5R::raw}",replacement:{match:/(\.colorString\?\?\i;)return(.*?enableTooltip:!1\}\)\}\):null,\i\]\}\))/,replace:"$1return $self.wrapRolePill(arguments[0],()=>$2)"}},{find:'tutorialId:"whos-online"',replacement:{match:/\((function\(\i\)\{let\{id:.*?#{intl::CHANNEL_MEMBERS_A11Y_LABEL}.*?\}\))\}\);/,replace:"($self.wrapRoleGroup($1}));"}}],wrapRoleGroup(e){return t=>{let o=e(t);return To.getRole(t.guildId,t.id)?i(l6e,{roleId:t.id,guildId:t.guildId},o):o}},wrapRolePill(e,t){return i(l6e,{roleId:e.role.id,guildId:e.guildId},t())}})});function d6e(e,t){let o=t?e:W.getChannel(e)?.guild_id,r=Wd.store.guildBlackList?.split(",").map(a=>a.trim()).filter(Boolean)??[],n=Wd.store.guildWhiteList?.split(",").map(a=>a.trim()).filter(Boolean)??[];return!!(r.includes(o)||n.length&&!n.includes(o))}function qh(e,t){return t&&d6e(t,!1)||qe.isBlocked(e)&&Wd.store.hideBlockedUsers?!0:Wd.store.usersToBlock.length===0?!1:Wd.store.usersToBlock.split(", ").includes(e)}function Adt(e,t){if(!To.getRole(t,e))return!1;let r=bt.getMembers(t).filter(n=>n.roles.includes(e));return r.length?d6e(t,!0)?!0:r.every(n=>qh(n.userId)&&!(L.getUser(n.userId).desktop||L.getUser(n.userId).mobile)):!1}function kdt(){switch(Wd.store.blockedReplyDisplay){case"displayText":return i(U,{style:{marginTop:"0px",marginBottom:"0px"}},i("i",null,"\u2193 Replying to blocked message"));case"hideReply":return null}}function Cdt(e){return Array.isArray(e)?e.filter(t=>{if(!t?.key)return!1;let o=t.key.match(/(?:user-|party-spotify:)(.+)/)?.[1];if(o)return!qh(o);if(t.key.startsWith("channel-")&&Wd.store.hideVc){let{party:r}=t.props;if(!r)return!0;let{applicationStreams:n,partiedMembers:a,priorityMembers:s,voiceChannels:l}=r;return l?.forEach(u=>u.members=u.members?.filter(p=>!qh(p.id))??[]),r.applicationStreams=(n??[]).filter(u=>!qh(u.streamUser.id)),r.priorityMembers=s?.filter(u=>!qh(u.user.id))??[],r.partiedMembers=a?.filter(u=>!qh(u.id))??[],(l?.some(u=>u.members?.length)??!1)||(r.partiedMembers?.length??0)||(r.priorityMembers?.length??0)||(r.applicationStreams?.length??0)}return!0}):e}var Wd,CD,p6e=h(()=>{"use strict";d();j();Je();O();R();C();Wd=M({hideVc:{type:3,description:"Hide voice channels containing blocked users.",default:!1,restartNeeded:!0},usersToBlock:{type:0,description:"User IDs seperated by a comma and a space",restartNeeded:!0,default:""},hideBlockedUsers:{type:3,description:"Should blocked users should also be hidden everywhere",default:!0,restartNeeded:!0},hideBlockedMessages:{type:3,description:"Should messages from blocked users should be hidden fully (same as the old noblockedmessages plugin)",default:!0,restartNeeded:!0},hideEmptyRoles:{type:3,description:"Should role headers be hidden if all of their members are blocked",restartNeeded:!0,default:!0},blockedReplyDisplay:{type:4,description:"What should display instead of the message when someone replies to someone you have hidden",restartNeeded:!0,options:[{value:"displayText",label:"Display text saying a hidden message was replied to",default:!0},{value:"hideReply",label:"Literally nothing"}]},guildBlackList:{type:0,description:"Guild ids to disable functionality in",restartNeeded:!0,default:""},guildWhiteList:{type:0,description:"Guild ids to enable functionality in",restartNeeded:!0,default:""}});CD=S({name:"ClientSideBlock",description:"Allows you to locally hide almost all content from any user",tags:["Utility"],searchTerms:["blocked","block","hide","hidden","noblockedmessages"],authors:[b.Samwich,F.KamiRu],settings:Wd,activeNowView:Cdt,shouldHideUser:qh,hiddenReplyComponent:kdt,isRoleAllBlockedMembers:Adt,patches:[{find:".NITRO_NOTIFICATION,[",replacement:{match:/\i\(\)\(\i\.type.{0,40}Message must not be a thread starter message/,replace:"if($self.shouldHideUser(arguments[0].message.author.id, arguments[0].message.channel_id)) return null;$&"}},{find:"peopleListItemRef.current.componentWillLeave",replacement:{match:/\i}=this.state;/,replace:"$&if($self.shouldHideUser(this.props.user.id)) return null; "}},{find:"this.updateMaxContentFeedRowSeen()",replacement:[{match:/(?<=user:(\i),guildId:\i,channel:(\i).*?)BOOST_GEM_ICON.{0,10}\);/,replace:"$&if($self.shouldHideUser($1.id, $2.id)) return null; "},{match:/\i.memo\(function\(\i\){/,replace:"$&if($self.isRoleAllBlockedMembers(arguments[0].id, arguments[0].guildId)) return null;",predicate:()=>Wd.store.hideEmptyRoles}]},{find:"#{intl::BLOCKED_MESSAGE_COUNT}}",replacement:{match:/1:\i\.content.length;/,replace:"$&return null;"},predicate:()=>Wd.store.hideBlockedMessages},{find:".GUILD_APPLICATION_PREMIUM_SUBSCRIPTION||",replacement:[{match:/(?=let \i,\{repliedAuthor:)/,replace:"if(arguments[0]?.referencedMessage?.message && $self.shouldHideUser(arguments[0].referencedMessage.message.author.id, arguments[0].baseMessage.messageReference.channel_id)) { return $self.hiddenReplyComponent(); }"}]},{find:"PrivateChannel.renderAvatar",replacement:{match:/(return \i\.isMultiUserDM\(\))(?<=function\(\i,(\i),\i\){.*)/,replace:"if($2.rawRecipients[0] && $2.rawRecipients[0]?.id){if($self.shouldHideUser($2.rawRecipients[0].id)) return null;}$1"}},{find:"getFriendIDs(){",replacement:{match:/\?\?\[\]\)\),\i\.friends/,replace:"$&.filter(id => !$self.shouldHideUser(id))"}},{find:"ACTIVE_NOW_COLUMN)",replacement:{match:/(__invalid_consentCard.{0,40}\()(\i),\{/,replace:'$1"div",{children:$self.activeNowView($2())'}},{find:"}getMutualFriends(",replacement:{match:/(getMutualFriends\(\i\){)return (\i\.get\(\i\))/,replace:"$1if($2) return $2.filter(u => !$self.shouldHideUser(u.key))"}}]})});var Tdt,wFo,Mn,m6e=h(()=>{d();Tdt="0.12.6",wFo=`https://unpkg.com/@ffmpeg/core@${Tdt}/dist/umd/ffmpeg-core.js`;(function(e){e.LOAD="LOAD",e.EXEC="EXEC",e.WRITE_FILE="WRITE_FILE",e.READ_FILE="READ_FILE",e.DELETE_FILE="DELETE_FILE",e.RENAME="RENAME",e.CREATE_DIR="CREATE_DIR",e.LIST_DIR="LIST_DIR",e.DELETE_DIR="DELETE_DIR",e.ERROR="ERROR",e.DOWNLOAD="DOWNLOAD",e.PROGRESS="PROGRESS",e.LOG="LOG",e.MOUNT="MOUNT",e.UNMOUNT="UNMOUNT"})(Mn||(Mn={}))});var f6e,g6e=h(()=>{d();f6e=(()=>{let e=0;return()=>e++})()});var IFo,h6e,x6e,EFo,v6e=h(()=>{d();IFo=new Error("unknown message type"),h6e=new Error("ffmpeg is not loaded, call `await ffmpeg.load()` first"),x6e=new Error("called FFmpeg.terminate()"),EFo=new Error("failed to import ffmpeg-core.js")});var y6e,Kd,b6e=h(()=>{d();m6e();g6e();v6e();y6e={},Kd=class{#e=null;#t={};#o={};#i=[];#a=[];loaded=!1;#s=()=>{this.#e&&(this.#e.onmessage=({data:{id:t,type:o,data:r}})=>{switch(o){case Mn.LOAD:this.loaded=!0,this.#t[t](r);break;case Mn.MOUNT:case Mn.UNMOUNT:case Mn.EXEC:case Mn.WRITE_FILE:case Mn.READ_FILE:case Mn.DELETE_FILE:case Mn.RENAME:case Mn.CREATE_DIR:case Mn.LIST_DIR:case Mn.DELETE_DIR:this.#t[t](r);break;case Mn.LOG:this.#i.forEach(n=>n(r));break;case Mn.PROGRESS:this.#a.forEach(n=>n(r));break;case Mn.ERROR:this.#o[t](r);break}delete this.#t[t],delete this.#o[t]})};#n=({type:t,data:o},r=[],n)=>this.#e?new Promise((a,s)=>{let l=f6e();this.#e&&this.#e.postMessage({id:l,type:t,data:o},r),this.#t[l]=a,this.#o[l]=s,n?.addEventListener("abort",()=>{s(new DOMException(`Message # ${l} was aborted`,"AbortError"))},{once:!0})}):Promise.reject(h6e);on(t,o){t==="log"?this.#i.push(o):t==="progress"&&this.#a.push(o)}off(t,o){t==="log"?this.#i=this.#i.filter(r=>r!==o):t==="progress"&&(this.#a=this.#a.filter(r=>r!==o))}load=({classWorkerURL:t,...o}={},{signal:r}={})=>(this.#e||(this.#e=t?new Worker(new URL(t,y6e.url),{type:"module"}):new Worker(new URL("./worker.js",y6e.url),{type:"module"}),this.#s()),this.#n({type:Mn.LOAD,data:o},void 0,r));exec=(t,o=-1,{signal:r}={})=>this.#n({type:Mn.EXEC,data:{args:t,timeout:o}},void 0,r);terminate=()=>{let t=Object.keys(this.#o);for(let o of t)this.#o[o](x6e),delete this.#o[o],delete this.#t[o];this.#e&&(this.#e.terminate(),this.#e=null,this.loaded=!1)};writeFile=(t,o,{signal:r}={})=>{let n=[];return o instanceof Uint8Array&&n.push(o.buffer),this.#n({type:Mn.WRITE_FILE,data:{path:t,data:o}},n,r)};mount=(t,o,r)=>{let n=[];return this.#n({type:Mn.MOUNT,data:{fsType:t,options:o,mountPoint:r}},n)};unmount=t=>{let o=[];return this.#n({type:Mn.UNMOUNT,data:{mountPoint:t}},o)};readFile=(t,o="binary",{signal:r}={})=>this.#n({type:Mn.READ_FILE,data:{path:t,encoding:o}},void 0,r);deleteFile=(t,{signal:o}={})=>this.#n({type:Mn.DELETE_FILE,data:{path:t}},void 0,o);rename=(t,o,{signal:r}={})=>this.#n({type:Mn.RENAME,data:{oldPath:t,newPath:o}},void 0,r);createDir=(t,{signal:o}={})=>this.#n({type:Mn.CREATE_DIR,data:{path:t}},void 0,o);listDir=(t,{signal:o}={})=>this.#n({type:Mn.LIST_DIR,data:{path:t}},void 0,o);deleteDir=(t,{signal:o}={})=>this.#n({type:Mn.DELETE_DIR,data:{path:t}},void 0,o)}});var G5=h(()=>{d();b6e()});async function Ddt(){return TD?.loaded?TD:H5||(H5=(async()=>{let e=new Kd,t="https://cdn.jsdelivr.net/npm/@ffmpeg/core@0.12.6/dist/esm",o=`/// /// /// const MIME_TYPE_JAVASCRIPT = "text/javascript"; const MIME_TYPE_WASM = "application/wasm"; const CORE_VERSION = "0.12.6"; const CORE_URL = \`https://cdn.jsdelivr.net/npm/@ffmpeg/core@\${CORE_VERSION}/dist/umd/ffmpeg-core.js\`; var FFMessageType; (function(FFMessageType) { FFMessageType["LOAD"] = "LOAD"; FFMessageType["EXEC"] = "EXEC"; FFMessageType["WRITE_FILE"] = "WRITE_FILE"; FFMessageType["READ_FILE"] = "READ_FILE"; FFMessageType["DELETE_FILE"] = "DELETE_FILE"; FFMessageType["RENAME"] = "RENAME"; FFMessageType["CREATE_DIR"] = "CREATE_DIR"; FFMessageType["LIST_DIR"] = "LIST_DIR"; FFMessageType["DELETE_DIR"] = "DELETE_DIR"; FFMessageType["ERROR"] = "ERROR"; FFMessageType["DOWNLOAD"] = "DOWNLOAD"; FFMessageType["PROGRESS"] = "PROGRESS"; FFMessageType["LOG"] = "LOG"; FFMessageType["MOUNT"] = "MOUNT"; FFMessageType["UNMOUNT"] = "UNMOUNT"; })(FFMessageType || (FFMessageType = {})); const ERROR_UNKNOWN_MESSAGE_TYPE = new Error("unknown message type"); const ERROR_NOT_LOADED = new Error("ffmpeg is not loaded, call \`await ffmpeg.load()\` first"); const ERROR_TERMINATED = new Error("called FFmpeg.terminate()"); const ERROR_IMPORT_FAILURE = new Error("failed to import ffmpeg-core.js"); let ffmpeg; const load = async ({ coreURL: _coreURL, wasmURL: _wasmURL, workerURL: _workerURL, }) => { const first = !ffmpeg; try { if (!_coreURL) _coreURL = CORE_URL; importScripts(_coreURL); } catch { if (!_coreURL) _coreURL = CORE_URL.replace('/umd/', '/esm/'); self.createFFmpegCore = (await import( /* webpackIgnore: true */ /* @vite-ignore */ _coreURL)).default; if (!self.createFFmpegCore) { throw ERROR_IMPORT_FAILURE; } } const coreURL = _coreURL; const wasmURL = _wasmURL ? _wasmURL : _coreURL.replace(/.js$/g, ".wasm"); const workerURL = _workerURL ? _workerURL : _coreURL.replace(/.js$/g, ".worker.js"); ffmpeg = await self.createFFmpegCore({ mainScriptUrlOrBlob: \`\${coreURL}#\${btoa(JSON.stringify({ wasmURL, workerURL }))}\`, }); ffmpeg.setLogger((data) => self.postMessage({ type: FFMessageType.LOG, data })); ffmpeg.setProgress((data) => self.postMessage({ type: FFMessageType.PROGRESS, data, })); return first; }; const exec = ({ args, timeout = -1 }) => { ffmpeg.setTimeout(timeout); ffmpeg.exec(...args); const ret = ffmpeg.ret; ffmpeg.reset(); return ret; }; const writeFile = ({ path, data }) => { ffmpeg.FS.writeFile(path, data); return true; }; const readFile = ({ path, encoding }) => ffmpeg.FS.readFile(path, { encoding }); const deleteFile = ({ path }) => { ffmpeg.FS.unlink(path); return true; }; const rename = ({ oldPath, newPath }) => { ffmpeg.FS.rename(oldPath, newPath); return true; }; const createDir = ({ path }) => { ffmpeg.FS.mkdir(path); return true; }; const listDir = ({ path }) => { const names = ffmpeg.FS.readdir(path); const nodes = []; for (const name of names) { const stat = ffmpeg.FS.stat(\`\${path}/\${name}\`); const isDir = ffmpeg.FS.isDir(stat.mode); nodes.push({ name, isDir }); } return nodes; }; const deleteDir = ({ path }) => { ffmpeg.FS.rmdir(path); return true; }; const mount = ({ fsType, options, mountPoint }) => { const str = fsType; const fs = ffmpeg.FS.filesystems[str]; if (!fs) return false; ffmpeg.FS.mount(fs, options, mountPoint); return true; }; const unmount = ({ mountPoint }) => { ffmpeg.FS.unmount(mountPoint); return true; }; self.onmessage = async ({ data: { id, type, data: _data }, }) => { const trans = []; let data; try { if (type !== FFMessageType.LOAD && !ffmpeg) throw ERROR_NOT_LOADED; switch (type) { case FFMessageType.LOAD: data = await load(_data); break; case FFMessageType.EXEC: data = exec(_data); break; case FFMessageType.WRITE_FILE: data = writeFile(_data); break; case FFMessageType.READ_FILE: data = readFile(_data); break; case FFMessageType.DELETE_FILE: data = deleteFile(_data); break; case FFMessageType.RENAME: data = rename(_data); break; case FFMessageType.CREATE_DIR: data = createDir(_data); break; case FFMessageType.LIST_DIR: data = listDir(_data); break; case FFMessageType.DELETE_DIR: data = deleteDir(_data); break; case FFMessageType.MOUNT: data = mount(_data); break; case FFMessageType.UNMOUNT: data = unmount(_data); break; default: throw ERROR_UNKNOWN_MESSAGE_TYPE; } } catch (e) { self.postMessage({ id, type: FFMessageType.ERROR, data: e.toString(), }); return; } if (data instanceof Uint8Array) { trans.push(data.buffer); } self.postMessage({ id, type, data }, trans); }; `,r=new Blob([new TextEncoder().encode(o)],{type:"text/javascript"}),n=URL.createObjectURL(r);try{return await e.load({coreURL:`${t}/ffmpeg-core.js`,wasmURL:`${t}/ffmpeg-core.wasm`,workerURL:`${t}/ffmpeg-core.worker.js`,classWorkerURL:n}),TD=e,Idt.info("FFmpeg loaded."),e}catch(a){throw e.terminate(),TD=null,a}finally{URL.revokeObjectURL(n),H5=null}})(),H5)}function Pdt(e,t){return`input_${t}${e.match(/\.[a-z0-9]+$/i)?.[0].toLowerCase()??".video"}`}async function S6e(e,t){let o=Edt++,r=Pdt(e.name,o),n=`output_${o}.mp4`,a=await Ddt();try{if(await a.writeFile(r,new Uint8Array(await e.arrayBuffer())),await a.exec(["-i",r,"-map","0:v:0","-map","0:a:0?","-c:v","libx264","-preset","veryfast","-profile:v","high","-level:v","4.0","-pix_fmt","yuv420p","-c:a","aac","-b:a","128k","-movflags","+faststart",n])!==0)throw new Error("Couldn't convert the selected file.");let l=await a.readFile(n);if(typeof l=="string")throw new Error("Couldn't read the converted file.");return new File([new Uint8Array(l)],t,{type:"video/mp4"})}finally{await Promise.all([a.deleteFile(r).catch(()=>{}),a.deleteFile(n).catch(()=>{})])}}var Idt,TD,H5,Edt,w6e=h(()=>{"use strict";d();G5();He();Idt=new ie("ClipUpload"),TD=null,H5=null,Edt=0});function Wh(e){return typeof e=="string"?e:void 0}function ED(){for(let e of ID)e.abort();ID.clear()}function qZ(e){let t=e.lastIndexOf(".");return t>0?e.slice(0,t):e}function T6e(e){return typeof e?.name=="string"?e.name.trim():""}function I6e(e){let{createdAt:t}=e??{};if(t instanceof Date)return t.toISOString();if(typeof t=="number")return new Date(t).toISOString();if(typeof t=="string"){let o=new Date(t);if(!Number.isNaN(o.getTime()))return o.toISOString()}return new Date().toISOString()}function E6e(e){return Array.isArray(e?.users)?e.users.flatMap(t=>typeof t=="string"?t:Bp(t)&&typeof t.id=="string"?t.id:[]):[]}function WZ(e){return!!e.trim()&&!Number.isNaN(new Date(e).getTime())}function D6e(){return k6e}function P6e(e){return e.match(/\.[a-z0-9]+$/i)?.[0].toLowerCase()??".mp4"}function Ndt(e){return C6e.includes(P6e(e))?e:`${qZ(e)||k6e}.mp4`}async function Bdt(e,t,o){let r=await vm.createTempVideoFile(e);if(!r)throw new Error("Couldn't prepare the selected file.");try{await M6e(r);let n=await vm.readVideoFile(r);if(!n)throw new Error("Couldn't read the selected file.");return new File([new Uint8Array(n)],t,{type:o})}finally{await vm.deleteTempVideoFile(r)}}async function M6e(e){let t=await vm.getTempVideoFilePath(e);if(!t)throw new Error("Couldn't prepare the selected file.");let o=$o.getMediaEngine();if(!Ldt(o))throw new Error("Couldn't update clip metadata.");await o.updateClipMetadata(t,"{}")}async function Rdt(e,t){let o=await vm.createTempVideoFileFromBytes(Ndt(t),new Uint8Array(await e.arrayBuffer()));if(!o)throw new Error("Couldn't prepare the selected file.");try{await M6e(o);let r=await vm.readVideoFile(o);if(!r)throw new Error("Couldn't read the selected file.");return new File([new Uint8Array(r)],t,{type:"video/mp4"})}finally{await vm.deleteTempVideoFile(o)}}function Ldt(e){return Bp(e)&&typeof e.updateClipMetadata=="function"}async function N6e(e){let t=await vm.chooseVideoFile();if(!t)return null;let o=null;return e&&(o=(await vm.parseClipFileMetadata(t.token))?.[0]??null),{file:await Bdt(t.token,t.name,t.type),metadata:o}}function Odt(e){return e.type==="video/mp4"||C6e.includes(P6e(e.name))}function Fdt(e,t){if(Odt(e))return new File([e],t,{type:e.type||"video/mp4"});throw new Error("This file is not compatible. Use an MP4 clip with H.264 video and AAC audio.")}function _dt(e){return Bp(e.body)?e.body:jdt(e.text)??{}}async function Udt(e,t){let o=await mt.post({url:Gt.Endpoints.MESSAGE_CREATE_ATTACHMENT_UPLOAD(e.channelId),body:{content:e.message,files:[{filename:e.fileName,file_size:t.size,id:"0",is_clip:!0,is_spoiler:e.spoiler,is_remix:e.remix,is_thumbnail:e.thumbnail,title:e.title,application_id:e.applicationId,clip_created_at:e.createdAt,clip_participant_ids:e.participants,clip_remote_id:e.remoteClipId,clip_events_timeline:e.eventsTimeline,original_content_type:t.type||"video/mp4"}]}});return _dt(o).attachments?.[0]}async function zdt(e,t){let o=new AbortController;ID.add(o);try{if(!(await fetch(e.upload_url,{method:"PUT",body:t,signal:o.signal,referrer:"https://discord.com/",referrerPolicy:"strict-origin-when-cross-origin",mode:"cors",credentials:"omit"})).ok)throw new Error("Upload failed.")}finally{ID.delete(o)}}async function A6e(e,t){let o=await Udt(t,e);if(!o)throw new Error("Discord did not return an upload slot.");await zdt(o,e);let r=await mt.post({url:Gt.Endpoints.MESSAGES(t.channelId),body:{content:t.message,nonce:en.fromTimestamp(Date.now()),channel_id:t.channelId,sticker_ids:[],type:0,attachments:[{id:"0",filesize:e.size,filename:t.fileName,uploaded_filename:o.upload_filename,is_clip:!0,is_spoiler:t.spoiler,is_remix:t.remix,is_thumbnail:t.thumbnail,title:t.title,application_id:t.applicationId,clip_created_at:t.createdAt,clip_participant_ids:t.participants,clip_remote_id:t.remoteClipId,clip_events_timeline:t.eventsTimeline}]}});if(r.ok===!1)throw r}function $dt(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(!Bp(e))return"";let{body:t,message:o,text:r}=e;return[typeof o=="string"?o:"",typeof r=="string"?r:"",typeof t=="string"?t:"",Bp(t)?JSON.stringify(t):""].join(` `)}function Gdt(e){if(!Bp(e))return;let{body:t}=e;if(!Bp(t))return;let{code:o}=t;return typeof o=="number"?o:void 0}function Hdt(e){let t=$dt(e).toLowerCase();return Gdt(e)===50174||t.includes("not a valid clip")}async function B6e(e,t){try{ne("Checking clip file.",D.Type.MESSAGE);let o=await Fdt(e,t.fileName);try{await A6e(o,t)}catch(r){if(!Hdt(r))throw r;ne("Converting clip file.",D.Type.MESSAGE),await A6e(await Rdt(await S6e(e,t.fileName),t.fileName),t)}return ne("Clip uploaded.",D.Type.SUCCESS),!0}catch(o){return Mdt.error(o),ne(KZ(o),D.Type.FAILURE),!1}}function KZ(e){return e instanceof DOMException&&e.name==="AbortError"?"Upload canceled.":e instanceof Error?e.message:"Failed to upload clip."}function jdt(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}var Mdt,vm,k6e,C6e,ID,DD=h(()=>{"use strict";d();He();Be();C();w6e();Mdt=new ie("ClipUpload"),vm=VencordNative.pluginHelpers.ClipUpload,k6e="clip.mp4",C6e=[".mp4",".m4v"],ID=new Set});function PD({title:e,value:t,onChange:o,placeholder:r,disabled:n,multiline:a}){return i("section",null,i(oe,{tag:"h5"},e),a?i(Ea,{value:t,onChange:o,placeholder:r,disabled:n,autosize:!0}):i(Te,{value:t,onChange:o,placeholder:r,disabled:n}))}function R6e({value:e,onChange:t,disabled:o}){return i("section",null,i(oe,{tag:"h5"},"Created at"),i(Te,{type:"datetime-local",value:e,onChange:r=>t(r),disabled:o,style:{colorScheme:C0()===2?"light":"dark"}}))}function MD({label:e,value:t,onChange:o,disabled:r}){return i(Np,{value:t,onChange:(n,a)=>o(a),disabled:r,type:"row"},e)}function L6e(e){let t=new Date(e);return Number.isNaN(t.getTime())?"":new Date(t.getTime()-t.getTimezoneOffset()*6e4).toISOString().slice(0,16)}function qdt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function QZ(e){return e.globalName?`${e.globalName} (@${e.username})`:e.tag}function O6e({value:e,onChange:t,disabled:o}){let r=ye([L,qe],()=>{let n=new Set(e);return[...Object.values(L.getUsers()).filter(s=>!s.bot&&!s.system&&qe.isFriend(s.id)).sort((s,l)=>QZ(s).localeCompare(QZ(l))).map(s=>(n.delete(s.id),{label:QZ(s),value:s.id})),...Array.from(n,s=>({label:s,value:s}))]},[e],ia.isEqual);return i("section",null,i(oe,{tag:"h5"},"Participants"),i(pe,{flexDirection:"column",gap:8},i(U,{className:z.bottom8},"Only tag people who were present and have consented to being in this clip."),i(Fn,{options:r,value:e,onChange:n=>t(qdt(n)),closeOnSelect:!1,placeholder:"Select friends",isDisabled:o,multi:!0,renderOptionPrefix:n=>{let a=Wh(n.value),s=a?L.getUser(a):null;return s?i("img",{src:at.getUserAvatarURL(s,!1,24),width:24,height:24,style:{borderRadius:"50%"}}):null}})))}function Wdt(e){let t=new Map,o=[...uc.getVisibleRunningGames(),...uc.getRunningGames(),...uc.getGamesSeen(!0),...uc.getCandidateGames()];for(let n of o)n.id&&t.set(n.id,`${n.name} (${n.id})`);let r=e?Xs.getApplication(e):null;return r&&t.set(r.id,`${r.name} (${r.id})`),e&&!t.has(e)&&t.set(e,e),Array.from(t,([n,a])=>({label:a,value:n})).sort((n,a)=>n.label.localeCompare(a.label))}function F6e({value:e,onChange:t,disabled:o}){let r=ye([uc,Xs],()=>Wdt(e),[e],ia.isEqual);return i("section",null,i(oe,{tag:"h5"},"Game/Application"),i(pe,{flexDirection:"column",gap:8},i(Fn,{options:r,value:e||void 0,onChange:n=>t(Wh(n)??""),placeholder:"Select a game",isDisabled:o,clearable:!0,renderOptionPrefix:n=>{let a=Wh(n.value),s=a?Xs.getApplication(a):null;return s?.icon?i("img",{src:at.getApplicationIconURL({id:s.id,icon:s.icon}),width:24,height:24,style:{borderRadius:4}}):null}}),i(Te,{value:e,onChange:t,placeholder:"Custom application ID",disabled:o})))}var _6e=h(()=>{"use strict";d();Lt();We();Je();_e();Wt();C();DD()});function ZZ(e,t){ce(o=>i(Kdt,{modalProps:o,channelId:e,clip:t}))}function Kdt({modalProps:e,channelId:t,clip:o}){let r=D6e(),[n,a]=T(null),[s,l]=T(r),[c,u]=T(E6e(o)),[p,m]=T(T6e(o)),[g,x]=T(!1),[v,y]=T(!1),[A,k]=T(!1),[w,I]=T(L6e(I6e(o))),[E,N]=T(""),[B,_]=T(Wh(o?.applicationId)??""),[q,$]=T(!1),[re,Z]=T(!1),ee=!!(n&&s.trim()&&p.trim()&&WZ(w))&&!q,ae=w&&!WZ(w)?{message:"Created at must be a valid date.",type:"critical"}:void 0;G(()=>ED,[]);async function ge(){let Ee;try{if(Ee=await N6e(re),!Ee)return}catch(me){ne(KZ(me),D.Type.FAILURE);return}let{file:Ue,metadata:it}=Ee;a(Ue),l(me=>me===r?Ue.name:me);let se=it?.applicationName,te=it?.users,xe=it?.applicationId;m(me=>se||me||qZ(Ue.name)),te?.length&&u(me=>me.length?me:te),xe&&_(me=>me||xe)}async function ke(){if(!n||!ee)return;if($(!0),await B6e(n,{fileName:s.trim(),participants:c,title:p.trim(),spoiler:g,remix:v,thumbnail:A,createdAt:new Date(w).toISOString(),message:E,channelId:t,applicationId:B.trim()||void 0,remoteClipId:Wh(o?.remoteClipId),eventsTimeline:o?.eventsTimeline})){e.onClose();return}$(!1)}return i(be,{...e,title:"Upload Clip File",notice:ae,actions:[{text:"Cancel",variant:"secondary",onClick:e.onClose,disabled:q},{text:q?"Uploading":"Upload",variant:"primary",onClick:()=>{ke()},disabled:!ee}]},i(pe,{flexDirection:"column",gap:12},i("section",null,i(oe,{tag:"h5"},"File"),i(pe,{alignItems:"center",gap:8},i(de,{onClick:()=>{ge()},disabled:q},"Select File"),i(U,null,n?.name??"No file selected")),i(Np,{value:re,onChange:(Ee,Ue)=>Z(Ue),disabled:q,type:"row"},"Parse clip metadata from file")),i(PD,{title:"File name",value:s,onChange:l,placeholder:"my_clip.mp4",disabled:q}),i(PD,{title:"Title",value:p,onChange:m,placeholder:"Epic Moment",disabled:q}),i(O6e,{value:c,onChange:u,disabled:q}),i(R6e,{value:w,onChange:I,disabled:q}),i(PD,{title:"Message",value:E,onChange:N,placeholder:"Check out this clip!",disabled:q,multiline:!0}),i(F6e,{value:B,onChange:_,disabled:q}),i(pe,{flexDirection:"column",gap:8},i(MD,{label:"Spoiler",value:g,onChange:x,disabled:q}),i(MD,{label:"Remix",value:v,onChange:y,disabled:q}),i(MD,{label:"Thumbnail",value:A,onChange:k,disabled:q}))))}var U6e=h(()=>{"use strict";d();Tt();Lt();We();Je();C();_6e();DD()});var Qdt,Zdt,ND,z6e=h(()=>{"use strict";d();Pe();ot();O();R();le();C();DD();U6e();Qdt=he("Children.map","isValidElement","dangerous:"),Zdt=(e,t)=>{t.channel&&e.push(i(P.MenuItem,{id:"vc-upload-clip-file",iconLeft:n1,label:"Upload Clip File",action:()=>ZZ(t.channel.id)}))},ND=S({name:"ClipUpload",description:"Adds a button to upload a local video file as a Discord clip.",authors:[F.qdnx,F.BachLe2000,F.pandaptable,F.Nyro,F.Jahsohsani],tags:["Media","Utility"],patches:[{find:'"ChannelAttachmentUpload"',replacement:{match:/(?<=description:\i,spoiler:\i.{0,160},\{children:\[)/,replace:"$&$self.UploadClipFileButton(arguments[0]),"}}],contextMenus:{"channel-attach":Zdt},stop:ED,UploadClipFileButton:H.wrap(({channelId:e,clip:t})=>t?i(Qdt,{tooltip:"Upload clip file",onClick:()=>ZZ(e,t)},i(n1,{width:20,height:20})):null,{noop:!0})})});var Ydt,Jdt,YZ,BD,$6e=h(()=>{"use strict";d();j();Tt();O();_e();R();C();Ydt=[3,4,5,6,7,10,15,20,25,30],Jdt=[45,90,120,144,165,240],YZ=M({richPresenceTagging:{type:4,description:"When should clips be tagged with the current Rich Presence?",options:[{label:"Always",value:"always"},{label:"Only when beginning or end of activity name matches",value:"whenMatched",default:!0},{label:"Never",value:"never"}]},clipsLink:{type:6,description:"",component:()=>i(f,null,i(de,{onClick:()=>{un.openUserSettings("clips_panel")}},"Change FPS and duration options in Clips settings!"))}});oo("ClipsEnhancements","TimelessClips");BD=S({name:"ClipsEnhancements",description:"Add more Clip FPS and duration options, custom clip length, RPC tagging and more",tags:["Activity","Media","Utility"],authors:[b.niko,b.Joona,F.keircn],settings:YZ,patches:[{find:"#{intl::CLIPS_UNKNOWN_SOURCE}",replacement:{match:/(applicationName:)(.{0,50})(,applicationId:)(\i)/,replace:"$1$2$3$self.getApplicationId($2)??$4"}},{find:".SECONDS_30,label:",replacement:[{match:/\[\{.{0,25}\i.\i.SECONDS_30.{0,500}\}\]/,replace:" $self.patchTimeslots($&)"},{match:/\[\{.{0,25}\i.\i.FPS_15.{0,500}\}\]/,replace:" $self.patchFramerates($&)"}]}],patchTimeslots(e){let t=[...e];return Ydt.forEach(o=>t.push({id:`${o}min`,value:o*6e4,label:Xe("CLIPS_LENGTH_MINUTES",{count:o})})),t.sort((o,r)=>o.value-r.value)},patchFramerates(e){let t=[...e];return Jdt.forEach(o=>t.push({id:`${o}fps`,value:o,label:Xe("SCREENSHARE_FPS_ABBREVIATED",{fps:o})})),t.sort((o,r)=>o.value-r.value)},getApplicationId(e){if(YZ.store.richPresenceTagging==="never")return null;let o=Yo.getActivities(L.getCurrentUser().id).filter(a=>a.type===0&&a.application_id!==null),r=e.split(" "),n=o.filter(a=>a.name.endsWith(r.at(-1))||a.name.startsWith(r.at(0)));return n.length>0?n[0].application_id:YZ.store.richPresenceTagging!=="whenMatched"?o[0]?.application_id??null:null}})});function XZ(e){G6e=e}function VZ(e){RD=e}function Kh(e){return t=>G6e?.(e,t)}var Yl,j5,JZ,G6e,RD,Os,H6e=h(()=>{"use strict";d();j();R();Yl={guildBar:{id:"guildBar",classId:"guild-bar",label:"Guild Bar",collapsedKey:"guildBarCollapsed"},channelList:{id:"channelList",classId:"channel-list",label:"Channel List",collapsedKey:"channelListCollapsed"},membersList:{id:"membersList",classId:"members-list",label:"Members List",collapsedKey:"membersListCollapsed"},chatButtons:{id:"chatButtons",classId:"chat-buttons",label:"Message Buttons",collapsedKey:"chatButtonsCollapsed"},titleBar:{id:"titleBar",classId:"title-bar",label:"Title Bar",collapsedKey:"titleBarCollapsed"},headerBar:{id:"headerBar",classId:"header-bar",label:"Header Bar",collapsedKey:"headerBarCollapsed"},userArea:{id:"userArea",classId:"user-area",label:"User Area",collapsedKey:"userAreaCollapsed"}},j5=["guildBar","channelList","membersList","chatButtons","titleBar","headerBar","userArea"],JZ=j5.map(e=>Yl[e].collapsedKey);Os=M({detachUserArea:{type:3,description:"Detach the user area so it can be moved freely when it is not collapsed.",default:!1,onChange:()=>RD?.()},detachedUserAreaX:{type:1,description:"Persist the detached user area x position.",default:-1,hidden:!0,onChange:()=>RD?.()},detachedUserAreaY:{type:1,description:"Persist the detached user area y position.",default:-1,hidden:!0,onChange:()=>RD?.()},guildBarCollapsed:{type:3,description:"Persist the guild bar as collapsed.",default:!1,hidden:!0,onChange:Kh("guildBar")},channelListCollapsed:{type:3,description:"Persist the channel list as collapsed.",default:!1,hidden:!0,onChange:Kh("channelList")},membersListCollapsed:{type:3,description:"Persist the members list as collapsed.",default:!1,hidden:!0,onChange:Kh("membersList")},chatButtonsCollapsed:{type:3,description:"Persist the message button row as collapsed.",default:!1,hidden:!0,onChange:Kh("chatButtons")},titleBarCollapsed:{type:3,description:"Persist the title bar as collapsed.",default:!1,hidden:!0,onChange:Kh("titleBar")},headerBarCollapsed:{type:3,description:"Persist the header bar as collapsed.",default:!1,hidden:!0,onChange:Kh("headerBar")},userAreaCollapsed:{type:3,description:"Persist the user area as collapsed.",default:!1,hidden:!0,onChange:Kh("userArea")}})});var j6e,q6e=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/collapsibleUi/style.css",{name:"src/equicordplugins/collapsibleUi/style.css",source:`[data-vc-collapsible-ui-base], [data-vc-collapsible-ui-guild-bar], [data-vc-collapsible-ui-channel-list], [data-vc-collapsible-ui-members-list], [data-vc-collapsible-ui-title-bar], [data-vc-collapsible-ui-header-bar], [data-vc-collapsible-ui-user-area], .vc-collapsible-ui-chat-buttons { --vc-cui-peek-size: 12px; --vc-cui-user-area-collapsed-width: 52px; --vc-cui-header-bar-height: 32px; --vc-cui-collapsed-block-size: 8px; --vc-cui-guild-bar-expanded-width: 64px; --vc-cui-channel-list-min-width: 264px; --vc-cui-channel-list-max-width: 432px; --vc-cui-members-list-expanded-width: 240px; --vc-cui-title-bar-expanded-height: 46px; --vc-cui-chat-buttons-offset: 24px; --vc-cui-restore-button-size: 24px; --vc-cui-fade-delay: 80ms; --vc-cui-transition: 140ms ease; } [data-vc-collapsible-ui-base-channel-list-collapsed] { /* stylelint-disable-next-line value-keyword-case */ grid-template-columns: [start] min-content [guildsEnd] var(--vc-cui-peek-size) [channelsEnd] 1fr [end] !important; } [data-vc-collapsible-ui-base-channel-list-collapsed][data-vc-collapsible-ui-base-channel-list-interaction-expanded] { /* stylelint-disable-next-line value-keyword-case */ grid-template-columns: [start] min-content [guildsEnd] var(--custom-guild-sidebar-width, 312px) [channelsEnd] 1fr [end] !important; } /* BetterFolders redefines the base grid with an extra folder column, so the collapsed templates must keep its [sidebarEnd] track to stay in sync. */ [data-vc-collapsible-ui-base-channel-list-collapsed].vc-betterFolders-sidebar-grid { /* stylelint-disable-next-line value-keyword-case */ grid-template-columns: [start] min-content [guildsEnd] min-content [sidebarEnd] var(--vc-cui-peek-size) [channelsEnd] 1fr [end] !important; } [data-vc-collapsible-ui-base-channel-list-collapsed][data-vc-collapsible-ui-base-channel-list-interaction-expanded].vc-betterFolders-sidebar-grid { /* stylelint-disable-next-line value-keyword-case */ grid-template-columns: [start] min-content [guildsEnd] min-content [sidebarEnd] var(--custom-guild-sidebar-width, 312px) [channelsEnd] 1fr [end] !important; } [data-vc-collapsible-ui-guild-bar], [data-vc-collapsible-ui-channel-list], [data-vc-collapsible-ui-members-list], [data-vc-collapsible-ui-title-bar], [data-vc-collapsible-ui-header-bar], [data-vc-collapsible-ui-user-area] { overflow: hidden; transition: opacity var(--vc-cui-transition); } [data-vc-collapsible-ui-sidebar] { position: relative; } [data-vc-collapsible-ui-sidebar-user-area-detached] { --custom-app-panels-height: 0px !important; } [data-vc-collapsible-ui-sidebar-channel-list-collapsed] { z-index: 5; overflow: visible !important; } [data-vc-collapsible-ui-guild-bar-collapsed]:not(.vc-betterFolders-sidebar *), [data-vc-collapsible-ui-channel-list-collapsed], [data-vc-collapsible-ui-members-list-collapsed] { width: var(--vc-cui-peek-size) !important; min-width: var(--vc-cui-peek-size) !important; max-width: var(--vc-cui-peek-size) !important; flex: 0 0 var(--vc-cui-peek-size) !important; opacity: 0.01; /* Delay only the opacity fade; dimensions change immediately to avoid animated layout work. */ transition-delay: var(--vc-cui-fade-delay); } [data-vc-collapsible-ui-guild-bar-collapsed]:not(.vc-betterFolders-sidebar *):hover, [data-vc-collapsible-ui-guild-bar-collapsed][data-vc-collapsible-ui-guild-bar-interaction-expanded]:not(.vc-betterFolders-sidebar *) { width: var(--vc-cui-guild-bar-expanded-width) !important; min-width: var(--vc-cui-guild-bar-expanded-width) !important; max-width: var(--vc-cui-guild-bar-expanded-width) !important; flex-basis: var(--vc-cui-guild-bar-expanded-width) !important; opacity: 1; transition-delay: 0ms; } /* BetterFolders renders a duplicate guilds nav inside its folder sidebar. The collapse rules above exempt that duplicate; collapse the sidebar wrapper in sync with the real guild bar instead. */ [data-vc-collapsible-ui-sidebar-guild-bar-collapsed] .vc-betterFolders-sidebar { width: 0 !important; min-width: 0 !important; opacity: 0.01; overflow: hidden; transition: opacity var(--vc-cui-transition); transition-delay: var(--vc-cui-fade-delay); } [data-vc-collapsible-ui-guild-bar-collapsed]:hover ~ .vc-betterFolders-sidebar, [data-vc-collapsible-ui-sidebar-guild-bar-collapsed] .vc-betterFolders-sidebar:hover { width: auto !important; opacity: 1; transition-delay: 0ms; } [data-vc-collapsible-ui-channel-list-expanded], [data-vc-collapsible-ui-channel-list-collapsed]:is(:hover, :focus-within) { width: var(--custom-guild-sidebar-width, 312px) !important; min-width: var(--vc-cui-channel-list-min-width) !important; max-width: var(--vc-cui-channel-list-max-width) !important; flex-basis: var(--custom-guild-sidebar-width, 312px) !important; opacity: 1; transition-delay: 0ms; } [data-vc-collapsible-ui-sidebar-channel-list-expanded] { width: var(--custom-guild-sidebar-width, 312px) !important; min-width: var(--custom-guild-sidebar-width, 312px) !important; max-width: var(--custom-guild-sidebar-width, 312px) !important; } [data-vc-collapsible-ui-sidebar-channel-list-expanded] [data-vc-collapsible-ui-channel-list-collapsed] { width: var(--custom-guild-sidebar-width, 312px) !important; min-width: var(--vc-cui-channel-list-min-width) !important; max-width: var(--vc-cui-channel-list-max-width) !important; flex-basis: var(--custom-guild-sidebar-width, 312px) !important; opacity: 1; } [data-vc-collapsible-ui-members-list-collapsed] { flex: 0 1 auto !important; flex-basis: auto !important; } [data-vc-collapsible-ui-members-list-collapsed]:is(:hover, :focus-within) { width: var(--vc-cui-members-list-expanded-width) !important; min-width: var(--vc-cui-members-list-expanded-width) !important; max-width: var(--vc-cui-members-list-expanded-width) !important; flex-basis: auto !important; opacity: 1; } [data-vc-collapsible-ui-title-bar-collapsed] { height: var(--vc-cui-collapsed-block-size) !important; min-height: var(--vc-cui-collapsed-block-size) !important; max-height: var(--vc-cui-collapsed-block-size) !important; padding-block: 0 !important; color: transparent !important; opacity: 0.01 !important; } [data-vc-collapsible-ui-title-bar-collapsed]:is(:hover, :focus-within) { height: var(--vc-cui-title-bar-expanded-height) !important; min-height: var(--vc-cui-title-bar-expanded-height) !important; max-height: var(--vc-cui-title-bar-expanded-height) !important; color: inherit !important; opacity: 1 !important; } [data-vc-collapsible-ui-base-header-bar-collapsed] { --custom-app-top-bar-height: var(--vc-cui-collapsed-block-size) !important; } [data-vc-collapsible-ui-base-header-bar-expanded] { --custom-app-top-bar-height: var(--vc-cui-header-bar-height) !important; } [data-vc-collapsible-ui-header-bar-collapsed] { position: relative; z-index: 10; height: var(--vc-cui-collapsed-block-size) !important; min-height: var(--vc-cui-collapsed-block-size) !important; max-height: var(--vc-cui-collapsed-block-size) !important; opacity: 0.01; -webkit-app-region: drag; overflow: visible; } [data-vc-collapsible-ui-header-bar-expanded] { opacity: 1; } [data-vc-collapsible-ui-header-bar-collapsed]::before { position: absolute; z-index: 2; inset: 0; height: var(--vc-cui-collapsed-block-size); content: ""; pointer-events: auto; -webkit-app-region: no-drag; } [data-vc-collapsible-ui-header-bar-collapsed] > * { pointer-events: none; } [data-vc-collapsible-ui-user-area-collapsed] > * { opacity: 0; pointer-events: none; } [data-vc-collapsible-ui-header-bar-collapsed][data-vc-collapsible-ui-header-bar-interaction-expanded] { height: var(--vc-cui-header-bar-height) !important; min-height: var(--vc-cui-header-bar-height) !important; max-height: var(--vc-cui-header-bar-height) !important; opacity: 1; overflow: visible; } [data-vc-collapsible-ui-header-bar-collapsed][data-vc-collapsible-ui-header-bar-interaction-expanded]::before { display: none; } [data-vc-collapsible-ui-header-bar-collapsed][data-vc-collapsible-ui-header-bar-interaction-expanded] > * { pointer-events: auto; } [data-vc-collapsible-ui-user-area-collapsed] { height: var(--vc-cui-peek-size) !important; min-height: var(--vc-cui-peek-size) !important; max-height: var(--vc-cui-peek-size) !important; padding-block: 0 !important; border-top-width: 0 !important; } [data-vc-collapsible-ui-user-area-collapsed]:is(:hover, :focus-within) { height: auto !important; min-height: 0 !important; max-height: none !important; } [data-vc-collapsible-ui-user-area-collapsed]:is(:hover, :focus-within) > * { opacity: 1; pointer-events: auto; } /* Solid background only where the panel floats over other content; docked states keep the theme's own panel background. */ [data-vc-collapsible-ui-user-area-detached], [data-vc-collapsible-ui-user-area-collapsed]:is(:hover, :focus-within), [data-vc-collapsible-ui-sidebar-channel-list-collapsed]:not([data-vc-collapsible-ui-sidebar-user-area-detached]) [data-vc-collapsible-ui-user-area] { background: var(--background-secondary-alt) !important; } [data-vc-collapsible-ui-sidebar-channel-list-collapsed]:not([data-vc-collapsible-ui-sidebar-user-area-detached]) [data-vc-collapsible-ui-user-area] { width: var(--vc-cui-user-area-collapsed-width) !important; min-width: var(--vc-cui-user-area-collapsed-width) !important; max-width: var(--vc-cui-user-area-collapsed-width) !important; z-index: 4; } [data-vc-collapsible-ui-sidebar-channel-list-collapsed]:not([data-vc-collapsible-ui-sidebar-user-area-detached]) [data-vc-collapsible-ui-user-area-expanded] { position: absolute !important; right: auto !important; bottom: 6px !important; left: 6px !important; height: var(--vc-cui-user-area-collapsed-width) !important; min-height: var(--vc-cui-user-area-collapsed-width) !important; max-height: var(--vc-cui-user-area-collapsed-width) !important; flex: 0 0 auto !important; align-self: flex-start; overflow: hidden !important; } [data-vc-collapsible-ui-sidebar-channel-list-collapsed]:not([data-vc-collapsible-ui-sidebar-user-area-detached]) [data-vc-collapsible-ui-user-area-expanded] > * { width: var(--custom-guild-sidebar-width, 312px); min-width: var(--vc-cui-channel-list-min-width); max-width: var(--vc-cui-channel-list-max-width); opacity: 1; pointer-events: auto; } [data-vc-collapsible-ui-sidebar-channel-list-collapsed]:not([data-vc-collapsible-ui-sidebar-user-area-detached]) [data-vc-collapsible-ui-user-area-expanded]:is(:hover, :focus-within) { width: var(--custom-guild-sidebar-width, 312px) !important; min-width: var(--vc-cui-channel-list-min-width) !important; max-width: var(--vc-cui-channel-list-max-width) !important; height: auto !important; min-height: 0 !important; max-height: none !important; overflow: visible !important; } [data-vc-collapsible-ui-sidebar-channel-list-collapsed]:not([data-vc-collapsible-ui-sidebar-user-area-detached]) [data-vc-collapsible-ui-user-area-guild-bar-collapsed][data-vc-collapsible-ui-user-area-collapsed] { width: var(--vc-cui-peek-size) !important; min-width: var(--vc-cui-peek-size) !important; max-width: var(--vc-cui-peek-size) !important; } [data-vc-collapsible-ui-sidebar-channel-list-collapsed]:not([data-vc-collapsible-ui-sidebar-user-area-detached]) [data-vc-collapsible-ui-user-area-collapsed]:is(:hover, :focus-within) { width: var(--custom-guild-sidebar-width, 312px) !important; min-width: var(--vc-cui-channel-list-min-width) !important; max-width: var(--vc-cui-channel-list-max-width) !important; } [data-vc-collapsible-ui-sidebar-channel-list-expanded]:not([data-vc-collapsible-ui-sidebar-user-area-detached]) [data-vc-collapsible-ui-user-area] { /* Anchor both edges instead of forcing a width: the guild bar column is min-content and theme-dependent, so a fixed width leaves a right-side gap whenever the guild bar is expanded. */ left: 0 !important; right: 0 !important; width: auto !important; min-width: 0 !important; max-width: none !important; } [data-vc-collapsible-ui-user-area-detached] { position: fixed !important; right: auto !important; bottom: auto !important; width: var(--custom-guild-sidebar-width, 312px) !important; min-width: var(--custom-guild-sidebar-width, 312px) !important; max-width: var(--custom-guild-sidebar-width, 312px) !important; height: auto !important; min-height: 0 !important; max-height: none !important; cursor: grab; z-index: 2 !important; } [data-vc-collapsible-ui-user-area-detached]:active { cursor: grabbing; } .vc-collapsible-ui-chat-buttons { position: relative; display: flex; align-items: center; gap: 4px; min-inline-size: 0; } .vc-collapsible-ui-chat-buttons-items { display: flex; align-items: center; min-inline-size: 0; overflow: hidden; transition: transform var(--vc-cui-transition), opacity var(--vc-cui-transition); transform-origin: right center; } .vc-collapsible-ui-chat-buttons-collapsed .vc-collapsible-ui-chat-buttons-items { position: absolute; top: 50%; right: var(--vc-cui-chat-buttons-offset); width: max-content; opacity: 0; pointer-events: none; transform: translateY(-50%) scaleX(0); transition-delay: var(--vc-cui-fade-delay); } .vc-collapsible-ui-chat-buttons-collapsed:is(:hover, :focus-within) .vc-collapsible-ui-chat-buttons-items { opacity: 1; pointer-events: auto; transform: translateY(-50%) scaleX(1); transition-delay: 0ms; } .vc-collapsible-ui-restore-button { display: flex; align-items: center; justify-content: center; width: var(--vc-cui-restore-button-size); height: var(--vc-cui-restore-button-size); border-radius: var(--radius-sm); color: var(--interactive-normal); } .vc-collapsible-ui-restore-button:hover { color: var(--interactive-hover); background: var(--background-modifier-hover); } .vc-collapsible-ui-chat-buttons:not(.vc-collapsible-ui-chat-buttons-collapsed) .vc-collapsible-ui-restore-button { display: none; } @media (prefers-reduced-motion: reduce) { [data-vc-collapsible-ui-guild-bar], [data-vc-collapsible-ui-channel-list], [data-vc-collapsible-ui-members-list], [data-vc-collapsible-ui-title-bar], [data-vc-collapsible-ui-header-bar], [data-vc-collapsible-ui-user-area], .vc-collapsible-ui-chat-buttons, .vc-collapsible-ui-chat-buttons-items { --vc-cui-transition: 0ms; } } `,classNames:{},dom:null});j6e="src/equicordplugins/collapsibleUi/style.css"});function rY(e){return i("svg",{viewBox:"0 0 24 24",fill:"none",...e},i("path",{fill:"currentColor",d:"M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v3H3V5Zm0 5h6v11H5a2 2 0 0 1-2-2V10Zm8 0h10v9a2 2 0 0 1-2 2H11V10Zm2-5h8v3h-8V5Z"}))}function Ii(e){return Os.plain[Yl[e].collapsedKey]}function tpt(e){let t=Yl[e].collapsedKey;return Os.use([t])[t]}function opt(e){for(let t of Xdt[e])su(t)}function _D(e){fg!==e&&(fg=e,su("base"),su("headerBar"))}function q5(e){my!==e&&(my=e,su("base"),su("sidebar"))}function X6e(e){W5!==e&&(W5=e,su("guildBar"))}function V6e(e,t){e==="guildBar"&&(W5=!1),e==="channelList"&&(my=!1),e==="headerBar"&&(iY(t),t||(fg=!1)),opt(e)}function npt(){for(let e of j5)V6e(e,Ii(e))}function K6e(e,t){let o=FD.get(e);if(o!=null)return o;let r=K5??gy;if(!r)return t;let n=parseFloat(getComputedStyle(r).getPropertyValue(e));return Number.isFinite(n)?(FD.set(e,n),n):t}function Q6e(e){if(!Ii("headerBar")){iY(!1),_D(!1);return}let t=fg?K6e("--vc-cui-header-bar-height",32):K6e("--vc-cui-collapsed-block-size",8);_D(e.clientY>=0&&e.clientY<=t)}function iY(e){W6e!==e&&(W6e=e,e?(FD.clear(),document.addEventListener("mousemove",Q6e,!0)):document.removeEventListener("mousemove",Q6e,!0))}function rpt(e,t){let o=Yl[e].collapsedKey;Os.plain[o]!==t&&(Os.store[o]=t)}function ipt(e){rpt(e,!Ii(e))}function UD(e){rt.openContextMenu(e,()=>i(gpt,{onClose:rt.closeContextMenu}))}function e3e(e){let{currentTarget:t,relatedTarget:o}=e;return o instanceof Node&&t.contains(o)}function zD(e,t){return t instanceof Node&&!!e?.contains(t)}function tY(e,t){if(!e)return!1;if(zD(e,t.target)||t.nativeEvent.composedPath().some(o=>zD(e,o)))return!0;if("clientX"in t&&"clientY"in t){let o=e.getBoundingClientRect();return t.clientX>=o.left&&t.clientX<=o.right&&t.clientY>=o.top&&t.clientY<=o.bottom}return!1}function apt(e){return e.target instanceof Element&&!!e.target.closest(".vc-betterFolders-sidebar")}function Z6e(e){if(Ii("guildBar")&&X6e(apt(e)),tY(K5,e)){q5(!1);return}Ii("channelList")&&tY(gy,e)&&q5(!0)}function Y6e(e){if(e.relatedTarget instanceof Element&&e.relatedTarget.closest(".vc-betterFolders-sidebar")||X6e(!1),zD(K5,e.relatedTarget)){q5(!1);return}if(tY(gy,e)&&!zD(gy,e.relatedTarget)){q5(!1);return}e3e(e)||Ii("channelList")&&q5(!1)}function spt(e){if(!(e instanceof HTMLElement))return!1;if(e.isContentEditable)return!0;switch(e.tagName){case"A":case"BUTTON":case"INPUT":case"SELECT":case"TEXTAREA":return!0}return e.getAttribute("role")==="button"||e.getAttribute("aria-haspopup")==="menu"}function oY(){return Os.plain.detachUserArea&&!Ii("userArea")}function lpt(e){gy=e}function cpt(e){K5=e}function upt(){su("sidebar"),su("userArea")}function $D(e,t,o=J6e,r=nY){let n=Math.max(py,window.innerWidth-o-py),a=Math.max(py,window.innerHeight-r-py);return{x:Math.min(Math.max(py,e),n),y:Math.min(Math.max(py,t),a)}}function t3e(){if(Qd)return Qd;let e=Os.plain.detachedUserAreaX,t=Os.plain.detachedUserAreaY,o=$D(window.innerWidth-J6e-Vdt,window.innerHeight-nY-ept);return!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0?o:$D(e,t)}function dpt(e,t,o,r){let n=$D(e,t,o,r),a=Math.round(n.x),s=Math.round(n.y);Os.plain.detachedUserAreaX===a&&Os.plain.detachedUserAreaY===s||(Os.store.detachedUserAreaX=a,Os.store.detachedUserAreaY=s)}function ppt(){fy==null&&(fy=requestAnimationFrame(()=>{fy=void 0,su("userArea")}))}function mpt(){fy!=null&&(cancelAnimationFrame(fy),fy=void 0)}function o3e(e){if(!mg)return;let t=$D(e.clientX-mg.offsetX,e.clientY-mg.offsetY,mg.width,mg.height);Qd?.x===t.x&&Qd.y===t.y||(Qd=t,OD=!0,ppt())}function aY(){let e=mg;mpt(),e&&Qd&&OD&&dpt(Qd.x,Qd.y,e.width,e.height),mg=void 0,Qd=void 0,OD=!1,document.removeEventListener("mousemove",o3e,!0),document.removeEventListener("mouseup",aY,!0)}function fpt(e){if(!oY()||e.button!==0||e.nativeEvent.composedPath().some(n=>n!==e.currentTarget&&spt(n)))return;let o=e.currentTarget.getBoundingClientRect(),r=Math.min(o.height,nY);Qd=t3e(),OD=!1,mg={offsetX:e.clientX-o.left,offsetY:e.clientY-o.top,width:o.width,height:r},document.addEventListener("mousemove",o3e,!0),document.addEventListener("mouseup",aY,!0)}var LD,Xdt,J6e,nY,py,Vdt,ept,eY,my,W5,fg,W6e,mg,Qd,OD,fy,gy,K5,FD,gpt,hpt,xpt,vpt,GD,n3e=h(()=>{"use strict";d();zp();KG();Pe();O();we();Be();R();C();H6e();q6e();LD=K("vc-collapsible-ui-"),Xdt={guildBar:["guildBar","sidebar","userArea"],channelList:["channelList","base","sidebar"],membersList:["membersList"],chatButtons:[],titleBar:["titleBar"],headerBar:["headerBar","base"],userArea:["userArea","sidebar"]},J6e=312,nY=88,py=16,Vdt=24,ept=88,eY=[],my=!1,W5=!1,fg=!1,W6e=!1,OD=!1,gy=null,K5=null,FD=new Map;gpt=H.wrap(({onClose:e})=>{let t=Os.use(JZ);return i(P.Menu,{navId:"vc-collapsible-ui-toolbar-menu",onClose:e,"aria-label":"Collapsible UI"},j5.map(o=>{let r=Yl[o],n=t[r.collapsedKey];return i(P.MenuCheckboxItem,{key:o,id:`vc-collapsible-ui-${r.classId}`,label:r.label,checked:!n,action:()=>ipt(o)})}))},{noop:!0}),hpt=H.wrap(()=>{let e=Os.use(JZ),t=j5.some(o=>e[Yl[o].collapsedKey]);return i(Q$,{icon:rY,tooltip:"Collapsible UI","aria-label":"Collapsible UI",selected:t,onClick:UD,onContextMenu:UD})},{noop:!0}),xpt=H.wrap(()=>i(eo,{className:LD("restore-button"),role:"button",tabIndex:0,"aria-label":"Collapsible UI",onClick:UD,onContextMenu:UD},i(rY,{width:18,height:18})),{noop:!0}),vpt=H.wrap(({buttons:e})=>{let t=tpt("chatButtons");return e.length===0?i(f,null,e):i("div",{className:X(LD("chat-buttons"),t&&LD("chat-buttons-collapsed"))},i("div",{className:LD("chat-buttons-items")},e),i(xpt,null))},{noop:!0}),GD=S({name:"CollapsibleUI",description:"Native collapsible channel, member, chat button, and user area surfaces.",tags:["Appearance","Customisation","Chat","Servers"],dependencies:["HeaderBarAPI","ChatInputButtonAPI","SurfaceClassesAPI"],authors:[F.benjii],searchTerms:["ui","sidebar","collapsible"],managedStyle:j6e,settings:Os,headerBarButton:{icon:rY,location:"channeltoolbar",priority:25,render:()=>i(hpt,null)},chatBarButtonWrapper:{wrapper:e=>!Array.isArray(e)||e.length===0?e:i(vpt,{buttons:e}),priority:0},start(){let e=(t,o)=>({[`data-vc-collapsible-ui-${t}`]:"",[`data-vc-collapsible-ui-${t}-${o?"collapsed":"expanded"}`]:""});eY=[vd("guildBar",()=>{let t=Ii("guildBar"),o=e(Yl.guildBar.classId,t);return t&&W5&&(o["data-vc-collapsible-ui-guild-bar-interaction-expanded"]=""),o}),vd("channelList",()=>{let t=e(Yl.channelList.classId,Ii("channelList"));return t.ref=lpt,t}),vd("membersList",()=>e(Yl.membersList.classId,Ii("membersList"))),vd("titleBar",()=>e(Yl.titleBar.classId,Ii("titleBar"))),vd("headerBar",()=>{let t=Ii("headerBar"),o=e(Yl.headerBar.classId,t);return t&&fg&&(o["data-vc-collapsible-ui-header-bar-interaction-expanded"]=""),o.onFocusCapture=()=>{Ii("headerBar")&&_D(!0)},o.onBlurCapture=r=>{e3e(r)||Ii("headerBar")&&_D(!1)},o}),vd("userArea",()=>{let t=Ii("userArea"),o=Ii("guildBar"),r=oY(),n=e(Yl.userArea.classId,t);if(n.ref=cpt,r){let a=t3e();n["data-vc-collapsible-ui-user-area-detached"]="",n.style={left:0,top:0,transform:`translate3d(${a.x}px, ${a.y}px, 0)`},n.onMouseDownCapture=fpt}return!r&&o&&(n["data-vc-collapsible-ui-user-area-guild-bar-collapsed"]=""),n}),vd("base",()=>{let t=Ii("channelList"),o=Ii("headerBar");return{"data-vc-collapsible-ui-base":"",[`data-vc-collapsible-ui-base-channel-list-${t?"collapsed":"expanded"}`]:"",...t&&my?{"data-vc-collapsible-ui-base-channel-list-interaction-expanded":""}:{},...o&&!fg?{"data-vc-collapsible-ui-base-header-bar-collapsed":""}:{},...o&&fg?{"data-vc-collapsible-ui-base-header-bar-expanded":""}:{}}}),vd("sidebar",()=>{let t=Ii("channelList"),o=oY();return{"data-vc-collapsible-ui-sidebar":"",[`data-vc-collapsible-ui-sidebar-channel-list-${t?"collapsed":"expanded"}`]:"",...t&&my?{"data-vc-collapsible-ui-sidebar-channel-list-expanded":""}:{},...Ii("guildBar")?{"data-vc-collapsible-ui-sidebar-guild-bar-collapsed":""}:{},...o?{"data-vc-collapsible-ui-sidebar-user-area-detached":""}:{},onFocusCapture:Z6e,onBlurCapture:Y6e,onMouseOverCapture:Z6e,onMouseOutCapture:Y6e}})],XZ(V6e),VZ(upt),npt()},stop(){XZ(void 0),VZ(void 0),aY(),eY.forEach(e=>e()),eY=[],iY(!1),gy=null,K5=null,my=!1,W5=!1,fg=!1,FD.clear()}})});var r3e=h(()=>{});function sY(){for(let e of HD)e()}function i3e(e){return HD.add(e),()=>{HD.delete(e)}}function qD(e,t){jD.set(e,t),sY()}function a3e(){jD.clear(),HD.clear()}function s3e(){let e=[];for(let t of jD.values())for(let o of t)o.predicate&&!o.predicate()||e.push(o);return e}function l3e(e){for(let t of jD.values()){let o=t.find(r=>r.id===e);if(o)return o}}var jD,HD,hy=h(()=>{"use strict";d();jD=new Map,HD=new Set});function Zd(e,t){let o=`CommandPalette_${e}`,r=t;return{async load(){let n=await vt(o);n!==void 0&&(r=n)},get(){return r},set(n){r=n,Ct(o,n),sY()}}}var xy=h(()=>{"use strict";d();Io();hy()});function Q5(e){return WD.get()[e]}function u3e(e,t){let o={...WD.get()},r=t.trim();r?o[e]=r:delete o[e],WD.set(o)}var WD,c3e,KD=h(()=>{"use strict";d();xy();WD=Zd("aliases",{}),c3e=WD.load});function Y5(e){let t={...Z5.get()},o=t[e];t[e]={count:(o?.count??0)+1,last:Date.now()},Z5.set(t)}function QD(e){let t=Z5.get()[e];if(!t)return 0;let o=Date.now()-t.last,r=oQD(o[0])-QD(t[0])).slice(0,e).map(([t])=>t)}var Z5,lY,d3e,ZD=h(()=>{"use strict";d();xy();Z5=Zd("frecency",{}),lY=864e5,d3e=Z5.load});function f3e(){return J5.get()}function YD(e){return J5.get().includes(e)}function g3e(e){let t=J5.get();J5.set(t.includes(e)?t.filter(o=>o!==e):[...t,e])}var J5,m3e,JD=h(()=>{"use strict";d();xy();J5=Zd("pins",[]),m3e=J5.load});function Nc(e,t){let o=e.toLowerCase().trim(),r=t.toLowerCase();if(!o||!r)return 0;if(r===o)return 1e3;if(r.startsWith(o))return 800+Math.max(0,60-r.length);let n=r.indexOf(" "+o);if(n!==-1)return 650-Math.min(n,100);let a=r.indexOf(o);if(a!==-1)return 450-Math.min(a,200);let s=0,l=-1;for(let p of o){if(s=r.indexOf(p,s),s===-1)return 0;l===-1&&(l=s),s+=1}let c=s-l,u=o.length/c;return 100+Math.round(u*100)}function h3e(e,t){let o=[];for(let r of t){let n=Nc(e,r.title),a=Q5(r.id);a&&(n=Math.max(n,Nc(e,a)*1.3));for(let s of r.keywords??[])n=Math.max(n,Nc(e,s)*.7);r.subtitle&&(n=Math.max(n,Nc(e,r.subtitle)*.4)),n=Math.max(n,Nc(e,r.section)*.3),!(n<=0)&&(n+=QD(r.id)*8,YD(r.id)&&(n+=40),o.push({command:r,score:n}))}return o.sort((r,n)=>n.score-r.score)}function x3e(e,t,o=6){let r=e.trim();return r?t.map(n=>({option:n,score:Nc(r,n.label)})).filter(n=>n.score>0).sort((n,a)=>a.score-n.score).slice(0,o).map(n=>n.option):t.slice(0,o)}var XD=h(()=>{"use strict";d();KD();ZD();JD()});function Xn(e){return function({className:o}){return i("svg",{className:o,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},e())}}var v3e,y3e,Yd,b3e,VD,eP,cY,tP,S3e,X5,oP,w3e,uY,vy,A3e,k3e,C3e,T3e,I3e,E3e,dY,pY,mY,D3e,nP,fY,gg=h(()=>{"use strict";d();v3e=Xn(()=>i(f,null,i("circle",{cx:"11",cy:"11",r:"8"}),i("path",{d:"m21 21-4.3-4.3"}))),y3e=Xn(()=>i("path",{d:"m15 18-6-6 6-6"})),Yd=Xn(()=>i(f,null,i("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),i("circle",{cx:"12",cy:"12",r:"3"}))),b3e=Xn(()=>i(f,null,i("circle",{cx:"12",cy:"12",r:"10"}),i("polygon",{points:"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"}))),VD=Xn(()=>i(f,null,i("rect",{width:"20",height:"8",x:"2",y:"2",rx:"2"}),i("rect",{width:"20",height:"8",x:"2",y:"14",rx:"2"}),i("line",{x1:"6",x2:"6.01",y1:"6",y2:"6"}),i("line",{x1:"6",x2:"6.01",y1:"18",y2:"18"}))),eP=Xn(()=>i(f,null,i("line",{x1:"4",x2:"20",y1:"9",y2:"9"}),i("line",{x1:"4",x2:"20",y1:"15",y2:"15"}),i("line",{x1:"10",x2:"8",y1:"3",y2:"21"}),i("line",{x1:"16",x2:"14",y1:"3",y2:"21"}))),cY=Xn(()=>i(f,null,i("path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"}),i("circle",{cx:"12",cy:"7",r:"4"}))),tP=Xn(()=>i(f,null,i("path",{d:"M12 22v-5"}),i("path",{d:"M9 8V2"}),i("path",{d:"M15 8V2"}),i("path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"}))),S3e=Xn(()=>i(f,null,i("path",{d:"M18.37 2.63 14 7l-1.59-1.59a2 2 0 0 0-2.82 0L8 7l9 9 1.59-1.59a2 2 0 0 0 0-2.82L17 10l4.37-4.37a2.12 2.12 0 1 0-3-3Z"}),i("path",{d:"M9 8c-2 3-4 3.5-7 4l8 10c2-1 6-5 6-7"}),i("path",{d:"M14.5 17.5 4.5 15"}))),X5=Xn(()=>i("polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"})),oP=Xn(()=>i(f,null,i("rect",{width:"16",height:"20",x:"4",y:"2",rx:"2"}),i("line",{x1:"8",x2:"16",y1:"6",y2:"6"}),i("line",{x1:"16",x2:"16",y1:"14",y2:"18"}),i("path",{d:"M16 10h.01"}),i("path",{d:"M12 10h.01"}),i("path",{d:"M8 10h.01"}),i("path",{d:"M12 14h.01"}),i("path",{d:"M8 14h.01"}),i("path",{d:"M12 18h.01"}),i("path",{d:"M8 18h.01"}))),w3e=Xn(()=>i(f,null,i("line",{x1:"12",x2:"12",y1:"17",y2:"22"}),i("path",{d:"M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z"}))),uY=Xn(()=>i(f,null,i("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),i("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}))),vy=Xn(()=>i(f,null,i("path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}),i("path",{d:"m15 5 4 4"}))),A3e=Xn(()=>i(f,null,i("path",{d:"M3 6h18"}),i("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),i("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"}))),k3e=Xn(()=>i(f,null,i("path",{d:"M10 8h.01"}),i("path",{d:"M12 12h.01"}),i("path",{d:"M14 8h.01"}),i("path",{d:"M16 12h.01"}),i("path",{d:"M18 8h.01"}),i("path",{d:"M6 8h.01"}),i("path",{d:"M7 16h10"}),i("path",{d:"M8 12h.01"}),i("rect",{width:"20",height:"16",x:"2",y:"4",rx:"2"}))),C3e=Xn(()=>i(f,null,i("path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"}),i("path",{d:"M19 10v2a7 7 0 0 1-14 0v-2"}),i("line",{x1:"12",x2:"12",y1:"19",y2:"22"}))),T3e=Xn(()=>i("path",{d:"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3"})),I3e=Xn(()=>i("path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"})),E3e=Xn(()=>i(f,null,i("path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}),i("path",{d:"M21 3v5h-5"}),i("path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}),i("path",{d:"M8 16H3v5"}))),dY=Xn(()=>i(f,null,i("path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"}),i("path",{d:"m21.854 2.147-10.94 10.939"}))),pY=Xn(()=>i(f,null,i("path",{d:"M5 12h14"}),i("path",{d:"M12 5v14"}))),mY=Xn(()=>i(f,null,i("rect",{width:"14",height:"14",x:"8",y:"8",rx:"2"}),i("path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"}))),D3e=Xn(()=>i(f,null,i("path",{d:"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"}),i("polyline",{points:"9 22 9 12 15 12 15 22"}))),nP=Xn(()=>i("circle",{cx:"12",cy:"12",r:"10"})),fY=Xn(()=>i(f,null,i("path",{d:"M17 6.1H3"}),i("path",{d:"M21 12.1H3"}),i("path",{d:"M15.1 18H3"})))});function gY(e){return e.trim().toLowerCase().replace(/^\/+/,"").replace(/\s+/g,"_").replace(/&/g,"and")}function bpt(e){let t=gY(e);if(!t)return[];let o=ypt.get(t)??t,r=P3e.get(o)??[],n=new Set,a=[];for(let s of[o,...r,t]){let l=gY(s);if(!l)continue;let c=l.endsWith("_panel")?[l,l.slice(0,-6)]:[`${l}_panel`,l];for(let u of c){let p=gY(u);!p||n.has(p)||(n.add(p),a.push(p))}}return a}async function hg(e,t){let o=bpt(e);if(o.length===0)return ne("No settings page was provided.",D.Type.FAILURE),!1;for(let r of o)try{return await Promise.resolve(un.openUserSettings(r)),!0}catch(n){Spt.debug(`Settings route failed: ${r}`,n);continue}return ne(`Unable to open ${t??"that settings page"}.`,D.Type.FAILURE),!1}var V5,P3e,ypt,Spt,rP=h(()=>{"use strict";d();He();C();V5=[{route:"my_account",label:"My Account",keywords:["account","profile"]},{route:"profiles",label:"Profiles",keywords:["profile","avatar","bio"]},{route:"data_and_privacy",label:"Data & Privacy",keywords:["privacy","safety"]},{route:"devices",label:"Devices",keywords:["sessions"]},{route:"connections",label:"Connections",keywords:["integrations"]},{route:"appearance",label:"Appearance",keywords:["theme","dark","light"]},{route:"accessibility",label:"Accessibility",keywords:[]},{route:"voice_and_video",label:"Voice & Video",keywords:["audio","mic","camera"]},{route:"chat",label:"Chat",keywords:["messages"]},{route:"text_and_images",label:"Text & Images",keywords:["text","images"]},{route:"notifications",label:"Notifications",keywords:[]},{route:"keybinds",label:"Keybinds",keywords:["shortcuts"]},{route:"authorized_apps",label:"Authorized Apps",keywords:["oauth","apps"]},{route:"family_center",label:"Family Center",keywords:["family","safety"]},{route:"advanced",label:"Advanced",keywords:["developer"]},{route:"equicord_main",label:"Equicord",keywords:["vencord"]},{route:"equicord_plugins",label:"Equicord Plugins",keywords:["plugins"]},{route:"equicord_themes",label:"Equicord Themes",keywords:["themes","css"]},{route:"equicord_updater",label:"Equicord Updater",keywords:["update"]},{route:"equicord_changelog",label:"Equicord Changelog",keywords:["changelog","news"]}],P3e=new Map([["my_account",["my_account_panel","account"]],["data_and_privacy",["privacy_and_safety","privacy_&_safety","data_and_privacy_panel"]],["notifications",["legacy_notifications_settings","notifications_panel"]],["voice_and_video",["voice_video","voice_and_video_panel"]],["text_and_images",["text_images","text_and_images_panel"]],["appearance",["appearance_panel"]],["accessibility",["accessibility_panel"]],["keybinds",["keybinds_panel"]],["advanced",["advanced_panel"]],["profiles",["profiles_panel"]],["devices",["devices_panel","sessions_panel"]],["connections",["connections_panel"]],["chat",["chat_panel"]],["authorized_apps",["authorized_apps_panel"]],["family_center",["family_center_panel"]],["equicord_main",["equicord_main_panel"]],["equicord_plugins",["equicord_plugins_panel"]],["equicord_themes",["equicord_themes_panel"]],["equicord_updater",["equicord_updater_panel"]],["equicord_changelog",["equicord_changelog_panel"]]]),ypt=(()=>{let e=new Map;for(let[t,o]of P3e){e.set(t,t);for(let r of o)e.set(r,t)}return e})();Spt=new ie("CommandPalette")});function kpt(e){switch(e.kind){case"url":VencordNative.native.openExternal(e.value);break;case"settings":hg(e.value);break;case"message":tr(e.value);break}}function N3e(e){let t={type:"form",submitLabel:e?"Save Command":"Create Command",fields:[{key:"name",label:"Name",type:"text",placeholder:"Command name",initial:e?.name??""},{key:"kind",label:"Action",type:"select",options:M3e,initial:e?.kind??"url"},{key:"url",label:"URL",type:"text",placeholder:"https://example.com",initial:e?.kind==="url"?e.value:"",visible:o=>o.kind==="url"},{key:"route",label:"Settings page",type:"picker",placeholder:"Search settings pages...",initial:e?.kind==="settings"?e.value:"",suggestions:o=>x3e(o,V5.map(r=>({value:r.route,label:r.label}))),visible:o=>o.kind==="settings"},{key:"text",label:"Text",type:"textarea",placeholder:"Text to insert into the chat box",initial:e?.kind==="message"?e.value:"",visible:o=>o.kind==="message"}],validate(o){if(!o.name.trim())return"Name is required.";let r=o.kind;return r==="url"&&!fc(o.url)?"Enter a valid URL.":r==="settings"&&!V5.some(n=>n.route===o.route)?"Pick a settings page from the suggestions.":r==="message"&&!o.text.trim()?"Text is required.":null},submit(o,r){let n=o.kind,a=n==="url"?o.url.trim():n==="settings"?o.route:o.text,s={id:e?.id??crypto.randomUUID(),name:o.name.trim(),kind:n,value:a};Qh.set(e?Qh.get().map(l=>l.id===e.id?s:l):[...Qh.get(),s]),iP(),ne(e?"Command saved.":"Command created.",D.Type.SUCCESS),r.pop()}};return{title:e?"Edit Custom Command":"Create Custom Command",icon:e?vy:pY,spec:t}}function Cpt(e){let t=[{id:"edit",label:"Edit Command",icon:vy,keepOpen:!0,run:o=>o.push(N3e(e))},{id:"delete",label:"Delete Command",icon:A3e,keepOpen:!0,run(){Qh.set(Qh.get().filter(o=>o.id!==e.id)),iP(),ne("Command deleted.",D.Type.SUCCESS)}}];return{id:`custom.${e.id}`,title:e.name,subtitle:M3e.find(o=>o.value===e.kind)?.label,section:"Custom",icon:Apt[e.kind],actions:[{id:"run",label:"Run Command",icon:X5,run:()=>kpt(e)},...t]}}function iP(){qD(wpt,[{id:"custom.create",title:"Create Custom Command",section:"Custom",keywords:["custom","create","new","command"],icon:pY,page:()=>N3e(null)},...Qh.get().map(Cpt)])}var wpt,Qh,M3e,Apt,B3e,R3e=h(()=>{"use strict";d();_e();Be();C();hy();XD();xy();gg();rP();wpt="CommandPalette.custom",Qh=Zd("customCommands",[]),M3e=[{value:"url",label:"Open URL",icon:uY},{value:"settings",label:"Open Settings Page",icon:Yd},{value:"message",label:"Insert Text in Chat",icon:fY}],Apt={url:uY,settings:Yd,message:fY};B3e=Qh.load});var aP,L3e,Tpt,hY,Ipt,O3e,F3e=h(()=>{"use strict";d();_a();le();C();gg();aP="Discord",L3e=tn("status","status"),Tpt=Oe('type:"UNSYNCED_USER_SETTINGS_UPDATE','"system"==='),hY=[{value:"light",label:"Light"},{value:"darker",label:"Ash"},{value:"dark",label:"Dark"},{value:"midnight",label:"Onyx"}],Ipt=[{value:"online",label:"Online"},{value:"idle",label:"Idle"},{value:"dnd",label:"Do Not Disturb"},{value:"invisible",label:"Invisible"}],O3e=[{id:"discord.toggleMute",title:"Toggle Mute",section:aP,keywords:["mute","microphone","voice"],icon:C3e,actions:[{id:"run",label:"Toggle Mute",run:()=>_n.toggleSelfMute()}]},{id:"discord.toggleDeafen",title:"Toggle Deafen",section:aP,keywords:["deafen","audio","voice"],icon:T3e,actions:[{id:"run",label:"Toggle Deafen",run:()=>_n.toggleSelfDeaf()}]},{id:"discord.setStatus",title:"Set Status",section:aP,keywords:["status","online","idle","dnd","invisible","presence"],icon:nP,page:()=>({title:"Set Status",icon:nP,spec:{type:"list",placeholder:"Search statuses...",items:()=>Ipt.map(e=>({id:e.value,label:e.label,sublabel:L3e?.getSetting()===e.value?"Current":void 0,icon:nP,actions:[{id:"set",label:`Set ${e.label}`,run(){L3e?.updateSetting(e.value),ne(`Status set to ${e.label}.`,D.Type.SUCCESS)}}]}))}})},{id:"discord.toggleTheme",title:"Toggle Theme",section:aP,keywords:["theme","light","ash","dark","onyx","appearance"],icon:I3e,actions:[{id:"run",label:"Toggle Theme",run(){let e=hY.findIndex(o=>o.value===sf.theme),t=hY[(e+1)%hY.length];Tpt({theme:t.value}),ne(`Theme set to ${t.label}.`,D.Type.SUCCESS)}}]}]});var e8,_3e,U3e=h(()=>{"use strict";d();gg();rP();e8="Equicord",_3e=[{id:"equicord.settings",title:"Open Equicord Settings",section:e8,keywords:["equicord","vencord","settings"],icon:Yd,actions:[{id:"run",label:"Open Equicord Settings",run:()=>{hg("equicord_main")}}]},{id:"equicord.quickCss",title:"Open QuickCSS",section:e8,keywords:["css","quickcss","editor","style"],icon:S3e,actions:[{id:"run",label:"Open QuickCSS",run:()=>VencordNative.quickCss.openEditor()}]},{id:"equicord.updater",title:"Open Updater",section:e8,keywords:["update","updater","version"],icon:X5,predicate:()=>!0,actions:[{id:"run",label:"Open Updater",run:()=>{hg("equicord_updater")}}]},{id:"equicord.changelog",title:"Open Changelog",section:e8,keywords:["changelog","news","whats new"],icon:X5,actions:[{id:"run",label:"Open Changelog",run:()=>{hg("equicord_changelog")}}]},{id:"equicord.restart",title:"Restart Discord",section:e8,keywords:["restart","reload","refresh"],icon:E3e,actions:[{id:"run",label:"Restart Discord",run:()=>window.location.reload()}]}]});function Ept(){return Object.values($e.getGuilds()).map(e=>({id:e.id,label:e.name,icon:at.getGuildIconURL({id:e.id,icon:e.icon,size:64})??VD,actions:[{id:"open",label:"Open Server",run:()=>Yt.transitionToGuild(e.id)}]}))}function Dpt(){let e=ao.getGuildId();return e?Da.getSelectableChannels(e).map(({channel:t})=>({id:t.id,label:`#${t.name}`,icon:eP,actions:[{id:"open",label:"Open Channel",run:()=>Li.transitionToChannel(t.id)}]})):[]}function Ppt(){let e=L.getCurrentUser().id;return qe.getFriendIDs().filter(t=>t!==e).map(t=>L.getUser(t)).filter(t=>t!=null).map(t=>({id:t.id,label:t.globalName||t.username,sublabel:t.username,icon:at.getUserAvatarURL(t,!1,64),actions:[{id:"open",label:"Open DM",run:()=>V2(t.id)}]}))}var t8,z3e,$3e=h(()=>{"use strict";d();_e();C();gg();rP();t8="Navigation";z3e=[{id:"navigation.home",title:"Go Home",section:t8,keywords:["friends","dms","home"],icon:D3e,actions:[{id:"run",label:"Go Home",run:()=>Yt.transitionTo("/channels/@me")}]},{id:"navigation.server",title:"Go to Server",section:t8,keywords:["guild","server","jump"],icon:VD,page:()=>({title:"Go to Server",icon:VD,spec:{type:"list",placeholder:"Search servers...",items:Ept}})},{id:"navigation.channel",title:"Go to Channel",section:t8,keywords:["channel","jump"],icon:eP,predicate:()=>ao.getGuildId()!=null,page:()=>({title:"Go to Channel",icon:eP,spec:{type:"list",placeholder:"Search channels...",items:Dpt}})},{id:"navigation.dm",title:"Open DM",section:t8,keywords:["dm","message","friend"],icon:cY,page:()=>({title:"Open DM",icon:cY,spec:{type:"list",placeholder:"Search friends...",items:Ppt}})},{id:"navigation.settings",title:"Open Settings Page",section:t8,keywords:["settings","preferences","options"],icon:Yd,page:()=>({title:"Open Settings Page",icon:Yd,spec:{type:"list",placeholder:"Search settings pages...",items:()=>V5.map(e=>({id:e.route,label:e.label,keywords:e.keywords,icon:b3e,actions:[{id:"open",label:"Open Settings Page",run:()=>{hg(e.route,e.label)}}]}))}})}]});function Mpt(e){let t=Ve(e.name),o=Me.plugins[e.name];if(!t){let{restartNeeded:n,failures:a}=bf(e);if(a.length){ne(`Failed to start dependencies: ${a.join(", ")}`,D.Type.FAILURE);return}if(n){o.enabled=!0,ne(`${e.name} enabled. Restart to apply.`,D.Type.MESSAGE);return}}if(R1(e)){o.enabled=!t,ne(`${e.name} ${t?"disabled":"enabled"}. Restart to apply.`,D.Type.MESSAGE);return}if(t&&!e.started){o.enabled=!1,ne(`${e.name} disabled.`,D.Type.SUCCESS);return}if(!(t?Gp(e):$p(e))){o.enabled=!1,ne(`Error while ${t?"stopping":"starting"} ${e.name}.`,D.Type.FAILURE);return}o.enabled=!t,ne(`${e.name} ${t?"disabled":"enabled"}.`,D.Type.SUCCESS)}function Npt(){return Object.values(et).filter(e=>!e.required&&!e.hidden).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>{let t=Ve(e.name);return{id:e.name,label:e.name,sublabel:t?"Enabled":"Disabled",icon:tP,actions:[{id:"toggle",label:t?"Disable Plugin":"Enable Plugin",keepOpen:!0,run:()=>Mpt(e)},{id:"settings",label:"Open Plugin Settings",icon:Yd,run:()=>ns(e)}]}})}var G3e,H3e=h(()=>{"use strict";d();Jt();j();nh();C();gg();G3e=[{id:"plugins.manage",title:"Manage Plugins",section:"Plugins",keywords:["plugins","enable","disable","toggle"],icon:tP,page:()=>({title:"Manage Plugins",icon:tP,spec:{type:"list",placeholder:"Search plugins...",items:Npt}})}]});function Bpt(e){let t=qe.getFriendIDs().map(r=>L.getUser(r)).filter(r=>r!=null).map(r=>({value:r.id,label:r.globalName||r.username,icon:at.getUserAvatarURL(r,!1,64)})),o=e.trim();return o?t.map(r=>({option:r,score:Nc(o,r.label)})).filter(r=>r.score>0).sort((r,n)=>n.score-r.score).map(r=>r.option):t}async function Rpt(e){let t=await Promise.resolve(V2(e,!0));if(typeof t=="string")return t;let o=W.getDMFromUserId(e);if(o)return o;for(let r=0;r<20;r++){let n=W.getDMFromUserId(e);if(n)return n;await lr(150)}return null}var j3e,q3e=h(()=>{"use strict";d();_e();Be();co();C();XD();gg();j3e={id:"messaging.sendDm",title:"Send DM",section:"Messaging",keywords:["dm","message","send","direct message"],icon:dY,page:()=>({title:"Send DM",icon:dY,spec:{type:"form",submitLabel:"Send DM",fields:[{key:"recipient",label:"Recipient",type:"picker",placeholder:"Search friends...",suggestions:Bpt},{key:"message",label:"Message",type:"textarea",placeholder:"Message content",markdown:!0,attachments:!0}],validate(e,t){if(!L.getUser(e.recipient))return"Pick a recipient from the suggestions.";let o=t?.files?.message??[];return!e.message.trim()&&o.length===0?"Add a message or a file.":null},async submit(e,t,o){let r=await Rpt(e.recipient);if(!r)throw new Error("Unable to open a DM with that user.");let a=(o?.files?.message??[]).map(l=>new ou({file:l,platform:1},r));await or(r,{content:e.message.trim()},!0,{attachmentsToUpload:a});let s=L.getUser(e.recipient);ne(`Message sent to ${s.globalName||s.username}.`,D.Type.SUCCESS),t.close()}}})}});async function W3e(){qD("CommandPalette.builtin",[...z3e,...O3e,...G3e,..._3e,j3e]),await B3e(),iP()}var K3e=h(()=>{"use strict";d();hy();R3e();F3e();U3e();$3e();H3e();q3e()});function yy(e){let t=e.key.toLowerCase();if(t==="meta"||t==="control"||t==="shift"||t==="alt")return null;let o=[];return e.metaKey&&o.push("meta"),e.ctrlKey&&o.push("ctrl"),e.shiftKey&&o.push("shift"),e.altKey&&o.push("alt"),o.push(t===" "?"space":t),o}function xY(e,t){if(e.length!==t.length)return!1;let o=r=>[...r].map(n=>n.toLowerCase()).sort().join("+");return o(e)===o(t)}function vY(e){return e.map(t=>{let o=t.toLowerCase();return Go&&Q3e[o]?Q3e[o]:!Go&&Lpt.includes(o)?o==="meta"?"Win":o[0].toUpperCase()+o.slice(1):Z3e[o]?Z3e[o]:o.length===1?o.toUpperCase():o[0].toUpperCase()+o.slice(1)})}function Y3e(e){return vY(e).join(Go?"":"+")}function J3e(e){return Opt.has(e.key.toLowerCase())}function ym(e){return e instanceof HTMLElement?!!e.closest("input, textarea, select, [contenteditable=true], [role=textbox]"):!1}function bY(e){X3e=e}function SY(e){o8=e}function V3e(e){yY=e}function e9e(e){if(o8){if(o8(e)){e.preventDefault(),e.stopImmediatePropagation();return}if(ym(e.target)||ym(document.activeElement))return;(e.metaKey||e.ctrlKey)&&!J3e(e)&&(e.preventDefault(),e.stopImmediatePropagation());return}X3e||yY?.(e)&&(e.preventDefault(),e.stopPropagation())}function t9e(e){o8&&(ym(e.target)||ym(document.activeElement)||(e.metaKey||e.ctrlKey)&&!J3e(e)&&e.stopImmediatePropagation())}function o9e(){window.addEventListener("keydown",e9e,!0),window.addEventListener("keyup",t9e,!0)}function n9e(){window.removeEventListener("keydown",e9e,!0),window.removeEventListener("keyup",t9e,!0),o8=null,yY=null}var Lpt,Q3e,Z3e,Opt,o8,yY,X3e,n8=h(()=>{"use strict";d();O();Lpt=["meta","ctrl","shift","alt"];Q3e={meta:"\u2318",ctrl:"\u2303",shift:"\u21E7",alt:"\u2325"},Z3e={enter:"\u21B5",arrowup:"\u2191",arrowdown:"\u2193",arrowleft:"\u2190",arrowright:"\u2192",backspace:"\u232B",escape:"esc"};Opt=new Set(["a","c","v","x","z","y","arrowleft","arrowright","arrowup","arrowdown","backspace","delete","home","end"]);o8=null,yY=null,X3e=!1});function Upt(){let[e,t]=T(!1),{hotkey:o}=bm.use(_pt);return G(()=>{if(!e)return;bY(!0);function r(a){if(a.preventDefault(),a.stopPropagation(),a.key==="Escape"){t(!1);return}let s=yy(a);s&&(bm.store.hotkey=s,t(!1))}function n(){t(!1)}return document.addEventListener("keydown",r,!0),window.addEventListener("blur",n),()=>{bY(!1),document.removeEventListener("keydown",r,!0),window.removeEventListener("blur",n)}},[e]),i("div",{className:Fpt("hotkey-setting")},i(Y,{size:"md",weight:"semibold"},"Open palette hotkey"),i(de,{variant:"secondary",onClick:()=>t(!0)},e?"Press keys...":Y3e(o)))}var Fpt,wY,_pt,bm,AY=h(()=>{"use strict";d();j();yt();Tt();O();we();R();C();n8();Fpt=K("vc-cmdpal-"),wY=Go?["meta","shift","p"]:["ctrl","shift","p"],_pt=["hotkey"];bm=M({hotkey:{type:6,default:wY,component:Upt},closeAfterExecute:{description:"Close the palette after running a command.",type:3,default:!0}})});function kY(e){return r8.get()[e]}function i9e(){return r8.get()}function CY(e,t){let o={...r8.get()};t?.length?o[e]=t:delete o[e],r8.set(o)}var r8,r9e,TY=h(()=>{"use strict";d();xy();r8=Zd("hotkeys",{}),r9e=r8.load});function l9e(e){let t=e.trim();if(!t||!/\d/.test(t)||!zpt.test(t)||!$pt.test(t))return null;let o;try{o=new IY(t).parse()}catch{return null}if(!Number.isFinite(o))return null;let r=parseFloat(o.toPrecision(12));return{value:r,formatted:r.toLocaleString("en-US",{maximumFractionDigits:8}),plain:String(r)}}var a9e,s9e,zpt,$pt,IY,c9e=h(()=>{"use strict";d();a9e={sqrt:Math.sqrt,abs:Math.abs,round:Math.round,floor:Math.floor,ceil:Math.ceil,sin:Math.sin,cos:Math.cos,tan:Math.tan,log:Math.log10,ln:Math.log},s9e={pi:Math.PI,e:Math.E},zpt=/^[\d\s+\-*/^%().,a-z]+$/i,$pt=/[+\-*/^%]|\b(sqrt|abs|round|floor|ceil|sin|cos|tan|log|ln|of)\b/i,IY=class{constructor(t){this.input=t}input;pos=0;peek(){return this.input[this.pos]??""}skipSpaces(){for(;this.peek()===" ";)this.pos+=1}word(){let t=this.pos;for(;/[a-z]/i.test(this.peek());)this.pos+=1;return this.input.slice(t,this.pos).toLowerCase()}parse(){let t=this.expr();if(this.skipSpaces(),this.pos!==this.input.length)throw new Error("Unexpected input");return t.pct?t.v/100:t.v}expr(){let t=this.term();for(;;){this.skipSpaces();let o=this.peek();if(o!=="+"&&o!=="-")break;this.pos+=1;let r=this.term(),n=r.pct?t.v*(r.v/100):r.v;t={v:o==="+"?t.v+n:t.v-n,pct:!1}}return t}term(){let t=this.factor();for(;;){this.skipSpaces();let o=this.peek(),r=/[a-z]/i.test(o)&&this.input.slice(this.pos,this.pos+2).toLowerCase()==="of"&&!/[a-z]/i.test(this.input[this.pos+2]??"");if(o==="*"||o==="/")this.pos+=1;else if(o==="%"&&this.input.slice(this.pos+1).trimStart().match(/^[\d(]/))this.pos+=1;else if(r){this.pos+=2;let l=this.factor();t={v:(t.pct?t.v/100:t.v)*(l.pct?l.v/100:l.v),pct:!1};continue}else break;let n=this.factor(),a=t.pct?t.v/100:t.v,s=n.pct?n.v/100:n.v;o==="*"?t={v:a*s,pct:!1}:o==="/"?t={v:a/s,pct:!1}:t={v:a%s,pct:!1}}return t}factor(){let t=this.unary();if(this.skipSpaces(),this.peek()==="^"){this.pos+=1;let o=this.factor(),r=t.pct?t.v/100:t.v,n=o.pct?o.v/100:o.v;return{v:r**n,pct:!1}}return t}unary(){if(this.skipSpaces(),this.peek()==="-"){this.pos+=1;let t=this.unary();return{v:-t.v,pct:t.pct}}return this.primary()}primary(){if(this.skipSpaces(),this.peek()==="("){this.pos+=1;let o=this.expr();if(this.skipSpaces(),this.peek()!==")")throw new Error("Missing closing paren");return this.pos+=1,this.percentSuffix({v:o.pct?o.v/100:o.v,pct:!1})}if(/[a-z]/i.test(this.peek())){let o=this.word();if(o in s9e)return this.percentSuffix({v:s9e[o],pct:!1});if(o in a9e){if(this.skipSpaces(),this.peek()!=="(")throw new Error("Expected paren after function");this.pos+=1;let r=this.expr();if(this.skipSpaces(),this.peek()!==")")throw new Error("Missing closing paren");return this.pos+=1,this.percentSuffix({v:a9e[o](r.pct?r.v/100:r.v),pct:!1})}throw new Error(`Unknown identifier ${o}`)}let t=/^\d[\d,]*(\.\d+)?/.exec(this.input.slice(this.pos));if(!t)throw new Error("Expected number");return this.pos+=t[0].length,this.percentSuffix({v:parseFloat(t[0].replaceAll(",","")),pct:!1})}percentSuffix(t){this.skipSpaces();let o=this.input.slice(this.pos+1).trimStart();return this.peek()==="%"&&!o.match(/^[\d(]/)?(this.pos+=1,{v:t.v,pct:!0}):t}}});function sP({combo:e}){return i("span",{className:xg("shortcut")},vY(e).map((t,o)=>i("kbd",{key:o,className:xg("key")},t)))}function u9e({hint:e,primaryLabel:t,showActionsHint:o}){return i("div",{className:xg("footer")},i("span",{className:xg("footer-hint")},e??"Equicord"),i("div",{className:xg("footer-actions")},t&&i("span",{className:xg("footer-action")},t,i(sP,{combo:["enter"]})),o&&i(f,null,i("span",{className:xg("footer-divider")}),i("span",{className:xg("footer-action")},"Actions",i(sP,{combo:[Go?"meta":"ctrl","k"]})))))}var xg,d9e=h(()=>{"use strict";d();O();we();n8();xg=K("vc-cmdpal-")});function Jd({icon:e,className:t}){return e?typeof e=="string"?i("img",{className:t??p9e("icon"),src:e,alt:""}):i(e,{className:t??p9e("icon")}):null}var p9e,i8=h(()=>{"use strict";d();we();p9e=K("vc-cmdpal-")});function Gpt({action:e,selected:t,index:o,onSelect:r,onRun:n}){let a=Se(null);return G(()=>{t&&a.current?.scrollIntoView({block:"nearest"})},[t]),i("div",{ref:a,className:vg("panel-row",{"panel-row-selected":t}),onMouseMove:()=>{t||r(o)},onClick:()=>n(e)},i("div",{className:vg("chip-wrap","chip-wrap-sm")},i(Jd,{icon:e.icon,className:typeof e.icon=="string"?vg("chip-img"):vg("panel-icon")})),i("span",{className:vg("panel-label")},e.label))}function m9e({actions:e,selectedIndex:t,onSelect:o,onRun:r}){return i("div",{className:vg("panel")},i("div",{className:vg("panel-title")},"Actions"),i("div",{className:vg("panel-list")},e.map((n,a)=>i(Gpt,{key:n.id,action:n,index:a,selected:a===t,onSelect:o,onRun:r}))))}var vg,f9e=h(()=>{"use strict";d();we();C();i8();vg=K("vc-cmdpal-")});function g9e({spec:e}){return i("div",{className:Zh("detail")},i("div",{className:Zh("detail-heading")},e.heading),e.body!=null&&i("div",{className:Zh("detail-body")},e.body),e.rows&&e.rows.length>0&&i("div",{className:Zh("detail-rows")},e.rows.map(t=>i("div",{key:t.label,className:Zh("detail-row")},i("span",{className:Zh("detail-row-label")},t.label),i("span",{className:Zh("detail-row-value")},t.value)))))}var Zh,h9e=h(()=>{"use strict";d();we();Zh=K("vc-cmdpal-")});function x9e(e,t,o){let r=e.clipboardData?.getData("text/plain");if(!r)return!1;let n=r.trim();if(!n||!fc(n))return!1;let a=e.currentTarget,s=a.selectionStart,l=a.selectionEnd;if(s===null||l===null||s===l)return!1;let c=t.slice(s,l);if(!c)return!1;e.preventDefault(),e.stopPropagation();let u=`[${c}](${n})`,p=t.slice(0,s)+u+t.slice(l);o(p);let m=s+u.length;return requestAnimationFrame(()=>a.setSelectionRange(m,m)),!0}var v9e=h(()=>{"use strict";d();Be()});function Wpt(e){return new Promise(t=>{let o=new Image;o.onload=()=>t({width:o.width,height:o.height}),o.onerror=()=>t(null),o.src=e})}async function Kpt(e){return Promise.all(e.map(async t=>{let o=URL.createObjectURL(t),r={id:fd(),filename:t.name,content_type:void 0,size:t.size,spoiler:!1,url:o+"#",proxy_url:o+"#"};if(t.type.startsWith("image/")){let n=await Wpt(o);n&&(r.width=n.width,r.height=n.height)}else t.type&&(r.content_type=t.type);return r}))}function y9e({content:e,channelId:t,files:o}){let[r,n]=T([]),a=Se(r);a.current=r,G(()=>{if(!o?.length){n(p=>{for(let m of p)URL.revokeObjectURL(m.url.replace(/#$/,""));return[]});return}let u=!1;return Kpt(o).then(p=>{if(u){for(let m of p)URL.revokeObjectURL(m.url.replace(/#$/,""));return}n(m=>{for(let g of m)URL.revokeObjectURL(g.url.replace(/#$/,""));return p})}),()=>{u=!0;for(let p of a.current)URL.revokeObjectURL(p.url.replace(/#$/,""))}},[o]);let s=Ne(()=>{if(!e.trim()&&r.length===0)return null;let u=t??Fe.getChannelId()??"1337",p=Hpt({content:e,channelId:u,embeds:[]});return p?(p.id=fd(),p.author=L.getCurrentUser(),p.timestamp=bi(),jpt(p)??p):null},[r,t,e]);if(!s&&r.length===0)return null;let l=L.getCurrentUser(),c={...l,nick:l.globalName||l.username};return i("div",{className:yg("markdown-preview")},i("div",{className:yg("markdown-preview-label")},"Preview"),i("div",{className:yg("markdown-preview-body")},e.trim()&&s&&i(H,{noop:!0},i(qpt,{className:yg("message-preview"),author:c,message:s,compact:!1,isGroupStart:!0,hideSimpleEmbedContent:!1})),r.length>0&&i("div",{className:yg("preview-attachments")},r.map(u=>{let p=u.url.replace(/#$/,"");return u.width&&u.height?i("img",{key:u.id,className:yg("preview-image"),src:p,alt:u.filename}):u.content_type?.startsWith("video/")?i("video",{key:u.id,className:yg("preview-video"),src:p,controls:!0,preload:"metadata"}):i("div",{key:u.id,className:yg("preview-file")},u.filename)}))))}var yg,Hpt,jpt,qpt,b9e=h(()=>{"use strict";d();yr();Pe();we();Kt();le();C();yg=K("vc-cmdpal-"),Hpt=Oe('username:"Clyde"'),jpt=Oe("isProbablyAValidSnowflake","messageReference:"),qpt=Vo(()=>Ni(e=>e?.type?.toString().includes("previewLinkTarget:")&&!e?.type?.toString().includes("HAS_THREAD")))});function by(e){e.stopPropagation()}function S9e(e,t){let o={};for(let r of t){let n=e[r.key];n&&(o[r.key]=n.selected?.value??n.text)}return o}function EY(e){return e.key==="Enter"&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&!e.shiftKey}function Qpt({field:e,state:t,onChange:o,onSubmit:r,inputRef:n}){let[a,s]=T(!1),[l,c]=T(0),u=Se([]),p=a&&e.suggestions?e.suggestions(t.selected?"":t.text):[];G(()=>{u.current[l]?.scrollIntoView({block:"nearest"})},[l,p.length]),G(()=>{l>=p.length&&c(Math.max(0,p.length-1))},[l,p.length]);let m=x=>{o({text:x.label,selected:x}),s(!1),n?.current?.blur()},g=x=>{if(x.stopPropagation(),p.length>0){if(x.key==="ArrowDown"){x.preventDefault(),c(v=>Math.min(v+1,p.length-1));return}if(x.key==="ArrowUp"){x.preventDefault(),c(v=>Math.max(v-1,0));return}if(EY(x)){x.preventDefault(),m(p[Math.min(l,p.length-1)]);return}}EY(x)&&(x.preventDefault(),r())};return i("div",{className:Fr("picker")},i("div",{className:Fr("picker-input",{"picker-input-focused":a})},t.selected?.icon&&i(Jd,{icon:t.selected.icon,className:Fr("picker-icon")}),i("input",{ref:n,className:Fr("picker-input-field"),value:t.text,placeholder:e.placeholder,autoComplete:"off",onChange:x=>{o({text:x.target.value,selected:void 0}),c(0)},onFocus:()=>s(!0),onBlur:()=>window.setTimeout(()=>s(!1),0),onMouseDown:by,onKeyDown:g})),p.length>0&&i("div",{className:Fr("picker-list"),onWheel:by},p.map((x,v)=>i("div",{key:x.value,ref:y=>{u.current[v]=y},className:Fr("picker-item",{"picker-item-selected":v===l}),onMouseMove:()=>c(v),onMouseDown:y=>{y.preventDefault(),y.stopPropagation(),m(x)}},i(Jd,{icon:x.icon,className:Fr("picker-icon")}),i("span",null,x.label)))))}function w9e({spec:e,ctx:t,formRef:o}){let[r,n]=T(()=>{let B={};for(let _ of e.fields){let q=_.initial??"";B[_.key]=_.type==="select"&&_.options?{text:q,selected:_.options.find($=>$.value===q)}:{text:q}}return B}),[a,s]=T(null),[l,c]=T(!1),[u,p]=T({}),m=Se(null),g=Se(r);g.current=r;let x=Se(u);x.current=u;let v=S9e(r,e.fields),y=e.fields.filter(B=>!B.visible||B.visible(v)),A=async()=>{if(l)return;let B=S9e(g.current,e.fields),_={files:x.current},q=e.validate?.(B,_)??null;if(q){s(q);return}s(null),c(!0);try{await e.submit(B,t,_)}catch($){s($ instanceof Error?$.message:"Something went wrong.")}finally{c(!1)}};Va(()=>(o.current={submit:()=>{A()}},()=>{o.current=null})),G(()=>{m.current?.focus()},[]);let k=(B,_)=>{n(q=>({...q,[B]:_})),s(null)},w=(B,_)=>{p(q=>({...q,[B]:_})),s(null)},I=B=>{B.stopPropagation(),EY(B)&&(B.preventDefault(),A())},E=!1,N=Ne(()=>{let{recipient:B}=v;return typeof B!="string"||!B?null:W.getDMFromUserId(B)??null},[v.recipient]);return i("div",{className:Fr("form"),onMouseDown:by},y.map(B=>{let _=r[B.key],q=!E;return q&&(E=!0),i("div",{key:B.key,className:Fr("field")},i("label",{className:Fr("field-label")},B.label),B.type==="text"&&i("input",{ref:q?m:void 0,className:Fr("field-input"),value:_.text,placeholder:B.placeholder,autoComplete:"off",onChange:$=>k(B.key,{text:$.target.value}),onMouseDown:by,onKeyDown:I}),B.type==="textarea"&&i("div",{className:Fr("textarea-stack")},i("textarea",{ref:q?m:void 0,className:Fr("field-textarea"),value:_.text,placeholder:B.placeholder,rows:B.markdown?4:3,onChange:$=>k(B.key,{text:$.target.value}),onMouseDown:by,onKeyDown:I,onPaste:B.markdown?$=>{x9e($,_.text,re=>k(B.key,{text:re}))}:void 0}),B.attachments&&i("div",{className:Fr("attachments")},i("label",{className:Fr("attachments-label")},i("input",{type:"file",multiple:!0,className:Fr("attachments-input"),onChange:$=>{let re=$.target.files?Array.from($.target.files):[];re.length&&w(B.key,[...u[B.key]??[],...re]),$.target.value=""},onMouseDown:by}),"Add file"),(u[B.key]?.length??0)>0&&i("div",{className:Fr("attachments-list")},u[B.key]?.map(($,re)=>i("span",{key:`${$.name}-${$.size}-${$.lastModified}-${re}`,className:Fr("attachments-item")},$.name,i("button",{type:"button",className:Fr("attachments-remove"),onClick:()=>w(B.key,u[B.key]?.filter((Z,ee)=>ee!==re)??[])},"Remove"))))),B.markdown&&i(y9e,{content:_.text,channelId:N,files:u[B.key]})),B.type==="select"&&B.options&&i("div",{className:Fr("chips")},B.options.map($=>i("button",{key:$.value,type:"button",className:Fr("chip",{"chip-selected":_.selected?.value===$.value}),onClick:()=>k(B.key,{text:$.label,selected:$})},i(Jd,{icon:$.icon,className:Fr("chip-icon")}),$.label))),B.type==="picker"&&i(Qpt,{field:B,state:_,onChange:$=>k(B.key,$),onSubmit:()=>{A()},inputRef:q?m:void 0}))}),a&&i("div",{className:Fr("form-error")},a))}var Fr,A9e=h(()=>{"use strict";d();we();C();v9e();b9e();i8();Fr=K("vc-cmdpal-")});function k9e(e){return e.flatMap(t=>t.items)}function Zpt({item:e,selected:t,index:o,onSelect:r,onRun:n}){let a=Se(null);return G(()=>{t&&a.current?.scrollIntoView({block:"nearest"})},[t]),i("div",{ref:a,className:Bc("row",{"row-selected":t}),onMouseMove:()=>{t||r(o)},onClick:()=>n(e)},i("div",{className:Bc("chip-wrap")},i(Jd,{icon:e.icon,className:typeof e.icon=="string"?Bc("chip-img"):Bc("row-icon")})),i("div",{className:Bc("row-text")},i("span",{className:Bc("row-label")},e.label),e.sublabel&&i("span",{className:Bc("row-sublabel")},e.sublabel)),e.accessory!=null&&i("div",{className:Bc("row-accessory")},e.accessory))}function C9e({sections:e,selectedIndex:t,onSelect:o,onRun:r}){let n=-1;return i("div",{className:Bc("results")},e.map(a=>i("div",{key:a.label??"default",className:Bc("section")},a.label&&i("div",{className:Bc("section-label")},a.label),a.items.map(s=>{n+=1;let l=n;return i(Zpt,{key:s.id,item:s,index:l,selected:l===t,onSelect:o,onRun:r})}))),e.length===0&&i("div",{className:Bc("empty")},"No results"))}var Bc,T9e=h(()=>{"use strict";d();we();C();i8();Bc=K("vc-cmdpal-")});function lP(e){let t=e.actions??[],{page:o}=e,r=o?[{id:`${e.id}.open`,label:"Open Command",icon:e.icon,keepOpen:!0,run:s=>s.push(o())},...t]:t;if(r.length===0)return null;let n=kY(e.id),a=Q5(e.id);return{id:e.id,commandId:e.id,label:e.title,sublabel:e.subtitle,icon:e.icon,actions:r,accessory:i(f,null,a&&i("span",{className:Fs("alias-chip")},a),n?i(sP,{combo:n}):i("span",{className:Fs("row-kind")},"Command"))}}function Ypt(e){return{id:e.id,label:e.label,sublabel:e.sublabel,icon:e.icon,actions:e.actions}}function Jpt(e){let t=l9e(e);if(!t)return null;let o=e.trim(),r={id:"calculator.copy",label:"Copy Answer",icon:mY,run:()=>ft(t.plain,"Answer copied to clipboard.")};return{id:"calculator.inline",label:t.formatted,sublabel:`${o} =`,icon:oP,accessory:i("span",{className:Fs("row-kind")},"Calculator"),actions:[r,{id:"calculator.details",label:"Open Details",icon:oP,keepOpen:!0,run:n=>n.push({title:"Calculator",icon:oP,spec:{type:"detail",heading:t.formatted,rows:[{label:"Expression",value:o},{label:"Result",value:t.plain}],actions:[r,{id:"calculator.copyExpression",label:"Copy Expression",icon:mY,run:()=>ft(`${o} = ${t.plain}`,"Calculation copied to clipboard.")}]}})}]}}function D9e(e){let t=[],o=new Map;for(let{row:r,section:n}of e){let a=o.get(n);a||(a={label:n,items:[]},o.set(n,a),t.push(a)),a.items.push(r)}return t}function P9e({onClose:e,initialPage:t}){let[o,r]=T(t?[t]:[]),[n,a]=T(""),[s,l]=T(t!=null),[c,u]=T(0),[p,m]=T(!1),[g,x]=T(0),[v,y]=T(null),[A,k]=T([]),[,w]=T(0),I=Se(null),E=Se(null);G(()=>i3e(()=>w(se=>se+1)),[]);let N=o.length>0?o[o.length-1]:null,B=N?.spec.type??"root",_={close:e,pop(){r(se=>se.slice(0,-1)),a(""),u(0),m(!1)},push(se){r(te=>[...te,se]),a(""),u(0),m(!1)},setQuery(se){a(se),u(0)}};G(()=>{if(N?.spec.type!=="list"){k([]);return}let se=!1;return Promise.resolve(N.spec.items(n)).then(te=>{se||k(te)}).catch(te=>I9e.error("List page items failed",te)),()=>{se=!0}},[N,n]);let q=N!=null||n.trim()!==""||s,$=[];if(B==="root"){let se=s3e(),te=n.trim();if(te){let xe=Jpt(n);xe&&$.push({label:"Calculator",items:[xe]});let me=h3e(te,se).map(ze=>({row:lP(ze.command),section:ze.command.section})).filter(ze=>ze.row!==null);$.push(...D9e(me))}else if(q){let xe=new Map(se.map(Dt=>[Dt.id,Dt])),me=new Set,ze=f3e().map(Dt=>xe.get(Dt)).filter(Dt=>Dt!=null).map(Dt=>(me.add(Dt.id),lP(Dt))).filter(Dt=>Dt!==null);ze.length&&$.push({label:"Pinned",items:ze});let dt=p3e(E9e+me.size).map(Dt=>xe.get(Dt)).filter(Dt=>Dt!=null&&!me.has(Dt.id)).slice(0,E9e).map(Dt=>(me.add(Dt.id),lP(Dt))).filter(Dt=>Dt!==null);dt.length&&$.push({label:"Suggestions",items:dt});let pt=se.filter(Dt=>!me.has(Dt.id)).map(Dt=>({row:lP(Dt),section:Dt.section})).filter(Dt=>Dt.row!==null);$.push(...D9e(pt))}}else if(B==="list"){let se=n.trim(),te=se?A.map(xe=>({item:xe,score:Math.max(Nc(se,xe.label),...(xe.keywords??[]).map(me=>Nc(se,me)*.7),xe.sublabel?Nc(se,xe.sublabel)*.5:0)})).filter(xe=>xe.score>0).sort((xe,me)=>me.score-xe.score).map(xe=>xe.item):A;te.length>0&&($=[{label:null,items:te.map(Ypt)}])}let re=k9e($),Z=re[Math.min(c,re.length-1)]??null;G(()=>{c>0&&c>=re.length&&u(Math.max(0,re.length-1))},[re.length,c]);async function ee(se,te){te&&Y5(te),m(!1);try{await se.run(_)}catch(xe){I9e.error(`Action ${se.id} failed`,xe)}!se.keepOpen&&bm.store.closeAfterExecute&&e()}function ae(){let se=N?.spec.type==="detail"?N.spec.actions??[]:[],te=Z?.actions??[],xe=B==="detail"?se:te,me=Z?.commandId;return!me||B!=="root"?xe:[...xe,{id:"builtin.pin",label:YD(me)?"Unpin Command":"Pin Command",icon:w3e,keepOpen:!0,run:()=>g3e(me)},{id:"builtin.alias",label:"Set Alias",icon:vy,keepOpen:!0,run:ze=>ze.push({title:"Set Alias",icon:vy,spec:{type:"form",submitLabel:"Save Alias",fields:[{key:"alias",label:`Alias for ${Z.label}`,type:"text",placeholder:"Leave empty to remove",initial:Q5(me)??""}],submit(dt,pt){u3e(me,dt.alias),pt.pop()}}})},{id:"builtin.hotkey",label:kY(me)?"Change Hotkey":"Record Hotkey",icon:k3e,keepOpen:!0,run:()=>y(me)}]}let ge=ae();function ke(se){let te=Go?se.metaKey:se.ctrlKey,xe=se.key.toLowerCase();if(v){if(xe==="escape")return y(null),!0;if(xe==="backspace")return CY(v,null),y(null),!0;let ze=yy(se);return ze&&ze.length>=2&&(CY(v,ze),y(null)),!0}let me=ym(document.activeElement);if(me&&(B==="form"||B==="detail"))return xe==="escape"?(p?m(!1):N?_.pop():e(),!0):te&&xe==="k"?(ge.length>0&&(m(ze=>!ze),x(0)),!0):!1;if(xe==="escape")return p?m(!1):n?(a(""),u(0),l(!1)):N?_.pop():e(),!0;if(te&&xe==="k")return ge.length>0&&(m(ze=>!ze),x(0)),!0;if(p){if(xe==="arrowdown")return x(ze=>Math.min(ze+1,ge.length-1)),!0;if(xe==="arrowup")return x(ze=>Math.max(ze-1,0)),!0;if(xe==="enter"){let ze=ge[Math.min(g,ge.length-1)];return ze&&ee(ze,Z?.commandId),!0}return!0}if(B==="form")return xe==="enter"&&!se.shiftKey&&!te&&!se.altKey?me?!1:(E.current?.submit(),!0):!1;if(xe==="arrowdown")return q?u(ze=>Math.min(ze+1,Math.max(0,re.length-1))):l(!0),!0;if(xe==="arrowup")return u(ze=>Math.max(ze-1,0)),!0;if(xe==="enter"){if(B==="detail"){let ze=N?.spec.type==="detail"?N.spec.actions??[]:[];return ze[0]&&ee(ze[0]),!0}if(Z){let ze=te?Z.actions[1]??Z.actions[0]:Z.actions[0];ee(ze,Z.commandId)}return!0}return xe==="backspace"&&n===""&&N?(_.pop(),!0):!1}G(()=>{SY(ke)}),G(()=>()=>SY(null),[]),G(()=>{(B==="root"||B==="list")&&I.current?.focus()},[B]);let Ee=B==="root"||B==="list",Ue=v?null:B==="form"?N?.spec.type==="form"?N.spec.submitLabel??"Submit":null:B==="detail"?N?.spec.type==="detail"?N.spec.actions?.[0]?.label??null:null:Z?.actions[0]?.label??null,it=v?"Press a key combo, Backspace to clear, Esc to cancel":N?.title??"Equicord";return i("div",{className:Fs("shell"),onMouseDown:se=>se.stopPropagation(),onClick:se=>se.stopPropagation()},i("div",{className:Fs("backdrop"),onMouseDown:se=>{se.stopPropagation(),e()}}),i("div",{className:Fs("root",{"root-compact":!q,"root-form":B==="form"}),onMouseDown:se=>se.stopPropagation(),onClick:se=>se.stopPropagation()},i("div",{className:Fs("header")},N?i("button",{type:"button",className:Fs("back"),onClick:()=>_.pop()},i(y3e,{className:Fs("back-icon")})):i(v3e,{className:Fs("search-icon")}),Ee?i("input",{ref:I,className:Fs("input"),value:n,placeholder:N?.spec.type==="list"?N.spec.placeholder??`Search ${N.title.toLowerCase()}...`:"Search for commands...",onChange:se=>_.setQuery(se.target.value),onMouseDown:se=>se.stopPropagation(),onBlur:()=>{p||ym(document.activeElement)||I.current?.focus()}}):i("div",{className:Fs("breadcrumb")},i("div",{className:Fs("chip-wrap","chip-wrap-sm")},i(Jd,{icon:N?.icon,className:Fs("breadcrumb-icon")})),i("span",null,N?.title))),q&&i(f,null,i("div",{className:Fs("body")},(B==="root"||B==="list")&&i(C9e,{sections:$,selectedIndex:Math.min(c,Math.max(0,re.length-1)),onSelect:u,onRun:se=>{ee(se.actions[0],se.commandId)}}),N?.spec.type==="form"&&i(w9e,{spec:N.spec,ctx:_,formRef:E}),N?.spec.type==="detail"&&i(g9e,{spec:N.spec}),p&&i(m9e,{actions:ge,selectedIndex:g,onSelect:x,onRun:se=>{ee(se,Z?.commandId)}})),i(u9e,{hint:it,primaryLabel:Ue,showActionsHint:!v&&ge.length>0}))))}var Fs,I9e,E9e,M9e=h(()=>{"use strict";d();O();we();_e();He();C();hy();c9e();XD();AY();KD();ZD();TY();JD();d9e();f9e();gg();n8();h9e();A9e();i8();T9e();Fs=K("vc-cmdpal-"),I9e=new ie("CommandPalette"),E9e=6});function a8(){bg&&(Lo(bg),bg=null)}function cP(e){bg&&a8();let t=ce(()=>i(Xpt,{onClose:a8,initialPage:e}),{onCloseCallback(){bg===t&&(bg=null)}});bg=t}function N9e(){bg?a8():cP()}var Xpt,bg,B9e=h(()=>{"use strict";d();Pe();C();M9e();Xpt=H.wrap(P9e,{noop:!0}),bg=null});function tmt(e){return e.some(t=>emt.includes(t)&&t!=="shift")}function omt(e){let t=yy(e);if(!t||!tmt(t)&&ym(e.target))return!1;let o=Array.isArray(bm.store.hotkey)&&bm.store.hotkey.length>0?bm.store.hotkey:wY;if(xY(t,o))return N9e(),!0;for(let[r,n]of Object.entries(i9e())){if(!xY(t,n))continue;let a=l3e(r);if(a&&!(a.predicate&&!a.predicate())){if(a.page)Y5(r),cP(a.page());else if(a.actions?.[0])Y5(r),a.actions[0].run(Vpt);else continue;return!0}}return!1}var Vpt,emt,uP,R9e=h(()=>{"use strict";d();r3e();O();R();hy();K3e();AY();KD();ZD();TY();JD();n8();B9e();Vpt={close(){},pop(){},push:e=>cP(e),setQuery(){}},emt=["meta","ctrl","shift","alt"];uP=S({name:"CommandPalette",description:"Raycast style command palette for running actions anywhere in Discord",authors:[F.justjxke],tags:["Customisation","Commands","Shortcuts"],dependencies:["UserSettingsAPI"],settings:bm,async start(){o9e(),V3e(omt),await Promise.all([d3e(),m3e(),c3e(),r9e()]),await W3e()},stop(){a8(),n9e(),a3e()}})});var L9e=h(()=>{});function nmt(e,t){if(t==="")return!1;try{return e.match(new RegExp(t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")))}catch{return!1}}function rmt({child:e}){let[t,o]=T(!1),{onClick:r}=F9e.store,n=r?DY("container"):"";return t?e:i("div",{className:n,onClick:()=>r&&o(!0),onMouseEnter:a=>{r||(a.currentTarget.className=DY("enter"))},onMouseLeave:a=>{r||(a.currentTarget.className=DY("leave"))}},e)}function imt({index:e,forceUpdate:t}){let[o,r]=T(bl[e]);o!==bl[e]&&r(bl[e]);let n=e===bl.length-1;return i(pe,{flexDirection:"row"},i("div",{style:{flexGrow:1}},i(Te,{placeholder:"Word",spellCheck:!1,value:o,onChange:l=>{bl[e]=l,r(l),Le.set(O9e,bl),n&&(bl.push(""),t())}})),i(ue,{onClick:()=>{bl.length!==1&&(bl=bl.slice(0,e).concat(bl.slice(e+1)),t())},look:ue.Looks.FILLED,size:ue.Sizes.SMALL,style:{padding:0,color:"var(--primary-400)",transition:"color 0.2s ease-in-out",opacity:n?"0%":"100%"}},i(hr,null)))}function amt(){let e=Vt(),t=bl.map((o,r)=>i(imt,{key:r,index:r,forceUpdate:e}));return i(f,null,i(Gr,null,"Flagged Words"),t)}var DY,O9e,bl,F9e,dP,_9e=h(()=>{"use strict";d();L9e();on();j();Lt();We();ot();O();we();Kt();R();C();DY=K("vc-content-warning-"),O9e="ContentWarning_words",bl=[""];F9e=M({flagged:{type:6,component:()=>i(amt,null)},onClick:{type:3,description:"Only show trigger content on click instead of hover",default:!1}}),dP=S({name:"ContentWarning",authors:[F.camila314],description:"Allows you to specify certain trigger words that will be blurred by default. Hovering/Clicking on the blurred content will reveal it.",tags:["Appearance","Utility"],settings:F9e,patches:[{find:".VOICE_HANGOUT_INVITE?",replacement:{match:/(compact:\i}=\i.+?)(\(0,.+\}\)\]\}\))/,replace:"$1 $self.modify(arguments[0].message,$2)"}}],modify(e,t){return bl.some(o=>nmt(e.content,o))?i(rmt,{child:t}):t},async start(){bl=await Le.get(O9e)??[""]}})});function smt(e,t){try{let o=t?Co.getGuildMemberProfile(e,t):Co.getUserProfile(e);if(!o?.themeColors||o.themeColors.length<2)return null;let r=o.themeColors[0].toString(16).padStart(6,"0"),n=o.themeColors[1].toString(16).padStart(6,"0");return{primaryColor:r,secondaryColor:n}}catch(o){return $9e.error("Failed to get profile colors:",o),null}}function U9e(e,t){let o=smt(e,t);if(!o){D.show({type:D.Type.FAILURE,message:"No profile colors found!",id:D.genId()});return}let{primaryColor:r,secondaryColor:n}=o,a=`Primary-color #${r}, Secondary-Color #${n}`;try{po(a),D.show({type:D.Type.SUCCESS,message:"Profile colors copied to clipboard!",id:D.genId()})}catch(s){$9e.error("Failed to copy to clipboard:",s),D.show({type:D.Type.FAILURE,message:"Error copying profile colors!",id:D.genId()})}}function pP(){return i("svg",{viewBox:"0 0 24 24",width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg"},i("path",{fill:"currentColor",d:"M17,4H15.82A3,3,0,0,0,13,2H11A3,3,0,0,0,8.18,4H7A3,3,0,0,0,4,7V19a3,3,0,0,0,3,3H17a3,3,0,0,0,3-3V7A3,3,0,0,0,17,4ZM10,5a1,1,0,0,1,1-1h2a1,1,0,0,1,1,1V6H10Zm8,14a1,1,0,0,1-1,1H7a1,1,0,0,1-1-1V7A1,1,0,0,1,7,6H8V7A1,1,0,0,0,9,8h6a1,1,0,0,0,1-1V6h1a1,1,0,0,1,1,1Z"}))}var $9e,z9e,mP,G9e=h(()=>{"use strict";d();mi();O();He();R();C();$9e=new ie("CopyProfileColors");z9e=(e,{user:t,guildId:o})=>{if(!t)return;let r=o??ao.getGuildId(),n=r?Co.getGuildMemberProfile(t.id,r):null,a=n?.themeColors&&n.themeColors.length>=2;e.push(i(P.MenuItem,{id:"CopyProfileColors",icon:pP,leadingAccessory:{type:"icon",icon:pP},label:"Copy Profile Colors",action:()=>U9e(t.id)})),a&&r&&e.push(i(P.MenuItem,{id:"CopyServerProfileColors",icon:pP,leadingAccessory:{type:"icon",icon:pP},label:"Copy Server Profile Colors",action:()=>U9e(t.id,r)}))},mP=S({name:"CopyProfileColors",description:"A plugin to copy people's profile gradient colors to clipboard.",tags:["Appearance","Customisation"],authors:[F.Crxa,F.Cortex,F.Gir0fa],contextMenus:{"user-context":z9e,"user-profile-actions":z9e}})});var lmt,fP,H9e=h(()=>{"use strict";d();mi();O();R();le();C();lmt=Oe("null/undefined"),fP=S({name:"CopyStatusUrls",description:"Copy the users status url when you right-click it",tags:["Activity","Utility"],authors:[b.sadan],patches:[{find:'?"PRESS_WATCH_ON_CRUNCHYROLL_BUTTON"',replacement:{match:/(?=onClick)(?=.*index:(\i))/,replace:"onContextMenu: $self.makeContextMenu(arguments[0], $1),"}}],makeContextMenu(e,t){return async()=>{try{let{button_urls:o}=await lmt(e.activity,e.user.id);if(!o[t])throw new Error("button_urls does not contain index");po(o[t]),D.show({id:D.genId(),message:"Copied URL",type:D.Type.SUCCESS,options:{position:D.Position.TOP}})}catch(o){console.error(o),D.show({id:D.genId(),message:"Error copying URL, check console for more info",type:D.Type.FAILURE,options:{position:D.Position.TOP}})}}}})});var j9e,cmt,gP,q9e=h(()=>{"use strict";d();mi();O();R();C();j9e=()=>i("svg",{className:"mentionicon",height:"20",width:"20",viewBox:"0 0 24 24",fill:"currentColor"},i("path",{d:"M12 2C6.486 2 2 6.486 2 12C2 17.515 6.486 22 12 22C14.039 22 15.993 21.398 17.652 20.259L16.521 18.611C15.195 19.519 13.633 20 12 20C7.589 20 4 16.411 4 12C4 7.589 7.589 4 12 4C16.411 4 20 7.589 20 12V12.782C20 14.17 19.402 15 18.4 15L18.398 15.018C18.338 15.005 18.273 15 18.209 15H18C17.437 15 16.6 14.182 16.6 13.631V12C16.6 9.464 14.537 7.4 12 7.4C9.463 7.4 7.4 9.463 7.4 12C7.4 14.537 9.463 16.6 12 16.6C13.234 16.6 14.35 16.106 15.177 15.313C15.826 16.269 16.93 17 18 17L18.002 16.981C18.064 16.994 18.129 17 18.195 17H18.4C20.552 17 22 15.306 22 12.782V12C20 6.486 17.514 2 12 2ZM12 14.599C10.566 14.599 9.4 13.433 9.4 11.999C9.4 10.565 10.566 9.399 12 9.399C13.434 9.399 14.6 10.565 14.6 11.999C14.6 13.433 13.434 14.599 12 14.599Z"})),cmt=(e,{user:t})=>{t&&e.push(i(P.MenuItem,{id:"vc-copy-user-mention",label:"Copy User Mention",action:()=>po(`<@${t.id}>`),icon:j9e,leadingAccessory:{type:"icon",icon:j9e}}))},gP=S({name:"CopyUserMention",authors:[F.Cortex,b.castdrian],description:"Adds a button to copy user's mention on the user context menu, works best with ValidUser.",tags:["Chat","Utility"],contextMenus:{"user-context":cmt}})});var W9e=h(()=>{});function PY(e){document.getElementById("fathorse")?.remove();let t={right:[[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0]],downright:[[0,1],[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1]],down:[[0,2],[1,2],[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2]],downleft:[[0,3],[1,3],[2,3],[3,3],[4,3],[5,3],[6,3],[7,3],[8,3]],left:[[0,4],[1,4],[2,4],[3,4],[4,4],[5,4],[6,4],[7,4],[8,4]],upleft:[[0,5],[1,5],[2,5],[3,5],[4,5],[5,5],[6,5],[7,5],[8,5]],up:[[0,6],[1,6],[2,6],[3,6],[4,6],[5,6],[6,6],[7,6],[8,6]],upright:[[0,7],[1,7],[2,7],[3,7],[4,7],[5,7],[6,7],[7,7],[8,7]]},o=9,r=8,n={speed:e.speed??30,framerate:e.fps??24,size:e.size??120,fade:e.fade??!0,freeroam:e.freeroam??!0,shake:e.shake||window._horseShake,image:e.image},a={x:n.size/2,y:n.size/2},s={x:a.x,y:a.y},l=1e3/n.framerate,c=9e3,u=3e3,p=12,m=document.createElement("div"),g,x=0;function v(){if(m.parentElement){if(g||(g=Date.now()),Date.now()-g>=l&&E(),n.shake)if(x>=Date.now()){let N=Math.floor(Math.random()*4-2),B=Math.floor(Math.random()*4-2);document.body.style.transform=`translate3d(${N}px, ${B}px, 0)`}else document.body.style.transform="";requestAnimationFrame(v)}}function y(){x=Date.now()+20}let A=0;function k(N,B){let _=t[N],q=_[0];B&&(q=_[Math.floor(A)%_.length]),m.style.backgroundPosition=`-${q[0]*n.size}px -${q[1]*n.size}px`,m.style.left=`${a.x-n.size/2}px`,m.style.top=`${a.y-n.size/2}px`}let w=1/0,I=!1;function E(){if(g=Date.now(),n.freeroam&&w.5?"down":"",N/_<-.5?"left":"",N/_>.5?"right":""].join("")||"down",$=I?Math.min(n.speed,p):n.speed;if(_>=Math.max($,n.size*.7)){A++,I&&(w=Date.now()+u);let Z=Math.sqrt(window.innerWidth**2+window.innerHeight**2);(_/Z>.5||A%2===1)&&(a.x+=N/_*$,a.y+=B/_*$,I||y());let ae=n.size/2;a.x=Math.min(Math.max(ae,a.x),window.innerWidth-ae),a.y=Math.min(Math.max(ae,a.y),window.innerHeight-ae),k(q,!0)}else A=0,k(q);let re=n.size*.6;I?m.style.opacity="80%":n.fade&&_<=re?m.style.opacity=`${15+_/re*85}%`:m.style.opacity=""}return m.id="fathorse",m.ariaHidden=!0,m.style.width=`${n.size}px`,m.style.height=`${n.size}px`,m.style.left=`${a.x-n.size/2}px`,m.style.top=`${a.y-n.size/2}px`,m.style.position="fixed",m.style.pointerEvents="none",m.style.imageRendering="pixelated",m.style.zIndex=2147483647,m.style.backgroundImage=`url(${JSON.stringify(n.image)})`,m.style.backgroundSize=`${o*n.size}px ${r*n.size}px`,m.style.willChange="left, top, background-position",m.style.transition="opacity 0.1s linear",document.body.appendChild(m),n.shake&&(document.body.style.willChange="transform"),window.addEventListener("mousemove",N=>{s.x=N.clientX,s.y=N.clientY,w=Date.now()+c,I=!1}),requestAnimationFrame(v),s}var K9e=h(()=>{"use strict";d()});function MY(e={}){let{speed:t=10,fps:o=24,image:r="./oneko.gif",persistPosition:n=!0,furColor:a="#FFFFFF",outlineColor:s="#000000"}=e,l=document.createElement("div"),c=32,u=32,p=0,m=0,g=0,x=0,v=null,y=0,A=t,k={idle:[[-3,-3]],alert:[[-7,-3]],scratchSelf:[[-5,0],[-6,0],[-7,0]],scratchWallN:[[0,0],[0,-1]],scratchWallS:[[-7,-1],[-6,-2]],scratchWallE:[[-2,-2],[-2,-3]],scratchWallW:[[-4,0],[-4,-1]],tired:[[-3,-2]],sleeping:[[-2,0],[-2,-1]],N:[[-1,-2],[-1,-3]],NE:[[0,-2],[0,-3]],E:[[-3,0],[-3,-1]],SE:[[-5,-1],[-5,-2]],S:[[-6,-3],[-7,-2]],SW:[[-5,-3],[-6,-1]],W:[[-4,-2],[-4,-3]],NW:[[-1,0],[-1,-1]]};function w(Z,ee,ae){return new Promise((ge,ke)=>{let Ee=new Image;Ee.crossOrigin="anonymous",Ee.onload=()=>{let Ue=document.createElement("canvas");Ue.width=Ee.width,Ue.height=Ee.height;let it=Ue.getContext("2d");it.drawImage(Ee,0,0);let se=it.getImageData(0,0,Ue.width,Ue.height),te=se.data,xe=I(ee),me=I(ae);for(let ze=0;ze{l.style.backgroundImage=`url(${ee})`}).catch(ee=>{console.error("Failed to recolor Oneko image:",ee),l.style.backgroundImage=`url(${Z})`}),document.body.appendChild(l),document.addEventListener("mousemove",function(ee){p=ee.clientX,m=ee.clientY}),n&&window.addEventListener("beforeunload",function(ee){window.localStorage.setItem("oneko",JSON.stringify({nekoPosX:c,nekoPosY:u,mousePosX:p,mousePosY:m,frameCount:g,idleTime:x,idleAnimation:v,idleAnimationFrame:y,bgPos:l.style.backgroundPosition}))}),window.requestAnimationFrame(B)}let N;function B(Z){l.isConnected&&(N||(N=Z),Z-N>1e3/o&&(N=Z,re()),window.requestAnimationFrame(B))}function _(Z,ee){let ae=k[Z][ee%k[Z].length];l.style.backgroundPosition=`${ae[0]*32}px ${ae[1]*32}px`}function q(){v=null,y=0}function $(){if(x+=1,x>10&&Math.floor(Math.random()*200)==0&&v==null){let Z=["sleeping","scratchSelf"];c<32&&Z.push("scratchWallW"),u<32&&Z.push("scratchWallN"),c>window.innerWidth-32&&Z.push("scratchWallE"),u>window.innerHeight-32&&Z.push("scratchWallS"),v=Z[Math.floor(Math.random()*Z.length)]}switch(v){case"sleeping":if(y<8){_("tired",0);break}_("sleeping",Math.floor(y/4)),y>192&&q();break;case"scratchWallN":case"scratchWallS":case"scratchWallE":case"scratchWallW":case"scratchSelf":_(v,y),y>9&&q();break;default:_("idle",0);return}y+=1}function re(){g+=1;let Z=c-p,ee=u-m,ae=Math.sqrt(Z**2+ee**2);if(ae1){_("alert",0),x=Math.min(x,7),x-=1;return}let ge;ge=ee/ae>.5?"N":"",ge+=ee/ae<-.5?"S":"",ge+=Z/ae>.5?"W":"",ge+=Z/ae<-.5?"E":"",_(ge,g),c-=Z/ae*A,u-=ee/ae*A,c=Math.min(Math.max(16,c),window.innerWidth-16),u=Math.min(Math.max(16,u),window.innerHeight-16),l.style.left=`${c-16}px`,l.style.top=`${u-16}px`}E()}var Q9e=h(()=>{"use strict";d()});function pmt(){let{furColor:e,outlineColor:t}=_s.use(["furColor","outlineColor"]),o=s=>{if(!s||typeof s!="string")return null;let l=s.replace(/^#/,"");if(l.length!==6)return null;let c=parseInt(l,16);return isNaN(c)?null:c},r=s=>s===null?"#FFFFFF":"#"+s.toString(16).padStart(6,"0").toUpperCase(),n=s=>{let l=r(s);_s.store.furColor=l,Rc()},a=s=>{let l=r(s);_s.store.outlineColor=l,Rc()};return i("div",null,i("div",{className:NY("color-modal")},i("div",null,i(oe,{className:"form-subtitle"},"Fur Color"),i("div",{className:NY("color")},i(Pr,{color:o(e)??16777215,onChange:n,showEyeDropper:!0}))),i("div",null,i(oe,{className:"form-subtitle"},"Outline Color"),i("div",{className:NY("color")},i(Pr,{color:o(t)??0,onChange:a,showEyeDropper:!0})))))}function Z9e(){document.getElementById("oneko")?.remove(),document.getElementById("fathorse")?.remove()}function Rc(){if(Ve("CursorBuddy"))switch(Z9e(),_s.store.buddy){case"oneko":{MY({speed:_s.store.speed,fps:_s.store.fps,image:umt,persistPosition:!1,furColor:_s.store.furColor,outlineColor:_s.store.outlineColor});break}case"fathorse":PY({speed:_s.store.speed,fps:_s.store.fps,size:_s.store.size,fade:_s.store.fade,freeroam:_s.store.freeroam,shake:_s.store.shake,image:dmt})}}var umt,dmt,NY,_s,hP,Y9e=h(()=>{"use strict";d();W9e();Jt();j();xr();We();O();we();R();C();K9e();Q9e();umt="https://raw.githubusercontent.com/adryd325/oneko.js/5281d057c4ea9bd4f6f997ee96ba30491aed16c0/oneko.gif",dmt="https://raw.githubusercontent.com/nexpid/fatass-horse/08bc4042750d5f995c55327f7b6c6710158f5263/sheet.png",NY=K("vc-cursor-buddy-");_s=M({buddy:{description:"Pick a cursor buddy",type:4,options:[{label:"Oneko",value:"oneko",default:!0},{label:"Fatass Horse",value:"fathorse"}],onChange:Rc},speed:{description:"Speed of your buddy",type:1,default:10,isValid:e=>e>=0||"Speed must be bigger than 0",onChange:Rc},fps:{description:"Framerate of your buddy",type:1,default:24,isValid:e=>e>0||"Framerate must be bigger than 0",onChange:Rc},onekoSection:{type:6,component:()=>i("div",null,i(oe,{style:{fontSize:"1.6em",marginTop:"10px"}},"Oneko"),i(Rt,{style:{marginBottom:"-10px"}}))},onekoColorSettings:{type:6,component:pmt},furColor:{description:"Fur hex color for Oneko",type:0,default:"#FFFFFF",onChange:Rc,hidden:!0},outlineColor:{description:"Outline hex color for Oneko",type:0,default:"#000000",onChange:Rc,hidden:!0},fathorseSection:{type:6,component:()=>i("div",null,i(oe,{style:{fontSize:"1.6em",marginTop:"10px"}},"Fatass Horse"),i(Rt,{style:{marginBottom:"-10px"}}))},size:{description:"Size of the fatass horse",type:1,default:120,isValid:e=>e>0||"Size must be bigger than 0",onChange:Rc},fade:{description:"If the horse should fade when the cursor is near",type:3,default:!0,onChange:Rc},freeroam:{description:"If the horse should roam freely when idle",type:3,default:!0,onChange:Rc},shake:{description:"If the horse should shake the window when it's walking",type:3,default:!1,onChange:Rc}},{furColor:{disabled(){return this.store.buddy!=="oneko"}},outlineColor:{disabled(){return this.store.buddy!=="oneko"}},size:{disabled(){return this.store.buddy!=="fathorse"}},fade:{disabled(){return this.store.buddy!=="fathorse"}},freeroam:{disabled(){return this.store.buddy!=="fathorse"}},shake:{disabled(){return this.store.buddy!=="fathorse"}}});oo("CursorBuddy","Oneko","oneko");hP=S({name:"CursorBuddy",description:"Adds a sprite that follows your cursor.",tags:["Appearance","Customisation","Fun"],authors:[b.Ven,b.adryd,F.nexpid,F.ZcraftElite],searchTerms:["Oneko","FatassHorse","Pet"],settings:_s,isModified:!0,start:Rc,stop:Z9e})});var Lc,xP=h(()=>{"use strict";d();j();R();Lc=M({solidIcon:{type:3,default:!1,description:"Use a solid background on the background of the image"},folderIcons:{type:6,hidden:!0,description:"folder icon settings",component:()=>i(f,null)}})});async function J9e(e,t){Lc.store.folderIcons||(Lc.store.folderIcons={});let o=Lc.store.folderIcons;o[e.folderId]=t}function vP(e,t=1){let o=e&255,r=(e&65280)>>>8;return`rgba(${[(e&16711680)>>>16,r,o].join(",")},${t})`}var BY=h(()=>{"use strict";d();xP()});function mmt(e){let[t,o]=T((Lc.store.folderIcons??{})[e.folderId]?.url??""),[r,n]=T(100);return i(f,null,i(Te,{defaultValue:t,onChange:(a,s)=>{o(a)},placeholder:"https://example.com/image.png"}),i(fmt,{folderProps:e,url:t,size:r}),t&&i(f,null,i("div",{style:{color:"#FFF"}},"Change the size of the folder icon"),i(cn,{initialValue:100,onValueChange:a=>{n(a)},maxValue:200,minValue:25,markers:Array.apply(0,Array(176)).map((a,s)=>s+25),stickToMarkers:!0,keyboardStep:1,renderMarker:()=>null})),i(ue,{onClick:()=>{J9e(e,{url:t,size:r}),Lo("custom-folder-icon")}},"Save"),i("hr",null),i(ue,{onClick:()=>{let a=Lc.store.folderIcons;a[e.folderId]&&(a[e.folderId]=null),Lo("custom-folder-icon")}},"Unset"),i("hr",null))}function fmt({folderProps:e,url:t,size:o}){return t?i("div",{className:"test1234",style:{width:"20vh",height:"20vh",overflow:"hidden",borderRadius:"33%",backgroundColor:vP(e.folderColor,.4),display:"flex",justifyContent:"center",alignItems:"center"}},i("img",{alt:"",src:t,width:`${o}%`,height:`${o}%`})):null}function X9e(e){return i(P.MenuItem,{id:"custom-folder-icons",key:"custom-folder-icons",label:"Change Icon",action:()=>{na(async()=>t=>i(be,{...t,size:"sm",title:"Set a New Icon."},i(mmt,{folderId:e.folderId,folderColor:e.folderColor}),i("div",{style:{color:"white",margin:"2.5%",marginTop:"1%"}},"You might have to hover the folder after setting in order for it to refresh.")),{modalKey:"custom-folder-icon"})}})}var V9e=h(()=>{"use strict";d();C();xP();BY()});var yP,eke=h(()=>{"use strict";d();O();R();V9e();xP();BY();yP=S({name:"CustomFolderIcons",description:"Customize folder icons with any png",tags:["Appearance","Customisation","Organisation"],authors:[F.sadan],settings:Lc,patches:[{find:"#{intl::GUILD_FOLDER_TOOLTIP_A11Y_LABEL}",replacement:{match:/(\(0,\i\.jsx\)\(\i,\{folderNode:(\i),hovered:\i,sorting:\i\}\))/,replace:"($self.shouldReplace({folderNode:$2})?$self.replace({folderNode:$2}):$1)"}}],contextMenus:{"guild-context":(e,t)=>{"folderId"in t&&e.push(X9e(t))}},shouldReplace(e){return!!Lc.store.folderIcons?.[e.folderNode.id]?.url},replace(e){let t=Lc.store.folderIcons;if(t&&t[e.folderNode.id]){let o=t[e.folderNode.id];return i("div",{style:{backgroundColor:vP(e.folderNode.color,+Lc.store.solidIcon||.4),display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%"}},i("img",{alt:"",src:o.url,width:`${o.size??100}%`,height:`${o.size??100}%`}))}}})});var tke=h(()=>{});async function oke(e){let t=crypto.randomUUID(),o=await e.arrayBuffer(),r=await nke(o,e.type,e.name),n=await vt(s8)??{};return n[t]={id:t,name:e.name,buffer:o,type:e.type,dataUri:r},await Ct(s8,n),t}async function Sm(){return await vt(s8)??{}}async function nke(e,t,o){try{let r=t||"audio/mpeg";if((!r||r==="application/octet-stream")&&o)switch(o.split(".").pop()?.toLowerCase()){case"ogg":r="audio/ogg";break;case"mp3":r="audio/mpeg";break;case"wav":r="audio/wav";break;case"m4a":case"mp4":r="audio/mp4";break;case"flac":r="audio/flac";break;case"aac":r="audio/aac";break;case"webm":r="audio/webm";break;case"wma":r="audio/x-ms-wma";break;default:r="audio/mpeg"}let n=new Uint8Array(e),a=new Blob([n],{type:r});return new Promise((s,l)=>{let c=new FileReader;c.onloadend=()=>s(c.result),c.onerror=l,c.readAsDataURL(a)})}catch(r){console.error("[CustomSounds] Error generating data URI:",r);let n=new Uint8Array(e),a="",s=8192;for(let c=0;c{"use strict";d();Io();s8="ScattrdCustomSounds"});function ake({type:e,override:t,onChange:o}){let r=V.useRef(null),n=Vt(),a=V.useRef(null),[s,l]=V.useState({});V.useEffect(()=>{Sm().then(l)},[]);let c=async()=>{await o(),n()},u=async()=>{if(a.current?.stop(),!t.enabled){a.current=ii(e.id);return}let{selectedSound:x}=t;if(x==="custom"&&t.selectedFileId)try{let v=await Sg(t.selectedFileId);if(!v||!v.startsWith("data:audio/")){ne("No custom sound file available for preview");return}a.current=ii(v,{volume:t.volume,onError:y=>{console.error("[CustomSounds] Error playing custom audio:",y),ne("Error playing custom sound. File may be corrupted.")}})}catch(v){console.error("[CustomSounds] Error in previewSound:",v),ne("Error playing sound.")}else x==="default"?a.current=ii(e.id):a.current=ii(x)},p=async x=>{let v=x.target.files?.[0];if(!v)return;let y=v.name.split(".").pop()?.toLowerCase();if(!y||!gmt.includes(y)){ne("Invalid file type. Please upload an audio file."),x.target.value="";return}try{ne("Uploading file...");let A=await oke(v),k=await Sm();l(k),t.selectedFileId=A,t.selectedSound="custom",await Sg(A),await c(),ne(`File uploaded successfully: ${v.name}`)}catch(A){console.error("[CustomSounds] Error uploading file:",A),ne(`Error uploading file: ${A}`)}x.target.value=""},m=async x=>{try{await ike(x);let v=await Sm();l(v),t.selectedFileId===x?(t.selectedFileId=void 0,t.selectedSound="default",await c()):n(),ne("File deleted successfully")}catch(v){console.error("[CustomSounds] Error deleting file:",v),ne("Error deleting file.")}},g=Object.entries(s).filter(([x,v])=>!!x&&!!v?.name).map(([x,v])=>({value:x,label:v.name}));return i(Ht,{className:bP("card")},i(mo,{title:e.name,value:t.enabled||!1,onChange:async x=>{if(console.log(`[CustomSounds] Setting ${e.id} enabled to:`,x),t.enabled=x,x&&t.selectedSound==="custom"&&t.selectedFileId)try{await Sg(t.selectedFileId)}catch(v){console.error(`[CustomSounds] Failed to cache data URI for ${e.id}:`,v),ne("Error loading custom sound file")}await c(),console.log("[CustomSounds] After setting enabled, override.enabled =",t.enabled)},className:z.bottom16,hideBorder:!0}),t.enabled&&i(f,null,i("div",{className:bP("override-controls")},i(de,{variant:"positive",onClick:u},"Preview"),i(de,{variant:"dangerPrimary",onClick:()=>a.current?.stop()},"Stop")),i("div",{className:z.bottom16},i(oe,null,"Volume"),i(cn,{markers:zt(0,100,10),initialValue:t.volume,onValueChange:x=>{a.current&&(a.current.volume=x),t.volume=x,c()},disabled:!t.enabled})),i("div",{className:z.bottom16},i(oe,null,"Sound Source"),i(qt,{options:[{value:"default",label:"Default"},...e.seasonal?.map(x=>({value:x,label:hmt(x)}))??[],{value:"custom",label:"Custom"}],isSelected:x=>x===t.selectedSound,select:async x=>{if(t.selectedSound=x,x==="custom"&&t.selectedFileId)try{await Sg(t.selectedFileId)}catch(v){console.error(`[CustomSounds] Failed to cache data URI for ${e.id}:`,v),ne("Error loading custom sound file")}await c()},serialize:x=>x.value})),t.selectedSound==="custom"&&i(f,null,i("div",{className:z.bottom8},i(oe,null,"Custom File"),i(qt,{options:[{value:"",label:"Select a file..."},...g],isSelected:x=>x===(t.selectedFileId||""),select:async x=>{x?(t.selectedFileId=x,await Sg(x)):t.selectedFileId=void 0,await c()},serialize:x=>x.value})),i("input",{className:bP("file-input"),ref:r,type:"file",accept:".mp3,.wav,.ogg,.m4a,.flac,.aac,.webm,.wma,.mp4",onChange:p}),i("div",{className:bP("override-controls")},i(de,{variant:"primary",onClick:()=>r.current?.click()},"Upload New"),t.selectedFileId&&s[t.selectedFileId]&&i(de,{variant:"dangerPrimary",onClick:()=>m(t.selectedFileId)},"Delete Selected File")))))}var gmt,bP,tjo,hmt,ske=h(()=>{"use strict";d();rl();Tt();Qn();hi();We();we();Wt();Kt();R();le();C();RY();LY();gmt=["mp3","wav","ogg","m4a","aac","flac","webm","wma","mp4"],bP=K("vc-custom-sounds-"),tjo=qn(e=>e.prototype?.activateUploadDialogue&&e.prototype.setRef),hmt=e=>e.replace(/_/g," ").replace(/\b\w/g,t=>t.toUpperCase())});function wy(){return{enabled:!1,selectedSound:"default",volume:100,useFile:!1,selectedFileId:void 0}}var Sy,OY,lke=h(()=>{"use strict";d();Sy={halloween_call_calling:"https://canary.discord.com/assets/0950a7ea4f1dd037870b.mp3",winter_call_calling:"https://canary.discord.com/assets/7b945e7be3f86c5b7c82.mp3",halloween_call_ringing:"https://canary.discord.com/assets/1b883b366ae11a303b82.mp3",winter_call_ringing:"https://canary.discord.com/assets/e087eb83aaa4c43a44bc.mp3",call_ringing_beat:"https://canary.discord.com/assets/3b3a2f5f29b9cb656efb.mp3",call_ringing_snow_halation:"https://canary.discord.com/assets/99b1d8a6fe0b95e99827.mp3",call_ringing_snowsgiving:"https://canary.discord.com/assets/54527e70cf0ddaeff76f.mp3",halloween_deafen:"https://canary.discord.com/assets/c4aedda3b528df50221c.mp3",winter_deafen:"https://canary.discord.com/assets/9bb77985afdb60704817.mp3",halloween_disconnect:"https://canary.discord.com/assets/ca7d2e46cb5a16819aff.mp3",winter_disconnect:"https://canary.discord.com/assets/ec5d85405877c27caeda.mp3",halloween_message1:"https://canary.discord.com/assets/e386c839fb98675c6a79.mp3",halloween_mute:"https://canary.discord.com/assets/ee7fdadf4c714eed6254.mp3",winter_mute:"https://canary.discord.com/assets/6d7616e08466ab9f1c6d.mp3",halloween_undeafen:"https://canary.discord.com/assets/045e5b9608df1607e0cf.mp3",winter_undeafen:"https://canary.discord.com/assets/fa8da1499894ecac36c7.mp3",halloween_unmute:"https://canary.discord.com/assets/260c581568eacca03f7e.mp3",winter_unmute:"https://canary.discord.com/assets/9dbfb1c211e3815cd7b1.mp3",halloween_user_join:"https://canary.discord.com/assets/80cf806f45467a5898cd.mp3",winter_user_join:"https://canary.discord.com/assets/badc42c2a9063b4a962c.mp3",halloween_user_leave:"https://canary.discord.com/assets/f407ad88a1dc40541769.mp3",winter_user_leave:"https://canary.discord.com/assets/ec3d9eaea30b33e16da6.mp3"},OY=[{name:"Activity End",id:"activity_end"},{name:"Activity Launch",id:"activity_launch"},{name:"Activity User Join",id:"activity_user_join"},{name:"Activity User Left",id:"activity_user_left"},{name:"ASMR Message",id:"asmr_message1"},{name:"Bit Message",id:"bit_message1"},{name:"Bop Message",id:"bop_message1"},{name:"Call Calling",id:"call_calling",seasonal:["halloween_call_calling","winter_call_calling"]},{name:"Call Ringing",id:"call_ringing",seasonal:["halloween_call_ringing","winter_call_ringing","call_ringing_beat","call_ringing_snow_halation","call_ringing_snowsgiving"]},{name:"Clip Error",id:"clip_error"},{name:"Clip Save",id:"clip_save"},{name:"DDR Down",id:"ddr-down"},{name:"DDR Left",id:"ddr-left"},{name:"DDR Right",id:"ddr-right"},{name:"DDR Up",id:"ddr-up"},{name:"Deafen",id:"deafen",seasonal:["halloween_deafen","winter_deafen"]},{name:"Discodo",id:"discodo"},{name:"Disconnect",id:"disconnect",seasonal:["halloween_disconnect","winter_disconnect"]},{name:"Ducky Message",id:"ducky_message1"},{name:"Hang Status Select",id:"hang_status_select"},{name:"Highfive Clap",id:"highfive_clap"},{name:"Highfive Whistle",id:"highfive_whistle"},{name:"Human Man",id:"human_man"},{name:"LoFi Message",id:"lofi_message1"},{name:"Mention 1 (@role)",id:"mention1"},{name:"Mention 2 (@everyone)",id:"mention2"},{name:"Mention 3 (@here)",id:"mention3"},{name:"Message 1 (Generic)",id:"message1",seasonal:["halloween_message1"]},{name:"Message 2 (Reply in Server)",id:"message2"},{name:"Message 3 (DMs and Group DMs)",id:"message3"},{name:"Mute",id:"mute",seasonal:["halloween_mute","winter_mute"]},{name:"Overlay Unlock",id:"overlayunlock"},{name:"Poggermode Achievement",id:"poggermode_achievement_unlock"},{name:"Poggermode Applause",id:"poggermode_applause"},{name:"Poggermode Enabled",id:"poggermode_enabled"},{name:"Poggermode Message",id:"poggermode_message_send"},{name:"PTT Start",id:"ptt_start"},{name:"PTT Stop",id:"ptt_stop"},{name:"Reconnect",id:"reconnect"},{name:"Robot Man",id:"robot_man"},{name:"Stage Waiting",id:"stage_waiting"},{name:"Stream Ended",id:"stream_ended"},{name:"Stream Started",id:"stream_started"},{name:"Stream User Joined",id:"stream_user_joined"},{name:"Stream User Left",id:"stream_user_left"},{name:"Success",id:"success"},{name:"Undeafen",id:"undeafen",seasonal:["halloween_undeafen","winter_undeafen"]},{name:"Unmute",id:"unmute",seasonal:["halloween_unmute","winter_unmute"]},{name:"User Join",id:"user_join",seasonal:["halloween_user_join","winter_user_join"]},{name:"User Leave",id:"user_leave",seasonal:["halloween_user_leave","winter_user_leave"]},{name:"User Moved",id:"user_moved"},{name:"Vibing Wumpus",id:"vibing_wumpus"}]});function l8(e){let t=Ay.store[e];if(!t)return wy();if(typeof t=="object")return t;try{return JSON.parse(t)}catch{return wy()}}function SP(e,t){Ay.store[e]=JSON.stringify(t)}async function Sg(e){if(Jh.has(e))return Jh.get(e);try{let t=await rke(e);if(t)return Jh.set(e,t),console.log(`[CustomSounds] Cached data URI for file ${e}`),t}catch(t){console.error(`[CustomSounds] Error generating data URI for ${e}:`,t)}return null}async function ymt(){console.log("[CustomSounds] Preloading data URIs into memory cache...");for(let e of Yh){let t=l8(e.id);if(t?.enabled&&t.selectedSound==="custom"&&t.selectedFileId)try{await Sg(t.selectedFileId),console.log(`[CustomSounds] Preloaded data URI for ${e.id}`)}catch(o){console.error(`[CustomSounds] Failed to preload data URI for ${e.id}:`,o)}}console.log(`[CustomSounds] Memory cache contains ${Jh.size} data URIs`)}async function bmt(){console.log("[CustomSounds] === DEBUG INFO ===");let e=await vt(xmt);console.log("[CustomSounds] Raw DataStore content:",e);let t=await Sm();console.log(`[CustomSounds] Stored files: ${Object.keys(t).length}`);let o=0,r=0;for(let[s,l]of Object.entries(t)){let c=l.buffer?.byteLength||0,u=l.dataUri?.length||0;o+=c,r+=u,console.log(`[CustomSounds] File ${s}:`,{name:l.name,type:l.type,bufferSize:`${(c/1024).toFixed(1)}KB`,hasValidBuffer:l.buffer instanceof ArrayBuffer,hasDataUri:!!l.dataUri,dataUriSize:`${(u/1024).toFixed(1)}KB`})}console.log(`[CustomSounds] Total storage - Buffers: ${(o/1024).toFixed(1)}KB, DataURIs: ${(r/1024).toFixed(1)}KB`),console.log(`[CustomSounds] Memory cache contains ${Jh.size} data URIs`),console.log("[CustomSounds] Settings store structure:",Object.keys(Ay.store)),console.log("[CustomSounds] Sound override status:");let n=0,a=0;for(let[s,l]of Object.entries(Ay.store)){if(s==="overrides")continue;let c=l8(s),u=JSON.stringify(c).length;a+=u,console.log(`[CustomSounds] ${s}:`,{enabled:c.enabled,selectedSound:c.selectedSound,selectedFileId:c.selectedFileId,volume:c.volume,settingsSize:`${u}B`}),c.enabled&&n++}console.log(`[CustomSounds] Total enabled overrides: ${n}`),console.log(`[CustomSounds] Estimated settings size: ${(a/1024).toFixed(1)}KB`),console.log("[CustomSounds] === END DEBUG ===")}var FY,Yh,xmt,Jh,vmt,Smt,Ay,wP,LY=h(()=>{"use strict";d();tke();Io();j();Tt();We();O();we();R();C();RY();ske();lke();FY=K("vc-custom-sounds-"),Yh=OY||[],xmt="ScattrdCustomSounds",Jh=new Map;vmt=e=>{let t=e.audio;e.audio in Sy&&(t=OY.find(r=>r.seasonal?.includes(e.audio))?.id||e.audio);let o=l8(t);if(o?.enabled){if(o.selectedSound==="custom"&&o.selectedFileId){let r=Jh.get(o.selectedFileId);if(r){e.audio=r,e.volume=o.volume;return}else return}if(o.selectedSound!=="default"&&o.selectedSound!=="custom"){if(o.selectedSound in Sy){e.audio=Sy[o.selectedSound],e.volume=o.volume;return}let r=Yh.find(n=>n.id===e.audio);if(r?.seasonal){let n=r.seasonal.find(a=>a.startsWith(`${o.selectedSound}_`));if(n&&n in Sy){e.audio=Sy[n],e.volume=o.volume;return}}}e.volume=o.volume}};Smt=Object.fromEntries(Yh.map(e=>[e.id,{type:0,description:`Override for ${e.name}`,default:JSON.stringify(wy()),hidden:!0}])),Ay=M({...Smt,overrides:{type:6,description:"",component:()=>{let[e,t]=V.useState(0),[o,r]=V.useState(""),n=V.useRef(null);V.useEffect(()=>{Yh.forEach(p=>{Ay.store[p.id]||SP(p.id,wy())})},[]);let a=()=>{Yh.forEach(p=>{SP(p.id,wy())}),Jh.clear(),t(p=>p+1),ne("All overrides reset successfully!")},s=()=>{n.current?.click()},l=p=>{let m=p.target.files?.[0];if(m){let g=new FileReader;g.onload=async x=>{try{a();let v=JSON.parse(x.target?.result);v.overrides&&Array.isArray(v.overrides)&&v.overrides.forEach(y=>{if(y.id){let A={enabled:y.enabled??!1,selectedSound:y.selectedSound??"default",selectedFileId:y.selectedFileId??void 0,volume:y.volume??100,useFile:!1};SP(y.id,A)}}),t(y=>y+1),ne("Settings imported successfully!")}catch(v){console.error("Error importing settings:",v),ne("Error importing settings. Check console for details.")}},g.readAsText(m),p.target.value=""}},c=async()=>{let p=Yh.map(y=>{let A=l8(y.id);return{id:y.id,enabled:A.enabled,selectedSound:A.selectedSound,selectedFileId:A.selectedFileId??void 0,volume:A.volume}}).filter(y=>y.enabled||y.selectedSound!=="default"),m={overrides:p,__note:"Audio files are not included in exports and will need to be re-uploaded after import"},g=new Blob([JSON.stringify(m,null,2)],{type:"application/json"}),x=URL.createObjectURL(g),v=document.createElement("a");v.href=x,v.download="customSounds-settings.json",v.click(),URL.revokeObjectURL(x),ne(`Exported ${p.length} settings (audio files not included)`)},u=Yh.filter(p=>p.name.toLowerCase().includes(o.toLowerCase())||p.id.toLowerCase().includes(o.toLowerCase()));return i("div",null,i("div",{className:"vc-custom-sounds-buttons"},i(de,{variant:"primary",onClick:s},"Import"),i(de,{variant:"secondary",onClick:c},"Export"),i(de,{variant:"dangerPrimary",onClick:a},"Reset All"),i(de,{variant:"overlayPrimary",onClick:bmt},"Debug"),i("input",{className:FY("file-input"),ref:n,type:"file",accept:".json",onChange:l})),i("div",{className:FY("search")},i(oe,null,"Search Sounds"),i(Te,{value:o,onChange:p=>r(p),placeholder:"Search by name or ID"})),i("div",{className:FY("sounds-list")},u.map(p=>{let m=l8(p.id);return i(ake,{key:`${p.id}-${e}`,type:p,override:m,onChange:async()=>{if(SP(p.id,m),m.enabled&&m.selectedSound==="custom"&&m.selectedFileId)try{await Sg(m.selectedFileId)}catch(g){console.error(`[CustomSounds] Failed to cache data URI for ${p.id}:`,g),ne("Error loading custom sound file")}console.log(`[CustomSounds] Settings saved for ${p.id}:`,m)}})})))}}}),wP=S({name:"CustomSounds",description:"Customize Discord's sounds.",dependencies:["AudioPlayerAPI"],tags:["Customisation","Notifications","Voice"],authors:[b.ScattrdBlade,b.TheKodeToad],settings:Ay,startAt:"Init",audioProcessor:vmt,async start(){console.log("[CustomSounds] Plugin starting...");try{await ymt(),console.log("[CustomSounds] Startup complete")}catch(e){console.error("[CustomSounds] Startup failed:",e)}},stop(){console.log("[CustomSounds] Plugin stopped")}})});var ky,Xh,AP,cke=h(()=>{"use strict";d();j();O();R();ky={HALF_SECOND:500,SECOND:1e3,MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,DAYS_30:2592e6},Xh=M({showForeverOnTop:{type:3,description:"Show the Forever option at the top of the list instead of the bottom.",restartNeeded:!0,default:!0},extraSeconds:{type:0,description:"Extra seconds to add, separated by a comma (e.g. 5, 10, 30)",restartNeeded:!0,default:"15, 30, 45"},extraMinutes:{type:0,description:"Extra minutes to add, separated by a comma (e.g. 5, 10, 30)",restartNeeded:!0,default:"5, 10, 30"},extraHours:{type:0,description:"Extra hours to add, separated by a comma (e.g. 2, 4, 6, 12)",restartNeeded:!0,default:"2, 4, 6, 12"},extraDays:{type:0,description:"Extra days to add, separated by a comma (e.g. 1, 2)",restartNeeded:!0,default:"1, 2"}}),AP=S({name:"CustomStatusTimeouts",description:"Adds configurable timeout presets to the status (presence) menu.",tags:["Activity","Utility"],authors:[F.Kiri,F.thororen],settings:Xh,patches:[{find:"#{intl::DURATION_FOREVER}",replacement:{match:/\[\{duration.*?#{intl::DURATION_FOREVER}\)\}\]/,replace:"$self.buildTimeouts($&)"}}],buildTimeouts(e){let t=u=>u.split(",").map(p=>Number(p.trim())).filter(Boolean),o=t(Xh.store.extraSeconds),r=t(Xh.store.extraMinutes),n=t(Xh.store.extraHours),a=t(Xh.store.extraDays),s=[1,2,3],l=[2,4],c=[...o.map(u=>({duration:u*ky.SECOND,label:()=>`For ${u} ${u===1?"Second":"Seconds"}`})),...r.map(u=>({duration:u*ky.MINUTE,label:()=>`For ${u} ${u===1?"Minute":"Minutes"}`})),...n.map(u=>({duration:u*ky.HOUR,label:()=>`For ${u} ${u===1?"Hour":"Hours"}`})),...a.map(u=>({duration:u*ky.DAY,label:()=>`For ${u} ${u===1?"Day":"Days"}`})),...s.map(u=>({duration:u*ky.WEEK,label:()=>`For ${u} ${u===1?"Week":"Weeks"}`})),...l.map(u=>({duration:u*ky.DAYS_30,label:()=>`For ${u} ${u===1?"Month":"Months"}`}))];return[...e,...c].sort((u,p)=>u.duration===void 0?Xh.store.showForeverOnTop?-1:1:p.duration===void 0?Xh.store.showForeverOnTop?1:-1:u.duration-p.duration)}})});var _Y=h(()=>{});var wmt,Amt,kmt,Jl,kP,uke,dke=h(()=>{"use strict";d();_Y();Pe();Je();le();C();UY();wmt=he(/previewGuildId:\i,preview:\i,/),Amt=Oe('username:"Clyde"'),kmt=Oe("isProbablyAValidSnowflake","messageReference:"),Jl={cozyFormat:{name:"Cozy mode",description:"Time format to use in messages on cozy mode",default:"[calendar]",offset:0},compactFormat:{name:"Compact mode",description:"Time format on compact mode and hovering messages",default:"LT",offset:0},tooltipFormat:{name:"Tooltip",description:"Time format to use on tooltips",default:"LLLL \u2022 [relative]",offset:0},ariaLabelFormat:{name:"Aria label",description:"Time format to use on aria labels",default:"[calendar]",offset:0},sameDayFormat:{name:"Same day",description:"[calendar] format for today",default:"[Today at] HH:mm:ss",offset:0},lastDayFormat:{name:"Last day",description:"[calendar] format for yesterday",default:"[Yesterday at] HH:mm:ss",offset:-1e3*60*60*24},lastWeekFormat:{name:"Last week",description:"[calendar] format for within the last week",default:"ddd DD.MM.YYYY HH:mm:ss",offset:-1e3*60*60*24*6},sameElseFormat:{name:"Older date",description:"[calendar] format for older dates",default:"ddd DD.MM.YYYY HH:mm:ss",offset:-1e3*60*60*24*31}},kP=e=>{let t=Amt({content:e.message,channelId:"1337",embeds:[]});t.author=L.getCurrentUser(),t.id=e.msgId,t.timestamp=bi(e.date??new Date);let o=L.getCurrentUser(),r=t&&kmt(t);return r?i("div",{className:"vc-cmt-demo-message"},i(wmt,{author:{...o,nick:o.globalName||o.username},message:r,compact:e.compact,isGroupStart:e.isGroupStart||!1,className:"vc-cmt-demo-message-preview",hideSimpleEmbedContent:!0})):i("div",{className:"vc-cmt-demo-message"},i(U,null,i("b",null,"Preview:")," ",Cy.renderTimestamp(date,"cozy")))},uke=H.wrap(()=>{let[e,t]=T(!1),o=Se(new Date),r=Se(new Date(Date.now()+Jl.lastDayFormat.offset)),n=Se(new Date(Date.now()+Jl.lastWeekFormat.offset)),a=Se(new Date(Date.now()+Jl.sameElseFormat.offset));return i("div",{className:"vc-cmt-demo-message-container",onClick:()=>t(!e)},i(kP,{compact:e,msgId:"1337",message:`Click me to switch to ${e?"cozy":"compact"} mode`,isGroupStart:!0,date:a.current}),i(kP,{compact:e,msgId:"1338",message:"This message was sent in the last week",isGroupStart:!0,date:n.current}),i(kP,{compact:e,msgId:"1339",message:"Hover over timestamps to see tooltip formats",isGroupStart:!0,date:r.current}),i(kP,{compact:e,msgId:"1340",message:"Edit the formats below to see them live update here",isGroupStart:!0,date:o.current}))},{noop:!0})});var Cmt,Tmt,wm,Cy,UY=h(()=>{"use strict";d();_Y();j();xr();We();$r();Je();O();Wt();Kt();R();C();dke();Cmt=(e,t)=>{let o=bi(e);bi.relativeTimeThreshold("s",60),bi.relativeTimeThreshold("ss",-1),bi.relativeTimeThreshold("m",60);let r=wm.store?.formats?.sameDayFormat||Jl.sameDayFormat.default,n=wm.store?.formats?.lastDayFormat||Jl.lastDayFormat.default,a=wm.store?.formats?.lastWeekFormat||Jl.lastWeekFormat.default,s=wm.store?.formats?.sameElseFormat||Jl.sameElseFormat.default;return o.format(t).replace("calendar",()=>o.calendar(null,{sameDay:r,lastDay:n,lastWeek:a,sameElse:s})).replace("relative",()=>o.fromNow())},Tmt=e=>{let[t,o]=T(e.pluginSettings?.[e.id]||e.format.default),r=n=>{o(n),e.onChange(e.id,n)};return i(f,null,i(oe,null,e.format.name),i(U,null,e.format.description),i(Te,{value:t,onChange:r}))},wm=M({formats:{type:6,description:"Customize the timestamp formats",component:e=>{let[t,o]=T(lo().plugins?.CustomTimestamps?.formats??{}),r=(n,a)=>{let s={...t,[n]:a};o(s),e.setValue(s)};return i(f,null,i(uke,null),Object.entries(Jl).map(([n,a])=>i("section",{key:n},n==="sameDayFormat"&&i("div",{className:z.bottom20},i(Rt,{style:{marginBottom:"10px"}}),i(oe,{tag:"h1"},"Calendar formats"),i(U,null,"How to format the [calendar] value if used in the above timestamps.")),i(Tmt,{id:n,format:a,onChange:r,pluginSettings:t}))))}}}).withPrivateSettings(),Cy=S({name:"CustomTimestamps",description:"Custom timestamps on messages and tooltips",tags:["Appearance","Customisation"],authors:[b.Rini,F.nvhhr,F.Suffocate,b.Obsidian],settings:wm,settingsAboutComponent:()=>i("div",{className:"vc-cmt-info-card"},i(ta,null,"How to use:"),i(U,null,i(so,{href:"https://momentjs.com/docs/#/displaying/format/"},"Moment.js formatting documentation"),i("div",{className:z.top8},"Additionally you can use these in your inputs:",i("br",null),i("b",null,"[calendar]"),' enables dynamic date formatting such as "Today" or "Yesterday".',i("br",null),i("b",null,"[relative]"),' gives you times such as "4 hours ago".',i("br",null)))),patches:[{find:"#{intl::MESSAGE_EDITED_TIMESTAMP_A11Y_LABEL}",replacement:[{match:/\i.useMemo\(.{0,10}\i\.\i\)\(.{0,10}\]\)/,replace:"$self.renderTimestamp(arguments[0].timestamp,'ariaLabel')"},{match:/\i\.useMemo\(.{0,50}"LT".{0,30}\]\)/,replace:"$self.renderTimestamp(arguments[0].timestamp,arguments[0].compact?'compact':'cozy')"},{match:/(__unsupportedReactNodeAsText:).{0,25}"LLLL"\)/,replace:"$1$self.renderTimestamp(arguments[0].timestamp,'tooltip')"}]},{find:/.full,.{0,15}children:/,replacement:{match:/(__unsupportedReactNodeAsText:)\i.full/,replace:"$1$self.renderTimestamp(new Date(arguments[0].node.timestamp*1000),'tooltip')"}}],renderTimestamp:(e,t)=>{let o=Vt(),r;switch(t){case"cozy":r=wm.store.formats?.cozyFormat||Jl.cozyFormat.default;break;case"compact":r=wm.store.formats?.compactFormat||Jl.compactFormat.default;break;case"tooltip":r=wm.store.formats?.tooltipFormat||Jl.tooltipFormat.default;break;case"ariaLabel":r=wm.store.formats?.ariaLabelFormat||Jl.ariaLabelFormat.default}return G(()=>{if(r.includes("calendar")||r.includes("relative")){let n=setInterval(o,1e3);return()=>clearInterval(n)}},[]),Cmt(e,r)}})});var CP,pke=h(()=>{"use strict";d();O();R();CP=S({name:"DisableCameras",description:"Disables cameras in a call by default",tags:["Appearance","Customisation","Media","Privacy"],authors:[b.Joona],patches:[{find:".identifyStartTime))",replacement:{match:/\i\.self_video\|\|!1/g,replace:"false"}}]})});var mke=h(()=>{});var Ty,fke,gke,hke=h(()=>{"use strict";d();j();R();c8();Ty=M({format:{component:({setValue:e})=>xke(e),type:6,default:"{equicordIcon} Equicord {equicordVersion} ({equicordHash})",restartNeeded:!0}}),fke={stable:"Stable",ptb:"PTB",canary:"Canary",staging:"Staging"},gke=["Discord Variables:","{discordIcon} - Discord icon","{devbannerIcon} - Dev banner icon","{buildChannel} - Discord build channel (e.g. Stable)","{buildNumber} - Discord build number (e.g. 123456)","{buildHash} - Discord build hash (e.g. 123456789)","","Equicord Variables:","{equicordIcon} - Equicord icon","{equicordVersion} - Version of Equicord (e.g. 1.0.0)","{equicordHash} - Equicord build hash (e.g. 123456789)","{equicordPlatform} - Platform Equicord is running on (e.g. Dev Build)","","Equibop Specific Variables:","{equibopHash} - Equibop build hash (e.g. 123456789)","{equibopPlatform} - Platform Equibop is running on (e.g. Dev Build)","","Client Variables:","{clientIcon} - Desktop icon","{clientName} - The name of your current client","{clientVersion} - Version of your client (e.g. 1.0.0)","","Electron Variables:","{electronIcon} - Electron icon","{electronVersion} - Electron runtime version (e.g. 25.0.0)","","Chromium Variables:","{chromiumIcon} - Chromium icon","{chromiumVersion} - Chromium engine version (e.g. 125.0.0.0)","","Miscellaneous Variables:","{newline} or \\n - Newline character",""]});function xke(e){let{format:t}=Ty.store,[o,r]=T(t??"{buildChannel} {buildNumber} ({buildHash}) | {equicordName} {equicordVersion} ({equicordHash})"),[n,a]=T(null);function s(c){if(!c.trim()){a("Format cannot be empty.");return}a(null),r(c),e(c)}let l=TP(o);return i("section",null,i(U,{className:"vc-discord-dev-banner-text"},"The format for the Discord Dev Banner. You can use the following variables:",` `,gke.join(` `)),i(U,{className:"vc-discord-dev-banner-text"},"Preview:"),i(U,{style:{padding:"2px"}},l),i("textarea",{className:"vc-discord-dev-banner-input",value:o,onChange:c=>s(c.target.value),placeholder:"{buildChannel} {buildNumber} ({buildHash}) | {equicordName} {equicordVersion} ({equicordHash})",rows:1,ref:c=>{c&&(c.style.height="auto",c.style.height=c.scrollHeight+"px")},onInput:c=>{let u=c.currentTarget;u.style.height="auto",u.style.height=u.scrollHeight+"px"}}),n&&i(U,{className:"vc-discord-dev-banner-error"},n))}var vke=h(()=>{"use strict";d();Je();C();c8()});var yke,bke,Ske,wke,Ake,kke,Cke=h(()=>{"use strict";d();yke=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 512 512",width:"14px",height:"14px"},i("path",{d:"M188.8,255.93A67.2,67.2,0,1,0,256,188.75,67.38,67.38,0,0,0,188.8,255.93Z"}),i("path",{d:"M476.75,217.79s0,0,0,.05a206.63,206.63,0,0,0-7-28.84h-.11a202.16,202.16,0,0,1,7.07,29h0a203.5,203.5,0,0,0-7.07-29H314.24c19.05,17,31.36,40.17,31.36,67.05a86.55,86.55,0,0,1-12.31,44.73L231,478.45a2.44,2.44,0,0,1,0,.27V479h0v-.26A224,224,0,0,0,256,480c6.84,0,13.61-.39,20.3-1a222.91,222.91,0,0,0,29.78-4.74C405.68,451.52,480,362.4,480,255.94A225.25,225.25,0,0,0,476.75,217.79Z"}),i("path",{d:"M256,345.5c-33.6,0-61.6-17.91-77.29-44.79L76,123.05l-.14-.24A224,224,0,0,0,207.4,474.55l0-.05,77.69-134.6A84.13,84.13,0,0,1,256,345.5Z"}),i("path",{d:"M91.29,104.57l77.35,133.25A89.19,89.19,0,0,1,256,166H461.17a246.51,246.51,0,0,0-25.78-43.94l.12.08A245.26,245.26,0,0,1,461.17,166h.17a245.91,245.91,0,0,0-25.66-44,2.63,2.63,0,0,1-.35-.26A223.93,223.93,0,0,0,91.14,104.34l.14.24Z"})),bke=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 24 24",width:"14px",height:"14px"},i("path",{d:"M4 2.5c-1.103 0-2 .897-2 2v11c0 1.104.897 2 2 2h7v2H7v2h10v-2h-4v-2h7c1.103 0 2-.896 2-2v-11c0-1.103-.897-2-2-2H4Zm16 2v9H4v-9h16Z"})),Ske=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 14 14",width:"14px",height:"14px"},i("path",{d:"M6.99471698,9.67522659 C8.47108874,9.67522659 9.66792453,8.47748685 9.66792453,7 C9.66792453,5.52251315 8.47108874,4.32477341 6.99471698,4.32477341 C5.51834522,4.32477341 4.32150943,5.52251315 4.32150943,7 C4.32150943,8.47748685 5.51834522,9.67522659 6.99471698,9.67522659 Z M6.99471698,2.67522659 C8.18867925,2.67522659 9.26641509,3.16163142 10.0483019,3.94410876 L11.9396226,2.05135952 C10.6822642,0.782477341 8.92830189,0 6.99471698,0 C3.12754717,0 0,3.14048338 0,7 L2.67320755,7 C2.67320755,4.6102719 4.60679245,2.67522659 6.99471698,2.67522659 Z M11.3267925,7 C11.3267925,9.3897281 9.39320755,11.3247734 7.00528302,11.3247734 C5.81132075,11.3247734 4.73358491,10.8383686 3.94113208,10.0558912 L2.04981132,11.9486405 C3.31773585,13.2175227 5.06113208,14 6.99471698,14 C10.8618868,14 14,10.8595166 14,7 L11.3267925,7 Z"})),wke=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 16 16",width:"14px",height:"14px"},i("path",{d:"M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"})),Ake=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 24 24",width:"14px",height:"14px"},i("path",{d:"M2.648 11.678c-1.038-1.81-1.249-3.504-.511-4.781.988-1.712 3.468-2.31 6.604-1.739a.322.322 0 1 1-.115.633c-2.9-.528-5.111.005-5.932 1.428-.605 1.047-.423 2.509.512 4.14a.322.322 0 1 1-.558.32zm14.92-6.069c1.835.024 3.156.596 3.751 1.626.82 1.419.18 3.595-1.718 5.837a.322.322 0 1 0 .49.416c2.054-2.426 2.771-4.866 1.785-6.575-.726-1.257-2.26-1.92-4.299-1.947a.322.322 0 1 0-.008.643zm-1.854 15.239a.322.322 0 0 0-.442.11c-.934 1.553-2.08 2.399-3.26 2.399-1.642 0-3.208-1.647-4.2-4.418a.322.322 0 1 0-.606.217C8.279 22.154 10.036 24 12.01 24c1.44 0 2.773-.982 3.813-2.71a.322.322 0 0 0-.11-.442zm7.356-2.594a1.54 1.54 0 0 1-2.436 1.25c-2.455 1.445-7.146.71-11.56-1.84-1.88-1.085-3.527-2.392-4.795-3.785a.322.322 0 1 1 .476-.433c1.222 1.343 2.817 2.609 4.64 3.661 4.167 2.406 8.553 3.12 10.797 1.906a1.54 1.54 0 1 1 2.878-.759zm-19.062 0a1.54 1.54 0 1 1-2.285-1.345c-.233-2.877 2.79-6.734 7.36-9.372 1.898-1.096 3.874-1.874 5.731-2.271a.322.322 0 0 1 .135.628c-1.79.384-3.703 1.137-5.545 2.2-4.304 2.485-7.148 6.067-7.048 8.627.038-.003.075-.006.113-.006.85 0 1.54.69 1.54 1.54zM10.472 1.54a1.54 1.54 0 0 1 3.078 0c0 .023-.002.045-.003.067 2.549 1.317 4.32 5.81 4.32 11.003 0 2.135-.298 4.184-.854 5.96a.322.322 0 1 1-.614-.192c.536-1.712.825-3.697.825-5.768 0-4.89-1.626-9.095-3.847-10.363a1.538 1.538 0 0 1-2.905-.707zm1.304 9.981a1.114 1.114 0 1 0 .47 2.178 1.114 1.114 0 0 0-.47-2.178z"})," "),kke=e=>i("svg",{...e,fill:"currentColor",viewBox:"0 0 930 930",width:"14px",height:"14px"},i("path",{d:"M836 465.5C836 670.121 670.121 836 465.5 836C260.879 836 95 670.121 95 465.5C95 260.879 260.879 95 465.5 95C670.121 95 836 260.879 836 465.5ZM242.322 465.5C242.322 588.758 342.242 688.678 465.5 688.678C588.758 688.678 688.678 588.758 688.678 465.5C688.678 342.242 588.758 242.322 465.5 242.322C342.242 242.322 242.322 342.242 242.322 465.5Z"}),i("path",{d:"M584.219 465.898C584.219 531.245 531.245 584.219 465.898 584.219C440.35 584.219 416.693 576.122 397.353 562.354L260.937 644.321C451.4 528.542 329.698 492.311 204.538 566.663L348.433 480.202C347.868 475.513 347.577 470.74 347.577 465.898C347.577 400.552 400.552 347.577 465.898 347.577C491.108 347.577 514.477 355.462 533.673 368.899L627.819 312.331C610.898 294.399 591.056 279.324 569.045 267.796C534.72 249.819 496.306 241.088 457.582 242.462C418.858 243.837 381.16 255.27 348.196 275.637C315.232 296.003 288.138 324.6 269.581 358.616C262.856 370.943 257.336 383.828 253.065 397.091C240.595 435.815 209.386 470.244 168.712 470.997C128.037 471.751 93.7099 439.084 101.005 399.061C108.06 360.359 121.262 322.87 140.254 288.06C171.06 231.591 216.039 184.116 270.763 150.306C325.486 116.495 388.07 97.5155 452.356 95.2335C516.641 92.9515 580.413 107.446 637.397 137.29C694.38 167.134 742.612 211.301 777.345 265.444C812.079 319.586 832.118 381.839 835.491 446.076C838.863 510.313 825.452 574.322 796.579 631.804C778.78 667.239 755.483 699.439 727.687 727.279C698.944 756.068 652.543 746.455 629.998 712.591C607.453 678.727 617.982 633.466 642.711 601.164C651.181 590.1 658.628 578.224 664.932 565.676C682.324 531.051 690.402 492.494 688.371 453.799C687.303 433.462 683.462 413.454 677.02 394.312L583.246 450.657C583.889 455.647 584.219 460.734 584.219 465.898ZM260.937 644.321C258.599 645.742 256.214 647.175 253.783 648.619L260.937 644.321Z"}),i("path",{d:"M470.711 406.73C493.342 393.132 522.712 400.455 536.311 423.086C549.909 445.718 542.587 475.088 519.955 488.687L253.783 648.619L204.538 566.663L470.711 406.73Z"}))});function TP(e){let{RELEASE_CHANNEL:t,BUILD_NUMBER:o,VERSION_HASH:r}=window.GLOBAL_ENV,n=fke[t]||t.charAt(0).toUpperCase()+t.slice(1),{chromiumVersion:a,electronVersion:s,getVersionInfo:l}=Pn,c=Ty.store.format??"{devbannerIcon} {buildChannel} {buildNumber} ({buildHash}) | {equicordIcon} {equicordName} {equicordVersion} ({equicordHash})",u=e??c,p=rj(),m=u.replace(/{buildChannel}/g,n).replace(/{buildNumber}/g,o).replace(/{buildHash}/g,r.slice(0,9)).replace(/{equicordVersion}/g,"1.15.3.0").replace(/{equicordHash}/g,If).replace(/{equicordPlatform}/g,l(!1)).replace(/{electronVersion}/g,s).replace(/{chromiumVersion}/g,a).replace(/{clientName}/g,p.name).replace(/{clientVersion}/g,`v${p?.version??"0.0.0"}`).replace(/{equibopHash}/g,p.shortHash??"Not Supported").replace(/{equibopPlatform}/g,`v${p?.dev?"Dev Build":"Standalone"}`).replace(/\\n|{newline}/g,"__NEWLINE__");if(!m.includes("__NEWLINE__")&&!/{.*Icon}/.test(u))return m;let g=m.split(/({.*?}|__NEWLINE__)/).filter(Boolean).map((x,v)=>{switch(x){case"{discordIcon}":return i("span",{key:`icon-discord-${v}`,className:"vc-discord-dev-banner-icons"},i(wke,null));case"{equicordIcon}":return i("span",{key:`icon-equicord-${v}`,className:"vc-discord-dev-banner-icons"},i(kke,null));case"{electronIcon}":return i("span",{key:`icon-electron-${v}`,className:"vc-discord-dev-banner-icons"},i(Ake,null));case"{chromiumIcon}":return i("span",{key:`icon-chromium-${v}`,className:"vc-discord-dev-banner-icons"},i(yke,null));case"{devbannerIcon}":return i("span",{key:`icon-dev-${v}`,className:"vc-discord-dev-banner-icons"},i(Ske,null));case"{clientIcon}":return i("span",{key:`icon-dev-${v}`,className:"vc-discord-dev-banner-icons"},i(bke,null));case"__NEWLINE__":return i("br",{key:`br-${v}`});default:return i(V.Fragment,{key:`text-${v}`},x)}});return i("div",{style:{display:"inline"}},g)}var Tke=h(()=>{"use strict";d();mu();ij();Ef();C();c8()});var c8=h(()=>{"use strict";d();hke();vke();Cke();Tke()});var IP,Ike=h(()=>{"use strict";d();mke();O();R();c8();IP=S({name:"DiscordDevBanner",description:"Enables the Discord developer banner, in which displays the build-ID",tags:["Appearance","Console","Developers"],authors:[F.KrystalSkull,b.thororen],settings:Ty,patches:[{find:'"isHideDevBanner"',replacement:[{match:'"staging"===window.GLOBAL_ENV.RELEASE_CHANNEL',replace:"true"},{match:/children:\[.{0,80}#{intl::BUILD_OVERRIDE}.{0,15}\{\}\)\]/,replace:"children:$self.makeDevBanner()"},{match:/children:\[.{0,80}#{intl::uyrfYF::raw}.{0,50}\{\}\)\]/,replace:"children:$self.makeDevBanner()"}]}],makeDevBanner:TP})});async function Emt(e){let t=new Map;function o(s){let l=t.get(s)??0;if(t.set(s,l+1),l===0)return s;let c=s.lastIndexOf(".");return c===-1?`${s}_${l}`:`${s.slice(0,c)}_${l}${s.slice(c)}`}let n=(await Promise.allSettled(e.map(async s=>{let l=o(s.filename);if(!s.proxy_url)throw new Error("Missing Proxy URL");let c=await fetch(s.proxy_url);if(!c.ok)throw new Error(`HTTP ${c.status}`);let u=await c.blob(),p=URL.createObjectURL(u),m=document.createElement("a");m.href=p,m.download=l,m.click(),URL.revokeObjectURL(p)}))).filter(s=>s.status==="rejected"?(Imt.warn("Failed to download attachment:",s.reason),!0):!1).length,a=e.length-n;n===0?ne(`Downloaded ${QS(a,"attachment")}.`,D.Type.SUCCESS):ne(`Downloaded ${a} of ${e.length} attachments. ${n} failed.`,D.Type.FAILURE)}var Imt,EP,Eke=h(()=>{"use strict";d();ot();O();He();Be();R();C();Imt=new ie("DownloadAllAttachments");EP=S({name:"DownloadAllAttachments",description:"Adds a popover button to download all attachments in a message at once.",tags:["Utility","Chat"],authors:[F.dhopcs],dependencies:["MessagePopoverAPI"],messagePopoverButton:{icon:o1,render(e){return e.attachments.length?{label:"Download All Attachments",icon:o1,message:e,channel:W.getChannel(e.channel_id),onClick:()=>Emt(e.attachments)}:null}}})});var Dke=h(()=>{});var Dmt,Pmt,DP,zY,PP,Pke=h(()=>{"use strict";d();Dke();O();we();Be();R();le();C();Dmt=Ae("INFREQUENT_USER_ACTION"),Pmt=Ie("image","imageLoading"),DP=Ie("wrapper","target","autoPointerEvents","dragOver"),zY=K("vc-drag-favorite-emotes-"),PP=S({name:"DragFavoriteEmotes",authors:[F.PWall],description:"Adds the ability to change the order of your favourite emotes",tags:["Customisation","Chat","Emotes"],patches:[{find:"#{intl::EMOJI_FAVORITE_TOOLTIP}",replacement:[{match:/(ref:\i,children:)(\(0,\i.jsxs?\)\(\i)/,replace:"$1arguments[0]?.collected?.isDragging?$self.dragItem():$2"},{match:/\[(\i\.\i)\](?=.{0,5}\[\i\?\?)/,replace:'[arguments[0].collected.isDragging?"":$1]'},{match:/(\[\i,\i\]=\i\.useState\(""\))/,replace:"$1,[collected,drag]=$self.drag(arguments[0])"},{match:/(onFocus:.{0,50}\(\i,{ref:)(\i),/,replace:'$1arguments[0]?.descriptor?.category==="FAVORITES"?drag:$2,collected:collected,'},{match:/(key:\i,ref:\i)(?=\},\i)/,replace:'$1,style:{position:"relative"}'},{match:/(delay:200,children:)(\i)/,replace:"$1[$2,$self.wrapper(arguments[0]?.descriptor)]"},{match:/(delay:200,children:.{0,100}\}\):)(\i)\)/,replace:"$1[$2,$self.wrapper(arguments[0]?.descriptor)])"}]}],drag(e){return pf(()=>({type:"emoji",collect:t=>({isDragging:!!t.isDragging()}),canDrag:()=>e?.descriptor?.category==="FAVORITES",item:{id:e?.descriptor?.emoji?.uniqueName??e?.descriptor?.emoji?.id}}),[e?.descriptor])},drop({emoji:e,category:t}){return ud(()=>({accept:"emoji",canDrop(){return t==="FAVORITES"},collect:o=>({canDrop:!!o.canDrop(),isOver:!!o.isOver()}),drop(o){let r=o.id,n=e?.uniqueName??e?.id;function a(s){if(this.source===this.target)return!1;let l=s.emojis.findIndex(p=>p===this.source),c=s.emojis.findIndex(p=>p===this.target),u=c{if(e?.category!=="FAVORITES")return;let n=requestAnimationFrame(()=>{if(r.current){if(t.canDrop){r.current.classList.add(DP.autoPointerEvents);return}r.current.classList.remove(DP.autoPointerEvents)}});return()=>cancelAnimationFrame(n)},[t,r]),e?.category==="FAVORITES")return i("div",{className:X(zY("wrapper"),DP.wrapper),"aria-hidden":"true"},i("div",{className:X(t.isOver?zY("indicator"):"",DP.target),ref:n=>{r.current=n,o(n)}}))}})});var Mke=h(()=>{});function Nke(e){HY(),Po.activeEntity=e,Po.activeUserId=e.kind==="user"?e.id:null,Po.activeGuildId=e.kind==="guild"?e.id:null,Po.active=!0,$Y()}function Xl(){Po.activeEntity=null,Po.activeUserId=null,Po.activeGuildId=null,Po.dragSourceIsInput=!1,Po.active=!1}function Bke(){Xl(),Po.dragSourceIsInput=!0}function MP(){return Po.dragSourceIsInput}function $Y(){Po.lastDragEventAt=Date.now()}function Rke(){return Po.lastDropAt}function Lke(){Po.lastDropAt=Date.now()}function GY(e){let t=Date.now();return Po.lastHandledDrop.key===e&&t-Po.lastHandledDrop.at<150?!0:(Po.lastHandledDrop={key:e,at:t},!1)}function NP(){return Po.active||Po.activeEntity!==null||Po.activeUserId!==null||Po.activeGuildId!==null}function Oke(){return Po.activeGuildId!==null||Po.activeEntity?.kind==="guild"}function Fke(){return Po.activeUserId!==null||Po.activeEntity?.kind==="user"}function _ke(e){Po.watchdogTimer===null&&(Po.watchdogTimer=window.setInterval(()=>{Po.active&&(Date.now()-Po.lastDragEventAt<1200||(Xl(),e()))},500))}function Mmt(){Po.watchdogTimer!==null&&(clearInterval(Po.watchdogTimer),Po.watchdogTimer=null)}function Uke(e){HY(),Po.guildCleanupTimer=window.setTimeout(()=>{Date.now()-Po.lastDragEventAt<200||(Xl(),e())},300)}function HY(){Po.guildCleanupTimer!==null&&(clearTimeout(Po.guildCleanupTimer),Po.guildCleanupTimer=null)}function zke(){HY(),Mmt(),Xl()}var Po,$ke=h(()=>{"use strict";d();Po={activeEntity:null,activeUserId:null,activeGuildId:null,dragSourceIsInput:!1,active:!1,lastDropAt:0,lastHandledDrop:{at:0,key:""},lastDragEventAt:0,watchdogTimer:null,guildCleanupTimer:null}});function Nmt(){jY.forEach(e=>e())}function Py(e){Dy={...Dy,...e},Nmt()}function Gke(){return Dy.visible}function qY(e,t){Iy={x:e,y:t},Ey===null&&(Py({x:e,y:t}),Ey=requestAnimationFrame(()=>{Iy&&Py({x:Iy.x,y:Iy.y}),Iy=null,Ey=null}))}function Vh(){Dy.visible&&(Nu!==null&&(clearTimeout(Nu),Nu=null),Py({exiting:!0}),Nu=window.setTimeout(()=>{Nu=null,Py({visible:!1,exiting:!1})},200))}function Hke(e,t){Nu!==null&&(clearTimeout(Nu),Nu=null),t&&qY(t.x,t.y),Py({...e,visible:!0,exiting:!1})}function jke(){if(typeof document>"u")return;let{body:e}=document;if(e){if(u8){Xd&&!Xd.isConnected&&e.appendChild(Xd);return}Xd||(Xd=document.createElement("div")),Xd.isConnected||e.appendChild(Xd),u8=Bi(Xd),u8.render(i("div",{className:ja("ghost-container")},i(H,{noop:!0},i(Bmt,null))))}}function qke(){u8?.unmount(),u8=null,Xd?.remove(),Xd=null,Ey!==null&&(cancelAnimationFrame(Ey),Ey=null),Iy=null,Nu!==null&&(clearTimeout(Nu),Nu=null),Py({visible:!1,exiting:!1})}function Rmt({className:e,size:t=14}){return i("svg",{className:e,xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:"none",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M7 2a1 1 0 0 0-1 1v18a1 1 0 1 0 2 0V3a1 1 0 0 0-1-1ZM11 6a1 1 0 1 1 2 0v12a1 1 0 1 1-2 0V6ZM1 8a1 1 0 0 1 2 0v8a1 1 0 1 1-2 0V8ZM16 5a1 1 0 1 1 2 0v14a1 1 0 1 1-2 0V5ZM22 8a1 1 0 0 0-1 1v6a1 1 0 1 0 2 0V9a1 1 0 0 0-1-1Z"}))}function Lmt({className:e,size:t=14}){return i("svg",{className:e,xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:"none",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M4 5a3 3 0 0 0-3 3v7a3 3 0 0 0 3 3h4.59l-1.3 2.3a1 1 0 1 0 1.74.98L10.84 18h2.32l1.81 3.28a1 1 0 1 0 1.74-.98L15.41 18H20a3 3 0 0 0 3-3V8a3 3 0 0 0-3-3H4Zm0 2h16a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1Zm6 2.57c0-.8.89-1.27 1.54-.82l3.22 2.23a1 1 0 0 1 0 1.64l-3.22 2.23A1 1 0 0 1 10 14.03V9.57Z"}))}function Omt({className:e,size:t=14}){return i("svg",{className:e,xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:"none",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M22.7 2.7a1 1 0 0 0-1.4-1.4l-20 20a1 1 0 1 0 1.4 1.4l20-20ZM6.85 13.15a.5.5 0 0 1-.85-.36V3a1 1 0 0 1 2 0v8.8a.5.5 0 0 1-.15.35l-1 1ZM11 17.2v.8a1 1 0 1 0 2 0v-1.8a.5.5 0 0 0-.85-.35l-1 1a.5.5 0 0 0-.15.36ZM11 7.8V6a1 1 0 1 1 2 0v.8a.5.5 0 0 1-.15.35l-1 1a.5.5 0 0 1-.85-.36ZM17.15 10.85a.5.5 0 0 1 .85.36V19a1 1 0 1 1-2 0v-6.8a.5.5 0 0 1 .15-.35l1-1ZM2 7a1 1 0 0 0-1 1v8a1 1 0 1 0 2 0V8a1 1 0 0 0-1-1ZM21 9a1 1 0 1 1 2 0v6a1 1 0 1 1-2 0V9Z"}))}var ja,u8,Xd,Ey,Iy,Nu,Dy,jY,Bmt,Wke=h(()=>{"use strict";d();Pe();we();Be();C();ja=K("vc-dragify-"),u8=null,Xd=null,Ey=null,Iy=null,Nu=null,Dy={visible:!1,x:0,y:0,kind:"channel",title:"",exiting:!1},jY=new Set;Bmt=()=>{let[e,t]=T(Dy);G(()=>{let s=()=>t({...Dy});return jY.add(s),()=>{jY.delete(s)}},[]);let o=ye([Et],()=>e.kind==="user"&&e.entityId?Et.getVoiceStateForUser(e.entityId):null),r=o?.channelId,n=o&&(o.selfMute||o.mute||o.selfDeaf||o.deaf),a=o?.selfStream;return e.visible?i("div",{className:X(ja("ghost"),e.exiting?ja("ghost-exit"):""),style:{transform:`translate3d(${e.x}px, ${e.y}px, 0)`}},i("div",{className:ja("card")},i("div",{className:ja("icon")},e.iconUrl?i("img",{className:ja("icon-image"),src:e.iconUrl,alt:""}):i("span",{className:ja("icon-text")},e.symbol??"#")),i("div",{className:ja("body")},i("div",{className:ja("title-row")},i("div",{className:ja("title")},e.title),e.kind==="user"&&r?n?i(Omt,{className:X(ja("voice-icon"),ja("voice-icon-muted"))}):i(Rmt,{className:ja("voice-icon")}):null,e.kind==="user"&&r&&a?i(Lmt,{className:X(ja("voice-icon"),ja("voice-icon-stream"))}):null),e.subtitle&&i("div",{className:ja("subtitle")},e.subtitle)),i("div",{className:ja("badge")},e.badge??e.kind))):null}});function Yke(){BP.clear()}function Fmt(e){return{code:e.code,expiresAt:e.expires_at?Date.parse(e.expires_at):null,maxUses:e.max_uses===0?null:e.max_uses??null,uses:e.uses??null}}function _mt(e){let t=Date.now(),o=e.expiresAt!==null&&e.expiresAt<=t,r=e.maxUses!==null&&e.uses!==null&&e.uses>=e.maxUses;return o||r}function WY(e){return!e||!e.guild_id||e.isDM()||e.isGroupDM()||e.isMultiUserDM()||e.isCategory()||e.isThread()?!1:ht.can(ct.CREATE_INSTANT_INVITE,e)}function Kke(e,t){!t||!t.guild_id||e.has(t.id)||e.set(t.id,t)}function Umt(e,t){if(t.guild_id===e&&WY(t))return t;let o=$e.getGuild(e),r=[o?.systemChannelId,o?.rulesChannelId,o?.publicUpdatesChannelId].filter(Boolean);for(let a of r){let s=W.getChannel(a);if(WY(s))return s}let n=new Map;for(let a of Da.getSelectableChannels?.(e)??[])Kke(n,a?.channel);for(let a of Object.values(Da.getChannels(e)?.SELECTABLE??{}))Kke(n,a&&"channel"in a?a.channel:a);return[...n.values()].filter(a=>a.guild_id===e).sort((a,s)=>{let l=typeof a.position=="number"?a.position:0,c=typeof s.position=="number"?s.position:0;return l===c?a.id.localeCompare(s.id):l-c}).find(WY)??null}async function zmt(e,t){let o=BP.get(e);if(o&&o.maxUses===null&&!_mt(o))return{ok:!0,code:o.code};try{let{body:r}=await mt.get({url:`/channels/${t}/invites`});if(!Array.isArray(r))return{ok:!1,reason:"failed"};let n=Date.now(),a=r.find(s=>{let l=s.expires_at?Date.parse(s.expires_at):null,c=s.max_uses===0?null:s.max_uses??null,u=s.uses??null,p=l===null||l>n,m=c===null||u===null||u0?Date.now()+n*1e3:null,maxUses:a===0?null:a,uses:0}),ne("Invite created.",D.Type.SUCCESS),Qke(l)}catch(n){return Zke.error("Failed to create invite",n),ne("Unable to create invite.",D.Type.FAILURE),null}}function d8(e){return e?e.type===3||e.isGroupDM()||e.isMultiUserDM():!1}var Zke,BP,Xke=h(()=>{"use strict";d();He();co();C();Zke=new ie("Dragify"),BP=new Map});function nCe(e){if(!e||e.length<2||e[0]!=="{"&&e[0]!=="[")return null;try{let t=JSON.parse(e);return typeof t=="object"&&t?t:null}catch{return null}}function Sl(e){return e.match(/\d{17,20}/)?.[0]??null}function qmt(e){let t=new Set,o=/\d{17,20}/g;for(let r of e){let n=r.match(o);n&&n.forEach(a=>t.add(a))}return Array.from(t)}function KY(e){let t=new Set,o=n=>n&&t.add(n);o(e.getData("text/plain")),o(e.getData("text/uri-list")),o(e.getData("text/html")),o(e.getData("text/x-moz-url")),o(e.getData("application/json"));for(let n of e.types??[])o(e.getData(n));let r=[];for(let n of t)r.push(n),n.includes(` `)&&r.push(...n.split(/\s+/).filter(Boolean));return Array.from(new Set(r))}async function QY(e){let t=KY(e),o=[],r=Array.from(e.items??[]).filter(n=>n.kind==="string").map(n=>new Promise(a=>n.getAsString(s=>{s&&o.push(s),a()})));return await Promise.all(r),Array.from(new Set([...t,...o]))}function rCe(e){return JSON.stringify(e)}function ZY(e){let t=nCe(e);if(!t?.kind||!t.id)return null;switch(t.kind){case"user":return{kind:"user",id:t.id};case"channel":return{kind:"channel",id:t.id,guildId:t.guildId};case"guild":return{kind:"guild",id:t.id};default:return null}}function Wmt(e){let t=e.id??e.userId??e.channelId??e.guildId;if(!t)return null;let o=(e.type??e.kind??e.itemType??"").toLowerCase();return o.includes("user")?{kind:"user",id:t}:o.includes("channel")?{kind:"channel",id:t,guildId:e.guildId}:o.includes("guild")||o.includes("server")?{kind:"guild",id:t}:null}function Kmt(e){let t=$mt.exec(e);if(t)return{kind:"user",id:t[1]};let o=Vke.exec(e);if(o)return{kind:"user",id:o[1]};let r=tCe.exec(e);if(r)return{kind:"user",id:r[1]};let n=eCe.exec(e);return n?{kind:"user",id:n[1]}:null}function Qmt(e){let t=Gmt.exec(e);if(t)return{kind:"channel",id:t[1]};let o=oCe.exec(e);if(!o)return null;let r=o[1]==="@me"?"@me":o[2];return{kind:"channel",id:o[3],guildId:r??void 0}}function Zmt(e){let t=jmt.exec(e);return t?{kind:"guild",id:t[1]}:null}function RP(e,t){if(e.length===0)return null;let o=e.map(n=>n.trim()).filter(Boolean);for(let n of o){let a=nCe(n);if(!a)continue;let s=Wmt(a);if(s)return s}for(let n of o){let a=Kmt(n);if(a)return a}for(let n of o){let a=Qmt(n);if(a)return a}for(let n of o){let a=Zmt(n);if(a)return a}let r=qmt(o);for(let n of r){if(t.ChannelStore.getChannel(n))return{kind:"channel",id:n};if(t.GuildStore.getGuild(n))return{kind:"guild",id:n};if(t.UserStore.getUser(n))return{kind:"user",id:n}}return null}function iCe(e){let t=Hmt.exec(e);return t?{guildId:t[1]==="@me"?"@me":t[1],channelId:t[2]}:null}function aCe(e){let t=oCe.exec(e);if(!t)return null;let o=t[1]??t[2];return{guildId:o==="@me"?"@me":o,channelId:t[3]}}function LP(e){let t=tCe.exec(e);if(t?.[1])return t[1];let o=eCe.exec(e);return o?.[1]?o[1]:null}function sCe(e){return Vke.exec(e)?.[1]??null}var $mt,Vke,eCe,tCe,Gmt,oCe,Hmt,jmt,YY=h(()=>{"use strict";d();$mt=/<@!?(\d{17,20})>/,Vke=/discord(?:(?:app)?\.com|:\/\/-?)\/users\/(\d{17,20})/,eCe=/cdn\.discordapp\.com\/(?:avatars|users)\/(\d{17,20})\//,tCe=/cdn\.discordapp\.com\/guilds\/\d{17,20}\/users\/(\d{17,20})\/avatars\//,Gmt=/<#(\d{17,20})>/,oCe=/discord(?:(?:app)?\.com|:\/\/-?)\/channels\/(?:(@me)|(\d{17,20}))\/(\d{17,20})/,Hmt=/\/channels\/(@me|\d{17,20})\/(\d{17,20})/,jmt=/cdn\.discordapp\.com\/icons\/(\d{17,20})\//});function Xmt(e){let t=new Set,o=[],r=n=>{!(n instanceof HTMLElement)||t.has(n)||(t.add(n),o.push(n))};r(e.target);for(let n of e.composedPath?.()??[])r(n);if(typeof document<"u"&&e.clientX!=null&&e.clientY!=null)for(let n of document.elementsFromPoint?.(e.clientX,e.clientY)??[])r(n);return o}function Vmt(e){let t=new Set,o=[];for(let r of e){let n=r;for(;n;)t.has(n)||(t.add(n),o.push(n)),n=n.parentElement}return o}function eft(e){let t=e.getAttribute("data-list-id")??"",o=e.getAttribute("data-list-item-id")??"",r=e.getAttribute("data-channel-id")??e.getAttribute("data-item-id")??"",n=e.getAttribute("data-thread-id")??"",a=e.getAttribute("href")??"",s=/(channel|thread|private|forum)/i.test(t)||/(channel|thread|private|forum)/i.test(o),l=iCe(a);if(l?.channelId)return{id:l.channelId,guildId:l.guildId==="@me"?void 0:l.guildId};let c=aCe(a);if(c?.channelId)return{id:c.channelId,guildId:c.guildId==="@me"?void 0:c.guildId};let u=s?Sl(n)??Sl(r)??Sl(o)??Sl(t):null;return u?{id:u,guildId:Sl(e.getAttribute("data-guild-id")??"")??void 0}:null}function tft(e){let t=e.getAttribute("data-list-id"),o=e.getAttribute("data-list-item-id")??"";if(!(t&&/guild/i.test(t)||/guild/i.test(o)))return null;let n=o.split("___"),a=n[n.length-1]??o;return/^\d{17,20}$/.test(a)?a:Sl(o)??Sl(t??"")??Sl(e.getAttribute("data-guild-id")??"")}function oft(e,t){let o=e.getAttribute("data-user-id")??e.getAttribute("data-userid")??"",r=e.getAttribute("data-author-id")??"",n=e.getAttribute("data-list-item-id")??e.getAttribute("data-item-id")??"",a=e.getAttribute("href")??"",s=e.getAttribute("src")??"",l=e.getAttribute("aria-label")??"",c=Sl(o)??Sl(r);if(c)return c;let u=Sl(n);if(u){if(t.UserStore.getUser(u))return u;let A=t.ChannelStore.getChannel(u);if(A&&A.isDM()&&!A.isGroupDM()&&!A.isMultiUserDM()){let k=t.getDmRecipientId(A);if(k)return k}}let p=sCe(a);if(p)return p;let m=LP(s);if(m)return m;let g=e.getAttribute("style")??"",x=e.style?.backgroundImage??"",v=LP(`${g} ${x}`);if(v)return v;let y=Sl(l);return y&&t.UserStore.getUser(y)?y:null}function nft(e){let t=e.getAttribute("src")??"",o=e.getAttribute("style")??"",r=e.style?.backgroundImage??"";return LP(`${t} ${o} ${r}`)}function lCe(e,t){return rft(Xmt(e),t)}function rft(e,t){let o={hasAttachment:!1,hasMessageInput:!1,hasChatBody:!1,hasDragifyUser:!1,hasUserMarker:!1,hasTextNode:e.some(r=>r.getAttribute("data-text")!=null),userId:null,avatarUserId:null,authorId:null,channel:null,guildId:null};for(let r of Vmt(e)){o.hasMessageInput||=r.matches(Ymt),o.hasChatBody||=r.matches(Jmt),o.hasDragifyUser||=r.getAttribute("data-dragify-user")!=null,o.hasUserMarker||=r.getAttribute("data-user-id")!=null||r.getAttribute("data-userid")!=null,o.authorId??=Sl(r.getAttribute("data-author-id")??"");let n=r.getAttribute("href")??"",a=r.getAttribute("src")??"",s=r.style?.backgroundImage??"",l=r.getAttribute("data-attachment-id")??r.getAttribute("data-attachment-type")??r.getAttribute("data-attachment-item-id")??"",c=`${n} ${a} ${s}`;o.hasAttachment||=!!l||/(?:cdn|media)\.discordapp\.(?:com|net)\/attachments\//i.test(c)||/discord\.com\/attachments\//i.test(c)||/cdn\.discordapp\.com\/ephemeral-attachments\//i.test(c),o.userId??=oft(r,t),o.avatarUserId??=nft(r),o.channel??=eft(r),o.guildId??=tft(r)}return o}var Ymt,Jmt,cCe=h(()=>{"use strict";d();YY();Ymt='[data-slate-editor],[role="textbox"],[contenteditable="true"],[aria-label^="Message "]',Jmt='[role="log"],[data-list-id^="chat-messages"]'});function ift(){if(typeof document>"u")return null;if(JY)return JY;let e=document.createElement("canvas");return e.width=1,e.height=1,JY=e,e}function aft(e){let t=ift();!t||!e.dataTransfer?.setDragImage||e.dataTransfer.setDragImage(t,0,0)}function sft(e,t){if(!e)return;e.clearData&&(e.clearData("text/plain"),e.clearData("text/uri-list"),e.clearData("text/html"));let o=rCe(t);e.setData("application/json",o),e.setData("application/dragify",o),e.setData("text/plain","")}function OP(e){return e?.types?.includes("application/dragify")}function dCe(e,t){return`${e.kind}:${e.id}:${t}`}function m8(e,t){return lCe(e,{ChannelStore:W,UserStore:L,getDmRecipientId:t.getDmRecipientId})}var uCe,p8,JY,f8,FP,pCe=h(()=>{"use strict";d();Mke();j();O();_e();He();R();co();C();$ke();Wke();Xke();cCe();YY();uCe=new ie("Dragify"),p8=null,JY=null;f8=M({userOutput:{type:4,description:"User drop output.",options:[{label:"Mention user",value:"mention",default:!0},{label:"User ID",value:"id"}]},channelOutput:{type:4,description:"Channel drop output.",options:[{label:"#channel mention",value:"mention",default:!0},{label:"Channel link",value:"link"}]},inviteExpireAfter:{type:4,description:"Invite expiration.",options:[{label:"30 minutes",value:1800},{label:"1 hour",value:3600},{label:"6 hours",value:21600},{label:"12 hours",value:43200},{label:"1 day",value:86400},{label:"7 days",value:604800},{label:"Never",value:0,default:!0}]},inviteMaxUses:{type:4,description:"Invite max uses.",options:[{label:"No limit",value:0,default:!0},{label:"1 use",value:1},{label:"5 uses",value:5},{label:"10 uses",value:10},{label:"25 uses",value:25},{label:"50 uses",value:50},{label:"100 uses",value:100}]},inviteTemporaryMembership:{type:3,default:!1,description:"Grant temporary membership."},reuseExistingInvites:{type:3,default:!1,description:"Reuse existing invite instead of creating a new one."},allowChatBodyDrop:{type:3,default:!1,restartNeeded:!0,description:"Allow dropping into the main chat body to insert text."}}),FP=S({name:"Dragify",description:"Drop users, channels, or servers into chat to insert mentions or invites.",tags:["Chat","Servers","Utility","Voice"],authors:[F.justjxke],settings:f8,patches:[{find:".VOICE_USER],shouldShow:",replacement:{match:/(?<=GuildChannelUserContextMenu.{0,150})"data-dnd-name":\i/,replace:'"data-dragify-user":!0,"data-user-id":arguments[0].user?.id,draggable:!0,onDragStart:e=>$self.onUserDragStart(e,arguments[0].user),$&'}},{find:'tutorialId:"voice-conversations"',replacement:[{match:/(?<=this.getTooltipText\(\),.{0,100})iconClassName:/,replace:"draggable:!0,onDragStart:e=>$self.onChannelDragStart(e,{id:this?.props?.channel?.id,guild_id:this?.props?.channel?.guild_id}),$&"},{match:/(?<=this\.getModeClass\(\),.{0,50})"data-dnd-name":.{0,40},children:\[/g,replace:"draggable:!0,onDragStart:e=>$self.onChannelDragStart(e,{id:this?.props?.channel?.id,guild_id:this?.props?.channel?.guild_id}),$&"}]},{find:"__invalid_threadMainContent",replacement:{match:/className:\i\.\i,onClick:\i,onAuxClick:(?=.{0,100}__invalid_threadMainContent)/,replace:"draggable:!0,onDragStart:e=>$self.onChannelDragStart(e),$&"}},{find:"shouldShowThreadsPopout",replacement:{match:/(?<=getClassName\(\).{0,50})"data-dnd-name":.{0,40},onMouseEnter:/,replace:"draggable:!0,onDragStart:e=>$self.onChannelDragStart(e,{id:this?.props?.channel?.id,guild_id:this?.props?.channel?.guild_id}),$&"}},{find:"POPOUT)},children:",replacement:{match:/(?<=getUser\(\i\.ownerId\).{0,100})className:\i\.\i,onClick:function\(\i\)\{\(0,\i\.\i\)\(\i,/,replace:"draggable:!0,onDragStart:e=>$self.onChannelDragStart(e,{id:arguments[0]?.thread?.id,guild_id:arguments[0]?.thread?.guild_id}),$&"}},{find:".MEMBER_USER})]",replacement:{match:/(?<=useRawTargetDimensions.{0,250})onContextMenu:\i,(?=onMouseEnter:)/,replace:'$&draggable:!0,onDragStart:e=>$self.onUserDragStart(e,{id:arguments[0].user?.id}),"data-dragify-user":!0,"data-user-id":arguments[0].user?.id,'}},{find:']="BADGES"',replacement:{match:/(?="data-username-has-gradient")/,replace:'draggable:!0,onDragStart:e=>$self.onUserDragStart(e,arguments[0].message?.author),"data-dragify-user":!0,"data-user-id":arguments[0].message?.author?.id,'}},{find:".VOICE_CHANNEL_TILE,children:",replacement:{match:/(?<=\.VOICE_USER,.{0,250})className:\i\.\i,onDoubleClick:\i,/,replace:'draggable:!0,onDragStart:e=>$self.onUserDragStart(e,{id:arguments[0].participantUserId}),"data-dragify-user":!0,"data-user-id":arguments[0].participantUserId,$&'}},{find:"PrivateChannel.renderAvatar: Invalid prop configuration - no user or channel",replacement:{match:/\.CHANNEL\(\i\.\i,\i\.\i\),(?=.{0,150}\.isMultiUserDM\(\))/,replace:"$&draggable:!0,onDragStart:e=>$self.onDmDragStart(e,arguments[0].channel),"}},{find:"[aria-owns=folder-items-",replacement:{match:/"data-dnd-name":(\i)\.name,(?="data-drop-hovering".{0,300}"aria-selected":\i\}\)\}\))/,replace:"$&draggable:!0,onDragStart:e=>$self.onGuildDragStart(e,$1.id),"}}],async onDrop(e,t){if(MP())return;let{dataTransfer:o}=e;if(!o||o.files?.length)return;let r=t??(Fe?.getChannelId?.()?W.getChannel(Fe.getChannelId()):null);if(!r)return;if(OP(o)){let s=ZY(o.getData("application/dragify"));if(!s){Xl();return}if(GY(dCe(s,r.id)))return;await this.handleDropEntity(s,r);return}let n=await QY(o),a=RP(n,{ChannelStore:W,GuildStore:$e,UserStore:L});if(!a){NP()&&Xl();return}GY(dCe(a,r.id))||await this.handleDropEntity(a,r)},async handleDropEntity(e,t){try{let o=await this.buildText(e,t);if(!o){Xl();return}if(!(e.kind==="user"?this.insertText(t.id,o,{removeUnknownUser:!0}):this.insertText(t.id,o)))throw new Error("Unable to insert drag content");Xl()}catch(o){Xl(),uCe.error("Failed handling drop",o),ne("Dragify failed to handle drop.",D.Type.FAILURE)}},async buildText(e,t){switch(e.kind){case"user":return f8.store.userOutput==="id"?e.id:`<@${e.id}>`;case"channel":return this.formatChannel(e.id,e.guildId);case"guild":return await Jke(e.id,t,f8.store);default:return null}},formatChannel(e,t){let o=W.getChannel(e);return o?d8(o)?`https://discord.com/channels/@me/${e}`:f8.store.channelOutput==="link"?`https://discord.com/channels/${t??o.guild_id??"@me"}/${e}`:`<#${e}>`:null},insertText(e,t,o){try{let r=o?.removeUnknownUser?t.replace(/@unknown[- ]user/gi,"").trim():t;return r?(tr(r),!0):!1}catch(r){return uCe.error("Failed to insert text into input",r),!1}},beginDrag(e,t,o){e.dataTransfer&&(aft(e),o?.effectAllowed&&(e.dataTransfer.effectAllowed=o.effectAllowed),Nke(t),this.showGhost(t,e),sft(e.dataTransfer,t),t.kind==="user"&&e.dataTransfer.setData("data-user-id",t.id))},onChannelDragStart(e,t){if(Fke()||ZY(e.dataTransfer?.getData("application/dragify")??"")?.kind==="user")return;let r=m8(e,this);if(r.hasDragifyUser)return;let n=t??r.channel;if(!n?.id)return;let a=W.getChannel(n.id);if(a){if(a.isDM()&&!d8(a)){let s=this.getDmRecipientId(a);s&&this.onUserDragStart(e,{id:s});return}this.beginDrag(e,{kind:"channel",id:a.id,guildId:n.guildId??a.guild_id??void 0})}},onUserDragStart(e,t){let o=m8(e,this);if(o.hasAttachment)return;let n=(t?.id??t?.userId??t?.user?.id??o.authorId??o.userId??null)?.trim();n&&this.beginDrag(e,{kind:"user",id:n})},onDmDragStart(e,t){let o=m8(e,this),r=t??(o.channel?.id?W.getChannel(o.channel.id)??null:null);if(!r)return;if(d8(r)){this.onChannelDragStart(e,{id:r.id,guildId:r.guild_id??void 0});return}let n=this.getDmRecipientId(r);n&&this.onUserDragStart(e,{id:n})},onGuildDragStart(e,t){this.beginDrag(e,{kind:"guild",id:t},{effectAllowed:"copyMove"})},start(){p8=this,this.mountGhost(),window.addEventListener("dragover",this.globalDragOver,!0),window.addEventListener("drop",this.globalDrop,!0),window.addEventListener("dragstart",this.globalDragStart,!0),window.addEventListener("drag",this.globalDragMove,!0),window.addEventListener("dragover",this.globalDragMove,!0),window.addEventListener("dragend",this.globalDragEnd,!0),_ke(Vh)},stop(){window.removeEventListener("dragover",this.globalDragOver,!0),window.removeEventListener("drop",this.globalDrop,!0),window.removeEventListener("dragstart",this.globalDragStart,!0),window.removeEventListener("drag",this.globalDragMove,!0),window.removeEventListener("dragover",this.globalDragMove,!0),window.removeEventListener("dragend",this.globalDragEnd,!0),zke(),Yke(),this.unmountGhost(),p8=null},globalDragOver:e=>{let t=p8;if(!t||!t.isMessageInputEvent(e)||MP())return;let{dataTransfer:o}=e;if(!(!o||o.files?.length)){if(!NP()&&!OP(o)){let r=KY(o);if(!RP(r,{ChannelStore:W,GuildStore:$e,UserStore:L}))return}e.preventDefault(),e.stopPropagation(),o.dropEffect="copy"}},globalDrop:async e=>{let t=p8;if(!t||!t.isMessageInputEvent(e)||MP())return;let{dataTransfer:o}=e;if(!o)return;if(o.files?.length){Xl(),Vh();return}let r=OP(o),n=NP();if(!r&&!n){let l=await QY(o);if(!RP(l,{ChannelStore:W,GuildStore:$e,UserStore:L}))return}let a=Fe.getChannelId(),s=W.getChannel(a);if(!s){Xl(),Vh();return}Lke(),e.preventDefault(),e.stopPropagation(),await t.onDrop(e,s),Vh()},globalDragStart:e=>{let t=p8;if(!t||!e.dataTransfer)return;let o=m8(e,t);if(o.hasAttachment)return;if(o.hasMessageInput){Bke();return}if(OP(e.dataTransfer))return;let r=o.authorId??o.userId;if(o.hasDragifyUser&&r){t.onUserDragStart(e,{id:r});return}if(o.hasTextNode&&o.authorId){t.onUserDragStart(e,{id:o.authorId});return}if(o.authorId&&o.avatarUserId){t.onUserDragStart(e,{id:o.authorId});return}if(o.channel&&!o.hasUserMarker){let n=W.getChannel(o.channel.id);if(n&&(n.isDM()||d8(n))){t.onDmDragStart(e,n);return}t.onChannelDragStart(e,o.channel);return}o.guildId&&t.onGuildDragStart(e,o.guildId)},globalDragEnd:e=>{setTimeout(()=>{Date.now()-Rke()<100||(Xl(),Vh())},0)},globalDragMove:e=>{Gke()&&(e.clientX==null||e.clientY==null||(e instanceof DragEvent&&($Y(),Oke()&&Uke(Vh)),qY(e.clientX+16,e.clientY+20)))},isMessageInputEvent(e){let t=m8(e,this);return t.hasMessageInput||f8.store.allowChatBodyDrop&&t.hasChatBody},mountGhost(){jke()},unmountGhost(){qke()},showGhost(e,t){let o=this.buildGhost(e);if(!o)return;let r=t?.clientX!=null&&t.clientY!=null?{x:t.clientX+16,y:t.clientY+20}:void 0;Hke({...o,entityId:e.id},r)},buildGhost(e){if(e.kind==="user"){let s=L.getUser(e.id);if(!s)return null;let l=s.globalName??s.username,c=s.username?`@${s.username}`:"User",u=s.getAvatarURL(void 0,80,!0)??void 0;return{kind:"user",title:l,subtitle:c,iconUrl:u,symbol:"@",badge:"user",entityId:e.id,exiting:!1}}if(e.kind==="channel"){let s=W.getChannel(e.id);if(!s)return null;let l=s.isThread(),c=s.type===3,u=this.getGroupDmDisplayName(s)||s.name,p=`${l||c?"":"#"}${u}`,m=s.guild_id?$e.getGuild(s.guild_id):null,g=m?.name??(e.guildId?"Server":"Direct Messages"),x;if(m?.icon?x=at.getGuildIconURL({id:m.id,icon:m.icon,size:64})??void 0:s.type===3&&(x=at.getChannelIconURL?.({id:s.id,icon:s.icon??void 0,size:64})??void 0),!x&&(s.isDM()||s.type===3)){let y=this.getDmRecipientId(s),A=y?L.getUser(y):null;x=A?A.getAvatarURL(void 0,80,!0):void 0}let v="channel";if(l)v="thread";else switch(s.type){case 2:case 13:v="voice";break;case 15:v="forum";break;case 16:v="media";break;case 5:v="announcement";break;case 1:case 3:v="dm";break;default:v="channel"}return{kind:"channel",title:p,subtitle:g,iconUrl:x,badge:v,entityId:e.id,exiting:!1}}let t=$e.getGuild(e.id),o=t?.name??"Server",r="Server",n=t?.icon?at.getGuildIconURL({id:t.id,icon:t.icon,size:64})??void 0:void 0,a=t?ya(t):"S";return{kind:"guild",title:o,subtitle:r,iconUrl:n,symbol:a,badge:"server",entityId:e.id,exiting:!1}},getDmRecipientId(e){return e?e.getRecipientId()??e.recipients?.[0]??e.rawRecipients?.[0]??null:null},getGroupDmDisplayName(e){if(!e||e.type!==3)return null;let t=L.getCurrentUser()?.id??null,o=(e.recipients??e.rawRecipients??[]).filter(Boolean);if(o.length===0)return null;let r=o.filter(n=>n!==t).map(n=>{let a=L.getUser(n);return qe?.getNickname?.(n)??a?.globalName??a?.username??null}).filter(Boolean);return r.length>1?r.join(", "):null}})});var mCe,fCe=h(()=>{"use strict";d();Jt();Pe();He();Be();C();tj();mCe=H.wrap(function({message:t}){let o=[],r=t.content?.toLowerCase()??"",n=(r.match(/`\w+`/g)??[]).map(g=>g.slice(1,-1)),s=Object.keys(et).filter(g=>n.includes(g.toLowerCase())).sort((g,x)=>x.length-g.length)[0],l=s?et[s]:null,c=hf(t.channel_id)&&H0(t.author.id),u=r.startsWith("enable"),p=r.startsWith("disable");if(l&&c&&(u||p)){if(l.required||l.name.endsWith("API"))return;let g=Ve(s),x=`${s} is already ${g?"enabled":"disabled"}`,v=!0;(p&&g||u&&!g)&&(x=`${g?"Disable":"Enable"} ${s}`,v=!1),o.push(i(ue,{key:"vc-plugin-toggle",color:v?ue.Colors.PRIMARY:g?ue.Colors.RED:ue.Colors.GREEN,disabled:v,size:ue.Sizes.SMALL,onClick:async()=>{try{await Bfe(s)&&ne(`${x}`,D.Type.SUCCESS)}catch(y){new ie("EquicordHelper").error("Error while toggling:",y),ne(`Failed to ${x.toLowerCase()}`,D.Type.FAILURE)}}},x))}return o.length===0?null:i("div",{className:"vc-plugins-action-buttons",style:{marginTop:"0px"}},o)},{noop:!0})});var gCe=h(()=>{});function hCe({url:e,description:t}){let o=new URL(e).pathname.split("/")[2],n=Object.keys(et).find(m=>m.toLowerCase()===o?.toLowerCase())||o;if(lo([`plugins.${n??""}.enabled`]),!n)return null;let a=et[n],s=Tw[n];if(s||!a){let m=s?`${n} is only available on the ${kH[Tw[n]]}`:"This plugin is not on this version of Equicord. Try updating!",g=i(bw,{name:n,description:t||m,enabled:!1,setEnabled:()=>{},disabled:!0,infoButton:i(Xm,null)});return t?i(Dr,{text:m},g):g}let l=()=>ne("A restart is required for the change to take effect!"),c=Ne(()=>{let m={};for(let g in et){let x=et[g].dependencies;if(x)for(let v of x)m[v]??=[],m[v].push(g)}return m},[]),u=hG(n),p=c[a.name]?.filter(m=>Ve(m));if(u){let m=a.required||!p.length?"This plugin is required for Equicord to function.":i(Cw,{deps:p});return i(ve,{text:m,key:a.name},({onMouseLeave:g,onMouseEnter:x})=>i(cl,{key:a.name,onMouseLeave:g,onMouseEnter:x,onRestartNeeded:l,plugin:a,disabled:!0}))}return i(cl,{key:a.name,onRestartNeeded:l,plugin:a})}var xCe,vCe=h(()=>{"use strict";d();gCe();Jt();j();Pe();ot();Fi();C9();$1();lc();O();Be();C();Na();xCe=H.wrap(function({message:t}){let o=new Set,r=[];t.embeds?.forEach(a=>{if(!a.url?.startsWith("https://equicord.org/plugins/")&&!a.url?.startsWith("https://vencord.dev/plugins/")||!(hf(t.channel_id)&&H0(t.author.id)))return;let l=new URL(a.url).pathname.split("/")[2],u=Object.keys(et).find(p=>p.toLowerCase()===l?.toLowerCase())||l;!u||o.has(u)||(o.add(u),r.push(i(hCe,{key:a.url,url:a.url,description:a.rawDescription})))});let n=t.components?.[0]?.components;if(t.author.id===qS&&n?.length>=4){let a=n[1]?.content,s=n.find(l=>l?.components)?.components[0]?.url;if(s?.startsWith("https://equicord.org/plugins/")||s?.startsWith("https://vencord.dev/plugins/")){let l=new URL(s).pathname.split("/")[2],u=Object.keys(et).find(p=>p.toLowerCase()===l?.toLowerCase())||l;u&&!o.has(u)&&(o.add(u),r.push(i(hCe,{key:s,url:s,description:a})))}}return r.length===0?null:i("div",{className:"vc-plugins-management-cards vc-plugins-grid",style:{marginTop:"0px"}},r)},{noop:!0})});function cft(){let e=ye([df],()=>df.getAccountStanding()),t=ye([df],()=>df.isInitialized()),[o,r]=V.useState(!1);V.useEffect(()=>{t||lft().catch(()=>{})},[t]);let n=bCe[e?.state]??bCe[100];return i("div",{style:{display:"contents"},onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1)},i(il,{tooltip:n.label,position:"bottom",icon:a=>i(n.Icon,{...a,color:o?n.hoverColor:"currentColor"}),onClick:()=>un.openUserSettings("account_standing_panel")}))}function uft(e){return e.replace(/(^|\n)(\s*)([*+-])\s+/g,"$1$2\\$3 ")}var yCe,lft,bCe,SCe,$i,_P,wCe=h(()=>{"use strict";d();yr();zp();yc();Jt();j();ot();Jw();O();Be();R();co();le();C();fCe();vCe();Rp(!0,"EquicordHelper","NoBulletPoints","noBulletPoints");Rp(!0,"EquicordHelper","NoModalAnimation","noModalAnimation");Rp(!0,"EquicordHelper","GuildTagSettings","disableAdoptTagPrompt");yCe=!1,lft=Oe("SAFETY_HUB_FETCH_START"),bCe={100:{label:"All good!",hoverColor:"var(--status-positive)",Icon:i3},200:{label:"Limited",hoverColor:"var(--status-warning)",Icon:Xm},300:{label:"Very limited",hoverColor:"var(--orange-345)",Icon:Xm},400:{label:"At risk",hoverColor:"var(--status-danger)",Icon:Xm},500:{label:"Suspended",hoverColor:"var(--interactive-muted)",Icon:Xm}};SCe=async(e,t)=>{$i.store.noBulletPoints&&(t.content=uft(t.content))},$i=M({noMirroredCamera:{type:3,description:"Prevents the camera from being mirrored on your screen",restartNeeded:!0,default:!1},removeActivitySection:{type:3,description:"Removes the activity section above member list",restartNeeded:!0,default:!1},showYourOwnActivityButtons:{type:3,description:"Discord hides your own activity buttons for some reason",restartNeeded:!0,default:!1},refreshSlashCommands:{type:3,description:"Refreshes Slash Commands to show newly added commands without restarting your client.",default:!1},forceRoleIcon:{type:3,description:"Forces role icons to display next to messages in compact mode",restartNeeded:!0,default:!1},accountStandingButton:{type:3,description:"Show an account standing button in the header bar",restartNeeded:!0,default:!1},restoreFileDownloadButton:{type:3,description:"Adds back the Download button at the top right corner of files",restartNeeded:!0,default:!1},noBulletPoints:{type:3,description:"Stops you from typing markdown bullet points (stinky)",restartNeeded:!0,default:!1},noModalAnimation:{type:3,description:"Remove the 300ms long animation when opening or closing modals",restartNeeded:!0,default:!1},disableAdoptTagPrompt:{type:3,description:"Disable the prompt to adopt tags",restartNeeded:!0,default:!1},jsonGateway:{type:3,description:"Forces JSON on gateway reconnect",restartNeeded:!0,default:!1},hideVoiceIndicatorForMutedChannels:{type:3,description:"Hide voice indicator in server list when only active channels are muted",restartNeeded:!0,default:!1}}),_P=S({name:"EquicordHelper",description:"Used to provide support, fix discord caused crashes, and other misc features.",tags:["Appearance","Commands","Utility"],dependencies:["CommandsAPI","HeaderBarAPI","MessageAccessoriesAPI"],authors:[b.thororen,F.nyx,F.Naibuu,F.keircn,F.SerStars,F.mart,F.omaw,b.Samwich,b.AutumnVN,F.auggeeo],required:!0,settings:$i,headerBarButton:{icon:i3,render:()=>$i.store.accountStandingButton?i(cft,null):null},patches:[{find:"Unknown resolution:",replacement:[{match:/throw Error\(`Unknown resolution: \$\{(\i)\}`\)/,replace:"return $1;"},{match:/throw Error\(`Unknown frame rate: \$\{(\i)\}`\)/,replace:"return $1;"}]},{find:".completeOperation(",replacement:{match:/(?<=this\.nextId\(\);)(\i\(\i\)),(.{0,200}reject:\i\}\))/,replace:"$2,$1"}},{find:"discarding speculative database",replacement:{match:/await \i\(\i\)(?=;.{0,15}this\.databases)/,replace:"$&.catch(()=>null)"}},{find:".STATUS_WARNING_BACKGROUND})})",predicate:()=>$i.store.noMirroredCamera,replacement:{match:/mirror:\i/,replace:"mirror:!1"}},{find:"this.handleReady})",all:!0,predicate:()=>$i.store.noMirroredCamera,replacement:{match:/(\[\i\.\i\]:)\i/,replace:"$1!1"}},{find:".PREVIEW_CAMERA_MODAL,",replacement:{match:/className:\i.\i,(?=children:\()/,replace:'$&style:{transform: "scalex(1)"},'},predicate:()=>$i.store.noMirroredCamera},{find:".GLOBAL_FEED});",predicate:()=>$i.store.removeActivitySection,replacement:{match:/null==\i\|\|0.{0,100}VIEW_CHANNEL\)&&/,replace:"true||$&"}},{find:".USER_PROFILE_ACTIVITY_BUTTONS),",predicate:()=>$i.store.showYourOwnActivityButtons&&!Ve(Ed.name),replacement:{match:/.getId\(\)===\i.id/,replace:"$& && false"}},{find:"#{intl::GUILD_COMMUNICATION_DISABLED_ICON_TOOLTIP_BODY}",predicate:()=>$i.store.forceRoleIcon,replacement:{match:/(?<=\}\):null\].{0,150}\?2:)0(?=\})/,replace:"1"}},{find:'"VISUAL_PLACEHOLDER":',predicate:()=>$i.store.restoreFileDownloadButton,replacement:{match:/(\.downloadUrl,showDownload:)\i/,replace:"$1!0"}},{find:"DURATION_IN:",predicate:()=>$i.store.noModalAnimation,replacement:{match:/300,/,replace:"0,"}},{find:'="ABOVE"',predicate:()=>$i.store.noModalAnimation,replacement:{match:/\?\?300/,replace:"??0"}},{find:".SWITCH_THUMB_BACKGROUND_SELECTED_DEFAULT)",predicate:()=>$i.store.noModalAnimation,replacement:{match:/200:300/g,replace:"0:0"}},{find:"GuildTagAvailableCoachmark",replacement:{match:/return.{0,200}GUILD_TAG_COACHMARK_ASSET/g,replace:"return null;$&"},predicate:()=>$i.store.disableAdoptTagPrompt},{find:"JSONEncoding",replacement:{match:/void 0!==\i\?\i:/,replace:""},predicate:()=>$i.store.jsonGateway},{find:".USE_OSX_NATIVE_TRAFFIC_LIGHTS",replacement:{match:/case \i\.\i\.WINDOWS:/,replace:'case "WEB":'},predicate:()=>Me.winNativeTitleBar},{find:'"refresh-title-bar-small"',replacement:[{match:/\i===\i\.PlatformTypes\.WINDOWS/g,replace:"false"},{match:/\i===\i\.PlatformTypes\.WEB/g,replace:"true"}],predicate:()=>Me.winNativeTitleBar},{find:"DirectMessage: getSpringConfigs()",replacement:[{match:/("data-drop-hovering".{0,100}selected:(?:\i|!0),upperBadge:)(\i)(?=,lowerBadge:\i)/g,replace:"$1$self.hasUnmutedVoiceChannel(arguments[0]?.guild?.id)?$2:null"},{match:/return (\i)\.type===\i\.\i\.GUILD_VOICE/,replace:"$&&&!$self.isChannelMuted($1?.guildId,$1?.id)"},{match:/\.afkChannelId\).{0,80}.filter\((\i)=>\i\.type===\i\.\i\.VOICE/,replace:"$&&&!$self.isChannelMuted($1?.guildId,$1?.channelId)"},{match:/\.getAllApplicationStreams\(\).filter\((\i)=>\i\.guildId===\i/,replace:"$&&&!$self.isChannelMuted($1?.guildId,$1?.channelId)"},{match:/\.getEmbeddedActivitiesForGuild\((\i)\)(?=.flatMap\(\i=>)/,replace:"$&.filter(e=>!$self.isChannelMuted($1?.guildId,e?.channelId))"}],predicate:()=>$i.store.hideVoiceIndicatorForMutedChannels},{find:"getPlatformUserUrl:",replacement:[{match:/name:("(?:Xbox|Epic Games)").{0,180}enabled:!0/g,replace:"$&,getPlatformUserUrl:e=>$self.getPlatformUrl($1, e)"}]}],renderMessageAccessory(e){return i(f,null,i(mCe,{message:e.message}),i(xCe,{message:e.message}))},flux:{async CHANNEL_SELECT({channelId:e}){if(!G0.includes(e))return;let o=L.getCurrentUser()?.id;if(!(!o||hc(o))&&Bz.includes(e)&&!yCe)return Oo.show({title:"Vencord Support Channel Warning",body:"Before asking for help. Check updates and if this issue is actually caused by Equicord!",confirmText:"Equicord Support",onConfirm(){Yt.transitionTo(`/channels/${mc}/${md}`)},cancelText:"Okay continue",onCancel(){yCe=!0}})}},commands:[{name:"refresh-commands",description:"Refresh Slash Commands",inputType:0,predicate:()=>$i.store.refreshSlashCommands,execute:async(e,t)=>{try{OS.indices={},Ft(t.channel.id,{content:"Slash Commands refreshed successfully."})}catch(o){console.error("[refreshSlashCommands] Failed to refresh commands:",o),Ft(t.channel.id,{content:"Failed to refresh commands. Check console for details."})}}}],start(){$i.store.noBulletPoints&&ni(SCe)},stop(){$i.store.noBulletPoints&&ri(SCe)},isChannelMuted(e,t){return Et.getVoiceStateForUser(L.getCurrentUser()?.id)?.channelId===t?!1:sr.isChannelMuted(e,t)},hasUnmutedVoiceChannel(e){let t=Et.getVoiceStates(e),o=Et.getVoiceStateForUser(L.getCurrentUser()?.id);return Object.values(t??{}).some(r=>r?.channelId===o?.channelId||!sr.isChannelMuted(e,r?.channelId))},getPlatformUrl(e,t){switch(e){case"Xbox":return`https://www.xbox.com/play/user/${encodeURIComponent(t.name)}`;case"Epic Games":return`https://store.epicgames.com/u/${encodeURIComponent(t.id)}`;default:return null}}})});function ACe(){let e=kCe.store.amount;XY++,XY%e===0&&(VY?.play(),XY=0)}var XY,VY,kCe,UP,CCe=h(()=>{"use strict";d();rl();j();O();R();XY=0,VY=null;kCe=M({amount:{type:1,description:"amount of clicks to trigger crossant",default:10}}),UP=S({name:"Equissant",description:"Crossant every specified amount of clicks :trolley:",tags:["Fun"],authors:[F.SomeAspy,b.thororen],dependencies:["AudioPlayerAPI"],settings:kCe,start(){VY=yf("https://github.com/Equicord/Equibored/raw/main/sounds/equissant/croissant.mp3",{persistent:!0}),document.addEventListener("click",ACe)},stop(){VY?.delete(),document.removeEventListener("click",ACe)}})});var TCe=h(()=>{});function pft(){let{soundGuildId:e}=wg.use(["soundGuildId"]),t=Object.values($e.getGuilds()).map(o=>({value:o.id,label:o.name}));return i(Fn,{options:t,value:t.find(o=>o.value===e)?.value,placeholder:"Select a server...",maxVisibleItems:6,closeOnSelect:!0,onChange:o=>wg.store.soundGuildId=o,renderOptionPrefix:o=>{let r=$e.getGuild(o?.value);return r?.icon?i("img",{className:eJ("guild-icon"),src:at.getGuildIconURL({id:r.id,icon:r.icon,size:32})}):null}})}function mft(){let{soundId:e}=wg.use(["soundId"]);return i("div",{className:eJ("input-row")},i("div",{className:eJ("input-wrapper")},i(Te,{value:e,onChange:t=>wg.store.soundId=t,placeholder:"Enter sound ID..."})),i(de,{onClick:()=>ii(`https://${window.GLOBAL_ENV.CDN_HOST}/soundboard-sounds/${e}`,{volume:50}),disabled:!e},i(dft,{color:"currentColor"})))}var eJ,dft,wg,fft,zP,ICe=h(()=>{"use strict";d();TCe();rl();j();Tt();O();we();R();le();C();eJ=K("vc-exitsounds-"),dft=he("4.96v14.08c0");wg=M({soundGuildId:{type:6,description:"Select the server containing the sound.",component:pft},soundId:{type:6,description:"Enter the ID of the sound you want to play.",component:mft}}),fft=(e,{sound:t})=>{e.splice(1,0,i(P.MenuGroup,null,i(P.MenuItem,{id:"set-global-exit-sound",label:"Set as global exit sound",action:()=>{wg.store.soundGuildId=t.guildId,wg.store.soundId=t.soundId}})))},zP=S({name:"ExitSounds",description:"Play soundboard sounds when you disconnect from voice.",tags:["Fun","Voice"],authors:[b.prism],dependencies:["AudioPlayerAPI"],settings:wg,contextMenus:{"sound-button-context":fft},patches:[{find:'type:"VOICE_CHANNEL_SHOW_FEEDBACK"',replacement:{match:/disconnect\(\)\{/,replace:"async $& await $self.onDisconnect();"}}],async onDisconnect(){let{soundGuildId:e,soundId:t}=wg.store;if(!e||!t||$o.isDeaf())return;let o=Fe.getVoiceChannelId();if(o)try{await mt.post({url:Gt.Endpoints.SEND_SOUNDBOARD_SOUND(o),body:{sound_id:t,source_guild_id:e}})}catch{D.show({message:"Oops! Something went wrong.",id:D.genId(),type:D.Type.FAILURE})}}})});var ECe=h(()=>{});function gft(e){let{author:t}=e,r=`[${new Date(e.timestamp.toString()).toLocaleString()}] ${t.username}`;return t.discriminator!=="0"&&(r+=`#${t.discriminator}`),r+=`: ${e.content}`,e.attachments?.length>0&&(r+=` Attachments:`,e.attachments.forEach(n=>{r+=` - ${n.filename} (${n.url})`})),e.embeds?.length>0&&(r+=` Embeds:`,e.embeds.forEach(n=>{n.rawTitle&&(r+=` Title: ${n.rawTitle}`),n.rawDescription&&(r+=` Description: ${n.rawDescription}`),n.url&&(r+=` URL: ${n.url}`)})),r}async function hft(e){let t=new Date(e.timestamp.toString()).toISOString().split("T")[0],o=`message-${e.id}-${t}.txt`,r=gft(e);try{{let n=new TextEncoder().encode(r),a=await DiscordNative.fileManager.saveWithDialog(n,o);a&&GP.store.openFileAfterExport&&n9(a)}At({title:"Export Messages",body:`Message exported successfully as ${o}`,icon:"\u{1F4C4}"})}catch{At({title:"Export Messages",body:"Failed to export message",icon:"\u274C"})}}function DCe(){return i("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},i("path",{d:"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"}))}function $P(e,t){return e.filter(o=>o.type===t).map(o=>o.user.discriminator==="0"?o.user.username:o.user.username+"#"+o.user.discriminator)}var GP,xft,HP,PCe=h(()=>{"use strict";d();ECe();Fa();j();Pe();mi();O();hd();R();ul();C();GP=M({openFileAfterExport:{type:3,description:"Open the exported file in the default file handler after export",default:!0},exportContacts:{type:3,description:"Export a list of friends to your clipboard. Adds a new button to the menu bar for the friends tab.",default:!1}});xft=(e,t)=>{let{message:o}=t;o&&e.push(i(P.MenuItem,{id:"export-message",label:"Export Message",icon:DCe,leadingAccessory:{type:"icon",icon:DCe},action:()=>hft(o)}))};HP=S({name:"ExportMessages",description:"Allows you to export any message to a file",tags:["Chat","Utility"],authors:[F.veygax,F.dat_insanity],settings:GP,contextMenus:{message:xft},patches:[{find:"fetchRelationships(){",predicate:()=>GP.store.exportContacts,replacement:{match:/(\.then\(\i)=>(\i\.\i\.dispatch\({type:"LOAD_RELATIONSHIPS_SUCCESS",relationships:(\i\.body)}\))/,replace:"$1=>{$2; $self.getContacts($3)}"}},{find:'[role="tab"][aria-disabled="false"]',predicate:()=>GP.store.exportContacts,replacement:{match:/("aria-label":(\i).{0,25}children:null!=\i)\?(this\.renderChildren\(\i\)):null/,replace:'$1?($2==="Friends"?[...$3,$self.addExportButton()]:$3):null'}}],getContacts(e){this.contactList={friendsAdded:[...$P(e,1)],blockedUsers:[...$P(e,2)],incomingFriendRequests:[...$P(e,3)],outgoingFriendRequests:[...$P(e,4)]}},addExportButton(){return i(H,{noop:!0,key:".2"},i("button",{className:"export-contacts-button",onClick:()=>{this.copyContactToClipboard(),console.log("clicked")}},"Export"))},copyContactToClipboard(){if(this.contactList){po(JSON.stringify(this.contactList)),D.show({message:"Contacts copied to clipboard successfully.",type:D.Type.SUCCESS,id:D.genId(),options:{duration:3e3,position:D.Position.BOTTOM}});return}D.show({message:'Contact list is undefined. Click on the "All" tab before exporting.',type:D.Type.FAILURE,id:D.genId(),options:{duration:3e3,position:D.Position.BOTTOM}})}})});function yft(){let[e,t]=T(!1),{keyBind:o,reqCtrl:r,reqShift:n,reqAlt:a}=MCe.store,s=jt(l=>{let c=l.code===o&&(!r||l.ctrlKey)&&(!n||l.shiftKey)&&(!a||l.altKey);t(c)},[o,r,n,a]);return G(()=>(window.addEventListener("keydown",s),window.addEventListener("keyup",s),()=>{window.removeEventListener("keydown",s),window.removeEventListener("keyup",s)}),[s]),e}var vft,MCe,jP,NCe=h(()=>{"use strict";d();j();O();R();C();vft=["Backspace","Tab","Enter","ShiftLeft","ShiftRight","ControlLeft","ControlRight","AltLeft","AltRight","Pause","CapsLock","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","PrintScreen","Insert","Delete","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","KeyA","KeyB","KeyC","KeyD","KeyE","KeyF","KeyG","KeyH","KeyI","KeyJ","KeyK","KeyL","KeyM","KeyN","KeyO","KeyP","KeyQ","KeyR","KeyS","KeyT","KeyU","KeyV","KeyW","KeyX","KeyY","KeyZ","MetaLeft","MetaRight","ContextMenu","Numpad0","Numpad1","Numpad2","Numpad3","Numpad4","Numpad5","Numpad6","Numpad7","Numpad8","Numpad9","NumpadMultiply","NumpadAdd","NumpadSubtract","NumpadDecimal","NumpadDivide","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NumLock","ScrollLock"];MCe=M({keyBind:{description:"The key to toggle trash when pressed.",type:0,default:"KeyZ",isValid:e=>vft.includes(e)},reqCtrl:{description:"Require control to be held.",type:3,default:!0},reqShift:{description:"Require shift to be held.",type:3,default:!0},reqAlt:{description:"Require alt to be held.",type:3,default:!1}}),jP=S({name:"FastDeleteChannels",description:"Adds a trash icon to delete channels",tags:["Servers","Utility"],authors:[b.thororen],settings:MCe,patches:[{find:"UNREAD_IMPORTANT:",replacement:{match:/\.Children\.count.+?:null(?<=,channel:(\i).+?)/,replace:"$&,$self.TrashIcon($1)"}},{find:"18V16H9v2H6Zm3",replacement:{match:/mentionsCount:\i.+?null(?<=channel:(\i).+?)/,replace:"$&,$self.TrashIcon($1)"}}],TrashIcon:e=>!yft()||!ht.can(ct.MANAGE_CHANNELS,e)?null:i("span",{onClick:()=>mt.del({url:Gt.Endpoints.CHANNEL(e.id)})},i("svg",{width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",color:"#ed4245"},i("path",{fill:"currentColor",d:"M14.25 1c.41 0 .75.34.75.75V3h5.25c.41 0 .75.34.75.75v.5c0 .41-.34.75-.75.75H3.75A.75.75 0 0 1 3 4.25v-.5c0-.41.34-.75.75-.75H9V1.75c0-.41.34-.75.75-.75h4.5Z"}),i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M5.06 7a1 1 0 0 0-1 1.06l.76 12.13a3 3 0 0 0 3 2.81h8.36a3 3 0 0 0 3-2.81l.75-12.13a1 1 0 0 0-1-1.06H5.07ZM11 12a1 1 0 1 0-2 0v6a1 1 0 1 0 2 0v-6Zm3-1a1 1 0 1 1 1 1v6a1 1 0 1 1-2 0v-6a1 1 0 0 1 1-1Z"})))})});var qP=h(()=>{"use strict";d()});function Cft(e){return{encode:(t,o)=>{try{let r=[t,e[t].encode(o)];return Rw(wft.encode(JSON.stringify(r))).toBase64({alphabet:"base64url",omitPadding:!0})}catch{return null}},decode:t=>{try{if(!t)return null;let o=Lw(Uint8Array.fromBase64(t,{alphabet:"base64url"})),r=JSON.parse(Aft.decode(o));if(!Array.isArray(r))return null;let[n,a]=r;return n in e?{format:n,data:e[n].decode(a)}:null}catch{return null}},stringify:(t,o)=>e[t].stringify(o)}}function KP(e){let t=e.lastIndexOf(".");return t>0?[e.substring(0,t),e.substring(t)]:[e,null]}function Tft(e){return new Promise(t=>{let o=document.createElement("div"),r=Bi(o);queueMicrotask(()=>{BS.flushSync(()=>r.render(e)),t(o.innerHTML),r.unmount()})})}async function Ift(e){let[t,o]=KP(e.filename),r=I3.truncatechars(e.title?e.title:t,50)+(o?.slice(0,6)??""),n=I3.filesize(e.size);if(sJ.store.localThumbnails){let a=await Tft(i(GCe,{name:r,subtitle:n}));return URL.parse("data:image/svg+xml,"+a.replaceAll("%","%25").replaceAll("#","%23"))}else{let a=new URL("https://placeholder.nin0.dev/image");return a.searchParams.append("name",r||" "),a.searchParams.append("subtitle",n),await mt.post({url:Gt.Endpoints.UNFURL_EMBED_URLS,body:{urls:[a]},retries:3}).then(({body:s})=>{let[{thumbnail:l}={}]=s.embeds;return l?.proxy_url?URL.parse(l.proxy_url):null})}}async function _Ce(e){try{let t=await Ift(e),o=tJ.encode(0,e)?.toString();return!t||!o?BCe:(t.hash=o,t)}catch{return BCe}}async function Eft(e){return Sft.fetchAttachment(e).then(({data:c,filename:u,type:p})=>new File([c],u,{type:p}))}async function UCe(e,t){let{filename:o,title:r,description:n}=e,a=await Eft(e).catch(()=>D.show({message:`Couldn't fetch ${o}`,id:D.genId(),type:D.Type.FAILURE}));if(!a)return;await Mr.promptToUpload([a],t,yo.ChannelMessage).catch(()=>D.show({message:`Couldn't upload ${o}`,id:D.genId(),type:D.Type.FAILURE}));let s=[...el.getUploads(t.id,yo.ChannelMessage)],l=s.findIndex(({item:p})=>p.file===a);if(l===-1)return;let c=Pa.getPendingReply(t.id),[u]=s.splice(l);Ma.setUploads({uploads:s,channelId:t.id,draftType:yo.ChannelMessage}),r!=null&&(u.filename=r+(KP(u.filename)[1]??"")),n!=null&&(u.description=n),Q.dispatch({type:"DELETE_PENDING_REPLY",channelId:t.id}),or(t.id,{},!1,{...fo.getSendMessageOptionsForReply(c),attachmentsToUpload:[u]})}function rJ(e,t){return!!t&&(ht.can(e,t)||t.isPrivate())}function RCe(e){return e.normalize("NFD").replace(Dft,"").normalize("NFKC").toLowerCase().trim()}function Pft(e,t){let o=0,r=0;for(let n=0;n{ba.FrecencyUserSettingsActionCreators.loadIfNecessary()},[]);let o=ye([dc],()=>{let n=dc.frecencyWithoutFetchingLatest.favoriteGifs?.gifs;return n?Object.entries(n).filter(([,{format:a}])=>a===0).map(([a,{src:s,...l}])=>({...l,...tJ.decode(URL.parse(s)?.hash.replace("#","")??""),url:a})).filter(({format:a,data:s})=>s&&a===e):null},[e]),{state:r}=ye([dc],()=>{let n=t&&RCe(t);if(!o)return{query:n,state:null};if(!n)return{query:n,state:o.toSorted((s,l)=>l.order-s.order)};let a=o.map(s=>({item:s,score:Pft(n,RCe(tJ.stringify(s.format,s.data)))})).filter(({score:s})=>s!==null).sort((s,l)=>l.score-s.score).map(({item:s})=>s);return{query:n,state:a}},[o,t],(n,a)=>!!n.state==!!a.state&&n.query===a.query);return r}function $Ce(){let e=Se(new Map),t=Vt(),o=jt((r,n)=>{n!==e.current.get(r)&&(e.current.set(r,n),t())},[]);return[e.current,o]}var Sft,Oc,OCe,oJ,FCe,wft,Aft,kft,tJ,BCe,nJ,Dft,WP,iJ=h(()=>{"use strict";d();we();_e();Er();jp();Kt();le();C();K1();lJ();aJ();qP();Sft=VencordNative.pluginHelpers.FavouriteAnything,Oc=K("vc-favouriteAnything-"),OCe=Oe("borderBoxSize","blockSize","inlineSize"),oJ=Ae("isAnimated","getFormatQuality"),FCe=Oe("return{uniqueId",".IS_ANIMATED"),wft=new TextEncoder,Aft=new TextDecoder,kft=e=>e;tJ=Cft({0:kft({encode:({id:e,filename:t,size:o,url:r,content_type:n="",title:a,description:s})=>[e,t,o,new URL(r).pathname,n,a??null,s??null],decode:([e,t,o,r,n,a,s])=>({id:e??"0",filename:t??"UNKNOWN",size:+o||0,url:`${new URL(r,`https://${window.GLOBAL_ENV.CDN_HOST}`)}`,proxy_url:`${new URL(r,`https://${window.GLOBAL_ENV.MEDIA_PROXY_ENDPOINT}`)}`,content_type:n??"application/octet-stream",spoiler:t?.startsWith("SPOILER_")??!1,title:a??void 0,description:s??void 0}),stringify:({title:e,filename:t})=>e?.trim()||t})});BCe=new URL("https://images-ext-1.discordapp.net/external/085KIKMVni8n60G3GHE1rGcA0xgH6OgBKIZqUiQYsXc/%3Fname%3DUnknown%2520file%26subtitle%3D0%2520MB/https/placeholder.nin0.dev/image");nJ=ko(()=>{let e=new Set([window.GLOBAL_ENV.CDN_HOST,...[window.GLOBAL_ENV.IMAGE_PROXY_ENDPOINTS,window.GLOBAL_ENV.MEDIA_PROXY_ENDPOINT].flatMap(t=>t.split(",")).map(t=>URL.parse(`https://${t}`)?.hostname).filter(Boolean)]);return t=>e.has(t)});Dft=/[\u0300-\u036f]/g;WP=class{constructor(t,o){this.cb=t;this.options=o}cb;options;items=[];timer=null;queue=new Oa;add(t){this.items.indexOf(t)===-1&&(this.items.push(t),this.items.length>=this.options.maxCount?this.flush():(this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>this.flush(),this.options.timeout)))}flush(){if(this.timer&&clearTimeout(this.timer),this.timer=null,this.items.length===0)return;let t=this.items.splice(0,50);this.queue.push(()=>this.cb(t).catch(()=>this.items.push(...t)))}}});var Ag,cJ=h(()=>{"use strict";d();le();C();iJ();Ag=ln(()=>{class e extends yi.Store{static displayName="SignedUrlsStore";static _expirationThreshold=3600*1e3;_urls=new Map;_queue=new WP(o=>this._handleBatch(o),{maxCount:50,timeout:50});__getLocalVars(){return{urls:this._urls,queue:this._queue}}get(o){let r=URL.parse(o);if(!this._isValid(r))return null;let n=this._urls.get(`${this._clean(r)}`)??null,a=URL.parse(n);return(!a||this._willExpire(a))&&this._refresh(r),n}addSigned(o){let r=URL.parse(o);this._isValid(r)&&(this._willExpire(r)?this._refresh(r):this._update([[`${this._clean(r)}`,o]]))}_refresh(o){this._queue.add(`${this._clean(o)}`)}_clean(o){let r=new URL(o);return r.search="",r.hash="",r}_isValid(o){return!!(o&&nJ(o.hostname))}_willExpire(o){let r=parseInt(o.searchParams.get("ex"),16)*1e3;return isNaN(r)||r-e._expirationThresholdthis._update(r.refreshed_urls.map(({original:n,refreshed:a})=>[n,a])))}}return new e(Q)})});function Lft(e,t){let o={id:`favourite-anything-preview-${e.id}`,attachments:[e],channel_id:t,content:"",type:0,timestamp:new Date().toISOString()};return Bft(o)}function WCe({onSelectItem:e}){let t=Se(null),{channelId:o,query:r}=dd.useExpressionPickerStore(v=>({channelId:v.activeChannelId,query:v.searchQuery})),n=ye([W],()=>W.getChannel(o),[o]),a=zCe(0,r),s=Ne(()=>a?Object.keys(a).length:0,[a]),[l,c]=$Ce(),u=jt(v=>e({url:v}),[]),p=jt(v=>dd.setSearchQuery(v),[]),m=jt(()=>dd.setSearchQuery(""),[]),g=jt(({row:v})=>{let y=a?.[v];return y?i(zft,{key:y.url,url:y.url,file:y.data,channel:n,reducePadding:v!==s-1,onResize:c,onSubmit:u}):null},[a,n,s,c,u]),x=jt((v,y)=>(a?.[y]&&l.get(a[y].url))??100,[a,l]);return G(()=>{t.current?.scrollToTop()},[r]),i("div",{id:"files-picker-tab-panel",role:"tabpanel","aria-labelledby":"files-picker-tab",className:Oc("container")},i("div",{className:Oc("container-header")},i(Mft,{autoFocus:!0,placeholder:"Search files",query:r,onChange:p,onClear:m})),s>0?i("div",{className:Oc("container-body")},i(MS,{ref:t,sections:[s],sectionHeight:0,rowHeight:x,renderRow:g})):i("div",{className:Oc("container-body","container-info"),inert:!0},r.trim()?i(Oft,null):i(_ft,null)))}function Oft(){return i(Y,{className:Oc("info-text")},"No files match your search.")}function _ft(){return i(f,null,i("div",{className:Oc("attachment-container","demo","first")},i(qCe,{attachment:Fft}),i(pJ,{className:Oc("demo-favourite-button"),url:"https://example.org",src:"https://example.org",width:100,height:100,format:0})),i(Y,{className:Oc("info-text"),size:"md"},"Click the star to favourite a file.",i("br",null),"Favourite files will show up here!"))}function Uft({height:e=24,width:t=24,...o}){return i("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:e,fill:"currentColor",viewBox:"0 0 24 24",...o},i("path",{d:"M6.6 10.02 14 11.4a.6.6 0 0 1 0 1.18L6.6 14l-2.94 5.87a1.48 1.48 0 0 0 1.99 1.98l17.03-8.52a1.48 1.48 0 0 0 0-2.64L5.65 2.16a1.48 1.48 0 0 0-1.99 1.98l2.94 5.88Z"}))}function GCe({name:e,subtitle:t}){let[,o]=KP(e);return i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 32 11",style:{font:"2px sans-serif"},fill:"#242429"},i("path",{d:"M-2-2h32v11H-2"}),i("rect",{width:"5",height:"7",rx:".5",fill:"#ddf"}),i("g",{fill:"#78e"},i("path",{d:"M3-1v2.5q0 .5.5.5H6"}),o&&i("text",{x:".85",y:"6",fontFamily:"monospace"},o.slice(1,4))),i("path",{d:"M6 3V-2H1"}),i("text",{x:"7",y:"2.8",fill:"#eff"},e),i("text",{x:"7",y:"5.6",fill:"#777"},t))}function zft({url:e,file:t,channel:o,onResize:r,onSubmit:n,reducePadding:a}){let[s,l]=T(!1),c=Se(null);OCe(c,({height:x})=>r(e,x),[r,e]);let u=ye([Ag],()=>({...t,url:Ag.get(t.url),proxy_url:Ag.get(t.proxy_url)}),[t],ia.isEqual),{canAttachFiles:p,canSendMessages:m}=ye([ht],()=>({canAttachFiles:rJ(ct.ATTACH_FILES,o),canSendMessages:rJ(ct.SEND_MESSAGES,o)}),[o]),g=Ne(()=>{switch(!0){case p:return async()=>{l(!0),await UCe(u,o),dd.closeExpressionPicker(),l(!1)};case m:return()=>n(e);default:return null}},[u,p,m,o,e]);return i("div",{ref:c,className:Oc("attachment-container",a&&"reduced-padding")},i(qCe,{attachment:u}),g&&i(de,{onClick:g,variant:"secondary",disabled:s},i(Uft,{width:20,height:20})))}function KCe(){let e=V.useContext(uJ),t=V.useContext(dJ),o=Ne(()=>{if(!e||e.type==="gifv")return null;let{video:r,image:n,images:a,thumbnail:s}=e;if(r){let p=!!r.proxyURL,m=r.proxyURL??s?.proxyURL??r.url,g=p?2:1,x=p?r.url:e.url;return{...r,format:g,src:m,url:x}}let l=t!=null&&a?.[t]||n;if(!l)return null;let c=l.proxyURL??l.url;return oJ.isAnimated({...l,original:l.url,src:c,animated:!1})?null:{...l,format:1,src:c}},[e,t]);return o&&i("div",{className:Oc("image-accessory")},i(pJ,{...o,className:Rft.gifFavoriteButton}))}function mJ({attachment:e,component:t,children:o}){let r=Ne(()=>{if(t){let{id:n,size:a,name:s,spoiler:l,file:c}=t,u={...c,size:a,filename:s,id:n,spoiler:l,content_type:c.contentType,proxy_url:c.proxyUrl};return FCe(u)}if(e){let{originalItem:n,...a}=e;return{originalItem:"media"in n?{...n.media,id:a.uniqueId,size:0,spoiler:a.spoiler,filename:(a.spoiler?"SPOILER_":"")+a.uniqueId,content_type:n.media.contentType,proxy_url:n.media.proxyUrl}:n,...a}}return null},[e,t]);return i(jCe.Provider,{value:r},o)}function QCe(){let e=V.useContext(jCe),t=Ne(()=>{if(!e?.downloadUrl)return null;let{originalItem:o,type:r,downloadUrl:n,srcIsAnimated:a}=e,s=e.width||160,l=e.height||55;if(oJ.isAnimated({original:o.url,src:o.proxy_url,animated:!1,srcIsAnimated:a}))return null;if(r in HCe)return{format:HCe[r],src:o.proxy_url,url:n,width:s,height:l};let u=Object.assign(()=>_Ce(o).then(p=>p.toString()),{[Symbol.toPrimitive]:()=>""});return{format:0,src:o.proxy_url,url:n,width:s,height:l,gifSrc:u}},[e]);return t&&i(pJ,{...t,className:Oc("attachment-accessory")})}var uJ,dJ,jCe,Mft,pJ,Nft,Bft,Rft,qCe,Fft,HCe,aJ=h(()=>{"use strict";d();yt();Tt();co();le();C();cJ();qP();iJ();uJ=ln(()=>V.createContext(null)),dJ=ln(()=>V.createContext(null)),jCe=ln(()=>V.createContext(null)),Mft=he(".MagnifyingGlassIcon,onClear"),pJ=he("#{intl::GIF_TOOLTIP_ADD_TO_FAVORITES}"),Nft=Oe(".GUILD_TEXT]","fromServer)"),Bft=Oe(".createFromServer(",".isBlockedForMessage","messageReference:"),Rft=Ie("gifFavoriteButton","ctaButtonContainer");qCe=ln(()=>{let e=v3("this.renderAttachments");class t extends e{render(){return this.renderAttachments(this.props.message)}}let o=Object.freeze(Nft({id:"0",type:0}));return function({attachment:n}){let a=Ne(()=>Lft(n,o.id),[n,o.id]);return i(t,{channel:o,message:a,canDeleteAttachments:!1,shouldHideMediaOptions:!1,inlineAttachmentMedia:!0})}});Fft={id:"1",filename:"file",content_type:"application/octet-stream",size:123*1024,spoiler:!1,url:"",proxy_url:""};HCe=Object.freeze({IMAGE:1,VIDEO:2,CLIP:2})});var ZCe,YCe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/favouriteAnything/style.css",{name:"src/equicordplugins/favouriteAnything/style.css",source:`.vc-favouriteAnything-attachment-container { padding: 12px; display: flex; gap: 12px; &.vc-favouriteAnything-reduced-padding { padding-bottom: 0; } > :first-child { margin: 0; flex: 1; min-width: 0; > [class*="nonVisualMediaItem"] { width: 100%; [class*="mosaicItem"] { min-width: 0; max-width: unset; width: 100%; } [class*="spoilerContent"] { min-width: 0; flex: 1; } } } > button { width: 15%; min-width: 54px; } } .vc-favouriteAnything-container { background: var(--background-base-lower); display: flex; flex-direction: column; overflow: hidden; position: relative; width: 100%; } .vc-favouriteAnything-container-header { background: var(--background-surface-high); border-bottom: 1px solid var(--border-subtle); padding: var(--custom-gif-picker-gutter-size); z-index: 1; } .vc-favouriteAnything-container-body { display: flex; flex-direction: column; width: 100%; height: 100%; flex: 1; overflow: hidden; &.vc-favouriteAnything-container-info { justify-content: center; align-items: center; gap: 1.5rem; } } .vc-favouriteAnything-image-accessory { inset-inline-end: unset; position: absolute; z-index: 3; cursor: pointer; margin: 6px; :is(.imageWrapper:is(:hover, :focus-within) ~ &, :hover, :focus-within) > [class*="gifFavoriteButton"] { opacity: 1; transform: translateY(0); } } .vc-favouriteAnything-attachment-accessory { cursor: pointer; &:hover { background: var(--interactive-background-hover); } } .vc-favouriteAnything-info-text { text-align: center; } .vc-favouriteAnything-demo { width: 70%; justify-self: center; position: relative; .vc-favouriteAnything-demo-favourite-button { position: absolute; inset-inline-end: 4px; top: 4px; border-radius: 4px; box-shadow: 0 0 0 4px var(--yellow-300); } } `,classNames:{},dom:null});ZCe="src/equicordplugins/favouriteAnything/style.css"});var sJ,QP,lJ=h(()=>{"use strict";d();j();O();_e();R();aJ();cJ();YCe();qP();sJ=M({localThumbnails:{type:3,default:!1,description:"Generate file thumbnails locally instead of using an external service (placeholder.nin0.dev). Not compatible with mobile. Toggling this option will not affect existing favourites."}}),QP=S({name:"FavouriteAnything",description:"Favourite any image, video, or file attachment",tags:["Chat","Media","Utility"],authors:[b.Davri,b.nin0dev],searchTerms:["favorite"],managedStyle:ZCe,settings:sJ,patches:[{find:"this.renderInlineMediaEmbed",replacement:[{match:"render()",replace:"$&{return $self.renderEmbed(this)}__render()"},{match:/\.images\.map\((\i)=>(this.renderImage\(\{[^}]{50,100}\}\))\)/,replace:".images.map(($1,index)=>$self.renderEmbedMosaicItem($2,index))"}]},{find:"#{intl::MEDIA_MOSAIC_ALT_TEXT_POPOUT_TITLE}",replacement:{match:/renderAdjacentContent:\i/g,replace:"$&=$self.renderEmbedAccessory"}},{find:'["VIDEO","CLIP","AUDIO"]',replacement:[{match:/(?<=children:)(\i)=>(\i\(\1\))\}\):(\i\(\))/,replace:"$1=>$self.renderAttachment($2,arguments[0])}):$self.renderAttachment($3,arguments[0])"},{match:/let \i=Math.max\(0,(\i)\.length-\i\)/,replace:"$1.unshift($self.renderAttachmentAccessory());$&"}]},{find:"#{intl::ATTACHMENT_FILENAME_UNKNOWN}",replacement:{match:/(?<=case \i\.\i\.FILE:)return(\(0,\i\.jsx\)\(\i,\{\.\.\.(\i)\},(\i)\))/,replace:"return $self.renderCV2File($1,$3,$2)"}},{find:"#{intl::EXPRESSION_PICKER_CATEGORIES_A11Y_LABEL}",replacement:[{match:/\(0,\i\.jsx\)\((\i),[^}]{20,40}?"aria-selected":(\i)[^}]{50,100}?#{intl::EXPRESSION_PICKER_GIF}\)\}\)/,replace:"$self.renderTabs($1,$2)"},{match:/\{onSelectGIF:(\i),[^}]{20,40}\}\):null,(?=(\i)===)/,replace:"$&$self.renderFilePicker($2,$1),"}]},{find:'.sortBy("order").reverse().value()',replacement:{match:'.sortBy("order").reverse()',replace:"$&.filter($self.filterGifs)"}},{find:"#{intl::FAVORITE_GIFS_LIMIT_REACHED_BODY}",replacement:{match:/function (\i)\((\i)\)\{(?=\i\.\i\.updateAsync\("favoriteGifs")/g,replace:"async function $1($2){await $self.fixFavItem($2);await "}}],renderTabs(e,t){return i(f,null,i(e,{id:"gif-picker-tab",key:"gif-picker-tab","aria-controls":"gif-picker-tab-panel","aria-selected":t==="gif",isActive:t==="gif",viewType:"gif"},Xe("QUICKSEARCH_MEDIA")),i(e,{id:"files-picker-tab",key:"files-picker-tab","aria-controls":"files-picker-tab-panel","aria-selected":t==="files",isActive:t==="files",viewType:"files"},Xe("QUICKSEARCH_FILES")))},renderFilePicker(e,t){return e==="files"?i(WCe,{onSelectItem:t}):null},renderAttachment(e,{item:t}){return i(mJ,{attachment:t},e)},renderCV2File(e,t,o){return i(mJ,{component:o,key:t},e)},renderEmbed(e){return i(uJ.Provider,{value:e.props.embed},e.__render())},renderEmbedMosaicItem(e,t){return i(dJ.Provider,{value:t},e)},renderAttachmentAccessory:()=>i(QCe,null),renderEmbedAccessory:()=>i(KCe,null),filterGifs:e=>e.format!==0,fixFavItem:async e=>{typeof e=="string"?Ag.addSigned(e):(Ag.addSigned(e.url),Ag.addSigned(e.src),typeof e.gifSrc=="function"&&(e.src=await e.gifSrc(),delete e.gifSrc))}})});var JCe=h(()=>{});function fJ(e){return(e?.trim()||ZP).replace(/\/+$/,"")}function YP(e,t=ZP){return t==="none"?e:`${fJ(t)}?url=${encodeURIComponent(e)}`}var ZP,JP=h(()=>{"use strict";d();ZP="https://cors.keiran0.workers.dev"});var g8,ua,Bu,XP=h(()=>{"use strict";d();g8=(k=>(k.ZIPLINE="zipline",k.NEST="nest",k.EZHOST="ezhost",k.ENCRYPTINGHOST="encryptinghost",k.S3="s3",k.CATBOX="catbox",k.ZEROX0="0x0",k.LITTERBOX="litterbox",k.SHAREX="sharex",k.GOFILE="gofile",k.TMPFILES="tmpfiles",k.BUZZHEAVIER="buzzheavier",k.TEMPSH="tempsh",k.FILEBIN="filebin",k.PIXELVAULT="pixelvault",k.PIXELDRAIN="pixeldrain",k.WEBDAV="webdav",k))(g8||{}),ua={zipline:"Zipline",nest:"Nest",ezhost:"E-Z Host",encryptinghost:"Encrypting.host",s3:"S3-Compatible",catbox:"Catbox","0x0":"0x0.st",litterbox:"Litterbox",sharex:"ShareX Custom Uploader",gofile:"GoFile",tmpfiles:"tmpfiles.org",buzzheavier:"buzzheavier.com",tempsh:"temp.sh",filebin:"filebin.net",pixelvault:"PixelVault",pixeldrain:"PixelDrain",webdav:"WebDAV"},Bu=["zipline","ezhost","nest","encryptinghost","s3","catbox","0x0","litterbox","gofile","tmpfiles","buzzheavier","tempsh","filebin","pixelvault","pixeldrain","webdav","sharex"]});function Hft(e){return e?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function jft(e,t){let r=t.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean),n=e;for(let a of r){if(!n||typeof n!="object"||!(a in n))return;n=n[a]}return n}function h8(e){let t,o=e.replace(/^\uFEFF/,"").trim();try{t=JSON.parse(o)}catch{throw new Error("Invalid ShareX JSON")}if(!t||typeof t!="object"||Array.isArray(t))throw new Error("ShareX config must be a JSON object");let r=t;if(!r.RequestURL||typeof r.RequestURL!="string")throw new Error("ShareX RequestURL is required");if(!qft(r))throw new Error("ShareX DestinationType must include FileUploader or ImageUploader");return r}function qft(e){let t=Hft(e.DestinationType);return t.length===0?!0:t.includes("FileUploader")||t.includes("ImageUploader")}function gJ(e,t,o){if(!e)return;let r=e.trim();if(r)return r=r.replace(Gft,t),r=r.replace($ft,(n,a,s)=>{let c=jft(o,a||s);return c==null?"":String(c)}),r}var $ft,Gft,hJ=h(()=>{"use strict";d();$ft=/\$json:([^$]+)\$|\{json:([^}]+)\}/g,Gft=/\$response\$|\{response\}/g});function zn(e){let{description:t,name:o,onChange:r,placeholder:n,value:a}=e;return i(go,{id:o,name:o,description:t??""},i(Te,{value:a,onChange:r,placeholder:n}))}function wl(e){let{children:t,description:o,name:r}=e;return i(go,{id:r,name:r,description:o??""},i("div",{className:Vd("group")},t))}function Fc(e){let{checked:t,description:o,name:r,onChange:n}=e;return i(go,{id:r,tag:"label",name:r,description:o,inlineSetting:!0},i(Mi,{checked:t,onChange:n}))}function Wft(e){let{onChange:t,value:o}=e;return i("div",{className:Vd("service-grid")},VCe.map(r=>i("button",{key:r.value,type:"button",className:Vd("service-option"),"data-selected":r.value===o,onClick:()=>t(r.value)},i("span",{className:Vd("service-option-label")},r.label))))}function Kft(){let e=Vt(),{store:t}=no,[o,r]=V.useState(null),[n,a]=V.useState(()=>{let l=(t.fallbackOrder||XCe).split(/[\n,]/).map(c=>c.trim()).filter(c=>Object.values(g8).includes(c));return l.length===Bu.length&&new Set(l).size===Bu.length?l:Bu}),s=l=>{a(l),t.fallbackOrder=l.join(","),e()};return i(go,{id:"fallback-order",name:"Fallback Order",description:"Drag hosts to reorder fallback attempts. The selected host is tried first, then this order is used."},i("div",{className:Vd("fallback-order-list")},n.map((l,c)=>i("div",{key:l,className:Vd("fallback-order-item"),draggable:!0,onDragStart:u=>{r(c),u.dataTransfer.effectAllowed="move",u.dataTransfer.setData("text/plain",String(c))},onDragOver:u=>u.preventDefault(),onDrop:u=>{u.preventDefault();let p=o??Number(u.dataTransfer.getData("text/plain"));if(!Number.isInteger(p)||p===c||p<0||p>=n.length){r(null);return}let m=[...n],[g]=m.splice(p,1);m.splice(c,0,g),r(null),s(m)},onDragEnd:()=>r(null),"data-dragging":o===c},i("span",{className:Vd("fallback-order-label")},ua[l]),i("span",{className:Vd("fallback-order-handle")},"Drag")))),i("div",{className:Vd("fallback-order-actions")},i(de,{size:"small",onClick:()=>s(Bu)},"Reset to default")))}function Qft(){let e=Vt(),{store:t}=no,o=V.useRef(null),r=t.serviceType==="nest",n=t.serviceType==="ezhost",a=t.serviceType==="encryptinghost",s=t.serviceType==="s3",l=t.serviceType==="zipline",c=t.serviceType==="catbox",u=t.serviceType==="litterbox",p=t.serviceType==="gofile",m=t.serviceType==="pixelvault",g=t.serviceType==="pixeldrain",x=t.serviceType==="sharex",v=t.serviceType==="webdav",y=()=>{try{h8(t.sharexConfig||""),ne("ShareX config is valid",D.Type.SUCCESS)}catch(w){let I=w instanceof Error?w.message:"Invalid ShareX config";ne(I,D.Type.FAILURE)}},A=()=>{o.current?.click()},k=w=>{let I=w.target.files?.[0];if(!I)return;let E=new FileReader;E.onload=N=>{try{let B=String(N.target?.result||""),_=h8(B);t.sharexConfig=JSON.stringify(_,null,2),e(),ne("Imported ShareX config",D.Type.SUCCESS)}catch(B){let _=B instanceof Error?B.message:"Failed to import ShareX config";ne(_,D.Type.FAILURE)}},E.readAsText(I),w.target.value=""};return i(f,null,i(go,{id:"upload-service",name:"Upload Service",description:"Choose where FileUpload sends new files."},i(Wft,{value:t.serviceType,onChange:w=>{t.serviceType=w,e()}})),l&&i(wl,{name:"Zipline",description:"Connection details for your Zipline instance."},i(zn,{name:"Service URL",description:"The URL of your Zipline instance",value:t.serviceUrl,onChange:w=>t.serviceUrl=w,placeholder:"https://your-zipline-instance.com"}),i(zn,{name:"Zipline Token",description:"Your Zipline API authorization token",value:t.ziplineToken,onChange:w=>t.ziplineToken=w,placeholder:"Your Zipline API token"}),i(zn,{name:"Folder ID",description:"Folder ID for uploads (leave empty for no folder)",value:t.folderId,onChange:w=>t.folderId=w,placeholder:"Leave empty for no folder"})),n&&i(wl,{name:"E-Z Host",description:"Connection details for E-Z Host uploads."},i(zn,{name:"E-Z Host API Key",description:"Your E-Z Host API key",value:t.ezHostKey,onChange:w=>t.ezHostKey=w,placeholder:"Your E-Z Host API key"})),r&&i(wl,{name:"Nest",description:"Connection details for Nest uploads."},i(zn,{name:"Nest Token",description:"Your Nest API authorization token",value:t.nestToken,onChange:w=>t.nestToken=w,placeholder:"Your Nest API token"})),a&&i(wl,{name:"Encrypting.host",description:"Connection details for Encrypting.host uploads."},i(zn,{name:"Encrypting.host API Key",description:"Your Encrypting.host API key",value:t.encryptingHostKey||"",onChange:w=>t.encryptingHostKey=w,placeholder:"Your Encrypting.host API key"}),i(go,{id:"url-style",name:"URL Style",description:"How Encrypting.host should format returned links."},i(qt,{options:oTe,isSelected:w=>w===t.encryptingHostUrlStyle,select:w=>{t.encryptingHostUrlStyle=w,e()},serialize:w=>w,placeholder:"Select URL style"})),i(go,{id:"domains-json",name:"Domains JSON",description:'JSON array of domains to use, for example ["offensive"].'},i(Ea,{value:t.encryptingHostDomains||"",rows:3,placeholder:'["offensive"]',onChange:w=>t.encryptingHostDomains=w})),i(zn,{name:"Embed Title",description:"Optional title for embed style responses.",value:t.encryptingHostTitle||"",onChange:w=>t.encryptingHostTitle=w,placeholder:"Optional title"}),i(zn,{name:"Embed Color",description:"Optional color for embed style responses.",value:t.encryptingHostColor||"",onChange:w=>t.encryptingHostColor=w,placeholder:"Optional color"}),i(zn,{name:"Fake Link",description:"Optional fake link value for fakelink style responses.",value:t.encryptingHostFakelink||"",onChange:w=>t.encryptingHostFakelink=w,placeholder:"Optional fake link"})),s&&i(wl,{name:"S3-Compatible Storage",description:"Connection details and object naming for your bucket."},i(zn,{name:"S3 Endpoint URL",description:"S3-compatible endpoint (e.g. https://.r2.cloudflarestorage.com)",value:t.s3Endpoint,onChange:w=>t.s3Endpoint=w,placeholder:"https://your-endpoint.example.com"}),i(zn,{name:"Bucket Name",description:"Bucket to upload into",value:t.s3Bucket,onChange:w=>t.s3Bucket=w,placeholder:"my-bucket"}),i(zn,{name:"Region",description:"AWS region or auto for Cloudflare R2",value:t.s3Region,onChange:w=>t.s3Region=w,placeholder:"auto"}),i(zn,{name:"Access Key ID",description:"S3-compatible access key",value:t.s3AccessKeyId,onChange:w=>t.s3AccessKeyId=w,placeholder:"Your access key ID"}),i(zn,{name:"Secret Access Key",description:"S3-compatible secret key",value:t.s3SecretAccessKey,onChange:w=>t.s3SecretAccessKey=w,placeholder:"Your secret access key"}),i(zn,{name:"Session Token",description:"Optional temporary credential token",value:t.s3SessionToken,onChange:w=>t.s3SessionToken=w,placeholder:"Optional session token"}),i(zn,{name:"Public Base URL",description:"Optional public URL base to use for returned links",value:t.s3PublicUrl,onChange:w=>t.s3PublicUrl=w,placeholder:"https://cdn.example.com"}),i(zn,{name:"Object Key Prefix",description:"Optional folder/prefix inside the bucket",value:t.s3Prefix,onChange:w=>t.s3Prefix=w,placeholder:"uploads/discord"}),i(Fc,{name:"Use Path-Style Endpoint",description:"Use endpoint/bucket/key format, recommended for R2.",checked:t.s3ForcePathStyle,onChange:w=>t.s3ForcePathStyle=w})),c&&i(wl,{name:"Catbox",description:"Optional account binding for Catbox uploads."},i(zn,{name:"Catbox Userhash",description:"Your Catbox userhash for account binding, leave empty for anonymous uploads.",value:t.catboxUserhash,onChange:w=>t.catboxUserhash=w,placeholder:"Your Catbox userhash"})),u&&i(go,{id:"litterbox-expiry",name:"Litterbox Expiry",description:"How long uploads are retained"},i(qt,{options:eTe,isSelected:w=>w===t.litterboxExpiry,select:w=>{t.litterboxExpiry=w,e()},serialize:w=>w,placeholder:"Select expiry"})),p&&i(wl,{name:"GoFile",description:"Optional account binding for GoFile uploads."},i(zn,{name:"GoFile Token",description:"Optional GoFile token to upload into your account.",value:t.gofileToken,onChange:w=>t.gofileToken=w,placeholder:"Optional GoFile token"})),m&&i(wl,{name:"PixelVault",description:"Connection details for PixelVault uploads."},i(zn,{name:"PixelVault Upload Key",description:"Your PixelVault authorization key.",value:t.pixelVaultKey,onChange:w=>t.pixelVaultKey=w,placeholder:"Your PixelVault upload key"})),g&&i(wl,{name:"PixelDrain",description:"Optional account binding for PixelDrain uploads."},i(zn,{name:"PixelDrain API Key",description:"Optional PixelDrain API key for authenticated uploads. Leave empty for anonymous uploads.",value:t.pixelDrainKey,onChange:w=>t.pixelDrainKey=w,placeholder:"Your PixelDrain API key"})),x&&i(wl,{name:"ShareX Custom Uploader",description:"Paste, import, or validate a ShareX custom uploader config."},i(go,{id:"sharex-custom-uploader-config",name:"ShareX Custom Uploader Config",description:"Paste your ShareX custom uploader JSON (.sxcu/.json). DestinationType must include FileUploader or ImageUploader."},i(Ea,{value:t.sharexConfig,rows:10,placeholder:'{"RequestMethod":"POST","RequestURL":"https://example.com/api/upload","Body":"MultipartFormData"}',onChange:w=>t.sharexConfig=w})),i(go,{id:"sharex-config-actions",name:"ShareX Config Actions",description:"Import from file or validate pasted config"},i("div",{className:Vd("actions")},i(de,{size:"small",onClick:A},"Import .sxcu/.json"),i(de,{size:"small",onClick:y},"Validate")),i("input",{ref:o,type:"file",accept:".sxcu,.json,application/json,text/plain",style:{display:"none"},onChange:k}))),v&&i(wl,{name:"WebDAV",description:"Connection details for WebDAV servers (Nextcloud, Owncloud, etc.)."},i(zn,{name:"Server URL",description:"Base WebDAV URL (e.g. https://nextcloud.example.com/remote.php/dav/files/username)",value:t.webdavUrl,onChange:w=>t.webdavUrl=w,placeholder:"https://nextcloud.example.com/remote.php/dav/files/username"}),i(zn,{name:"Username",description:"WebDAV username",value:t.webdavUsername,onChange:w=>t.webdavUsername=w,placeholder:"username"}),i(zn,{name:"Password or App Token",description:"WebDAV password or app token",value:t.webdavPassword,onChange:w=>t.webdavPassword=w,placeholder:"password or app token"}),i(zn,{name:"Upload Directory",description:"Optional subdirectory on the server to upload into (e.g. uploads)",value:t.webdavDirectory,onChange:w=>t.webdavDirectory=w,placeholder:"Leave empty for root directory"}),i(go,{id:"server-type",name:"Server Type",description:"Select your WebDAV server type. Nextcloud and ownCloud will create a public share link. Generic returns the raw file URL."},i(qt,{options:[{label:"Nextcloud",value:"nextcloud",default:!0},{label:"ownCloud",value:"owncloud"},{label:"Generic WebDAV",value:"generic"}],isSelected:w=>w===t.webdavServerType,select:w=>{t.webdavServerType=w,e()},serialize:w=>w,placeholder:"Select server type"})),t.webdavServerType!=="generic"&&i(go,{id:"share-link-format",name:"Share Link Format",description:"How to return the public share link. Share Page links to a web page; Direct Download links straight to the file; Markdown Link wraps the share page in a clickable filename."},i(qt,{options:[{label:"Share Page",value:"share-page",default:!0},{label:"Direct Download",value:"direct-download"},{label:"Markdown Link",value:"markdown"}],isSelected:w=>w===t.webdavShareType,select:w=>{t.webdavShareType=w,e()},serialize:w=>w,placeholder:"Select share link format"}))),i(wl,{name:"Upload Behavior",description:"Control what FileUpload does after a host returns a URL."},i(Fc,{name:"Strip Query Parameters",description:"Strip query parameters from the uploaded file URL.",checked:t.stripQueryParams,onChange:w=>t.stripQueryParams=w}),i(Fc,{name:"Use Embed Proxy",description:"Wrap uploaded video links with an embed proxy service for better Discord previews.",checked:t.embedProxyEnabled,onChange:w=>{t.embedProxyEnabled=w,e()}}),t.embedProxyEnabled&&i(go,{id:"embed-proxy-service",name:"Embed Proxy Service",description:"Choose which embed proxy service to use for uploaded video links"},i(qt,{options:tTe,isSelected:w=>w===t.embedProxyService,select:w=>{t.embedProxyService=w,e()},serialize:w=>w,placeholder:"Select an embed proxy service"})),i(Fc,{name:"Convert APNG to GIF",description:"Convert APNG files to GIF format.",checked:t.apngToGif,onChange:w=>t.apngToGif=w}),i(Fc,{name:"Preserve Original Filename",description:"Use the original filename instead of naming uploads as upload.ext.",checked:!!t.preserveOriginalFilename,onChange:w=>t.preserveOriginalFilename=w}),i(Fc,{name:"Auto Copy URL",description:"Automatically copy the uploaded file URL to clipboard.",checked:t.autoCopy,onChange:w=>t.autoCopy=w}),i(Fc,{name:"Disable Fallback Uploaders",description:"Only use the selected uploader without trying fallback hosts.",checked:t.disableFallbacks,onChange:w=>t.disableFallbacks=w}),i(Fc,{name:"Insert URL into Chat Input",description:"After upload, insert the resulting URL into the current chat input.",checked:t.autoSend,onChange:w=>t.autoSend=w}),i(Fc,{name:"Format Inserted URL",description:"Wrap inserted URLs in angle brackets to avoid Discord preview embedding.",checked:t.autoFormat,onChange:w=>t.autoFormat=w})),i(wl,{name:"Discord Integration",description:"Choose when FileUpload takes over Discord file handling."},i(Fc,{name:"Bypass Discord Upload Button",description:"Use FileUpload when uploading through Discord's file picker.",checked:!!t.bypassDiscordUpload,onChange:w=>t.bypassDiscordUpload=w}),i(Fc,{name:"Auto Upload Pasted Files",description:"Automatically upload files from clipboard to image host when pasting in chat input.",checked:t.autoUploadPastedFiles,onChange:w=>t.autoUploadPastedFiles=w}),i(Fc,{name:"Respect Discord File Size Limit",description:"Use FileUpload only for files larger than your current Discord upload limit.",checked:t.bypassDiscordUploadOnlyOverLimit,onChange:w=>t.bypassDiscordUploadOnlyOverLimit=w}),i(zn,{name:"Allowed File Types",description:"Comma-separated list of extensions (e.g. png,jpg,gif). Leave empty to allow all.",value:t.uploadAllowedFileTypes,onChange:w=>t.uploadAllowedFileTypes=w,placeholder:"png,jpg,gif,mp4,webp"})),i(wl,{name:"Network",description:"Configure browser upload proxying and timeouts."},i(zn,{name:"CORS Proxy URL",description:"CORS proxy used for web uploads. Leave empty to use the default proxy.",value:t.corsProxyUrl||"",onChange:w=>t.corsProxyUrl=w,placeholder:"https://your-cors-proxy.example.com"}),i(go,{id:"default-cors-proxy-source",name:"Default CORS Proxy Source",description:"Source code for the default CORS proxy"},i("a",{href:"https://codeberg.org/key/corsproxy",target:"_blank",rel:"noreferrer"},"codeberg.org/key/corsproxy")),i(go,{id:"upload-timeout",name:"Upload Timeout",description:"Maximum time to wait per upload attempt before switching to fallback"},i(qt,{options:[{label:"30 seconds",value:3e4},{label:"1 minute",value:6e4},{label:"2 minutes",value:12e4},{label:"5 minutes",value:3e5,default:!0},{label:"10 minutes",value:6e5}],isSelected:w=>w===(t.uploadTimeoutMs||3e5),select:w=>{t.uploadTimeoutMs=w,e()},serialize:w=>w,placeholder:"Select timeout"}))),i(Kft,null))}var XCe,Vd,VCe,eTe,tTe,oTe,no,VP=h(()=>{"use strict";d();j();Tt();cu();rd();we();Kt();R();C();JP();XP();hJ();XCe=Bu.join(","),Vd=K("vc-file-upload-settings-"),VCe=[{label:"Zipline",value:"zipline",default:!0},{label:"E-Z Host",value:"ezhost"},{label:"Nest",value:"nest"},{label:"Encrypting.host",value:"encryptinghost"},{label:"S3-Compatible",value:"s3"},{label:"Catbox.moe",value:"catbox"},{label:"0x0.st",value:"0x0"},{label:"Litterbox",value:"litterbox"},{label:"GoFile",value:"gofile"},{label:"tmpfiles.org",value:"tmpfiles"},{label:"buzzheavier.com",value:"buzzheavier"},{label:"temp.sh",value:"tempsh"},{label:"filebin.net",value:"filebin"},{label:"PixelVault",value:"pixelvault"},{label:"PixelDrain",value:"pixeldrain"},{label:"ShareX Custom Uploader",value:"sharex"},{label:"WebDAV (Nextcloud/Owncloud)",value:"webdav"}],eTe=[{label:"1 hour",value:"1h"},{label:"12 hours",value:"12h"},{label:"24 hours",value:"24h",default:!0},{label:"72 hours",value:"72h"}],tTe=[{label:"CORS Proxy",value:"cors",default:!0},{label:"discord.nfp.is",value:"nfp"}],oTe=[{label:"Query",value:"query",default:!0},{label:"Param",value:"param"},{label:"Fake Link",value:"fakelink"},{label:"Embed",value:"embed"}],no=M({serviceType:{type:4,description:"Selected uploader service",options:VCe,hidden:!0},serviceUrl:{type:0,description:"Zipline service URL",default:"",hidden:!0},ziplineToken:{type:0,description:"Zipline auth token",default:"",hidden:!0},folderId:{type:0,description:"Optional Zipline folder ID",default:"",hidden:!0},ezHostKey:{type:0,description:"E-Z Host API key",default:"",hidden:!0},nestToken:{type:0,description:"Nest API token",default:"",hidden:!0},encryptingHostKey:{type:0,description:"Encrypting.host API key",default:"",hidden:!0},encryptingHostUrlStyle:{type:4,description:"Encrypting.host URL style",options:oTe,default:"query",hidden:!0},encryptingHostDomains:{type:0,description:"Encrypting.host domains JSON list",default:'["offensive"]',hidden:!0},encryptingHostTitle:{type:0,description:"Optional Encrypting.host embed title",default:"",hidden:!0},encryptingHostColor:{type:0,description:"Optional Encrypting.host embed color",default:"",hidden:!0},encryptingHostFakelink:{type:0,description:"Optional Encrypting.host fake link",default:"",hidden:!0},s3Endpoint:{type:0,description:"S3-compatible endpoint URL",default:"",hidden:!0},s3Bucket:{type:0,description:"S3 bucket name",default:"",hidden:!0},s3Region:{type:0,description:"S3 region (use auto for R2)",default:"auto",hidden:!0},s3AccessKeyId:{type:0,description:"S3 access key ID",default:"",hidden:!0},s3SecretAccessKey:{type:0,description:"S3 secret access key",default:"",hidden:!0},s3SessionToken:{type:0,description:"Optional S3 session token",default:"",hidden:!0},s3PublicUrl:{type:0,description:"Optional public base URL",default:"",hidden:!0},s3Prefix:{type:0,description:"Optional S3 object key prefix",default:"",hidden:!0},s3ForcePathStyle:{type:3,description:"Use path-style S3 URLs",default:!0,hidden:!0},litterboxExpiry:{type:4,description:"Litterbox retention window",options:eTe,default:"24h",hidden:!0},catboxUserhash:{type:0,description:"Catbox userhash for account binding",default:"",hidden:!0},sharexConfig:{type:0,description:"ShareX custom uploader JSON",default:"",hidden:!0},disableFallbacks:{type:3,description:"Disable fallback upload services",default:!1,hidden:!0},autoSend:{type:3,description:"Insert uploaded URL in chat input",default:!1,hidden:!0},autoFormat:{type:3,description:"Wrap inserted URL in angle brackets",default:!1,hidden:!0},bypassDiscordUpload:{type:3,description:"Bypass Discord uploads and use FileUpload instead.",default:!0,hidden:!0},bypassDiscordUploadOnlyOverLimit:{type:3,description:"Only use FileUpload if the file(s) exceed the file size limit.",default:!0,hidden:!0},gofileToken:{type:0,description:"Optional GoFile API token",default:"",hidden:!0},fallbackOrder:{type:0,description:"Fallback uploader order",default:XCe,hidden:!0},pixelVaultKey:{type:0,description:"PixelVault upload key",default:"",hidden:!0},pixelDrainKey:{type:0,description:"Optional PixelDrain API key",default:"",hidden:!0},uploadTimeoutMs:{type:1,description:"Upload timeout in milliseconds",default:3e5,hidden:!0},stripQueryParams:{type:3,description:"Strip query params from uploaded URLs",default:!1,hidden:!0},embedProxyEnabled:{type:3,description:"Proxy uploaded video links through an embed helper service.",default:!1,hidden:!0},embedProxyService:{type:4,description:"Embed helper service to wrap uploaded video links.",options:tTe,default:"cors",hidden:!0},corsProxyUrl:{type:0,description:"CORS proxy URL used for browser uploads",default:ZP,hidden:!0},apngToGif:{type:3,description:"Convert APNG uploads to GIF",default:!1,hidden:!0},preserveOriginalFilename:{type:3,description:"Preserve the original filename when uploading.",default:!0,hidden:!0},autoCopy:{type:3,description:"Auto copy upload URL",default:!0,hidden:!0},autoUploadPastedFiles:{type:3,description:"Automatically upload files from clipboard to image host when pasting in chat input.",default:!1},webdavUrl:{type:0,description:"WebDAV server URL",default:"",hidden:!0},webdavUsername:{type:0,description:"WebDAV username",default:"",hidden:!0},webdavPassword:{type:0,description:"WebDAV password or app token",default:"",hidden:!0},webdavDirectory:{type:0,description:"Optional subdirectory on the WebDAV server",default:"",hidden:!0},webdavServerType:{type:4,description:"WebDAV server type",options:[{label:"Nextcloud",value:"nextcloud",default:!0},{label:"ownCloud",value:"owncloud"},{label:"Generic WebDAV",value:"generic"}],default:"nextcloud",hidden:!0},webdavShareType:{type:4,description:"WebDAV share link format",options:[{label:"Share Page",value:"share-page",default:!0},{label:"Direct Download",value:"direct-download"},{label:"Markdown Link",value:"markdown"}],default:"share-page",hidden:!0},uploadAllowedFileTypes:{type:0,description:"Comma-separated list of allowed file extensions (e.g. png,jpg,gif,mp4). Leave empty to allow all files.",default:"",hidden:!0},settingsComponent:{type:6,description:"Settings",component:Qft}})});function rTe(e){let t=e.split(";")[0].trim().toLowerCase();return Xft[t]}function x8(e){return Vft[e?.toLowerCase()??""]||"application/octet-stream"}async function iTe(e){let t=await e.slice(0,12).arrayBuffer(),o=new Uint8Array(t);if(o[0]===71&&o[1]===73&&o[2]===70&&o[3]===56)return"gif";if(o[0]===137&&o[1]===80&&o[2]===78&&o[3]===71){let r=await e.slice(0,4096).arrayBuffer(),n=new Uint8Array(r);for(let a=0;a10?void 0:r}catch{return}}function nTe(e){let t=eM(e);return t?Jft.includes(t):!1}function xJ(e){let t=e.src||e.href||e.itemSrc||e.itemHref;if(t&&nTe(t))return t;if(e.target?.closest){let o=e.target.closest("img")||e.target.querySelector?.("img"),r=e.target.closest("video")||e.target.querySelector?.("video"),n=o?.src||r?.src;if(n&&nTe(n))return n}return null}var Zft,Yft,Jft,Xft,Vft,tM=h(()=>{"use strict";d();Zft=["png","jpg","jpeg","gif","webp","bmp","ico","tiff","avif","svg"],Yft=["mp4","webm","ogg","avi","wmv","flv","mov","mkv","m4v"],Jft=[...Zft,...Yft],Xft={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/bmp":"bmp","image/x-icon":"ico","image/tiff":"tiff","image/avif":"avif","image/svg+xml":"svg","video/mp4":"mp4","video/webm":"webm","video/ogg":"ogg","video/x-msvideo":"avi","video/x-ms-wmv":"wmv","video/x-flv":"flv","video/quicktime":"mov","video/x-matroska":"mkv"};Vft={png:"image/png",apng:"image/apng",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",ico:"image/x-icon",tiff:"image/tiff",avif:"image/avif",svg:"image/svg+xml",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",avi:"video/x-msvideo",wmv:"video/x-ms-wmv",flv:"video/x-flv",mov:"video/quicktime",mkv:"video/x-matroska"}});async function tgt(){return aTe&&My?My:oM||(oM=(async()=>{My=new Kd;let e="https://cdn.jsdelivr.net/npm/@ffmpeg/core@0.12.6/dist/esm",t=`/// /// /// const MIME_TYPE_JAVASCRIPT = "text/javascript"; const MIME_TYPE_WASM = "application/wasm"; const CORE_VERSION = "0.12.6"; const CORE_URL = \`https://cdn.jsdelivr.net/npm/@ffmpeg/core@\${CORE_VERSION}/dist/umd/ffmpeg-core.js\`; var FFMessageType; (function(FFMessageType) { FFMessageType["LOAD"] = "LOAD"; FFMessageType["EXEC"] = "EXEC"; FFMessageType["WRITE_FILE"] = "WRITE_FILE"; FFMessageType["READ_FILE"] = "READ_FILE"; FFMessageType["DELETE_FILE"] = "DELETE_FILE"; FFMessageType["RENAME"] = "RENAME"; FFMessageType["CREATE_DIR"] = "CREATE_DIR"; FFMessageType["LIST_DIR"] = "LIST_DIR"; FFMessageType["DELETE_DIR"] = "DELETE_DIR"; FFMessageType["ERROR"] = "ERROR"; FFMessageType["DOWNLOAD"] = "DOWNLOAD"; FFMessageType["PROGRESS"] = "PROGRESS"; FFMessageType["LOG"] = "LOG"; FFMessageType["MOUNT"] = "MOUNT"; FFMessageType["UNMOUNT"] = "UNMOUNT"; })(FFMessageType || (FFMessageType = {})); const ERROR_UNKNOWN_MESSAGE_TYPE = new Error("unknown message type"); const ERROR_NOT_LOADED = new Error("ffmpeg is not loaded, call \`await ffmpeg.load()\` first"); const ERROR_TERMINATED = new Error("called FFmpeg.terminate()"); const ERROR_IMPORT_FAILURE = new Error("failed to import ffmpeg-core.js"); let ffmpeg; const load = async ({ coreURL: _coreURL, wasmURL: _wasmURL, workerURL: _workerURL, }) => { const first = !ffmpeg; try { if (!_coreURL) _coreURL = CORE_URL; // when web worker type is \`classic\`. importScripts(_coreURL); } catch { if (!_coreURL) _coreURL = CORE_URL.replace('/umd/', '/esm/'); // when web worker type is \`module\`. self.createFFmpegCore = (await import( /* webpackIgnore: true */ /* @vite-ignore */ _coreURL)).default; if (!self.createFFmpegCore) { throw ERROR_IMPORT_FAILURE; } } const coreURL = _coreURL; const wasmURL = _wasmURL ? _wasmURL : _coreURL.replace(/.js$/g, ".wasm"); const workerURL = _workerURL ? _workerURL : _coreURL.replace(/.js$/g, ".worker.js"); ffmpeg = await self.createFFmpegCore({ // Fix \`Overload resolution failed.\` when using multi-threaded ffmpeg-core. // Encoded wasmURL and workerURL in the URL as a hack to fix locateFile issue. mainScriptUrlOrBlob: \`\${coreURL}#\${btoa(JSON.stringify({ wasmURL, workerURL }))}\`, }); ffmpeg.setLogger((data) => self.postMessage({ type: FFMessageType.LOG, data })); ffmpeg.setProgress((data) => self.postMessage({ type: FFMessageType.PROGRESS, data, })); return first; }; const exec = ({ args, timeout = -1 }) => { ffmpeg.setTimeout(timeout); ffmpeg.exec(...args); const ret = ffmpeg.ret; ffmpeg.reset(); return ret; }; const writeFile = ({ path, data }) => { ffmpeg.FS.writeFile(path, data); return true; }; const readFile = ({ path, encoding }) => ffmpeg.FS.readFile(path, { encoding }); // TODO: check if deletion works. const deleteFile = ({ path }) => { ffmpeg.FS.unlink(path); return true; }; const rename = ({ oldPath, newPath }) => { ffmpeg.FS.rename(oldPath, newPath); return true; }; // TODO: check if creation works. const createDir = ({ path }) => { ffmpeg.FS.mkdir(path); return true; }; const listDir = ({ path }) => { const names = ffmpeg.FS.readdir(path); const nodes = []; for (const name of names) { const stat = ffmpeg.FS.stat(\`\${path}/\${name}\`); const isDir = ffmpeg.FS.isDir(stat.mode); nodes.push({ name, isDir }); } return nodes; }; // TODO: check if deletion works. const deleteDir = ({ path }) => { ffmpeg.FS.rmdir(path); return true; }; const mount = ({ fsType, options, mountPoint }) => { const str = fsType; const fs = ffmpeg.FS.filesystems[str]; if (!fs) return false; ffmpeg.FS.mount(fs, options, mountPoint); return true; }; const unmount = ({ mountPoint }) => { ffmpeg.FS.unmount(mountPoint); return true; }; self.onmessage = async ({ data: { id, type, data: _data }, }) => { const trans = []; let data; try { if (type !== FFMessageType.LOAD && !ffmpeg) throw ERROR_NOT_LOADED; // eslint-disable-line switch (type) { case FFMessageType.LOAD: data = await load(_data); break; case FFMessageType.EXEC: data = exec(_data); break; case FFMessageType.WRITE_FILE: data = writeFile(_data); break; case FFMessageType.READ_FILE: data = readFile(_data); break; case FFMessageType.DELETE_FILE: data = deleteFile(_data); break; case FFMessageType.RENAME: data = rename(_data); break; case FFMessageType.CREATE_DIR: data = createDir(_data); break; case FFMessageType.LIST_DIR: data = listDir(_data); break; case FFMessageType.DELETE_DIR: data = deleteDir(_data); break; case FFMessageType.MOUNT: data = mount(_data); break; case FFMessageType.UNMOUNT: data = unmount(_data); break; default: throw ERROR_UNKNOWN_MESSAGE_TYPE; } } catch (e) { self.postMessage({ id, type: FFMessageType.ERROR, data: e.toString(), }); return; } if (data instanceof Uint8Array) { trans.push(data.buffer); } self.postMessage({ id, type, data }, trans); }; `,o=new Blob([new TextEncoder().encode(t)],{type:"text/javascript"}),r=URL.createObjectURL(o);return await My.load({coreURL:`${e}/ffmpeg-core.js`,wasmURL:`${e}/ffmpeg-core.wasm`,workerURL:`${e}/ffmpeg-core.worker.js`,classWorkerURL:r}),aTe=!0,console.log("[FileUpload] FFmpeg loaded"),My})(),oM)}async function sTe(e){let t=egt++,o=`input_${t}.png`,r=`output_${t}.gif`;try{let n=await tgt(),a=await e.arrayBuffer();await n.writeFile(o,new Uint8Array(a)),await n.exec(["-i",o,"-filter_complex","split[s0][s1];[s0]palettegen=stats_mode=single:transparency_color=000000[p];[s1][p]paletteuse=new=1:alpha_threshold=10",r]);let s=await n.readFile(r);return typeof s=="string"?(console.error("[FileUpload] FFmpeg returned string instead of Uint8Array"),null):new Blob([new Uint8Array(s)],{type:"image/gif"})}catch(n){return console.error("[FileUpload] APNG to GIF conversion error:",n),null}finally{try{let n=My;n&&(await n.deleteFile(o),await n.deleteFile(r))}catch{}}}var My,aTe,oM,egt,lTe=h(()=>{"use strict";d();G5();My=null,aTe=!1,oM=null,egt=0});function vJ(e){return typeof e=="string"?ogt.encode(e).buffer:e instanceof Uint8Array?new Uint8Array(e).buffer:e}function uTe(e){return Array.from(new Uint8Array(e),t=>t.toString(16).padStart(2,"0")).join("")}function dTe(e){return encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`)}function nM(...e){let t=e.filter(Boolean).flatMap(o=>o.split("/")).filter(Boolean).map(dTe).join("/");return t?`/${t}`:"/"}function ngt(e){let t=e.getUTCFullYear(),o=String(e.getUTCMonth()+1).padStart(2,"0"),r=String(e.getUTCDate()).padStart(2,"0"),n=String(e.getUTCHours()).padStart(2,"0"),a=String(e.getUTCMinutes()).padStart(2,"0"),s=String(e.getUTCSeconds()).padStart(2,"0");return{amzDate:`${t}${o}${r}T${n}${a}${s}Z`,dateStamp:`${t}${o}${r}`}}async function cTe(e){return uTe(await crypto.subtle.digest("SHA-256",vJ(e)))}async function v8(e,t){let o=await crypto.subtle.importKey("raw",vJ(e),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return await crypto.subtle.sign("HMAC",o,vJ(t))}function rgt(e=16){let t=new Uint8Array(e);return crypto.getRandomValues(t),Array.from(t,o=>o.toString(16).padStart(2,"0")).join("")}function pTe(){let{s3Endpoint:e,s3Bucket:t,s3Region:o,s3AccessKeyId:r,s3SecretAccessKey:n}=no.store;return!!(e&&t&&o&&r&&n)}async function mTe(e,t,o,r){let{s3Endpoint:n,s3Bucket:a,s3Region:s="auto",s3AccessKeyId:l,s3SecretAccessKey:c,s3SessionToken:u,s3PublicUrl:p,s3Prefix:m,s3ForcePathStyle:g=!0}=no.store;if(!n||!a||!s||!l||!c)throw new Error("S3 endpoint, bucket, region, access key ID, and secret key are required");let x=new URL(n);if(!/^https?:$/.test(x.protocol))throw new Error("S3 endpoint must be a valid HTTP(S) URL");let v=t.includes(".")?t.slice(t.lastIndexOf(".")):"",y=(m||"").split("/").filter(Boolean),A=`${Date.now()}-${rgt(8)}${v}`,k=[...y,A].join("/"),w=k.split("/").filter(Boolean).map(dTe).join("/"),I=g?x.host:`${a}.${x.host}`,E=g?nM(x.pathname,a,k):nM(x.pathname,k),N=new URL(x.toString());N.host=I,N.pathname=E,N.search="";let B=new Date,{amzDate:_,dateStamp:q}=ngt(B),$=await cTe(await e.arrayBuffer()),re={"content-type":e.type||"application/octet-stream",host:I,"x-amz-content-sha256":$,"x-amz-date":_};u&&(re["x-amz-security-token"]=u);let Z=Object.entries(re).sort(([dt],[pt])=>dt.localeCompare(pt)),ee=Z.map(([dt])=>dt).join(";"),ae=Z.map(([dt,pt])=>`${dt}:${pt.trim()} `).join(""),ge=["PUT",E,"",ae,ee,$].join(` `),ke=`${q}/${s}/s3/aws4_request`,Ee=["AWS4-HMAC-SHA256",_,ke,await cTe(ge)].join(` `),Ue=await v8(`AWS4${c}`,q),it=await v8(Ue,s),se=await v8(it,"s3"),te=await v8(se,"aws4_request"),xe=uTe(await v8(te,Ee)),me={Authorization:`AWS4-HMAC-SHA256 Credential=${l}/${ke}, SignedHeaders=${ee}, Signature=${xe}`,"Content-Type":re["content-type"],"x-amz-content-sha256":$,"x-amz-date":_};if(u&&(me["x-amz-security-token"]=u),o){let dt=await e.arrayBuffer(),pt=await o.uploadToS3(dt,N.toString(),me);if(!pt.success)throw new Error(pt.error||"Upload failed")}else{let dt=await r(YP(N.toString(),no.store.corsProxyUrl),{method:"PUT",headers:me,body:e});if(!dt.ok){let pt=await dt.text();throw new Error(`Upload failed: ${dt.status} ${pt}`)}}return p?`${p.replace(/\/+$/,"")}/${w}`:`${(g?`${x.origin}${nM(x.pathname,a)}`:`${x.protocol}//${I}${nM(x.pathname)}`).replace(/\/+$/,"")}/${w}`}var ogt,fTe=h(()=>{"use strict";d();JP();VP();ogt=new TextEncoder});function rM(e){let t=fJ(no.store.corsProxyUrl);return e.startsWith(`${t}?url=`)?e:YP(e,t)}function SJ(e){if(Cg)return!0;if(!(e instanceof Error))return!1;let t=e.message.toLowerCase();return t.includes("cancelled")||t.includes("canceled")||t.includes("aborted")||t.includes("aborterror")}function igt(){let t=(no.store.fallbackOrder||Bu.join(",")).split(/[\n,]/).map(o=>o.trim()).filter(o=>Object.values(g8).includes(o));return t.length===Bu.length&&new Set(t).size===Bu.length?t:Bu}function xTe(){for(let e of yJ)e()}function Us(e){kg={...kg,...e},xTe()}function vTe(){kg={...hTe},xTe()}function yTe(e){return yJ.add(e),()=>yJ.delete(e)}function wJ(){return kg}function bTe(){ex&&(Cg=!0,Ny?.abort(),By?.abort(),Us({phase:"cancelled",status:"Upload cancelled.",canCancel:!1,percent:0}))}function STe(){let e=no.store.uploadTimeoutMs;return!Number.isFinite(e)||!e?3e5:Math.max(5e3,e)}async function agt(e,t){let o=new AbortController;Ny=o;let r=setTimeout(()=>o.abort(),STe()),n=rM(e);try{return await fetch(n,{...t,signal:o.signal})}catch(a){throw Cg||o.signal.aborted?new Error(Cg?"Upload cancelled by user":"Upload timed out"):a}finally{clearTimeout(r),Ny===o&&(Ny=null)}}function sgt(e){return e?e instanceof Headers?Array.from(e.entries()):Array.isArray(e)?e.map(([t,o])=>[t,o]):Object.entries(e):[]}function lgt(e){if(!e.lengthComputable||e.total<=0){Us({status:kg.currentServiceLabel?`Uploading via ${kg.currentServiceLabel}...`:"Uploading..."});return}let t=Math.round(Math.max(0,Math.min(100,e.loaded/e.total*100)));Us({phase:"uploading",percent:t,transferredBytes:e.loaded,totalBytes:e.total,status:kg.currentServiceLabel?`Uploading via ${kg.currentServiceLabel}...`:"Uploading..."})}async function qa(e,t){let o=rM(e);return new Promise((r,n)=>{let a=new XMLHttpRequest;By=a;let s=setTimeout(()=>a.abort(),STe());a.open(t.method||"GET",o);for(let[c,u]of sgt(t.headers))a.setRequestHeader(c,u);a.upload.onprogress=lgt,a.onload=()=>r(new bJ(a)),a.onerror=()=>n(new Error("Upload failed")),a.onabort=()=>n(new Error(Cg?"Upload cancelled by user":"Upload timed out")),a.onloadend=()=>{clearTimeout(s),a.upload.onprogress=null,By===a&&(By=null)};let{body:l}=t;a.send(l instanceof ReadableStream?null:l)})}function gTe(e,t){return String(e).replace(/\$filename\$/g,t).replace(/\{filename\}/g,t)}function wTe(){let e=no.store.sharexConfig||"";if(!e.trim())throw new Error("ShareX config is required");return h8(e)}async function cgt(e,t){let o=wTe(),r=(o.RequestMethod||"POST").toUpperCase(),n=o.RequestURL.trim(),a=(o.Body||"MultipartFormData").toLowerCase(),s=new Headers;for(let[y,A]of Object.entries(o.Headers||{}))s.set(y,gTe(A,t));let l=()=>{let y={};for(let[A,k]of Object.entries(o.Arguments||{}))y[A]=gTe(k,t);return y},c;if(a==="multipartformdata"||a==="formdata"){s.delete("content-type");let y=new FormData,A=o.FileFormName||"file";y.append(A,e,t);let k=l();for(let[w,I]of Object.entries(k))y.append(w,I);c=y}else if(a==="binary")c=e;else if(a==="json"){s.has("content-type")||s.set("content-type","application/json");let y=l();c=JSON.stringify(y)}else throw new Error(`Unsupported ShareX Body type: ${o.Body||"unknown"}`);let u=await qa(n,{method:r,headers:s,body:c}),p=await u.text(),m=null;try{m=p?JSON.parse(p):null}catch{m=null}if(!u.ok){let y=gJ(o.ErrorMessage,p,m);throw new Error(y||`Upload failed: ${u.status} ${u.statusText}`)}let g=gJ(o.URL,p,m)?.trim(),x=typeof m=="object"&&m&&"url"in m?String(m.url||""):p.trim(),v=g||x;if(!v)throw new Error("No URL returned from ShareX uploader");return v}async function ugt(e,t){let{serviceUrl:o,ziplineToken:r,folderId:n}=no.store;if(!o||!r)throw new Error("Service URL and auth token are required");let a=o.replace(/\/+$/,""),s=new FormData;s.append("file",e,t);let l={Authorization:r};n&&(l["x-zipline-folder"]=n);let c=await qa(`${a}/api/upload`,{method:"POST",headers:l,body:s}),u=c.headers.get("content-type")||"";if(!c.ok){let m=await c.text();throw new Error(`Upload failed: ${c.status} ${m}`)}if(!u.includes("application/json"))throw new Error("Server returned invalid response (not JSON)");let p=await c.json();if(p.files&&p.files.length>0&&p.files[0].url)return p.files[0].url;throw new Error("No URL returned from upload")}async function dgt(e,t){let{nestToken:o}=no.store;if(!o)throw new Error("Auth token is required");if(qo){let s=await e.arrayBuffer(),l=await qo.uploadToNest(s,t,o);if(!l.success)throw new Error(l.error||"Upload failed");if(!l.url)throw new Error("No URL returned from upload");return l.url}let r=new FormData;r.append("file",e,t);let n=await qa("https://nest.rip/api/files/upload",{method:"POST",headers:{Authorization:o},body:r});if(!n.ok){let s=await n.text();throw new Error(`Upload failed: ${n.status} ${s}`)}let a=await n.json();if(a.fileURL)return a.fileURL;throw new Error("No URL returned from upload")}function pgt(e){let t;try{t=JSON.parse(e)}catch{throw new Error("Encrypting.host domains must be a JSON array of non-empty strings")}if(!Array.isArray(t)||t.some(o=>typeof o!="string"||!o.trim()))throw new Error("Encrypting.host domains must be a JSON array of non-empty strings");return t.map(o=>o.trim())}function mgt(){let{encryptingHostKey:e,encryptingHostUrlStyle:t,encryptingHostDomains:o,encryptingHostTitle:r,encryptingHostColor:n,encryptingHostFakelink:a}=no.store,s=e?.trim()||"";if(!s)throw new Error("Encrypting.host API key is required");let l=t||"query";if(l!=="query"&&l!=="param"&&l!=="fakelink"&&l!=="embed")throw new Error("Invalid Encrypting.host URL style");let c=o?.trim()||'["offensive"]';return{key:s,urlStyle:l,domains:pgt(c),title:r?.trim()||"",color:n?.trim()||"",fakelink:a?.trim()||""}}async function fgt(e,t){let o=mgt(),r=new FormData;r.append("password",ATe(16)),r.append("userKey",o.key),r.append("urlStyle",o.urlStyle),r.append("domains",JSON.stringify(o.domains)),o.title&&r.append("title",o.title),o.color&&r.append("color",o.color),o.fakelink&&r.append("fakelink",o.fakelink),r.append("file",e,t);let n=await qa("https://encrypting.host/upload",{method:"POST",body:r}),a=await n.text(),s=null;try{s=a?JSON.parse(a):null}catch{s=null}if(!n.ok)throw new Error(`Upload failed: ${n.status} ${a}`);let l=s?.url?.trim()||"",c=a.trim().startsWith("http")?a.trim():"",u=l||c;if(!u)throw new Error("No URL returned from upload");return u}function tx(){let{serviceType:e,serviceUrl:t,ziplineToken:o,nestToken:r}=no.store;switch(e){case"nest":return!!r;case"ezhost":return!!no.store.ezHostKey;case"encryptinghost":return!!no.store.encryptingHostKey;case"s3":return pTe();case"catbox":return!0;case"0x0":return!!qo;case"litterbox":case"gofile":case"tmpfiles":case"buzzheavier":case"tempsh":case"filebin":case"pixeldrain":return!0;case"pixelvault":return!!no.store.pixelVaultKey;case"webdav":return!!no.store.webdavUrl;case"sharex":try{return wTe(),!0}catch{return!1}case"zipline":default:return!!(t&&o)}}async function ggt(e,t){let{ezHostKey:o}=no.store;if(!o)throw new Error("E-Z Host API key is required");if(qo){let c=await e.arrayBuffer(),u=await qo.uploadToEzHost(c,t,o);if(!u.success)throw new Error(u.error||"Upload failed");if(!u.url)throw new Error("No URL returned from upload");return u.url}let r=new FormData;r.append("file",e,t);let a=await qa("https://api.e-z.host/files",{method:"POST",headers:{key:o},body:r});if(!a.ok){let c=await a.text();throw new Error(`Upload failed: ${a.status} ${c}`)}let s=await a.json();if(!s||!s.success)throw new Error(s?.error||"Upload failed");let l=s.imageUrl||s.rawUrl;if(!l)throw new Error("No URL returned from upload");return l}async function hgt(e,t){let{catboxUserhash:o}=no.store;if(qo){let s=await qo.uploadToCatbox(await e.arrayBuffer(),t,o||void 0);if(!s.success||!s.url)throw new Error(s.error||"No URL returned from upload");return s.url}let r=new FormData;r.append("reqtype","fileupload"),o&&r.append("userhash",o),r.append("fileToUpload",e,t);let n=await qa("https://catbox.moe/user/api.php",{method:"POST",body:r});if(!n.ok)throw new Error(`Upload failed: ${n.status} ${await n.text()}`);let a=(await n.text()).trim();if(!a)throw new Error("No URL returned from upload");return a}async function xgt(e,t){if(!qo)throw new Error("0x0.st uploads are only supported on the desktop client");let o=await e.arrayBuffer(),r=await qo.uploadTo0x0(o,t);if(!r.success)throw new Error(r.error||"Upload failed");if(!r.url)throw new Error("No URL returned from upload");return r.url}async function vgt(e,t){let o=no.store.litterboxExpiry||"24h";if(qo){let s=await qo.uploadToLitterbox(await e.arrayBuffer(),t,o);if(!s.success||!s.url)throw new Error(s.error||"No URL returned from upload");return s.url}let r=new FormData;r.append("reqtype","fileupload"),r.append("time",o),r.append("fileToUpload",e,t);let n=await qa("https://litterbox.catbox.moe/resources/internals/api.php",{method:"POST",body:r});if(!n.ok)throw new Error(`Upload failed: ${n.status} ${await n.text()}`);let a=(await n.text()).trim();if(!a)throw new Error("No URL returned from upload");return a}async function ygt(e,t){let{gofileToken:o}=no.store;if(qo){let c=await qo.uploadToGofile(await e.arrayBuffer(),t,o||void 0);if(!c.success||!c.url)throw new Error(c.error||"No URL returned from upload");return c.url}let r=new FormData;o?.trim()&&r.append("token",o.trim()),r.append("file",e,t);let a=await qa("https://upload.gofile.io/uploadfile",{method:"POST",body:r});if(!a.ok)throw new Error(`Upload failed: ${a.status} ${await a.text()}`);let s=await a.json();if(s.status!=="ok")throw new Error(s.error||"Upload failed");let l=s.data?.downloadPage||(s.data?.code?`https://gofile.io/d/${s.data.code}`:"");if(!l)throw new Error("No URL returned from upload");return l}async function bgt(e,t){if(qo){let l=await qo.uploadToTmpfiles(await e.arrayBuffer(),t);if(!l.success||!l.url)throw new Error(l.error||"No URL returned from upload");return l.url}let o=new FormData;o.append("file",e,t);let n=await qa("https://tmpfiles.org/api/v1/upload",{method:"POST",body:o});if(!n.ok)throw new Error(`Upload failed: ${n.status} ${await n.text()}`);let a=await n.json(),s=a.data?.url;if(!s||a.status!=="success")throw new Error("No URL returned from upload");return s.includes("tmpfiles.org/")&&!s.includes("/dl/")?s.replace(/tmpfiles\.org\/(\d+)/,"tmpfiles.org/dl/$1"):s}async function Sgt(e,t){if(qo){let s=await qo.uploadToBuzzheavier(await e.arrayBuffer(),t);if(!s.success||!s.url)throw new Error(s.error||"No URL returned from upload");return s.url}let o=`https://w.buzzheavier.com/${encodeURIComponent(t)}`,r=await qa(o,{method:"PUT",body:e}),n=await r.text();if(!r.ok)throw new Error(`Upload failed: ${r.status} ${n}`);try{let s=JSON.parse(n),l=s.data?.id;if(s.code===201&&l)return`https://buzzheavier.com/${l}`}catch{}let a=n.trim();if(!a)throw new Error("No URL returned from upload");return a}async function wgt(e,t){if(qo){let s=await qo.uploadToTempSh(await e.arrayBuffer(),t);if(!s.success||!s.url)throw new Error(s.error||"No URL returned from upload");return s.url}let o=new FormData;o.append("file",e,t);let n=await qa("https://temp.sh/upload",{method:"POST",body:o});if(!n.ok)throw new Error(`Upload failed: ${n.status} ${await n.text()}`);let a=(await n.text()).trim();if(!a)throw new Error("No URL returned from upload");return a}function ATe(e=12){let t=new Uint8Array(e);return crypto.getRandomValues(t),Array.from(t,o=>o.toString(16).padStart(2,"0")).join("")}async function Agt(e,t){if(qo){let s=await qo.uploadToFilebin(await e.arrayBuffer(),t);if(!s.success||!s.url)throw new Error(s.error||"No URL returned from upload");return s.url}let o=ATe(6),r=`https://filebin.net/${o}/${encodeURIComponent(t)}`,n=new FormData;n.append("file",e,t);let a=await qa(r,{method:"POST",body:n});if(!a.ok)throw new Error(`Upload failed: ${a.status} ${await a.text()}`);return`https://filebin.net/${o}/${encodeURIComponent(t)}`}async function kgt(e,t){let{pixelVaultKey:o}=no.store;if(!o?.trim())throw new Error("PixelVault upload key is required");if(qo){let c=await qo.uploadToPixelVault(await e.arrayBuffer(),t,o.trim());if(!c.success)throw new Error(c.error||"Upload failed");if(!c.url)throw new Error("No URL returned from upload");return c.url}let r=new FormData;r.append("file",e,t);let n=await qa("https://pixelvault.co/",{method:"POST",headers:{Authorization:o.trim()},body:r}),a=await n.text(),s=null;try{s=a?JSON.parse(a):null}catch{s=null}if(!n.ok)throw new Error(`Upload failed: ${n.status} ${a}`);let l=s?.resource||s?.url||a.trim();if(!l)throw new Error("No URL returned from upload");return l}async function Cgt(e,t){let{pixelDrainKey:o}=no.store;if(qo){let l=await qo.uploadToPixelDrain(await e.arrayBuffer(),t,o?.trim()||void 0);if(!l.success||!l.url)throw new Error(l.error||"No URL returned from upload");return l.url}let r={};o?.trim()&&(r.Authorization=`Basic ${btoa(`:${o.trim()}`)}`);let n=await qa(`https://pixeldrain.com/api/file/${encodeURIComponent(t)}`,{method:"PUT",headers:r,body:e}),a=await n.text(),s=null;try{s=a?JSON.parse(a):null}catch{s=null}if(!n.ok)throw new Error(s?.message||`Upload failed: ${n.status} ${a}`);if(!s?.id)throw new Error(s?.message||"No URL returned from upload");return`https://pixeldrain.com/u/${s.id}`}function kTe(){let{webdavUsername:e,webdavPassword:t}=no.store;return e?.trim()&&t?.trim()?`Basic ${btoa(`${e.trim()}:${t.trim()}`)}`:null}async function Tgt(e,t,o){let{webdavServerType:r,webdavShareType:n}=no.store,s=`${t}/ocs/${r==="owncloud"?"v1":"v2"}.php/apps/files_sharing/api/v1/shares?format=json`,l=kTe(),c={"OCS-APIRequest":"true","Content-Type":"application/x-www-form-urlencoded"};l&&(c.Authorization=l);let u=new URLSearchParams({path:`/${e}`,shareType:"3",permissions:"1"}).toString(),p,m;if(qo){let y=await qo.createWebdavShare(s,c,u);if(!y.success)throw new Error(y.error||"Failed to create public share");if(p=y.url||"",!p)throw new Error("No share token returned from server")}else{let y=await qa(s,{method:"POST",headers:c,body:u}),A=await y.text();if(!y.ok)throw new Error(`Failed to create public share: ${y.status} ${A}`);let k;try{k=JSON.parse(A)}catch{throw new Error(`Failed to parse share response: ${A.slice(0,200)}`)}if(p=k?.ocs?.data?.token??"",!p){let w=k?.ocs?.meta,I=w?`${w.status||"unknown"} (${w.statuscode||"?"})`:"no token in response";throw new Error(`Failed to create public share: ${I}`)}m=k.ocs?.data?.url}let g=n||"share-page",x=m||`${t}/s/${p}`,v=r==="owncloud"?`${t}/remote.php/dav/public-files/${p}`:`${t}/public.php/dav/files/${p}`;return g==="direct-download"?v:g==="markdown"?`[${o}](${v})`:x}async function Igt(e,t){let{webdavUrl:o,webdavServerType:r,webdavDirectory:n}=no.store;if(!o)throw new Error("WebDAV server URL is required");let a=kTe(),s=o.replace(/\/+$/,""),l=(n||"").replace(/^\/+|\/+$/g,""),c=l?`${l}/${t}`:t,u=l?l.split("/").map(encodeURIComponent).join("/")+"/":"",p=`${s}/${u}${encodeURIComponent(t)}`,m=r||"nextcloud",g={"Content-Type":e.type||"application/octet-stream"};if(a&&(g.Authorization=a),qo){let v=await e.arrayBuffer(),y=await qo.uploadToWebdav(v,p,g);if(!y.success)throw new Error(y.error||"Upload failed")}else{let v=await qa(p,{method:"PUT",headers:g,body:e});if(!v.ok){let y=await v.text();throw new Error(`Upload failed: ${v.status} ${y}`)}}if(m==="generic")return p;let x;try{x=new URL(o).origin}catch{throw new Error("Invalid WebDAV server URL")}return await Tgt(c,x,t)}async function Egt(e,t,o){switch(e){case"zipline":return ugt(t,o);case"nest":return dgt(t,o);case"ezhost":return ggt(t,o);case"encryptinghost":return fgt(t,o);case"s3":return mTe(t,o,qo,qa);case"catbox":return hgt(t,o);case"0x0":return xgt(t,o);case"litterbox":return vgt(t,o);case"sharex":return cgt(t,o);case"gofile":return ygt(t,o);case"tmpfiles":return bgt(t,o);case"buzzheavier":return Sgt(t,o);case"tempsh":return wgt(t,o);case"filebin":return Agt(t,o);case"pixelvault":return kgt(t,o);case"pixeldrain":return Cgt(t,o);case"webdav":return Igt(t,o);default:throw new Error("Unknown service type")}}function Pgt(){let e=no.store.embedProxyService;return e==="nfp"?e:"cors"}function Mgt(e){let t=eM(e)?.toLowerCase();return t?x8(t).startsWith("video/"):!1}function Ngt(e){if(!no.store.embedProxyEnabled)return e;let t=Pgt();if(!Mgt(e))return e;switch(t){case"cors":return rM(e);case"nfp":return`https://discord.nfp.is/?v=${encodeURIComponent(e)}`;default:return rM(e)}}function CTe(e){return e.toLowerCase().endsWith(".exe")}function TTe(e,t){return!(e==="0x0"&&!qo||CTe(t)&&Dgt.has(e))}function Bgt(e,t){return TTe(e,t)?e:CTe(t)?"gofile":!qo&&e==="0x0"?"catbox":e}function Rgt(e,t){let o=!!no.store.disableFallbacks,r=Bgt(e,t),n=[r];if(o)return n;for(let a of igt())a!==r&&TTe(a,t)&&n.push(a);return n}function Lgt(e){if(!no.store.stripQueryParams)return e;try{let t=new URL(e);return t.search="",t.href}catch{return e}}function Ogt(){let e=no.store.uploadAllowedFileTypes?.trim();if(!e)return null;let t=e.split(/[\s,;]+/).map(o=>o.trim().toLowerCase()).filter(Boolean);return t.length>0?new Set(t):null}function ox(e){let t=Ogt();if(!t)return!0;let o=e.name.lastIndexOf(".");if(o<1||o===e.name.length-1)return!1;let r=e.name.slice(o+1).toLowerCase();return t.has(r)}function Fgt(e){let t=e.lastIndexOf(".");if(t<1||t===e.length-1)return;let o=e.slice(t+1).toLowerCase();return o.length<=10?o:void 0}async function _gt(e,t){if(no.store.autoCopy){if(!e||!e.trim()){ne("Upload successful, but no URL was available to copy",D.Type.MESSAGE);return}try{await po(e),ne("Upload successful, URL copied to clipboard",D.Type.SUCCESS)}catch(n){Ry.warn("Upload succeeded but clipboard copy failed",n),ne("Upload successful, but failed to copy URL",D.Type.MESSAGE)}}else ne("Upload successful",D.Type.SUCCESS);let o=t||!!no.store.autoSend,r=!!no.store.autoFormat;o&&tr(r?`<${e}>`:e)}async function Ugt(e,t,o){let r=Rgt(o,t),n=[],a="Unknown error";Us({phase:"uploading",fileName:t,totalAttempts:r.length,attempt:1,percent:5,transferredBytes:0,totalBytes:e.size,status:`Starting upload via ${ua[r[0]]}...`,currentService:r[0],currentServiceLabel:ua[r[0]],canCancel:!0});for(let s of r){if(Cg)throw new Error("Upload cancelled by user");let l=n.length+1;Us({phase:l===1?"uploading":"retrying",attempt:l,currentService:s,currentServiceLabel:ua[s],transferredBytes:0,totalBytes:e.size,percent:0,status:l===1?`Uploading via ${ua[s]}...`:`Retrying with ${ua[s]} (${l}/${r.length})...`});try{let c=await Egt(s,e,t);return n.length&&ne(`Upload succeeded with ${ua[s]} after fallback`,D.Type.SUCCESS),Us({phase:"success",percent:100,attempt:l,currentService:s,currentServiceLabel:ua[s],status:`Uploaded successfully via ${ua[s]}.`,canCancel:!1}),c}catch(c){if(SJ(c))throw c;let u=c instanceof Error?c.message:"Unknown error";n.push(ua[s]),a=u,Ry.warn(`Upload failed for ${ua[s]}: ${u}`),Us({phase:"retrying",attempt:l,currentService:s,currentServiceLabel:ua[s],status:`${ua[s]} failed: ${u}`,percent:Math.min(95,10+Math.round(l/r.length*80))})}}throw Us({phase:"failed",status:`All upload services failed. Last error: ${a}`,canCancel:!1,percent:0}),new Error(`All upload services failed. Last error: ${a}. Tried: ${n.join(", ")}`)}async function zgt(e,t){let o="";if(e instanceof File&&e.name)o=e.name;else if(t&&URL.canParse(t)){let c=new URL(t).pathname.split("/").pop();c&&(o=decodeURIComponent(c))}let r=t?eM(t):void 0,n=await iTe(e)||rTe(e.type)||Fgt(o)||r||"bin";if(n==="apng"&&no.store.apngToGif){let c=await sTe(e);c?(e=c,n="gif"):ne("APNG to GIF conversion failed, uploading as APNG",D.Type.FAILURE)}let a=x8(n),{preserveOriginalFilename:s}=no.store,l=`upload.${n}`;if(s&&o){let c=o.lastIndexOf(".");l=`${o.slice(0,c<0?void 0:c)}.${n}`}return{blob:new Blob([e],{type:a}),filename:l}}async function ITe(e,t,o){let r=no.store.serviceType,{blob:n,filename:a}=await zgt(e,t);Us({fileName:a,status:"File ready, starting upload...",percent:4});let s=await Ugt(n,a,r),l=Ngt(Lgt(s));return await _gt(l,o),l}async function AJ(e){if(ex){ne("Upload already in progress",D.Type.MESSAGE);return}if(!tx()){ne("Please configure FileUpload settings first",D.Type.FAILURE);return}ex=!0,Cg=!1,Us({phase:"preparing",fileName:"",currentService:null,currentServiceLabel:"",attempt:0,totalAttempts:0,percent:1,status:"Preparing upload...",canCancel:!0});try{let t=e;e.includes("/stickers/")&&e.includes("passthrough=false")&&(t=e.replace("passthrough=false","passthrough=true"));let o,r="";if(qo){let n=await qo.fetchFile(t);if(n.success&&n.data)r=n.contentType||"",o=new Blob([n.data],{type:r});else{let a=await fetch(t);if(!a.ok)throw new Error(`Failed to fetch file: ${a.status}`);r=a.headers.get("content-type")||"",o=await a.blob()}}else{let n=await agt(t,{method:"GET"});if(!n.ok)throw new Error(`Failed to fetch file: ${n.status}`);r=n.headers.get("content-type")||"",o=await n.blob()}r&&!o.type&&(o=new Blob([o],{type:r})),await ITe(o,e)}catch(t){let o=t instanceof Error?t.message:"Unknown error";SJ(t)?(ne("Upload cancelled",D.Type.MESSAGE),Us({phase:"cancelled",status:"Upload cancelled.",canCancel:!1,percent:0})):(ne(`Upload failed: ${o}`,D.Type.FAILURE),Ry.error("Upload error",t),Us({phase:"failed",status:`Upload failed: ${o}`,canCancel:!1,percent:0}))}finally{ex=!1,Ny=null,By=null,setTimeout(()=>vTe(),1800)}}async function kJ(){let e=await T9("*/*");if(e){if(!ox(e)){ne("File type not allowed by current filter",D.Type.FAILURE);return}await y8([e])}}async function y8(e,t){if(ex){ne("Upload already in progress",D.Type.MESSAGE);return}if(!tx()){ne("Please configure FileUpload settings first",D.Type.FAILURE);return}if(!e.length)return;let o=e.filter(r=>!!r&&ox(r));if(o.length){ex=!0,Cg=!1;try{for(let r=0;r1?` (${a}/${o.length})`:"";Us({phase:"preparing",fileName:n.name,currentService:null,currentServiceLabel:"",attempt:0,totalAttempts:0,percent:2,status:`Preparing ${n.name}${s}...`,canCancel:!0}),await ITe(n,void 0,t)}}catch(r){let n=r instanceof Error?r.message:"Unknown error";SJ(r)?(ne("Upload cancelled",D.Type.MESSAGE),Us({phase:"cancelled",status:"Upload cancelled.",canCancel:!1,percent:0})):(ne(`Upload failed: ${n}`,D.Type.FAILURE),Ry.error("Manual upload error",r),Us({phase:"failed",status:`Upload failed: ${n}`,canCancel:!1,percent:0}))}finally{ex=!1,Ny=null,By=null,setTimeout(()=>vTe(),1800)}}}var qo,Ry,ex,hTe,kg,yJ,Ny,By,Cg,bJ,Dgt,ETe=h(()=>{"use strict";d();JP();VP();XP();mi();_e();He();ul();C();lTe();tM();fTe();hJ();qo=VencordNative.pluginHelpers.FileUpload,Ry=new ie("FileUpload","#7cb7ff");ex=!1,hTe={phase:"idle",fileName:"",currentService:null,currentServiceLabel:"",attempt:0,totalAttempts:0,percent:0,transferredBytes:0,totalBytes:0,status:"",canCancel:!1},kg={...hTe},yJ=new Set,Ny=null,By=null,Cg=!1;bJ=class{constructor(t){this.xhr=t;this.status=t.status,this.statusText=t.statusText,this.url=t.responseURL,this.ok=this.status>=200&&this.status<300,this.headers=new Headers;let o=t.getAllResponseHeaders();for(let r of o.trim().split(/[\r\n]+/)){if(!r)continue;let n=r.indexOf(":");n<0||this.headers.append(r.slice(0,n).trim(),r.slice(n+1).trim())}}xhr;ok;headers;status;statusText;url;async text(){return typeof this.xhr.response=="string"?this.xhr.response:this.xhr.responseText}async json(){return JSON.parse(await this.text())}};Dgt=new Set(["catbox","litterbox","0x0"])});function Ggt(e,t){if(!no.store.bypassDiscordUploadOnlyOverLimit)return!0;let o=[t.maxFileSize,t.fileSizeLimit,t.limits?.fileSize].find(a=>Number.isFinite(a)),r=$gt(L.getCurrentUser()),n=Math.max(0,o??r);return e.some(a=>a.size>n)}function CJ(e){return e instanceof File?[e]:Array.isArray(e)?e.flatMap(t=>{if(t instanceof File)return[t];if(!t||typeof t!="object")return[];let o="file"in t?t.file:null;if(o instanceof File)return[o];let r="item"in t&&t.item&&typeof t.item=="object"?t.item:null;return!r||!("file"in r)?[]:r.file instanceof File?[r.file]:[]}):[]}function Hgt(e){if(!e||typeof e!="object"||!("type"in e))return;let t=e;if(t.type!=="UPLOAD_ATTACHMENT_ADD_FILES"||t.draftType!==yo.ChannelMessage||!no.store.bypassDiscordUpload||!tx())return;let o=[...CJ(t.files),...CJ(t.uploads),...CJ(t.items)],r=Array.from(new Set(o)).filter(n=>ox(n));r.length&&Ggt(r,t)&&(t.files=[],t.uploads=[],t.items=[],y8(r))}function jgt(e){let t=Array.from(e.clipboardData?.files||[]);if(t.length===0||!no.store.autoUploadPastedFiles||!tx())return;let o=t.filter(r=>ox(r));o.length!==0&&(e.preventDefault(),e.stopPropagation(),y8(o))}function DTe(e){if(!e)return"";let t=["B","KB","MB","GB"],o=e,r=0;for(;o>=1024&&r=10||r===0?0:1)} ${t[r]}`}async function Zgt(e){let t=e.item?.file;if(t){if(!ox(t)){ne("File type not allowed by current filter",D.Type.FAILURE);return}if(!tx()){ne("Please configure FileUpload settings first",D.Type.FAILURE);return}try{await y8([t],!0),e.removeFromMsgDraft()}catch(o){Ry.warn("Draft upload encountered an unexpected error",o)}}}var ep,$gt,Ly,b8,qgt,Wgt,Kgt,Qgt,iM,Ygt,aM,PTe=h(()=>{"use strict";d();JCe();Fo();Pe();ot();O();we();R();le();C();VP();XP();tM();ETe();ep=K("vc-file-upload-"),{getUserMaxFileSize:$gt}=Ae("getUserMaxFileSize"),Ly=null,b8=null;qgt=()=>{let[e,t]=T(wJ);if(G(()=>yTe(()=>t(wJ())),[]),e.phase==="idle")return null;let o=Math.max(0,Math.min(100,e.percent)),r=e.totalBytes>0?`${Math.round(o)}% - ${DTe(e.transferredBytes)} of ${DTe(e.totalBytes)}`:`${Math.round(o)}%`;return i("div",{className:ep("progress-wrap"),"data-phase":e.phase},i("div",{className:ep("progress-head")},i("div",{className:ep("progress-label")},e.status||"Uploading..."),i("div",{className:ep("progress-meta")},i("span",{className:ep("progress-percent")},r),i("span",{className:ep("progress-attempt")},e.attempt>0&&e.totalAttempts>0?`${e.attempt}/${e.totalAttempts}`:""),e.canCancel&&i("button",{className:ep("progress-cancel"),type:"button",onClick:bTe},"Cancel"))),i("div",{className:ep("progress-track")},i("div",{className:ep("progress-fill"),style:{width:`${o}%`}})),i("div",{className:ep("progress-file")},e.fileName||"",e.currentServiceLabel?` \u2022 ${e.currentServiceLabel}`:""))},Wgt=H.wrap(qgt,{noop:!0}),Kgt=(e,t)=>{if(!t)return;let{itemSrc:o,itemHref:r,target:n}=t,a=xJ({src:o,href:r,target:n});if(!a)return;let s=wt("open-native-link",e)??wt("copy-link",e);if(s&&!s.some(l=>l?.props?.id==="file-upload")){let l=no.store.serviceType,c=ua[l];s.push(i(P.MenuItem,{label:`Upload to ${c}`,key:"file-upload",id:"file-upload",action:()=>AJ(a)}))}},Qgt=(e,t)=>{if(!t||"href"in t&&!t.src)return;let o=xJ(t);if(!o||e.some(a=>a?.props?.id==="file-upload-group"))return;let r=no.store.serviceType,n=ua[r];e.push(i(P.MenuGroup,{id:"file-upload-group"},i(P.MenuItem,{label:`Upload to ${n}`,key:"file-upload",id:"file-upload",action:()=>AJ(o)})))};iM=()=>i(gn,{height:24,width:24}),Ygt=(e,t)=>{let o=t?.channel;if(!o||o.guild_id&&!ht.can(ct.SEND_MESSAGES,o)||e.some(a=>a?.props?.id==="file-upload-manual"||a?.props?.id==="file-upload-uploads"))return;let r=el.getUploads(o.id,yo.ChannelMessage),n=Array.isArray(r)?r.filter(a=>a.item?.file&&ox(a.item.file)):[];n.length>0?e.splice(1,0,i(P.MenuItem,{id:"file-upload-uploads",key:"file-upload-uploads",label:"Upload to Host",iconLeft:iM,leadingAccessory:{type:"icon",icon:iM}},n.map(a=>i(P.MenuItem,{id:`file-upload-draft-${a.id}`,key:a.id,label:a.filename,action:()=>Zgt(a)})),i(P.MenuSeparator,null),i(P.MenuItem,{id:"file-upload-manual",key:"file-upload-manual",label:"Choose File...",action:()=>kJ()}))):e.splice(1,0,i(P.MenuItem,{id:"file-upload-manual",key:"file-upload-manual",label:"Upload to Host",iconLeft:iM,leadingAccessory:{type:"icon",icon:iM},action:()=>kJ()}))},aM=S({name:"FileUpload",description:"Upload files to hosting services like Zipline, Nest, S3, and WebDAV",tags:["Media"],authors:[F.creations,F.keircn,b.ScattrdBlade],settings:no,patches:[{find:".CREATE_FORUM_POST||",replacement:{match:/(textValue:.{0,50}channelId:\i\.id\}\))(?:,\i(,))?/,replace:"$1,$self.renderUploadProgress()$2"}},{find:"#{intl::tRuxk9::raw}",replacement:{match:/(?<=MAX_FILE_SIZE_250_MB.{0,250})Array\.from\(\i\)\.some/,replace:"$self.shouldBypassDiscordUploadSizeCheck()?false:$&"}}],contextMenus:{message:Kgt,"image-context":Qgt,"channel-attach":Ygt},start(){Ly||(Ly=e=>Hgt(e),Q.addInterceptor(Ly),b8=e=>jgt(e),document.addEventListener("paste",b8,!0))},stop(){if(!Ly)return;let e=Q._interceptors.indexOf(Ly);e>-1&&Q._interceptors.splice(e,1),Ly=null,b8&&(document.removeEventListener("paste",b8,!0),b8=null)},shouldBypassDiscordUploadSizeCheck(){return!!no.store.bypassDiscordUpload&&tx()},renderUploadProgress(){return i(Wgt,null)}})});var MTe=h(()=>{});function TJ({replies:e}){let[t,o]=T(1),[r,n]=T(!0),a=Se(null);return V.useEffect(()=>{o(1),n(!0)},[e]),V.useEffect(()=>{function l(c){a.current&&c.target instanceof Element&&!a.current.contains(c.target)&&n(!1)}return document.addEventListener("mousedown",l),()=>{document.removeEventListener("mousedown",l)}},[a]),cK(),i(H,null,i("div",{ref:a,className:Xgt.containerBottom+" vc-findreply-div",style:{display:r?"flex":"none"}},i(lK,{className:"vc-findreply-paginator",currentPage:t,maxVisiblePages:5,pageSize:1,totalCount:e.length,onPageChange:s}),i(Jgt,{className:"vc-findreply-close",onClick:()=>n(!1)})));function s(l){o(l),IJ.jumpToMessage({channelId:e[l-1].channel_id,messageId:e[l-1].id,flash:!0,jumpType:"INSTANT"})}}var Jgt,Xgt,NTe=h(()=>{"use strict";d();MTe();Pe();uK();le();C();EJ();Jgt=he("CLOSE_BUTTON_LABEL"),Xgt=Ie("containerBottom","containerTop")});var DJ,BTe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/findReply/styles.css",{name:"src/equicordplugins/findReply/styles.css",source:`.vc-findreply-paginator { margin-top: inherit !important; } .vc-findreply-close { align-items: inherit !important; line-height: 0 !important; } .vc-findreply-div { background-color: var(--background-base-lowest); display: flex; flex-direction: row; align-items: center; width: fit-content; padding: 10px; gap: 10px; }`,classNames:{},dom:null});DJ="src/equicordplugins/findReply/styles.css"});function Vgt(e){let t=[...lt.getMessages(e.channel_id)?._array??[]].filter(r=>!r.deleted).sort((r,n)=>r.timestamp.toString().localeCompare(n.timestamp.toString())),o=[];for(let r of t)r.timestamp.toString().localeCompare(e.timestamp.toString())<=0||(r.messageReference?.message_id===e.id&&o.push(r),cM.store.includePings&&r.content?.includes(`<@${e.author.id}>`)&&o.push(r),cM.store.includeAuthor&&t.find(n=>n.id===r.messageReference?.message_id)?.author.id===e.author.id&&o.push(r));return o}var IJ,RTe,sM,lM,LTe,cM,uM,EJ=h(()=>{"use strict";d();j();nl();O();R();le();C();NTe();BTe();IJ=Ae("jumpToMessage"),RTe=()=>i("svg",{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",width:"18",height:"18"},i("path",{d:"M 7 3 L 7 11 C 7 11 7 12 6 12 L 5 12 C 4 12 4 12 4.983 13.115 L 8.164 17.036 C 9 18 9 18 9.844 17.018 L 12.991 13.277 C 14 12 14 12 13.006 11.985 L 12 12 C 12 12 11 12 11 11 L 11 3 C 11 2 11 2 10 2 L 8 2 C 7 2 7 2 7 3"})),sM=null,lM=null,LTe=!1;cM=M({includePings:{type:3,description:"Will also search for messages that @ the author directly",default:!1,restartNeeded:!1},includeAuthor:{type:3,description:"Will also search for messages that reply to the author in general, not just that exact message",default:!1,restartNeeded:!1},hideButtonIfNoReply:{type:3,description:"Hides the button if there are no replies to the message",default:!0,restartNeeded:!0}}),uM=S({name:"FindReply",description:"Jumps to the earliest reply to a message in a channel (lets you follow past conversations more easily).",dependencies:["MessagePopoverAPI"],tags:["Chat","Shortcuts"],authors:[b.newwares],settings:cM,messagePopoverButton:{icon:RTe,render(e){if(!e.id)return null;let t=Vgt(e);return cM.store.hideButtonIfNoReply&&!t.length?null:{label:"Jump to Reply",icon:RTe,message:e,channel:W.getChannel(e.channel_id),onClick:async()=>{if(t.length){let o=t[0].channel_id,r=t[0].id;if(IJ.jumpToMessage({channelId:o,messageId:r,flash:!0,jumpType:"INSTANT"}),t.length>1){D.show({id:D.genId(),message:"Use the bottom panel to navigate between replies.",type:D.Type.MESSAGE});let n=document.querySelector("[class*=channelBottomBarArea_]");if(!n){D.show({id:D.genId(),message:"Couldn't find the container element.",type:D.Type.FAILURE});return}LTe||(LTe=!0,lM=document.createElement("div"),n.appendChild(lM),sM=Bi(lM)),sM.render(i(TJ,{replies:t}))}}else D.show({id:D.genId(),message:"Couldn't find a reply.",type:D.Type.FAILURE})}}}},start(){Oi(DJ)},stop(){sM&&sM.unmount(),lM?.remove(),La(DJ)}})});var Ru,OTe,PJ,e0t,dM,FTe=h(()=>{"use strict";d();j();ql();O();R();le();C();Ru=null,OTe=Ae("selectVoiceChannel"),PJ=M({onlyWhenInVoice:{type:3,default:!0,description:"Only follow the user when you are in a voice channel"},leaveWhenUserLeaves:{type:3,default:!1,description:"Leave the voice channel when the user leaves. (That can cause you to sometimes enter infinite leave/join loop)"}}),e0t=(e,{channel:t,user:o})=>{if(L.getCurrentUser().id===o.id||!qe.getFriendIDs().includes(o.id))return;let[r,n]=V.useState(Ru?.userId===o.id);e.push(i(P.MenuSeparator,null),i(P.MenuCheckboxItem,{id:"fvu-follow-user",label:"Follow User",checked:r,action:()=>{if(Ru?.userId===o.id){Ru=null,n(!1);return}Ru={lastChannelId:L.getCurrentUser().id,userId:o.id},n(!0)}}))},dM=S({name:"FollowVoiceUser",description:"Follow a friend in voice chat.",tags:["Voice"],authors:[F.TheArmagan],settings:PJ,settingsAboutComponent:()=>i(Xo.Info,null,"This Plugin is used to follow a Friend/Friends into voice chat(s)."),flux:{async VOICE_STATE_UPDATES({voiceStates:e}){Ru&&qe.getFriendIDs().includes(Ru.userId)&&(PJ.store.onlyWhenInVoice&&!Et.getVoiceStateForUser(L.getCurrentUser().id)||e.forEach(t=>{t.userId===Ru.userId&&t.channelId&&t.channelId!==Ru.lastChannelId?(Ru.lastChannelId=t.channelId,OTe.selectVoiceChannel(Ru.lastChannelId)):t.userId===Ru.userId&&!t.channelId&&PJ.store.leaveWhenUserLeaves&&OTe.selectVoiceChannel(null)}))}},contextMenus:{"user-context":e0t}})});var _Te=h(()=>{});async function t0t(e){try{let o=await(await fetch("https://fonts.google.com/$rpc/fonts.fe.catalog.actions.metadata.MetadataService/FontSearch",{method:"POST",headers:{"content-type":"application/json+protobuf","x-user-agent":"grpc-web-javascript/0.1"},body:JSON.stringify([[e,null,null,null,null,null,1],[5],null,16])})).json();return o?.[1]?o[1].map(([r,n])=>({family:n[0],displayName:n[1],authors:n[2],category:n[3],variants:n[6].map(a=>({axes:a[0].map(([s,l,c])=>({tag:s,min:l,max:c}))}))})):[]}catch(t){return console.error("Failed to fetch fonts:",t),[]}}function n0t({onSelect:e}){let[t,o]=V.useState(""),[r,n]=V.useState([]),[a,s]=V.useState(!1),l=V.useRef([]);V.useEffect(()=>()=>{l.current.forEach(p=>p.remove())},[]);let c=Jo(async p=>{if(s(!0),!p){n([]),s(!1);return}let m=await t0t(p);l.current.forEach(g=>g.remove()),l.current=await Promise.all(m.map(g=>o0t(g.family))),n(m),s(!1)},300),u=p=>{o(p),c(p)};return i("section",null,i(Ot,null,"Search Google Fonts"),i(U,{className:z.bottom8},"Click on any font to apply it."),i(Te,{value:t,onChange:p=>u(p),placeholder:"Search fonts...",disabled:a}),r.length>0&&i("div",{className:X(z.top8,"eq-googlefonts-results")},r.map(p=>i(Ht,{key:p.family,className:X("eq-googlefonts-card",z.bottom8),onClick:()=>e(p)},i("div",{className:"eq-googlefonts-preview",style:{fontFamily:p.family}},i(Gr,null,p.displayName),i(U,null,"The quick brown fox jumps over the lazy dog")),p.authors?.length&&i(U,{className:z.top8,style:{opacity:.7}},"by ",p.authors.join(", "))))))}var UTe,zTe,o0t,Am,$Te,pM,mM,GTe=h(()=>{"use strict";d();_Te();j();Qn();We();Je();os();O();Wt();Be();R();C();UTe=(e,t="")=>`https://fonts.googleapis.com/css2?family=${encodeURIComponent(e)}${t}&display=swap`,zTe=e=>(document.head.insertAdjacentHTML("beforeend",``),document.createElement("style"));o0t=e=>zTe(UTe(e,":wght@400;700")),Am=null,$Te=async e=>{if(!e){Am?.remove(),Am=null;return}try{Am||(Am=document.createElement("style"),document.head.appendChild(Am)),zTe(UTe(e,":wght@300;400;500;600;700")),Am.textContent=` * { --font-primary: '${e}', sans-serif !important; --font-display: '${e}', sans-serif !important; --font-headline: '${e}', sans-serif !important; ${pM.store.applyOnCodeBlocks?"--font-code: '${fontFamily}', monospace !important;":""} } `}catch(t){console.error("Failed to load font:",t)}};Br("FontLoader","applyOnCodeBlocks","applyOnClodeBlocks");pM=M({selectedFont:{type:0,description:"Currently selected font",default:"",hidden:!0},fontSearch:{type:6,description:"Search and select Google Fonts",component:()=>i(n0t,{onSelect:e=>{pM.store.selectedFont=e.family,$Te(e.family)}})},applyOnCodeBlocks:{type:3,description:"Apply the font to code blocks",default:!1}}),mM=S({name:"FontLoader",description:"Loads any font from Google Fonts",tags:["Appearance","Customisation"],authors:[F.vmohammad],settings:pM,async start(){let e=pM.store.selectedFont;e&&await $Te(e)},stop(){Am&&(Am.remove(),Am=null)}})});function r0t(e){return Object.entries(ba.FrecencyUserSettingsActionCreators.getCurrentValue().guildAndChannelFrecency.guildAndChannels).map(([o,r])=>o).filter(o=>W.getChannel(o)!=null).filter(o=>W.getChannel(o).name.includes(e)).sort((o,r)=>{let n=ba.FrecencyUserSettingsActionCreators.getCurrentValue().guildAndChannelFrecency.guildAndChannels[o];return ba.FrecencyUserSettingsActionCreators.getCurrentValue().guildAndChannelFrecency.guildAndChannels[r].totalUses-n.totalUses}).slice(0,20).map(o=>({type:"TEXT_CHANNEL",record:W.getChannel(o),score:20,comparator:e,sortable:e}))}var fM,HTe=h(()=>{"use strict";d();O();R();C();fM=S({name:"FrequentQuickSwitcher",description:"Rewrites and filters the quick switcher results to be your most frequent channels",tags:["Shortcuts","Servers"],authors:[b.Samwich],generateSearchResults:r0t,patches:[{find:"#{intl::QUICKSWITCHER_PLACEHOLDER}",replacement:{match:/let{selectedIndex:\i,results:\i}/,replace:"this.props.results = $self.generateSearchResults(this.state.query);$&"}}]})});var jTe=h(()=>{});function l0t({copyText:e,copiedText:t,onClick:o}){let[r,n]=T(!1);return i(ue,{onClick:s=>{n(!0),setTimeout(()=>n(!1),1e3),o(s)},color:r?ue.Colors.GREEN:ue.Colors.BRAND,size:ue.Sizes.SMALL,look:ue.Looks.FILLED},r?t:e)}function c0t({invite:e}){return i("div",{className:"vc-friend-codes-card"},i(pe,{justifyContent:"start"},i("div",{className:"vc-friend-codes-card-title"},i(Gr,{style:{textTransform:"none"}},e.code),i("span",null,"Expires ",kt.parse(``)," \u2022 ",e.uses,"/",e.max_uses," uses")),i(pe,{justifyContent:"end"},i(l0t,{copyText:"Copy",copiedText:"Copied!",onClick:()=>po(`https://discord.gg/${e.code}`)}))))}function MJ(){let[e,t]=T([]),[o,r]=T(!1);return G(()=>{r(!0),a0t().then(t).then(()=>r(!1))},[]),i(f,null,i("header",{className:qTe.header},i(oe,{tag:"h2",className:qTe.title},"Your Friend Codes"),i(pe,{style:{marginBottom:"16px"},justifyContent:"space-between"},i("h2",{className:"vc-friend-codes-info-header"},`Friend Codes - ${e.length}`),i(pe,{justifyContent:"end"},i(ue,{color:ue.Colors.GREEN,look:ue.Looks.FILLED,onClick:()=>i0t().then(n=>t([...e,n]))},"Create Friend Code"),i(ue,{style:{marginLeft:"8px"},color:ue.Colors.RED,look:ue.Looks.FILLED,disabled:!e.length,onClick:()=>s0t().then(t([]))},"Revoke all Friend Codes")))),o?i(Y,{size:"md",weight:"semibold",className:"vc-friend-codes-text"},"Loading..."):e.length===0?i(Y,{size:"md",weight:"semibold",className:"vc-friend-codes-text"},"You don't have any friend codes yet"):i("div",{style:{marginTop:"16px",display:"flex",flexWrap:"wrap",gap:"16px",justifyContent:"space-evenly"}},e.map(n=>i(c0t,{key:n.code,invite:n}))))}var qTe,i0t,a0t,s0t,WTe=h(()=>{"use strict";d();jTe();yt();Lt();We();mi();le();C();qTe=Ie("header","title","emptyState"),{createFriendInvite:i0t,getAllFriendInvites:a0t,revokeFriendInvites:s0t}=Ae("createFriendInvite")});var gM,KTe=h(()=>{"use strict";d();O();R();WTe();gM=S({name:"FriendCodes",description:"Generate FriendCodes to easily add friends",tags:["Friends","Utility"],authors:[b.HypedDomi],patches:[{find:"#{intl::ADD_FRIEND})}),(",replacement:{match:/"header",.{0,30}children:\[.*?\{\}\)/,replace:"$&,$self.FriendCodesPanel"},noWarn:!0}],get FriendCodesPanel(){return i(MJ,null)}})});var QTe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/friendTags/styles.css",{name:"src/equicordplugins/friendTags/styles.css",source:`.vc-permviewer-user-header-container { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; } .vc-permviewer-user-header-btns { display: flex; gap: 8px; }`,classNames:{},dom:null})});function u0t(e){let t=e.match(/&([^&]+)/g);return t?t.map(r=>r.substring(1).trim()).filter(r=>r!==""):[]}function d0t(e){let t=u0t(e);if(!t.length)return[];let o=ls.filter(n=>n.tagName.length&&n.userIds.length).filter(n=>t.some(a=>a.toLowerCase()===n.tagName.toLowerCase()));return o.length?Array.from(new Set([...W.getDMUserIds(),...qe.getFriendIDs()])).filter(n=>o.some(a=>a.userIds.includes(n))).map(n=>{let a=L.getUser(n);return{type:"USER",record:a,score:20,comparator:a.globalName||a.username,sortable:a.globalName||a.username}}):[]}async function S8(){let e=await Le.get(hM);return ls!==e&&await Le.set(hM,JSON.stringify(ls)),!0}async function p0t(){let e=await Le.get(hM);if(!e){Le.set(hM,JSON.stringify([])),ls=[];return}ls=JSON.parse(e)}function m0t(e){let{tag:t}=e,[o,r]=T(t.tagName),[n,a]=T(t.userIds.join(", ")),s=Vt();return G(()=>{let l=ls.find(c=>c.tagName===t.tagName);l&&(l.tagName=o),S8(),s()},[o]),G(()=>{let l=ls.find(c=>c.userIds===t.userIds);l&&(l.userIds=n.split(", ")),S8(),s()},[n]),i(f,null,i(Y,{size:"md",tag:"h5"},"Name"),i(Te,{value:o,onChange:r}),i(Y,{size:"md",tag:"h5"},"Users (Seperated by comma)"),i(Te,{value:n,onChange:a}),i("div",{className:"vc-friend-tags-user-header-container"},i(Y,null,"User List (Click A User To Remove)"),i("div",{className:"vc-friend-tags-user-header-btns"},n.split(", ").map(l=>{let c=L.getUser(l);return c?i("div",{style:{display:"flex"},key:l.id},i("img",{src:c.getAvatarURL(),style:{height:"20px",borderRadius:"50%",marginRight:"5px"}}),i(Y,{style:{cursor:"pointer"},size:"md",onClick:()=>a(n.replace(`, ${l}`,"").replace(l,""))},c.globalName||c.username)):null}))),i(ue,{onClick:async()=>{ls=ls.filter(l=>l.tagName!==o),await S8(),s()},color:ue.Colors.RED},"Remove"))}function f0t(){let e=Vt();return i(f,null,i(Rt,null),ls?.map(t=>i(f,null,i(m0t,{tag:t}),i(Rt,null))),i(ue,{onClick:()=>{ls.push({tagName:"",userIds:[]}),S8(),e()}},"Add"))}function h0t(e,t,o){o?ls.filter(r=>r.tagName===t)[0].userIds=ls.filter(r=>r.tagName===t)[0].userIds.filter(r=>r!==e):ls.filter(r=>r.tagName===t)[0]?.userIds.push(e),S8()}var ls,hM,g0t,x0t,xM,ZTe=h(()=>{"use strict";d();QTe();on();j();yt();xr();O();Kt();R();C();ls=[],hM="vc-friendtags-tags";g0t=M({tagConfiguration:{type:6,description:"The tag configuration component",component:()=>i(f0t,null)}});x0t=(e,{user:t})=>{let o=i(P.MenuItem,{id:"vc-tag-group",label:"Tag"},ls.map(r=>{let n=ls.filter(a=>a.tagName===r.tagName)[0].userIds.includes(t.id);return i(P.MenuItem,{label:`${n?"Remove from":"Add to"} ${r.tagName}`,key:`vc-tag-${r.tagName}`,id:`vc-tag-${r.tagName}`,action:()=>{h0t(t.id,r.tagName,n)}})}));e.push({...o})},xM=S({name:"FriendTags",description:"Allows you to filter by custom tags in the quick switcher by starting a search with &",tags:["Shortcuts"],authors:[b.Samwich],settings:g0t,contextMenus:{"user-context":x0t},patches:[{find:"#{intl::QUICKSWITCHER_PLACEHOLDER}",replacement:{match:/let{selectedIndex:\i,results:\i}/,replace:'if(this.state.query.includes("&")){ this.props.results = $self.queryFriendTags(this.state.query); }$&'}}],async start(){p0t()},queryFriendTags:d0t})});var YTe=h(()=>{});function v0t(e){let t=new Date(e),n=(new Date().getTime()-t.getTime())/(1e3*60*60*24);return Math.floor(n)}function y0t(e){ce(t=>i(H,null,i(be,{...t,size:"sm",title:i(pe,{className:w8("flex")},i(Ia.FormTitle,{className:w8("img"),tag:"h2"},i("img",{src:e.iconSrc,alt:"rank icon"}),e.title))},i("div",{className:w8("text")},i(U,null,e.description)))))}function b0t(e,t,o){if(!qe.isFriend(e))return!1;let r=v0t(qe.getSince(e));return NJ[o+1]==null?r>t:r>t&&r({id:`friendship_ranks_badge_${t}`,description:e.title,iconSrc:e.iconSrc,position:1,onClick:()=>y0t(e),shouldShow:o=>b0t(o.userId,e.requirement,t),props:{style:{borderRadius:"50%",transform:"scale(0.9)"}}}))}var w8,JTe,NJ,S0t,vM,VTe=h(()=>{"use strict";d();YTe();I1();on();j();Pe();Lt();Je();O();we();R();C();w8=K("vc-friendship-ranks-"),JTe=M({showFriendsInChat:{type:3,description:"Show a friend icon on messages from friends.",default:!1}});NJ=[{title:"Sprout",description:"Your friendship is just starting",requirement:0,iconSrc:"https://equicord.org/assets/plugins/friendshipRanks/sprout.png"},{title:"Blooming",description:"Your friendship is getting there! (1 Month)",requirement:30,iconSrc:"https://equicord.org/assets/plugins/friendshipRanks/blooming.png"},{title:"Burning",description:"Your friendship has reached terminal velocity (3 Months)",requirement:90,iconSrc:"https://equicord.org/assets/plugins/friendshipRanks/burning.png"},{title:"Fighter",description:"Your friendship is strong (6 Months)",requirement:182.5,iconSrc:"https://equicord.org/assets/plugins/friendshipRanks/fighter.png"},{title:"Star",description:"Your friendship has been going on for a WHILE (1 Year)",requirement:365,iconSrc:"https://equicord.org/assets/plugins/friendshipRanks/star.png"},{title:"Royal",description:"Your friendship has gone through thick and thin- a whole 2 years!",requirement:730,iconSrc:"https://equicord.org/assets/plugins/friendshipRanks/royal.png"},{title:"Besties",description:"How do you even manage this??? (5 Years)",requirement:1826.25,iconSrc:"https://equicord.org/assets/plugins/friendshipRanks/besties.png"}];S0t=H.wrap(({userId:e})=>ye([qe],()=>qe.isFriend(e),[e])?i(ve,{text:"Friend"},o=>i("span",{...o,className:w8("decoration")},i("svg",{className:w8("icon"),"aria-hidden":"true",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M13 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z"}),i("path",{fill:"currentColor",d:"M3 5v-.75C3 3.56 3.56 3 4.25 3s1.24.56 1.33 1.25C6.12 8.65 9.46 12 13 12h1a8 8 0 0 1 8 8 2 2 0 0 1-2 2 .21.21 0 0 1-.2-.15 7.65 7.65 0 0 0-1.32-2.3c-.15-.2-.42-.06-.39.17l.25 2c.02.15-.1.28-.25.28H9a2 2 0 0 1-2-2v-2.22c0-1.57-.67-3.05-1.53-4.37A15.85 15.85 0 0 1 3 5Z"})))):null,{noop:!0}),vM=S({name:"FriendshipRanks",description:"Adds badges showcasing how long you have been friends with a user for",tags:["Friends"],authors:[b.Samwich,F.lucabeyer],settings:JTe,renderMessageDecoration({message:e}){return!JTe.store.showFriendsInChat||!e?.author?null:i(S0t,{userId:e.author.id})},start(){XTe().forEach(e=>p9.addProfileBadge(e))},stop(){XTe().forEach(e=>p9.removeProfileBadge(e))}})});var eIe,tIe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/fullVcPfp/style.css",{name:"src/equicordplugins/fullVcPfp/style.css",source:`div[data-selenium-video-tile] div[role="img"] { width: 100% !important; height: 100% !important; border-radius: unset !important; background: center / contain no-repeat; background-image: var(--full-res-avatar); > * { display: none; } }`,classNames:{},dom:null});eIe="src/equicordplugins/fullVcPfp/style.css"});var yM,oIe=h(()=>{"use strict";d();O();Be();R();C();tIe();yM=S({name:"FullVCPFP",description:"Makes avatars take up the entire vc tile",tags:["Appearance","Voice"],authors:[F.mochienya],managedStyle:eIe,patches:[{find:'"data-selenium-video-tile":',replacement:{match:/(?<=function\((\i),\i\)\{)/,replace:"Object.assign($1.style=$1.style||{},$self.getVoiceBackgroundStyles($1));"}}],getVoiceBackgroundStyles({className:e,participantUserId:t}){if(!e?.includes("tile")||!t)return;let o=L.getUser(t);if(!o)return;let r=Et.getVoiceStateForUser(t)?.channelId;if(!r)return;let n=W.getChannel(r)?.guild_id,a=cd.getSpeakingParticipants(r).some(l=>l.user.id===t&&l.speaking);return{"--full-res-avatar":`url(${xf(o,n,a,1024)})`}}})});var nIe=h(()=>{});function bM({fill:e}){return i("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1.5em",height:"1.5em",viewBox:"0 0 24 24"},i("path",{fill:e,d:"M12 4a7 7 0 0 0-7 7v8.62a.4.4 0 0 0 .594.35l.943-.523a4 4 0 0 1 3.927.023l.544.311a2 2 0 0 0 1.984 0l.544-.31a4 4 0 0 1 3.927-.024l.943.523a.4.4 0 0 0 .594-.35V11a7 7 0 0 0-7-7m-9 7a9 9 0 0 1 18 0v8.62c0 1.83-1.966 2.987-3.565 2.099l-.943-.524a2 2 0 0 0-1.964.012l-.543.31a4 4 0 0 1-3.97 0l-.543-.31a2 2 0 0 0-1.964-.012l-.942.524C4.966 22.607 3 21.45 3 19.62zm7.5-.5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0M15 12a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3"}))}var BJ=h(()=>{"use strict";d()});function rIe(e){let t=Lu.store.exemptedChannels.split(",").map(r=>r.trim()).filter(r=>r.length>0),o=Lu.store.ignoreGroupDms&&e.isGroupDM();return t.includes(e.id)||o}function Oy(){return RJ}function SM(e){RJ=e;for(let t of LJ)t(RJ)}function iIe(e){return LJ.add(e),()=>{LJ.delete(e)}}function w0t(e){return wM.add(e),()=>{wM.delete(e)}}function AM(){return Array.from(km)}function OJ(e){if(!km.has(e))return;km.delete(e),SM(Oy()-1);let t=lt.getMessages(e)?.last();t&&Tg.set(e,t.id);for(let o of wM)o(e)}function aIe({channel:e}){let{id:t}=e,o=ye([L],()=>L.getCurrentUser()?.id),r=ye([lt],()=>lt.getMessages(t)?.last());if(!r||!o)return null;let[n,a]=T({isCurrentUser:null,containsQuestionMark:!1,isDataProcessed:!1}),[s,l]=T(!1),c=r?new Date(r.timestamp).getTime():0,u=!!r&&Lu.store.maxInactiveTimeMs>0&&Number.isFinite(c)&&Date.now()-c>Lu.store.maxInactiveTimeMs;return G(()=>{if(!r||!o)return;let p=r.author.id===o,m=!p&&r.content.includes("?");a({isCurrentUser:p,containsQuestionMark:m,isDataProcessed:!0})},[r,o]),G(()=>(l(Tg.has(t)),w0t(m=>{m===t&&l(Tg.has(t))})),[t,r?.id]),G(()=>{if(!n.isDataProcessed)return;let p=rIe(e),m=Tg.has(t);if(m&&!n.isCurrentUser){let g=Tg.get(t),x=r?.id;if(g===x)return;if(x!==g){Tg.delete(t),m=!1;for(let v of wM)v(t)}}if(n.isCurrentUser){km.has(t)&&(km.delete(t),SM(Oy()-1)),Tg.has(t)&&Tg.delete(t);return}if(p||Lu.store.ignoreBots&&r.author.bot||u){km.has(t)&&(km.delete(t),SM(Oy()-1));return}m||n.isCurrentUser||km.has(t)||(km.add(t),SM(Oy()+1))},[n.isCurrentUser,n.isDataProcessed,t,r?.id,u]),!n.isDataProcessed||!o||!r||n.isCurrentUser||rIe(e)||s||Lu.store.ignoreBots&&r.author.bot||u||!Lu.store.showDmIcons?null:i("div",{className:A8("icon",A0t.wrapper)},i(bM,{fill:n.containsQuestionMark?"#ff8000":"currentColor"}))}var km,Tg,wM,RJ,LJ,A0t,sIe=h(()=>{"use strict";d();le();C();FJ();BJ();km=new Set,Tg=new Map,wM=new Set,RJ=0,LJ=new Set;A0t=Ie("muted","wrapper")});function k0t(e){let t=new Date(e),o=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0"),n=String(t.getFullYear()).slice(-2);return`${o}/${r}/${n}`}function I0t({channel:e}){return e.icon?i(Js,{src:`https://cdn.discordapp.com/channel-icons/${e.id}/${e.icon}.png`,size:"SIZE_40","aria-label":e?.name||"Unnamed Group"}):i(C0t,{recipients:e?.recipients??[],channel:e,size:"SIZE_40",isTyping:null})}function _J(e){let t=W.getChannel(e);if(!t)return"Unknown";if(t.isGroupDM())return t?.name||"Unnamed Group";let o=t?.recipients?.[0]??"";return L.getUser(o)?.username||"Unknown User"}function lIe({modalProps:e,ghostedChannels:t,onClearGhost:o}){let[r,n]=V.useState(t),a=c=>{W.getChannel(c)&&(T0t.selectPrivateChannel(c),e.onClose())},s=(c,u)=>{c.stopPropagation(),o(u),n(p=>p.filter(m=>m!==u))},l=()=>{for(let c of t)o(c);n([])};return i(be,{...e,size:"md",title:`Ghosted Users (${r.length})`,actions:r.length>0?[{text:"Clear All",variant:"primary",onClick:l}]:[]},i("div",{className:kM("modal-content")},r.length===0?i(vi,{variant:"text-md/normal"},"No ghosts here!"):r.map(c=>{let u=W.getChannel(c);if(!u)return null;let p=lt.getMessages(c)?.last(),m=p?.timestamp?k0t(p.timestamp):"",g=_J(u.id),x=u?.recipients?.[0]??"";return i("div",{key:c,onClick:()=>a(c),className:kM("ghosted-entry")},u.isGroupDM()?i(I0t,{channel:u}):i(Js,{src:L.getUser(x)?.getAvatarURL(void 0,128,!0),size:"SIZE_40","aria-label":g}),i("div",{className:kM("user-info")},i(vi,{variant:"text-md/normal"},g),m&&i(vi,{variant:"text-xs/normal",className:kM("modal-text")},m)),i(ue,{size:ue.Sizes.SMALL,color:ue.Colors.PRIMARY,onClick:v=>s(v,c)},"Clear"))})))}var kM,C0t,T0t,cIe=h(()=>{"use strict";d();we();le();C();kM=K("vc-boo-");C0t=he('["aria-hidden"],"aria-label":'),T0t=Ae("selectPrivateChannel")});function E0t(){let[e,t]=T(Oy());if(G(()=>{let n=iIe(a=>{t(a)});return()=>{n()}},[]),!Lu.store.showIndicator)return null;let o=()=>{let n=AM();ce(a=>i(H,null,i(lIe,{modalProps:a,ghostedChannels:n,onClearGhost:OJ})))},r=()=>{let n=AM();return n.length===0?"No Ghosted Users":n.length<=5?n.map(a=>_J(a)).join(", "):`${n.length} Ghosted Users`};return i(f,null,Lu.store.showIndicator&&AM().length>0&&i("div",{id:A8("container")},i(ve,{text:r(),position:"right"},({onMouseEnter:n,onMouseLeave:a})=>i("div",{id:A8("container"),className:A8("clickable"),onMouseEnter:n,onMouseLeave:a,onClick:o},e," ",i(bM,{fill:"currentColor"})))))}function uIe(e){return i(P.MenuItem,{id:"ec-ghosted-clear",key:"ec-ghosted-clear",label:"unghost",action:()=>{OJ(e.channel.id)}})}var A8,Lu,CM,FJ=h(()=>{"use strict";d();nIe();Fo();Tf();j();Pe();O();we();R();C();sIe();cIe();BJ();A8=K("vc-boo-"),Lu=M({showIndicator:{type:3,description:"Show the ghost counter at the top of the server list",default:!0,restartNeeded:!1},showDmIcons:{type:3,description:"Show ghost icons next to individual DMs",default:!0,restartNeeded:!1},ignoreGroupDms:{type:3,description:"Exclude all group dms from ghosting",default:!1},exemptedChannels:{type:0,description:"Comma-separated list of channel IDs to exempt from ghosting (right-click a DM channel to copy its ID)",default:"",restartNeeded:!1},ignoreBots:{type:3,description:"Ignore DMs from bots",default:!0,restartNeeded:!1},maxInactiveTimeMs:{type:4,description:"Only ghost DMs active within this timeframe",options:[{label:"No limit",value:0,default:!0},{label:"1 hour",value:3600*1e3},{label:"1 day",value:1440*60*1e3},{label:"1 week",value:10080*60*1e3},{label:"1 month",value:720*60*60*1e3}],restartNeeded:!1}});CM=S({name:"Ghosted",description:"A cute ghost will appear if you don't answer their DMs",tags:["Chat","Utility"],authors:[F.vei,b.sadan,F.justjxke,F.iamme],settings:Lu,dependencies:["AudioPlayerAPI","ServerListAPI"],contextMenus:{"gdm-context":(e,t)=>{wt("leave",e,!0)?.unshift(uIe(t))},"user-context":(e,t)=>{wt("close-dm",e)?.push(uIe(t))}},patches:[{find:"PrivateChannel.renderAvatar",replacement:{match:/\]:\i\|\|\i.{0,50}children:\[/,replace:"$&$self.renderBoo(arguments[0]),"}}],renderBoo(e){return i(H,{noop:!0},i(aIe,{...e}))},renderIndicator(){return i(H,{noop:!0},i(E0t,null))},start(){jl(0,this.renderIndicator)},stop(){ll(0,this.renderIndicator)}})});var dIe=h(()=>{});var pIe=h(()=>{"use strict";d()});function TM(e){return e.startsWith("https:")||(e="https:"+e),new URL(e).pathname.split(".").pop()}var UJ=h(()=>{"use strict";d()});function nx(e){let t=TM(e);return t!=null&&D0t.includes(t)?2:1}var D0t,zJ=h(()=>{"use strict";d();pIe();UJ();D0t=["mp4","ogg","webm","avi","wmv","flv","mov","mkv","m4v"]});function rx(e){return e.includes(":")?e.replace(/.+?:/,""):e}var dr,zs,Ig=h(()=>{"use strict";d();we();He();dr=K("vc-gif-collections-"),zs=new ie("GifCollections")});async function ix(e){Yr=e,await Le.set(Fy,e)}async function mIe(e,t){let o=[...Yr],r=`${xn.store.collectionPrefix}${e}`;if(o.some(a=>a.name===r)){D.show({message:"That collection already exists",type:D.Type.FAILURE,id:D.genId(),options:{duration:3e3,position:D.Position.BOTTOM}});return}let n=t[t.length-1]?.src??xn.store.defaultEmptyCollectionImage;o.push({name:r,src:n,format:nx(n),type:"Category",gifs:t,createdAt:Date.now(),lastUpdated:Date.now()}),await ix(o)}async function fIe(e,t){let o=[...Yr],r=o.find(n=>n.name===e);if(!r)return void zs.warn("Collection not found");if(xn.store.preventDuplicates&&r.gifs.some(n=>n.url===t.url)){D.show({message:"This GIF is already in the collection",type:D.Type.FAILURE,id:D.genId(),options:{duration:3e3,position:D.Position.BOTTOM}});return}r.gifs=[...r.gifs,{...t,addedAt:Date.now()}],r.src=t.src,r.format=nx(t.src),r.lastUpdated=Date.now(),await ix(o)}async function gIe(e,t){let o=[...Yr],r=o.find(n=>n.name===e);if(!r)return void zs.warn("Collection not found");r.name=`${xn.store.collectionPrefix}${t}`,r.lastUpdated=Date.now(),await ix(o)}async function hIe(e){let t=[...Yr],o=t.find(n=>n.gifs.some(a=>a.id===e));if(!o)return void zs.warn("Collection not found");o.gifs=o.gifs.filter(n=>n.id!==e);let r=o.gifs.length?o.gifs[o.gifs.length-1].src:xn.store.defaultEmptyCollectionImage;o.src=r,o.format=nx(r),o.lastUpdated=Date.now(),await ix(t)}async function xIe(e){await ix(Yr.filter(t=>t.name!==e))}async function vIe(e,t,o){let r=[...Yr],n=r.find(u=>u.name===t),a=r.find(u=>u.name===o);if(!n||!a)return void zs.warn("Collection not found");let s=n.gifs.findIndex(u=>u.id===e);if(s===-1)return void zs.warn("Gif not found");let l={...n.gifs[s],addedAt:Date.now()};n.gifs=n.gifs.filter((u,p)=>p!==s),a.gifs=[...a.gifs,l];let c=u=>{let p=u.gifs.length?u.gifs[u.gifs.length-1].src:xn.store.defaultEmptyCollectionImage;u.src=p,u.format=nx(p),u.lastUpdated=Date.now()};c(n),c(a),await ix(r)}async function yIe(e,t){let o=[...Yr],r=o.find(a=>a.gifs.some(s=>s.id===e));if(!r)return void zs.warn("Collection not found");let n=r.gifs.findIndex(a=>a.id===e);if(n===-1)return void zs.warn("Gif not found");r.gifs=r.gifs.map((a,s)=>s===n?t:a),r.lastUpdated=Date.now(),await ix(o)}function C8(e){return Yr.find(t=>t.gifs.some(o=>o.id===e))?.name}function $J(e){return Yr.flatMap(t=>t.gifs).find(t=>t.id===e)}var Fy,Yr,k8,_y,Uy=h(()=>{"use strict";d();on();C();zy();zJ();Ig();Fy="gif-collections-collections",Yr=[],k8=async()=>await Le.get(Fy)??[];_y=async()=>{Yr=await k8()}});async function bIe(){let e=await P0t(),t=new TextEncoder().encode(e);DiscordNative.fileManager.saveWithDialog(t,"gif-collections.json")}async function P0t(){let e=await k8();return JSON.stringify({collections:e},null,4)}async function M0t(e){let t=JSON.parse(e);if("collections"in t)await Le.set(Fy,t.collections),await _y();else throw new Error("Invalid collections format")}async function GJ(e=!0){{let[t]=await DiscordNative.fileManager.openFiles({filters:[{name:"Gif Collections",extensions:["json"]},{name:"all",extensions:["*"]}]});if(t)try{await M0t(new TextDecoder().decode(t.data)),e&&N0t()}catch(o){zs.error("Failed to import collections",o),e&&B0t(o)}}}var N0t,B0t,SIe=h(()=>{"use strict";d();on();ul();C();Uy();Ig();N0t=()=>D.show({type:D.Type.SUCCESS,message:"Collections imported successfully.",id:D.genId()}),B0t=e=>D.show({type:D.Type.FAILURE,message:`Failed to import collections: ${String(e)}`,id:D.genId()})});function T8({name:e,value:t,checked:o,onChange:r,label:n}){return i("div",{className:dr("sort-option")},i("label",{className:dr("sort-label")},i("input",{type:"radio",name:e,value:t,checked:o,onChange:r,className:dr("sort-input")}),n))}function R0t(){let[e,t]=T(xn.store.collectionsSortType??$s.NAME),[o,r]=T(xn.store.collectionsSortOrder??"asc"),n=s=>{t(s),xn.store.collectionsSortType=s},a=s=>{r(s),xn.store.collectionsSortOrder=s};return i("div",{className:dr("sort-container")},i(oe,{className:dr("sort-title")},"Sort Collections"),i(Rt,{className:dr("sort-divider")}),i(U,{className:dr("sort-description")},"Choose a sorting criteria for your collections"),i(Rt,{className:dr("sort-divider")}),i("div",{className:dr("sort-section")},i(U,{className:dr("sort-section-title")},"Sort By"),i(T8,{name:"sortType",value:$s.NAME,checked:e===$s.NAME,onChange:()=>n($s.NAME),label:"Name"}),i(T8,{name:"sortType",value:$s.CREATION_DATE,checked:e===$s.CREATION_DATE,onChange:()=>n($s.CREATION_DATE),label:"Creation Date"}),i(T8,{name:"sortType",value:$s.MODIFIED_DATE,checked:e===$s.MODIFIED_DATE,onChange:()=>n($s.MODIFIED_DATE),label:"Modified Date"})),i(Rt,{className:dr("sort-divider")}),i("div",{className:dr("sort-section")},i(U,{className:dr("sort-section-title")},"Order"),i(T8,{name:"sortOrder",value:"asc",checked:o==="asc",onChange:()=>a("asc"),label:"Ascending"}),i(T8,{name:"sortOrder",value:"desc",checked:o==="desc",onChange:()=>a("desc"),label:"Descending"})))}var $s,xn,zy=h(()=>{"use strict";d();on();j();xr();We();Je();R();C();Uy();Ig();SIe();$s={NAME:1,CREATION_DATE:2,MODIFIED_DATE:3},xn=M({itemPrefix:{description:"The prefix for gif items.",type:0,default:"gc-item:",restartNeeded:!0},collectionPrefix:{description:"The prefix for collections.",type:0,default:"gc:",restartNeeded:!0},onlyShowCollections:{description:"Only show collections in the GIF picker.",type:3,default:!1,restartNeeded:!0},stopWarnings:{description:"Skip deletion confirmation dialogs.",type:3,default:!1},showCopyImageLink:{description:"Show copy image link option in context menus.",type:3,default:!1},preventDuplicates:{description:"Prevent adding the same GIF to a collection multiple times.",type:3,default:!1},defaultEmptyCollectionImage:{description:"The image shown when a collection has no images.",type:0,default:"https://c.tenor.com/YEG33HsLEaIAAAAC/parksandrec-oops.gif"},collectionsSortType:{description:"The type of sorting for collections.",type:1,default:$s.NAME,hidden:!0},collectionsSortOrder:{description:"The order of sorting for collections.",type:0,default:"asc",hidden:!0},collectionsSort:{type:6,description:"Decide how to sort collections.",component:R0t},importGifs:{type:6,description:"Import collections.",component:()=>i(ue,{onClick:async()=>(await k8()).length?Oo.show({title:"Are you sure?",body:"Importing collections will overwrite your current collections.",confirmText:"Import",confirmColor:ue.Colors.RED,cancelText:"Nevermind",onConfirm:()=>GJ()}):GJ()},"Import Collections")},exportGifs:{type:6,description:"Export collections.",component:()=>i(ue,{onClick:bIe},"Export Collections")},resetCollections:{type:6,description:"Reset collections.",component:()=>i(ue,{onClick:()=>Oo.show({title:"Are you sure?",body:"Resetting collections will remove all your collections.",confirmText:"Reset",confirmColor:ue.Colors.RED,cancelText:"Nevermind",onConfirm:async()=>{await Le.set(Fy,[]),_y()}})},"Reset Collections")}})});function I8(e){try{let t=new URL(e);return t.search="",t.href}catch{return e}}var wIe=h(()=>{"use strict";d()});function AIe(e){let t=TM(e);return t&&L0t.includes(t)}var L0t,kIe=h(()=>{"use strict";d();UJ();L0t=["mp3","wav","ogg","aac","m4a","wma","flac"]});function ax(e){return`${e}${crypto.randomUUID()}`}var HJ=h(()=>{"use strict";d()});function CIe(e){return!Number.isNaN(en.extractTimestamp(e))}function F0t(e,t){let o=t?.closest("li");if(!t||!o?.id)return null;let[r,n]=o.id.split("-").slice(2);if(!r||!n||!CIe(r)||!CIe(n))return null;let a=lt.getMessage(r,n);return!a||!a.embeds.length&&!a.attachments.length?null:jJ(e,a)}function _0t(e,t){let o=e.closest('[class*="imageWrapper"]'),r=o?.querySelector("video")?.src??o?.querySelector("img")?.src;return r?jJ(r,t):null}function jJ(e,t){if(!t.embeds.length&&!t.attachments.length||AIe(e))return null;let o=I8(e),r=t.embeds.find(a=>[a.url&&I8(a.url),a.image&&I8(a.image.url),a.image?.proxyURL,a.video?.proxyURL,a.thumbnail?.proxyURL].some(l=>l===o));if(r){if(r.image)return{id:ax(xn.store.itemPrefix),height:r.image.height,width:r.image.width,src:r.image.proxyURL,url:r.image.url};if(r.video?.proxyURL)return{id:ax(xn.store.itemPrefix),height:r.video.height,width:r.video.width,src:r.video.proxyURL,url:r.provider?.name&&O0t.includes(r.provider.name.toLowerCase())?r.url??r.video.url:r.video.url};if(r.thumbnail?.proxyURL)return{id:ax(xn.store.itemPrefix),height:r.thumbnail.height,width:r.thumbnail.width,src:r.thumbnail.proxyURL,url:r.thumbnail.url}}let n=t.attachments.find(a=>I8(a.url)===o||a.proxy_url===o);return n?{id:ax(xn.store.itemPrefix),height:n.height??50,width:n.width??50,src:n.proxy_url,url:n.url,channelId:t.channel_id,messageId:t.id,attachmentId:n.id}:null}function TIe(e,t,o){if(e&&t)return jJ(t,e);if(e&&o&&!t)return _0t(o,e);if(t&&o&&!e){let r=t.startsWith("https://discord.com/")?o.parentElement?.querySelector("img")?.src??t:t;return F0t(r,o)}return null}var O0t,IIe=h(()=>{"use strict";d();C();zy();wIe();kIe();HJ();O0t=["tenor","klipy"]});function EIe(e){ce(t=>i(BIe,{props:t,title:"Collection Information",rows:[{label:"Name",value:rx(e.name)},{label:"Gifs",value:String(e.gifs.length)},{label:"Created At",value:e.createdAt?new Date(e.createdAt).toLocaleString():"Unknown"},{label:"Last Updated",value:e.lastUpdated?new Date(e.lastUpdated).toLocaleString():"Unknown"}]}))}function DIe(e){ce(t=>i(BIe,{props:t,title:"Information",rows:[{label:"Added At",value:e.addedAt?new Date(e.addedAt).toLocaleString():"Unknown"},{label:"Width",value:String(e.width)},{label:"Height",value:String(e.height)}]}))}function PIe(e){ce(t=>i(U0t,{props:t,gifId:e}))}function MIe(e){ce(t=>i(z0t,{props:t,gif:e}))}function NIe(e){ce(t=>i($0t,{props:t,name:e}))}function BIe({props:e,title:t,rows:o}){return i(be,{...e,size:"sm",title:t,actions:[{text:"Close",variant:"secondary",onClick:e.onClose}]},i("section",null,o.map(r=>i(pe,{key:r.label,className:dr("info-row")},i(oe,{className:dr("info-title")},r.label),i(U,{className:dr("info-text")},r.value)))))}function U0t({props:e,gifId:t}){return i(be,{...e,size:"sm",title:"Move To Collection",actions:[{text:"Close",variant:"secondary",onClick:e.onClose}]},i(oe,{style:{marginBottom:"10px"}},"Select a collection to move the item to"),i("div",{className:dr("buttons")},Yr.filter(o=>o.name!==C8(t)).map(o=>i(ue,{key:o.name,className:dr("button"),onClick:async()=>{let r=C8(t);r&&(await vIe(t,r,o.name),Q.dispatch({type:"GIF_PICKER_QUERY",query:""}),Q.dispatch({type:"GIF_PICKER_QUERY",query:r}),e.onClose())}},rx(o.name)))))}function z0t({props:e,gif:t}){let[o,r]=T(""),n=jt(a=>{a?.preventDefault(),o.length&&(mIe(o,[t]),e.onClose())},[o,t,e]);return i(be,{...e,size:"sm",title:"Create Collection",actions:[{text:"Create",onClick:n,disabled:!o.length,variant:"primary"}]},i("form",{onSubmit:n},i(oe,{className:dr("rename-text")},"Collection Name"),i(Te,{onChange:r})))}function $0t({props:e,name:t}){let o=xn.store.collectionPrefix,r=t.startsWith(o)?t.slice(o.length):t,[n,a]=T(r),s=n.length>=25,l=jt(async c=>{c?.preventDefault(),!(!n.length||s)&&(await gIe(t,n),e.onClose())},[n,t,s,e]);return i(be,{...e,size:"sm",title:"Rename Collection",actions:[{text:"Rename",onClick:l,disabled:!n.length||s,variant:"primary"}]},i("form",{onSubmit:l},i(U,{className:dr("rename-text")},"New Collection Name"),i(Te,{value:n,className:X(dr("rename-input"),s?dr("input-warning"):""),onChange:a}),s&&i(U,{className:dr("warning-text")},"Name can't be longer than 24 characters")))}var RIe=h(()=>{"use strict";d();Lt();We();Je();Be();C();zy();Uy();Ig()});function G0t(e){Q.dispatch({type:"GIF_PICKER_QUERY",query:""}),Q.dispatch({type:"GIF_PICKER_QUERY",query:e})}function LIe(e){return i(P.MenuItem,{label:"Add To Collection",key:"add-to-collection",id:"add-to-collection"},Yr.length>0&&Yr.map(t=>i(P.MenuItem,{key:t.name,id:t.name,label:rx(t.name),action:()=>fIe(t.name,e)})),Yr.length>0&&i(P.MenuSeparator,{key:"separator"}),i(P.MenuItem,{key:"create-collection",id:"create-collection",label:"Create Collection",action:()=>MIe(e)}))}function qJ({type:e,nameOrId:t,instance:o}){return i(P.MenuGroup,{key:`remove-item-${t}`},e==="collection"&&i(f,null,i(P.MenuItem,{key:"collection-information",id:"collection-information",label:"Collection Information",action:()=>{let r=Yr.find(n=>n.name===t);r&&EIe(r)}}),i(P.MenuSeparator,{key:"collection-sep-1"}),i(P.MenuItem,{key:"rename-collection",id:"rename-collection",label:"Rename",action:()=>NIe(t)})),e==="gif"&&i(f,null,i(P.MenuItem,{key:"gif-information",id:"gif-information",label:"Information",action:()=>{let r=$J(t);r&&DIe(r)}}),i(P.MenuSeparator,{key:"gif-sep-1"}),i(P.MenuItem,{key:"copy-url",id:"copy-url",label:"Copy URL",action:()=>{let r=$J(t);r&&(po(r.url),ne("URL copied to clipboard",D.Type.SUCCESS))}}),i(P.MenuItem,{key:"move-to-collection",id:"move-to-collection",label:"Move To Collection",action:()=>PIe(t)}),i(P.MenuSeparator,{key:"gif-sep-2"})),i(P.MenuItem,{key:"delete-collection",id:"delete-collection",label:e==="collection"?"Delete Collection":"Remove",action:()=>{let r=async()=>{if(e==="collection")xIe(t),o.forceUpdate();else{let n=C8(t);await hIe(t),n&&G0t(n)}};if(xn.store.stopWarnings){r();return}Oo.show({title:"Are you sure?",body:`Do you really want to ${e==="collection"?"delete this collection":"remove this item"}?`,confirmText:e==="collection"?"Delete":"Remove",confirmColor:ue.Colors.RED,cancelText:"Nevermind",onConfirm:r})}}))}function FIe(e,t,o,r){let n={id:ax(xn.store.itemPrefix),src:e,url:t,height:o,width:r};return i(P.MenuGroup,{key:"gif-collections-group"},xn.store.showCopyImageLink&&i(P.MenuItem,{label:"Copy Image Link",key:"copy-image-link",id:"copy-image-link",action:()=>{po(t),ne("Image link copied to clipboard",D.Type.SUCCESS)}}),LIe(n))}var OIe,_Ie=h(()=>{"use strict";d();Fo();mi();C();zy();Uy();IIe();Ig();HJ();RIe();OIe=(e,t)=>{if(!t)return;let{message:o,itemSrc:r,itemHref:n,target:a}=t,s=TIe(o,r??n,a);if(!s)return;let l=wt("open-native-link",e)??wt("copy-link",e);!l||l.some(c=>c?.props?.id==="add-to-collection")||(xn.store.showCopyImageLink&&l.push(i(P.MenuItem,{label:"Copy Image Link",key:"copy-image-link",id:"copy-image-link",action:()=>{po(s.url),ne("Image link copied to clipboard",D.Type.SUCCESS)}})),l.push(LIe(s)))}});function IM(e){if(!e?.startsWith("https://cdn.discordapp.com")&&!e?.startsWith("https://media.discordapp.net")&&!e?.startsWith("https://images-ext-1.discordapp.net")&&!e?.startsWith("https://images-ext-2.discordapp.net"))return!1;try{let t=new URL(e).searchParams.get("ex");return t?parseInt(t,16)*1e3{"use strict";d();C();Ig()});var EM,$Ie,WJ,KJ,DM,GIe=h(()=>{"use strict";d();dIe();O();R();C();_Ie();zy();Uy();zJ();Ig();zIe();WJ=!1,KJ=null,DM=S({name:"GifCollections",description:"Allows you to create collections of gifs.",tags:["Chat","Emotes"],authors:[F.creations],settings:xn,contextMenus:{message:OIe},patches:[{find:"renderCategoryExtras",replacement:[{match:/(render\(\){)(.{1,50}getItemGrid)/,replace:"$1;$self.insertCollections(this);$2"},{match:/("span",\{className:\i\.\i,children:)(\i)/,replace:"$1$self.hidePrefix($2),"}]},{find:"renderHeaderContent()",replacement:{match:/(renderContent\(\){)(.{1,50}resultItems)/,replace:"$1$self.renderContent(this);$2"}},{find:'type:"GIF_PICKER_QUERY"',replacement:{match:/(function \i\(.{1,10}\){)(.{1,200}.GIFS_SEARCH,query:)/,replace:"$1if($self.shouldStopFetch(arguments[0])) return;$2"}}],start(){_y(),EM=xn.store.collectionPrefix,$Ie=xn.store.itemPrefix},sortedCollections(){let e=[...Yr],t=xn.store.collectionsSortType,o=xn.store.collectionsSortOrder==="asc"?1:-1;return e.sort((r,n)=>{switch(t){case $s.NAME:return r.name.localeCompare(n.name)*o;case $s.CREATION_DATE:return((r.createdAt??0)-(n.createdAt??0))*o;case $s.MODIFIED_DATE:return((r.lastUpdated??0)-(n.lastUpdated??0))*o;default:return 0}})},renderContent(e){if(!e.props.query.startsWith(EM))return;let t=Yr.find(n=>n.name===e.props.query);if(!t)return;e.props.resultItems=t.gifs.map(n=>({id:n.id,format:nx(n.src),src:n.src,url:n.url,width:n.width,height:n.height})).reverse();let o=t.gifs.filter(n=>n.src&&n.url&&(IM(n.src)||IM(n.url)));if(o.length===0)return;let r=[...new Set(o.flatMap(n=>[n.src,n.url].filter(a=>!!a&&IM(a))))];WJ||this.refreshExpiredUrls(r,o,e.props.query)},async refreshExpiredUrls(e,t,o){WJ=!0;try{let r={};for(let a=0;at.name===e)},gifPickerContextMenu(e,t){let o=e?.props?.item;if(!o)return;let{name:r,id:n}=o;if(r?.startsWith(EM))return qJ({type:"collection",nameOrId:r,instance:e});if(n?.startsWith($Ie))return qJ({type:"gif",nameOrId:n,instance:e});let{src:a,url:s,height:l,width:c}=o;if(!(!a||!s||!l||!c))return FIe(a,s,l,c)}})});function QJ(e){return`"${e.trim().replace(/\\/g,"\\\\").replace(/"/g,'\\"')||"Arial"}", sans-serif`}function ZJ(e,t){return`${e}px ${QJ(t)}`}function j0t(e){let t=new CSSStyleSheet;t.replaceSync(e);let o=new Set(["auto","block","fallback","optional","swap"]);return Array.from(t.cssRules).filter(r=>r.type===CSSRule.FONT_FACE_RULE).map(r=>{let a=r.style.getPropertyValue("src").match(/url\((["']?)(.*?)\1\)/)?.[2];return a?{descriptors:{display:o.has(r.style.getPropertyValue("font-display"))?r.style.getPropertyValue("font-display"):"swap",stretch:r.style.getPropertyValue("font-stretch")||void 0,style:r.style.getPropertyValue("font-style")||"normal",unicodeRange:r.style.getPropertyValue("unicode-range")||void 0,weight:r.style.getPropertyValue("font-weight")||"400"},url:a}:null}).filter(r=>r!==null)}async function q0t(e,t,o){try{let r=await fetch(t);if(!r.ok)return!1;let n=await r.blob(),a=URL.createObjectURL(n);qIe.add(a);try{let s=new FontFace(e,`url(${a})`,o);return await s.load(),document.fonts.add(s),!0}catch{return URL.revokeObjectURL(a),qIe.delete(a),!1}}catch{return!1}}function YJ(e){let t=e.trim();if(!t||HIe.has(t))return Promise.resolve();let o=jIe.get(t);if(o)return o;let r=(async()=>{try{let n=await fetch(H0t(t));if(!n.ok)return;let a=await n.text();if(!a)return;let s=j0t(a);(await Promise.all(s.map(u=>q0t(t,u.url,u.descriptors)))).some(Boolean)&&HIe.add(t)}catch{}})();return jIe.set(t,r),r}async function JJ(){return E8||PM||(PM=fetch("https://fonts.google.com/$rpc/fonts.fe.catalog.actions.metadata.MetadataService/FontSearch",{body:JSON.stringify([["",null,null,null,null,null,1],[5],null,400]),headers:{"content-type":"application/json+protobuf","x-user-agent":"grpc-web-javascript/0.1"},method:"POST"}).then(e=>e.ok?e.json():null).then(e=>{let t=Array.isArray(e?.[1])?e[1]:[],o=[];for(let r of t){if(!Array.isArray(r)||!Array.isArray(r[1]))continue;let n=r[1],a=typeof n[0]=="string"?n[0]:"";if(!a||a.length>100||!/^[a-zA-Z0-9\s\-_']+$/.test(a))continue;let s=typeof n[1]=="string"?n[1]:a,l=Array.isArray(n[2])?n[2].filter(p=>typeof p=="string"):[],c=typeof n[3]=="number"?n[3]:void 0,u=Array.isArray(n[6])?n[6].filter(p=>Array.isArray(p)).map(p=>({axes:(Array.isArray(p[0])?p[0]:[]).filter(x=>Array.isArray(x)).map(x=>{let v=x[0],y=x[1],A=x[2];return typeof v!="string"||typeof y!="number"||typeof A!="number"?null:{tag:v,min:y,max:A}}).filter(x=>x!==null)})):[];o.push({authors:l,category:c,displayName:s,family:a,popularity:0,variants:u})}return o.sort((r,n)=>r.family.localeCompare(n.family)),E8=o,o}).catch(()=>(E8=[],E8)),PM)}var HIe,jIe,qIe,H0t,E8,PM,XJ=h(()=>{"use strict";d();HIe=new Set(["Arial"]),jIe=new Map,qIe=new Set,H0t=(e,t="")=>`https://fonts.googleapis.com/css2?family=${encodeURIComponent(e).replace(/%20/g,"+")}${t}&display=swap`;E8=null,PM=null});function VJ(e,t,o,r,n){e.font=ZJ(o,r);let a=t.split(" "),s=[],l="";for(let c of a){let u=l?`${l} ${c}`:c;e.measureText(u).width>n&&l?(s.push(l),l=c):l=u}return l&&s.push(l),{lines:s,lineHeight:o*1.2}}var WIe,eX=h(()=>{"use strict";d();XJ();WIe={type:"caption",name:"Caption",render:(e,t,o,r)=>{let{captionText:n,captionSize:a,fontFamily:s}=r;if(!n||o<=0)return;let l=t-20,{lines:c,lineHeight:u}=VJ(e,n,a,s,l),p=10,m=c.length*u+p*2,g=(o-m)/2;e.fillStyle="white",e.fillRect(0,0,t,o),e.fillStyle="black",e.font=ZJ(a,s),e.textAlign="center",e.textBaseline="top";for(let x=0;x{"use strict";d();KIe={type:"none",name:"None",render:()=>{}}});function ZIe(e,t,o,r){let n=(1-e)*(1-e)*t[0]+2*(1-e)*e*o[0]+e*e*r[0],a=(1-e)*(1-e)*t[1]+2*(1-e)*e*o[1]+e*e*r[1];return[n,a]}function YIe(e,t,o){let r=e[0]-t[0],n=e[1]-t[1],a=Math.sqrt(r**2+n**2);if(a===0)return e;let s=o/a;return[e[0]+r*s,e[1]+n*s]}function W0t(e,t,o,r,n,a){let s=[0,o*.1],l=[t*.5,o*.2],c=[t,o*.1];e.beginPath(),e.moveTo(0,0),e.lineTo(...s),e.quadraticCurveTo(...l,...c),e.lineTo(t,0),e.lineTo(0,0),e.fillStyle="white",e.fill(),e.beginPath(),e.moveTo(...s),e.quadraticCurveTo(...l,...c),e.strokeStyle="black",e.lineWidth=2,e.stroke();let u=.2,p=ZIe(a,s,l,c),m=ZIe(a+u,s,l,c),g=[r,n],x=5;e.beginPath(),e.moveTo(...YIe(p,g,x)),e.lineTo(r,n),e.lineTo(...YIe(m,g,x)),e.fillStyle="white",e.fill(),e.beginPath(),e.moveTo(...p),e.lineTo(r,n),e.lineTo(...m),e.strokeStyle="black",e.lineWidth=2,e.stroke()}var JIe,XIe=h(()=>{"use strict";d();JIe={type:"speechbubble",name:"Bubble",render:(e,t,o,r)=>{W0t(e,t,o,r.bubbleTipX,r.bubbleTipY,r.bubbleTipBase)}}});var MM,tX=h(()=>{"use strict";d();eX();QIe();XIe();MM=[KIe,WIe,JIe]});var VIe,eEe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/gifMaker/styles.css",{name:"src/equicordplugins/gifMaker/styles.css",source:`/* * Vencord, a Discord client mod * Copyright (c) 2025 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ .vc-gifmaker-modal-body { display: flex; flex-direction: column; gap: 12px; min-height: 500px; } .vc-gifmaker-preview-section { flex: 1; display: flex; align-items: center; justify-content: center; min-height: 0; overflow: hidden; } .vc-gifmaker-preview-wrapper { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; } .vc-gifmaker-preview { border-radius: 8px; max-width: 100%; max-height: 100%; object-fit: contain; display: block; } .vc-gifmaker-generating-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgb(0 0 0 / 50%); border-radius: 8px; color: var(--text-normal); font-weight: 600; } .vc-gifmaker-error-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgb(0 0 0 / 50%); border-radius: 8px; color: var(--status-danger); font-weight: 600; font-size: 13px; padding: 20px; text-align: center; } .vc-gifmaker-controls-section { flex: 0 0 auto; display: flex; flex-direction: column; gap: 4px; } .vc-gifmaker-section-heading { font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-muted); margin-top: 12px; margin-bottom: 4px; padding-top: 12px; border-top: 1px solid var(--background-modifier-accent); } .vc-gifmaker-section-heading:first-of-type { border-top: none; margin-top: 0; padding-top: 0; } .vc-gifmaker-preview-generating { opacity: 0.5; } .vc-gifmaker-preview-crosshair { cursor: crosshair; } .vc-gifmaker-label { display: block; margin-bottom: 4px; color: var(--text-muted); font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px; } .vc-gifmaker-input { width: 100%; padding: 8px 10px; border-radius: 6px; border: 1px solid var(--background-modifier-accent); background: var(--input-background); color: var(--text-normal); box-sizing: border-box; font-size: 14px; transition: border-color .15s ease; } .vc-gifmaker-input:focus { outline: none; border-color: var(--brand-500); } .vc-gifmaker-dims-row { display: flex; gap: 12px; margin-bottom: 12px; } .vc-gifmaker-field { flex: 1; } .vc-gifmaker-section { margin-bottom: 4px; } .vc-gifmaker-section-hint { margin-bottom: 8px; color: var(--text-muted); font-size: 12px; font-style: italic; } .vc-gifmaker-font-selector { flex: 1 1 auto; min-width: 0; } .vc-gifmaker-font-selector > div { width: 100%; } .vc-gifmaker-font-range { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; } .vc-gifmaker-font-range > div:first-child { min-width: 62px; flex-shrink: 0; font-size: 13px; color: var(--text-muted); font-weight: 500; } .vc-gifmaker-font-range span { min-width: 36px; text-align: right; font-size: 13px; color: var(--text-normal); font-weight: 600; flex-shrink: 0; } `,classNames:{},dom:null});VIe="src/equicordplugins/gifMaker/styles.css"});var Al,oX=h(()=>{"use strict";d();Al={width:256,height:256,captionMode:"none",captionText:"",captionSize:40,fontFamily:"Arial",bubbleTipX:80,bubbleTipY:80,bubbleTipBase:.1}});function nX(e){let t=e.message,o=e.attachment;if(o?.proxy_url&&tEe.some(a=>o.content_type?.startsWith(a)))return{url:o.proxy_url??o.url,isVideo:o.content_type?.startsWith("video/")||!1,sourceWidth:o.width,sourceHeight:o.height};let r=t?.attachments?.find(a=>tEe.some(s=>a.content_type?.startsWith(s)));if(r?.proxy_url)return{url:r.proxy_url??r.url,isVideo:r.content_type?.startsWith("video/")||!1,sourceWidth:r.width,sourceHeight:r.height};if(t?.embeds)for(let a of t.embeds){let s=a?.video;if(s?.proxyURL||s?.url)return{url:s.proxyURL??(s.url||""),isVideo:!0,sourceWidth:s.width,sourceHeight:s.height};let l=a?.image??a?.thumbnail;if(l?.proxyURL||l?.url)return{url:l.proxyURL??(l.url||""),isVideo:!1,sourceWidth:l.width,sourceHeight:l.height}}let n=e.itemHref??e.itemSrc??e.src;return n&&K0t.test(n)?{url:n,isVideo:Q0t.test(n)}:null}function rX(e,t,o,r){return ia.clamp(e||r,t,o)}function oEe(e,t,o,r,n,a){if(o&&r){if(o<=e&&r<=t)return[o,r];let s=Math.min(e/o,t/r);return[Math.round(o*s),Math.round(r*s)]}return[n??Al.width,a??Al.height]}var tEe,K0t,Q0t,nEe=h(()=>{"use strict";d();C();oX();tEe=["image/png","image/jpeg","image/jpg","image/webp","image/gif","video/mp4","video/webm","video/quicktime"],K0t=/\.(png|jpe?g|webp|gif|mp4|webm|mov)([?#]|$)/i,Q0t=/\.(mp4|webm|mov)([?#]|$)/i});var iX=xa(Eg=>{"use strict";d();Object.defineProperty(Eg,"__esModule",{value:!0});Eg.loop=Eg.conditional=Eg.parse=void 0;var Z0t=function e(t,o){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:r;if(Array.isArray(o))o.forEach(function(s){return e(t,s,r,n)});else if(typeof o=="function")o(t,r,n,e);else{var a=Object.keys(o)[0];Array.isArray(o[a])?(n[a]={},e(t,o[a],r,n[a])):n[a]=o[a](t,r,n,e)}return r};Eg.parse=Z0t;var Y0t=function(t,o){return function(r,n,a,s){o(r,n,a)&&s(r,t,n,a)}};Eg.conditional=Y0t;var J0t=function(t,o){return function(r,n,a,s){for(var l=[],c=r.pos;o(r,n,a);){var u={};if(s(r,t,n,u),r.pos===c)break;c=r.pos,l.push(u)}return l}};Eg.loop=J0t});var aX=xa(Ei=>{"use strict";d();Object.defineProperty(Ei,"__esModule",{value:!0});Ei.readBits=Ei.readArray=Ei.readUnsigned=Ei.readString=Ei.peekBytes=Ei.readBytes=Ei.peekByte=Ei.readByte=Ei.buildStream=void 0;var X0t=function(t){return{data:t,pos:0}};Ei.buildStream=X0t;var rEe=function(){return function(t){return t.data[t.pos++]}};Ei.readByte=rEe;var V0t=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function(o){return o.data[o.pos+t]}};Ei.peekByte=V0t;var NM=function(t){return function(o){return o.data.subarray(o.pos,o.pos+=t)}};Ei.readBytes=NM;var eht=function(t){return function(o){return o.data.subarray(o.pos,o.pos+t)}};Ei.peekBytes=eht;var tht=function(t){return function(o){return Array.from(NM(t)(o)).map(function(r){return String.fromCharCode(r)}).join("")}};Ei.readString=tht;var oht=function(t){return function(o){var r=NM(2)(o);return t?(r[1]<<8)+r[0]:(r[0]<<8)+r[1]}};Ei.readUnsigned=oht;var nht=function(t,o){return function(r,n,a){for(var s=typeof o=="function"?o(r,n,a):o,l=NM(t),c=new Array(s),u=0;u{"use strict";d();Object.defineProperty(RM,"__esModule",{value:!0});RM.default=void 0;var Dg=iX(),Ao=aX(),BM={blocks:function(t){for(var o=0,r=[],n=t.data.length,a=0,s=(0,Ao.readByte)()(t);s!==o&&s;s=(0,Ao.readByte)()(t)){if(t.pos+s>=n){var l=n-t.pos;r.push((0,Ao.readBytes)(l)(t)),a+=l;break}r.push((0,Ao.readBytes)(s)(t)),a+=s}for(var c=new Uint8Array(a),u=0,p=0;p{"use strict";d();Object.defineProperty(LM,"__esModule",{value:!0});LM.deinterlace=void 0;var mht=function(t,o){for(var r=new Array(t.length),n=t.length/o,a=function(g,x){var v=t.slice(x*o,(x+1)*o);r.splice.apply(r,[g*o,o].concat(v))},s=[0,4,2,1],l=[8,8,4,2],c=0,u=0;u<4;u++)for(var p=s[u];p{"use strict";d();Object.defineProperty(OM,"__esModule",{value:!0});OM.lzw=void 0;var fht=function(t,o,r){var n=4096,a=-1,s=r,l,c,u,p,m,g,x,B,v,y,N,A,q,$,Z,re,k=new Array(r),w=new Array(n),I=new Array(n),E=new Array(n+1);for(A=t,c=1<>=p,B-=p,v>l||v==m)break;if(v==c){p=A+1,u=(1<c;)E[$++]=I[v],v=w[v];q=I[v]&255,E[$++]=q,l{"use strict";d();Object.defineProperty(Pg,"__esModule",{value:!0});Pg.decompressFrames=Pg.decompressFrame=Pg.parseGIF=void 0;var ght=bht(iEe()),hht=iX(),xht=aX(),vht=aEe(),yht=sEe();function bht(e){return e&&e.__esModule?e:{default:e}}var Sht=function(t){var o=new Uint8Array(t);return(0,hht.parse)((0,xht.buildStream)(o),ght.default)};Pg.parseGIF=Sht;var wht=function(t){for(var o=t.pixels.length,r=new Uint8ClampedArray(o*4),n=0;n{let r=new Image;r.onload=()=>t(r),r.onerror=()=>o(new Error(`Failed to load image: ${e}`)),r.crossOrigin="anonymous";let n=sX(e);pEe(n)?mEe(n).then(a=>{_M.set(r,a),r.src=a}).catch(o):r.src=n})}function uEe(e){return new Promise((t,o)=>{let r=document.createElement("video");r.preload="auto",r.muted=!0,r.crossOrigin="anonymous",r.addEventListener("loadedmetadata",()=>{let{duration:n,videoWidth:a,videoHeight:s}=r;if(!isFinite(n)||n<=0||!a||!s){o(new Error(`Invalid video: duration=${n} w=${a} h=${s}`));return}t(r)},{once:!0}),r.addEventListener("error",()=>{o(new Error(`Video load failed: ${e} (code=${r.error?.code})`))},{once:!0}),r.src=e,r.load()})}function cX(e){let t=sX(e);return pEe(t)?mEe(t).then(o=>uEe(o).then(r=>(_M.set(r,o),r))):uEe(t)}function Eht(e){return new Promise(t=>{e.seeking?e.addEventListener("seeked",()=>t(),{once:!0}):t()})}function Dht(e,t,o){if(o.captionMode==="caption"&&o.captionText){let{lines:r,lineHeight:n}=VJ(e,o.captionText,o.captionSize,o.fontFamily,t-20);return Math.ceil(r.length*n+20)}return 0}async function uX(e,t,o,r,n,a){let s=document.createElement("canvas"),l=s.getContext("2d",{willReadFrequently:!0});if(!l)return new Blob;let c=Dht(l,e,o),u=t+c;s.width=e,s.height=u;let p=Math.round(1e3/dEe),m=[];for(let w=0;wE.type===o.captionMode);I&&(l.save(),I.render(l,e,c>0?c:t,o),l.restore()),m.push(l.getImageData(0,0,e,u).data)}let g=m.reduce((w,I)=>w+I.length,0),x=new Uint8ClampedArray(g),v=0;for(let w of m)x.set(w,v),v+=w.length;let y=(0,$y.quantize)(x,Cht),A=(0,$y.GIFEncoder)();for(let w=0;w{r.drawImage(o,0,0,t.width,t.height)})}finally{D8(o)}}async function Mht(e,t){let o=await cX(e);try{let{duration:r}=o,n=Math.min(Math.floor(r*dEe),kht),a=r/n,s=Math.round(a*1e3),l=new Array(n).fill(s);return await uX(t.width,t.height,t,n,async(c,u)=>{o.currentTime=u*a,await Eht(o),c.drawImage(o,0,0,t.width,t.height)},l)}finally{D8(o)}}function Nht(e,t){try{let o=e.startsWith("//")?`https:${e}`:e,r=o.match(fEe),n=r?.groups?`${decodeURIComponent(r.groups.protocol)}://${decodeURIComponent(r.groups.rest)}`:o;return new URL(n).pathname.toLowerCase().endsWith(t)}catch{return e.toLowerCase().endsWith(t)}}async function gEe(e,t,o){if(t)return Mht(e,o);if(Nht(e,".gif"))try{return await Bht(e,o)}catch(r){if(!(r instanceof Error)||r.message!=="No animated frames found")throw r}return Pht(e,o)}async function Bht(e,t){let o=await Iht(e),r=(0,UM.parseGIF)(o.buffer),n=(0,UM.decompressFrames)(r,!0);if(n.length<=1)throw new Error("No animated frames found");let a=r.lsd.width,s=r.lsd.height,l=document.createElement("canvas");l.width=a,l.height=s;let c=l.getContext("2d",{willReadFrequently:!0});if(!c)throw new Error("Failed to get canvas context for GIF compositing.");let u=document.createElement("canvas"),p=n.length,m=[],g=[];for(let x=0;x0){let I=n[x-1];if(I.disposalType===2)c.clearRect(I.dims.left,I.dims.top,I.dims.width,I.dims.height);else if(I.disposalType===3&&x>1){let E=m[x-2].getContext("2d");if(E){let N=E.getImageData(0,0,a,s);c.putImageData(N,0,0)}}}let y=new ImageData(new Uint8ClampedArray(v.patch),v.dims.width,v.dims.height);u.width=v.dims.width,u.height=v.dims.height;let A=u.getContext("2d");if(!A)throw new Error("Failed to get canvas context for patch rendering.");A.putImageData(y,0,0),c.drawImage(u,v.dims.left,v.dims.top);let k=document.createElement("canvas");k.width=a,k.height=s;let w=k.getContext("2d");if(!w)throw new Error("Failed to get canvas context for frame snapshot.");w.drawImage(l,0,0),m.push(k),x%20===19&&await lr(0)}return await uX(t.width,t.height,t,p,(x,v)=>{x.drawImage(m[v],0,0,t.width,t.height)},g)}var $y,UM,kht,dEe,Cht,Tht,FM,_M,fEe,hEe=h(()=>{"use strict";d();Be();$y=Xu(cv()),UM=Xu(cEe());tX();eX();kht=200,dEe=30,Cht=255,Tht=new Set(["cdn.discordapp.com","images-ext-1.discordapp.net","images-ext-2.discordapp.net","media.discordapp.net","media.tenor.com","tenor.com","media.giphy.com","media0.giphy.com","media1.giphy.com","media2.giphy.com","media3.giphy.com","media4.giphy.com"]),FM=VencordNative?.pluginHelpers?.gifMaker,_M=new WeakMap;fEe=/^https:\/\/(?:images-ext-\d+|cdn)\.discord(?:app|cdn)\.net\/external\/[^/]+\/(?https?)\/(?.+)$/i});function P8(e){return e.startsWith("//")?`https:${e}`:e}function xEe(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")}function zM(e,t=0,o=new Set){if(!e||t>2)return o;if(typeof e=="string")return xEe(e)&&o.add(P8(e)),o;if(Array.isArray(e)){for(let r of e)zM(r,t+1,o);return o}if(typeof e!="object")return o;for(let[r,n]of Object.entries(e)){let a=r.toLowerCase();if(typeof n=="string"){xEe(n)&&Rht.some(s=>a.includes(s))&&o.add(P8(n));continue}n&&typeof n=="object"&&Lht.some(s=>a.includes(s))&&zM(n,t+1,o)}return o}function vEe(e){let{host:t}=new URL(e),o=0;return(t.endsWith("discordapp.net")||t.endsWith("discordapp.com"))&&(o+=100),t.includes("images-ext")&&(o+=20),(t.includes("media.discordapp.net")||t.includes("cdn.discordapp.com"))&&(o+=10),t.endsWith("klipy.com")&&(o+=5),t.endsWith("tenor.com")&&(o+=5),e.includes(".gif")&&(o+=1),o}function yEe(e,t){let o=Array.from(t);if(!o.length)return[];let r=e?o.filter(n=>n!==e):o;return r.sort((n,a)=>vEe(a)-vEe(n)),e?[e,...r]:r}function bEe(e){return/\.(webm|mp4|m4v)(\?|$)/i.test(e)}function SEe(e){if(/\.gif(\?|$)/i.test(e))return e;let t=new URL(e),o=t.hostname;if(o.includes("tenor.com")){let r=t.pathname.split("/").filter(Boolean);if(r.length>=2){let n=r[r.length-2];r[r.length-2]=n.replace(/[PA].$/,"Ad"),r[r.length-1]="tenor.gif",t.pathname="/"+r.join("/")}return t.search="",t.href}if(o.includes("giphy.com")){let r=t.pathname.split("/").filter(Boolean);return r.length>=2?`https://i.giphy.com/${r[r.length-2]}.gif`:e}return e}function wEe(e){let t=new URL(e);return/discord(app)?\.(com|net|gg)/i.test(t.hostname)&&(t.searchParams.delete("format"),t.searchParams.delete("animated")),t.href}var Rht,Lht,AEe=h(()=>{"use strict";d();Rht=["url","src","proxy"],Lht=["gif","media","image","video","thumbnail","preview","result","item"]});function $M(e,t,o,r){return oEe(Wa.store.maxWidth,Wa.store.maxHeight,e,t,o,r)}function CEe({option:e}){return V.useEffect(()=>{YJ(e.value)},[e.value]),i("span",{style:{fontFamily:QJ(e.value)}},e.label)}function _ht({options:e}){let t=e[0];return t?i(CEe,{option:t}):null}function Uht({initialFont:e,onSelect:t}){let[o,r]=V.useState([]),[n,a]=V.useState(e!=="Arial"?e:null);V.useEffect(()=>{JJ().then(c=>{r(c)})},[]);let s=o.map(c=>({key:c.family,label:c.displayName,value:c.family})),l=c=>{a(c);let u=o.find(p=>p.family===c);u&&(YJ(c),t(u))};return o.length?i(qt,{placeholder:"Select a font...",options:s,maxVisibleItems:10,closeOnSelect:!0,select:l,isSelected:c=>c===n,serialize:c=>String(c),renderOptionLabel:c=>i(CEe,{option:c}),renderOptionValue:c=>i(_ht,{options:c})}):i("div",null,"Loading fonts...")}function pX({url:e,isVideo:t,sourceWidth:o,sourceHeight:r,...n}){let[a,s]=T(()=>{let[B,_]=$M(o,r,Wa.store.lastWidth,Wa.store.lastHeight);return{width:B,height:_,captionMode:Wa.store.lastCaptionMode,captionText:Wa.store.lastCaptionText,captionSize:Wa.store.lastCaptionSize,fontFamily:Wa.store.lastFontFamily||Al.fontFamily,bubbleTipX:Al.bubbleTipX,bubbleTipY:Al.bubbleTipY,bubbleTipBase:Wa.store.lastBubbleTipBase}}),[l,c]=T(null),[u,p]=T(null),[m,g]=T(!1),[x,v]=T(null),y=Se(null),A=Se(a),k=Se(0);A.current=a;let w=B=>{s(_=>{let q={..._,...B};return Wa.store.lastWidth=q.width,Wa.store.lastHeight=q.height,Wa.store.lastCaptionMode=q.captionMode,Wa.store.lastCaptionText=q.captionText,Wa.store.lastCaptionSize=q.captionSize,Wa.store.lastFontFamily=q.fontFamily,Wa.store.lastBubbleTipBase=q.bubbleTipBase,q})};G(()=>{if(o&&r){let[B,_]=$M(o,r);s(q=>({...q,width:B,height:_}));return}if(t){cX(e).then(B=>{let[_,q]=$M(B.videoWidth,B.videoHeight);s($=>({...$,width:_,height:q})),D8(B),B.remove()}).catch(B=>dX.error("auto-detect video failed",B));return}lX(e).then(B=>{let[_,q]=$M(B.naturalWidth,B.naturalHeight);s($=>({...$,width:_,height:q})),D8(B)}).catch(B=>dX.error("auto-detect image failed",B))},[o,r]),G(()=>{let B=setTimeout(()=>{let _=++k.current;g(!0);let{current:q}=A;gEe(e,t,q).then($=>{if(_!==k.current){URL.revokeObjectURL(URL.createObjectURL($));return}v(null),c($),p(re=>(re&&URL.revokeObjectURL(re),URL.createObjectURL($))),g(!1)}).catch($=>{_===k.current&&(dX.error("GIF generation failed",$),v($ instanceof Error?$.message:String($)),g(!1))})},300);return()=>clearTimeout(B)},[JSON.stringify(a.captionMode),a.captionText,a.captionSize,a.fontFamily,a.bubbleTipX,a.bubbleTipY,a.bubbleTipBase,a.width,a.height]);let I=B=>{if(a.captionMode!=="speechbubble")return;let _=y.current;if(!_)return;let q=_.getBoundingClientRect(),$=(B.clientX-q.left)/q.width*a.width,re=(B.clientY-q.top)/q.height*a.height;w({bubbleTipX:$,bubbleTipY:re})};return i(be,{...n,size:"lg",title:"Make GIF",actions:[{text:"Send",variant:"primary",onClick:()=>{if(!l)return;let B=zo();if(!B)return;let _=new File([l],"export.gif",{type:"image/gif"});Mr.promptToUpload([_],B,0),n.onClose?.()}},{text:"Export",variant:"primary",onClick:()=>{l&&q1(new File([l],"export.gif",{type:"image/gif"}))}}]},i("div",{className:ci("modal-body")},i("div",{className:ci("preview-section")},i("div",{className:ci("preview-wrapper")},i("img",{ref:y,alt:"GIF preview",src:u??"",onClick:I,className:ci("preview",{"preview-generating":m,"preview-crosshair":a.captionMode==="speechbubble"})}),m&&i("div",{className:ci("generating-overlay")},"Generating GIF..."),x&&!m&&i("div",{className:ci("error-overlay")},x))),i("div",{className:ci("controls-section")},i("div",{className:ci("section-heading")},"Captions"),i("div",{style:{display:"flex",gap:8},className:z.bottom16},MM.map(B=>i(de,{key:B.type,size:"min",onClick:()=>w({captionMode:B.type}),variant:a.captionMode===B.type?"primary":"secondary"},B.name))),a.captionMode==="caption"&&i("div",{className:ci("section")},i("div",{className:z.bottom16},i("label",{className:ci("label")},"Text"),i(Te,{value:a.captionText,onChange:B=>w({captionText:B}),placeholder:"Enter caption..."})),i("div",{className:"vc-gifmaker-font-range"},i("div",null,"Font"),i("div",{className:ci("font-selector")},i(Uht,{initialFont:a.fontFamily,onSelect:B=>{w({fontFamily:B.family})}}))),i("div",{className:"vc-gifmaker-font-range"},i("div",null,"Font size"),i(cn,{initialValue:a.captionSize,onValueChange:B=>w({captionSize:B}),markers:[10,15,20,30,40,50,60,70,80,90,100],minValue:10,maxValue:100}),i("span",null,a.captionSize.toFixed(2),"px"))),a.captionMode==="speechbubble"&&i("div",{className:ci("section")},i("div",{className:ci("section-hint")},"Click on the preview to position the bubble tip"),i("div",{className:"vc-gifmaker-font-range"},i("div",null,"Tip Base"),i(cn,{initialValue:Math.round(a.bubbleTipBase*100),onValueChange:B=>w({bubbleTipBase:B/100}),minValue:0,maxValue:80}),i("span",null,Math.round(a.bubbleTipBase*100),"%"))),i("div",{className:ci("section-heading")},"Dimensions"),i("div",{className:ci("dims-row")},i("div",{className:ci("field")},i("label",{className:ci("label")},"Width"),i("input",{type:"number",min:32,max:1024,value:a.width,onChange:B=>w({width:Number(B.target.value)}),onBlur:B=>w({width:rX(Number(B.target.value),32,1024,32)}),className:ci("input"),"aria-label":"Width"})),i("div",{className:ci("field")},i("label",{className:ci("label")},"Height"),i("input",{type:"number",min:32,max:1024,value:a.height,onChange:B=>w({height:Number(B.target.value)}),onBlur:B=>w({height:rX(Number(B.target.value),32,1024,32)}),className:ci("input"),"aria-label":"Height"}))))))}function zht(e){let t=typeof e.src=="string"?e.src:null,o=zM(e),r=new Set;t&&r.add(P8(t));for(let u of o)r.add(u);let n=t?P8(t):null,a=yEe(n,r);if(!a.length)return;let s=SEe(a[0]),l=wEe(s),c=bEe(l);ce(u=>i(pX,{url:l,isVideo:c,...u}))}var ci,dX,Wa,kEe,Oht,Fht,GM,TEe=h(()=>{"use strict";d();j();Tt();O();we();_e();He();Wt();R();ul();C();tX();XJ();eEe();oX();nEe();hEe();AEe();ci=K("vc-gifmaker-"),dX=new ie("gifMaker"),Wa=M({lastWidth:{type:1,default:Al.width,hidden:!0,description:""},lastHeight:{type:1,default:Al.height,hidden:!0,description:""},lastCaptionMode:{type:0,default:Al.captionMode,hidden:!0,description:""},lastCaptionText:{type:0,default:Al.captionText,hidden:!0,description:""},lastCaptionSize:{type:1,default:Al.captionSize,hidden:!0,description:""},lastFontFamily:{type:0,default:Al.fontFamily,hidden:!0,description:""},lastBubbleTipBase:{type:1,default:Al.bubbleTipBase,hidden:!0,description:""},maxWidth:{type:1,default:1280,description:"Maximum auto-fit width."},maxHeight:{type:1,default:720,description:"Maximum auto-fit height."}}),kEe="vc-gifmaker";Oht=(e,t)=>{let o=nX(t);o&&e.push(i(P.MenuItem,{id:kEe,label:"Make GIF",action:()=>ce(r=>i(pX,{url:o.url,isVideo:o.isVideo,sourceWidth:o.sourceWidth,sourceHeight:o.sourceHeight,...r}))}))},Fht=(e,t)=>{if(!t?.src||"href"in t&&!t.src||t.target?.classList?.contains("emoji"))return;let o=nX(t);o&&e.push(i(P.MenuItem,{id:kEe,label:"Make GIF",action:()=>ce(r=>i(pX,{url:o.url,isVideo:o.isVideo,sourceWidth:o.sourceWidth,sourceHeight:o.sourceHeight,...r}))}))};oo("GifMaker","gifMaker");GM=S({name:"GifMaker",description:"Create and caption GIFs from any media in chat or the GIF picker.",authors:[F.Leon135,F.benjii],tags:["Emotes","Media"],settings:Wa,managedStyle:VIe,contextMenus:{message:Oht,"image-context":Fht},start(){JJ()},gifPickerContextMenu(e,t){return e?.props?.item?.src?i(P.MenuItem,{id:"gif-maker-edit",key:"gif-maker-edit",label:"Edit GIF",action:()=>zht(e?.props?.item)}):null}})});var IEe=h(()=>{});async function jM(e){try{let t=`https://api.github.com/users/${e}`,o=await fetch(t);if(!o.ok)return null;let r=await o.json();return{username:r.login,totalRepos:r.public_repos,avatarUrl:r.avatar_url}}catch(t){return HM.error("Error fetching user info",t),null}}async function qM(e,t=30){try{let o=`https://api.github.com/user/${e}/repos?sort=stars&direction=desc&per_page=${t}`,r=await fetch(o);if(!r.ok)return null;let n=await r.json();return mX(n)}catch(o){return HM.error("Error fetching repos by ID",o),null}}async function WM(e,t=30){let o=`https://api.github.com/users/${e}/repos?sort=stars&direction=desc&per_page=${t}`,r=await fetch(o);if(!r.ok)throw new Error(`Error fetching repos by username: ${r.status}`);let n=await r.json();return mX(n)}async function KM(e){try{let t=`https://api.github.com/users/${e}/orgs`,o=await fetch(t);return o.ok?await o.json():[]}catch(t){return HM.error("Error fetching user orgs",t),[]}}async function QM(e,t=30){try{let o=`https://api.github.com/orgs/${e}/repos?sort=stars&direction=desc&per_page=${t}`,r=await fetch(o);if(!r.ok)return[];let n=await r.json();return mX(n)}catch(o){return HM.error("Error fetching org repos",o),[]}}function mX(e){return e.sort((t,o)=>o.stargazers_count-t.stargazers_count)}var HM,fX=h(()=>{"use strict";d();He();HM=new ie("GitHubRepos")});function ZM(e){if(!e)return"https://cdn.jsdelivr.net/gh/devicons/devicon@develop/icons/github/github-original.svg";let t=$ht[e.toLowerCase()]??e.toLowerCase().replace(/\s+/g,"");return`https://cdn.jsdelivr.net/gh/devicons/devicon@develop/icons/${t}/${t}-original.svg`}function YM(e,t,o,r,n){let a=[];t.length&&a.push({key:_c,label:e,avatarUrl:n,repos:t});for(let s of o){let l=r[s.login];l?.length&&a.push({key:s.login,label:s.login,avatarUrl:s.avatar_url,repos:l})}return a}function JM(e,t){let o=e.find(a=>a.key===_c),n=[...e.filter(a=>a.key!==_c)].sort((a,s)=>t==="alpha"?a.label.localeCompare(s.label):s.repos.length-a.repos.length);return o?[o,...n]:n}var $ht,_c,M8=h(()=>{"use strict";d();$ht={"c++":"cplusplus","c#":"csharp","f#":"fsharp","q#":"qsharp","objective-c":"objectivec","visual basic":"visualbasic",shell:"bash",batchfile:"bash","vim script":"vim",dockerfile:"docker",gdscript:"godot",html:"html5"};_c="__personal__"});function EEe(e){return Ght[e]||"#858585"}var Ght,DEe=h(()=>{"use strict";d();Ght={JavaScript:"#f1e05a",TypeScript:"#3178c6",Python:"#3572A5",Java:"#b07219","C#":"#178600","C++":"#f34b7d",C:"#555555",HTML:"#e34c26",CSS:"#563d7c",PHP:"#4F5D95",Ruby:"#701516",Go:"#00ADD8",Rust:"#dea584",Swift:"#ffac45",Kotlin:"#A97BFF",Dart:"#00B4AB",Shell:"#89e051",PowerShell:"#012456",Lua:"#000080",Perl:"#0298c3",R:"#198CE7",Scala:"#c22d40",Haskell:"#5e5086",Elixir:"#6e4a7e",Clojure:"#db5855",Vue:"#41b883",Svelte:"#ff3e00","Jupyter Notebook":"#DA5B0B",Assembly:"#6E4C13",COBOL:"#004B85",CoffeeScript:"#244776",Crystal:"#000100",D:"#BA595E","F#":"#B845FC",Fortran:"#4d41b1",GLSL:"#5686A5",Groovy:"#e69f56",Julia:"#a270ba",Markdown:"#083fa1",MATLAB:"#bb92ac","Objective-C":"#438eff",OCaml:"#3be133",Pascal:"#E3F171",Prolog:"#74283c",PureScript:"#1D222D",Racket:"#3c5caa",Raku:"#0000fb",Reason:"#ff5847",SCSS:"#c6538c",Solidity:"#AA6746",Tcl:"#e4cc98",Verilog:"#b2b7f8",VHDL:"#adb2cb",WebAssembly:"#04133b",Zig:"#ec915c"}});function PEe({className:e,width:t=16,height:o=16}){return i("svg",{className:e,width:t,height:o,viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},i("path",{d:"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25z"}))}var MEe=h(()=>{"use strict";d()});function XM({repo:e,showStars:t,showLanguage:o}){let r=()=>window.open(e.html_url,"_blank"),n=EEe(e?.language);return i("div",{className:rn("card"),onClick:r},i("div",{className:rn("art"),style:{backgroundColor:`${n}2b`}},i("img",{className:rn("art-icon"),src:ZM(e.language),alt:""})),i("div",{className:rn("info")},i(Y,{size:"sm",weight:"semibold",className:rn("name")},e.name),e.description&&i(Y,{size:"sm",className:rn("description")},e.description),(o||t)&&i("div",{className:rn("meta")},o&&e.language&&i("span",{className:rn("language")},i("span",{className:rn("language-color"),style:{backgroundColor:n}}),e.language),t&&i("span",{className:rn("stars")},i(PEe,{className:rn("star-icon"),width:12,height:12}),e.stargazers_count.toLocaleString()))),i("svg",{className:rn("link"),"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M8 5a1 1 0 0 0 0 2h7.59L5.29 17.3a1 1 0 1 0 1.42 1.4L17 8.42V16a1 1 0 1 0 2 0V6a1 1 0 0 0-1-1H8Z"})))}var gX=h(()=>{"use strict";d();yt();DEe();M8();Gy();MEe()});function NEe({className:e,width:t=16,height:o=16}){return i("svg",{className:e,width:t,height:o,viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg",fill:"none"},i("path",{fill:"currentColor",d:"M4.5 2a.75.75 0 0 1 .75.75v8.69l1.72-1.72a.75.75 0 1 1 1.06 1.06l-3 3a.75.75 0 0 1-1.06 0l-3-3a.75.75 0 1 1 1.06-1.06l1.72 1.72V2.75A.75.75 0 0 1 4.5 2ZM11.5 14a.75.75 0 0 1-.75-.75v-8.69l-1.72 1.72a.75.75 0 1 1-1.06-1.06l3-3a.75.75 0 0 1 1.06 0l3 3a.75.75 0 1 1-1.06 1.06l-1.72-1.72v8.69a.75.75 0 0 1-.75.75Z"}))}var BEe=h(()=>{"use strict";d()});function VM({groups:e,activeKey:t,onSelect:o,sortMode:r,onToggleSort:n,canSort:a}){if(e.length<=1&&!a)return null;let s=l=>{l.deltaY!==0&&(l.currentTarget.scrollLeft+=l.deltaY)};return i("div",{className:rn("subtabs")},i("div",{className:rn("subtabs-list"),onWheel:s},e.map(l=>i("div",{key:l.key,className:X(rn("subtab"),t===l.key&&rn("subtab-active")),onClick:()=>o(l.key)},l.avatarUrl&&i("img",{className:rn("subtab-avatar"),src:l.avatarUrl,alt:""}),i("span",{className:rn("subtab-label")},l.label),i("span",{className:rn("subtab-count")},l.repos.length)))),a&&i("div",{className:rn("sort-toggle"),onClick:n,title:r==="count"?"Sorted by repo count. Click to sort A-Z":"Sorted A-Z. Click to sort by repo count"},i(NEe,{className:rn("sort-icon"),width:14,height:14}),i("span",null,r==="count"?"Most repos":"A-Z")))}var hX=h(()=>{"use strict";d();Be();Gy();BEe()});function REe({groups:e,initialActiveKey:t,username:o,rootProps:r}){let[n,a]=T(t),[s,l]=T("count"),c=JM(e,s),u=c.find(p=>p.key===n)??c[0];return i(be,{...r,className:rn("modal"),size:"lg",title:`${o}'s GitHub Repositories`,actions:[{text:"View on GitHub",variant:"link",onClick:()=>window.open(`https://github.com/${o}?tab=repositories`,"_blank")},{text:"Close",variant:"secondary",onClick:r.onClose}]},i("div",{className:rn("modal-content")},i(VM,{groups:c,activeKey:u?.key??_c,onSelect:a,sortMode:s,onToggleSort:()=>l(p=>p==="count"?"alpha":"count"),canSort:c.length>2}),i("div",{className:rn("list","modal-list")},u?.repos.map(p=>i(XM,{key:p.id,repo:p,showStars:sx.store.showStars,showLanguage:sx.store.showLanguage})))))}var LEe=h(()=>{"use strict";d();M8();C();Gy();gX();hX()});function OEe({id:e,isSideBar:t=!1}){let[o,r]=T([]),[n,a]=T([]),[s,l]=T(!0),[c,u]=T(null),[p,m]=T(null),g=()=>{p&&ce(y=>i(REe,{groups:n.length?n:[{key:_c,label:p?.username??"Personal",avatarUrl:p?.avatarUrl,repos:o}],initialActiveKey:_c,username:p.username,rootProps:y}))};if(G(()=>{(async()=>{try{let A=Co.getUserProfile(e);if(!A){l(!1);return}let k=A.connectedAccounts;if(!k?.length){l(!1);return}let w=k.find(re=>re.type==="github");if(!w){l(!1);return}let I=w.name,E=await jM(I);E&&m(E);let N=w.id,B=await qM(N);B||(B=await WM(I)),r(B),l(!1);let _=await KM(I),q=await Promise.all(_.map(async re=>[re.login,await QM(re.login)])),$=Object.fromEntries(q);a(YM(E?.username??I,B,_,$,E?.avatarUrl))}catch(A){u(A instanceof Error?A.message:"Failed to fetch repositories"),l(!1)}})()},[e]),s||c||!o.length)return null;let x=o.slice(0,4),v=i("section",{className:eN.container},i("ul",{className:eN.cardsList,tabIndex:-1},i("li",{className:eN.firstCardContainer},i(eo,{className:lx.breadcrumb,onClick:g},i("div",{className:X(jht.overlay,lx.innerContainer,eN.card)},i(U,{size:t?"sm":"xs",weight:"medium"},"GitHub Repositories"),!!o.length&&i("div",{className:lx.icons},x.slice(0,4).map((y,A)=>{let k=A===3&&o.length>4;return i("div",{className:lx.icon,key:y.id},i("img",{src:ZM(y.language),alt:y.language??"Unknown",className:k?lx.displayCount:void 0}),k&&i("div",{className:lx.displayCountText},i(nr,{className:lx.displayCountTextColor,size:t?"sm":"xs",weight:"medium"},"+",o.length-4)))})))))));return t?i("div",{className:Hht.widgetPreviews},v):v}var Hht,eN,lx,jht,FEe=h(()=>{"use strict";d();Je();Jc();fX();M8();Be();le();C();LEe();Hht=Ie("widgetPreviews"),eN=Ie("cardsList","firstCardContainer","card","container"),lx=Ie("innerContainer","icons","icon","displayCount","displayCountText","displayCountTextColor","breadcrumb"),jht=Ie("overlay","isPrivate","outer")});function _Ee({id:e}){let[t,o]=T([]),[r,n]=T(!0),[a,s]=T(null),[l,c]=T(_c),[u,p]=T("count"),m=JM(t,u),g=m.find(x=>x.key===l)??m[0];if(G(()=>{(async()=>{try{let v=Co.getUserProfile(e);if(!v){n(!1);return}let y=v.connectedAccounts;if(!y?.length){n(!1);return}let A=y.find($=>$.type==="github");if(!A){n(!1);return}let k=A.name,w=await jM(k),I=A.id,E=await qM(I);E||(E=await WM(k));let N=await KM(k),B=await Promise.all(N.map(async $=>[$.login,await QM($.login)])),_=Object.fromEntries(B),q=YM(w?.username??k,E??[],N,_,w?.avatarUrl);o(q),c(q[0]?.key??_c),n(!1)}catch(v){let y=v instanceof Error?v.message:"Failed to fetch repositories";s(y),n(!1)}})()},[e]),!r&&(Y,rn("loading"),!a))return Y,rn("error"),t.length?i("div",{className:rn("container","tab")},i(VM,{groups:m,activeKey:g?.key??_c,onSelect:c,sortMode:u,onToggleSort:()=>p(x=>x==="count"?"alpha":"count"),canSort:m.length>2}),i("div",{className:rn("list")},g?.repos.map(x=>i(XM,{key:x.id,repo:x,showStars:sx.store.showStars,showLanguage:sx.store.showLanguage})))):null}var UEe=h(()=>{"use strict";d();yt();fX();M8();C();Gy();gX();hX()});var qht,rn,sx,tN,Gy=h(()=>{"use strict";d();IEe();j();Pe();O();we();R();le();C();FEe();UEe();qht=Oe(".getPreviewThemeColors","primaryColor:"),rn=K("vc-github-repos-"),sx=M({showStars:{type:3,description:"Show repository stars",default:!0},showLanguage:{type:3,description:"Show repository language",default:!0}}),tN=S({name:"GitHubRepos",description:"Displays a user's public GitHub repositories in their profile",dependencies:["ProfileCollectionsAPI"],tags:["Appearance"],authors:[F.talhakf,F.Panniku,F.benjii],settings:sx,patches:[{find:"#{intl::USER_PROFILE_ACTIVITY}",replacement:{match:/(\i)\.id!==\i\?\.id&&\i&&\(.{0,300}\.MUTUAL_GUILDS\}\)\)(?=,(\i))/,replace:'$&,$self.shouldShowGitHub($1.id)&&$2.push({text:"GitHub",section:"GITHUB"})'}},{find:".WIDGETS?",replacement:{match:/(\i)===\i\.\i\.WISHLIST/,replace:'$1==="GITHUB"?$self.renderProfileRepositoriesTab(arguments[0]):$&'}}],shouldShowGitHub(e){return Co.getUserProfile(e)?.connectedAccounts?.some(t=>t.type==="github")??!1},renderProfileCollection:{render:e=>i(OEe,{...e,id:e.user.id}),priority:0},renderProfileRepositoriesTab:H.wrap(e=>i(_Ee,{...e,id:e.user.id,theme:qht(e).theme}),{noop:!0})})});function Wht(e){let t=St(e,"input",""),o=""+zEe[Mg.store.defaultEngine]+encodeURIComponent(t);return Mg.store.customEngineURL&&(o=""+[Mg.store.customEngineURL]+encodeURIComponent(t)),Mg.store.hyperlink&&!Mg.store.embed?`[${t}](<${o}>)`:Mg.store.hyperlink?`[${t}](${o})`:Mg.store.embed?o:`<${o}>`}var zEe,Mg,oN,$Ee=h(()=>{"use strict";d();yr();j();O();R();zEe={Google:"https://www.google.com/search?q=",Bing:"https://www.bing.com/search?q=",Yahoo:"https://search.yahoo.com/search?p=",DuckDuckGo:"https://duckduckgo.com/?q=",Baidu:"https://www.baidu.com/s?wd=",Yandex:"https://yandex.com/search/?text=",Ecosia:"https://www.ecosia.org/search?q=",Ask:"https://www.ask.com/web?q=",AOL:"https://search.aol.com/aol/search?q=",LetMeGoogleThatForYou:"https://letmegooglethat.com/?q="},Mg=M({hyperlink:{type:3,description:"If the sent link should hyperlink with the query as the label",default:!1},embed:{type:3,description:"If the sent link should render an embed",default:!0},defaultEngine:{type:4,description:"The search engine to use",options:Object.keys(zEe).map((e,t)=>({label:e,value:e,default:t===0}))},customEngineURL:{description:"The URL of the Engine you wish to use",type:0,placeholder:""}}),oN=S({name:"GoogleThat",description:"Adds a command to send a internet search link",dependencies:["CommandsAPI"],tags:["Commands","Utility"],authors:[b.Samwich,F.KrystalSkull],searchTerms:["search","google","query","duckduckgo","command"],settings:Mg,commands:[{name:"googlethat",description:"send a search engine link",options:[{name:"input",description:"The search query",type:3,required:!0}],execute:e=>({content:Wht(e)})}]})});async function HEe(e,t){let o=t==="emojis",r=o?ar.getGuilds()[e.id]?.emojis:ra.getStickersByGuildId(e.id);if(!r)return console.log("Server not found!");let n=()=>{let l=window.GLOBAL_ENV.MEDIA_PROXY_ENDPOINT;return l.startsWith("//")?l.slice(2):l},a=async l=>{let c,u,p=n();if(o)c=l.animated?".gif":".png",u=`https://${p}/emojis/${l.id}${c}?size=512&quality=lossless`;else{c="."+Kht[l.format_type];let A=l.format_type===2?".png":c;u=`https://${p}/stickers/${l.id}${A}?size=4096&lossless=true`}let m=l.name.replace(/[<>:"/\\|?*]/g,"_"),g=`${m}_${l.id}${c}`,x=await fetch(u);if(!o&&l.format_type===2&&(!x.ok||x.headers.get("content-type")?.includes("text"))){let A=`https://${p}/stickers/${l.id}.gif?size=4096&lossless=true`,k=await fetch(A);k.ok&&!k.headers.get("content-type")?.includes("text")&&(x=k,c=".gif",g=`${m}_${l.id}${c}`)}let y=await(await x.blob()).arrayBuffer();return{file:new Uint8Array(y),filename:g}},s=r.map(l=>a(l));Promise.all(s).then(l=>{let c=Ow(Object.fromEntries(l.map(({file:m,filename:g})=>[g,m]))),u=new Blob([new Uint8Array(c)],{type:"application/zip"}),p=document.createElement("a");p.href=URL.createObjectURL(u),p.download=`${e.name}-${t}.zip`,p.click(),p.remove()}).catch(console.error)}var Kht,GEe,nN,jEe=h(()=>{"use strict";d();Fo();O();R();C();K1();Kht=[,"png","apng","json","gif"],GEe=(e,{guild:t})=>{let o=wt("privacy",e);o&&o.push(i(f,null,i(P.MenuItem,{id:"emoji.download",label:"Download Emojis",action:()=>HEe(t,"emojis")}),i(P.MenuItem,{id:"sticker.download",label:"Download Stickers",action:()=>HEe(t,"stickers")})))};nN=S({name:"GuildPickerDumper",description:"Context menu to dump and download a server's emojis and stickers.",tags:["Emotes","Servers","Utility"],authors:[F.Cortex,b.Samwich,F.Synth,b.thororen],contextMenus:{"guild-context":GEe,"guild-header-popout":GEe}})});function Qht(e){return i(Un,{onClick:e.onClick,tooltip:e.open?"Close":"Open"},i("svg",{fill:xX.store.color&&e.open?"#c32a32":"currentColor",fillRule:"evenodd",width:"20",height:"20",viewBox:"0 0 24 24",style:{scale:"1.096",translate:"0 -1px"}},e.open?i(f,null,i("path",{d:"M1.3 21.3a1 1 0 1 0 1.4 1.4l20-20a1 1 0 0 0-1.4-1.4l-20 20ZM3.16 16.05c.18.24.53.26.74.05l.72-.72c.18-.18.2-.45.05-.66a15.7 15.7 0 0 1-1.43-2.52.48.48 0 0 1 0-.4c.4-.9 1.18-2.37 2.37-3.72C7.13 6.38 9.2 5 12 5c.82 0 1.58.12 2.28.33.18.05.38 0 .52-.13l.8-.8c.25-.25.18-.67-.15-.79A9.79 9.79 0 0 0 12 3C4.89 3 1.73 10.11 1.11 11.7a.83.83 0 0 0 0 .6c.25.64.9 2.15 2.05 3.75Z"}),i("path",{d:"M8.18 10.81c-.13.43.36.65.67.34l2.3-2.3c.31-.31.09-.8-.34-.67a4 4 0 0 0-2.63 2.63ZM12.85 15.15c-.31.31-.09.8.34.67a4.01 4.01 0 0 0 2.63-2.63c.13-.43-.36-.65-.67-.34l-2.3 2.3Z"})," ",i("path",{d:"M9.72 18.67a.52.52 0 0 0-.52.13l-.8.8c-.25.25-.18.67.15.79 1.03.38 2.18.61 3.45.61 7.11 0 10.27-7.11 10.89-8.7a.83.83 0 0 0 0-.6c-.25-.64-.9-2.15-2.05-3.75a.49.49 0 0 0-.74-.05l-.72.72a.51.51 0 0 0-.05.66 15.7 15.7 0 0 1 1.43 2.52c.06.13.06.27 0 .4-.4.9-1.18 2.37-2.37 3.72C16.87 17.62 14.8 19 12 19c-.82 0-1.58-.12-2.28-.33Z"})):i("path",{d:"M22.89 11.7c.07.2.07.4 0 .6C22.27 13.9 19.1 21 12 21c-7.11 0-10.27-7.11-10.89-8.7a.83.83 0 0 1 0-.6C1.73 10.1 4.9 3 12 3c7.11 0 10.27 7.11 10.89 8.7Zm-4.5-3.62A15.11 15.11 0 0 1 20.85 12c-.38.88-1.18 2.47-2.46 3.92C16.87 17.62 14.8 19 12 19c-2.8 0-4.87-1.38-6.39-3.08A15.11 15.11 0 0 1 3.15 12c.38-.88 1.18-2.47 2.46-3.92C7.13 6.38 9.2 5 12 5c2.8 0 4.87 1.38 6.39 3.08ZM15.56 11.77c.2-.1.44.02.44.23a4 4 0 1 1-4-4c.21 0 .33.25.23.44a2.5 2.5 0 0 0 3.32 3.32Z"})))}function Zht({buttons:e}){let t=Array.isArray(e)?e:e==null?[]:[e];if(t.length===0||t.every(n=>n?.props?.disabled===!0))return null;let[o,r]=T(N8);return G(()=>{N8=o},[o]),i("div",{key:"chat-bar-buttons-menu",id:"chat-bar-buttons-menu",style:{display:"flex",flexWrap:"nowrap",overflowX:"auto",overflowY:"hidden"}},o&&e,i(Qht,{onClick:()=>r(!o),open:o}))}var N8,xX,rN,qEe=h(()=>{"use strict";d();Ba();j();O();R();C();xX=M({color:{type:3,description:"Color it red on open",default:!1},open:{type:3,description:"opened by default",default:!1,onChange:e=>{N8=e.open}}});Br("HideChatButtons","open","Open");Br("HideChatButtons","color","Color");rN=S({name:"HideChatButtons",description:"Able to hide the chat buttons",tags:["Chat","Utility"],authors:[F.iamme],dependencies:["ChatInputButtonAPI"],settings:xX,startAt:"Init",chatBarButtonWrapper:{wrapper:e=>i(Zht,{buttons:e}),priority:0},start(){N8=xX.store.open},stop(){N8=void 0}})});var WEe=h(()=>{});function vX(){iN?.forceUpdate()}function Jht(e){Ng.has(e)?(Ng.delete(e),Ng.size||(Hy=!1)):Ng.add(e),vX()}var Yht,Ng,iN,Hy,QEe,Xht,Vht,KEe,aN,ZEe=h(()=>{"use strict";d();WEe();Fo();Jt();j();Pe();ot();B4();N4();O();we();R();C();Yht=K("vc-hide-messages-"),Ng=new Set,iN=null,Hy=!1;QEe=(e,t)=>{Q.dispatch({type:"MESSAGE_DELETE",id:e,channelId:t,mlDeleted:!0})};Xht=(e,{message:t})=>{let o=wt("copy-text",e);o&&o.splice(o.findIndex(r=>r?.props?.id==="copy-text")+1,0,i(P.MenuItem,{id:"vc-hidemessages",label:"Hide",icon:ea,leadingAccessory:{type:"icon",icon:ea},action:()=>QEe(t.id,t.channel_id)}))},Vht=(e,{channel:t})=>{if(!t?.isDM()||Ve(Tv.name)&&Mh(t.id))return;let o=wt("close-dm",e);if(!o)return;let r=Ng.has(t.id);o.splice(o.findIndex(n=>n?.props?.id==="close-dm"),0,i(P.MenuItem,{id:"vc-hidemessages-dm",label:r?"Unhide DM":"Hide DM",icon:ea,leadingAccessory:{type:"icon",icon:ea},action:()=>Jht(t.id)}))},KEe=M({hidePopoverButton:{type:3,description:"Hide the hide button in the message popover.",default:!1}}),aN=S({name:"HideMessages",description:"Temporarily hide messages and DMs until you restart.",dependencies:["MessagePopoverAPI"],tags:["Chat","Utility"],authors:[F.yash],patches:[{find:'"dm-quick-launcher"===',replacement:[{match:/render\(\)\{/,replace:"$&this.props.privateChannelIds=$self.filterPrivateChannelIds(this.props.privateChannelIds,this);"},{match:/renderRow=\i=>\{/,replace:"$&this.props.privateChannelIds=$self.filterPrivateChannelIds(this.props.privateChannelIds,this);"},{match:/renderDM=\(\i,\i\)=>\{/,replace:"$&this.props.privateChannelIds=$self.filterPrivateChannelIds(this.props.privateChannelIds,this);"},{match:/#{intl::DIRECT_MESSAGES}\)\}\),/,replace:"$&$self.renderHiddenMessagesToggle(),"}]}],contextMenus:{message:Xht,"user-context":Vht},settings:KEe,stop(){Ng.clear(),Hy=!1,vX(),iN=null},filterPrivateChannelIds(e,t){return iN=t??iN,Hy?e:e.filter(o=>!Ng.has(o))},renderHiddenMessagesToggle:H.wrap(()=>{let e=Ng.size>0,t=e?Hy?"Hide Hidden DMs":"Show Hidden DMs":"No Hidden DMs";return i(ve,{text:t},o=>i(eo,{...o,className:Yht("eye"),role:"button",tabIndex:0,"aria-label":t,"aria-disabled":!e,onClick:r=>{r.preventDefault(),r.stopPropagation(),e&&(Hy=!Hy,vX())}},i(ea,{width:14,height:14})))},{noop:!0}),messagePopoverButton:{icon:ea,render(e){return KEe.store.hidePopoverButton?null:{label:"Hide",icon:ea,message:e,channel:W.getChannel(e.channel_id),onClick:()=>QEe(e.id,e.channel_id)}}}})});var YEe=h(()=>{});var Nn,B8=h(()=>{"use strict";d();Io();le();C();Nn=ln(()=>{let{Store:e}=yi,t="HideServers_servers";class o extends e{_hiddenGuilds=new Set;get hiddenGuilds(){return this._hiddenGuilds}async load(){let n=await vt(t);n&&n instanceof Set&&(this._hiddenGuilds=n)}unload(){this._hiddenGuilds.clear()}save(){Ct(t,this._hiddenGuilds)}addHiddenGuild(n){this._hiddenGuilds.add(n),this.save(),this.emitChange()}removeHiddenGuild(n){this._hiddenGuilds.delete(n),this.save(),this.emitChange()}addHiddenFolder(n,a){this._hiddenGuilds.add(`folder-${n}`),a.forEach(s=>this._hiddenGuilds.add(s)),this.save(),this.emitChange()}removeHiddenFolder(n,a){this._hiddenGuilds.delete(`folder-${n}`),a.forEach(s=>this._hiddenGuilds.delete(s)),this.save(),this.emitChange()}clearHidden(){this._hiddenGuilds.clear(),aa(t),this.emitChange()}hiddenGuildsDetail(){return jr.getFlattenedGuildIds().filter(a=>this._hiddenGuilds.has(a)).map(a=>$e.getGuild(a))}}return new o(Q)})});function ext({modalProps:e,close:t}){let o=ye([Nn],()=>Nn.hiddenGuildsDetail());return i(be,{...e,size:"lg",title:"Hidden Servers"},i(yX,{guilds:o}))}function txt(e,t){let o=t.getGuildFolders().find(r=>r.guildIds.includes(e.id));return o&&Nn.hiddenGuilds.has("folder-"+o.folderId)?!0:Nn.hiddenGuilds.has(e.id)}function VEe(e,t){return e.getGuildFolders().filter(o=>o.folderId!==void 0).find(o=>o.guildIds.includes(t))}function e7e(e,t){Nn.removeHiddenGuild(e.id);let o=VEe(t,e.id);o&&Nn.removeHiddenGuild("folder-"+o.folderId)}function XEe({guild:e}){return i("div",{key:e.id,className:cx("row")},i("div",{className:cx("guildicon")},e.icon?i("img",{alt:"",height:"48",width:"48",src:at.getGuildIconURL({id:e.id,icon:e.icon,canAnimate:!0,size:240})}):i("div",{"aria-hidden":!0,className:X(JEe.childWrapper,JEe.acronym)},ya(e))),i(oe,{className:cx("name")},e.name),i(ue,{className:"row-button",color:ue.Colors.PRIMARY,onClick:()=>e7e(e,jr)},"Remove"))}function yX({guilds:e}){let t=e.filter(n=>txt(n,jr)),o={},r=[];return t.forEach(n=>{let a=VEe(jr,n.id);a?(o[a.folderId]||(o[a.folderId]=[]),o[a.folderId].push(n)):r.push(n)}),i("div",{className:cx("list")},Object.entries(o).map(([n,a])=>{let s=jr.getGuildFolders().find(l=>l.folderId===Number(n));return s?i("div",{key:n,className:cx("folder")},i("div",{className:cx("folder-header")},i(Y,{size:"sm",weight:"medium"},s.folderName||"Folder"),i(ue,{color:ue.Colors.PRIMARY,onClick:()=>{a.forEach(l=>e7e(l,jr))},size:ue.Sizes.SMALL,className:cx("restore-all")},"Remove All")),a.map(l=>i(XEe,{key:l.id,guild:l}))):null}),i(Y,{size:"sm",weight:"medium"},"Guilds"),r.map(n=>i(XEe,{key:n.id,guild:n})),t.length===0&&i(Y,{size:"sm",weight:"medium"},"No hidden servers"))}function t7e(){let e=ce(t=>i(ext,{modalProps:t,close:()=>Lo(e)}))}var cx,JEe,bX=h(()=>{"use strict";d();yt();We();B8();we();_e();Be();le();C();cx=K("vc-hideservers-"),JEe=Ie("icon","acronym","childWrapper")});function oxt(){let e=ye([Nn],()=>Nn.hiddenGuilds,void 0,(o,r)=>o.size===r.size),t=Array.from(e).filter(o=>$e.getGuild(o)).length;return i("div",{className:o7e("button-wrapper")},t>0?i(ue,{className:o7e("button"),look:ue.Looks.FILLED,size:ue.Sizes.MIN,onClick:()=>t7e()},t," Hidden"):null)}var o7e,SX,n7e=h(()=>{"use strict";d();YEe();B8();we();C();bX();o7e=K("vc-hideservers-");SX=()=>i(oxt,null)});var wX,r7e=h(()=>{"use strict";d();j();R();C();CX();bX();B8();wX=M({showIndicator:{type:3,description:"Show menu to unhide servers at the bottom of the list",default:!0,onChange:e=>{e?AX():kX()}},guildsList:{type:6,description:"Remove hidden servers",component:()=>{let e=ye([Nn],()=>Nn.hiddenGuildsDetail());return i(yX,{guilds:e})}},resetHidden:{type:6,description:"Remove all hidden guilds from the list",component:()=>i("div",null,i(ue,{size:ue.Sizes.SMALL,color:ue.Colors.RED,onClick:()=>Nn.clearHidden()},"Reset Hidden Servers"))}})});function AX(){jl(2,SX)}function kX(){ll(2,SX)}var i7e,sN,CX=h(()=>{"use strict";d();Fo();Tf();O();R();C();n7e();B8();r7e();i7e=(e,{guild:t})=>{let o=wt("privacy",e);if(!o)return;let r=Nn.hiddenGuilds.has(t.id.toString());o.push(i(P.MenuItem,{id:"vc-hide-server",label:r?"Unhide Server":"Hide Server",action:()=>{r?Nn.removeHiddenGuild(t.id):Nn.addHiddenGuild(t.id)}}))};sN=S({name:"HideServers",description:"Allows you to hide servers from the guild list and quick switcher by right clicking them",tags:["Servers","Utility"],authors:[F.bep],searchTerms:["guild","server","hide","folder"],dependencies:["ServerListAPI"],contextMenus:{"guild-header-popout":i7e,"guild-context":(e,t)=>{if("guild"in t&&i7e(e,t),"folderId"in t){let{folderId:o}=t,r=jr.getGuildFolderById(o),{guildIds:n}=r,a=n.every(s=>Nn.hiddenGuilds.has(s));e.push(i(P.MenuItem,{id:"vc-hide-folder",label:a?"Unhide Folder":"Hide Folder",action:()=>{a?Nn.removeHiddenFolder(o,n):Nn.addHiddenFolder(o,n)}}))}}},patches:[{find:'("guildsnav")',replacement:[{match:/(\i)(\.map\(.{0,30}\}\),\i)/,replace:"$self.useFilteredGuilds($1)$2"},{match:/let{disableAppDownload.{0,10}isPlatformEmbedded/,replace:"$self.useStore();$&"}]},{find:"#{intl::MfbDzS::raw}",replacement:{match:/(?<=renderResults\(\){.{0,100})let{query/,replace:"this.props.results = $self.filteredGuildResults(this.props.results);$&"}}],settings:wX,useStore:()=>{ye([Nn],()=>Nn.hiddenGuilds,void 0,(e,t)=>e.size===t.size)},async start(){wX.store.showIndicator&&AX(),await Nn.load()},async stop(){kX(),Nn.unload()},useFilteredGuilds(e){let t=ye([Nn],()=>Nn.hiddenGuilds,void 0,(o,r)=>o.size===r.size);return e.flatMap(o=>{if(!(t instanceof Set))return[o];if(o.type==="guild"&&t.has(o.id.toString()))return[];if(o.type==="folder"&&t.has("folder-"+o.id.toString()))return[];let r=Object.assign({},o);return r.children=o.children.filter(n=>!t.has(n.id.toString())&&!(n.type==="folder"&&t.has("folder-"+n.id.toString()))),[r]})},filteredGuildResults(e){let{hiddenGuilds:t}=Nn;return e.filter(o=>!(o?.record?.guild_id&&t.has(o.record.guild_id)||o.type==="GUILD"&&t.has(o.record.id)))}})});var a7e=h(()=>{});var nxt,rxt,lN,s7e=h(()=>{"use strict";d();a7e();O();we();R();le();C();nxt=K("vc-home-typing-"),rxt=he("Math.min(1,Math.max(","dotRadius:"),lN=S({name:"HomeTyping",description:"Changes the home button to a typing indicator if someone in your dms is typing",tags:["Chat"],authors:[b.Samwich],TypingIcon(){return i(rxt,{className:nxt("dots"),dotRadius:3,themed:!0})},isTyping(){return ye([As],()=>L0.getPrivateChannelIds().some(e=>Object.keys(As.getTypingUsers(e)).some(t=>t!==L.getCurrentUser().id)))},patches:[{find:"#{intl::DISCODO_DISABLED}",replacement:[{match:/(?<=BUTTON_HOME.{0,10}children:)(\(0,\i.jsxs?\)\(\i,{}\))/,replace:"arguments[0].user == null ? null : (vcIsTyping ? $self.TypingIcon() : $1)"},{match:/if\(null==\i\)return null;/,replace:"let vcIsTyping = $self.isTyping();$&"}],group:!0}]})});var TX,cN,l7e=h(()=>{"use strict";d();j();O();R();C();TX=M({regex:{type:0,description:"Regex to trigger on",default:"hop on (?:fortnite|fn)"},url:{type:0,description:"URL to open",default:"com.epicgames.launcher://apps/fn%3A4fe75bbc5a674f4f9b356b5c90567da5%3AFortnite?action=launch&silent=true"}}),cN=S({name:"HopOn",description:"Hop on! Opens a configurable URL when a message matches a custom regex in the current channel.",tags:["Fun"],authors:[b.ImLvna],settings:TX,flux:{async MESSAGE_CREATE({optimistic:e,type:t,message:o,channelId:r}){e||t!=="MESSAGE_CREATE"||o.state!=="SENDING"&&(qe.isBlocked(o.author?.id)||r===Fe.getChannelId()&&o.content?.match(new RegExp(TX.store.regex,"i"))&&VencordNative.native.openExternal(TX.store.url))}}})});function ixt({height:e=24,width:t=24,className:o,children:r,viewBox:n,...a}){return i("svg",{className:X(o,"vc-icon"),role:"img",width:t,height:e,viewBox:n,...a},r)}function c7e(e){return i(ixt,{...e,className:X(e.className,"vc-husk"),viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16.18,7.76L15.12,8.82L14.06,7.76L13,8.82L14.06,9.88L13,10.94L14.06,12L15.12,10.94L16.18,12L17.24,10.94L16.18,9.88L17.24,8.82L16.18,7.76M7.82,12L8.88,10.94L9.94,12L11,10.94L9.94,9.88L11,8.82L9.94,7.76L8.88,8.82L7.82,7.76L6.76,8.82L7.82,9.88L6.76,10.94L7.82,12M12,14C9.67,14 7.69,15.46 6.89,17.5H17.11C16.31,15.46 14.33,14 12,14Z"}))}function axt(e){if(!jy.store.findInServer||e==="")return jy.store.emojiID;let t="";return ar.getGuildEmoji(e).forEach(o=>{o.name===jy.store.emojiName&&(t=o.id)}),t!==""?t:jy.store.emojiID}var jy,uN,u7e=h(()=>{"use strict";d();j();O();Be();R();C();jy=M({findInServer:{description:"Attempt to find emoji of same name in server before using ID in settings (useful if no nitro)",type:3,default:!0},emojiName:{description:"Emoji name (default (from Vencord Server): husk)",type:0,default:"husk"},emojiID:{description:"Emoji ID (default (from Vencord Server): 1026532993923293184)",type:2,default:1026532993923293184n}});uN=S({name:"Husk",description:"Adds Husk button (check settings to change used emoji)",dependencies:["MessagePopoverAPI"],tags:["Emotes","Fun"],authors:[b.nin0dev],settings:jy,messagePopoverButton:{icon:c7e,render(e){return{label:"Husk",icon:c7e,message:e,channel:W.getChannel(e.channel_id),onClick:()=>{let t=W.getChannel(e.channel_id).guild_id!==null?W.getChannel(e.channel_id).guild_id:"";mt.put({url:`/channels/${e.channel_id}/messages/${e.id}/reactions/${jy.store.emojiName}:${axt(t)}/@me`})}}}}})});var d7e=h(()=>{});var dN,p7e=h(()=>{"use strict";d();on();C();dN=class{withStart(){return this}onMessagePreSend(t,o,r){let n=new Set,a=Date.now(),{replyOptions:s}=r,l=(()=>{let c=W.getChannel(t);return $e.getGuild(c.guild_id)||void 0})();if(s.messageReference){let{channel_id:c,message_id:u}=s.messageReference,p=lt.getMessage(c,u);if(!p)return;let{author:m}=p;n.add({user:m,source:l,extra:{updatedAt:a}})}if(o.content){let{content:c}=o,p=[...c.matchAll(/<@!?(?\d{17,23})>/g)].map(({groups:m})=>m.id).map(m=>L.getUser(m)).filter(Boolean);for(let m of p)n.add({user:m,source:l,extra:{updatedAt:a}})}this.processUsersToCollection([...n])}async processUsersToCollection(t){let o=this.usersCollection,r=new Set;for(let{user:n,source:a,extra:s}of t){if(n.bot)continue;let l=a?.id??"dm",u=(o[l]||={name:a?.name||"dm",id:a?.id??"dm",users:{},inviteLink:void 0}).users,p=u[n.id]?.extra??{},{id:m,username:g}=n;u[m]={id:m,username:g,tag:n.discriminator==="0"?n.username:n.tag,extra:{...p,...s},iconURL:n.getAvatarURL()},a&&!r.has(a.id)&&r.add(a.id)}}async updateStorage(){await Le.set("irememberyou.data",this.usersCollection)}async initializeUsersCollection(){let t=await Le.get("irememberyou.data");this.usersCollection=t??{}}writeMembersFromUserGuildsToCollection(){let t=new Set,o=Date.now(),r=1e3,n=L.getCurrentUser().id;if(n)for(let a of Object.values($e.getGuilds())){let{ownerId:s}=a;if(s!==n)continue;let l=bt.getMembers(a.id);l.length>r&&(l.length=r);for(let c of l){let u=L.getUser(c.userId);t.add({user:u,source:a,extra:{updatedAt:o}})}this.processUsersToCollection([...t])}}writeGuildsOwnersToCollection(){let t=new Set,o=Date.now();for(let r of Object.values($e.getGuilds())){let{ownerId:n}=r,a=L.getUser(n);a&&t.add({user:a,source:r,extra:{isOwner:!0,updatedAt:o}})}this.processUsersToCollection([...t])}storageAutoSaveProtocol(){this._storageAutoSaveProtocol_interval=setInterval(this.updateStorage.bind(this),6e4*3)}}});function sxt(e){let{updatedAt:t}=e.extra||{},o=t?new Intl.DateTimeFormat().format(t):null;return`${e.username??e.tag}, updated at ${o}`}function lxt({usersCollection:e}){return Object.keys(e).length===0?i(Y,null,"It's empty right now"):i(f,null,Object.entries(e).map(([t,{users:o,name:r,id:n}])=>({key:t,id:n||t,name:r,users:Object.values(o)})).sort((t,o)=>o.users.length-t.users.length).map(({key:t,id:o,name:r,users:n})=>{let a=t!=="dm"&&o!=="dm";return i("aside",{key:t},i("div",{className:Vl("header-container")},i(ta,{className:Vl("header-name")},r,a&&i("span",{className:Vl("header-id"),onContextMenu:s=>{s.preventDefault(),rt.openContextMenu(s,()=>i(P.Menu,{navId:"guild-id-context-menu",onClose:rt.closeContextMenu,"aria-label":"Server Options"},i(P.MenuItem,{id:"copy-server-id",label:"Copy Server ID",action:()=>ft(o,"Server ID copied to clipboard")})))}},i(eo,{onClick:()=>ft(o,"Server ID copied to clipboard")},"(",o,")"))),i("div",{className:Vl("header-btns")},n.map(s=>i(m7e,{key:s.id,user:s})))))}))}function m7e({user:e,allowOwner:t=!0}){return i("div",{key:e.id,className:Vl("user-row")},i("div",{className:Vl("user")},i(eo,{onClick:()=>Ko(e.id)},i("span",{className:Vl("user-avatar")},i(Js,{src:e.iconURL,size:"SIZE_24"}))),i("div",{className:Vl("user-tooltip")},i(ve,{text:sxt(e)},o=>i(U,{...o,className:Vl("user-username")},e.tag," ",t&&e.extra?.isOwner&&"(owner)")),i("span",{className:Vl("user-id"),onContextMenu:o=>{o.preventDefault(),L.getUser(e.id)&&rt.openContextMenu(o,()=>i(P.Menu,{navId:"user-context-menu",onClose:rt.closeContextMenu,"aria-label":"User Options"},i(P.MenuItem,{id:"copy-user-id",label:"Copy User ID",action:()=>ft(e.id,"User ID copied to clipboard")}),i(P.MenuItem,{id:"view-profile",label:"View Profile",action:()=>Ko(e.id)})))}},i(eo,{onClick:()=>ft(e.id,"User ID copied to clipboard")},i(U,null,e.id))))))}function cxt({usersCollection:e}){let[t,o]=V.useState(""),r=Object.values(e).flatMap(n=>Object.values(n.users));return i("section",{className:Vl("search")},i(Te,{placeholder:"Filter by tag, username",name:"Filter",onChange:o}),t&&i("div",{className:Vl("search-user")},r.filter(n=>n.tag.includes(t)||n.username.includes(t)).map(n=>i(m7e,{key:n.id,user:n,allowOwner:!1}))))}function uxt({usersCollection:e}){return i(br,null,i(Ht,null,i(U,null,"Provides a list of users you have mentioned or replied to, or those who own the servers you belong to (owner*), or are members of your guild"),i(cxt,{usersCollection:e})),i("div",{className:Vl("rows")},i(lxt,{usersCollection:e})))}var Vl,f7e,g7e=h(()=>{"use strict";d();yt();Qn();We();Je();Fi();we();_e();C();Vl=K("vc-i-remember-you-");f7e=Sr(uxt,"IRememberYouTab")});var pN,h7e=h(()=>{"use strict";d();d7e();yc();ot();mu();O();Be();R();p7e();g7e();pN=S({name:"IRememberYou",description:"Locally saves everyone you've been communicating with (including servers), in case of lose",tags:["Chat","Servers"],authors:[F.zoodogood,F.keircn,F.tt],dependencies:["MessageEventsAPI"],patches:[],async start(){Pn.customEntries.push({key:"equicord_i_remember_you",title:"I Remember You",Component:()=>i(f7e,{usersCollection:e.usersCollection}),Icon:ea});let e=this.dataManager=await new dN().withStart();await e.initializeUsersCollection(),e.writeGuildsOwnersToCollection(),e.writeMembersFromUserGuildsToCollection(),e._onMessagePreSend_preSend=ni(e.onMessagePreSend.bind(e)),e.storageAutoSaveProtocol()},stop(){Gl(Pn.customEntries,t=>t.key==="equicord_i_remember_you");let e=this.dataManager;ri(e._onMessagePreSend_preSend),clearInterval(e._storageAutoSaveProtocol_interval)}})});var x7e=h(()=>{});function mN(){return IX}var IX,v7e,y7e,b7e,fN,S7e=h(()=>{"use strict";d();le();IX=[],v7e=Ae("colors","layout"),y7e=Ae("md","lg","xxs"),b7e=["xxs","xs","sm","md","lg"];fN=new Proxy({},{get:(e,t)=>{let o=Number(t);if(isNaN(o))return;if(e[o])return e[o];let r=IX[o];if(!r||!v7e.colors[r]?.css)return;let n=r.split("_").map(a=>a[0].toUpperCase()+a.toLowerCase().slice(1)).join(" ");return e[o]={name:n,css:v7e.colors[r].css,key:r},e[o]}});Zo(["colors","layout"],e=>{IX=Object.keys(e.colors)})});function mxt(e){let[t,o]=T(e),r=jt(a=>{(a.key==="ArrowLeft"||a.key==="ArrowRight")&&(a.preventDefault(),o(s=>{let l=s+(a.key==="ArrowLeft"?-1:1),c=mN().length;return l<0?c-1:l>=c?0:l}))},[]),n=jt(a=>{let l=mN().indexOf(a.color);l!==-1&&o(l)},[]);return G(()=>(document.addEventListener("keydown",r),Q.subscribe("ICONVIEWER_COLOR_CHANGE",n),()=>{document.removeEventListener("keydown",r),Q.unsubscribe("ICONVIEWER_COLOR_CHANGE",n)}),[r,n]),[t,o]}function fxt({colorKeys:e}){let[t,o]=T(""),r=e.filter(n=>!t||n.toLowerCase().includes(t.toLowerCase()));return i(P.Menu,{navId:"vc-ic-colors-menu",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Icon Viewer Colors"},i(P.MenuControlItem,{id:"vc-ic-colors-search",control:(n,a)=>i(P.MenuSearchControl,{...n,query:t,onChange:o,ref:a,placeholder:Xe("SEARCH"),autoFocus:!0})}),i(P.MenuSeparator,null),r.map(n=>i(P.MenuItem,{key:n,id:n,label:n,action:()=>Q.dispatch({type:"ICONVIEWER_COLOR_CHANGE",color:n})})))}function gxt(e){let t=document.createElement("div"),o=Bi(t);BS.flushSync(()=>o.render(e));let r=t.innerHTML;return o.unmount(),r}function hxt(e,t,o,r,n){let a=fN[o]?.name??"unknown",s=pxt[n]??"png",l=`${e}-${a}-${r}px.${s}`;if(typeof t=="string"){q1(new File([t],l,{type:"text/plain"}));return}for(let m of t.children){let g=m.getAttribute("fill");g?.startsWith("var(")&&m.setAttribute("fill",getComputedStyle(t).getPropertyValue(g.slice(4,-1)))}let c=document.createElement("canvas");c.width=r,c.height=r;let u=c.getContext("2d");if(!u)return;let p=new Image;p.onload=()=>{u.drawImage(p,0,0,r,r);let m=document.createElement("a");m.download=l,m.href=c.toDataURL(n),m.click()},p.src=`data:image/svg+xml;base64,${btoa(t.outerHTML)}`}function xxt({iconName:e,Icon:t,color:o}){let r=fN[o],n=a=>{let s=y7e.lg,l=a==="image/svg+xml"?gxt(i(t,{className:"vc-ic-save-icon",color:r?.css})):document.querySelector(".vc-ic-icon-preview .vc-ic-icon-large");l&&hxt(e,l,o,s,a)};return i(P.Menu,{navId:"vc-ic-other-menu",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Icon Options"},i(P.MenuItem,{id:"log-console",label:"Log to Console",icon:w7e,leadingAccessory:{type:"icon",icon:w7e},action:()=>dxt.info(t)}),i(P.MenuItem,{id:"save",label:"Save As..."},i(P.MenuItem,{id:"save-png",label:"PNG",action:()=>n("image/png")}),i(P.MenuItem,{id:"save-svg",label:"SVG",action:()=>n("image/svg+xml")}),i(P.MenuItem,{id:"save-jpeg",label:"JPEG",action:()=>n("image/jpeg")}),i(P.MenuItem,{id:"save-webp",label:"WEBP",action:()=>n("image/webp")}),i(P.MenuItem,{id:"save-gif",label:"GIF",action:()=>n("image/gif")}),i(P.MenuItem,{id:"save-avif",label:"AVIF",action:()=>n("image/avif")})))}function vxt({iconName:e,Icon:t,onClose:o,transitionState:r}){let[n,a]=mxt(209),s=fN[n],l=Ne(()=>mN(),[]),c=e==="CircleShieldIcon"?"var(--background-base-low)":s?.css,u=`const ${e} = findExportedComponentLazy("${e}")`,p=x=>{rt.openContextMenu(x,()=>i(fxt,{colorKeys:l}))},m=jt(x=>{x.preventDefault();let v=l.length;a(y=>{let A=y+(x.deltaY>0?1:-1);return A<0?v-1:A>=v?0:A})},[l.length,a]);return i(be,{transitionState:r,onClose:o,size:"md",title:e,actions:[{text:"Actions",variant:"primary",onClick:x=>{x&&rt.openContextMenu(x,()=>i(xxt,{iconName:e,Icon:t,color:n}))}}]},i(pe,{className:"vc-ic-modal-main"},i("div",{className:"vc-ic-icon-preview","aria-label":s?.name,onContextMenu:p,onWheel:m},i(t,{className:"vc-ic-icon-large",color:s?.css,fill:c})),i(pe,{flexDirection:"column",className:"vc-ic-icon-info"},i(pe,{className:"vc-ic-icon-sizes"},b7e.map(x=>i(Dr,{text:x,key:x},i(t,{size:x,color:s?.css,fill:c})))),i(Dr,{text:"Right-click icon to change"},i(Y,{size:"sm",color:"text-muted",className:"vc-ic-color-label"},s?.name)))),i("div",{className:"vc-ic-use-as"},i(Y,{size:"md",weight:"semibold"},"Usage"),i(Y,{size:"sm",color:"text-muted"},"Click to copy")),i(eo,{className:"vc-ic-codeblock-wrapper",onClick:()=>ft(u,"Copied!")},i(Ps,{content:u,lang:"ts"})))}function A7e(e,t){ce(o=>i(vxt,{iconName:e,Icon:t,...o}))}function k7e(){return i(f,null,i(Ot,null,"Features"),i(U,null,i("ul",{className:"vc-ic-unordered-list"},i("li",null,"Preview icons"),i("li",null,"Copy icon names and CSS variables"),i("li",null,"Download icons in different formats (SVG, PNG, GIF, etc.)"),i("li",null,"Copy pre-made icon finds for your plugins"),i("li",null,"Find icons by function context"),i("li",null,"Search for colors by right-clicking the color name"))),i(Ot,null,"Special thanks"),i(U,null,i("ul",{className:"vc-ic-unordered-list"},i("li",null,"krystalskullofficial._."),i("li",null,"davr1"),i("li",null,"suffocate"))))}var dxt,w7e,pxt,EX=h(()=>{"use strict";d();yt();bd();Lt();We();Je();lc();_e();He();ul();le();C();S7e();dxt=new ie("IconViewer"),w7e=he("1.1.27.1.37 0a6.66 6.6"),pxt={"image/png":"png","image/jpeg":"jpeg","image/gif":"gif","image/webp":"webp","image/svg+xml":"svg","image/avif":"avif"}});function yxt(){return gN||(gN=Object.fromEntries(Object.entries($d).filter(([e,t])=>typeof t=="function"&&e.endsWith("Icon"))),gN)}function bxt(e,t,o,r){if(!e)return!0;if(r)return String(o).includes(e);let n=t.replace(/([A-Z]([a-z]+)?)/g," $1").toLowerCase().split(" "),a=e.toLowerCase().split(" ");return a.every(s=>n.includes(s))||n.every(s=>a.includes(s))||t.toLowerCase().includes(e.toLowerCase())}function Sxt({iconName:e,Icon:t}){return i("div",{className:"vc-icon-box"},i(eo,{onClick:()=>A7e(e,t)},i("div",{className:"vc-icon-container"},i(t,{className:"vc-icon-icon",size:"lg",width:32,height:32,color:"var(--interactive-icon-default)",fill:e==="CircleShieldIcon"?"var(--background-base-low)":"var(--interactive-icon-default)"}))),i(oe,{className:"vc-icon-title",tag:"h3"},e))}function wxt(){let[e,t]=T(""),[o,r]=T(""),[n,a]=T(!1),s=Ne(()=>yxt(),[]),l=Ne(()=>Jo(k=>r(k),150),[]),c=jt(k=>{t(k),l(k)},[l]),u=Ne(()=>Object.entries(s).filter(([k,w])=>bxt(o,k,w,n)),[s,o,n]),p=120,[m,g]=T(p);G(()=>{g(p)},[o,n]);let x=jt(()=>{g(k=>Math.min(k+p,u.length))},[u.length]),[v,y]=N0();G(()=>{y&&ma(!n)},"Func"))),i("div",{className:"vc-icons-tab-grid-container"},A.map(([k,w])=>i(Sxt,{key:k,iconName:k,Icon:w}))),m{"use strict";d();Tt();We();Fi();lc();s5();os();Wt();Be();Kt();C();EX();gN=null;C7e=Sr(wxt,"IconsTab")});var hN,I7e=h(()=>{"use strict";d();x7e();ot();mu();O();Be();R();C();T7e();EX();hN=S({name:"IconViewer",description:"Adds a new tab to settings to preview all icons.",tags:["Developers"],authors:[F.iamme],dependencies:["Settings","ConcatenatedModules"],startAt:"WebpackReady",toolboxActions:{"Open Icons Tab"(){un.openUserSettings("equicord_icon_viewer_panel")}},settingsAboutComponent:k7e,start(){Pn.customEntries.push({key:"equicord_icon_viewer",title:"Icon Finder",Component:C7e,Icon:kU})},stop(){Gl(Pn.customEntries,e=>e.key==="equicord_icon_viewer")}})});function Bg(){DX=Date.now()}var Axt,DX,qy,Wy,xN,E7e=h(()=>{"use strict";d();j();O();He();R();C();Axt=new ie("IdleAutoRestart"),DX=0,qy=null,Wy=M({isEnabled:{description:"Enable automatic restart after idle",type:3,default:!0},idleMinutes:{description:"Minutes of inactivity before restarting (when not in VC)",type:5,markers:[5,10,15,30,60,120],default:30,stickToMarkers:!1}});xN=S({name:"IdleAutoRestart",description:"Automatically restarts the client after being idle for a configurable amount of time, but avoids restarting while you are in VC.",tags:["Utility"],authors:[F.SteelTech],settings:Wy,toolboxActions(){return i(P.MenuItem,{id:"auto-idle-restart-toggle-toolbox",label:Wy.store.isEnabled?"Disable Auto Idle Restart":"Enable Auto Idle Restart",action:()=>{Wy.store.isEnabled=!Wy.store.isEnabled}})},start(){DX=Date.now(),document.addEventListener("mousemove",Bg),document.addEventListener("keydown",Bg),document.addEventListener("mousedown",Bg),document.addEventListener("wheel",Bg,{passive:!0}),qy&&clearInterval(qy),qy=setInterval(()=>{if(!Wy.store.isEnabled||Et.isCurrentClientInVoiceChannel())return;let e=Wy.store.idleMinutes*6e4;Date.now()-DX>=e&&(Axt.info("Idle timeout reached, reloading client"),location.reload())},3e4)},stop(){qy&&(clearInterval(qy),qy=null),document.removeEventListener("mousemove",Bg),document.removeEventListener("keydown",Bg),document.removeEventListener("mousedown",Bg),document.removeEventListener("wheel",Bg)}})});var D7e=h(()=>{});var Ou,vN,kxt,Cxt,P7e,M7e,yN,bN,N7e=h(()=>{"use strict";d();D7e();j();Tt();Pe();O();we();R();le();C();Ou={ringing:[],ongoingRings:[],messageId:"",region:""},vN=new Set,kxt=K("vc-ignore-calls-"),Cxt=he("0-1.02-.1H3.05a9"),P7e=e=>Ou.ongoingRings.filter(t=>t!==e),M7e=(e,{channel:t})=>{if(!t)return;let o=yN.store.permanentlyIgnoredUsers.split(",").map(l=>l.trim()).filter(Boolean),[r,n]=V.useState(vN.has(t.id)),[a,s]=V.useState(o.includes(t.id));e.push(i(f,null,i(P.MenuSeparator,null),i(P.MenuCheckboxItem,{id:"vc-ignore-calls-temp",label:"Temporarily Ignore Calls",checked:r,action:()=>{r?vN.delete(t.id):vN.add(t.id),n(!r)}}),i(P.MenuCheckboxItem,{id:"vc-ignore-calls-perm",label:"Permanently Ignore Calls",checked:a,action:()=>{let l=o.slice();a?l=l.filter(c=>c!==t.id):l.push(t.id),yN.store.permanentlyIgnoredUsers=l.join(", "),s(!a)}})))},yN=M({permanentlyIgnoredUsers:{type:0,description:"User IDs (comma + space) who should be permanetly ignored",restartNeeded:!0,default:""}}),bN=S({name:"IgnoreCalls",description:"Allows you to ignore calls from specific users or dm groups.",tags:["Voice"],authors:[F.TheArmagan,b.thororen],settings:yN,patches:[{find:"#{intl::INCOMING_CALL_ELLIPSIS}",replacement:{match:/(?<=onCallJoined:\(\).{0,150})\(\i\)\}\),className:\i\.\i\}\)/,replace:"$&,$self.renderIgnore(arguments[0].channel)"}}],contextMenus:{"user-context":M7e,"gdm-context":M7e},flux:{async CALL_UPDATE({ringing:e,ongoingRings:t,messageId:o,region:r}){Ou.ringing=e||[],Ou.ongoingRings=Array.isArray(t)?t:[],Ou.messageId=o,Ou.region=r}},renderIgnore(e){let t=L.getCurrentUser().id,o=yN.store.permanentlyIgnoredUsers.split(",").map(r=>r.trim()).filter(Boolean);return vN.has(e.id)||o.includes(e.id)?(Q.dispatch({type:"CALL_UPDATE",channelId:e.id,ringing:Ou.ringing.filter(r=>r!==t),ongoingRings:P7e(t),messageId:Ou.messageId,region:Ou.region}),null):i(H,null,i(ve,{text:"Ignore"},({onMouseEnter:r,onMouseLeave:n})=>i(de,{className:kxt("button"),size:"small",onMouseEnter:r,onMouseLeave:n,onClick:()=>{Q.dispatch({type:"CALL_UPDATE",channelId:e.id,ringing:Ou.ringing.filter(a=>a!==t),ongoingRings:P7e(t),messageId:Ou.messageId,region:Ou.region})}},i(Cxt,{color:"var(--interactive-icon-active)"}))))}})});var B7e=h(()=>{});function SN(e,t,o){ce(r=>i(H,null,i(be,{...r,size:"md",title:i(U,{style:{fontSize:"1.2rem",fontWeight:"bold",marginRight:"7px"}},"Members of role ",kt.parse(`<@&${t}>`,!0,{channelId:o,viewingChannelId:o})," (",e.length,")")},i("div",{style:{padding:"13px 20px"},className:R7e("member-list")},e.length!==0?e.map(n=>i(V.Fragment,{key:n.userId},i(U,{className:R7e("modal-member")},kt.parse(`<@${n.userId}>`,!0,{channelId:o,viewingChannelId:o})))):i(U,null,"Looks like no online cached members with that role were found. Try scrolling down on your member list to cache more users!")))))}var R7e,L7e=h(()=>{"use strict";d();Pe();Je();we();C();R7e=K("vc-inrole-")});function PX(e,t){let o=bt.getMembers(t),r=[];return o.forEach(n=>{n.roles.includes(e)&&r.push(n)}),r}var Txt,wN,O7e=h(()=>{"use strict";d();B7e();yr();_a();ot();Je();O();_e();R();C();L7e();Txt=tn("appearance","developerMode");wN=S({name:"InRole",description:"Know who is in a role with the role context menu or /inrole command (read plugin info!)",tags:["Commands","Roles"],authors:[b.nin0dev],dependencies:["UserSettingsAPI","CommandsAPI"],start(){Txt.updateSetting(!0)},settingsAboutComponent:()=>i(f,null,i(U,{style:{fontSize:"1.2rem",marginTop:"15px",fontWeight:"bold"}},kt.parse(":warning:")," Limitations"),i(U,{style:{marginTop:"10px",fontWeight:"500"}},"If you don't have mod permissions on the server, and that server is large (over 100 members), the plugin may be limited in the following ways:"),i(U,null,"\u2022 Offline members won't be listed"),i(U,null,"\u2022 Up to 100 members will be listed by default. To get more, scroll down in the member list to load more members."),i(U,null,"\u2022 However, friends will always be shown regardless of their status.")),commands:[{name:"inrole",description:"Know who is in a role",inputType:0,options:[{name:"role",description:"The role",type:8,required:!0}],execute:(e,t)=>{if(!t.guild)return Ft(t.channel.id,{content:"Make sure that you are in a server."});let o=e[0].value;SN(PX(o,t.guild.id),o,t.channel.id)}}],contextMenus:{"dev-context"(e,{id:t}){let o=Ss();if(!o)return;let r=zo();if(!r)return;let n=To.getRole(o.id,t);n&&e.push(i(P.MenuItem,{id:"vc-view-inrole",label:"View Members in Role",action:()=>{SN(PX(n.id,o.id),n.id,r.id)},icon:gi,leadingAccessory:{type:"icon",icon:gi}}))},message(e,{message:t}){let o=Ss();if(!o)return;let r=t.content.match(/<@&(\d+)>/g);if(!r?.length)return;let n=zo();if(!n)return;let a=r.map(l=>l.match(/<@&(\d+)>/)[1]),s=To.getRole(o.id,a);s&&e.push(i(P.MenuItem,{id:"vc-view-inrole",label:"View Members in Role",action:()=>{SN(PX(s.id,o.id),s.id,n.id)},icon:gi,leadingAccessory:{type:"icon",icon:gi}}))}}})});function Nxt(){return i("svg",{width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256"},i("path",{transform:"translate(351 -153)",fill:"currentcolor",d:"M-177.7,334.5c6.3-2.3,12.6-5.2,19.8-8.6c31.9-16.4,51.7-41.7,51.7-41.7s-32.5,0.6-64.4,17 c-4,1.7-7.5,4-10.9,5.7c5.7-7.5,12.1-16.4,18.7-25c25-37.1,31.3-77.3,31.3-77.3s-34.8,21-59.2,58.6c-5.2,7.5-9.8,14.9-13.8,22.7 c1.1-10.3,1.1-22.1,1.1-33.6c0-50-19.8-91.1-19.8-91.1s-19.8,40.5-19.8,91.1c0,12.1,0.6,23.3,1.1,33.6c-4-7.5-8.6-14.9-13.8-22.7 c-25-37.1-59.2-58.6-59.2-58.6s6.3,40,31.3,77.3c6.3,9.2,12.1,17.5,18.7,25c-3.4-2.3-7.5-4-10.9-5.7c-31.9-16.4-64.4-17-64.4-17 s19.8,25.6,51.7,41.7c6.9,3.4,13.2,6.3,19.8,8.6c-4,0.6-8,1.1-12.1,2.3c-30.5,6.4-53.2,23.9-53.2,23.9s27.3,7.5,58.6,1.1 c9.8-2.3,19.8-4.6,27.3-7.5c-1.1,1.1,15.8-8.6,21.6-14.4v60.4h8.6v-61.8c6.3,6.3,22.7,16.4,22.1,14.9c8,2.9,17.5,5.2,27.3,7.5 c30.8,6.3,58.6-1.1,58.6-1.1s-22.1-17.5-53.4-23.8C-169.6,335.7-173.7,335.1-177.7,334.5z"}))}function _7e(){return i("svg",{width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256"},i("path",{transform:"translate(351 -153)",fill:"var(--status-danger)",d:"M-177.7,334.5c6.3-2.3,12.6-5.2,19.8-8.6c31.9-16.4,51.7-41.7,51.7-41.7s-32.5,0.6-64.4,17 c-4,1.7-7.5,4-10.9,5.7c5.7-7.5,12.1-16.4,18.7-25c25-37.1,31.3-77.3,31.3-77.3s-34.8,21-59.2,58.6c-5.2,7.5-9.8,14.9-13.8,22.7 c1.1-10.3,1.1-22.1,1.1-33.6c0-50-19.8-91.1-19.8-91.1s-19.8,40.5-19.8,91.1c0,12.1,0.6,23.3,1.1,33.6c-4-7.5-8.6-14.9-13.8-22.7 c-25-37.1-59.2-58.6-59.2-58.6s6.3,40,31.3,77.3c6.3,9.2,12.1,17.5,18.7,25c-3.4-2.3-7.5-4-10.9-5.7c-31.9-16.4-64.4-17-64.4-17 s19.8,25.6,51.7,41.7c6.9,3.4,13.2,6.3,19.8,8.6c-4,0.6-8,1.1-12.1,2.3c-30.5,6.4-53.2,23.9-53.2,23.9s27.3,7.5,58.6,1.1 c9.8-2.3,19.8-4.6,27.3-7.5c-1.1,1.1,15.8-8.6,21.6-14.4v60.4h8.6v-61.8c6.3,6.3,22.7,16.4,22.1,14.9c8,2.9,17.5,5.2,27.3,7.5 c30.8,6.3,58.6-1.1,58.6-1.1s-22.1-17.5-53.4-23.8C-169.6,335.7-173.7,335.1-177.7,334.5z"}))}var R8,Ixt,Ext,Dxt,Pxt,F7e,Mxt,AN,U7e=h(()=>{"use strict";d();Ba();yc();j();O();R();R8=M({showIcon:{type:3,default:!0,description:"Show a button to toggle the Ingtoninator plugin",restartNeeded:!0},isEnabled:{type:3,default:!0,description:"Enable or disable the Ingtoninator"}}),Ixt=e=>{if(e==="i"||e==="I")return!1;let t=e.slice(-1).toLowerCase();return!["a","e","o","u","y"].includes(t)},Ext=e=>{let t=/https?:\/\/[^\s]+\.[^\s]+/g,o=new Set;for(let r of e.matchAll(t)){let n=r.index,a=n+r[0].length;for(let s=n;s({word:r[0],startIndex:r.index})).filter(r=>!o.has(r.startIndex))},Dxt=e=>{let t=Ext(e);for(;t.length>0;){let o=Math.floor(Math.random()*t.length),r=t[o];if(!Ixt(r.word)){t.splice(o,1);continue}return r}return null},Pxt=e=>e.endsWith("INGTON")?"":e.endsWith("INGTO")?"N":e.endsWith("INGT")?"ON":e.endsWith("ING")?"TON":e.endsWith("IN")?"GTON":e.endsWith("I")?"NGTON":"INGTON",F7e=((e,t)=>{if(!R8.store.isEnabled)return;let o=t.content;if(!o||!o.trim())return;let r=Dxt(o);if(r===null)return;let{word:n}=r,a=n.toUpperCase(),s=n===a,l=Pxt(a);s||(l=l.toLowerCase());let c=r.startIndex+n.length;t.content=o.slice(0,c)+l+o.slice(c)}),Mxt=({isMainChat:e})=>{let{isEnabled:t,showIcon:o}=R8.use(["isEnabled","showIcon"]),r=()=>R8.store.isEnabled=!R8.store.isEnabled;return!e||!o?null:i(Un,{tooltip:t?"Ingtoninator Enabled":"Ingtoninator Disabled",onClick:r},t?Nxt():_7e())};AN=S({name:"Ingtoninator",description:"Suffixes 'ington' to a random word in your message",dependencies:["ChatInputButtonAPI"],tags:["Fun"],authors:[F.zyqunix,F.BioTomateDE],settings:R8,chatBarButton:{icon:_7e,render:Mxt},start(){ni(F7e)},stop(){ri(F7e)}})});async function G7e(){let e=$o.getMediaEngine(),t=await z7e(e,$l,["screen","window"],null)??[];if(da.store.includeVideoDevices)try{let n=Object.values($7e.getVideoDevices()||{}).map(a=>({id:a.id,name:a.name,type:"video_device"}));t.push(...n)}catch(r){new MX.warn("Failed to get video devices:",r)}let o=t.find(r=>r.id===da.store.streamMedia);return o||(MX.error(`Stream Media "${da.store.streamMedia}" not found. Resetting to default.`),da.store.streamMedia=t[0],t[0])}function Bxt({streamMediaSelection:e,streamMedia:t}){let o=e.map(r=>({label:r.name,value:r.id,default:e[0]}));return i(Fn,{placeholder:"Select a media source to stream ",maxVisibleItems:5,options:o,value:o.find(r=>r.value===t)?.value,onChange:r=>da.store.streamMedia=r,closeOnSelect:!0})}function Rxt(){let{streamMedia:e,includeVideoDevices:t}=da.use(["streamMedia","includeVideoDevices"]),o=$o.getMediaEngine(),[r,n]=T([]),[a,s]=T(!0);return G(()=>{let l=!0;async function c(){s(!0);let u=await z7e(o,$l,["screen","window"],null)??[];if(t)try{let m=Object.values($7e.getVideoDevices()||{}).map(g=>({id:g.id,name:g.name,type:"video_device"}));u.push(...m)}catch(p){MX.warn("Failed to get video devices:",p)}l&&(n(u),s(!1))}return c(),()=>{l=!1}},[t]),a?i(U,null,"Loading media sources..."):r.length?i(Bxt,{streamMediaSelection:r,streamMedia:e}):i(U,null,"No Media found.")}function Lxt(){return i("section",null,i(oe,null,"Media source to stream"),i(U,{className:z.bottom20},"Resets to main screen if not found"),i(Rxt,null))}var z7e,$7e,MX,da,H7e=h(()=>{"use strict";d();j();We();Ja();Je();O();He();R();le();C();z7e=Oe("desktop sources"),$7e=Ae("getOutputVolume"),MX=new ie("InstantScreenShare"),da=M({streamMedia:{type:6,component:Lxt},includeVideoDevices:{type:3,description:"Include video input devices (cameras, capture cards) in the source list",default:!1},autoMute:{type:3,description:"Automatically mute your microphone when joining a voice channel",default:!1},autoDeafen:{type:3,description:"Automatically deafen when joining a voice channel (also mutes you)",default:!1},instantScreenshare:{type:3,description:"Enables automatic screenshare feature",default:!0},keybindScreenshare:{type:3,description:"Screenshare by keybind in discord keybind settings",restartNeeded:!0,default:!1},focusDiscord:{type:3,description:"Only start screenshare with keybind when Discord is focused",default:!0},toolboxManagement:{type:3,description:"Enable/Disable Instant Screenshare",default:!0,hidden:!0}})});async function j7e(e=!0){if(!e&&!Vs.isFocused()&&da.store.focusDiscord)return;let t=Fe.getVoiceChannelId();if(!t)return;let o=W.getChannel(t);if(!o)return;let r=!o.isDM()&&!o.isGroupDM();if(o.type===13||r&&!ht.can(ct.STREAM,o))return;da.store.autoDeafen&&!$o.isSelfDeaf()&&e?_n.toggleSelfDeaf():da.store.autoMute&&!$o.isSelfMute()&&e&&_n.toggleSelfMute();let n=await G7e(),a=_xt.getSetting(),{soundshareEnabled:s}=US.getState(),l=n.id;n.type==="video_device"&&(l=`camera:${n.id}`),BX&&kN.endsWith(L.getCurrentUser().id)?Fxt(kN):Oxt(o.guild_id??null,t,{pid:null,sourceId:l,sourceName:n.name,audioSourceId:n.name,sound:s,previewDisabled:a})}var NX,BX,kN,Oxt,Fxt,_xt,CN,q7e=h(()=>{"use strict";d();_a();We();Je();O();R();le();C();H7e();Oxt=Oe('type:"STREAM_START"'),Fxt=Oe('type:"STREAM_STOP"'),_xt=tn("voiceAndVideo","disableStreamPreviews");CN=S({name:"InstantScreenshare",description:"Instantly screenshare when joining a voice channel with support for desktop sources, windows, and video input devices (cameras, capture cards)",tags:["Media","Voice"],authors:[b.HAHALOSAH,b.thororen,F.mart],dependencies:["EquicordToolbox"],searchTerms:["ScreenshareKeybind"],autoStartStream:j7e,settings:da,settingsAboutComponent:()=>i(f,null,i(Ot,null,"For Linux"),i(U,null,"For Wayland it only pops up the screenshare select",i("br",null),"For X11 it may or may not work :shrug:"),i("br",null),i(Ot,null,"Video Devices"),i(U,null,"Supports cameras and capture cards (like Elgato HD60X) when enabled in settings"),i("br",null),i(Ot,null,"Regarding Sound & Preview Settings"),i(U,null,"We use the settings set and used by discord to decide if stream preview and sound should be enabled or not")),patches:[{find:"DISCONNECT_FROM_VOICE_CHANNEL]",predicate:()=>da.store.keybindScreenshare,replacement:{match:/\[\i\.\i\.DISCONNECT_FROM_VOICE_CHANNEL/,replace:'["INSTANT_SCREEN_SHARE"]:{onTrigger(){$self.autoStartStream(false)},keyEvents:{keyUp:!1,keyDown:!0}},$&'}},{find:'"push-to-talk-priority"',predicate:()=>da.store.keybindScreenshare,replacement:{match:/=\[(\{id:.{0,25}value:\i\.\i\.UNASSIGNED)/,replace:'=[{id:"instant-screen-share",value:"INSTANT_SCREEN_SHARE",label:"Instant Screenshare"},$1'}}],flux:{async VOICE_STATE_UPDATES({voiceStates:e}){if(!da.store.toolboxManagement||!da.store.instantScreenshare)return;let t=L.getCurrentUser().id;for(let o of e){let{userId:r,channelId:n}=o;if(r===t){n&&!NX&&(NX=!0,await j7e()),n||(NX=!1);break}}},STREAM_CREATE:e=>{kN=e,BX=!0},STREAM_DELETE:e=>{kN=e,BX=!1}},toolboxActions:{"Instant Screenshare"(){da.store.toolboxManagement=!da.store.toolboxManagement,ne(`Instant Screenshare ${da.store.toolboxManagement?"Enabled":"Disabled"}`,D.Type.SUCCESS)}}})});function Uxt(e){let t=e?.message?.content,[o,r]=V.useState("password");return i(be,{...e,size:"sm",title:"Decrypt Message",actions:[{text:"Decrypt",variant:"primary",onClick:()=>{let a=LX(t,o,!0);!a||!e?.message||(RX(e?.message,a),e.onClose())}},{text:"Cancel",variant:"secondary",onClick:e.onClose}]},i(oe,{style:{marginTop:"10px"}},"Message with Encryption"),i(Te,{defaultValue:t,disabled:!0}),i(oe,{style:{marginTop:"10px"}},"Password"),i(Te,{style:{marginBottom:"20px"},onChange:r}))}function W7e(e){ce(t=>i(Uxt,{...t,...e}))}var K7e=h(()=>{"use strict";d();We();C();TN()});function zxt(e){let[t,o]=V.useState(""),[r,n]=V.useState(""),[a,s]=V.useState("password"),[l,c]=V.useState(!1),u=t&&(l||r&&r.trim().split(" ").length>1);return i(be,{...e,size:"sm",title:"Encrypt Message",actions:[{text:"Send",variant:"primary",disabled:!u,onClick:()=>{if(!u)return;let m=Y7e(t,a,l?"d d":r),g=l?m.replaceAll("d",""):m;g&&(tr(g),e.onClose())}},{text:"Cancel",variant:"secondary",onClick:e.onClose}]},i(oe,{style:{marginTop:"10px"}},"Secret"),i(Te,{onChange:m=>{o(m)}}),i(oe,{style:{marginTop:"10px"}},"Cover (2 or more Words!!)"),i(Te,{disabled:l,onChange:m=>{n(m)}}),i(oe,{style:{marginTop:"10px"}},"Password"),i(Te,{style:{marginBottom:"20px"},defaultValue:"password",onChange:m=>{s(m)}}),i(mo,{title:"Don't use a Cover",value:l,onChange:m=>{c(m)}}))}function Q7e(){ce(e=>i(zxt,{...e}))}var Z7e=h(()=>{"use strict";d();hi();We();_e();C();TN()});function J7e(){return i("svg",{fill:"var(--text-default)",width:24,height:24,viewBox:"0 0 64 64"},i("path",{d:"M 32 9 C 24.832 9 19 14.832 19 22 L 19 27.347656 C 16.670659 28.171862 15 30.388126 15 33 L 15 49 C 15 52.314 17.686 55 21 55 L 43 55 C 46.314 55 49 52.314 49 49 L 49 33 C 49 30.388126 47.329341 28.171862 45 27.347656 L 45 22 C 45 14.832 39.168 9 32 9 z M 32 13 C 36.963 13 41 17.038 41 22 L 41 27 L 23 27 L 23 22 C 23 17.038 27.037 13 32 13 z"}))}function $xt(){return i(ve,{text:"This message has a hidden message! (InvisibleChat)"},({onMouseEnter:e,onMouseLeave:t})=>i("img",{"aria-label":"Hidden Message Indicator (InvisibleChat)",onMouseEnter:e,onMouseLeave:t,src:"https://github.com/SammCheese/invisible-chat/raw/NewReplugged/src/assets/lock.png",width:20,height:20,style:{transform:"translateY(4p)",paddingInline:4}}))}function V7e(){return i("svg",{"aria-hidden":!0,role:"img",width:"20",height:"20",viewBox:"0 0 64 64",style:{scale:"1.39",translate:"0 -1px"}},i("path",{fill:"currentColor",d:"M 32 9 C 24.832 9 19 14.832 19 22 L 19 27.347656 C 16.670659 28.171862 15 30.388126 15 33 L 15 49 C 15 52.314 17.686 55 21 55 L 43 55 C 46.314 55 49 52.314 49 49 L 49 33 C 49 30.388126 47.329341 28.171862 45 27.347656 L 45 22 C 45 14.832 39.168 9 32 9 z M 32 13 C 36.963 13 41 17.038 41 22 L 41 27 L 23 27 L 23 22 C 23 17.038 27.037 13 32 13 z"}))}function jxt(e){return`#${[e>>16,e>>8,e].map(t=>(t&255).toString(16)).join("")}`}async function qxt(e){let{body:t}=await mt.post({url:Gt.Endpoints.UNFURL_EMBED_URLS,body:{urls:[e]}});return t.embeds[0].color=jxt(t.embeds[0].color),await t.embeds[0]}async function RX(e,t){let o=t.match(Hxt);if(e.embeds.push({type:"rich",rawTitle:"Decrypted Message",color:"#45f5f5",rawDescription:t,footer:{text:"Made with \u2764\uFE0F by c0dine and Sammy!"}}),o?.length){let r=await qxt(new URL(o[0]));r&&e.embeds.push(r)}Ds(e.channel_id,e.id,{embeds:e.embeds})}function Y7e(e,t,o){return OX.hide(e+"\u200B",t,o)}function LX(e,t,o){let r=OX.reveal(e,t);return o?r.replace("\u200B",""):r}function Wxt(e){return e.endsWith("\u200B")}async function Kxt(e){let t=eDe.store.savedPasswords.split(",").map(r=>r.trim());if(!e?.content||!t?.length)return!1;let{content:o}=e;/^\W/.test(e.content)&&(o=`d ${e.content}d`);for(let r=0;r{"use strict";d();Ba();V0();j();Pe();O();xK();R();C();K7e();Z7e();Gxt=({isMainChat:e})=>e?i(Un,{tooltip:"Encrypt Message",onClick:()=>Q7e(),buttonProps:{"aria-haspopup":"dialog"}},V7e()):null;eDe=M({savedPasswords:{type:0,default:"password, Password",description:"Saved Passwords (Seperated with a , )"}}),X7e=new RegExp(/( \u200c|\u200d |[\u2060-\u2064])[^\u200b]/),Hxt=new RegExp(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/);IN=S({name:"InvisibleChat",description:"Encrypt your Messages in a non-suspicious way!",tags:["Chat"],authors:[b.SammCheese],dependencies:["MessageUpdaterAPI","ChatInputButtonAPI","MessagePopoverAPI"],reporterTestable:8,settings:eDe,chatBarButton:{icon:V7e,render:Gxt},patches:[{find:".SEND_FAILED,",replacement:{match:/let\{className:\i,message:\i[^}]*\}=(\i)/,replace:"try {$1 && $self.INV_REGEX.test($1.message.content) ? $1.content.push($self.indicator()) : null } catch {};$&"}}],INV_REGEX:X7e,async start(){let{default:e}=await L2e();OX=new e(!0,!1)},messagePopoverButton:{icon:J7e,render(e){return X7e.test(e?.content)?{label:"Decrypt Message",icon:J7e,message:e,channel:W.getChannel(e.channel_id),onClick:async()=>{let t=await Kxt(e);t?RX(e,t):W7e({message:e})}}:null}},indicator:H.wrap($xt,{noop:!0})})});var Qxt,EN,tDe=h(()=>{"use strict";d();j();O();R();Qxt=M({inviteDuration:{type:4,description:"Invite Duration",options:[{label:"30 minutes",value:1800},{label:"1 hour",value:3600},{label:"6 hours",value:21600},{label:"12 hours",value:43200},{label:"1 day",value:86400},{label:"7 days",value:604800},{label:"Forever",value:0,default:!0}]},maxUses:{type:4,description:"Invite Use Count",options:[{label:"Infinite",value:0,default:!0},{label:"1",value:1},{label:"5",value:5},{label:"10",value:10},{label:"25",value:25},{label:"50",value:50},{label:"100",value:100}]},temporaryMembership:{type:3,default:!1,description:"Temporary Membership"}}),EN=S({name:"InviteDefaults",description:"Allows you to edit the default values when creating server invites.",tags:["Servers"],authors:[F.VillainsRule],settings:Qxt,patches:[{find:".GUILD_CREATE_INVITE_SUGGESTION,defaultMaxAge",replacement:[{match:/(?<=maxAge:)\i\?\?\i\?\?\i/,replace:"$self.settings.store.inviteDuration"},{match:/(?<=maxUses:)null!=\i&&0!==\i\?\i:\i.value/,replace:"$self.settings.store.maxUses"},{match:/(?<=temporary:)\i\?\?!1/,replace:"$self.settings.store.temporaryMembership"}]}]})});function nDe(e,t){Yt.transitionTo(`/channels/${t??"@me"}/${e}/0`)}async function rDe(e,t){let r=(await mt.get({url:Gt.Endpoints.MESSAGES(e),query:{limit:1}})).body?.[0]?.id;r&&Yt.transitionTo(`/channels/${t??"@me"}/${e}/${r}`)}async function oDe(e,t,o,r){try{let a=(await mt.get({url:Gt.Endpoints.SEARCH_GUILD(t),query:{author_id:o,channel_id:e,sort_by:"timestamp",sort_order:r?"asc":"desc"}})).body?.messages?.[0]?.[0]?.id;if(!a){D.show({type:D.Type.FAILURE,message:"No messages found from this user in this channel.",id:D.genId()});return}Yt.transitionTo(`/channels/${t}/${e}/${a}`)}catch{D.show({type:D.Type.FAILURE,message:"Failed to search for messages.",id:D.genId()})}}var FX,Zxt,Yxt,DN,iDe=h(()=>{"use strict";d();O();R();C();FX=(e,{channel:t,thread:o})=>{let r=Fe.getChannelId(),n=r?W.getChannel(r):null,a=t?.isForumLikeChannel?.()&&n?.isThread?.()&&n.parent_id===t.id?n:null,s=o??a??t;s&&e.push(i(P.MenuItem,{id:"vc-jump-to-first",label:"Jump To First Message",action:()=>nDe(s.id,s.guild_id)}),i(P.MenuItem,{id:"vc-jump-to-last",label:"Jump To Last Message",action:()=>rDe(s.id,s.guild_id)}))},Zxt=(e,{user:t,channel:o})=>{t&&(!o||o.guild_id||e.push(i(P.MenuItem,{id:"vc-jump-to-first",label:"Jump To First Message",action:()=>nDe(o.id,null)}),i(P.MenuItem,{id:"vc-jump-to-last",label:"Jump To Last Message",action:()=>rDe(o.id,null)})))},Yxt=(e,{message:t})=>{if(!t)return;let o=Fe.getChannelId(),r=ao.getGuildId();!o||!r||e.push(i(P.MenuItem,{id:"vc-jump-to-first-user",label:"Jump To First Message",action:()=>oDe(o,r,t.author.id,!0)}),i(P.MenuItem,{id:"vc-jump-to-last-user",label:"Jump To Last Message",action:()=>oDe(o,r,t.author.id,!1)}))},DN=S({name:"JumpTo",description:"Adds context menu options to jump to the start or bottom of a channel/DM.",tags:["Chat","Utility"],authors:[b.Samwich,b.thororen],contextMenus:{"channel-context":FX,"gdm-context":FX,"thread-context":FX,"user-context":Zxt,message:Yxt}})});var PN=h(()=>{});function Jxt({modalProps:e,onSelect:t,choices:o}){let r=K("vc-command-palette-"),[n,a]=T(""),[s,l]=T(null),[c,u]=T(0),p=Rg.store.allowMouseControl,g=o.slice().sort((w,I)=>w.label.localeCompare(I.label)).filter(w=>w.label.toLowerCase().includes(n.toLowerCase())),x=g.slice(c,c+20),v=g.length,y=(w,I)=>{let E=g.find(N=>N.id===w);E&&t(E),ir()},A=w=>{let I=s!==null?s:-1,E;switch(w.key){case"ArrowUp":w.preventDefault(),E=I>0?I-1:x.length-1,l(E),I===0&&v>20&&(u(N=>Math.max(N-1,0)),l(0));break;case"ArrowDown":w.preventDefault(),E=I20&&(u(N=>Math.min(N+1,g.length-20)),l(19));break;case"Enter":I!==null&&I>=0&&I{p&&g.length>20&&(w.deltaY>0?u(I=>Math.min(I+2,g.length-20)):u(I=>Math.max(I-2,0)))};return G(()=>{l(0),u(0)},[n]),i(be,{...e,size:"md",title:"Multiple Choice"},i("div",{className:r("root"),onKeyDown:A,onWheel:k},i(Te,{value:n,onChange:w=>a(w),style:{width:"100%",borderBottomLeftRadius:"0",borderBottomRightRadius:"0",paddingLeft:"0.9rem"},placeholder:"Search the Command Palette"}),i("div",{className:r("option-container")},x.map((w,I)=>i("button",{key:w.id,className:r("option",{"key-hover":I===s}),onClick:()=>{p&&y(w.id,I)},onMouseMove:()=>{p&&l(I)},style:p?{cursor:"pointer"}:{cursor:"default"}},w.label,w.registrar&&i("span",{className:r("registrar")},w.registrar))))))}function MN(e){return new Promise(t=>{ce(o=>i(Jxt,{modalProps:o,onSelect:r=>{ir(),t(r)},choices:e}))})}var aDe=h(()=>{"use strict";d();PN();we();C();NN()});function Xxt({modalProps:e,onSelect:t,placeholder:o,info:r}){let[n,a]=T(""),s=l=>{l.key==="Enter"&&(t(n),ir())};return G(()=>{a("")},[]),i(be,{...e,size:"sm",title:"Text Input"},i("div",{className:"vc-command-palette-simple-text",onKeyDown:s},i(Te,{value:n,onChange:l=>a(l),style:{width:"30vw",borderRadius:"5px"},placeholder:o??"Type and press Enter"}),r&&i("div",{className:"vc-command-palette-textinfo"},r)))}function _X(e,t){return new Promise(o=>{ce(r=>i(Xxt,{modalProps:r,onSelect:n=>o(n),placeholder:e,info:t}))})}var sDe=h(()=>{"use strict";d();PN();C()});function Vxt(e,t){Me.plugins[e.id].enabled=t,D.show({message:`Successfully ${t?"enabled":"disabled"} ${e.id}`,type:D.Type.SUCCESS,id:D.genId(),options:{position:D.Position.BOTTOM}})}var lDe,UX=h(()=>{"use strict";d();Fa();j();Ef();mi();hd();ru();C();cH();Na();aDe();sDe();lDe=[{id:"openEquicordSettings",label:"Open Equicord tab",callback:async()=>await un.openUserSettings("equicord_main_panel"),registrar:"Equicord"},{id:"openPluginSettings",label:"Open Plugin tab",callback:()=>un.openUserSettings("equicord_plugins_panel"),registrar:"Equicord"},{id:"openThemesSettings",label:"Open Themes tab",callback:()=>un.openUserSettings("equicord_themes_panel"),registrar:"Equicord"},{id:"openUpdaterSettings",label:"Open Updater tab",callback:()=>un.openUserSettings("equicord_updater_panel"),registrar:"Equicord"},{id:"openEquicordCloudSettings",label:"Open Cloud tab",callback:()=>un.openUserSettings("equicord_cloud_panel"),registrar:"Equicord"},{id:"openBackupSettings",label:"Open Backup & Restore tab",callback:()=>un.openUserSettings("equicord_backup_restore_panel"),registrar:"Equicord"},{id:"restartClient",label:"Restart Client",callback:()=>ai(),registrar:"Equicord"},{id:"openQuickCSSFile",label:"Open Quick CSS File",callback:()=>VencordNative.quickCss.openEditor(),registrar:"Equicord"},{id:"openSettingsFolder",label:"Open Settings Folder",callback:async()=>n9(await VencordNative.settings.getSettingsDir()),registrar:"Equicord"},{id:"openInGithub",label:"Open in Github",callback:async()=>VencordNative.native.openExternal(await X0()),registrar:"Equicord"},{id:"openInBrowser",label:"Open in Browser",callback:async()=>{let t=(await _X("Enter a URL")).replace(/(https?:\/\/)?([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+)/,"https://$2.$3");try{new URL(t),VencordNative.native.openExternal(t)}catch{D.show({message:"Invalid URL",type:D.Type.FAILURE,id:D.genId(),options:{position:D.Position.BOTTOM}})}},registrar:"Equicord"},{id:"togglePlugin",label:"Toggle Plugin",callback:async()=>{let e=Object.keys(et),t=[];for(let n of e)t.push({id:n,label:n});let o=await MN(t),r=await MN([{id:"enable",label:"Enable"},{id:"disable",label:"Disable"}]);if(o&&r)return Vxt(o,r.id==="enable")},registrar:"Equicord"},{id:"quickFetch",label:"Quick Fetch",callback:async()=>{try{let t=(await _X("Enter URL to fetch (GET only)")).replace(/(https?:\/\/)?([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+)/,"https://$2.$3"),r=await(await fetch(t)).text();po(r),D.show({message:"Copied response to clipboard!",type:D.Type.SUCCESS,id:D.genId(),options:{position:D.Position.BOTTOM}})}catch{D.show({message:"Issue fetching URL",type:D.Type.FAILURE,id:D.genId(),options:{position:D.Position.BOTTOM}})}},registrar:"Equicord"},{id:"copyGitInfo",label:"Copy Git Info",callback:async()=>{po(`gitHash: ${If} gitRemote: ${lu}`),D.show({message:"Copied git info to clipboard!",type:D.Type.SUCCESS,id:D.genId(),options:{position:D.Position.BOTTOM}})},registrar:"Equicord"},{id:"checkForUpdates",label:"Check for Updates",callback:async()=>{await Sc()?setTimeout(()=>At({title:"A Equicord update is available!",body:"Click here to view the update",permanent:!0,noPersist:!0,onClick(){un.openUserSettings("equicord_updater_panel")}}),1e4):D.show({message:"No updates available",type:D.Type.MESSAGE,id:D.genId(),options:{position:D.Position.BOTTOM}})},registrar:"Equicord"},{id:"navToServer",label:"Navigate to Server",callback:async()=>{let e=Object.values($e.getGuilds()),t=[];for(let r of e)t.push({id:r.id,label:r.name});let o=await MN(t);o&&Yt.transitionToGuild(o.id)},registrar:"Equicord"}]});function t1t({modalProps:e}){let t=K("vc-command-palette-"),[o,r]=T(null),[n,a]=T(0),s=Rg.store.allowMouseControl,l=lDe.slice().sort((A,k)=>A.label.localeCompare(k.label)),[c,u]=T(""),p=l.filter(A=>A.label.toLowerCase().includes(c.toLowerCase())),m=p.slice(n,n+20),g=p.length,x=A=>{s&&p.length>20&&(A.deltaY>0?a(k=>Math.min(k+2,p.length-20)):a(k=>Math.max(k-2,0)))},v=(A,k)=>{let w=p.find(I=>I.id===A);w&&e1t.log(`${w.id}'s action was triggered.`),ir(),w?.callback?.(),r(k)},y=A=>{let k=o!==null?o:-1,w;switch(A.key){case"ArrowUp":A.preventDefault(),w=k>0?k-1:m.length-1,r(w),k===0&&g>20&&(a(I=>Math.max(I-1,0)),r(0));break;case"ArrowDown":A.preventDefault(),w=k20&&(a(I=>Math.min(I+1,p.length-20)),r(19));break;case"Enter":k!==null&&k>=0&&k{r(0),a(0)},[c]),i(be,{...e,size:"md",title:"Command Palette"},i("div",{className:t("root"),onKeyDown:y,onWheel:x},i(Te,{value:c,onChange:A=>u(A),style:{width:"100%",borderBottomLeftRadius:"0",borderBottomRightRadius:"0",paddingLeft:"0.9rem"},placeholder:"Search the Command Palette"}),i("div",{className:t("option-container")},m.map((A,k)=>i("button",{key:A.id,className:t("option",{"key-hover":k===o}),onClick:()=>{s&&v(A.id,k)},onMouseMove:()=>{s&&r(k)},style:s?{cursor:"pointer"}:{cursor:"default"}},A.label,A.registrar&&i("span",{className:t("registrar")},A.registrar))))))}var e1t,cDe,uDe=h(()=>{"use strict";d();PN();UX();we();He();C();NN();e1t=new ie("CommandPalette","#e5c890");cDe=()=>ce(e=>i(t1t,{modalProps:e}))});var ux,zX,Rg,BN,NN=h(()=>{"use strict";d();j();O();we();R();C();UX();uDe();ux=K("vc-command-palette-"),zX=!1,Rg=M({hotkey:{description:"The hotkey to open the command palette.",type:6,default:["Control","Shift","P"],component:()=>{let[e,t]=T(!1),o=r=>{let n=new Set,a=[];r(!0),zX=!0;let s=()=>{if(n.size===0||!document.querySelector(`.${ux("key-recorder-button")}`)){let u=a.reduce((p,m)=>p.length>m.length?p:m);u.length>0&&(Rg.store.hotkey=u.map(p=>p.toLowerCase())),r(!1),zX=!1,document.removeEventListener("keydown",l),document.removeEventListener("keyup",c)}a.push(Array.from(n))},l=u=>{let{key:p}=u;n.has(p)||n.add(p),s()},c=u=>{n.delete(u.key),s()};document.addEventListener("keydown",l),document.addEventListener("keyup",c)};return i(f,null,i("div",{className:ux("key-recorder-container"),onClick:()=>o(t)},i("div",{className:`${ux("key-recorder")} ${e?ux("recording"):""}`},Rg.store.hotkey.map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" + "),i("button",{className:`${ux("key-recorder-button")} ${e?ux("recording-button"):""}`,disabled:e},e?"Recording...":"Record keybind"))))}},allowMouseControl:{description:"Allow the mouse to control the command palette.",type:3,default:!0}}),BN=S({name:"KeyboardNavigation",description:"Allows you to navigate the UI with a keyboard.",tags:["Accessibility","Shortcuts"],authors:[b.Ethan],settings:Rg,start(){document.addEventListener("keydown",this.event)},stop(){document.removeEventListener("keydown",this.event)},event(e){let t;(c=>(c.control="ctrlKey",c.shift="shiftKey",c.alt="altKey",c.meta="metaKey"))(t||={});let{hotkey:o}=Rg.store,r=e.key.toLowerCase();if(!zX){for(let n=0;n{"use strict";d();dDe={operagx:{others:["https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/operagx/click1.wav","https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/operagx/click2.wav","https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/operagx/click3.wav"],backspaces:["https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/operagx/backspace.wav"]},osu:{others:["https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/osu/key-press-1.mp3","https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/osu/key-press-2.mp3","https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/osu/key-press-3.mp3","https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/osu/key-press-4.mp3"],backspaces:["https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/osu/key-delete.mp3"],caps:["https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/osu/key-caps.mp3"],enters:["https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/osu/key-confirm.mp3"],arrows:["https://github.com/Equicord/Equibored/raw/main/sounds/keyboardSounds/osu/key-movement.mp3"],allowedIgnored:["CapsLock","ArrowUp","ArrowRight","ArrowLeft","ArrowDown"]}},pDe=["CapsLock","ShiftLeft","ShiftRight","ControlLeft","ControlRight","AltLeft","AltRight","MetaLeft","MetaRight","ArrowUp","ArrowRight","ArrowLeft","ArrowDown","MediaPlayPause","MediaStop","MediaTrackNext","MediaTrackPrevious","MediaSelect","MediaEject","MediaVolumeUp","MediaVolumeDown","AudioVolumeUp","AudioVolumeDown"]});function hDe(){Array.from(Object.values(Gs)).forEach(e=>{e.forEach(t=>t.player.delete())}),Object.keys(Gs).forEach(e=>{Gs[e]=[]})}function GX(e,t){if(hDe(),Fu=dDe[t],!Fu)return;function o(r){if(!Fu[r])return;let n=-1;for(let a=0;a<3;a++)for(let s of Fu[r])n++,Gs[r].push({playing:!1,player:yf(s,{volume:e,preload:!0,persistent:!0,onEnded:()=>{Gs[r][n].playing=!1}})})}Fu.backspaces&&o("backspaces"),Fu.caps&&o("caps"),Fu.enters&&o("enters"),Fu.arrows&&o("arrows"),Fu.others&&o("others")}var Gs,Fu,$X,fDe,gDe,L8,RN,xDe=h(()=>{"use strict";d();rl();j();O();R();mDe();Gs={backspaces:[],caps:[],enters:[],arrows:[],others:[]},$X=new Set,fDe=e=>{$X.delete(e.code)},gDe=e=>{if(!Fu||pDe.includes(e.code)&&!Fu.allowedIgnored?.includes(e.key)||$X.has(e.code))return;$X.add(e.code);function t(o){let r=o.filter(s=>!s?.playing),n,a;r.length?(n=Math.floor(Math.random()*r.length),a=r[n]):(n=Math.floor(Math.random()*o.length),a=o[n]),a&&(a.playing=!0,a.player.restart())}e.code==="Backspace"&&Gs.backspaces.length?t(Gs.backspaces):e.code==="CapsLock"&&Gs.caps.length?t(Gs.caps):e.code==="Enter"&&Gs.enters.length?t(Gs.enters):["ArrowUp","ArrowRight","ArrowLeft","ArrowDown"].includes(e.code)&&Gs.arrows.length?t(Gs.arrows):Gs.others.length&&t(Gs.others)};L8=M({volume:{description:"Volume of the keyboard sounds.",type:5,markers:[0,25,50,75,100],stickToMarkers:!1,default:100,onChange:e=>{GX(e,L8.store.soundPack)}},soundPack:{description:"Sound pack to use.",type:4,options:[{label:"OperaGX",value:"operagx",default:!0},{label:"osu!",value:"osu"}],onChange:e=>{GX(L8.store.volume,e)}}}),RN=S({name:"KeyboardSounds",description:"Adds OperaGX or osu! sound effects when typing on your keyboard.",tags:["Fun"],authors:[b.HypedDomi,F.Etorix],dependencies:["AudioPlayerAPI"],settings:L8,start(){GX(L8.store.volume,L8.store.soundPack),document.addEventListener("keyup",fDe),document.addEventListener("keydown",gDe)},stop:()=>{hDe(),document.removeEventListener("keyup",fDe),document.removeEventListener("keydown",gDe)}})});var vDe=h(()=>{});var yDe=h(()=>{});function bDe({title:e,children:t}){let[o,r]=T(!1);return i("div",null,i(Ys,{onClick:()=>r(!o),className:tp("collapsible")},i("div",{style:{display:"flex",alignItems:"center"}},i("div",{style:{marginLeft:"auto",color:"var(--text-muted)",paddingRight:"5px"}},o?"\u25BC":"\u25B6"),i(oe,{tag:"h4"},e))),o&&t)}var SDe=h(()=>{"use strict";d();yDe();Tt();We();C();dx()});var wDe=h(()=>{});function ADe({title:e,description:t,disabled:o,className:r,hideBorder:n,children:a}){return i("label",{className:LN("wrapper")},i("div",{className:X(tp("form-generic-label"),r,o&&LN("disabled"))},i("div",{className:LN("text")},i(nr,{size:"md",weight:"medium"},e),t&&i(nr,{size:"sm",weight:"normal"},t)),a),!n&&i(Rt,{className:LN("border")}))}var LN,kDe=h(()=>{"use strict";d();wDe();xr();Jc();we();Be();dx();LN=K("vc-keywordnotify-form-generic-label-")});function HX({listIds:e,setListIds:t}){let o=Vt(),[r]=T(e);async function n(s,l){r[l]=s.trim(),t(r),o()}let a=r.map((s,l)=>i(pe,{key:l,flexDirection:"row",style:{marginBottom:"5px"}},i("div",{style:{flexGrow:1}},i(Te,{placeholder:"ID",spellCheck:!1,value:s,onChange:c=>n(c,l)})),i(de,{onClick:()=>{r.splice(l,1),t(r),o()},variant:"none",size:"iconOnly",className:tp("delete")},i(hr,null))));return i(f,null,a)}var CDe=h(()=>{"use strict";d();Tt();Lt();ot();Kt();C();dx()});function TDe({listType:e,setListPriority:t}){return i(qt,{options:[{label:"Whitelist",value:"Whitelist"},{label:"Blacklist",value:"BlackList"}],placeholder:"Select a list type",isSelected:o=>o===e,closeOnSelect:!0,select:t,serialize:o=>o})}var IDe=h(()=>{"use strict";d();C();dx()});function EDe(){let e=Vt(),[t]=T(Gi);async function o(){await Le.set(Ky,Gi),e()}async function r(p,m){Gi[p].regex=m,o()}async function n(p,m){Gi[p].listPriority=m,o()}async function a(p,m){Gi[p].whitelist=m,o()}async function s(p,m){Gi[p].blacklist=m,o()}async function l(p,m){Gi[p].ignoreCase=m,o()}async function c(p,m){Gi[p].ignoreBots=m,o()}let u=Gi.map((p,m)=>i(f,null,i(bDe,{title:`Keyword Entry ${m+1}`},i(pe,{flexDirection:"row"},i("div",{style:{flexGrow:1}},i(Te,{placeholder:"example|regex",spellCheck:!1,value:t[m].regex,onChange:g=>r(m,g)})),i(de,{onClick:()=>MDe(m,e),variant:"none",size:"iconOnly",className:tp("delete")},i(hr,null))),i(mo,{value:t[m].ignoreCase,onChange:()=>{l(m,!t[m].ignoreCase)},title:"Ignore Case",className:tp("ignoreCaseSwitch")}),i(mo,{value:t[m].ignoreBots??!1,onChange:()=>{c(m,!t[m].ignoreBots)},title:"Ignore Bots",description:"Ignore messages from bots",className:tp("ignoreCaseSwitch")}),i(pe,{flexDirection:"row"},i("div",{style:{flexGrow:1}},i(oe,{tag:"h5"},"Whitelist")),i(de,{onClick:()=>{t[m].whitelist.push(""),e()}},"Add ID")),!!t[m].whitelist.length&&i(f,null,i("div",{className:X(z.top8,z.bottom8)}),i(pe,{flexDirection:"row"},i("div",{style:{flexGrow:1}},i(HX,{listIds:t[m].whitelist,setListIds:g=>a(m,g)})))),i("div",{className:X(z.top8,z.bottom8)}),i(pe,{flexDirection:"row"},i("div",{style:{flexGrow:1}},i(oe,{tag:"h5"},"Blacklist")),i(de,{onClick:()=>{t[m].blacklist.push(""),e()}},"Add ID")),!!t[m].blacklist.length&&i(f,null,i("div",{className:X(z.top8,z.bottom8)}),i(pe,{flexDirection:"row"},i("div",{style:{flexGrow:1}},i(HX,{listIds:t[m].blacklist,setListIds:g=>s(m,g)})))),i("div",{className:X(z.top8,z.bottom8)}),i(ADe,{title:"List priority (Advanced)",description:i(f,null,i(U,null,"Which list to prioritize in case a message triggers both lists"),i(U,null,"If you are not sure, in most common scenarios it is usually set to Blacklist")),hideBorder:!0},i(TDe,{listType:t[m].listPriority,setListPriority:g=>n(m,g)})))));return i(f,null,u,i("div",null,i(de,{onClick:()=>PDe(e)},"Add Keyword Entry")))}var DDe=h(()=>{"use strict";d();on();Tt();Lt();hi();We();ot();Ja();Je();Be();Kt();C();dx();SDe();kDe();CDe();IDe()});async function PDe(e){Gi.push({regex:"",ignoreCase:!1,ignoreBots:!0,whitelist:[],blacklist:[],listPriority:"BlackList"}),await Le.set(Ky,Gi),e()}async function MDe(e,t){Gi.splice(e,1),await Le.set(Ky,Gi),t()}function O8(e,t,o){try{return e.match(new RegExp(t,o))}catch{return!1}}function l1t(e,t){let o;try{o=t.map(a=>new RegExp(a.regex,"g"+(a.ignoreCase?"i":"")))}catch{return[e]}let r=o.map(a=>e.match(a)).flat().filter(a=>a!=null);if(r.length===0)return[e];let n=e.indexOf(r[0]);return i(f,null,i("span",null,e.substring(0,n)),i("span",{className:"highlight"},r[0]),i("span",null,e.substring(n+r[0].length)))}var Gi,op,jX,o1t,n1t,r1t,i1t,a1t,s1t,Ky,Qy,tp,ON,FN,dx=h(()=>{"use strict";d();vDe();on();j();Tt();Pe();ot();O();we();Be();R();le();C();DDe();Gi=[],op=[],o1t=Ie("singleMessage","scroller"),n1t=Ie("inboxTitle","tab"),r1t=Oe("navigator","Provider"),i1t=Oe("onKeyDown","tabIndex","useContext","aria-orientation"),a1t=Oe("keyboardModeEnabled)","scrollIntoViewNode"),s1t=Oe(".createFromServer(",".isBlockedForMessage","messageReference:"),Ky="KeywordNotify_keywordEntries",Qy="KeywordNotify_log",tp=K("vc-keywordnotify-");ON=M({ignoreBots:{type:3,description:"Ignore messages from bots",default:!0,hidden:!0},amountToKeep:{type:1,description:"Amount of messages to keep in the log",default:50},keywords:{type:6,description:"Manage keywords",component:()=>i(EDe,null)}}),FN=S({name:"KeywordNotify",authors:[F.camila314,F.x3rt,F.benjas333],description:"Sends a notification if a given message matches certain keywords or regexes",settings:ON,patches:[{find:"#{intl::MENTIONS})",group:!0,replacement:[{match:/#{intl::Fn6Odn::raw}\)\}\)\}\):null/,replace:"$&,$self.keywordTabBar()"},{match:/:(\i)===\i\.\i\.MENTIONS\?\(0,.{0,500}null}/,replace:": $1 === 8 ? $self.keywordClearButton() $&"},{match:/:(\i)===\i\.\i\.MENTIONS\?\(0,.{0,500}onJump:(\i)}\)/,replace:": $1 === 8 ? $self.tryKeywordMenu($2) $&"},{match:/function (\i)\(\i\){let{message:\i,onJump/,replace:"$self.RenderMsg = $1; $&"},{match:/onClick:\(\)=>(\i\.\i\.deleteRecentMention\((\i)\.id\))/,replace:"onClick: () => $2._keyword ? $self.deleteKeyword($2.id) : $1"}]}],async start(){this.onUpdate=()=>null,Gi=await Le.get(Ky)??[],Gi.forEach(e=>{e.ignoreBots=e.ignoreBots??this.settings.store.ignoreBots,e.whitelist=e.whitelist??[],e.blacklist=e.blacklist??[],e.listPriority=e.listPriority??"BlackList",!(e.listType==null||e.listIds==null)&&(e.listType==="Whitelist"?e.whitelist=e.listIds:e.blacklist=e.listIds,delete e.listIds,delete e.listType)}),await Le.set(Ky,Gi),(await Le.get(Qy)??[]).map(e=>JSON.parse(e)).forEach(e=>{try{this.addToLog(e)}catch(t){console.error(t)}}),jX=e=>this.modify(e),Q.addInterceptor(jX)},stop(){let e=Q._interceptors.indexOf(jX);e>-1&&Q._interceptors.splice(e,1)},applyKeywordEntries(e){let t=!1;for(let o of Gi){if(o.regex==="")continue;let r=o.whitelist.some(l=>{let c=l.trim();return c===e.channel_id||c===e.author.id});if(!r){let l=W.getChannel(e.channel_id);l!=null&&(r=o.whitelist.some(c=>c.trim()===l.guild_id))}let n=o.blacklist.some(l=>{let c=l.trim();return c===e.channel_id||c===e.author.id});if(!n){let l=W.getChannel(e.channel_id);l!=null&&(n=o.blacklist.some(c=>c.trim()===l.guild_id))}let a=o.listPriority==="Whitelist";if(r&&n){if(!a)continue}else if(o.whitelist.length&&!r||n)continue;if(e.author.bot&&o.ignoreBots&&(!o.whitelist.length||!o.whitelist.includes(e.author.id)))continue;let s=o.ignoreCase?"i":"";if(O8(e.content,o.regex,s))t=!0;else for(let l of e.embeds)if(O8(l.description,o.regex,s)||O8(l.title,o.regex,s)){t=!0;break}else if(l.fields!=null){for(let c of l.fields)if(O8(c.value,o.regex,s)||O8(c.name,o.regex,s)){t=!0;break}}}if(t){let o=L.getCurrentUser()?.id;o!=null&&e.mentions.push({id:o}),e.author.id!==o&&(this.storeMessage(e),this.addToLog(e))}},storeMessage(e){e!=null&&Le.get(Qy).then(t=>{t=t?t.map(o=>JSON.parse(o)):[],t.push(e),t.length>ON.store.amountToKeep&&(t=t.slice(-ON.store.amountToKeep)),Le.set(Qy,t.map(o=>JSON.stringify(o)))})},discardMessage(e){Le.get(Qy).then(t=>{let o=t?t.map(r=>JSON.parse(r)):[];o=o.filter(r=>r.id!==e),Le.set(Qy,o.map(r=>JSON.stringify(r)))})},addToLog(e){if(e==null||op.some(o=>o.id===e.id))return;let t;try{t=s1t(e)}catch(o){console.error(o);return}for(op.push(t),op.sort((o,r)=>r.timestamp.getTime()-o.timestamp.getTime());op.length>ON.store.amountToKeep;)op.pop();this.onUpdate()},deleteKeyword(e){op=op.filter(t=>t.id!==e),this.onUpdate()},keywordTabBar(){return i(rr.Item,{className:X(n1t.tab),id:8},"Keywords")},keywordClearButton(){return i(ve,{text:"Clear All"},({onMouseLeave:e,onMouseEnter:t})=>i(de,{variant:"secondary",size:"iconOnly",onMouseLeave:e,onMouseEnter:t,onClick:()=>{op=[],Le.set(Qy,[]),this.onUpdate()}},i($U,{width:16,height:16,className:"vc-double-checkmark-icon"})))},tryKeywordMenu(e){let[t,o]=T(op),r=Se(null),n=a1t("keywords",r);this.onUpdate=()=>{let l=Array.from(op);o(l)};let a=l=>(l._keyword=!0,l.customRenderedContent={content:l1t(l.content,Gi)},this.RenderMsg({message:l,onJump:e}));return i(H,null,i(r1t,{navigator:n},i(({children:l})=>l(i1t()),null,({ref:l,...c})=>i(ei,{ref:u=>{r.current=u,l.current=u?.getScrollerNode()??null},className:X(o1t.scroller),onScroll:void 0,...c},t.map(u=>i("div",{key:u.id},a(u)))))))},modify(e){if(e.type==="MESSAGE_CREATE"||e.type==="MESSAGE_UPDATE")this.applyKeywordEntries(e.message);else if(e.type==="LOAD_MESSAGES_SUCCESS")for(let t=0;ts?.author?.id===o)?.id;if(a)return a}catch(r){return console.error("Error finding last message:",r),D.show({type:D.Type.FAILURE,message:"Failed to find messages. Check console for details.",id:D.genId()}),null}return D.show({type:D.Type.FAILURE,message:"Couldn't find any recent messages from this user.",id:D.genId()}),null}async function LDe(e,t){if(!e){D.show({type:D.Type.FAILURE,message:"Channel information not available.",id:D.genId()});return}try{let o=e.guild_id??"@me",r=t??L.getCurrentUser().id,n=await c1t(o,e.id,r);n&&Yt.transitionTo(`/channels/${o}/${e.id}/${n}`)}catch(o){console.error("Error in jumpToLastActive:",o),D.show({type:D.Type.FAILURE,message:"Failed to jump to message. Check console for details.",id:D.genId()})}}function BDe(){return i("svg",{viewBox:"0 0 52 52",width:"20",height:"20",fill:"#aa6746"},i("g",null,i("path",{d:`M11.4,21.6L24.9,7.9c0.6-0.6,1.6-0.6,2.2,0l13.5,13.7c0.6,0.6,0.6,1.6,0,2.2L38.4,26 c-0.6,0.6-1.6,0.6-2.2,0l-9.1-9.4c-0.6-0.6-1.6-0.6-2.2,0l-9.1,9.3c-0.6,0.6-1.6,0.6-2.2,0l-2.2-2.2C10.9,23.1,10.9,22.2,11.4,21.6 z`}),i("path",{d:`M11.4,39.7L24.9,26c0.6-0.6,1.6-0.6,2.2,0l13.5,13.7c0.6,0.6,0.6,1.6,0,2.2l-2.2,2.2 c-0.6,0.6-1.6,0.6-2.2,0l-9.1-9.4c-0.6-0.6-1.6-0.6-2.2,0L15.8,44c-0.6,0.6-1.6,0.6-2.2,0l-2.2-2.2C10.9,41.2,10.9,40.2,11.4,39.7z `})))}function RDe(){return i("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"#aa6746",xmlns:"http://www.w3.org/2000/svg"},i("path",{fillRule:"evenodd",d:"M12,2 C17.5228475,2 22,6.4771525 22,12 C22,17.5228475 17.5228475,22 12,22 C6.4771525,22 2,17.5228475 2,12 C2,6.4771525 6.4771525,2 12,2 Z M12,4 C7.581722,4 4,7.581722 4,12 C4,16.418278 7.581722,20 12,20 C16.418278,20 20,16.418278 20,12 C20,7.581722 16.418278,4 12,4 Z M12,6 C12.5128358,6 12.9355072,6.38604019 12.9932723,6.88337887 L13,7 L13,11.5857864 L14.7071068,13.2928932 C15.0976311,13.6834175 15.0976311,14.3165825 14.7071068,14.7071068 C14.3466228,15.0675907 13.7793918,15.0953203 13.3871006,14.7902954 L13.2928932,14.7071068 L11.2928932,12.7071068 C11.1366129,12.5508265 11.0374017,12.3481451 11.0086724,12.131444 L11,12 L11,7 C11,6.44771525 11.4477153,6 12,6 Z"}))}var NDe,u1t,_N,ODe=h(()=>{"use strict";d();O();R();C();NDe=(e,{channel:t})=>{e.push(i(P.MenuItem,{id:"LastActive",label:i("span",{style:{color:"#aa6746"}},"Your Last Message"),icon:RDe,leadingAccessory:{type:"icon",icon:RDe},action:()=>{LDe(t)}}))},u1t=(e,{user:t,channel:o})=>{!o||!t?.id||e.push(i(P.MenuItem,{id:"LastActive",label:i("span",{style:{color:"#aa6746"}},"User's Last Message"),icon:BDe,leadingAccessory:{type:"icon",icon:BDe},action:()=>{LDe(o,t.id)}}))};_N=S({name:"LastActive",description:"A plugin to jump to last active message from yourself or another user in a channel/server.",tags:["Chat","Utility"],authors:[F.Crxa],contextMenus:{"channel-context":NDe,"user-context":u1t,"thread-context":NDe}})});var FDe=h(()=>{});function qX(e){let[t,o]=T(),{resolutions:r,fpss:n}=mx.use(["resolutions","fpss"]),a=Ne(()=>{if(t!==void 0){if(e)return t${Lg}`:void 0;if(t${px}`}},[t]);function s(){if(!t)return;let l=e?r:n;l.push({label:`${t}${e?"p":"fps"}`,value:t}),l.sort((c,u)=>+!c.value-+!u.value||c.value-u.value)}return i("section",null,i(pe,{gap:"0.5em",flexWrap:"wrap"},(e?r:n).map(({label:l,value:c},u)=>i(Ht,{key:u,className:F8("settings-card")},i(pe,{gap:"0.5em",alignItems:"center",flexWrap:"wrap"},i(U,{size:"sm",weight:"semibold",className:F8("settings-preset-label")},l),i(de,{variant:"dangerSecondary",size:"iconOnly",disabled:l==="Source",onClick:()=>(e?r:n).splice(u,1)},i(hr,{"aria-label":"Delete Tag",width:20,height:20}))))),i(Ht,{className:F8("settings-card")},i(pe,{gap:"0.5em",alignItems:"center",className:F8("settings-flex-input")},i(Te,{type:"number",onBeforeInput:l=>{l.data!==null&&!/^\d*$/.test(l.data)&&l.preventDefault()},value:t,onChange:l=>o(l.length>0?parseInt(l):void 0),error:a}),i(de,{size:"iconOnly",disabled:!t||!!a,onClick:s},i(Yc,null))))))}var _De=h(()=>{"use strict";d();Tt();Qn();Lt();ot();Je();C();WX();UN()});var UDe,px,Lg,mx,UN=h(()=>{"use strict";d();j();R();_De();UDe=1e3,px=1,Lg=3,mx=M({maxFPS:{description:"Max FPS for the range slider",default:120,type:1,isValid:e=>e>=px},fpsComponent:{type:6,component:()=>qX(!1)},maxResolution:{description:"Max Resolution for the range slider",default:1080,type:1,isValid:e=>eqX(!0)},roundResolution:{description:"Round resolution to the nearest 10p",default:!1,type:3},resolutions:{type:7,description:"",hidden:!0,default:[{label:"480p",value:480},{label:"720p",value:720},{label:"1080p",value:1080},{label:"1440p",value:1440},{label:"Source",value:0}]},fpss:{type:7,description:"",hidden:!0,default:[{label:"15fps",value:15},{label:"30fps",value:30},{label:"60fps",value:60}]}})});function zDe(e,t,o){return(e-t)/(o-t)*100}function $De(e,t,o){return e*(o-t)/100+t}var GDe=h(()=>{"use strict";d()});var KX,HDe=h(()=>{"use strict";d();C();UN();GDe();KX=({onChange:e,initialValue:t,minMax:o,group:r,id:n,suffix:a})=>{let[s,l]=T(t),[c,u]=o,p=Ne(()=>ia.throttle(g=>e(g),UDe),[]);G(()=>()=>p.cancel(),[p]);let m=g=>{let x=Math.round($De(g,c,u));l(x),p(x)};return i(P.MenuControlItem,{group:`${r}`,id:`${n}-custom`,label:s+a,control:(g,x)=>i(P.MenuSliderControl,{...g,ref:x,onChange:m,renderValue:()=>s+a,value:zDe(s,c,u)||0,minValue:0,maxValue:100})})}});var F8,jDe,zN,WX=h(()=>{"use strict";d();FDe();O();we();R();C();HDe();UN();F8=K("vc-limitlessScreenshare-"),jDe=({onChange:e,initialValue:t,group:o,id:r,list:n})=>n.map(({label:a,value:s},l)=>i(P.MenuRadioItem,{key:l,group:`${o}`,id:`${r}-${s}`,action:()=>e(s),checked:t===s,label:a})),zN=S({name:"LimitlessScreenshare",description:"Adds a slider for screenshare resolution and fps.",authors:[F.KawaiianPizza],tags:["Utility","Voice"],settings:mx,patches:[{find:'"canStreamWithSettings"',replacement:{match:/(?=if\(\i===\i\.\i.PRESET_AUTO\))/,replace:"return !0;"}},{find:'"stream-option-notify"',replacement:[{match:/(?<=#{intl::IG5n0X::raw}\),children:).{0,150}checked:(\i)===.{0,80}action:\(\)=>(\(function.{0,150}resolution:\i\}\)\}\)).{0,5}\i\)\}\)/,replace:"[...$self.OptionsRange($2,$1,true)]"},{match:/(?<=#{intl::SkkeIt::raw}\),children:).{0,90}checked:(\i)===.{0,200}action:\(\)=>(\(function.{0,500}fps:\i\}\)\}\)).{0,5}\i\)\)/,replace:"[...$self.OptionsRange($2,$1,false)]"}]},{find:'"stream-settings-audio-enable"',replacement:[{match:/(?<=action:\(\)=>(\i)\((\i),\i,\i,(\i\.\i\.RESOLUTION)\)\},.{0,200}#{intl::SCREENSHARE_FRAME_RATE}\),children:)(\i)/,replace:"[...$self.SettingsRange($1,[$2,$3],false)]"},{match:/(?<=action:\(\)=>(\i)\((\i),\i,\i,(\i\.\i\.RESOLUTION)\)\},.{0,300}#{intl::STREAM_RESOLUTION}\),children:)(\i)/,replace:"[...$self.SettingsRange($1,[$2,$3],true)]"}]}],OptionsRange(e,t,o){let{maxFPS:r,maxResolution:n,roundResolution:a,resolutions:s,fpss:l}=mx.store,c=a?10:1;return[KX(o?{onChange:u=>e(u*c),initialValue:t/c,minMax:[Lg/c,n/c],group:"resolution",id:"stream-option-resolution",suffix:a?"0p":"p"}:{onChange:u=>e(u),initialValue:t,minMax:[px,r],group:"frame-rate",id:"stream-option-frame-rate",suffix:"fps"}),...jDe({onChange:u=>e(u),initialValue:t,group:o?"resolution":"frame-rate",id:o?"stream-option-resolution":"stream-option-frame-rate",list:o?s:l})]},SettingsRange(e,t,o){let{maxFPS:r,maxResolution:n,roundResolution:a,resolutions:s,fpss:l}=mx.store,c=a?10:1,[u,p]=t,m=()=>$o.getState().goLiveSource?.quality.resolution||720,g=()=>$o.getState().goLiveSource?.quality.frameRate||30;return[KX(o?{onChange:x=>e(u,x*c,g(),p),initialValue:m()/c,minMax:[Lg/c,n/c],group:"stream-settings-resolution",id:"stream-settings-resolution",suffix:a?"0p":"p"}:{onChange:x=>e(u,m(),x,p),initialValue:g(),minMax:[px,r],group:"stream-settings-fps",id:"stream-settings-fps",suffix:" FPS"}),...jDe(o?{onChange:x=>e(u,x,g(),p),initialValue:m(),group:"stream-settings-resolution",id:"stream-settings-resolution",list:s}:{onChange:x=>e(u,m(),x,p),initialValue:g(),group:"stream-settings-fps",id:"stream-settings-fps",list:l})]}})});function qDe(){let e=new Array,t=o=>{for(let r of Object.values(o))if(typeof r=="string"){let n=new Image;n.setAttribute("data-purpose","prefetch"),n.setAttribute("data-added-by","LoginWithQR"),n.src=r,document.head.appendChild(n),e.push(n)}else typeof r=="object"&&t(r)};t(fx),QX=()=>e.forEach(o=>o.remove())}var fx,QX,$N=h(()=>{"use strict";d();fx={cross:"https://github.com/Equicord/Equibored/raw/main/icons/loginwithqr/cross.png",deviceImage:{success:"https://github.com/Equicord/Equibored/raw/main/icons/loginwithqr/success.png",notFound:"https://github.com/Equicord/Equibored/raw/main/icons/loginwithqr/not-found.png",loading:"https://github.com/Equicord/Equibored/raw/main/icons/loginwithqr/loaded.png"}}});var WDe=xa((_8,ZX)=>{d();(function(t,o){typeof _8=="object"&&typeof ZX=="object"?ZX.exports=o():typeof define=="function"&&define.amd?define([],o):typeof _8=="object"?_8.jsQR=o():t.jsQR=o()})(typeof self<"u"?self:_8,function(){return(function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(r,n,a){o.o(r,n)||Object.defineProperty(r,n,{configurable:!1,enumerable:!0,get:a})},o.n=function(r){var n=r&&r.__esModule?function(){return r.default}:function(){return r};return o.d(n,"a",n),n},o.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},o.p="",o(o.s=3)})([(function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=(function(){function n(a,s){this.width=s,this.height=a.length/s,this.data=a}return n.createEmpty=function(a,s){return new n(new Uint8ClampedArray(a*s),a)},n.prototype.get=function(a,s){return a<0||a>=this.width||s<0||s>=this.height?!1:!!this.data[s*this.width+a]},n.prototype.set=function(a,s,l){this.data[s*this.width+a]=l?1:0},n.prototype.setRegion=function(a,s,l,c,u){for(var p=s;p=this.size&&(p=(p^this.primitive)&this.size-1);for(var m=0;m1&&l[0]===0){for(var u=1;uu.length&&(l=[u,c],c=l[0],u=l[1]);for(var p=new Uint8ClampedArray(u.length),m=u.length-c.length,g=0;gm?m:u}var l=(function(){function u(p,m){this.width=p,this.data=new Uint8ClampedArray(p*m)}return u.prototype.get=function(p,m){return this.data[m*this.width+p]},u.prototype.set=function(p,m,g){this.data[m*this.width+p]=g},u})();function c(u,p,m,g){if(u.length!==p*m*4)throw new Error("Malformed data passed to binarizer.");for(var x=new l(p,m),v=0;v0&&_>0)){var ae=(N.get(_,B-1)+2*N.get(_-1,B)+N.get(_-1,B-1))/4;$6&&(E.setRegion(I-11,0,3,6,!0),E.setRegion(0,I-11,6,3,!0)),E}function g(w,I,E){for(var N=p[E.dataMask],B=w.height,_=m(I),q=[],$=0,re=0,Z=!0,ee=B-1;ee>0;ee-=2){ee===6&&ee--;for(var ae=0;ae=0;B--)for(var _=I-9;_>=I-11;_--)N=c(w.get(_,B),N);for(var q=0,_=5;_>=0;_--)for(var B=I-9;B>=I-11;B--)q=c(w.get(_,B),q);for(var $=1/0,re,Z=0,ee=s.VERSIONS;Z=0;N--)N!==6&&(I=c(w.get(8,N),I));for(var B=w.height,_=0,N=B-1;N>=B-7;N--)_=c(w.get(8,N),_);for(var E=B-8;E1)for(var ae=N.ecBlocks[0].numBlocks,ge=N.ecBlocks[1].numBlocks,$=0;$0;)for(var ke=0,Ee=B;ke=3;){var I=x.readBits(10);if(I>=1e3)throw new Error("Invalid numeric value above 999");var E=Math.floor(I/100),N=Math.floor(I/10)%10,B=I%10;y.push(48+E,48+N,48+B),A+=E.toString()+N.toString()+B.toString(),w-=3}if(w===2){var I=x.readBits(7);if(I>=100)throw new Error("Invalid numeric value above 99");var E=Math.floor(I/10),N=I%10;y.push(48+E,48+N),A+=E.toString()+N.toString()}else if(w===1){var I=x.readBits(4);if(I>=10)throw new Error("Invalid numeric value above 9");y.push(48+I),A+=I.toString()}return{bytes:y,text:A}}var c=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function u(x,v){for(var y=[],A="",k=[9,11,13][v],w=x.readBits(k);w>=2;){var I=x.readBits(11),E=Math.floor(I/45),N=I%45;y.push(c[E].charCodeAt(0),c[N].charCodeAt(0)),A+=c[E]+c[N],w-=2}if(w===1){var E=x.readBits(6);y.push(c[E].charCodeAt(0)),A+=c[E]}return{bytes:y,text:A}}function p(x,v){for(var y=[],A="",k=[8,16,16][v],w=x.readBits(k),I=0;I>8,N&255),A+=String.fromCharCode(n.shiftJISTable[N])}return{bytes:y,text:A}}function g(x,v){for(var y,A,k,w,I=new r.BitStream(x),E=v<=9?0:v<=26?1:2,N={text:"",bytes:[],chunks:[],version:v};I.available()>=4;){var B=I.readBits(4);if(B===s.Terminator)return N;if(B===s.ECI)I.readBits(1)===0?N.chunks.push({type:a.ECI,assignmentNumber:I.readBits(7)}):I.readBits(1)===0?N.chunks.push({type:a.ECI,assignmentNumber:I.readBits(14)}):I.readBits(1)===0?N.chunks.push({type:a.ECI,assignmentNumber:I.readBits(21)}):N.chunks.push({type:a.ECI,assignmentNumber:-1});else if(B===s.Numeric){var _=l(I,E);N.text+=_.text,(y=N.bytes).push.apply(y,_.bytes),N.chunks.push({type:a.Numeric,text:_.text})}else if(B===s.Alphanumeric){var q=u(I,E);N.text+=q.text,(A=N.bytes).push.apply(A,q.bytes),N.chunks.push({type:a.Alphanumeric,text:q.text})}else if(B===s.Byte){var $=p(I,E);N.text+=$.text,(k=N.bytes).push.apply(k,$.bytes),N.chunks.push({type:a.Byte,bytes:$.bytes,text:$.text})}else if(B===s.Kanji){var re=m(I,E);N.text+=re.text,(w=N.bytes).push.apply(w,re.bytes),N.chunks.push({type:a.Kanji,bytes:re.bytes,text:re.text})}}if(I.available()===0||I.readBits(I.available())===0)return N}t.decode=g}),(function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=(function(){function n(a){this.byteOffset=0,this.bitOffset=0,this.bytes=a}return n.prototype.readBits=function(a){if(a<1||a>32||a>this.available())throw new Error("Cannot read "+a.toString()+" bits");var s=0;if(this.bitOffset>0){var l=8-this.bitOffset,c=a>8-c<>u,a-=c,this.bitOffset+=c,this.bitOffset===8&&(this.bitOffset=0,this.byteOffset++)}if(a>0){for(;a>=8;)s=s<<8|this.bytes[this.byteOffset]&255,this.byteOffset++,a-=8;if(a>0){var u=8-a,p=255>>u<>u,this.bitOffset+=a}}return s},n.prototype.available=function(){return 8*(this.bytes.length-this.byteOffset)-this.bitOffset},n})();t.BitStream=r}),(function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shiftJISTable={32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:165,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:8254,33088:12288,33089:12289,33090:12290,33091:65292,33092:65294,33093:12539,33094:65306,33095:65307,33096:65311,33097:65281,33098:12443,33099:12444,33100:180,33101:65344,33102:168,33103:65342,33104:65507,33105:65343,33106:12541,33107:12542,33108:12445,33109:12446,33110:12291,33111:20189,33112:12293,33113:12294,33114:12295,33115:12540,33116:8213,33117:8208,33118:65295,33119:92,33120:12316,33121:8214,33122:65372,33123:8230,33124:8229,33125:8216,33126:8217,33127:8220,33128:8221,33129:65288,33130:65289,33131:12308,33132:12309,33133:65339,33134:65341,33135:65371,33136:65373,33137:12296,33138:12297,33139:12298,33140:12299,33141:12300,33142:12301,33143:12302,33144:12303,33145:12304,33146:12305,33147:65291,33148:8722,33149:177,33150:215,33152:247,33153:65309,33154:8800,33155:65308,33156:65310,33157:8806,33158:8807,33159:8734,33160:8756,33161:9794,33162:9792,33163:176,33164:8242,33165:8243,33166:8451,33167:65509,33168:65284,33169:162,33170:163,33171:65285,33172:65283,33173:65286,33174:65290,33175:65312,33176:167,33177:9734,33178:9733,33179:9675,33180:9679,33181:9678,33182:9671,33183:9670,33184:9633,33185:9632,33186:9651,33187:9650,33188:9661,33189:9660,33190:8251,33191:12306,33192:8594,33193:8592,33194:8593,33195:8595,33196:12307,33208:8712,33209:8715,33210:8838,33211:8839,33212:8834,33213:8835,33214:8746,33215:8745,33224:8743,33225:8744,33226:172,33227:8658,33228:8660,33229:8704,33230:8707,33242:8736,33243:8869,33244:8978,33245:8706,33246:8711,33247:8801,33248:8786,33249:8810,33250:8811,33251:8730,33252:8765,33253:8733,33254:8757,33255:8747,33256:8748,33264:8491,33265:8240,33266:9839,33267:9837,33268:9834,33269:8224,33270:8225,33271:182,33276:9711,33359:65296,33360:65297,33361:65298,33362:65299,33363:65300,33364:65301,33365:65302,33366:65303,33367:65304,33368:65305,33376:65313,33377:65314,33378:65315,33379:65316,33380:65317,33381:65318,33382:65319,33383:65320,33384:65321,33385:65322,33386:65323,33387:65324,33388:65325,33389:65326,33390:65327,33391:65328,33392:65329,33393:65330,33394:65331,33395:65332,33396:65333,33397:65334,33398:65335,33399:65336,33400:65337,33401:65338,33409:65345,33410:65346,33411:65347,33412:65348,33413:65349,33414:65350,33415:65351,33416:65352,33417:65353,33418:65354,33419:65355,33420:65356,33421:65357,33422:65358,33423:65359,33424:65360,33425:65361,33426:65362,33427:65363,33428:65364,33429:65365,33430:65366,33431:65367,33432:65368,33433:65369,33434:65370,33439:12353,33440:12354,33441:12355,33442:12356,33443:12357,33444:12358,33445:12359,33446:12360,33447:12361,33448:12362,33449:12363,33450:12364,33451:12365,33452:12366,33453:12367,33454:12368,33455:12369,33456:12370,33457:12371,33458:12372,33459:12373,33460:12374,33461:12375,33462:12376,33463:12377,33464:12378,33465:12379,33466:12380,33467:12381,33468:12382,33469:12383,33470:12384,33471:12385,33472:12386,33473:12387,33474:12388,33475:12389,33476:12390,33477:12391,33478:12392,33479:12393,33480:12394,33481:12395,33482:12396,33483:12397,33484:12398,33485:12399,33486:12400,33487:12401,33488:12402,33489:12403,33490:12404,33491:12405,33492:12406,33493:12407,33494:12408,33495:12409,33496:12410,33497:12411,33498:12412,33499:12413,33500:12414,33501:12415,33502:12416,33503:12417,33504:12418,33505:12419,33506:12420,33507:12421,33508:12422,33509:12423,33510:12424,33511:12425,33512:12426,33513:12427,33514:12428,33515:12429,33516:12430,33517:12431,33518:12432,33519:12433,33520:12434,33521:12435,33600:12449,33601:12450,33602:12451,33603:12452,33604:12453,33605:12454,33606:12455,33607:12456,33608:12457,33609:12458,33610:12459,33611:12460,33612:12461,33613:12462,33614:12463,33615:12464,33616:12465,33617:12466,33618:12467,33619:12468,33620:12469,33621:12470,33622:12471,33623:12472,33624:12473,33625:12474,33626:12475,33627:12476,33628:12477,33629:12478,33630:12479,33631:12480,33632:12481,33633:12482,33634:12483,33635:12484,33636:12485,33637:12486,33638:12487,33639:12488,33640:12489,33641:12490,33642:12491,33643:12492,33644:12493,33645:12494,33646:12495,33647:12496,33648:12497,33649:12498,33650:12499,33651:12500,33652:12501,33653:12502,33654:12503,33655:12504,33656:12505,33657:12506,33658:12507,33659:12508,33660:12509,33661:12510,33662:12511,33664:12512,33665:12513,33666:12514,33667:12515,33668:12516,33669:12517,33670:12518,33671:12519,33672:12520,33673:12521,33674:12522,33675:12523,33676:12524,33677:12525,33678:12526,33679:12527,33680:12528,33681:12529,33682:12530,33683:12531,33684:12532,33685:12533,33686:12534,33695:913,33696:914,33697:915,33698:916,33699:917,33700:918,33701:919,33702:920,33703:921,33704:922,33705:923,33706:924,33707:925,33708:926,33709:927,33710:928,33711:929,33712:931,33713:932,33714:933,33715:934,33716:935,33717:936,33718:937,33727:945,33728:946,33729:947,33730:948,33731:949,33732:950,33733:951,33734:952,33735:953,33736:954,33737:955,33738:956,33739:957,33740:958,33741:959,33742:960,33743:961,33744:963,33745:964,33746:965,33747:966,33748:967,33749:968,33750:969,33856:1040,33857:1041,33858:1042,33859:1043,33860:1044,33861:1045,33862:1025,33863:1046,33864:1047,33865:1048,33866:1049,33867:1050,33868:1051,33869:1052,33870:1053,33871:1054,33872:1055,33873:1056,33874:1057,33875:1058,33876:1059,33877:1060,33878:1061,33879:1062,33880:1063,33881:1064,33882:1065,33883:1066,33884:1067,33885:1068,33886:1069,33887:1070,33888:1071,33904:1072,33905:1073,33906:1074,33907:1075,33908:1076,33909:1077,33910:1105,33911:1078,33912:1079,33913:1080,33914:1081,33915:1082,33916:1083,33917:1084,33918:1085,33920:1086,33921:1087,33922:1088,33923:1089,33924:1090,33925:1091,33926:1092,33927:1093,33928:1094,33929:1095,33930:1096,33931:1097,33932:1098,33933:1099,33934:1100,33935:1101,33936:1102,33937:1103,33951:9472,33952:9474,33953:9484,33954:9488,33955:9496,33956:9492,33957:9500,33958:9516,33959:9508,33960:9524,33961:9532,33962:9473,33963:9475,33964:9487,33965:9491,33966:9499,33967:9495,33968:9507,33969:9523,33970:9515,33971:9531,33972:9547,33973:9504,33974:9519,33975:9512,33976:9527,33977:9535,33978:9501,33979:9520,33980:9509,33981:9528,33982:9538,34975:20124,34976:21782,34977:23043,34978:38463,34979:21696,34980:24859,34981:25384,34982:23030,34983:36898,34984:33909,34985:33564,34986:31312,34987:24746,34988:25569,34989:28197,34990:26093,34991:33894,34992:33446,34993:39925,34994:26771,34995:22311,34996:26017,34997:25201,34998:23451,34999:22992,35e3:34427,35001:39156,35002:32098,35003:32190,35004:39822,35005:25110,35006:31903,35007:34999,35008:23433,35009:24245,35010:25353,35011:26263,35012:26696,35013:38343,35014:38797,35015:26447,35016:20197,35017:20234,35018:20301,35019:20381,35020:20553,35021:22258,35022:22839,35023:22996,35024:23041,35025:23561,35026:24799,35027:24847,35028:24944,35029:26131,35030:26885,35031:28858,35032:30031,35033:30064,35034:31227,35035:32173,35036:32239,35037:32963,35038:33806,35039:34915,35040:35586,35041:36949,35042:36986,35043:21307,35044:20117,35045:20133,35046:22495,35047:32946,35048:37057,35049:30959,35050:19968,35051:22769,35052:28322,35053:36920,35054:31282,35055:33576,35056:33419,35057:39983,35058:20801,35059:21360,35060:21693,35061:21729,35062:22240,35063:23035,35064:24341,35065:39154,35066:28139,35067:32996,35068:34093,35136:38498,35137:38512,35138:38560,35139:38907,35140:21515,35141:21491,35142:23431,35143:28879,35144:32701,35145:36802,35146:38632,35147:21359,35148:40284,35149:31418,35150:19985,35151:30867,35152:33276,35153:28198,35154:22040,35155:21764,35156:27421,35157:34074,35158:39995,35159:23013,35160:21417,35161:28006,35162:29916,35163:38287,35164:22082,35165:20113,35166:36939,35167:38642,35168:33615,35169:39180,35170:21473,35171:21942,35172:23344,35173:24433,35174:26144,35175:26355,35176:26628,35177:27704,35178:27891,35179:27945,35180:29787,35181:30408,35182:31310,35183:38964,35184:33521,35185:34907,35186:35424,35187:37613,35188:28082,35189:30123,35190:30410,35191:39365,35192:24742,35193:35585,35194:36234,35195:38322,35196:27022,35197:21421,35198:20870,35200:22290,35201:22576,35202:22852,35203:23476,35204:24310,35205:24616,35206:25513,35207:25588,35208:27839,35209:28436,35210:28814,35211:28948,35212:29017,35213:29141,35214:29503,35215:32257,35216:33398,35217:33489,35218:34199,35219:36960,35220:37467,35221:40219,35222:22633,35223:26044,35224:27738,35225:29989,35226:20985,35227:22830,35228:22885,35229:24448,35230:24540,35231:25276,35232:26106,35233:27178,35234:27431,35235:27572,35236:29579,35237:32705,35238:35158,35239:40236,35240:40206,35241:40644,35242:23713,35243:27798,35244:33659,35245:20740,35246:23627,35247:25014,35248:33222,35249:26742,35250:29281,35251:20057,35252:20474,35253:21368,35254:24681,35255:28201,35256:31311,35257:38899,35258:19979,35259:21270,35260:20206,35261:20309,35262:20285,35263:20385,35264:20339,35265:21152,35266:21487,35267:22025,35268:22799,35269:23233,35270:23478,35271:23521,35272:31185,35273:26247,35274:26524,35275:26550,35276:27468,35277:27827,35278:28779,35279:29634,35280:31117,35281:31166,35282:31292,35283:31623,35284:33457,35285:33499,35286:33540,35287:33655,35288:33775,35289:33747,35290:34662,35291:35506,35292:22057,35293:36008,35294:36838,35295:36942,35296:38686,35297:34442,35298:20420,35299:23784,35300:25105,35301:29273,35302:30011,35303:33253,35304:33469,35305:34558,35306:36032,35307:38597,35308:39187,35309:39381,35310:20171,35311:20250,35312:35299,35313:22238,35314:22602,35315:22730,35316:24315,35317:24555,35318:24618,35319:24724,35320:24674,35321:25040,35322:25106,35323:25296,35324:25913,35392:39745,35393:26214,35394:26800,35395:28023,35396:28784,35397:30028,35398:30342,35399:32117,35400:33445,35401:34809,35402:38283,35403:38542,35404:35997,35405:20977,35406:21182,35407:22806,35408:21683,35409:23475,35410:23830,35411:24936,35412:27010,35413:28079,35414:30861,35415:33995,35416:34903,35417:35442,35418:37799,35419:39608,35420:28012,35421:39336,35422:34521,35423:22435,35424:26623,35425:34510,35426:37390,35427:21123,35428:22151,35429:21508,35430:24275,35431:25313,35432:25785,35433:26684,35434:26680,35435:27579,35436:29554,35437:30906,35438:31339,35439:35226,35440:35282,35441:36203,35442:36611,35443:37101,35444:38307,35445:38548,35446:38761,35447:23398,35448:23731,35449:27005,35450:38989,35451:38990,35452:25499,35453:31520,35454:27179,35456:27263,35457:26806,35458:39949,35459:28511,35460:21106,35461:21917,35462:24688,35463:25324,35464:27963,35465:28167,35466:28369,35467:33883,35468:35088,35469:36676,35470:19988,35471:39993,35472:21494,35473:26907,35474:27194,35475:38788,35476:26666,35477:20828,35478:31427,35479:33970,35480:37340,35481:37772,35482:22107,35483:40232,35484:26658,35485:33541,35486:33841,35487:31909,35488:21e3,35489:33477,35490:29926,35491:20094,35492:20355,35493:20896,35494:23506,35495:21002,35496:21208,35497:21223,35498:24059,35499:21914,35500:22570,35501:23014,35502:23436,35503:23448,35504:23515,35505:24178,35506:24185,35507:24739,35508:24863,35509:24931,35510:25022,35511:25563,35512:25954,35513:26577,35514:26707,35515:26874,35516:27454,35517:27475,35518:27735,35519:28450,35520:28567,35521:28485,35522:29872,35523:29976,35524:30435,35525:30475,35526:31487,35527:31649,35528:31777,35529:32233,35530:32566,35531:32752,35532:32925,35533:33382,35534:33694,35535:35251,35536:35532,35537:36011,35538:36996,35539:37969,35540:38291,35541:38289,35542:38306,35543:38501,35544:38867,35545:39208,35546:33304,35547:20024,35548:21547,35549:23736,35550:24012,35551:29609,35552:30284,35553:30524,35554:23721,35555:32747,35556:36107,35557:38593,35558:38929,35559:38996,35560:39e3,35561:20225,35562:20238,35563:21361,35564:21916,35565:22120,35566:22522,35567:22855,35568:23305,35569:23492,35570:23696,35571:24076,35572:24190,35573:24524,35574:25582,35575:26426,35576:26071,35577:26082,35578:26399,35579:26827,35580:26820,35648:27231,35649:24112,35650:27589,35651:27671,35652:27773,35653:30079,35654:31048,35655:23395,35656:31232,35657:32e3,35658:24509,35659:35215,35660:35352,35661:36020,35662:36215,35663:36556,35664:36637,35665:39138,35666:39438,35667:39740,35668:20096,35669:20605,35670:20736,35671:22931,35672:23452,35673:25135,35674:25216,35675:25836,35676:27450,35677:29344,35678:30097,35679:31047,35680:32681,35681:34811,35682:35516,35683:35696,35684:25516,35685:33738,35686:38816,35687:21513,35688:21507,35689:21931,35690:26708,35691:27224,35692:35440,35693:30759,35694:26485,35695:40653,35696:21364,35697:23458,35698:33050,35699:34384,35700:36870,35701:19992,35702:20037,35703:20167,35704:20241,35705:21450,35706:21560,35707:23470,35708:24339,35709:24613,35710:25937,35712:26429,35713:27714,35714:27762,35715:27875,35716:28792,35717:29699,35718:31350,35719:31406,35720:31496,35721:32026,35722:31998,35723:32102,35724:26087,35725:29275,35726:21435,35727:23621,35728:24040,35729:25298,35730:25312,35731:25369,35732:28192,35733:34394,35734:35377,35735:36317,35736:37624,35737:28417,35738:31142,35739:39770,35740:20136,35741:20139,35742:20140,35743:20379,35744:20384,35745:20689,35746:20807,35747:31478,35748:20849,35749:20982,35750:21332,35751:21281,35752:21375,35753:21483,35754:21932,35755:22659,35756:23777,35757:24375,35758:24394,35759:24623,35760:24656,35761:24685,35762:25375,35763:25945,35764:27211,35765:27841,35766:29378,35767:29421,35768:30703,35769:33016,35770:33029,35771:33288,35772:34126,35773:37111,35774:37857,35775:38911,35776:39255,35777:39514,35778:20208,35779:20957,35780:23597,35781:26241,35782:26989,35783:23616,35784:26354,35785:26997,35786:29577,35787:26704,35788:31873,35789:20677,35790:21220,35791:22343,35792:24062,35793:37670,35794:26020,35795:27427,35796:27453,35797:29748,35798:31105,35799:31165,35800:31563,35801:32202,35802:33465,35803:33740,35804:34943,35805:35167,35806:35641,35807:36817,35808:37329,35809:21535,35810:37504,35811:20061,35812:20534,35813:21477,35814:21306,35815:29399,35816:29590,35817:30697,35818:33510,35819:36527,35820:39366,35821:39368,35822:39378,35823:20855,35824:24858,35825:34398,35826:21936,35827:31354,35828:20598,35829:23507,35830:36935,35831:38533,35832:20018,35833:27355,35834:37351,35835:23633,35836:23624,35904:25496,35905:31391,35906:27795,35907:38772,35908:36705,35909:31402,35910:29066,35911:38536,35912:31874,35913:26647,35914:32368,35915:26705,35916:37740,35917:21234,35918:21531,35919:34219,35920:35347,35921:32676,35922:36557,35923:37089,35924:21350,35925:34952,35926:31041,35927:20418,35928:20670,35929:21009,35930:20804,35931:21843,35932:22317,35933:29674,35934:22411,35935:22865,35936:24418,35937:24452,35938:24693,35939:24950,35940:24935,35941:25001,35942:25522,35943:25658,35944:25964,35945:26223,35946:26690,35947:28179,35948:30054,35949:31293,35950:31995,35951:32076,35952:32153,35953:32331,35954:32619,35955:33550,35956:33610,35957:34509,35958:35336,35959:35427,35960:35686,35961:36605,35962:38938,35963:40335,35964:33464,35965:36814,35966:39912,35968:21127,35969:25119,35970:25731,35971:28608,35972:38553,35973:26689,35974:20625,35975:27424,35976:27770,35977:28500,35978:31348,35979:32080,35980:34880,35981:35363,35982:26376,35983:20214,35984:20537,35985:20518,35986:20581,35987:20860,35988:21048,35989:21091,35990:21927,35991:22287,35992:22533,35993:23244,35994:24314,35995:25010,35996:25080,35997:25331,35998:25458,35999:26908,36e3:27177,36001:29309,36002:29356,36003:29486,36004:30740,36005:30831,36006:32121,36007:30476,36008:32937,36009:35211,36010:35609,36011:36066,36012:36562,36013:36963,36014:37749,36015:38522,36016:38997,36017:39443,36018:40568,36019:20803,36020:21407,36021:21427,36022:24187,36023:24358,36024:28187,36025:28304,36026:29572,36027:29694,36028:32067,36029:33335,36030:35328,36031:35578,36032:38480,36033:20046,36034:20491,36035:21476,36036:21628,36037:22266,36038:22993,36039:23396,36040:24049,36041:24235,36042:24359,36043:25144,36044:25925,36045:26543,36046:28246,36047:29392,36048:31946,36049:34996,36050:32929,36051:32993,36052:33776,36053:34382,36054:35463,36055:36328,36056:37431,36057:38599,36058:39015,36059:40723,36060:20116,36061:20114,36062:20237,36063:21320,36064:21577,36065:21566,36066:23087,36067:24460,36068:24481,36069:24735,36070:26791,36071:27278,36072:29786,36073:30849,36074:35486,36075:35492,36076:35703,36077:37264,36078:20062,36079:39881,36080:20132,36081:20348,36082:20399,36083:20505,36084:20502,36085:20809,36086:20844,36087:21151,36088:21177,36089:21246,36090:21402,36091:21475,36092:21521,36160:21518,36161:21897,36162:22353,36163:22434,36164:22909,36165:23380,36166:23389,36167:23439,36168:24037,36169:24039,36170:24055,36171:24184,36172:24195,36173:24218,36174:24247,36175:24344,36176:24658,36177:24908,36178:25239,36179:25304,36180:25511,36181:25915,36182:26114,36183:26179,36184:26356,36185:26477,36186:26657,36187:26775,36188:27083,36189:27743,36190:27946,36191:28009,36192:28207,36193:28317,36194:30002,36195:30343,36196:30828,36197:31295,36198:31968,36199:32005,36200:32024,36201:32094,36202:32177,36203:32789,36204:32771,36205:32943,36206:32945,36207:33108,36208:33167,36209:33322,36210:33618,36211:34892,36212:34913,36213:35611,36214:36002,36215:36092,36216:37066,36217:37237,36218:37489,36219:30783,36220:37628,36221:38308,36222:38477,36224:38917,36225:39321,36226:39640,36227:40251,36228:21083,36229:21163,36230:21495,36231:21512,36232:22741,36233:25335,36234:28640,36235:35946,36236:36703,36237:40633,36238:20811,36239:21051,36240:21578,36241:22269,36242:31296,36243:37239,36244:40288,36245:40658,36246:29508,36247:28425,36248:33136,36249:29969,36250:24573,36251:24794,36252:39592,36253:29403,36254:36796,36255:27492,36256:38915,36257:20170,36258:22256,36259:22372,36260:22718,36261:23130,36262:24680,36263:25031,36264:26127,36265:26118,36266:26681,36267:26801,36268:28151,36269:30165,36270:32058,36271:33390,36272:39746,36273:20123,36274:20304,36275:21449,36276:21766,36277:23919,36278:24038,36279:24046,36280:26619,36281:27801,36282:29811,36283:30722,36284:35408,36285:37782,36286:35039,36287:22352,36288:24231,36289:25387,36290:20661,36291:20652,36292:20877,36293:26368,36294:21705,36295:22622,36296:22971,36297:23472,36298:24425,36299:25165,36300:25505,36301:26685,36302:27507,36303:28168,36304:28797,36305:37319,36306:29312,36307:30741,36308:30758,36309:31085,36310:25998,36311:32048,36312:33756,36313:35009,36314:36617,36315:38555,36316:21092,36317:22312,36318:26448,36319:32618,36320:36001,36321:20916,36322:22338,36323:38442,36324:22586,36325:27018,36326:32948,36327:21682,36328:23822,36329:22524,36330:30869,36331:40442,36332:20316,36333:21066,36334:21643,36335:25662,36336:26152,36337:26388,36338:26613,36339:31364,36340:31574,36341:32034,36342:37679,36343:26716,36344:39853,36345:31545,36346:21273,36347:20874,36348:21047,36416:23519,36417:25334,36418:25774,36419:25830,36420:26413,36421:27578,36422:34217,36423:38609,36424:30352,36425:39894,36426:25420,36427:37638,36428:39851,36429:30399,36430:26194,36431:19977,36432:20632,36433:21442,36434:23665,36435:24808,36436:25746,36437:25955,36438:26719,36439:29158,36440:29642,36441:29987,36442:31639,36443:32386,36444:34453,36445:35715,36446:36059,36447:37240,36448:39184,36449:26028,36450:26283,36451:27531,36452:20181,36453:20180,36454:20282,36455:20351,36456:21050,36457:21496,36458:21490,36459:21987,36460:22235,36461:22763,36462:22987,36463:22985,36464:23039,36465:23376,36466:23629,36467:24066,36468:24107,36469:24535,36470:24605,36471:25351,36472:25903,36473:23388,36474:26031,36475:26045,36476:26088,36477:26525,36478:27490,36480:27515,36481:27663,36482:29509,36483:31049,36484:31169,36485:31992,36486:32025,36487:32043,36488:32930,36489:33026,36490:33267,36491:35222,36492:35422,36493:35433,36494:35430,36495:35468,36496:35566,36497:36039,36498:36060,36499:38604,36500:39164,36501:27503,36502:20107,36503:20284,36504:20365,36505:20816,36506:23383,36507:23546,36508:24904,36509:25345,36510:26178,36511:27425,36512:28363,36513:27835,36514:29246,36515:29885,36516:30164,36517:30913,36518:31034,36519:32780,36520:32819,36521:33258,36522:33940,36523:36766,36524:27728,36525:40575,36526:24335,36527:35672,36528:40235,36529:31482,36530:36600,36531:23437,36532:38635,36533:19971,36534:21489,36535:22519,36536:22833,36537:23241,36538:23460,36539:24713,36540:28287,36541:28422,36542:30142,36543:36074,36544:23455,36545:34048,36546:31712,36547:20594,36548:26612,36549:33437,36550:23649,36551:34122,36552:32286,36553:33294,36554:20889,36555:23556,36556:25448,36557:36198,36558:26012,36559:29038,36560:31038,36561:32023,36562:32773,36563:35613,36564:36554,36565:36974,36566:34503,36567:37034,36568:20511,36569:21242,36570:23610,36571:26451,36572:28796,36573:29237,36574:37196,36575:37320,36576:37675,36577:33509,36578:23490,36579:24369,36580:24825,36581:20027,36582:21462,36583:23432,36584:25163,36585:26417,36586:27530,36587:29417,36588:29664,36589:31278,36590:33131,36591:36259,36592:37202,36593:39318,36594:20754,36595:21463,36596:21610,36597:23551,36598:25480,36599:27193,36600:32172,36601:38656,36602:22234,36603:21454,36604:21608,36672:23447,36673:23601,36674:24030,36675:20462,36676:24833,36677:25342,36678:27954,36679:31168,36680:31179,36681:32066,36682:32333,36683:32722,36684:33261,36685:33311,36686:33936,36687:34886,36688:35186,36689:35728,36690:36468,36691:36655,36692:36913,36693:37195,36694:37228,36695:38598,36696:37276,36697:20160,36698:20303,36699:20805,36700:21313,36701:24467,36702:25102,36703:26580,36704:27713,36705:28171,36706:29539,36707:32294,36708:37325,36709:37507,36710:21460,36711:22809,36712:23487,36713:28113,36714:31069,36715:32302,36716:31899,36717:22654,36718:29087,36719:20986,36720:34899,36721:36848,36722:20426,36723:23803,36724:26149,36725:30636,36726:31459,36727:33308,36728:39423,36729:20934,36730:24490,36731:26092,36732:26991,36733:27529,36734:28147,36736:28310,36737:28516,36738:30462,36739:32020,36740:24033,36741:36981,36742:37255,36743:38918,36744:20966,36745:21021,36746:25152,36747:26257,36748:26329,36749:28186,36750:24246,36751:32210,36752:32626,36753:26360,36754:34223,36755:34295,36756:35576,36757:21161,36758:21465,36759:22899,36760:24207,36761:24464,36762:24661,36763:37604,36764:38500,36765:20663,36766:20767,36767:21213,36768:21280,36769:21319,36770:21484,36771:21736,36772:21830,36773:21809,36774:22039,36775:22888,36776:22974,36777:23100,36778:23477,36779:23558,36780:23567,36781:23569,36782:23578,36783:24196,36784:24202,36785:24288,36786:24432,36787:25215,36788:25220,36789:25307,36790:25484,36791:25463,36792:26119,36793:26124,36794:26157,36795:26230,36796:26494,36797:26786,36798:27167,36799:27189,36800:27836,36801:28040,36802:28169,36803:28248,36804:28988,36805:28966,36806:29031,36807:30151,36808:30465,36809:30813,36810:30977,36811:31077,36812:31216,36813:31456,36814:31505,36815:31911,36816:32057,36817:32918,36818:33750,36819:33931,36820:34121,36821:34909,36822:35059,36823:35359,36824:35388,36825:35412,36826:35443,36827:35937,36828:36062,36829:37284,36830:37478,36831:37758,36832:37912,36833:38556,36834:38808,36835:19978,36836:19976,36837:19998,36838:20055,36839:20887,36840:21104,36841:22478,36842:22580,36843:22732,36844:23330,36845:24120,36846:24773,36847:25854,36848:26465,36849:26454,36850:27972,36851:29366,36852:30067,36853:31331,36854:33976,36855:35698,36856:37304,36857:37664,36858:22065,36859:22516,36860:39166,36928:25325,36929:26893,36930:27542,36931:29165,36932:32340,36933:32887,36934:33394,36935:35302,36936:39135,36937:34645,36938:36785,36939:23611,36940:20280,36941:20449,36942:20405,36943:21767,36944:23072,36945:23517,36946:23529,36947:24515,36948:24910,36949:25391,36950:26032,36951:26187,36952:26862,36953:27035,36954:28024,36955:28145,36956:30003,36957:30137,36958:30495,36959:31070,36960:31206,36961:32051,36962:33251,36963:33455,36964:34218,36965:35242,36966:35386,36967:36523,36968:36763,36969:36914,36970:37341,36971:38663,36972:20154,36973:20161,36974:20995,36975:22645,36976:22764,36977:23563,36978:29978,36979:23613,36980:33102,36981:35338,36982:36805,36983:38499,36984:38765,36985:31525,36986:35535,36987:38920,36988:37218,36989:22259,36990:21416,36992:36887,36993:21561,36994:22402,36995:24101,36996:25512,36997:27700,36998:28810,36999:30561,37e3:31883,37001:32736,37002:34928,37003:36930,37004:37204,37005:37648,37006:37656,37007:38543,37008:29790,37009:39620,37010:23815,37011:23913,37012:25968,37013:26530,37014:36264,37015:38619,37016:25454,37017:26441,37018:26905,37019:33733,37020:38935,37021:38592,37022:35070,37023:28548,37024:25722,37025:23544,37026:19990,37027:28716,37028:30045,37029:26159,37030:20932,37031:21046,37032:21218,37033:22995,37034:24449,37035:24615,37036:25104,37037:25919,37038:25972,37039:26143,37040:26228,37041:26866,37042:26646,37043:27491,37044:28165,37045:29298,37046:29983,37047:30427,37048:31934,37049:32854,37050:22768,37051:35069,37052:35199,37053:35488,37054:35475,37055:35531,37056:36893,37057:37266,37058:38738,37059:38745,37060:25993,37061:31246,37062:33030,37063:38587,37064:24109,37065:24796,37066:25114,37067:26021,37068:26132,37069:26512,37070:30707,37071:31309,37072:31821,37073:32318,37074:33034,37075:36012,37076:36196,37077:36321,37078:36447,37079:30889,37080:20999,37081:25305,37082:25509,37083:25666,37084:25240,37085:35373,37086:31363,37087:31680,37088:35500,37089:38634,37090:32118,37091:33292,37092:34633,37093:20185,37094:20808,37095:21315,37096:21344,37097:23459,37098:23554,37099:23574,37100:24029,37101:25126,37102:25159,37103:25776,37104:26643,37105:26676,37106:27849,37107:27973,37108:27927,37109:26579,37110:28508,37111:29006,37112:29053,37113:26059,37114:31359,37115:31661,37116:32218,37184:32330,37185:32680,37186:33146,37187:33307,37188:33337,37189:34214,37190:35438,37191:36046,37192:36341,37193:36984,37194:36983,37195:37549,37196:37521,37197:38275,37198:39854,37199:21069,37200:21892,37201:28472,37202:28982,37203:20840,37204:31109,37205:32341,37206:33203,37207:31950,37208:22092,37209:22609,37210:23720,37211:25514,37212:26366,37213:26365,37214:26970,37215:29401,37216:30095,37217:30094,37218:30990,37219:31062,37220:31199,37221:31895,37222:32032,37223:32068,37224:34311,37225:35380,37226:38459,37227:36961,37228:40736,37229:20711,37230:21109,37231:21452,37232:21474,37233:20489,37234:21930,37235:22766,37236:22863,37237:29245,37238:23435,37239:23652,37240:21277,37241:24803,37242:24819,37243:25436,37244:25475,37245:25407,37246:25531,37248:25805,37249:26089,37250:26361,37251:24035,37252:27085,37253:27133,37254:28437,37255:29157,37256:20105,37257:30185,37258:30456,37259:31379,37260:31967,37261:32207,37262:32156,37263:32865,37264:33609,37265:33624,37266:33900,37267:33980,37268:34299,37269:35013,37270:36208,37271:36865,37272:36973,37273:37783,37274:38684,37275:39442,37276:20687,37277:22679,37278:24974,37279:33235,37280:34101,37281:36104,37282:36896,37283:20419,37284:20596,37285:21063,37286:21363,37287:24687,37288:25417,37289:26463,37290:28204,37291:36275,37292:36895,37293:20439,37294:23646,37295:36042,37296:26063,37297:32154,37298:21330,37299:34966,37300:20854,37301:25539,37302:23384,37303:23403,37304:23562,37305:25613,37306:26449,37307:36956,37308:20182,37309:22810,37310:22826,37311:27760,37312:35409,37313:21822,37314:22549,37315:22949,37316:24816,37317:25171,37318:26561,37319:33333,37320:26965,37321:38464,37322:39364,37323:39464,37324:20307,37325:22534,37326:23550,37327:32784,37328:23729,37329:24111,37330:24453,37331:24608,37332:24907,37333:25140,37334:26367,37335:27888,37336:28382,37337:32974,37338:33151,37339:33492,37340:34955,37341:36024,37342:36864,37343:36910,37344:38538,37345:40667,37346:39899,37347:20195,37348:21488,37349:22823,37350:31532,37351:37261,37352:38988,37353:40441,37354:28381,37355:28711,37356:21331,37357:21828,37358:23429,37359:25176,37360:25246,37361:25299,37362:27810,37363:28655,37364:29730,37365:35351,37366:37944,37367:28609,37368:35582,37369:33592,37370:20967,37371:34552,37372:21482,37440:21481,37441:20294,37442:36948,37443:36784,37444:22890,37445:33073,37446:24061,37447:31466,37448:36799,37449:26842,37450:35895,37451:29432,37452:40008,37453:27197,37454:35504,37455:20025,37456:21336,37457:22022,37458:22374,37459:25285,37460:25506,37461:26086,37462:27470,37463:28129,37464:28251,37465:28845,37466:30701,37467:31471,37468:31658,37469:32187,37470:32829,37471:32966,37472:34507,37473:35477,37474:37723,37475:22243,37476:22727,37477:24382,37478:26029,37479:26262,37480:27264,37481:27573,37482:30007,37483:35527,37484:20516,37485:30693,37486:22320,37487:24347,37488:24677,37489:26234,37490:27744,37491:30196,37492:31258,37493:32622,37494:33268,37495:34584,37496:36933,37497:39347,37498:31689,37499:30044,37500:31481,37501:31569,37502:33988,37504:36880,37505:31209,37506:31378,37507:33590,37508:23265,37509:30528,37510:20013,37511:20210,37512:23449,37513:24544,37514:25277,37515:26172,37516:26609,37517:27880,37518:34411,37519:34935,37520:35387,37521:37198,37522:37619,37523:39376,37524:27159,37525:28710,37526:29482,37527:33511,37528:33879,37529:36015,37530:19969,37531:20806,37532:20939,37533:21899,37534:23541,37535:24086,37536:24115,37537:24193,37538:24340,37539:24373,37540:24427,37541:24500,37542:25074,37543:25361,37544:26274,37545:26397,37546:28526,37547:29266,37548:30010,37549:30522,37550:32884,37551:33081,37552:33144,37553:34678,37554:35519,37555:35548,37556:36229,37557:36339,37558:37530,37559:38263,37560:38914,37561:40165,37562:21189,37563:25431,37564:30452,37565:26389,37566:27784,37567:29645,37568:36035,37569:37806,37570:38515,37571:27941,37572:22684,37573:26894,37574:27084,37575:36861,37576:37786,37577:30171,37578:36890,37579:22618,37580:26626,37581:25524,37582:27131,37583:20291,37584:28460,37585:26584,37586:36795,37587:34086,37588:32180,37589:37716,37590:26943,37591:28528,37592:22378,37593:22775,37594:23340,37595:32044,37596:29226,37597:21514,37598:37347,37599:40372,37600:20141,37601:20302,37602:20572,37603:20597,37604:21059,37605:35998,37606:21576,37607:22564,37608:23450,37609:24093,37610:24213,37611:24237,37612:24311,37613:24351,37614:24716,37615:25269,37616:25402,37617:25552,37618:26799,37619:27712,37620:30855,37621:31118,37622:31243,37623:32224,37624:33351,37625:35330,37626:35558,37627:36420,37628:36883,37696:37048,37697:37165,37698:37336,37699:40718,37700:27877,37701:25688,37702:25826,37703:25973,37704:28404,37705:30340,37706:31515,37707:36969,37708:37841,37709:28346,37710:21746,37711:24505,37712:25764,37713:36685,37714:36845,37715:37444,37716:20856,37717:22635,37718:22825,37719:23637,37720:24215,37721:28155,37722:32399,37723:29980,37724:36028,37725:36578,37726:39003,37727:28857,37728:20253,37729:27583,37730:28593,37731:3e4,37732:38651,37733:20814,37734:21520,37735:22581,37736:22615,37737:22956,37738:23648,37739:24466,37740:26007,37741:26460,37742:28193,37743:30331,37744:33759,37745:36077,37746:36884,37747:37117,37748:37709,37749:30757,37750:30778,37751:21162,37752:24230,37753:22303,37754:22900,37755:24594,37756:20498,37757:20826,37758:20908,37760:20941,37761:20992,37762:21776,37763:22612,37764:22616,37765:22871,37766:23445,37767:23798,37768:23947,37769:24764,37770:25237,37771:25645,37772:26481,37773:26691,37774:26812,37775:26847,37776:30423,37777:28120,37778:28271,37779:28059,37780:28783,37781:29128,37782:24403,37783:30168,37784:31095,37785:31561,37786:31572,37787:31570,37788:31958,37789:32113,37790:21040,37791:33891,37792:34153,37793:34276,37794:35342,37795:35588,37796:35910,37797:36367,37798:36867,37799:36879,37800:37913,37801:38518,37802:38957,37803:39472,37804:38360,37805:20685,37806:21205,37807:21516,37808:22530,37809:23566,37810:24999,37811:25758,37812:27934,37813:30643,37814:31461,37815:33012,37816:33796,37817:36947,37818:37509,37819:23776,37820:40199,37821:21311,37822:24471,37823:24499,37824:28060,37825:29305,37826:30563,37827:31167,37828:31716,37829:27602,37830:29420,37831:35501,37832:26627,37833:27233,37834:20984,37835:31361,37836:26932,37837:23626,37838:40182,37839:33515,37840:23493,37841:37193,37842:28702,37843:22136,37844:23663,37845:24775,37846:25958,37847:27788,37848:35930,37849:36929,37850:38931,37851:21585,37852:26311,37853:37389,37854:22856,37855:37027,37856:20869,37857:20045,37858:20970,37859:34201,37860:35598,37861:28760,37862:25466,37863:37707,37864:26978,37865:39348,37866:32260,37867:30071,37868:21335,37869:26976,37870:36575,37871:38627,37872:27741,37873:20108,37874:23612,37875:24336,37876:36841,37877:21250,37878:36049,37879:32905,37880:34425,37881:24319,37882:26085,37883:20083,37884:20837,37952:22914,37953:23615,37954:38894,37955:20219,37956:22922,37957:24525,37958:35469,37959:28641,37960:31152,37961:31074,37962:23527,37963:33905,37964:29483,37965:29105,37966:24180,37967:24565,37968:25467,37969:25754,37970:29123,37971:31896,37972:20035,37973:24316,37974:20043,37975:22492,37976:22178,37977:24745,37978:28611,37979:32013,37980:33021,37981:33075,37982:33215,37983:36786,37984:35223,37985:34468,37986:24052,37987:25226,37988:25773,37989:35207,37990:26487,37991:27874,37992:27966,37993:29750,37994:30772,37995:23110,37996:32629,37997:33453,37998:39340,37999:20467,38e3:24259,38001:25309,38002:25490,38003:25943,38004:26479,38005:30403,38006:29260,38007:32972,38008:32954,38009:36649,38010:37197,38011:20493,38012:22521,38013:23186,38014:26757,38016:26995,38017:29028,38018:29437,38019:36023,38020:22770,38021:36064,38022:38506,38023:36889,38024:34687,38025:31204,38026:30695,38027:33833,38028:20271,38029:21093,38030:21338,38031:25293,38032:26575,38033:27850,38034:30333,38035:31636,38036:31893,38037:33334,38038:34180,38039:36843,38040:26333,38041:28448,38042:29190,38043:32283,38044:33707,38045:39361,38046:40614,38047:20989,38048:31665,38049:30834,38050:31672,38051:32903,38052:31560,38053:27368,38054:24161,38055:32908,38056:30033,38057:30048,38058:20843,38059:37474,38060:28300,38061:30330,38062:37271,38063:39658,38064:20240,38065:32624,38066:25244,38067:31567,38068:38309,38069:40169,38070:22138,38071:22617,38072:34532,38073:38588,38074:20276,38075:21028,38076:21322,38077:21453,38078:21467,38079:24070,38080:25644,38081:26001,38082:26495,38083:27710,38084:27726,38085:29256,38086:29359,38087:29677,38088:30036,38089:32321,38090:33324,38091:34281,38092:36009,38093:31684,38094:37318,38095:29033,38096:38930,38097:39151,38098:25405,38099:26217,38100:30058,38101:30436,38102:30928,38103:34115,38104:34542,38105:21290,38106:21329,38107:21542,38108:22915,38109:24199,38110:24444,38111:24754,38112:25161,38113:25209,38114:25259,38115:26e3,38116:27604,38117:27852,38118:30130,38119:30382,38120:30865,38121:31192,38122:32203,38123:32631,38124:32933,38125:34987,38126:35513,38127:36027,38128:36991,38129:38750,38130:39131,38131:27147,38132:31800,38133:20633,38134:23614,38135:24494,38136:26503,38137:27608,38138:29749,38139:30473,38140:32654,38208:40763,38209:26570,38210:31255,38211:21305,38212:30091,38213:39661,38214:24422,38215:33181,38216:33777,38217:32920,38218:24380,38219:24517,38220:30050,38221:31558,38222:36924,38223:26727,38224:23019,38225:23195,38226:32016,38227:30334,38228:35628,38229:20469,38230:24426,38231:27161,38232:27703,38233:28418,38234:29922,38235:31080,38236:34920,38237:35413,38238:35961,38239:24287,38240:25551,38241:30149,38242:31186,38243:33495,38244:37672,38245:37618,38246:33948,38247:34541,38248:39981,38249:21697,38250:24428,38251:25996,38252:27996,38253:28693,38254:36007,38255:36051,38256:38971,38257:25935,38258:29942,38259:19981,38260:20184,38261:22496,38262:22827,38263:23142,38264:23500,38265:20904,38266:24067,38267:24220,38268:24598,38269:25206,38270:25975,38272:26023,38273:26222,38274:28014,38275:29238,38276:31526,38277:33104,38278:33178,38279:33433,38280:35676,38281:36e3,38282:36070,38283:36212,38284:38428,38285:38468,38286:20398,38287:25771,38288:27494,38289:33310,38290:33889,38291:34154,38292:37096,38293:23553,38294:26963,38295:39080,38296:33914,38297:34135,38298:20239,38299:21103,38300:24489,38301:24133,38302:26381,38303:31119,38304:33145,38305:35079,38306:35206,38307:28149,38308:24343,38309:25173,38310:27832,38311:20175,38312:29289,38313:39826,38314:20998,38315:21563,38316:22132,38317:22707,38318:24996,38319:25198,38320:28954,38321:22894,38322:31881,38323:31966,38324:32027,38325:38640,38326:25991,38327:32862,38328:19993,38329:20341,38330:20853,38331:22592,38332:24163,38333:24179,38334:24330,38335:26564,38336:20006,38337:34109,38338:38281,38339:38491,38340:31859,38341:38913,38342:20731,38343:22721,38344:30294,38345:30887,38346:21029,38347:30629,38348:34065,38349:31622,38350:20559,38351:22793,38352:29255,38353:31687,38354:32232,38355:36794,38356:36820,38357:36941,38358:20415,38359:21193,38360:23081,38361:24321,38362:38829,38363:20445,38364:33303,38365:37610,38366:22275,38367:25429,38368:27497,38369:29995,38370:35036,38371:36628,38372:31298,38373:21215,38374:22675,38375:24917,38376:25098,38377:26286,38378:27597,38379:31807,38380:33769,38381:20515,38382:20472,38383:21253,38384:21574,38385:22577,38386:22857,38387:23453,38388:23792,38389:23791,38390:23849,38391:24214,38392:25265,38393:25447,38394:25918,38395:26041,38396:26379,38464:27861,38465:27873,38466:28921,38467:30770,38468:32299,38469:32990,38470:33459,38471:33804,38472:34028,38473:34562,38474:35090,38475:35370,38476:35914,38477:37030,38478:37586,38479:39165,38480:40179,38481:40300,38482:20047,38483:20129,38484:20621,38485:21078,38486:22346,38487:22952,38488:24125,38489:24536,38490:24537,38491:25151,38492:26292,38493:26395,38494:26576,38495:26834,38496:20882,38497:32033,38498:32938,38499:33192,38500:35584,38501:35980,38502:36031,38503:37502,38504:38450,38505:21536,38506:38956,38507:21271,38508:20693,38509:21340,38510:22696,38511:25778,38512:26420,38513:29287,38514:30566,38515:31302,38516:37350,38517:21187,38518:27809,38519:27526,38520:22528,38521:24140,38522:22868,38523:26412,38524:32763,38525:20961,38526:30406,38528:25705,38529:30952,38530:39764,38531:40635,38532:22475,38533:22969,38534:26151,38535:26522,38536:27598,38537:21737,38538:27097,38539:24149,38540:33180,38541:26517,38542:39850,38543:26622,38544:40018,38545:26717,38546:20134,38547:20451,38548:21448,38549:25273,38550:26411,38551:27819,38552:36804,38553:20397,38554:32365,38555:40639,38556:19975,38557:24930,38558:28288,38559:28459,38560:34067,38561:21619,38562:26410,38563:39749,38564:24051,38565:31637,38566:23724,38567:23494,38568:34588,38569:28234,38570:34001,38571:31252,38572:33032,38573:22937,38574:31885,38575:27665,38576:30496,38577:21209,38578:22818,38579:28961,38580:29279,38581:30683,38582:38695,38583:40289,38584:26891,38585:23167,38586:23064,38587:20901,38588:21517,38589:21629,38590:26126,38591:30431,38592:36855,38593:37528,38594:40180,38595:23018,38596:29277,38597:28357,38598:20813,38599:26825,38600:32191,38601:32236,38602:38754,38603:40634,38604:25720,38605:27169,38606:33538,38607:22916,38608:23391,38609:27611,38610:29467,38611:30450,38612:32178,38613:32791,38614:33945,38615:20786,38616:26408,38617:40665,38618:30446,38619:26466,38620:21247,38621:39173,38622:23588,38623:25147,38624:31870,38625:36016,38626:21839,38627:24758,38628:32011,38629:38272,38630:21249,38631:20063,38632:20918,38633:22812,38634:29242,38635:32822,38636:37326,38637:24357,38638:30690,38639:21380,38640:24441,38641:32004,38642:34220,38643:35379,38644:36493,38645:38742,38646:26611,38647:34222,38648:37971,38649:24841,38650:24840,38651:27833,38652:30290,38720:35565,38721:36664,38722:21807,38723:20305,38724:20778,38725:21191,38726:21451,38727:23461,38728:24189,38729:24736,38730:24962,38731:25558,38732:26377,38733:26586,38734:28263,38735:28044,38736:29494,38737:29495,38738:30001,38739:31056,38740:35029,38741:35480,38742:36938,38743:37009,38744:37109,38745:38596,38746:34701,38747:22805,38748:20104,38749:20313,38750:19982,38751:35465,38752:36671,38753:38928,38754:20653,38755:24188,38756:22934,38757:23481,38758:24248,38759:25562,38760:25594,38761:25793,38762:26332,38763:26954,38764:27096,38765:27915,38766:28342,38767:29076,38768:29992,38769:31407,38770:32650,38771:32768,38772:33865,38773:33993,38774:35201,38775:35617,38776:36362,38777:36965,38778:38525,38779:39178,38780:24958,38781:25233,38782:27442,38784:27779,38785:28020,38786:32716,38787:32764,38788:28096,38789:32645,38790:34746,38791:35064,38792:26469,38793:33713,38794:38972,38795:38647,38796:27931,38797:32097,38798:33853,38799:37226,38800:20081,38801:21365,38802:23888,38803:27396,38804:28651,38805:34253,38806:34349,38807:35239,38808:21033,38809:21519,38810:23653,38811:26446,38812:26792,38813:29702,38814:29827,38815:30178,38816:35023,38817:35041,38818:37324,38819:38626,38820:38520,38821:24459,38822:29575,38823:31435,38824:33870,38825:25504,38826:30053,38827:21129,38828:27969,38829:28316,38830:29705,38831:30041,38832:30827,38833:31890,38834:38534,38835:31452,38836:40845,38837:20406,38838:24942,38839:26053,38840:34396,38841:20102,38842:20142,38843:20698,38844:20001,38845:20940,38846:23534,38847:26009,38848:26753,38849:28092,38850:29471,38851:30274,38852:30637,38853:31260,38854:31975,38855:33391,38856:35538,38857:36988,38858:37327,38859:38517,38860:38936,38861:21147,38862:32209,38863:20523,38864:21400,38865:26519,38866:28107,38867:29136,38868:29747,38869:33256,38870:36650,38871:38563,38872:40023,38873:40607,38874:29792,38875:22593,38876:28057,38877:32047,38878:39006,38879:20196,38880:20278,38881:20363,38882:20919,38883:21169,38884:23994,38885:24604,38886:29618,38887:31036,38888:33491,38889:37428,38890:38583,38891:38646,38892:38666,38893:40599,38894:40802,38895:26278,38896:27508,38897:21015,38898:21155,38899:28872,38900:35010,38901:24265,38902:24651,38903:24976,38904:28451,38905:29001,38906:31806,38907:32244,38908:32879,38976:34030,38977:36899,38978:37676,38979:21570,38980:39791,38981:27347,38982:28809,38983:36034,38984:36335,38985:38706,38986:21172,38987:23105,38988:24266,38989:24324,38990:26391,38991:27004,38992:27028,38993:28010,38994:28431,38995:29282,38996:29436,38997:31725,38998:32769,38999:32894,39e3:34635,39001:37070,39002:20845,39003:40595,39004:31108,39005:32907,39006:37682,39007:35542,39008:20525,39009:21644,39010:35441,39011:27498,39012:36036,39013:33031,39014:24785,39015:26528,39016:40434,39017:20121,39018:20120,39019:39952,39020:35435,39021:34241,39022:34152,39023:26880,39024:28286,39025:30871,39026:33109,39071:24332,39072:19984,39073:19989,39074:20010,39075:20017,39076:20022,39077:20028,39078:20031,39079:20034,39080:20054,39081:20056,39082:20098,39083:20101,39084:35947,39085:20106,39086:33298,39087:24333,39088:20110,39089:20126,39090:20127,39091:20128,39092:20130,39093:20144,39094:20147,39095:20150,39096:20174,39097:20173,39098:20164,39099:20166,39100:20162,39101:20183,39102:20190,39103:20205,39104:20191,39105:20215,39106:20233,39107:20314,39108:20272,39109:20315,39110:20317,39111:20311,39112:20295,39113:20342,39114:20360,39115:20367,39116:20376,39117:20347,39118:20329,39119:20336,39120:20369,39121:20335,39122:20358,39123:20374,39124:20760,39125:20436,39126:20447,39127:20430,39128:20440,39129:20443,39130:20433,39131:20442,39132:20432,39133:20452,39134:20453,39135:20506,39136:20520,39137:20500,39138:20522,39139:20517,39140:20485,39141:20252,39142:20470,39143:20513,39144:20521,39145:20524,39146:20478,39147:20463,39148:20497,39149:20486,39150:20547,39151:20551,39152:26371,39153:20565,39154:20560,39155:20552,39156:20570,39157:20566,39158:20588,39159:20600,39160:20608,39161:20634,39162:20613,39163:20660,39164:20658,39232:20681,39233:20682,39234:20659,39235:20674,39236:20694,39237:20702,39238:20709,39239:20717,39240:20707,39241:20718,39242:20729,39243:20725,39244:20745,39245:20737,39246:20738,39247:20758,39248:20757,39249:20756,39250:20762,39251:20769,39252:20794,39253:20791,39254:20796,39255:20795,39256:20799,39257:20800,39258:20818,39259:20812,39260:20820,39261:20834,39262:31480,39263:20841,39264:20842,39265:20846,39266:20864,39267:20866,39268:22232,39269:20876,39270:20873,39271:20879,39272:20881,39273:20883,39274:20885,39275:20886,39276:20900,39277:20902,39278:20898,39279:20905,39280:20906,39281:20907,39282:20915,39283:20913,39284:20914,39285:20912,39286:20917,39287:20925,39288:20933,39289:20937,39290:20955,39291:20960,39292:34389,39293:20969,39294:20973,39296:20976,39297:20981,39298:20990,39299:20996,39300:21003,39301:21012,39302:21006,39303:21031,39304:21034,39305:21038,39306:21043,39307:21049,39308:21071,39309:21060,39310:21067,39311:21068,39312:21086,39313:21076,39314:21098,39315:21108,39316:21097,39317:21107,39318:21119,39319:21117,39320:21133,39321:21140,39322:21138,39323:21105,39324:21128,39325:21137,39326:36776,39327:36775,39328:21164,39329:21165,39330:21180,39331:21173,39332:21185,39333:21197,39334:21207,39335:21214,39336:21219,39337:21222,39338:39149,39339:21216,39340:21235,39341:21237,39342:21240,39343:21241,39344:21254,39345:21256,39346:30008,39347:21261,39348:21264,39349:21263,39350:21269,39351:21274,39352:21283,39353:21295,39354:21297,39355:21299,39356:21304,39357:21312,39358:21318,39359:21317,39360:19991,39361:21321,39362:21325,39363:20950,39364:21342,39365:21353,39366:21358,39367:22808,39368:21371,39369:21367,39370:21378,39371:21398,39372:21408,39373:21414,39374:21413,39375:21422,39376:21424,39377:21430,39378:21443,39379:31762,39380:38617,39381:21471,39382:26364,39383:29166,39384:21486,39385:21480,39386:21485,39387:21498,39388:21505,39389:21565,39390:21568,39391:21548,39392:21549,39393:21564,39394:21550,39395:21558,39396:21545,39397:21533,39398:21582,39399:21647,39400:21621,39401:21646,39402:21599,39403:21617,39404:21623,39405:21616,39406:21650,39407:21627,39408:21632,39409:21622,39410:21636,39411:21648,39412:21638,39413:21703,39414:21666,39415:21688,39416:21669,39417:21676,39418:21700,39419:21704,39420:21672,39488:21675,39489:21698,39490:21668,39491:21694,39492:21692,39493:21720,39494:21733,39495:21734,39496:21775,39497:21780,39498:21757,39499:21742,39500:21741,39501:21754,39502:21730,39503:21817,39504:21824,39505:21859,39506:21836,39507:21806,39508:21852,39509:21829,39510:21846,39511:21847,39512:21816,39513:21811,39514:21853,39515:21913,39516:21888,39517:21679,39518:21898,39519:21919,39520:21883,39521:21886,39522:21912,39523:21918,39524:21934,39525:21884,39526:21891,39527:21929,39528:21895,39529:21928,39530:21978,39531:21957,39532:21983,39533:21956,39534:21980,39535:21988,39536:21972,39537:22036,39538:22007,39539:22038,39540:22014,39541:22013,39542:22043,39543:22009,39544:22094,39545:22096,39546:29151,39547:22068,39548:22070,39549:22066,39550:22072,39552:22123,39553:22116,39554:22063,39555:22124,39556:22122,39557:22150,39558:22144,39559:22154,39560:22176,39561:22164,39562:22159,39563:22181,39564:22190,39565:22198,39566:22196,39567:22210,39568:22204,39569:22209,39570:22211,39571:22208,39572:22216,39573:22222,39574:22225,39575:22227,39576:22231,39577:22254,39578:22265,39579:22272,39580:22271,39581:22276,39582:22281,39583:22280,39584:22283,39585:22285,39586:22291,39587:22296,39588:22294,39589:21959,39590:22300,39591:22310,39592:22327,39593:22328,39594:22350,39595:22331,39596:22336,39597:22351,39598:22377,39599:22464,39600:22408,39601:22369,39602:22399,39603:22409,39604:22419,39605:22432,39606:22451,39607:22436,39608:22442,39609:22448,39610:22467,39611:22470,39612:22484,39613:22482,39614:22483,39615:22538,39616:22486,39617:22499,39618:22539,39619:22553,39620:22557,39621:22642,39622:22561,39623:22626,39624:22603,39625:22640,39626:27584,39627:22610,39628:22589,39629:22649,39630:22661,39631:22713,39632:22687,39633:22699,39634:22714,39635:22750,39636:22715,39637:22712,39638:22702,39639:22725,39640:22739,39641:22737,39642:22743,39643:22745,39644:22744,39645:22757,39646:22748,39647:22756,39648:22751,39649:22767,39650:22778,39651:22777,39652:22779,39653:22780,39654:22781,39655:22786,39656:22794,39657:22800,39658:22811,39659:26790,39660:22821,39661:22828,39662:22829,39663:22834,39664:22840,39665:22846,39666:31442,39667:22869,39668:22864,39669:22862,39670:22874,39671:22872,39672:22882,39673:22880,39674:22887,39675:22892,39676:22889,39744:22904,39745:22913,39746:22941,39747:20318,39748:20395,39749:22947,39750:22962,39751:22982,39752:23016,39753:23004,39754:22925,39755:23001,39756:23002,39757:23077,39758:23071,39759:23057,39760:23068,39761:23049,39762:23066,39763:23104,39764:23148,39765:23113,39766:23093,39767:23094,39768:23138,39769:23146,39770:23194,39771:23228,39772:23230,39773:23243,39774:23234,39775:23229,39776:23267,39777:23255,39778:23270,39779:23273,39780:23254,39781:23290,39782:23291,39783:23308,39784:23307,39785:23318,39786:23346,39787:23248,39788:23338,39789:23350,39790:23358,39791:23363,39792:23365,39793:23360,39794:23377,39795:23381,39796:23386,39797:23387,39798:23397,39799:23401,39800:23408,39801:23411,39802:23413,39803:23416,39804:25992,39805:23418,39806:23424,39808:23427,39809:23462,39810:23480,39811:23491,39812:23495,39813:23497,39814:23508,39815:23504,39816:23524,39817:23526,39818:23522,39819:23518,39820:23525,39821:23531,39822:23536,39823:23542,39824:23539,39825:23557,39826:23559,39827:23560,39828:23565,39829:23571,39830:23584,39831:23586,39832:23592,39833:23608,39834:23609,39835:23617,39836:23622,39837:23630,39838:23635,39839:23632,39840:23631,39841:23409,39842:23660,39843:23662,39844:20066,39845:23670,39846:23673,39847:23692,39848:23697,39849:23700,39850:22939,39851:23723,39852:23739,39853:23734,39854:23740,39855:23735,39856:23749,39857:23742,39858:23751,39859:23769,39860:23785,39861:23805,39862:23802,39863:23789,39864:23948,39865:23786,39866:23819,39867:23829,39868:23831,39869:23900,39870:23839,39871:23835,39872:23825,39873:23828,39874:23842,39875:23834,39876:23833,39877:23832,39878:23884,39879:23890,39880:23886,39881:23883,39882:23916,39883:23923,39884:23926,39885:23943,39886:23940,39887:23938,39888:23970,39889:23965,39890:23980,39891:23982,39892:23997,39893:23952,39894:23991,39895:23996,39896:24009,39897:24013,39898:24019,39899:24018,39900:24022,39901:24027,39902:24043,39903:24050,39904:24053,39905:24075,39906:24090,39907:24089,39908:24081,39909:24091,39910:24118,39911:24119,39912:24132,39913:24131,39914:24128,39915:24142,39916:24151,39917:24148,39918:24159,39919:24162,39920:24164,39921:24135,39922:24181,39923:24182,39924:24186,39925:40636,39926:24191,39927:24224,39928:24257,39929:24258,39930:24264,39931:24272,39932:24271,4e4:24278,40001:24291,40002:24285,40003:24282,40004:24283,40005:24290,40006:24289,40007:24296,40008:24297,40009:24300,40010:24305,40011:24307,40012:24304,40013:24308,40014:24312,40015:24318,40016:24323,40017:24329,40018:24413,40019:24412,40020:24331,40021:24337,40022:24342,40023:24361,40024:24365,40025:24376,40026:24385,40027:24392,40028:24396,40029:24398,40030:24367,40031:24401,40032:24406,40033:24407,40034:24409,40035:24417,40036:24429,40037:24435,40038:24439,40039:24451,40040:24450,40041:24447,40042:24458,40043:24456,40044:24465,40045:24455,40046:24478,40047:24473,40048:24472,40049:24480,40050:24488,40051:24493,40052:24508,40053:24534,40054:24571,40055:24548,40056:24568,40057:24561,40058:24541,40059:24755,40060:24575,40061:24609,40062:24672,40064:24601,40065:24592,40066:24617,40067:24590,40068:24625,40069:24603,40070:24597,40071:24619,40072:24614,40073:24591,40074:24634,40075:24666,40076:24641,40077:24682,40078:24695,40079:24671,40080:24650,40081:24646,40082:24653,40083:24675,40084:24643,40085:24676,40086:24642,40087:24684,40088:24683,40089:24665,40090:24705,40091:24717,40092:24807,40093:24707,40094:24730,40095:24708,40096:24731,40097:24726,40098:24727,40099:24722,40100:24743,40101:24715,40102:24801,40103:24760,40104:24800,40105:24787,40106:24756,40107:24560,40108:24765,40109:24774,40110:24757,40111:24792,40112:24909,40113:24853,40114:24838,40115:24822,40116:24823,40117:24832,40118:24820,40119:24826,40120:24835,40121:24865,40122:24827,40123:24817,40124:24845,40125:24846,40126:24903,40127:24894,40128:24872,40129:24871,40130:24906,40131:24895,40132:24892,40133:24876,40134:24884,40135:24893,40136:24898,40137:24900,40138:24947,40139:24951,40140:24920,40141:24921,40142:24922,40143:24939,40144:24948,40145:24943,40146:24933,40147:24945,40148:24927,40149:24925,40150:24915,40151:24949,40152:24985,40153:24982,40154:24967,40155:25004,40156:24980,40157:24986,40158:24970,40159:24977,40160:25003,40161:25006,40162:25036,40163:25034,40164:25033,40165:25079,40166:25032,40167:25027,40168:25030,40169:25018,40170:25035,40171:32633,40172:25037,40173:25062,40174:25059,40175:25078,40176:25082,40177:25076,40178:25087,40179:25085,40180:25084,40181:25086,40182:25088,40183:25096,40184:25097,40185:25101,40186:25100,40187:25108,40188:25115,40256:25118,40257:25121,40258:25130,40259:25134,40260:25136,40261:25138,40262:25139,40263:25153,40264:25166,40265:25182,40266:25187,40267:25179,40268:25184,40269:25192,40270:25212,40271:25218,40272:25225,40273:25214,40274:25234,40275:25235,40276:25238,40277:25300,40278:25219,40279:25236,40280:25303,40281:25297,40282:25275,40283:25295,40284:25343,40285:25286,40286:25812,40287:25288,40288:25308,40289:25292,40290:25290,40291:25282,40292:25287,40293:25243,40294:25289,40295:25356,40296:25326,40297:25329,40298:25383,40299:25346,40300:25352,40301:25327,40302:25333,40303:25424,40304:25406,40305:25421,40306:25628,40307:25423,40308:25494,40309:25486,40310:25472,40311:25515,40312:25462,40313:25507,40314:25487,40315:25481,40316:25503,40317:25525,40318:25451,40320:25449,40321:25534,40322:25577,40323:25536,40324:25542,40325:25571,40326:25545,40327:25554,40328:25590,40329:25540,40330:25622,40331:25652,40332:25606,40333:25619,40334:25638,40335:25654,40336:25885,40337:25623,40338:25640,40339:25615,40340:25703,40341:25711,40342:25718,40343:25678,40344:25898,40345:25749,40346:25747,40347:25765,40348:25769,40349:25736,40350:25788,40351:25818,40352:25810,40353:25797,40354:25799,40355:25787,40356:25816,40357:25794,40358:25841,40359:25831,40360:33289,40361:25824,40362:25825,40363:25260,40364:25827,40365:25839,40366:25900,40367:25846,40368:25844,40369:25842,40370:25850,40371:25856,40372:25853,40373:25880,40374:25884,40375:25861,40376:25892,40377:25891,40378:25899,40379:25908,40380:25909,40381:25911,40382:25910,40383:25912,40384:30027,40385:25928,40386:25942,40387:25941,40388:25933,40389:25944,40390:25950,40391:25949,40392:25970,40393:25976,40394:25986,40395:25987,40396:35722,40397:26011,40398:26015,40399:26027,40400:26039,40401:26051,40402:26054,40403:26049,40404:26052,40405:26060,40406:26066,40407:26075,40408:26073,40409:26080,40410:26081,40411:26097,40412:26482,40413:26122,40414:26115,40415:26107,40416:26483,40417:26165,40418:26166,40419:26164,40420:26140,40421:26191,40422:26180,40423:26185,40424:26177,40425:26206,40426:26205,40427:26212,40428:26215,40429:26216,40430:26207,40431:26210,40432:26224,40433:26243,40434:26248,40435:26254,40436:26249,40437:26244,40438:26264,40439:26269,40440:26305,40441:26297,40442:26313,40443:26302,40444:26300,40512:26308,40513:26296,40514:26326,40515:26330,40516:26336,40517:26175,40518:26342,40519:26345,40520:26352,40521:26357,40522:26359,40523:26383,40524:26390,40525:26398,40526:26406,40527:26407,40528:38712,40529:26414,40530:26431,40531:26422,40532:26433,40533:26424,40534:26423,40535:26438,40536:26462,40537:26464,40538:26457,40539:26467,40540:26468,40541:26505,40542:26480,40543:26537,40544:26492,40545:26474,40546:26508,40547:26507,40548:26534,40549:26529,40550:26501,40551:26551,40552:26607,40553:26548,40554:26604,40555:26547,40556:26601,40557:26552,40558:26596,40559:26590,40560:26589,40561:26594,40562:26606,40563:26553,40564:26574,40565:26566,40566:26599,40567:27292,40568:26654,40569:26694,40570:26665,40571:26688,40572:26701,40573:26674,40574:26702,40576:26803,40577:26667,40578:26713,40579:26723,40580:26743,40581:26751,40582:26783,40583:26767,40584:26797,40585:26772,40586:26781,40587:26779,40588:26755,40589:27310,40590:26809,40591:26740,40592:26805,40593:26784,40594:26810,40595:26895,40596:26765,40597:26750,40598:26881,40599:26826,40600:26888,40601:26840,40602:26914,40603:26918,40604:26849,40605:26892,40606:26829,40607:26836,40608:26855,40609:26837,40610:26934,40611:26898,40612:26884,40613:26839,40614:26851,40615:26917,40616:26873,40617:26848,40618:26863,40619:26920,40620:26922,40621:26906,40622:26915,40623:26913,40624:26822,40625:27001,40626:26999,40627:26972,40628:27e3,40629:26987,40630:26964,40631:27006,40632:26990,40633:26937,40634:26996,40635:26941,40636:26969,40637:26928,40638:26977,40639:26974,40640:26973,40641:27009,40642:26986,40643:27058,40644:27054,40645:27088,40646:27071,40647:27073,40648:27091,40649:27070,40650:27086,40651:23528,40652:27082,40653:27101,40654:27067,40655:27075,40656:27047,40657:27182,40658:27025,40659:27040,40660:27036,40661:27029,40662:27060,40663:27102,40664:27112,40665:27138,40666:27163,40667:27135,40668:27402,40669:27129,40670:27122,40671:27111,40672:27141,40673:27057,40674:27166,40675:27117,40676:27156,40677:27115,40678:27146,40679:27154,40680:27329,40681:27171,40682:27155,40683:27204,40684:27148,40685:27250,40686:27190,40687:27256,40688:27207,40689:27234,40690:27225,40691:27238,40692:27208,40693:27192,40694:27170,40695:27280,40696:27277,40697:27296,40698:27268,40699:27298,40700:27299,40768:27287,40769:34327,40770:27323,40771:27331,40772:27330,40773:27320,40774:27315,40775:27308,40776:27358,40777:27345,40778:27359,40779:27306,40780:27354,40781:27370,40782:27387,40783:27397,40784:34326,40785:27386,40786:27410,40787:27414,40788:39729,40789:27423,40790:27448,40791:27447,40792:30428,40793:27449,40794:39150,40795:27463,40796:27459,40797:27465,40798:27472,40799:27481,40800:27476,40801:27483,40802:27487,40803:27489,40804:27512,40805:27513,40806:27519,40807:27520,40808:27524,40809:27523,40810:27533,40811:27544,40812:27541,40813:27550,40814:27556,40815:27562,40816:27563,40817:27567,40818:27570,40819:27569,40820:27571,40821:27575,40822:27580,40823:27590,40824:27595,40825:27603,40826:27615,40827:27628,40828:27627,40829:27635,40830:27631,40832:40638,40833:27656,40834:27667,40835:27668,40836:27675,40837:27684,40838:27683,40839:27742,40840:27733,40841:27746,40842:27754,40843:27778,40844:27789,40845:27802,40846:27777,40847:27803,40848:27774,40849:27752,40850:27763,40851:27794,40852:27792,40853:27844,40854:27889,40855:27859,40856:27837,40857:27863,40858:27845,40859:27869,40860:27822,40861:27825,40862:27838,40863:27834,40864:27867,40865:27887,40866:27865,40867:27882,40868:27935,40869:34893,40870:27958,40871:27947,40872:27965,40873:27960,40874:27929,40875:27957,40876:27955,40877:27922,40878:27916,40879:28003,40880:28051,40881:28004,40882:27994,40883:28025,40884:27993,40885:28046,40886:28053,40887:28644,40888:28037,40889:28153,40890:28181,40891:28170,40892:28085,40893:28103,40894:28134,40895:28088,40896:28102,40897:28140,40898:28126,40899:28108,40900:28136,40901:28114,40902:28101,40903:28154,40904:28121,40905:28132,40906:28117,40907:28138,40908:28142,40909:28205,40910:28270,40911:28206,40912:28185,40913:28274,40914:28255,40915:28222,40916:28195,40917:28267,40918:28203,40919:28278,40920:28237,40921:28191,40922:28227,40923:28218,40924:28238,40925:28196,40926:28415,40927:28189,40928:28216,40929:28290,40930:28330,40931:28312,40932:28361,40933:28343,40934:28371,40935:28349,40936:28335,40937:28356,40938:28338,40939:28372,40940:28373,40941:28303,40942:28325,40943:28354,40944:28319,40945:28481,40946:28433,40947:28748,40948:28396,40949:28408,40950:28414,40951:28479,40952:28402,40953:28465,40954:28399,40955:28466,40956:28364,161:65377,162:65378,163:65379,164:65380,165:65381,166:65382,167:65383,168:65384,169:65385,170:65386,171:65387,172:65388,173:65389,174:65390,175:65391,176:65392,177:65393,178:65394,179:65395,180:65396,181:65397,182:65398,183:65399,184:65400,185:65401,186:65402,187:65403,188:65404,189:65405,190:65406,191:65407,192:65408,193:65409,194:65410,195:65411,196:65412,197:65413,198:65414,199:65415,200:65416,201:65417,202:65418,203:65419,204:65420,205:65421,206:65422,207:65423,208:65424,209:65425,210:65426,211:65427,212:65428,213:65429,214:65430,215:65431,216:65432,217:65433,218:65434,219:65435,220:65436,221:65437,222:65438,223:65439,57408:28478,57409:28435,57410:28407,57411:28550,57412:28538,57413:28536,57414:28545,57415:28544,57416:28527,57417:28507,57418:28659,57419:28525,57420:28546,57421:28540,57422:28504,57423:28558,57424:28561,57425:28610,57426:28518,57427:28595,57428:28579,57429:28577,57430:28580,57431:28601,57432:28614,57433:28586,57434:28639,57435:28629,57436:28652,57437:28628,57438:28632,57439:28657,57440:28654,57441:28635,57442:28681,57443:28683,57444:28666,57445:28689,57446:28673,57447:28687,57448:28670,57449:28699,57450:28698,57451:28532,57452:28701,57453:28696,57454:28703,57455:28720,57456:28734,57457:28722,57458:28753,57459:28771,57460:28825,57461:28818,57462:28847,57463:28913,57464:28844,57465:28856,57466:28851,57467:28846,57468:28895,57469:28875,57470:28893,57472:28889,57473:28937,57474:28925,57475:28956,57476:28953,57477:29029,57478:29013,57479:29064,57480:29030,57481:29026,57482:29004,57483:29014,57484:29036,57485:29071,57486:29179,57487:29060,57488:29077,57489:29096,57490:29100,57491:29143,57492:29113,57493:29118,57494:29138,57495:29129,57496:29140,57497:29134,57498:29152,57499:29164,57500:29159,57501:29173,57502:29180,57503:29177,57504:29183,57505:29197,57506:29200,57507:29211,57508:29224,57509:29229,57510:29228,57511:29232,57512:29234,57513:29243,57514:29244,57515:29247,57516:29248,57517:29254,57518:29259,57519:29272,57520:29300,57521:29310,57522:29314,57523:29313,57524:29319,57525:29330,57526:29334,57527:29346,57528:29351,57529:29369,57530:29362,57531:29379,57532:29382,57533:29380,57534:29390,57535:29394,57536:29410,57537:29408,57538:29409,57539:29433,57540:29431,57541:20495,57542:29463,57543:29450,57544:29468,57545:29462,57546:29469,57547:29492,57548:29487,57549:29481,57550:29477,57551:29502,57552:29518,57553:29519,57554:40664,57555:29527,57556:29546,57557:29544,57558:29552,57559:29560,57560:29557,57561:29563,57562:29562,57563:29640,57564:29619,57565:29646,57566:29627,57567:29632,57568:29669,57569:29678,57570:29662,57571:29858,57572:29701,57573:29807,57574:29733,57575:29688,57576:29746,57577:29754,57578:29781,57579:29759,57580:29791,57581:29785,57582:29761,57583:29788,57584:29801,57585:29808,57586:29795,57587:29802,57588:29814,57589:29822,57590:29835,57591:29854,57592:29863,57593:29898,57594:29903,57595:29908,57596:29681,57664:29920,57665:29923,57666:29927,57667:29929,57668:29934,57669:29938,57670:29936,57671:29937,57672:29944,57673:29943,57674:29956,57675:29955,57676:29957,57677:29964,57678:29966,57679:29965,57680:29973,57681:29971,57682:29982,57683:29990,57684:29996,57685:30012,57686:30020,57687:30029,57688:30026,57689:30025,57690:30043,57691:30022,57692:30042,57693:30057,57694:30052,57695:30055,57696:30059,57697:30061,57698:30072,57699:30070,57700:30086,57701:30087,57702:30068,57703:30090,57704:30089,57705:30082,57706:30100,57707:30106,57708:30109,57709:30117,57710:30115,57711:30146,57712:30131,57713:30147,57714:30133,57715:30141,57716:30136,57717:30140,57718:30129,57719:30157,57720:30154,57721:30162,57722:30169,57723:30179,57724:30174,57725:30206,57726:30207,57728:30204,57729:30209,57730:30192,57731:30202,57732:30194,57733:30195,57734:30219,57735:30221,57736:30217,57737:30239,57738:30247,57739:30240,57740:30241,57741:30242,57742:30244,57743:30260,57744:30256,57745:30267,57746:30279,57747:30280,57748:30278,57749:30300,57750:30296,57751:30305,57752:30306,57753:30312,57754:30313,57755:30314,57756:30311,57757:30316,57758:30320,57759:30322,57760:30326,57761:30328,57762:30332,57763:30336,57764:30339,57765:30344,57766:30347,57767:30350,57768:30358,57769:30355,57770:30361,57771:30362,57772:30384,57773:30388,57774:30392,57775:30393,57776:30394,57777:30402,57778:30413,57779:30422,57780:30418,57781:30430,57782:30433,57783:30437,57784:30439,57785:30442,57786:34351,57787:30459,57788:30472,57789:30471,57790:30468,57791:30505,57792:30500,57793:30494,57794:30501,57795:30502,57796:30491,57797:30519,57798:30520,57799:30535,57800:30554,57801:30568,57802:30571,57803:30555,57804:30565,57805:30591,57806:30590,57807:30585,57808:30606,57809:30603,57810:30609,57811:30624,57812:30622,57813:30640,57814:30646,57815:30649,57816:30655,57817:30652,57818:30653,57819:30651,57820:30663,57821:30669,57822:30679,57823:30682,57824:30684,57825:30691,57826:30702,57827:30716,57828:30732,57829:30738,57830:31014,57831:30752,57832:31018,57833:30789,57834:30862,57835:30836,57836:30854,57837:30844,57838:30874,57839:30860,57840:30883,57841:30901,57842:30890,57843:30895,57844:30929,57845:30918,57846:30923,57847:30932,57848:30910,57849:30908,57850:30917,57851:30922,57852:30956,57920:30951,57921:30938,57922:30973,57923:30964,57924:30983,57925:30994,57926:30993,57927:31001,57928:31020,57929:31019,57930:31040,57931:31072,57932:31063,57933:31071,57934:31066,57935:31061,57936:31059,57937:31098,57938:31103,57939:31114,57940:31133,57941:31143,57942:40779,57943:31146,57944:31150,57945:31155,57946:31161,57947:31162,57948:31177,57949:31189,57950:31207,57951:31212,57952:31201,57953:31203,57954:31240,57955:31245,57956:31256,57957:31257,57958:31264,57959:31263,57960:31104,57961:31281,57962:31291,57963:31294,57964:31287,57965:31299,57966:31319,57967:31305,57968:31329,57969:31330,57970:31337,57971:40861,57972:31344,57973:31353,57974:31357,57975:31368,57976:31383,57977:31381,57978:31384,57979:31382,57980:31401,57981:31432,57982:31408,57984:31414,57985:31429,57986:31428,57987:31423,57988:36995,57989:31431,57990:31434,57991:31437,57992:31439,57993:31445,57994:31443,57995:31449,57996:31450,57997:31453,57998:31457,57999:31458,58e3:31462,58001:31469,58002:31472,58003:31490,58004:31503,58005:31498,58006:31494,58007:31539,58008:31512,58009:31513,58010:31518,58011:31541,58012:31528,58013:31542,58014:31568,58015:31610,58016:31492,58017:31565,58018:31499,58019:31564,58020:31557,58021:31605,58022:31589,58023:31604,58024:31591,58025:31600,58026:31601,58027:31596,58028:31598,58029:31645,58030:31640,58031:31647,58032:31629,58033:31644,58034:31642,58035:31627,58036:31634,58037:31631,58038:31581,58039:31641,58040:31691,58041:31681,58042:31692,58043:31695,58044:31668,58045:31686,58046:31709,58047:31721,58048:31761,58049:31764,58050:31718,58051:31717,58052:31840,58053:31744,58054:31751,58055:31763,58056:31731,58057:31735,58058:31767,58059:31757,58060:31734,58061:31779,58062:31783,58063:31786,58064:31775,58065:31799,58066:31787,58067:31805,58068:31820,58069:31811,58070:31828,58071:31823,58072:31808,58073:31824,58074:31832,58075:31839,58076:31844,58077:31830,58078:31845,58079:31852,58080:31861,58081:31875,58082:31888,58083:31908,58084:31917,58085:31906,58086:31915,58087:31905,58088:31912,58089:31923,58090:31922,58091:31921,58092:31918,58093:31929,58094:31933,58095:31936,58096:31941,58097:31938,58098:31960,58099:31954,58100:31964,58101:31970,58102:39739,58103:31983,58104:31986,58105:31988,58106:31990,58107:31994,58108:32006,58176:32002,58177:32028,58178:32021,58179:32010,58180:32069,58181:32075,58182:32046,58183:32050,58184:32063,58185:32053,58186:32070,58187:32115,58188:32086,58189:32078,58190:32114,58191:32104,58192:32110,58193:32079,58194:32099,58195:32147,58196:32137,58197:32091,58198:32143,58199:32125,58200:32155,58201:32186,58202:32174,58203:32163,58204:32181,58205:32199,58206:32189,58207:32171,58208:32317,58209:32162,58210:32175,58211:32220,58212:32184,58213:32159,58214:32176,58215:32216,58216:32221,58217:32228,58218:32222,58219:32251,58220:32242,58221:32225,58222:32261,58223:32266,58224:32291,58225:32289,58226:32274,58227:32305,58228:32287,58229:32265,58230:32267,58231:32290,58232:32326,58233:32358,58234:32315,58235:32309,58236:32313,58237:32323,58238:32311,58240:32306,58241:32314,58242:32359,58243:32349,58244:32342,58245:32350,58246:32345,58247:32346,58248:32377,58249:32362,58250:32361,58251:32380,58252:32379,58253:32387,58254:32213,58255:32381,58256:36782,58257:32383,58258:32392,58259:32393,58260:32396,58261:32402,58262:32400,58263:32403,58264:32404,58265:32406,58266:32398,58267:32411,58268:32412,58269:32568,58270:32570,58271:32581,58272:32588,58273:32589,58274:32590,58275:32592,58276:32593,58277:32597,58278:32596,58279:32600,58280:32607,58281:32608,58282:32616,58283:32617,58284:32615,58285:32632,58286:32642,58287:32646,58288:32643,58289:32648,58290:32647,58291:32652,58292:32660,58293:32670,58294:32669,58295:32666,58296:32675,58297:32687,58298:32690,58299:32697,58300:32686,58301:32694,58302:32696,58303:35697,58304:32709,58305:32710,58306:32714,58307:32725,58308:32724,58309:32737,58310:32742,58311:32745,58312:32755,58313:32761,58314:39132,58315:32774,58316:32772,58317:32779,58318:32786,58319:32792,58320:32793,58321:32796,58322:32801,58323:32808,58324:32831,58325:32827,58326:32842,58327:32838,58328:32850,58329:32856,58330:32858,58331:32863,58332:32866,58333:32872,58334:32883,58335:32882,58336:32880,58337:32886,58338:32889,58339:32893,58340:32895,58341:32900,58342:32902,58343:32901,58344:32923,58345:32915,58346:32922,58347:32941,58348:20880,58349:32940,58350:32987,58351:32997,58352:32985,58353:32989,58354:32964,58355:32986,58356:32982,58357:33033,58358:33007,58359:33009,58360:33051,58361:33065,58362:33059,58363:33071,58364:33099,58432:38539,58433:33094,58434:33086,58435:33107,58436:33105,58437:33020,58438:33137,58439:33134,58440:33125,58441:33126,58442:33140,58443:33155,58444:33160,58445:33162,58446:33152,58447:33154,58448:33184,58449:33173,58450:33188,58451:33187,58452:33119,58453:33171,58454:33193,58455:33200,58456:33205,58457:33214,58458:33208,58459:33213,58460:33216,58461:33218,58462:33210,58463:33225,58464:33229,58465:33233,58466:33241,58467:33240,58468:33224,58469:33242,58470:33247,58471:33248,58472:33255,58473:33274,58474:33275,58475:33278,58476:33281,58477:33282,58478:33285,58479:33287,58480:33290,58481:33293,58482:33296,58483:33302,58484:33321,58485:33323,58486:33336,58487:33331,58488:33344,58489:33369,58490:33368,58491:33373,58492:33370,58493:33375,58494:33380,58496:33378,58497:33384,58498:33386,58499:33387,58500:33326,58501:33393,58502:33399,58503:33400,58504:33406,58505:33421,58506:33426,58507:33451,58508:33439,58509:33467,58510:33452,58511:33505,58512:33507,58513:33503,58514:33490,58515:33524,58516:33523,58517:33530,58518:33683,58519:33539,58520:33531,58521:33529,58522:33502,58523:33542,58524:33500,58525:33545,58526:33497,58527:33589,58528:33588,58529:33558,58530:33586,58531:33585,58532:33600,58533:33593,58534:33616,58535:33605,58536:33583,58537:33579,58538:33559,58539:33560,58540:33669,58541:33690,58542:33706,58543:33695,58544:33698,58545:33686,58546:33571,58547:33678,58548:33671,58549:33674,58550:33660,58551:33717,58552:33651,58553:33653,58554:33696,58555:33673,58556:33704,58557:33780,58558:33811,58559:33771,58560:33742,58561:33789,58562:33795,58563:33752,58564:33803,58565:33729,58566:33783,58567:33799,58568:33760,58569:33778,58570:33805,58571:33826,58572:33824,58573:33725,58574:33848,58575:34054,58576:33787,58577:33901,58578:33834,58579:33852,58580:34138,58581:33924,58582:33911,58583:33899,58584:33965,58585:33902,58586:33922,58587:33897,58588:33862,58589:33836,58590:33903,58591:33913,58592:33845,58593:33994,58594:33890,58595:33977,58596:33983,58597:33951,58598:34009,58599:33997,58600:33979,58601:34010,58602:34e3,58603:33985,58604:33990,58605:34006,58606:33953,58607:34081,58608:34047,58609:34036,58610:34071,58611:34072,58612:34092,58613:34079,58614:34069,58615:34068,58616:34044,58617:34112,58618:34147,58619:34136,58620:34120,58688:34113,58689:34306,58690:34123,58691:34133,58692:34176,58693:34212,58694:34184,58695:34193,58696:34186,58697:34216,58698:34157,58699:34196,58700:34203,58701:34282,58702:34183,58703:34204,58704:34167,58705:34174,58706:34192,58707:34249,58708:34234,58709:34255,58710:34233,58711:34256,58712:34261,58713:34269,58714:34277,58715:34268,58716:34297,58717:34314,58718:34323,58719:34315,58720:34302,58721:34298,58722:34310,58723:34338,58724:34330,58725:34352,58726:34367,58727:34381,58728:20053,58729:34388,58730:34399,58731:34407,58732:34417,58733:34451,58734:34467,58735:34473,58736:34474,58737:34443,58738:34444,58739:34486,58740:34479,58741:34500,58742:34502,58743:34480,58744:34505,58745:34851,58746:34475,58747:34516,58748:34526,58749:34537,58750:34540,58752:34527,58753:34523,58754:34543,58755:34578,58756:34566,58757:34568,58758:34560,58759:34563,58760:34555,58761:34577,58762:34569,58763:34573,58764:34553,58765:34570,58766:34612,58767:34623,58768:34615,58769:34619,58770:34597,58771:34601,58772:34586,58773:34656,58774:34655,58775:34680,58776:34636,58777:34638,58778:34676,58779:34647,58780:34664,58781:34670,58782:34649,58783:34643,58784:34659,58785:34666,58786:34821,58787:34722,58788:34719,58789:34690,58790:34735,58791:34763,58792:34749,58793:34752,58794:34768,58795:38614,58796:34731,58797:34756,58798:34739,58799:34759,58800:34758,58801:34747,58802:34799,58803:34802,58804:34784,58805:34831,58806:34829,58807:34814,58808:34806,58809:34807,58810:34830,58811:34770,58812:34833,58813:34838,58814:34837,58815:34850,58816:34849,58817:34865,58818:34870,58819:34873,58820:34855,58821:34875,58822:34884,58823:34882,58824:34898,58825:34905,58826:34910,58827:34914,58828:34923,58829:34945,58830:34942,58831:34974,58832:34933,58833:34941,58834:34997,58835:34930,58836:34946,58837:34967,58838:34962,58839:34990,58840:34969,58841:34978,58842:34957,58843:34980,58844:34992,58845:35007,58846:34993,58847:35011,58848:35012,58849:35028,58850:35032,58851:35033,58852:35037,58853:35065,58854:35074,58855:35068,58856:35060,58857:35048,58858:35058,58859:35076,58860:35084,58861:35082,58862:35091,58863:35139,58864:35102,58865:35109,58866:35114,58867:35115,58868:35137,58869:35140,58870:35131,58871:35126,58872:35128,58873:35148,58874:35101,58875:35168,58876:35166,58944:35174,58945:35172,58946:35181,58947:35178,58948:35183,58949:35188,58950:35191,58951:35198,58952:35203,58953:35208,58954:35210,58955:35219,58956:35224,58957:35233,58958:35241,58959:35238,58960:35244,58961:35247,58962:35250,58963:35258,58964:35261,58965:35263,58966:35264,58967:35290,58968:35292,58969:35293,58970:35303,58971:35316,58972:35320,58973:35331,58974:35350,58975:35344,58976:35340,58977:35355,58978:35357,58979:35365,58980:35382,58981:35393,58982:35419,58983:35410,58984:35398,58985:35400,58986:35452,58987:35437,58988:35436,58989:35426,58990:35461,58991:35458,58992:35460,58993:35496,58994:35489,58995:35473,58996:35493,58997:35494,58998:35482,58999:35491,59e3:35524,59001:35533,59002:35522,59003:35546,59004:35563,59005:35571,59006:35559,59008:35556,59009:35569,59010:35604,59011:35552,59012:35554,59013:35575,59014:35550,59015:35547,59016:35596,59017:35591,59018:35610,59019:35553,59020:35606,59021:35600,59022:35607,59023:35616,59024:35635,59025:38827,59026:35622,59027:35627,59028:35646,59029:35624,59030:35649,59031:35660,59032:35663,59033:35662,59034:35657,59035:35670,59036:35675,59037:35674,59038:35691,59039:35679,59040:35692,59041:35695,59042:35700,59043:35709,59044:35712,59045:35724,59046:35726,59047:35730,59048:35731,59049:35734,59050:35737,59051:35738,59052:35898,59053:35905,59054:35903,59055:35912,59056:35916,59057:35918,59058:35920,59059:35925,59060:35938,59061:35948,59062:35960,59063:35962,59064:35970,59065:35977,59066:35973,59067:35978,59068:35981,59069:35982,59070:35988,59071:35964,59072:35992,59073:25117,59074:36013,59075:36010,59076:36029,59077:36018,59078:36019,59079:36014,59080:36022,59081:36040,59082:36033,59083:36068,59084:36067,59085:36058,59086:36093,59087:36090,59088:36091,59089:36100,59090:36101,59091:36106,59092:36103,59093:36111,59094:36109,59095:36112,59096:40782,59097:36115,59098:36045,59099:36116,59100:36118,59101:36199,59102:36205,59103:36209,59104:36211,59105:36225,59106:36249,59107:36290,59108:36286,59109:36282,59110:36303,59111:36314,59112:36310,59113:36300,59114:36315,59115:36299,59116:36330,59117:36331,59118:36319,59119:36323,59120:36348,59121:36360,59122:36361,59123:36351,59124:36381,59125:36382,59126:36368,59127:36383,59128:36418,59129:36405,59130:36400,59131:36404,59132:36426,59200:36423,59201:36425,59202:36428,59203:36432,59204:36424,59205:36441,59206:36452,59207:36448,59208:36394,59209:36451,59210:36437,59211:36470,59212:36466,59213:36476,59214:36481,59215:36487,59216:36485,59217:36484,59218:36491,59219:36490,59220:36499,59221:36497,59222:36500,59223:36505,59224:36522,59225:36513,59226:36524,59227:36528,59228:36550,59229:36529,59230:36542,59231:36549,59232:36552,59233:36555,59234:36571,59235:36579,59236:36604,59237:36603,59238:36587,59239:36606,59240:36618,59241:36613,59242:36629,59243:36626,59244:36633,59245:36627,59246:36636,59247:36639,59248:36635,59249:36620,59250:36646,59251:36659,59252:36667,59253:36665,59254:36677,59255:36674,59256:36670,59257:36684,59258:36681,59259:36678,59260:36686,59261:36695,59262:36700,59264:36706,59265:36707,59266:36708,59267:36764,59268:36767,59269:36771,59270:36781,59271:36783,59272:36791,59273:36826,59274:36837,59275:36834,59276:36842,59277:36847,59278:36999,59279:36852,59280:36869,59281:36857,59282:36858,59283:36881,59284:36885,59285:36897,59286:36877,59287:36894,59288:36886,59289:36875,59290:36903,59291:36918,59292:36917,59293:36921,59294:36856,59295:36943,59296:36944,59297:36945,59298:36946,59299:36878,59300:36937,59301:36926,59302:36950,59303:36952,59304:36958,59305:36968,59306:36975,59307:36982,59308:38568,59309:36978,59310:36994,59311:36989,59312:36993,59313:36992,59314:37002,59315:37001,59316:37007,59317:37032,59318:37039,59319:37041,59320:37045,59321:37090,59322:37092,59323:25160,59324:37083,59325:37122,59326:37138,59327:37145,59328:37170,59329:37168,59330:37194,59331:37206,59332:37208,59333:37219,59334:37221,59335:37225,59336:37235,59337:37234,59338:37259,59339:37257,59340:37250,59341:37282,59342:37291,59343:37295,59344:37290,59345:37301,59346:37300,59347:37306,59348:37312,59349:37313,59350:37321,59351:37323,59352:37328,59353:37334,59354:37343,59355:37345,59356:37339,59357:37372,59358:37365,59359:37366,59360:37406,59361:37375,59362:37396,59363:37420,59364:37397,59365:37393,59366:37470,59367:37463,59368:37445,59369:37449,59370:37476,59371:37448,59372:37525,59373:37439,59374:37451,59375:37456,59376:37532,59377:37526,59378:37523,59379:37531,59380:37466,59381:37583,59382:37561,59383:37559,59384:37609,59385:37647,59386:37626,59387:37700,59388:37678,59456:37657,59457:37666,59458:37658,59459:37667,59460:37690,59461:37685,59462:37691,59463:37724,59464:37728,59465:37756,59466:37742,59467:37718,59468:37808,59469:37804,59470:37805,59471:37780,59472:37817,59473:37846,59474:37847,59475:37864,59476:37861,59477:37848,59478:37827,59479:37853,59480:37840,59481:37832,59482:37860,59483:37914,59484:37908,59485:37907,59486:37891,59487:37895,59488:37904,59489:37942,59490:37931,59491:37941,59492:37921,59493:37946,59494:37953,59495:37970,59496:37956,59497:37979,59498:37984,59499:37986,59500:37982,59501:37994,59502:37417,59503:38e3,59504:38005,59505:38007,59506:38013,59507:37978,59508:38012,59509:38014,59510:38017,59511:38015,59512:38274,59513:38279,59514:38282,59515:38292,59516:38294,59517:38296,59518:38297,59520:38304,59521:38312,59522:38311,59523:38317,59524:38332,59525:38331,59526:38329,59527:38334,59528:38346,59529:28662,59530:38339,59531:38349,59532:38348,59533:38357,59534:38356,59535:38358,59536:38364,59537:38369,59538:38373,59539:38370,59540:38433,59541:38440,59542:38446,59543:38447,59544:38466,59545:38476,59546:38479,59547:38475,59548:38519,59549:38492,59550:38494,59551:38493,59552:38495,59553:38502,59554:38514,59555:38508,59556:38541,59557:38552,59558:38549,59559:38551,59560:38570,59561:38567,59562:38577,59563:38578,59564:38576,59565:38580,59566:38582,59567:38584,59568:38585,59569:38606,59570:38603,59571:38601,59572:38605,59573:35149,59574:38620,59575:38669,59576:38613,59577:38649,59578:38660,59579:38662,59580:38664,59581:38675,59582:38670,59583:38673,59584:38671,59585:38678,59586:38681,59587:38692,59588:38698,59589:38704,59590:38713,59591:38717,59592:38718,59593:38724,59594:38726,59595:38728,59596:38722,59597:38729,59598:38748,59599:38752,59600:38756,59601:38758,59602:38760,59603:21202,59604:38763,59605:38769,59606:38777,59607:38789,59608:38780,59609:38785,59610:38778,59611:38790,59612:38795,59613:38799,59614:38800,59615:38812,59616:38824,59617:38822,59618:38819,59619:38835,59620:38836,59621:38851,59622:38854,59623:38856,59624:38859,59625:38876,59626:38893,59627:40783,59628:38898,59629:31455,59630:38902,59631:38901,59632:38927,59633:38924,59634:38968,59635:38948,59636:38945,59637:38967,59638:38973,59639:38982,59640:38991,59641:38987,59642:39019,59643:39023,59644:39024,59712:39025,59713:39028,59714:39027,59715:39082,59716:39087,59717:39089,59718:39094,59719:39108,59720:39107,59721:39110,59722:39145,59723:39147,59724:39171,59725:39177,59726:39186,59727:39188,59728:39192,59729:39201,59730:39197,59731:39198,59732:39204,59733:39200,59734:39212,59735:39214,59736:39229,59737:39230,59738:39234,59739:39241,59740:39237,59741:39248,59742:39243,59743:39249,59744:39250,59745:39244,59746:39253,59747:39319,59748:39320,59749:39333,59750:39341,59751:39342,59752:39356,59753:39391,59754:39387,59755:39389,59756:39384,59757:39377,59758:39405,59759:39406,59760:39409,59761:39410,59762:39419,59763:39416,59764:39425,59765:39439,59766:39429,59767:39394,59768:39449,59769:39467,59770:39479,59771:39493,59772:39490,59773:39488,59774:39491,59776:39486,59777:39509,59778:39501,59779:39515,59780:39511,59781:39519,59782:39522,59783:39525,59784:39524,59785:39529,59786:39531,59787:39530,59788:39597,59789:39600,59790:39612,59791:39616,59792:39631,59793:39633,59794:39635,59795:39636,59796:39646,59797:39647,59798:39650,59799:39651,59800:39654,59801:39663,59802:39659,59803:39662,59804:39668,59805:39665,59806:39671,59807:39675,59808:39686,59809:39704,59810:39706,59811:39711,59812:39714,59813:39715,59814:39717,59815:39719,59816:39720,59817:39721,59818:39722,59819:39726,59820:39727,59821:39730,59822:39748,59823:39747,59824:39759,59825:39757,59826:39758,59827:39761,59828:39768,59829:39796,59830:39827,59831:39811,59832:39825,59833:39830,59834:39831,59835:39839,59836:39840,59837:39848,59838:39860,59839:39872,59840:39882,59841:39865,59842:39878,59843:39887,59844:39889,59845:39890,59846:39907,59847:39906,59848:39908,59849:39892,59850:39905,59851:39994,59852:39922,59853:39921,59854:39920,59855:39957,59856:39956,59857:39945,59858:39955,59859:39948,59860:39942,59861:39944,59862:39954,59863:39946,59864:39940,59865:39982,59866:39963,59867:39973,59868:39972,59869:39969,59870:39984,59871:40007,59872:39986,59873:40006,59874:39998,59875:40026,59876:40032,59877:40039,59878:40054,59879:40056,59880:40167,59881:40172,59882:40176,59883:40201,59884:40200,59885:40171,59886:40195,59887:40198,59888:40234,59889:40230,59890:40367,59891:40227,59892:40223,59893:40260,59894:40213,59895:40210,59896:40257,59897:40255,59898:40254,59899:40262,59900:40264,59968:40285,59969:40286,59970:40292,59971:40273,59972:40272,59973:40281,59974:40306,59975:40329,59976:40327,59977:40363,59978:40303,59979:40314,59980:40346,59981:40356,59982:40361,59983:40370,59984:40388,59985:40385,59986:40379,59987:40376,59988:40378,59989:40390,59990:40399,59991:40386,59992:40409,59993:40403,59994:40440,59995:40422,59996:40429,59997:40431,59998:40445,59999:40474,6e4:40475,60001:40478,60002:40565,60003:40569,60004:40573,60005:40577,60006:40584,60007:40587,60008:40588,60009:40594,60010:40597,60011:40593,60012:40605,60013:40613,60014:40617,60015:40632,60016:40618,60017:40621,60018:38753,60019:40652,60020:40654,60021:40655,60022:40656,60023:40660,60024:40668,60025:40670,60026:40669,60027:40672,60028:40677,60029:40680,60030:40687,60032:40692,60033:40694,60034:40695,60035:40697,60036:40699,60037:40700,60038:40701,60039:40711,60040:40712,60041:30391,60042:40725,60043:40737,60044:40748,60045:40766,60046:40778,60047:40786,60048:40788,60049:40803,60050:40799,60051:40800,60052:40801,60053:40806,60054:40807,60055:40812,60056:40810,60057:40823,60058:40818,60059:40822,60060:40853,60061:40860,60062:40864,60063:22575,60064:27079,60065:36953,60066:29796,60067:20956,60068:29081}}),(function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(1),n=o(2);function a(u,p,m,g){var x;p.degree()=g/2;){var w=v,I=A;if(v=y,A=k,v.isZero())return null;y=w;for(var E=u.zero,N=v.getCoefficient(v.degree()),B=u.inverse(N);y.degree()>=v.degree()&&!y.isZero();){var _=y.degree()-v.degree(),q=u.multiply(y.getCoefficient(y.degree()),B);E=E.addOrSubtract(u.buildMonomial(_,q)),y=y.addOrSubtract(v.multiplyByMonomial(_,q))}if(k=E.multiplyPoly(A).addOrSubtract(I),y.degree()>=v.degree())return null}var $=k.getCoefficient(0);if($===0)return null;var re=u.inverse($);return[k.multiply(re),y.multiply(re)]}function s(u,p){var m=p.degree();if(m===1)return[p.getCoefficient(1)];for(var g=new Array(m),x=0,v=1;v=q&&$>=re?(E=[w,k,I],Z=E[0],ee=E[1],ae=E[2]):re>=$&&re>=q?(N=[k,w,I],Z=N[0],ee=N[1],ae=N[2]):(B=[k,I,w],Z=B[0],ee=B[1],ae=B[2]),(ae.x-ee.x)*(Z.y-ee.y)-(ae.y-ee.y)*(Z.x-ee.x)<0&&(_=[ae,Z],Z=_[0],ae=_[1]),{bottomLeft:Z,topLeft:ee,topRight:ae}}function u(k,w,I,E){var N=(l(m(k,I,E,5))/7+l(m(k,w,E,5))/7+l(m(I,k,E,5))/7+l(m(w,k,E,5))/7)/4;if(N<1)throw new Error("Invalid module size");var B=Math.round(s(k,w)/N),_=Math.round(s(k,I)/N),q=Math.floor((B+_)/2)+7;switch(q%4){case 0:q++;break;case 2:q--;break}return{dimension:q,moduleSize:N}}function p(k,w,I,E){var N=[{x:Math.floor(k.x),y:Math.floor(k.y)}],B=Math.abs(w.y-k.y)>Math.abs(w.x-k.x),_,q,$,re;B?(_=Math.floor(k.y),q=Math.floor(k.x),$=Math.floor(w.y),re=Math.floor(w.x)):(_=Math.floor(k.x),q=Math.floor(k.y),$=Math.floor(w.x),re=Math.floor(w.y));for(var Z=Math.abs($-_),ee=Math.abs(re-q),ae=Math.floor(-Z/2),ge=_<$?1:-1,ke=q0){if(it===re)break;it+=ke,ae-=Z}}for(var xe=[],me=0;me=Vr.bottom.startX&&So<=Vr.bottom.endX||An>=Vr.bottom.startX&&So<=Vr.bottom.endX||So<=Vr.bottom.startX&&An>=Vr.bottom.endX&&me[2]/(Vr.bottom.endX-Vr.bottom.startX)n});xo.length>0?xo[0].bottom=fr:I.push({top:fr,bottom:fr})}if(Uo){var Cr=pt-me[4],ha=Cr-me[3],fr={startX:ha,y:se,endX:Cr},xo=N.filter(function(Pi){return ha>=Pi.bottom.startX&&ha<=Pi.bottom.endX||Cr>=Pi.bottom.startX&&ha<=Pi.bottom.endX||ha<=Pi.bottom.startX&&Cr>=Pi.bottom.endX&&me[2]/(Pi.bottom.endX-Pi.bottom.startX)n});xo.length>0?xo[0].bottom=fr:N.push({top:fr,bottom:fr})}}},dt=-1;dt<=k.width;dt++)ze(dt);w.push.apply(w,I.filter(function(pt){return pt.bottom.y!==se&&pt.bottom.y-pt.top.y>=2})),I=I.filter(function(pt){return pt.bottom.y===se}),E.push.apply(E,N.filter(function(pt){return pt.bottom.y!==se})),N=N.filter(function(pt){return pt.bottom.y===se})},_=0;_<=k.height;_++)B(_);w.push.apply(w,I.filter(function(se){return se.bottom.y-se.top.y>=2})),E.push.apply(E,N);var q=w.filter(function(se){return se.bottom.y-se.top.y>=2}).map(function(se){var te=(se.top.startX+se.top.endX+se.bottom.startX+se.bottom.endX)/4,xe=(se.top.y+se.bottom.y+1)/2;if(k.get(Math.round(te),Math.round(xe))){var me=[se.top.endX-se.top.startX,se.bottom.endX-se.bottom.startX,se.bottom.y-se.top.y+1],ze=l(me)/me.length,dt=x({x:Math.round(te),y:Math.round(xe)},[1,1,3,1,1],k);return{score:dt,x:te,y:xe,size:ze}}}).filter(function(se){return!!se}).sort(function(se,te){return se.score-te.score}).map(function(se,te,xe){if(te>r)return null;var me=xe.filter(function(dt,pt){return te!==pt}).map(function(dt){return{x:dt.x,y:dt.y,score:dt.score+Math.pow(dt.size-se.size,2)/se.size,size:dt.size}}).sort(function(dt,pt){return dt.score-pt.score});if(me.length<2)return null;var ze=se.score+me[0].score+me[1].score;return{points:[se].concat(me.slice(0,2)),score:ze}}).filter(function(se){return!!se}).sort(function(se,te){return se.score-te.score});if(q.length===0)return null;var $=c(q[0].points[0],q[0].points[1],q[0].points[2]),re=$.topRight,Z=$.topLeft,ee=$.bottomLeft,ae=A(k,E,re,Z,ee),ge=[];ae&&ge.push({alignmentPattern:{x:ae.alignmentPattern.x,y:ae.alignmentPattern.y},bottomLeft:{x:ee.x,y:ee.y},dimension:ae.dimension,topLeft:{x:Z.x,y:Z.y},topRight:{x:re.x,y:re.y}});var ke=v(k,re),Ee=v(k,Z),Ue=v(k,ee),it=A(k,E,ke,Ee,Ue);return it&&ge.push({alignmentPattern:{x:it.alignmentPattern.x,y:it.alignmentPattern.y},bottomLeft:{x:Ue.x,y:Ue.y},topLeft:{x:Ee.x,y:Ee.y},topRight:{x:ke.x,y:ke.y},dimension:it.dimension}),ge.length===0?null:ge}t.locate=y;function A(k,w,I,E,N){var B,_,q;try{B=u(E,I,N,k),_=B.dimension,q=B.moduleSize}catch{return null}var $={x:I.x-E.x+N.x,y:I.y-E.y+N.y},re=(s(E,N)+s(E,I))/2/q,Z=1-3/re,ee={x:E.x+Z*($.x-E.x),y:E.y+Z*($.y-E.y)},ae=w.map(function(ke){var Ee=(ke.top.startX+ke.top.endX+ke.bottom.startX+ke.bottom.endX)/4,Ue=(ke.top.y+ke.bottom.y+1)/2;if(k.get(Math.floor(Ee),Math.floor(Ue))){var it=[ke.top.endX-ke.top.startX,ke.bottom.endX-ke.bottom.startX,ke.bottom.y-ke.top.y+1],se=l(it)/it.length,te=x({x:Math.floor(Ee),y:Math.floor(Ue)},[1,1,1],k),xe=te+s({x:Ee,y:Ue},ee);return{x:Ee,y:Ue,score:xe}}}).filter(function(ke){return!!ke}).sort(function(ke,Ee){return ke.score-Ee.score}),ge=re>=15&&ae.length?ae[0]:ee;return{alignmentPattern:ge,dimension:_}}})]).default})});var KDe=h(()=>{});var QDe,Hi,YX=h(()=>{"use strict";d();KDe();we();le();QDe=he('"pulsingEllipsis"'),Hi=K("qrlogin-")});function p1t({token:e,onAbort:t,...o}){let[r,n]=T(e?0:2);G(()=>()=>{r!==1&&t()},[]);let[a,s]=T(!1),l=Se(null),c=Se(new d1t({progress:"0%"})).current,u=1e3,p,m=()=>{l.current&&(c.start({progress:"100%",config:{duration:u,easing:x=>-(Math.cos(Math.PI*x)-1)/2}}),p=setTimeout(()=>{r===0&&(s(!0),mt.post({url:"/users/@me/remote-auth/finish",body:{handshake_token:e}}).then(()=>{n(1)}).catch(()=>n(2)).finally(()=>s(!1)))},u+250))},g=()=>{l.current&&(c.start({progress:"0%",config:{duration:696,easing:x=>1-Math.pow(1-x,3)}}),clearTimeout(p))};return G(()=>{let x,v=()=>{l.current?.style.setProperty("--progress",c.get().progress),x=requestAnimationFrame(v)};return r===0&&requestAnimationFrame(v),()=>cancelAnimationFrame(x)},[r]),i(be,{size:"sm",...o,title:"Verify Login"},i("div",{className:Hi("device-content")},r===1?i(f,null,i("img",{className:Hi("device-image"),src:fx.deviceImage.success,key:"img-success",draggable:!1}),i(Y,{size:"xl",weight:"bold",color:"text-strong",tag:"h1",className:Hi("device-header")},Xe("QR_CODE_LOGIN_SUCCESS")),i(Y,{size:"md",weight:"semibold",color:"text-default",style:{width:"30rem",textAlign:"center"}},Xe("QR_CODE_LOGIN_SUCCESS_FLAVOR"))):r===2?i(f,null,i("img",{className:Hi("device-image"),src:fx.deviceImage.notFound,key:"img-not_found",draggable:!1}),i(Y,{size:"xl",weight:"bold",color:"text-strong",tag:"h1",className:Hi("device-header")},Xe("QR_CODE_NOT_FOUND")),i(Y,{size:"md",weight:"semibold",color:"text-default",style:{width:"30rem"}},Xe("QR_CODE_NOT_FOUND_DESCRIPTION"))):i(f,null,i("img",{className:Hi("device-image"),src:fx.deviceImage.loading,key:"img-loaded",draggable:!1}),i(Y,{size:"xl",weight:"bold",color:"text-strong",tag:"h1",className:Hi("device-header")},Xe("QR_CODE_LOGIN_CONFIRM")),i(Y,{size:"md",weight:"semibold",color:"text-danger"},"Never scan a login QR code from another user or application."),i(de,{size:"medium",variant:"dangerPrimary",className:Hi("device-confirm"),style:{"--progress":`${u}ms`},onPointerDown:m,onPointerUp:g,ref:l,disabled:a},"Hold to confirm login"))),i("div",{className:Hi("device-footer"),style:{marginTop:"20px",display:"flex",justifyContent:"flex-end",gap:"10px"}},r===1?i(de,{onClick:o.onClose},Xe("QR_CODE_LOGIN_FINISH_BUTTON")):i(Ys,{variant:"link",onClick:o.onClose},r===2?Xe("CLOSE"):Xe("CANCEL"))))}function JX(e,t){return ce(o=>i(p1t,{...o,token:e,onAbort:t}))}var d1t,ZDe=h(()=>{"use strict";d();yt();Tt();$N();_e();le();C();YX();({Controller:d1t}=Ae("Controller"))});function f1t(){let[e,t]=T(0),[o,r]=T(null),n=Se(null),a=Se(null),s=Se({exit:l=>{n.current=l,t(0),r(null)},setPreview:(l,c)=>new Promise(u=>{if(!l)return u(r(null));let p={};l.width>l.height?(p.width=34,p.height=l.height/l.width*34):(p.height=34,p.width=l.width/l.height*34);let m;if(l instanceof HTMLImageElement?m=i("img",{src:l.src,style:{width:"100%",height:"100%"}}):m=i("video",{controls:!1,style:{width:"100%",height:"100%"},ref:g=>{g&&(g.srcObject=l.srcObject,l.paused||g.play().catch(x=>{console.error("Error playing the video:",x)}))}}),c){let g=[[c.topLeftCorner,c.bottomRightCorner],[c.topRightCorner,c.bottomLeftCorner]],x=(Math.sqrt(Math.abs(c.topLeftCorner.x-c.topRightCorner.x)**2+Math.abs(c.topLeftCorner.y-c.topRightCorner.y)**2)+Math.sqrt(Math.abs(c.topRightCorner.x-c.bottomRightCorner.x)**2+Math.abs(c.topRightCorner.y-c.bottomRightCorner.y)**2))/3/l.height,v=[];for(let y of g)for(let A=0;A<2;A++){let k=y[A],w=y[1-A],I=(Math.atan2(w.y-k.y,w.x-k.x)-Math.PI/4)*(180/Math.PI);v.push({x:k.x/l.width*100,y:k.y/l.height*100,rot:I,size:Math.min(x*p.height,7)})}r({source:m,size:p,crosses:v}),setTimeout(u,1100)}else return u(r({source:m,size:p}))})});return G(()=>(gx.qrModalOpen=!0,()=>{gx.qrModalOpen=!1}),[]),G(()=>{let l=c=>{if(c.preventDefault(),!(e!==0||!c.clipboardData)){for(let u of c.clipboardData.items)if(u.kind==="file"&&u.type.startsWith("image/")){t(1),XX(u.getAsFile(),s);break}else if(u.kind==="string"&&u.type==="text/plain"){u.getAsString(p=>{t(1);let m=p.match(JDe)?.[1];m?XDe(m,s).catch(g=>s.current.exit(g?.message)):s.current.exit(null)});break}}};return e===0&&document.addEventListener("paste",l),()=>document.removeEventListener("paste",l)},[e]),i("div",{className:Hi("modal-container")},i("div",{className:Hi("modal-filepaste",o?.source&&"modal-filepaste-preview",o?.crosses&&"modal-filepaste-crosses"),onClick:()=>e===0&&a.current?.click(),onDragEnter:l=>l.currentTarget.classList.add(Hi("modal-filepaste-drop")),onDragLeave:l=>l.currentTarget.classList.remove(Hi("modal-filepaste-drop")),onDrop:l=>{if(l.preventDefault(),l.currentTarget.classList.remove(Hi("modal-filepaste-drop")),e===0){for(let c of l.dataTransfer.files)if(c.type.startsWith("image/")){t(1),XX(c,s);break}}},role:"button",style:o?.size?{width:`${o.size.width}rem`,height:`${o.size.height}rem`}:{}},o?.source?i("div",{style:{width:"100%",height:"100%",position:"relative","--scale":o.crosses?Math.max(o.crosses[0].size*.9,1):void 0,"--offset-x":o.crosses?`${-(o.crosses.reduce((l,{x:c})=>l+c,0)/o.crosses.length-50)}%`:void 0,"--offset-y":o.crosses?`${-(o.crosses.reduce((l,{y:c})=>l+c,0)/o.crosses.length-50)}%`:void 0},className:Hi(o?.crosses&&"preview-crosses")},o.source,o.crosses?.map(({x:l,y:c,rot:u,size:p})=>i("span",{key:Hi("preview-cross"),className:Hi("preview-cross"),style:{left:`${l}%`,top:`${c}%`,"--size":`${p}rem`,"--rot":`${u}deg`}},i("img",{src:fx.cross,draggable:!1})))):e===1?i(QDe,{type:"wanderingCubes"}):n.current?i(Y,{size:"md",weight:"semibold",color:"text-danger"},n.current):i(f,null,i(Y,{size:"md",weight:"semibold",color:"text-strong"},"Drag and drop an image here, or click to select an image"),i(Y,{size:"sm",weight:"medium",color:"text-muted"},"Or paste an image from your clipboard!"),i("br",null),i(lS,null))),i("input",{type:"file",accept:"image/*",onChange:l=>{if(!(!l.target.files||e!==0)){for(let c of l.target.files)if(c.type.startsWith("image/")){t(1),XX(c,s);break}}},ref:a,style:{display:"none"}}))}var YDe,m1t,Zdn,JDe,XDe,XX,VX,VDe=h(()=>{"use strict";d();yt();ot();Fi();eV();$N();le();C();YDe=Xu(WDe());YX();ZDe();m1t=(e,t)=>{if(e>t){let o=Math.min(e,1280);return{w:o,h:t/e*o}}else{let o=Math.min(t,1280);return{h:o,w:e/t*o}}},{getVideoDeviceId:Zdn}=Ae("getVideoDeviceId"),JDe=/^https:\/\/discord\.com\/ra\/([\w-]+)$/,XDe=async(e,{current:t})=>{let o=null;try{let r=await mt.post({url:"/users/@me/remote-auth",body:{fingerprint:e}});r.ok&&r.status===200&&(o=r.body?.handshake_token)}catch{}t.setPreview(null),JX(o,()=>{t.exit(null),mt.post({url:"/users/@me/remote-auth/cancel",body:{handshake_token:o}})})},XX=(e,t)=>{let{current:o}=t,r=new FileReader;r.addEventListener("load",()=>{if(!r.result)return;let n=new Image;n.addEventListener("load",()=>{o.setPreview(n);let{w:a,h:s}=m1t(n.width,n.height);n.width=a,n.height=s;let l=document.createElement("canvas");l.width=n.width,l.height=n.height;let c=l.getContext("2d");c.drawImage(n,0,0,l.width,l.height);let{data:u,width:p,height:m}=c.getImageData(0,0,l.width,l.height),g=(0,YDe.default)(u,p,m),x=g?.data.match(JDe)?.[1];x?o.setPreview(n,g.location).then(()=>XDe(x,t).catch(v=>o.exit(v?.message))):o.exit(null),l.remove()}),n.src=r.result}),r.readAsDataURL(e)};VX=Sr(f1t,"Scan QR Code")});var g1t,gx,eV=h(()=>{"use strict";d();Jt();j();ot();Je();mu();O();_e();Be();R();C();$N();VDe();g1t=M({scanQr:{type:6,description:"Scan a QR code",component(){return et.LoginWithQR.started?i(ue,{size:ue.Sizes.SMALL,onClick:VX},Xe("USER_SETTINGS_SCAN_QR_CODE")):i(U,null,"Enable the plugin and restart your client to scan a login QR code")}}}),gx=S({name:"LoginWithQR",description:"Allows you to login to another device by scanning a login QR code, just like on mobile!",tags:["Utility"],authors:[F.nexpid],settings:g1t,patches:[{find:".clipboardData&&(",replacement:{match:/handleGlobalPaste:(\i)(?=\}\))/,replace:"handleGlobalPaste:(...args)=>!$self.qrModalOpen&&$1(...args)"}}],qrModalOpen:!1,start(){Pn.customEntries.push({key:"equicord_login_with_qr",title:Xe("USER_SETTINGS_SCAN_QR_CODE"),Component:VX,Icon:lS}),qDe()},stop(){Gl(Pn.customEntries,e=>e.key==="equicord_login_with_qr"),QX()}})});function U8(e,t){let o=0;for(let r=t-1;r>=0&&e[r]==="\\";r--)o++;return o%2===1}function x1t(e){let t=0;for(let o=0;o=2))return!0;return!1}function nPe(e){for(let t=0;tr===void 0)?null:{alignments:o}}function oV(e,t){return Array.from({length:t},(o,r)=>e[r]??"")}function nV(e){return e.trim()===""}function tPe(e,t,o){for(let r=t;r=e.length-1||o?.[t+1]||!tV(e[t+1])}function A1t(e){let t=new Array(e.length).fill(!1),o=null,r=0;for(let n=0;n=r&&l.slice(c).trim()===""&&(o=null,r=0)}return t}function k1t(e,t,o){if(t>=e.length-1||o?.[t]||o?.[t+1]||!hx(e[t])||!hx(e[t+1]))return null;let r=z8(e[t]);if(r.length<2)return null;let n=tV(e[t+1]);if(!n)return null;let a=n.alignments.length,s=[],l=t+2;for(;l0)if(nV(c)){let u=tPe(e,l+1,o);if(oPe(e,u,o)){l=u;continue}}else{let u=tPe(e,l+1,o);if(oPe(e,u,o)){let p=s[s.length-1],m=a-1;p[m]=`${p[m]} ${c.trim()}`.trim(),l++;continue}}break}for(;l>t+2&&nV(e[l-1]);)l--;return s.length===0?null:{table:{header:oV(r,a),alignments:n.alignments,rows:s,startLine:t,endLine:l-1},nextLineIndex:l}}function C1t(e,t,o){if(o?.[t]||!hx(e[t])||!ePe(e[t]))return null;let n=z8(e[t]).length,a=[],s=t;if(n<3)return null;for(;snull),rows:a,startLine:t,endLine:s-1},nextLineIndex:s}}function rV(e){return e.endsWith(`\r `)?e.slice(0,-2):e.endsWith(` `)||e.endsWith("\r")?e.slice(0,-1):e}function T1t(e){let t=[],o=0;for(let r=0;rr===t-1?rV(o.raw):o.raw).join("")}function rPe(e){let t=T1t(e),o=t.map(n=>n.text),r=A1t(o);for(let n=0;nc.raw).join(""),l=I1t(t.slice(n),a.nextLineIndex-n);return{raw:`${s}${l}`,leadingMarkdown:s,tableRaw:l,table:a.table}}return null}var h1t,iPe=h(()=>{"use strict";d();h1t=/^:?-{3,}:?$/});var aPe,sPe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/markdownTables/styles.css",{name:"src/equicordplugins/markdownTables/styles.css",source:`.vc-markdownTables-root { --vc-markdown-tables-ease-out: cubic-bezier(0.23, 1, 0.32, 1); display: flex; flex-direction: column; gap: 4px; max-width: 100%; margin: 0.25rem 0; } .vc-markdownTables-toolbar { display: inline-flex; align-self: flex-start; gap: 1px; padding: 1px; border: 1px solid transparent; border-radius: 4px; background: transparent; } .vc-markdownTables-toggle { min-width: 38px; padding: 1px 6px; border: 0; border-radius: 3px; color: var(--text-muted); font: inherit; font-size: 0.75rem; line-height: 1.125rem; background: transparent; cursor: pointer; transition: color 140ms var(--vc-markdown-tables-ease-out), background-color 140ms var(--vc-markdown-tables-ease-out), transform 140ms var(--vc-markdown-tables-ease-out); } .vc-markdownTables-toggle:active { transform: scale(0.98); } .vc-markdownTables-toggle:focus-visible { outline: 1px solid var(--text-muted); outline-offset: 2px; } .vc-markdownTables-toggle-active { color: var(--text-normal); background: var(--background-modifier-hover); } @media (hover: hover) and (pointer: fine) { .vc-markdownTables-toggle:hover { color: var(--text-normal); background: var(--background-modifier-hover); } } .vc-markdownTables-rawBlock { max-width: 100%; } .vc-markdownTables-scrollFrame { --vc-markdown-tables-mask-size: 30px; --vc-markdown-tables-fade-color: var(--background-primary); --vc-markdown-tables-fade-mid: color-mix(in srgb, var(--vc-markdown-tables-fade-color) 58%, transparent); --vc-markdown-tables-fade-soft: color-mix(in srgb, var(--vc-markdown-tables-fade-color) 24%, transparent); position: relative; max-width: 100%; border: 1px solid var(--background-modifier-accent); border-radius: 4px; background: transparent; overflow: hidden; } .vc-markdownTables-scrollFrame::before, .vc-markdownTables-scrollFrame::after { position: absolute; top: 0; bottom: 0; z-index: 1; width: var(--vc-markdown-tables-mask-size); content: ""; opacity: 0; pointer-events: none; transition: opacity 160ms var(--vc-markdown-tables-ease-out), width 160ms var(--vc-markdown-tables-ease-out); } .vc-markdownTables-scrollFrame::before { left: 0; background: linear-gradient( to right, var(--vc-markdown-tables-fade-color) 0, var(--vc-markdown-tables-fade-mid) 42%, var(--vc-markdown-tables-fade-soft) 70%, transparent 100% ); } .vc-markdownTables-scrollFrame::after { right: 0; background: linear-gradient( to left, var(--vc-markdown-tables-fade-color) 0, var(--vc-markdown-tables-fade-mid) 42%, var(--vc-markdown-tables-fade-soft) 70%, transparent 100% ); } .vc-markdownTables-mask-left::before, .vc-markdownTables-mask-right::after { opacity: 1; } .vc-markdownTables-scroll-left::before, .vc-markdownTables-scroll-right::after { width: calc(var(--vc-markdown-tables-mask-size) + 6px); } .vc-markdownTables-scroll { max-width: 100%; overflow-x: auto; background: transparent; mask-repeat: no-repeat; mask-size: 100% 100%; scrollbar-width: thin; scrollbar-color: gray transparent; } .vc-markdownTables-mask-left .vc-markdownTables-scroll { mask-image: linear-gradient( to right, transparent 0, black var(--vc-markdown-tables-mask-size), black 100% ); } .vc-markdownTables-mask-right .vc-markdownTables-scroll { mask-image: linear-gradient( to right, black 0, black calc(100% - var(--vc-markdown-tables-mask-size)), transparent 100% ); } .vc-markdownTables-mask-left.vc-markdownTables-mask-right .vc-markdownTables-scroll { mask-image: linear-gradient( to right, transparent 0, black var(--vc-markdown-tables-mask-size), black calc(100% - var(--vc-markdown-tables-mask-size)), transparent 100% ); } .vc-markdownTables-table { width: max-content; min-width: 100%; border-collapse: collapse; color: inherit; font-size: 0.875rem; line-height: 1.2rem; } .vc-markdownTables-table th, .vc-markdownTables-table td { max-width: 440px; padding: 5px 8px; border-right: 1px solid var(--background-modifier-accent); border-bottom: 1px solid var(--background-modifier-accent); vertical-align: top; white-space: pre-wrap; } .vc-markdownTables-table th { font-weight: 600; background: var(--background-modifier-hover); } @media (hover: hover) and (pointer: fine) { .vc-markdownTables-table tbody tr:hover { background: var(--background-modifier-hover); } } .vc-markdownTables-table th:last-child, .vc-markdownTables-table td:last-child { border-right: 0; } .vc-markdownTables-table tr:last-child td { border-bottom: 0; } @supports (color: color-mix(in srgb, white, black)) { .vc-markdownTables-scrollFrame { border-color: color-mix(in srgb, currentcolor 14%, transparent); } .vc-markdownTables-toolbar { border-color: color-mix(in srgb, currentcolor 8%, transparent); } .vc-markdownTables-toggle-active { color: color-mix(in srgb, currentcolor 86%, transparent); background: color-mix(in srgb, currentcolor 7%, transparent); } .vc-markdownTables-toggle:focus-visible { outline-color: color-mix(in srgb, currentcolor 44%, transparent); } @media (hover: hover) and (pointer: fine) { .vc-markdownTables-toggle:hover { background: color-mix(in srgb, currentcolor 6%, transparent); } .vc-markdownTables-toggle-active:hover { background: color-mix(in srgb, currentcolor 9%, transparent); } } .vc-markdownTables-table th, .vc-markdownTables-table td { border-right-color: color-mix(in srgb, currentcolor 12%, transparent); border-bottom-color: color-mix(in srgb, currentcolor 12%, transparent); } .vc-markdownTables-table th { background: color-mix(in srgb, currentcolor 4%, transparent); } @media (hover: hover) and (pointer: fine) { .vc-markdownTables-table tbody tr:hover { background: color-mix(in srgb, currentcolor 4%, transparent); } } .vc-markdownTables-scroll { scrollbar-color: color-mix(in srgb, currentcolor 24%, transparent) transparent; } } .vc-markdownTables-scrollFrame:is(.theme-dark *) { --vc-markdown-tables-fade-color: color-mix(in srgb, var(--background-primary) 88%, black); } .vc-markdownTables-scrollFrame:is(.theme-light *) { --vc-markdown-tables-fade-color: color-mix(in srgb, var(--background-primary) 88%, white); } .vc-markdownTables-scroll::-webkit-scrollbar { width: 8px; height: 8px; } .vc-markdownTables-scroll::-webkit-scrollbar-thumb { border-radius: 999px; background-color: gray; } @supports (color: color-mix(in srgb, white, black)) { .vc-markdownTables-scroll::-webkit-scrollbar-thumb { background-color: color-mix(in srgb, currentcolor 24%, transparent); } } .vc-markdownTables-scroll::-webkit-scrollbar-track, .vc-markdownTables-scroll::-webkit-scrollbar-corner { background: transparent; } .vc-markdownTables-align-left { text-align: left; } .vc-markdownTables-align-center { text-align: center; } .vc-markdownTables-align-right { text-align: right; } `,classNames:{},dom:null});aPe="src/equicordplugins/markdownTables/styles.css"});function lPe(e){if(e==="left")return _u("align-left");if(e==="center")return _u("align-center");if(e==="right")return _u("align-right")}function D1t(e,t){return Object.assign([e.raw],{index:0,input:t,groups:void 0,markdownTable:e})}function sV(e,t,o){return e.map(r=>t(r,o))}function P1t({output:e,outputState:t,table:o}){let{hideToggle:r}=dPe.use(E1t);return i("div",{className:_u("root")},r?i(pPe,{output:e,outputState:t,table:o}):i(M1t,{output:e,outputState:t,table:o}))}function M1t({output:e,outputState:t,table:o}){let[r,n]=T(!1);return i(f,null,i("div",{className:_u("toolbar"),role:"group","aria-label":"Markdown table view"},i("button",{"aria-pressed":!r,className:_u("toggle",{"toggle-active":!r}),onClick:a=>{a.preventDefault(),a.stopPropagation(),n(!1)},type:"button"},"Table"),i("button",{"aria-pressed":r,className:_u("toggle",{"toggle-active":r}),onClick:a=>{a.preventDefault(),a.stopPropagation(),n(!0)},type:"button"},"Raw")),r?i("div",{className:_u("rawBlock")},i(Ps,{content:o.raw,lang:"markdown"})):i(pPe,{output:e,outputState:t,table:o}))}function pPe({output:e,outputState:t,table:o}){let r=Se(null),n=Se(0),a=Se(0),s=Se(0),[l,c]=T({left:!1,right:!1,direction:null});return Va(()=>{let u=r.current;if(!u)return;let p=u;function m(A,k=!1){let w=Math.max(0,A.scrollWidth-A.clientWidth),I=Math.min(Math.max(A.scrollLeft,0),w),E=null;k&&I>n.current?E="right":k&&I{let B={left:I>1,right:w-I>1,direction:E??N.direction};return!B.left&&!B.right&&(B.direction=null),N.left===B.left&&N.right===B.right&&N.direction===B.direction?N:B}),E&&(window.clearTimeout(s.current),s.current=window.setTimeout(()=>{c(N=>N.direction?{...N,direction:null}:N)},450))}function g(A=!1){window.cancelAnimationFrame(a.current),a.current=window.requestAnimationFrame(()=>m(p,A))}function x(){g(!0)}function v(){g()}let y=new ResizeObserver(()=>g());return y.observe(p),p.firstElementChild&&y.observe(p.firstElementChild),m(p),p.addEventListener("scroll",x,{passive:!0}),window.addEventListener("resize",v),()=>{y.disconnect(),p.removeEventListener("scroll",x),window.removeEventListener("resize",v),window.cancelAnimationFrame(a.current),window.clearTimeout(s.current)}},[]),i("div",{className:_u("scrollFrame",{"mask-left":l.left,"mask-right":l.right,"scroll-left":l.direction==="left","scroll-right":l.direction==="right"})},i("div",{className:_u("scroll"),ref:r},i("table",{className:_u("table")},o.header.length>0&&i("thead",null,i("tr",null,o.header.map((u,p)=>i("th",{className:lPe(o.alignments[p]),key:p,scope:"col"},sV(u,e,t))))),i("tbody",null,o.rows.map((u,p)=>i("tr",{key:p},u.map((m,g)=>i("td",{className:lPe(o.alignments[g]),key:g},sV(m,e,t)))))))))}function cPe(e,t,o){let r={...o,inline:!0};return e.map(n=>t(n,r))}function N1t(e){return e.inline&&!e.messageId}function mPe(e){return{order:e,match(t,o){if(N1t(o))return null;let r=rPe(t);return r?D1t(r,t):null},parse(t,o,r){let n=t.markdownTable;return{before:n.leadingMarkdown?o(n.leadingMarkdown,r):[],raw:n.tableRaw,alignments:n.table.alignments,header:cPe(n.table.header,o,r),rows:n.table.rows.map(a=>cPe(a,o,r))}},react(t,o,r){return i(B1t,{node:t,output:o,state:r})}}}function uPe(e){window.setTimeout(()=>R1t(e),0)}function R1t(e){if(!aV)return;let t=e.defaultRules;if(!t||t[iV])return;GN=t;let o=typeof t.paragraph?.order=="number"?t.paragraph.order:1;t[iV]=mPe(o-.5)}var iV,_u,dPe,E1t,aV,GN,B1t,HN,fPe=h(()=>{"use strict";d();j();bd();Pe();O();we();R();le();C();iPe();sPe();iV="markdownTable",_u=K("vc-markdownTables-"),dPe=M({hideToggle:{type:3,default:!0,description:"Hide the Table/Raw toggle and always show rendered tables."}}),E1t=["hideToggle"],aV=!1,GN=null;B1t=H.wrap(function({node:t,output:o,state:r}){return i(f,null,sV(t.before,o,r),i(P1t,{output:o,outputState:r,table:t}))},{noop:!0});HN=S({name:"MarkdownTables",description:"Render GitHub-style markdown tables in Discord messages.",tags:["Chat","Appearance"],authors:[F.yafyx],managedStyle:aPe,settings:dPe,patches:[{find:"simple-markdown: Invalid order for rule",replacement:{match:/paragraph:\{order:/,replace:"markdownTable:$self.getTableRule(),$&"}},{find:"Unknown markdown rule:",replacement:{match:/paragraph:{type:/,replace:'markdownTable:{type:"block"},$&'}}],start(){aV=!0,kt?.defaultRules&&uPe(kt),Zo("parseTopic",uPe)},stop(){aV=!1,GN&&delete GN[iV],GN=null},getTableRule(e=1){return mPe(e-.5)}})});var gPe=h(()=>{});function L1t(){return i("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"currentColor",viewBox:"0 -960 960 960"},i("path",{d:"M418-340q24 24 62 23.5t56-27.5l224-336-336 224q-27 18-28.5 55t22.5 61zm62-460q59 0 113.5 16.5T696-734l-76 48q-33-17-68.5-25.5T480-720q-133 0-226.5 93.5T160-400q0 42 11.5 83t32.5 77h552q23-38 33.5-79t10.5-85q0-36-8.5-70T766-540l48-76q30 47 47.5 100T880-406q1 57-13 109t-41 99q-11 18-30 28t-40 10H204q-21 0-40-10t-30-28q-26-45-40-95.5T80-400q0-83 31.5-155.5t86-127Q252-737 325-768.5T480-800zm7 313z"}))}var hPe,xPe=h(()=>{"use strict";d();hPe=L1t});var O1t,F1t,_1t,qN,jN,WN,vPe=h(()=>{"use strict";d();gPe();j();Pe();O();we();R();C();xPe();O1t=K("vc-media-playback-speed-"),F1t=.25,_1t=3.5,qN=zt(F1t,_1t,.25),jN=M({defaultVoiceMessageSpeed:{type:5,default:1,description:"Voice messages",markers:qN},defaultVideoSpeed:{type:5,default:1,description:"Videos",markers:qN},defaultAudioSpeed:{type:5,default:1,description:"Audios",markers:qN}}),WN=S({name:"MediaPlaybackSpeed",description:"Allows changing the (default) playback speed of media embeds",tags:["Chat","Media"],authors:[b.D3SOX],settings:jN,patches:[{find:'"--:--"',replacement:{match:/\(0,\i\.jsxs?\)\(.{0,50}\.\i,onClick:\(\).+?\}\)\}\)(?<=playbackCacheKey:\i\}=\i,(\i).+?)/,replace:"$self.renderPlaybackSpeedComponent({mediaRef:$1})"}},{find:"renderControls(){",replacement:{match:/onToggleMuted:this.toggleMuted,/,replace:"$&mediaRef:this.mediaRef,"}},{find:'AUDIO:"AUDIO"',replacement:{match:/sliderWrapperClassName:\i.\i\}\)\}\),/,replace:"$&$self.renderPlaybackSpeedComponent({mediaRef:this?.props?.mediaRef}),"}}],renderPlaybackSpeedComponent:H.wrap(({mediaRef:e})=>{let t=o=>{let r=e?.current;r&&(r.playbackRate=o)};return G(()=>{let o=e?.current;o&&(o.tagName==="AUDIO"?o.className.includes("audioElement")?o.addEventListener("play",()=>{t(jN.store.defaultVoiceMessageSpeed)},{once:!0}):t(jN.store.defaultAudioSpeed):o.tagName==="VIDEO"&&t(jN.store.defaultVideoSpeed))},[e]),i(ve,{text:"Playback speed"},o=>i("button",{...o,className:O1t("icon"),onClick:r=>{rt.openContextMenu(r,()=>i(P.Menu,{navId:"vc-playback-speed",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Playback speed control"},i(P.MenuGroup,{label:"Playback speed"},qN.map(n=>i(P.MenuItem,{key:n,id:"speed-"+n,label:`${n}x`,action:()=>t(n)})))))}},i(hPe,null)))})})});function U1t(e,t,o,r){let n=!0;e.isGroupDM()&&e.name===t.content&&(n=!1),t.author.id!==L.getCurrentUser().id&&(n=!1),document.querySelector('[class*="replyBar"]')&&(n=!1),t.attachments.length>0&&!r&&(n=!1);let a=new Date(t.timestamp);return new Date().getTime()-a.getTime()>o*1e3&&(n=!1),{should:n,content:t.content}}var yPe,KN,bPe=h(()=>{"use strict";d();j();O();R();C();yPe=M({timePeriod:{type:1,description:"The duration of bursts (in seconds).",default:3},shouldMergeWithAttachment:{type:3,description:"Should the message be merged if the last message has an attachment?",default:!1},useSpace:{type:3,description:"Whether to add a space between messages when merging instead of new lines.",default:!1}}),KN=S({name:"MessageBurst",description:"Merges messages sent within a time period with your previous sent message if no one else sends a message before you.",dependencies:["MessagePopoverAPI"],tags:["Chat"],authors:[F.port22exposed],settings:yPe,onBeforeMessageSend(e,t){let o=lt.getMessages(e)._map;if(!o)return;let r=Object.entries(o),[n,a]=r[r.length-1],s=W.getChannel(e),{should:l,content:c}=U1t(s,a,this.settings.store.timePeriod,this.settings.store.shouldMergeWithAttachment);if(l){let u=yPe.store.useSpace?" ":` `,p=c+u+t.content;fo.editMessage(e,n,{content:p}),t.content=""}}})});var SPe=h(()=>{});var xx,lV,cV,wPe=h(()=>{"use strict";d();j();R();xx=M({renderType:{type:4,description:"How to render colors",options:[{label:"Text color",value:1,default:!0},{label:"Block nearby",value:0},{label:"Background color",value:2}]},enableShortHexCodes:{type:3,description:"Enable 3 char hex-code like #39f",default:!0,restartNeeded:!0},blockView:{type:4,disabled:()=>xx.store.renderType!==0,description:"Where to display colored block",options:[{label:"Right side",value:1,default:!0},{label:"Left side",value:0},{label:"Both sides",value:2}]}}),lV=e=>new RegExp(e.replaceAll("\\f","[+-]?([0-9]*[.])?[0-9]+").replaceAll("\\c","(?:,|\\s)").replaceAll("\\v","\\s*?\\d+?\\s*?"),"g"),cV=[{reg:/rgb\(\v\c\v\c\v\)/g,type:0},{reg:/rgba\(\v\c\v\c\v(\c|\/?)\s*\f\)/g,type:1},{reg:/hsl\(\v°?\c\s*?\d+%?\s*?\c\s*?\d+%?\s*?\)/g,type:3}].map(e=>(e.reg=lV(e.reg.source),e))});function G1t(e,t){switch(e=e.toLowerCase().trim().replaceAll(/(\s|,)+/g," "),t){case 0:return e;case 1:return e.includes("/")?e:e.replaceAll(lV(/\f(?=\s*?\))/.source),"/$&");case 2:return e[0]==="#"?e:`#${e}`;case 3:return e.replace("\xB0","")}}var APe,QN,kPe,z1t,$1t,CPe=h(()=>{"use strict";d();SPe();Pe();O();R();wPe();APe=["r","h","#"].flatMap(e=>[e,e.toUpperCase()]),QN=S({authors:[F.Hen],name:"MessageColors",description:"Displays color codes like #FF0042 inside of messages",tags:["Appearance","Chat"],settings:xx,patches:[{find:"roleMention:{order:",group:!0,replacement:{match:/roleMention:\{order:(\i\.\i\.order)/,replace:"color:$self.getColor($1),$&"}},{find:".defaultRules.text,match",replacement:{match:/\$\)\//,replace:APe.join("|")+"|$&"}},{find:"parseInlineCodeChildContent:",replacement:{match:/parseInlineCodeChildContent:/,replace:"isInsideOfLink:true,$&"}},{find:"Unknown markdown rule:",group:!0,replacement:{match:/roleMention:{type:/,replace:'color:{type:"inlineObject"},$&'}}],start(){let e=xx.store.enableShortHexCodes?"{1,2}":"{2}";cV.push({reg:new RegExp("#(?:[0-9a-fA-F]{3})"+e,"g"),type:2})},startAt:"Init",getColor(e){let t=cV.map(r=>r.reg.source).join("|"),o=new RegExp(`^(${t})`,"i");return{order:e,requiredFirstCharacters:APe,match(r){return o.exec(r)},parse(r,n,a){if(!a.messageId||a.isInsideOfLink)return{type:"text",content:r[0]};let s=r[0];try{let l=$1t(s);return{type:"color",colorType:l,color:G1t(s,l),text:s}}catch(l){return console.error(l),{type:"text",content:r[0]}}},react:H.wrap(({text:r,colorType:n,color:a})=>{if(xx.store.renderType===1)return i("span",{style:{color:a}},r);let s={"--color":a};if(xx.store.renderType===2){let u=`vc-color-bg ${z1t(a,n)?"":"vc-color-bg-invert"}`;return i("span",{className:u,style:s},r)}let l="2px";switch(xx.store.blockView){case 0:return s.marginRight=l,i(f,null,i("span",{className:"vc-color-block",style:s}),r);case 1:return s.marginLeft=l,i(f,null,r,i("span",{className:"vc-color-block",style:s}));case 2:return s.marginLeft=l,s.marginRight=l,i(f,null,i("span",{className:"vc-color-block",style:s}),r,i("span",{className:"vc-color-block",style:s}))}},{fallback:r=>{let n=r.children;return i(f,null,n.props?.text)}})}}}),kPe=(e,t,o)=>.2126*e+.7152*t+.0722*o,z1t=(e,t)=>{switch(t){case 1:case 0:{let r=e.match(/\d+/g);return kPe(+r[0],+r[1],+r[2])<115}case 2:{e=e.substring(1),e.length===3&&(e=e.split("").flatMap(c=>[c,c]).join(""));let r=parseInt(e,16),n=r>>16&255,a=r>>8&255,s=r>>0&255;return kPe(n,a,s)<115}case 3:return+e.match(/\d+/g)[2]<115/255*100}},$1t=e=>{if(e=e.toLowerCase().trim(),e.startsWith("#"))return 2;if(e.startsWith("hsl"))return 3;if(e.startsWith("rgba"))return 1;if(e.startsWith("rgb"))return 0;throw new Error(`Can't resolve color type of ${e}`)}});function IPe(){return i("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},i("path",{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z"}))}function j1t(e){let o=new Date().getTime()-e.getTime(),r=Math.floor(o/1e3),n=Math.floor(r/60),a=Math.floor(n/60),s=Math.floor(a/24);return s>0?`${s} day${s>1?"s":""} ago`:a>0?`${a} hour${a>1?"s":""} ago`:n>0?`${n} minute${n>1?"s":""} ago`:"just now"}function TPe(e){e.channelId&&e.channelId!==Zy&&(Zy=e.channelId,Og={channelId:e.channelId,startTime:performance.now()})}function ZN(e){if(!Og||e.channelId!==Og.channelId||YN.get(Og.channelId))return;let r=performance.now()-Og.startTime;YN.set(Og.channelId,{time:r,timestamp:new Date}),Og=null}var Og,Zy,YN,uV,H1t,JN,EPe=h(()=>{"use strict";d();Ba();j();O();_e();R();C();Og=null,Zy=null,YN=new Map,uV=M({showIcon:{type:3,description:"Show fetch time icon in message bar",default:!0},showMs:{type:3,description:"Show milliseconds in timing",default:!0},iconColor:{type:0,description:"Icon color (CSS color value)",default:"#00d166"}}),H1t=({isMainChat:e})=>{let{showMs:t,iconColor:o}=uV.use(["showMs","iconColor"]);if(!e||!uV.store.showIcon||!Zy)return null;let r=YN.get(Zy);if(!r)return null;let{time:n,timestamp:a}=r,s=t?`${Math.round(n)}ms`:`${Math.round(n/1e3)}s`;if(!t&&Math.round(n/1e3)===0)return null;let l=j1t(a);return i(Un,{tooltip:`Messages loaded in ${Math.round(n)}ms (${l})`,onClick:()=>{}},i("div",{style:{display:"flex",alignItems:"center",gap:"4px"}},IPe(),i("span",{style:{fontSize:"12px",color:o,fontWeight:"500"}},s)))};JN=S({name:"MessageFetchTimer",description:"Shows how long it took to fetch messages for the current channel",dependencies:["ChatInputButtonAPI"],tags:["Chat","Utility"],authors:[F.GroupXyz],settings:uV,chatBarButton:{icon:IPe,render:H1t},start(){Q.subscribe("CHANNEL_SELECT",TPe),Q.subscribe("LOAD_MESSAGES_SUCCESS",ZN),Q.subscribe("MESSAGE_CREATE",ZN);let e=zo();e&&(Zy=e.id)},stop(){Q.unsubscribe("CHANNEL_SELECT",TPe),Q.unsubscribe("LOAD_MESSAGES_SUCCESS",ZN),Q.unsubscribe("MESSAGE_CREATE",ZN),Og=null,YN.clear(),Zy=null}})});var DPe=h(()=>{});function dV(e,t,o,r){return o?i(ve,{tooltipClassName:"c98-message-link-tooltip",text:i(H,null,i(K1t,{channelId:r,messageId:o}))},({onMouseEnter:n,onMouseLeave:a})=>i(e,{...t,onMouseEnter:n,onMouseLeave:a})):i(e,{...t})}function K1t({channelId:e,messageId:t}){let o=W.getChannel(e),r=Q1t(e,t),n=q1t.useSetting(),a=Yy.store.display==="compact"?!0:Yy.store.display==="cozy"?!1:n;return r?i(W1t,{id:`message-link-tooltip-${t}`,message:r,channel:o,subscribeToComponentDispatch:!1,compact:a}):i("span",null,"Loading...")}function Q1t(e,t){let o=ye([lt],()=>lt.getMessage(e,t)),[r,n]=T(o);return G(()=>{r==null&&(async()=>{let s=(await mt.get({url:Gt.Endpoints.MESSAGES(e),query:{limit:1,around:t},retries:2})).body[0],l=lt.getMessages(e).receiveMessage(s).get(t);n(l)})()}),r}var q1t,W1t,Yy,XN,PPe=h(()=>{"use strict";d();DPe();j();_a();Pe();O();R();le();C();q1t=tn("textAndImages","messageDisplayCompact"),W1t=he("isFirstMessageInForumPost","trackAnnouncementViews"),Yy=M({onLink:{description:"Show tooltip when hovering over message links",type:3,default:!0,restartNeeded:!0},onReply:{description:"Show tooltip when hovering over message replies",type:3,default:!0,restartNeeded:!0},onForward:{description:"Show tooltip when hovering over forwarded messages",type:3,default:!0,restartNeeded:!0},display:{description:"Display style",type:4,options:[{label:"Same as message",value:"auto",default:!0},{label:"Compact",value:"compact"},{label:"Cozy",value:"cozy"}]}}),XN=S({name:"MessageLinkTooltip",description:"Adds a tooltip with a message preview when hovering over message links, replies, and forwarded messages.",tags:["Appearance","Chat"],authors:[b.Kyuuhachi],settings:Yy,patches:[{find:'"channelMention",children:[null',replacement:{match:/(?<=\.jsxs\)\()(\i\.\i),\{(?=role:"link")/,replace:"$self.MentionTooltip,{Component:$1,vcProps:arguments[0],"},predicate:()=>Yy.store.onLink},{find:"#{intl::REPLY_QUOTE_MESSAGE_NOT_LOADED}",replacement:{match:/(\i\.\i),\{(?=className:\i\(\)\(\i\.\i,\i\.\i)/g,replace:"$self.ReplyTooltip,{Component:$1,vcProps:arguments[0],"},predicate:()=>Yy.store.onReply},{find:"#{intl::MESSAGE_FORWARDED}",replacement:{match:/(\i\.\i),\{(?=className:\i\.\i,onClick:\i)/g,replace:"$self.ForwardTooltip,{Component:$1,vcProps:arguments[0],"},predicate:()=>Yy.store.onForward}],MentionTooltip({Component:e,vcProps:t,...o}){return dV(e,o,t.messageId,t.channelId)},ReplyTooltip({Component:e,vcProps:t,...o}){let r=t.baseMessage.messageReference;return dV(e,o,r?.message_id,r?.channel_id)},ForwardTooltip({Component:e,vcProps:t,...o}){let r=t.message.messageReference;return dV(e,o,r?.message_id,r?.channel_id)}})});var MPe=h(()=>{});function Z1t(){return NPe||(NPe=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Y1t(){return BPe||(BPe=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}function J1t(e){let t=new Promise((o,r)=>{let n=()=>{e.removeEventListener("success",a),e.removeEventListener("error",s)},a=()=>{o(vx(e.result)),n()},s=()=>{r(e.error),n()};e.addEventListener("success",a),e.addEventListener("error",s)});return VN.set(t,e),t}function X1t(e){if(gV.has(e))return;let t=new Promise((o,r)=>{let n=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",s),e.removeEventListener("abort",s)},a=()=>{o(),n()},s=()=>{r(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",a),e.addEventListener("error",s),e.addEventListener("abort",s)});gV.set(e,t)}function FPe(e){hV=e(hV)}function V1t(e){return Y1t().includes(e)?function(...t){return e.apply(xV(this),t),vx(this.request)}:function(...t){return vx(e.apply(xV(this),t))}}function evt(e){return typeof e=="function"?V1t(e):(e instanceof IDBTransaction&&X1t(e),fV(e,Z1t())?new Proxy(e,hV):e)}function vx(e){if(e instanceof IDBRequest)return J1t(e);if(pV.has(e))return pV.get(e);let t=evt(e);return t!==e&&(pV.set(e,t),VN.set(t,e)),t}function _Pe(e,t,{blocked:o,upgrade:r,blocking:n,terminated:a}={}){let s=indexedDB.open(e,t),l=vx(s);return r&&s.addEventListener("upgradeneeded",c=>{r(vx(s.result),c.oldVersion,c.newVersion,vx(s.transaction),c)}),o&&s.addEventListener("blocked",c=>o(c.oldVersion,c.newVersion,c)),l.then(c=>{a&&c.addEventListener("close",()=>a()),n&&c.addEventListener("versionchange",u=>n(u.oldVersion,u.newVersion,u))}).catch(()=>{}),l}function RPe(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(mV.get(t))return mV.get(t);let o=t.replace(/FromIndex$/,""),r=t!==o,n=ovt.includes(o);if(!(o in(r?IDBIndex:IDBObjectStore).prototype)||!(n||tvt.includes(o)))return;let a=async function(s,...l){let c=this.transaction(s,n?"readwrite":"readonly"),u=c.store;return r&&(u=u.index(l.shift())),(await Promise.all([u[o](...l),n&&c.done]))[0]};return mV.set(t,a),a}async function*ivt(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;t=t;let o=new Proxy(t,rvt);for(UPe.set(o,t),VN.set(o,xV(t));t;)yield o,t=await(vV.get(o)||t.continue()),vV.delete(o)}function OPe(e,t){return t===Symbol.asyncIterator&&fV(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&fV(e,[IDBIndex,IDBObjectStore])}var fV,NPe,BPe,gV,pV,VN,hV,xV,tvt,ovt,mV,nvt,LPe,vV,UPe,rvt,zPe=h(()=>{d();fV=(e,t)=>t.some(o=>e instanceof o);gV=new WeakMap,pV=new WeakMap,VN=new WeakMap;hV={get(e,t,o){if(e instanceof IDBTransaction){if(t==="done")return gV.get(e);if(t==="store")return o.objectStoreNames[1]?void 0:o.objectStore(o.objectStoreNames[0])}return vx(e[t])},set(e,t,o){return e[t]=o,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};xV=e=>VN.get(e);tvt=["get","getKey","getAll","getAllKeys","count"],ovt=["put","add","delete","clear"],mV=new Map;FPe(e=>({...e,get:(t,o,r)=>RPe(t,o)||e.get(t,o,r),has:(t,o)=>!!RPe(t,o)||e.has(t,o)}));nvt=["continue","continuePrimaryKey","advance"],LPe={},vV=new WeakMap,UPe=new WeakMap,rvt={get(e,t){if(!nvt.includes(t))return e[t];let o=LPe[t];return o||(o=LPe[t]=function(...r){vV.set(this,UPe.get(this)[t](...r))}),o}};FPe(e=>({...e,get(t,o,r){return OPe(t,o)?ivt:e.get(t,o,r)},has(t,o){return OPe(t,o)||e.has(t,o)}}))});var Jy,$Pe,Xy=h(()=>{"use strict";d();Jy="savedImages",$Pe="MessageLoggerIDB"});function Vy(e){let t=new Map,o=(...r)=>{let n=JSON.stringify(r);if(t.has(n))return t.get(n);let a=e(...r);return t.set(n,a),a};return o.clear=()=>t.clear(),o}var eB=h(()=>{"use strict";d()});function eb(e){return W.getChannel(e)?.guild_id}function jPe(e,t){let o=e.length;for(;o--;)if(t(e[o],o,e))return o;return-1}function qPe(){return Object.values(VencordNative.pluginHelpers).find(e=>e.messageLoggerEnhancedUniqueIdThingyIdkMan)}var avt,svt,GPe,tb,lvt,HPe,$8,tB,G8,yV=h(()=>{"use strict";d();le();C();Fg();Xy();np();eB();avt=qn(e=>e?.prototype?.isEdited),svt=qn(e=>e?.prototype?.getAvatarURL),GPe=Oe('"embed_"),');tb=e=>e?.ghostPinged||e?.deleted&&lvt(e),lvt=e=>e&&!!(e.mention_everyone||e.mentions?.find(t=>(typeof t=="string"?t:t.id)===L.getCurrentUser().id)),HPe=e=>{if(tb(e))return"GHOST_PINGED";if(e.deleted)return"DELETED";if(e.editHistory?.length)return"EDITED";throw new Error("Unknown message status")};$8=e=>new Date(e),tB=e=>(e.timestamp&&(e.timestamp=$8(e.timestamp)),e.editedTimestamp&&(e.editedTimestamp=$8(e.editedTimestamp)),e.embeds&&(e.embeds=e.embeds.map(t=>GPe(e.channel_id,e.id,t))),e),G8=Vy(e=>{if(!e?.message)return null;let t=new avt(e.message);t.timestamp=$8(t.timestamp);let o=t.editHistory?.map(tB);return o&&o.length>0&&(t.editHistory=o),t.editedTimestamp&&(t.editedTimestamp=$8(t.editedTimestamp)),t.firstEditTimestamp&&(t.firstEditTimestamp=$8(t.firstEditTimestamp)),t.author=L.getUser(t.author.id)??new svt(t.author),t.author.nick=t.author.globalName??t.author.username,t.embeds=t.embeds.map(r=>GPe(t.channel_id,t.id,r)),t.poll&&(t.poll.expiry=bi(t.poll.expiry)),t.messageSnapshots&&t.messageSnapshots.map(r=>tB(r.message)),t})});function j8(e){delete e.customRenderedContent,delete e.__messageloggerDiff,delete e.__messageloggerDiffKey,delete e.__messageloggerAggregated,delete e.__messageloggerLastAppliedKey}function H8(e,t=!0){let o=typeof e.toJS=="function"?JSON.parse(JSON.stringify(e.toJS())):{...e};return j8(o),t&&(o.author.phone=void 0,o.author.email=void 0),o.ghostPinged=o.mentioned??tb(e),o.guildId=o.guild_id??eb(o.channel_id),o.embeds=(o.embeds??[]).map(cvt),o.deleted=o.deleted??!1,o.deletedTimestamp=o.deleted?new Date().toISOString():void 0,o.editHistory=o.editHistory??[],o.type===19&&(o.message_reference=e.message_reference||e.messageReference,o.message_reference&&(e.referenced_message?o.referenced_message=H8(e.referenced_message):lt.getMessage(o.message_reference.channel_id,o.message_reference.message_id)&&(o.referenced_message=H8(lt.getMessage(o.message_reference.channel_id,o.message_reference.message_id))))),o}function WPe(e){let t=H8(e,!1);return t.ourCache=!0,t}function cvt(e){if(!e.id)return e;let t={};return typeof e.rawTitle=="string"&&(t.title=e.rawTitle),typeof e.rawDescription=="string"&&(t.description=e.rawDescription),typeof e.referenceId<"u"&&(t.reference_id=e.referenceId),typeof e.type<"u"&&(t.type=e.type),typeof e.url<"u"&&(t.url=e.url),typeof e.provider=="object"&&(t.provider={name:e.provider.name,url:e.provider.url}),typeof e.footer=="object"&&(t.footer={text:e.footer.text,icon_url:e.footer.iconURL,proxy_icon_url:e.footer.iconProxyURL}),typeof e.author=="object"&&(t.author={name:e.author.name,url:e.author.url,icon_url:e.author.iconURL,proxy_icon_url:e.author.iconProxyURL}),typeof e.timestamp=="object"&&e.timestamp._isAMomentObject&&(t.timestamp=e.timestamp.milliseconds()),typeof e.thumbnail=="object"&&(typeof e.thumbnail.proxyURL=="string"||typeof e.thumbnail.url=="string"&&!e.thumbnail.url.endsWith("?format=jpeg"))&&(t.thumbnail={url:e.thumbnail.url,proxy_url:typeof e.thumbnail.proxyURL=="string"?e.thumbnail.proxyURL.split("?format")[0]:void 0,width:e.thumbnail.width,height:e.thumbnail.height}),typeof e.image=="object"&&(t.image={url:e.image.url,proxy_url:e.image.proxyURL,width:e.image.width,height:e.image.height}),typeof e.video=="object"&&(t.video={url:e.video.url,proxy_url:e.video.proxyURL,width:e.video.width,height:e.video.height}),Array.isArray(e.fields)&&e.fields.length&&(t.fields=e.fields.map(o=>({name:o.rawName,value:o.rawValue,inline:o.inline}))),t}function SV(e){return{discriminator:e.discriminator,username:e.username,avatar:e.avatar,id:e.id,bot:e.bot,public_flags:typeof e.publicFlags<"u"?e.publicFlags:e.public_flags}}var wV=h(()=>{"use strict";d();C();np()});function AV(e,t,o,r){if(!e.length||!t?.length)return;let n=[],a=[];for(let m=0,g=e.length;mm.time-g.time),!a.length)return;let{time:s}=n[n.length-1],[{time:l}]=n,c=r?0:a.findIndex(m=>m.time>s);if(c===-1)return;let u=o?a.length-1:jPe(a,m=>m.timeg.time-m.time);for(let m=0,g=p.length;my.id===x)===-1&&v&&e.splice(m,0,v)}}function kV({channelId:e,authorId:t,guildId:o,flags:r,bot:n,ghostPinged:a,isCachedByUs:s,webhookId:l}){if(((r??0)&KPe)===KPe)return!0;e&&o==null&&(o=eb(e));let u=L.getCurrentUser().id,{ignoreUsers:p,ignoreChannels:m,ignoreGuilds:g}=Me.plugins.MessageLogger,{ignoreBots:x,ignoreSelf:v,ignoreWebhooks:y}=It.store;if(v&&t===u)return!0;if(It.store.alwaysLogDirectMessages&&W.getChannel(e??"-1")?.isDM?.())return!1;let A=It.store.alwaysLogCurrentChannel&&Fe.getChannelId()===e,k=[t,e,o],w=It.store.whitelistedIds.split(","),I=It.store.whitelistedIds.split(",").some(ge=>k.includes(ge)),E=w.includes(t),N=w.includes(e),B=w.includes(o),_=[...It.store.blacklistedIds.split(","),...(p??[]).split(","),...(m??[]).split(","),...(g??[]).split(",")],q=_.some(ge=>k.includes(ge)),$=_.includes(t),re=_.includes(e),Z=It.store.ignoreMutedGuilds,ee=It.store.ignoreMutedCategories,ae=It.store.ignoreMutedChannels;return x&&n&&!E||y&&l&&!E?!0:a||E?!1:$?!0:N?!1:re?!0:A||I?!1:!!(s&&!It.store.cacheMessagesFromServers&&o!=null&&!B||q&&(!E||!N)||o!=null&&Z&&sr.isMuted(o)||e!=null&&ee&&sr.isCategoryMuted(o,e)||e!=null&&ae&&sr.isChannelMuted(o,e))}function QPe(e,t){CV(e==="blacklistedIds"?"whitelistedIds":"blacklistedIds",t),uvt(e,t)}function uvt(e,t){let o=It.store[e]?It.store[e].split(","):[];o.includes(t)||(o.push(t),It.store[e]=o.join(","))}function CV(e,t){let o=It.store[e]?It.store[e].split(","):[],r=o.indexOf(t);r!==-1&&(o.splice(r,1),It.store[e]=o.join(","))}var bV,KPe,np=h(()=>{"use strict";d();j();C();ec();yV();wV();yV();bV=14200704e5;KPe=64});var MV={};Bt(MV,{deleteImage:()=>PV,downloadAttachment:()=>DV,getImage:()=>EV});async function EV(e,t){let o=IV.get(e)?.path;return o?vt(o,TV):await ui.getImageNative(e)}async function DV(e){let{path:t,error:o}=await ui.downloadAttachment(e);if(o||!t){pa.error("Failed to download attachment",o,t);return}return t}async function PV(e){let t=IV.get(e)?.path;if(t)return await aa(t,TV);await ui.deleteFileNative(e)}var TV,IV,NV=h(()=>{"use strict";d();Io();Be();ec();Xy();TV=a9("MessageLoggerImageData","MessageLoggerImageStore"),IV=new Map;(async()=>{try{(await BG(TV)).forEach(t=>{let o=t.toString();o.startsWith(Jy)&&IV.set(o.split("/")?.[1]?.split(".")?.[0],{attachmentId:o.split("/")?.[1]?.split(".")?.[0],path:o})})}catch(e){pa.error("Failed to get idb images",e)}})()});var LV={};Bt(LV,{cacheMessageImages:()=>BV,deleteMessageImages:()=>dvt,getAttachmentBlobUrl:()=>RV,getFileExtension:()=>ZPe,isAttachmentGoodToCache:()=>YPe});function ZPe(e){let t=e.match(/(\.[a-zA-Z0-9]+)(?:\?.*)?$/);return t?t[1]:null}function YPe(e,t){if(e.size>It.store.attachmentSizeLimitInMegabytes*1024*1024)return pa.log("Attachment too large to cache",e.filename),!1;let o=It.store.attachmentFileExtensions.trim();if(o==="")return!0;let r=o.split(",");return t.startsWith(".")&&(t=t.slice(1)),!t||!r.includes(t)?(pa.log("Attachment not in allowed file extensions",e.filename),!1):!0}async function BV(e){try{for(let t of e.attachments){let o=ZPe(t.filename??t.url)??t?.content_type?.split("/")?.[1]??".png";if(!YPe(t,o)){pa.log("skipping",t.filename);continue}t.oldUrl=t.url,t.oldProxyUrl=t.proxy_url,t?.content_type?.includes(";")||(t.url=t.proxy_url),t.proxy_url=t.url,t.fileExtension=o;let r=await DV(t);if(!r){pa.error("Failed to cache attachment",t);continue}t.path=r}}catch(t){pa.error("Error caching message images:",t)}}async function dvt(e){for(let t=0;t{"use strict";d();ec();eB();NV();RV=Vy(async e=>{let t=await EV(e.id,e.fileExtension);if(!t)return null;let o=new Blob([t]);return URL.createObjectURL(o)})});var jV={};Bt(jV,{DBMessageStatus:()=>ob,addMessageIDB:()=>GV,addMessagesBulkIDB:()=>nb,cachedMessages:()=>rp,clearMessagesIDB:()=>HV,countMessagesByStatusIDB:()=>_V,countMessagesIDB:()=>FV,db:()=>_r,deleteMessageIDB:()=>yx,deleteMessagesBulkIDB:()=>Ug,getAllMessagesIDB:()=>fvt,getDateStortedMessagesByStatusIDB:()=>nB,getMessageIDB:()=>hvt,getMessagesByChannelAndAfterTimestampIDB:()=>$V,getMessagesByStatusIDB:()=>xvt,getMessagesForChannelIDB:()=>gvt,getOlderThanTimestampForGuildsIDB:()=>q8,getOlderThanTimestampIDB:()=>XPe,getOldestMessagesIDB:()=>UV,hasMessageIDB:()=>mvt,initIDB:()=>OV,iterateAllMessagesIDB:()=>zV});async function _g(e){for(let t of e){JPe(t);for(let o of t.message.attachments){let r=await RV(o);r&&(o.url=r+"#",o.proxy_url=r+"#")}}return e}async function JPe(e){return e&&(j8(e.message),rp.set(e.message_id,e.message),e)}async function OV(){_r||(_r=await _Pe($Pe,1,{upgrade(e){let t=e.createObjectStore("messages",{keyPath:"message_id"});t.createIndex("by_channel_id","channel_id"),t.createIndex("by_status","status"),t.createIndex("by_timestamp","message.timestamp"),t.createIndex("by_timestamp_and_message_id",["channel_id","message.timestamp"])}}))}async function mvt(e){return rp.has(e)||await _r.count("messages",e)>0}async function FV(){return _r.count("messages")}async function _V(e){return _r.countFromIndex("messages","by_status",e)}async function fvt(){return _g(await _r.getAll("messages"))}async function gvt(e){return _g(await _r.getAllFromIndex("messages","by_channel_id",e))}async function hvt(e){return JPe(await _r.get("messages",e))}async function xvt(e){return _g(await _r.getAllFromIndex("messages","by_status",e))}async function UV(e){return _g(await _r.getAllFromIndex("messages","by_timestamp",void 0,e))}async function*zV(e=100){let t;for(;;){let o=[],r=_r.transaction("messages"),n=t?IDBKeyRange.lowerBound(t,!0):void 0,a=await r.store.openCursor(n);for(;a&&o.length{let{message:a}=n,l=W.getChannel(a.channel_id)?.guild_id!=null,c=o&&t&&a.channel_id===t;return l&&!c})}async function nB(e,t,o){let r=_r.transaction("messages","readonly"),{store:n}=r,a=n.index("by_status"),s=e?"prev":"next",l=await a.openCursor(IDBKeyRange.only(o),s);if(!l)return console.log("No messages found"),[];let c=[];for await(let u of l)if(c.push(u.value),c.length>=t)break;return _g(c)}async function $V(e,t){let o=_r.transaction("messages","readonly"),{store:r}=o,a=await r.index("by_timestamp_and_message_id").openCursor(IDBKeyRange.bound([e,t],[e,"\uFFFF"]));if(!a)return console.log("No messages found in range"),[];let s=[];for await(let l of a)s.push(l.value);return _g(s)}async function GV(e,t){j8(e),_r||await OV(),await _r.put("messages",{channel_id:e.channel_id,message_id:e.id,status:t,message:e}),rp.set(e.id,e)}async function nb(e,t){e.forEach(j8);let o=_r.transaction("messages","readwrite"),{store:r}=o;await Promise.all([...e.map(n=>r.add({channel_id:n.channel_id,message_id:n.id,status:t??HPe(n),message:n})),o.done]),e.forEach(n=>rp.set(n.id,n))}async function yx(e){await _r.delete("messages",e),rp.delete(e)}async function Ug(e){let t=_r.transaction("messages","readwrite"),{store:o}=t;await Promise.all([...e.map(r=>o.delete(r)),t.done]),e.forEach(r=>rp.delete(r))}async function HV(e=!0){rp.clear(),await _r.clear("messages"),e&&D.show({type:D.Type.MESSAGE,message:"Cleared message log database and cache.",id:D.genId()})}var ob,_r,rp,Fg=h(()=>{"use strict";d();C();zPe();np();wV();Xy();oB();ob=(r=>(r.DELETED="DELETED",r.EDITED="EDITED",r.GHOST_PINGED="GHOST_PINGED",r))(ob||{}),rp=new Map;OV()});var Qe,VPe,qV=h(()=>{d();(function(e){e[e.BACKSPACE=8]="BACKSPACE",e[e.FORM_FEED=12]="FORM_FEED",e[e.NEWLINE=10]="NEWLINE",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.TAB=9]="TAB",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.NUMBER_SIGN=35]="NUMBER_SIGN",e[e.DOLLAR_SIGN=36]="DOLLAR_SIGN",e[e.PERCENT_SIGN=37]="PERCENT_SIGN",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.LEFT_PARENTHESIS=40]="LEFT_PARENTHESIS",e[e.RIGHT_PARENTHESIS=41]="RIGHT_PARENTHESIS",e[e.ASTERISK=42]="ASTERISK",e[e.PLUS_SIGN=43]="PLUS_SIGN",e[e.COMMA=44]="COMMA",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.FULL_STOP=46]="FULL_STOP",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_ZERO=48]="DIGIT_ZERO",e[e.DIGIT_ONE=49]="DIGIT_ONE",e[e.DIGIT_TWO=50]="DIGIT_TWO",e[e.DIGIT_THREE=51]="DIGIT_THREE",e[e.DIGIT_FOUR=52]="DIGIT_FOUR",e[e.DIGIT_FIVE=53]="DIGIT_FIVE",e[e.DIGIT_SIX=54]="DIGIT_SIX",e[e.DIGIT_SEVEN=55]="DIGIT_SEVEN",e[e.DIGIT_EIGHT=56]="DIGIT_EIGHT",e[e.DIGIT_NINE=57]="DIGIT_NINE",e[e.COLON=58]="COLON",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.COMMERCIAL_AT=64]="COMMERCIAL_AT",e[e.LATIN_CAPITAL_LETTER_A=65]="LATIN_CAPITAL_LETTER_A",e[e.LATIN_CAPITAL_LETTER_B=66]="LATIN_CAPITAL_LETTER_B",e[e.LATIN_CAPITAL_LETTER_C=67]="LATIN_CAPITAL_LETTER_C",e[e.LATIN_CAPITAL_LETTER_D=68]="LATIN_CAPITAL_LETTER_D",e[e.LATIN_CAPITAL_LETTER_E=69]="LATIN_CAPITAL_LETTER_E",e[e.LATIN_CAPITAL_LETTER_F=70]="LATIN_CAPITAL_LETTER_F",e[e.LATIN_CAPITAL_LETTER_G=71]="LATIN_CAPITAL_LETTER_G",e[e.LATIN_CAPITAL_LETTER_H=72]="LATIN_CAPITAL_LETTER_H",e[e.LATIN_CAPITAL_LETTER_I=73]="LATIN_CAPITAL_LETTER_I",e[e.LATIN_CAPITAL_LETTER_J=74]="LATIN_CAPITAL_LETTER_J",e[e.LATIN_CAPITAL_LETTER_K=75]="LATIN_CAPITAL_LETTER_K",e[e.LATIN_CAPITAL_LETTER_L=76]="LATIN_CAPITAL_LETTER_L",e[e.LATIN_CAPITAL_LETTER_M=77]="LATIN_CAPITAL_LETTER_M",e[e.LATIN_CAPITAL_LETTER_N=78]="LATIN_CAPITAL_LETTER_N",e[e.LATIN_CAPITAL_LETTER_O=79]="LATIN_CAPITAL_LETTER_O",e[e.LATIN_CAPITAL_LETTER_P=80]="LATIN_CAPITAL_LETTER_P",e[e.LATIN_CAPITAL_LETTER_Q=81]="LATIN_CAPITAL_LETTER_Q",e[e.LATIN_CAPITAL_LETTER_R=82]="LATIN_CAPITAL_LETTER_R",e[e.LATIN_CAPITAL_LETTER_S=83]="LATIN_CAPITAL_LETTER_S",e[e.LATIN_CAPITAL_LETTER_T=84]="LATIN_CAPITAL_LETTER_T",e[e.LATIN_CAPITAL_LETTER_U=85]="LATIN_CAPITAL_LETTER_U",e[e.LATIN_CAPITAL_LETTER_V=86]="LATIN_CAPITAL_LETTER_V",e[e.LATIN_CAPITAL_LETTER_W=87]="LATIN_CAPITAL_LETTER_W",e[e.LATIN_CAPITAL_LETTER_X=88]="LATIN_CAPITAL_LETTER_X",e[e.LATIN_CAPITAL_LETTER_Y=89]="LATIN_CAPITAL_LETTER_Y",e[e.LATIN_CAPITAL_LETTER_Z=90]="LATIN_CAPITAL_LETTER_Z",e[e.LEFT_SQUARE_BRACKET=91]="LEFT_SQUARE_BRACKET",e[e.REVERSE_SOLIDUS=92]="REVERSE_SOLIDUS",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.CIRCUMFLEX_ACCENT=94]="CIRCUMFLEX_ACCENT",e[e.LOW_LINE=95]="LOW_LINE",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_LETTER_A=97]="LATIN_SMALL_LETTER_A",e[e.LATIN_SMALL_LETTER_B=98]="LATIN_SMALL_LETTER_B",e[e.LATIN_SMALL_LETTER_C=99]="LATIN_SMALL_LETTER_C",e[e.LATIN_SMALL_LETTER_D=100]="LATIN_SMALL_LETTER_D",e[e.LATIN_SMALL_LETTER_E=101]="LATIN_SMALL_LETTER_E",e[e.LATIN_SMALL_LETTER_F=102]="LATIN_SMALL_LETTER_F",e[e.LATIN_SMALL_LETTER_G=103]="LATIN_SMALL_LETTER_G",e[e.LATIN_SMALL_LETTER_H=104]="LATIN_SMALL_LETTER_H",e[e.LATIN_SMALL_LETTER_I=105]="LATIN_SMALL_LETTER_I",e[e.LATIN_SMALL_LETTER_J=106]="LATIN_SMALL_LETTER_J",e[e.LATIN_SMALL_LETTER_K=107]="LATIN_SMALL_LETTER_K",e[e.LATIN_SMALL_LETTER_L=108]="LATIN_SMALL_LETTER_L",e[e.LATIN_SMALL_LETTER_M=109]="LATIN_SMALL_LETTER_M",e[e.LATIN_SMALL_LETTER_N=110]="LATIN_SMALL_LETTER_N",e[e.LATIN_SMALL_LETTER_O=111]="LATIN_SMALL_LETTER_O",e[e.LATIN_SMALL_LETTER_P=112]="LATIN_SMALL_LETTER_P",e[e.LATIN_SMALL_LETTER_Q=113]="LATIN_SMALL_LETTER_Q",e[e.LATIN_SMALL_LETTER_R=114]="LATIN_SMALL_LETTER_R",e[e.LATIN_SMALL_LETTER_S=115]="LATIN_SMALL_LETTER_S",e[e.LATIN_SMALL_LETTER_T=116]="LATIN_SMALL_LETTER_T",e[e.LATIN_SMALL_LETTER_U=117]="LATIN_SMALL_LETTER_U",e[e.LATIN_SMALL_LETTER_V=118]="LATIN_SMALL_LETTER_V",e[e.LATIN_SMALL_LETTER_W=119]="LATIN_SMALL_LETTER_W",e[e.LATIN_SMALL_LETTER_X=120]="LATIN_SMALL_LETTER_X",e[e.LATIN_SMALL_LETTER_Y=121]="LATIN_SMALL_LETTER_Y",e[e.LATIN_SMALL_LETTER_Z=122]="LATIN_SMALL_LETTER_Z",e[e.LEFT_CURLY_BRACKET=123]="LEFT_CURLY_BRACKET",e[e.VERTICAL_LINE=124]="VERTICAL_LINE",e[e.RIGHT_CURLY_BRACKET=125]="RIGHT_CURLY_BRACKET",e[e.TILDE=126]="TILDE"})(Qe||(Qe={}));VPe={[Qe.QUOTATION_MARK]:Qe.QUOTATION_MARK,[Qe.REVERSE_SOLIDUS]:Qe.REVERSE_SOLIDUS,[Qe.SOLIDUS]:Qe.SOLIDUS,[Qe.LATIN_SMALL_LETTER_B]:Qe.BACKSPACE,[Qe.LATIN_SMALL_LETTER_F]:Qe.FORM_FEED,[Qe.LATIN_SMALL_LETTER_N]:Qe.NEWLINE,[Qe.LATIN_SMALL_LETTER_R]:Qe.CARRIAGE_RETURN,[Qe.LATIN_SMALL_LETTER_T]:Qe.TAB}});var W8,K8,eMe=h(()=>{d();W8=class{constructor(){this.decoder=new TextDecoder("utf-8"),this.strings=[],this.byteLength=0}appendChar(t){this.strings.push(String.fromCharCode(t)),this.byteLength+=1}appendBuf(t,o=0,r=t.length){this.strings.push(this.decoder.decode(t.subarray(o,r))),this.byteLength+=r-o}reset(){this.strings=[],this.byteLength=0}toString(){return this.strings.join("")}},K8=class{constructor(t){this.decoder=new TextDecoder("utf-8"),this.bufferOffset=0,this.string="",this.byteLength=0,this.buffer=new Uint8Array(t)}appendChar(t){this.bufferOffset>=this.buffer.length&&this.flushStringBuffer(),this.buffer[this.bufferOffset++]=t,this.byteLength+=1}appendBuf(t,o=0,r=t.length){let n=r-o;this.bufferOffset+n>this.buffer.length&&this.flushStringBuffer(),this.buffer.set(t.subarray(o,r),this.bufferOffset),this.bufferOffset+=n,this.byteLength+=n}flushStringBuffer(){this.string+=this.decoder.decode(this.buffer.subarray(0,this.bufferOffset)),this.bufferOffset=0}reset(){this.string="",this.bufferOffset=0,this.byteLength=0}toString(){return this.flushStringBuffer(),this.string}}});var WV,Mo,KV=h(()=>{d();(function(e){e[e.LEFT_BRACE=0]="LEFT_BRACE",e[e.RIGHT_BRACE=1]="RIGHT_BRACE",e[e.LEFT_BRACKET=2]="LEFT_BRACKET",e[e.RIGHT_BRACKET=3]="RIGHT_BRACKET",e[e.COLON=4]="COLON",e[e.COMMA=5]="COMMA",e[e.TRUE=6]="TRUE",e[e.FALSE=7]="FALSE",e[e.NULL=8]="NULL",e[e.STRING=9]="STRING",e[e.NUMBER=10]="NUMBER",e[e.SEPARATOR=11]="SEPARATOR"})(WV||(WV={}));Mo=WV});function tMe(e){return["START","ENDED","ERROR","TRUE1","TRUE2","TRUE3","FALSE1","FALSE2","FALSE3","FALSE4","NULL1","NULL2","NULL3","STRING_DEFAULT","STRING_AFTER_BACKSLASH","STRING_UNICODE_DIGIT_1","STRING_UNICODE_DIGIT_2","STRING_UNICODE_DIGIT_3","STRING_UNICODE_DIGIT_4","STRING_INCOMPLETE_CHAR","NUMBER_AFTER_INITIAL_MINUS","NUMBER_AFTER_INITIAL_ZERO","NUMBER_AFTER_INITIAL_NON_ZERO","NUMBER_AFTER_FULL_STOP","NUMBER_AFTER_DECIMAL","NUMBER_AFTER_E","NUMBER_AFTER_E_AND_SIGN","NUMBER_AFTER_E_AND_DIGIT","SEPARATOR","BOM_OR_START","BOM"][e]}var Ge,vvt,Q8,Z8,oMe=h(()=>{d();qV();eMe();KV();(function(e){e[e.START=0]="START",e[e.ENDED=1]="ENDED",e[e.ERROR=2]="ERROR",e[e.TRUE1=3]="TRUE1",e[e.TRUE2=4]="TRUE2",e[e.TRUE3=5]="TRUE3",e[e.FALSE1=6]="FALSE1",e[e.FALSE2=7]="FALSE2",e[e.FALSE3=8]="FALSE3",e[e.FALSE4=9]="FALSE4",e[e.NULL1=10]="NULL1",e[e.NULL2=11]="NULL2",e[e.NULL3=12]="NULL3",e[e.STRING_DEFAULT=13]="STRING_DEFAULT",e[e.STRING_AFTER_BACKSLASH=14]="STRING_AFTER_BACKSLASH",e[e.STRING_UNICODE_DIGIT_1=15]="STRING_UNICODE_DIGIT_1",e[e.STRING_UNICODE_DIGIT_2=16]="STRING_UNICODE_DIGIT_2",e[e.STRING_UNICODE_DIGIT_3=17]="STRING_UNICODE_DIGIT_3",e[e.STRING_UNICODE_DIGIT_4=18]="STRING_UNICODE_DIGIT_4",e[e.STRING_INCOMPLETE_CHAR=19]="STRING_INCOMPLETE_CHAR",e[e.NUMBER_AFTER_INITIAL_MINUS=20]="NUMBER_AFTER_INITIAL_MINUS",e[e.NUMBER_AFTER_INITIAL_ZERO=21]="NUMBER_AFTER_INITIAL_ZERO",e[e.NUMBER_AFTER_INITIAL_NON_ZERO=22]="NUMBER_AFTER_INITIAL_NON_ZERO",e[e.NUMBER_AFTER_FULL_STOP=23]="NUMBER_AFTER_FULL_STOP",e[e.NUMBER_AFTER_DECIMAL=24]="NUMBER_AFTER_DECIMAL",e[e.NUMBER_AFTER_E=25]="NUMBER_AFTER_E",e[e.NUMBER_AFTER_E_AND_SIGN=26]="NUMBER_AFTER_E_AND_SIGN",e[e.NUMBER_AFTER_E_AND_DIGIT=27]="NUMBER_AFTER_E_AND_DIGIT",e[e.SEPARATOR=28]="SEPARATOR",e[e.BOM_OR_START=29]="BOM_OR_START",e[e.BOM=30]="BOM"})(Ge||(Ge={}));vvt={stringBufferSize:0,numberBufferSize:0,separator:void 0,emitPartialTokens:!1},Q8=class e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}},Z8=class{constructor(t){this.state=Ge.BOM_OR_START,this.bomIndex=0,this.separatorIndex=0,this.escapedCharsByteLength=0,this.bytes_remaining=0,this.bytes_in_sequence=0,this.char_split_buffer=new Uint8Array(4),this.encoder=new TextEncoder,this.offset=-1,t=Object.assign(Object.assign({},vvt),t),this.emitPartialTokens=t.emitPartialTokens===!0,this.bufferedString=t.stringBufferSize&&t.stringBufferSize>4?new K8(t.stringBufferSize):new W8,this.bufferedNumber=t.numberBufferSize&&t.numberBufferSize>0?new K8(t.numberBufferSize):new W8,this.separator=t.separator,this.separatorBytes=t.separator?this.encoder.encode(t.separator):void 0}get isEnded(){return this.state===Ge.ENDED}write(t){try{let o;if(t instanceof Uint8Array)o=t;else if(typeof t=="string")o=this.encoder.encode(t);else if(Array.isArray(t))o=Uint8Array.from(t);else if(ArrayBuffer.isView(t))o=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);else throw new TypeError("Unexpected type. The `write` function only accepts Arrays, TypedArrays and Strings.");for(let r=0;r=Qe.DIGIT_ONE&&n<=Qe.DIGIT_NINE){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_INITIAL_NON_ZERO;continue}if(n===Qe.DIGIT_ZERO){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_INITIAL_ZERO;continue}if(n===Qe.HYPHEN_MINUS){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_INITIAL_MINUS;continue}break;case Ge.STRING_DEFAULT:if(n===Qe.QUOTATION_MARK){let s=this.bufferedString.toString();this.state=Ge.START,this.onToken({token:Mo.STRING,value:s,offset:this.offset}),this.offset+=this.escapedCharsByteLength+this.bufferedString.byteLength+1;continue}if(n===Qe.REVERSE_SOLIDUS){this.state=Ge.STRING_AFTER_BACKSLASH;continue}if(n>=128){if(n>=194&&n<=223?this.bytes_in_sequence=2:n<=239?this.bytes_in_sequence=3:this.bytes_in_sequence=4,this.bytes_in_sequence<=o.length-r){this.bufferedString.appendBuf(o,r,r+this.bytes_in_sequence),r+=this.bytes_in_sequence-1;continue}this.bytes_remaining=r+this.bytes_in_sequence-o.length,this.char_split_buffer.set(o.subarray(r)),r=o.length-1,this.state=Ge.STRING_INCOMPLETE_CHAR;continue}if(n>=Qe.SPACE){this.bufferedString.appendChar(n);continue}break;case Ge.STRING_INCOMPLETE_CHAR:this.char_split_buffer.set(o.subarray(r,r+this.bytes_remaining),this.bytes_in_sequence-this.bytes_remaining),this.bufferedString.appendBuf(this.char_split_buffer,0,this.bytes_in_sequence),r=this.bytes_remaining-1,this.state=Ge.STRING_DEFAULT;continue;case Ge.STRING_AFTER_BACKSLASH:let a=VPe[n];if(a){this.bufferedString.appendChar(a),this.escapedCharsByteLength+=1,this.state=Ge.STRING_DEFAULT;continue}if(n===Qe.LATIN_SMALL_LETTER_U){this.unicode="",this.state=Ge.STRING_UNICODE_DIGIT_1;continue}break;case Ge.STRING_UNICODE_DIGIT_1:case Ge.STRING_UNICODE_DIGIT_2:case Ge.STRING_UNICODE_DIGIT_3:if(n>=Qe.DIGIT_ZERO&&n<=Qe.DIGIT_NINE||n>=Qe.LATIN_CAPITAL_LETTER_A&&n<=Qe.LATIN_CAPITAL_LETTER_F||n>=Qe.LATIN_SMALL_LETTER_A&&n<=Qe.LATIN_SMALL_LETTER_F){this.unicode+=String.fromCharCode(n),this.state+=1;continue}break;case Ge.STRING_UNICODE_DIGIT_4:if(n>=Qe.DIGIT_ZERO&&n<=Qe.DIGIT_NINE||n>=Qe.LATIN_CAPITAL_LETTER_A&&n<=Qe.LATIN_CAPITAL_LETTER_F||n>=Qe.LATIN_SMALL_LETTER_A&&n<=Qe.LATIN_SMALL_LETTER_F){let s=parseInt(this.unicode+String.fromCharCode(n),16),l;if(this.highSurrogate===void 0)if(s>=55296&&s<=56319){this.highSurrogate=s,this.state=Ge.STRING_DEFAULT;continue}else l=String.fromCharCode(s);else s>=56320&&s<=57343?l=String.fromCharCode(this.highSurrogate,s):l=String.fromCharCode(this.highSurrogate),this.highSurrogate=void 0;let c=this.encoder.encode(l);this.bufferedString.appendBuf(c),this.escapedCharsByteLength+=6-c.byteLength,this.state=Ge.STRING_DEFAULT;continue}break;case Ge.NUMBER_AFTER_INITIAL_MINUS:if(n===Qe.DIGIT_ZERO){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_INITIAL_ZERO;continue}if(n>=Qe.DIGIT_ONE&&n<=Qe.DIGIT_NINE){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_INITIAL_NON_ZERO;continue}break;case Ge.NUMBER_AFTER_INITIAL_ZERO:if(n===Qe.FULL_STOP){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_FULL_STOP;continue}if(n===Qe.LATIN_SMALL_LETTER_E||n===Qe.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_E;continue}r-=1,this.state=Ge.START,this.emitNumber();continue;case Ge.NUMBER_AFTER_INITIAL_NON_ZERO:if(n>=Qe.DIGIT_ZERO&&n<=Qe.DIGIT_NINE){this.bufferedNumber.appendChar(n);continue}if(n===Qe.FULL_STOP){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_FULL_STOP;continue}if(n===Qe.LATIN_SMALL_LETTER_E||n===Qe.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_E;continue}r-=1,this.state=Ge.START,this.emitNumber();continue;case Ge.NUMBER_AFTER_FULL_STOP:if(n>=Qe.DIGIT_ZERO&&n<=Qe.DIGIT_NINE){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_DECIMAL;continue}break;case Ge.NUMBER_AFTER_DECIMAL:if(n>=Qe.DIGIT_ZERO&&n<=Qe.DIGIT_NINE){this.bufferedNumber.appendChar(n);continue}if(n===Qe.LATIN_SMALL_LETTER_E||n===Qe.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_E;continue}r-=1,this.state=Ge.START,this.emitNumber();continue;case Ge.NUMBER_AFTER_E:if(n===Qe.PLUS_SIGN||n===Qe.HYPHEN_MINUS){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_E_AND_SIGN;continue}case Ge.NUMBER_AFTER_E_AND_SIGN:if(n>=Qe.DIGIT_ZERO&&n<=Qe.DIGIT_NINE){this.bufferedNumber.appendChar(n),this.state=Ge.NUMBER_AFTER_E_AND_DIGIT;continue}break;case Ge.NUMBER_AFTER_E_AND_DIGIT:if(n>=Qe.DIGIT_ZERO&&n<=Qe.DIGIT_NINE){this.bufferedNumber.appendChar(n);continue}r-=1,this.state=Ge.START,this.emitNumber();continue;case Ge.TRUE1:if(n===Qe.LATIN_SMALL_LETTER_R){this.state=Ge.TRUE2;continue}break;case Ge.TRUE2:if(n===Qe.LATIN_SMALL_LETTER_U){this.state=Ge.TRUE3;continue}break;case Ge.TRUE3:if(n===Qe.LATIN_SMALL_LETTER_E){this.state=Ge.START,this.onToken({token:Mo.TRUE,value:!0,offset:this.offset}),this.offset+=3;continue}break;case Ge.FALSE1:if(n===Qe.LATIN_SMALL_LETTER_A){this.state=Ge.FALSE2;continue}break;case Ge.FALSE2:if(n===Qe.LATIN_SMALL_LETTER_L){this.state=Ge.FALSE3;continue}break;case Ge.FALSE3:if(n===Qe.LATIN_SMALL_LETTER_S){this.state=Ge.FALSE4;continue}break;case Ge.FALSE4:if(n===Qe.LATIN_SMALL_LETTER_E){this.state=Ge.START,this.onToken({token:Mo.FALSE,value:!1,offset:this.offset}),this.offset+=4;continue}break;case Ge.NULL1:if(n===Qe.LATIN_SMALL_LETTER_U){this.state=Ge.NULL2;continue}break;case Ge.NULL2:if(n===Qe.LATIN_SMALL_LETTER_L){this.state=Ge.NULL3;continue}break;case Ge.NULL3:if(n===Qe.LATIN_SMALL_LETTER_L){this.state=Ge.START,this.onToken({token:Mo.NULL,value:null,offset:this.offset}),this.offset+=3;continue}break;case Ge.SEPARATOR:if(this.separatorIndex+=1,!this.separatorBytes||n!==this.separatorBytes[this.separatorIndex])break;this.separatorIndex===this.separatorBytes.length-1&&(this.state=Ge.START,this.onToken({token:Mo.SEPARATOR,value:this.separator,offset:this.offset+this.separatorIndex}),this.separatorIndex=0);continue;case Ge.BOM:if(n===this.bom[this.bomIndex]){if(this.bomIndex===this.bom.length-1){this.state=Ge.START,this.bom=void 0,this.bomIndex=0;continue}this.bomIndex+=1;continue}break;case Ge.ENDED:if(n===Qe.SPACE||n===Qe.NEWLINE||n===Qe.CARRIAGE_RETURN||n===Qe.TAB)continue}throw new Q8(`Unexpected "${String.fromCharCode(n)}" at position "${r}" in state ${tMe(this.state)}`)}if(this.emitPartialTokens)switch(this.state){case Ge.TRUE1:case Ge.TRUE2:case Ge.TRUE3:this.onToken({token:Mo.TRUE,value:!0,offset:this.offset,partial:!0});break;case Ge.FALSE1:case Ge.FALSE2:case Ge.FALSE3:case Ge.FALSE4:this.onToken({token:Mo.FALSE,value:!1,offset:this.offset,partial:!0});break;case Ge.NULL1:case Ge.NULL2:case Ge.NULL3:this.onToken({token:Mo.NULL,value:null,offset:this.offset,partial:!0});break;case Ge.STRING_DEFAULT:{let r=this.bufferedString.toString();this.onToken({token:Mo.STRING,value:r,offset:this.offset,partial:!0});break}case Ge.NUMBER_AFTER_INITIAL_ZERO:case Ge.NUMBER_AFTER_INITIAL_NON_ZERO:case Ge.NUMBER_AFTER_DECIMAL:case Ge.NUMBER_AFTER_E_AND_DIGIT:try{this.onToken({token:Mo.NUMBER,value:this.parseNumber(this.bufferedNumber.toString()),offset:this.offset,partial:!0})}catch{}}}catch(o){this.error(o)}}emitNumber(){this.onToken({token:Mo.NUMBER,value:this.parseNumber(this.bufferedNumber.toString()),offset:this.offset}),this.offset+=this.bufferedNumber.byteLength-1}parseNumber(t){return Number(t)}error(t){this.state!==Ge.ENDED&&(this.state=Ge.ERROR),this.onError(t)}end(){switch(this.state){case Ge.NUMBER_AFTER_INITIAL_ZERO:case Ge.NUMBER_AFTER_INITIAL_NON_ZERO:case Ge.NUMBER_AFTER_DECIMAL:case Ge.NUMBER_AFTER_E_AND_DIGIT:this.state=Ge.ENDED,this.emitNumber(),this.onEnd();break;case Ge.BOM_OR_START:case Ge.START:case Ge.ERROR:case Ge.SEPARATOR:this.state=Ge.ENDED,this.onEnd();break;default:this.error(new Q8(`Tokenizer ended in the middle of a token (state: ${tMe(this.state)}). Either not all the data was received or the data was invalid.`))}}onToken(t){throw new Q8(`Can't emit tokens before the "onToken" callback has been set up.`)}onError(t){throw t}onEnd(){}}});var cs,nMe=h(()=>{d();(function(e){e[e.OBJECT=0]="OBJECT",e[e.ARRAY=1]="ARRAY"})(cs||(cs={}))});function rMe(e){return["VALUE","KEY","COLON","COMMA","ENDED","ERROR","SEPARATOR"][e]}var Bn,yvt,rb,Y8,iMe=h(()=>{d();qV();KV();nMe();(function(e){e[e.VALUE=0]="VALUE",e[e.KEY=1]="KEY",e[e.COLON=2]="COLON",e[e.COMMA=3]="COMMA",e[e.ENDED=4]="ENDED",e[e.ERROR=5]="ERROR",e[e.SEPARATOR=6]="SEPARATOR"})(Bn||(Bn={}));yvt={paths:void 0,keepStack:!0,separator:void 0,emitPartialValues:!1},rb=class e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}},Y8=class{constructor(t){this.state=Bn.VALUE,this.mode=void 0,this.key=void 0,this.value=void 0,this.stack=[],t=Object.assign(Object.assign({},yvt),t),t.paths&&(this.paths=t.paths.map(o=>{if(o===void 0||o==="$*")return;if(!o.startsWith("$"))throw new rb(`Invalid selector "${o}". Should start with "$".`);let r=o.split(".").slice(1);if(r.includes(""))throw new rb(`Invalid selector "${o}". ".." syntax not supported.`);return r})),this.keepStack=t.keepStack||!1,this.separator=t.separator,t.emitPartialValues||(this.emitPartial=()=>{})}shouldEmit(){return this.paths?this.paths.some(t=>{var o;if(t===void 0)return!0;if(t.length!==this.stack.length)return!1;for(let n=0;n!r.emit)&&delete this.value[this.key],o&&this.onValue({value:t,key:this.key,parent:this.value,stack:this.stack}),this.stack.length===0&&(this.separator?this.state=Bn.SEPARATOR:this.separator===void 0&&this.end())}emitPartial(t){if(this.shouldEmit()){if(this.state===Bn.KEY){this.onValue({value:void 0,key:t,parent:this.value,stack:this.stack,partial:!0});return}this.onValue({value:t,key:this.key,parent:this.value,stack:this.stack,partial:!0})}}get isEnded(){return this.state===Bn.ENDED}write({token:t,value:o,partial:r}){try{if(r){this.emitPartial(o);return}if(this.state===Bn.VALUE){if(t===Mo.STRING||t===Mo.NUMBER||t===Mo.TRUE||t===Mo.FALSE||t===Mo.NULL){this.mode===cs.OBJECT?(this.value[this.key]=o,this.state=Bn.COMMA):this.mode===cs.ARRAY&&(this.value.push(o),this.state=Bn.COMMA),this.emit(o,this.shouldEmit());return}if(t===Mo.LEFT_BRACE){if(this.push(),this.mode===cs.OBJECT)this.value=this.value[this.key]={};else if(this.mode===cs.ARRAY){let n={};this.value.push(n),this.value=n}else this.value={};this.mode=cs.OBJECT,this.state=Bn.KEY,this.key=void 0,this.emitPartial();return}if(t===Mo.LEFT_BRACKET){if(this.push(),this.mode===cs.OBJECT)this.value=this.value[this.key]=[];else if(this.mode===cs.ARRAY){let n=[];this.value.push(n),this.value=n}else this.value=[];this.mode=cs.ARRAY,this.state=Bn.VALUE,this.key=0,this.emitPartial();return}if(this.mode===cs.ARRAY&&t===Mo.RIGHT_BRACKET&&this.value.length===0){this.pop();return}}if(this.state===Bn.KEY){if(t===Mo.STRING){this.key=o,this.state=Bn.COLON,this.emitPartial();return}if(t===Mo.RIGHT_BRACE&&Object.keys(this.value).length===0){this.pop();return}}if(this.state===Bn.COLON&&t===Mo.COLON){this.state=Bn.VALUE;return}if(this.state===Bn.COMMA){if(t===Mo.COMMA){if(this.mode===cs.ARRAY){this.state=Bn.VALUE,this.key+=1;return}if(this.mode===cs.OBJECT){this.state=Bn.KEY;return}}if(t===Mo.RIGHT_BRACE&&this.mode===cs.OBJECT||t===Mo.RIGHT_BRACKET&&this.mode===cs.ARRAY){this.pop();return}}if(this.state===Bn.SEPARATOR&&t===Mo.SEPARATOR&&o===this.separator){this.state=Bn.VALUE;return}if(t===Mo.SEPARATOR&&this.state!==Bn.SEPARATOR&&Array.from(o).map(n=>n.charCodeAt(0)).every(n=>n===Qe.SPACE||n===Qe.NEWLINE||n===Qe.CARRIAGE_RETURN||n===Qe.TAB))return;throw new rb(`Unexpected ${Mo[t]} (${JSON.stringify(o)}) in state ${rMe(this.state)}`)}catch(n){this.error(n)}}error(t){this.state!==Bn.ENDED&&(this.state=Bn.ERROR),this.onError(t)}end(){this.state!==Bn.VALUE&&this.state!==Bn.SEPARATOR||this.stack.length>0?this.error(new Error(`Parser ended in mid-parsing (state: ${rMe(this.state)}). Either not all the data was received or the data was invalid.`)):(this.state=Bn.ENDED,this.onEnd())}onValue(t){throw new rb(`Can't emit data before the "onValue" callback has been set up.`)}onError(t){throw t}onEnd(){}}});var J8,aMe=h(()=>{d();oMe();iMe();J8=class{constructor(t={}){this.tokenizer=new Z8(t),this.tokenParser=new Y8(t),this.tokenizer.onToken=this.tokenParser.write.bind(this.tokenParser),this.tokenizer.onEnd=()=>{this.tokenParser.isEnded||this.tokenParser.end()},this.tokenParser.onError=this.tokenizer.error.bind(this.tokenizer),this.tokenParser.onEnd=()=>{this.tokenizer.isEnded||this.tokenizer.end()}}get isEnded(){return this.tokenizer.isEnded&&this.tokenParser.isEnded}write(t){this.tokenizer.write(t)}end(){this.tokenizer.end()}set onToken(t){this.tokenizer.onToken=o=>{t(o),this.tokenParser.write(o)}}set onValue(t){this.tokenParser.onValue=t}set onError(t){this.tokenizer.onError=t}set onEnd(t){this.tokenParser.onEnd=()=>{this.tokenizer.isEnded||this.tokenizer.end(),t.call(this.tokenParser)}}}});var Zfn,sMe=h(()=>{d();Zfn=globalThis.showDirectoryPicker});var Xfn,lMe=h(()=>{d();Xfn=globalThis.showOpenFilePicker});var tgn,cMe=h(()=>{d();tgn=globalThis.showSaveFilePicker});var ib,rgn,rB=h(()=>{d();ib={INVALID:["seeking position failed.","InvalidStateError"],GONE:["A requested file or directory could not be found at the time an operation was processed.","NotFoundError"],MISMATCH:["The path supplied exists, but was not an entry of requested type.","TypeMismatchError"],MOD_ERR:["The object can not be modified in this way.","InvalidModificationError"],SYNTAX:e=>[`Failed to execute 'write' on 'UnderlyingSinkBase': Invalid params passed. ${e}`,"SyntaxError"],SECURITY:["It was determined that certain files are unsafe for access within a Web application, or that too many calls are being made on file resources.","SecurityError"],DISALLOWED:["The request is not allowed by the user agent or the platform in the current context.","NotAllowedError"]},rgn={writable:globalThis.WritableStream}});var uMe={};Bt(uMe,{FileHandle:()=>X8,FolderHandle:()=>aB,default:()=>Svt});var bvt,iB,X8,aB,Svt,dMe=h(()=>{d();rB();({DISALLOWED:bvt}=ib),iB=class{constructor(t,o){this.writer=t,this.fileEntry=o}async write(t){if(typeof t=="object"){if(t.type==="write"){if(Number.isInteger(t.position)&&t.position>=0&&(this.writer.seek(t.position),this.writer.position!==t.position&&(await new Promise((o,r)=>{this.writer.onwriteend=o,this.writer.onerror=r,this.writer.truncate(t.position)}),this.writer.seek(t.position))),!("data"in t))throw new DOMException("Failed to execute 'write' on 'UnderlyingSinkBase': Invalid params passed. write requires a data argument","SyntaxError");t=t.data}else if(t.type==="seek")if(Number.isInteger(t.position)&&t.position>=0){if(this.writer.seek(t.position),this.writer.position!==t.position)throw new DOMException("seeking position failed","InvalidStateError");return}else throw new DOMException("Failed to execute 'write' on 'UnderlyingSinkBase': Invalid params passed. seek requires a position argument","SyntaxError");else if(t.type==="truncate")return new Promise(o=>{if(Number.isInteger(t.size)&&t.size>=0)this.writer.onwriteend=r=>o(),this.writer.truncate(t.size);else throw new DOMException("Failed to execute 'write' on 'UnderlyingSinkBase': Invalid params passed. truncate requires a size argument","SyntaxError")})}await new Promise((o,r)=>{this.writer.onwriteend=o,this.writer.onerror=r,this.writer.write(new Blob([t]))})}close(){return new Promise(this.fileEntry.file.bind(this.fileEntry))}},X8=class{constructor(t,o=!0){this.file=t,this.kind="file",this.writable=o,this.readable=!0}get name(){return this.file.name}isSameEntry(t){return this.file.toURL()===t.file.toURL()}getFile(){return new Promise(this.file.file.bind(this.file))}createWritable(t){if(!this.writable)throw new DOMException(...bvt);return new Promise((o,r)=>this.file.createWriter(n=>{t.keepExistingData===!1?(n.onwriteend=a=>o(new iB(n,this.file)),n.truncate(0)):o(new iB(n,this.file))},r))}},aB=class e{constructor(t,o=!0){this.dir=t,this.writable=o,this.readable=!0,this.kind="directory",this.name=t.name}isSameEntry(t){return this.dir.fullPath===t.dir.fullPath}async*entries(){let t=this.dir.createReader(),o=await new Promise(t.readEntries.bind(t));for(let r of o)yield[r.name,r.isFile?new X8(r,this.writable):new e(r,this.writable)]}getDirectoryHandle(t,o){return new Promise((r,n)=>{this.dir.getDirectory(t,o,a=>{r(new e(a))},n)})}getFileHandle(t,o){return new Promise((r,n)=>this.dir.getFile(t,o,a=>r(new X8(a)),n))}async removeEntry(t,o){let r=await this.getDirectoryHandle(t,{create:!1}).catch(n=>n.name==="TypeMismatchError"?this.getFileHandle(t,{create:!1}):n);if(r instanceof Error)throw r;return new Promise((n,a)=>{r instanceof e?o.recursive?r.dir.removeRecursively(()=>n(),a):r.dir.remove(()=>n(),a):r.file&&r.file.remove(()=>n(),a)})}},Svt=(e={})=>new Promise((t,o)=>window.webkitRequestFileSystem(e._persistent,0,r=>t(new aB(r.root)),o))});var zg,sB,V8,lB=h(()=>{d();zg=Symbol("adapter"),sB=class{[zg];name;kind;constructor(t){this.kind=t.kind,this.name=t.name,this[zg]=t}async queryPermission(t={}){let{mode:o="read"}=t,r=this[zg];if(r.queryPermission)return r.queryPermission({mode:o});if(o==="read")return"granted";if(o==="readwrite")return r.writable?"granted":"denied";throw new TypeError(`Mode ${o} must be 'read' or 'readwrite'`)}async requestPermission({mode:t="read"}={}){let o=this[zg];if(o.requestPermission)return o.requestPermission({mode:t});if(t==="read")return"granted";if(t==="readwrite")return o.writable?"granted":"denied";throw new TypeError(`Mode ${t} must be 'read' or 'readwrite'`)}async remove(t={}){await this[zg].remove(t)}async isSameEntry(t){return this===t?!0:!t||typeof t!="object"||this.kind!==t.kind||!t[zg]?!1:this[zg].isSameEntry(t[zg])}};Object.defineProperty(sB.prototype,Symbol.toStringTag,{value:"FileSystemHandle",writable:!1,enumerable:!1,configurable:!0});globalThis.FileSystemHandle&&(globalThis.FileSystemHandle.prototype.queryPermission??=function(e){return"granted"});V8=sB});var wvt,pMe,mMe=h(()=>{d();wvt={ReadableStream:globalThis.ReadableStream,WritableStream:globalThis.WritableStream,TransformStream:globalThis.TransformStream,DOMException:globalThis.DOMException,Blob:globalThis.Blob,File:globalThis.File},pMe=wvt});var Avt,ab,cB,QV=h(()=>{d();mMe();({WritableStream:Avt}=pMe),ab=class e extends Avt{#e;constructor(t){super(t),this.#e=t,Object.setPrototypeOf(this,e.prototype),this._closed=!1}async close(){this._closed=!0;let t=this.getWriter(),o=t.close();return t.releaseLock(),o}seek(t){return this.write({type:"seek",position:t})}truncate(t){return this.write({type:"truncate",size:t})}write(t){if(this._closed)return Promise.reject(new TypeError("Cannot write to a CLOSED writable stream"));let o=this.getWriter(),r=o.write(t);return o.releaseLock(),r}};Object.defineProperty(ab.prototype,Symbol.toStringTag,{value:"FileSystemWritableFileStream",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(ab.prototype,{close:{enumerable:!0},seek:{enumerable:!0},truncate:{enumerable:!0},write:{enumerable:!0}});globalThis.FileSystemFileHandle&&!globalThis.FileSystemFileHandle.prototype.createWritable&&!globalThis.FileSystemWritableFileStream&&(globalThis.FileSystemWritableFileStream=ab);cB=ab});var eA={};Bt(eA,{FileSystemFileHandle:()=>sb,default:()=>fMe});var kvt,ZV,Cvt,uB,sb,fMe,lb=h(()=>{d();lB();QV();rB();({INVALID:kvt,SYNTAX:ZV,GONE:Cvt}=ib),uB=Symbol("adapter"),sb=class extends V8{[uB];constructor(t){super(t),this[uB]=t}async createWritable(t={}){return new cB(await this[uB].createWritable(t))}async getFile(){return this[uB].getFile()}};Object.defineProperty(sb.prototype,Symbol.toStringTag,{value:"FileSystemFileHandle",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(sb.prototype,{createWritable:{enumerable:!0},getFile:{enumerable:!0}});if(globalThis.FileSystemFileHandle&&!globalThis.FileSystemFileHandle.prototype.createWritable){let e=new WeakMap,t,o=()=>{let n,a;onmessage=async s=>{let l=s.ports[0],c=s.data;switch(c.type){case"open":let u=c.name,p=await navigator.storage.getDirectory();for(let m of c.path)p=await p.getDirectoryHandle(m);n=await p.getFileHandle(u),a=await n.createSyncAccessHandle();break;case"write":a.write(c.data,{at:c.position}),a.flush();break;case"truncate":a.truncate(c.size);break;case"abort":case"close":a.close();break}l.postMessage(0)}};globalThis.FileSystemFileHandle.prototype.createWritable=async function(n){if(!t){let y=`(${o.toString()})()`,A=new Blob([y],{type:"text/javascript"});t=URL.createObjectURL(A)}let a=new Worker(t,{type:"module"}),s=0,l=new TextEncoder,c=await this.getFile().then(y=>y.size),u=y=>new Promise((A,k)=>{let w=new MessageChannel;w.port1.onmessage=I=>{I.data instanceof Error?k(I.data):A(I.data),w.port1.close(),w.port2.close(),w.port1.onmessage=null},a.postMessage(y,[w.port2])}),p=await navigator.storage.getDirectory(),m=await e.get(this),g=await p.resolve(m);if(g===null)throw new DOMException(...Cvt);let x;return await u({type:"open",path:g,name:this.name}),n?.keepExistingData===!1&&(await u({type:"truncate",size:0}),c=0),new cB({start:y=>{x=y},async write(y){if(y?.constructor===Object?y={...y}:y={type:"write",data:y,position:s},y.type==="write"){if(!("data"in y))throw await u({type:"close"}),new DOMException(...ZV("write requires a data argument"));if(y.position??=s,typeof y.data=="string")y.data=l.encode(y.data);else if(y.data instanceof ArrayBuffer)y.data=new Uint8Array(y.data);else if(!(y.data instanceof Uint8Array)&&ArrayBuffer.isView(y.data))y.data=new Uint8Array(y.data.buffer,y.data.byteOffset,y.data.byteLength);else if(!(y.data instanceof Uint8Array)){let k=await new Response(y.data).arrayBuffer();y.data=new Uint8Array(k)}Number.isInteger(y.position)&&y.position>=0&&(s=y.position),s+=y.data.byteLength,c+=y.data.byteLength}else if(y.type==="seek")if(Number.isInteger(y.position)&&y.position>=0){if(c=0)c=y.size,s>c&&(s=c);else throw await u({type:"close"}),new DOMException(...ZV("truncate requires a size argument"));await u(y)},async close(){await u({type:"close"}),a.terminate()},async abort(y){await u({type:"abort",reason:y}),a.terminate()}})};let r=FileSystemDirectoryHandle.prototype.getFileHandle;FileSystemDirectoryHandle.prototype.getFileHandle=async function(...n){let a=await r.call(this,...n);return e.set(a,this),a}}fMe=sb});var hMe={};Bt(hMe,{FileSystemDirectoryHandle:()=>cb,default:()=>gMe});var Tvt,Ivt,$g,cb,gMe,YV=h(()=>{d();lB();rB();({GONE:Tvt,MOD_ERR:Ivt}=ib),$g=Symbol("adapter"),cb=class e extends V8{[$g];constructor(t){super(t),this[$g]=t}async getDirectoryHandle(t,o={}){if(t==="")throw new TypeError("Name can't be an empty string.");if(t==="."||t===".."||t.includes("/"))throw new TypeError("Name contains invalid characters.");o.create=!!o.create;let r=await this[$g].getDirectoryHandle(t,o);return new e(r)}async*entries(){let{FileSystemFileHandle:t}=await Promise.resolve().then(()=>(lb(),eA));for await(let[o,r]of this[$g].entries())yield[r.name,r.kind==="file"?new t(r):new e(r)]}async*getEntries(){let{FileSystemFileHandle:t}=await Promise.resolve().then(()=>(lb(),eA));console.warn("deprecated, use .entries() instead");for await(let o of this[$g].entries())yield o.kind==="file"?new t(o):new e(o)}async getFileHandle(t,o={}){let{FileSystemFileHandle:r}=await Promise.resolve().then(()=>(lb(),eA));if(t==="")throw new TypeError("Name can't be an empty string.");if(t==="."||t===".."||t.includes("/"))throw new TypeError("Name contains invalid characters.");o.create=!!o.create;let n=await this[$g].getFileHandle(t,o);return new r(n)}async removeEntry(t,o={}){if(t==="")throw new TypeError("Name can't be an empty string.");if(t==="."||t===".."||t.includes("/"))throw new TypeError("Name contains invalid characters.");return o.recursive=!!o.recursive,this[$g].removeEntry(t,o)}async resolve(t){if(await t.isSameEntry(this))return[];let o=[{handle:this,path:[]}];for(;o.length;){let{handle:r,path:n}=o.pop();for await(let a of r.values()){if(await a.isSameEntry(t))return[...n,a.name];a.kind==="directory"&&o.push({handle:a,path:[...n,a.name]})}}return null}async*keys(){for await(let[t]of this[$g].entries())yield t}async*values(){for await(let[t,o]of this)yield o}[Symbol.asyncIterator](){return this.entries()}};Object.defineProperty(cb.prototype,Symbol.toStringTag,{value:"FileSystemDirectoryHandle",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(cb.prototype,{getDirectoryHandle:{enumerable:!0},entries:{enumerable:!0},getFileHandle:{enumerable:!0},removeEntry:{enumerable:!0}});if(globalThis.FileSystemDirectoryHandle){let e=globalThis.FileSystemDirectoryHandle.prototype;e.resolve=async function(a){if(await a.isSameEntry(this))return[];let s=[{handle:this,path:[]}];for(;s.length;){let{handle:l,path:c}=s.pop();for await(let u of l.values()){if(await u.isSameEntry(a))return[...c,u.name];u.kind==="directory"&&s.push({handle:u,path:[...c,u.name]})}}return null};async function t(n){if(await(await navigator.storage.getDirectory()).resolve(n)===null)throw new DOMException(...Tvt)}let o=e.entries;e.entries=async function*(){await t(this),yield*o.call(this)},e[Symbol.asyncIterator]=async function*(){yield*this.entries()};let r=e.removeEntry;e.removeEntry=async function(n,a={}){return r.call(this,n,a).catch(async s=>{throw s instanceof DOMException&&s.name==="UnknownError"&&!a.recursive&&!(await o.call(this).next()).done?new DOMException(...Ivt):s})}}gMe=cb});var xMe=h(()=>{d();globalThis.DataTransferItem&&!DataTransferItem.prototype.getAsFileSystemHandle&&(DataTransferItem.prototype.getAsFileSystemHandle=async function(){let e=this.webkitGetAsEntry(),[{FileHandle:t,FolderHandle:o},{FileSystemDirectoryHandle:r},{FileSystemFileHandle:n}]=await Promise.all([Promise.resolve().then(()=>(dMe(),uMe)),Promise.resolve().then(()=>(YV(),hMe)),Promise.resolve().then(()=>(lb(),eA))]);return e.isFile?new n(new t(e,!1)):new r(new o(e,!1))})});var vMe=h(()=>{d();sMe();lMe();cMe();xMe();QV();YV();lb();lB()});async function dB(){try{let e=0,t=50,o=[],r=!1;for await(let n of Dvt()){r||(await bx(!1),r=!0);let a=n.flat();for(let s of a){let{message:l}=s;!l||!l.id||!l.channel_id||!l.timestamp||(o.push(l),o.length>=t&&(await nb(o),e+=o.length,o=[]))}}if(o.length>0&&(await nb(o),e+=o.length),e===0){D.show({id:D.genId(),message:"No messages found in log file",type:D.Type.FAILURE});return}D.show({id:D.genId(),message:`Successfully imported ${e} logs`,type:D.Type.SUCCESS})}catch(e){console.error(e),D.show({id:D.genId(),message:"Error importing logs. Check the console for more information",type:D.Type.FAILURE})}}async function yMe(){let e="message-logger-logs-idb.json";try{{let t=await ui.startNativeLogExport(e);await ui.writeNativeLogChunk(t,`{ "messages": [ `);let o=!0;for await(let r of zV()){let n=o?"":`, `;o=!1;let a=n+" "+JSON.stringify(r);await ui.writeNativeLogChunk(t,a)}await ui.writeNativeLogChunk(t,` ] }`),await ui.finishNativeLogExport(t),D.show({id:D.genId(),message:"Successfully exported logs",type:D.Type.SUCCESS});return}}catch(t){console.error(t),D.show({id:D.genId(),message:"Error exporting logs. Check the console for more information",type:D.Type.FAILURE})}}async function*Evt(e){let t=new J8({paths:["$.messages.*"],keepStack:!1}),o=[],r=null;t.onValue=({value:n})=>{o.push(n)},t.onError=n=>{r=n};try{for(;;){if(r)throw r;for(;o.length>0;)yield o.shift();let n=await e();if(n===null)break;t.write(n)}}catch(n){throw n}finally{t.isEnded||t.end()}if(r)throw r;for(;o.length>0;)yield o.shift()}async function*Dvt(){{let e=await ui.getSettings(),t=await ui.startNativeLogImport(e.logsDir);try{yield*Evt(async()=>await ui.readNativeLogChunk(t))}finally{await ui.closeNativeLogImport(t)}}}var JV=h(()=>{"use strict";d();aMe();ul();C();vMe();ec();Fg()});var Pvt,Mvt,bMe,Nvt,pB,XV=h(()=>{"use strict";d();C();np();eB();Pvt=["server","guild","channel","in","user","from","message","has","before","after","around","near","during"],Mvt=Vy((e="")=>{let t=e.trim();if(!t)return e;let o=!1;t.startsWith("!")&&(o=!0,t=t.substring(t.length,1));let[r,n]=t.split(" ",2);if(!r)return e;let[a,s]=r.split(":");return!a||!s||!Pvt.includes(a)?e:{key:a,value:s,negate:o}}),bMe=e=>{let t=e.split(" ").map(Mvt),o=t.filter(n=>typeof n!="string"),r=t.filter(n=>typeof n=="string");return{queries:o,rest:r}},Nvt=/[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/,pB=(e,t,o)=>{switch(e){case"in":case"channel":let r=W.getChannel(o.channel_id);if(!r)return o.channel_id===t;let{name:n,id:a}=r;return a===t||n.toLowerCase().includes(t.toLowerCase());case"message":return o.id===t;case"from":case"user":return o.author.id===t||o.author?.username?.toLowerCase().includes(t.toLowerCase())||o.author?.globalName?.toLowerCase()?.includes(t.toLowerCase());case"guild":case"server":{let s=o.guildId??eb(o.channel_id);if(!s)return!1;let l=$e.getGuild(s);return l?l.id===t||l.name.toLowerCase().includes(t.toLowerCase()):s===t}case"before":return new Date(o.timestamp)new Date(t);case"around":case"near":case"during":return Math.abs(new Date(o.timestamp)?.getTime()-new Date(t)?.getTime())<1e3*60*60*24;case"has":switch(t){case"attachment":return o.attachments.length>0;case"image":return o.attachments.some(s=>s?.content_type?.startsWith("image"))||o.embeds.some(s=>s.image||s.thumbnail);case"video":return o.attachments.some(s=>s?.content_type?.startsWith("video"))||o.embeds.some(s=>s.video);case"embed":return o.embeds.length>0;case"link":return o.content.match(Nvt);default:return!1}default:return!1}}});function Bvt(e,t){let[o,r]=T(e);return G(()=>{let n=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(n)}},[e,t]),o}function SMe(e,t,o,r){let[n,a]=T(!0),[s,l]=T([]),[c,u]=T(0),[p,m]=T(0),[g,x]=T(0),v=Bvt(e,300);return G(()=>{FV().then(y=>m(y))},[n]),G(()=>{a(!0);let y=!0;return(async()=>{let k=Rvt(t);if(v===""){let[w,I]=await Promise.all([nB(o,r,k),_V(k)]);y&&(l(w),u(I),a(!1))}else{let w=await nB(o,Number.MAX_SAFE_INTEGER,k),{queries:I,rest:E}=bMe(v),N=w.filter(B=>{for(let _ of I){let q=pB(_.key,_.value,B.message);if(_.negate?q:!q)return!1}return E.every(_=>B.message.content.toLowerCase().includes(_.toLowerCase()))});y&&(l(N),u(Number.MAX_SAFE_INTEGER),a(!1))}})(),()=>{y=!1}},[v,o,r,t,g]),{messages:s,statusTotal:c,total:p,pending:n,reset:()=>x(y=>y+1)}}function Rvt(e){switch(e){case"Deleted":return"DELETED";case"Edited":return"EDITED";default:return"GHOST_PINGED"}}var wMe=h(()=>{"use strict";d();C();Fg();XV();ub()});function _vt({modalProps:e,initalQuery:t}){let[o,r]=T("Deleted"),[n,a]=T(t??""),[s,l]=T(It.store.sortNewest),[c,u]=T(It.store.messagesToDisplayAtOnceInLogs),p=Se(null),{messages:m,total:g,statusTotal:x,pending:v,reset:y}=SMe(n,o,s,c);return i(be,{...e,size:"lg",title:i("div",{className:vn("modal")},i(rr,{type:"top",look:"brand",className:vn("modal-tab-bar"),selectedItem:o,onItemSelect:A=>{r(A),u(It.store.messagesToDisplayAtOnceInLogs),p.current?.firstElementChild?.scrollTo(0,0)}},i(rr.Item,{className:vn("modal-tab-bar-item"),id:"Deleted"},"Deleted"),i(rr.Item,{className:vn("modal-tab-bar-item"),id:"Edited"},"Edited"),i(rr.Item,{className:vn("modal-tab-bar-item"),id:"Ghost Pinged"},"Ghost Pinged")),i("div",{className:vn("modal-filter")},i(Te,{value:n,onChange:A=>a(A),placeholder:"Filter Messages"}))),actions:[{text:`Sort ${s?"Oldest First":"Newest First"}`,variant:"secondary",onClick:()=>{l(A=>{let k=!A;return It.store.sortNewest=k,k}),p.current?.firstElementChild?.scrollTo(0,0)}},{text:"Clear Visible Logs",variant:"critical-secondary",disabled:m?.length===0,onClick:()=>Oo.show({title:"Clear Logs",body:`Are you sure you want to clear ${m.length} logs`,confirmText:"Clear",confirmVariant:"critical-primary",cancelText:"Cancel",onConfirm:async()=>{await Ug(m.map(A=>A.message_id)),y()}})},{text:"Clear All Logs",variant:"critical-primary",onClick:()=>Oo.show({title:"Clear Logs",body:"Are you sure you want to clear all the logs",confirmText:"Clear",confirmVariant:"critical-primary",cancelText:"Cancel",onConfirm:async()=>{await bx(),y()}})}]},i("div",{style:{opacity:e.transitionState===1?"1":"0"},className:`${vn("modal-content-container")} ${vn("modal-root")}`,ref:p},e.transitionState===1&&i("div",null,v&&i(Hvt,{tab:o}),!v&&m!=null&&g===0&&i(Gvt,{hasQuery:n.length!==0,reset:y}),!v&&m!=null&&i(zvt,{visibleMessages:m,canLoadMore:m.length=It.store.messagesToDisplayAtOnceInLogs,tab:o,sortNewest:s,reset:y,handleLoadMore:()=>u(A=>A+It.store.messagesToDisplayAtOnceInLogs)}))))}function Uvt({visibleMessages:e,canLoadMore:t,sortNewest:o,tab:r,reset:n,handleLoadMore:a}){return e.length===0?i($vt,{tab:r}):i("div",{className:vn("modal-content-inner")},e.map(({message:s},l)=>i(jvt,{key:s.id,log:{message:s},reset:n,isGroupStart:qvt(s,e[l-1]?.message,o)})),t&&i(de,{style:{marginTop:"1rem",width:"100%"},size:"small",onClick:()=>a()},"Load More"))}function $vt({tab:e}){let t=n=>{switch(n){case"Deleted":return{nextTab:"Edited",lastTab:"Ghost Pinged"};case"Edited":return{nextTab:"Ghost Pinged",lastTab:"Deleted"};case"Ghost Pinged":return{nextTab:"Deleted",lastTab:"Edited"};default:return{nextTab:"",lastTab:""}}},{nextTab:o,lastTab:r}=t(e);return i("div",{className:vn("modal-empty-logs","modal-content-inner"),style:{textAlign:"center"}},i(Y,{size:"lg"},"No results in ",i("b",null,e),"."),i(Y,{size:"lg",style:{marginTop:"0.2rem"}},"Maybe try ",i("b",null,o)," or ",i("b",null,r)))}function Gvt({hasQuery:e,reset:t}){return i("div",{className:vn("modal-empty-logs","modal-content-inner"),style:{textAlign:"center"}},i(pe,{flexDirection:"column",style:{position:"relative"}},i(Y,{size:"lg"},"Empty eh"),!e&&i(f,null,i(ve,{text:"ML Enhanced now stores logs in indexeddb. You need to import your old logs from the logs directory. Importing wont overwrite existing logs"},({onMouseEnter:o,onMouseLeave:r})=>i("div",{className:vn("modal-info-icon"),onMouseEnter:o,onMouseLeave:r},i(gi,null))),i(de,{onClick:()=>dB().then(()=>t())},"Import Logs"))))}function Hvt({tab:e}){return i("div",{className:vn("modal-empty-logs","modal-content-inner"),style:{textAlign:"center"}},i(pe,{flexDirection:"column",style:{position:"relative"}},i(Y,{size:"lg"},"Loading ",e," Logs...")))}function jvt({log:e,isGroupStart:t,reset:o}){let r=Ne(()=>G8(e),[e]);if(!r)return null;let n=W.getChannel(r?.channel_id),a=$e.getGuild(n?.guild_id);return i("div",{onContextMenu:s=>{rt.openContextMenu(s,()=>i(P.Menu,{navId:"message-logger",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Message Logger"},i(P.MenuItem,{key:"jump-to-message",id:"jump-to-message",label:"Jump To Message",action:()=>{Yt.transitionTo(`/channels/${W.getChannel(r.channel_id)?.guild_id??"@me"}/${r.channel_id}${r.id?"/"+r.id:""}`),ir()}}),i(P.MenuItem,{key:"open-user-profile",id:"open-user-profile",label:"Open user profile",action:()=>{ir(),Ko(r.author.id)}}),i(P.MenuItem,{key:"copy-content",id:"copy-content",label:"Copy Content",action:()=>ft(r.content)}),i(P.MenuItem,{key:"copy-user-id",id:"copy-user-id",label:"Copy User ID",action:()=>ft(r.author.id)}),i(P.MenuItem,{key:"copy-message-id",id:"copy-message-id",label:"Copy Message ID",action:()=>ft(r.id)}),i(P.MenuItem,{key:"copy-channel-id",id:"copy-channel-id",label:"Copy Channel ID",action:()=>ft(r.channel_id)}),e.message.guildId!=null&&i(P.MenuItem,{key:"copy-server-id",id:"copy-server-id",label:"Copy Server ID",action:()=>ft(e.message.guildId)}),i(P.MenuItem,{key:"delete-log",id:"delete-log",label:"Delete Log",color:"danger",action:()=>yx(e.message.id).then(()=>o())})))}},i(Ovt,{className:`${vn("modal-msg-preview")} ${r.deleted?"messagelogger-deleted":""}`,author:r.author,message:r,compact:!1,isGroupStart:t,hideSimpleEmbedContent:!1,childrenAccessories:i(Fvt,{channelMessageProps:{channel:W.getChannel(r.channel_id)||new Lvt({id:""}),message:r,compact:!1,groupId:"1",id:r.id,isLastItem:!1,isHighlight:!1,renderContentOnly:!1},hasSpoilerEmbeds:!1,isInteracting:!1,showClydeAiEmbeds:!0,isAutomodBlockedMessage:!1})}),It.store.ShowWhereMessageIsFrom&&n?.isDM()&&r?.author&&i("span",{className:`${vn("modal-from")} ${r.deleted?vn("modal-from-deleted"):vn("modal-from-edited")}`},"From ",r.author.username,"'s DMs"),It.store.ShowWhereMessageIsFrom&&n?.isGroupDM()&&n?.name&&i("span",{className:`${vn("modal-from")} ${r.deleted?vn("modal-from-deleted"):vn("modal-from-edited")}`},"From ",n.name," Group DM"),It.store.ShowWhereMessageIsFrom&&!n?.isDM()&&!n?.isGroupDM()&&n?.name&&a?.name&&i("span",{className:`${vn("modal-from")} ${r.deleted?vn("modal-from-deleted"):vn("modal-from-edited")}`},"From ",n.name," in ",a.name))}function qvt(e,t,o){if(!e||!t||e.id===t.id)return!0;let[r,n]=o?[t,e]:[e,t];return r.author.id!==n.author.id?!0:Math.abs((new Date(r.timestamp)?.getTime()-new Date(n.timestamp)?.getTime())/(1e3*60))>=5}var Lvt,Ovt,Fvt,zvt,ip,ub=h(()=>{"use strict";d();yt();Tt();Lt();ot();_e();Kt();le();C();Fg();ec();np();JV();wMe();Lvt=Oe(".is_message_request_timestamp,"),Ovt=Vo(()=>Ni(e=>e?.type?.toString().includes("previewLinkTarget:")&&!e?.type?.toString().includes("HAS_THREAD"))),Fvt=Vo(()=>rf("channelMessageProps:{message:"));zvt=Vo(()=>Uvt);ip=e=>ce(t=>i(_vt,{modalProps:t,initalQuery:e}))});function AMe(){return i(il,{className:vn("toolbox-btn"),onClick:()=>ip(),tooltip:"Open Logs",icon:cS})}var kMe=h(()=>{"use strict";d();zp();ot();ec();ub()});var VV={};Bt(VV,{addMessage:()=>mB});var CMe,Wvt,mB,eee=h(()=>{"use strict";d();ec();Fg();np();oB();CMe=0,Wvt=60*1e3,mB=async(e,t,o)=>{It.store.saveImages&&t==="DELETED"&&await BV(e);let r=H8(e);if(await GV(r,t),It.store.timeBasedCleanupMinutes>0){let n=Date.now();if(n-CMe>Wvt){CMe=n;let a=new Date(n-It.store.timeBasedCleanupMinutes*60*1e3).toISOString(),s=await q8(a,o,It.store.preserveCurrentChannel);s.length>0&&(pa.info(`Deleting ${s.length} old server messages older than ${It.store.timeBasedCleanupMinutes} minutes`),await Ug(s.map(l=>l.message_id)))}}if(It.store.messageLimit>0){let n=await _r.count("messages");if(n>It.store.messageLimit){let a=n-It.store.messageLimit;if(a<=0||a>=It.store.messageLimit)return;let s=await UV(a);pa.info(`Deleting ${a} oldest messages`),await Ug(s.map(l=>l.message_id))}}}});function TMe(e,t){return function({option:r}){return i("section",null,i(oe,{tag:"h5"},r.description),i(Qvt,{settingsKey:e,successMessage:t}))}}function Qvt({settingsKey:e,successMessage:t}){let o=It.store[e];function r(a){let s=a.split("\\").length>1?a.split("\\"):a.split("/");return s.slice(s.length-2,s.length).join("\\")}async function n(){try{let a=await ui.chooseDir(e);return It.store[e]=a,D.show({id:D.genId(),type:D.Type.SUCCESS,message:t})}catch{D.show({id:D.genId(),type:D.Type.FAILURE,message:"Failed to update directory"})}}return i("div",{className:X(vn("folder-upload-container"),Kvt.input)},i("div",{onClick:()=>ft(o),className:vn("folder-upload-input")},o==null||o===Jy?"Choose Folder":r(o)),i(de,{className:vn("folder-upload-button"),size:"small",onClick:n},"Browse"))}var Kvt,IMe,EMe,DMe=h(()=>{"use strict";d();Tt();We();ec();Xy();_e();Be();le();C();Kvt=Ie("input","inputWrapper","editable");IMe=TMe("imageCacheDir","Successfully updated Image Cache Dir"),EMe=TMe("logsDir","Successfully updated Logs Dir")});var tee,PMe=h(()=>{"use strict";d();tee=["com","exe","dll","ocx","ps1","ps1xml","ps2","ps2xml","psc1","psc2","msh","msh1","msh2","mshxml","msh1xml","msh2xml","js","jse","vbs","vb","vbe","cmd","bat","hta","inf","reg","pif","scr","cpl","scf","msc","pol","hlp","chm","ws","wsf","wsc","wsh","jar","z","bz2","cab","tar","ace","msi","msp","mst","msu","ppkg","bak","tmp","ost","pst","pkg","iso","img","vhd","vhdx","application","lock","lck","sln","cs","csproj","resx","config","resources","pdb","manifest","doc","dot","wbk","xls","xlt","xlm","xla","ppt","pot","pps","ade","adp","mdb","cdb","mda","mdn","mdt","mdf","mde","ldb","wps","xlsb","xlam","xll","xlw","ppam"]});function Zvt(){let[e,t]=T(!1);return i(de,{disabled:e,onClick:async()=>{t(!0);try{await dB()}finally{t(!1)}}},e?"Importing...":"Import Logs")}function Yvt(){let[e,t]=T(!1);return i(de,{disabled:e,onClick:async()=>{t(!0);try{await yMe()}finally{t(!1)}}},e?"Exporting...":"Export Logs")}var It,MMe=h(()=>{"use strict";d();j();Tt();Pe();R();C();ec();DMe();ub();PMe();Xy();JV();It=M({saveMessages:{default:!0,type:3,description:"Whether to save the deleted and edited messages."},saveImages:{type:3,description:"Save deleted attachments.",default:!1},sortNewest:{default:!0,type:3,description:"Sort logs by newest."},cacheMessagesFromServers:{default:!1,type:3,description:"Usually message logger only logs from whitelisted ids and dms, enabling this would mean it would log messages from all servers as well. Note that this may cause the cache to exceed its limit, resulting in some messages being missed. If you are in a lot of servers, this may significantly increase the chances of messages being logged, which can result in a large message record and the inclusion of irrelevant messages."},ignoreBots:{type:3,description:"Whether to ignore messages by bots",default:!1,onChange(){Me.plugins.MessageLogger.ignoreBots=!1}},ignoreWebhooks:{type:3,description:"Whether to ignore messages by webhooks",default:!1},ignoreSelf:{type:3,description:"Whether to ignore messages by yourself",default:!1,onChange(){Me.plugins.MessageLogger.ignoreSelf=!1}},ignoreMutedGuilds:{default:!1,type:3,description:"Messages in muted guilds will not be logged. Whitelisted users/channels in muted guilds will still be logged."},ignoreMutedCategories:{default:!1,type:3,description:"Messages in channels belonging to muted categories will not be logged. Whitelisted users/channels in muted guilds will still be logged."},ignoreMutedChannels:{default:!1,type:3,description:"Messages in muted channels will not be logged. Whitelisted users/channels in muted guilds will still be logged."},alwaysLogDirectMessages:{default:!0,type:3,description:"Always log DMs"},alwaysLogCurrentChannel:{default:!0,type:3,description:"Always log current selected channel. Blacklisted channels/users will still be ignored."},permanentlyRemoveLogByDefault:{default:!1,type:3,description:"Vencord's base MessageLogger remove log button wiil delete logs permanently"},hideMessageFromMessageLoggers:{default:!1,type:3,description:"When enabled, a context menu button will be added to messages to allow you to delete messages without them being logged by other loggers. Might not be safe, use at your own risk."},ShowLogsButton:{default:!0,type:3,description:"Toggle to whenever show the toolbox or not",restartNeeded:!0},ShowWhereMessageIsFrom:{default:!1,type:3,description:"Show message channel/author name and server name"},messagesToDisplayAtOnceInLogs:{default:100,type:1,description:"Number of messages to display at once in logs & number of messages to load when loading more messages in logs."},hideMessageFromMessageLoggersDeletedMessage:{default:"redacted eh",type:0,description:"The message content to replace the message with when using the hide message from message loggers feature."},messageLimit:{default:200,type:1,description:"Maximum number of messages to save. Older messages are deleted when the limit is reached. 0 means there is no limit"},attachmentSizeLimitInMegabytes:{default:12,type:1,description:"Maximum size of an attachment in megabytes to save. Attachments larger than this size will not be saved."},attachmentFileExtensions:{default:"png,jpg,jpeg,gif,webp,mp4,webm,mp3,ogg,wav",type:0,description:"Comma separated list of file extensions to save. Attachments with file extensions not in this list will not be saved.",onChange:e=>{let t="";if(e){let o=e.split(",").map(n=>n.trim().toLowerCase()),r=o.filter(n=>tee.includes(n));r.length>0?(console.warn("Rejected invalid file extensions:",r),t=o.filter(n=>!tee.includes(n)).join(",")):t=o.join(",")}return ui.updateAllowedExtensions(t).catch(o=>{console.error("Failed to sync attachment extensions natively:",o)}),t}},cacheLimit:{default:1e3,type:1,description:"Maximum number of messages to store in the cache. Older messages are deleted when the limit is reached. This helps reduce memory usage and improve performance. 0 means there is no limit"},timeBasedCleanupMinutes:{default:0,type:1,description:"Automatically remove messages from servers that are older than this many minutes. Set to 0 to disable time-based cleanup."},preserveCurrentChannel:{default:!0,type:3,description:"When enabled, messages in your currently selected channel are not affected by time-based cleanup."},whitelistedIds:{default:"",type:0,description:"Whitelisted server, channel, or user IDs."},blacklistedIds:{default:"",type:0,description:"Blacklisted server, channel, or user IDs."},imageCacheDir:{type:6,description:"Select saved images directory",component:H.wrap(IMe)},logsDir:{type:6,description:"Select logs directory",component:H.wrap(EMe)},importLogs:{type:6,description:"Import Logs From File",component:Zvt},exportLogs:{type:6,description:"Export Logs From IndexedDB",component:Yvt},clearLogsOnRestart:{type:3,description:"Clear logs when Discord restarts.",default:!1,restartNeeded:!0},openLogs:{type:6,description:"Open Logs",component:()=>i(de,{onClick:()=>ip()},"Open Logs")},openImageCacheFolder:{type:6,description:"Opens the image cache directory",component:()=>i(de,{disabled:It.store.imageCacheDir==null||It.store.imageCacheDir===Jy,onClick:()=>ui.showItemInFolder()},"Open Image Cache Folder")},clearLogs:{type:6,description:"Clear Logs",component:()=>i(de,{variant:"dangerPrimary",onClick:()=>Oo.show({title:"Clear Logs",body:"Are you sure you want to clear all logs?",confirmVariant:"critical-primary",confirmText:"Clear",cancelText:"Cancel",onConfirm:async()=>{await bx()}})},"Clear Logs")}})});function NMe(e,t,o){let r=fB[t](o);if(!r)return null;let n=Array.isArray(r)?r:[r],a=n.every(m=>It.store[e].includes(m)),s=e==="blacklistedIds"?"whitelistedIds":"blacklistedIds",l=n.some(m=>It.store[s].includes(m)),c=e==="blacklistedIds"?"Blacklist":"Whitelist",u=()=>n.forEach(m=>QPe(e,m)),p=()=>n.forEach(m=>CV(e,m));return i(P.MenuItem,{id:`${e}-${t}-${n[0]}`,label:l?`Move ${t} to ${c}`:a?`Remove ${t} From ${c}`:`${c} ${t}`,action:a?p:u})}function Jvt(e,t){let o=fB[e](t);return!o||Array.isArray(o)?null:i(P.MenuItem,{id:`open-logs-for-${e.toLowerCase()}`,label:`Open Logs For ${e}`,action:()=>ip(`${e.toLowerCase()}:${o}`)})}var fB,ap,BMe,RMe,LMe=h(()=>{"use strict";d();Fo();C();ub();Fg();ec();np();fB={Folder:e=>e?.folderId&&jr?.getGuildFolders?.().find(t=>t?.folderId===e.folderId)?.guildIds,Server:e=>e?.guild?.id,User:e=>e?.message?.author?.id||e?.user?.id,Channel:e=>e.message?.channel_id||e.channel?.id};ap=(e,t)=>{t&&(e.some(o=>o?.props?.id==="message-logger")||e.push(i(P.MenuSeparator,null),i(P.MenuItem,{id:"message-logger",label:"Message Logger"},i(P.MenuItem,{id:"open-logs",label:"Open Logs",action:()=>ip()}),Object.keys(fB).map(o=>Jvt(o,t)),i(P.MenuSeparator,null),Object.keys(fB).map(o=>i(V.Fragment,{key:o},NMe("blacklistedIds",o,t),NMe("whitelistedIds",o,t))),t.navId==="message"&&(t.message?.deleted||t.message?.editHistory?.length>0)&&i(f,null,i(P.MenuSeparator,null),i(P.MenuItem,{id:"remove-message",label:t.message?.deleted?"Remove Message (Permanent)":"Remove Message History (Permanent)",color:"danger",action:()=>yx(t.message.id).then(()=>{t.message.deleted?Q.dispatch({type:"MESSAGE_DELETE",channelId:t.message.channel_id,id:t.message.id,mlDeleted:!0}):t.message.editHistory=[]}).catch(()=>D.show({type:D.Type.FAILURE,message:"Failed to remove message",id:D.genId()}))})),It.store.hideMessageFromMessageLoggers&&t.navId==="message"&&t.message?.author?.id===L.getCurrentUser().id&&t.message?.deleted===!1&&i(f,null,i(P.MenuSeparator,null),i(P.MenuItem,{id:"hide-from-message-loggers",label:"Delete Message (Hide From Message Loggers)",color:"danger",action:async()=>{await fo.deleteMessage(t.message.channel_id,t.message.id),fo._sendMessage(t.message.channel_id,{content:It.store.hideMessageFromMessageLoggersDeletedMessage,tts:!1,invalidEmojis:[],validNonShortcutEmojis:[]},{nonce:t.message.id})}})))))},BMe=()=>{tl("message",ap),tl("channel-context",ap),tl("user-context",ap),tl("guild-context",ap),tl("gdm-context",ap)},RMe=()=>{vc("message",ap),vc("channel-context",ap),vc("user-context",ap),vc("guild-context",ap),vc("gdm-context",ap)}});var gB,OMe=h(()=>{"use strict";d();ec();gB=class{map=new Map;constructor(){}set(t,o){It.store.cacheLimit>0&&this.map.size>=It.store.cacheLimit&&this.map.delete(this.map.keys().next().value),this.map.set(t,o)}get(t){return this.map.get(t)}clear(){this.map.clear()}}});async function bx(e=!0){await HV(e),Sx.clear()}async function UMe(e){if(e.mlDeleted){It.store.permanentlyRemoveLogByDefault&&await yx(e.id);return}if(!oee.has(e.id))try{oee.add(e.id);let t=nee?.(e.channelId,e.id);if(t==null){if(!Sx.get(`${e.channelId},${e.id}`))return;t={...Sx.get(`${e.channelId},${e.id}`),deleted:!0}}let o=tb(t);if(kV({channelId:t?.channel_id??e.channelId,guildId:e.guildId??t.guildId??t.guild_id,authorId:t?.author?.id,bot:t?.bot||t?.author?.bot,flags:t?.flags,ghostPinged:o,isCachedByUs:t.ourCache,webhookId:t?.webhookId}))return Q.dispatch({type:"MESSAGE_DELETE",channelId:e.channelId,id:e.id,mlDeleted:!0});if(t==null||t.channel_id==null||!t.deleted)return;if(e.isBulk)return t;let r=Fe.getChannelId();await mB(t,o?"GHOST_PINGED":"DELETED",r)}finally{oee.delete(e.id)}}async function Xvt({channelId:e,guildId:t,ids:o}){let r=[];for(let n of o){let a=await UMe({type:"MESSAGE_DELETE",channelId:e,guildId:t,id:n,isBulk:!0});a&&r.push(a)}if(await nb(r),r.length>0&&It.store.timeBasedCleanupMinutes>0){let n=Fe.getChannelId(),a=new Date(Date.now()-It.store.timeBasedCleanupMinutes*60*1e3).toISOString(),s=await q8(a,n,It.store.preserveCurrentChannel);s.length>0&&(pa.info(`Deleting ${s.length} old server messages older than ${It.store.timeBasedCleanupMinutes} minutes (bulk cleanup)`),await Ug(s.map(l=>l.message_id)))}}async function Vvt(e){let t=Sx.get(`${e.message.channel_id},${e.message.id}`);if(kV({channelId:e.message?.channel_id,guildId:e.guildId??e.guild_id,authorId:e.message?.author?.id,bot:e.message?.author?.bot,flags:e.message?.flags,ghostPinged:tb(e.message),isCachedByUs:t?.ourCache??!1})){let n=_Me.getOrCreate(e.message.channel_id),a=n.get(e.message.id);a&&(a.editHistory=[],_Me.commit(n));return}let o=nee?.(e.message.channel_id,e.message.id);if(o==null&&t!=null&&e.message.content!=null&&t.content!==e.message.content&&(o={...t,content:e.message.content,editHistory:[...t.editHistory??[],{content:t.content,timestamp:new Date().toISOString()}]},Sx.set(`${e.message.channel_id},${e.message.id}`,o)),o==null||o.channel_id==null||o.editHistory==null||o.editHistory.length===0)return;let r=Fe.getChannelId();await mB(o,"EDITED",r)}function eyt(e){if(!It.store.cacheMessagesFromServers&&e.guildId!=null){let t=[e.channelId,e.message?.author?.id,e.guildId];if(!It.store.whitelistedIds.split(",").some(r=>t.includes(r)))return}Sx.set(`${e.message.channel_id},${e.message.id}`,WPe(e.message))}async function tyt(e){try{if(!e.ok){pa.error("Failed to fetch messages",e);return}if(!Array.isArray(e.body)){pa.error("Failed to fetch messages: response body is not an array",e);return}if(e.body.length===0)return;let t=e.body[e.body.length-1],o=await $V(t.channel_id,t.timestamp);if(!o.length)return;let r=o.filter(a=>a.status==="DELETED"||a.status==="GHOST_PINGED");for(let a of e.body){let s=o.find(l=>l.message_id===a.id);s!=null&&s.message.editHistory&&s.message.editHistory.length>0&&(a.editHistory=s.message.editHistory)}let n=a=>L.getUser(a)||e.body.find(s=>s.author.id===a);for(let a=0,s=o.length;aa.message)}catch(t){pa.error("Failed to fetch messages",t)}}var ui,pa,Sx,vn,FMe,_Me,nee,oee,hB,ec=h(()=>{"use strict";d();MPe();ot();O();we();He();R();le();C();kMe();ub();Fg();eee();eee();MMe();np();LMe();np();OMe();XV();oB();NV();ui=qPe(),pa=new ie("MessageLoggerEnhanced","#f26c6c"),Sx=new gB,vn=K("vc-msg-logger-enhanced-"),FMe=!1,_Me=Ae("commit","getOrCreate");oee=new Set;hB=S({name:"MessageLoggerEnhanced",authors:[b.Aria,F.keircn],description:"Improves MessageLogger with edited message history, ghost ping detection and more",tags:["Chat","Servers"],dependencies:["MessageLogger","HeaderBarAPI"],patches:[{find:"_tryFetchMessagesCached",replacement:[{match:/(?<=\.get\({url.+?then\()(\i)=>\(/,replace:"async $1=>(await $self.processMessageFetch($1),"},{match:/(?<=type:"LOAD_MESSAGES_SUCCESS",.{1,100})messages:(\i)/,replace:"get messages() {return $self.coolReAddDeletedMessages($1, this);}"}]},{find:".PREMIUM_REFERRAL&&(",replacement:{match:/deleted:\i\.deleted, editHistory:\i\.editHistory,/,replace:"deleted:$self.getDeleted(...arguments), editHistory:$self.getEdited(...arguments),"}},{find:"=!0,disableInteraction:",replacement:{match:/childrenHeader:.{0,100}childrenMessageContent/,replace:"childrenAccessories:arguments[0].childrenAccessories || null,$&"}},{find:".handleImageLoad)",replacement:{match:/(componentDidMount\(\){)(.{1,150}===(.+?)\.LOADING)/,replace:"$1if(this.props?.src?.startsWith('blob:') && this.props?.item?.type === 'VIDEO')return this.setState({readyState: $3.READY});$2"}},{find:"Using PollReferenceMessageContext without",replacement:{match:/(?:\i\.)?\i\.(?:default\.)?focusMessage\(/,replace:"!(arguments[0]?.message?.deleted || arguments[0]?.message?.editHistory?.length > 0) && $&"}},{find:".ATTACHMENTS_REFRESH_URLS,",replacement:{match:/\i\.attachments\.some\(\i\)\|\|\i\.embeds\.some/,replace:"!arguments[0].deleted && $&"}}],settings:It,toolboxActions:{"Message Logger"(){ip()}},headerBarButton:{icon:cS,render(){return It.store.ShowLogsButton?AMe():null}},processMessageFetch:tyt,openLogModal:ip,doesMatch:pB,reAddDeletedMessages:AV,LoggedMessageManager:VV,ImageManager:MV,imageUtils:LV,idb:jV,coolReAddDeletedMessages:(e,t)=>{try{e.extra&&AV(e,e.extra,!t.hasMoreAfter&&!t.isBefore,!t.hasMoreBefore&&!t.isAfter)}catch(o){pa.error("Failed to re-add deleted messages",o)}finally{return e}},isDeletedMessage:e=>Sx.get(e)?.deleted??!1,getDeleted(e,t){let o=t?.deleted;return o==null&&e?.deleted!=null?e.deleted:o},getEdited(e,t){let o=t?.editHistory;return o==null&&e?.editHistory!=null&&e.editHistory.length>0?e.editHistory.map(tB):o},flux:{MESSAGE_DELETE:UMe,MESSAGE_DELETE_BULK:Xvt,MESSAGE_UPDATE:Vvt,MESSAGE_CREATE:eyt},async start(){if(this.oldGetMessage=nee=lt.getMessage,lt.getMessage=(r,n)=>{let a=rp.get(n);if(!a)return this.oldGetMessage(r,n);if(a.deleted)return G8({message:a});let s=this.oldGetMessage(r,n);return G8({message:{...a,...s??{}}})},ui.init(),It.store.clearLogsOnRestart&&!FMe)try{await bx(!1),FMe=!0}catch(r){pa.error("Failed to clear logs on restart",r)}let{imageCacheDir:e,logsDir:t,attachmentFileExtensions:o}=await ui.getSettings();It.store.imageCacheDir=e,It.store.logsDir=t,It.store.attachmentFileExtensions=o??"none",BMe()},stop(){RMe(),lt.getMessage=this.oldGetMessage}})});var zMe,xB,$Me=h(()=>{"use strict";d();on();j();O();_e();R();co();C();zMe=M({users:{type:0,description:"Comma separated list of user ids to get message toasts for",default:"",isValid(e){if(e==="")return!0;let t=e.split(",").map(o=>o.trim());for(let o of t)if(!/\d+/.test(o))return`${o} isn't a valid user id`;return!0}}}),xB=S({authors:[F.cassie,F.mochienya],name:"MessageNotifier",description:"Get toasts for when chosen users send a message",tags:["Chat","Notifications"],settings:zMe,flux:{MESSAGE_CREATE({message:e,channelId:t,guildId:o}){if(e.type!==0||zo()?.id===t||!zMe.store.users.split(",").map(c=>c.trim()).includes(e.author.id))return;let n=qe.getNickname(e.author.id)??e.author.globalName??e.author.username,a=$e.getGuild(o),s=W.getChannel(t),l=a?`${a.name}#${s.name}`:s?.name??"their dms";xw.showNotification({title:`${n} sent a message`,body:`Click to jump to ${l}`,onClick(){Yt.transitionTo(`/channels/${a?.id??"@me"}/${s.id}/${e.id}`)}})}}})});var GMe=h(()=>{});function ayt(e,t){return!e?.length||!Ve($h.name)?null:$h.patchActivityList({activities:e,user:t,hideTooltip:!1})}function syt(e=""){return e==="image/gif"?"gif":e.startsWith("image/")?"image":e.startsWith("video/")?"video":"file"}function lyt(e){let t=Date.now()-e,o=Math.floor(t/6e4),r=Math.floor(t/36e5),n=Math.floor(t/864e5);return n>=365?`${Math.floor(n/365)}y`:n>=30?`${Math.floor(n/30)}mo`:n>0?`${n}d`:r>0?`${r}h`:`${Math.max(1,o)}m`}function qMe(e,t,o=t+"s"){return e===1?`1 ${t}`:`${e} ${o}`}function cyt(e){if(e.content)return/https?:\/\/(\S+\.gif|tenor\.com|giphy\.com|klipy\.com)/i.test(e.content)?{text:"sent a GIF",icon:"gif"}:{text:kt.parseInlineReply(e.content)};if(e.flags&8192)return{text:"voice message",icon:"voice"};if(e.attachments?.length){let t=e.attachments.map(a=>syt(a.content_type)),o=t.length,r=t[0];return t.every(a=>a===r)?{text:qMe(o,iyt[r]),icon:r}:{text:qMe(o,"file"),icon:"file"}}return e.stickerItems?.length?{text:e.stickerItems[0].name,icon:"sticker"}:null}function WMe({channel:e,user:t}){let o=ye([lt],()=>lt.getLastMessage(e.id));if(e.isSystemDM())return i(f,null,"Official Discord Message");let r=Ve(tm.name)?tm.getTypingMemberListProfilesReactionsVoiceNameText({user:t??o?.author,type:"membersList"}):null;if(!o)return e.isMultiUserDM()?i(f,null,e.recipients.length+1," Members"):null;let n=cyt(o);if(!n)return null;let a=L.getCurrentUser()?.id,l=o.author.id===a?"You":r||qe.getNickname(o.author.id)||o.author.globalName||o.author.username,c=n.icon?ryt[n.icon]:null;return i("div",{className:X(vB.container,vB.textXs,tA("preview"))},i("span",{className:vB.truncated},l,": ",n.text),c&&i("span",{className:tA("icon")},i(c,{size:"xxs",className:vB.icon})))}function uyt({channel:e,user:t,activities:o,applicationStream:r,voiceChannel:n,showActivity:a}){if(a)return i(KMe,{user:t,activities:o,voiceChannel:n,applicationStream:r});let s=ayt(o,t);return s?i("div",{className:HMe.subtext},i("div",{className:tA("activity-row")},i(WMe,{channel:e,user:t}),s)):i("div",{className:HMe.subtext},i(WMe,{channel:e,user:t}))}function dyt({channel:e}){let t=ye([lt],()=>lt.getLastMessage(e.id));if(!t)return null;let o=en.extractTimestamp(t.id),r=sr.isMessagesFavorite(e?.id),n=R0.getUserExperimentBucket("2026-01-favorites-server")>0,a=tA(n||r?"timestamp-favorites":"timestamp");return i("span",{className:a},lyt(o))}function pyt(e,t){if(!t)return!1;if(!e)return!0;let o=en.extractTimestamp(e.id);return Date.now()-o>nyt}var tA,HMe,vB,oyt,jMe,KMe,nyt,ree,ryt,iyt,yB,QMe=h(()=>{"use strict";d();GMe();Jt();j();ot();RQ();rT();O();we();Be();R();co();le();C();tA=K("vc-message-peek-"),HMe=Ie("subtext","channel","interactive"),vB=Ie("textWithIconContainer","icon","truncated","container","textXs"),oyt=Ae("fetchMessages","sendMessage"),jMe=Oe(".OFFLINE||",".INVISIBLE)return!1"),KMe=he('"ActivityStatus"'),nyt=3600*1e3,ree=M({hideMuted:{type:3,description:"Hide message previews and timestamps for muted DMs and group chats.",default:!1}}),ryt={image:On,file:DU,voice:e1,sticker:PU,gif:MU,video:NU},iyt={gif:"GIF",image:"image",video:"video",file:"file"};yB=S({name:"MessagePeek",description:"Shows the last message preview and timestamp in the Direct Messages list.",dependencies:["MemberListDecoratorsAPI"],tags:["Appearance","Chat"],authors:[b.prism,F.justjxke],settings:ree,patches:[{find:"PrivateChannel.renderAvatar",replacement:{match:/,subText:\i\.isSystemDM\(\).{0,700}:null,(?=name:)/,replace:",subText:$self.getSubText(arguments[0]),"}}],async start(){let e=W.getSortedPrivateChannels().slice(0,25).filter(t=>!lt.getLastMessage(t.id));for(let t=0;toyt.fetchMessages({channelId:r.id,limit:1}))),t+5setTimeout(r,3e3))}},renderMemberListDecorator({channel:e}){return!e||ree.store.hideMuted&&sr.isChannelMuted(null,e.id)?null:i(dyt,{channel:e})},getSubText(e){let{channel:t,user:o,activities:r,status:n,applicationStream:a,voiceChannel:s}=e;if(ree.store.hideMuted&&sr.isChannelMuted(null,t.id))return jMe({activities:r,status:n,applicationStream:a,voiceChannel:s})?i(KMe,{user:o,activities:r,voiceChannel:s,applicationStream:a}):null;let l=lt.getLastMessage(t.id),c=jMe({activities:r,status:n,applicationStream:a,voiceChannel:s}),u=pyt(l,c);return i(uyt,{channel:t,user:o,activities:r,status:n,applicationStream:a,voiceChannel:s,showActivity:u})}})});var ZMe=h(()=>{});function bB(e){return new Set(e.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean))}function YMe(){return bB(Hs.store.excludedLanguages)}function JMe(){return bB(Hs.store.ignoredGuilds)}function XMe(){return bB(Hs.store.ignoredChannels)}function VMe(){return bB(Hs.store.ignoredUsers)}var Hs,iee=h(()=>{"use strict";d();j();R();Hs=M({targetLanguage:{type:0,description:"Target language code for translations (e.g. en, es, fr, de, ja).",default:"en"},excludedLanguages:{type:0,description:"Language codes to exclude from translation (e.g. en, es, fr, de, ja).",default:"en"},confidenceRequirement:{type:5,description:"Minimum confidence (0 to 1) required to show a translation.",markers:zt(0,1,.1),default:.8},autoTranslate:{type:3,description:"Automatically translate messages as they appear.",default:!0},skipOwnMessages:{type:3,description:"Do not translate your own messages.",default:!0},skipBotMessages:{type:3,description:"Do not translate bot messages.",default:!1},ignoredGuilds:{type:0,description:"Comma-separated list of server IDs to not translate in.",default:""},ignoredChannels:{type:0,description:"Comma-separated list of channel IDs to not translate in.",default:""},ignoredUsers:{type:0,description:"Comma-separated list of user IDs to not translate.",default:""},showIndicator:{type:3,description:"Append a small (translated) indicator to translated messages.",default:!0},showOriginal:{type:4,description:"Show the original and translated text.",options:[{label:"Don't show original.",value:"no-orig",default:!0},{label:"Show original in subtext",value:"orig-in-subtext"},{label:"Show original message, translation in subtext",value:"trans-in-subtext"}]}})});function aee(e){return oA.get(e)}function eNe(e,t){return nA.get(e)===t}function tNe(e){return SB.has(e)}function oNe(e){oA.delete(e),nA.delete(e)}async function fyt(e,t){let o=`https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=${t}&dt=t&dj=1&q=${encodeURIComponent(e)}`,r=await fetch(o);if(!r.ok)throw new Error(`Translation API returned ${r.status} ${r.statusText}`);return await r.json()}async function nNe(e,t){if(SB.has(e))return null;if(oA.has(e))return oA.get(e);SB.add(e);try{let o=Hs.store.targetLanguage.trim().toLowerCase(),r=await fyt(t,o),n=r.src.trim().toLowerCase();if(n===o||r.confidencel.trans).filter(Boolean).join("");if(!a||a===t)return nA.set(e,t),null;let s={original:t,translated:a,sourceLang:r.src};return oA.set(e,s),s}catch(o){return myt.error("Translation failed",o),nA.set(e,t),null}finally{SB.delete(e)}}var myt,oA,SB,nA,rNe=h(()=>{"use strict";d();He();iee();myt=new ie("MessageTranslate"),oA=new Map,SB=new Set,nA=new Map});function gyt(e){if(!e.content||typeof e.content!="string"||eNe(e.id,e.content))return!1;if(Hs.store.skipOwnMessages){let o=L.getCurrentUser()?.id;if(o&&e.author?.id===o)return!1}if(Hs.store.skipBotMessages&&e.author?.bot||e.author&&VMe().has(e.author.id)||e.channel_id&&XMe().has(e.channel_id))return!1;let t=e.channel_id?W.getChannel(e.channel_id)?.guild_id:null;return!(t&&JMe().has(t))}function hyt(e){let t=lt.getMessage(e.channel_id,e.id);t&&Q.dispatch({type:"MESSAGE_UPDATE",message:t})}var wB,db,AB,iNe=h(()=>{"use strict";d();ZMe();hE();O();we();R();C();iee();rNe();wB=K("mt-"),db=new Map;AB=S({name:"MessageTranslate",description:"Auto translate messages to your language with caching, per-channel toggles, and more options.",tags:["Chat","Utility"],authors:[F.creations],settings:Hs,patches:[{find:'.CUSTOM_GIFT?""',replacement:[{match:/childrenMessageContent:(\i),/g,replace:"childrenMessageContent:$self.wrapContent($1,arguments[0].message.id,arguments[0].message.channel_id),"},{match:/\i\.memo\(function\((\i)\)\{(?=let \i,\i)/,replace:"$&$1.message=$self.transformMessage($1?.message);"}]}],transformMessage(e){if(!Hs.store.autoTranslate||!gyt(e))return db.delete(e.id),e;let t=aee(e.id);return t?e.content===t.translated?(db.set(e.id,t.sourceLang),e):t.original!==e.content?(oNe(e.id),db.delete(e.id),e):(db.set(e.id,t.sourceLang),Hs.store.showOriginal!=="trans-in-subtext"?Object.assign(Object.create(Object.getPrototypeOf(e)),e,{content:t.translated}):e):(db.delete(e.id),tNe(e.id)||nNe(e.id,e.content).then(o=>{o&&hyt(e)}),e)},wrapContent(e,t,o){let r=db.get(t),n=aee(t);if(!r||!n)return e;let a=Hs.store.showIndicator&&i("div",{className:wB("indicator")},"translated from ",r);switch(Hs.store.showOriginal){case"trans-in-subtext":return i(f,null,e,i("div",{className:wB("subtext")},i(ku,{height:16,width:16,className:wB("icon")}),kt.parse(n.translated,!0,{channelId:o,messageId:t})),a);case"orig-in-subtext":return i(f,null,e,i("div",{className:wB("subtext")},kt.parse(n.original,!0,{channelId:o,messageId:t})),a);default:return i(f,null,e,a)}}})});function xyt(){let e=L.getCurrentUser()?.id;return e?!!Et.getVoiceStateForUser(e)?.channelId:!1}async function vyt(){try{return await _n.setLoopback("mic_test",!0),wx=!0,xyt()&&!$o.isSelfDeaf()?(await _n.toggleSelfDeaf(),rA=!0):rA=!1,!0}catch{return!1}}async function aNe(){try{await _n.setLoopback("mic_test",!1),wx=!1,rA&&$o.isSelfDeaf()&&await _n.toggleSelfDeaf(),rA=!1}catch{}}function sNe({active:e=!1,className:t=""}){return i("svg",{className:t,width:"20",height:"20",viewBox:"0 0 24 24"},i("path",{fill:e?"currentColor":"var(--status-danger)",mask:e?void 0:"url(#radarmask)",fillRule:"evenodd",clipRule:"evenodd",d:"M12 3a1 1 0 0 0-1-1h-.06a1 1 0 0 0-.74.32L5.92 7H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2.92l4.28 4.68a1 1 0 0 0 .74.32H11a1 1 0 0 0 1-1V3ZM15.1 20.75c-.58.14-1.1-.33-1.1-.92v-.03c0-.5.37-.92.85-1.05a7 7 0 0 0 0-13.5A1.11 1.11 0 0 1 14 4.2v-.03c0-.6.52-1.06 1.1-.92a9 9 0 0 1 0 17.5Z"}),i("path",{fill:e?"currentColor":"var(--status-danger)",mask:e?void 0:"url(#radarmask)",fillRule:"evenodd",clipRule:"evenodd",d:"M15.16 16.51c-.57.28-1.16-.2-1.16-.83v-.14c0-.43.28-.8.63-1.02a3 3 0 0 0 0-5.04c-.35-.23-.63-.6-.63-1.02v-.14c0-.63.59-1.1 1.16-.83a5 5 0 0 1 0 9.02Z"}),!e&&i(f,null,i("path",{fill:"var(--status-danger)",d:"M22.7 2.7a1 1 0 0 0-1.4-1.4l-20 20a1 1 0 1 0 1.4 1.4Z"}),i("mask",{id:"radarmask"},i("rect",{fill:"white",x:"0",y:"0",width:"24",height:"24"}),i("path",{fill:"black",d:"M23.27 4.73 19.27 .73 -.27 20.27 3.73 24.27Z"}))))}function yyt({iconForeground:e,hideTooltips:t,nameplate:o}){let[,r]=V.useReducer(a=>a+1,0),n=V.useCallback(async()=>{wx?await aNe():await vyt(),r()},[]);return i(aw,{tooltipText:t?void 0:"Mic Test Loopback",icon:i(sNe,{active:wx,className:e}),role:"switch","aria-checked":!wx,redGlow:!wx,plated:o!=null,onClick:n})}var wx,rA,byt,kB,lNe=h(()=>{"use strict";d();sw();O();R();C();wx=!1,rA=!1;byt=e=>i(yyt,{...e}),kB=S({name:"MicLoopbackTester",description:"Adds mic loopback test icon to the user panel",tags:["Utility","Voice"],authors:[F.benjii],dependencies:["UserSettingsAPI","UserAreaAPI"],userAreaButton:{icon:sNe,render:byt},stop(){aNe(),wx=!1,rA=!1}})});function see(e=!0){document.removeEventListener("mouseup",uNe,!0),document.removeEventListener("auxclick",cNe,!0),e&&(document.addEventListener("mouseup",uNe,!0),document.addEventListener("auxclick",cNe,!0))}function cNe(e){if(e.button!==dNe)return!1;let{openScope:t}=iA.store,o=e.target,r=o?.closest("a[href]"),n=o?.closest("a[href][data-role='img'], a[href][data-role='video']"),a=r?.dataset.role??"",s=!!n;(!s&&r?.href&&r.getAttribute("href")!=="#"&&!["img","video","button"].includes(a)&&["links","both"].includes(t)||s&&["media","both"].includes(t))&&(e.preventDefault(),e.stopPropagation())}function uNe(e){e.button===dNe&&(pNe=Date.now())}var dNe,pNe,iA,CB,mNe=h(()=>{"use strict";d();j();Su();R();dNe=1,pNe=0;iA=M({openScope:{type:4,description:"Prevent middle clicking on these content types from opening them.",options:[{label:"Links",value:"links"},{label:"Media",value:"media"},{label:"Links & Media",value:"both"},{label:"None",value:"none",default:!0}],onChange(e){see(e!=="none")}},pasteScope:{type:4,description:"Prevent middle click from pasting during these situations.",options:[{label:"Always Prevent Middle Click Pasting",value:"always",default:!0},{label:"Only Prevent When Text Area Not Focused",value:"focus"}]},pasteThreshold:{type:1,description:"Milliseconds until pasting is enabled again after a middle click.",default:100,onChange(e){e<1&&(iA.store.pasteThreshold=1)}}}),CB=S({name:"MiddleClickTweaks",description:"Various middle click tweaks, such as with pasting and link opening.",authors:[F.Etorix,F.korzi],settings:iA,tags:["Utility"],searchTerms:["LimitMiddleClickPaste"],isPastingDisabled(e){let t=Date.now()-pNe{function \i\((\i)\)\{)/,replace:'if($1.target.tagName==="BUTTON"||$self.isPastingDisabled(false)){$1.preventDefault?.();$1.stopPropagation?.();return;};'}},{find:',origin:"clipboard"});',replacement:{match:/(?<=handlePaste=(\i)=>{)(?=let)/g,replace:"if($self.isPastingDisabled(true)){$1.preventDefault?.();$1.stopPropagation?.();return;}"}},{find:"onPasteCapture:function",replacement:{match:/(?<=onPasteCapture:function\((\i)\){)(?=\i\.insertData\(\1\.clipboardData\))/,replace:"if($self.isPastingDisabled(true)){$1.preventDefault?.();$1.stopPropagation?.();return;}"}}]})});function Syt(e,t){return Math.floor(Math.random()*(t-e+1))+e}async function gNe(e){let t=await fetch(`https://www.reddit.com/r/${e}/top.json?limit=100&t=all`),{children:o}=(await t.json()).data,r=Syt(0,o.length-1);return o[r].data.url??""}async function hNe(){return(await(await fetch("https://nekos.best/api/v2/neko")).json()).results[0].url??""}function xNe(e){let t="";for(let o=0;o{Array.isArray(o)?t[r]=lee(o):typeof o=="string"&&(t[r]=sA(o))}),t}function ANe(e,t){let o=ba.FrecencyUserSettingsActionCreators.getCurrentValue(),r=Object.keys(o.favoriteGifs.gifs);return`${r[Math.floor(Math.random()*r.length)]}`}function kNe(e){let t={friend:.15,dm:.3,vc:.25,serverMsg:.2,communication:.1},o=0;return e.isFriend&&(o+=t.friend*100),o+=e.dmProbability*t.dm*100,o+=e.vcProbability*t.vc*100,o+=e.serverMessageProbability*t.serverMsg*100,o+=e.communicationProbability*t.communication*100,Math.round(Math.min(100,Math.max(0,o))*100)/100}function CNe(e){let t=e instanceof File,o=t?URL.createObjectURL(e):e;return new Promise((r,n)=>{let a=new Image;a.onload=()=>{t&&URL.revokeObjectURL(o),r(a)},a.onerror=(s,l,c,u,p)=>n(p||s),a.crossOrigin="anonymous",a.src=o})}function TNe(e,t,o,r){let a=r*1.5,s=60,l=30;function c(u,p){return u<10||u+r>t-10||p<10||p+r>o-s-10?!1:!e.some(m=>{let g=m.x-u,x=m.y-p,v=Math.hypot(g,x),y=(m.size+r)/2+(a-r);return v{let a=new Image;a.onload=()=>{t&&URL.revokeObjectURL(o),r(a)},a.onerror=(s,l,c,u,p)=>n(p||s),a.crossOrigin="Anonymous",a.src=o})}async function PNe(e,t){let o=null,r=null,n=null;for(let a of e)switch(a.name){case"image":let s=el.getUpload(t.channel.id,a.name,yo.SlashCommand);if(s){if(!s.isImage)throw Ma.clearAll(t.channel.id,yo.SlashCommand),"Upload is not an image";o=s.item.file}break;case"width":r=Number(a.value);break;case"height":n=Number(a.value);break}return Ma.clearAll(t.channel.id,yo.SlashCommand),{image:o,width:r,height:n}}var aA,wyt,Ayt,yNe,bNe,SNe,wNe,kyt,Cyt,Iyt,ENe,MNe=h(()=>{"use strict";d();j();R();C();aA=M({addFreakyEnding:{type:3,description:"Add \u{1F445} or \u2764\uFE0F at the end",default:!1},uwuEveryMessage:{description:"Make every single message uwuified",type:3,default:!1,restartNeeded:!1},uwuEverything:{description:"Makes *all* text uwuified - really bad idea",type:3,default:!1,restartNeeded:!0}});wyt={q:"\u{1D4FA}",w:"\u{1D500}",e:"\u{1D4EE}",r:"\u{1D4FB}",t:"\u{1D4FD}",y:"\u{1D502}",u:"\u{1D4FE}",i:"\u{1D4F2}",o:"\u{1D4F8}",p:"\u{1D4F9}",a:"\u{1D4EA}",s:"\u{1D4FC}",d:"\u{1D4ED}",f:"\u{1D4EF}",g:"\u{1D4F0}",h:"\u{1D4F1}",j:"\u{1D4F3}",k:"\u{1D4F4}",l:"\u{1D4F5}",z:"\u{1D503}",x:"\u{1D501}",c:"\u{1D4EC}",v:"\u{1D4FF}",b:"\u{1D4EB}",n:"\u{1D4F7}",m:"\u{1D4F6}",Q:"\u{1D4E0}",W:"\u{1D4E6}",E:"\u{1D4D4}",R:"\u{1D4E1}",T:"\u{1D4E3}",Y:"\u{1D4E8}",U:"\u{1D4E4}",I:"\u{1D4D8}",O:"\u{1D4DE}",P:"\u{1D4DF}",A:"\u{1D4D0}",S:"\u{1D4E2}",D:"\u{1D4D3}",F:"\u{1D4D5}",G:"\u{1D4D6}",H:"\u{1D4D7}",J:"\u{1D4D9}",K:"\u{1D4DA}",L:"\u{1D4DB}",Z:"\u{1D4E9}",X:"\u{1D4E7}",C:"\u{1D4D2}",V:"\u{1D4E5}",B:"\u{1D4D1}",N:"\u{1D4DD}",M:"\u{1D4DC}"},Ayt=(e,t)=>e.split("").map(o=>t[o]||o).join("");yNe={A:".-",B:"-...",C:"-.-.",D:"-..",E:".",F:"..-.",G:"--.",H:"....",I:"..",J:".---",K:"-.-",L:".-..",M:"--",N:"-.",O:"---",P:".--.",Q:"--.-",R:".-.",S:"...",T:"-",U:"..-",V:"...-",W:".--",X:"-..-",Y:"-.--",Z:"--..",0:"-----",1:".----",2:"..---",3:"...--",4:"....-",5:".....",6:"-....",7:"--...",8:"---..",9:"----."," ":"/"},bNe=e=>e.toUpperCase().split("").map(t=>yNe[t]??"").join(" "),SNe=e=>{let t=Object.fromEntries(Object.entries(yNe).map(([r,n])=>[n,r])),o=e.split(" ").map(r=>t[r]??"").join("").toLowerCase();return o.charAt(0).toUpperCase()+o.slice(1)},wNe=e=>/^[.\-/ ]+$/.test(e),kyt=["rawr x3","OwO","UwU","o.O","-.-",">w<","(\u2445\u02D8\uA4B3\u02D8)","(\uA20D\u1D17\uA20D)","(\u02D8\u03C9\u02D8)","(U \u1D55 U\u2741)","\u03C3\u03C9\u03C3","\xF2\u03C9\xF3","(///\u02EC///\u273F)","(U \uFE4F U)","( \u0361o \u03C9 \u0361o )","\u0298w\u0298",":3",":3",":3","XD","nyaa~~","mya",">_<","\u{1F633}","\u{1F97A}","\u{1F633}\u{1F633}\u{1F633}","rawr","^^","^^;;","(\u02C6 \uFECC \u02C6)\u2661","^\u2022\uFECC\u2022^","/(^\u2022\u03C9\u2022^)","(\u273Fo\u03C9o)"],Cyt=[["small","smol"],["cute","kawaii"],["fluff","floof"],["love","luv"],["stupid","baka"],["what","nani"],["meow","nya"],["hello","hewwo"]];Iyt=e=>e.split("").every(t=>t===e[0]);ENe=1});var pb,TB,NNe=h(()=>{"use strict";d();yr();yc();j();O();_e();R();C();pb=Xu(cv());MNe();oo("MoreCommands","FriendCloud","GifRoulette","ImgToGif","MoreKaomoji");TB=S({name:"MoreCommands",description:"Adds various fun and useful commands",dependencies:["CommandsAPI"],tags:["Commands","Fun","Shortcuts"],authors:[b.Arjix,b.amy,b.Samu,F.zyqunix,F.ShadyGoat,b.thororen,b.Korbo,b.nyx,b.amy,b.Samwich,F.Fafa,b.JacobTm,F.voidbbg],settings:aA,commands:[{name:"systeminfo",description:"Shows system information",options:[],execute:async(e,t)=>{try{let{userAgent:o,hardwareConcurrency:r,onLine:n,languages:a}=navigator,{width:s,height:l,colorDepth:c}=window.screen,{deviceMemory:u,connection:p}=navigator,m=o.includes("Windows")?"Windows":o.includes("Mac")?"MacOS":o.includes("Linux")?"Linux":"Unknown",x=/Mobile|Android|iPhone/i.test(o)?"Mobile":"Desktop",v=o.match(/(?:chrome|firefox|safari|edge|opr)\/?\s*(\d+)/i)?.[0]||"Unknown",y=p?`${p.effectiveType||"Unknown"}`:"Unknown";return{content:[`> **Platform**: ${m}`,`> **Device Type**: ${x}`,`> **Browser**: ${v}`,`> **CPU Cores**: ${r||"N/A"}`,`> **Memory**: ${u?`${u}GB`:"N/A"}`,`> **Screen**: ${s}x${l} (${c}bit)`,`> **Languages**: ${a?.join(", ")}`,`> **Network**: ${y} (${n?"Online":"Offline"})`].join(` `)}}catch{Ft(t.channel.id,{content:"Failed to fetch system information"})}}},{name:"getuptime",description:"Returns the system uptime",execute:async()=>{let e=performance.now()/1e3;return{content:`> **System Uptime**: ${Math.floor(e/60)} minutes`}}},{name:"gettime",description:"Returns the current server time",execute:async()=>({content:`> **Current Time**: ${new Date().toLocaleString()}`})},{name:"choose",description:"Randomly chooses from provided options",options:[{name:"choices",description:"Comma-separated list of choices",type:3,required:!0}],execute:e=>{let t=St(e,"choices","").split(",").map(r=>r.trim());return{content:`I choose: ${t[Math.floor(Math.random()*t.length)]}`}}},{name:"rolldice",description:"Roll a die with the specified number of sides",options:[Op],execute:e=>{let t=parseInt(St(e,"message","6"));return{content:`You rolled a ${Math.floor(Math.random()*t)+1}!`}}},{name:"flipcoin",description:"Flips a coin and returns heads or tails",options:[],execute:(e,t)=>({content:`The coin landed on: ${Math.random()<.5?"Heads":"Tails"}`})},{name:"ask",description:"Ask a yes/no question and get an answer",options:[Op],execute:e=>{let t=St(e,"message",""),o=["Yes","No","Maybe","Ask again later","Definitely not","It is certain"],r=o[Math.floor(Math.random()*o.length)];return{content:`${t} - ${r}`}}},{name:"randomanimal",description:"Get a random cat picture",options:[{name:"animal",description:"pick your animal",type:3,required:!0,choices:[{name:"cat",value:"cat",label:"cat"},{name:"dog",value:"dog",label:"dog"}]}],execute:(e,t)=>(async()=>{let o=St(e,"animal"),r;o==="cat"?r="https://api.thecatapi.com/v1/images/search":o==="dog"&&(r="https://api.thedogapi.com/v1/images/search");try{let n=await fetch(r);if(!n.ok)throw new Error(`Failed to fetch ${o} image`);return{content:(await n.json())[0].url}}catch{Ft(t.channel.id,{content:"Sorry, couldn't fetch a cat picture right now \u{1F63F}"})}})()},{name:"randomnumber",description:"Generates a random number between two values",options:[{name:"min",description:"Minimum value",type:4,required:!0},{name:"max",description:"Maximum value",type:4,required:!0}],execute:e=>{let t=parseInt(St(e,"min","0")),o=parseInt(St(e,"max","100")),r=Math.floor(Math.random()*(o-t+1))+t;return{content:`Random number between ${t} and ${o}: ${r}`}}},{name:"transform",description:"Transform your text with the specified option",options:[{name:"text",description:"TEXT TO UPPERCASE",type:3,required:!0},{name:"transformation",description:"transformation to apply to your text",type:3,required:!0,choices:[{name:"toLowerCase",value:"toLowerCase",label:"toLowerCase"},{name:"toUpperCase",value:"toUpperCase",label:"toUpperCase"},{name:"toLocaleLowerCase",value:"toLocaleLowerCase",label:"toLocaleLowerCase"},{name:"toLocaleUpperCase",value:"toLocaleUpperCase",label:"toLocaleUpperCase"},{name:"stay the same",value:"same",label:"stay the same"}]},{name:"repeat",description:"how many times to repeat",type:4,required:!1},{name:"reverse",description:"reverse your text",type:5,required:!1},{name:"normalize",description:"which normailze option to use",type:3,required:!1,choices:[{name:"NFC",value:"NFC",label:"NFC"},{name:"NFD",value:"NFD",label:"NFD"},{name:"NFKC",value:"NFKC",label:"NFKC"},{name:"NFKD",value:"NFKD",label:"NFKD"}]}],execute:e=>{let t=St(e,"text"),o=St(e,"transformation"),r=St(e,"repeat")??1,n=St(e,"normalize"),a=St(e,"reverse");return o!=="same"&&(t=t[o]?.call(t)??t),n&&(t=t.normalize(n)),a&&(t=t.split("").reverse().join("")),{content:t.repeat(r)}}},{name:"wordcount",description:"Counts the number of words in a message",options:[Op],inputType:3,execute:(e,t)=>{let r=St(e,"message","").trim().split(/\s+/).length;Ft(t.channel.id,{content:`The message contains ${r} words.`})}},{name:"countdown",description:"Starts a countdown from a specified number",options:[{name:"number",description:"Number to countdown from (max 10)",type:4,required:!0}],inputType:3,execute:async(e,t)=>{let o=Math.min(parseInt(St(e,"number","5")),10);if(isNaN(o)||o<1){Ft(t.channel.id,{content:"Please provide a valid number between 1 and 10!"});return}Ft(t.channel.id,{content:`Starting countdown from ${o}...`});for(let r=o;r>=0;r--)await new Promise(n=>setTimeout(n,1e3)),Ft(t.channel.id,{content:r===0?"\u{1F389} Go! \u{1F389}":`${r}...`})}},{name:"nekos",description:"Send Neko",execute:async()=>({content:await hNe()})},{name:"anime-boys",description:"Send cute anime boys",options:[{name:"cat",description:"If set, this will send exclusively cute anime cat boys",type:5,required:!1}],execute:async e=>{let t="cuteanimeboys";return St(e,"cat")&&(t="animecatboys"),{content:await gNe(t)}}},{name:"ping",description:"Pings the bot to check if it's responding",options:[],inputType:3,execute:(e,t)=>{Ft(t.channel.id,{content:"Pong!"})}},{name:"echo",description:"Sends a message as Clyde (locally)",options:[dn],inputType:3,execute:(e,t)=>{let o=St(e,"message","");Ft(t.channel.id,{content:o})}},{name:"lenny",description:"Sends a lenny face",options:[dn],execute:e=>({content:St(e,"message","")+" ( \u0361\xB0 \u035C\u0296 \u0361\xB0)"})},{name:"mock",description:"mOcK PeOpLe",options:[Op],execute:e=>({content:xNe(St(e,"message",""))})},{inputType:1,name:"slap",description:"Slap someone/something.",options:[{name:"victim",description:"Thing to slap",required:!0,type:3}],execute:e=>{let t=St(e,"victim");return{content:`<@${L.getCurrentUser().id}> slaps ${t} around a bit with a large trout`}}},{name:"freaky",description:"it's freaky.",inputType:0,options:[{name:"message",description:"yoooo freaky",type:3,required:!0}],execute:(e,t)=>{or(t.channel.id,{content:vNe(St(e,"message",""))})}},{inputType:1,name:"morse",description:"Translate to or from Morse code",options:[{name:"text",description:"Text to convert",type:3,required:!0}],execute:e=>{let t=e.find(r=>r.name==="text")?.value;return{content:`${wNe(t)?SNe(t):bNe(t)}`}}},{name:"uwuify",description:"uwuifies your messages",options:[Op],execute:e=>({content:sA(St(e,"message",""))})},{name:"gifroulette",description:"Tempt fate and send a gif",execute:(e,t)=>Rz.includes(t?.guild?.id??"")?Ft(t.channel.id,{content:"This command is restricted in this server."}):{content:ANe(e,t)}},{inputType:0,name:"friendcloud",description:"Display user you most interact with in a cloud",options:[{name:"count",description:"Number of users to display",type:10,required:!1}],execute:async(e,t)=>{let o=St(e,"count",25);if(!o)return Ft(t.channel.id,{content:"The count must be 1 or higher!"});try{let r=uf.getUserAffinities();if(!r?.length)return Ft(t.channel.id,{content:"No affinities found. Check your [privacy settings]()."});let n=r.map(E=>({member:L.getUser(E.otherUserId),affinity:kNe(E)})).filter(E=>E.member?.id).sort((E,N)=>N.affinity-E.affinity).slice(0,o);if(!n.length)return Ft(t.channel.id,{content:"No valid users found in affinities. Check your [privacy settings]()."});let a=Math.min(...n.map(E=>E.affinity)),s=Math.max(...n.map(E=>E.affinity)),l=120,c=240,u=E=>s===a?(l+c)/2:l+(E-a)/(s-a)*(c-l),p=(l+c)/2,{width:m,height:g}=INe(n.length,p),x=document.createElement("canvas");x.width=m,x.height=g;let v=x.getContext("2d"),y=[],A=n.map(E=>{let N=u(E.affinity),B=TNe(y,m,g,N);return y.push({x:B.x,y:B.y,size:N}),{...E,x:B.x,y:B.y,size:N}}),k=0,w=A.length,I=async E=>{try{let N=E.member?.avatar?`https://cdn.discordapp.com/avatars/${E.member.id}/${E.member?.avatar}.webp?size=256`:`https://cdn.discordapp.com/embed/avatars/${E.member.id%5}.png`,B=await CNe(N),_=E.x+E.size/2,q=E.y+E.size/2;v.save(),v.beginPath(),v.arc(_,q,E.size/2,0,Math.PI*2),v.clip(),v.drawImage(B,E.x,E.y,E.size,E.size),v.restore(),v.strokeStyle="#808080",v.lineWidth=3,v.beginPath(),v.arc(_,q,E.size/2+1,0,Math.PI*2),v.stroke()}catch{}finally{k++,k===w&&x.toBlob(N=>{if(!N){Ft(t.channel.id,{content:"Couldn't generate the image :c"});return}let B=new File([N],"affinities-cloud.png",{type:"image/png"});Mr.promptToUpload([B],t.channel,yo.ChannelMessage)},"image/png")}};A.forEach(I)}catch(r){r instanceof Error&&Ft(t.channel.id,{content:r.message})}}},{inputType:0,name:"imgtogif",description:"Allows you to turn an image to a gif",options:[{name:"image",description:"Image attachment to use",type:11},{name:"width",description:"Width of the gif",type:4},{name:"height",description:"Height of the gif",type:4}],execute:async(e,t)=>{try{let{image:o,width:r,height:n}=await PNe(e,t);if(!o)throw"No Image specified!";let a=await DNe(o),s,l;r&&n?(s=r,l=n):r?(s=r,l=Math.round(a.height/a.width*r)):n?(l=n,s=Math.round(a.width/a.height*n)):(s=a.width,l=a.height);let c=(0,pb.GIFEncoder)(),u=document.createElement("canvas");u.width=s,u.height=l;let p=u.getContext("2d");Ma.clearAll(t.channel.id,yo.SlashCommand);for(let x=0;xMr.promptToUpload([g],t.channel,yo.ChannelMessage),10)}catch(o){Ma.clearAll(t.channel.id,yo.SlashCommand),Ft(t.channel.id,{content:String(o)})}}},{name:"dissatisfaction",description:" \uFF1E\uFE4F\uFF1C",options:[dn],execute:e=>({content:St(e,"message","")+" \uFF1E\uFE4F\uFF1C"})},{name:"smug",description:"\u0CA0_\u0CA0",options:[dn],execute:e=>({content:St(e,"message","")+" \u0CA0_\u0CA0"})},{name:"happy",description:"\u30FD(\xB4\u25BD`)/",options:[dn],execute:e=>({content:St(e,"message","")+" \u30FD(\xB4\u25BD`)/"})},{name:"crying",description:"\u0CA5_\u0CA5",options:[dn],execute:e=>({content:St(e,"message","")+" \u0CA5_\u0CA5"})},{name:"angry",description:"\u30FD(\uFF40\u0414\xB4)\uFF89",options:[dn],execute:e=>({content:St(e,"message","")+" \u30FD(\uFF40\u0414\xB4)\uFF89"})},{name:"anger",description:"\u30FD(\uFF4F`\u76BF\u2032\uFF4F)\uFF89",options:[dn],execute:e=>({content:St(e,"message","")+" \u30FD(\uFF4F`\u76BF\u2032\uFF4F)\uFF89"})},{name:"joy",description:"<(\uFFE3\uFE36\uFFE3)>",options:[dn],execute:e=>({content:St(e,"message","")+" <(\uFFE3\uFE36\uFFE3)>"})},{name:"blush",description:"\u0AEE \u02F6\u1D54 \u1D55 \u1D54\u02F6 \u10D0",options:[dn],execute:e=>({content:St(e,"message","")+" \u0AEE \u02F6\u1D54 \u1D55 \u1D54\u02F6 \u10D0"})},{name:"confused",description:"(\u2022\u0E34_\u2022\u0E34)?",options:[dn],execute:e=>({content:St(e,"message","")+" (\u2022\u0E34_\u2022\u0E34)?"})},{name:"sleeping",description:"(\u1D17_\u1D17)",options:[dn],execute:e=>({content:St(e,"message","")+" (\u1D17_\u1D17)"})},{name:"laughing",description:"o(\u2267\u25BD\u2266)o",options:[dn],execute:e=>({content:St(e,"message","")+" o(\u2267\u25BD\u2266)o"})},{name:"giving",description:"(\uFF89\u25D5\u30EE\u25D5)\uFF89*:\uFF65\uFF9F\u2727",options:[dn],execute:e=>({content:St(e,"message","")+" (\uFF89\u25D5\u30EE\u25D5)\uFF89*:\uFF65\uFF9F\u2727"})},{name:"peace",description:"\u270C(\u25D5\u203F-)\u270C",options:[dn],execute:e=>({content:St(e,"message","")+" \u270C(\u25D5\u203F-)\u270C"})},{name:"ending1",description:"\u13EA \u08EA\u05B8 \u06F0 \u0359\u22B9",options:[dn],execute:e=>({content:St(e,"message","")+" \u13EA \u08EA\u05B8 \u06F0 \u0359\u22B9"})},{name:"uwu",description:"(>\u2A4A<)",options:[dn],execute:e=>({content:St(e,"message","")+" (>\u2A4A<)"})},{name:"comfy",description:"(\u2500\u203F\u203F\u2500)\u2661",options:[dn],execute:e=>({content:St(e,"message","")+" (\u2500\u203F\u203F\u2500)\u2661"})},{name:"lovehappy",description:"(*\u2267\u03C9\u2266*)",options:[dn],execute:e=>({content:St(e,"message","")+" (*\u2267\u03C9\u2266*)"})},{name:"loveee",description:"(\u2044 \u2044>\u2044 \u25BD \u2044<\u2044 \u2044)",options:[dn],execute:e=>({content:St(e,"message","")+" (\u2044 \u2044>\u2044 \u25BD \u2044<\u2044 \u2044)"})},{name:"give",description:"(\u30CE= \u2A4A = )\u30CE",options:[dn],execute:e=>({content:St(e,"message","")+" (\u30CE= \u2A4A = )\u30CE"})},{name:"lovegive",description:"\u10E6\u309D\u25E1\u2579)\u30CE\u2661",options:[dn],execute:e=>({content:St(e,"message","")+" \u10E6\u309D\u25E1\u2579)\u30CE\u2661"})},{name:"music",description:"(\uFFE3\u25BD\uFFE3)/\u266B\u2022\xA8\u2022.\xB8\xB8\u266A",options:[dn],execute:e=>({content:St(e,"message","")+" (\uFFE3\u25BD\uFFE3)/\u266B\u2022\xA8\u2022.\xB8\xB8\u266A"})},{name:"stars",description:".\u{16954} \u0741 \u02D6\u0E4B \u08ED \u2B51",options:[dn],execute:e=>({content:St(e,"message","")+" .\u{16954} \u0741 \u02D6\u0E4B \u08ED \u2B51"})},{name:"lovegiving",description:"\u2E1C(\uFF61\u02C3 \u1D55 \u02C2 )\u2E1D\u2661",options:[dn],execute:e=>({content:St(e,"message","")+" \u2E1C(\uFF61\u02C3 \u1D55 \u02C2 )\u2E1D\u2661"})}],patches:[{find:".isPureReactComponent=!0;",predicate:()=>aA.store.uwuEverything,replacement:{match:/(\.defaultProps\).{0,80}return \i\(\i,\i,)(\i)\)/,replace:"$1$self.uwuifyProps($2))"}}],uwuifyProps(e){return e.children&&(typeof e.children=="string"?e.children=sA(e.children):Array.isArray(e.children)&&(e.children=lee(e.children))),e},onSend(e){aA.store.uwuEveryMessage&&(e.content=sA(e.content))},start(){this.preSend=ni((e,t)=>this.onSend(t)),this.preEdit=Q0((e,t,o)=>this.onSend(o))},stop(){ri(this.preSend),Z0(this.preEdit)}})});var BNe=h(()=>{});function Dyt(e){return Eyt+encodeURIComponent(e.toString())}function Gg(e,t){return fetch(Dyt(e),t)}async function RNe(e,t){console.log("Loading FFmpeg...");let o="https://cdn.jsdelivr.net/npm/@ffmpeg/core@0.12.6/dist/esm",r=`/// /// /// const MIME_TYPE_JAVASCRIPT = "text/javascript"; const MIME_TYPE_WASM = "application/wasm"; const CORE_VERSION = "0.12.6"; const CORE_URL = \`https://cdn.jsdelivr.net/npm/@ffmpeg/core@\${CORE_VERSION}/dist/umd/ffmpeg-core.js\`; var FFMessageType; (function(FFMessageType) { FFMessageType["LOAD"] = "LOAD"; FFMessageType["EXEC"] = "EXEC"; FFMessageType["WRITE_FILE"] = "WRITE_FILE"; FFMessageType["READ_FILE"] = "READ_FILE"; FFMessageType["DELETE_FILE"] = "DELETE_FILE"; FFMessageType["RENAME"] = "RENAME"; FFMessageType["CREATE_DIR"] = "CREATE_DIR"; FFMessageType["LIST_DIR"] = "LIST_DIR"; FFMessageType["DELETE_DIR"] = "DELETE_DIR"; FFMessageType["ERROR"] = "ERROR"; FFMessageType["DOWNLOAD"] = "DOWNLOAD"; FFMessageType["PROGRESS"] = "PROGRESS"; FFMessageType["LOG"] = "LOG"; FFMessageType["MOUNT"] = "MOUNT"; FFMessageType["UNMOUNT"] = "UNMOUNT"; })(FFMessageType || (FFMessageType = {})); const ERROR_UNKNOWN_MESSAGE_TYPE = new Error("unknown message type"); const ERROR_NOT_LOADED = new Error("ffmpeg is not loaded, call \`await ffmpeg.load()\` first"); const ERROR_TERMINATED = new Error("called FFmpeg.terminate()"); const ERROR_IMPORT_FAILURE = new Error("failed to import ffmpeg-core.js"); let ffmpeg; const load = async ({ coreURL: _coreURL, wasmURL: _wasmURL, workerURL: _workerURL, }) => { const first = !ffmpeg; try { if (!_coreURL) _coreURL = CORE_URL; // when web worker type is \`classic\`. importScripts(_coreURL); } catch { if (!_coreURL) _coreURL = CORE_URL.replace('/umd/', '/esm/'); // when web worker type is \`module\`. self.createFFmpegCore = (await import( /* webpackIgnore: true */ /* @vite-ignore */ _coreURL)).default; if (!self.createFFmpegCore) { throw ERROR_IMPORT_FAILURE; } } const coreURL = _coreURL; const wasmURL = _wasmURL ? _wasmURL : _coreURL.replace(/.js$/g, ".wasm"); const workerURL = _workerURL ? _workerURL : _coreURL.replace(/.js$/g, ".worker.js"); ffmpeg = await self.createFFmpegCore({ // Fix \`Overload resolution failed.\` when using multi-threaded ffmpeg-core. // Encoded wasmURL and workerURL in the URL as a hack to fix locateFile issue. mainScriptUrlOrBlob: \`\${coreURL}#\${btoa(JSON.stringify({ wasmURL, workerURL }))}\`, }); ffmpeg.setLogger((data) => self.postMessage({ type: FFMessageType.LOG, data })); ffmpeg.setProgress((data) => self.postMessage({ type: FFMessageType.PROGRESS, data, })); return first; }; const exec = ({ args, timeout = -1 }) => { ffmpeg.setTimeout(timeout); ffmpeg.exec(...args); const ret = ffmpeg.ret; ffmpeg.reset(); return ret; }; const writeFile = ({ path, data }) => { ffmpeg.FS.writeFile(path, data); return true; }; const readFile = ({ path, encoding }) => ffmpeg.FS.readFile(path, { encoding }); // TODO: check if deletion works. const deleteFile = ({ path }) => { ffmpeg.FS.unlink(path); return true; }; const rename = ({ oldPath, newPath }) => { ffmpeg.FS.rename(oldPath, newPath); return true; }; // TODO: check if creation works. const createDir = ({ path }) => { ffmpeg.FS.mkdir(path); return true; }; const listDir = ({ path }) => { const names = ffmpeg.FS.readdir(path); const nodes = []; for (const name of names) { const stat = ffmpeg.FS.stat(\`\${path}/\${name}\`); const isDir = ffmpeg.FS.isDir(stat.mode); nodes.push({ name, isDir }); } return nodes; }; // TODO: check if deletion works. const deleteDir = ({ path }) => { ffmpeg.FS.rmdir(path); return true; }; const mount = ({ fsType, options, mountPoint }) => { const str = fsType; const fs = ffmpeg.FS.filesystems[str]; if (!fs) return false; ffmpeg.FS.mount(fs, options, mountPoint); return true; }; const unmount = ({ mountPoint }) => { ffmpeg.FS.unmount(mountPoint); return true; }; self.onmessage = async ({ data: { id, type, data: _data }, }) => { const trans = []; let data; try { if (type !== FFMessageType.LOAD && !ffmpeg) throw ERROR_NOT_LOADED; // eslint-disable-line switch (type) { case FFMessageType.LOAD: data = await load(_data); break; case FFMessageType.EXEC: data = exec(_data); break; case FFMessageType.WRITE_FILE: data = writeFile(_data); break; case FFMessageType.READ_FILE: data = readFile(_data); break; case FFMessageType.DELETE_FILE: data = deleteFile(_data); break; case FFMessageType.RENAME: data = rename(_data); break; case FFMessageType.CREATE_DIR: data = createDir(_data); break; case FFMessageType.LIST_DIR: data = listDir(_data); break; case FFMessageType.DELETE_DIR: data = deleteDir(_data); break; case FFMessageType.MOUNT: data = mount(_data); break; case FFMessageType.UNMOUNT: data = unmount(_data); break; default: throw ERROR_UNKNOWN_MESSAGE_TYPE; } } catch (e) { self.postMessage({ id, type: FFMessageType.ERROR, data: e.toString(), }); return; } if (data instanceof Uint8Array) { trans.push(data.buffer); } self.postMessage({ id, type, data }, trans); }; `,n=new Blob([new TextEncoder().encode(r)],{type:"text/javascript"}),a=URL.createObjectURL(n);await e.load({coreURL:`${o}/ffmpeg-core.js`,wasmURL:`${o}/ffmpeg-core.wasm`,workerURL:`${o}/ffmpeg-core.worker.js`,classWorkerURL:a}),t(),console.log("FFmpeg loaded!")}var us,No,Eyt,mb,Ax,Cm=h(()=>{"use strict";d();we();le();C();us=K("vc-more-stickers-"),No=(e,...t)=>us("picker-"+e,...t),Eyt="https://cors.keiran0.workers.dev?url=";mb=class{current=Promise.resolve();lock(){let t,o=new Promise(n=>{t=()=>n()}),r=this.current.then(()=>t);return this.current=o,r}};Zo("createContext",()=>{Ax=V.createContext(void 0)})});function LNe({src:e,alt:t,isActive:o}){return i("div",null,i("svg",{width:32,height:32,style:{display:"block",contain:"paint",overflow:"hidden",overflowClipMargin:"content-box"}},i("foreignObject",{className:us("foreign-object")+(o?` ${us("foreign-object-active")}`:""),x:0,y:0,width:32,height:32,overflow:"visible"},i("img",{src:e,alt:t,width:32,height:32}))))}function ONe(e){let t=Array.isArray(e.children)?e.children:[e.children];return i("div",{className:us("category-scroller")},i("div",null,t.map(o=>i("div",{role:"listitem",key:us("category-scroller")},o))),i("div",{style:{height:`${Math.round(41.75*(e.categoryLength+1))}px`}}),i("div",{"aria-hidden":"true"}))}function FNe(e){return i("div",{className:us("category-wrapper")},e.children)}function cee(e){return i("div",{style:e.style,className:us("sticker-category")+(e.isActive?` ${us("sticker-category-active")}`:""),tabIndex:0,role:"button",onClick:e.onClick},e.children)}var uee=h(()=>{"use strict";d();Cm()});function _Ne(e){return i("div",{style:{width:"20px",height:"20px",boxSizing:"border-box",position:"relative",cursor:"text"}},e.children)}function UNe({width:e,height:t,color:o}){return i("svg",{role:"img",width:e,height:t,viewBox:"0 0 24 24"},i("path",{fill:o,d:"M21.707 20.293L16.314 14.9C17.403 13.504 18 11.799 18 10C18 7.863 17.167 5.854 15.656 4.344C14.146 2.832 12.137 2 10 2C7.863 2 5.854 2.832 4.344 4.344C2.833 5.854 2 7.863 2 10C2 12.137 2.833 14.146 4.344 15.656C5.854 17.168 7.863 18 10 18C11.799 18 13.504 17.404 14.9 16.314L20.293 21.706L21.707 20.293ZM10 16C8.397 16 6.891 15.376 5.758 14.243C4.624 13.11 4 11.603 4 10C4 8.398 4.624 6.891 5.758 5.758C6.891 4.624 8.397 4 10 4C11.603 4 13.109 4.624 14.242 5.758C15.376 6.891 16 8.398 16 10C16 11.603 15.376 13.11 14.242 14.243C13.109 15.376 11.603 16 10 16Z"}))}function zNe({width:e,height:t,className:o,onClick:r}){return i("svg",{role:"img",width:e,height:t,viewBox:"0 0 24 24",className:o,onClick:r},i("path",{fill:"currentColor",d:"M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"}))}function dee({width:e,height:t,color:o}){return i("svg",{role:"img",width:e,height:t,viewBox:"0 0 24 24"},i("path",{d:"M12 2C6.4764 2 2 6.4764 2 12C2 17.5236 6.4764 22 12 22C17.5236 22 22 17.5236 22 12C22 6.4764 17.5236 2 12 2ZM12 5.6C12.4422 5.6 12.8 5.95781 12.8 6.4V11.5376L16.5625 13.7126C16.9453 13.9329 17.0703 14.4173 16.85 14.8001C16.6297 15.183 16.1453 15.3079 15.7625 15.0876L11.6873 12.7376C11.656 12.7251 11.6279 12.7048 11.5998 12.6876C11.3607 12.5486 11.1998 12.2954 11.1998 12.0001V6.4001C11.1998 5.9579 11.5578 5.6 12 5.6Z",fill:o}))}function $Ne({width:e,height:t}){return i("svg",{role:"img",width:e,height:t,viewBox:"0 0 24 24"},i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M19.738 10H22V14H19.739C19.498 14.931 19.1 15.798 18.565 16.564L20 18L18 20L16.565 18.564C15.797 19.099 14.932 19.498 14 19.738V22H10V19.738C9.069 19.498 8.203 19.099 7.436 18.564L6 20L4 18L5.436 16.564C4.901 15.799 4.502 14.932 4.262 14H2V10H4.262C4.502 9.068 4.9 8.202 5.436 7.436L4 6L6 4L7.436 5.436C8.202 4.9 9.068 4.502 10 4.262V2H14V4.261C14.932 4.502 15.797 4.9 16.565 5.435L18 3.999L20 5.999L18.564 7.436C19.099 8.202 19.498 9.069 19.738 10ZM12 16C14.2091 16 16 14.2091 16 12C16 9.79086 14.2091 8 12 8C9.79086 8 8 9.79086 8 12C8 14.2091 9.79086 16 12 16Z"}))}var pee=h(()=>{"use strict";d()});function IB(e){let o=/^https:\/\/store\.line\.me\/emojishop\/product\/([a-z0-9]+)\/.*$/.exec(e);if(o===null)throw new Error("Invalid URL");return o[1]}function HNe(e){return"MoreStickers:Line:Emoji-Pack:"+e}function Pyt(e,t){return"MoreStickers:Line-Emoji:"+t+":"+e}function GNe(e){return{id:Pyt(e.id,e.stickerPackId),image:e.animationUrl||e.staticUrl,title:e.id,stickerPackId:HNe(e.stickerPackId),isAnimated:!!e.animationUrl}}function mee(e){return{id:HNe(e.id),title:e.title,author:e.author,logo:GNe(e.mainImage),stickers:e.stickers.map(GNe)}}function fee(e){let t=new DOMParser().parseFromString(e,"text/html"),o=JSON.parse(t.querySelector("[ref=mainImage]")?.dataset?.preview??"null"),{id:r}=o,n=[...t.querySelectorAll(".FnStickerPreviewItem")].map(s=>JSON.parse(s.dataset.preview??"null")).filter(s=>s!==null).map(s=>({...s,stickerPackId:r}));return{title:t.querySelector("[data-test=emoji-name-title]")?.textContent??"null",author:{name:t.querySelector("[data-test=emoji-author]")?.textContent??"null",url:"https://store.line.me/"+(t.querySelector("[data-test=emoji-author]")?.getAttribute("href")??"null")},id:r,mainImage:o,stickers:n}}function jNe(e){return e.includes('data-test="emoji-name-title"')}async function qNe(e,t="en"){let r=await(await Gg(`https://store.line.me/emojishop/product/${e}/${t}`)).text();return fee(r)}var WNe=h(()=>{"use strict";d();Cm()});function EB(e){let o=/^https:\/\/store\.line\.me\/stickershop\/product\/([a-z0-9]+)\/.*$/.exec(e);if(o===null)throw new Error("Invalid URL");return o[1]}function QNe(e){return"MoreStickers:Line:Pack:"+e}function Myt(e,t){return"MoreStickers:Line:Sticker:"+t+":"+e}function KNe(e){return{id:Myt(e.id,e.stickerPackId),image:e.animationUrl||e.staticUrl,title:e.id,stickerPackId:QNe(e.stickerPackId),isAnimated:!!e.animationUrl}}function gee(e){return{id:QNe(e.id),title:e.title,author:e.author,logo:KNe(e.mainImage),stickers:e.stickers.map(KNe)}}function hee(e){let t=new DOMParser().parseFromString(e,"text/html"),o=JSON.parse(t.querySelector("[ref=mainImage]")?.dataset?.preview??"null"),{id:r}=o,n=[...t.querySelectorAll('[data-test="sticker-item"]')].map(s=>JSON.parse(s.dataset.preview??"null")).filter(s=>s!==null).map(s=>({...s,stickerPackId:r}));return{title:t.querySelector('[data-test="sticker-name-title"]')?.textContent??"null",author:{name:t.querySelector('[data-test="sticker-author"]')?.textContent??"null",url:"https://store.line.me/"+(t.querySelector('[data-test="sticker-author"]')?.getAttribute("href")??"null")},id:r,mainImage:o,stickers:n}}function ZNe(e){return e.includes('data-test="sticker-name-title"')}async function YNe(e,t="en"){let r=await(await Gg(`https://store.line.me/stickershop/product/${e}/${t}`)).text();return hee(r)}var JNe=h(()=>{"use strict";d();Cm()});function Nyt(e){return{id:e.id,title:e.title=e.title==="null"?e.id.match(/\d+/)?.[0]??e.id:e.title,author:e.author,logo:e.logo,dynamic:e.dynamic}}async function Hg(e,t=xee){let o=Nyt(e);await Promise.all([Ct(`${e.id}`,e),(async()=>{let r=await XNe.lock();try{let n=await vt(t)??null;n?.some(a=>a.id===e.id)?n=n.map(a=>a.id===e.id?o:a):n=n===null?[o]:[...n,o],await Ct(t,n)}finally{r()}})()])}async function Uu(e=xee){return await vt(e)??null??[]}async function fb(e){return await vt(e)??null}async function lA(e,t=xee){await Promise.all([aa(e),VNe(e),(async()=>{let o=await XNe.lock();try{let r=await vt(t)??null;if(r===null)return;await Ct(t,r.filter(n=>n.id!==e))}finally{o()}})()])}var XNe,xee,DB=h(()=>{"use strict";d();Io();vee();Cm();XNe=new mb,xee="MoreStickers:Packs"});function Ryt(e){return e.startsWith("Vencord-MoreStickers-Line-Pack")?"MoreStickers:Line:Pack:"+e.replace("Vencord-MoreStickers-Line-Pack-",""):e.startsWith("Vencord-MoreStickers-Line-Emoji-Pack")?"MoreStickers:Line:Emoji:Pack:"+e.replace("Vencord-MoreStickers-Line-Emoji-Pack-",""):e}function Lyt(e){if(e.startsWith("Vencord-MoreStickers-Line-Sticker")){let[t,o]=e.replace("Vencord-MoreStickers-Line-Sticker","").split("-",2);return"MoreStickers:Line:Sticker:"+t+":"+o}else if(e.startsWith("Vencord-MoreStickers-Line-Emoji")){let[t,o]=e.replace("Vencord-MoreStickers-Line-Emoji","").split("-",2);return"MoreStickers:Line:Emoji:"+t+":"+o}else return e}function yee(e){return{...e,id:Lyt(e.id)}}function Oyt(e){return{...e,id:Ryt(e.id),logo:yee(e.logo),stickers:e.stickers.map(yee)}}async function tBe(){return!((await Uu(PB)).length>0||(await Uu(cA)).length===0)}async function oBe(){if((await Uu(PB)).length>0){D.show({message:"New sticker packs already exist, migration not needed",type:D.Type.FAILURE,id:D.genId(),options:{duration:1e3}});return}let t=await Uu(cA);if(t.length===0){D.show({message:"Old sticker packs not found, nothing to migrate",type:D.Type.FAILURE,id:D.genId(),options:{duration:1e3}});return}for(let r of t)try{let n=await fb(r.id);if(n===null)continue;let a=Oyt(n);try{await Hg(a,PB),await lA(r.id,cA)}catch{await lA(a.id,PB)}}catch(n){console.error(n),D.show({message:`Migration failed: ${r.title} (${r.id})`,type:D.Type.FAILURE,id:D.genId(),options:{duration:1e3}})}t=await Uu(cA),t.length===0&&await Le.del(cA);let o=await gb(eBe);if(o.length>0){let r=o.map(yee);await MB(r,Byt),await Le.del(eBe)}console.log("Migration complete"),D.show({message:"Sticker Pack Migration Complete",type:D.Type.SUCCESS,id:D.genId(),options:{duration:1e3}})}var PB,cA,Byt,eBe,nBe=h(()=>{"use strict";d();on();C();NB();DB();PB="MoreStickers:Packs",cA="Vencord-MoreStickers-Packs",Byt="MoreStickers:RecentStickers",eBe="Vencord-MoreStickers-RecentStickers"});var bee,rBe=h(()=>{"use strict";d();bee=(n=>(n.ADD_STICKER_PACK_URL="Add from URL",n.ADD_STICKER_PACK_HTML="Add from HTML",n.ADD_STICKER_PACK_FILE="Add from File",n.MISC="Misc",n))(bee||{})});function aBe(e){return i("div",{className:us("header")},e.children)}function sBe(e){return i("div",{style:{position:"relative",display:"grid",gridTemplateColumns:"48px auto",gridTemplateRows:"auto 1fr auto"}},e.children)}async function gb(e=iBe){return await vt(e)??[]}async function MB(e,t=iBe){let o=await Fyt.lock();try{await Ct(t,e)}finally{o()}}async function lBe(e){let t=await gb(),o=t.findIndex(r=>r.id===e.id);for(o!==-1&&t.splice(o,1),t.unshift(e);t.length>16;)t.pop();await MB(t)}async function VNe(e){let t=await gb();await MB(t.filter(o=>o.stickerPackId!==e))}var Fyt,See,wee,iBe,_yt,Uyt,BB,NB=h(()=>{"use strict";d();Io();yt();Q1();xr();Lt();We();Je();WNe();JNe();nBe();DB();rBe();Cm();C();Fyt=new mb,See="recent",wee="Recently Used",iBe="MoreStickers:RecentStickers",_yt={onMouseDown:e=>(e.preventDefault(),!1),onDragStart:e=>(e.preventDefault(),!1)},Uyt=({meta:e,hoveredStickerPackId:t,setHoveredStickerPackId:o,refreshStickerPackMetas:r})=>i("div",{className:"sticker-pack",onMouseEnter:()=>o(e.id),onMouseLeave:()=>o(null)},i("div",{className:[No("content-row-grid-inspected-indicator"),t===e.id?"inspected":""].join(" "),style:{top:"unset",left:"unset",height:"96px",width:"96px"}}),e.logo?.image?i("img",{src:e.logo.image,width:"96",..._yt}):null,i("button",{className:t===e.id?"show":"",onClick:async()=>{try{await lA(e.id),D.show({message:"Sticker Pack deleted",type:D.Type.SUCCESS,id:D.genId(),options:{duration:1e3}}),await r()}catch(n){D.show({message:n.message,type:D.Type.FAILURE,id:D.genId(),options:{duration:1e3}})}}},i("svg",{width:"24",height:"24",viewBox:"0 0 24 24",style:{fill:"var(--status-danger)"}},i("title",null,"Delete"),i("path",{d:"M15 3.999V2H9V3.999H3V5.999H21V3.999H15Z"}),i("path",{d:"M5 6.99902V18.999C5 20.101 5.897 20.999 7 20.999H17C18.103 20.999 19 20.101 19 18.999V6.99902H5ZM11 17H9V11H11V17ZM15 17H13V11H15V17Z"}))),i(Y,{className:us("pack-title"),tag:"span"},e.title)),BB=()=>{let[e,t]=V.useState([]),[o,r]=V.useState(""),[n,a]=V.useState(""),[s,l]=V.useState("Add from URL"),[c,u]=V.useState(null),[p,m]=V.useState(!1);async function g(){t(await Uu())}return V.useEffect(()=>{g()},[]),V.useEffect(()=>{tBe().then(m)},[]),i("div",{className:us("settings")},i(rr,{type:"top",look:"brand",selectedItem:s,onItemSelect:l,className:"tab-bar"},Object.values(bee).map(x=>i(rr.Item,{key:x,id:x,className:"tab-bar-item"},x))),s==="Add from URL"&&i("div",{className:"section"},i(oe,null,"Add Sticker Pack from URL"),i(U,null,i("p",null,"Currently LINE stickers/emojis supported only. ",i("br",null),"Get Telegram stickers with ",i("a",{href:"#",onClick:()=>VencordNative.native.openExternal("https://github.com/lekoOwO/MoreStickersConverter")}," MoreStickersConverter"),".")),i(pe,{flexDirection:"row",style:{alignItems:"center",justifyContent:"center"}},i("span",{style:{flexGrow:1}},i(Cd,{initialValue:o,onChange:r,validate:x=>{try{return EB(x),!0}catch{}try{return IB(x),!0}catch{}return"Invalid URL"},placeholder:"Sticker Pack URL"})),i(ue,{size:ue.Sizes.SMALL,onClick:async x=>{x.preventDefault();let v="";try{EB(o),v="LineStickerPack"}catch{}try{IB(o),v="LineEmojiPack"}catch{}let y="";switch(v){case"LineStickerPack":{try{let A=EB(o),k=await YNe(A),w=gee(k);await Hg(w)}catch(A){console.error(A),y=A.message}break}case"LineEmojiPack":{try{let A=IB(o),k=await qNe(A),w=mee(k);await Hg(w)}catch(A){console.error(A),y=A.message}break}}r(""),g(),y?D.show({message:y,type:D.Type.FAILURE,id:D.genId(),options:{duration:1e3}}):D.show({message:"Sticker Pack added",type:D.Type.SUCCESS,id:D.genId(),options:{duration:1e3}})}},"Insert"))),s==="Add from HTML"&&i("div",{className:"section"},i(oe,null,"Add Sticker Pack from HTML"),i(U,null,i("p",null,"When encountering errors while adding a sticker pack, you can try to add it using the HTML source code of the sticker pack page.",i("br",null),"This applies to stickers which are region locked / OS locked / etc.",i("br",null),"The region LINE recognized may vary from the region you are in due to the CORS proxy we're using.")),i(pe,{flexDirection:"row",style:{alignItems:"center",justifyContent:"center"}},i("span",{style:{flexGrow:1}},i(Ea,{value:n,onChange:a,placeholder:"Paste HTML here",rows:1})),i(ue,{size:ue.Sizes.SMALL,onClick:async x=>{x.preventDefault();let v="";if(jNe(n))try{let y=fee(n),A=mee(y);await Hg(A)}catch(y){console.error(y),v=y.message}else if(ZNe(n))try{let y=hee(n),A=gee(y);await Hg(A)}catch(y){console.error(y),v=y.message}a(""),g(),v?D.show({message:v,type:D.Type.FAILURE,id:D.genId(),options:{duration:1e3}}):D.show({message:"Sticker Pack added",type:D.Type.SUCCESS,id:D.genId(),options:{duration:1e3}})}},"Insert from HTML"))),s==="Add from File"&&i("div",{className:"section"},i(oe,null,"Add Sticker Pack from File"),i(ue,{size:ue.Sizes.SMALL,onClick:async x=>{let v=document.createElement("input");v.type="file",v.accept=".stickerpack,.stickerpacks,.json",v.onchange=async y=>{try{let A=v.files?.[0];if(!A)return;let k=await A.text(),w=JSON.parse(k),I=[];Array.isArray(w)?I=w:I=[w];for(let E of I)await Hg(E);D.show({message:"Sticker Packs added",type:D.Type.SUCCESS,id:D.genId(),options:{duration:1e3}})}catch(A){console.error(A),D.show({message:A.message,type:D.Type.FAILURE,id:D.genId(),options:{duration:1e3}})}},v.click()}},"Open Sticker Pack File")),s==="Misc"&&i("div",{className:"section"},i(oe,null,"Misc tools"),i(pe,{flexDirection:"row",style:{alignItems:"center",justifyContent:"start"}},i(ue,{size:ue.Sizes.SMALL,onClick:async x=>{let v=[],y=await Uu();for(let k of y){let w=await fb(k.id);w&&v.push(w)}let A=document.createElement("a");A.href=URL.createObjectURL(new Blob([JSON.stringify(v)],{type:"application/json"})),A.download="MoreStickers.stickerpacks",A.click(),D.show({message:"Sticker Packs exported",type:D.Type.SUCCESS,id:D.genId(),options:{duration:1e3}})}},"Export Sticker Packs"),i(ue,{size:ue.Sizes.SMALL,onClick:async x=>{await oBe()},style:{display:p?"unset":"none"}},"Migrate from v1"))),i(Rt,{style:{marginTop:"8px",marginBottom:"8px"}}),i(oe,null,"Stickers Management"),i("div",{className:"section"},i("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(96px, 1fr))",gap:"8px"}},e.map(x=>i(Uyt,{key:x.id,meta:x,hoveredStickerPackId:c,setHoveredStickerPackId:u,refreshStickerPackMetas:g})))))}});async function zyt(e){let t=new Image;t.crossOrigin="anonymous",await new Promise((g,x)=>{t.onload=g,t.onerror=x,t.src=e});let r=document.createElement("canvas"),n=r.getContext("2d");if(!n)throw new Error("Could not get canvas context");let a=160,s=Math.min(a/t.width,a/t.height),l=t.width*s,c=t.height*s;r.width=a,r.height=a,n.drawImage(t,0,0,l,c);let u=n.getImageData(0,0,a,a),{data:p}=u,m=await new Promise(g=>{r.toBlob(g,"image/png")});if(!m)throw new Error("Could not convert canvas to blob");return m}async function $yt(e,t){let o=new URL(e).pathname.split("/").pop()??"image.png",r=await Gg(e);if(!r.ok)throw new Error("Failed to fetch image for GIF conversion");let n=new Uint8Array(await r.arrayBuffer());await t.writeFile(o,n);let a="output.gif";await t.exec(["-i",o,"-filter_complex",`split[s0][s1]; [s0]palettegen= stats_mode=single: transparency_color=000000[p]; [s1][p]paletteuse= new=1: alpha_threshold=10`,a]);let s=await t.readFile(a);if(await t.deleteFile(o),await t.deleteFile(a),typeof s=="string")throw new Error("Could not read file");let l=new Uint8Array(s.length);return l.set(s),new File([l],a,{type:"image/gif"})}async function cBe({channelId:e,sticker:t,ctrlKey:o,shiftKey:r,ffmpegState:n}){let a=Pa.getPendingReply(e),s=lf.getDraft(e,0),l={},c;if(a&&(Q.dispatch({type:"DELETE_PENDING_REPLY",channelId:e}),l=fo.getSendMessageOptionsForReply(a)),r)return!s.endsWith(" ")&&!s.endsWith(` `)&&(s=" "),s+=t.image,o?tr(s):fo._sendMessage(e,{content:t.image},l);if(t?.isAnimated){if(!n?.ffmpeg||!n.isLoaded)throw new Error("FFmpeg not ready");c=await $yt(t.image,n.ffmpeg)}else{let p=await Gg(t.image);if(!p.ok)throw new Error("Failed to fetch sticker image");let m=URL.createObjectURL(await p.blob()),g=await zyt(m),x=t.filename??new URL(t.image).pathname.split("/").pop(),v=x8(x.split(".").pop());c=new File([g],x,{type:v})}if(Aee.store.promptToUpload||s)return Mr.promptToUpload([c],W.getChannel(e),0);let u=new ou({file:c,platform:1},e);u.on("complete",()=>{mt.post({url:Gt.Endpoints.MESSAGES(e),body:{flags:0,channel_id:e,content:"",nonce:en.fromTimestamp(Date.now()),sticker_ids:[],type:0,attachments:[{id:"0",filename:u.filename,uploaded_filename:u.uploadedFilename}],message_reference:a?l?.messageReference:null}})}),u.on("error",()=>ne("Failed to upload sticker",D.Type.FAILURE)),u.upload()}var cvn,uBe=h(()=>{"use strict";d();tM();G5();_e();co();C();kee();Cm();cvn=new Kd});function Cee({rowIndex:e,colIndex:t,sticker:o,onHover:r,channelId:n,onSend:a=()=>{},isHovered:s=!1}){if(Ax===void 0)return i("div",null,"FFmpegStateContext is undefined");let l=V.useContext(Ax);return i("div",{role:"gridcell","aria-rowindex":e,"aria-colindex":t,id:No(`content-row-grid-${e}-${t}`),onMouseEnter:()=>r(o),onClick:c=>{n&&(cBe({channelId:n,sticker:o,ctrlKey:c.ctrlKey,shiftKey:c.shiftKey,ffmpegState:l}),lBe(o),a(o,c.ctrlKey))}},i("div",{className:No("content-row-grid-sticker")},i("span",{className:No("content-row-grid-hidden-visually")},o.title),i("div",{"aria-hidden":"true"},i("div",{className:[No("content-row-grid-inspected-indicator"),`${s?"inspected":""}`].join(" ")}),i("div",{className:No("content-row-grid-sticker-node")},i("div",{className:No("content-row-grid-asset-wrapper"),style:{height:"96px",width:"96px"}},i("img",{alt:o.title,src:o.image,draggable:"false","data-id":o.id,className:No("content-row-grid-img"),loading:"lazy"}))))))}function Hyt({rowIndex:e,grid1:t,grid2:o,grid3:r,channelId:n}){return i("div",{className:No("content-row"),role:"row","aria-rowindex":e},i(Cee,{...t,rowIndex:e,colIndex:1,channelId:n}),o&&i(Cee,{...o,rowIndex:e,colIndex:2,channelId:n}),r&&i(Cee,{...r,rowIndex:e,colIndex:3,channelId:n}))}function jyt({isExpanded:e}){return i("svg",{className:No("content-header-collapse-icon"),width:16,height:16,viewBox:"0 0 24 24",style:{transform:`rotate(${e?"0":"-90deg"})`}},i("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M16.59 8.59004L12 13.17L7.41 8.59004L6 10L12 16L18 10L16.59 8.59004Z"}))}function dBe({image:e,title:t,children:o,isSelected:r=!1,afterScroll:n=()=>{},beforeScroll:a=()=>{}}){let[s,l]=V.useState(!0),c=V.useRef(null);return V.useEffect(()=>{r&&c.current&&(a(),c.current.scrollIntoView({behavior:"smooth",block:"start"}),n())},[r]),i("span",null,i("div",{className:No("content-header-wrapper")},i("div",{className:No("content-header-header"),ref:c,"aria-expanded":s,"aria-label":`Category, ${t}`,role:"button",tabIndex:0,onClick:()=>{l(u=>!u)}},i("div",{className:No("content-header-header-icon")},i("div",null,typeof e=="string"?i("svg",{className:No("content-header-svg"),width:16,height:16,viewBox:"0 0 16 16"},i("foreignObject",{x:0,y:0,width:16,height:16,overflow:"visible",mask:"url(#svg-mask-squircle)"},i("img",{alt:t,src:e,className:No("content-header-guild-icon"),loading:"lazy"}))):e)),i("span",{className:No("content-header-header-label")},t),i(jyt,{isExpanded:s}))),s?o:null)}function mBe({stickerPacks:e,selectedStickerPackId:t,setSelectedStickerPackId:o,channelId:r,closePopout:n,query:a}){let[s,l]=V.useState(e.length&&e[0].stickers.length?e[0].stickers[0]:null),[c,u]=V.useState(e.length?e[0]:null),[p,m]=V.useState([]),g=V.useRef(null),x=V.useRef(null);function v(k){return a?k.filter(w=>w.title.toLowerCase().includes(a.toLowerCase())):k}async function y(){let k=await gb();m(k)}V.useEffect(()=>{y()},[]),V.useEffect(()=>{c?.id!==s?.stickerPackId&&u(e.find(k=>k.id===s?.stickerPackId)??c)},[s]);let A=k=>k.reduce((w,I,E)=>(E%3===0&&w.push([]),w[w.length-1].push(I),w),[]).map((w,I)=>i(Hyt,{key:I,rowIndex:I,channelId:r,grid1:{rowIndex:I,colIndex:1,sticker:w[0],onHover:l,onSend:(E,N)=>{!N&&n()},isHovered:s?.id===w[0].id},grid2:w.length>1?{rowIndex:I,colIndex:2,sticker:w[1],onHover:l,onSend:(E,N)=>{!N&&n()},isHovered:s?.id===w[1].id}:void 0,grid3:w.length>2?{rowIndex:I,colIndex:3,sticker:w[2],onHover:l,onSend:(E,N)=>{!N&&n()},isHovered:s?.id===w[2].id}:void 0}));return i("div",{className:No("content-list-wrapper")},i("div",{className:No("content-wrapper")},i("div",{className:No("content-scroller"),ref:x},i("div",{className:No("content-list-items"),role:"none presentation"},i("div",{ref:g},i(dBe,{image:i(dee,{width:16,height:16,color:"currentColor"}),title:wee,isSelected:See===t,beforeScroll:()=>{x.current?.scrollTo({top:0})},afterScroll:()=>{o(null)}},...A(v(p))),e.map(k=>{let w=A(v(k.stickers));return i(dBe,{key:k.id,image:k.logo.image,title:k.title,isSelected:k.id===t,beforeScroll:()=>{x.current?.scrollTo({top:0})},afterScroll:()=>{o(null)}},...w)}))),i("div",{style:{height:`${g.current?.clientHeight??0}px`}})),i("div",{className:No("content-inspector"),style:{visibility:s?"visible":"hidden",...s?{}:{height:"0"}}},i("div",{className:No("content-inspector-graphic-primary"),"aria-hidden":"true"},i("div",null,i("div",{className:No("content-row-grid-asset-wrapper"),style:{height:"28px",width:"28px"}},i("img",{alt:s?.title??"",src:s?.image,draggable:"false","data-id":s?.id??"",className:No("content-inspector-img")})))),i("div",{className:No("content-inspector-text-wrapper")},i("div",{className:No("content-inspector-title-primary"),"data-text-variant":"text-md/semibold"},s?.title??""),i("div",{className:No("content-inspector-title-secondary"),"data-text-variant":"text-md/semibold"},c?.title?"from ":"",i("strong",null,c?.title??""))),i("div",{className:No("content-inspector-graphic-secondary"),"aria-hidden":"true"},i("div",null,i("svg",{width:32,height:32,viewBox:"0 0 32 32"},i("foreignObject",{x:0,y:0,width:32,height:32,overflow:"visible",mask:"url(#svg-mask-squircle)"},i("img",{alt:c?.title??"",src:c?.logo?.image}))))))))}var Gyt,hb,pBe,fBe,gBe=h(()=>{"use strict";d();uBe();Cm();os();C();uee();pee();NB();Gyt=Jo((e,...t)=>e(...t),150),hb={id:See,name:wee},pBe=({packMetas:e,onPackSelect:t})=>{let[o,r]=V.useState(hb),[n,a]=V.useState(!1);return i(FNe,null,i(ONe,{categoryLength:e.length},i(cee,{style:{padding:"4px",boxSizing:"border-box",width:"32px"},isActive:o===hb,onClick:()=>{o!==hb&&(t(hb),r(hb))}},i(dee,{width:24,height:24,color:o===hb?" var(--interactive-icon-active)":"var(--interactive-icon-default)"})),...e.map(s=>i(cee,{key:s.id,onClick:()=>{o?.id!==s.id&&(t(s),r(s))},isActive:o?.id===s.id},i(LNe,{src:s.iconUrl,alt:s.name,isActive:o?.id===s.id})))),i("div",{className:No("settings-cog-container")},i("button",{className:No("settings-cog")+(n?` ${No("settings-cog-active")}`:""),onClick:()=>{ce(s=>i(be,{size:"lg",title:"Stickers+",...s},i(BB,null)))},onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1)},i($Ne,{width:20,height:20}))))};fBe=({onQueryChange:e})=>{let[t,o]=V.useState(),r=(n,a=!1)=>{o(n),a?e(n):Gyt(e,n)};return i(aBe,null,i("div",{className:No("container")},i("div",null,i("div",{className:No("search-box")},i(Te,{style:{height:"30px",border:"none"},placeholder:"Search stickers",autoFocus:!0,value:t,onChange:n=>r(n)})),i("div",{className:No("search-icon")},i(_Ne,null,t&&t.length>0?i(zNe,{className:No("clear-icon"),width:20,height:20,onClick:()=>r("",!0)}):i(UNe,{width:20,height:20,color:"var(--text-muted)"}))))))}});var vee=h(()=>{"use strict";d();uee();pee();NB();gBe()});var Aee,RB,kee=h(()=>{"use strict";d();BNe();j();G5();O();R();C();vee();DB();Cm();Aee=M({promptToUpload:{type:3,description:"Inserts the sticker into your chatbar instead of sending immediately",default:!1},packs:{type:6,description:"Packs",component:BB}}),RB=S({name:"MoreStickers",description:"Adds sticker packs from other social media platforms. (e.g. LINE)",tags:["Chat","Emotes","Media"],authors:[F.Leko,b.Arjix],settings:Aee,patches:[{find:"#{intl::STICKER_BUTTON_LABEL}",replacement:[{match:/(children:\(0,\i\.jsx\)\()(.{0,10})({className:\i\(\)\(\i\.\i,\i\.\i)/,replace:"$1arguments[0]?.stickersType?$self.stickerButton:$2$3"},{match:/(\i=)((\i\.useCallback\(\(\)=>\{\(.*?\)\().*?\.STICKER,(\i.{0,25}\]\)))/,replace:'$1arguments[0]?.stickersType?$3"stickers+",$4:$2'},{match:/(\i)=((\i)===\i\.\i\.STICKER)/,replace:"$1=arguments[0].stickersType?($3===arguments[0].stickersType):($2)"}]},{find:'("ChannelTextAreaButtons")',replacement:[{match:/(?<=(,\i\.stickers\?\.button.{0,50}\i\.push\(\(.{0,100})\},"sticker"\)\))/,replace:'$1,stickersType:"stickers+"},"stickers+"))'}]},{find:"#{intl::EXPRESSION_PICKER_CATEGORIES_A11Y_LABEL}",replacement:[{match:/(?<=(\i)\?(\(.{0,15}\))\((\i),\{.{0,150}(\i)===\i\.\i\.STICKER,.{0,150}children:(.{0,50}\.\i,children:.{0,50})\}\)\}\):null)/,replace:',vcStickers=$1?$2($3,{id:"stickers+-picker-tab","aria-controls":"more-stickers-picker-tab-panel","aria-selected":$4==="stickers+",isActive:$4==="stickers+",autoFocus:true,viewType:"stickers+",children:$5+"+"})}):null'},{match:/children:\[\i,\i(?=.{0,150}\.SOUNDBOARD)/g,replace:"$&,vcStickers"},{match:/:null,((.{1,200})===.{1,30}\.STICKER&&\w+\?(\([^()]{1,10}\)).{1,15}?(\{.*?,onSelectSticker:.*?\})\):null)/,replace:':null,$2==="stickers+"?$3($self.moreStickersComponent,$4):null,$1'}]}],stickerButton({innerClassName:e,isActive:t,onClick:o}){return i("button",{className:e,onClick:o,style:{backgroundColor:"transparent"}},i("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 24 24",className:us("icon",{"icon-active":t})},i("path",{d:"M18.5 11c-4.136 0-7.5 3.364-7.5 7.5c0 .871.157 1.704.432 2.482l9.551-9.551A7.462 7.462 0 0 0 18.5 11z"}),i("path",{d:"M12 2C6.486 2 2 6.486 2 12c0 4.583 3.158 8.585 7.563 9.69A9.431 9.431 0 0 1 9 18.5C9 13.262 13.262 9 18.5 9c1.12 0 2.191.205 3.19.563C20.585 5.158 16.583 2 12 2z"})))},moreStickersComponent({channel:e,closePopout:t}){if(Ax===void 0)return i("div",null,"FFmpegStateContext is undefined");let[o,r]=V.useState(),[n,a]=V.useState([]),[s,l]=V.useState([]),[c,u]=V.useState(0),[p,m]=V.useState(null),g=V.useState(!1),x=V.useState(new Kd),v=y=>y.map(A=>A.id).sort().join(",");return V.useEffect(()=>{(async()=>{console.log("Updating sticker packs...",c),u(c+1);let y=(await Promise.all(n.map(A=>fb(A.id)))).filter(A=>A!==null);l(y)})()},[n]),V.useEffect(()=>{(async()=>{let y=await Uu();v(y)!==v(n)&&a(y)})()},[]),V.useEffect(()=>{g[0]||RNe(x[0],()=>{g[1](!0)})},[]),i(sBe,null,i("svg",{width:"1",height:"1",viewBox:"0 0 1 1",fill:"none",xmlns:"http://www.w3.org/2000/svg",id:us("inspectedIndicatorMask")},i("path",{d:"M0 0.26087C0 0.137894 0 0.0764069 0.0382035 0.0382035C0.0764069 0 0.137894 0 0.26087 0H0.73913C0.862106 0 0.923593 0 0.961797 0.0382035C1 0.0764069 1 0.137894 1 0.26087V0.73913C1 0.862106 1 0.923593 0.961797 0.961797C0.923593 1 0.862106 1 0.73913 1H0.26087C0.137894 1 0.0764069 1 0.0382035 0.961797C0 0.923593 0 0.862106 0 0.73913V0.26087Z",fill:"white"})),i(fBe,{onQueryChange:r}),i(Ax.Provider,{value:{ffmpeg:x[0],isLoaded:g[0]}},i(mBe,{stickerPacks:s,selectedStickerPackId:p,setSelectedStickerPackId:m,channelId:e.id,closePopout:t,query:o})),i(pBe,{packMetas:n.map(y=>({id:y.id,name:y.title,iconUrl:y.logo.image})),onPackSelect:y=>{m(y.id)}}))}})});var hBe=h(()=>{});function qyt(){let e=sp.store.tagSettings??={},{localTags:t}=vb;return jg.forEach(o=>{e[o.name]||(e[o.name]={text:o.displayName,showInChat:!0,showInNotChat:!0})}),i(pe,{flexDirection:"column"},i("div",{style:{display:"flex",flexWrap:"wrap",gap:"16px"}},jg.map(o=>i(Ht,{key:o.name,style:{padding:"1em 1em 0",width:"calc(33.333% - 11px)",boxSizing:"border-box"}},i(Ia.FormTitle,{style:{width:"fit-content"}},i(ve,{text:o.description},({onMouseEnter:r,onMouseLeave:n})=>i("div",{onMouseEnter:r,onMouseLeave:n},o.displayName," Tag"))),i("div",{style:{marginBottom:"10px"}},i(U,{style:{fontSize:"13px"}},"Example:"),i(xb,{type:t[o.name]})),i(Te,{type:"text",value:e[o.name]?.text??o.displayName,placeholder:`Text on tag (default: ${o.displayName})`,onChange:r=>e[o.name].text=r,className:z.bottom16}),i(mo,{title:"Show in messages",value:e[o.name]?.showInChat??!0,onChange:r=>e[o.name].showInChat=r,hideBorder:!0}),i(mo,{title:"Show in member list and profiles",value:e[o.name]?.showInNotChat??!0,onChange:r=>e[o.name].showInNotChat=r,hideBorder:!0})))))}var sp,Tee=h(()=>{"use strict";d();j();Qn();Lt();hi();Je();Wt();R();C();Eee();Iee();sp=M({dontShowForBots:{description:"Don't show extra tags for bots (excluding webhooks)",type:3,default:!1},dontShowBotTag:{description:"Only show extra tags for bots / Hide [APP] text",type:3,default:!1,restartNeeded:!0},showWebhookTagFully:{description:"Show Webhook tag in followed channels like announcements",type:3,default:!1},tagSettings:{type:6,component:qyt,description:"fill me"},noAppsAllowed:{description:"Replaces app for bot",type:3,default:!1,restartNeeded:!0}})});var Wyt,jg,xb,xBe,Iee=h(()=>{"use strict";d();le();C();Tee();Wyt=(e,t)=>{let o=e?.type===0&&!!e?.messageReference&&!sp.store.showWebhookTagFully;return!!e?.webhookId&&t.isNonUserBot()&&!o},jg=[{name:"WEBHOOK",displayName:"Webhook",description:"Messages sent by webhooks",condition:Wyt},{name:"OWNER",displayName:"Owner",description:"Owns the server",condition:(e,t,o)=>$e.getGuild(o?.guild_id)?.ownerId===t.id},{name:"ADMINISTRATOR",displayName:"Admin",description:"Has the administrator permission",permissions:["ADMINISTRATOR"]},{name:"MODERATOR_STAFF",displayName:"Staff",description:"Can manage the server, channels or roles",permissions:["MANAGE_GUILD","MANAGE_CHANNELS","MANAGE_ROLES"]},{name:"MODERATOR",displayName:"Mod",description:"Can manage messages or kick/ban people",permissions:["MANAGE_MESSAGES","KICK_MEMBERS","BAN_MEMBERS"]},{name:"VOICE_MODERATOR",displayName:"VC Mod",description:"Can manage voice chats",permissions:["MOVE_MEMBERS","MUTE_MEMBERS","DEAFEN_MEMBERS"]},{name:"CHAT_MODERATOR",displayName:"Chat Mod",description:"Can timeout people",permissions:["MODERATE_MEMBERS"]}],xb=qn(e=>e.Types?.[0]==="BOT"),xBe=Oe(".getCurrentUser()",".computeLurkerPermissionsAllowList()")});var Kyt,Qyt,vb,Eee=h(()=>{"use strict";d();hBe();j();O();we();_e();R();C();Iee();Tee();Kyt=K("vc-mut-"),Qyt=()=>{let e=100,t={};for(let{name:o}of jg)t[o]=++e,t[e]=o;return t};Rp(!0,"MoreUserTags","NoAppsAllowed","noAppsAllowed");vb=S({name:"MoreUserTags",description:"Adds tags for webhooks and moderative roles (owner, admin, etc.)",dependencies:["MemberListDecoratorsAPI","MessageDecorationsAPI","NicknameIconsAPI"],tags:["Appearance","Chat"],authors:[b.Cyn,b.TheSun,b.RyanCaoDev,b.LordElias,b.AutumnVN,F.Hen,F.meowabyte],settings:sp,patches:[{find:".STAFF_ONLY_DM:",replacement:[{match:/(?<=type:(\i).*?\.BOT:.{0,25})default:(\i)=/,replace:"default:$2=$self.getTagText($self.localTags[$1]);"},{match:/(?<=type:\i.*?)\.BOT:(?=default:)/,replace:"$&return null;",predicate:()=>sp.store.dontShowBotTag}]},{find:'"#{intl::APP_TAG::hash}":',all:!0,predicate:()=>sp.store.noAppsAllowed,replacement:{match:/(#{intl::APP_TAG::hash}":\[").*?("\])/,replace:"$1BOT$2",noWarn:!0}}],start(){let e=sp.store.tagSettings||{};for(let t of Object.values(jg))e[t.name]??={showInChat:!0,showInNotChat:!0,text:t.displayName};sp.store.tagSettings=e},localTags:Qyt(),getChannelId(){return Fe.getChannelId()},renderNicknameIcon(e){let t=this.getTag({user:L.getUser(e.userId),channel:zo(),channelId:this.getChannelId(),isChat:!1});return t&&i(xb,{type:t,verified:!1})},renderMessageDecoration(e){let t=this.getTag({message:e.message,user:L.getUser(e.message.author.id),channelId:e.message.channel_id,isChat:!0});return t&&i(xb,{useRemSizes:!0,className:Kyt("message-tag",e.message.author.isVerifiedBot()&&"message-verified"),type:t,verified:!1})},renderMemberListDecorator(e){let t=this.getTag({user:e.user,channel:zo(),channelId:this.getChannelId(),isChat:!1});return t&&i(xb,{type:t,verified:!1})},getTagText(e){if(!e)return Xe("APP_TAG");let t=jg.find(({name:o})=>e===o);return t?sp.store.tagSettings?.[t.name]?.text||t.displayName:e||Xe("APP_TAG")},getTag({message:e,user:t,channelId:o,isChat:r,channel:n}){let a=this.settings.store;if(!t||r&&t.id==="1"||t.bot&&a.dontShowForBots||(n??=W.getChannel(o),!n))return null;let s=this.getPermissions(t,n);for(let l of jg)if(!(r&&!a.tagSettings[l.name]?.showInChat)&&!(!r&&!a.tagSettings[l.name]?.showInNotChat)&&!(l.name!=="OWNER"&&$e.getGuild(n?.guild_id)?.ownerId===t.id&&r&&!a.tagSettings.OWNER.showInChat||$e.getGuild(n?.guild_id)?.ownerId===t.id&&!r&&!a.tagSettings.OWNER.showInNotChat)&&("permissions"in l?l.permissions.some(c=>s.includes(c)):l.condition(e,t,n)))return this.localTags[l.name];return null},getPermissions(e,t){let o=$e.getGuild(t?.guild_id);if(!o)return[];let r=xBe({user:e,context:o,overwrites:t.permissionOverwrites});return Object.entries(ct).map(([n,a])=>r&a?n:"").filter(Boolean)}})});function Jyt(e,t){let o=0,r=0;for(;(r=e.indexOf(t,r)+1)!==0;)o++;return o}function Xyt(e,t){if(!t.global)throw new Error("pattern must be global");let o=0;for(;t.test(e);)o++;return o}function ebt(e){let t=Jyt(e,Pee)+Xyt(e,Vyt);return Math.min(t,10)}function Dee(){if(!qg.store.triggerWhenUnfocused&&!document.hasFocus())return;let e=document.createElement("audio");e.src=qg.store.quality==="HD"?Yyt:Zyt,e.volume=qg.store.volume,e.play()}var Pee,Zyt,Yyt,qg,LB,Vyt,vBe=h(()=>{"use strict";d();j();O();Be();R();C();Pee="\u{1F5FF}",Zyt="https://github.com/Equicord/Equibored/raw/main/sounds/moyai/moyai.mp3",Yyt="https://github.com/Equicord/Equibored/raw/main/sounds/moyai/moyai.wav",qg=M({volume:{description:"Volume of the \u{1F5FF}\u{1F5FF}\u{1F5FF}",type:5,markers:zt(0,1,.1),default:.5,stickToMarkers:!1},quality:{description:"Quality of the \u{1F5FF}\u{1F5FF}\u{1F5FF}",type:4,options:[{label:"Normal",value:"Normal",default:!0},{label:"HD",value:"HD"}]},triggerWhenUnfocused:{description:"Trigger the \u{1F5FF} even when the window is unfocused",type:3,default:!0},ignoreBots:{description:"Ignore bots",type:3,default:!0},ignoreBlocked:{description:"Ignore blocked users",type:3,default:!0}}),LB=S({name:"Moyai",authors:[b.Megu,b.Nuckyz],description:"Plays a \u{1F5FF} sound effect whenever a moyai emoji is sent, reacted, or used as a voice effect in your current channel.",tags:["Fun"],settings:qg,flux:{async MESSAGE_CREATE({optimistic:e,type:t,message:o,channelId:r}){if(e||t!=="MESSAGE_CREATE"||o.state==="SENDING"||qg.store.ignoreBots&&o.author?.bot||qg.store.ignoreBlocked&&qe.isBlocked(o.author?.id)||!o.content||r!==Fe.getChannelId())return;let n=ebt(o.content);for(let a=0;a/gi});var yBe=h(()=>{});var bBe,SBe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/musicControls/hoverOnly.css",{name:"src/equicordplugins/musicControls/hoverOnly.css",source:`.vc-spotify-button-row { height: 0; opacity: 0; pointer-events: none; transition: 0.2s; transition-property: height; } .eq-tdl-button-row { height: 0; opacity: 0; pointer-events: none; transition: 0.2s; transition-property: height; } #eq-tdl-player:hover .eq-tdl-button-row, #vc-spotify-player:hover .vc-spotify-button-row { opacity: 1; height: 32px; pointer-events: auto; /* only transition opacity on show to prevent clipping */ transition-property: height, opacity; }`,classNames:{},dom:null});bBe="src/equicordplugins/musicControls/hoverOnly.css"});var kx=h(()=>{"use strict";d()});function obt(e){let[t,o]=e.slice(1,-1).split(":").map(Number);return t*60+o}async function wBe(e){let t={track_name:e.name,artist_name:e.artists[0].name,album_name:e.album.name,duration:String(e.duration/1e3)},o=new URLSearchParams(t),r=`${tbt}?${o.toString()}`,n=await fetch(r,{headers:{"User-Agent":"SpotifyLyrics for Equicord (https://github.com/Masterjoona/vc-spotifylyrics)"}});if(!n.ok)return null;let a=await n.json();if(!a.syncedLyrics)return null;let l=a.syncedLyrics.split(` `).filter(c=>c.trim()!=="");return{useLyric:"LRCLIB",lyricsVersions:{LRCLIB:l.map(c=>{let[u,p]=c.split("]"),m=p.trim();return{time:obt(u),text:m===""||m==="\u266A"?null:m}})}}}var tbt,ABe=h(()=>{"use strict";d();kx();tbt="https://lrclib.net/api/get"});function rbt(e,t){let o=t?.trim().replace(/\/+$/,"")||nbt,r=new URL(o);return r.searchParams.set("trackid",e),r.toString()}async function kBe(e,t){let o=await fetch(rbt(e,t));if(!o.ok)return null;let r;try{r=await o.json()}catch{return null}if(r.error||!Array.isArray(r.lines)||r.lines.length<2)return null;let n=r.lines;return n[0].startTimeMs==="0"&&n[n.length-1].startTimeMs==="0"?null:{useLyric:"Spotify",lyricsVersions:{Spotify:n.map(a=>{let s=a.words.trim();return{time:Number(a.startTimeMs)/1e3,text:s===""||s==="\u266A"?null:s}})}}}var nbt,CBe=h(()=>{"use strict";d();kx();nbt="https://spotify-lyrics-api-pi.vercel.app"});async function Mee(e){if(!e||!e.id)return null;let t=e.id,o=await Le.get(Wg);if(o?.[t])return o[t];let r=OB.get(t);if(r){let a=an.store.lyricsProvider;if(!an.store.fallbackProvider&&r[a]||Cx.every(s=>r[s]))return null}let n=[an.store.lyricsProvider,...Cx.filter(a=>a!==an.store.lyricsProvider)];for(let a of n){let s=await FB[a](e);if(s)return await Le.set(Wg,{...o,[t]:s}),s;let l=OB.get(t)||{};OB.set(t,{...l,[a]:!0})}return null}async function _B(){OB.clear(),await Le.set(Wg,{})}async function UB(e,t,o){let r=await Le.get(Wg),n=r[e];await Le.set(Wg,{...r,[e]:{...n,useLyric:o,lyricsVersions:{...n?.lyricsVersions,[o]:t}}})}async function TBe(){let e=await Le.get(Wg),t={};for(let[o,r]of Object.entries(e)){let{Translated:n,...a}=r?.lyricsVersions||{},s=a.Spotify?"Spotify":"LRCLIB";t[o]={lyricsVersions:a,useLyric:s}}await Le.set(Wg,t)}async function IBe(){let e=await Le.get("SpotifyLyricsCache");if(!e||!Object.entries(e).length)return;let t=Object.entries(e).filter(r=>r[1]),o={};t.forEach(([r,n])=>{o[r]={lyricsVersions:{LRCLIB:n.map(({time:a,text:s})=>({time:a,text:s}))},useLyric:"LRCLIB"}}),await Le.set(Wg,o),await Le.set("SpotifyLyricsCache",{})}var Wg,OB,FB,Cx,dA=h(()=>{"use strict";d();on();Uc();ABe();CBe();kx();Wg="SpotifyLyricsCacheNew",OB=new Map,FB={Spotify:async e=>await kBe(e.id,an.store.spotifyLyricsApiUrl),LRCLIB:wBe},Cx=Object.keys(FB)});var EBe,DBe=h(()=>{"use strict";d();EBe=[{value:"auto",label:"Detect language"},{value:"af",label:"Afrikaans"},{value:"sq",label:"Albanian"},{value:"am",label:"Amharic"},{value:"ar",label:"Arabic"},{value:"hy",label:"Armenian"},{value:"as",label:"Assamese"},{value:"ay",label:"Aymara"},{value:"az",label:"Azerbaijani"},{value:"bm",label:"Bambara"},{value:"eu",label:"Basque"},{value:"be",label:"Belarusian"},{value:"bn",label:"Bengali"},{value:"bho",label:"Bhojpuri"},{value:"bs",label:"Bosnian"},{value:"bg",label:"Bulgarian"},{value:"ca",label:"Catalan"},{value:"ceb",label:"Cebuano"},{value:"ny",label:"Chichewa"},{value:"zh-CN",label:"Chinese (Simplified)"},{value:"zh-TW",label:"Chinese (Traditional)"},{value:"co",label:"Corsican"},{value:"hr",label:"Croatian"},{value:"cs",label:"Czech"},{value:"da",label:"Danish"},{value:"dv",label:"Dhivehi"},{value:"doi",label:"Dogri"},{value:"nl",label:"Dutch"},{value:"en",label:"English",default:!0},{value:"eo",label:"Esperanto"},{value:"et",label:"Estonian"},{value:"ee",label:"Ewe"},{value:"tl",label:"Filipino"},{value:"fi",label:"Finnish"},{value:"fr",label:"French"},{value:"fy",label:"Frisian"},{value:"gl",label:"Galician"},{value:"ka",label:"Georgian"},{value:"de",label:"German"},{value:"el",label:"Greek"},{value:"gn",label:"Guarani"},{value:"gu",label:"Gujarati"},{value:"ht",label:"Haitian Creole"},{value:"ha",label:"Hausa"},{value:"haw",label:"Hawaiian"},{value:"iw",label:"Hebrew"},{value:"hi",label:"Hindi"},{value:"hmn",label:"Hmong"},{value:"hu",label:"Hungarian"},{value:"is",label:"Icelandic"},{value:"ig",label:"Igbo"},{value:"ilo",label:"Ilocano"},{value:"id",label:"Indonesian"},{value:"ga",label:"Irish"},{value:"it",label:"Italian"},{value:"ja",label:"Japanese"},{value:"jw",label:"Javanese"},{value:"kn",label:"Kannada"},{value:"kk",label:"Kazakh"},{value:"km",label:"Khmer"},{value:"rw",label:"Kinyarwanda"},{value:"gom",label:"Konkani"},{value:"ko",label:"Korean"},{value:"kri",label:"Krio"},{value:"ku",label:"Kurdish (Kurmanji)"},{value:"ckb",label:"Kurdish (Sorani)"},{value:"ky",label:"Kyrgyz"},{value:"lo",label:"Lao"},{value:"la",label:"Latin"},{value:"lv",label:"Latvian"},{value:"ln",label:"Lingala"},{value:"lt",label:"Lithuanian"},{value:"lg",label:"Luganda"},{value:"lb",label:"Luxembourgish"},{value:"mk",label:"Macedonian"},{value:"mai",label:"Maithili"},{value:"mg",label:"Malagasy"},{value:"ms",label:"Malay"},{value:"ml",label:"Malayalam"},{value:"mt",label:"Maltese"},{value:"mi",label:"Maori"},{value:"mr",label:"Marathi"},{value:"mni-Mtei",label:"Meiteilon (Manipuri)"},{value:"lus",label:"Mizo"},{value:"mn",label:"Mongolian"},{value:"my",label:"Myanmar (Burmese)"},{value:"ne",label:"Nepali"},{value:"no",label:"Norwegian"},{value:"or",label:"Odia (Oriya)"},{value:"om",label:"Oromo"},{value:"ps",label:"Pashto"},{value:"fa",label:"Persian"},{value:"pl",label:"Polish"},{value:"pt",label:"Portuguese"},{value:"pa",label:"Punjabi"},{value:"qu",label:"Quechua"},{value:"ro",label:"Romanian"},{value:"ru",label:"Russian"},{value:"sm",label:"Samoan"},{value:"sa",label:"Sanskrit"},{value:"gd",label:"Scots Gaelic"},{value:"nso",label:"Sepedi"},{value:"sr",label:"Serbian"},{value:"st",label:"Sesotho"},{value:"sn",label:"Shona"},{value:"sd",label:"Sindhi"},{value:"si",label:"Sinhala"},{value:"sk",label:"Slovak"},{value:"sl",label:"Slovenian"},{value:"so",label:"Somali"},{value:"es",label:"Spanish"},{value:"su",label:"Sundanese"},{value:"sw",label:"Swahili"},{value:"sv",label:"Swedish"},{value:"tg",label:"Tajik"},{value:"ta",label:"Tamil"},{value:"tt",label:"Tatar"},{value:"te",label:"Telugu"},{value:"th",label:"Thai"},{value:"ti",label:"Tigrinya"},{value:"ts",label:"Tsonga"},{value:"tr",label:"Turkish"},{value:"tk",label:"Turkmen"},{value:"ak",label:"Twi"},{value:"uk",label:"Ukrainian"},{value:"ur",label:"Urdu"},{value:"ug",label:"Uyghur"},{value:"uz",label:"Uzbek"},{value:"vi",label:"Vietnamese"},{value:"cy",label:"Welsh"},{value:"xh",label:"Xhosa"},{value:"yi",label:"Yiddish"},{value:"yo",label:"Yoruba"},{value:"zu",label:"Zulu"}]});function Nee(e){(e?Oi:La)(bBe)}function abt(){return i("section",null,i(Ot,null,"How to install"),i(U,null,"Install ",i(B0,{href:"https://github.com/Inrixia/TidaLuna#installation"},"TidaLuna")," from here, then go to TidalLuna settings \u2192 Plugin stores \u2192 Install ",i("code",null,"@vmohammad/api")))}function sbt(){let{store:e}=an;return i(f,null,i(go,{id:"lyrics-provider",name:"Lyrics Provider",description:"Where lyrics are fetched from."},i(qt,{options:[{value:"LRCLIB",label:"LRCLIB",default:!0},{value:"Spotify",label:"Spotify (Musixmatch)"}],isSelected:t=>t===e.lyricsProvider,select:t=>{e.lyricsProvider=t},serialize:t=>t,placeholder:"Select a lyrics provider"})),e.lyricsProvider==="Spotify"&&i(go,{id:"spotify-lyrics-provider",name:"Spotify Lyrics API Base URL",description:"Custom instance base URL (for example: http://localhost:8080)."},i(Te,{type:"text",value:e.spotifyLyricsApiUrl,onChange:t=>{e.spotifyLyricsApiUrl=t,_B(),ne("Lyrics cache purged",D.Type.SUCCESS)},placeholder:"https://spotify-lyrics-api-pi.vercel.app",maxLength:null})))}var ibt,an,Uc=h(()=>{"use strict";d();j();nl();Tt();We();Je();cu();R();C();SBe();dA();DBe();kx();ibt={markers:zt(-2500,2500,250),stickToMarkers:!0};an=M({hoverControls:{description:"Show controls on hover",type:3,default:!1,onChange:e=>Nee(e)},showMusicNoteOnNoLyrics:{description:"Show a music note icon when no lyrics are found",type:3,default:!0},lyricsPosition:{description:"Position of the lyrics",type:4,options:[{value:"above",label:"Above Player(s)"},{value:"below",label:"Below Player(s)",default:!0}]},lyricsProvider:{description:"Where lyrics are fetched from",type:4,options:[{value:"LRCLIB",label:"LRCLIB",default:!0},{value:"Spotify",label:"Spotify (Musixmatch)"}],hidden:!0},spotifyLyricsApiUrl:{type:0,description:"Spotify lyrics API base URL.",hidden:!0,default:"https://spotify-lyrics-api-pi.vercel.app",onChange:async()=>{await _B(),ne("Lyrics cache purged",D.Type.SUCCESS)}},lyricsProviderSettings:{type:6,component:sbt},translateTo:{description:"Translate lyrics to - Changing this will clear existing translations",type:4,options:EBe,onChange:async()=>{await TBe(),ne("Translations cleared",D.Type.SUCCESS)}},lyricsConversion:{description:"Automatically translate or romanize lyrics",type:4,options:[{value:"None",label:"None",default:!0},{value:"Translated",label:"Translate"},{value:"Romanized",label:"Romanize"}]},fallbackProvider:{description:"When a lyrics provider fails, try other providers",type:3,default:!0},showFailedToasts:{description:"Hide toasts when lyrics fail to fetch",type:3,default:!0},lyricDelay:{description:"",type:5,default:0,...ibt},purgeLyricsCache:{description:"Purge the lyrics cache",type:6,component:()=>i(Ep,{color:Ep.Colors.RED,onClick:()=>{_B(),ne("Lyrics cache purged",D.Type.SUCCESS)}},"Purge Cache")},spotifySectionTitle:{type:6,component:()=>i("section",null,i(Ot,null,"Spotify"))},showSpotifyControls:{description:"Show Spotify Controls",type:3,default:!1},showSpotifyLyrics:{description:"Show Spotify Lyrics",type:3,default:!1},useSpotifyUris:{type:3,description:"Open Spotify URIs instead of Spotify URLs. Will only work if you have Spotify installed and might not work on all platforms",default:!1},previousButtonRestartsTrack:{type:3,description:"Restart currently playing track when pressing the previous button if playtime is >3s",default:!0},tdalSectionTitle:{type:6,component:()=>i("section",null,i(Ot,null,"Tidal"))},installTidalWithWS:{type:6,component:()=>i(abt,null)},showTidalControls:{description:"Show Tidal Player",type:3,default:!1},showTidalLyrics:{description:"Show Tidal Controls",type:3,default:!1},websocketURL:{type:0,description:"Default is ws://localhost:24123",default:"ws://localhost:24123",restartNeeded:!0}})});var Xt,yb=h(()=>{"use strict";d();Jt();WT();le();C();Uc();Xt=ln(()=>{let{Store:e}=yi,t=P0("getActiveSocketAndDevice"),o=Ae("vcSpotifyMarker"),r="https://api.spotify.com/v1/me/player";class n extends e{mPosition=0;_start=0;track=null;device=null;isPlaying=!1;repeat="off";shuffle=!1;volume=0;isSettingPosition=!1;openExternal(l){let c=an.store.useSpotifyUris||Ve(nm.name)?"spotify:"+l.replaceAll("/",(u,p)=>p===0?"":":"):"https://open.spotify.com"+l;VencordNative.native.openExternal(c)}get position(){let l=this.mPosition;return this.isPlaying&&(l+=Date.now()-this._start),l}set position(l){this.mPosition=l,this._start=Date.now()}prev(){this._req("post","/previous")}next(){this._req("post","/next")}setVolume(l){this._req("put","/volume",{query:{volume_percent:Math.round(l)}}).then(()=>{this.volume=l,this.emitChange()})}setPlaying(l){this._req("put",l?"/play":"/pause")}setRepeat(l){this._req("put","/repeat",{query:{state:l}})}setShuffle(l){this._req("put","/shuffle",{query:{state:l}}).then(()=>{this.shuffle=l,this.emitChange()})}seek(l){return this.isSettingPosition?Promise.resolve():(this.isSettingPosition=!0,this._req("put","/seek",{query:{position_ms:Math.round(l)}}).catch(c=>{console.error("[VencordSpotifyControls] Failed to seek",c),this.isSettingPosition=!1}))}_req(l,c,u={}){this.device?.is_active&&((u.query??={}).device_id=this.device.id);let{socket:p}=t.getActiveSocketAndDevice();return o[l](p.accountId,p.accessToken,{url:r+c,...u})}}let a=new n(Q,{SPOTIFY_PLAYER_STATE(s){a.track=s.track,a.device=s.device??null,a.isPlaying=s.isPlaying??!1,a.volume=s.volumePercent??0,a.repeat=s.actual_repeat||"off",a.shuffle=s.shuffle??!1,a.position=s.position??0,a.isSettingPosition=!1,a.emitChange()},SPOTIFY_SET_DEVICES({devices:s}){a.device=s.find(l=>l.is_active)??s[0]??null,a.emitChange()}});return a})});async function lbt(e,t,o){let r="https://translate.googleapis.com/translate_a/single?"+new URLSearchParams({client:"gtx",sl:"auto",tl:t,dt:o?"rm":"t",dj:"1",source:"input",q:e}),n=await fetch(r);return n.ok?await n.json():null}async function PBe(e,t,o){if(!e)return null;let r=e.filter((a,s,l)=>l.findIndex(c=>c.text===a.text)===s),n=await Promise.all(r.map(async a=>{if(!a.text)return[a.text,null];let s=await lbt(a.text,t,o);return!s||!s.sentences||s.sentences.length===0?[a.text,null]:[a.text,o?s.sentences[0].src_translit:s.sentences[0].trans]}));return n.every(a=>a[1]===null)?null:e.map(a=>({...a,text:n.find(s=>s[0]===a.text)?.[1]??a.text}))}async function cbt(e){return await PBe(e,bb.store.TranslateTo,!1)}async function ubt(e){return await PBe(e,"",!0)}var MBe,NBe=h(()=>{"use strict";d();Bee();kx();MBe={Translated:cbt,Romanized:ubt}});function Ree(e,t){an.store.showFailedToasts&&At({color:"#ee2902",title:e,body:t,noPersist:!0})}var Lee,pA,zB=h(()=>{"use strict";d();Fa();Uc();dA();yb();le();C();NBe();kx();Lee=["Translated","Romanized"];pA=ln(()=>{let e=null,t=[];class o extends yi.Store{init(){}get lyricsInfo(){return e}}let r=new o(Q,{async SPOTIFY_PLAYER_STATE(n){if(t.includes(n.track?.id??""))return;t.push(n.track?.id??""),e=await Mee(n.track);let{lyricsConversion:a}=an.store;a!=="None"&&Q.dispatch({type:"SPOTIFY_LYRICS_PROVIDER_CHANGE",provider:a}),t=t.filter(s=>s!==n.track?.id),r.emitChange()},async SPOTIFY_LYRICS_PROVIDER_CHANGE(n){let{track:a}=Xt;if(!a)return;let s=await Mee(a),{provider:l}=n;if(s?.useLyric===l)return;if(s?.lyricsVersions[l]){e={...s,useLyric:l},await UB(a.id,s.lyricsVersions[l],l),r.emitChange();return}if(l==="Translated"||l==="Romanized"){let u=s?.lyricsVersions[an.store.lyricsProvider]||Cx.map(g=>s?.lyricsVersions[g]).find(Boolean);if(!u||!s){Ree("No lyrics",`No lyrics to ${l==="Translated"?"translate":"romanize"}`);return}let p=u.map(g=>g.text).join(" ");if(l==="Romanized"&&!/[^\u0000-\u007F]/.test(p)){e={...s,useLyric:an.store.lyricsProvider,lyricsVersions:{...s.lyricsVersions}},r.emitChange();return}let m=await MBe[l](u);if(!m){Ree("Lyrics fetch failed",`Failed to fetch ${l==="Translated"?"translation":"romanization"}`);return}e={...s,useLyric:l,lyricsVersions:{...s.lyricsVersions,[l]:m}},await UB(a.id,m,l),r.emitChange();return}let c=await FB[n.provider](a);if(!c){Ree("Lyrics fetch failed",`Failed to fetch ${n.provider} lyrics`);return}e=c,UB(a.id,c.lyricsVersions[n.provider],n.provider),r.emitChange()}});return r})});function mA(){return i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -960 480 720",fill:"currentColor",className:tc("music-note")},i("path",{d:"m160,-240 q -66,0 -113,-47 -47,-47 -47,-113 0,-66 47,-113 47,-47 113,-47 23,0 42.5,5.5 19.5,5.5 37.5,16.5 v -422 h 240 v 160 H 320 v 400 q 0,66 -47,113 -47,47 -113,47 z"}))}function Sb({scroll:e=!0}={}){let[t,o,r]=ye([Xt],()=>[Xt.track,Xt.mPosition,Xt.isPlaying]),n=ye([pA],()=>pA.lyricsInfo),{lyricDelay:a}=an.use(["lyricDelay"]),[s,l]=T(null),[c,u]=T(null),[p,m]=T(o),[g,x]=T([]),v=n?.lyricsVersions[n.useLyric];return G(()=>{v&&x(v.map(()=>V.createRef()))},[v]),G(()=>{if(v&&p!=null){let[y,A]=dbt(v,p,a);l(y),u(A)}else l(null),u(null)},[v,p,a]),G(()=>{e&&s!==null&&(s>=0&&g[s].current?.scrollIntoView({behavior:"smooth",block:"center"}),s<0&&c!==null&&g[c]?.current?.scrollIntoView({behavior:"smooth",block:"center"}))},[s,c,e,g]),G(()=>{if(!r)return;m(Xt.position);let y=setInterval(()=>m(A=>A+1e3),1e3);return()=>clearInterval(y)},[o,r]),{track:t,lyricsInfo:n,lyricRefs:g,currLrcIndex:s,nextLyric:c}}var BBe,tc,dbt,$B=h(()=>{"use strict";d();Uc();zB();yb();we();le();C();BBe=Ie("auto","customTheme"),tc=K("vc-spotify-lyrics-");dbt=(e,t,o)=>{let r=(t+o)/1e3,n=0,a=e.length-1,s=null;for(;n<=a;){let u=Math.floor((n+a)/2),p=e[u],m=e[u+1];if(p.time<=r&&(!m||m.time>r)){s=u;break}p.time>r?a=u-1:n=u+1}let l=s!==null?s+1:n,c=l8?[null,c]:[s,c]}});function LBe(){let{lyricsInfo:e,currLrcIndex:t}=Sb({scroll:!1}),o=e?.lyricsVersions[e.useLyric]?.[t??NaN],r=Cx.some(n=>e?.lyricsVersions[n]?.length);return i(P.Menu,{navId:"spotify-lyrics-menu",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Spotify Lyrics Menu"},i(P.MenuItem,{key:"copy-lyric",id:"copy-lyric",label:"Copy current lyric",disabled:!o?.text,action:()=>ft(o.text,"Lyric copied!"),icon:RBe,leadingAccessory:{type:"icon",icon:RBe}}),i(P.MenuItem,{navId:"spotify-lyrics-provider",id:"spotify-lyrics-provider",label:"Lyrics Provider"},[...Cx,...Lee].map(n=>i(P.MenuRadioItem,{key:`lyrics-provider-${n}`,id:`switch-provider-${n.toLowerCase()}`,group:"vc-spotify-lyrics-switch-provider",label:`${n}${e?.lyricsVersions[n]?" (saved)":""}`,checked:n===e?.useLyric,disabled:Lee.includes(n)&&!r,action:()=>{Q.dispatch({type:"SPOTIFY_LYRICS_PROVIDER_CHANGE",provider:n})}}))))}var RBe,OBe=h(()=>{"use strict";d();dA();zB();_e();le();C();$B();RBe=he(" 1-.5.5H10a6")});function mbt(e){return e?i("div",{className:tc("header-content")},e?.album?.image?.url&&i("img",{src:e.album.image.url,alt:e.album.name,className:tc("album-image"),onClick:()=>Ji({url:e.album.image.url,width:e.album.image.width,height:e.album.image.height})}),i("div",null,i(Y,{size:"sm",weight:"semibold"},e.name),i(Y,{size:"sm"},"by ",e.artists.map(t=>t.name).join(", ")),i(Y,{size:"sm"},"on ",e.album.name))):i(Y,{size:"sm",weight:"semibold"},"No track playing")}function FBe({props:e}){let{track:t,lyricsInfo:o,currLrcIndex:r}=Sb({scroll:!1}),n=o?.lyricsVersions[o.useLyric];return i(be,{...e,size:"md",title:mbt(t)},i("div",{className:`${tc("lyrics-modal-container")} ${BBe.auto}`},n?n.map((a,s)=>i(Y,{key:s,size:r===s?"md":"sm",weight:r===s?"semibold":"normal",className:r===s?fbt:gbt},i("span",{className:tc("modal-timestamp"),onClick:()=>Xt.seek(a.time*1e3)},pbt(a.time)),a.text||mA())):i(Y,{size:"sm",className:tc("modal-no-lyrics")},"No lyrics available :(")))}var pbt,fbt,gbt,_Be=h(()=>{"use strict";d();yt();yb();_e();C();$B();pbt=e=>{let t=Math.floor(e/60),o=Math.floor(e%60);return`${t}:${o.toString().padStart(2,"0")}`};fbt=tc("modal-line-current"),gbt=tc("modal-line")});function vbt({scroll:e=!0}){let{showMusicNoteOnNoLyrics:t}=an.use(["showMusicNoteOnNoLyrics"]),{lyricsInfo:o,lyricRefs:r,currLrcIndex:n}=Sb({scroll:e}),a=o?.lyricsVersions[o.useLyric]||null,s=l=>{if(n==null)return UBe;let c=l-n;return c===0?xbt:c>0?hbt:UBe};return i("div",{className:"vc-spotify-lyrics",onClick:()=>ce(l=>i(FBe,{props:l})),onContextMenu:l=>rt.openContextMenu(l,()=>i(LBe,null))},a?a.map((l,c)=>i("div",{ref:r[c],key:c},i(Y,{size:n===c?"sm":"xs",className:s(c)},l.text||mA()))):t?i(Dr,{text:"No synced lyrics found"},i(mA,null)):null)}function Oee({scroll:e=!0}={}){pA.init();let t=ye([Xt],()=>Xt.track,null,(s,l)=>s?.id?s.id===l?.id:s?.name===l?.name),o=ye([Xt],()=>Xt.device,null,(s,l)=>s?.id===l?.id),r=ye([Xt],()=>Xt.isPlaying),[n,a]=T(!1);return G(()=>{if(a(!1),!r){let s=setTimeout(()=>a(!0),3e5);return()=>clearTimeout(s)}},[r]),!t||!o?.is_active||n?null:i(vbt,{scroll:e})}var UBe,hbt,xbt,zBe=h(()=>{"use strict";d();yt();lc();Uc();zB();yb();C();OBe();_Be();$B();UBe=tc("prev"),hbt=tc("next"),xbt=tc("current")});var $Be=h(()=>{});var GB,Fee=h(()=>{"use strict";d();A0();C();GB=Vo(()=>{let e=cn.$$vencordGetWrappedComponent();return class extends e{static getDerivedStateFromProps(o,r){let n=super.getDerivedStateFromProps(o,r);return n&&(n.value=o.initialValue),n}}})});function wb(e,t){return()=>i("svg",{className:yn("button-icon",t),height:"24",width:"24",viewBox:"0 0 24 24",fill:"currentColor","aria-label":t,focusable:!1},i("path",{d:e}))}function fA(e){return i("button",{className:yn("button"),...e},e.children)}function Cbt({name:e,type:t,path:o}){return i(P.Menu,{navId:"vc-spotify-menu",onClose:rt.closeContextMenu,"aria-label":`Spotify ${t} Menu`},i(P.MenuItem,{id:"vc-spotify-copy-name",label:`Copy ${t} Name`,action:()=>ft(e),icon:wa,leadingAccessory:{type:"icon",icon:wa}}),i(P.MenuItem,{id:"vc-spotify-copy-link",label:`Copy ${t} Link`,action:()=>ft("https://open.spotify.com"+o),icon:sn,leadingAccessory:{type:"icon",icon:sn}}),i(P.MenuItem,{id:"vc-spotify-open",label:`Open ${t} in Spotify`,action:()=>Xt.openExternal(o),icon:gn,leadingAccessory:{type:"icon",icon:gn}}))}function Tbt(){let[e,t,o]=ye([Xt],()=>[Xt.isPlaying,Xt.shuffle,Xt.repeat]),[r,n]=(()=>{switch(o){case"off":return["context","repeat-off"];case"context":return["track","repeat-context"];case"track":return["off","repeat-track"];default:throw new Error(`Invalid repeat state ${o}`)}})();return i(pe,{className:yn("button-row"),gap:"0"},i(fA,{className:X(yn("button"),yn("shuffle"),yn(t?"shuffle-on":"shuffle-off")),onClick:()=>Xt.setShuffle(!t)},i(kbt,null)),i(fA,{onClick:()=>{an.store.previousButtonRestartsTrack&&Xt.position>3e3?Xt.seek(0):Xt.prev()}},i(Sbt,null)),i(fA,{onClick:()=>Xt.setPlaying(!e)},e?i(bbt,null):i(ybt,null)),i(fA,{onClick:()=>Xt.next()},i(wbt,null)),i(fA,{className:X(yn("button"),yn("repeat"),yn(n)),onClick:()=>Xt.setRepeat(r),style:{position:"relative"}},o==="track"&&i("span",{className:yn("repeat-1")},"1"),i(Abt,null)))}function Ebt(){let{duration:e}=Xt.track,[t,o,r]=ye([Xt],()=>[Xt.mPosition,Xt.isSettingPosition,Xt.isPlaying]),[n,a]=T(t);G(()=>{if(r&&!o){a(Xt.position);let l=setInterval(()=>{a(c=>c+1e3)},1e3);return()=>clearInterval(l)}},[t,o,r]);let s=l=>{o||(a(l),Ibt(l))};return i("div",{id:yn("progress-bar")},i(nr,{size:"xs",weight:"medium",className:yn("progress-time")+" "+yn("time-left"),"aria-label":"Progress"},xS(n)),i(GB,{initialValue:n,minValue:0,maxValue:e,onValueChange:s,asValueChanges:s,onValueRender:xS}),i(nr,{size:"xs",weight:"medium",className:yn("progress-time")+" "+yn("time-right"),"aria-label":"Total Duration"},xS(e)))}function Dbt({track:e}){let t=ye([Xt],()=>Xt.volume);return i(P.Menu,{navId:"spotify-album-menu",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Spotify Album Menu"},i(P.MenuItem,{key:"open-album",id:"open-album",label:"Open Album",action:()=>Xt.openExternal(`/album/${e.album.id}`),icon:gn,leadingAccessory:{type:"icon",icon:gn}}),i(P.MenuItem,{key:"view-cover",id:"view-cover",label:"View Album Cover",action:()=>Ji(e.album.image),icon:On,leadingAccessory:{type:"icon",icon:On}}),i(P.MenuControlItem,{id:"spotify-volume",key:"spotify-volume",label:"Volume",control:(o,r)=>i(P.MenuSliderControl,{...o,ref:r,value:t,minValue:0,maxValue:100,onChange:Jo(n=>Xt.setVolume(n))})}))}function _ee(e,t,o,r){return t?{role:"link",onClick:()=>Xt.openExternal(r),onContextMenu:n=>rt.openContextMenu(n,()=>i(Cbt,{type:e,name:o,path:r}))}:{}}function Pbt({track:e}){let t=e?.album?.image,[o,r]=T(!1),n=i(f,null,t&&i("img",{id:yn("album-image"),src:t.url,alt:"Album Image",onClick:()=>r(!o),onContextMenu:a=>{rt.openContextMenu(a,()=>i(Dbt,{track:e}))}}));return o&&t?i("div",{id:yn("album-expanded-wrapper")},n):i("div",{id:yn("info-wrapper")},n,i("div",{id:yn("titles")},i(U,{weight:"semibold",id:yn("song-title"),className:yn("ellipoverflow"),title:e.name,..._ee("Song",e.id,e.name,`/track/${e.id}`)},e.name),e.artists.some(a=>a.name)&&i(U,{className:yn(["ellipoverflow","secondary-song-info"])},i("span",{className:yn("song-info-prefix")},"by\xA0"),e.artists.map((a,s)=>i(V.Fragment,{key:a.name},i("span",{className:yn("artist"),style:{fontSize:"inherit"},title:a.name,..._ee("Artist",a.id,a.name,`/artist/${a.id}`)},a.name),s!==e.artists.length-1&&i("span",{className:yn("comma")},", ")))),e.album.name&&i(U,{className:yn(["ellipoverflow","secondary-song-info"])},i("span",{className:yn("song-info-prefix")},"on\xA0"),i("span",{id:yn("album-title"),className:yn("album"),style:{fontSize:"inherit"},title:e.album.name,..._ee("Album",e.album.id,e.album.name,`/album/${e.album.id}`)},e.album.name))))}function GBe(){let e=ye([Xt],()=>Xt.track,null,(s,l)=>s?.id?s.id===l?.id:s?.name===l?.name),t=ye([Xt],()=>Xt.device,null,(s,l)=>s?.id===l?.id),o=ye([Xt],()=>Xt.isPlaying),[r,n]=T(!1);if(V.useEffect(()=>{if(n(!1),!o){let s=setTimeout(()=>n(!0),3e5);return()=>clearTimeout(s)}},[o]),!e||!t?.is_active||r)return null;let a={"--vc-spotify-track-image":`url(${e?.album?.image?.url||""})`};return i("div",{id:yn("player"),style:a},i(Pbt,{track:e}),i(Ebt,null),i(Tbt,null))}var yn,ybt,bbt,Sbt,wbt,Abt,kbt,Ibt,HBe=h(()=>{"use strict";d();$Be();Lt();ot();Je();Jc();os();we();_e();Be();Ta();C();Uc();Fee();yb();yn=K("vc-spotify-");ybt=wb("M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18c.62-.39.62-1.29 0-1.69L9.54 5.98C8.87 5.55 8 6.03 8 6.82z","play"),bbt=wb("M8 19c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2zm6-12v10c0 1.1.9 2 2 2s2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2z","pause"),Sbt=wb("M7 6c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1s-1-.45-1-1V7c0-.55.45-1 1-1zm3.66 6.82l5.77 4.07c.66.47 1.58-.01 1.58-.82V7.93c0-.81-.91-1.28-1.58-.82l-5.77 4.07c-.57.4-.57 1.24 0 1.64z","previous"),wbt=wb("M7.58 16.89l5.77-4.07c.56-.4.56-1.24 0-1.63L7.58 7.11C6.91 6.65 6 7.12 6 7.93v8.14c0 .81.91 1.28 1.58.82zM16 7v10c0 .55.45 1 1 1s1-.45 1-1V7c0-.55-.45-1-1-1s-1 .45-1 1z","next"),Abt=wb("M7 7h10v1.79c0 .45.54.67.85.35l2.79-2.79c.2-.2.2-.51 0-.71l-2.79-2.79c-.31-.31-.85-.09-.85.36V5H6c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1V7zm10 10H7v-1.79c0-.45-.54-.67-.85-.35l-2.79 2.79c-.2.2-.2.51 0 .71l2.79 2.79c.31.31.85.09.85-.36V19h11c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1v3z","repeat"),kbt=wb("M10.59 9.17L6.12 4.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41l4.46 4.46 1.42-1.4zm4.76-4.32l1.19 1.19L4.7 17.88c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L17.96 7.46l1.19 1.19c.31.31.85.09.85-.36V4.5c0-.28-.22-.5-.5-.5h-3.79c-.45 0-.67.54-.36.85zm-.52 8.56l-1.41 1.41 3.13 3.13-1.2 1.2c-.31.31-.09.85.36.85h3.79c.28 0 .5-.22.5-.5v-3.79c0-.45-.54-.67-.85-.35l-1.19 1.19-3.13-3.14z","shuffle");Ibt=Jo(e=>{Xt.seek(e)})});async function HB(e,t=3){if(!e?.name||!e?.artist)return null;let o=`https://lrclib.net/api/get?track_name=${encodeURIComponent(e.name)}&artist_name=${encodeURIComponent(e.artist)}`;try{let r=await fetch(o);if(!r.ok)return t>1?HB(e,t-1):(console.error("Failed to fetch lyrics:",r.status,r.statusText),null);let n=await r.json(),a=n?.syncedLyrics;if(!a)return console.error("Invalid lyrics data",n),null;let s=a.split(` `).map(l=>{let c=l.match(/^\[(\d+):(\d+\.\d+)\]\s*(.*)/);if(!c)return null;let[,u,p,m]=c;return{time:parseInt(u)*60+parseFloat(p),text:m}}).filter(Boolean);return s.length?s:null}catch(r){return t>1?HB(e,t-1):(console.error("Error fetching lyrics:",r),null)}}var jBe=h(()=>{"use strict";d()});function Mbt(e){if(!e?.track)return null;let{track:t}=e,o=t.artist?.name||t.artists?.[0]?.name||"Unknown Artist";return{name:t.title||"Unknown Title",artist:o,imageSrc:e.coverUrl||null,songDuration:e.duration||t.duration||0,elapsedSeconds:e.currentTime||0,url:t.url||null,album:t.album?.title||null,id:t.id?.toString()||"0",vibrantColor:t.album.vibrantColor||null}}var gA,Uee,uo,Ab=h(()=>{"use strict";d();He();le();C();Uc();gA=new ie("TidalControls");Uee=class{onChange;ready=!1;socket;constructor(t){this.reconnect(),this.onChange=t}reconnect(){if(!this.ready){try{this.initWs()}catch(t){gA.error("Failed to connect to Tidal WebSocket",t);return}this.ready=!0}}get routes(){return{play:()=>this.socket?.send(JSON.stringify({action:"resume"})),pause:()=>this.socket?.send(JSON.stringify({action:"pause"})),toggle:()=>this.socket?.send(JSON.stringify({action:"toggle"})),previous:()=>this.socket?.send(JSON.stringify({action:"previous"})),next:()=>this.socket?.send(JSON.stringify({action:"next"})),seek:t=>this.socket?.send(JSON.stringify({action:"seek",time:t})),shuffle:t=>this.socket?.send(JSON.stringify({action:"setShuffleMode",shuffle:t})),repeat:t=>this.socket?.send(JSON.stringify({action:"setRepeatMode",mode:t})),volume:t=>this.socket?.send(JSON.stringify({action:"volume",volume:t}))}}initWs(){let t=an.store.websocketURL||"ws://localhost:24123";t&&(this.socket=new WebSocket(t),this.socket.addEventListener("open",()=>{this.ready=!0,this.socket?.send(JSON.stringify({action:"subscribe",all:!0,fields:["currentTime"]}))}),this.socket.addEventListener("error",o=>{this.ready||setTimeout(()=>this.reconnect(),5e3),this.onChange({type:"update",all:!0,fields:{playing:!1,track:null,currentTime:0,repeatMode:0,shuffle:!1,volume:100}})}),this.socket.addEventListener("close",o=>{this.ready=!1,this.ready||setTimeout(()=>this.reconnect(),1e4),this.onChange({type:"update",all:!0,fields:{playing:!1,track:null,currentTime:0,repeatMode:0,shuffle:!1,volume:100}})}),this.socket.addEventListener("message",o=>{let r;try{switch(r=JSON.parse(o.data),r.type){case"update":this.onChange(r);break;case"subscribed":gA.info("Successfully subscribed to Tidal API updates");break;case"error":gA.error("Tidal API error:",r);break}}catch(n){gA.error("Invalid JSON:",n,` ${o.data}`);return}}))}},uo=ln(()=>{let{Store:e}=yi;class t extends e{mPosition=0;start=0;track=null;isPlaying=!1;repeat=0;shuffle=!1;volume=100;playerElement=null;socket=new Uee(n=>{if(n.type==="update"&&n.all&&n.fields){let a=n.fields,s=Mbt(a);s&&(o.track={...s},o.position=a.currentTime||0,s.vibrantColor&&(this.playerElement?(this.playerElement.style.setProperty("--eq-tdl-slider-gradient",`linear-gradient(to right, ${s.vibrantColor} 80%, #E5E5E5 100%)`),this.playerElement.style.setProperty("--eq-tdl-slider-grabber",s.vibrantColor)):(this.playerElement=document.querySelector("#eq-tdl-player"),gA.info(this.playerElement?"Player element found":"Player element not found")))),a.playing!==void 0&&(o.isPlaying=a.playing),a.repeatMode!==void 0&&(o.repeat=a.repeatMode),a.shuffle!==void 0&&(o.shuffle=a.shuffle),a.volume!==void 0&&(o.volume=a.volume),o.emitChange()}});openExternal(n){VencordNative.native.openExternal(n.replace("http://www.tidal.com","tidal://"))}set position(n){this.mPosition=n*1e3,this.start=Date.now()}get position(){let n=this.mPosition;return this.isPlaying&&(n+=Date.now()-this.start),n}previous(){this.ensureSocketReady()&&this.socket.routes.previous()}next(){this.ensureSocketReady()&&this.socket.routes.next()}setVolume(n){if(!this.ensureSocketReady())return;let a=Math.max(1,Math.min(100,Math.round(n)));this.socket.routes.volume(a),this.volume=a,this.emitChange()}setPlaying(n){this.ensureSocketReady()&&(this.socket.routes[n?"play":"pause"](),this.isPlaying=n)}setRepeat(n){this.ensureSocketReady()&&(this.socket.routes.repeat(n),this.repeat=n,this.emitChange())}setShuffle(n){this.ensureSocketReady()&&(this.socket.routes.shuffle(n),this.shuffle=n,this.emitChange())}seek(n){this.ensureSocketReady()&&this.socket.routes.seek(Math.round(n/1e3))}ensureSocketReady(){return!(!this.socket||!this.socket.ready)}}let o=new t(Q);return o})});function Nbt(e,t){an.store.showFailedToasts&&At({color:"#ee2902",title:e,body:t,noPersist:!0})}var hA,zee=h(()=>{"use strict";d();Fa();Uc();jBe();Ab();le();C();hA=ln(()=>{let e=null,t=null;class o extends yi.Store{init(){}get lyrics(){return e}}let r=new o(Q);function n(){let{track:a}=uo;!a?.id||t===a.id||(t=a.id,HB(a).then(s=>{e=s,r.emitChange()}).catch(()=>{e=null,Nbt("Tidal Lyrics","Failed to fetch lyrics"),r.emitChange()}))}return uo.addChangeListener(n),r})});function jB(e){return i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -960 480 720",fill:"currentColor",className:e},i("path",{d:"m160,-240 q -66,0 -113,-47 -47,-47 -47,-113 0,-66 47,-113 47,-47 113,-47 23,0 42.5,5.5 19.5,5.5 37.5,16.5 v -422 h 240 v 160 H 320 v 400 q 0,66 -47,113 -47,47 -113,47 z"}))}function kb({scroll:e=!0}={}){let[t,o,r]=ye([uo],()=>[uo.track,uo.mPosition,uo.isPlaying]),n=ye([hA],()=>hA.lyrics),{lyricDelay:a}=an.use(["lyricDelay"]),[s,l]=T(null),[c,u]=T(null),[p,m]=T(o),[g,x]=T([]),v=n||null;return G(()=>{v&&x(v.map(()=>V.createRef()))},[v]),G(()=>{if(v&&p){let[y,A]=Bbt(v,p,a);l(y),u(A)}},[v,p]),G(()=>{e&&s!==null&&(s>=0&&g[s].current?.scrollIntoView({behavior:"smooth",block:"center"}),s<0&&c!==null&&g[c]?.current?.scrollIntoView({behavior:"smooth",block:"center"}))},[s,c,e]),G(()=>{if(r){m(uo.position);let y=setInterval(()=>{m(A=>A+1e3)},1e3);return()=>clearInterval(y)}},[o,r]),{track:t,lyrics:n,lyricRefs:g,currLrcIndex:s,nextLyric:c}}var qBe,zc,Bbt,qB=h(()=>{"use strict";d();Uc();zee();Ab();we();le();C();qBe=Ie("auto","customTheme"),zc=K("eq-tidal-lyrics-");Bbt=(e,t,o)=>{let r=t/1e3,n=e.findIndex(s=>s.time-o/1e3>r&&s.times.time>=r);return[n,a]}});function $ee(){let{lyrics:e,currLrcIndex:t}=kb({scroll:!1}),o=e?.[t??NaN];return i(P.Menu,{navId:"tidal-lyrics-menu",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Tidal Lyrics Menu"},i(P.MenuItem,{key:"copy-lyric",id:"copy-lyric",label:"Copy current lyric",disabled:!o?.text,action:()=>ft(o.text,"Lyric copied!"),icon:WBe,leadingAccessory:{type:"icon",icon:WBe}}))}var WBe,KBe=h(()=>{"use strict";d();_e();le();C();qB();WBe=he(" 1-.5.5H10a6")});function Lbt(e){return e?i("div",{className:zc("header-content")},e?.imageSrc&&i("img",{src:e.imageSrc,alt:e.album||e.name,className:zc("album-image")}),i("div",null,i(Y,{size:"sm",weight:"semibold"},e.name),i(Y,{size:"sm"},"by ",e.artist),e.album&&i(Y,{size:"sm"},"on ",e.album))):null}function QBe({rootProps:e}){let{track:t,lyrics:o,currLrcIndex:r}=kb({scroll:!1}),n=o||null,a=t?uo.mPosition:0;return i(be,{...e,size:"md",title:Lbt(t)},i("div",{className:zc("lyrics-modal-container")+` ${qBe.auto}`},n?n.map((s,l)=>i(Y,{key:l,size:r===l?"md":"sm",weight:r===l?"semibold":"normal",className:r===l?zc("modal-line-current"):zc("modal-line")},i("span",{className:zc("modal-timestamp"),onClick:()=>uo.seek(s.time*1e3)},Rbt(s.time)),s.text||jB(zc("modal-note")))):i(Y,{size:"sm",className:zc("modal-no-lyrics")},"No lyrics available :(")))}var Rbt,ZBe=h(()=>{"use strict";d();yt();Ab();C();qB();Rbt=e=>{let t=Math.floor(e/60),o=Math.floor(e%60);return`${t}:${o.toString().padStart(2,"0")}`}});function Obt({scroll:e=!0}){let{showMusicNoteOnNoLyrics:t}=an.use(["showMusicNoteOnNoLyrics"]),{lyrics:o,lyricRefs:r}=kb({scroll:e}),n=o||null,a=jB(zc("music-note")),s=ye([uo],()=>uo.mPosition/1e3),l=n?n.findIndex((u,p)=>{let m=n[p+1]?.time??1/0;return s>=u.time&&s{if(l===null)return"";let p=u-l;return zc(p===0?"current":p>0?"next":"prev")};return n?i("div",{className:"eq-tidal-lyrics",onClick:()=>ce(u=>i(QBe,{rootProps:u})),onContextMenu:u=>rt.openContextMenu(u,()=>i($ee,null))},n.map((u,p)=>i("div",{ref:r[p],key:p},i(Y,{size:l===p?"sm":"xs",className:c(p)},u.text||a)))):t?i("div",{className:"eq-tidal-lyrics",onContextMenu:u=>rt.openContextMenu(u,()=>i($ee,null))},i(Dr,{text:"No lyrics found"},a)):null}function Gee({scroll:e=!0}={}){hA.init();let t=ye([uo],()=>uo.track,null,(a,s)=>a?.id?a.id===s?.id:a?.name===s?.name),o=ye([uo],()=>uo.isPlaying),[r,n]=T(!1);return G(()=>{if(n(!1),!o){let a=setTimeout(()=>n(!0),3e5);return()=>clearTimeout(a)}},[o]),!t||r?null:i(Obt,{scroll:e})}var YBe=h(()=>{"use strict";d();yt();lc();Uc();zee();Ab();C();KBe();ZBe();qB()});var JBe=h(()=>{});function Hee(e){let t=e/1e3/60,o=Math.floor(t),r=Math.floor((t-o)*60);return`${o.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}function Cb(e,t){return()=>i("svg",{className:X($n("button-icon"),$n(t)),"aria-labelledby":"title",height:"24",width:"24",viewBox:"0 0 24 24",fill:"currentColor","aria-label":t,focusable:!1},i("title",{id:"title"},t),i("path",{d:e}))}function xA(e){return i("button",{className:$n("button"),...e},e.children)}function Hbt({name:e,path:t}){let o=`tdl-copy-${e}`,r=`tdl-open-${e}`;return i(P.Menu,{navId:`tdl-${e}-menu`,onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":`TIdal ${e} Menu`},i(P.MenuItem,{key:o,id:o,label:`Copy ${e} Link`,action:()=>ft(t.replace("http://","https://")),icon:sn,leadingAccessory:{type:"icon",icon:sn}}),i(P.MenuItem,{key:r,id:r,label:`Open ${e} in Tidal`,action:()=>uo.openExternal(t),icon:gn,leadingAccessory:{type:"icon",icon:gn}}))}function jbt(e,t){return o=>rt.openContextMenu(o,()=>i(Hbt,{name:e,path:t}))}function qbt(){let[e,t,o]=ye([uo],()=>[uo.isPlaying,uo.shuffle,uo.repeat]),[r,n]=(()=>{switch(o){case 0:return[1,"repeat-off"];case 1:return[2,"repeat-context"];case 2:return[0,"repeat-track"];default:throw new Error(`Invalid repeat state ${o}`)}})();return i(pe,{className:$n("button-row"),style:{gap:0}},i(xA,{className:X($n("button"),$n("shuffle"),$n(t?"shuffle-on":"shuffle-off")),onClick:()=>uo.setShuffle(!t)},i(Gbt,null)),i(xA,{onClick:()=>{Me.plugins.MusicControls.previousButtonRestartsTrack&&uo.position>3e3?uo.seek(0):uo.previous()}},i(Ubt,null)),i(xA,{onClick:()=>uo.setPlaying(!e)},e?i(_bt,null):i(Fbt,null)),i(xA,{onClick:()=>uo.next()},i(zbt,null)),i(xA,{className:X($n("button"),$n(n)),onClick:()=>uo.setRepeat(r)},o===2&&i("span",{className:$n("repeat-1")},"1"),i($bt,null)))}function Kbt(){let{songDuration:e,id:t}=uo.track??{songDuration:0,id:0},[o,r]=ye([uo],()=>[uo.mPosition,uo.isPlaying]),[n,a]=T(o);G(()=>{a(o)},[t,e,o]),G(()=>{if(r){a(uo.position);let l=setInterval(()=>{a(c=>c+1e3)},1e3);return()=>clearInterval(l)}},[o,r]);let s=l=>{a(l),Wbt(l)};return i("div",{id:$n("progress-bar")},i(Y,{size:"xs",weight:"medium",className:`${$n("progress-time")} ${$n("time-left")}`,"aria-label":"Progress"},Hee(n)),i(GB,{initialValue:n,minValue:0,maxValue:e*1e3,onValueChange:s,asValueChanges:s,onValueRender:Hee}),i(Y,{size:"xs",weight:"medium",className:`${$n("progress-time")} ${$n("time-right")}`,"aria-label":"Total Duration"},Hee(e*1e3)))}function Qbt({track:e}){return i(P.Menu,{navId:"tdl-album-menu",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Tidal Album Menu"},i(P.MenuItem,{key:"view-cover",id:"view-cover",label:"View Album Cover",action:()=>e?.imageSrc&&Ji({url:e.imageSrc}),icon:On,leadingAccessory:{type:"icon",icon:On}}),i(P.MenuControlItem,{id:"tdl-volume",key:"tdl-volume",label:"Volume",control:(t,o)=>i(P.MenuSliderControl,{...t,ref:o,value:uo.volume,minValue:0,maxValue:100,onChange:Jo(r=>uo.setVolume(r))})}))}function Zbt(e,t,o){return t?{role:"link",onClick:()=>uo.openExternal(o),onContextMenu:jbt(e,o)}:{}}function Ybt({track:e}){let t=e?.imageSrc,[o,r]=T(!1),n=i(f,null,t&&i("img",{id:$n("album-image"),src:t,alt:"Album Image",onClick:()=>r(!o),onContextMenu:a=>{rt.openContextMenu(a,()=>i(Qbt,{track:e}))}}));return o&&t?i("div",{id:$n("album-expanded-wrapper")},n):i("div",{id:$n("info-wrapper")},n,i("div",{id:$n("titles")},i(Y,{size:"sm",weight:"semibold",id:$n("song-title"),className:$n("ellipoverflow"),title:e?.name,...Zbt(`"${e.name}"`,e?.id,e?.url||`https://tidal.com/track/${e?.id}`)},e?.name),e.artist&&i(Y,{size:"sm",className:$n("ellipoverflow")},"by\xA0",i("span",{className:$n("artist"),style:{fontSize:"inherit"},title:e.artist},e.artist)),e.album&&i(Y,{size:"sm",className:$n("ellipoverflow")},"on\xA0",i("span",{id:$n("album-title"),className:$n("album"),style:{fontSize:"inherit"},title:e.album},e.album))))}function XBe(){let e=ye([uo],()=>uo.track),t=ye([uo],()=>uo.isPlaying),[o,r]=T(!1);if(V.useEffect(()=>{if(r(!1),!t){let a=setTimeout(()=>r(!0),3e5);return()=>clearTimeout(a)}},[t]),!e||o)return;let n={"--eq-tdl-track-image":`url(${e?.imageSrc||""})`};return i("div",{id:$n("player"),style:n},i(Ybt,{track:e}),i(Kbt,null),i(qbt,null))}var $n,Fbt,_bt,Ubt,zbt,$bt,Gbt,Wbt,VBe=h(()=>{"use strict";d();JBe();j();yt();Lt();ot();Fee();os();_e();Be();C();Ab();$n=e=>`eq-tdl-${e}`;Fbt=Cb("M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18c.62-.39.62-1.29 0-1.69L9.54 5.98C8.87 5.55 8 6.03 8 6.82z","play"),_bt=Cb("M8 19c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2zm6-12v10c0 1.1.9 2 2 2s2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2z","pause"),Ubt=Cb("M7 6c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1s-1-.45-1-1V7c0-.55.45-1 1-1zm3.66 6.82l5.77 4.07c.66.47 1.58-.01 1.58-.82V7.93c0-.81-.91-1.28-1.58-.82l-5.77 4.07c-.57.4-.57 1.24 0 1.64z","previous"),zbt=Cb("M7.58 16.89l5.77-4.07c.56-.4.56-1.24 0-1.63L7.58 7.11C6.91 6.65 6 7.12 6 7.93v8.14c0 .81.91 1.28 1.58.82zM16 7v10c0 .55.45 1 1 1s1-.45 1-1V7c0-.55-.45-1-1-1s-1 .45-1 1z","next"),$bt=Cb("M7 7h10v1.79c0 .45.54.67.85.35l2.79-2.79c.2-.2.2-.51 0-.71l-2.79-2.79c-.31-.31-.85-.09-.85.36V5H6c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1V7zm10 10H7v-1.79c0-.45-.54-.67-.85-.35l-2.79 2.79c-.2.2-.2.51 0 .71l2.79 2.79c.31.31.85.09.85-.36V19h11c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1v3z","repeat"),Gbt=Cb("M10.59 9.17L6.12 4.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41l4.46 4.46 1.42-1.4zm4.76-4.32l1.19 1.19L4.7 17.88c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L17.96 7.46l1.19 1.19c.31.31.85.09.85-.36V4.5c0-.28-.22-.5-.5-.5h-3.79c-.45 0-.67.54-.36.85zm-.52 8.56l-1.41 1.41 3.13 3.13-1.2 1.2c-.31.31-.09.85.36.85h3.79c.28 0 .5-.22.5-.5v-3.79c0-.45-.54-.67-.85-.35l-1.19 1.19-3.13-3.14z","shuffle");Wbt=Jo(e=>{uo.seek(e)})});var bb,Bee=h(()=>{"use strict";d();yBe();Pe();O();R();Uc();dA();zBe();HBe();YBe();VBe();bb=S({name:"MusicControls",description:"Music Controls and Lyrics for multiple services ",authors:[b.Ven,b.afn,b.KraXen72,b.Av32000,b.nin0dev,b.thororen,F.vmohammad,b.Joona],settings:an,tags:["Media","Activity"],searchTerms:["Spotify","SpotifyControls","SpotifyLyrics","Tidal","TidalControls","TidalLyrics"],patches:[{find:"#{intl::USER_PROFILE_ACCOUNT_POPOUT_BUTTON_A11Y_LABEL}",replacement:{match:/(?<=\i\.jsxs?\)\()(\i),{(?=[^}]*?userTag:\i,occluded:)/,replace:"$self.PanelWrapper,{VencordOriginal:$1,"}},{find:".PLAYER_DEVICES",replacement:[{match:/get:(\i)\.bind\(null,(\i\.\i)\.get\)/,replace:"post:$1.bind(null,$2.post),vcSpotifyMarker:1,$&"},{match:/202===\i\.status/,replace:"false"}]},{find:'repeat:"off"!==',replacement:[{match:/repeat:"off"!==(\i),/,replace:"shuffle:arguments[2]?.shuffle_state??false,actual_repeat:$1,$&"},{match:/(?<=artists.filter\(\i=>).{0,10}\i\.id\)&&/,replace:""}]}],PanelWrapper({VencordOriginal:e,...t}){let{showTidalControls:o,showTidalLyrics:r,showSpotifyLyrics:n,showSpotifyControls:a,lyricsPosition:s}=an.store;return i(f,null,i(H,{fallback:()=>i("div",{className:"vc-tidal-fallback"},i("p",null,"Failed to render Modal :("),i("p",null,"Check the console for errors"))},r&&s==="above"&&i(Gee,null),o&&i(XBe,null),r&&s==="below"&&i(Gee,null),n&&s==="above"&&i(Oee,null),a&&i(GBe,null),n&&s==="below"&&i(Oee,null)),i(e,{...t}))},async start(){await IBe(),Nee(an.store.hoverControls)}})});var WB,eRe=h(()=>{"use strict";d();ql();O();R();WB=S({name:"NeverPausePreviews",description:"Prevents in-call/PiP previews (screenshare, streams, etc) from pausing even if the client loses focus",tags:["Media"],authors:[F.vappstar],settingsAboutComponent:()=>i(Xo.Warning,null,"This plugin will cause discord to use more resources than normal"),patches:[{find:"streamerPaused()",replacement:{match:/streamerPaused\(\)\{/,replace:"$&return false;"}},{find:"StreamTile",replacement:{match:/\i\.\i\.isFocused\(\)/,replace:"true"}}]})});var Qee={};Bt(Qee,{KNOWN_PLUGINS_LEGACY_DATA_KEY:()=>KB,KNOWN_SETTINGS_DATA_KEY:()=>Tm,debugWipeSomeData:()=>Xbt,editRawData:()=>Vbt,getKnownPlugins:()=>tRe,getKnownSettings:()=>vA,getNewPlugins:()=>Wee,getNewSettings:()=>qee,writeKnownSettings:()=>Kee});function Jbt(e){let t=et[e]?.settings?.def||{};return new Set(Object.keys(t).filter(o=>o!=="enabled"))}function jee(e){return new Map(e.map(t=>[t,Jbt(t)]))}async function vA(){let e=await Le.get(Tm),t;if(e)t=e instanceof Map?e:new Map(e.map(([o,r])=>[o,new Set(r)]));else{let o=await Le.get(KB)??[],r=[...Object.keys(et),...o];t=jee(r),await Le.set(Tm,[...t.entries()].map(([n,a])=>[n,[...a]]))}return t}async function qee(){let e=jee(Object.keys(et)),t=await vA();return e.forEach((o,r)=>{let n=[...o].filter(a=>!t.get(r)?.has(a));if(!n.length)return e.delete(r);e.set(r,new Set(n))}),e}async function tRe(){let e=await vA();return new Set(e.keys())}async function Wee(){let e=Object.keys(et),t=await tRe();return new Set(e.filter(o=>!t.has(o)))}async function Kee(){let e=jee(Object.keys(et)),t=await vA(),o=new Map;new Set([...e.keys(),...t.keys()]).forEach(r=>{o.set(r,new Set([...e.get(r)||[],...t.get(r)||[]]))}),await Le.set(Tm,o)}async function Xbt(){let e=await vA();e.forEach((t,o)=>{if(Math.random()>.8)return Math.random()>.5?e.set(o,new Set([...t].filter(()=>Math.random()>.5))):e.delete(o)}),await Le.set(Tm,e)}async function Vbt(e){if(!e)return;let t=await Le.get(Tm),o=new Map(t);await e(o),await Le.set(Tm,o??t)}var KB,Tm,QB=h(()=>{"use strict";d();on();Na();KB="NewPluginsManager_KnownPlugins",Tm="NewPluginsManager_KnownSettings"});var oRe=h(()=>{});function e2t({modalProps:e,newPlugins:t,newSettings:o}){let r=lo(),n=Ne(()=>new Wp,[]),a=Vt(),s=Ne(()=>{let x={};for(let v in et){let y=et[v].dependencies;if(y)for(let A of y)x[A]??=[],x[A].push(v)}return x},[]),l=Ne(()=>{let x=v=>v.map(y=>et[y]).sort((y,A)=>y.name.localeCompare(A.name));return[...x([...t]),...x([...o.keys()].filter(v=>!t.has(v)))]},[]),c=x=>{n.handleChange(x),a()},u=[],p=[];for(let x of l){if(x.hidden)continue;if(x.required||s[x.name]?.some(y=>r.plugins[y].enabled)){let y=x.required?"This plugin is required for Equicord to function.":i(Cw,{deps:s[x.name]?.filter(A=>r.plugins[A].enabled)});p.push(i(ve,{text:y,key:x.name},({onMouseLeave:A,onMouseEnter:k})=>i(cl,{onMouseLeave:A,onMouseEnter:k,onRestartNeeded:c,disabled:!0,plugin:x,isNew:t.has(x.name)})))}else u.push(i(cl,{onRestartNeeded:c,disabled:!1,plugin:x,key:x.name,isNew:t.has(x.name)}))}let m=u.length+p.length,g=async()=>{await Kee(),n.hasChanges?location.reload():e.onClose()};return i(be,{...e,size:"md",title:i("div",{className:yA("header-content")},i(Y,{size:"lg",weight:"semibold",className:yA("title")},"New Plugins and Settings (",m,")")),subtitle:i(f,null,i(Y,{size:"sm",className:yA("description")},"New plugins have been added since your last visit. Enable any you'd like or continue to dismiss."),i("br",null),i(Xo.Info,{className:yA("notice")},"Equicord is Open Source Software. If you enjoy using it, consider supporting us ",i(so,{href:"https://github.com/sponsors/thororen1234",target:"_blank",rel:"noopener noreferrer"},"here"),".")),actions:[{text:"Don't show this again",onClick:()=>{Me.plugins.NewPluginsManager.enabled=!r?.plugins?.NewPluginsManager?.enabled},variant:"secondary"},{text:n.hasChanges?"Restart":"Continue",onClick:g,variant:"primary"}]},i("div",{className:yA("grid")},u,p))}async function Zee(){let e=await Wee(),t=await qee();if((e.size||t.size)&&!nRe){nRe=!0;let o=ce(r=>i(H,{noop:!0,onError:()=>Lo(o)},i(e2t,{modalProps:r,newPlugins:e,newSettings:t})))}}var yA,nRe,rRe=h(()=>{"use strict";d();oRe();j();yt();Pe();$r();ql();C9();$1();ww();we();Kt();C();Na();QB();yA=K("vc-new-plugins-"),nRe=!1});var ZB,iRe=h(()=>{"use strict";d();O();R();QB();QB();rRe();ZB=S({name:"NewPluginsManager",description:"Utility that notifies you when new plugins are added to Equicord",tags:["Utility"],authors:[b.Sqaaakoi],enabledByDefault:!0,flux:{async POST_CONNECTION_OPEN(){Zee()}},openNewPluginsModal:Zee,KNOWN_PLUGINS_LEGACY_DATA_KEY:KB,KNOWN_SETTINGS_DATA_KEY:Tm,KnownSettings:Qee})});var YB,aRe=h(()=>{"use strict";d();O();R();C();YB=S({name:"NoNitroUpsell",description:"Removes all of Discord's nitro upsells by tricking the client into thinking you have nitro.",tags:["Utility"],authors:[b.thororen],flux:{CONNECTION_OPEN(){let e=es.getState();e.premiumTypeActual!==2||e.premiumTypeOverride===2||(e.premiumTypeOverride=2)}},start(){es.getState().premiumTypeOverride=2},stop(){es.getState().premiumTypeOverride=void 0}})});var JB,sRe=h(()=>{"use strict";d();O();R();JB=S({name:"NoPushToTalk",description:"Bypasses the push-to-talk requirement for voice activity in channels that enforce it.",tags:["Servers","Voice"],authors:[F.omaw],patches:[{find:"PermissionVADStore",replacement:[{match:/\|\|\i\.\i\.can\(\i\.\i\.USE_VAD,\i\)\|\|/,replace:"||true||"},{match:/shouldShowWarning\(\)\{return!\i\}/,replace:"shouldShowWarning(){return false}"},{match:/canUseVoiceActivity\(\)\{return \i\}/,replace:"canUseVoiceActivity(){return true}"}]}]})});var XB,lRe=h(()=>{"use strict";d();O();R();XB=S({name:"NoRPC",description:"Disables Discord's RPC server.",tags:["Privacy","Servers"],authors:[b.Cyn],patches:[{find:'.ensureModule("discord_rpc")',replacement:{match:/\.ensureModule\("discord_rpc"\)\.then\(\(.+?\)}\)}/,replace:'.ensureModule("discord_rpc")}'}}]})});var VB,cRe=h(()=>{"use strict";d();O();R();VB=S({name:"NoRoleHeaders",description:"We are all equal!! Removes the role headers in the member list.",tags:["Appearance","Fun","Roles"],authors:[b.Samwich],patches:[{find:"this.updateMaxContentFeedRowSeen()",replacement:{match:/return \i===\i\.\i\.UNKNOWN/,replace:"return null;$&"}}]})});var eR,uRe=h(()=>{"use strict";d();O();R();eR=S({name:"NormalizeMessageLinks",description:"Strip canary/ptb from message links",tags:["Chat"],authors:[b.bb010g],patches:[{find:"#{intl::COPY_MESSAGE_LINK}",replacement:{match:/(?<=\/\/\$\{)location\.host/,replace:"$self.normalizeHost(location.host)"}}],normalizeHost(e){return e.replace(/(^|\b)(canary\.|ptb\.)(discord.com)$/,"$1$3")}})});function Yee(e,t=!1){return t2t(e,L,qe,t)}var dRe,t2t,o2t,n2t,r2t,tR,pRe=h(()=>{"use strict";d();O();_e();R();le();C();({getName:dRe}=Ae("getName","useName","getNickname")),t2t=Oe('.isThread())return`"'),o2t=Ae("DM","GUILD_TEXT","PUBLIC_THREAD","UNKNOWN"),n2t=Ae("THREADS","GUILD_TEXTUAL","ALL_DMS"),r2t=Ae("REPLY","STAGE_RAISE_HAND","CHANNEL_NAME_CHANGE"),tR=S({name:"NotificationTitle",description:"Makes desktop notifications more informative",tags:["Appearance","Notifications"],authors:[b.Kyuuhachi],patches:[{find:'"SystemMessageUtils.stringify(...) could not convert"',replacement:{match:/{icon:.{0,50}emoji:\i}/,replace:"($self.makeTitle($&,...arguments))"}}],makeTitle(e,t,o,r){let n=dRe(t.guild_id,t.id,r),a=n;if(o.type===r2t.REPLY&&o.referenced_message?.author){let c=L.getUser(o.referenced_message.author.id),u=dRe(t.guild_id,t.id,c);a=Xe("CHANNEL_MESSAGE_REPLY_A11Y_LABEL",{author:n,repliedAuthor:u})}let s=$e.getGuild(t.guild_id),l=W.getChannel(t.parent_id);if(t.type!==o2t.DM){let c=n2t.THREADS.has(t.type)?`${Yee(t)} in ${Yee(l,!0)}`:`${Yee(t,!0)}`;s!=null&&(c+=`, ${s.name}`),a+=` (${c})`}return e.title=a,e}})});var mRe,i2t,wr,Tx,fRe,Jee,a2t,s2t,l2t,c2t,u2t,d2t,oR,gRe=h(()=>{"use strict";d();j();O();R();C();mRe=M({port:{type:1,description:"Port to connect to",default:6888,restartNeeded:!0}}),i2t=()=>{if(wr?.readyState!==WebSocket.OPEN)return;let e=L.getCurrentUser()?.id;e&&wr.send(JSON.stringify({cmd:"REGISTER_CONFIG",userId:e}))},wr=null,Tx=null,fRe=async e=>{for(;;){let t=await e();if(t)return t;await new Promise(o=>setTimeout(o,500))}},Jee=(e,t)=>({userId:t.userId,username:bt.getNick(e,t.userId)||L.getUser(t.userId)?.globalName,avatarUrl:L.getUser(t.userId)?.avatar,channelId:t.channelId,deaf:t.deaf||t.selfDeaf,mute:t.mute||t.selfMute,streaming:t.selfStream,speaking:!1}),a2t=e=>{switch(e.cmd){case"TOGGLE_MUTE":Q.dispatch({type:"AUDIO_TOGGLE_SELF_MUTE",syncRemote:!0,playSoundEffect:!0,context:"default"});break;case"TOGGLE_DEAF":Q.dispatch({type:"AUDIO_TOGGLE_SELF_DEAF",syncRemote:!0,playSoundEffect:!0,context:"default"});break;case"DISCONNECT":Q.dispatch({type:"VOICE_CHANNEL_SELECT",channelId:null});break;case"STOP_STREAM":{let t=L.getCurrentUser().id,o=Et.getVoiceStateForUser(t);if(!o?.channelId)return;let r=W.getChannel(o.channelId);if(!r)return;Q.dispatch({type:"STREAM_STOP",streamKey:`guild:${r.guild_id}:${o.channelId}:${t}`,appContext:"APP"});break}case"NAVIGATE":{if(!e.guild_id||!e.channel_id||!e.message_id)break;let{guild_id:t,channel_id:o,message_id:r}=e;Q.dispatch({type:"CHANNEL_SELECT",guildId:String(t),channelId:String(o),messageId:String(r)});break}}},s2t=e=>{wr?.send(JSON.stringify({cmd:"VOICE_STATE_UPDATE",state:{userId:e.userId,speaking:e.speakingFlags===1}}))},l2t=e=>{wr?.send(JSON.stringify({cmd:"MESSAGE_NOTIFICATION",message:{title:e.title,body:e.body,icon:e.icon,guildId:e.message.guild_id,channelId:e.message.channel_id,messageId:e.message.id}}))},c2t=async e=>{let{id:t}=L.getCurrentUser();for(let o of e.voiceStates){let r=o.userId===t,{guildId:n}=o;if(r){if(o.channelId&&o.channelId!==Tx){let a=await fRe(()=>Et?.getVoiceStatesForChannel(o.channelId));wr?.send(JSON.stringify({cmd:"CHANNEL_JOINED",states:Object.values(a).map(s=>Jee(n,s))})),Tx=o.channelId;break}else if(!o.channelId){wr?.send(JSON.stringify({cmd:"CHANNEL_LEFT"})),Tx=null;break}}Tx&&(o.channelId===Tx||o.oldChannelId===Tx)&&wr?.send(JSON.stringify({cmd:"VOICE_STATE_UPDATE",state:Jee(n,o)}))}},u2t=e=>{wr?.send(JSON.stringify({cmd:"STREAMER_MODE",enabled:e.value}))},d2t=()=>{console.log("Attempting to connect to Orbolay server"),wr?.close&&wr.close(),setTimeout(()=>{if(wr?.readyState!==WebSocket.OPEN){D.show({message:"Orbolay websocket could not connect. Is it running?",type:D.Type.FAILURE,id:D.genId()}),wr=null;return}},1e3),wr=new WebSocket("ws://127.0.0.1:"+mRe.store.port),wr.onerror=e=>{throw wr?.close?.(),wr=null,e},wr.onmessage=e=>{a2t(JSON.parse(e.data))},wr.onclose=()=>{wr=null},wr.onopen=async()=>{D.show({message:"Connected to Orbolay server",type:D.Type.SUCCESS,id:D.genId()});let e=await fRe(()=>L.getCurrentUser().id);if(!e)return;i2t(),wr?.send(JSON.stringify({cmd:"STREAMER_MODE",enabled:zl.enabled}));let t=Et.getVoiceStateForUser(e);if(!t||!t.channelId)return;let o=W.getChannel(t.channelId);if(!o)return;let r=o.guild_id,n=Et.getVoiceStatesForChannel(t.channelId);!r||!n||(wr?.send(JSON.stringify({cmd:"CHANNEL_JOINED",states:Object.values(n).map(a=>Jee(r,a))})),Tx=t.channelId)}},oR=S({name:"OrbolayBridge",description:"Bridge plugin to connect Orbolay to Discord",tags:["Utility","Voice"],authors:[F.SpikeHD],settings:mRe,flux:{SPEAKING:s2t,VOICE_STATE_UPDATES:c2t,RPC_NOTIFICATION_CREATE:l2t,STREAMER_MODE:u2t},start(){d2t()},stop(){wr?.close?.(),wr=null}})});function xRe(e){Q.dispatch({type:"POGGERMODE_SETTINGS_UPDATE",settings:{enabled:e,settingsVisible:e}})}function vRe(e){let t={screenshakeEnabledLocations:{0:!0,1:!0,2:!0},shakeIntensity:1,confettiSize:16,confettiCount:5,combosRequiredCount:1};switch(e){case 0:{Object.assign(t,{screenshakeEnabledLocations:{0:!0,1:!1,2:!1},combosRequiredCount:5});break}case 1:{Object.assign(t,{confettiSize:12,confettiCount:8});break}case 2:{Object.assign(t,{shakeIntensity:20,confettiSize:25,confettiCount:15});break}}Q.dispatch({type:"POGGERMODE_SETTINGS_UPDATE",settings:t})}var hRe,nR,yRe=h(()=>{"use strict";d();j();O();R();C();hRe=M({superIntensePartyMode:{description:"Party intensity",type:4,options:[{label:"Normal",value:0,default:!0},{label:"Better",value:1},{label:"Project X",value:2}],restartNeeded:!1,onChange:vRe}}),nR=S({name:"PartyMode",description:"Allows you to use party mode cause the party never ends \u2728",tags:["Fun"],authors:[b.UwUDev],reporterTestable:2,settings:hRe,start(){xRe(!0),vRe(hRe.store.superIntensePartyMode)},stop(){xRe(!1)}})});function bRe(e){return qe.getRelationshipType(e)===4}function Xee(e){if(bRe(e))return p2t.cancelFriendRequest(e)}var p2t,m2t,rR,SRe=h(()=>{"use strict";d();O();R();co();le();C();p2t=Ae("cancelFriendRequest","addRelationship");m2t=(e,{user:t})=>{!t||!bRe(t.id)||e.push(i(P.MenuItem,{id:"vc-cancel-outgoing-friend-request",label:"Cancel Outgoing Friend Request",action:()=>Xee(t.id)}))},rR=S({name:"CancelFriendRequest",description:"Adds a way to cancel outgoing friend requests from profiles.",authors:[F.omaw],tags:["Utility"],contextMenus:{"user-profile-overflow-menu":m2t},patches:[{find:"#{intl::rQSndv::raw}",replacement:{match:/variant:"primary",.{0,50}#{intl::ADD_FRIEND_BUTTON_AFTER}\)/,replace:"...$self.getCancelFriendRequestTextButtonProps(arguments[0].user.id)"}},{find:"#{intl::FRIENDS_REQUEST_STATUS_OUTGOING}",group:!0,replacement:[{match:/(?<=\i=\{icon:(\i),.{0,100}\.\.\.\i)(?=\};return 0===)/g,replace:",...$self.getCancelFriendRequestIconButtonProps(arguments[0],$1)"},{match:/disabled:!0(?=.{0,25}targetElementRef:)/g,replace:"disabled:!$self.isOutgoingButton(arguments[0])"}]}],isOutgoingButton({relationshipType:e,hasOutgoingPendingGameFriends:t}){return e===4||t===!0},getCancelFriendRequestTextButtonProps(e){return{variant:"critical-secondary",onClick:()=>Xee(e),text:"Cancel Outgoing Friend Request"}},getCancelFriendRequestIconButtonProps(e,t){return this.isOutgoingButton(e)?{"aria-label":"Cancel Outgoing Friend Request",disabled:!1,icon:t?o=>i(t,{...o,color:"var(--status-danger)"}):void 0,tooltipText:"Cancel Outgoing Friend Request",variant:"critical-secondary",onClick:()=>Xee(e?.user?.id)}:{}}})});var f2t,iR,wRe=h(()=>{"use strict";d();Pe();O();R();le();f2t=he("1-.06-.63L6.16"),iR=S({name:"PinIcon",description:"Adds a pin icon to pinned messages",tags:["Appearance","Chat"],authors:[F.iamme],patches:[{find:"isUnsupported})",replacement:{match:/WITH_CONTENT\}\)/,replace:"$&,$self.renderPinIcon(arguments[0].message)"}}],renderPinIcon:H.wrap(e=>e?.pinned?i(f2t,{size:"xs",style:{position:"absolute",right:"0",top:"0"}}):null,{noop:!0})})});function g2t(e){let t=e.content||"";return e.mentions?.forEach(o=>{t=t.replace(new RegExp(`<@!?${o.id}>`,"g"),`@${o.username}`)}),t.slice(0,200)+(t.length>200?"...":"")}function h2t(e){if(!Ix.store.ignoreMuted||!e)return!1;if(e.isMuted())return!0;if([1,3].includes(e.type)){let o=e.recipients||[];for(let r of o)if(qe.isBlocked(r))return!0}return!!(e.guild_id&&(sr.isMuted(e.guild_id)||sr.isMuted(e.guild_id)||sr.isChannelMuted(e.guild_id,e.id)||sr.isCategoryMuted(e.guild_id,e.id)))}function x2t(e){return Ix.store.ignoreMuted&&qe.isBlocked?.(e)}var Ix,aR,ARe=h(()=>{"use strict";d();Fa();j();O();R();C();Ix=M({friends:{type:3,default:!1,description:"Notify when friends send messages in servers"},mentions:{type:3,default:!0,description:"Notify when someone @mentions you directly"},dms:{type:3,default:!0,description:"Notify for direct messages (DMs)"},showInActive:{type:3,default:!1,description:"Show notifications even for currently active channel"},ignoreMuted:{type:3,default:!0,description:"Skip notifications from muted servers, channels, or users"}});aR=S({name:"PingNotifications",description:"Customizable notifications with improved mention formatting",tags:["Chat","Friends","Notifications","Servers"],authors:[F.smuki],settings:Ix,flux:{MESSAGE_CREATE({message:e}){try{if(!e?.channel_id||e.state==="SENDING")return;let t=W.getChannel(e.channel_id),o=L.getCurrentUser();if(!t||!o||e.author?.id===o.id)return;let r=[1,3].includes(t.type);if(h2t(t)||x2t(e.author.id)||!Ix.store.showInActive&&t.id===Fe.getChannelId()||Yo.getStatus(o.id)==="dnd")return;let n=L.getUser(e.author.id)||{username:"Unknown"},a=t.name||(r?"DM":"Group"),s=g2t(e),l=!1;(Ix.store.mentions&&e.mentions?.some(c=>c.id===o.id)||Ix.store.friends&&qe.isFriend(e.author.id)&&!r||r&&Ix.store.dms)&&(l=!0),l&&At({title:`${n.username} in ${a}`,body:s,icon:n.getAvatarURL?.(void 0,128),onClick:()=>Yt.transitionTo(`/channels/${t.guild_id||"@me"}/${t.id}/${e.id}`)})}catch(t){console.error("[PingNotifications] Error:",t)}}}})});var kRe,sR,CRe=h(()=>{"use strict";d();j();ql();O();R();C();kRe=M({platform:{type:4,description:"What platform to show up as on",restartNeeded:!0,options:[{label:"Desktop",value:"desktop",default:!0},{label:"Web",value:"web"},{label:"Android",value:"android"},{label:"iOS",value:"ios"},{label:"Xbox",value:"xbox"},{label:"Playstation",value:"playstation"},{label:"VR",value:"vr"}]}}),sR=S({name:"PlatformSpoofer",description:"Spoof what platform or device you're on",tags:["Utility"],authors:[F.Drag,F.neoarz],settingsAboutComponent:()=>i(Xo.Warning,null,"We can't guarantee this plugin won't get you warned or banned."),settings:kRe,patches:[{find:"_doIdentify(){",replacement:[{match:/window._ws=null,null!=\i/,replace:"false"},{match:/(?<="GatewaySocket"\)\}\),properties:)(\i)/,replace:"{...$1,...$self.getPlatform(true)}"}]}],getPlatform(e,t){let o=kRe.store.platform??"desktop";if(e||t===L.getCurrentUser().id)switch(o){case"desktop":return{browser:"Discord Client"};case"web":return{browser:"Discord Web"};case"ios":return{browser:"Discord iOS"};case"android":return{browser:"Discord Android"};case"xbox":return{browser:"Discord Embedded"};case"playstation":return{browser:"Discord Embedded"};case"vr":return{browser:"Discord VR"};default:return null}return null}})});function y2t(e){if(Kg.store.quickDisable)return e;let t=e,o=/```[\s\S]*?```|`[\s\S]*?`/g,r=[];return t=t.replace(o,n=>(r.push(n),`__CODE_BLOCK_${r.length-1}__`)),(Kg.store.fixApostrophes||Kg.store.expandContractions)&&(t=b2t(t)),Kg.store.fixCapitalization&&(t=A2t(t)),Kg.store.fixPunctuation&&Math.random()*100r[parseInt(a)]),t}function TRe(e){let t=[];for(let o of e)o.match(/[a-zA-Z]/)&&t.push(o===o.toUpperCase());return t}function IRe(e,t){let o="",r=0;for(let n=0;n{let n=r.toLowerCase();if(Object.prototype.hasOwnProperty.call(cR,n)){let a=cR[n];return IRe(a,TRe(r))}return r})}function S2t(e){let t=new RegExp(`\\b(${Object.keys(lR).join("|")})\\b`,"gi");return e.replace(t,o=>{let r=o.toLowerCase();return Object.prototype.hasOwnProperty.call(lR,r)?IRe(lR[r],TRe(o)):o})}function w2t(e){return e.replace(/'/g,"")}function A2t(e){let t=/((?s!=null),n=(Me.plugins.PolishWording.blockedWords||"").split(/,\s?/).filter(s=>s).map(s=>s.toLowerCase()),a="";for(let s=0;sx+v.toUpperCase()):a+=l}else l&&(a+=l)}return a=a.replace(/\bi\b(?!\s+is\b)(?=['\s]|$)/g,"I"),a}function k2t(e){if(!e)return"";let t=e.split(` `),o=[];for(let r=0;r{"use strict";d();j();O();R();v2t=(e,t)=>{t.content=y2t(t.content)},Kg=M({quickDisable:{type:3,description:"Quick disable. Turns off message modifying without requiring a client reload.",default:!1},blockedWords:{type:0,description:"Words that will not be capitalized (comma separated).",default:""},fixApostrophes:{type:3,description:"Ensure contractions contain apostrophes.",default:!0},expandContractions:{type:3,description:"Expand contractions.",default:!1},fixCapitalization:{type:3,description:"Capitalize sentences.",default:!1},fixPunctuation:{type:3,description:"Punctate sentences.",default:!1},fixPunctuationFrequency:{type:5,description:"Percent period frequency (this majorly annoys some people).",markers:zt(0,100,10),stickToMarkers:!1,default:100}}),uR=S({name:"PolishWording",description:"Tweaks your messages to make them look nicer and have better grammar. See settings",dependencies:["MessageEventsAPI"],tags:["Chat"],authors:[b.Samwich,F.WKoA],onBeforeMessageSend:v2t,settings:Kg});lR={"wasn't":"was not","can't":"cannot","don't":"do not","won't":"will not","isn't":"is not","aren't":"are not","haven't":"have not","hasn't":"has not","hadn't":"had not","doesn't":"does not","didn't":"did not","shouldn't":"should not","wouldn't":"would not","couldn't":"could not","that's":"that is","what's":"what is","there's":"there is","how's":"how is","where's":"where is","when's":"when is","who's":"who is","why's":"why is","you'll":"you will","i'll":"I will","they'll":"they will","it'll":"it will","i'm":"I am","you're":"you are","they're":"they are","he's":"he is","she's":"she is","i've":"I have","you've":"you have","we've":"we have","they've":"they have","you'd":"you would","he'd":"he would","she'd":"she would","it'd":"it would","we'd":"we would","they'd":"they would","y'all":"you all","here's":"here is"},cR={};for(let e in lR){let t=w2t(e.toLowerCase());cR[t]=e}});var DRe=h(()=>{});function dR(e=[]){Bo=e,Tb=-1}function MRe(e,t){return`${e==="main"?C2t:T2t}:${t}`}function I2t(e){return`${Vee}:${e}:main`}async function pR(e){try{let o=L.getCurrentUser().id,r=MRe(e,o);ete=r;let n=await Le.get(r);if(n&&Array.isArray(n)){dR(n);return}if(e==="main"){let a=I2t(o),s=await Le.get(a),l=await Le.get(Vee),c=Array.isArray(s)?s:Array.isArray(l)?l:null;if(c){dR(c),await Le.set(r,c),await Le.del(a),await Le.del(Vee);return}}dR()}catch(t){PRe.error("Failed to load presets",t),dR()}}async function Ex(e){try{if(!ete&&!e)return;let o=L.getCurrentUser().id,r=e?MRe(e,o):ete;await Le.set(r,Bo)}catch(t){PRe.error("Failed to save presets",t)}}function NRe(e){Tb=e}function BRe(e){Bo.push(e)}function tte(e,t){e>=0&&e=0&&ee&&Tb--)}function LRe(e,t){if(e<0||e>=Bo.length||t<0||t>=Bo.length)return;let[o]=Bo.splice(e,1);Bo.splice(t,0,o)}function mR(e){Bo=e}var PRe,Vee,C2t,T2t,Bo,Tb,ete,fR=h(()=>{"use strict";d();on();He();C();PRe=new ie("ProfilePresets"),Vee="ProfileDataset",C2t="ProfilePresets_v2_Main",T2t="ProfilePresets_v2_Server",Bo=[],Tb=-1,ete=null});function zRe(e,t){Q.dispatch({type:e,...t})}function E2t(e,t){zRe("USER_PROFILE_SETTINGS_SET_PENDING_CHANGES",t?{guildId:t,...e}:e)}function ORe(e,t,o){zRe("PROFILE_CUSTOMIZATION_OPEN_PREVIEW_MODAL",{image:t,file:{},uploadType:e,guildId:o,analyticsSource:o?"user settings guild profile":"user settings user profile",isTryItOut:!1})}function Ib(e){return typeof e=="string"&&e.length>0}function gR(e){return e?typeof e=="string"?e.length>0:typeof e=="object"&&Ib(e?.imageUri):!1}function D2t(e){return typeof e=="object"&&e!=null&&"asset"in e&&"skuId"in e&&Ib(e.asset)&&Ib(e.skuId)}function $Re(e){if(!e)return null;let t=e.fontId??e.font_id,o=e.effectId??e.effect_id;if(typeof t!="number"||typeof o!="number")return null;let r=Array.isArray(e.colors)?[...e.colors]:[];return{fontId:t,effectId:o,font_id:t,effect_id:o,colors:r}}async function ote(e){try{let o=await(await fetch(e)).blob();return await new Promise((r,n)=>{let a=new FileReader;a.onloadend=()=>r(a.result),a.onerror=n,a.readAsDataURL(o)})}catch{return null}}async function FRe(e,t,o,r,n){if(!e)return null;if(typeof e=="object"&&Ib(e?.imageUri))return e.imageUri;if(typeof e=="string"){if(e.startsWith("data:"))return e;if(/^https?:\/\//.test(e))return await ote(e);let a=e.startsWith("a_"),s=o==="banner"?1024:512,l=o==="banner"?"banners":"avatars",u=`https://cdn.discordapp.com/${r?`guilds/${r}/users/${t}/${o==="banner"?"banners":"avatars"}`:l}/${e}.${a?"gif":"png"}?size=${s}`,p=`https://cdn.discordapp.com/${l}/${t}/${e}.${a?"gif":"png"}?size=${s}`;if(n&&r){let m=await ote(u);if(m)return m}return await ote(p)}return null}async function bA(e,t={}){let o=L.getCurrentUser(),r=Co.getUserProfile(o.id),n=t.isGuildProfile??!!e,a=n?e:void 0,s=a?Co.getGuildMemberProfile(o.id,a):null,l=s??r,c=o,u=a?bt.getMember(a,o.id):null,p=eu.getPendingChanges()??{},m=eu.getPendingChanges(a)??{},g=n&&Object.keys(m).length>0?m:p,x=URe.getSetting(),v=n?null:{text:x?.text??"",emojiId:x?.emojiId??"0",emojiName:x?.emojiName??"",expiresAtMs:x?.expiresAtMs??"0"},y=g.pendingAvatarDecoration??(n?u?.avatarDecoration:c.avatarDecorationData),A=D2t(y)?{...y,asset:y.asset,skuId:y.skuId}:null,k=null,w=g.pendingProfileEffect??l?.profileEffect;if(w){if(w.skuId&&w.effects)k={skuId:w.skuId,title:w.title,description:w.description,accessibilityLabel:w.accessibilityLabel,reducedMotionSrc:w.reducedMotionSrc,thumbnailPreviewSrc:w.thumbnailPreviewSrc,effects:w.effects,animationType:w.animationType,staticFrameSrc:w.staticFrameSrc,type:w.type||1};else if(w.skuId){let se=l?.collectibles?.find(te=>te?.skuId===w.skuId);se&&(k={skuId:se.skuId,title:se.title,description:se.description,accessibilityLabel:se.accessibilityLabel,reducedMotionSrc:se.reducedMotionSrc,thumbnailPreviewSrc:se.thumbnailPreviewSrc,effects:se.effects,animationType:se.animationType,staticFrameSrc:se.staticFrameSrc,type:se.type||1})}}let I=g.pendingNameplate??(n?u?.collectibles?.nameplate:c.collectibles?.nameplate),E=I?{skuId:I.skuId,asset:I.asset,label:I.label,palette:typeof I.palette=="string"?I.palette:void 0,type:I.type||2}:null,N=n?u?.displayNameStyles??c.displayNameStyles:c.displayNameStyles,B=g.pendingDisplayNameStyles??N,_=$Re(B),{pendingAvatar:q}=g,$=gR(q)?q:n?u?.avatar??o.avatar??null:o.avatar??null,re=!!(a&&n&&u?.avatar&&$===u.avatar),Z=gR($)?$:at.getUserAvatarURL(o,!0,512),ae=await FRe(Z,o.id,"avatar",a,re)??at.getDefaultAvatarURL(o.id),{pendingBanner:ge}=g,ke=gR(ge)?ge:n?s?.banner??r?.banner:r?.banner,Ee=!!(a&&n&&s?.banner&&ke===s?.banner),Ue=await FRe(ke,o.id,"banner",a,Ee);return{avatarDataUrl:ae,bannerDataUrl:Ue,bio:g.pendingBio??l?.bio??null,accentColor:g.pendingAccentColor??l?.accentColor??null,themeColors:g.pendingThemeColors??l?.themeColors??null,globalName:n?g.pendingNickname??u?.nick??null:g.pendingGlobalName??o.globalName??null,pronouns:g.pendingPronouns??l?.pronouns??null,avatarDecoration:A,profileEffect:k,nameplate:E,primaryGuildId:n?null:g.pendingPrimaryGuildId??c.primaryGuild?.identityGuildId??null,customStatus:v,displayNameStyles:_}}function _Re(e,t){return e===t?!0:JSON.stringify(e)===JSON.stringify(t)}function P2t(e,t){return e==null||t==null?e==null&&t==null:e.text===t.text&&String(e.emojiId??"")===String(t.emojiId??"")&&e.emojiName===t.emojiName&&String(e.expiresAtMs??"0")===String(t.expiresAtMs??"0")}function M2t(e){return e&&gR(e.pendingAvatar)?e.pendingAvatar:null}function nte(e){if(typeof e=="string")return e;if(e&&typeof e=="object"&&"imageUri"in e){let{imageUri:t}=e;return typeof t=="string"?t:null}return null}function N2t(e,t){return e==null||t==null?e==null&&t==null:String(e.skuId??"")===String(t.skuId??"")}function B2t(e,t){return e==null||t==null?e==null&&t==null:String(e.skuId??"")===String(t.skuId??"")&&String(e.asset??"")===String(t.asset??"")}function R2t(e,t){return e==null||t==null?e==null&&t==null:String(e.skuId??"")===String(t.skuId??"")&&String(e.asset??"")===String(t.asset??"")}async function GRe(e,t,o={}){try{let r=o.isGuildProfile??!!t;if(r&&!t)return;let n=await bA(t,{isGuildProfile:r}),a=r&&t?eu.getPendingChanges(t):eu.getPendingChanges(),s=l=>{let c=Object.fromEntries(Object.entries(l).filter(([,u])=>u!==void 0));Object.keys(c).length&&E2t(c,r?t:void 0)};if("avatarDataUrl"in e){let l=e.avatarDataUrl,c=nte(l),u=nte(n.avatarDataUrl),p=nte(M2t(a));if(c!==u&&c!==p){let m=l?.startsWith?.("data:")?{assetOrigin:"NEW_ASSET",imageUri:l,description:`profilesets-${e.name??"preset"}`}:l,g=m!=null&&"imageUri"in Object(m)?m.imageUri:null;Ib(g)?ORe("AVATAR",{...Object(m),imageUri:g},t):s({pendingAvatar:m})}}if("bannerDataUrl"in e&&e.bannerDataUrl!==n.bannerDataUrl){let l=e.bannerDataUrl?.startsWith?.("data:")?{assetOrigin:"NEW_ASSET",imageUri:e.bannerDataUrl,description:`profilesets-${e.name??"preset"}`}:e.bannerDataUrl,c=l!=null&&"imageUri"in Object(l)?l.imageUri:null;Ib(c)?ORe("BANNER",{...Object(l),imageUri:c},t):s({pendingBanner:l})}if(!o.skipBio&&e?.bio!==n?.bio&&s({pendingBio:e.bio??""}),!o.skipPronouns&&e?.pronouns!==n?.pronouns&&s({pendingPronouns:e.pronouns??""}),!o.skipGlobalName&&e?.globalName!==n?.globalName&&s(r?{pendingNickname:e.globalName}:{pendingGlobalName:e.globalName}),e.avatarDecoration!==void 0&&!B2t(e.avatarDecoration,n.avatarDecoration)&&s({pendingAvatarDecoration:e.avatarDecoration}),e.profileEffect!==void 0&&!N2t(e.profileEffect,n.profileEffect)&&s({pendingProfileEffect:e.profileEffect}),e.nameplate!==void 0&&!R2t(e.nameplate,n.nameplate)&&s({pendingNameplate:e.nameplate}),e.displayNameStyles){let l=$Re(e.displayNameStyles);_Re(l,n.displayNameStyles)||s({pendingDisplayNameStyles:l})}e.themeColors&&!_Re(e.themeColors,n.themeColors)&&s({pendingThemeColors:e.themeColors}),e.primaryGuildId&&!r&&e.primaryGuildId!==n.primaryGuildId&&s({pendingPrimaryGuildId:e.primaryGuildId}),e.customStatus&&!r&&!P2t(e.customStatus,n.customStatus)&&URe.updateSetting({text:e.customStatus?.text??"",expiresAtMs:e.customStatus?.expiresAtMs??"0",emojiId:e.customStatus?.emojiId??"0",emojiName:e.customStatus?.emojiName??""})}catch(r){throw r}}var URe,hR=h(()=>{"use strict";d();_a();C();URe=tn("status","customStatus")});function L2t(e){return typeof e=="string"?e.length>0:typeof e=="object"&&ka(e)&&"imageUri"in e&&typeof e.imageUri=="string"}function O2t(e,t){let n=[((e==="server"&&t?eu.getPendingChanges?.(t):eu.getPendingChanges?.())??{}).pendingAvatar].find(L2t);return n?typeof n=="string"?n:n.imageUri:null}async function HRe(e,t,o){let r=await bA(o,{isGuildProfile:t==="server"}),a=O2t(t,o)??r.avatarDataUrl??null,s={name:e,timestamp:Date.now(),...r,avatarDataUrl:a};BRe(s),await Ex(t)}async function jRe(e,t,o,r,n){if(e<0||e>=Bo.length)return;let a={...Bo[e],[t]:o,timestamp:Date.now()};tte(e,a),await Ex(r)}async function qRe(e,t,o){e<0||e>=Bo.length||(RRe(e),await Ex(t))}async function xR(e,t,o,r){e<0||e>=Bo.length||t<0||t>=Bo.length||(LRe(e,t),await Ex(o))}async function WRe(e,t,o,r){if(e<0||e>=Bo.length||!t.trim())return;let n={...Bo[e],name:t.trim()};tte(e,n),await Ex(o)}function KRe(e){let t=JSON.stringify(Bo,null,2),o=new Blob([t],{type:"application/json"}),r=URL.createObjectURL(o),n=document.createElement("a");n.href=r,n.download=`profile-presets-${e}-${Date.now()}.json`,n.click(),URL.revokeObjectURL(r)}async function QRe(e,t,o,r){let n=document.createElement("input");n.type="file",n.accept="application/json",n.onchange=async a=>{try{let l=a.currentTarget?.files?.[0];if(!l)return;let c=await l.text(),u=JSON.parse(c);if(!Array.isArray(u))return;if(Bo.length>0){let p=await t(Bo.length);if(p==="cancel")return;if(p==="override")mR(u);else{let m=[...Bo,...u];mR(m)}}else mR(u);await Ex(o),e()}catch{ne("Failed to import presets. The file might be invalid.",D.Type.FAILURE)}},n.click()}var rte=h(()=>{"use strict";d();Ca();C();hR();fR()});function ZRe({title:e,message:t,onOverride:o,onMerge:r,onCancel:n,...a}){let s=l=>()=>{l(),a.onClose()};return i(be,{...a,size:"sm",title:e,actions:[{text:"Override",variant:"primary",onClick:s(o)},{text:"Merge",variant:"primary",onClick:s(r)},{text:"Cancel",variant:"secondary",onClick:s(n)}]},i(U,null,t))}var YRe=h(()=>{"use strict";d();Je();C()});function JRe({presets:e,allPresets:t,avatarSize:o,selectedPreset:r,onLoad:n,onUpdate:a,guildId:s,section:l,currentPage:c,onPageChange:u}){let[p,m]=V.useState(-1),[g,x]=V.useState(""),v=l==="server";return i("div",{className:bn("list-container")},e.map(y=>{let A=t.indexOf(y),k=p===A,w=!k&&r===A,I=new Date(y.timestamp),E=I.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"}),N=I.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),B=()=>{let q=g.trim();q&&(WRe(A,q,l,s),a())},_=A>0||A1;return i("div",{key:A,tabIndex:k?-1:0,role:"button",onClick:()=>{k||n(A)},onKeyDown:q=>{!k&&(q.key==="Enter"||q.key===" ")&&(q.preventDefault(),n(A))},className:X(bn("row"),w?"selected":"")},i("div",{className:bn("avatar-url")},y.avatarDataUrl&&i("img",{src:y.avatarDataUrl,alt:"",className:bn("avatar"),style:{width:`${o}px`,height:`${o}px`}}),i("div",{className:bn("rename")},k?i(Te,{value:g,onChange:x,onBlur:()=>{B(),m(-1)},onKeyDown:q=>{q.key==="Enter"?(B(),m(-1)):q.key==="Escape"&&m(-1),q.stopPropagation()},onClick:q=>q.stopPropagation(),autoFocus:!0}):i(f,null,i("div",{className:bn("name")},y.name),i("div",{className:bn("timestamp")},E," at ",N)))),i("div",{className:bn("updated")},i("svg",{width:"20",height:"20",viewBox:"0 0 20 20",className:bn("menu-icon"),onClick:q=>{q.stopPropagation();let $=q.currentTarget;rt.openContextMenu(q,()=>i(P.Menu,{navId:"preset-options",onClose:rt.closeContextMenu},i(P.MenuItem,{id:"rename",label:"Rename",action:()=>{m(A),x(y.name)}}),i(P.MenuItem,{id:"update",label:"Update",action:async()=>{let re=await bA(s,{isGuildProfile:v});await Promise.all(Object.entries(re).filter(([,Z])=>ka(Z)).map(([Z,ee])=>jRe(A,Z,ee,l,s))),a()}}),i(P.MenuSeparator,null),A>0&&i(P.MenuItem,{id:"move-up",label:"Move Up",action:()=>{xR(A,A-1,l,s),a()}}),A{xR(A,A+1,l,s),a()}}),c>1&&i(P.MenuItem,{id:"move-to-page-1",label:"Move to Page 1",action:()=>{xR(A,0,l,s),u(1),a()}}),_&&i(P.MenuSeparator,null),i(P.MenuItem,{id:"delete",label:"Delete",color:"danger",action:async()=>{await qRe(A,l,s),a()}})))}},i("path",{fill:"currentColor",d:"M10 3a1.5 1.5 0 110 3 1.5 1.5 0 010-3zm0 5a1.5 1.5 0 110 3 1.5 1.5 0 010-3zm0 5a1.5 1.5 0 110 3 1.5 1.5 0 010-3z"}))))}))}var XRe=h(()=>{"use strict";d();Ca();Be();C();SA();rte();hR()});function VRe({section:e,guildId:t}){let[o,r]=V.useState(""),[,n]=V.useReducer(se=>se+1,0),[a,s]=V.useState(!1),[l,c]=V.useState(1),[u,p]=V.useState("1"),[m,g]=V.useState(-1),[x,v]=V.useState(!1),y=V.useRef(-1),A=e??"main",k=A==="server",w=ye([ao],()=>ao.getLastSelectedGuildId()??ao.getGuildId()),I=k?t??w??void 0:void 0,E=!k||!!I;V.useEffect(()=>{let se=!0;return(async()=>(await pR(A),se&&(g(-1),c(1),p("1"),n())))(),()=>{se=!1}},[I,A]);let N=x?Bo.filter(se=>se.name.toLowerCase().includes(o.toLowerCase())):Bo,B=Math.ceil(N.length/Eb),_=(l-1)*Eb,q=N.slice(_,_+Eb),$=se=>{se>=1&&se<=B&&(c(se),p(String(se)))},re=async()=>{if(!E)return;let se=o.trim();if(!se)return;s(!0),await HRe(se,A,I),r(""),s(!1);let te=Math.ceil(Bo.length/Eb);$(te),n()},Z=se=>{g(se),NRe(se),GRe(Bo[se],I,{isGuildProfile:A==="server"}),n()},ee=se=>{E&&Z(se)},ae=se=>{let te=Bo;if(!te.length)return null;let xe=Math.floor(Math.random()*te.length);return{preset:te[xe],index:xe,section:se}},ge=()=>{if(!E)return;let se=ae(A);if(!se)return;let te=se.index;if(Bo.length>1&&te===y.current){let xe=0;for(;xe<5&&te===y.current;)te=Math.floor(Math.random()*Bo.length),xe++}y.current=te,Z(te)},ke=se=>new Promise(te=>{ce(xe=>i(ZRe,{...xe,title:"Import Profiles",message:`You have ${se} existing profiles in this section. Do you want to override them or merge with imported profiles?`,onOverride:()=>te("override"),onMerge:()=>te("merge"),onCancel:()=>te("cancel")}))}),{avatarSize:Ee}=ite.store,Ue=Bo.length>0,it=N.length>Eb;return i("div",{className:X(bn("section"),k?bn("section-server"):"")},i(oe,{tag:"h3",className:bn("heading")},"Saved Profiles"),i("div",{className:bn("text")},i(Te,{placeholder:x?"Search profiles...":"Profile Name",value:o,onChange:r,className:bn("text-input")})),i("div",{className:bn("search")},!x&&i(de,{size:"small",disabled:a||!o.trim()||!E,onClick:re,className:bn("search-button")},a?"Saving...":"Save Profile"),Ue&&i(de,{size:"small",variant:x?"primary":"secondary",onClick:()=>{v(!x),$(1)}},x?"Cancel Search":"Search"),i(de,{size:"small",variant:"secondary",onClick:ge,disabled:!Bo.length||!E},"Random"),i(de,{size:"small",variant:"secondary",onClick:()=>QRe(n,ke,A,I),disabled:!E},"Import"),i(de,{size:"small",variant:"secondary",onClick:()=>KRe(A)},"Export All")),Ue&&i(f,null,i(JRe,{presets:q,allPresets:Bo,avatarSize:Ee,selectedPreset:m,onLoad:ee,onUpdate:()=>{let se=Math.ceil(Bo.length/Eb);se===0?$(1):l>se&&$(se),n()},guildId:I,section:A,currentPage:l,onPageChange:$}),it&&i("div",{className:bn("pagination")},i(de,{size:"small",variant:"secondary",disabled:l===1,onClick:()=>$(l-1)},"\u2190"),i("div",{className:bn("page")},i("input",{type:"text",value:u,onChange:se=>{let{value:te}=se.target;p(te);let xe=parseInt(te);!isNaN(xe)&&xe>=1&&xe<=B&&c(xe)},className:bn("page-input")}),i("span",{className:bn("page-of")},"/ ",B)),i(de,{size:"small",variant:"secondary",disabled:l===B,onClick:()=>$(l+1)},"\u2192")),i("hr",{className:bn("block")})),i("hr",{className:bn("block")}),A==="server"&&i("hr",{className:bn("block")}))}var Eb,eLe=h(()=>{"use strict";d();Tt();We();Be();C();SA();rte();hR();fR();YRe();XRe();Eb=5});var tLe={};Bt(tLe,{default:()=>_2t});function F2t(){let[e,t]=V.useState("main"),o=ye([ao],()=>ao.getLastSelectedGuildId()??ao.getGuildId()),r=V.useMemo(()=>$e.getGuildsArray().map(s=>({label:s.name,value:s.id})).sort((s,l)=>s.label.localeCompare(l.label)),[]),[n,a]=V.useState(o??r[0]?.value);return i(br,null,i(ta,{className:bn("tab-heading")},"Profile Sets"),i("div",{className:bn("section-switch")},i(de,{size:"small",variant:e==="main"?"primary":"secondary",onClick:()=>t("main")},"Main Profile"),i(de,{size:"small",variant:e==="server"?"primary":"secondary",onClick:()=>t("server")},"Server Profiles")),e==="server"&&i("div",{className:bn("guild-picker")},i(Fn,{options:r,value:n,placeholder:"Select a server",clearable:!1,closeOnSelect:!0,onChange:s=>a(s)})),e==="server"&&!n?i("p",{className:bn("empty-state")},"You are not in any servers yet."):i(VRe,{section:e,guildId:e==="server"?n:void 0}))}var _2t,oLe=h(()=>{"use strict";d();Tt();We();Fi();C();SA();eLe();_2t=Sr(F2t,"Profile Sets")});var bn,ite,vR,SA=h(()=>{"use strict";d();DRe();j();ot();mu();O();we();Be();R();C();fR();bn=K("vc-profile-presets-"),ite=M({avatarSize:{type:5,description:"Avatar size in preset list.",markers:[56,64,72,80,88,96],default:56,stickToMarkers:!0}}),vR=S({name:"ProfileSets",description:"Allows you to save and load different profile presets.",tags:["Appearance","Customisation","Utility"],authors:[F.omaw,F.justjxke],settings:ite,toolboxActions:{"Open Profile Sets":()=>{un.openUserSettings("equicord_profile_sets_panel")}},start(){pR("main"),Pn.customEntries.push({key:"equicord_profile_sets",title:"Profile Sets",Component:(oLe(),Jx(tLe)).default,Icon:uS})},stop(){Gl(Pn.customEntries,e=>e.key==="equicord_profile_sets")}})});function yR(e){wA=e}function Db(e){nLe=e}function rLe(){return nLe}var wA,nLe,bR=h(()=>{"use strict";d();wA=!1,nLe=!1});function U2t(e){return Object.entries(e.def).filter(([,t])=>t.restartNeeded).map(([t])=>`plugins.${e.pluginName}.${t}`)}function aLe(e){if(!ate){ate=!0;for(let t of U2t(e)){let o=()=>{ste=!0};to.addChangeListener(t,o),iLe.push(()=>to.removeChangeListener(t,o))}}}function sLe(){for(let e of iLe.splice(0))e();ate=!1}function lLe(e){ste=e}function Pb({onDecline:e}={}){if(!ste)return!1;let t=!1,o=!1;function r(){t||o||(o=!0,e&&setTimeout(e,0))}return rD.show({title:"Restart Required",body:"A change you've made to Questify's settings requires a restart.",confirmText:"Restart",cancelText:"Later",onConfirm:()=>{t=!0,location.reload()},onCancel:r,onCloseCallback:r}),!0}var ste,ate,iLe,SR=h(()=>{"use strict";d();j();Zl();ste=!1,ate=!1,iLe=[]});function cLe(e){Db(!0),ce(t=>i(S9,{...t,plugin:e,onRestartNeeded:()=>{}}),{onCloseCallback:()=>{Db(!1),Pb()}})}var uLe=h(()=>{"use strict";d();nh();C();SR();bR()});function H2t(e,t,o){return i("svg",{viewBox:"0 0 24 24",height:e,width:t,fill:"none",className:o},i("path",{fill:"currentColor",d:"M7.5 21.7a8.95 8.95 0 0 1 9 0 1 1 0 0 0 1-1.73c-.6-.35-1.24-.64-1.9-.87.54-.3 1.05-.65 1.52-1.07a3.98 3.98 0 0 0 5.49-1.8.77.77 0 0 0-.24-.95 3.98 3.98 0 0 0-2.02-.76A4 4 0 0 0 23 10.47a.76.76 0 0 0-.71-.71 4.06 4.06 0 0 0-1.6.22 3.99 3.99 0 0 0 .54-5.35.77.77 0 0 0-.95-.24c-.75.36-1.37.95-1.77 1.67V6a4 4 0 0 0-4.9-3.9.77.77 0 0 0-.6.72 4 4 0 0 0 3.7 4.17c.89 1.3 1.3 2.95 1.3 4.51 0 3.66-2.75 6.5-6 6.5s-6-2.84-6-6.5c0-1.56.41-3.21 1.3-4.51A4 4 0 0 0 11 2.82a.77.77 0 0 0-.6-.72 4.01 4.01 0 0 0-4.9 3.96A4.02 4.02 0 0 0 3.73 4.4a.77.77 0 0 0-.95.24 3.98 3.98 0 0 0 .55 5.35 4 4 0 0 0-1.6-.22.76.76 0 0 0-.72.71l-.01.28a4 4 0 0 0 2.65 3.77c-.75.06-1.45.33-2.02.76-.3.22-.4.62-.24.95a4 4 0 0 0 5.49 1.8c.47.42.98.78 1.53 1.07-.67.23-1.3.52-1.91.87a1 1 0 1 0 1 1.73Z"}))}function j2t(e){let t=e.split(/\s+/).filter(Boolean);return t.length?t:[Ut("quest-button")]}function Dx(e,t){return e.map(o=>`${o}-${t}`).join(" ")}function q2t(e){return i(G2t,{...e})}function dLe({id:e,className:t,badgeProps:o,hasUnread:r,selected:n,visible:a,onPress:s}){let[l,c]=T(!1),u=j2t(t),p=Dx(u,"container"),m=Dx(u,"icon-container"),g=Dx(u,"server-list-button-container"),x=Dx(u,"pill-container"),v=Dx(u,"button"),y=Dx(u,"pill"),A=Dx(u,"lower-badge"),k={width:nD(o.count,o.maxDigits)[1]},w=o.count===0?null:i(q2t,{...o,className:A,style:{...o.style??{},...k}}),I=i("div",{className:m},H2t(26,26));return i(H,null,a&&i("div",{id:e,className:p},i("div",{className:x},i($2t,{unread:r,selected:n,hovered:l,className:`${y}${n?" selected":l?" hovered":""}`})),i("div",{className:g},i(z2t,{icon:()=>I,tooltip:"Quests",showPill:!1,selected:n,className:v,onClick:s,onMouseDown:s,onContextMenu:s,onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),...w?{lowerBadge:w,lowerBadgeSize:k}:{}}))))}function wR(e,t,o){return e!=="never"&&(e==="always"||t>0||o)}function pLe(e){let t=zi(["questButtonDisplay","questButtonBadgeCount","isOnQuestsPage"]);return wR(t.questButtonDisplay,t.questButtonBadgeCount,t.isOnQuestsPage)?e===hm:!1}function mLe(e,t,o,r){return e.button===oD?o:e.button===tAe?r:e.button===eAe?t:null}function fLe(e,t,o){let r=o===null?null:P5(o);return{count:t==="badge"||t==="both"?e:0,maxDigits:2,...r?{color:`rgb(${r.r}, ${r.g}, ${r.b})`}:{},...r?{style:{color:M5(r)?"white":"black"}}:{}}}function gLe({dummy:e=!1}){let t=Ut(e?"dummy-quest-button-context-menu":"quest-button-context-menu"),o=De(),r=e||o.questButtonBadgeCount<=0,n=e||Ls().length<=0,a=BZ().length<=0,s=!o.autoCompleteQuestsSimultaneously&&!a,l=NZ(),c=_Ae(),u=e||c||l,p=e?"":c?" (In-Progress)":l?" (Rate-Limited)":"",m=c||sg().length>0,g=e;return i(P.Menu,{navId:t,onClose:rt.closeContextMenu,"aria-label":"Quest Button Menu"},i(P.MenuItem,{id:Ut(`${t}-mark-all-ignored`),label:"Mark All Ignored",action:V8e,disabled:r}),i(P.MenuItem,{id:Ut(`${t}-reset-ignored-list`),label:"Reset Ignored List",action:Y8e,disabled:n}),s&&i(P.MenuItem,{id:Ut(`${t}-queue-all-quests`),label:"Queue All Quests"+p,action:()=>{let x=UAe();Lr(),x.finally(()=>{Lr()})},disabled:u}),m&&i(P.MenuItem,{id:Ut(`${t}-clear-queue`),label:"Clear Quest Queue",action:()=>{vD({manual:!0,preserveResume:!1,terminalHeartbeat:!0}),Lr()},disabled:e}),i(P.MenuItem,{id:Ut(`${t}-fetch-quests`),label:"Fetch Quests",action:()=>{aD("MANUAL_FETCH")},disabled:g}))}function hLe(){let{isOnQuestsPage:e,questButtonBadgeColor:t,questButtonDisplay:o,questButtonBadgeCount:r,questButtonLeftClickAction:n,questButtonMiddleClickAction:a,questButtonRightClickAction:s,questButtonIndicator:l}=zi(["isOnQuestsPage","questButtonBadgeColor","questButtonDisplay","questButtonBadgeCount","questButtonLeftClickAction","questButtonMiddleClickAction","questButtonRightClickAction","questButtonIndicator"]),c=!wA,u=t,p=c?0:r,m=c?!1:e,g=o,x=n,v=a,y=s,A=l,k=fLe(p,A,u),w=A==="pill"||A==="both",I=wR(g,p,m);function E(N){if(N.type==="mousedown"&&N.button!==oD)return;N.preventDefault(),N.stopPropagation();let B=mLe(N,x,v,y);if(B==="open-quests"){Yt.transitionTo(hm);return}if(B==="plugin-settings"){cLe(et.Questify);return}B==="context-menu"&&rt.openContextMenu(N,()=>i(gLe,null))}return i(dLe,{id:Ut("quest-button"),className:Ut("quest-button"),selected:m,visible:I,hasUnread:p>0&&w,badgeProps:k,onPress:E})}function xLe({badgeColor:e,leftClickAction:t,middleClickAction:o,rightClickAction:r,showBadge:n,showPill:a,visible:s}){let u=fLe(n?3:0,n?a?"both":"badge":a?"pill":"none",e),[p,m]=T(!1);function g(x){if(x.type==="mousedown"&&x.button!==oD)return;x.preventDefault(),x.stopPropagation();let v=mLe(x,t,o,r);if(v==="open-quests"){m(!p);return}v==="context-menu"&&rt.openContextMenu(x,()=>i(gLe,{dummy:!0}))}return i(dLe,{id:Ut("dummy-quest-button"),className:Ut("dummy-quest-button","quest-button"),selected:p,visible:s,hasUnread:a,badgeProps:u,onPress:g})}var z2t,$2t,G2t,lte=h(()=>{"use strict";d();Jt();Ih();le();C();as();cg();lg();bR();oy();L5();Zl();uLe();z2t=he("tooltip:","lowerBadgeSize:"),$2t=he("=!1,hovered:","=!1,unread:","=!1,disabled:"),G2t=he("BADGE_NOTIFICATION_BACKGROUND","let{count:")});function vLe(e,t,o=!1){let{quest:r}=t;if(!r)return;let n=E5(r.id),a=!!r.userStatus?.enrolledAt,s=C5(r)!=null,l=!o&&a&&ly(r);e.unshift(i(P.MenuGroup,null,!o&&(n?i(P.MenuItem,{id:Ut("unignore-quest"),label:"Unmark as Ignored",action:()=>X8e(r.id)}):i(P.MenuItem,{id:Ut("ignore-quest"),label:"Mark as Ignored",action:()=>J8e(r.id)})),s?i(P.MenuItem,{id:Ut("stop-auto-complete"),label:"Stop Auto-Complete",action:()=>{pg(r,{manual:!0,preserveResume:!1,terminalHeartbeat:!0}),Lr()}}):l?i(P.MenuItem,{id:Ut("start-auto-complete"),label:"Start Auto-Complete",action:()=>{dg(r,{force:!0,source:"manual"}),Lr()}}):null,i(P.MenuItem,{id:Ut("copy-quest-id"),label:"Copy Quest ID",action:()=>po(r.id)})))}var yLe=h(()=>{"use strict";d();Su();C();cg();lg();oy();Zl()});function Mb(){let e=De();e.allowChangingDangerousSettings=q7,e.autoCompleteQuestsSimultaneously=Z7,e.completeVideoQuestsQuicker=K7,e.makeMobileVideoQuestsDesktopCompatible=W7,e.preventVideoQuestsPausing=Q7,e.resumeInterruptedQuests=j7,e.autoCompleteQuestTypes={...Vv}}var cte=h(()=>{"use strict";d();as();jd()});function bLe(e){let t=De();t.acknowledgedNotices={...t.acknowledgedNotices,[e]:!0}}function Q2t(e,t,o){bLe(e.id),t.run?.(),o(),setTimeout(()=>{(!t.promptForRestart||!Pb({onDecline:AR}))&&AR()},0)}function Z2t({startedAt:e,step:t},o){let r=Math.max(0,t.disabledFor??0);return Math.max(0,Math.ceil((e+r*1e3-o)/1e3))}function SLe(e){return e.dismissable??!0}function Y2t({notice:e,...t}){let[o,r]=T(()=>{let u=Date.now();return e.actions.map(p=>({step:p,startedAt:u}))}),[n,a]=T(Date.now),s=o.map(u=>Z2t(u,n)),l=s.some(u=>u>0);G(()=>{if(!l)return;let u=setTimeout(()=>a(Date.now()),250);return()=>clearTimeout(u)},[o,l,n]);function c(u){let{confirmation:p}=o[u].step;if(p){let m=Date.now();r(g=>g.map((x,v)=>v===u?{step:p,startedAt:m}:x)),a(m);return}Q2t(e,e.actions[u],t.onClose)}return i(W2t,{...t,dismissable:SLe(e),role:"alertdialog",size:"lg",title:e.title,actions:o.map(({step:u},p)=>({text:s[p]>0?`${u.text} (${s[p]})`:u.text,variant:u.variant??"primary",disabled:s[p]>0,onClick:()=>c(p)}))},e.renderBody())}function AR(){for(let e of K2t){if(De().acknowledgedNotices[e.id])continue;if(!e.condition()){e.autoAcknowledgeCondition?.()&&bLe(e.id);continue}let t={dismissable:SLe(e)};ce(o=>i(Y2t,{...o,notice:e}),t);return}}var W2t,K2t,wLe=h(()=>{"use strict";d();C();as();cte();SR();W2t=be,K2t=[{id:"quest-ban-warning-2026-08-07",title:"Questify Notice - August 7th, 2026",renderBody:()=>i("div",{className:"questify-startup-notice-body"},i("p",null,"Discord has implemented a Quest Ban system which will temporarily or permanently limit your access to completing Quests and claiming their rewards if you are found to be completing them through unofficial means. Modifying the completion of Quests is against their ",i("a",{href:"https://discord.com/safety/platform-manipulation-policy-explainer",target:"_blank",rel:"noreferrer"},"Terms of Service"),"."),i("br",null),i("p",null,"The punishment appears limited to loss of access to Quests and their rewards, but Discord may escalate at any time."),i("br",null),i("p",null,"Due to the various methods Discord uses to track users, there's no way to realistically evade detection. If you proceed, understand that Discord likely will detect it at some point.")),condition:()=>{let e=De();return e.enabled&&e.allowChangingDangerousSettings},autoAcknowledgeCondition:()=>!De().allowChangingDangerousSettings,actions:[{text:"Keep Using Dangerous Questify Settings",variant:"critical-primary"},{text:"Disable Dangerous Questify Settings",variant:"primary",run:Mb,promptForRestart:!0}]},{id:"quest-ban-warning-2026-08-26",title:"Questify Notice - August 26th, 2026",dismissable:!1,renderBody:()=>i("div",{className:"questify-startup-notice-body"},i("p",null,"Discord has begun punishing users of scripts and plugins that modify the completion of Quests. Modifying the completion of Quests is against their ",i("a",{href:"https://discord.com/safety/platform-manipulation-policy-explainer",target:"_blank",rel:"noreferrer"},"Terms of Service"),"."),i("br",null),i("p",null,"The punishment consists of a temporary or permanent loss of access to Quests and their rewards. ",i("strong",null,"The punishment also consists of an account standing violation which lasts 2 years per violation.")),i("br",null),i("p",null,"Due to the various methods Discord uses to track users, there's no way to realistically evade detection. If you proceed, understand that Discord likely will detect your use at some point.")),condition:()=>{let e=De();return e.enabled&&e.allowChangingDangerousSettings},autoAcknowledgeCondition:()=>!De().allowChangingDangerousSettings,actions:[{text:"Keep Using Dangerous Questify Settings",variant:"critical-primary",disabledFor:10,confirmation:{text:"Are You Sure?",variant:"critical-secondary",disabledFor:5}},{text:"Disable Dangerous Questify Settings",variant:"primary",run:Mb,promptForRestart:!0}]}]});var ALe=h(()=>{});function lp({children:e}){return i(Ht,{variant:"primary",className:Ut("setting")},e)}function cp({children:e}){return i(oe,{className:Ut("setting-header")},e)}function ds({children:e,className:t}){return i(oe,{className:Ut("setting-subheader",t)},e)}function up({children:e}){return i(U,{className:Ut("setting-description")},e)}function Qg({children:e,className:t}){return i(U,{className:Ut("setting-paragraph",t)},e)}function kR(e,t){return t?[...Array.isArray(e)?e:[e],"dimmed-settings-item"].filter(o=>o!==void 0):e}function kLe({children:e,className:t}){return i(U,{className:Ut("notice-card",t)},e)}function ps({children:e,className:t}){return i("div",{className:Ut("settings-row",t)},e)}function Gn({children:e,className:t,width:o="fill"}){return i("div",{className:Ut("settings-row-item",o==="content"?"settings-row-item-content":void 0,t)},e)}function Ur({label:e,className:t,labelClassName:o,selectClassName:r,tooltip:n,...a}){let s=i("div",{className:Ut("settings-select",t)},i(Qg,{className:kR(o,!!a.disabled)},e),i("div",{className:Ut(r)},i(J2t,{...a})));return n?i(CLe,{text:n.text,position:n.position,wider:n.wider},s):s}function X2t(e){return i(Pr,{...e})}function CR({className:e,label:t,labelClassName:o,...r}){return i(f,null,t!=null&&i(Qg,{className:kR(o,!!r.disabled)},t),i("div",{className:Ut("settings-color-picker",e)},i(X2t,{...r})))}function TR({className:e,disabled:t,label:o,labelClassName:r,maxValue:n=100,minValue:a=0,onChange:s,sliderClassName:l,value:c}){return i("div",{className:Ut("settings-slider",e)},i(Qg,{className:kR(r,!!t)},o),i("div",{className:Ut("settings-slider-control-container")},i(cn,{minValue:a,maxValue:n,initialValue:c,onValueChange:s,className:Ut("settings-slider-control",l),disabled:t})))}function kl(e){let t=i("div",{className:Ut("setting-subtle-switch",e.topSpacing?`margin-top-${e.topSpacing}`:void 0,e.bottomSpacing?`margin-bottom-${e.bottomSpacing}`:void 0,kR(e.className,!!e.disabled))},i(V2t,{...e}));return e.tooltip?i(CLe,{text:e.tooltip.text,"aria-label":e.tooltip.text,position:e.tooltip.position},t):t}function CLe({children:e,position:t,text:o,wider:r,className:n}){return i("div",{className:Ut("settings-tooltip-wrapper",n)},i(eSt,{text:o,position:t,color:"brand",tooltipStyle:{maxWidth:r?"602px":"350px"},tooltipClassName:Ut("settings-tooltip"),tooltipPointerClassName:Ut("settings-tooltip-pointer"),tooltipContentClassName:Ut("settings-tooltip-content"),delay:50},a=>i("div",{...a},e)))}var J2t,V2t,eSt,IR,Nb=h(()=>{"use strict";d();ALe();Qn();We();Je();le();C();Zl();J2t=he('"data-mana-component":"select"');V2t=he('auxiliaryContentPosition:"under-label"');eSt=he("VoidTooltip cannot find DOM node");IR=he('"data-mana-component":"button"')});function AA(e){return e.map(({label:t,value:o})=>({id:String(o),label:t,value:String(o)}))}function ELe(){let e=zi(["disableQuestsEverything","questButtonDisplay","questButtonIncludedTypes","questButtonIndicator","questButtonBadgeCount","questButtonBadgeColor","questButtonLeftClickAction","questButtonMiddleClickAction","questButtonRightClickAction"]),t=e.disableQuestsEverything,o=e.questButtonIncludedTypes,r=dte.filter(({value:p})=>o[p]).map(({value:p})=>String(p)),n=pte.filter(({value:p})=>o[p]).map(({value:p})=>String(p));function a(p){typeof p=="string"&&(De().questButtonDisplay=p,Du(!0))}function s(p){typeof p=="string"&&(De().questButtonIndicator=p,Du(!0))}function l(p,m){typeof m=="string"&&(De()[p]=m)}function c(p){De().questButtonBadgeColor=p}function u(p,m){let g=new Set(Array.isArray(m)?m:m?[m]:[]),x={...De().questButtonIncludedTypes};for(let v of p)x[v.value]=g.has(String(v.value));De().questButtonIncludedTypes=x,Eu()}return i(lp,null,i(ps,null,i(Gn,null,i(cp,null," Quest Button "),i(up,null," Show a Quest Button in the server list with an optional indicator for unclaimed and unignored Quests. ")),Bb&&i(Gn,{width:"content"},i(xLe,{badgeColor:e.questButtonBadgeColor,leftClickAction:e.questButtonLeftClickAction,middleClickAction:e.questButtonMiddleClickAction,rightClickAction:e.questButtonRightClickAction,showBadge:oAe(e.questButtonIndicator),showPill:nAe(e.questButtonIndicator),visible:rAe(e.questButtonDisplay)}))),i(ds,{className:"no-top-margin"}," Button Behavior "),i(ps,null,i(Gn,null,i(Ur,{label:"Left Click Action:",options:ute,value:e.questButtonLeftClickAction,selectionMode:"single",disabled:t,fullWidth:!0,onSelectionChange:p=>l("questButtonLeftClickAction",p)})),i(Gn,null,i(Ur,{label:"Middle Click Action:",options:ute,value:e.questButtonMiddleClickAction,selectionMode:"single",disabled:t,fullWidth:!0,onSelectionChange:p=>l("questButtonMiddleClickAction",p)})),i(Gn,null,i(Ur,{label:"Right Click Action:",options:ute,value:e.questButtonRightClickAction,selectionMode:"single",disabled:t,fullWidth:!0,onSelectionChange:p=>l("questButtonRightClickAction",p)}))),i(ps,null,i(Gn,null,i(Ur,{label:"Button Visibility:",options:rSt,value:e.questButtonDisplay,selectionMode:"single",disabled:t,fullWidth:!0,onSelectionChange:a,tooltip:{position:"top",text:`Always shows the Quest Button whenever this feature is enabled. Unclaimed only shows it while you have relevant unclaimed Quest rewards. Never hides the Quest Button.`}})),i(Gn,null,i(Ur,{label:"Unclaimed Indicator:",options:iSt,value:e.questButtonIndicator,selectionMode:"single",disabled:t,fullWidth:!0,onSelectionChange:s,tooltip:{position:"top",text:`Pill shows Discord's unread-style marker beside the Quest Button. Badge shows the number of relevant unclaimed Quest rewards. Both shows the pill and badge together. None hides unclaimed indicators.`}})),i(Gn,null,i(CR,{label:"Badge Color:",className:"quest-button-color-picker",color:e.questButtonBadgeColor,disabled:t,onChange:c,showEyeDropper:!0}))),i(ds,null," Quest Relevancy "),i(Ur,{label:"Included Reward Types:",wrapTags:!0,options:TLe,value:r,closeOnSelect:!1,maxOptionsVisible:TLe.length,selectionMode:"multiple",disabled:t,fullWidth:!0,onSelectionChange:p=>u(dte,p),tooltip:{position:"top",text:"Only count Quests with these reward types as unclaimed when determining button visibility, badge count, and alert behavior."}}),i(Ur,{label:"Included Quest Types:",labelClassName:"margin-top-9",wrapTags:!0,options:ILe,value:n,closeOnSelect:!1,maxOptionsVisible:ILe.length,selectionMode:"multiple",disabled:t,fullWidth:!0,onSelectionChange:p=>u(pte,p),tooltip:{position:"top",text:"Only count Quests with these task types as unclaimed when determining button visibility, badge count, and alert behavior."}}))}var tSt,oSt,nSt,dte,pte,rSt,iSt,ute,TLe,ILe,DLe=h(()=>{"use strict";d();co();ER();as();F5();cg();Zl();lte();Nb();tSt=[{label:"Always",value:"always"},{label:"Unclaimed",value:"unclaimed"},{label:"Never",value:"never"}],oSt=[{label:"Pill",value:"pill"},{label:"Badge",value:"badge"},{label:"Both",value:"both"},{label:"None",value:"none"}],nSt=[{label:"Open Quests",value:"open-quests"},{label:"Context Menu",value:"context-menu"},{label:"Plugin Settings",value:"plugin-settings"},{label:"Nothing",value:"nothing"}],dte=[{label:"Orbs",value:4},{label:"Nitro Codes",value:5},{label:"Reward Codes",value:1},{label:"In Game Items",value:2},{label:"Profile Collectibles",value:3}],pte=[{label:"Watch Video",value:"WATCH_VIDEO"},{label:"Watch Video on Mobile",value:"WATCH_VIDEO_ON_MOBILE"},{label:"Achievement in Activity",value:"ACHIEVEMENT_IN_ACTIVITY"},{label:"Achievement in Game",value:"ACHIEVEMENT_IN_GAME"},{label:"Play Activity",value:"PLAY_ACTIVITY"},{label:"Play on Desktop",value:"PLAY_ON_DESKTOP"},{label:"Play on Desktop V2",value:"PLAY_ON_DESKTOP_V2"},{label:"Stream on Desktop",value:"STREAM_ON_DESKTOP"},{label:"Play on PlayStation",value:"PLAY_ON_PLAYSTATION"},{label:"Play on Xbox",value:"PLAY_ON_XBOX"}];rSt=AA(tSt),iSt=AA(oSt),ute=AA(nSt),TLe=AA(dte),ILe=AA(pte)});function cSt({allowed:e,disabled:t,onClick:o}){return i("div",{className:Ut("settings-button","allow-dangerous-button")},i(IR,{text:e?"Reset and disallow changing dangerous settings...":"Allow changing dangerous settings...",variant:e?"critical-secondary":"critical-primary",fullWidth:!0,disabled:t,onClick:o,size:"sm"}))}function PLe(){let e=zi(["disableQuestsEverything","disableSponsoredBanner","disableRelocationNotices","disableFriendsListPromo","disableMembersListPromo","disableAccountPanelPromo","disableAccountPanelQuestProgress","disableOrbsAndQuestsBadges","resumeInterruptedQuests","allowChangingDangerousSettings","makeMobileVideoQuestsDesktopCompatible","autoCompleteQuestsSimultaneously","autoCompleteQuestTypes","completeVideoQuestsQuicker","preventVideoQuestsPausing"]),t=mte.filter(({key:u})=>e[u]).map(({key:u})=>u),o=fte.filter(({value:u})=>Xv(u)&&e.autoCompleteQuestTypes[u]===!0).map(({value:u})=>String(u));function r(u){let p=new Set(Array.isArray(u)?u:u?[u]:[]);for(let{key:m}of mte)De()[m]=p.has(m)}function n(u,p){rD.show({title:"Are you sure?",body:u,confirmText:"Continue",confirmVariant:"critical-primary",cancelText:"Cancel",onConfirm:p})}function a(u){let p=new Set(Array.isArray(u)?u:u?[u]:[]),m={...Vv};for(let{value:g}of fte){let x=p.has(String(g))&&Xv(g);m[g]=x}De().autoCompleteQuestTypes=m}function s(u){function p(){De().disableQuestsEverything=u}u?n("This will completely disable Quest functionality.",()=>{Mb(),p()}):p()}function l(u){function p(){De().allowChangingDangerousSettings=u}u?n("This will allow changing dangerous settings.",p):(Mb(),p())}function c(u,p){De()[u]=p}return i(lp,null,i(cp,null," Quest Features "),i(up,null," Modify how Quests behave to enhance or remove functionality. "),i(ds,null," Disable Features "),i(kl,{checked:e.disableQuestsEverything,label:"Completely disable Quest functionality:",onChange:s,bottomSpacing:"10",tooltip:{position:"top",text:"This will disable all plugin enhancements, hide the Quests page and Quest elements across Discord, and prevent Discord from fetching Quest data. This will not affect the shop as Orbs are too intrinsically tied to it as a secondary currency."}}),i(Ur,{label:"Disable specific features:",wrapTags:!0,options:aSt,value:t,closeOnSelect:!1,maxOptionsVisible:7,selectionMode:"multiple",disabled:e.disableQuestsEverything,onSelectionChange:r,tooltip:{position:"top",text:`Sponsored Banner is a paid-for Quest banner at the top of the Quests page. Relocation Notices are indicators such as in the Discovery page about Quests moving to DMs. Friends List Promo is a card that displays on the "Active Now" section of your Friends List while a user you share a server with is playing a game with an active Quest. Members List Promo is an icon that displays on members in a server's Members List while they are playing a game with an active Quest. Account Panel Promo is a paid-for Quest promotion that appears above your user account panel. Account Panel Progress is the active or completed Quest progress shown above your user account panel. Quest & Orbs Badges are badges on user profiles for when someone has completed at least one Quest or bought the Orbs badge respectively.`}}),i(ds,null," Modify Features "),i(kLe,{className:["notice-card-red",e.disableQuestsEverything?"dimmed-settings-item":void 0,e.allowChangingDangerousSettings?void 0:"notice-card-solo","no-bottom-margin"].filter(u=>u!==void 0)},i(Qg,null,"Discord is known to punish users of scripts or plugins that modify the completion of Quests. Modifying the completion of Quests is against Discord's ",i("a",{href:"https://discord.com/safety/platform-manipulation-policy-explainer",target:"_blank",rel:"noreferrer"},"Terms of Service"),"."),i("br",null),i(Qg,null,"The punishment consists of a temporary or permanent loss of access to Quests and their rewards. ",i("strong",null,"The punishment also consists of an account standing violation which lasts 2 years per violation.")),i("br",null),i(Qg,null,"Due to the various methods Discord uses to track users, there's no way to realistically evade detection. If you proceed, understand that Discord likely will detect your use at some point."),i("br",null),i(Qg,null,"Use the following toggle to access potentially dangerous settings at your own risk."),i(cSt,{allowed:e.allowChangingDangerousSettings,disabled:e.disableQuestsEverything,onClick:()=>l(!e.allowChangingDangerousSettings)}),e.allowChangingDangerousSettings&&i(f,null,i(kl,{disabled:e.disableQuestsEverything||!e.allowChangingDangerousSettings,checked:e.completeVideoQuestsQuicker,label:"Accelerate Video Quest auto-completion:",onChange:u=>c("completeVideoQuestsQuicker",u),topSpacing:"10",bottomSpacing:"5",tooltip:{position:"top",text:`Discord allows Video Quests to be completed once 24 seconds less than the duration of the video has passed since you enrolled into the Quest. This means that if a Video Quest is 24 seconds or less, or if you enroll in a Video Quest and return later to complete it, it can be completed immediately. This setting will only apply to auto-completing Video Quests and relies on the auto-complete setting below. Manually completing Video Quests will still require waiting the full duration and is not dependent on enrollment time.`}}),i(kl,{disabled:e.disableQuestsEverything||!e.allowChangingDangerousSettings,checked:e.preventVideoQuestsPausing,label:"Prevent Video Quests from pausing when losing focus:",onChange:u=>c("preventVideoQuestsPausing",u),bottomSpacing:"5",tooltip:{position:"top",text:`Discord forces you to be tabbed into the client for Video Quests to play their video. This setting prevents the video from pausing and allows completion to progress as normal. This setting applies only to manually completing Video Quests.`}}),i(kl,{disabled:e.disableQuestsEverything||!e.allowChangingDangerousSettings,checked:e.makeMobileVideoQuestsDesktopCompatible,label:"Make some mobile-only Video Quests completable on desktop:",onChange:u=>c("makeMobileVideoQuestsDesktopCompatible",u),bottomSpacing:"5",tooltip:{position:"top",text:`Some mobile-only Video Quests can be enrolled in on desktop, but still must be completed on mobile. This setting will allow those to be completed on desktop. Some mobile-only Video Quests are only enrollable on mobile. For this setting to affect those, you must enroll in those Quests on your mobile device before returning to desktop and refreshing your Quests. This setting, when enabled independently, applies only to manually completing Video Quests. Auto-completing mobile Video Quests from desktop relies on the auto-complete setting below, and will implicitly enable this setting as well.`}}),i(kl,{disabled:e.disableQuestsEverything||!e.allowChangingDangerousSettings,checked:e.autoCompleteQuestsSimultaneously,label:"Auto-complete Quests simultaneously rather than sequentially:",onChange:u=>c("autoCompleteQuestsSimultaneously",u),bottomSpacing:"5",tooltip:{position:"top",text:`By default, attempting to auto-complete multiple Quests will queue them to be completed in order. This setting will alternatively allow all auto-complete Quests to run at the same time. This setting will only apply to auto-completing Quests and relies on the auto-complete setting below.`}}),i(kl,{disabled:e.disableQuestsEverything||!e.allowChangingDangerousSettings,checked:e.resumeInterruptedQuests,label:"Resume interrupted auto-completions after a reload or restart:",onChange:u=>c("resumeInterruptedQuests",u),bottomSpacing:"5",tooltip:{position:"top",text:"This setting will automatically resume any interrupted auto-completions caused by reloads or restarts, including requeuing Quests which had yet to start auto-completing but had been queued."}}),i(Ur,{label:"Auto-complete specific Quest types:",labelClassName:"margin-top-9",wrapTags:!0,options:lSt,value:o,closeOnSelect:!1,maxOptionsVisible:7,selectionMode:"multiple",disabled:e.disableQuestsEverything||!e.allowChangingDangerousSettings,onSelectionChange:a,tooltip:{position:"top",wider:!0,text:`Watch Video on Mobile Quests will only work on mobile Quests which are enrollable on desktop. If a Quest is locked to enrollment on mobile, you must first enroll in it on your mobile device before returning to desktop and refreshing your Quests. All video related Quests usually send a stack trace with the progress reports. This means Discord would know exactly which functions were called, and can therefore verify that their own functions initiated the progress. Questify erases this stack trace, but the absence of it will be just as telling as its presence. Play on Desktop, Play on PlayStation, Play on Xbox, and Play Activity Quests are only available on official desktop clients due to a limitation imposed by Discord. 3rd party clients such as web extensions, Vesktop, Equibop, and others, do not support auto-completing these Quest types. All game related Quests usually send a game fingerprint with the heartbeat reports. This means Discord can use data from tens of thousands of users to determine whether other users are likely using a real game or are emulating the executable. There is no reasonable method to spoof this value, so Questify leaves it blank, but the absence of it will be just as telling as poorly spoofing the value. Achievement in Activity Quests can only be auto-completed by completing them immediately. This method may be patched at any time. Auto-completing Quests is done by clicking their respective buttons on the Quests page. Quests will be auto-completed in the order they were queued, unless the simultaneous completion setting is enabled above. Auto-completing Quests is the riskiest dangerous setting available. Enable it at your own risk.`}}))))}var mte,aSt,sSt,fte,lSt,MLe=h(()=>{"use strict";d();co();as();cte();jd();Zl();Nb();mte=[{key:"disableSponsoredBanner",label:"Sponsored Banner"},{key:"disableRelocationNotices",label:"Relocation Notices"},{key:"disableFriendsListPromo",label:"Friends List Promo"},{key:"disableMembersListPromo",label:"Members List Promo"},{key:"disableAccountPanelPromo",label:"Account Panel Promo"},{key:"disableAccountPanelQuestProgress",label:"Account Panel Progress"},{key:"disableOrbsAndQuestsBadges",label:"Quest & Orbs Badges"}],aSt=mte.map(({key:e,label:t})=>({id:e,label:t,value:e})),sSt={WATCH_VIDEO:"Watch Video",WATCH_VIDEO_ON_MOBILE:"Watch Video on Mobile",ACHIEVEMENT_IN_ACTIVITY:"Achievement in Activity",PLAY_ACTIVITY:"Play Activity",PLAY_ON_DESKTOP:"Play on Desktop",PLAY_ON_PLAYSTATION:"Play on PlayStation",PLAY_ON_XBOX:"Play on Xbox"},fte=Jv.map(e=>({label:sSt[e],value:e})),lSt=fte.map(({label:e,value:t})=>({id:String(t),label:e,value:String(t),disabled:!Xv(t)}))});function uSt({className:e}){return i("svg",{viewBox:"0 0 24 24",height:18,width:18,fill:"none",className:e,"aria-hidden":!0},i("path",{fill:"currentColor",d:"M12 3a1 1 0 0 0-1-1h-.06a1 1 0 0 0-.74.32L5.92 7H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2.92l4.28 4.68a1 1 0 0 0 .74.32H11a1 1 0 0 0 1-1V3ZM15.1 20.75c-.58.14-1.1-.33-1.1-.92v-.03c0-.5.37-.92.85-1.05a7 7 0 0 0 0-13.5A1.11 1.11 0 0 1 14 4.2v-.03c0-.6.52-1.06 1.1-.92a9 9 0 0 1 0 17.5Z"}),i("path",{fill:"currentColor",d:"M15.16 16.51c-.57.28-1.16-.2-1.16-.83v-.14c0-.43.28-.8.63-1.02a3 3 0 0 0 0-5.04c-.35-.23-.63-.6-.63-1.02v-.14c0-.63.59-1.1 1.16-.83a5 5 0 0 1 0 9.02Z"}))}function dSt(){return Z3().map(e=>({id:e,label:pSt(e),value:e})).sort((e,t)=>e.label.localeCompare(t.label))}function pSt(e){return e.toUpperCase().replace(/_/g," ").replace(/(\d+)/g," $1")}function gte({disabled:e,label:t,onChange:o,onPreview:r,options:n,playingSound:a,tooltip:s,value:l}){function c(u){let p=u.value||null,m=p!=null&&a===p;function g(v){v.preventDefault(),v.stopPropagation()}function x(v){v.preventDefault(),v.stopPropagation(),p&&!e&&r(p)}return{...u,trailing:p?i("button",{type:"button",className:Ut("sound-preview-button",m?"playing-audio":void 0),"aria-label":`Preview ${u.label}`,disabled:e,onMouseDown:g,onClick:x},i(uSt,null)):void 0}}return i(Ur,{label:t,options:n,value:l,selectionMode:"single",disabled:e,clearable:!0,fullWidth:!0,maxOptionsVisible:7,placeholder:"DISABLED",selectClassName:"sound-select",formatOption:c,tooltip:s,onSelectionChange:u=>{u!=null&&typeof u!="string"||o(u??null)}})}function BLe(){let e=zi(["newExcludedQuestAlertSound","newExcludedQuestAlertVolume","newQuestAlertSound","newQuestAlertVolume","questFetchInterval","disableQuestsEverything","notifyOnNewExcludedQuests","notifyOnNewQuests","notifyOnQuestComplete","questCompletedAlertSound","questCompletedAlertVolume"]),t=Ne(dSt,[]),o=Se(null),[r,n]=T(null),a=e.disableQuestsEverything;function s(){let u=o.current;o.current=null,u?.stop(),n(null)}function l(u,p){if(r===u){s();return}s();let m=yf(u,{volume:Math.max(0,Math.min(100,p)),onEnded:s});o.current=m,n(u),m?.play()}G(()=>s,[]),G(()=>{a&&s()},[a]);function c(u){if(u!=null&&typeof u!="string")return;let p=u==null?0:Number(u);De().questFetchInterval=p,Du(!0)}return i(lp,null,i(cp,null," Quest Notifications "),i(up,null,"Configure Quest completed and new Quest detected notifications and alerts. "),i(ds,null," Quest Completed "),i(kl,{checked:e.notifyOnQuestComplete,disabled:a,label:"Show a notification when a Quest is completed:",onChange:u=>{De().notifyOnQuestComplete=u},bottomSpacing:"5"}),i(ps,null,i(Gn,{className:"sound-select-row-item"},i(gte,{label:"Play a sound when a Quest is completed:",disabled:a,options:t,value:e.questCompletedAlertSound,playingSound:r,onPreview:u=>l(u,e.questCompletedAlertVolume),onChange:u=>{De().questCompletedAlertSound=u}})),i(Gn,{className:"volume-slider-row-item"},i(TR,{label:"Volume:",className:"inline-volume-slider",disabled:a,value:e.questCompletedAlertVolume,onChange:u=>{De().questCompletedAlertVolume=u}}))),i(ds,null," New Quests Detected "),i(kl,{checked:e.notifyOnNewQuests,disabled:a,label:"Show a notification when new Quests are detected:",bottomSpacing:"5",onChange:u=>{De().notifyOnNewQuests=u,Du(!0)}}),i(ps,null,i(Gn,{className:"sound-select-row-item"},i(gte,{label:"Play a sound when new Quests are detected:",disabled:a,options:t,value:e.newQuestAlertSound,playingSound:r,onPreview:u=>l(u,e.newQuestAlertVolume),onChange:u=>{De().newQuestAlertSound=u,Du(!0)}})),i(Gn,{className:"volume-slider-row-item"},i(TR,{label:"Volume:",className:"inline-volume-slider",disabled:a,value:e.newQuestAlertVolume,onChange:u=>{De().newQuestAlertVolume=u}}))),i(kl,{className:"margin-top-14",checked:e.notifyOnNewExcludedQuests,disabled:a,label:"Show a notification when new excluded Quests are detected:",bottomSpacing:"5",onChange:u=>{De().notifyOnNewExcludedQuests=u,Du(!0)},tooltip:{position:"top",text:`Some Quests are excluded from your available Quests list due to region or platform restrictions. When enabled, Questify will fetch their Quest configs, apply your included Quest and reward type filters, print the resolved excluded Quest data to console, and show a separate notification for matching excluded Quests.`}}),i(ps,null,i(Gn,{className:"sound-select-row-item"},i(gte,{label:"Play a sound when new excluded Quests are detected:",disabled:a,options:t,value:e.newExcludedQuestAlertSound,playingSound:r,onPreview:u=>l(u,e.newExcludedQuestAlertVolume),onChange:u=>{De().newExcludedQuestAlertSound=u,Du(!0)},tooltip:{position:"top",text:`Some Quests are excluded from your available Quests list due to region or platform restrictions. When a sound is selected, Questify will fetch their Quest configs, apply your included Quest and reward type filters, print the resolved excluded Quest data to console, and play this sound for matching excluded Quests.`}})),i(Gn,{className:"volume-slider-row-item"},i(TR,{label:"Volume:",className:"inline-volume-slider",disabled:a,value:e.newExcludedQuestAlertVolume,onChange:u=>{De().newExcludedQuestAlertVolume=u}}))),i(ps,null,i(Gn,null,i(Ur,{className:"margin-top-12",label:"Quest Fetch Interval:",options:NLe,value:e.questFetchInterval>0?String(e.questFetchInterval):null,selectionMode:"single",disabled:a,clearable:!0,fullWidth:!0,placeholder:"DISABLED",maxOptionsVisible:NLe.length,onSelectionChange:c,tooltip:{position:"top",text:`Discord only fetches Quests on load and when you visit the Quests page. This interval periodically fetches Quests for you while the client stays open, so Quest Button indicators and new Quest alerts can stay up to date throughout the day. This only runs if enabled and if the Quest Button or Quest Notifications settings are configured in a way which makes fetching periodically meaningful.`}}))))}var NLe,RLe=h(()=>{"use strict";d();rl();C();as();F5();Zl();Nb();NLe=[{id:"30-minutes",label:"30 Minutes",value:String(1800)},{id:"45-minutes",label:"45 Minutes",value:String(2700)},{id:"1-hour",label:"1 Hour",value:String(3600)},{id:"3-hours",label:"3 Hours",value:String(10800)},{id:"6-hours",label:"6 Hours",value:String(360*60)},{id:"12-hours",label:"12 Hours",value:String(720*60)}]});function xSt(){let e=Array.from(kn.quests.values());return e.length>0?e[Math.floor(Math.random()*e.length)]:null}function vSt(e,t){return{...structuredClone(e),dummyColor:t}}function dp(e){e.preventDefault(),e.stopPropagation(),e.nativeEvent.stopImmediatePropagation()}function ySt({disabled:e,dummyQuest:t,dummyGradient:o}){let r=Se(null),n=dD(Ut("dummy-quest"),t,o),a=pD(t);return G(()=>{let s=r.current;if(!s)return;let l=["auxclick","click","contextmenu","dblclick","dragstart","mousedown","mouseup","pointercancel","pointerdown","pointerup"];function c(u){u.preventDefault(),u.stopPropagation(),u.stopImmediatePropagation()}for(let u of l)s.addEventListener(u,c,!0);return()=>{for(let u of l)s.removeEventListener(u,c,!0)}},[]),i("div",{ref:r,className:Ut("dummy-quest-preview",e?"dimmed-settings-item":void 0),style:a,onAuxClickCapture:dp,onClickCapture:dp,onContextMenuCapture:dp,onDoubleClickCapture:dp,onDragStartCapture:dp,onMouseDownCapture:dp,onMouseUpCapture:dp,onPointerCancelCapture:dp,onPointerDownCapture:dp,onPointerUpCapture:dp},i(mSt,{className:n,quest:t}))}function bSt({disabled:e,dummyColor:t,dummyGradient:o}){let r=ye([kn],xSt),n=Ne(()=>r?vSt(r,t):null,[t,r]);return n?i(ySt,{disabled:e,dummyQuest:n,dummyGradient:o}):null}function FLe(){let e=zi(["disableQuestsEverything","questTileUnclaimedColor","questTileClaimedColor","questTileIgnoredColor","questTileExpiredColor","questTileGradient","questTilePreload"]),[t,o]=T(hSt),r=e.disableQuestsEverything,n=e[t];function a(p,m){o(p),De()[p]=m}function s(p,m,g){typeof g=="number"&&a(p,{enabled:m.enabled,color:g})}function l(p,m,g){a(p,{...m,enabled:g})}function c(p){typeof p=="string"&&(De().questTileGradient=p)}function u(p){if(typeof p!="string")return;let m=p==="true";De().questTilePreload=m,Lr()}return i(lp,null,i(cp,null," Quest Tiles "),i(up,null," Highlight Quests with optional theme colors for visibility. "),i(ds,null," Tile Behavior "),i(ps,{className:"quest-tile-behavior-row"},i(Gn,{className:"quest-tile-gradient-row-item"},i(Ur,{label:"Gradient Style:",options:LLe,value:e.questTileGradient,selectionMode:"single",disabled:r,fullWidth:!0,maxOptionsVisible:LLe.length,onSelectionChange:c,tooltip:{position:"top",text:`Intense and Default use the selected tile color in the asset gradient. Subtle Black keeps a darker neutral gradient for contrast. No Gradient removes the asset gradient, which can make some Quest artwork harder to read.`}})),i(Gn,{className:"quest-tile-preload-row-item"},i(Ur,{label:"Asset Preload:",options:OLe,value:String(e.questTilePreload),selectionMode:"single",disabled:r,fullWidth:!0,maxOptionsVisible:OLe.length,onSelectionChange:u,tooltip:{position:"top",text:`Loading all assets when the Quests page opens reduces layout shifting while scrolling. Loading during page scroll is closer to Discord's default behavior and may use less work up front.`}}))),i(ds,null," Tile Colors "),i(ps,{className:"quest-tile-color-row"},gSt.map(({key:p,label:m})=>{let g=e[p];return i(Gn,{key:p,className:"quest-tile-color-row-item"},i("div",{onFocusCapture:()=>o(p),onPointerDownCapture:()=>o(p)},i(CR,{label:`${m}:`,className:["quest-tile-color-picker",g.enabled?"":"disabled-color-picker"].filter(Boolean),color:g.color,disabled:r||!g.enabled,onChange:x=>s(p,g,x),showEyeDropper:!0})),i("div",{className:Ut("settings-button","quest-tile-color-button")},i(IR,{text:g.enabled?"Disable":"Enable",variant:g.enabled?"critical-secondary":"primary",disabled:r,fullWidth:!0,size:"sm",onClick:()=>l(p,g,!g.enabled)})))})),Bb&&i(bSt,{disabled:r,dummyColor:n,dummyGradient:e.questTileGradient}))}var mSt,fSt,LLe,OLe,gSt,hSt,_Le=h(()=>{"use strict";d();le();C();ER();as();jd();lg();mD();Zl();Nb();mSt=he(".rowIndex,trackGuildAndChannelMetadata"),fSt=[{label:"Intense Restyle Gradient",value:"intense"},{label:"Default Restyle Gradient",value:"default"},{label:"Subtle Black Gradient",value:"black"},{label:"No Gradient",value:"hide"}],LLe=fSt.map(({label:e,value:t})=>({id:t,label:e,value:t})),OLe=[{id:"true",label:"Load All Quest Assets On Page Load",value:"true"},{id:"false",label:"Load Quest Assets During Page Scroll",value:"false"}],gSt=[{key:"questTileUnclaimedColor",label:"Unclaimed",defaultValue:z7},{key:"questTileClaimedColor",label:"Claimed",defaultValue:$7},{key:"questTileIgnoredColor",label:"Ignored",defaultValue:G7},{key:"questTileExpiredColor",label:"Expired",defaultValue:H7}],hSt="questTileUnclaimedColor"});function PR(e){return e.map(({label:t,value:o})=>({id:o,label:t,value:o}))}function CSt(e){let t=new Set(Hd),o=Array.isArray(e)?e.filter(r=>t.has(r)):[];for(let r of Hd)o.includes(r)||o.push(r);return o.slice(0,Hd.length)}function qLe(){let e=zi(["disableQuestsEverything","questOrder","unclaimedSubsort","claimedSubsort","ignoredSubsort","expiredSubsort","rememberQuestPageSort","rememberQuestPageFilters"]),t=e.disableQuestsEverything,o=CSt(e.questOrder);function r(s,l){if(typeof l!="string")return;let c=l,u=[...o],p=u[s],m=u.indexOf(c);m!==-1&&m!==s&&(u[m]=p),u[s]=c,De().questOrder=u,Lr()}function n(s,l){typeof l=="string"&&(De()[s]=l,Lr())}function a(s,l){De()[s]=l}return i(lp,null,i(cp,null," Reorder Quests "),i(up,null," Sort Quests by their status when the Questify sort option is selected on the Quests page. "),i(ds,null," Status Order "),i(ps,null,o.map((s,l)=>i(Gn,{key:l},i(Ur,{label:`${kSt[l]}:`,options:ULe,value:s,selectionMode:"single",disabled:t,fullWidth:!0,maxOptionsVisible:ULe.length,onSelectionChange:c=>r(l,c),tooltip:{position:"top",text:"Each status can only appear once. Selecting a status already used in another position swaps the two positions."}})))),i(ds,null," Subsorts "),i(ps,null,i(Gn,null,i(Ur,{label:"Unclaimed Subsort:",options:zLe,value:e.unclaimedSubsort,selectionMode:"single",disabled:t,fullWidth:!0,maxOptionsVisible:zLe.length,onSelectionChange:s=>n("unclaimedSubsort",s),tooltip:{position:"top",text:DR.unclaimedSubsort}})),i(Gn,null,i(Ur,{label:"Claimed Subsort:",options:$Le,value:e.claimedSubsort,selectionMode:"single",disabled:t,fullWidth:!0,maxOptionsVisible:$Le.length,onSelectionChange:s=>n("claimedSubsort",s),tooltip:{position:"top",text:DR.claimedSubsort}}))),i(ps,null,i(Gn,null,i(Ur,{label:"Ignored Subsort:",options:GLe,value:e.ignoredSubsort,selectionMode:"single",disabled:t,fullWidth:!0,maxOptionsVisible:GLe.length,onSelectionChange:s=>n("ignoredSubsort",s),tooltip:{position:"top",text:DR.ignoredSubsort}})),i(Gn,null,i(Ur,{label:"Expired Subsort:",options:HLe,value:e.expiredSubsort,selectionMode:"single",disabled:t,fullWidth:!0,maxOptionsVisible:HLe.length,onSelectionChange:s=>n("expiredSubsort",s),tooltip:{position:"top",text:DR.expiredSubsort}}))),i(ds,null," Quest Page Memory "),i(kl,{checked:e.rememberQuestPageSort,disabled:t,label:"Remember the selected Quest page sort:",onChange:s=>a("rememberQuestPageSort",s),bottomSpacing:"5",tooltip:{position:"top",text:"When disabled, the Quests page opens with the Questify sort option each time."}}),i(kl,{checked:e.rememberQuestPageFilters,disabled:t,label:"Remember the selected Quest page filters:",onChange:s=>a("rememberQuestPageFilters",s),tooltip:{position:"top",text:"When disabled, the Quests page opens without task or reward filters each time."}}))}var SSt,ULe,hte,jLe,wSt,ASt,zLe,$Le,GLe,HLe,kSt,DR,WLe=h(()=>{"use strict";d();as();jd();lg();Nb();SSt=[{label:"Unclaimed",value:"UNCLAIMED"},{label:"Claimed",value:"CLAIMED"},{label:"Ignored",value:"IGNORED"},{label:"Expired",value:"EXPIRED"}],ULe=SSt.map(({label:e,value:t})=>({id:t,label:e,value:t})),hte=[{label:"Added (Newest)",value:"Recent DESC"},{label:"Added (Oldest)",value:"Recent ASC"}],jLe=[...hte,{label:"Expiring (Soonest)",value:"Expiring ASC"},{label:"Expiring (Latest)",value:"Expiring DESC"}],wSt=[...hte,{label:"Expired (Most Recent)",value:"Expiring DESC"},{label:"Expired (Least Recent)",value:"Expiring ASC"}],ASt=[...hte,{label:"Claimed (Most Recent)",value:"Claimed DESC"},{label:"Claimed (Least Recent)",value:"Claimed ASC"}];zLe=PR(jLe),$Le=PR(ASt),GLe=PR(jLe),HLe=PR(wSt),kSt=["First","Second","Third","Fourth"],DR={unclaimedSubsort:"Completed but unclaimed Quests stay below incomplete unclaimed Quests, then this subsort is applied within those groups.",claimedSubsort:"Claimed Quests can be sorted by claim time or by when the Quest was added.",ignoredSubsort:"Ignored Quests still keep their ignored group position, then this subsort controls their order inside that group.",expiredSubsort:"Expired Quests can be sorted by expiration time or by when the Quest was added."}});var TSt,MR,xte,KLe=h(()=>{"use strict";d();j();Pe();R();DLe();MLe();RLe();_Le();WLe();jd();TSt=1,MR=Wn.plugins.Questify;if(MR){let e=MR.migrationVersion??0;e===0&&(Wn.plugins.Questify={enabled:MR.enabled,migrationVersion:1},e=1),e!==MR.migrationVersion&&to.markAsChanged()}xte=M({migrationVersion:{type:1,description:"The current migration version of the settings.",default:TSt,hidden:!0},acknowledgedNotices:{type:7,description:"One-time notices that the user has acknowledged.",default:{...S8e},hidden:!0},questFeatures:{type:6,component:H.wrap(PLe),description:"Select which Quest features to disable."},disableQuestsEverything:{type:3,description:"Disable all Quest features.",default:m8e,restartNeeded:!0,hidden:!0},disableRelocationNotices:{type:3,description:"Disable Quest relocation notices in the Discovery page.",default:f8e,restartNeeded:!0,hidden:!0},disableSponsoredBanner:{type:3,description:"Disable the sponsored banner on the Quest page.",default:g8e,restartNeeded:!0,hidden:!0},disableAccountPanelPromo:{type:3,description:"Disable the promoted Quest popup above your account panel.",default:h8e,restartNeeded:!0,hidden:!0},disableAccountPanelQuestProgress:{type:3,description:"Disable active and completed Quest progress above your account panel.",default:x8e,restartNeeded:!0,hidden:!0},disableOrbsAndQuestsBadges:{type:3,description:"Disable the Quest badge on user profiles.",default:v8e,restartNeeded:!0,hidden:!0},disableFriendsListPromo:{type:3,description:"Disable the promotion of Quests for games played by friends.",default:y8e,restartNeeded:!0,hidden:!0},disableMembersListPromo:{type:3,description:"Disable the actively playing icon in members list items.",default:b8e,restartNeeded:!0,hidden:!0},allowChangingDangerousSettings:{type:3,description:"Allow changing dangerous settings.",default:q7,hidden:!0},resumeInterruptedQuests:{type:3,description:"Resume auto-completing Quests after a reload or restart.",default:j7,restartNeeded:!0,hidden:!0},makeMobileVideoQuestsDesktopCompatible:{type:3,description:"Make mobile-only Video Quests compatible with desktop.",default:W7,restartNeeded:!0,hidden:!0},autoCompleteQuestsSimultaneously:{type:3,description:"Complete Quests simultaneously rather than sequentially.",default:Z7,restartNeeded:!0,hidden:!0},completeVideoQuestsQuicker:{type:3,description:"Use Discord's progress leeway and elapsed enrollment time for Video Quest auto-completion.",default:K7,restartNeeded:!0,hidden:!0},preventVideoQuestsPausing:{type:3,description:"Prevent pausing the video when the Quest modal loses focus.",default:Q7,restartNeeded:!0,hidden:!0},autoCompleteQuestTypes:{type:7,description:"Which types of Quests to auto-complete in the background.",default:Vv,restartNeeded:!0,hidden:!0},questButton:{type:6,component:H.wrap(ELe),description:"Customize the Quest button in the server list."},questButtonDisplay:{type:7,description:"Which display type to use for the Quest button in the server list.",default:l8e,restartNeeded:!0,hidden:!0},questButtonIncludedTypes:{type:7,description:"Which reward types and Quest types to include when displaying Quest counts on the Quest button.",default:I8e,hidden:!0},questButtonIndicator:{type:7,description:"Which display type to use for the unclaimed indicator on the Quest button in the server list.",default:c8e,hidden:!0},questButtonBadgeCount:{type:1,description:"The current number of relevant unclaimed Quests.",default:E8e,hidden:!0},questButtonBadgeColor:{type:7,description:"The color of the Quest button badge in the server list.",default:s8e,hidden:!0},questButtonLeftClickAction:{type:7,description:"The action to perform when left-clicking the Quest button in the server list.",default:u8e,hidden:!0},questButtonMiddleClickAction:{type:7,description:"The action to perform when middle-clicking the Quest button in the server list.",default:d8e,hidden:!0},questButtonRightClickAction:{type:7,description:"The action to perform when right-clicking the Quest button in the server list.",default:p8e,hidden:!0},questNotifications:{type:6,component:H.wrap(BLe),description:"Configure Quest completed and new Quest detected notifications."},notifyOnQuestComplete:{type:3,description:"Show a notification when a Quest is completed.",default:w8e,hidden:!0},notifyOnNewQuests:{type:3,description:"Show a notification when new Quests are detected.",default:A8e,hidden:!0},notifyOnNewExcludedQuests:{type:3,description:"Show a notification when new excluded Quests are detected.",default:k8e,hidden:!0},questCompletedAlertSound:{type:7,description:"The sound to play when a Quest is completed.",default:C8e,hidden:!0},questCompletedAlertVolume:{type:1,description:"The volume for the Quest completed alert sound.",default:T8e,hidden:!0},questFetchInterval:{type:1,description:"The interval in seconds to fetch Quests from Discord.",default:D8e,hidden:!0},newQuestAlertSound:{type:7,description:"The sound to play when new Quests are detected.",default:P8e,hidden:!0},newQuestAlertVolume:{type:1,description:"The volume for the new Quest alert sound.",default:M8e,hidden:!0},newExcludedQuestAlertSound:{type:7,description:"The sound to play when new excluded Quests are detected.",default:N8e,hidden:!0},newExcludedQuestAlertVolume:{type:1,description:"The volume for the new excluded Quest alert sound.",default:B8e,hidden:!0},questTiles:{type:6,component:H.wrap(FLe),description:"Customize the appearance of Quest tiles in the Quests page."},questTileUnclaimedColor:{type:7,description:"The color of unclaimed Quest tiles in the Quests page.",default:{...z7},hidden:!0},questTileClaimedColor:{type:7,description:"The color of claimed Quest tiles in the Quests page.",default:{...$7},hidden:!0},questTileIgnoredColor:{type:7,description:"The color of ignored Quest tiles in the Quests page.",default:{...G7},hidden:!0},questTileExpiredColor:{type:7,description:"The color of expired Quest tiles in the Quests page.",default:{...H7},hidden:!0},questTileGradient:{type:0,description:"Style of the gradient used in the Quest tiles.",default:i8e,hidden:!0},questTilePreload:{type:3,description:"Attempt to preload the assets for the Quest tiles.",default:a8e,hidden:!0},reorderQuests:{type:6,description:"Sort Quests by their status.",component:H.wrap(qLe)},questOrder:{type:7,description:"Sort order for Quest status groups.",default:Array.from(Hd),hidden:!0},unclaimedSubsort:{type:0,description:"Subsort method for unclaimed Quests.",default:Y7,hidden:!0},claimedSubsort:{type:0,description:"Subsort method for claimed Quests.",default:J7,hidden:!0},ignoredSubsort:{type:0,description:"Subsort method for ignored Quests.",default:X7,hidden:!0},expiredSubsort:{type:0,description:"Subsort method for expired Quests.",default:V7,hidden:!0},isOnQuestsPage:{type:3,description:"Whether the user is currently on the Quests page.",default:R8e,hidden:!0},rememberQuestPageSort:{type:3,description:"Remember the last used sort on the Quests page.",default:L8e,hidden:!0},rememberQuestPageFilters:{type:3,description:"Remember the last used filters on the Quests page.",default:O8e,hidden:!0},lastQuestPageSort:{type:0,description:"Remember the last used sort on the Quests page.",default:F8e,hidden:!0},lastQuestPageFilters:{type:7,description:"Remember the last used filters on the Quests page.",default:_8e,hidden:!0},ignoredQuestIDs:{type:7,description:"An array of Quest IDs that are ignored.",default:U8e,hidden:!0},resumeQuestIDs:{type:7,description:"An array of Quest IDs that are being or are queued to be auto-completed in the background.",default:z8e,hidden:!0}})});var QLe,ZLe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/questify/styles.css",{name:"src/equicordplugins/questify/styles.css",source:`/* Miscellaneous */ /* Fix to overwrite bad CSS in callTimer/alignedChatInputFix.css */ [class*="panels"] [class*="questProgressWrapper"] [class*="outer"] > [class*="inner"] { height: 100% !important; } /* Fix to overwrite bad CSS in callTimer/alignedChatInputFix.css */ [class*="panels"] [class*="questProgressWrapper"] > div { opacity: 1 !important; } /* Fix oversized confetti blocking Quest buttons. */ [class*="rewardDescriptionContainer"] [class*="progressWrapper"] > [class*="confetti"] { pointer-events: none; } /* Fix Questify button text clipping. */ .questify-quest-item-restyle button [class*="buttonChildren"], .questify-quest-item-restyle button span { overflow: visible; } /* Prevent shifting in the progress subtitle. */ [class*="questProgressHint_"] { font-variant-numeric: tabular-nums; } /* Notices */ .questify-startup-notice-body { line-height: normal; } /* Quest tile preview */ .questify-dummy-quest-preview { cursor: default; margin-top: 12px; user-select: none; } .questify-dummy-quest { margin-top: 8px; } /* Background of Quest tile. */ .questify-quest-item-restyle > :where(div) { background-color: var(--questify-color) !important; } /* Normal button text + SVG button text color. */ .questify-quest-item-restyle > :nth-child(2) button > *, .questify-quest-item-restyle > :nth-child(2) button > * > * > span { color: var(--questify-quest-name); } /* Watch again button SVG color. */ .questify-quest-item-restyle > :nth-child(2) button > div > div > svg path { fill: var(--questify-quest-name); } /* Allows glowing reward previews which aren't confined to their own square video frame to overflow. */ .questify-quest-item-restyle > div > div[class*="rewardDescriptionContainer"] { overflow: visible; } /* Quest name color. */ .questify-quest-item-restyle > div > div[class*="rewardDescriptionContainer"] > div[class*="textContainer"] > [class*="eyebrow"] { color: var(--questify-quest-name) !important; } /* Reward title + Orbs reward title text color. */ .questify-quest-item-restyle > div > div[class*="rewardDescriptionContainer"] > div[class*="textContainer"] > div[class*="text-md"], .questify-quest-item-restyle > div > div[class*="rewardDescriptionContainer"] > div[class*="textContainer"] > div[class*="text-md"] > span { color: var(--questify-reward-title) !important; } /* Quest description text color. */ .questify-quest-item-restyle > div > div[class*="rewardDescriptionContainer"] > div[class*="textContainer"] > div[class*="text-sm"] { color: var(--questify-reward-description) !important; } .questify-quest-item-restyle [class*="placeholderElement"] { background-color: transparent; } /* Promoted by XYZ text color. */ .questify-quest-item-restyle > div[class*="container"] > div[class*="positionContentOverBackground"] > div[class*="contents"] > div[class*="bottomRow"] > div[class*="text-sm"] { color: var(--questify-reward-description) !important; } .questify-quest-item-contrast-logo > div[class*="container"] > div[class*="positionContentOverBackground"] > div[class*="contents"] > div[class*="partnerBranding"] > img { filter: drop-shadow(0 0 10px rgb(0 0 0 / 80%)); } .questify-quest-item-intense-gradient > :nth-child(1) [class*="overlay"] { background: linear-gradient(to top, var(--questify-color) 0, hsl(from var(--questify-color) h s l / 100%) 20.5%, hsl(from var(--questify-color) h s l / 99.5%) 23.33%, hsl(from var(--questify-color) h s l / 98%) 26.66%, hsl(from var(--questify-color) h s l / 97%) 30%, hsl(from var(--questify-color) h s l / 90%) 40%, hsl(from var(--questify-color) h s l / 77%) 50%, hsl(from var(--questify-color) h s l / 0%) 100%); } .questify-quest-item-default-gradient > :nth-child(1) [class*="overlay"] { background: linear-gradient(to top, var(--questify-color) 0, hsl(from var(--questify-color) h s l / 95%) 20.31%, hsl(from var(--questify-color) h s l / 0%) 100%); } .questify-quest-item-black-gradient > :nth-child(1) [class*="overlay"] { background: linear-gradient(to top, hsl(0deg 0% 0% / 80%) 10%, hsl(0deg 0% 0% / 65%) 20%, hsl(0deg 0% 0% / 50%) 50%, hsl(0deg 0% 0% / 10%) 75%, hsl(0deg 0% 0% / 0%) 90%); } .questify-quest-item-hide-gradient > :nth-child(1) [class*="overlay"] { display: none; } .questify-quest-item-restyle > :nth-child(2) [class*="textOverflowBlur"] { background: linear-gradient(transparent 50%, var(--questify-color) 100%); filter: brightness(0.9); } .questify-quest-item-restyle > :nth-child(2) > div button { background-color: var(--questify-button-normal) !important; } .questify-quest-item-restyle > :nth-child(2) > div button:not([disabled]):hover { background-color: var(--questify-button-hover) !important; transition: background-color 0.2s ease-in-out; } .questify-quest-item-restyle > :nth-child(1) [class*="container"] { border-top-left-radius: 8px; border-top-right-radius: 8px; } .questify-quest-item-restyle > :nth-child(2) [class*="container"] { border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; } div[id^="quest-tile-"] div[class^="confetti__"] { pointer-events: none; } /* Quest Button */ #questify-dummy-quest-button { margin-right: -12px; margin-left: 5px; border-left: 5px solid var(--text-strong); border-radius: 4px; } .questify-quest-button-pill { position: absolute; top: 0; left: 0; height: 100%; pointer-events: none; } .questify-quest-button-pill > [class*="item"] { will-change: transform; max-height: 8px; min-height: 8px; transition: max-height 0.2s ease-in-out; } .questify-quest-button-pill.hovered > [class*="item"] { max-height: 20px; } .questify-quest-button-pill.selected > [class*="item"] { max-height: 40px; } .questify-quest-button-server-list-button-container { position: relative; } .questify-quest-button-icon-container { pointer-events: none; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; } .questify-quest-button-container { position: relative; }`,classNames:{},dom:null});QLe="src/equicordplugins/questify/styles.css"});function Ste(e){De().isOnQuestsPage=e??window.location.pathname===hm}function YLe(e){let t=Date.now();Ste(),Du(),XLe(),kZ(),Qt.info(`START_TASKS-${e.toUpperCase()}`,{startedAt:t})}function JLe(e,t=!0){let o=Date.now();Ste(),sD(),bte.clear(),vD({manual:!1,preserveResume:t,terminalHeartbeat:!0}),Qt.info(`STOP_TASKS-${e.toUpperCase()}`,{stoppedAt:o})}function XLe(){yte||!wA||(yte=!0,$Ae())}function ESt(e){let t=MZ({quest:e.quest});return t?i(H,{noop:!0},i(ISt,{size:e.size,variant:"secondary",disabled:!1,fullWidth:!0,...t})):null}var vte,yte,bte,Bb,ISt,NR,ER=h(()=>{"use strict";d();rl();Tf();j();Ih();O();R();le();C();lte();yLe();as();F5();cg();wLe();lg();SR();KLe();bR();ZLe();oy();L5();ty();R5();k5();mD();Zl();vte=!1,yte=!1,bte=new Set,Bb=Wn.plugins.Questify?.enabled;ISt=he("BUTTON_LOADING_STARTED_LABEL)),");NR=S({name:"Questify",description:"Enhance specific Quest features, disable annoyances, or completely remove Quests.",tags:["Appearance","Customisation","Privacy","Utility"],authors:[F.Etorix],dependencies:["AudioPlayerAPI","ServerListAPI"],startAt:"Init",managedStyle:QLe,settings:xte,canOpenDevToolsWindow:iD,canAutoCompleteQuest:ly,disguiseHomeButton:pLe,enrolledIncompleteButton:ESt,formatLowerBadge:nD,getActiveAutoCompletes:sg,getLastFilterChoices:gAe,getLastSortChoice:mAe,getQuestAutoCompleteProgress:EAe,getQuestEmbedProgress:q8e,getQuestButtonProps:MZ,getQuestPanelOverride:H8e,getQuestPanelPercentComplete:bZ,getQuestPanelSubtitleText:NAe,getQuestTileClasses:dD,getQuestTileStyle:pD,getSettingsModalOpen:rLe,hasEnabledAutoCompleteQuestTypes:z5,normalizeQuestName:qd,openDevToolsWindow:CZ,processQuestForAutoComplete:dg,rerenderQuests:Lr,setHeartbeatStackTracePatchSucceeded:TAe,setLastFilterChoices:hAe,setLastSortChoice:fAe,setVideoProgressStackTracePatchSucceeded:CAe,shouldForceQuestPanelVisible:j8e,shouldPreloadQuestAssets:pAe,sortQuests:dAe,stopQuestAutoComplete:pg,useQuestRerender:Q8e,patches:[{find:",NodeFilter.SHOW_ELEMENT,{acceptNode:function(",replacement:{match:/\.focus\(\)/g,replace:".focus({preventScroll:$self.getSettingsModalOpen()?!0:undefined})"}},{find:'="DOWNLOAD_APPS";function',replacement:{match:/(?=\i:\(\)=>\i.{0,30000}?asContainer:!\i.{0,50};let (\i)=\i.forwardRef\(function)/,replace:"GuildlessServerListItemComponent:()=>$1,"}},{find:"GLOBAL_DISCOVERY),",predicate:()=>!De().disableQuestsEverything&&wR(De().questButtonDisplay,1,!0),replacement:{match:/(pathname:(\i)}.{0,400}?return )/,replace:"$1$self.disguiseHomeButton($2)?false:"}},{find:'("ActivityStatus"),',predicate:()=>De().disableQuestsEverything||De().disableMembersListPromo,replacement:{match:/,hasQuest:(?=\i=!1)/,replace:",questifyInvalid1:"}},{find:"`application-stream-",predicate:()=>De().disableQuestsEverything||De().disableFriendsListPromo,replacement:[{match:/(?<=let{party:\i,onChannelContextMenu:\i,)quest:(\i)/,replace:"questifyInvalid2:$1=null"}]},{find:"GLOBAL_DISCOVERY_SIDEBAR},",predicate:()=>De().disableQuestsEverything||De().disableRelocationNotices,replacement:[{match:/(GLOBAL_DISCOVERY_TABS).map/,replace:'$1.filter(tab=>tab!=="quests").map'}]},{find:'.QUEST_HOME)},"quests")',predicate:()=>De().disableQuestsEverything,replacement:[{match:/(?<="family-center"\)(?:&&undefined)?:null,)/,replace:"null&&"}]},{find:"QUEST_HOME)},[]),",predicate:()=>!De().disableQuestsEverything&&De().disableSponsoredBanner,replacement:{match:/(?<=,{questHomeHero:(\i),isLoading:(\i),confirmedEmpty:(\i)}=.{0,300}?ORBS_BALANCE_MENU}\)},\[\]\);)/,replace:"$1=null;$2=false;$3=true;"}},{find:".MODAL]:26",group:!0,predicate:()=>!De().disableQuestsEverything&&De().disableOrbsAndQuestsBadges,replacement:[{match:/(,\{badges:\i)(?=,displayProfile:\i)/,replace:'$1.filter(badge=>!["quest_completed","orb_profile_badge"].includes(badge.id))'}]},{find:'collapsed-with-rewards":"collapsed-without-rewards',predicate:()=>De().disableAccountPanelPromo||!De().disableAccountPanelQuestProgress,replacement:{match:/(?<=function\(\){)(let (\i)=\(0,\i.\i\)\(\);)/,replace:"void $self.useQuestRerender();$1$2=$self.getQuestPanelOverride($2);"}},{find:'type:"QUESTS_FETCH_CURRENT_QUESTS_BEGIN"',group:!0,predicate:()=>De().disableQuestsEverything,replacement:[{match:/(?<=if\(\i.\i.isFetchingCurrentQuests)/,replace:"||true"},{match:/(?=let \i=Date.now\(\);\i.recordQuestRequestAttempt.{0,50}QUESTS_FETCH_QUEST_TO_DELIVER_BEGIN)/,replace:"return;"}]},{find:",{progressTextAnimation:",predicate:()=>!De().disableQuestsEverything,replacement:{match:/(let{percentComplete:.{0,115}?children:\i,useAltStyle:\i=!1}=)(\i)/,replace:"const questifyProgress=$self.getQuestPanelPercentComplete({...$2,quest:$2.children?.props?.quest});$1Object.assign({},$2,questifyProgress??{})"}},{find:'"progress-title"',predicate:()=>!De().disableQuestsEverything,replacement:{match:/(?<={quest:(\i).{0,250}?return.{0,150}?,percentComplete:\i.{0,280}?"progress-title",children.{0,115}?children:)(\i.{0,50}"progress-subtitle",isTextTransition:!0,children.{0,115}?children:)/,replace:"$self.normalizeQuestName($1)??$2$self.getQuestPanelSubtitleText($1)??"}},{find:'("BalanceCounter")',predicate:()=>!De().disableQuestsEverything,replacement:[{match:/(`\${(\i).toFixed\(0\)}`.length)/,replace:"$1+($2>=1e6?0.8:$2>=1e3?0.4:0)"},{match:/(?<=children:\i.to\(\i=>`\${\i).toFixed\(0\)/,replace:".toLocaleString(undefined,{maximumFractionDigits:0})"}]},{find:"NetworkActionNames.QUEST_VIDEO_PROGRESS,",group:!0,predicate:()=>!De().disableQuestsEverything&&z5(),replacement:[{match:/(async function \i\(\i,\i\)\{await \i\.\i\.post\(\{url:\i\.\i\.QUESTS_VIDEO_PROGRESS.{0,250}?stack_trace:)Error\(\)\.stack\?\?""/,replace:'$self.setVideoProgressStackTracePatchSucceeded();$1""'},{match:/(async function \i\(\i\)\{let\{questId:\i,streamKey:\i.{0,450}?stack_trace:)Error\(\)\.stack\?\?""/,replace:'$self.setHeartbeatStackTracePatchSucceeded();$1""'}]},{find:"[QV] | Pausing video | playerState:",predicate:()=>!De().disableQuestsEverything&&De().preventVideoQuestsPausing,replacement:{match:/(?<=setCaptionEnabled\),)({focused:)(\i)/,replace:"$2=true,$1questifyFocused"}},{find:",listenForHlsErrors:!1",predicate:()=>!De().disableQuestsEverything&&De().preventVideoQuestsPausing,replacement:{match:/(?<=pauseOnLostVisibility:)!\i/,replace:"false"}},{find:"QUEST_HOME)},[]),",group:!0,predicate:()=>!De().disableQuestsEverything,replacement:[{match:/(let \i,\i,\i,\i,\i=\i\.useRef\(null\),)/,replace:"$1questRerenderTrigger=$self.useQuestRerender(),"},{match:/(\i.\i.SUGGESTED)/,replace:"$self.getLastSortChoice()??$1"},{match:/(get\(\i\)\)\?\?)(\i,\[)(\i)(\]\),\i=\i.useCallback\((\i)=>{)(.{0,60}?useCallback\((\i)=>{)/,replace:"$1$self.getLastFilterChoices()??$2$3,questRerenderTrigger$4$self.setLastSortChoice($5);$6$self.setLastFilterChoices($7);$self.rerenderQuests();"},{match:/(?<=ALL,\i.useMemo\(\(\)=>\()({sortMethod:(\i),filters:(\i))/,replace:"$self.setLastSortChoice($2),$self.setLastFilterChoices($3),$1"}]},{find:"config.taskConfigV2.tasks).length)return",group:!0,predicate:()=>!De().disableQuestsEverything&&z5(),replacement:[{match:/(?<=,text:\i,icon:\i,iconPosition:\i,fullWidth:!0)(?=,"aria-disabled":\i\|\|void 0)/,replace:",...($self.getQuestButtonProps(arguments[0])??{})"},{match:/(case \i\.\i\.(?:ENROLLED|INCOMPLETE):return)(?=\(0,\i\.jsx\)\(\i,\{quest:(\i),taskType:\i\.type,size:(\i),)/g,replace:"$1 $self.enrolledIncompleteButton({quest:$2,size:$3})||"}]},{find:'collapsed-with-rewards":"collapsed-without-rewards',predicate:()=>!De().disableQuestsEverything&&z5(),replacement:{match:/(?<=SELECT&&!\i&&!\i,(\i)=null;)(return )(\i\?\i=\(0,\i.\i\)\(\i,{quest:(\i))/,replace:'const questifyButton=$self.enrolledIncompleteButton({quest:$4,size:"sm"});$2questifyButton?$1=questifyButton:$3'}},{find:"prevIsQuestAccepted:",predicate:()=>!De().disableQuestsEverything&&!De().disableAccountPanelQuestProgress,replacement:{match:/(?<=isLoading:\i}=\(0,\i\.\i\)\(\),\i=\i\.useContext\(\i\.\i\),\i=\i\|\|\i&&)(\i)/,replace:"($1||$self.shouldForceQuestPanelVisible(arguments[0].quest))"}},{find:"questNameHeadingId",group:!0,predicate:()=>!De().disableQuestsEverything,replacement:[{match:/(\i===\i\.\i\.ENROLLED&&)(?=\(0,\i\.\i\)\((\i)\))/,replace:"$1!$self.canAutoCompleteQuest($2)&&"},{match:/(\(\i===\i\.\i\.ENROLLED\|\|\i===\i\.\i\.INCOMPLETE\)&&)(?=\(0,\i\.\i\)\((\i)\))/,replace:"$1!$self.canAutoCompleteQuest($2)&&"},{match:/(\(\i===\i\.\i\.COMPLETED\|\|\i===\i\.\i\.CLAIMED\)&&)(?=\(0,\i\.\i\)\((\i)\))/,replace:"$1!$2.config.ctaConfig&&"},{match:/(?<=wrap:!1,children:\[)(\i)(?=&&\(0,\i\.jsx\)\(\i,\{quest:(\i))/,replace:"($2.config.ctaConfig||$1)"}]},{find:'STEP_2_CLICKED_INTERNAL,"quest_embed_card_footer',group:!0,predicate:()=>!De().disableQuestsEverything,replacement:[{match:/(?<=function \i\(\i\){)(?=let\{quest:\i,location:\i,questContentPosition:\i,sourceQuestContent:)/,replace:"void $self.useQuestRerender();"},{match:/(?<=\{completedRatio:\i,completedRatioDisplay:\i\}=)(\(0,\i\.\i\)\((\i)\))/,replace:"Object.assign({},$1,$self.getQuestEmbedProgress($2)??{})"},{match:/(?<=className:)(\i\(\)\(\i.\i,\i.\i\)(?=,onMouseEnter:\i))/,replace:"$self.getQuestTileClasses($1,arguments[0].quest),style:$self.getQuestTileStyle(arguments[0].quest)"}]},{find:"questNameHeadingId",group:!0,predicate:()=>!De().disableQuestsEverything,replacement:[{match:/(?=return\(0,\i\.\i\)\("article",\{id:)/,replace:"void $self.useQuestRerender();"},{match:/(?<=className:)(\i\(\)\(\i\.\i,\i\))(?=,onMouseEnter)/,replace:"$self.getQuestTileClasses($1,arguments[0].quest),style:$self.getQuestTileStyle(arguments[0].quest)"},{match:/(?<=showPlaceholder:)(!\i)(?=,width)/g,replace:"$self.shouldPreloadQuestAssets()?!1:$1"},{match:/(?<=onLoadComplete:\i,lazyLoad:)!0/g,replace:"$self.shouldPreloadQuestAssets()?!1:!0"},{match:/(?<=isVisibleInViewport:)(\i)(?=,sourceQuestContent:\i\}\))/g,replace:"$self.shouldPreloadQuestAssets()?true:$1"}]},{find:'SUGGESTED="suggested",',predicate:()=>!De().disableQuestsEverything,replacement:{match:/(?<=\(\((\i)=\{\}\))(?=\.SUGGESTED="suggested",)/,replace:'.QUESTIFY="questify",$1'}},{find:"has no rewards configured`",predicate:()=>!De().disableQuestsEverything,replacement:{match:/(?=case (\i\.\i)\.SUGGESTED)/,replace:'case $1.QUESTIFY:return"Questify";'}},{find:'CLAIMED="claimed",',group:!0,predicate:()=>!De().disableQuestsEverything,replacement:[{match:/,(\i)=new Map\((\i)\.map/,replace:';const questRerenderTrigger=$self.useQuestRerender();const questifySorted=$self.sortQuests($2,arguments[1]?.sortMethod!=="questify");let $1=new Map($2.map'},{match:/(?=if\(0===(\i)\.length\)return\[\];if\(\i\.current\.length>0)/,replace:'if(arguments[1]?.sortMethod==="questify"){$1=questifySorted;};'},{match:/(?<=if\()(?=\i\.current\.length>0&&\i\.current===)/,replace:'arguments[1]?.sortMethod!=="questify"&&'},{match:/(?<=\{sortMethod:(\i).{0,800}?return )((\i).sort)/,replace:'$1==="questify"?$3:$2'},{match:/(?=]\)\),\i=\(\i=\i.useMemo\(\(\)=>\i.filter)/,replace:",questRerenderTrigger,questifySorted"}]},{find:".ALL)}):(",group:!0,predicate:()=>!De().disableQuestsEverything,replacement:[{match:/(return \i&&0===\i.length.{0,150}?children:)\[\.\.\.(\i).{0,100}?claimedAt\?\?""\)\)/,replace:"const questifySorted=$self.sortQuests($2);$1questifySorted"}]},{find:"NOT_SHAREABLE}function",group:!0,predicate:()=>!De().disableQuestsEverything,replacement:{match:/(?<=return )(?=\i.sharePolicy!==\i.\i.NOT_SHAREABLE)/,replace:"true||"}},{find:".BADGE_NOTIFICATION_BACKGROUND.css,disableColor",group:!0,replacement:[{match:/(\(\i\){let{count:\i,)/,replace:"$1maxDigits,"},{match:/(children:\i\(\i)/,replace:"$1,maxDigits"},{match:/(?<=function \i\((\i))(\){return )(\i<1e3.{0,60}?k\+`)/,replace:",maxDigits$2maxDigits===undefined?($3):$self.formatLowerBadge($1,maxDigits)[0]"}]}],flux:{CHANNEL_SELECT(){Ste()},QUESTS_FETCH_CURRENT_QUESTS_SUCCESS(e){yR(!0),Qt.log("QUESTS_FETCH_CURRENT_QUESTS_SUCCESS",e),Eu(e.quests),XLe()},QUESTS_ENROLL_SUCCESS(e){Qt.log("QUESTS_ENROLL_SUCCESS",e),Eu()},QUESTS_CLAIM_REWARD_SUCCESS(e){Qt.log("QUESTS_CLAIM_REWARD_SUCCESS",e),Eu()},QUESTS_USER_STATUS_UPDATE(e){Qt.log("QUESTS_USER_STATUS_UPDATE",e);let t=ry(e).userStatus,o=!!t?.claimedAt,r=t?.completedAt?Date.now()-new Date(t.completedAt).getTime()<=5e3:!1;Eu(),r&&!o&&!bte.has(t.questId)&&(bte.add(t.questId),De().notifyOnQuestComplete&&aAe(kn.getQuest(t.questId)),De().questCompletedAlertSound&&ii(De().questCompletedAlertSound,{volume:Math.max(0,Math.min(100,De().questCompletedAlertVolume))}))},USER_SETTINGS_MODAL_OPEN(){Db(!0)},USER_SETTINGS_MODAL_CLOSE(){Db(!1),Pb()},LOGIN_SUCCESS(){!vte||De().disableQuestsEverything||(vte=!1,yR(!1),yte=!1,YLe("LOGIN_SUCCESS"))},LOGOUT(e){if(e.isSwitchingAccount)vte=!0;else return;yR(!1),JLe("LOGOUT")},RUNNING_GAMES_CHANGE(e){zAe(e.games.map(t=>t.id))}},contextMenus:{"quests-entry":vLe},renderQuestifyButton:H.wrap(hLe,{noop:!0}),start(){!Bb&&Wn.plugins.Questify?.enabled&&lLe(!0),aLe(xte),Bb&&jl(0,this.renderQuestifyButton),of.then(()=>{AR(),De().disableQuestsEverything?ll(0,this.renderQuestifyButton):YLe("PLUGIN_START")})},stop(){let e=Me.plugins.Questify?.enabled;sLe(),ll(0,this.renderQuestifyButton),JLe("PLUGIN_STOP",e),e||O5()}})});async function aOe(){let e=[];zu.store.includeLocal&&(await rOe.themes.getThemesList()).forEach(({fileName:r})=>{!r.endsWith(".css")||r==="source.theme.css"||e.push({name:Me.themeNames?.[r]??r.replace(/\.css$/,""),id:r,type:"local"})}),zu.store.includeOnline&&Me.themeLinks&&Me.themeLinks.forEach(o=>{let r=o.replace(/^@(?:light|dark)\s+/,""),n=Me.themeNames?.[r]??r.split("/").pop()?.replace(/\.css$/,"")??r;e.push({name:n,id:o,type:"online"})});let{sortOrder:t}=zu.store;return t==="alphabetical"?e.sort((o,r)=>o.name.localeCompare(r.name,void 0,{sensitivity:"base"})):t==="reverse"&&e.sort((o,r)=>r.name.localeCompare(o.name,void 0,{sensitivity:"base"})),e}function VLe(e){ji.length&&($c=e==="next"?($c+1)%ji.length:($c-1+ji.length)%ji.length,DSt(ji[$c]))}function DSt(e){let t=e.type==="local";Me.enabledThemes=t?[e.id]:[],Me.enabledThemeLinks=t?[]:[e.id]}function wte(){let e=Me.enabledThemes?.[0],t=Me.enabledThemeLinks?.[0],o=ji.findIndex(r=>r.type==="local"&&r.id===e||r.type==="online"&&r.id===t);return~o?o:0}function eOe(e){if(!ji.length)return;let t=ji[$c],o=t.type==="local",r=o?Me.enabledThemes:Me.enabledThemeLinks,n=r.includes(t.id);e!==n&&(LR=!0,o?Me.enabledThemes=e?[...r,t.id]:r.filter(a=>a!==t.id):Me.enabledThemeLinks=e?[...r,t.id]:r.filter(a=>a!==t.id))}async function PSt(){await Lb(!0),ne(`Reloaded ${ji.length} themes`,D.Type.SUCCESS)}async function MSt(){if(!zu.store.autoRefresh||!zu.store.includeLocal)return;let t=(await rOe.themes.getThemesList()).filter(o=>o.fileName.endsWith(".css")&&o.fileName!=="source.theme.css").length;if(Rb&&t!==Rb){let o=t-Rb;if(await Lb(),zu.store.showNotifications){let r=o>0?"Added":"Removed",n=Math.abs(o);ne(`${r} ${n} local theme${n>1?"s":""}`,D.Type.SUCCESS)}}Rb=t}function tOe(e){if(!NSt(e)||!e.shiftKey)return;if(e.altKey){e.preventDefault(),PSt();return}let o={ArrowRight:()=>VLe("next"),ArrowLeft:()=>VLe("prev"),ArrowUp:()=>eOe(!0),ArrowDown:()=>eOe(!1)}[e.key];o&&(e.preventDefault(),o())}var rOe,ji,$c,BR,Rb,LR,RR,Lb,iOe,zu,NSt,oOe,nOe,OR,sOe=h(()=>{"use strict";d();j();We();Je();os();O();R();C();({VencordNative:rOe}=window),ji=[],$c=0,BR=null,Rb=0,LR=!1,RR=()=>{if(LR)return LR=!1;$c=wte()},Lb=async(e=!1)=>{let t=ji[$c],o=ji.length;if(ji=await aOe(),$c=wte(),t&&ji[$c]?.id!==t.id){let r=ji.findIndex(n=>n.id===t.id&&n.type===t.type);~r&&($c=r)}if(!e&&ji.length!==o){let r=ji.length-o,n=r>0?"Added":"Removed",a=Math.abs(r);ne(`${n} ${a} theme${a>1?"s":""}`,D.Type.SUCCESS)}},iOe=Jo(()=>Lb(),500),zu=M({includeLocal:{type:3,description:"Include local themes",default:!0,onChange:Lb},includeOnline:{type:3,description:"Include online themes",default:!0,onChange:Lb},sortOrder:{type:4,description:"Sort method",options:[{label:"A-Z",value:"alphabetical",default:!0},{label:"Z-A",value:"reverse"},{label:"Recent",value:"recent"}],onChange:Lb},autoRefresh:{type:3,description:"Auto-refresh theme list when changes are detected",default:!0},showNotifications:{type:3,description:"Show notifications when themes are added/removed",default:!0}});NSt=e=>Go?e.metaKey:e.ctrlKey;oOe=()=>zu.store.autoRefresh&&iOe(),nOe=()=>zu.store.autoRefresh&&iOe(),OR=S({name:"QuickThemeSwitcher",description:"Quickly switch between themes using keyboard shortcuts.",tags:["Appearance","Utility"],authors:[b.prism],settings:zu,startAt:"DOMContentLoaded",settingsAboutComponent:()=>i(f,null,i(Ot,null,"Bindings"),i(U,null,"Use Ctrl/Cmd+Shift+Arrows to navigate (Left/Right: cycle themes, Up: enable, Down: disable).",i("br",null),"Press Ctrl/Cmd+Shift+Alt to reload the theme list.")),async start(){ji=await aOe(),$c=wte(),Rb=ji.filter(e=>e.type==="local").length,document.addEventListener("keydown",tOe),to.addChangeListener("themeLinks",oOe),to.addChangeListener("themeNames",nOe),to.addChangeListener("enabledThemes",RR),to.addChangeListener("enabledThemeLinks",RR),zu.store.autoRefresh&&zu.store.includeLocal&&(BR=setInterval(MSt,2e3))},stop(){document.removeEventListener("keydown",tOe),to.removeChangeListener("themeLinks",oOe),to.removeChangeListener("themeNames",nOe),to.removeChangeListener("enabledThemes",RR),to.removeChangeListener("enabledThemeLinks",RR),BR&&(clearInterval(BR),BR=null),ji=[],$c=0,Rb=0,LR=!1}})});function Ate(){return i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},i("path",{d:"M21 3C21.5523 3 22 3.44772 22 4V18C22 18.5523 21.5523 19 21 19H6.455L2 22.5V4C2 3.44772 2.44772 3 3 3H21ZM20 5H4V18.385L5.76333 17H20V5ZM10.5153 7.4116L10.9616 8.1004C9.29402 9.0027 9.32317 10.4519 9.32317 10.7645C9.47827 10.7431 9.64107 10.7403 9.80236 10.7553C10.7045 10.8389 11.4156 11.5795 11.4156 12.5C11.4156 13.4665 10.6321 14.25 9.66558 14.25C9.12905 14.25 8.61598 14.0048 8.29171 13.6605C7.77658 13.1137 7.5 12.5 7.5 11.5052C7.5 9.75543 8.72825 8.18684 10.5153 7.4116ZM15.5153 7.4116L15.9616 8.1004C14.294 9.0027 14.3232 10.4519 14.3232 10.7645C14.4783 10.7431 14.6411 10.7403 14.8024 10.7553C15.7045 10.8389 16.4156 11.5795 16.4156 12.5C16.4156 13.4665 15.6321 14.25 14.6656 14.25C14.1291 14.25 13.616 14.0048 13.2917 13.6605C12.7766 13.1137 12.5 12.5 12.5 11.5052C12.5 9.75543 13.7283 8.18684 15.5153 7.4116Z"}))}var lOe=h(()=>{"use strict";d()});var oc,ms,Gc,kte=h(()=>{"use strict";d();oc={width:1200,height:600,quoteAreaWidth:520,quoteAreaX:640,maxContentHeight:480},ms={initial:42,minimum:18,decrement:2,lineHeightMultiplier:1.25,authorMultiplier:.6,usernameMultiplier:.45,authorMinimum:22,usernameMinimum:18,watermark:18},Gc={authorTop:60,username:10,gradientStart:200,gradientWidth:400,watermarkPadding:20}});function LSt(e){return new Promise((t,o)=>{e.toBlob(r=>{if(!r)return o(new Error("Failed to create Blob"));t(r)},"image/png")})}async function dOe(e){let t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch image: ${t.status} ${t.statusText}`);return await t.blob()}function OSt(e){let t=e,o=t.match(/<@!?\d+>/g);return o&&o.forEach(r=>{let n=r.replace(/[<@!>]/g,""),a=L.getUser(n);a?.username&&(t=t.replace(r,`@${a.username}`))}),t}function Tte(e){let t=e.split(" ");return(t.length>6?t.slice(0,6).join(" "):t.join(" ")).slice(0,10)}function Ite(e){return e?"gif":"png"}function pOe(e){return e?"image/gif":"image/png"}async function Ete(){return kA||(kA=(async()=>{if(!document.getElementById("quoter-font-style")){let e=document.createElement("style");e.id="quoter-font-style",e.textContent=` @import url('https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c:wght@300&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Momo+Signature&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Merriweather:wght@300;400;700&display=swap'); `,document.head.appendChild(e),await new Promise(t=>setTimeout(t,300))}})(),kA)}function mOe(){kA=null}async function FSt(e){let t=(0,Ob.GIFEncoder)(),o=e.getContext("2d");if(!o)throw new Error("Failed to get 2D rendering context");let{data:r}=o.getImageData(0,0,e.width,e.height),n=(0,Ob.quantize)(r,256),a=(0,Ob.applyPalette)(r,n);return t.writeFrame(a,e.width,e.height,{transparent:!1,palette:n}),t.finish(),new Blob([new Uint8Array(t.bytesView())],{type:"image/gif"})}async function _St(e){let t=await dOe(e),o=new Image,r=URL.createObjectURL(t);try{return await new Promise((n,a)=>{o.onload=()=>n(),o.onerror=()=>a(new Error("Failed to load avatar image")),o.src=r}),o}finally{URL.revokeObjectURL(r)}}function USt(e,t){e.globalCompositeOperation="saturation",e.fillStyle="#fff",e.fillRect(0,0,t.width,t.height),e.globalCompositeOperation="source-over"}function zSt(e,t){let o=e.createLinearGradient(t.height-Gc.gradientWidth,0,t.height,0);o.addColorStop(0,"rgba(0, 0, 0, 0)"),o.addColorStop(1,"rgba(0, 0, 0, 1)"),e.fillStyle=o,e.fillRect(t.height-Gc.gradientWidth,0,Gc.gradientWidth,t.height)}function $St(e){let t=[];return{text:e.replace(BSt,(r,n,a)=>(t.push({id:a,name:n,animated:r.startsWith("{t.onload=()=>r(),t.onerror=()=>n(new Error("Failed to load image")),t.src=o}),t}finally{URL.revokeObjectURL(o)}}async function HSt(e){let t=e.animated?[!0,!1]:[!1];for(let o of t)try{let r=await dOe(at.getEmojiURL({id:e.id,animated:o,size:96}));return await GSt(r)}catch{continue}return null}async function jSt(e){if(!e.length)return new Map;let t=new Map;return e.forEach(r=>{let n=`${r.id}:${r.animated?"a":"s"}`;t.has(n)||t.set(n,r)}),(await Promise.all(Array.from(t.entries()).map(async([r,n])=>[r,await HSt(n)]))).reduce((r,[n,a])=>(a&&r.set(n,a),r),new Map)}function FR(e,t,o){let r=o*uOe,n=0,a=0;for(let s=0;s{if(FR(e,c,o)>n){l.length&&(s.push(l.join(" ")),l=[]);let u="";for(let p of c){let m=u+p;FR(e,m,o)>n?(u&&s.push(u),u=p):u=m}u&&s.push(u)}else{let u=[...l,c].join(" ");FR(e,u,o)>n&&l.length?(s.push(l.join(" ")),l=[c]):l.push(c)}}),l.length&&s.push(l.join(" ")),s}function qSt(e,t,o,r){let n=ms.initial;for(;n>=ms.minimum;){let p=cOe(e,t,n,o,r.quoteAreaWidth),m=n*ms.lineHeightMultiplier,g=Math.max(ms.authorMinimum,n*ms.authorMultiplier),x=Math.max(ms.usernameMinimum,n*ms.usernameMultiplier),v=p.length*m+Gc.authorTop+g+Gc.username+x;if(v<=r.maxContentHeight)return{fontSize:n,lineHeight:m,authorFontSize:g,usernameFontSize:x,lines:p,totalHeight:v};n-=ms.decrement}let a=cOe(e,t,ms.minimum,o,r.quoteAreaWidth),s=ms.minimum*ms.lineHeightMultiplier,l=ms.authorMinimum,c=ms.usernameMinimum,u=a.length*s+Gc.authorTop+l+Gc.username+c;return{fontSize:ms.minimum,lineHeight:s,authorFontSize:l,usernameFontSize:c,lines:a,totalHeight:u}}function WSt(e,t,o,r,n,a){e.fillStyle="#fff",e.font=`300 ${t.fontSize}px '${o}', sans-serif`;let s=t.fontSize*uOe,l=(r.height-t.totalHeight)/2,c=0;return t.lines.forEach(u=>{let p=(r.quoteAreaWidth-FR(e,u,t.fontSize))/2,m=r.quoteAreaX+p,g=0;l+=t.lineHeight;for(let v=0;v{"use strict";d();C();Ob=Xu(cv());kte();BSt=//g,Cte="\uFFFC",uOe=1.15,RSt=.85;kA=null});function ZSt({message:e,...t}){let[o,r]=T(Im.store.grayscale),[n,a]=T(Im.store.showWatermark),[s,l]=T(Im.store.saveAsGif),[c,u]=T(Im.store.watermark),[p,m]=T(null),[g,x]=T(null),{quoteFont:v}=Im.store;G(()=>{Im.store.grayscale=o,Im.store.showWatermark=n,Im.store.saveAsGif=s},[o,n,s]);let y=async()=>{let w=await fOe({avatarUrl:at.getUserAvatarURL(e.author,!0,512),quote:e.content,grayScale:o,author:e.author,watermark:c,showWatermark:n,saveAsGif:s,quoteFont:v});m(w),g&&URL.revokeObjectURL(g);let I=URL.createObjectURL(w);x(I),document.getElementById("quoterPreview")?.setAttribute("src",I)};return G(()=>{y()},[o,n,s,c,v]),G(()=>()=>{g&&URL.revokeObjectURL(g)},[g]),i(be,{...t,size:"md",title:"Catch Them In 4K.",actions:[{text:"Export",variant:"primary",onClick:()=>{if(!p)return;let w=Tte(e.content),I=Ite(s),E=URL.createObjectURL(p),N=document.createElement("a");N.href=E,N.download=`${w} - ${e.author.username}.${I}`,N.click(),N.remove(),URL.revokeObjectURL(E)}},{text:"Send",variant:"primary",onClick:()=>{if(!p)return;let w=zo();if(!w)return;let I=Tte(e.content),E=Ite(s),N=pOe(s),B=new File([p],`${I} - ${e.author.username}.${E}`,{type:N});Mr.promptToUpload([B],w,0),t.onClose?.()}}]},i("img",{alt:"Quote preview",src:"",id:"quoterPreview",style:{borderRadius:"20px",width:"100%",marginBottom:"20px"}}),i(mo,{title:"Grayscale",value:o,onChange:r}),i(mo,{title:"Save as GIF",value:s,onChange:l,description:"Saves/Sends the image as a GIF instead of a PNG"}),i(mo,{title:"Show Watermark",value:n,onChange:a,hideBorder:n}),n&&i("div",{style:{marginTop:"8px",marginBottom:"20px"}},i(Te,{value:c,onChange:u,placeholder:"Watermark text (max 32 characters)",maxLength:32})))}var Im,_R,hOe=h(()=>{"use strict";d();j();hi();O();_e();R();C();lOe();kte();gOe();Im=M({quoteFont:{type:4,description:"Font for quote text (author/username always use M PLUS Rounded 1c)",options:[{label:"M PLUS Rounded 1c",value:"M PLUS Rounded 1c",default:!0},{label:"Open Sans",value:"Open Sans"},{label:"Momo Signature",value:"Momo Signature"},{label:"Lora",value:"Lora"},{label:"Merriweather",value:"Merriweather"}]},watermark:{type:0,description:"Custom watermark text (max 32 characters)",default:"Made with Equicord"},grayscale:{type:3,description:"Enable grayscale by default",default:!0,hidden:!0},showWatermark:{type:3,description:"Show watermark by default",default:!1,hidden:!0},saveAsGif:{type:3,description:"Save as GIF by default",default:!1,hidden:!0}}),_R=S({name:"Quoter",description:"Adds the ability to create an inspirational quote image from a message.",tags:["Chat"],authors:[b.Samwich,b.thororen,F.neoarz,b.prism],settings:Im,async start(){await Ete()},stop(){let e=document.getElementById("quoter-font-style");e&&e.remove(),mOe()},contextMenus:{message:(e,{message:t})=>{if(!t.content)return;let o=i(P.MenuItem,{id:"vc-quote",label:"Quote",icon:Ate,leadingAccessory:{type:"icon",icon:Ate},action:()=>ce(r=>i(ZSt,{message:t,...r}))});e.push(o)}}})});var xOe=h(()=>{});function owt(){let[e,t]=T(!1),{keybind:o,keybindEnabled:r}=qi.use();return G(()=>{if(Bte=e,!e)return;let n=s=>{s.preventDefault(),s.stopPropagation(),!UR(s.key)&&(qi.store.keybind=rwt(s),t(!1))},a=()=>t(!1);return document.addEventListener("keydown",n,!0),window.addEventListener("blur",a),()=>{Bte=!1,document.removeEventListener("keydown",n,!0),window.removeEventListener("blur",a)}},[e]),i("div",{className:Dte("record")},i("div",{className:Dte("keybind")},"Keybind"),i(Mi,{checked:r,onChange:n=>{qi.store.keybindEnabled=n}}),r&&i("div",{className:Dte("recording")},i(de,{type:"button",variant:"secondary",onClick:()=>t(!0),disabled:e},e?"Recording...":nwt(o)),i(de,{type:"button",variant:"secondary",onClick:()=>{qi.store.keybind=Ote},disabled:e},"Reset")))}function nwt(e){let t=Array.isArray(e)?e.join("+"):e;return Go?t.replace(/Control/gi,"^").replace(/Meta|Command|Cmd/gi,"\u2318").replace(/Alt|Option/gi,"\u2325").replace(/Shift/gi,"\u21E7"):t}function rwt(e){let t=[];return lwt(e,t),t.push(wOe(e.key)),t}function SOe(){let e=qi.store.keybind;return Array.isArray(e)&&e.some(t=>!UR(t))?e:Ote}function iwt(e){let t=SOe().map(a=>a.toLowerCase()),o=wOe(e.key).toLowerCase(),r=uwt(e.code),n=!1;if(!awt(e,t))return!1;for(let a of t)if(!UR(a)){if(o!==a&&r!==a)return!1;n=!0}return n}function UR(e){return VSt.has(e.toLowerCase())}function awt(e,t){let o=new Set(t.map(swt).filter(n=>n!==null)),r=new Set;return e.ctrlKey&&r.add("control"),e.shiftKey&&r.add("shift"),e.altKey&&r.add("alt"),e.metaKey&&r.add("meta"),o.size===r.size&&[...o].every(n=>r.has(n))}function swt(e){switch(e){case"mod":return Go?"meta":"control";case"control":case"ctrl":return"control";case"shift":return"shift";case"alt":case"option":return"alt";case"meta":case"cmd":case"command":return"meta";default:return null}}function lwt(e,t){e.metaKey&&t.push("Meta"),e.ctrlKey&&t.push("Control"),e.shiftKey&&t.push("Shift"),e.altKey&&t.push("Alt")}function cwt(){return SOe().some(UR)}function wOe(e){return e===" "?"Space":e==="Esc"?"Escape":e.length===1?e.toUpperCase():e}function uwt(e){return e.toLowerCase().replace(/^key/,"").replace(/^digit/,"").replace(/^numpad/,"")}function dwt(e){return e instanceof HTMLElement&&(e.isContentEditable||["INPUT","TEXTAREA","SELECT"].includes(e.tagName))}function vOe(e,t){D.show({message:e,type:t,id:D.genId(),options:{position:D.Position.BOTTOM}})}function AOe({className:e}){return i("svg",{className:e,width:"18",height:"18",viewBox:"0 0 24 24"},i("g",{fill:"currentColor"},i("path",{d:"M19,9H14a5.006,5.006,0,0,0-5,5v5a5.006,5.006,0,0,0,5,5h5a5.006,5.006,0,0,0,5-5V14A5.006,5.006,0,0,0,19,9Zm-5,6a1,1,0,1,1,1-1A1,1,0,0,1,14,15Zm5,5a1,1,0,1,1,1-1A1,1,0,0,1,19,20ZM15.6,5,12.069,1.462A5.006,5.006,0,0,0,5,1.462L1.462,5a5.006,5.006,0,0,0,0,7.071L5,15.6a4.961,4.961,0,0,0,2,1.223V14a7.008,7.008,0,0,1,7-7h2.827A4.961,4.961,0,0,0,15.6,5ZM5,10A1,1,0,1,1,6,9,1,1,0,0,1,5,10ZM9,6a1,1,0,1,1,1-1A1,1,0,0,1,9,6Z"})))}function Fte(){return L.getCurrentUser()?.id??null}function kOe(e=Fte()){return e?Et.getVoiceStateForUser(e)?.channelId??Fe.getVoiceChannelId()??null:null}function pwt(e=qi.store){return e.Servers.split("/").map(t=>t.trim()).filter(t=>t&&t!==yOe)}function Pte(e){qi.store.Servers=e.length?`/${e.join("/")}`:yOe}function COe(e=qi.store){return e.Servers===""?null:pwt(e)}function TOe(){return Object.values($e.getGuilds()).filter(e=>e!=null&&typeof e.id=="string").sort((e,t)=>e.name.localeCompare(t.name))}function mwt(){return TOe().flatMap(({id:e})=>Object.entries(Et.getVoiceStates(e)??{}))}function Rte(e=qi.store){return bOe.some(({key:t})=>e[t])}function Mte(e,t,o){return e==="=="?t===o:e===">"?to}function IOe(e){return e.type===13||e.isGuildStageVoice?.()===!0}function fwt(e){let t=e.getGuildId();return t?$e.getGuild(t)?.afkChannelId===e.id:!1}function gwt(e,t=qi.store){return!(t.mute&&!e.selfMute||t.deafen&&!e.selfDeaf||t.video&&!e.selfVideo||t.stream&&!e.selfStream)}function EOe(e,t=qi.store){let o=W.getChannel(e);if(!o)return!1;let r=COe(t),n=o.getGuildId();if(r!=null&&(!n||!r.includes(n))||t.avoidStages&&IOe(o)||t.avoidAfk&&fwt(o)||!ht.can(ct.CONNECT,o))return!1;let a=Fte(),s=Et.getVoiceStatesForChannel(e),l=Object.keys(s??{}).length;return!(o.userLimit>0&&l>=o.userLimit||a&&s&&Object.prototype.hasOwnProperty.call(s,a))}function hwt(e,t=qi.store){let o=W.getChannel(e);if(!o)return!1;let r=Et.getVoiceStatesForChannel(e),n=Object.keys(r??{}).length,a=o.userLimit||99,s=a-n;if(!Mte(t.spacesLeftOperation,s,t.spacesLeft)||!Mte(t.UserAmountOperation,n,t.UserAmount)||!Mte(t.vcLimitOperation,a,t.vcLimit))return!1;if(!Rte(t)||!r)return!0;let c=Object.values(r).some(u=>gwt(u,t));return!(t.includeStates&&!c||t.avoidStates&&c)}function xwt(e=qi.store){let t=new Set;for(let[,o]of mwt()){let{channelId:r}=o;!r||t.has(r)||EOe(r,e)&&hwt(r,e)&&t.add(r)}return[...t]}function vwt(){let e=new Set;for(let t of qe.getFriendIDs()){let o=Et.getVoiceStateForUser(t)?.channelId;o!=null&&EOe(o)&&e.add(o)}return e}function ywt(e=qi.store){let t=xwt(e),o=e.prioritizeFriends?vwt():null,r=e.prioritizeFriends?t.filter(a=>o?.has(a)):[],n=r.length?r:t;return n[Math.floor(Math.random()*n.length)]??null}async function bwt(){XSt()||Q.dispatch({type:"MEDIA_ENGINE_SET_VIDEO_ENABLED",enabled:!0})}async function Swt(e){if(IOe(e)||!ht.can(ct.STREAM,e))return;let t=Fe.getVoiceChannelId();if(!t)return;let r=(await JSt($o.getMediaEngine(),["screen"],null))?.[0];r&&YSt(e.guild_id??null,t,{pid:null,sourceId:r.id,sourceName:r.name,audioSourceId:null,sound:!0,previewDisabled:!1})}function wwt(e,t){let o=0,r=setInterval(()=>{if(o++,kOe()!==e){if(o<40)return;clearInterval(r);return}clearInterval(r);for(let n of t)n()},100)}async function Lte(){let e=ywt();if(!e){vOe("Failed to find a voice channel.",D.Type.MESSAGE);return}let t=W.getChannel(e);if(!t){vOe("Voice channel is unavailable.",D.Type.FAILURE);return}let{store:o}=qi;S1.selectVoiceChannel(e),o.autoNavigate&&Li.transitionToChannel(e);let r=[];o.selfMute&&!$o.isSelfMute()&&r.push(()=>_n.toggleSelfMute()),o.selfDeafen&&!$o.isSelfDeaf()&&r.push(()=>_n.toggleSelfDeaf()),o.autoCamera&&r.push(bwt),o.autoStream&&r.push(()=>Swt(t)),r.length&&wwt(e,r)}function Awt({iconForeground:e,hideTooltips:t,nameplate:o}){return i(aw,{onClick:()=>{Lte()},onContextMenu:r=>rt.openContextMenu(r,()=>i(kwt,{onClose:rt.closeContextMenu})),role:"switch",tooltipText:t?void 0:"Random Voice",icon:i(AOe,{className:e}),plated:o!=null})}function kwt({onClose:e}){let[,t]=V.useReducer(g=>g+1,0),{store:o}=qi,r=TOe(),n=r.map(g=>g.id),a=COe(o)??n,s=(g,x)=>{o[g]=x,t()},l=g=>s(g,!o[g]),c=()=>{Pte(r.map(g=>g.id)),t()},u=()=>{Pte([]),t()},p=g=>{Pte(a.includes(g)?a.filter(x=>x!==g):[...a,g]),t()},m=g=>Jo(x=>{o[g]=Math.round(x),t()},50);return i(P.Menu,{navId:"random-voice",onClose:e,"aria-label":"Random Voice"},i(P.MenuItem,{id:"random-voice-servers",label:"Servers"},i(f,null,i(P.MenuCheckboxItem,{id:"random-voice-select-all-servers",label:"Select All",checked:a.length===n.length,disabled:a.length===n.length,action:c}),i(P.MenuCheckboxItem,{id:"random-voice-reset-servers",label:"Reset",checked:a.length===0,disabled:!a.length,action:u}),i(P.MenuSeparator,null),r.map(g=>i(P.MenuCheckboxItem,{key:g.id,id:`random-voice-server-${g.id}`,label:g.name,checked:a.includes(g.id),action:()=>p(g.id)})))),i(P.MenuItem,{id:"random-voice-state-filters",label:"State Filters"},i(f,null,bOe.map(({key:g,label:x})=>i(P.MenuCheckboxItem,{key:g,id:`random-voice-filter-${g}`,label:x,checked:o[g],action:()=>l(g)})),i(P.MenuSeparator,null),i(P.MenuCheckboxItem,{id:"random-voice-include-states",label:"Include Filters",checked:o.includeStates,disabled:o.avoidStates||!Rte(o),action:()=>l("includeStates")}),i(P.MenuCheckboxItem,{id:"random-voice-avoid-states",label:"Avoid Filters",checked:o.avoidStates,disabled:o.includeStates||!Rte(o),action:()=>l("avoidStates")}))),i(P.MenuSeparator,null),Nte({id:"users",label:"User Amount",sliderKey:"UserAmount",operationKey:"UserAmountOperation",sliderValue:o.UserAmount,operationValue:o.UserAmountOperation,onOperationChange:g=>s("UserAmountOperation",g),onSliderChange:m("UserAmount")}),i(P.MenuSeparator,null),Nte({id:"spaces-left",label:"Spaces Left",sliderKey:"spacesLeft",operationKey:"spacesLeftOperation",sliderValue:o.spacesLeft,operationValue:o.spacesLeftOperation,onOperationChange:g=>s("spacesLeftOperation",g),onSliderChange:m("spacesLeft")}),i(P.MenuSeparator,null),Nte({id:"voice-limit",label:"Voice Limit",sliderKey:"vcLimit",operationKey:"vcLimitOperation",sliderValue:o.vcLimit,operationValue:o.vcLimitOperation,onOperationChange:g=>s("vcLimitOperation",g),onSliderChange:m("vcLimit")}),i(P.MenuSeparator,null),i(P.MenuItem,{id:"random-voice-self-settings",label:"Join Settings"},i(f,null,twt.map(({key:g,label:x})=>i(P.MenuCheckboxItem,{key:g,id:`random-voice-setting-${g}`,label:x,checked:o[g],action:()=>l(g)})))))}function Nte({id:e,label:t,sliderKey:o,operationKey:r,sliderValue:n,operationValue:a,onOperationChange:s,onSliderChange:l}){return i(P.MenuGroup,{label:t.toUpperCase()},i(P.MenuControlItem,{id:`random-voice-slider-${o}`,label:t,control:(c,u)=>i(P.MenuSliderControl,{ref:u,...c,minValue:1,maxValue:15,value:n,onChange:l,renderValue:p=>`${Math.round(p)} user${Math.round(p)===1?"":"s"}`})}),i(P.MenuItem,{id:`random-voice-operation-${r}`,label:"Parameters"},i(f,null,ewt.map(c=>i(P.MenuRadioItem,{key:c.value,id:`random-voice-operation-${e}-${c.value}`,group:`random-voice-${e}`,label:c.label,checked:a===c.value,action:()=>s(c.value)})))))}var YSt,JSt,XSt,yOe,Ote,VSt,Bte,Dte,ewt,bOe,twt,qi,zR,DOe=h(()=>{"use strict";d();xOe();j();sw();Tt();Pe();rd();os();O();we();R();le();C();YSt=Oe('type:"STREAM_START"'),JSt=Oe("desktop sources"),{isVideoEnabled:XSt}=Ae("isVideoEnabled"),yOe="__NONE__",Ote=Go?["Meta","Shift","R"]:["Control","Shift","R"],VSt=new Set(["control","ctrl","shift","alt","option","meta","cmd","command","mod"]),Bte=!1,Dte=K("vc-random-voice-"),ewt=[{label:"More than",value:"<",default:!1},{label:"Less than",value:">",default:!1},{label:"Equal to",value:"==",default:!0}],bOe=[{key:"mute",label:"Muted"},{key:"deafen",label:"Deafened"},{key:"video",label:"Camera"},{key:"stream",label:"Stream"}],twt=[{key:"selfMute",label:"Auto Mute"},{key:"selfDeafen",label:"Auto Deafen"},{key:"autoCamera",label:"Auto Camera"},{key:"autoStream",label:"Auto Stream"},{key:"leaveEmpty",label:"Leave when Empty"},{key:"autoNavigate",label:"Auto Navigate"},{key:"prioritizeFriends",label:"Prioritize Friends"},{key:"avoidStages",label:"Avoid Stage"},{key:"avoidAfk",label:"Avoid AFK"}];qi=M({keybind:{type:6,default:Ote,component:H.wrap(owt)},keybindEnabled:{description:"Show the random voice keybind controls",type:3,default:!1,hidden:!0},UserAmountOperation:{description:"Select an operation for the amounts of users",type:4,options:[{label:"More than",value:"<",default:!0},{label:"Less than",value:">",default:!1},{label:"Equal to",value:"==",default:!1}]},UserAmount:{description:"Select amount of users",type:5,markers:zt(0,15,1),default:3,stickToMarkers:!0},spacesLeftOperation:{description:"Select an operation for the maximum amounts of users",type:4,options:[{label:"More than",value:"<",default:!0},{label:"Less than",value:">",default:!1},{label:"Equal to",value:"==",default:!1}]},spacesLeft:{description:"Select amount of max users",type:5,markers:zt(0,15,1),default:3,stickToMarkers:!0},vcLimitOperation:{description:"Select an operation for the voice-channel.",type:4,options:[{label:"More than",value:"<",default:!0},{label:"Less than",value:">",default:!1},{label:"Equal to",value:"==",default:!1}]},vcLimit:{description:"Select a voice-channel limit",type:5,markers:zt(1,15,1),default:5,stickToMarkers:!0},Servers:{description:"Servers that are included",type:0,default:""},autoNavigate:{type:3,description:"Automatically navigates to the voice-channel.",default:!1},autoCamera:{type:3,description:"Automatically turns on camera",default:!1},autoStream:{type:3,description:"Automatically turns on stream",default:!1},selfMute:{type:3,description:"Automatically mutes your mic when joining voice-channel.",default:!1},selfDeafen:{type:3,description:"Automatically deafems your mic when joining voice-channel.",default:!1},leaveEmpty:{type:3,description:"Finds a random-call, when the voice chat is empty.",default:!1},prioritizeFriends:{type:3,description:"Prefer channels with your friends in them when possible.",default:!1},avoidStages:{type:3,description:"Avoids joining stage voice-channels.",default:!1},avoidAfk:{type:3,description:"Avoids joining AFK voice-channels.",default:!1},video:{type:3,description:"Searches for users with their video on",default:!1},stream:{type:3,description:"Searches for users who are streaming",default:!1},mute:{type:3,description:"Searches for users who are muted",default:!1},deafen:{type:3,description:"Searches for users who are deafened",default:!1},includeStates:{type:3,description:"Option to include states",default:!1},avoidStates:{type:3,description:"Option to avoid states",default:!1}});zR=S({name:"RandomVoice",description:"Adds a button near mute to join a random voice channel.",dependencies:["UserAreaAPI"],tags:["Fun","Voice"],authors:[F.xijexo,F.omaw,b.thororen],settings:qi,userAreaButton:{icon:AOe,render:Awt},start(){window.addEventListener("keydown",this.onKeyDown,!0)},stop(){window.removeEventListener("keydown",this.onKeyDown,!0)},onKeyDown(e){Bte||qi.store.keybindEnabled&&(dwt(e.target)&&!cwt()||iwt(e)&&(e.preventDefault(),e.stopPropagation(),Lte()))},flux:{VOICE_STATE_UPDATES({voiceStates:e}){let t=Fte();if(!t||!qi.store.leaveEmpty)return;let o=kOe(t);if(!o||!e.some(l=>l.userId===t||l.channelId===o||l.oldChannelId===o)||e.some(l=>l.userId===t&&l.channelId===o&&l.oldChannelId!==o))return;let a=Et.getVoiceStatesForChannel(o);Object.values(a??{}).filter(l=>l.userId!==t).length||Lte()}}})});var POe=h(()=>{});function GR(e){if(!e)return!1;let t=W.getChannel(e);if(!t)return!1;try{return!!(t.isDM()||t.isGroupDM())}catch{return!1}}function Ute(e){Em=Em.filter(t=>t!==e),Em.unshift(e),Em.length>nc.store.amountOfUsers&&(Em.length=nc.store.amountOfUsers),Ct(zte,Em)}function BOe(e){let t=new Set,o=[];for(let r of e)if(!(!r||t.has(r))&&W.hasChannel(r)&&GR(r)&&(t.add(r),o.push(r),o.length>=nc.store.amountOfUsers))break;return o}function Cwt(){if(Dm)return;Dm=!0,$R=!0;let e=Fe.getChannelId();Cl=BOe([...GR(e)?[e]:[],...Em]),fs=0}function Twt(e){if(!Dm||Cl.length===0)return;let t=Cl.length;if(t<=1)return;fs=(fs+e+t)%t;let o=Cl[fs];if(!o||!W.hasChannel(o))return;let r=nc.store?.visualStyle;r==="overlay"?Dwt():r==="toast"&&Mwt()}function Iwt(){if(!Dm)return;if(Dm=!1,$R=!1,fs>=0&&fsi(Pwt,null)))}function Dwt(){nc.store.visualStyle==="overlay"&&Dm&&(Ewt(),_te?.())}function OOe(){TA&&(Lo(TA),TA=null)}function Pwt(){let[,e]=V.useState(0);V.useEffect(()=>(_te=()=>e(x=>x+1),()=>{_te=null}),[]);let t=nc.store.overlayMode,o=nc.store.overlayShowAvatars,r=Math.max(3,Math.min(7,nc.store.overlayRowLength)),n=t==="current"?1:r,a=t==="current"?[Cl[fs]]:Cl,s=1,l=0;t!=="current"&&(s=Math.ceil(a.length/n),l=Math.min(s-1,Math.floor((fs>=0?fs:0)/n)));let c=l*n,u=Math.min(c+n,a.length),m=a.slice(c,u).map(x=>{let{name:v,avatar:y}=LOe(x),A=x===Cl[fs];return i("div",{key:x,className:Zg("background"),style:{boxShadow:A?"0 0 0 2px var(--brand-500) inset, 0 4px 12px rgba(0,0,0,0.25)":"0 2px 8px rgba(0,0,0,0.15)"}},o&&y&&i("img",{alt:"",src:y,className:Zg("avatar")}),i("div",{className:Zg("name")},v))}),g=s>1?i("div",{className:Zg("page-indicator-container")},Array.from({length:s}).map((x,v)=>i("div",{key:v,className:Zg("page-indicator"),style:{background:v===l?"var(--brand-500)":"var(--interactive-muted)",opacity:v===l?1:.6}}))):null;return i("div",{className:Zg("overlay-container")},i("div",{className:Zg("cards-container")},i("div",{className:Zg("cards")},m),g))}function Mwt(){if(nc.store.visualStyle!=="toast")return;let e=Cl[fs];if(!e)return;let{name:t}=LOe(e);CA||(CA=D.genId()),D.show({id:CA,message:`Switching to: ${t}`,type:D.Type.MESSAGE,options:{position:D.Position.BOTTOM,duration:nc.store.toastDurationMs}})}var zte,Em,Dm,$R,Cl,fs,Zg,nc,CA,TA,_te,HR,FOe=h(()=>{"use strict";d();POe();Io();j();O();we();R();C();zte="RDMSwitch_history",Em=[],Dm=!1,$R=!1,Cl=[],fs=-1,Zg=K("vc-rdms-"),nc=M({visualStyle:{type:4,description:"Visual indicator style while cycling",options:[{label:"Overlay (Alt+Tab style)",value:"overlay",default:!0},{label:"Toast (status message)",value:"toast"},{label:"Off",value:"off"}]},overlayMode:{type:4,description:"Overlay content",options:[{label:"Row of recent",value:"row",default:!0},{label:"Current only",value:"current"}]},amountOfUsers:{type:5,description:"Number of users to show in overlay",markers:zt(10,50,10),stickToMarkers:!0,default:20},overlayRowLength:{type:5,description:"Number of recent DMs to show in row",markers:[3,4,5,6,7],default:5},overlayShowAvatars:{type:3,description:"Show avatars in overlay",default:!0},toastDurationMs:{type:5,description:"Toast hide delay (ms)",markers:[300,500,600,800,1e3,1500,2e3],default:600},clearRdms:{type:6,description:"Testing utility: Clear RDMS list",component:()=>i(ue,{color:ue.Colors.RED,onClick:async()=>{Em=[],Cl=[],fs=-1,await Ct(zte,[]),D.show({id:D.genId(),type:D.Type.SUCCESS,message:"Cleared RDMS history"})}},'"Clear RDMS History')}}),CA=null,TA=null,_te=null;HR=S({name:"RecentDMSwitcher",description:"Ctrl+Tab between most recently used DMs (Ctrl+Shift+Tab reverse)",tags:["Chat","Utility"],authors:[F.mmeta],settings:nc,flux:{GUILD_SELECT({guildId:e}){if(Dm&&e){let t=Cl[fs];t&&Li.transitionToChannel(t)}},async CHANNEL_SELECT({channelId:e}){$R||e&&GR(e)&&Ute(e)}},async start(){let e=await vt(zte);Em=Array.isArray(e)?BOe(e):[];let t=Fe.getChannelId();GR(t)&&Ute(t),document.addEventListener("keydown",MOe,!0),document.addEventListener("keyup",NOe,!0)},stop(){document.removeEventListener("keydown",MOe,!0),document.removeEventListener("keyup",NOe,!0),Dm=!1,$R=!1,Cl=[],fs=-1,CA=null,nc.store?.visualStyle==="overlay"&&OOe()}})});var jR,_Oe=h(()=>{"use strict";d();jR=class{events;constructor(){this.events={}}on(t,o){this.events[t]||(this.events[t]=[]),this.events[t].push(o)}emit(t,o){this.events[t]&&this.events[t].forEach(r=>{r(o)})}off(t,o){this.events[t]&&(this.events[t]=this.events[t].filter(r=>r!==o))}clear(){this.events={}}once(t,o){let r=n=>{o(n),this.off(t,r)};this.on(t,r)}}});function UOe(){Mt&&(Mt.addEventListener("mousemove",e=>{nt.prevX=nt.x,nt.prevY=nt.y;let t=Mt.getBoundingClientRect(),o=Mt.width/t.width,r=Mt.height/t.height;nt.x=(e.clientX-t.left)*o,nt.y=(e.clientY-t.top)*r,nt.dx=nt.x-nt.prevX,nt.dy=nt.y-nt.prevY,nt.event.emit("move",e)}),Mt.addEventListener("mousedown",e=>{nt.down=!0,nt.event.emit("down",e)}),Mt.addEventListener("mouseup",e=>{nt.down=!1,nt.event.emit("up",e)}),Mt.addEventListener("mouseleave",e=>{nt.down=!1,nt.event.emit("up",e)}))}var nt,Fb=h(()=>{"use strict";d();pp();_Oe();nt={x:0,y:0,down:!1,dx:0,dy:0,prevX:0,prevY:0,event:new jR}});function IA(e,t,o,r=Sn){r.beginPath(),r.arc(e,t,o,0,Math.PI*2),r.fill()}function EA(e,t,o,r,n=Sn){n.beginPath(),n.moveTo(e,t),n.lineTo(o,r),n.stroke()}function DA(e,t,o,r){return Math.sqrt((o-e)**2+(r-t)**2)}function zOe(e){return e.right-e.left}function $Oe(e){return e.bottom-e.top}async function GOe(e){return new Promise(t=>{let o=new Image;o.crossOrigin="anonymous",o.onload=()=>t(o),o.src=e})}function HOe(e){return new Promise(t=>{let o=document.createElement("canvas"),r=o.getContext("2d");o.width=e.width,o.height=e.height,r.drawImage(e,0,0),o.toBlob(n=>{n&&t(new File([n],"image.png",{type:"image/png"}))})})}var _b=h(()=>{"use strict";d();pp()});function PA(){Mt&&(ut.top=0,ut.left=0,ut.right=Mt.width,ut.bottom=Mt.height,$te.update())}var ut,$te,qR=h(()=>{"use strict";d();pp();Fb();_b();ut={top:0,left:0,right:-1,bottom:-1};$te={dragging:"",onMouseMove(){if(Mt){if(this.dragging!==""){this.dragging.includes("left")&&(ut.left=nt.x),this.dragging.includes("right")&&(ut.right=nt.x),this.dragging.includes("top")&&(ut.top=nt.y),this.dragging.includes("bottom")&&(ut.bottom=nt.y),this.update();return}DA(nt.x,nt.y,ut.left,ut.top)<30?nt.down?(ut.left=nt.x,ut.top=nt.y,this.dragging="left top"):Mt.style.cursor="nwse-resize":DA(nt.x,nt.y,ut.right,ut.top)<30?nt.down?(ut.right=nt.x,ut.top=nt.y,this.dragging="right top"):Mt.style.cursor="nesw-resize":DA(nt.x,nt.y,ut.left,ut.bottom)<30?nt.down?(ut.left=nt.x,ut.bottom=nt.y,this.dragging="left bottom"):Mt.style.cursor="nesw-resize":DA(nt.x,nt.y,ut.right,ut.bottom)<30?nt.down?(ut.right=nt.x,ut.bottom=nt.y,this.dragging="right bottom"):Mt.style.cursor="nwse-resize":Mt.style.cursor="default",this.dragging!==""&&this.update()}},onMouseUp(){this.dragging="",ut.left>ut.right&&([ut.left,ut.right]=[ut.right,ut.left]),ut.top>ut.bottom&&([ut.top,ut.bottom]=[ut.bottom,ut.top])},update(){Mt&&(Vn.clearRect(0,0,Mt.width,Mt.height),Vn.fillStyle="rgba(0, 0, 0, 0.75)",Vn.fillRect(0,0,Mt.width,Mt.height),Vn.fillStyle="rgba(0, 0, 0, 0.25)",Vn.clearRect(ut.left,ut.top,ut.right-ut.left,ut.bottom-ut.top),Vn.fillRect(ut.left,ut.top,ut.right-ut.left,ut.bottom-ut.top),Vn.fillStyle="white",Vn.strokeStyle="white",Vn.lineWidth=3,Vn.strokeRect(ut.left,ut.top,ut.right-ut.left,ut.bottom-ut.top),IA(ut.left,ut.top,10,Vn),IA(ut.right,ut.top,10,Vn),IA(ut.left,ut.bottom,10,Vn),IA(ut.right,ut.bottom,10,Vn),Hc())},onMouseMoveCallback:void 0,onMouseUpCallback:void 0,selected(){Mt&&(ut.right===-1&&(ut.right=Mt.width),ut.bottom===-1&&(ut.bottom=Mt.height),this.update(),this.onMouseMoveCallback=this.onMouseMove.bind(this),this.onMouseUpCallback=this.onMouseUp.bind(this),nt.event.on("move",this.onMouseMoveCallback),nt.event.on("up",this.onMouseUpCallback))},unselected(){Mt&&(Vn.clearRect(0,0,Mt.width,Mt.height),Vn.fillStyle="rgba(0, 0, 0, 0.75)",Vn.fillRect(0,0,Mt.width,Mt.height),Vn.clearRect(ut.left,ut.top,ut.right-ut.left,ut.bottom-ut.top),Hc(),nt.event.off("move",this.onMouseMoveCallback),nt.event.off("up",this.onMouseUpCallback))}}});function jOe(){return new Promise(e=>{if(!Mt||!Wi)return;Wi.clearRect(0,0,Mt.width,Mt.height),Wi.drawImage(Tl,0,0),Wi.drawImage(Sn.canvas,0,0),ut.right===-1&&(ut.right=Mt.width),ut.bottom===-1&&(ut.bottom=Mt.height);let t=document.createElement("canvas");t.width=zOe(ut),t.height=$Oe(ut),t.getContext("2d").drawImage(Mt,-ut.left,-ut.top),t.toBlob(r=>e(r)),Hc()})}function Hc(){!Wi||!Mt||(Wi.clearRect(0,0,Mt.width,Mt.height),Wi.drawImage(Tl,0,0),Wi.drawImage(Sn.canvas,0,0),Wi.drawImage(di.canvas,0,0),Wi.drawImage(Vn.canvas,0,0))}var Mt,Wi,Sn,di,Vn,Tl,qOe,pp=h(()=>{"use strict";d();Fb();qR();_b();C();Mt=null,Wi=null,Sn=document.createElement("canvas").getContext("2d"),di=document.createElement("canvas").getContext("2d"),Vn=document.createElement("canvas").getContext("2d");qOe=({file:e})=>{let t=Se(null);return G(()=>{Tl=new Image,Tl.src=URL.createObjectURL(e),Tl.onload=()=>{Mt=t.current,Mt&&(Mt.width=Tl.width,Mt.height=Tl.height,Sn.canvas.width=Tl.width,Sn.canvas.height=Tl.height,di.canvas.width=Tl.width,di.canvas.height=Tl.height,Vn.canvas.width=Tl.width,Vn.canvas.height=Tl.height,Wi=Mt.getContext("2d"),Wi.drawImage(Tl,0,0),UOe())}}),i("canvas",{ref:t,className:"vc-remix-canvas"})}});var WOe,KOe=h(()=>{"use strict";d();pp();WR();Fb();_b();WOe={onMouseMove(){!nt.down||!Wi||(Wi.lineCap="round",Wi.lineJoin="round",Sn.lineWidth=Ub,EA(nt.prevX,nt.prevY,nt.x,nt.y),Hc())},selected(){nt.event.on("move",this.onMouseMove)},unselected(){nt.event.off("move",this.onMouseMove)}}});var QOe,ZOe=h(()=>{"use strict";d();pp();WR();Fb();QOe={onMouseMove(){nt.down&&(Sn.lineCap="round",Sn.lineJoin="round",Sn.lineWidth=Ub,Sn.globalCompositeOperation="destination-out",Sn.beginPath(),Sn.moveTo(nt.prevX,nt.prevY),Sn.lineTo(nt.x,nt.y),Sn.stroke(),Sn.globalCompositeOperation="source-over",Hc())},selected(){nt.event.on("move",this.onMouseMove)},unselected(){nt.event.off("move",this.onMouseMove)}}});function YOe(e){QR=e}function JOe(e){KR=e}var QR,KR,XOe,VOe=h(()=>{"use strict";d();pp();Fb();_b();QR="rectangle";KR=!1;XOe={draggingFrom:{x:0,y:0},isDragging:!1,onMouseMove(){nt.down&&(this.isDragging||(this.draggingFrom.x=nt.x,this.draggingFrom.y=nt.y,this.isDragging=!0),di.clearRect(0,0,di.canvas.width,di.canvas.height),this.draw())},onMouseUp(){this.isDragging&&(di.clearRect(0,0,di.canvas.width,di.canvas.height),this.draw(Sn),this.isDragging=!1)},onMouseMoveListener:null,onMouseUpListener:null,draw(e=di){switch(e.lineCap="butt",e.lineJoin="miter",QR){case"rectangle":KR?e.fillRect(this.draggingFrom.x,this.draggingFrom.y,nt.x-this.draggingFrom.x,nt.y-this.draggingFrom.y):e.strokeRect(this.draggingFrom.x,this.draggingFrom.y,nt.x-this.draggingFrom.x,nt.y-this.draggingFrom.y);break;case"ellipse":let t=nt.x-this.draggingFrom.x,o=nt.y-this.draggingFrom.y,r=this.draggingFrom.x+t/2,n=this.draggingFrom.y+o/2,a=Math.abs(t/2),s=Math.abs(o/2);e.beginPath(),e.ellipse(r,n,a,s,0,0,Math.PI*2),KR?e.fill():e.stroke();break;case"line":EA(this.draggingFrom.x,this.draggingFrom.y,nt.x,nt.y,e);break;case"arrow":EA(this.draggingFrom.x,this.draggingFrom.y,nt.x,nt.y,e);let l=Math.atan2(nt.y-this.draggingFrom.y,nt.x-this.draggingFrom.x),c=10;e.beginPath(),e.moveTo(nt.x,nt.y),e.lineTo(nt.x-c*Math.cos(l-Math.PI/6),nt.y-c*Math.sin(l-Math.PI/6)),e.lineTo(nt.x-c*Math.cos(l+Math.PI/6),nt.y-c*Math.sin(l+Math.PI/6)),e.closePath(),KR?e.fill():e.stroke();break}Hc()},selected(){this.onMouseMoveListener=this.onMouseMove.bind(this),this.onMouseUpListener=this.onMouseUp.bind(this),nt.event.on("move",this.onMouseMoveListener),nt.event.on("up",this.onMouseUpListener)},unselected(){di.clearRect(0,0,di.canvas.width,di.canvas.height),nt.event.off("move",this.onMouseMoveListener),nt.event.off("up",this.onMouseUpListener)}}});var eFe=h(()=>{});function Bwt(e){return`#${e.toString(16).padStart(6,"0")}`}function tFe({name:e,onChange:t,color:o}){function r(n){t(Bwt(n))}return i("section",null,i("div",{className:Nwt("swatch-row")},i(Pr,{key:e,color:o,onChange:r})))}var Nwt,oFe=h(()=>{"use strict";d();eFe();we();C();Nwt=K("vc-remix-settings-color-")});function Rwt(e){return parseInt(e.replace("#",""),16)}var nFe,rFe,iFe,Ub,Gte,aFe,WR=h(()=>{"use strict";d();Je();Fi();KOe();qR();ZOe();VOe();C();pp();oFe();nFe={none:void 0,brush:WOe,erase:QOe,crop:$te,shape:XOe},rFe="none",iFe="#ff0000",Ub=20,Gte=!1;aFe=()=>{let[e,t]=T(rFe),[o,r]=T(iFe),[n,a]=T(Ub),[s,l]=T(Gte);function c(m){let g=e;t(m),u(g,m)}function u(m,g){nFe[m]?.unselected(),nFe[g]?.selected()}G(()=>{rFe=e,iFe=o,Ub=n,Gte=s,Sn.fillStyle=o,di.fillStyle=o,Sn.strokeStyle=o,di.strokeStyle=o,Sn.lineWidth=n,di.lineWidth=n,Sn.lineCap="round",Sn.lineJoin="round",JOe(Gte)},[e,o,n,s]);function p(){Mt&&(Sn.clearRect(0,0,Mt.width,Mt.height),di.clearRect(0,0,Mt.width,Mt.height),PA(),e!=="crop"&&Vn.clearRect(0,0,Mt.width,Mt.height),Hc())}return i("div",{className:"vc-remix-toolbar"},i("div",{className:"vc-remix-tools"},i(ue,{className:e==="brush"?"tool-active":"",onClick:()=>c("brush")},"Brush"),i(ue,{className:e==="erase"?"tool-active":"",onClick:()=>c("erase")},"Erase"),i(ue,{className:e==="crop"?"tool-active":"",onClick:()=>c("crop")},"Crop"),i(ue,{className:e==="shape"?"tool-active":"",onClick:()=>c("shape")},"Shape")),i("div",{className:"vc-remix-settings"},i("div",{className:"vc-remix-setting-section"},(e==="brush"||e==="shape")&&i(tFe,{name:"vc-remix-color-picker",onChange:r,color:Rwt(o)}),(e==="brush"||e==="erase"||e==="shape")&&i(cn,{minValue:1,maxValue:500,initialValue:n,onValueChange:a,markers:[1,50,100,150,200,250,300,350,400,450,500],hideBubble:!0})),e==="crop"&&i(ue,{onClick:PA},"Reset"),i("div",{className:"vc-remix-setting-section"},e==="shape"&&i(f,null,i(qt,{select:YOe,isSelected:m=>m===QR,serialize:m=>String(m),placeholder:"Shape",options:["Rectangle","Ellipse","Line","Arrow"].map(m=>({label:m,value:m.toLowerCase()}))}),i(U,{className:"vc-remix-setting-switch"},"Fill ",i(Mi,{checked:s,onChange:l}))))),i("div",{className:"vc-remix-misc"},i(ue,{onClick:p},"Clear")))}});var Lwt,sFe,lFe=h(()=>{"use strict";d();le();C();pp();WR();_b();Lwt=he(".currentTarget.files","lineClamp:1"),sFe=e=>{let[t,o]=T(void 0);return G(()=>{e.url&&GOe(e.url).then(r=>{HOe(r).then(n=>{o(new File([n],"remix.png"))})})},[]),i("div",{className:"vc-remix-editor"},!t&&i(Lwt,{filename:void 0,placeholder:"Choose an image",buttonText:"Browse",filters:[{name:"Image",extensions:["png","jpeg"]}],onFileSelect:r=>o(r)}),t&&i(f,null,i(aFe,null),i(qOe,{file:t})))}});var cFe,uFe=h(()=>{"use strict";d();cFe=()=>i("svg",{className:"sendIcon__461ff","aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M6.6 10.02 14 11.4a.6.6 0 0 1 0 1.18L6.6 14l-2.94 5.87a1.48 1.48 0 0 0 1.99 1.98l17.03-8.52a1.48 1.48 0 0 0 0-2.64L5.65 2.16a1.48 1.48 0 0 0-1.99 1.98l2.94 5.88Z"}))});function Owt(){PA(),!(!Wi||!Mt)&&(Wi.clearRect(0,0,Mt.width,Mt.height),Sn.clearRect(0,0,Mt.width,Mt.height),di.clearRect(0,0,Mt.width,Mt.height),Vn.clearRect(0,0,Mt.width,Mt.height))}async function dFe(e,t){t&&mFe(await jOe()),Owt(),e()}function ZR({modalProps:e,close:t,url:o}){return i(be,{...e,size:"lg",title:"Remix",actions:[{text:i("span",{style:{display:"flex",alignItems:"center",gap:"6px"}},i(cFe,null)," Send"),variant:"primary",onClick:()=>dFe(t,!0)},{text:"Close",variant:"dangerPrimary",onClick:()=>dFe(t)}]},i(sFe,{url:o}))}var pFe=h(()=>{"use strict";d();C();Hte();pp();lFe();qR();uFe()});var fFe,gFe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/remix/styles.css",{name:"src/equicordplugins/remix/styles.css",source:`.vc-remix-toolbar { display: flex; flex-direction: column; align-items: center; width: 100%; } .vc-remix-tools, .vc-remix-misc, .vc-remix-settings { display: flex; flex-direction: row; align-items: center; justify-content: center; margin-bottom: 5px; width: 100%; background-color: var(--modal-footer-background); padding: 10px 0; border-radius: 8px; } .vc-remix-settings { flex-direction: column; } .vc-remix-setting-section { display: flex; flex-direction: row; justify-content: center; width: 75%; } .vc-remix-toolbar button { min-width: 100px; height: 40px; background-color: var(--brand); color: var(--text-strong); border-radius: 8px; margin: 0 3px; } .vc-remix-canvas { max-width: 100%; max-height: 100%; min-width: 50%; min-height: 50%; } .vc-remix-editor { width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding-top: 10px; padding-bottom: 10px; }`,classNames:{},dom:null});fFe="src/equicordplugins/remix/styles.css"});function mFe(e){let t=Fe.getChannelId(),o=W.getChannel(t);Pa.getPendingReply(t)&&Q.dispatch({type:"DELETE_PENDING_REPLY",currentChannelId:t});let n=new File([e],"remix.png",{type:"image/png"});Mr.promptToUpload([n],o,yo.ChannelMessage)}var Fwt,_wt,Uwt,zwt,$wt,YR,Hte=h(()=>{"use strict";d();Fo();ot();O();R();le();C();pFe();gFe();Fwt=vr([".CREATE_STICKER_MODAL,","isDisplayingIndividualStickers"]),_wt=vr(['type:"USER_SETTINGS_MODAL_OPEN"']),Uwt=["image/png","image/jpeg","image/jpg","image/webp"],zwt=(e,t)=>{e.find(o=>o?.props?.id==="vc-remix")||e.push(i(P.MenuItem,{id:"vc-remix",label:"Remix",action:()=>{let o=ce(r=>i(ZR,{modalProps:r,close:()=>Lo(o)}))}}))},$wt=(e,t)=>{let o=t.itemHref??t.itemSrc;if(!o||t.attachment&&!Uwt.includes(t.attachment.content_type))return;let r=wt("copy-text",e);if(!r||r.find(a=>a?.props?.id==="vc-remix"))return;let n=r.findIndex(a=>a?.props?.id==="copy-text");r.splice(n+1,0,i(P.MenuItem,{id:"vc-remix",label:"Remix",icon:od,leadingAccessory:{type:"icon",icon:od},action:()=>{let a=ce(s=>i(ZR,{modalProps:s,close:()=>Lo(a),url:o}))}}))};YR=S({name:"RemixRevived",description:"Revives Remix and breings it to Desktop",tags:["Customisation","Fun"],authors:[F.MrDiamond,F.meowabyte],contextMenus:{"channel-attach":zwt,message:$wt},managedStyle:fFe,async start(){await Fwt(),await _wt()}})});function JR({className:e}){return i("svg",{viewBox:"0 -960 960 960",height:24,width:24,className:Gwt("icon",e)},i("path",{fill:"currentColor",d:"m274-200 34 34q12 12 11.5 28T308-110q-12 12-28.5 12.5T251-109L148-212q-6-6-8.5-13t-2.5-15q0-8 2.5-15t8.5-13l103-103q12-12 28.5-11.5T308-370q11 12 11.5 28T308-314l-34 34h406v-120q0-17 11.5-28.5T720-440q17 0 28.5 11.5T760-400v120q0 33-23.5 56.5T680-200H274Zm412-480H280v120q0 17-11.5 28.5T240-520q-17 0-28.5-11.5T200-560v-120q0-33 23.5-56.5T280-760h406l-34-34q-12-12-11.5-28t11.5-28q12-12 28.5-12.5T709-851l103 103q6 6 8.5 13t2.5 15q0 8-2.5 15t-8.5 13L709-589q-12 12-28.5 11.5T652-590q-11-12-11.5-28t11.5-28l34-34Z"}))}function vFe(e){if(!e)return;let t="";t+=e.content;let o=[];e.attachments?.length&&o.push(...e.attachments.map(r=>({filename:r.filename,url:r.url}))),e.messageSnapshots&&e.messageSnapshots.forEach(r=>{r.message.attachments?.length&&o.push(...r.message.attachments.map(n=>({filename:n.filename,url:n.url})))}),o.length&&(t+=` Attachments:`,o.forEach(r=>{t+=` - ${r.filename} (${r.url})`})),or(e.channel_id,{content:t},!0,{allowedMentions:{parse:[],replied_user:!1},messageReference:XR?{channel_id:e.channel_id,message_id:e.id}:void 0,stickerIds:e.stickerItems.map(r=>r.id)})}var Gwt,XR,Hwt,hFe,xFe,VR,yFe=h(()=>{"use strict";d();Fo();j();O();we();_e();Kt();R();C();Gwt=K("vc-repeat-");XR=!1;Hwt=(e,{msg:t})=>{if(!t)return null;let o=wt("copy-text",e);if(!o)return;let r=Vt();G(()=>{let n=()=>{r()};return window.addEventListener("keydown",n),window.addEventListener("keyup",n),()=>{window.removeEventListener("keydown",n),window.removeEventListener("keyup",n)}},[]),o.splice(o.findIndex(n=>n?.props?.id==="reply")+1,0,i(P.MenuItem,{id:"vc-repeat",label:XR?"Repeat and Reply":"Repeat",icon:JR,leadingAccessory:{type:"icon",icon:JR},action:async()=>vFe(t)}))},hFe=e=>{e.key==="Shift"&&(XR=!1)},xFe=e=>{e.key==="Shift"&&(XR=!0)};oo("RepeatMessages","RepeatMessage");VR=S({name:"RepeatMessages",description:"Allows you to repeat messages quickly. If you hold shift while clicking the Repeat option, it will reply to the message.",dependencies:["MessagePopoverAPI"],tags:["Chat"],authors:[F.Tolgchu,b.thororen],contextMenus:{message:Hwt},messagePopoverButton:{icon:JR,render(e){return e?{label:"Repeat (Click) / Repeat and Reply (Shift + Click)",icon:JR,message:e,channel:W.getChannel(e.channel_id),onClick:async()=>vFe(e)}:null}},start(){document.addEventListener("keyup",hFe),document.addEventListener("keydown",xFe)},stop(){document.removeEventListener("keyup",hFe),document.removeEventListener("keydown",xFe)}})});var jte,eL,bFe=h(()=>{"use strict";d();j();O();R();C();jte=M({alwaysPingOnReply:{type:3,description:"Always get pinged when someone replies to your messages",default:!1},replyPingWhitelist:{type:0,description:"Comma-separated list of User IDs to always receive reply pings from",default:"",disabled:()=>jte.store.alwaysPingOnReply},replyPingBlacklist:{type:0,description:"Comma-separated list of User IDs to never receive reply pings from",default:""}}),eL=S({name:"ReplyPingControl",description:"Control whether to always or never get pinged on message replies, with whitelist and blacklist features",tags:["Chat","Notifications"],authors:[b.ant0n,F.MrDiamond,F.keircn],settings:jte,patches:[{find:"_channelMessages",replacement:{match:/receiveMessage\((\i)\)\{/,replace:"$&$self.modifyMentions($1);"}}],modifyMentions(e){let t=L.getCurrentUser();if(e.author.id===t.id)return;let o=this.getRepliedMessage(e);if(!o||o.author.id!==t.id)return;let{replyPingBlacklist:r,replyPingWhitelist:n,alwaysPingOnReply:a}=jte.plain,s=e.author.id;if(r&&r.split(",").some(c=>c.trim()===s)){e.mentions=e.mentions.filter(c=>c.id!==t.id);return}n&&n.split(",").some(c=>c.trim()===s)||a?e.mentions.some(c=>c.id===t.id)||e.mentions.push(t):e.mentions=e.mentions.filter(c=>c.id!==t.id)},getRepliedMessage(e){let t=e.message_reference;return t&<.getMessage(t.channel_id,t.message_id)}})});var SFe=h(()=>{});var tL,wFe=h(()=>{"use strict";d();SFe();O();R();tL=S({authors:[F.cassie,F.mochienya,F.secp192k1],name:"RichMagnetLinks",description:"Renders magnet links like message links",tags:["Appearance","Chat"],patches:[{find:"AUTO_MODERATION_SYSTEM_MESSAGE_RULES:",replacement:{match:/mention:\{order:(\i\.\i\.order)/,replace:"magnet:$self.magnetLink($1),$&"}},{find:'before:"@silent"',replacement:{match:/mention:{type:/,replace:'magnet:{type:"inlineObject"},$&'}}],magnetLink:e=>({order:e,requiredFirstCharacters:["magnet:?"],match(t){return/^magnet:\?[\w\W]+?(?=\s|$)/.exec(t)},parse(t,o,r){if(!r.messageId||r.isInsideOfLink)return{type:"text",content:t[0]};let n=t[0],a="unknown filename";try{let s=n.split("?")[1];if(s){let c=new URLSearchParams(s).get("dn");c&&(a=decodeURIComponent(c.replace(/\+/g," ")))}}catch(s){console.error("Failed to parse magnet link",s)}return{type:"magnet",filename:a,magnetLink:n}},react({magnetLink:t,filename:o}){return i("a",{href:t,className:"vc-magnet-link interactive"},i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 16 16"},i("path",{d:"M15 12h-4v3h4zM5 12H1v3h4zM0 8a8 8 0 1 1 16 0v8h-6V8a2 2 0 1 0-4 0v8H0z"})),o)}})})});var oL,MA=h(()=>{"use strict";d();oL=(s=>(s.AudioBookShelf="audiobookshelf",s.Tosu="tosu",s.StatsFm="statsfm",s.Jellyfin="jellyfin",s.GensokyoRadio="gensokyoRadio",s.Navidrome="navidrome",s))(oL||{})});function Il({name:e,description:t,settingsKey:o}){let[r,n]=T(Nt.store[o]??!1);return i(go,{tag:"label",inlineSetting:!0,id:e,name:e,description:t},i(Mi,{checked:!!r,onChange:a=>{n(a),Nt.store[o]=a}}))}function ma({name:e,description:t,settingsKey:o,placeholder:r}){let[n,a]=T(Nt.store[o]??"");return i(go,{id:e,name:e,description:t},i(Te,{type:"text",value:String(n),onChange:s=>{a(s),Nt.store[o]=s},placeholder:r??"Enter a value"}))}function Pm({name:e,description:t,settingsKey:o,options:r}){let[n,a]=T(Nt.store[o]??r[0]?.value);return i(go,{id:e,name:e,description:t},i(qt,{options:r,isSelected:s=>s===n,select:s=>{a(s),Nt.store[o]=s},serialize:String,closeOnSelect:!0,maxVisibleItems:5}))}function jwt(){return i(f,null,i(go,{id:"audiobookshelf-settings",name:"",description:"Display your currently playing audiobooks as Discord Rich Presence. Requires your AudioBookShelf server URL, username, and password."}),i(ma,{name:"Server URL",description:"AudioBookShelf server URL.",settingsKey:"abs_serverUrl",placeholder:"https://abs.example.com"}),i(ma,{name:"Username",description:"AudioBookShelf username.",settingsKey:"abs_username"}),i(ma,{name:"Password",description:"AudioBookShelf password.",settingsKey:"abs_password"}))}function qwt(){return i(go,{id:"tosu-settings",name:"",description:"Connects to tosu via WebSocket on port 24050. No configuration needed, just make sure tosu is running alongside osu!."})}function Kwt(){return i(f,null,i(go,{id:"statsfm-settings",name:"",description:"Show what you're currently listening to via stats.fm. Requires your listening history to be public."}),i(ma,{name:"Username",description:"Stats.fm username.",settingsKey:"sfm_username",placeholder:"stats.fm username"}),i(ma,{name:"Custom Status Text",description:"Custom status text.",settingsKey:"sfm_statusName",placeholder:"Stats.fm"}),i(Pm,{name:"Name Format",description:"Name format.",settingsKey:"sfm_nameFormat",options:Wwt}),i(Pm,{name:"Missing Art Fallback",description:"Fallback when art is missing.",settingsKey:"sfm_missingArt",options:[{label:"Use large Stats.fm logo",value:"StatsFmLogo"},{label:"Use generic placeholder",value:"placeholder"}]}),i(Il,{name:"Show Listening Status",description:"Show listening status.",settingsKey:"sfm_useListeningStatus"}),i(Il,{name:"Show Stats.fm Logo",description:"Show Stats.fm logo next to album art.",settingsKey:"sfm_showLogo"}),i(Il,{name:"Show Profile Link",description:"Show link to stats.fm profile.",settingsKey:"sfm_shareUsername"}),i(Il,{name:"Show Song Link",description:"Show link to song on stats.fm.",settingsKey:"sfm_shareSong"}),i(Il,{name:"Hide With Spotify",description:"Hide stats.fm presence if Spotify is running.",settingsKey:"sfm_hideWithSpotify"}),i(Il,{name:"Hide With External RPC",description:"Hide stats.fm presence if an external RPC is running.",settingsKey:"sfm_hideWithExternalRPC"}),i(Il,{name:"Disable Album Art",description:"Disable downloading album art.",settingsKey:"sfm_alwaysHideArt"}))}function Qwt(){return i(f,null,i(go,{id:"jellyfin-settings",name:"",description:"Show what you're playing on Jellyfin. To get your API key: open your Jellyfin web UI, press F12 to open Developer Tools, go to the Network tab, look for requests to your server, find the Authorization header (Ctrl+F to search), and You need the part from Token='this'. Your user ID can be found in your profile page URL."}),i(ma,{name:"Server URL",description:"Jellyfin server URL.",settingsKey:"jf_serverUrl",placeholder:"https://jellyfin.example.com"}),i(ma,{name:"API Key",description:"Jellyfin API key.",settingsKey:"jf_apiKey",placeholder:"Authorization"}),i(ma,{name:"User ID",description:"Jellyfin user ID.",settingsKey:"jf_userId",placeholder:"User ID from profile URL"}),i(Pm,{name:"Name Display",description:"Name display format.",settingsKey:"jf_nameDisplay",options:[{label:"Series/Movie Name",value:"default"},{label:"Series - Episode/Track/Movie Name",value:"full"},{label:"Custom",value:"custom"}]}),i(ma,{name:"Custom Name Template",description:"Custom name template.",settingsKey:"jf_customName",placeholder:"{name} on Jellyfin"}),i(Pm,{name:"Cover Type",description:"Cover type for TV shows.",settingsKey:"jf_coverType",options:[{label:"Series Cover",value:"series"},{label:"Episode Cover",value:"episode"}]}),i(Pm,{name:"Episode Format",description:"Episode number format.",settingsKey:"jf_episodeFormat",options:[{label:"S01E01",value:"long"},{label:"1x01",value:"short"},{label:"Season 1 Episode 1",value:"fulltext"}]}),i(Pm,{name:"Override Presence Type",description:"Override rich presence type.",settingsKey:"jf_overrideType",options:[{label:"Off",value:"off"},{label:"Listening",value:"2"},{label:"Playing",value:"0"},{label:"Streaming",value:"1"},{label:"Watching",value:"3"}]}),i(Il,{name:"Show Episode Name",description:"Show episode name after season/episode info.",settingsKey:"jf_showEpisodeName"}),i(Il,{name:"Show When Paused",description:"Show presence when media is paused.",settingsKey:"jf_showPausedState"}),i(Il,{name:"Privacy Mode",description:"Hide media details.",settingsKey:"jf_privacyMode"}))}function Zwt(){let[e,t]=T(Nt.store.gr_refreshInterval??15);return i(f,null,i(go,{id:"gensokyoradio-settings",name:"",description:"Discord rich presence for Gensokyo Radio. Just enable it and listen!"}),i(go,{id:"refresh-interval",name:"Refresh Interval",description:"Refresh interval in seconds."},i(cn,{markers:[1,2,2.5,3,5,10,15],initialValue:e,onValueChange:o=>{t(o),Nt.store.gr_refreshInterval=o},onValueRender:o=>`${o}s`,stickToMarkers:!0})))}function Jwt(){let[e,t]=T(Nt.store.nd_refreshInterval??10),{nd_activityType:o,nd_albumArtMode:r}=Nt.use(Ywt);return i(f,null,i(go,{id:"navidrome-settings",name:"",description:"Show what you're currently listening to via Navidrome."}),i(ma,{name:"Server URL",description:"Navidrome Server URL (must be a public domain, e.g. https://navidrome.example.com).",settingsKey:"nd_serverUrl",placeholder:"https://navidrome.example.com"}),i(ma,{name:"Username",description:"Navidrome username.",settingsKey:"nd_username"}),i(ma,{name:"Password",description:"Navidrome password.",settingsKey:"nd_password"}),i(ma,{name:"Client ID",description:"Optional Discord Application Client ID.",settingsKey:"nd_clientId",placeholder:"1470554657506984069"}),i(Pm,{name:"Album Art Mode",description:"How to fetch album art.",settingsKey:"nd_albumArtMode",options:[{label:"None",value:"none"},{label:"Navidrome Instance (Exposes Server URL. One-time auth sent.)",value:"instance"},{label:"Last.fm API (Sends Metadata to last.fm)",value:"lastfm"}]}),r==="lastfm"&&i(ma,{name:"Last.fm API Key",description:"Optional: Provide your own Last.fm API Key (leaves default if empty).",settingsKey:"nd_lastfmApiKey",placeholder:"feff915bf5987580c9dc354d523dc6b9"}),i(Il,{name:"Show Small Image",description:"Show Navidrome logo in bottom right of album art.",settingsKey:"nd_showSmallImage"}),i(Il,{name:"Show Album",description:"Show album name in presence.",settingsKey:"nd_showAlbum"}),i(Pm,{name:"Activity Type",description:"Which type of activity to display.",settingsKey:"nd_activityType",options:[{label:"Listening",value:2},{label:"Playing",value:0},{label:"Watching",value:3}]}),i(Pm,{name:"Status Display Type",description:"Show the state / details line contents in the member list",settingsKey:"nd_statusDisplayType",options:[{label:"Don't show (shows generic listening message)",value:"off"},{label:"Show state line content",value:"artist"},{label:"Show details line content",value:"track"}]}),i(Il,{name:"Hide On Pause",description:"Hide Rich Presence when music is paused (instead of showing a stopwatch)",settingsKey:"nd_hideOnPause"}),Number(o??2)!==0&&i(ma,{name:"Activity Name Format",description:"The 'Listening to' text (e.g. {artist})",settingsKey:"nd_nameString",placeholder:"Navidrome"}),i(ma,{name:"Details Format",description:"The main line showing what song is playing (e.g. {song})",settingsKey:"nd_detailsString",placeholder:"{song}"}),i(ma,{name:"State Format",description:"The line below the song name (e.g. {artist})",settingsKey:"nd_stateString",placeholder:"{artist}"}),i(ma,{name:"Large Text Format",description:"The album line (e.g. {album})",settingsKey:"nd_largeTextString",placeholder:"{album}"}),i(go,{id:"nd-refresh-interval",name:"Refresh Interval",description:"Refresh interval in seconds."},i(cn,{markers:[1,2,5,10,15],initialValue:e,onValueChange:n=>{t(n),Nt.store.nd_refreshInterval=n},onValueRender:n=>`${n}s`,stickToMarkers:!0})))}function CFe(){let[e,t]=T("audiobookshelf"),o=Xwt[e];return i("div",{className:X("vc-plugins-settings",z.top16)},i(rr,{type:"top",look:"brand",selectedItem:e,onItemSelect:t},e4t.map(r=>i(rr.Item,{key:r,id:r},AFe[r]))),i(Il,{key:e,name:"Enabled",description:`Enable ${AFe[e]} presence.`,settingsKey:Vwt[e]}),i(o,null))}var Wwt,Ywt,Xwt,AFe,Vwt,e4t,TFe=h(()=>{"use strict";d();cu();rd();Wt();Be();C();Mm();MA();Wwt=[{label:"Use custom status name",value:"status-name"},{label:"Use format 'artist - song'",value:"artist-first"},{label:"Use format 'song - artist'",value:"song-first"},{label:"Use artist name only",value:"artist"},{label:"Use song name only",value:"song"},{label:"Use album name",value:"album"}];Ywt=["nd_activityType","nd_albumArtMode"];Xwt={audiobookshelf:jwt,tosu:qwt,statsfm:Kwt,jellyfin:Qwt,gensokyoRadio:Zwt,navidrome:Jwt},AFe={audiobookshelf:"AudioBookShelf",tosu:"osu!",statsfm:"stats.fm",jellyfin:"Jellyfin",gensokyoRadio:"Gensokyo Radio",navidrome:"Navidrome"},Vwt={audiobookshelf:"abs_enabled",tosu:"tosu_enabled",statsfm:"sfm_enabled",jellyfin:"jf_enabled",gensokyoRadio:"gr_enabled",navidrome:"nd_enabled"},e4t=Object.values(oL)});function qte(e){Yg=e}var Yg,Nt,Mm=h(()=>{"use strict";d();j();R();TFe();MA();Yg=null;Nt=M({enabled:{description:"Enable rich presence services.",type:3,default:!0,restartNeeded:!1,onChange:()=>Yg?.()},serviceSettings:{type:6,description:"Service configuration.",component:CFe},abs_enabled:{description:"Enable AudioBookShelf presence.",type:3,default:!1,hidden:!0,onChange:()=>Yg?.()},tosu_enabled:{description:"Enable osu! (tosu) presence.",type:3,default:!1,hidden:!0,onChange:()=>Yg?.()},sfm_enabled:{description:"Enable stats.fm presence.",type:3,default:!1,hidden:!0,onChange:()=>Yg?.()},jf_enabled:{description:"Enable Jellyfin presence.",type:3,default:!1,hidden:!0,onChange:()=>Yg?.()},gr_enabled:{description:"Enable Gensokyo Radio presence.",type:3,default:!1,hidden:!0,onChange:()=>Yg?.()},nd_enabled:{description:"Enable Navidrome presence.",type:3,default:!1,hidden:!0,onChange:()=>Yg?.()},abs_serverUrl:{description:"AudioBookShelf server URL.",type:0,default:"",hidden:!0},abs_username:{description:"AudioBookShelf username.",type:0,default:"",hidden:!0},abs_password:{description:"AudioBookShelf password.",type:0,default:"",hidden:!0},sfm_username:{description:"Stats.fm username.",type:0,default:"",hidden:!0},sfm_shareUsername:{description:"Show link to stats.fm profile.",type:3,default:!1,hidden:!0},sfm_shareSong:{description:"Show link to song on stats.fm.",type:3,default:!0,hidden:!0},sfm_hideWithSpotify:{description:"Hide stats.fm presence if Spotify is running.",type:3,default:!1,hidden:!0},sfm_hideWithExternalRPC:{description:"Hide stats.fm presence if an external RPC is running.",type:3,default:!1,hidden:!0},sfm_statusName:{description:"Custom status text.",type:0,default:"Stats.fm",hidden:!0},sfm_nameFormat:{description:"Name format.",type:4,options:[{label:"Use custom status name",value:"status-name",default:!0},{label:"Use format 'artist - song'",value:"artist-first"},{label:"Use format 'song - artist'",value:"song-first"},{label:"Use artist name only",value:"artist"},{label:"Use song name only",value:"song"},{label:"Use album name",value:"album"}],hidden:!0},sfm_useListeningStatus:{description:"Show listening status.",type:3,default:!0,hidden:!0},sfm_missingArt:{description:"Fallback when art is missing.",type:4,options:[{label:"Use large Stats.fm logo",value:"StatsFmLogo",default:!0},{label:"Use generic placeholder",value:"placeholder"}],hidden:!0},sfm_showLogo:{description:"Show Stats.fm logo next to album art.",type:3,default:!0,hidden:!0},sfm_alwaysHideArt:{description:"Disable downloading album art.",type:3,default:!1,hidden:!0},jf_serverUrl:{description:"Jellyfin server URL.",type:0,default:"",hidden:!0},jf_apiKey:{description:"Jellyfin API key.",type:0,default:"",hidden:!0},jf_userId:{description:"Jellyfin user ID.",type:0,default:"",hidden:!0},jf_nameDisplay:{description:"Name display format.",type:4,options:[{label:"Series/Movie Name",value:"default",default:!0},{label:"Series - Episode/Track/Movie Name",value:"full"},{label:"Custom",value:"custom"}],hidden:!0},jf_customName:{description:"Custom name template.",type:0,default:"",hidden:!0},jf_coverType:{description:"Cover type for TV shows.",type:4,options:[{label:"Series Cover",value:"series",default:!0},{label:"Episode Cover",value:"episode"}],hidden:!0},jf_episodeFormat:{description:"Episode number format.",type:4,options:[{label:"S01E01",value:"long",default:!0},{label:"1x01",value:"short"},{label:"Season 1 Episode 1",value:"fulltext"}],hidden:!0},jf_showEpisodeName:{description:"Show episode name after season/episode info.",type:3,default:!1,hidden:!0},jf_overrideType:{description:"Override rich presence type.",type:4,options:[{label:"Off",value:"off",default:!0},{label:"Listening",value:"2"},{label:"Playing",value:"0"},{label:"Streaming",value:"1"},{label:"Watching",value:"3"}],hidden:!0},jf_showPausedState:{description:"Show presence when media is paused.",type:3,default:!0,hidden:!0},jf_privacyMode:{description:"Hide media details.",type:3,default:!1,hidden:!0},gr_refreshInterval:{description:"Refresh interval in seconds.",type:5,markers:[1,2,2.5,3,5,10,15],default:15,hidden:!0},nd_serverUrl:{description:"Navidrome Server URL (e.g. https://navidrome.example.com)",type:0,default:"",hidden:!0},nd_username:{description:"Navidrome Username",type:0,default:"",hidden:!0},nd_password:{description:"Navidrome Password",type:0,default:"",hidden:!0},nd_clientId:{description:"Optional Discord Application Client ID",type:0,default:"",hidden:!0},nd_showSmallImage:{description:"Show Navidrome logo in bottom right of album art.",type:3,default:!1,hidden:!0},nd_showAlbum:{description:"Show album name in presence.",type:3,default:!0,hidden:!0},nd_albumArtMode:{description:"How to fetch album art.",type:4,options:[{label:"None",value:"none",default:!0},{label:"Navidrome Instance (Exposes Server URL to Discord, no auth sent)",value:"instance"},{label:"Last.fm API (Sends track metadata to Last.fm)",value:"lastfm"}],hidden:!0},nd_lastfmApiKey:{description:"Optional Last.fm API Key",type:0,default:"",hidden:!0},nd_refreshInterval:{description:"Refresh interval in seconds.",type:5,markers:[1,2,5,10,15],default:10,hidden:!0},nd_activityType:{type:4,description:"Which type of activity",options:[{label:"Listening",value:2,default:!0},{label:"Playing (Fixes hidden lines)",value:0},{label:"Watching",value:3}],hidden:!0},nd_nameString:{type:0,description:"Activity name format string",default:"Navidrome",hidden:!0},nd_detailsString:{type:0,description:"Activity details format string",default:"{song}",hidden:!0},nd_stateString:{type:0,description:"Activity state format string",default:"{artist}",hidden:!0},nd_largeTextString:{type:0,description:"Activity large text format string",default:"{album}",hidden:!0},nd_statusDisplayType:{description:"Show the track / artist name in the member list",type:4,options:[{label:"Don't show (shows generic listening message)",value:"off"},{label:"Show artist name",value:"artist",default:!0},{label:"Show track name",value:"track"}],hidden:!0},nd_hideOnPause:{description:"Hide Rich Presence when music is paused",type:3,default:!0,hidden:!0}})});function Wte(e,t){Nt.store[e]=t}function IFe(){if(Me.plugins.RichPresence._migrated)return;oo("RichPresence","AudioBookShelfRichPresence","GensokyoRadioRPC","JellyfinRichPresence","StatsfmPresence","TosuRPC");for(let t of o4t){let o=Me.plugins[t.oldPlugin];if(o){o.enabled&&Wte(t.enableKey,!0);for(let[r,n]of Object.entries(t.keys))o[r]!=null&&Wte(n,o[r]);t4t.info(`Migrated settings from ${t.oldPlugin}`)}}Me.plugins.TosuRPC?.enabled&&Wte("tosu_enabled",!0),Me.plugins.RichPresence._migrated=!0}var t4t,o4t,EFe=h(()=>{"use strict";d();j();He();Mm();t4t=new ie("RichPresence:Migration"),o4t=[{oldPlugin:"AudioBookShelfRichPresence",enableKey:"abs_enabled",keys:{serverUrl:"abs_serverUrl",username:"abs_username",password:"abs_password"}},{oldPlugin:"StatsfmPresence",enableKey:"sfm_enabled",keys:{username:"sfm_username",shareUsername:"sfm_shareUsername",shareSong:"sfm_shareSong",hideWithSpotify:"sfm_hideWithSpotify",hideWithExternalRPC:"sfm_hideWithExternalRPC",statusName:"sfm_statusName",nameFormat:"sfm_nameFormat",useListeningStatus:"sfm_useListeningStatus",missingArt:"sfm_missingArt",showStatsFmLogo:"sfm_showLogo",alwaysHideArt:"sfm_alwaysHideArt"}},{oldPlugin:"JellyfinRichPresence",enableKey:"jf_enabled",keys:{serverUrl:"jf_serverUrl",apiKey:"jf_apiKey",userId:"jf_userId",nameDisplay:"jf_nameDisplay",customName:"jf_customName",coverType:"jf_coverType",episodeFormat:"jf_episodeFormat",showEpisodeName:"jf_showEpisodeName",overrideRichPresenceType:"jf_overrideType",showPausedState:"jf_showPausedState",privacyMode:"jf_privacyMode"}},{oldPlugin:"GensokyoRadioRPC",enableKey:"gr_enabled",keys:{refreshInterval:"gr_refreshInterval"}}]});var Zte={};Bt(Zte,{start:()=>i4t,stop:()=>a4t});async function DFe(e){return(await Ri.fetchAssetIds(NFe,[e]))[0]}function Qte(e){Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:e,socketId:n4t})}async function PFe(){let{abs_serverUrl:e,abs_username:t,abs_password:o}=Nt.store;if(!e||!t||!o)return nL.warn("AudioBookShelf server URL, username, or password is not set."),ne("AudioBookShelf RPC is not configured.","failure",{duration:15e3}),!1;try{let r=e.replace(/\/$/,""),n=await fetch(`${r}/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:t,password:o})});if(!n.ok)throw`${n.status} ${n.statusText}`;return Jg=(await n.json()).user?.token,!!Jg}catch(r){return nL.error("Failed to authenticate with AudioBookShelf",r),Jg=null,!1}}async function BFe(){if(!Jg&&!await PFe())return null;try{let e=Nt.store.abs_serverUrl.replace(/\/$/,""),t=await fetch(`${e}/api/me/listening-sessions`,{headers:{Authorization:`Bearer ${Jg}`}});if(!t.ok){if(t.status===401&&(Jg=null,await PFe()))return BFe();throw`${t.status} ${t.statusText}`}let{sessions:o}=await t.json(),r=o.find(u=>u.updatedAt&&!u.isFinished);if(!r?.updatedAt||(Date.now()-r.updatedAt)/1e3>30)return null;let{mediaMetadata:n,mediaType:a,duration:s,currentTime:l,libraryItemId:c}=r;return n?{name:n.title||"Unknown",type:a||"book",author:n.author||n.publisher,series:n.series?.[0]?.name,duration:s,currentTime:l,imageUrl:c?`${e}/api/items/${c}/cover`:void 0,isFinished:r.isFinished||!1}:null}catch(e){return nL.error("Failed to query AudioBookShelf API",e),null}}async function r4t(){let e=await BFe();if(!e||e.isFinished)return null;let t=e.imageUrl,o={large_image:t?await DFe(t):await DFe("audiobookshelf"),large_text:e.series||e.author||void 0},r=e.name,n=e.series&&e.author?`${e.series} \u2022 ${e.author}`:e.author||"AudioBook",a=e.currentTime!=null&&e.duration!=null?{start:Date.now()-e.currentTime*1e3,end:Date.now()+(e.duration-e.currentTime)*1e3}:void 0;return{application_id:NFe,name:"AudioBookShelf",details:r,state:n,assets:o,timestamps:a,type:2,flags:1}}async function MFe(){try{Qte(await r4t())}catch(e){nL.error("Failed to update presence",e),Qte(null)}}function i4t(){Jg=null,MFe(),Kte=setInterval(MFe,1e4)}function a4t(){clearInterval(Kte),Kte=void 0,Jg=null,Qte(null)}var NFe,n4t,nL,Jg,Kte,RFe=h(()=>{"use strict";d();He();C();Mm();NFe="1381423044907503636",n4t="RichPresence_ABS",nL=new ie("RichPresence:AudioBookShelf"),Jg=null});var Xte={};Bt(Xte,{start:()=>d4t,stop:()=>p4t});function Jte(e){Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:e,socketId:c4t})}async function LFe(e){return(await Ri.fetchAssetIds(FFe,[e]))[0]}async function u4t(){let e=await s4t.fetchTrackData();return e?{application_id:FFe,name:"Gensokyo Radio",details:e.title,state:e.artist,timestamps:{start:e.position*1e3,end:e.duration*1e3},assets:{large_image:await LFe(e.artwork),large_text:e.album,small_image:await LFe("logo"),small_text:"Gensokyo Radio"},type:2,flags:1}:null}async function OFe(){try{Jte(await u4t())}catch(e){l4t.error("Failed to update presence",e),Jte(null)}}function d4t(){OFe(),Yte=setInterval(OFe,(Nt.store.gr_refreshInterval??15)*1e3)}function p4t(){clearInterval(Yte),Yte=void 0,Jte(null)}var s4t,l4t,FFe,c4t,Yte,_Fe=h(()=>{"use strict";d();He();co();C();Mm();s4t=VencordNative.pluginHelpers.RichPresence,l4t=new ie("RichPresence:GensokyoRadio"),FFe="1253772057926303804",c4t="RichPresence_GR"});var toe={};Bt(toe,{start:()=>x4t,stop:()=>v4t});async function f4t(e){return(await Ri.fetchAssetIds(zFe,[e]))[0]}function eoe(e){Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:e,socketId:m4t})}async function g4t(){let{jf_serverUrl:e,jf_apiKey:t,jf_userId:o}=Nt.store;if(!e||!t||!o)return NA||(rL.warn("Jellyfin server URL, API key, or user ID is not set."),ne("Jellyfin RPC is not configured.","failure",{duration:15e3}),NA=!0),null;try{let r=(e.startsWith("http")?e:`https://${e}`).replace(/\/$/,""),n=await fetch(`${r}/Sessions?api_key=${t}`);if(!n.ok)throw`${n.status} ${n.statusText}`;if(!(n.headers.get("content-type")??"").includes("application/json"))return NA||(rL.error("Jellyfin returned non-JSON response. Check your server URL and API key."),ne("Jellyfin returned an invalid response. Your API key may be wrong.","failure",{duration:15e3}),NA=!0),null;let l=(await n.json()).find(m=>m.UserId===o&&m.NowPlayingItem);if(!l?.NowPlayingItem)return null;let c=l.NowPlayingItem,u=l.PlayState;if(u?.IsPaused&&!Nt.store.jf_showPausedState)return null;let p=c.ImageTags?.Primary?`${r}/Items/${c.Type==="Episode"&&c.SeriesId&&Nt.store.jf_coverType==="series"?c.SeriesId:c.Id}/Images/Primary`:void 0;return{name:c.Name||"Unknown",type:c.Type||"Unknown",artist:c.Artists?.[0]||c.AlbumArtist,album:c.Album,seriesName:c.SeriesName,seasonNumber:c.ParentIndexNumber,episodeNumber:c.IndexNumber,year:c.ProductionYear,url:`${r}/web/#!/details?id=${c.Id}`,imageUrl:p,duration:c.RunTimeTicks?Math.floor(c.RunTimeTicks/1e7):void 0,position:u?.PositionTicks?Math.floor(u.PositionTicks/1e7):void 0,isPaused:!!u?.IsPaused}}catch(r){return rL.error("Failed to query Jellyfin API",r),null}}async function h4t(){let{store:e}=Nt,t=await g4t();if(!t)return null;let o;e.jf_overrideType!=="off"?o=parseInt(e.jf_overrideType,10):o=t.type==="Audio"?2:3;let r=p=>p.replace(/\{name\}/g,t.name||"").replace(/\{series\}/g,t.seriesName||"").replace(/\{season\}/g,t.seasonNumber?.toString()||"").replace(/\{episode\}/g,t.episodeNumber?.toString()||"").replace(/\{artist\}/g,t.artist||"").replace(/\{album\}/g,t.album||"").replace(/\{year\}/g,t.year?.toString()||""),n;switch(e.jf_nameDisplay||"default"){case"full":t.type==="Episode"&&t.seriesName?n=e.jf_privacyMode?`${t.seriesName} - [Episode Hidden]`:`${t.seriesName} - ${t.name}`:t.type==="Audio"?n=e.jf_privacyMode?"[Track Hidden]":`${t.artist||"Unknown Artist"} - ${t.name}`:n=e.jf_privacyMode?"[Movie Hidden]":t.name||"Jellyfin";break;case"custom":n=r(e.jf_customName||"{name} on Jellyfin"),e.jf_privacyMode&&(n=n.replace(t.name||"","[Title Hidden]").replace(t.seriesName||"","[Series Hidden]").replace(t.artist||"","[Artist Hidden]").replace(t.album||"","[Album Hidden]"));break;default:t.type==="Episode"&&t.seriesName?n=t.seriesName:n=e.jf_privacyMode?"[Media Hidden]":t.name||"Jellyfin";break}let s={large_image:!e.jf_privacyMode&&t.imageUrl?await f4t(t.imageUrl):void 0,large_text:t.seriesName||t.album||void 0},l=()=>{let p;return t.type==="Episode"&&t.seriesName?p=e.jf_privacyMode?"Watching a TV Show":t.seriesName:p=e.jf_privacyMode?"Watching Something":t.name,t.isPaused&&(p+=" - Paused"),p},c=()=>{let p;if(t.type==="Episode"&&t.seriesName){let m="",g=t.seasonNumber,x=t.episodeNumber,v=e.jf_episodeFormat||"long";if(g!=null&&x!=null)switch(v){case"long":m=`S${g.toString().padStart(2,"0")}E${x.toString().padStart(2,"0")}`;break;case"short":m=`${g}x${x.toString().padStart(2,"0")}`;break;case"fulltext":m=`Season ${g} Episode ${x}`;break}else g!=null?m=v==="fulltext"?`Season ${g}`:`S${g.toString().padStart(2,"0")}`:x!=null&&(m=v==="fulltext"?`Episode ${x}`:`E${x.toString().padStart(2,"0")}`);p=e.jf_showEpisodeName&&t.name&&!e.jf_privacyMode?`${m} - ${t.name}`:m}else e.jf_privacyMode?p=t.type==="Audio"?"Listening to music":t.year?"(????)":void 0:p=t.artist||(t.year?`(${t.year})`:void 0);if(t.isPaused){let m=t.position!=null&&t.duration!=null?`${ef(t.position*1e3)} / ${ef(t.duration*1e3)}`:void 0;return[p,m].filter(Boolean).join(" - ")||"Paused"}return p},u=!t.isPaused&&t.position!=null&&t.duration!=null?{start:Date.now()-t.position*1e3,end:Date.now()+(t.duration-t.position)*1e3}:void 0;return{application_id:zFe,name:n,details:l(),state:c()||"something",assets:s,timestamps:u,type:o,flags:1}}async function UFe(){try{eoe(await h4t())}catch(e){rL.error("Failed to update presence",e),eoe(null)}}function x4t(){NA=!1,UFe(),Vte=setInterval(UFe,1e4)}function v4t(){clearInterval(Vte),Vte=void 0,eoe(null)}var zFe,m4t,rL,Vte,NA,$Fe=h(()=>{"use strict";d();He();Ta();C();Mm();zFe="1381368130164625469",m4t="RichPresence_JF",rL=new ie("RichPresence:Jellyfin"),NA=!1});var HFe=xa((_Cn,GFe)=>{d();(function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t={rotl:function(o,r){return o<>>32-r},rotr:function(o,r){return o<<32-r|o>>>r},endian:function(o){if(o.constructor==Number)return t.rotl(o,8)&16711935|t.rotl(o,24)&4278255360;for(var r=0;r0;o--)r.push(Math.floor(Math.random()*256));return r},bytesToWords:function(o){for(var r=[],n=0,a=0;n>>5]|=o[n]<<24-a%32;return r},wordsToBytes:function(o){for(var r=[],n=0;n>>5]>>>24-n%32&255);return r},bytesToHex:function(o){for(var r=[],n=0;n>>4).toString(16)),r.push((o[n]&15).toString(16));return r.join("")},hexToBytes:function(o){for(var r=[],n=0;n>>6*(3-s)&63)):r.push("=");return r.join("")},base64ToBytes:function(o){o=o.replace(/[^A-Z0-9+\/]/ig,"");for(var r=[],n=0,a=0;n>>6-a*2);return r}};GFe.exports=t})()});var noe=xa((zCn,jFe)=>{d();var ooe={utf8:{stringToBytes:function(e){return ooe.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(ooe.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],o=0;o{d();WFe.exports=function(e){return e!=null&&(qFe(e)||y4t(e)||!!e._isBuffer)};function qFe(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function y4t(e){return typeof e.readFloatLE=="function"&&typeof e.slice=="function"&&qFe(e.slice(0,0))}});var ZFe=xa((jCn,QFe)=>{d();(function(){var e=HFe(),t=noe().utf8,o=KFe(),r=noe().bin,n=function(a,s){a.constructor==String?s&&s.encoding==="binary"?a=r.stringToBytes(a):a=t.stringToBytes(a):o(a)?a=Array.prototype.slice.call(a,0):!Array.isArray(a)&&a.constructor!==Uint8Array&&(a=a.toString());for(var l=e.bytesToWords(a),c=a.length*8,u=1732584193,p=-271733879,m=-1732584194,g=271733878,x=0;x>>24)&16711935|(l[x]<<24|l[x]>>>8)&4278255360;l[c>>>5]|=128<>>9<<4)+14]=c;for(var v=n._ff,y=n._gg,A=n._hh,k=n._ii,x=0;x>>0,p=p+I>>>0,m=m+E>>>0,g=g+N>>>0}return e.endian([u,p,m,g])};n._ff=function(a,s,l,c,u,p,m){var g=a+(s&l|~s&c)+(u>>>0)+m;return(g<>>32-p)+s},n._gg=function(a,s,l,c,u,p,m){var g=a+(s&c|l&~c)+(u>>>0)+m;return(g<>>32-p)+s},n._hh=function(a,s,l,c,u,p,m){var g=a+(s^l^c)+(u>>>0)+m;return(g<>>32-p)+s},n._ii=function(a,s,l,c,u,p,m){var g=a+(l^(s|~c))+(u>>>0)+m;return(g<>>32-p)+s},n._blocksize=16,n._digestsize=16,QFe.exports=function(a,s){if(a==null)throw new Error("Illegal argument "+a);var l=e.wordsToBytes(n(a,s));return s&&s.asBytes?l:s&&s.asString?r.bytesToString(l):e.bytesToHex(l)}})()});var soe={};Bt(soe,{forceUpdate:()=>k4t,start:()=>A4t,stop:()=>C4t});function JFe(e){return(0,YFe.default)(e)}function iL(e,t){return e?e.replaceAll("{song}",t.title??"").replaceAll("{artist}",t.artist??"").replaceAll("{album}",t.album??"").replaceAll("{year}",t.year?`${t.year}`:"").replaceAll("{quality}",t.suffix?`${t.suffix.toUpperCase()}${t.bitRate?" "+t.bitRate+"kbps":""}`:""):""}async function roe(e,t){return(await Ri.fetchAssetIds(e,[t]))[0]}function ioe(e){Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:e,socketId:b4t})}async function S4t(e){let{nd_serverUrl:t,nd_username:o,nd_password:r}=Nt.store;if(!t||!o||!r)return zb.warn("Navidrome server URL, username, or password is not set."),null;try{let n=fc(t);if(!n)return zb.warn("Navidrome server URL is invalid."),null;if(n.protocol!=="https:")return zb.warn("Navidrome server URL must use HTTPS."),null;let a=Math.random().toString(36).substring(2,8),s=JFe((r??"")+a),l=n.href.replace(/\/$/,""),c=`u=${encodeURIComponent(o)}&t=${s}&s=${a}&v=1.12.0&c=equicord-rpc&f=json`,u=await fetch(`${l}/rest/getNowPlaying?${c}`,{signal:e});if(!u.ok)throw new Error(`${u.status} ${u.statusText}`);let p=await u.json();if(p["subsonic-response"]?.status==="failed")return zb.warn("Navidrome API error:",p["subsonic-response"].error?.message),null;let m=p["subsonic-response"]?.nowPlaying?.entry;return!m||!Array.isArray(m)||m.length===0?null:m.find(x=>x.username?.toLowerCase()===o.toLowerCase())??null}catch(n){if(n instanceof Error&&n.name==="AbortError")throw n;return zb.error("Failed to fetch from Navidrome API",n),null}}function XFe(){return JSON.stringify({nd_clientId:Nt.store.nd_clientId,nd_showSmallImage:Nt.store.nd_showSmallImage,nd_username:Nt.store.nd_username,nd_password:Nt.store.nd_password,nd_serverUrl:Nt.store.nd_serverUrl,nd_nameString:Nt.store.nd_nameString,nd_detailsString:Nt.store.nd_detailsString,nd_stateString:Nt.store.nd_stateString,nd_largeTextString:Nt.store.nd_largeTextString,nd_activityType:Nt.store.nd_activityType,nd_statusDisplayType:Nt.store.nd_statusDisplayType,nd_albumArtMode:Nt.store.nd_albumArtMode,nd_lastfmApiKey:Nt.store.nd_lastfmApiKey,nd_showAlbum:Nt.store.nd_showAlbum,nd_hideOnPause:Nt.store.nd_hideOnPause})}async function w4t(e){let t=await S4t(e);if(e?.aborted){let te=new Error("Aborted");throw te.name="AbortError",te}if(!t)return null;let o=XFe(),r=t.state?.toLowerCase()==="paused";if(t.id===$b&&Gb&&Hb===o){let te=!1;if(t.positionMs!==void 0&&!r&&jc){let xe=Date.now()-jc;Math.abs(xe-t.positionMs)>2e3&&(te=!0)}if(t.state===RA&&(t.minutesAgo??0)===(Vg??0)&&!te)return Gb}let{nd_clientId:n,nd_showSmallImage:a,nd_serverUrl:s,nd_showAlbum:l,nd_nameString:c,nd_detailsString:u,nd_stateString:p,nd_largeTextString:m,nd_activityType:g,nd_statusDisplayType:x,nd_lastfmApiKey:v,nd_hideOnPause:y}=Nt.store;if(r&&y)return Xg=void 0,null;let A=n?.trim(),k=A===""?"1470554657506984069":A??"1470554657506984069",w=s?.trim(),I=fc(w??""),E=I?I.href.replace(/\/$/,""):null,N=(t.duration??0)*1e3,B=t.minutesAgo??0;if(t.id!==$b||!jc){$b=t.id;let te=t.positionMs??B*60*1e3;jc=Date.now()-te,Vg=B}else{if(t.positionMs!==void 0){if(!r){let te=Date.now()-jc;Math.abs(te-t.positionMs)>2e3&&(jc=Date.now()-t.positionMs)}}else if(B<(Vg??0)||B>(Vg??0)+1){let te=B*60*1e3;jc=Date.now()-te}Vg=B}r?Xg||(Xg=Date.now()):Xg=void 0;let _=jc+N;if(!r&&N>0&&Date.now()>=_)return null;let $=Number(g??2)===0?"Navidrome":iL(c||"Navidrome",t),re=iL(u,t),Z=iL(p,t);r&&(Z=Z?`${Z} (Paused)`:"Paused");let ee={};if(l&&m){let te=iL(m,t);te&&(Number(g??2)===0?Z=Z?`${Z} \u2022 ${te}`:te:ee.large_text=te)}let ae=Nt.store.nd_albumArtMode??"none",ge=null;if(ae==="instance"&&t.coverArt&&E){let{nd_username:te,nd_password:xe}=Nt.store,me=Math.random().toString(36).substring(2,8),ze=JFe((xe??"")+me);ge=`${E}/rest/getCoverArt?id=${encodeURIComponent(t.coverArt)}&u=${encodeURIComponent(te??"")}&t=${ze}&s=${me}&v=1.12.0&c=equicord-rpc`}else if(ae==="lastfm"&&t.artist){let xe=v?.trim()||"feff915bf5987580c9dc354d523dc6b9",me=`${t.id}:${xe}`;if(BA.has(me))ge=BA.get(me)??null;else try{let ze=encodeURIComponent(t.artist),dt;if(t.album){let pt=encodeURIComponent(t.album);dt=(await(await fetch(`https://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=${xe}&artist=${ze}&album=${pt}&format=json`,{signal:e})).json())?.album?.image?.at(-1)?.["#text"]}if(!dt&&t.title){let pt=encodeURIComponent(t.title);dt=(await(await fetch(`https://ws.audioscrobbler.com/2.0/?method=track.getinfo&api_key=${xe}&artist=${ze}&track=${pt}&format=json`,{signal:e})).json())?.track?.album?.image?.at(-1)?.["#text"]}ge=dt??null,BA.set(me,ge)}catch(ze){if(ze instanceof Error&&ze.name==="AbortError")throw ze;ge=null,BA.set(me,null)}}let ke;ge?ke=roe(k,ge).catch(()=>"navidrome"):ke=roe(k,"navidrome").catch(()=>"navidrome");let Ee;a&&(Ee=roe(k,"navidrome").catch(()=>"navidrome"),ee.small_text="Navidrome");let[Ue,it]=await Promise.all([ke,Ee??Promise.resolve("")]);if(ee.large_image=Ue,a&&it&&(ee.small_image=it),e?.aborted){let te=new Error("Aborted");throw te.name="AbortError",te}let se={application_id:k,name:$||"Navidrome",details:re||void 0,state:Z||void 0,status_display_type:x?{off:0,artist:1,track:2}[x]:void 0,type:r&&!y?0:Number(g??2),flags:1,timestamps:r&&!y?{start:Xg}:{start:jc,end:N>0?_:void 0},assets:ee};return Hb=o,Gb=se,RA=t.state,se}async function aoe(){try{let e=await w4t(mp?.signal);ioe(e),e||($b=void 0,jc=void 0,Vg=void 0,Gb=void 0,Hb=void 0,RA=void 0,Xg=void 0)}catch(e){if(e instanceof Error&&e.name==="AbortError")return;zb.error("Failed to update presence",e),ioe(null),$b=void 0,jc=void 0,Xg=void 0,Vg=void 0,Gb=void 0,Hb=void 0,RA=void 0}if(mp&&!mp.signal.aborted){let e=Nt.store.nd_refreshInterval??10;aL=setTimeout(aoe,e*1e3)}}function A4t(){mp=new AbortController,aoe()}function k4t(){let e=XFe();Hb!==e&&mp&&!mp.signal.aborted&&(mp.abort(),clearTimeout(aL),mp=new AbortController,aoe())}function C4t(){mp?.abort(),mp=void 0,clearTimeout(aL),BA.clear(),aL=void 0,$b=void 0,jc=void 0,Xg=void 0,Vg=void 0,Gb=void 0,Hb=void 0,RA=void 0,ioe(null)}var YFe,b4t,zb,aL,mp,$b,jc,Xg,RA,Vg,Gb,Hb,BA,VFe=h(()=>{"use strict";d();He();Be();co();C();YFe=Xu(ZFe());Mm();b4t="RichPresence_Navidrome",zb=new ie("RichPresence:Navidrome"),BA=new Map});var poe={};Bt(poe,{start:()=>M4t,stop:()=>N4t});async function loe(e){return(await Ri.fetchAssetIds(sL,[e]))[0]}function doe(e){Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:e,socketId:I4t})}async function E4t(){if(!Nt.store.sfm_username)return null;try{let e=await fetch(`https://api.stats.fm/api/v1/users/${Nt.store.sfm_username}/streams/current`);if(!e.ok)throw`${e.status} ${e.statusText}`;let t=await e.json();if(!t.item)return coe.error("Error from Stats.fm API",t),null;let o=t.item.track;return o?{name:o.name||"Unknown",albums:o.albums.map(r=>r.name).join(", ")||"Unknown",artists:o.artists[0]?.name??"Unknown",url:`https://stats.fm/track/${o.id}`,imageUrl:o.albums[0]?.image}:null}catch(e){return coe.error("Failed to query Stats.fm API",e),null}}function D4t(e){if(!Nt.store.sfm_alwaysHideArt&&e.imageUrl&&!e.imageUrl.includes(T4t))return e.imageUrl;if(Nt.store.sfm_missingArt==="placeholder")return"placeholder"}async function P4t(){if(Nt.store.sfm_hideWithExternalRPC&&e_e.getActivities().some(a=>a.application_id!==sL)||Nt.store.sfm_hideWithSpotify&&e_e.getActivities().some(a=>a.type===2&&a.application_id!==sL))return null;let e=await E4t();if(!e)return null;let t=D4t(e),o=t?{large_image:await loe(t),large_text:e.albums||void 0,...Nt.store.sfm_showLogo&&{small_image:await loe("statsfm-large"),small_text:"Stats.fm"}}:{large_image:await loe("statsfm-large"),large_text:e.albums||void 0},r=[];Nt.store.sfm_shareUsername&&r.push({label:"Stats.fm Profile",url:`https://stats.fm/${Nt.store.sfm_username}`}),Nt.store.sfm_shareSong&&r.push({label:"View Song",url:e.url});let n=(()=>{switch(Nt.store.sfm_nameFormat){case"artist-first":return e.artists+" - "+e.name;case"song-first":return e.name+" - "+e.artists;case"artist":return e.artists;case"song":return e.name;case"album":return e.albums||Nt.store.sfm_statusName;default:return Nt.store.sfm_statusName}})();return{application_id:sL,name:n,details:e.name,state:e.artists,assets:o,buttons:r.length?r.map(a=>a.label):void 0,metadata:r.length?{button_urls:r.map(a=>a.url)}:void 0,type:Nt.store.sfm_useListeningStatus?2:0,flags:1}}async function t_e(){try{doe(await P4t())}catch(e){coe.error("Failed to update presence",e),doe(null)}}function M4t(){t_e(),uoe=setInterval(t_e,16e3)}function N4t(){clearInterval(uoe),uoe=void 0,doe(null)}var sL,T4t,I4t,coe,e_e,uoe,o_e=h(()=>{"use strict";d();He();co();le();C();Mm();MA();sL="1325126169179197500",T4t="2a96cbd8b46e442fc41c2b86b821562f",I4t="RichPresence_SFM",coe=new ie("RichPresence:StatsFm"),e_e=Ae("getLocalPresence")});var n_e=h(()=>{"use strict";d()});var hoe={};Bt(hoe,{start:()=>z4t,stop:()=>$4t});function F4t(e,t,o){let r,n;return function(...a){r||(e(...a),r=!0,setTimeout(()=>r=!1,t),o&&(clearTimeout(n),n=setTimeout(o,t*2)))}}async function moe(e){return/https?:\/\/(cdn|media)\.discordapp\.(com|net)\/attachments\//.test(e)?"mp:"+e.replace(/https?:\/\/(cdn|media)\.discordapp\.(com|net)\//,""):(await Ri.fetchAssetIds(r_e,[e]))[0]}async function U4t(e){let t=JSON.parse(e);if(t.error)return Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:null,socketId:lL});let{state:o,session:r,profile:n,beatmap:a,play:s,resultsScreen:l}=t,c={};switch(n.mode.number){case 0:c.small_image=B4t,c.small_text="osu!";break;case 3:c.small_image=R4t,c.small_text="osu!mania";break;case 1:c.small_image=L4t,c.small_text="osu!taiko";break;case 2:c.small_image=O4t,c.small_text="osu!catch";break}let u={application_id:r_e,name:"osu!",type:0,assets:c,timestamps:{start:Date.now()-r.playTime},flags:1},p="",m="",g="",x="",v="",y="",A="",k="";switch(o.number){case 2:{u.type=n.banchoStatus.number===2?0:3;let w=n.banchoStatus.number===2?"":`${s.playerName} | `;p=s.mods.name?`+${s.mods.name} `:"",u.name=`${w}${a.artist} - ${a.title} [${a.version}] ${p}(${a.mapper}, ${a.stats.stars.total.toFixed(2)}*)`,g=s.hits[0]===0&&s.hits.sliderBreaks===0?`${s.combo.current}x`:`${s.combo.current}x/${s.combo.max}x`,k=s.hits[0]===0&&s.hits.sliderBreaks===0?`${Math.round(s.pp.current)}pp`:`${Math.round(s.pp.current)}pp/${Math.round(s.pp.fc)}pp`,u.details=`${s.accuracy.toFixed(2)}% | ${g} | ${k}`,x=s.hits[100]>0?`${s.hits[100]}x100`:"",v=s.hits[50]>0?`${s.hits[50]}x50`:"",y=s.hits[0]>0?`${s.hits[0]}xMiss`:"",A=s.hits.sliderBreaks>0?`${s.hits.sliderBreaks}xSB`:"",u.state=[x,v,y,A].filter(Boolean).join(" | ");let I=await moe(`https://raw.githubusercontent.com/AutumnVN/gosu-rich-presence/main/grade/${s.rank.current.toLowerCase().replace("x","ss")}.png`);c.small_image=I,c.small_text=void 0;break}case 7:{u.type=3,p=l.mods.name?`+${l.mods.name} `:"",u.name=`${l.playerName} | ${a.artist} - ${a.title} [${a.version}] ${p}(${a.mapper}, ${a.stats.stars.total.toFixed(2)}*)`,m=l.maxCombo===a.stats.maxCombo?"FC":`| ${l.maxCombo}x/${a.stats.maxCombo}x`,k=l.pp.current?Math.round(l.pp.current)===Math.round(l.pp.fc)?`| ${Math.round(l.pp.current)}pp`:`| ${Math.round(l.pp.current)}pp/${Math.round(l.pp.fc)}pp`:"",u.details=`${l.accuracy.toFixed(2)}% ${m} ${k}`,x=l.hits[100]>0?`${l.hits[100]}x100`:"",v=l.hits[50]>0?`${l.hits[50]}x50`:"",y=l.hits[0]>0?`${l.hits[0]}xMiss`:"",A=s.hits.sliderBreaks>0?`${s.hits.sliderBreaks}xSB`:"",u.state=[x,v,y].filter(Boolean).join(" | ");let w=await moe(`https://raw.githubusercontent.com/AutumnVN/gosu-rich-presence/main/grade/${l.rank.toLowerCase().replace("x","ss")}.png`);c.small_image=w,c.small_text=void 0;break}default:{switch(u.type=2,p=s.mods.name?`+${s.mods.name} `:"",u.name=`${a.artist} - ${a.title} [${a.version}] ${p}(${a.mapper}, ${a.stats.stars.total.toFixed(2)}*)`,o.number){case 0:u.details="Main Menu";break;case 1:u.details="Edit";break;case 4:u.details="Song Select (Edit)";break;case 5:u.details="Song Select (Play)";break;case 6:u.details="Select Drawings";break;case 8:u.details="Update";break;case 9:u.details="Busy";break;case 11:u.details="Lobby";break;case 12:u.details="Match Setup";break;case 13:u.details="Select Multi";break;case 14:u.details="Ranking Vs";break;case 15:u.details="Online Selection";break;case 16:u.details="Options Offset Wizard";break;case 17:u.details="Ranking Tag Coop";break;case 18:u.details="Ranking Team";break;case 19:u.details="Beatmap Import";break;case 20:u.details="Package Updater";break;case 21:u.details="Benchmark";break;case 22:u.details="Tourney";break;case 23:u.details="Charts";break}switch(n.banchoStatus.number){case 0:u.state="Idle";break;case 1:u.state="AFK";break;case 2:u.state="Playing";break;case 3:u.state="Editing";break;case 4:u.state="Modding";break;case 5:u.state="Multiplayer";break;case 6:u.state="Watching";break;case 8:u.state="Testing";break;case 9:u.state="Submitting";break;case 10:u.state="Paused";break;case 11:u.state="Lobby";break;case 12:u.state="Multiplaying";break;case 13:u.state="osu!direct";break}break}}if(a.set>0){let w=await moe(`https://assets.ppy.sh/beatmaps/${a.set}/covers/list@2x.jpg`);(await fetch(w.replace(/^mp:/,"https://media.discordapp.net/"),{method:"HEAD"})).ok&&(c.large_image=w)}Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:u,socketId:lL})}function z4t(){goe=!0,(function e(){Px=new WebSocket("ws://127.0.0.1:24050/websocket/v2"),Px.addEventListener("error",()=>Px.close()),Px.addEventListener("close",()=>{goe&&(foe=setTimeout(e,5e3))}),Px.addEventListener("message",({data:t})=>_4t(t))})()}function $4t(){goe=!1,foe&&clearTimeout(foe),Px&&Px.close(),Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:null,socketId:lL})}var r_e,B4t,R4t,L4t,O4t,lL,Px,foe,goe,_4t,i_e=h(()=>{"use strict";d();co();C();n_e();r_e="367827983903490050",B4t="373370493127884800",R4t="373370588703621136",L4t="373370519891738624",O4t="373370543161999361",lL="RichPresence_Tosu",goe=!1;_4t=F4t(U4t,3e3,()=>Q.dispatch({type:"LOCAL_ACTIVITY_UPDATE",activity:null,socketId:lL}))});function a_e(){let e=Nt.store.enabled;for(let[t,o]of Object.entries(s_e)){let r=e&&!!Nt.store[G4t[t]],n=LA.has(t);r&&!n?(xoe.info(`Starting ${t} service`),o.start(),LA.add(t)):!r&&n?(xoe.info(`Stopping ${t} service`),o.stop(),LA.delete(t)):r&&n&&o.forceUpdate&&o.forceUpdate()}}function H4t(){for(let e of LA)xoe.info(`Stopping ${e} service`),s_e[e].stop();LA.clear()}var xoe,s_e,G4t,LA,cL,l_e=h(()=>{"use strict";d();O();He();R();EFe();RFe();_Fe();$Fe();VFe();o_e();i_e();Mm();MA();xoe=new ie("RichPresence"),s_e={audiobookshelf:Zte,tosu:hoe,statsfm:poe,jellyfin:toe,gensokyoRadio:Xte,navidrome:soe},G4t={audiobookshelf:"abs_enabled",tosu:"tosu_enabled",statsfm:"sfm_enabled",jellyfin:"jf_enabled",gensokyoRadio:"gr_enabled",navidrome:"nd_enabled"},LA=new Set;cL=S({name:"RichPresence",description:"Unified rich presence hub for AudioBookShelf, osu!, stats.fm, Jellyfin, Navidrome, and Gensokyo Radio.",tags:["Activity"],authors:[F.vmohammad,b.AutumnVN,F.Crxa,b.SerStars,F.ZcraftElite,F.qouesm,b.RyanCaoDev,F.Prince527,F.creations,F.Star123451],reporterTestable:2,settings:Nt,start(){IFe(),a_e(),qte(a_e)},stop(){H4t(),qte(null)}})});function voe(e){return/^\d{17,20}$/.test(e)&&!Number.isNaN(en.extractTimestamp(e))}function c_e(){let e=Yo.getActivities(L.getCurrentUser().id);return i(f,null,i(Ot,null,"IDs of currently running activities"),e.length===0?i(U,null,"No running activities"):e.map(t=>(t.flags&48)===48?null:i(U,null,t.name,": ",t.application_id)),i(Ot,{className:z.top8},"Available variables"),i(U,null,"In all fields (except stream URL), you can put in variables that'll automatically be replaced by their original content:",i("pre",{style:{fontFamily:"monospace"}},":name:, :details:, :state:",i("br",null),":large_image:, :large_text:, :small_image:, :small_text:")),i(Ot,{className:z.top8},"More details"),i(U,null,"Leave a field empty to leave it as is.",i("br",null),'Set a field to "null" to hide it on the presence.',i("br",null),"You may need to reload Discord for changes to apply."))}function u_e({appIds:e,update:t,save:o}){async function r(n,a,s){a===e.length-1&&e.push(uL()),e[a][s]=n,o(),t()}return i(f,null,e.map((n,a)=>i(Ht,{style:{padding:"1em",opacity:n.enabled?"":"60%"},key:a},voe(n.appId)?i(mo,{title:"Apply edits to app",value:n.enabled,onChange:s=>{r(s,a,"enabled")},className:z.bottom8,hideBorder:!0}):i(Ot,null,"Add new application"),i(oe,{className:`${z.top8} ${z.bottom8}`},"Application ID"),i(Cd,{initialValue:n.appId,onChange:async s=>{r(s,a,"appId")},validate:s=>!s||voe(s)||"Invalid application ID"}),voe(n.appId)&&i(f,null,i(oe,{className:z.top8},"New activity type"),i(qt,{options:[{label:"Playing",value:0},{label:"Watching",value:3},{label:"Listening",value:2},{label:"Competing",value:5},{label:"Streaming",value:1}],select:s=>{r(s,a,"newActivityType")},className:z.top8,isSelected:s=>n.newActivityType===s,serialize:gc}),n.newActivityType===1&&i(f,null,i(oe,{className:`${z.top8} ${z.bottom8}`},"Stream URL (must be YouTube or Twitch)"),i(Cd,{initialValue:n.newStreamUrl,onChange:async s=>{r(s,a,"newStreamUrl")},validate:s=>/https?:\/\/(www\.)?(twitch\.tv|youtube\.com)\/\w+/.test(s)||"Invalid stream URL"})),n.newActivityType!==1&&i(f,null,i(oe,{className:z.top8},"New name ",n.newActivityType===0&&"(first line)"),i(Te,{className:z.top8,value:n.newName,onChange:async s=>{r(s,a,"newName")}})),i(oe,{className:z.top8},"New details ",n.newActivityType===0?"(second line)":"(first line)"),i(Te,{className:z.top8,value:n.newDetails,onChange:async s=>{r(s,a,"newDetails")}}),i(oe,{className:z.top8},"New state ",n.newActivityType===0?"(third line)":"(second line)"),i(Te,{className:z.top8,value:n.newState,onChange:async s=>{r(s,a,"newState")}}),!n.disableAssets&&i(f,null,i(U,{style:{fontSize:"1.05rem",fontWeight:"500"},className:z.top8},"Large image"),i(oe,{className:z.top8},"Text ",n.newActivityType!==0&&"(also third line)"),i(Te,{className:z.top8,value:n.newLargeImageText,onChange:async s=>{r(s,a,"newLargeImageText")}}),i(oe,{className:z.top8},"URL"),i(Te,{className:z.top8,value:n.newLargeImageUrl,onChange:async s=>{r(s,a,"newLargeImageUrl")}}),i(U,{style:{fontSize:"1.05rem",fontWeight:"500"},className:z.top8},"Small image"),i(oe,{className:z.top8},"Text"),i(Te,{className:z.top8,value:n.newSmallImageText,onChange:async s=>{r(s,a,"newSmallImageText")}}),i(oe,{className:z.top8},"URL"),i(Te,{className:z.top8,value:n.newSmallImageUrl,onChange:async s=>{r(s,a,"newSmallImageUrl")}})),i(mo,{title:"Hide assets (large & small images)",value:n.disableAssets,onChange:s=>{r(s,a,"disableAssets")},className:z.top8,hideBorder:!0}),i(mo,{title:"Hide timestamps",value:n.disableTimestamps,onChange:s=>{r(s,a,"disableTimestamps")},className:z.top8,hideBorder:!0})))))}var d_e=h(()=>{"use strict";d();Qn();Q1();hi();We();Je();Wt();Be();co();C();yoe()});var p_e,uL,dL,j4t,pL,yoe=h(()=>{"use strict";d();on();j();O();Kt();R();co();d_e();p_e="ReplaceActivityType_appids",uL=()=>({appId:"",enabled:!0,newActivityType:0,newName:"",newDetails:"",newState:"",newLargeImageUrl:"",newLargeImageText:"",newSmallImageUrl:"",newSmallImageText:"",newStreamUrl:"",disableTimestamps:!1,disableAssets:!1}),dL=[uL()],j4t=M({replacedAppIds:{type:6,description:"",component:()=>{let e=Vt();return i(f,null,i(u_e,{appIds:dL,update:e,save:async()=>Le.set(p_e,dL)}))}}}),pL=S({name:"RPCEditor",description:"Edit the type and content of any Rich Presence",tags:["Customisation"],authors:[b.Nyako,b.nin0dev],patches:[{find:'"LocalActivityStore"',replacement:{match:/\i\(\i\)\{.{0,25}activity:(\i).*?\}=\i;/,replace:"$&$self.patchActivity($1);"}}],settings:j4t,settingsAboutComponent:()=>i(c_e,null),async start(){dL=await Le.get(p_e)??[uL()]},parseField(e,t){return e==="null"?"":e.replaceAll(":name:",t.name).replaceAll(":details:",t.details??"").replaceAll(":state:",t.state??"").replaceAll(":large_image:",t.assets?.large_image??"").replaceAll(":large_text:",t.assets?.large_text??"").replaceAll(":small_image:",t.assets?.small_image??"").replaceAll(":small_text:",t.assets?.small_text??"")},patchActivity(e){e&&dL.forEach(t=>{if(t.enabled&&t.appId===e.application_id){let o={...e};e.type=t.newActivityType,t.newName&&(e.name=this.parseField(t.newName,o)),t.newActivityType===1&&t.newStreamUrl&&(e.url=t.newStreamUrl),t.newDetails&&(e.details=this.parseField(t.newDetails,o)),t.newState&&(e.state=this.parseField(t.newState,o)),e.assets||(e.assets={}),t.newLargeImageText&&(e.assets.large_text=this.parseField(t.newLargeImageText,o)),t.newLargeImageUrl&&(e.assets.large_image=this.parseField(t.newLargeImageUrl,o)),t.newSmallImageText&&(e.assets.small_text=this.parseField(t.newSmallImageText,o)),t.newSmallImageUrl&&(e.assets.small_image=this.parseField(t.newSmallImageUrl,o)),t.disableAssets&&(e.assets={}),t.disableTimestamps&&(e.timestamps={})}})}})});async function g_e(e,t){try{{let o=new TextEncoder().encode(e);await DiscordNative.fileManager.saveWithDialog(o,t)}At({title:"Save Favorite GIFs",body:`Saved GIFs successfully as ${t}`,color:"var(--text-positive)"})}catch(o){console.error(o),At({title:"Save Favorite GIFs",body:"Failed to save GIFs",color:"var(--text-danger)"})}}function h_e(){return Object.keys(ba.FrecencyUserSettingsActionCreators.getCurrentValue().favoriteGifs.gifs)}async function m_e(){let e=`favorite-gifs-${new Date().toISOString().split("T")[0]}.txt`,t=h_e();if(t.length===0){At({title:"Save Favorite GIFs",body:"No favorite GIFs found..?"});return}let o=t.join(` `);await g_e(o,e)}async function q4t(){let e=h_e();if(e.length===0){At({title:"Save Favorite GIFs",body:"No favorite GIFs found?"});return}At({title:"Save Favorite GIFs",body:`Testing ${e.length} GIFs.. This may take a moment...`});let t=[];if(await Promise.all(e.map(async n=>{try{(await fetch(n,{method:"HEAD"})).ok&&t.push(n)}catch{try{(await fetch(n)).ok&&t.push(n)}catch{}}})),t.length===0){At({title:"Save Favorite GIFs",body:"None of your saved GIFs appear to be working."});return}let o=`working-gifs-${new Date().toISOString().split("T")[0]}.txt`,r=t.join(` `);await g_e(r,o),At({title:"Save Favorite GIFs",body:`Filtered ${e.length-t.length} possibly broken GIFs. Saved ${t.length} working GIFs.`,color:"var(--text-positive)"})}var f_e,mL,x_e=h(()=>{"use strict";d();yr();Fa();Jt();j();Kw();O();R();ul();C();f_e=M({showToolboxButton:{description:"Show 'Save Favorite GIFs' button in Equicord Toolbox (Requires Reload)",type:3,default:!0,restartNeeded:!0,get hidden(){return!Ve(Yp.name)}}}),mL=S({name:"SaveFavoriteGIFs",description:"Export favorited GIF urls",dependencies:["CommandsAPI"],tags:["Emotes","Utility"],authors:[b.thororen],settings:f_e,commands:[{name:"savegifs",description:"Save all favorite GIF urls to a text file",inputType:0,execute:m_e},{name:"saveworkinggifs",description:"Test all favorite GIFs and only save the ones that are still working",inputType:0,execute:q4t}],toolboxActions(){let{showToolboxButton:e}=f_e.use(["showToolboxButton"]);return e?i(P.MenuItem,{id:"save-favorite-gifs-toolbox",label:"Save Favorite GIFs",action:m_e}):null}})});var v_e=h(()=>{});function jb({width:e=20,height:t=20,className:o,color:r}){return i("svg",{"aria-hidden":"true",role:"img",width:e,height:t,className:o,viewBox:"0 0 24 24"},i("g",{fill:"none",fillRule:"evenodd"},i("path",{fill:r??"currentColor",d:"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM9 10H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm-8 4H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2z"}),i("rect",{width:"24",height:"24"})))}function fL({width:e=20,height:t=20,className:o}){return i("svg",{"aria-hidden":"true",role:"img",width:e,height:t,className:o,viewBox:"0 0 24 24",fill:"currentColor"},i("path",{d:"M15 1H9v2h6V1zm-4 13h2V8h-2v6zm8.03-6.61l1.42-1.42c-.43-.51-.9-.99-1.41-1.41l-1.42 1.42A8.962 8.962 0 0 0 12 4c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-2.12-.74-4.07-1.97-5.61zM12 20c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"}))}function y_e(){return i("svg",{width:"20",height:"20",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"}))}var qb=h(()=>{"use strict";d()});async function A_e(){let e=await vt(w_e);gs=Array.isArray(e)?e:[]}async function xL(){await Ct(w_e,gs)}function woe(){return[...gs]}function FA(e){let t=W.getChannel(e);if(!t)return{name:"Unknown",avatar:""};if(t.isDM()){let r=t.recipients?.[0]?L.getUser(t.recipients[0]):null;return r?{name:r.globalName??r.username,avatar:at.getUserAvatarURL(r,!0,64)}:{name:"DM",avatar:""}}if(t.isGroupDM()||t.isMultiUserDM())return{name:t.name||"Group DM",avatar:at.getChannelIconURL(t)??""};let o=$e.getGuild(t.guild_id);return{name:t.name||"Channel",avatar:o?at.getGuildIconURL({id:o.id,icon:o.icon,canAnimate:!0,size:512})??"":""}}function K4t(e){return new Promise(t=>{let o=new Image;o.onload=()=>t({width:o.naturalWidth,height:o.naturalHeight}),o.onerror=()=>t({width:400,height:300}),o.src=e})}function Q4t(e){return new Promise(t=>{let o=document.createElement("video");o.preload="metadata",o.muted=!0,o.playsInline=!0;let r=setTimeout(()=>{o.src="",t(null)},5e3);o.onloadeddata=()=>{clearTimeout(r),o.currentTime=0},o.onerror=()=>{clearTimeout(r),t(null)},o.onseeked=()=>{let n=document.createElement("canvas");n.width=o.videoWidth,n.height=o.videoHeight;let a=n.getContext("2d");if(!a){t(null),o.src="";return}a.drawImage(o,0,0);let s=Math.min(n.width,n.height)*.2,l=n.width/2,c=n.height/2;a.fillStyle="rgba(0, 0, 0, 0.6)",a.beginPath(),a.arc(l,c,s,0,Math.PI*2),a.fill(),a.fillStyle="white",a.beginPath(),a.moveTo(l-s*.3,c-s*.4),a.lineTo(l-s*.3,c+s*.4),a.lineTo(l+s*.5,c),a.closePath(),a.fill(),t({width:o.videoWidth,height:o.videoHeight,previewUrl:n.toDataURL("image/png")}),o.src=""},o.src=e})}async function Z4t(e){let t=[];for(let o=0;o({emoji:s.emoji,count:s.count,count_details:{burst:0,normal:s.count},me:!0,me_burst:!1,burst_count:0,burst_colors:[],burst_me:!1}));(lt.hasPresent(e.channelId)?Promise.resolve():fo.fetchMessages({channelId:e.channelId})).then(()=>{Q.dispatch({type:"MESSAGE_CREATE",channelId:e.channelId,message:{id:o,channel_id:e.channelId,author:{id:t.id,username:t.username,discriminator:t.discriminator||"0",avatar:t.avatar,global_name:t.globalName??null,bot:!1},content:e.content,timestamp:new Date().toISOString(),edited_timestamp:null,tts:!1,mention_everyone:!1,mentions:[],mention_roles:[],attachments:r,embeds:[],pinned:!1,type:0,flags:0,components:[],reactions:n,nonce:o,scheduledMessageData:{scheduledTime:e.scheduledTime,messageId:e.id}},optimistic:!0,sendMessageOptions:{},isPushNotification:!1}),Y4t(e.channelId,o)}).catch(()=>{})}function Y4t(e,t){let o=(r=0)=>{let n=document.getElementById(`chat-messages-${e}-${t}`);return n?(n.classList.add("vc-scheduled-msg-phantom"),!0):(r<20&&setTimeout(()=>o(r+1),100+r*50),!1)};setTimeout(()=>o(),50)}function vL(e){let t=`scheduled-${e.id}`;t0.delete(t),Q.dispatch({type:"MESSAGE_DELETE",channelId:e.channelId,id:t,mlDeleted:!0})}function k_e(e,t,o){let r=Soe.get(e);r&&clearTimeout(r);let n=setTimeout(()=>{Soe.delete(e),J4t(e,t,o)},W4t);Soe.set(e,n)}function J4t(e,t,o){Ka.info("doRecreatePhantomMessage: Recreating phantom message with",o.length,"reactions");let r=t0.get(e);if(!r){Ka.warn("doRecreatePhantomMessage: No phantom data found");return}let n=gs.find(a=>a.id===r.messageId);if(!n){Ka.warn("doRecreatePhantomMessage: No scheduled message found");return}Q.dispatch({type:"MESSAGE_DELETE",channelId:t,id:e,mlDeleted:!0}),setTimeout(()=>{n.reactions=o,Aoe(n)},50)}async function X4t(e,t){return new Promise(o=>{let r=Uint8Array.from(atob(t.data),s=>s.charCodeAt(0)),n=new File([r],t.filename,{type:t.type}),a=new ou({file:n,platform:1},e);a.on("complete",()=>o({id:"0",filename:a.filename,uploaded_filename:a.uploadedFilename})),a.on("error",()=>o(null)),a.upload()})}async function b_e(e,t,o){await mt.post({url:Gt.Endpoints.MESSAGES(e),body:{content:t,nonce:en.fromTimestamp(Date.now()),...o?.length?{channel_id:e,sticker_ids:[],type:0,attachments:o}:{}}})}async function V4t(e,t,o){for(let r of o){let n=r.emoji.id?`${r.emoji.name}:${r.emoji.id}`:encodeURIComponent(r.emoji.name);for(let a=0;a<5;a++)try{await mt.put({url:`/channels/${e}/messages/${t}/reactions/${n}/@me`});break}catch(s){let l=s;if(l.status===429||l.body?.retry_after)await new Promise(c=>setTimeout(c,(l.body?.retry_after??1)*1e3+100));else if(l.status===404)await new Promise(c=>setTimeout(c,1e3*(a+1)));else break}await new Promise(a=>setTimeout(a,350))}}async function e5t(e){try{if(!W.getChannel(e.channelId))return!1;let t=Wb.get(e.id)??e.reactions??[];if(vL(e),Wb.delete(e.id),e.attachments?.length){let o=(await Promise.all(e.attachments.map((r,n)=>X4t(e.channelId,r).then(a=>a?{...a,id:String(n)}:null)))).filter(Boolean);await b_e(e.channelId,e.content,o.length?o:void 0)}else await b_e(e.channelId,e.content);if(t.length){await new Promise(n=>setTimeout(n,1500));let o=lt.getMessages(e.channelId)?._array??[],r=L.getCurrentUser()?.id;for(let n=o.length-1;n>=Math.max(0,o.length-10);n--){let a=o[n];if(a?.author?.id===r&&a?.content===e.content&&!a?.id?.startsWith("scheduled-")){await V4t(e.channelId,a.id,t);break}}}return e0.store.showNotifications&&ne(`Scheduled message sent to ${FA(e.channelId).name}`,D.Type.SUCCESS),!0}catch{return e0.store.showNotifications&&ne("Failed to send scheduled message",D.Type.FAILURE),!1}}async function C_e(e,t,o,r){let n=Math.floor(o/6e4)*6e4;if(gs.filter(l=>l.channelId===e&&l.scheduledTime>=n&&l.scheduledTime=e0.store.maxMessagesPerMinute)return{success:!1,error:`Maximum of ${e0.store.maxMessagesPerMinute} messages per channel per minute reached`};let s={id:`${Date.now()}-${Math.random().toString(36).slice(2,9)}`,channelId:e,content:t,scheduledTime:o,createdAt:Date.now(),attachments:r};return gs.push(s),gs.sort((l,c)=>l.scheduledTime-c.scheduledTime),await xL(),Aoe(s),{success:!0}}async function koe(e){let t=gs.find(o=>o.id===e);t&&vL(t),gs=gs.filter(o=>o.id!==e),await xL()}async function T_e(){for(let e of gs)vL(e);gs=[],await xL()}async function S_e(){if(!boe){boe=!0;try{let e=Date.now(),t=gs.filter(o=>o.scheduledTime<=e);for(let o of t)await koe(o.id),await e5t(o)}finally{boe=!1}}}function Coe(){OA||(S_e(),OA=setInterval(S_e,e0.store.checkIntervalSeconds*1e3))}function Toe(){OA&&(clearInterval(OA),OA=null)}async function I_e(){for(let e of gs)await Aoe(e)}function E_e(){for(let e of gs)vL(e)}function D_e(e,t,o,r){Ka.info("modifyReaction called:",{messageId:e,emoji:o.name,delta:r});let n=t0.get(e);if(!n){Ka.warn("modifyReaction: No phantom data found for messageId =",e);return}let a=gs.find(c=>c.id===n.messageId);if(!a){Ka.warn("modifyReaction: No scheduled message found for id =",n.messageId);return}let s=Wb.get(n.messageId)??[],l=s.findIndex(c=>c.emoji.name===o.name&&c.emoji.id===o.id);Ka.info("modifyReaction: Current reactions count =",s.length,"found at idx =",l),r>0?l>=0?s[l].count+=r:s.push({emoji:{id:o.id??null,name:o.name,animated:o.animated},count:1}):l>=0&&(s[l].count+=r,s[l].count<=0&&s.splice(l,1)),Wb.set(n.messageId,s),a.reactions=s,xL(),Ka.info("modifyReaction: Updated reactions count =",s.length,"calling updatePhantomReactions"),k_e(e,t,s)}function P_e(e,t){return`${e}:${t.name}:${t.id??""}`}function M_e(e,t,o){let r=P_e(e,o),n=gL.get(r),a=Date.now();if(n&&n.action==="add"&&a-n.timestamp{"use strict";d();Io();He();co();C();Ioe();Ka=new ie("ScheduledMessages"),w_e="ScheduledMessages_queue",gs=[],OA=null,boe=!1,t0=new Map,Wb=new Map,gL=new Map,hL=2e3,Soe=new Map,W4t=300});function t5t({rootProps:e,close:t}){let[o,r]=T(woe()),n=async l=>{await koe(l),r(woe()),ne("Scheduled message removed",D.Type.SUCCESS)},a=async()=>{await T_e(),r([]),ne("All scheduled messages cleared",D.Type.SUCCESS)},s=[{text:"Close",variant:"secondary",onClick:t}];return o.length>0&&s.unshift({text:"Clear All",variant:"dangerPrimary",onClick:a}),i(be,{...e,size:"md",title:"Scheduled Messages",actions:s},o.length?i("div",{className:Nm("message-list")},o.map(l=>{let{name:c,avatar:u}=FA(l.channelId),p=W.getChannel(l.channelId);if(!p)return null;let m=p.isPrivate(),g=l.content.length>200?l.content.slice(0,200)+"...":l.content;return i("div",{key:l.id,className:Nm("message-item")},i("div",{className:Nm("message-info")},i("div",{className:Nm("message-header")},u&&i("img",{src:u,className:Nm("message-avatar"),alt:""}),i("span",{className:Nm("message-channel")},m?c:`#${c}`)),i("div",{className:Nm("message-time")},i(fL,{width:14,height:14}),i("span",null,new Date(l.scheduledTime).toLocaleString())),i("div",{className:Nm("message-content")},g)),i(de,{size:"small",variant:"dangerPrimary",onClick:()=>n(l.id)},"Delete"))})):i("div",{className:Nm("empty-state")},i(jb,{width:48,height:48}),i("span",null,"No scheduled messages")))}function bL(){let e=ce(t=>i(o5t,{rootProps:t,close:()=>Lo(e)}))}var Nm,o5t,Eoe=h(()=>{"use strict";d();Tt();Pe();we();C();_A();qb();Nm=K("vc-scheduled-msg-");o5t=H.wrap(t5t,{noop:!0})});function Poe(e){SL=e,Doe.forEach(t=>t(e))}var SL,Doe,R_e,L_e=h(()=>{"use strict";d();Ba();C();qb();Eoe();SL=!1,Doe=new Set;R_e=({isMainChat:e})=>{let[t,o]=T(SL);return G(()=>(Doe.add(o),()=>{Doe.delete(o)}),[]),e?i(Un,{tooltip:t?"Schedule Mode ON (click to disable, right-click for list)":"Schedule Mode OFF (click to enable, right-click for list)",onClick:()=>{Poe(!t)},onContextMenu:a=>{a.preventDefault(),bL()},buttonProps:{"aria-haspopup":"dialog"}},i(jb,{color:t?"var(--status-positive)":void 0})):null}});function O_e({message:e}){let t=t0.get(e?.id)??e?.scheduledMessageData;if(!t)return null;let{scheduledTime:o}=t,r=o-Date.now(),n="";if(r>0){let a=Math.floor(r/6e4),s=Math.floor(a/60),l=Math.floor(s/24);n=l>0?` (${l}d ${s%24}h remaining)`:s>0?` (${s}h ${a%60}m remaining)`:` (${a}m remaining)`}return i("div",{className:n5t("accessory")},i(fL,{width:14,height:14}),i("span",null,"Scheduled for ",new Date(o).toLocaleString(),n))}var n5t,F_e=h(()=>{"use strict";d();we();_A();qb();n5t=K("vc-scheduled-msg-")});function i5t({channelId:e,content:t,attachments:o,rootProps:r,close:n}){let[a,s]=T("delay"),[l,c]=T("5"),[u,p]=T(""),[m,g]=T(""),{name:x,avatar:v}=FA(e),y=W.getChannel(e);if(!y)return null;let A=y.isPrivate();return i(be,{...r,size:"sm",title:"Schedule Message",actions:[{text:"Schedule",variant:"primary",onClick:async()=>{let w;if(a==="delay"){let E=parseInt(l,10);if(isNaN(E)||E<1){g("Please enter a valid delay (minimum 1 minute)");return}w=Date.now()+E*60*1e3}else{let E=new Date(u).getTime();if(isNaN(E)||E<=Date.now()){g("Please select a future date and time");return}w=E}let I=await C_e(e,t,w,o);I.success?(r5t.dispatchToLastSubscribed("CLEAR_TEXT"),Ma.clearAll(e,yo.ChannelMessage),ne("Message scheduled!",D.Type.SUCCESS),n()):g(I.error??"Failed to schedule message")}},{text:"Cancel",variant:"secondary",onClick:n}]},i("div",{className:Bm("channel-info")},v&&i("img",{src:v,className:Bm("channel-avatar"),alt:""}),i("span",{className:Bm("channel-text")},"Scheduling for: ",i("strong",null,A?x:`#${x}`))),i(oe,{tag:"h5",className:Bm("field-label")},"Schedule Type"),i("div",{className:Bm("schedule-type-buttons")},i(de,{size:"small",variant:a==="delay"?"primary":"secondary",onClick:()=>s("delay")},"Delay"),i(de,{size:"small",variant:a==="time"?"primary":"secondary",onClick:()=>s("time")},"Specific Time")),a==="delay"?i(f,null,i(oe,{tag:"h5",className:Bm("field-label")},"Delay (minutes)"),i(Te,{value:l,onChange:c,placeholder:"5",type:"number"})):i(f,null,i(oe,{tag:"h5",className:Bm("field-label")},"Date & Time"),i("input",{type:"datetime-local",className:Bm("datetime-input"),value:u,onChange:w=>p(w.target.value),min:new Date().toISOString().slice(0,16)})),m&&i("div",{className:Bm("error")},i(y_e,null),i("span",null,m)))}function __e(e,t,o){let r=ce(n=>i(a5t,{channelId:e,content:t,attachments:o,rootProps:n,close:()=>Lo(r)}))}var Bm,r5t,a5t,U_e=h(()=>{"use strict";d();Tt();Pe();We();we();le();C();_A();qb();Bm=K("vc-scheduled-msg-"),r5t=Ae("dispatchToLastSubscribed");a5t=H.wrap(i5t,{noop:!0})});function z_e(e){let{messageId:t,channelId:o,emoji:r}=e;!t||!o||!r||!B_e(t)||(e.optimistic?e.type==="MESSAGE_REACTION_ADD"?M_e(t,o,r):e.type==="MESSAGE_REACTION_REMOVE"&&N_e(t,o,r):setTimeout(()=>{yL(t,o)},50))}var e0,wL,Ioe=h(()=>{"use strict";d();v_e();j();O();R();L_e();qb();F_e();U_e();Eoe();_A();e0=M({maxMessagesPerMinute:{type:5,description:"Max scheduled messages per channel that can fire in the same minute.",markers:[1,2,3,4,5],default:3,stickToMarkers:!0},checkIntervalSeconds:{type:5,description:"How often to check for messages to send (seconds).",markers:[5,10,15,30,60],default:10,stickToMarkers:!0,onChange:()=>{Toe(),Coe()}},showNotifications:{type:3,description:"Show toast notifications when messages are sent.",default:!0},showPhantomMessages:{type:3,description:"Show scheduled messages as phantom messages in chat.",default:!0}});wL=S({name:"ScheduledMessages",description:"Schedule messages to be sent at a specific time or after a delay.",tags:["Chat","Utility"],dependencies:["ChatInputButtonAPI","MessageAccessoriesAPI","MessageEventsAPI"],authors:[F.mmeta,b.prism],settings:e0,flux:{MESSAGE_REACTION_ADD:z_e,MESSAGE_REACTION_REMOVE:z_e},chatBarButton:{icon:jb,render:R_e},toolboxActions:{"View Scheduled Messages":bL},patches:[{find:"}addReaction(",replacement:{match:/this\.channel_id=(\i)\.channel_id,/,replace:"$&this.scheduledMessageData=$1.scheduledMessageData,"}}],renderMessageAccessory(e){return i(O_e,{message:e.message})},async onBeforeMessageSend(e,t,o){if(!SL||!t.content.trim()&&!o.uploads?.length)return;Poe(!1);let r;if(o.uploads?.length){r=[];for(let n of o.uploads){let{file:a}=n.item;try{let s=await new Promise((l,c)=>{let u=new FileReader;u.onload=()=>{let p=u.result;l(p.split(",")[1]??p)},u.onerror=()=>c(u.error),u.readAsDataURL(a)});r.push({filename:n.filename,data:s,type:a.type})}catch{continue}}}return __e(e,t.content,r),{cancel:!0}},async start(){await A_e(),Coe(),I_e()},stop(){Toe(),E_e()}})});function s5t(){return i("span",{style:{color:"white"}},i("i",null,i("b",null,"This fix isn't perfect, so you may have to reload the search bar to fix issues.")),"Discord only allows a max offset of 5000 (this is what causes the magnifying glass error). This means that you can only see precisely 5000 messages into the past, and 5000 messages into the future (when sorting by old). This plugin just jumps to the opposite sorting method to try get around Discord's restriction, but if there is a large search result, and you try to view a message that is unobtainable with both methods of sorting, the plugin will simply show offset 0 (either newest or oldest message depending on the sorting method).")}var AL,$_e=h(()=>{"use strict";d();O();R();AL=S({name:"SearchFix",description:'Fixes the annoying "We dropped the magnifying glass!" error.',tags:["Utility"],settingsAboutComponent:()=>s5t(),authors:[F.Jaxx],patches:[{find:'"SearchQueryStore";',replacement:{match:/\i\.searchResultsQuery=(\i)/,replace:"$&,$self.main($1)"}}],main(e){e.offset>5e3&&(e.sort_order=e.sort_order==="asc"?"desc":"asc",e.offset>0?e.offset=0:e.offset-=5e3)}})});var G_e,H_e,kL,j_e=h(()=>{"use strict";d();j();O();R();C();G_e=/^s(?[/|$#@!])(?(?!\1)(?:(?![^\\]\1).)*.|)\1(?(?!\1)(?:(?![^\\]\1).)*.|)\1?(?[rgmisudyv]*)$/,H_e=M({regexByDefault:{description:"Inverts the `r` flag, so using the `r` flag enables non-regex mode, and omitting it uses regex mode.",type:3,default:!1}}),kL=S({name:"SedEnhanced",description:"Expands on Discord's rudimentary `sed` support.",authors:[F.dawn,F.Willow,F.kat],tags:["Chat"],patches:[{find:".SLASH_COMMAND_USED,{",replacement:{match:/searchReplace:\{match:(\i\(\)\.anyScopeRegex).{500,600}content:""\}\}\}/,replace:"searchReplace:{match:$1($self.sedRegex),action:$self.searchReplace}"}}],settings:H_e,sedRegex:G_e,searchReplace(e,{isEdit:t,channel:o}){if(t)return;let r=Pa.getPendingReply(o.id)?.message,n=r??lt.getLastEditableMessage(o.id);if(r&&r.author.id!==L.getCurrentUser()?.id||n?.id==null)return{content:""};let a=e.match(G_e)?.groups;if(a?.match==null||a?.replace==null||a?.modes==null)return;let{match:s,replace:l,modes:c}=a,u=c.split(""),p=u.includes("r")!==H_e.store.regexByDefault;if(!p){let x=/\\([*?+/])/g;s=s.replace(x,(v,y)=>y),l=l.replace(x,(v,y)=>y)}let m=s;if(p)try{let x=u.filter(v=>"gmisudyv".includes(v)).join("");m=new RegExp(s,x)}catch{return{content:""}}let g=u.includes("g")?n.content.replaceAll(m,l):n.content.replace(m,l);return!g.trim()&&n.attachments.length===0?fo.deleteMessage(o.id,n.id):g!==n.content&&fo.editMessage(o.id,n.id,{content:g}),{content:""}}})});var js,Moe=h(()=>{"use strict";d();js=[{id:"3",name:"Airi 01",character:"airi",img:"airi/Airi_01.png",color:"#FB8AAC",defaultText:{text:"keep up",x:148,y:58,r:-2,s:47}},{id:"4",name:"Airi 02",character:"airi",img:"airi/Airi_02.png",color:"#FB8AAC",defaultText:{text:"nice to meet ya",x:148,y:58,r:0,s:28}},{id:"5",name:"Airi 03",character:"airi",img:"airi/Airi_03.png",color:"#FB8AAC",defaultText:{text:"keep at it!",x:140,y:79,r:2,s:47}},{id:"6",name:"Airi 04",character:"airi",img:"airi/Airi_04.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"8",name:"Airi 06",character:"airi",img:"airi/Airi_06.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"9",name:"Airi 07",character:"airi",img:"airi/Airi_07.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"10",name:"Airi 08",character:"airi",img:"airi/Airi_08.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"11",name:"Airi 09",character:"airi",img:"airi/Airi_09.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"13",name:"Airi 11",character:"airi",img:"airi/Airi_11.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"14",name:"Airi 12",character:"airi",img:"airi/Airi_12.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"15",name:"Airi 13",character:"airi",img:"airi/Airi_13.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"16",name:"Airi 14",character:"airi",img:"airi/Airi_14.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"18",name:"Airi 16",character:"airi",img:"airi/Airi_16.png",color:"#FB8AAC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"19",name:"Akito 01",character:"akito",img:"akito/Akito_01.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"20",name:"Akito 02",character:"akito",img:"akito/Akito_02.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"21",name:"Akito 03",character:"akito",img:"akito/Akito_03.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"22",name:"Akito 04",character:"akito",img:"akito/Akito_04.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"24",name:"Akito 06",character:"akito",img:"akito/Akito_06.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"25",name:"Akito 07",character:"akito",img:"akito/Akito_07.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"26",name:"Akito 08",character:"akito",img:"akito/Akito_08.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"27",name:"Akito 09",character:"akito",img:"akito/Akito_09.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"29",name:"Akito 11",character:"akito",img:"akito/Akito_11.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"30",name:"Akito 12",character:"akito",img:"akito/Akito_12.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"31",name:"Akito 13",character:"akito",img:"akito/Akito_13.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"32",name:"Akito 14",character:"akito",img:"akito/Akito_14.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"33",name:"Akito 16",character:"akito",img:"akito/Akito_16.png",color:"#FF7722",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"34",name:"An 01",character:"an",img:"an/An_01.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"35",name:"An 02",character:"an",img:"an/An_02.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"36",name:"An 03",character:"an",img:"an/An_03.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"37",name:"An 04",character:"an",img:"an/An_04.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"39",name:"An 06",character:"an",img:"an/An_06.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"40",name:"An 07",character:"an",img:"an/An_07.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"41",name:"An 08",character:"an",img:"an/An_08.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"42",name:"An 09",character:"an",img:"an/An_09.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"44",name:"An 11",character:"an",img:"an/An_11.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"45",name:"An 12",character:"an",img:"an/An_12.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"46",name:"An 13",character:"an",img:"an/An_13.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"47",name:"An 14",character:"an",img:"an/An_14.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"49",name:"An 16",character:"an",img:"an/An_16.png",color:"#00BADC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"50",name:"Emu 01",character:"emu",img:"emu/Emu_01.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"51",name:"Emu 02",character:"emu",img:"emu/Emu_02.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"52",name:"Emu 03",character:"emu",img:"emu/Emu_03.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"53",name:"Emu 04",character:"emu",img:"emu/Emu_04.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"55",name:"Emu 06",character:"emu",img:"emu/Emu_06.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"56",name:"Emu 07",character:"emu",img:"emu/Emu_07.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"57",name:"Emu 08",character:"emu",img:"emu/Emu_08.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"58",name:"Emu 09",character:"emu",img:"emu/Emu_09.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"60",name:"Emu 11",character:"emu",img:"emu/Emu_11.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"61",name:"Emu 12",character:"emu",img:"emu/Emu_12.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"62",name:"Emu 13",character:"emu",img:"emu/Emu_13.png",color:"#FF66BB",defaultText:{text:"Wonderhoy!",x:148,y:70,r:-2,s:38}},{id:"63",name:"Emu 14",character:"emu",img:"emu/Emu_14.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"65",name:"Emu 16",character:"emu",img:"emu/Emu_16.png",color:"#FF66BB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"66",name:"Ena 01",character:"ena",img:"ena/Ena_01.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"67",name:"Ena 02",character:"ena",img:"ena/Ena_02.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"68",name:"Ena 03",character:"ena",img:"ena/Ena_03.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"69",name:"Ena 04",character:"ena",img:"ena/Ena_04.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"71",name:"Ena 06",character:"ena",img:"ena/Ena_06.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"72",name:"Ena 07",character:"ena",img:"ena/Ena_07.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"73",name:"Ena 08",character:"ena",img:"ena/Ena_08.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"74",name:"Ena 09",character:"ena",img:"ena/Ena_09.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"76",name:"Ena 11",character:"ena",img:"ena/Ena_11.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"77",name:"Ena 12",character:"ena",img:"ena/Ena_12.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"78",name:"Ena 13",character:"ena",img:"ena/Ena_13.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"79",name:"Ena 14",character:"ena",img:"ena/Ena_14.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"81",name:"Ena 16",character:"ena",img:"ena/Ena_16.png",color:"#B18F6C",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"81",name:"Haruka 01",character:"Haruka",img:"Haruka/Haruka_01.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"82",name:"Haruka 02",character:"Haruka",img:"Haruka/Haruka_02.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"83",name:"Haruka 03",character:"Haruka",img:"Haruka/Haruka_03.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"84",name:"Haruka 04",character:"Haruka",img:"Haruka/Haruka_04.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"85",name:"Haruka 06",character:"Haruka",img:"Haruka/Haruka_06.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"86",name:"Haruka 07",character:"Haruka",img:"Haruka/Haruka_07.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"87",name:"Haruka 08",character:"Haruka",img:"Haruka/Haruka_08.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"88",name:"Haruka 09",character:"Haruka",img:"Haruka/Haruka_09.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"89",name:"Haruka 11",character:"Haruka",img:"Haruka/Haruka_11.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"90",name:"Haruka 12",character:"Haruka",img:"Haruka/Haruka_12.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"91",name:"Haruka 13",character:"Haruka",img:"Haruka/Haruka_13.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"92",name:"Haruka 14",character:"Haruka",img:"Haruka/Haruka_14.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"93",name:"Haruka 16",character:"Haruka",img:"Haruka/Haruka_16.png",color:"#6495F0",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"94",name:"Honami 01",character:"Honami",img:"Honami/Honami_01.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"95",name:"Honami 02",character:"Honami",img:"Honami/Honami_02.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"96",name:"Honami 03",character:"Honami",img:"Honami/Honami_03.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"97",name:"Honami 04",character:"Honami",img:"Honami/Honami_04.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"98",name:"Honami 06",character:"Honami",img:"Honami/Honami_06.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"99",name:"Honami 07",character:"Honami",img:"Honami/Honami_07.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"100",name:"Honami 08",character:"Honami",img:"Honami/Honami_08.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"101",name:"Honami 09",character:"Honami",img:"Honami/Honami_09.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"102",name:"Honami 11",character:"Honami",img:"Honami/Honami_11.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"103",name:"Honami 12",character:"Honami",img:"Honami/Honami_12.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"104",name:"Honami 13",character:"Honami",img:"Honami/Honami_13.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"105",name:"Honami 14",character:"Honami",img:"Honami/Honami_14.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"106",name:"Honami 16",character:"Honami",img:"Honami/Honami_16.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"107",name:"Honami 17",character:"Honami",img:"Honami/Honami_17.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"108",name:"Honami 18",character:"Honami",img:"Honami/Honami_18.png",color:"#F86666",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"109",name:"Ichika 01",character:"Ichika",img:"Ichika/Ichika_01.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"110",name:"Ichika 02",character:"Ichika",img:"Ichika/Ichika_02.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"111",name:"Ichika 03",character:"Ichika",img:"Ichika/Ichika_03.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"112",name:"Ichika 04",character:"Ichika",img:"Ichika/Ichika_04.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"113",name:"Ichika 06",character:"Ichika",img:"Ichika/Ichika_06.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"114",name:"Ichika 07",character:"Ichika",img:"Ichika/Ichika_07.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"115",name:"Ichika 08",character:"Ichika",img:"Ichika/Ichika_08.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"116",name:"Ichika 09",character:"Ichika",img:"Ichika/Ichika_09.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"117",name:"Ichika 11",character:"Ichika",img:"Ichika/Ichika_11.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"118",name:"Ichika 12",character:"Ichika",img:"Ichika/Ichika_12.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"119",name:"Ichika 13",character:"Ichika",img:"Ichika/Ichika_13.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"120",name:"Ichika 14",character:"Ichika",img:"Ichika/Ichika_14.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"121",name:"Ichika 16",character:"Ichika",img:"Ichika/Ichika_16.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"122",name:"Ichika 17",character:"Ichika",img:"Ichika/Ichika_17.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"123",name:"Ichika 18",character:"Ichika",img:"Ichika/Ichika_18.png",color:"#33AAEE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"124",name:"KAITO 01",character:"KAITO",img:"KAITO/KAITO_01.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"125",name:"KAITO 02",character:"KAITO",img:"KAITO/KAITO_02.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"126",name:"KAITO 03",character:"KAITO",img:"KAITO/KAITO_03.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"127",name:"KAITO 04",character:"KAITO",img:"KAITO/KAITO_04.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"128",name:"KAITO 06",character:"KAITO",img:"KAITO/KAITO_06.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"129",name:"KAITO 07",character:"KAITO",img:"KAITO/KAITO_07.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"130",name:"KAITO 08",character:"KAITO",img:"KAITO/KAITO_08.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"131",name:"KAITO 09",character:"KAITO",img:"KAITO/KAITO_09.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"132",name:"KAITO 11",character:"KAITO",img:"KAITO/KAITO_11.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"133",name:"KAITO 12",character:"KAITO",img:"KAITO/KAITO_12.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"134",name:"KAITO 13",character:"KAITO",img:"KAITO/KAITO_13.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"135",name:"KAITO 14",character:"KAITO",img:"KAITO/KAITO_14.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"136",name:"KAITO 16",character:"KAITO",img:"KAITO/KAITO_16.png",color:"#3366CC",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"137",name:"Kanade 01",character:"Kanade",img:"Kanade/Kanade_01.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"138",name:"Kanade 02",character:"Kanade",img:"Kanade/Kanade_02.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"139",name:"Kanade 03",character:"Kanade",img:"Kanade/Kanade_03.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"140",name:"Kanade 04",character:"Kanade",img:"Kanade/Kanade_04.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"141",name:"Kanade 06",character:"Kanade",img:"Kanade/Kanade_06.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"142",name:"Kanade 07",character:"Kanade",img:"Kanade/Kanade_07.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"143",name:"Kanade 08",character:"Kanade",img:"Kanade/Kanade_08.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"144",name:"Kanade 09",character:"Kanade",img:"Kanade/Kanade_09.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"145",name:"Kanade 11",character:"Kanade",img:"Kanade/Kanade_11.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"146",name:"Kanade 12",character:"Kanade",img:"Kanade/Kanade_12.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"147",name:"Kanade 13",character:"Kanade",img:"Kanade/Kanade_13.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"148",name:"Kanade 14",character:"Kanade",img:"Kanade/Kanade_14.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"149",name:"Kanade 16",character:"Kanade",img:"Kanade/Kanade_16.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"150",name:"Kanade 17",character:"Kanade",img:"Kanade/Kanade_17.png",color:"#BB6688",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"151",name:"Kohane 01",character:"Kohane",img:"Kohane/Kohane_01.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"152",name:"Kohane 02",character:"Kohane",img:"Kohane/Kohane_02.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"153",name:"Kohane 03",character:"Kohane",img:"Kohane/Kohane_03.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"154",name:"Kohane 04",character:"Kohane",img:"Kohane/Kohane_04.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"155",name:"Kohane 06",character:"Kohane",img:"Kohane/Kohane_06.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"156",name:"Kohane 07",character:"Kohane",img:"Kohane/Kohane_07.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"157",name:"Kohane 08",character:"Kohane",img:"Kohane/Kohane_08.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"158",name:"Kohane 09",character:"Kohane",img:"Kohane/Kohane_09.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"159",name:"Kohane 11",character:"Kohane",img:"Kohane/Kohane_11.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"160",name:"Kohane 12",character:"Kohane",img:"Kohane/Kohane_12.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"161",name:"Kohane 13",character:"Kohane",img:"Kohane/Kohane_13.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"162",name:"Kohane 14",character:"Kohane",img:"Kohane/Kohane_14.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"163",name:"Kohane 16",character:"Kohane",img:"Kohane/Kohane_16.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"164",name:"Kohane 17",character:"Kohane",img:"Kohane/Kohane_17.png",color:"#FF6699",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"165",name:"Len 01",character:"Len",img:"Len/Len_01.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"166",name:"Len 02",character:"Len",img:"Len/Len_02.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"167",name:"Len 03",character:"Len",img:"Len/Len_03.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"168",name:"Len 04",character:"Len",img:"Len/Len_04.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"169",name:"Len 06",character:"Len",img:"Len/Len_06.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"170",name:"Len 07",character:"Len",img:"Len/Len_07.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"171",name:"Len 08",character:"Len",img:"Len/Len_08.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"172",name:"Len 09",character:"Len",img:"Len/Len_09.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"173",name:"Len 11",character:"Len",img:"Len/Len_11.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"174",name:"Len 12",character:"Len",img:"Len/Len_12.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"175",name:"Len 13",character:"Len",img:"Len/Len_13.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"176",name:"Len 14",character:"Len",img:"Len/Len_14.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"177",name:"Len 16",character:"Len",img:"Len/Len_16.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"178",name:"Len 17",character:"Len",img:"Len/Len_17.png",color:"#D3BD00",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"179",name:"Luka 01",character:"Luka",img:"Luka/Luka_01.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"180",name:"Luka 02",character:"Luka",img:"Luka/Luka_02.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"181",name:"Luka 03",character:"Luka",img:"Luka/Luka_03.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"182",name:"Luka 04",character:"Luka",img:"Luka/Luka_04.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"183",name:"Luka 06",character:"Luka",img:"Luka/Luka_06.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"184",name:"Luka 07",character:"Luka",img:"Luka/Luka_07.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"185",name:"Luka 08",character:"Luka",img:"Luka/Luka_08.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"186",name:"Luka 09",character:"Luka",img:"Luka/Luka_09.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"187",name:"Luka 11",character:"Luka",img:"Luka/Luka_11.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"188",name:"Luka 12",character:"Luka",img:"Luka/Luka_12.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"189",name:"Luka 13",character:"Luka",img:"Luka/Luka_13.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"190",name:"Luka 14",character:"Luka",img:"Luka/Luka_14.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"191",name:"Luka 16",character:"Luka",img:"Luka/Luka_16.png",color:"#F88CA7",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"192",name:"Mafuyu 01",character:"Mafuyu",img:"Mafuyu/Mafuyu_01.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"193",name:"Mafuyu 02",character:"Mafuyu",img:"Mafuyu/Mafuyu_02.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"194",name:"Mafuyu 03",character:"Mafuyu",img:"Mafuyu/Mafuyu_03.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"195",name:"Mafuyu 04",character:"Mafuyu",img:"Mafuyu/Mafuyu_04.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"196",name:"Mafuyu 06",character:"Mafuyu",img:"Mafuyu/Mafuyu_06.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"197",name:"Mafuyu 07",character:"Mafuyu",img:"Mafuyu/Mafuyu_07.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"198",name:"Mafuyu 08",character:"Mafuyu",img:"Mafuyu/Mafuyu_08.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"199",name:"Mafuyu 09",character:"Mafuyu",img:"Mafuyu/Mafuyu_09.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"200",name:"Mafuyu 11",character:"Mafuyu",img:"Mafuyu/Mafuyu_11.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"201",name:"Mafuyu 12",character:"Mafuyu",img:"Mafuyu/Mafuyu_12.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"202",name:"Mafuyu 13",character:"Mafuyu",img:"Mafuyu/Mafuyu_13.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"203",name:"Mafuyu 14",character:"Mafuyu",img:"Mafuyu/Mafuyu_14.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"204",name:"Mafuyu 16",character:"Mafuyu",img:"Mafuyu/Mafuyu_16.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"205",name:"Mafuyu 17",character:"Mafuyu",img:"Mafuyu/Mafuyu_17.png",color:"#7171AF",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"206",name:"Meiko 01",character:"Meiko",img:"Meiko/Meiko_01.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"207",name:"Meiko 02",character:"Meiko",img:"Meiko/Meiko_02.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"208",name:"Meiko 03",character:"Meiko",img:"Meiko/Meiko_03.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"209",name:"Meiko 04",character:"Meiko",img:"Meiko/Meiko_04.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"210",name:"Meiko 06",character:"Meiko",img:"Meiko/Meiko_06.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"211",name:"Meiko 07",character:"Meiko",img:"Meiko/Meiko_07.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"212",name:"Meiko 08",character:"Meiko",img:"Meiko/Meiko_08.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"213",name:"Meiko 09",character:"Meiko",img:"Meiko/Meiko_09.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"214",name:"Meiko 11",character:"Meiko",img:"Meiko/Meiko_11.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"215",name:"Meiko 12",character:"Meiko",img:"Meiko/Meiko_12.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"216",name:"Meiko 13",character:"Meiko",img:"Meiko/Meiko_13.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"217",name:"Meiko 14",character:"Meiko",img:"Meiko/Meiko_14.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"218",name:"Meiko 16",character:"Meiko",img:"Meiko/Meiko_16.png",color:"#E4485F",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"219",name:"Miku 01",character:"Miku",img:"Miku/Miku_01.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"220",name:"Miku 02",character:"Miku",img:"Miku/Miku_02.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"221",name:"Miku 03",character:"Miku",img:"Miku/Miku_03.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"222",name:"Miku 04",character:"Miku",img:"Miku/Miku_04.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"223",name:"Miku 06",character:"Miku",img:"Miku/Miku_06.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"224",name:"Miku 07",character:"Miku",img:"Miku/Miku_07.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"225",name:"Miku 08",character:"Miku",img:"Miku/Miku_08.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"226",name:"Miku 09",character:"Miku",img:"Miku/Miku_09.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"227",name:"Miku 11",character:"Miku",img:"Miku/Miku_11.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"228",name:"Miku 12",character:"Miku",img:"Miku/Miku_12.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"229",name:"Miku 13",character:"Miku",img:"Miku/Miku_13.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"230",name:"Miku 14",character:"Miku",img:"Miku/Miku_14.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"231",name:"Miku 16",character:"Miku",img:"Miku/Miku_16.png",color:"#33CCBB",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"232",name:"Minori 01",character:"Minori",img:"Minori/Minori_01.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"233",name:"Minori 02",character:"Minori",img:"Minori/Minori_02.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"234",name:"Minori 03",character:"Minori",img:"Minori/Minori_03.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"235",name:"Minori 04",character:"Minori",img:"Minori/Minori_04.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"236",name:"Minori 06",character:"Minori",img:"Minori/Minori_06.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"237",name:"Minori 07",character:"Minori",img:"Minori/Minori_07.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"238",name:"Minori 08",character:"Minori",img:"Minori/Minori_08.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"239",name:"Minori 09",character:"Minori",img:"Minori/Minori_09.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"240",name:"Minori 11",character:"Minori",img:"Minori/Minori_11.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"241",name:"Minori 12",character:"Minori",img:"Minori/Minori_12.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"242",name:"Minori 13",character:"Minori",img:"Minori/Minori_13.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"243",name:"Minori 14",character:"Minori",img:"Minori/Minori_14.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"244",name:"Minori 16",character:"Minori",img:"Minori/Minori_16.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"245",name:"Minori 17",character:"Minori",img:"Minori/Minori_17.png",color:"#F39E7D",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"246",name:"Mizuki 01",character:"Mizuki",img:"Mizuki/Mizuki_01.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"247",name:"Mizuki 02",character:"Mizuki",img:"Mizuki/Mizuki_02.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"248",name:"Mizuki 03",character:"Mizuki",img:"Mizuki/Mizuki_03.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"249",name:"Mizuki 04",character:"Mizuki",img:"Mizuki/Mizuki_04.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"250",name:"Mizuki 06",character:"Mizuki",img:"Mizuki/Mizuki_06.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"251",name:"Mizuki 07",character:"Mizuki",img:"Mizuki/Mizuki_07.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"252",name:"Mizuki 08",character:"Mizuki",img:"Mizuki/Mizuki_08.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"253",name:"Mizuki 09",character:"Mizuki",img:"Mizuki/Mizuki_09.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"254",name:"Mizuki 11",character:"Mizuki",img:"Mizuki/Mizuki_11.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"255",name:"Mizuki 12",character:"Mizuki",img:"Mizuki/Mizuki_12.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"256",name:"Mizuki 13",character:"Mizuki",img:"Mizuki/Mizuki_13.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"257",name:"Mizuki 14",character:"Mizuki",img:"Mizuki/Mizuki_14.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"258",name:"Mizuki 16",character:"Mizuki",img:"Mizuki/Mizuki_16.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"259",name:"Mizuki 17",character:"Mizuki",img:"Mizuki/Mizuki_17.png",color:"#CA8DB6",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"260",name:"Nene 01",character:"Nene",img:"Nene/Nene_01.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"261",name:"Nene 02",character:"Nene",img:"Nene/Nene_02.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"262",name:"Nene 03",character:"Nene",img:"Nene/Nene_03.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"263",name:"Nene 04",character:"Nene",img:"Nene/Nene_04.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"264",name:"Nene 06",character:"Nene",img:"Nene/Nene_06.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"265",name:"Nene 07",character:"Nene",img:"Nene/Nene_07.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"266",name:"Nene 08",character:"Nene",img:"Nene/Nene_08.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"267",name:"Nene 09",character:"Nene",img:"Nene/Nene_09.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"268",name:"Nene 11",character:"Nene",img:"Nene/Nene_11.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"269",name:"Nene 12",character:"Nene",img:"Nene/Nene_12.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"270",name:"Nene 13",character:"Nene",img:"Nene/Nene_13.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"271",name:"Nene 14",character:"Nene",img:"Nene/Nene_14.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"272",name:"Nene 16",character:"Nene",img:"Nene/Nene_16.png",color:"#19CD94",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"273",name:"Rin 01",character:"Rin",img:"Rin/Rin_01.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"274",name:"Rin 02",character:"Rin",img:"Rin/Rin_02.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"275",name:"Rin 03",character:"Rin",img:"Rin/Rin_03.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"276",name:"Rin 04",character:"Rin",img:"Rin/Rin_04.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"277",name:"Rin 06",character:"Rin",img:"Rin/Rin_06.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"278",name:"Rin 07",character:"Rin",img:"Rin/Rin_07.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"279",name:"Rin 08",character:"Rin",img:"Rin/Rin_08.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"280",name:"Rin 09",character:"Rin",img:"Rin/Rin_09.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"281",name:"Rin 11",character:"Rin",img:"Rin/Rin_11.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"282",name:"Rin 12",character:"Rin",img:"Rin/Rin_12.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"283",name:"Rin 13",character:"Rin",img:"Rin/Rin_13.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"284",name:"Rin 14",character:"Rin",img:"Rin/Rin_14.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"285",name:"Rin 16",character:"Rin",img:"Rin/Rin_16.png",color:"#E8A505",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"286",name:"Rui 01",character:"Rui",img:"Rui/Rui_01.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"287",name:"Rui 02",character:"Rui",img:"Rui/Rui_02.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"288",name:"Rui 03",character:"Rui",img:"Rui/Rui_03.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"289",name:"Rui 04",character:"Rui",img:"Rui/Rui_04.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"290",name:"Rui 06",character:"Rui",img:"Rui/Rui_06.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"291",name:"Rui 07",character:"Rui",img:"Rui/Rui_07.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"292",name:"Rui 08",character:"Rui",img:"Rui/Rui_08.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"293",name:"Rui 09",character:"Rui",img:"Rui/Rui_09.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"294",name:"Rui 11",character:"Rui",img:"Rui/Rui_11.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"295",name:"Rui 12",character:"Rui",img:"Rui/Rui_12.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"296",name:"Rui 13",character:"Rui",img:"Rui/Rui_13.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"297",name:"Rui 14",character:"Rui",img:"Rui/Rui_14.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"298",name:"Rui 16",character:"Rui",img:"Rui/Rui_16.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"299",name:"Rui 17",character:"Rui",img:"Rui/Rui_17.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"300",name:"Rui 18",character:"Rui",img:"Rui/Rui_18.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"301",name:"Rui 19",character:"Rui",img:"Rui/Rui_19.png",color:"#BB88EE",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"302",name:"Saki 01",character:"Saki",img:"Saki/Saki_01.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"303",name:"Saki 02",character:"Saki",img:"Saki/Saki_02.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"304",name:"Saki 03",character:"Saki",img:"Saki/Saki_03.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"305",name:"Saki 04",character:"Saki",img:"Saki/Saki_04.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"306",name:"Saki 06",character:"Saki",img:"Saki/Saki_06.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"307",name:"Saki 07",character:"Saki",img:"Saki/Saki_07.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"308",name:"Saki 08",character:"Saki",img:"Saki/Saki_08.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"309",name:"Saki 09",character:"Saki",img:"Saki/Saki_09.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"310",name:"Saki 11",character:"Saki",img:"Saki/Saki_11.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"311",name:"Saki 12",character:"Saki",img:"Saki/Saki_12.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"312",name:"Saki 13",character:"Saki",img:"Saki/Saki_13.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"313",name:"Saki 14",character:"Saki",img:"Saki/Saki_14.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"314",name:"Saki 16",character:"Saki",img:"Saki/Saki_16.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"315",name:"Saki 17",character:"Saki",img:"Saki/Saki_17.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"316",name:"Saki 18",character:"Saki",img:"Saki/Saki_18.png",color:"#F5B303",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"317",name:"Shiho 01",character:"Shiho",img:"Shiho/Shiho_01.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"318",name:"Shiho 02",character:"Shiho",img:"Shiho/Shiho_02.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"319",name:"Shiho 03",character:"Shiho",img:"Shiho/Shiho_03.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"320",name:"Shiho 04",character:"Shiho",img:"Shiho/Shiho_04.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"321",name:"Shiho 06",character:"Shiho",img:"Shiho/Shiho_06.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"322",name:"Shiho 07",character:"Shiho",img:"Shiho/Shiho_07.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"323",name:"Shiho 08",character:"Shiho",img:"Shiho/Shiho_08.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"324",name:"Shiho 09",character:"Shiho",img:"Shiho/Shiho_09.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"325",name:"Shiho 11",character:"Shiho",img:"Shiho/Shiho_11.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"326",name:"Shiho 12",character:"Shiho",img:"Shiho/Shiho_12.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"327",name:"Shiho 13",character:"Shiho",img:"Shiho/Shiho_13.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"328",name:"Shiho 14",character:"Shiho",img:"Shiho/Shiho_14.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"329",name:"Shiho 16",character:"Shiho",img:"Shiho/Shiho_16.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"330",name:"Shiho 17",character:"Shiho",img:"Shiho/Shiho_17.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"331",name:"Shiho 18",character:"Shiho",img:"Shiho/Shiho_18.png",color:"#A0C10B",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"332",name:"Shizuku 01",character:"Shizuku",img:"Shizuku/Shizuku_01.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"333",name:"Shizuku 02",character:"Shizuku",img:"Shizuku/Shizuku_02.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"334",name:"Shizuku 03",character:"Shizuku",img:"Shizuku/Shizuku_03.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"335",name:"Shizuku 04",character:"Shizuku",img:"Shizuku/Shizuku_04.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"336",name:"Shizuku 06",character:"Shizuku",img:"Shizuku/Shizuku_06.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"337",name:"Shizuku 07",character:"Shizuku",img:"Shizuku/Shizuku_07.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"338",name:"Shizuku 08",character:"Shizuku",img:"Shizuku/Shizuku_08.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"339",name:"Shizuku 09",character:"Shizuku",img:"Shizuku/Shizuku_09.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"340",name:"Shizuku 11",character:"Shizuku",img:"Shizuku/Shizuku_11.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"341",name:"Shizuku 12",character:"Shizuku",img:"Shizuku/Shizuku_12.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"342",name:"Shizuku 13",character:"Shizuku",img:"Shizuku/Shizuku_13.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"343",name:"Shizuku 14",character:"Shizuku",img:"Shizuku/Shizuku_14.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"344",name:"Shizuku 16",character:"Shizuku",img:"Shizuku/Shizuku_16.png",color:"#5CD0B9",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"345",name:"Touya 01",character:"Touya",img:"Touya/Touya_01.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"346",name:"Touya 02",character:"Touya",img:"Touya/Touya_02.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"347",name:"Touya 03",character:"Touya",img:"Touya/Touya_03.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"348",name:"Touya 04",character:"Touya",img:"Touya/Touya_04.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"349",name:"Touya 06",character:"Touya",img:"Touya/Touya_06.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"350",name:"Touya 07",character:"Touya",img:"Touya/Touya_07.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"351",name:"Touya 08",character:"Touya",img:"Touya/Touya_08.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"352",name:"Touya 09",character:"Touya",img:"Touya/Touya_09.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"353",name:"Touya 11",character:"Touya",img:"Touya/Touya_11.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"354",name:"Touya 12",character:"Touya",img:"Touya/Touya_12.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"355",name:"Touya 13",character:"Touya",img:"Touya/Touya_13.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"356",name:"Touya 14",character:"Touya",img:"Touya/Touya_14.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"357",name:"Touya 16",character:"Touya",img:"Touya/Touya_16.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"358",name:"Touya 17",character:"Touya",img:"Touya/Touya_17.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"359",name:"Touya 18",character:"Touya",img:"Touya/Touya_18.png",color:"#0077DD",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"360",name:"Tsukasa 01",character:"Tsukasa",img:"Tsukasa/Tsukasa_01.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"361",name:"Tsukasa 02",character:"Tsukasa",img:"Tsukasa/Tsukasa_02.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"362",name:"Tsukasa 03",character:"Tsukasa",img:"Tsukasa/Tsukasa_03.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"363",name:"Tsukasa 04",character:"Tsukasa",img:"Tsukasa/Tsukasa_04.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"364",name:"Tsukasa 06",character:"Tsukasa",img:"Tsukasa/Tsukasa_06.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"365",name:"Tsukasa 07",character:"Tsukasa",img:"Tsukasa/Tsukasa_07.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"366",name:"Tsukasa 08",character:"Tsukasa",img:"Tsukasa/Tsukasa_08.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"367",name:"Tsukasa 09",character:"Tsukasa",img:"Tsukasa/Tsukasa_09.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"368",name:"Tsukasa 11",character:"Tsukasa",img:"Tsukasa/Tsukasa_11.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"369",name:"Tsukasa 12",character:"Tsukasa",img:"Tsukasa/Tsukasa_12.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"370",name:"Tsukasa 13",character:"Tsukasa",img:"Tsukasa/Tsukasa_13.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"371",name:"Tsukasa 14",character:"Tsukasa",img:"Tsukasa/Tsukasa_14.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"372",name:"Tsukasa 16",character:"Tsukasa",img:"Tsukasa/Tsukasa_16.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"373",name:"Tsukasa 17",character:"Tsukasa",img:"Tsukasa/Tsukasa_17.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}},{id:"374",name:"Tsukasa 18",character:"Tsukasa",img:"Tsukasa/Tsukasa_18.png",color:"#F09A04",defaultText:{text:"something",x:148,y:58,r:-2,s:47}}]});var l5t,q_e,W_e=h(()=>{"use strict";d();C();l5t=e=>{let{draw:t,...o}=e,r=Se(null);return G(()=>{let a=r.current.getContext("2d");t(a)},[t]),i("canvas",{ref:r,...o})},q_e=l5t});function Noe({modalProps:e,setCharacter:t}){let[o,r]=V.useState(""),n=V.useMemo(()=>{let a=o.toLowerCase();return js.map((s,l)=>a===s.id||s.name.toLowerCase().includes(a)||s.character.toLowerCase().includes(a)?i("img",{key:l,onClick:()=>{e.onClose(),t(l)},src:`https://st.ayaka.one/img/${s.img}`,srcSet:`https://st.ayaka.one/img/${s.img}`,loading:"lazy"}):null)},[o,js]);return i(be,{...e,size:"lg",title:"Select character menu"},i(pe,{flexDirection:"column",style:{paddingTop:12}},i(Te,{content:"mafuyu",placeholder:"Mafuyu",onChange:a=>r(a)}),i(ei,{style:{height:520}},i("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 330px)",rowGap:6,columnGap:5,gridTemplateRows:"repeat(3, 256px)"}},n))))}var K_e=h(()=>{"use strict";d();Lt();Moe();C()});function Boe({modalProps:e,settings:t}){let[o,r]=V.useState("\u594F\u3067\u30FC\u304B\u308F\u3044\u3044"),[n,a]=V.useState(49),[s,l]=V.useState(js[n].defaultText.s),[c,u]=V.useState(js[n].defaultText.r),[p,m]=V.useState(!1),[g,x]=V.useState(!1),[v,y]=V.useState({x:js[n].defaultText.x,y:js[n].defaultText.y}),[A,k]=V.useState(36),w,I=new Image;I.crossOrigin="anonymous",I.src="https://st.ayaka.one/img/"+js[n].img,V.useEffect(()=>{y({x:js[n].defaultText.x,y:js[n].defaultText.y}),l(js[n].defaultText.s),u(js[n].defaultText.r),x(!1)},[n]),I.onload=()=>{x(!0)};let E=Math.PI*o.length/7,N=B=>{if(B.canvas.width=296,B.canvas.height=256,g&&document.fonts.check("12px YurukaStd")){let _=B.canvas.width/I.width,q=B.canvas.height/I.height,$=Math.min(_,q),re=(B.canvas.width-I.width*$)/2,Z=(B.canvas.height-I.height*$)/2;B.clearRect(0,0,B.canvas.width,B.canvas.height),B.drawImage(I,0,0,I.width,I.height,re,Z,I.width*$,I.height*$),B.font=`${s}px YurukaStd, SSFangTangTi`,B.lineWidth=9,B.save(),B.translate(v.x,v.y),B.rotate(c/10),B.textAlign="center",B.strokeStyle="white",B.fillStyle=js[n].color;let ee=o.split(` `);if(p)for(let ae of ee)for(let ge=0;ge{ce(B=>i(Noe,{modalProps:B,setCharacter:a}))}},{text:"Upload as Attachment",variant:"primary",onClick:()=>{t.store.AutoCloseModal&&e.onClose(),w.toBlob(B=>{let _=new File([B],`${js[n].character}-sekai_cards.png`,{type:"image/png"});Mr.promptToUpload([_],W.getChannel(Fe.getChannelId()),0)})}}]},i(pe,{flexDirection:"row",style:{paddingTop:12}},i("div",{style:{marginRight:30}},i(q_e,{draw:N,id:"SekaiCard_Canvas"}),i(oe,null,"Text Y Pos"),i(cn,{minValue:0,maxValue:256,asValueChanges:B=>{B=Math.round(B),y({x:v.x,y:p?256+s*3-B:256-B})},initialValue:p?256-v.y+s*3:256-v.y,orientation:"vertical",onValueRender:B=>String(Math.round(B))}),i(oe,null,"Text XZ Pos"),i(cn,{minValue:0,maxValue:296,asValueChanges:B=>{B=Math.round(B),y({y:v.y,x:B})},initialValue:v.x,orientation:"horizontal",onValueRender:B=>String(Math.round(B))})),i("div",{style:{marginRight:10,width:"30vw"}},i(oe,null,"Text"),i(Ea,{onChange:r,placeholder:o,rows:4}),i(oe,null,"Rotation"),i(cn,{markers:[-10,-5,0,5,10],stickToMarkers:!1,minValue:-10,maxValue:10,asValueChanges:B=>u(B),initialValue:c,keyboardStep:.2,orientation:"horizontal",onValueRender:B=>String(B.toFixed(2))}),i(oe,null,"Font Size"),i(cn,{minValue:10,asValueChanges:B=>l(Math.round(B)),maxValue:100,initialValue:s,keyboardStep:1,orientation:"horizontal",onValueRender:B=>String(Math.round(B))}),i(oe,null,"Spacing"),i(cn,{markers:[18,36,72,100],stickToMarkers:!1,minValue:18,maxValue:100,initialValue:A,asValueChanges:B=>k(B),onValueRender:B=>String(Math.round(B))}),i(mo,{title:"Enable curve",value:p,onChange:B=>m(B)}))))}var Q_e=h(()=>{"use strict";d();Lt();hi();We();Moe();C();W_e();K_e()});var Roe,Z_e=h(()=>{"use strict";d();Roe=()=>i("svg",{width:"20px",height:"20px",viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},i("defs",{id:"defs1"}),i("g",{display:"inline",transform:"translate(-86.43442,-121.0243)"},i("path",{display:"inline",fill:"#b5bac1",strokeWidth:.322584,d:"m 86.43442,144.56658 c 0,-0.35876 0.49639,-4.87067 0.55373,-5.03306 0.38696,-1.09601 0.56265,-5.24386 0.25974,-6.13243 -2.58179,-7.57364 4.72348,-13.88165 13.967,-12.06035 5.41424,1.0668 7.97981,4.26537 7.8317,9.764 -0.0217,0.80623 -0.035,2.54958 -0.0296,3.8741 0.0104,2.5241 0.0238,2.61704 0.74285,5.15284 0.66615,2.3493 0.88593,4.6371 0.44547,4.6371 -0.19782,0 -0.24112,-0.16283 -0.36885,-1.38734 -0.0796,-0.76304 -0.28215,-1.9292 -0.45012,-2.59146 -0.16797,-0.66226 -0.3891,-1.53393 -0.4914,-1.93704 -0.25872,-1.01952 -0.41856,-2.34765 -0.50404,-4.18822 -0.14085,-3.03288 -0.61199,-5.40629 -1.47053,-7.4079 -0.16673,-0.38872 -0.28108,-0.70676 -0.25411,-0.70676 0.19422,0 1.10671,1.94697 1.52125,3.24587 0.0956,0.29961 0.119,0.17372 0.12811,-0.69002 0.0874,-8.27303 -14.51973,-10.67028 -19.72052,-3.23643 -1.18128,1.68848 -1.50458,3.47584 -1.0567,5.84199 0.22369,1.18176 0.32492,1.21695 0.4298,0.14941 0.32598,-3.3181 1.60403,-6.89879 2.65947,-7.45099 0.22208,-0.11619 0.15983,0.0101 -0.31432,0.63756 -1.8298,2.42147 -2.29566,7.23761 -1.091,11.27894 0.74017,2.48308 2.29757,5.33887 3.16739,5.80803 0.15619,0.0842 0.13676,0.007 -0.083,-0.32927 -1.42439,-2.18071 -2.15792,-4.88443 -2.16071,-7.96411 -10e-4,-1.19072 -0.0114,-1.24021 -0.24849,-1.18773 -0.32456,0.0719 -0.31216,-0.0129 0.0496,-0.33873 0.23647,-0.21301 0.33874,-0.49646 0.50211,-1.39165 0.11283,-0.61829 0.28423,-1.32505 0.38087,-1.57058 0.17572,-0.44642 0.17572,-0.44642 0.10304,-0.0276 -0.15336,0.88365 -0.26391,2.30688 -0.18482,2.3793 0.25449,0.23307 0.97553,-0.0522 1.11288,-0.44029 0.33728,-0.95299 0.32834,-1.36313 -0.0297,-1.36313 -0.45193,0 -0.40969,-0.20048 0.059,-0.27983 0.29327,-0.0496 0.42872,-0.15505 0.56855,-0.44238 0.77872,-1.60023 1.57681,-2.72775 2.8239,-3.98953 0.9045,-0.91517 1.66474,-1.55356 1.66474,-1.39794 0,0.06 -0.11174,0.19462 -0.2483,0.29924 -0.13656,0.10462 -0.52595,0.55664 -0.86532,1.0045 -0.33936,0.44785 -0.67289,0.8435 -0.74119,0.87924 -0.0683,0.0357 -0.12417,0.1196 -0.12417,0.18639 0,0.0668 0.33395,-0.15833 0.74212,-0.50026 0.71666,-0.60035 1.08503,-0.62857 0.40912,-0.0313 -0.39166,0.34608 -0.51475,1.46233 -0.34081,3.09075 0.0982,0.91939 0.0982,0.91939 0.24305,-0.23236 0.0797,-0.63347 0.23686,-1.31667 0.34934,-1.51823 0.20449,-0.36647 0.20449,-0.36647 0.13338,0 -0.0391,0.20156 -0.0874,1.23814 -0.10726,2.30352 -0.0199,1.06537 -0.0141,1.70146 0.0128,1.41352 0.0602,-0.6432 0.50891,-2.99751 0.67356,-3.53381 0.17515,-0.57053 0.34829,-0.48211 0.20501,0.10471 -0.19409,0.79491 -0.18248,3.44559 0.018,4.10968 0.17029,0.56411 0.82376,1.97047 0.98263,2.11477 0.0442,0.0401 0.0828,-0.54882 0.0858,-1.30882 0.007,-1.8427 0.32207,-3.59171 0.95052,-5.2801 0.35913,-0.96484 0.61912,-0.82837 2.2901,1.20211 0.58055,0.70545 1.06761,1.28264 1.08234,1.28264 0.0919,0 -0.35909,-1.76336 -0.62925,-2.46057 -0.35534,-0.91702 -1.2776,-2.50594 -1.9682,-3.3909 -0.24201,-0.31012 -0.41729,-0.58309 -0.38952,-0.6066 0.21026,-0.17799 2.09926,2.19022 2.72926,3.42162 0.19151,0.37432 0.42766,0.7343 0.52478,0.79997 0.20408,0.13796 0.85283,2.30516 0.96726,3.23118 0.16891,1.36698 0.18958,1.4274 0.46321,1.35388 0.1673,-0.045 0.22294,-0.0288 0.16657,0.0484 -0.0465,0.0637 -0.16483,0.11592 -0.26286,0.11592 -0.21774,0 -0.24085,0.20807 -0.0236,0.21272 0.38859,0.008 0.98667,0.62492 0.60614,0.62492 -0.20922,0 -0.23519,0.13624 -0.30436,1.59676 -0.12353,2.60829 -1.12864,6.15531 -2.15183,7.59373 -0.39531,0.55574 -0.40217,0.57961 -0.0968,0.33702 0.43062,-0.34211 1.5512,-2.02996 2.05025,-3.08813 1.43209,-3.03661 1.9725,-10.83668 0.90245,-13.02571 -0.24405,-0.49928 -0.11481,-0.53267 0.17841,-0.0461 0.48707,0.80822 1.24196,2.92433 1.37619,3.85774 0.46142,3.20873 0.51143,4.32555 0.22319,4.98405 -0.1109,0.25334 -0.23558,0.76689 -0.27707,1.14121 -0.13574,1.2246 -0.96944,4.36158 -1.21424,4.56882 -0.0355,0.0301 0.0227,-3.05399 0.072,-3.80971 0.0431,-0.66174 -0.12213,-0.53853 -0.21064,0.15706 -1.05425,8.28558 -0.88932,7.71581 -2.24392,7.75187 -1.12122,0.0299 -1.12122,0.0299 -1.25764,-0.36647 -0.13642,-0.39632 -0.13642,-0.39632 -0.0709,-0.004 0.1039,0.62315 -2.04821,0.61693 -2.42423,-0.007 -0.24056,-0.39917 -0.62998,-0.75697 -0.62998,-0.57881 0,0.0518 0.076,0.18717 0.16887,0.30076 0.55198,0.67509 0.54535,0.6777 -1.72001,0.6777 -2.27573,0 -2.12438,0.0626 -1.83601,-0.75911 0.13997,-0.39886 -0.19031,-0.15481 -0.35426,0.26177 -0.17514,0.44499 -0.17514,0.44499 -2.71328,0.47325 -2.95541,0.0329 -2.7088,0.38268 -2.76751,-3.92543 -0.0275,-2.01757 -0.0776,-2.65971 -0.24528,-3.14116 -0.1159,-0.33283 -0.28821,-0.88786 -0.3829,-1.23339 -0.30644,-1.11814 -0.66292,-1.5995 -0.66292,-0.89515 0,0.16994 -0.0524,0.53509 -0.11643,0.81147 -0.62291,2.68843 -0.90367,4.55514 -1.07164,7.12511 -0.0774,1.18466 -0.66722,2.13971 -0.66722,1.08044 z m 15.27201,-1.08044 c -0.0466,-0.18716 -0.13035,-0.38154 -0.18615,-0.43196 -0.0558,-0.0504 -0.0432,0.10271 0.0281,0.34029 0.15298,0.51021 0.28068,0.58427 0.15807,0.0917 z m -0.34521,-1.04051 c -0.0395,-0.0835 -0.0688,-0.0587 -0.0747,0.0633 -0.005,0.11038 0.0239,0.17222 0.065,0.13743 0.0411,-0.0348 0.0455,-0.1251 0.01,-0.20069 z m -4.76068,-0.37301 c 0.44652,-0.44012 0.28353,-0.96852 -0.29875,-0.96852 -0.18504,0 -0.21834,-0.0485 -0.15294,-0.22296 0.0751,-0.20031 0.0448,-0.21815 -0.29786,-0.17557 -0.2098,0.0261 -0.40098,-0.002 -0.42483,-0.0628 -0.0684,-0.17368 -0.70478,0.23037 -0.70478,0.44748 0,0.2188 0.24545,0.4258 1.00772,0.84982 0.65119,0.36223 0.6401,0.36054 0.87144,0.13251 z m 4.637,-0.0458 c -0.0395,-0.0835 -0.0688,-0.0587 -0.0747,0.0633 -0.005,0.11038 0.0239,0.17222 0.065,0.13743 0.0411,-0.0348 0.0455,-0.1251 0.01,-0.20069 z m -0.24737,-0.62823 c -0.0395,-0.0835 -0.0688,-0.0587 -0.0747,0.0633 -0.005,0.11038 0.0239,0.17222 0.065,0.13743 0.0411,-0.0348 0.0455,-0.1251 0.01,-0.20069 z m 1.89841,-1.97636 c 0.65117,-1.092 1.48984,-4.44506 1.47637,-5.9026 -0.008,-0.81853 -0.32439,-0.12694 -0.4101,0.8952 -0.1632,1.94638 -0.75977,4.29396 -1.33402,5.24958 -0.12977,0.21596 -0.20779,0.39264 -0.17338,0.39264 0.0344,0 0.23293,-0.28566 0.44113,-0.63482 z m -5.16782,0.25136 c -0.085,-0.029 -0.22418,-0.029 -0.30921,0 -0.085,0.0291 -0.0155,0.0528 0.1546,0.0528 0.17007,0 0.23965,-0.0238 0.15461,-0.0528 z m 0.56203,-0.61124 c 0.0829,-0.7159 -1.16941,-0.9194 -1.45092,-0.23577 -0.2219,0.53885 -0.13597,0.59556 0.85797,0.56628 0.52284,-0.0154 0.55879,-0.0354 0.59295,-0.33051 z m -7.02016,-1.17205 c -0.22672,-0.67083 -0.29985,-2.72431 -0.12792,-3.59204 0.3795,-1.91533 0.38175,-1.86763 -0.0775,-1.6454 -0.24642,0.11925 -0.2534,0.15817 -0.11188,0.62453 0.13744,0.45294 0.0322,0.71398 -0.13717,0.34029 -0.28866,-0.63681 -0.40096,0.9802 -0.16725,2.40822 0.14756,0.9016 0.6648,2.65005 0.71776,2.42627 0.0213,-0.0898 -0.022,-0.34268 -0.096,-0.56187 z m 8.29162,0.11839 c 3.0333,-0.42582 3.69254,-0.85737 3.93502,-2.57593 0.084,-0.59518 0.17521,-1.20962 0.20274,-1.36544 0.0382,-0.21586 0.007,-0.26927 -0.13128,-0.22438 -0.22963,0.0746 -0.22775,-0.14354 0.004,-0.48703 0.26742,-0.396 0.23109,-0.69817 -0.0928,-0.77164 -0.61147,-0.13872 -0.65213,-0.10412 -0.60655,0.51612 0.0982,1.33567 -1.49209,2.12697 -2.52214,1.25499 -0.36096,-0.30557 -0.397,-0.51515 -0.0737,-0.42827 0.5512,0.1481 0.89029,-0.28649 0.35756,-0.45826 -0.19181,-0.0619 -0.34043,-0.0434 -0.47825,0.0593 -0.17938,0.13371 -0.20831,0.1049 -0.28096,-0.2797 -0.0714,-0.37818 -0.11207,-0.42041 -0.34441,-0.35799 -0.22142,0.0595 -0.24834,0.0396 -0.16884,-0.12454 0.052,-0.10742 0.12205,-0.276 0.15561,-0.37462 0.14495,-0.42592 1.10686,-0.65834 2.72465,-0.65834 1.7786,0 1.74449,0.0361 1.00299,-1.061 -0.45839,-0.67822 -0.55922,-0.76443 -0.95856,-0.81958 -0.47591,-0.0657 -2.12316,0.0796 -2.37077,0.20915 -0.0923,0.0483 -0.12803,0.0259 -0.0945,-0.0593 0.0945,-0.23991 0.98545,-0.42876 1.86465,-0.39522 0.45933,0.0175 0.83503,0.0217 0.83488,0.009 -7.1e-4,-0.0565 -1.81388,-2.22468 -2.19844,-2.6289 -0.5174,-0.54386 -0.55657,-0.51877 -0.95826,0.61388 -0.64099,1.80737 -0.95672,4.90403 -0.60456,5.9295 0.29095,0.84726 -0.24475,0.63952 -1.31979,-0.5118 -0.49195,-0.52687 -0.60172,-0.21441 -0.22223,0.63261 0.0882,0.19692 0.0707,0.23686 -0.0919,0.20941 -0.38045,-0.0642 -0.77173,-0.92388 -0.96859,-2.12803 -0.10356,-0.63347 -0.27455,-1.4109 -0.37997,-1.72764 -0.25023,-0.7518 -0.44969,-2.63303 -0.3497,-3.29822 0.1148,-0.76368 -0.54507,-0.21749 -1.49044,1.23368 -0.17698,0.27168 -0.46355,0.71163 -0.63682,0.97766 -0.17326,0.26604 -0.29849,0.49652 -0.27829,0.51218 0.0202,0.0156 0.39852,0.10616 0.84069,0.20114 0.44218,0.095 0.88745,0.24649 0.98949,0.33671 0.1669,0.14756 0.15447,0.15602 -0.12368,0.0843 -1.69192,-0.4364 -1.8901,-0.39438 -2.27386,0.48209 -0.45089,1.02975 -0.46625,1.0017 0.58579,1.06905 1.28268,0.0821 2.08966,0.42157 2.12753,0.89492 0.0196,0.24473 -0.0187,0.33193 -0.12981,0.29583 -0.11353,-0.0369 -0.17252,0.12364 -0.21102,0.57418 -0.16429,1.92268 -3.03932,1.66758 -3.0774,-0.27306 -0.0103,-0.52516 -0.0103,-0.52516 -0.19317,0.10307 -0.13175,0.45264 -0.14937,0.72339 -0.0631,0.96868 0.0683,0.19422 0.0716,0.31524 0.008,0.28176 -0.36144,-0.18911 -0.11173,2.34359 0.25697,2.60622 1.21621,0.86633 5.06923,1.33698 7.80326,0.95318 z m -2.23547,-0.44286 c -0.40128,-0.0542 -0.61997,-0.21059 -0.54028,-0.38638 0.0899,-0.1983 0.59018,-0.28212 0.9646,-0.16161 0.59981,0.19305 0.25403,0.63961 -0.42432,0.54799 z m -5.77617,-2.22051 c 0,-0.31674 0.0232,-0.44631 0.0515,-0.28794 0.0283,0.15836 0.0283,0.41751 0,0.57588 -0.0283,0.15836 -0.0515,0.0288 -0.0515,-0.28794 z m 8.45228,-3.66849 c 0.0705,-0.0597 0.34601,-0.13077 0.61224,-0.15799 0.48407,-0.0495 0.48407,-0.0495 0.11301,0.10379 -0.44181,0.18249 -0.91891,0.21814 -0.72525,0.0542 z m -5.61365,-0.0719 c -0.4156,-0.0437 -0.56892,-0.23948 -0.18553,-0.23695 0.35564,0.002 0.77304,0.12125 0.77304,0.2202 0,0.0509 -0.0417,0.085 -0.0928,0.0757 -0.051,-0.009 -0.27366,-0.0358 -0.49474,-0.059 z m 11.86431,4.0032 c 0.91051,-1.01568 0.96795,-2.80233 0.1027,-3.19434 -0.19534,-0.0885 -0.22853,0.0229 -0.3675,1.2339 -0.084,0.73216 -0.22368,1.6041 -0.31037,1.93765 -0.19161,0.73729 -0.0697,0.74212 0.57517,0.0228 z m -13.57383,-1.86879 c 0.10059,-0.13662 0.0878,-0.20411 -0.053,-0.28011 -0.42839,-0.23118 -0.80283,0.0536 -0.49001,0.37267 0.18342,0.18709 0.35917,0.15713 0.54302,-0.0926 z m -4.69093,10.58445 c 0.33919,-2.62937 0.82337,-5.02572 1.16651,-5.77332 0.26221,-0.5713 0.2664,-0.1928 0.01,0.89904 -0.27,1.1495 -0.28827,1.30636 -0.43961,3.77487 -0.0947,1.5444 -0.0947,1.5444 -0.44447,1.5444 -0.33806,0 -0.34786,-0.0149 -0.29238,-0.44499 z m 17.42396,0.11779 c 0.0425,-0.17996 0.0837,-0.75715 0.0915,-1.28264 0.0164,-1.10073 0.14767,-0.77731 0.30285,0.74602 0.0865,0.84938 0.0833,0.86382 -0.19185,0.86382 -0.24745,0 -0.27089,-0.0379 -0.20253,-0.3272 z m 2.01344,-0.9457 c -0.12105,-1.90577 -0.10059,-3.64824 0.0428,-3.64824 0.068,0 0.12443,0.10601 0.12534,0.23558 10e-4,0.12957 0.16714,0.63609 0.36941,1.12558 0.42872,1.03756 0.46106,0.94104 0.12101,-0.36116 -0.406,-1.55473 -0.31155,-1.62968 0.26024,-0.20651 0.98591,2.45382 1.19342,4.12765 0.51173,4.12765 -0.49638,0 -0.49638,0 -0.66376,-0.91617 -0.16738,-0.91617 -0.16738,-0.91617 -0.20312,0 -0.0616,1.58031 -0.45652,1.33041 -0.56368,-0.35673 z"})))});var J_e,c5t,Y_e,CL,X_e=h(()=>{"use strict";d();Ba();j();O();R();C();Q_e();Z_e();J_e=M({AutoCloseModal:{type:3,description:"Auto close modal when done",default:!0}}),c5t=()=>i(Un,{onClick:()=>ce(e=>i(Boe,{modalProps:e,settings:J_e})),tooltip:"Sekai Stickers"},Roe()),Y_e=!1,CL=S({name:"SekaiStickers",description:"Sekai Stickers built in discord originally from github.com/TheOriginalAyaka",dependencies:["ChatInputButtonAPI"],tags:["Chat","Emotes"],authors:[b.MaiKokain],settings:J_e,chatBarButton:{icon:Roe,render:c5t},async start(){Y_e||([{name:"YurukaStd",url:"https://raw.githubusercontent.com/TheOriginalAyaka/sekai-stickers/47a2ca33b8cb35f59800e8faad48980e4ce5ea71/src/fonts/YurukaStd.woff2"},{name:"SSFangTangTi",url:"https://raw.githubusercontent.com/TheOriginalAyaka/sekai-stickers/main/src/fonts/ShangShouFangTangTi.woff2"}].map(t=>{new FontFace(t.name,`url(${t.url})`).load().then(o=>{document.fonts.add(o)},o=>{console.log(o)})}),Y_e=!0)}})});var V_e=h(()=>{});function u5t(){return i("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24",id:"vc-searchbutton-icon"},i("path",{fill:"currentColor",fillRule:"evenodd",d:"M15.62 17.03a9 9 0 1 1 1.41-1.41l4.68 4.67a1 1 0 0 1-1.421.42l-4.67-4.68ZM17 10a7 7 0 1 1-14 0 7 7 0 0 1 14 0Z",clipRule:"evenodd"}))}var TL,eUe=h(()=>{"use strict";d();V_e();Tf();Pe();O();R();C();TL=S({name:"ServerSearch",authors:[F.camila314],description:"Navigate your servers better with a quick search button",tags:["Shortcuts","Servers"],renderButton(){return i(H,{noop:!0},i("div",{id:"vc-searchbutton-container"},i(ve,{text:"Search",position:"right"},({onMouseEnter:e,onMouseLeave:t})=>i("div",{id:"vc-searchbutton",onMouseEnter:e,onMouseLeave:t,onClick:()=>Q.dispatch({type:"QUICKSWITCHER_SHOW",query:"",queryMode:null})},i(u5t,null)))))},start(){jl(0,this.renderButton)},stop(){ll(0,this.renderButton)}})});var tUe=h(()=>{});var pr,El,d5t,oUe=h(()=>{"use strict";d();j();yt();R();C();pr=M({showEquicordDonor:{type:3,description:"Enable to show Equicord Donor badges in chat.",hidden:!0,default:!0},EquicordDonorPosition:{type:1,description:"The position of the Equicord Donor badges.",hidden:!0,default:0},showEquicordContributor:{type:3,description:"Enable to show Equicord Contributor badges in chat.",hidden:!0,default:!0},EquicordContributorPosition:{type:1,description:"The position of the Equicord Contributor badge.",hidden:!0,default:1},showVencordDonor:{type:3,description:"Enable to show Vencord donor badges in chat.",hidden:!0,default:!0},VencordDonorPosition:{type:1,description:"The position of the Vencord Donor badges.",hidden:!0,default:4},showVencordContributor:{type:3,description:"Enable to show Vencord contributor badges in chat.",hidden:!0,default:!0},VencordContributorPosition:{type:1,description:"The position of the Vencord Contributor badge.",hidden:!0,default:5},showDiscordProfile:{type:3,description:"Enable to show Discord profile badges in chat.",hidden:!0,default:!0},DiscordProfilePosition:{type:1,description:"The position of the Discord profile badges.",hidden:!0,default:6},showDiscordNitro:{type:3,description:"Enable to show Discord Nitro badges in chat.",hidden:!0,default:!0},DiscordNitroPosition:{type:1,description:"The position of the Discord Nitro badge.",hidden:!0,default:7},badgeSettings:{type:6,description:"Setup badge layout and visibility",component:()=>i(d5t,null)}}),El=pr,d5t=()=>{let[e,t]=T([{src:"https://badge.equicord.org/donor.webp",shown:pr.store.showEquicordDonor,title:"Equicord donor badges",key:"EquicordDonor",position:pr.store.EquicordDonorPosition},{src:"https://equicord.org/assets/favicon.png",shown:pr.store.showEquicordContributor,title:"Equicord contributor badge",key:"EquicordContributer",position:pr.store.EquicordContributorPosition},{src:"https://cdn.discordapp.com/emojis/1026533070955872337.png",shown:pr.store.showVencordDonor,title:"Vencord donor badges",key:"VencordDonor",position:pr.store.VencordDonorPosition},{src:"https://cdn.discordapp.com/emojis/1092089799109775453.png",shown:pr.store.showVencordContributor,title:"Vencord contributor badge",key:"VencordContributer",position:pr.store.VencordContributorPosition},{src:"https://cdn.discordapp.com/badge-icons/bf01d1073931f921909045f3a39fd264.png",shown:pr.store.showDiscordProfile,title:"Discord profile badges (HypeSquad, Discord Staff, Early Supporter, etc.)",key:"DiscordProfile",position:pr.store.DiscordProfilePosition},{src:"https://cdn.discordapp.com/badge-icons/2ba85e8026a8614b640c2837bcdfe21b.png",shown:pr.store.showDiscordNitro,title:"Nitro badge",key:"DiscordNitro",position:pr.store.DiscordNitroPosition}]);G(()=>{e.forEach(s=>{switch(s.key){case"EquicordDonor":pr.store.EquicordDonorPosition=s.position,pr.store.showEquicordDonor=s.shown;break;case"EquicordContributer":pr.store.EquicordContributorPosition=s.position,pr.store.showEquicordContributor=s.shown;break;case"VencordDonor":pr.store.VencordDonorPosition=s.position,pr.store.showVencordDonor=s.shown;break;case"VencordContributer":pr.store.VencordContributorPosition=s.position,pr.store.showVencordContributor=s.shown;break;case"DiscordProfile":pr.store.DiscordProfilePosition=s.position,pr.store.showDiscordProfile=s.shown;break;case"DiscordNitro":pr.store.DiscordNitroPosition=s.position,pr.store.showDiscordNitro=s.shown;break;default:break}})},[e]);let o=(s,l)=>{e[l].shown?s.dataTransfer.setData("index",l):s.preventDefault()},r=s=>{s.preventDefault()},n=(s,l)=>{let c=s.dataTransfer.getData("index"),u=[...e],p=u[c];u.splice(c,1),u.splice(l,0,p),u.forEach((m,g)=>{m.position=g}),t(u)},a=s=>{let l=[...e];l[s].shown=!l[s].shown,t(l)};return i(f,null,i(Y,null,"Drag the badges to reorder them, you can click to enable/disable a specific badge type."),i("div",{className:"vc-sbic-badge-settings"},i("img",{className:"vc-sbic-settings-avatar",src:L.getCurrentUser().getAvatarURL()}),i(Y,{className:"vc-sbic-settings-username"},L.getCurrentUser().globalName),e.sort((s,l)=>s.position-l.position).map((s,l)=>i("div",{key:s.key,className:`vc-sbic-image-container ${s.shown?"":"vc-sbic-disabled"}`,onDragOver:c=>r(c),onDrop:c=>n(c,l),onClick:()=>a(l)},i("img",{src:s.src,draggable:s.shown,onDragStart:c=>o(c,l),title:s.title})))))}});function Zb({badge:e,author:t}){switch(e){case"EquicordDonor":return i("span",{style:{order:El.store.EquicordDonorPosition}},sl.getEquicordDonorBadges(t.id)?.map(r=>i(Qb,{key:t.id,className:Kb,name:r.description,size:20,src:r.iconSrc})));case"EquicordContributer":return B3(t.id)?i("span",{style:{order:El.store.EquicordContributorPosition}},i(Qb,{className:Kb,name:"Equicord Contributor",size:20,src:"https://equicord.org/assets/favicon.png"})):null;case"VencordDonor":return i("span",{style:{order:El.store.VencordDonorPosition}},sl.getDonorBadges(t.id)?.map(r=>i(Qb,{key:t.id,className:Kb,name:r.description,size:20,src:r.iconSrc})));case"VencordContributer":return N3(t.id)?i("span",{style:{order:El.store.VencordContributorPosition}},i(Qb,{className:Kb,name:"Vencord Contributor",size:20,src:"https://cdn.discordapp.com/emojis/1092089799109775453.png"})):null;case"DiscordProfile":let o=p5t.filter(r=>(t.flags||t.publicFlags)&1<i(Qb,{key:t.id,className:Kb,name:r[1],size:20,src:`https://cdn.discordapp.com/badge-icons/${r[2]}.png`}));return o.length>0?i("span",{style:{order:El.store.DiscordProfilePosition}},o):null;case"DiscordNitro":return(t?.premiumType??0)>0?i("span",{style:{order:El.store.DiscordNitroPosition}},i(Qb,{className:Kb,name:"Discord Nitro"+(t.premiumType===3?" Basic":t.premiumType===1?" Classic":""),size:20,src:"https://cdn.discordapp.com/badge-icons/2ba85e8026a8614b640c2837bcdfe21b.png"})):null;default:return null}}function m5t({author:e}){return i("span",{className:"vc-sbic-badge-row",style:{margin:"2px"}},El.store.showEquicordDonor&&i(Zb,{badge:"EquicordDonor",author:e}),El.store.showEquicordContributor&&i(Zb,{badge:"EquicordContributer",author:e}),El.store.showVencordDonor&&i(Zb,{badge:"VencordDonor",author:e}),El.store.showVencordContributor&&i(Zb,{badge:"VencordContributer",author:e}),El.store.showDiscordProfile&&i(Zb,{badge:"DiscordProfile",author:e}),El.store.showDiscordNitro&&i(Zb,{badge:"DiscordNitro",author:e}))}var Kb,Qb,p5t,IL,nUe=h(()=>{"use strict";d();tUe();q0();O();Be();R();le();oUe();({roleIcon:Kb}=Ie("roleIcon","separator")),Qb=he("#{intl::ROLE_ICON_ALT_TEXT}"),p5t=Object.freeze([[0,"Discord Staff","5e74e9b61934fc1f67c65515d1f7e60d"],[1,"Partnered Server Owner","3f9748e53446a137a052f3454e2de41e"],[2,"HypeSquad Events","bf01d1073931f921909045f3a39fd264"],[6,"HypeSquad Bravery","8a88d63823d8a71cd5e390baa45efa02"],[7,"HypeSquad Brilliance","011940fd013da3f7fb926e4a1cd2e618"],[8,"HypeSquad Balance","3aa41de486fa12454c3761e8e223442e"],[3,"Discord Bug Hunter","2717692c7dca7289b35297368a940dd0"],[14,"Discord Bug Hunter","848f79194d4be5ff5f81505cbd0ce1e6"],[17,"Early Verified Bot Developer","6df5892e0f35b051f8b61eace34f4967"],[9,"Early Supporter","7060786766c9c840eb3019e725d2b358"],[18,"Moderator Programs Alumni","fee1624003e2fee35cb398e125dc479b"]]);IL=S({name:"ShowBadgesInChat",authors:[b.Inbestigator,F.KrystalSkull],description:"Shows the message author's badges beside their name in chat.",dependencies:["MessageDecorationsAPI"],tags:["Appearance","Chat"],settings:El,renderMessageDecoration(e){return e.message?.author?i(m5t,{author:e.message.author}):null}})});function h5t(e,t){return e?.embeds?.some(o=>o?.url===t)||e?.attachments?.some(o=>o?.url===t)}function x5t(e,t){let o=e?.content?.match(/https?:\/\/[^\s]+/g)||[];for(let r of o)if(r===t||iUe(r)===t)return!0;for(let r of e.embeds)if(r.url!==t&&(r.rawDescription?.includes(t)||r.fields.some(n=>n.value.includes(t))))return!0;return!1}function iUe(e){let t=/(https?:\/\/)?(?:m\.|www\.)?(youtu\.be|youtube\.com)\/(embed\/|v\/|watch\?v=|watch\?.+&v=|shorts\/)?((\w|-){11})(?:\S+)?/;if(t.test(e)){let a=new URL(e),s=new URLSearchParams(a.search),l=0;if(s.has("t")||s.has("start")){let c=s.get("start")||s.get("t");if(c&&c.match(/^(?:(\d+h)?(\d+m)?(\d+s)?(\d+)?)?$/)){let u=c.match(/(\d+)h/),p=c.match(/(\d+)m/),m=c.match(/(\d+)s/),g=c.match(/(\d+)$/);u&&(l+=parseInt(u[1])*3600),p&&(l+=parseInt(p[1])*60),m&&(l+=parseInt(m[1])),g&&(l+=parseInt(g[1]))}}e=e.replace(t,`https://www.youtube.com/watch?v=$4${l?"&start="+l:""}`)}let o=/(https?:\/\/(?:www\.)?)x\.com(\/.*)?/;o.test(e)&&(e=e.replace(o,(a,s,l)=>s+"twitter.com"+(l||"")));let r=/(https?:\/\/(?:www\.)?)tiktok\.com(\/.*)?/,n=e.includes("?")?new URLSearchParams(e.split("?")[1]):new URLSearchParams;if(r.test(e)&&!n.has("enable_tiktok_webview")){n.append("enable_tiktok_webview","true");let a=n.toString();e=e.split("?")[0]+(a?"?"+a:"")}return e}async function y5t(e,t){let o=W.getChannel(t.channel_id);if(!fc(e))return;let r=await mt.post({url:Gt.Endpoints.UNFURL_EMBED_URLS,body:{urls:[e]}}).catch(l=>{EL("Failed to get embed"),Loe.error("Failed to get embed",l)});if(!r?.body?.embeds||r.body.embeds.length===0){EL("No embeds found");return}let{embeds:n}=r.body,a=[];for(let l of n)try{let c=v5t(o.id,t.id,l);if(!c){EL("Failed to get embed"),Loe.error("embed object couldn't be converted",l);continue}a.push(c)}catch(c){EL("Failed to get embed"),Loe.error("Failed to convert embed",c)}let s=[...t.embeds,...a];s.sort((l,c)=>t.content.indexOf(l.url)-t.content.indexOf(c.url)),Ds(t.channel_id,t.id,{embeds:s})}function b5t(e,t){let o=t.embeds.filter(r=>r.url!==e);Ds(t.channel_id,t.id,{embeds:o})}function EL(e){ne(e,D.Type.FAILURE,{position:D.Position.BOTTOM})}var Loe,f5t,g5t,rUe,v5t,DL,aUe=h(()=>{"use strict";d();Fo();V0();ot();O();He();Be();R();le();C();Loe=new ie("ShowMessageEmbeds"),f5t=(e,t)=>{if(t.itemSrc||!t.itemHref||!t.message)return;let o=wt("copy-native-link",e);if(!o)return;let{message:r}=t;rUe(o,r,t.itemHref)},g5t=(e,t)=>{if(!t.attachmentUrl)return;let o=lt.getMessage(t.channelId,t.messageId);o&&rUe(e,o,t.attachmentUrl)},rUe=(e,t,o)=>{o=iUe(o),h5t(t,o)?x5t(t,o)&&e.splice(0,0,i(P.MenuItem,{id:"vc-sme-remove",label:"Remove Embed",action:r=>b5t(o,t),icon:Vu,leadingAccessory:{type:"icon",icon:Vu},key:"vc-sme-remove"})):e.splice(0,0,i(P.MenuItem,{id:"vc-sme-show",label:"Show Embed",action:r=>y5t(o,t),icon:Ip,leadingAccessory:{type:"icon",icon:Ip},key:"vc-sme-show"}))};v5t=Oe('.uniqueId("embed_")');DL=S({name:"ShowMessageEmbeds",description:"Adds a context menu option to show embeds for links that don't have one",tags:["Appearance","Chat"],authors:[F.Suffocate],patches:[{find:'className:"attachmentLink",',replacement:{match:/(?:(\i).noStyleAndInteraction.*?)attachmentName:\i.attachmentName/,replace:"$&,channelId:$1.channelId,messageId:$1.messageId"}}],contextMenus:{message:f5t,"attachment-link-context":g5t}})});var PL,sUe=h(()=>{"use strict";d();O();R();PL=S({name:"ShowResourceChannels",description:"shows the channels hidden behind the server resources in the channel list",tags:["Servers"],authors:[F.VillainsRule],patches:[{find:".GUILD_DIRECTORY:null",replacement:[{match:/\i\.hideResourceChannels&&/,replace:"false&&"}]}]})});var lUe=h(()=>{});function w5t(e,t,o){let r=bt.getMember(e,t)?.roles;return r?.length?To.getSortedRoles(e).find(n=>r.includes(n.id)&&!o?.includes(n.id)):null}function uUe(e){let t=UA.store.excludedRoles??[];UA.store.excludedRoles=t.includes(e)?t.filter(o=>o!==e):[...t,e]}function Ooe(e){let t=UA.store.excludedRoles?.includes(e);return i(P.MenuItem,{id:"toggle",icon:t?ea:cUe,leadingAccessory:{type:"icon",icon:t?ea:cUe},label:t?"Show Role in Chat":"Hide Role in Chat",action:()=>uUe(e)})}function cUe(){return i("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M1.3 21.3a1 1 0 1 0 1.4 1.4l20-20a1 1 0 0 0-1.4-1.4l-20 20ZM3.16 16.05c.18.24.53.26.74.05l.72-.72c.18-.18.2-.45.05-.66a15.7 15.7 0 0 1-1.43-2.52.48.48 0 0 1 0-.4c.4-.9 1.18-2.37 2.37-3.72C7.13 6.38 9.2 5 12 5c.82 0 1.58.12 2.28.33.18.05.38 0 .52-.13l.8-.8c.25-.25.18-.67-.15-.79A9.79 9.79 0 0 0 12 3C4.89 3 1.73 10.11 1.11 11.7a.83.83 0 0 0 0 .6c.25.64.9 2.15 2.05 3.75Z"}),i("path",{fill:"currentColor",d:"M8.18 10.81c-.13.43.36.65.67.34l2.3-2.3c.31-.31.09-.8-.34-.67a4 4 0 0 0-2.63 2.63ZM12.85 15.15c-.31.31-.09.8.34.67a4.01 4.01 0 0 0 2.63-2.63c.13-.43-.36-.65-.67-.34l-2.3 2.3Z"}),i("path",{fill:"currentColor",d:"M9.72 18.67a.52.52 0 0 0-.52.13l-.8.8c-.25.25-.18.67.15.79 1.03.38 2.18.61 3.45.61 7.11 0 10.27-7.11 10.89-8.7a.83.83 0 0 0 0-.6c-.25-.64-.9-2.15-2.05-3.75a.49.49 0 0 0-.74-.05l-.72.72a.51.51 0 0 0-.05.66 15.7 15.7 0 0 1 1.43 2.52c.06.13.06.27 0 .4-.4.9-1.18 2.37-2.37 3.72C16.87 17.62 14.8 19 12 19c-.82 0-1.58-.12-2.28-.33Z"}))}function A5t({color:e}){return i("svg",{className:ML("icon"),"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24"},i("path",{fill:e,d:"M20.3 5.41h-.39c-.84 0-1.52-.65-1.52-1.46v-.3c0-.9-.77-1.65-1.71-1.65H7.31c-.94 0-1.71.74-1.71 1.65v.3c0 .81-.68 1.46-1.52 1.46H3.7c-.94 0-1.7.73-1.7 1.64v3.52l.01.49c.05 3.11.94 4.69 2.92 6.63C6.72 19.46 11.58 22 11.99 22c.41 0 5.27-2.54 7.06-4.31 1.98-1.95 2.92-3.53 2.92-6.63L22 7.05c0-.9-.76-1.64-1.7-1.64Zm-8.32.03a3.15 3.15 0 1 1-.01 6.3 3.15 3.15 0 0 1 .01-6.3Zm4.52 11.67c-.97.68-2.86 1.62-3.87 2.11-.42.2-.91.2-1.33 0a40.17 40.17 0 0 1-3.82-2.1.87.87 0 0 1-.37-.85c.42-2.69 2.46-3.21 4.89-3.21 2.43 0 4.4.68 4.87 3.08a.97.97 0 0 1-.38.98l.01-.01Z"}))}var ML,S5t,UA,k5t,NL,dUe=h(()=>{"use strict";d();lUe();j();Pe();ot();O();we();_e();Be();R();C();ML=K("vc-sric-"),S5t=["showBots","useRoleColor","excludedRoles"],UA=M({showBots:{type:3,description:"Whether to show the highest role on bots.",default:!1},useRoleColor:{type:3,description:"Use the role's color for the icon.",default:!0}}).withPrivateSettings();k5t=H.wrap(({user:e,channelId:t,isCompact:o})=>{let{showBots:r,useRoleColor:n,excludedRoles:a}=UA.use(S5t),s=!e.bot||r?W.getChannel(t)?.guild_id:null,l=ye([bt,To],()=>s?w5t(s,e.id,a):null,[s,e.id,a]);if(!s||!l)return null;let c=u=>{rt.openContextMenu(u,()=>{let p=bt.getMember(s,e.id)?.roles??[],m=a??[],g=To.getSortedRoles(s).filter(x=>m.includes(x.id)&&p.includes(x.id));return i(P.Menu,{navId:"vc-sric-context",onClose:rt.closeContextMenu,"aria-label":"Chat Role Actions"},i(P.MenuGroup,null,Ooe(l.id),g.length>0&&i(P.MenuItem,{id:"unhide-menu",label:"Unhide Roles in Chat"},g.map(x=>i(P.MenuItem,{key:x.id,id:`unhide-${x.id}`,label:x.name,action:()=>uUe(x.id)})))))})};return i(ve,{text:l.name},u=>i("span",{...u,className:X(ML("indicator"),o&&ML("indicator-compact")),onContextMenu:c},i(A5t,{color:n&&l.colorString||"currentColor"}),i("span",{className:ML("name")},l.name)))},{noop:!0}),NL=S({name:"ShowRolesInChat",description:"Shows a user's highest role next to their name in chat messages. Hide/show specific roles in their context menu (right-click).",tags:["Appearance","Chat","Roles","Servers"],authors:[F.lucabeyer],settings:UA,contextMenus:{"dev-context"(e,{id:t}){To.getRole(Ss()?.id??"",t)&&e.push(i(P.MenuGroup,null,Ooe(t)))},"guild-settings-role-context"(e,t){e.push(i(P.MenuGroup,null,Ooe(t.role.id)))}},renderMessageDecoration:({message:e,compact:t})=>i(k5t,{user:e.author,channelId:e.channel_id,isCompact:t})})});var BL,pUe=h(()=>{"use strict";d();O();R();BL=S({name:"ShowSongName",description:"Shows song name instead of artist for Spotify activity",tags:["Activity"],authors:[b.prism],patches:[{find:'.join(", ");return{text:',replacement:{match:/(?<=.join\(", "\);return\{text:)\i/,replace:"arguments[0]?.details??$&"}}]})});function RL(e){return`${_oe}${e}`}function zA(){return ks.getWindowKeys().filter(e=>e.startsWith(_oe))}function Yb(e){return ks.getWindowOpen(RL(e))}function mUe(){return fp.store.persistedPopoutWindowIds??[]}function C5t(){return zA().map(e=>e.slice(_oe.length))}function Mx(){if(!fp.store.persistPopoutWindows){fp.store.persistedPopoutWindowIds=[];return}fp.store.persistedPopoutWindowIds=C5t()}function T5t(e){for(let t of zA())mf.setAlwaysOnTop(t,e)}var fp,Foe,_oe,fUe=h(()=>{"use strict";d();j();Er();R();C();fp=M({persistSidebar:{type:3,description:"Keep the sidebar chat open across Discord restarts",default:!0},persistPopoutWindows:{type:3,description:"Restore open popout chats after Discord restarts.",default:!0,onChange:e=>{if(!e){fp.store.persistedPopoutWindowIds=[];return}Mx()}},persistedPopoutWindowIds:{type:7,description:"Persisted popout chat channel IDs.",default:[],hidden:!0},popoutAlwaysOnTop:{type:3,description:"Keep popout chat windows above all others.",default:!0,onChange:e=>{T5t(e)}}}),Foe=ko(()=>{let e={guildId:"",channelId:"",width:0},t={...e};class o extends yi.PersistedStore{static persistKey="SidebarStore";initialize(a){if(!fp.store.persistSidebar||!a)return;let{guildId:s,channelId:l,width:c}=a;e.guildId=s||"",e.channelId=l||"",e.width=c||0}getState(){return e}}let r=new o(Q,{async VC_SIDEBAR_CHAT_NEW({guildId:n,id:a}){if(t={...e},e.guildId=n||"",e.guildId){e.channelId=a,r.emitChange();return}e.channelId=await Sa.getOrEnsurePrivateChannel(a),r.emitChange()},VC_SIDEBAR_CHAT_PREVIOUS(){t.channelId&&(e.guildId=t.guildId,e.channelId=t.channelId),r.emitChange()},VC_SIDEBAR_CHAT_CLOSE(){t={...e},e.guildId="",e.channelId="",r.emitChange()}});return r}),_oe="DISCORD_VC_SC-"});var gUe,hUe=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/sidebarChat/styles.css",{name:"src/equicordplugins/sidebarChat/styles.css",source:`[class*="content"] > [class*="page"] > * { min-width: 0; } .vc-sidebar-chat-popout { align-items: stretch; background-color: var(--background-primary); } .vc-sidebar-chat-window { display: flex; flex: 1; min-height: 0; min-width: 0; overflow: hidden; width: 100%; background-color: var(--background-primary); color: var(--text-default); }`,classNames:{},dom:null});gUe="src/equicordplugins/sidebarChat/styles.css"});function Hoe(e){if(!e)return"Chat";if(e.isPrivate()){let t=e.getRecipientId?.();if(!e.name&&t){let o=L.getUser(t);if(o)return qe.getNickname(t)||o.globalName||o.username||"DM"}return e.name||"DM"}return e.name||"Chat"}function joe(e){return e.isPrivate()?!0:!e.isCategory()&&!e.isDirectory()&&!e.isVocal()}function $5t(e){return Yb(e)?"Close popout chat":"Popout chat"}function $oe(){$A=!1,LL!==null&&(window.clearInterval(LL),LL=null)}async function xUe(e,t=2500){let o=Date.now();for(;Date.now()-o<=t;){let r=W.getChannel(e);if(r)return r;await new Promise(n=>setTimeout(n,80))}return null}async function G5t(e,t=2500){let o=Date.now();for(;Date.now()-o<=t;){let r=W.getDMFromUserId?.(e);if(r)return r;await new Promise(n=>setTimeout(n,80))}return null}async function H5t(e){try{let t=await Promise.resolve(Sa.getOrEnsurePrivateChannel(e));if(!t)return;let o=await xUe(t);o&&Jb(o.id);return}catch{let t=await G5t(e);if(!t)return;let o=await xUe(t);o&&Jb(o.id)}}function vUe(e,t=!0){let o=RL(e);mf.close(o),t&&!$A&&Mx()}function Jb(e,t=!0){let o=W.getChannel(e);if(!o||!joe(o))return;let r=RL(e);if(Yb(e)){vUe(e,t);return}let n=Hoe(o);mf.open(r,()=>i(K5t,{channel:o,name:n,windowKey:r}),{defaultWidth:854,defaultHeight:480}),mf.setAlwaysOnTop(r,fp.store.popoutAlwaysOnTop),t&&!$A&&Mx()}function j5t(){if(!fp.store.persistPopoutWindows)return;$oe();let e=new Set(mUe());if(e.size===0)return;$A=!0;let t=()=>{for(let o of e){let r=W.getChannel(o);!r||!joe(r)||(e.delete(o),Jb(o,!1))}e.size===0&&($oe(),Mx())};t(),e.size>0&&(LL=window.setInterval(t,250))}function Q5t(){let e=ye([Fe,W,ks],()=>{let n=Fe.getChannelId(),a=n?W.getChannel(n):null;return{channel:a,isOpen:a?Yb(a.id):!1,label:Hoe(a)}},[]);if(!e.channel||!joe(e.channel))return null;let{channel:t,isOpen:o,label:r}=e;return i(il,{key:`${t.id}-${o?"open":"closed"}`,icon:o?zoe:Goe,tooltip:o?"Close popout chat":`Popout chat for ${r}`,"aria-label":"Popout chat",selected:o,onClick:()=>Jb(t.id)})}function Y5t(){let e=ye([ks],()=>zA().join("|"),[]);return G(()=>{$A||Mx()},[e]),null}var I5t,E5t,D5t,P5t,Goe,zoe,M5t,N5t,B5t,R5t,L5t,O5t,F5t,_5t,U5t,z5t,LL,$A,yUe,bUe,q5t,Uoe,OL,W5t,K5t,Z5t,SUe=h(()=>{"use strict";d();zp();Pe();O();we();_e();R();co();le();C();fUe();hUe();I5t=K("vc-sidebar-chat-"),E5t=he("toolbarClassName:","}),onDoubleClick:"),D5t=he("sidebarState"),P5t=({color:e,...t})=>i("svg",{"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",fill:e,viewBox:"0 0 24 24",...t},i("path",{d:"M2.3 7.7a1 1 0 0 1 0-1.4l4-4a1 1 0 0 1 1.4 1.4L5.42 6H21a1 1 0 1 1 0 2H5.41l2.3 2.3a1 1 0 1 1-1.42 1.4l-4-4ZM17.7 21.7l4-4a1 1 0 0 0 0-1.4l-4-4a1 1 0 0 0-1.4 1.4l2.29 2.3H3a1 1 0 1 0 0 2h15.59l-2.3 2.3a1 1 0 0 0 1.42 1.4Z"})),Goe=he("1-1h6a1 1 0 1 0 0-2H5Z"),zoe=he("1.4L12 13.42l5.3 5.3Z"),M5t=he("filterAfterTimestamp:","chatInputType"),N5t=he("sidebarType:","RESIZE_HANDLE_WIDTH)"),B5t=he("`channel-${"),R5t=he("Missing guestWindow reference"),L5t=he("showFollowButton:"),O5t=he('="wanderingCubes"'),F5t=Ae("FORM","NORMAL"),_5t=Ae("ThreadSidebar","MessageRequestSidebar"),U5t=Ie("threadSidebarOpen","loader"),z5t=vr(["Missing channel in Channel.renderHeaderToolbar"],/Promise\.all\(\[((?:\i\.e\("\d+"\),?)+)\]\)\.then\(\i\.bind\(\i,(\d+)\)\)[^}]{0,100}?name:"ForumChannel"/);LL=null,$A=!1;yUe=(e,t)=>i(P.MenuItem,{id:`vc-sidebar-chat-${e}`,label:"Open Sidebar Chat",action:()=>{Q.dispatch({type:"VC_SIDEBAR_CHAT_NEW",guildId:t,id:e})}}),bUe=(e,t,o)=>i(P.MenuItem,{id:`vc-sidebar-chat-popout-${e}`,label:t,action:()=>{o()}}),q5t=(e,t)=>{if([t.user,t.user.id!==L.getCurrentUser().id].some(a=>!a))return;let r=W.getDMFromUserId?.(t.user.id)??null,n=r?Yb(r):!1;e.push(yUe(t.user.id,null)),e.push(bUe(t.user.id,n?"Close popout chat":"Popout chat",()=>{if(r&&n){vUe(r);return}return H5t(t.user.id)}))},Uoe=(e,t)=>{[t.channel,t.channel.type!==4,ht.can(ct.VIEW_CHANNEL,t.channel)||t.channel.type===3].some(r=>!r)||(e.push(yUe(t.channel.id,t.channel.guild_id)),e.push(bUe(t.channel.id,$5t(t.channel.id),()=>Jb(t.channel.id))))},OL=S({name:"SidebarChat",authors:[b.Joona,F.justjxke],description:"Open a channel or DM as a sidebar or a popout.",tags:["Appearance","Chat","Servers"],dependencies:["HeaderBarAPI"],patches:[{find:'case"pendingFriends":',group:!0,replacement:[{match:/ChannelRenderer"\),/,replace:"$&vc_SidebarChat=$self.renderSidebar(),"},{match:/:(\(0,\i\.jsxs?\)\(\i,{}\))}(?<=default:.{0,300})/,replace:":[$1, vc_SidebarChat]}"}]}],managedStyle:gUe,settings:fp,contextMenus:{"user-context":q5t,"channel-context":Uoe,"thread-context":Uoe,"gdm-context":Uoe},toolboxActions:{"Open Previous Chat"(){Q.dispatch({type:"VC_SIDEBAR_CHAT_PREVIOUS"})}},headerBarButton:{icon:Goe,render:()=>i(f,null,i(Y5t,null),i(Z5t,null))},stop(){$oe(),Mx();for(let e of zA())mf.close(e)},async start(){j5t()},renderSidebar(){let{guild:e,channel:t}=ye([Foe,$e,W],()=>{let{channelId:c,guildId:u}=Foe.getState();return{guild:$e.getGuild(u),channel:W.getChannel(c)}},[]),[o,r]=ye([O0,Fe,W],()=>{let c=Fe.getChannelId(),u=ao.getGuildId();return[O0.getSidebarState(c),O0.getGuildSidebarState(u)]},[]);G(()=>{!t?.id||lt.getLastMessage(t.id)||fo.fetchMessages({channelId:t.id,limit:50})},[t?.id]);let[n,a]=T(window.innerWidth);Va(()=>{let c=()=>a(window.innerWidth);return window.addEventListener("resize",c),()=>window.removeEventListener("resize",c)},[]);let[s,l]=T(null);return G(()=>{t&&(t.isForumLikeChannel()?(z5t().then(()=>{l(i(D5t,{channel:t,guild:e,sidebarState:null}))}),l(i("div",{className:U5t.loader},i(O5t,null)))):l(i(M5t,{channel:t,guild:e,chatInputType:F5t.SIDEBAR})))},[t]),!t||o||r?null:i(H,{noop:!0},i(N5t,{sidebarType:_5t.MessageRequestSidebar,maxWidth:~~(n*.31)},i(W5t,{channel:t,guild:e}),s))}}),W5t=({guild:e,channel:t})=>{let o=t.isPrivate()?t.getRecipientId():null,r=ye([L,qe],()=>Hoe(t),[t.id,t.name]),n=ye([W],()=>W.getChannel(t?.parent_id),[t?.parent_id]),a=()=>Q.dispatch({type:"VC_SIDEBAR_CHAT_CLOSE"}),s=ye([ks],()=>Yb(t.id),[t.id]),l=jt(()=>Jb(t.id),[t.id]),c=jt(()=>{let u=zo();Q.dispatch({type:"VC_SIDEBAR_CHAT_NEW",guildId:u.guild_id,id:u.id}),Li.transitionToChannel(t.id)},[t.id]);return i(E5t,{toolbar:i(f,null,i(il,{icon:P5t,tooltip:"Switch channels",onClick:c}),i(il,{key:`${t.id}-${s?"open":"closed"}`,icon:s?zoe:Goe,tooltip:s?"Close popout chat":"Popout chat",selected:s,onClick:l}),i(il,{icon:zoe,tooltip:"Close Sidebar Chat",onClick:a}))},i(B5t,{channel:t,channelName:r,guild:e,parentChannel:n}))},K5t=H.wrap(({channel:e,name:t,windowKey:o})=>(G(()=>{!e?.id||lt.getLastMessage(e.id)||fo.fetchMessages({channelId:e.id,limit:50})},[e?.id]),i(R5t,{withTitleBar:!0,windowKey:o,title:t||"Equicord",channelId:e.id},i("div",{className:I5t("window")},i(L5t,{providedChannel:e})))));Z5t=H.wrap(Q5t,{noop:!0})});function X5t(){return i("svg",{width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 21.333"},i("path",{fill:"currentColor",d:"M2 4.621a.5.5 0 0 1 .854-.353l6.01 6.01c.126.126.17.31.15.487a2 2 0 1 0 1.751-1.751a.59.59 0 0 1-.487-.15l-6.01-6.01A.5.5 0 0 1 4.62 2H11a9 9 0 0 1 8.468 12.054l2.24 2.239a1 1 0 0 1 0 1.414l-4 4a1 1 0 0 1-1.415 0l-2.239-2.239A9 9 0 0 1 2 11z"}))}function e8t(e){return`${e} ${hs.store.textHeader?hs.store.textHeader+" ":""}${hs.store.name}`}var hs,J5t,V5t,FL,wUe=h(()=>{"use strict";d();Ba();yr();Fo();j();O();R();C();hs=M({name:{type:0,description:"The signature that will be added to the end of your messages",default:"a chronic discord user"},textHeader:{description:"What header to preface text with",type:0,default:">"},showIcon:{type:3,default:!0,description:"Show an icon for toggling the plugin in the chat bar",restartNeeded:!0},contextMenu:{type:3,description:"Add option to toggle the functionality in the chat input context menu",default:!0},isEnabled:{type:3,description:"Toggle functionality",default:!0}}),J5t=({isMainChat:e})=>{let{isEnabled:t,showIcon:o}=hs.use(["isEnabled","showIcon"]),r=()=>hs.store.isEnabled=!hs.store.isEnabled;return!e||!o?null:i(Un,{tooltip:t?"Disable Signature":"Enable Signature",onClick:r},i("svg",{width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 21.333"},i("path",{fill:"currentColor",mask:"url(#signature-msg-mask)",d:"M2 4.621a.5.5 0 0 1 .854-.353l6.01 6.01c.126.126.17.31.15.487a2 2 0 1 0 1.751-1.751a.59.59 0 0 1-.487-.15l-6.01-6.01A.5.5 0 0 1 4.62 2H11a9 9 0 0 1 8.468 12.054l2.24 2.239a1 1 0 0 1 0 1.414l-4 4a1 1 0 0 1-1.415 0l-2.239-2.239A9 9 0 0 1 2 11z"}),t&&i(f,null,i("mask",{id:"signature-msg-mask"}," ",i("path",{fill:"#fff",d:"M0 0h24v24H0Z"}),i("path",{stroke:"#000",strokeWidth:"5.99068",d:"M0 24 24 0"})," "),i("path",{fill:"var(--status-danger)",d:"m21.178 1.70703 1.414 1.414L4.12103 21.593l-1.414-1.415L21.178 1.70703Z"}))))};V5t=e=>{let{isEnabled:t,contextMenu:o}=hs.use(["isEnabled","contextMenu"]);if(!o)return;let r=wt("submit-button",e);if(!r)return;let n=r.findIndex(a=>a?.props?.id==="submit-button");r.splice(n+1,0,i(P.MenuCheckboxItem,{id:"vc-Signature",label:"Enable Signature",checked:t,action:()=>hs.store.isEnabled=!hs.store.isEnabled}))},FL=S({name:"Signature",description:"Automated fingerprint/end text",dependencies:["CommandsAPI","ChatInputButtonAPI","MessagePopoverAPI"],tags:["Appearance","Chat"],authors:[b.Ven,b.Rini,b.ImBanana,F.KrystalSkull],onBeforeMessageSend(e,t){hs.store.isEnabled?t.content=e8t(t.content):t.content=t.content},start:()=>{hs.store.isEnabled},stop:()=>{hs.store.isEnabled},chatBarButton:{icon:X5t,render:J5t},settings:hs,contextMenus:{"textarea-context":V5t},commands:[{name:"signature",description:"Toggle your signature",inputType:0,options:[{name:"value",description:"Toggle your signature (default is toggle)",required:!1,type:5}],execute:async(e,t)=>{hs.store.isEnabled=!!St(e,"value",!hs.store.isEnabled),Ft(t.channel.id,{content:hs.store.isEnabled?"Signature enabled!":"Signature disabled!"})}}]})});function t8t(){let{mutedUserIds:e}=kUe.store,t=e.split(",").map(o=>o.trim()).filter(Boolean);return new Set(t)}function AUe(e){try{let t=t8t();if(!t.size)return;if(e.type==="MESSAGE_CREATE"||e.type==="MESSAGE_UPDATE"){let o=e.message;if(!o)return;let r=String(o.author?.id??"");if(!r||!t.has(r))return;o.mention_everyone=!1,o.mention_roles=[],o.mentions=[]}if(e.type==="NOTIFICATION_CREATE"){let o=e?.message??e?.notification?.message;if(!o)return;let r=String(o?.author?.id??"");return!r||!t.has(r)?void 0:!1}}catch{}}var kUe,_L,CUe=h(()=>{"use strict";d();j();O();R();C();kUe=M({mutedUserIds:{type:0,description:"Comma-separated Discord user IDs to silence pings and server badges.",default:"",restartNeeded:!1}});_L=S({name:"SilenceUsers",description:"Silences @mention pings and server badge counts from specific users. Regular messages and DMs are untouched.",authors:[F.dka],tags:["Notifications"],settings:kUe,start(){Q.addInterceptor(AUe)},stop(){let e=Q._interceptors??[],t=e.indexOf(AUe);t!==-1&&e.splice(t,1)}})});var o8t,TUe,Dl,qoe,n8t,GA,o0,UL,IUe=h(()=>{"use strict";d();j();We();Je();O();R();C();o8t=` #snowfield { pointer-events: none; user-select: none; z-index: 100000; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; } .snowflake { position: absolute; color: #fff; line-height: 1; -webkit-font-smoothing: antialiased; } .snowflake-solid { border-radius: 50%; background: #ffffff; } .snowflake-image { filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.5)); } `,TUe=["data:image/svg+xml,"+encodeURIComponent(` `),"data:image/svg+xml,"+encodeURIComponent(` `),"data:image/svg+xml,"+encodeURIComponent(` `)],Dl=M({typeOfSnow:{description:"Change the type of snow displayed (Affects performance).",type:4,options:[{label:"Solid (Highest Performance)",value:"solid"},{label:"Text (Medium Performance)",value:"text",default:!0},{label:"Image (Lowest Performance)",value:"image"}]},maxSize:{description:"Maximum snowflake size",type:5,default:30,markers:[10,20,30,40,50]},speed:{description:"Snowfall speed (higher = faster fall)",type:5,default:50,markers:[50,100,200,300,400,500]},flakesPerSecond:{description:"Snowflakes per second (higher = denser snowfall)",type:5,default:5,markers:[1,5,10,20,40,60],min:1,max:60}}),qoe=class e{static winWidth=window.innerWidth;static winHeight=window.innerHeight;static defaultOptions={minSize:10,maxSize:30,type:"text",content:"\u2744",fadeOut:!0,autoplay:!0,interval:200};static cssPrefix(t){let o=t.charAt(0).toUpperCase()+t.slice(1),r=document.createElement("div"),{style:n}=r,a=["Webkit","Moz","ms","O"];if(t in n)return t;for(let s of a){let l=s+o;if(l in n)return l}return null}static cssPrefixedNames={transform:this.cssPrefix("transform"),transition:this.cssPrefix("transition")};static transitionEndEvent={WebkitTransition:"webkitTransitionEnd",OTransition:"oTransitionEnd",Moztransition:"transitionend",transition:"transitionend"}[this.cssPrefixedNames.transition??"transition"]??"transitionend";static random(t,o,r){return r!==void 0?(r*=o,o+=r,t=o-r):t=t||0,Math.floor(Math.random()*(o-t+1)+t)}static setStyle(t,o){for(let[r,n]of Object.entries(o)){let a=e.cssPrefixedNames[r]||r;t.style[a]=n}}options={...e.defaultOptions};queue=[];$snowfield;timer=null;playing=!1;constructor(t={}){Object.assign(this.options,t),this.$snowfield=document.createElement("div"),this.$snowfield.id="snowfield",document.body.appendChild(this.$snowfield);let o=()=>{e.winHeight=window.innerHeight,e.winWidth=window.innerWidth};window.addEventListener("resize",o),this._resizeHandler=o,this.$snowfield.addEventListener(e.transitionEndEvent,n=>{let a=n.target;a.classList.contains("snowflake")&&(this.$snowfield.removeChild(a),this.queue.push(a))});let r=()=>{document.hidden?this.stop():this.play()};document.addEventListener("visibilitychange",r),this._visibilityHandler=r,this.options.autoplay&&this.play()}createSnowflake(){let{type:t,content:o}=this.options,r=Array.isArray(o)?o.length:1,n;if(t==="image"){n=document.createElement("img");let a=typeof o=="string"?o:o[Math.floor(Math.random()*r)];n.src=a,n.setAttribute("draggable","false")}else if(n=document.createElement("div"),t==="text"){let a=typeof o=="string"?o:o[Math.floor(Math.random()*r)];n.textContent=a}return n.className=`snowflake snowflake-${t}`,n.dataset.type=t,n}animateSnowflake(){let{winWidth:t,winHeight:o}=e,r=e.random(this.options.minSize,this.options.maxSize),n=-2*r,a=e.random(0,t-r),s=e.random(5,10)/10,l=e.random(0,o*.8,1),c=e.random(-100,100),u=o+r*2,p=Dl.store.speed,m=o*10/(p/50),g;if(this.queue.length>0){let v=this.queue.shift();if(v.dataset.type!==this.options.type)g=this.createSnowflake();else if(g=v,this.options.type==="text"){let{content:y}=this.options;Array.isArray(y)&&(g.textContent=y[Math.floor(Math.random()*y.length)])}else if(this.options.type==="image"){let{content:y}=this.options;Array.isArray(y)&&(g.src=y[Math.floor(Math.random()*y.length)])}}else g=this.createSnowflake();let x={top:`${n}px`,left:`${a}px`,opacity:s,transform:"none",transition:`${m}ms linear`};switch(this.options.type){case"solid":x.width=x.height=`${r}px`;break;case"text":x.fontSize=`${r}px`;break;case"image":x.width=`${r}px`,x.height="auto";break}e.setStyle(g,x),this.$snowfield.appendChild(g),setTimeout(()=>{e.setStyle(g,{transform:`translate(${c}px, ${u}px) rotate(${l}deg)`,opacity:this.options.fadeOut?0:s})},100)}play(){this.playing||(this.timer=window.setInterval(()=>this.animateSnowflake(),this.options.interval),this.playing=!0)}stop(){this.playing&&(this.timer!==null&&(clearInterval(this.timer),this.timer=null),this.playing=!1)}destroy(){this.stop(),this.$snowfield.parentNode&&this.$snowfield.remove(),window.removeEventListener("resize",this._resizeHandler),document.removeEventListener("visibilitychange",this._visibilityHandler)}updateOptions(t){Object.assign(this.options,t)}},n8t=()=>{let e=V.useRef(null),t=V.useRef(null);return V.useEffect(()=>{let o=document.createElement("style");o.id="snowfall-styles",o.textContent=o8t,document.head.appendChild(o),t.current=o;let r=Dl.store.typeOfSnow,n={autoplay:!1,type:r,maxSize:Dl.store.maxSize,interval:1e3/Dl.store.flakesPerSecond};n.interval=Dl.store.speed,r==="image"&&(n.content=TUe);let a=new qoe(n);e.current=a;let s=()=>a.stop(),l=()=>{document.hasFocus()&&a.play()};window.addEventListener("blur",s),window.addEventListener("focus",l),document.hasFocus()&&a.play();let c={type:Dl.store.typeOfSnow,maxSize:Dl.store.maxSize,speed:Dl.store.speed,flakesPerSecond:Dl.store.flakesPerSecond},u=setInterval(()=>{let p={type:Dl.store.typeOfSnow,maxSize:Dl.store.maxSize,speed:Dl.store.speed,flakesPerSecond:Dl.store.flakesPerSecond};if(Object.keys(p).some(m=>p[m]!==c[m])){c=p;let m={type:p.type,maxSize:p.maxSize,interval:1e3/p.flakesPerSecond};p.type==="image"?m.content=TUe:p.type==="text"&&(m.content="\u2744"),a.updateOptions(m)}},5e3);return()=>{a.destroy(),e.current=null,window.removeEventListener("blur",s),window.removeEventListener("focus",l),clearInterval(u),o.parentNode&&o.remove(),t.current=null;let p=document.getElementById("snowfield");p&&p.remove()}},[]),null},GA=null,o0=null,UL=S({name:"Snowfall",description:"Let it snow on Discord",tags:["Appearance"],authors:[F.ZcraftElite,F.square],settingsAboutComponent:()=>i(f,null,i(oe,null,"Information"),i(U,null,"This plugin adds a christmas-y snowfall effect on top of Discord's interface. You can change the type of snow in the settings below.",i("br",null),i("br",null),"NOTE: While on most computers this plugin will not impact performance any more than your average Equicord extension, it may cause some lag on lower end systems.")),settings:Dl,start(){o0=document.createElement("div"),o0.id="snowfall-plugin-container",document.body.appendChild(o0),GA=Bi(o0),GA.render(i(n8t,null))},stop(){GA&&(GA.unmount(),GA=null),o0&&(o0.parentNode&&o0.remove(),o0=null)}})});var gp,zL=h(()=>{"use strict";d();gp={amazonMusic:{name:"Amazon Music",logo:"data:image/png;base64,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"},spotify:{name:"Spotify",logo:"data:image/png;base64,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",native:!0},itunes:{name:"iTunes",logo:"data:image/png;base64,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",native:!0},appleMusic:{name:"Apple Music",logo:"data:image/png;base64,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",native:!0},youtube:{name:"YouTube",logo:"data:image/png;base64,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"},youtubeMusic:{name:"YouTube Music",logo:"data:image/png;base64,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"},google:{name:"Google",logo:"data:image/png;base64,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"},googleMusic:{name:"Google Music",logo:"data:image/png;base64,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"},pandora:{name:"Pandora",logo:"data:image/png;base64,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"},deezer:{name:"Deezer",logo:"data:image/png;base64,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"},tidal:{name:"Tidal",logo:"data:image/png;base64,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"},amazonStore:{name:"Amazon Store",logo:"data:image/png;base64,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"},soundcloud:{name:"SoundCloud",logo:"data:image/png;base64,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"},napster:{name:"Napster",logo:"data:image/png;base64,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"},yandex:{name:"Yandex",logo:"data:image/png;base64,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"},spinrilla:{name:"Spinrilla",logo:"data:image/png;base64,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"},audius:{name:"Audius",logo:"data:image/png;base64,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"},audiomack:{name:"Audiomack",logo:"data:image/png;base64,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"},anghami:{name:"Anghami",logo:"data:image/png;base64,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"},boomplay:{name:"Boomplay",logo:"data:image/png;base64,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"},bandcamp:{name:"Bandcamp",logo:"data:image/png;base64,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"}}});function EUe(){let e=hp.use(["servicesSettings"]);return i("div",{style:{display:"flex",flexDirection:"column",gap:16}},Object.entries(gp).map(t=>i("div",{key:t[0],style:{borderBottom:"1px solid var(--border-subtle)",paddingBottom:8}},i("div",{style:{display:"flex",alignItems:"center",gap:8}},i("img",{src:t[1].logo,alt:`${t[1].name} logo`,style:{width:16,height:16,objectFit:"contain",display:"block"}}),i("div",{style:{display:"flex",alignItems:"center"}},i(Gr,null,t[1].name))),i("div",{style:{display:"flex",flexDirection:"column",gap:4}},i(mo,{title:"Show if available",hideBorder:!0,key:`${t[0]}-visible`,value:e.servicesSettings[t[0]].enabled,onChange:o=>hp.store.servicesSettings[t[0]].enabled=o}),t[1].native&&i(mo,{title:"Open in desktop app",hideBorder:!0,key:`${t[0]}-native`,value:e.servicesSettings[t[0]].openInNative,onChange:o=>hp.store.servicesSettings[t[0]].openInNative=o})))))}var DUe=h(()=>{"use strict";d();hi();We();$L();zL()});function Woe({url:e,onResolved:t}){let[o,r]=T();return G(()=>{async function n(){let a;n0.cache[e]?a=n0.cache[e]:(a=await Koe.getTrackData(e),n0.addToCache(e,a)),r(a),t?.(e,a)}n()},[e]),i(Y,null,o?i(Ht,{style:{padding:"10px 15px"}},i("div",null,i(Y,{style:{display:"flex",alignItems:"center",gap:"6px",fontWeight:600,fontSize:"1.05rem"}},i(EU,null)," ",o.info?.title," - ",o.info?.artist),i("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"10px",marginTop:"10px"}},Object.keys(o.links).map(n=>hp.store.servicesSettings[n].enabled&&i(ue,{key:`${n}-${e}`,style:{width:"20px !important"},variant:"secondary",onClick:()=>{VencordNative.native.openExternal(hp.store.servicesSettings[n].openInNative&&gp[n].native?o.links[n].nativeUri:o.links[n].url)}},i("img",{src:gp[n].logo,alt:`${gp[n]} logo`,style:{width:16,height:16,objectFit:"contain",display:"block"}})))))):i(Y,null,"Loading song link..."))}var PUe=h(()=>{"use strict";d();yt();Qn();ot();C();$L();zL()});function r8t(e){let t=[];for(let[r,n]of Object.entries(hp.store.servicesSettings)){if(!n.enabled)continue;let a=e.links[r];if(!a?.url)continue;let l=gp[r]?.name??r;t.push(`- [${l}](<${a.url}>)`)}if(t.length===0)return null;let o=[];return hp.store.includeMetadata&&e.info?.title&&e.info?.artist&&o.push(`### **${e.info.title}** \u2014 *${e.info.artist}*`),o.push(t.join(` `)),o.join(` `)}function i8t({urls:e}){let[t,o]=T(()=>Object.fromEntries(e.map(s=>[s,null])));G(()=>{o(Object.fromEntries(e.map(s=>[s,null])))},[e.join(` `)]);function r(s,l){let c=l.info?`${l.info.title}\0${l.info.artist}`:s;o(u=>u[s]===c?u:{...u,[s]:c})}let n=new Set,a=e.filter(s=>{let l=t[s];return l===null?!0:n.has(l)?!1:(n.add(l),!0)});return i("div",{style:{display:"flex",flexDirection:"column",gap:"10px",marginTop:"7px",width:"fit-content"}},a.map(s=>i(Woe,{key:s,url:s,onResolved:r})))}var hp,Koe,n0,$L=h(()=>{"use strict";d();yr();j();O();_e();R();C();zL();DUe();PUe();hp=M({servicesSettings:{type:7,description:"settings for services",default:Object.fromEntries(Object.entries(gp).map(([e,t])=>[e,{enabled:!0,openInNative:t.native||!1}]))},userCountry:{type:0,description:"Country used for lookup (Two letter country code)",default:"US"},includeMetadata:{type:3,description:"Include the track title and artist name as a header.",default:!0},servicesComponent:{type:6,component:()=>i(EUe,null)}}),Koe=VencordNative.pluginHelpers.SongLink;n0=S({name:"SongLink",description:"Adds streaming service buttons below song links",dependencies:["MessageAccessoriesAPI"],tags:["Media","Utility"],authors:[b.nin0dev,F.NassCT],settings:hp,Providers:gp,cache:{},addToCache(e,t){this.cache[e]=t},renderMessageAccessory(e){let{content:t}=e.message;if(!t)return;let o=[/https:\/\/(?:open|play)\.spotify\.com\/track\/[a-zA-Z0-9]+/,/https:\/\/(music|itunes)\.apple\.com\/[a-z]{2}\/album\/\S+/,/https:\/\/music\.youtube\.com\/watch\?v=[0-9A-Za-z_-]+/,/https:\/\/tidal\.com\/track\/[0-9]+\/u/],r=t.match(new RegExp(o.map(a=>a.source).join("|"),"g"));if(!r?.length)return;let n=[...new Set(r)];return i(i8t,{urls:n})},commands:[{name:"musiclink",description:"Convert a music link to other streaming platforms.",inputType:0,options:[{name:"url",description:"Music link (Spotify, Deezer, YouTube, Tidal, Apple Music, SoundCloud)",type:3,required:!0}],execute:async(e,t)=>{let o=St(e,"url","");if(!o){Ft(t.channel.id,{content:"Please provide a music link."});return}Ft(t.channel.id,{content:"This will take a moment..."});try{let r=await Koe.getTrackData(o),n=r8t(r);if(!n){Ft(t.channel.id,{content:"No alternative platforms found for this link."});return}or(t.channel.id,{content:n})}catch{Ft(t.channel.id,{content:"Failed to resolve music link"})}}}]})});var MUe=h(()=>{});var qs,Nx=h(()=>{"use strict";d();on();Er();C();qs=ko(()=>Cs(_0(((e,t)=>({tokens:{},getToken(){return t().tokens[L.getCurrentUser()?.id]},setToken(o,r){let n=L.getCurrentUser()?.id;n&&e({tokens:{...t().tokens,[n]:{access:o,refresh:r}}})},deleteTokens(){e({tokens:{}})},isAuthorized(){return!!t().getToken()}})),{name:"songspotlight-auth",version:1,migrate(e,t){return t===0&&(e.tokens=Object.fromEntries(Object.entries(e.tokens).map(([o,r])=>[o,{access:r,refresh:""}]))),e},storage:{async getItem(e){return await Le.get(e)??null},async setItem(e,t){return await Le.set(e,t)},async removeItem(e){return await Le.del(e)}},partialize:({tokens:e})=>({tokens:e})})))});var Jr,Bx=h(()=>{"use strict";d();Er();C();Jr=ko(()=>Cs(((e,t)=>({users:{},update({userId:o,data:r,at:n}){o??=L.getCurrentUser()?.id,o&&e({users:{...t().users,[o]:{data:r,at:n}}}),t().$refresh()},delete(o){if(o??=L.getCurrentUser()?.id,o){let{[o]:r,...n}=t().users;e({users:n})}t().$refresh()},$refresh(){e({self:t().users[L.getCurrentUser()?.id]})}}))))});async function a8t(){let e=qs.getState().getToken();return e?BUe??=fetch(new URL("api/auth/refresh",fa.api),{method:"POST",headers:{"X-Refresh-Token":e.refresh},body:e.access}).then(async t=>{if(!t.ok)return!1;let o=await t.text();return qs.getState().setToken(o,e.refresh),!0}).finally(()=>BUe=void 0):!1}async function Rx(e,t,o=!1){e=new URL(e);try{let r=qs.getState().getToken(),n=await fetch(e,{...t,headers:{...t?.headers,Authorization:r?.access}});if(n.ok)return n;if(n.status===304)return null;let a=await n.text();if(n.status===401){if(!o&&await a8t())return await Rx(e,t,!0);qs.getState().deleteTokens(),ne("You have been signed out from Song Spotlight. Please sign in again.",D.Type.FAILURE)}else ne(!a.includes("")&&n.status>=400&&n.status<=599?`Song Spotlight: ${a}`:`Song Spotlight fetch error at ${e.pathname}`,D.Type.FAILURE);throw new Error(a)}catch(r){throw ne(`Song Spotlight: ${r}`,D.Type.FAILURE),r}}async function HA(){return await Rx(new URL("api/data",fa.api),{headers:{"If-Modified-Since":Jr.getState().self?.at}}).then(async e=>{if(!e)return Jr.getState().self?.data;let t=await e.json();return Jr.getState().update({data:t,at:e.headers.get("Last-Modified")||void 0}),t})}async function GL(e){return e===L.getCurrentUser()?.id?await HA():await Rx(new URL(`api/data/${e}`,fa.api),{headers:{"If-Modified-Since":Jr.getState().users[e]?.at}}).then(async t=>{if(!t)return Jr.getState().users[e]?.data;let o=await t.json();return Jr.getState().update({userId:e,data:o,at:t.headers.get("Last-Modified")||void 0}),o})}async function RUe(e){return await Rx(new URL("api/data",fa.api),{method:"PUT",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}}).then(t=>t?.json()).then(t=>(Jr.getState().update({data:e,at:new Date().toUTCString()}),t))}async function LUe(){return await Rx(new URL("api/data",fa.api),{method:"DELETE"}).then(e=>e?.json()).then(e=>(Jr.getState().delete(),e))}var NUe,fa,BUe,r0=h(()=>{"use strict";d();C();Nx();Bx();NUe="https://dc.songspotlight.nexpid.xyz/",fa={api:NUe,oauth2:{clientId:"1157745434140344321",redirectURL:`${NUe}api/auth/authorize`},songLimit:6}});function OUe(e){let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,"0")}`}function FUe(e,t){return["user","artist"].includes(e.type)?`${t.label}'s ${t.sublabel}`:`${t.label} by ${t.sublabel}`}var Xb,Zt,$u=h(()=>{"use strict";d();we();He();Xb=new ie("SongSpotlight"),Zt=K("vc-songspotlight-")});function _Ue(){ce(e=>i(ws,{...e,clientId:fa.oauth2.clientId,scopes:["applications.commands","identify"],integrationType:1,permissions:0n,responseType:"code",redirectUri:fa.oauth2.redirectURL,cancelCompletesFlow:!1,callback:async({location:t})=>{if(t)try{let o=new URL(t);o.searchParams.append("whois","equicord");let r=await Rx(o);if(!r)throw"Response wasn't ok";let n=await r.text();if(!n)throw"Access token is missing";let a=r.headers.get("X-Refresh-Token");if(!a)throw"Refresh token is missing";qs.getState().setToken(n,a),HA(),ne("Successfully authorized!",D.Type.SUCCESS)}catch(o){Xb.error("Got an error during OAuth2",o),typeof o=="string"&&ne(o,D.Type.FAILURE)}}}))}var UUe=h(()=>{"use strict";d();co();C();r0();Nx();$u()});function l8t(e){let t=new URL(e);return t.protocol="https",t.username=t.password=t.port=t.search=t.hash="",t.toString().replace(/\/?$/,"")}async function Pl(e){if(e.body){let a=JSON.stringify(e.body);e.body=a,e.headers??={},e.headers["content-type"]??="application/json",e.headers["content-length"]??=String(a.length)}let t=new URL(e.url);for(let[a,s]of Object.entries(e.query??{}))t.searchParams.set(a,s);let o=await c8t(t,{method:e.method,redirect:"follow",headers:{accept:"*/*","user-agent":`SongSpotlight/${s8t}`,"cache-control":"public, max-age=3600",...e.headers??{}},cf:{cacheTtl:3600,cacheEverything:!0},body:e.body}),r=await o.text(),n;try{n=JSON.parse(r)}catch{n=null}return{ok:o.ok,redirected:o.redirected,url:o.url,status:o.status,headers:o.headers,text:r,json:n}}function Zoe(e){let t=e.match(/id="__NEXT_DATA__" type="application\/json">(.*?)<\/script>/)?.[1];if(t)try{return JSON.parse(t)}catch{return}}function Yoe(e,t){return t?.form==="list"||!["track","song"].includes(e.type)}function Joe(e){for(let t of Vb.services)if(t.name===e)return t.label}function mr(e){return[e.service,e.type,e.id].join(":")}async function HL(e){let t=l8t(e);if(Qoe.has(t))return Qoe.get(t);let{hostname:o,pathname:r}=new URL(t),n=r.slice(1).split(/\/+/),a=null;for(let s of Vb.parsers)if(s.hosts.includes(o)&&(a=await s.parse(t,o,n),a))break;return Qoe.set(t,a),a&&u8t.set(mr(a),!0),a}var s8t,c8t,Vb,Qoe,u8t,jL=h(()=>{d();s8t="2.2.0";c8t=fetch;Vb={services:[],parsers:[]},Qoe=new Map,u8t=new Map});var Rm=h(()=>{d();jL()});function qL(e){let[t,o]=T(!1),[r,n]=T(null);return G(()=>{o(!1),n(null),Lm.renderSong(e).catch(()=>null).then(a=>a?n(a):o(!0))},[mr(e)]),{failed:t,render:r}}var Lm,e2=h(()=>{"use strict";d();Rm();C();Lm=VencordNative.pluginHelpers.SongSpotlight});function Xoe({className:e}){return i(ve,{text:"Explicit"},t=>i(Y,{...t,size:"xs",weight:"medium",className:X(Zt("explicit-tag"),e)},"E"))}function GUe({state:e,disabled:t,...o}){let r=e?d8t:p8t;return i("button",{...o,disabled:t,"data-toggled":e,className:X(Zt("icon-button"),o.className)},t?i(Ml,{type:Ml.Type.PULSING_ELLIPSIS,className:Zt("icon-spinner")}):i(r,{width:16,height:16,className:Zt("icon")}))}function HUe(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M19.7 1C21.5 1 23 2.5 23 4.3v15.4c0 1.8-1.5 3.3-3.3 3.3H4.3A3.3 3.3 0 0 1 1 19.7V4.3C1 2.5 2.5 1 4.3 1h15.4Zm-2.4 3.8s0-.9-.7-.7L9.3 5.6s-.6.1-.6.8v8.7c0 .5-.7.8-2 .9-2.4.4-2 4.5 1.3 3.4 1.3-.5 1.6-1.7 1.6-3V9.6c0-.3 0-.5.4-.5l6-1.2c.2 0 .4 0 .4.4v5.2c0 .5-.6.8-2 1-2.4.3-2 4.4 1.4 3.3 1.3-.5 1.5-1.7 1.5-3v-10Z"}))}function jUe(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M5 2a3 3 0 0 0-3 3v4.7l3.33 3.33 3.39-3.38a1.5 1.5 0 0 1 2.12 0l3.38 3.38 3.39-3.38a1.5 1.5 0 0 1 2.12 0L22 11.92V5a3 3 0 0 0-3-3H5Z"}),i("path",{fill:e.fill||"currentColor",d:"m22 14.75-3.33-3.34-3.39 3.39a1.5 1.5 0 0 1-2.12 0L9.78 11.4 6.39 14.8a1.5 1.5 0 0 1-2.12 0L2 12.53V19a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-4.25Z"}))}function qUe(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M4 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm8 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"}))}function d8t(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M6 4a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H6ZM15 4a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-3Z"}))}function p8t(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M9.25 3.35C7.87 2.45 6 3.38 6 4.96v14.08c0 1.58 1.87 2.5 3.25 1.61l10.85-7.04a1.9 1.9 0 0 0 0-3.22L9.25 3.35Z"}))}function qA(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M16 4a3 3 0 1 1-5.98-.31c.03-.35-.21-.69-.56-.69H7a3 3 0 0 0-3 3v2.5c0 .28-.23.5-.5.54a3 3 0 0 0 0 5.92c.27.04.5.26.5.54V18a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3h-2.46c-.35 0-.6.34-.56.69L16 4Z"}))}function WUe(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M1 15.8q0 .4.3.7t.6.1q.3 0 .5-.2l.1-.6V13a.7.7 0 0 0-.2-.5.7.7 0 0 0-.6-.2.7.7 0 0 0-.5.2.7.7 0 0 0-.2.5zm2.4 1.3q0 .3.2.4a1 1 0 0 0 .5.2l.6-.2q.2-.1.2-.4v-6.8a.7.7 0 0 0-.3-.5.7.7 0 0 0-.5-.2.7.7 0 0 0-.5.2.7.7 0 0 0-.2.5zm2.3.3q0 .3.2.5a1 1 0 0 0 .6.1 1 1 0 0 0 .5-.1q.2-.2.2-.5v-6.2a.7.7 0 0 0-.2-.5.7.7 0 0 0-.5-.2.8.8 0 0 0-.6.2.7.7 0 0 0-.2.5zm2.4 0q0 .6.7.6.8 0 .8-.6v-10q0-.9-.6-1l-.6.2Q8 7 8 7.4zm2.3.3v-11q0-.4.4-.5a6 6 0 0 1 4.2.5q1.4.7 2.2 2t1 2.8q.6-.3 1.3-.3a3.4 3.4 0 0 1 2.5 1q1 1 1 2.4T22 17a3.4 3.4 0 0 1-2.5 1h-8.9a.2.2 0 0 1-.1-.1.3.3 0 0 1 0-.2"}))}function KUe(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M12 1a11 11 0 1 0 0 22 11 11 0 0 0 0-22Zm4.8 15.8a.7.7 0 0 1-1 .2c-2.5-1.6-5.8-2-9.6-1a.7.7 0 1 1-.3-1.4A14 14 0 0 1 16.6 16c.3.2.4.6.2.9Zm1.3-3a.9.9 0 0 1-1.1.3c-3-1.8-7.5-2.3-11-1.3a.9.9 0 0 1-.5-1.6c4-1.2 9-.6 12.4 1.4.4.3.5.8.2 1.2Zm1.5-3.5a1 1 0 0 1-1.4.4A18.1 18.1 0 0 0 5.6 9.4a1 1 0 0 1-.6-2C8.8 6.4 15.2 6.6 19.3 9c.5.3.6 1 .4 1.4Z"}))}function QUe(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M15.5003 8.49936L12.0006 11.9997L8.5001 8.49936L12.0006 5.00047L15.5003 8.49936Z"}),i("path",{fill:e.fill||"currentColor",d:"M15.5003 15.4996L12.0006 19L8.5001 15.4996L12.0006 11.9997L15.5003 15.4996Z"}),i("path",{fill:e.fill||"currentColor",d:"M8.5001 8.49936L4.99973 12L1.5 8.49963L4.99973 5L8.5001 8.49936Z"}),i("path",{fill:e.fill||"currentColor",d:"M22.5 8.49963L19.0003 12L15.4998 8.49963L19.0003 5L22.5 8.49963Z"}))}function o2(e){return i("svg",{width:24,height:24,viewBox:"0 0 24 24",...e},i("path",{fill:e.fill||"currentColor",d:"M14.25 1c.41 0 .75.34.75.75V3h5.25c.41 0 .75.34.75.75v.5c0 .41-.34.75-.75.75H3.75A.75.75 0 0 1 3 4.25v-.5c0-.41.34-.75.75-.75H9V1.75c0-.41.34-.75.75-.75h4.5Z"}),i("path",{fill:e.fill||"currentColor",d:"M5.06 7a1 1 0 0 0-1 1.06l.76 12.13a3 3 0 0 0 3 2.81h8.36a3 3 0 0 0 3-2.81l.75-12.13a1 1 0 0 0-1-1.06H5.07ZM11 12a1 1 0 1 0-2 0v6a1 1 0 1 0 2 0v-6Zm3-1a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0v-6a1 1 0 0 1 1-1Z",clipRule:"evenodd",fillRule:"evenodd"}))}var t2,Lx,WL,zUe,$Ue,jA,Ml,i0=h(()=>{"use strict";d();Ih();$u();Su();le();C();t2=Ie("overlay","inner","outer"),Lx=Ie("breadcrumb","innerContainer","icons","icon","displayCount","displayCountText"),WL=Ie("card","headerText","headerContextMenu"),zUe=Ie("tabPanelScroller","tabListScroller"),$Ue=Ie("widgetPreviews"),jA=Ie("cardsList","firstCardContainer","card","container"),Ml=Oe('"pulsingEllipsis"')});function WA({service:e,width:t,height:o,...r}){let n=Ne(()=>m8t[e],[e]),a=Ne(()=>Joe(e),[e]);return n&&a&&i(ve,{text:a},s=>i(n,{...s,...r,className:Zt("icon"),width:t??20,height:o??20}))}var m8t,Voe=h(()=>{"use strict";d();$u();i0();Rm();C();m8t={applemusic:HUe,soundcloud:WUe,spotify:KUe,tidal:QUe}});function h8t(e,t){return{retrieve(...o){if(KL.has(e))return KL.get(e);let r=t(...o);return r instanceof Promise?r.then(n=>(KL.set(e,n),n)):(KL.set(e,r),r)}}}function YUe(e,t){return`https://music.apple.com/${tne}/${e}/${x8t}/${t}`}async function ene(e,t,o){return(await Pl({url:`https://api-widget.soundcloud.com/${e}s/${t}${o?"/tracks":""}`,query:{format:"json",limit:"20",client_id:one,app_version:aze}})).json}async function y8t(e,t){return(await Pl({url:"https://api-widget.soundcloud.com/tracks",query:{ids:t.join(","),playlistId:e,playlistSecretToken:"",format:"json",client_id:one,app_version:aze}})).json}function XUe(e){return e.format.protocol==="progressive"&&e.format.mime_type==="audio/mpeg"&&e?.url&&e?.duration}async function VUe(e){let t=e.sort((o,r)=>+XUe(r)-+XUe(o))?.[0];if(t?.url&&t?.duration){let o=(await Pl({url:t.url,query:{client_id:one}})).json;if(!o?.url)return;if(t.duration>=1e3){let r=Math.min(S8t,t.duration),n=Math.ceil(t.duration*b8t);return{duration:t.duration,previewUrl:o.url,previewStart:n,previewSlice:Math.min(r,t.duration-n)}}else return{duration:t.duration,previewUrl:o.url}}}function eze(e){try{let t=new URL(e).searchParams.get("Policy");return t?JSON.parse(atob(t.replace(/_/g,"="))).Statement[0].Condition.DateLessThan["AWS:EpochTime"]*1e3:void 0}catch{return}}async function tze(e,t){return Zoe((await Pl({url:`https://open.spotify.com/embed/${e}/${t}`})).text)}function oze(e){let[t,o,r]=e.split(":");return t==="spotify"&&o&&r?`https://open.spotify.com/${o}/${r}`:null}async function QL(e,t,o="",r={}){return await Pl({url:`https://api.tidal.com/v1/${e}s/${t}/${o}`,query:{countryCode:"US",...r},headers:{"X-Tidal-Token":k8t}}).then(n=>n.ok?n.json:void 0)}async function nze(e){let t=await QL("track",e,"playbackinfo",{audioquality:"HIGH",playbackmode:"STREAM",assetpresentation:"FULL"});if(t?.manifest)return JSON.parse(atob(t.manifest)).urls[0]}function rze(e){try{let t=new URL(e);return t.protocol="https://",t.toString()}catch{return e}}function ize(e){try{let t=new URL(e).searchParams.get("token");if(!t)return;let o=Number(t.split("~")[0]);return Number.isNaN(o)?void 0:o*1e3}catch{return}}var ZUe,f8t,g8t,KL,tne,x8t,JUe,v8t,one,aze,b8t,S8t,w8t,A8t,k8t,KA,ZL,nne=h(()=>{d();jL();ZUe=/^[^-_][a-z0-9-_]+[^-_]$/i,f8t=["spotify","soundcloud","appleMusic","tidal"],g8t={name:"song.link",label:"song.link",hosts:["song.link","album.link","artist.link","pods.link","playlist.link","mylink.page","odesli.co"],async parse(e,t,o){let[r,n,a]=o;if(!r||a||n&&!ZUe.test(n))return null;if(!n&&!ZUe.test(r))return null;let s=(await Pl({url:e})).text,l=Zoe(s)?.props?.pageProps?.pageData?.sections;if(!l)return null;let c=l.flatMap(u=>u.links??[]).filter(u=>u.url&&u.platform);for(let u of f8t){let p=c.find(m=>m.platform===u);if(p){let m=await HL(p.url);if(m)return m}}return null}},KL=new Map;tne="us",x8t="songspotlight";JUe=h8t("applemusicToken",async e=>{e??=(await Pl({url:`https://music.apple.com/${tne}/new`})).text;let t=e.match(/src="(\/assets\/index~\w+\.js)"/i)?.[1];if(t)return(await Pl({url:`https://music.apple.com${t}`})).text.match(/\w+="(ey.*?)"/i)?.[1]}),v8t={name:"applemusic",label:"Apple Music",hosts:["music.apple.com","geo.music.apple.com"],types:["artist","album","playlist","song"],async parse(e,t,o){let[r,n,a,s,l]=o;if(!r||!n||!this.types.includes(n)||!a||!s||l)return null;let c=await Pl({url:YUe(n,s)});return c.status!==200?null:(await JUe.retrieve(c.text),{service:this.name,type:n,id:s})},async render(e,t){let o=await JUe.retrieve();if(!o)return null;let r=await Pl({url:`https://amp-api.music.apple.com/v1/catalog/${tne}/${e}s`,query:{include:"songs",ids:t},headers:{authorization:`Bearer ${o}`,origin:"https://music.apple.com"}});if(r.status!==200)return null;let{attributes:n,relationships:a}=r.json.data[0],s={label:n.name,sublabel:n.artistName??"Top songs",link:n.url,explicit:n.contentRating==="explicit"},l=n.artwork?.url?.replace(/{[wh]}/g,"128");if(e==="song"){let c=n.durationInMillis,u=n.previews?.[0]?.url;return{form:"single",...s,thumbnailUrl:l,single:{audio:u&&c?{previewUrl:u,duration:c}:void 0}}}else return{form:"list",...s,thumbnailUrl:l,list:(a.tracks?.data??a.songs?.data??[]).slice(0,15).map(({attributes:c})=>{let u=c.durationInMillis,p=c.previews?.[0]?.url;return{label:c.name,sublabel:c.artistName,link:c.url,explicit:c.contentRating==="explicit",audio:p&&u?{previewUrl:p,duration:u}:void 0}})}},async validate(e,t){return(await Pl({url:YUe(e,t)})).status===200}},one="nIjtjiYnjkOhMyh5xrbqEW12DxeJVnic",aze="1782997503";b8t=.4,S8t=3e4;w8t={name:"soundcloud",label:"Soundcloud",hosts:["soundcloud.com","m.soundcloud.com","on.soundcloud.com"],types:["user","track","playlist"],async parse(e,t,o){if(t==="on.soundcloud.com"){if(!o[0]||o[1])return null;let{url:r,status:n}=await Pl({url:e});return n===200?await HL(r):null}else{let[r,n,a,s]=o,l=!1;if((r&&!n||r&&n&&n!=="sets"&&!a||r&&n==="sets"&&a&&!s)&&(l=!0),!l)return null;let c=(await Pl({url:"https://soundcloud.com/oembed",query:{format:"json",url:e}})).json;if(!c?.html)return null;let u=c.html.match(/w\.soundcloud\.com.*?url=(.*?)[&"]/)?.[1];if(!u)return null;let p=decodeURIComponent(u).split(/\/+/),m=p[2],g=p[3];return!m||!g?null:{service:this.name,type:m.slice(0,-1),id:g}}},async render(e,t){let o=await ene(e,t);if(!o?.id)return null;let r={label:o.title??o.username,sublabel:o.user?.username??"Top tracks",link:o.permalink_url,explicit:!!o.publisher_metadata?.explicit},n=o.artwork_url??o.avatar_url;if(e==="track"){let a=await VUe(o.media?.transcodings??[]).catch(()=>{});return{form:"single",...r,thumbnailUrl:n,single:{audio:a},expiresAt:a?eze(a.previewUrl):void 0}}else{let a=[];if(e==="user"){let c=await ene(e,t,!0).catch(()=>{});c?.collection&&(a=c.collection)}else if(o.tracks){a=o.tracks;let c=a.filter(p=>p.policy==="ALLOW"&&!p.uri).map(p=>p.id).slice(0,15),u=c.length>=1&&await y8t(t,c);if(u)for(let p=0;pg.id===a[p]?.id);m&&(a[p]=m)}}let s=await Promise.all(a.filter(c=>c.uri).slice(0,15).map(async c=>({label:c.title,sublabel:c.user?.username??"unknown",link:c.permalink_url,explicit:!!c.publisher_metadata.explicit,audio:await VUe(c.media?.transcodings??[]).catch(()=>{})}))),l=s.map(({audio:c})=>c?eze(c.previewUrl):void 0).filter(c=>typeof c=="number");return{form:"list",...r,thumbnailUrl:n,list:s,expiresAt:l[0]?Math.min(...l):void 0}}},async validate(e,t){return(await ene(e,t))?.id!==void 0}};A8t={name:"spotify",label:"Spotify",hosts:["open.spotify.com"],types:["track","album","playlist","artist"],async parse(e,t,o){let[r,n,a]=o;return!r||!this.types.includes(r)||!n||a||!await this.validate(r,n)?null:{service:this.name,type:r,id:n}},async render(e,t){let o=(await tze(e,t))?.props?.pageProps?.state?.data?.entity;if(!o)return null;let r={label:o.title,sublabel:o.subtitle??o.artists?.map(a=>a.name).join(", "),link:oze(o.uri),explicit:!!o.isExplicit},n=o.visualIdentity.image.sort((a,s)=>a.maxWidth-s.maxWidth)[0]?.url.replace(/:\/\/.*?\.spotifycdn\.com\/image/,"://i.scdn.co/image");return e==="track"?{form:"single",...r,thumbnailUrl:n,single:{audio:o.audioPreview&&o.duration?{duration:o.duration,previewUrl:o.audioPreview.url}:void 0}}:{form:"list",...r,thumbnailUrl:n,list:(o.trackList??[]).slice(0,15).map(a=>({label:a.title,sublabel:a.subtitle??a.artists?.map(s=>s.name).join(", "),link:oze(a.uri),explicit:!!a.isExplicit,audio:a.audioPreview&&a.duration?{duration:a.duration,previewUrl:a.audioPreview.url}:void 0}))}},async validate(e,t){return!(await tze(e,t))?.props?.pageProps?.title}},k8t="vNVdglQOjFJJGG2U";KA=[v8t,w8t,A8t,{name:"tidal",label:"Tidal",hosts:["tidal.com","www.tidal.com","listen.tidal.com"],types:["artist","album","playlist","track"],async parse(e,t,o){let[r,n,a,s]=o,l=a&&s?a:r,c=a&&s?s:n;return!l||!this.types.includes(l)||!c||l==="playlist"&&!/^[-a-f0-9]+$/.test(c)||l!=="playlist"&&Number.isNaN(Number(c))||!await this.validate(l,c)?null:{service:this.name,type:l,id:c}},async render(e,t){let o=await QL(e,t);if(!o)return null;let r=o.type==="playlist"?"TIDAL":"Top tracks",n={label:o.title||o.name||"Unknown",sublabel:o.artists?.map(l=>l.name).join(", ")||o.creator?.name||r,link:rze(o.url),explicit:!!o.explicit},a=o.picture??o.squareImage??o.cover,s=a?`https://resources.tidal.com/images/${a.replace(/-/g,"/")}/160x160.jpg`:void 0;if(e==="track"){let l=o.duration&&await nze(t).catch(()=>{});return{form:"single",...n,thumbnailUrl:s,single:{audio:l&&o.duration?{previewUrl:l,duration:o.duration*1e3}:void 0},expiresAt:l?ize(l):void 0}}else{let l=await QL(e,t,e==="artist"?"toptracks":"tracks",{limit:String(15)}),c=await Promise.all(l?.items.slice(0,15).map(async p=>{let m=p.duration&&await nze(p.id).catch(()=>{});return{label:p.title,sublabel:p.artists.map(g=>g.name).join(", "),link:rze(p.url),explicit:!!p.explicit,audio:m&&p.duration?{previewUrl:m,duration:p.duration*1e3}:void 0}})??[]),u=c.map(({audio:p})=>p?ize(p.previewUrl):void 0).filter(p=>typeof p=="number");return{form:"list",...n,thumbnailUrl:s,list:c,expiresAt:u[0]?Math.min(...u):void 0}}},async validate(e,t){return!!await QL(e,t)}}];Vb.services=KA;ZL=[g8t,...KA];Vb.parsers=ZL});var sze=h(()=>{d();jL();nne()});function C8t({modalProps:e,close:t,onAdd:o}){let[r,n]=T(""),[a,s]=T(),[l,c]=T(!1);return i(H,null,i(be,{...e,size:"md",title:"Add a new song",actions:[{text:"Add song",variant:"primary",disabled:!r||!!a||l,onClick:async()=>{c(!0);try{let u=await Lm.parseLink(r);if(!u)return s("Invalid link"),c(!1);let p=o(u);if(p)return s(p),c(!1);t()}catch(u){Xb.error("parseLink error",u),s("Failed to parse link"),c(!1)}}}]},i(pe,{flexDirection:"column",gap:"10px"},i(Y,{size:"md",weight:"normal",className:Zt("sub")},"Song Spotlight supports these services: ",i("b",null,ZL.map(u=>u.label).join(", "))),i(Te,{placeholder:"https://open.spotify.com/...",error:a,onChange:u=>{n(u);try{u&&new URL(u),s(void 0)}catch{s("Invalid URL")}}}))))}function rne({onAdd:e}){return i(eo,{onClick:()=>{let t=ce(o=>i(C8t,{modalProps:o,close:()=>Lo(t),onAdd:e}))}},i(pe,{alignItems:"center",gap:"12px",className:Zt("editable-song","add-song")},i(Yc,{width:28,height:28,className:Zt("icon")}),i(pe,{flexDirection:"column",justifyContent:"center",gap:0},i(Y,{size:"md",weight:"medium"},"Add song"))))}var lze=h(()=>{"use strict";d();yt();Pe();Lt();ot();$u();e2();sze();C()});function T8t({index:e,song:t,insert:o,setSongRef:r,onDrag:n,onDrop:a,onRemove:s}){let{render:l,failed:c}=qL(t),[u,p]=T(!1),m=jt(v=>r(e,v),[e,r]),g=jt(v=>{p(!0),n(e,v)},[e,n]),x=jt(()=>{p(!1),a(t)},[t,a]);return i(so,{href:l?.link,onContextMenu:v=>rt.openContextMenu(v,()=>i(P.Menu,{navId:"vc-songspotlight-editable-song",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":l?.label},i(P.MenuItem,{id:"copy-link",label:"Copy link",icon:sn,leadingAccessory:{type:"icon",icon:sn},action:()=>l&&ft(l.link),disabled:!l}),i(P.MenuItem,{id:"remove-song",color:"danger",label:"Remove song",icon:o2,leadingAccessory:{type:"icon",icon:o2},action:()=>s(t)}))),draggable:"true","data-dragging":u,"data-insert":o,onDragStart:g,onDrag:g,onDragEnd:x,ref:m,className:Zt("editable-song-container")},i(pe,{alignItems:"center",gap:"12px",className:Zt("editable-song")},i(WA,{width:28,height:28,service:t.service}),c?i(Y,{size:"md",weight:"normal",className:Zt("errored")},"Failed to load!"):i(pe,{flexDirection:"column",justifyContent:"center",gap:0},i(Y,{size:"md",weight:"medium",className:Zt("clamped")},l?l.label:"..."),i(Y,{size:"sm",weight:"normal",className:Zt("clamped","sub")},l?l.sublabel:"..."))))}function ine({localData:e,setLocalData:t}){let o=Ne(()=>e?new Array(fa.songLimit).fill(null).map((m,g)=>e[g]?{slot:"song",song:e[g],last:!e[g+1]}:e[g-1]||g===0?{slot:"add"}:{slot:"empty"}):[],[e]),r=Se(new Map),[n,a]=T(),s=jt((m,g)=>{g?r.current.set(m,g):r.current.delete(m)},[]),l=jt((m,g)=>{let x=r.current.entries().map(([w,I])=>{let E=I.getBoundingClientRect();return{index:w,top:E.top,bottom:E.bottom,size:E.height}}).toArray().sort((w,I)=>w.index-I.index),v=x[x.length-1],y=[...x.map(({index:w,top:I,size:E})=>({spot:w,position:I,size:E})),{spot:v.index+1,position:v.bottom,size:v.size}].filter(({spot:w})=>w!==m&&w!==m+1),A,k=1/0;for(let{spot:w,position:I,size:E}of y){let N=Math.abs(g.clientY-I);N{if(n===void 0)return;a(void 0);let g=e.indexOf(m);if(g===-1)return;let x=n>g?n-1:n;t(e.toSpliced(g,1).toSpliced(x,0,m))},[e,n]),u=jt(m=>{if(e.length>=fa.songLimit)return"Not enough space";if(e.some(g=>mr(g)===mr(m)))return"You've already added this song";ne("Added song!"),t([...e,m])},[e]),p=jt(m=>{let g=e.indexOf(m);g!==-1&&(ne("Removed song!"),t(e.toSpliced(g,1)))},[e]);return i(pe,{flexDirection:"column",gap:"6px"},o.map(({slot:m,song:g,last:x},v)=>m==="song"?i(T8t,{index:v,song:g,insert:x&&n===v+1?"bottom":n===v?"top":void 0,setSongRef:s,onDrag:l,onDrop:c,onRemove:p,key:mr(g)}):m==="add"?i(rne,{onAdd:u,key:m}):i("div",{className:Zt("empty-song"),key:`${m}-${v}`})))}var cze=h(()=>{"use strict";d();yt();Lt();ot();$r();r0();$u();e2();i0();Voe();lze();Rm();_e();C()});function fe(e,t,o){function r(l,c){if(l._zod||Object.defineProperty(l,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),l._zod.traits.has(e))return;l._zod.traits.add(e),t(l,c);let u=s.prototype,p=Object.keys(u);for(let m=0;mo?.Parent&&l instanceof o.Parent?!0:l?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}function Xr(e){return e&&Object.assign(QA,e),QA}var ane,YL,Gu,a0,QA,n2=h(()=>{d();ane=Object.freeze({status:"aborted"});YL=Symbol("zod_brand"),Gu=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},a0=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}},QA={}});var Ye={};Bt(Ye,{BIGINT_FORMAT_RANGES:()=>hne,Class:()=>lne,NUMBER_FORMAT_RANGES:()=>gne,aborted:()=>u0,allowsEval:()=>dne,assert:()=>M8t,assertEqual:()=>I8t,assertIs:()=>D8t,assertNever:()=>P8t,assertNotEqual:()=>E8t,assignProp:()=>l0,base64ToUint8Array:()=>dze,base64urlToUint8Array:()=>Q8t,cached:()=>i2,captureStackTrace:()=>XL,cleanEnum:()=>K8t,cleanRegex:()=>JA,clone:()=>Ws,cloneDef:()=>B8t,createTransparentProxy:()=>U8t,defineLazy:()=>wo,esc:()=>JL,escapeRegex:()=>qc,extend:()=>G8t,finalizeIssue:()=>Nl,floatSafeRemainder:()=>cne,getElementAtPath:()=>R8t,getEnumValues:()=>YA,getLengthableOrigin:()=>e6,getParsedType:()=>_8t,getSizableOrigin:()=>VA,hexToUint8Array:()=>Y8t,isObject:()=>Ox,isPlainObject:()=>c0,issue:()=>a2,joinValues:()=>Ce,jsonStringifyReplacer:()=>r2,merge:()=>j8t,mergeDefs:()=>Om,normalizeParams:()=>tt,nullish:()=>s0,numKeys:()=>F8t,objectClone:()=>N8t,omit:()=>$8t,optionalKeys:()=>fne,parsedType:()=>Ze,partial:()=>q8t,pick:()=>z8t,prefixIssues:()=>rc,primitiveTypes:()=>mne,promiseAllObject:()=>L8t,propertyKeyTypes:()=>XA,randomString:()=>O8t,required:()=>W8t,safeExtend:()=>H8t,shallowClone:()=>pne,slugify:()=>une,stringifyPrimitive:()=>Ke,uint8ArrayToBase64:()=>pze,uint8ArrayToBase64url:()=>Z8t,uint8ArrayToHex:()=>J8t,unwrapMessage:()=>ZA});function I8t(e){return e}function E8t(e){return e}function D8t(e){}function P8t(e){throw new Error("Unexpected value in exhaustive check")}function M8t(e){}function YA(e){let t=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,n])=>t.indexOf(+r)===-1).map(([r,n])=>n)}function Ce(e,t="|"){return e.map(o=>Ke(o)).join(t)}function r2(e,t){return typeof t=="bigint"?t.toString():t}function i2(e){return{get value(){{let o=e();return Object.defineProperty(this,"value",{value:o}),o}throw new Error("cached value already set")}}}function s0(e){return e==null}function JA(e){let t=e.startsWith("^")?1:0,o=e.endsWith("$")?e.length-1:e.length;return e.slice(t,o)}function cne(e,t){let o=(e.toString().split(".")[1]||"").length,r=t.toString(),n=(r.split(".")[1]||"").length;if(n===0&&/\d?e-\d?/.test(r)){let c=r.match(/\d?e-(\d?)/);c?.[1]&&(n=Number.parseInt(c[1]))}let a=o>n?o:n,s=Number.parseInt(e.toFixed(a).replace(".","")),l=Number.parseInt(t.toFixed(a).replace(".",""));return s%l/10**a}function wo(e,t,o){let r;Object.defineProperty(e,t,{get(){if(r!==uze)return r===void 0&&(r=uze,r=o()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function N8t(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function l0(e,t,o){Object.defineProperty(e,t,{value:o,writable:!0,enumerable:!0,configurable:!0})}function Om(...e){let t={};for(let o of e){let r=Object.getOwnPropertyDescriptors(o);Object.assign(t,r)}return Object.defineProperties({},t)}function B8t(e){return Om(e._zod.def)}function R8t(e,t){return t?t.reduce((o,r)=>o?.[r],e):e}function L8t(e){let t=Object.keys(e),o=t.map(r=>e[r]);return Promise.all(o).then(r=>{let n={};for(let a=0;at};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function U8t(e){let t;return new Proxy({},{get(o,r,n){return t??(t=e()),Reflect.get(t,r,n)},set(o,r,n,a){return t??(t=e()),Reflect.set(t,r,n,a)},has(o,r){return t??(t=e()),Reflect.has(t,r)},deleteProperty(o,r){return t??(t=e()),Reflect.deleteProperty(t,r)},ownKeys(o){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(o,r){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,r)},defineProperty(o,r,n){return t??(t=e()),Reflect.defineProperty(t,r,n)}})}function Ke(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function fne(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}function z8t(e,t){let o=e._zod.def,r=o.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let a=Om(e._zod.def,{get shape(){let s={};for(let l in t){if(!(l in o.shape))throw new Error(`Unrecognized key: "${l}"`);t[l]&&(s[l]=o.shape[l])}return l0(this,"shape",s),s},checks:[]});return Ws(e,a)}function $8t(e,t){let o=e._zod.def,r=o.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let a=Om(e._zod.def,{get shape(){let s={...e._zod.def.shape};for(let l in t){if(!(l in o.shape))throw new Error(`Unrecognized key: "${l}"`);t[l]&&delete s[l]}return l0(this,"shape",s),s},checks:[]});return Ws(e,a)}function G8t(e,t){if(!c0(t))throw new Error("Invalid input to extend: expected a plain object");let o=e._zod.def.checks;if(o&&o.length>0){let a=e._zod.def.shape;for(let s in t)if(Object.getOwnPropertyDescriptor(a,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let n=Om(e._zod.def,{get shape(){let a={...e._zod.def.shape,...t};return l0(this,"shape",a),a}});return Ws(e,n)}function H8t(e,t){if(!c0(t))throw new Error("Invalid input to safeExtend: expected a plain object");let o=Om(e._zod.def,{get shape(){let r={...e._zod.def.shape,...t};return l0(this,"shape",r),r}});return Ws(e,o)}function j8t(e,t){let o=Om(e._zod.def,{get shape(){let r={...e._zod.def.shape,...t._zod.def.shape};return l0(this,"shape",r),r},get catchall(){return t._zod.def.catchall},checks:[]});return Ws(e,o)}function q8t(e,t,o){let n=t._zod.def.checks;if(n&&n.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let s=Om(t._zod.def,{get shape(){let l=t._zod.def.shape,c={...l};if(o)for(let u in o){if(!(u in l))throw new Error(`Unrecognized key: "${u}"`);o[u]&&(c[u]=e?new e({type:"optional",innerType:l[u]}):l[u])}else for(let u in l)c[u]=e?new e({type:"optional",innerType:l[u]}):l[u];return l0(this,"shape",c),c},checks:[]});return Ws(t,s)}function W8t(e,t,o){let r=Om(t._zod.def,{get shape(){let n=t._zod.def.shape,a={...n};if(o)for(let s in o){if(!(s in a))throw new Error(`Unrecognized key: "${s}"`);o[s]&&(a[s]=new e({type:"nonoptional",innerType:n[s]}))}else for(let s in n)a[s]=new e({type:"nonoptional",innerType:n[s]});return l0(this,"shape",a),a}});return Ws(t,r)}function u0(e,t=0){if(e.aborted===!0)return!0;for(let o=t;o{var r;return(r=o).path??(r.path=[]),o.path.unshift(e),o})}function ZA(e){return typeof e=="string"?e:e?.message}function Nl(e,t,o){let r={...e,path:e.path??[]};if(!e.message){let n=ZA(e.inst?._zod.def?.error?.(e))??ZA(t?.error?.(e))??ZA(o.customError?.(e))??ZA(o.localeError?.(e))??"Invalid input";r.message=n}return delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function VA(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function e6(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Ze(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let o=e;if(o&&Object.getPrototypeOf(o)!==Object.prototype&&"constructor"in o&&o.constructor)return o.constructor.name}}return t}function a2(...e){let[t,o,r]=e;return typeof t=="string"?{message:t,code:"custom",input:o,inst:r}:{...t}}function K8t(e){return Object.entries(e).filter(([t,o])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function dze(e){let t=atob(e),o=new Uint8Array(t.length);for(let r=0;rt.toString(16).padStart(2,"0")).join("")}var uze,XL,dne,_8t,XA,mne,gne,hne,lne,$t=h(()=>{d();uze=Symbol("evaluating");XL="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};dne=i2(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});_8t=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},XA=new Set(["string","number","symbol"]),mne=new Set(["string","number","bigint","boolean","symbol","undefined"]);gne={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},hne={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};lne=class{constructor(...t){}}});function o6(e,t=o=>o.message){let o={},r=[];for(let n of e.issues)n.path.length>0?(o[n.path[0]]=o[n.path[0]]||[],o[n.path[0]].push(t(n))):r.push(t(n));return{formErrors:r,fieldErrors:o}}function n6(e,t=o=>o.message){let o={_errors:[]},r=n=>{for(let a of n.issues)if(a.code==="invalid_union"&&a.errors.length)a.errors.map(s=>r({issues:s}));else if(a.code==="invalid_key")r({issues:a.issues});else if(a.code==="invalid_element")r({issues:a.issues});else if(a.path.length===0)o._errors.push(t(a));else{let s=o,l=0;for(;lo.message){let o={errors:[]},r=(n,a=[])=>{var s,l;for(let c of n.issues)if(c.code==="invalid_union"&&c.errors.length)c.errors.map(u=>r({issues:u},c.path));else if(c.code==="invalid_key")r({issues:c.issues},c.path);else if(c.code==="invalid_element")r({issues:c.issues},c.path);else{let u=[...a,...c.path];if(u.length===0){o.errors.push(t(c));continue}let p=o,m=0;for(;mtypeof r=="object"?r.key:r);for(let r of o)typeof r=="number"?t.push(`[${r}]`):typeof r=="symbol"?t.push(`[${JSON.stringify(String(r))}]`):/[^\w$]/.test(r)?t.push(`[${JSON.stringify(r)}]`):(t.length&&t.push("."),t.push(r));return t.join("")}function vne(e){let t=[],o=[...e.issues].sort((r,n)=>(r.path??[]).length-(n.path??[]).length);for(let r of o)t.push(`\u2716 ${r.message}`),r.path?.length&&t.push(` \u2192 at ${fze(r.path)}`);return t.join(` `)}var mze,t6,Bl,yne=h(()=>{d();n2();$t();mze=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,r2,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},t6=fe("$ZodError",mze),Bl=fe("$ZodError",mze,{Parent:Error})});var s2,VL,l2,eO,c2,bne,u2,Sne,tO,V8t,oO,eAt,nO,tAt,rO,oAt,iO,nAt,aO,rAt,sO,iAt,lO,aAt,wne=h(()=>{d();n2();yne();$t();s2=e=>(t,o,r,n)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},s=t._zod.run({value:o,issues:[]},a);if(s instanceof Promise)throw new Gu;if(s.issues.length){let l=new(n?.Err??e)(s.issues.map(c=>Nl(c,a,Xr())));throw XL(l,n?.callee),l}return s.value},VL=s2(Bl),l2=e=>async(t,o,r,n)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},s=t._zod.run({value:o,issues:[]},a);if(s instanceof Promise&&(s=await s),s.issues.length){let l=new(n?.Err??e)(s.issues.map(c=>Nl(c,a,Xr())));throw XL(l,n?.callee),l}return s.value},eO=l2(Bl),c2=e=>(t,o,r)=>{let n=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:o,issues:[]},n);if(a instanceof Promise)throw new Gu;return a.issues.length?{success:!1,error:new(e??t6)(a.issues.map(s=>Nl(s,n,Xr())))}:{success:!0,data:a.value}},bne=c2(Bl),u2=e=>async(t,o,r)=>{let n=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:o,issues:[]},n);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(s=>Nl(s,n,Xr())))}:{success:!0,data:a.value}},Sne=u2(Bl),tO=e=>(t,o,r)=>{let n=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return s2(e)(t,o,n)},V8t=tO(Bl),oO=e=>(t,o,r)=>s2(e)(t,o,r),eAt=oO(Bl),nO=e=>async(t,o,r)=>{let n=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return l2(e)(t,o,n)},tAt=nO(Bl),rO=e=>async(t,o,r)=>l2(e)(t,o,r),oAt=rO(Bl),iO=e=>(t,o,r)=>{let n=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return c2(e)(t,o,n)},nAt=iO(Bl),aO=e=>(t,o,r)=>c2(e)(t,o,r),rAt=aO(Bl),sO=e=>async(t,o,r)=>{let n=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return u2(e)(t,o,n)},iAt=sO(Bl),lO=e=>async(t,o,r)=>u2(e)(t,o,r),aAt=lO(Bl)});var Wc={};Bt(Wc,{base64:()=>_ne,base64url:()=>cO,bigint:()=>jne,boolean:()=>Wne,browserEmail:()=>fAt,cidrv4:()=>One,cidrv6:()=>Fne,cuid:()=>Ane,cuid2:()=>kne,date:()=>zne,datetime:()=>Gne,domain:()=>xAt,duration:()=>Dne,e164:()=>Une,email:()=>Mne,emoji:()=>Nne,extendedDuration:()=>sAt,guid:()=>Pne,hex:()=>vAt,hostname:()=>hAt,html5Email:()=>dAt,idnEmail:()=>mAt,integer:()=>qne,ipv4:()=>Bne,ipv6:()=>Rne,ksuid:()=>Ine,lowercase:()=>Zne,mac:()=>Lne,md5_base64:()=>bAt,md5_base64url:()=>SAt,md5_hex:()=>yAt,nanoid:()=>Ene,null:()=>Kne,number:()=>uO,rfc5322Email:()=>pAt,sha1_base64:()=>AAt,sha1_base64url:()=>kAt,sha1_hex:()=>wAt,sha256_base64:()=>TAt,sha256_base64url:()=>IAt,sha256_hex:()=>CAt,sha384_base64:()=>DAt,sha384_base64url:()=>PAt,sha384_hex:()=>EAt,sha512_base64:()=>NAt,sha512_base64url:()=>BAt,sha512_hex:()=>MAt,string:()=>Hne,time:()=>$ne,ulid:()=>Cne,undefined:()=>Qne,unicodeEmail:()=>gze,uppercase:()=>Yne,uuid:()=>Fx,uuid4:()=>lAt,uuid6:()=>cAt,uuid7:()=>uAt,xid:()=>Tne});function Nne(){return new RegExp(gAt,"u")}function xze(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function $ne(e){return new RegExp(`^${xze(e)}$`)}function Gne(e){let t=xze({precision:e.precision}),o=["Z"];e.local&&o.push(""),e.offset&&o.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let r=`${t}(?:${o.join("|")})`;return new RegExp(`^${hze}T(?:${r})$`)}function r6(e,t){return new RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function i6(e){return new RegExp(`^[A-Za-z0-9_-]{${e}}$`)}var Ane,kne,Cne,Tne,Ine,Ene,Dne,sAt,Pne,Fx,lAt,cAt,uAt,Mne,dAt,pAt,gze,mAt,fAt,gAt,Bne,Rne,Lne,One,Fne,_ne,cO,hAt,xAt,Une,hze,zne,Hne,jne,qne,uO,Wne,Kne,Qne,Zne,Yne,vAt,yAt,bAt,SAt,wAt,AAt,kAt,CAt,TAt,IAt,EAt,DAt,PAt,MAt,NAt,BAt,dO=h(()=>{d();$t();Ane=/^[cC][^\s-]{8,}$/,kne=/^[0-9a-z]+$/,Cne=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Tne=/^[0-9a-vA-V]{20}$/,Ine=/^[A-Za-z0-9]{27}$/,Ene=/^[a-zA-Z0-9_-]{21}$/,Dne=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,sAt=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Pne=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Fx=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,lAt=Fx(4),cAt=Fx(6),uAt=Fx(7),Mne=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,dAt=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,pAt=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,gze=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,mAt=gze,fAt=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,gAt="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";Bne=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Rne=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Lne=e=>{let t=qc(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},One=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Fne=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,_ne=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,cO=/^[A-Za-z0-9_-]*$/,hAt=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,xAt=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Une=/^\+[1-9]\d{6,14}$/,hze="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",zne=new RegExp(`^${hze}$`);Hne=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},jne=/^-?\d+n?$/,qne=/^-?\d+$/,uO=/^-?\d+(?:\.\d+)?$/,Wne=/^(?:true|false)$/i,Kne=/^null$/i,Qne=/^undefined$/i,Zne=/^[^A-Z]*$/,Yne=/^[^a-z]*$/,vAt=/^[0-9a-fA-F]*$/;yAt=/^[0-9a-fA-F]{32}$/,bAt=r6(22,"=="),SAt=i6(22),wAt=/^[0-9a-fA-F]{40}$/,AAt=r6(27,"="),kAt=i6(27),CAt=/^[0-9a-fA-F]{64}$/,TAt=r6(43,"="),IAt=i6(43),EAt=/^[0-9a-fA-F]{96}$/,DAt=r6(64,""),PAt=i6(64),MAt=/^[0-9a-fA-F]{128}$/,NAt=r6(86,"=="),BAt=i6(86)});function vze(e,t,o){e.issues.length&&t.issues.push(...rc(o,e.issues))}var Hn,yze,pO,mO,Jne,Xne,Vne,ere,tre,ore,nre,rre,ire,d2,are,sre,lre,cre,ure,dre,pre,mre,fre,fO=h(()=>{d();n2();dO();$t();Hn=fe("$ZodCheck",(e,t)=>{var o;e._zod??(e._zod={}),e._zod.def=t,(o=e._zod).onattach??(o.onattach=[])}),yze={number:"number",bigint:"bigint",object:"date"},pO=fe("$ZodCheckLessThan",(e,t)=>{Hn.init(e,t);let o=yze[typeof t.value];e._zod.onattach.push(r=>{let n=r._zod.bag,a=(t.inclusive?n.maximum:n.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value{(t.inclusive?r.value<=t.value:r.value{Hn.init(e,t);let o=yze[typeof t.value];e._zod.onattach.push(r=>{let n=r._zod.bag,a=(t.inclusive?n.minimum:n.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>a&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:o,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Jne=fe("$ZodCheckMultipleOf",(e,t)=>{Hn.init(e,t),e._zod.onattach.push(o=>{var r;(r=o._zod.bag).multipleOf??(r.multipleOf=t.value)}),e._zod.check=o=>{if(typeof o.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof o.value=="bigint"?o.value%t.value===BigInt(0):cne(o.value,t.value)===0)||o.issues.push({origin:typeof o.value,code:"not_multiple_of",divisor:t.value,input:o.value,inst:e,continue:!t.abort})}}),Xne=fe("$ZodCheckNumberFormat",(e,t)=>{Hn.init(e,t),t.format=t.format||"float64";let o=t.format?.includes("int"),r=o?"int":"number",[n,a]=gne[t.format];e._zod.onattach.push(s=>{let l=s._zod.bag;l.format=t.format,l.minimum=n,l.maximum=a,o&&(l.pattern=qne)}),e._zod.check=s=>{let l=s.value;if(o){if(!Number.isInteger(l)){s.issues.push({expected:r,format:t.format,code:"invalid_type",continue:!1,input:l,inst:e});return}if(!Number.isSafeInteger(l)){l>0?s.issues.push({input:l,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort}):s.issues.push({input:l,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}la&&s.issues.push({origin:"number",input:l,code:"too_big",maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Vne=fe("$ZodCheckBigIntFormat",(e,t)=>{Hn.init(e,t);let[o,r]=hne[t.format];e._zod.onattach.push(n=>{let a=n._zod.bag;a.format=t.format,a.minimum=o,a.maximum=r}),e._zod.check=n=>{let a=n.value;ar&&n.issues.push({origin:"bigint",input:a,code:"too_big",maximum:r,inclusive:!0,inst:e,continue:!t.abort})}}),ere=fe("$ZodCheckMaxSize",(e,t)=>{var o;Hn.init(e,t),(o=e._zod.def).when??(o.when=r=>{let n=r.value;return!s0(n)&&n.size!==void 0}),e._zod.onattach.push(r=>{let n=r._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum{let n=r.value;n.size<=t.maximum||r.issues.push({origin:VA(n),code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),tre=fe("$ZodCheckMinSize",(e,t)=>{var o;Hn.init(e,t),(o=e._zod.def).when??(o.when=r=>{let n=r.value;return!s0(n)&&n.size!==void 0}),e._zod.onattach.push(r=>{let n=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(r._zod.bag.minimum=t.minimum)}),e._zod.check=r=>{let n=r.value;n.size>=t.minimum||r.issues.push({origin:VA(n),code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),ore=fe("$ZodCheckSizeEquals",(e,t)=>{var o;Hn.init(e,t),(o=e._zod.def).when??(o.when=r=>{let n=r.value;return!s0(n)&&n.size!==void 0}),e._zod.onattach.push(r=>{let n=r._zod.bag;n.minimum=t.size,n.maximum=t.size,n.size=t.size}),e._zod.check=r=>{let n=r.value,a=n.size;if(a===t.size)return;let s=a>t.size;r.issues.push({origin:VA(n),...s?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),nre=fe("$ZodCheckMaxLength",(e,t)=>{var o;Hn.init(e,t),(o=e._zod.def).when??(o.when=r=>{let n=r.value;return!s0(n)&&n.length!==void 0}),e._zod.onattach.push(r=>{let n=r._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum{let n=r.value;if(n.length<=t.maximum)return;let s=e6(n);r.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),rre=fe("$ZodCheckMinLength",(e,t)=>{var o;Hn.init(e,t),(o=e._zod.def).when??(o.when=r=>{let n=r.value;return!s0(n)&&n.length!==void 0}),e._zod.onattach.push(r=>{let n=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(r._zod.bag.minimum=t.minimum)}),e._zod.check=r=>{let n=r.value;if(n.length>=t.minimum)return;let s=e6(n);r.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),ire=fe("$ZodCheckLengthEquals",(e,t)=>{var o;Hn.init(e,t),(o=e._zod.def).when??(o.when=r=>{let n=r.value;return!s0(n)&&n.length!==void 0}),e._zod.onattach.push(r=>{let n=r._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=r=>{let n=r.value,a=n.length;if(a===t.length)return;let s=e6(n),l=a>t.length;r.issues.push({origin:s,...l?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),d2=fe("$ZodCheckStringFormat",(e,t)=>{var o,r;Hn.init(e,t),e._zod.onattach.push(n=>{let a=n._zod.bag;a.format=t.format,t.pattern&&(a.patterns??(a.patterns=new Set),a.patterns.add(t.pattern))}),t.pattern?(o=e._zod).check??(o.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),are=fe("$ZodCheckRegex",(e,t)=>{d2.init(e,t),e._zod.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:"regex",input:o.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),sre=fe("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Zne),d2.init(e,t)}),lre=fe("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Yne),d2.init(e,t)}),cre=fe("$ZodCheckIncludes",(e,t)=>{Hn.init(e,t);let o=qc(t.includes),r=new RegExp(typeof t.position=="number"?`^.{${t.position}}${o}`:o);t.pattern=r,e._zod.onattach.push(n=>{let a=n._zod.bag;a.patterns??(a.patterns=new Set),a.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),ure=fe("$ZodCheckStartsWith",(e,t)=>{Hn.init(e,t);let o=new RegExp(`^${qc(t.prefix)}.*`);t.pattern??(t.pattern=o),e._zod.onattach.push(r=>{let n=r._zod.bag;n.patterns??(n.patterns=new Set),n.patterns.add(o)}),e._zod.check=r=>{r.value.startsWith(t.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:r.value,inst:e,continue:!t.abort})}}),dre=fe("$ZodCheckEndsWith",(e,t)=>{Hn.init(e,t);let o=new RegExp(`.*${qc(t.suffix)}$`);t.pattern??(t.pattern=o),e._zod.onattach.push(r=>{let n=r._zod.bag;n.patterns??(n.patterns=new Set),n.patterns.add(o)}),e._zod.check=r=>{r.value.endsWith(t.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:r.value,inst:e,continue:!t.abort})}});pre=fe("$ZodCheckProperty",(e,t)=>{Hn.init(e,t),e._zod.check=o=>{let r=t.schema._zod.run({value:o.value[t.property],issues:[]},{});if(r instanceof Promise)return r.then(n=>vze(n,o,t.property));vze(r,o,t.property)}}),mre=fe("$ZodCheckMimeType",(e,t)=>{Hn.init(e,t);let o=new Set(t.mime);e._zod.onattach.push(r=>{r._zod.bag.mime=t.mime}),e._zod.check=r=>{o.has(r.value.type)||r.issues.push({code:"invalid_value",values:t.mime,input:r.value.type,inst:e,continue:!t.abort})}}),fre=fe("$ZodCheckOverwrite",(e,t)=>{Hn.init(e,t),e._zod.check=o=>{o.value=t.tx(o.value)}})});var a6,gre=h(()=>{d();a6=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let r=t.split(` `).filter(s=>s),n=Math.min(...r.map(s=>s.length-s.trimStart().length)),a=r.map(s=>s.slice(n)).map(s=>" ".repeat(this.indent*2)+s);for(let s of a)this.content.push(s)}compile(){let t=Function,o=this?.args,n=[...(this?.content??[""]).map(a=>` ${a}`)];return new t(...o,n.join(` `))}}});var hre,xre=h(()=>{d();hre={major:4,minor:3,patch:6}});function Ure(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}function Nze(e){if(!cO.test(e))return!1;let t=e.replace(/[-_]/g,r=>r==="-"?"+":"/"),o=t.padEnd(Math.ceil(t.length/4)*4,"=");return Ure(o)}function Bze(e,t=null){try{let o=e.split(".");if(o.length!==3)return!1;let[r]=o;if(!r)return!1;let n=JSON.parse(atob(r));return!("typ"in n&&n?.typ!=="JWT"||!n.alg||t&&(!("alg"in n)||n.alg!==t))}catch{return!1}}function Sze(e,t,o){e.issues.length&&t.issues.push(...rc(o,e.issues)),t.value[o]=e.value}function yO(e,t,o,r,n){if(e.issues.length){if(n&&!(o in r))return;t.issues.push(...rc(o,e.issues))}e.value===void 0?o in r&&(t.value[o]=void 0):t.value[o]=e.value}function Rze(e){let t=Object.keys(e.shape);for(let r of t)if(!e.shape?.[r]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${r}": expected a Zod schema`);let o=fne(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(o)}}function Lze(e,t,o,r,n,a){let s=[],l=n.keySet,c=n.catchall._zod,u=c.def.type,p=c.optout==="optional";for(let m in t){if(l.has(m))continue;if(u==="never"){s.push(m);continue}let g=c.run({value:t[m],issues:[]},r);g instanceof Promise?e.push(g.then(x=>yO(x,o,m,t,p))):yO(g,o,m,t,p)}return s.length&&o.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:a}),e.length?Promise.all(e).then(()=>o):o}function wze(e,t,o,r){for(let a of e)if(a.issues.length===0)return t.value=a.value,t;let n=e.filter(a=>!u0(a));return n.length===1?(t.value=n[0].value,n[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:o,errors:e.map(a=>a.issues.map(s=>Nl(s,r,Xr())))}),t)}function Aze(e,t,o,r){let n=e.filter(a=>a.issues.length===0);return n.length===1?(t.value=n[0].value,t):(n.length===0?t.issues.push({code:"invalid_union",input:t.value,inst:o,errors:e.map(a=>a.issues.map(s=>Nl(s,r,Xr())))}):t.issues.push({code:"invalid_union",input:t.value,inst:o,errors:[],inclusive:!1}),t)}function vre(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(c0(e)&&c0(t)){let o=Object.keys(t),r=Object.keys(e).filter(a=>o.indexOf(a)!==-1),n={...e,...t};for(let a of r){let s=vre(e[a],t[a]);if(!s.valid)return{valid:!1,mergeErrorPath:[a,...s.mergeErrorPath]};n[a]=s.data}return{valid:!0,data:n}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let o=[];for(let r=0;rl.l&&l.r).map(([l])=>l);if(a.length&&n&&e.issues.push({...n,keys:a}),u0(e))return e;let s=vre(t.value,o.value);if(!s.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(s.mergeErrorPath)}`);return e.value=s.data,e}function gO(e,t,o){e.issues.length&&t.issues.push(...rc(o,e.issues)),t.value[o]=e.value}function Cze(e,t,o,r,n,a,s){e.issues.length&&(XA.has(typeof r)?o.issues.push(...rc(r,e.issues)):o.issues.push({code:"invalid_key",origin:"map",input:n,inst:a,issues:e.issues.map(l=>Nl(l,s,Xr()))})),t.issues.length&&(XA.has(typeof r)?o.issues.push(...rc(r,t.issues)):o.issues.push({origin:"map",code:"invalid_element",input:n,inst:a,key:r,issues:t.issues.map(l=>Nl(l,s,Xr()))})),o.value.set(e.value,t.value)}function Tze(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}function Ize(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}function Eze(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}function Dze(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}function hO(e,t,o){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},o)}function xO(e,t,o){if(e.issues.length)return e.aborted=!0,e;if((o.direction||"forward")==="forward"){let n=t.transform(e.value,e);return n instanceof Promise?n.then(a=>vO(e,a,t.out,o)):vO(e,n,t.out,o)}else{let n=t.reverseTransform(e.value,e);return n instanceof Promise?n.then(a=>vO(e,a,t.in,o)):vO(e,n,t.in,o)}}function vO(e,t,o,r){return e.issues.length?(e.aborted=!0,e):o._zod.run({value:t,issues:e.issues},r)}function Pze(e){return e.value=Object.freeze(e.value),e}function Mze(e,t,o,r){if(!e){let n={code:"custom",input:o,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(n.params=r._zod.def.params),t.issues.push(a2(n))}}var ro,_x,Rn,yre,bre,Sre,wre,Are,kre,Cre,Tre,Ire,Ere,Dre,Pre,Mre,Nre,Bre,Rre,Lre,Ore,Fre,_re,zre,$re,Gre,Hre,jre,bO,qre,s6,SO,Wre,Kre,Qre,Zre,Yre,Jre,Xre,Vre,eie,tie,Oze,oie,l6,nie,rie,iie,wO,aie,sie,lie,cie,uie,die,pie,AO,mie,fie,gie,hie,xie,vie,yie,bie,Sie,c6,wie,Aie,kie,Cie,Tie,Iie,Eie=h(()=>{d();fO();n2();gre();wne();dO();$t();xre();$t();ro=fe("$ZodType",(e,t)=>{var o;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=hre;let r=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&r.unshift(e);for(let n of r)for(let a of n._zod.onattach)a(e);if(r.length===0)(o=e._zod).deferred??(o.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let n=(s,l,c)=>{let u=u0(s),p;for(let m of l){if(m._zod.def.when){if(!m._zod.def.when(s))continue}else if(u)continue;let g=s.issues.length,x=m._zod.check(s);if(x instanceof Promise&&c?.async===!1)throw new Gu;if(p||x instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await x,s.issues.length!==g&&(u||(u=u0(s,g)))});else{if(s.issues.length===g)continue;u||(u=u0(s,g))}}return p?p.then(()=>s):s},a=(s,l,c)=>{if(u0(s))return s.aborted=!0,s;let u=n(l,r,c);if(u instanceof Promise){if(c.async===!1)throw new Gu;return u.then(p=>e._zod.parse(p,c))}return e._zod.parse(u,c)};e._zod.run=(s,l)=>{if(l.skipChecks)return e._zod.parse(s,l);if(l.direction==="backward"){let u=e._zod.parse({value:s.value,issues:[]},{...l,skipChecks:!0});return u instanceof Promise?u.then(p=>a(p,s,l)):a(u,s,l)}let c=e._zod.parse(s,l);if(c instanceof Promise){if(l.async===!1)throw new Gu;return c.then(u=>n(u,r,l))}return n(c,r,l)}}wo(e,"~standard",()=>({validate:n=>{try{let a=bne(e,n);return a.success?{value:a.data}:{issues:a.error?.issues}}catch{return Sne(e,n).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),_x=fe("$ZodString",(e,t)=>{ro.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Hne(e._zod.bag),e._zod.parse=(o,r)=>{if(t.coerce)try{o.value=String(o.value)}catch{}return typeof o.value=="string"||o.issues.push({expected:"string",code:"invalid_type",input:o.value,inst:e}),o}}),Rn=fe("$ZodStringFormat",(e,t)=>{d2.init(e,t),_x.init(e,t)}),yre=fe("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Pne),Rn.init(e,t)}),bre=fe("$ZodUUID",(e,t)=>{if(t.version){let r={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(r===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Fx(r))}else t.pattern??(t.pattern=Fx());Rn.init(e,t)}),Sre=fe("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Mne),Rn.init(e,t)}),wre=fe("$ZodURL",(e,t)=>{Rn.init(e,t),e._zod.check=o=>{try{let r=o.value.trim(),n=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(n.hostname)||o.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:o.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)||o.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:o.value,inst:e,continue:!t.abort})),t.normalize?o.value=n.href:o.value=r;return}catch{o.issues.push({code:"invalid_format",format:"url",input:o.value,inst:e,continue:!t.abort})}}}),Are=fe("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Nne()),Rn.init(e,t)}),kre=fe("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Ene),Rn.init(e,t)}),Cre=fe("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Ane),Rn.init(e,t)}),Tre=fe("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=kne),Rn.init(e,t)}),Ire=fe("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Cne),Rn.init(e,t)}),Ere=fe("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Tne),Rn.init(e,t)}),Dre=fe("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Ine),Rn.init(e,t)}),Pre=fe("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Gne(t)),Rn.init(e,t)}),Mre=fe("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=zne),Rn.init(e,t)}),Nre=fe("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=$ne(t)),Rn.init(e,t)}),Bre=fe("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Dne),Rn.init(e,t)}),Rre=fe("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Bne),Rn.init(e,t),e._zod.bag.format="ipv4"}),Lre=fe("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Rne),Rn.init(e,t),e._zod.bag.format="ipv6",e._zod.check=o=>{try{new URL(`http://[${o.value}]`)}catch{o.issues.push({code:"invalid_format",format:"ipv6",input:o.value,inst:e,continue:!t.abort})}}}),Ore=fe("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=Lne(t.delimiter)),Rn.init(e,t),e._zod.bag.format="mac"}),Fre=fe("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=One),Rn.init(e,t)}),_re=fe("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Fne),Rn.init(e,t),e._zod.check=o=>{let r=o.value.split("/");try{if(r.length!==2)throw new Error;let[n,a]=r;if(!a)throw new Error;let s=Number(a);if(`${s}`!==a)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${n}]`)}catch{o.issues.push({code:"invalid_format",format:"cidrv6",input:o.value,inst:e,continue:!t.abort})}}});zre=fe("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=_ne),Rn.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=o=>{Ure(o.value)||o.issues.push({code:"invalid_format",format:"base64",input:o.value,inst:e,continue:!t.abort})}});$re=fe("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=cO),Rn.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=o=>{Nze(o.value)||o.issues.push({code:"invalid_format",format:"base64url",input:o.value,inst:e,continue:!t.abort})}}),Gre=fe("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Une),Rn.init(e,t)});Hre=fe("$ZodJWT",(e,t)=>{Rn.init(e,t),e._zod.check=o=>{Bze(o.value,t.alg)||o.issues.push({code:"invalid_format",format:"jwt",input:o.value,inst:e,continue:!t.abort})}}),jre=fe("$ZodCustomStringFormat",(e,t)=>{Rn.init(e,t),e._zod.check=o=>{t.fn(o.value)||o.issues.push({code:"invalid_format",format:t.format,input:o.value,inst:e,continue:!t.abort})}}),bO=fe("$ZodNumber",(e,t)=>{ro.init(e,t),e._zod.pattern=e._zod.bag.pattern??uO,e._zod.parse=(o,r)=>{if(t.coerce)try{o.value=Number(o.value)}catch{}let n=o.value;if(typeof n=="number"&&!Number.isNaN(n)&&Number.isFinite(n))return o;let a=typeof n=="number"?Number.isNaN(n)?"NaN":Number.isFinite(n)?void 0:"Infinity":void 0;return o.issues.push({expected:"number",code:"invalid_type",input:n,inst:e,...a?{received:a}:{}}),o}}),qre=fe("$ZodNumberFormat",(e,t)=>{Xne.init(e,t),bO.init(e,t)}),s6=fe("$ZodBoolean",(e,t)=>{ro.init(e,t),e._zod.pattern=Wne,e._zod.parse=(o,r)=>{if(t.coerce)try{o.value=!!o.value}catch{}let n=o.value;return typeof n=="boolean"||o.issues.push({expected:"boolean",code:"invalid_type",input:n,inst:e}),o}}),SO=fe("$ZodBigInt",(e,t)=>{ro.init(e,t),e._zod.pattern=jne,e._zod.parse=(o,r)=>{if(t.coerce)try{o.value=BigInt(o.value)}catch{}return typeof o.value=="bigint"||o.issues.push({expected:"bigint",code:"invalid_type",input:o.value,inst:e}),o}}),Wre=fe("$ZodBigIntFormat",(e,t)=>{Vne.init(e,t),SO.init(e,t)}),Kre=fe("$ZodSymbol",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{let n=o.value;return typeof n=="symbol"||o.issues.push({expected:"symbol",code:"invalid_type",input:n,inst:e}),o}}),Qre=fe("$ZodUndefined",(e,t)=>{ro.init(e,t),e._zod.pattern=Qne,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(o,r)=>{let n=o.value;return typeof n>"u"||o.issues.push({expected:"undefined",code:"invalid_type",input:n,inst:e}),o}}),Zre=fe("$ZodNull",(e,t)=>{ro.init(e,t),e._zod.pattern=Kne,e._zod.values=new Set([null]),e._zod.parse=(o,r)=>{let n=o.value;return n===null||o.issues.push({expected:"null",code:"invalid_type",input:n,inst:e}),o}}),Yre=fe("$ZodAny",(e,t)=>{ro.init(e,t),e._zod.parse=o=>o}),Jre=fe("$ZodUnknown",(e,t)=>{ro.init(e,t),e._zod.parse=o=>o}),Xre=fe("$ZodNever",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>(o.issues.push({expected:"never",code:"invalid_type",input:o.value,inst:e}),o)}),Vre=fe("$ZodVoid",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{let n=o.value;return typeof n>"u"||o.issues.push({expected:"void",code:"invalid_type",input:n,inst:e}),o}}),eie=fe("$ZodDate",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{if(t.coerce)try{o.value=new Date(o.value)}catch{}let n=o.value,a=n instanceof Date;return a&&!Number.isNaN(n.getTime())||o.issues.push({expected:"date",code:"invalid_type",input:n,...a?{received:"Invalid Date"}:{},inst:e}),o}});tie=fe("$ZodArray",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{let n=o.value;if(!Array.isArray(n))return o.issues.push({expected:"array",code:"invalid_type",input:n,inst:e}),o;o.value=Array(n.length);let a=[];for(let s=0;sSze(u,o,s))):Sze(c,o,s)}return a.length?Promise.all(a).then(()=>o):o}});Oze=fe("$ZodObject",(e,t)=>{if(ro.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){let l=t.shape;Object.defineProperty(t,"shape",{get:()=>{let c={...l};return Object.defineProperty(t,"shape",{value:c}),c}})}let r=i2(()=>Rze(t));wo(e._zod,"propValues",()=>{let l=t.shape,c={};for(let u in l){let p=l[u]._zod;if(p.values){c[u]??(c[u]=new Set);for(let m of p.values)c[u].add(m)}}return c});let n=Ox,a=t.catchall,s;e._zod.parse=(l,c)=>{s??(s=r.value);let u=l.value;if(!n(u))return l.issues.push({expected:"object",code:"invalid_type",input:u,inst:e}),l;l.value={};let p=[],m=s.shape;for(let g of s.keys){let x=m[g],v=x._zod.optout==="optional",y=x._zod.run({value:u[g],issues:[]},c);y instanceof Promise?p.push(y.then(A=>yO(A,l,g,u,v))):yO(y,l,g,u,v)}return a?Lze(p,u,l,c,r.value,e):p.length?Promise.all(p).then(()=>l):l}}),oie=fe("$ZodObjectJIT",(e,t)=>{Oze.init(e,t);let o=e._zod.parse,r=i2(()=>Rze(t)),n=g=>{let x=new a6(["shape","payload","ctx"]),v=r.value,y=I=>{let E=JL(I);return`shape[${E}]._zod.run({ value: input[${E}], issues: [] }, ctx)`};x.write("const input = payload.value;");let A=Object.create(null),k=0;for(let I of v.keys)A[I]=`key_${k++}`;x.write("const newResult = {};");for(let I of v.keys){let E=A[I],N=JL(I),_=g[I]?._zod?.optout==="optional";x.write(`const ${E} = ${y(I)};`),_?x.write(` if (${E}.issues.length) { if (${N} in input) { payload.issues = payload.issues.concat(${E}.issues.map(iss => ({ ...iss, path: iss.path ? [${N}, ...iss.path] : [${N}] }))); } } if (${E}.value === undefined) { if (${N} in input) { newResult[${N}] = undefined; } } else { newResult[${N}] = ${E}.value; } `):x.write(` if (${E}.issues.length) { payload.issues = payload.issues.concat(${E}.issues.map(iss => ({ ...iss, path: iss.path ? [${N}, ...iss.path] : [${N}] }))); } if (${E}.value === undefined) { if (${N} in input) { newResult[${N}] = undefined; } } else { newResult[${N}] = ${E}.value; } `)}x.write("payload.value = newResult;"),x.write("return payload;");let w=x.compile();return(I,E)=>w(g,I,E)},a,s=Ox,l=!QA.jitless,u=l&&dne.value,p=t.catchall,m;e._zod.parse=(g,x)=>{m??(m=r.value);let v=g.value;return s(v)?l&&u&&x?.async===!1&&x.jitless!==!0?(a||(a=n(t.shape)),g=a(g,x),p?Lze([],v,g,x,m,e):g):o(g,x):(g.issues.push({expected:"object",code:"invalid_type",input:v,inst:e}),g)}});l6=fe("$ZodUnion",(e,t)=>{ro.init(e,t),wo(e._zod,"optin",()=>t.options.some(n=>n._zod.optin==="optional")?"optional":void 0),wo(e._zod,"optout",()=>t.options.some(n=>n._zod.optout==="optional")?"optional":void 0),wo(e._zod,"values",()=>{if(t.options.every(n=>n._zod.values))return new Set(t.options.flatMap(n=>Array.from(n._zod.values)))}),wo(e._zod,"pattern",()=>{if(t.options.every(n=>n._zod.pattern)){let n=t.options.map(a=>a._zod.pattern);return new RegExp(`^(${n.map(a=>JA(a.source)).join("|")})$`)}});let o=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(n,a)=>{if(o)return r(n,a);let s=!1,l=[];for(let c of t.options){let u=c._zod.run({value:n.value,issues:[]},a);if(u instanceof Promise)l.push(u),s=!0;else{if(u.issues.length===0)return u;l.push(u)}}return s?Promise.all(l).then(c=>wze(c,n,e,a)):wze(l,n,e,a)}});nie=fe("$ZodXor",(e,t)=>{l6.init(e,t),t.inclusive=!1;let o=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(n,a)=>{if(o)return r(n,a);let s=!1,l=[];for(let c of t.options){let u=c._zod.run({value:n.value,issues:[]},a);u instanceof Promise?(l.push(u),s=!0):l.push(u)}return s?Promise.all(l).then(c=>Aze(c,n,e,a)):Aze(l,n,e,a)}}),rie=fe("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,l6.init(e,t);let o=e._zod.parse;wo(e._zod,"propValues",()=>{let n={};for(let a of t.options){let s=a._zod.propValues;if(!s||Object.keys(s).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(a)}"`);for(let[l,c]of Object.entries(s)){n[l]||(n[l]=new Set);for(let u of c)n[l].add(u)}}return n});let r=i2(()=>{let n=t.options,a=new Map;for(let s of n){let l=s._zod.propValues?.[t.discriminator];if(!l||l.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(let c of l){if(a.has(c))throw new Error(`Duplicate discriminator value "${String(c)}"`);a.set(c,s)}}return a});e._zod.parse=(n,a)=>{let s=n.value;if(!Ox(s))return n.issues.push({code:"invalid_type",expected:"object",input:s,inst:e}),n;let l=r.value.get(s?.[t.discriminator]);return l?l._zod.run(n,a):t.unionFallback?o(n,a):(n.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:s,path:[t.discriminator],inst:e}),n)}}),iie=fe("$ZodIntersection",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{let n=o.value,a=t.left._zod.run({value:n,issues:[]},r),s=t.right._zod.run({value:n,issues:[]},r);return a instanceof Promise||s instanceof Promise?Promise.all([a,s]).then(([c,u])=>kze(o,c,u)):kze(o,a,s)}});wO=fe("$ZodTuple",(e,t)=>{ro.init(e,t);let o=t.items;e._zod.parse=(r,n)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({input:a,inst:e,expected:"tuple",code:"invalid_type"}),r;r.value=[];let s=[],l=[...o].reverse().findIndex(p=>p._zod.optin!=="optional"),c=l===-1?0:o.length-l;if(!t.rest){let p=a.length>o.length,m=a.length=a.length&&u>=c)continue;let m=p._zod.run({value:a[u],issues:[]},n);m instanceof Promise?s.push(m.then(g=>gO(g,r,u))):gO(m,r,u)}if(t.rest){let p=a.slice(o.length);for(let m of p){u++;let g=t.rest._zod.run({value:m,issues:[]},n);g instanceof Promise?s.push(g.then(x=>gO(x,r,u))):gO(g,r,u)}}return s.length?Promise.all(s).then(()=>r):r}});aie=fe("$ZodRecord",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{let n=o.value;if(!c0(n))return o.issues.push({expected:"record",code:"invalid_type",input:n,inst:e}),o;let a=[],s=t.keyType._zod.values;if(s){o.value={};let l=new Set;for(let u of s)if(typeof u=="string"||typeof u=="number"||typeof u=="symbol"){l.add(typeof u=="number"?u.toString():u);let p=t.valueType._zod.run({value:n[u],issues:[]},r);p instanceof Promise?a.push(p.then(m=>{m.issues.length&&o.issues.push(...rc(u,m.issues)),o.value[u]=m.value})):(p.issues.length&&o.issues.push(...rc(u,p.issues)),o.value[u]=p.value)}let c;for(let u in n)l.has(u)||(c=c??[],c.push(u));c&&c.length>0&&o.issues.push({code:"unrecognized_keys",input:n,inst:e,keys:c})}else{o.value={};for(let l of Reflect.ownKeys(n)){if(l==="__proto__")continue;let c=t.keyType._zod.run({value:l,issues:[]},r);if(c instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof l=="string"&&uO.test(l)&&c.issues.length){let m=t.keyType._zod.run({value:Number(l),issues:[]},r);if(m instanceof Promise)throw new Error("Async schemas not supported in object keys currently");m.issues.length===0&&(c=m)}if(c.issues.length){t.mode==="loose"?o.value[l]=n[l]:o.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map(m=>Nl(m,r,Xr())),input:l,path:[l],inst:e});continue}let p=t.valueType._zod.run({value:n[l],issues:[]},r);p instanceof Promise?a.push(p.then(m=>{m.issues.length&&o.issues.push(...rc(l,m.issues)),o.value[c.value]=m.value})):(p.issues.length&&o.issues.push(...rc(l,p.issues)),o.value[c.value]=p.value)}}return a.length?Promise.all(a).then(()=>o):o}}),sie=fe("$ZodMap",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{let n=o.value;if(!(n instanceof Map))return o.issues.push({expected:"map",code:"invalid_type",input:n,inst:e}),o;let a=[];o.value=new Map;for(let[s,l]of n){let c=t.keyType._zod.run({value:s,issues:[]},r),u=t.valueType._zod.run({value:l,issues:[]},r);c instanceof Promise||u instanceof Promise?a.push(Promise.all([c,u]).then(([p,m])=>{Cze(p,m,o,s,n,e,r)})):Cze(c,u,o,s,n,e,r)}return a.length?Promise.all(a).then(()=>o):o}});lie=fe("$ZodSet",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{let n=o.value;if(!(n instanceof Set))return o.issues.push({input:n,inst:e,expected:"set",code:"invalid_type"}),o;let a=[];o.value=new Set;for(let s of n){let l=t.valueType._zod.run({value:s,issues:[]},r);l instanceof Promise?a.push(l.then(c=>Tze(c,o))):Tze(l,o)}return a.length?Promise.all(a).then(()=>o):o}});cie=fe("$ZodEnum",(e,t)=>{ro.init(e,t);let o=YA(t.entries),r=new Set(o);e._zod.values=r,e._zod.pattern=new RegExp(`^(${o.filter(n=>XA.has(typeof n)).map(n=>typeof n=="string"?qc(n):n.toString()).join("|")})$`),e._zod.parse=(n,a)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:o,input:s,inst:e}),n}}),uie=fe("$ZodLiteral",(e,t)=>{if(ro.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");let o=new Set(t.values);e._zod.values=o,e._zod.pattern=new RegExp(`^(${t.values.map(r=>typeof r=="string"?qc(r):r?qc(r.toString()):String(r)).join("|")})$`),e._zod.parse=(r,n)=>{let a=r.value;return o.has(a)||r.issues.push({code:"invalid_value",values:t.values,input:a,inst:e}),r}}),die=fe("$ZodFile",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{let n=o.value;return n instanceof File||o.issues.push({expected:"file",code:"invalid_type",input:n,inst:e}),o}}),pie=fe("$ZodTransform",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{if(r.direction==="backward")throw new a0(e.constructor.name);let n=t.transform(o.value,o);if(r.async)return(n instanceof Promise?n:Promise.resolve(n)).then(s=>(o.value=s,o));if(n instanceof Promise)throw new Gu;return o.value=n,o}});AO=fe("$ZodOptional",(e,t)=>{ro.init(e,t),e._zod.optin="optional",e._zod.optout="optional",wo(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),wo(e._zod,"pattern",()=>{let o=t.innerType._zod.pattern;return o?new RegExp(`^(${JA(o.source)})?$`):void 0}),e._zod.parse=(o,r)=>{if(t.innerType._zod.optin==="optional"){let n=t.innerType._zod.run(o,r);return n instanceof Promise?n.then(a=>Ize(a,o.value)):Ize(n,o.value)}return o.value===void 0?o:t.innerType._zod.run(o,r)}}),mie=fe("$ZodExactOptional",(e,t)=>{AO.init(e,t),wo(e._zod,"values",()=>t.innerType._zod.values),wo(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(o,r)=>t.innerType._zod.run(o,r)}),fie=fe("$ZodNullable",(e,t)=>{ro.init(e,t),wo(e._zod,"optin",()=>t.innerType._zod.optin),wo(e._zod,"optout",()=>t.innerType._zod.optout),wo(e._zod,"pattern",()=>{let o=t.innerType._zod.pattern;return o?new RegExp(`^(${JA(o.source)}|null)$`):void 0}),wo(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(o,r)=>o.value===null?o:t.innerType._zod.run(o,r)}),gie=fe("$ZodDefault",(e,t)=>{ro.init(e,t),e._zod.optin="optional",wo(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(o,r)=>{if(r.direction==="backward")return t.innerType._zod.run(o,r);if(o.value===void 0)return o.value=t.defaultValue,o;let n=t.innerType._zod.run(o,r);return n instanceof Promise?n.then(a=>Eze(a,t)):Eze(n,t)}});hie=fe("$ZodPrefault",(e,t)=>{ro.init(e,t),e._zod.optin="optional",wo(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(o,r)=>(r.direction==="backward"||o.value===void 0&&(o.value=t.defaultValue),t.innerType._zod.run(o,r))}),xie=fe("$ZodNonOptional",(e,t)=>{ro.init(e,t),wo(e._zod,"values",()=>{let o=t.innerType._zod.values;return o?new Set([...o].filter(r=>r!==void 0)):void 0}),e._zod.parse=(o,r)=>{let n=t.innerType._zod.run(o,r);return n instanceof Promise?n.then(a=>Dze(a,e)):Dze(n,e)}});vie=fe("$ZodSuccess",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>{if(r.direction==="backward")throw new a0("ZodSuccess");let n=t.innerType._zod.run(o,r);return n instanceof Promise?n.then(a=>(o.value=a.issues.length===0,o)):(o.value=n.issues.length===0,o)}}),yie=fe("$ZodCatch",(e,t)=>{ro.init(e,t),wo(e._zod,"optin",()=>t.innerType._zod.optin),wo(e._zod,"optout",()=>t.innerType._zod.optout),wo(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(o,r)=>{if(r.direction==="backward")return t.innerType._zod.run(o,r);let n=t.innerType._zod.run(o,r);return n instanceof Promise?n.then(a=>(o.value=a.value,a.issues.length&&(o.value=t.catchValue({...o,error:{issues:a.issues.map(s=>Nl(s,r,Xr()))},input:o.value}),o.issues=[]),o)):(o.value=n.value,n.issues.length&&(o.value=t.catchValue({...o,error:{issues:n.issues.map(a=>Nl(a,r,Xr()))},input:o.value}),o.issues=[]),o)}}),bie=fe("$ZodNaN",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>((typeof o.value!="number"||!Number.isNaN(o.value))&&o.issues.push({input:o.value,inst:e,expected:"nan",code:"invalid_type"}),o)}),Sie=fe("$ZodPipe",(e,t)=>{ro.init(e,t),wo(e._zod,"values",()=>t.in._zod.values),wo(e._zod,"optin",()=>t.in._zod.optin),wo(e._zod,"optout",()=>t.out._zod.optout),wo(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(o,r)=>{if(r.direction==="backward"){let a=t.out._zod.run(o,r);return a instanceof Promise?a.then(s=>hO(s,t.in,r)):hO(a,t.in,r)}let n=t.in._zod.run(o,r);return n instanceof Promise?n.then(a=>hO(a,t.out,r)):hO(n,t.out,r)}});c6=fe("$ZodCodec",(e,t)=>{ro.init(e,t),wo(e._zod,"values",()=>t.in._zod.values),wo(e._zod,"optin",()=>t.in._zod.optin),wo(e._zod,"optout",()=>t.out._zod.optout),wo(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(o,r)=>{if((r.direction||"forward")==="forward"){let a=t.in._zod.run(o,r);return a instanceof Promise?a.then(s=>xO(s,t,r)):xO(a,t,r)}else{let a=t.out._zod.run(o,r);return a instanceof Promise?a.then(s=>xO(s,t,r)):xO(a,t,r)}}});wie=fe("$ZodReadonly",(e,t)=>{ro.init(e,t),wo(e._zod,"propValues",()=>t.innerType._zod.propValues),wo(e._zod,"values",()=>t.innerType._zod.values),wo(e._zod,"optin",()=>t.innerType?._zod?.optin),wo(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(o,r)=>{if(r.direction==="backward")return t.innerType._zod.run(o,r);let n=t.innerType._zod.run(o,r);return n instanceof Promise?n.then(Pze):Pze(n)}});Aie=fe("$ZodTemplateLiteral",(e,t)=>{ro.init(e,t);let o=[];for(let r of t.parts)if(typeof r=="object"&&r!==null){if(!r._zod.pattern)throw new Error(`Invalid template literal part, no pattern found: ${[...r._zod.traits].shift()}`);let n=r._zod.pattern instanceof RegExp?r._zod.pattern.source:r._zod.pattern;if(!n)throw new Error(`Invalid template literal part: ${r._zod.traits}`);let a=n.startsWith("^")?1:0,s=n.endsWith("$")?n.length-1:n.length;o.push(n.slice(a,s))}else if(r===null||mne.has(typeof r))o.push(qc(`${r}`));else throw new Error(`Invalid template literal part: ${r}`);e._zod.pattern=new RegExp(`^${o.join("")}$`),e._zod.parse=(r,n)=>typeof r.value!="string"?(r.issues.push({input:r.value,inst:e,expected:"string",code:"invalid_type"}),r):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(r.value)||r.issues.push({input:r.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source}),r)}),kie=fe("$ZodFunction",(e,t)=>(ro.init(e,t),e._def=t,e._zod.def=t,e.implement=o=>{if(typeof o!="function")throw new Error("implement() must be called with a function");return function(...r){let n=e._def.input?VL(e._def.input,r):r,a=Reflect.apply(o,this,n);return e._def.output?VL(e._def.output,a):a}},e.implementAsync=o=>{if(typeof o!="function")throw new Error("implementAsync() must be called with a function");return async function(...r){let n=e._def.input?await eO(e._def.input,r):r,a=await Reflect.apply(o,this,n);return e._def.output?await eO(e._def.output,a):a}},e._zod.parse=(o,r)=>typeof o.value!="function"?(o.issues.push({code:"invalid_type",expected:"function",input:o.value,inst:e}),o):(e._def.output&&e._def.output._zod.def.type==="promise"?o.value=e.implementAsync(o.value):o.value=e.implement(o.value),o),e.input=(...o)=>{let r=e.constructor;return Array.isArray(o[0])?new r({type:"function",input:new wO({type:"tuple",items:o[0],rest:o[1]}),output:e._def.output}):new r({type:"function",input:o[0],output:e._def.output})},e.output=o=>{let r=e.constructor;return new r({type:"function",input:e._def.input,output:o})},e)),Cie=fe("$ZodPromise",(e,t)=>{ro.init(e,t),e._zod.parse=(o,r)=>Promise.resolve(o.value).then(n=>t.innerType._zod.run({value:n,issues:[]},r))}),Tie=fe("$ZodLazy",(e,t)=>{ro.init(e,t),wo(e._zod,"innerType",()=>t.getter()),wo(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),wo(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),wo(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),wo(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(o,r)=>e._zod.innerType._zod.run(o,r)}),Iie=fe("$ZodCustom",(e,t)=>{Hn.init(e,t),ro.init(e,t),e._zod.parse=(o,r)=>o,e._zod.check=o=>{let r=o.value,n=t.fn(r);if(n instanceof Promise)return n.then(a=>Mze(a,o,r,e));Mze(n,o,r,e)}})});function Fze(){return{localeError:LAt()}}var LAt,_ze=h(()=>{d();$t();LAt=()=>{let e={string:{unit:"\u062D\u0631\u0641",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},file:{unit:"\u0628\u0627\u064A\u062A",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},array:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},set:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"}};function t(n){return e[n]??null}let o={regex:"\u0645\u062F\u062E\u0644",email:"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",url:"\u0631\u0627\u0628\u0637",emoji:"\u0625\u064A\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",date:"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO",time:"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",duration:"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO",ipv4:"\u0639\u0646\u0648\u0627\u0646 IPv4",ipv6:"\u0639\u0646\u0648\u0627\u0646 IPv6",cidrv4:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4",cidrv6:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6",base64:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded",base64url:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded",json_string:"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON",e164:"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164",jwt:"JWT",template_literal:"\u0645\u062F\u062E\u0644"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${n.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${l}`:`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${a}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${l}`}case"invalid_value":return n.values.length===1?`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${Ke(n.values[0])}`:`\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${n.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${a} ${n.maximum.toString()} ${s.unit??"\u0639\u0646\u0635\u0631"}`:`\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${n.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${a} ${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${n.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${a} ${n.minimum.toString()} ${s.unit}`:`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${n.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${a} ${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${n.prefix}"`:a.format==="ends_with"?`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${a.suffix}"`:a.format==="includes"?`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${a.includes}"`:a.format==="regex"?`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${a.pattern}`:`${o[a.format]??n.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`}case"not_multiple_of":return`\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${n.divisor}`;case"unrecognized_keys":return`\u0645\u0639\u0631\u0641${n.keys.length>1?"\u0627\u062A":""} \u063A\u0631\u064A\u0628${n.keys.length>1?"\u0629":""}: ${Ce(n.keys,"\u060C ")}`;case"invalid_key":return`\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${n.origin}`;case"invalid_union":return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644";case"invalid_element":return`\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${n.origin}`;default:return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"}}}});function Uze(){return{localeError:OAt()}}var OAt,zze=h(()=>{d();$t();OAt=()=>{let e={string:{unit:"simvol",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"element",verb:"olmal\u0131d\u0131r"},set:{unit:"element",verb:"olmal\u0131d\u0131r"}};function t(n){return e[n]??null}let o={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${n.expected}, daxil olan ${l}`:`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${a}, daxil olan ${l}`}case"invalid_value":return n.values.length===1?`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${Ke(n.values[0])}`:`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${n.origin??"d\u0259y\u0259r"} ${a}${n.maximum.toString()} ${s.unit??"element"}`:`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${n.origin??"d\u0259y\u0259r"} ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${n.origin} ${a}${n.minimum.toString()} ${s.unit}`:`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${n.origin} ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Yanl\u0131\u015F m\u0259tn: "${a.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`:a.format==="ends_with"?`Yanl\u0131\u015F m\u0259tn: "${a.suffix}" il\u0259 bitm\u0259lidir`:a.format==="includes"?`Yanl\u0131\u015F m\u0259tn: "${a.includes}" daxil olmal\u0131d\u0131r`:a.format==="regex"?`Yanl\u0131\u015F m\u0259tn: ${a.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`:`Yanl\u0131\u015F ${o[a.format]??n.format}`}case"not_multiple_of":return`Yanl\u0131\u015F \u0259d\u0259d: ${n.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`;case"unrecognized_keys":return`Tan\u0131nmayan a\xE7ar${n.keys.length>1?"lar":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`${n.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`;case"invalid_union":return"Yanl\u0131\u015F d\u0259y\u0259r";case"invalid_element":return`${n.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;default:return"Yanl\u0131\u015F d\u0259y\u0259r"}}}});function $ze(e,t,o,r){let n=Math.abs(e),a=n%10,s=n%100;return s>=11&&s<=19?r:a===1?t:a>=2&&a<=4?o:r}function Gze(){return{localeError:FAt()}}var FAt,Hze=h(()=>{d();$t();FAt=()=>{let e={string:{unit:{one:"\u0441\u0456\u043C\u0432\u0430\u043B",few:"\u0441\u0456\u043C\u0432\u0430\u043B\u044B",many:"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u044B",many:"\u0431\u0430\u0439\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"}};function t(n){return e[n]??null}let o={regex:"\u0443\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0430\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0447\u0430\u0441",duration:"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0430\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0430\u0441",cidrv4:"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",base64:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64",base64url:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url",json_string:"JSON \u0440\u0430\u0434\u043E\u043A",e164:"\u043D\u0443\u043C\u0430\u0440 E.164",jwt:"JWT",template_literal:"\u0443\u0432\u043E\u0434"},r={nan:"NaN",number:"\u043B\u0456\u043A",array:"\u043C\u0430\u0441\u0456\u045E"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${n.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${l}`:`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${a}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${l}`}case"invalid_value":return n.values.length===1?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${Ke(n.values[0])}`:`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);if(s){let l=Number(n.maximum),c=$ze(l,s.unit.one,s.unit.few,s.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${s.verb} ${a}${n.maximum.toString()} ${c}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);if(s){let l=Number(n.minimum),c=$ze(l,s.unit.one,s.unit.few,s.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${n.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${s.verb} ${a}${n.minimum.toString()} ${c}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${n.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${a.prefix}"`:a.format==="ends_with"?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${a.suffix}"`:a.format==="includes"?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${a.includes}"`:a.format==="regex"?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${a.pattern}`:`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${o[a.format]??n.format}`}case"not_multiple_of":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${n.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${n.keys.length>1?"\u043A\u043B\u044E\u0447\u044B":"\u043A\u043B\u044E\u0447"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${n.origin}`;case"invalid_union":return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434";case"invalid_element":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${n.origin}`;default:return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434"}}}});function jze(){return{localeError:_At()}}var _At,qze=h(()=>{d();$t();_At=()=>{let e={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},file:{unit:"\u0431\u0430\u0439\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"}};function t(n){return e[n]??null}let o={regex:"\u0432\u0445\u043E\u0434",email:"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0436\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",base64url:"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",json_string:"JSON \u043D\u0438\u0437",e164:"E.164 \u043D\u043E\u043C\u0435\u0440",jwt:"JWT",template_literal:"\u0432\u0445\u043E\u0434"},r={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${n.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${l}`:`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${a}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${l}`}case"invalid_value":return n.values.length===1?`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${Ke(n.values[0])}`:`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${n.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${a}${n.maximum.toString()} ${s.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`:`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${n.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${n.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${a}${n.minimum.toString()} ${s.unit}`:`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${n.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;if(a.format==="starts_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${a.prefix}"`;if(a.format==="ends_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${a.suffix}"`;if(a.format==="includes")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${a.includes}"`;if(a.format==="regex")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${a.pattern}`;let s="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D";return a.format==="emoji"&&(s="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"),a.format==="datetime"&&(s="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"),a.format==="date"&&(s="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"),a.format==="time"&&(s="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"),a.format==="duration"&&(s="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"),`${s} ${o[a.format]??n.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${n.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${n.keys.length>1?"\u0438":""} \u043A\u043B\u044E\u0447${n.keys.length>1?"\u043E\u0432\u0435":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${n.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434";case"invalid_element":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${n.origin}`;default:return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434"}}}});function Wze(){return{localeError:UAt()}}var UAt,Kze=h(()=>{d();$t();UAt=()=>{let e={string:{unit:"car\xE0cters",verb:"contenir"},file:{unit:"bytes",verb:"contenir"},array:{unit:"elements",verb:"contenir"},set:{unit:"elements",verb:"contenir"}};function t(n){return e[n]??null}let o={regex:"entrada",email:"adre\xE7a electr\xF2nica",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i hora ISO",date:"data ISO",time:"hora ISO",duration:"durada ISO",ipv4:"adre\xE7a IPv4",ipv6:"adre\xE7a IPv6",cidrv4:"rang IPv4",cidrv6:"rang IPv6",base64:"cadena codificada en base64",base64url:"cadena codificada en base64url",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Tipus inv\xE0lid: s'esperava instanceof ${n.expected}, s'ha rebut ${l}`:`Tipus inv\xE0lid: s'esperava ${a}, s'ha rebut ${l}`}case"invalid_value":return n.values.length===1?`Valor inv\xE0lid: s'esperava ${Ke(n.values[0])}`:`Opci\xF3 inv\xE0lida: s'esperava una de ${Ce(n.values," o ")}`;case"too_big":{let a=n.inclusive?"com a m\xE0xim":"menys de",s=t(n.origin);return s?`Massa gran: s'esperava que ${n.origin??"el valor"} contingu\xE9s ${a} ${n.maximum.toString()} ${s.unit??"elements"}`:`Massa gran: s'esperava que ${n.origin??"el valor"} fos ${a} ${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?"com a m\xEDnim":"m\xE9s de",s=t(n.origin);return s?`Massa petit: s'esperava que ${n.origin} contingu\xE9s ${a} ${n.minimum.toString()} ${s.unit}`:`Massa petit: s'esperava que ${n.origin} fos ${a} ${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Format inv\xE0lid: ha de comen\xE7ar amb "${a.prefix}"`:a.format==="ends_with"?`Format inv\xE0lid: ha d'acabar amb "${a.suffix}"`:a.format==="includes"?`Format inv\xE0lid: ha d'incloure "${a.includes}"`:a.format==="regex"?`Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${a.pattern}`:`Format inv\xE0lid per a ${o[a.format]??n.format}`}case"not_multiple_of":return`N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${n.divisor}`;case"unrecognized_keys":return`Clau${n.keys.length>1?"s":""} no reconeguda${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Clau inv\xE0lida a ${n.origin}`;case"invalid_union":return"Entrada inv\xE0lida";case"invalid_element":return`Element inv\xE0lid a ${n.origin}`;default:return"Entrada inv\xE0lida"}}}});function Qze(){return{localeError:zAt()}}var zAt,Zze=h(()=>{d();$t();zAt=()=>{let e={string:{unit:"znak\u016F",verb:"m\xEDt"},file:{unit:"bajt\u016F",verb:"m\xEDt"},array:{unit:"prvk\u016F",verb:"m\xEDt"},set:{unit:"prvk\u016F",verb:"m\xEDt"}};function t(n){return e[n]??null}let o={regex:"regul\xE1rn\xED v\xFDraz",email:"e-mailov\xE1 adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"datum a \u010Das ve form\xE1tu ISO",date:"datum ve form\xE1tu ISO",time:"\u010Das ve form\xE1tu ISO",duration:"doba trv\xE1n\xED ISO",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"rozsah IPv4",cidrv6:"rozsah IPv6",base64:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64",base64url:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url",json_string:"\u0159et\u011Bzec ve form\xE1tu JSON",e164:"\u010D\xEDslo E.164",jwt:"JWT",template_literal:"vstup"},r={nan:"NaN",number:"\u010D\xEDslo",string:"\u0159et\u011Bzec",function:"funkce",array:"pole"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${n.expected}, obdr\u017Eeno ${l}`:`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${a}, obdr\u017Eeno ${l}`}case"invalid_value":return n.values.length===1?`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${Ke(n.values[0])}`:`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${n.origin??"hodnota"} mus\xED m\xEDt ${a}${n.maximum.toString()} ${s.unit??"prvk\u016F"}`:`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${n.origin??"hodnota"} mus\xED b\xFDt ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${n.origin??"hodnota"} mus\xED m\xEDt ${a}${n.minimum.toString()} ${s.unit??"prvk\u016F"}`:`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${n.origin??"hodnota"} mus\xED b\xFDt ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${a.prefix}"`:a.format==="ends_with"?`Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${a.suffix}"`:a.format==="includes"?`Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${a.includes}"`:a.format==="regex"?`Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${a.pattern}`:`Neplatn\xFD form\xE1t ${o[a.format]??n.format}`}case"not_multiple_of":return`Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${n.divisor}`;case"unrecognized_keys":return`Nezn\xE1m\xE9 kl\xED\u010De: ${Ce(n.keys,", ")}`;case"invalid_key":return`Neplatn\xFD kl\xED\u010D v ${n.origin}`;case"invalid_union":return"Neplatn\xFD vstup";case"invalid_element":return`Neplatn\xE1 hodnota v ${n.origin}`;default:return"Neplatn\xFD vstup"}}}});function Yze(){return{localeError:$At()}}var $At,Jze=h(()=>{d();$t();$At=()=>{let e={string:{unit:"tegn",verb:"havde"},file:{unit:"bytes",verb:"havde"},array:{unit:"elementer",verb:"indeholdt"},set:{unit:"elementer",verb:"indeholdt"}};function t(n){return e[n]??null}let o={regex:"input",email:"e-mailadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkesl\xE6t",date:"ISO-dato",time:"ISO-klokkesl\xE6t",duration:"ISO-varighed",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodet streng",base64url:"base64url-kodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},r={nan:"NaN",string:"streng",number:"tal",boolean:"boolean",array:"liste",object:"objekt",set:"s\xE6t",file:"fil"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Ugyldigt input: forventede instanceof ${n.expected}, fik ${l}`:`Ugyldigt input: forventede ${a}, fik ${l}`}case"invalid_value":return n.values.length===1?`Ugyldig v\xE6rdi: forventede ${Ke(n.values[0])}`:`Ugyldigt valg: forventede en af f\xF8lgende ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin),l=r[n.origin]??n.origin;return s?`For stor: forventede ${l??"value"} ${s.verb} ${a} ${n.maximum.toString()} ${s.unit??"elementer"}`:`For stor: forventede ${l??"value"} havde ${a} ${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin),l=r[n.origin]??n.origin;return s?`For lille: forventede ${l} ${s.verb} ${a} ${n.minimum.toString()} ${s.unit}`:`For lille: forventede ${l} havde ${a} ${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Ugyldig streng: skal starte med "${a.prefix}"`:a.format==="ends_with"?`Ugyldig streng: skal ende med "${a.suffix}"`:a.format==="includes"?`Ugyldig streng: skal indeholde "${a.includes}"`:a.format==="regex"?`Ugyldig streng: skal matche m\xF8nsteret ${a.pattern}`:`Ugyldig ${o[a.format]??n.format}`}case"not_multiple_of":return`Ugyldigt tal: skal v\xE6re deleligt med ${n.divisor}`;case"unrecognized_keys":return`${n.keys.length>1?"Ukendte n\xF8gler":"Ukendt n\xF8gle"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8gle i ${n.origin}`;case"invalid_union":return"Ugyldigt input: matcher ingen af de tilladte typer";case"invalid_element":return`Ugyldig v\xE6rdi i ${n.origin}`;default:return"Ugyldigt input"}}}});function Xze(){return{localeError:GAt()}}var GAt,Vze=h(()=>{d();$t();GAt=()=>{let e={string:{unit:"Zeichen",verb:"zu haben"},file:{unit:"Bytes",verb:"zu haben"},array:{unit:"Elemente",verb:"zu haben"},set:{unit:"Elemente",verb:"zu haben"}};function t(n){return e[n]??null}let o={regex:"Eingabe",email:"E-Mail-Adresse",url:"URL",emoji:"Emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-Datum und -Uhrzeit",date:"ISO-Datum",time:"ISO-Uhrzeit",duration:"ISO-Dauer",ipv4:"IPv4-Adresse",ipv6:"IPv6-Adresse",cidrv4:"IPv4-Bereich",cidrv6:"IPv6-Bereich",base64:"Base64-codierter String",base64url:"Base64-URL-codierter String",json_string:"JSON-String",e164:"E.164-Nummer",jwt:"JWT",template_literal:"Eingabe"},r={nan:"NaN",number:"Zahl",array:"Array"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Ung\xFCltige Eingabe: erwartet instanceof ${n.expected}, erhalten ${l}`:`Ung\xFCltige Eingabe: erwartet ${a}, erhalten ${l}`}case"invalid_value":return n.values.length===1?`Ung\xFCltige Eingabe: erwartet ${Ke(n.values[0])}`:`Ung\xFCltige Option: erwartet eine von ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Zu gro\xDF: erwartet, dass ${n.origin??"Wert"} ${a}${n.maximum.toString()} ${s.unit??"Elemente"} hat`:`Zu gro\xDF: erwartet, dass ${n.origin??"Wert"} ${a}${n.maximum.toString()} ist`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Zu klein: erwartet, dass ${n.origin} ${a}${n.minimum.toString()} ${s.unit} hat`:`Zu klein: erwartet, dass ${n.origin} ${a}${n.minimum.toString()} ist`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Ung\xFCltiger String: muss mit "${a.prefix}" beginnen`:a.format==="ends_with"?`Ung\xFCltiger String: muss mit "${a.suffix}" enden`:a.format==="includes"?`Ung\xFCltiger String: muss "${a.includes}" enthalten`:a.format==="regex"?`Ung\xFCltiger String: muss dem Muster ${a.pattern} entsprechen`:`Ung\xFCltig: ${o[a.format]??n.format}`}case"not_multiple_of":return`Ung\xFCltige Zahl: muss ein Vielfaches von ${n.divisor} sein`;case"unrecognized_keys":return`${n.keys.length>1?"Unbekannte Schl\xFCssel":"Unbekannter Schl\xFCssel"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Ung\xFCltiger Schl\xFCssel in ${n.origin}`;case"invalid_union":return"Ung\xFCltige Eingabe";case"invalid_element":return`Ung\xFCltiger Wert in ${n.origin}`;default:return"Ung\xFCltige Eingabe"}}}});function kO(){return{localeError:HAt()}}var HAt,Die=h(()=>{d();$t();HAt=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(n){return e[n]??null}let o={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return`Invalid input: expected ${a}, received ${l}`}case"invalid_value":return n.values.length===1?`Invalid input: expected ${Ke(n.values[0])}`:`Invalid option: expected one of ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Too big: expected ${n.origin??"value"} to have ${a}${n.maximum.toString()} ${s.unit??"elements"}`:`Too big: expected ${n.origin??"value"} to be ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Too small: expected ${n.origin} to have ${a}${n.minimum.toString()} ${s.unit}`:`Too small: expected ${n.origin} to be ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Invalid string: must start with "${a.prefix}"`:a.format==="ends_with"?`Invalid string: must end with "${a.suffix}"`:a.format==="includes"?`Invalid string: must include "${a.includes}"`:a.format==="regex"?`Invalid string: must match pattern ${a.pattern}`:`Invalid ${o[a.format]??n.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${n.divisor}`;case"unrecognized_keys":return`Unrecognized key${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Invalid key in ${n.origin}`;case"invalid_union":return"Invalid input";case"invalid_element":return`Invalid value in ${n.origin}`;default:return"Invalid input"}}}});function e$e(){return{localeError:jAt()}}var jAt,t$e=h(()=>{d();$t();jAt=()=>{let e={string:{unit:"karaktrojn",verb:"havi"},file:{unit:"bajtojn",verb:"havi"},array:{unit:"elementojn",verb:"havi"},set:{unit:"elementojn",verb:"havi"}};function t(n){return e[n]??null}let o={regex:"enigo",email:"retadreso",url:"URL",emoji:"emo\u011Dio",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datotempo",date:"ISO-dato",time:"ISO-tempo",duration:"ISO-da\u016Dro",ipv4:"IPv4-adreso",ipv6:"IPv6-adreso",cidrv4:"IPv4-rango",cidrv6:"IPv6-rango",base64:"64-ume kodita karaktraro",base64url:"URL-64-ume kodita karaktraro",json_string:"JSON-karaktraro",e164:"E.164-nombro",jwt:"JWT",template_literal:"enigo"},r={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Nevalida enigo: atendi\u011Dis instanceof ${n.expected}, ricevi\u011Dis ${l}`:`Nevalida enigo: atendi\u011Dis ${a}, ricevi\u011Dis ${l}`}case"invalid_value":return n.values.length===1?`Nevalida enigo: atendi\u011Dis ${Ke(n.values[0])}`:`Nevalida opcio: atendi\u011Dis unu el ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Tro granda: atendi\u011Dis ke ${n.origin??"valoro"} havu ${a}${n.maximum.toString()} ${s.unit??"elementojn"}`:`Tro granda: atendi\u011Dis ke ${n.origin??"valoro"} havu ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Tro malgranda: atendi\u011Dis ke ${n.origin} havu ${a}${n.minimum.toString()} ${s.unit}`:`Tro malgranda: atendi\u011Dis ke ${n.origin} estu ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Nevalida karaktraro: devas komenci\u011Di per "${a.prefix}"`:a.format==="ends_with"?`Nevalida karaktraro: devas fini\u011Di per "${a.suffix}"`:a.format==="includes"?`Nevalida karaktraro: devas inkluzivi "${a.includes}"`:a.format==="regex"?`Nevalida karaktraro: devas kongrui kun la modelo ${a.pattern}`:`Nevalida ${o[a.format]??n.format}`}case"not_multiple_of":return`Nevalida nombro: devas esti oblo de ${n.divisor}`;case"unrecognized_keys":return`Nekonata${n.keys.length>1?"j":""} \u015Dlosilo${n.keys.length>1?"j":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Nevalida \u015Dlosilo en ${n.origin}`;case"invalid_union":return"Nevalida enigo";case"invalid_element":return`Nevalida valoro en ${n.origin}`;default:return"Nevalida enigo"}}}});function o$e(){return{localeError:qAt()}}var qAt,n$e=h(()=>{d();$t();qAt=()=>{let e={string:{unit:"caracteres",verb:"tener"},file:{unit:"bytes",verb:"tener"},array:{unit:"elementos",verb:"tener"},set:{unit:"elementos",verb:"tener"}};function t(n){return e[n]??null}let o={regex:"entrada",email:"direcci\xF3n de correo electr\xF3nico",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"fecha y hora ISO",date:"fecha ISO",time:"hora ISO",duration:"duraci\xF3n ISO",ipv4:"direcci\xF3n IPv4",ipv6:"direcci\xF3n IPv6",cidrv4:"rango IPv4",cidrv6:"rango IPv6",base64:"cadena codificada en base64",base64url:"URL codificada en base64",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},r={nan:"NaN",string:"texto",number:"n\xFAmero",boolean:"booleano",array:"arreglo",object:"objeto",set:"conjunto",file:"archivo",date:"fecha",bigint:"n\xFAmero grande",symbol:"s\xEDmbolo",undefined:"indefinido",null:"nulo",function:"funci\xF3n",map:"mapa",record:"registro",tuple:"tupla",enum:"enumeraci\xF3n",union:"uni\xF3n",literal:"literal",promise:"promesa",void:"vac\xEDo",never:"nunca",unknown:"desconocido",any:"cualquiera"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Entrada inv\xE1lida: se esperaba instanceof ${n.expected}, recibido ${l}`:`Entrada inv\xE1lida: se esperaba ${a}, recibido ${l}`}case"invalid_value":return n.values.length===1?`Entrada inv\xE1lida: se esperaba ${Ke(n.values[0])}`:`Opci\xF3n inv\xE1lida: se esperaba una de ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin),l=r[n.origin]??n.origin;return s?`Demasiado grande: se esperaba que ${l??"valor"} tuviera ${a}${n.maximum.toString()} ${s.unit??"elementos"}`:`Demasiado grande: se esperaba que ${l??"valor"} fuera ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin),l=r[n.origin]??n.origin;return s?`Demasiado peque\xF1o: se esperaba que ${l} tuviera ${a}${n.minimum.toString()} ${s.unit}`:`Demasiado peque\xF1o: se esperaba que ${l} fuera ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Cadena inv\xE1lida: debe comenzar con "${a.prefix}"`:a.format==="ends_with"?`Cadena inv\xE1lida: debe terminar en "${a.suffix}"`:a.format==="includes"?`Cadena inv\xE1lida: debe incluir "${a.includes}"`:a.format==="regex"?`Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${a.pattern}`:`Inv\xE1lido ${o[a.format]??n.format}`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${n.divisor}`;case"unrecognized_keys":return`Llave${n.keys.length>1?"s":""} desconocida${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Llave inv\xE1lida en ${r[n.origin]??n.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido en ${r[n.origin]??n.origin}`;default:return"Entrada inv\xE1lida"}}}});function r$e(){return{localeError:WAt()}}var WAt,i$e=h(()=>{d();$t();WAt=()=>{let e={string:{unit:"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},file:{unit:"\u0628\u0627\u06CC\u062A",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},array:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},set:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"}};function t(n){return e[n]??null}let o={regex:"\u0648\u0631\u0648\u062F\u06CC",email:"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644",url:"URL",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",date:"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648",time:"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",duration:"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",ipv4:"IPv4 \u0622\u062F\u0631\u0633",ipv6:"IPv6 \u0622\u062F\u0631\u0633",cidrv4:"IPv4 \u062F\u0627\u0645\u0646\u0647",cidrv6:"IPv6 \u062F\u0627\u0645\u0646\u0647",base64:"base64-encoded \u0631\u0634\u062A\u0647",base64url:"base64url-encoded \u0631\u0634\u062A\u0647",json_string:"JSON \u0631\u0634\u062A\u0647",e164:"E.164 \u0639\u062F\u062F",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u06CC"},r={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0622\u0631\u0627\u06CC\u0647"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${n.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${l} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`:`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${a} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${l} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`}case"invalid_value":return n.values.length===1?`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${Ke(n.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`:`\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${Ce(n.values,"|")} \u0645\u06CC\u200C\u0628\u0648\u062F`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${n.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${a}${n.maximum.toString()} ${s.unit??"\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`:`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${n.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${a}${n.maximum.toString()} \u0628\u0627\u0634\u062F`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${n.origin} \u0628\u0627\u06CC\u062F ${a}${n.minimum.toString()} ${s.unit} \u0628\u0627\u0634\u062F`:`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${n.origin} \u0628\u0627\u06CC\u062F ${a}${n.minimum.toString()} \u0628\u0627\u0634\u062F`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${a.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`:a.format==="ends_with"?`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${a.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`:a.format==="includes"?`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${a.includes}" \u0628\u0627\u0634\u062F`:a.format==="regex"?`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${a.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`:`${o[a.format]??n.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`}case"not_multiple_of":return`\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${n.divisor} \u0628\u0627\u0634\u062F`;case"unrecognized_keys":return`\u06A9\u0644\u06CC\u062F${n.keys.length>1?"\u0647\u0627\u06CC":""} \u0646\u0627\u0634\u0646\u0627\u0633: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${n.origin}`;case"invalid_union":return"\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631";case"invalid_element":return`\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${n.origin}`;default:return"\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631"}}}});function a$e(){return{localeError:KAt()}}var KAt,s$e=h(()=>{d();$t();KAt=()=>{let e={string:{unit:"merkki\xE4",subject:"merkkijonon"},file:{unit:"tavua",subject:"tiedoston"},array:{unit:"alkiota",subject:"listan"},set:{unit:"alkiota",subject:"joukon"},number:{unit:"",subject:"luvun"},bigint:{unit:"",subject:"suuren kokonaisluvun"},int:{unit:"",subject:"kokonaisluvun"},date:{unit:"",subject:"p\xE4iv\xE4m\xE4\xE4r\xE4n"}};function t(n){return e[n]??null}let o={regex:"s\xE4\xE4nn\xF6llinen lauseke",email:"s\xE4hk\xF6postiosoite",url:"URL-osoite",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-aikaleima",date:"ISO-p\xE4iv\xE4m\xE4\xE4r\xE4",time:"ISO-aika",duration:"ISO-kesto",ipv4:"IPv4-osoite",ipv6:"IPv6-osoite",cidrv4:"IPv4-alue",cidrv6:"IPv6-alue",base64:"base64-koodattu merkkijono",base64url:"base64url-koodattu merkkijono",json_string:"JSON-merkkijono",e164:"E.164-luku",jwt:"JWT",template_literal:"templaattimerkkijono"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Virheellinen tyyppi: odotettiin instanceof ${n.expected}, oli ${l}`:`Virheellinen tyyppi: odotettiin ${a}, oli ${l}`}case"invalid_value":return n.values.length===1?`Virheellinen sy\xF6te: t\xE4ytyy olla ${Ke(n.values[0])}`:`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Liian suuri: ${s.subject} t\xE4ytyy olla ${a}${n.maximum.toString()} ${s.unit}`.trim():`Liian suuri: arvon t\xE4ytyy olla ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Liian pieni: ${s.subject} t\xE4ytyy olla ${a}${n.minimum.toString()} ${s.unit}`.trim():`Liian pieni: arvon t\xE4ytyy olla ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Virheellinen sy\xF6te: t\xE4ytyy alkaa "${a.prefix}"`:a.format==="ends_with"?`Virheellinen sy\xF6te: t\xE4ytyy loppua "${a.suffix}"`:a.format==="includes"?`Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${a.includes}"`:a.format==="regex"?`Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${a.pattern}`:`Virheellinen ${o[a.format]??n.format}`}case"not_multiple_of":return`Virheellinen luku: t\xE4ytyy olla luvun ${n.divisor} monikerta`;case"unrecognized_keys":return`${n.keys.length>1?"Tuntemattomat avaimet":"Tuntematon avain"}: ${Ce(n.keys,", ")}`;case"invalid_key":return"Virheellinen avain tietueessa";case"invalid_union":return"Virheellinen unioni";case"invalid_element":return"Virheellinen arvo joukossa";default:return"Virheellinen sy\xF6te"}}}});function l$e(){return{localeError:QAt()}}var QAt,c$e=h(()=>{d();$t();QAt=()=>{let e={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function t(n){return e[n]??null}let o={regex:"entr\xE9e",email:"adresse e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date et heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"},r={nan:"NaN",number:"nombre",array:"tableau"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Entr\xE9e invalide : instanceof ${n.expected} attendu, ${l} re\xE7u`:`Entr\xE9e invalide : ${a} attendu, ${l} re\xE7u`}case"invalid_value":return n.values.length===1?`Entr\xE9e invalide : ${Ke(n.values[0])} attendu`:`Option invalide : une valeur parmi ${Ce(n.values,"|")} attendue`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Trop grand : ${n.origin??"valeur"} doit ${s.verb} ${a}${n.maximum.toString()} ${s.unit??"\xE9l\xE9ment(s)"}`:`Trop grand : ${n.origin??"valeur"} doit \xEAtre ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Trop petit : ${n.origin} doit ${s.verb} ${a}${n.minimum.toString()} ${s.unit}`:`Trop petit : ${n.origin} doit \xEAtre ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Cha\xEEne invalide : doit commencer par "${a.prefix}"`:a.format==="ends_with"?`Cha\xEEne invalide : doit se terminer par "${a.suffix}"`:a.format==="includes"?`Cha\xEEne invalide : doit inclure "${a.includes}"`:a.format==="regex"?`Cha\xEEne invalide : doit correspondre au mod\xE8le ${a.pattern}`:`${o[a.format]??n.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${n.divisor}`;case"unrecognized_keys":return`Cl\xE9${n.keys.length>1?"s":""} non reconnue${n.keys.length>1?"s":""} : ${Ce(n.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${n.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${n.origin}`;default:return"Entr\xE9e invalide"}}}});function u$e(){return{localeError:ZAt()}}var ZAt,d$e=h(()=>{d();$t();ZAt=()=>{let e={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function t(n){return e[n]??null}let o={regex:"entr\xE9e",email:"adresse courriel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date-heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Entr\xE9e invalide : attendu instanceof ${n.expected}, re\xE7u ${l}`:`Entr\xE9e invalide : attendu ${a}, re\xE7u ${l}`}case"invalid_value":return n.values.length===1?`Entr\xE9e invalide : attendu ${Ke(n.values[0])}`:`Option invalide : attendu l'une des valeurs suivantes ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"\u2264":"<",s=t(n.origin);return s?`Trop grand : attendu que ${n.origin??"la valeur"} ait ${a}${n.maximum.toString()} ${s.unit}`:`Trop grand : attendu que ${n.origin??"la valeur"} soit ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?"\u2265":">",s=t(n.origin);return s?`Trop petit : attendu que ${n.origin} ait ${a}${n.minimum.toString()} ${s.unit}`:`Trop petit : attendu que ${n.origin} soit ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Cha\xEEne invalide : doit commencer par "${a.prefix}"`:a.format==="ends_with"?`Cha\xEEne invalide : doit se terminer par "${a.suffix}"`:a.format==="includes"?`Cha\xEEne invalide : doit inclure "${a.includes}"`:a.format==="regex"?`Cha\xEEne invalide : doit correspondre au motif ${a.pattern}`:`${o[a.format]??n.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${n.divisor}`;case"unrecognized_keys":return`Cl\xE9${n.keys.length>1?"s":""} non reconnue${n.keys.length>1?"s":""} : ${Ce(n.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${n.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${n.origin}`;default:return"Entr\xE9e invalide"}}}});function p$e(){return{localeError:YAt()}}var YAt,m$e=h(()=>{d();$t();YAt=()=>{let e={string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA",gender:"f"},number:{label:"\u05DE\u05E1\u05E4\u05E8",gender:"m"},boolean:{label:"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9",gender:"m"},bigint:{label:"BigInt",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA",gender:"m"},array:{label:"\u05DE\u05E2\u05E8\u05DA",gender:"m"},object:{label:"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8",gender:"m"},null:{label:"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)",gender:"m"},undefined:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)",gender:"m"},symbol:{label:"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)",gender:"m"},function:{label:"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4",gender:"f"},map:{label:"\u05DE\u05E4\u05D4 (Map)",gender:"f"},set:{label:"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)",gender:"f"},file:{label:"\u05E7\u05D5\u05D1\u05E5",gender:"m"},promise:{label:"Promise",gender:"m"},NaN:{label:"NaN",gender:"m"},unknown:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2",gender:"m"},value:{label:"\u05E2\u05E8\u05DA",gender:"m"}},t={string:{unit:"\u05EA\u05D5\u05D5\u05D9\u05DD",shortLabel:"\u05E7\u05E6\u05E8",longLabel:"\u05D0\u05E8\u05D5\u05DA"},file:{unit:"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},array:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},set:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},number:{unit:"",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"}},o=u=>u?e[u]:void 0,r=u=>{let p=o(u);return p?p.label:u??e.unknown.label},n=u=>`\u05D4${r(u)}`,a=u=>(o(u)?.gender??"m")==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA",s=u=>u?t[u]??null:null,l={regex:{label:"\u05E7\u05DC\u05D8",gender:"m"},email:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC",gender:"f"},url:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA",gender:"f"},emoji:{label:"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9",gender:"m"},uuid:{label:"UUID",gender:"m"},nanoid:{label:"nanoid",gender:"m"},guid:{label:"GUID",gender:"m"},cuid:{label:"cuid",gender:"m"},cuid2:{label:"cuid2",gender:"m"},ulid:{label:"ULID",gender:"m"},xid:{label:"XID",gender:"m"},ksuid:{label:"KSUID",gender:"m"},datetime:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA ISO",gender:"m"},time:{label:"\u05D6\u05DE\u05DF ISO",gender:"m"},duration:{label:"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO",gender:"m"},ipv4:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4",gender:"f"},ipv6:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6",gender:"f"},cidrv4:{label:"\u05D8\u05D5\u05D5\u05D7 IPv4",gender:"m"},cidrv6:{label:"\u05D8\u05D5\u05D5\u05D7 IPv6",gender:"m"},base64:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64",gender:"f"},base64url:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA",gender:"f"},json_string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON",gender:"f"},e164:{label:"\u05DE\u05E1\u05E4\u05E8 E.164",gender:"m"},jwt:{label:"JWT",gender:"m"},ends_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},includes:{label:"\u05E7\u05DC\u05D8",gender:"m"},lowercase:{label:"\u05E7\u05DC\u05D8",gender:"m"},starts_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},uppercase:{label:"\u05E7\u05DC\u05D8",gender:"m"}},c={nan:"NaN"};return u=>{switch(u.code){case"invalid_type":{let p=u.expected,m=c[p??""]??r(p),g=Ze(u.input),x=c[g]??e[g]?.label??g;return/^[A-Z]/.test(u.expected)?`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${u.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${x}`:`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${m}, \u05D4\u05EA\u05E7\u05D1\u05DC ${x}`}case"invalid_value":{if(u.values.length===1)return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${Ke(u.values[0])}`;let p=u.values.map(x=>Ke(x));if(u.values.length===2)return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${p[0]} \u05D0\u05D5 ${p[1]}`;let m=p[p.length-1];return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${p.slice(0,-1).join(", ")} \u05D0\u05D5 ${m}`}case"too_big":{let p=s(u.origin),m=n(u.origin??"value");if(u.origin==="string")return`${p?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${m} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${u.maximum.toString()} ${p?.unit??""} ${u.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim();if(u.origin==="number"){let v=u.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${u.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${u.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${m} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${v}`}if(u.origin==="array"||u.origin==="set"){let v=u.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA",y=u.inclusive?`${u.maximum} ${p?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${u.maximum} ${p?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${m} ${v} \u05DC\u05D4\u05DB\u05D9\u05DC ${y}`.trim()}let g=u.inclusive?"<=":"<",x=a(u.origin??"value");return p?.unit?`${p.longLabel} \u05DE\u05D3\u05D9: ${m} ${x} ${g}${u.maximum.toString()} ${p.unit}`:`${p?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${m} ${x} ${g}${u.maximum.toString()}`}case"too_small":{let p=s(u.origin),m=n(u.origin??"value");if(u.origin==="string")return`${p?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${m} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${u.minimum.toString()} ${p?.unit??""} ${u.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim();if(u.origin==="number"){let v=u.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${u.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${u.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${m} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${v}`}if(u.origin==="array"||u.origin==="set"){let v=u.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(u.minimum===1&&u.inclusive){let A=(u.origin==="set","\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3");return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${m} ${v} \u05DC\u05D4\u05DB\u05D9\u05DC ${A}`}let y=u.inclusive?`${u.minimum} ${p?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${u.minimum} ${p?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${m} ${v} \u05DC\u05D4\u05DB\u05D9\u05DC ${y}`.trim()}let g=u.inclusive?">=":">",x=a(u.origin??"value");return p?.unit?`${p.shortLabel} \u05DE\u05D3\u05D9: ${m} ${x} ${g}${u.minimum.toString()} ${p.unit}`:`${p?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${m} ${x} ${g}${u.minimum.toString()}`}case"invalid_format":{let p=u;if(p.format==="starts_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${p.prefix}"`;if(p.format==="ends_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${p.suffix}"`;if(p.format==="includes")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${p.includes}"`;if(p.format==="regex")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${p.pattern}`;let m=l[p.format],g=m?.label??p.format,v=(m?.gender??"m")==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${g} \u05DC\u05D0 ${v}`}case"not_multiple_of":return`\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${u.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${u.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${u.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${Ce(u.keys,", ")}`;case"invalid_key":return"\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8";case"invalid_union":return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF";case"invalid_element":return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${n(u.origin??"array")}`;default:return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"}}}});function f$e(){return{localeError:JAt()}}var JAt,g$e=h(()=>{d();$t();JAt=()=>{let e={string:{unit:"karakter",verb:"legyen"},file:{unit:"byte",verb:"legyen"},array:{unit:"elem",verb:"legyen"},set:{unit:"elem",verb:"legyen"}};function t(n){return e[n]??null}let o={regex:"bemenet",email:"email c\xEDm",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO id\u0151b\xE9lyeg",date:"ISO d\xE1tum",time:"ISO id\u0151",duration:"ISO id\u0151intervallum",ipv4:"IPv4 c\xEDm",ipv6:"IPv6 c\xEDm",cidrv4:"IPv4 tartom\xE1ny",cidrv6:"IPv6 tartom\xE1ny",base64:"base64-k\xF3dolt string",base64url:"base64url-k\xF3dolt string",json_string:"JSON string",e164:"E.164 sz\xE1m",jwt:"JWT",template_literal:"bemenet"},r={nan:"NaN",number:"sz\xE1m",array:"t\xF6mb"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${n.expected}, a kapott \xE9rt\xE9k ${l}`:`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${a}, a kapott \xE9rt\xE9k ${l}`}case"invalid_value":return n.values.length===1?`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${Ke(n.values[0])}`:`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`T\xFAl nagy: ${n.origin??"\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${a}${n.maximum.toString()} ${s.unit??"elem"}`:`T\xFAl nagy: a bemeneti \xE9rt\xE9k ${n.origin??"\xE9rt\xE9k"} t\xFAl nagy: ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${n.origin} m\xE9rete t\xFAl kicsi ${a}${n.minimum.toString()} ${s.unit}`:`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${n.origin} t\xFAl kicsi ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\xC9rv\xE9nytelen string: "${a.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`:a.format==="ends_with"?`\xC9rv\xE9nytelen string: "${a.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`:a.format==="includes"?`\xC9rv\xE9nytelen string: "${a.includes}" \xE9rt\xE9ket kell tartalmaznia`:a.format==="regex"?`\xC9rv\xE9nytelen string: ${a.pattern} mint\xE1nak kell megfelelnie`:`\xC9rv\xE9nytelen ${o[a.format]??n.format}`}case"not_multiple_of":return`\xC9rv\xE9nytelen sz\xE1m: ${n.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`;case"unrecognized_keys":return`Ismeretlen kulcs${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`\xC9rv\xE9nytelen kulcs ${n.origin}`;case"invalid_union":return"\xC9rv\xE9nytelen bemenet";case"invalid_element":return`\xC9rv\xE9nytelen \xE9rt\xE9k: ${n.origin}`;default:return"\xC9rv\xE9nytelen bemenet"}}}});function h$e(e,t,o){return Math.abs(e)===1?t:o}function p2(e){if(!e)return"";let t=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"],o=e[e.length-1];return e+(t.includes(o)?"\u0576":"\u0568")}function x$e(){return{localeError:XAt()}}var XAt,v$e=h(()=>{d();$t();XAt=()=>{let e={string:{unit:{one:"\u0576\u0577\u0561\u0576",many:"\u0576\u0577\u0561\u0576\u0576\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},file:{unit:{one:"\u0562\u0561\u0575\u0569",many:"\u0562\u0561\u0575\u0569\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},array:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},set:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"}};function t(n){return e[n]??null}let o={regex:"\u0574\u0578\u0582\u057F\u0584",email:"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565",url:"URL",emoji:"\u0567\u0574\u0578\u057B\u056B",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574",date:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E",time:"ISO \u056A\u0561\u0574",duration:"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576",ipv4:"IPv4 \u0570\u0561\u057D\u0581\u0565",ipv6:"IPv6 \u0570\u0561\u057D\u0581\u0565",cidrv4:"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",cidrv6:"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",base64:"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",base64url:"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",json_string:"JSON \u057F\u0578\u0572",e164:"E.164 \u0570\u0561\u0574\u0561\u0580",jwt:"JWT",template_literal:"\u0574\u0578\u0582\u057F\u0584"},r={nan:"NaN",number:"\u0569\u056B\u057E",array:"\u0566\u0561\u0576\u0563\u057E\u0561\u056E"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${n.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${l}`:`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${a}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${l}`}case"invalid_value":return n.values.length===1?`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${Ke(n.values[1])}`:`\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);if(s){let l=Number(n.maximum),c=h$e(l,s.unit.one,s.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${p2(n.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${a}${n.maximum.toString()} ${c}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${p2(n.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);if(s){let l=Number(n.minimum),c=h$e(l,s.unit.one,s.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${p2(n.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${a}${n.minimum.toString()} ${c}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${p2(n.origin)} \u056C\u056B\u0576\u056B ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${a.prefix}"-\u0578\u057E`:a.format==="ends_with"?`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${a.suffix}"-\u0578\u057E`:a.format==="includes"?`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${a.includes}"`:a.format==="regex"?`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${a.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`:`\u054D\u056D\u0561\u056C ${o[a.format]??n.format}`}case"not_multiple_of":return`\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${n.divisor}-\u056B`;case"unrecognized_keys":return`\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${n.keys.length>1?"\u0576\u0565\u0580":""}. ${Ce(n.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${p2(n.origin)}-\u0578\u0582\u0574`;case"invalid_union":return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574";case"invalid_element":return`\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${p2(n.origin)}-\u0578\u0582\u0574`;default:return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"}}}});function y$e(){return{localeError:VAt()}}var VAt,b$e=h(()=>{d();$t();VAt=()=>{let e={string:{unit:"karakter",verb:"memiliki"},file:{unit:"byte",verb:"memiliki"},array:{unit:"item",verb:"memiliki"},set:{unit:"item",verb:"memiliki"}};function t(n){return e[n]??null}let o={regex:"input",email:"alamat email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tanggal dan waktu format ISO",date:"tanggal format ISO",time:"jam format ISO",duration:"durasi format ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"rentang alamat IPv4",cidrv6:"rentang alamat IPv6",base64:"string dengan enkode base64",base64url:"string dengan enkode base64url",json_string:"string JSON",e164:"angka E.164",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Input tidak valid: diharapkan instanceof ${n.expected}, diterima ${l}`:`Input tidak valid: diharapkan ${a}, diterima ${l}`}case"invalid_value":return n.values.length===1?`Input tidak valid: diharapkan ${Ke(n.values[0])}`:`Pilihan tidak valid: diharapkan salah satu dari ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Terlalu besar: diharapkan ${n.origin??"value"} memiliki ${a}${n.maximum.toString()} ${s.unit??"elemen"}`:`Terlalu besar: diharapkan ${n.origin??"value"} menjadi ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Terlalu kecil: diharapkan ${n.origin} memiliki ${a}${n.minimum.toString()} ${s.unit}`:`Terlalu kecil: diharapkan ${n.origin} menjadi ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`String tidak valid: harus dimulai dengan "${a.prefix}"`:a.format==="ends_with"?`String tidak valid: harus berakhir dengan "${a.suffix}"`:a.format==="includes"?`String tidak valid: harus menyertakan "${a.includes}"`:a.format==="regex"?`String tidak valid: harus sesuai pola ${a.pattern}`:`${o[a.format]??n.format} tidak valid`}case"not_multiple_of":return`Angka tidak valid: harus kelipatan dari ${n.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali ${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Kunci tidak valid di ${n.origin}`;case"invalid_union":return"Input tidak valid";case"invalid_element":return`Nilai tidak valid di ${n.origin}`;default:return"Input tidak valid"}}}});function S$e(){return{localeError:e6t()}}var e6t,w$e=h(()=>{d();$t();e6t=()=>{let e={string:{unit:"stafi",verb:"a\xF0 hafa"},file:{unit:"b\xE6ti",verb:"a\xF0 hafa"},array:{unit:"hluti",verb:"a\xF0 hafa"},set:{unit:"hluti",verb:"a\xF0 hafa"}};function t(n){return e[n]??null}let o={regex:"gildi",email:"netfang",url:"vefsl\xF3\xF0",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dagsetning og t\xEDmi",date:"ISO dagsetning",time:"ISO t\xEDmi",duration:"ISO t\xEDmalengd",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded strengur",base64url:"base64url-encoded strengur",json_string:"JSON strengur",e164:"E.164 t\xF6lugildi",jwt:"JWT",template_literal:"gildi"},r={nan:"NaN",number:"n\xFAmer",array:"fylki"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Rangt gildi: \xDE\xFA sl\xF3st inn ${l} \xFEar sem \xE1 a\xF0 vera instanceof ${n.expected}`:`Rangt gildi: \xDE\xFA sl\xF3st inn ${l} \xFEar sem \xE1 a\xF0 vera ${a}`}case"invalid_value":return n.values.length===1?`Rangt gildi: gert r\xE1\xF0 fyrir ${Ke(n.values[0])}`:`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${n.origin??"gildi"} hafi ${a}${n.maximum.toString()} ${s.unit??"hluti"}`:`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${n.origin??"gildi"} s\xE9 ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${n.origin} hafi ${a}${n.minimum.toString()} ${s.unit}`:`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${n.origin} s\xE9 ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${a.prefix}"`:a.format==="ends_with"?`\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${a.suffix}"`:a.format==="includes"?`\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${a.includes}"`:a.format==="regex"?`\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${a.pattern}`:`Rangt ${o[a.format]??n.format}`}case"not_multiple_of":return`R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${n.divisor}`;case"unrecognized_keys":return`\xD3\xFEekkt ${n.keys.length>1?"ir lyklar":"ur lykill"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Rangur lykill \xED ${n.origin}`;case"invalid_union":return"Rangt gildi";case"invalid_element":return`Rangt gildi \xED ${n.origin}`;default:return"Rangt gildi"}}}});function A$e(){return{localeError:t6t()}}var t6t,k$e=h(()=>{d();$t();t6t=()=>{let e={string:{unit:"caratteri",verb:"avere"},file:{unit:"byte",verb:"avere"},array:{unit:"elementi",verb:"avere"},set:{unit:"elementi",verb:"avere"}};function t(n){return e[n]??null}let o={regex:"input",email:"indirizzo email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e ora ISO",date:"data ISO",time:"ora ISO",duration:"durata ISO",ipv4:"indirizzo IPv4",ipv6:"indirizzo IPv6",cidrv4:"intervallo IPv4",cidrv6:"intervallo IPv6",base64:"stringa codificata in base64",base64url:"URL codificata in base64",json_string:"stringa JSON",e164:"numero E.164",jwt:"JWT",template_literal:"input"},r={nan:"NaN",number:"numero",array:"vettore"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Input non valido: atteso instanceof ${n.expected}, ricevuto ${l}`:`Input non valido: atteso ${a}, ricevuto ${l}`}case"invalid_value":return n.values.length===1?`Input non valido: atteso ${Ke(n.values[0])}`:`Opzione non valida: atteso uno tra ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Troppo grande: ${n.origin??"valore"} deve avere ${a}${n.maximum.toString()} ${s.unit??"elementi"}`:`Troppo grande: ${n.origin??"valore"} deve essere ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Troppo piccolo: ${n.origin} deve avere ${a}${n.minimum.toString()} ${s.unit}`:`Troppo piccolo: ${n.origin} deve essere ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Stringa non valida: deve iniziare con "${a.prefix}"`:a.format==="ends_with"?`Stringa non valida: deve terminare con "${a.suffix}"`:a.format==="includes"?`Stringa non valida: deve includere "${a.includes}"`:a.format==="regex"?`Stringa non valida: deve corrispondere al pattern ${a.pattern}`:`Invalid ${o[a.format]??n.format}`}case"not_multiple_of":return`Numero non valido: deve essere un multiplo di ${n.divisor}`;case"unrecognized_keys":return`Chiav${n.keys.length>1?"i":"e"} non riconosciut${n.keys.length>1?"e":"a"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Chiave non valida in ${n.origin}`;case"invalid_union":return"Input non valido";case"invalid_element":return`Valore non valido in ${n.origin}`;default:return"Input non valido"}}}});function C$e(){return{localeError:o6t()}}var o6t,T$e=h(()=>{d();$t();o6t=()=>{let e={string:{unit:"\u6587\u5B57",verb:"\u3067\u3042\u308B"},file:{unit:"\u30D0\u30A4\u30C8",verb:"\u3067\u3042\u308B"},array:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"},set:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"}};function t(n){return e[n]??null}let o={regex:"\u5165\u529B\u5024",email:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",url:"URL",emoji:"\u7D75\u6587\u5B57",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u6642",date:"ISO\u65E5\u4ED8",time:"ISO\u6642\u523B",duration:"ISO\u671F\u9593",ipv4:"IPv4\u30A2\u30C9\u30EC\u30B9",ipv6:"IPv6\u30A2\u30C9\u30EC\u30B9",cidrv4:"IPv4\u7BC4\u56F2",cidrv6:"IPv6\u7BC4\u56F2",base64:"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",base64url:"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",json_string:"JSON\u6587\u5B57\u5217",e164:"E.164\u756A\u53F7",jwt:"JWT",template_literal:"\u5165\u529B\u5024"},r={nan:"NaN",number:"\u6570\u5024",array:"\u914D\u5217"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u7121\u52B9\u306A\u5165\u529B: instanceof ${n.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${l}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`:`\u7121\u52B9\u306A\u5165\u529B: ${a}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${l}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`}case"invalid_value":return n.values.length===1?`\u7121\u52B9\u306A\u5165\u529B: ${Ke(n.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`:`\u7121\u52B9\u306A\u9078\u629E: ${Ce(n.values,"\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"too_big":{let a=n.inclusive?"\u4EE5\u4E0B\u3067\u3042\u308B":"\u3088\u308A\u5C0F\u3055\u3044",s=t(n.origin);return s?`\u5927\u304D\u3059\u304E\u308B\u5024: ${n.origin??"\u5024"}\u306F${n.maximum.toString()}${s.unit??"\u8981\u7D20"}${a}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:`\u5927\u304D\u3059\u304E\u308B\u5024: ${n.origin??"\u5024"}\u306F${n.maximum.toString()}${a}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"too_small":{let a=n.inclusive?"\u4EE5\u4E0A\u3067\u3042\u308B":"\u3088\u308A\u5927\u304D\u3044",s=t(n.origin);return s?`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${n.origin}\u306F${n.minimum.toString()}${s.unit}${a}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${n.origin}\u306F${n.minimum.toString()}${a}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${a.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:a.format==="ends_with"?`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${a.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:a.format==="includes"?`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${a.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:a.format==="regex"?`\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${a.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:`\u7121\u52B9\u306A${o[a.format]??n.format}`}case"not_multiple_of":return`\u7121\u52B9\u306A\u6570\u5024: ${n.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"unrecognized_keys":return`\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${n.keys.length>1?"\u7FA4":""}: ${Ce(n.keys,"\u3001")}`;case"invalid_key":return`${n.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;case"invalid_union":return"\u7121\u52B9\u306A\u5165\u529B";case"invalid_element":return`${n.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;default:return"\u7121\u52B9\u306A\u5165\u529B"}}}});function I$e(){return{localeError:n6t()}}var n6t,E$e=h(()=>{d();$t();n6t=()=>{let e={string:{unit:"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},file:{unit:"\u10D1\u10D0\u10D8\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},array:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},set:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"}};function t(n){return e[n]??null}let o={regex:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0",email:"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",url:"URL",emoji:"\u10D4\u10DB\u10DD\u10EF\u10D8",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD",date:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8",time:"\u10D3\u10E0\u10DD",duration:"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0",ipv4:"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",ipv6:"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",cidrv4:"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",cidrv6:"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",base64:"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8",base64url:"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8",json_string:"JSON \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8",e164:"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8",jwt:"JWT",template_literal:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"},r={nan:"NaN",number:"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8",string:"\u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8",boolean:"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8",function:"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0",array:"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${n.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${l}`:`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${a}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${l}`}case"invalid_value":return n.values.length===1?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${Ke(n.values[0])}`:`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${Ce(n.values,"|")}-\u10D3\u10D0\u10DC`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${n.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${s.verb} ${a}${n.maximum.toString()} ${s.unit}`:`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${n.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${n.origin} ${s.verb} ${a}${n.minimum.toString()} ${s.unit}`:`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${n.origin} \u10D8\u10E7\u10DD\u10E1 ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${a.prefix}"-\u10D8\u10D7`:a.format==="ends_with"?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${a.suffix}"-\u10D8\u10D7`:a.format==="includes"?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${a.includes}"-\u10E1`:a.format==="regex"?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${a.pattern}`:`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${o[a.format]??n.format}`}case"not_multiple_of":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${n.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;case"unrecognized_keys":return`\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${n.keys.length>1?"\u10D4\u10D1\u10D8":"\u10D8"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${n.origin}-\u10E8\u10D8`;case"invalid_union":return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0";case"invalid_element":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${n.origin}-\u10E8\u10D8`;default:return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"}}}});function CO(){return{localeError:r6t()}}var r6t,Pie=h(()=>{d();$t();r6t=()=>{let e={string:{unit:"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},file:{unit:"\u1794\u17C3",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},array:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},set:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"}};function t(n){return e[n]??null}let o={regex:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B",email:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B",url:"URL",emoji:"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO",date:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO",time:"\u1798\u17C9\u17C4\u1784 ISO",duration:"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO",ipv4:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",ipv6:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",cidrv4:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",cidrv6:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",base64:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64",base64url:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url",json_string:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON",e164:"\u179B\u17C1\u1781 E.164",jwt:"JWT",template_literal:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B"},r={nan:"NaN",number:"\u179B\u17C1\u1781",array:"\u17A2\u17B6\u179A\u17C1 (Array)",null:"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${n.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${l}`:`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${a} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${l}`}case"invalid_value":return n.values.length===1?`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${Ke(n.values[0])}`:`\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${n.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${a} ${n.maximum.toString()} ${s.unit??"\u1792\u17B6\u178F\u17BB"}`:`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${n.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${a} ${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${n.origin} ${a} ${n.minimum.toString()} ${s.unit}`:`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${n.origin} ${a} ${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${a.prefix}"`:a.format==="ends_with"?`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${a.suffix}"`:a.format==="includes"?`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${a.includes}"`:a.format==="regex"?`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${a.pattern}`:`\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${o[a.format]??n.format}`}case"not_multiple_of":return`\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${n.divisor}`;case"unrecognized_keys":return`\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${Ce(n.keys,", ")}`;case"invalid_key":return`\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${n.origin}`;case"invalid_union":return"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C";case"invalid_element":return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${n.origin}`;default:return"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C"}}}});function D$e(){return CO()}var P$e=h(()=>{d();Pie()});function M$e(){return{localeError:i6t()}}var i6t,N$e=h(()=>{d();$t();i6t=()=>{let e={string:{unit:"\uBB38\uC790",verb:"to have"},file:{unit:"\uBC14\uC774\uD2B8",verb:"to have"},array:{unit:"\uAC1C",verb:"to have"},set:{unit:"\uAC1C",verb:"to have"}};function t(n){return e[n]??null}let o={regex:"\uC785\uB825",email:"\uC774\uBA54\uC77C \uC8FC\uC18C",url:"URL",emoji:"\uC774\uBAA8\uC9C0",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \uB0A0\uC9DC\uC2DC\uAC04",date:"ISO \uB0A0\uC9DC",time:"ISO \uC2DC\uAC04",duration:"ISO \uAE30\uAC04",ipv4:"IPv4 \uC8FC\uC18C",ipv6:"IPv6 \uC8FC\uC18C",cidrv4:"IPv4 \uBC94\uC704",cidrv6:"IPv6 \uBC94\uC704",base64:"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",base64url:"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",json_string:"JSON \uBB38\uC790\uC5F4",e164:"E.164 \uBC88\uD638",jwt:"JWT",template_literal:"\uC785\uB825"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${n.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${l}\uC785\uB2C8\uB2E4`:`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${a}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${l}\uC785\uB2C8\uB2E4`}case"invalid_value":return n.values.length===1?`\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${Ke(n.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`:`\uC798\uBABB\uB41C \uC635\uC158: ${Ce(n.values,"\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"too_big":{let a=n.inclusive?"\uC774\uD558":"\uBBF8\uB9CC",s=a==="\uBBF8\uB9CC"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",l=t(n.origin),c=l?.unit??"\uC694\uC18C";return l?`${n.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${n.maximum.toString()}${c} ${a}${s}`:`${n.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${n.maximum.toString()} ${a}${s}`}case"too_small":{let a=n.inclusive?"\uC774\uC0C1":"\uCD08\uACFC",s=a==="\uC774\uC0C1"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",l=t(n.origin),c=l?.unit??"\uC694\uC18C";return l?`${n.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${n.minimum.toString()}${c} ${a}${s}`:`${n.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${n.minimum.toString()} ${a}${s}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${a.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`:a.format==="ends_with"?`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${a.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`:a.format==="includes"?`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${a.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`:a.format==="regex"?`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${a.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`:`\uC798\uBABB\uB41C ${o[a.format]??n.format}`}case"not_multiple_of":return`\uC798\uBABB\uB41C \uC22B\uC790: ${n.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"unrecognized_keys":return`\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${Ce(n.keys,", ")}`;case"invalid_key":return`\uC798\uBABB\uB41C \uD0A4: ${n.origin}`;case"invalid_union":return"\uC798\uBABB\uB41C \uC785\uB825";case"invalid_element":return`\uC798\uBABB\uB41C \uAC12: ${n.origin}`;default:return"\uC798\uBABB\uB41C \uC785\uB825"}}}});function B$e(e){let t=Math.abs(e),o=t%10,r=t%100;return r>=11&&r<=19||o===0?"many":o===1?"one":"few"}function R$e(){return{localeError:a6t()}}var u6,a6t,L$e=h(()=>{d();$t();u6=e=>e.charAt(0).toUpperCase()+e.slice(1);a6t=()=>{let e={string:{unit:{one:"simbolis",few:"simboliai",many:"simboli\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne ilgesn\u0117 kaip",notInclusive:"turi b\u016Bti trumpesn\u0117 kaip"},bigger:{inclusive:"turi b\u016Bti ne trumpesn\u0117 kaip",notInclusive:"turi b\u016Bti ilgesn\u0117 kaip"}}},file:{unit:{one:"baitas",few:"baitai",many:"bait\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne didesnis kaip",notInclusive:"turi b\u016Bti ma\u017Eesnis kaip"},bigger:{inclusive:"turi b\u016Bti ne ma\u017Eesnis kaip",notInclusive:"turi b\u016Bti didesnis kaip"}}},array:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}},set:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}}};function t(n,a,s,l){let c=e[n]??null;return c===null?c:{unit:c.unit[a],verb:c.verb[l][s?"inclusive":"notInclusive"]}}let o={regex:"\u012Fvestis",email:"el. pa\u0161to adresas",url:"URL",emoji:"jaustukas",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO data ir laikas",date:"ISO data",time:"ISO laikas",duration:"ISO trukm\u0117",ipv4:"IPv4 adresas",ipv6:"IPv6 adresas",cidrv4:"IPv4 tinklo prefiksas (CIDR)",cidrv6:"IPv6 tinklo prefiksas (CIDR)",base64:"base64 u\u017Ekoduota eilut\u0117",base64url:"base64url u\u017Ekoduota eilut\u0117",json_string:"JSON eilut\u0117",e164:"E.164 numeris",jwt:"JWT",template_literal:"\u012Fvestis"},r={nan:"NaN",number:"skai\u010Dius",bigint:"sveikasis skai\u010Dius",string:"eilut\u0117",boolean:"login\u0117 reik\u0161m\u0117",undefined:"neapibr\u0117\u017Eta reik\u0161m\u0117",function:"funkcija",symbol:"simbolis",array:"masyvas",object:"objektas",null:"nulin\u0117 reik\u0161m\u0117"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Gautas tipas ${l}, o tik\u0117tasi - instanceof ${n.expected}`:`Gautas tipas ${l}, o tik\u0117tasi - ${a}`}case"invalid_value":return n.values.length===1?`Privalo b\u016Bti ${Ke(n.values[0])}`:`Privalo b\u016Bti vienas i\u0161 ${Ce(n.values,"|")} pasirinkim\u0173`;case"too_big":{let a=r[n.origin]??n.origin,s=t(n.origin,B$e(Number(n.maximum)),n.inclusive??!1,"smaller");if(s?.verb)return`${u6(a??n.origin??"reik\u0161m\u0117")} ${s.verb} ${n.maximum.toString()} ${s.unit??"element\u0173"}`;let l=n.inclusive?"ne didesnis kaip":"ma\u017Eesnis kaip";return`${u6(a??n.origin??"reik\u0161m\u0117")} turi b\u016Bti ${l} ${n.maximum.toString()} ${s?.unit}`}case"too_small":{let a=r[n.origin]??n.origin,s=t(n.origin,B$e(Number(n.minimum)),n.inclusive??!1,"bigger");if(s?.verb)return`${u6(a??n.origin??"reik\u0161m\u0117")} ${s.verb} ${n.minimum.toString()} ${s.unit??"element\u0173"}`;let l=n.inclusive?"ne ma\u017Eesnis kaip":"didesnis kaip";return`${u6(a??n.origin??"reik\u0161m\u0117")} turi b\u016Bti ${l} ${n.minimum.toString()} ${s?.unit}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Eilut\u0117 privalo prasid\u0117ti "${a.prefix}"`:a.format==="ends_with"?`Eilut\u0117 privalo pasibaigti "${a.suffix}"`:a.format==="includes"?`Eilut\u0117 privalo \u012Ftraukti "${a.includes}"`:a.format==="regex"?`Eilut\u0117 privalo atitikti ${a.pattern}`:`Neteisingas ${o[a.format]??n.format}`}case"not_multiple_of":return`Skai\u010Dius privalo b\u016Bti ${n.divisor} kartotinis.`;case"unrecognized_keys":return`Neatpa\u017Eint${n.keys.length>1?"i":"as"} rakt${n.keys.length>1?"ai":"as"}: ${Ce(n.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga \u012Fvestis";case"invalid_element":{let a=r[n.origin]??n.origin;return`${u6(a??n.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}}});function O$e(){return{localeError:s6t()}}var s6t,F$e=h(()=>{d();$t();s6t=()=>{let e={string:{unit:"\u0437\u043D\u0430\u0446\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},file:{unit:"\u0431\u0430\u0458\u0442\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},array:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},set:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"}};function t(n){return e[n]??null}let o={regex:"\u0432\u043D\u0435\u0441",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430",url:"URL",emoji:"\u0435\u043C\u043E\u045F\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0443\u043C",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430",cidrv4:"IPv4 \u043E\u043F\u0441\u0435\u0433",cidrv6:"IPv6 \u043E\u043F\u0441\u0435\u0433",base64:"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",base64url:"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",json_string:"JSON \u043D\u0438\u0437\u0430",e164:"E.164 \u0431\u0440\u043E\u0458",jwt:"JWT",template_literal:"\u0432\u043D\u0435\u0441"},r={nan:"NaN",number:"\u0431\u0440\u043E\u0458",array:"\u043D\u0438\u0437\u0430"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${n.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${l}`:`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${a}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${l}`}case"invalid_value":return n.values.length===1?`Invalid input: expected ${Ke(n.values[0])}`:`\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${n.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${a}${n.maximum.toString()} ${s.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`:`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${n.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${n.origin} \u0434\u0430 \u0438\u043C\u0430 ${a}${n.minimum.toString()} ${s.unit}`:`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${n.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${a.prefix}"`:a.format==="ends_with"?`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${a.suffix}"`:a.format==="includes"?`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${a.includes}"`:a.format==="regex"?`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${a.pattern}`:`Invalid ${o[a.format]??n.format}`}case"not_multiple_of":return`\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${n.divisor}`;case"unrecognized_keys":return`${n.keys.length>1?"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438":"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${n.origin}`;case"invalid_union":return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441";case"invalid_element":return`\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${n.origin}`;default:return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441"}}}});function _$e(){return{localeError:l6t()}}var l6t,U$e=h(()=>{d();$t();l6t=()=>{let e={string:{unit:"aksara",verb:"mempunyai"},file:{unit:"bait",verb:"mempunyai"},array:{unit:"elemen",verb:"mempunyai"},set:{unit:"elemen",verb:"mempunyai"}};function t(n){return e[n]??null}let o={regex:"input",email:"alamat e-mel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tarikh masa ISO",date:"tarikh ISO",time:"masa ISO",duration:"tempoh ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"julat IPv4",cidrv6:"julat IPv6",base64:"string dikodkan base64",base64url:"string dikodkan base64url",json_string:"string JSON",e164:"nombor E.164",jwt:"JWT",template_literal:"input"},r={nan:"NaN",number:"nombor"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Input tidak sah: dijangka instanceof ${n.expected}, diterima ${l}`:`Input tidak sah: dijangka ${a}, diterima ${l}`}case"invalid_value":return n.values.length===1?`Input tidak sah: dijangka ${Ke(n.values[0])}`:`Pilihan tidak sah: dijangka salah satu daripada ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Terlalu besar: dijangka ${n.origin??"nilai"} ${s.verb} ${a}${n.maximum.toString()} ${s.unit??"elemen"}`:`Terlalu besar: dijangka ${n.origin??"nilai"} adalah ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Terlalu kecil: dijangka ${n.origin} ${s.verb} ${a}${n.minimum.toString()} ${s.unit}`:`Terlalu kecil: dijangka ${n.origin} adalah ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`String tidak sah: mesti bermula dengan "${a.prefix}"`:a.format==="ends_with"?`String tidak sah: mesti berakhir dengan "${a.suffix}"`:a.format==="includes"?`String tidak sah: mesti mengandungi "${a.includes}"`:a.format==="regex"?`String tidak sah: mesti sepadan dengan corak ${a.pattern}`:`${o[a.format]??n.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${n.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${Ce(n.keys,", ")}`;case"invalid_key":return`Kunci tidak sah dalam ${n.origin}`;case"invalid_union":return"Input tidak sah";case"invalid_element":return`Nilai tidak sah dalam ${n.origin}`;default:return"Input tidak sah"}}}});function z$e(){return{localeError:c6t()}}var c6t,$$e=h(()=>{d();$t();c6t=()=>{let e={string:{unit:"tekens",verb:"heeft"},file:{unit:"bytes",verb:"heeft"},array:{unit:"elementen",verb:"heeft"},set:{unit:"elementen",verb:"heeft"}};function t(n){return e[n]??null}let o={regex:"invoer",email:"emailadres",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum en tijd",date:"ISO datum",time:"ISO tijd",duration:"ISO duur",ipv4:"IPv4-adres",ipv6:"IPv6-adres",cidrv4:"IPv4-bereik",cidrv6:"IPv6-bereik",base64:"base64-gecodeerde tekst",base64url:"base64 URL-gecodeerde tekst",json_string:"JSON string",e164:"E.164-nummer",jwt:"JWT",template_literal:"invoer"},r={nan:"NaN",number:"getal"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Ongeldige invoer: verwacht instanceof ${n.expected}, ontving ${l}`:`Ongeldige invoer: verwacht ${a}, ontving ${l}`}case"invalid_value":return n.values.length===1?`Ongeldige invoer: verwacht ${Ke(n.values[0])}`:`Ongeldige optie: verwacht \xE9\xE9n van ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin),l=n.origin==="date"?"laat":n.origin==="string"?"lang":"groot";return s?`Te ${l}: verwacht dat ${n.origin??"waarde"} ${a}${n.maximum.toString()} ${s.unit??"elementen"} ${s.verb}`:`Te ${l}: verwacht dat ${n.origin??"waarde"} ${a}${n.maximum.toString()} is`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin),l=n.origin==="date"?"vroeg":n.origin==="string"?"kort":"klein";return s?`Te ${l}: verwacht dat ${n.origin} ${a}${n.minimum.toString()} ${s.unit} ${s.verb}`:`Te ${l}: verwacht dat ${n.origin} ${a}${n.minimum.toString()} is`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Ongeldige tekst: moet met "${a.prefix}" beginnen`:a.format==="ends_with"?`Ongeldige tekst: moet op "${a.suffix}" eindigen`:a.format==="includes"?`Ongeldige tekst: moet "${a.includes}" bevatten`:a.format==="regex"?`Ongeldige tekst: moet overeenkomen met patroon ${a.pattern}`:`Ongeldig: ${o[a.format]??n.format}`}case"not_multiple_of":return`Ongeldig getal: moet een veelvoud van ${n.divisor} zijn`;case"unrecognized_keys":return`Onbekende key${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Ongeldige key in ${n.origin}`;case"invalid_union":return"Ongeldige invoer";case"invalid_element":return`Ongeldige waarde in ${n.origin}`;default:return"Ongeldige invoer"}}}});function G$e(){return{localeError:u6t()}}var u6t,H$e=h(()=>{d();$t();u6t=()=>{let e={string:{unit:"tegn",verb:"\xE5 ha"},file:{unit:"bytes",verb:"\xE5 ha"},array:{unit:"elementer",verb:"\xE5 inneholde"},set:{unit:"elementer",verb:"\xE5 inneholde"}};function t(n){return e[n]??null}let o={regex:"input",email:"e-postadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkeslett",date:"ISO-dato",time:"ISO-klokkeslett",duration:"ISO-varighet",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spekter",cidrv6:"IPv6-spekter",base64:"base64-enkodet streng",base64url:"base64url-enkodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},r={nan:"NaN",number:"tall",array:"liste"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Ugyldig input: forventet instanceof ${n.expected}, fikk ${l}`:`Ugyldig input: forventet ${a}, fikk ${l}`}case"invalid_value":return n.values.length===1?`Ugyldig verdi: forventet ${Ke(n.values[0])}`:`Ugyldig valg: forventet en av ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`For stor(t): forventet ${n.origin??"value"} til \xE5 ha ${a}${n.maximum.toString()} ${s.unit??"elementer"}`:`For stor(t): forventet ${n.origin??"value"} til \xE5 ha ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`For lite(n): forventet ${n.origin} til \xE5 ha ${a}${n.minimum.toString()} ${s.unit}`:`For lite(n): forventet ${n.origin} til \xE5 ha ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Ugyldig streng: m\xE5 starte med "${a.prefix}"`:a.format==="ends_with"?`Ugyldig streng: m\xE5 ende med "${a.suffix}"`:a.format==="includes"?`Ugyldig streng: m\xE5 inneholde "${a.includes}"`:a.format==="regex"?`Ugyldig streng: m\xE5 matche m\xF8nsteret ${a.pattern}`:`Ugyldig ${o[a.format]??n.format}`}case"not_multiple_of":return`Ugyldig tall: m\xE5 v\xE6re et multiplum av ${n.divisor}`;case"unrecognized_keys":return`${n.keys.length>1?"Ukjente n\xF8kler":"Ukjent n\xF8kkel"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8kkel i ${n.origin}`;case"invalid_union":return"Ugyldig input";case"invalid_element":return`Ugyldig verdi i ${n.origin}`;default:return"Ugyldig input"}}}});function j$e(){return{localeError:d6t()}}var d6t,q$e=h(()=>{d();$t();d6t=()=>{let e={string:{unit:"harf",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"unsur",verb:"olmal\u0131d\u0131r"},set:{unit:"unsur",verb:"olmal\u0131d\u0131r"}};function t(n){return e[n]??null}let o={regex:"giren",email:"epostag\xE2h",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO heng\xE2m\u0131",date:"ISO tarihi",time:"ISO zaman\u0131",duration:"ISO m\xFCddeti",ipv4:"IPv4 ni\u015F\xE2n\u0131",ipv6:"IPv6 ni\u015F\xE2n\u0131",cidrv4:"IPv4 menzili",cidrv6:"IPv6 menzili",base64:"base64-\u015Fifreli metin",base64url:"base64url-\u015Fifreli metin",json_string:"JSON metin",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"giren"},r={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`F\xE2sit giren: umulan instanceof ${n.expected}, al\u0131nan ${l}`:`F\xE2sit giren: umulan ${a}, al\u0131nan ${l}`}case"invalid_value":return n.values.length===1?`F\xE2sit giren: umulan ${Ke(n.values[0])}`:`F\xE2sit tercih: m\xFBteberler ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Fazla b\xFCy\xFCk: ${n.origin??"value"}, ${a}${n.maximum.toString()} ${s.unit??"elements"} sahip olmal\u0131yd\u0131.`:`Fazla b\xFCy\xFCk: ${n.origin??"value"}, ${a}${n.maximum.toString()} olmal\u0131yd\u0131.`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Fazla k\xFC\xE7\xFCk: ${n.origin}, ${a}${n.minimum.toString()} ${s.unit} sahip olmal\u0131yd\u0131.`:`Fazla k\xFC\xE7\xFCk: ${n.origin}, ${a}${n.minimum.toString()} olmal\u0131yd\u0131.`}case"invalid_format":{let a=n;return a.format==="starts_with"?`F\xE2sit metin: "${a.prefix}" ile ba\u015Flamal\u0131.`:a.format==="ends_with"?`F\xE2sit metin: "${a.suffix}" ile bitmeli.`:a.format==="includes"?`F\xE2sit metin: "${a.includes}" ihtiv\xE2 etmeli.`:a.format==="regex"?`F\xE2sit metin: ${a.pattern} nak\u015F\u0131na uymal\u0131.`:`F\xE2sit ${o[a.format]??n.format}`}case"not_multiple_of":return`F\xE2sit say\u0131: ${n.divisor} kat\u0131 olmal\u0131yd\u0131.`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar ${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`${n.origin} i\xE7in tan\u0131nmayan anahtar var.`;case"invalid_union":return"Giren tan\u0131namad\u0131.";case"invalid_element":return`${n.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`;default:return"K\u0131ymet tan\u0131namad\u0131."}}}});function W$e(){return{localeError:p6t()}}var p6t,K$e=h(()=>{d();$t();p6t=()=>{let e={string:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},file:{unit:"\u0628\u0627\u06CC\u067C\u0633",verb:"\u0648\u0644\u0631\u064A"},array:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},set:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"}};function t(n){return e[n]??null}let o={regex:"\u0648\u0631\u0648\u062F\u064A",email:"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9",url:"\u06CC\u0648 \u0622\u0631 \u0627\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A",date:"\u0646\u06D0\u067C\u0647",time:"\u0648\u062E\u062A",duration:"\u0645\u0648\u062F\u0647",ipv4:"\u062F IPv4 \u067E\u062A\u0647",ipv6:"\u062F IPv6 \u067E\u062A\u0647",cidrv4:"\u062F IPv4 \u0633\u0627\u062D\u0647",cidrv6:"\u062F IPv6 \u0633\u0627\u062D\u0647",base64:"base64-encoded \u0645\u062A\u0646",base64url:"base64url-encoded \u0645\u062A\u0646",json_string:"JSON \u0645\u062A\u0646",e164:"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u064A"},r={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0627\u0631\u06D0"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${n.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${l} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`:`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${a} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${l} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`}case"invalid_value":return n.values.length===1?`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${Ke(n.values[0])} \u0648\u0627\u06CC`:`\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${Ce(n.values,"|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${n.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${a}${n.maximum.toString()} ${s.unit??"\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`:`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${n.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${a}${n.maximum.toString()} \u0648\u064A`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${n.origin} \u0628\u0627\u06CC\u062F ${a}${n.minimum.toString()} ${s.unit} \u0648\u0644\u0631\u064A`:`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${n.origin} \u0628\u0627\u06CC\u062F ${a}${n.minimum.toString()} \u0648\u064A`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${a.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`:a.format==="ends_with"?`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${a.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`:a.format==="includes"?`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${a.includes}" \u0648\u0644\u0631\u064A`:a.format==="regex"?`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${a.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`:`${o[a.format]??n.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`}case"not_multiple_of":return`\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${n.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;case"unrecognized_keys":return`\u0646\u0627\u0633\u0645 ${n.keys.length>1?"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647":"\u06A9\u0644\u06CC\u0689"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${n.origin} \u06A9\u06D0`;case"invalid_union":return"\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A";case"invalid_element":return`\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${n.origin} \u06A9\u06D0`;default:return"\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A"}}}});function Q$e(){return{localeError:m6t()}}var m6t,Z$e=h(()=>{d();$t();m6t=()=>{let e={string:{unit:"znak\xF3w",verb:"mie\u0107"},file:{unit:"bajt\xF3w",verb:"mie\u0107"},array:{unit:"element\xF3w",verb:"mie\u0107"},set:{unit:"element\xF3w",verb:"mie\u0107"}};function t(n){return e[n]??null}let o={regex:"wyra\u017Cenie",email:"adres email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i godzina w formacie ISO",date:"data w formacie ISO",time:"godzina w formacie ISO",duration:"czas trwania ISO",ipv4:"adres IPv4",ipv6:"adres IPv6",cidrv4:"zakres IPv4",cidrv6:"zakres IPv6",base64:"ci\u0105g znak\xF3w zakodowany w formacie base64",base64url:"ci\u0105g znak\xF3w zakodowany w formacie base64url",json_string:"ci\u0105g znak\xF3w w formacie JSON",e164:"liczba E.164",jwt:"JWT",template_literal:"wej\u015Bcie"},r={nan:"NaN",number:"liczba",array:"tablica"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${n.expected}, otrzymano ${l}`:`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${a}, otrzymano ${l}`}case"invalid_value":return n.values.length===1?`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${Ke(n.values[0])}`:`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${n.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${a}${n.maximum.toString()} ${s.unit??"element\xF3w"}`:`Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${n.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${n.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${a}${n.minimum.toString()} ${s.unit??"element\xF3w"}`:`Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${n.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${a.prefix}"`:a.format==="ends_with"?`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${a.suffix}"`:a.format==="includes"?`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${a.includes}"`:a.format==="regex"?`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${a.pattern}`:`Nieprawid\u0142ow(y/a/e) ${o[a.format]??n.format}`}case"not_multiple_of":return`Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${n.divisor}`;case"unrecognized_keys":return`Nierozpoznane klucze${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Nieprawid\u0142owy klucz w ${n.origin}`;case"invalid_union":return"Nieprawid\u0142owe dane wej\u015Bciowe";case"invalid_element":return`Nieprawid\u0142owa warto\u015B\u0107 w ${n.origin}`;default:return"Nieprawid\u0142owe dane wej\u015Bciowe"}}}});function Y$e(){return{localeError:f6t()}}var f6t,J$e=h(()=>{d();$t();f6t=()=>{let e={string:{unit:"caracteres",verb:"ter"},file:{unit:"bytes",verb:"ter"},array:{unit:"itens",verb:"ter"},set:{unit:"itens",verb:"ter"}};function t(n){return e[n]??null}let o={regex:"padr\xE3o",email:"endere\xE7o de e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e hora ISO",date:"data ISO",time:"hora ISO",duration:"dura\xE7\xE3o ISO",ipv4:"endere\xE7o IPv4",ipv6:"endere\xE7o IPv6",cidrv4:"faixa de IPv4",cidrv6:"faixa de IPv6",base64:"texto codificado em base64",base64url:"URL codificada em base64",json_string:"texto JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},r={nan:"NaN",number:"n\xFAmero",null:"nulo"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Tipo inv\xE1lido: esperado instanceof ${n.expected}, recebido ${l}`:`Tipo inv\xE1lido: esperado ${a}, recebido ${l}`}case"invalid_value":return n.values.length===1?`Entrada inv\xE1lida: esperado ${Ke(n.values[0])}`:`Op\xE7\xE3o inv\xE1lida: esperada uma das ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Muito grande: esperado que ${n.origin??"valor"} tivesse ${a}${n.maximum.toString()} ${s.unit??"elementos"}`:`Muito grande: esperado que ${n.origin??"valor"} fosse ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Muito pequeno: esperado que ${n.origin} tivesse ${a}${n.minimum.toString()} ${s.unit}`:`Muito pequeno: esperado que ${n.origin} fosse ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Texto inv\xE1lido: deve come\xE7ar com "${a.prefix}"`:a.format==="ends_with"?`Texto inv\xE1lido: deve terminar com "${a.suffix}"`:a.format==="includes"?`Texto inv\xE1lido: deve incluir "${a.includes}"`:a.format==="regex"?`Texto inv\xE1lido: deve corresponder ao padr\xE3o ${a.pattern}`:`${o[a.format]??n.format} inv\xE1lido`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${n.divisor}`;case"unrecognized_keys":return`Chave${n.keys.length>1?"s":""} desconhecida${n.keys.length>1?"s":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Chave inv\xE1lida em ${n.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido em ${n.origin}`;default:return"Campo inv\xE1lido"}}}});function X$e(e,t,o,r){let n=Math.abs(e),a=n%10,s=n%100;return s>=11&&s<=19?r:a===1?t:a>=2&&a<=4?o:r}function V$e(){return{localeError:g6t()}}var g6t,eGe=h(()=>{d();$t();g6t=()=>{let e={string:{unit:{one:"\u0441\u0438\u043C\u0432\u043E\u043B",few:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",many:"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u0430",many:"\u0431\u0430\u0439\u0442"},verb:"\u0438\u043C\u0435\u0442\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"}};function t(n){return e[n]??null}let o={regex:"\u0432\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u044F",duration:"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64",base64url:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url",json_string:"JSON \u0441\u0442\u0440\u043E\u043A\u0430",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0432\u043E\u0434"},r={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0441\u0438\u0432"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${n.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${l}`:`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${a}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${l}`}case"invalid_value":return n.values.length===1?`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${Ke(n.values[0])}`:`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);if(s){let l=Number(n.maximum),c=X$e(l,s.unit.one,s.unit.few,s.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${a}${n.maximum.toString()} ${c}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);if(s){let l=Number(n.minimum),c=X$e(l,s.unit.one,s.unit.few,s.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${n.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${a}${n.minimum.toString()} ${c}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${n.origin} \u0431\u0443\u0434\u0435\u0442 ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${a.prefix}"`:a.format==="ends_with"?`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${a.suffix}"`:a.format==="includes"?`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${a.includes}"`:a.format==="regex"?`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${a.pattern}`:`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${o[a.format]??n.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${n.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${n.keys.length>1?"\u044B\u0435":"\u044B\u0439"} \u043A\u043B\u044E\u0447${n.keys.length>1?"\u0438":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${n.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435";case"invalid_element":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${n.origin}`;default:return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"}}}});function tGe(){return{localeError:h6t()}}var h6t,oGe=h(()=>{d();$t();h6t=()=>{let e={string:{unit:"znakov",verb:"imeti"},file:{unit:"bajtov",verb:"imeti"},array:{unit:"elementov",verb:"imeti"},set:{unit:"elementov",verb:"imeti"}};function t(n){return e[n]??null}let o={regex:"vnos",email:"e-po\u0161tni naslov",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum in \u010Das",date:"ISO datum",time:"ISO \u010Das",duration:"ISO trajanje",ipv4:"IPv4 naslov",ipv6:"IPv6 naslov",cidrv4:"obseg IPv4",cidrv6:"obseg IPv6",base64:"base64 kodiran niz",base64url:"base64url kodiran niz",json_string:"JSON niz",e164:"E.164 \u0161tevilka",jwt:"JWT",template_literal:"vnos"},r={nan:"NaN",number:"\u0161tevilo",array:"tabela"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Neveljaven vnos: pri\u010Dakovano instanceof ${n.expected}, prejeto ${l}`:`Neveljaven vnos: pri\u010Dakovano ${a}, prejeto ${l}`}case"invalid_value":return n.values.length===1?`Neveljaven vnos: pri\u010Dakovano ${Ke(n.values[0])}`:`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Preveliko: pri\u010Dakovano, da bo ${n.origin??"vrednost"} imelo ${a}${n.maximum.toString()} ${s.unit??"elementov"}`:`Preveliko: pri\u010Dakovano, da bo ${n.origin??"vrednost"} ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Premajhno: pri\u010Dakovano, da bo ${n.origin} imelo ${a}${n.minimum.toString()} ${s.unit}`:`Premajhno: pri\u010Dakovano, da bo ${n.origin} ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Neveljaven niz: mora se za\u010Deti z "${a.prefix}"`:a.format==="ends_with"?`Neveljaven niz: mora se kon\u010Dati z "${a.suffix}"`:a.format==="includes"?`Neveljaven niz: mora vsebovati "${a.includes}"`:a.format==="regex"?`Neveljaven niz: mora ustrezati vzorcu ${a.pattern}`:`Neveljaven ${o[a.format]??n.format}`}case"not_multiple_of":return`Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${n.divisor}`;case"unrecognized_keys":return`Neprepoznan${n.keys.length>1?"i klju\u010Di":" klju\u010D"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Neveljaven klju\u010D v ${n.origin}`;case"invalid_union":return"Neveljaven vnos";case"invalid_element":return`Neveljavna vrednost v ${n.origin}`;default:return"Neveljaven vnos"}}}});function nGe(){return{localeError:x6t()}}var x6t,rGe=h(()=>{d();$t();x6t=()=>{let e={string:{unit:"tecken",verb:"att ha"},file:{unit:"bytes",verb:"att ha"},array:{unit:"objekt",verb:"att inneh\xE5lla"},set:{unit:"objekt",verb:"att inneh\xE5lla"}};function t(n){return e[n]??null}let o={regex:"regulj\xE4rt uttryck",email:"e-postadress",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datum och tid",date:"ISO-datum",time:"ISO-tid",duration:"ISO-varaktighet",ipv4:"IPv4-intervall",ipv6:"IPv6-intervall",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodad str\xE4ng",base64url:"base64url-kodad str\xE4ng",json_string:"JSON-str\xE4ng",e164:"E.164-nummer",jwt:"JWT",template_literal:"mall-literal"},r={nan:"NaN",number:"antal",array:"lista"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${n.expected}, fick ${l}`:`Ogiltig inmatning: f\xF6rv\xE4ntat ${a}, fick ${l}`}case"invalid_value":return n.values.length===1?`Ogiltig inmatning: f\xF6rv\xE4ntat ${Ke(n.values[0])}`:`Ogiltigt val: f\xF6rv\xE4ntade en av ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`F\xF6r stor(t): f\xF6rv\xE4ntade ${n.origin??"v\xE4rdet"} att ha ${a}${n.maximum.toString()} ${s.unit??"element"}`:`F\xF6r stor(t): f\xF6rv\xE4ntat ${n.origin??"v\xE4rdet"} att ha ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`F\xF6r lite(t): f\xF6rv\xE4ntade ${n.origin??"v\xE4rdet"} att ha ${a}${n.minimum.toString()} ${s.unit}`:`F\xF6r lite(t): f\xF6rv\xE4ntade ${n.origin??"v\xE4rdet"} att ha ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${a.prefix}"`:a.format==="ends_with"?`Ogiltig str\xE4ng: m\xE5ste sluta med "${a.suffix}"`:a.format==="includes"?`Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${a.includes}"`:a.format==="regex"?`Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${a.pattern}"`:`Ogiltig(t) ${o[a.format]??n.format}`}case"not_multiple_of":return`Ogiltigt tal: m\xE5ste vara en multipel av ${n.divisor}`;case"unrecognized_keys":return`${n.keys.length>1?"Ok\xE4nda nycklar":"Ok\xE4nd nyckel"}: ${Ce(n.keys,", ")}`;case"invalid_key":return`Ogiltig nyckel i ${n.origin??"v\xE4rdet"}`;case"invalid_union":return"Ogiltig input";case"invalid_element":return`Ogiltigt v\xE4rde i ${n.origin??"v\xE4rdet"}`;default:return"Ogiltig input"}}}});function iGe(){return{localeError:v6t()}}var v6t,aGe=h(()=>{d();$t();v6t=()=>{let e={string:{unit:"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},file:{unit:"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},array:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},set:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"}};function t(n){return e[n]??null}let o={regex:"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1",email:"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",date:"ISO \u0BA4\u0BC7\u0BA4\u0BBF",time:"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",duration:"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1",ipv4:"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",ipv6:"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",cidrv4:"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",cidrv6:"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",base64:"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD",base64url:"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD",json_string:"JSON \u0B9A\u0BB0\u0BAE\u0BCD",e164:"E.164 \u0B8E\u0BA3\u0BCD",jwt:"JWT",template_literal:"input"},r={nan:"NaN",number:"\u0B8E\u0BA3\u0BCD",array:"\u0B85\u0BA3\u0BBF",null:"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${n.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${l}`:`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${a}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${l}`}case"invalid_value":return n.values.length===1?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${Ke(n.values[0])}`:`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${Ce(n.values,"|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${n.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${a}${n.maximum.toString()} ${s.unit??"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${n.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${a}${n.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${n.origin} ${a}${n.minimum.toString()} ${s.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${n.origin} ${a}${n.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${a.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:a.format==="ends_with"?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${a.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:a.format==="includes"?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${a.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:a.format==="regex"?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${a.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${o[a.format]??n.format}`}case"not_multiple_of":return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${n.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;case"unrecognized_keys":return`\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${n.keys.length>1?"\u0B95\u0BB3\u0BCD":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`${n.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;case"invalid_union":return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1";case"invalid_element":return`${n.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;default:return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1"}}}});function sGe(){return{localeError:y6t()}}var y6t,lGe=h(()=>{d();$t();y6t=()=>{let e={string:{unit:"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},file:{unit:"\u0E44\u0E1A\u0E15\u0E4C",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},array:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},set:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"}};function t(n){return e[n]??null}let o={regex:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19",email:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25",url:"URL",emoji:"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",date:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO",time:"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",duration:"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",ipv4:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4",ipv6:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6",cidrv4:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4",cidrv6:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6",base64:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64",base64url:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL",json_string:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON",e164:"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)",jwt:"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT",template_literal:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19"},r={nan:"NaN",number:"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02",array:"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)",null:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${n.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${l}`:`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${a} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${l}`}case"invalid_value":return n.values.length===1?`\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${Ke(n.values[0])}`:`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19":"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",s=t(n.origin);return s?`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${n.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${a} ${n.maximum.toString()} ${s.unit??"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`:`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${n.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${a} ${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22":"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32",s=t(n.origin);return s?`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${n.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${a} ${n.minimum.toString()} ${s.unit}`:`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${n.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${a} ${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${a.prefix}"`:a.format==="ends_with"?`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${a.suffix}"`:a.format==="includes"?`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${a.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`:a.format==="regex"?`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${a.pattern}`:`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${o[a.format]??n.format}`}case"not_multiple_of":return`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${n.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;case"unrecognized_keys":return`\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${n.origin}`;case"invalid_union":return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49";case"invalid_element":return`\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${n.origin}`;default:return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07"}}}});function cGe(){return{localeError:b6t()}}var b6t,uGe=h(()=>{d();$t();b6t=()=>{let e={string:{unit:"karakter",verb:"olmal\u0131"},file:{unit:"bayt",verb:"olmal\u0131"},array:{unit:"\xF6\u011Fe",verb:"olmal\u0131"},set:{unit:"\xF6\u011Fe",verb:"olmal\u0131"}};function t(n){return e[n]??null}let o={regex:"girdi",email:"e-posta adresi",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO tarih ve saat",date:"ISO tarih",time:"ISO saat",duration:"ISO s\xFCre",ipv4:"IPv4 adresi",ipv6:"IPv6 adresi",cidrv4:"IPv4 aral\u0131\u011F\u0131",cidrv6:"IPv6 aral\u0131\u011F\u0131",base64:"base64 ile \u015Fifrelenmi\u015F metin",base64url:"base64url ile \u015Fifrelenmi\u015F metin",json_string:"JSON dizesi",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"\u015Eablon dizesi"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Ge\xE7ersiz de\u011Fer: beklenen instanceof ${n.expected}, al\u0131nan ${l}`:`Ge\xE7ersiz de\u011Fer: beklenen ${a}, al\u0131nan ${l}`}case"invalid_value":return n.values.length===1?`Ge\xE7ersiz de\u011Fer: beklenen ${Ke(n.values[0])}`:`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\xC7ok b\xFCy\xFCk: beklenen ${n.origin??"de\u011Fer"} ${a}${n.maximum.toString()} ${s.unit??"\xF6\u011Fe"}`:`\xC7ok b\xFCy\xFCk: beklenen ${n.origin??"de\u011Fer"} ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\xC7ok k\xFC\xE7\xFCk: beklenen ${n.origin} ${a}${n.minimum.toString()} ${s.unit}`:`\xC7ok k\xFC\xE7\xFCk: beklenen ${n.origin} ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Ge\xE7ersiz metin: "${a.prefix}" ile ba\u015Flamal\u0131`:a.format==="ends_with"?`Ge\xE7ersiz metin: "${a.suffix}" ile bitmeli`:a.format==="includes"?`Ge\xE7ersiz metin: "${a.includes}" i\xE7ermeli`:a.format==="regex"?`Ge\xE7ersiz metin: ${a.pattern} desenine uymal\u0131`:`Ge\xE7ersiz ${o[a.format]??n.format}`}case"not_multiple_of":return`Ge\xE7ersiz say\u0131: ${n.divisor} ile tam b\xF6l\xFCnebilmeli`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar${n.keys.length>1?"lar":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`${n.origin} i\xE7inde ge\xE7ersiz anahtar`;case"invalid_union":return"Ge\xE7ersiz de\u011Fer";case"invalid_element":return`${n.origin} i\xE7inde ge\xE7ersiz de\u011Fer`;default:return"Ge\xE7ersiz de\u011Fer"}}}});function TO(){return{localeError:S6t()}}var S6t,Mie=h(()=>{d();$t();S6t=()=>{let e={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},file:{unit:"\u0431\u0430\u0439\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"}};function t(n){return e[n]??null}let o={regex:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO",date:"\u0434\u0430\u0442\u0430 ISO",time:"\u0447\u0430\u0441 ISO",duration:"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO",ipv4:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4",ipv6:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6",cidrv4:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4",cidrv6:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6",base64:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64",base64url:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url",json_string:"\u0440\u044F\u0434\u043E\u043A JSON",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"},r={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${n.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${l}`:`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${a}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${l}`}case"invalid_value":return n.values.length===1?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${Ke(n.values[0])}`:`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${s.verb} ${a}${n.maximum.toString()} ${s.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`:`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${n.origin} ${s.verb} ${a}${n.minimum.toString()} ${s.unit}`:`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${n.origin} \u0431\u0443\u0434\u0435 ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${a.prefix}"`:a.format==="ends_with"?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${a.suffix}"`:a.format==="includes"?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${a.includes}"`:a.format==="regex"?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${a.pattern}`:`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${o[a.format]??n.format}`}case"not_multiple_of":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${n.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${n.keys.length>1?"\u0456":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${n.origin}`;case"invalid_union":return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456";case"invalid_element":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${n.origin}`;default:return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"}}}});function dGe(){return TO()}var pGe=h(()=>{d();Mie()});function mGe(){return{localeError:w6t()}}var w6t,fGe=h(()=>{d();$t();w6t=()=>{let e={string:{unit:"\u062D\u0631\u0648\u0641",verb:"\u06C1\u0648\u0646\u0627"},file:{unit:"\u0628\u0627\u0626\u0679\u0633",verb:"\u06C1\u0648\u0646\u0627"},array:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"},set:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"}};function t(n){return e[n]??null}let o={regex:"\u0627\u0646 \u067E\u0679",email:"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633",url:"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",uuidv4:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4",uuidv6:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6",nanoid:"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC",guid:"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid2:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2",ulid:"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC",xid:"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC",ksuid:"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",datetime:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645",date:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E",time:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A",duration:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A",ipv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633",ipv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633",cidrv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C",cidrv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C",base64:"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",base64url:"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",json_string:"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF",e164:"\u0627\u06CC 164 \u0646\u0645\u0628\u0631",jwt:"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC",template_literal:"\u0627\u0646 \u067E\u0679"},r={nan:"NaN",number:"\u0646\u0645\u0628\u0631",array:"\u0622\u0631\u06D2",null:"\u0646\u0644"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${n.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${l} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`:`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${a} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${l} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`}case"invalid_value":return n.values.length===1?`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${Ke(n.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`:`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${Ce(n.values,"|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u0628\u06C1\u062A \u0628\u0691\u0627: ${n.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${a}${n.maximum.toString()} ${s.unit??"\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`:`\u0628\u06C1\u062A \u0628\u0691\u0627: ${n.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${a}${n.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${n.origin} \u06A9\u06D2 ${a}${n.minimum.toString()} ${s.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`:`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${n.origin} \u06A9\u0627 ${a}${n.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${a.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`:a.format==="ends_with"?`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${a.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`:a.format==="includes"?`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${a.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`:a.format==="regex"?`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${a.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`:`\u063A\u0644\u0637 ${o[a.format]??n.format}`}case"not_multiple_of":return`\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${n.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;case"unrecognized_keys":return`\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${n.keys.length>1?"\u0632":""}: ${Ce(n.keys,"\u060C ")}`;case"invalid_key":return`${n.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;case"invalid_union":return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679";case"invalid_element":return`${n.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;default:return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679"}}}});function gGe(){return{localeError:A6t()}}var A6t,hGe=h(()=>{d();$t();A6t=()=>{let e={string:{unit:"belgi",verb:"bo\u2018lishi kerak"},file:{unit:"bayt",verb:"bo\u2018lishi kerak"},array:{unit:"element",verb:"bo\u2018lishi kerak"},set:{unit:"element",verb:"bo\u2018lishi kerak"}};function t(n){return e[n]??null}let o={regex:"kirish",email:"elektron pochta manzili",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO sana va vaqti",date:"ISO sana",time:"ISO vaqt",duration:"ISO davomiylik",ipv4:"IPv4 manzil",ipv6:"IPv6 manzil",mac:"MAC manzil",cidrv4:"IPv4 diapazon",cidrv6:"IPv6 diapazon",base64:"base64 kodlangan satr",base64url:"base64url kodlangan satr",json_string:"JSON satr",e164:"E.164 raqam",jwt:"JWT",template_literal:"kirish"},r={nan:"NaN",number:"raqam",array:"massiv"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`Noto\u2018g\u2018ri kirish: kutilgan instanceof ${n.expected}, qabul qilingan ${l}`:`Noto\u2018g\u2018ri kirish: kutilgan ${a}, qabul qilingan ${l}`}case"invalid_value":return n.values.length===1?`Noto\u2018g\u2018ri kirish: kutilgan ${Ke(n.values[0])}`:`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Juda katta: kutilgan ${n.origin??"qiymat"} ${a}${n.maximum.toString()} ${s.unit} ${s.verb}`:`Juda katta: kutilgan ${n.origin??"qiymat"} ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Juda kichik: kutilgan ${n.origin} ${a}${n.minimum.toString()} ${s.unit} ${s.verb}`:`Juda kichik: kutilgan ${n.origin} ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Noto\u2018g\u2018ri satr: "${a.prefix}" bilan boshlanishi kerak`:a.format==="ends_with"?`Noto\u2018g\u2018ri satr: "${a.suffix}" bilan tugashi kerak`:a.format==="includes"?`Noto\u2018g\u2018ri satr: "${a.includes}" ni o\u2018z ichiga olishi kerak`:a.format==="regex"?`Noto\u2018g\u2018ri satr: ${a.pattern} shabloniga mos kelishi kerak`:`Noto\u2018g\u2018ri ${o[a.format]??n.format}`}case"not_multiple_of":return`Noto\u2018g\u2018ri raqam: ${n.divisor} ning karralisi bo\u2018lishi kerak`;case"unrecognized_keys":return`Noma\u2019lum kalit${n.keys.length>1?"lar":""}: ${Ce(n.keys,", ")}`;case"invalid_key":return`${n.origin} dagi kalit noto\u2018g\u2018ri`;case"invalid_union":return"Noto\u2018g\u2018ri kirish";case"invalid_element":return`${n.origin} da noto\u2018g\u2018ri qiymat`;default:return"Noto\u2018g\u2018ri kirish"}}}});function xGe(){return{localeError:k6t()}}var k6t,vGe=h(()=>{d();$t();k6t=()=>{let e={string:{unit:"k\xFD t\u1EF1",verb:"c\xF3"},file:{unit:"byte",verb:"c\xF3"},array:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"},set:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"}};function t(n){return e[n]??null}let o={regex:"\u0111\u1EA7u v\xE0o",email:"\u0111\u1ECBa ch\u1EC9 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ng\xE0y gi\u1EDD ISO",date:"ng\xE0y ISO",time:"gi\u1EDD ISO",duration:"kho\u1EA3ng th\u1EDDi gian ISO",ipv4:"\u0111\u1ECBa ch\u1EC9 IPv4",ipv6:"\u0111\u1ECBa ch\u1EC9 IPv6",cidrv4:"d\u1EA3i IPv4",cidrv6:"d\u1EA3i IPv6",base64:"chu\u1ED7i m\xE3 h\xF3a base64",base64url:"chu\u1ED7i m\xE3 h\xF3a base64url",json_string:"chu\u1ED7i JSON",e164:"s\u1ED1 E.164",jwt:"JWT",template_literal:"\u0111\u1EA7u v\xE0o"},r={nan:"NaN",number:"s\u1ED1",array:"m\u1EA3ng"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${n.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${l}`:`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${a}, nh\u1EADn \u0111\u01B0\u1EE3c ${l}`}case"invalid_value":return n.values.length===1?`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${Ke(n.values[0])}`:`T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${n.origin??"gi\xE1 tr\u1ECB"} ${s.verb} ${a}${n.maximum.toString()} ${s.unit??"ph\u1EA7n t\u1EED"}`:`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${n.origin??"gi\xE1 tr\u1ECB"} ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${n.origin} ${s.verb} ${a}${n.minimum.toString()} ${s.unit}`:`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${n.origin} ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${a.prefix}"`:a.format==="ends_with"?`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${a.suffix}"`:a.format==="includes"?`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${a.includes}"`:a.format==="regex"?`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${a.pattern}`:`${o[a.format]??n.format} kh\xF4ng h\u1EE3p l\u1EC7`}case"not_multiple_of":return`S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${n.divisor}`;case"unrecognized_keys":return`Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${Ce(n.keys,", ")}`;case"invalid_key":return`Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${n.origin}`;case"invalid_union":return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7";case"invalid_element":return`Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${n.origin}`;default:return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7"}}}});function yGe(){return{localeError:C6t()}}var C6t,bGe=h(()=>{d();$t();C6t=()=>{let e={string:{unit:"\u5B57\u7B26",verb:"\u5305\u542B"},file:{unit:"\u5B57\u8282",verb:"\u5305\u542B"},array:{unit:"\u9879",verb:"\u5305\u542B"},set:{unit:"\u9879",verb:"\u5305\u542B"}};function t(n){return e[n]??null}let o={regex:"\u8F93\u5165",email:"\u7535\u5B50\u90AE\u4EF6",url:"URL",emoji:"\u8868\u60C5\u7B26\u53F7",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u671F\u65F6\u95F4",date:"ISO\u65E5\u671F",time:"ISO\u65F6\u95F4",duration:"ISO\u65F6\u957F",ipv4:"IPv4\u5730\u5740",ipv6:"IPv6\u5730\u5740",cidrv4:"IPv4\u7F51\u6BB5",cidrv6:"IPv6\u7F51\u6BB5",base64:"base64\u7F16\u7801\u5B57\u7B26\u4E32",base64url:"base64url\u7F16\u7801\u5B57\u7B26\u4E32",json_string:"JSON\u5B57\u7B26\u4E32",e164:"E.164\u53F7\u7801",jwt:"JWT",template_literal:"\u8F93\u5165"},r={nan:"NaN",number:"\u6570\u5B57",array:"\u6570\u7EC4",null:"\u7A7A\u503C(null)"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${n.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${l}`:`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${a}\uFF0C\u5B9E\u9645\u63A5\u6536 ${l}`}case"invalid_value":return n.values.length===1?`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${Ke(n.values[0])}`:`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${n.origin??"\u503C"} ${a}${n.maximum.toString()} ${s.unit??"\u4E2A\u5143\u7D20"}`:`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${n.origin??"\u503C"} ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${n.origin} ${a}${n.minimum.toString()} ${s.unit}`:`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${n.origin} ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${a.prefix}" \u5F00\u5934`:a.format==="ends_with"?`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${a.suffix}" \u7ED3\u5C3E`:a.format==="includes"?`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${a.includes}"`:a.format==="regex"?`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${a.pattern}`:`\u65E0\u6548${o[a.format]??n.format}`}case"not_multiple_of":return`\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${n.divisor} \u7684\u500D\u6570`;case"unrecognized_keys":return`\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${Ce(n.keys,", ")}`;case"invalid_key":return`${n.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;case"invalid_union":return"\u65E0\u6548\u8F93\u5165";case"invalid_element":return`${n.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;default:return"\u65E0\u6548\u8F93\u5165"}}}});function SGe(){return{localeError:T6t()}}var T6t,wGe=h(()=>{d();$t();T6t=()=>{let e={string:{unit:"\u5B57\u5143",verb:"\u64C1\u6709"},file:{unit:"\u4F4D\u5143\u7D44",verb:"\u64C1\u6709"},array:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"},set:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"}};function t(n){return e[n]??null}let o={regex:"\u8F38\u5165",email:"\u90F5\u4EF6\u5730\u5740",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u65E5\u671F\u6642\u9593",date:"ISO \u65E5\u671F",time:"ISO \u6642\u9593",duration:"ISO \u671F\u9593",ipv4:"IPv4 \u4F4D\u5740",ipv6:"IPv6 \u4F4D\u5740",cidrv4:"IPv4 \u7BC4\u570D",cidrv6:"IPv6 \u7BC4\u570D",base64:"base64 \u7DE8\u78BC\u5B57\u4E32",base64url:"base64url \u7DE8\u78BC\u5B57\u4E32",json_string:"JSON \u5B57\u4E32",e164:"E.164 \u6578\u503C",jwt:"JWT",template_literal:"\u8F38\u5165"},r={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${n.expected}\uFF0C\u4F46\u6536\u5230 ${l}`:`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${a}\uFF0C\u4F46\u6536\u5230 ${l}`}case"invalid_value":return n.values.length===1?`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${Ke(n.values[0])}`:`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${n.origin??"\u503C"} \u61C9\u70BA ${a}${n.maximum.toString()} ${s.unit??"\u500B\u5143\u7D20"}`:`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${n.origin??"\u503C"} \u61C9\u70BA ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${n.origin} \u61C9\u70BA ${a}${n.minimum.toString()} ${s.unit}`:`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${n.origin} \u61C9\u70BA ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${a.prefix}" \u958B\u982D`:a.format==="ends_with"?`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${a.suffix}" \u7D50\u5C3E`:a.format==="includes"?`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${a.includes}"`:a.format==="regex"?`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${a.pattern}`:`\u7121\u6548\u7684 ${o[a.format]??n.format}`}case"not_multiple_of":return`\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${n.divisor} \u7684\u500D\u6578`;case"unrecognized_keys":return`\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${n.keys.length>1?"\u5011":""}\uFF1A${Ce(n.keys,"\u3001")}`;case"invalid_key":return`${n.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;case"invalid_union":return"\u7121\u6548\u7684\u8F38\u5165\u503C";case"invalid_element":return`${n.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;default:return"\u7121\u6548\u7684\u8F38\u5165\u503C"}}}});function AGe(){return{localeError:I6t()}}var I6t,kGe=h(()=>{d();$t();I6t=()=>{let e={string:{unit:"\xE0mi",verb:"n\xED"},file:{unit:"bytes",verb:"n\xED"},array:{unit:"nkan",verb:"n\xED"},set:{unit:"nkan",verb:"n\xED"}};function t(n){return e[n]??null}let o={regex:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9",email:"\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\xE0k\xF3k\xF2 ISO",date:"\u1ECDj\u1ECD\u0301 ISO",time:"\xE0k\xF3k\xF2 ISO",duration:"\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO",ipv4:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv4",ipv6:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv6",cidrv4:"\xE0gb\xE8gb\xE8 IPv4",cidrv6:"\xE0gb\xE8gb\xE8 IPv6",base64:"\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64",base64url:"\u1ECD\u0300r\u1ECD\u0300 base64url",json_string:"\u1ECD\u0300r\u1ECD\u0300 JSON",e164:"n\u1ECD\u0301mb\xE0 E.164",jwt:"JWT",template_literal:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9"},r={nan:"NaN",number:"n\u1ECD\u0301mb\xE0",array:"akop\u1ECD"};return n=>{switch(n.code){case"invalid_type":{let a=r[n.expected]??n.expected,s=Ze(n.input),l=r[s]??s;return/^[A-Z]/.test(n.expected)?`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${n.expected}, \xE0m\u1ECD\u0300 a r\xED ${l}`:`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${a}, \xE0m\u1ECD\u0300 a r\xED ${l}`}case"invalid_value":return n.values.length===1?`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${Ke(n.values[0])}`:`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${Ce(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=t(n.origin);return s?`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${n.origin??"iye"} ${s.verb} ${a}${n.maximum} ${s.unit}`:`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${a}${n.maximum}`}case"too_small":{let a=n.inclusive?">=":">",s=t(n.origin);return s?`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${n.origin} ${s.verb} ${a}${n.minimum} ${s.unit}`:`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${a}${n.minimum}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${a.prefix}"`:a.format==="ends_with"?`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${a.suffix}"`:a.format==="includes"?`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${a.includes}"`:a.format==="regex"?`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${a.pattern}`:`A\u1E63\xEC\u1E63e: ${o[a.format]??n.format}`}case"not_multiple_of":return`N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${n.divisor}`;case"unrecognized_keys":return`B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${Ce(n.keys,", ")}`;case"invalid_key":return`B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${n.origin}`;case"invalid_union":return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e";case"invalid_element":return`Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${n.origin}`;default:return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"}}}});var d6={};Bt(d6,{ar:()=>Fze,az:()=>Uze,be:()=>Gze,bg:()=>jze,ca:()=>Wze,cs:()=>Qze,da:()=>Yze,de:()=>Xze,en:()=>kO,eo:()=>e$e,es:()=>o$e,fa:()=>r$e,fi:()=>a$e,fr:()=>l$e,frCA:()=>u$e,he:()=>p$e,hu:()=>f$e,hy:()=>x$e,id:()=>y$e,is:()=>S$e,it:()=>A$e,ja:()=>C$e,ka:()=>I$e,kh:()=>D$e,km:()=>CO,ko:()=>M$e,lt:()=>R$e,mk:()=>O$e,ms:()=>_$e,nl:()=>z$e,no:()=>G$e,ota:()=>j$e,pl:()=>Q$e,ps:()=>W$e,pt:()=>Y$e,ru:()=>V$e,sl:()=>tGe,sv:()=>nGe,ta:()=>iGe,th:()=>sGe,tr:()=>cGe,ua:()=>dGe,uk:()=>TO,ur:()=>mGe,uz:()=>gGe,vi:()=>xGe,yo:()=>AGe,zhCN:()=>yGe,zhTW:()=>SGe});var Nie=h(()=>{d();_ze();zze();Hze();qze();Kze();Zze();Jze();Vze();Die();t$e();n$e();i$e();s$e();c$e();d$e();m$e();g$e();v$e();b$e();w$e();k$e();T$e();E$e();P$e();Pie();N$e();L$e();F$e();U$e();$$e();H$e();q$e();K$e();Z$e();J$e();eGe();oGe();rGe();aGe();lGe();uGe();pGe();Mie();fGe();hGe();vGe();bGe();wGe();kGe()});function EO(){return new IO}var CGe,Bie,Rie,IO,Qa,p6=h(()=>{d();Bie=Symbol("ZodOutput"),Rie=Symbol("ZodInput"),IO=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...o){let r=o[0];return this._map.set(t,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let o=this._map.get(t);return o&&typeof o=="object"&&"id"in o&&this._idmap.delete(o.id),this._map.delete(t),this}get(t){let o=t._zod.parent;if(o){let r={...this.get(o)??{}};delete r.id;let n={...r,...this._map.get(t)};return Object.keys(n).length?n:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};(CGe=globalThis).__zod_globalRegistry??(CGe.__zod_globalRegistry=EO());Qa=globalThis.__zod_globalRegistry});function Lie(e,t){return new e({type:"string",...tt(t)})}function Oie(e,t){return new e({type:"string",coerce:!0,...tt(t)})}function DO(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...tt(t)})}function m6(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...tt(t)})}function PO(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...tt(t)})}function MO(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...tt(t)})}function NO(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...tt(t)})}function BO(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...tt(t)})}function f6(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...tt(t)})}function RO(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...tt(t)})}function LO(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...tt(t)})}function OO(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...tt(t)})}function FO(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...tt(t)})}function _O(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...tt(t)})}function UO(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...tt(t)})}function zO(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...tt(t)})}function $O(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...tt(t)})}function GO(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...tt(t)})}function Fie(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...tt(t)})}function HO(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...tt(t)})}function jO(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...tt(t)})}function qO(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...tt(t)})}function WO(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...tt(t)})}function KO(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...tt(t)})}function QO(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...tt(t)})}function Uie(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...tt(t)})}function zie(e,t){return new e({type:"string",format:"date",check:"string_format",...tt(t)})}function $ie(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...tt(t)})}function Gie(e,t){return new e({type:"string",format:"duration",check:"string_format",...tt(t)})}function Hie(e,t){return new e({type:"number",checks:[],...tt(t)})}function jie(e,t){return new e({type:"number",coerce:!0,checks:[],...tt(t)})}function qie(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...tt(t)})}function Wie(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...tt(t)})}function Kie(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...tt(t)})}function Qie(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...tt(t)})}function Zie(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...tt(t)})}function Yie(e,t){return new e({type:"boolean",...tt(t)})}function Jie(e,t){return new e({type:"boolean",coerce:!0,...tt(t)})}function Xie(e,t){return new e({type:"bigint",...tt(t)})}function Vie(e,t){return new e({type:"bigint",coerce:!0,...tt(t)})}function eae(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...tt(t)})}function tae(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...tt(t)})}function oae(e,t){return new e({type:"symbol",...tt(t)})}function nae(e,t){return new e({type:"undefined",...tt(t)})}function rae(e,t){return new e({type:"null",...tt(t)})}function iae(e){return new e({type:"any"})}function aae(e){return new e({type:"unknown"})}function sae(e,t){return new e({type:"never",...tt(t)})}function lae(e,t){return new e({type:"void",...tt(t)})}function cae(e,t){return new e({type:"date",...tt(t)})}function uae(e,t){return new e({type:"date",coerce:!0,...tt(t)})}function dae(e,t){return new e({type:"nan",...tt(t)})}function xp(e,t){return new pO({check:"less_than",...tt(t),value:e,inclusive:!1})}function ic(e,t){return new pO({check:"less_than",...tt(t),value:e,inclusive:!0})}function vp(e,t){return new mO({check:"greater_than",...tt(t),value:e,inclusive:!1})}function Ks(e,t){return new mO({check:"greater_than",...tt(t),value:e,inclusive:!0})}function ZO(e){return vp(0,e)}function YO(e){return xp(0,e)}function JO(e){return ic(0,e)}function XO(e){return Ks(0,e)}function d0(e,t){return new Jne({check:"multiple_of",...tt(t),value:e})}function p0(e,t){return new ere({check:"max_size",...tt(t),maximum:e})}function yp(e,t){return new tre({check:"min_size",...tt(t),minimum:e})}function Ux(e,t){return new ore({check:"size_equals",...tt(t),size:e})}function zx(e,t){return new nre({check:"max_length",...tt(t),maximum:e})}function Fm(e,t){return new rre({check:"min_length",...tt(t),minimum:e})}function $x(e,t){return new ire({check:"length_equals",...tt(t),length:e})}function m2(e,t){return new are({check:"string_format",format:"regex",...tt(t),pattern:e})}function f2(e){return new sre({check:"string_format",format:"lowercase",...tt(e)})}function g2(e){return new lre({check:"string_format",format:"uppercase",...tt(e)})}function h2(e,t){return new cre({check:"string_format",format:"includes",...tt(t),includes:e})}function x2(e,t){return new ure({check:"string_format",format:"starts_with",...tt(t),prefix:e})}function v2(e,t){return new dre({check:"string_format",format:"ends_with",...tt(t),suffix:e})}function VO(e,t,o){return new pre({check:"property",property:e,schema:t,...tt(o)})}function y2(e,t){return new mre({check:"mime_type",mime:e,...tt(t)})}function Hu(e){return new fre({check:"overwrite",tx:e})}function b2(e){return Hu(t=>t.normalize(e))}function S2(){return Hu(e=>e.trim())}function w2(){return Hu(e=>e.toLowerCase())}function A2(){return Hu(e=>e.toUpperCase())}function k2(){return Hu(e=>une(e))}function pae(e,t,o){return new e({type:"array",element:t,...tt(o)})}function D6t(e,t,o){return new e({type:"union",options:t,...tt(o)})}function P6t(e,t,o){return new e({type:"union",options:t,inclusive:!1,...tt(o)})}function M6t(e,t,o,r){return new e({type:"union",options:o,discriminator:t,...tt(r)})}function N6t(e,t,o){return new e({type:"intersection",left:t,right:o})}function B6t(e,t,o,r){let n=o instanceof ro,a=n?r:o,s=n?o:null;return new e({type:"tuple",items:t,rest:s,...tt(a)})}function R6t(e,t,o,r){return new e({type:"record",keyType:t,valueType:o,...tt(r)})}function L6t(e,t,o,r){return new e({type:"map",keyType:t,valueType:o,...tt(r)})}function O6t(e,t,o){return new e({type:"set",valueType:t,...tt(o)})}function F6t(e,t,o){let r=Array.isArray(t)?Object.fromEntries(t.map(n=>[n,n])):t;return new e({type:"enum",entries:r,...tt(o)})}function _6t(e,t,o){return new e({type:"enum",entries:t,...tt(o)})}function U6t(e,t,o){return new e({type:"literal",values:Array.isArray(t)?t:[t],...tt(o)})}function mae(e,t){return new e({type:"file",...tt(t)})}function z6t(e,t){return new e({type:"transform",transform:t})}function $6t(e,t){return new e({type:"optional",innerType:t})}function G6t(e,t){return new e({type:"nullable",innerType:t})}function H6t(e,t,o){return new e({type:"default",innerType:t,get defaultValue(){return typeof o=="function"?o():pne(o)}})}function j6t(e,t,o){return new e({type:"nonoptional",innerType:t,...tt(o)})}function q6t(e,t){return new e({type:"success",innerType:t})}function W6t(e,t,o){return new e({type:"catch",innerType:t,catchValue:typeof o=="function"?o:()=>o})}function K6t(e,t,o){return new e({type:"pipe",in:t,out:o})}function Q6t(e,t){return new e({type:"readonly",innerType:t})}function Z6t(e,t,o){return new e({type:"template_literal",parts:t,...tt(o)})}function Y6t(e,t){return new e({type:"lazy",getter:t})}function J6t(e,t){return new e({type:"promise",innerType:t})}function fae(e,t,o){let r=tt(o);return r.abort??(r.abort=!0),new e({type:"custom",check:"custom",fn:t,...r})}function gae(e,t,o){return new e({type:"custom",check:"custom",fn:t,...tt(o)})}function hae(e){let t=TGe(o=>(o.addIssue=r=>{if(typeof r=="string")o.issues.push(a2(r,o.value,t._zod.def));else{let n=r;n.fatal&&(n.continue=!1),n.code??(n.code="custom"),n.input??(n.input=o.value),n.inst??(n.inst=t),n.continue??(n.continue=!t._zod.def.abort),o.issues.push(a2(n))}},e(o.value,o)));return t}function TGe(e,t){let o=new Hn({check:"custom",...tt(t)});return o._zod.check=e,o}function xae(e){let t=new Hn({check:"describe"});return t._zod.onattach=[o=>{let r=Qa.get(o)??{};Qa.add(o,{...r,description:e})}],t._zod.check=()=>{},t}function vae(e){let t=new Hn({check:"meta"});return t._zod.onattach=[o=>{let r=Qa.get(o)??{};Qa.add(o,{...r,...e})}],t._zod.check=()=>{},t}function yae(e,t){let o=tt(t),r=o.truthy??["true","1","yes","on","y","enabled"],n=o.falsy??["false","0","no","off","n","disabled"];o.case!=="sensitive"&&(r=r.map(x=>typeof x=="string"?x.toLowerCase():x),n=n.map(x=>typeof x=="string"?x.toLowerCase():x));let a=new Set(r),s=new Set(n),l=e.Codec??c6,c=e.Boolean??s6,u=e.String??_x,p=new u({type:"string",error:o.error}),m=new c({type:"boolean",error:o.error}),g=new l({type:"pipe",in:p,out:m,transform:((x,v)=>{let y=x;return o.case!=="sensitive"&&(y=y.toLowerCase()),a.has(y)?!0:s.has(y)?!1:(v.issues.push({code:"invalid_value",expected:"stringbool",values:[...a,...s],input:v.value,inst:g,continue:!1}),{})}),reverseTransform:((x,v)=>x===!0?r[0]||"true":n[0]||"false"),error:o.error});return g}function C2(e,t,o,r={}){let n=tt(r),a={...tt(r),check:"string_format",type:"string",format:t,fn:typeof o=="function"?o:l=>o.test(l),...n};return o instanceof RegExp&&(a.pattern=o),new e(a)}var _ie,IGe=h(()=>{d();fO();p6();Eie();$t();_ie={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}});function m0(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Qa,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function wn(e,t,o={path:[],schemaPath:[]}){var r;let n=e._zod.def,a=t.seen.get(e);if(a)return a.count++,o.schemaPath.includes(e)&&(a.cycle=o.path),a.schema;let s={schema:{},count:1,cycle:void 0,path:o.path};t.seen.set(e,s);let l=e._zod.toJSONSchema?.();if(l)s.schema=l;else{let p={...o,schemaPath:[...o.schemaPath,e],path:o.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,p);else{let g=s.schema,x=t.processors[n.type];if(!x)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${n.type}`);x(e,t,g,p)}let m=e._zod.parent;m&&(s.ref||(s.ref=m),wn(m,t,p),t.seen.get(m).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(s.schema,c),t.io==="input"&&Qs(e)&&(delete s.schema.examples,delete s.schema.default),t.io==="input"&&s.schema._prefault&&((r=s.schema).default??(r.default=s.schema._prefault)),delete s.schema._prefault,t.seen.get(e).schema}function f0(e,t){let o=e.seen.get(t);if(!o)throw new Error("Unprocessed schema. This is a bug in Zod.");let r=new Map;for(let s of e.seen.entries()){let l=e.metadataRegistry.get(s[0])?.id;if(l){let c=r.get(l);if(c&&c!==s[0])throw new Error(`Duplicate schema id "${l}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(l,s[0])}}let n=s=>{let l=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let m=e.external.registry.get(s[0])?.id,g=e.external.uri??(v=>v);if(m)return{ref:g(m)};let x=s[1].defId??s[1].schema.id??`schema${e.counter++}`;return s[1].defId=x,{defId:x,ref:`${g("__shared")}#/${l}/${x}`}}if(s[1]===o)return{ref:"#"};let u=`#/${l}/`,p=s[1].schema.id??`__schema${e.counter++}`;return{defId:p,ref:u+p}},a=s=>{if(s[1].schema.$ref)return;let l=s[1],{ref:c,defId:u}=n(s);l.def={...l.schema},u&&(l.defId=u);let p=l.schema;for(let m in p)delete p[m];p.$ref=c};if(e.cycles==="throw")for(let s of e.seen.entries()){let l=s[1];if(l.cycle)throw new Error(`Cycle detected: #/${l.cycle?.join("/")}/ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let s of e.seen.entries()){let l=s[1];if(t===s[0]){a(s);continue}if(e.external){let u=e.external.registry.get(s[0])?.id;if(t!==s[0]&&u){a(s);continue}}if(e.metadataRegistry.get(s[0])?.id){a(s);continue}if(l.cycle){a(s);continue}if(l.count>1&&e.reused==="ref"){a(s);continue}}}function g0(e,t){let o=e.seen.get(t);if(!o)throw new Error("Unprocessed schema. This is a bug in Zod.");let r=s=>{let l=e.seen.get(s);if(l.ref===null)return;let c=l.def??l.schema,u={...c},p=l.ref;if(l.ref=null,p){r(p);let g=e.seen.get(p),x=g.schema;if(x.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(x)):Object.assign(c,x),Object.assign(c,u),s._zod.parent===p)for(let y in c)y==="$ref"||y==="allOf"||y in u||delete c[y];if(x.$ref&&g.def)for(let y in c)y==="$ref"||y==="allOf"||y in g.def&&JSON.stringify(c[y])===JSON.stringify(g.def[y])&&delete c[y]}let m=s._zod.parent;if(m&&m!==p){r(m);let g=e.seen.get(m);if(g?.schema.$ref&&(c.$ref=g.schema.$ref,g.def))for(let x in c)x==="$ref"||x==="allOf"||x in g.def&&JSON.stringify(c[x])===JSON.stringify(g.def[x])&&delete c[x]}e.override({zodSchema:s,jsonSchema:c,path:l.path??[]})};for(let s of[...e.seen.entries()].reverse())r(s[0]);let n={};if(e.target==="draft-2020-12"?n.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?n.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?n.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let s=e.external.registry.get(t)?.id;if(!s)throw new Error("Schema is missing an `id` property");n.$id=e.external.uri(s)}Object.assign(n,o.def??o.schema);let a=e.external?.defs??{};for(let s of e.seen.entries()){let l=s[1];l.def&&l.defId&&(a[l.defId]=l.def)}e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?n.$defs=a:n.definitions=a);try{let s=JSON.parse(JSON.stringify(n));return Object.defineProperty(s,"~standard",{value:{...t["~standard"],jsonSchema:{input:T2(t,"input",e.processors),output:T2(t,"output",e.processors)}},enumerable:!1,writable:!1}),s}catch{throw new Error("Error converting schema to JSON.")}}function Qs(e,t){let o=t??{seen:new Set};if(o.seen.has(e))return!1;o.seen.add(e);let r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return Qs(r.element,o);if(r.type==="set")return Qs(r.valueType,o);if(r.type==="lazy")return Qs(r.getter(),o);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return Qs(r.innerType,o);if(r.type==="intersection")return Qs(r.left,o)||Qs(r.right,o);if(r.type==="record"||r.type==="map")return Qs(r.keyType,o)||Qs(r.valueType,o);if(r.type==="pipe")return Qs(r.in,o)||Qs(r.out,o);if(r.type==="object"){for(let n in r.shape)if(Qs(r.shape[n],o))return!0;return!1}if(r.type==="union"){for(let n of r.options)if(Qs(n,o))return!0;return!1}if(r.type==="tuple"){for(let n of r.items)if(Qs(n,o))return!0;return!!(r.rest&&Qs(r.rest,o))}return!1}var bae,T2,g6=h(()=>{d();p6();bae=(e,t={})=>o=>{let r=m0({...o,processors:t});return wn(e,r),f0(r,e),g0(r,e)},T2=(e,t,o={})=>r=>{let{libraryOptions:n,target:a}=r??{},s=m0({...n??{},target:a,io:t,processors:o});return wn(e,s),f0(s,e),g0(s,e)}});function nF(e,t){if("_idmap"in e){let r=e,n=m0({...t,processors:eF}),a={};for(let c of r._idmap.entries()){let[u,p]=c;wn(p,n)}let s={},l={registry:r,uri:t?.uri,defs:a};n.external=l;for(let c of r._idmap.entries()){let[u,p]=c;f0(n,p),s[u]=g0(n,p)}if(Object.keys(a).length>0){let c=n.target==="draft-2020-12"?"$defs":"definitions";s.__shared={[c]:a}}return{schemas:s}}let o=m0({...t,processors:eF});return wn(e,o),f0(o,e),g0(o,e)}var X6t,Sae,wae,Aae,kae,Cae,Tae,Iae,Eae,Dae,Pae,Mae,Nae,Bae,Rae,Lae,Oae,Fae,_ae,Uae,zae,$ae,Gae,Hae,jae,qae,tF,Wae,Kae,Qae,Zae,Yae,Jae,Xae,Vae,ese,tse,ose,oF,nse,eF,h6=h(()=>{d();g6();$t();X6t={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Sae=(e,t,o,r)=>{let n=o;n.type="string";let{minimum:a,maximum:s,format:l,patterns:c,contentEncoding:u}=e._zod.bag;if(typeof a=="number"&&(n.minLength=a),typeof s=="number"&&(n.maxLength=s),l&&(n.format=X6t[l]??l,n.format===""&&delete n.format,l==="time"&&delete n.format),u&&(n.contentEncoding=u),c&&c.size>0){let p=[...c];p.length===1?n.pattern=p[0].source:p.length>1&&(n.allOf=[...p.map(m=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:m.source}))])}},wae=(e,t,o,r)=>{let n=o,{minimum:a,maximum:s,format:l,multipleOf:c,exclusiveMaximum:u,exclusiveMinimum:p}=e._zod.bag;typeof l=="string"&&l.includes("int")?n.type="integer":n.type="number",typeof p=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(n.minimum=p,n.exclusiveMinimum=!0):n.exclusiveMinimum=p),typeof a=="number"&&(n.minimum=a,typeof p=="number"&&t.target!=="draft-04"&&(p>=a?delete n.minimum:delete n.exclusiveMinimum)),typeof u=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(n.maximum=u,n.exclusiveMaximum=!0):n.exclusiveMaximum=u),typeof s=="number"&&(n.maximum=s,typeof u=="number"&&t.target!=="draft-04"&&(u<=s?delete n.maximum:delete n.exclusiveMaximum)),typeof c=="number"&&(n.multipleOf=c)},Aae=(e,t,o,r)=>{o.type="boolean"},kae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},Cae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},Tae=(e,t,o,r)=>{t.target==="openapi-3.0"?(o.type="string",o.nullable=!0,o.enum=[null]):o.type="null"},Iae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},Eae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},Dae=(e,t,o,r)=>{o.not={}},Pae=(e,t,o,r)=>{},Mae=(e,t,o,r)=>{},Nae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},Bae=(e,t,o,r)=>{let n=e._zod.def,a=YA(n.entries);a.every(s=>typeof s=="number")&&(o.type="number"),a.every(s=>typeof s=="string")&&(o.type="string"),o.enum=a},Rae=(e,t,o,r)=>{let n=e._zod.def,a=[];for(let s of n.values)if(s===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof s=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");a.push(Number(s))}else a.push(s);if(a.length!==0)if(a.length===1){let s=a[0];o.type=s===null?"null":typeof s,t.target==="draft-04"||t.target==="openapi-3.0"?o.enum=[s]:o.const=s}else a.every(s=>typeof s=="number")&&(o.type="number"),a.every(s=>typeof s=="string")&&(o.type="string"),a.every(s=>typeof s=="boolean")&&(o.type="boolean"),a.every(s=>s===null)&&(o.type="null"),o.enum=a},Lae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},Oae=(e,t,o,r)=>{let n=o,a=e._zod.pattern;if(!a)throw new Error("Pattern not found in template literal");n.type="string",n.pattern=a.source},Fae=(e,t,o,r)=>{let n=o,a={type:"string",format:"binary",contentEncoding:"binary"},{minimum:s,maximum:l,mime:c}=e._zod.bag;s!==void 0&&(a.minLength=s),l!==void 0&&(a.maxLength=l),c?c.length===1?(a.contentMediaType=c[0],Object.assign(n,a)):(Object.assign(n,a),n.anyOf=c.map(u=>({contentMediaType:u}))):Object.assign(n,a)},_ae=(e,t,o,r)=>{o.type="boolean"},Uae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},zae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},$ae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},Gae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},Hae=(e,t,o,r)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},jae=(e,t,o,r)=>{let n=o,a=e._zod.def,{minimum:s,maximum:l}=e._zod.bag;typeof s=="number"&&(n.minItems=s),typeof l=="number"&&(n.maxItems=l),n.type="array",n.items=wn(a.element,t,{...r,path:[...r.path,"items"]})},qae=(e,t,o,r)=>{let n=o,a=e._zod.def;n.type="object",n.properties={};let s=a.shape;for(let u in s)n.properties[u]=wn(s[u],t,{...r,path:[...r.path,"properties",u]});let l=new Set(Object.keys(s)),c=new Set([...l].filter(u=>{let p=a.shape[u]._zod;return t.io==="input"?p.optin===void 0:p.optout===void 0}));c.size>0&&(n.required=Array.from(c)),a.catchall?._zod.def.type==="never"?n.additionalProperties=!1:a.catchall?a.catchall&&(n.additionalProperties=wn(a.catchall,t,{...r,path:[...r.path,"additionalProperties"]})):t.io==="output"&&(n.additionalProperties=!1)},tF=(e,t,o,r)=>{let n=e._zod.def,a=n.inclusive===!1,s=n.options.map((l,c)=>wn(l,t,{...r,path:[...r.path,a?"oneOf":"anyOf",c]}));a?o.oneOf=s:o.anyOf=s},Wae=(e,t,o,r)=>{let n=e._zod.def,a=wn(n.left,t,{...r,path:[...r.path,"allOf",0]}),s=wn(n.right,t,{...r,path:[...r.path,"allOf",1]}),l=u=>"allOf"in u&&Object.keys(u).length===1,c=[...l(a)?a.allOf:[a],...l(s)?s.allOf:[s]];o.allOf=c},Kae=(e,t,o,r)=>{let n=o,a=e._zod.def;n.type="array";let s=t.target==="draft-2020-12"?"prefixItems":"items",l=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",c=a.items.map((g,x)=>wn(g,t,{...r,path:[...r.path,s,x]})),u=a.rest?wn(a.rest,t,{...r,path:[...r.path,l,...t.target==="openapi-3.0"?[a.items.length]:[]]}):null;t.target==="draft-2020-12"?(n.prefixItems=c,u&&(n.items=u)):t.target==="openapi-3.0"?(n.items={anyOf:c},u&&n.items.anyOf.push(u),n.minItems=c.length,u||(n.maxItems=c.length)):(n.items=c,u&&(n.additionalItems=u));let{minimum:p,maximum:m}=e._zod.bag;typeof p=="number"&&(n.minItems=p),typeof m=="number"&&(n.maxItems=m)},Qae=(e,t,o,r)=>{let n=o,a=e._zod.def;n.type="object";let s=a.keyType,c=s._zod.bag?.patterns;if(a.mode==="loose"&&c&&c.size>0){let p=wn(a.valueType,t,{...r,path:[...r.path,"patternProperties","*"]});n.patternProperties={};for(let m of c)n.patternProperties[m.source]=p}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(n.propertyNames=wn(a.keyType,t,{...r,path:[...r.path,"propertyNames"]})),n.additionalProperties=wn(a.valueType,t,{...r,path:[...r.path,"additionalProperties"]});let u=s._zod.values;if(u){let p=[...u].filter(m=>typeof m=="string"||typeof m=="number");p.length>0&&(n.required=p)}},Zae=(e,t,o,r)=>{let n=e._zod.def,a=wn(n.innerType,t,r),s=t.seen.get(e);t.target==="openapi-3.0"?(s.ref=n.innerType,o.nullable=!0):o.anyOf=[a,{type:"null"}]},Yae=(e,t,o,r)=>{let n=e._zod.def;wn(n.innerType,t,r);let a=t.seen.get(e);a.ref=n.innerType},Jae=(e,t,o,r)=>{let n=e._zod.def;wn(n.innerType,t,r);let a=t.seen.get(e);a.ref=n.innerType,o.default=JSON.parse(JSON.stringify(n.defaultValue))},Xae=(e,t,o,r)=>{let n=e._zod.def;wn(n.innerType,t,r);let a=t.seen.get(e);a.ref=n.innerType,t.io==="input"&&(o._prefault=JSON.parse(JSON.stringify(n.defaultValue)))},Vae=(e,t,o,r)=>{let n=e._zod.def;wn(n.innerType,t,r);let a=t.seen.get(e);a.ref=n.innerType;let s;try{s=n.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}o.default=s},ese=(e,t,o,r)=>{let n=e._zod.def,a=t.io==="input"?n.in._zod.def.type==="transform"?n.out:n.in:n.out;wn(a,t,r);let s=t.seen.get(e);s.ref=a},tse=(e,t,o,r)=>{let n=e._zod.def;wn(n.innerType,t,r);let a=t.seen.get(e);a.ref=n.innerType,o.readOnly=!0},ose=(e,t,o,r)=>{let n=e._zod.def;wn(n.innerType,t,r);let a=t.seen.get(e);a.ref=n.innerType},oF=(e,t,o,r)=>{let n=e._zod.def;wn(n.innerType,t,r);let a=t.seen.get(e);a.ref=n.innerType},nse=(e,t,o,r)=>{let n=e._zod.innerType;wn(n,t,r);let a=t.seen.get(e);a.ref=n},eF={string:Sae,number:wae,boolean:Aae,bigint:kae,symbol:Cae,null:Tae,undefined:Iae,void:Eae,never:Dae,any:Pae,unknown:Mae,date:Nae,enum:Bae,literal:Rae,nan:Lae,template_literal:Oae,file:Fae,success:_ae,custom:Uae,function:zae,transform:$ae,map:Gae,set:Hae,array:jae,object:qae,union:tF,intersection:Wae,tuple:Kae,record:Qae,nullable:Zae,nonoptional:Yae,default:Jae,prefault:Xae,catch:Vae,pipe:ese,readonly:tse,promise:ose,optional:oF,lazy:nse}});var rF,EGe=h(()=>{d();h6();g6();rF=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let o=t?.target??"draft-2020-12";o==="draft-4"&&(o="draft-04"),o==="draft-7"&&(o="draft-07"),this.ctx=m0({processors:eF,target:o,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,o={path:[],schemaPath:[]}){return wn(t,this.ctx,o)}emit(t,o){o&&(o.cycles&&(this.ctx.cycles=o.cycles),o.reused&&(this.ctx.reused=o.reused),o.external&&(this.ctx.external=o.external)),f0(this.ctx,t);let r=g0(this.ctx,t),{"~standard":n,...a}=r;return a}}});var DGe={};var PGe=h(()=>{d()});var _m={};Bt(_m,{$ZodAny:()=>Yre,$ZodArray:()=>tie,$ZodAsyncError:()=>Gu,$ZodBase64:()=>zre,$ZodBase64URL:()=>$re,$ZodBigInt:()=>SO,$ZodBigIntFormat:()=>Wre,$ZodBoolean:()=>s6,$ZodCIDRv4:()=>Fre,$ZodCIDRv6:()=>_re,$ZodCUID:()=>Cre,$ZodCUID2:()=>Tre,$ZodCatch:()=>yie,$ZodCheck:()=>Hn,$ZodCheckBigIntFormat:()=>Vne,$ZodCheckEndsWith:()=>dre,$ZodCheckGreaterThan:()=>mO,$ZodCheckIncludes:()=>cre,$ZodCheckLengthEquals:()=>ire,$ZodCheckLessThan:()=>pO,$ZodCheckLowerCase:()=>sre,$ZodCheckMaxLength:()=>nre,$ZodCheckMaxSize:()=>ere,$ZodCheckMimeType:()=>mre,$ZodCheckMinLength:()=>rre,$ZodCheckMinSize:()=>tre,$ZodCheckMultipleOf:()=>Jne,$ZodCheckNumberFormat:()=>Xne,$ZodCheckOverwrite:()=>fre,$ZodCheckProperty:()=>pre,$ZodCheckRegex:()=>are,$ZodCheckSizeEquals:()=>ore,$ZodCheckStartsWith:()=>ure,$ZodCheckStringFormat:()=>d2,$ZodCheckUpperCase:()=>lre,$ZodCodec:()=>c6,$ZodCustom:()=>Iie,$ZodCustomStringFormat:()=>jre,$ZodDate:()=>eie,$ZodDefault:()=>gie,$ZodDiscriminatedUnion:()=>rie,$ZodE164:()=>Gre,$ZodEmail:()=>Sre,$ZodEmoji:()=>Are,$ZodEncodeError:()=>a0,$ZodEnum:()=>cie,$ZodError:()=>t6,$ZodExactOptional:()=>mie,$ZodFile:()=>die,$ZodFunction:()=>kie,$ZodGUID:()=>yre,$ZodIPv4:()=>Rre,$ZodIPv6:()=>Lre,$ZodISODate:()=>Mre,$ZodISODateTime:()=>Pre,$ZodISODuration:()=>Bre,$ZodISOTime:()=>Nre,$ZodIntersection:()=>iie,$ZodJWT:()=>Hre,$ZodKSUID:()=>Dre,$ZodLazy:()=>Tie,$ZodLiteral:()=>uie,$ZodMAC:()=>Ore,$ZodMap:()=>sie,$ZodNaN:()=>bie,$ZodNanoID:()=>kre,$ZodNever:()=>Xre,$ZodNonOptional:()=>xie,$ZodNull:()=>Zre,$ZodNullable:()=>fie,$ZodNumber:()=>bO,$ZodNumberFormat:()=>qre,$ZodObject:()=>Oze,$ZodObjectJIT:()=>oie,$ZodOptional:()=>AO,$ZodPipe:()=>Sie,$ZodPrefault:()=>hie,$ZodPromise:()=>Cie,$ZodReadonly:()=>wie,$ZodRealError:()=>Bl,$ZodRecord:()=>aie,$ZodRegistry:()=>IO,$ZodSet:()=>lie,$ZodString:()=>_x,$ZodStringFormat:()=>Rn,$ZodSuccess:()=>vie,$ZodSymbol:()=>Kre,$ZodTemplateLiteral:()=>Aie,$ZodTransform:()=>pie,$ZodTuple:()=>wO,$ZodType:()=>ro,$ZodULID:()=>Ire,$ZodURL:()=>wre,$ZodUUID:()=>bre,$ZodUndefined:()=>Qre,$ZodUnion:()=>l6,$ZodUnknown:()=>Jre,$ZodVoid:()=>Vre,$ZodXID:()=>Ere,$ZodXor:()=>nie,$brand:()=>YL,$constructor:()=>fe,$input:()=>Rie,$output:()=>Bie,Doc:()=>a6,JSONSchema:()=>DGe,JSONSchemaGenerator:()=>rF,NEVER:()=>ane,TimePrecision:()=>_ie,_any:()=>iae,_array:()=>pae,_base64:()=>qO,_base64url:()=>WO,_bigint:()=>Xie,_boolean:()=>Yie,_catch:()=>W6t,_check:()=>TGe,_cidrv4:()=>HO,_cidrv6:()=>jO,_coercedBigint:()=>Vie,_coercedBoolean:()=>Jie,_coercedDate:()=>uae,_coercedNumber:()=>jie,_coercedString:()=>Oie,_cuid:()=>OO,_cuid2:()=>FO,_custom:()=>fae,_date:()=>cae,_decode:()=>oO,_decodeAsync:()=>rO,_default:()=>H6t,_discriminatedUnion:()=>M6t,_e164:()=>KO,_email:()=>DO,_emoji:()=>RO,_encode:()=>tO,_encodeAsync:()=>nO,_endsWith:()=>v2,_enum:()=>F6t,_file:()=>mae,_float32:()=>Wie,_float64:()=>Kie,_gt:()=>vp,_gte:()=>Ks,_guid:()=>m6,_includes:()=>h2,_int:()=>qie,_int32:()=>Qie,_int64:()=>eae,_intersection:()=>N6t,_ipv4:()=>$O,_ipv6:()=>GO,_isoDate:()=>zie,_isoDateTime:()=>Uie,_isoDuration:()=>Gie,_isoTime:()=>$ie,_jwt:()=>QO,_ksuid:()=>zO,_lazy:()=>Y6t,_length:()=>$x,_literal:()=>U6t,_lowercase:()=>f2,_lt:()=>xp,_lte:()=>ic,_mac:()=>Fie,_map:()=>L6t,_max:()=>ic,_maxLength:()=>zx,_maxSize:()=>p0,_mime:()=>y2,_min:()=>Ks,_minLength:()=>Fm,_minSize:()=>yp,_multipleOf:()=>d0,_nan:()=>dae,_nanoid:()=>LO,_nativeEnum:()=>_6t,_negative:()=>YO,_never:()=>sae,_nonnegative:()=>XO,_nonoptional:()=>j6t,_nonpositive:()=>JO,_normalize:()=>b2,_null:()=>rae,_nullable:()=>G6t,_number:()=>Hie,_optional:()=>$6t,_overwrite:()=>Hu,_parse:()=>s2,_parseAsync:()=>l2,_pipe:()=>K6t,_positive:()=>ZO,_promise:()=>J6t,_property:()=>VO,_readonly:()=>Q6t,_record:()=>R6t,_refine:()=>gae,_regex:()=>m2,_safeDecode:()=>aO,_safeDecodeAsync:()=>lO,_safeEncode:()=>iO,_safeEncodeAsync:()=>sO,_safeParse:()=>c2,_safeParseAsync:()=>u2,_set:()=>O6t,_size:()=>Ux,_slugify:()=>k2,_startsWith:()=>x2,_string:()=>Lie,_stringFormat:()=>C2,_stringbool:()=>yae,_success:()=>q6t,_superRefine:()=>hae,_symbol:()=>oae,_templateLiteral:()=>Z6t,_toLowerCase:()=>w2,_toUpperCase:()=>A2,_transform:()=>z6t,_trim:()=>S2,_tuple:()=>B6t,_uint32:()=>Zie,_uint64:()=>tae,_ulid:()=>_O,_undefined:()=>nae,_union:()=>D6t,_unknown:()=>aae,_uppercase:()=>g2,_url:()=>f6,_uuid:()=>PO,_uuidv4:()=>MO,_uuidv6:()=>NO,_uuidv7:()=>BO,_void:()=>lae,_xid:()=>UO,_xor:()=>P6t,clone:()=>Ws,config:()=>Xr,createStandardJSONSchemaMethod:()=>T2,createToJSONSchemaMethod:()=>bae,decode:()=>eAt,decodeAsync:()=>oAt,describe:()=>xae,encode:()=>V8t,encodeAsync:()=>tAt,extractDefs:()=>f0,finalize:()=>g0,flattenError:()=>o6,formatError:()=>n6,globalConfig:()=>QA,globalRegistry:()=>Qa,initializeContext:()=>m0,isValidBase64:()=>Ure,isValidBase64URL:()=>Nze,isValidJWT:()=>Bze,locales:()=>d6,meta:()=>vae,parse:()=>VL,parseAsync:()=>eO,prettifyError:()=>vne,process:()=>wn,regexes:()=>Wc,registry:()=>EO,safeDecode:()=>rAt,safeDecodeAsync:()=>aAt,safeEncode:()=>nAt,safeEncodeAsync:()=>iAt,safeParse:()=>bne,safeParseAsync:()=>Sne,toDotPath:()=>fze,toJSONSchema:()=>nF,treeifyError:()=>xne,util:()=>Ye,version:()=>hre});var Rl=h(()=>{d();n2();wne();yne();Eie();fO();xre();$t();dO();Nie();p6();gre();IGe();g6();h6();EGe();PGe()});var iF={};Bt(iF,{endsWith:()=>v2,gt:()=>vp,gte:()=>Ks,includes:()=>h2,length:()=>$x,lowercase:()=>f2,lt:()=>xp,lte:()=>ic,maxLength:()=>zx,maxSize:()=>p0,mime:()=>y2,minLength:()=>Fm,minSize:()=>yp,multipleOf:()=>d0,negative:()=>YO,nonnegative:()=>XO,nonpositive:()=>JO,normalize:()=>b2,overwrite:()=>Hu,positive:()=>ZO,property:()=>VO,regex:()=>m2,size:()=>Ux,slugify:()=>k2,startsWith:()=>x2,toLowerCase:()=>w2,toUpperCase:()=>A2,trim:()=>S2,uppercase:()=>g2});var aF=h(()=>{d();Rl()});var I2={};Bt(I2,{ZodISODate:()=>lF,ZodISODateTime:()=>sF,ZodISODuration:()=>uF,ZodISOTime:()=>cF,date:()=>ise,datetime:()=>rse,duration:()=>sse,time:()=>ase});function rse(e){return Uie(sF,e)}function ise(e){return zie(lF,e)}function ase(e){return $ie(cF,e)}function sse(e){return Gie(uF,e)}var sF,lF,cF,uF,x6=h(()=>{d();Rl();y6();sF=fe("ZodISODateTime",(e,t)=>{Pre.init(e,t),Ln.init(e,t)});lF=fe("ZodISODate",(e,t)=>{Mre.init(e,t),Ln.init(e,t)});cF=fe("ZodISOTime",(e,t)=>{Nre.init(e,t),Ln.init(e,t)});uF=fe("ZodISODuration",(e,t)=>{Bre.init(e,t),Ln.init(e,t)})});var MGe,e3t,Ll,lse=h(()=>{d();Rl();Rl();$t();MGe=(e,t)=>{t6.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:o=>n6(e,o)},flatten:{value:o=>o6(e,o)},addIssue:{value:o=>{e.issues.push(o),e.message=JSON.stringify(e.issues,r2,2)}},addIssues:{value:o=>{e.issues.push(...o),e.message=JSON.stringify(e.issues,r2,2)}},isEmpty:{get(){return e.issues.length===0}}})},e3t=fe("ZodError",MGe),Ll=fe("ZodError",MGe,{Parent:Error})});var cse,use,dse,pse,mse,fse,gse,hse,xse,vse,yse,bse,Sse=h(()=>{d();Rl();lse();cse=s2(Ll),use=l2(Ll),dse=c2(Ll),pse=u2(Ll),mse=tO(Ll),fse=oO(Ll),gse=nO(Ll),hse=rO(Ll),xse=iO(Ll),vse=aO(Ll),yse=sO(Ll),bse=lO(Ll)});var v6={};Bt(v6,{ZodAny:()=>Dse,ZodArray:()=>Bse,ZodBase64:()=>TF,ZodBase64URL:()=>IF,ZodBigInt:()=>B2,ZodBigIntFormat:()=>PF,ZodBoolean:()=>N2,ZodCIDRv4:()=>kF,ZodCIDRv6:()=>CF,ZodCUID:()=>xF,ZodCUID2:()=>vF,ZodCatch:()=>tle,ZodCodec:()=>_F,ZodCustom:()=>P6,ZodCustomStringFormat:()=>P2,ZodDate:()=>C6,ZodDefault:()=>Zse,ZodDiscriminatedUnion:()=>Lse,ZodE164:()=>EF,ZodEmail:()=>fF,ZodEmoji:()=>gF,ZodEnum:()=>E2,ZodExactOptional:()=>Wse,ZodFile:()=>jse,ZodFunction:()=>ule,ZodGUID:()=>b6,ZodIPv4:()=>wF,ZodIPv6:()=>AF,ZodIntersection:()=>Ose,ZodJWT:()=>DF,ZodKSUID:()=>SF,ZodLazy:()=>sle,ZodLiteral:()=>Hse,ZodMAC:()=>wse,ZodMap:()=>$se,ZodNaN:()=>nle,ZodNanoID:()=>hF,ZodNever:()=>Mse,ZodNonOptional:()=>OF,ZodNull:()=>Ise,ZodNullable:()=>Qse,ZodNumber:()=>M2,ZodNumberFormat:()=>Hx,ZodObject:()=>I6,ZodOptional:()=>LF,ZodPipe:()=>FF,ZodPrefault:()=>Jse,ZodPromise:()=>cle,ZodReadonly:()=>rle,ZodRecord:()=>D6,ZodSet:()=>Gse,ZodString:()=>D2,ZodStringFormat:()=>Ln,ZodSuccess:()=>ele,ZodSymbol:()=>Cse,ZodTemplateLiteral:()=>ale,ZodTransform:()=>qse,ZodTuple:()=>_se,ZodType:()=>bo,ZodULID:()=>yF,ZodURL:()=>k6,ZodUUID:()=>bp,ZodUndefined:()=>Tse,ZodUnion:()=>E6,ZodUnknown:()=>Pse,ZodVoid:()=>Nse,ZodXID:()=>bF,ZodXor:()=>Rse,_ZodString:()=>mF,_default:()=>Yse,_function:()=>FHe,any:()=>gHe,array:()=>T6,base64:()=>XGe,base64url:()=>VGe,bigint:()=>uHe,boolean:()=>kse,catch:()=>ole,check:()=>_He,cidrv4:()=>YGe,cidrv6:()=>JGe,codec:()=>RHe,cuid:()=>GGe,cuid2:()=>HGe,custom:()=>UHe,date:()=>xHe,describe:()=>zHe,discriminatedUnion:()=>AHe,e164:()=>eHe,email:()=>NGe,emoji:()=>zGe,enum:()=>BF,exactOptional:()=>Kse,file:()=>PHe,float32:()=>aHe,float64:()=>sHe,function:()=>FHe,guid:()=>BGe,hash:()=>iHe,hex:()=>rHe,hostname:()=>nHe,httpUrl:()=>UGe,instanceof:()=>GHe,int:()=>pF,int32:()=>lHe,int64:()=>dHe,intersection:()=>Fse,ipv4:()=>KGe,ipv6:()=>ZGe,json:()=>jHe,jwt:()=>tHe,keyof:()=>vHe,ksuid:()=>WGe,lazy:()=>lle,literal:()=>DHe,looseObject:()=>SHe,looseRecord:()=>CHe,mac:()=>QGe,map:()=>THe,meta:()=>$He,nan:()=>BHe,nanoid:()=>$Ge,nativeEnum:()=>EHe,never:()=>MF,nonoptional:()=>Vse,null:()=>Ese,nullable:()=>w6,nullish:()=>MHe,number:()=>Ase,object:()=>yHe,optional:()=>S6,partialRecord:()=>kHe,pipe:()=>A6,prefault:()=>Xse,preprocess:()=>qHe,promise:()=>OHe,readonly:()=>ile,record:()=>zse,refine:()=>dle,set:()=>IHe,strictObject:()=>bHe,string:()=>dF,stringFormat:()=>oHe,stringbool:()=>HHe,success:()=>NHe,superRefine:()=>ple,symbol:()=>mHe,templateLiteral:()=>LHe,transform:()=>RF,tuple:()=>Use,uint32:()=>cHe,uint64:()=>pHe,ulid:()=>jGe,undefined:()=>fHe,union:()=>NF,unknown:()=>Gx,url:()=>_Ge,uuid:()=>RGe,uuidv4:()=>LGe,uuidv6:()=>OGe,uuidv7:()=>FGe,void:()=>hHe,xid:()=>qGe,xor:()=>wHe});function dF(e){return Lie(D2,e)}function NGe(e){return DO(fF,e)}function BGe(e){return m6(b6,e)}function RGe(e){return PO(bp,e)}function LGe(e){return MO(bp,e)}function OGe(e){return NO(bp,e)}function FGe(e){return BO(bp,e)}function _Ge(e){return f6(k6,e)}function UGe(e){return f6(k6,{protocol:/^https?$/,hostname:Wc.domain,...Ye.normalizeParams(e)})}function zGe(e){return RO(gF,e)}function $Ge(e){return LO(hF,e)}function GGe(e){return OO(xF,e)}function HGe(e){return FO(vF,e)}function jGe(e){return _O(yF,e)}function qGe(e){return UO(bF,e)}function WGe(e){return zO(SF,e)}function KGe(e){return $O(wF,e)}function QGe(e){return Fie(wse,e)}function ZGe(e){return GO(AF,e)}function YGe(e){return HO(kF,e)}function JGe(e){return jO(CF,e)}function XGe(e){return qO(TF,e)}function VGe(e){return WO(IF,e)}function eHe(e){return KO(EF,e)}function tHe(e){return QO(DF,e)}function oHe(e,t,o={}){return C2(P2,e,t,o)}function nHe(e){return C2(P2,"hostname",Wc.hostname,e)}function rHe(e){return C2(P2,"hex",Wc.hex,e)}function iHe(e,t){let o=t?.enc??"hex",r=`${e}_${o}`,n=Wc[r];if(!n)throw new Error(`Unrecognized hash format: ${r}`);return C2(P2,r,n,t)}function Ase(e){return Hie(M2,e)}function pF(e){return qie(Hx,e)}function aHe(e){return Wie(Hx,e)}function sHe(e){return Kie(Hx,e)}function lHe(e){return Qie(Hx,e)}function cHe(e){return Zie(Hx,e)}function kse(e){return Yie(N2,e)}function uHe(e){return Xie(B2,e)}function dHe(e){return eae(PF,e)}function pHe(e){return tae(PF,e)}function mHe(e){return oae(Cse,e)}function fHe(e){return nae(Tse,e)}function Ese(e){return rae(Ise,e)}function gHe(){return iae(Dse)}function Gx(){return aae(Pse)}function MF(e){return sae(Mse,e)}function hHe(e){return lae(Nse,e)}function xHe(e){return cae(C6,e)}function T6(e,t){return pae(Bse,e,t)}function vHe(e){let t=e._zod.def.shape;return BF(Object.keys(t))}function yHe(e,t){let o={type:"object",shape:e??{},...Ye.normalizeParams(t)};return new I6(o)}function bHe(e,t){return new I6({type:"object",shape:e,catchall:MF(),...Ye.normalizeParams(t)})}function SHe(e,t){return new I6({type:"object",shape:e,catchall:Gx(),...Ye.normalizeParams(t)})}function NF(e,t){return new E6({type:"union",options:e,...Ye.normalizeParams(t)})}function wHe(e,t){return new Rse({type:"union",options:e,inclusive:!1,...Ye.normalizeParams(t)})}function AHe(e,t,o){return new Lse({type:"union",options:t,discriminator:e,...Ye.normalizeParams(o)})}function Fse(e,t){return new Ose({type:"intersection",left:e,right:t})}function Use(e,t,o){let r=t instanceof ro,n=r?o:t,a=r?t:null;return new _se({type:"tuple",items:e,rest:a,...Ye.normalizeParams(n)})}function zse(e,t,o){return new D6({type:"record",keyType:e,valueType:t,...Ye.normalizeParams(o)})}function kHe(e,t,o){let r=Ws(e);return r._zod.values=void 0,new D6({type:"record",keyType:r,valueType:t,...Ye.normalizeParams(o)})}function CHe(e,t,o){return new D6({type:"record",keyType:e,valueType:t,mode:"loose",...Ye.normalizeParams(o)})}function THe(e,t,o){return new $se({type:"map",keyType:e,valueType:t,...Ye.normalizeParams(o)})}function IHe(e,t){return new Gse({type:"set",valueType:e,...Ye.normalizeParams(t)})}function BF(e,t){let o=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new E2({type:"enum",entries:o,...Ye.normalizeParams(t)})}function EHe(e,t){return new E2({type:"enum",entries:e,...Ye.normalizeParams(t)})}function DHe(e,t){return new Hse({type:"literal",values:Array.isArray(e)?e:[e],...Ye.normalizeParams(t)})}function PHe(e){return mae(jse,e)}function RF(e){return new qse({type:"transform",transform:e})}function S6(e){return new LF({type:"optional",innerType:e})}function Kse(e){return new Wse({type:"optional",innerType:e})}function w6(e){return new Qse({type:"nullable",innerType:e})}function MHe(e){return S6(w6(e))}function Yse(e,t){return new Zse({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():Ye.shallowClone(t)}})}function Xse(e,t){return new Jse({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():Ye.shallowClone(t)}})}function Vse(e,t){return new OF({type:"nonoptional",innerType:e,...Ye.normalizeParams(t)})}function NHe(e){return new ele({type:"success",innerType:e})}function ole(e,t){return new tle({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}function BHe(e){return dae(nle,e)}function A6(e,t){return new FF({type:"pipe",in:e,out:t})}function RHe(e,t,o){return new _F({type:"pipe",in:e,out:t,transform:o.decode,reverseTransform:o.encode})}function ile(e){return new rle({type:"readonly",innerType:e})}function LHe(e,t){return new ale({type:"template_literal",parts:e,...Ye.normalizeParams(t)})}function lle(e){return new sle({type:"lazy",getter:e})}function OHe(e){return new cle({type:"promise",innerType:e})}function FHe(e){return new ule({type:"function",input:Array.isArray(e?.input)?Use(e?.input):e?.input??T6(Gx()),output:e?.output??Gx()})}function _He(e){let t=new Hn({check:"custom"});return t._zod.check=e,t}function UHe(e,t){return fae(P6,e??(()=>!0),t)}function dle(e,t={}){return gae(P6,e,t)}function ple(e){return hae(e)}function GHe(e,t={}){let o=new P6({type:"custom",check:"custom",fn:r=>r instanceof e,abort:!0,...Ye.normalizeParams(t)});return o._zod.bag.Class=e,o._zod.check=r=>{r.value instanceof e||r.issues.push({code:"invalid_type",expected:e.name,input:r.value,inst:o,path:[...o._zod.def.path??[]]})},o}function jHe(e){let t=lle(()=>NF([dF(e),Ase(),kse(),Ese(),T6(t),zse(dF(),t)]));return t}function qHe(e,t){return A6(RF(e),t)}var bo,mF,D2,Ln,fF,b6,bp,k6,gF,hF,xF,vF,yF,bF,SF,wF,wse,AF,kF,CF,TF,IF,EF,DF,P2,M2,Hx,N2,B2,PF,Cse,Tse,Ise,Dse,Pse,Mse,Nse,C6,Bse,I6,E6,Rse,Lse,Ose,_se,D6,$se,Gse,E2,Hse,jse,qse,LF,Wse,Qse,Zse,Jse,OF,ele,tle,nle,FF,_F,rle,ale,sle,cle,ule,P6,zHe,$He,HHe,y6=h(()=>{d();Rl();Rl();h6();g6();aF();x6();Sse();bo=fe("ZodType",(e,t)=>(ro.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:T2(e,"input"),output:T2(e,"output")}}),e.toJSONSchema=bae(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...o)=>e.clone(Ye.mergeDefs(t,{checks:[...t.checks??[],...o.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(o,r)=>Ws(e,o,r),e.brand=()=>e,e.register=((o,r)=>(o.add(e,r),e)),e.parse=(o,r)=>cse(e,o,r,{callee:e.parse}),e.safeParse=(o,r)=>dse(e,o,r),e.parseAsync=async(o,r)=>use(e,o,r,{callee:e.parseAsync}),e.safeParseAsync=async(o,r)=>pse(e,o,r),e.spa=e.safeParseAsync,e.encode=(o,r)=>mse(e,o,r),e.decode=(o,r)=>fse(e,o,r),e.encodeAsync=async(o,r)=>gse(e,o,r),e.decodeAsync=async(o,r)=>hse(e,o,r),e.safeEncode=(o,r)=>xse(e,o,r),e.safeDecode=(o,r)=>vse(e,o,r),e.safeEncodeAsync=async(o,r)=>yse(e,o,r),e.safeDecodeAsync=async(o,r)=>bse(e,o,r),e.refine=(o,r)=>e.check(dle(o,r)),e.superRefine=o=>e.check(ple(o)),e.overwrite=o=>e.check(Hu(o)),e.optional=()=>S6(e),e.exactOptional=()=>Kse(e),e.nullable=()=>w6(e),e.nullish=()=>S6(w6(e)),e.nonoptional=o=>Vse(e,o),e.array=()=>T6(e),e.or=o=>NF([e,o]),e.and=o=>Fse(e,o),e.transform=o=>A6(e,RF(o)),e.default=o=>Yse(e,o),e.prefault=o=>Xse(e,o),e.catch=o=>ole(e,o),e.pipe=o=>A6(e,o),e.readonly=()=>ile(e),e.describe=o=>{let r=e.clone();return Qa.add(r,{description:o}),r},Object.defineProperty(e,"description",{get(){return Qa.get(e)?.description},configurable:!0}),e.meta=(...o)=>{if(o.length===0)return Qa.get(e);let r=e.clone();return Qa.add(r,o[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=o=>o(e),e)),mF=fe("_ZodString",(e,t)=>{_x.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(r,n,a)=>Sae(e,r,n,a);let o=e._zod.bag;e.format=o.format??null,e.minLength=o.minimum??null,e.maxLength=o.maximum??null,e.regex=(...r)=>e.check(m2(...r)),e.includes=(...r)=>e.check(h2(...r)),e.startsWith=(...r)=>e.check(x2(...r)),e.endsWith=(...r)=>e.check(v2(...r)),e.min=(...r)=>e.check(Fm(...r)),e.max=(...r)=>e.check(zx(...r)),e.length=(...r)=>e.check($x(...r)),e.nonempty=(...r)=>e.check(Fm(1,...r)),e.lowercase=r=>e.check(f2(r)),e.uppercase=r=>e.check(g2(r)),e.trim=()=>e.check(S2()),e.normalize=(...r)=>e.check(b2(...r)),e.toLowerCase=()=>e.check(w2()),e.toUpperCase=()=>e.check(A2()),e.slugify=()=>e.check(k2())}),D2=fe("ZodString",(e,t)=>{_x.init(e,t),mF.init(e,t),e.email=o=>e.check(DO(fF,o)),e.url=o=>e.check(f6(k6,o)),e.jwt=o=>e.check(QO(DF,o)),e.emoji=o=>e.check(RO(gF,o)),e.guid=o=>e.check(m6(b6,o)),e.uuid=o=>e.check(PO(bp,o)),e.uuidv4=o=>e.check(MO(bp,o)),e.uuidv6=o=>e.check(NO(bp,o)),e.uuidv7=o=>e.check(BO(bp,o)),e.nanoid=o=>e.check(LO(hF,o)),e.guid=o=>e.check(m6(b6,o)),e.cuid=o=>e.check(OO(xF,o)),e.cuid2=o=>e.check(FO(vF,o)),e.ulid=o=>e.check(_O(yF,o)),e.base64=o=>e.check(qO(TF,o)),e.base64url=o=>e.check(WO(IF,o)),e.xid=o=>e.check(UO(bF,o)),e.ksuid=o=>e.check(zO(SF,o)),e.ipv4=o=>e.check($O(wF,o)),e.ipv6=o=>e.check(GO(AF,o)),e.cidrv4=o=>e.check(HO(kF,o)),e.cidrv6=o=>e.check(jO(CF,o)),e.e164=o=>e.check(KO(EF,o)),e.datetime=o=>e.check(rse(o)),e.date=o=>e.check(ise(o)),e.time=o=>e.check(ase(o)),e.duration=o=>e.check(sse(o))});Ln=fe("ZodStringFormat",(e,t)=>{Rn.init(e,t),mF.init(e,t)}),fF=fe("ZodEmail",(e,t)=>{Sre.init(e,t),Ln.init(e,t)});b6=fe("ZodGUID",(e,t)=>{yre.init(e,t),Ln.init(e,t)});bp=fe("ZodUUID",(e,t)=>{bre.init(e,t),Ln.init(e,t)});k6=fe("ZodURL",(e,t)=>{wre.init(e,t),Ln.init(e,t)});gF=fe("ZodEmoji",(e,t)=>{Are.init(e,t),Ln.init(e,t)});hF=fe("ZodNanoID",(e,t)=>{kre.init(e,t),Ln.init(e,t)});xF=fe("ZodCUID",(e,t)=>{Cre.init(e,t),Ln.init(e,t)});vF=fe("ZodCUID2",(e,t)=>{Tre.init(e,t),Ln.init(e,t)});yF=fe("ZodULID",(e,t)=>{Ire.init(e,t),Ln.init(e,t)});bF=fe("ZodXID",(e,t)=>{Ere.init(e,t),Ln.init(e,t)});SF=fe("ZodKSUID",(e,t)=>{Dre.init(e,t),Ln.init(e,t)});wF=fe("ZodIPv4",(e,t)=>{Rre.init(e,t),Ln.init(e,t)});wse=fe("ZodMAC",(e,t)=>{Ore.init(e,t),Ln.init(e,t)});AF=fe("ZodIPv6",(e,t)=>{Lre.init(e,t),Ln.init(e,t)});kF=fe("ZodCIDRv4",(e,t)=>{Fre.init(e,t),Ln.init(e,t)});CF=fe("ZodCIDRv6",(e,t)=>{_re.init(e,t),Ln.init(e,t)});TF=fe("ZodBase64",(e,t)=>{zre.init(e,t),Ln.init(e,t)});IF=fe("ZodBase64URL",(e,t)=>{$re.init(e,t),Ln.init(e,t)});EF=fe("ZodE164",(e,t)=>{Gre.init(e,t),Ln.init(e,t)});DF=fe("ZodJWT",(e,t)=>{Hre.init(e,t),Ln.init(e,t)});P2=fe("ZodCustomStringFormat",(e,t)=>{jre.init(e,t),Ln.init(e,t)});M2=fe("ZodNumber",(e,t)=>{bO.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(r,n,a)=>wae(e,r,n,a),e.gt=(r,n)=>e.check(vp(r,n)),e.gte=(r,n)=>e.check(Ks(r,n)),e.min=(r,n)=>e.check(Ks(r,n)),e.lt=(r,n)=>e.check(xp(r,n)),e.lte=(r,n)=>e.check(ic(r,n)),e.max=(r,n)=>e.check(ic(r,n)),e.int=r=>e.check(pF(r)),e.safe=r=>e.check(pF(r)),e.positive=r=>e.check(vp(0,r)),e.nonnegative=r=>e.check(Ks(0,r)),e.negative=r=>e.check(xp(0,r)),e.nonpositive=r=>e.check(ic(0,r)),e.multipleOf=(r,n)=>e.check(d0(r,n)),e.step=(r,n)=>e.check(d0(r,n)),e.finite=()=>e;let o=e._zod.bag;e.minValue=Math.max(o.minimum??Number.NEGATIVE_INFINITY,o.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(o.maximum??Number.POSITIVE_INFINITY,o.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(o.format??"").includes("int")||Number.isSafeInteger(o.multipleOf??.5),e.isFinite=!0,e.format=o.format??null});Hx=fe("ZodNumberFormat",(e,t)=>{qre.init(e,t),M2.init(e,t)});N2=fe("ZodBoolean",(e,t)=>{s6.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Aae(e,o,r,n)});B2=fe("ZodBigInt",(e,t)=>{SO.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(r,n,a)=>kae(e,r,n,a),e.gte=(r,n)=>e.check(Ks(r,n)),e.min=(r,n)=>e.check(Ks(r,n)),e.gt=(r,n)=>e.check(vp(r,n)),e.gte=(r,n)=>e.check(Ks(r,n)),e.min=(r,n)=>e.check(Ks(r,n)),e.lt=(r,n)=>e.check(xp(r,n)),e.lte=(r,n)=>e.check(ic(r,n)),e.max=(r,n)=>e.check(ic(r,n)),e.positive=r=>e.check(vp(BigInt(0),r)),e.negative=r=>e.check(xp(BigInt(0),r)),e.nonpositive=r=>e.check(ic(BigInt(0),r)),e.nonnegative=r=>e.check(Ks(BigInt(0),r)),e.multipleOf=(r,n)=>e.check(d0(r,n));let o=e._zod.bag;e.minValue=o.minimum??null,e.maxValue=o.maximum??null,e.format=o.format??null});PF=fe("ZodBigIntFormat",(e,t)=>{Wre.init(e,t),B2.init(e,t)});Cse=fe("ZodSymbol",(e,t)=>{Kre.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Cae(e,o,r,n)});Tse=fe("ZodUndefined",(e,t)=>{Qre.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Iae(e,o,r,n)});Ise=fe("ZodNull",(e,t)=>{Zre.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Tae(e,o,r,n)});Dse=fe("ZodAny",(e,t)=>{Yre.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Pae(e,o,r,n)});Pse=fe("ZodUnknown",(e,t)=>{Jre.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Mae(e,o,r,n)});Mse=fe("ZodNever",(e,t)=>{Xre.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Dae(e,o,r,n)});Nse=fe("ZodVoid",(e,t)=>{Vre.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Eae(e,o,r,n)});C6=fe("ZodDate",(e,t)=>{eie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(r,n,a)=>Nae(e,r,n,a),e.min=(r,n)=>e.check(Ks(r,n)),e.max=(r,n)=>e.check(ic(r,n));let o=e._zod.bag;e.minDate=o.minimum?new Date(o.minimum):null,e.maxDate=o.maximum?new Date(o.maximum):null});Bse=fe("ZodArray",(e,t)=>{tie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>jae(e,o,r,n),e.element=t.element,e.min=(o,r)=>e.check(Fm(o,r)),e.nonempty=o=>e.check(Fm(1,o)),e.max=(o,r)=>e.check(zx(o,r)),e.length=(o,r)=>e.check($x(o,r)),e.unwrap=()=>e.element});I6=fe("ZodObject",(e,t)=>{oie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>qae(e,o,r,n),Ye.defineLazy(e,"shape",()=>t.shape),e.keyof=()=>BF(Object.keys(e._zod.def.shape)),e.catchall=o=>e.clone({...e._zod.def,catchall:o}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Gx()}),e.loose=()=>e.clone({...e._zod.def,catchall:Gx()}),e.strict=()=>e.clone({...e._zod.def,catchall:MF()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=o=>Ye.extend(e,o),e.safeExtend=o=>Ye.safeExtend(e,o),e.merge=o=>Ye.merge(e,o),e.pick=o=>Ye.pick(e,o),e.omit=o=>Ye.omit(e,o),e.partial=(...o)=>Ye.partial(LF,e,o[0]),e.required=(...o)=>Ye.required(OF,e,o[0])});E6=fe("ZodUnion",(e,t)=>{l6.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>tF(e,o,r,n),e.options=t.options});Rse=fe("ZodXor",(e,t)=>{E6.init(e,t),nie.init(e,t),e._zod.processJSONSchema=(o,r,n)=>tF(e,o,r,n),e.options=t.options});Lse=fe("ZodDiscriminatedUnion",(e,t)=>{E6.init(e,t),rie.init(e,t)});Ose=fe("ZodIntersection",(e,t)=>{iie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Wae(e,o,r,n)});_se=fe("ZodTuple",(e,t)=>{wO.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Kae(e,o,r,n),e.rest=o=>e.clone({...e._zod.def,rest:o})});D6=fe("ZodRecord",(e,t)=>{aie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Qae(e,o,r,n),e.keyType=t.keyType,e.valueType=t.valueType});$se=fe("ZodMap",(e,t)=>{sie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Gae(e,o,r,n),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...o)=>e.check(yp(...o)),e.nonempty=o=>e.check(yp(1,o)),e.max=(...o)=>e.check(p0(...o)),e.size=(...o)=>e.check(Ux(...o))});Gse=fe("ZodSet",(e,t)=>{lie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Hae(e,o,r,n),e.min=(...o)=>e.check(yp(...o)),e.nonempty=o=>e.check(yp(1,o)),e.max=(...o)=>e.check(p0(...o)),e.size=(...o)=>e.check(Ux(...o))});E2=fe("ZodEnum",(e,t)=>{cie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(r,n,a)=>Bae(e,r,n,a),e.enum=t.entries,e.options=Object.values(t.entries);let o=new Set(Object.keys(t.entries));e.extract=(r,n)=>{let a={};for(let s of r)if(o.has(s))a[s]=t.entries[s];else throw new Error(`Key ${s} not found in enum`);return new E2({...t,checks:[],...Ye.normalizeParams(n),entries:a})},e.exclude=(r,n)=>{let a={...t.entries};for(let s of r)if(o.has(s))delete a[s];else throw new Error(`Key ${s} not found in enum`);return new E2({...t,checks:[],...Ye.normalizeParams(n),entries:a})}});Hse=fe("ZodLiteral",(e,t)=>{uie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Rae(e,o,r,n),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});jse=fe("ZodFile",(e,t)=>{die.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Fae(e,o,r,n),e.min=(o,r)=>e.check(yp(o,r)),e.max=(o,r)=>e.check(p0(o,r)),e.mime=(o,r)=>e.check(y2(Array.isArray(o)?o:[o],r))});qse=fe("ZodTransform",(e,t)=>{pie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>$ae(e,o,r,n),e._zod.parse=(o,r)=>{if(r.direction==="backward")throw new a0(e.constructor.name);o.addIssue=a=>{if(typeof a=="string")o.issues.push(Ye.issue(a,o.value,t));else{let s=a;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),s.input??(s.input=o.value),s.inst??(s.inst=e),o.issues.push(Ye.issue(s))}};let n=t.transform(o.value,o);return n instanceof Promise?n.then(a=>(o.value=a,o)):(o.value=n,o)}});LF=fe("ZodOptional",(e,t)=>{AO.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>oF(e,o,r,n),e.unwrap=()=>e._zod.def.innerType});Wse=fe("ZodExactOptional",(e,t)=>{mie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>oF(e,o,r,n),e.unwrap=()=>e._zod.def.innerType});Qse=fe("ZodNullable",(e,t)=>{fie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Zae(e,o,r,n),e.unwrap=()=>e._zod.def.innerType});Zse=fe("ZodDefault",(e,t)=>{gie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Jae(e,o,r,n),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});Jse=fe("ZodPrefault",(e,t)=>{hie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Xae(e,o,r,n),e.unwrap=()=>e._zod.def.innerType});OF=fe("ZodNonOptional",(e,t)=>{xie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Yae(e,o,r,n),e.unwrap=()=>e._zod.def.innerType});ele=fe("ZodSuccess",(e,t)=>{vie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>_ae(e,o,r,n),e.unwrap=()=>e._zod.def.innerType});tle=fe("ZodCatch",(e,t)=>{yie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Vae(e,o,r,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});nle=fe("ZodNaN",(e,t)=>{bie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Lae(e,o,r,n)});FF=fe("ZodPipe",(e,t)=>{Sie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>ese(e,o,r,n),e.in=t.in,e.out=t.out});_F=fe("ZodCodec",(e,t)=>{FF.init(e,t),c6.init(e,t)});rle=fe("ZodReadonly",(e,t)=>{wie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>tse(e,o,r,n),e.unwrap=()=>e._zod.def.innerType});ale=fe("ZodTemplateLiteral",(e,t)=>{Aie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Oae(e,o,r,n)});sle=fe("ZodLazy",(e,t)=>{Tie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>nse(e,o,r,n),e.unwrap=()=>e._zod.def.getter()});cle=fe("ZodPromise",(e,t)=>{Cie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>ose(e,o,r,n),e.unwrap=()=>e._zod.def.innerType});ule=fe("ZodFunction",(e,t)=>{kie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>zae(e,o,r,n)});P6=fe("ZodCustom",(e,t)=>{Iie.init(e,t),bo.init(e,t),e._zod.processJSONSchema=(o,r,n)=>Uae(e,o,r,n)});zHe=xae,$He=vae;HHe=(...e)=>yae({Codec:_F,Boolean:N2,String:D2},...e)});function n3t(e){Xr({customError:e})}function r3t(){return Xr().customError}var o3t,mle,WHe=h(()=>{d();Rl();Rl();o3t={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};mle||(mle={})});function a3t(e,t){let o=e.$schema;return o==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":o==="http://json-schema.org/draft-07/schema#"?"draft-7":o==="http://json-schema.org/draft-04/schema#"?"draft-4":t??"draft-2020-12"}function s3t(e,t){if(!e.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let o=e.slice(1).split("/").filter(Boolean);if(o.length===0)return t.rootSchema;let r=t.version==="draft-2020-12"?"$defs":"definitions";if(o[0]===r){let n=o[1];if(!n||!t.defs[n])throw new Error(`Reference not found: ${e}`);return t.defs[n]}throw new Error(`Reference not found: ${e}`)}function KHe(e,t){if(e.not!==void 0){if(typeof e.not=="object"&&Object.keys(e.not).length===0)return xt.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(e.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(e.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(e.if!==void 0||e.then!==void 0||e.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(e.dependentSchemas!==void 0||e.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(e.$ref){let n=e.$ref;if(t.refs.has(n))return t.refs.get(n);if(t.processing.has(n))return xt.lazy(()=>{if(!t.refs.has(n))throw new Error(`Circular reference not resolved: ${n}`);return t.refs.get(n)});t.processing.add(n);let a=s3t(n,t),s=xs(a,t);return t.refs.set(n,s),t.processing.delete(n),s}if(e.enum!==void 0){let n=e.enum;if(t.version==="openapi-3.0"&&e.nullable===!0&&n.length===1&&n[0]===null)return xt.null();if(n.length===0)return xt.never();if(n.length===1)return xt.literal(n[0]);if(n.every(s=>typeof s=="string"))return xt.enum(n);let a=n.map(s=>xt.literal(s));return a.length<2?a[0]:xt.union([a[0],a[1],...a.slice(2)])}if(e.const!==void 0)return xt.literal(e.const);let o=e.type;if(Array.isArray(o)){let n=o.map(a=>{let s={...e,type:a};return KHe(s,t)});return n.length===0?xt.never():n.length===1?n[0]:xt.union(n)}if(!o)return xt.any();let r;switch(o){case"string":{let n=xt.string();if(e.format){let a=e.format;a==="email"?n=n.check(xt.email()):a==="uri"||a==="uri-reference"?n=n.check(xt.url()):a==="uuid"||a==="guid"?n=n.check(xt.uuid()):a==="date-time"?n=n.check(xt.iso.datetime()):a==="date"?n=n.check(xt.iso.date()):a==="time"?n=n.check(xt.iso.time()):a==="duration"?n=n.check(xt.iso.duration()):a==="ipv4"?n=n.check(xt.ipv4()):a==="ipv6"?n=n.check(xt.ipv6()):a==="mac"?n=n.check(xt.mac()):a==="cidr"?n=n.check(xt.cidrv4()):a==="cidr-v6"?n=n.check(xt.cidrv6()):a==="base64"?n=n.check(xt.base64()):a==="base64url"?n=n.check(xt.base64url()):a==="e164"?n=n.check(xt.e164()):a==="jwt"?n=n.check(xt.jwt()):a==="emoji"?n=n.check(xt.emoji()):a==="nanoid"?n=n.check(xt.nanoid()):a==="cuid"?n=n.check(xt.cuid()):a==="cuid2"?n=n.check(xt.cuid2()):a==="ulid"?n=n.check(xt.ulid()):a==="xid"?n=n.check(xt.xid()):a==="ksuid"&&(n=n.check(xt.ksuid()))}typeof e.minLength=="number"&&(n=n.min(e.minLength)),typeof e.maxLength=="number"&&(n=n.max(e.maxLength)),e.pattern&&(n=n.regex(new RegExp(e.pattern))),r=n;break}case"number":case"integer":{let n=o==="integer"?xt.number().int():xt.number();typeof e.minimum=="number"&&(n=n.min(e.minimum)),typeof e.maximum=="number"&&(n=n.max(e.maximum)),typeof e.exclusiveMinimum=="number"?n=n.gt(e.exclusiveMinimum):e.exclusiveMinimum===!0&&typeof e.minimum=="number"&&(n=n.gt(e.minimum)),typeof e.exclusiveMaximum=="number"?n=n.lt(e.exclusiveMaximum):e.exclusiveMaximum===!0&&typeof e.maximum=="number"&&(n=n.lt(e.maximum)),typeof e.multipleOf=="number"&&(n=n.multipleOf(e.multipleOf)),r=n;break}case"boolean":{r=xt.boolean();break}case"null":{r=xt.null();break}case"object":{let n={},a=e.properties||{},s=new Set(e.required||[]);for(let[c,u]of Object.entries(a)){let p=xs(u,t);n[c]=s.has(c)?p:p.optional()}if(e.propertyNames){let c=xs(e.propertyNames,t),u=e.additionalProperties&&typeof e.additionalProperties=="object"?xs(e.additionalProperties,t):xt.any();if(Object.keys(n).length===0){r=xt.record(c,u);break}let p=xt.object(n).passthrough(),m=xt.looseRecord(c,u);r=xt.intersection(p,m);break}if(e.patternProperties){let c=e.patternProperties,u=Object.keys(c),p=[];for(let g of u){let x=xs(c[g],t),v=xt.string().regex(new RegExp(g));p.push(xt.looseRecord(v,x))}let m=[];if(Object.keys(n).length>0&&m.push(xt.object(n).passthrough()),m.push(...p),m.length===0)r=xt.object({}).passthrough();else if(m.length===1)r=m[0];else{let g=xt.intersection(m[0],m[1]);for(let x=2;xxs(c,t)),l=a&&typeof a=="object"&&!Array.isArray(a)?xs(a,t):void 0;l?r=xt.tuple(s).rest(l):r=xt.tuple(s),typeof e.minItems=="number"&&(r=r.check(xt.minLength(e.minItems))),typeof e.maxItems=="number"&&(r=r.check(xt.maxLength(e.maxItems)))}else if(Array.isArray(a)){let s=a.map(c=>xs(c,t)),l=e.additionalItems&&typeof e.additionalItems=="object"?xs(e.additionalItems,t):void 0;l?r=xt.tuple(s).rest(l):r=xt.tuple(s),typeof e.minItems=="number"&&(r=r.check(xt.minLength(e.minItems))),typeof e.maxItems=="number"&&(r=r.check(xt.maxLength(e.maxItems)))}else if(a!==void 0){let s=xs(a,t),l=xt.array(s);typeof e.minItems=="number"&&(l=l.min(e.minItems)),typeof e.maxItems=="number"&&(l=l.max(e.maxItems)),r=l}else r=xt.array(xt.any());break}default:throw new Error(`Unsupported type: ${o}`)}return e.description&&(r=r.describe(e.description)),e.default!==void 0&&(r=r.default(e.default)),r}function xs(e,t){if(typeof e=="boolean")return e?xt.any():xt.never();let o=KHe(e,t),r=e.type||e.enum!==void 0||e.const!==void 0;if(e.anyOf&&Array.isArray(e.anyOf)){let l=e.anyOf.map(u=>xs(u,t)),c=xt.union(l);o=r?xt.intersection(o,c):c}if(e.oneOf&&Array.isArray(e.oneOf)){let l=e.oneOf.map(u=>xs(u,t)),c=xt.xor(l);o=r?xt.intersection(o,c):c}if(e.allOf&&Array.isArray(e.allOf))if(e.allOf.length===0)o=r?o:xt.any();else{let l=r?o:xs(e.allOf[0],t),c=r?0:1;for(let u=c;u0&&t.registry.add(o,n),o}function QHe(e,t){if(typeof e=="boolean")return e?xt.any():xt.never();let o=a3t(e,t?.defaultTarget),r=e.$defs||e.definitions||{},n={version:o,defs:r,refs:new Map,processing:new Set,rootSchema:e,registry:t?.registry??Qa};return xs(e,n)}var xt,i3t,ZHe=h(()=>{d();p6();aF();x6();y6();xt={...v6,...iF,iso:I2},i3t=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"])});var fle={};Bt(fle,{bigint:()=>d3t,boolean:()=>u3t,date:()=>p3t,number:()=>c3t,string:()=>l3t});function l3t(e){return Oie(D2,e)}function c3t(e){return jie(M2,e)}function u3t(e){return Jie(N2,e)}function d3t(e){return Vie(B2,e)}function p3t(e){return uae(C6,e)}var YHe=h(()=>{d();Rl();y6()});var gle={};Bt(gle,{$brand:()=>YL,$input:()=>Rie,$output:()=>Bie,NEVER:()=>ane,TimePrecision:()=>_ie,ZodAny:()=>Dse,ZodArray:()=>Bse,ZodBase64:()=>TF,ZodBase64URL:()=>IF,ZodBigInt:()=>B2,ZodBigIntFormat:()=>PF,ZodBoolean:()=>N2,ZodCIDRv4:()=>kF,ZodCIDRv6:()=>CF,ZodCUID:()=>xF,ZodCUID2:()=>vF,ZodCatch:()=>tle,ZodCodec:()=>_F,ZodCustom:()=>P6,ZodCustomStringFormat:()=>P2,ZodDate:()=>C6,ZodDefault:()=>Zse,ZodDiscriminatedUnion:()=>Lse,ZodE164:()=>EF,ZodEmail:()=>fF,ZodEmoji:()=>gF,ZodEnum:()=>E2,ZodError:()=>e3t,ZodExactOptional:()=>Wse,ZodFile:()=>jse,ZodFirstPartyTypeKind:()=>mle,ZodFunction:()=>ule,ZodGUID:()=>b6,ZodIPv4:()=>wF,ZodIPv6:()=>AF,ZodISODate:()=>lF,ZodISODateTime:()=>sF,ZodISODuration:()=>uF,ZodISOTime:()=>cF,ZodIntersection:()=>Ose,ZodIssueCode:()=>o3t,ZodJWT:()=>DF,ZodKSUID:()=>SF,ZodLazy:()=>sle,ZodLiteral:()=>Hse,ZodMAC:()=>wse,ZodMap:()=>$se,ZodNaN:()=>nle,ZodNanoID:()=>hF,ZodNever:()=>Mse,ZodNonOptional:()=>OF,ZodNull:()=>Ise,ZodNullable:()=>Qse,ZodNumber:()=>M2,ZodNumberFormat:()=>Hx,ZodObject:()=>I6,ZodOptional:()=>LF,ZodPipe:()=>FF,ZodPrefault:()=>Jse,ZodPromise:()=>cle,ZodReadonly:()=>rle,ZodRealError:()=>Ll,ZodRecord:()=>D6,ZodSet:()=>Gse,ZodString:()=>D2,ZodStringFormat:()=>Ln,ZodSuccess:()=>ele,ZodSymbol:()=>Cse,ZodTemplateLiteral:()=>ale,ZodTransform:()=>qse,ZodTuple:()=>_se,ZodType:()=>bo,ZodULID:()=>yF,ZodURL:()=>k6,ZodUUID:()=>bp,ZodUndefined:()=>Tse,ZodUnion:()=>E6,ZodUnknown:()=>Pse,ZodVoid:()=>Nse,ZodXID:()=>bF,ZodXor:()=>Rse,_ZodString:()=>mF,_default:()=>Yse,_function:()=>FHe,any:()=>gHe,array:()=>T6,base64:()=>XGe,base64url:()=>VGe,bigint:()=>uHe,boolean:()=>kse,catch:()=>ole,check:()=>_He,cidrv4:()=>YGe,cidrv6:()=>JGe,clone:()=>Ws,codec:()=>RHe,coerce:()=>fle,config:()=>Xr,core:()=>_m,cuid:()=>GGe,cuid2:()=>HGe,custom:()=>UHe,date:()=>xHe,decode:()=>fse,decodeAsync:()=>hse,describe:()=>zHe,discriminatedUnion:()=>AHe,e164:()=>eHe,email:()=>NGe,emoji:()=>zGe,encode:()=>mse,encodeAsync:()=>gse,endsWith:()=>v2,enum:()=>BF,exactOptional:()=>Kse,file:()=>PHe,flattenError:()=>o6,float32:()=>aHe,float64:()=>sHe,formatError:()=>n6,fromJSONSchema:()=>QHe,function:()=>FHe,getErrorMap:()=>r3t,globalRegistry:()=>Qa,gt:()=>vp,gte:()=>Ks,guid:()=>BGe,hash:()=>iHe,hex:()=>rHe,hostname:()=>nHe,httpUrl:()=>UGe,includes:()=>h2,instanceof:()=>GHe,int:()=>pF,int32:()=>lHe,int64:()=>dHe,intersection:()=>Fse,ipv4:()=>KGe,ipv6:()=>ZGe,iso:()=>I2,json:()=>jHe,jwt:()=>tHe,keyof:()=>vHe,ksuid:()=>WGe,lazy:()=>lle,length:()=>$x,literal:()=>DHe,locales:()=>d6,looseObject:()=>SHe,looseRecord:()=>CHe,lowercase:()=>f2,lt:()=>xp,lte:()=>ic,mac:()=>QGe,map:()=>THe,maxLength:()=>zx,maxSize:()=>p0,meta:()=>$He,mime:()=>y2,minLength:()=>Fm,minSize:()=>yp,multipleOf:()=>d0,nan:()=>BHe,nanoid:()=>$Ge,nativeEnum:()=>EHe,negative:()=>YO,never:()=>MF,nonnegative:()=>XO,nonoptional:()=>Vse,nonpositive:()=>JO,normalize:()=>b2,null:()=>Ese,nullable:()=>w6,nullish:()=>MHe,number:()=>Ase,object:()=>yHe,optional:()=>S6,overwrite:()=>Hu,parse:()=>cse,parseAsync:()=>use,partialRecord:()=>kHe,pipe:()=>A6,positive:()=>ZO,prefault:()=>Xse,preprocess:()=>qHe,prettifyError:()=>vne,promise:()=>OHe,property:()=>VO,readonly:()=>ile,record:()=>zse,refine:()=>dle,regex:()=>m2,regexes:()=>Wc,registry:()=>EO,safeDecode:()=>vse,safeDecodeAsync:()=>bse,safeEncode:()=>xse,safeEncodeAsync:()=>yse,safeParse:()=>dse,safeParseAsync:()=>pse,set:()=>IHe,setErrorMap:()=>n3t,size:()=>Ux,slugify:()=>k2,startsWith:()=>x2,strictObject:()=>bHe,string:()=>dF,stringFormat:()=>oHe,stringbool:()=>HHe,success:()=>NHe,superRefine:()=>ple,symbol:()=>mHe,templateLiteral:()=>LHe,toJSONSchema:()=>nF,toLowerCase:()=>w2,toUpperCase:()=>A2,transform:()=>RF,treeifyError:()=>xne,trim:()=>S2,tuple:()=>Use,uint32:()=>cHe,uint64:()=>pHe,ulid:()=>jGe,undefined:()=>fHe,union:()=>NF,unknown:()=>Gx,uppercase:()=>g2,url:()=>_Ge,util:()=>Ye,uuid:()=>RGe,uuidv4:()=>LGe,uuidv6:()=>OGe,uuidv7:()=>FGe,void:()=>hHe,xid:()=>qGe,xor:()=>wHe});var hle=h(()=>{d();Rl();y6();aF();lse();Sse();WHe();Rl();Die();Rl();h6();ZHe();Nie();x6();x6();YHe();Xr(kO())});var h0,JHe=h(()=>{d();hle();hle();h0=gle});var m3t,XHe,VHe=h(()=>{d();nne();JHe();m3t=h0.discriminatedUnion("service",KA.map(e=>h0.object({service:h0.literal(e.name),type:h0.union(e.types.map(t=>h0.literal(t))),id:h0.string()}))),XHe=h0.array(m3t)});function f3t({overwrite:e,pending:t,setPending:o,onImport:r}){let n=jt(async()=>{o(!0);let a;try{a=JSON.parse(await pU())}catch{return o(!1),ne("No JSON in clipboard!",D.Type.FAILURE)}let{error:s,data:l}=XHe.max(fa.songLimit).safeParse(a);if(s)return o(!1),ne("Invalid Song Spotlight data in clipboard!",D.Type.FAILURE);if(!(await Promise.allSettled(l.map(u=>Lm.validateSong(u)))).every(u=>u.status==="fulfilled"&&u.value))return o(!1),ne("One or more imported songs were invalid.",D.Type.FAILURE);r(l),o(!1),ne("Imported songs from clipboard!",D.Type.SUCCESS)},[t]);return i(de,{variant:"secondary",onClick:async()=>{e?Oo.show({title:"Are you sure?",body:"This will overwrite your current songs.",onConfirm:n,confirmText:"Continue",cancelText:"Nevermind"}):n()},disabled:t},"Import from clipboard")}function UF({templateData:e}){let{isAuthorized:t,deleteTokens:o}=qs(),{self:r}=Jr(),n=Se(!1),[a,s]=T(e??r?.data);G(()=>{n.current?s(r?.data):n.current=!0},[r?.data]);let[l,c]=T(!a),u=Ne(()=>r?.data&&a?r.data.length===a.length&&r.data.map(mr).join(",")===a.map(mr).join(","):!0,[r?.data,a]);return G(()=>{t()&&!a&&HA().then(()=>c(!1))},[t()]),t()?i(pe,{flexDirection:"column",gap:"20px"},i(Y,{size:"md",weight:"normal"},"You can also view your songs via the ",kt.parse("")," command!"),a?i(pe,{flexDirection:"column",gap:"12px"},i(pe,{flexDirection:"column",gap:0},i(Y,{size:"lg",weight:"semibold"},"Songs"),r?.at&&i(Y,{size:"xs",weight:"normal",className:Zt("sub")},"Last updated ",i("b",null,Intl.DateTimeFormat().format(new Date(r.at))))),i(pe,{flexDirection:"column",gap:"6px"},i(ine,{localData:a,setLocalData:s})),i(pe,{flexDirection:"column",gap:"8px"},i("div",{className:Zt("twin-buttons")},i(de,{variant:"secondary",onClick:()=>ft(JSON.stringify(a)),disabled:l},"Copy to clipboard"),i(f3t,{overwrite:!!a[0],pending:l,setPending:c,onImport:s})),i(de,{variant:"primary",onClick:async()=>{c(!0);try{await RUe(a),ne("Successfully saved songs!",D.Type.SUCCESS)}finally{c(!1)}},disabled:u||l},"Save"))):i(Ml,{type:Ml.Type.WANDERING_CUBES}),i(pe,{flexDirection:"column",gap:"12px"},i(Y,{size:"lg",weight:"semibold"},"Authorization"),i("div",{className:Zt("twin-buttons")},i(de,{variant:"dangerPrimary",onClick:()=>{o(),ne("Successfully signed out!",D.Type.SUCCESS)},disabled:l},"Sign out"),i(de,{variant:"dangerSecondary",onClick:()=>Oo.show({title:"Are you sure?",body:"This will permanently delete all of your songs.",onConfirm:async()=>{c(!0);try{await LUe(),o(),ne("Successfully deleted songs!",D.Type.SUCCESS)}finally{c(!1)}},confirmColor:"danger",confirmText:"Delete",cancelText:"Nevermind"}),disabled:!r?.data[0]||l},"Delete songs")))):i(de,{onClick:()=>_Ue()},"Sign in to Song Spotlight")}function g3t({modalProps:e,...t}){return i(H,null,i(be,{...e,size:"lg",title:"Song Spotlight"},i("div",{style:{marginBottom:"20px"}},i(UF,{...t}))))}function x0(e){ce(t=>i(g3t,{modalProps:t,templateData:e}))}var M6=h(()=>{"use strict";d();yt();Tt();Pe();Lt();r0();UUe();Nx();Bx();$u();e2();i0();cze();VHe();Rm();mi();_e();C()});var R2,zF=h(()=>{"use strict";d();j();R();r0();M6();R2=M({collapseSongList:{type:3,description:"Collapses the song list on user profiles to a button which opens a separate menu",default:!1},profileSongsLimit:{type:5,description:"How many songs are shown when initially clicking on a user",default:fa.songLimit,markers:zt(1,3)},previewVolume:{type:5,description:"Volume of song previews when played",markers:[0,25,50,100],default:100,stickToMarkers:!1},manager:{type:6,component:()=>i(UF,null)}},{profileSongsLimit:{disabled(){return this.store.collapseSongList}}})});function h3t({audio:e,index:t,handleRef:o,handleLoaded:r,handleStopped:n}){let a=jt(p=>o(t,p),[t,o]),s=jt(()=>r(t,!0),[t,r]),l=jt(()=>r(t,!1),[t,r]),c=jt(()=>n(t),[t,n]),u=jt(()=>n(t,!0),[t,n]);return i("audio",{src:e.previewUrl,preload:"metadata",ref:a,onLoadedData:s,onError:l,onPause:c,onEnded:u})}function xle({audioRef:e,list:t,playing:o,setPlaying:r,setLoadedAudio:n}){let a=Ne(()=>t.map(g=>g.audio),[t]),s=Se(new Map),l=Se(new Set),c=Se(new Map),u=jt((g,x)=>{if(x){let k=function(){x&&x.currentTime>=A&&(x.volume=0,m(g,!0))};var v=k;s.current.set(g,x);let y=a[g];if(y?.previewStart===void 0||!y.previewSlice)return;let A=(y.previewStart+y.previewSlice)/1e3;x.addEventListener("timeupdate",k),c.current.set(g,()=>x.removeEventListener("timeupdate",k))}else s.current.delete(g),c.current.get(g)?.(),c.current.delete(g)},[a]),p=jt((g,x)=>{x?l.current.add(g):l.current.delete(g),n(g,x)},[n]),m=jt((g,x)=>{if(x){let v=l.current.values().toArray().sort().find(y=>y>g);r(v!==-1?v:void 0)}else o===g&&r(void 0)},[o,r]);return G(()=>{if(o!==void 0){let g=a[o],x=s.current.get(o);g&&x&&l.current.has(o)?(L2&&L2.pause(),x.currentTime=g.previewStart?g.previewStart/1e3:0,x.volume=x3t*(R2.store.previewVolume/100),x.play().catch(v=>{ne("Failed to play song preview!",D.Type.FAILURE),Xb.error("Failed to play audio",v),r(void 0)}),L2=x):r(void 0)}for(let[g,x]of s.current)o!==g&&!x.paused?x.pause():L2===x&&x.paused?(L2=void 0,e.current=void 0):x===L2&&(e.current=x)},[o,a]),i("div",{style:{display:"none"},"aria-hidden":"true"},a.map((g,x)=>g&&i(h3t,{key:g.previewUrl,audio:g,index:x,handleRef:u,handleLoaded:p,handleStopped:m})))}var x3t,L2,eje=h(()=>{"use strict";d();$u();zF();C();x3t=.35});function vle({border:e,audioRef:t,playingRef:o,...r}){let{radius:n,stroke:a,circumference:s}=Ne(()=>{let u=jx-e*2;return{radius:u,stroke:e*2,circumference:Math.PI*2*u}},[e]),[l,c]=T(0);return G(()=>{let u=requestAnimationFrame(function p(){let m=t.current,g=o.current?.audio;if(m&&g&&!Number.isNaN(m.duration)&&!m.paused){let x=0,v=m.duration;g.previewStart!==void 0&&g.previewSlice&&(x=g.previewStart/1e3,v=g.previewSlice/1e3),c(Math.min(Math.max((m.currentTime-x)/v,0),1))}else c(0);u=requestAnimationFrame(p)});return()=>cancelAnimationFrame(u)},[t]),i("svg",{...r,viewBox:`0 0 ${jx*2} ${jx*2}`},i("circle",{cx:jx,cy:jx,r:n,fill:"none",stroke:"currentColor",strokeWidth:a,strokeDasharray:s,strokeDashoffset:s*(1-l),strokeLinecap:"round",transform:`rotate(-90 ${jx} ${jx})`,"data-empty":l===0}))}var jx,tje=h(()=>{"use strict";d();C();jx=50});function v3t({entry:e,number:t,isLoaded:o,isPlaying:r,big:n,onClick:a}){let s=n?"md":"sm",l=n?"sm":"xs";return i(eo,{onContextMenu:c=>rt.openContextMenu(c,()=>i(P.Menu,{navId:"vc-songspotlight-song-entry",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":e.label},i(P.MenuItem,{id:"copy-link",label:"Copy link",icon:sn,leadingAccessory:{type:"icon",icon:sn},action:()=>ft(e.link)}),i(P.MenuItem,{id:"steal-song",label:"Steal song",icon:qA,leadingAccessory:{type:"icon",icon:qA},action:async()=>{let u=Jr.getState().self?.data??[];if(u.length>=fa.songLimit)return ne("You don't have enough space!");let p=await Lm.parseLink(e.link);if(!p)return ne("Uh oh, this song doesn't exist!",D.Type.FAILURE);if(u.find(m=>mr(m)===mr(p)))return ne("You already have this song added!");x0([...u,p])}}))),onClick:a},i(pe,{alignItems:"center",gap:"4px",className:Zt("song-entry"),"aria-disabled":!o,"data-playing":r},i(pe,{alignItems:"center",justifyContent:"center",gap:0,className:Zt("song-entry-number")},i(Y,{size:s,weight:"medium"},t)),i(pe,{flexDirection:"column",justifyContent:"center",gap:0},i(pe,{alignItems:"center",gap:"6px"},i(Y,{size:l,weight:"semibold",className:Zt("clamped"),title:e.label},e.label),e.explicit&&i(Xoe,null)),i(Y,{size:l,weight:"normal",className:Zt("clamped","sub"),title:e.sublabel},e.sublabel))))}function y3t({owned:e,song:t,render:o,big:r}){let[n,a]=T(void 0),[s,l]=T(new Set),c=jt((y,A)=>{A?s.add(y):s.delete(y),l(new Set(s))},[s]),u=Ne(()=>o.form==="single"?[o.single]:o.list,[o]),p=Se(void 0),m=Se(void 0);m.current=n!==void 0?u[n]:void 0;let g=Ne(()=>o.form==="single"?o.single.audio?.duration:n!==void 0?o.list[n].audio?.duration:void 0,[n,o]),x=r?"md":"sm",v=r?"sm":"xs";return i(pe,{flexDirection:"column",gap:0,className:Zt("song")},i(xle,{audioRef:p,list:u,playing:n,setPlaying:a,setLoadedAudio:c}),i("div",{className:Zt("song-grid")},i(pe,{gap:"8px",alignItems:"center",className:Zt("song-core")},i(ve,{text:FUe(t,o)},y=>i(pe,{...y,onContextMenu:A=>rt.openContextMenu(A,()=>i(P.Menu,{navId:"vc-songspotlight-song",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":o.label},i(P.MenuItem,{id:"copy-link",label:"Copy link",icon:sn,leadingAccessory:{type:"icon",icon:sn},action:()=>ft(o.link)}),e?i(P.MenuItem,{id:"remove-song",color:"danger",label:"Remove song",icon:o2,leadingAccessory:{type:"icon",icon:o2},action:()=>{let k=Jr.getState().self?.data??[],w=k.findIndex(I=>mr(I)===mr(t));if(w===-1)return ne("You... don't have this song added?");x0(k.toSpliced(w,1))}}):i(P.MenuItem,{id:"steal-song",label:"Steal song",icon:qA,leadingAccessory:{type:"icon",icon:qA},action:()=>{let k=Jr.getState().self?.data??[];if(k.length>=fa.songLimit)return ne("You don't have enough space!");if(k.find(w=>mr(w)===mr(t)))return ne("You already have this song added!");x0([...k,t])}}))),justifyContent:"center",alignItems:"center",gap:0,className:Zt("song-cover")},i(so,{href:o.link,style:{display:"contents"}},o.thumbnailUrl?i("img",{src:o.thumbnailUrl,alt:o.label}):i(jUe,{className:Zt("icon")})))),i(pe,{flexDirection:"column",justifyContent:"center",gap:0,className:Zt("clamped")},i(pe,{alignItems:"center",gap:"6px"},i(Y,{size:x,weight:"semibold",className:Zt("clamped"),title:o.label},o.label),o.explicit&&i(Xoe,null)),i(Y,{size:x,weight:"normal",className:Zt("clamped","sub"),title:o.sublabel},o.sublabel))),i(pe,{justifyContent:"flex-end",className:Zt("song-service")},i(WA,{service:t.service})),i(pe,{justifyContent:"flex-end",alignItems:"flex-end",gap:"6px",className:Zt("song-player"),"data-idle":n===void 0&&!r},g&&i(Y,{size:v,weight:"medium",className:Zt("mono","sub")},OUe(g)),i("div",{className:Zt("song-progress-container")},i(vle,{border:2.5,playingRef:m,audioRef:p,className:Zt("song-progress")}),i(GUe,{state:n!==void 0,disabled:s.size<1,onClick:()=>{if(n!==void 0)return a(void 0);let y=s.values().toArray().sort()[0];y!==void 0&&a(y)}})))),o.form==="list"&&i(f,null,i("div",{className:Zt("song-divider")}),i(ei,{fade:!0,className:Zt("song-list")},i(pe,{flexDirection:"column",gap:"3px"},o.list.map((y,A)=>i(v3t,{entry:y,number:(A+1).toString(),isLoaded:s.has(A),isPlaying:n===A,onClick:()=>{n===A?a(void 0):s.has(A)&&a(A)},big:r,key:y.link}))))))}function N6({owned:e,song:t,index:o,big:r}){let{failed:n,render:a}=qL(t);return n?null:i("div",{className:X(t2.overlay,WL.card,Zt("song-container",{"list-song-container":Yoe(t,a||void 0)})),style:{"--index":o.toString()}},a&&i(y3t,{owned:e,song:t,render:a,big:r}))}var yle=h(()=>{"use strict";d();yt();Lt();ot();$r();r0();Bx();$u();e2();i0();eje();tje();Voe();M6();Rm();_e();Be();C()});function ble({data:e,user:t,isSideBar:o}){let[r,n]=T(new Map),a=Ne(()=>e?.slice(0,$F),[e]),s=t?.id;G(()=>{if(n(new Map),!!a)for(let c of a)Lm.renderSong(c).catch(()=>null).then(u=>{u&&n(p=>new Map(p).set(mr(c),u))})},[a]);let l=i("section",{className:jA.container},i("ul",{className:jA.cardsList,tabIndex:-1},i("li",{className:jA.firstCardContainer},i("div",{className:Lx.breadcrumb,"aria-label":"Song Spotlight",role:"button",tabIndex:0,onClick:()=>{if(!L.getUser(s))return;let u=ao.getGuildId();oS.openUserProfileModal({userId:s,guildId:u,channelId:Fe.getChannelId(),analyticsLocation:{page:u?"Guild Channel":"DM Channel",section:"Profile Popout"},tabSection:"SONG_SPOTLIGHT"})}},i("div",{className:X(t2.overlay,Lx.innerContainer,jA.card)},i(Y,{size:o?"sm":"xs",weight:"medium"},"Song Spotlight"),i("div",{className:Lx.icons},a&&e?a.map((c,u)=>{let p=r.get(mr(c)),m=u===$F-1&&e.length>$F;return i("div",{className:Lx.icon,key:u},p?.thumbnailUrl&&i("img",{src:p.thumbnailUrl,alt:p.label,className:X(m&&Lx.displayCount)}),m&&i("div",{className:Lx.displayCountText},i(Y,{size:o?"sm":"xs",weight:"medium"},"+",e.length-$F)))}):i(Ml,{type:Ml.Type.SPINNING_CIRCLE})))))));return o?i("div",{className:$Ue.widgetPreviews},l):l}var $F,oje=h(()=>{"use strict";d();Ih();e2();i0();Rm();Su();C();$F=4});function Sle({user:e,isSideBar:t}){let[o,r]=T(!1),{isAuthorized:n}=qs(),{users:a}=Jr(),{profileSongsLimit:s,collapseSongList:l}=R2.use(),c=e.id,u=a[c]?.data;G(()=>{n()&&!u&&GL(c).catch(()=>r(!0))},[n()]);let[p,m]=T(!0),g=Ne(()=>u&&(p?u.slice(0,s):u),[u,p,s]),x=L.getCurrentUser().id===c,v=n()&&!g&&!u&&!o;return!v&&!g?.[0]?null:l?i(ble,{data:u,user:e,isSideBar:t}):v?i(Ml,{type:Ml.Type.WANDERING_CUBES}):i("div",{className:X(t&&t2.overlay,t&&WL.card,Zt("songs-container",t&&"songs-container-sidebar")),key:"song-spotlight-profile-songs"},i(pe,{justifyContent:"space-between"},i(Y,{size:"xs",weight:t?"semibold":"medium",className:Zt("header")},"Song Spotlight"),i(ve,{text:"More"},y=>i(qUe,{...y,width:16,height:16,onClick:A=>rt.openContextMenu(A,()=>i(P.Menu,{navId:"vc-songspotlight-profile-songs",onClose:()=>Q.dispatch({type:"CONTEXT_MENU_CLOSE"}),"aria-label":"Profile songs"},x&&i(P.MenuItem,{id:"edit-songs",label:"Edit songs",icon:Vi,leadingAccessory:{type:"icon",icon:Vi},action:()=>x0()}),i(P.MenuItem,{id:"copy-link",label:"Copy JSON",icon:sn,leadingAccessory:{type:"icon",icon:sn},action:()=>ft(JSON.stringify(u))}))),className:Zt("icon","songs-more")}))),i(pe,{flexDirection:"column",gap:"6px"},g.map((y,A)=>i(N6,{owned:x,song:y,index:A,key:mr(y)}))),p&&u.length>s&&i(so,{onClick:()=>m(!1)},i(Y,{size:"sm",weight:"medium",className:Zt("sub"),style:{textAlign:"center"}},"Show ",u.length-s," more")))}var nje=h(()=>{"use strict";d();yt();Lt();ot();$r();r0();Nx();Bx();$u();zF();i0();M6();Rm();_e();Su();C();yle();oje()});function wle({user:e}){let[t,o]=T(!1),{isAuthorized:r}=qs(),{users:n}=Jr(),a=n[e.id]?.data;G(()=>{r()&&!a&&GL(e.id).catch(()=>o(!0))},[r()]);let s=L.getCurrentUser().id===e.id,l;return t?l=i(Y,{size:"md",weight:"semibold",className:Zt("errored")},"Uh oh! Song Spotlight failed to load. You can check the console for more details."):r()&&!a?l=i(Ml,{type:Ml.Type.SPINNING_CIRCLE}):a?.[0]||(l=i(f,null,i(Y,{size:"lg",weight:"semibold"},"Looks like there's nothing here!"),i(Y,{size:"md",weight:"normal"},s?"Well? What are you waiting for? Go add some songs to your Song Spotlight!":`Tell ${e.globalName||e.username} to add some songs to their Song Spotlight!`),s&&i(de,{variant:"secondary",style:{marginTop:"14px",flexShrink:1},onClick:()=>x0()},"Edit songs"))),i(ei,{fade:!0,className:X(zUe.tabPanelScroller,Zt("widget-container")),key:"song-spotlight-widget-songs"},i(pe,{flexDirection:"column",justifyContent:l&&"center",alignItems:l&&"center",gap:l?"8px":"10px",style:l&&{flex:1,textAlign:"center"}},l||a.map((c,u)=>i(N6,{owned:s,song:c,index:u,big:!0,key:mr(c)}))))}var rje=h(()=>{"use strict";d();yt();Tt();Lt();r0();Nx();Bx();$u();i0();M6();Rm();Be();C();yle()});var GF,ije=h(()=>{"use strict";d();MUe();Pe();O();R();Nx();Bx();zF();nje();rje();GF=S({name:"SongSpotlight",description:"Show off songs on your profile",dependencies:["ProfileCollectionsAPI"],tags:["Appearance","Media"],authors:[F.nexpid],settings:R2,patches:[{find:".MUTUAL_GUILDS})),",replacement:{match:/(\i).push\({text.{0,50}.ACTIVITY\}\);/,replace:'$&$1.push({text:"Song Spotlight",section:"SONG_SPOTLIGHT"});'}},{find:".hasUnsavedChanges()&&",replacement:{match:/({user:(\i),.{0,80}return (\i===))/,replace:'$1"SONG_SPOTLIGHT"?$self.renderWidgetSongs({user:$2}):$3'}}],flux:{CONNECTION_OPEN:()=>{Jr.getState().$refresh()}},start(){Jr.getState().$refresh(),qs.persist.rehydrate()},renderProfileCollection:{render:Sle,priority:0},renderWidgetSongs:H.wrap(wle,{noop:!0})})});function b3t(e,t,o){if(o==="characters")return t;let r=o==="newlines"?` `:" ",n=e.lastIndexOf(r,t-1);if(n>0)return n+r.length;if(o==="newlines"){let a=e.lastIndexOf(" ",t-1);if(a>0)return a+1}return t}function aje(e,t,o){if(t<1)return[];let r=[],n=e;for(;n.length>t;){let a=b3t(n,t,o);r.push(n.slice(0,a)),n=n.slice(a)}return n&&r.push(n),r}var sje=h(()=>{"use strict";d()});function T3t(){return L.getCurrentUser()?.premiumType===2?w3t:S3t}function I3t(e){return typeof e=="string"&&C3t.has(e)?e:"newlines"}function lje(e){return ht.can(ct.MANAGE_MESSAGES,e)||ht.can(ct.MANAGE_CHANNELS,e)}function E3t(e){let t=B6.store.sendDelay*1e3,o=e.rateLimitPerUser*1e3;return lje(e)?t:Math.max(t,o+A3t)}function D3t(e){return e?!e.rateLimitPerUser||lje(e)?!0:B6.store.splitInSlowmode&&e.rateLimitPerUser<=B6.store.slowmodeMax:!1}async function P3t(e,t,o){let r=0;try{for(let[n,a]of t.entries())await or(e,{content:a},!0),r++,n{"use strict";d();j();O();_e();He();Be();R();C();sje();S3t=2e3,w3t=4e3,A3t=250,k3t=new ie("SplitLargeMessages"),C3t=new Set(["characters","spaces","newlines"]),B6=M({sendDelay:{type:5,description:"Minimum delay between each chunk in seconds.",markers:zt(.5,10,.5),default:1,stickToMarkers:!0},splitMode:{type:4,description:"Prefer this boundary when splitting a message.",options:[{value:"newlines",label:"Newlines",default:!0},{value:"spaces",label:"Spaces"},{value:"characters",label:"Strict character limit"}]},splitInSlowmode:{type:3,description:"Allow splitting in slowmode when its delay is within the configured maximum.",default:!1},slowmodeMax:{type:5,description:"Maximum slowmode duration allowed when splitting messages.",markers:zt(1,30,1),default:5,stickToMarkers:!0}});N3t=async(e,t)=>{let o=T3t();if(t.content.length<=o)return;let r=W.getChannel(e);if(!D3t(r))return D.show({message:"Cannot split this message because of the channel's slowmode.",id:"vc-splitLargeMessages-blocked",type:D.Type.FAILURE}),{cancel:!0};let n=aje(t.content,o,I3t(B6.store.splitMode));sc.dispatchToLastSubscribed("CLEAR_TEXT");let a=await P3t(e,n,E3t(r));return a!==n.length&&(M3t(e,n,a),D.show({message:`Only ${a}/${n.length} message parts were sent.`,id:"vc-splitLargeMessages-failure",type:D.Type.FAILURE})),{cancel:!0}},HF=S({name:"SplitLargeMessages",description:"Splits oversized messages into Discord-sized chunks before sending.",dependencies:["MessageEventsAPI"],tags:["Chat","Utility"],authors:[F.Reycko,F.justjxke],settings:B6,onBeforeMessageSend:N3t,patches:[{find:'type:"MESSAGE_LENGTH_UPSELL"',replacement:{match:/if\(\i.length>\i/,replace:"if(false"}},{find:".onHideAutocomplete?",replacement:{match:/(?<=getData\(\i\.type\);)if\(\i.length>\i\)/,replace:"if(false)"}}]})});var uje=h(()=>{});function R3t(e){if(e!=="TODAY")return Date.now()+e;let t=new Date;return new Date(t.getFullYear(),t.getMonth(),t.getDate()+1).getTime()}function L3t(e){gje.updateSetting({text:e.text.trim(),expiresAtMs:e.clearAfter!=null?String(R3t(e.clearAfter)):"0",emojiId:e.emojiInfo?.id??"0",emojiName:e.emojiInfo?.name??"",createdAtMs:String(Date.now())})}var dje,Ale,gje,pje,B3t,mje,fje,R6,jF,hje=h(()=>{"use strict";d();uje();j();_a();Pe();O();Er();Kt();R();le();C();dje=he("#{intl::MORE_OPTIONS}",",renderSubmenu:"),Ale=he(/\.translateSurrogatesToInlineEmoji\(\i\.name\);/),gje=tn("status","customStatus"),pje=ko(()=>{let e=sd("#{intl::SAVE}",'"custom-status-input"','"Invalid custom status clear timeout"),');return vo(Number(e))}),B3t=vr(['action:"PRESS_ADD_CUSTOM_STATUS"',/\i\.\i\i\)/]),mje=()=>na(async()=>{await B3t();let e=Object.keys(pje)[0],t=pje[e];return o=>i(t,{...o})});fje=()=>{let e=es.getState().premiumTypeActual??0,t=Vt();return i(P.Menu,{navId:"sp-custom-status-submenu",onClose:()=>{}},Object.entries(R6.store.StatusPresets).map(([o,r])=>r!=null?i(P.MenuItem,{key:"status-presets-"+o,id:"status-presets-"+o,label:r.text,action:()=>(r.emojiInfo?.id==null||e>0)&&L3t(r),icon:r.emojiInfo!=null?()=>i(Ale,{emoji:r.emojiInfo,animate:!1,hideTooltip:!1}):void 0,leadingAccessory:r.emojiInfo!=null?{type:"icon",icon:()=>i(Ale,{emoji:r.emojiInfo,animate:!1,hideTooltip:!1})}:void 0,disabled:r.emojiInfo?.id!=null&&e===0},i(P.MenuItem,{id:"status-presets-delete-"+o,label:"Delete Preset",action:()=>{let n=JSON.parse(JSON.stringify(R6.store.StatusPresets));delete n[r.text],R6.store.StatusPresets=n,t()}})):null))},R6=M({StatusPresets:{type:6,description:"Status Presets",component:()=>i(f,null),default:{}}}),jF=S({name:"StatusPresets",description:"Allows you to remember your statuses and set them later",tags:["Activity","Utility"],authors:[F.iamme],settings:R6,dependencies:["UserSettingsAPI"],patches:[{find:'="custom-status-input";',replacement:{match:/(?<=\[(\i).{0,6}\.useState\(\i\?\.state\?\?""\),\[(\i).{0,25}\?\?null\),\[(\i).*?)\{text:\i\.\i\.\i\(\i\.\i#{intl::SAVE}\)/,replace:"$self.renderRememberButton({text:$1,emojiInfo:$2,clearAfter:$3}),$&"}},{find:"#{intl::STATUS_MENU_LABEL}",replacement:{match:/(,\{onClose:\i,popoutContainerRef:\i\}\))\]/,replace:"$1,$self.render()]"}},{find:"#{intl::MORE_OPTIONS}),...",replacement:{match:/\i:\(\)=>\i,(?=.*?function (\i).{0,100}renderSubmenu:\i,ref:)/,replace:"$&PMenu:()=>$1,"}}],render(){let e=gje.getSetting();return i(H,null,i("div",null),e==null?i(dje,{id:"sp-custom/presets-status",action:"PRESS_SET_STATUS",onClick:mje,icon:()=>i("div",null),label:"Set Custom Status",renderSubmenu:fje}):i(dje,{id:"sp-edit/presets-status",action:"PRESS_EDIT_CUSTOM_STATUS",onClick:mje,icon:()=>e.emoji!=null?i(Ale,{emoji:e.emoji,animate:!1,hideTooltip:!1}):null,label:"Edit Custom Status",renderSubmenu:fje}))},renderRememberButton(e){return{text:"Keep",style:{marginLeft:"20px"},onClick:()=>{R6.store.StatusPresets[e.text]=e,D.show({message:"Successfully Saved Status",type:D.Type.SUCCESS,id:D.genId()})}}},startAt:"WebpackReady"})});function xje(e,t){e?t!==qF.store.statusToSet&&(L6=t,WF?.updateSetting(qF.store.statusToSet)):L6&&L6!==qF.store.statusToSet&&(WF?.updateSetting(L6),L6=null)}var L6,WF,qF,KF,vje=h(()=>{"use strict";d();j();_a();O();R();C();WF=tn("status","status"),qF=M({statusToSet:{type:4,description:"Status to set while in a voice channel.",options:[{label:"Online",value:"online"},{label:"Idle",value:"idle"},{label:"Do Not Disturb",value:"dnd",default:!0},{label:"Invisible",value:"invisible"}]}});KF=S({name:"StatusWhileActive",description:"Automatically updates your online status when in a voice channel.",tags:["Activity","Customisation","Voice"],authors:[F.smuki],settings:qF,flux:{VOICE_STATE_UPDATES({voiceStates:e}){let t=L.getCurrentUser().id;if(!e.find(a=>a.userId===t))return;let r=WF.getSetting(),n=!!Et.getVoiceStateForUser(t)?.channelId;xje(n,r)},VOICE_CHANNEL_STATUS_UPDATE(){let e=L.getCurrentUser().id,t=WF.getSetting(),o=!!Et.getVoiceStateForUser(e)?.channelId;xje(o,t)}}})});var kle,QF,yje=h(()=>{"use strict";d();j();O();R();kle=M({onlineStatus:{type:4,description:"Steam status when on Online",options:[{label:"Online",value:"online",default:!0},{label:"Away",value:"away"},{label:"Invisible",value:"invisible"},{label:"Offline (Disconnect Steam Chat)",value:"offline"},{label:"Disabled",value:"none"}]},idleStatus:{type:4,description:"Steam status when on Idle",options:[{label:"Online",value:"online"},{label:"Away",value:"away",default:!0},{label:"Invisible",value:"invisible"},{label:"Offline (Disconnect Steam Chat)",value:"offline"},{label:"Disabled",value:"none"}]},dndStatus:{type:4,description:"Steam status when on Do Not Disturb",options:[{label:"Online",value:"online"},{label:"Away",value:"away"},{label:"Invisible",value:"invisible"},{label:"Offline (Disconnect Steam Chat)",value:"offline"},{label:"Disabled",value:"none",default:!0}]},invisibleStatus:{type:4,description:"Steam status when on Invisible",options:[{label:"Online",value:"online"},{label:"Away",value:"away"},{label:"Invisible",value:"invisible",default:!0},{label:"Offline (Disconnect Steam Chat)",value:"offline"},{label:"Disabled",value:"none"}]},goInvisibleIfActivityIsHidden:{type:3,description:"Always go invisible if hiding game activity on Discord"}}),QF=S({name:"SteamStatusSync",description:"Sync your status to Steam! (Online, Away, Invisible, or Offline.)",tags:["Activity","Appearance","Customisation"],authors:[F.niko],settings:kle,flux:{USER_SETTINGS_PROTO_UPDATE(e){let t=e.settings.proto.status;if(t!==void 0){let o=kle.store[`${t.status.value}Status`];if(kle.store.goInvisibleIfActivityIsHidden&&!t.showCurrentGame.value){open("steam://friends/status/invisible");return}if(o==="none")return;open(`steam://friends/status/${o}`)}}}})});function _3t(e){let{showGif:t,showMessage:o,showButton:r}=Kc.store,n=[];return t&&n.push(i("img",{key:"gif",src:"https://equicord.org/assets/plugins/stickerBlocker/blocked.gif",style:{width:"160px",borderRadius:"20px"}})),o&&n.push(i("div",{key:"message",id:"vc-blocked-sticker",className:X(O3t.markup,F3t.messageContent)},i("span",null,"Blocked Sticker. ID: ",e.id,", NAME: ",e.name))),r&&n.push(i(ue,{key:"button",onClick:()=>Sje(e.id),color:ue.Colors.RED},"Unblock ",o?"":e.name)),i(f,null,n)}function bje(e){return i(P.MenuItem,{id:"add-sticker-block",key:"add-sticker-block",label:wje(e)?"Unblock Sticker":"Block Sticker",action:()=>Sje(e)})}function Sje(e){if(Kc.store.blockedStickers===void 0||Kc.store.blockedStickers==null)return;wje(e)?Kc.store.blockedStickers=Kc.store.blockedStickers.split(", ").filter(o=>o!==e).join(", "):Kc.store.blockedStickers=Kc.store.blockedStickers.split(", ").concat(e).join(", ")}function wje(e){if(!(Kc.store.blockedStickers===void 0||Kc.store.blockedStickers==null))return Kc.store.blockedStickers.split(", ").includes(e)}var O3t,F3t,Kc,U3t,z3t,ZF,Aje=h(()=>{"use strict";d();Fo();on();j();Pe();O();Be();R();le();C();O3t=Ie("markup","codeContainer"),F3t=Ie("messageContent","messageContentTrailingIcon"),Kc=M({showGif:{type:3,description:"Whether to show a snazzy cat gif",default:!0,restartNeeded:!0},showMessage:{type:3,description:"Whether to show a message detailing which id was blocked",default:!1,restartNeeded:!0},showButton:{type:3,description:"Whether to show a button to unblock the gif",default:!0,restartNeeded:!0},blockedStickers:{type:0,description:"The list of blocked sticker IDs (don't edit unless you know what you're doing)",default:""}});U3t=(e,t)=>{let{favoriteableId:o,favoriteableType:r}=t??{};if(!o)return;let n=(()=>{if(r==="sticker")return t.message.stickerItems.find(s=>s.id===o)?.format_type===3?void 0:bje(o)})();n&&wt("copy-link",e)?.push(n)},z3t=(e,t)=>{let{id:o,type:r}=t?.target?.dataset??{};o&&r==="sticker"&&!t.target.className?.includes("lottieCanvas")&&e.push(bje(o))};ZF=S({name:"StickerBlocker",description:"Allows you to block stickers from being displayed.",tags:["Chat","Emotes","Utility"],authors:[b.Samwich],patches:[{find:".STICKERS_CONSTANTS_STICKER_DIMENSION)",replacement:{match:/}\),\(\i\?\?(\i)\)\.name\]\}\);/,replace:"$& if($self.isBlocked($1.id)) return($self.blockedComponent($1));"}}],contextMenus:{message:U3t,"expression-picker":z3t},start(){Le.createStore("StickerBlocker","data")},isBlocked(e){return!!Kc.store.blockedStickers.split(", ").includes(e)},blockedComponent:H.wrap(_3t,{fallback:()=>i("p",{style:{color:"red"}},"Failed to render :(")}),settings:Kc})});var YF,kje=h(()=>{"use strict";d();O();R();YF=S({name:"StopAutoUnread",description:'Stops Discord from automatically bumping a channels notification setting to "All Messages"',tags:["Notifications"],authors:[F.SobakinTech],patches:[{find:"}maybeAutoUpgradeChannel(",replacement:{match:/maybeAutoUpgradeChannel\(\i\){/,replace:"$&return !1;"}}]})});var Cje=h(()=>{});var $3t,O2,Cle,Tje,Tle=h(()=>{"use strict";d();$3t="https://streaks.equicord.org",O2=`${$3t}/api`,Cle=`${O2}/authorize`,Tje="1243063117852835941"});var Za,JF=h(()=>{"use strict";d();Io();Er();C();Tle();XF();Za=ko(()=>Cs((e,t)=>({streaks:{},clear:()=>e({streaks:{}}),async fetch(){let{token:o}=ju.getState();if(o)try{let r=await fetch(`${O2}/streaks`,{headers:{Authorization:`Bearer ${o}`}});if(r.ok){let n=await r.json(),a=L.getCurrentUser()?.id,s={};for(let l of n){let c=l.user_a_id===a?l.user_b_id:l.user_a_id;s[c]=l}e({streaks:s})}}catch(r){console.error("Failed to fetch streaks",r)}},async update(o){let{token:r}=ju.getState();if(r)try{let n=await fetch(`${O2}/streaks/${o}`,{method:"POST",headers:{Authorization:`Bearer ${r}`}});if(n.ok){let a=await n.json();e({streaks:{...t().streaks,[o]:a}})}}catch(n){console.error("Failed to update streak",n)}},async refresh(o){let{token:r}=ju.getState();if(r)try{let n=await fetch(`${O2}/streaks/${o}`,{headers:{Authorization:`Bearer ${r}`}});if(n.ok){let a=await n.json();e({streaks:{...t().streaks,[o]:a}})}}catch(n){console.error("Failed to refresh streak",n)}},async migrate(){let{token:o}=ju.getState();if(!o)return;let r=await vt("vc-streaks-data");if(!(!r||Object.keys(r).length===0))try{(await fetch(`${O2}/streaks/migrate`,{method:"POST",headers:{Authorization:`Bearer ${o}`,"Content-Type":"application/json"},body:JSON.stringify(r)})).ok&&(await aa("vc-streaks-data"),console.log("Successfully migrated local streaks to API"))}catch(n){console.error("Failed to migrate streaks",n)}}})))});var G3t,ju,XF=h(()=>{"use strict";d();Io();Er();He();C();Tle();JF();G3t={async getItem(e){return vt(e).then(t=>t??null)},async setItem(e,t){await Ct(e,t)},async removeItem(e){await aa(e)}},ju=ko(()=>Cs(_0((e,t)=>({token:null,tokens:{},init:()=>{e({token:t().tokens[L.getCurrentUser()?.id]??null})},setToken:o=>{let r=L.getCurrentUser()?.id;r&&e({token:o,tokens:{...t().tokens,[r]:o}})},remove:o=>{let{tokens:r,init:n}=t(),a={...r};delete a[o],e({tokens:a}),n()},async authorize(){return new Promise((o,r)=>{let n=!1;ce(a=>i(ws,{...a,scopes:["identify"],responseType:"code",redirectUri:Cle,permissions:0n,clientId:Tje,cancelCompletesFlow:!1,callback:async s=>{n=!0;try{let c=new URL(s.location).searchParams.get("code");if(!c)throw new Error("No code in redirect");let u=await fetch(`${Cle}?code=${encodeURIComponent(c)}`);if(u?.ok){let{access_token:p}=await u.json();p&&t().setToken(p)}else throw new Error(`Request not OK: ${u.status}`);o(void 0)}catch(l){l instanceof Error&&(ne(`Failed to authorize: ${l.message}`,D.Type.FAILURE),new ie("Streaks").error("Failed to authorize",l),r(l))}}}),{onCloseCallback(){n||r(new Error("Authorization cancelled"))}})})},isAuthorized:()=>!!t().token}),{name:"vc-streaks-auth",storage:G3t,partialize:e=>({tokens:e.tokens}),onRehydrateStorage:()=>async e=>{e&&(e.init(),e.isAuthorized()&&(Za.getState().clear(),await Za.getState().migrate(),await Za.getState().fetch()))}})))});var Um,Ije=h(()=>{"use strict";d();j();Tt();Lt();R();C();XF();JF();Um=M({account:{type:6,description:"Log in or out of the Streaks API.",component(){let{isAuthorized:e,authorize:t,remove:o}=ju();return e()?i(pe,null,i(de,{onClick:()=>o(L.getCurrentUser()?.id),variant:"dangerPrimary"},"Log Out of Streaks API")):i(pe,null,i(de,{onClick:async()=>{await t(),await Za.getState().migrate(),await Za.getState().fetch()}},"Log In to Streaks API"))}},eliteColor:{type:0,description:"Elite Streak Color (100+ days)",default:"#9b39fe"},diamondColor:{type:0,description:"Diamond Streak Color (60+ days)",default:"#f7409c"},platinumColor:{type:0,description:"Platinum Streak Color (45+ days)",default:"#856bfe"},goldColor:{type:0,description:"Gold Streak Color (30+ days)",default:"#f75340"},silverColor:{type:0,description:"Silver Streak Color (14+ days)",default:"#f57b0b"},bronzeColor:{type:0,description:"Bronze Streak Color (7+ days)",default:"#b08d57"},defaultColor:{type:0,description:"Default Streak Color (1+ days)",default:"#f59e0b"}})});var Eje,F2,H3t,Dje,VF,Pje=h(()=>{"use strict";d();Cje();ot();O();we();R();C();Ije();XF();JF();Eje=K("vc-streaks-"),F2={ELITE:100,DIAMOND:60,PLATINUM:45,GOLD:30,SILVER:14,BRONZE:7},H3t=e=>e>=F2.ELITE?Um.store.eliteColor:e>=F2.DIAMOND?Um.store.diamondColor:e>=F2.PLATINUM?Um.store.platinumColor:e>=F2.GOLD?Um.store.goldColor:e>=F2.SILVER?Um.store.silverColor:e>=F2.BRONZE?Um.store.bronzeColor:Um.store.defaultColor,Dje=({userId:e})=>{let o=Za(s=>s.streaks)[e];if(!o||o.count<1)return null;let r=bi().format("YYYY-MM-DD"),a=o.last_streak_date===r?H3t(o.count):"#9ca3af";return i(ve,{text:`${o.count} day streak`},s=>i("span",{...s,className:Eje("badge"),style:{color:a}},i(qU,{width:16,height:16,fill:a}),i("span",{className:Eje("count")},o.count)))},VF=S({name:"Streaks",description:"Shows a streak next to a user when you exchange DMs with them on consecutive days.",authors:[F.Moowi,b.thororen],tags:["Friends","Fun"],dependencies:["MessageDecorationsAPI","MemberListDecoratorsAPI","ConcatenatedModules"],settings:Um,flux:{async CONNECTION_OPEN(){ju.getState().init(),ju.getState().isAuthorized()&&(await Za.getState().migrate(),await Za.getState().fetch())},async MESSAGE_CREATE({optimistic:e,type:t,message:o,channelId:r}){if(e||t!=="MESSAGE_CREATE"||o.state==="SENDING"||o.author?.bot)return;let n=W.getChannel(r);if(!n.isDM())return;let a=n.recipients[0];if(!a)return;let s=L.getCurrentUser()?.id;if(!ju.getState().isAuthorized())return;let l=bi().format("YYYY-MM-DD"),c=Za.getState().streaks[a],u=c&&c.today_date!=null&&c.today_date===l&&(c.user_a_id===s?c.user_a_today:c.user_b_today),p=c&&c.today_date!=null&&c.today_date===l&&(c.user_a_id===s?c.user_b_today:c.user_a_today);o.author.id===s?u||Za.getState().update(a):o.author.id===a&&(p||setTimeout(async()=>{let m=Za.getState().streaks[a]?.count;await Za.getState().refresh(a);let g=Za.getState().streaks[a]?.count;m===g&&Za.getState().update(a)},1e3))}},renderMessageDecoration({message:e}){let t=e?.author?.id;return!t||t===L.getCurrentUser()?.id?null:i(Dje,{userId:t})},renderMemberListDecorator({user:e,type:t}){return t!=="dm"||!e||e.id===L.getCurrentUser()?.id?null:i(Dje,{userId:e.id})}})});var O6,j3t,e_,Mje=h(()=>{"use strict";d();j();O();R();C();O6={AV1:!0,H265:!0,H264:!0,VP8:!0,VP9:!0},j3t=M({disableAv1Codec:{description:"Make Discord not consider using AV1 for streaming.",type:3,default:!1},disableH265Codec:{description:"Make Discord not consider using H265 for streaming.",type:3,default:!1},disableH264Codec:{description:"Make Discord not consider using H264 for streaming.",type:3,default:!1},disableVP8Codec:{description:"Make Discord not consider using VP8 for streaming.",type:3,default:!1},disableVP9Codec:{description:"Make Discord not consider using VP9 for streaming.",type:3,default:!1}}),e_=S({name:"StreamingCodecDisabler",description:"Disable codecs for streaming of your choice",tags:["Utility","Voice"],authors:[F.davidkra230],settings:j3t,patches:[{find:"setVideoBroadcast(this.shouldConnectionBroadcastVideo",replacement:{match:/setGoLiveSource\(.,.\)\{/,replace:"$&$self.updateDisabledCodecs();"}}],async updateDisabledCodecs(){let e=$o.getMediaEngine(),t=Object.keys(O6);JSON.parse(await new Promise(r=>e.getCodecCapabilities(r))).forEach(r=>{t.includes(r.codec)&&(O6[r.codec]=r.encode)}),e.setAv1Enabled(O6.AV1&&!Me.plugins.StreamingCodecDisabler.disableAv1Codec),e.setH265Enabled(O6.H265&&!Me.plugins.StreamingCodecDisabler.disableH265Codec),e.setH264Enabled(O6.H264&&!Me.plugins.StreamingCodecDisabler.disableH264Codec)}})});function W3t(){return i("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20",viewBox:"0 -960 960 960",width:"20"},i("path",{fill:"currentColor",d:"M482-160q-134 0-228-93t-94-227v-7l-36 36q-11 11-28 11t-28-11q-11-11-11-28t11-28l104-104q12-12 28-12t28 12l104 104q11 11 11 28t-11 28q-11 11-28 11t-28-11l-36-36v7q0 100 70.5 170T482-240q16 0 31.5-2t30.5-7q17-5 32 1t23 21q8 16 1.5 31.5T577-175q-23 8-47 11.5t-48 3.5Zm-4-560q-16 0-31.5 2t-30.5 7q-17 5-32.5-1T360-733q-8-15-1.5-30.5T381-784q24-8 48-12t49-4q134 0 228 93t94 227v7l36-36q11-11 28-11t28 11q11 11 11 28t-11 28L788-349q-12 12-28 12t-28-12L628-453q-11-11-11-28t11-28q11-11 28-11t28 11l36 36v-7q0-100-70.5-170T478-720Z"}))}var Nje,q3t,t_,Bje=h(()=>{"use strict";d();Ba();yc();O();R();C();Nje=!1,q3t=({isMainChat:e})=>{let[t,o]=T(Nje);function r(n){Nje=n,o(n)}return G(()=>{let n=async(a,s)=>{t&&s.content&&(s.content=s.content.split("").reverse().join(""))};return ni(n),()=>{ri(n)}},[t]),e?i(Un,{tooltip:t?"Disable Reverse Message":"Enable Reverse Message",onClick:()=>r(!t)},i("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20",viewBox:"0 -960 960 960",width:"20"},i("path",{fill:t?"var(--green-360)":"currentColor",d:"M482-160q-134 0-228-93t-94-227v-7l-36 36q-11 11-28 11t-28-11q-11-11-11-28t11-28l104-104q12-12 28-12t28 12l104 104q11 11 11 28t-11 28q-11 11-28 11t-28-11l-36-36v7q0 100 70.5 170T482-240q16 0 31.5-2t30.5-7q17-5 32 1t23 21q8 16 1.5 31.5T577-175q-23 8-47 11.5t-48 3.5Zm-4-560q-16 0-31.5 2t-30.5 7q-17 5-32.5-1T360-733q-8-15-1.5-30.5T381-784q24-8 48-12t49-4q134 0 228 93t94 227v7l36-36q11-11 28-11t28 11q11 11 11 28t-11 28L788-349q-12 12-28 12t-28-12L628-453q-11-11-11-28t11-28q11-11 28-11t28 11l36 36v-7q0-100-70.5-170T478-720Z"}))):null};t_=S({name:"TalkInReverse",authors:[F.Tolgchu],description:"Reverses the message content before sending it.",tags:["Chat","Fun"],dependencies:["MessageEventsAPI","ChatInputButtonAPI"],chatBarButton:{icon:W3t,render:q3t}})});var Rje=h(()=>{});var Lje=h(()=>{"use strict";d()});var Oje,Fje,_je,Ile=h(()=>{"use strict";d();Oje=(e=!1)=>i("svg",{viewBox:"0 0 20 20",fill:e?"red":"currentColor","aria-hidden":"true",width:"18",height:"18",className:"vce-likes-icon"},i("path",{d:"M16.44 3.10156C14.63 3.10156 13.01 3.98156 12 5.33156C10.99 3.98156 9.37 3.10156 7.56 3.10156C4.49 3.10156 2 5.60156 2 8.69156C2 9.88156 2.19 10.9816 2.52 12.0016C4.1 17.0016 8.97 19.9916 11.38 20.8116C11.72 20.9316 12.28 20.9316 12.62 20.8116C15.03 19.9916 19.9 17.0016 21.48 12.0016C21.81 10.9816 22 9.88156 22 8.69156C22 5.60156 19.51 3.10156 16.44 3.10156Z"})),Fje=e=>i("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor",...e},i("path",{fillRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm1-18a1 1 0 1 0-2 0v7c0 .27.1.52.3.7l3 3a1 1 0 0 0 1.4-1.4L13 11.58V5Z",clipRule:"evenodd"})),_je=e=>i("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor",...e},i("circle",{cx:"12",cy:"12",r:"10",fill:"transparent"}),i("path",{fillRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm1.44-15.94L13.06 14a1.06 1.06 0 0 1-2.12 0l-.38-6.94a1 1 0 0 1 1-1.06h.88a1 1 0 0 1 1 1.06Zm-.19 10.69a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Z",clipRule:"evenodd"}))});var Uje,zje=h(()=>{"use strict";d();Io();Tt();Ja();Ele();Ile();C();_2();Uje=({themeId:e,likedThemes:t})=>{let[o,r]=T(0),[n,a]=T(t),s=Se(!1);G(()=>{let p=l(e);r(p)},[n,e]);function l(p){let m=n?.likes.find(g=>g.themeId===p);return m?m.likes:0}let c=async p=>{if(!$je())return;let g=n?.likes.find(y=>y.themeId===p)?.hasLiked??!1,x=g?"/likes/remove":"/likes/add",v=await vt("ThemeLibrary_uniqueToken");if(!s.current){r(o+(g?-1:1)),s.current=!0;try{if(!(await zm(x,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${v}`},body:JSON.stringify({themeId:p})})).ok)return vs.error("Couldnt update likes, response not ok");(async()=>{try{let k=await vt("ThemeLibrary_uniqueToken"),I=await(await zm("/likes/get",{headers:{Authorization:`Bearer ${k}`}})).json();a(I)}catch(k){vs.error(k)}})()}catch(y){vs.error(y)}s.current=!1}},u=n?.likes.some(p=>p.themeId===e&&p?.hasLiked===!0)??!1;return i(de,{onClick:()=>c(e),variant:"secondary",size:"medium",disabled:e==="preview",className:z.right8},Oje(u||e==="preview")," ",e==="preview"?143:o)}});async function Gje(e){try{await Hje.downloadTheme(e),ne(`Downloaded ${e.name}!`,D.Type.SUCCESS)}catch(t){vs.error(t),ne(`Failed to download ${e.name}! (check console)`,D.Type.FAILURE)}}var Hje,K3t,jje,qje=h(()=>{"use strict";d();bd();We();H1();Je();Ile();mi();_e();Wt();le();C();_2();Hje=VencordNative.pluginHelpers.ThemeLibrary,K3t=he("defaultRenderUser","showDefaultAvatarsForNullUsers");jje=({author:e,theme:t,...o})=>{let{name:r,type:n,content:a,likes:s,guild:l,tags:c,last_updated:u,requiresThemeAttributes:p}=t,m=window.atob(a),g=m.match(/\/\*\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\//g)?.[0]||"",x=g.match(/@donate\s+(.+)/)?.[1]||"",v=g.match(/@version\s+(.+)/)?.[1]||"",y=g.match(/@invite\s+(.+)/)?.[1]||"",A=Array.isArray(e)?e:[e],k=Math.floor(new Date(u??0).getTime()/1e3);return i(be,{...o,size:"md",title:`${r} details`,actions:[{text:"Close",variant:"secondary",onClick:()=>o.onClose()},{text:"Download",variant:"primary",disabled:!t.content||t.id==="preview",onClick:async()=>{let w=`${t?.name}.theme.css`;await Hje.themeExists(t)?ce(E=>i(be,{...E,size:"sm",title:"Conflict!",actions:[{text:"Overwrite",variant:"dangerPrimary",onClick:async()=>{await Gje(t),E.onClose()}},{text:"Keep my file",variant:"positive",onClick:()=>E.onClose()}]},i(U,{style:{padding:"8px"}},i("div",{style:{display:"flex",flexDirection:"column"}},i("p",null,"A theme with the same name ",i("b",null,"already exists")," in your themes directory! Do you want to overwrite it?"),i("div",{className:"vce-overwrite-modal"},i("code",{style:{wordWrap:"break-word"}},w)))))):await Gje(t)}}]},i(oe,{style:{marginTop:"10px"}},A.length>1?"Authors":"Author"),i("div",{style:{display:"flex",alignItems:"center",marginBottom:"10px"}},i("div",null,i("div",{style:{display:"flex",alignItems:"center"}},i(K3t,{users:A,count:A.length,guildId:void 0,renderIcon:!1,max:4,size:32,showDefaultAvatarsForNullUsers:!0,showUserPopout:!0,className:z.right8}),i(U,{style:{maxWidth:"200px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},A.map(w=>w.username).join(", "))),v&&i(f,null,i(oe,{style:{marginTop:"10px"}},"Version"),i(U,null,v)),i(oe,{style:{marginTop:"10px"}},"Likes"),i(U,null,s===0?`Nobody liked this ${n} yet.`:`${s} users liked this ${n}!`),x&&i(f,null,i(oe,{style:{marginTop:"10px"}},"Donate"),i(U,null,"You can support the author by donating below!"),i(U,{style:{marginTop:"10px"}},i(ue,{onClick:()=>VencordNative.native.openExternal(x)},i(Sd,null),"Donate"))),(l||y)&&i(f,null,i(oe,{style:{marginTop:"10px"}},"Support Server"),l&&i(U,null,l.name),i(U,null,i(ue,{color:ue.Colors.BRAND,look:ue.Looks.FILLED,className:z.top8,onClick:async w=>{w.preventDefault();let I=l?l.invite_link?.split("discord.gg/")[1]:y;I!=null&&Yi(I).catch(()=>ne("Invalid or expired invite!",D.Type.FAILURE))}},"Join Discord Server"))),i(oe,{style:{marginTop:"10px"}},"Source"),i(U,null,i(ue,{disabled:!t.content||t.id==="preview",onClick:()=>ce(w=>i(be,{...w,size:"lg",title:"Theme Source",actions:[{text:"Close",variant:"dangerPrimary",onClick:()=>w.onClose()},{text:"Copy to Clipboard",variant:"primary",onClick:()=>{po(m),ne("Copied to Clipboard",D.Type.SUCCESS)}}]},i(U,{style:{padding:"8px"}},i(Ps,{lang:"css",content:m}))))},"View Theme Source")),c&&i(f,null,i(oe,{style:{marginTop:"10px"}},"Tags"),i(U,null,c.map(w=>i("span",{className:"vce-theme-info-tag",key:"vce-theme-info-tag"},w)))),p&&i(U,{style:{marginTop:"10px"}},i(_je,null)," This theme requires the ",i("b",null,"ThemeAttributes")," plugin!"),u&&i(U,{style:{marginTop:"10px"}},i(Fje,null)," This theme was last updated ",kt.parse("")," (",kt.parse(""),")"))))}});function Z3t(e){let t=new Q3t({username:e.username,id:e.id??fd(),avatar:e.avatar,bot:!0});return Q.dispatch({type:"USER_UPDATE",user:t}),t}var Q3t,Dle,Wje=h(()=>{"use strict";d();yr();j();Tt();Qn();We();Je();Er();Wt();C();zje();qje();_2();Q3t=ko(()=>L.getCurrentUser().constructor);Dle=({theme:e,themeLinks:t,likedThemes:o,setThemeLinks:r,removeButtons:n,removePreview:a})=>{let s=(p,m)=>Xi.getUser(p)??Z3t({username:m,id:p}),l=()=>{let p=t.includes(`${qu}/${e.id}`)?t.filter(m=>m!==`${qu}/${e.id}`):[...t,`${qu}/${e.id}`];r(p),Me.themeLinks=p},c=()=>{(e.requiresThemeAttributes??!1)&&!Me.plugins.ThemeAttributes.enabled?ce(m=>i(be,{...m,size:"sm",title:"Hold on!",actions:[{text:"Enable Plugin",variant:"primary",onClick:()=>{Me.plugins.ThemeAttributes.enabled=!0,m.onClose(),l()}},{text:"Cancel",variant:"secondary",onClick:()=>m.onClose()}]},i(U,{style:{padding:"8px"}},i("p",null,"This theme requires the ",i("b",null,"ThemeAttributes")," plugin to work properly!"),i("p",null,"Do you want to enable it?")))):l()},u=()=>{let g=(window.atob(e.content).match(/\/\*\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\//g)?.[0]||"").match(/@source\s+(.+)/)?.[1]||"";g?VencordNative.native.openExternal(g):VencordNative.native.openExternal(`${qu}/${e.id}`)};return i(Ht,{style:{padding:".5rem",marginBottom:".5em",marginTop:".5em",display:"flex",flexDirection:"column",backgroundColor:"var(--background-base-lower-alt)"},key:e.id},i(ta,{style:{overflowWrap:"break-word",marginTop:"8px"},className:"vce-theme-text-title"},e.name),i(U,{className:"vce-theme-text-description"},kt.parse(e.description)),!a&&i("img",{role:"presentation",src:e.thumbnail_url,loading:"lazy",alt:e.name,className:"vce-theme-info-preview"}),i("div",{className:"vce-theme-info"},i("div",{style:{justifyContent:"flex-start",flexDirection:"column"}},e.tags&&i(U,null,e.tags.map(p=>i("span",{className:"vce-theme-info-tag",key:p},p))),!n&&i("div",{style:{marginTop:"8px",display:"flex",flexDirection:"row"}},i(de,{onClick:c,size:"medium",variant:t.includes(`${qu}/${e.id}`)?"dangerPrimary":"positive",className:z.right8,disabled:!e.content||e.id==="preview"},t.includes(`${qu}/${e.id}`)?"Remove Theme":"Add Theme"),i(de,{onClick:async()=>{let p=Array.isArray(e.author)?await Promise.all(e.author.map(m=>s(m.discord_snowflake,m.discord_name))):[await s(e.author.discord_snowflake,e.author.discord_name)];ce(m=>i(jje,{...m,author:p,theme:e}))},size:"medium",className:z.right8},"Theme Info"),i(Uje,{themeId:e.id,likedThemes:o}),i(de,{onClick:u,size:"medium",variant:"link",disabled:!e.content||e.id==="preview",style:{display:"flex",alignItems:"center",justifyContent:"center"}},"View Source")))))}});var Qje={};Bt(Qje,{apiUrl:()=>qu,default:()=>e9t,fetchAllThemes:()=>Kje,logger:()=>vs,themeRequest:()=>zm});async function Kje(){let t=await(await zm("/themes")).json(),o=Object.values(t);return o.forEach(r=>{r.source||(r.source=`${qu}/${r.id}`)}),o.sort((r,n)=>new Date(n.release_date).getTime()-new Date(r.release_date).getTime())}async function zm(e,t={}){return fetch(qu+e,{...t,headers:{...t.headers}})}function X3t(){let[e,t]=T([]),[o,r]=T([]),[n,a]=T(Me.themeLinks),[s,l]=T(),[c,u]=T({value:"",status:0}),[p,m]=T(Me.plugins.ThemeLibrary.hideWarningCard),[g,x]=T(!0),[v,y]=T(!1),A=E=>u(N=>({...N,value:E})),k=E=>u(N=>({...N,status:E})),w=E=>{let N=n.includes(`${qu}/${E.id}`),B=new Set(E.tags.map($=>$?.toLowerCase()));if(!N&&c.status===1)return!1;let _=J3t[c.status];if(_&&!B.has(_?.toLowerCase())||N&&c.status===2||!N&&c.status===1)return!1;if(!c.value.length)return!0;let q=c.value?.toLowerCase();return E.name?.toLowerCase().includes(q)||E.description?.toLowerCase().includes(q)||(Array.isArray(E.author)?E.author.some($=>$.discord_name?.toLowerCase()?.includes(q)):E.author.discord_name?.toLowerCase()?.includes(q))||B.has(q)},I=async()=>{try{let E=await vt("ThemeLibrary_uniqueToken");return await(await zm("/likes/get",{headers:{Authorization:`Bearer ${E}`}})).json()}catch(E){vs.error(E)}};return G(()=>{(async()=>{try{let[N,B]=await Promise.all([Kje(),I()]);t(N),l(B),r(N)}catch(N){vs.error(N),y(!0)}finally{x(!1)}})()},[]),G(()=>{a(Me.themeLinks)},[]),G(()=>{if(c.status===7){let N=e.sort((B,_)=>_.likes-B.likes).filter(B=>B.name.includes(c.value));r(N)}else{let N=e.sort((B,_)=>new Date(_.release_date).getTime()-new Date(B.release_date).getTime()).filter(w);r(N)}},[c,e]),i("div",null,i(f,null,g?i("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"70vh",fontSize:"1.5em",color:"var(--text-default)"}},i("p",null," Getting the latest themes... "),i("p",{style:{fontSize:".75em",color:"var(--text-muted)"}}," This won't take long! ")):v?i(Nr,null,i(Gr,null,"Failed to fetch themes"),i(U,{className:z.top8},"Could not fetch the theme list. Try again later.")):i(f,null,p?null:i(Nr,null,i(Gr,null,"Want your theme removed?"),i(U,{className:z.top8},"If you want your theme(s) permanently removed, please open an issue on ",i("a",{href:"https://github.com/Faf4a/plugins/issues/new?labels=removal&projects=&template=request_removal.yml&title=Theme+Removal"},"GitHub ",i(gn,{height:16,width:16}))),i(ue,{onClick:()=>{Me.plugins.ThemeLibrary.hideWarningCard=!0,m(!0)},size:ue.Sizes.SMALL,color:ue.Colors.RED,look:ue.Looks.FILLED,className:X(z.top16,"vce-warning-button")},"Hide")),i("div",{className:X(z.bottom8,z.top16)},i(ta,{style:{overflowWrap:"break-word",marginTop:8}},c.status===7?"Most Liked":"Newest Additions"),e.slice(0,2).map(E=>i(Dle,{key:E.id,theme:E,themeLinks:n,likedThemes:s,setThemeLinks:a,removePreview:!0}))),i(ta,{style:{overflowWrap:"break-word",marginTop:20}},"Themes"),i("div",{className:X(z.bottom20,"vce-search-grid")},i(Te,{value:c.value,placeholder:"Search for a theme...",onChange:A}),i("div",{className:Y3t.inputWrapper},i(Fn,{options:[{label:"Show All",value:0,default:!0},{label:"Show Themes",value:3},{label:"Show Snippets",value:4},{label:"Show Most Liked",value:7},{label:"Show Dark",value:5},{label:"Show Light",value:6},{label:"Show Enabled",value:1},{label:"Show Disabled",value:2}],value:c.status,clearable:!1,onChange:E=>k(E),closeOnSelect:!0}))),i("div",null,o.length?o.map(E=>i(Dle,{key:E.id,theme:E,themeLinks:n,likedThemes:s,setThemeLinks:a})):i("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},i("p",{style:{fontSize:"1em",color:"var(--text-default)"}}," No theme found. "),i("p",{style:{fontSize:".75em",color:"var(--text-muted)"}}," Try narrowing your search down. "))))))}function V3t(){return i(br,null,i(X3t,null))}var Y3t,qu,vs,J3t,e9t,_2=h(()=>{"use strict";d();Rje();Io();j();xc();We();ot();Je();Fi();Lje();He();Wt();Be();le();C();Wje();Y3t=Ie("inputWrapper","editable","error"),qu="https://themes.equicord.org/api",vs=new ie("ThemeLibrary","#e5c890");J3t={3:"THEME",4:"SNIPPET",7:"LIKED",5:"DARK",6:"LIGHT"};e9t=Sr(V3t,"Theme Library")});async function Ple(e=!0){let t=await Yje();if(t===!1){if(!e)return!1;ce(o=>i(ws,{...o,scopes:["identify","connections"],responseType:"code",redirectUri:"https://themes.equicord.org/api/user/auth",permissions:0n,clientId:"1464006702125940736",cancelCompletesFlow:!1,callback:async({location:r})=>{if(!r)return vs.error("No redirect location returned");try{let n=await fetch(r,{headers:{Accept:"application/json"}}),{token:a}=await n.json();a?(vs.debug("Authorized via OAuth2, got token"),await Ct("ThemeLibrary_uniqueToken",a),At({title:"ThemeLibrary",body:"Successfully authorized with ThemeLibrary!"})):(vs.debug("Tried to authorize via OAuth2, but no token returned"),At({title:"ThemeLibrary",body:"Failed to authorize, check console"}))}catch(n){vs.error("Failed to authorize",n),At({title:"ThemeLibrary",body:"Failed to authorize, check console"})}}}))}else return t}async function Zje(){let e=await vt("ThemeLibrary_uniqueToken");if(!e)return D.show({message:"No uniqueToken present, try authorizing first!",id:D.genId(),type:D.Type.FAILURE,options:{duration:2e3,position:D.Position.BOTTOM}});if((await zm("/user/revoke",{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({userId:L.getCurrentUser().id})})).ok)await aa("ThemeLibrary_uniqueToken"),At({title:"ThemeLibrary",body:"Successfully deauthorized from ThemeLibrary!"});else try{await aa("ThemeLibrary_uniqueToken")}catch(o){vs.error("Failed to delete token",o),At({title:"ThemeLibrary",body:"Failed to deauthorize, check console"})}}async function Yje(){let e=await vt("ThemeLibrary_uniqueToken");if(e){let t=await zm("/user/findUserByToken",{headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}});return t.status===400||t.status===500?!1:(vs.debug("User is already authorized, skipping"),e)}else return!1}async function $je(e=!0){let t=await Yje(),o=await vt("ThemeLibrary_uniqueToken");if(t===!1||!o)await Ple(e);else return!0}var Ele=h(()=>{"use strict";d();Io();Fa();_2();C()});var Jje,Xje,Vje=h(()=>{"use strict";d();Io();j();We();ot();Je();mi();we();R();C();Ele();Jje=K("vce-"),Xje=M({hideWarningCard:{type:3,default:!1,description:"Hide the warning card displayed at the top of the theme library tab",restartNeeded:!1},buttons:{type:6,description:"ThemeLibrary Buttons",component:()=>{let e=async()=>{let t=await vt("ThemeLibrary_uniqueToken");if(!t)return D.show({message:"No token to copy, try authorizing first!",id:D.genId(),type:D.Type.FAILURE,options:{duration:2500,position:D.Position.BOTTOM}});po(t),D.show({message:"Copied to Clipboard!",id:D.genId(),type:D.Type.SUCCESS,options:{duration:2500,position:D.Position.BOTTOM}})};return i("section",null,i(Ot,{style:{marginTop:0,marginBottom:8}},"ThemeLibrary Auth"),i("div",{className:Jje("button-grid")},i(ue,{onClick:()=>Ple()},"Authorize with ThemeLibrary"),i(ue,{onClick:e},"Copy ThemeLibrary Token"),i(ue,{color:ue.Colors.RED,onClick:()=>Zje()},"Deauthorize ThemeLibrary")),i(Ot,{style:{marginTop:8,marginBottom:8}},"Theme Removal"),i(U,{style:{marginTop:0,marginBottom:8}}," All Theme Authors are given credit in the theme info, no source has been modified, if you wish your theme to be removed anyway, open an Issue by clicking below."),i("div",{className:Jje("button-grid")},i(ue,{onClick:()=>VencordNative.native.openExternal("https://github.com/Faf4a/plugins/issues/new?labels=removal&projects=&template=request_removal.yml&title=Theme+Removal")},"Request Theme Removal ",i(gn,{height:16,width:16}))))}}})});var o_,eqe=h(()=>{"use strict";d();ot();mu();O();Be();R();C();Vje();o_=S({name:"ThemeLibrary",description:"A library of themes for Vencord.",tags:["Appearance","Customisation"],authors:[F.Fafa],settings:Xje,toolboxActions:{"Open Theme Library":()=>{un.openUserSettings("equicord_theme_library_panel")}},start(){Pn.customEntries.push({key:"equicord_theme_library",title:"Theme Library",Component:(_2(),Jx(Qje)).default,Icon:AU})},stop(){Gl(Pn.customEntries,e=>e.key==="equicord_theme_library")}})});var n_,tqe=h(()=>{"use strict";d();O();R();n_=S({name:"TidalEmbeds",description:"Embeds TIDAL songs to make them playable in Discord.",tags:["Appearance","Chat","Media"],authors:[F.vmohammad],dependencies:["MessageUpdaterAPI","MessageAccessoriesAPI"],patches:[{find:"renderEmbeds(",replacement:{match:/(?<=renderEmbeds\(\i\){.+?embeds\.map\(\((\i),\i\)?=>{)/,replace:"$&if($self.isTidalEmbed($1))return null;"}}],isTidalEmbed(e){return["https://tidal.com/album","https://tidal.com/track","https://tidal.com/browse/album","https://tidal.com/browse/track"].some(t=>e?.url?.startsWith?.(t))},renderMessageAccessory({message:e}){let t=e.embeds?.find(u=>this.isTidalEmbed(u));if(!t)return null;let{url:o}=t,r=o.match(/\/(album|track)\/([0-9]+)/);if(!r||!r[2])return null;let n=r[1]==="album",a=r[2],s=n?700:400,l=n?300:100,c=`https://embed.tidal.com/${n?"albums":"tracks"}/${a}?disableAnalytics=true`;return i("div",{className:"tidal-embed"},i("iframe",{src:c,width:s,height:l,allow:"encrypted-media",sandbox:"allow-same-origin allow-scripts allow-forms allow-popups",title:"TIDAL Embed Player"}))}})});var oqe=h(()=>{});function F6(){return Ki.store.databaseUrl||"https://timezone.creations.works"}function o9t(){return`${F6()}/auth/discord/callback`}function U2(e,t){console.error(t,e);let o=e?.message||t;ne(o,D.Type.FAILURE)}async function Nle(e){try{return await e.json()}catch(t){return console.warn("Failed to parse JSON response:",t),{message:"Invalid response format"}}}async function r_(e,t){Mle[e]={value:t}}function iqe(e){return Mle[e]?.value??null}async function Ble(){try{let e=await fetch(`${F6()}/list`,{headers:{Accept:"application/json"}});if(e.ok){let t=await e.json();for(let o in t)Mle[o]={value:t[o]?.timezone??null};return!0}return!1}catch(e){return console.error("Failed to fetch timezones list:",e),!1}}async function aqe(){try{return(await fetch(`${F6()}/me`,{credentials:"include",headers:{Accept:"application/json"}})).ok}catch(e){return console.error("Failed to check authentication:",e),!1}}async function sqe(e){return await aqe()?nqe(e):new Promise(o=>{cqe(()=>{nqe(e).then(o)})})}async function nqe(e){let t=new URLSearchParams;t.append("timezone",e);try{let o=await fetch(`${F6()}/set`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},credentials:"include",body:t});if(!o.ok){let r=await Nle(o);return U2(r,"Failed to set timezone"),!1}return ne("Timezone updated successfully!",D.Type.SUCCESS),!0}catch(o){return U2(o,"Failed to set timezone"),!1}}async function lqe(){return await aqe()?rqe():new Promise(t=>{cqe(()=>{rqe().then(t)})})}async function rqe(){try{let e=await fetch(`${F6()}/delete`,{method:"DELETE",headers:{Accept:"application/json"},credentials:"include"});if(!e.ok){let t=await Nle(e);return U2(t,"Failed to delete timezone"),!1}return ne("Timezone deleted successfully!",D.Type.SUCCESS),!0}catch(e){return U2(e,"Failed to delete timezone"),!1}}function cqe(e){ce(t=>i(ws,{...t,clientId:t9t,redirectUri:o9t(),responseType:"code",scopes:["identify"],permissions:0n,cancelCompletesFlow:!1,callback:async o=>{if(!(!o||!o.location))try{let r=new URL(o.location),n=await fetch(r,{credentials:"include",headers:{Accept:"application/json"}}),a=await Nle(n);if(!n.ok){U2(a,"Authorization failed");return}ne("Authorization successful!",D.Type.SUCCESS),e?.()}catch(r){U2(r,"Unexpected error during authorization")}}}))}var Mle,t9t,Rle=h(()=>{"use strict";d();Su();C();i_();Mle={},t9t="1377021506810417173"});async function uqe(e,t){_6[e]=t,await Ct(Lle,_6)}function U6({userId:e,modalProps:t,database:o}){let[r,n]=T(null);G(()=>{let l=Ole(e);n(l??Fle())},[e,Ki.store.useDatabase,Ki.store.preferDatabaseOverLocal]);let a=Ne(()=>Intl.supportedValuesOf("timeZone").map(l=>{let c=new Intl.DateTimeFormat(void 0,{timeZone:l,timeZoneName:"short"}).formatToParts(new Date).find(u=>u.type==="timeZoneName").value;return{label:`${l} (${c})`,value:l}}),[]),s=[{text:"Save",variant:"primary",disabled:r===null,onClick:async()=>{o?await sqe(r)&&await r_(e,r):await uqe(e,r),t.onClose()}}];return o||s.unshift({text:"Delete Timezone",variant:"dangerPrimary",disabled:!1,onClick:async()=>{await uqe(e,null),t.onClose()}}),i(be,{...t,size:"sm",title:"Timezones",actions:s},i("section",{className:z.bottom16},i(Ot,null,"Select Timezone"),i(Fn,{options:a,value:a.find(l=>l.value===r)?.value,placeholder:"Select a Timezone",maxVisibleItems:5,closeOnSelect:!0,onChange:l=>n(l)})))}var dqe=h(()=>{"use strict";d();Io();We();Wt();C();i_();Rle()});function Ole(e){let t=_6[e];return Ki.store.useDatabase&&(Ki.store.preferDatabaseOverLocal||!t)?iqe(e)??t:t}function Fle(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function _le(e,t,o={}){let r=new Date(t);return new Intl.DateTimeFormat(mqe.getLocale()??"en-US",{hour12:!Ki.store.twentyFourHourFormat,timeZone:e,...o}).format(r)}function r9t(e,t){let o=new Date(t),a=new Intl.DateTimeFormat(mqe.getLocale()??"en-US",{timeZone:e,timeZoneName:"short"}).formatToParts(o).find(s=>s.type==="timeZoneName");return a?a.value:""}var _6,Lle,n9t,mqe,Ki,pqe,i9t,a_,i_=h(()=>{"use strict";d();oqe();Io();j();Pe();O();R();le();C();Rle();dqe();_6={},Lle="vencord-timezones";n9t=Ie("timestamp","compact","contentOnly"),mqe=Ae("getLocale"),Ki=M({showOwnTimezone:{type:3,description:"Show your own timezone in profiles and message headers",default:!0},twentyFourHourFormat:{type:3,displayName:"24h Time",description:"Show time in 24h format",default:!1},showTimezoneInfo:{type:3,description:"Show timezone info next to time",default:!0},showMessageHeaderTime:{type:3,description:"Show time in message headers",default:!0},recipientTimezoneInDms:{type:3,description:"In DMs, show the recipient's timezone on your messages",default:!1},showProfileTime:{type:3,description:"Show time in profiles",default:!0},useDatabase:{type:3,description:"Enable database for getting user timezones",default:!0},preferDatabaseOverLocal:{type:3,description:"Prefer database over local storage for timezones",default:!0},showLocalTimezone:{type:3,description:"Show Local Timezone instead of just local",default:!1},databaseUrl:{type:0,description:"Database URL for timezone storage",default:"https://timezone.creations.works"},setDatabaseTimezone:{description:"Set your timezone on the database",type:6,component:()=>i(ue,{onClick:()=>{ce(e=>i(U6,{userId:L.getCurrentUser().id,modalProps:e,database:!0}))}},"Set Timezone on Database")},resetDatabaseTimezone:{description:"Reset your timezone on the database",type:6,component:()=>i(ue,{color:ue.Colors.RED,onClick:async()=>{try{await r_(L.getCurrentUser().id,null),await lqe()}catch(e){console.error("Error resetting database timezone:",e),ne("Failed to reset database timezone",D.Type.FAILURE)}}},"Reset Database Timezone")},askedTimezone:{type:3,description:"Whether the user has been asked to set their timezone",hidden:!0,default:!1}});pqe=H.wrap(({userId:e,timestamp:t,type:o})=>{let[r,n]=T(t||Date.now()),[a,s]=T(null);if(G(()=>{s(Ole(e))},[e,Ki.store.useDatabase,Ki.store.preferDatabaseOverLocal]),G(()=>{if(o!=="profile")return;n(Date.now());let g=new Date,x=(60-g.getSeconds())*1e3+1e3-g.getMilliseconds(),v=setTimeout(()=>{n(Date.now())},x),y=setInterval(()=>{n(Date.now())},6e4);return()=>{clearTimeout(v),clearInterval(y)}},[o]),!a)return null;let l=_le(a,r,{hour:"numeric",minute:"numeric"}),c=l,u=!1;if(Ki.store.showTimezoneInfo){let g=Fle();if(u=a===g&&!Ki.store.showLocalTimezone,u)c="local";else{let v=r9t(a,r)||a;c=u&&o==="message"?v:`${l} ${v}`}}let p=_le(a,r,{weekday:"long",year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"}),m=u?`${p} (Your local timezone)`:p;return i(ve,{position:"top",delay:750,allowOverflow:!1,spacing:8,hideOnClick:!0,tooltipClassName:"timezone-tooltip",text:m},g=>i("span",{...g,className:`${o==="message"?`timezone-message-item ${n9t.timestamp}`:"timezone-profile-item"}${u?" timezone-local-text":""}`},o==="message"?`(${c})`:c))},{noop:!0}),i9t=(e,{user:t})=>{if(t?.id==null)return;let o=i(P.MenuItem,{label:"Set Local Timezone",id:"set-timezone",action:()=>ce(r=>i(U6,{userId:t.id,modalProps:r}))});e.push(i(P.MenuSeparator,null),o)};Br("Timezones","showOwnTimezone","Show Own Timezone");Br("Timezones","twentyFourHourFormat","24h Time");a_=S({name:"Timezones",authors:[b.Aria,F.creations],description:"Shows the local time of users in profiles and message headers",tags:["Appearance","Chat","Utility"],contextMenus:{"user-context":i9t},patches:[{find:'"--custom-cutout-radius":',replacement:{match:/(?<=children:\[)\i.{0,100}className:\i\.\i\}\)/,replace:"$self.renderProfileTimezone(arguments[0]),$&"}},{find:"#{intl::GUILD_COMMUNICATION_DISABLED_ICON_TOOLTIP_BODY}",replacement:{match:/(?<=isVisibleOnlyOnHover.+?)id:.{0,15},timestamp.{1,50}}\),/,replace:"$&$self.renderMessageTimezone(arguments[0]),"}}],toolboxActions:{"Set Database Timezone":()=>{ce(e=>i(U6,{userId:L.getCurrentUser().id,modalProps:e,database:!0}))},"Refresh Database Timezones":async()=>{try{await Ble()?ne("Timezones refreshed successfully!",D.Type.SUCCESS):ne("Timezones Failed to refresh!",D.Type.FAILURE)}catch(e){console.error("Failed to refresh timezone:",e),ne("Failed to refresh timezones.",D.Type.FAILURE)}}},async start(){_6=await vt(Lle)||{},Ki.store.useDatabase&&(await Ble(),Ki.store.askedTimezone||(ne("",D.Type.MESSAGE,{duration:1e4,component:i(ue,{color:ue.Colors.GREEN,onClick:()=>{ce(e=>i(U6,{userId:L.getCurrentUser().id,modalProps:e,database:!0}))}},"Want to save your timezone to the database? Click here to set it."),position:D.Position.BOTTOM}),Ki.store.askedTimezone=!0))},settings:Ki,getTime:_le,renderProfileTimezone:e=>{if(!Ki.store.showProfileTime||!e?.bannerSrc)return null;let o=/\/banners\/(\d+)\//.exec(e.bannerSrc)?.[1];return!o||o===L.getCurrentUser().id&&!Ki.store.showOwnTimezone?null:i(pqe,{userId:o,type:"profile"})},renderMessageTimezone:e=>{let{showMessageHeaderTime:t,recipientTimezoneInDms:o,showOwnTimezone:r}=Ki.store;if(!t||!e?.message)return null;let n=e.message.author.id;if(n===L.getCurrentUser().id){let a=W.getChannel(e.message.channel_id),s=a?.isDM()?a.getRecipientId():null;if(o&&s)n=s;else if(!r)return null}return i(pqe,{userId:n,timestamp:e.message.timestamp.toISOString(),type:"message"})}})});function hqe(e){gqe.base=e||null,a9t({messages:0})()}var a9t,gqe,fqe,s_,xqe=h(()=>{"use strict";d();j();O();R();le();a9t=Oe("=>({flashQueue:[..."),gqe={base:null},fqe=M({title:{type:0,default:"Equicord",description:"Window title prefix",onChange:hqe}});s_=S({name:"Title",description:"Replaces the window title prefix",tags:["Customisation"],authors:[b.Kyuuhachi],settings:fqe,patches:[{find:'isPlatformEmbedded?void 0:"Discord"',replacement:{match:/\{base:\i\("?\d+?"?\)\.isPlatformEmbedded\?void 0:"Discord"\}/,replace:"$self.rootTitle"}}],start(){hqe(fqe.store.title)},rootTitle:gqe})});var vqe=h(()=>{});function yqe(e){return"mockedMessage"in e}function l9t(e){if(e.isGroupDM()){let t=e.icon?at.getChannelIconURL?.({id:e.id,icon:e.icon,size:32}):void 0,o=e.name?.trim()||e.rawRecipients.slice(0,3).map(n=>n.username).join(", "),r=o.length>20?o.substring(0,20)+"...":o;return i("div",{className:ga("context-header")},t&&i("img",{className:ga("context-header-icon"),src:t,alt:""}),i("span",{className:ga("context-header-name")},r))}if(e.guild_id){let t=$e.getGuild(e.guild_id),o=t?.icon?at.getGuildIconURL({id:t.id,icon:t.icon,size:32}):void 0;return i("div",{className:ga("context-header")},o&&i("img",{className:ga("context-header-icon"),src:o,alt:""}),i("span",{className:ga("context-header-name")},t?.name??"Unknown Server",e.name&&i(f,null,i("span",{className:ga("context-header-separator")}," \u203A "),i("span",{className:ga("context-header-channel")},"#",e.name))))}return null}var ga,s9t,bqe,Sqe=h(()=>{"use strict";d();vqe();Pe();l_();we();le();C();ga=K("vc-toast-notifications-"),s9t=he("childrenExecutedCommand:",".hideAccessories");bqe=H.wrap(function(t){let[o,r]=T(!1),[n,a]=T(0),s=(ys.store.timeout??5)*1e3,l=ys.store.opacity/100,c=Se(Date.now());G(()=>{if(o||t.permanent){a(0);return}c.current=Date.now();let v=setInterval(()=>{let y=Date.now()-c.current;y>=s?t.onClose():a(y)},10);return()=>clearInterval(v)},[o,t.permanent,s]);let u=n/s,p=()=>{t.onClick?.(),t.dismissOnClick!==!1&&t.onClose()},m=v=>{v.preventDefault(),v.stopPropagation(),yqe(t)&&Q.dispatch({type:"BULK_ACK",context:"APP",channels:[{channelId:t.channel.id,messageId:t.message.id,readStateType:0}]}),t.onClose()},g=Ne(()=>i("button",{className:ga("notification-close-btn"),onClick:v=>{v.preventDefault(),v.stopPropagation(),t.onClose()}},i("svg",{width:"24",height:"24",viewBox:"0 0 24 24",role:"img","aria-labelledby":"vc-toast-notifications-dismiss-title"},i("title",{id:"vc-toast-notifications-dismiss-title"},"Dismiss Notification"),i("path",{fill:"currentColor",d:"M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"}))),[t.onClose]),x;if(yqe(t))x=i("div",{className:ga("notification-content")},l9t(t.channel),i(s9t,{id:`toastnotification-mock-${t.message.id}`,message:t.mockedMessage,channel:t.channel,subscribeToComponentDispatch:!1}));else{let{title:v,body:y,icon:A}=t;x=i("div",{className:ga("notification-system")},A&&i("img",{className:ga("notification-icon"),src:A,alt:""}),i("div",{className:ga("notification-content")},i("div",{className:ga("notification-header")},i("h2",{className:ga("notification-title")},v)),y&&i("p",{className:ga("notification-p")},y.length>500?y.slice(0,500)+"...":y)))}return i("button",{style:{opacity:l},className:ga("notification-root"),onClick:p,onContextMenu:m,onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1)},g,x,s!==0&&!t.permanent&&i("div",{className:ga("notification-progressbar"),style:{width:`${(1-u)*100}%`}}))},{onError:({props:e})=>e.onClose()})});function u9t(){return z6||(Sp=document.createElement("div"),Sp.id="vc-toast-notifications-container",document.body.append(Sp),z6=Bi(Sp)),Sp&&(Sp.className=`vc-toast-notifications-position-${ys.store.position??"bottom-left"}`),z6}function wqe(e){Sp&&(Sp.className=`vc-toast-notifications-position-${e??"bottom-left"}`)}async function Ule(e){let t=u9t(),o=c9t++;return new Promise(r=>{let n=i(bqe,{key:o.toString(),...e,onClose:()=>{v0=v0.filter(a=>a.key!==o.toString()),e.onClose?.(),t.render(i(f,null,v0)),r()}});v0.push(n),v0.length>ys.store.maxNotifications&&v0.shift(),t.render(i(f,null,v0))})}function Aqe(){v0=[],z6?.unmount(),z6=void 0,Sp?.remove(),Sp=void 0}var v0,c9t,z6,Sp,kqe=h(()=>{"use strict";d();l_();C();Sqe();v0=[],c9t=0});function d_(e){return e?e.replace(/\s/g,"").split(",").filter(t=>m9t.test(t)):[]}function f9t(e){W.hasChannel(e.id)&&(Yt.transitionTo(`/channels/${e.guild_id??"@me"}/${e.id}/`),e.isGuildVocal?.()&&p9t.updateChatOpen(e.id,!0))}function g9t(e,t){if(u_.includes(t.id)||ys.store.friendServerNotifications&&qe.isFriend(e.author.id))return!0;if(Cqe.isGuildOrCategoryOrChannelMuted(t.guild_id,t.id))return!1;let o=M0("UserGuildSettingsStore").getAllSettings().userGuildSettings[t.guild_id];if(!o)return!1;let r=o.channel_overrides?.[t.id],n=r&&typeof r=="object"&&"message_notifications"in r?r.message_notifications:typeof o.message_notifications=="number"?o.message_notifications:2;return n===2?!1:n===0?!0:e.content.includes(`<@${L.getCurrentUser().id}>`)}function h9t(){return Ule({title:"Example Notification",body:"This is an example toast notification!",icon:at.getUserAvatarURL(L.getCurrentUser()),permanent:!1})}var Cqe,d9t,p9t,m9t,c_,u_,ys,p_,l_=h(()=>{"use strict";d();j();Tt();O();R();le();C();kqe();Cqe=Ae("isSuppressEveryoneEnabled"),d9t=Ae("selectPrivateChannel"),p9t=Ae("updateChatOpen","toggleParticipants"),m9t=/^\d{17,20}$/,c_=[],u_=[],ys=M({position:{type:4,description:"The position of the toast notification.",options:[{label:"Bottom Left",value:"bottom-left",default:!0},{label:"Top Left",value:"top-left"},{label:"Top Right",value:"top-right"},{label:"Bottom Right",value:"bottom-right"}],onChange:e=>wqe(e)},timeout:{type:5,description:"Time in seconds notifications will be shown for.",default:5,markers:zt(1,15,1)},opacity:{type:5,description:"The visible opacity of the notification.",default:100,markers:zt(10,100,10)},maxNotifications:{type:5,description:"Maximum number of notifications displayed at once.",default:3,markers:zt(1,5,1)},disableInStreamerMode:{type:3,description:"Do not show notifications when streamer mode is enabled.",default:!0},respectDoNotDisturb:{type:3,description:"Do not show notifications when your status is Do Not Disturb.",default:!1},directMessages:{type:3,description:"Show notifications for direct messages.",default:!0},groupMessages:{type:3,description:"Show notifications for group messages.",default:!0},friendServerNotifications:{type:3,description:"Show notifications when friends send messages in servers they share with you.",default:!0},ignoreUsers:{type:0,description:"A list of user IDs (separate by commas) to ignore displaying notifications for.",onChange:()=>{c_=d_(ys.store.ignoreUsers)},default:"",placeholder:"000000000000000000,111111111111111111,222222222222222222"},notifyFor:{type:0,description:"A list of channel IDs (separate by commas) to always receive notifications from.",onChange:()=>{u_=d_(ys.store.notifyFor)},default:"",placeholder:"000000000000000000,111111111111111111,222222222222222222"},exampleButton:{type:6,description:"Show an example toast notification.",component:()=>i(de,{onClick:h9t},"Show Example Notification")}}),p_=S({name:"ToastNotifications",description:"Show a pop-up toast notification, configurable for DMs, group, friends, or guild channels.",tags:["Appearance","Customisation","Notifications"],authors:[F.Skully,F.Ethan,F.Buzzy],settings:ys,flux:{MESSAGE_CREATE({message:e}){let t=W.getChannel(e.channel_id);if(!t)return;let o=L.getCurrentUser();if(e.author.id===o.id||t.id===Fe.getChannelId()||c_.includes(e.author.id)||ys.store.respectDoNotDisturb&&Yo.getStatus(o.id)==="dnd"||ys.store.disableInStreamerMode&&zl.enabled)return;if(t.guild_id){if(!g9t(e,t))return}else if(!ys.store.directMessages&&t.isDM()||!ys.store.groupMessages&&t.isGroupDM()||Cqe.isChannelMuted(null,t.id))return;let r=lt.getMessages(e.channel_id)?.receiveMessage(e)?.get(e.id);if(!r)return console.error(`[ToastNotifications] Failed to retrieve mocked message from MessageStore for message ID ${e.id}!`);Ule({message:e,mockedMessage:r,channel:t,onClick:()=>t.guild_id?f9t(t):d9t.selectPrivateChannel(t.id)})}},start(){c_=d_(ys.store.ignoreUsers),u_=d_(ys.store.notifyFor)},stop(){Aqe(),c_=[],u_=[]}})});function Tqe({code:e,ctrlKey:t,shiftKey:o,altKey:r}){let{keyBind:n,reqCtrl:a,reqShift:s,reqAlt:l}=Iqe.store;n!==e||t!==a||o!==s||r!==l||Q.dispatch({type:"MEDIA_ENGINE_SET_VIDEO_ENABLED",enabled:!v9t()})}var x9t,Iqe,v9t,m_,Eqe=h(()=>{"use strict";d();j();O();R();le();C();x9t=["Backspace","Tab","Enter","ShiftLeft","ShiftRight","ControlLeft","ControlRight","AltLeft","AltRight","Pause","CapsLock","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","PrintScreen","Insert","Delete","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","KeyA","KeyB","KeyC","KeyD","KeyE","KeyF","KeyG","KeyH","KeyI","KeyJ","KeyK","KeyL","KeyM","KeyN","KeyO","KeyP","KeyQ","KeyR","KeyS","KeyT","KeyU","KeyV","KeyW","KeyX","KeyY","KeyZ","MetaLeft","MetaRight","ContextMenu","Numpad0","Numpad1","Numpad2","Numpad3","Numpad4","Numpad5","Numpad6","Numpad7","Numpad8","Numpad9","NumpadMultiply","NumpadAdd","NumpadSubtract","NumpadDecimal","NumpadDivide","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NumLock","ScrollLock"],Iqe=M({keyBind:{description:"The key to toggle webcam when pressed.",type:0,default:"KeyX",isValid:e=>x9t.includes(e)},reqCtrl:{description:"Require control to be held.",type:3,default:!0},reqShift:{description:"Require shift to be held.",type:3,default:!0},reqAlt:{description:"Require alt to be held.",type:3,default:!1}}),{isVideoEnabled:v9t}=Ae("isVideoEnabled");m_=S({name:"ToggleVideoBind",description:"Adds a customizable bind to toggle webcam.",tags:["Utility","Voice"],authors:[F.mochienya],settings:Iqe,start(){document.addEventListener("keydown",Tqe)},stop(){document.removeEventListener("keydown",Tqe)}})});var y9t,f_,Dqe=h(()=>{"use strict";d();y9t=new Map(Object.entries({j:"Joking",hj:"Half Joking",s:"Sarcastic",_sarc:"Sarcastic",gen:"Genuine",_g:"Genuine",genq:"Genuine Question",_gq:"Genuine Question",srs:"Serious",nsrs:"Non-Serious",pos:"Positive Connotation",_pc:"Positive Connotation",neu:"Neutral Connotation",neg:"Negative Connotation",_nc:"Negative Connotation",p:"Platonic",r:"Romantic",a:"Alterous",c:"Copypasta",l:"Lyrics",_ly:"Lyrics",lh:"Light-Hearted",nm:"Not Mad",lu:"A Little Upset",nbh:"Not Directed At Anybody Here",nay:"Not Directed At You",ay:"Directed At You",nsb:"Not Subtweeting",x:"Sexual Intent",_sx:"Sexual Intent",nx:"Non-Sexual Intent",_nsx:"Non-Sexual Intent",rh:"Rhetorical Question",_rt:"Rhetorical Question",t:"Teasing",ij:"Inside Joke",m:"Metaphorically",li:"Literally",hyp:"Hyperbole",ex:"Exaggeration",f:"Fake",q:"Quote",th:"Threat",cb:"Clickbait",ref:"Reference",nf:"Not Forced",nbr:"Not Being Rude",ot:"Off-Topic",nj:"Not Joking",naj:"Not A Joke"})),f_=y9t});function zle({prefix:e,indicator:t,desc:o}){return i(ve,{text:o},r=>i("span",{...r,style:{color:"var(--text-default)",userSelect:"text"}},e,t))}var Pqe=h(()=>{"use strict";d();C()});function Mqe(){let e=$6.store.customIndicators||"",t={};return e.split("; ").forEach(o=>{let[r,...n]=o.split("=");r&&n.length>0&&(t[r.trim().toLowerCase()]=n.join("=").trim())}),t}function b9t(e){e=e.toLowerCase();let t=Mqe();return t[e]||t[`_${e}`]||f_.get(e)||f_.get(`_${e}`)||null}function S9t(){let e=Mqe(),t=new Set;f_.forEach((l,c)=>{t.add(c.replace(/^_/,""))}),Object.keys(e).forEach(l=>{t.add(l.replace(/^_/,""))});let o=Array.from(t).map(l=>l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).sort((l,c)=>c.length-l.length),r=$6.store.prefix||"/",n=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");/[*_~`|]/.test(r)&&(n=`(?:\\\\${n}|${n})`);let s=`(?:^|\\s)${n}(${o.join("|")})(?=\\s|$|[^\\s\\w/])`;return new RegExp(s,"giu")}function w9t(e){let t=[],o=0,r=S9t(),n=$6.store.prefix||"/",a;for(;a=r.exec(e);){let s=a[1],l=b9t(s),u=a[0].match(/^(\s*)/)?.[1]??"",p=a.index,m=r.lastIndex;p>o&&t.push(e.slice(o,p)),l&&(u&&t.push(u),t.push(i(zle,{key:`ti-${p}`,prefix:n,indicator:s,desc:l}))),o=m}return o{if(o==null)return o;if(typeof o=="string"){let r=$6.store.prefix||"/",n=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(/[*_~`|]/.test(r)&&(n=`(?:\\\\${n}|${n})`),!new RegExp(`${n}[\\p{L}_]+`,"iu").test(o))return o;let s=w9t(o);return s.length===1?s[0]:s}if(o?.props?.children!=null){let r=o.props.children;return Array.isArray(r)?o.props.children=r.map(t).flat():o.props.children=t(r),o}return o};return Array.isArray(e)?e.map(t).flat():t(e)}var $6,g_,Nqe=h(()=>{"use strict";d();j();O();R();Dqe();Pqe();$6=M({prefix:{type:0,description:"Prefix character(s) for tone indicators.",default:"/"},customIndicators:{type:0,description:"Custom tone indicators (format: jk=Joking; srs=Serious)",default:""}});g_=S({name:"ToneIndicators",description:"Show tooltips for tone indicators like /srs, /gen, etc. in sent messages.",tags:["Chat","Utility"],authors:[F.justjxke],settings:$6,patches:[{find:'["strong","em","u","text","inlineCode","s","spoiler"]',replacement:[{match:/(?=return\{hasSpoilerEmbeds:\i,.{0,15}content:(\i))/,replace:"$1=$self.patchToneIndicators($1);"}]}],patchToneIndicators(e){try{return A9t(e)}catch{return e}}})});var Bqe=h(()=>{});var h_,$le=h(()=>{"use strict";d();j();R();h_=M({target:{type:0,description:"Target language",default:"en",restartNeeded:!0},toki:{type:3,description:"Enable Toki Pona",default:!0,restartNeeded:!0},sitelen:{type:3,description:"Enable Sitelen Pona",default:!0,restartNeeded:!0},shavian:{type:3,description:"Enable Shavian",default:!0,restartNeeded:!0}})});var Rqe,Lqe=h(()=>{"use strict";d();Rqe={auto:"Detect language",af:"Afrikaans",sq:"Albanian",am:"Amharic",ar:"Arabic",hy:"Armenian",as:"Assamese",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",eu:"Basque",be:"Belarusian",bn:"Bengali",bho:"Bhojpuri",bs:"Bosnian",bg:"Bulgarian",ca:"Catalan",ceb:"Cebuano",ny:"Chichewa","zh-CN":"Chinese (Simplified)","zh-TW":"Chinese (Traditional)",co:"Corsican",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Dhivehi",doi:"Dogri",nl:"Dutch",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",tl:"Filipino",tp:"Toki Pona",sh:"Shavian",fi:"Finnish",fr:"French",fy:"Frisian",gl:"Galician",ka:"Georgian",de:"German",el:"Greek",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",haw:"Hawaiian",iw:"Hebrew",hi:"Hindi",hmn:"Hmong",hu:"Hungarian",is:"Icelandic",ig:"Igbo",ilo:"Ilocano",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",jw:"Javanese",kn:"Kannada",kk:"Kazakh",km:"Khmer",rw:"Kinyarwanda",gom:"Konkani",ko:"Korean",kri:"Krio",ku:"Kurdish (Kurmanji)",ckb:"Kurdish (Sorani)",ky:"Kyrgyz",lo:"Lao",la:"Latin",lv:"Latvian",ln:"Lingala",lt:"Lithuanian",lg:"Luganda",lb:"Luxembourgish",mk:"Macedonian",mai:"Maithili",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi","mni-Mtei":"Meiteilon (Manipuri)",lus:"Mizo",mn:"Mongolian",my:"Myanmar (Burmese)",ne:"Nepali",no:"Norwegian",or:"Odia (Oriya)",om:"Oromo",ps:"Pashto",fa:"Persian",pl:"Polish",pt:"Portuguese",pa:"Punjabi",qu:"Quechua",ro:"Romanian",ru:"Russian",sm:"Samoan",sa:"Sanskrit",gd:"Scots Gaelic",nso:"Sepedi",sr:"Serbian",st:"Sesotho",sn:"Shona",sd:"Sindhi",si:"Sinhala",sk:"Slovak",sl:"Slovenian",so:"Somali",es:"Spanish",su:"Sundanese",sw:"Swahili",sv:"Swedish",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",ti:"Tigrinya",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",ak:"Twi",uk:"Ukrainian",ur:"Urdu",ug:"Uyghur",uz:"Uzbek",vi:"Vietnamese",cy:"Welsh",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",zu:"Zulu"}});var G6,Gle=h(()=>{"use strict";d();we();G6=K("eq-trans-")});var qx,Hle=h(()=>{"use strict";d();Gle();Be();qx=({height:e=20,width:t=20,className:o})=>i("svg",{viewBox:"0 96 960 960",height:e,width:t,className:X(G6("icon"),o)},i("path",{fill:"currentColor",d:"m475 976 181-480h82l186 480h-87l-41-126H604l-47 126h-82Zm151-196h142l-70-194h-2l-70 194Zm-466 76-55-55 204-204q-38-44-67.5-88.5T190 416h87q17 33 37.5 62.5T361 539q45-47 75-97.5T487 336H40v-80h280v-80h80v80h280v80H567q-22 69-58.5 135.5T419 598l98 99-30 81-127-122-200 200Z"}),i("path",{fill:"currentColor",d:"m 830.17456,136.43701 c -11.54729,0 -20.84473,8.71252 -20.84473,19.53369 v 66.21826 h -66.21826 c -10.82122,0 -19.53369,9.29373 -19.53369,20.84107 0,11.54734 8.71247,20.84473 19.53369,20.84473 h 66.21826 v 66.21826 c 0,10.8212 9.29742,19.53369 20.84473,19.53369 11.54731,0 20.84106,-8.71249 20.84106,-19.53369 v -66.21826 h 66.21827 c 10.82124,0 19.53369,-9.29737 19.53369,-20.84473 0,-11.54736 -8.71245,-20.84107 -19.53369,-20.84107 H 851.01562 V 155.9707 c 0,-10.82117 -9.29377,-19.53369 -20.84106,-19.53369 z"}),i("rect",{fill:"currentColor",width:"0.42110577",height:"2.1055288",x:"848.52814",y:"112.42313",ry:"0.2105529"}))});function k9t(e){let t=/\b(?:leko|weka|pan|lete|linja|lipu|suli|nimi|akesi|misikeke|selo|ike|sijelo|sona|lili|pimeja|ante|jo|loje|telo|walo|kijetesantakalu|kasi|waso|wile|utala|lukin|sina|lape|ma|pilin|jasima|la|olin|pipi|meso|lawa|pi|pakala|oko|tan|ken|jaki|unpa|esun|seme|sitelen|len|kule|soko|open|ala|tenpo|lon|sinpin|pini|kokosila|mama|musi|monsi|mewika|taso|ona|mun|kiwen|tomo|mute|mi|nena|palisa|meli|laso|wawa|ale|kipisi|kulupu|ilo|lupa|nanpa|en|mu|jelo|kili|tonsi|moku|ni|kama|pu|poki|monsuta|sin|lasina|poka|soweli|sewi|elena|epiku|moli|pona|lanpan|alasa|anu|kute|uta|luka|suno|sama|awen|namako|suwi|noka|seli|mije|sike|jan|pali|tawa|inli|nasa|mani|wan|insa|nijon|nasin|kalama|ijo|toki|anpa|kala|kepeken|ko|kon|pana|tu|supa|kin|usawi|yupekosi)\b/gm;return(e.match(t)||[]).length>=e.split(/\s+/).length*.5}function Oqe(e){return/(?:󱤀|ó±¤|󱤂|󱤃|󱤄|󱤅|󱤆|󱤇|󱤈|󱤉|󱤊|󱤋|󱤌|ó±¤|󱤎|ó±¤|ó±¤|󱤑|󱤒|󱤓|󱤔|󱤕|󱤖|󱤗|󱤘|󱤙|󱤚|󱤛|󱤜|ó±¤|󱤞|󱤟|󱤠|󱤡|󱤢|󱤣|󱤤|󱤥|󱤦|󱤧|󱤨|󱤩|󱤪|󱤫|󱤬|󱤭|󱤮|󱤯|󱤰|󱤱|󱤲|󱤳|󱤴|󱤵|󱤶|󱤷|󱤸|󱤹|󱤺|󱤻|󱤼|󱤽|󱤾|󱤿|ó±¥€|ó±¥|󱥂|󱥃|󱥄|ó±¥…|󱥆|󱥇|󱥈|󱥉|󱥊|󱥋|󱥌|ó±¥|󱥎|ó±¥|ó±¥|󱥑|ó±¥’|󱥓|ó±¥”|󱥕|ó±¥–|ó±¥—|󱥘|ó±¥™|󱥚|ó±¥›|󱥜|ó±¥|󱥞|󱥟|ó±¥ |󱥡|ó±¥¢|ó±¥£|󱥤|ó±¥¥|󱥦|ó±¥§|󱥨|󱥩|󱥪|󱥫|󱥬|ó±¥­|ó±¥®|󱥯|ó±¥°|ó±¥±|ó±¥²|ó±¥³|ó±¥´|ó±¥µ|ó±¥¶|ó±¥·|󱦠|󱦡|󱦢|󱦣|󱥸|ó±¥¹|󱥺|ó±¥»|ó±¥¼|ó±¥½|ó±¥¾|󱥿|󱦀|ó±¦|󱦂|󱦃|󱦄|󱦅|󱦆|󱦇|󱦈|ó±¦|󱦑|󱦒|󱦓|󱦔|󱦕|󱦖|󱦗|󱦘|󱦙|󱦚|󱦛|󱦜|ó±¦)/gm.test(e)}function C9t(e){return/[\u{10450}-\u{1047F}]+/u.test(e)}async function T9t(e){let t=await(await fetch("https://raw.githubusercontent.com/ForkPrince/TranslatePlus/322199d5fdb1a9506591c9f4a2826338b5d67e38/shavian.json")).json(),o={'"':'"',"\xAB":'"',"\xBB":'"',",":",","!":"!","?":"?",".":".","(":"(",")":")","/":"/",";":";",":":":"},r="",n=e.split(/\s+/);for(let a of n){let s="",l="";a[0]in o&&(s=o[a[0]],a=a.slice(1)),a[a.length-1]in o&&(l=o[a[a.length-1]],a=a.slice(0,-1)),r+=s,a in t?r+=t[a]:r+=a,r+=l+" "}return r.trim()}async function I9t(e){e=Array.from(e).join(" ");let t=await(await fetch("https://raw.githubusercontent.com/ForkPrince/TranslatePlus/5ca152b134ea11433971f21b2ef8d556d4306717/sitelen-pona.json")).json(),o=Object.keys(t).sort((a,s)=>s.length-a.length),r=new RegExp(`(${o.join("|")})`,"g");return e.replace(r,a=>t[a])}async function jle(e,t){if(!t)return{src:"",text:""};try{let o=await fetch(`https://translate.googleapis.com/translate_a/single?${new URLSearchParams({client:"gtx",sl:"auto",tl:e,dt:"t",dj:"1",source:"input",q:t})}`);if(!o.ok)throw new Error(`Request failed with status ${o.status}`);let r=await o.json();return{src:r.src,text:r.sentences?.map(n=>n.trans).filter(Boolean).join(` `)}}catch(o){return console.error("[TranslatePlus] Google Translate request failed:",o),{src:"en",text:"Translation failed due to an error."}}}async function Fqe(e){let{target:t,toki:o,sitelen:r,shavian:n}=h_.store,a={src:"",text:""};if((k9t(e)||Oqe(e))&&(o||r)){Oqe(e)&&r&&(e=await I9t(e)),console.log(e);let s=await(await fetch("https://aiapi.serversmp.xyz/toki",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({text:e,src:"tl",target:"en"})})).json();console.log(s),a.src="tp",a.text=t==="en"?s.translation[0]:(await jle(t,s.translation[0])).text}else if(C9t(e)&&n){let s=await T9t(e);a.src="sh",a.text=t==="en"?s:(await jle(t,s)).text}else{let s=await jle(t,e);a.src=s.src,a.text=s.text}return a}var _qe=h(()=>{"use strict";d();$le()});function Uqe({message:e}){let[t,o]=T(void 0);return G(()=>{if(!e.vencordEmbeddedBy)return qle.set(e.id,o),()=>{qle.delete(e.id)}},[]),t?i("div",{className:G6("accessory")},i(qx,{height:16,width:16}),kt.parse(t.text)," ","(translated from ",Rqe[t.src]??t.src," - ",i("button",{onClick:()=>o(void 0),className:G6("dismiss")},"Dismiss"),")"):null}async function Wle(e){qle.get(e.id)(await Fqe(e.content))}var qle,zqe=h(()=>{"use strict";d();Lqe();Gle();C();Hle();_qe();qle=new Map});var E9t,x_,$qe=h(()=>{"use strict";d();Bqe();Fo();O();R();C();$le();zqe();Hle();E9t=(e,{message:t})=>{if(!t.content)return;let o=wt("copy-text",e);o&&o.splice(o.findIndex(r=>r?.props?.id==="copy-text")+1,0,i(P.MenuItem,{id:"ec-trans",label:"Translate",icon:qx,leadingAccessory:{type:"icon",icon:qx},action:()=>Wle(t)}))},x_=S({name:"Translate+",description:"Vencord's translate plugin but with support for artistic languages!",dependencies:["MessageAccessoriesAPI","MessagePopoverAPI"],tags:["Chat","Utility"],authors:[b.Ven,F.Prince527],settings:h_,contextMenus:{message:E9t},renderMessageAccessory:e=>i(Uqe,{message:e.message}),messagePopoverButton:{icon:qx,render(e){return e.content?{label:"Translate",icon:qx,message:e,channel:W.getChannel(e.channel_id),onClick:()=>Wle(e)}:null}}})});var Qi,Kle=h(()=>{"use strict";d();j();R();Qi=M({apiKey:{type:0,description:"API Key.",default:"",placeholder:"Enter API Key here for your AI endpoint.",componentProps:{type:"password"}},model:{type:0,description:"AI Model to use.",default:"google/gemini-3-flash-preview",placeholder:"e.g. google/gemini-3-flash-preview, inception/mercury, openai/gpt-5.2-chat, etc."},systemPrompt:{type:0,description:"System Prompt for the AI. Placeholders: {current_user}, {current_time}",default:`You are a helpful assistant who answers questions for the user in a concise and short way while using the least amount of words and punctuation. Current user: {current_user} Current time: {current_time}`,placeholder:"Enter system prompt.",multiline:!0},maxTokens:{type:1,description:"Maximum number of tokens in the response.",default:500},endpoint:{type:0,description:"OpenAI Compatible AI Endpoint.",default:"https://openrouter.ai/api/v1/chat/completions",placeholder:"Enter your OpenAI compatible AI endpoint here."},context:{type:1,description:"Number of previous messages to include as context.",default:0},passMessageAuthorName:{type:3,description:"Prepend the author's name to the message content when passing it to the AI. This can help the AI distinguish between different users in a conversation.",default:!0},treatSelfAsAssistant:{type:3,description:"When enabled, your own messages will be treated as assistant messages in the context. This causes some models to start generating fanfic.",default:!1},mode:{type:4,description:"How should answers be handled?",options:[{label:"Auto Reply",value:"autoreply"},{label:"Replace Chatbar Text",value:"chatbar",default:!0},{label:"Clyde",value:"bot"}]},supportImages:{type:3,description:"Pass images to the AI for context (if any). This is not supported by all models.",default:!0},sendImagesAsBase64:{type:3,description:"Send images to the AI as base64.",default:!1}})});async function Qle(e){let o=[...D9t(e,Qi.store.context),e],r=L.getCurrentUser().id,n=[];for(let a of o){let s=P9t(a);if(!s)continue;let l=a.author?.id===r,c=a.id===e.id,u=l&&!c&&Qi.store.treatSelfAsAssistant?"assistant":"user",p=s;if(!l&&Qi.store.passMessageAuthorName){let g=`${a.author?.username??"Unknown"}: `;if(typeof s=="string")p=g+s;else if(Array.isArray(s)){p=[...s];let x=p.findIndex(v=>v.type==="text");x!==-1?p[x]={type:"text",text:g+p[x].text}:p.unshift({type:"text",text:g})}}n.push({role:u,content:p})}return n.length===0?null:Qi.store.sendImagesAsBase64?Promise.all(n.map(async a=>{if(typeof a.content=="string")return a;let s=await Promise.all(a.content.map(l=>l.type==="image_url"?M9t(l):l));return{...a,content:s.filter(l=>l!==null)}})):n}function D9t(e,t){let o=lt.getMessages(e.channel_id)._array,r=o.findIndex(n=>n.id===e.id);return r<=0||t===0?[]:o.slice(Math.max(0,r-t),r)}function P9t(e){let t=[];e.content&&e.content.trim().length>0&&t.push(e.content),e.embeds.forEach(a=>{let s=[];[a.provider?.name?`> ${a.provider.name}`:null,a.author?.name?`**${a.author.name}**`:null,a.rawTitle?`## ${a.rawTitle}`:null,a.rawDescription??null,...a.fields?.map(c=>c.rawName&&c.rawValue?`**${c.rawName}**: ${c.rawValue}`:null)??[],a.footer?.text?`_${a.footer.text}_`:null].forEach(c=>{c&&s.push(c)}),s.length>0&&t.push(s.join(` `))});let o=t.join(` `);if(!Qi.store.supportImages)return o||null;let r=new Set;if(e.attachments.filter(a=>a.content_type?.startsWith("image/")).forEach(a=>r.add(a.proxy_url??a.url)),e.embeds.forEach(a=>{[a.image?.url,a.thumbnail?.url,...a.images?.map(l=>l.url)??[]].forEach(l=>{l&&r.add(l)})}),r.size===0)return o||null;let n=[];return o.length>0&&n.push({type:"text",text:o}),r.forEach(a=>{n.push({type:"image_url",image_url:{url:a}})}),n}async function M9t(e){try{let t=await fetch(e.image_url.url);if(!t.ok)return null;let o="",r=new Uint8Array(await t.arrayBuffer());for(let n=0;n{try{return JSON.parse(o)}catch{return{}}})();if(!t.ok||r.error){let a=r.error?.message??o??`Status ${t.status}`;return v_.error(`API Error: ${a}`),ne(a,D.Type.FAILURE),""}let n=r.choices?.[0]?.message?.content;return n?.trim()?n:(v_.warn("no response from AI model"),"")}catch(t){return v_.error("Error getting response from AI model",t),ne("Error getting response from AI model",D.Type.FAILURE),""}}var v_,Gqe=h(()=>{"use strict";d();yr();_e();He();C();Kle();v_=new ie("TriviaAI")});var B9t,y_,Hqe=h(()=>{"use strict";d();Fo();ot();O();R();C();Kle();Gqe();B9t=(e,{message:t})=>{if(!t.content.trim()&&!t.embeds.length&&(!Qi.store.supportImages||!t.attachments.some(r=>r.content_type?.startsWith("image/"))))return;let o=wt("copy-text",e);o&&o.splice(o.findIndex(r=>r?.props?.id==="copy-text")+1,0,i(P.MenuItem,{id:"vc-trivia-ai",label:"Answer With AI",icon:i1,leadingAccessory:{type:"icon",icon:i1},action:async()=>{let r=await Qle(t);if(!r)return;let n=await Yle(r);Zle(t,n)}}))},y_=S({name:"TriviaAI",description:"A plugin that helps you answer trivia questions using AI.",dependencies:["MessagePopoverAPI"],tags:["Appearance","Customisation","Fun"],authors:[F.yash],settings:Qi,contextMenus:{message:B9t},messagePopoverButton:{icon:i1,render(e){return!e.content.trim()&&!e.embeds.length&&(!Qi.store.supportImages||!e.attachments.some(t=>t.content_type?.startsWith("image/")))?null:{label:"Answer With AI",icon:i1,message:e,channel:W.getChannel(e.channel_id),onClick:async()=>{let t=await Qle(e);if(!t)return;let o=await Yle(t);Zle(e,o)}}}}})});var jqe=h(()=>{});function qqe(e){let t=e;if(Jle.store.myUnits==="imperial")for(let o in z2.metric)t=t.replaceAll(z2.metric[o].regex,z2.metric[o].convert);else for(let o in z2.imperial)t=t.replaceAll(z2.imperial[o].regex,z2.imperial[o].convert);return t}var z2,Wqe=h(()=>{"use strict";d();Xle();z2={imperial:{farenheight:{regex:/(-?\d+(?:\.\d+)?)°?(f)(?!\w)/ig,convert(...e){return`${((parseFloat(e[1])-32)*.5555555555555556).toFixed(2)}\xB0C`}},feetInchesMark:{regex:/(\d+)(') ?(\d+(?:\.\d+)?)("|'')?/g,convert(...e){let t=parseFloat(e[1])/3.281;return t+=parseFloat(e[3])/39.37,`${t.toFixed(2)}m`}},feetWord:{regex:/(\d+(?:\.\d+)?) *(f(ee)?t)(?! *\d)/ig,convert(...e){return`${(parseFloat(e[1])/3.281).toFixed(2)}m`}},inchesWord:{regex:/(?o("")})):null}var Vle,b_,Qqe=h(()=>{"use strict";d();we();C();Vle=new Map,b_=K("vc-converter-")});var Jle,S_,Xle=h(()=>{"use strict";d();jqe();ow();j();O();R();C();Wqe();Qqe();Jle=M({myUnits:{type:4,description:"the units you use and want things converted to. defaults to imperial",options:[{default:!0,label:"Imperial",value:"imperial"},{label:"Metric",value:"metric"}]}}),S_=S({name:"UnitConverter",description:"Converts metric units to Imperal units and vice versa",dependencies:["MessagePopoverAPI"],tags:["Utility"],authors:[b.sadan],messagePopoverButton:{icon:ece,render(e){return e.content?{label:"Convert Units",icon:ece,message:e,channel:W.getChannel(e.channel_id),onClick:async()=>{let t=Vle.get(e.id);t&&t(qqe(e.content))}}:null}},start(){K0("vc-converter",e=>i(Kqe,{message:e.message}))},settings:Jle})});function O9t(){return tce||(tce=Object.values(L.getUsers())),tce}var w_,tce,A_,Zqe=h(()=>{"use strict";d();j();ql();O();R();C();w_=M({globalMention:{type:3,description:"Mention users from any server, not just the current one",default:!1,restartNeeded:!0},onlyDMUsers:{type:3,description:"Only show users you've had DMs with",default:!1,restartNeeded:!0}}),tce=null;A_=S({name:"UniversalMention",authors:[F.justjxke],description:"Mention any user, regardless of channel access.",tags:["Chat","Servers","Utility"],settings:w_,settingsAboutComponent:()=>i(Xo.Warning,null,"Using Global Mention can cause performance issues and show an absurd amount of users in the autocomplete."),patches:[{find:",queryMentionResults(",replacement:[{match:/(filter:\i).{0,75}context:\i\}\)(?=,allowSnowflake)/,replace:"$1=>true"},{match:/(?<=\i=)\i\.\i\.getMembers\(.{0,25}\)\.filter\(\i\)/g,replace:"$self.useFilter()",predicate:()=>w_.store.globalMention||w_.store.onlyDMUsers},{match:/(?<=\i=)\i\.recipients\.map\(.{0,100}\?\?null\}\)\)/,replace:"$self.useFilter(true)"}]}],useFilter(e=!1){let t=O9t(),o=w_.store.onlyDMUsers?t.filter(r=>W.getDMFromUserId(r.id)):t;return e?o.map(r=>({userId:r.id,nick:null})):o}})});var oce,k_,Yqe=h(()=>{"use strict";d();j();O();R();oce=M({maxAccounts:{description:"Number of accounts that can be added, or 0 for no limit",default:0,type:1,restartNeeded:!0}}),k_=S({name:"UnlimitedAccounts",description:"Increases the amount of accounts you can add.",tags:["Utility"],authors:[b.thororen],settings:oce,patches:[{find:"pushSyncToken:null}),",replacement:[{match:/(\).length>)5/,replace:"$1$self.getMaxAccounts()"},{match:/(\i.splice\()5/,replace:"$1$self.getMaxAccounts()"}]},{find:"getCurrentUser(),multiAccountUsers",replacement:[{match:/(maxNumAccounts:)5/,replace:"$1$self.getMaxAccounts()"},{match:/(\i.length(?:<|>=))5/g,replace:"$1$self.getMaxAccounts()"}]}],getMaxAccounts(){return oce.store.maxAccounts===0?1/0:oce.store.maxAccounts}})});var F9t,nce,C_,Jqe=h(()=>{"use strict";d();j();Pe();O();R();le();C();F9t=he("BADGE_NOTIFICATION_BACKGROUND","let{count:"),nce=M({showOnMutedChannels:{description:"Show unread count on muted channels",type:3,default:!1},notificationCountLimit:{description:"Show +99 instead of true amount",type:3,default:!1}}),C_=S({name:"UnreadCountBadge",authors:[b.Joona],description:"Shows unread message count badges on channels in the channel list",tags:["Appearance","Customisation","Servers"],settings:nce,patches:[{find:"UNREAD_IMPORTANT:",replacement:[{match:/\.Children\.count.+?:null(?<=,channel:\i.+?)/,replace:"$&,$self.CountBadge({channel: arguments[0].channel})"}]},{find:"M0 15H2c0 1.6569",replacement:[{match:/mentionsCount:\i.{0,50}?null/,replace:"$&,$self.CountBadge({channel: arguments[0].thread})"}]}],CountBadge:H.wrap(({channel:e})=>{let t=ye([ti],()=>ti.getUnreadCount(e.id));return!t||!nce.store.showOnMutedChannels&&(sr.isChannelMuted(e.guild_id,e.id)||_S.isMuted(e.id))?null:i(F9t,{color:"var(--brand-500)",count:t>99&&nce.store.notificationCountLimit?"+99":t})},{noop:!0})})});var Xqe=h(()=>{});function j9t(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(t,"i")}function q9t(e){for(let t of $m.store.patterns){let o=t.pattern.trim();if(o&&j9t(o).test(e))return t}return null}var _9t,Wx,U9t,z9t,$9t,G9t,H9t,$m,T_,Vqe=h(()=>{"use strict";d();Xqe();j();Tt();Pe();We();O();we();R();le();C();_9t="#eb7396",Wx=K("vc-url-hl-"),U9t=he("2.81h8.36a3"),z9t=he("0v-5h5a1"),$9t=e=>parseInt(e.replace("#",""),16),G9t=e=>"#"+e.toString(16).padStart(6,"0"),H9t=H.wrap(()=>{let{patterns:e}=$m.store;return i("section",null,i(oe,null,"URL Patterns"),e.map((t,o)=>i("div",{key:o,className:Wx("pattern-wrapper")},i(Te,{value:t.pattern,onChange:r=>{e[o].pattern=r,$m.store.patterns=e},placeholder:"*.example.com"}),i("div",{className:Wx("color-picker")},i(Pr,{color:$9t(t.color),onChange:r=>{e[o].color=G9t(r),$m.store.patterns=e},showEyeDropper:!1})),i(de,{className:Wx("remove-button"),variant:"secondary",size:"small",onClick:()=>{e.splice(o,1),$m.store.patterns=e}},i(U9t,{className:Wx("icon")})))),i(de,{onClick:()=>$m.store.patterns.push({pattern:"",color:_9t}),className:Wx("add-button"),variant:"secondary",size:"small"},i(z9t,{className:Wx("icon")})," Add New"))},{noop:!0}),$m=M({patterns:{type:6,description:"URL patterns to highlight using glob patterns.",default:[],component:H9t},boldUrls:{type:3,description:"Make highlighted URLs bold.",default:!1},highlightEmbeds:{type:3,description:"Also highlight URLs in embed content.",default:!1}});T_=S({name:"UrlHighlighter",description:"Highlights URLs in messages that match your patterns.",tags:["Appearance","Customisation"],authors:[b.prism],settings:$m,patches:[{find:".MASKED_LINK),",replacement:{match:/,children:\i\?\?\i/,replace:"$&,...$self.getProps(arguments[0])"}}],getProps(e){if(!e.href)return{};if(!$m.store.highlightEmbeds&&e.href!==e.title)return{};let t=q9t(e.href);return t?{className:Wx($m.store.boldUrls?"marked":"highlight"),style:{"--vc-url-hl-color":t.color}}:{}}})});var eWe=h(()=>{});function W9t(e){return new Promise((t,o)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=o,r.readAsDataURL(e)})}function tWe({userId:e,modalProps:t}){let{avatars:o}=y0,r=L.getUser(e),n=at.getUserAvatarURL(r,!0,128)||"",[a,s]=T(o[e]||""),[l,c]=T(o[e]||""),[u,p]=T(!1),m=V.useRef(null);function g(w){w.key==="Enter"&&y()}function x(w){s(w),c(w.trim())}async function v(w){if(!w.type.startsWith("image/"))return;if(w.type==="image/gif"||w.type==="image/webp"){D.show({message:"GIFs/WebP must be added via URL. Upload your GIF/WebP to a image hosting service and paste the link.",type:D.Type.FAILURE,id:D.genId()});return}let I=await W9t(w);s(I),c(I)}async function y(){if(!a.trim()){await A();return}o[e]=a.trim(),await Ct(I_,o),t.onClose()}async function A(){delete o[e],await Ct(I_,o),t.onClose()}let k=[{text:"Save",variant:"primary",onClick:y}];return o[e]&&k.unshift({text:"Delete",variant:"dangerPrimary",onClick:A}),i(be,{...t,size:"sm",title:"Custom Avatar",actions:k},i("div",{onKeyDown:g},i("div",{className:Wu("preview-row")},i("div",{className:Wu("preview-box")},i("span",{className:Wu("preview-label")},"Original"),i("img",{src:n,className:Wu("avatar"),alt:"original"})),i("span",{className:Wu("arrow")},"\u2192"),i("div",{className:Wu("preview-box")},i("span",{className:Wu("preview-label")},"Local"),i("img",{src:l||n,className:`${Wu("avatar")} ${l?Wu("avatar-active"):""}`,alt:"local"}))),i("section",{className:z.bottom8},i(oe,{tag:"h3"},"Enter PNG/GIF URL"),i(Te,{placeholder:"https://example.com/image.png",value:a.startsWith("data:")?"(uploaded file)":a,onChange:x,autoFocus:!0})),i("div",{className:`${Wu("dropzone")} ${u?Wu("dropzone-active"):""}`,onDragOver:w=>{w.preventDefault(),p(!0)},onDragLeave:()=>p(!1),onDrop:w=>{w.preventDefault(),p(!1);let I=w.dataTransfer.files?.[0];I&&v(I)},onClick:()=>m.current?.click()},u?"Drop here!":"\u2B06 Drag an image or click to upload (for GIFs or WebP use a URL instead)",i("input",{ref:m,type:"file",accept:"image/png,image/jpeg",style:{display:"none"},onChange:w=>{let I=w.currentTarget.files?.[0];I&&v(I),w.currentTarget.value=""}}))))}var Wu,oWe=h(()=>{"use strict";d();Io();We();Ja();we();C();rce();Wu=K("vc-userpfp-")});var E_,K9t,Q9t,Z9t,Y9t,I_,y0,D_,P_,rce=h(()=>{"use strict";d();eWe();Io();j();Tt();Lt();H1();ot();Ja();ql();O();we();_e();R();le();C();oWe();E_=K("vc-userpfp-"),K9t="https://ko-fi.com/coolesding",Q9t="userpfp-1129784704267210844",Z9t="https://raw.githubusercontent.com/UserPFP/img",Y9t=vr(['type:"USER_SETTINGS_MODAL_OPEN"']),I_="vencord-custom-avatars",y0={avatars:{}},D_=M({overrideServerAvatars:{type:3,description:"Override server avatars with custom avatars or the default user avatar if no custom avatar is set.",default:!0},preferNitro:{description:"Which avatar to use if both default animated (Nitro) pfp and UserPFP avatars are present",type:4,options:[{label:"UserPFP",value:!1},{label:"Nitro",value:!0,default:!0}]},databaseSource:{description:"URL to load database from",type:0,default:"https://userpfp.github.io/UserPFP/source/data.json",hidden:!0,isValid:(e=>e?!0:(e="https://userpfp.github.io/UserPFP/source/data.json",!1))}}),P_=S({name:"UserPFP",description:"Allows you to use an animated avatar without Nitro",tags:["Appearance","Customisation","Servers"],authors:[F.nexpid,b.thororen,F.soapphia,F.sketchmyname],settings:D_,data:y0,settingsAboutComponent:()=>i(f,null,i(Xo.Info,{className:z.bottom8},"Using the set avatar feature is local only meaning only you see it change."),i(pe,{className:E_("settings")},i(de,{variant:"link",className:E_("settings-button"),onClick:()=>Yi(Q9t)},"Join UserPFP Server"),i(de,{variant:"secondary",className:E_("settings-button"),onClick:()=>VencordNative.native.openExternal(K9t)},"Support UserPFP here ",i(Sd,{className:E_("settings-heart")})))),patches:[{find:"getUserAvatarURL:",replacement:[{match:/(getUserAvatarURL:)(\i),/,replace:"$1$self.getAvatarHook($2),"},{match:/(getGuildMemberAvatarURLSimple:)(\i),/,replace:"$1$self.getAvatarServerHook($2),",predicate:()=>D_.store.overrideServerAvatars}]}],contextMenus:{"user-context":(e,{user:t})=>{t?.id&&e.push(i(P.MenuSeparator,null),i(P.MenuItem,{label:"Set Avatar",id:"set-avatar",icon:Vi,leadingAccessory:{type:"icon",icon:Vi},action:async()=>{await Y9t(),ce(o=>i(tWe,{userId:t.id,modalProps:o}))}}))}},getAvatarHook:e=>(t,o,r)=>{if(D_.store.preferNitro&&t.avatar?.startsWith("a_")||!y0.avatars[t.id])return e(t,o,r);let n=y0.avatars[t.id];if(n.startsWith("data:"))return n;try{let a=new URL(n);return n.startsWith(Z9t)&&(a.searchParams.set("animated",o?"true":"false"),o||(a.pathname=a.pathname.replaceAll(/\.gifv?/g,".png"))),a.toString()}catch{return e(t,o,r)}},getAvatarServerHook:e=>t=>{let{userId:o,avatar:r,size:n,canAnimate:a}=t,{avatars:s}=y0;if(s[o]){let l=s[o];if(l.startsWith("data:"))return l;try{let c=new URL(l);return n&&c.searchParams.set("size",n.toString()),c.toString()}catch{return l}}if(r){let l=L.getUser(o);if(l?.avatar)return at.getUserAvatarURL(l,a,n)}return e(t)},async start(){y0.avatars=await vt(I_)||{},await fetch(D_.store.databaseSource).then(e=>e.ok&&e.json()).then(e=>e?.avatars&&Object.assign(y0.avatars,e.avatars)).catch(()=>null)}})});var nWe=h(()=>{});function J9t(){let[e,t]=T(ac.getOutputVolume());return G(()=>{let o=()=>t(ac.getOutputVolume());Q.subscribe("AUDIO_SET_OUTPUT_VOLUME",o)}),i(f,null,Zs.store.showOutputVolumeHeader&&i(oe,null,"Output volume"),i(cn,{maxValue:200,minValue:0,onValueRender:o=>`${o.toFixed(0)}%`,initialValue:e,asValueChanges:o=>{Q.dispatch({type:"AUDIO_SET_OUTPUT_VOLUME",volume:o})}}))}function X9t(){let[e,t]=T(ac.getInputVolume());return G(()=>{let o=()=>t(ac.getInputVolume());Q.subscribe("AUDIO_SET_INPUT_VOLUME",o)}),i(f,null,Zs.store.showInputVolumeHeader&&i(oe,null,"Input volume"),i(cn,{maxValue:100,minValue:0,initialValue:e,asValueChanges:o=>{Q.dispatch({type:"AUDIO_SET_INPUT_VOLUME",volume:o})}}))}function V9t(){let[e,t]=T(ac.getOutputDeviceId());return G(()=>{let o=()=>t(ac.getOutputDeviceId());Q.subscribe("AUDIO_SET_OUTPUT_DEVICE",o)}),i(f,null,Zs.store.showOutputDeviceHeader&&i(oe,null,"Output device"),i(qt,{options:Object.values(ac.getOutputDevices()).map(o=>({value:o.id,label:Zs.store.showOutputDeviceHeader?o.name:`\u{1F50A} ${o.name}`})),serialize:gc,isSelected:o=>o===e,select:o=>{Q.dispatch({type:"AUDIO_SET_OUTPUT_DEVICE",id:o})}}))}function ekt(){let[e,t]=T(ac.getInputDeviceId());return G(()=>{let o=()=>t(ac.getInputDeviceId());Q.subscribe("AUDIO_SET_INPUT_DEVICE",o)}),i("div",{style:{marginTop:"10px"}},Zs.store.showInputDeviceHeader&&i(oe,null,"Input device"),i(qt,{options:Object.values(ac.getInputDevices()).map(o=>({value:o.id,label:Zs.store.showInputDeviceHeader?o.name:`\u{1F3A4} ${o.name}`})),serialize:gc,isSelected:o=>o===e,select:o=>{Q.dispatch({type:"AUDIO_SET_INPUT_DEVICE",id:o})}}))}function tkt(){let[e,t]=T(ac.getVideoDeviceId());return G(()=>{let o=()=>t(ac.getVideoDeviceId());Q.subscribe("MEDIA_ENGINE_SET_VIDEO_DEVICE",o)}),i("div",{style:{marginTop:"10px"}},Zs.store.showVideoDeviceHeader&&i(oe,null,"Camera"),i(qt,{options:Object.values(ac.getVideoDevices()).map(o=>({value:o.id,label:Zs.store.showVideoDeviceHeader?o.name:`\u{1F4F7} ${o.name}`})),serialize:gc,isSelected:o=>o===e,select:o=>{Q.dispatch({type:"MEDIA_ENGINE_SET_VIDEO_DEVICE",id:o})}}))}function okt(){let[e,t]=T(Zs.store.uncollapseSettingsByDefault);return i("div",{style:{marginTop:"20px"}},i("div",{style:{marginBottom:"10px"}},i(so,{className:"vc-panelsettings-underline-on-hover",style:{color:"var(--text-default)"},onClick:()=>{t(!e)}},e?"\u25BC Hide":"\u25BA Settings")),e&&i(f,null,Zs.store.outputVolume&&i(J9t,null),Zs.store.inputVolume&&i(X9t,null),Zs.store.outputDevice&&i(V9t,null),Zs.store.inputDevice&&i(ekt,null),Zs.store.camera&&i(tkt,null)))}var ac,Zs,M_,rWe=h(()=>{"use strict";d();nWe();j();yt();We();$r();O();Be();R();le();C();ac=Ae("getOutputVolume"),Zs=M({title1:{type:6,component:()=>i(Y,{weight:"bold",style:{fontSize:"1.27rem"}},"Appearance"),description:""},uncollapseSettingsByDefault:{type:3,default:!1,description:"Automatically uncollapse voice settings by default"},title2:{type:6,component:()=>i(Y,{weight:"bold",style:{fontSize:"1.27rem"}},"Settings to show"),description:""},outputVolume:{type:3,default:!0,description:"Show an output volume slider"},inputVolume:{type:3,default:!0,description:"Show an input volume slider"},outputDevice:{type:3,default:!0,description:"Show an output device selector"},inputDevice:{type:3,default:!0,description:"Show an input device selector"},camera:{type:3,default:!1,description:"Show a camera selector"},title3:{type:6,component:()=>i(Y,{weight:"bold",style:{fontSize:"1.27rem"}},"Headers to show"),description:""},showOutputVolumeHeader:{type:3,default:!0,description:"Show header above output volume slider"},showInputVolumeHeader:{type:3,default:!0,description:"Show header above input volume slider"},showOutputDeviceHeader:{type:3,default:!1,description:"Show header above output device selector"},showInputDeviceHeader:{type:3,default:!1,description:"Show header above input device selector"},showVideoDeviceHeader:{type:3,default:!1,description:"Show header above camera selector"}});M_=S({name:"VCPanelSettings",description:"Control voice settings right from the voice panel",tags:["Utility","Voice"],authors:[b.nin0dev],settings:Zs,renderVoiceSettings(){return i(okt,null)},patches:[{find:"}getAccessibilityLabel(){",replacement:{match:/this.renderVoiceStates\(\),\i/,replace:"$&,$self.renderVoiceSettings()"}}]})});var Zi,ice=h(()=>{"use strict";d();j();R();Zi=M({showChatButton:{type:3,default:!0,description:"Whether you want to display the chat button",restartNeeded:!0},showMuteButton:{type:3,default:!0,description:"Whether you want to display the mute button",restartNeeded:!0},showDeafenButton:{type:3,default:!0,description:"Whether you want to display the deafen button",restartNeeded:!0},muteSoundboard:{type:3,default:!0,description:"Toggles their soundboard upon clicking deafen button."},disableVideo:{type:3,default:!0,description:"Toggles their video upon clicking deafen button."},useServer:{type:3,description:"Use server mute/deafen instead of local when you have permission.",default:!1},serverSelf:{type:3,description:"Deafen / Mute yourself on the server when using mute/deafen.",default:!1},showButtonsSelf:{type:4,description:"Whether you want to display buttons for your own user. Same functionality as other button(s) except it'll open DMs panel and mute/deafen for yourself upon clicking button(s).",restartNeeded:!0,options:[{label:"Display",value:"display",default:!0},{label:"Hide",value:"hide"},{label:"Disable",value:"disable"}]},whichNameToShow:{type:4,description:"Choose whether to show nickname or username in tooltip.",options:[{label:"Both",value:"both",default:!0},{label:"Global Name",value:"global"},{label:"Username",value:"username"}]},buttonPosition:{type:4,description:"Choose where to place voice buttons in the voice user row.",options:[{label:"Left",value:"left",default:!0},{label:"Right",value:"right"}]}},{useServer:{disabled(){return!this.store.showMuteButton&&!this.store.showDeafenButton}},serverSelf:{disabled(){return!this.store.useServer&&!this.store.showMuteButton&&!this.store.showDeafenButton}}})});var iWe=h(()=>{});function ace({user:e,tooltip:t,icon:o,onClick:r}){let n=e.id===L.getCurrentUser().id;if(n&&Zi.store.showButtonsSelf==="hide")return null;let a=n&&Zi.store.showButtonsSelf==="disable";return i("div",{className:"voice-user-button-container"},i(ve,{text:t,shouldShow:!a},({onMouseEnter:s,onMouseLeave:l})=>i(ue,{size:ue.Sizes.MIN,color:ue.Colors.TRANSPARENT,look:ue.Looks.FILLED,disabled:a,onClick:c=>{c.preventDefault(),c.stopPropagation(),r()},onMouseEnter:s,onMouseLeave:l},o)))}function sce(e){let t=`@${e.username}`;return Zi.store.whichNameToShow==="global"?e.globalName??t:Zi.store.whichNameToShow==="nickname"?t:Zi.store.whichNameToShow==="both"&&e.globalName?`${e.globalName} / ${t}`:t}function aWe(e){if(!Zi.store.useServer)return{canMute:!1,canDeafen:!1};let t=Et.getVoiceStateForUser(e),o=t?.channelId?W.getChannel(t.channelId):null;if(!o?.guild_id)return{canMute:!1,canDeafen:!1};let r=ht.can(ct.MUTE_MEMBERS,o),n=ht.can(ct.DEAFEN_MEMBERS,o);return{canMute:r,canDeafen:n}}function sWe(e){let t=Et.getVoiceStateForUser(e);return t?{isServerMuted:t.mute??!1,isServerDeafened:t.deaf??!1}:{isServerMuted:!1,isServerDeafened:!1}}function lWe({user:e}){let t=e.id===L.getCurrentUser().id;return i(ace,{user:e,tooltip:t?"Navigate to DMs":`Open DMs with ${sce(e)}`,icon:i(ikt,{size:"sm"}),onClick:()=>{if(t){Yt.transitionTo("/users/@me/");return}Sa.openPrivateChannel({recipientIds:[e.id],navigateToChannel:!0})}})}function cWe({user:e}){let t=e.id===L.getCurrentUser().id,{canMute:o}=aWe(e.id),{isServerMuted:r}=sWe(e.id),n=t&&Zi.store.serverSelf,a=t&&$o.isSelfMute()||$o.isLocalMute(e.id),s=o?r:a,l=s?"var(--status-danger)":"var(--channels-default)";return i(ace,{user:e,tooltip:`${s?o&&(n||!t)?"Unserver Mute":"Unmute":o&&(n||!t)?"Server Mute":"Mute"} ${t?"yourself":`${sce(e)}`}`,icon:t?i(akt,{muted:s,size:"sm",color:l}):i(skt,{muted:s,size:"sm",color:l}),onClick:()=>{if(o){if(!n){_n.toggleSelfMute();return}let p=Et.getVoiceStateForUser(e.id),m=p?.channelId?W.getChannel(p.channelId):null;m?.guild_id&&T3.setServerMute(m.guild_id,e.id,!r)}else t?_n.toggleSelfMute():_n.toggleLocalMute(e.id)}})}function uWe({user:e}){let t=e.id===L.getCurrentUser().id,{canDeafen:o}=aWe(e.id),{isServerDeafened:r}=sWe(e.id),n=t&&Zi.store.serverSelf,a=$o.isLocalMute(e.id),s=LS.isLocalSoundboardMuted(e.id),l=$o.isLocalVideoDisabled(e.id),c=t&&$o.isSelfDeaf()||a&&s&&l,u=o&&(n||!t)?r:c,p=u?"var(--status-danger)":"var(--channels-default)";return i(ace,{user:e,tooltip:`${u?o&&(n||!t)?"Unserver Deafen":"Undeafen":o&&(n||!t)?"Server Deafen":"Deafen"} ${t?"yourself":`${sce(e)}`}`,icon:t?i(nkt,{muted:u,size:"sm",color:p}):i(rkt,{muted:u,size:"sm",color:p}),onClick:()=>{if(o){if(!n){_n.toggleSelfDeaf();return}let x=Et.getVoiceStateForUser(e.id),v=x?.channelId?W.getChannel(x.channelId):null;v?.guild_id&&T3.setServerDeaf(v.guild_id,e.id,!r)}else{if(t){_n.toggleSelfDeaf();return}a?(_n.toggleLocalMute(e.id),Zi.store.muteSoundboard&&s&&_n.toggleLocalSoundboardMute(e.id),Zi.store.disableVideo&&l&&_n.setDisableLocalVideo(e.id,"ENABLED","default")):(_n.toggleLocalMute(e.id),Zi.store.muteSoundboard&&!s&&_n.toggleLocalSoundboardMute(e.id),Zi.store.disableVideo&&!l&&_n.setDisableLocalVideo(e.id,"DISABLED","default"))}}})}var nkt,rkt,ikt,akt,skt,dWe=h(()=>{"use strict";d();iWe();le();C();ice();nkt=he("M22.7 2.7a1","1.4l20-20ZM17"),rkt=he("M21.76.83a5.02","M12.38"),ikt=he('.css,d:"M12 22a10'),akt=he('d:"m2.7 22.7 20-20a1',"1.4ZM10.8"),skt=he("M21.76.83a5.02","M12 2c.33 0")});var N_,pWe=h(()=>{"use strict";d();Lt();O();R();ice();dWe();N_=S({name:"VoiceButtons",description:"Quickly DM, mute, or deafen any user right from the voice-call panel.",tags:["Servers","Utility","Voice"],authors:[F.nicola02nb,F.omaw],settings:Zi,patches:[{find:".VOICE_PANEL}}",replacement:[{match:/\}\),children:\[(?=.{0,50}#{intl::PRIORITY_SPEAKER})/,replace:"$&$self.renderButtons(arguments[0]?.user),"}]}],renderButtons(e){if(!e)return null;let t=Zi.store.buttonPosition==="right"?"voice-user-buttons-right":"voice-user-buttons-left";return i(pe,{flexDirection:"row",className:`voice-user-buttons ${t}`},Zi.store.showChatButton&&i(lWe,{user:e}),Zi.store.showMuteButton&&i(cWe,{user:e}),Zi.store.showDeafenButton&&i(uWe,{user:e}))}})});var lkt,Ya,lce=h(()=>{"use strict";d();j();R();lkt=M({logJoinLeave:{type:3,description:"Log when users join, leave, or move between voice channels.",default:!0},logSoundboard:{type:3,description:"Log when users play soundboard sounds.",default:!0},logMuteDeafen:{type:3,description:"Log when users are server muted or deafened.",default:!0},logVideo:{type:3,description:"Log when users turn their camera on or off.",default:!0},logStream:{type:3,description:"Log when users start or stop screensharing.",default:!0},logActivity:{type:3,description:"Log when users start embedded activities.",default:!0},ignoreBlockedUsers:{type:3,description:"Do not log blocked users.",default:!1},soundboardFileType:{type:4,description:"File format for downloading soundboard sounds.",options:[{label:".ogg",value:".ogg",default:!0},{label:".mp3",value:".mp3"},{label:".wav",value:".wav"}]},soundboardVolume:{type:5,description:"Preview volume for soundboard sounds (0 to disable).",default:.5,markers:[0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]}}),Ya=lkt});function fWe(e){return e?e.id?`https://cdn.discordapp.com/emojis/${e.id}.png?size=32`:mWe.getURL(e.name):mWe.getURL("\u2753")}async function hWe(e){let t=e+Ya.store.soundboardFileType,o=await fetch(`https://cdn.discordapp.com/soundboard-sounds/${e}`).then(r=>r.arrayBuffer());DiscordNative.fileManager.saveWithDialog(new Uint8Array(o),t)}function xWe(e,t){if(!e)return null;let o=t.getTime()-e.getTime();if(o<0)return null;let r=Math.floor(o/6e4),n=Math.floor(r/60),a=r%60;return n>0?`${n}h ${a}m into the call`:a>0?`${a}m into the call`:"start of call"}var In,mWe,gWe,H6=h(()=>{"use strict";d();rl();we();ul();le();lce();In=K("vc-voice-channel-log-"),mWe=Ae("getEmojiColors","getURL");gWe=e=>{ii(`https://cdn.discordapp.com/soundboard-sounds/${e}`,{volume:Ya.store.soundboardVolume*100})}});function bWe(){return yWe}function j6(e){yWe=e}function SWe(e){return e?B_.get(e)??vWe:vWe}function wWe(e){let t=B_.get(e.channelId)??[];B_.set(e.channelId,[...t,e]),$2.forEach(o=>o())}function AWe(e){e&&(B_.set(e,[]),$2.forEach(t=>t()))}function kWe(e){return $2=[...$2,e],()=>{$2=$2.filter(t=>t!==e)}}var B_,$2,yWe,vWe,R_=h(()=>{"use strict";d();B_=new Map,$2=[],yWe=null;vWe=[]});var CWe=h(()=>{});function ckt(){return i("svg",{...Gm},i("g",{fill:"none",fillRule:"evenodd"},i("path",{d:"m18 0h-18v18h18z"}),i("path",{d:"m0 8h14.2l-3.6-3.6 1.4-1.4 6 6-6 6-1.4-1.4 3.6-3.6h-14.2",fill:"currentColor"})))}function ukt(){return i("svg",{...Gm},i("g",{fill:"none",fillRule:"evenodd"},i("path",{d:"m18 0h-18v18h18z"}),i("path",{d:"m3.8 8 3.6-3.6-1.4-1.4-6 6 6 6 1.4-1.4-3.6-3.6h14.2v-2",fill:"currentColor"})))}function dkt(){return i("svg",{...Gm},i("g",{fill:"none",fillRule:"evenodd"},i("path",{d:"m18 0h-18v18h18z"}),i("path",{d:"m0 8h14.2l-3.6-3.6 1.4-1.4 6 6-6 6-1.4-1.4 3.6-3.6h-14.2",fill:"currentColor"})))}function pkt(){return i("svg",{...Gm,viewBox:"0 0 24 24",fill:"none"},i("path",{d:"M12 3v18M8 7v10M4 10v4M16 7v10M20 10v4",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))}function mkt(){return i("svg",{...Gm,viewBox:"0 0 24 24"},i("path",{d:"M12 1a4 4 0 0 0-4 4v7a4 4 0 0 0 8 0V5a4 4 0 0 0-4-4z",fill:"currentColor"}),i("path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",stroke:"currentColor",strokeWidth:"2",fill:"none"}),i("line",{x1:"12",y1:"19",x2:"12",y2:"23",stroke:"currentColor",strokeWidth:"2"}),i("line",{x1:"3",y1:"3",x2:"21",y2:"21",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))}function fkt(){return i("svg",{...Gm,viewBox:"0 0 24 24"},i("path",{d:"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H3v-7zM21 14h-3a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3v-7z",fill:"currentColor"}),i("path",{d:"M3 14v-2a9 9 0 0 1 18 0v2",stroke:"currentColor",strokeWidth:"2",fill:"none"}),i("line",{x1:"3",y1:"3",x2:"21",y2:"21",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}))}function gkt(){return i("svg",{...Gm,viewBox:"0 0 24 24"},i("rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",fill:"currentColor"}),i("path",{d:"M17 9.5l5-3v11l-5-3v-5z",fill:"currentColor"}))}function hkt(){return i("svg",{...Gm,viewBox:"0 0 24 24"},i("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",fill:"currentColor"}),i("path",{d:"M8 21h8M12 17v4",stroke:"currentColor",strokeWidth:"2"}))}function TWe(){return i("svg",{...Gm,viewBox:"0 0 24 24"},i("rect",{x:"2.5",y:"2.5",width:"7",height:"7",rx:"1",transform:"rotate(15 6 6)",fill:"currentColor"}),i("path",{d:"M17 3l2.5 4.5h-5z",fill:"currentColor"}),i("path",{d:"M7 14.2l.9-1.9.7.5 1.2-.8 1 .8.7-.5.9 1.9-.9 1.3.3 1.5-1.2-.6-1.2.6.3-1.5z",fill:"currentColor"}),i("path",{d:"M18.5 14c.2-.7.8-.7 1 0l.4 1.1 1.1.4c.7.2.7.8 0 1l-1.1.4-.4 1.1c-.2.7-.8.7-1 0l-.4-1.1-1.1-.4c-.7-.2-.7-.8 0-1l1.1-.4z",fill:"currentColor"}))}function cce({type:e}){let t=xkt[e];return i("div",{className:X(In("icon"),In(`icon-${vkt[e]}`))},i(t,null))}var Gm,xkt,vkt,IWe=h(()=>{"use strict";d();Be();H6();Gm={xmlns:"http://www.w3.org/2000/svg",height:"18",width:"18"};xkt={join:ckt,leave:ukt,move:dkt,soundboard:pkt,server_mute:mkt,server_deafen:fkt,self_video:gkt,self_stream:hkt,activity:TWe,activity_stop:TWe},vkt={join:"positive",leave:"danger",move:"warning",soundboard:"brand",server_mute:"danger",server_deafen:"danger",self_video:"positive",self_stream:"brand",activity:"brand",activity_stop:"brand"}});function ykt(e){switch(e.type){case"join":return"Joined the channel";case"leave":return"Left the channel";case"move":return e.newChannelId&&e.oldChannelId&&e.channelId===e.oldChannelId?"Moved to another channel":"Moved from another channel";case"soundboard":return"";case"server_mute":return e.enabled?"Server muted":"Server unmuted";case"server_deafen":return e.enabled?"Server deafened":"Server undeafened";case"self_video":return e.enabled?"Turned on camera":"Turned off camera";case"self_stream":return e.enabled?"Started screensharing":"Stopped screensharing";case"activity":return`Started ${e.activityName??"an activity"}`;case"activity_stop":return`Stopped ${e.activityName??"an activity"}`}}function EWe({logEntry:e,channel:t}){let o=L.getUser(e.userId),r=o?.globalName??o?.username??"Unknown",n=xWe(bWe(),e.timestamp),a=ykt(e);return i("li",{className:In("entry")},i("div",{className:In("entry-timestamp")},i(Hr,{className:In("timestamp"),timestamp:new Date(e.timestamp),compact:!0,isInline:!1,cozyAlt:!0}),n&&i("span",{className:In("elapsed")},n)),(e.type==="activity"||e.type==="activity_stop")&&e.applicationId?i("img",{className:In("app-icon"),src:at.getApplicationIconURL({id:e.applicationId,icon:Xs.getApplication(e.applicationId)?.icon}),alt:e.activityName??"Activity"}):i(cce,{type:e.type}),i(ve,{text:r},s=>i("img",{...s,className:In("avatar"),onClick:()=>Ko(e.userId),src:o?o.getAvatarURL(t.getGuildId()):at.getDefaultAvatarURL(e.userId),alt:r})),i("div",{className:In("content")},i("span",{className:In("username"),onClick:()=>Ko(e.userId)},r),e.type==="soundboard"?i("div",{className:In("soundboard-info")},e.emoji&&i("img",{className:In("soundboard-emoji"),src:fWe(e.emoji),alt:e.emoji.name}),i("span",{className:In("soundboard-id")},"Played a soundboard sound"),i("div",{className:In("soundboard-actions")},i(ve,{text:"Play sound"},s=>i(eo,{...s,className:In("soundboard-action"),onClick:()=>gWe(e.soundId)},i("svg",{width:"16",height:"16",viewBox:"0 0 24 24"},i("path",{fill:"currentColor",d:"M8 5v14l11-7z"})))),i(ve,{text:"Save sound"},s=>i(eo,{...s,className:In("soundboard-action"),onClick:()=>hWe(e.soundId)},i("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none"},i("path",{stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3"})))))):(e.type==="activity"||e.type==="activity_stop")&&e.applicationId?i("div",{className:In("soundboard-info")},i("span",{className:In("soundboard-id")},a),i("div",{className:In("soundboard-actions")},i(ve,{text:"View activity"},s=>i(eo,{...s,className:In("soundboard-action"),onClick:()=>{ir(),Yt.transitionTo(`/application-directory/${e.applicationId}`)}},i("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none"},i("path",{stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14L21 3"})))))):i("span",{className:In("description")},a)))}var DWe=h(()=>{"use strict";d();CWe();_e();C();R_();H6();IWe()});function q6(e){return ce(t=>i(bkt,{props:t,channel:e}))}function bkt({channel:e,props:t}){let o=V.useSyncExternalStore(kWe,()=>SWe(e.id));return i(be,{...t,size:"lg",title:`${e.name} logs`,actions:[{text:"Clear logs",variant:"dangerPrimary",onClick:()=>AWe(e.id)}]},i(ei,{fade:!0,className:X(In("scroller"),`group-spacing-${Ul.messageGroupSpacing}`)},o.length>0?o.map((r,n)=>{let a=[];return(n===0||r.timestamp.toDateString()!==o[n-1].timestamp.toDateString())&&a.push(i("div",{key:`sep-${n}`,className:In("date-separator"),role:"separator","aria-label":r.timestamp.toDateString()},i("span",null,r.timestamp.toDateString()))),a.push(i(EWe,{key:`entry-${n}`,logEntry:r,channel:e})),a}):i("div",{className:In("empty")},"No logs to display.")))}var uce=h(()=>{"use strict";d();Be();C();R_();H6();DWe()});function dce({height:e=24,width:t=24}){return i("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:e,viewBox:"0 0 24 24",fill:"none"},i("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),i("path",{d:"M14 2v6h6M8 13h8M8 17h8M8 9h2",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}))}function PWe(){let e=ye([Fe],()=>Fe.getVoiceChannelId());if(!e)return null;let t=W.getChannel(e);return t?i(il,{className:In("toolbar-btn"),onClick:()=>q6(t),tooltip:"Voice Channel Logs",icon:dce}):null}var MWe=h(()=>{"use strict";d();zp();C();H6();uce()});function b0(e){return!!e&&Fe.getVoiceChannelId()===e}function fce(e){return!(Ya.store.ignoreBlockedUsers&&qe.isBlocked(e))}function Ol(e){wWe({...e,timestamp:new Date})}var Skt,G2,Kx,pce,Qx,mce,wkt,Akt,L_,NWe=h(()=>{"use strict";d();O();R();co();le();C();MWe();uce();R_();lce();({fetchApplication:Skt}=Ae("fetchApplication")),G2=new Set,Kx=new Map,pce=new Set,mce=0;wkt=new Set([2,13,1,3]),Akt=(e,{channel:t})=>{wkt.has(t.type)&&e.push(i(P.MenuItem,{id:"vc-view-voice-channel-logs",label:"View Voice Channel Logs",action:()=>q6(t)}))},L_=S({name:"VoiceChannelLog",description:"Logs voice channel activity including joins, leaves, soundboard, mute, camera, screenshare, and more.",tags:["Servers","Utility","Voice"],authors:[b.Sqaaakoi,b.thororen,F.nyx,b.Moxxie,F.Fres,b.amy],dependencies:["AudioPlayerAPI","HeaderBarAPI"],settings:Ya,contextMenus:{"channel-context":Akt},toolboxActions:{"Voice Channel Logs"(){let e=Fe.getVoiceChannelId();if(!e)return;let t=W.getChannel(e);t&&q6(t)}},headerBarButton:{icon:dce,render:PWe},flux:{VOICE_CHANNEL_SELECT({channelId:e,currentVoiceChannelId:t}){let o=e==null&&t!=null,r=e!=null&&t==null,n=t??Qx;if(Qx=e??void 0,o&&n){let a=L.getCurrentUser().id;Ya.store.logJoinLeave&&Ol({type:"leave",userId:a,channelId:n}),j6(null),G2.clear()}else r&&e&&e!==n&&(mce=Date.now(),j6(new Date),Ya.store.logJoinLeave&&Ol({type:"join",userId:L.getCurrentUser().id,channelId:e}))},VOICE_STATE_UPDATES({voiceStates:e}){let t=L.getCurrentUser().id,o=Date.now()-mce<5e3;for(let r of e){let{userId:n}=r,{channelId:a,oldChannelId:s}=r;if(n===t||!fce(n))continue;if(s===a&&!Kx.has(n)){Kx.set(n,{mute:r.mute,deaf:r.deaf,selfVideo:r.selfVideo,selfStream:r.selfStream??!1,channelId:a});continue}let l=Kx.get(n),c=b0(a)||b0(s);s!==a&&(!s&&a?!(o||pce.delete(n))&&Ya.store.logJoinLeave&&b0(a)&&Ol({type:"join",userId:n,channelId:a}):s&&!a?Ya.store.logJoinLeave&&b0(s)&&Ol({type:"leave",userId:n,channelId:s}):s&&a&&Ya.store.logJoinLeave&&(b0(s)&&Ol({type:"move",userId:n,channelId:s,oldChannelId:s,newChannelId:a}),b0(a)&&Ol({type:"move",userId:n,channelId:a,oldChannelId:s,newChannelId:a}))),l&&a&&c&&(Ya.store.logMuteDeafen&&(r.mute!==l.mute&&Ol({type:"server_mute",userId:n,channelId:a,enabled:r.mute}),r.deaf!==l.deaf&&Ol({type:"server_deafen",userId:n,channelId:a,enabled:r.deaf})),Ya.store.logVideo&&r.selfVideo!==l.selfVideo&&Ol({type:"self_video",userId:n,channelId:a,enabled:r.selfVideo}),Ya.store.logStream&&(r.selfStream??!1)!==l.selfStream&&Ol({type:"self_stream",userId:n,channelId:a,enabled:r.selfStream??!1})),Kx.set(n,{mute:r.mute,deaf:r.deaf,selfVideo:r.selfVideo,selfStream:r.selfStream??!1,channelId:a}),a||Kx.delete(n)}},EMBEDDED_ACTIVITY_UPDATE_V2(e){if(!Ya.store.logActivity)return;let t=e.location?.channel_id;if(!t||!b0(t))return;let o=e.applicationId,r=new Set((e.participants??[]).map(c=>c.user_id)),n=[];for(let c of e.participants??[]){if(!fce(c.user_id))continue;let u=`${c.user_id}-${o}`;G2.has(u)||(G2.add(u),n.push(c.user_id))}let a=[];for(let c of G2){if(!c.endsWith(`-${o}`))continue;let u=c.slice(0,-(o.length+1));r.has(u)||(G2.delete(c),a.push(u))}if(!n.length&&!a.length)return;let s=Xs.getApplication(o),l=c=>{for(let u of n)Ol({type:"activity",userId:u,channelId:t,activityName:c,applicationId:o});for(let u of a)Ol({type:"activity_stop",userId:u,channelId:t,activityName:c,applicationId:o})};s?l(s.name):Skt(o).then(c=>l(c?.name??"Unknown activity")).catch(()=>l("Unknown activity"))},VOICE_CHANNEL_EFFECT_SEND(e){Ya.store.logSoundboard&&e.soundId&&b0(e.channelId)&&fce(e.userId)&&Ol({type:"soundboard",userId:e.userId,channelId:e.channelId,soundId:e.soundId,emoji:e.emoji})}},start(){if(Qx=Fe.getVoiceChannelId()??void 0,Qx){mce=Date.now(),j6(new Date),Ya.store.logJoinLeave&&Ol({type:"join",userId:L.getCurrentUser().id,channelId:Qx});let e=Et.getVoiceStatesForChannel(Qx);for(let[t,o]of Object.entries(e))pce.add(t),Kx.set(t,{mute:o.mute,deaf:o.deaf,selfVideo:o.selfVideo,selfStream:o.selfStream??!1,channelId:Qx})}},stop(){Kx.clear(),G2.clear(),pce.clear(),j6(null)}})});async function kkt(e){let t=[];for(let o=0;osetTimeout(a,gce.store.waitSeconds*1e3))}return t}function H2(e,t,o=!1){let r=Et.getVoiceStatesForChannel(e.id),n=L.getCurrentUser().id,a=[];Object.keys(r).forEach((s,l)=>{let c=r[s];(o||c.userId!==n)&&a.push(mt.patch({url:`/guilds/${e.guild_id}/members/${c.userId}`,body:t}))}),kkt(a).catch(s=>{console.error("VoiceChatUtilities failed to run",s)})}function Ckt(e){let t=L.getCurrentUser()?.id,o=Object.values(Et.getVoiceStatesForChannel(e.id)).map(r=>r.userId).filter((r,n,a)=>r&&r!==t&&a.indexOf(r)===n).map(r=>`<@${r}>`);o.length!==0&&tr(`${o.join(" ")} `)}var Tkt,gce,O_,BWe=h(()=>{"use strict";d();j();O();_e();R();C();Tkt=(e,{channel:t})=>{if(!t||t.type!==2&&t.type!==13||Object.keys(Et.getVoiceStatesForChannel(t.id)).length===0)return;let n=Da.getChannels(t.guild_id).VOCAL.map(({channel:a})=>a).filter(({id:a})=>a!==t.id);e.splice(-1,0,i(P.MenuItem,{label:"Voice Tools",key:"voice-tools",id:"voice-tools"},i(P.MenuItem,{key:"voice-tools-mention-all",id:"voice-tools-mention-all",label:"Mention all Users",action:()=>Ckt(t)}),i(P.MenuItem,{key:"voice-tools-disconnect-all",id:"voice-tools-disconnect-all",label:"Disconnect all",action:()=>H2(t,{channel_id:null})}),i(P.MenuItem,{key:"voice-tools-mute-all",id:"voice-tools-mute-all",label:"Mute all",action:()=>H2(t,{mute:!0})}),i(P.MenuItem,{key:"voice-tools-unmute-all",id:"voice-tools-unmute-all",label:"Unmute all",action:()=>H2(t,{mute:!1})}),i(P.MenuItem,{key:"voice-tools-deafen-all",id:"voice-tools-deafen-all",label:"Deafen all",action:()=>H2(t,{deaf:!0})}),i(P.MenuItem,{key:"voice-tools-undeafen-all",id:"voice-tools-undeafen-all",label:"Undeafen all",action:()=>H2(t,{deaf:!1})}),i(P.MenuItem,{label:"Move all",key:"voice-tools-move-all",id:"voice-tools-move-all"},n.map(a=>i(P.MenuItem,{key:a.id,id:a.id,label:a.name,action:()=>H2(t,{channel_id:a.id},!0)})))))},gce=M({waitAfter:{type:5,description:"Amount of API actions to perform before waiting (to avoid rate limits)",default:5,markers:zt(1,20)},waitSeconds:{type:5,description:"Time to wait between each action (in seconds)",default:2,markers:zt(1,10,.5)}}),O_=S({name:"VoiceChatUtilities",description:"This plugin allows you to perform multiple actions on an entire channel (move, mute, disconnect, etc.) (originally by dutake)",tags:["Chat","Servers","Voice"],authors:[b.D3SOX,F.nickwoah],settings:gce,contextMenus:{"channel-context":Tkt}})});function Ekt(){let e=64;return Qc.store.friendDirectMessagesSilent&&(e+=4096),e}function Dkt(e,t,o){if(!e)return null;let r=Ikt({channelId:e,content:t,embeds:[]});return r.flags=Ekt(),r.author=L.getUser(o),(lt.hasPresent(e)?new Promise(a=>a()):fo.fetchMessages({channelId:e})).then(()=>{Q.dispatch({type:"MESSAGE_CREATE",channelId:e,message:r,optimistic:!0,sendMessageOptions:{},isPushNotification:!1})}),r}function Pkt(e){if(!qe.isFriend(e)||Qc.store.ignoredFriends.split(",").join(" ").split(" ").filter(r=>r.length>0).includes(e))return!1;let o=Qc.store.allowedFriends.split(",").join(" ").split(" ").filter(r=>r.length>0);return o.join(" ").length<1?!0:o.includes(e)}var Ikt,Qc,hce,F_,RWe=h(()=>{"use strict";d();j();O();Ta();R();le();C();Ikt=Oe('username:"Clyde"'),Qc=M({friendDirectMessages:{type:3,description:"Recieve notifications in your friends' DMs when they join a voice channel",default:!0},friendDirectMessagesShowMembers:{type:3,description:"Show a list of other members in the voice channel when recieving a DM notification of your friend joining a voice channel",default:!0},friendDirectMessagesShowMemberCount:{type:3,description:"Show the count of other members in the voice channel when recieving a DM notification of your friend joining a voice channel",default:!1},friendDirectMessagesSelf:{type:3,description:"Recieve notifications in your friends' DMs even if you are in the same voice channel as them",default:!1},friendDirectMessagesSilent:{type:3,description:"Join messages in your friends DMs will be silent",default:!1},allowedFriends:{type:0,description:"Comma or space separated list of friends' user IDs you want to recieve join messages from",default:""},ignoredFriends:{type:0,description:"Comma or space separated list of friends' user IDs you do NOT want to recieve join messages from",default:""},ignoreBlockedUsers:{type:3,description:"Do not send messages about blocked users joining/leaving/moving voice channels",default:!0}});F_=S({name:"VoiceJoinMessages",description:"Recieve client-side ephemeral messages when your friends join voice channels",tags:["Servers","Utility","Voice"],authors:[b.Sqaaakoi,b.thororen],settings:Qc,flux:{VOICE_STATE_UPDATES({voiceStates:e}){let t=L.getCurrentUser().id;for(let o of e){let{userId:r,channelId:n}=o,{oldChannelId:a}=o;if(r===t&&n!==hce&&(a=hce,hce=n),!(Qc.store.ignoreBlockedUsers&&qe.isBlocked(r))&&a!==n&&Qc.store.friendDirectMessages&&!a&&n&&r!==t&&Pkt(r)){let s=W.getChannel(n);if(!s||!ht.can(ct.VIEW_CHANNEL,s))continue;let l=Fe.getVoiceChannelId()===n,c="";if(Qc.store.friendDirectMessagesShowMembers||Qc.store.friendDirectMessagesShowMemberCount){let m=Object.values(e).filter(x=>x.channelId===n).map(x=>L.getUser(x.userId)).filter(x=>x!=null).filter(x=>x.id!==r),g=m.length;g<=0?c+=", nobody else is in the voice channel":Qc.store.friendDirectMessagesShowMemberCount&&(c+=` with ${g} other member${g===1?"s":""}`),Qc.store.friendDirectMessagesShowMembers&&g>0&&(c+=Qc.store.friendDirectMessagesShowMemberCount?", ":" with ",c+=JU(m.map(x=>`<@${x.id}>`)))}let u=W.getDMFromUserId(r);u&&(!l||Qc.store.friendDirectMessagesSelf)&&Dkt(u,`Joined voice channel <#${n}>${c}`,r)}}}}})});var LWe=h(()=>{});async function xce(e){let t=await e.arrayBuffer(),r=await Mkt().decodeAudioData(t),n=r.getChannelData(0);if(r.numberOfChannels>1){for(let a=1;a{"use strict";d();on();we();C();FWe={en:"english",zh:"chinese",de:"german",es:"spanish/castilian",ru:"russian",ko:"korean",fr:"french",ja:"japanese",pt:"portuguese",tr:"turkish",pl:"polish",ca:"catalan/valencian",nl:"dutch/flemish",ar:"arabic",sv:"swedish",it:"italian",id:"indonesian",hi:"hindi",fi:"finnish",vi:"vietnamese",he:"hebrew",uk:"ukrainian",el:"greek",ms:"malay",cs:"czech",ro:"romanian/moldavian/moldovan",da:"danish",hu:"hungarian",ta:"tamil",no:"norwegian",th:"thai",ur:"urdu",hr:"croatian",bg:"bulgarian",lt:"lithuanian",la:"latin",mi:"maori",ml:"malayalam",cy:"welsh",sk:"slovak",te:"telugu",fa:"persian",lv:"latvian",bn:"bengali",sr:"serbian",az:"azerbaijani",sl:"slovenian",kn:"kannada",et:"estonian",mk:"macedonian",br:"breton",eu:"basque",is:"icelandic",hy:"armenian",ne:"nepali",mn:"mongolian",bs:"bosnian",kk:"kazakh",sq:"albanian",sw:"swahili",gl:"galician",mr:"marathi",pa:"punjabi/panjabi",si:"sinhala/sinhalese",km:"khmer",sn:"shona",yo:"yoruba",so:"somali",af:"afrikaans",oc:"occitan",ka:"georgian",be:"belarusian",tg:"tajik",sd:"sindhi",gu:"gujarati",am:"amharic",yi:"yiddish",lo:"lao",uz:"uzbek",fo:"faroese",ht:"haitian creole/haitian",ps:"pashto/pushto",tk:"turkmen",nn:"nynorsk",mt:"maltese",sa:"sanskrit",lb:"luxembourgish/letzeburgesch",my:"myanmar/burmese",bo:"tibetan",tl:"tagalog",mg:"malagasy",as:"assamese",tt:"tatar",haw:"hawaiian",ln:"lingala",ha:"hausa",ba:"bashkir",jw:"javanese",su:"sundanese"},pi=K("vc-transcription-"),OWe=window.AudioContext||window.webkitAudioContext,Mkt=()=>{if(!OWe)throw new Error("AudioContext is not supported in this environment");return new OWe({sampleRate:16e3})};Nkt=` import { pipeline, env } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2'; env.allowLocalModels = false; env.useBrowserCache = false; const pendingRequests = new Map(); self.addEventListener('message', (event) => { const { type, id, response, error, headers } = event.data; if (type === 'fetch_response') { const resolver = pendingRequests.get(id); if (resolver) { pendingRequests.delete(id); if (error) { resolver.reject(new Error(error)); } else { const res = new Response(response, { headers: headers || { 'Content-Type': 'application/octet-stream' } }); resolver.resolve(res); } } } else if (type === 'run') { runTranscription(event.data); } }); const originalFetch = globalThis.fetch; globalThis.fetch = async (input, init) => { const url = input.toString(); if (url.includes('huggingface.co') || url.includes('cdn.jsdelivr.net')) { const id = Math.random().toString(36).substring(7); return new Promise((resolve, reject) => { pendingRequests.set(id, { resolve, reject }); self.postMessage({ type: 'fetch_request', url, id }); }); } return originalFetch(input, init); }; let transcriber = null; async function runTranscription({ audio, model, quantized, language, task }) { try { if (!transcriber) { self.postMessage({ type: 'status', status: 'loading' }); transcriber = await pipeline('automatic-speech-recognition', model, { quantized: quantized, progress_callback: (data) => { self.postMessage({ type: 'progress', data }); } }); } self.postMessage({ type: 'status', status: 'transcribing' }); const time_precision = transcriber.processor.feature_extractor.config.chunk_length / transcriber.model.config.max_source_positions; let chunks_to_process = [ { tokens: [], finalised: false, }, ]; function chunk_callback(chunk) { let last = chunks_to_process[chunks_to_process.length - 1]; Object.assign(last, chunk); last.finalised = true; if (!chunk.is_last) { chunks_to_process.push({ tokens: [], finalised: false, }); } } function callback_function(item) { let last = chunks_to_process[chunks_to_process.length - 1]; last.tokens = [...item[0].output_token_ids]; let data = transcriber.tokenizer._decode_asr(chunks_to_process, { time_precision: time_precision, return_timestamps: true, force_full_sequences: false, }); self.postMessage({ type: 'partial', output: { text: data[0], chunks: data[1].chunks } }); } const output = await transcriber(audio, { top_k: 0, do_sample: false, chunk_length_s: 30, stride_length_s: 5, return_timestamps: true, callback_function, chunk_callback, language, task: task === "translate" ? "translate" : undefined }); self.postMessage({ type: 'complete', output }); } catch (e) { self.postMessage({ type: 'error', error: e.toString() }); } } `,W6=class{worker;onStatus;onComplete;onError;onPartial;constructor(t,o,r,n){this.onStatus=t,this.onComplete=o,this.onError=r,this.onPartial=n;let a=new Blob([Nkt],{type:"text/javascript"});this.worker=new Worker(URL.createObjectURL(a),{type:"module"}),this.worker.onmessage=this.handleMessage.bind(this)}getMimeType(t){return t.endsWith(".wasm")?"application/wasm":t.endsWith(".json")?"application/json":(t.endsWith(".onnx"),"application/octet-stream")}async handleMessage(t){let{type:o,id:r,url:n,status:a,output:s,error:l}=t.data;switch(o){case"fetch_request":try{let c=await Le.get(`VoiceMessageTranscriber_${n}`);if(c&&ia.isArrayBuffer(c))this.worker.postMessage({type:"fetch_response",id:r,response:c,headers:{"Content-Length":c.byteLength.toString(),"Content-Type":this.getMimeType(n)}});else{let u=await fetch(n);if(!u.ok)throw new Error("Failed to fetch "+n);let p=await u.arrayBuffer();await Le.set(`VoiceMessageTranscriber_${n}`,p),this.worker.postMessage({type:"fetch_response",id:r,response:p,headers:{"Content-Length":u.headers.get("Content-Length")||p.byteLength.toString(),"Content-Type":this.getMimeType(n)}})}}catch(c){this.worker.postMessage({type:"fetch_response",id:r,error:String(c)})}break;case"status":this.onStatus(a);break;case"complete":this.onComplete(s);break;case"partial":this.onPartial(s);break;case"error":this.onError(l);break}}run(t,o,r=!0,n,a){this.worker.postMessage({type:"run",audio:t,model:o,quantized:r,language:n,task:a})}terminate(){this.worker.terminate()}}});function j2(e){let t=Math.floor(e/60),o=Math.floor(e%60);return`${t.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}function Rkt({size:e=14}){return i("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},i("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),i("line",{x1:"6",y1:"6",x2:"18",y2:"18"}))}function Lkt({size:e=14}){return i("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"},i("polyline",{points:"20 6 9 17 4 12"}))}function UWe(e){if(!e)return null;let t=__.use(["quantized"])?.quantized??!0,o=Okt[e.value]?.[t?"quantized":"full"];return i("div",{className:pi("model-option")},i("span",null,e.label),o&&i("span",{className:pi("model-size")},o))}function Fkt(e){let{modalProps:t,src:o}=e,[r,n]=T("auto"),[a,s]=T("transcribe"),l=[{label:"Auto Detect",value:"auto"},...Object.entries(FWe).map(([u,p])=>({label:p.charAt(0).toUpperCase()+p.slice(1),value:u}))];return i(be,{...t,size:"md",title:"Transcription Options",actions:[{text:"Start",variant:"primary",onClick:()=>{t.onClose(),ce(u=>i(_kt,{modalProps:u,src:o,options:{language:r,task:a}}))}}]},i(pe,{flexDirection:"column",gap:20,style:{padding:"16px"}},i("div",null,i(Y,{size:"sm",weight:"semibold",style:{marginBottom:"8px"}},"Audio Language"),i(Fn,{options:l,value:l.find(u=>u.value===r)?.value,onChange:n})),i("div",null,i(Y,{size:"sm",weight:"semibold",style:{marginBottom:"8px"}},"Action"),i($We,{options:[{name:"Transcribe",value:"transcribe"},{name:"Translate to English",value:"translate"}],value:a,onChange:u=>s(u)}))))}function _kt(e){let{modalProps:t,src:o,options:r}=e,[n,a]=T("initializing"),[s,l]=T(null),[c,u]=T(!1),[p,m]=T(null),[g,x]=T(!1),[v,y]=T(0),A=Se(null);G(()=>{let I=!0;return(async()=>{try{a("downloading_audio"),m(null);let E;{let q=await zWe.fetchAudio(o);E=new Blob([new Uint8Array(q)])}if(!I)return;a("processing_audio");let N=await xce(E);if(!I)return;A.current?.terminate(),A.current=new W6(q=>{I&&a(q)},q=>{I&&(l(q),a("complete"))},q=>{I&&(m(String(q)),a("error"))},q=>{I&&l(q)});let{quantized:B,selectedModel:_}=__.store;A.current.run(N,_,B,r.language==="auto"?void 0:r.language,r.task)}catch(E){I&&(m(String(E)),a("error"))}})(),()=>{I=!1,A.current?.terminate()}},[v]);let k=()=>{if(!s)return;let I=c?s.chunks.map(E=>`[${j2(E.timestamp[0])} - ${j2(E.timestamp[1])}] ${E.text}`).join(` `):s.text;po(I),x(!0),setTimeout(()=>x(!1),2e3)},w=s?c?s.chunks.map(I=>`[${j2(I.timestamp[0])} - ${j2(I.timestamp[1])}] ${I.text}`).join(` `):s.text:"";return i(be,{...t,size:"md",title:r.task==="translate"?"Voice Message Translation":"Voice Message Transcription",actions:[...p?[{text:"Retry",variant:"primary",onClick:()=>y(I=>I+1)}]:[],...s?[{text:c?"Hide Timestamps":"Show Timestamps",variant:"secondary",onClick:()=>u(!c)},{text:g?"Copied!":"Copy Text",variant:"secondary",onClick:k}]:[]]},i("div",{className:pi("content")},p?i(pe,{flexDirection:"column",alignItems:"center",gap:12,style:{padding:"32px 16px"}},i(oe,{tag:"h3",style:{color:"var(--red-360)"}},"Transcription Failed"),i(Y,{size:"sm",color:"text-muted",style:{textAlign:"center"}},p)):w?i("div",{className:pi("result")},i(Y,{size:"md"},w)):i(pe,{flexDirection:"column",alignItems:"center",justifyContent:"center",gap:16,style:{height:"200px"}},i(oe,{tag:"h3"},n==="downloading_audio"&&"Downloading Audio...",n==="processing_audio"&&"Processing Audio...",n==="loading"&&"Loading Model...",n==="transcribing"&&"Transcribing..."))))}function Ukt({src:e}){let{embed:t,maintainHorizontal:o,quantized:r,selectedModel:n}=__.use(["embed","maintainHorizontal","quantized","selectedModel"]),[a,s]=T(!1),[l,c]=T("idle"),[u,p]=T(null),[m,g]=T(!1),[x,v]=T(null),[y,A]=T(!1),k=Se(null),w=Se(0),I=Se(null);G(()=>{let $=I.current?.parentElement;if($)return $.classList.add("vc-transcription-container"),()=>{$.classList.remove("vc-transcription-container","vc-transcription-has-embed","vc-transcription-maintain-horizontal")}},[]),G(()=>{let $=I.current?.parentElement;$&&($.classList.toggle("vc-transcription-has-embed",!!(t&&a)),$.classList.toggle("vc-transcription-maintain-horizontal",!!(t&&a&&o)))},[t,a,o]),G(()=>()=>{w.current++,k.current?.terminate(),k.current=null},[]);let E=async()=>{let $=++w.current;k.current?.terminate(),k.current=null,s(!0),v(null),c("downloading_audio");try{let re;{let ee=await zWe.fetchAudio(e);re=new Blob([new Uint8Array(ee)])}if($!==w.current)return;c("processing_audio");let Z=await xce(re);if($!==w.current)return;k.current=new W6(ee=>{$===w.current&&c(ee)},ee=>{$===w.current&&(p(ee),c("complete"))},ee=>{$===w.current&&(v(String(ee)),c("error"))},ee=>{$===w.current&&p(ee)}),k.current.run(Z,n,r,void 0,"transcribe")}catch(re){$===w.current&&(v(String(re)),c("error"))}},N=$=>{$.stopPropagation(),t?a?s(!1):l==="idle"||l==="error"?E():s(!0):ce(re=>i(Fkt,{modalProps:re,src:e}))},B=u?m?u.chunks.map($=>`[${j2($.timestamp[0])} - ${j2($.timestamp[1])}] ${$.text}`).join(` `):u.text:"",_=$=>{$.stopPropagation(),B&&(po(B),A(!0),setTimeout(()=>A(!1),2e3))},q=l==="downloading_audio"||l==="processing_audio"||l==="loading"||l==="transcribing";return i(f,null,i("button",{ref:I,className:pi("button"),style:{backgroundColor:"transparent"},onClick:N,title:"Transcribe Voice Message"},i(Bkt,{colorClass:pi("icon")})),t&&a&&i("div",{className:X(pi("embed"),o&&pi("embed-maintain-horizontal")),onClick:$=>$.stopPropagation()},i("div",{className:pi("embed-header")},i("div",{className:pi("embed-title")},i("span",{className:X(pi("status-dot"),q&&pi("status-dot-active"),l==="error"&&pi("status-dot-error"))}),i("span",null,l==="downloading_audio"&&"Downloading Audio...",l==="processing_audio"&&"Processing Audio...",l==="loading"&&"Loading Model...",l==="transcribing"&&"Transcribing...",l==="complete"&&"Transcription",l==="error"&&"Transcription Error")),i("div",{className:pi("embed-actions")},u&&i(f,null,i(ve,{text:m?"Hide Timestamps":"Show Timestamps"},$=>i("button",{...$,className:X(pi("action-btn"),m&&pi("action-btn-active")),onClick:re=>{re.stopPropagation(),g(!m)}},i(sS,{width:14,height:14}))),i(ve,{text:y?"Copied!":"Copy Text"},$=>i("button",{...$,className:pi("action-btn"),onClick:_},y?i(Lkt,{size:14}):i(wa,{width:14,height:14})))),i(ve,{text:"Close"},$=>i("button",{...$,className:pi("action-btn"),onClick:re=>{re.stopPropagation(),s(!1)}},i(Rkt,{size:14}))))),i("div",{className:pi("embed-body")},x?i(pe,{flexDirection:"column",gap:8},i(nr,{size:"xs",color:"text-danger"},x),i(de,{size:"small",variant:"primary",onClick:E,style:{alignSelf:"flex-start"}},"Retry")):B?i(pz,{className:pi("embed-text")},i(nr,{size:"sm"},B)):i(nr,{size:"xs",color:"text-muted"},q?"Transcribing in progress...":"Initializing..."))))}var zWe,Bkt,$We,Okt,__,zkt,U_,GWe=h(()=>{"use strict";d();LWe();on();j();yt();Tt();Pe();Lt();We();ot();Jc();mi();O();Be();R();le();C();_We();zWe=VencordNative.pluginHelpers.VoiceMessageTranscriber,Bkt=he("1-1-1ZM2 8a1");Okt={"Xenova/whisper-tiny":{quantized:"~40 MB",full:"~150 MB"},"Xenova/whisper-base":{quantized:"~77 MB",full:"~290 MB"},"Xenova/whisper-small":{quantized:"~250 MB",full:"~960 MB"},"Xenova/whisper-medium":{quantized:"~765 MB",full:"~3.1 GB"}};__=M({embed:{type:3,description:"Display transcription directly in the voice message attachment instead of a modal.",default:!1,restartNeeded:!1},maintainHorizontal:{type:3,description:"Maintain horizontal size for the embedded transcription box and expand vertically.",default:!1,restartNeeded:!1},selectedModel:{type:4,description:"Model size.",options:[{label:"Tiny (Fastest, lowest accuracy)",value:"Xenova/whisper-tiny"},{label:"Base (Recommended)",value:"Xenova/whisper-base",default:!0},{label:"Small",value:"Xenova/whisper-small"},{label:"Medium (Slowest, best accuracy)",value:"Xenova/whisper-medium"}],componentProps:{renderOptionLabel:e=>UWe(e),renderOptionValue:e=>UWe(e?.[0])},restartNeeded:!1},quantized:{type:3,description:"Use quantized models (smaller size, slight quality loss).",default:!0,restartNeeded:!1},deleteModalFiles:{type:6,description:"Delete cached files from storage.",component:()=>{let[e,t]=T(0),[o,r]=T([]);return G(()=>{let n=!1;return Le.entries().then(a=>{if(n)return;let s=0,l=[];for(let[c,u]of a)typeof c=="string"&&(c.startsWith("whisper-")||c.startsWith("onnx-"))&&(s+=u.length,l.push(c));t(s),r(l)}),()=>{n=!0}},[]),i(de,{disabled:e===0,variant:"dangerPrimary",onClick:()=>{Le.delMany(o).then(()=>{t(0),r([])})}},"Delete all cached files (",(e/1024/1024).toFixed(2)," MB)")}}});zkt=H.wrap(Ukt,{noop:!0}),U_=S({name:"VoiceMessageTranscriber",authors:[b.TheSun,F.tt],description:"On-device transcriptions for voice messages powered by Whisper v3",tags:["Chat","Media","Utility","Voice"],patches:[{find:".VOICE_MESSAGE)),",replacement:{match:/"source",{src:(\i).{0,700}duration:\i}\),/,replace:"$&$self.button($1),"}},{find:'"data-mana-component":"BaseRadioGroup"',replacement:{match:/(?=function (\i)\(\i\)\{.{0,400}"data-mana-component":"BaseRadioGroup")/,replace:"$self.ManaBaseRadioGroup=$1;"}}],set ManaBaseRadioGroup(e){$We=e},settings:__,button(e){return i(zkt,{src:e})}})});var vce,Hm,yce,K6,z_,HWe=h(()=>{"use strict";d();Io();j();O();He();R();C();vce="VCLastVoiceChannel",Hm="VCLastVoiceChannelSession",yce=new ie("VoiceRejoin"),K6=M({rejoinDelay:{type:5,description:"Set Delay before rejoining voice channel.",markers:zt(1,10,1),default:2,stickToMarkers:!0},rejoinTimeout:{type:5,description:"Don't attempt to rejoin after this many seconds have passed since disconnecting.",markers:zt(5,120,5),default:30,stickToMarkers:!0},preventReconnectIfCallEnded:{type:4,description:"Do not reconnect if the call has ended or the voice channel is empty or does not exist.",options:[{label:"None",value:"none",default:!1},{label:"DMs only",value:"dms",default:!1},{label:"Servers only",value:"servers",default:!1},{label:"DMs and Servers",value:"both",default:!0}]},applyOnlyToDms:{type:3,description:"Only apply to DMs.",default:!1}}),z_=S({name:"VoiceRejoin",description:"Rejoins DM/Server call automatically when restarting Discord.",tags:["Servers","Utility","Voice"],authors:[F.omaw,F.keircn],settings:K6,flux:{VOICE_STATE_UPDATES({voiceStates:e}){let t=L.getCurrentUser();if(!t)return;let o=t.id,r=e.find(n=>n.userId===o);if(r)if(r.channelId){let n={guildId:r.guildId??null,channelId:r.channelId,timestamp:Date.now()};Promise.all([Ct(vce,n),Ct(Hm,!0)]).catch(a=>yce.error("Failed to persist last voice channel",a))}else Ct(Hm,!1).catch(n=>yce.error("Failed to persist voice session state",n))},async CONNECTION_OPEN(){if(await vt(Hm)===!1){await aa(vce);return}setTimeout(async()=>{try{let t=await vt(vce);if(!t?.channelId)return;let o=W.getChannel(t.channelId);for(let u=0;u<20&&!o;u++)await new Promise(p=>setTimeout(p,250)),o=W.getChannel(t.channelId);if(!o){await Ct(Hm,!1);return}let r=L.getCurrentUser();if(!r)return;let n=o.isDM()||o.isGroupDM()||o.isMultiUserDM(),a=r.id,s=Et.getVoiceStateForUser(a),l=K6.store.preventReconnectIfCallEnded,c=K6.store.rejoinTimeout*1e3;if(t.timestamp&&Date.now()-t.timestamp>c){await Ct(Hm,!1);return}if(K6.store.applyOnlyToDms&&!n){await Ct(Hm,!1);return}if(l!=="none"&&(l==="both"||l==="dms"&&n||l==="servers"&&!n)){let p=Et.getVoiceStatesForChannel(t.channelId);if(Object.values(p).filter(g=>g.userId!==a).length===0){await Ct(Hm,!1);return}}if(s?.channelId){await Ct(Hm,!1);return}Q.dispatch({type:"VOICE_CHANNEL_SELECT",guildId:t.guildId,channelId:t.channelId}),await Ct(Hm,!0)}catch(t){yce.error("Failed to run voice rejoin",t)}},K6.store.rejoinDelay*1e3)}}})});var jWe=h(()=>{});async function jkt(){let e=await vt(WWe);if(e)for(let[t,o]of Object.entries(e))Zx.set(t,o)}async function wce(){await Ct(WWe,Object.fromEntries(Zx))}function KWe(){let e=Date.now();for(let[t,o]of wp){let r=Math.floor((e-o)/1e3);Zx.set(t,(Zx.get(t)??0)+r),wp.set(t,e)}}function bce(e,t){jm=e;let o=Et.getVoiceStatesForChannel(e)??{},r=Date.now();for(let n of Object.values(o))n.userId!==t&&wp.set(n.userId,r);$_=setInterval(()=>{KWe(),wce()},Hkt)}function Sce(){$_&&(clearInterval($_),$_=null),jm&&(KWe(),wp.clear(),jm=null,wce())}function qkt(e){let t=Zx.get(e)??0,o=wp.get(e);return o?t+Math.floor((Date.now()-o)/1e3):t}function Wkt(e){let t=Math.floor(e/3600),o=Math.floor(e%3600/60),r=e%60;return t>0?`${t}h ${o}m ${r}s`:o>0?`${o}m ${r}s`:`${r}s`}var $kt,Gkt,qWe,WWe,Hkt,wp,Zx,jm,$_,Kkt,G_,QWe=h(()=>{"use strict";d();jWe();Io();yt();Pe();O();Kt();R();le();C();$kt=Ie("memberSinceWrapper"),Gkt=Ie("memberSince"),qWe=he("headingVariant:",'"section"',"headingIcon:"),WWe="VoiceStats_totals",Hkt=3e4,wp=new Map,Zx=new Map,jm=null,$_=null;Kkt=H.wrap(({userId:e,isSideBar:t})=>{let o=wp.has(e);TS({interval:o?1e3:0});let r=qkt(e);if(r<=0)return null;let n=Wkt(r);return t?i(qWe,{heading:"Voice Time",headingVariant:"text-xs/semibold",headingColor:"text-strong"},i(Y,{size:"sm"},n)):i(qWe,{heading:"Voice Time",headingVariant:"text-xs/medium",headingColor:"text-default",className:"vc-voicestats-profile-section"},i("div",{className:$kt.memberSinceWrapper},i("div",{className:Gkt.memberSince},i("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"var(--interactive-icon-default)"},i("path",{d:"M12 1a4 4 0 0 0-4 4v6a4 4 0 0 0 8 0V5a4 4 0 0 0-4-4Z"}),i("path",{d:"M19 11a1 1 0 0 0-2 0 5 5 0 0 1-10 0 1 1 0 1 0-2 0 7 7 0 0 0 6 6.92V21a1 1 0 1 0 2 0v-3.08A7 7 0 0 0 19 11Z"})),i(Y,{size:"sm"},n))))},{noop:!0}),G_=S({name:"VoiceStats",description:"Shows how long you've spent in voice with each user in their profile",tags:["Voice","Friends"],authors:[F.Moowi],dependencies:["ProfileSectionsAPI"],renderProfileSection:{render:Kkt,priority:0},flux:{VOICE_STATE_UPDATES({voiceStates:e}){let t=L.getCurrentUser()?.id;if(t)for(let o of e){let{userId:r,channelId:n,oldChannelId:a}=o;if(r===t){!a&&n?bce(n,t):a&&!n?Sce():n&&n!==a&&(Sce(),bce(n,t));continue}let s=jm!==null&&n===jm&&a!==jm,l=jm!==null&&a===jm&&n!==jm;if(s)wp.set(r,Date.now());else if(l&&wp.has(r)){let c=wp.get(r),u=Math.floor((Date.now()-c)/1e3);Zx.set(r,(Zx.get(r)??0)+u),wp.delete(r),wce()}}}},async start(){await jkt();let e=L.getCurrentUser()?.id;if(!e)return;let t=Fe.getVoiceChannelId?.();t&&bce(t,e)},stop(){Sce()}})});function Ykt(e){return!e||e.type!==2||!e.userLimit||ht.can(ct.MOVE_MEMBERS,e)||Object.keys(Et.getVoiceStatesForChannel(e.id)).length{au(),Ku=e.id}),!0)}var Ku,Qkt,Ace,Zkt,H_,ZWe=h(()=>{"use strict";d();rl();Af();j();O();R();co();C();Ku=null,Qkt="https://raw.githubusercontent.com/Equicord/Equibored/main/sounds/waitForSlot/notification.mp3",Ace=M({autoJoin:{type:3,description:"Join the channel immediately instead of showing a notice.",default:!1},notificationSound:{type:3,description:"Play a sound when a slot becomes available.",default:!0}}),Zkt=(e,{channel:t})=>{if(t?.type!==2||!t.userLimit||ht.can(ct.MOVE_MEMBERS,t)||Object.keys(Et.getVoiceStatesForChannel(t.id)).length{Ku=o?null:t.id}}))};H_=S({name:"WaitForSlot",description:"Automatically join a full voice channel when a slot opens.",tags:["Servers","Utility","Voice"],authors:[F.omaw,b.prism],settings:Ace,patches:[{find:"VoiceChannel, transitionTo: Channel does not have a guildId",replacement:{match:/(?=\|\|\i\.\i\.selectVoiceChannel\((\i)\.id\))/,replace:"||$self.promptVoiceChannel($1)"}}],contextMenus:{"channel-context":Zkt},promptVoiceChannel:Ykt,flux:{VOICE_STATE_UPDATES(){if(!Ku)return;let e=W.getChannel(Ku);if(!e?.userLimit){Ku=null;return}if(Object.keys(Et.getVoiceStatesForChannel(Ku)).length{au(),S1.selectVoiceChannel(t)})}}},stop(){Ku=null}})});var Q6,YWe=h(()=>{"use strict";d();Q6=class{buffers;constructor(){this.buffers=[]}addTextFile(t,o,r={}){this.addFile(t,new TextEncoder().encode(o),r)}addFile(t,o,{mtime:r=0}={}){this.buffers.push(this.header([[100,t.toString()],[8,420],[8,512],[8,512],[12,o.length],[12,r],[8,null],[1,"0"],[100,""],[255,""]])),this.buffers.push(o.buffer),this.buffers.push(new ArrayBuffer(-o.length&511))}header(t){let o=new ArrayBuffer(512),r=new Uint8Array(o),n=0,a=null,s=0;for(let[l,c]of t){let u;if(c===null)a=s,u=" ".repeat(l);else if(typeof c=="string")u=c;else if(typeof c=="number")u=c.toString(8).padStart(l-1,"0");else throw new Error("invalid value",c);if(u.length>l)throw new Error(`${u} is longer than ${l} characters`);Array.from(u).forEach((p,m)=>n+=r[s+m]=p.charCodeAt(0)),s+=l}return Array.from("\0".repeat(8)).forEach((l,c)=>r[a+c]=l.charCodeAt(0)),Array.from(n.toString(8).padStart(7,"0")).forEach((l,c)=>r[a+c]=l.charCodeAt(0)),o}save(t){let o=document.createElement("a");o.href=URL.createObjectURL(new Blob(this.buffers,{type:"application/x-tar"})),o.download=t,o.style.display="none",document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(o.href)}}});async function JWe(e,t){let o=Object.getOwnPropertyDescriptor(Function.prototype,"m");Object.defineProperty(Function.prototype,"m",{get(){throw"get require.m"},set(){throw"set require.m"},enumerable:!0,configurable:!0});try{return await t()}finally{Object.defineProperty(Function.prototype,"m",o)}}function kce(e){let{o:t}=e;try{e.o=o=>{throw o},e.f.j()}catch(o){return o}finally{e.o=t}throw new Error("getLoadedChunks failed")}function Cce(e){let t=Symbol("getChunkPaths");try{Object.defineProperty(Object.prototype,t,{get(){throw this},set(){},configurable:!0}),e.u(t)}catch(o){return o}finally{delete Object.prototype[t]}throw new Error("getChunkPaths failed")}async function XWe(e,t=()=>{}){let o=Cce(e),r=kce(e),n=Object.keys(o).filter(a=>r[a]!==0);await Promise.all(n.map(async a=>{try{await e.e(a)}catch{}t(a)}))}var VWe=h(()=>{"use strict";d()});async function Xkt(e){let t=new Q6,{buildNumber:o,builtAt:r}=eKe(),n=r.getTime()/1e3|0,a=e?`equicord-${o}`:`discord-${o}`;for(let[s,l]of Object.entries(vo.m)){let c=Function.toString.call(l),u=l.toString();e&&c!==u&&t.addTextFile(`${a}/${s}.v.js`,`webpack[${JSON.stringify(s)}] = ${c} `,{mtime:n}),t.addTextFile(`${a}/${s}.js`,`webpack[${JSON.stringify(s)}] = ${u} `,{mtime:n})}t.save(`${a}.tar`)}function Vkt({modalProps:e}){let t=vo,{buildNumber:o,builtAt:r}=eKe(),[,n]=T({}),[a,s]=T(!1),l=Cce(t),c=Object.entries(kce(t)).filter(([y])=>t.o(l,y)).map(([,y])=>y),u=c.length,p=c.filter(y=>y===0||y===void 0).length,m=c.filter(y=>y===void 0).length,g=Object.keys(l).length,{patched:x}=j_.use(["patched"]),v="webpackChunkdiscord_app";return i(be,{...e,size:"md",title:"Webpack Tarball",actions:[{text:"Create",variant:"primary",onClick:()=>{Xkt(x),e.onClose()}}]},i("div",{style:{marginBottom:"16px"}},i(Y,{size:"md"},i(Hr,{timestamp:new Date(r),isInline:!1},"Build number ",o))),i("div",{style:{marginTop:"8px",marginBottom:"24px"}},i(oe,null,"Lazy chunks"),i(pe,{alignItems:"center"},i(Y,{size:"md",style:{flexGrow:1}},p,"/",g,m?` (${m} errors)`:null),i(ue,{disabled:u===g||a,onClick:async()=>{s(!0),await JWe(window[v],async()=>{await XWe(t,n)})}},p===g?"Loaded":u===g?"Loading":"Load all"))),i(mo,{value:x,onChange:y=>j_.store.patched=y,title:j_.def.patched.description,hideBorder:!0}))}var j_,q_,eKe,tKe=h(()=>{"use strict";d();j();yt();Lt();hi();We();O();Er();R();le();C();YWe();VWe();j_=M({patched:{type:3,default:!0,description:"Include patched modules",restartNeeded:!0}}),q_=S({name:"WebpackTarball",description:"Converts Discord's webpack sources into a tarball.",tags:["Developers","Utility"],authors:[b.Kyuuhachi],settings:j_,toolboxActions:{"Webpack Tarball"(){ce(e=>i(Vkt,{modalProps:e}))}}}),eKe=_l(()=>{try{let e=P0("_getMetricWithDefaults")._flush.toString(),[,t,o]=e.match(/\{built_at:"(\d+)",build_number:"(\d+)"\}/);return{buildNumber:o,builtAt:new Date(Number(t))}}catch(e){return console.error("failed to get build number:",e),{buildNumber:"unknown",builtAt:new Date}}})});var oKe=h(()=>{});function cKe(){for(let e of Tce)e()}function q2(e){let t=nKe.catch(()=>{}).then(e);return nKe=t,t}async function W2(e){await Le.set(sKe,e),Ap=e,cKe()}function rKe(e){return"uniqueName"in e?Ap.some(t=>t.name===e.uniqueName):Ap.some(t=>t.name===e.name)}function Z6(e){return Ap.some(t=>t.name===e.name)}function uKe(e){let t={type:"emoji",id:e.id,name:e.name,surrogates:e.surrogates};if(!e.surrogates){let o=ar.getCustomEmojiById(e.id);o?.guildId&&(t.url=at.getEmojiURL({id:o.id,animated:!!o.animated,size:64}),t.guildId=o.guildId,t.animated=o.animated)}return t}function Qu(e,t=D.Type.SUCCESS){W_.store.disableToasts||D.show({message:e,type:t,id:D.genId(),options:{duration:3e3,position:D.Position.BOTTOM}})}function eCt(e){return q2(async()=>{let t=e.filter(o=>!Z6(o)).map(uKe);await W2([...Ap,...t]),Qu(`Added ${t.length} emojis to the list, ${e.length-t.length} already in the list`)})}function dKe(e){return q2(async()=>{let t=e.filter(o=>Z6(o));await W2(Ap.filter(o=>!t.some(r=>r.name===o.name))),Qu(`Removed ${t.length} emojis from the list`)})}function tCt(e){return q2(async()=>{if(Z6(e)){Qu(`"${e.name}" is already in the list`,D.Type.FAILURE);return}await W2([...Ap,uKe(e)]),Qu(`Added "${e.name}" to the list`)})}function pKe(e){return q2(async()=>{if(!Z6(e)){Qu(`"${e.name}" is not in the list`,D.Type.FAILURE);return}await W2(Ap.filter(t=>t.name!==e.name)),Qu(`Removed "${e.name}" from the list`)})}function nCt(e){let t=Z6(e);return i(f,null,i(P.MenuSeparator,null),i(P.MenuItem,{id:"white-list-emoji",key:"white-list-emoji",label:t?"Remove from Whitelist":"Add to Whitelist",action:()=>t?pKe(e):tCt(e)}))}function rCt(){let[,e]=T(0);return G(()=>{let t=()=>e(o=>o+1);return Tce.add(t),()=>{Tce.delete(t)}},[]),Ap}var sKe,Ap,Tce,nKe,lKe,iKe,aKe,oCt,iCt,aCt,sCt,lCt,cCt,W_,K_,mKe=h(()=>{"use strict";d();oKe();Fo();on();j();O();R();ul();C();sKe="whitelisted-emojis",Ap=[],Tce=new Set,nKe=Promise.resolve(),lKe=async()=>await Le.get(sKe)??[];iKe=(e,{target:t})=>{let{dataset:o}=t;if(!o||o.type!=="emoji")return;let r=o;"name"in r&&e.push(nCt(r))},aKe=(e,{guild:t})=>{e.push(oCt(t))},oCt=e=>i(P.MenuGroup,null,i(P.MenuItem,{id:"add-white-list-guild-emojis",key:"add-white-list-guild-emojis",label:"Add All Guild Emojis",action:()=>{let t=ar.getGuildEmoji(e.id);eCt(t.map(o=>({type:"emoji",id:o.id,name:o.name})))}}),i(P.MenuItem,{id:"remove-white-list-guild-emojis",key:"remove-white-list-guild-emojis",label:"Remove All Guild Emojis",action:()=>{let t=ar.getGuildEmoji(e.id);dKe(t.map(o=>({type:"emoji",id:o.id,name:o.name})))}}));iCt=()=>{let e=rCt(),[t,o]=T({}),r=l=>pKe(l),n=l=>{let c=e.filter(u=>u.guildId===l||l==="default"&&!u.guildId);return dKe(c)},a=l=>{o(c=>({...c,[l]:!c[l]}))},s=e.reduce((l,c)=>{let u=c.guildId||"default";return l[u]||(l[u]=[]),l[u].push(c),l},{});return i("div",{className:"emoji-container"},Object.entries(s).map(([l,c])=>i("div",{key:l,className:"guild-section"},i("div",{className:"guild-header"},i("h3",{className:"guild-name",onClick:()=>a(l)},l==="default"?"Default Emojis":`${$e.getGuild(l)?.name||`Guild ${l}`} Emojis`),i(ue,{className:"remove-all-button",size:"small",look:"outlined",color:"red",onClick:()=>n(l)},"Remove All")),!t[l]&&i("div",{className:"guild-emojis"},c.map(u=>i("div",{key:u.id||u.name,className:"emoji-item"},i("span",{className:"emoji-name"},u.name),u.surrogates?i("span",{className:"emoji-surrogate"},u.surrogates):i("img",{className:"emoji-image",src:at.getEmojiURL({id:u.id,animated:!!u.animated,size:64}),alt:u.name}),i(ue,{className:"remove-button",size:"small",look:"outlined",color:"red",onClick:()=>r(u)},"Remove")))))),e.length===0&&i("span",{className:"no-emoji-message"},"No emojis in the whitelist."))},aCt=async()=>{let e="whitelisted-emojis.json",t=await lKe(),o=JSON.stringify({emojis:t},null,4);DiscordNative.fileManager.saveWithDialog(new TextEncoder().encode(o),e),Qu("Successfully exported emojis")},sCt=async()=>{let e;{let[t]=await DiscordNative.fileManager.openFiles({filters:[{name:"Whitelisted Emojis",extensions:["json"]},{name:"all",extensions:["*"]}]});if(!t)return;e=new TextDecoder().decode(t.data)}await lCt(e)},lCt=e=>q2(async()=>{try{let t=JSON.parse(e);t&&typeof t=="object"&&Array.isArray(t.emojis)?(await W2(t.emojis),Qu("Successfully imported emojis")):Qu("Invalid JSON data",D.Type.FAILURE)}catch(t){Qu(`Failed to import emojis: ${t}`,D.Type.FAILURE)}}),cCt=()=>q2(async()=>{await W2([]),Qu("Reset emojis")}),W_=M({defaultEmojis:{type:3,description:"Hide default Unicode emojis from the autocomplete unless whitelisted.",default:!0},serverEmojis:{type:3,description:"Hide custom server emojis from the autocomplete unless whitelisted.",default:!0},disableToasts:{type:3,description:"Don't show toasts when adding or removing emojis.",default:!1},whiteListedEmojis:{type:6,description:"Whitelisted Emojis",component:iCt},exportEmojis:{type:6,description:"Export Emojis",component:()=>i(ue,{onClick:aCt},"Export Emojis")},importEmojis:{type:6,description:"Import Emojis",component:()=>i(ue,{onClick:()=>Oo.show({title:"Are you sure?",body:"This will overwrite your current whitelist.",confirmText:"Import",confirmColor:ue.Colors.RED,cancelText:"Cancel",onConfirm:sCt})},"Import Emojis")},resetEmojis:{type:6,description:"Reset Emojis",component:()=>i(ue,{onClick:()=>Oo.show({title:"Are you sure?",body:"This will remove all emojis from your whitelist.",confirmText:"Reset",confirmColor:ue.Colors.RED,cancelText:"Cancel",onConfirm:cCt})},"Reset Emojis")}}),K_=S({name:"WhitelistedEmojis",description:"Adds the ability to disable all message emojis except for a whitelisted set.",tags:["Chat","Emotes"],authors:[F.creations],patches:[{find:"queryEmojiResults({query:",replacement:{match:/\{emojis:\{unlocked:(\i)\}\}=\i\.\i\.queryEmojiResults\(\{.{0,200}\}\);/,replace:"$&$1=$self.filterEmojis($1);"}}],settings:W_,async start(){Ap=await lKe(),cKe(),tl("expression-picker",iKe),tl("guild-context",aKe)},stop(){vc("expression-picker",iKe),vc("guild-context",aKe)},filterEmojis(e){let t=e;return W_.store.defaultEmojis&&(t=t.filter(o=>!("uniqueName"in o)||rKe(o))),W_.store.serverEmojis&&(t=t.filter(o=>"uniqueName"in o||rKe(o))),t}})});var fKe=h(()=>{});function dCt(e){return qe.getNickname(e.id)||e.globalName||e.username}function gKe({userIds:e,guildId:t}){let o=0,r=e.map(n=>L.getUser(n)).filter(n=>n?!0:(o+=1,!1));return i("div",{className:qm("content")},e.length?i("div",{className:qm("spectating")},i(oe,null,Xe("SPECTATORS",{numViewers:e.length})),i(pe,{flexDirection:"column",gap:"6"},r.map(n=>i(pe,{key:n.id,flexDirection:"row",gap:"6",alignContent:"center"},i("img",{className:qm("user-avatar"),src:xf(n,t,!0,80),alt:""}),dCt(n))),o>0&&i("span",{className:qm("more-users")},`+${Xe("NUM_USERS",{num:o})}`))):i("span",{className:qm("no-viewers")},"No spectators"))}var uCt,Ice,qm,pCt,Q_,hKe=h(()=>{"use strict";d();fKe();j();Pe();Lt();We();Je();O();we();_e();Wt();Be();R();le();C();uCt=he("defaultRenderUser","showDefaultAvatarsForNullUsers"),Ice=Ie("moreUsers","clickableAvatar","avatar"),qm=K("vc-whos-watching-");pCt=M({showPanel:{description:"Show spectators under screenshare panel",type:3,default:!0,restartNeeded:!0}}),Q_=S({name:"WhosWatching",description:"Hover over the screenshare icon to view what users are watching your stream",tags:["Activity"],authors:[F.Fres,b.thororen],settings:pCt,patches:[{find:".Masks.STATUS_SCREENSHARE,width:32",replacement:{match:/\((\i\.\i)(?=,{mask:\i\.\i\.Masks\.STATUS_SCREENSHARE)/,replace:"($self.component({OriginalComponent:$1})"}},{find:",setIsForceShowSharingPopout:",replacement:{match:/"div"(?=.{0,50}stream:\i,canGoLive:\i)/,replace:"$self.WrapperComponent"}}],WrapperComponent:H.wrap(e=>{let t=ye([pc],()=>pc.getCurrentUserActiveStream());if(!t)return i("div",{...e},e.children);let o=0,r=pc.getViewerIds(t),n=r.map(l=>L.getUser(l)).filter(l=>l?!0:(o+=1,!1)),a=t?.guildId??"";function s(l,c){let u=n.slice(c-1);return i(ve,{text:i(gKe,{userIds:r,guildId:a})},({onMouseEnter:p,onMouseLeave:m})=>i("div",{className:Ice.moreUsers,onMouseEnter:p,onMouseLeave:m},"+",u.length+o))}return i("div",{className:qm("screenshare-panel")},i("div",{...e},e.children),i("div",{className:X(qm("spectating-panel"),z.top8)},i(Ot,{className:qm("spectating-header")},Xe("SPECTATORS",{numViewers:r.length})),n.length?i("div",{className:qm("spectating-users")},i(uCt,{users:n,count:r.length,renderIcon:!1,max:12,showDefaultAvatarsForNullUsers:!0,renderMoreUsers:s,renderUser:(l,c)=>i(eo,{key:c,className:Ice.clickableAvatar,onClick:()=>Ko(l.id)},i("img",{className:Ice.avatar,src:xf(l,a,!0,80),alt:l.username,title:l.username}))})):i(U,null,"No spectators")))}),component:function({OriginalComponent:e}){return H.wrap(t=>{let o=ye([pc],()=>pc.getCurrentUserActiveStream());if(!o)return null;let r=pc.getViewerIds(o),n=o?.guildId??"";return i(ve,{text:i(gKe,{userIds:r,guildId:n})},({onMouseEnter:a,onMouseLeave:s})=>i("div",{onMouseEnter:a,onMouseLeave:s},i(e,{...t})))})}})});function Y6({wiggle:e,children:t}){return t.split("").map((o,r)=>i("span",{key:r},i("span",{className:`wiggle-inner wiggle-inner-${e}`,style:{animationDelay:`${r*25%1200}ms`}},o)))}var xKe=h(()=>{"use strict";d()});var yKe,Z_,vKe,J6,bKe,Y_,SKe=h(()=>{"use strict";d();j();yt();O();R();xKe();yKe=M({intensity:{type:5,description:"Animation intensity in px",markers:zt(1,10,1),default:4,stickToMarkers:!0,onChange:()=>bKe()}}),Z_={x:"0.6s wiggle-wavy-x alternate ease-in-out infinite",y:"1.2s wiggle-wavy-y linear infinite"},vKe=[{chars:["<",">"],className:"wiggle-inner-x"},{chars:["^","^"],className:"wiggle-inner-y"},{chars:[")","("],className:"wiggle-inner-xy"}],bKe=()=>{let e=yKe.store.intensity+"px";J6.textContent=` .wiggle-example { list-style-type: disc; list-style-position: outside; margin: 4px 0 0 16px; } .wiggle-example li { white-space: break-spaces; margin-bottom: 4px; } .wiggle-inner { position: relative; top: 0; left: 0; &.wiggle-inner-x { animation: ${Z_.x}; } &.wiggle-inner-y { animation: ${Z_.y}; } &.wiggle-inner-xy { animation: ${Z_.x}, ${Z_.y}; } } @keyframes wiggle-wavy-x { from { left: -${e}; } to { left: ${e}; } } @keyframes wiggle-wavy-y { 0% { top: 0; animation-timing-function: ease-out; } 25% { top: -${e}; animation-timing-function: ease-in; } 50% { top: 0; animation-timing-function: ease-out; } 75% { top: ${e}; animation-timing-function: ease-in; } }`},Y_=S({name:"WigglyText",description:"Adds a new markdown formatting that makes text wiggly.",tags:["Appearance","Customisation","Fun"],authors:[F.nexpid],settings:yKe,settingsAboutComponent:()=>i(Y,null,"You can make text wiggle with the following:",i("br",null),i("ul",{className:"wiggle-example"},i("li",null,i(Y6,{wiggle:"x"},"left and right")," by typing ",i("code",null,"<~text~>")),i("li",null,i(Y6,{wiggle:"y"},"up and down")," by typing ",i("code",null,"^~text~^")),i("li",null,i(Y6,{wiggle:"xy"},"in a circle")," by typing ",i("code",null,")~text~(")))),patches:[{find:"AUTO_MODERATION_SYSTEM_MESSAGE_RULES:",replacement:{match:/staticRouteLink:\{order:(\i\.\i\.order)/,replace:"wiggly:$self.wigglyRule($1),$&"}},{find:'before:"@silent"',replacement:[{match:/staticRouteLink:{type:/,replace:'wiggly:{type:"inlineObject"},$&'},{match:/case"roleMention":/,replace:'$&case "wiggly":'}]}],wigglyRule:e=>({order:e,requiredFirstCharacters:["<~","^~",")~"],match(t){return vKe.map(({chars:o})=>t.match(new RegExp(`^(\\${o[0]})~([\\s\\S]+?)~(\\${o[1]})(?!_)`))).find(o=>o!==null)},parse(t,o,r){let n=vKe.find(({chars:a})=>a[0]===t[1]&&a[1]===t[3])?.className??"";return{content:o(t[2],r),className:n}},react(t,o){let r=0,n=a=>{let s=Array.isArray(a)?a:[a],l=!1,c=-1;for(let u of s)c++,typeof u=="string"?(l=!0,s[c]=u.split("").map((p,m)=>i("span",{key:m},i("span",{className:`wiggle-inner ${t.className}`,style:{animationDelay:`${r++*25%1200}ms`}},p)))):u?.props?.children&&(u.props.children=n(u.props.children));return l?s:a};return n(o(t.content))}}),start:()=>{J6=document.createElement("style"),J6.id="WigglyText",document.head.appendChild(J6),bKe()},stop:()=>J6.remove()})});var AKe,wKe,J_,kKe=h(()=>{"use strict";d();yc();j();O();R();AKe=M({blockedWords:{type:0,description:"Strings not to capitilise (seperate with a comma)",default:"http, https, ok"}}),wKe=(e,t)=>{let o=AKe.store.blockedWords.split(", "),r=t.content.split(/(?<=[.!?]+['")\]]*)(\s+)/);t.content=r.map((n,a)=>a%2===1||o.some(s=>n.toLowerCase().startsWith(s.toLocaleLowerCase()))?n:n.charAt(0).toUpperCase()+n.slice(1)).join("")},J_=S({name:"WriteUpperCase",description:"Changes the first Letter of each Sentence in Message Inputs to Uppercase",tags:["Appearance","Customisation","Chat"],authors:[b.Samwich,F.KrystalSkull],settings:AKe,start(){ni(wKe)},stop(){ri(wKe)}})});function V_(e){return typeof e=="string"&&/\.zip$/i.test(e)}function eU(e){return e.fileName??e.item?.originalItem?.filename??e.item?.originalItem?.title}function IKe(e){return e.url??e.item?.downloadUrl??e.item?.originalItem?.url??e.item?.originalItem?.proxy_url}function Pce(e){let t=K2.get(e);if(t)return t;let r={status:"pending",promise:vCt(e).then(n=>(K2.set(e,{status:"resolved",result:n}),n)).catch(n=>{let a=n instanceof Error?n.message:"Failed to preview ZIP.";throw a===fCt||a===TKe?K2.delete(e):K2.set(e,{status:"rejected",message:a}),n})};return K2.set(e,r),r}function EKe(){K2.clear()}function Mce(e){let t=e.kind==="image"?NKe(e.extension):"text/plain;charset=utf-8";q1(new File([e.data],e.name,{type:t}))}function DKe(e){return URL.createObjectURL(new Blob([e.data],{type:NKe(e.extension)}))}function PKe(e){return new TextDecoder("utf-8").decode(e.data)}function MKe(e){return{js:"javascript",jsx:"jsx",md:"markdown",py:"python",rs:"rust",sh:"bash",ts:"typescript",tsx:"tsx",yml:"yaml"}[e.extension]??e.extension}async function vCt(e){let t=bCt(e);if(t){let a=await yCt(t);if(a.success&&a.data){if(a.data.byteLength>Dce)throw new Error("ZIP is too large to preview.");return CKe(a.data)}throw new Error(a.error||"Could not fetch ZIP through native Discord attachment fetch.")}let o=await fetch(e);if(!o.ok)throw new Error("Could not fetch ZIP.");let r=Number(o.headers.get("content-length"));if(Number.isFinite(r)&&r>Dce)throw new Error("ZIP is too large to preview.");let n=await o.arrayBuffer();if(n.byteLength>Dce)throw new Error("ZIP is too large to preview.");return CKe(n)}async function yCt(e){return Ece?typeof Ece.fetchDiscordAttachment=="function"?Ece.fetchDiscordAttachment(e):{success:!1,error:"Native helper does not support attachment fetch."}:{success:!1,error:TKe}}function bCt(e){try{let t=new URL(e);if(t.protocol!=="https:"||!hCt.has(t.hostname)||!t.pathname.startsWith("/attachments/"))return null;let o=t.pathname.slice(13);return SCt(o)?`${o}${t.search}`:null}catch{return null}}function SCt(e){if(e.includes("\\")||e.includes("..")||e.startsWith("/")||e.startsWith("//"))return!1;let t=e.split("/");return t.length>=3&&/^\d+$/.test(t[0])&&/^\d+$/.test(t[1])&&t.slice(2).every(o=>o.length>0)}function CKe(e){let t=mme(new Uint8Array(e)),o=Object.entries(t).filter(([a])=>!a.endsWith("/")).sort(([a],[s])=>a.localeCompare(s)),r=o.length>X_;return{entries:o.slice(0,X_).map(([a,s])=>{let l=ACt(a),c=kCt(l);return{path:l,name:BKe(l),size:s.byteLength,data:s,extension:c,kind:wCt(c,s.byteLength)}}),truncated:r}}function wCt(e,t){return t>mCt?"unsupported":gCt.has(e)?"image":xCt.has(e)?"text":"unsupported"}function NKe(e){return e==="jpg"?"image/jpeg":`image/${e}`}function ACt(e){return e.replace(/^\/+/,"").replaceAll("\\","/")}function BKe(e){return e.split("/").at(-1)||e}function kCt(e){let t=BKe(e),o=t.lastIndexOf(".");return o===-1?"":t.slice(o+1).toLowerCase()}var Ece,Dce,X_,mCt,fCt,TKe,gCt,hCt,xCt,K2,Nce=h(()=>{"use strict";d();ul();K1();Ece=VencordNative?.pluginHelpers?.ZipPreview,Dce=50*1024*1024,X_=1e3,mCt=10*1024*1024,fCt="ZIP preview was cancelled.",TKe="Native helper is unavailable.",gCt=new Set(["png","jpg","jpeg","gif","webp","avif","bmp"]),hCt=new Set(["cdn.discordapp.com","media.discordapp.net"]),xCt=new Set(["c","cpp","cs","css","csv","go","h","html","java","js","json","jsx","log","lua","md","php","py","rs","scss","sh","svg","toml","ts","tsx","txt","xml","yaml","yml"]),K2=new Map});function CCt(e,t){let o=new Set,r=[],n=t?`${t}/`:"";for(let a of e){if(!a.path.startsWith(n))continue;let s=a.path.slice(n.length),l=s.indexOf("/");l===-1?r.push(a):o.add(s.slice(0,l))}return{directories:Array.from(o).sort(),files:r}}function TCt(e){let t=eU(e),o=IKe(e),[r,n]=T(null),[a,s]=T(!1),[l,c]=T(!1),[u,p]=T(""),m=a?TU:CU,g=Se(null),x=Se(null),v=Se(0);if(G(()=>{v.current++,n(null),p(""),s(!1),c(!1)},[o]),G(()=>()=>{v.current++,g.current!=null&&cancelAnimationFrame(g.current),x.current!=null&&clearTimeout(x.current)},[]),!V_(t)||!o)return null;let y=()=>{let k=++v.current,w=Pce(o);n(w),w.status==="pending"&&w.promise.then(()=>{v.current===k&&n(Pce(o))}).catch(I=>{if(v.current!==k)return;let E=I instanceof Error?I.message:"Failed to preview ZIP.";n({status:"rejected",message:E})})},A=k=>{if(g.current!=null&&cancelAnimationFrame(g.current),x.current!=null&&clearTimeout(x.current),k){(!r||r.status==="rejected")&&y(),c(!0),g.current=requestAnimationFrame(()=>{g.current=null,s(!0)});return}s(!1),x.current=window.setTimeout(()=>{x.current=null,c(!1)},180)};return i("div",{className:En("inline",l?"expanded":"collapsed",a?"open":"closed")},l&&i("div",{className:En("content"),"aria-hidden":!a},i("div",{className:En("content-inner")},i(ICt,{cacheState:r,currentPath:u,onNavigate:p}))),i("button",{className:En("toggle"),type:"button","aria-expanded":a,"aria-label":a?"Collapse ZIP preview":"Expand ZIP preview",onClick:k=>{k.preventDefault(),k.stopPropagation(),A(!a)}},i(m,{className:En("toggle-icon")})))}function ICt({cacheState:e,currentPath:t,onNavigate:o}){if(!e||e.status==="pending")return i("div",{className:En("state")},"Loading ZIP preview...");if(e.status==="rejected")return i("div",{className:En("state")},e.message);let{entries:r,truncated:n}=e.result;return r.length===0?i("div",{className:En("state")},"This ZIP is empty."):i(f,null,i(ECt,{path:t,onNavigate:o}),n&&i("div",{className:En("state")},"Only showing first ",X_," entries."),i("div",{className:En("entries")},i(DCt,{entries:r,currentPath:t,onNavigate:o})))}function ECt({path:e,onNavigate:t}){if(!e)return i("div",{className:En("breadcrumb")},i(td,{className:En("breadcrumb-icon"),style:tU}),i("span",{className:En("breadcrumb-current"),style:tU},"/"));let o=e.split("/");return i("div",{className:En("breadcrumb")},i(td,{className:En("breadcrumb-icon"),style:tU}),i("button",{className:En("breadcrumb-segment"),type:"button",onClick:r=>{r.preventDefault(),r.stopPropagation(),t("")}},"/"),o.map((r,n)=>{let a=o.slice(0,n+1).join("/"),s=n===o.length-1;return i("span",{key:a},s?i("span",{className:En("breadcrumb-current"),style:tU},r,"/"):i("button",{className:En("breadcrumb-segment"),type:"button",onClick:l=>{l.preventDefault(),l.stopPropagation(),t(a)}},r))}))}function DCt({entries:e,currentPath:t,onNavigate:o}){let{directories:r,files:n}=Ne(()=>CCt(e,t),[e,t]);return r.length===0&&n.length===0?i("div",{className:En("state")},"This folder is empty."):i(f,null,r.map(a=>i("button",{key:a,className:En("row","directory","button"),type:"button",onClick:s=>{s.preventDefault(),s.stopPropagation(),o(t?`${t}/${a}`:a)}},a,"/")),n.map(a=>i(PCt,{key:a.path,entry:a})))}function PCt({entry:e}){return e.kind!=="unsupported"?i("button",{className:En("row","file","button"),type:"button",onClick:o=>{o.preventDefault(),o.stopPropagation(),MCt(e)}},e.name," ",i("span",{className:En("size")},"(",RKe(e.size),")")):i("div",{className:En("row","file","unsupported")},e.name," ",i("span",{className:En("size")},"(",RKe(e.size),")"))}function MCt(e){if(e.kind==="image"){BCt(e);return}e.kind==="text"&&NCt(e)}function NCt(e){let t=PKe(e);ce(o=>i(H,null,i(be,{...o,size:"lg",title:e.name,actions:[{text:"Copy",variant:"secondary",onClick:()=>ft(t,"File contents copied to clipboard!")},{text:"Download",variant:"primary",onClick:()=>Mce(e)}]},i("div",{className:En("code-wrap")},i(Ps,{content:t,lang:MKe(e)})))))}function BCt(e){ce(t=>i(H,null,i(be,{...t,size:"lg",title:e.name,actions:[{text:"Download",variant:"primary",onClick:()=>Mce(e)}]},i(RCt,{entry:e}))))}function RCt({entry:e}){let[t]=T(()=>DKe(e));return G(()=>()=>URL.revokeObjectURL(t),[t]),i("div",{className:En("image-wrap")},i("img",{className:En("image"),src:t,alt:e.name}))}function RKe(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`}var En,tU,LKe,OKe=h(()=>{"use strict";d();bd();Pe();ot();we();_e();C();Nce();En=K("vc-zip-preview-"),tU={color:"var(--text-muted)"};LKe=H.wrap(TCt,{noop:!0})});var FKe,_Ke=h(()=>{d();(window.VencordStyles??=new Map).set("src/equicordplugins/zipPreview/style.css",{name:"src/equicordplugins/zipPreview/style.css",source:`.vc-zip-preview-file { flex-wrap: wrap; } .vc-zip-preview-inline { flex: 0 0 100%; order: 3; box-sizing: border-box; min-width: 0; padding-left: 0; color: var(--text-normal); font-size: 0.875rem; line-height: 1.25rem; } .vc-zip-preview-collapsed { display: flex; justify-content: center; height: 18px; margin-top: 4px; } .vc-zip-preview-expanded { margin-top: 14px; } .vc-zip-preview-content { display: grid; grid-template-rows: 0fr; overflow: hidden; opacity: 0; pointer-events: none; transform: translateY(-4px); transition: grid-template-rows 180ms ease, opacity 140ms ease, transform 180ms ease; } .vc-zip-preview-content-inner { min-height: 0; overflow: hidden; } .vc-zip-preview-open .vc-zip-preview-content { grid-template-rows: 1fr; opacity: 1; pointer-events: auto; transform: translateY(0); } .vc-zip-preview-state { color: var(--text-muted); } .vc-zip-preview-entries { display: flex; flex-direction: column; align-items: flex-start; } .vc-zip-preview-row { appearance: none; display: block; box-sizing: border-box; width: 100%; min-width: 0; border: 0; border-radius: 4px; background: none; color: var(--text-link); font: inherit; line-height: 1.25rem; text-align: left; outline: none; } .vc-zip-preview-row:hover, .vc-zip-preview-row:focus, .vc-zip-preview-row:active { background: none !important; background-color: transparent !important; } .vc-zip-preview-directory { color: var(--text-link); } .vc-zip-preview-button { cursor: pointer; text-decoration: underline; color: var(--text-link); } .vc-zip-preview-button:hover, .vc-zip-preview-button:focus, .vc-zip-preview-button:active { color: var(--text-link); background: none !important; background-color: transparent !important; } .vc-zip-preview-unsupported { color: var(--text-muted); } .vc-zip-preview-modal-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .vc-zip-preview-modal-content { min-height: 240px; } .vc-zip-preview-code-wrap { padding: 16px 0; } .vc-zip-preview-image-wrap { display: flex; align-items: center; justify-content: center; min-height: 360px; padding: 16px 0; } .vc-zip-preview-image { display: block; max-width: 100%; max-height: 70vh; object-fit: contain; } .vc-zip-preview-toggle { appearance: none; display: flex; align-items: center; justify-content: center; width: 48px; height: 18px; margin: 0 auto; padding: 0; border: 0; background: none; color: var(--text-muted); cursor: pointer; transition: color 0.15s ease; outline: none; } .vc-zip-preview-toggle:hover, .vc-zip-preview-toggle:focus, .vc-zip-preview-toggle:active { background: none !important; background-color: transparent !important; color: var(--text-link); } .vc-zip-preview-toggle-icon { width: 16px; height: 16px; } .vc-zip-preview-breadcrumb { display: flex; align-items: center; gap: 4px; margin-bottom: 4px; color: var(--text-muted); } .vc-zip-preview-breadcrumb > .vc-zip-preview-breadcrumb-icon { flex-shrink: 0; width: 16px; height: 16px; color: var(--text-muted); fill: currentcolor; } .vc-zip-preview-breadcrumb-segment { display: inline; padding: 0; border: 0; background: none; color: var(--text-link); font: inherit; line-height: 1.25rem; text-decoration: underline; cursor: pointer; outline: none; } .vc-zip-preview-breadcrumb-segment:hover, .vc-zip-preview-breadcrumb-segment:focus, .vc-zip-preview-breadcrumb-segment:active { background: none !important; background-color: transparent !important; color: var(--text-link-low-saturation); } .vc-zip-preview-breadcrumb .vc-zip-preview-breadcrumb-current { color: var(--text-muted); } .vc-zip-preview-size { color: var(--text-muted); } @media (prefers-reduced-motion: reduce) { .vc-zip-preview-content { transition: none; transform: none; } } `,classNames:{},dom:null});FKe="src/equicordplugins/zipPreview/style.css"});var oU,UKe=h(()=>{"use strict";d();O();Be();R();OKe();_Ke();Nce();oU=S({name:"ZipPreview",description:"Previews ZIP contents inside file attachments.",tags:["Chat","Utility"],authors:[F.justjxke],managedStyle:FKe,patches:[{find:"#{intl::IMG_ALT_ATTACHMENT_FILE_TYPE}",replacement:{match:/(?<=renderAdjacentContent:\i}=(\i);.{0,120}className:)(\i\.\i)(,children:\[)/,replace:"$self.fileClassName($2)$3$self.renderZipPreview($1),"}}],stop(){EKe()},renderZipPreview(e){return V_(eU(e))?i(LKe,{...e}):null},fileClassName(e){return X(e,En("file"))}})});var et,wi,Tw,Na=h(()=>{d();q0();dfe();pfe();ffe();gfe();vfe();yfe();wfe();Afe();kfe();Cfe();Tfe();Ife();Efe();Dfe();Pfe();Nfe();mu();ij();Ufe();zfe();Gfe();jfe();dj();Qfe();Jfe();gj();nge();rge();Sj();ige();Tge();Mge();Nge();Rge();Fge();Pj();Yge();Jge();_j();u0e();d0e();y0e();S0e();A0e();M0e();N0e();R0e();Yk();nj();Jw();X0e();uC();whe();Ahe();The();Gj();Ihe();oxe();cxe();Nxe();Bxe();Lxe();Oxe();_xe();Uxe();zxe();Gxe();Hxe();Wxe();Kxe();Yxe();t1e();o1e();i1e();s1e();l1e();Uq();g1e();Gq();y1e();w1e();Wq();nW();iW();ive();uve();SW();Tve();bT();Gve();qve();MT();Zve();Yve();Jve();Vve();tye();oye();nye();rye();iT();iye();aye();sye();lye();cye();uye();WT();dye();pye();mye();kv();kye();Iye();B4();Jye();Vye();obe();rbe();lbe();cbe();dbe();Cbe();Dbe();Nbe();Bbe();Obe();c2e();u2e();p2e();f2e();y2e();mK();E2e();fSe();gSe();ySe();YI();CSe();rT();ESe();UK();NSe();RSe();LSe();OSe();USe();zSe();GSe();HSe();qSe();ewe();twe();fwe();bwe();aQ();Swe();wwe();Awe();Nwe();_we();cQ();zwe();Hwe();jwe();Kwe();Ywe();Xwe();e4e();a5();s4e();d4e();x4e();v4e();y4e();b4e();S4e();w4e();A4e();k4e();T4e();s5();I4e();E4e();aj();P4e();M4e();B4e();U4e();G4e();K4e();RQ();l5e();u5e();p5e();m5e();zQ();E5e();D5e();DW();P5e();M5e();L5e();_5e();HZ();r6e();i6e();u6e();p6e();z6e();$6e();n3e();R9e();_9e();G9e();H9e();q9e();Y9e();eke();LY();cke();UY();mv();CQ();pke();Ike();Eke();Pke();pCe();wCe();Kw();CCe();ICe();PCe();NCe();lJ();PTe();EJ();cj();FTe();GTe();HTe();KTe();ZTe();VTe();oIe();FJ();GIe();TEe();Gy();Qz();$Ee();jEe();qEe();ZEe();CX();s7e();l7e();u7e();h7e();I7e();E7e();N7e();O7e();U7e();q7e();TN();tDe();iDe();NN();xDe();dx();ODe();WX();eV();fPe();vPe();bPe();CPe();EPe();PPe();ec();$Me();QMe();iNe();lNe();mNe();NNe();kee();Eee();vBe();Bee();eRe();iRe();aRe();sRe();lRe();cRe();uRe();pRe();gRe();yRe();SRe();wRe();ARe();CRe();ERe();SA();ER();sOe();hOe();DOe();FOe();Hte();yFe();bFe();wFe();l_e();yoe();x_e();Ioe();$_e();j_e();X_e();eUe();nUe();aUe();sUe();dUe();pUe();SUe();wUe();CUe();IUe();$L();ije();cje();hje();vje();yje();Aje();kje();Pje();Mje();Bje();eqe();tqe();i_();xqe();l_();Eqe();Nqe();$qe();Hqe();Xle();Zqe();Yqe();Jqe();Vqe();rce();rWe();pWe();NWe();BWe();RWe();GWe();HWe();QWe();ZWe();tKe();mKe();hKe();SKe();kKe();UKe();et={[sl.name]:sl,[z9.name]:z9,[$9.name]:$9,[G9.name]:G9,[H9.name]:H9,[j9.name]:j9,[q9.name]:q9,[W9.name]:W9,[K9.name]:K9,[Q9.name]:Q9,[Z9.name]:Z9,[Y9.name]:Y9,[J9.name]:J9,[X9.name]:X9,[V9.name]:V9,[ek.name]:ek,[tk.name]:tk,[Pn.name]:Pn,[nk.name]:nk,[ik.name]:ik,[ak.name]:ak,[sk.name]:sk,[lk.name]:lk,[J1.name]:J1,[dk.name]:dk,[fk.name]:fk,[hk.name]:hk,[xk.name]:xk,[vk.name]:vk,[wk.name]:wk,[Ak.name]:Ak,[Ck.name]:Ck,[Tk.name]:Tk,[Ik.name]:Ik,[Ek.name]:Ek,[Dk.name]:Dk,[Pk.name]:Pk,[Nk.name]:Nk,[Bk.name]:Bk,[Lk.name]:Lk,[Ok.name]:Ok,[Fk.name]:Fk,[Uk.name]:Uk,[zk.name]:zk,[$k.name]:$k,[Hk.name]:Hk,[jk.name]:jk,[qk.name]:qk,[Jk.name]:Jk,[Mf.name]:Mf,[Ed.name]:Ed,[nC.name]:nC,[Md.name]:Md,[dC.name]:dC,[pC.name]:pC,[fC.name]:fC,[ev.name]:ev,[gC.name]:gC,[kC.name]:kC,[CC.name]:CC,[EC.name]:EC,[DC.name]:DC,[PC.name]:PC,[MC.name]:MC,[NC.name]:NC,[BC.name]:BC,[RC.name]:RC,[LC.name]:LC,[OC.name]:OC,[_C.name]:_C,[UC.name]:UC,[$C.name]:$C,[GC.name]:GC,[HC.name]:HC,[jC.name]:jC,[qC.name]:qC,[WC.name]:WC,[KC.name]:KC,[QC.name]:QC,[Gf.name]:Gf,[VC.name]:VC,[eT.name]:eT,[oT.name]:oT,[vv.name]:vv,[dT.name]:dT,[pT.name]:pT,[fT.name]:fT,[vT.name]:vT,[yT.name]:yT,[AT.name]:AT,[TT.name]:TT,[ET.name]:ET,[Au.name]:Au,[NT.name]:NT,[BT.name]:BT,[RT.name]:RT,[LT.name]:LT,[OT.name]:OT,[FT.name]:FT,[_T.name]:_T,[UT.name]:UT,[Ic.name]:Ic,[zT.name]:zT,[$T.name]:$T,[GT.name]:GT,[HT.name]:HT,[jT.name]:jT,[qT.name]:qT,[nm.name]:nm,[KT.name]:KT,[QT.name]:QT,[ZT.name]:ZT,[Ph.name]:Ph,[nI.name]:nI,[rI.name]:rI,[Tv.name]:Tv,[sI.name]:sI,[lI.name]:lI,[cI.name]:cI,[uI.name]:uI,[dI.name]:dI,[pI.name]:pI,[mI.name]:mI,[xI.name]:xI,[vI.name]:vI,[yI.name]:yI,[bI.name]:bI,[wI.name]:wI,[PI.name]:PI,[MI.name]:MI,[NI.name]:NI,[BI.name]:BI,[LI.name]:LI,[FI.name]:FI,[zI.name]:zI,[WI.name]:WI,[QI.name]:QI,[ZI.name]:ZI,[_v.name]:_v,[JI.name]:JI,[tm.name]:tm,[XI.name]:XI,[eE.name]:eE,[tE.name]:tE,[oE.name]:oE,[nE.name]:nE,[rE.name]:rE,[iE.name]:iE,[aE.name]:aE,[sE.name]:sE,[cE.name]:cE,[dE.name]:dE,[mE.name]:mE,[fE.name]:fE,[xE.name]:xE,[vE.name]:vE,[Gv.name]:Gv,[yE.name]:yE,[bE.name]:bE,[SE.name]:SE,[AE.name]:AE,[TE.name]:TE,[Jf.name]:Jf,[IE.name]:IE,[DE.name]:DE,[PE.name]:PE,[LE.name]:LE,[OE.name]:OE,[FE.name]:FE,[_E.name]:_E,[zE.name]:zE,[$E.name]:$E,[GE.name]:GE,[jE.name]:jE,[qE.name]:qE,[WE.name]:WE,[KE.name]:KE,[QE.name]:QE,[ZE.name]:ZE,[YE.name]:YE,[JE.name]:JE,[XE.name]:XE,[VE.name]:VE,[t7.name]:t7,[o7.name]:o7,[ch.name]:ch,[n7.name]:n7,[r7.name]:r7,[i7.name]:i7,[s7.name]:s7,[c7.name]:c7,[d7.name]:d7,[$h.name]:$h,[p7.name]:p7,[f7.name]:f7,[h7.name]:h7,[x7.name]:x7,[v7.name]:v7,[y7.name]:y7,[b7.name]:b7,[PT.name]:PT,[S7.name]:S7,[w7.name]:w7,[A7.name]:A7,[I7.name]:I7,[dy.name]:dy,[SD.name]:SD,[wD.name]:wD,[kD.name]:kD,[CD.name]:CD,[ND.name]:ND,[BD.name]:BD,[GD.name]:GD,[uP.name]:uP,[dP.name]:dP,[mP.name]:mP,[fP.name]:fP,[gP.name]:gP,[hP.name]:hP,[yP.name]:yP,[wP.name]:wP,[AP.name]:AP,[Cy.name]:Cy,[JC.name]:JC,[pm.name]:pm,[CP.name]:CP,[IP.name]:IP,[EP.name]:EP,[PP.name]:PP,[FP.name]:FP,[_P.name]:_P,[Yp.name]:Yp,[UP.name]:UP,[zP.name]:zP,[HP.name]:HP,[jP.name]:jP,[QP.name]:QP,[aM.name]:aM,[uM.name]:uM,[ck.name]:ck,[dM.name]:dM,[mM.name]:mM,[fM.name]:fM,[gM.name]:gM,[xM.name]:xM,[vM.name]:vM,[yM.name]:yM,[CM.name]:CM,[DM.name]:DM,[GM.name]:GM,[tN.name]:tN,[j0.name]:j0,[oN.name]:oN,[nN.name]:nN,[rN.name]:rN,[aN.name]:aN,[sN.name]:sN,[lN.name]:lN,[cN.name]:cN,[uN.name]:uN,[pN.name]:pN,[hN.name]:hN,[xN.name]:xN,[bN.name]:bN,[wN.name]:wN,[AN.name]:AN,[CN.name]:CN,[IN.name]:IN,[EN.name]:EN,[DN.name]:DN,[BN.name]:BN,[RN.name]:RN,[FN.name]:FN,[_N.name]:_N,[zN.name]:zN,[gx.name]:gx,[HN.name]:HN,[WN.name]:WN,[KN.name]:KN,[QN.name]:QN,[JN.name]:JN,[XN.name]:XN,[hB.name]:hB,[xB.name]:xB,[yB.name]:yB,[AB.name]:AB,[kB.name]:kB,[CB.name]:CB,[TB.name]:TB,[RB.name]:RB,[vb.name]:vb,[LB.name]:LB,[bb.name]:bb,[WB.name]:WB,[ZB.name]:ZB,[YB.name]:YB,[JB.name]:JB,[XB.name]:XB,[VB.name]:VB,[eR.name]:eR,[tR.name]:tR,[oR.name]:oR,[nR.name]:nR,[rR.name]:rR,[iR.name]:iR,[aR.name]:aR,[sR.name]:sR,[uR.name]:uR,[vR.name]:vR,[NR.name]:NR,[OR.name]:OR,[_R.name]:_R,[zR.name]:zR,[HR.name]:HR,[YR.name]:YR,[VR.name]:VR,[eL.name]:eL,[tL.name]:tL,[cL.name]:cL,[pL.name]:pL,[mL.name]:mL,[wL.name]:wL,[AL.name]:AL,[kL.name]:kL,[CL.name]:CL,[TL.name]:TL,[IL.name]:IL,[DL.name]:DL,[PL.name]:PL,[NL.name]:NL,[BL.name]:BL,[OL.name]:OL,[FL.name]:FL,[_L.name]:_L,[UL.name]:UL,[n0.name]:n0,[GF.name]:GF,[HF.name]:HF,[jF.name]:jF,[KF.name]:KF,[QF.name]:QF,[ZF.name]:ZF,[YF.name]:YF,[VF.name]:VF,[e_.name]:e_,[t_.name]:t_,[o_.name]:o_,[n_.name]:n_,[a_.name]:a_,[s_.name]:s_,[p_.name]:p_,[m_.name]:m_,[g_.name]:g_,[x_.name]:x_,[y_.name]:y_,[S_.name]:S_,[A_.name]:A_,[k_.name]:k_,[C_.name]:C_,[T_.name]:T_,[P_.name]:P_,[M_.name]:M_,[N_.name]:N_,[L_.name]:L_,[O_.name]:O_,[F_.name]:F_,[U_.name]:U_,[z_.name]:z_,[G_.name]:G_,[H_.name]:H_,[q_.name]:q_,[K_.name]:K_,[Q_.name]:Q_,[Y_.name]:Y_,[J_.name]:J_,[oU.name]:oU},wi={[sl.name]:{folderName:"src/plugins/_api/badges",userPlugin:!1},[z9.name]:{folderName:"src/plugins/_api/chatButtons.ts",userPlugin:!1},[$9.name]:{folderName:"src/plugins/_api/commands.ts",userPlugin:!1},[G9.name]:{folderName:"src/plugins/_api/contextMenu.ts",userPlugin:!1},[H9.name]:{folderName:"src/plugins/_api/dynamicImageModalApi.ts",userPlugin:!1},[j9.name]:{folderName:"src/plugins/_api/memberListDecorators",userPlugin:!1},[q9.name]:{folderName:"src/plugins/_api/messageAccessories.ts",userPlugin:!1},[W9.name]:{folderName:"src/plugins/_api/messageDecorations",userPlugin:!1},[K9.name]:{folderName:"src/plugins/_api/messageEvents.ts",userPlugin:!1},[Q9.name]:{folderName:"src/plugins/_api/messagePopover.ts",userPlugin:!1},[Z9.name]:{folderName:"src/plugins/_api/messageUpdater.ts",userPlugin:!1},[Y9.name]:{folderName:"src/plugins/_api/nicknameIcons.ts",userPlugin:!1},[J9.name]:{folderName:"src/plugins/_api/notices.ts",userPlugin:!1},[X9.name]:{folderName:"src/plugins/_api/serverList.ts",userPlugin:!1},[V9.name]:{folderName:"src/plugins/_api/userSettings.ts",userPlugin:!1},[ek.name]:{folderName:"src/plugins/_core/concatenatedComponentExtractor.tsx",userPlugin:!1},[tk.name]:{folderName:"src/plugins/_core/noTrack.ts",userPlugin:!1},[Pn.name]:{folderName:"src/plugins/_core/settings.tsx",userPlugin:!1},[nk.name]:{folderName:"src/plugins/_core/supportHelper.tsx",userPlugin:!1},[ik.name]:{folderName:"src/plugins/accountPanelServerProfile",userPlugin:!1},[ak.name]:{folderName:"src/plugins/alwaysAnimate",userPlugin:!1},[sk.name]:{folderName:"src/plugins/alwaysExpandRoles",userPlugin:!1},[lk.name]:{folderName:"src/plugins/alwaysTrust",userPlugin:!1},[J1.name]:{folderName:"src/plugins/anonymiseFileNames",userPlugin:!1},[dk.name]:{folderName:"src/plugins/appleMusic.desktop",userPlugin:!1},[fk.name]:{folderName:"src/plugins/autoDndWhilePlaying.discordDesktop",userPlugin:!1},[hk.name]:{folderName:"src/plugins/betterFolders",userPlugin:!1},[xk.name]:{folderName:"src/plugins/betterGifAltText",userPlugin:!1},[vk.name]:{folderName:"src/plugins/betterGifPicker",userPlugin:!1},[wk.name]:{folderName:"src/plugins/betterRoleContext",userPlugin:!1},[Ak.name]:{folderName:"src/plugins/betterRoleDot",userPlugin:!1},[Ck.name]:{folderName:"src/plugins/betterSessions",userPlugin:!1},[Tk.name]:{folderName:"src/plugins/betterSettings",userPlugin:!1},[Ik.name]:{folderName:"src/plugins/betterUploadButton",userPlugin:!1},[Ek.name]:{folderName:"src/plugins/biggerStreamPreview",userPlugin:!1},[Dk.name]:{folderName:"src/plugins/blurNsfw",userPlugin:!1},[Pk.name]:{folderName:"src/plugins/callTimer",userPlugin:!1},[Nk.name]:{folderName:"src/plugins/characterCounter",userPlugin:!1},[Bk.name]:{folderName:"src/plugins/clearURLs",userPlugin:!1},[Lk.name]:{folderName:"src/plugins/clientTheme",userPlugin:!1},[Ok.name]:{folderName:"src/plugins/colorSighted",userPlugin:!1},[Fk.name]:{folderName:"src/plugins/consoleJanitor",userPlugin:!1},[Uk.name]:{folderName:"src/plugins/consoleShortcuts",userPlugin:!1},[zk.name]:{folderName:"src/plugins/copyEmojiMarkdown",userPlugin:!1},[$k.name]:{folderName:"src/plugins/copyFileContents",userPlugin:!1},[Hk.name]:{folderName:"src/plugins/copyStickerLinks",userPlugin:!1},[jk.name]:{folderName:"src/plugins/copyUserURLs",userPlugin:!1},[qk.name]:{folderName:"src/plugins/crashHandler",userPlugin:!1},[Jk.name]:{folderName:"src/plugins/customCommands",userPlugin:!1},[Mf.name]:{folderName:"src/plugins/customIdle",userPlugin:!1},[Ed.name]:{folderName:"src/plugins/customRPC",userPlugin:!1},[nC.name]:{folderName:"src/plugins/dearrow",userPlugin:!1},[Md.name]:{folderName:"src/plugins/decor",userPlugin:!1},[dC.name]:{folderName:"src/plugins/disableCallIdle",userPlugin:!1},[pC.name]:{folderName:"src/plugins/dontRoundMyTimestamps",userPlugin:!1},[fC.name]:{folderName:"src/plugins/experiments",userPlugin:!1},[ev.name]:{folderName:"src/plugins/expressionCloner",userPlugin:!1},[gC.name]:{folderName:"src/plugins/f8break",userPlugin:!1},[kC.name]:{folderName:"src/plugins/fakeNitro",userPlugin:!1},[CC.name]:{folderName:"src/plugins/fakeProfileThemes",userPlugin:!1},[EC.name]:{folderName:"src/plugins/favEmojiFirst",userPlugin:!1},[DC.name]:{folderName:"src/plugins/fixCodeblockGap",userPlugin:!1},[PC.name]:{folderName:"src/plugins/fixImagesQuality",userPlugin:!1},[MC.name]:{folderName:"src/plugins/fixSpotifyEmbeds.desktop",userPlugin:!1},[NC.name]:{folderName:"src/plugins/fixYoutubeEmbeds.desktop",userPlugin:!1},[BC.name]:{folderName:"src/plugins/forceOwnerCrown",userPlugin:!1},[RC.name]:{folderName:"src/plugins/friendInvites",userPlugin:!1},[LC.name]:{folderName:"src/plugins/fullSearchContext",userPlugin:!1},[OC.name]:{folderName:"src/plugins/fullUserInChatbox",userPlugin:!1},[_C.name]:{folderName:"src/plugins/gameActivityToggle",userPlugin:!1},[UC.name]:{folderName:"src/plugins/gifPaste",userPlugin:!1},[$C.name]:{folderName:"src/plugins/greetStickerPicker",userPlugin:!1},[GC.name]:{folderName:"src/plugins/hideAttachments",userPlugin:!1},[HC.name]:{folderName:"src/plugins/iLoveSpam",userPlugin:!1},[jC.name]:{folderName:"src/plugins/ignoreActivities",userPlugin:!1},[qC.name]:{folderName:"src/plugins/imageFilename",userPlugin:!1},[WC.name]:{folderName:"src/plugins/imageLink",userPlugin:!1},[KC.name]:{folderName:"src/plugins/imageZoom",userPlugin:!1},[QC.name]:{folderName:"src/plugins/implicitRelationships",userPlugin:!1},[Gf.name]:{folderName:"src/plugins/ircColors",userPlugin:!1},[VC.name]:{folderName:"src/plugins/keepCurrentChannel",userPlugin:!1},[eT.name]:{folderName:"src/plugins/loadingQuotes",userPlugin:!1},[oT.name]:{folderName:"src/plugins/memberCount",userPlugin:!1},[vv.name]:{folderName:"src/plugins/mentionAvatars",userPlugin:!1},[dT.name]:{folderName:"src/plugins/messageClickActions",userPlugin:!1},[pT.name]:{folderName:"src/plugins/messageLatency",userPlugin:!1},[fT.name]:{folderName:"src/plugins/messageLinkEmbeds",userPlugin:!1},[vT.name]:{folderName:"src/plugins/messageLogger",userPlugin:!1},[yT.name]:{folderName:"src/plugins/moreQuickReactions",userPlugin:!1},[AT.name]:{folderName:"src/plugins/musicRichPresence",userPlugin:!1},[TT.name]:{folderName:"src/plugins/mutualGroupDMs",userPlugin:!1},[ET.name]:{folderName:"src/plugins/newGuildSettings",userPlugin:!1},[Au.name]:{folderName:"src/plugins/noBlockedMessages",userPlugin:!1},[NT.name]:{folderName:"src/plugins/noDevtoolsWarning",userPlugin:!1},[BT.name]:{folderName:"src/plugins/noF1",userPlugin:!1},[RT.name]:{folderName:"src/plugins/noMaskedUrlPaste",userPlugin:!1},[LT.name]:{folderName:"src/plugins/noMiddleClickPaste",userPlugin:!1},[OT.name]:{folderName:"src/plugins/noMosaic",userPlugin:!1},[FT.name]:{folderName:"src/plugins/noOnboardingDelay",userPlugin:!1},[_T.name]:{folderName:"src/plugins/noPendingCount",userPlugin:!1},[UT.name]:{folderName:"src/plugins/noProfileThemes",userPlugin:!1},[Ic.name]:{folderName:"src/plugins/noReplyMention",userPlugin:!1},[zT.name]:{folderName:"src/plugins/noServerEmojis",userPlugin:!1},[$T.name]:{folderName:"src/plugins/noSystemBadge.discordDesktop",userPlugin:!1},[GT.name]:{folderName:"src/plugins/noTypingAnimation",userPlugin:!1},[HT.name]:{folderName:"src/plugins/noUnblockToJump",userPlugin:!1},[jT.name]:{folderName:"src/plugins/notificationVolume",userPlugin:!1},[qT.name]:{folderName:"src/plugins/onePingPerDM",userPlugin:!1},[nm.name]:{folderName:"src/plugins/openInApp",userPlugin:!1},[KT.name]:{folderName:"src/plugins/overrideForumDefaults",userPlugin:!1},[QT.name]:{folderName:"src/plugins/pauseInvitesForever",userPlugin:!1},[ZT.name]:{folderName:"src/plugins/permissionFreeWill",userPlugin:!1},[Ph.name]:{folderName:"src/plugins/permissionsViewer",userPlugin:!1},[nI.name]:{folderName:"src/plugins/petpet",userPlugin:!1},[rI.name]:{folderName:"src/plugins/pictureInPicture",userPlugin:!1},[Tv.name]:{folderName:"src/plugins/pinDms",userPlugin:!1},[sI.name]:{folderName:"src/plugins/plainFolderIcon",userPlugin:!1},[lI.name]:{folderName:"src/plugins/platformIndicators",userPlugin:!1},[cI.name]:{folderName:"src/plugins/previewMessage",userPlugin:!1},[uI.name]:{folderName:"src/plugins/quickMention",userPlugin:!1},[dI.name]:{folderName:"src/plugins/quickReply",userPlugin:!1},[pI.name]:{folderName:"src/plugins/reactErrorDecoder",userPlugin:!1},[mI.name]:{folderName:"src/plugins/readAllNotificationsButton",userPlugin:!1},[xI.name]:{folderName:"src/plugins/relationshipNotifier",userPlugin:!1},[vI.name]:{folderName:"src/plugins/replaceGoogleSearch",userPlugin:!1},[yI.name]:{folderName:"src/plugins/replyTimestamp",userPlugin:!1},[bI.name]:{folderName:"src/plugins/revealAllSpoilers",userPlugin:!1},[wI.name]:{folderName:"src/plugins/reverseImageSearch",userPlugin:!1},[PI.name]:{folderName:"src/plugins/reviewDB",userPlugin:!1},[MI.name]:{folderName:"src/plugins/roleColorEverywhere",userPlugin:!1},[NI.name]:{folderName:"src/plugins/secretRingTone",userPlugin:!1},[BI.name]:{folderName:"src/plugins/seeSummaries",userPlugin:!1},[LI.name]:{folderName:"src/plugins/sendTimestamps",userPlugin:!1},[FI.name]:{folderName:"src/plugins/serverInfo",userPlugin:!1},[zI.name]:{folderName:"src/plugins/serverListIndicators",userPlugin:!1},[WI.name]:{folderName:"src/plugins/shikiCodeblocks.desktop",userPlugin:!1},[QI.name]:{folderName:"src/plugins/showAllMessageButtons",userPlugin:!1},[ZI.name]:{folderName:"src/plugins/showConnections",userPlugin:!1},[_v.name]:{folderName:"src/plugins/showHiddenChannels",userPlugin:!1},[JI.name]:{folderName:"src/plugins/showHiddenThings",userPlugin:!1},[tm.name]:{folderName:"src/plugins/showMeYourName",userPlugin:!1},[XI.name]:{folderName:"src/plugins/showTimeoutDuration",userPlugin:!1},[eE.name]:{folderName:"src/plugins/silentMessageToggle",userPlugin:!1},[tE.name]:{folderName:"src/plugins/silentTyping",userPlugin:!1},[oE.name]:{folderName:"src/plugins/sortFriendRequests",userPlugin:!1},[nE.name]:{folderName:"src/plugins/spotifyCrack",userPlugin:!1},[rE.name]:{folderName:"src/plugins/spotifyShareCommands",userPlugin:!1},[iE.name]:{folderName:"src/plugins/startupTimings",userPlugin:!1},[aE.name]:{folderName:"src/plugins/stickerPaste",userPlugin:!1},[sE.name]:{folderName:"src/plugins/streamerModeOnStream",userPlugin:!1},[cE.name]:{folderName:"src/plugins/superReactionTweaks",userPlugin:!1},[dE.name]:{folderName:"src/plugins/tenorGifSearch",userPlugin:!1},[mE.name]:{folderName:"src/plugins/textReplace",userPlugin:!1},[fE.name]:{folderName:"src/plugins/themeAttributes",userPlugin:!1},[xE.name]:{folderName:"src/plugins/translate",userPlugin:!1},[vE.name]:{folderName:"src/plugins/typingIndicator",userPlugin:!1},[Gv.name]:{folderName:"src/plugins/typingTweaks",userPlugin:!1},[yE.name]:{folderName:"src/plugins/unindent",userPlugin:!1},[bE.name]:{folderName:"src/plugins/unlockedAvatarZoom",userPlugin:!1},[SE.name]:{folderName:"src/plugins/unsuppressEmbeds",userPlugin:!1},[AE.name]:{folderName:"src/plugins/userMessagesPronouns",userPlugin:!1},[TE.name]:{folderName:"src/plugins/userVoiceShow",userPlugin:!1},[Jf.name]:{folderName:"src/plugins/usrbg",userPlugin:!1},[IE.name]:{folderName:"src/plugins/validReply",userPlugin:!1},[DE.name]:{folderName:"src/plugins/validUser",userPlugin:!1},[PE.name]:{folderName:"src/plugins/vcDoubleClick",userPlugin:!1},[LE.name]:{folderName:"src/plugins/vcNarrator",userPlugin:!1},[OE.name]:{folderName:"src/plugins/viewIcons",userPlugin:!1},[FE.name]:{folderName:"src/plugins/viewRaw",userPlugin:!1},[_E.name]:{folderName:"src/plugins/voiceDownload",userPlugin:!1},[zE.name]:{folderName:"src/plugins/voiceMessages",userPlugin:!1},[$E.name]:{folderName:"src/plugins/volumeBooster",userPlugin:!1},[GE.name]:{folderName:"src/plugins/whoReacted",userPlugin:!1},[jE.name]:{folderName:"src/plugins/xsOverlay",userPlugin:!1},[qE.name]:{folderName:"src/plugins/youtubeAdblock.desktop",userPlugin:!1},[WE.name]:{folderName:"src/equicordplugins/_api/audioPlayer.ts",userPlugin:!1},[KE.name]:{folderName:"src/equicordplugins/_api/extraContextMenusAPI.ts",userPlugin:!1},[QE.name]:{folderName:"src/equicordplugins/_api/headerBar.ts",userPlugin:!1},[ZE.name]:{folderName:"src/equicordplugins/_api/profileCollections.ts",userPlugin:!1},[YE.name]:{folderName:"src/equicordplugins/_api/profileSections.ts",userPlugin:!1},[JE.name]:{folderName:"src/equicordplugins/_api/surfaceClasses.ts",userPlugin:!1},[XE.name]:{folderName:"src/equicordplugins/_api/userArea.ts",userPlugin:!1},[VE.name]:{folderName:"src/equicordplugins/_core/concatenatedModules.tsx",userPlugin:!1},[t7.name]:{folderName:"src/equicordplugins/advancedPermissions",userPlugin:!1},[o7.name]:{folderName:"src/equicordplugins/altKrispSwitch",userPlugin:!1},[ch.name]:{folderName:"src/equicordplugins/alwaysExpandProfiles",userPlugin:!1},[n7.name]:{folderName:"src/equicordplugins/animalese",userPlugin:!1},[r7.name]:{folderName:"src/equicordplugins/atSomeone",userPlugin:!1},[i7.name]:{folderName:"src/equicordplugins/autoJumpToMessage",userPlugin:!1},[s7.name]:{folderName:"src/equicordplugins/autoZipper",userPlugin:!1},[c7.name]:{folderName:"src/equicordplugins/bannersEverywhere",userPlugin:!1},[d7.name]:{folderName:"src/equicordplugins/baseDecoder",userPlugin:!1},[$h.name]:{folderName:"src/equicordplugins/betterActivities",userPlugin:!1},[p7.name]:{folderName:"src/equicordplugins/betterAudioPlayer",userPlugin:!1},[f7.name]:{folderName:"src/equicordplugins/betterBanReasons",userPlugin:!1},[h7.name]:{folderName:"src/equicordplugins/betterBlockedUsers",userPlugin:!1},[x7.name]:{folderName:"src/equicordplugins/betterCommands",userPlugin:!1},[v7.name]:{folderName:"src/equicordplugins/betterForwards",userPlugin:!1},[y7.name]:{folderName:"src/equicordplugins/betterInvites",userPlugin:!1},[b7.name]:{folderName:"src/equicordplugins/betterPlusReacts",userPlugin:!1},[PT.name]:{folderName:"src/equicordplugins/blockKeywords",userPlugin:!1},[S7.name]:{folderName:"src/equicordplugins/blockKrisp",userPlugin:!1},[w7.name]:{folderName:"src/equicordplugins/bypassPinPrompt",userPlugin:!1},[A7.name]:{folderName:"src/equicordplugins/bypassStatus",userPlugin:!1},[I7.name]:{folderName:"src/equicordplugins/channelBadges",userPlugin:!1},[dy.name]:{folderName:"src/equicordplugins/channelTabs",userPlugin:!1},[SD.name]:{folderName:"src/equicordplugins/cleanChannelName",userPlugin:!1},[wD.name]:{folderName:"src/equicordplugins/cleanerChannelGroups",userPlugin:!1},[kD.name]:{folderName:"src/equicordplugins/clickableRoles",userPlugin:!1},[CD.name]:{folderName:"src/equicordplugins/clientSideBlock",userPlugin:!1},[ND.name]:{folderName:"src/equicordplugins/clipUpload.desktop",userPlugin:!1},[BD.name]:{folderName:"src/equicordplugins/clipsEnhancements.discordDesktop",userPlugin:!1},[GD.name]:{folderName:"src/equicordplugins/collapsibleUi",userPlugin:!1},[uP.name]:{folderName:"src/equicordplugins/commandPalette",userPlugin:!1},[dP.name]:{folderName:"src/equicordplugins/contentWarning",userPlugin:!1},[mP.name]:{folderName:"src/equicordplugins/copyProfileColors",userPlugin:!1},[fP.name]:{folderName:"src/equicordplugins/copyStatusUrls",userPlugin:!1},[gP.name]:{folderName:"src/equicordplugins/copyUserMention",userPlugin:!1},[hP.name]:{folderName:"src/equicordplugins/cursorBuddy",userPlugin:!1},[yP.name]:{folderName:"src/equicordplugins/customFolderIcons",userPlugin:!1},[wP.name]:{folderName:"src/equicordplugins/customSounds",userPlugin:!1},[AP.name]:{folderName:"src/equicordplugins/customStatusTimeouts",userPlugin:!1},[Cy.name]:{folderName:"src/equicordplugins/customTimestamps",userPlugin:!1},[JC.name]:{folderName:"src/equicordplugins/customUserColors",userPlugin:!1},[pm.name]:{folderName:"src/equicordplugins/declutter",userPlugin:!1},[CP.name]:{folderName:"src/equicordplugins/disableCameras",userPlugin:!1},[IP.name]:{folderName:"src/equicordplugins/discordDevBanner",userPlugin:!1},[EP.name]:{folderName:"src/equicordplugins/downloadAllAttachments",userPlugin:!1},[PP.name]:{folderName:"src/equicordplugins/dragFavoriteEmotes",userPlugin:!1},[FP.name]:{folderName:"src/equicordplugins/dragify",userPlugin:!1},[_P.name]:{folderName:"src/equicordplugins/equicordHelper",userPlugin:!1},[Yp.name]:{folderName:"src/equicordplugins/equicordToolbox",userPlugin:!1},[UP.name]:{folderName:"src/equicordplugins/equissant",userPlugin:!1},[zP.name]:{folderName:"src/equicordplugins/exitSounds",userPlugin:!1},[HP.name]:{folderName:"src/equicordplugins/exportMessages",userPlugin:!1},[jP.name]:{folderName:"src/equicordplugins/fastDeleteChannels",userPlugin:!1},[QP.name]:{folderName:"src/equicordplugins/favouriteAnything",userPlugin:!1},[aM.name]:{folderName:"src/equicordplugins/fileUpload",userPlugin:!1},[uM.name]:{folderName:"src/equicordplugins/findReply",userPlugin:!1},[ck.name]:{folderName:"src/equicordplugins/fixFileExtensions",userPlugin:!1},[dM.name]:{folderName:"src/equicordplugins/followVoiceUser",userPlugin:!1},[mM.name]:{folderName:"src/equicordplugins/fontLoader",userPlugin:!1},[fM.name]:{folderName:"src/equicordplugins/frequentQuickSwitcher",userPlugin:!1},[gM.name]:{folderName:"src/equicordplugins/friendCodes",userPlugin:!1},[xM.name]:{folderName:"src/equicordplugins/friendTags",userPlugin:!1},[vM.name]:{folderName:"src/equicordplugins/friendshipRanks",userPlugin:!1},[yM.name]:{folderName:"src/equicordplugins/fullVcPfp",userPlugin:!1},[CM.name]:{folderName:"src/equicordplugins/ghosted",userPlugin:!1},[DM.name]:{folderName:"src/equicordplugins/gifCollections",userPlugin:!1},[GM.name]:{folderName:"src/equicordplugins/gifMaker",userPlugin:!1},[tN.name]:{folderName:"src/equicordplugins/githubRepos",userPlugin:!1},[j0.name]:{folderName:"src/equicordplugins/globalBadges",userPlugin:!1},[oN.name]:{folderName:"src/equicordplugins/googleThat",userPlugin:!1},[nN.name]:{folderName:"src/equicordplugins/guildPickerDumper",userPlugin:!1},[rN.name]:{folderName:"src/equicordplugins/hideChatButtons",userPlugin:!1},[aN.name]:{folderName:"src/equicordplugins/hideMessages",userPlugin:!1},[sN.name]:{folderName:"src/equicordplugins/hideServers",userPlugin:!1},[lN.name]:{folderName:"src/equicordplugins/homeTyping",userPlugin:!1},[cN.name]:{folderName:"src/equicordplugins/hopOn",userPlugin:!1},[uN.name]:{folderName:"src/equicordplugins/husk",userPlugin:!1},[pN.name]:{folderName:"src/equicordplugins/iRememberYou",userPlugin:!1},[hN.name]:{folderName:"src/equicordplugins/iconViewer",userPlugin:!1},[xN.name]:{folderName:"src/equicordplugins/idleAutoRestart",userPlugin:!1},[bN.name]:{folderName:"src/equicordplugins/ignoreCalls",userPlugin:!1},[wN.name]:{folderName:"src/equicordplugins/inRole",userPlugin:!1},[AN.name]:{folderName:"src/equicordplugins/ingtoninator",userPlugin:!1},[CN.name]:{folderName:"src/equicordplugins/instantScreenshare",userPlugin:!1},[IN.name]:{folderName:"src/equicordplugins/invisibleChat.desktop",userPlugin:!1},[EN.name]:{folderName:"src/equicordplugins/inviteDefaults",userPlugin:!1},[DN.name]:{folderName:"src/equicordplugins/jumpTo",userPlugin:!1},[BN.name]:{folderName:"src/equicordplugins/keyboardNavigation",userPlugin:!1},[RN.name]:{folderName:"src/equicordplugins/keyboardSounds",userPlugin:!1},[FN.name]:{folderName:"src/equicordplugins/keywordNotify",userPlugin:!1},[_N.name]:{folderName:"src/equicordplugins/lastActive",userPlugin:!1},[zN.name]:{folderName:"src/equicordplugins/limitlessScreenshare",userPlugin:!1},[gx.name]:{folderName:"src/equicordplugins/loginWithQR",userPlugin:!1},[HN.name]:{folderName:"src/equicordplugins/markdownTables",userPlugin:!1},[WN.name]:{folderName:"src/equicordplugins/mediaPlaybackSpeed",userPlugin:!1},[KN.name]:{folderName:"src/equicordplugins/messageBurst",userPlugin:!1},[QN.name]:{folderName:"src/equicordplugins/messageColors",userPlugin:!1},[JN.name]:{folderName:"src/equicordplugins/messageFetchTimer",userPlugin:!1},[XN.name]:{folderName:"src/equicordplugins/messageLinkTooltip",userPlugin:!1},[hB.name]:{folderName:"src/equicordplugins/messageLoggerEnhanced",userPlugin:!1},[xB.name]:{folderName:"src/equicordplugins/messageNotifier",userPlugin:!1},[yB.name]:{folderName:"src/equicordplugins/messagePeek",userPlugin:!1},[AB.name]:{folderName:"src/equicordplugins/messageTranslate",userPlugin:!1},[kB.name]:{folderName:"src/equicordplugins/micLoopbackTester",userPlugin:!1},[CB.name]:{folderName:"src/equicordplugins/middleClickTweaks",userPlugin:!1},[TB.name]:{folderName:"src/equicordplugins/moreCommands",userPlugin:!1},[RB.name]:{folderName:"src/equicordplugins/moreStickers",userPlugin:!1},[vb.name]:{folderName:"src/equicordplugins/moreUserTags",userPlugin:!1},[LB.name]:{folderName:"src/equicordplugins/moyai",userPlugin:!1},[bb.name]:{folderName:"src/equicordplugins/musicControls",userPlugin:!1},[WB.name]:{folderName:"src/equicordplugins/neverPausePreviews",userPlugin:!1},[ZB.name]:{folderName:"src/equicordplugins/newPluginsManager",userPlugin:!1},[YB.name]:{folderName:"src/equicordplugins/noNitroUpsell",userPlugin:!1},[JB.name]:{folderName:"src/equicordplugins/noPushToTalk",userPlugin:!1},[XB.name]:{folderName:"src/equicordplugins/noRPC.discordDesktop",userPlugin:!1},[VB.name]:{folderName:"src/equicordplugins/noRoleHeaders",userPlugin:!1},[eR.name]:{folderName:"src/equicordplugins/normalizeMessageLinks",userPlugin:!1},[tR.name]:{folderName:"src/equicordplugins/notificationTitle.discordDesktop",userPlugin:!1},[oR.name]:{folderName:"src/equicordplugins/orbolayBridge",userPlugin:!1},[nR.name]:{folderName:"src/equicordplugins/partyMode",userPlugin:!1},[rR.name]:{folderName:"src/equicordplugins/pendingFriendRequest",userPlugin:!1},[iR.name]:{folderName:"src/equicordplugins/pinIcon",userPlugin:!1},[aR.name]:{folderName:"src/equicordplugins/pingNotifications",userPlugin:!1},[sR.name]:{folderName:"src/equicordplugins/platformSpoofer",userPlugin:!1},[uR.name]:{folderName:"src/equicordplugins/polishWording",userPlugin:!1},[vR.name]:{folderName:"src/equicordplugins/profileSets",userPlugin:!1},[NR.name]:{folderName:"src/equicordplugins/questify",userPlugin:!1},[OR.name]:{folderName:"src/equicordplugins/quickThemeSwitcher.discordDesktop",userPlugin:!1},[_R.name]:{folderName:"src/equicordplugins/quoter",userPlugin:!1},[zR.name]:{folderName:"src/equicordplugins/randomVoice",userPlugin:!1},[HR.name]:{folderName:"src/equicordplugins/recentDMSwitcher",userPlugin:!1},[YR.name]:{folderName:"src/equicordplugins/remix",userPlugin:!1},[VR.name]:{folderName:"src/equicordplugins/repeatMessages",userPlugin:!1},[eL.name]:{folderName:"src/equicordplugins/replyPingControl",userPlugin:!1},[tL.name]:{folderName:"src/equicordplugins/richMagnetLinks",userPlugin:!1},[cL.name]:{folderName:"src/equicordplugins/richPresence",userPlugin:!1},[pL.name]:{folderName:"src/equicordplugins/rpcEditor",userPlugin:!1},[mL.name]:{folderName:"src/equicordplugins/saveFavoriteGIFs",userPlugin:!1},[wL.name]:{folderName:"src/equicordplugins/scheduledMessages",userPlugin:!1},[AL.name]:{folderName:"src/equicordplugins/searchFix",userPlugin:!1},[kL.name]:{folderName:"src/equicordplugins/sedEnhanced",userPlugin:!1},[CL.name]:{folderName:"src/equicordplugins/sekaiStickers",userPlugin:!1},[TL.name]:{folderName:"src/equicordplugins/serverSearch",userPlugin:!1},[IL.name]:{folderName:"src/equicordplugins/showBadgesInChat",userPlugin:!1},[DL.name]:{folderName:"src/equicordplugins/showMessageEmbeds",userPlugin:!1},[PL.name]:{folderName:"src/equicordplugins/showResourceChannels",userPlugin:!1},[NL.name]:{folderName:"src/equicordplugins/showRolesInChat",userPlugin:!1},[BL.name]:{folderName:"src/equicordplugins/showSongName",userPlugin:!1},[OL.name]:{folderName:"src/equicordplugins/sidebarChat",userPlugin:!1},[FL.name]:{folderName:"src/equicordplugins/signature",userPlugin:!1},[_L.name]:{folderName:"src/equicordplugins/silenceUsers",userPlugin:!1},[UL.name]:{folderName:"src/equicordplugins/snowfall",userPlugin:!1},[n0.name]:{folderName:"src/equicordplugins/songLink.desktop",userPlugin:!1},[GF.name]:{folderName:"src/equicordplugins/songSpotlight.desktop",userPlugin:!1},[HF.name]:{folderName:"src/equicordplugins/splitLargeMessages",userPlugin:!1},[jF.name]:{folderName:"src/equicordplugins/statusPresets",userPlugin:!1},[KF.name]:{folderName:"src/equicordplugins/statusWhileActive.desktop",userPlugin:!1},[QF.name]:{folderName:"src/equicordplugins/steamStatusSync",userPlugin:!1},[ZF.name]:{folderName:"src/equicordplugins/stickerBlocker",userPlugin:!1},[YF.name]:{folderName:"src/equicordplugins/stopAutoUnread",userPlugin:!1},[VF.name]:{folderName:"src/equicordplugins/streaks",userPlugin:!1},[e_.name]:{folderName:"src/equicordplugins/streamingCodecDisabler",userPlugin:!1},[t_.name]:{folderName:"src/equicordplugins/talkInReverse",userPlugin:!1},[o_.name]:{folderName:"src/equicordplugins/themeLibrary",userPlugin:!1},[n_.name]:{folderName:"src/equicordplugins/tidalEmbeds",userPlugin:!1},[a_.name]:{folderName:"src/equicordplugins/timezones",userPlugin:!1},[s_.name]:{folderName:"src/equicordplugins/title",userPlugin:!1},[p_.name]:{folderName:"src/equicordplugins/toastNotifications",userPlugin:!1},[m_.name]:{folderName:"src/equicordplugins/toggleVideoBind",userPlugin:!1},[g_.name]:{folderName:"src/equicordplugins/toneIndicators",userPlugin:!1},[x_.name]:{folderName:"src/equicordplugins/translatePlus",userPlugin:!1},[y_.name]:{folderName:"src/equicordplugins/triviaAI",userPlugin:!1},[S_.name]:{folderName:"src/equicordplugins/unitConverter",userPlugin:!1},[A_.name]:{folderName:"src/equicordplugins/universalMention",userPlugin:!1},[k_.name]:{folderName:"src/equicordplugins/unlimitedAccounts",userPlugin:!1},[C_.name]:{folderName:"src/equicordplugins/unreadBadgeCount",userPlugin:!1},[T_.name]:{folderName:"src/equicordplugins/urlHighlighter",userPlugin:!1},[P_.name]:{folderName:"src/equicordplugins/userpfp",userPlugin:!1},[M_.name]:{folderName:"src/equicordplugins/vcPanelSettings",userPlugin:!1},[N_.name]:{folderName:"src/equicordplugins/voiceButtons",userPlugin:!1},[L_.name]:{folderName:"src/equicordplugins/voiceChannelLog",userPlugin:!1},[O_.name]:{folderName:"src/equicordplugins/voiceChatUtils",userPlugin:!1},[F_.name]:{folderName:"src/equicordplugins/voiceJoinMessages",userPlugin:!1},[U_.name]:{folderName:"src/equicordplugins/voiceMessageTranscriber.desktop",userPlugin:!1},[z_.name]:{folderName:"src/equicordplugins/voiceRejoin",userPlugin:!1},[G_.name]:{folderName:"src/equicordplugins/voiceStats",userPlugin:!1},[H_.name]:{folderName:"src/equicordplugins/waitForSlot",userPlugin:!1},[q_.name]:{folderName:"src/equicordplugins/webpackTarball",userPlugin:!1},[K_.name]:{folderName:"src/equicordplugins/whitelistedEmojis",userPlugin:!1},[Q_.name]:{folderName:"src/equicordplugins/whosWatching",userPlugin:!1},[Y_.name]:{folderName:"src/equicordplugins/wigglyText",userPlugin:!1},[J_.name]:{folderName:"src/equicordplugins/writeUpperCase",userPlugin:!1},[oU.name]:{folderName:"src/equicordplugins/zipPreview",userPlugin:!1}},Tw={WebRichPresence:"web",DevCompanion:"dev",DisableDeepLinks:"web",WebContextMenus:"web",WebKeybinds:"web",WebPWA:"browser",WebScreenShare:"browser",WebScreenShareFixes:"web",ElementHighlighter:"dev",EquibopStreamFixes:"equibop",ScreenRecorder:"equibop",UserpluginInstaller:"dev"}});var _Ct={};Bt(_Ct,{Api:()=>XG,Components:()=>IW,PlainSettings:()=>Wn,Plugins:()=>uw,Settings:()=>Me,Updater:()=>kG,Util:()=>Zq,Webpack:()=>Bce,WebpackPatcher:()=>U$});d();Na();on();Jt();Ih();Su();ru();var Bce={};Bt(Bce,{ChunkIdsRegex:()=>kS,Common:()=>tf,DefaultExtractAndLoadChunksRegex:()=>af,LazyComponentWebpack:()=>Sue,_blacklistBadModules:()=>g3,_initWebpack:()=>bS,_resolveReady:()=>vS,cache:()=>cc,extract:()=>CS,extractAndLoadChunks:()=>tz,extractAndLoadChunksLazy:()=>vr,factoryListeners:()=>D0,filters:()=>Re,find:()=>Ni,findAll:()=>nf,findBulk:()=>h3,findByCode:()=>rf,findByCodeLazy:()=>Oe,findByProps:()=>P0,findByPropsLazy:()=>Ae,findComponentByCode:()=>v3,findComponentByCodeLazy:()=>he,findComponentLazy:()=>c1,findCssClasses:()=>VU,findCssClassesLazy:()=>Ie,findExportedComponentLazy:()=>wS,findLazy:()=>qn,findModuleFactory:()=>SS,findModuleId:()=>sd,findStore:()=>M0,findStoreLazy:()=>x3,fluxStores:()=>ad,handleModuleNotFound:()=>Xc,lazyWebpackSearchHistory:()=>bue,makeClassNameRegex:()=>m3,mapMangledCssClasses:()=>AS,mapMangledModule:()=>ez,mapMangledModuleLazy:()=>Qo,moduleListeners:()=>f3,onceReady:()=>of,proxyLazyWebpack:()=>ln,search:()=>u1,stringMatches:()=>yS,waitFor:()=>Zo,waitForSubscriptions:()=>E0,wreq:()=>vo});d();C();d();le();K3();nl();Fi();os();O();we();R();C();Io();Af();Fa();Jt();j();HH();hd();ru();K3();async function LCt(){let e=await vt("Vencord_cloudSecret");if(!e){Me.cloud.authenticated&&(At({title:"Cloud Settings",body:"Cloud sync was disabled because this account isn't connected to the cloud App. You can enable it again by connecting this account in Cloud Settings. (note: it will store your preferences separately)",color:"var(--yellow-360)",onClick:()=>un.openUserSettings("equicord_cloud_panel")}),Me.cloud.authenticated=!1);return}if(Me.cloud.authenticated&&!e){At({title:"Cloud Integrations",body:"We've noticed you have cloud integrations enabled in another client! Due to limitations, you will need to re-authenticate to continue using them. Click here to go to the settings page to do so!",color:"var(--yellow-360)",onClick:()=>un.openUserSettings("equicord_cloud_panel"),noPersist:!0});return}Me.cloud.settingsSync&&Me.cloud.authenticated&&yme()!=="manual"&&(bme()&&O9("push")?await _w():O9("pull")&&await F9(!1)&&At({title:"Cloud Settings",body:"Your settings have been updated! Click here to restart to fully apply changes!",color:"var(--green-360)",onClick:ai}));let t=Jo(async()=>{Me.cloud.settingsSync&&Me.cloud.authenticated&&O9("push")&&await _w()},6e4);to.addGlobalChangeListener(()=>{Sme(),t()})}var Q2=!1;async function zKe(){let e=t=>{Q2||(Q2=!0,setTimeout(()=>At({permanent:!0,noPersist:!0,...t}),1e4))};try{let t=await Sc();if(VencordNative.tray.setUpdateState(t),!t)return;if(Me.autoUpdate){if(await Hp(),Me.autoUpdateNotification){if(Q2)return;Q2=!0,sa("Equicord has been updated!","Restart",ai)}return}if(Q2)return;Q2=!0,sa("A new version of Equicord is available!","View Update",()=>xd(Id))}catch(t){Hl.error("Failed to check for updates",t)}}function OCt(){VencordNative.tray.onCheckUpdates(async()=>{try{let e=await Sc();VencordNative.tray.setUpdateState(e),e?sa("An Equicord update is available!","View Update",()=>xd(Id)):sa("No updates available, you're on the latest version!","OK",au)}catch(e){Hl.error("Failed to check for updates from tray",e),sa("Failed to check for updates, check the console for more info","OK",au)}}),VencordNative.tray.onRepair(async()=>{try{await Hp(),ai()}catch(e){Hl.error("Failed to repair Equicord",e)}}),VencordNative.tray.setUpdateState(Sf)}async function FCt(){await of,cw("WebpackReady"),LCt(),OCt(),zKe(),Me.autoUpdate&&!Me.autoUpdateNotification&&setInterval(zKe,1e3*60*30)}vG();N$();cw("Init");FCt();document.addEventListener("DOMContentLoaded",()=>{cw("DOMContentLoaded"),Me.winNativeTitleBar&&$l&&(bs("vencord-native-titlebar-style",gd).textContent="[class*=titleBar]{display: none!important}")},{once:!0});return Jx(_Ct);})(); //# sourceURL=file:///VencordRenderer //# sourceMappingURL=vencord://renderer.js.map /*! For license information please see renderer.js.LEGAL.txt */ /** * discord-intl * * @copyright 2024 Discord, Inc. * @link https://github.com/discord/discord-intl * @license MIT */ /*! * idb-keyval v6.2.0 * Copyright 2016, Jake Archibald * Copyright 2022, Vendicated * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /*! * BetterDiscord addon meta parser * Copyright 2023 BetterDiscord contributors * Copyright 2023 Vendicated and Vencord contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * apng-canvas v2.1.2 - heavily modified and converted to Typescript * * @copyright 2011-2019 David Mzareulyan * @link https://github.com/davidmz/apng-canvas * @license MIT */ /*! * Vencord, a modification for Discord's desktop app * Copyright (c) 2022 Vendicated and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ Bundled license information: virtual-merge/dist/index.mjs: /*! * virtual-merge * Copyright (c) 2023 Vendicated * SPDX-License-Identifier: MIT */ is-buffer/index.js: /*! * Determine if an object is a Buffer * * @author Feross Aboukhadijeh * @license MIT */ { "version": 3, "sources": ["../../scripts/build/inject/react.mjs", "../../src/plugins/_api/badges/fixDiscordBadgePadding.css", "../../src/utils/lazy.ts", "../../src/utils/lazyReact.tsx", "../../src/utils/Logger.ts", "../../src/utils/css.ts", "../../src/components/margins.ts", "../../src/utils/margins.ts", "../../src/components/ErrorCard.css", "../../src/components/BaseText.css", "../../src/components/BaseText.tsx", "../../src/components/Button.css", "../../src/components/iconStyles.css", "../../src/utils/clipboard.ts", "../../node_modules/.pnpm/@intrnl+xxhash64@0.1.2/node_modules/@intrnl/xxhash64/src/index.js", "../../src/utils/intlHash.ts", "../../src/utils/discord.tsx", "../../src/components/Icons.tsx", "../../src/components/Link.css", "../../src/components/Link.tsx", "../../src/components/Button.tsx", "../../src/components/Divider.css", "../../src/components/Divider.tsx", "../../src/components/FormSwitch.css", "../../src/components/Flex.tsx", "../../src/components/Span.tsx", "../../src/components/Switch.css", "../../src/components/Switch.tsx", "../../src/components/FormSwitch.tsx", "../../src/components/Heading.css", "../../src/components/Heading.tsx", "../../src/components/Paragraph.tsx", "../../src/components/TooltipContainer.tsx", "../../src/components/TooltipFallback.tsx", "../../src/debug/Tracer.ts", "../../src/utils/patches.ts", "../../src/utils/guards.ts", "../../src/utils/text.ts", "../../src/webpack/webpack.ts", "../../src/utils/react.tsx", "../../src/webpack/common/internal.tsx", "../../src/webpack/common/components.ts", "../../src/webpack/common/menu.ts", "../../src/webpack/common/modals.ts", "../../src/webpack/common/react.ts", "../../src/webpack/common/stores.ts", "../../src/webpack/common/userSettings.ts", "../../src/webpack/common/utils.ts", "../../src/webpack/common/index.ts", "../../src/utils/constants.ts", "../../src/utils/misc.ts", "../../src/components/ErrorCard.tsx", "../../src/components/ErrorBoundary.tsx", "../../src/equicordplugins/globalBadges/styles.css", "../../src/utils/types.ts", "../../src/shared/SettingsStore.ts", "../../src/utils/mergeDefaults.ts", "../../src/api/Settings.ts", "../../src/equicordplugins/globalBadges/utils.ts", "../../src/equicordplugins/globalBadges/settings.tsx", "../../src/equicordplugins/globalBadges/index.tsx", "../../src/api/ChatButton.css", "../../src/api/ContextMenu.ts", "../../src/api/ChatButtons.tsx", "../../src/api/Commands/commandHelpers.ts", "../../packages/discord-types/enums/activity.ts", "../../packages/discord-types/enums/application.ts", "../../packages/discord-types/enums/channel.ts", "../../packages/discord-types/enums/commands.ts", "../../packages/discord-types/enums/guild.ts", "../../packages/discord-types/enums/messages.ts", "../../packages/discord-types/enums/misc.ts", "../../packages/discord-types/enums/quests.ts", "../../packages/discord-types/enums/settings.ts", "../../packages/discord-types/enums/user.ts", "../../packages/discord-types/enums/voice.ts", "../../packages/discord-types/enums/index.ts", "../../src/api/Commands/types.ts", "../../src/api/Commands/index.ts", "../../src/api/MemberListDecorators.tsx", "../../src/api/MessageAccessories.tsx", "../../src/api/MessageDecorations.tsx", "../../src/api/MessageEvents.ts", "../../src/api/MessagePopover.tsx", "../../src/api/NicknameIcons.tsx", "../../src/api/Styles.ts", "../../src/utils/onlyOnce.ts", "../../src/debug/reporterData.ts", "../../src/webpack/patchWebpack.ts", "../../src/api/AudioPlayer.ts", "../../src/api/GifPickerContextMenu.tsx", "../../src/api/HeaderBar.tsx", "../../src/api/ProfileCollections.tsx", "../../src/api/ProfileSections.tsx", "../../src/api/UserArea.tsx", "../../src/api/PluginManager.ts", "../../src/api/Badges.ts", "../../src/components/settings/tabs/styles.css", "git-hash:~git-hash", "../../src/utils/native.ts", "../../src/utils/updater.ts", "../../src/components/handleComponentFailed.ts", "../../src/components/settings/tabs/BaseTab.tsx", "../../src/components/settings/tabs/changelog/styles.css", "../../src/components/Card.css", "../../src/components/Card.tsx", "../../src/components/settings/tabs/updater/runWithDispatch.tsx", "../../src/components/settings/tabs/updater/Components.tsx", "../../src/api/DataStore/index.ts", "../../src/api/MessageUpdater.ts", "../../src/api/Notices.tsx", "../../src/utils/Queue.ts", "../../src/api/Notifications/styles.css", "../../src/api/Notifications/NotificationComponent.tsx", "../../src/components/settings/tabs/vencord/NotificationSettings.tsx", "../../node_modules/.pnpm/nanoid@5.1.16/node_modules/nanoid/url-alphabet/index.js", "../../node_modules/.pnpm/nanoid@5.1.16/node_modules/nanoid/index.browser.js", "../../src/api/Notifications/notificationLog.tsx", "../../src/api/Notifications/Notifications.tsx", "../../src/api/Notifications/index.ts", "../../src/api/ServerList.tsx", "../../src/api/SurfaceClasses.ts", "../../src/api/Themes.ts", "../../src/api/UserSettings.ts", "../../src/api/index.ts", "../../src/components/settings/tabs/changelog/changelogManager.ts", "../../src/components/settings/AddonCard.css", "../../src/components/Badge.css", "../../src/components/Badge.tsx", "../../src/components/settings/AddonCard.tsx", "../../src/components/settings/tabs/plugins/PluginModal.css", "../../src/shared/debounce.ts", "git-remote:~git-remote", "../../src/shared/vencordUserAgent.ts", "../../src/components/settings/tabs/plugins/components/styles.css", "../../src/components/settings/tabs/plugins/components/Common.tsx", "../../src/components/settings/tabs/plugins/components/BooleanSetting.tsx", "../../src/components/settings/tabs/plugins/components/ComponentSetting.tsx", "../../src/components/settings/tabs/plugins/components/NumberSetting.tsx", "../../src/components/settings/tabs/plugins/components/SelectSetting.tsx", "../../src/components/settings/tabs/plugins/components/SliderSetting.tsx", "../../src/components/settings/tabs/plugins/components/TextSetting.tsx", "../../src/components/settings/tabs/plugins/components/index.ts", "../../src/components/settings/tabs/plugins/ContributorModal.css", "../../src/components/settings/tabs/plugins/PluginModalButtons.css", "../../src/components/settings/tabs/plugins/PluginModalButtons.tsx", "../../src/components/settings/tabs/plugins/ContributorModal.tsx", "../../src/components/settings/tabs/plugins/PluginModal.tsx", "../../src/components/settings/tabs/plugins/PluginCard.tsx", "../../src/utils/ChangeList.ts", "../../src/components/settings/tabs/changelog/NewPluginsSection.tsx", "../../src/components/settings/tabs/changelog/index.tsx", "../../src/components/CodeBlock.tsx", "../../src/components/settings/tabs/patchHelper/FullPatchInput.tsx", "../../src/components/settings/tabs/patchHelper/PatchPreview.tsx", "../../src/components/settings/tabs/patchHelper/ReplacementInput.tsx", "../../src/components/settings/tabs/patchHelper/index.tsx", "../../src/components/settings/tabs/plugins/styles.css", "../../src/components/Heart.tsx", "../../src/components/settings/DonateButton.tsx", "../../src/components/settings/QuickAction.css", "../../src/components/settings/QuickAction.tsx", "../../src/components/settings/SpecialCard.css", "../../src/components/settings/SpecialCard.tsx", "../../src/components/settings/index.ts", "../../src/components/settings/tabs/plugins/PluginStatCards.tsx", "../../src/components/settings/tabs/plugins/UIElements.css", "../../src/components/settings/tabs/plugins/UIElements.tsx", "../../src/components/settings/tabs/plugins/index.tsx", "../../src/utils/web.ts", "../../src/api/SettingsSync/offline.ts", "../../src/components/Notice.css", "../../src/components/Notice.tsx", "../../src/components/settings/tabs/sync/BackupAndRestoreTab.tsx", "../../src/api/SettingsSync/cloudSetup.tsx", "../../src/utils/localStorage.ts", "../../node_modules/.pnpm/fflate@0.8.3/node_modules/fflate/esm/browser.js", "../../src/api/SettingsSync/cloudSync.ts", "../../src/components/CheckedTextInput.tsx", "../../src/components/settings/tabs/sync/CloudTab.tsx", "../../src/components/settings/tabs/themes/styles.css", "../../src/main/themes/index.ts", "../../src/components/settings/tabs/themes/OnlineThemes.tsx", "../../src/components/settings/tabs/themes/QuickActions.tsx", "../../src/components/settings/EditableText.tsx", "../../src/components/settings/tabs/plugins/components/truncateText.tsx", "../../src/components/settings/OnlineThemeCard.tsx", "../../src/components/settings/tabs/themes/ThemeCard.tsx", "../../src/components/settings/tabs/themes/index.tsx", "../../src/components/settings/tabs/updater/index.tsx", "../../src/components/settings/tabs/vencord/VencordTab.css", "../../src/plugins/_core/settings.tsx", "../../src/components/settings/tabs/vencord/DonateButton.tsx", "../../src/components/settings/tabs/vencord/MacVibrancySettings.tsx", "../../src/components/settings/tabs/vencord/WindowsMaterialSettings.tsx", "../../src/components/settings/tabs/vencord/index.tsx", "../../src/components/settings/tabs/index.ts", "../../src/plugins/_api/badges/modals.tsx", "../../src/plugins/_api/badges/index.tsx", "../../src/plugins/_api/chatButtons.ts", "../../src/plugins/_api/commands.ts", "../../src/plugins/_api/contextMenu.ts", "../../src/plugins/_api/dynamicImageModalApi.ts", "managed-style:src/plugins/_api/memberListDecorators/style.css", "../../src/plugins/_api/memberListDecorators/index.tsx", "../../src/plugins/_api/messageAccessories.ts", "managed-style:src/plugins/_api/messageDecorations/style.css", "../../src/plugins/_api/messageDecorations/index.tsx", "../../src/plugins/_api/messageEvents.ts", "../../src/plugins/_api/messagePopover.ts", "../../src/plugins/_api/messageUpdater.ts", "../../src/plugins/_api/nicknameIcons.ts", "../../src/plugins/_api/notices.ts", "../../src/plugins/_api/serverList.ts", "../../src/plugins/_api/userSettings.ts", "../../src/plugins/_core/concatenatedComponentExtractor.tsx", "../../src/plugins/_core/noTrack.ts", "../../src/equicordplugins/equicordHelper/utils.tsx", "../../src/plugins/customIdle/index.ts", "../../src/plugins/_core/supportHelper.tsx", "../../src/equicordplugins/alwaysExpandProfiles/index.ts", "../../src/plugins/accountPanelServerProfile/index.tsx", "../../src/plugins/alwaysAnimate/index.ts", "../../src/plugins/alwaysExpandRoles/index.ts", "../../src/plugins/alwaysTrust/index.tsx", "../../src/equicordplugins/fixFileExtensions/index.tsx", "../../src/plugins/anonymiseFileNames/index.tsx", "../../src/plugins/appleMusic.desktop/index.tsx", "../../src/plugins/autoDndWhilePlaying.discordDesktop/index.ts", "../../src/plugins/betterFolders/style.css", "../../src/plugins/betterFolders/FolderSideBar.tsx", "../../src/plugins/betterFolders/index.tsx", "../../src/plugins/betterGifAltText/index.ts", "../../src/plugins/betterGifPicker/index.ts", "../../src/plugins/betterRoleContext/index.tsx", "../../src/plugins/betterRoleDot/index.ts", "../../src/plugins/betterSessions/styles.css", "../../src/plugins/betterSessions/components/icons.tsx", "../../src/plugins/betterSessions/utils.ts", "../../src/plugins/betterSessions/components/RenameModal.tsx", "../../src/plugins/betterSessions/components/RenameButton.tsx", "../../src/plugins/betterSessions/index.tsx", "../../src/equicordplugins/equicordToolbox/styles.css", "../../src/equicordplugins/equicordToolbox/index.tsx", "../../src/equicordplugins/equicordToolbox/menu.tsx", "managed-style:src/plugins/betterSettings/fullHeightContext.css", "../../src/plugins/betterSettings/index.tsx", "../../src/plugins/betterUploadButton/index.ts", "../../src/plugins/biggerStreamPreview/index.tsx", "../../src/plugins/blurNsfw/index.ts", "managed-style:src/plugins/callTimer/alignedChatInputFix.css", "../../src/plugins/callTimer/TimerIcon.tsx", "../../src/plugins/callTimer/timerText.tsx", "../../src/plugins/callTimer/Timer.tsx", "../../src/plugins/callTimer/index.tsx", "../../src/plugins/characterCounter/style.css", "../../src/plugins/characterCounter/index.tsx", "../../src/plugins/clearURLs/index.ts", "../../src/plugins/clientTheme/clientTheme.css", "../../src/plugins/clientTheme/utils/colorUtils.ts", "../../src/plugins/clientTheme/utils/styleUtils.ts", "../../src/plugins/clientTheme/components/Settings.tsx", "../../src/plugins/clientTheme/index.tsx", "../../src/plugins/colorSighted/index.ts", "../../src/plugins/consoleJanitor/index.tsx", "../../node_modules/.pnpm/yocto-queue@1.2.2/node_modules/yocto-queue/index.js", "../../node_modules/.pnpm/p-limit@7.3.0/node_modules/p-limit/index.js", "../../src/debug/loadLazyChunks.ts", "../../src/plugins/consoleShortcuts/index.ts", "../../src/plugins/copyEmojiMarkdown/index.tsx", "../../src/plugins/copyFileContents/style.css", "../../src/plugins/copyFileContents/index.tsx", "../../src/plugins/expressionCloner/index.tsx", "../../src/plugins/copyStickerLinks/index.tsx", "../../src/plugins/copyUserURLs/index.tsx", "../../src/plugins/crashHandler/index.ts", "../../src/plugins/customCommands/styles.css", "../../src/components/ExpandableCard.css", "../../src/components/ExpandableCard.tsx", "../../src/plugins/customCommands/SettingsTagList.tsx", "../../src/plugins/customCommands/settings.ts", "../../src/plugins/customCommands/CreateTagModal.tsx", "../../src/plugins/customCommands/index.ts", "../../src/plugins/customRPC/settings.css", "../../src/plugins/customRPC/RpcSettings.tsx", "../../src/plugins/customRPC/index.tsx", "../../src/plugins/dearrow/styles.css", "../../src/plugins/dearrow/index.tsx", "../../src/plugins/decor/ui/styles.css", "../../src/plugins/decor/lib/constants.ts", "../../src/plugins/decor/lib/stores/AuthorizationStore.tsx", "../../src/plugins/decor/lib/api.ts", "../../src/plugins/decor/lib/utils/decoration.ts", "../../src/plugins/decor/lib/stores/UsersDecorationsStore.ts", "../../src/plugins/decor/lib/stores/CurrentUserDecorationsStore.ts", "../../src/plugins/decor/ui/index.ts", "../../src/plugins/decor/ui/components/index.ts", "../../src/plugins/decor/ui/components/DecorationGridCreate.tsx", "../../src/plugins/decor/ui/components/DecorationGridNone.tsx", "../../src/plugins/decor/ui/components/DecorationContextMenu.tsx", "../../src/plugins/decor/ui/components/DecorDecorationGridDecoration.tsx", "../../src/plugins/decor/ui/components/Grid.tsx", "../../src/plugins/decor/ui/components/SectionedGridList.tsx", "../../src/plugins/decor/ui/modals/CreateDecorationModal.tsx", "../../src/plugins/decor/ui/modals/GuidelinesModal.tsx", "../../src/plugins/decor/ui/modals/ChangeDecorationModal.tsx", "../../src/plugins/decor/ui/components/DecorSection.tsx", "../../src/plugins/decor/settings.tsx", "../../src/plugins/decor/index.tsx", "../../src/plugins/disableCallIdle/index.ts", "../../src/plugins/dontRoundMyTimestamps/index.ts", "managed-style:src/plugins/experiments/hideBugReport.css", "../../src/plugins/experiments/index.tsx", "../../src/plugins/f8break/index.ts", "../../src/utils/apng.ts", "../../node_modules/.pnpm/gifenc@https+++codeload.github.com+mattdesl+gifenc+tar.gz+64842fca317b112a8590f8fef2bf3825da8f6fe3/node_modules/gifenc/src/index.js", "../../node_modules/.pnpm/gifenc@https+++codeload.github.com+mattdesl+gifenc+tar.gz+64842fca317b112a8590f8fef2bf3825da8f6fe3/node_modules/gifenc/src/constants.js", "../../node_modules/.pnpm/gifenc@https+++codeload.github.com+mattdesl+gifenc+tar.gz+64842fca317b112a8590f8fef2bf3825da8f6fe3/node_modules/gifenc/src/stream.js", "../../node_modules/.pnpm/gifenc@https+++codeload.github.com+mattdesl+gifenc+tar.gz+64842fca317b112a8590f8fef2bf3825da8f6fe3/node_modules/gifenc/src/lzwEncode.js", "../../node_modules/.pnpm/gifenc@https+++codeload.github.com+mattdesl+gifenc+tar.gz+64842fca317b112a8590f8fef2bf3825da8f6fe3/node_modules/gifenc/src/rgb-packing.js", "../../node_modules/.pnpm/gifenc@https+++codeload.github.com+mattdesl+gifenc+tar.gz+64842fca317b112a8590f8fef2bf3825da8f6fe3/node_modules/gifenc/src/pnnquant2.js", "../../node_modules/.pnpm/gifenc@https+++codeload.github.com+mattdesl+gifenc+tar.gz+64842fca317b112a8590f8fef2bf3825da8f6fe3/node_modules/gifenc/src/color.js", "../../node_modules/.pnpm/gifenc@https+++codeload.github.com+mattdesl+gifenc+tar.gz+64842fca317b112a8590f8fef2bf3825da8f6fe3/node_modules/gifenc/src/palettize.js", "../../src/plugins/fakeNitro/index.tsx", "../../src/plugins/fakeProfileThemes/styles.css", "../../node_modules/.pnpm/virtual-merge@1.0.2/node_modules/virtual-merge/dist/index.mjs", "../../src/plugins/fakeProfileThemes/index.tsx", "../../src/plugins/favEmojiFirst/styles.css", "../../src/plugins/favEmojiFirst/components/modals/ClearAliasesConfirmModal.tsx", "../../src/plugins/favEmojiFirst/components/modals/SetAliasModal.tsx", "../../src/plugins/favEmojiFirst/index.tsx", "../../src/plugins/fixCodeblockGap/index.ts", "../../src/plugins/fixImagesQuality/index.tsx", "../../src/plugins/fixSpotifyEmbeds.desktop/index.tsx", "../../src/plugins/fixYoutubeEmbeds.desktop/index.tsx", "../../src/plugins/forceOwnerCrown/index.ts", "../../src/plugins/friendInvites/index.ts", "../../src/plugins/fullSearchContext/index.tsx", "../../src/plugins/fullUserInChatbox/index.tsx", "../../src/plugins/gameActivityToggle/index.tsx", "../../src/plugins/gifPaste/index.ts", "../../src/plugins/greetStickerPicker/index.tsx", "../../src/plugins/hideAttachments/styles.css", "../../src/plugins/hideAttachments/index.tsx", "../../src/plugins/iLoveSpam/index.ts", "../../src/plugins/ignoreActivities/index.tsx", "../../src/plugins/imageFilename/index.ts", "../../src/plugins/imageLink/index.ts", "../../src/plugins/imageZoom/constants.ts", "../../src/plugins/imageZoom/utils/waitFor.ts", "../../src/plugins/imageZoom/components/Magnifier.tsx", "managed-style:src/plugins/imageZoom/styles.css", "../../src/plugins/imageZoom/index.tsx", "../../src/plugins/implicitRelationships/index.ts", "../../src/equicordplugins/customUserColors/styles.css", "../../src/equicordplugins/customUserColors/SetColorModal.tsx", "../../src/equicordplugins/customUserColors/index.tsx", "../../src/plugins/ircColors/index.ts", "../../src/plugins/keepCurrentChannel/index.ts", "file-uri:file://quotes.txt", "../../src/plugins/loadingQuotes/index.ts", "../../src/plugins/memberCount/style.css", "../../src/plugins/memberCount/CircleIcon.tsx", "../../src/plugins/memberCount/OnlineMemberCountStore.ts", "../../src/plugins/memberCount/VoiceIcon.tsx", "../../src/plugins/memberCount/MemberCount.tsx", "../../src/plugins/memberCount/index.tsx", "../../src/plugins/mentionAvatars/styles.css", "../../src/plugins/showMeYourName/style.css", "../../src/shared/onceDefined.ts", "../../src/utils/cspViolations.ts", "../../src/utils/modal.tsx", "../../src/utils/index.ts", "../../src/plugins/showMeYourName/index.tsx", "../../src/plugins/mentionAvatars/index.tsx", "../../src/plugins/noReplyMention/index.tsx", "../../src/plugins/messageClickActions/styles.css", "../../src/plugins/messageClickActions/ReactEmojiSetting.tsx", "../../src/plugins/messageClickActions/index.ts", "../../src/plugins/messageLatency/index.tsx", "../../src/plugins/messageLinkEmbeds/index.tsx", "../../src/plugins/messageLogger/messageLogger.css", "managed-style:src/plugins/messageLogger/deleteStyleOverlay.css", "managed-style:src/plugins/messageLogger/deleteStyleText.css", "../../src/plugins/messageLogger/diffUtils.ts", "../../src/plugins/messageLogger/HistoryModal.tsx", "../../src/plugins/messageLogger/index.tsx", "../../src/plugins/moreQuickReactions/styles.css", "../../src/plugins/moreQuickReactions/index.ts", "../../src/plugins/musicRichPresence/lastfm.ts", "../../src/utils/TTLMap.ts", "../../src/plugins/musicRichPresence/listenbrainz.ts", "../../src/plugins/musicRichPresence/index.tsx", "../../src/plugins/mutualGroupDMs/style.css", "../../src/plugins/mutualGroupDMs/index.tsx", "../../src/plugins/newGuildSettings/index.tsx", "../../src/equicordplugins/blockKeywords/styles.css", "../../src/components/Grid.tsx", "../../src/components/index.ts", "../../src/equicordplugins/blockKeywords/index.tsx", "../../src/plugins/noBlockedMessages/index.ts", "../../src/plugins/noDevtoolsWarning/index.ts", "../../src/plugins/noF1/index.ts", "../../src/plugins/noMaskedUrlPaste/index.ts", "../../src/plugins/noMiddleClickPaste/index.ts", "../../src/plugins/noMosaic/index.ts", "../../src/plugins/noOnboardingDelay/index.ts", "../../src/plugins/noPendingCount/index.ts", "../../src/plugins/noProfileThemes/index.ts", "../../src/plugins/noServerEmojis/index.ts", "../../src/plugins/noSystemBadge.discordDesktop/index.ts", "../../src/plugins/noTypingAnimation/index.ts", "../../src/plugins/noUnblockToJump/index.ts", "../../src/plugins/notificationVolume/index.ts", "../../src/plugins/onePingPerDM/index.ts", "../../src/plugins/openInApp/index.ts", "../../src/plugins/overrideForumDefaults/index.tsx", "../../src/plugins/pauseInvitesForever/index.tsx", "../../src/plugins/permissionFreeWill/index.ts", "../../src/plugins/permissionsViewer/styles.css", "../../src/plugins/permissionsViewer/utils.ts", "../../src/plugins/permissionsViewer/components/icons.tsx", "../../src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx", "../../src/plugins/permissionsViewer/components/UserPermissions.tsx", "../../src/plugins/permissionsViewer/index.tsx", "../../src/plugins/petpet/index.ts", "../../src/plugins/pictureInPicture/styles.css", "../../src/plugins/pictureInPicture/index.tsx", "../../src/plugins/pinDms/styles.css", "../../src/plugins/pinDms/data.ts", "../../src/plugins/pinDms/constants.ts", "../../src/plugins/pinDms/components/CreateCategoryModal.tsx", "../../src/plugins/pinDms/components/contextMenu.tsx", "../../src/plugins/pinDms/index.tsx", "../../src/plugins/plainFolderIcon/style.css", "../../src/plugins/plainFolderIcon/index.ts", "../../src/plugins/platformIndicators/style.css", "../../src/plugins/platformIndicators/index.tsx", "../../src/plugins/previewMessage/index.tsx", "../../src/plugins/quickMention/index.tsx", "../../src/plugins/quickReply/index.ts", "../../src/plugins/reactErrorDecoder/index.ts", "../../src/plugins/readAllNotificationsButton/style.css", "../../src/plugins/readAllNotificationsButton/index.tsx", "../../src/plugins/relationshipNotifier/settings.ts", "../../src/plugins/relationshipNotifier/utils.ts", "../../src/plugins/relationshipNotifier/functions.ts", "../../src/plugins/relationshipNotifier/index.ts", "../../src/plugins/replaceGoogleSearch/index.tsx", "../../src/plugins/replyTimestamp/style.css", "../../src/plugins/replyTimestamp/index.tsx", "../../src/plugins/revealAllSpoilers/index.ts", "../../src/plugins/reverseImageSearch/index.tsx", "../../src/plugins/reviewDB/style.css", "../../src/plugins/reviewDB/auth.tsx", "../../src/plugins/reviewDB/entities.ts", "../../src/plugins/reviewDB/utils.tsx", "../../src/plugins/reviewDB/components/BlockedUserModal.tsx", "../../src/plugins/reviewDB/settings.tsx", "../../src/plugins/reviewDB/reviewDbApi.ts", "../../src/plugins/reviewDB/components/MessageButton.tsx", "../../src/plugins/reviewDB/components/ReviewBadge.tsx", "../../src/plugins/reviewDB/components/ReviewComponent.tsx", "../../src/plugins/reviewDB/components/ReviewsView.tsx", "../../src/plugins/reviewDB/components/ReviewModal.tsx", "../../src/plugins/reviewDB/index.tsx", "../../src/plugins/roleColorEverywhere/index.tsx", "../../src/plugins/secretRingTone/index.ts", "../../src/plugins/seeSummaries/index.tsx", "../../src/plugins/sendTimestamps/styles.css", "../../src/plugins/sendTimestamps/index.tsx", "../../src/plugins/serverInfo/styles.css", "../../src/plugins/serverInfo/GuildInfoModal.tsx", "../../src/plugins/serverInfo/index.tsx", "../../src/plugins/serverListIndicators/styles.css", "../../src/plugins/serverListIndicators/index.tsx", "../../src/plugins/shikiCodeblocks.desktop/shiki.css", "file-uri:file://previewExample.tsx", "../../src/plugins/shikiCodeblocks.desktop/hooks/useTheme.ts", "../../src/utils/dependencies.ts", "../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js", "../../node_modules/.pnpm/@vap+core@0.0.12/node_modules/@vap/core/ipc/channel.js", "../../node_modules/.pnpm/@vap+core@0.0.12/node_modules/@vap/core/ipc/rpc.js", "../../node_modules/.pnpm/@vap+core@0.0.12/node_modules/@vap/core/ipc/worker.js", "../../node_modules/.pnpm/@vap+core@0.0.12/node_modules/@vap/core/ipc/index.js", "../../src/plugins/shikiCodeblocks.desktop/api/themes.ts", "../../src/plugins/shikiCodeblocks.desktop/api/languages.ts", "../../src/plugins/shikiCodeblocks.desktop/api/shiki.ts", "managed-style:src/plugins/shikiCodeblocks.desktop/devicon.css", "../../src/plugins/shikiCodeblocks.desktop/types.ts", "../../src/plugins/shikiCodeblocks.desktop/settings.ts", "../../src/plugins/shikiCodeblocks.desktop/hooks/useShikiSettings.ts", "../../src/plugins/shikiCodeblocks.desktop/utils/color.ts", "../../src/plugins/shikiCodeblocks.desktop/utils/misc.ts", "../../src/plugins/shikiCodeblocks.desktop/hooks/useCopyCooldown.ts", "../../src/plugins/shikiCodeblocks.desktop/components/CopyButton.tsx", "../../src/plugins/shikiCodeblocks.desktop/components/ButtonRow.tsx", "../../src/plugins/shikiCodeblocks.desktop/components/Code.tsx", "../../src/plugins/shikiCodeblocks.desktop/components/Header.tsx", "../../src/plugins/shikiCodeblocks.desktop/components/Highlighter.tsx", "../../src/plugins/shikiCodeblocks.desktop/utils/createStyle.ts", "../../src/plugins/shikiCodeblocks.desktop/index.tsx", "../../src/plugins/showAllMessageButtons/index.ts", "../../src/plugins/showConnections/styles.css", "../../src/plugins/showConnections/VerifiedIcon.tsx", "../../src/plugins/showConnections/index.tsx", "../../src/plugins/showHiddenChannels/style.css", "../../src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx", "../../src/plugins/showHiddenChannels/index.tsx", "../../src/plugins/showHiddenThings/index.ts", "../../src/plugins/showTimeoutDuration/styles.css", "../../src/plugins/showTimeoutDuration/index.tsx", "../../src/plugins/silentMessageToggle/index.tsx", "../../src/plugins/silentTyping/index.tsx", "../../src/plugins/sortFriendRequests/styles.css", "../../src/plugins/sortFriendRequests/index.tsx", "../../src/plugins/spotifyCrack/index.ts", "../../src/plugins/spotifyShareCommands/index.ts", "../../src/plugins/startupTimings/StartupTimingPage.tsx", "../../src/plugins/startupTimings/index.tsx", "../../src/plugins/stickerPaste/index.ts", "../../src/plugins/streamerModeOnStream/index.ts", "../../src/plugins/superReactionTweaks/index.ts", "../../src/plugins/tenorGifSearch/index.tsx", "../../src/plugins/textReplace/styles.css", "../../src/plugins/textReplace/index.tsx", "../../src/plugins/themeAttributes/index.ts", "../../src/plugins/translate/styles.css", "../../src/plugins/translate/languages.ts", "../../src/plugins/translate/utils.ts", "../../src/plugins/translate/TranslateModal.tsx", "../../src/plugins/translate/settings.tsx", "../../src/plugins/translate/TranslateIcon.tsx", "../../src/plugins/translate/TranslationAccessory.tsx", "../../src/plugins/translate/index.tsx", "../../src/plugins/typingIndicator/style.css", "managed-style:src/plugins/typingTweaks/style.css", "../../src/plugins/typingTweaks/index.tsx", "../../src/plugins/typingIndicator/index.tsx", "../../src/plugins/unindent/index.ts", "../../src/plugins/unlockedAvatarZoom/index.ts", "../../src/plugins/unsuppressEmbeds/index.tsx", "../../src/plugins/userMessagesPronouns/settings.ts", "../../src/plugins/userMessagesPronouns/utils.ts", "../../src/plugins/userMessagesPronouns/PronounsChatComponent.tsx", "../../src/plugins/userMessagesPronouns/index.ts", "../../src/plugins/userVoiceShow/style.css", "../../src/plugins/userVoiceShow/components.tsx", "../../src/plugins/userVoiceShow/index.tsx", "../../src/plugins/usrbg/styles.css", "../../src/plugins/usrbg/index.tsx", "../../src/plugins/validReply/index.ts", "../../src/plugins/validUser/index.tsx", "../../src/plugins/vcDoubleClick/index.ts", "../../src/plugins/vcNarrator/VoiceSetting.tsx", "../../src/plugins/vcNarrator/settings.ts", "../../src/plugins/vcNarrator/index.tsx", "../../src/plugins/viewIcons/index.tsx", "../../src/plugins/viewRaw/style.css", "../../src/plugins/viewRaw/index.tsx", "../../src/plugins/voiceDownload/style.css", "../../src/plugins/voiceDownload/index.tsx", "../../src/plugins/voiceMessages/styles.css", "../../src/plugins/voiceMessages/components/DesktopRecorder.tsx", "../../src/plugins/voiceMessages/components/VoicePreview.tsx", "../../src/plugins/voiceMessages/components/WebRecorder.tsx", "../../src/plugins/voiceMessages/index.tsx", "../../src/plugins/volumeBooster/index.ts", "../../src/plugins/whoReacted/index.tsx", "../../src/plugins/xsOverlay/index.tsx", "../../src/plugins/youtubeAdblock.desktop/index.ts", "../../src/equicordplugins/_api/audioPlayer.ts", "../../src/equicordplugins/_api/extraContextMenusAPI.ts", "../../src/equicordplugins/_api/headerBar.ts", "../../src/equicordplugins/_api/profileCollections.ts", "../../src/equicordplugins/_api/profileSections.ts", "../../src/equicordplugins/_api/surfaceClasses.ts", "../../src/equicordplugins/declutter/style.css", "../../src/equicordplugins/declutter/index.tsx", "../../src/equicordplugins/_api/userArea.ts", "../../src/equicordplugins/_core/concatenatedModules.tsx", "../../src/equicordplugins/advancedPermissions/index.tsx", "../../src/equicordplugins/altKrispSwitch/index.tsx", "../../src/equicordplugins/animalese/index.ts", "../../src/equicordplugins/atSomeone/index.ts", "../../src/equicordplugins/autoJumpToMessage/index.ts", "../../src/equicordplugins/autoZipper/index.ts", "managed-style:src/equicordplugins/bannersEverywhere/style.css", "../../src/equicordplugins/bannersEverywhere/index.tsx", "../../src/equicordplugins/baseDecoder/index.tsx", "../../src/equicordplugins/betterActivities/styles.css", "../../src/equicordplugins/betterActivities/settings.tsx", "../../src/equicordplugins/betterActivities/utils.tsx", "../../src/equicordplugins/betterActivities/components/ActivityTooltip.tsx", "../../src/equicordplugins/betterActivities/components/TwitchIcon.tsx", "../../src/equicordplugins/betterActivities/patch-helpers/activityList.tsx", "../../src/equicordplugins/betterActivities/components/Caret.tsx", "../../src/equicordplugins/betterActivities/components/CarouselControls.tsx", "../../src/equicordplugins/betterActivities/patch-helpers/popout.tsx", "../../src/equicordplugins/betterActivities/index.tsx", "../../src/equicordplugins/betterAudioPlayer/styles.css", "../../src/equicordplugins/betterAudioPlayer/index.tsx", "../../src/equicordplugins/betterBanReasons/styles.css", "../../src/equicordplugins/betterBanReasons/index.tsx", "../../src/equicordplugins/betterBlockedUsers/styles.css", "../../src/equicordplugins/betterBlockedUsers/index.tsx", "../../src/equicordplugins/betterCommands/index.ts", "../../src/equicordplugins/betterForwards/components.tsx", "managed-style:src/equicordplugins/betterForwards/style.css", "../../src/equicordplugins/betterForwards/index.tsx", "../../src/equicordplugins/betterInvites/style.css", "../../src/equicordplugins/betterInvites/index.tsx", "../../src/equicordplugins/betterPlusReacts/index.ts", "../../src/equicordplugins/blockKrisp/index.ts", "../../src/equicordplugins/bypassPinPrompt/index.ts", "../../src/equicordplugins/bypassStatus/index.tsx", "../../src/equicordplugins/channelBadges/style.css", "../../src/equicordplugins/channelBadges/settings.tsx", "../../src/equicordplugins/channelBadges/index.tsx", "../../src/equicordplugins/channelTabs/style.css", "../../src/equicordplugins/channelTabs/components/KeybindSettings.tsx", "../../src/equicordplugins/channelTabs/util/constants.tsx", "../../src/equicordplugins/channelTabs/util/bookmarks.ts", "../../src/equicordplugins/channelTabs/util/folderIcons.tsx", "../../src/equicordplugins/channelTabs/util/icons.ts", "../../src/equicordplugins/channelTabs/util/tabs.tsx", "../../src/equicordplugins/channelTabs/util/types.ts", "../../src/equicordplugins/channelTabs/util/unreadState.ts", "../../src/equicordplugins/channelTabs/util/unread.ts", "../../src/equicordplugins/channelTabs/util/index.ts", "../../src/equicordplugins/questify/settings/access.ts", "../../src/equicordplugins/questify/settings/def.ts", "../../src/equicordplugins/questify/utils/filtering.ts", "../../src/equicordplugins/questify/utils/questState.ts", "../../src/equicordplugins/questify/settings/rerender.ts", "../../src/equicordplugins/questify/settings/ignoredQuests.ts", "../../src/equicordplugins/questify/utils/ui.ts", "../../src/equicordplugins/questify/utils/logging.ts", "../../src/equicordplugins/questify/utils/fetching.ts", "../../src/equicordplugins/questify/settings/fetching.ts", "../../src/equicordplugins/questify/utils/questTiles.ts", "../../src/equicordplugins/questify/utils/completion.ts", "../../src/equicordplugins/channelTabs/components/ContextMenus.tsx", "../../src/equicordplugins/channelTabs/components/ChannelTab.tsx", "../../src/equicordplugins/channelTabs/components/BookmarkContainer.tsx", "../../src/equicordplugins/channelTabs/components/ChannelTabsContainer.tsx", "../../src/equicordplugins/channelTabs/index.tsx", "../../src/equicordplugins/cleanChannelName/index.ts", "../../src/equicordplugins/cleanerChannelGroups/index.ts", "../../src/equicordplugins/clickableRoles/style.css", "../../src/equicordplugins/clickableRoles/index.tsx", "../../src/equicordplugins/clientSideBlock/index.tsx", "../../node_modules/.pnpm/@ffmpeg+ffmpeg@0.12.10/node_modules/@ffmpeg/ffmpeg/dist/esm/const.js", "../../node_modules/.pnpm/@ffmpeg+ffmpeg@0.12.10/node_modules/@ffmpeg/ffmpeg/dist/esm/utils.js", "../../node_modules/.pnpm/@ffmpeg+ffmpeg@0.12.10/node_modules/@ffmpeg/ffmpeg/dist/esm/errors.js", "../../node_modules/.pnpm/@ffmpeg+ffmpeg@0.12.10/node_modules/@ffmpeg/ffmpeg/dist/esm/classes.js", "../../node_modules/.pnpm/@ffmpeg+ffmpeg@0.12.10/node_modules/@ffmpeg/ffmpeg/dist/esm/index.js", "../../src/equicordplugins/clipUpload.desktop/ffmpeg.ts", "../../src/equicordplugins/clipUpload.desktop/upload.ts", "../../src/equicordplugins/clipUpload.desktop/fields.tsx", "../../src/equicordplugins/clipUpload.desktop/UploadClipFileModal.tsx", "../../src/equicordplugins/clipUpload.desktop/index.tsx", "../../src/equicordplugins/clipsEnhancements.discordDesktop/index.tsx", "../../src/equicordplugins/collapsibleUi/settings.ts", "managed-style:src/equicordplugins/collapsibleUi/style.css", "../../src/equicordplugins/collapsibleUi/index.tsx", "../../src/equicordplugins/commandPalette/style.css", "../../src/equicordplugins/commandPalette/api/registry.ts", "../../src/equicordplugins/commandPalette/state/persist.ts", "../../src/equicordplugins/commandPalette/state/aliases.ts", "../../src/equicordplugins/commandPalette/state/frecency.ts", "../../src/equicordplugins/commandPalette/state/pins.ts", "../../src/equicordplugins/commandPalette/search/ranker.ts", "../../src/equicordplugins/commandPalette/ui/icons.tsx", "../../src/equicordplugins/commandPalette/commands/openSettings.ts", "../../src/equicordplugins/commandPalette/commands/custom.tsx", "../../src/equicordplugins/commandPalette/commands/discordActions.tsx", "../../src/equicordplugins/commandPalette/commands/equicord.tsx", "../../src/equicordplugins/commandPalette/commands/navigation.tsx", "../../src/equicordplugins/commandPalette/commands/pluginManagement.tsx", "../../src/equicordplugins/commandPalette/commands/sendDm.tsx", "../../src/equicordplugins/commandPalette/commands/index.ts", "../../src/equicordplugins/commandPalette/ui/keyboard.ts", "../../src/equicordplugins/commandPalette/settings.tsx", "../../src/equicordplugins/commandPalette/state/hotkeys.ts", "../../src/equicordplugins/commandPalette/commands/calculator/evaluator.ts", "../../src/equicordplugins/commandPalette/ui/ActionBar.tsx", "../../src/equicordplugins/commandPalette/ui/PaletteIcon.tsx", "../../src/equicordplugins/commandPalette/ui/ActionsPanel.tsx", "../../src/equicordplugins/commandPalette/ui/pages/DetailPage.tsx", "../../src/equicordplugins/commandPalette/ui/markdownPaste.ts", "../../src/equicordplugins/commandPalette/ui/MessageMarkdownPreview.tsx", "../../src/equicordplugins/commandPalette/ui/pages/FormPage.tsx", "../../src/equicordplugins/commandPalette/ui/ResultsList.tsx", "../../src/equicordplugins/commandPalette/ui/Palette.tsx", "../../src/equicordplugins/commandPalette/ui/openPalette.tsx", "../../src/equicordplugins/commandPalette/index.tsx", "../../src/equicordplugins/contentWarning/styles.css", "../../src/equicordplugins/contentWarning/index.tsx", "../../src/equicordplugins/copyProfileColors/index.tsx", "../../src/equicordplugins/copyStatusUrls/index.ts", "../../src/equicordplugins/copyUserMention/index.tsx", "../../src/equicordplugins/cursorBuddy/styles.css", "../../src/equicordplugins/cursorBuddy/fathorse.js", "../../src/equicordplugins/cursorBuddy/oneko.js", "../../src/equicordplugins/cursorBuddy/index.tsx", "../../src/equicordplugins/customFolderIcons/settings.tsx", "../../src/equicordplugins/customFolderIcons/util.tsx", "../../src/equicordplugins/customFolderIcons/components.tsx", "../../src/equicordplugins/customFolderIcons/index.tsx", "../../src/equicordplugins/customSounds/styles.css", "../../src/equicordplugins/customSounds/audioStore.ts", "../../src/equicordplugins/customSounds/SoundOverrideComponent.tsx", "../../src/equicordplugins/customSounds/types.ts", "../../src/equicordplugins/customSounds/index.tsx", "../../src/equicordplugins/customStatusTimeouts/index.tsx", "../../src/equicordplugins/customTimestamps/style.css", "../../src/equicordplugins/customTimestamps/utils.tsx", "../../src/equicordplugins/customTimestamps/index.tsx", "../../src/equicordplugins/disableCameras/index.tsx", "../../src/equicordplugins/discordDevBanner/styles.css", "../../src/equicordplugins/discordDevBanner/components/consts.ts", "../../src/equicordplugins/discordDevBanner/components/FormatSetting.tsx", "../../src/equicordplugins/discordDevBanner/components/icons.tsx", "../../src/equicordplugins/discordDevBanner/components/makeDevBanner.tsx", "../../src/equicordplugins/discordDevBanner/components/index.tsx", "../../src/equicordplugins/discordDevBanner/index.tsx", "../../src/equicordplugins/downloadAllAttachments/index.tsx", "../../src/equicordplugins/dragFavoriteEmotes/styles.css", "../../src/equicordplugins/dragFavoriteEmotes/index.tsx", "../../src/equicordplugins/dragify/style.css", "../../src/equicordplugins/dragify/dragState.ts", "../../src/equicordplugins/dragify/ghost.tsx", "../../src/equicordplugins/dragify/invite.ts", "../../src/equicordplugins/dragify/utils.ts", "../../src/equicordplugins/dragify/targets.ts", "../../src/equicordplugins/dragify/index.tsx", "../../src/equicordplugins/equicordHelper/pluginButtons.tsx", "../../src/equicordplugins/equicordHelper/pluginCards.css", "../../src/equicordplugins/equicordHelper/pluginCards.tsx", "../../src/equicordplugins/equicordHelper/index.tsx", "../../src/equicordplugins/equissant/index.ts", "../../src/equicordplugins/exitSounds/styles.css", "../../src/equicordplugins/exitSounds/index.tsx", "../../src/equicordplugins/exportMessages/styles.css", "../../src/equicordplugins/exportMessages/index.tsx", "../../src/equicordplugins/fastDeleteChannels/index.tsx", "../../src/equicordplugins/favouriteAnything/types.ts", "../../src/equicordplugins/favouriteAnything/utils.tsx", "../../src/equicordplugins/favouriteAnything/stores.ts", "../../src/equicordplugins/favouriteAnything/components.tsx", "managed-style:src/equicordplugins/favouriteAnything/style.css", "../../src/equicordplugins/favouriteAnything/index.tsx", "../../src/equicordplugins/fileUpload/styles.css", "../../src/equicordplugins/fileUpload/constants.ts", "../../src/equicordplugins/fileUpload/types.ts", "../../src/equicordplugins/fileUpload/utils/sharex.ts", "../../src/equicordplugins/fileUpload/settings.tsx", "../../src/equicordplugins/fileUpload/utils/getMediaUrl.ts", "../../src/equicordplugins/fileUpload/utils/apngToGif.ts", "../../src/equicordplugins/fileUpload/utils/s3.ts", "../../src/equicordplugins/fileUpload/utils/upload.ts", "../../src/equicordplugins/fileUpload/index.tsx", "../../src/equicordplugins/findReply/styles.css", "../../src/equicordplugins/findReply/ReplyNavigator.tsx", "managed-style:src/equicordplugins/findReply/styles.css", "../../src/equicordplugins/findReply/index.tsx", "../../src/equicordplugins/followVoiceUser/index.tsx", "../../src/equicordplugins/fontLoader/styles.css", "../../src/equicordplugins/fontLoader/index.tsx", "../../src/equicordplugins/frequentQuickSwitcher/index.tsx", "../../src/equicordplugins/friendCodes/styles.css", "../../src/equicordplugins/friendCodes/FriendCodesPanel.tsx", "../../src/equicordplugins/friendCodes/index.tsx", "managed-style:src/equicordplugins/friendTags/styles.css", "../../src/equicordplugins/friendTags/index.tsx", "../../src/equicordplugins/friendshipRanks/styles.css", "../../src/equicordplugins/friendshipRanks/index.tsx", "managed-style:src/equicordplugins/fullVcPfp/style.css", "../../src/equicordplugins/fullVcPfp/index.tsx", "../../src/equicordplugins/ghosted/styles.css", "../../src/equicordplugins/ghosted/IconGhost.tsx", "../../src/equicordplugins/ghosted/Boo.tsx", "../../src/equicordplugins/ghosted/GhostedUsersModal.tsx", "../../src/equicordplugins/ghosted/index.tsx", "../../src/equicordplugins/gifCollections/style.css", "../../src/equicordplugins/gifCollections/types.ts", "../../src/equicordplugins/gifCollections/utils/getUrlExtension.ts", "../../src/equicordplugins/gifCollections/utils/getFormat.ts", "../../src/equicordplugins/gifCollections/utils/misc.ts", "../../src/equicordplugins/gifCollections/utils/collectionManager.ts", "../../src/equicordplugins/gifCollections/utils/settingsUtils.ts", "../../src/equicordplugins/gifCollections/settings.tsx", "../../src/equicordplugins/gifCollections/utils/cleanUrl.ts", "../../src/equicordplugins/gifCollections/utils/isAudio.ts", "../../src/equicordplugins/gifCollections/utils/uuidv4.ts", "../../src/equicordplugins/gifCollections/utils/getGif.ts", "../../src/equicordplugins/gifCollections/components/modals.tsx", "../../src/equicordplugins/gifCollections/components/contextMenus.tsx", "../../src/equicordplugins/gifCollections/utils/refreshUrl.ts", "../../src/equicordplugins/gifCollections/index.tsx", "../../src/equicordplugins/gifMaker/fonts.ts", "../../src/equicordplugins/gifMaker/captions/caption.ts", "../../src/equicordplugins/gifMaker/captions/none.ts", "../../src/equicordplugins/gifMaker/captions/speechbubble.ts", "../../src/equicordplugins/gifMaker/captions/index.ts", "managed-style:src/equicordplugins/gifMaker/styles.css", "../../src/equicordplugins/gifMaker/types.ts", "../../src/equicordplugins/gifMaker/utils/contextMenu.ts", "../../node_modules/.pnpm/js-binary-schema-parser@2.0.3/node_modules/js-binary-schema-parser/lib/index.js", "../../node_modules/.pnpm/js-binary-schema-parser@2.0.3/node_modules/js-binary-schema-parser/lib/parsers/uint8.js", "../../node_modules/.pnpm/js-binary-schema-parser@2.0.3/node_modules/js-binary-schema-parser/lib/schemas/gif.js", "../../node_modules/.pnpm/gifuct-js@2.1.2/node_modules/gifuct-js/lib/deinterlace.js", "../../node_modules/.pnpm/gifuct-js@2.1.2/node_modules/gifuct-js/lib/lzw.js", "../../node_modules/.pnpm/gifuct-js@2.1.2/node_modules/gifuct-js/lib/index.js", "../../src/equicordplugins/gifMaker/utils/encoder.ts", "../../src/equicordplugins/gifMaker/utils/gifPicker.ts", "../../src/equicordplugins/gifMaker/index.tsx", "../../src/equicordplugins/githubRepos/styles.css", "../../src/equicordplugins/githubRepos/githubApi.ts", "../../src/equicordplugins/githubRepos/utils.ts", "../../src/equicordplugins/githubRepos/colors.ts", "../../src/equicordplugins/githubRepos/components/Star.tsx", "../../src/equicordplugins/githubRepos/components/RepoCard.tsx", "../../src/equicordplugins/githubRepos/components/SortIcon.tsx", "../../src/equicordplugins/githubRepos/components/RepoSubTabs.tsx", "../../src/equicordplugins/githubRepos/components/ReposModal.tsx", "../../src/equicordplugins/githubRepos/components/ProfilePopoutComponent.tsx", "../../src/equicordplugins/githubRepos/components/ProfileTabComponent.tsx", "../../src/equicordplugins/githubRepos/index.tsx", "../../src/equicordplugins/googleThat/index.tsx", "../../src/equicordplugins/guildPickerDumper/index.tsx", "../../src/equicordplugins/hideChatButtons/index.tsx", "../../src/equicordplugins/hideMessages/styles.css", "../../src/equicordplugins/hideMessages/index.tsx", "../../src/equicordplugins/hideServers/components/style.css", "../../src/equicordplugins/hideServers/HiddenServersStore.ts", "../../src/equicordplugins/hideServers/components/HiddenServersMenu.tsx", "../../src/equicordplugins/hideServers/components/HiddenServersButton.tsx", "../../src/equicordplugins/hideServers/settings.tsx", "../../src/equicordplugins/hideServers/index.tsx", "../../src/equicordplugins/homeTyping/styles.css", "../../src/equicordplugins/homeTyping/index.tsx", "../../src/equicordplugins/hopOn/index.tsx", "../../src/equicordplugins/husk/index.tsx", "../../src/equicordplugins/iRememberYou/styles.css", "../../src/equicordplugins/iRememberYou/components/data.tsx", "../../src/equicordplugins/iRememberYou/components/ui.tsx", "../../src/equicordplugins/iRememberYou/index.tsx", "../../src/equicordplugins/iconViewer/styles.css", "../../src/equicordplugins/iconViewer/utils.ts", "../../src/equicordplugins/iconViewer/components/Modals.tsx", "../../src/equicordplugins/iconViewer/components/IconsTab.tsx", "../../src/equicordplugins/iconViewer/index.tsx", "../../src/equicordplugins/idleAutoRestart/index.tsx", "../../src/equicordplugins/ignoreCalls/styles.css", "../../src/equicordplugins/ignoreCalls/index.tsx", "../../src/equicordplugins/inRole/style.css", "../../src/equicordplugins/inRole/RoleMembersModal.tsx", "../../src/equicordplugins/inRole/index.tsx", "../../src/equicordplugins/ingtoninator/index.tsx", "../../src/equicordplugins/instantScreenshare/utils.tsx", "../../src/equicordplugins/instantScreenshare/index.tsx", "../../src/equicordplugins/invisibleChat.desktop/components/DecryptionModal.tsx", "../../src/equicordplugins/invisibleChat.desktop/components/EncryptionModal.tsx", "../../src/equicordplugins/invisibleChat.desktop/index.tsx", "../../src/equicordplugins/inviteDefaults/index.ts", "../../src/equicordplugins/jumpTo/index.tsx", "../../src/equicordplugins/keyboardNavigation/components/style.css", "../../src/equicordplugins/keyboardNavigation/components/MultipleChoice.tsx", "../../src/equicordplugins/keyboardNavigation/components/TextInput.tsx", "../../src/equicordplugins/keyboardNavigation/commands.tsx", "../../src/equicordplugins/keyboardNavigation/components/CommandPalette.tsx", "../../src/equicordplugins/keyboardNavigation/index.tsx", "../../src/equicordplugins/keyboardSounds/packs.ts", "../../src/equicordplugins/keyboardSounds/index.ts", "../../src/equicordplugins/keywordNotify/style.css", "../../src/equicordplugins/keywordNotify/components/Collapsible.css", "../../src/equicordplugins/keywordNotify/components/Collapsible.tsx", "../../src/equicordplugins/keywordNotify/components/FormGenericLabel.css", "../../src/equicordplugins/keywordNotify/components/FormGenericLabel.tsx", "../../src/equicordplugins/keywordNotify/components/ListedIds.tsx", "../../src/equicordplugins/keywordNotify/components/ListPrioritySelector.tsx", "../../src/equicordplugins/keywordNotify/components/KeywordEntries.tsx", "../../src/equicordplugins/keywordNotify/index.tsx", "../../src/equicordplugins/lastActive/index.tsx", "../../src/equicordplugins/limitlessScreenshare/style.css", "../../src/equicordplugins/limitlessScreenshare/SettingsPresetList.tsx", "../../src/equicordplugins/limitlessScreenshare/settings.tsx", "../../src/equicordplugins/limitlessScreenshare/utils.ts", "../../src/equicordplugins/limitlessScreenshare/CustomRange.tsx", "../../src/equicordplugins/limitlessScreenshare/index.tsx", "../../src/equicordplugins/loginWithQR/images.ts", "../../node_modules/.pnpm/jsqr@1.4.0/node_modules/jsqr/dist/jsQR.js", "../../src/equicordplugins/loginWithQR/ui/styles.css", "../../src/equicordplugins/loginWithQR/ui/index.ts", "../../src/equicordplugins/loginWithQR/ui/modals/VerifyModal.tsx", "../../src/equicordplugins/loginWithQR/ui/modals/QrModal.tsx", "../../src/equicordplugins/loginWithQR/index.tsx", "../../src/equicordplugins/markdownTables/parser.ts", "managed-style:src/equicordplugins/markdownTables/styles.css", "../../src/equicordplugins/markdownTables/index.tsx", "../../src/equicordplugins/mediaPlaybackSpeed/styles.css", "../../src/equicordplugins/mediaPlaybackSpeed/components/SpeedIcon.tsx", "../../src/equicordplugins/mediaPlaybackSpeed/index.tsx", "../../src/equicordplugins/messageBurst/index.ts", "../../src/equicordplugins/messageColors/styles.css", "../../src/equicordplugins/messageColors/constants.ts", "../../src/equicordplugins/messageColors/index.tsx", "../../src/equicordplugins/messageFetchTimer/index.tsx", "../../src/equicordplugins/messageLinkTooltip/style.css", "../../src/equicordplugins/messageLinkTooltip/index.tsx", "../../src/equicordplugins/messageLoggerEnhanced/styles.css", "../../node_modules/.pnpm/idb@8.0.3/node_modules/idb/build/index.js", "../../src/equicordplugins/messageLoggerEnhanced/utils/constants.ts", "../../src/equicordplugins/messageLoggerEnhanced/utils/memoize.ts", "../../src/equicordplugins/messageLoggerEnhanced/utils/misc.ts", "../../src/equicordplugins/messageLoggerEnhanced/utils/cleanUp.ts", "../../src/equicordplugins/messageLoggerEnhanced/utils/index.ts", "../../src/equicordplugins/messageLoggerEnhanced/utils/saveImage/ImageManager.ts", "../../src/equicordplugins/messageLoggerEnhanced/utils/saveImage/index.ts", "../../src/equicordplugins/messageLoggerEnhanced/db.ts", "../../node_modules/.pnpm/@streamparser+json@0.0.22/node_modules/@streamparser/json/src/utils/utf-8.ts", "../../node_modules/.pnpm/@streamparser+json@0.0.22/node_modules/@streamparser/json/src/utils/bufferedString.ts", "../../node_modules/.pnpm/@streamparser+json@0.0.22/node_modules/@streamparser/json/src/utils/types/tokenType.ts", "../../node_modules/.pnpm/@streamparser+json@0.0.22/node_modules/@streamparser/json/src/tokenizer.ts", "../../node_modules/.pnpm/@streamparser+json@0.0.22/node_modules/@streamparser/json/src/utils/types/stackElement.ts", "../../node_modules/.pnpm/@streamparser+json@0.0.22/node_modules/@streamparser/json/src/tokenparser.ts", "../../node_modules/.pnpm/@streamparser+json@0.0.22/node_modules/@streamparser/json/src/jsonparser.ts", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/showDirectoryPicker.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/showOpenFilePicker.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/showSaveFilePicker.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/util.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/adapters/sandbox.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/FileSystemHandle.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/config.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/FileSystemWritableFileStream.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/FileSystemFileHandle.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/FileSystemDirectoryHandle.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/getOriginPrivateDirectory.js", "../../node_modules/.pnpm/native-file-system-adapter@3.0.1/node_modules/native-file-system-adapter/src/es6.js", "../../src/equicordplugins/messageLoggerEnhanced/utils/settingsUtils.ts", "../../src/equicordplugins/messageLoggerEnhanced/utils/parseQuery.ts", "../../src/equicordplugins/messageLoggerEnhanced/components/hooks.ts", "../../src/equicordplugins/messageLoggerEnhanced/components/LogsModal.tsx", "../../src/equicordplugins/messageLoggerEnhanced/components/LogsButton.tsx", "../../src/equicordplugins/messageLoggerEnhanced/LoggedMessageManager.ts", "../../src/equicordplugins/messageLoggerEnhanced/components/FolderSelectInput.tsx", "../../src/equicordplugins/messageLoggerEnhanced/list.ts", "../../src/equicordplugins/messageLoggerEnhanced/settings.tsx", "../../src/equicordplugins/messageLoggerEnhanced/utils/contextMenu.tsx", "../../src/equicordplugins/messageLoggerEnhanced/utils/LimitedMap.ts", "../../src/equicordplugins/messageLoggerEnhanced/index.tsx", "../../src/equicordplugins/messageNotifier/index.ts", "../../src/equicordplugins/messagePeek/style.css", "../../src/equicordplugins/messagePeek/index.tsx", "../../src/equicordplugins/messageTranslate/styles.css", "../../src/equicordplugins/messageTranslate/settings.ts", "../../src/equicordplugins/messageTranslate/utils/translate.ts", "../../src/equicordplugins/messageTranslate/index.tsx", "../../src/equicordplugins/micLoopbackTester/index.tsx", "../../src/equicordplugins/middleClickTweaks/index.ts", "../../src/equicordplugins/moreCommands/utils.ts", "../../src/equicordplugins/moreCommands/index.ts", "../../src/equicordplugins/moreStickers/style.css", "../../src/equicordplugins/moreStickers/utils.tsx", "../../src/equicordplugins/moreStickers/components/categories.tsx", "../../src/equicordplugins/moreStickers/components/icons.tsx", "../../src/equicordplugins/moreStickers/lineEmojis.ts", "../../src/equicordplugins/moreStickers/lineStickers.ts", "../../src/equicordplugins/moreStickers/stickers.ts", "../../src/equicordplugins/moreStickers/migrate-v1.ts", "../../src/equicordplugins/moreStickers/types.ts", "../../src/equicordplugins/moreStickers/components/misc.tsx", "../../src/equicordplugins/moreStickers/upload.ts", "../../src/equicordplugins/moreStickers/components/picker.tsx", "../../src/equicordplugins/moreStickers/components/index.ts", "../../src/equicordplugins/moreStickers/index.tsx", "../../src/equicordplugins/moreUserTags/styles.css", "../../src/equicordplugins/moreUserTags/settings.tsx", "../../src/equicordplugins/moreUserTags/consts.ts", "../../src/equicordplugins/moreUserTags/index.tsx", "../../src/equicordplugins/moyai/index.ts", "../../src/equicordplugins/musicControls/styles.css", "managed-style:src/equicordplugins/musicControls/hoverOnly.css", "../../src/equicordplugins/musicControls/spotify/lyrics/providers/types.ts", "../../src/equicordplugins/musicControls/spotify/lyrics/providers/lrclibAPI/index.ts", "../../src/equicordplugins/musicControls/spotify/lyrics/providers/SpotifyAPI/index.ts", "../../src/equicordplugins/musicControls/spotify/lyrics/api.tsx", "../../src/equicordplugins/musicControls/spotify/lyrics/providers/translator/languages.ts", "../../src/equicordplugins/musicControls/settings.tsx", "../../src/equicordplugins/musicControls/spotify/SpotifyStore.ts", "../../src/equicordplugins/musicControls/spotify/lyrics/providers/translator/index.ts", "../../src/equicordplugins/musicControls/spotify/lyrics/providers/store.ts", "../../src/equicordplugins/musicControls/spotify/lyrics/components/util.tsx", "../../src/equicordplugins/musicControls/spotify/lyrics/components/ctxMenu.tsx", "../../src/equicordplugins/musicControls/spotify/lyrics/components/modal.tsx", "../../src/equicordplugins/musicControls/spotify/lyrics/components/lyrics.tsx", "../../src/equicordplugins/musicControls/spotify/spotifyStyles.css", "../../src/equicordplugins/musicControls/spotify/SeekBar.ts", "../../src/equicordplugins/musicControls/spotify/PlayerComponent.tsx", "../../src/equicordplugins/musicControls/tidal/lyrics/api.tsx", "../../src/equicordplugins/musicControls/tidal/TidalStore.ts", "../../src/equicordplugins/musicControls/tidal/lyrics/providers/store.ts", "../../src/equicordplugins/musicControls/tidal/lyrics/components/util.tsx", "../../src/equicordplugins/musicControls/tidal/lyrics/components/ctxMenu.tsx", "../../src/equicordplugins/musicControls/tidal/lyrics/components/modal.tsx", "../../src/equicordplugins/musicControls/tidal/lyrics/components/lyrics.tsx", "../../src/equicordplugins/musicControls/tidal/tidalStyles.css", "../../src/equicordplugins/musicControls/tidal/TidalPlayer.tsx", "../../src/equicordplugins/musicControls/index.tsx", "../../src/equicordplugins/neverPausePreviews/index.tsx", "../../src/equicordplugins/newPluginsManager/knownSettings.ts", "../../src/equicordplugins/newPluginsManager/styles.css", "../../src/equicordplugins/newPluginsManager/NewPluginsModal.tsx", "../../src/equicordplugins/newPluginsManager/index.tsx", "../../src/equicordplugins/noNitroUpsell/index.ts", "../../src/equicordplugins/noPushToTalk/index.ts", "../../src/equicordplugins/noRPC.discordDesktop/index.ts", "../../src/equicordplugins/noRoleHeaders/index.ts", "../../src/equicordplugins/normalizeMessageLinks/index.ts", "../../src/equicordplugins/notificationTitle.discordDesktop/index.tsx", "../../src/equicordplugins/orbolayBridge/index.tsx", "../../src/equicordplugins/partyMode/index.ts", "../../src/equicordplugins/pendingFriendRequest/index.tsx", "../../src/equicordplugins/pinIcon/index.tsx", "../../src/equicordplugins/pingNotifications/index.tsx", "../../src/equicordplugins/platformSpoofer/index.tsx", "../../src/equicordplugins/polishWording/index.ts", "../../src/equicordplugins/profileSets/styles.css", "../../src/equicordplugins/profileSets/utils/storage.ts", "../../src/equicordplugins/profileSets/utils/profile.ts", "../../src/equicordplugins/profileSets/utils/actions.ts", "../../src/equicordplugins/profileSets/components/confirmModal.tsx", "../../src/equicordplugins/profileSets/components/presetList.tsx", "../../src/equicordplugins/profileSets/components/presetManager.tsx", "../../src/equicordplugins/profileSets/components/profileSetsTab.tsx", "../../src/equicordplugins/profileSets/index.tsx", "../../src/equicordplugins/questify/state.ts", "../../src/equicordplugins/questify/settings/restartTracking.ts", "../../src/equicordplugins/questify/components/settingsModal.tsx", "../../src/equicordplugins/questify/components/questButton.tsx", "../../src/equicordplugins/questify/components/questTileContextMenu.tsx", "../../src/equicordplugins/questify/settings/dangerous.ts", "../../src/equicordplugins/questify/settings/notices.tsx", "../../src/equicordplugins/questify/settings.css", "../../src/equicordplugins/questify/components/shared.tsx", "../../src/equicordplugins/questify/components/questButtonSettings.tsx", "../../src/equicordplugins/questify/components/questFeaturesSetting.tsx", "../../src/equicordplugins/questify/components/questNotificationsSetting.tsx", "../../src/equicordplugins/questify/components/questTilesSetting.tsx", "../../src/equicordplugins/questify/components/reorderQuestsSetting.tsx", "../../src/equicordplugins/questify/settings/store.ts", "managed-style:src/equicordplugins/questify/styles.css", "../../src/equicordplugins/questify/index.tsx", "../../src/equicordplugins/quickThemeSwitcher.discordDesktop/index.tsx", "../../src/equicordplugins/quoter/components/QuoteIcon.tsx", "../../src/equicordplugins/quoter/types.ts", "../../src/equicordplugins/quoter/utils.tsx", "../../src/equicordplugins/quoter/index.tsx", "../../src/equicordplugins/randomVoice/styles.css", "../../src/equicordplugins/randomVoice/index.tsx", "../../src/equicordplugins/recentDMSwitcher/styles.css", "../../src/equicordplugins/recentDMSwitcher/index.tsx", "../../src/equicordplugins/remix/editor/utils/eventEmitter.ts", "../../src/equicordplugins/remix/editor/input.ts", "../../src/equicordplugins/remix/editor/utils/canvas.ts", "../../src/equicordplugins/remix/editor/tools/crop.ts", "../../src/equicordplugins/remix/editor/components/Canvas.tsx", "../../src/equicordplugins/remix/editor/tools/brush.ts", "../../src/equicordplugins/remix/editor/tools/eraser.ts", "../../src/equicordplugins/remix/editor/tools/shape.ts", "../../src/equicordplugins/remix/editor/components/colorStyles.css", "../../src/equicordplugins/remix/editor/components/SettingColorComponent.tsx", "../../src/equicordplugins/remix/editor/components/Toolbar.tsx", "../../src/equicordplugins/remix/editor/Editor.tsx", "../../src/equicordplugins/remix/icons/SendIcon.tsx", "../../src/equicordplugins/remix/RemixModal.tsx", "managed-style:src/equicordplugins/remix/styles.css", "../../src/equicordplugins/remix/index.tsx", "../../src/equicordplugins/repeatMessages/index.tsx", "../../src/equicordplugins/replyPingControl/index.ts", "../../src/equicordplugins/richMagnetLinks/styles.css", "../../src/equicordplugins/richMagnetLinks/index.tsx", "../../src/equicordplugins/richPresence/types/index.ts", "../../src/equicordplugins/richPresence/SettingsPanel.tsx", "../../src/equicordplugins/richPresence/settings.ts", "../../src/equicordplugins/richPresence/migration.ts", "../../src/equicordplugins/richPresence/services/audiobookshelf.ts", "../../src/equicordplugins/richPresence/services/gensokyoRadio.ts", "../../src/equicordplugins/richPresence/services/jellyfin.ts", "../../node_modules/.pnpm/crypt@0.0.2/node_modules/crypt/crypt.js", "../../node_modules/.pnpm/charenc@0.0.2/node_modules/charenc/charenc.js", "../../node_modules/.pnpm/is-buffer@1.1.6/node_modules/is-buffer/index.js", "../../node_modules/.pnpm/md5@2.3.0/node_modules/md5/md5.js", "../../src/equicordplugins/richPresence/services/navidrome.ts", "../../src/equicordplugins/richPresence/services/statsfm.ts", "../../src/equicordplugins/richPresence/types/tosu.ts", "../../src/equicordplugins/richPresence/services/tosu.ts", "../../src/equicordplugins/richPresence/index.tsx", "../../src/equicordplugins/rpcEditor/ReplaceSettings.tsx", "../../src/equicordplugins/rpcEditor/index.tsx", "../../src/equicordplugins/saveFavoriteGIFs/index.tsx", "../../src/equicordplugins/scheduledMessages/styles.css", "../../src/equicordplugins/scheduledMessages/components/Icons.tsx", "../../src/equicordplugins/scheduledMessages/utils.ts", "../../src/equicordplugins/scheduledMessages/components/ViewScheduledModal.tsx", "../../src/equicordplugins/scheduledMessages/components/ChatBarButton.tsx", "../../src/equicordplugins/scheduledMessages/components/MessageAccessory.tsx", "../../src/equicordplugins/scheduledMessages/components/ScheduleTimeModal.tsx", "../../src/equicordplugins/scheduledMessages/index.tsx", "../../src/equicordplugins/searchFix/index.tsx", "../../src/equicordplugins/sedEnhanced/index.ts", "../../src/equicordplugins/sekaiStickers/characters.json.ts", "../../src/equicordplugins/sekaiStickers/Components/Canvas.tsx", "../../src/equicordplugins/sekaiStickers/Components/Picker.tsx", "../../src/equicordplugins/sekaiStickers/Components/SekaiStickersModal.tsx", "../../src/equicordplugins/sekaiStickers/kanade.svg.tsx", "../../src/equicordplugins/sekaiStickers/index.tsx", "../../src/equicordplugins/serverSearch/styles.css", "../../src/equicordplugins/serverSearch/index.tsx", "../../src/equicordplugins/showBadgesInChat/styles.css", "../../src/equicordplugins/showBadgesInChat/settings.tsx", "../../src/equicordplugins/showBadgesInChat/index.tsx", "../../src/equicordplugins/showMessageEmbeds/index.tsx", "../../src/equicordplugins/showResourceChannels/index.ts", "../../src/equicordplugins/showRolesInChat/styles.css", "../../src/equicordplugins/showRolesInChat/index.tsx", "../../src/equicordplugins/showSongName/index.tsx", "../../src/equicordplugins/sidebarChat/store.ts", "managed-style:src/equicordplugins/sidebarChat/styles.css", "../../src/equicordplugins/sidebarChat/index.tsx", "../../src/equicordplugins/signature/index.tsx", "../../src/equicordplugins/silenceUsers/index.ts", "../../src/equicordplugins/snowfall/index.tsx", "../../src/equicordplugins/songLink.desktop/Providers.ts", "../../src/equicordplugins/songLink.desktop/Settings.tsx", "../../src/equicordplugins/songLink.desktop/SongLinker.tsx", "../../src/equicordplugins/songLink.desktop/index.tsx", "../../src/equicordplugins/songSpotlight.desktop/style.css", "../../src/equicordplugins/songSpotlight.desktop/lib/stores/AuthorizationStore.ts", "../../src/equicordplugins/songSpotlight.desktop/lib/stores/SongStore.ts", "../../src/equicordplugins/songSpotlight.desktop/lib/api.ts", "../../src/equicordplugins/songSpotlight.desktop/lib/utils.ts", "../../src/equicordplugins/songSpotlight.desktop/lib/oauth2.tsx", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/finders-B7F6qUME.js", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/util.js", "../../src/equicordplugins/songSpotlight.desktop/service.ts", "../../src/equicordplugins/songSpotlight.desktop/ui/common.tsx", "../../src/equicordplugins/songSpotlight.desktop/ui/components/ServiceIcon.tsx", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/core-D9kSOO4F.js", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/handlers.js", "../../src/equicordplugins/songSpotlight.desktop/ui/settings/AddSong.tsx", "../../src/equicordplugins/songSpotlight.desktop/ui/settings/SongList.tsx", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/parse.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/regexes.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/doc.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ar.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/az.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/be.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/bg.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ca.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/cs.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/da.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/de.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/en.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/eo.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/es.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fa.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fi.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr-CA.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/he.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hu.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hy.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/id.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/is.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/it.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ja.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ka.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/km.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/kh.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ko.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/lt.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/mk.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ms.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/nl.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/no.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ota.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ps.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pl.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pt.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ru.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sl.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sv.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ta.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/th.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/tr.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uk.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ua.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ur.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uz.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/vi.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-CN.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-TW.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/yo.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/index.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/api.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/index.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/checks.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/iso.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/errors.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/parse.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/schemas.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/compat.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/coerce.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/external.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/index.js", "../../node_modules/.pnpm/@song-spotlight+api@2.2.0_typescript@6.0.3/node_modules/@song-spotlight/api/dist/structs.js", "../../src/equicordplugins/songSpotlight.desktop/ui/settings/index.tsx", "../../src/equicordplugins/songSpotlight.desktop/settings.tsx", "../../src/equicordplugins/songSpotlight.desktop/ui/components/AudioPlayer.tsx", "../../src/equicordplugins/songSpotlight.desktop/ui/components/ProgressCircle.tsx", "../../src/equicordplugins/songSpotlight.desktop/ui/songs/index.tsx", "../../src/equicordplugins/songSpotlight.desktop/ui/songs/CollapsedProfileSongs.tsx", "../../src/equicordplugins/songSpotlight.desktop/ui/songs/ProfileSongs.tsx", "../../src/equicordplugins/songSpotlight.desktop/ui/songs/WidgetSongs.tsx", "../../src/equicordplugins/songSpotlight.desktop/index.tsx", "../../src/equicordplugins/splitLargeMessages/splitMessage.ts", "../../src/equicordplugins/splitLargeMessages/index.ts", "../../src/equicordplugins/statusPresets/style.css", "../../src/equicordplugins/statusPresets/index.tsx", "../../src/equicordplugins/statusWhileActive.desktop/index.ts", "../../src/equicordplugins/steamStatusSync/index.tsx", "../../src/equicordplugins/stickerBlocker/index.tsx", "../../src/equicordplugins/stopAutoUnread/index.ts", "../../src/equicordplugins/streaks/style.css", "../../src/equicordplugins/streaks/constants.ts", "../../src/equicordplugins/streaks/stores/StreaksStore.ts", "../../src/equicordplugins/streaks/stores/AuthorizationStore.tsx", "../../src/equicordplugins/streaks/settings.tsx", "../../src/equicordplugins/streaks/index.tsx", "../../src/equicordplugins/streamingCodecDisabler/index.ts", "../../src/equicordplugins/talkInReverse/index.tsx", "../../src/equicordplugins/themeLibrary/components/styles.css", "../../src/equicordplugins/themeLibrary/types.ts", "../../src/equicordplugins/themeLibrary/utils/Icons.tsx", "../../src/equicordplugins/themeLibrary/components/LikesComponent.tsx", "../../src/equicordplugins/themeLibrary/components/ThemeInfoModal.tsx", "../../src/equicordplugins/themeLibrary/components/ThemeCard.tsx", "../../src/equicordplugins/themeLibrary/components/ThemeTab.tsx", "../../src/equicordplugins/themeLibrary/utils/auth.tsx", "../../src/equicordplugins/themeLibrary/utils/settings.tsx", "../../src/equicordplugins/themeLibrary/index.tsx", "../../src/equicordplugins/tidalEmbeds/index.tsx", "../../src/equicordplugins/timezones/styles.css", "../../src/equicordplugins/timezones/database.tsx", "../../src/equicordplugins/timezones/TimezoneModal.tsx", "../../src/equicordplugins/timezones/index.tsx", "../../src/equicordplugins/title/index.ts", "../../src/equicordplugins/toastNotifications/components/styles.css", "../../src/equicordplugins/toastNotifications/components/NotificationComponent.tsx", "../../src/equicordplugins/toastNotifications/components/Notifications.tsx", "../../src/equicordplugins/toastNotifications/index.tsx", "../../src/equicordplugins/toggleVideoBind/index.ts", "../../src/equicordplugins/toneIndicators/indicators.ts", "../../src/equicordplugins/toneIndicators/ToneIndicator.tsx", "../../src/equicordplugins/toneIndicators/index.tsx", "../../src/equicordplugins/translatePlus/style.css", "../../src/equicordplugins/translatePlus/settings.ts", "../../src/equicordplugins/translatePlus/misc/languages.ts", "../../src/equicordplugins/translatePlus/misc/types.ts", "../../src/equicordplugins/translatePlus/utils/icon.tsx", "../../src/equicordplugins/translatePlus/utils/translator.ts", "../../src/equicordplugins/translatePlus/utils/accessory.tsx", "../../src/equicordplugins/translatePlus/index.tsx", "../../src/equicordplugins/triviaAI/settings.ts", "../../src/equicordplugins/triviaAI/utils.ts", "../../src/equicordplugins/triviaAI/index.tsx", "../../src/equicordplugins/unitConverter/style.css", "../../src/equicordplugins/unitConverter/converter.ts", "../../src/equicordplugins/unitConverter/ConverterAccessory.tsx", "../../src/equicordplugins/unitConverter/index.tsx", "../../src/equicordplugins/universalMention/index.tsx", "../../src/equicordplugins/unlimitedAccounts/index.ts", "../../src/equicordplugins/unreadBadgeCount/index.tsx", "../../src/equicordplugins/urlHighlighter/styles.css", "../../src/equicordplugins/urlHighlighter/index.tsx", "../../src/equicordplugins/userpfp/styles.css", "../../src/equicordplugins/userpfp/AvatarModal.tsx", "../../src/equicordplugins/userpfp/index.tsx", "../../src/equicordplugins/vcPanelSettings/style.css", "../../src/equicordplugins/vcPanelSettings/index.tsx", "../../src/equicordplugins/voiceButtons/settings.ts", "../../src/equicordplugins/voiceButtons/styles.css", "../../src/equicordplugins/voiceButtons/utils.tsx", "../../src/equicordplugins/voiceButtons/index.tsx", "../../src/equicordplugins/voiceChannelLog/settings.ts", "../../src/equicordplugins/voiceChannelLog/utils.ts", "../../src/equicordplugins/voiceChannelLog/logs.ts", "../../src/equicordplugins/voiceChannelLog/components/VoiceChannelLogEntryComponent.css", "../../src/equicordplugins/voiceChannelLog/components/VoiceChannelLogEntryIcons.tsx", "../../src/equicordplugins/voiceChannelLog/components/VoiceChannelLogEntryComponent.tsx", "../../src/equicordplugins/voiceChannelLog/components/VoiceChannelLogModal.tsx", "../../src/equicordplugins/voiceChannelLog/components/LogsButton.tsx", "../../src/equicordplugins/voiceChannelLog/index.tsx", "../../src/equicordplugins/voiceChatUtils/index.tsx", "../../src/equicordplugins/voiceJoinMessages/index.ts", "../../src/equicordplugins/voiceMessageTranscriber.desktop/style.css", "../../src/equicordplugins/voiceMessageTranscriber.desktop/utils.ts", "../../src/equicordplugins/voiceMessageTranscriber.desktop/index.tsx", "../../src/equicordplugins/voiceRejoin/index.tsx", "../../src/equicordplugins/voiceStats/styles.css", "../../src/equicordplugins/voiceStats/index.tsx", "../../src/equicordplugins/waitForSlot/index.tsx", "../../src/equicordplugins/webpackTarball/tar.ts", "../../src/equicordplugins/webpackTarball/webpack.ts", "../../src/equicordplugins/webpackTarball/index.tsx", "../../src/equicordplugins/whitelistedEmojis/style.css", "../../src/equicordplugins/whitelistedEmojis/index.tsx", "../../src/equicordplugins/whosWatching/styles.css", "../../src/equicordplugins/whosWatching/index.tsx", "../../src/equicordplugins/wigglyText/ui/components/ExampleWiggle.tsx", "../../src/equicordplugins/wigglyText/index.tsx", "../../src/equicordplugins/writeUpperCase/index.ts", "../../src/equicordplugins/zipPreview/utils.ts", "../../src/equicordplugins/zipPreview/components.tsx", "managed-style:src/equicordplugins/zipPreview/style.css", "../../src/equicordplugins/zipPreview/index.tsx", "import-plugins:~plugins", "../../src/Vencord.ts", "../../src/webpack/index.ts", "../../src/webpack/types.ts"], "sourcesContent": ["/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport const VencordFragment = /* #__PURE__*/ Symbol.for(\"react.fragment\");\nexport let VencordCreateElement =\n (...args) => (VencordCreateElement = Vencord.Webpack.Common.React.createElement)(...args);\n", "/* the profile popout badge container(s) */\n[class*=\"profile\"] [class*=\"tags\"] [class*=\"container\"] {\n /* Discord has gap set to 2px instead of 1px, which causes the 12th badge to wrap to a new line. */\n gap: 1px;\n}", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport function makeLazy(factory: () => T, attempts = 5): () => T {\n let tries = 0;\n let cache: T;\n return () => {\n if (cache === undefined && attempts > tries++) {\n cache = factory();\n if (cache === undefined && attempts === tries)\n console.error(\"Lazy factory failed:\", factory);\n }\n return cache;\n };\n}\n\n// Proxies demand that these properties be unmodified, so proxyLazy\n// will always return the function default for them.\nconst unconfigurable = [\"arguments\", \"caller\", \"prototype\"];\n\nconst handler: ProxyHandler = {};\n\nexport const SYM_LAZY_GET = Symbol.for(\"vencord.lazy.get\");\nexport const SYM_LAZY_CACHED = Symbol.for(\"vencord.lazy.cached\");\n\nfor (const method of [\n \"apply\",\n \"construct\",\n \"defineProperty\",\n \"deleteProperty\",\n \"getOwnPropertyDescriptor\",\n \"getPrototypeOf\",\n \"has\",\n \"isExtensible\",\n \"ownKeys\",\n \"preventExtensions\",\n \"set\",\n \"setPrototypeOf\"\n]) {\n handler[method] =\n (target: any, ...args: any[]) => Reflect[method](target[SYM_LAZY_GET](), ...args);\n}\n\nhandler.ownKeys = target => {\n const v = target[SYM_LAZY_GET]();\n const keys = Reflect.ownKeys(v);\n for (const key of unconfigurable) {\n if (!keys.includes(key)) keys.push(key);\n }\n return keys;\n};\n\nhandler.getOwnPropertyDescriptor = (target, p) => {\n if (typeof p === \"string\" && unconfigurable.includes(p))\n return Reflect.getOwnPropertyDescriptor(target, p);\n\n const descriptor = Reflect.getOwnPropertyDescriptor(target[SYM_LAZY_GET](), p);\n\n if (descriptor) Object.defineProperty(target, p, descriptor);\n return descriptor;\n};\n\n/**\n * Wraps the result of {@link makeLazy} in a Proxy you can consume as if it wasn't lazy.\n * On first property access, the lazy is evaluated\n * @param factory lazy factory\n * @param attempts how many times to try to evaluate the lazy before giving up\n * @returns Proxy\n *\n * Note that the example below exists already as an api, see {@link findByPropsLazy}\n * @example const mod = proxyLazy(() => findByProps(\"blah\")); console.log(mod.blah);\n */\nexport function proxyLazy(factory: () => T, attempts = 5, isChild = false): T {\n let isSameTick = true;\n if (!isChild)\n setTimeout(() => isSameTick = false, 0);\n\n let tries = 0;\n const proxyDummy = Object.assign(function () { }, {\n [SYM_LAZY_CACHED]: void 0 as T | undefined,\n [SYM_LAZY_GET]() {\n if (!proxyDummy[SYM_LAZY_CACHED] && attempts > tries++) {\n proxyDummy[SYM_LAZY_CACHED] = factory();\n if (!proxyDummy[SYM_LAZY_CACHED] && attempts === tries)\n console.error(\"Lazy factory failed:\", factory);\n }\n return proxyDummy[SYM_LAZY_CACHED];\n }\n });\n\n return new Proxy(proxyDummy, {\n ...handler,\n get(target, p, receiver) {\n if (p === SYM_LAZY_CACHED || p === SYM_LAZY_GET)\n return Reflect.get(target, p, receiver);\n\n // if we're still in the same tick, it means the lazy was immediately used.\n // thus, we lazy proxy the get access to make things like destructuring work as expected\n // meow here will also be a lazy\n // `const { meow } = findByPropsLazy(\"meow\");`\n if (!isChild && isSameTick)\n return proxyLazy(\n () => Reflect.get(target[SYM_LAZY_GET](), p, receiver),\n attempts,\n true\n );\n const lazyTarget = target[SYM_LAZY_GET]();\n if (typeof lazyTarget === \"object\" || typeof lazyTarget === \"function\") {\n return Reflect.get(lazyTarget, p, receiver);\n }\n throw new Error(\"proxyLazy called on a primitive value\");\n }\n }) as any;\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport type { ComponentType } from \"react\";\n\nimport { makeLazy } from \"./lazy\";\n\nconst NoopComponent = () => null;\n\nexport type LazyComponentWrapper = ComponentType & { $$vencordGetWrappedComponent(): ComponentType; };\n\n/**\n * A lazy component. The factory method is called on first render.\n * @param factory Function returning a Component\n * @param attempts How many times to try to get the component before giving up\n * @returns Result of factory function\n */\nexport function LazyComponent(factory: () => ComponentType, attempts = 5): LazyComponentWrapper> {\n const get = makeLazy(factory, attempts);\n const LazyComponent = (props: T) => {\n const Component = get() ?? NoopComponent;\n return ;\n };\n\n LazyComponent.$$vencordGetWrappedComponent = get;\n\n return LazyComponent;\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport class Logger {\n /**\n * Returns the console format args for a title with the specified background colour and black text\n * @param color Background colour\n * @param title Text\n * @returns Array. Destructure this into {@link Logger}.errorCustomFmt or console.log\n *\n * @example logger.errorCustomFmt(...Logger.makeTitleElements(\"white\", \"Hello\"), \"World\");\n */\n static makeTitle(color: string, title: string): [string, ...string[]] {\n return [\"%c %c %s \", \"\", `background: ${color}; color: black; font-weight: bold; border-radius: 5px;`, title];\n }\n\n constructor(public name: string, public color: string = \"white\") { }\n\n private _log(level: \"log\" | \"error\" | \"warn\" | \"info\" | \"debug\", levelColor: string, args: any[], customFmt = \"\") {\n if (IS_REPORTER && IS_WEB && !IS_VESKTOP && !IS_EQUIBOP) {\n console[level](\"[Equicord]\", this.name + \":\", ...args);\n return;\n }\n\n console[level](\n `%c Equicord %c %c ${this.name} ${customFmt}`,\n `background: ${levelColor}; color: black; font-weight: bold; border-radius: 5px;`,\n \"\",\n `background: ${this.color}; color: black; font-weight: bold; border-radius: 5px;`\n , ...args\n );\n }\n\n public log(...args: any[]) {\n this._log(\"log\", \"#a6d189\", args);\n }\n\n public info(...args: any[]) {\n this._log(\"info\", \"#a6d189\", args);\n }\n\n public error(...args: any[]) {\n this._log(\"error\", \"#e78284\", args);\n }\n\n public errorCustomFmt(fmt: string, ...args: any[]) {\n this._log(\"error\", \"#e78284\", args, fmt);\n }\n\n public warn(...args: any[]) {\n this._log(\"warn\", \"#e5c890\", args);\n }\n\n public debug(...args: any[]) {\n this._log(\"debug\", \"#eebebe\", args);\n }\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nexport function createAndAppendStyle(id: string, target: HTMLElement) {\n const style = document.createElement(\"style\");\n style.id = id;\n target.append(style);\n return style;\n}\n\nexport const classNameToSelector = (name: string, prefix = \"\") => name.split(\" \").map(n => `.${prefix}${n}`).join(\"\");\n\nexport type ClassNameFactoryArg = string | string[] | Record | false | null | undefined | 0 | \"\";\n\n/**\n * @param prefix The prefix to add to each class, defaults to `\"\"`\n * @returns A classname generator function\n * @example\n * const cl = classNameFactory(\"plugin-\");\n *\n * cl(\"base\", [\"item\", \"editable\"], { selected: null, disabled: true })\n * // => \"plugin-base plugin-item plugin-editable plugin-disabled\"\n */\nexport const classNameFactory = (prefix: string = \"\") => (...args: ClassNameFactoryArg[]) => {\n const classNames = new Set();\n for (const arg of args) {\n if (arg && typeof arg === \"string\") classNames.add(arg);\n else if (Array.isArray(arg)) arg.forEach(name => classNames.add(name));\n else if (arg && typeof arg === \"object\") Object.entries(arg).forEach(([name, value]) => value && classNames.add(name));\n }\n return Array.from(classNames, name => prefix + name).join(\" \");\n};\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { classNameFactory } from \"@utils/css\";\n\nconst marginCls = classNameFactory(\"vc-margin-\");\n\nconst Directions = [\"top\", \"bottom\", \"left\", \"right\"] as const;\nconst Sizes = [4, 8, 16, 20, 24, 40, 60] as const;\n\nexport type MarginDirection = (typeof Directions)[number];\nexport type MarginSize = (typeof Sizes)[number];\n\nexport const Margins = {} as Record<`${MarginDirection}${MarginSize}` | \"reset\" | \"centerHorz\", string>;\n\nexport function generateMarginCss() {\n let css = \"\";\n\n for (const direction of Directions) {\n for (const size of Sizes) {\n const cl = marginCls(`${direction}-${size}`);\n Margins[`${direction}${size}`] = cl;\n css += `.${cl}{margin-${direction}:${size}px;}`;\n }\n }\n\n Margins.reset = marginCls(\"reset\");\n css += `.${Margins.reset}{margin:0;}`;\n\n Margins.centerHorz = marginCls(\"center-horz\");\n css += `.${Margins.centerHorz}{margin-left:auto;margin-right:auto;}`;\n\n return css;\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n// TODO: Migrate all usages from utils to components\nexport { Margins } from \"@components/margins\";\n", ".vc-error-card {\n padding: 1em;\n background-color: var(--background-feedback-critical, rgb(237 66 69 / 10%));\n border: 1px solid var(--text-status-dnd, #ed4245);\n border-radius: var(--radius-sm, 8px);\n color: var(--text-default);\n}\n\n.vc-error-card a {\n color: var(--text-link);\n}\n\n.vc-error-card a:hover {\n text-decoration: underline;\n}", ".vc-text-base {\n font-family: var(--font-primary);\n line-height: normal;\n\n /* Discord puts an insane default margin on p tags, so reset that here */\n margin: 0;\n}\n\n.vc-text-selectable {\n user-select: text;\n}\n\n.vc-text-line-clamp-1 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vc-text-line-clamp {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.vc-text-tabular-numbers {\n font-variant-numeric: tabular-nums;\n}\n\n.vc-text-defaultColor {\n color: var(--text-default);\n}", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./BaseText.css\";\n\nimport { classNameFactory } from \"@utils/css\";\nimport { classes } from \"@utils/misc\";\nimport type { Text as DiscordText } from \"@vencord/discord-types\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nconst textCls = classNameFactory(\"vc-text-\");\n\nexport const TextSizes = {\n xxs: { fontSize: \"10px\", lineHeight: \"1.2\" },\n xs: { fontSize: \"12px\", lineHeight: \"1.33333\" },\n sm: { fontSize: \"14px\", lineHeight: \"1.28571\" },\n md: { fontSize: \"16px\", lineHeight: \"1.25\" },\n lg: { fontSize: \"20px\", lineHeight: \"1.2\" },\n xl: { fontSize: \"24px\", lineHeight: \"1.25\" },\n xxl: { fontSize: \"32px\", lineHeight: \"1.25\" },\n} as const;\n\nexport const TextWeights = {\n thin: \"100\",\n extralight: \"200\",\n light: \"300\",\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n extrabold: \"800\",\n} as const;\n\nexport const TextColors = {\n \"text-default\": \"var(--text-default)\",\n \"text-muted\": \"var(--text-muted)\",\n \"text-link\": \"var(--text-link)\",\n \"text-danger\": \"var(--text-feedback-critical)\",\n \"text-brand\": \"var(--text-brand)\",\n \"text-strong\": \"var(--text-strong)\",\n \"text-subtle\": \"var(--text-subtle)\",\n \"text-invert\": \"var(--text-invert)\",\n \"text-feedback-critical\": \"var(--text-feedback-critical)\",\n \"text-feedback-info\": \"var(--text-feedback-info)\",\n \"text-feedback-positive\": \"var(--text-feedback-positive)\",\n \"text-feedback-warning\": \"var(--text-feedback-warning)\",\n \"text-status-dnd\": \"var(--text-status-dnd)\",\n \"text-status-idle\": \"var(--text-status-idle)\",\n \"text-status-offline\": \"var(--text-status-offline)\",\n \"text-status-online\": \"var(--text-status-online)\",\n \"control-text-critical\": \"var(--control-text-critical-secondary-default)\",\n \"control-text-primary\": \"var(--control-text-primary-default)\",\n} as const;\n\nexport function generateTextCss() {\n let css = \"\";\n\n for (const [size, { fontSize, lineHeight }] of Object.entries(TextSizes)) {\n css += `.${textCls(size)}{font-size:${fontSize};line-height:${lineHeight};}`;\n }\n\n for (const [weight, value] of Object.entries(TextWeights)) {\n css += `.${textCls(weight)}{font-weight:${value};}`;\n }\n\n return css;\n}\n\nexport type TextSize = keyof typeof TextSizes;\nexport type TextWeight = keyof typeof TextWeights;\nexport type TextColor = keyof typeof TextColors;\nexport type TextTag = \"div\" | \"span\" | \"p\" | `h${1 | 2 | 3 | 4 | 5 | 6}`;\n\nexport type BaseTextProps = ComponentPropsWithoutRef & {\n size?: TextSize;\n weight?: TextWeight;\n color?: TextColor;\n tag?: Tag;\n selectable?: boolean;\n lineClamp?: number;\n tabularNumbers?: boolean;\n defaultColor?: boolean;\n};\n\nexport function BaseText(props: BaseTextProps): ReactNode {\n const {\n size = \"md\",\n weight = \"normal\",\n color,\n tag: Tag = \"div\",\n selectable = false,\n lineClamp,\n tabularNumbers = false,\n defaultColor = true,\n children,\n className,\n style,\n ...restProps\n } = props;\n\n return (\n 1 && textCls(\"line-clamp\"),\n tabularNumbers && textCls(\"tabular-numbers\"),\n defaultColor && textCls(\"defaultColor\"),\n className\n )}\n style={{\n ...style,\n ...(color && { color: TextColors[color] }),\n ...(lineClamp && lineClamp > 1 && { WebkitLineClamp: lineClamp })\n }}\n {...restProps}\n >\n {children}\n \n );\n}\n\n// #region Old compatibility\n\nexport const TextCompat: DiscordText = function TextCompat({ color, variant, ...restProps }) {\n const newBaseTextProps = restProps as BaseTextProps;\n\n if (variant) {\n const [left, right] = variant.split(\"/\");\n if (left && right) {\n const size = left.split(\"-\").pop();\n newBaseTextProps.size = size as TextSize;\n newBaseTextProps.weight = right as TextWeight;\n }\n }\n\n if (color) {\n newBaseTextProps.style ??= {};\n newBaseTextProps.style.color = `var(--${color}, var(--text-default))`;\n }\n\n return ;\n};\n\n// #endregion\n", ".vc-btn-base {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n max-width: 100%;\n border: 1px solid transparent;\n border-radius: var(--radius-sm, 8px);\n font-family: var(--font-primary);\n text-align: start;\n transition: 50ms ease-in;\n transition-property: background-color, color, border-color, opacity;\n background: var(--control-secondary-background-default);\n color: var(--text-default);\n white-space: nowrap;\n\n &:hover {\n transition: .15s ease-out;\n }\n\n &:disabled {\n opacity: .5;\n pointer-events: none;\n cursor: not-allowed;\n }\n\n &:focus-visible {\n /* stylelint-disable-next-line custom-property-pattern */\n box-shadow: 0 0 0 4px var(--__adaptive-focus-ring-color, var(--border-focus, #00b0f4));\n }\n}\n\n.vc-btn-min,\n.vc-btn-xs {\n padding: 3px 7px;\n min-height: 22px;\n min-width: unset;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.3333;\n}\n\n.vc-btn-xs {\n min-width: 60px;\n}\n\n.vc-btn-small {\n padding: 3px 11px;\n min-height: 30px;\n min-width: 60px;\n font-size: 14px;\n font-weight: 500;\n line-height: 1.2857;\n}\n\n.vc-btn-medium {\n padding: 7px 15px;\n min-height: 38px;\n min-width: 100px;\n font-size: 16px;\n font-weight: 500;\n line-height: 1.25;\n}\n\n.vc-btn-iconOnly {\n width: 32px;\n height: 32px;\n min-width: unset;\n min-height: unset;\n padding: 0;\n background-color: transparent;\n border-color: transparent;\n\n &:hover {\n background-color: var(--control-icon-only-background-hover);\n border-color: var(--control-icon-only-border-hover);\n }\n\n &:active {\n background-color: var(--control-icon-only-background-active);\n border-color: var(--control-icon-only-border-active);\n }\n}\n\n.vc-btn-primary {\n background-color: var(--control-primary-background-default);\n border-color: var(--control-primary-border-default);\n color: var(--control-primary-text-default);\n\n &:hover {\n background-color: var(--control-primary-background-hover);\n border-color: var(--control-primary-border-hover);\n color: var(--control-primary-text-hover);\n }\n}\n\n.vc-btn-secondary,\n.vc-btn-link {\n background-color: var(--control-secondary-background-default);\n border-color: var(--control-secondary-border-default);\n color: var(--control-secondary-text-default);\n\n &:hover {\n background-color: var(--control-secondary-background-hover);\n border-color: var(--control-secondary-border-hover);\n color: var(--control-secondary-text-hover);\n }\n}\n\n.vc-btn-dangerPrimary {\n background-color: var(--control-critical-primary-background-default);\n border-color: var(--control-critical-primary-border-default);\n color: var(--control-critical-primary-text-default);\n\n &:hover {\n background-color: var(--control-critical-primary-background-hover);\n border-color: var(--control-critical-primary-border-hover);\n color: var(--control-critical-primary-text-hover);\n }\n}\n\n.vc-btn-dangerSecondary {\n background-color: var(--control-critical-secondary-background-default);\n border-color: var(--control-critical-secondary-border-default);\n color: var(--control-critical-secondary-text-default);\n\n &:hover {\n background-color: var(--control-critical-secondary-background-hover);\n border-color: var(--control-critical-secondary-border-hover);\n color: var(--control-critical-secondary-text-hover);\n }\n}\n\n.vc-btn-overlayPrimary {\n background-color: var(--control-overlay-primary-background-default);\n border-color: var(--control-overlay-primary-border-default);\n color: var(--control-overlay-primary-text-default);\n\n &:hover {\n background-color: var(--control-overlay-primary-background-hover);\n border-color: var(--control-overlay-primary-border-hover);\n color: var(--control-overlay-primary-text-hover);\n }\n}\n\n.vc-btn-positive {\n background-color: var(--control-connected-background-default, var(--green-430));\n color: var(--white);\n\n &:hover {\n background-color: var(--control-connected-background-hover, var(--green-460));\n }\n}\n\n.vc-btn-none {\n background-color: transparent;\n border-color: transparent;\n color: var(--control-icon-only-icon-default);\n\n &:hover {\n background-color: var(--control-icon-only-background-hover);\n border-color: var(--control-icon-only-border-hover);\n color: var(--control-icon-only-icon-hover);\n }\n}\n\n.vc-btn-link-icon {\n width: 0.875em;\n height: 0.875em;\n margin-left: 8px;\n flex-shrink: 0;\n}\n\n.vc-text-btn-base {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n gap: var(--space-4, 4px);\n background: initial;\n color: var(--text-default);\n font-size: medium;\n font-weight: 400;\n margin: 0;\n padding: 0;\n text-align: start;\n text-decoration: none;\n max-width: 100%;\n white-space: nowrap;\n\n &:disabled {\n opacity: 0.5;\n }\n\n &:hover {\n text-decoration: underline;\n }\n\n &:focus-visible {\n /* stylelint-disable-next-line custom-property-pattern */\n box-shadow: 0 0 0 4px var(--__adaptive-focus-ring-color, var(--border-focus, #00b0f4));\n }\n}\n\n.vc-text-btn-primary {\n color: var(--text-brand);\n}\n\n.vc-text-btn-secondary {\n color: var(--text-strong, var(--text-default));\n}\n\n.vc-text-btn-danger {\n color: var(--text-feedback-critical);\n}\n\n.vc-text-btn-link {\n color: var(--text-link);\n}", ".vc-owner-crown-icon {\n color: var(--status-warning);\n}", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nexport function copyToClipboard(text: string): Promise {\n return IS_DISCORD_DESKTOP ? DiscordNative.clipboard.copy(text) : navigator.clipboard.writeText(text);\n}\n\nexport function readClipboard(): Promise {\n return IS_DISCORD_DESKTOP ? DiscordNative.clipboard.read() : navigator.clipboard.readText();\n}\n", "// xxHash64 implementation in JavaScript\n//\n// Licensed under MIT License\n//\n// Copyright 2019-2020, Yann Collet \n// Copyright 2016, Pierre Curto \n// Copyright 2019, Daniel Lo Nigro \n// Copyright 2021, intrnl \n\nconst PRIME64_1 = 11400714785074694791n;\nconst PRIME64_2 = 14029467366897019727n;\nconst PRIME64_3 = 1609587929392839161n;\nconst PRIME64_4 = 9650029242287828579n;\nconst PRIME64_5 = 2870177450012600261n;\n\nconst BITS = 64n;\nconst BITMASK = 2n ** BITS - 1n;\n\nconst encoder = new TextEncoder();\n\n\nfunction bitsToBigInt (a00, a16, a32, a48) {\n\treturn (\n\t\t(BigInt(a00)) |\n\t\t(BigInt(a16) << 16n) |\n\t\t(BigInt(a32) << 32n) |\n\t\t(BigInt(a48) << 48n)\n\t);\n}\n\nfunction memoryToBigInt(memory, offset) {\n\treturn (\n\t\t(BigInt(memory[offset])) |\n\t\t(BigInt(memory[offset+1]) << 8n) |\n\t\t(BigInt(memory[offset+2]) << 16n) |\n\t\t(BigInt(memory[offset+3]) << 24n) |\n\t\t(BigInt(memory[offset+4]) << 32n) |\n\t\t(BigInt(memory[offset+5]) << 40n) |\n\t\t(BigInt(memory[offset+6]) << 48n) |\n\t\t(BigInt(memory[offset+7]) << 56n)\n\t);\n}\n\nfunction rotl (value, rotation) {\n\treturn (\n\t\t((value << rotation) & BITMASK) |\n\t\t(value >> (BITS - rotation))\n\t);\n}\n\nfunction trunc (value) {\n\treturn BigInt.asUintN(64, value);\n}\n\n\nexport class XXH64 {\n\t#seed;\n\t#v1;\n\t#v2;\n\t#v3;\n\t#v4;\n\n\t#memory;\n\n\t#len;\n\t#memsize;\n\n\tconstructor (seed = 0) {\n\t\tthis.reset(seed);\n\t}\n\n\treset (seed = this.#seed) {\n\t\tthis.#seed = BigInt.asUintN(32, BigInt(seed));\n\t\tthis.#v1 = trunc(this.#seed + PRIME64_1 + PRIME64_2);\n\t\tthis.#v2 = trunc(this.#seed + PRIME64_2);\n\t\tthis.#v3 = this.#seed;\n\t\tthis.#v4 = trunc(this.#seed - PRIME64_1);\n\n\t\tthis.#memory = null;\n\n\t\tthis.#len = 0;\n\t\tthis.#memsize = 0;\n\n\t\treturn this;\n\t}\n\n\tupdate (input) {\n\t\tif (typeof input === 'string') {\n\t\t\tinput = encoder.encode(input);\n\t\t}\n\n\t\tlet p = 0;\n\t\tlet len = input.length;\n\t\tlet bEnd = p + len;\n\n\t\tif (len === 0) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#len += len;\n\n\t\tif (this.#memsize === 0) {\n\t\t\tthis.#memory = new Uint8Array(32);\n\t\t}\n\n\t\tif (this.#memsize + len < 32) {\n\t\t\tthis.#memory.set(input.subarray(0, len), this.#memsize);\n\n\t\t\tthis.#memsize += len;\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#memsize > 0) {\n\t\t\tthis.#memory.set(input.subarray(0, 32 - this.#memsize), this.#memsize);\n\n\t\t\tlet p64 = 0;\n\t\t\tlet other;\n\n\t\t\tother = memoryToBigInt(this.#memory, p64);\n\t\t\tthis.#v1 = trunc(rotl(trunc(this.#v1 + other * PRIME64_2), 31n) * PRIME64_1);\n\n\t\t\tp64 += 8\n\t\t\tother = memoryToBigInt(this.memory, p64)\n\t\t\tthis.#v2 = trunc(rotl(trunc(this.#v2 + other * PRIME64_2), 31n) * PRIME64_1);\n\n\t\t\tp64 += 8\n\t\t\tother = memoryToBigInt(this.memory, p64)\n\t\t\tthis.#v3 = trunc(rotl(trunc(this.#v3 + other * PRIME64_2), 31n) * PRIME64_1);\n\n\t\t\tp64 += 8\n\t\t\tother = memoryToBigInt(this.memory, p64)\n\t\t\tthis.#v4 = trunc(rotl(trunc(this.#v4 + other * PRIME64_2), 31n) * PRIME64_1);\n\n\t\t\tp += 32 - this.#memsize;\n\t\t\tthis.#memsize = 0;\n\t\t}\n\n\t\tif (p <= bEnd - 32) {\n\t\t\tconst limit = bEnd - 32;\n\n\t\t\tdo {\n\t\t\t\tlet other;\n\n\t\t\t\tother = memoryToBigInt(input, p)\n\t\t\t\tthis.#v1 = trunc(rotl(trunc(this.#v1 + other * PRIME64_2), 31n) * PRIME64_1);\n\t\t\t\tp += 8\n\n\t\t\t\tother = memoryToBigInt(input, p)\n\t\t\t\tthis.#v2 = trunc(rotl(trunc(this.#v2 + other * PRIME64_2), 31n) * PRIME64_1);\n\t\t\t\tp += 8\n\n\t\t\t\tother = memoryToBigInt(input, p)\n\t\t\t\tthis.#v3 = trunc(rotl(trunc(this.#v3 + other * PRIME64_2), 31n) * PRIME64_1);\n\t\t\t\tp += 8\n\n\t\t\t\tother = memoryToBigInt(input, p)\n\t\t\t\tthis.#v4 = trunc(rotl(trunc(this.#v4 + other * PRIME64_2), 31n) * PRIME64_1);\n\t\t\t\tp += 8\n\t\t\t} while (p <= limit)\n\t\t}\n\n\t\tif (p < bEnd) {\n\t\t\tthis.#memory.set(input.subarray(p, bEnd), this.#memsize);\n\t\t\tthis.#memsize = bEnd - p;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tdigest () {\n\t\tlet input = this.#memory;\n\n\t\tlet bEnd = this.#memsize;\n\t\tlet p = 0;\n\t\tlet h64 = 0n;\n\t\tlet h = 0n;\n\t\tlet u = 0n;\n\n\t\tif (this.#len >= 32) {\n\t\t\th64 = rotl(this.#v1, 1n) + rotl(this.#v2, 7n) + rotl(this.#v3, 12n) + rotl(this.#v4, 18n);\n\n\t\t\th64 = trunc(h64 ^ (rotl(trunc(this.#v1 * PRIME64_2), 31n) * PRIME64_1));\n\t\t\th64 = trunc(h64 * PRIME64_1 + PRIME64_4);\n\n\t\t\th64 = trunc(h64 ^ (rotl(trunc(this.#v2 * PRIME64_2), 31n) * PRIME64_1));\n\t\t\th64 = trunc(h64 * PRIME64_1 + PRIME64_4);\n\n\t\t\th64 = trunc(h64 ^ (rotl(trunc(this.#v3 * PRIME64_2), 31n) * PRIME64_1));\n\t\t\th64 = trunc(h64 * PRIME64_1 + PRIME64_4);\n\n\t\t\th64 = trunc(h64 ^ (rotl(trunc(this.#v4 * PRIME64_2), 31n) * PRIME64_1));\n\t\t\th64 = trunc(h64 * PRIME64_1 + PRIME64_4);\n\t\t}\n\t\telse {\n\t\t\th64 = trunc(this.#seed + PRIME64_5);\n\t\t}\n\n\t\th64 += BigInt(this.#len);\n\n\t\twhile (p <= bEnd - 8) {\n\t\t\tu = memoryToBigInt(input, p);\n\t\t\tu = trunc(rotl(trunc(u * PRIME64_2), 31n) * PRIME64_1);\n\n\t\t\th64 = trunc((rotl(h64 ^ u, 27n) * PRIME64_1) + PRIME64_4);\n\t\t\tp += 8;\n\t\t}\n\n\t\tif (p + 4 <= bEnd) {\n\t\t\tu = bitsToBigInt((input[p+1] << 8) | input[p], (input[p+3] << 8) | input[p+2], 0, 0);\n\t\t\th64 = trunc((rotl(h64 ^ trunc((u * PRIME64_1)), 23n) * PRIME64_2) + PRIME64_3);\n\t\t\tp += 4;\n\t\t}\n\n\t\twhile (p < bEnd) {\n\t\t\tu = bitsToBigInt(input[p++], 0, 0, 0);\n\t\t\th64 = trunc(rotl(h64 ^ trunc(u * PRIME64_5), 11n) * PRIME64_1);\n\t\t}\n\n\t\th = trunc(h64 >> 33n);\n\t\th64 = trunc((h64 ^ h) * PRIME64_2);\n\n\t\th = trunc(h64 >> 29n);\n\t\th64 = trunc((h64 ^ h) * PRIME64_3);\n\n\t\th = trunc(h64 >> 32n);\n\t\th64 = trunc(h64 ^ h);\n\n\t\treturn h64;\n\t}\n}\n\nexport function hash (input, seed = 0) {\n\treturn new XXH64(seed).update(input).digest();\n}\n", "/* eslint-disable simple-header/header */\n\n/**\n * discord-intl\n *\n * @copyright 2024 Discord, Inc.\n * @link https://github.com/discord/discord-intl\n * @license MIT\n */\n\nimport { hash as h64 } from \"@intrnl/xxhash64\";\n\nconst BASE64_TABLE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");\nconst IS_BIG_ENDIAN = (() => {\n const array = new Uint8Array(4);\n const view = new Uint32Array(array.buffer);\n return !((view[0] = 1) & array[0]);\n})();\n\nfunction numberToBytes(number: number | bigint) {\n number = BigInt(number);\n const array: number[] = [];\n const byteCount = Math.ceil(Math.floor(Math.log2(Number(number)) + 1) / 8);\n for (let i = 0; i < byteCount; i++) {\n array.unshift(Number((number >> BigInt(8 * i)) & BigInt(255)));\n }\n\n const bytes = new Uint8Array(array);\n // The native `hashToMessageKey` always works in Big/Network Endian bytes, so this array\n // needs to be converted to the same endianness to get the same base64 result.\n return IS_BIG_ENDIAN ? bytes : bytes.reverse();\n}\n\n/**\n * Returns a consistent, short hash of the given key by first processing it through a hash digest,\n * then encoding the first few bytes to base64.\n *\n * This function is specifically written to mirror the native backend hashing function used by\n * `@discord/intl-loader-core`, to be able to hash names at runtime.\n */\nexport function runtimeHashMessageKey(key: string): string {\n const hash = h64(key, 0);\n const bytes = numberToBytes(hash);\n return [\n BASE64_TABLE[bytes[0] >> 2],\n BASE64_TABLE[((bytes[0] & 0x03) << 4) | (bytes[1] >> 4)],\n BASE64_TABLE[((bytes[1] & 0x0f) << 2) | (bytes[2] >> 6)],\n BASE64_TABLE[bytes[2] & 0x3f],\n BASE64_TABLE[bytes[3] >> 2],\n BASE64_TABLE[((bytes[3] & 0x03) << 4) | (bytes[4] >> 4)],\n ].join(\"\");\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport type { MessageObject } from \"@api/MessageEvents\";\nimport type { Channel, CloudUpload, Guild, GuildFeatures, MediaModalItem, MediaModalProps, Message, User } from \"@vencord/discord-types\";\nimport { ChannelActionCreators, ChannelStore, ComponentDispatch, Constants, FluxDispatcher, GuildStore, i18n, InviteActions, MessageActions, openMediaModal, RestAPI, SelectedChannelStore, SelectedGuildStore, Toasts, UserProfileActions, UserProfileStore, UserSettingsActionCreators, UserUtils } from \"@webpack/common\";\nimport { Except } from \"type-fest\";\n\nimport { copyToClipboard } from \"./clipboard\";\nimport { runtimeHashMessageKey } from \"./intlHash\";\nimport { Logger } from \"./Logger\";\n\nconst IntlManagerLogger = new Logger(\"IntlManager\");\n\n/**\n * Get an internationalized message from a non hashed key\n * @param key The plain message key\n * @param values The values to interpolate, if it's a rich message\n */\nexport function getIntlMessage(key: string, values?: Record): any {\n return getIntlMessageFromHash(runtimeHashMessageKey(key), values, key);\n}\n\n/**\n * Get an internationalized message from a hashed key\n * @param hashedKey The hashed message key\n * @param values The values to interpolate, if it's a rich message\n */\nexport function getIntlMessageFromHash(hashedKey: string, values?: Record, originalKey?: string): any {\n try {\n return values == null ? i18n.intl.string(i18n.t[hashedKey]) : i18n.intl.format(i18n.t[hashedKey], values);\n } catch (e) {\n IntlManagerLogger.error(`Failed to get intl message for key: ${originalKey ?? hashedKey}`, e);\n return originalKey ?? \"\";\n }\n}\n\n/**\n * Open the invite modal\n * @param code The invite code\n * @returns Whether the invite was accepted\n */\nexport async function openInviteModal(code: string) {\n const { invite } = await InviteActions.resolveInvite(code, \"Desktop Modal\");\n if (!invite) throw new Error(\"Invalid invite: \" + code);\n\n FluxDispatcher.dispatch({\n type: \"INVITE_MODAL_OPEN\",\n invite,\n code,\n context: \"APP\"\n });\n\n return new Promise(r => {\n let onClose: () => void, onAccept: () => void;\n let inviteAccepted = false;\n\n FluxDispatcher.subscribe(\"INVITE_ACCEPT\", onAccept = () => {\n inviteAccepted = true;\n });\n\n FluxDispatcher.subscribe(\"INVITE_MODAL_CLOSE\", onClose = () => {\n FluxDispatcher.unsubscribe(\"INVITE_MODAL_CLOSE\", onClose);\n FluxDispatcher.unsubscribe(\"INVITE_ACCEPT\", onAccept);\n r(inviteAccepted);\n });\n });\n}\n\nexport function getCurrentChannel(): Channel | undefined {\n return ChannelStore.getChannel(SelectedChannelStore.getChannelId());\n}\n\nexport function getCurrentGuild(): Guild | undefined {\n return GuildStore.getGuild(getCurrentChannel()?.guild_id!);\n}\n\nexport function openPrivateChannel(userId: string, navigateToChannel = true) {\n return ChannelActionCreators.openPrivateChannel({ recipientIds: [userId], navigateToChannel });\n}\n\nexport const enum Theme {\n Dark = 1,\n Light = 2\n}\n\nexport function getTheme(): Theme {\n try {\n return UserSettingsActionCreators.PreloadedUserSettingsActionCreators.getCurrentValue()?.appearance?.theme;\n } catch {\n return Theme.Dark;\n }\n}\n\nexport function insertTextIntoChatInputBox(text: string) {\n ComponentDispatch.dispatchToLastSubscribed(\"INSERT_TEXT\", {\n rawText: text,\n plainText: text\n });\n}\n\nexport async function copyWithToast(text: string, toastMessage = \"Copied to clipboard!\") {\n await copyToClipboard(text);\n Toasts.show({\n message: toastMessage,\n id: Toasts.genId(),\n type: Toasts.Type.SUCCESS\n });\n}\n\nexport interface MessageOptions {\n messageReference: Message[\"messageReference\"];\n allowedMentions: {\n parse: string[];\n replied_user: boolean;\n };\n stickerIds: string[];\n attachmentsToUpload: CloudUpload[];\n poll: {\n allow_multiselect: boolean;\n answers: Array<{\n poll_media: {\n text: string;\n attachment_ids?: unknown;\n emoji?: { name: string; id?: string; };\n };\n }>;\n duration: number;\n layout_type: number;\n question: { text: string; };\n };\n}\n\nexport function sendMessage(\n channelId: string,\n data: Partial,\n waitForChannelReady = true,\n options: Partial = {}\n) {\n const messageData = {\n content: \"\",\n invalidEmojis: [],\n tts: false,\n validNonShortcutEmojis: [],\n ...data\n };\n\n return MessageActions.sendMessage(channelId, messageData, waitForChannelReady, options);\n}\n\n/**\n * You must specify either height or width in the item\n */\nexport function openImageModal(item: Except, mediaModalProps?: Omit) {\n return openMediaModal({\n items: [{\n type: \"IMAGE\",\n original: item.original ?? item.url,\n ...item,\n }],\n ...mediaModalProps\n });\n}\n\nexport async function openUserProfile(id: string) {\n const user = await UserUtils.getUser(id);\n if (!user) throw new Error(\"No such user: \" + id);\n\n const guildId = SelectedGuildStore.getGuildId();\n UserProfileActions.openUserProfileModal({\n userId: id,\n guildId,\n channelId: SelectedChannelStore.getChannelId(),\n analyticsLocation: {\n page: guildId ? \"Guild Channel\" : \"DM Channel\",\n section: \"Profile Popout\"\n }\n });\n}\n\ninterface FetchUserProfileOptions {\n friend_token?: string;\n connections_role_id?: string;\n guild_id?: string;\n with_mutual_guilds?: boolean;\n with_mutual_friends_count?: boolean;\n}\n\n/**\n * Fetch a user's profile\n */\nexport async function fetchUserProfile(id: string, options?: FetchUserProfileOptions, cache = true) {\n const cached = UserProfileStore.getUserProfile(id);\n if (cached && cache) return cached;\n\n FluxDispatcher.dispatch({ type: \"USER_PROFILE_FETCH_START\", userId: id });\n\n const { body } = await RestAPI.get({\n url: Constants.Endpoints.USER_PROFILE(id),\n query: {\n with_mutual_guilds: false,\n with_mutual_friends_count: false,\n ...options\n },\n oldFormErrors: true,\n });\n\n FluxDispatcher.dispatch({ type: \"USER_UPDATE\", user: body.user });\n await FluxDispatcher.dispatch({ type: \"USER_PROFILE_FETCH_SUCCESS\", userProfile: body });\n if (options?.guild_id && body.guild_member)\n FluxDispatcher.dispatch({ type: \"GUILD_MEMBER_PROFILE_UPDATE\", guildId: options.guild_id, guildMember: body.guild_member });\n\n return UserProfileStore.getUserProfile(id);\n}\n\n/**\n * Get the unique username for a user. Returns user.username for pomelo people, user.tag otherwise\n */\nexport function getUniqueUsername(user: User) {\n return user.discriminator === \"0\" ? user.username : user.tag;\n}\n\n// Discord has a similar function in their code\nexport function getGuildAcronym(guild: Guild): string {\n return guild.name\n .replaceAll(\"'s \", \" \")\n .replace(/\\w+/g, m => m[0])\n .replace(/\\s/g, \"\");\n}\n\nexport function hasGuildFeature(guild: Guild, feature: GuildFeatures): boolean {\n return guild.features?.has(feature) ?? false;\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./iconStyles.css\";\n\nimport { getIntlMessage } from \"@utils/discord\";\nimport { classes } from \"@utils/misc\";\nimport type { JSX, PropsWithChildren } from \"react\";\n\ninterface BaseIconProps extends IconProps {\n viewBox: string;\n}\n\ntype IconProps = JSX.IntrinsicElements[\"svg\"];\n\nexport const DiscordIconSizes = {\n xxs: 12,\n xs: 16,\n sm: 18,\n md: 24,\n lg: 32,\n refresh_sm: 20\n} as const;\n\nfunction Icon({ height = 24, width = 24, className, children, viewBox, ...svgProps }: PropsWithChildren) {\n return (\n \n {children}\n \n );\n}\n\n/**\n * Discord's link icon, as seen in the Message context menu \"Copy Message Link\" option\n */\nexport function LinkIcon({ height = 24, width = 24, className }: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\n/**\n * Discord's copy icon, as seen in the user panel popout on the right of the username and in large code blocks\n */\nexport function CopyIcon(props: IconProps) {\n return (\n \n \n \n \n \n \n \n );\n}\n\n/**\n * Discord's ID icon, as seen in Developer Mode \"Copy ID\" context menu items\n */\nexport function CopyIdIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\n/**\n * Discord's open external icon, as seen in the user profile connections\n */\nexport function OpenExternalIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function ImageIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function InfoIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function WarningIcon({ height = 32, width = 32, className }: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function OwnerCrownIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\n/**\n * Discord's screenshare icon, as seen in the connection panel\n */\nexport function ScreenshareIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function ImageVisible(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function ImageInvisible(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function Microphone(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function CogWheel(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function ReplyIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function DeleteIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\n/**\n * A plugin icon, created by CorellanStoma. https://github.com/CreArts-Community/Settings-Icons\n */\nexport function PluginIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function PlusIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function NoEntrySignIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function PasteIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function ResetIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function SafetyIcon(props: IconProps) {\n return (\n \n \n \n\n );\n}\n\nexport function NotesIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IDIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function FolderIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function LogIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function RestartIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function PaintbrushIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function PencilIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function GithubIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function WebsiteIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\n/**\n * A question mark inside a square, used as a placeholder icon when no other icon is available\n */\nexport function PlaceholderIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function MainSettingsIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function PluginsIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function CloudIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function BackupRestoreIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function UpdaterIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function PatchHelperIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function VesktopSettingsIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function EyeIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function ColorPaletteIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function MagnifyingGlassIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function CloudDownloadIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function CloudUploadIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function ClockIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function ChevronSmallDownIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function ChevronSmallUpIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function DownArrow(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function RightArrow(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport const QrCodeIcon = (props?: any) => {\n return (\n \n \n \n \n );\n};\n\nexport const ComponentsIcon = (props?: any) => {\n return (\n \n \n \n \n );\n};\n\nexport const LogsIcon = (props?: any) => {\n return (\n \n \n \n );\n};\n\nexport const BookmarkIcon = (props?: any) => {\n return (\n \n \n \n );\n};\n\nexport function RobotIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function HeadphonesIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function ShieldIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function CircleQuestionIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function AttachmentIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function StickerIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function GifIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function VideoIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function CreditCardIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function AppsIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function VencordIcon(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function GameControllerIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function HammerAndChiselIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function EquicordIcon(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function UserIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function PencilSparkleIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function HammerIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function AchievementsIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function SkullIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function DoubleCheckmarkIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function StarFilled(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function StarOutlined(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function SearchIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function TopRightArrow(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function CheckmarkLargeBoldIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function XLargeBoldIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function UnsendIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function WindowTopOutlineIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function BookCheckIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function TrashIcon(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function AtIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function TextIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function FireIcon(props: IconProps) {\n return (\n \n \n \n );\n}\n", ".vc-link {\n color: var(--text-link);\n text-decoration: var(--link-decoration);\n}\n\n.vc-link-underline-on-hover:hover {\n text-decoration: underline;\n}\n\n.vc-link-disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n\n/* Forced colors mode (high contrast accessibility) */\n.enable-forced-colors .vc-link,\n.enable-forced-colors .vc-link-underline-on-hover {\n background-color: canvas;\n text-decoration: underline;\n color: linktext !important;\n}\n\n.enable-forced-colors .vc-link svg,\n.enable-forced-colors .vc-link-underline-on-hover svg {\n color: currentcolor;\n}\n\n.enable-forced-colors .vc-link:not([href]),\n.enable-forced-colors .vc-link-underline-on-hover:not([href]) {\n background-color: buttonface;\n color: buttontext !important;\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./Link.css\";\n\nimport { classes } from \"@utils/misc\";\nimport type { AnchorHTMLAttributes, DetailedHTMLProps, PropsWithChildren } from \"react\";\n\nexport interface LinkProps extends DetailedHTMLProps, HTMLAnchorElement> {\n disabled?: boolean;\n useDefaultUnderlineStyles?: boolean;\n}\n\nexport function Link({\n disabled,\n useDefaultUnderlineStyles = true,\n href,\n rel,\n target,\n className,\n children,\n ...restProps\n}: PropsWithChildren) {\n const isInternal = href && /^(?:discord:\\/)?\\/[a-zA-Z0-9_-]/.test(href);\n const needsSafeAttrs = href && !isInternal;\n\n return (\n \n {children}\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./Button.css\";\n\nimport { classNameFactory } from \"@utils/css\";\nimport { classes } from \"@utils/misc\";\nimport type { Button as DiscordButton } from \"@vencord/discord-types\";\nimport type { ComponentPropsWithRef } from \"react\";\n\nimport { OpenExternalIcon } from \"./Icons\";\nimport { Link } from \"./Link\";\n\nconst btnCls = classNameFactory(\"vc-btn-\");\nconst textBtnCls = classNameFactory(\"vc-text-btn-\");\n\nexport type ButtonVariant =\n \"primary\" | \"secondary\" | \"dangerPrimary\" | \"dangerSecondary\" | \"overlayPrimary\" | \"positive\" | \"link\" | \"none\";\nexport type ButtonSize = \"min\" | \"xs\" | \"small\" | \"medium\" | \"iconOnly\";\n\nexport type ButtonProps = ComponentPropsWithRef<\"button\"> & {\n variant?: ButtonVariant;\n size?: ButtonSize;\n};\n\nexport type LinkButtonProps = ComponentPropsWithRef<\"a\"> & {\n size?: ButtonSize;\n variant?: ButtonVariant;\n};\n\nexport function Button({ variant = \"primary\", size = \"medium\", children, className, ...restProps }: ButtonProps) {\n return (\n \n );\n}\n\nexport function LinkButton({ variant = \"link\", size = \"medium\", className, children, ...restProps }: LinkButtonProps) {\n return (\n \n {children}\n \n \n );\n}\n\nexport type TextButtonVariant = \"primary\" | \"secondary\" | \"danger\" | \"link\";\n\nexport type TextButtonProps = ComponentPropsWithRef<\"button\"> & {\n variant?: TextButtonVariant;\n};\n\nexport function TextButton({ variant = \"primary\", className, ...restProps }: TextButtonProps) {\n return (\n \n \n ),\n async start() {\n await loadBadges();\n clearInterval(intervalId);\n intervalId = setInterval(loadBadges, 1000 * 60 * 30);\n },\n async stop() {\n clearInterval(intervalId);\n },\n toolboxActions: {\n async \"Refetch Global Badges\"() {\n await loadBadges();\n Toasts.show({\n id: Toasts.genId(),\n message: \"Successfully refetched global badges!\",\n type: Toasts.Type.SUCCESS\n });\n }\n },\n get GlobalBadges() {\n return GlobalBadges;\n },\n getGlobalBadges(userId: string) {\n return GlobalBadges[userId]?.map((badge, idx) => ({\n id: `global_badges_badge_${idx}`,\n iconSrc: badge.badge,\n description: badge.tooltip,\n position: BadgePosition.START,\n props: {\n style: {\n borderRadius: \"50%\",\n transform: \"scale(0.9)\"\n }\n },\n onContextMenu(event, badge) {\n ContextMenuApi.openContextMenu(event, () => );\n },\n } satisfies ProfileBadge));\n }\n});\n", ".vc-chatbar-button {\n display: flex;\n align-items: center;\n}\n\n/* FIXME: bad name\n_7f7a2c5f23327d73 */\n.vc-chatbar-discord-button {\n opacity: .7;\n align-items: center;\n align-self: center;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n justify-content: center;\n padding: 10px;\n\n &:hover {\n background: hsl(0deg 0% 100% / 10%);\n opacity: 1\n }\n}\n\n/* _3f4f204c3133fb93 */\n.vc-chatbar-button-wrapper {\n align-self: center;\n display: flex;\n flex-direction: row;\n gap: 8px;\n}", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Logger } from \"@utils/Logger\";\nimport { Menu, React } from \"@webpack/common\";\nimport type { ReactElement } from \"react\";\n\n/**\n * @param children The rendered context menu elements\n * @param args Any arguments passed into making the context menu, like the guild, channel, user or message for example\n */\nexport type NavContextMenuPatchCallback = (children: Array | null>, ...args: Array) => void;\n/**\n * @param navId The navId of the context menu being patched\n * @param children The rendered context menu elements\n * @param args Any arguments passed into making the context menu, like the guild, channel, user or message for example\n */\nexport type GlobalContextMenuPatchCallback = (navId: string, children: Array | null>, ...args: Array) => void;\n\nconst ContextMenuLogger = new Logger(\"ContextMenu\");\n\nexport const navPatches = new Map>();\nexport const globalPatches = new Set();\n\n/**\n * Add a context menu patch\n * @param navId The navId(s) for the context menu(s) to patch\n * @param patch The patch to be applied\n */\nexport function addContextMenuPatch(navId: string | Array, patch: NavContextMenuPatchCallback) {\n if (!Array.isArray(navId)) navId = [navId];\n for (const id of navId) {\n let contextMenuPatches = navPatches.get(id);\n if (!contextMenuPatches) {\n contextMenuPatches = new Set();\n navPatches.set(id, contextMenuPatches);\n }\n\n contextMenuPatches.add(patch);\n }\n}\n\n/**\n * Add a global context menu patch that fires the patch for all context menus\n * @param patch The patch to be applied\n */\nexport function addGlobalContextMenuPatch(patch: GlobalContextMenuPatchCallback) {\n globalPatches.add(patch);\n}\n\n/**\n * Remove a context menu patch\n * @param navId The navId(s) for the context menu(s) to remove the patch\n * @param patch The patch to be removed\n * @returns Whether the patch was successfully removed from the context menu(s)\n */\nexport function removeContextMenuPatch>(navId: T, patch: NavContextMenuPatchCallback): T extends string ? boolean : Array {\n const navIds: string[] = Array.isArray(navId) ? navId : [navId];\n\n const results = navIds.map(id => navPatches.get(id)?.delete(patch) ?? false);\n\n return (Array.isArray(navId) ? results : results[0]) as T extends string ? boolean : Array;\n}\n\n/**\n * Remove a global context menu patch\n * @param patch The patch to be removed\n * @returns Whether the patch was successfully removed\n */\nexport function removeGlobalContextMenuPatch(patch: GlobalContextMenuPatchCallback): boolean {\n return globalPatches.delete(patch);\n}\n\n/**\n * A helper function for finding the children array of a group nested inside a context menu based on the id(s) of its children\n * @param id The id of the child. If an array is specified, all ids will be tried\n * @param children The context menu children\n * @param matchSubstring Whether to check if the id is a substring of the child id\n */\nexport function findGroupChildrenByChildId(id: string | string[], children: Array | null | undefined>, matchSubstring = false): Array | null | undefined> | null {\n for (const child of children) {\n if (child == null) continue;\n\n if (Array.isArray(child)) {\n const found = findGroupChildrenByChildId(id, child, matchSubstring);\n if (found !== null) return found;\n }\n\n if (\n (Array.isArray(id) && id.some(id => matchSubstring ? child.props?.id?.includes(id) : child.props?.id === id))\n || (matchSubstring ? child.props?.id?.includes(id) : child.props?.id === id)\n ) return children;\n\n let nextChildren = child.props?.children;\n if (nextChildren) {\n if (!Array.isArray(nextChildren)) {\n nextChildren = [nextChildren];\n child.props.children = nextChildren;\n }\n\n const found = findGroupChildrenByChildId(id, nextChildren, matchSubstring);\n if (found !== null) return found;\n }\n }\n\n return null;\n}\n\ninterface ContextMenuProps {\n contextMenuAPIArguments?: Array;\n navId: string;\n children: Array | null>;\n \"aria-label\": string;\n onSelect: (() => void) | undefined;\n onClose: (callback: (...args: Array) => any) => void;\n}\n\nexport function _usePatchContextMenu(props: ContextMenuProps) {\n if (!Menu.MenuItem) return props; // Prevent crashes in case we fail to acquire menu items for some reason\n\n props = {\n ...props,\n children: cloneMenuChildren(props.children),\n };\n\n props.contextMenuAPIArguments ??= [];\n const contextMenuPatches = navPatches.get(props.navId);\n\n if (!Array.isArray(props.children)) props.children = [props.children];\n\n if (contextMenuPatches) {\n for (const patch of contextMenuPatches) {\n try {\n patch(props.children, ...props.contextMenuAPIArguments);\n } catch (err) {\n ContextMenuLogger.error(`Patch for ${props.navId} errored,`, err);\n }\n }\n }\n\n for (const patch of globalPatches) {\n try {\n patch(props.navId, props.children, ...props.contextMenuAPIArguments);\n } catch (err) {\n ContextMenuLogger.error(\"Global patch errored,\", err);\n }\n }\n\n return props;\n}\n\nfunction cloneMenuChildren(obj: ReactElement | Array | null> | null) {\n if (Array.isArray(obj)) {\n return obj.map(cloneMenuChildren);\n }\n\n if (React.isValidElement(obj)) {\n obj = React.cloneElement(obj);\n\n if (\n obj?.props?.children &&\n (obj.type !== Menu.MenuControlItem || obj.type === Menu.MenuControlItem && obj.props.control != null)\n ) {\n obj.props.children = cloneMenuChildren(obj.props.children);\n }\n }\n\n return obj;\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./ChatButton.css\";\n\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { Logger } from \"@utils/Logger\";\nimport { classes } from \"@utils/misc\";\nimport { IconComponent } from \"@utils/types\";\nimport { Channel } from \"@vencord/discord-types\";\nimport { findCssClassesLazy } from \"@webpack\";\nimport { Clickable, Menu, Tooltip } from \"@webpack/common\";\nimport { HTMLProps, JSX, MouseEventHandler, ReactNode } from \"react\";\n\nimport { addContextMenuPatch, findGroupChildrenByChildId } from \"./ContextMenu\";\nimport { useSettings } from \"./Settings\";\n\nconst ButtonWrapperClasses = findCssClassesLazy(\"button\", \"buttonWrapper\", \"notificationDot\");\nconst ChannelTextAreaClasses = findCssClassesLazy(\"buttonContainer\", \"channelTextArea\", \"button\");\n\nexport interface ChatBarProps {\n channel: Channel;\n disabled: boolean;\n isEmpty: boolean;\n type: {\n analyticsName: string;\n attachments: boolean;\n autocomplete: {\n addReactionShortcut: boolean,\n forceChatLayer: boolean,\n reactions: boolean;\n },\n commands: {\n enabled: boolean;\n },\n drafts: {\n type: number,\n commandType: number,\n autoSave: boolean;\n },\n emojis: {\n button: boolean;\n },\n gifs: {\n button: boolean,\n allowSending: boolean;\n },\n gifts: {\n button: boolean;\n },\n permissions: {\n requireSendMessages: boolean;\n },\n showThreadPromptOnReply: boolean,\n stickers: {\n button: boolean,\n allowSending: boolean,\n autoSuggest: boolean;\n },\n users: {\n allowMentioning: boolean;\n },\n submit: {\n button: boolean,\n ignorePreference: boolean,\n disableEnterToSubmit: boolean,\n clearOnSubmit: boolean,\n useDisabledStylesOnSubmit: boolean;\n },\n uploadLongMessages: boolean,\n upsellLongMessages: {\n iconOnly: boolean;\n },\n showCharacterCount: boolean,\n sedReplace: boolean;\n };\n}\n\nexport type ChatBarButtonFactory = (props: ChatBarProps & { isMainChat: boolean; isAnyChat: boolean; }) => JSX.Element | null;\nexport type ChatBarButtonData = {\n render: ChatBarButtonFactory;\n /**\n * This icon is used only for Settings UI. Your render function must still render an icon,\n * and it can be different from this one.\n */\n icon: IconComponent;\n};\n\n/**\n * Don't use this directly, use {@link addChatBarButton} and {@link removeChatBarButton} instead.\n */\nexport const ChatBarButtonMap = new Map();\nconst logger = new Logger(\"ChatButtons\");\n\nfunction VencordChatBarButtons(props: ChatBarProps) {\n const { chatBarButtons } = useSettings([\"uiElements.chatBarButtons.*\"]).uiElements;\n\n const { analyticsName } = props.type;\n return (\n <>\n {Array.from(ChatBarButtonMap)\n .filter(([key]) => chatBarButtons[key]?.enabled !== false)\n .map(([key, { render: Button }]) => (\n logger.error(`Failed to render ${key}`, e.error)}>\n \n {isOutdated && (\n {\n if (await update()) {\n setUpdates([]);\n\n await new Promise(r => {\n openModal(props => (\n {\n relaunch();\n r();\n }}\n onCancel={r}\n />\n ));\n });\n }\n })}\n >\n Update Now\n \n )}\n \n {!updates && updateError ? (\n <>\n Error checking for updates\n \n

{updateError.stderr || updateError.stdout || \"An unknown error occurred\"}

\n
\n \n ) : isOutdated ? (\n <>\n \n There {updates.length === 1 ? \"is 1 update\" : `are ${updates.length} updates`} available. Click the button above to download and install.\n \n \n \n ) : (\n \n You're running the latest version of Equicord.\n \n )}\n \n );\n}\n", "/* eslint-disable simple-header/header */\n\n/*!\n * idb-keyval v6.2.0\n * Copyright 2016, Jake Archibald\n * Copyright 2022, Vendicated\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function promisifyRequest(\n request: IDBRequest | IDBTransaction,\n): Promise {\n return new Promise((resolve, reject) => {\n // @ts-expect-error - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-expect-error - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\n\nexport function createStore(dbName: string, storeName: string): UseStore {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n\n return (txMode, callback) =>\n dbp.then(db =>\n callback(db.transaction(storeName, txMode).objectStore(storeName)),\n );\n}\n\nexport type UseStore = (\n txMode: IDBTransactionMode,\n callback: (store: IDBObjectStore) => T | PromiseLike,\n) => Promise;\n\nlet defaultGetStoreFunc: UseStore | undefined;\n\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore(!IS_REPORTER ? \"VencordData\" : \"VencordDataReporter\", \"VencordStore\");\n }\n return defaultGetStoreFunc;\n}\n\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function get(\n key: IDBValidKey,\n customStore = defaultGetStore(),\n): Promise {\n return customStore(\"readonly\", store => promisifyRequest(store.get(key)));\n}\n\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function set(\n key: IDBValidKey,\n value: any,\n customStore = defaultGetStore(),\n): Promise {\n return customStore(\"readwrite\", store => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic \u2013 if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function setMany(\n entries: [IDBValidKey, any][],\n customStore = defaultGetStore(),\n): Promise {\n return customStore(\"readwrite\", store => {\n entries.forEach(entry => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function getMany(\n keys: IDBValidKey[],\n customStore = defaultGetStore(),\n): Promise {\n return customStore(\"readonly\", store =>\n Promise.all(keys.map(key => promisifyRequest(store.get(key)))),\n );\n}\n\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function update(\n key: IDBValidKey,\n updater: (oldValue: T | undefined) => T,\n customStore = defaultGetStore(),\n): Promise {\n return customStore(\n \"readwrite\",\n store =>\n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n } catch (err) {\n reject(err);\n }\n };\n }),\n );\n}\n\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function del(\n key: IDBValidKey,\n customStore = defaultGetStore(),\n): Promise {\n return customStore(\"readwrite\", store => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function delMany(\n keys: IDBValidKey[],\n customStore = defaultGetStore(),\n): Promise {\n return customStore(\"readwrite\", (store: IDBObjectStore) => {\n keys.forEach((key: IDBValidKey) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function clear(customStore = defaultGetStore()): Promise {\n return customStore(\"readwrite\", store => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\n\nfunction eachCursor(\n store: IDBObjectStore,\n callback: (cursor: IDBCursorWithValue) => void,\n): Promise {\n store.openCursor().onsuccess = function () {\n if (!this.result) return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function keys(\n customStore = defaultGetStore(),\n): Promise {\n return customStore(\"readonly\", store => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(\n store.getAllKeys() as unknown as IDBRequest,\n );\n }\n\n const items: KeyType[] = [];\n\n return eachCursor(store, cursor =>\n items.push(cursor.key as KeyType),\n ).then(() => items);\n });\n}\n\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function values(customStore = defaultGetStore()): Promise {\n return customStore(\"readonly\", store => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll() as IDBRequest);\n }\n\n const items: T[] = [];\n\n return eachCursor(store, cursor => items.push(cursor.value as T)).then(\n () => items,\n );\n });\n}\n\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nexport function entries(\n customStore = defaultGetStore(),\n): Promise<[KeyType, ValueType][]> {\n return customStore(\"readonly\", store => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(\n store.getAllKeys() as unknown as IDBRequest,\n ),\n promisifyRequest(store.getAll() as IDBRequest),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n\n const items: [KeyType, ValueType][] = [];\n\n return customStore(\"readonly\", store =>\n eachCursor(store, cursor =>\n items.push([cursor.key as KeyType, cursor.value]),\n ).then(() => items),\n );\n });\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Message } from \"@vencord/discord-types\";\nimport { MessageCache, MessageStore } from \"@webpack/common\";\n\n/**\n * Update and re-render a message\n * @param channelId The channel id of the message\n * @param messageId The message id\n * @param fields The fields of the message to change. Leave empty if you just want to re-render\n */\nexport function updateMessage(channelId: string, messageId: string, fields?: Partial>) {\n const channelMessageCache = MessageCache.getOrCreate(channelId);\n if (!channelMessageCache.has(messageId)) return;\n\n // To cause a message to re-render, we basically need to create a new instance of the message and obtain a new reference\n // If we have fields to modify we can use the merge method of the class, otherwise we just create a new instance with the old fields\n const newChannelMessageCache = channelMessageCache.update(messageId, (oldMessage: any) => {\n return fields ? oldMessage.merge(fields) : new oldMessage.constructor(oldMessage);\n });\n\n MessageCache.commit(newChannelMessageCache);\n MessageStore.emitChange();\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { isPrimitiveReactNode } from \"@utils/react\";\nimport { waitFor } from \"@webpack\";\nimport { ReactNode } from \"react\";\n\nlet NoticesModule: any;\nwaitFor(m => m.show && m.dismiss && !m.suppressAll, m => NoticesModule = m);\n\nexport const noticesQueue = [] as any[];\nexport let currentNotice: any = null;\n\nexport function popNotice() {\n NoticesModule.dismiss();\n}\n\nexport function nextNotice() {\n currentNotice = noticesQueue.shift();\n\n if (currentNotice) {\n NoticesModule.show(...currentNotice, \"EquicordNotice\");\n }\n}\n\nexport function showNotice(message: ReactNode, buttonText: string, onOkClick: () => void) {\n const notice = isPrimitiveReactNode(message)\n ? message\n : \"Error Showing Notice\"}>{message};\n\n noticesQueue.push([\"GENERIC\", notice, buttonText, onOkClick]);\n if (!currentNotice) nextNotice();\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Promisable } from \"type-fest\";\n\n/**\n * A queue that can be used to run tasks consecutively.\n * Highly recommended for things like fetching data from Discord\n */\nexport class Queue {\n /**\n * @param maxSize The maximum amount of functions that can be queued at once.\n * If the queue is full, the oldest function will be removed.\n */\n constructor(public readonly maxSize = Infinity) { }\n\n private queue = [] as Array<() => Promisable>;\n\n private promise?: Promise;\n\n private next() {\n const func = this.queue.shift();\n if (func)\n this.promise = Promise.resolve()\n .then(func)\n .finally(() => this.next());\n else\n this.promise = undefined;\n }\n\n private run() {\n if (!this.promise)\n this.next();\n }\n\n /**\n * Append a task at the end of the queue. This task will be executed after all other tasks\n * If the queue exceeds the specified maxSize, the first task in queue will be removed.\n * @param func Task\n */\n push(func: () => Promisable) {\n if (this.size >= this.maxSize)\n this.queue.shift();\n\n this.queue.push(func);\n this.run();\n }\n\n /**\n * Prepend a task at the beginning of the queue. This task will be executed next\n * If the queue exceeds the specified maxSize, the last task in queue will be removed.\n * @param func Task\n */\n unshift(func: () => Promisable) {\n if (this.size >= this.maxSize)\n this.queue.pop();\n\n this.queue.unshift(func);\n this.run();\n }\n\n /**\n * The amount of tasks in the queue\n */\n get size() {\n return this.queue.length;\n }\n}\n", ".vc-notification-root {\n /* clear default button styles */\n all: unset;\n display: flex;\n flex-direction: column;\n color: var(--text-default);\n background-color: var(--background-base-low);\n border-radius: 6px;\n overflow: hidden;\n cursor: pointer;\n width: 100%;\n}\n\n.vc-notification-root:not(.vc-notification-log-wrapper > .vc-notification-root) {\n position: absolute;\n z-index: 2147483647;\n right: 1rem;\n width: min(25vw, 400px);\n min-height: 10vh;\n}\n\n.vc-notification {\n display: flex;\n flex-direction: row;\n padding: 1.25rem;\n gap: 1.25rem;\n}\n\n.vc-notification-content {\n width: 100%;\n overflow: hidden;\n}\n\n.vc-notification-header {\n display: flex;\n justify-content: space-between;\n}\n\n.vc-notification-title {\n color: var(--text-strong);\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.25rem;\n text-transform: uppercase;\n}\n\n.vc-notification-close-btn {\n all: unset;\n cursor: pointer;\n color: var(--interactive-icon-default);\n opacity: 0.5;\n transition: opacity 0.2s ease-in-out, color 0.2s ease-in-out;\n}\n\n.vc-notification-close-btn:hover {\n color: var(--interactive-icon-hover);\n opacity: 1;\n}\n\n.vc-notification-icon {\n height: 4rem;\n width: 4rem;\n border-radius: 6px;\n}\n\n.vc-notification-progressbar {\n height: 0.25rem;\n border-radius: 5px;\n margin-top: auto;\n}\n\n.vc-notification-p {\n margin: 0.5rem 0 0;\n line-height: 140%;\n}\n\n.vc-notification-img {\n width: 100%;\n}\n\n.vc-notification-log-modal {\n max-width: 962px;\n width: clamp(var(--modal-width-large, 800px), 962px, 85vw);\n}\n\n.vc-notification-log-empty {\n height: 218px;\n background: url(\"/assets/b36de980b174d7b798c89f35c116e5c6.svg\") center no-repeat;\n margin-bottom: 40px;\n}\n\n.vc-notification-log-wrapper {\n height: 120px;\n width: 100%;\n padding-bottom: 16px;\n box-sizing: border-box;\n transition: 200ms ease;\n transition-property: height, opacity;\n\n /* stylelint-disable-next-line no-descending-specificity */\n .vc-notification-root {\n height: 104px;\n }\n}\n\n.vc-notification-log-removing {\n height: 0 !important;\n opacity: 0;\n margin-bottom: 1em;\n}\n\n.vc-notification-log-body-wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n.vc-notification-log-body {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n line-height: 1.2em;\n}\n\n.vc-notification-log-timestamp {\n margin-left: auto;\n font-size: 0.8em;\n font-weight: lighter;\n}\n\n.vc-notification-log-danger-btn {\n color: var(--control-critical-primary-text-default);\n background-color: var(--control-critical-primary-background-default);\n}", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./styles.css\";\n\nimport { useSettings } from \"@api/Settings\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { classes } from \"@utils/misc\";\nimport { React, useEffect, useRef, useState } from \"@webpack/common\";\n\nimport { NotificationData } from \"./Notifications\";\n\nexport default ErrorBoundary.wrap(function NotificationComponent({\n title,\n body,\n richBody,\n color,\n icon,\n onClick,\n onClose,\n image,\n permanent,\n className,\n dismissOnClick\n}: NotificationData & { className?: string; }) {\n const { timeout, position } = useSettings([\"notifications.timeout\", \"notifications.position\"]).notifications;\n\n const [isHover, setIsHover] = useState(false);\n const [elapsed, setElapsed] = useState(0);\n\n const start = useRef(Date.now());\n const pause = useRef(null);\n\n useEffect(() => {\n if (timeout === 0 || permanent) return;\n\n if (isHover) {\n if (pause.current === null) pause.current = Date.now();\n return;\n }\n\n if (pause.current !== null) {\n const pausedFor = Date.now() - pause.current;\n start.current += pausedFor;\n pause.current = null;\n }\n\n const intervalId = setInterval(() => {\n const elapsedNow = Date.now() - start.current;\n if (elapsedNow >= timeout) {\n onClose!();\n } else {\n setElapsed(elapsedNow);\n }\n }, 10);\n\n return () => clearInterval(intervalId);\n }, [timeout, isHover, permanent]);\n\n const timeoutProgress = elapsed / timeout;\n\n return (\n {\n onClick?.();\n if (dismissOnClick !== false)\n onClose!();\n }}\n onContextMenu={e => {\n e.preventDefault();\n e.stopPropagation();\n onClose!();\n }}\n onMouseEnter={() => setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n >\n
\n {icon && \"\"}\n
\n
\n

{title}

\n {\n e.preventDefault();\n e.stopPropagation();\n onClose!();\n }}\n >\n \n Dismiss Notification\n \n \n \n
\n {richBody ??

{body}

}\n
\n
\n {image && \"\"}\n {timeout !== 0 && !permanent && (\n \n )}\n \n );\n}, {\n onError: ({ props }) => props.onClose!()\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { openNotificationLogModal } from \"@api/Notifications/notificationLog\";\nimport { useSettings } from \"@api/Settings\";\nimport { Button } from \"@components/Button\";\nimport { ErrorCard } from \"@components/ErrorCard\";\nimport { Flex } from \"@components/Flex\";\nimport { FormSwitch } from \"@components/FormSwitch\";\nimport { Heading } from \"@components/Heading\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { Margins } from \"@utils/margins\";\nimport { identity } from \"@utils/misc\";\nimport { Modal, openModal, Select, Slider } from \"@webpack/common\";\n\nexport function NotificationSection() {\n return (\n
\n Notifications\n \n Settings for Notifications sent by Vencord.\n This does NOT include Discord notifications (messages, etc)\n \n \n \n \n \n
\n );\n}\n\nexport function openNotificationSettingsModal() {\n openModal(props => (\n \n \n \n ));\n}\n\nfunction NotificationSettings() {\n const settings = useSettings([\"notifications.*\"]).notifications;\n\n return (\n <>\n Notification Style\n {settings.useNative !== \"never\" && Notification?.permission === \"denied\" && (\n \n Desktop Notification Permission denied\n You have denied Notification Permissions. Thus, Desktop notifications will not work!\n \n )}\n \n Some plugins may show you notifications. These come in two styles:\n
    \n
  • Equicord Notifications: These are in-app notifications
  • \n
  • Desktop Notifications: Native Desktop notifications (like when you get a ping)
  • \n
\n
\n >}\n closeOnSelect={true}\n select={v => settings.useNative = v}\n isSelected={v => v === settings.useNative}\n serialize={identity}\n />\n\n Notification Position\n >}\n select={v => settings.position = v}\n isSelected={v => v === settings.position}\n serialize={identity}\n />\n\n Missed Notification Count\n settings.missed = v}\n />\n\n Notification Timeout\n Set to 0s to never automatically time out\n settings.timeout = v}\n onValueRender={v => (v / 1000).toFixed(2) + \"s\"}\n onMarkerRender={v => (v / 1000) + \"s\"}\n stickToMarkers={false}\n />\n\n Notification Log Limit\n \n The amount of notifications to save in the log until old ones are removed.\n Set to 0 to disable Notification log and \u221E to never automatically remove old Notifications\n \n settings.logLimit = v}\n onValueRender={v => v === 200 ? \"\u221E\" : v}\n onMarkerRender={v => v === 200 ? \"\u221E\" : v}\n />\n \n );\n}\n", "export let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n", "\n\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\n\nexport { urlAlphabet } from './url-alphabet/index.js'\n\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\n\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let safeByteCutoff = 256 - (256 % alphabet.length)\n\n if (safeByteCutoff === 256) {\n let mask = alphabet.length - 1\n\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(size)\n let j = size\n while (j--) {\n id += alphabet[bytes[j] & mask]\n if (id.length >= size) return id\n }\n }\n }\n }\n\n let step = Math.ceil((1.6 * 256 * defaultSize) / safeByteCutoff)\n\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n if (bytes[j] < safeByteCutoff) {\n id += alphabet[bytes[j] % alphabet.length]\n if (id.length >= size) return id\n }\n }\n }\n }\n}\n\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\n\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport * as DataStore from \"@api/DataStore\";\nimport { Settings } from \"@api/Settings\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { openNotificationSettingsModal } from \"@components/settings/tabs/vencord/NotificationSettings\";\nimport { classNameFactory } from \"@utils/css\";\nimport { useAwaiter } from \"@utils/react\";\nimport { RenderModalProps } from \"@vencord/discord-types\";\nimport { ConfirmModal, ListScrollerThin, Modal, openModal, React, Timestamp, useEffect, useReducer, useState } from \"@webpack/common\";\nimport { nanoid } from \"nanoid\";\nimport type { DispatchWithoutAction } from \"react\";\n\nimport NotificationComponent from \"./NotificationComponent\";\nimport type { NotificationData } from \"./Notifications\";\n\ninterface PersistentNotificationData extends Pick {\n timestamp: number;\n id: string;\n}\n\nconst KEY = \"notification-log\";\n\nconst getLog = async () => {\n const log = await DataStore.get(KEY) as PersistentNotificationData[] | undefined;\n return log ?? [];\n};\n\nconst cl = classNameFactory(\"vc-notification-log-\");\nconst signals = new Set();\n\nexport async function persistNotification(notification: NotificationData) {\n if (notification.noPersist) return;\n\n const limit = Settings.notifications.logLimit;\n if (limit === 0) return;\n\n await DataStore.update(KEY, (old: PersistentNotificationData[] | undefined) => {\n const log = old ?? [];\n\n // Omit stuff we don't need\n const {\n onClick, onClose, richBody, permanent, noPersist, dismissOnClick,\n ...pureNotification\n } = notification;\n\n log.unshift({\n ...pureNotification,\n timestamp: Date.now(),\n id: nanoid()\n });\n\n if (log.length > limit && limit !== 200)\n log.length = limit;\n\n return log;\n });\n\n signals.forEach(x => x());\n}\n\nexport async function deleteNotification(id: string) {\n let found = false;\n\n await DataStore.update(KEY, (old: PersistentNotificationData[] | undefined) => {\n const log = old ?? [];\n const index = log.findIndex(x => x.id === id);\n if (index === -1) return log;\n\n log.splice(index, 1);\n found = true;\n return log;\n });\n\n if (found)\n signals.forEach(x => x());\n}\n\nexport function useLogs() {\n const [signal, setSignal] = useReducer(x => x + 1, 0);\n\n useEffect(() => {\n signals.add(setSignal);\n return () => void signals.delete(setSignal);\n }, []);\n\n const [log, _, pending] = useAwaiter(getLog, {\n fallbackValue: [],\n deps: [signal]\n });\n\n return [log, pending] as const;\n}\n\nfunction NotificationEntry({ data }: { data: PersistentNotificationData; }) {\n const [removing, setRemoving] = useState(false);\n\n return (\n
\n {\n if (removing) return;\n setRemoving(true);\n\n setTimeout(() => deleteNotification(data.id), 200);\n }}\n richBody={\n
\n
{data.body}
\n \n
\n }\n />\n
\n );\n}\n\nexport function NotificationLog({ log, pending }: { log: PersistentNotificationData[], pending: boolean; }) {\n if (!log.length && !pending)\n return (\n
\n
\n \n No notifications yet\n \n
\n );\n\n return (\n null}\n renderRow={item => }\n />\n );\n}\n\nfunction LogModal(props: RenderModalProps) {\n const [log, pending] = useLogs();\n\n return (\n \n {\n await DataStore.set(KEY, []);\n signals.forEach(x => x());\n }}\n />\n );\n }\n }\n ]}\n >\n \n \n );\n}\n\nexport function openNotificationLogModal() {\n openModal(props => );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Settings } from \"@api/Settings\";\nimport { Queue } from \"@utils/Queue\";\nimport { createRoot, WindowStore } from \"@webpack/common\";\nimport type { ReactNode } from \"react\";\nimport type { Root } from \"react-dom/client\";\n\nimport NotificationComponent from \"./NotificationComponent\";\nimport { openNotificationLogModal, persistNotification } from \"./notificationLog\";\n\nconst NotificationQueue = new Queue();\n\nlet reactRoot: Root;\nlet id = 42;\nlet missedCount = 0;\n\nwindow.addEventListener(\"focus\", () => {\n const { missed, timeout, useNative } = Settings.notifications;\n if (!missed) return;\n if (missedCount > 0 && timeout > 0 && useNative === \"never\") {\n showNotification({\n title: \"While you were away\",\n body: `${missedCount} notifications received`,\n onClick: () => openNotificationLogModal(),\n });\n missedCount = 0;\n }\n});\n\nfunction getRoot() {\n if (!reactRoot) {\n const container = document.createElement(\"div\");\n container.id = \"vc-notification-container\";\n document.body.append(container);\n reactRoot = createRoot(container);\n }\n return reactRoot;\n}\n\nexport interface NotificationData {\n title: string;\n body: string;\n /**\n * Same as body but can be a custom component.\n * Will be used over body if present.\n * Not supported on desktop notifications, those will fall back to body */\n richBody?: ReactNode;\n /** Small icon. This is for things like profile pictures and should be square */\n icon?: string;\n /** Large image. Optimally, this should be around 16x9 but it doesn't matter much. Desktop Notifications might not support this */\n image?: string;\n onClick?(): void;\n onClose?(): void;\n color?: string;\n /** Whether this notification should not have a timeout */\n permanent?: boolean;\n /** Whether this notification should not be persisted in the Notification Log */\n noPersist?: boolean;\n /** Whether this notification should be dismissed when clicked (defaults to true) */\n dismissOnClick?: boolean;\n}\n\nfunction _showNotification(notification: NotificationData, id: number) {\n const root = getRoot();\n return new Promise(resolve => {\n root.render(\n {\n notification.onClose?.();\n root.render(null);\n resolve();\n }} />,\n );\n });\n}\n\nfunction shouldBeNative() {\n if (typeof Notification === \"undefined\") return false;\n\n const { useNative } = Settings.notifications;\n if (useNative === \"always\") return true;\n if (useNative === \"not-focused\") return !document.hasFocus();\n return false;\n}\n\nexport async function requestPermission() {\n return (\n Notification.permission === \"granted\" ||\n (Notification.permission !== \"denied\" && (await Notification.requestPermission()) === \"granted\")\n );\n}\n\nexport async function showNotification(data: NotificationData) {\n persistNotification(data);\n\n if (shouldBeNative() && await requestPermission()) {\n const { title, body, icon, image, onClick = null, onClose = null } = data;\n const n = new Notification(title, {\n body,\n icon,\n // @ts-expect-error ts is drunk\n image\n });\n n.onclick = onClick;\n n.onclose = onClose;\n\n if (!WindowStore.isFocused()) missedCount++;\n } else {\n NotificationQueue.push(() =>\n _showNotification({\n ...data,\n onClose: () => {\n data.onClose?.();\n if (!WindowStore.isFocused()) missedCount++;\n }\n }, id++)\n );\n }\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport * from \"./Notifications\";\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { ComponentType } from \"react\";\n\nexport const enum ServerListRenderPosition {\n Above,\n In,\n Below,\n}\n\nconst componentsIn = new Map();\nconst componentsAbove = new Map();\nconst componentsBelow = new Map();\n\nfunction getRenderMap(position: ServerListRenderPosition) {\n switch (position) {\n case ServerListRenderPosition.Above:\n return componentsAbove;\n case ServerListRenderPosition.In:\n return componentsIn;\n case ServerListRenderPosition.Below:\n return componentsBelow;\n }\n}\n\nexport function addServerListElement(position: ServerListRenderPosition, renderFunction: ComponentType, priority = 0) {\n getRenderMap(position).set(renderFunction, priority);\n}\n\nexport function removeServerListElement(position: ServerListRenderPosition, renderFunction: ComponentType) {\n getRenderMap(position).delete(renderFunction);\n}\n\nexport const renderAll = (position: ServerListRenderPosition) => {\n return Array.from(getRenderMap(position).entries())\n .sort((a, b) => b[1] - a[1])\n .map(([Component], i) => (\n \n \n \n ));\n};\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Logger } from \"@utils/Logger\";\nimport { useForceUpdater } from \"@utils/react\";\nimport { useEffect } from \"@webpack/common\";\nimport type { CSSProperties, FocusEventHandler, MouseEventHandler, RefCallback } from \"react\";\n\n/**\n * Adds plugin-owned semantic data attributes and a limited set of props to\n * stable Discord-owned layout surfaces, so plugins can style/track layout\n * state without patching compiled Discord JSX directly.\n *\n * This is not a generic prop bus and not for plugin-local components. It\n * intentionally does not expose className: injected props land before or\n * after Discord's own props depending on the surface, so class merging\n * cannot be guaranteed. Use data attributes as CSS hooks instead.\n */\n\nexport type SurfaceId =\n | \"base\"\n | \"sidebar\"\n | \"guildBar\"\n | \"channelList\"\n | \"membersList\"\n | \"titleBar\"\n | \"headerBar\"\n | \"userArea\";\n\nexport interface SurfaceProvidedProps {\n ref?: RefCallback;\n style?: CSSProperties;\n [dataAttribute: `data-${string}`]: string | undefined;\n onFocusCapture?: FocusEventHandler;\n onBlurCapture?: FocusEventHandler;\n onMouseDownCapture?: MouseEventHandler;\n onMouseOverCapture?: MouseEventHandler;\n onMouseOutCapture?: MouseEventHandler;\n}\n\nexport type SurfacePropsProvider = () => SurfaceProvidedProps | undefined;\n\ninterface SurfaceInstance {\n forceUpdate(callback?: () => void): void;\n}\n\nconst propsProviders = new Map>();\nconst listeners = new Map void>>();\nconst surfaceInstances = new Map>();\nconst failedPropsProviders = new WeakSet();\nconst logger = new Logger(\"SurfaceClasses\");\n\nfunction getPropsProviderSet(surfaceId: SurfaceId) {\n let set = propsProviders.get(surfaceId);\n\n if (set == null) {\n set = new Set();\n propsProviders.set(surfaceId, set);\n }\n\n return set;\n}\n\nfunction getListenerSet(surfaceId: SurfaceId) {\n let set = listeners.get(surfaceId);\n\n if (set == null) {\n set = new Set();\n listeners.set(surfaceId, set);\n }\n\n return set;\n}\n\nfunction chainHandlers(\n first?: (event: E) => void,\n second?: (event: E) => void\n) {\n if (!first) return second;\n if (!second) return first;\n\n return (event: E) => {\n first(event);\n second(event);\n };\n}\n\nfunction chainRefs(first?: RefCallback, second?: RefCallback) {\n if (!first) return second;\n if (!second) return first;\n\n return (instance: T | null) => {\n first(instance);\n second(instance);\n };\n}\n\nfunction mergeSurfaceProvidedProps(target: SurfaceProvidedProps, source: SurfaceProvidedProps) {\n const ref = chainRefs(target.ref, source.ref);\n if (ref) target.ref = ref;\n const onFocusCapture = chainHandlers(target.onFocusCapture, source.onFocusCapture);\n if (onFocusCapture) target.onFocusCapture = onFocusCapture;\n const onBlurCapture = chainHandlers(target.onBlurCapture, source.onBlurCapture);\n if (onBlurCapture) target.onBlurCapture = onBlurCapture;\n const onMouseDownCapture = chainHandlers(target.onMouseDownCapture, source.onMouseDownCapture);\n if (onMouseDownCapture) target.onMouseDownCapture = onMouseDownCapture;\n const onMouseOverCapture = chainHandlers(target.onMouseOverCapture, source.onMouseOverCapture);\n if (onMouseOverCapture) target.onMouseOverCapture = onMouseOverCapture;\n const onMouseOutCapture = chainHandlers(target.onMouseOutCapture, source.onMouseOutCapture);\n if (onMouseOutCapture) target.onMouseOutCapture = onMouseOutCapture;\n\n if (source.style) {\n target.style = { ...target.style, ...source.style };\n }\n\n // Copy only string data-* attributes so providers cannot smuggle in\n // arbitrary props (className in particular is deliberately unsupported).\n for (const [key, value] of Object.entries(source)) {\n if (key.startsWith(\"data-\") && typeof value === \"string\") {\n target[key as `data-${string}`] = value;\n }\n }\n\n return target;\n}\n\nfunction getSurfaceProps(surfaceId: SurfaceId) {\n const props: SurfaceProvidedProps = {};\n\n for (const provider of propsProviders.get(surfaceId) ?? []) {\n let providedProps: SurfaceProvidedProps | undefined;\n\n try {\n providedProps = provider();\n } catch (error) {\n if (!failedPropsProviders.has(provider)) {\n failedPropsProviders.add(provider);\n logger.error(`Surface props provider failed for ${surfaceId}`, error);\n }\n continue;\n }\n\n if (providedProps) {\n mergeSurfaceProvidedProps(props, providedProps);\n }\n }\n\n return props;\n}\n\nfunction notifyOneSurface(surfaceId: SurfaceId) {\n const surfaceInstance = surfaceInstances.get(surfaceId)?.deref();\n if (surfaceInstance) {\n surfaceInstance.forceUpdate();\n } else {\n surfaceInstances.delete(surfaceId);\n }\n\n for (const listener of listeners.get(surfaceId) ?? []) {\n listener();\n }\n}\n\nexport function addSurfacePropsProvider(surfaceId: SurfaceId, provider: SurfacePropsProvider) {\n getPropsProviderSet(surfaceId).add(provider);\n notifyOneSurface(surfaceId);\n\n return () => {\n propsProviders.get(surfaceId)?.delete(provider);\n notifyOneSurface(surfaceId);\n };\n}\n\n/** Re-renders a surface after the state backing one of its providers changed. */\nexport function notifySurfaceClassesChanged(surfaceId: SurfaceId) {\n notifyOneSurface(surfaceId);\n}\n\n/** @internal Injected by SurfaceClassesAPI patch (do NOT call directly) */\nexport function _getSurfaceProps(surfaceId: SurfaceId) {\n return getSurfaceProps(surfaceId);\n}\n\n/** @internal Injected by SurfaceClassesAPI patch (do NOT call directly) */\nexport function _useSurfaceProps(surfaceId: SurfaceId) {\n const forceUpdate = useForceUpdater();\n\n useEffect(() => {\n const listener = () => forceUpdate();\n\n getListenerSet(surfaceId).add(listener);\n return () => { listeners.get(surfaceId)?.delete(listener); };\n }, [surfaceId]);\n\n return getSurfaceProps(surfaceId);\n}\n\n/**\n * @internal Injected by SurfaceClassesAPI patch (do NOT call directly).\n * Only used for class component surfaces where hooks cannot be injected into render().\n * Function component surfaces use _useSurfaceProps instead.\n */\nexport function _trackSurfaceInstance(surfaceId: SurfaceId, instance: SurfaceInstance) {\n if (surfaceInstances.get(surfaceId)?.deref() !== instance) {\n surfaceInstances.set(surfaceId, new WeakRef(instance));\n }\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Settings, SettingsStore, type ThemeActivationMode } from \"@api/Settings\";\nimport { createAndAppendStyle } from \"@utils/css\";\nimport { isNonNullish } from \"@utils/guards\";\nimport { ThemeStore } from \"@vencord/discord-types\";\nimport { PopoutWindowStore } from \"@webpack/common\";\n\nimport { coreStyleRootNode, managedStyleRootNode, userStyleRootNode, vencordRootNode } from \"./Styles\";\n\nlet style: HTMLStyleElement;\nlet themesStyle: HTMLStyleElement;\n\nconst themeChangeListeners = new Set<() => void>();\n\nfunction getThemeActivationMode(themeId: string) {\n return Settings.themeActivationModes?.[themeId] ?? \"always\";\n}\n\nfunction shouldApplyTheme(mode: ThemeActivationMode, activeTheme?: \"light\" | \"dark\") {\n if (mode === \"always\") return true;\n if (!activeTheme) return false;\n return mode === activeTheme;\n}\n\nasync function toggle(isEnabled: boolean) {\n if (!style) {\n if (isEnabled) {\n style = createAndAppendStyle(\"vencord-custom-css\", userStyleRootNode);\n VencordNative.quickCss.addChangeListener(css => {\n style.textContent = css;\n // At the time of writing this, changing textContent resets the disabled state\n style.disabled = !Settings.useQuickCss;\n updatePopoutWindows();\n });\n style.textContent = await VencordNative.quickCss.get();\n }\n } else\n style.disabled = !isEnabled;\n}\n\n// for cleanup\nlet previousThemeBlobObjectURLs = [] as string[];\n\nasync function initThemes() {\n themesStyle ??= createAndAppendStyle(\"vencord-themes\", userStyleRootNode);\n\n const { enabledThemeLinks, enabledThemes } = Settings;\n\n const { ThemeStore } = require(\"@webpack/common/stores\") as typeof import(\"@webpack/common/stores\");\n\n // \"darker\" and \"midnight\" both count as dark\n // This function is first called on DOMContentLoaded, so ThemeStore may not have been loaded yet\n const activeTheme = ThemeStore == null\n ? undefined\n : ThemeStore.theme === \"light\" ? \"light\" : \"dark\";\n\n const links = new Set();\n\n for (const rawLink of enabledThemeLinks) {\n const match = /^@(light|dark) (.*)/.exec(rawLink);\n const link = match?.[2] ?? rawLink;\n const mode = getThemeActivationMode(rawLink);\n\n if (shouldApplyTheme(mode, activeTheme)) {\n links.add(link);\n }\n }\n\n if (IS_WEB) {\n previousThemeBlobObjectURLs.forEach(url => URL.revokeObjectURL(url));\n\n const themesToApply = enabledThemes.filter(theme =>\n shouldApplyTheme(getThemeActivationMode(theme), activeTheme)\n );\n\n const objectUrls = await Promise.all(themesToApply.map(async theme => {\n const themeData = await VencordNative.themes.getThemeData(theme);\n if (!themeData) return null;\n\n const blob = new Blob([themeData], { type: \"text/css\" });\n return URL.createObjectURL(blob);\n }));\n\n previousThemeBlobObjectURLs = objectUrls.filter(isNonNullish);\n previousThemeBlobObjectURLs.forEach(url => links.add(url));\n } else {\n const version = Date.now();\n for (const theme of enabledThemes) {\n const mode = getThemeActivationMode(theme);\n if (!shouldApplyTheme(mode, activeTheme)) continue;\n links.add(`vencord:///themes/${theme}?v=${version}`);\n }\n }\n\n themesStyle.textContent = Array.from(links).map(link => `@import url(\"${link.trim()}\");`).join(\"\\n\");\n updatePopoutWindows();\n themeChangeListeners.forEach(listener => listener());\n}\n\nfunction applyToPopout(popoutWindow: Window | undefined, key: string) {\n if (!popoutWindow?.document) return;\n\n const doc = popoutWindow.document;\n\n doc.querySelector(\"vencord-root\")?.remove();\n\n const clonedRoot = vencordRootNode.cloneNode(false) as HTMLElement;\n\n clonedRoot.append(\n coreStyleRootNode.cloneNode(true),\n managedStyleRootNode.cloneNode(true)\n );\n\n if (key !== \"DISCORD_OutOfProcessOverlay\") {\n clonedRoot.append(userStyleRootNode.cloneNode(true));\n }\n\n doc.documentElement.appendChild(clonedRoot);\n}\n\nfunction updatePopoutWindows() {\n if (!PopoutWindowStore) return;\n\n for (const key of PopoutWindowStore.getWindowKeys()) {\n applyToPopout(PopoutWindowStore.getWindow(key), key);\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n if (IS_USERSCRIPT) return;\n\n initThemes();\n\n toggle(Settings.useQuickCss);\n SettingsStore.addChangeListener(\"useQuickCss\", toggle);\n\n SettingsStore.addChangeListener(\"enabledThemeLinks\", initThemes);\n SettingsStore.addChangeListener(\"enabledThemes\", initThemes);\n SettingsStore.addChangeListener(\"themeActivationModes\", initThemes);\n\n window.addEventListener(\"message\", event => {\n const { discordPopoutEvent } = event.data || {};\n if (discordPopoutEvent?.type !== \"loaded\") return;\n\n applyToPopout(PopoutWindowStore.getWindow(discordPopoutEvent.key), discordPopoutEvent.key);\n });\n\n if (!IS_WEB) {\n VencordNative.quickCss.addThemeChangeListener(initThemes);\n }\n}, { once: true });\n\nexport function initQuickCssThemeStore(themeStore: ThemeStore) {\n if (IS_USERSCRIPT) return;\n\n initThemes();\n\n let currentTheme = themeStore.theme;\n themeStore.addChangeListener(() => {\n if (currentTheme === themeStore.theme) return;\n\n currentTheme = themeStore.theme;\n initThemes();\n });\n}\n\nexport function addThemeChangeListener(listener: () => void) {\n themeChangeListeners.add(listener);\n}\n\nexport function removeThemeChangeListener(listener: () => void) {\n themeChangeListeners.delete(listener);\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { proxyLazy } from \"@utils/lazy\";\nimport { Logger } from \"@utils/Logger\";\nimport { findModuleId, proxyLazyWebpack, wreq } from \"@webpack\";\n\nimport { isPluginEnabled } from \"./PluginManager\";\n\ninterface UserSettingDefinition {\n /**\n * Get the setting value\n */\n getSetting(): T;\n /**\n * Update the setting value\n * @param value The new value\n */\n updateSetting(value: T): Promise;\n /**\n * Update the setting value\n * @param value A callback that accepts the old value as the first argument, and returns the new value\n */\n updateSetting(value: (old: T) => T): Promise;\n /**\n * Stateful React hook for this setting value\n */\n useSetting(): T;\n userSettingsAPIGroup: string;\n userSettingsAPIName: string;\n}\n\nexport const UserSettings: Record> | undefined = proxyLazyWebpack(() => {\n const modId = findModuleId('\"textAndImages\",\"renderSpoilers\"');\n if (modId == null) return new Logger(\"UserSettingsAPI\").error(\"Didn't find settings module.\");\n\n return wreq(modId as any);\n});\n\n/**\n * Get the setting with the given setting group and name.\n *\n * @param group The setting group\n * @param name The name of the setting\n */\nexport function getUserSetting(group: string, name: string): UserSettingDefinition | undefined {\n if (!isPluginEnabled(\"UserSettingsAPI\")) throw new Error(\"Cannot use UserSettingsAPI without setting it as a dependency.\");\n\n for (const key in UserSettings) {\n const userSetting = UserSettings[key];\n\n if (userSetting.userSettingsAPIGroup === group && userSetting.userSettingsAPIName === name) {\n return userSetting;\n }\n }\n}\n\n/**\n * {@link getUserSettingDefinition}, lazy.\n *\n * Get the setting with the given setting group and name.\n *\n * @param group The setting group\n * @param name The name of the setting\n */\nexport function getUserSettingLazy(group: string, name: string) {\n return proxyLazy(() => getUserSetting(group, name));\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport * as $AudioPlayer from \"./AudioPlayer\";\nimport * as $Badges from \"./Badges\";\nimport * as $ChatButtons from \"./ChatButtons\";\nimport * as $Commands from \"./Commands\";\nimport * as $ContextMenu from \"./ContextMenu\";\nimport * as $DataStore from \"./DataStore\";\nimport * as $GifPickerContextMenu from \"./GifPickerContextMenu\";\nimport * as $HeaderBar from \"./HeaderBar\";\nimport * as $MemberListDecorators from \"./MemberListDecorators\";\nimport * as $MessageAccessories from \"./MessageAccessories\";\nimport * as $MessageDecorations from \"./MessageDecorations\";\nimport * as $MessageEventsAPI from \"./MessageEvents\";\nimport * as $MessagePopover from \"./MessagePopover\";\nimport * as $MessageUpdater from \"./MessageUpdater\";\nimport * as $NicknameIcons from \"./NicknameIcons\";\nimport * as $Notices from \"./Notices\";\nimport * as $Notifications from \"./Notifications\";\nimport * as $UserArea from \"./UserArea\";\nexport * as PluginManager from \"./PluginManager\";\nimport * as $ProfileCollections from \"./ProfileCollections\";\nimport * as $ProfileSections from \"./ProfileSections\";\nimport * as $ServerList from \"./ServerList\";\nimport * as $Settings from \"./Settings\";\nimport * as $Styles from \"./Styles\";\nimport * as $SurfaceClasses from \"./SurfaceClasses\";\nimport * as $Themes from \"./Themes\";\nimport * as $UserSettings from \"./UserSettings\";\n\n/**\n * An API allowing you to listen to Message Clicks or run your own logic\n * before a message is sent.\n *\n * If your plugin uses this, you must add MessageEventsAPI to its dependencies.\n */\nexport const MessageEvents = $MessageEventsAPI;\n\n/**\n * An API allowing you to create custom notices\n * (snackbars on the top, like the Update prompt).\n */\nexport const Notices = $Notices;\n\n/**\n * An API allowing you to register custom commands.\n */\nexport const Commands = $Commands;\n\n/**\n * A wrapper around IndexedDB. This can store arbitrarily\n * large data and supports a lot of datatypes (Blob, Map, ...).\n * For a full list, see the mdn link below.\n *\n * This should always be preferred over the Settings API if possible, as\n * localstorage has very strict size restrictions and blocks the event loop.\n *\n * Make sure your keys are unique (tip: prefix them with ur plugin name)\n * and please clean up no longer needed entries.\n *\n * This is actually just idb-keyval, so if you're familiar with that, you're golden!\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#supported_types}\n */\nexport const DataStore = $DataStore;\n\n/**\n * An API allowing you to add custom components as message accessories.\n */\nexport const MessageAccessories = $MessageAccessories;\n\n/**\n * An API allowing you to add custom buttons in the message popover.\n */\nexport const MessagePopover = $MessagePopover;\n\n/**\n * An API allowing you to add badges to user profiles.\n */\nexport const Badges = $Badges;\n\n/**\n * An API allowing you to add custom elements to the server list.\n */\nexport const ServerList = $ServerList;\n\n/**\n * An API allowing plugins to add semantic data attributes and limited props\n * to stable Discord layout surfaces without patching them directly.\n */\nexport const SurfaceClasses = $SurfaceClasses;\n\n/**\n * An API allowing you to add components as message accessories.\n */\nexport const MessageDecorations = $MessageDecorations;\n\n/**\n * An API allowing you to add components to member list users, in both DM's and servers.\n */\nexport const MemberListDecorators = $MemberListDecorators;\n\n/**\n * An API allowing you to persist data.\n */\nexport const Settings = $Settings;\n\n/**\n * An API allowing you to dynamically load styles.\n * a\n */\nexport const Styles = $Styles;\n\n/**\n * An API allowing you to display notifications.\n */\nexport const Notifications = $Notifications;\n\n/**\n * An api allowing you to patch and add/remove items to/from context menus.\n */\nexport const ContextMenu = $ContextMenu;\n\n/**\n * An API allowing you to add buttons to the chat input.\n */\nexport const ChatButtons = $ChatButtons;\n\n/**\n * An API allowing you to add buttons to the header bar or channel toolbar.\n */\nexport const HeaderBar = $HeaderBar;\n\n/**\n * An API allowing you to update and re-render messages.\n */\nexport const MessageUpdater = $MessageUpdater;\n\n/**\n * An API allowing you to get an user setting.\n */\nexport const UserSettings = $UserSettings;\n\n/**\n * Don't use this\n */\nexport const Themes = $Themes;\n\n/**\n * An API allowing you to add icons to the nickname, in profiles.\n */\nexport const NicknameIcons = $NicknameIcons;\n\n/**\n * An API allowing you to play internal Discord audio files or external audio URLs/URIs.\n */\nexport const AudioPlayer = $AudioPlayer;\n\n/**\n * An API allowing you to add buttons to the user area panel.\n */\nexport const UserArea = $UserArea;\n\n/**\n * Just used to identify if user is on Equicord as Vencord doesn't have this.\n */\nexport const isEquicord = true;\n\n/**\n * An API allowing you to add other collections where discords game collection is.\n */\nexport const ProfileCollections = $ProfileCollections;\n\n/**\n * An API allowing you to add sections near the 'Member Since' area of user profile panels.\n */\nexport const ProfileSections = $ProfileSections;\n\n/**\n * An API allowing plugins to add items to the GIF picker right-click context menu\n * without conflicting with each other.\n */\nexport const GifPickerContextMenu = $GifPickerContextMenu;\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { DataStore } from \"@api/index\";\n\nimport gitHash from \"~git-hash\";\nimport plugins from \"~plugins\";\n\nexport interface ChangelogEntry {\n hash: string;\n author: string;\n message: string;\n timestamp?: number;\n}\n\nexport interface UpdateSession {\n id: string;\n timestamp: number;\n fromHash: string;\n toHash: string;\n commits: ChangelogEntry[];\n newPlugins: string[];\n updatedPlugins: string[];\n newSettings?: Map | Record;\n type: \"update\" | \"repository_fetch\";\n}\n\nexport type ChangelogHistory = UpdateSession[];\n\nconst CHANGELOG_HISTORY_KEY = \"EquicordChangelog_History\";\nconst LAST_SEEN_HASH_KEY = \"EquicordChangelog_LastSeenHash\";\nconst KNOWN_PLUGINS_KEY = \"EquicordChangelog_KnownPlugins\";\nconst KNOWN_SETTINGS_KEY = \"EquicordChangelog_KnownSettings\";\nconst LAST_REPO_CHECK_KEY = \"EquicordChangelog_LastRepoCheck\";\nconst GITHUB_COMPARE_ENDPOINT = \"https://api.github.com/repos\";\n\ntype KnownPluginSettingsMap = Map>;\n\nfunction normalizeRepoUrl(repoUrl: string | null | undefined): string | null {\n if (!repoUrl) return null;\n try {\n const normalized = repoUrl.replace(/^git\\+/, \"\");\n const url = new URL(normalized);\n if (!url.hostname.endsWith(\"github.com\")) return null;\n const segments = url.pathname.replace(/\\.git$/, \"\").split(\"/\").filter(Boolean);\n if (segments.length < 2) return null;\n return `${segments[0]}/${segments[1]}`;\n } catch {\n return null;\n }\n}\n\nasync function fetchCommitsBetween(\n repoSlug: string,\n fromHash: string,\n toHash: string,\n): Promise {\n if (!repoSlug || typeof fetch !== \"function\") return [];\n try {\n const res = await fetch(\n `${GITHUB_COMPARE_ENDPOINT}/${repoSlug}/compare/${fromHash}...${toHash}`,\n {\n headers: {\n Accept: \"application/vnd.github+json\",\n \"Cache-Control\": \"no-cache\",\n },\n },\n );\n\n if (!res.ok) return [];\n const data = await res.json();\n if (!data || !Array.isArray(data.commits)) return [];\n\n return data.commits.map((commit: any) => {\n const message: string = commit?.commit?.message ?? \"\";\n const summary = message.split(\"\\n\")[0] || \"No message\";\n const authorName =\n commit?.commit?.author?.name ||\n commit?.author?.login ||\n \"Unknown\";\n const timestamp = commit?.commit?.author?.date\n ? Date.parse(commit.commit.author.date)\n : undefined;\n\n return {\n hash: commit?.sha || \"\",\n author: authorName,\n message: summary,\n timestamp: Number.isNaN(timestamp) ? undefined : timestamp,\n } as ChangelogEntry;\n });\n } catch (err) {\n console.warn(\"Failed to fetch commits between hashes\", err);\n return [];\n }\n}\n\nfunction toStringSet(value: unknown): Set {\n const result = new Set();\n\n const addValue = (entry: unknown) => {\n if (entry === undefined || entry === null) return;\n result.add(typeof entry === \"string\" ? entry : String(entry));\n };\n\n if (value instanceof Set) {\n value.forEach(addValue);\n } else if (value instanceof Map) {\n value.forEach(addValue);\n } else if (Array.isArray(value)) {\n value.forEach(addValue);\n } else if (typeof value === \"string\") {\n addValue(value);\n } else if (value && typeof value === \"object\") {\n Object.values(value as Record).forEach(addValue);\n }\n\n return result;\n}\n\nfunction normalizeKnownSettings(value: unknown): KnownPluginSettingsMap {\n const map: KnownPluginSettingsMap = new Map();\n\n const assign = (plugin: unknown, settings: unknown) => {\n if (plugin === undefined || plugin === null) return;\n map.set(String(plugin), toStringSet(settings));\n };\n\n if (!value) {\n return map;\n }\n\n if (value instanceof Map) {\n value.forEach((settings, plugin) => assign(plugin, settings));\n return map;\n }\n\n if (Array.isArray(value)) {\n value.forEach(entry => {\n if (Array.isArray(entry) && entry.length > 0) {\n assign(entry[0], entry[1]);\n }\n });\n return map;\n }\n\n if (typeof value === \"object\") {\n Object.entries(value as Record).forEach(\n ([plugin, settings]) => assign(plugin, settings),\n );\n }\n\n return map;\n}\n\nfunction serializeKnownSettings(\n map: KnownPluginSettingsMap,\n): Record {\n return Object.fromEntries(\n Array.from(map.entries()).map(([plugin, settings]) => [\n plugin,\n Array.from(settings),\n ]),\n );\n}\n\nasync function persistKnownSettings(\n map: KnownPluginSettingsMap,\n): Promise {\n await DataStore.set(KNOWN_SETTINGS_KEY, serializeKnownSettings(map));\n}\n\nfunction isMapLike(value: any): value is Map {\n return (\n value &&\n typeof value.get === \"function\" &&\n typeof value.size === \"number\"\n );\n}\n\nexport function getNewSettingsSize(\n newSettings: Map | Record | undefined,\n): number {\n if (!newSettings) return 0;\n if (isMapLike(newSettings)) return newSettings.size;\n return Object.keys(newSettings).length;\n}\n\nexport function getNewSettingsEntries(\n newSettings: Map | Record | undefined,\n): [string, string[]][] {\n if (!newSettings) return [];\n if (isMapLike(newSettings)) return Array.from(newSettings.entries());\n return Object.entries(newSettings);\n}\n\nexport async function getChangelogHistory(): Promise {\n const history = (await DataStore.get(\n CHANGELOG_HISTORY_KEY,\n )) as ChangelogHistory;\n\n if (history) {\n history.forEach(session => {\n if (session.newSettings && !(session.newSettings instanceof Map)) {\n session.newSettings = new Map(\n Object.entries(session.newSettings),\n );\n }\n });\n }\n\n return history || [];\n}\n\nexport async function saveUpdateSession(\n commits: ChangelogEntry[],\n newPlugins: string[],\n updatedPlugins: string[],\n newSettings: Map,\n forceLog: boolean = false,\n): Promise {\n const history = await getChangelogHistory();\n const lastSeenHash = await getLastSeenHash();\n const currentHash = gitHash;\n\n // For repository fetches, check if we already have this exact state logged (to prevent duplicate logs)\n if (forceLog) {\n const lastRepoCheck = await getLastRepositoryCheckHash();\n const latestRepoHash =\n commits.length > 0 ? commits[0].hash : currentHash;\n\n if (lastRepoCheck === latestRepoHash) {\n // if the state hasn't changed last check, do NOT make a new log\n return;\n }\n }\n\n // Don't save if no changes, unless explicitly forcing the log (for example repository fetch)\n if (\n !forceLog &&\n commits.length === 0 &&\n newPlugins.length === 0 &&\n updatedPlugins.length === 0 &&\n getNewSettingsSize(newSettings) === 0\n ) {\n return;\n }\n\n // Determine session type and hash logic\n const sessionType = forceLog ? \"repository_fetch\" : \"update\";\n let fromHash = currentHash;\n let toHash = currentHash;\n\n if (forceLog) {\n // This is a repository fetch - show current vs repository state\n if (commits.length > 0) {\n // Repository has newer commits\n toHash = commits[0].hash; // Latest repository hash\n }\n // If no commits, fromHash === toHash (up to date)\n } else {\n // This is an actual update session\n // Is there a better way to do this?\n fromHash = lastSeenHash || \"unknown\";\n toHash = currentHash;\n }\n\n const session: UpdateSession = {\n id: crypto.randomUUID(),\n timestamp: Date.now(),\n fromHash: fromHash,\n toHash: toHash,\n commits,\n newPlugins,\n updatedPlugins,\n newSettings:\n getNewSettingsSize(newSettings) > 0\n ? Object.fromEntries(newSettings)\n : undefined,\n type: sessionType,\n };\n\n // Add to beginning of history (most recent first)\n history.unshift(session);\n\n // Keep only last 50 sessions to prevent storage bloat\n if (history.length > 50) {\n history.splice(50);\n }\n\n await DataStore.set(CHANGELOG_HISTORY_KEY, history);\n\n if (!forceLog) {\n await setLastSeenHash(currentHash);\n } else {\n // for fetches, check the latest repo hash to make sure its not the same\n const latestRepoHash =\n commits.length > 0 ? commits[0].hash : currentHash;\n await setLastRepositoryCheckHash(latestRepoHash);\n }\n\n await updateKnownPlugins();\n await updateKnownSettings();\n}\n\nexport async function getLastSeenHash(): Promise {\n return (await DataStore.get(LAST_SEEN_HASH_KEY)) as string | null;\n}\n\nexport async function setLastSeenHash(hash: string): Promise {\n await DataStore.set(LAST_SEEN_HASH_KEY, hash);\n}\n\nexport async function getKnownPlugins(): Promise> {\n const known = (await DataStore.get(KNOWN_PLUGINS_KEY)) as string[];\n return new Set(known || []);\n}\n\nexport async function updateKnownPlugins(): Promise {\n const currentPlugins = Object.keys(plugins);\n await DataStore.set(KNOWN_PLUGINS_KEY, currentPlugins);\n}\n\nfunction getSettingsSetForPlugin(plugin: string): Set {\n const settings = plugins[plugin]?.settings?.def || {};\n return new Set(\n Object.keys(settings).filter(setting => setting !== \"enabled\"),\n );\n}\n\nfunction getCurrentSettings(pluginList: string[]): KnownPluginSettingsMap {\n return new Map(\n pluginList.map(name => [name, getSettingsSetForPlugin(name)]),\n );\n}\n\nexport async function getKnownSettings(): Promise {\n const mapData = (await DataStore.get(KNOWN_SETTINGS_KEY)) as any;\n if (mapData === undefined) {\n const knownPlugins = await getKnownPlugins();\n const pluginNames = [\n ...new Set([\n ...Object.keys(plugins),\n ...Array.from(knownPlugins),\n ]),\n ];\n const initialMap = getCurrentSettings(pluginNames);\n await persistKnownSettings(initialMap);\n return initialMap;\n }\n\n const normalized = normalizeKnownSettings(mapData);\n\n if (\n mapData instanceof Map ||\n Array.isArray(mapData) ||\n (mapData &&\n typeof mapData === \"object\" &&\n Object.values(mapData).some(value =>\n value instanceof Set || value instanceof Map,\n ))\n ) {\n await persistKnownSettings(normalized);\n }\n\n return normalized;\n}\n\nexport async function getNewSettings(): Promise> {\n const map = getCurrentSettings(Object.keys(plugins));\n const knownSettings = await getKnownSettings();\n const newSettings = new Map();\n\n map.forEach((settings, plugin) => {\n const known = knownSettings.get(plugin);\n if (!known) return;\n\n const filteredSettings = [...settings].filter(\n setting => !known.has(setting),\n );\n if (filteredSettings.length > 0) {\n newSettings.set(plugin, filteredSettings);\n }\n });\n\n return newSettings;\n}\n\nexport async function getCommitsSinceLastSeen(\n repoUrl: string,\n): Promise {\n const lastSeenHash = await getLastSeenHash();\n if (!lastSeenHash || lastSeenHash === \"unknown\" || lastSeenHash === gitHash)\n return [];\n\n const repoSlug = normalizeRepoUrl(repoUrl);\n if (!repoSlug) return [];\n\n return fetchCommitsBetween(repoSlug, lastSeenHash, gitHash);\n}\n\nexport async function updateKnownSettings(): Promise {\n const currentSettings = getCurrentSettings(Object.keys(plugins));\n const knownSettings = await getKnownSettings();\n const mergedSettings: KnownPluginSettingsMap = new Map();\n\n new Set([...currentSettings.keys(), ...knownSettings.keys()]).forEach(\n plugin => {\n mergedSettings.set(\n plugin,\n new Set([\n ...(knownSettings.get(plugin) || []),\n ...(currentSettings.get(plugin) || []),\n ]),\n );\n },\n );\n\n await persistKnownSettings(mergedSettings);\n}\n\nexport async function getNewPlugins(): Promise {\n const currentPlugins = Object.keys(plugins);\n const knownPlugins = await getKnownPlugins();\n\n return currentPlugins.filter(\n plugin =>\n !knownPlugins.has(plugin) &&\n !plugins[plugin].hidden &&\n !plugins[plugin].required,\n );\n}\n\nexport async function getUpdatedPlugins(): Promise {\n // This is a placeholder - in a real implementation, you'd track plugin version changes\n // For now, we'll return empty array since plugin version tracking would need to be implemented\n return [];\n}\n\nexport async function clearChangelogHistory(): Promise {\n await DataStore.del(CHANGELOG_HISTORY_KEY);\n await DataStore.del(LAST_SEEN_HASH_KEY);\n await DataStore.del(KNOWN_SETTINGS_KEY);\n}\n\nexport async function clearIndividualLog(logId: string): Promise {\n const history = await getChangelogHistory();\n const filteredHistory = history.filter(log => log.id !== logId);\n await DataStore.set(CHANGELOG_HISTORY_KEY, filteredHistory);\n}\n\nexport async function initializeChangelog(): Promise {\n // Initialize with current state if first time\n const lastSeenHash = await getLastSeenHash();\n if (!lastSeenHash) {\n await setLastSeenHash(gitHash);\n await updateKnownPlugins();\n await updateKnownSettings();\n }\n}\n\nexport async function getLastRepositoryCheckHash(): Promise {\n return (await DataStore.get(LAST_REPO_CHECK_KEY)) as string | null;\n}\n\nexport async function setLastRepositoryCheckHash(hash: string): Promise {\n await DataStore.set(LAST_REPO_CHECK_KEY, hash);\n}\n\nexport function formatTimestamp(timestamp: number): string {\n const date = new Date(timestamp);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMinutes = Math.floor(diffMs / (1000 * 60));\n const diffHours = Math.floor(diffMs / (1000 * 60 * 60));\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffMinutes < 60) {\n return `${diffMinutes} minute${diffMinutes !== 1 ? \"s\" : \"\"} ago`;\n } else if (diffHours < 24) {\n return `${diffHours} hour${diffHours !== 1 ? \"s\" : \"\"} ago`;\n } else if (diffDays < 7) {\n return `${diffDays} day${diffDays !== 1 ? \"s\" : \"\"} ago`;\n } else {\n return date.toLocaleDateString();\n }\n}\n", ".vc-addon-card {\n background-color: var(--card-background-default);\n color: var(--interactive-icon-active);\n border: 1px solid var(--border-subtle);\n border-radius: 8px;\n display: block;\n height: 100%;\n padding: 12px;\n width: 100%;\n transition: 0.1s ease-out;\n transition-property: box-shadow, transform, background, opacity;\n box-sizing: border-box;\n}\n\n.vc-addon-card-disabled {\n opacity: 0.6;\n}\n\n.vc-addon-card:hover {\n transform: translateY(-1px);\n box-shadow: var(--elevation-high);\n}\n\n.vc-addon-header {\n margin-top: auto;\n display: flex;\n width: 100%;\n justify-content: flex-end;\n align-items: center;\n gap: 8px;\n margin-bottom: 0.5em;\n}\n\n.vc-addon-note {\n height: 34px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n /* stylelint-disable-next-line property-no-unknown */\n box-orient: vertical;\n color: var(--text-default);\n}\n\n.vc-addon-name-author {\n width: 100%;\n}\n\n.vc-addon-name {\n display: flex;\n width: 100%;\n align-items: center;\n flex-grow: 1;\n}\n\n.vc-addon-author {\n font-size: 0.8em;\n}\n\n.vc-addon-author::before {\n content: \"by \";\n}\n\n.vc-addon-title-container {\n width: 100%;\n overflow: hidden;\n height: 1.25em;\n position: relative;\n}\n\n.vc-addon-title {\n position: absolute;\n inset: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n@keyframes vc-addon-title {\n 0% {\n transform: translateX(0);\n }\n\n 50% {\n transform: translateX(var(--offset));\n }\n\n 100% {\n transform: translateX(0);\n }\n}\n\n.vc-addon-title:hover {\n overflow: visible;\n animation: vc-addon-title var(--duration) linear infinite;\n}\n\n.vc-addon-editable {\n border: none;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n\n.vc-addon-footer {\n font-size: small;\n}", ".vc-badge-base {\n display: inline-flex;\n align-items: center;\n align-self: center;\n gap: var(--space-4, 4px);\n padding: 0 var(--space-8, 8px);\n border-radius: var(--radius-round, 9999px);\n box-sizing: border-box;\n font-family: var(--font-display);\n font-size: 12px;\n font-weight: 700;\n line-height: 1.3333;\n letter-spacing: 0.02em;\n text-align: center;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.vc-badge-icon {\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n}\n\n/* Discord variants */\n.vc-badge-default {\n background-color: var(--badge-background-brand);\n color: var(--badge-text-brand);\n}\n\n.vc-badge-expressive {\n background-color: var(--badge-expressive-background-default);\n color: var(--badge-expressive-text-default);\n}\n\n/* Equicord variants */\n.vc-badge-danger {\n background-color: var(--status-danger);\n color: var(--white);\n}\n\n.vc-badge-positive {\n background-color: var(--status-positive);\n color: var(--white);\n}\n\n.vc-badge-warning {\n background-color: var(--status-warning);\n color: var(--black);\n}\n\n.vc-badge-premium {\n background-color: var(--premium-tier-2-purple-for-gradients);\n color: var(--white);\n}", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./Badge.css\";\n\nimport { classNameFactory } from \"@utils/css\";\nimport { classes } from \"@utils/misc\";\nimport type { ComponentPropsWithoutRef, ComponentType, CSSProperties, ReactNode, SVGProps } from \"react\";\n\nconst cl = classNameFactory(\"vc-badge-\");\n\nexport const BadgeVariants = [\"default\", \"expressive\", \"danger\", \"positive\", \"warning\", \"premium\"] as const;\n\nexport type BadgeVariant = typeof BadgeVariants[number];\n\nexport type BadgeProps = Omit, \"children\"> & {\n text: ReactNode;\n variant?: BadgeVariant;\n icon?: ComponentType & { size?: string; }>;\n color?: string;\n backgroundColor?: string;\n};\n\nexport function Badge({ text, variant = \"default\", icon: Icon, className, color, backgroundColor, style, ...restProps }: BadgeProps) {\n const customStyle: CSSProperties | undefined = (color || backgroundColor) ? {\n ...style,\n ...(color && { color }),\n ...(backgroundColor && { backgroundColor })\n } : style;\n\n return (\n
\n {Icon && }\n {text}\n
\n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./AddonCard.css\";\n\nimport { Badge } from \"@components/Badge\";\nimport { BaseText } from \"@components/BaseText\";\nimport { Switch } from \"@components/Switch\";\nimport { classNameFactory } from \"@utils/css\";\nimport { Tooltip, useRef } from \"@webpack/common\";\nimport type { MouseEventHandler, ReactNode } from \"react\";\n\nconst cl = classNameFactory(\"vc-addon-\");\n\ninterface Props {\n name: ReactNode;\n description: ReactNode;\n enabled: boolean;\n setEnabled: (enabled: boolean) => void;\n disabled?: boolean;\n isNew?: boolean;\n sourceBadge?: ReactNode;\n tooltip?: string;\n onMouseEnter?: MouseEventHandler;\n onMouseLeave?: MouseEventHandler;\n\n infoButton?: ReactNode;\n footer?: ReactNode;\n author?: ReactNode;\n}\n\nexport function AddonCard({ disabled, isNew, sourceBadge, tooltip, name, infoButton, footer, author, enabled, setEnabled, description, onMouseEnter, onMouseLeave }: Props) {\n const titleRef = useRef(null);\n const titleContainerRef = useRef(null);\n\n return (\n \n
\n
\n \n
\n {\n const title = titleRef.current!;\n const titleContainer = titleContainerRef.current!;\n\n title.style.setProperty(\"--offset\", `${titleContainer.clientWidth - title.scrollWidth}px`);\n title.style.setProperty(\"--duration\", `${Math.max(0.5, (title.scrollWidth - titleContainer.clientWidth) / 7)}s`);\n }}\n >\n {name}\n
\n
\n {isNew && }\n \n\n {!!author && (\n \n {author}\n \n )}\n
\n\n \n {({ onMouseEnter, onMouseLeave }) => (\n \n {sourceBadge}\n
\n )}\n \n\n {infoButton}\n\n \n \n\n \n {description}\n \n\n {footer &&
{footer}
}\n \n );\n}\n", ".vc-plugin-modal-header {\n align-items: flex-start;\n position: relative;\n}\n\n.vc-plugin-modal-header-content {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n}\n\n.vc-plugin-modal-header-trailing {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 4px;\n}\n\n.vc-plugin-modal-title {\n color: var(--text-strong);\n padding-right: 32px;\n}\n\n.vc-plugin-modal-description {\n color: var(--text-subtle);\n padding-right: 60px;\n}\n\n.vc-plugin-modal-links {\n display: flex;\n gap: 4px;\n margin-left: auto;\n}\n\n.vc-plugin-modal-confirm [class*=\"footer\"] {\n flex-direction: row-reverse;\n gap: var(--space-8, 8px);\n}\n\n.vc-plugin-modal-confirm [class*=\"footer\"] > button {\n flex: 1;\n margin: 0;\n width: 100%;\n}\n\n.vc-plugin-modal-warning {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--text-feedback-critical);\n}\n\n.vc-settings-modal-content {\n padding-bottom: 24px;\n}\n\n.vc-plugin-modal-info {\n display: flex;\n gap: 1em;\n justify-content: space-between;\n align-items: start;\n}\n\n.vc-plugin-modal-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 8px;\n}\n\n.vc-plugin-modal-tag {\n align-items: center;\n border: 1px solid var(--border-normal);\n border-radius: 9999px;\n display: flex;\n justify-content: center;\n padding: 6px 12px;\n color: var(--text-default);\n}\n\n.vc-plugin-modal-about-box {\n padding: 16px;\n border-radius: 8px;\n border: 1px solid var(--border-normal, var(--background-modifier-accent));\n}", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n/**\n * Returns a new function that will call the wrapped function\n * after the specified delay. If the function is called again\n * within the delay, the timer will be reset.\n * @param func The function to wrap\n * @param delay The delay in milliseconds\n */\nexport function debounce(func: T, delay = 300): T {\n let timeout: NodeJS.Timeout;\n return function (...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => { func(...args); }, delay);\n } as any;\n}\n", "export default \"Equicord/Equicord\"", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport gitHash from \"~git-hash\";\nimport gitRemote from \"~git-remote\";\n\nexport { gitHash, gitRemote };\n\nexport const gitHashShort = gitHash.slice(0, 9);\nexport const VENCORD_USER_AGENT = `Equicord/${gitHash}${gitRemote ? ` (https://github.com/${gitRemote})` : \"\"}`;\nexport const VENCORD_USER_AGENT_HASHLESS = `Equicord${gitRemote ? ` (https://github.com/${gitRemote})` : \"\"}`;\n", ".vc-plugins-setting-section {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n}\n\n.vc-plugins-setting-content {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n}\n\n.vc-plugins-setting-inline {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n\n.vc-plugins-setting-label {\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n}\n\n.vc-plugins-setting-title {\n color: var(--text-strong);\n}\n\n.vc-plugins-setting-inline .vc-plugins-setting-description {\n color: var(--text-subtle);\n}\n\n.vc-plugins-setting-error {\n color: var(--text-feedback-critical, #FF5C5C);\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { BaseText } from \"@components/BaseText\";\nimport { classNameFactory } from \"@utils/css\";\nimport { classes } from \"@utils/misc\";\nimport { wordsFromCamel, wordsToTitle } from \"@utils/text\";\nimport { DefinedSettings, PluginSettingDefCommon } from \"@utils/types\";\nimport { PropsWithChildren } from \"react\";\n\nexport const cl = classNameFactory(\"vc-plugins-setting-\");\n\ninterface SettingBaseProps {\n setting: T;\n onChange(newValue: any): void;\n pluginSettings: {\n [setting: string]: any;\n enabled: boolean;\n };\n id: string;\n definedSettings: DefinedSettings;\n closePluginSettings(): void;\n}\n\nexport type SettingProps = SettingBaseProps;\nexport type ComponentSettingProps> = SettingBaseProps;\n\nexport function resolveError(isValidResult: boolean | string) {\n if (typeof isValidResult === \"string\") return isValidResult;\n\n return isValidResult ? null : \"Invalid input provided\";\n}\n\ninterface SettingsSectionProps extends PropsWithChildren {\n name?: string;\n id: string;\n description: string;\n error?: string | null;\n inlineSetting?: boolean;\n tag?: \"label\" | \"div\";\n}\n\nexport function SettingsSection({ tag: Tag = \"div\", name, id, description, error, inlineSetting, children }: SettingsSectionProps) {\n return (\n \n
\n
\n {name ?? wordsToTitle(wordsFromCamel(id))}\n {description && {description}}\n
\n {children}\n
\n {error && {error}}\n
\n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { isSettingDisabled } from \"@api/PluginManager\";\nimport { Switch } from \"@components/Switch\";\nimport { PluginSettingBooleanDef } from \"@utils/types\";\nimport { React, useState } from \"@webpack/common\";\n\nimport { resolveError, SettingProps, SettingsSection } from \"./Common\";\n\nexport function BooleanSetting({ setting, pluginSettings, definedSettings, id, onChange }: SettingProps) {\n const def = pluginSettings[id] ?? setting.default;\n\n const [state, setState] = useState(def ?? false);\n const [error, setError] = useState(null);\n\n function handleChange(newValue: boolean): void {\n const isValid = setting.isValid?.call(definedSettings, newValue) ?? true;\n\n setState(newValue);\n setError(resolveError(isValid));\n\n if (isValid === true) {\n onChange(newValue);\n }\n }\n\n return (\n \n \n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { PluginSettingComponentDef } from \"@utils/types\";\n\nimport { ComponentSettingProps } from \"./Common\";\n\nexport function ComponentSetting({ setting, onChange, closePluginSettings }: ComponentSettingProps) {\n return setting.component({ setValue: onChange, option: setting, closePluginSettings });\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { isSettingDisabled } from \"@api/PluginManager\";\nimport { OptionType, PluginSettingBigIntDef, PluginSettingNumberDef } from \"@utils/types\";\nimport { React, TextInput, useState } from \"@webpack/common\";\n\nimport { resolveError, SettingProps, SettingsSection } from \"./Common\";\n\nconst MAX_SAFE_NUMBER = BigInt(Number.MAX_SAFE_INTEGER);\n\nexport function NumberSetting({ setting, pluginSettings, definedSettings, id, onChange }: SettingProps) {\n function serialize(value: any) {\n if (setting.type === OptionType.BIGINT) return BigInt(value);\n return Number(value);\n }\n\n const [state, setState] = useState(`${pluginSettings[id] ?? setting.default ?? 0}`);\n const [error, setError] = useState(null);\n\n function handleChange(newValue: any) {\n const isValid = setting.isValid?.call(definedSettings, newValue) ?? true;\n\n setError(resolveError(isValid));\n\n if (isValid === true) {\n onChange(serialize(newValue));\n }\n\n if (setting.type === OptionType.NUMBER && BigInt(newValue) >= MAX_SAFE_NUMBER) {\n setState(`${Number.MAX_SAFE_INTEGER}`);\n } else {\n setState(newValue);\n }\n }\n\n return (\n \n \n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { isSettingDisabled } from \"@api/PluginManager\";\nimport { PluginSettingSelectDef } from \"@utils/types\";\nimport { React, Select, useState } from \"@webpack/common\";\n\nimport { resolveError, SettingProps, SettingsSection } from \"./Common\";\n\nexport function SelectSetting({ setting, pluginSettings, definedSettings, onChange, id }: SettingProps) {\n const def = pluginSettings[id] ?? setting.options?.find(o => o.default)?.value;\n\n const [state, setState] = useState(def ?? null);\n const [error, setError] = useState(null);\n\n function handleChange(newValue: any) {\n const isValid = setting.isValid?.call(definedSettings, newValue) ?? true;\n\n setState(newValue);\n setError(resolveError(isValid));\n\n if (isValid === true) {\n onChange(newValue);\n }\n }\n\n return (\n \n v === state}\n serialize={v => String(v)}\n isDisabled={isSettingDisabled(definedSettings, setting)}\n {...setting.componentProps}\n />\n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { isSettingDisabled } from \"@api/PluginManager\";\nimport { PluginSettingSliderDef } from \"@utils/types\";\nimport { React, Slider, useState } from \"@webpack/common\";\n\nimport { resolveError, SettingProps, SettingsSection } from \"./Common\";\n\nexport function SliderSetting({ setting, pluginSettings, definedSettings, id, onChange }: SettingProps) {\n const def = pluginSettings[id] ?? setting.default;\n\n const [error, setError] = useState(null);\n\n function handleChange(newValue: number): void {\n const isValid = setting.isValid?.call(definedSettings, newValue) ?? true;\n\n setError(resolveError(isValid));\n\n if (isValid === true) {\n onChange(newValue);\n }\n }\n\n return (\n \n String(v.toFixed(2))}\n stickToMarkers={setting.stickToMarkers ?? true}\n disabled={isSettingDisabled(definedSettings, setting)}\n {...setting.componentProps}\n />\n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { isSettingDisabled } from \"@api/PluginManager\";\nimport { PluginSettingStringDef } from \"@utils/types\";\nimport { React, TextArea, TextInput, useState } from \"@webpack/common\";\n\nimport { resolveError, SettingProps, SettingsSection } from \"./Common\";\n\nexport function TextSetting({ setting, pluginSettings, definedSettings, id, onChange }: SettingProps) {\n const [state, setState] = useState(pluginSettings[id] ?? setting.default ?? null);\n const [error, setError] = useState(null);\n\n function handleChange(newValue: string) {\n const isValid = setting.isValid?.call(definedSettings, newValue) ?? true;\n\n setState(newValue);\n setError(resolveError(isValid));\n\n if (isValid === true) {\n onChange(newValue);\n }\n }\n\n return (\n \n {setting.multiline\n ? \n : \n }\n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./styles.css\";\n\nimport { OptionType } from \"@utils/types\";\nimport { ComponentType } from \"react\";\n\nimport { BooleanSetting } from \"./BooleanSetting\";\nimport { ComponentSettingProps, SettingProps } from \"./Common\";\nimport { ComponentSetting } from \"./ComponentSetting\";\nimport { NumberSetting } from \"./NumberSetting\";\nimport { SelectSetting } from \"./SelectSetting\";\nimport { SliderSetting } from \"./SliderSetting\";\nimport { TextSetting } from \"./TextSetting\";\n\nexport const OptionComponentMap: Record | ComponentSettingProps>> = {\n [OptionType.STRING]: TextSetting,\n [OptionType.NUMBER]: NumberSetting,\n [OptionType.BIGINT]: NumberSetting,\n [OptionType.BOOLEAN]: BooleanSetting,\n [OptionType.SELECT]: SelectSetting,\n [OptionType.SLIDER]: SliderSetting,\n [OptionType.COMPONENT]: ComponentSetting,\n [OptionType.CUSTOM]: () => null,\n};\n", ".vc-author-modal-root {\n padding: 0 0 16px;\n}\n\n.vc-author-modal-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vc-author-modal-name {\n text-transform: none;\n margin: 0;\n flex-grow: 0;\n background: var(--background-base-lowest);\n border-radius: 0 9999px 9999px 0;\n padding: 6px 0.8em 6px 0.5em;\n font-size: 20px;\n line-height: 1;\n position: relative;\n text-wrap: nowrap;\n}\n\n.vc-author-modal-name::before {\n content: \"\";\n display: block;\n position: absolute;\n height: 100%;\n width: 32px;\n background: var(--background-base-lowest);\n z-index: -1;\n left: -32px;\n top: 0;\n border-top-left-radius: 9999px;\n border-bottom-left-radius: 9999px;\n}\n\n.vc-author-modal-avatar {\n flex-shrink: 0;\n transform: translateX(4px);\n position: relative;\n z-index: 2;\n height: 32px;\n width: 32px;\n border-radius: 50%;\n border: 2px solid var(--background-primary);\n box-shadow:\n 0 0 0 1px rgb(255 255 255 / 18%),\n 0 2px 6px rgb(0 0 0 / 35%);\n}\n\n.vc-author-modal-links {\n display: flex;\n gap: 4px;\n margin-left: auto;\n width: 100%;\n justify-content: flex-end;\n}\n\n.vc-author-modal-plugins {\n display: grid;\n gap: 0.5em;\n margin-top: 0.75em;\n}", ".vc-settings-modal-light {\n color: black;\n}\n\n.vc-settings-modal-dark {\n color: white;\n}\n\n\n.vc-settings-modal-favorite-button {\n cursor: pointer;\n transition: color 0.2s ease-in-out;\n}\n\n.vc-settings-modal-favorite-button-active,\n.vc-settings-modal-favorite-button:hover {\n color: var(--yellow-300);\n}\n\n.vc-settings-modal-link-icon {\n height: 32px;\n width: 32px;\n border-radius: 50%;\n border: 4px solid var(--background-base-lowest);\n box-sizing: border-box\n}\n\n.vc-settings-modal-favorite-icon {\n background: var(--background-base-lowest);\n padding: 1px;\n}\n\n.vc-settings-modal-links {\n display: flex;\n gap: 0.2em;\n margin-left: auto;\n}", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./PluginModalButtons.css\";\n\nimport { GithubIcon, StarFilled, StarOutlined, WebsiteIcon } from \"@components/Icons\";\nimport { classNameFactory } from \"@utils/css\";\nimport { getTheme, Theme } from \"@utils/discord\";\nimport { Clickable, MaskedLink, Tooltip } from \"@webpack/common\";\n\nconst cl = classNameFactory(\"vc-settings-modal-\");\n\nconst getThemeClass = () => getTheme() !== Theme.Light ? \"dark\" : \"light\";\n\ninterface Props {\n text: string;\n href: string;\n}\n\nfunction LinkIcon({ text, href, Icon }: Props & { Icon: React.ComponentType; }) {\n return (\n \n {props =>\n \n \n \n }\n \n );\n}\n\nconst GithubLinkIcon = () => ;\nconst WebsiteLinkIcon = () => ;\n\nexport const GithubButton = (props: Props) => ;\nexport const WebsiteButton = (props: Props) => ;\n\nexport function FavoriteButton({ isFavorite, onClick }: { isFavorite: boolean; onClick: () => void; }) {\n const Icon = isFavorite ? StarFilled : StarOutlined;\n\n return (\n \n {props =>\n \n \n \n }\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./ContributorModal.css\";\n\nimport { useSettings } from \"@api/Settings\";\nimport { Heading } from \"@components/Heading\";\nimport { Link } from \"@components/Link\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { EquicordDevsById, VencordDevsById } from \"@utils/constants\";\nimport { classNameFactory } from \"@utils/css\";\nimport { fetchUserProfile } from \"@utils/discord\";\nimport { pluralise } from \"@utils/misc\";\nimport { RenderModalProps, User } from \"@vencord/discord-types\";\nimport { Modal, openModal, showToast, useEffect, useMemo, UserProfileStore, useStateFromStores } from \"@webpack/common\";\n\nimport Plugins, { PluginMeta } from \"~plugins\";\n\nimport { PluginCard } from \"./PluginCard\";\nimport { GithubButton, WebsiteButton } from \"./PluginModalButtons\";\n\nconst cl = classNameFactory(\"vc-author-modal-\");\n\nexport function openContributorModal(user: User) {\n openModal(modalProps => );\n}\n\nfunction ContributorModal({ user, modalProps }: { user: User; modalProps: RenderModalProps; }) {\n useSettings();\n\n const profile = useStateFromStores([UserProfileStore], () => UserProfileStore.getUserProfile(user.id));\n\n useEffect(() => {\n if (!profile && !user.bot && user.id)\n fetchUserProfile(user.id);\n }, [user.id, user.bot, profile]);\n\n const githubName = profile?.connectedAccounts?.find(a => a.type === \"github\")?.name;\n const website = profile?.connectedAccounts?.find(a => a.type === \"domain\")?.name;\n\n const plugins = useMemo(() => {\n const allPlugins = Object.values(Plugins);\n const pluginsByAuthor = (VencordDevsById[user.id] || EquicordDevsById[user.id])\n ? allPlugins.filter(p => p.authors.includes(VencordDevsById[user.id] || EquicordDevsById[user.id]))\n : allPlugins.filter(p =>\n PluginMeta[p.name]?.userPlugin && p.authors.some(a => a.id.toString() === user.id)\n || p.authors.some(a => a.name === user.username)\n );\n\n return pluginsByAuthor\n .filter(p => !p.name.endsWith(\"API\"))\n .sort((a, b) => Number(a.required ?? false) - Number(b.required ?? false));\n }, [user.id, user.username]);\n\n const ContributedHyperLink = contributed;\n\n const hasLinks = website || githubName;\n\n return (\n \n \n {user.username}\n \n }\n subtitle={\n plugins.length\n ? (\n \n {user.username} has {ContributedHyperLink} to {pluralise(plugins.length, \"plugin\")}!\n \n )\n : (\n \n {user.username} has not made any plugins. They likely {ContributedHyperLink} in other ways!\n \n )\n }\n actionBarInput={\n hasLinks && (\n \n {website && (\n \n )}\n {githubName && (\n \n )}\n \n )\n }\n >\n
\n {!!plugins.length && (\n
\n {plugins.map(p =>\n showToast(\"Restart to apply changes!\")}\n />\n )}\n
\n )}\n
\n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./PluginModal.css\";\n\nimport { generateId } from \"@api/Commands\";\nimport { hasAnyVisibleSettings, isSettingHidden } from \"@api/PluginManager\";\nimport { useSettings } from \"@api/Settings\";\nimport { BaseText } from \"@components/BaseText\";\nimport { Button } from \"@components/Button\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { Flex } from \"@components/Flex\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { debounce } from \"@shared/debounce\";\nimport { gitRemote } from \"@shared/vencordUserAgent\";\nimport { classNameFactory } from \"@utils/css\";\nimport { proxyLazy } from \"@utils/lazy\";\nimport { Margins } from \"@utils/margins\";\nimport { classes, isObjectEmpty } from \"@utils/misc\";\nimport { OptionType, Plugin, PluginTag } from \"@utils/types\";\nimport { RenderModalProps, User } from \"@vencord/discord-types\";\nimport { findComponentByCodeLazy, findCssClassesLazy } from \"@webpack\";\nimport { Clickable, FluxDispatcher, Modal, openModal, React, Text, Toasts, Tooltip, useEffect, useMemo, UserStore, UserSummaryItem, UserUtils, useState } from \"@webpack/common\";\nimport { Constructor } from \"type-fest\";\n\nimport { PluginMeta } from \"~plugins\";\n\nimport { OptionComponentMap } from \"./components\";\nimport { openContributorModal } from \"./ContributorModal\";\nimport { FavoriteButton, GithubButton, WebsiteButton } from \"./PluginModalButtons\";\n\nconst cl = classNameFactory(\"vc-plugin-modal-\");\n\nconst AvatarStyles = findCssClassesLazy(\"moreUsers\", \"avatar\", \"clickableAvatar\");\nconst CloseButton = findComponentByCodeLazy(\"CLOSE_BUTTON_LABEL\");\nconst ConfirmModal = findComponentByCodeLazy('parentComponent:\"ConfirmModal\"');\nconst WarningIcon = findComponentByCodeLazy(\"3.15H3.29c-1.74\");\nconst UserRecord: Constructor> = proxyLazy(() => UserStore.getCurrentUser().constructor) as any;\n\ninterface PluginModalProps extends RenderModalProps {\n plugin: Plugin;\n onRestartNeeded(key: string): void;\n}\n\nexport function makeDummyUser(user: { username: string; id?: string; avatar?: string; }) {\n const newUser = new UserRecord({\n username: user.username,\n id: user.id ?? generateId(),\n avatar: user.avatar,\n /** To stop discord making unwanted requests... */\n bot: true,\n });\n\n FluxDispatcher.dispatch({\n type: \"USER_UPDATE\",\n user: newUser,\n });\n\n return newUser;\n}\n\nfunction PluginTags({ tags }: { tags: PluginTag[]; }) {\n return (\n
\n {tags.map(tag => (\n
{tag}
\n ))}\n
\n );\n}\n\nexport default function PluginModal({ plugin, onRestartNeeded, onClose, transitionState }: PluginModalProps) {\n const pluginSettings = useSettings([`plugins.${plugin.name}.*`]).plugins[plugin.name];\n const hasSettings = hasAnyVisibleSettings(plugin);\n\n // avoid layout shift by showing dummy users while loading users\n const fallbackAuthors = useMemo(() => [makeDummyUser({ username: \"Loading...\", id: \"-1465912127305809920\" })], []);\n const [authors, setAuthors] = useState[]>([]);\n\n useEffect(() => {\n (async () => {\n for (const [index, user] of plugin.authors.slice(0, 6).entries()) {\n try {\n const author = user.id\n ? await UserUtils.getUser(String(user.id))\n .catch(() => makeDummyUser({ username: user.name }))\n : makeDummyUser({ username: user.name });\n\n setAuthors(a => [...a, author]);\n } catch (e) {\n continue;\n }\n }\n })();\n }, [plugin.authors]);\n\n function handleResetClick() {\n openWarningModal(plugin, onRestartNeeded);\n }\n\n function renderSettings() {\n const { settings } = plugin;\n if (!hasSettings || !settings)\n return There are no settings for this plugin.;\n\n const options = Object.entries(settings.def).map(([key, setting]) => {\n if (setting.type === OptionType.CUSTOM) return null;\n\n if (isSettingHidden(settings, setting)) return null;\n\n function onChange(newValue: any) {\n const option = plugin.settings!.def[key];\n if (!option || option.type === OptionType.CUSTOM) return;\n\n pluginSettings[key] = newValue;\n\n if (option.restartNeeded) onRestartNeeded(key);\n }\n\n const Component = OptionComponentMap[setting.type];\n return (\n \n \n \n );\n });\n\n return (\n
\n {options}\n
\n );\n }\n\n function renderMoreUsers(_label: string) {\n const remainingAuthors = plugin.authors.slice(6);\n\n return (\n u.name).join(\", \")}>\n {({ onMouseEnter, onMouseLeave }) => (\n \n +{remainingAuthors.length}\n \n )}\n \n );\n }\n\n const pluginMeta = PluginMeta[plugin.name];\n const isEquicordPlugin = pluginMeta.folderName.startsWith(\"src/equicordplugins/\") ?? false;\n\n return (\n \n {plugin.name}\n \n }\n subtitle={\n
\n
\n {plugin.description}\n {!!plugin.tags?.length && }\n
\n
\n }\n >\n {!!plugin.settingsAboutComponent && (\n
\n
\n \n \n \n
\n
\n )}\n
\n
\n Authors\n
\n \n (\n isEquicordPlugin ? openContributorModal(user) : openContributorModal(user)}\n >\n \n \n )}\n />\n \n
\n
\n\n
\n Settings\n {renderSettings()}\n
\n
\n
\n \n \n {hasSettings ? (\n \n {({ onMouseEnter, onMouseLeave }) => (\n \n Reset\n \n )}\n \n ) :
}\n {!pluginMeta.userPlugin && (\n
\n pluginSettings.isFavorite = !pluginSettings.isFavorite}\n />\n \n \n
\n )}\n \n \n
\n \n );\n}\n\nexport function openPluginModal(plugin: Plugin, onRestartNeeded?: (pluginName: string, key: string) => void) {\n openModal(modalProps => (\n onRestartNeeded?.(plugin.name, key)}\n />\n ));\n}\n\nfunction resetSettings(plugin: Plugin, onRestartNeeded?: (pluginName: string) => void) {\n const defaultSettings = plugin.settings?.def;\n const pluginName = plugin.name;\n\n if (!defaultSettings) return;\n\n const newSettings: Record = {};\n let restartNeeded = false;\n\n for (const key in defaultSettings) {\n if (key === \"enabled\") continue;\n\n const setting = defaultSettings[key];\n setting.type = setting.type ?? OptionType.STRING;\n\n if (setting.type === OptionType.STRING) {\n newSettings[key] = setting.default !== undefined && setting.default !== \"\" ? setting.default : \"\";\n } else if (\"default\" in setting && setting.default !== undefined) {\n newSettings[key] = setting.default;\n }\n\n if (setting?.restartNeeded) {\n restartNeeded = true;\n }\n }\n\n const currentSettings = plugin.settings?.store;\n if (currentSettings) {\n Object.assign(currentSettings, newSettings);\n }\n\n if (restartNeeded) {\n onRestartNeeded?.(plugin.name);\n }\n\n Toasts.show({\n message: `Settings for ${pluginName} have been reset.`,\n id: Toasts.genId(),\n type: Toasts.Type.SUCCESS,\n options: {\n position: Toasts.Position.TOP\n }\n });\n}\n\nexport function openWarningModal(plugin?: Plugin | null, onRestartNeeded?: (pluginName: string) => void, isPlugin = true, enabledPlugins?: number | null, reset?: () => void) {\n openModal(props => (\n {\n if (isPlugin && plugin) {\n resetSettings(plugin, onRestartNeeded);\n } else {\n reset?.();\n }\n }}\n onCancel={props.onClose}\n >\n \n {isPlugin\n ? <>Are you sure you want to reset all settings for {plugin?.name} to their default values?\n : `Are you sure you want to disable ${enabledPlugins} plugins?`\n }\n \n
\n \n This action cannot be undone.\n
\n \n ));\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { showNotice } from \"@api/Notices\";\nimport { hasAnyVisibleSettings, isPluginEnabled, pluginRequiresRestart, startDependenciesRecursive, startPlugin, stopPlugin } from \"@api/PluginManager\";\nimport { Settings } from \"@api/Settings\";\nimport { CogWheel, InfoIcon } from \"@components/Icons\";\nimport { AddonCard } from \"@components/settings/AddonCard\";\nimport { classNameFactory } from \"@utils/css\";\nimport { Logger } from \"@utils/Logger\";\nimport { Plugin } from \"@utils/types\";\nimport { React, showToast, Toasts } from \"@webpack/common\";\n\nimport { PluginMeta } from \"~plugins\";\n\nimport { openPluginModal } from \"./PluginModal\";\n\nconst logger = new Logger(\"PluginCard\");\nconst cl = classNameFactory(\"vc-plugins-\");\ninterface PluginCardProps extends React.HTMLProps {\n plugin: Plugin;\n disabled?: boolean;\n onRestartNeeded(name: string, key: string): void;\n isNew?: boolean;\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n}\n\nexport function PluginCard({ plugin, disabled, onRestartNeeded, onMouseEnter, onMouseLeave, isNew }: PluginCardProps) {\n const settings = Settings.plugins[plugin.name];\n const pluginMeta = PluginMeta[plugin.name];\n const isEquicordPlugin = pluginMeta.folderName.startsWith(\"src/equicordplugins/\") ?? false;\n const isVencordPlugin = pluginMeta.folderName.startsWith(\"src/plugins/\") ?? false;\n const isUserPlugin = pluginMeta?.userPlugin ?? false;\n const isModifiedPlugin = plugin.isModified ?? false;\n\n const isEnabled = () => isPluginEnabled(plugin.name);\n\n function toggleEnabled() {\n const wasEnabled = isEnabled();\n\n // If we're enabling a plugin, make sure all deps are enabled recursively.\n if (!wasEnabled) {\n const { restartNeeded, failures } = startDependenciesRecursive(plugin);\n\n if (failures.length) {\n logger.error(`Failed to start dependencies for ${plugin.name}: ${failures.join(\", \")}`);\n showNotice(\"Failed to start dependencies: \" + failures.join(\", \"), \"Close\", () => null);\n return;\n }\n\n if (restartNeeded) {\n // If any dependencies have patches, don't start the plugin yet.\n settings.enabled = true;\n onRestartNeeded(plugin.name, \"enabled\");\n return;\n }\n }\n\n // if the plugin requires a restart, don't use stopPlugin/startPlugin. Wait for restart to apply changes.\n if (pluginRequiresRestart(plugin)) {\n settings.enabled = !wasEnabled;\n onRestartNeeded(plugin.name, \"enabled\");\n return;\n }\n\n // If the plugin is enabled, but hasn't been started, then we can just toggle it off.\n if (wasEnabled && !plugin.started) {\n settings.enabled = !wasEnabled;\n return;\n }\n\n const result = wasEnabled ? stopPlugin(plugin) : startPlugin(plugin);\n\n if (!result) {\n settings.enabled = false;\n\n const msg = `Error while ${wasEnabled ? \"stopping\" : \"starting\"} plugin ${plugin.name}`;\n showToast(msg, Toasts.Type.FAILURE, {\n position: Toasts.Position.BOTTOM,\n });\n\n return;\n }\n\n settings.enabled = !wasEnabled;\n }\n\n const pluginInfo = [\n {\n condition: isModifiedPlugin,\n src: \"https://equicord.org/assets/icons/equicord/modified.png\",\n alt: \"Modified\",\n title: \"Modified Vencord Plugin\"\n },\n {\n condition: isEquicordPlugin,\n src: \"https://equicord.org/assets/favicon.png\",\n alt: \"Equicord\",\n title: \"Equicord Plugin\"\n },\n {\n condition: isVencordPlugin,\n src: \"https://equicord.org/assets/icons/vencord/icon-light.png\",\n alt: \"Vencord\",\n title: \"Vencord Plugin\"\n },\n {\n condition: isUserPlugin,\n src: \"https://equicord.org/assets/icons/misc/userplugin.png\",\n alt: \"User\",\n title: \"User Plugin\"\n }\n ];\n\n const pluginDetails = pluginInfo.find(p => p.condition);\n\n const sourceBadge = pluginDetails ? (\n \n ) : null;\n\n const tooltip = pluginDetails?.title || \"Unknown Plugin\";\n\n return (\n openPluginModal(plugin, onRestartNeeded)}\n className={cl(\"info-button\")}\n >\n {hasAnyVisibleSettings(plugin)\n ? \n : \n }\n \n } />\n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport class ChangeList{\n private set = new Set();\n\n public get changeCount() {\n return this.set.size;\n }\n\n public get hasChanges() {\n return this.changeCount > 0;\n }\n\n public handleChange(item: T) {\n if (!this.set.delete(item))\n this.set.add(item);\n }\n\n public add(item: T) {\n return this.set.add(item);\n }\n\n public remove(item: T) {\n return this.set.delete(item);\n }\n\n public getChanges() {\n return this.set.values();\n }\n\n public map(mapper: (v: T, idx: number, arr: T[]) => R): R[] {\n return [...this.getChanges()].map(mapper);\n }\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { useSettings } from \"@api/Settings\";\nimport { Button } from \"@components/Button\";\nimport { Card } from \"@components/Card\";\nimport { Heading } from \"@components/Heading\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { PluginCard } from \"@components/settings/tabs/plugins/PluginCard\";\nimport { ChangeList } from \"@utils/ChangeList\";\nimport { classNameFactory } from \"@utils/css\";\nimport { Margins } from \"@utils/margins\";\nimport { useForceUpdater } from \"@utils/react\";\nimport { React, Tooltip } from \"@webpack/common\";\n\nimport Plugins from \"~plugins\";\n\nconst cl = classNameFactory(\"vc-changelog-\");\n\ninterface NewPluginsSectionProps {\n newPlugins: string[];\n onPluginToggle?: (pluginName: string, enabled: boolean) => void;\n}\n\nexport function NewPluginsSection({\n newPlugins,\n onPluginToggle,\n}: NewPluginsSectionProps) {\n const settings = useSettings();\n const changes = React.useMemo(() => new ChangeList(), []);\n const forceUpdate = useForceUpdater();\n\n const depMap = React.useMemo(() => {\n const o = {} as Record;\n for (const plugin in Plugins) {\n const deps = Plugins[plugin].dependencies;\n if (deps) {\n for (const dep of deps) {\n o[dep] ??= [];\n o[dep].push(plugin);\n }\n }\n }\n return o;\n }, []);\n\n const mapPlugins = (array: string[]) =>\n array\n .map(pn => Plugins[pn])\n .filter(p => p && !p.hidden)\n .sort((a, b) => a.name.localeCompare(b.name));\n\n const sortedPlugins = React.useMemo(\n () => mapPlugins(newPlugins),\n [newPlugins],\n );\n\n if (sortedPlugins.length === 0) {\n return null;\n }\n\n const makeDependencyList = (deps: string[]) => {\n if (!deps) return null;\n return (\n \n This plugin is required by:\n {deps.map((dep: string) => (\n \n {dep}\n \n ))}\n \n );\n };\n\n return (\n
\n \n New Plugins ({sortedPlugins.length})\n \n\n \n The following plugins have been added in recent updates:\n \n\n
\n {sortedPlugins.map(plugin => {\n const isRequired =\n plugin.required ||\n depMap[plugin.name]?.some(\n d => settings.plugins[d].enabled,\n ) ||\n plugin.name.endsWith(\"API\");\n const tooltipText = plugin.required\n ? \"This plugin is required for Equicord to function.\"\n : makeDependencyList(\n depMap[plugin.name]?.filter(\n d => settings.plugins[d].enabled,\n ),\n );\n\n if (isRequired) {\n return (\n \n {({ onMouseLeave, onMouseEnter }) => (\n \n {\n changes.handleChange(name);\n forceUpdate();\n }}\n disabled={true}\n plugin={plugin}\n isNew={true}\n />\n \n )}\n \n );\n }\n\n return (\n \n {\n changes.handleChange(name);\n forceUpdate();\n }}\n disabled={false}\n plugin={plugin}\n isNew={true}\n />\n \n );\n })}\n
\n\n {changes.hasChanges && (\n
\n \n The following plugins require a restart:\n
\n
    \n {changes.map(p => (\n
  • {p}
  • \n ))}\n
\n \n }\n >\n {tooltipProps => (\n location.reload()}\n className={Margins.top16}\n >\n Restart Required\n \n )}\n \n
\n )}\n
\n );\n}\n\ninterface NewPluginsCompactProps {\n newPlugins: string[];\n maxDisplay?: number;\n}\n\nfunction CompactPluginCard({\n pluginName,\n depMap,\n settings,\n}: {\n pluginName: string;\n depMap: Record;\n settings: any;\n}) {\n const plugin = Plugins[pluginName];\n if (!plugin || plugin.hidden) return null;\n\n const isRequired =\n plugin.required ||\n depMap[plugin.name]?.some(d => settings.plugins[d].enabled);\n\n const tooltipText = plugin.required\n ? \"This plugin is required for Equicord to function.\"\n : depMap[plugin.name]?.length > 0\n ? `This plugin is required by: ${depMap[plugin.name]\n ?.filter(d => settings.plugins[d].enabled)\n .join(\", \")}`\n : null;\n\n return (\n
\n
\n \n {plugin.name}\n {isRequired && \" *\"}\n \n \n {plugin.authors?.[0]?.name || \"Unknown\"}\n \n
\n
\n {plugin.description || \"No description available\"}\n
\n {tooltipText && (\n
{tooltipText}
\n )}\n
\n );\n}\n\nexport function NewPluginsCompact({\n newPlugins,\n maxDisplay = 20,\n}: NewPluginsCompactProps) {\n const settings = useSettings();\n\n const depMap = React.useMemo(() => {\n const o = {} as Record;\n for (const plugin in Plugins) {\n const deps = Plugins[plugin].dependencies;\n if (deps) {\n for (const dep of deps) {\n o[dep] ??= [];\n o[dep].push(plugin);\n }\n }\n }\n return o;\n }, []);\n\n if (newPlugins.length === 0) {\n return null;\n }\n\n const displayPlugins = newPlugins.slice(0, maxDisplay);\n const hasMore = newPlugins.length > maxDisplay;\n\n return (\n
\n
\n {displayPlugins.map(pluginName => (\n \n ))}\n\n {hasMore && (\n
\n
\n +{newPlugins.length - maxDisplay} more plugins\n
\n
\n )}\n
\n
\n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./styles.css\";\n\nimport { Button } from \"@components/Button\";\nimport { Card } from \"@components/Card\";\nimport { Divider } from \"@components/Divider\";\nimport { ErrorCard } from \"@components/ErrorCard\";\nimport { Heading } from \"@components/Heading\";\nimport { DeleteIcon } from \"@components/Icons\";\nimport { Link } from \"@components/Link\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { SettingsTab, wrapTab } from \"@components/settings/tabs/BaseTab\";\nimport { HashLink } from \"@components/settings/tabs/updater/Components\";\nimport { Margins } from \"@utils/margins\";\nimport { useAwaiter } from \"@utils/react\";\nimport { getRepo, UpdateLogger } from \"@utils/updater\";\nimport { Alerts, React, Toasts } from \"@webpack/common\";\n\nimport gitHash from \"~git-hash\";\n\nimport {\n ChangelogEntry,\n ChangelogHistory,\n clearChangelogHistory,\n clearIndividualLog,\n formatTimestamp,\n getChangelogHistory,\n getCommitsSinceLastSeen,\n getLastRepositoryCheckHash,\n getNewPlugins,\n getNewSettings,\n getNewSettingsEntries,\n getNewSettingsSize,\n getUpdatedPlugins,\n initializeChangelog,\n saveUpdateSession,\n UpdateSession,\n} from \"./changelogManager\";\nimport { NewPluginsCompact, NewPluginsSection } from \"./NewPluginsSection\";\n\nfunction ChangelogCard({\n entry,\n repo,\n repoPending,\n}: {\n entry: ChangelogEntry;\n repo: string;\n repoPending: boolean;\n}) {\n return (\n \n \n
\n \n \n \n \n by {entry.author}\n \n
\n
\n {entry.message}\n
\n
\n \n );\n}\n\nfunction UpdateLogCard({\n log,\n repo,\n repoPending,\n isExpanded,\n onToggleExpand,\n onClearLog,\n}: {\n log: UpdateSession;\n repo: string;\n repoPending: boolean;\n isExpanded: boolean;\n onToggleExpand: () => void;\n onClearLog: (logId: string) => void;\n}) {\n const isRepositoryFetch =\n log.type === \"repository_fetch\" ||\n (log.type === undefined &&\n log.fromHash === log.toHash &&\n log.commits.length === 0);\n const isUpToDate = log.fromHash === log.toHash;\n\n return (\n \n
\n
\n
\n \n {isRepositoryFetch\n ? isUpToDate\n ? `Repository check: ${log.fromHash.slice(0, 7)} (up to date)`\n : `Repository check: ${log.fromHash.slice(0, 7)} \u2192 ${log.toHash.slice(0, 7)}`\n : `Update: ${log.fromHash.slice(0, 7)} \u2192 ${log.toHash.slice(0, 7)}`}\n \n {\n e.stopPropagation();\n onClearLog(log.id);\n }}\n >\n \n \n
\n
\n {formatTimestamp(log.timestamp)}\n {log.commits.length > 0 &&\n ` \u2022 ${log.commits.length} commits available`}\n {log.commits.length === 0 && \" \u2022 No new commits\"}\n {log.newPlugins.length > 0 &&\n ` \u2022 ${log.newPlugins.length} new plugins`}\n {log.updatedPlugins.length > 0 &&\n ` \u2022 ${log.updatedPlugins.length} updated plugins`}\n {log.newSettings &&\n getNewSettingsSize(log.newSettings) > 0 &&\n ` \u2022 ${getNewSettingsEntries(log.newSettings).reduce((sum, [, arr]) => sum + arr.length, 0)} new settings`}\n
\n
\n \n \u25BC\n
\n
\n\n {isExpanded && (\n
\n {log.newPlugins.length > 0 && (\n
\n \n
\n )}\n\n {log.updatedPlugins.length > 0 && (\n
\n \n Updated Plugins\n \n \n
\n )}\n\n {log.newSettings &&\n getNewSettingsSize(log.newSettings) > 0 && (\n
\n \n New Settings\n \n
\n {getNewSettingsEntries(log.newSettings).map(\n ([pluginName, settings]) =>\n settings.map(setting => (\n \n {pluginName}.{setting}\n \n )),\n )}\n
\n
\n )}\n\n {log.commits.length > 0 && (\n
\n
\n {log.commits.map(entry => (\n \n ))}\n
\n
\n )}\n
\n )}\n \n );\n}\n\nfunction ChangelogContent() {\n const [repo, repoErr, repoPending] = useAwaiter(getRepo, {\n fallbackValue: \"Loading...\",\n });\n const [changelog, setChangelog] = React.useState([]);\n const [changelogHistory, setChangelogHistory] =\n React.useState([]);\n const [newPlugins, setNewPlugins] = React.useState([]);\n const [updatedPlugins, setUpdatedPlugins] = React.useState([]);\n const [isLoading, setIsLoading] = React.useState(true);\n const [error, setError] = React.useState(null);\n const [expandedLogs, setExpandedLogs] = React.useState>(\n new Set(),\n );\n const [showHistory, setShowHistory] = React.useState(false);\n const [recentlyChecked, setRecentlyChecked] = React.useState(false);\n\n React.useEffect(() => {\n const init = async () => {\n try {\n await initializeChangelog();\n await loadChangelogHistory();\n } catch (err) {\n console.error(\"Failed to initialize changelog:\", err);\n }\n };\n init();\n }, []);\n\n React.useEffect(() => {\n if (repoErr) {\n UpdateLogger.error(\"Failed to retrieve repo\", repoErr);\n setError(\"Failed to retrieve repository information\");\n }\n }, [repoErr]);\n\n const loadChangelogHistory = React.useCallback(async () => {\n try {\n const history = await getChangelogHistory();\n setChangelogHistory(history);\n } catch (err) {\n console.error(\"Failed to load changelog history:\", err);\n }\n }, []);\n\n const loadNewPlugins = React.useCallback(async () => {\n try {\n const newPlgs = await getNewPlugins();\n const updatedPlgs = await getUpdatedPlugins();\n setNewPlugins(newPlgs);\n setUpdatedPlugins(updatedPlgs);\n } catch (err) {\n console.error(\"Failed to load new plugins:\", err);\n }\n }, []);\n\n const ensureLocalUpdateLogged = React.useCallback(async () => {\n if (repoPending || repoErr) return false;\n const repoUrl = repo;\n if (!repoUrl) return false;\n\n try {\n const commits = await getCommitsSinceLastSeen(repoUrl);\n if (commits.length === 0) return false;\n\n const newPlgs = await getNewPlugins();\n const updatedPlgs = await getUpdatedPlugins();\n const newSettings = await getNewSettings();\n\n await saveUpdateSession(commits, newPlgs, updatedPlgs, newSettings);\n\n setChangelog(commits);\n setNewPlugins(newPlgs);\n setUpdatedPlugins(updatedPlgs);\n await loadChangelogHistory();\n return true;\n } catch (err) {\n console.error(\"Failed to log local update:\", err);\n return false;\n }\n }, [repo, repoErr, repoPending, loadChangelogHistory]);\n\n // check if the repository was recently refreshed\n React.useEffect(() => {\n const checkRecentStatus = async () => {\n try {\n const lastRepoCheck = await getLastRepositoryCheckHash();\n const updates = await VencordNative.updater.getUpdates();\n\n if (updates.ok) {\n const currentRepoHash =\n updates.value.length > 0\n ? updates.value[0].hash\n : gitHash;\n setRecentlyChecked(lastRepoCheck === currentRepoHash);\n }\n } catch (err) {\n // ignore errors (hopefully there are none lol)\n setRecentlyChecked(false);\n }\n };\n\n if (!repoPending && !repoErr) {\n checkRecentStatus();\n }\n }, [repoPending, repoErr]);\n\n const fetchChangelog = React.useCallback(async () => {\n if (repoPending || repoErr) return;\n\n setIsLoading(true);\n setError(null);\n\n try {\n // check if the repository was recently refreshed and that nothing has changed\n const updates = await VencordNative.updater.getUpdates();\n const lastRepoCheck = await getLastRepositoryCheckHash();\n const currentRepoHash =\n updates.ok && updates.value.length > 0\n ? updates.value[0].hash\n : gitHash;\n\n // If repository state hasn't changed since last check\n if (lastRepoCheck === currentRepoHash) {\n setIsLoading(false);\n setRecentlyChecked(true);\n const logged = await ensureLocalUpdateLogged();\n if (!logged) {\n setChangelog([]);\n Toasts.show({\n message: \"Already up to date with repository\",\n id: Toasts.genId(),\n type: Toasts.Type.MESSAGE,\n options: {\n position: Toasts.Position.BOTTOM,\n },\n });\n }\n return;\n }\n\n if (updates.ok && updates.value) {\n if (updates.value.length > 0) {\n setChangelog(updates.value);\n\n const newPlgs = await getNewPlugins();\n const updatedPlgs = await getUpdatedPlugins();\n const newSettings = await getNewSettings();\n setNewPlugins(newPlgs);\n setUpdatedPlugins(updatedPlgs);\n\n await saveUpdateSession(\n updates.value,\n newPlgs,\n updatedPlgs,\n newSettings,\n true,\n );\n await loadChangelogHistory();\n setRecentlyChecked(true);\n\n Toasts.show({\n message: `Found ${updates.value.length} commit${updates.value.length === 1 ? \"\" : \"s\"} from repository`,\n id: Toasts.genId(),\n type: Toasts.Type.SUCCESS,\n options: {\n position: Toasts.Position.BOTTOM,\n },\n });\n } else {\n const logged = await ensureLocalUpdateLogged();\n setRecentlyChecked(true);\n Toasts.show({\n message: logged\n ? \"Logged commits from your latest update\"\n : \"Repository is up to date with your local copy\",\n id: Toasts.genId(),\n type: logged ? Toasts.Type.SUCCESS : Toasts.Type.MESSAGE,\n options: {\n position: Toasts.Position.BOTTOM,\n },\n });\n if (!logged) {\n setChangelog([]);\n }\n }\n } else if (!updates.ok) {\n throw new Error(\n updates.error?.message || \"Failed to fetch from repository\",\n );\n }\n } catch (err: any) {\n UpdateLogger.error(\"Failed to fetch commits from repository\", err);\n const errorMessage =\n err?.message ||\n \"Failed to connect to repository. Check your internet connection.\";\n setError(errorMessage);\n\n // funny little error toast hopefully doesn't happen!\n Toasts.show({\n message: \"Could not fetch commits from repository\",\n id: Toasts.genId(),\n type: Toasts.Type.FAILURE,\n options: {\n position: Toasts.Position.BOTTOM,\n },\n });\n } finally {\n setIsLoading(false);\n }\n }, [repoPending, repoErr, loadNewPlugins, loadChangelogHistory]);\n\n React.useEffect(() => {\n const loadInitialData = async () => {\n if (!repoPending && !repoErr) {\n await loadNewPlugins();\n const logged = await ensureLocalUpdateLogged();\n if (!logged) {\n await fetchChangelog();\n } else {\n setIsLoading(false);\n }\n } else if (!repoPending) {\n // perseverance\n await loadNewPlugins();\n setIsLoading(false);\n }\n };\n loadInitialData();\n }, [\n repoPending,\n repoErr,\n fetchChangelog,\n loadNewPlugins,\n ensureLocalUpdateLogged,\n ]);\n\n const toggleLogExpanded = (logId: string) => {\n const newExpanded = new Set(expandedLogs);\n if (newExpanded.has(logId)) {\n newExpanded.delete(logId);\n } else {\n newExpanded.add(logId);\n }\n setExpandedLogs(newExpanded);\n };\n\n const hasCurrentChanges =\n changelog.length > 0 ||\n newPlugins.length > 0 ||\n updatedPlugins.length > 0;\n\n return (\n <>\n Fetch Changes\n \n Check the repository for new commits, plugin updates, and code changes. This will compare your current version with the latest available and show you what's new.\n \n\n
\n \n {isLoading\n ? \"Loading...\"\n : recentlyChecked\n ? \"Repository Up to Date\"\n : \"Fetch from Repository\"}\n \n\n {changelogHistory.length > 0 && (\n <>\n setShowHistory(!showHistory)}\n style={{ marginLeft: \"8px\" }}\n >\n {showHistory ? \"Hide Logs\" : \"Show Logs\"}\n \n {\n Alerts.show({\n title: \"Clear All Logs\",\n body: \"Are you sure you would like to clear all logs? This can't be undone.\",\n confirmText: \"Clear All\",\n confirmColor: \"danger\",\n cancelText: \"Cancel\",\n onConfirm: async () => {\n await clearChangelogHistory();\n await loadChangelogHistory();\n setShowHistory(false);\n Toasts.show({\n message: \"All logs have been cleared\",\n id: Toasts.genId(),\n type: Toasts.Type.SUCCESS,\n options: {\n position: Toasts.Position.BOTTOM,\n },\n });\n },\n });\n }}\n style={{ marginLeft: \"8px\" }}\n >\n Clear All Logs\n \n \n )}\n
\n\n {error && (\n \n {error}\n \n Make sure you have an internet connection and try again.\n \n \n )}\n\n \n\n Repository\n \n This is the GitHub repository where Equicord fetches updates from.\n \n \n {repoPending ? (\n repo\n ) : repoErr ? (\n \"Failed to retrieve - check console\"\n ) : (\n \n {repo.split(\"/\").slice(-2).join(\"/\")}\n \n )}\n {\" \"}()\n \n\n {hasCurrentChanges && (\n <>\n \n\n Recent Changes\n \n These are the new commits and plugin updates since your last version. You can see what features were added, bugs were fixed, and which plugins received updates.\n \n\n {newPlugins.length > 0 && (\n
\n { }}\n />\n
\n )}\n\n {updatedPlugins.length > 0 && (\n
\n \n Updated Plugins ({updatedPlugins.length})\n \n \n
\n )}\n\n {changelog.length > 0 && (\n
\n \n Code Changes ({changelog.length} {changelog.length === 1 ? \"commit\" : \"commits\"})\n \n
\n {changelog.map(entry => (\n \n ))}\n
\n
\n )}\n \n )}\n\n {!hasCurrentChanges && !isLoading && !error && (\n <>\n \n Recent Changes\n \n No commits available ahead of your current version. Click \"Fetch from Repository\" to check for new changes.\n \n \n )}\n\n {showHistory && changelogHistory.length > 0 && (\n <>\n \n\n \n Update Logs ({changelogHistory.length} {changelogHistory.length === 1 ? \"log\" : \"logs\"})\n \n \n A history of your previous update sessions with their commit history and plugin changes. Click on a log to expand it and see the details.\n \n\n
\n {changelogHistory.map(log => (\n toggleLogExpanded(log.id)}\n onClearLog={logId => {\n Alerts.show({\n title: \"Clear Log\",\n body: \"Are you sure you would like to clear this log? This can't be undone.\",\n confirmText: \"Clear Log\",\n confirmColor: \"danger\",\n cancelText: \"Cancel\",\n onConfirm: async () => {\n await clearIndividualLog(logId);\n await loadChangelogHistory();\n setExpandedLogs(\n new Set(\n Array.from(expandedLogs).filter(id => id !== logId),\n ),\n );\n Toasts.show({\n message: \"Log has been cleared\",\n id: Toasts.genId(),\n type: Toasts.Type.SUCCESS,\n options: {\n position: Toasts.Position.BOTTOM,\n },\n });\n },\n });\n }}\n />\n ))}\n
\n \n )}\n \n );\n}\n\nfunction ChangelogTab() {\n return (\n \n \n \n );\n}\n\nexport default wrapTab(ChangelogTab, \"Changelog\");\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2023 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { classes } from \"@utils/misc\";\nimport { findCssClassesLazy } from \"@webpack\";\nimport { Parser } from \"@webpack/common\";\n\nconst CodeContainerClasses = findCssClassesLazy(\"markup\", \"codeContainer\");\n\n/**\n * Renders code in a Discord codeblock\n */\nexport function CodeBlock({ className, ...props }: { content?: string, lang: string; className?: string; }) {\n return (\n
\n {Parser.defaultRules.codeBlock.react(props, null, {})}\n
\n );\n}\n\n/**\n * Renders inline code like `this`\n */\nexport function InlineCode({ children, className }: { children: React.ReactNode; className?: string; }) {\n return (\n \n {children}\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Paragraph } from \"@components/Paragraph\";\nimport { Patch, ReplaceFn } from \"@utils/types\";\nimport { TextArea, useEffect, useRef, useState } from \"@webpack/common\";\n\nexport interface FullPatchInputProps {\n setFind(v: string): void;\n setParsedFind(v: string | RegExp): void;\n setMatch(v: string): void;\n setReplacement(v: string | ReplaceFn): void;\n}\n\nexport function FullPatchInput({ setFind, setParsedFind, setMatch, setReplacement }: FullPatchInputProps) {\n const [patch, setPatch] = useState(\"\");\n const [error, setError] = useState(\"\");\n\n const textAreaRef = useRef(null);\n\n function update() {\n if (patch === \"\") {\n setError(\"\");\n\n setFind(\"\");\n setParsedFind(\"\");\n setMatch(\"\");\n setReplacement(\"\");\n return;\n }\n\n try {\n let { find, replacement } = (0, eval)(`([${patch}][0])`) as Patch;\n\n if (!find) throw new Error(\"No 'find' field\");\n if (!replacement) throw new Error(\"No 'replacement' field\");\n\n if (replacement instanceof Array) {\n if (replacement.length === 0) throw new Error(\"Invalid replacement\");\n\n // Only test the first replacement\n replacement = replacement[0];\n }\n\n if (!replacement.match) throw new Error(\"No 'replacement.match' field\");\n if (replacement.replace == null) throw new Error(\"No 'replacement.replace' field\");\n\n setFind(find instanceof RegExp ? `/${find.source}/` : find);\n setParsedFind(find);\n setMatch(replacement.match instanceof RegExp ? replacement.match.source : replacement.match);\n setReplacement(replacement.replace);\n setError(\"\");\n } catch (e) {\n setError((e as Error).message);\n }\n }\n\n useEffect(() => {\n const { current: textArea } = textAreaRef;\n if (textArea) {\n textArea.style.height = \"auto\";\n textArea.style.height = `${textArea.scrollHeight}px`;\n }\n }, [patch]);\n\n return (\n <>\n \n {error !== \"\" && {error}}\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Heading } from \"@components/Heading\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { Margins } from \"@utils/margins\";\nimport { canonicalizeMatch, canonicalizeReplace } from \"@utils/patches\";\nimport { makeCodeblock } from \"@utils/text\";\nimport { ReplaceFn } from \"@utils/types\";\nimport { Button, Parser, useMemo, useState } from \"@webpack/common\";\nimport type { Change } from \"diff\";\n\n// Do not include diff in standalone builds (side effects import)\nif (!IS_STANDALONE) {\n var differ = require(\"diff\") as typeof import(\"diff\");\n}\n\ninterface PatchPreviewProps {\n module: [id: number, factory: Function];\n match: string;\n replacement: string | ReplaceFn;\n setReplacementError(error: any): void;\n}\n\nfunction makeDiff(original: string, patched: string, match: RegExpMatchArray | null) {\n if (!match || original === patched) return null;\n\n const changeSize = patched.length - original.length;\n\n // Use 200 surrounding characters of context\n const start = Math.max(0, match.index! - 200);\n const end = Math.min(original.length, match.index! + match[0].length + 200);\n // (changeSize may be negative)\n const endPatched = end + changeSize;\n\n const context = original.slice(start, end);\n const patchedContext = patched.slice(start, endPatched);\n\n return differ.diffWordsWithSpace(context, patchedContext);\n}\n\nfunction Match({ matchResult }: { matchResult: RegExpMatchArray | null; }) {\n if (!matchResult)\n return null;\n\n const fullMatch = matchResult[0]\n ? makeCodeblock(matchResult[0], \"js\")\n : \"\";\n const groups = matchResult.length > 1\n ? makeCodeblock(matchResult.slice(1).map((g, i) => `Group ${i + 1}: ${g}`).join(\"\\n\"), \"yml\")\n : \"\";\n\n return (\n <>\n Match\n
{Parser.parse(fullMatch)}
\n
{Parser.parse(groups)}
\n \n );\n}\n\nfunction Diff({ diff }: { diff: Change[] | null; }) {\n if (!diff?.length)\n return null;\n\n const diffLines = diff.map((p, idx) => {\n const color = p.added\n ? \"lime\"\n : p.removed\n ? \"red\"\n : \"grey\";\n\n return (\n \n {p.value}\n \n );\n });\n\n return (\n <>\n Diff\n {diffLines}\n \n );\n}\n\nexport function PatchPreview({ module, match, replacement, setReplacementError }: PatchPreviewProps) {\n const [id, fact] = module;\n const [compileResult, setCompileResult] = useState<[boolean, string]>();\n\n const [patchedCode, matchResult, diff] = useMemo<[string, RegExpMatchArray | null, Change[] | null]>(() => {\n const src: string = fact.toString().replaceAll(\"\\n\", \"\");\n\n try {\n new RegExp(match);\n } catch (e) {\n return [\"\", null, null];\n }\n\n const canonicalMatch = canonicalizeMatch(new RegExp(match));\n try {\n const canonicalReplace = canonicalizeReplace(replacement, 'Vencord.Plugins.plugins[\"YourPlugin\"]');\n var patched = src.replace(canonicalMatch, canonicalReplace as string);\n setReplacementError(void 0);\n } catch (e) {\n setReplacementError((e as Error).message);\n return [\"\", null, null];\n }\n\n const m = src.match(canonicalMatch);\n return [patched, m, makeDiff(src, patched, m)];\n }, [id, match, replacement]);\n\n return (\n <>\n Module {id}\n\n \n \n\n {!!diff?.length && (\n {\n try {\n const isArrowFunction = patchedCode.startsWith(\"(\");\n const wrappedCode = \"0,\" + (!isArrowFunction ? \"function\" : \"\") + patchedCode.slice(patchedCode.indexOf(\"(\"));\n Function(wrappedCode);\n\n setCompileResult([true, \"Compiled successfully\"]);\n } catch (err) {\n setCompileResult([false, (err as Error).message]);\n }\n }}\n >\n Compile\n \n )}\n\n {compileResult && (\n \n {compileResult[1]}\n \n )}\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { FormSwitch } from \"@components/FormSwitch\";\nimport { Heading } from \"@components/Heading\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { Margins } from \"@utils/margins\";\nimport { Parser, TextInput, useEffect, useState } from \"@webpack/common\";\n\nconst RegexGuide = {\n \"\\\\i\": \"Special regex escape sequence that matches identifiers (varnames, classnames, etc.)\",\n \"$$\": \"Insert a $\",\n \"$&\": \"Insert the entire match\",\n \"$`\\u200b\": \"Insert the substring before the match\",\n \"$'\": \"Insert the substring after the match\",\n \"$n\": \"Insert the nth capturing group ($1, $2...)\",\n \"$self\": \"Insert the plugin instance\",\n} as const;\n\nexport function ReplacementInput({ replacement, setReplacement, replacementError }) {\n const [isFunc, setIsFunc] = useState(false);\n const [error, setError] = useState();\n\n function onChange(v: string) {\n setError(void 0);\n\n if (isFunc) {\n try {\n const func = (0, eval)(v);\n if (typeof func === \"function\")\n setReplacement(() => func);\n\n else\n setError(\"Replacement must be a function\");\n } catch (e) {\n setReplacement(v);\n setError((e as Error).message);\n }\n } else {\n setReplacement(v);\n }\n }\n\n useEffect(() => {\n if (isFunc)\n onChange(replacement);\n else\n setError(void 0);\n }, [isFunc]);\n\n return (\n <>\n {/* FormTitle adds a class if className is not set, so we set it to an empty string to prevent that */}\n Replacement\n \n {!isFunc && (\n
\n Cheat Sheet\n\n {Object.entries(RegexGuide).map(([placeholder, desc]) => (\n \n {Parser.parse(\"`\" + placeholder + \"`\")}: {desc}\n \n ))}\n
\n )}\n\n \n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Button } from \"@components/Button\";\nimport { CodeBlock } from \"@components/CodeBlock\";\nimport { Divider } from \"@components/Divider\";\nimport { Flex } from \"@components/Flex\";\nimport { Heading } from \"@components/Heading\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { SettingsTab, wrapTab } from \"@components/settings/tabs/BaseTab\";\nimport { Span } from \"@components/Span\";\nimport { debounce } from \"@shared/debounce\";\nimport { copyWithToast } from \"@utils/discord\";\nimport { Margins } from \"@utils/margins\";\nimport { stripIndent } from \"@utils/text\";\nimport { ReplaceFn } from \"@utils/types\";\nimport { search } from \"@webpack\";\nimport { React, TextInput, useMemo, useState } from \"@webpack/common\";\n\nimport { FullPatchInput } from \"./FullPatchInput\";\nimport { PatchPreview } from \"./PatchPreview\";\nimport { ReplacementInput } from \"./ReplacementInput\";\n\nconst findCandidates = debounce(function ({ find, setModule, setError }) {\n const candidates = search(find);\n const keys = Object.keys(candidates);\n const len = keys.length;\n\n if (len === 0)\n setError(\"No match. Perhaps that module is lazy loaded?\");\n else if (len !== 1)\n setError(\"Multiple matches. Please refine your filter\");\n else\n setModule([keys[0], candidates[keys[0]]]);\n});\n\nfunction PatchHelper() {\n const [find, setFind] = useState(\"\");\n const [match, setMatch] = useState(\"\");\n const [replacement, setReplacement] = useState(\"\");\n\n const [parsedFind, setParsedFind] = useState(\"\");\n\n const [findError, setFindError] = useState();\n const [matchError, setMatchError] = useState();\n const [replacementError, setReplacementError] = useState();\n\n const [module, setModule] = useState<[number, Function]>();\n\n const code = useMemo(() => {\n const find = parsedFind instanceof RegExp ? parsedFind.toString() : JSON.stringify(parsedFind);\n const replace = typeof replacement === \"function\" ? replacement.toString() : JSON.stringify(replacement);\n\n return stripIndent`\n {\n find: ${find},\n replacement: {\n match: /${match.replace(/(?\n Patch Helper\n \n A developer tool to help you create patches for Equicord plugins.\n \n\n Full Patch\n Paste your full JSON patch here to fill out the fields\n \n\n
\n Find\n \n
\n
\n Match\n \n
\n\n
\n \n
\n\n {module && (\n <>\n \n Preview\n \n \n )}\n\n {!!(find && match && replacement) && (\n <>\n \n Generated Code\n
\n \n
\n \n \n \n \n \n )}\n \n );\n}\n\nexport default !IS_STANDALONE ? wrapTab(PatchHelper, \"PatchHelper\") : null;\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n.vc-plugins-grid {\n margin-top: 16px;\n display: grid;\n gap: 16px;\n grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n}\n\n.vc-plugins-info-button {\n height: 24px;\n width: 24px;\n padding: 0;\n background: transparent;\n margin-right: 8px;\n color: var(--icon-muted);\n transition: background-color .2s ease;\n\n &:hover {\n color: var(--interactive-icon-hover)\n }\n}\n\n.vc-plugins-settings-button:hover {\n color: var(--interactive-icon-hover);\n}\n\n.vc-plugins-filter-controls {\n display: grid;\n height: 40px;\n gap: 10px;\n grid-template-columns: 1fr 1fr;\n align-items: center;\n}\n\n.vc-plugins-filter-control {\n height: 40px;\n}\n\n.vc-plugins-dep-name {\n margin: 0 auto;\n}\n\n.vc-plugins-info-card {\n padding: 1em;\n height: fit-content;\n display: flex;\n flex-direction: column;\n background-color: var(--background-base-lower-alt) !important;\n transition: 0.1s ease-out;\n transition-property: box-shadow, transform, background, opacity;\n gap: 0.25em;\n}\n\n.vc-plugins-restart-card {\n padding: 1em;\n background: var(--icon-status-idle) !important;\n border: 1px solid var(--icon-status-idle) !important;\n color: var(--text-status-idle);\n}\n\n.vc-plugins-info-icon:not(:hover, :focus) {\n color: var(--text-subtle);\n}\n\n.vc-plugins-restart-button {\n background-color: var(--background-base-low) !important;\n border: 1px solid var(--text-status-idle) !important;\n margin-top: 0.5em;\n}\n\n.vc-plugins-restart-button:hover {\n background-color: var(--text-status-idle) !important;\n}\n\n.vc-plugin-stats {\n background-color: var(--background-base-lower-alt);\n border-radius: 8px;\n padding: 12px;\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n transition: 0.1s ease-out;\n transition-property: box-shadow, transform, background, opacity;\n}\n\n.vc-plugins-info-card:hover,\n.vc-plugin-stats:hover {\n background-color: var(--background-base-low) !important;\n transform: translateY(-1px);\n box-shadow: var(--elevation-high);\n}\n\n.vc-plugin-stats-card-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.vc-plugin-stats-card-section {\n text-align: center;\n flex: 1;\n}\n\n.vc-plugin-stats-card-divider {\n border-left: 1px solid #ccc;\n height: 100%;\n margin: 0 10px;\n}\n\n/* Shared styles for warning modal and disable all modal */\n\n.vc-text-selectable {\n user-select: none;\n}\n\n.vc-warning-info {\n gap: 15px;\n display: grid !important;\n flex-direction: column;\n user-select: none;\n}\n\n.vc-warning-info img {\n width: 70%;\n height: auto;\n display: block;\n margin: auto auto 10px;\n}\n\n.vc-warning-info strong {\n font-weight: bold;\n}\n\n.text-danger {\n color: var(--text-feedback-critical) !important;\n font-size: 1.2rem;\n font-weight: bold;\n}\n\n.text-normal {\n color: var(--text-default);\n font-size: 1.2rem;\n}\n\n.text-normal.margin-bottom {\n margin-bottom: 10px;\n}\n\n.vc-plugins-disable-warning,\n.vc-plugin-modal-disable-warning {\n background-color: color-mix(in srgb, var(--status-danger) 10%, transparent) !important;\n border-style: solid !important;\n border-width: .1rem !important;\n border-color: color-mix(in srgb, var(--status-danger) 80%, transparent) !important;\n border-radius: 5px !important;\n color: color-mix(in srgb, var(--status-danger) 100%, transparent) !important;\n}\n\n.vc-plugins-disable-warning:hover,\n.vc-plugin-modal-disable-warning:hover {\n background-color: color-mix(in srgb, var(--status-danger) 40%, transparent) !important;\n}\n\n.vc-plugins-confirm-reset,\n.vc-plugin-modal-confirm-reset {\n background-color: var(--status-danger) !important;\n color: var(--text-default);\n}\n\n.vc-plugins-confirm-reset:hover,\n.vc-plugin-modal-confirm-reset:hover {\n background-color: var(--text-feedback-critical) !important;\n color: var(--text-default);\n}\n\n.vc-modal-close-button {\n margin-left: auto !important;\n}\n\n.vc-modal-align-reset {\n align-self: end;\n}\n\n.vc-modal-footer {\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n}\n\n.vc-modal-footer .vc-button-container {\n gap: 10px;\n align-items: center;\n justify-content: space-between !important;\n}\n\n/* Specific to disable all modal */\n\n.warning-text {\n color: var(--text-feedback-critical) !important;\n font-size: 1.2rem !important;\n}\n\n.warning-text span {\n font-weight: bold;\n text-decoration: underline;\n}\n\n.visual-refresh .button-danger-background {\n font-size: 16px;\n background-color: rgb(240 71 71 / 10%) !important;\n color: rgb(240 71 71) !important;\n border: 1px solid rgb(240 71 71 / 60%) !important;\n border-radius: 4px;\n font-weight: 500;\n padding: 6px 10px;\n text-align: center;\n}\n\n.visual-refresh .button-danger-background:hover {\n background-color: var(--status-danger-background) !important;\n color: var(--status-danger-text) !important;\n}\n\n.visual-refresh .vc-plugins-info-card {\n background-color: var(--background-surface-high) !important;\n border: 1px solid var(--border-subtle) !important;\n\n &:hover {\n background-color: var(--background-surface-high) !important;\n }\n}\n\n.visual-refresh .vc-plugin-stats {\n background-color: var(--background-surface-high) !important;\n border: 1px solid var(--border-subtle) !important;\n\n &:hover {\n background-color: var(--background-surface-high) !important;\n }\n}\n\n.vc-plugins-settings {\n display: flex;\n flex-direction: column;\n gap: 1.25em;\n}\n\n.vc-plugins-page-buttons {\n margin-top: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.vc-plugins-source {\n width: 22px;\n height: 22px;\n margin-top: 2px;\n margin-right: 8px;\n}\n\n.vc-plugins-stats-container {\n margin-top: 16px;\n gap: 16px;\n display: flex;\n flex-direction: row;\n width: 100%;\n}\n\n.vc-plugins-ui-elements {\n margin-top: 16px;\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { classes } from \"@utils/misc\";\nimport { SVGProps } from \"react\";\n\nexport function Heart(props: SVGProps) {\n return (\n \n \n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Button } from \"@components/Button\";\nimport { Heart } from \"@components/Heart\";\nimport { OpenExternalIcon } from \"@components/Icons\";\nimport { openInviteModal } from \"@utils/discord\";\nimport { ButtonProps } from \"@vencord/discord-types\";\nimport { showToast } from \"@webpack/common\";\n\nexport function DonateButton({\n equicord = false,\n className,\n ...props\n}: Partial & { equicord?: boolean; }) {\n const link = equicord ? \"https://github.com/sponsors/thororen1234\" : \"https://github.com/sponsors/Vendicated\";\n return (\n VencordNative.native.openExternal(link)}\n className={className || \"vc-donate-button\"}\n >\n \n Donate\n \n );\n}\n\nexport function InviteButton({\n className,\n ...props\n}: Partial) {\n return (\n {\n e.preventDefault();\n openInviteModal(\"wKgT9j2xfN\").catch(() =>\n showToast(\"Invalid or expired invite\"),\n );\n }}\n className={className || \"vc-donate-button\"}\n >\n Invite\n \n \n );\n}\n\nexport function TranslateButton({\n className,\n ...props\n}: Partial) {\n const link = \"https://weblate.equicord.org/projects/equicord/\";\n return (\n VencordNative.native.openExternal(link)}\n className={className || \"vc-translate-button\"}\n >\n Translate Here\n \n );\n}\n", ".vc-settings-quickActions-card {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 0.5em;\n padding: 0.5em;\n margin-bottom: 1em;\n}\n\n@media (width <=1040px) {\n .vc-settings-quickActions-card {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n.vc-settings-quickActions-pill {\n all: unset;\n background: var(--control-secondary-background-default);\n color: var(--control-secondary-text-default, var(--text-default));\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5em;\n padding: 8px 12px 8px 8px;\n border-radius: 8px;\n transition: 0.1s ease-out;\n box-sizing: border-box;\n line-height: 1;\n cursor: pointer;\n}\n\n.vc-settings-quickActions-pill:hover {\n background: var(--control-secondary-background-hover);\n transform: translateY(-1px);\n box-shadow: var(--elevation-high);\n}\n\n.vc-settings-quickActions-pill:focus-visible {\n outline: 2px solid var(--border-focus);\n outline-offset: 2px;\n}\n\n.vc-settings-quickActions-img {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n}", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./QuickAction.css\";\n\nimport { Card } from \"@components/Card\";\nimport { classNameFactory } from \"@utils/css\";\nimport type { ComponentType, PropsWithChildren, ReactNode } from \"react\";\n\nconst cl = classNameFactory(\"vc-settings-quickActions-\");\n\nexport interface QuickActionProps {\n Icon: ComponentType<{ className?: string; }>;\n text: ReactNode;\n action?: () => void;\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nexport function QuickAction(props: QuickActionProps) {\n const { Icon, action, text, disabled, style } = props;\n\n return (\n \n );\n}\n\nexport function QuickActionCard(props: PropsWithChildren<{ columns?: number; }>) {\n return (\n \n {props.children}\n \n );\n}\n", ".vc-invite-button,\n.vc-donate-button {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #ED87A9 25%, pink);\n}\n\n.vc-invite-button:hover,\n.vc-donate-button:hover {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #ED87A9 50%, pink);\n}\n\n.vc-invite-support-button,\n.vc-donate-support-button {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #c3a3ce 25%, rgb(240 178 240));\n}\n\n.vc-invite-support-button:hover,\n.vc-donate-support-button:hover {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #c3a3ce 50%, rgb(240 178 240));\n}\n\n.vc-translate-button {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #575757 50%, rgb(255 255 255));\n}\n\n.vc-translate-button:hover {\n overflow: visible !important;\n color: black;\n background-color: color-mix(in srgb, #575757 50%, rgb(201 201 201));\n}\n\n.vc-invite-link {\n width: 16px;\n height: 16px;\n margin-left: 8px;\n flex-shrink: 0;\n}\n\n.vc-contrib-button {\n overflow: visible !important;\n margin-top: 1em;\n color: black;\n background-color: color-mix(in srgb, #EDCC87 60%, lightyellow);\n}\n\n.vc-contrib-button:hover {\n color: black;\n background-color: color-mix(in srgb, #EDCC87 75%, lightyellow);\n}\n\n.vc-contrib-github {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n transition: transform 0.3s;\n}\n\n.vc-invite-button .vc-invite-link,\n.vc-contrib-button .vc-contrib-github,\n.vc-donate-button .vc-heart-icon,\n.vc-invite-support-button .vc-invite-link,\n.vc-donate-support-button .vc-heart-icon {\n transition: transform 0.3s;\n margin-right: 0.5em;\n}\n\n.vc-invite-button:hover .vc-invite-link,\n.vc-contrib-button:hover .vc-contrib-github,\n.vc-donate-button:hover .vc-heart-icon,\n.vc-invite-support-button:hover .vc-invite-link,\n.vc-donate-support-button:hover .vc-heart-icon {\n transform: scale(1.1);\n z-index: 10;\n position: relative;\n}\n\n.vc-special-card-special {\n padding: 1em 1.5em;\n margin-bottom: 1em;\n background-size: cover;\n background-position: center;\n}\n\n.vc-special-card-flex {\n display: flex;\n flex-direction: row;\n}\n\n.vc-special-card-flex-main {\n width: 100%;\n}\n\n.vc-special-title {\n color: black;\n}\n\n.vc-special-subtitle {\n color: black;\n font-size: 1.2em;\n font-weight: bold;\n margin-top: 0.5em;\n}\n\n.vc-special-text {\n color: black;\n font-size: 1em;\n margin-top: .75em;\n white-space: pre-line;\n}\n\n.vc-special-seperator {\n margin-top: .75em;\n border-top: 1px solid white;\n opacity: 0.4;\n}\n\n.vc-special-hyperlink {\n margin-top: 1em;\n cursor: pointer;\n}\n\n.vc-special-hyperlink-text {\n color: black;\n font-size: 1em;\n font-weight: bold;\n text-align: center;\n transition: text-decoration 0.5s;\n cursor: pointer;\n}\n\n.vc-special-hyperlink:hover .vc-special-hyperlink-text {\n text-decoration: underline;\n}\n\n.vc-special-image-container {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: 1em;\n flex-shrink: 0;\n width: 100px;\n height: 100px;\n border-radius: 50%;\n}\n\n.vc-special-image {\n width: 65%;\n}\n\n.vc-translate-modal-icon {\n margin: auto;\n width: 60px;\n}\n\n.vc-translate-modal-paragraph {\n padding: 12px;\n text-align: center;\n}", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./SpecialCard.css\";\n\nimport { Card } from \"@components/Card\";\nimport { Divider } from \"@components/Divider\";\nimport { Heading } from \"@components/Heading\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { classNameFactory } from \"@utils/css\";\nimport { Clickable } from \"@webpack/common\";\nimport type { PropsWithChildren } from \"react\";\n\nconst cl = classNameFactory(\"vc-special-\");\n\ninterface StyledCardProps {\n title: string;\n subtitle?: string;\n description: string;\n cardImage?: string;\n backgroundImage?: string;\n backgroundColor?: string;\n buttonTitle?: string;\n buttonOnClick?: () => void;\n}\n\nexport function SpecialCard({ title, subtitle, description, cardImage, backgroundImage, backgroundColor, buttonTitle, buttonOnClick: onClick, children }: PropsWithChildren) {\n const cardStyle: React.CSSProperties = {\n backgroundColor: backgroundColor || \"#9c85ef\",\n backgroundImage: `url(${backgroundImage || \"\"})`,\n };\n\n return (\n \n
\n
\n {title}\n {subtitle}\n {description}\n\n {children}\n
\n {cardImage && (\n
\n \n
\n )}\n
\n {buttonTitle && (\n <>\n \n \n \n {buttonTitle}\n \n \n \n )}\n
\n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nexport * from \"../Badge\";\nexport * from \"../Switch\";\nexport * from \"./AddonCard\";\nexport * from \"./DonateButton\";\nexport * from \"./QuickAction\";\nexport * from \"./SpecialCard\";\nexport * from \"./tabs\";\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./styles.css\";\n\nimport { BaseText } from \"@components/BaseText\";\nimport { Tooltip } from \"@webpack/common\";\n\nexport function StockPluginsCard({ totalStockPlugins, enabledStockPlugins }) {\n return (\n
\n
\n
\n Enabled Plugins\n {enabledStockPlugins}\n
\n
\n
\n Total Plugins\n {totalStockPlugins}\n
\n
\n
\n );\n}\n\nexport function UserPluginsCard({ totalUserPlugins, enabledUserPlugins }) {\n if (totalUserPlugins === 0)\n return (\n
\n
\n
\n Total Userplugins\n \n }\n >\n {tooltipProps => (\n \n \n {totalUserPlugins}\n \n \n )}\n \n
\n
\n
\n );\n else\n return (\n
\n
\n
\n Enabled Userplugins\n {enabledUserPlugins}\n
\n
\n
\n Total Userplugins\n {totalUserPlugins}\n
\n
\n
\n );\n}\n", ".vc-plugin-ui-elements-button {\n display: flex;\n align-items: center;\n color: var(--interactive-icon-default);\n margin-top: 0.5em;\n cursor: pointer;\n\n &:hover {\n background-color: var(--background-mod-subtle);\n color: var(--interactive-icon-hover);\n }\n}\n\n.vc-plugin-ui-elements-button-arrow {\n margin-left: auto;\n width: 24px;\n height: 24px;\n}\n\n.vc-plugin-ui-elements-modal-content {\n display: flex;\n flex-direction: column;\n gap: 2em;\n}\n\n.vc-plugin-ui-elements-switches {\n display: flex;\n flex-direction: column;\n gap: 1em;\n}\n\n.vc-plugin-ui-elements-switches-row {\n display: flex;\n gap: 1em;\n width: 100%;\n align-items: center;\n\n :last-child {\n margin-left: auto;\n }\n}\n\n.vc-plugin-ui-elements-description {\n color: var(--text-subtle);\n}", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./UIElements.css\";\n\nimport { ChatBarButtonMap } from \"@api/ChatButtons\";\nimport { MessagePopoverButtonMap } from \"@api/MessagePopover\";\nimport { SettingsPluginUiElements, useSettings } from \"@api/Settings\";\nimport { BaseText } from \"@components/BaseText\";\nimport { Card } from \"@components/Card\";\nimport { PlaceholderIcon } from \"@components/Icons\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { Switch } from \"@components/Switch\";\nimport { classNameFactory } from \"@utils/css\";\nimport { Margins } from \"@utils/margins\";\nimport { classes } from \"@utils/misc\";\nimport { IconComponent } from \"@utils/types\";\nimport { RenderModalProps } from \"@vencord/discord-types\";\nimport { Clickable, Modal, openModal } from \"@webpack/common\";\n\nconst cl = classNameFactory(\"vc-plugin-ui-elements-\");\n\nexport function UIElementsButton() {\n return (\n openModal(modalProps => )}>\n \n
\n \n Manage plugin UI elements\n \n \n Allows you to hide buttons you don't like\n \n
\n \n \n \n
\n
\n );\n}\n\nfunction Section(props: {\n title: string;\n description: string;\n settings: SettingsPluginUiElements;\n buttonMap: Map;\n}) {\n const { buttonMap, description, title, settings } = props;\n\n const switches = Array.from(buttonMap, ([name, { icon }]) => {\n const Icon = icon ?? PlaceholderIcon;\n return (\n \n \n {name}\n {\n settings[name] ??= {} as any;\n settings[name].enabled = v;\n }}\n />\n \n );\n });\n\n return (\n
\n {title}\n {description}\n\n
\n {switches.length === 0 && (\n \n Buttons of enabled plugins will appear here.\n \n )}\n {switches}\n
\n
\n );\n}\n\nfunction UIElementsModal(props: RenderModalProps) {\n const { uiElements } = useSettings([\"uiElements.*\"]);\n\n return (\n \n
\n \n \n
\n
\n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./styles.css\";\n\nimport * as DataStore from \"@api/DataStore\";\nimport { isPluginEnabled, stopPlugin } from \"@api/PluginManager\";\nimport { useSettings } from \"@api/Settings\";\nimport { Button } from \"@components/Button\";\nimport { Card } from \"@components/Card\";\nimport { Divider } from \"@components/Divider\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { HeadingTertiary } from \"@components/Heading\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { SettingsTab } from \"@components/settings\";\nimport { debounce } from \"@shared/debounce\";\nimport { ChangeList } from \"@utils/ChangeList\";\nimport { classNameFactory } from \"@utils/css\";\nimport { isTruthy } from \"@utils/guards\";\nimport { Logger } from \"@utils/Logger\";\nimport { Margins } from \"@utils/margins\";\nimport { classes } from \"@utils/misc\";\nimport { PluginTarget } from \"@utils/pluginTargets\";\nimport { useAwaiter, useCleanupEffect, useIntersection } from \"@utils/react\";\nimport { PluginTag, PluginTags } from \"@utils/types\";\nimport { Alerts, ConfirmModal, lodash, openModal, Parser, React, SearchableSelect, Select, TextInput, Toasts, Tooltip, useCallback, useMemo, useRef, useState } from \"@webpack/common\";\nimport { JSX } from \"react\";\n\nimport Plugins, { ExcludedPlugins, PluginMeta } from \"~plugins\";\n\nimport { PluginCard } from \"./PluginCard\";\nimport { openWarningModal } from \"./PluginModal\";\nimport { StockPluginsCard, UserPluginsCard } from \"./PluginStatCards\";\nimport { UIElementsButton } from \"./UIElements\";\n\nexport const cl = classNameFactory(\"vc-plugins-\");\nexport const logger = new Logger(\"PluginSettings\", \"#a6d189\");\n\nfunction showErrorToast(message: string) {\n Toasts.show({\n message,\n type: Toasts.Type.FAILURE,\n id: Toasts.genId(),\n options: {\n position: Toasts.Position.BOTTOM\n }\n });\n}\n\nfunction ReloadRequiredCard({ required, enabledPlugins, openWarningModal, resetCheckAndDo }) {\n return (\n \n {required ? (\n <>\n Restart required!\n \n Restart now to apply new plugins and their settings\n \n \n \n ) : (\n <>\n Plugin Management\n Press the cog wheel or info icon to get more info on a plugin\n Plugins with a cog wheel have settings you can modify!\n \n )}\n {enabledPlugins.length > 0 && !required && (\n {\n return openWarningModal(null, undefined, false, enabledPlugins.length, resetCheckAndDo);\n }}\n >\n Disable All Plugins\n \n )}\n \n );\n}\n\nconst enum SearchStatus {\n ALL,\n FAVORITES,\n ENABLED,\n DISABLED,\n EQUICORD,\n VENCORD,\n NEW,\n USER_PLUGINS,\n API_PLUGINS\n}\n\nexport const ExcludedReasons: Record = {\n desktop: \"Discord Desktop app or Vesktop/Equibop\",\n discordDesktop: \"Discord Desktop app\",\n vesktop: \"Vesktop/Equibop apps\",\n equibop: \"Vesktop/Equibop apps\",\n web: \"Vesktop/Equibop apps & Discord web\",\n dev: \"Developer version of Equicord\",\n browser: \"Web Browser version of Equicord\"\n};\n\nfunction ExcludedPluginsList({ search }: { search: string; }) {\n const matchingExcludedPlugins = search\n ? Object.entries(ExcludedPlugins)\n .filter(([name]) => name.toLowerCase().includes(search))\n : [];\n\n return (\n \n {matchingExcludedPlugins.length\n ? <>\n Are you looking for:\n
    \n {matchingExcludedPlugins.map(([name, reason]) => (\n
  • \n {name}: Only available on the {ExcludedReasons[reason]}\n
  • \n ))}\n
\n \n : \"No plugins meet the search criteria.\"\n }\n
\n );\n}\n\nexport default function PluginSettings() {\n const settings = useSettings();\n const changeRef = useRef>(null);\n const changes = changeRef.current ??= new ChangeList();\n\n useCleanupEffect(() => {\n return () => {\n if (!changes.hasChanges) return;\n\n const allChanges = [...changes.getChanges()];\n const pluginNames = [...new Set(allChanges.map(s => s.split(\":\")[0]))];\n const maxDisplay = 15;\n const displayed = pluginNames.slice(0, maxDisplay);\n const remainingCount = pluginNames.length - displayed.length;\n\n openModal(props => (\n location.reload()}\n >\n <>\n

The following plugins require a restart:

\n
\n {displayed.map((s, i) => (\n \n {i > 0 && \", \"}\n {Parser.parse(\"`\" + s + \"`\")}\n \n ))}\n {remainingCount > 0 && and {remainingCount} more}\n
\n \n \n ));\n };\n }, []);\n\n const depMap = useMemo(() => {\n const o = {} as Record;\n for (const plugin in Plugins) {\n const deps = Plugins[plugin].dependencies;\n if (deps) {\n for (const dep of deps) {\n o[dep] ??= [];\n o[dep].push(plugin);\n }\n }\n }\n return o;\n }, []);\n\n const sortedPlugins = useMemo(() =>\n Object.values(Plugins).sort((a, b) => a.name.localeCompare(b.name)),\n []\n )\n .toSorted((a, b) => Number(settings.plugins[b.name]?.isFavorite ?? false) - Number(settings.plugins[a.name]?.isFavorite ?? false));\n\n const hasUserPlugins = useMemo(() => !IS_STANDALONE && Object.values(PluginMeta).some(m => m.userPlugin), []);\n\n const [searchValue, setSearchValue] = useState({ value: \"\", tags: [] as PluginTag[], status: SearchStatus.ALL });\n\n const search = searchValue.value.toLowerCase();\n const onSearch = (query: string) => setSearchValue(prev => ({ ...prev, value: query }));\n\n const pluginFilter = useCallback((plugin: typeof Plugins[keyof typeof Plugins], newPluginsSet: Set | null) => {\n const { status, tags } = searchValue;\n\n switch (status) {\n case SearchStatus.FAVORITES:\n if (!settings.plugins[plugin.name]?.isFavorite) return false;\n break;\n case SearchStatus.DISABLED:\n if (isPluginEnabled(plugin.name)) return false;\n break;\n case SearchStatus.ENABLED:\n if (!isPluginEnabled(plugin.name)) return false;\n break;\n case SearchStatus.EQUICORD:\n if (!PluginMeta[plugin.name].folderName.startsWith(\"src/equicordplugins/\")) return false;\n break;\n case SearchStatus.VENCORD:\n if (!PluginMeta[plugin.name].folderName.startsWith(\"src/plugins/\")) return false;\n break;\n case SearchStatus.NEW:\n if (!newPluginsSet?.has(plugin.name)) return false;\n break;\n case SearchStatus.USER_PLUGINS:\n if (!PluginMeta[plugin.name]?.userPlugin) return false;\n break;\n case SearchStatus.API_PLUGINS:\n if (!plugin.name.endsWith(\"API\")) return false;\n break;\n }\n\n if (tags.length && tags.some(t => !plugin.tags?.includes(t))) return false;\n\n if (!search.length) return true;\n\n return (\n plugin.name.toLowerCase().includes(search.replace(/\\s+/g, \"\")) ||\n plugin.name.match(/[A-Z]/g)?.join(\"\").toLowerCase().includes(search) || // acronyms like BF for BetterFolders\n plugin.description.toLowerCase().includes(search) ||\n plugin.searchTerms?.some(t => t.toLowerCase().includes(search))\n );\n }, [searchValue, search]);\n\n const [newPluginsSet] = useAwaiter(() => DataStore.get(\"Vencord_existingPlugins\").then((cachedPlugins: Record | undefined) => {\n const now = Date.now() / 1000;\n const existingTimestamps: Record = {};\n const sortedPluginNames = Object.values(sortedPlugins).map(plugin => plugin.name);\n\n const newPlugins: string[] = [];\n for (const { name: p } of sortedPlugins) {\n const time = existingTimestamps[p] = cachedPlugins?.[p] ?? now;\n if ((time + 60 * 60 * 24 * 2) > now) {\n newPlugins.push(p);\n }\n }\n DataStore.set(\"Vencord_existingPlugins\", existingTimestamps);\n\n return lodash.isEqual(newPlugins, sortedPluginNames) ? null : new Set(newPlugins);\n }));\n\n const handleRestartNeeded = useCallback((name: string, key: string) => changes.handleChange(`${name}:${key}`), [changes]);\n\n const { plugins, requiredPlugins } = useMemo(() => {\n const plugins = [] as JSX.Element[];\n const requiredPlugins = [] as JSX.Element[];\n\n const showApi = searchValue.status === SearchStatus.API_PLUGINS;\n for (const p of sortedPlugins) {\n if (p.hidden || (!p.settings?.def && p.name.endsWith(\"API\") && !showApi))\n continue;\n\n if (!pluginFilter(p, newPluginsSet)) continue;\n\n const isRequired = p.required || p.isDependency || depMap[p.name]?.some(d => settings.plugins[d].enabled);\n\n if (isRequired) {\n const tooltipText = p.required || !depMap[p.name]\n ? \"This plugin is required for Equicord to function.\"\n : settings.plugins[d].enabled)} />;\n\n requiredPlugins.push(\n \n {({ onMouseLeave, onMouseEnter }) => (\n \n )}\n \n );\n } else {\n plugins.push(\n \n );\n }\n }\n return { plugins, requiredPlugins };\n }, [sortedPlugins, searchValue, newPluginsSet, depMap, settings.plugins, pluginFilter, handleRestartNeeded]);\n\n function resetCheckAndDo() {\n let restartNeeded = false;\n\n for (const plugin of enabledPlugins) {\n const pluginSettings = settings.plugins[plugin];\n\n if (Plugins[plugin].patches?.length) {\n pluginSettings.enabled = false;\n changes.handleChange(plugin);\n restartNeeded = true;\n continue;\n }\n\n const result = stopPlugin(Plugins[plugin]);\n\n if (!result) {\n logger.error(`Error while stopping plugin ${plugin}`);\n showErrorToast(`Error while stopping plugin ${plugin}`);\n continue;\n }\n\n pluginSettings.enabled = false;\n }\n\n if (restartNeeded) {\n Alerts.show({\n title: \"Restart Required\",\n body: (\n <>\n

Some plugins require a restart to fully disable.

\n

Would you like to restart now?

\n \n ),\n confirmText: \"Restart Now\",\n cancelText: \"Later\",\n onConfirm: () => location.reload()\n });\n }\n }\n\n // Code directly taken from supportHelper.tsx\n const { totalStockPlugins, totalUserPlugins, enabledStockPlugins, enabledUserPlugins, enabledPlugins } = useMemo(() => {\n const isApiPlugin = (plugin: string) => plugin.endsWith(\"API\") || Plugins[plugin].required;\n\n const totalPlugins = Object.keys(Plugins).filter(p => !isApiPlugin(p));\n const enabledPlugins = Object.keys(Plugins).filter(p => isPluginEnabled(p) && !isApiPlugin(p));\n\n const totalStockPlugins = totalPlugins.filter(p => !PluginMeta[p].userPlugin && !Plugins[p].hidden).length;\n const totalUserPlugins = totalPlugins.filter(p => PluginMeta[p].userPlugin).length;\n const enabledStockPlugins = enabledPlugins.filter(p => !PluginMeta[p].userPlugin).length;\n const enabledUserPlugins = enabledPlugins.filter(p => PluginMeta[p].userPlugin).length;\n return { totalStockPlugins, totalUserPlugins, enabledStockPlugins, enabledUserPlugins, enabledPlugins };\n }, [settings.plugins]);\n const pluginsToLoad = Math.min(36, plugins.length);\n const [visibleCount, setVisibleCount] = React.useState(pluginsToLoad);\n const loadMore = React.useCallback(() => {\n setVisibleCount(v => Math.min(v + pluginsToLoad, plugins.length));\n }, [plugins.length]);\n\n const dLoadMore = useMemo(() => debounce(loadMore, 100), [loadMore]);\n\n const [sentinelRef, isSentinelVisible] = useIntersection();\n React.useEffect(() => {\n if (isSentinelVisible && visibleCount < plugins.length) {\n dLoadMore();\n }\n }, [isSentinelVisible, visibleCount, plugins.length, dLoadMore]);\n\n const visiblePlugins = plugins.slice(0, visibleCount);\n\n return (\n \n \n\n
\n \n \n
\n\n
\n \n
\n\n \n Filters\n \n\n \n \n \n\n \n
\n setSearchValue(prev => ({ ...prev, status }))}\n isSelected={v => v === searchValue.status}\n closeOnSelect={true}\n placeholder=\"Filter by Type\"\n />\n ({ label: tag, value: tag }))}\n value={searchValue.tags}\n onChange={tags => setSearchValue(prev => ({ ...prev, tags }))}\n closeOnSelect={false}\n placeholder=\"Filter by Tags\"\n multi\n />\n
\n
\n\n Plugins\n\n {plugins.length || requiredPlugins.length\n ? (\n <>\n
\n {visiblePlugins.length\n ? visiblePlugins\n : No plugins meet the search criteria.\n }\n
\n {visibleCount < plugins.length && (\n
\n )}\n \n )\n : \n }\n\n \n\n \n Required Plugins\n \n\n
\n {requiredPlugins.length\n ? requiredPlugins\n : No plugins meet the search criteria.\n }\n
\n \n );\n}\n\nexport function PluginDependencyList({ deps }: { deps: string[]; }) {\n return (\n <>\n This plugin is required by:\n {deps.map((dep: string) => {dep})}\n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n/**\n * Prompts the user to save a file to their system\n * @param file The file to save\n */\nexport function saveFile(file: File) {\n const a = document.createElement(\"a\");\n a.href = URL.createObjectURL(file);\n a.download = file.name;\n\n document.body.appendChild(a);\n a.click();\n setImmediate(() => {\n URL.revokeObjectURL(a.href);\n document.body.removeChild(a);\n });\n}\n\n/**\n * Prompts the user to choose a file from their system\n * @param mimeTypes A comma separated list of mime types to accept, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept#unique_file_type_specifiers\n * @returns A promise that resolves to the chosen file or null if the user cancels\n */\nexport function chooseFile(mimeTypes: string) {\n return new Promise(resolve => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.style.display = \"none\";\n input.accept = mimeTypes;\n input.onchange = async () => {\n resolve(input.files?.[0] ?? null);\n };\n\n document.body.appendChild(input);\n input.click();\n setImmediate(() => document.body.removeChild(input));\n });\n}\n\nexport function getStylusWebStoreUrl() {\n const isChromium = (navigator as any).userAgentData?.brands?.some(b => b.brand === \"Chromium\");\n\n return isChromium\n ? \"https://chromewebstore.google.com/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne\"\n : \"https://addons.mozilla.org/firefox/addon/styl-us/\";\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { PlainSettings } from \"@api/Settings\";\nimport { Logger } from \"@utils/Logger\";\nimport { chooseFile, saveFile } from \"@utils/web\";\nimport { moment, Toasts } from \"@webpack/common\";\n\nimport { DataStore } from \"..\";\n\ntype BackupType = \"all\" | \"plugins\" | \"css\" | \"datastore\";\n\nconst toast = (type: string, message: string) =>\n Toasts.show({\n type,\n message,\n id: Toasts.genId()\n });\n\nconst toastSuccess = () =>\n toast(Toasts.Type.SUCCESS, \"Settings successfully imported. Restart to apply changes!\");\n\nconst toastFailure = (err: any) =>\n toast(Toasts.Type.FAILURE, `Failed to import settings: ${String(err)}`);\n\nconst logger = new Logger(\"SettingsSync:Offline\", \"#39b7e0\");\n\nfunction deepMerge(target: T, source: T): T {\n for (const key in source) {\n const sourceVal = source[key];\n\n if (sourceVal !== null && typeof sourceVal === \"object\" && !Array.isArray(sourceVal)) {\n if (target[key] === null || target[key] === undefined || typeof target[key] !== \"object\" || Array.isArray(target[key])) {\n target[key] = {} as any;\n }\n deepMerge(target[key] as object, sourceVal as object);\n } else {\n target[key] = sourceVal;\n }\n }\n return target;\n}\n\nfunction isSafeObject(obj: any) {\n if (obj == null || typeof obj !== \"object\") return true;\n\n for (const key in obj) {\n if ([\"__proto__\", \"constructor\", \"prototype\"].includes(key)) {\n return false;\n }\n if (!isSafeObject(obj[key])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport async function importSettings(data: string, type: BackupType = \"all\", cloud = false) {\n try {\n var parsed = JSON.parse(data);\n } catch (err) {\n console.log(data);\n throw new Error(\"Failed to parse JSON: \" + String(err));\n }\n\n if (!isSafeObject(parsed))\n throw new Error(\"Unsafe Settings\");\n\n switch (type) {\n case \"all\": {\n if (!cloud && (!(\"settings\" in parsed)))\n throw new Error(\"Invalid Settings. Plugin settings is required for this import try a different one.\");\n\n if (parsed.settings) {\n deepMerge(PlainSettings, parsed.settings);\n await VencordNative.settings.set(PlainSettings);\n }\n if (parsed.quickCss) await VencordNative.quickCss.set(parsed.quickCss);\n if (parsed.dataStore) await DataStore.setMany(parsed.dataStore);\n break;\n }\n case \"plugins\": {\n if (!parsed.settings) throw new Error(\"Plugin settings missing\");\n\n deepMerge(PlainSettings, parsed.settings);\n await VencordNative.settings.set(PlainSettings);\n break;\n }\n case \"css\": {\n if (!parsed.quickCss) throw new Error(\"CSS missing\");\n\n await VencordNative.quickCss.set(parsed.quickCss);\n break;\n }\n case \"datastore\": {\n if (!parsed.dataStore) throw new Error(\"DataStore data missing\");\n\n await DataStore.setMany(parsed.dataStore);\n break;\n }\n }\n}\n\nexport async function exportSettings({ syncDataStore = true, type = \"all\", minify }: { syncDataStore?: boolean; type?: BackupType; minify?: boolean; }) {\n const settings = VencordNative.settings.get();\n const quickCss = await VencordNative.quickCss.get();\n let dataStore: any;\n\n if (syncDataStore) {\n try {\n dataStore = await DataStore.entries();\n } catch (err) {\n logger.error(\"Failed to read DataStore entries:\", err);\n\n if (type === \"all\") {\n logger.warn(\"Skipping DataStore in backup due to size. Export DataStore separately if needed.\");\n toast(Toasts.Type.MESSAGE, \"DataStore too large - exported without it. Use 'Export DataStore' separately if needed.\");\n dataStore = undefined;\n } else if (type === \"datastore\") {\n throw new Error(\"DataStore is too large to export. Please clear some plugin data and try again.\");\n }\n }\n }\n\n switch (type) {\n case \"all\": {\n return JSON.stringify({ settings, quickCss, ...(dataStore && { dataStore }) }, null, minify ? undefined : 4);\n }\n case \"plugins\": {\n return JSON.stringify({ settings }, null, minify ? undefined : 4);\n }\n case \"css\": {\n return JSON.stringify({ quickCss }, null, minify ? undefined : 4);\n }\n case \"datastore\": {\n return JSON.stringify({ dataStore }, null, minify ? undefined : 4);\n }\n }\n}\n\nexport async function downloadSettingsBackup(type: BackupType = \"all\", { minify }: { minify?: boolean; } = {}) {\n try {\n const syncDataStore = type === \"all\" || type === \"datastore\";\n const backup = await exportSettings({ minify, type, syncDataStore });\n const filename = `equicord-${type}-backup-${moment().format(\"YYYY-MM-DD\")}.json`;\n const data = new TextEncoder().encode(backup);\n\n if (IS_DISCORD_DESKTOP) {\n DiscordNative.fileManager.saveWithDialog(data, filename);\n } else {\n saveFile(new File([data], filename, { type: \"application/json\" }));\n }\n } catch (err) {\n logger.error(\"Failed to export settings:\", err);\n toast(Toasts.Type.FAILURE, \"Failed to export settings, check console\");\n throw err;\n }\n}\n\nexport async function uploadSettingsBackup(type: BackupType = \"all\", showToast = true): Promise {\n if (IS_DISCORD_DESKTOP) {\n const [file] = await DiscordNative.fileManager.openFiles({\n filters: [\n { name: \"Equicord Settings Backup\", extensions: [\"json\"] },\n { name: \"all\", extensions: [\"*\"] }\n ]\n });\n\n if (file) {\n try {\n await importSettings(new TextDecoder().decode(file.data), type);\n if (showToast) toastSuccess();\n } catch (err) {\n logger.error(err);\n if (showToast) toastFailure(err);\n }\n }\n } else {\n const file = await chooseFile(\"application/json\");\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = async () => {\n try {\n await importSettings(reader.result as string, type);\n if (showToast) toastSuccess();\n } catch (err) {\n logger.error(err);\n if (showToast) toastFailure(err);\n }\n };\n reader.readAsText(file);\n }\n}\n", ".vc-notice-container {\n border-radius: var(--radius-sm, 8px);\n box-sizing: border-box;\n display: grid;\n font-weight: 500;\n grid-template-rows: 1fr;\n padding: 8px;\n width: 100%;\n transition-duration: var(--expand-structural-duration, 0.2s);\n transition-property: grid-template-rows, padding-bottom, padding-top, border-width;\n transition-timing-function: var(--expand-easing-function, ease);\n}\n\n.vc-notice-hidden {\n border-width: 0;\n grid-template-rows: 0fr;\n padding-bottom: 0;\n padding-top: 0;\n transition-delay: var(--collapse-fade-duration, 0.1s);\n transition-duration: var(--collapse-structural-duration, 0.2s);\n transition-timing-function: var(--collapse-easing-function, ease);\n}\n\n.vc-notice-inner {\n display: flex;\n min-height: 0;\n opacity: 1;\n overflow: hidden;\n transition: opacity var(--expand-fade-duration, 0.1s) var(--expand-easing-function, ease) var(--expand-structural-duration, 0.2s);\n}\n\n.vc-notice-hidden .vc-notice-inner {\n opacity: 0;\n transition-delay: 0s;\n transition-duration: var(--collapse-fade-duration, 0.1s);\n transition-timing-function: var(--collapse-easing-function, ease);\n}\n\n.vc-notice-icon-wrapper {\n display: flex;\n}\n\n.vc-notice-icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n}\n\n.vc-notice-text {\n align-self: center;\n flex: 1 1 0%;\n margin-left: var(--space-8, 8px);\n font-family: var(--font-primary);\n font-size: 14px;\n font-weight: 500;\n line-height: 1.2857;\n color: var(--text-default);\n}\n\n.vc-notice-text p {\n margin: 0;\n}\n\n.vc-notice-text p~p {\n margin-top: 8px;\n}\n\n.vc-notice-action {\n margin: auto 0 auto 16px;\n}\n\n/* Info variant */\n.vc-notice-info {\n background: var(--background-feedback-info);\n border: 1px solid var(--icon-feedback-info);\n color: var(--text-feedback-info);\n}\n\n.vc-notice-info .vc-notice-icon {\n color: var(--icon-feedback-info);\n}\n\n/* Warning variant */\n.vc-notice-warning {\n background: var(--background-feedback-warning);\n border: 1px solid var(--icon-feedback-warning);\n color: var(--text-feedback-warning);\n}\n\n.vc-notice-warning .vc-notice-icon {\n color: var(--icon-feedback-warning);\n}\n\n/* Danger variant */\n.vc-notice-danger {\n background: var(--background-feedback-critical);\n border: 1px solid var(--icon-feedback-critical);\n color: var(--text-feedback-critical);\n}\n\n.vc-notice-danger .vc-notice-icon {\n color: var(--icon-feedback-critical);\n}\n\n/* Positive variant */\n.vc-notice-positive {\n background: var(--background-feedback-positive);\n border: 1px solid var(--icon-feedback-positive);\n color: var(--text-feedback-positive);\n}\n\n.vc-notice-positive .vc-notice-icon {\n color: var(--icon-feedback-positive);\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./Notice.css\";\n\nimport { classNameFactory } from \"@utils/css\";\nimport { classes } from \"@utils/misc\";\nimport type { ComponentPropsWithoutRef, ComponentType, ReactNode, SVGProps } from \"react\";\n\nconst cl = classNameFactory(\"vc-notice-\");\n\nexport const NoticeVariants = [\"info\", \"warning\", \"danger\", \"positive\"] as const;\n\nexport type NoticeVariant = typeof NoticeVariants[number];\n\nexport type NoticeProps = Omit, \"children\"> & {\n children: ReactNode;\n variant?: NoticeVariant;\n icon?: ComponentType>;\n action?: ReactNode;\n hidden?: boolean;\n};\n\nfunction InfoIcon(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nfunction WarningIcon(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nfunction DangerIcon(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nfunction PositiveIcon(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nconst DefaultIcons: Record>> = {\n info: InfoIcon,\n warning: WarningIcon,\n danger: DangerIcon,\n positive: PositiveIcon\n};\n\nexport function Notice({ children, variant = \"info\", icon, action, hidden = false, className, ...restProps }: NoticeProps) {\n const Icon = icon ?? DefaultIcons[variant];\n\n return (\n \n );\n}\n\nNotice.Info = (props: Omit) => ;\nNotice.Warning = (props: Omit) => ;\nNotice.Danger = (props: Omit) => ;\nNotice.Positive = (props: Omit) => ;\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { downloadSettingsBackup, uploadSettingsBackup } from \"@api/SettingsSync/offline\";\nimport { Button } from \"@components/Button\";\nimport { Divider } from \"@components/Divider\";\nimport { Flex } from \"@components/Flex\";\nimport { Heading } from \"@components/Heading\";\nimport { Notice } from \"@components/Notice\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { SettingsTab, wrapTab } from \"@components/settings/tabs/BaseTab\";\nimport { Margins } from \"@utils/margins\";\n\nfunction BackupAndRestoreTab() {\n return (\n \n Backup & Restore\n \n Import and export your Equicord settings as a JSON file. This allows you to easily transfer your settings to another device, or recover them after reinstalling Equicord or Discord.\n \n\n \n Importing a settings file will overwrite your current settings. Make sure to export a backup first if you want to keep your current configuration.\n \n\n What's included in a backup\n \n \u2022 Custom QuickCSS
\n \u2022 Theme Links
\n \u2022 Plugin Settings
\n \u2022 DataStore Data\n
\n\n \n\n Import Settings\n \n Select a previously exported settings file to restore your configuration. This will replace all your current settings with the ones from the backup.\n \n\n \n uploadSettingsBackup(\"all\")}\n size=\"small\"\n variant=\"secondary\"\n >\n Import All Settings\n \n uploadSettingsBackup(\"plugins\")}\n size=\"small\"\n >\n Import Plugins\n \n uploadSettingsBackup(\"css\")}\n size=\"small\"\n >\n Import QuickCSS\n \n uploadSettingsBackup(\"datastore\")}\n size=\"small\"\n >\n Import DataStore\n \n \n\n \n\n Export Settings\n \n Download your current settings as a backup file. You can export everything at once, or choose to export only specific parts of your configuration.\n \n\n \n downloadSettingsBackup(\"all\")}\n size=\"small\"\n variant=\"secondary\"\n >\n Export All Settings\n \n downloadSettingsBackup(\"plugins\")}\n size=\"small\"\n >\n Export Plugins\n \n downloadSettingsBackup(\"css\")}\n size=\"small\"\n >\n Export QuickCSS\n \n downloadSettingsBackup(\"datastore\")}\n size=\"small\"\n >\n Export DataStore\n \n \n
\n );\n}\n\nexport default wrapTab(BackupAndRestoreTab, \"Backup & Restore\");\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport * as DataStore from \"@api/DataStore\";\nimport { showNotification } from \"@api/Notifications\";\nimport { Settings } from \"@api/Settings\";\nimport { Logger } from \"@utils/Logger\";\nimport { OAuth2AuthorizeModal, openModal, UserStore } from \"@webpack/common\";\n\nexport const logger = new Logger(\"SettingsSync:CloudSetup\", \"#39b7e0\");\n\nexport const getCloudUrl = () => new URL(Settings.cloud.url);\nconst getCloudUrlOrigin = () => getCloudUrl().origin;\n\nconst getUserId = () => {\n const id = UserStore.getCurrentUser()?.id;\n if (!id) throw new Error(\"User not yet logged in\");\n return id;\n};\n\nexport async function getAuthorization() {\n const secrets = await DataStore.get>(\"Vencord_cloudSecret\") ?? {};\n\n const origin = getCloudUrlOrigin();\n\n // we need to migrate from the old format here\n if (secrets[origin]) {\n await DataStore.update>(\"Vencord_cloudSecret\", secrets => {\n secrets ??= {};\n // use the current user ID\n secrets[`${origin}:${getUserId()}`] = secrets[origin];\n delete secrets[origin];\n return secrets;\n });\n\n // since this doesn't update the original object, we'll early return the existing authorization\n return secrets[origin];\n }\n\n return secrets[`${origin}:${getUserId()}`];\n}\n\nasync function setAuthorization(secret: string) {\n await DataStore.update>(\"Vencord_cloudSecret\", secrets => {\n secrets ??= {};\n secrets[`${getCloudUrlOrigin()}:${getUserId()}`] = secret;\n return secrets;\n });\n}\n\nexport async function deauthorizeCloud() {\n await DataStore.update>(\"Vencord_cloudSecret\", secrets => {\n secrets ??= {};\n delete secrets[`${getCloudUrlOrigin()}:${getUserId()}`];\n return secrets;\n });\n}\n\nexport async function authorizeCloud() {\n if (await getAuthorization() !== undefined) {\n Settings.cloud.authenticated = true;\n return;\n }\n\n try {\n const oauthConfiguration = await fetch(new URL(\"/v1/oauth/settings\", getCloudUrl()));\n var { clientId, redirectUri } = await oauthConfiguration.json();\n } catch {\n showNotification({\n title: \"Cloud Integration\",\n body: \"Setup failed (couldn't retrieve OAuth configuration).\"\n });\n Settings.cloud.authenticated = false;\n return;\n }\n\n openModal((props: any) => {\n if (!location) {\n Settings.cloud.authenticated = false;\n return;\n }\n\n try {\n const res = await fetch(location, {\n headers: { Accept: \"application/json\" }\n });\n const data = await res.json();\n if (data.secret) {\n logger.info(\"Authorized with cloud\");\n await setAuthorization(data.secret);\n showNotification({\n title: \"Cloud Integration\",\n body: \"Cloud integrations enabled!\"\n });\n Settings.cloud.authenticated = true;\n } else {\n logger.error(\"OAuth callback returned no secret\", data);\n showNotification({\n title: \"Cloud Integration\",\n body: data.error\n ? `Setup failed: ${data.error}`\n : \"Setup failed (no secret returned).\"\n });\n Settings.cloud.authenticated = false;\n }\n } catch (e: any) {\n logger.error(\"Failed to authorize\", e);\n showNotification({\n title: \"Cloud Integration\",\n body: `Setup failed (${e.toString()}).`\n });\n Settings.cloud.authenticated = false;\n }\n }\n }\n />);\n}\n\nexport async function getCloudAuth() {\n const secret = await getAuthorization();\n\n return window.btoa(`${secret}:${getUserId()}`);\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nexport const { localStorage } = window;\n", "// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n , // determined by compression function\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data[0]) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush(ev.data[1]);\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n // can fail for cross-realm Uint8Array, but ok - only a small performance penalty\n w.postMessage([d, t = f], d.buffer instanceof ArrayBuffer ? [d.buffer] : []);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function (sync) { w.postMessage([0, sync]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read 8 bytes\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n if (final) {\n // cleanup unneeded buffers/state to reduce memory usage\n this.s = this.o = {};\n this.b = et;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible. A separate DEFLATE stream may be concatenated\n * with the current output after a sync flush.\n */\n Deflate.prototype.flush = function (sync) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n // could technically skip writing the type-0 block for (this.s.r & 7) == 0,\n // but the deterministic trailer (00 00 FF FF) is useful in some situations\n if (sync) {\n var c = new u8(6);\n c[0] = this.s.r >> 3;\n // write empty, non-final type-0 block\n var ep = wfblk(c, this.s.r, et);\n this.s.r = 0;\n this.ondata(c.subarray(0, ep >> 3), false);\n }\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible.\n */\n Gzip.prototype.flush = function (sync) {\n Deflate.prototype.flush.call(this, sync);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, 0);\n // process concatenated GZIP\n if (this.s.f && !this.s.l) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n else if (final) {\n Inflate.prototype.c.call(this, final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible.\n */\n Zlib.prototype.flush = function (sync) {\n Deflate.prototype.flush.call(this, sync);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (ArrayBuffer.isView(val))\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), efl = b2(d, b + 30), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n var _a = z64hs(d, es, efl, z, b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)), sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + efl + b2(d, b + 32), off];\n};\n// read zip64 header sizes\nvar z64hs = function (d, b, l, z, sc, su, off) {\n var nsc = sc == 4294967295, nsu = su == 4294967295, noff = off == 4294967295, e = b + l;\n var nf = nsc + nsu + noff;\n if (z && nf) {\n for (; b + 4 < e; b += 4 + b2(d, b + 2)) {\n if (b2(d, b) == 1) {\n return [\n nsc ? b8(d, b + 4 + 8 * nsu) : sc,\n nsu ? b8(d, b + 4) : su,\n noff ? b8(d, b + 4 + 8 * (nsu + nsc)) : off,\n 1\n ];\n }\n }\n // z == 2 for unknown whether or not zip64\n if (z < 2)\n err(13);\n }\n return [sc, su, off, 0];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n // we shouldn't really do this cast, but properly handling ArrayBufferLike\n // makes the API unergonomic with Buffer\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (chunk, final) {\n // same as ZipPassThrough: cast to retain Buffer ergonomics\n this.ondata(null, chunk, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (chunk, final) {\n try {\n this.i.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (chunk, final) {\n if (this.i.terminate)\n chunk = slc(chunk, 0);\n this.i.push(chunk, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var lsc = b4(buf, i + 18), lsu = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n var _a = z64hs(buf, i, es, 2, lsc, lsu, 0), sc_1 = _a[0], su_1 = _a[1], z64 = _a[3];\n if (dd)\n sc_1 = -1 - z64;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = b4(data, e - 20) == 0x7064B50;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = b4(data, e - 20) == 0x7064B50;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport * as DataStore from \"@api/DataStore\";\nimport { showNotification } from \"@api/Notifications\";\nimport { PlainSettings, Settings } from \"@api/Settings\";\nimport { localStorage } from \"@utils/localStorage\";\nimport { Logger } from \"@utils/Logger\";\nimport { relaunch } from \"@utils/native\";\nimport { SettingsRouter } from \"@webpack/common\";\nimport { deflateSync, inflateSync } from \"fflate\";\n\nimport { deauthorizeCloud, getCloudAuth, getCloudUrl } from \"./cloudSetup\";\nimport { exportSettings, importSettings } from \"./offline\";\nimport { ManifestEntry, SyncRequest, SyncResponse } from \"./types\";\n\nconst logger = new Logger(\"SettingsSync:Cloud\", \"#39b7e0\");\n\nconst MANIFEST_STORE_KEY = \"Vencord_cloudManifest\";\nconst API_VERSION_STORE_KEY = \"Vencord_cloudApiVersions\";\n\ntype ApiVersion = \"v2\" | \"v1\";\n\nconst SYNC_DIRECTION_KEY = \"Vencord_cloudSyncDirection\";\nconst SETTINGS_DIRTY_KEY = \"Vencord_settingsDirty\";\nexport const getCloudSyncDirection = () => localStorage.getItem(SYNC_DIRECTION_KEY) || \"both\";\nexport const setCloudSyncDirection = (direction: \"push\" | \"pull\" | \"both\" | \"manual\") => localStorage.setItem(SYNC_DIRECTION_KEY, direction);\nexport const areLocalSettingsDirty = () => localStorage.getItem(SETTINGS_DIRTY_KEY) === \"true\";\nexport const markLocalSettingsDirty = () => localStorage.setItem(SETTINGS_DIRTY_KEY, \"true\");\nexport const markLocalSettingsClean = () => localStorage.removeItem(SETTINGS_DIRTY_KEY);\n\nasync function loadApiVersionMap(): Promise> {\n return await DataStore.get>(API_VERSION_STORE_KEY) ?? {};\n}\n\nasync function getApiVersion(): Promise {\n const map = await loadApiVersionMap();\n return map[getCloudUrl().origin] ?? \"v2\";\n}\n\nasync function setApiVersion(version: ApiVersion) {\n await DataStore.update>(API_VERSION_STORE_KEY, map => {\n map ??= {};\n map[getCloudUrl().origin] = version;\n return map;\n });\n}\n\nfunction toBase64(data: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < data.length; i++)\n binary += String.fromCharCode(data[i]);\n return btoa(binary);\n}\n\nfunction fromBase64(b64: string): Uint8Array {\n const binary = atob(b64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++)\n bytes[i] = binary.charCodeAt(i);\n return bytes;\n}\n\nasync function computeChecksum(data: Uint8Array): Promise {\n const hash = await crypto.subtle.digest(\"SHA-256\", new Uint8Array(data));\n const bytes = new Uint8Array(hash, 0, 8);\n return Array.from(bytes, b => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nasync function getLocalManifest(): Promise {\n return await DataStore.get(MANIFEST_STORE_KEY) ?? [];\n}\n\nasync function saveLocalManifest(manifest: ManifestEntry[]) {\n await DataStore.set(MANIFEST_STORE_KEY, manifest);\n}\n\nasync function buildLocalData(): Promise> {\n const encoder = new TextEncoder();\n const data = new Map();\n\n data.set(\"settings\", encoder.encode(JSON.stringify(VencordNative.settings.get())));\n\n const quickCss = await VencordNative.quickCss.get();\n if (quickCss) data.set(\"quickCss\", encoder.encode(quickCss));\n\n const dataStoreEntries = await DataStore.entries();\n if (dataStoreEntries) data.set(\"dataStore\", encoder.encode(JSON.stringify(dataStoreEntries)));\n\n return data;\n}\n\nasync function applyDownloads(downloads: SyncResponse[\"downloads\"]) {\n if (downloads.length === 0) return false;\n\n let settingsChanged = false;\n const decoder = new TextDecoder();\n\n for (const dl of downloads) {\n const text = decoder.decode(fromBase64(dl.value));\n\n if (dl.key === \"settings\") {\n try {\n await importSettings(JSON.stringify({ settings: JSON.parse(text) }), \"all\", true);\n settingsChanged = true;\n } catch (e) {\n logger.error(\"Failed to apply settings download\", e);\n }\n } else if (dl.key === \"quickCss\") {\n await VencordNative.quickCss.set(text);\n settingsChanged = true;\n } else if (dl.key === \"dataStore\") {\n try {\n const entries = JSON.parse(text);\n await DataStore.setMany(entries);\n settingsChanged = true;\n } catch (e) {\n logger.error(\"Failed to apply dataStore download\", e);\n }\n } else if (dl.key.startsWith(\"dataStore/\")) {\n const dsKey = dl.key.slice(\"dataStore/\".length);\n try {\n await DataStore.set(dsKey, JSON.parse(text));\n settingsChanged = true;\n } catch (e) {\n logger.error(`Failed to apply dataStore download for ${dsKey}`, e);\n }\n }\n }\n\n return settingsChanged;\n}\n\nfunction handleAuthFailure() {\n showNotification({\n title: \"Cloud Settings\",\n body: \"Cloud sync was disabled because this account isn't connected. Reconnect in Cloud Settings.\",\n color: \"var(--yellow-360)\",\n onClick: () => SettingsRouter.openUserSettings(\"equicord_cloud_panel\"),\n });\n Settings.cloud.authenticated = false;\n}\n\nasync function doSyncV2(uploads: SyncRequest[\"uploads\"], clientManifest: ManifestEntry[]): Promise {\n let res: Response;\n try {\n res = await fetch(new URL(\"/v2/sync\", getCloudUrl()), {\n method: \"POST\",\n headers: {\n Authorization: await getCloudAuth(),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ client_manifest: clientManifest, uploads } satisfies SyncRequest),\n });\n } catch (e) {\n logger.error(\"v2 sync network error, will retry next sync\", e);\n return null;\n }\n\n if (res.status === 404) {\n logger.info(\"Server does not support v2, falling back to v1\");\n await setApiVersion(\"v1\");\n return null;\n }\n\n if (res.status === 401) {\n handleAuthFailure();\n return null;\n }\n\n if (!res.ok) {\n logger.error(`Sync failed, API returned ${res.status}`);\n showNotification({\n title: \"Cloud Settings\",\n body: `Could not synchronize settings (API returned ${res.status}).`,\n color: \"var(--red-360)\",\n });\n return null;\n }\n\n return await res.json();\n}\n\nasync function putV2(manual?: boolean) {\n const localManifest = await getLocalManifest();\n const manifestMap = new Map(localManifest.map(e => [e.key, e]));\n\n const localData = await buildLocalData();\n const uploads: SyncRequest[\"uploads\"] = [];\n\n for (const [key, value] of localData) {\n const checksum = await computeChecksum(value);\n const existing = manifestMap.get(key);\n\n if (!existing || existing.checksum !== checksum)\n uploads.push({ key, value: toBase64(value), checksum });\n }\n\n if (uploads.length === 0 && !manual) {\n logger.info(\"No changes to push\");\n delete localStorage.Vencord_settingsDirty;\n return;\n }\n\n const response = await doSyncV2(uploads, localManifest);\n if (!response) return;\n\n for (const err of response.errors)\n logger.error(`Sync error for ${err.key}: ${err.error}`);\n\n const hadDownloads = await applyDownloads(response.downloads);\n await saveLocalManifest(response.server_manifest);\n\n PlainSettings.cloud.settingsSyncVersion = Date.now();\n await VencordNative.settings.set(PlainSettings);\n\n logger.info(`Sync complete: ${response.uploaded.length} uploaded, ${response.downloads.length} downloaded`);\n\n if (manual) {\n showNotification({\n title: \"Cloud Settings\",\n body: hadDownloads\n ? \"Settings synced! Click here to restart to fully apply changes.\"\n : \"Settings synchronized to the cloud!\",\n color: \"var(--green-360)\",\n onClick: hadDownloads ? (IS_WEB ? () => location.reload() : relaunch) : undefined,\n noPersist: true,\n });\n }\n\n delete localStorage.Vencord_settingsDirty;\n}\n\nasync function getV2(shouldNotify: boolean, force: boolean) {\n const localManifest = force ? [] : await getLocalManifest();\n\n const response = await doSyncV2([], localManifest);\n if (!response) return false;\n\n for (const err of response.errors)\n logger.error(`Sync error for ${err.key}: ${err.error}`);\n\n if (response.downloads.length === 0) {\n logger.info(\"Settings up to date\");\n if (shouldNotify)\n showNotification({\n title: \"Cloud Settings\",\n body: \"Your settings are up to date.\",\n noPersist: true,\n });\n return false;\n }\n\n const settingsChanged = await applyDownloads(response.downloads);\n await saveLocalManifest(response.server_manifest);\n\n PlainSettings.cloud.settingsSyncVersion = Date.now();\n await VencordNative.settings.set(PlainSettings);\n\n logger.info(`Pulled ${response.downloads.length} keys from cloud`);\n\n if (shouldNotify)\n showNotification({\n title: \"Cloud Settings\",\n body: settingsChanged\n ? \"Your settings have been updated! Click here to restart to fully apply changes!\"\n : \"Cloud data synchronized.\",\n color: \"var(--green-360)\",\n onClick: settingsChanged ? (IS_WEB ? () => location.reload() : relaunch) : undefined,\n noPersist: true,\n });\n\n delete localStorage.Vencord_settingsDirty;\n return true;\n}\n\nasync function deleteV2() {\n const auth = await getCloudAuth();\n\n const manifestRes = await fetch(new URL(\"/v2/manifest\", getCloudUrl()), {\n headers: { Authorization: auth },\n });\n\n if (!manifestRes.ok) {\n showNotification({\n title: \"Cloud Settings\",\n body: `Could not fetch manifest for deletion (API returned ${manifestRes.status}).`,\n color: \"var(--red-360)\",\n });\n return;\n }\n\n const { entries }: { entries: ManifestEntry[]; } = await manifestRes.json();\n\n await Promise.all(entries.map(async entry => {\n const res = await fetch(new URL(`/v2/data/${encodeURIComponent(entry.key)}`, getCloudUrl()), {\n method: \"DELETE\",\n headers: { Authorization: auth },\n });\n if (!res.ok && res.status !== 404)\n logger.error(`Failed to delete key ${entry.key}: ${res.status}`);\n }));\n\n await saveLocalManifest([]);\n\n PlainSettings.cloud.settingsSyncVersion = 0;\n await VencordNative.settings.set(PlainSettings);\n\n logger.info(\"Settings deleted from cloud successfully\");\n showNotification({\n title: \"Cloud Settings\",\n body: \"Settings deleted from cloud!\",\n color: \"var(--green-360)\",\n });\n}\n\nasync function putV1(manual?: boolean) {\n const settings = await exportSettings({ syncDataStore: false, minify: true });\n\n const res = await fetch(new URL(\"/v1/settings\", getCloudUrl()), {\n method: \"PUT\",\n headers: {\n Authorization: await getCloudAuth(),\n \"Content-Type\": \"application/octet-stream\",\n },\n body: deflateSync(new TextEncoder().encode(settings)) as Uint8Array,\n });\n\n if (!res.ok) {\n logger.error(`Failed to sync up, API returned ${res.status}`);\n showNotification({\n title: \"Cloud Settings\",\n body: `Could not synchronize settings to cloud (API returned ${res.status}).`,\n color: \"var(--red-360)\",\n });\n return;\n }\n\n const { written } = await res.json();\n PlainSettings.cloud.settingsSyncVersion = written;\n VencordNative.settings.set(PlainSettings);\n\n logger.info(\"Settings uploaded to cloud successfully\");\n\n if (manual) {\n showNotification({\n title: \"Cloud Settings\",\n body: \"Synchronized settings to the cloud!\",\n noPersist: true,\n });\n }\n\n delete localStorage.Vencord_settingsDirty;\n}\n\nasync function getV1(shouldNotify: boolean, force: boolean) {\n const res = await fetch(new URL(\"/v1/settings\", getCloudUrl()), {\n method: \"GET\",\n headers: {\n Authorization: await getCloudAuth(),\n Accept: \"application/octet-stream\",\n \"If-None-Match\": Settings.cloud.settingsSyncVersion.toString(),\n },\n });\n\n if (res.status === 401) {\n handleAuthFailure();\n return false;\n }\n\n if (res.status === 404) {\n logger.info(\"No settings on the cloud\");\n if (shouldNotify)\n showNotification({\n title: \"Cloud Settings\",\n body: \"There are no settings in the cloud.\",\n noPersist: true,\n });\n return false;\n }\n\n if (res.status === 304) {\n logger.info(\"Settings up to date\");\n if (shouldNotify)\n showNotification({\n title: \"Cloud Settings\",\n body: \"Your settings are up to date.\",\n noPersist: true,\n });\n return false;\n }\n\n if (!res.ok) {\n logger.error(`Failed to sync down, API returned ${res.status}`);\n showNotification({\n title: \"Cloud Settings\",\n body: `Could not synchronize settings from the cloud (API returned ${res.status}).`,\n color: \"var(--red-360)\",\n });\n return false;\n }\n\n const written = Number(res.headers.get(\"etag\")!);\n const localWritten = Settings.cloud.settingsSyncVersion;\n\n if (!force && written < localWritten) {\n if (shouldNotify)\n showNotification({\n title: \"Cloud Settings\",\n body: \"Your local settings are newer than the cloud ones.\",\n noPersist: true,\n });\n return false;\n }\n\n const data = await res.arrayBuffer();\n const settings = new TextDecoder().decode(inflateSync(new Uint8Array(data)));\n await importSettings(settings, \"all\", true);\n\n PlainSettings.cloud.settingsSyncVersion = written;\n VencordNative.settings.set(PlainSettings);\n\n logger.info(\"Settings loaded from cloud successfully\");\n if (shouldNotify)\n showNotification({\n title: \"Cloud Settings\",\n body: \"Your settings have been updated! Click here to restart to fully apply changes!\",\n color: \"var(--green-360)\",\n onClick: IS_WEB ? () => location.reload() : relaunch,\n noPersist: true,\n });\n\n delete localStorage.Vencord_settingsDirty;\n return true;\n}\n\nasync function deleteV1() {\n const res = await fetch(new URL(\"/v1/settings\", getCloudUrl()), {\n method: \"DELETE\",\n headers: { Authorization: await getCloudAuth() },\n });\n\n if (!res.ok) {\n logger.error(`Failed to delete, API returned ${res.status}`);\n showNotification({\n title: \"Cloud Settings\",\n body: `Could not delete settings (API returned ${res.status}).`,\n color: \"var(--red-360)\",\n });\n return;\n }\n\n logger.info(\"Settings deleted from cloud successfully\");\n showNotification({\n title: \"Cloud Settings\",\n body: \"Settings deleted from cloud!\",\n color: \"var(--green-360)\",\n });\n}\n\nexport function shouldCloudSync(direction: \"push\" | \"pull\") {\n const localDirection = localStorage.Vencord_cloudSyncDirection;\n return localDirection === direction || localDirection === \"both\";\n}\n\nexport async function putCloudSettings(manual?: boolean) {\n try {\n const version = await getApiVersion();\n if (version === \"v2\") {\n await putV2(manual);\n if (await getApiVersion() === \"v1\")\n await putV1(manual);\n } else {\n await putV1(manual);\n }\n } catch (e: any) {\n logger.error(\"Failed to sync up\", e);\n showNotification({\n title: \"Cloud Settings\",\n body: `Could not synchronize settings to the cloud (${e.toString()}).`,\n color: \"var(--red-360)\",\n });\n }\n}\n\nexport async function getCloudSettings(shouldNotify = true, force = false) {\n try {\n const version = await getApiVersion();\n if (version === \"v2\") {\n const result = await getV2(shouldNotify, force);\n if (await getApiVersion() === \"v1\")\n return await getV1(shouldNotify, force);\n return result;\n }\n return await getV1(shouldNotify, force);\n } catch (e: any) {\n logger.error(\"Failed to sync down\", e);\n showNotification({\n title: \"Cloud Settings\",\n body: `Could not synchronize settings from the cloud (${e.toString()}).`,\n color: \"var(--red-360)\",\n });\n return false;\n }\n}\n\nexport async function deleteCloudSettings() {\n try {\n const version = await getApiVersion();\n if (version === \"v2\")\n await deleteV2();\n else\n await deleteV1();\n } catch (e: any) {\n logger.error(\"Failed to delete\", e);\n showNotification({\n title: \"Cloud Settings\",\n body: `Could not delete settings (${e.toString()}).`,\n color: \"var(--red-360)\",\n });\n }\n}\n\nexport async function eraseAllCloudData() {\n const res = await fetch(new URL(\"/v1/\", getCloudUrl()), {\n method: \"DELETE\",\n headers: { Authorization: await getCloudAuth() },\n });\n\n if (!res.ok) {\n logger.error(`Failed to erase data, API returned ${res.status}`);\n showNotification({\n title: \"Cloud Integrations\",\n body: `Could not erase all data (API returned ${res.status}), please contact support.`,\n color: \"var(--red-360)\",\n });\n return;\n }\n\n Settings.cloud.authenticated = false;\n await deauthorizeCloud();\n await saveLocalManifest([]);\n\n showNotification({\n title: \"Cloud Integrations\",\n body: \"Successfully erased all data.\",\n color: \"var(--green-360)\",\n });\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { React, TextInput, useState } from \"@webpack/common\";\n\ninterface TextInputProps {\n /**\n * WARNING: Changing this between renders will have no effect!\n */\n initialValue: string;\n /**\n * This will only be called if the new value passed validate()\n */\n onChange(newValue: string): void;\n /**\n * Optionally validate the user input\n * Return true if the input is valid\n * Otherwise, return a string containing the reason for this input being invalid\n */\n validate(v: string): true | string;\n\n placeholder?: string;\n}\n\n/**\n * A very simple wrapper around Discord's TextInput that validates input and shows\n * the user an error message and only calls your onChange when the input is valid\n */\nexport function CheckedTextInput({ initialValue, onChange, validate, placeholder }: TextInputProps) {\n const [value, setValue] = useState(initialValue);\n const [error, setError] = useState();\n\n function handleChange(v: string) {\n setValue(v);\n\n const res = validate(v);\n\n if (res === true) {\n setError(void 0);\n onChange(v);\n } else {\n setError(res);\n }\n }\n\n return (\n <>\n \n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { useSettings } from \"@api/Settings\";\nimport { authorizeCloud, deauthorizeCloud } from \"@api/SettingsSync/cloudSetup\";\nimport { deleteCloudSettings, eraseAllCloudData, getCloudSettings, putCloudSettings } from \"@api/SettingsSync/cloudSync\";\nimport { Button } from \"@components/Button\";\nimport { CheckedTextInput } from \"@components/CheckedTextInput\";\nimport { Divider } from \"@components/Divider\";\nimport { Flex } from \"@components/Flex\";\nimport { FormSwitch } from \"@components/FormSwitch\";\nimport { Heading } from \"@components/Heading\";\nimport { CloudDownloadIcon, CloudUploadIcon, SkullIcon } from \"@components/Icons\";\nimport { Link } from \"@components/Link\";\nimport { Notice } from \"@components/Notice\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { SettingsTab, wrapTab } from \"@components/settings/tabs/BaseTab\";\nimport { localStorage } from \"@utils/localStorage\";\nimport { Margins } from \"@utils/margins\";\nimport { useForceUpdater } from \"@utils/react\";\nimport { findComponentByCodeLazy } from \"@webpack\";\nimport { Alerts, SearchableSelect, Select, useState } from \"@webpack/common\";\n\nconst ICON_STYLE: React.CSSProperties = { width: 20, height: 20, borderRadius: 4, verticalAlign: \"middle\" };\n\nfunction EquicordIcon() {\n return \"Equicord\";\n}\n\nfunction VencordIcon() {\n return \"Vencord\";\n}\n\nconst RefreshIcon = findComponentByCodeLazy(\"M4 12a8 8 0 0 1 14.93-4H15\");\nconst TrashIcon = findComponentByCodeLazy(\"2.81h8.36a3\");\n\nfunction validateUrl(url: string) {\n try {\n new URL(url);\n return true;\n } catch {\n return \"Invalid URL\";\n }\n}\n\nconst cloudBackendOptions = [\n { label: \"Equicord Cloud\", value: \"https://cloud.equicord.org/\" },\n { label: \"Vencord Cloud\", value: \"https://api.vencord.dev/\" }\n];\n\nconst syncDirectionOptions = [\n { label: \"Two-way sync (changes go both directions)\", value: \"both\" },\n { label: \"This device is the source (upload only)\", value: \"push\" },\n { label: \"The cloud is the source (download only)\", value: \"pull\" },\n { label: \"Do not sync automatically (manual sync via buttons below only)\", value: \"manual\" }\n];\n\nfunction CloudTab() {\n const settings = useSettings([\"cloud.authenticated\", \"cloud.url\", \"cloud.settingsSync\"]);\n const [inputKey, setInputKey] = useState(0);\n const forceUpdate = useForceUpdater();\n\n const { cloud } = settings;\n const isAuthenticated = cloud.authenticated;\n const syncEnabled = isAuthenticated && cloud.settingsSync;\n\n async function changeUrl(url: string) {\n cloud.url = url;\n cloud.authenticated = false;\n\n await deauthorizeCloud();\n await authorizeCloud();\n\n setInputKey(prev => prev + 1);\n }\n\n return (\n \n Cloud Integration\n \n Equicord's cloud integration allows you to sync your settings across multiple devices and Discord installations. Your data is securely stored and can be easily restored at any time.\n \n\n \n We use our own Equicloud backend with enhanced features.\n View our privacy policy to see what we store and how we use your data.\n Equicloud is BSD 3.0 licensed, so you can self-host if preferred.\n \n\n {\n if (v)\n authorizeCloud();\n else\n cloud.authenticated = v;\n }}\n hideBorder\n />\n\n \n\n Cloud Backend\n \n Choose which cloud backend to use for storing your settings. You can switch between Equicord's and Vencord's cloud services, or use a self-hosted instance.\n \n\n
\n o.value === cloud.url)?.value}\n onChange={v => changeUrl(v)}\n closeOnSelect={true}\n renderOptionPrefix={o => o?.value?.includes(\"equicord\") ? : }\n />\n
\n\n \n
\n {\n cloud.url = v;\n cloud.authenticated = false;\n await deauthorizeCloud();\n }}\n validate={validateUrl}\n />\n
\n {\n cloud.authenticated = false;\n await deauthorizeCloud();\n await authorizeCloud();\n }}\n >\n \n \n Reauthorize\n \n \n
\n\n \n\n Settings Sync\n \n Synchronize your Equicord settings to the cloud. This makes it easy to keep your configuration consistent across multiple devices without manual import/export.\n \n\n { cloud.settingsSync = v; }}\n disabled={!isAuthenticated}\n hideBorder\n />\n\n \n\n Sync Rules for This Device\n \n This setting controls how settings move between this device and the cloud. You can let changes flow both ways, or choose one place to be the main source of truth.\n \n\n v === (localStorage.Vencord_cloudSyncDirection ?? \"both\")}\n select={v => {\n localStorage.Vencord_cloudSyncDirection = v;\n forceUpdate();\n }}\n serialize={v => v}\n isDisabled={!syncEnabled}\n />\n\n \n putCloudSettings(true)}\n >\n \n \n Sync to Cloud\n \n \n getCloudSettings(true, true)}\n >\n \n \n Sync from Cloud\n \n \n \n\n {!isAuthenticated && (\n \n Enable cloud integration above to use settings sync features.\n \n )}\n\n \n\n Danger Zone\n \n Permanently delete all your data from the cloud. This action cannot be undone and will remove all synced settings and any other data stored on the cloud backend.\n \n\n \n deleteCloudSettings()}\n >\n \n \n Delete Cloud Settings\n \n \n Alerts.show({\n title: \"Delete Cloud Account\",\n body: \"Are you sure you want to permanently delete your cloud account and all associated data? This action cannot be undone.\",\n onConfirm: eraseAllCloudData,\n confirmText: \"Delete Account\",\n confirmColor: \"vc-cloud-erase-data-danger-btn\",\n cancelText: \"Cancel\"\n })}\n >\n \n \n Delete Cloud Account\n \n \n \n
\n );\n}\n\nexport default wrapTab(CloudTab, \"Cloud\");\n", ".vc-settings-theme-grid {\n display: grid;\n gap: 8px;\n grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n}\n\n.vc-settings-theme-link-row {\n display: grid;\n height: 40px;\n gap: 8px;\n grid-template-columns: 1fr auto;\n}\n\n.vc-settings-theme-filter-row {\n display: grid;\n height: 40px;\n gap: 8px;\n grid-template-columns: 1fr 150px;\n}\n\n.vc-settings-theme-error-card {\n padding: 16px;\n}\n\n.vc-settings-csp-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vc-settings-csp-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n padding: 8px 0;\n}\n\n.vc-settings-csp-row a {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n}\n\n.vc-settings-theme-menu-button {\n cursor: pointer;\n color: var(--interactive-icon-default, var(--interactive-normal));\n display: flex;\n align-items: center;\n height: 24px;\n}\n\n.vc-settings-theme-menu-button:hover {\n color: var(--interactive-icon-hover, var(--interactive-hover));\n}\n\n.vc-settings-theme-footer-pin-icon {\n display: flex;\n}\n\n.vc-settings-theme-footer-pin-icon svg {\n width: 16px;\n height: 16px;\n}\n\n.vc-settings-theme-footer-pin-icon svg path {\n fill: var(--text-muted);\n}", "/* eslint-disable simple-header/header */\n\n/*!\n * BetterDiscord addon meta parser\n * Copyright 2023 BetterDiscord contributors\n * Copyright 2023 Vendicated and Vencord contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst splitRegex = /[^\\S\\r\\n]*?\\r?(?:\\r\\n|\\n)[^\\S\\r\\n]*?\\*[^\\S\\r\\n]?/;\nconst escapedAtRegex = /^\\\\@/;\n\nexport interface UserThemeHeader {\n fileName: string;\n name: string;\n author: string;\n description: string;\n version?: string;\n license?: string;\n source?: string;\n website?: string;\n invite?: string;\n content?: string;\n customName?: string;\n}\n\nfunction makeHeader(fileName: string, opts: Partial = {}): UserThemeHeader {\n return {\n fileName,\n name: opts.name ?? fileName.replace(/\\.css$/i, \"\"),\n author: opts.author ?? \"Unknown Author\",\n description: opts.description ?? \"A Discord Theme.\",\n version: opts.version,\n license: opts.license,\n source: opts.source,\n website: opts.website,\n invite: opts.invite\n };\n}\n\nexport function stripBOM(fileContent: string) {\n if (fileContent.charCodeAt(0) === 0xFEFF) {\n fileContent = fileContent.slice(1);\n }\n return fileContent;\n}\n\nexport function getThemeInfo(css: string, fileName: string): UserThemeHeader {\n if (!css) return makeHeader(fileName);\n\n const block = css.split(\"/**\", 2)?.[1]?.split(\"*/\", 1)?.[0];\n if (!block) return makeHeader(fileName);\n\n const header: Partial = {};\n let field = \"\";\n let accum = \"\";\n for (const line of block.split(splitRegex)) {\n if (line.length === 0) continue;\n if (line.charAt(0) === \"@\" && line.charAt(1) !== \" \") {\n header[field] = accum.trim();\n const l = line.indexOf(\" \");\n field = line.substring(1, l);\n accum = line.substring(l + 1);\n }\n else {\n accum += \" \" + line.replace(\"\\\\n\", \"\\n\").replace(escapedAtRegex, \"@\");\n }\n }\n header[field] = accum.trim();\n delete header[\"\"];\n return makeHeader(fileName, header);\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Button } from \"@components/Button\";\nimport { FormSwitch } from \"@components/FormSwitch\";\nimport { Heading } from \"@components/Heading\";\nimport { Link } from \"@components/Link\";\nimport { Notice } from \"@components/Notice\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { classNameFactory } from \"@utils/css\";\nimport { Margins } from \"@utils/margins\";\nimport { useAwaiter } from \"@utils/react\";\nimport { React, TextInput } from \"@webpack/common\";\n\nconst cl = classNameFactory(\"vc-settings-theme-\");\n\nexport function Validator({ link, onValidate }: { link: string; onValidate: (valid: boolean) => void; }) {\n const [res, err, pending] = useAwaiter(() => fetch(link).then(res => {\n if (res.status > 300) throw `${res.status} ${res.statusText}`;\n const contentType = res.headers.get(\"Content-Type\");\n if (!contentType?.startsWith(\"text/css\") && !contentType?.startsWith(\"text/plain\")) {\n onValidate(false);\n throw \"Not a CSS file. Remember to use the raw link!\";\n }\n\n onValidate(true);\n return \"Okay!\";\n }));\n\n const text = pending\n ? \"Checking...\"\n : err\n ? `Error: ${err instanceof Error ? err.message : String(err)}`\n : \"Valid!\";\n\n return {text};\n}\n\nexport interface OnlineThemesSectionProps {\n enableOnlineThemes: boolean;\n setEnableOnlineThemes: (value: boolean) => void;\n currentThemeLink: string;\n setCurrentThemeLink: (value: string) => void;\n themeLinkValid: boolean;\n setThemeLinkValid: (value: boolean) => void;\n addThemeLink: (link: string) => void;\n}\n\nexport function OnlineThemesSection({\n enableOnlineThemes,\n setEnableOnlineThemes,\n currentThemeLink,\n setCurrentThemeLink,\n themeLinkValid,\n setThemeLinkValid,\n addThemeLink\n}: OnlineThemesSectionProps) {\n return (\n <>\n Online Themes\n \n Load themes directly from URLs instead of local files. Online themes auto-update when the source changes, so you always have the latest version without manual downloads.\n \n \n\n \n Looking for themes? Check out BetterDiscord Themes or search on GitHub. When downloading from BetterDiscord, click \"Download\" and place the .theme.css file into your themes folder.\n \n\n
\n \n \n
\n {currentThemeLink && (\n
\n \n
\n )}\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Settings } from \"@api/Settings\";\nimport { FolderIcon, PaintbrushIcon, PencilIcon, PlusIcon, RestartIcon } from \"@components/Icons\";\nimport { QuickAction, QuickActionCard } from \"@components/settings\";\nimport { openPluginModal } from \"@components/settings/tabs/plugins/PluginModal\";\nimport { findLazy } from \"@webpack\";\nimport { React } from \"@webpack/common\";\nimport type { ComponentType, Ref, SyntheticEvent } from \"react\";\n\nimport Plugins from \"~plugins\";\n\ntype FileInputType = ComponentType<{\n ref: Ref;\n onChange: (e: SyntheticEvent) => void;\n multiple?: boolean;\n filters?: { name?: string; extensions: string[]; }[];\n}>;\n\nconst FileInput: FileInputType = findLazy(m => m.prototype?.activateUploadDialogue && m.prototype.setRef);\n\nexport interface QuickActionsSectionProps {\n fileInputRef: any;\n onFileUpload: (e: SyntheticEvent) => void;\n refreshLocalThemes: () => void;\n}\n\nexport function QuickActionsSection({ fileInputRef, onFileUpload, refreshLocalThemes }: QuickActionsSectionProps) {\n return (\n \n {IS_WEB ? (\n \n Upload Theme\n \n \n }\n Icon={PlusIcon}\n />\n ) : (\n VencordNative.themes.openFolder()}\n Icon={FolderIcon}\n />\n )}\n \n VencordNative.quickCss.openEditor()}\n Icon={PaintbrushIcon}\n />\n {Settings.plugins.ClientTheme.enabled && (\n openPluginModal(Plugins.ClientTheme)}\n Icon={PencilIcon}\n />\n )}\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { BaseText } from \"@components/BaseText\";\nimport { React, useEffect, useRef, useState } from \"@webpack/common\";\n\ninterface EditableTextProps {\n value: string;\n onChange: (newValue: string) => void;\n className?: string;\n}\n\nexport function EditableText({ value, onChange, className }: EditableTextProps) {\n const [editing, setEditing] = useState(false);\n const [tempValue, setTempValue] = useState(value);\n const inputRef = useRef(null);\n\n useEffect(() => {\n if (editing && inputRef.current) {\n inputRef.current.focus();\n }\n }, [editing]);\n\n return editing ? (\n setTempValue(e.target.value)}\n onBlur={() => {\n setEditing(false);\n onChange(tempValue);\n }}\n onKeyDown={e => {\n if (e.key === \"Enter\") {\n setEditing(false);\n onChange(tempValue);\n } else if (e.key === \"Escape\") {\n setEditing(false);\n setTempValue(value);\n }\n }}\n />\n ) : (\n setEditing(true)}\n style={{ cursor: \"pointer\" }}\n >\n {value}\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { useEffect, useRef, useState } from \"@webpack/common\";\n\nexport function useTruncatedText(text: string) {\n const containerRef = useRef(null);\n const [truncated, setTruncated] = useState(text);\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const el = containerRef.current;\n const maxHeight = 36;\n\n const currentText = text;\n el.textContent = currentText;\n\n if (el.scrollHeight <= maxHeight) {\n setTruncated(currentText);\n return;\n }\n\n let start = 0;\n let end = currentText.length;\n\n while (start < end) {\n const mid = Math.floor((start + end) / 2);\n const testText = currentText.slice(0, mid).trim() + \"\u2026\";\n el.textContent = testText;\n\n if (el.scrollHeight <= maxHeight) {\n start = mid + 1;\n } else {\n end = mid;\n }\n }\n const finalText = currentText.slice(0, end - 1).trim() + \"\u2026\";\n setTruncated(finalText);\n }, [text]);\n\n return { truncated, containerRef };\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./AddonCard.css\";\n\nimport { Badge } from \"@components/Badge\";\nimport { BaseText } from \"@components/BaseText\";\nimport { Switch } from \"@components/settings\";\nimport { classNameFactory } from \"@utils/css\";\nimport { useRef } from \"@webpack/common\";\nimport type { MouseEventHandler, ReactNode } from \"react\";\n\nimport { EditableText } from \"./EditableText\";\nimport { useTruncatedText } from \"./tabs/plugins/components/truncateText\";\n\nconst cl = classNameFactory(\"vc-addon-\");\n\ninterface Props {\n name: ReactNode;\n description: ReactNode;\n enabled: boolean;\n setEnabled: (enabled: boolean) => void;\n disabled?: boolean;\n isNew?: boolean;\n onMouseEnter?: MouseEventHandler;\n onMouseLeave?: MouseEventHandler;\n\n infoButton?: ReactNode;\n footer?: ReactNode;\n author?: ReactNode;\n\n customName?: string;\n customDescription?: string;\n onEditName?: (newName: string) => void;\n onEditDescription?: (newDescription: string) => void;\n}\n\nexport function OnlineThemeCard({\n disabled,\n isNew,\n name,\n infoButton,\n footer,\n author,\n enabled,\n setEnabled,\n description,\n onMouseEnter,\n onMouseLeave,\n customName,\n onEditName,\n}: Props) {\n const titleRef = useRef(null);\n const titleContainerRef = useRef(null);\n const { truncated, containerRef } = useTruncatedText(description ? description.toString() : \"\");\n\n return (\n \n
\n
\n \n
\n {\n const title = titleRef.current!;\n const titleContainer = titleContainerRef.current!;\n\n title.style.setProperty(\"--offset\", `${titleContainer.clientWidth - title.scrollWidth}px`);\n title.style.setProperty(\"--duration\", `${Math.max(0.5, (title.scrollWidth - titleContainer.clientWidth) / 7)}s`);\n }}\n >\n {onEditName ? (\n \n ) : (\n customName || name\n )}\n
\n
\n {isNew && }\n \n\n {!!author && (\n \n {author}\n \n )}\n
\n\n {infoButton}\n\n \n
\n\n \n {truncated}\n \n\n {footer &&
{footer}
}\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport type { ThemeActivationMode } from \"@api/Settings\";\nimport { Flex } from \"@components/Flex\";\nimport { CogWheel, DeleteIcon, FolderIcon } from \"@components/Icons\";\nimport { Link } from \"@components/Link\";\nimport { OnlineThemeCard } from \"@components/settings/OnlineThemeCard\";\nimport { UserThemeHeader } from \"@main/themes\";\nimport { classNameFactory } from \"@utils/css\";\nimport { openInviteModal } from \"@utils/discord\";\nimport { findComponentByCodeLazy } from \"@webpack\";\nimport { Menu, React, showToast, Tooltip, useState } from \"@webpack/common\";\nimport { ContextMenuApi } from \"@webpack/common/menu\";\n\nconst PinIcon = findComponentByCodeLazy(\"1-.06-.63L6.16\");\nconst HomeIcon = findComponentByCodeLazy(\"m2.4 8.4 8.38-6.46a2\");\nconst RefreshIcon = findComponentByCodeLazy(\"M21 2a1 1 0 0 1 1 1v6\");\nconst LinkIcon = findComponentByCodeLazy(\"M16.32 14.72a1 1 0 0 1 0-1.41l2.51-2.51\");\nconst DiscordIcon = findComponentByCodeLazy(\"1.6 5.64-2.87\");\nconst DownloadIcon = findComponentByCodeLazy(\"1.42l3.3 3.3V3a1\");\n\nconst cl = classNameFactory(\"vc-settings-theme-\");\n\nconst themeActivationModeOptions: { value: ThemeActivationMode; label: string; }[] = [\n { value: \"always\", label: \"Always on\" },\n { value: \"light\", label: \"Light only\" },\n { value: \"dark\", label: \"Dark only\" }\n];\n\nexport function getThemeActivationModeLabel(mode: ThemeActivationMode) {\n return themeActivationModeOptions.find(option => option.value === mode)?.label ?? \"Always on\";\n}\n\nexport function ThemeActivationMenu({ themeId, activationMode, onActivationModeChange, children }: {\n themeId: string;\n activationMode: ThemeActivationMode;\n onActivationModeChange?: (mode: ThemeActivationMode) => void;\n children?: React.ReactNode;\n}) {\n const [selectedMode, setSelectedMode] = useState(activationMode);\n\n return (\n \n {onActivationModeChange && (\n \n {themeActivationModeOptions.map(option => (\n {\n setSelectedMode(option.value);\n onActivationModeChange(option.value);\n }}\n />\n ))}\n \n )}\n {children}\n \n );\n}\n\nexport function LocalThemeIcon({ size }: { size?: string; }) {\n const sizeVal = size === \"sm\" ? 16 : 24;\n return (\n \n \n \n );\n}\n\nexport function OnlineThemeIcon({ size }: { size?: string; }) {\n const sizeVal = size === \"sm\" ? 16 : 24;\n return (\n \n \n \n );\n}\n\nexport interface ThemeCardProps {\n theme: UserThemeHeader;\n enabled: boolean;\n onChange: (enabled: boolean) => void;\n onDelete?: () => void;\n showDeleteButton?: boolean;\n onEditName?: (newName: string) => void;\n disabled?: boolean;\n onPin?: () => void;\n isPinned?: boolean;\n onRefresh?: () => void;\n onOpenFolder?: () => void;\n onCopyUrl?: () => void;\n onDownload?: () => void;\n themeLink?: string;\n isLocal?: boolean;\n activationMode?: ThemeActivationMode;\n onActivationModeChange?: (mode: ThemeActivationMode) => void;\n}\n\nexport function ThemeCard({ theme, enabled, onChange, onDelete, showDeleteButton, onEditName, disabled, onPin, isPinned, onRefresh, onOpenFolder, onCopyUrl, onDownload, themeLink, isLocal, activationMode = \"always\", onActivationModeChange }: ThemeCardProps) {\n const openThemeMenu = (e: React.MouseEvent) => {\n ContextMenuApi.openContextMenu(e, () => (\n \n {onPin && (\n \n )}\n {theme.website && (\n window.open(theme.website, \"_blank\")}\n />\n )}\n {theme.invite && (\n {\n openInviteModal(theme.invite!).catch(() =>\n showToast(\"Invalid or expired invite\")\n );\n }}\n />\n )}\n {onCopyUrl && themeLink && (\n \n )}\n {onDownload && (\n \n )}\n {onOpenFolder && (\n \n )}\n {onRefresh && (\n \n )}\n {(IS_WEB || showDeleteButton) && onDelete && (\n <>\n \n onDelete()}\n />\n \n )}\n \n ));\n };\n\n return (\n \n \n \n )\n }\n footer={\n \n \n {({ onMouseLeave, onMouseEnter }) => (\n \n {isLocal ? : }\n \n )}\n \n {isPinned && (\n \n {({ onMouseLeave, onMouseEnter }) => (\n \n \n \n )}\n \n )}\n {!!theme.website && Website}\n {!!(theme.website && theme.invite) && (\n \u2022\n )}\n {!!theme.invite && (\n {\n e.preventDefault();\n theme.invite != null &&\n openInviteModal(theme.invite).catch(() =>\n showToast(\"Invalid or expired invite\")\n );\n }}\n >\n Discord Server\n \n )}\n {activationMode !== \"always\" && (\n <>\n {!!(theme.website || theme.invite) && \u2022}\n {getThemeActivationModeLabel(activationMode)}\n \n )}\n \n }\n\n onEditName={onEditName}\n />\n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./styles.css\";\n\nimport { Settings, type ThemeActivationMode, useSettings } from \"@api/Settings\";\nimport { Divider } from \"@components/Divider\";\nimport { Heading } from \"@components/Heading\";\nimport { Link } from \"@components/Link\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { SettingsTab, wrapTab } from \"@components/settings/tabs/BaseTab\";\nimport { getThemeInfo, UserThemeHeader } from \"@main/themes\";\nimport { classNameFactory } from \"@utils/css\";\nimport { copyWithToast } from \"@utils/discord\";\nimport { Margins } from \"@utils/margins\";\nimport { classes } from \"@utils/misc\";\nimport { getStylusWebStoreUrl } from \"@utils/web\";\nimport { React, Select, showToast, TextInput, Toasts, useEffect, useMemo, useRef, useState } from \"@webpack/common\";\nimport { SyntheticEvent } from \"react\";\n\nimport { OnlineThemesSection } from \"./OnlineThemes\";\nimport { QuickActionsSection } from \"./QuickActions\";\nimport { ThemeCard } from \"./ThemeCard\";\n\nconst cl = classNameFactory(\"vc-settings-theme-\");\n\nenum ThemeFilter {\n All = \"all\",\n Online = \"online\",\n Local = \"local\",\n Enabled = \"enabled\",\n Disabled = \"disabled\"\n}\n\nconst filterOptions = [\n { label: \"Show All\", value: ThemeFilter.All },\n { label: \"Online Themes\", value: ThemeFilter.Online },\n { label: \"Local Themes\", value: ThemeFilter.Local },\n { label: \"Enabled\", value: ThemeFilter.Enabled },\n { label: \"Disabled\", value: ThemeFilter.Disabled }\n];\n\nfunction inferThemeActivationMode(css: string) {\n let text = css.replace(/^\\uFEFF/, \"\");\n\n while (true) {\n const trimmed = text.trimStart();\n if (trimmed !== text) text = trimmed;\n\n const comment = /^\\/\\*[\\s\\S]*?\\*\\/\\s*/.exec(text);\n if (!comment) break;\n text = text.slice(comment[0].length);\n }\n\n const match = /^@(light|dark)\\b/i.exec(text);\n return match?.[1].toLowerCase() as ThemeActivationMode | undefined;\n}\n\nfunction inferAndStoreThemeActivationMode(themeId: string, css: string) {\n const activationMode = Settings.themeActivationModes?.[themeId] ?? inferThemeActivationMode(css);\n if (!activationMode || themeId in (Settings.themeActivationModes ?? {})) return;\n\n Settings.themeActivationModes = {\n ...(Settings.themeActivationModes ?? {}),\n [themeId]: activationMode,\n };\n}\n\ninterface UnifiedTheme {\n type: \"local\" | \"online\";\n name: string;\n enabled: boolean;\n header: UserThemeHeader;\n link?: string;\n activationMode: ThemeActivationMode;\n}\n\nfunction ThemesTab() {\n const settings = useSettings([\"themeLinks\", \"enabledThemeLinks\", \"enabledThemes\", \"enableOnlineThemes\", \"pinnedThemes\", \"themeActivationModes.*\"]);\n\n const fileInputRef = useRef(null);\n const [currentThemeLink, setCurrentThemeLink] = useState(\"\");\n const [themeLinkValid, setThemeLinkValid] = useState(false);\n const [userThemes, setUserThemes] = useState(null);\n const [onlineThemes, setOnlineThemes] = useState<(UserThemeHeader & { link: string; })[] | null>(null);\n const [themeNames, setThemeNames] = useState>(() => {\n return settings.themeNames ?? {};\n });\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [filter, setFilter] = useState(ThemeFilter.All);\n\n useEffect(() => {\n void updateThemes();\n }, []);\n\n async function updateThemes() {\n await Promise.allSettled([refreshLocalThemes(), refreshOnlineThemes()]);\n }\n\n async function refreshLocalThemes() {\n const themes = await VencordNative.themes.getThemesList();\n setUserThemes(themes);\n }\n\n function onLocalThemeChange(fileName: string, value: boolean) {\n if (value) {\n if (settings.enabledThemes.includes(fileName)) return;\n settings.enabledThemes = [...settings.enabledThemes, fileName];\n } else {\n settings.enabledThemes = settings.enabledThemes.filter(f => f !== fileName);\n }\n }\n\n async function doUploadThemes(files: ArrayLike) {\n const uploads = Array.from(files, file => {\n const { name } = file;\n if (!name.endsWith(\".css\")) return;\n\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n VencordNative.themes.uploadTheme(name, reader.result as string)\n .then(resolve)\n .catch(reject);\n };\n reader.readAsText(file);\n });\n });\n\n await Promise.all(uploads);\n refreshLocalThemes();\n }\n\n async function onFileUpload(e: SyntheticEvent) {\n e.stopPropagation();\n e.preventDefault();\n\n if (!e.currentTarget?.files?.length) return;\n await doUploadThemes(e.currentTarget.files);\n }\n\n function useDropFile(refreshThemes: Function) {\n useEffect(() => {\n const onDragOver = (e: DragEvent) => {\n if (!e.dataTransfer?.items.length) return;\n if (!Array.from(e.dataTransfer.items).some(item => item.kind === \"file\" && item.getAsFile()?.name.endsWith(\".css\")))\n return;\n\n e.preventDefault();\n e.dataTransfer.dropEffect = \"copy\";\n };\n\n const onDrop = async (e: DragEvent) => {\n e.preventDefault();\n\n if (!e.dataTransfer?.files.length) return;\n\n await doUploadThemes(\n Array.from(e.dataTransfer.files).filter(file => file.name.endsWith(\".css\"))\n );\n\n refreshThemes();\n };\n\n window.addEventListener(\"dragover\", onDragOver);\n window.addEventListener(\"drop\", onDrop);\n\n return () => {\n window.removeEventListener(\"dragover\", onDragOver);\n window.removeEventListener(\"drop\", onDrop);\n };\n }, []);\n }\n\n function addThemeLink(link: string) {\n if (!themeLinkValid) return;\n if (settings.themeLinks.includes(link)) return;\n\n settings.themeLinks = [...settings.themeLinks, link];\n setCurrentThemeLink(\"\");\n refreshOnlineThemes();\n }\n\n // This condition is compile time so conditional hook is okay\n if (IS_WEB) useDropFile(refreshLocalThemes);\n\n async function refreshOnlineThemes() {\n const themes = await Promise.all(\n settings.themeLinks.map(async link => {\n try {\n const res = await fetch(link);\n if (!res.ok) throw new Error(`Failed to fetch ${link}`);\n const css = await res.text();\n inferAndStoreThemeActivationMode(link, css);\n\n return { ...getThemeInfo(css, link), link };\n } catch {\n return null;\n }\n })\n );\n setOnlineThemes(themes.filter(theme => theme !== null));\n }\n\n function onThemeLinkEnabledChange(link: string, enabled: boolean) {\n if (enabled) {\n if (settings.enabledThemeLinks.includes(link)) return;\n settings.enabledThemeLinks = [...settings.enabledThemeLinks, link];\n } else {\n settings.enabledThemeLinks = settings.enabledThemeLinks.filter(f => f !== link);\n }\n }\n\n function clearThemeState(themeId: string) {\n settings.pinnedThemes = settings.pinnedThemes.filter(f => f !== themeId);\n settings.enabledThemes = settings.enabledThemes.filter(f => f !== themeId);\n settings.enabledThemeLinks = settings.enabledThemeLinks.filter(f => f !== themeId);\n settings.themeNames = Object.fromEntries(Object.entries(settings.themeNames).filter(([key]) => key !== themeId));\n\n const themeActivationModes = { ...(settings.themeActivationModes ?? {}) };\n delete themeActivationModes[themeId];\n settings.themeActivationModes = themeActivationModes;\n }\n\n function deleteThemeLink(link: string) {\n settings.themeLinks = settings.themeLinks.filter(f => f !== link);\n clearThemeState(link);\n refreshOnlineThemes();\n }\n\n function setThemeActivationMode(themeId: string, mode: ThemeActivationMode) {\n const themeActivationModes = { ...(settings.themeActivationModes ?? {}) };\n\n if (mode === \"always\") {\n delete themeActivationModes[themeId];\n } else {\n themeActivationModes[themeId] = mode;\n }\n\n settings.themeActivationModes = themeActivationModes;\n }\n\n function togglePinTheme(themeId: string) {\n if (settings.pinnedThemes.includes(themeId)) {\n settings.pinnedThemes = settings.pinnedThemes.filter(f => f !== themeId);\n } else {\n settings.pinnedThemes = [...settings.pinnedThemes, themeId];\n }\n }\n\n async function refreshOnlineTheme(link: string) {\n try {\n const res = await fetch(link);\n if (!res.ok) throw new Error(`Failed to fetch ${link}`);\n const css = await res.text();\n inferAndStoreThemeActivationMode(link, css);\n\n const updatedTheme = { ...getThemeInfo(css, link), link };\n\n setOnlineThemes(prev =>\n prev?.map(t => t.link === link ? updatedTheme : t) ?? null\n );\n showToast(\"Theme refreshed!\", Toasts.Type.SUCCESS);\n } catch {\n showToast(\"Failed to refresh theme\", Toasts.Type.FAILURE);\n }\n }\n\n async function downloadTheme(link: string, name: string) {\n try {\n const res = await fetch(link);\n if (!res.ok) throw new Error(`Failed to fetch ${link}`);\n const css = await res.text();\n const fileName = name.replace(/[^a-z0-9]/gi, \"-\") + \".css\";\n\n if (IS_DISCORD_DESKTOP) {\n DiscordNative.fileManager.saveWithDialog(new TextEncoder().encode(css), fileName);\n } else {\n const blob = new Blob([css], { type: \"text/css\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = fileName;\n a.click();\n URL.revokeObjectURL(url);\n }\n } catch {\n showToast(\"Failed to download theme\", Toasts.Type.FAILURE);\n }\n }\n\n const allThemes = useMemo((): UnifiedTheme[] => {\n const themes: UnifiedTheme[] = [];\n\n for (const theme of onlineThemes ?? []) {\n const customName = themeNames[theme.link] ?? null;\n themes.push({\n type: \"online\",\n name: customName ?? theme.name ?? theme.fileName,\n enabled: settings.enabledThemeLinks.includes(theme.link),\n header: { ...theme, customName },\n link: theme.link,\n activationMode: settings.themeActivationModes?.[theme.link] ?? \"always\",\n });\n }\n\n for (const header of userThemes ?? []) {\n const name = header.name ?? header.fileName;\n\n themes.push({\n type: \"local\",\n name,\n enabled: settings.enabledThemes.includes(header.fileName),\n header,\n activationMode: settings.themeActivationModes?.[header.fileName] ?? \"always\",\n });\n }\n\n return themes;\n }, [onlineThemes, userThemes, themeNames, settings.enabledThemeLinks, settings.enabledThemes, settings.themeActivationModes]);\n\n const filteredThemes = useMemo(() => {\n let themes = allThemes;\n\n if (searchQuery.trim()) {\n const query = searchQuery.toLowerCase();\n themes = themes.filter(t => t.name.toLowerCase().includes(query));\n }\n\n switch (filter) {\n case ThemeFilter.Online:\n themes = themes.filter(t => t.type === \"online\");\n break;\n case ThemeFilter.Local:\n themes = themes.filter(t => t.type === \"local\");\n break;\n case ThemeFilter.Enabled:\n themes = themes.filter(t => t.enabled);\n break;\n case ThemeFilter.Disabled:\n themes = themes.filter(t => !t.enabled);\n break;\n }\n\n const getThemeId = (t: UnifiedTheme) => t.type === \"online\" ? t.link! : t.header.fileName;\n themes.sort((a, b) => {\n const aId = getThemeId(a);\n const bId = getThemeId(b);\n const aPinIndex = settings.pinnedThemes.indexOf(aId);\n const bPinIndex = settings.pinnedThemes.indexOf(bId);\n const aIsPinned = aPinIndex !== -1;\n const bIsPinned = bPinIndex !== -1;\n\n if (aIsPinned && !bIsPinned) return -1;\n if (!aIsPinned && bIsPinned) return 1;\n if (aIsPinned && bIsPinned) return aPinIndex - bPinIndex;\n return 0;\n });\n\n return themes;\n }, [allThemes, searchQuery, filter, settings.pinnedThemes]);\n\n const localCount = allThemes.filter(t => t.type === \"local\").length;\n const onlineCount = allThemes.filter(t => t.type === \"online\").length;\n const enabledCount = allThemes.filter(t => t.enabled).length;\n\n return (\n \n Theme Management\n \n Customize Discord's appearance with themes. Add local .css files or load themes directly from URLs. Themes with a cog wheel icon have customizable settings you can modify.\n \n\n Quick Actions\n \n Shortcuts for managing your themes. Open your themes folder to add new themes, use QuickCSS for quick style tweaks, or reload themes after making changes.\n \n\n \n\n \n\n {\n settings.enableOnlineThemes = value;\n if (!value) {\n settings.enabledThemeLinks = [];\n }\n }}\n currentThemeLink={currentThemeLink}\n setCurrentThemeLink={setCurrentThemeLink}\n themeLinkValid={themeLinkValid}\n setThemeLinkValid={setThemeLinkValid}\n addThemeLink={addThemeLink}\n />\n\n \n\n Installed Themes\n \n Manage your themes here. Local themes load from your themes folder, online themes from URLs. Themes with a cog wheel icon have customizable settings.\n \n \n {allThemes.length} theme{allThemes.length !== 1 ? \"s\" : \"\"} installed ({localCount} local, {onlineCount} online) \u00B7 {enabledCount} enabled\n \n\n
\n \n
\n v === filter}\n serialize={v => v}\n />\n
\n
\n\n {userThemes === null ? (\n Loading themes...\n ) : filteredThemes.length === 0 ? (\n \n {allThemes.length === 0\n ? \"No themes installed yet. Add theme files to your themes folder or add an online theme above to get started.\"\n : \"No themes match your search or filter criteria.\"\n }\n \n ) : (\n
\n {filteredThemes.map(theme => {\n if (theme.type === \"online\") {\n const onlineTheme = theme.header as UserThemeHeader & { link: string; };\n const onlineThemesDisabled = !(settings.enableOnlineThemes ?? true);\n return (\n onThemeLinkEnabledChange(onlineTheme.link, enabled)}\n onDelete={() => {\n onThemeLinkEnabledChange(onlineTheme.link, false);\n deleteThemeLink(onlineTheme.link);\n }}\n showDeleteButton\n disabled={onlineThemesDisabled}\n onPin={() => togglePinTheme(onlineTheme.link)}\n isPinned={settings.pinnedThemes.includes(onlineTheme.link)}\n themeLink={onlineTheme.link}\n onCopyUrl={() => copyWithToast(onlineTheme.link, \"Theme URL copied!\")}\n onRefresh={() => refreshOnlineTheme(onlineTheme.link)}\n onDownload={() => downloadTheme(onlineTheme.link, onlineTheme.name ?? \"theme\")}\n isLocal={false}\n activationMode={theme.activationMode}\n onActivationModeChange={mode => setThemeActivationMode(onlineTheme.link, mode)}\n onEditName={newName => {\n const updatedNames = { ...themeNames, [onlineTheme.link]: newName };\n setThemeNames(updatedNames);\n settings.themeNames = {\n ...settings.themeNames,\n [onlineTheme.link]: newName,\n };\n }}\n />\n );\n }\n\n const localTheme = theme.header;\n return (\n onLocalThemeChange(localTheme.fileName, enabled)}\n onDelete={async () => {\n onLocalThemeChange(localTheme.fileName, false);\n clearThemeState(localTheme.fileName);\n await VencordNative.themes.deleteTheme(localTheme.fileName);\n refreshLocalThemes();\n }}\n showDeleteButton\n onPin={() => togglePinTheme(localTheme.fileName)}\n isPinned={settings.pinnedThemes.includes(localTheme.fileName)}\n onRefresh={refreshLocalThemes}\n isLocal\n theme={localTheme}\n activationMode={theme.activationMode}\n onActivationModeChange={mode => setThemeActivationMode(localTheme.fileName, mode)}\n />\n );\n })}\n
\n )}\n
\n );\n}\n\nfunction UserscriptThemesTab() {\n return (\n \n Themes Not Supported\n \n Themes are not available on the Userscript version.\n \n \n You can install themes using the Stylus extension instead.\n \n \n );\n}\n\nexport default IS_USERSCRIPT\n ? wrapTab(UserscriptThemesTab, \"Themes\")\n : wrapTab(ThemesTab, \"Themes\");\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { useSettings } from \"@api/Settings\";\nimport { Button } from \"@components/Button\";\nimport { Card } from \"@components/Card\";\nimport { Divider } from \"@components/Divider\";\nimport { Flex } from \"@components/Flex\";\nimport { FormSwitch } from \"@components/FormSwitch\";\nimport { Heading, HeadingSecondary } from \"@components/Heading\";\nimport { Link } from \"@components/Link\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { SettingsTab, wrapTab } from \"@components/settings/tabs/BaseTab\";\nimport { Margins } from \"@utils/margins\";\nimport { useAwaiter } from \"@utils/react\";\nimport { getRepo, isNewer, UpdateLogger } from \"@utils/updater\";\nimport { React } from \"@webpack/common\";\n\nimport gitHash from \"~git-hash\";\n\nimport { HashLink, Newer, Updatable } from \"./Components\";\n\ninterface CommonProps {\n repo: string;\n repoPending: boolean;\n}\n\nfunction EquibopSection() {\n if (!IS_EQUIBOP) return null;\n\n const [isEquibopOutdated] = useAwaiter(VesktopNative.app.isOutdated, { fallbackValue: false });\n\n return (\n \n \n Equibop & Equicord\n Equibop and Equicord are two separate things. This updater is for Equicord.\n \n You receive separate popups for Equibop updates. You can also manually update by installing the latest version.\n \n \n\n {isEquibopOutdated && (\n \n Equibop Outdated\n \n Your version of Equibop is outdated!\n \n \n \n )}\n \n );\n}\n\nfunction Updater() {\n const settings = useSettings([\"autoUpdate\", \"autoUpdateNotification\"]);\n\n const [repo, err, repoPending] = useAwaiter(getRepo, { fallbackValue: \"Loading...\" });\n\n React.useEffect(() => {\n if (err)\n UpdateLogger.error(\"Failed to retrieve repo\", err);\n }, [err]);\n\n const commonProps: CommonProps = {\n repo,\n repoPending\n };\n\n return (\n \n \n Update Preferences\n \n Control how Equicord keeps itself up to date. You can choose to update automatically in the background or be notified when new updates are available.\n \n\n
\n settings.autoUpdate = v}\n hideBorder\n />\n settings.autoUpdateNotification = v}\n disabled={!settings.autoUpdate}\n hideBorder\n />\n
\n\n \n\n Repository\n \n This is the GitHub repository where Equicord fetches updates from.\n \n \n {repoPending\n ? repo\n : err\n ? \"Failed to retrieve - check console\"\n : (\n \n {repo.split(\"/\").slice(-2).join(\"/\")}\n \n )\n }\n {\" \"}()\n \n\n \n\n Updates\n {isNewer ? : }\n
\n );\n}\n\nexport default IS_UPDATER_DISABLED\n ? null\n : wrapTab(Updater, \"Updater\");\n", ":root {\n --vc-donatebutton: #ffc1cbc2;\n --vc-donatebutton-secondary: #f7536fe5;\n}\n\n.vc-donatebutton {\n background-color: var(--background-base-low) !important;\n border-color: var(--vc-donatebutton) !important;\n filter: brightness(1);\n border-width: .1rem !important;\n border-style: solid !important;\n}\n\n.vc-donatebutton:hover {\n background-color: var(--vc-donatebutton) !important;\n border-color: transparent !important;\n}\n\n\n.vc-joindiscordbutton {\n background-color: var(--channeltextarea-background) !important;\n}\n\n.vc-joindiscordbutton:hover {\n background-color: var(--redesign-button-tertiary-pressed-background) !important;\n}\n\n.vc-settings-card-buttons {\n display: flex;\n gap: 1em !important;\n margin-left: .2rem;\n margin-bottom: .2rem;\n}\n\n.vc-settingbuttons {\n border-radius: 5px !important;\n}\n\n.form-switch-warning {\n font-size: 16px;\n background-color: rgb(240 71 71 / 10%);\n color: rgb(240 71 71);\n border: 1px solid rgb(240 71 71 / 60%);\n border-radius: 4px;\n font-weight: 500;\n padding: 6px 10px;\n text-align: center;\n margin-top: 10px;\n}\n\n.vc-vencord-tab-settings-link {\n color: var(--text-link);\n display: inline-block;\n}", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { BackupRestoreIcon, CloudIcon, LogIcon, MainSettingsIcon, PaintbrushIcon, PatchHelperIcon, PluginsIcon, UpdaterIcon } from \"@components/Icons\";\nimport {\n BackupAndRestoreTab,\n ChangelogTab,\n CloudTab,\n PatchHelperTab,\n PluginsTab,\n ThemesTab,\n UpdaterTab,\n VencordTab,\n} from \"@components/settings\";\nimport { gitHashShort } from \"@shared/vencordUserAgent\";\nimport { Devs } from \"@utils/constants\";\nimport { isTruthy } from \"@utils/guards\";\nimport definePlugin, { IconProps, OptionType } from \"@utils/types\";\nimport { waitFor } from \"@webpack\";\nimport { React } from \"@webpack/common\";\nimport type { ComponentType, PropsWithChildren, ReactNode } from \"react\";\n\nconst enum LayoutType {\n ROOT = 0,\n SECTION = 1,\n SIDEBAR_ITEM = 2,\n PANEL = 3,\n SPLIT = 4,\n CATEGORY = 5,\n ACCORDION = 6,\n LIST = 7,\n RELATED = 8,\n FIELD_SET = 9,\n TAB_ITEM = 10,\n STATIC = 11,\n BUTTON = 12,\n TOGGLE = 13,\n SLIDER = 14,\n SELECT = 15,\n RADIO = 16,\n NAVIGATOR = 17,\n CUSTOM = 18\n}\n\nlet LayoutTypes = {\n SECTION: 1,\n SIDEBAR_ITEM: 2,\n PANEL: 3,\n CATEGORY: 5,\n CUSTOM: 19,\n};\nwaitFor([\"SECTION\", \"SIDEBAR_ITEM\", \"PANEL\", \"CUSTOM\"], v => LayoutTypes = v);\n\nconst enum SectionType {\n HEADER = \"HEADER\",\n DIVIDER = \"DIVIDER\",\n CUSTOM = \"CUSTOM\"\n}\n\ntype SettingsLocation =\n | \"top\"\n | \"aboveNitro\"\n | \"belowNitro\"\n | \"aboveActivity\"\n | \"belowActivity\"\n | \"bottom\";\n\ninterface SettingsLayoutNode {\n type: LayoutType;\n key?: string;\n legacySearchKey?: string;\n getLegacySearchKey?(): string;\n useLabel?(): string;\n useTitle?(): string;\n buildLayout?(): SettingsLayoutNode[];\n icon?(): ReactNode;\n render?(): ReactNode;\n StronglyDiscouragedCustomComponent?(): ReactNode;\n}\n\ninterface EntryOptions {\n key: string;\n title: string;\n panelTitle?: string;\n Component: ComponentType<{}>;\n Icon: ComponentType;\n}\n\ninterface SettingsLayoutBuilder {\n key?: string;\n buildLayout(): SettingsLayoutNode[];\n}\n\nconst settings = definePluginSettings({\n settingsLocation: {\n type: OptionType.SELECT,\n description: \"Where to put the Equicord settings section\",\n options: [\n { label: \"At the very top\", value: \"top\" },\n { label: \"Above Billing section\", value: \"aboveNitro\", default: true },\n { label: \"Below Billing section\", value: \"belowNitro\" },\n { label: \"Above Games & Apps Settings\", value: \"aboveActivity\" },\n { label: \"Below Games & Apps Settings\", value: \"belowActivity\" },\n { label: \"At the very bottom\", value: \"bottom\" },\n ] as { label: string; value: SettingsLocation; default?: boolean; }[]\n },\n includeVencordInfoWhenCopying: {\n type: OptionType.BOOLEAN,\n description: \"Also copy Equicord info (Equicord, Electron, Chromium) when clicking the version info in the bottom left area of the Settings page\",\n default: true\n }\n});\n\nexport default definePlugin({\n name: \"Settings\",\n description: \"Adds Settings UI and debug info\",\n authors: [Devs.Ven, Devs.Megu],\n tags: [\"Utility\"],\n required: true,\n\n settings,\n\n patches: [\n {\n find: \"#{intl::COPY_VERSION}\",\n replacement: [\n {\n match: /\\.RELEASE_CHANNEL/,\n replace: \"$&.replace(/^./, c => c.toUpperCase())\"\n },\n {\n match: /\"text-xxs\\/normal\".{0,300}?(?=null!=(\\i)&&(.{0,20}\\i\\.\\i.{0,200}?,children:).{0,15}?(\"span\"),{className:(\\i\\.\\i),children:\\[\"Build Override: \",\\1\\.id,\\i\\]\\}\\)\\}\\))/,\n replace: (m, _buildOverride, makeRow, component, className) => {\n return `${m},$self.makeInfoElements(${component},${className}).map(e=>${makeRow}e})),`;\n }\n },\n {\n match: /copyValue:\\i\\.join\\(\" \"\\)/g,\n replace: \"$& + $self.getInfoString()\"\n }\n ]\n },\n {\n find: \".buildLayout().map\",\n replacement: {\n match: /(\\i)\\.buildLayout\\(\\)(?=\\.map)/,\n replace: \"$self.buildLayout($1)\"\n }\n }\n ],\n\n buildEntry(options: EntryOptions): SettingsLayoutNode {\n const { key, title, panelTitle = title, Component, Icon } = options;\n\n const panel: SettingsLayoutNode = {\n key: key + \"_panel\",\n type: LayoutTypes.PANEL,\n useTitle: () => panelTitle,\n buildLayout: () => [{\n type: LayoutTypes.CATEGORY,\n key: key + \"_category\",\n buildLayout: () => [{\n type: LayoutTypes.CUSTOM,\n key: key + \"_custom\",\n Component: Component,\n useSearchTerms: () => [title]\n }]\n }]\n };\n\n return ({\n key,\n type: LayoutTypes.SIDEBAR_ITEM,\n useTitle: () => title,\n icon: () => ,\n buildLayout: () => [panel]\n });\n },\n\n buildLayout(originalLayoutBuilder: SettingsLayoutBuilder) {\n const layout = originalLayoutBuilder.buildLayout();\n if (originalLayoutBuilder.key !== \"$Root\") return layout;\n if (!Array.isArray(layout)) return layout;\n if (layout.some(s => s?.key === \"equicord_section\")) return layout;\n\n const { buildEntry } = this;\n\n const equicordEntries: SettingsLayoutNode[] = [\n buildEntry({\n key: \"equicord_main\",\n title: \"Equicord\",\n panelTitle: \"Equicord Settings\",\n Component: VencordTab,\n Icon: MainSettingsIcon\n }),\n buildEntry({\n key: \"equicord_plugins\",\n title: \"Plugins\",\n Component: PluginsTab,\n Icon: PluginsIcon\n }),\n buildEntry({\n key: \"equicord_themes\",\n title: \"Themes\",\n Component: ThemesTab,\n Icon: PaintbrushIcon\n }),\n !IS_UPDATER_DISABLED && UpdaterTab && buildEntry({\n key: \"equicord_updater\",\n title: \"Updater\",\n panelTitle: \"Equicord Updater\",\n Component: UpdaterTab,\n Icon: UpdaterIcon\n }),\n buildEntry({\n key: \"equicord_changelog\",\n title: \"Changelog\",\n Component: ChangelogTab,\n Icon: LogIcon,\n }),\n buildEntry({\n key: \"equicord_cloud\",\n title: \"Cloud\",\n panelTitle: \"Equicord Cloud\",\n Component: CloudTab,\n Icon: CloudIcon\n }),\n buildEntry({\n key: \"equicord_backup_restore\",\n title: \"Backup & Restore\",\n Component: BackupAndRestoreTab,\n Icon: BackupRestoreIcon\n }),\n !IS_STANDALONE && PatchHelperTab && buildEntry({\n key: \"equicord_patch_helper\",\n title: \"Patch Helper\",\n Component: PatchHelperTab,\n Icon: PatchHelperIcon\n }),\n ...this.customEntries.map(buildEntry)\n ].filter(isTruthy);\n\n const equicordSection: SettingsLayoutNode = {\n key: \"equicord_section\",\n type: LayoutTypes.SECTION,\n useTitle: () => \"Equicord Settings\",\n buildLayout: () => equicordEntries\n };\n\n const { settingsLocation } = settings.store;\n\n const places: Record = {\n top: \"user_section\",\n aboveNitro: \"billing_section\",\n belowNitro: \"billing_section\",\n aboveActivity: \"games_and_apps_section\",\n belowActivity: \"games_and_apps_section\",\n bottom: \"utility_section\"\n };\n\n const key = places[settingsLocation] ?? places.top;\n let idx = layout.findIndex(s => typeof s?.key === \"string\" && s.key === key);\n\n if (idx === -1) {\n idx = 2;\n } else if (settingsLocation.startsWith(\"below\")) {\n idx += 1;\n }\n\n layout.splice(idx, 0, equicordSection);\n\n return layout;\n },\n\n customSections: [] as ((SectionTypes: Record) => { section: string; element: ComponentType; label: string; id?: string; })[],\n customEntries: [] as EntryOptions[],\n\n get electronVersion() {\n return VencordNative.native.getVersions().electron ?? window.legcord?.electron ?? null;\n },\n\n get chromiumVersion() {\n try {\n return (\n VencordNative.native.getVersions().chrome ??\n // @ts-expect-error userAgentData types\n navigator.userAgentData?.brands?.find(\n (b: { brand: string; }) => b.brand === \"Chromium\" || b.brand === \"Google Chrome\",\n )?.version ??\n null\n );\n } catch {\n return null;\n }\n },\n\n getVersionInfo(support = true) {\n let version = \"\";\n\n if (IS_DEV) version = \"Dev Build\";\n if (IS_WEB) version = \"Web\";\n if (IS_VESKTOP) version = `Vesktop v${VesktopNative.app.getVersion()}`;\n if (IS_EQUIBOP) version = `Equibop v${VesktopNative.app.getVersion()}`;\n if (IS_STANDALONE) version = \"Standalone\";\n\n return support && version ? ` (${version})` : version;\n },\n\n getInfoRows() {\n const { electronVersion, chromiumVersion, getVersionInfo } = this;\n\n const rows = [`Equicord ${gitHashShort}${getVersionInfo()}`];\n\n if (electronVersion) rows.push(`Electron ${electronVersion}`);\n if (chromiumVersion) rows.push(`Chromium ${chromiumVersion}`);\n\n return rows;\n },\n\n getInfoString() {\n if (!settings.store.includeVencordInfoWhenCopying) return \"\";\n return \"\\n\" + this.getInfoRows().join(\"\\n\");\n },\n\n makeInfoElements(Component: ComponentType>, className: string) {\n return this.getInfoRows().map((text, i) =>\n {text}\n );\n }\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Flex } from \"@components/Flex\";\nimport { DonateButton, InviteButton } from \"@components/settings/DonateButton\";\nimport BadgeAPI from \"@plugins/_api/badges\";\nimport { DONOR_ROLE_ID, VC_GUILD_ID } from \"@utils/constants\";\nimport { GuildMemberStore } from \"@webpack/common\";\n\nexport const isDonor = (userId: string) => !!(\n BadgeAPI.getDonorBadges(userId)?.length > 0\n || GuildMemberStore?.getMember(VC_GUILD_ID, userId)?.roles.includes(DONOR_ROLE_ID)\n);\n\nexport function DonateButtonComponent({ donated = false }) {\n return (\n \n \n \n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { useSettings } from \"@api/Settings\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { Heading } from \"@components/Heading\";\nimport { IS_MAC } from \"@utils/constants\";\nimport { Margins } from \"@utils/margins\";\nimport { identity } from \"@utils/misc\";\nimport { Select } from \"@webpack/common\";\n\nexport function MacOSVibrancySettings() {\n const settings = useSettings([\"macosVibrancyStyle\"]);\n\n if (!IS_MAC || IS_WEB) return null;\n\n return (\n \n MacOS Window vibrancy style (requires restart)\n settings.macosVibrancyStyle = v}\n isSelected={v => settings.macosVibrancyStyle === v}\n serialize={identity}\n />\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { useSettings } from \"@api/Settings\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { Heading } from \"@components/Heading\";\nimport { Margins } from \"@components/margins\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { IS_WINDOWS } from \"@utils/constants\";\nimport { Select } from \"@webpack/common\";\n\nexport function WindowsMaterialSettings() {\n const settings = useSettings([\"windowsMaterial\"]);\n\n if (!IS_WINDOWS || IS_WEB || !VencordNative.native.supportsWindowsMaterial()) return null;\n\n return (\n \n Background Material\n \n Windows transparent background effects. You need a theme that supports transparency or this will do nothing. A restart is required after changing this setting.\n \n\n (settings.windowsMaterial = v)}\n isSelected={v => v === settings.windowsMaterial}\n serialize={s => s}\n />\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./VencordTab.css\";\n\nimport { openNotificationLogModal } from \"@api/Notifications/notificationLog\";\nimport { useSettings } from \"@api/Settings\";\nimport { Button } from \"@components/Button\";\nimport { Divider } from \"@components/Divider\";\nimport { FormSwitch } from \"@components/FormSwitch\";\nimport { Heading } from \"@components/Heading\";\nimport { FolderIcon, GithubIcon, LogIcon, PaintbrushIcon, RestartIcon } from \"@components/Icons\";\nimport { Notice } from \"@components/Notice\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { openContributorModal, openPluginModal, SettingsTab, wrapTab } from \"@components/settings\";\nimport { QuickAction, QuickActionCard } from \"@components/settings/QuickAction\";\nimport { SpecialCard } from \"@components/settings/SpecialCard\";\nimport BadgeAPI from \"@plugins/_api/badges\";\nimport SettingsPlugin from \"@plugins/_core/settings\";\nimport { gitRemote } from \"@shared/vencordUserAgent\";\nimport { DONOR_ROLE_ID, GUILD_ID, IS_WINDOWS, VC_DONOR_ROLE_ID, VC_GUILD_ID } from \"@utils/constants\";\nimport { classNameFactory } from \"@utils/css\";\nimport { Margins } from \"@utils/margins\";\nimport { isAnyPluginDev } from \"@utils/misc\";\nimport { relaunch } from \"@utils/native\";\nimport { Alerts, GuildMemberStore, React, useMemo, UserStore } from \"@webpack/common\";\n\nimport { DonateButtonComponent } from \"./DonateButton\";\nimport { MacOSVibrancySettings } from \"./MacVibrancySettings\";\nimport { NotificationSection } from \"./NotificationSettings\";\nimport { WindowsMaterialSettings } from \"./WindowsMaterialSettings\";\n\nconst DEFAULT_DONATE_IMAGE = \"https://cdn.discordapp.com/emojis/1026533090627174460.png\";\nconst SHIGGY_DONATE_IMAGE = \"https://equicord.org/assets/favicon.png\";\n\nconst VENNIE_DONATOR_IMAGE = \"https://cdn.discordapp.com/emojis/1238120638020063377.png\";\nconst COZY_CONTRIB_IMAGE = \"https://cdn.discordapp.com/emojis/1026533070955872337.png\";\n\nconst DONOR_BACKGROUND_IMAGE = \"https://media.discordapp.net/stickers/1311070116305436712.png?size=2048\";\nconst CONTRIB_BACKGROUND_IMAGE = \"https://media.discordapp.net/stickers/1311070166481895484.png?size=2048\";\n\nconst cl = classNameFactory(\"vc-vencord-tab-\");\n\ntype KeysOfType = {\n [K in keyof Object]: Object[K] extends Type ? K : never;\n}[keyof Object];\n\nfunction Switches() {\n const settings = useSettings([\"useQuickCss\", \"enableReactDevtools\", \"mainWindowFrameless\", \"frameless\", \"winNativeTitleBar\", \"transparent\", \"winCtrlQ\", \"disableMinSize\"]);\n\n const Switches = [\n {\n key: \"useQuickCss\",\n title: \"Enable Custom CSS\",\n description: \"Apply your configured QuickCSS\"\n },\n (!IS_WEB && !IS_DISCORD_DESKTOP || !IS_WINDOWS) && {\n key: \"mainWindowFrameless\",\n title: \"Disable the Main Window Frame\",\n description: \"Remove the native window frame for a cleaner look. You can still move the window by dragging the title bar area.\",\n restartRequired: true,\n },\n !IS_WEB && (!IS_DISCORD_DESKTOP || !IS_WINDOWS\n ? {\n key: \"frameless\",\n title: \"Disable All Window Frames\",\n description: \"Remove the native window frame for a cleaner look. You can still move the window by dragging the title bar area.\",\n restartRequired: true,\n }\n : {\n key: \"winNativeTitleBar\",\n title: \"Use Windows' native title bar instead of Discord's custom one\",\n description: \"Replace Discord's custom title bar with the standard Windows title bar. This may improve compatibility with some window management tools.\",\n restartRequired: true,\n }\n ),\n !IS_WEB && {\n key: \"transparent\",\n title: \"Enable Window Transparency\",\n description: \"Make the Discord window transparent. A theme that supports transparency is required or this will do nothing.\",\n restartRequired: true,\n warning: IS_WINDOWS\n ? \"This will stop the window from being resizable and prevents you from snapping the window to screen edges.\"\n : \"This will stop the window from being resizable.\",\n },\n IS_DISCORD_DESKTOP && {\n key: \"disableMinSize\",\n title: \"Disable Minimum Window Size\",\n description: \"Allows you to resize the window to any size, even smaller than Discord's minimum size\",\n restartRequired: true\n },\n !IS_WEB && IS_WINDOWS && {\n key: \"winCtrlQ\",\n title: \"Register Ctrl+Q as shortcut to close Discord\",\n description: \"Add Ctrl+Q as a keyboard shortcut to close Discord. This provides an alternative to Alt+F4 for quickly closing the application.\",\n restartRequired: true,\n },\n !IS_WEB && {\n key: \"enableReactDevtools\",\n title: \"Enable React Developer Tools\",\n description: \"Mainly useful for plugin developers. Ignore this if you don't know what it is\",\n restartRequired: true\n },\n ] satisfies Array;\n title: string;\n description?: string;\n restartRequired?: boolean;\n warning?: string;\n }>;\n\n return Switches.map(setting => {\n if (!setting) {\n return null;\n }\n\n const { key, title, description, restartRequired, warning } = setting;\n\n return (\n \n {description}\n \n {warning}\n \n \n ) : (\n description\n )\n }\n value={settings[key]}\n hideBorder\n onChange={v => {\n settings[key] = v;\n\n if (restartRequired) {\n Alerts.show({\n title: \"Restart Required\",\n body: \"A restart is required to apply this change\",\n confirmText: \"Restart now\",\n cancelText: \"Later!\",\n onConfirm: relaunch\n });\n }\n }}\n />\n );\n });\n}\n\nfunction EquicordSettings() {\n const donateImage = useMemo(() =>\n Math.random() > 0.5 ? DEFAULT_DONATE_IMAGE : SHIGGY_DONATE_IMAGE,\n []\n );\n\n const user = UserStore?.getCurrentUser();\n\n return (\n \n {(isEquicordDonor(user?.id) || isVencordDonor(user?.id)) ? (\n \n \n \n ) : (\n \n \n \n )}\n {isAnyPluginDev(user?.id) && (\n \n openContributorModal(user)}\n className=\"vc-contrib-button\"\n >\n \n See what you've contributed to\n \n \n )}\n\n Quick Actions\n \n Common actions you might want to perform. These shortcuts give you quick access to frequently used features without navigating through menus.\n \n\n \n \n VencordNative.quickCss.openEditor()}\n />\n {!IS_WEB && (\n \n )}\n {!IS_WEB && (\n VencordNative.settings.openFolder()}\n />\n )}\n \n VencordNative.native.openExternal(\n \"https://github.com/\" + gitRemote,\n )\n }\n />\n \n\n \n\n Client Settings\n \n Configure how Equicord behaves and integrates with Discord. These settings affect the Discord client's appearance and behavior.\n \n \n You can customize where this settings section appears in Discord's settings menu by configuring the{\" \"}\n openPluginModal(SettingsPlugin)}\n style={{ cursor: \"pointer\", color: \"var(--text-link)\" }}\n >\n Settings Plugin\n .\n \n\n \n\n \n \n\n \n \n );\n}\n\nexport default wrapTab(EquicordSettings, \"Equicord Settings\");\n\nexport function isEquicordDonor(userId: string): boolean {\n const donorBadges = BadgeAPI.getEquicordDonorBadges(userId);\n return GuildMemberStore.getMember(GUILD_ID, userId)?.roles.includes(DONOR_ROLE_ID) || !!donorBadges;\n}\n\nexport function isVencordDonor(userId: string): boolean {\n const donorBadges = BadgeAPI.getDonorBadges(userId);\n return GuildMemberStore.getMember(VC_GUILD_ID, userId)?.roles.includes(VC_DONOR_ROLE_ID) || !!donorBadges;\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport \"./styles.css\";\n\nexport * from \"./BaseTab\";\nexport { default as ChangelogTab } from \"./changelog\";\nexport { default as PatchHelperTab } from \"./patchHelper\";\nexport { default as PluginsTab } from \"./plugins\";\nexport { openContributorModal } from \"./plugins/ContributorModal\";\nexport { openPluginModal } from \"./plugins/PluginModal\";\nexport { default as BackupAndRestoreTab } from \"./sync/BackupAndRestoreTab\";\nexport { default as CloudTab } from \"./sync/CloudTab\";\nexport { default as ThemesTab } from \"./themes\";\nexport { default as UpdaterTab } from \"./updater\";\nexport { default as VencordTab } from \"./vencord\";\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { Flex } from \"@components/Flex\";\nimport { Heading } from \"@components/Heading\";\nimport { Heart } from \"@components/Heart\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { DonateButton, TranslateButton } from \"@components/settings\";\nimport { Margins } from \"@utils/margins\";\nimport { Modal, openModal } from \"@webpack/common\";\n\nexport function VencordDonorModal() {\n openModal(props => (\n {\n props.onClose();\n VencordNative.native.openExternal(\"https://github.com/sponsors/Vendicated\");\n }}>\n \n \n \n Vencord Donor\n \n \n }\n >\n
\n \n \n \n \n
\n \n This Badge is a special perk for Vencord Donors\n \n \n Please consider supporting the development of Vencord by becoming a donor. It would mean a lot!!\n \n
\n
\n
\n \n \n \n
\n \n
\n ));\n}\n\nexport function EquicordDonorModal() {\n openModal(props => (\n {\n props.onClose();\n VencordNative.native.openExternal(\"https://github.com/sponsors/thororen1234\");\n }}>\n \n \n \n Equicord Donor\n \n \n }\n >\n
\n \n \n \n \n
\n \n This Badge is a special perk for Equicord (Not Vencord) Donors\n \n \n Please consider supporting the development of Equicord by becoming a donor. It would mean a lot! :3\n \n
\n
\n
\n \n \n \n
\n \n
\n ));\n}\n\nexport function EquicordTranslatorModal() {\n openModal(props => (\n {\n props.onClose();\n }}>\n \n \n Equicord Translator\n \n \n }\n >\n
\n \n \n \n
\n \n Awarded to contributors who expand Equicord\u2019s language support by translating content for the community.\n \n
\n
\n
\n \n \n \n
\n \n
\n ));\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./fixDiscordBadgePadding.css\";\n\nimport { _getBadges, BadgePosition, BadgeUserArgs, ProfileBadge } from \"@api/Badges\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { CopyIcon, LinkIcon } from \"@components/Icons\";\nimport { openContributorModal } from \"@components/settings/tabs\";\nimport { Devs } from \"@utils/constants\";\nimport { copyWithToast } from \"@utils/discord\";\nimport { Logger } from \"@utils/Logger\";\nimport { shouldShowContributorBadge, shouldShowEquicordContributorBadge } from \"@utils/misc\";\nimport definePlugin from \"@utils/types\";\nimport { ContextMenuApi, Menu, Toasts, UserStore } from \"@webpack/common\";\n\nimport Plugins, { PluginMeta } from \"~plugins\";\n\nimport { EquicordDonorModal, EquicordTranslatorModal, VencordDonorModal } from \"./modals\";\n\nconst CONTRIBUTOR_BADGE = \"https://cdn.discordapp.com/emojis/1092089799109775453.png?size=64\";\nconst EQUICORD_CONTRIBUTOR_BADGE = \"https://equicord.org/assets/favicon.png\";\nconst USERPLUGIN_CONTRIBUTOR_BADGE = \"https://equicord.org/assets/icons/misc/userplugin.png\";\n\nconst ContributorBadge: ProfileBadge = {\n id: \"vencord_contributor_badge\",\n description: \"Vencord Contributor\",\n iconSrc: CONTRIBUTOR_BADGE,\n position: BadgePosition.START,\n shouldShow: ({ userId }) => shouldShowContributorBadge(userId),\n onClick: (_, { userId }) => openContributorModal(UserStore.getUser(userId))\n};\n\nconst EquicordContributorBadge: ProfileBadge = {\n id: \"equicord_contributor_badge\",\n description: \"Equicord Contributor\",\n iconSrc: EQUICORD_CONTRIBUTOR_BADGE,\n position: BadgePosition.START,\n shouldShow: ({ userId }) => shouldShowEquicordContributorBadge(userId),\n onClick: (_, { userId }) => openContributorModal(UserStore.getUser(userId)),\n props: {\n style: {\n borderRadius: \"50%\",\n transform: \"scale(0.9)\"\n }\n },\n};\n\nconst UserPluginContributorBadge: ProfileBadge = {\n id: \"user_plugin_contributor_badge\",\n description: \"User Plugin Contributor\",\n iconSrc: USERPLUGIN_CONTRIBUTOR_BADGE,\n position: BadgePosition.START,\n shouldShow: ({ userId }) => {\n if (!IS_DEV) return false;\n const allPlugins = Object.values(Plugins);\n return allPlugins.some(p => {\n const pluginMeta = PluginMeta[p.name];\n return pluginMeta?.userPlugin && p.authors.some(a => a.id.toString() === userId);\n });\n },\n onClick: (_, { userId }) => openContributorModal(UserStore.getUser(userId)),\n props: {\n style: {\n borderRadius: \"50%\",\n transform: \"scale(0.9)\"\n }\n },\n};\n\nlet DonorBadges = {} as Record>>;\nlet EquicordDonorBadges = {} as Record>>;\n\nasync function loadBadges(url: string, noCache = false) {\n const init = {} as RequestInit;\n if (noCache) init.cache = \"no-cache\";\n\n return await fetch(url, init).then(r => r.json());\n}\n\nasync function loadAllBadges(noCache = false) {\n const vencordBadges = await loadBadges(\"https://badges.vencord.dev/badges.json\", noCache);\n const equicordBadges = await loadBadges(\"https://badge.equicord.org/badges.json\", noCache);\n\n DonorBadges = vencordBadges;\n EquicordDonorBadges = equicordBadges;\n}\n\nlet intervalId: any;\n\nexport function BadgeContextMenu({ badge }: { badge: Omit & BadgeUserArgs; }) {\n return (\n \n {badge.description && (\n copyWithToast(badge.description!)}\n leadingAccessory={{ type: \"icon\", icon: CopyIcon }}\n />\n )}\n {badge.iconSrc && (\n copyWithToast(badge.iconSrc!)}\n leadingAccessory={{ type: \"icon\", icon: LinkIcon }}\n />\n )}\n \n );\n}\n\nexport default definePlugin({\n name: \"BadgeAPI\",\n description: \"API to add badges to users\",\n authors: [Devs.Megu, Devs.Ven, Devs.TheSun],\n required: true,\n patches: [\n {\n find: \"#{intl::PROFILE_USER_BADGES}\",\n replacement: [\n {\n match: /alt:\" \",\"aria-hidden\":!0,src:.{0,50}(\\i).iconSrc/,\n replace: \"...$1.props,$&\"\n },\n // Path with 2026-04-badge-discovery OFF\n {\n match: /(?<=forceOpen:.{0,40}?ariaHidden:!0,)children:(?=.{0,50}?(\\i)\\.id)/,\n replace: \"children:$1.component?$self.renderBadgeComponent({...$1}):\"\n },\n // Path with 2026-04-badge-discovery ON\n {\n match: /(?<=fallbackIconSrc:.{0,50}?)children:(?=.{0,50}?(\\i)\\.id)/,\n replace: \"children:$1.component?$self.renderBadgeComponent({...$1}):\"\n },\n // handle onClick and onContextMenu\n {\n match: /href:(\\i)\\.link/,\n replace: \"...$self.getBadgeMouseEventHandlers($1),$&\"\n }\n ]\n },\n {\n find: \"getLegacyUsername(){\",\n replacement: {\n match: /getBadges\\(\\)\\{.{0,100}?return\\[/,\n replace: \"$&...$self.getBadges(this),\"\n }\n }\n ],\n\n // for access from the console or other plugins\n get DonorBadges() {\n return DonorBadges;\n },\n\n get EquicordDonorBadges() {\n return EquicordDonorBadges;\n },\n\n toolboxActions: {\n async \"Refetch Badges\"() {\n await loadAllBadges(true);\n Toasts.show({\n id: Toasts.genId(),\n message: \"Successfully refetched badges!\",\n type: Toasts.Type.SUCCESS\n });\n }\n },\n\n userProfileBadges: [ContributorBadge, EquicordContributorBadge, UserPluginContributorBadge],\n\n async start() {\n await loadAllBadges();\n clearInterval(intervalId);\n intervalId = setInterval(loadAllBadges, 1000 * 60 * 30); // 30 minutes\n },\n\n async stop() {\n clearInterval(intervalId);\n },\n\n getBadges(profile: { userId: string; guildId: string; }) {\n if (!profile) return [];\n\n try {\n return _getBadges(profile);\n } catch (e) {\n new Logger(\"BadgeAPI#getBadges\").error(e);\n return [];\n }\n },\n\n renderBadgeComponent: ErrorBoundary.wrap((badge: ProfileBadge & BadgeUserArgs) => {\n const Component = badge.component!;\n return ;\n }, { noop: true }),\n\n getBadgeMouseEventHandlers(badge: ProfileBadge & BadgeUserArgs) {\n const handlers = {} as Record void>;\n\n if (!badge) return handlers; // sanity check\n\n const { onClick, onContextMenu } = badge;\n\n if (onClick) handlers.onClick = e => onClick(e, badge);\n if (onContextMenu) handlers.onContextMenu = e => onContextMenu(e, badge);\n\n return handlers;\n },\n\n getDonorBadges(userId: string) {\n return DonorBadges[userId]?.map((badge, idx) => ({\n id: `vencord_donor_badge_${idx}`,\n iconSrc: badge.badge,\n description: badge.tooltip,\n position: BadgePosition.START,\n props: {\n style: {\n borderRadius: \"50%\",\n transform: \"scale(0.9)\" // The image is a bit too big compared to default badges\n }\n },\n onContextMenu(event, badge) {\n ContextMenuApi.openContextMenu(event, () => );\n },\n onClick() {\n return VencordDonorModal();\n },\n } satisfies ProfileBadge));\n },\n\n getEquicordDonorBadges(userId: string) {\n return EquicordDonorBadges[userId]?.map((badge, idx) => ({\n id: `equicord_donor_badge_${idx}`,\n iconSrc: badge.badge,\n description: badge.tooltip,\n position: BadgePosition.START,\n props: {\n style: {\n borderRadius: \"50%\",\n transform: \"scale(0.9)\" // The image is a bit too big compared to default badges\n }\n },\n onContextMenu(event, badge) {\n ContextMenuApi.openContextMenu(event, () => );\n },\n onClick() {\n return badge.tooltip === \"Equicord Translator\" ? EquicordTranslatorModal() : EquicordDonorModal();\n },\n } satisfies ProfileBadge));\n }\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"ChatInputButtonAPI\",\n description: \"API to add buttons to the chat input\",\n authors: [Devs.Ven],\n\n patches: [\n {\n find: '\"sticker\")',\n replacement: [\n {\n match: /0===(\\i)\\.length(?=.{0,25}?\\(0,\\i\\.jsxs?\\)\\(.{0,75}?children:\\1)/,\n replace: \"(Vencord.Api.ChatButtons._injectButtons($1,arguments[0]),$&)\"\n },\n {\n match: /(?<=\"submit\"\\)\\).{0,100}\"div\",\\{className:\\i\\.\\i,children:)(\\i)\\}/,\n replace: \"Vencord.Api.ChatButtons._wrapButtons($1)}\"\n }\n ]\n }\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"CommandsAPI\",\n authors: [Devs.Arjix],\n description: \"Api required by anything that uses commands\",\n patches: [\n // obtain BUILT_IN_COMMANDS instance\n {\n find: ',\"tableflip\",\"unflip\"',\n replacement: [\n {\n // Matches BUILT_IN_COMMANDS. This is not exported so this is\n // the only way. _init() just returns the same object to make the\n // patch simpler\n\n // textCommands = builtInCommands.filter(...)\n match: /(?<=\\w=)(\\w)(\\.filter\\(.{0,60}tableflip)/,\n replace: \"Vencord.Api.Commands._init($1)$2\",\n }\n ],\n },\n // command error handling\n {\n find: \"Unexpected value for option\",\n replacement: {\n // return [2, cmd.execute(args, ctx)]\n match: /,(\\i)\\.execute\\((\\i),(\\i)\\)/,\n replace: (_, cmd, args, ctx) => `,Vencord.Api.Commands._handleCommand(${cmd}, ${args}, ${ctx})`\n }\n },\n // Show plugin name instead of \"Built-In\"\n {\n find: \"#{intl::COMMANDS_OPTIONAL_COUNT}\",\n replacement: [\n {\n match: /children:(?=\\i\\?\\?\\i\\?\\.name)(?<=command:(\\i),.+?)/,\n replace: \"children:$1.plugin??\"\n }\n ]\n }\n ],\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport { canonicalizeMatch } from \"@utils/patches\";\nimport definePlugin from \"@utils/types\";\nimport { Menu } from \"@webpack/common\";\n\n// duplicate values have multiple branches with different types. Just include all to be safe\nconst nameMap = {\n radio: \"MenuRadioItem\",\n separator: \"MenuSeparator\",\n checkbox: \"MenuCheckboxItem\",\n groupstart: \"MenuGroup\",\n\n control: \"MenuControlItem\",\n compositecontrol: \"MenuControlItem\",\n\n item: \"MenuItem\",\n customitem: \"MenuItem\",\n};\n\nexport default definePlugin({\n name: \"ContextMenuAPI\",\n description: \"API for adding/removing items to/from context menus.\",\n authors: [Devs.Nuckyz, Devs.Ven, Devs.Kyuuhachi],\n required: true,\n\n patches: [\n {\n find: \"navId:\",\n all: true,\n noWarn: true,\n replacement: [\n {\n match: /navId:(?=.+?([,}].*?\\)))/g,\n replace: (m, rest, ...args) => {\n if (rest.match(/}=.+/)) return m;\n const src = args[1]?.slice(Math.max(0, +args[0] - 2000), +args[0]);\n if (src && Math.max(src.lastIndexOf(\"PureComponent{\"), src.lastIndexOf(\"Component{\")) > src.lastIndexOf(\"function\")) return m;\n return `contextMenuAPIArguments:typeof arguments!=='undefined'?arguments:[],${m}`;\n }\n }\n ]\n },\n\n {\n find: \"Menu API only allows Items\",\n replacement: [\n // Patch the central context menu handler\n {\n match: /(?=let{navId:)(?<=function \\i\\((\\i)\\).+?)/,\n replace: \"$1=Vencord.Api.ContextMenu._usePatchContextMenu($1);\"\n },\n\n // Demangle Discord's Menu Item module\n {\n match: /(?<=(\\(\\i\\.type===(\\i\\.\\i)\\).{0,50}?navigable:.+Menu API).+?)}$/s,\n replace: (_, m) => {\n const registerCalls = [] as string[];\n\n const typeCheckRe = canonicalizeMatch(/\\(\\i\\.type===(\\i\\.\\i)\\)/g); // if (t.type === m.MenuItem)\n const pushTypeRe = /type:\"(\\w+)\"/g; // push({type:\"item\"})\n\n let typeMatch: RegExpExecArray | null;\n while ((typeMatch = typeCheckRe.exec(m)) !== null) {\n const component = typeMatch[1];\n // Set the starting index of the second regex to that of the first to start\n // matching from after the if\n pushTypeRe.lastIndex = typeCheckRe.lastIndex;\n\n // extract the first type: \"...\"\n const type = pushTypeRe.exec(m)?.[1];\n if (type && type in nameMap) {\n const name = nameMap[type];\n registerCalls.push(`$self.registerMenuItem(\"${name}\",${component})`);\n }\n }\n\n if (registerCalls.length < 6) {\n console.warn(\"[MenuItemDemanglerAPI] Expected to remap 6 items, only remapped\", registerCalls.length);\n }\n\n return `${registerCalls.join(\";\")};}`;\n },\n }\n ],\n },\n ],\n\n registerMenuItem(name: string, component: any) {\n Object.defineProperty(component, \"name\", { value: name });\n Menu[name] = component;\n }\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"DynamicImageModalAPI\",\n authors: [Devs.sadan, Devs.Nuckyz],\n description: \"Allows you to omit either width or height when opening an image modal\",\n patches: [\n {\n find: \".renderLinkComponent\",\n replacement: {\n // widthAndHeightPassed = w != null && w !== 0 && h == null || h === 0\n match: /(?<=\\i=)(null!=\\i&&0!==\\i)&&(null!=\\i&&0!==\\i)/,\n replace: \"($1)||($2)\"\n }\n }\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n(window.VencordStyles ??= new Map()).set(\"src/plugins/_api/memberListDecorators/style.css\", {\n name: \"src/plugins/_api/memberListDecorators/style.css\",\n source: \".vc-member-list-decorators-wrapper {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: 0.25em;\\n}\\n\\n.vc-member-list-decorators-wrapper:not(:empty) {\\n /* Margin to match default Discord decorators */\\n margin-left: 0.25em;\\n}\\n\\n[class*=\\\"withDisplayNameStyles\\\"] [class^=\\\"name\\\"] {\\n flex: initial;\\n}\",\n classNames: {},\n dom: null,\n});\n\nexport default \"src/plugins/_api/memberListDecorators/style.css\";\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nimport managedStyle from \"./style.css?managed\";\n\nexport default definePlugin({\n name: \"MemberListDecoratorsAPI\",\n description: \"API to add decorators to member list (both in servers and DMs)\",\n authors: [Devs.TheSun, Devs.Ven],\n\n managedStyle,\n\n patches: [\n {\n find: \"#{intl::GUILD_OWNER}),children:\",\n replacement: [\n {\n match: /children:\\[(?=.{0,300},lostPermissionTooltipText:)/,\n replace: \"children:[Vencord.Api.MemberListDecorators.__getDecorators(arguments[0],'guild'),\"\n }\n ]\n },\n {\n find: \"PrivateChannel.renderAvatar\",\n replacement: {\n match: /decorators:(\\i\\.isSystemDM\\(\\)\\?.{0,100}:null)/,\n replace: \"decorators:[Vencord.Api.MemberListDecorators.__getDecorators(arguments[0],'dm'),$1]\"\n }\n },\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"MessageAccessoriesAPI\",\n description: \"API to add message accessories.\",\n authors: [Devs.Cyn],\n patches: [\n {\n find: \"#{intl::REMOVE_ATTACHMENT_BODY}\",\n replacement: {\n match: /children:(\\[[^\\]]{0,100}?this.renderSuppressConfirmModal[^\\]]{0,100}?\\])/,\n replace: \"children:Vencord.Api.MessageAccessories._modifyAccessories($1,this?.props)\",\n },\n },\n ],\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n(window.VencordStyles ??= new Map()).set(\"src/plugins/_api/messageDecorations/style.css\", {\n name: \"src/plugins/_api/messageDecorations/style.css\",\n source: \".vc-message-decorations-wrapper {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n gap: 0.25em;\\n}\\n\\n.vc-message-decorations-wrapper:not(:empty) {\\n /* Margin to match default Discord decorators */\\n margin-left: 0.25em;\\n\\n /* Align vertically */\\n position: relative;\\n vertical-align: top;\\n top: 0.1rem;\\n height: calc(1rem + 4px);\\n max-height: calc(1rem + 4px)\\n}\\n\",\n classNames: {},\n dom: null,\n});\n\nexport default \"src/plugins/_api/messageDecorations/style.css\";\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nimport managedStyle from \"./style.css?managed\";\n\nexport default definePlugin({\n name: \"MessageDecorationsAPI\",\n description: \"API to add decorations to messages\",\n authors: [Devs.TheSun],\n\n managedStyle,\n\n patches: [\n {\n find: \"#{intl::GUILD_COMMUNICATION_DISABLED_ICON_TOOLTIP_BODY}\",\n replacement: {\n match: /#{intl::GUILD_COMMUNICATION_DISABLED_BOTTOM_SHEET_TITLE}.+?renderPopout:.+?(?=\\])/,\n replace: \"$&,Vencord.Api.MessageDecorations.__addDecorationsToMessage(arguments[0])\"\n }\n }\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"MessageEventsAPI\",\n description: \"Api required by anything using message events.\",\n authors: [Devs.Arjix, Devs.hunt, Devs.Ven],\n patches: [\n {\n find: \"#{intl::EDIT_TEXTAREA_HELP}\",\n replacement: {\n match: /(?<=,channel:\\i,message:\\i\\}\\)\\.then\\().+?(?=\\i\\.content!==this\\.props\\.message\\.content&&\\i\\((.+?)\\)\\})/,\n replace: (match, args) => \"\" +\n `async ${match}` +\n `if(await Vencord.Api.MessageEvents._handlePreEdit(${args}))` +\n \"return Promise.resolve({shouldClear:false,shouldRefocus:true});\"\n }\n },\n {\n find: \".handleSendMessage,onResize:\",\n replacement: {\n match: /(?<=channel:\\i\\}\\)\\.then\\()(?:async )?(\\i=>.+?let (\\i)=\\i\\.\\i\\.parse\\((\\i),.+?\\.getSendMessageOptions\\((\\{.+?\\})\\),.{0,100}?\\};)(?=.+?(\\i)\\.flags=)(?<=\\)\\(({.+?})\\)\\.then.+?)/,\n replace: (m, restCode, parsedMessage, channel, contentOptions, options, props) => \"async \" + restCode +\n `if(await Vencord.Api.MessageEvents._handlePreSend(${channel}.id,${parsedMessage},${options},${props},${contentOptions}))` +\n \"return{shouldClear:false,shouldRefocus:true};\"\n }\n },\n {\n find: '(\"interactionUsernameProfile',\n replacement: {\n match: /let\\{id:\\i}=(\\i),{id:\\i}=(\\i);return \\i\\.useCallback\\((\\i)=>\\{/,\n replace: (m, message, channel, event) =>\n `const vcMsg=${message},vcChan=${channel};${m}Vencord.Api.MessageEvents._handleClick(vcMsg,vcChan,${event});`\n }\n }\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"MessagePopoverAPI\",\n description: \"API to add buttons to message popovers.\",\n authors: [Devs.KingFish, Devs.Ven, Devs.Nuckyz],\n patches: [\n {\n find: \"#{intl::MESSAGE_UTILITIES_A11Y_LABEL}\",\n replacement: {\n match: /(?<=\\]\\}\\)),(.{0,40}togglePopout:.+?\\}\\))\\]\\}\\):null,(?<=\\((\\i),\\{label:.+?:null,(\\i)\\?\\(0,\\i\\.jsxs?\\)\\(\\i\\.Fragment.+?message:(\\i).+?)/,\n replace: (_, ReactButton, ButtonComponent, showReactButton, message) => \"\" +\n `]}):null,Vencord.Api.MessagePopover._buildPopoverElements(${ButtonComponent},${message}),${showReactButton}?${ReactButton}:null,`\n }\n }\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"MessageUpdaterAPI\",\n description: \"API for updating and re-rendering messages.\",\n authors: [Devs.Nuckyz],\n\n patches: [\n {\n // Message accessories have a custom logic to decide if they should render again, so we need to make it not ignore changed message reference\n find: \"}renderStickersAccessories(\",\n replacement: {\n match: /(?<=this.props,\\i,\\[)\"message\",/,\n replace: \"\"\n }\n }\n ]\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"NicknameIconsAPI\",\n description: \"API to add icons to the nickname, in profiles\",\n authors: [Devs.Nuckyz],\n patches: [\n {\n find: \"#{intl::USER_PROFILE_PRONOUNS}\",\n replacement: [\n {\n match: /(?<=children:\\i\\}\\):\\i,)null!=\\i/,\n replace: \"($&||!!Vencord.Api.NicknameIcons._renderIcons({userId:arguments[0].user?.id})?.length)\"\n },\n {\n match: /(?<=shouldUnderlineOnHover:null.{0,300})children:(\\i)(?=\\}\\)\\])/,\n replace: \"children:[...Vencord.Api.NicknameIcons._renderIcons({userId:arguments[0].user?.id}),$1]\"\n }\n ]\n }\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"NoticesAPI\",\n description: \"Fixes notices being automatically dismissed\",\n authors: [Devs.Ven],\n required: true,\n patches: [\n {\n find: '\"NoticeStore\"',\n replacement: [\n {\n match: /(?<=!1;)\\i=null;(?=.{0,80}getPremiumSubscription\\(\\))/g,\n replace: \"if(Vencord.Api.Notices.currentNotice)return false;$&\"\n },\n {\n match: /(?<=,NOTICE_DISMISS:function\\(\\i\\){)return null!=(\\i)/,\n replace: (m, notice) => `if(${notice}?.id==\"EquicordNotice\")return(${notice}=null,Vencord.Api.Notices.nextNotice(),true);${m}`\n }\n ]\n }\n ],\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"ServerListAPI\",\n authors: [Devs.kemo],\n description: \"Api required for plugins that modify the server list\",\n patches: [\n {\n find: \"#{intl::DISCODO_DISABLED}\",\n replacement: {\n match: /(?<=#{intl::DISCODO_DISABLED}.+?return)(\\(.{0,150}?tutorialId:\"friends-list\".+?}\\))(?=}function)/,\n replace: \"[$1].concat(Vencord.Api.ServerList.renderAll(Vencord.Api.ServerList.ServerListRenderPosition.Above))\"\n }\n },\n {\n find: \".setGuildsTree(\",\n replacement: [\n {\n match: /(?<=#{intl::SERVERS}\\),gap:\"xs\",children:)\\i\\.map\\(.{0,50}\\.length\\)/,\n replace: \"Vencord.Api.ServerList.renderAll(Vencord.Api.ServerList.ServerListRenderPosition.In).concat($&)\"\n },\n {\n match: /lastTargetNode.{0,25}\\?null:\\i,/,\n replace: \"$&...Vencord.Api.ServerList.renderAll(Vencord.Api.ServerList.ServerListRenderPosition.Below),\"\n }\n ]\n }\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"UserSettingsAPI\",\n description: \"Patches Discord's UserSettings to expose their group and name.\",\n authors: [Devs.Nuckyz],\n\n patches: [\n {\n find: \",updateSetting:\",\n replacement: [\n // Main setting definition\n {\n match: /\\.updateAsync\\(.+?(?=,useSetting:)/,\n replace: \"$&,userSettingsAPIGroup:arguments[0],userSettingsAPIName:arguments[1]\"\n },\n // Selective wrapper\n {\n match: /updateSetting:.{0,100}SELECTIVELY_SYNCED_USER_SETTINGS_UPDATE/,\n replace: \"userSettingsAPIGroup:arguments[0].userSettingsAPIGroup,userSettingsAPIName:arguments[0].userSettingsAPIName,$&\"\n },\n // Override wrapper\n {\n match: /updateSetting:.{0,60}USER_SETTINGS_OVERRIDE_CLEAR/,\n replace: \"userSettingsAPIGroup:arguments[0].userSettingsAPIGroup,userSettingsAPIName:arguments[0].userSettingsAPIName,$&\"\n }\n\n ]\n }\n ]\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2026 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\nimport { setColorPicker, setCreateScroller, setNewCustomizationSection, setRoleMemberPopout } from \"@webpack/common\";\n\nexport default definePlugin({\n name: \"ConcatenatedComponentExtractor\",\n description: \"Extract components that have been concatenated by the bundler\",\n authors: [Devs.sadan],\n tags: [\"Developers\", \"Utility\"],\n required: true,\n\n patches: [\n {\n find: \"#{intl::USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR}),focusProps:\",\n replacement: {\n match: /(?=function (\\i)\\(\\i\\)\\{let\\{onChange:\\i,onClose:\\i,[^}]+?showEyeDropper:)/,\n replace: \"$self.setColorPicker($1);\"\n }\n },\n {\n find: /=\"ltr\",orientation:\\i=\"vertical\"[^}]+?customTheme:/,\n replacement: {\n match: /(?=function (\\i)\\(\\i,\\i,\\i\\)\\{.{0,20}?return \\i\\.forwardRef\\(function\\(\\i,\\i\\)\\{let\\{[^}]+?=\"ltr\",orientation:)/,\n replace: \"$self.setCreateScroller($1);\"\n }\n },\n {\n find: '(\"UserProfileModalV2EditingPanel\")',\n replacement: [\n {\n match: /function (\\i).{0,50}showNitroIcon:.{0,500}\\}\\),\\i\\]\\}\\)\\}/,\n replace: \"$&$self.setNewCustomizationSection($1);\"\n }\n ]\n },\n {\n find: \".ROLE_MENTION)\",\n replacement: {\n match: /function (\\i)(?=.+?renderPopout:.{0,20}\\1,\\{guildId:\\i,channelId:\\i)/,\n replace: \"$self.setRoleMemberPopout($1);$&\"\n }\n },\n ],\n\n setCreateScroller,\n setColorPicker,\n setNewCustomizationSection,\n setRoleMemberPopout,\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { Devs } from \"@utils/constants\";\nimport { Logger } from \"@utils/Logger\";\nimport definePlugin, { OptionType, StartAt } from \"@utils/types\";\nimport { WebpackRequire } from \"@vencord/discord-types/webpack\";\nimport { Flux, FluxDispatcher } from \"@webpack/common\";\n\nconst settings = definePluginSettings({\n disableAnalytics: {\n type: OptionType.BOOLEAN,\n description: \"Disable Discord's tracking (analytics/'science')\",\n default: true,\n restartNeeded: true\n }\n});\n\nexport default definePlugin({\n name: \"NoTrack\",\n description: \"Disable Discord's tracking (analytics/'science'), metrics and Sentry crash reporting\",\n authors: [Devs.Cyn, Devs.Ven, Devs.Nuckyz, Devs.Arrow],\n tags: [\"Utility\"],\n required: true,\n\n settings,\n\n patches: [\n {\n find: \"AnalyticsActionHandlers.handle\",\n predicate: () => settings.store.disableAnalytics,\n replacement: {\n match: /\\(0,\\i\\.analyticsTrackingStoreMaker\\)/,\n replace: \"$self.analyticsTrackingStoreMaker\",\n },\n },\n {\n find: \".METRICS_V2\",\n replacement: [\n {\n match: /this\\._intervalId=/,\n replace: \"this._intervalId=void 0&&\"\n },\n {\n match: /(?:increment|distribution)\\(\\i(?:,\\i)?\\){/g,\n replace: \"$&return;\"\n }\n ]\n },\n {\n find: \".BetterDiscord||null!=\",\n replacement: {\n // Make hasClientMods return false\n match: /(?=let \\i=window;)/,\n replace: \"return false;\"\n }\n }\n ],\n\n // The TRACK event takes an optional `resolve` property that is called when the tracking event was submitted to the server.\n // A few spots in Discord await this callback before continuing (most notably the Voice Debug Logging toggle).\n // Since we NOOP the AnalyticsActionHandlers module, there is no handler for the TRACK event, so we have to handle it ourselves\n flux: {\n TRACK(event) {\n event?.resolve?.();\n }\n },\n\n startAt: StartAt.Init,\n start() {\n // Sentry is initialized in its own WebpackInstance.\n // It has everything it needs preloaded, so, it doesn't include any chunk loading functionality.\n // Because of that, its WebpackInstance doesnt export wreq.m or wreq.c\n\n // To circuvent this and disable Sentry we are gonna hook when wreq.d of its WebpackInstance is set.\n // When that happens we are gonna forcefully throw an error and abort everything.\n Object.defineProperty(Function.prototype, \"d\", {\n configurable: true,\n\n set(this: WebpackRequire, esmDeclareFunc: WebpackRequire[\"d\"]) {\n Object.defineProperty(this, \"d\", {\n value: esmDeclareFunc,\n configurable: true,\n enumerable: true,\n writable: true\n });\n\n // Ensure this is most likely the Sentry WebpackInstance.\n // Function.g is a very generic property and is not uncommon for another WebpackInstance (or even a React component: ) to include it\n const { stack } = new Error();\n if (this.c != null || !stack?.includes(\"http\") || !String(this).includes(\"exports:{}\")) {\n return;\n }\n\n const assetPath = stack.match(/http.+?(?=:\\d+?:\\d+?$)/m)?.[0];\n if (!assetPath) {\n return;\n }\n\n const srcRequest = new XMLHttpRequest();\n srcRequest.open(\"GET\", assetPath, false);\n srcRequest.send();\n\n // Final condition to see if this is the Sentry WebpackInstance\n // This is matching window.DiscordSentry=, but without `window` to avoid issues on some proxies\n if (!srcRequest.responseText.includes(\".DiscordSentry=\")) {\n return;\n }\n\n new Logger(\"NoTrack\", \"#8caaee\").info(\"Disabling Sentry by erroring its WebpackInstance\");\n\n Reflect.deleteProperty(Function.prototype, \"d\");\n Reflect.deleteProperty(window, \"DiscordSentry\");\n\n throw new Error(\"Sentry successfully disabled\");\n }\n });\n\n Object.defineProperty(window, \"DiscordSentry\", {\n configurable: true,\n\n set() {\n new Logger(\"NoTrack\", \"#8caaee\").error(\"Failed to disable Sentry. Falling back to deleting window.DiscordSentry\");\n\n Reflect.deleteProperty(Function.prototype, \"d\");\n Reflect.deleteProperty(window, \"DiscordSentry\");\n }\n });\n },\n\n analyticsTrackingStoreMaker() {\n class AnalyticsTrackingStoreStub extends Flux.Store {\n static displayName = \"AnalyticsTrackingStore\";\n\n requestDrain() { }\n\n async submitEventsImmediately() {\n // This is supposed to return a Discord rest response but we can't know what the correct shape would be, because\n // 1. It's not used anywhere\n // 2. It takes a dynamic url\n // Instead we throw an error with the same structure as a Discord rest error which they probably should handle gracefully.\n // Discord also throws a plain object instead of Error class\n\n throw {\n ok: false,\n status: 500,\n body: {\n message: \"Analytics tracking is disabled by NoTrack\",\n code: 0\n },\n headers: {},\n text: JSON.stringify({\n message: \"Analytics tracking is disabled by NoTrack\",\n code: 0\n })\n };\n }\n }\n\n return new AnalyticsTrackingStoreStub(FluxDispatcher);\n }\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { showNotice } from \"@api/Notices\";\nimport { plugins, startDependenciesRecursive, startPlugin, stopPlugin } from \"@api/PluginManager\";\nimport { Settings } from \"@api/Settings\";\nimport { Alerts, Toasts } from \"@webpack/common\";\n\nfunction showErrorToast(message: string) {\n Toasts.show({\n message,\n type: Toasts.Type.FAILURE,\n id: Toasts.genId(),\n options: {\n position: Toasts.Position.BOTTOM\n }\n });\n}\n\nfunction restartPrompt(): Promise {\n return new Promise(resolve => {\n Alerts.show({\n title: \"Restart Required\",\n body: (\n <>\n

\n Some plugins require a restart to fully disable.\n

\n

Would you like to restart now?

\n \n ),\n confirmText: \"Restart Now\",\n cancelText: \"Later\",\n onConfirm: () => resolve(true),\n onCancel: () => resolve(false),\n });\n });\n}\n\nexport async function toggleEnabled(name: string) {\n let restartNeeded = false;\n function onRestartNeeded() {\n restartNeeded = true;\n }\n\n async function beforeReturn(settings: any, wasEnabled: boolean) {\n if (restartNeeded) {\n const confirmed = await restartPrompt();\n if (!confirmed) return false;\n\n settings.enabled = !wasEnabled;\n location.reload();\n return true;\n }\n\n return true;\n }\n\n const plugin = plugins[name];\n const settings = Settings.plugins[plugin.name];\n const isEnabled = () => settings.enabled ?? false;\n const wasEnabled = isEnabled();\n\n if (!wasEnabled) {\n const { restartNeeded, failures } = startDependenciesRecursive(plugin);\n if (failures.length) {\n console.error(`Failed to start dependencies for ${plugin.name}: ${failures.join(\", \")}`);\n showNotice(\"Failed to start dependencies: \" + failures.join(\", \"), \"Close\", () => null);\n return false;\n } else if (restartNeeded) {\n settings.enabled = true;\n onRestartNeeded();\n return await beforeReturn(settings, wasEnabled);\n }\n }\n\n if (plugin.patches?.length) {\n onRestartNeeded();\n return await beforeReturn(settings, wasEnabled);\n }\n\n if (wasEnabled && !plugin.started) {\n settings.enabled = !wasEnabled;\n return await beforeReturn(settings, wasEnabled);\n }\n\n const result = wasEnabled ? stopPlugin(plugin) : startPlugin(plugin);\n\n if (!result) {\n settings.enabled = false;\n const msg = `Error while ${wasEnabled ? \"stopping\" : \"starting\"} plugin ${plugin.name}`;\n console.error(msg);\n showErrorToast(msg);\n return false;\n }\n\n settings.enabled = !wasEnabled;\n return await beforeReturn(settings, wasEnabled);\n}\n\nexport function getWindowsName(release: string) {\n const build = parseInt(release.split(\".\")[2]);\n if (build >= 22000) return \"Windows 11\";\n if (build >= 10240) return \"Windows 10\";\n if (build >= 9200) return \"Windows 8.1\";\n if (build >= 7600) return \"Windows 7\";\n return `Windows (${release})`;\n}\n\nexport function getMacOSName(release: string) {\n const major = parseInt(release.split(\".\")[0]);\n if (major === 25) return \"MacOS 26 (Tahoe)\";\n if (major === 24) return \"MacOS 15 (Sequoia)\";\n if (major === 23) return \"MacOS 14 (Sonoma)\";\n if (major === 22) return \"MacOS 13 (Ventura)\";\n if (major === 21) return \"MacOS 12 (Monterey)\";\n if (major === 20) return \"MacOS 11 (Big Sur)\";\n if (major === 19) return \"MacOS 10.15 (Catalina)\";\n return `MacOS (${release})`;\n}\n\nexport function platformName() {\n if (typeof DiscordNative === \"undefined\") return navigator.platform;\n if (DiscordNative.process.platform === \"win32\") return `${getWindowsName(DiscordNative.os.release)}`;\n if (DiscordNative.process.platform === \"darwin\") return `${getMacOSName(DiscordNative.os.release)} (${DiscordNative.process.arch === \"arm64\" ? \"Apple Silicon\" : \"Intel Silicon\"})`;\n if (DiscordNative.process.platform === \"linux\") return `${navigator.platform} (${DiscordNative.os.release})`;\n return DiscordNative.process.platform;\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { currentNotice, noticesQueue, popNotice, showNotice } from \"@api/Notices\";\nimport { definePluginSettings } from \"@api/Settings\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { makeRange, OptionType } from \"@utils/types\";\nimport { FluxDispatcher } from \"@webpack/common\";\n\nconst settings = definePluginSettings({\n idleTimeout: {\n description: \"Minutes before Discord goes idle (0 to disable auto-idle)\",\n type: OptionType.SLIDER,\n markers: makeRange(0, 60, 5),\n default: 10,\n stickToMarkers: false,\n restartNeeded: true // Because of the setInterval patch\n },\n remainInIdle: {\n description: \"When you come back to Discord, remain idle until you confirm you want to go online\",\n type: OptionType.BOOLEAN,\n default: true\n }\n});\n\nexport default definePlugin({\n name: \"CustomIdle\",\n description: \"Allows you to set the time before Discord goes idle (or disable auto-idle)\",\n tags: [\"Activity\", \"Customisation\"],\n authors: [Devs.newwares],\n settings,\n patches: [\n {\n find: 'type:\"IDLE\",idle:',\n replacement: [\n {\n match: /(?<=Date\\.now\\(\\)-\\i>)\\i\\.\\i\\|\\|/,\n replace: \"$self.getIdleTimeout()||\"\n },\n {\n match: /Math\\.min\\((\\i\\*\\i\\.\\i\\.\\i\\.SECOND),\\i\\.\\i\\)/,\n replace: \"$1\" // Decouple idle from afk (phone notifications will remain at user setting or 10 min maximum)\n },\n {\n match: /\\i\\.\\i\\.dispatch\\({type:\"IDLE\",idle:!1}\\)/,\n replace: \"$self.handleOnline()\"\n }\n ]\n }\n ],\n\n handleOnline() {\n if (!settings.store.remainInIdle) {\n FluxDispatcher.dispatch({\n type: \"IDLE\",\n idle: false\n });\n return;\n }\n\n const backOnlineMessage = \"Welcome back! Click the button to go online. Click the X to stay idle until reload.\";\n if (\n currentNotice?.[1] === backOnlineMessage ||\n noticesQueue.some(([, noticeMessage]) => noticeMessage === backOnlineMessage)\n ) return;\n\n showNotice(backOnlineMessage, \"Exit idle\", () => {\n popNotice();\n FluxDispatcher.dispatch({\n type: \"IDLE\",\n idle: false\n });\n });\n },\n\n getIdleTimeout() {\n // milliseconds, default is 6e5\n const { idleTimeout } = settings.store;\n return idleTimeout === 0 ? Infinity : idleTimeout * 60000;\n }\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { sendBotMessage } from \"@api/Commands\";\nimport { isPluginEnabled } from \"@api/PluginManager\";\nimport { definePluginSettings } from \"@api/Settings\";\nimport { getUserSettingLazy } from \"@api/UserSettings\";\nimport { Button } from \"@components/Button\";\nimport { Card } from \"@components/Card\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { Flex } from \"@components/Flex\";\nimport { Link } from \"@components/Link\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { openSettingsTabModal, UpdaterTab } from \"@components/settings\";\nimport { platformName } from \"@equicordplugins/equicordHelper/utils\";\nimport customIdle from \"@plugins/customIdle\";\nimport { gitHash, gitHashShort } from \"@shared/vencordUserAgent\";\nimport { CONTRIB_ROLE_ID, Devs, DONOR_ROLE_ID, EQUICORD_TEAM, GUILD_ID, SUPPORT_CHANNEL_ID, SUPPORT_CHANNEL_IDS, VC_CONTRIB_ROLE_ID, VC_DONOR_ROLE_ID, VC_GUILD_ID, VC_REGULAR_ROLE_ID, VENCORD_CONTRIB_ROLE_ID } from \"@utils/constants\";\nimport { sendMessage } from \"@utils/discord\";\nimport { Logger } from \"@utils/Logger\";\nimport { Margins } from \"@utils/margins\";\nimport { isAnyPluginDev, isEquicordGuild, isEquicordSupport, isKnownIssuesCategory, isSupportChannel, tryOrElse } from \"@utils/misc\";\nimport { relaunch } from \"@utils/native\";\nimport { onlyOnce } from \"@utils/onlyOnce\";\nimport { makeCodeblock } from \"@utils/text\";\nimport definePlugin from \"@utils/types\";\nimport { checkForUpdates, isOutdated, update } from \"@utils/updater\";\nimport { RenderModalProps } from \"@vencord/discord-types\";\nimport { CloudUploadPlatform } from \"@vencord/discord-types/enums\";\nimport { Alerts, ChannelStore, CloudUploader, ConfirmModal, Constants, GuildMemberStore, openModal, Parser, PermissionsBits, PermissionStore, RelationshipStore, RestAPI, SelectedChannelStore, showToast, SnowflakeUtils, Text, Toasts, UserStore } from \"@webpack/common\";\nimport { JSX } from \"react\";\n\nimport plugins, { PluginMeta } from \"~plugins\";\n\nimport SettingsPlugin from \"./settings\";\n\nconst CodeBlockRe = /```snippet\\n(.+?)```/s;\n\nconst TrustedRolesIds = [\n VC_CONTRIB_ROLE_ID, // Vencord Contributor\n VC_REGULAR_ROLE_ID, // Vencord Regular\n VC_DONOR_ROLE_ID, // Vencord Donor\n EQUICORD_TEAM, // Equicord Team\n DONOR_ROLE_ID, // Equicord Donor\n CONTRIB_ROLE_ID, // Equicord Contributor\n VENCORD_CONTRIB_ROLE_ID, // Vencord Contributor\n];\n\nconst AsyncFunction = async function () { }.constructor;\n\nconst ShowCurrentGame = getUserSettingLazy(\"status\", \"showCurrentGame\")!;\nconst ShowEmbeds = getUserSettingLazy(\"textAndImages\", \"renderEmbeds\")!;\n\ninterface clientData {\n name: string;\n version?: string | null | undefined;\n info?: string | boolean | null | undefined;\n spoofed?: string | null | undefined;\n shortHash?: string | null | undefined;\n hash?: string | null | undefined;\n dev?: boolean | null | undefined;\n}\n\nasync function forceUpdate() {\n const outdated = await checkForUpdates();\n if (outdated) {\n await update();\n relaunch();\n }\n\n return outdated;\n}\n\nexport function detectClient(): clientData {\n if (IS_DISCORD_DESKTOP) {\n return {\n name: \"Discord Desktop\",\n version: DiscordNative.app.getVersion(),\n };\n }\n if (IS_VESKTOP) return {\n name: \"Vesktop\",\n version: VesktopNative.app.getVersion(),\n };\n\n if (IS_EQUIBOP) {\n const equibopGitHash = tryOrElse(() => VesktopNative.app.getGitHash?.(), null);\n const spoofInfo = tryOrElse(() => VesktopNative.app.getPlatformSpoofInfo?.(), null);\n const isDevBuild = tryOrElse(() => VesktopNative.app.isDevBuild?.(), false);\n const shortHash = equibopGitHash?.slice(0, 7);\n return {\n name: \"Equibop\",\n version: VesktopNative.app.getVersion(),\n spoofed: spoofInfo?.spoofed ? `${platformName()} (spoofed from ${spoofInfo.originalPlatform})` : null,\n dev: isDevBuild,\n shortHash: shortHash,\n hash: equibopGitHash,\n };\n }\n\n if (\"legcord\" in window) return {\n name: \"LegCord\",\n version: window.legcord.version,\n };\n\n if (\"goofcord\" in window) return {\n name: \"GoofCord\",\n version: window.goofcord.version,\n };\n\n const name = typeof unsafeWindow !== \"undefined\" ? \"UserScript\" : \"Web\";\n return {\n name: name,\n info: navigator.userAgent\n };\n}\n\nasync function generateDebugInfoMessage() {\n const { RELEASE_CHANNEL } = window.GLOBAL_ENV;\n\n const clientInfo = detectClient();\n let clientString = `${clientInfo.name}`;\n clientString += `${clientInfo.version ? ` v${clientInfo.version}` : \"\"}`;\n clientString += `${clientInfo.info ? ` \u2022 ${clientInfo.info}` : \"\"}`;\n clientString += `${clientInfo.shortHash ? ` \u2022 [${clientInfo.shortHash}]()` : \"\"}`;\n\n const spoofInfo = IS_EQUIBOP ? tryOrElse(() => VesktopNative.app.getPlatformSpoofInfo?.(), null) : null;\n const platformDisplay = spoofInfo?.spoofed\n ? `${platformName()} (spoofed from ${spoofInfo.originalPlatform})`\n : platformName();\n\n const info = {\n Equicord:\n `v${VERSION} \u2022 [${gitHashShort}]()` +\n `${IS_EQUIBOP ? \"\" : SettingsPlugin.getVersionInfo()} - ${Intl.DateTimeFormat(\"en-US\", { dateStyle: \"medium\" }).format(BUILD_TIMESTAMP)}`,\n Client: `${RELEASE_CHANNEL} ~ ${clientString}`,\n Platform: platformDisplay\n };\n\n if (IS_DISCORD_DESKTOP) {\n info[\"Last Crash Reason\"] = (await tryOrElse(() => DiscordNative.processUtils.getLastCrash(), undefined))?.rendererCrashReason ?? \"N/A\";\n }\n\n const potentiallyProblematicPlugins = ([\n \"NoRPC\", \"NoProfileThemes\", \"NoMosaic\", \"NoRoleHeaders\", \"NoSystemBadge\",\n \"AlwaysAnimate\", \"ClientTheme\", \"SoundTroll\", \"Ingtoninator\", \"NeverPausePreviews\",\n \"IdleAutoRestart\",\n ].filter(isPluginEnabled) ?? []).sort();\n\n if (isPluginEnabled(customIdle.name) && customIdle.settings.store.idleTimeout === 0) {\n potentiallyProblematicPlugins.push(customIdle.name);\n }\n\n const potentiallyProblematicPluginsNote = \"-# Note: These plugins might not be the cause of your problem. They are simply plugins that cause common issues.\";\n\n const commonIssues = {\n \"Activity Sharing Disabled\": tryOrElse(() => !ShowCurrentGame.getSetting(), false),\n \"Link Embeds Disabled\": tryOrElse(() => !ShowEmbeds.getSetting(), false),\n \"Equicord DevBuild\": !IS_STANDALONE,\n \"Equibop DevBuild\": IS_EQUIBOP && tryOrElse(() => VesktopNative.app.isDevBuild?.(), false),\n \"Platform Spoofed\": spoofInfo?.spoofed ?? false,\n \"Has UserPlugins\": Object.values(PluginMeta).some(m => m.userPlugin),\n \">2 Weeks Outdated\": BUILD_TIMESTAMP < Date.now() - 12096e5,\n [`Potentially Problematic Plugins: ${potentiallyProblematicPlugins.join(\", \")}\\n${potentiallyProblematicPluginsNote}`]: potentiallyProblematicPlugins.length\n };\n\n let content = `>>> ${Object.entries(info).map(([k, v]) => `**${k}**: ${v}`).join(\"\\n\")}`;\n content += \"\\n\" + Object.entries(commonIssues)\n .filter(([, v]) => v).map(([k]) => `\u26A0\uFE0F ${k}`)\n .join(\"\\n\");\n\n return content.trim();\n}\n\nasync function uploadPluginListFile(channelId: string, fileContent: string, filename: string) {\n const file = new File([fileContent], filename, { type: \"text/plain\" });\n const upload = new CloudUploader({ file, platform: CloudUploadPlatform.WEB }, channelId);\n\n return new Promise((resolve, reject) => {\n upload.on(\"complete\", () => {\n RestAPI.post({\n url: Constants.Endpoints.MESSAGES(channelId),\n body: {\n flags: 0,\n channel_id: channelId,\n content: `\u26A0\uFE0F Plugin list attached as file due to high plugin count (${fileContent.split(\"\\n\").filter(l => l.startsWith(\" -\")).length} plugins enabled)`,\n nonce: SnowflakeUtils.fromTimestamp(Date.now()),\n sticker_ids: [],\n type: 0,\n attachments: [{\n id: \"0\",\n filename: upload.filename,\n uploaded_filename: upload.uploadedFilename,\n }],\n }\n }).then(() => resolve()).catch(reject);\n });\n\n upload.on(\"error\", () => reject(new Error(\"Failed to upload file\")));\n\n upload.upload();\n });\n}\n\nfunction generatePluginList() {\n const isApiPlugin = (plugin: string) => plugin.endsWith(\"API\") || plugins[plugin].required;\n\n const enabledPlugins = Object.keys(plugins)\n .filter(p => isPluginEnabled(p) && !isApiPlugin(p));\n\n const enabledStockPlugins = enabledPlugins.filter(p => !PluginMeta[p].userPlugin).sort();\n const enabledUserPlugins = enabledPlugins.filter(p => PluginMeta[p].userPlugin).sort();\n\n const user = UserStore.getCurrentUser();\n\n if (enabledPlugins.length > 100 && !isAnyPluginDev(user.id)) {\n Alerts.show({\n title: \"Warning: High Plugin Count\",\n body:
\n
\n \n
\n You have more than 100 plugins enabled.\n Due to the sheer amount of plugins, you may not receive support.\n Your issue is likely caused by plugin conflicts.\n Please consider disabling some plugins to troubleshoot.\n Your plugin list will be sent as a text file.\n
\n });\n\n const fileContent = [\n `Enabled Stock Plugins (${enabledStockPlugins.length}):`,\n ...enabledStockPlugins.map(p => ` - ${p}`),\n \"\",\n ];\n\n if (enabledUserPlugins.length) {\n fileContent.push(\n `Enabled User Plugins (${enabledUserPlugins.length}):`,\n ...enabledUserPlugins.map(p => ` - ${p}`),\n \"\"\n );\n }\n\n fileContent.push(\n \"---\",\n `Total Enabled Plugins: ${enabledPlugins.length}`,\n \"Warning: Due to the high number of enabled plugins, support may be limited.\"\n );\n\n return {\n uploadFile: true,\n fileContent: fileContent.join(\"\\n\"),\n filename: `${user.username}-plugins.txt`\n };\n }\n\n let content = `**Enabled Plugins (${enabledStockPlugins.length}):**\\n${makeCodeblock(enabledStockPlugins.join(\", \"))}`;\n\n if (enabledUserPlugins.length) {\n content += `**Enabled UserPlugins (${enabledUserPlugins.length}):**\\n${makeCodeblock(enabledUserPlugins.join(\", \"))}`;\n }\n\n return content;\n}\n\nconst checkForUpdatesOnce = onlyOnce(checkForUpdates);\n\nconst settings = definePluginSettings({}).withPrivateSettings<{\n dismissedDevBuildWarning?: boolean;\n}>();\n\nfunction DevBuildConfirmModal(props: RenderModalProps) {\n const s = settings.use([\"dismissedDevBuildWarning\"]);\n\n return (\n s.dismissedDevBuildWarning = checked\n }}\n >\n
\n You are using a custom build of Equicord, which we do not provide support for!\n\n \n We only provide support for official builds.\n Either switch to an official build or figure your issue out yourself.\n \n\n You will be banned from receiving support if you ignore this rule.\n
\n \n );\n}\n\nexport default definePlugin({\n name: \"SupportHelper\",\n required: true,\n description: \"Helps us provide support to you\",\n authors: [Devs.Ven],\n dependencies: [\"UserSettingsAPI\", \"CommandsAPI\", \"MessageAccessoriesAPI\"],\n tags: [\"Utility\"],\n\n settings,\n\n patches: [{\n find: \"#{intl::BEGINNING_DM}\",\n replacement: {\n match: /#{intl::BEGINNING_DM},{.+?}\\),(?=.{0,300}(\\i)\\.isMultiUserDM)/,\n replace: \"$& $self.renderContributorDmWarningCard({ channel: $1 }),\"\n }\n }],\n\n commands: [\n {\n name: \"equicord-debug\",\n description: \"Send Equicord debug info\",\n // @ts-ignore\n predicate: ctx => isAnyPluginDev(UserStore.getCurrentUser()?.id) || isEquicordGuild(ctx?.guild?.id, true),\n execute: async () => ({ content: await generateDebugInfoMessage() })\n },\n {\n name: \"equicord-plugins\",\n description: \"Send Equicord plugin list\",\n // @ts-ignore\n predicate: ctx => isAnyPluginDev(UserStore.getCurrentUser()?.id) || isEquicordGuild(ctx?.guild?.id, true),\n execute: async () => {\n const channelId = SelectedChannelStore.getChannelId();\n const pluginList = generatePluginList();\n\n if (typeof pluginList === \"string\") {\n return { content: pluginList };\n } else if (pluginList && typeof pluginList === \"object\" && pluginList.uploadFile) {\n try {\n await uploadPluginListFile(channelId, pluginList.fileContent, pluginList.filename);\n return { content: \"\" }; // Empty return since file was already sent\n } catch (e) {\n new Logger(\"SupportHelper\").error(\"Failed to upload plugin list:\", e);\n return { content: \"Failed to upload plugin list file. Please try again.\" };\n }\n }\n return { content: \"Unable to generate plugin list.\" };\n }\n }\n ],\n\n flux: {\n async CHANNEL_SELECT({ channelId }) {\n const isSupportChannel = SUPPORT_CHANNEL_IDS.includes(channelId);\n if (!isSupportChannel) return;\n\n const selfId = UserStore.getCurrentUser()?.id;\n if (!selfId || isAnyPluginDev(selfId)) return;\n\n if (!IS_UPDATER_DISABLED) {\n await checkForUpdatesOnce().catch(() => { });\n\n if (isOutdated) {\n openModal(props => (\n openSettingsTabModal(UpdaterTab!)}\n >\n
\n You are using an outdated version of Equicord! Chances are, your issue is already fixed.\n \n Please first update before asking for support!\n \n \n If you know what you're doing or cannot update, you can dismiss this prompt.\n \n
\n \n ));\n return;\n }\n }\n\n const roles = GuildMemberStore.getSelfMember(VC_GUILD_ID)?.roles || GuildMemberStore.getSelfMember(GUILD_ID)?.roles;\n if (!roles || TrustedRolesIds.some(id => roles.includes(id))) return;\n\n if (!IS_WEB && IS_UPDATER_DISABLED) {\n openModal(props => (\n \n
\n You are using an externally updated Equicord version, which we do not provide support for!\n \n Please either switch to an officially supported version of Equicord, or\n contact your package maintainer for support instead.\n \n
\n \n ));\n return;\n }\n\n if (!IS_STANDALONE && !settings.store.dismissedDevBuildWarning) {\n openModal(props => );\n return;\n }\n }\n },\n\n renderMessageAccessory(props) {\n const buttons = [] as JSX.Element[];\n\n const equicordSupport = isEquicordSupport(props.message.author.id);\n\n const shouldAddUpdateButton =\n !IS_UPDATER_DISABLED\n && ((isSupportChannel(props.channel.id) && equicordSupport))\n && props.message.content?.toLowerCase().includes(\"update\");\n\n if (shouldAddUpdateButton) {\n buttons.push(\n {\n try {\n if (await forceUpdate())\n showToast(\"Success! Restarting...\", Toasts.Type.SUCCESS);\n else\n showToast(\"Already up to date!\", Toasts.Type.MESSAGE);\n } catch (e) {\n new Logger(this.name).error(\"Error while updating:\", e);\n showToast(\"Failed to update :(\", Toasts.Type.FAILURE);\n }\n }}\n >\n Update Now\n \n );\n }\n\n if (equicordSupport && isSupportChannel(props.channel.id) && PermissionStore.can(PermissionsBits.SEND_MESSAGES, props.channel)) {\n if (props.message.content.includes(\"/equicord-debug\") || props.message.content.includes(\"/equicord-plugins\")) {\n buttons.push(\n sendMessage(props.channel.id, { content: await generateDebugInfoMessage() })}\n >\n Run /equicord-debug\n ,\n {\n const pluginList = generatePluginList();\n if (typeof pluginList === \"string\") {\n sendMessage(props.channel.id, { content: pluginList });\n } else if (pluginList && typeof pluginList === \"object\" && pluginList.uploadFile) {\n try {\n await uploadPluginListFile(props.channel.id, pluginList.fileContent, pluginList.filename);\n showToast(\"Plugin list uploaded successfully!\", Toasts.Type.SUCCESS);\n } catch (e) {\n new Logger(\"SupportHelper\").error(\"Failed to upload plugin list:\", e);\n showToast(\"Failed to upload plugin list\", Toasts.Type.FAILURE);\n }\n }\n }}\n >\n Run /equicord-plugins\n \n );\n }\n }\n\n if (equicordSupport || (isSupportChannel(props.channel.id) || isKnownIssuesCategory(props.channel.parent_id))) {\n const match = CodeBlockRe.exec(props.message.content || props.message.embeds[0]?.rawDescription || \"\");\n if (match) {\n buttons.push(\n {\n try {\n const result = await AsyncFunction(match[1])();\n const stringed = String(result);\n if (stringed) {\n await sendBotMessage(SelectedChannelStore.getChannelId(), {\n content: stringed\n });\n }\n\n showToast(\"Success!\", Toasts.Type.SUCCESS);\n } catch (e) {\n new Logger(this.name).error(\"Error while running snippet:\", e);\n showToast(\"Failed to run snippet :(\", Toasts.Type.FAILURE);\n }\n }}\n >\n Run Snippet\n \n );\n }\n }\n\n return buttons.length\n ? {buttons}\n : null;\n },\n\n renderContributorDmWarningCard: ErrorBoundary.wrap(({ channel }) => {\n const userId = channel.getRecipientId();\n if (!isAnyPluginDev(userId)) return null;\n if (RelationshipStore.isFriend(userId) || isAnyPluginDev(UserStore.getCurrentUser()?.id)) return null;\n\n return (\n \n Please do not private message Equicord & Vencord plugin developers for support!\n
\n Instead, use the support channel: {Parser.parse(\"https://discord.com/channels/1173279886065029291/1297590739911573585\")}\n {!ChannelStore.getChannel(SUPPORT_CHANNEL_ID) && \" (Click the link to join)\"}\n
\n );\n }, { noop: true }),\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"AlwaysExpandProfiles\",\n description: \"Always expands profile popouts to the full modal\",\n tags: [\"Appearance\", \"Utility\"],\n authors: [Devs.thororen],\n patches: [\n {\n find: '\"view-profile\"',\n replacement: {\n match: /function (\\i)\\(\\i?\\)\\{.{0,45}\\(0,\\i\\.openUserProfileModal.{0,300}(?=return)/,\n replace: \"$&return $1();\"\n },\n all: true\n },\n ],\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { isPluginEnabled } from \"@api/PluginManager\";\nimport { definePluginSettings } from \"@api/Settings\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport alwaysExpandProfiles from \"@equicordplugins/alwaysExpandProfiles\";\nimport { Devs } from \"@utils/constants\";\nimport { fetchUserProfile, getCurrentChannel, openUserProfile } from \"@utils/discord\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { User } from \"@vencord/discord-types\";\nimport { findComponentByCodeLazy } from \"@webpack\";\nimport { ContextMenuApi, Menu, useEffect, UserStore } from \"@webpack/common\";\n\ninterface UserProfileProps {\n popoutProps: Record;\n currentUser: User;\n originalRenderPopout: () => React.ReactNode;\n}\n\nconst UserProfile = findComponentByCodeLazy(\".isNonUserBot()?\", \",onClickContainer:\");\nlet openAlternatePopout = false;\nlet accountPanelRef: React.RefObject = { current: null };\n\nconst AccountPanelContextMenu = ErrorBoundary.wrap(() => {\n const { prioritizeServerProfile } = settings.use([\"prioritizeServerProfile\"]);\n\n return (\n \n {\n if (isPluginEnabled(alwaysExpandProfiles.name)) {\n const user = await fetchUserProfile(UserStore.getCurrentUser().id, {\n guild_id: prioritizeServerProfile ? undefined : getCurrentChannel()?.getGuildId()\n }, false);\n return openUserProfile(user!.userId);\n }\n openAlternatePopout = true;\n accountPanelRef.current?.click();\n }}\n />\n settings.store.prioritizeServerProfile = !prioritizeServerProfile}\n />\n \n );\n}, { noop: true });\n\nconst settings = definePluginSettings({\n prioritizeServerProfile: {\n type: OptionType.BOOLEAN,\n description: \"Prioritize Server Profile when left clicking your account panel\",\n default: false\n }\n});\n\nexport default definePlugin({\n name: \"AccountPanelServerProfile\",\n description: \"Right click your account panel in the bottom left to view your profile in the current server\",\n tags: [\"Appearance\", \"Servers\"],\n authors: [Devs.Nuckyz, Devs.relitrix],\n settings,\n\n patches: [\n {\n find: \"handleOpenSettingsContextMenu=\",\n group: true,\n replacement: [\n {\n match: /(\\.AVATAR,children:.+?renderPopout:\\((\\i),\\i\\)=>)\\{(.+?)\\}(?=,position)(?<=currentUser:(\\i).+?)/,\n replace: (_, rest, popoutProps, originalPopout, currentUser) => `${rest}$self.UserProfile({popoutProps:${popoutProps},currentUser:${currentUser},originalRenderPopout:()=>{${originalPopout}}})`\n },\n {\n match: /\\.AVATAR,children:.+?onRequestClose:\\(\\)=>\\{/,\n replace: \"$&$self.onPopoutClose();\"\n },\n {\n match: /ref:(\\i),style:\\i(?=.{0,250}#{intl::USER_PROFILE_ACCOUNT_POPOUT_BUTTON_A11Y_LABEL})/,\n replace: \"$&,onContextMenu:($self.grabRef($1),$self.openAccountPanelContextMenu)\"\n }\n ]\n }\n ],\n\n get accountPanelRef() {\n return accountPanelRef;\n },\n\n grabRef(ref: React.RefObject) {\n accountPanelRef = ref;\n return ref;\n },\n\n openAccountPanelContextMenu(event: React.UIEvent) {\n ContextMenuApi.openContextMenu(event, AccountPanelContextMenu);\n },\n\n onPopoutClose() {\n openAlternatePopout = false;\n },\n\n UserProfile: ErrorBoundary.wrap(({ popoutProps, currentUser, originalRenderPopout }: UserProfileProps) => {\n if (\n (settings.store.prioritizeServerProfile && openAlternatePopout) ||\n (!settings.store.prioritizeServerProfile && !openAlternatePopout)\n ) {\n return originalRenderPopout();\n }\n\n const currentChannel = getCurrentChannel();\n if (currentChannel?.getGuildId() == null || !UserProfile.$$vencordGetWrappedComponent()) {\n return originalRenderPopout();\n }\n\n if (isPluginEnabled(alwaysExpandProfiles.name)) {\n return ;\n }\n\n return (\n \n );\n }, { noop: true })\n});\n\nfunction ServerProfileLauncher({ popoutProps, userId, guildId }: { popoutProps: Record; userId: string; guildId: string; }) {\n useEffect(() => {\n popoutProps.closePopout?.();\n popoutProps.onRequestClose?.();\n fetchUserProfile(userId, { guild_id: guildId }, false).then(user => {\n if (user) openUserProfile(user.userId);\n });\n }, []);\n return null;\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { OptionType } from \"@utils/types\";\n\nconst settings = definePluginSettings({\n icons: {\n type: OptionType.BOOLEAN,\n description: \"Always animate server icons, avatars, decor and more\",\n default: true,\n },\n statusEmojis: {\n type: OptionType.BOOLEAN,\n description: \"Always animate status emojis\",\n default: true,\n },\n serverBanners: {\n type: OptionType.BOOLEAN,\n description: \"Always animate server banners\",\n default: true,\n },\n nameplates: {\n type: OptionType.BOOLEAN,\n description: \"Always animate nameplates\",\n default: true,\n },\n roleGradients: {\n type: OptionType.BOOLEAN,\n description: \"Always animate role gradients\",\n default: true,\n }\n});\n\nexport default definePlugin({\n name: \"AlwaysAnimate\",\n description: \"Animates anything that can be animated\",\n tags: [\"Appearance\", \"Fun\"],\n authors: [Devs.FieryFlames],\n settings,\n patches: [\n {\n find: \"canAnimate:\",\n predicate: () => settings.store.icons,\n all: true,\n // Some modules match the find but the replacement is returned untouched\n noWarn: true,\n replacement: {\n match: /canAnimate:.+?([,}].*?\\))/g,\n replace: (m, rest) => {\n const destructuringMatch = rest.match(/}=.+/);\n if (destructuringMatch == null) return `canAnimate:!0${rest}`;\n return m;\n }\n }\n },\n {\n // Status emojis\n find: \"#{intl::GUILD_OWNER}),children:\",\n predicate: () => settings.store.statusEmojis,\n replacement: {\n match: /(\\.CUSTOM_STATUS.+?animateEmoji:)\\i/,\n replace: \"$1!0\"\n }\n },\n {\n // Guild Banner\n find: \"#{intl::DISCOVERABLE_GUILD_HEADER_PUBLIC_INFO}\",\n predicate: () => settings.store.serverBanners,\n replacement: {\n match: /(guildBanner:\\i,animate:)\\i(?=}\\):null)/,\n replace: \"$1!0\"\n }\n },\n {\n // Gradient roles in chat\n find: \"=!1,contentOnly:\",\n replacement: {\n match: /animate:\\i/,\n replace: \"animate:!0\"\n }\n },\n {\n // Gradient roles in member list\n find: '=\"left\",className:',\n replacement: {\n match: /,animateGradient:/,\n replace: \",animateGradient:!0,_oldAnimateGradient:\"\n }\n },\n {\n // Nameplates\n find: \".MINI_PREVIEW,[\",\n predicate: () => settings.store.nameplates,\n replacement: {\n match: /animate:\\i,loop:/,\n replace: \"animate:true,loop:true,_loop:\"\n },\n },\n {\n // Role Gradients\n find: \"animateGradient:\",\n predicate: () => settings.store.roleGradients,\n all: true,\n noWarn: true,\n replacement: {\n match: /animateGradient:.+?([,}].*?\\))/g,\n replace: (m, rest) => {\n const destructuringMatch = rest.match(/}=.+/);\n if (destructuringMatch == null) return `animateGradient:!0${rest}`;\n return m;\n }\n }\n },\n ]\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { definePluginSettings, migratePluginSettings } from \"@api/Settings\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { OptionType } from \"@utils/types\";\n\nconst settings = definePluginSettings({\n hideArrow: {\n type: OptionType.BOOLEAN,\n default: false,\n description: \"Hide Arrow\",\n restartNeeded: true\n },\n});\n\nmigratePluginSettings(\"AlwaysExpandRoles\", \"ShowAllRoles\");\nexport default definePlugin({\n name: \"AlwaysExpandRoles\",\n description: \"Always expands the role list in profile popouts\",\n tags: [\"Appearance\", \"Roles\"],\n authors: [Devs.surgedevs],\n isModified: true,\n settings,\n patches: [\n {\n find: \"hasDeveloperContextMenu:\",\n replacement: [\n {\n match: /(?<=\\?\\i\\.current\\[\\i\\].{0,100}?)useState\\(!1\\)/,\n replace: \"useState(!0)\"\n },\n {\n // Fix not calculating non-expanded roles because the above patch makes the default \"expanded\",\n // which makes the collapse button never show up and calculation never occur\n match: /(?<=useLayoutEffect\\(\\(\\)=>\\{if\\()\\i/,\n replace: \"false\"\n },\n {\n match: /return \\i\\.length<\\i\\.length/,\n replace: \"return false\",\n predicate: () => settings.store.hideArrow\n }\n ]\n }\n ],\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { findByPropsLazy } from \"@webpack\";\nimport { Alerts, Button, GuildStore } from \"@webpack/common\";\n\nconst DeleteGuild = findByPropsLazy(\"deleteGuild\", \"sendTransferOwnershipPincode\").deleteGuild;\n\nfunction GetPropsAndDeleteGuild(id) {\n const GotGuild = GuildStore.getGuild(id);\n if (!GotGuild) return;\n\n DeleteGuild(id, GotGuild.name);\n}\n\nconst settings = definePluginSettings({\n domain: {\n type: OptionType.BOOLEAN,\n default: true,\n description: \"Remove the untrusted domain popup when opening links\",\n restartNeeded: true\n },\n file: {\n type: OptionType.BOOLEAN,\n default: true,\n description: \"Remove the 'Potentially Dangerous Download' popup when opening links\",\n restartNeeded: true\n },\n noDeleteSafety: {\n type: OptionType.BOOLEAN,\n default: true,\n description: \"Removes the enter server name requirement when deleting a server\",\n restartNeeded: true\n },\n confirmModal: {\n type: OptionType.BOOLEAN,\n description: \"Should a \\\"are you sure you want to delete\\\" modal be shown?\",\n default: true\n },\n});\n\nexport default definePlugin({\n name: \"AlwaysTrust\",\n description: \"Removes the annoying untrusted domain and suspicious file popup\",\n tags: [\"Utility\"],\n authors: [Devs.zt, Devs.Trwy],\n isModified: true,\n settings,\n patches: [\n {\n find: '=\"MaskedLinkStore\",',\n replacement: {\n match: /(?<=isTrustedDomain\\(\\i\\){)return \\i\\(\\i\\)/,\n replace: \"return true\"\n },\n predicate: () => settings.store.domain\n },\n {\n find: \"bitbucket.org\",\n replacement: {\n match: /function \\i\\(\\i\\){(?=.{0,30}pathname:\\i)/,\n replace: \"$&return null;\"\n },\n predicate: () => settings.store.file\n },\n {\n find: \".DELETE,onClick(){let\",\n replacement: {\n match: /let\\{name:\\i\\}=(\\i)\\.guild/,\n replace: \"$self.HandleGuildDeleteModal($1);$&\"\n },\n predicate: () => settings.store.noDeleteSafety\n }\n ],\n async HandleGuildDeleteModal(server) {\n if (settings.store.confirmModal) {\n return Alerts.show({\n title: \"Delete server?\",\n body:

It's permanent, if that wasn't obvious.

,\n confirmColor: Button.Colors.RED,\n confirmText: \"Delete\",\n onConfirm: () => GetPropsAndDeleteGuild(server.id),\n cancelText: \"Cancel\"\n });\n } else {\n return GetPropsAndDeleteGuild(server.id);\n }\n },\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { isPluginEnabled } from \"@api/PluginManager\";\nimport anonymiseFileNames, { tarExtMatcher } from \"@plugins/anonymiseFileNames\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { ReporterTestable } from \"@utils/types\";\nimport { CloudUpload } from \"@vencord/discord-types\";\n\nconst extensionMap = {\n \"ogg\": [\".ogv\", \".oga\", \".ogx\", \".ogm\", \".spx\", \".aac\", \".wma\"],\n \"jpg\": [\".jpe\", \".jif\", \".jfi\", \".pjpeg\", \".pjp\", \".bmp\", \".tiff\", \".tif\"],\n \"svg\": [\".svgz\", \".ai\", \".eps\"],\n \"mp4\": [\".m4v\", \".m4r\", \".m4p\", \".avi\", \".mkv\", \".wmv\", \".flv\", \".3gp\"],\n \"m4a\": [\".m4b\", \".aiff\"],\n \"mov\": [\".movie\", \".qt\", \".asf\", \".rm\", \".rmvb\"],\n \"png\": [\".ico\", \".cur\"],\n};\n\nexport const reverseExtensionMap = Object.entries(extensionMap).reduce((acc, [target, exts]) => {\n exts.forEach(ext => acc[ext] = `.${target}`);\n return acc;\n}, {} as Record);\n\nexport default definePlugin({\n name: \"FixFileExtensions\",\n authors: [Devs.thororen],\n description: \"Fixes file extensions by renaming them to a compatible supported format if possible\",\n tags: [\"Media\", \"Utility\"],\n reporterTestable: ReporterTestable.None,\n patches: [\n // Taken from AnonymiseFileNames\n {\n find: \"async uploadFiles(\",\n replacement: [\n {\n match: /async uploadFiles\\((\\i)\\){/,\n replace: \"$&$1.forEach($self.fixExt);\"\n }\n ],\n predicate: () => !isPluginEnabled(anonymiseFileNames.name),\n },\n ],\n fixExt(upload: CloudUpload) {\n const file = upload.filename;\n const tarMatch = tarExtMatcher.exec(file);\n const extIdx = tarMatch?.index ?? file.lastIndexOf(\".\");\n const fileName = extIdx !== -1 ? file.substring(0, extIdx) : \"\";\n const ext = extIdx !== -1 ? file.slice(extIdx) : \"\";\n const newExt = reverseExtensionMap[ext] || ext;\n\n upload.filename = fileName + newExt;\n },\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { ApplicationCommandInputType, ApplicationCommandOptionType, findOption, sendBotMessage } from \"@api/Commands\";\nimport { definePluginSettings, Settings } from \"@api/Settings\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { reverseExtensionMap } from \"@equicordplugins/fixFileExtensions\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { CloudUpload } from \"@vencord/discord-types\";\nimport { findByCodeLazy } from \"@webpack\";\nimport { useState } from \"@webpack/common\";\n\nconst ActionBarIcon = findByCodeLazy(\"Children.map\", \"isValidElement\", \"dangerous:\");\n\nconst enum Methods {\n Random,\n Consistent,\n Timestamp,\n Date\n}\n\nconst ANONYMISE_UPLOAD_SYMBOL = Symbol(\"vcAnonymise\");\nexport const tarExtMatcher = /\\.tar\\.\\w+$/;\n\nconst settings = definePluginSettings({\n anonymiseByDefault: {\n description: \"Whether to anonymise file names by default\",\n type: OptionType.BOOLEAN,\n default: true,\n },\n spoilerMessages: {\n description: \"Spoiler messages\",\n type: OptionType.BOOLEAN,\n default: false,\n },\n method: {\n description: \"Anonymising method\",\n type: OptionType.SELECT,\n options: [\n { label: \"Random Characters\", value: Methods.Random, default: true },\n { label: \"Consistent\", value: Methods.Consistent },\n { label: \"Timestamp\", value: Methods.Timestamp },\n { label: \"Date\", value: Methods.Date },\n ],\n },\n randomisedLength: {\n description: \"Random characters length\",\n type: OptionType.NUMBER,\n default: 7\n },\n consistent: {\n description: \"Consistent filename\",\n type: OptionType.STRING,\n default: \"image\"\n },\n dateFormat: {\n description: \"Date format (YYYY, MM, DD, HH, mm, ss, SSS are supported)\",\n type: OptionType.STRING,\n default: \"YYYY-MM-DD_HH-mm-ss-SSS\"\n }\n}, {\n randomisedLength: {\n disabled() { return this.store.method !== Methods.Random; },\n },\n consistent: {\n disabled() { return this.store.method !== Methods.Consistent; },\n },\n dateFormat: {\n disabled() { return this.store.method !== Methods.Date; },\n },\n});\n\nexport default definePlugin({\n name: \"AnonymiseFileNames\",\n authors: [Devs.fawn],\n description: \"Anonymise uploaded file names\",\n dependencies: [\"CommandsAPI\"],\n tags: [\"Privacy\", \"Utility\"],\n isModified: true,\n settings,\n\n patches: [\n {\n find: \"async uploadFiles(\",\n replacement: [\n {\n match: /async uploadFiles\\((\\i)\\){/,\n replace: \"$&$1.forEach($self.anonymise);\"\n }\n ],\n },\n {\n find: \"#{intl::ATTACHMENT_UTILITIES_SPOILER}\",\n replacement: {\n match: /(?<=children:\\[)(?=.{10,80}tooltip:.{0,100}#{intl::ATTACHMENT_UTILITIES_SPOILER})/,\n replace: \"arguments[0].canEdit!==false?$self.AnonymiseUploadButton(arguments[0]):null,\"\n },\n },\n ],\n\n AnonymiseUploadButton: ErrorBoundary.wrap(({ upload }: { upload: CloudUpload; }) => {\n const [anonymise, setAnonymise] = useState(upload[ANONYMISE_UPLOAD_SYMBOL] ?? settings.store.anonymiseByDefault);\n\n function onToggleAnonymise() {\n upload[ANONYMISE_UPLOAD_SYMBOL] = !anonymise;\n setAnonymise(!anonymise);\n }\n\n return (\n \n {anonymise\n ? \n : \n }\n \n );\n }, { noop: true }),\n\n anonymise(upload: CloudUpload) {\n const originalFileName = upload.filename;\n const tarMatch = tarExtMatcher.exec(originalFileName);\n const extIdx = tarMatch?.index ?? originalFileName.lastIndexOf(\".\");\n let ext = extIdx !== -1 ? originalFileName.slice(extIdx) : \"\";\n const addSpoilerPrefix = (str: string) => settings.store.spoilerMessages ? \"SPOILER_\" + str : str;\n\n if (Settings.plugins.FixFileExtensions.enabled) {\n ext = reverseExtensionMap[ext] || ext;\n }\n\n if ((upload[ANONYMISE_UPLOAD_SYMBOL] ?? settings.store.anonymiseByDefault) === false) return addSpoilerPrefix(originalFileName + ext);\n\n const newFilename = (() => {\n switch (settings.store.method) {\n case Methods.Random:\n const chars = \"0123456789bdfhjkmnpqrstvwxz\";\n const returnedName = Array.from(\n { length: settings.store.randomisedLength },\n () => chars[Math.floor(Math.random() * chars.length)]\n ).join(\"\") + ext;\n return addSpoilerPrefix(returnedName);\n case Methods.Consistent:\n return addSpoilerPrefix(settings.store.consistent + ext);\n case Methods.Timestamp:\n return addSpoilerPrefix(Date.now().toString() + ext);\n case Methods.Date:\n const now = new Date();\n const format = settings.store.dateFormat\n .replace(/YYYY/g, now.getFullYear().toString())\n .replace(/MM/g, (now.getMonth() + 1).toString().padStart(2, \"0\"))\n .replace(/DD/g, now.getDate().toString().padStart(2, \"0\"))\n .replace(/HH/g, now.getHours().toString().padStart(2, \"0\"))\n .replace(/mm/g, now.getMinutes().toString().padStart(2, \"0\"))\n .replace(/ss/g, now.getSeconds().toString().padStart(2, \"0\"))\n .replace(/SSS/g, now.getMilliseconds().toString().padStart(3, \"0\"));\n\n return format ? addSpoilerPrefix(format + ext) : addSpoilerPrefix(Date.now().toString() + ext);\n }\n })();\n\n upload.filename = newFilename;\n },\n\n commands: [\n {\n name: \"Spoiler\",\n description: \"Toggle your spoiler\",\n inputType: ApplicationCommandInputType.BUILT_IN,\n options: [\n {\n name: \"value\",\n description: \"Toggle your Spoiler (default is toggle)\",\n required: false,\n type: ApplicationCommandOptionType.BOOLEAN,\n },\n ],\n execute: async (args, ctx) => {\n settings.store.spoilerMessages = !!findOption(args, \"value\", !settings.store.spoilerMessages);\n sendBotMessage(ctx.channel.id, {\n content: settings.store.spoilerMessages ? \"Spoiler enabled!\" : \"Spoiler disabled!\",\n });\n },\n }\n ],\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { Devs, IS_MAC } from \"@utils/constants\";\nimport definePlugin, { OptionType, PluginNative, ReporterTestable } from \"@utils/types\";\nimport { Activity, ActivityAssets, ActivityButton } from \"@vencord/discord-types\";\nimport { ActivityFlags, ActivityStatusDisplayType, ActivityType } from \"@vencord/discord-types/enums\";\nimport { ApplicationAssetUtils, FluxDispatcher } from \"@webpack/common\";\n\nconst Native = VencordNative.pluginHelpers.AppleMusicRichPresence as PluginNative;\n\nexport interface TrackData {\n name: string;\n album?: string;\n artist?: string;\n\n appleMusicLink?: string;\n appleMusicArtistLink?: string;\n songLink?: string;\n\n albumArtwork?: string;\n artistArtwork?: string;\n\n playerPosition?: number;\n duration?: number;\n}\n\nconst enum AssetImageType {\n Album = \"Album\",\n Artist = \"Artist\",\n Disabled = \"Disabled\"\n}\n\nconst enum LinkType {\n Album = \"Album\",\n Artist = \"Artist\",\n Disabled = \"Disabled\"\n}\n\nconst applicationId = \"1239490006054207550\";\n\nlet updateInterval: NodeJS.Timeout | undefined;\n\nfunction setActivity(activity: Activity | null) {\n FluxDispatcher.dispatch({\n type: \"LOCAL_ACTIVITY_UPDATE\",\n activity,\n socketId: \"AppleMusic\",\n });\n}\n\nconst settings = definePluginSettings({\n activityType: {\n type: OptionType.SELECT,\n description: \"Which type of activity\",\n options: [\n { label: \"Playing\", value: ActivityType.PLAYING, default: true },\n { label: \"Listening\", value: ActivityType.LISTENING }\n ],\n },\n statusDisplayType: {\n description: \"Show the track / artist name in the member list\",\n type: OptionType.SELECT,\n options: [\n {\n label: \"Don't show (shows generic listening message)\",\n value: \"off\",\n default: true\n },\n {\n label: \"Show artist name\",\n value: \"artist\"\n },\n {\n label: \"Show track name\",\n value: \"track\"\n }\n ]\n },\n refreshInterval: {\n type: OptionType.SLIDER,\n description: \"The interval between activity refreshes (seconds)\",\n markers: [1, 2, 2.5, 3, 5, 10, 15],\n default: 5,\n restartNeeded: true,\n },\n enableTimestamps: {\n type: OptionType.BOOLEAN,\n description: \"Whether or not to enable timestamps\",\n default: true,\n },\n enableButtons: {\n type: OptionType.BOOLEAN,\n description: \"Whether or not to enable buttons\",\n default: true,\n },\n nameString: {\n type: OptionType.STRING,\n description: \"Activity name format string\",\n default: \"Apple Music\"\n },\n detailsString: {\n type: OptionType.STRING,\n description: \"Activity details format string\",\n default: \"{name}\"\n },\n stateString: {\n type: OptionType.STRING,\n description: \"Activity state format string\",\n default: \"{artist} \u00B7 {album}\"\n },\n detailsLink: {\n type: OptionType.SELECT,\n description: \"Activity details link\",\n options: [\n { label: \"Album\", value: LinkType.Album, default: true },\n { label: \"Artist\", value: LinkType.Artist },\n { label: \"Disabled\", value: LinkType.Disabled }\n ],\n },\n stateLink: {\n type: OptionType.SELECT,\n description: \"Activity state link\",\n options: [\n { label: \"Album\", value: LinkType.Album },\n { label: \"Artist\", value: LinkType.Artist, default: true },\n { label: \"Disabled\", value: LinkType.Disabled }\n ],\n },\n largeImageType: {\n type: OptionType.SELECT,\n description: \"Activity assets large image type\",\n options: [\n { label: \"Album artwork\", value: AssetImageType.Album, default: true },\n { label: \"Artist artwork\", value: AssetImageType.Artist },\n { label: \"Disabled\", value: AssetImageType.Disabled }\n ],\n },\n largeTextString: {\n type: OptionType.STRING,\n description: \"Activity assets large text format string\",\n default: \"{album}\"\n },\n largeImageLink: {\n type: OptionType.SELECT,\n description: \"Activity assets large image link\",\n options: [\n { label: \"Album\", value: LinkType.Album, default: true },\n { label: \"Artist\", value: LinkType.Artist },\n { label: \"Disabled\", value: LinkType.Disabled }\n ],\n },\n smallImageType: {\n type: OptionType.SELECT,\n description: \"Activity assets small image type\",\n options: [\n { label: \"Album artwork\", value: AssetImageType.Album },\n { label: \"Artist artwork\", value: AssetImageType.Artist, default: true },\n { label: \"Disabled\", value: AssetImageType.Disabled }\n ],\n },\n smallTextString: {\n type: OptionType.STRING,\n description: \"Activity assets small text format string\",\n default: \"{artist}\"\n },\n smallImageLink: {\n type: OptionType.SELECT,\n description: \"Activity assets small image link\",\n options: [\n { label: \"Album\", value: LinkType.Album },\n { label: \"Artist\", value: LinkType.Artist, default: true },\n { label: \"Disabled\", value: LinkType.Disabled }\n ],\n },\n});\n\nfunction customFormat(formatStr: string, data: TrackData) {\n return formatStr\n .replaceAll(\"{name}\", data.name)\n .replaceAll(\"{album}\", data.album ?? \"\")\n .replaceAll(\"{artist}\", data.artist ?? \"\");\n}\n\nfunction getLink(type: LinkType, data: TrackData) {\n return type === LinkType.Album\n ? data.appleMusicLink\n : type === LinkType.Artist\n ? data.appleMusicArtistLink\n : undefined;\n}\n\nfunction getImageAsset(type: AssetImageType, data: TrackData) {\n const source = type === AssetImageType.Album\n ? data.albumArtwork\n : data.artistArtwork;\n\n if (!source) return undefined;\n\n return ApplicationAssetUtils.fetchAssetIds(applicationId, [source]).then(ids => ids[0]);\n}\n\nexport default definePlugin({\n name: \"AppleMusicRichPresence\",\n description: \"Discord rich presence for your Apple Music!\",\n tags: [\"Activity\", \"Media\"],\n authors: [Devs.RyanCaoDev],\n hidden: !IS_MAC,\n reporterTestable: ReporterTestable.None,\n\n settingsAboutComponent() {\n return <>\n \n For the customizable activity format strings, you can use several special strings to include track data in activities!{\" \"}\n {\"{name}\"} is replaced with the track name; {\"{artist}\"} is replaced with the artist(s)' name(s); and {\"{album}\"} is replaced with the album name.\n \n ;\n },\n\n settings,\n\n start() {\n this.updatePresence();\n updateInterval = setInterval(() => { this.updatePresence(); }, settings.store.refreshInterval * 1000);\n },\n\n stop() {\n clearInterval(updateInterval);\n updateInterval = undefined;\n FluxDispatcher.dispatch({ type: \"LOCAL_ACTIVITY_UPDATE\", activity: null });\n },\n\n updatePresence() {\n this.getActivity().then(activity => { setActivity(activity); });\n },\n\n async getActivity(): Promise {\n const trackData = await Native.fetchTrackData();\n if (!trackData) return null;\n\n const [largeImageAsset, smallImageAsset] = await Promise.all([\n getImageAsset(settings.store.largeImageType, trackData),\n getImageAsset(settings.store.smallImageType, trackData)\n ]);\n\n const assets: ActivityAssets = {};\n\n const isRadio = Number.isNaN(trackData.duration) && (trackData.playerPosition === 0);\n\n if (settings.store.largeImageType !== AssetImageType.Disabled) {\n assets.large_image = largeImageAsset;\n if (!isRadio) assets.large_text = customFormat(settings.store.largeTextString, trackData);\n assets.large_url = getLink(settings.store.largeImageLink, trackData);\n }\n\n if (settings.store.smallImageType !== AssetImageType.Disabled) {\n assets.small_image = smallImageAsset;\n if (!isRadio) assets.small_text = customFormat(settings.store.smallTextString, trackData);\n assets.small_url = getLink(settings.store.smallImageLink, trackData);\n }\n\n const buttons: ActivityButton[] = [];\n\n if (settings.store.enableButtons) {\n if (trackData.appleMusicLink)\n buttons.push({\n label: \"Listen on Apple Music\",\n url: trackData.appleMusicLink,\n });\n\n if (trackData.songLink)\n buttons.push({\n label: \"View on SongLink\",\n url: trackData.songLink,\n });\n }\n\n return {\n application_id: applicationId,\n\n name: customFormat(settings.store.nameString, trackData),\n details: customFormat(settings.store.detailsString, trackData),\n state: isRadio ? undefined : customFormat(settings.store.stateString, trackData),\n details_url: getLink(settings.store.detailsLink, trackData),\n state_url: getLink(settings.store.stateLink, trackData),\n\n timestamps: (trackData.playerPosition && trackData.duration && settings.store.enableTimestamps) ? {\n start: Date.now() - (trackData.playerPosition * 1000),\n end: Date.now() - (trackData.playerPosition * 1000) + (trackData.duration * 1000),\n } : undefined,\n\n assets,\n\n buttons: !isRadio && buttons.length ? buttons.map(v => v.label) : undefined,\n metadata: !isRadio && buttons.length ? { button_urls: buttons.map(v => v.url) } : undefined,\n\n type: settings.store.activityType,\n status_display_type: {\n \"off\": ActivityStatusDisplayType.NAME,\n \"artist\": ActivityStatusDisplayType.STATE,\n \"track\": ActivityStatusDisplayType.DETAILS\n }[settings.store.statusDisplayType],\n flags: ActivityFlags.INSTANCE,\n };\n }\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { getUserSettingLazy } from \"@api/UserSettings\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { UserSettingsProtoStore } from \"@webpack/common\";\n\nlet savedStatus: string | null;\n\nconst StatusSettings = getUserSettingLazy(\"status\", \"status\")!;\n\nconst settings = definePluginSettings({\n statusToSet: {\n type: OptionType.SELECT,\n description: \"Status to set while playing a game\",\n options: [\n {\n label: \"Online\",\n value: \"online\",\n },\n {\n label: \"Idle\",\n value: \"idle\",\n },\n {\n label: \"Do Not Disturb\",\n value: \"dnd\",\n default: true\n },\n {\n label: \"Invisible\",\n value: \"invisible\",\n }\n ]\n }\n});\n\nlet lastStatus: string | null = null;\n\nfunction handleUserSettingsChange() {\n const status = StatusSettings.getSetting();\n if (status !== lastStatus) {\n lastStatus = status;\n\n savedStatus = null;\n }\n}\n\nasync function setStatus(status: string) {\n lastStatus = status;\n await StatusSettings.updateSetting(status);\n}\n\nexport default definePlugin({\n name: \"AutoDNDWhilePlaying\",\n description: \"Automatically updates your online status (online, idle, dnd) when launching games\",\n tags: [\"Activity\", \"Utility\"],\n authors: [Devs.thororen],\n settings,\n\n flux: {\n async RUNNING_GAMES_CHANGE({ games }) {\n const status = StatusSettings.getSetting();\n\n if (games.length > 0) {\n if (status !== settings.store.statusToSet && status !== \"invisible\") {\n savedStatus = status;\n await setStatus(settings.store.statusToSet);\n }\n } else if (savedStatus) {\n const toRestore = savedStatus;\n savedStatus = null;\n\n if (status !== toRestore) {\n await setStatus(toRestore);\n }\n }\n }\n },\n\n start() {\n lastStatus = StatusSettings.getSetting();\n UserSettingsProtoStore.addChangeListener(handleUserSettingsChange);\n },\n\n stop() {\n UserSettingsProtoStore.removeChangeListener(handleUserSettingsChange);\n }\n});\n", ".vc-betterFolders-sidebar {\n grid-area: betterFoldersSidebar\n}\n\n.vc-betterFolders-nested-parent-list {\n height: auto !important;\n padding-bottom: 6px !important;\n}\n\n/* These area names need to be hardcoded. Only betterFoldersSidebar is added by the plugin. */\n.vc-betterFolders-sidebar-grid {\n /* stylelint-disable-next-line value-keyword-case */\n grid-template-columns: [start] min-content [guildsEnd] min-content [sidebarEnd] min-content [channelsEnd] 1fr [end];\n grid-template-areas:\n \"titleBar titleBar titleBar titleBar\"\n \"guildsList betterFoldersSidebar notice notice\"\n \"guildsList betterFoldersSidebar channelsList page\";\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { findComponentByCodeLazy } from \"@webpack\";\nimport { Animations, ChannelRTCStore, ExpandedGuildFolderStore, SortedGuildStore, useStateFromStores } from \"@webpack/common\";\nimport type { CSSProperties } from \"react\";\n\nimport { settings } from \".\";\n\nconst GuildsBar = findComponentByCodeLazy('(\"guildsnav\")');\n\nfunction getExpandedFolderIds() {\n const expandedFolders = ExpandedGuildFolderStore.getExpandedFolders();\n const folders = SortedGuildStore.getGuildFolders();\n\n const expandedFolderIds = new Set();\n\n for (const folder of folders) {\n if (expandedFolders.has(folder.folderId!) && folder.guildIds?.length) {\n expandedFolderIds.add(folder.folderId!);\n }\n }\n\n return expandedFolderIds;\n}\n\nexport default ErrorBoundary.wrap(guildsBarProps => {\n const expandedFolderIds = useStateFromStores([ExpandedGuildFolderStore, SortedGuildStore], () => getExpandedFolderIds());\n const isFullscreen = useStateFromStores([ChannelRTCStore], () => ChannelRTCStore.isFullscreenInContext());\n\n const Sidebar = (\n \n );\n\n const visible = !!expandedFolderIds.size;\n const guilds = document.querySelector(guildsBarProps.className.split(\" \").map(c => `.${c}`).join(\"\"));\n\n // We need to display none if we are in fullscreen. Yes this seems horrible doing with css, but it's literally how Discord does it.\n // Also display flex otherwise to fix scrolling.\n const sidebarStyle = {\n display: isFullscreen ? \"none\" : \"flex\"\n } satisfies CSSProperties;\n\n if (!guilds || !settings.store.sidebarAnim) {\n return visible\n ?
{Sidebar}
\n : null;\n }\n\n return (\n \n {(animationStyle: any, show: any) =>\n show && (\n \n {Sidebar}\n \n )\n }\n \n );\n}, { noop: true });\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./style.css\";\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { Devs } from \"@utils/constants\";\nimport { getIntlMessage } from \"@utils/discord\";\nimport { Logger } from \"@utils/Logger\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { findByPropsLazy } from \"@webpack\";\nimport { ExpandedGuildFolderStore, FluxDispatcher, SortedGuildStore } from \"@webpack/common\";\nimport { ReactNode } from \"react\";\n\nimport FolderSideBar from \"./FolderSideBar\";\n\nenum FolderIconDisplay {\n Never,\n Always,\n MoreThanOneFolderExpanded\n}\n\nconst FolderUtils = findByPropsLazy(\"move\", \"toggleGuildFolderExpand\");\n\nlet lastGuildId = null as string | null;\nlet dispatchingFoldersClose = false;\n\nfunction getGuildFolder(id: string) {\n return SortedGuildStore.getGuildFolders().find(folder => folder.guildIds.includes(id));\n}\n\nfunction closeFolders() {\n for (const id of ExpandedGuildFolderStore.getExpandedFolders())\n FolderUtils.toggleGuildFolderExpand(id);\n}\n\n// Nuckyz: Unsure if this should be a general utility or not\nfunction filterTreeWithTargetNode(children: any, predicate: (node: any) => boolean) {\n if (children == null) {\n return false;\n }\n\n if (!Array.isArray(children)) {\n if (predicate(children)) {\n return true;\n }\n\n return filterTreeWithTargetNode(children.props?.children, predicate);\n }\n\n let childIsTargetChild = false;\n for (let i = 0; i < children.length; i++) {\n const shouldKeep = filterTreeWithTargetNode(children[i], predicate);\n if (shouldKeep) {\n childIsTargetChild = true;\n continue;\n }\n\n children.splice(i--, 1);\n }\n\n return childIsTargetChild;\n}\n\nexport const settings = definePluginSettings({\n sidebar: {\n type: OptionType.BOOLEAN,\n description: \"Display servers from folder on dedicated sidebar\",\n restartNeeded: true,\n default: true\n },\n sidebarAnim: {\n type: OptionType.BOOLEAN,\n description: \"Animate opening the folder sidebar\",\n default: true\n },\n closeAllFolders: {\n type: OptionType.BOOLEAN,\n description: \"Close all folders when selecting a server not in a folder\",\n default: false\n },\n closeAllHomeButton: {\n type: OptionType.BOOLEAN,\n description: \"Close all folders when clicking on the home button\",\n restartNeeded: true,\n default: false\n },\n closeOthers: {\n type: OptionType.BOOLEAN,\n description: \"Close other folders when opening a folder\",\n default: false\n },\n closeServerFolder: {\n type: OptionType.BOOLEAN,\n description: \"Close folder when selecting a server in that folder\",\n default: false,\n },\n forceOpen: {\n type: OptionType.BOOLEAN,\n description: \"Force a folder to open when switching to a server of that folder\",\n default: false\n },\n keepIcons: {\n type: OptionType.BOOLEAN,\n description: \"Keep showing guild icons in the primary guild bar folder when it's open in the BetterFolders sidebar\",\n restartNeeded: true,\n default: false\n },\n showFolderIcon: {\n type: OptionType.SELECT,\n description: \"Show the folder icon above the folder guilds in the BetterFolders sidebar\",\n options: [\n { label: \"Never\", value: FolderIconDisplay.Never },\n { label: \"Always\", value: FolderIconDisplay.Always, default: true },\n { label: \"When more than one folder is expanded\", value: FolderIconDisplay.MoreThanOneFolderExpanded }\n ],\n restartNeeded: true\n }\n});\n\nconst IS_BETTER_FOLDERS_VAR = \"typeof isBetterFolders!=='undefined'?isBetterFolders:arguments[0]?.isBetterFolders\";\nconst BETTER_FOLDERS_EXPANDED_IDS_VAR = \"typeof betterFoldersExpandedIds!=='undefined'?betterFoldersExpandedIds:arguments[0]?.betterFoldersExpandedIds\";\nconst GRID_STYLE_NAME = \"vc-betterFolders-sidebar-grid\";\n\nexport default definePlugin({\n name: \"BetterFolders\",\n description: \"Shows server folders on dedicated sidebar and adds folder related improvements\",\n authors: [Devs.juby, Devs.AutumnVN, Devs.Nuckyz],\n isModified: true,\n tags: [\"Organisation\", \"Servers\", \"Appearance\"],\n settings,\n\n patches: [\n {\n find: '(\"guildsnav\")',\n predicate: () => settings.store.sidebar,\n replacement: [\n // Create the isBetterFolders and betterFoldersExpandedIds variables in the GuildsBar component\n // Needed because we access this from a non-arrow closure so we can't use arguments[0]\n {\n match: /let{disableAppDownload:\\i=\\i\\.isPlatformEmbedded,isOverlay:.+?(?=}=\\i)/,\n replace: \"$&,isBetterFolders,betterFoldersExpandedIds\"\n },\n // Export the isBetterFolders and betterFoldersExpandedIds variable to the Guild List component\n {\n match: /,{guildDiscoveryButton:\\i,/g,\n replace: \"$&isBetterFolders:arguments[0]?.isBetterFolders,betterFoldersExpandedIds:arguments[0]?.betterFoldersExpandedIds,\"\n },\n // Wrap the guild node (guild or folder) component in a div with display: none if it's not an expanded folder or a guild in an expanded folder\n {\n match: /switch\\((\\i)\\.type\\){.+?default:return null}/,\n replace: `return $self.wrapGuildNodeComponent($1,()=>{$&},${IS_BETTER_FOLDERS_VAR},${BETTER_FOLDERS_EXPANDED_IDS_VAR});`\n },\n // Export the isBetterFolders variable to the folder component\n {\n match: /switch\\(\\i\\.type\\){case \\i\\.\\i\\.FOLDER:.+?folderNode:\\i,/,\n replace: `$&isBetterFolders:${IS_BETTER_FOLDERS_VAR},`\n },\n // Make the callback for returning the guild node component depend on isBetterFolders and betterFoldersExpandedIds\n {\n match: /switch\\(\\i\\.type\\).+?,\\i,\\i\\.setNodeRef/,\n replace: \"$&,arguments[0]?.isBetterFolders,arguments[0]?.betterFoldersExpandedIds\"\n },\n // If we are rendering the Better Folders sidebar, we filter out everything but the guilds and folders from the Guild List children\n {\n match: /lastTargetNode:\\i\\[\\i\\.length-1\\].+?}\\)(?::null)?\\](?=}\\))/,\n replace: \"$&.filter($self.makeGuildsBarGuildListFilter(!!arguments[0]?.isBetterFolders))\"\n },\n // If we are rendering the Better Folders sidebar, we filter out everything but the Guild List from the Sidebar children\n {\n match: /reverse:!0,.{0,150}?barClassName:.+?\\}\\)\\]/,\n replace: \"$&.filter($self.makeGuildsBarSidebarFilter(!!arguments[0]?.isBetterFolders))\"\n }\n ]\n },\n {\n // This is the parent folder component\n find: \".toggleGuildFolderExpand(\",\n predicate: () => settings.store.sidebar && settings.store.showFolderIcon !== FolderIconDisplay.Always,\n replacement: [\n {\n // Modify the expanded state to instead return the list of expanded folders\n match: /(\\],\\(\\)=>)(\\i\\.\\i)\\.isFolderExpanded\\(\\i\\)\\)/,\n replace: (_, rest, ExpandedGuildFolderStore) => `${rest}${ExpandedGuildFolderStore}.getExpandedFolders())`,\n },\n {\n // Modify the expanded prop to use the boolean if the above patch fails, or check if the folder is expanded from the list if it succeeds\n // Also export the list of expanded folders to the child folder component if the patch above succeeds, else export undefined\n match: /(?<=\\.\\.\\.\\i,folderNode:(\\i),expanded:)\\i(?=,)/,\n replace: (isExpandedOrExpandedIds, folderNote) => \"\"\n + `typeof ${isExpandedOrExpandedIds}===\"boolean\"?${isExpandedOrExpandedIds}:${isExpandedOrExpandedIds}.has(${folderNote}.id),`\n + `betterFoldersExpandedIds:${isExpandedOrExpandedIds} instanceof Set?${isExpandedOrExpandedIds}:void 0`\n }\n ]\n },\n {\n find: \".FOLDER_ITEM_ANIMATION_DURATION),\",\n predicate: () => settings.store.sidebar,\n replacement: [\n // We use arguments[0] to access the isBetterFolders variable in this nested folder component (the parent exports all the props so we don't have to patch it)\n\n // If we are rendering the normal GuildsBar sidebar, we make Discord think the folder is always collapsed to show better icons (the mini guild icons) and avoid transitions\n {\n predicate: () => settings.store.keepIcons,\n match: /let ?(?:\\i,)*?{folderNode:\\i,setNodeRef:\\i,.+?expanded:(\\i),.+?;(?=let)/,\n replace: (m, isExpanded) => `${m}${isExpanded}=!!arguments[0]?.isBetterFolders&&${isExpanded};`\n },\n // Disable expanding and collapsing folders transition in the normal GuildsBar sidebar\n {\n predicate: () => !settings.store.keepIcons,\n match: /(?=,\\{from:\\{height)/,\n replace: \"&&$self.shouldShowTransition(arguments[0])\"\n },\n // If we are rendering the normal GuildsBar sidebar, we avoid rendering guilds from folders that are expanded\n {\n predicate: () => !settings.store.keepIcons,\n match: /\"--custom-folder-color\".+?(?=\\i\\(\\(\\i,\\i,\\i\\)=>{let{key:.{0,70}\"ul\")(?<=selected:\\i,expanded:(\\i),.+?)/,\n replace: (m, isExpanded) => `${m}$self.shouldRenderContents(arguments[0],${isExpanded})?null:`\n },\n // Decide if we should render the expanded folder background if we are rendering the Better Folders sidebar\n {\n predicate: () => settings.store.showFolderIcon !== FolderIconDisplay.Always,\n match: /\"--custom-folder-color\".{0,110}?children:\\[/,\n replace: \"$&$self.shouldShowFolderIconAndBackground(!!arguments[0]?.isBetterFolders,arguments[0]?.betterFoldersExpandedIds)&&\"\n },\n // Decide if we should render the expanded folder icon if we are rendering the Better Folders sidebar\n {\n predicate: () => settings.store.showFolderIcon !== FolderIconDisplay.Always,\n match: /\"--custom-folder-color\".+?className:\\i\\.\\i}\\),(?=\\i,)/,\n replace: \"$&!$self.shouldShowFolderIconAndBackground(!!arguments[0]?.isBetterFolders,arguments[0]?.betterFoldersExpandedIds)?null:\"\n }\n ]\n },\n {\n find: \"APPLICATION_LIBRARY,render:\",\n predicate: () => settings.store.sidebar,\n group: true,\n replacement: [\n {\n // Render the Better Folders sidebar\n // Discord has two different places where they render the sidebar.\n // One is for visual refresh, one is not,\n // and each has a bunch of conditions &&ed in front of it.\n // Add the betterFolders sidebar to both, keeping the conditions Discord uses.\n match: /(?<=[[,])((?:!?\\i&&)+)\\(.{0,50}({className:\\i\\.\\i,themeOverride:\\i})\\)/g,\n replace: (m, conditions, props) => `${m},${conditions}$self.FolderSideBar(${props})`\n },\n {\n // Add grid styles to fix alignment with other visual refresh elements\n match: /(?<=className:)\\i\\.\\i(?=,\"data-fullscreen\")/,\n replace: `\"${GRID_STYLE_NAME} \"+$&`\n }\n ]\n },\n {\n find: \"#{intl::DISCODO_DISABLED}\",\n predicate: () => settings.store.closeAllHomeButton,\n replacement: {\n // Close all folders when clicking the home button\n match: /(?<=onClick:(?:function)?\\(\\)(?:=>)?{)(?=.{0,300}\"discodo\")/,\n replace: \"$self.closeFolders();\"\n }\n }\n ],\n\n flux: {\n CHANNEL_SELECT(data) {\n if (!settings.store.closeAllFolders && !settings.store.forceOpen && !settings.store.closeServerFolder)\n return;\n\n if (lastGuildId !== data.guildId) {\n lastGuildId = data.guildId;\n const guildFolder = getGuildFolder(data.guildId);\n\n if (guildFolder?.folderId) {\n if (settings.store.forceOpen && !ExpandedGuildFolderStore.isFolderExpanded(guildFolder.folderId)) {\n FolderUtils.toggleGuildFolderExpand(guildFolder.folderId);\n }\n if (settings.store.closeServerFolder && ExpandedGuildFolderStore.isFolderExpanded(guildFolder.folderId)) {\n FolderUtils.toggleGuildFolderExpand(guildFolder.folderId);\n }\n } else if (settings.store.closeAllFolders) {\n closeFolders();\n }\n }\n },\n\n TOGGLE_GUILD_FOLDER_EXPAND(data) {\n if (settings.store.closeOthers && !dispatchingFoldersClose) {\n dispatchingFoldersClose = true;\n\n FluxDispatcher.wait(() => {\n const expandedFolders = ExpandedGuildFolderStore.getExpandedFolders();\n\n if (expandedFolders.size > 1) {\n for (const id of expandedFolders) if (id !== data.folderId)\n FolderUtils.toggleGuildFolderExpand(id);\n }\n\n dispatchingFoldersClose = false;\n });\n }\n },\n\n LOGOUT() {\n closeFolders();\n }\n },\n\n FolderSideBar,\n closeFolders,\n\n wrapGuildNodeComponent(node: any, originalComponent: () => ReactNode, isBetterFolders: boolean, expandedFolderIds?: Set) {\n if (\n !isBetterFolders ||\n node.type === \"folder\" && expandedFolderIds?.has(node.id) ||\n node.type === \"guild\" && expandedFolderIds?.has(node.parentId)\n ) {\n return originalComponent();\n }\n\n return (\n
\n {originalComponent()}\n
\n );\n },\n\n makeGuildsBarGuildListFilter(isBetterFolders: boolean) {\n return (child: any) => {\n if (!isBetterFolders) {\n return true;\n }\n\n try {\n // can cause hang if intl message is not found\n const serversIntlMsg = getIntlMessage(\"SERVERS\");\n if (!serversIntlMsg) {\n new Logger(\"BetterFolders\").error(\"Failed to get SERVERS intl message\");\n return true;\n }\n return child?.props?.[\"aria-label\"] === serversIntlMsg;\n } catch (e) {\n console.error(e);\n return true;\n }\n };\n },\n\n makeGuildsBarSidebarFilter(isBetterFolders: boolean) {\n return (child: any) => {\n if (!isBetterFolders) {\n return true;\n }\n\n try {\n return filterTreeWithTargetNode(child, child => child?.props?.renderTreeNode != null);\n } catch (e) {\n console.error(e);\n return true;\n }\n };\n },\n\n shouldShowFolderIconAndBackground(isBetterFolders: boolean, expandedFolderIds?: Set) {\n if (!isBetterFolders) {\n return true;\n }\n\n switch (settings.store.showFolderIcon) {\n case FolderIconDisplay.Never:\n return false;\n case FolderIconDisplay.Always:\n return true;\n case FolderIconDisplay.MoreThanOneFolderExpanded:\n return (expandedFolderIds?.size ?? 0) > 1;\n default:\n return true;\n }\n },\n\n shouldShowTransition(props: any) {\n // Pending guilds\n if (props?.folderNode?.id === 1) return true;\n\n return !!props?.isBetterFolders;\n },\n\n shouldRenderContents(props: any, isExpanded: boolean) {\n // Pending guilds\n if (props?.folderNode?.id === 1) return false;\n\n return !props?.isBetterFolders && isExpanded;\n }\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"BetterGifAltText\",\n authors: [Devs.Ven],\n description: \"Change GIF alt text from simply being 'GIF' to containing the gif tags / filename\",\n tags: [\"Media\", \"Accessibility\", \"Customisation\"],\n patches: [\n {\n find: \".modalContext})};\",\n replacement: {\n match: /(return.{0,10}\\.jsx.{0,50}isWindowFocused)/,\n replace:\n \"$self.altify(e);$1\",\n },\n },\n {\n find: \"#{intl::GIF}\",\n replacement: {\n match: /alt:(\\i)=(\\i\\.\\i\\.string\\(\\i\\.\\i#{intl::GIF}\\))(?=,[^}]*\\}=(\\i))/,\n replace:\n // rename prop so we can always use default value\n \"alt_$$:$1=$self.altify($3)||$2\",\n },\n },\n ],\n\n altify(props: any) {\n if (props.contentType && props.contentType !== \"image/gif\") return props.alt;\n\n props.alt ??= \"GIF\";\n if (props.alt !== \"GIF\") return props.alt;\n\n let url: string = props.original || props.src;\n try {\n url = decodeURI(url);\n } catch { }\n\n let name = url\n .slice(url.lastIndexOf(\"/\") + 1)\n .replace(/\\d/g, \"\") // strip numbers\n .replace(/.gif$/, \"\") // strip extension\n .split(/[,\\-_ ]+/g)\n .slice(0, 20)\n .join(\" \");\n if (name.length > 300) {\n name = name.slice(0, 300) + \"...\";\n }\n\n if (name) props.alt += ` - ${name}`;\n\n return props.alt;\n },\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Devs } from \"@utils/constants\";\nimport definePlugin from \"@utils/types\";\n\nexport default definePlugin({\n name: \"BetterGifPicker\",\n description: \"Makes the gif picker open the favourite category by default\",\n tags: [\"Emotes\", \"Customisation\"],\n authors: [Devs.Samwich],\n patches: [\n {\n find: \"renderHeaderContent(){\",\n replacement: [\n {\n match: /(?<=state={resultType:)null/,\n replace: '\"Favorites\"'\n }\n ]\n },\n ],\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { getUserSettingLazy } from \"@api/UserSettings\";\nimport { CopyIdIcon, ImageIcon } from \"@components/Icons\";\nimport { copyToClipboard } from \"@utils/clipboard\";\nimport { Devs } from \"@utils/constants\";\nimport { getCurrentChannel, getCurrentGuild, getIntlMessage, openImageModal } from \"@utils/discord\";\nimport { isTruthy } from \"@utils/guards\";\nimport { classes } from \"@utils/misc\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { Guild, Role } from \"@vencord/discord-types\";\nimport { findByCodeLazy, findByPropsLazy, findCssClassesLazy } from \"@webpack\";\nimport { ContextMenuApi, GuildRoleStore, Menu, PermissionStore, Popout, RoleMemberPopout, useRef } from \"@webpack/common\";\n\nconst GuildSettingsActions = findByPropsLazy(\"open\", \"selectRole\", \"updateGuild\");\nconst MenuItemClasses = findCssClassesLazy(\"item\", \"labelContainer\", \"colorDefault\", \"label\", \"iconContainer\");\nconst loadRoleMembers = findByCodeLazy(\".GUILD_ROLE_MEMBER_IDS(\", \"requestMembersById\");\n\nconst DeveloperMode = getUserSettingLazy(\"appearance\", \"developerMode\")!;\n\nasync function openRoleIconModal(roleId: string, roleIcon: string, roleName: string) {\n const format = settings.store.roleIconFileFormat;\n const original = `${location.protocol}//${window.GLOBAL_ENV.CDN_HOST}/role-icons/${roleId}/${roleIcon}.${format}`;\n const url = original.replace(`//${window.GLOBAL_ENV.CDN_HOST}/`, \"//media.discordapp.net/\");\n\n openImageModal({\n url,\n original,\n height: 128,\n width: 128\n });\n}\n\nfunction PencilIcon() {\n return (\n \n \n \n );\n}\n\nfunction AppearanceIcon() {\n return (\n \n \n \n );\n}\n\nfunction RoleMembersIcon() {\n return (\n \n \n \n );\n}\n\nconst settings = definePluginSettings({\n roleIconFileFormat: {\n type: OptionType.SELECT,\n description: \"File format to use when viewing role icons\",\n options: [\n {\n label: \"png\",\n value: \"png\",\n default: true\n },\n {\n label: \"webp\",\n value: \"webp\",\n },\n {\n label: \"jpg\",\n value: \"jpg\"\n }\n ]\n }\n});\n\nexport function buildExtraRoleContextMenuItems(role: Role, guild: Guild, popoutRef?: React.RefObject) {\n if (!role) return { before: [], after: [] };\n\n const before = [\n PermissionStore.getGuildPermissionProps(guild).canManageRoles && (\n {\n await GuildSettingsActions.open(guild.id, \"ROLES\");\n GuildSettingsActions.selectRole(role.id);\n }}\n icon={PencilIcon}\n leadingAccessory={{ type: \"icon\", icon: PencilIcon }}\n />\n ),\n role.colorString && (\n copyToClipboard(role.colorString!)}\n icon={AppearanceIcon}\n leadingAccessory={{ type: \"icon\", icon: AppearanceIcon }}\n />\n )\n ].filter(isTruthy);\n\n const after = [\n role.icon && (\n {\n openImageModal({\n url: `${location.protocol}//${window.GLOBAL_ENV.CDN_HOST}/role-icons/${role.id}/${role.icon}.${settings.store.roleIconFileFormat}`,\n height: 128,\n width: 128\n });\n }}\n icon={ImageIcon}\n leadingAccessory={{ type: \"icon\", icon: ImageIcon }}\n />\n ),\n popoutRef && (\n (\n loadRoleMembers(guild.id, role.id)}\n renderPopout={popoutProps => (\n \n )}\n >\n {popoutProps => (\n \n
View Role Members
\n {/* FIXME: update to new icon style */}\n
\n \n
\n \n )}\n \n )}\n />\n )\n ].filter(isTruthy);\n\n return { before, after };\n}\n\nexport function openRoleContextMenu(event: React.MouseEvent, { guildId, id: roleId }: { guildId: string; id: string; }) {\n const guild = getCurrentGuild();\n if (!guild || guild.id !== guildId) return;\n\n const role = GuildRoleStore.getRole(guildId, roleId);\n if (!role) return;\n\n ContextMenuApi.openContextMenu(event, () => {\n const popoutRef = useRef(null);\n const { before, after } = buildExtraRoleContextMenuItems(role, guild, popoutRef);\n\n return (\n \n {before}\n {after}\n copyToClipboard(role.id)}\n />\n \n );\n });\n}\n\nexport default definePlugin({\n name: \"BetterRoleContext\",\n description: \"Adds options to copy role color / edit role / view role icon when right clicking roles in the user profile or in the member list\",\n tags: [\"Roles\", \"Appearance\"],\n authors: [Devs.Ven, Devs.goodbee, Devs.nightmaresan],\n dependencies: [\"UserSettingsAPI\"],\n settings,\n openRoleContextMenu,\n patches: [\n // Conflicts with RoleColorEverywhere which changes the code at the end of our match. (and also uses same find & similar match)\n // However, BetterRoleContext applies first (alphabetic order), so it's not an issue\n {\n find: 'tutorialId:\"whos-online',\n replacement: {\n match: /(?<=#{intl::CHANNEL_MEMBERS_A11Y_LABEL}.{0,200}?\"aria-hidden\":!0,)children:.{0,200}?(?:\u2014|\\\\u2014) \",\\i\\]\\}\\)\\]/,\n replace: \"onContextMenu:e=>$self.openRoleContextMenu(e,arguments[0]),$&\"\n }\n }\n ],\n\n start() {\n // DeveloperMode needs to be enabled for the context menu to be shown\n DeveloperMode.updateSetting(true);\n },\n\n contextMenus: {\n \"dev-context\"(children, { id }: { id: string; }) {\n const popoutRef = useRef(null);\n\n const guild = getCurrentGuild();\n if (!guild) return;\n\n const role = GuildRoleStore.getRole(guild.id, id);\n if (!role) return;\n\n if (role.colorString) {\n children.unshift(\n copyToClipboard(role.colorString!)}\n icon={AppearanceIcon}\n leadingAccessory={{ type: \"icon\", icon: AppearanceIcon }}\n />\n );\n }\n\n if (PermissionStore.getGuildPermissionProps(guild).canManageRoles) {\n children.unshift(\n {\n await GuildSettingsActions.open(guild.id, \"ROLES\");\n GuildSettingsActions.selectRole(id);\n }}\n icon={PencilIcon}\n leadingAccessory={{ type: \"icon\", icon: PencilIcon }}\n />\n );\n }\n\n if (role.icon) {\n const roleIcon = role.icon;\n children.push(\n openRoleIconModal(role.id, roleIcon, role.name)}\n icon={ImageIcon}\n leadingAccessory={{ type: \"icon\", icon: ImageIcon }}\n />\n\n );\n }\n }\n }\n});\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { Devs } from \"@utils/constants\";\nimport { copyWithToast } from \"@utils/discord\";\nimport definePlugin, { OptionType } from \"@utils/types\";\n\nconst settings = definePluginSettings({\n bothStyles: {\n type: OptionType.BOOLEAN,\n description: \"Show both role dot and coloured names\",\n restartNeeded: true,\n default: false,\n },\n copyRoleColorInProfilePopout: {\n type: OptionType.BOOLEAN,\n description: \"Allow click on role dot in profile popout to copy role color\",\n restartNeeded: true,\n default: false\n }\n});\n\nexport default definePlugin({\n name: \"BetterRoleDot\",\n authors: [Devs.Ven, Devs.AutumnVN],\n description: \"Copy role colour on RoleDot (accessibility setting) click. Also allows using both RoleDot and coloured names simultaneously\",\n tags: [\"Roles\", \"Appearance\"],\n settings,\n\n patches: [\n {\n // Class used in this module is dotBorderBase\n find: \"M0 4C0 1.79086 1.79086 0 4 0H16C18.2091 0 20 1.79086 20 4V16C20 18.2091 18.2091 20 16 20H4C1.79086 20 0 18.2091 0 16V4Z\",\n replacement: {\n match: /,viewBox:\"0 0 20 20\"/,\n replace: \"$&,onClick:()=>$self.copyToClipBoard(arguments[0].color),style:{cursor:'pointer'}\",\n },\n },\n {\n find: '\"dot\"===',\n all: true,\n noWarn: true,\n predicate: () => settings.store.bothStyles,\n replacement: {\n match: /\"(?:username|dot)\"===\\i(?!\\.\\i)/g,\n replace: \"true\",\n },\n },\n\n {\n find: \"#{intl::ADD_ROLE_A11Y_LABEL}\",\n all: true,\n predicate: () => settings.store.copyRoleColorInProfilePopout && !settings.store.bothStyles,\n noWarn: true,\n replacement: {\n match: /\"dot\"===\\i/,\n replace: \"true\"\n }\n },\n {\n find: \".roleVerifiedIcon\",\n all: true,\n predicate: () => settings.store.copyRoleColorInProfilePopout && !settings.store.bothStyles,\n noWarn: true,\n replacement: {\n match: /\"dot\"===\\i/,\n replace: \"true\"\n }\n }\n ],\n\n copyToClipBoard(color: string) {\n copyWithToast(color);\n },\n});\n", ".vc-betterSessions-footer-buttons {\n display: flex;\n gap: 0.5em;\n align-items: center;\n justify-content: center;\n margin-top: 2px;\n}\n\n.vc-betterSessions-rename-btn {\n margin-left: 4px;\n translate: 0 -2px;\n}\n\n.vc-betterSessions-new-btn {\n margin-left: 4px;\n translate: 0 -2px;\n pointer-events: none;\n padding: 1px 4px;\n}\n\n.vc-betterSessions-lowerBadge {\n width: 20px;\n height: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n border-radius: 50%;\n background-color: var(--interactive-icon-default);\n color: var(--background-base-lower);\n}\n\n.vc-betterSessions-lowerBadge-icon {\n display: block;\n}\n\n.vc-betterSessions-icon {\n align-items: center;\n border-radius: var(--radius-sm);\n display: flex;\n height: 48px;\n justify-content: center;\n width: 48px\n}\n\n.vc-betterSessions-description {\n display: flex;\n gap: 4px;\n}", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { LazyComponent } from \"@utils/react\";\nimport { findByCode } from \"@webpack\";\nimport { SVGProps } from \"react\";\n\nexport const DiscordIcon = (props: React.PropsWithChildren>) => (\n \n \n \n);\n\nexport const ChromeIcon = (props: React.PropsWithChildren>) => (\n \n \n \n \n \n \n);\n\nexport const EdgeIcon = (props: React.PropsWithChildren>) => (\n \n \n \n);\n\nexport const FirefoxIcon = (props: React.PropsWithChildren>) => (\n \n \n \n);\n\nexport const IEIcon = (props: React.PropsWithChildren>) => (\n \n \n \n);\n\nexport const OperaIcon = (props: React.PropsWithChildren>) => (\n \n \n \n);\n\nexport const SafariIcon = (props: React.PropsWithChildren>) => (\n \n \n \n);\n\nexport const UnknownIcon = (props: React.PropsWithChildren>) => (\n \n \n \n);\n\nexport const MobileIcon = LazyComponent(() => findByCode(\"M15.5 1h-8C6.12 1 5 2.12 5 3.5v17C5 21.88 6.12 23 7.5 23h8c1.38\"));\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport * as DataStore from \"@api/DataStore\";\nimport { classNameFactory } from \"@utils/css\";\nimport { UserStore } from \"@webpack/common\";\n\nimport { ChromeIcon, DiscordIcon, EdgeIcon, FirefoxIcon, IEIcon, MobileIcon, OperaIcon, SafariIcon, UnknownIcon } from \"./components/icons\";\nimport { SessionInfo } from \"./types\";\n\nconst getDataKey = () => `BetterSessions_savedSessions_${UserStore.getCurrentUser().id}`;\n\nexport const cl = classNameFactory(\"vc-betterSessions-\");\nexport const savedSessionsCache: Map = new Map();\n\nexport function getDefaultName(clientInfo: SessionInfo[\"session\"][\"client_info\"]) {\n return `${clientInfo.os} \u00B7 ${clientInfo.platform}`;\n}\n\nexport function saveSessionsToDataStore() {\n return DataStore.set(getDataKey(), savedSessionsCache);\n}\n\nexport async function fetchNamesFromDataStore() {\n const savedSessions = await DataStore.get>(getDataKey()) || new Map();\n savedSessions.forEach((data, idHash) => {\n savedSessionsCache.set(idHash, data);\n });\n}\n\nexport function GetOsColor(os: string) {\n switch (os) {\n case \"Windows Mobile\":\n case \"Windows\":\n return \"#55a6ef\"; // Light blue\n case \"Linux\":\n return \"#cdcd31\"; // Yellow\n case \"Android\":\n return \"#7bc958\"; // Green\n case \"Mac OS X\":\n case \"iOS\":\n return \"\"; // Default to white/black (theme-dependent)\n case \"Horizon OS\": // For Meta Quest (not to be confused with Horizon OS for the Nintendo Switch)\n return \"#0081fb\"; // A bright blue, more vibrant and strong and a bit darker than Windows\n default:\n return \"#f3799a\"; // Pink\n }\n}\n\nexport function GetPlatformIcon(platform: string) {\n switch (platform) {\n case \"Discord Android\":\n case \"Discord iOS\":\n case \"Discord Client\":\n case \"Discord VR\":\n return DiscordIcon;\n case \"Android Chrome\":\n case \"Chrome iOS\":\n case \"Chrome\":\n return ChromeIcon;\n case \"Edge\":\n return EdgeIcon;\n case \"Firefox\":\n return FirefoxIcon;\n case \"Internet Explorer\":\n return IEIcon;\n case \"Opera Mini\":\n case \"Opera\":\n return OperaIcon;\n case \"Mobile Safari\":\n case \"Safari\":\n return SafariIcon;\n case \"BlackBerry\":\n case \"Facebook Mobile\":\n case \"Android Mobile\":\n return MobileIcon;\n default:\n return UnknownIcon;\n }\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport { TextButton } from \"@components/Button\";\nimport { Heading } from \"@components/Heading\";\nimport { SessionInfo } from \"@plugins/betterSessions/types\";\nimport { getDefaultName, savedSessionsCache, saveSessionsToDataStore } from \"@plugins/betterSessions/utils\";\nimport { RenderModalProps } from \"@vencord/discord-types\";\nimport { Modal, React, TextInput } from \"@webpack/common\";\nimport { KeyboardEvent } from \"react\";\n\nexport function RenameModal({ props, session, state }: { props: RenderModalProps, session: SessionInfo[\"session\"], state: [string, React.Dispatch>]; }) {\n const [title, setTitle] = state;\n const [value, setValue] = React.useState(savedSessionsCache.get(session.id_hash)?.name ?? \"\");\n\n function onSaveClick() {\n savedSessionsCache.set(session.id_hash, { name: value, isNew: false });\n if (value !== \"\") {\n setTitle(`${value}*`);\n } else {\n setTitle(getDefaultName(session.client_info));\n }\n\n saveSessionsToDataStore();\n props.onClose();\n }\n\n return (\n props.onClose()\n },\n {\n text: \"Save\",\n variant: \"primary\",\n onClick: onSaveClick\n }\n ]}\n >\n
\n New device name\n ) => {\n if (e.key === \"Enter\") {\n onSaveClick();\n }\n }}\n />\n setValue(\"\")}\n >\n Reset Name\n \n
\n \n );\n}\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { Button } from \"@components/Button\";\nimport { SessionInfo } from \"@plugins/betterSessions/types\";\nimport { cl } from \"@plugins/betterSessions/utils\";\nimport { openModal } from \"@webpack/common\";\n\nimport { RenameModal } from \"./RenameModal\";\n\nexport function RenameButton({ session, state }: { session: SessionInfo[\"session\"], state: [string, React.Dispatch>]; }) {\n return (\n \n openModal(props => (\n \n ))\n }\n >\n Rename\n \n );\n}\n\nexport function NewButton() {\n return (\n \n NEW\n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./styles.css\";\n\nimport { showNotification } from \"@api/Notifications\";\nimport { definePluginSettings } from \"@api/Settings\";\nimport ErrorBoundary from \"@components/ErrorBoundary\";\nimport { Paragraph } from \"@components/Paragraph\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { findComponentByCodeLazy, findCssClassesLazy } from \"@webpack\";\nimport { AuthSessionsStore, Constants, React, RestAPI, SettingsRouter, Tooltip } from \"@webpack/common\";\n\nimport { NewButton, RenameButton } from \"./components/RenameButton\";\nimport { Session, SessionInfo } from \"./types\";\nimport { cl, fetchNamesFromDataStore, getDefaultName, GetOsColor, GetPlatformIcon, savedSessionsCache, saveSessionsToDataStore } from \"./utils\";\n\nconst TimestampClasses = findCssClassesLazy(\"timestamp\", \"blockquoteContainer\");\nconst BlobMask = findComponentByCodeLazy(\"!1,lowerBadgeSize:\");\n\nconst settings = definePluginSettings({\n backgroundCheck: {\n type: OptionType.BOOLEAN,\n description: \"Check for new sessions in the background, and display notifications when they are detected\",\n default: false,\n restartNeeded: true\n },\n checkInterval: {\n description: \"How often to check for new sessions in the background (if enabled), in minutes\",\n type: OptionType.NUMBER,\n default: 20,\n restartNeeded: true\n }\n});\n\nexport default definePlugin({\n name: \"BetterSessions\",\n description: \"Enhances the sessions (devices) menu. Allows you to view exact timestamps, give each session a custom name, and receive notifications about new sessions.\",\n authors: [Devs.amia],\n tags: [\"Notifications\", \"Customisation\", \"Utility\"],\n settings: settings,\n\n patches: [\n {\n find: \"#{intl::AUTH_SESSIONS_OS_UNKNOWN}\",\n replacement: [\n {\n match: /(#{intl::AUTH_SESSIONS_ACTIVE_RECENTLY}.{0,230}role:\"listitem\",children:\\[.{0,15},\\{icon:)\\i/,\n replace: \"$1()=>$self.renderIcon(arguments[0])\"\n },\n {\n match: /(\"horizontal\",gap:\"xs\",children:)\\[.{0,250}\"text-subtle\",children:\\i\\}\\)\\]\\}\\),/,\n replace: \"$1$self.renderName(arguments[0])}),\"\n },\n {\n match: /(\"text-muted\",children:)\\i(?=\\}\\)\\]\\}\\),.{0,120}\\.client_info\\?\\.location)/,\n replace: \"$1$self.renderDescription(arguments[0])\"\n },\n {\n match: /:\\i\\(\\i\\.approx_last_used_time\\).{0,40}\\(0,\\i\\.jsxs?\\)\\(\\i,\\{/,\n replace: \"$&session:arguments[0]?.session,\"\n },\n ]\n },\n ],\n\n renderName: ErrorBoundary.wrap(({ session }: SessionInfo) => {\n const savedSession = savedSessionsCache.get(session.id_hash);\n\n const state = React.useState(savedSession?.name ? `${savedSession.name}*` : getDefaultName(session.client_info));\n const [title, setTitle] = state;\n // Show a \"NEW\" badge if the session is seen for the first time\n return (\n <>\n {title}\n
\n {(savedSession == null || savedSession.isNew) && (\n \n )}\n \n
\n \n );\n }, { noop: true }),\n\n renderDescription: ErrorBoundary.wrap(({ session, description }: { session: Session, description: string; }) => {\n const [label, timeLabel] = description.split(\" \\xb7 \");\n\n return (\n
\n {label}\n {timeLabel && (\n <>\n {\" \\xb7 \"}\n \n {props => (\n \n {timeLabel}\n \n )}\n \n \n )}\n
\n );\n }, { noop: true }),\n\n renderIcon: ErrorBoundary.wrap(({ session, icon: DeviceIcon }: { session: Session; icon: React.ComponentType; }) => {\n const PlatformIcon = GetPlatformIcon(session.client_info.platform);\n\n return (\n \n \n \n }\n lowerBadgeSize={{\n width: 20,\n height: 20\n }}\n >\n \n \n \n \n );\n }, { noop: true }),\n\n async checkNewSessions() {\n const data = await RestAPI.get({\n url: Constants.Endpoints.AUTH_SESSIONS\n });\n\n for (const session of data.body.user_sessions) {\n if (savedSessionsCache.has(session.id_hash)) continue;\n\n savedSessionsCache.set(session.id_hash, { name: \"\", isNew: true });\n showNotification({\n title: \"BetterSessions\",\n body: `New session:\\n${session.client_info.os} \u00B7 ${session.client_info.platform} \u00B7 ${session.client_info.location}`,\n permanent: true,\n onClick: () => SettingsRouter.openUserSettings(\"sessions_panel\")\n });\n }\n\n saveSessionsToDataStore();\n },\n\n flux: {\n USER_SETTINGS_ACCOUNT_RESET_AND_CLOSE_FORM() {\n const lastFetchedHashes: string[] = AuthSessionsStore.getSessions().map(session => session.id_hash);\n\n // Add new sessions to cache\n lastFetchedHashes.forEach(idHash => {\n if (!savedSessionsCache.has(idHash)) savedSessionsCache.set(idHash, { name: \"\", isNew: false });\n });\n\n // Delete removed sessions from cache\n if (lastFetchedHashes.length > 0) {\n savedSessionsCache.forEach((_, idHash) => {\n if (!lastFetchedHashes.includes(idHash)) savedSessionsCache.delete(idHash);\n });\n }\n\n // Dismiss the \"NEW\" badge of all sessions.\n // Since the only way for a session to be marked as \"NEW\" is going to the Devices tab,\n // closing the settings means they've been viewed and are no longer considered new.\n savedSessionsCache.forEach(data => {\n data.isNew = false;\n });\n saveSessionsToDataStore();\n }\n },\n\n async start() {\n await fetchNamesFromDataStore();\n\n this.checkNewSessions();\n if (settings.store.backgroundCheck) {\n this.checkInterval = setInterval(this.checkNewSessions, settings.store.checkInterval * 60 * 1000);\n }\n },\n\n stop() {\n clearInterval(this.checkInterval);\n }\n});\n", ".vc-toolbox-btn,\n.vc-toolbox-icon {\n -webkit-app-region: no-drag;\n}\n\n.vc-toolbox-icon {\n color: var(--interactive-icon-default);\n}\n\n.vc-toolbox-btn[class*=\"selected\"] .vc-toolbox-icon {\n color: var(--interactive-icon-active);\n}\n\n.vc-toolbox-btn:hover .vc-toolbox-icon {\n color: var(--interactive-icon-hover);\n}", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2023 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\nimport \"./styles.css\";\n\nimport { HeaderBarButton } from \"@api/HeaderBar\";\nimport { definePluginSettings, migratePluginSettings } from \"@api/Settings\";\nimport { Devs } from \"@utils/constants\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { Popout, useRef, useState } from \"@webpack/common\";\n\nimport { renderPopout } from \"./menu\";\n\nexport const settings = definePluginSettings({\n showPluginMenu: {\n type: OptionType.BOOLEAN,\n default: true,\n description: \"Show the plugins menu in the toolbox\",\n }\n});\n\nfunction Icon(props: React.SVGProps) {\n return (\n \n \n \n \n \n );\n}\n\nfunction VencordPopoutButton() {\n const buttonRef = useRef(null);\n const [show, setShow] = useState(false);\n\n return (\n setShow(false)}\n targetElementRef={buttonRef}\n renderPopout={() => renderPopout(() => setShow(false))}\n >\n {(_, { isShown }) => (\n setShow(v => !v)}\n tooltip={isShown ? null : \"Equicord Toolbox\"}\n icon={Icon}\n selected={isShown}\n />\n )}\n \n );\n}\n\nmigratePluginSettings(\"EquicordToolbox\", \"VencordToolbox\");\nexport default definePlugin({\n name: \"EquicordToolbox\",\n description: \"Adds a button next to the inbox button in the channel header that houses Equicord quick actions\",\n tags: [\"Voice\", \"Accessibility\"],\n authors: [Devs.Ven, Devs.AutumnVN],\n dependencies: [\"HeaderBarAPI\"],\n settings,\n headerBarButton: {\n icon: Icon,\n render: VencordPopoutButton,\n priority: 1337\n }\n});\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2025 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { openNotificationLogModal } from \"@api/Notifications/notificationLog\";\nimport { isPluginEnabled, isSettingDisabled, isSettingHidden, plugins } from \"@api/PluginManager\";\nimport { Settings, useSettings } from \"@api/Settings\";\nimport { openPluginModal, openSettingsTabModal, PluginsTab, ThemesTab } from \"@components/settings\";\nimport { useAwaiter } from \"@utils/react\";\nimport { wordsFromCamel, wordsToTitle } from \"@utils/text\";\nimport { OptionType, Plugin } from \"@utils/types\";\nimport { Menu, showToast, useMemo, useState } from \"@webpack/common\";\nimport type { ReactNode } from \"react\";\n\nimport { settings } from \".\";\n\nfunction buildPluginMenu() {\n const { showPluginMenu } = settings.use([\"showPluginMenu\"]);\n\n // has to be here due to hooks\n const pluginEntries = buildPluginMenuEntries();\n\n if (!showPluginMenu) return null;\n\n return (\n openSettingsTabModal(PluginsTab)}\n >\n {pluginEntries}\n \n );\n}\n\nexport function buildPluginMenuEntries(includeEmpty = false) {\n const pluginSettings = useSettings().plugins;\n\n const [search, setSearch] = useState(\"\");\n\n const lowerSearch = search.toLowerCase();\n\n const sortedPlugins = useMemo(() =>\n Object.values(plugins).sort((a, b) => a.name.localeCompare(b.name)),\n []\n );\n\n const candidates = useMemo(() =>\n sortedPlugins\n .filter(p => {\n if (!isPluginEnabled(p.name)) return false;\n if (p.name.endsWith(\"API\")) return false;\n\n const name = p.name.toLowerCase();\n return name.includes(lowerSearch);\n }),\n [lowerSearch]\n );\n\n return (\n <>\n (\n \n )}\n />\n\n \n\n {candidates\n .map(p => {\n const options = [] as ReactNode[];\n\n let hasAnyOption = false;\n\n if (p.settings) for (const [key, option] of Object.entries(p.settings.def)) {\n if (isSettingHidden(p.settings, option)) continue;\n\n hasAnyOption = true;\n\n const s = pluginSettings[p.name];\n\n const baseProps = {\n id: `${p.name}-${key}`,\n key: key,\n label: wordsToTitle(wordsFromCamel(key)),\n disabled: isSettingDisabled(p.settings, option)\n };\n\n switch (option.type) {\n case OptionType.BOOLEAN:\n options.push(\n {\n s[key] = !s[key];\n if (option.restartNeeded) showToast(\"Restart to apply the change\");\n }}\n />\n );\n break;\n case OptionType.SELECT:\n options.push(\n \n {option.options.map(opt => (\n {\n s[key] = opt.value;\n if (option.restartNeeded) showToast(\"Restart to apply the change\");\n }}\n />\n ))}\n \n );\n break;\n case OptionType.SLIDER:\n // The menu slider doesn't support these options. Skip to avoid confusion\n if (option.stickToMarkers || option.componentProps) continue;\n\n options.push(\n (\n s[key] = v}\n />\n )}\n />\n );\n break;\n }\n }\n\n const hasVisibleOptions = options.length > 0;\n const shouldSkip = !hasVisibleOptions && !(includeEmpty && hasAnyOption);\n if (shouldSkip) return null;\n\n return (\n openPluginModal(p)}\n >\n {hasVisibleOptions && (\n <>\n \n {options}\n \n\n \n\n openPluginModal(p)}\n />\n \n )}\n \n );\n })\n }\n \n );\n}\n\nexport function buildThemeMenu() {\n return (\n openSettingsTabModal(ThemesTab)}\n >\n {buildThemeMenuEntries()}\n \n );\n}\n\nexport function buildThemeMenuEntries() {\n const { useQuickCss, enabledThemes } = useSettings([\"useQuickCss\", \"enabledThemes\"]);\n const [themes] = useAwaiter(VencordNative.themes.getThemesList);\n\n return (\n <>\n {\n Settings.useQuickCss = !useQuickCss;\n }}\n />\n VencordNative.quickCss.openEditor()}\n />\n openSettingsTabModal(ThemesTab)}\n />\n {!!themes?.length && (\n \n {themes.map(theme => (\n {\n if (enabledThemes.includes(theme.fileName)) {\n Settings.enabledThemes = enabledThemes.filter(t => t !== theme.fileName);\n } else {\n Settings.enabledThemes = [...enabledThemes, theme.fileName];\n }\n }}\n />\n ))}\n \n )}\n \n );\n}\n\nfunction buildCustomPluginEntries() {\n const pluginEntries = [] as { plugin: Plugin, node: ReactNode; }[];\n\n for (const plugin of Object.values(plugins)) {\n if (plugin.toolboxActions && isPluginEnabled(plugin.name)) {\n const entries = typeof plugin.toolboxActions === \"function\"\n ? plugin.toolboxActions()\n : Object.entries(plugin.toolboxActions).map(([text, action]) => {\n const key = `${plugin.name}-${text}`;\n\n return (\n \n );\n });\n\n if (!entries || Array.isArray(entries) && entries.length === 0) continue;\n\n pluginEntries.push({\n plugin,\n node:\n \n {entries}\n \n });\n }\n }\n\n // If there aren't too many entries, just put them all in the main menu.\n // Otherwise, add submenus for each plugin\n // FIXME: the Slider component has broken styles that overlap with higher context menus\n // https://discord.com/channels/1015060230222131221/1015063227299811479/1440489344631705693\n if (pluginEntries.length <= 5)\n return pluginEntries.map(e => e.node);\n\n const submenuEntries = pluginEntries.map(({ node, plugin }) => (\n openPluginModal(plugin)}\n >\n {node}\n \n ));\n\n return {submenuEntries};\n}\n\nexport function renderPopout(onClose: () => void) {\n return (\n \n \n\n {buildThemeMenu()}\n {buildPluginMenu()}\n\n {buildCustomPluginEntries()}\n \n );\n}\n", "/*\n * Vencord, a modification for Discord's desktop app\n * Copyright (c) 2022 Vendicated and contributors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n*/\n\n(window.VencordStyles ??= new Map()).set(\"src/plugins/betterSettings/fullHeightContext.css\", {\n name: \"src/plugins/betterSettings/fullHeightContext.css\",\n source: \"/*\\n * Discord has dumb max height logic for their context menus.\\n * If a context menu is at the bottom of the screen, its submenus are capped to its max height and can't even grow upwards\\n * We unset the variable they use to cap height. This allows submenus to grow as tall as they want\\n */\\n\\n#user-settings-cog,\\n[aria-activedescendant^=\\\"user-settings-cog\\\"] {\\n --reference-position-layer-max-height: initial !important;\\n}\",\n classNames: {},\n dom: null,\n});\n\nexport default \"src/plugins/betterSettings/fullHeightContext.css\";\n", "/*\n * Vencord, a Discord client mod\n * Copyright (c) 2024 Vendicated and contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n\nimport { definePluginSettings } from \"@api/Settings\";\nimport { disableStyle, enableStyle } from \"@api/Styles\";\nimport { AchievementsIcon, AppsIcon, CreditCardIcon, EquicordIcon, GameControllerIcon, HammerAndChiselIcon, MainSettingsIcon, PencilSparkleIcon, UserIcon } from \"@components/Icons\";\nimport { buildPluginMenuEntries, buildThemeMenuEntries } from \"@equicordplugins/equicordToolbox/menu\";\nimport { Devs } from \"@utils/constants\";\nimport { classNameFactory } from \"@utils/css\";\nimport { getIntlMessage } from \"@utils/discord\";\nimport { Logger } from \"@utils/Logger\";\nimport definePlugin, { OptionType } from \"@utils/types\";\nimport { Icon } from \"@vencord/discord-types\";\nimport { findCssClassesLazy } from \"@webpack\";\nimport { ComponentDispatch, FocusLock, Menu, useEffect, useRef } from \"@webpack/common\";\nimport type { HTMLAttributes, ReactElement, ReactNode } from \"react\";\n\nimport fullHeightStyle from \"./fullHeightContext.css?managed\";\n\nconst cl = classNameFactory(\"\");\nconst Classes = findCssClassesLazy(\"animating\", \"baseLayer\", \"bg\", \"layer\", \"layers\");\n\nconst SECTION_ICONS: Record = {\n profile_section: PencilSparkleIcon,\n user_section: UserIcon,\n equicord_section: EquicordIcon,\n billing_section: CreditCardIcon,\n app_section: AppsIcon,\n games_and_apps_section: GameControllerIcon,\n developer_section: HammerAndChiselIcon,\n utility_section: MainSettingsIcon,\n playgrounds: AchievementsIcon,\n};\n\nconst settings = definePluginSettings({\n disableFade: {\n description: \"Disable the crossfade animation\",\n type: OptionType.BOOLEAN,\n default: true,\n restartNeeded: true\n },\n organizeMenu: {\n description: \"Organizes the settings cog context menu into categories\",\n type: OptionType.BOOLEAN,\n default: true,\n restartNeeded: true\n },\n eagerLoad: {\n description: \"Removes the loading delay when opening the menu for the first time\",\n type: OptionType.BOOLEAN,\n default: true,\n restartNeeded: true\n }\n});\n\ninterface LayerProps extends HTMLAttributes {\n mode: \"SHOWN\" | \"HIDDEN\";\n baseLayer?: boolean;\n}\n\nfunction Layer({ mode, baseLayer = false, ...props }: LayerProps) {\n const hidden = mode === \"HIDDEN\";\n const containerRef = useRef(null);\n\n useEffect(() => () => {\n ComponentDispatch.dispatch(\"LAYER_POP_START\");\n ComponentDispatch.dispatch(\"LAYER_POP_COMPLETE\");\n }, []);\n\n const node = (\n