@kecan0406/ttheme 1.2.14 → 1.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/ttheme.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import{createRequire as w2}from"node:module";var d2=Object.create;var{getPrototypeOf:f2,defineProperty:Rg,getOwnPropertyNames:h2}=Object;var m2=Object.prototype.hasOwnProperty;function p2(t){return this[t]}var g2,b2,bd=(t,e,n)=>{var r=t!=null&&typeof t==="object";if(r){var i=e?g2??=new WeakMap:b2??=new WeakMap,o=i.get(t);if(o)return o}n=t!=null?d2(f2(t)):{};let s=e||!t||!t.__esModule?Rg(n,"default",{value:t,enumerable:!0}):n;for(let a of h2(t))if(!m2.call(s,a))Rg(s,a,{get:p2.bind(t,a),enumerable:!0});if(r)i.set(t,s);return s};var St=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Yt=w2(import.meta.url);var xd=St((u4,Xg)=>{var j2=Yt("util"),Qg=Yt("stream"),Je=Xg.exports=function(){Qg.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};j2.inherits(Je,Qg);Je.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),process.nextTick(function(){if(this._process(),this._paused&&this._reads&&this._reads.length>0)this._paused=!1,this.emit("drain")}.bind(this))};Je.prototype.write=function(t,e){if(!this.writable)return this.emit("error",Error("Stream not writable")),!1;let n;if(Buffer.isBuffer(t))n=t;else n=Buffer.from(t,e||this._encoding);if(this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0)this._paused=!0;return this.writable&&!this._paused};Je.prototype.end=function(t,e){if(t)this.write(t,e);if(this.writable=!1,!this._buffers)return;if(this._buffers.length===0)this._end();else this._buffers.push(null),this._process()};Je.prototype.destroySoon=Je.prototype.end;Je.prototype._end=function(){if(this._reads.length>0)this.emit("error",Error("Unexpected end of input"));this.destroy()};Je.prototype.destroy=function(){if(!this._buffers)return;this.writable=!1,this._reads=null,this._buffers=null,this.emit("close")};Je.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];if(e.length>t.length)this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length));else this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e)};Je.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,r=Buffer.alloc(t.length);while(e<t.length){let i=this._buffers[n++],o=Math.min(i.length,t.length-e);if(i.copy(r,e,0,o),e+=o,o!==i.length)this._buffers[--n]=i.slice(o)}if(n>0)this._buffers.splice(0,n);this._buffered-=t.length,t.func.call(this,r)};Je.prototype._process=function(){try{while(this._buffered>0&&this._reads&&this._reads.length>0){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else if(this._buffered>=t.length)this._processRead(t);else break}if(this._buffers&&!this.writable)this._end()}catch(t){this.emit("error",t)}}});var Od=St((_2)=>{var gr=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];_2.getImagePasses=function(t,e){let n=[],r=t%8,i=e%8,o=(t-r)/8,s=(e-i)/8;for(let a=0;a<gr.length;a++){let c=gr[a],u=o*c.x.length,l=s*c.y.length;for(let d=0;d<c.x.length;d++)if(c.x[d]<r)u++;else break;for(let d=0;d<c.y.length;d++)if(c.y[d]<i)l++;else break;if(u>0&&l>0)n.push({width:u,height:l,index:a})}return n};_2.getInterlaceIterator=function(t){return function(e,n,r){let i=e%gr[r].x.length,o=(e-i)/gr[r].x.length*8+gr[r].x[i],s=n%gr[r].y.length,a=(n-s)/gr[r].y.length*8+gr[r].y[s];return o*4+a*t*4}}});var Id=St((d4,tb)=>{tb.exports=function(e,n,r){let i=e+n-r,o=Math.abs(i-e),s=Math.abs(i-n),a=Math.abs(i-r);if(o<=s&&o<=a)return e;if(s<=a)return n;return r}});var Rd=St((f4,nb)=>{var U2=Od(),W2=Id();function eb(t,e,n){let r=t*e;if(n!==8)r=Math.ceil(r/(8/n));return r}var go=nb.exports=function(t,e){let{width:n,height:r,interlace:i,bpp:o,depth:s}=t;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let a=U2.getImagePasses(n,r);for(let c=0;c<a.length;c++)this._images.push({byteWidth:eb(a[c].width,o,s),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:eb(n,o,s),height:r,lineIndex:0});if(s===8)this._xComparison=o;else if(s===16)this._xComparison=o*2;else this._xComparison=1};go.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};go.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,i=r-1;for(let o=0;o<n;o++){let s=t[1+o],a=o>i?e[o-r]:0;e[o]=s+a}};go.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let i=0;i<n;i++){let o=t[1+i],s=r?r[i]:0;e[i]=o+s}};go.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,i=r-1,o=this._lastLine;for(let s=0;s<n;s++){let a=t[1+s],c=o?o[s]:0,u=s>i?e[s-r]:0,l=Math.floor((u+c)/2);e[s]=a+l}};go.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,i=r-1,o=this._lastLine;for(let s=0;s<n;s++){let a=t[1+s],c=o?o[s]:0,u=s>i?e[s-r]:0,l=s>i&&o?o[s-r]:0,d=W2(u,c,l);e[s]=a+d}};go.prototype._reverseFilterLine=function(t){let e=t[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(e===0)n=t.slice(1,i+1);else switch(n=Buffer.alloc(i),e){case 1:this._unFilterType1(t,n,i);break;case 2:this._unFilterType2(t,n,i);break;case 3:this._unFilterType3(t,n,i);break;case 4:this._unFilterType4(t,n,i);break;default:throw Error("Unrecognised filter type - "+e)}if(this.write(n),r.lineIndex++,r.lineIndex>=r.height)this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex];else this._lastLine=n;if(r)this.read(r.byteWidth+1,this._reverseFilterLine.bind(this));else this._lastLine=null,this.complete()}});var ob=St((h4,ib)=>{var K2=Yt("util"),rb=xd(),z2=Rd(),D2=ib.exports=function(t){rb.call(this);let e=[],n=this;this._filter=new z2(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};K2.inherits(D2,rb)});var bo=St((m4,sb)=>{sb.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var Ad=St((p4,ab)=>{var Pd=[];(function(){for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)if(e&1)e=3988292384^e>>>1;else e=e>>>1;Pd[t]=e}})();var Nd=ab.exports=function(){this._crc=-1};Nd.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=Pd[(this._crc^t[e])&255]^this._crc>>>8;return!0};Nd.prototype.crc32=function(){return this._crc^-1};Nd.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=Pd[(e^t[n])&255]^e>>>8;return e^-1}});var Td=St((g4,cb)=>{var Ht=bo(),q2=Ad(),Ft=cb.exports=function(t,e){this._options=t,t.checkCRC=t.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[Ht.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[Ht.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[Ht.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[Ht.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[Ht.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[Ht.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};Ft.prototype.start=function(){this.read(Ht.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Ft.prototype._parseSignature=function(t){let e=Ht.PNG_SIGNATURE;for(let n=0;n<e.length;n++)if(t[n]!==e[n]){this.error(Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};Ft.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let o=4;o<8;o++)r+=String.fromCharCode(t[o]);let i=Boolean(t[4]&32);if(!this._hasIHDR&&n!==Ht.TYPE_IHDR){this.error(Error("Expected IHDR on beggining"));return}if(this._crc=new q2,this._crc.write(Buffer.from(r)),this._chunks[n])return this._chunks[n](e);if(!i){this.error(Error("Unsupported critical chunk type "+r));return}this.read(e+4,this._skipChunk.bind(this))};Ft.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Ft.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Ft.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==e){this.error(Error("Crc error - "+e+" - "+n));return}if(!this._hasIEND)this.read(8,this._parseChunkBegin.bind(this))};Ft.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};Ft.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],i=t[9],o=t[10],s=t[11],a=t[12];if(r!==8&&r!==4&&r!==2&&r!==1&&r!==16){this.error(Error("Unsupported bit depth "+r));return}if(!(i in Ht.COLORTYPE_TO_BPP_MAP)){this.error(Error("Unsupported color type"));return}if(o!==0){this.error(Error("Unsupported compression method"));return}if(s!==0){this.error(Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(Error("Unsupported interlace method"));return}this._colorType=i;let c=Ht.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:Boolean(a),palette:Boolean(i&Ht.COLORTYPE_PALETTE),color:Boolean(i&Ht.COLORTYPE_COLOR),alpha:Boolean(i&Ht.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};Ft.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};Ft.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let n=0;n<e;n++)this._palette.push([t[n*3],t[n*3+1],t[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};Ft.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};Ft.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===Ht.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error("Transparency chunk must be after palette"));return}if(t.length>this._palette.length){this.error(Error("More transparent colors than palette size"));return}for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}if(this._colorType===Ht.COLORTYPE_GRAYSCALE)this.transColor([t.readUInt16BE(0)]);if(this._colorType===Ht.COLORTYPE_COLOR)this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]);this._handleChunkEnd()};Ft.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};Ft.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/Ht.GAMMA_DIVISION),this._handleChunkEnd()};Ft.prototype._handleIDAT=function(t){if(!this._emittedHeadersFinished)this._emittedHeadersFinished=!0,this.headersFinished();this.read(-t,this._parseIDAT.bind(this,t))};Ft.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===Ht.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error("Expected palette not found");this.inflateData(e);let n=t-e.length;if(n>0)this._handleIDAT(n);else this._handleChunkEnd()};Ft.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};Ft.prototype._parseIEND=function(t){if(this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished)this.finished()}});var Hd=St((X2)=>{var ub=Od(),Y2=[function(){},function(t,e,n,r){if(r===e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=255},function(t,e,n,r){if(r+1>=e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=e[r+1]},function(t,e,n,r){if(r+2>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=255},function(t,e,n,r){if(r+3>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=e[r+3]}],J2=[function(){},function(t,e,n,r){let i=e[0];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=r},function(t,e,n){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[1]},function(t,e,n,r){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=r},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function V2(t,e){let n=[],r=0;function i(){if(r===t.length)throw Error("Ran out of data");let o=t[r];r++;let s,a,c,u,l,d,f,h;switch(e){default:throw Error("unrecognised depth");case 16:f=t[r],r++,n.push((o<<8)+f);break;case 4:f=o&15,h=o>>4,n.push(h,f);break;case 2:l=o&3,d=o>>2&3,f=o>>4&3,h=o>>6&3,n.push(h,f,d,l);break;case 1:s=o&1,a=o>>1&1,c=o>>2&1,u=o>>3&1,l=o>>4&1,d=o>>5&1,f=o>>6&1,h=o>>7&1,n.push(h,f,d,l,u,c,a,s);break}}return{get:function(o){while(n.length<o)i();let s=n.slice(0,o);return n=n.slice(o),s},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw Error("extra data found")}}}function Z2(t,e,n,r,i,o){let{width:s,height:a,index:c}=t;for(let u=0;u<a;u++)for(let l=0;l<s;l++){let d=n(l,u,c);Y2[r](e,i,d,o),o+=r}return o}function Q2(t,e,n,r,i,o){let{width:s,height:a,index:c}=t;for(let u=0;u<a;u++){for(let l=0;l<s;l++){let d=i.get(r),f=n(l,u,c);J2[r](e,d,f,o)}i.resetAfterLine()}}X2.dataToBitMap=function(t,e){let{width:n,height:r,depth:i,bpp:o,interlace:s}=e,a;if(i!==8)a=V2(t,i);let c;if(i<=8)c=Buffer.alloc(n*r*4);else c=new Uint16Array(n*r*4);let u=Math.pow(2,i)-1,l=0,d,f;if(s)d=ub.getImagePasses(n,r),f=ub.getInterlaceIterator(n,r);else{let h=0;f=function(){let m=h;return h+=4,m},d=[{width:n,height:r}]}for(let h=0;h<d.length;h++)if(i===8)l=Z2(d[h],c,f,o,t,l);else Q2(d[h],c,f,o,a,u);if(i===8){if(l!==t.length)throw Error("extra data found")}else a.end();return c}});var Cd=St((w4,lb)=>{function eO(t,e,n,r,i){let o=0;for(let s=0;s<r;s++)for(let a=0;a<n;a++){let c=i[t[o]];if(!c)throw Error("index "+t[o]+" not in palette");for(let u=0;u<4;u++)e[o+u]=c[u];o+=4}}function nO(t,e,n,r,i){let o=0;for(let s=0;s<r;s++)for(let a=0;a<n;a++){let c=!1;if(i.length===1){if(i[0]===t[o])c=!0}else if(i[0]===t[o]&&i[1]===t[o+1]&&i[2]===t[o+2])c=!0;if(c)for(let u=0;u<4;u++)e[o+u]=0;o+=4}}function rO(t,e,n,r,i){let o=255,s=Math.pow(2,i)-1,a=0;for(let c=0;c<r;c++)for(let u=0;u<n;u++){for(let l=0;l<4;l++)e[a+l]=Math.floor(t[a+l]*o/s+0.5);a+=4}}lb.exports=function(t,e,n=!1){let{depth:r,width:i,height:o,colorType:s,transColor:a,palette:c}=e,u=t;if(s===3)eO(t,u,i,o,c);else{if(a)nO(t,u,i,o,a);if(r!==8&&!n){if(r===16)u=Buffer.alloc(i*o*4);rO(t,u,i,o,r)}}return u}});var hb=St(($4,fb)=>{var iO=Yt("util"),Ld=Yt("zlib"),db=xd(),oO=ob(),sO=Td(),aO=Hd(),cO=Cd(),wn=fb.exports=function(t){db.call(this),this._parser=new sO(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};iO.inherits(wn,db);wn.prototype._handleError=function(t){if(this.emit("error",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy)this._inflate.destroy();if(this._filter)this._filter.destroy(),this._filter.on("error",function(){});this.errord=!0};wn.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Ld.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let n=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,r=Math.max(n,Ld.Z_MIN_CHUNK);this._inflate=Ld.createInflate({chunkSize:r});let i=n,o=this.emit.bind(this,"error");this._inflate.on("error",function(a){if(!i)return;o(a)}),this._filter.on("complete",this._complete.bind(this));let s=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){if(!i)return;if(a.length>i)a=a.slice(0,i);i-=a.length,s(a)}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};wn.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new oO(this._bitmapInfo)};wn.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};wn.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};wn.prototype._simpleTransparency=function(){this._metaData.alpha=!0};wn.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};wn.prototype._finished=function(){if(this.errord)return;if(!this._inflate)this.emit("error","No Inflate block");else this._inflate.end()};wn.prototype._complete=function(t){if(this.errord)return;let e;try{let n=aO.dataToBitMap(t,this._bitmapInfo);e=cO(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var pb=St((k4,mb)=>{var Fe=bo();mb.exports=function(t,e,n,r){let i=[Fe.COLORTYPE_COLOR_ALPHA,Fe.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let m=function(){let g=new ArrayBuffer(2);return new DataView(g).setInt16(0,256,!0),new Int16Array(g)[0]!==256}();if(r.bitDepth===8||r.bitDepth===16&&m)return t}let o=r.bitDepth!==16?t:new Uint16Array(t.buffer),s=255,a=Fe.COLORTYPE_TO_BPP_MAP[r.inputColorType];if(a===4&&!r.inputHasAlpha)a=3;let c=Fe.COLORTYPE_TO_BPP_MAP[r.colorType];if(r.bitDepth===16)s=65535,c*=2;let u=Buffer.alloc(e*n*c),l=0,d=0,f=r.bgColor||{};if(f.red===void 0)f.red=s;if(f.green===void 0)f.green=s;if(f.blue===void 0)f.blue=s;function h(){let m,g,b,w=s;switch(r.inputColorType){case Fe.COLORTYPE_COLOR_ALPHA:w=o[l+3],m=o[l],g=o[l+1],b=o[l+2];break;case Fe.COLORTYPE_COLOR:m=o[l],g=o[l+1],b=o[l+2];break;case Fe.COLORTYPE_ALPHA:w=o[l+1],m=o[l],g=m,b=m;break;case Fe.COLORTYPE_GRAYSCALE:m=o[l],g=m,b=m;break;default:throw Error("input color type:"+r.inputColorType+" is not supported at present")}if(r.inputHasAlpha){if(!i)w/=s,m=Math.min(Math.max(Math.round((1-w)*f.red+w*m),0),s),g=Math.min(Math.max(Math.round((1-w)*f.green+w*g),0),s),b=Math.min(Math.max(Math.round((1-w)*f.blue+w*b),0),s)}return{red:m,green:g,blue:b,alpha:w}}for(let m=0;m<n;m++)for(let g=0;g<e;g++){let b=h(o,l);switch(r.colorType){case Fe.COLORTYPE_COLOR_ALPHA:case Fe.COLORTYPE_COLOR:if(r.bitDepth===8){if(u[d]=b.red,u[d+1]=b.green,u[d+2]=b.blue,i)u[d+3]=b.alpha}else if(u.writeUInt16BE(b.red,d),u.writeUInt16BE(b.green,d+2),u.writeUInt16BE(b.blue,d+4),i)u.writeUInt16BE(b.alpha,d+6);break;case Fe.COLORTYPE_ALPHA:case Fe.COLORTYPE_GRAYSCALE:{let w=(b.red+b.green+b.blue)/3;if(r.bitDepth===8){if(u[d]=w,i)u[d+1]=b.alpha}else if(u.writeUInt16BE(w,d),i)u.writeUInt16BE(b.alpha,d+2);break}default:throw Error("unrecognised color Type "+r.colorType)}l+=a,d+=c}return u}});var wb=St((y4,bb)=>{var gb=Id();function uO(t,e,n,r,i){for(let o=0;o<n;o++)r[i+o]=t[e+o]}function lO(t,e,n){let r=0,i=e+n;for(let o=e;o<i;o++)r+=Math.abs(t[o]);return r}function dO(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=t[e+s]-a;r[i+s]=c}}function fO(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=t[e+o]-s;i+=Math.abs(a)}return i}function hO(t,e,n,r,i){for(let o=0;o<n;o++){let s=e>0?t[e+o-n]:0,a=t[e+o]-s;r[i+o]=a}}function mO(t,e,n){let r=0,i=e+n;for(let o=e;o<i;o++){let s=e>0?t[o-n]:0,a=t[o]-s;r+=Math.abs(a)}return r}function pO(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=e>0?t[e+s-n]:0,u=t[e+s]-(a+c>>1);r[i+s]=u}}function gO(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=e>0?t[e+o-n]:0,c=t[e+o]-(s+a>>1);i+=Math.abs(c)}return i}function bO(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=e>0?t[e+s-n]:0,u=e>0&&s>=o?t[e+s-(n+o)]:0,l=t[e+s]-gb(a,c,u);r[i+s]=l}}function wO(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=e>0?t[e+o-n]:0,c=e>0&&o>=r?t[e+o-(n+r)]:0,u=t[e+o]-gb(s,a,c);i+=Math.abs(u)}return i}var $O={0:uO,1:dO,2:hO,3:pO,4:bO},kO={0:lO,1:fO,2:mO,3:gO,4:wO};bb.exports=function(t,e,n,r,i){let o;if(!("filterType"in r)||r.filterType===-1)o=[0,1,2,3,4];else if(typeof r.filterType==="number")o=[r.filterType];else throw Error("unrecognised filter types");if(r.bitDepth===16)i*=2;let s=e*i,a=0,c=0,u=Buffer.alloc((s+1)*n),l=o[0];for(let d=0;d<n;d++){if(o.length>1){let f=1/0;for(let h=0;h<o.length;h++){let m=kO[o[h]](t,c,s,i);if(m<f)l=o[h],f=m}}u[a]=l,a++,$O[l](t,c,s,u,a,i),a+=s,c+=s}return u}});var Fd=St((v4,$b)=>{var Jt=bo(),yO=Ad(),vO=pb(),SO=wb(),EO=Yt("zlib"),br=$b.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32768,t.deflateLevel=t.deflateLevel!=null?t.deflateLevel:9,t.deflateStrategy=t.deflateStrategy!=null?t.deflateStrategy:3,t.inputHasAlpha=t.inputHasAlpha!=null?t.inputHasAlpha:!0,t.deflateFactory=t.deflateFactory||EO.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType==="number"?t.colorType:Jt.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType==="number"?t.inputColorType:Jt.COLORTYPE_COLOR_ALPHA,[Jt.COLORTYPE_GRAYSCALE,Jt.COLORTYPE_COLOR,Jt.COLORTYPE_COLOR_ALPHA,Jt.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw Error("option color type:"+t.colorType+" is not supported at present");if([Jt.COLORTYPE_GRAYSCALE,Jt.COLORTYPE_COLOR,Jt.COLORTYPE_COLOR_ALPHA,Jt.COLORTYPE_ALPHA].indexOf(t.inputColorType)===-1)throw Error("option input color type:"+t.inputColorType+" is not supported at present");if(t.bitDepth!==8&&t.bitDepth!==16)throw Error("option bit depth:"+t.bitDepth+" is not supported at present")};br.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};br.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};br.prototype.filterData=function(t,e,n){let r=vO(t,e,n,this._options),i=Jt.COLORTYPE_TO_BPP_MAP[this._options.colorType];return SO(r,e,n,this._options,i)};br.prototype._packChunk=function(t,e){let n=e?e.length:0,r=Buffer.alloc(n+12);if(r.writeUInt32BE(n,0),r.writeUInt32BE(t,4),e)e.copy(r,8);return r.writeInt32BE(yO.crc32(r.slice(4,r.length-4)),r.length-4),r};br.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*Jt.GAMMA_DIVISION),0),this._packChunk(Jt.TYPE_gAMA,e)};br.prototype.packIHDR=function(t,e){let n=Buffer.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(Jt.TYPE_IHDR,n)};br.prototype.packIDAT=function(t){return this._packChunk(Jt.TYPE_IDAT,t)};br.prototype.packIEND=function(){return this._packChunk(Jt.TYPE_IEND,null)}});var Sb=St((S4,vb)=>{var MO=Yt("util"),kb=Yt("stream"),xO=bo(),OO=Fd(),yb=vb.exports=function(t){kb.call(this);let e=t||{};this._packer=new OO(e),this._deflate=this._packer.createDeflate(),this.readable=!0};MO.inherits(yb,kb);yb.prototype.pack=function(t,e,n,r){if(this.emit("data",Buffer.from(xO.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),r)this.emit("data",this._packer.packGAMA(r));let i=this._packer.filterData(t,e,n);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(o){this.emit("data",this._packer.packIDAT(o))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Rb=St((Ns,Ib)=>{var Eb=Yt("assert").ok,wo=Yt("zlib"),IO=Yt("util"),Mb=Yt("buffer").kMaxLength;function di(t){if(!(this instanceof di))return new di(t);if(t&&t.chunkSize<wo.Z_MIN_CHUNK)t.chunkSize=wo.Z_MIN_CHUNK;if(wo.Inflate.call(this,t),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&t.maxLength!=null)this._maxLength=t.maxLength}function RO(t){return new di(t)}function xb(t,e){if(e)process.nextTick(e);if(!t._handle)return;t._handle.close(),t._handle=null}di.prototype._processChunk=function(t,e,n){if(typeof n==="function")return wo.Inflate._processChunk.call(this,t,e,n);let r=this,i=t&&t.length,o=this._chunkSize-this._offset,s=this._maxLength,a=0,c=[],u=0,l;this.on("error",function(m){l=m});function d(m,g){if(r._hadError)return;let b=o-g;if(Eb(b>=0,"have should not go down"),b>0){let w=r._buffer.slice(r._offset,r._offset+b);if(r._offset+=b,w.length>s)w=w.slice(0,s);if(c.push(w),u+=w.length,s-=w.length,s===0)return!1}if(g===0||r._offset>=r._chunkSize)o=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize);if(g===0)return a+=i-m,i=m,!0;return!1}Eb(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,t,a,i,this._buffer,this._offset,o),f=f||this._writeState;while(!this._hadError&&d(f[0],f[1]));if(this._hadError)throw l;if(u>=Mb)throw xb(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+Mb.toString(16)+" bytes");let h=Buffer.concat(c,u);return xb(this),h};IO.inherits(di,wo.Inflate);function PO(t,e){if(typeof e==="string")e=Buffer.from(e);if(!(e instanceof Buffer))throw TypeError("Not a string or buffer");let n=t._finishFlushFlag;if(n==null)n=wo.Z_FINISH;return t._processChunk(e,n)}function Ob(t,e){return PO(new di(e),t)}Ib.exports=Ns=Ob;Ns.Inflate=di;Ns.createInflate=RO;Ns.inflateSync=Ob});var jd=St((E4,Nb)=>{var Pb=Nb.exports=function(t){this._buffer=t,this._reads=[]};Pb.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Pb.prototype.process=function(){while(this._reads.length>0&&this._buffer.length){let t=this._reads[0];if(this._buffer.length&&(this._buffer.length>=t.length||t.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}else break}if(this._reads.length>0)throw Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)throw Error("unrecognised content at end of stream")}});var Ab=St((TO)=>{var NO=jd(),AO=Rd();TO.process=function(t,e){let n=[],r=new NO(t);return new AO(e,{read:r.read.bind(r),write:function(o){n.push(o)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Lb=St((x4,Cb)=>{var Tb=!0,Hb=Yt("zlib"),CO=Rb();if(!Hb.deflateSync)Tb=!1;var LO=jd(),FO=Ab(),jO=Td(),_O=Hd(),BO=Cd();Cb.exports=function(t,e){if(!Tb)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n;function r(S){n=S}let i;function o(S){i=S}function s(S){i.transColor=S}function a(S){i.palette=S}function c(){i.alpha=!0}let u;function l(S){u=S}let d=[];function f(S){d.push(S)}let h=new LO(t);if(new jO(e,{read:h.read.bind(h),error:r,metadata:o,gamma:l,palette:a,transColor:s,inflateData:f,simpleTransparency:c}).start(),h.process(),n)throw n;let g=Buffer.concat(d);d.length=0;let b;if(i.interlace)b=Hb.inflateSync(g);else{let M=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;b=CO(g,{chunkSize:M,maxLength:M})}if(g=null,!b||!b.length)throw Error("bad png - invalid inflate data response");let w=FO.process(b,i);g=null;let k=_O.dataToBitMap(w,i);w=null;let v=BO(k,i,e.skipRescale);return i.data=v,i.gamma=u||0,i}});var Bb=St((O4,_b)=>{var Fb=!0,jb=Yt("zlib");if(!jb.deflateSync)Fb=!1;var GO=bo(),UO=Fd();_b.exports=function(t,e){if(!Fb)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new UO(e||{}),i=[];if(i.push(Buffer.from(GO.PNG_SIGNATURE)),i.push(r.packIHDR(t.width,t.height)),t.gamma)i.push(r.packGAMA(t.gamma));let o=r.filterData(t.data,t.width,t.height),s=jb.deflateSync(o,r.getDeflateOptions());if(o=null,!s||!s.length)throw Error("bad png - invalid compressed data response");return i.push(r.packIDAT(s)),i.push(r.packIEND()),Buffer.concat(i)}});var Gb=St((zO)=>{var WO=Lb(),KO=Bb();zO.read=function(t,e){return WO(t,e||{})};zO.write=function(t,e){return KO(t,e)}});var Wb=St((QO)=>{var YO=Yt("util"),Ub=Yt("stream"),JO=hb(),VO=Sb(),ZO=Gb(),re=QO.PNG=function(t){if(Ub.call(this),t=t||{},this.width=t.width|0,this.height=t.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,t.fill&&this.data)this.data.fill(0);this.gamma=0,this.readable=this.writable=!0,this._parser=new JO(t),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new VO(t),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};YO.inherits(re,Ub);re.sync=ZO;re.prototype.pack=function(){if(!this.data||!this.data.length)return this.emit("error","No data provided"),this;return process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this};re.prototype.parse=function(t,e){if(e){let n,r;n=function(i){this.removeListener("error",r),this.data=i,e(null,this)}.bind(this),r=function(i){this.removeListener("parsed",n),e(i,null)}.bind(this),this.once("parsed",n),this.once("error",r)}return this.end(t),this};re.prototype.write=function(t){return this._parser.write(t),!0};re.prototype.end=function(t){this._parser.end(t)};re.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};re.prototype._gamma=function(t){this.gamma=t};re.prototype._handleClose=function(){if(!this._parser.writable&&!this._packer.readable)this.emit("close")};re.bitblt=function(t,e,n,r,i,o,s,a){if(n|=0,r|=0,i|=0,o|=0,s|=0,a|=0,n>t.width||r>t.height||n+i>t.width||r+o>t.height)throw Error("bitblt reading outside image");if(s>e.width||a>e.height||s+i>e.width||a+o>e.height)throw Error("bitblt writing outside image");for(let c=0;c<o;c++)t.data.copy(e.data,(a+c)*e.width+s<<2,(r+c)*t.width+n<<2,(r+c)*t.width+n+i<<2)};re.prototype.bitblt=function(t,e,n,r,i,o,s){return re.bitblt(this,t,e,n,r,i,o,s),this};re.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let r=t.width*e+n<<2;for(let i=0;i<3;i++){let o=t.data[r+i]/255;o=Math.pow(o,0.45454545454545453/t.gamma),t.data[r+i]=Math.round(o*255)}}t.gamma=0}};re.prototype.adjustGamma=function(){re.adjustGamma(this)}});var eh=St((G6,F$)=>{var th={to(t,e){if(!e)return`\x1B[${t+1}G`;return`\x1B[${e+1};${t+1}H`},move(t,e){let n="";if(t<0)n+=`\x1B[${-t}D`;else if(t>0)n+=`\x1B[${t}C`;if(e<0)n+=`\x1B[${-e}A`;else if(e>0)n+=`\x1B[${e}B`;return n},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},YP={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},JP={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let n=0;n<t;n++)e+=this.line+(n<t-1?th.up():"");if(t)e+=th.left;return e}};F$.exports={cursor:th,scroll:YP,erase:JP,beep:"\x07"}});import{spawnSync as z5}from"node:child_process";import{isMainThread as D5}from"node:worker_threads";import{parseArgs as F5}from"node:util";var At={name:"@kecan0406/ttheme",version:"1.2.14",type:"module",bin:{ttheme:"bin/ttheme.js"},files:["bin","dist/manifest.json","shell","!shell/check.zsh"],description:"Character terminal palettes for Ghostty, kitty, Alacritty, WezTerm, iTerm2, Windows Terminal, Warp and Konsole",license:"MIT",author:"kecan0406",repository:{type:"git",url:"git+https://github.com/kecan0406/ttheme.git"},homepage:"https://github.com/kecan0406/ttheme#readme",bugs:"https://github.com/kecan0406/ttheme/issues",keywords:["terminal","theme","ghostty","kitty","alacritty","wezterm","iterm2","konsole"],devDependencies:{"@biomejs/biome":"^2.3.0","@clack/prompts":"^1.7.0","@jsquash/jpeg":"^1.6.0","@material/material-color-utilities":"^0.4.0","@types/bun":"^1.3.0","@types/pngjs":"6.0.5","@xterm/headless":"6.0.0","fast-string-width":"^3.0.2",pngjs:"7.0.0","smol-toml":"^1.9.0",typescript:"^5.8.2"},engines:{bun:">=1.3",node:">=20.11"}};import{existsSync as P8,readFileSync as N8}from"node:fs";var Pg=(()=>{let t=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(e)=>{let n=0;t.lastIndex=0;while(t.test(e))n+=1;return e.length-n}})(),Ng=(t)=>{return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510},Ag=(t)=>{return t===8987||t===9001||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12771||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=19903||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t>=131072&&t<=196605||t>=196608&&t<=262141};var k2=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,y2=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Tg=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,v2=/\t{1,1000}/y,Hg=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,S2=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,E2=/\p{M}+/gu,M2={limit:1/0,ellipsis:""},Cg=(t,e={},n={})=>{let r=e.limit??1/0,i=e.ellipsis??"",o=e?.ellipsisWidth??(i?Cg(i,M2,n).width:0),s=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,l=2,d=n.regularWidth??1,f=n.wideWidth??2,h=[[S2,d],[k2,0],[y2,a],[v2,c],[Hg,u],[Tg,f]],m=0,g=0,b=t.length,w=0,k=!1,v=b,S=Math.max(0,r-o),M=0,I=0,O=0,H=0;t:while(!0){if(I>M||g>=b&&g>m){let N=t.slice(M,I)||t.slice(m,g);w=0;for(let L of N.replaceAll(E2,"")){let K=L.codePointAt(0)||0;if(Ng(K))H=2;else if(Ag(K))H=f;else H=d;if(O+H>S)v=Math.min(v,Math.max(M,m)+w);if(O+H>r){k=!0;break t}w+=L.length,O+=H}M=I=0}if(g>=b)break t;for(let N=0,L=h.length;N<L;N++){let[K,B]=h[N];if(K.lastIndex=g,K.test(t)){if(w=K===Tg?Pg(t.slice(g,K.lastIndex)):K===Hg?1:K.lastIndex-g,H=w*B,O+H>S)v=Math.min(v,g+Math.floor((S-O)/B));if(O+H>r){k=!0;break t}O+=H,M=m,I=g,g=m=K.lastIndex;continue t}}g+=1}return{width:k?S:O,index:k?v:b,truncated:k,ellipsed:k&&r>=o}},Lg=Cg;var x2={limit:1/0,ellipsis:"",ellipsisWidth:0},O2=(t,e={})=>{return Lg(t,x2,e).width},_=O2;function wd(t){let e=t.replace("#","");return[e.slice(0,2),e.slice(2,4),e.slice(4,6)].map((n)=>Number.parseInt(n,16)).join(";")}function qe(t){return`\x1B[38;2;${wd(t)}m`}function mc(t,e){return`\x1B[48;2;${wd(t)};38;2;${wd(e)}m`}function Fg(t,e="\x1B[39m"){return`${t.map((n)=>`${qe(n)}■`).join(" ")}${e}`}var Lt="\x1B[0m",ct="\x1B[1m",C="\x1B[2m",$e="\x1B[22m",lo="\x1B[32m",ne="\x1B[33m",pc="\x1B[36m",jn=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"],Is="⧉";function gc(t,e){return e?`\x1B]8;;${e}\x1B\\${t}\x1B]8;;\x1B\\`:t}function Rs(t,e){if(t[e]!=="\x1B")return 0;if(t[e+1]==="]"){let r=t.indexOf("\x07",e+2),i=t.indexOf("\x1B\\",e+2),o=r!==-1&&(i===-1||r<i)?r+1:i!==-1?i+2:0;return o?o-e:0}if(t[e+1]!=="[")return 0;let n=e+2;while(n<t.length&&!/[@-~]/.test(t[n]))n++;return n<t.length?n-e+1:0}function $d(t,e){let n="",r=0,i=0;while(i<t.length){let o=Rs(t,i);if(o>0){n+=t.slice(i,i+o),i+=o;continue}let s=String.fromCodePoint(t.codePointAt(i)),a=_(s);if(r+a>e)break;n+=s,r+=a,i+=s.length}return{head:n,used:r}}function rt(t,e,n=!0){if(e<=0)return"";let r=_(t);if(r<=e)return n?t+" ".repeat(e-r):t;let{head:i,used:o}=$d(t,e-1);return`${i}${t.includes("\x1B")?"\x1B[0m":""}…${n?" ".repeat(e-1-o):""}`}function jg(t,e){let{head:n,used:r}=$d(t,e);return`${n}${t.includes("\x1B")?Lt:""}${" ".repeat(e-r)}`}function yt(t,e,n){let r=n-_(e)-1;return r<=0?rt(t,n):`${rt(t,r)} ${e}`}function bt(t,e){let n=[],r="";for(let i of t.split(/\s+/).filter(Boolean)){let o=r?`${r} ${i}`:i;if(_(o)<=e){r=o;continue}if(r)n.push(r);while(_(i)>e){let{head:s}=$d(i,e),a=Math.max(s.lastIndexOf("/")+1,s.lastIndexOf("#")),c=a>0?a:s.length;n.push(i.slice(0,c)),i=i.slice(c)}r=i}if(r)n.push(r);return n}import{existsSync as d$,readFileSync as zf}from"node:fs";import{join as f$}from"node:path";var I2=/^#[0-9a-f]{6}$/;function le(t){return I2.test(t)}function et(t){let e=Number.parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,e&255]}function pt(t,e,n){let r=et(t),i=et(e);return`#${r.map((o,s)=>Math.round(o+((i[s]??0)-o)*n).toString(16).padStart(2,"0")).join("")}`}function vt(t){let[e,n,r]=et(t).map((i)=>{let o=i/255;return o<=0.03928?o/12.92:((o+0.055)/1.055)**2.4});return 0.2126*e+0.7152*n+0.0722*r}function wt(t,e){let n=vt(t),r=vt(e);return(Math.max(n,r)+0.05)/(Math.min(n,r)+0.05)}function bc(t,e){return Math.round(wt(t,e)*100)/100}function R2(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function Et(t){let[e,n,r]=et(t).map(R2),i=Math.cbrt(0.4122214708*e+0.5363325363*n+0.0514459929*r),o=Math.cbrt(0.2119034982*e+0.6806995451*n+0.1073969566*r),s=Math.cbrt(0.0883024619*e+0.2817188376*n+0.6299787005*r),a=1.9779984951*i-2.428592205*o+0.4505937099*s,c=0.0259040371*i+0.7827717662*o-0.808675766*s;return{l:0.2104542553*i+0.793617785*o-0.0040720468*s,c:Math.hypot(a,c),h:(Math.atan2(c,a)*180/Math.PI+360)%360}}var hr=7,_g=3,kd=0.15,Bg=1.6,vd=[1,2,3,4,5,6,9,10,11,12,13,14],Gg=[7,15],mr=[1,2,3,4,5,6],ke={1:{name:"red",center:19,width:25},2:{name:"green",center:132,width:35},3:{name:"yellow",center:88,width:35},4:{name:"blue",center:250,width:60},5:{name:"magenta",center:329,width:40},6:{name:"cyan",center:197,width:60}},ui=0.03,Ye=25,fo=15,ho=0.08;function _n(t,e){let n=t.ansi[e];if(n===void 0)throw Error(`${t.name}: missing ANSI ${e}`);return n}function yd(t,e,n){let r=t.background;return e.flatMap((i)=>{let o=_n(t,i);return wt(o,r)<n?[`ANSI ${i} ${o} on ${r} is ${bc(o,r)}:1, needs ${n}:1`]:[]})}function Ug(t,e){return Math.min(...e.map((n)=>wt(_n(t,n),t.background)))}var Wg=[{rule:"foreground",label:"foreground on background",unit:"ratio",min:hr,measure:({foreground:t,background:e})=>wt(t,e),check:({foreground:t,background:e})=>wt(t,e)<hr?[`foreground ${t} on ${e} is ${bc(t,e)}:1, needs ${hr}:1`]:[]},{rule:"accents",label:"weakest accent on background",unit:"ratio",min:_g,measure:(t)=>Ug(t,vd),check:(t)=>yd(t,vd,_g)},{rule:"ansi0-dark",label:"ansi0 luminance",unit:"luminance",max:kd,measure:(t)=>vt(_n(t,0)),check:(t)=>{let e=_n(t,0);return vt(e)>kd?[`ANSI 0 ${e} has luminance ${vt(e).toFixed(3)}, needs <= ${kd}`]:[]}},{rule:"light-ansi",label:"ansi7 and ansi15 on background",unit:"ratio",min:hr,measure:(t)=>Ug(t,Gg),check:(t)=>yd(t,Gg,hr)},{rule:"ansi8-visible",label:"ansi8 on background",unit:"ratio",min:Bg,measure:(t)=>wt(_n(t,8),t.background),check:(t)=>yd(t,[8],Bg)},{rule:"selection",label:"foreground on selection",unit:"ratio",min:hr,measure:({foreground:t,selectionBackground:e})=>e===void 0?Number.NaN:wt(t,e),check:({foreground:t,selectionBackground:e})=>e!==void 0&&wt(t,e)<hr?[`foreground ${t} on selection ${e} is ${bc(t,e)}:1, needs ${hr}:1`]:[]}];function ye(t,e){let n=Math.abs(t-e)%360;return Math.min(n,360-n)}var pn=(t)=>t>8?t-8:t;function mo(t){let e=t.signatureSlots.filter((n)=>n.startsWith("ansi")).map((n)=>Number(n.slice(4)));return new Set(e.flatMap((n)=>mr.includes(pn(n))?[n,n>8?n-8:n+8]:[n]))}function Ps(t,e){let n=Et(_n(t,e));return n.c<ui?void 0:n}function pr(t){let e=mo(t);return vd.flatMap((n)=>{let r=Ps(t,n),i=ke[pn(n)];if(r===void 0||i===void 0||e.has(n))return[];let o=ye(r.h,i.center)-i.width;return o>0?[{slot:n,hue:r.h,over:o}]:[]})}function Bn(t){let e=new Set(t.signatureSlots);return mr.flatMap((n)=>{let r=Ps(t,n),i=Ps(t,n+8);if(r===void 0||i===void 0||e.has(`ansi${n}`)&&e.has(`ansi${n+8}`))return[];return[{normal:n,gap:ye(r.h,i.h)}]})}function Gn(t){let e=mo(t);return[0,8].flatMap((n)=>mr.flatMap((r)=>mr.filter((i)=>i>r).flatMap((i)=>{let[o,s]=[n+r,n+i],a=Ps(t,o),c=Ps(t,s);if(a===void 0||c===void 0||e.has(o)&&e.has(s))return[];return ye(a.h,c.h)<fo&&Math.abs(a.l-c.l)<ho?[[o,s]]:[]})))}var P2=[{rule:"ansi-role",label:"accent hue outside its ANSI role",unit:"degrees",max:0,measure:(t)=>Math.max(0,...pr(t).map((e)=>e.over)),check:(t)=>pr(t).map(({slot:e,hue:n,over:r})=>{let i=ke[pn(e)];return`ANSI ${e} ${_n(t,e)} has hue ${n.toFixed(0)}°, ${r.toFixed(0)}° outside ${i.name} (${i.center}±${i.width}°)`})},{rule:"bright-follows",label:"widest normal to bright hue gap",unit:"degrees",max:Ye,measure:(t)=>Math.max(0,...Bn(t).map((e)=>e.gap)),check:(t)=>Bn(t).filter((e)=>e.gap>Ye).map(({normal:e,gap:n})=>`ANSI ${e+8} is ${n.toFixed(0)}° from ANSI ${e}, needs <= ${Ye}°`)},{rule:"distinct",label:"accent pairs that read as one color",unit:"pairs",max:0,measure:(t)=>Gn(t).length,check:(t)=>Gn(t).map(([e,n])=>`ANSI ${e} ${_n(t,e)} and ANSI ${n} ${_n(t,n)} are within ${fo}° hue and ${ho} lightness`)}],wc=[...Wg,...P2],Sd=wc.map((t)=>t.rule),ve=wc.map(({rule:t,label:e,unit:n,min:r,max:i})=>({rule:t,label:e,unit:n,...r===void 0?{}:{min:r},...i===void 0?{}:{max:i}}));function gn(t){return wc.map((e)=>Math.round(e.measure(t)*1000)/1000)}function Kg(t,e){return t.filter((n)=>!e.waive.includes(n.rule)).flatMap((n)=>n.check(e).map((r)=>({theme:e.name,rule:n.rule,detail:r})))}function Un(t){return Kg(wc,t)}function zg(t){return Kg(Wg,t)}function Dg(t){return t.flatMap(Un)}import{chmodSync as N2,copyFileSync as A2,existsSync as po,mkdirSync as T2,readFileSync as Ed,realpathSync as H2,renameSync as Yg,rmSync as qg,statSync as C2,writeFileSync as Jg}from"node:fs";import{dirname as L2}from"node:path";function Vg(t){return`${t}.ttheme.bak`}var F2=/^(?:#|--) ttheme begin$|path = "ttheme-|^DefaultProfile=ttheme-/m;function Md(t){let e=Vg(t);if(po(t)&&!po(e)&&!F2.test(Ed(t,"utf8")))A2(t,e)}function F(t,e){let n=po(t)?H2(t):t;T2(L2(n),{recursive:!0});let r=`${n}.ttheme-${process.pid}`;if(Jg(r,e),po(n))N2(r,C2(n).mode&4095);Yg(r,n)}function li(t,e,n){if(Jg(t,n),t!==e)Yg(t,e)}function bn(t,e){if((po(t)?Ed(t,"utf8"):void 0)===e)return!1;return Md(t),F(t,e),!0}function Zg(t,e){let n=Vg(t),r=po(n)?Ed(n,"utf8"):void 0;if(e===""&&r===void 0)return qg(t,{force:!0}),"removed";if(F(t,e),r===void 0||r===e)return qg(n,{force:!0}),"restored";return"kept backup"}import{createHash as a0}from"node:crypto";import{copyFileSync as AR,existsSync as hf,mkdirSync as TR,readdirSync as HR,readFileSync as Io,renameSync as c0,rmSync as Oo,statSync as CR}from"node:fs";import{basename as u0,isAbsolute as LR,join as Y}from"node:path";import{createHash as iR}from"node:crypto";import{existsSync as oR,readdirSync as sR,readFileSync as aR,rmSync as cR,statSync as uR,utimesSync as lR}from"node:fs";import{join as Mo}from"node:path";import{readdirSync as dI,rmSync as fI,statSync as hI}from"node:fs";import{setDefaultAutoSelectFamilyAttemptTimeout as mI}from"node:net";import{homedir as pI}from"node:os";import{join as Ls}from"node:path";import{setTimeout as gI}from"node:timers/promises";var qb=bd(Wb(),1);import{constants as nI,deflateSync as rI,inflateSync as iI}from"node:zlib";import{inflateRawSync as tI}from"node:zlib";var XO=(()=>{var t=import.meta.url;return function(e={}){var n=e,r,i,o=new Promise((p,$)=>{r=p,i=$});let a=globalThis.ServiceWorkerGlobalScope!==void 0&&typeof self<"u"&&globalThis.caches&&globalThis.caches.default!==void 0,c=typeof process==="object"&&process.release&&process.release.name==="node";if(a||c){if(!globalThis.ImageData)globalThis.ImageData=class{constructor($,y,E){this.data=$,this.width=y,this.height=E}};if(import.meta.url===void 0)import.meta.url="https://localhost";if(typeof self<"u"&&self.location===void 0)self.location={href:""}}var u=Object.assign({},n),l=[],d="./this.program",f=(p,$)=>{throw $},h=typeof window=="object",m=typeof importScripts=="function",g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b="";function w(p){if(n.locateFile)return n.locateFile(p,b);return b+p}var k,v,S;if(h||m){if(m)b=self.location.href;else if(typeof document<"u"&&document.currentScript)b=document.currentScript.src;if(t)b=t;if(b.startsWith("blob:"))b="";else b=b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1);{if(k=(p)=>{var $=new XMLHttpRequest;return $.open("GET",p,!1),$.send(null),$.responseText},m)S=(p)=>{var $=new XMLHttpRequest;return $.open("GET",p,!1),$.responseType="arraybuffer",$.send(null),new Uint8Array($.response)};v=(p,$,y)=>{var E=new XMLHttpRequest;E.open("GET",p,!0),E.responseType="arraybuffer",E.onload=()=>{if(E.status==200||E.status==0&&E.response){$(E.response);return}y()},E.onerror=y,E.send(null)}}}var M=n.print||console.log.bind(console),I=n.printErr||console.error.bind(console);if(Object.assign(n,u),u=null,n.arguments)l=n.arguments;if(n.thisProgram)d=n.thisProgram;if(n.quit)f=n.quit;var O;if(n.wasmBinary)O=n.wasmBinary;var H,N=!1,L,K,B,X,z,Mt,tt,fr,fn;function hn(){var p=H.buffer;n.HEAP8=K=new Int8Array(p),n.HEAP16=X=new Int16Array(p),n.HEAPU8=B=new Uint8Array(p),n.HEAPU16=z=new Uint16Array(p),n.HEAP32=Mt=new Int32Array(p),n.HEAPU32=tt=new Uint32Array(p),n.HEAPF32=fr=new Float32Array(p),n.HEAPF64=fn=new Float64Array(p)}var mn=[],lc=[],ri=[],rd=!1;function id(){if(n.preRun){if(typeof n.preRun=="function")n.preRun=[n.preRun];while(n.preRun.length)vM(n.preRun.shift())}ad(mn)}function od(){rd=!0,ad(lc)}function yM(){if(n.postRun){if(typeof n.postRun=="function")n.postRun=[n.postRun];while(n.postRun.length)EM(n.postRun.shift())}ad(ri)}function vM(p){mn.unshift(p)}function SM(p){lc.unshift(p)}function EM(p){ri.unshift(p)}var ii=0,sd=null,xs=null;function MM(p){ii++,n.monitorRunDependencies?.(ii)}function xM(p){if(ii--,n.monitorRunDependencies?.(ii),ii==0){if(sd!==null)clearInterval(sd),sd=null;if(xs){var $=xs;xs=null,$()}}}function ug(p){n.onAbort?.(p),p="Aborted("+p+")",I(p),N=!0,L=1,p+=". Build with -sASSERTIONS for more info.";var $=new WebAssembly.RuntimeError(p);throw i($),$}var OM="data:application/octet-stream;base64,",lg=(p)=>p.startsWith(OM),oi;if(n.locateFile){if(oi="mozjpeg_dec.wasm",!lg(oi))oi=w(oi)}else oi=new URL("mozjpeg_dec.wasm",import.meta.url).href;function dg(p){if(p==oi&&O)return new Uint8Array(O);if(S)return S(p);throw"both async and sync fetching of the wasm failed"}function IM(p){if(!O&&(h||m)){if(typeof fetch=="function")return fetch(p,{credentials:"same-origin"}).then(($)=>{if(!$.ok)throw`failed to load wasm binary file at '${p}'`;return $.arrayBuffer()}).catch(()=>dg(p))}return Promise.resolve().then(()=>dg(p))}function fg(p,$,y){return IM(p).then((E)=>WebAssembly.instantiate(E,$)).then(y,(E)=>{I(`failed to asynchronously prepare wasm: ${E}`),ug(E)})}function RM(p,$,y,E){if(!p&&typeof WebAssembly.instantiateStreaming=="function"&&!lg($)&&typeof fetch=="function")return fetch($,{credentials:"same-origin"}).then((R)=>{var P=WebAssembly.instantiateStreaming(R,y);return P.then(E,function(G){return I(`wasm streaming compile failed: ${G}`),I("falling back to ArrayBuffer instantiation"),fg($,y,E)})});return fg($,y,E)}function PM(){var p={a:t2};function $(E,R){return te=E.exports,H=te.A,hn(),kg=te.F,SM(te.B),xM("wasm-instantiate"),te}MM("wasm-instantiate");function y(E){$(E.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(p,$)}catch(E){I(`Module.instantiateWasm callback failed with error: ${E}`),i(E)}return RM(O,oi,p,y).catch(i),{}}function NM(p){this.name="ExitStatus",this.message=`Program terminated with exit(${p})`,this.status=p}var ad=(p)=>{while(p.length>0)p.shift()(n)},AM=n.noExitRuntime||!0;class hg{constructor(p){this.excPtr=p,this.ptr=p-24}set_type(p){tt[this.ptr+4>>2]=p}get_type(){return tt[this.ptr+4>>2]}set_destructor(p){tt[this.ptr+8>>2]=p}get_destructor(){return tt[this.ptr+8>>2]}set_caught(p){p=p?1:0,K[this.ptr+12]=p}get_caught(){return K[this.ptr+12]!=0}set_rethrown(p){p=p?1:0,K[this.ptr+13]=p}get_rethrown(){return K[this.ptr+13]!=0}init(p,$){this.set_adjusted_ptr(0),this.set_type(p),this.set_destructor($)}set_adjusted_ptr(p){tt[this.ptr+16>>2]=p}get_adjusted_ptr(){return tt[this.ptr+16>>2]}get_exception_ptr(){var p=Og(this.get_type());if(p)return tt[this.excPtr>>2];var $=this.get_adjusted_ptr();if($!==0)return $;return this.excPtr}}var mg=0,TM=0,HM=(p,$,y)=>{var E=new hg(p);throw E.init($,y),mg=p,TM++,mg},CM=(p,$,y,E,R)=>{},LM=()=>{var p=Array(256);for(var $=0;$<256;++$)p[$]=String.fromCharCode($);pg=p},pg,De=(p)=>{var $="",y=p;while(B[y])$+=pg[B[y++]];return $},so={},si={},dc={},gg,we=(p)=>{throw new gg(p)},bg,wg=(p)=>{throw new bg(p)},FM=(p,$,y)=>{p.forEach(function(T){dc[T]=$});function E(T){var U=y(T);if(U.length!==p.length)wg("Mismatched type converter count");for(var Z=0;Z<p.length;++Z)Cn(p[Z],U[Z])}var R=Array($.length),P=[],G=0;if($.forEach((T,U)=>{if(si.hasOwnProperty(T))R[U]=si[T];else{if(P.push(T),!so.hasOwnProperty(T))so[T]=[];so[T].push(()=>{if(R[U]=si[T],++G,G===P.length)E(R)})}}),P.length===0)E(R)};function jM(p,$,y={}){var E=$.name;if(!p)we(`type "${E}" must have a positive integer typeid pointer`);if(si.hasOwnProperty(p))if(y.ignoreDuplicateRegistrations)return;else we(`Cannot register type '${E}' twice`);if(si[p]=$,delete dc[p],so.hasOwnProperty(p)){var R=so[p];delete so[p],R.forEach((P)=>P())}}function Cn(p,$,y={}){if(!("argPackAdvance"in $))throw TypeError("registerType registeredInstance requires argPackAdvance");return jM(p,$,y)}var ai=8,_M=(p,$,y,E)=>{$=De($),Cn(p,{name:$,fromWireType:function(R){return!!R},toWireType:function(R,P){return P?y:E},argPackAdvance:ai,readValueFromPointer:function(R){return this.fromWireType(B[R])},destructorFunction:null})},cd=[],Ln=[],ud=(p)=>{if(p>9&&--Ln[p+1]===0)Ln[p]=void 0,cd.push(p)},BM=()=>Ln.length/2-5-cd.length,GM=()=>{Ln.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=BM},ci={toValue:(p)=>{if(!p)we("Cannot use deleted val. handle = "+p);return Ln[p]},toHandle:(p)=>{switch(p){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let $=cd.pop()||Ln.length;return Ln[$]=p,Ln[$+1]=1,$}}}};function ld(p){return this.fromWireType(tt[p>>2])}var UM={name:"emscripten::val",fromWireType:(p)=>{var $=ci.toValue(p);return ud(p),$},toWireType:(p,$)=>ci.toHandle($),argPackAdvance:ai,readValueFromPointer:ld,destructorFunction:null},WM=(p)=>Cn(p,UM),KM=(p,$)=>{switch($){case 4:return function(y){return this.fromWireType(fr[y>>2])};case 8:return function(y){return this.fromWireType(fn[y>>3])};default:throw TypeError(`invalid float width (${$}): ${p}`)}},zM=(p,$,y)=>{$=De($),Cn(p,{name:$,fromWireType:(E)=>E,toWireType:(E,R)=>R,argPackAdvance:ai,readValueFromPointer:KM($,y),destructorFunction:null})},dd=(p,$)=>Object.defineProperty($,"name",{value:p}),$g=(p)=>{while(p.length){var $=p.pop(),y=p.pop();y($)}};function DM(p){for(var $=1;$<p.length;++$)if(p[$]!==null&&p[$].destructorFunction===void 0)return!0;return!1}function qM(p,$,y,E,R,P){var G=$.length;if(G<2)we("argTypes array size mismatch! Must at least get return value and 'this' types!");var T=$[1]!==null&&y!==null,U=DM($),Z=$[0].name!=="void",mt=G-2,Nt=Array(mt),ee=[],Le=[],ao=function(...pd){if(pd.length!==mt)we(`function ${p} called with ${pd.length} arguments, expected ${mt}`);Le.length=0;var gd;if(ee.length=T?2:1,ee[0]=R,T)gd=$[1].toWireType(Le,this),ee[1]=gd;for(var co=0;co<mt;++co)Nt[co]=$[co+2].toWireType(Le,pd[co]),ee.push(Nt[co]);var a2=E(...ee);function c2(u2){if(U)$g(Le);else for(var uo=T?1:2;uo<$.length;uo++){var l2=uo===1?gd:Nt[uo-2];if($[uo].destructorFunction!==null)$[uo].destructorFunction(l2)}if(Z)return $[0].fromWireType(u2)}return c2(a2)};return dd(p,ao)}var YM=(p,$,y)=>{if(p[$].overloadTable===void 0){var E=p[$];p[$]=function(...R){if(!p[$].overloadTable.hasOwnProperty(R.length))we(`Function '${y}' called with an invalid number of arguments (${R.length}) - expects one of (${p[$].overloadTable})!`);return p[$].overloadTable[R.length].apply(this,R)},p[$].overloadTable=[],p[$].overloadTable[E.argCount]=E}},JM=(p,$,y)=>{if(n.hasOwnProperty(p)){if(y===void 0||n[p].overloadTable!==void 0&&n[p].overloadTable[y]!==void 0)we(`Cannot register public name '${p}' twice`);if(YM(n,p,p),n.hasOwnProperty(y))we(`Cannot register multiple overloads of a function with the same number of arguments (${y})!`);n[p].overloadTable[y]=$}else if(n[p]=$,y!==void 0)n[p].numArguments=y},VM=(p,$)=>{var y=[];for(var E=0;E<p;E++)y.push(tt[$+E*4>>2]);return y},ZM=(p,$,y)=>{if(!n.hasOwnProperty(p))wg("Replacing nonexistent public symbol");if(n[p].overloadTable!==void 0&&y!==void 0)n[p].overloadTable[y]=$;else n[p]=$,n[p].argCount=y},QM=(p,$,y)=>{p=p.replace(/p/g,"i");var E=n["dynCall_"+p];return E($,...y)},fc=[],kg,yg=(p)=>{var $=fc[p];if(!$){if(p>=fc.length)fc.length=p+1;fc[p]=$=kg.get(p)}return $},XM=(p,$,y=[])=>{if(p.includes("j"))return QM(p,$,y);var E=yg($)(...y);return E},tx=(p,$)=>(...y)=>XM(p,$,y),ex=(p,$)=>{p=De(p);function y(){if(p.includes("j"))return tx(p,$);return yg($)}var E=y();if(typeof E!="function")we(`unknown function pointer with signature ${p}: ${$}`);return E},nx=(p,$)=>{var y=dd($,function(E){this.name=$,this.message=E;var R=Error(E).stack;if(R!==void 0)this.stack=this.toString()+`
3
- `+R.replace(/^Error(:[^\n]*)?\n/,"")});return y.prototype=Object.create(p.prototype),y.prototype.constructor=y,y.prototype.toString=function(){if(this.message===void 0)return this.name;else return`${this.name}: ${this.message}`},y},vg,Sg=(p)=>{var $=xg(p),y=De($);return Fn($),y},rx=(p,$)=>{var y=[],E={};function R(P){if(E[P])return;if(si[P])return;if(dc[P]){dc[P].forEach(R);return}y.push(P),E[P]=!0}throw $.forEach(R),new vg(`${p}: `+y.map(Sg).join([", "]))},ix=(p)=>{p=p.trim();let $=p.indexOf("(");if($!==-1)return p.substr(0,$);else return p},ox=(p,$,y,E,R,P,G)=>{var T=VM($,y);p=De(p),p=ix(p),R=ex(E,R),JM(p,function(){rx(`Cannot call ${p} due to unbound types`,T)},$-1),FM([],T,(U)=>{var Z=[U[0],null].concat(U.slice(1));return ZM(p,qM(p,Z,null,R,P,G),$-1),[]})},sx=(p,$,y)=>{switch($){case 1:return y?(E)=>K[E]:(E)=>B[E];case 2:return y?(E)=>X[E>>1]:(E)=>z[E>>1];case 4:return y?(E)=>Mt[E>>2]:(E)=>tt[E>>2];default:throw TypeError(`invalid integer width (${$}): ${p}`)}},ax=(p,$,y,E,R)=>{if($=De($),R===-1)R=4294967295;var P=(mt)=>mt;if(E===0){var G=32-8*y;P=(mt)=>mt<<G>>>G}var T=$.includes("unsigned"),U=(mt,Nt)=>{},Z;if(T)Z=function(mt,Nt){return U(Nt,this.name),Nt>>>0};else Z=function(mt,Nt){return U(Nt,this.name),Nt};Cn(p,{name:$,fromWireType:P,toWireType:Z,argPackAdvance:ai,readValueFromPointer:sx($,y,E!==0),destructorFunction:null})},cx=(p,$,y)=>{var E=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],R=E[$];function P(G){var T=tt[G>>2],U=tt[G+4>>2];return new R(K.buffer,U,T)}y=De(y),Cn(p,{name:y,fromWireType:P,argPackAdvance:ai,readValueFromPointer:P},{ignoreDuplicateRegistrations:!0})},ux=(p,$,y,E)=>{if(!(E>0))return 0;var R=y,P=y+E-1;for(var G=0;G<p.length;++G){var T=p.charCodeAt(G);if(T>=55296&&T<=57343){var U=p.charCodeAt(++G);T=65536+((T&1023)<<10)|U&1023}if(T<=127){if(y>=P)break;$[y++]=T}else if(T<=2047){if(y+1>=P)break;$[y++]=192|T>>6,$[y++]=128|T&63}else if(T<=65535){if(y+2>=P)break;$[y++]=224|T>>12,$[y++]=128|T>>6&63,$[y++]=128|T&63}else{if(y+3>=P)break;$[y++]=240|T>>18,$[y++]=128|T>>12&63,$[y++]=128|T>>6&63,$[y++]=128|T&63}}return $[y]=0,y-R},lx=(p,$,y)=>ux(p,B,$,y),dx=(p)=>{var $=0;for(var y=0;y<p.length;++y){var E=p.charCodeAt(y);if(E<=127)$++;else if(E<=2047)$+=2;else if(E>=55296&&E<=57343)$+=4,++y;else $+=3}return $},Eg=(p,$,y)=>{var E=$+y,R="";while(!($>=E)){var P=p[$++];if(!P)return R;if(!(P&128)){R+=String.fromCharCode(P);continue}var G=p[$++]&63;if((P&224)==192){R+=String.fromCharCode((P&31)<<6|G);continue}var T=p[$++]&63;if((P&240)==224)P=(P&15)<<12|G<<6|T;else P=(P&7)<<18|G<<12|T<<6|p[$++]&63;if(P<65536)R+=String.fromCharCode(P);else{var U=P-65536;R+=String.fromCharCode(55296|U>>10,56320|U&1023)}}return R},fx=(p,$)=>p?Eg(B,p,$):"",hx=(p,$)=>{$=De($);var y=$==="std::string";Cn(p,{name:$,fromWireType(E){var R=tt[E>>2],P=E+4,G;if(y){var T=P;for(var U=0;U<=R;++U){var Z=P+U;if(U==R||B[Z]==0){var mt=Z-T,Nt=fx(T,mt);if(G===void 0)G=Nt;else G+=String.fromCharCode(0),G+=Nt;T=Z+1}}}else{var ee=Array(R);for(var U=0;U<R;++U)ee[U]=String.fromCharCode(B[P+U]);G=ee.join("")}return Fn(E),G},toWireType(E,R){if(R instanceof ArrayBuffer)R=new Uint8Array(R);var P,G=typeof R=="string";if(!(G||R instanceof Uint8Array||R instanceof Uint8ClampedArray||R instanceof Int8Array))we("Cannot pass non-string to std::string");if(y&&G)P=dx(R);else P=R.length;var T=md(4+P+1),U=T+4;if(tt[T>>2]=P,y&&G)lx(R,U,P+1);else if(G)for(var Z=0;Z<P;++Z){var mt=R.charCodeAt(Z);if(mt>255)Fn(U),we("String has UTF-16 code units that do not fit in 8 bits");B[U+Z]=mt}else for(var Z=0;Z<P;++Z)B[U+Z]=R[Z];if(E!==null)E.push(Fn,T);return T},argPackAdvance:ai,readValueFromPointer:ld,destructorFunction(E){Fn(E)}})},mx=(p,$)=>{var y="";for(var E=0;!(E>=$/2);++E){var R=X[p+E*2>>1];if(R==0)break;y+=String.fromCharCode(R)}return y},px=(p,$,y)=>{if(y??=2147483647,y<2)return 0;y-=2;var E=$,R=y<p.length*2?y/2:p.length;for(var P=0;P<R;++P){var G=p.charCodeAt(P);X[$>>1]=G,$+=2}return X[$>>1]=0,$-E},gx=(p)=>p.length*2,bx=(p,$)=>{var y=0,E="";while(!(y>=$/4)){var R=Mt[p+y*4>>2];if(R==0)break;if(++y,R>=65536){var P=R-65536;E+=String.fromCharCode(55296|P>>10,56320|P&1023)}else E+=String.fromCharCode(R)}return E},wx=(p,$,y)=>{if(y??=2147483647,y<4)return 0;var E=$,R=E+y-4;for(var P=0;P<p.length;++P){var G=p.charCodeAt(P);if(G>=55296&&G<=57343){var T=p.charCodeAt(++P);G=65536+((G&1023)<<10)|T&1023}if(Mt[$>>2]=G,$+=4,$+4>R)break}return Mt[$>>2]=0,$-E},$x=(p)=>{var $=0;for(var y=0;y<p.length;++y){var E=p.charCodeAt(y);if(E>=55296&&E<=57343)++y;$+=4}return $},kx=(p,$,y)=>{y=De(y);var E,R,P,G;if($===2)E=mx,R=px,G=gx,P=(T)=>z[T>>1];else if($===4)E=bx,R=wx,G=$x,P=(T)=>tt[T>>2];Cn(p,{name:y,fromWireType:(T)=>{var U=tt[T>>2],Z,mt=T+4;for(var Nt=0;Nt<=U;++Nt){var ee=T+4+Nt*$;if(Nt==U||P(ee)==0){var Le=ee-mt,ao=E(mt,Le);if(Z===void 0)Z=ao;else Z+=String.fromCharCode(0),Z+=ao;mt=ee+$}}return Fn(T),Z},toWireType:(T,U)=>{if(typeof U!="string")we(`Cannot pass non-string to C++ string type ${y}`);var Z=G(U),mt=md(4+Z+$);if(tt[mt>>2]=Z/$,R(U,mt+4,Z+$),T!==null)T.push(Fn,mt);return mt},argPackAdvance:ai,readValueFromPointer:ld,destructorFunction(T){Fn(T)}})},yx=(p,$)=>{$=De($),Cn(p,{isVoid:!0,name:$,argPackAdvance:0,fromWireType:()=>{return},toWireType:(y,E)=>{return}})},vx=(p,$,y)=>B.copyWithin(p,$,$+y),fd=[],Sx=(p,$,y,E)=>{return p=fd[p],$=ci.toValue($),p(null,$,y,E)},Ex={},Mx=(p)=>{var $=Ex[p];if($===void 0)return De(p);return $},Mg=()=>{if(typeof globalThis=="object")return globalThis;function p($){$.$$$embind_global$$$=$;var y=typeof $$$embind_global$$$=="object"&&$.$$$embind_global$$$==$;if(!y)delete $.$$$embind_global$$$;return y}if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;if(typeof global=="object"&&p(global))$$$embind_global$$$=global;else if(typeof self=="object"&&p(self))$$$embind_global$$$=self;if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;throw Error("unable to get global object.")},xx=(p)=>{if(p===0)return ci.toHandle(Mg());else return p=Mx(p),ci.toHandle(Mg()[p])},Ox=(p)=>{var $=fd.length;return fd.push(p),$},Ix=(p,$)=>{var y=si[p];if(y===void 0)we(`${$} has unknown type ${Sg(p)}`);return y},Rx=(p,$)=>{var y=Array(p);for(var E=0;E<p;++E)y[E]=Ix(tt[$+E*4>>2],"parameter "+E);return y},Px=Reflect.construct,Nx=(p,$,y)=>{var E=[],R=p.toWireType(E,y);if(E.length)tt[$>>2]=ci.toHandle(E);return R},Ax=(p,$,y)=>{var E=Rx(p,$),R=E.shift();p--;var P=Array(p),G=(U,Z,mt,Nt)=>{var ee=0;for(var Le=0;Le<p;++Le)P[Le]=E[Le].readValueFromPointer(Nt+ee),ee+=E[Le].argPackAdvance;var ao=y===1?Px(Z,P):Z.apply(U,P);return Nx(R,mt,ao)},T=`methodCaller<(${E.map((U)=>U.name).join(", ")}) => ${R.name}>`;return Ox(dd(T,G))},Tx=(p)=>{if(p>9)Ln[p+1]+=1},Hx=(p)=>{var $=ci.toValue(p);$g($),ud(p)},Cx=()=>{ug("")},Lx=()=>2147483648,Fx=(p)=>{var $=H.buffer,y=(p-$.byteLength+65535)/65536;try{return H.grow(y),hn(),1}catch(E){}},jx=(p)=>{var $=B.length;p>>>=0;var y=Lx();if(p>y)return!1;var E=(U,Z)=>U+(Z-U%Z)%Z;for(var R=1;R<=4;R*=2){var P=$*(1+0.2/R);P=Math.min(P,p+100663296);var G=Math.min(y,E(Math.max(p,P),65536)),T=Fx(G);if(T)return!0}return!1},hd={},_x=()=>d||"./this.program",Os=()=>{if(!Os.strings){var p=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",$={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:p,_:_x()};for(var y in hd)if(hd[y]===void 0)delete $[y];else $[y]=hd[y];var E=[];for(var y in $)E.push(`${y}=${$[y]}`);Os.strings=E}return Os.strings},Bx=(p,$)=>{for(var y=0;y<p.length;++y)K[$++]=p.charCodeAt(y);K[$]=0},Gx=(p,$)=>{var y=0;return Os().forEach((E,R)=>{var P=$+y;tt[p+R*4>>2]=P,Bx(E,P),y+=E.length+1}),0},Ux=(p,$)=>{var y=Os();tt[p>>2]=y.length;var E=0;return y.forEach((R)=>E+=R.length+1),tt[$>>2]=E,0},Wx=0,Kx=()=>AM||Wx>0,zx=(p)=>{if(L=p,!Kx())n.onExit?.(p),N=!0;f(p,new NM(p))},Dx=(p,$)=>{L=p,zx(p)},qx=Dx,Yx=(p)=>52,Jx=(p,$)=>$+2097152>>>0<4194305-!!p?(p>>>0)+$*4294967296:NaN;function Vx(p,$,y,E,R){var P=Jx($,y);return 70}var Zx=[null,[],[]],Qx=(p,$)=>{var y=Zx[p];if($===0||$===10)(p===1?M:I)(Eg(y,0)),y.length=0;else y.push($)},Xx=(p,$,y,E)=>{var R=0;for(var P=0;P<y;P++){var G=tt[$>>2],T=tt[$+4>>2];$+=8;for(var U=0;U<T;U++)Qx(p,B[G+U]);R+=T}return tt[E>>2]=R,0};LM(),gg=n.BindingError=class extends Error{constructor($){super($);this.name="BindingError"}},bg=n.InternalError=class extends Error{constructor($){super($);this.name="InternalError"}},GM(),vg=n.UnboundTypeError=nx(Error,"UnboundTypeError");var t2={o:HM,q:CM,m:_M,l:WM,j:zM,f:ox,b:ax,a:cx,e:hx,c:kx,n:yx,v:vx,i:Sx,d:ud,k:xx,h:Ax,y:Tx,g:Hx,r:Cx,s:jx,t:Gx,u:Ux,z:qx,w:Yx,p:Vx,x:Xx},te=PM(),e2=()=>(e2=te.B)(),xg=(p)=>(xg=te.C)(p),md=(p)=>(md=te.D)(p),Fn=(p)=>(Fn=te.E)(p),n2=(p)=>(n2=te._emscripten_stack_restore)(p),r2=(p)=>(r2=te._emscripten_stack_alloc)(p),i2=()=>(i2=te.emscripten_stack_get_current)(),o2=(p)=>(o2=te.__cxa_increment_exception_refcount)(p),Og=(p)=>(Og=te.G)(p),s2=n.dynCall_jiji=(p,$,y,E,R)=>(s2=n.dynCall_jiji=te.H)(p,$,y,E,R),hc;xs=function p(){if(!hc)Ig();if(!hc)xs=p};function Ig(){if(ii>0)return;if(id(),ii>0)return;function p(){if(hc)return;if(hc=!0,n.calledRun=!0,N)return;if(od(),r(n),n.onRuntimeInitialized)n.onRuntimeInitialized();yM()}if(n.setStatus)n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),p()},1);else p()}if(n.preInit){if(typeof n.preInit=="function")n.preInit=[n.preInit];while(n.preInit.length>0)n.preInit.pop()()}return Ig(),o}})(),Kb=XO;function Bd(t){if(t[0]!==255||t[1]!==216)return null;let e=2;while(e+9<t.length){if(t[e]!==255){e++;continue}let n=t[e+1];if(n===255){e++;continue}let r=t[e+2]<<8|t[e+3];if(n>=192&&n<=207&&n!==196&&n!==200&&n!==204)return{height:t[e+5]<<8|t[e+6],width:t[e+7]<<8|t[e+8]};e+=2+r}return null}var _d;function eI(){if(_d)return _d;let t=new WebAssembly.Module(tI(Buffer.from("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","base64"))),e={noInitialRun:!0,print:()=>{return},printErr:()=>{return},instantiateWasm:(n,r)=>{let i=new WebAssembly.Instance(t,n);return r(i),i.exports}};if(Kb(e),typeof e.decode!=="function")throw Error("the JPEG decoder did not start");return _d=e,e}function zb(t,e){let n=Bd(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);let r=null;try{r=eI().decode(t,!0)}catch{r=null}if(!r)throw Error("not a JPEG image this decoder can read");return{width:r.width,height:r.height,data:new Uint8Array(r.data.buffer,r.data.byteOffset,r.data.length)}}var $o=[137,80,78,71,13,10,26,10],Yb=13,Jb=3;function fi(t){return t.length>=$o.length&&$o.every((e,n)=>t[n]===e)}var Vb={0:1,2:3,4:2,6:4};function oI(t){if(t.length<33||!fi(t))return;let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength),n=e.readUInt32BE(16),r=e.readUInt32BE(20),i=e[25];if(e[24]!==8||e[28]!==0||Vb[i]===void 0)return;let o=[];for(let s=8;s+12<=e.length;){let a=e.readUInt32BE(s),c=e.toString("latin1",s+4,s+8);if(c==="IDAT")o.push(e.subarray(s+8,s+8+a));else if(c==="tRNS"||c==="IEND"){if(c==="tRNS"&&i!==4&&i!==6)return;break}s+=12+a}return o.length>0?{width:n,height:r,type:i,idat:o}:void 0}function sI(t,e,n,r){let i=new Uint8Array(e);for(let o=0;o<n;o++){let s=o*(e+1),a=t[s],c=s+1,u=o>0?t:i,l=o>0?c-e-1:0;if(a===1)for(let d=r;d<e;d++)t[c+d]=t[c+d]+t[c+d-r];else if(a===2)for(let d=0;d<e;d++)t[c+d]=t[c+d]+u[l+d];else if(a===3){for(let d=0;d<r;d++)t[c+d]=t[c+d]+(u[l+d]>>1);for(let d=r;d<e;d++)t[c+d]=t[c+d]+(t[c+d-r]+u[l+d]>>1)}else if(a===4){for(let d=0;d<r;d++)t[c+d]=t[c+d]+u[l+d];for(let d=r;d<e;d++){let f=t[c+d-r],h=u[l+d],m=u[l+d-r],g=Math.abs(h-m),b=Math.abs(f-m),w=Math.abs(f+h-2*m);t[c+d]=t[c+d]+(g<=b&&g<=w?f:b<=w?h:m)}}else if(a!==0)throw Error(`bad PNG filter ${a}`)}}function aI(t){let{width:e,height:n,type:r}=t,i=Vb[r],o=e*i,s=iI(Buffer.concat(t.idat),{chunkSize:Math.min(268435456,Math.max(65536,n*(o+1)))});if(s.length<n*(o+1))throw Error("truncated PNG");sI(s,o,n,i);let a=new Uint8Array(e*n*4);for(let c=0;c<n;c++){let u=c*(o+1)+1,l=c*e*4;if(r===6)a.set(s.subarray(u,u+o),l);else if(r===2)for(let d=0,f=u,h=l;d<e;d++,f+=3,h+=4)a[h]=s[f],a[h+1]=s[f+1],a[h+2]=s[f+2],a[h+3]=255;else if(r===0)for(let d=0,f=l;d<e;d++,f+=4){let h=s[u+d];a[f]=h,a[f+1]=h,a[f+2]=h,a[f+3]=255}else for(let d=0,f=u,h=l;d<e;d++,f+=2,h+=4){let m=s[f];a[h]=m,a[h+1]=m,a[h+2]=m,a[h+3]=s[f+1]}}return{width:e,height:n,data:a}}function jt(t){let e=oI(t);if(e)return aI(e);let n=qb.PNG.sync.read(Buffer.from(t));return{width:n.width,height:n.height,data:new Uint8Array(n.data)}}function $r(t,e){if(fi(t)){let n=$n(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);return jt(t)}if(t[0]===255&&t[1]===216)return zb(t,e);throw Error("not a PNG or JPEG image")}function Zb(t,e){let{width:n,height:r,at:i}=e,o=Math.max(0,i.x),s=Math.max(0,i.y),a=Math.min(n,i.x+i.w),c=Math.min(r,i.y+i.h);if(a<=o||c<=s)return;let u={x:o,y:s,w:a-o,h:c-s};if(i.w===t.width&&i.h===t.height)return{part:t,box:u,dx:o-i.x,dy:s-i.y};let l={x:(o-i.x)*t.width/i.w,y:(s-i.y)*t.height/i.h,w:u.w*t.width/i.w,h:u.h*t.height/i.h};return{part:As(t,l,u.w,u.h),box:u,dx:0,dy:0}}function Qb(t,e){let n=new Uint8Array(e.width*e.height*4),r=Zb(t,e);if(r){let{part:i,box:o,dx:s,dy:a}=r;for(let c=0;c<o.h;c++){let u=((c+a)*i.width+s)*4;n.set(i.data.subarray(u,u+o.w*4),((o.y+c)*e.width+o.x)*4)}}return{width:e.width,height:e.height,data:n}}function kr(t,e,n,r={width:t.width,height:t.height,at:{x:0,y:0,w:t.width,h:t.height}}){let i=et(e),{width:o,height:s}=r,a=new Uint8Array(o*s*3);for(let h=0;h<o*3;h+=3)a.set(i,h);for(let h=1;h<s;h++)a.copyWithin(h*o*3,0,o*3);let c=Zb(t,r);if(!c)return{width:o,height:s,data:a};let{part:u,box:l,dx:d,dy:f}=c;for(let h=0;h<l.h;h++)for(let m=0;m<l.w;m++){let g=((h+f)*u.width+m+d)*4,b=((l.y+h)*o+l.x+m)*3,w=u.data[g+3]/255*n;for(let k=0;k<3;k++)a[b+k]=Math.round(i[k]*(1-w)+u.data[g+k]*w)}return{width:o,height:s,data:a}}function Db(t,e){for(let n=0;n+e.length<=t.length;n++){let r=!0;for(let i=0;i<e.length&&r;i++)r=t[n+i]===e.charCodeAt(i);if(r)return n}return-1}function $n(t){if(t.length<33||!fi(t))return null;let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=e.getUint32(16),r=e.getUint32(20);if(t[25]===4||t[25]===6)return{width:n,height:r,alpha:!0};let i=Db(t,"IDAT");return{width:n,height:r,alpha:Db(i===-1?t:t.subarray(0,i),"tRNS")!==-1}}function Xb(t,e=Yb){let{width:n,height:r,data:i}=t,o=(l)=>{for(let d=l*n*4+3,f=d+n*4;d<f;d+=4)if(i[d]>=e)return!0;return!1},s=0;while(s<r&&!o(s))s++;if(s===r)return null;let a=r-1;while(!o(a))a--;let c=n,u=-1;for(let l=s;l<=a;l++){let d=l*n*4+3;for(let f=0;f<c;f++)if(i[d+f*4]>=e){c=f;break}for(let f=n-1;f>u;f--)if(i[d+f*4]>=e){u=f;break}}return{x:c,y:s,w:u-c+1,h:a-s+1}}function Wn(t,e={x:0,y:0,w:t.width,h:t.height}){let n=0;for(let r=e.y;r<e.y+e.h;r++)for(let i=e.x;i<e.x+e.w;i++)if((t.data[(r*t.width+i)*4+3]??0)<Yb)n++;return Math.round(n*100/(e.w*e.h))}function tw(t,e,n){let r=Math.min(e/t.width,n/t.height),i=Math.max(1,Math.round(t.width*r)),o=Math.max(1,Math.round(t.height*r)),s=As(t,{x:0,y:0,w:t.width,h:t.height},i,o),a=new Uint8Array(e*n*4),c=Math.floor((e-i)/2),u=Math.floor((n-o)/2);for(let l=0;l<o;l++)a.set(s.data.subarray(l*i*4,(l+1)*i*4),((u+l)*e+c)*4);return{width:e,height:n,data:a}}function cI(t){let e=Math.abs(t);if(e<1)return(7*e*e*e-12*e*e+5.333333333333333)/6;if(e<2)return(-2.3333333333333335*e*e*e+12*e*e-20*e+10.666666666666666)/6;return 0}function Gd(t,e,n,r){if(n===r&&Number.isInteger(e)&&e>=0&&e+r<=t)return{first:Int32Array.from({length:r},(l,d)=>e+d),size:1,weights:new Float32Array(r).fill(1)};let i=n/r,o=Math.max(1,i),s=2*o,a=Math.min(t,Math.ceil(2*s)+2),c=new Int32Array(r),u=new Float32Array(r*a);for(let l=0;l<r;l++){let d=e+(l+0.5)*i,f=Math.floor(d-s-0.5),h=Math.max(0,Math.min(t-a,f));c[l]=h;let m=0;for(let g=f;g<=Math.ceil(d+s-0.5);g++){let b=cI((g+0.5-d)/o),w=l*a+Math.min(t-1,Math.max(0,g))-h;u[w]=(u[w]??0)+b,m+=b}for(let g=l*a;g<(l+1)*a;g++)u[g]=(u[g]??0)/m}return{first:c,size:a,weights:u}}function ew(t,e,n,r,i,o,s){let a=Gd(t,e.y,e.h,r),c=n*i,u=a.size+1,l=Array.from({length:u},()=>new Float32Array(c)),d=new Int32Array(u).fill(-1),f=new Float32Array(c),h=[],m=[];for(let g=0;g<r;g++){h.length=0,m.length=0;let b=a.first[g];for(let k=0;k<a.size;k++){let v=a.weights[g*a.size+k];if(v===0)continue;let S=b+k,M=S%u,I=l[M];if(d[M]!==S)o(S,I),d[M]=S;h.push(I),m.push(v)}let w=0;while(w<h.length){let k=h[w],v=m[w];if(h.length-w>=4){let S=h[w+1],M=h[w+2],I=h[w+3],O=m[w+1],H=m[w+2],N=m[w+3];if(w===0)for(let L=0;L<c;L++)f[L]=k[L]*v+S[L]*O+M[L]*H+I[L]*N;else for(let L=0;L<c;L++)f[L]=f[L]+(k[L]*v+S[L]*O+M[L]*H+I[L]*N);w+=4}else{if(w===0)for(let S=0;S<c;S++)f[S]=k[S]*v;else for(let S=0;S<c;S++)f[S]=f[S]+k[S]*v;w+=1}}if(h.length===0)f.fill(0);s(g,f)}}function nw(t,e,n,r,i){let o=0,s=n;while(o<s){let c=o+s>>1;if(t[c]+e-1<r)o=c+1;else s=c}let a=o;s=n;while(o<s){let c=o+s>>1;if(t[c]<=i)o=c+1;else s=c}return[a,o]}function As(t,e,n,r){let i=Gd(t.width,e.x,e.w,n),o=t.data,s=t.width,a=new Float32Array(s*4),c=new Uint8Array(n*r*4);return ew(t.height,e,n,r,4,(u,l)=>{let d=u*s*4,f=s,h=-1;for(let b=0,w=0;b<s*4;b+=4,w++){let k=o[d+b+3];if(k===0){a[b]=0,a[b+1]=0,a[b+2]=0,a[b+3]=0;continue}if(w<f)f=w;h=w,a[b]=o[d+b]*k,a[b+1]=o[d+b+1]*k,a[b+2]=o[d+b+2]*k,a[b+3]=k}if(l.fill(0),h<0)return;let[m,g]=nw(i.first,i.size,n,f,h);for(let b=m;b<g;b++){let w=i.first[b]*4,k=b*i.size,v=0,S=0,M=0,I=0;for(let O=0;O<i.size;O++){let H=i.weights[k+O],N=w+O*4;v+=a[N]*H,S+=a[N+1]*H,M+=a[N+2]*H,I+=a[N+3]*H}l[b*4]=v,l[b*4+1]=S,l[b*4+2]=M,l[b*4+3]=I}},(u,l)=>{let d=u*n*4;for(let f=0;f<n;f++){let h=f*4,m=l[h+3];if(m<=0)continue;let g=l[h]/m;c[d+h]=(g<0?0:g>255?255:g)+0.5,g=l[h+1]/m,c[d+h+1]=(g<0?0:g>255?255:g)+0.5,g=l[h+2]/m,c[d+h+2]=(g<0?0:g>255?255:g)+0.5,c[d+h+3]=(m>255?255:m)+0.5}}),{width:n,height:r,data:c}}function rw(t,e,n,r){let i=Gd(t.width,e.x,e.w,n),o=t.data,s=t.width,a=new Float32Array(n*r);return ew(t.height,e,n,r,1,(c,u)=>{let l=c*s,d=s,f=-1;for(let g=0;g<s;g++)if(o[l+g]!==0){if(g<d)d=g;f=g}if(u.fill(0),f<0)return;let[h,m]=nw(i.first,i.size,n,d,f);for(let g=h;g<m;g++){let b=l+i.first[g],w=g*i.size,k=0;for(let v=0;v<i.size;v++)k+=o[b+v]*i.weights[w+v];u[g]=k}},(c,u)=>{a.set(u,c*n)}),{width:n,height:r,data:a}}function Ts(t,e){if(e<=0)return t;let n=Math.max(1,Math.ceil(e*3)),r=Array.from({length:2*n+1},(l,d)=>Math.exp(-((d-n)**2)/(2*e*e))),i=r.reduce((l,d)=>l+d,0),{width:o,height:s,data:a}=t,c=new Float32Array(o*s);for(let l=0;l<s;l++){let d=l*o;for(let f=0;f<o;f++){let h=0;for(let m=-n;m<=n;m++)h+=(a[d+Math.min(o-1,Math.max(0,f+m))]??0)*(r[m+n]??0);c[d+f]=h/i}}let u=new Float32Array(o*s);for(let l=0;l<s;l++){let d=l*o;for(let f=-n;f<=n;f++){let h=(r[f+n]??0)/i,m=Math.min(s-1,Math.max(0,l+f))*o;for(let g=0;g<o;g++)u[d+g]=(u[d+g]??0)+(c[m+g]??0)*h}}return{width:o,height:s,data:u}}function Hs(t){let e=new Uint8Array(t.data.length);for(let n=0;n<e.length;n++){let r=t.data[n];e[n]=(r<0?0:r>255?255:r)+0.5}return{width:t.width,height:t.height,data:e}}function hi(t){let e=new Uint8Array(t.width*t.height);for(let n=0;n<e.length;n++)e[n]=t.data[n*4+3]??0;return{width:t.width,height:t.height,data:e}}var uI=Array.from({length:256},(t,e)=>{let n=e;for(let r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;return n>>>0});function lI(t){let e=4294967295;for(let n of t)e=(uI[(e^n)&255]??0)^e>>>8;return(e^4294967295)>>>0}function wr(t,e){let n=Buffer.alloc(12+e.length);return n.writeUInt32BE(e.length,0),n.write(t,4,"latin1"),n.set(e,8),n.writeUInt32BE(lI(n.subarray(4,8+e.length)),8+e.length),n}function iw(t,e,n){let r=new Uint8Array(n*(e+1));r.set(t.subarray(0,e),1);for(let i=1;i<n;i++){let o=i*(e+1),s=i*e,a=s-e;r[o]=2;for(let c=0;c<e;c++)r[o+1+c]=t[s+c]-t[a+c]}return r}function ow(t){return rI(t,{level:1,strategy:nI.Z_RLE})}function sw(t,e,n){let r=Buffer.alloc(13);return r.writeUInt32BE(t.width,0),r.writeUInt32BE(t.height,4),r[8]=8,r[9]=e,Buffer.concat([Buffer.from($o),wr("IHDR",r),...n,wr("IDAT",ow(iw(t.data,t.width,t.height))),wr("IEND",new Uint8Array)])}function aw(t){let[e,n,r]=et(t),i=new Uint8Array(768);for(let o=0;o<256;o++)i.set([e,n,r],o*3);return wr("PLTE",i)}function cw(t,e,n,r,i){let o=Buffer.alloc(13);return o.writeUInt32BE(t,0),o.writeUInt32BE(e,4),o[8]=8,o[9]=n,Buffer.concat([Buffer.from($o),wr("IHDR",o),wr("IDAT",ow(iw(i,t*r,e))),wr("IEND",new Uint8Array)])}function yr(t){return cw(t.width,t.height,2,3,t.data)}function je(t){return cw(t.width,t.height,6,4,t.data)}function mi(t,e){return sw(t,Jb,[aw(e),wr("tRNS",Uint8Array.from({length:256},(n,r)=>r))])}function Ud(t){return sw(t,0,[])}function $c(t,e){if(!fi(t)||t[25]!==Jb)return;let n=Buffer.from(t.buffer,t.byteOffset,t.byteLength),r=[Buffer.from($o)],i=$o.length;while(i+8<=n.length){let o=i+12+n.readUInt32BE(i);r.push(n.toString("latin1",i+4,i+8)==="PLTE"?aw(e):n.subarray(i,o)),i=o}return Buffer.concat(r)}var vr=100,Se=25000000,bI=536870912,ko=["safe","questionable","explicit"],pi=["nudity","underwear"],Dd=["comic","monochrome","sketch","chibi"],bw=["off","5","10","25","50","100"],ww=["off","720","1080","1440","1800","2560"],$w={nudity:new Set(["nude","naked","topless","bottomless","nipples","naked_towel","undressing"]),underwear:new Set(["underwear","panties","pantsu","bra","lingerie","pantyshot"])},wI={comic:new Set(["comic","4koma"]),monochrome:new Set(["monochrome","greyscale"]),sketch:new Set(["sketch","lineart","line_art"]),chibi:new Set(["chibi"])},$I=/^(?:rating|score|width|height|filetype|dimension):/,Cs={safe:"s",questionable:"q",explicit:"e"},kw=8191,kI=20000,yI=5000,uw=3000,lw=8,vI=8,SI=8000,EI=3000,yw=60000,dw=3,MI=3,xI="https://static.zerochan.net",vw="https://s1.zerochan.net",qd=`ttheme/${At.version} (+${At.homepage})`,OI=["orig","tile","thumb","cut"],Sw=new Map,II=zI(process.env.TTHEME_FIND_HOSTS),RI=KI(process.env.TTHEME_FIND_CUTOUTS);mI(EI);var PI=["artist","character","copyright"];function fw(t){try{return dI(t)}catch{return[]}}function yo(t){return t.startsWith("//")?`https:${t}`:t}function Er(t){return(/\.([a-z0-9]+)(?:\?.*)?$/i.exec(t)?.[1]??"").toLowerCase()}function Fs(t){let e=t.trim();if(!e)return[];let n=JSON.parse(e);if(Array.isArray(n))return n;let r=n.posts;return Array.isArray(r)?r:[]}function NI(t){let e=t.trim(),r=(e?JSON.parse(e):{}).tags??{};return new Map(Object.entries(r).map(([i,o])=>[i,String(o)]))}function Kd(t,e,n){let r=yo(String(t??""));return{file:r,width:Number(e)||0,height:Number(n)||0,ext:Er(r)}}function Kn(t){return String(t??"").split(/\s+/).filter(Boolean)}function zd(t){let e=typeof t==="number"?new Date(t*1000):typeof t==="string"?new Date(t):void 0;return e&&!Number.isNaN(e.getTime())?e.toISOString().slice(0,10):void 0}function Ew(t,e){let n=yo(String(e.preview??""));if(!e.file||!n||!Number(t.id))return[];let r=Number(t.width??t.image_width)||0,i=Number(t.height??t.image_height)||0;return[{id:Number(t.id),width:r,height:i,file:e.file,preview:n,ext:e.ext,owner:String(e.owner??""),score:Number(t.score)||0,rating:String(t.rating??""),md5:String(e.md5??""),source:String(t.source??""),tags:Kn(e.tags),named:e.named,...zd(t.created_at)?{posted:zd(t.created_at)}:{},solo:e.solo,family:Number(t.parent_id)||(t.has_children===!0?Number(t.id):0),smaller:e.versions.filter((o)=>o.file&&o.width>0&&o.height>0&&o.width*o.height<r*i)}]}function AI(t){let e=NI(t);return Fs(t).flatMap((n)=>{let r=yo(String(n.file_url??"")),i=String(n.tags??""),o=(s)=>Kn(i).filter((a)=>e.get(a)===s);return Ew(n,{preview:n.preview_url,file:r,ext:String(n.file_ext||Er(r)).toLowerCase(),owner:n.author,md5:n.md5,tags:i,named:{artist:o("artist"),character:o("character"),copyright:o("copyright")},solo:void 0,versions:[Kd(n.jpeg_url,n.jpeg_width,n.jpeg_height),Kd(n.sample_url,n.sample_width,n.sample_height)]})})}function TI(t){return Fs(t).flatMap((e)=>{let n=yo(String(e.file_url??"")),r=String(e.tag_string??""),i=e.media_asset??{};return Ew(e,{preview:i.variants?.find((o)=>o.type==="360x360")?.url??e.preview_file_url,file:n,ext:String(e.file_ext||Er(n)).toLowerCase(),owner:"",md5:e.md5,tags:r,named:{artist:Kn(e.tag_string_artist),character:Kn(e.tag_string_character),copyright:Kn(e.tag_string_copyright)},solo:r.split(/\s+/).includes("solo"),versions:(i.variants??[]).map((o)=>Kd(o.url,o.width,o.height)).filter((o)=>o.ext==="jpg"||o.ext==="png").sort((o,s)=>s.width*s.height-o.width*o.height)})})}function Mw(t){return t.toLowerCase().replace(/\s+/g,"_")}function HI(t){return(Array.isArray(t)?t:[]).map((e)=>Mw(String(e)))}function CI(t){return String(t??"").replace(/[^0-9a-z]+/gi,".").replace(/^\.+|\.+$/g,"")||"zerochan"}function LI(t){let e=t.trim(),n=e?JSON.parse(e):{};return(Array.isArray(n.items)?n.items:n.id?[n]:[]).flatMap((i)=>{let o=Number(i.id);if(!o)return[];let s=HI(i.tags),a=yo(String(i.full??""));return[{id:o,width:Number(i.width)||0,height:Number(i.height)||0,file:a,ext:Er(a),preview:`${vw}/${CI(i.tag??i.primary)}.600.${o}.jpg`,owner:"",score:0,rating:s.some((c)=>$w.nudity.has(c))?"q":"g",md5:String(i.md5??i.hash??""),source:String(i.source??""),tags:s,named:{artist:[],character:[],copyright:[]},solo:s.includes("solo"),family:0,smaller:[]}]})}var FI={mangaka:"artist",studio:"artist",character:"character",series:"copyright",game:"copyright"};function hw(t){return t.replace(/&(?:#(\d+)|amp|quot|apos|lt|gt);/g,(e,n)=>n?String.fromCharCode(Number(n)):{"&amp;":"&","&quot;":'"',"&apos;":"'","&lt;":"<","&gt;":">"}[e]??e)}function jI(t){let e={artist:[],character:[],copyright:[]};for(let[,r,i]of t.matchAll(/<li class="([a-z]+)[^"]*"[^>]*\bdata-tag="([^"]*)"/g)){let o=FI[r],s=Mw(hw(i));if(o&&!e[o].includes(s))e[o].push(s)}let n=zd(/"datePublished":\s*"([^"]+)"/.exec(t)?.[1]);return{named:e,source:"",owner:hw(/\buploader = \{\s*name: '([^']*)'/.exec(t)?.[1]??""),...n?{posted:n}:{}}}function _I(t){return Number(/Zerochan has ([\d,]+) /.exec(t)?.[1]?.replace(/,/g,"")??0)}function BI(t){return Fs(t).flatMap((e)=>{let n=String(e.value??"");return n?[{value:n,count:Number(e.post_count)||0}]:[]})}function GI(t){return Fs(t).flatMap((e)=>{let n=String(e.name??"");return n?[{value:n,count:Number(e.count)||0}]:[]})}function UI(t){return Number(/count="(\d+)"/.exec(t)?.[1]??0)}function WI(t){let n=(t.trim()?JSON.parse(t):{}).counts?.posts;return n===null?Number.NaN:Number(n)||0}function KI(t){let e=new Map;for(let n of(t??"").split(/\s+/).filter(Boolean)){let r=n.indexOf("=");if(r>0)e.set(n.slice(0,r),n.slice(r+1).split(",").filter(Boolean))}return e}function zI(t){let e=new Map;for(let n of(t??"").split(/[\s,]+/).filter(Boolean)){let r=n.indexOf("="),i=n.slice(0,r);try{let o=new URL(n.slice(r+1));if(i&&o.protocol==="https:")e.set(i,o.origin)}catch{}}return e}function kc(t,e,n,r){let i=(t??"").split(/\s+/);if(r!==void 0&&i.includes(r))return[];let o=e.filter((s)=>i.includes(s));return o.length>0?o:[...n]}function gi(t){return kc(t,ko,["safe"])}function vo(t){return kc(t,pi,pi,"none")}function yc(t){return kc(t,Dd,[],"none")}function js(t){let e=J.map((n)=>n.name);return kc(t,e,e)}function Yd(t,e,n){return{score:Number(t)||0,size:Number(e)||0,png:n==="on"}}function _s(t){return[...new Set((t??"").toLowerCase().split(/[\s,]+/).map((e)=>e.replace(/^-+/,"")).filter(Boolean))]}function Jd(t,e,n){return{safe:new Set(t),questionable:new Set(e),explicit:new Set(n)}}function Vd(t){let e=II.get(t.key),n=RI.get(t.key);return{...t,origin:e??t.origin,moved:e!==void 0&&e!==t.origin,cutouts:n??t.cutouts,vouched:t.vouched&&n===void 0}}function xw(t){return t.length<2?t.join(""):t.map((e)=>`~${e}`).join(" ")}function Ow(t){return t>0?[`width:>=${t}`,`height:>=${t}`]:[]}function mw(t){let e=Vd(t),n=(r)=>new URLSearchParams({api_version:"2",include_tags:"1",...r});return{...e,scored:!0,narrow:({score:r,size:i})=>[...r>0?[`score:>=${r}`]:[],...Ow(i)],cutouts:xw(e.cutouts),ratings:Jd([Cs.safe],[Cs.questionable],[Cs.explicit]),rate:(r)=>{let[i]=r;if(r.length===1&&i)return`rating:${Cs[i]}`;let o=ko.filter((a)=>!r.includes(a)),[s]=o;return o.length===1&&s?`-rating:${Cs[s]}`:""},best:"order:score",tagBudget:Number.POSITIVE_INFINITY,ors:!0,postsUrl:(r,i)=>`${e.origin}/post.json?${n({limit:String(vr),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/post.xml?${new URLSearchParams({limit:"1",tags:r})}`,postUrl:(r)=>`${e.origin}/post.json?${n({tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/post/show/${r}`,parse:AI,count:UI,uploadedBy:(r)=>`user:${r}`}}function DI(t){let e=Vd(t),n=Jd(["g"],["s","q"],["e"]);return{...e,scored:!0,narrow:({score:r,size:i,png:o})=>[...r>0?[`score:>=${r}`]:[],...Ow(i),...o?["filetype:png"]:[]],cutouts:xw(e.cutouts),ratings:n,rate:(r)=>r.length===ko.length?"":`rating:${r.flatMap((i)=>[...n[i]]).join(",")}`,best:"order:score",tagBudget:2,ors:!0,postsUrl:(r,i)=>`${e.origin}/posts.json?${new URLSearchParams({limit:String(vr),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/counts/posts.json?${new URLSearchParams({tags:r})}`,postUrl:(r)=>`${e.origin}/posts.json?${new URLSearchParams({limit:"1",tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/posts/${r}`,parse:TI,count:WI,uploadedBy:(r)=>`user:${r}`}}function Wd(t){return t.split(/\s+/).filter((e)=>e&&!/^(?:order|dimension):/.test(e)).map((e)=>e.split("_").map(encodeURIComponent).join("+")).join(",")}function pw(t){let e=t.split(/\s+/),n=e.find((r)=>r.startsWith("dimension:"))?.slice(10);return{s:e.includes("order:fav")?"fav":"id",...n?{d:n}:{}}}function qI(t){let e=Vd(t);return{...e,scored:!1,narrow:({size:n})=>n>=1800?["dimension:huge"]:n>0?["dimension:large"]:[],cutouts:e.cutouts[0]??"",ratings:Jd(["g"],["q"],["e"]),rate:()=>"",best:"order:fav",tagBudget:3,ors:!1,missing:404,postsUrl:(n,r)=>`${e.origin}/${Wd(n)}?${new URLSearchParams({json:"",l:String(vr),p:String(r+1),...pw(n)})}`,countUrl:(n)=>`${e.origin}/${Wd(n)}?${new URLSearchParams({xml:"",l:"1"})}`,postUrl:(n)=>`${e.origin}/${n}?json=`,pageUrl:(n)=>`${e.origin}/${n}`,parse:LI,count:_I,credits:jI,counts:(n)=>Wd(n).split(",").length===1&&!("d"in pw(n)),guesses:(n)=>(n.tags.includes("transparent_background")?["png","jpg"]:["jpg","png"]).map((r)=>n.preview.replace(vw,xI).replace(/\.600\.(\d+)\.jpg$/,`.full.$1.${r}`))}}function YI(t){let e=gw(`https://${t}`);return J.find((n)=>gw(n.origin)===e)}function Zd(t){return t.split(/\s+/).filter((e)=>e&&!$I.test(e)).length}function vc(t,e){let n=t.trim();if(/^\d+$/.test(n))return{site:e,id:Number(n)};let r=/^([\w.]+):(\d+)$/.exec(n);if(r){let a=J.find((c)=>c.key===r[1]||c.name===r[1]);return a&&{site:a,id:Number(r[2])}}let i;try{i=new URL(n)}catch{return}let o=YI(i.host),s=Number(i.searchParams.get("id")??i.pathname.split("/").filter(Boolean).at(-1));return o&&s>0?{site:o,id:s}:void 0}var J=[DI({key:"danbooru",name:"danbooru",origin:"https://shima.donmai.us",cutouts:["transparent_background"],vouched:!1,ansi:2}),mw({key:"konachan",name:"konachan",origin:"https://konachan.net",cutouts:["transparent","vector"],vouched:!1,ansi:6}),mw({key:"yande",name:"yande.re",origin:"https://yande.re",cutouts:["transparent_png"],vouched:!0,ansi:5}),qI({key:"zerochan",name:"zerochan",origin:"https://www.zerochan.net",cutouts:["transparent_background"],vouched:!1,ansi:3})],ie=J.find((t)=>t.key==="danbooru"),Mr=134217728;function Ee(t,e){let n=J.indexOf(t);return(n===-1?J.length:n)*Mr+e}function gw(t){let e;try{e=new URL(t).hostname}catch{return""}return e.split(".").slice(-2).join(".")}function bi(t,e,n=e){return e.mirror&&n===e?{site:ie,url:e.mirror.file}:{site:t,url:n.file}}function Sc(t,e){return e.mirror?{site:ie,url:e.mirror.preview}:{site:t,url:e.preview}}function Ec(t,e=pi){return t.tags.filter((n)=>e.some((r)=>$w[r].has(n)))}function Iw(t,e){return t.tags.filter((n)=>e.some((r)=>wI[r].has(n)))}function Mc(t,e,n=["safe"]){return n.some((r)=>t.ratings[r].has(e.rating))}function Rw(t,e){return t.rate(["safe"])===""?void 0:ko.find((n)=>t.ratings[n].has(e.rating))}function kn(t){return[t,...t.smaller].find((e)=>e.width*e.height<=Se)}function Pw(t){let e=new Map;for(let[n,r]of[...t].sort(([i],[o])=>i<o?-1:1)){if(r==="")continue;e.set(r,[...e.get(r)??[],n])}return e}function xr(){return Ls(process.env.XDG_CACHE_HOME??Ls(pI(),".cache"),"ttheme")}function Ve(t){return Ls(xr(),t.key)}function Nw(t=bI,e=xr()){let n=[],r=0;for(let i of fw(e))for(let o of OI){let s=Ls(e,i,o);for(let a of fw(s)){let c=Ls(s,a);try{let{size:u,mtimeMs:l}=hI(c);n.push({path:c,size:u,at:l}),r+=u}catch{}}}n.sort((i,o)=>i.at-o.at);for(let i of n){if(r<=t)return;try{fI(i.path,{force:!0}),r-=i.size}catch{}}}function JI(t,e){if(t!==null&&/^\s*\d+\s*$/.test(t))return Number(t)*1000;let n=t===null?Number.NaN:Date.parse(t);return Number.isNaN(n)?yw:Math.max(0,n-e)}function zn(t){return Sw.get(t.key)??0}function VI(t){for(let e=t;e instanceof Error;e=e.cause)if(e.code==="ECONNRESET")return!0;return!1}function ZI(t){return(t.headers.get("server")??"").startsWith("cloudflare")&&t.headers.get("cf-mitigated")==="challenge"}function QI(t,e){let n=new URL(e,t);if(!n.search)n.search=new URL(t).search;return n.href}async function Sr(t,e,n,r={},i=kI){let o=e;for(let s=1,a=0;;s++){let c=zn(t)-Date.now();if(c>0)await gI(c,void 0,{signal:n});let u;try{u=await fetch(o,{headers:{"User-Agent":qd,Referer:`${t.origin}/`,...r},redirect:"manual",signal:i?AbortSignal.any([n,AbortSignal.timeout(i)]):n})}catch(d){if(s<dw&&!n.aborted&&VI(d))continue;throw d}let l=u.headers.get("location");if(l&&u.status>=300&&u.status<400&&a<MI){await u.body?.cancel(),o=QI(o,l),a++,s--;continue}if(u.status===429&&s<dw){await u.body?.cancel();let d=JI(u.headers.get("retry-after"),Date.now());if(d>yw)throw Error(`${t.name} asks to wait ${Math.ceil(d/1000)}s`);Sw.set(t.key,Math.max(zn(t),Date.now()+d));continue}if(!u.ok)throw await u.body?.cancel(),Object.assign(Error(ZI(u)?`${t.name} is behind a Cloudflare challenge`:`${t.name} answered ${u.status}`),{status:u.status});return u}}async function xc(t,e,n){try{return await(await Sr(t,e,n)).text()}catch(r){if(t.missing!==void 0&&r.status===t.missing)return"";throw r}}async function Aw(t,e,n,r){return t.parse(await xc(t,t.postsUrl(e,n),r))}async function Qd(t,e,n){return t.count(await xc(t,t.countUrl(e),n))}async function So(t,e,n){let[r]=t.parse(await xc(t,t.postUrl(e),n));return r}async function Oc(t,e,n){return t.credits?.(await xc(t,t.pageUrl(e),n))}var XI=/^https?:\/\/(?:i\.pximg\.net|i\d*\.pixiv\.net|img\d*\.pixiv\.net)\/\S*\/(\d+)(?:_p\d+)?(?:_\w+)?\.\w+(?:[?#]\S*)?$/i,tR=/^https?:\/\/(?:www\.)?pixiv\.net\/member_illust\.php\?\S*\billust_id=(\d+)/i;function Bs(t){let e=XI.exec(t)?.[1]??tR.exec(t)?.[1];return e?`https://www.pixiv.net/artworks/${e}`:t}function Ic(t,e){return t.credits!==void 0&&e.named.artist.length===0}function Gs(t,e){for(let n of PI){let r=e.named?.[n]??[];if(t.named[n].length===0&&r.length>0)t.named[n]=r}if(t.source||=e.source??"",t.owner||=e.owner??"",!t.posted&&e.posted)t.posted=e.posted}function eR(t){let e=new URLSearchParams({limit:String(2*vr),only:"md5,tag_string,tag_string_artist,tag_string_character,tag_string_copyright,source,file_url",tags:`md5:${t.join(",")}`});return`${ie.origin}/posts.json?${e}`}function nR(t){return new Map(Fs(t).flatMap((e)=>{let n=String(e.md5??"");return n?[[n,{tags:Kn(e.tag_string),named:{artist:Kn(e.tag_string_artist),character:Kn(e.tag_string_character),copyright:Kn(e.tag_string_copyright)},source:String(e.source??""),file:yo(String(e.file_url??""))}]]:[]}))}function Rc(t,e){for(let n of t){let r=e.get(n.md5);if(!r)continue;if(n.tags=[...new Set([...n.tags,...r.tags])],Gs(n,r),n.solo=r.tags.includes("solo"),r.file.includes("/original/")){if(n.mirror={file:r.file,preview:r.file.replace("/original/","/360x360/").replace(/\.[a-z0-9]+$/i,".jpg")},!n.file)n.file=r.file,n.ext=Er(r.file)}}}async function Pc(t,e){let n=new Map;if(zn(ie)>Date.now())return n;for(let r=0;r<t.length;r+=vr){let i=await(await Sr(ie,eR(t.slice(r,r+vr)),e,{},yI)).text();for(let[o,s]of nR(i))n.set(o,s)}return n}async function Us(t,e,n){if(e.file||!t.guesses)return;for(let r of t.guesses(e))try{let i=await Sr(t,r,n,{Range:`bytes=0-${kw}`}),o=$n(new Uint8Array(await i.arrayBuffer()));return e.file=r,e.ext=Er(r),o}catch(i){if(n.aborted||i.status!==404)throw i}throw Error(`${t.name} keeps no png or jpg of ${e.id}`)}async function Tw(t,e){if(zn(ie)<=Date.now())try{let i=new URLSearchParams({"search[query]":t,"search[type]":"tag_query",limit:String(lw)}),o=`${ie.origin}/autocomplete.json?${i}`;return BI(await(await Sr(ie,o,e,{},uw)).text())}catch(i){if(e.aborted)throw i}let n=J.find((i)=>i.key==="yande"),r=new URLSearchParams({name:t,order:"count",limit:String(lw)});return GI(await(await Sr(n,`${n.origin}/tag.json?${r}`,e,{},uw)).text())}function rR(t){try{return(JSON.parse(t).related_tags??[]).flatMap(({tag:n})=>n?.name?[{value:n.name,count:Number(n.post_count)||0}]:[])}catch{return[]}}async function Hw(t,e){if(zn(ie)>Date.now())return[];let n=new URLSearchParams({"search[query]":t,"search[category]":"character",limit:String(vI)});return rR(await(await Sr(ie,`${ie.origin}/related_tag.json?${n}`,e,{},SI)).text())}function Cw(t,e){return e.slice(0,t.ors?t.tagBudget:1)}async function Lw(t,e,n){let r=await Sr(t,e,n,{Range:`bytes=0-${kw}`});return $n(new Uint8Array(await r.arrayBuffer()))}async function Nc(t,e,n,r){let i=await Sr(t,e,n,{},0),o=Number(i.headers.get("content-length"))||0,s=i.body?.getReader();if(!s)return new Uint8Array(await i.arrayBuffer());let a=[],c=0;for(;;){let{done:d,value:f}=await s.read();if(d)break;a.push(f),c+=f.length,r?.(c,o)}let u=new Uint8Array(c),l=0;for(let d of a)u.set(d,l),l+=d.length;return u}var dR=12,fR=/^[0-9a-f]{40}$/;function Eo(){return Mo(xr(),"drawn")}function Fw(t){return iR("sha1").update(JSON.stringify(t)).digest("hex")}function jw(t){return oR(Mo(Eo(),t))}function _w(t){let e=Mo(Eo(),t);try{let n=aR(e),r=n.readUInt32BE(0),i=JSON.parse(n.toString("utf8",4,4+r)),o=n.subarray(4+r,4+r+i.figure),s=n.subarray(4+r+i.figure,4+r+i.figure+i.picture);if(o.length!==i.figure||s.length!==i.picture)return;let a=new Date;return lR(e,a,a),{stem:i.stem,fill:i.fill,...i.peak?{peak:i.peak}:{},figure:o,picture:s}}catch{return}}function Xd(t,e){let n=Buffer.from(JSON.stringify({stem:e.stem,fill:e.fill,...e.peak?{peak:e.peak}:{},figure:e.figure.length,picture:e.picture.length})),r=Buffer.alloc(4);r.writeUInt32BE(n.length),F(Mo(Eo(),t),Buffer.concat([r,n,e.figure,e.picture])),hR()}function hR(){let t=sR(Eo()).filter((e)=>fR.test(e)).flatMap((e)=>{try{return[{name:e,at:uR(Mo(Eo(),e)).mtimeMs}]}catch{return[]}}).sort((e,n)=>n.at-e.at);for(let{name:e}of t.slice(dR))cR(Mo(Eo(),e),{force:!0})}import{readdirSync as kR,readFileSync as Yw}from"node:fs";import{basename as yR,join as Jw}from"node:path";/*!
2
+ import{createRequire as J2}from"node:module";var U2=Object.create;var{getPrototypeOf:W2,defineProperty:Lg,getOwnPropertyNames:K2}=Object;var z2=Object.prototype.hasOwnProperty;function D2(t){return this[t]}var q2,Y2,Sd=(t,e,n)=>{var r=t!=null&&typeof t==="object";if(r){var i=e?q2??=new WeakMap:Y2??=new WeakMap,o=i.get(t);if(o)return o}n=t!=null?U2(W2(t)):{};let s=e||!t||!t.__esModule?Lg(n,"default",{value:t,enumerable:!0}):n;for(let a of K2(t))if(!z2.call(s,a))Lg(s,a,{get:D2.bind(t,a),enumerable:!0});if(r)i.set(t,s);return s};var Et=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Yt=J2(import.meta.url);var Hd=Et((rj,sb)=>{var pO=Yt("util"),ob=Yt("stream"),Je=sb.exports=function(){ob.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};pO.inherits(Je,ob);Je.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),process.nextTick(function(){if(this._process(),this._paused&&this._reads&&this._reads.length>0)this._paused=!1,this.emit("drain")}.bind(this))};Je.prototype.write=function(t,e){if(!this.writable)return this.emit("error",Error("Stream not writable")),!1;let n;if(Buffer.isBuffer(t))n=t;else n=Buffer.from(t,e||this._encoding);if(this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0)this._paused=!0;return this.writable&&!this._paused};Je.prototype.end=function(t,e){if(t)this.write(t,e);if(this.writable=!1,!this._buffers)return;if(this._buffers.length===0)this._end();else this._buffers.push(null),this._process()};Je.prototype.destroySoon=Je.prototype.end;Je.prototype._end=function(){if(this._reads.length>0)this.emit("error",Error("Unexpected end of input"));this.destroy()};Je.prototype.destroy=function(){if(!this._buffers)return;this.writable=!1,this._reads=null,this._buffers=null,this.emit("close")};Je.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];if(e.length>t.length)this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length));else this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e)};Je.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,r=Buffer.alloc(t.length);while(e<t.length){let i=this._buffers[n++],o=Math.min(i.length,t.length-e);if(i.copy(r,e,0,o),e+=o,o!==i.length)this._buffers[--n]=i.slice(o)}if(n>0)this._buffers.splice(0,n);this._buffered-=t.length,t.func.call(this,r)};Je.prototype._process=function(){try{while(this._buffered>0&&this._reads&&this._reads.length>0){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else if(this._buffered>=t.length)this._processRead(t);else break}if(this._buffers&&!this.writable)this._end()}catch(t){this.emit("error",t)}}});var Cd=Et((gO)=>{var mr=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];gO.getImagePasses=function(t,e){let n=[],r=t%8,i=e%8,o=(t-r)/8,s=(e-i)/8;for(let a=0;a<mr.length;a++){let c=mr[a],u=o*c.x.length,l=s*c.y.length;for(let d=0;d<c.x.length;d++)if(c.x[d]<r)u++;else break;for(let d=0;d<c.y.length;d++)if(c.y[d]<i)l++;else break;if(u>0&&l>0)n.push({width:u,height:l,index:a})}return n};gO.getInterlaceIterator=function(t){return function(e,n,r){let i=e%mr[r].x.length,o=(e-i)/mr[r].x.length*8+mr[r].x[i],s=n%mr[r].y.length,a=(n-s)/mr[r].y.length*8+mr[r].y[s];return o*4+a*t*4}}});var Ld=Et((oj,ab)=>{ab.exports=function(e,n,r){let i=e+n-r,o=Math.abs(i-e),s=Math.abs(i-n),a=Math.abs(i-r);if(o<=s&&o<=a)return e;if(s<=a)return n;return r}});var Fd=Et((sj,ub)=>{var $O=Cd(),kO=Ld();function cb(t,e,n){let r=t*e;if(n!==8)r=Math.ceil(r/(8/n));return r}var $o=ub.exports=function(t,e){let{width:n,height:r,interlace:i,bpp:o,depth:s}=t;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let a=$O.getImagePasses(n,r);for(let c=0;c<a.length;c++)this._images.push({byteWidth:cb(a[c].width,o,s),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:cb(n,o,s),height:r,lineIndex:0});if(s===8)this._xComparison=o;else if(s===16)this._xComparison=o*2;else this._xComparison=1};$o.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};$o.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,i=r-1;for(let o=0;o<n;o++){let s=t[1+o],a=o>i?e[o-r]:0;e[o]=s+a}};$o.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let i=0;i<n;i++){let o=t[1+i],s=r?r[i]:0;e[i]=o+s}};$o.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,i=r-1,o=this._lastLine;for(let s=0;s<n;s++){let a=t[1+s],c=o?o[s]:0,u=s>i?e[s-r]:0,l=Math.floor((u+c)/2);e[s]=a+l}};$o.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,i=r-1,o=this._lastLine;for(let s=0;s<n;s++){let a=t[1+s],c=o?o[s]:0,u=s>i?e[s-r]:0,l=s>i&&o?o[s-r]:0,d=kO(u,c,l);e[s]=a+d}};$o.prototype._reverseFilterLine=function(t){let e=t[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(e===0)n=t.slice(1,i+1);else switch(n=Buffer.alloc(i),e){case 1:this._unFilterType1(t,n,i);break;case 2:this._unFilterType2(t,n,i);break;case 3:this._unFilterType3(t,n,i);break;case 4:this._unFilterType4(t,n,i);break;default:throw Error("Unrecognised filter type - "+e)}if(this.write(n),r.lineIndex++,r.lineIndex>=r.height)this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex];else this._lastLine=n;if(r)this.read(r.byteWidth+1,this._reverseFilterLine.bind(this));else this._lastLine=null,this.complete()}});var fb=Et((aj,db)=>{var yO=Yt("util"),lb=Hd(),vO=Fd(),SO=db.exports=function(t){lb.call(this);let e=[],n=this;this._filter=new vO(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};yO.inherits(SO,lb)});var ko=Et((cj,hb)=>{hb.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var Bd=Et((uj,mb)=>{var jd=[];(function(){for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)if(e&1)e=3988292384^e>>>1;else e=e>>>1;jd[t]=e}})();var _d=mb.exports=function(){this._crc=-1};_d.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=jd[(this._crc^t[e])&255]^this._crc>>>8;return!0};_d.prototype.crc32=function(){return this._crc^-1};_d.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=jd[(e^t[n])&255]^e>>>8;return e^-1}});var Gd=Et((lj,pb)=>{var Ht=ko(),EO=Bd(),jt=pb.exports=function(t,e){this._options=t,t.checkCRC=t.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[Ht.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[Ht.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[Ht.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[Ht.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[Ht.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[Ht.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};jt.prototype.start=function(){this.read(Ht.PNG_SIGNATURE.length,this._parseSignature.bind(this))};jt.prototype._parseSignature=function(t){let e=Ht.PNG_SIGNATURE;for(let n=0;n<e.length;n++)if(t[n]!==e[n]){this.error(Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};jt.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let o=4;o<8;o++)r+=String.fromCharCode(t[o]);let i=Boolean(t[4]&32);if(!this._hasIHDR&&n!==Ht.TYPE_IHDR){this.error(Error("Expected IHDR on beggining"));return}if(this._crc=new EO,this._crc.write(Buffer.from(r)),this._chunks[n])return this._chunks[n](e);if(!i){this.error(Error("Unsupported critical chunk type "+r));return}this.read(e+4,this._skipChunk.bind(this))};jt.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};jt.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};jt.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==e){this.error(Error("Crc error - "+e+" - "+n));return}if(!this._hasIEND)this.read(8,this._parseChunkBegin.bind(this))};jt.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};jt.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],i=t[9],o=t[10],s=t[11],a=t[12];if(r!==8&&r!==4&&r!==2&&r!==1&&r!==16){this.error(Error("Unsupported bit depth "+r));return}if(!(i in Ht.COLORTYPE_TO_BPP_MAP)){this.error(Error("Unsupported color type"));return}if(o!==0){this.error(Error("Unsupported compression method"));return}if(s!==0){this.error(Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(Error("Unsupported interlace method"));return}this._colorType=i;let c=Ht.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:Boolean(a),palette:Boolean(i&Ht.COLORTYPE_PALETTE),color:Boolean(i&Ht.COLORTYPE_COLOR),alpha:Boolean(i&Ht.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};jt.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};jt.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let n=0;n<e;n++)this._palette.push([t[n*3],t[n*3+1],t[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};jt.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};jt.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===Ht.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error("Transparency chunk must be after palette"));return}if(t.length>this._palette.length){this.error(Error("More transparent colors than palette size"));return}for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}if(this._colorType===Ht.COLORTYPE_GRAYSCALE)this.transColor([t.readUInt16BE(0)]);if(this._colorType===Ht.COLORTYPE_COLOR)this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]);this._handleChunkEnd()};jt.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};jt.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/Ht.GAMMA_DIVISION),this._handleChunkEnd()};jt.prototype._handleIDAT=function(t){if(!this._emittedHeadersFinished)this._emittedHeadersFinished=!0,this.headersFinished();this.read(-t,this._parseIDAT.bind(this,t))};jt.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===Ht.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error("Expected palette not found");this.inflateData(e);let n=t-e.length;if(n>0)this._handleIDAT(n);else this._handleChunkEnd()};jt.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};jt.prototype._parseIEND=function(t){if(this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished)this.finished()}});var Ud=Et((PO)=>{var gb=Cd(),MO=[function(){},function(t,e,n,r){if(r===e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=255},function(t,e,n,r){if(r+1>=e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=e[r+1]},function(t,e,n,r){if(r+2>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=255},function(t,e,n,r){if(r+3>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=e[r+3]}],xO=[function(){},function(t,e,n,r){let i=e[0];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=r},function(t,e,n){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[1]},function(t,e,n,r){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=r},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function OO(t,e){let n=[],r=0;function i(){if(r===t.length)throw Error("Ran out of data");let o=t[r];r++;let s,a,c,u,l,d,f,h;switch(e){default:throw Error("unrecognised depth");case 16:f=t[r],r++,n.push((o<<8)+f);break;case 4:f=o&15,h=o>>4,n.push(h,f);break;case 2:l=o&3,d=o>>2&3,f=o>>4&3,h=o>>6&3,n.push(h,f,d,l);break;case 1:s=o&1,a=o>>1&1,c=o>>2&1,u=o>>3&1,l=o>>4&1,d=o>>5&1,f=o>>6&1,h=o>>7&1,n.push(h,f,d,l,u,c,a,s);break}}return{get:function(o){while(n.length<o)i();let s=n.slice(0,o);return n=n.slice(o),s},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw Error("extra data found")}}}function IO(t,e,n,r,i,o){let{width:s,height:a,index:c}=t;for(let u=0;u<a;u++)for(let l=0;l<s;l++){let d=n(l,u,c);MO[r](e,i,d,o),o+=r}return o}function RO(t,e,n,r,i,o){let{width:s,height:a,index:c}=t;for(let u=0;u<a;u++){for(let l=0;l<s;l++){let d=i.get(r),f=n(l,u,c);xO[r](e,d,f,o)}i.resetAfterLine()}}PO.dataToBitMap=function(t,e){let{width:n,height:r,depth:i,bpp:o,interlace:s}=e,a;if(i!==8)a=OO(t,i);let c;if(i<=8)c=Buffer.alloc(n*r*4);else c=new Uint16Array(n*r*4);let u=Math.pow(2,i)-1,l=0,d,f;if(s)d=gb.getImagePasses(n,r),f=gb.getInterlaceIterator(n,r);else{let h=0;f=function(){let m=h;return h+=4,m},d=[{width:n,height:r}]}for(let h=0;h<d.length;h++)if(i===8)l=IO(d[h],c,f,o,t,l);else RO(d[h],c,f,o,a,u);if(i===8){if(l!==t.length)throw Error("extra data found")}else a.end();return c}});var Wd=Et((fj,bb)=>{function AO(t,e,n,r,i){let o=0;for(let s=0;s<r;s++)for(let a=0;a<n;a++){let c=i[t[o]];if(!c)throw Error("index "+t[o]+" not in palette");for(let u=0;u<4;u++)e[o+u]=c[u];o+=4}}function TO(t,e,n,r,i){let o=0;for(let s=0;s<r;s++)for(let a=0;a<n;a++){let c=!1;if(i.length===1){if(i[0]===t[o])c=!0}else if(i[0]===t[o]&&i[1]===t[o+1]&&i[2]===t[o+2])c=!0;if(c)for(let u=0;u<4;u++)e[o+u]=0;o+=4}}function HO(t,e,n,r,i){let o=255,s=Math.pow(2,i)-1,a=0;for(let c=0;c<r;c++)for(let u=0;u<n;u++){for(let l=0;l<4;l++)e[a+l]=Math.floor(t[a+l]*o/s+0.5);a+=4}}bb.exports=function(t,e,n=!1){let{depth:r,width:i,height:o,colorType:s,transColor:a,palette:c}=e,u=t;if(s===3)AO(t,u,i,o,c);else{if(a)TO(t,u,i,o,a);if(r!==8&&!n){if(r===16)u=Buffer.alloc(i*o*4);HO(t,u,i,o,r)}}return u}});var kb=Et((hj,$b)=>{var CO=Yt("util"),Kd=Yt("zlib"),wb=Hd(),LO=fb(),FO=Gd(),jO=Ud(),_O=Wd(),bn=$b.exports=function(t){wb.call(this),this._parser=new FO(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};CO.inherits(bn,wb);bn.prototype._handleError=function(t){if(this.emit("error",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy)this._inflate.destroy();if(this._filter)this._filter.destroy(),this._filter.on("error",function(){});this.errord=!0};bn.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Kd.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let n=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,r=Math.max(n,Kd.Z_MIN_CHUNK);this._inflate=Kd.createInflate({chunkSize:r});let i=n,o=this.emit.bind(this,"error");this._inflate.on("error",function(a){if(!i)return;o(a)}),this._filter.on("complete",this._complete.bind(this));let s=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){if(!i)return;if(a.length>i)a=a.slice(0,i);i-=a.length,s(a)}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};bn.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new LO(this._bitmapInfo)};bn.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};bn.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};bn.prototype._simpleTransparency=function(){this._metaData.alpha=!0};bn.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};bn.prototype._finished=function(){if(this.errord)return;if(!this._inflate)this.emit("error","No Inflate block");else this._inflate.end()};bn.prototype._complete=function(t){if(this.errord)return;let e;try{let n=jO.dataToBitMap(t,this._bitmapInfo);e=_O(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var vb=Et((mj,yb)=>{var Le=ko();yb.exports=function(t,e,n,r){let i=[Le.COLORTYPE_COLOR_ALPHA,Le.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let m=function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256}();if(r.bitDepth===8||r.bitDepth===16&&m)return t}let o=r.bitDepth!==16?t:new Uint16Array(t.buffer),s=255,a=Le.COLORTYPE_TO_BPP_MAP[r.inputColorType];if(a===4&&!r.inputHasAlpha)a=3;let c=Le.COLORTYPE_TO_BPP_MAP[r.colorType];if(r.bitDepth===16)s=65535,c*=2;let u=Buffer.alloc(e*n*c),l=0,d=0,f=r.bgColor||{};if(f.red===void 0)f.red=s;if(f.green===void 0)f.green=s;if(f.blue===void 0)f.blue=s;function h(){let m,p,b,$=s;switch(r.inputColorType){case Le.COLORTYPE_COLOR_ALPHA:$=o[l+3],m=o[l],p=o[l+1],b=o[l+2];break;case Le.COLORTYPE_COLOR:m=o[l],p=o[l+1],b=o[l+2];break;case Le.COLORTYPE_ALPHA:$=o[l+1],m=o[l],p=m,b=m;break;case Le.COLORTYPE_GRAYSCALE:m=o[l],p=m,b=m;break;default:throw Error("input color type:"+r.inputColorType+" is not supported at present")}if(r.inputHasAlpha){if(!i)$/=s,m=Math.min(Math.max(Math.round((1-$)*f.red+$*m),0),s),p=Math.min(Math.max(Math.round((1-$)*f.green+$*p),0),s),b=Math.min(Math.max(Math.round((1-$)*f.blue+$*b),0),s)}return{red:m,green:p,blue:b,alpha:$}}for(let m=0;m<n;m++)for(let p=0;p<e;p++){let b=h(o,l);switch(r.colorType){case Le.COLORTYPE_COLOR_ALPHA:case Le.COLORTYPE_COLOR:if(r.bitDepth===8){if(u[d]=b.red,u[d+1]=b.green,u[d+2]=b.blue,i)u[d+3]=b.alpha}else if(u.writeUInt16BE(b.red,d),u.writeUInt16BE(b.green,d+2),u.writeUInt16BE(b.blue,d+4),i)u.writeUInt16BE(b.alpha,d+6);break;case Le.COLORTYPE_ALPHA:case Le.COLORTYPE_GRAYSCALE:{let $=(b.red+b.green+b.blue)/3;if(r.bitDepth===8){if(u[d]=$,i)u[d+1]=b.alpha}else if(u.writeUInt16BE($,d),i)u.writeUInt16BE(b.alpha,d+2);break}default:throw Error("unrecognised color Type "+r.colorType)}l+=a,d+=c}return u}});var Mb=Et((pj,Eb)=>{var Sb=Ld();function BO(t,e,n,r,i){for(let o=0;o<n;o++)r[i+o]=t[e+o]}function GO(t,e,n){let r=0,i=e+n;for(let o=e;o<i;o++)r+=Math.abs(t[o]);return r}function UO(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=t[e+s]-a;r[i+s]=c}}function WO(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=t[e+o]-s;i+=Math.abs(a)}return i}function KO(t,e,n,r,i){for(let o=0;o<n;o++){let s=e>0?t[e+o-n]:0,a=t[e+o]-s;r[i+o]=a}}function zO(t,e,n){let r=0,i=e+n;for(let o=e;o<i;o++){let s=e>0?t[o-n]:0,a=t[o]-s;r+=Math.abs(a)}return r}function DO(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=e>0?t[e+s-n]:0,u=t[e+s]-(a+c>>1);r[i+s]=u}}function qO(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=e>0?t[e+o-n]:0,c=t[e+o]-(s+a>>1);i+=Math.abs(c)}return i}function YO(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=e>0?t[e+s-n]:0,u=e>0&&s>=o?t[e+s-(n+o)]:0,l=t[e+s]-Sb(a,c,u);r[i+s]=l}}function JO(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=e>0?t[e+o-n]:0,c=e>0&&o>=r?t[e+o-(n+r)]:0,u=t[e+o]-Sb(s,a,c);i+=Math.abs(u)}return i}var VO={0:BO,1:UO,2:KO,3:DO,4:YO},ZO={0:GO,1:WO,2:zO,3:qO,4:JO};Eb.exports=function(t,e,n,r,i){let o;if(!("filterType"in r)||r.filterType===-1)o=[0,1,2,3,4];else if(typeof r.filterType==="number")o=[r.filterType];else throw Error("unrecognised filter types");if(r.bitDepth===16)i*=2;let s=e*i,a=0,c=0,u=Buffer.alloc((s+1)*n),l=o[0];for(let d=0;d<n;d++){if(o.length>1){let f=1/0;for(let h=0;h<o.length;h++){let m=ZO[o[h]](t,c,s,i);if(m<f)l=o[h],f=m}}u[a]=l,a++,VO[l](t,c,s,u,a,i),a+=s,c+=s}return u}});var zd=Et((gj,xb)=>{var Jt=ko(),QO=Bd(),XO=vb(),tI=Mb(),eI=Yt("zlib"),pr=xb.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32768,t.deflateLevel=t.deflateLevel!=null?t.deflateLevel:9,t.deflateStrategy=t.deflateStrategy!=null?t.deflateStrategy:3,t.inputHasAlpha=t.inputHasAlpha!=null?t.inputHasAlpha:!0,t.deflateFactory=t.deflateFactory||eI.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType==="number"?t.colorType:Jt.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType==="number"?t.inputColorType:Jt.COLORTYPE_COLOR_ALPHA,[Jt.COLORTYPE_GRAYSCALE,Jt.COLORTYPE_COLOR,Jt.COLORTYPE_COLOR_ALPHA,Jt.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw Error("option color type:"+t.colorType+" is not supported at present");if([Jt.COLORTYPE_GRAYSCALE,Jt.COLORTYPE_COLOR,Jt.COLORTYPE_COLOR_ALPHA,Jt.COLORTYPE_ALPHA].indexOf(t.inputColorType)===-1)throw Error("option input color type:"+t.inputColorType+" is not supported at present");if(t.bitDepth!==8&&t.bitDepth!==16)throw Error("option bit depth:"+t.bitDepth+" is not supported at present")};pr.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};pr.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};pr.prototype.filterData=function(t,e,n){let r=XO(t,e,n,this._options),i=Jt.COLORTYPE_TO_BPP_MAP[this._options.colorType];return tI(r,e,n,this._options,i)};pr.prototype._packChunk=function(t,e){let n=e?e.length:0,r=Buffer.alloc(n+12);if(r.writeUInt32BE(n,0),r.writeUInt32BE(t,4),e)e.copy(r,8);return r.writeInt32BE(QO.crc32(r.slice(4,r.length-4)),r.length-4),r};pr.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*Jt.GAMMA_DIVISION),0),this._packChunk(Jt.TYPE_gAMA,e)};pr.prototype.packIHDR=function(t,e){let n=Buffer.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(Jt.TYPE_IHDR,n)};pr.prototype.packIDAT=function(t){return this._packChunk(Jt.TYPE_IDAT,t)};pr.prototype.packIEND=function(){return this._packChunk(Jt.TYPE_IEND,null)}});var Pb=Et((bj,Rb)=>{var nI=Yt("util"),Ob=Yt("stream"),rI=ko(),iI=zd(),Ib=Rb.exports=function(t){Ob.call(this);let e=t||{};this._packer=new iI(e),this._deflate=this._packer.createDeflate(),this.readable=!0};nI.inherits(Ib,Ob);Ib.prototype.pack=function(t,e,n,r){if(this.emit("data",Buffer.from(rI.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),r)this.emit("data",this._packer.packGAMA(r));let i=this._packer.filterData(t,e,n);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(o){this.emit("data",this._packer.packIDAT(o))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Lb=Et((Fs,Cb)=>{var Nb=Yt("assert").ok,yo=Yt("zlib"),oI=Yt("util"),Ab=Yt("buffer").kMaxLength;function fi(t){if(!(this instanceof fi))return new fi(t);if(t&&t.chunkSize<yo.Z_MIN_CHUNK)t.chunkSize=yo.Z_MIN_CHUNK;if(yo.Inflate.call(this,t),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&t.maxLength!=null)this._maxLength=t.maxLength}function sI(t){return new fi(t)}function Tb(t,e){if(e)process.nextTick(e);if(!t._handle)return;t._handle.close(),t._handle=null}fi.prototype._processChunk=function(t,e,n){if(typeof n==="function")return yo.Inflate._processChunk.call(this,t,e,n);let r=this,i=t&&t.length,o=this._chunkSize-this._offset,s=this._maxLength,a=0,c=[],u=0,l;this.on("error",function(m){l=m});function d(m,p){if(r._hadError)return;let b=o-p;if(Nb(b>=0,"have should not go down"),b>0){let $=r._buffer.slice(r._offset,r._offset+b);if(r._offset+=b,$.length>s)$=$.slice(0,s);if(c.push($),u+=$.length,s-=$.length,s===0)return!1}if(p===0||r._offset>=r._chunkSize)o=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize);if(p===0)return a+=i-m,i=m,!0;return!1}Nb(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,t,a,i,this._buffer,this._offset,o),f=f||this._writeState;while(!this._hadError&&d(f[0],f[1]));if(this._hadError)throw l;if(u>=Ab)throw Tb(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+Ab.toString(16)+" bytes");let h=Buffer.concat(c,u);return Tb(this),h};oI.inherits(fi,yo.Inflate);function aI(t,e){if(typeof e==="string")e=Buffer.from(e);if(!(e instanceof Buffer))throw TypeError("Not a string or buffer");let n=t._finishFlushFlag;if(n==null)n=yo.Z_FINISH;return t._processChunk(e,n)}function Hb(t,e){return aI(new fi(e),t)}Cb.exports=Fs=Hb;Fs.Inflate=fi;Fs.createInflate=sI;Fs.inflateSync=Hb});var Dd=Et((wj,jb)=>{var Fb=jb.exports=function(t){this._buffer=t,this._reads=[]};Fb.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Fb.prototype.process=function(){while(this._reads.length>0&&this._buffer.length){let t=this._reads[0];if(this._buffer.length&&(this._buffer.length>=t.length||t.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}else break}if(this._reads.length>0)throw Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)throw Error("unrecognised content at end of stream")}});var _b=Et((lI)=>{var cI=Dd(),uI=Fd();lI.process=function(t,e){let n=[],r=new cI(t);return new uI(e,{read:r.read.bind(r),write:function(o){n.push(o)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Wb=Et((kj,Ub)=>{var Bb=!0,Gb=Yt("zlib"),fI=Lb();if(!Gb.deflateSync)Bb=!1;var hI=Dd(),mI=_b(),pI=Gd(),gI=Ud(),bI=Wd();Ub.exports=function(t,e){if(!Bb)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n;function r(S){n=S}let i;function o(S){i=S}function s(S){i.transColor=S}function a(S){i.palette=S}function c(){i.alpha=!0}let u;function l(S){u=S}let d=[];function f(S){d.push(S)}let h=new hI(t);if(new pI(e,{read:h.read.bind(h),error:r,metadata:o,gamma:l,palette:a,transColor:s,inflateData:f,simpleTransparency:c}).start(),h.process(),n)throw n;let p=Buffer.concat(d);d.length=0;let b;if(i.interlace)b=Gb.inflateSync(p);else{let M=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;b=fI(p,{chunkSize:M,maxLength:M})}if(p=null,!b||!b.length)throw Error("bad png - invalid inflate data response");let $=mI.process(b,i);p=null;let k=gI.dataToBitMap($,i);$=null;let v=bI(k,i,e.skipRescale);return i.data=v,i.gamma=u||0,i}});var qb=Et((yj,Db)=>{var Kb=!0,zb=Yt("zlib");if(!zb.deflateSync)Kb=!1;var wI=ko(),$I=zd();Db.exports=function(t,e){if(!Kb)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new $I(e||{}),i=[];if(i.push(Buffer.from(wI.PNG_SIGNATURE)),i.push(r.packIHDR(t.width,t.height)),t.gamma)i.push(r.packGAMA(t.gamma));let o=r.filterData(t.data,t.width,t.height),s=zb.deflateSync(o,r.getDeflateOptions());if(o=null,!s||!s.length)throw Error("bad png - invalid compressed data response");return i.push(r.packIDAT(s)),i.push(r.packIEND()),Buffer.concat(i)}});var Yb=Et((vI)=>{var kI=Wb(),yI=qb();vI.read=function(t,e){return kI(t,e||{})};vI.write=function(t,e){return yI(t,e)}});var Vb=Et((RI)=>{var MI=Yt("util"),Jb=Yt("stream"),xI=kb(),OI=Pb(),II=Yb(),re=RI.PNG=function(t){if(Jb.call(this),t=t||{},this.width=t.width|0,this.height=t.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,t.fill&&this.data)this.data.fill(0);this.gamma=0,this.readable=this.writable=!0,this._parser=new xI(t),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new OI(t),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};MI.inherits(re,Jb);re.sync=II;re.prototype.pack=function(){if(!this.data||!this.data.length)return this.emit("error","No data provided"),this;return process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this};re.prototype.parse=function(t,e){if(e){let n,r;n=function(i){this.removeListener("error",r),this.data=i,e(null,this)}.bind(this),r=function(i){this.removeListener("parsed",n),e(i,null)}.bind(this),this.once("parsed",n),this.once("error",r)}return this.end(t),this};re.prototype.write=function(t){return this._parser.write(t),!0};re.prototype.end=function(t){this._parser.end(t)};re.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};re.prototype._gamma=function(t){this.gamma=t};re.prototype._handleClose=function(){if(!this._parser.writable&&!this._packer.readable)this.emit("close")};re.bitblt=function(t,e,n,r,i,o,s,a){if(n|=0,r|=0,i|=0,o|=0,s|=0,a|=0,n>t.width||r>t.height||n+i>t.width||r+o>t.height)throw Error("bitblt reading outside image");if(s>e.width||a>e.height||s+i>e.width||a+o>e.height)throw Error("bitblt writing outside image");for(let c=0;c<o;c++)t.data.copy(e.data,(a+c)*e.width+s<<2,(r+c)*t.width+n<<2,(r+c)*t.width+n+i<<2)};re.prototype.bitblt=function(t,e,n,r,i,o,s){return re.bitblt(this,t,e,n,r,i,o,s),this};re.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let r=t.width*e+n<<2;for(let i=0;i<3;i++){let o=t.data[r+i]/255;o=Math.pow(o,0.45454545454545453/t.gamma),t.data[r+i]=Math.round(o*255)}}t.gamma=0}};re.prototype.adjustGamma=function(){re.adjustGamma(this)}});var ah=Et((L_,D$)=>{var sh={to(t,e){if(!e)return`\x1B[${t+1}G`;return`\x1B[${e+1};${t+1}H`},move(t,e){let n="";if(t<0)n+=`\x1B[${-t}D`;else if(t>0)n+=`\x1B[${t}C`;if(e<0)n+=`\x1B[${-e}A`;else if(e>0)n+=`\x1B[${e}B`;return n},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},ON={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},IN={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let n=0;n<t;n++)e+=this.line+(n<t-1?sh.up():"");if(t)e+=sh.left;return e}};D$.exports={cursor:sh,scroll:ON,erase:IN,beep:"\x07"}});import{spawnSync as _4}from"node:child_process";import{isMainThread as B4}from"node:worker_threads";import{parseArgs as N4}from"node:util";var lt={name:"@kecan0406/ttheme",version:"1.2.16",type:"module",bin:{ttheme:"bin/ttheme.js"},files:["bin","dist/manifest.json","shell","!shell/check.zsh"],description:"Character terminal palettes for Ghostty, kitty, Alacritty, WezTerm, iTerm2, Windows Terminal, Warp and Konsole",license:"MIT",author:"kecan0406",repository:{type:"git",url:"git+https://github.com/kecan0406/ttheme.git"},homepage:"https://github.com/kecan0406/ttheme#readme",bugs:"https://github.com/kecan0406/ttheme/issues",keywords:["terminal","theme","ghostty","kitty","alacritty","wezterm","iterm2","konsole"],devDependencies:{"@biomejs/biome":"^2.3.0","@clack/prompts":"^1.7.0","@jsquash/jpeg":"^1.6.0","@material/material-color-utilities":"^0.4.0","@types/bun":"^1.3.0","@types/pngjs":"6.0.5","@xterm/headless":"6.0.0","fast-string-width":"^3.0.2",pngjs:"7.0.0","smol-toml":"^1.9.0",typescript:"^5.8.2"},engines:{bun:">=1.3",node:">=22"}};import{existsSync as $5,readFileSync as k5}from"node:fs";var Fg=(()=>{let t=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(e)=>{let n=0;t.lastIndex=0;while(t.test(e))n+=1;return e.length-n}})(),jg=(t)=>{return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510},_g=(t)=>{return t===8987||t===9001||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12771||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=19903||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t>=131072&&t<=196605||t>=196608&&t<=262141};var Z2=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Q2=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Bg=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,X2=/\t{1,1000}/y,Gg=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,tO=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,eO=/\p{M}+/gu,nO={limit:1/0,ellipsis:""},Ug=(t,e={},n={})=>{let r=e.limit??1/0,i=e.ellipsis??"",o=e?.ellipsisWidth??(i?Ug(i,nO,n).width:0),s=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,l=2,d=n.regularWidth??1,f=n.wideWidth??2,h=[[tO,d],[Z2,0],[Q2,a],[X2,c],[Gg,u],[Bg,f]],m=0,p=0,b=t.length,$=0,k=!1,v=b,S=Math.max(0,r-o),M=0,I=0,x=0,H=0;t:while(!0){if(I>M||p>=b&&p>m){let N=t.slice(M,I)||t.slice(m,p);$=0;for(let j of N.replaceAll(eO,"")){let W=j.codePointAt(0)||0;if(jg(W))H=2;else if(_g(W))H=f;else H=d;if(x+H>S)v=Math.min(v,Math.max(M,m)+$);if(x+H>r){k=!0;break t}$+=j.length,x+=H}M=I=0}if(p>=b)break t;for(let N=0,j=h.length;N<j;N++){let[W,_]=h[N];if(W.lastIndex=p,W.test(t)){if($=W===Bg?Fg(t.slice(p,W.lastIndex)):W===Gg?1:W.lastIndex-p,H=$*_,x+H>S)v=Math.min(v,p+Math.floor((S-x)/_));if(x+H>r){k=!0;break t}x+=H,M=m,I=p,p=m=W.lastIndex;continue t}}p+=1}return{width:k?S:x,index:k?v:b,truncated:k,ellipsed:k&&r>=o}},Wg=Ug;var rO={limit:1/0,ellipsis:"",ellipsisWidth:0},iO=(t,e={})=>{return Wg(t,rO,e).width},B=iO;function Ed(t){let e=t.replace("#","");return[e.slice(0,2),e.slice(2,4),e.slice(4,6)].map((n)=>Number.parseInt(n,16)).join(";")}function qe(t){return`\x1B[38;2;${Ed(t)}m`}function $c(t,e){return`\x1B[48;2;${Ed(t)};38;2;${Ed(e)}m`}function Kg(t,e="\x1B[39m"){return`${t.map((n)=>`${qe(n)}■`).join(" ")}${e}`}var Ft="\x1B[0m",ut="\x1B[1m",C="\x1B[2m",$e="\x1B[22m",mo="\x1B[32m",ne="\x1B[33m",kc="\x1B[36m",jn=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"],Cs="⧉";function yc(t,e){return e?`\x1B]8;;${e}\x1B\\${t}\x1B]8;;\x1B\\`:t}function Md(t,e){if(t[e]!=="\x1B")return 0;if(t[e+1]==="]"){let r=t.indexOf("\x07",e+2),i=t.indexOf("\x1B\\",e+2),o=r!==-1&&(i===-1||r<i)?r+1:i!==-1?i+2:0;return o?o-e:0}if(t[e+1]!=="[")return 0;let n=e+2;while(n<t.length&&!/[@-~]/.test(t[n]))n++;return n<t.length?n-e+1:0}var xd=new Intl.Segmenter(void 0,{granularity:"grapheme"});function vc(t){let e=[],n=0;while(n<t.length){let r=Md(t,n);if(r>0){e.push({text:t.slice(n,n+r),start:n,end:n+r,width:0,sequence:!0}),n+=r;continue}let i=t.indexOf("\x1B",n+1),o=i===-1?t.length:i;for(let{segment:s,index:a}of xd.segment(t.slice(n,o)))e.push({text:s,start:n+a,end:n+a+s.length,width:B(s),sequence:!1});n=o}return e}function Od(t,e){let n="",r=0;for(let i of vc(t)){if(!i.sequence){if(r+i.width>e)break;r+=i.width}n+=i.text}return{head:n,used:r}}function rt(t,e,n=!0){if(e<=0)return"";let r=B(t);if(r<=e)return n?t+" ".repeat(e-r):t;let{head:i,used:o}=Od(t,e-1);return`${i}${t.includes("\x1B")?"\x1B[0m":""}…${n?" ".repeat(e-1-o):""}`}function zg(t,e){let{head:n,used:r}=Od(t,e);return`${n}${t.includes("\x1B")?Ft:""}${" ".repeat(e-r)}`}function vt(t,e,n){let r=n-B(e)-1;return r<=0?rt(t,n):`${rt(t,r)} ${e}`}function wt(t,e){let n=[],r="";for(let i of t.split(/\s+/).filter(Boolean)){let o=r?`${r} ${i}`:i;if(B(o)<=e){r=o;continue}if(r)n.push(r);while(B(i)>e){let{head:s}=Od(i,e),a=Math.max(s.lastIndexOf("/")+1,s.lastIndexOf("#")),c=a>0?a:s.length||vc(i)[0].end;n.push(i.slice(0,c)),i=i.slice(c)}r=i}if(r)n.push(r);return n}import{existsSync as $$,readFileSync as Zf}from"node:fs";import{join as k$}from"node:path";var oO=/^#[0-9a-f]{6}$/;function le(t){return oO.test(t)}function nt(t){let e=Number.parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,e&255]}function bt(t,e,n){let r=nt(t),i=nt(e);return`#${r.map((o,s)=>Math.round(o+((i[s]??0)-o)*n).toString(16).padStart(2,"0")).join("")}`}function St(t){let[e,n,r]=nt(t).map((i)=>{let o=i/255;return o<=0.03928?o/12.92:((o+0.055)/1.055)**2.4});return 0.2126*e+0.7152*n+0.0722*r}function $t(t,e){let n=St(t),r=St(e);return(Math.max(n,r)+0.05)/(Math.min(n,r)+0.05)}function Sc(t,e){return Math.round($t(t,e)*100)/100}function sO(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function Mt(t){let[e,n,r]=nt(t).map(sO),i=Math.cbrt(0.4122214708*e+0.5363325363*n+0.0514459929*r),o=Math.cbrt(0.2119034982*e+0.6806995451*n+0.1073969566*r),s=Math.cbrt(0.0883024619*e+0.2817188376*n+0.6299787005*r),a=1.9779984951*i-2.428592205*o+0.4505937099*s,c=0.0259040371*i+0.7827717662*o-0.808675766*s;return{l:0.2104542553*i+0.793617785*o-0.0040720468*s,c:Math.hypot(a,c),h:(Math.atan2(c,a)*180/Math.PI+360)%360}}var dr=7,Dg=3,Id=0.15,qg=1.6,Pd=[1,2,3,4,5,6,9,10,11,12,13,14],Yg=[7,15],fr=[1,2,3,4,5,6],ke={1:{name:"red",center:19,width:25},2:{name:"green",center:132,width:35},3:{name:"yellow",center:88,width:35},4:{name:"blue",center:250,width:60},5:{name:"magenta",center:329,width:40},6:{name:"cyan",center:197,width:60}},li=0.03,Ye=25,po=15,go=0.08;function _n(t,e){let n=t.ansi[e];if(n===void 0)throw Error(`${t.name}: missing ANSI ${e}`);return n}function Rd(t,e,n){let r=t.background;return e.flatMap((i)=>{let o=_n(t,i);return $t(o,r)<n?[`ANSI ${i} ${o} on ${r} is ${Sc(o,r)}:1, needs ${n}:1`]:[]})}function Jg(t,e){return Math.min(...e.map((n)=>$t(_n(t,n),t.background)))}var Vg=[{rule:"foreground",label:"foreground on background",unit:"ratio",min:dr,measure:({foreground:t,background:e})=>$t(t,e),check:({foreground:t,background:e})=>$t(t,e)<dr?[`foreground ${t} on ${e} is ${Sc(t,e)}:1, needs ${dr}:1`]:[]},{rule:"accents",label:"weakest accent on background",unit:"ratio",min:Dg,measure:(t)=>Jg(t,Pd),check:(t)=>Rd(t,Pd,Dg)},{rule:"ansi0-dark",label:"ansi0 luminance",unit:"luminance",max:Id,measure:(t)=>St(_n(t,0)),check:(t)=>{let e=_n(t,0);return St(e)>Id?[`ANSI 0 ${e} has luminance ${St(e).toFixed(3)}, needs <= ${Id}`]:[]}},{rule:"light-ansi",label:"ansi7 and ansi15 on background",unit:"ratio",min:dr,measure:(t)=>Jg(t,Yg),check:(t)=>Rd(t,Yg,dr)},{rule:"ansi8-visible",label:"ansi8 on background",unit:"ratio",min:qg,measure:(t)=>$t(_n(t,8),t.background),check:(t)=>Rd(t,[8],qg)},{rule:"selection",label:"foreground on selection",unit:"ratio",min:dr,measure:({foreground:t,selectionBackground:e})=>e===void 0?Number.NaN:$t(t,e),check:({foreground:t,selectionBackground:e})=>e!==void 0&&$t(t,e)<dr?[`foreground ${t} on selection ${e} is ${Sc(t,e)}:1, needs ${dr}:1`]:[]}];function ye(t,e){let n=Math.abs(t-e)%360;return Math.min(n,360-n)}var mn=(t)=>t>8?t-8:t;function bo(t){let e=t.signatureSlots.filter((n)=>n.startsWith("ansi")).map((n)=>Number(n.slice(4)));return new Set(e.flatMap((n)=>fr.includes(mn(n))?[n,n>8?n-8:n+8]:[n]))}function Ls(t,e){let n=Mt(_n(t,e));return n.c<li?void 0:n}function hr(t){let e=bo(t);return Pd.flatMap((n)=>{let r=Ls(t,n),i=ke[mn(n)];if(r===void 0||i===void 0||e.has(n))return[];let o=ye(r.h,i.center)-i.width;return o>0?[{slot:n,hue:r.h,over:o}]:[]})}function Bn(t){let e=new Set(t.signatureSlots);return fr.flatMap((n)=>{let r=Ls(t,n),i=Ls(t,n+8);if(r===void 0||i===void 0||e.has(`ansi${n}`)&&e.has(`ansi${n+8}`))return[];return[{normal:n,gap:ye(r.h,i.h)}]})}function Gn(t){let e=bo(t);return[0,8].flatMap((n)=>fr.flatMap((r)=>fr.filter((i)=>i>r).flatMap((i)=>{let[o,s]=[n+r,n+i],a=Ls(t,o),c=Ls(t,s);if(a===void 0||c===void 0||e.has(o)&&e.has(s))return[];return ye(a.h,c.h)<po&&Math.abs(a.l-c.l)<go?[[o,s]]:[]})))}var aO=[{rule:"ansi-role",label:"accent hue outside its ANSI role",unit:"degrees",max:0,measure:(t)=>Math.max(0,...hr(t).map((e)=>e.over)),check:(t)=>hr(t).map(({slot:e,hue:n,over:r})=>{let i=ke[mn(e)];return`ANSI ${e} ${_n(t,e)} has hue ${n.toFixed(0)}°, ${r.toFixed(0)}° outside ${i.name} (${i.center}±${i.width}°)`})},{rule:"bright-follows",label:"widest normal to bright hue gap",unit:"degrees",max:Ye,measure:(t)=>Math.max(0,...Bn(t).map((e)=>e.gap)),check:(t)=>Bn(t).filter((e)=>e.gap>Ye).map(({normal:e,gap:n})=>`ANSI ${e+8} is ${n.toFixed(0)}° from ANSI ${e}, needs <= ${Ye}°`)},{rule:"distinct",label:"accent pairs that read as one color",unit:"pairs",max:0,measure:(t)=>Gn(t).length,check:(t)=>Gn(t).map(([e,n])=>`ANSI ${e} ${_n(t,e)} and ANSI ${n} ${_n(t,n)} are within ${po}° hue and ${go} lightness`)}],Ec=[...Vg,...aO],Nd=Ec.map((t)=>t.rule),ve=Ec.map(({rule:t,label:e,unit:n,min:r,max:i})=>({rule:t,label:e,unit:n,...r===void 0?{}:{min:r},...i===void 0?{}:{max:i}}));function pn(t){return Ec.map((e)=>Math.round(e.measure(t)*1000)/1000)}function Zg(t,e){return t.filter((n)=>!e.waive.includes(n.rule)).flatMap((n)=>n.check(e).map((r)=>({theme:e.name,rule:n.rule,detail:r})))}function Un(t){return Zg(Ec,t)}function Qg(t){return Zg(Vg,t)}function Xg(t){return t.flatMap(Un)}import{chmodSync as cO,copyFileSync as uO,existsSync as wo,mkdirSync as lO,readFileSync as Ad,realpathSync as dO,renameSync as eb,rmSync as tb,statSync as fO,writeFileSync as nb}from"node:fs";import{dirname as hO}from"node:path";function rb(t){return`${t}.ttheme.bak`}var mO=/^(?:#|--) ttheme begin$|path = "ttheme-|^DefaultProfile=ttheme-/m;function Td(t){let e=rb(t);if(wo(t)&&!wo(e)&&!mO.test(Ad(t,"utf8")))uO(t,e)}function L(t,e){let n=wo(t)?dO(t):t;lO(hO(n),{recursive:!0});let r=`${n}.ttheme-${process.pid}`;if(nb(r,e),wo(n))cO(r,fO(n).mode&4095);eb(r,n)}function di(t,e,n){if(nb(t,n),t!==e)eb(t,e)}function gn(t,e){if((wo(t)?Ad(t,"utf8"):void 0)===e)return!1;return Td(t),L(t,e),!0}function ib(t,e){let n=rb(t),r=wo(n)?Ad(n,"utf8"):void 0;if(e===""&&r===void 0)return tb(t,{force:!0}),"removed";if(L(t,e),r===void 0||r===e)return tb(n,{force:!0}),"restored";return"kept backup"}import{createHash as m0}from"node:crypto";import{copyFileSync as uP,existsSync as yf,mkdirSync as lP,readdirSync as dP,readFileSync as No,renameSync as p0,rmSync as Po,statSync as fP}from"node:fs";import{basename as g0,isAbsolute as hP,join as Y}from"node:path";import{createHash as CR}from"node:crypto";import{existsSync as LR,readdirSync as FR,readFileSync as jR,rmSync as _R,statSync as BR,utimesSync as GR}from"node:fs";import{join as Io}from"node:path";import{readdirSync as UI,rmSync as WI,statSync as KI}from"node:fs";import{setDefaultAutoSelectFamilyAttemptTimeout as zI}from"node:net";import{homedir as DI}from"node:os";import{join as Us}from"node:path";import{setTimeout as qI}from"node:timers/promises";var tw=Sd(Vb(),1);import{constants as TI,deflateSync as HI,inflateSync as CI}from"node:zlib";import{inflateRawSync as NI}from"node:zlib";var PI=(()=>{var t=import.meta.url;return function(e={}){var n=e,r,i,o=new Promise((g,w)=>{r=g,i=w});let a=globalThis.ServiceWorkerGlobalScope!==void 0&&typeof self<"u"&&globalThis.caches&&globalThis.caches.default!==void 0,c=typeof process==="object"&&process.release&&process.release.name==="node";if(a||c){if(!globalThis.ImageData)globalThis.ImageData=class{constructor(w,y,E){this.data=w,this.width=y,this.height=E}};if(import.meta.url===void 0)import.meta.url="https://localhost";if(typeof self<"u"&&self.location===void 0)self.location={href:""}}var u=Object.assign({},n),l=[],d="./this.program",f=(g,w)=>{throw w},h=typeof window=="object",m=typeof importScripts=="function",p=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b="";function $(g){if(n.locateFile)return n.locateFile(g,b);return b+g}var k,v,S;if(h||m){if(m)b=self.location.href;else if(typeof document<"u"&&document.currentScript)b=document.currentScript.src;if(t)b=t;if(b.startsWith("blob:"))b="";else b=b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1);{if(k=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.send(null),w.responseText},m)S=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.responseType="arraybuffer",w.send(null),new Uint8Array(w.response)};v=(g,w,y)=>{var E=new XMLHttpRequest;E.open("GET",g,!0),E.responseType="arraybuffer",E.onload=()=>{if(E.status==200||E.status==0&&E.response){w(E.response);return}y()},E.onerror=y,E.send(null)}}}var M=n.print||console.log.bind(console),I=n.printErr||console.error.bind(console);if(Object.assign(n,u),u=null,n.arguments)l=n.arguments;if(n.thisProgram)d=n.thisProgram;if(n.quit)f=n.quit;var x;if(n.wasmBinary)x=n.wasmBinary;var H,N=!1,j,W,_,X,z,xt,et,lr,dn;function fn(){var g=H.buffer;n.HEAP8=W=new Int8Array(g),n.HEAP16=X=new Int16Array(g),n.HEAPU8=_=new Uint8Array(g),n.HEAPU16=z=new Uint16Array(g),n.HEAP32=xt=new Int32Array(g),n.HEAPU32=et=new Uint32Array(g),n.HEAPF32=lr=new Float32Array(g),n.HEAPF64=dn=new Float64Array(g)}var hn=[],pc=[],ii=[],ud=!1;function ld(){if(n.preRun){if(typeof n.preRun=="function")n.preRun=[n.preRun];while(n.preRun.length)XM(n.preRun.shift())}hd(hn)}function dd(){ud=!0,hd(pc)}function QM(){if(n.postRun){if(typeof n.postRun=="function")n.postRun=[n.postRun];while(n.postRun.length)ex(n.postRun.shift())}hd(ii)}function XM(g){hn.unshift(g)}function tx(g){pc.unshift(g)}function ex(g){ii.unshift(g)}var oi=0,fd=null,Ts=null;function nx(g){oi++,n.monitorRunDependencies?.(oi)}function rx(g){if(oi--,n.monitorRunDependencies?.(oi),oi==0){if(fd!==null)clearInterval(fd),fd=null;if(Ts){var w=Ts;Ts=null,w()}}}function gg(g){n.onAbort?.(g),g="Aborted("+g+")",I(g),N=!0,j=1,g+=". Build with -sASSERTIONS for more info.";var w=new WebAssembly.RuntimeError(g);throw i(w),w}var ix="data:application/octet-stream;base64,",bg=(g)=>g.startsWith(ix),si;if(n.locateFile){if(si="mozjpeg_dec.wasm",!bg(si))si=$(si)}else si=new URL("mozjpeg_dec.wasm",import.meta.url).href;function wg(g){if(g==si&&x)return new Uint8Array(x);if(S)return S(g);throw"both async and sync fetching of the wasm failed"}function ox(g){if(!x&&(h||m)){if(typeof fetch=="function")return fetch(g,{credentials:"same-origin"}).then((w)=>{if(!w.ok)throw`failed to load wasm binary file at '${g}'`;return w.arrayBuffer()}).catch(()=>wg(g))}return Promise.resolve().then(()=>wg(g))}function $g(g,w,y){return ox(g).then((E)=>WebAssembly.instantiate(E,w)).then(y,(E)=>{I(`failed to asynchronously prepare wasm: ${E}`),gg(E)})}function sx(g,w,y,E){if(!g&&typeof WebAssembly.instantiateStreaming=="function"&&!bg(w)&&typeof fetch=="function")return fetch(w,{credentials:"same-origin"}).then((R)=>{var P=WebAssembly.instantiateStreaming(R,y);return P.then(E,function(G){return I(`wasm streaming compile failed: ${G}`),I("falling back to ArrayBuffer instantiation"),$g(w,y,E)})});return $g(w,y,E)}function ax(){var g={a:N2};function w(E,R){return te=E.exports,H=te.A,fn(),Og=te.F,tx(te.B),rx("wasm-instantiate"),te}nx("wasm-instantiate");function y(E){w(E.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(g,w)}catch(E){I(`Module.instantiateWasm callback failed with error: ${E}`),i(E)}return sx(x,si,g,y).catch(i),{}}function cx(g){this.name="ExitStatus",this.message=`Program terminated with exit(${g})`,this.status=g}var hd=(g)=>{while(g.length>0)g.shift()(n)},ux=n.noExitRuntime||!0;class kg{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){et[this.ptr+4>>2]=g}get_type(){return et[this.ptr+4>>2]}set_destructor(g){et[this.ptr+8>>2]=g}get_destructor(){return et[this.ptr+8>>2]}set_caught(g){g=g?1:0,W[this.ptr+12]=g}get_caught(){return W[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,W[this.ptr+13]=g}get_rethrown(){return W[this.ptr+13]!=0}init(g,w){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(w)}set_adjusted_ptr(g){et[this.ptr+16>>2]=g}get_adjusted_ptr(){return et[this.ptr+16>>2]}get_exception_ptr(){var g=Hg(this.get_type());if(g)return et[this.excPtr>>2];var w=this.get_adjusted_ptr();if(w!==0)return w;return this.excPtr}}var yg=0,lx=0,dx=(g,w,y)=>{var E=new kg(g);throw E.init(w,y),yg=g,lx++,yg},fx=(g,w,y,E,R)=>{},hx=()=>{var g=Array(256);for(var w=0;w<256;++w)g[w]=String.fromCharCode(w);vg=g},vg,De=(g)=>{var w="",y=g;while(_[y])w+=vg[_[y++]];return w},uo={},ai={},gc={},Sg,we=(g)=>{throw new Sg(g)},Eg,Mg=(g)=>{throw new Eg(g)},mx=(g,w,y)=>{g.forEach(function(T){gc[T]=w});function E(T){var U=y(T);if(U.length!==g.length)Mg("Mismatched type converter count");for(var Q=0;Q<g.length;++Q)Cn(g[Q],U[Q])}var R=Array(w.length),P=[],G=0;if(w.forEach((T,U)=>{if(ai.hasOwnProperty(T))R[U]=ai[T];else{if(P.push(T),!uo.hasOwnProperty(T))uo[T]=[];uo[T].push(()=>{if(R[U]=ai[T],++G,G===P.length)E(R)})}}),P.length===0)E(R)};function px(g,w,y={}){var E=w.name;if(!g)we(`type "${E}" must have a positive integer typeid pointer`);if(ai.hasOwnProperty(g))if(y.ignoreDuplicateRegistrations)return;else we(`Cannot register type '${E}' twice`);if(ai[g]=w,delete gc[g],uo.hasOwnProperty(g)){var R=uo[g];delete uo[g],R.forEach((P)=>P())}}function Cn(g,w,y={}){if(!("argPackAdvance"in w))throw TypeError("registerType registeredInstance requires argPackAdvance");return px(g,w,y)}var ci=8,gx=(g,w,y,E)=>{w=De(w),Cn(g,{name:w,fromWireType:function(R){return!!R},toWireType:function(R,P){return P?y:E},argPackAdvance:ci,readValueFromPointer:function(R){return this.fromWireType(_[R])},destructorFunction:null})},md=[],Ln=[],pd=(g)=>{if(g>9&&--Ln[g+1]===0)Ln[g]=void 0,md.push(g)},bx=()=>Ln.length/2-5-md.length,wx=()=>{Ln.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=bx},ui={toValue:(g)=>{if(!g)we("Cannot use deleted val. handle = "+g);return Ln[g]},toHandle:(g)=>{switch(g){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let w=md.pop()||Ln.length;return Ln[w]=g,Ln[w+1]=1,w}}}};function gd(g){return this.fromWireType(et[g>>2])}var $x={name:"emscripten::val",fromWireType:(g)=>{var w=ui.toValue(g);return pd(g),w},toWireType:(g,w)=>ui.toHandle(w),argPackAdvance:ci,readValueFromPointer:gd,destructorFunction:null},kx=(g)=>Cn(g,$x),yx=(g,w)=>{switch(w){case 4:return function(y){return this.fromWireType(lr[y>>2])};case 8:return function(y){return this.fromWireType(dn[y>>3])};default:throw TypeError(`invalid float width (${w}): ${g}`)}},vx=(g,w,y)=>{w=De(w),Cn(g,{name:w,fromWireType:(E)=>E,toWireType:(E,R)=>R,argPackAdvance:ci,readValueFromPointer:yx(w,y),destructorFunction:null})},bd=(g,w)=>Object.defineProperty(w,"name",{value:g}),xg=(g)=>{while(g.length){var w=g.pop(),y=g.pop();y(w)}};function Sx(g){for(var w=1;w<g.length;++w)if(g[w]!==null&&g[w].destructorFunction===void 0)return!0;return!1}function Ex(g,w,y,E,R,P){var G=w.length;if(G<2)we("argTypes array size mismatch! Must at least get return value and 'this' types!");var T=w[1]!==null&&y!==null,U=Sx(w),Q=w[0].name!=="void",pt=G-2,At=Array(pt),ee=[],Ce=[],lo=function(...yd){if(yd.length!==pt)we(`function ${g} called with ${yd.length} arguments, expected ${pt}`);Ce.length=0;var vd;if(ee.length=T?2:1,ee[0]=R,T)vd=w[1].toWireType(Ce,this),ee[1]=vd;for(var fo=0;fo<pt;++fo)At[fo]=w[fo+2].toWireType(Ce,yd[fo]),ee.push(At[fo]);var j2=E(...ee);function _2(B2){if(U)xg(Ce);else for(var ho=T?1:2;ho<w.length;ho++){var G2=ho===1?vd:At[ho-2];if(w[ho].destructorFunction!==null)w[ho].destructorFunction(G2)}if(Q)return w[0].fromWireType(B2)}return _2(j2)};return bd(g,lo)}var Mx=(g,w,y)=>{if(g[w].overloadTable===void 0){var E=g[w];g[w]=function(...R){if(!g[w].overloadTable.hasOwnProperty(R.length))we(`Function '${y}' called with an invalid number of arguments (${R.length}) - expects one of (${g[w].overloadTable})!`);return g[w].overloadTable[R.length].apply(this,R)},g[w].overloadTable=[],g[w].overloadTable[E.argCount]=E}},xx=(g,w,y)=>{if(n.hasOwnProperty(g)){if(y===void 0||n[g].overloadTable!==void 0&&n[g].overloadTable[y]!==void 0)we(`Cannot register public name '${g}' twice`);if(Mx(n,g,g),n.hasOwnProperty(y))we(`Cannot register multiple overloads of a function with the same number of arguments (${y})!`);n[g].overloadTable[y]=w}else if(n[g]=w,y!==void 0)n[g].numArguments=y},Ox=(g,w)=>{var y=[];for(var E=0;E<g;E++)y.push(et[w+E*4>>2]);return y},Ix=(g,w,y)=>{if(!n.hasOwnProperty(g))Mg("Replacing nonexistent public symbol");if(n[g].overloadTable!==void 0&&y!==void 0)n[g].overloadTable[y]=w;else n[g]=w,n[g].argCount=y},Rx=(g,w,y)=>{g=g.replace(/p/g,"i");var E=n["dynCall_"+g];return E(w,...y)},bc=[],Og,Ig=(g)=>{var w=bc[g];if(!w){if(g>=bc.length)bc.length=g+1;bc[g]=w=Og.get(g)}return w},Px=(g,w,y=[])=>{if(g.includes("j"))return Rx(g,w,y);var E=Ig(w)(...y);return E},Nx=(g,w)=>(...y)=>Px(g,w,y),Ax=(g,w)=>{g=De(g);function y(){if(g.includes("j"))return Nx(g,w);return Ig(w)}var E=y();if(typeof E!="function")we(`unknown function pointer with signature ${g}: ${w}`);return E},Tx=(g,w)=>{var y=bd(w,function(E){this.name=w,this.message=E;var R=Error(E).stack;if(R!==void 0)this.stack=this.toString()+`
3
+ `+R.replace(/^Error(:[^\n]*)?\n/,"")});return y.prototype=Object.create(g.prototype),y.prototype.constructor=y,y.prototype.toString=function(){if(this.message===void 0)return this.name;else return`${this.name}: ${this.message}`},y},Rg,Pg=(g)=>{var w=Tg(g),y=De(w);return Fn(w),y},Hx=(g,w)=>{var y=[],E={};function R(P){if(E[P])return;if(ai[P])return;if(gc[P]){gc[P].forEach(R);return}y.push(P),E[P]=!0}throw w.forEach(R),new Rg(`${g}: `+y.map(Pg).join([", "]))},Cx=(g)=>{g=g.trim();let w=g.indexOf("(");if(w!==-1)return g.substr(0,w);else return g},Lx=(g,w,y,E,R,P,G)=>{var T=Ox(w,y);g=De(g),g=Cx(g),R=Ax(E,R),xx(g,function(){Hx(`Cannot call ${g} due to unbound types`,T)},w-1),mx([],T,(U)=>{var Q=[U[0],null].concat(U.slice(1));return Ix(g,Ex(g,Q,null,R,P,G),w-1),[]})},Fx=(g,w,y)=>{switch(w){case 1:return y?(E)=>W[E]:(E)=>_[E];case 2:return y?(E)=>X[E>>1]:(E)=>z[E>>1];case 4:return y?(E)=>xt[E>>2]:(E)=>et[E>>2];default:throw TypeError(`invalid integer width (${w}): ${g}`)}},jx=(g,w,y,E,R)=>{if(w=De(w),R===-1)R=4294967295;var P=(pt)=>pt;if(E===0){var G=32-8*y;P=(pt)=>pt<<G>>>G}var T=w.includes("unsigned"),U=(pt,At)=>{},Q;if(T)Q=function(pt,At){return U(At,this.name),At>>>0};else Q=function(pt,At){return U(At,this.name),At};Cn(g,{name:w,fromWireType:P,toWireType:Q,argPackAdvance:ci,readValueFromPointer:Fx(w,y,E!==0),destructorFunction:null})},_x=(g,w,y)=>{var E=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],R=E[w];function P(G){var T=et[G>>2],U=et[G+4>>2];return new R(W.buffer,U,T)}y=De(y),Cn(g,{name:y,fromWireType:P,argPackAdvance:ci,readValueFromPointer:P},{ignoreDuplicateRegistrations:!0})},Bx=(g,w,y,E)=>{if(!(E>0))return 0;var R=y,P=y+E-1;for(var G=0;G<g.length;++G){var T=g.charCodeAt(G);if(T>=55296&&T<=57343){var U=g.charCodeAt(++G);T=65536+((T&1023)<<10)|U&1023}if(T<=127){if(y>=P)break;w[y++]=T}else if(T<=2047){if(y+1>=P)break;w[y++]=192|T>>6,w[y++]=128|T&63}else if(T<=65535){if(y+2>=P)break;w[y++]=224|T>>12,w[y++]=128|T>>6&63,w[y++]=128|T&63}else{if(y+3>=P)break;w[y++]=240|T>>18,w[y++]=128|T>>12&63,w[y++]=128|T>>6&63,w[y++]=128|T&63}}return w[y]=0,y-R},Gx=(g,w,y)=>Bx(g,_,w,y),Ux=(g)=>{var w=0;for(var y=0;y<g.length;++y){var E=g.charCodeAt(y);if(E<=127)w++;else if(E<=2047)w+=2;else if(E>=55296&&E<=57343)w+=4,++y;else w+=3}return w},Ng=(g,w,y)=>{var E=w+y,R="";while(!(w>=E)){var P=g[w++];if(!P)return R;if(!(P&128)){R+=String.fromCharCode(P);continue}var G=g[w++]&63;if((P&224)==192){R+=String.fromCharCode((P&31)<<6|G);continue}var T=g[w++]&63;if((P&240)==224)P=(P&15)<<12|G<<6|T;else P=(P&7)<<18|G<<12|T<<6|g[w++]&63;if(P<65536)R+=String.fromCharCode(P);else{var U=P-65536;R+=String.fromCharCode(55296|U>>10,56320|U&1023)}}return R},Wx=(g,w)=>g?Ng(_,g,w):"",Kx=(g,w)=>{w=De(w);var y=w==="std::string";Cn(g,{name:w,fromWireType(E){var R=et[E>>2],P=E+4,G;if(y){var T=P;for(var U=0;U<=R;++U){var Q=P+U;if(U==R||_[Q]==0){var pt=Q-T,At=Wx(T,pt);if(G===void 0)G=At;else G+=String.fromCharCode(0),G+=At;T=Q+1}}}else{var ee=Array(R);for(var U=0;U<R;++U)ee[U]=String.fromCharCode(_[P+U]);G=ee.join("")}return Fn(E),G},toWireType(E,R){if(R instanceof ArrayBuffer)R=new Uint8Array(R);var P,G=typeof R=="string";if(!(G||R instanceof Uint8Array||R instanceof Uint8ClampedArray||R instanceof Int8Array))we("Cannot pass non-string to std::string");if(y&&G)P=Ux(R);else P=R.length;var T=kd(4+P+1),U=T+4;if(et[T>>2]=P,y&&G)Gx(R,U,P+1);else if(G)for(var Q=0;Q<P;++Q){var pt=R.charCodeAt(Q);if(pt>255)Fn(U),we("String has UTF-16 code units that do not fit in 8 bits");_[U+Q]=pt}else for(var Q=0;Q<P;++Q)_[U+Q]=R[Q];if(E!==null)E.push(Fn,T);return T},argPackAdvance:ci,readValueFromPointer:gd,destructorFunction(E){Fn(E)}})},zx=(g,w)=>{var y="";for(var E=0;!(E>=w/2);++E){var R=X[g+E*2>>1];if(R==0)break;y+=String.fromCharCode(R)}return y},Dx=(g,w,y)=>{if(y??=2147483647,y<2)return 0;y-=2;var E=w,R=y<g.length*2?y/2:g.length;for(var P=0;P<R;++P){var G=g.charCodeAt(P);X[w>>1]=G,w+=2}return X[w>>1]=0,w-E},qx=(g)=>g.length*2,Yx=(g,w)=>{var y=0,E="";while(!(y>=w/4)){var R=xt[g+y*4>>2];if(R==0)break;if(++y,R>=65536){var P=R-65536;E+=String.fromCharCode(55296|P>>10,56320|P&1023)}else E+=String.fromCharCode(R)}return E},Jx=(g,w,y)=>{if(y??=2147483647,y<4)return 0;var E=w,R=E+y-4;for(var P=0;P<g.length;++P){var G=g.charCodeAt(P);if(G>=55296&&G<=57343){var T=g.charCodeAt(++P);G=65536+((G&1023)<<10)|T&1023}if(xt[w>>2]=G,w+=4,w+4>R)break}return xt[w>>2]=0,w-E},Vx=(g)=>{var w=0;for(var y=0;y<g.length;++y){var E=g.charCodeAt(y);if(E>=55296&&E<=57343)++y;w+=4}return w},Zx=(g,w,y)=>{y=De(y);var E,R,P,G;if(w===2)E=zx,R=Dx,G=qx,P=(T)=>z[T>>1];else if(w===4)E=Yx,R=Jx,G=Vx,P=(T)=>et[T>>2];Cn(g,{name:y,fromWireType:(T)=>{var U=et[T>>2],Q,pt=T+4;for(var At=0;At<=U;++At){var ee=T+4+At*w;if(At==U||P(ee)==0){var Ce=ee-pt,lo=E(pt,Ce);if(Q===void 0)Q=lo;else Q+=String.fromCharCode(0),Q+=lo;pt=ee+w}}return Fn(T),Q},toWireType:(T,U)=>{if(typeof U!="string")we(`Cannot pass non-string to C++ string type ${y}`);var Q=G(U),pt=kd(4+Q+w);if(et[pt>>2]=Q/w,R(U,pt+4,Q+w),T!==null)T.push(Fn,pt);return pt},argPackAdvance:ci,readValueFromPointer:gd,destructorFunction(T){Fn(T)}})},Qx=(g,w)=>{w=De(w),Cn(g,{isVoid:!0,name:w,argPackAdvance:0,fromWireType:()=>{return},toWireType:(y,E)=>{return}})},Xx=(g,w,y)=>_.copyWithin(g,w,w+y),wd=[],t2=(g,w,y,E)=>{return g=wd[g],w=ui.toValue(w),g(null,w,y,E)},e2={},n2=(g)=>{var w=e2[g];if(w===void 0)return De(g);return w},Ag=()=>{if(typeof globalThis=="object")return globalThis;function g(w){w.$$$embind_global$$$=w;var y=typeof $$$embind_global$$$=="object"&&w.$$$embind_global$$$==w;if(!y)delete w.$$$embind_global$$$;return y}if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;if(typeof global=="object"&&g(global))$$$embind_global$$$=global;else if(typeof self=="object"&&g(self))$$$embind_global$$$=self;if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;throw Error("unable to get global object.")},r2=(g)=>{if(g===0)return ui.toHandle(Ag());else return g=n2(g),ui.toHandle(Ag()[g])},i2=(g)=>{var w=wd.length;return wd.push(g),w},o2=(g,w)=>{var y=ai[g];if(y===void 0)we(`${w} has unknown type ${Pg(g)}`);return y},s2=(g,w)=>{var y=Array(g);for(var E=0;E<g;++E)y[E]=o2(et[w+E*4>>2],"parameter "+E);return y},a2=Reflect.construct,c2=(g,w,y)=>{var E=[],R=g.toWireType(E,y);if(E.length)et[w>>2]=ui.toHandle(E);return R},u2=(g,w,y)=>{var E=s2(g,w),R=E.shift();g--;var P=Array(g),G=(U,Q,pt,At)=>{var ee=0;for(var Ce=0;Ce<g;++Ce)P[Ce]=E[Ce].readValueFromPointer(At+ee),ee+=E[Ce].argPackAdvance;var lo=y===1?a2(Q,P):Q.apply(U,P);return c2(R,pt,lo)},T=`methodCaller<(${E.map((U)=>U.name).join(", ")}) => ${R.name}>`;return i2(bd(T,G))},l2=(g)=>{if(g>9)Ln[g+1]+=1},d2=(g)=>{var w=ui.toValue(g);xg(w),pd(g)},f2=()=>{gg("")},h2=()=>2147483648,m2=(g)=>{var w=H.buffer,y=(g-w.byteLength+65535)/65536;try{return H.grow(y),fn(),1}catch(E){}},p2=(g)=>{var w=_.length;g>>>=0;var y=h2();if(g>y)return!1;var E=(U,Q)=>U+(Q-U%Q)%Q;for(var R=1;R<=4;R*=2){var P=w*(1+0.2/R);P=Math.min(P,g+100663296);var G=Math.min(y,E(Math.max(g,P),65536)),T=m2(G);if(T)return!0}return!1},$d={},g2=()=>d||"./this.program",Hs=()=>{if(!Hs.strings){var g=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",w={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:g,_:g2()};for(var y in $d)if($d[y]===void 0)delete w[y];else w[y]=$d[y];var E=[];for(var y in w)E.push(`${y}=${w[y]}`);Hs.strings=E}return Hs.strings},b2=(g,w)=>{for(var y=0;y<g.length;++y)W[w++]=g.charCodeAt(y);W[w]=0},w2=(g,w)=>{var y=0;return Hs().forEach((E,R)=>{var P=w+y;et[g+R*4>>2]=P,b2(E,P),y+=E.length+1}),0},$2=(g,w)=>{var y=Hs();et[g>>2]=y.length;var E=0;return y.forEach((R)=>E+=R.length+1),et[w>>2]=E,0},k2=0,y2=()=>ux||k2>0,v2=(g)=>{if(j=g,!y2())n.onExit?.(g),N=!0;f(g,new cx(g))},S2=(g,w)=>{j=g,v2(g)},E2=S2,M2=(g)=>52,x2=(g,w)=>w+2097152>>>0<4194305-!!g?(g>>>0)+w*4294967296:NaN;function O2(g,w,y,E,R){var P=x2(w,y);return 70}var I2=[null,[],[]],R2=(g,w)=>{var y=I2[g];if(w===0||w===10)(g===1?M:I)(Ng(y,0)),y.length=0;else y.push(w)},P2=(g,w,y,E)=>{var R=0;for(var P=0;P<y;P++){var G=et[w>>2],T=et[w+4>>2];w+=8;for(var U=0;U<T;U++)R2(g,_[G+U]);R+=T}return et[E>>2]=R,0};hx(),Sg=n.BindingError=class extends Error{constructor(w){super(w);this.name="BindingError"}},Eg=n.InternalError=class extends Error{constructor(w){super(w);this.name="InternalError"}},wx(),Rg=n.UnboundTypeError=Tx(Error,"UnboundTypeError");var N2={o:dx,q:fx,m:gx,l:kx,j:vx,f:Lx,b:jx,a:_x,e:Kx,c:Zx,n:Qx,v:Xx,i:t2,d:pd,k:r2,h:u2,y:l2,g:d2,r:f2,s:p2,t:w2,u:$2,z:E2,w:M2,p:O2,x:P2},te=ax(),A2=()=>(A2=te.B)(),Tg=(g)=>(Tg=te.C)(g),kd=(g)=>(kd=te.D)(g),Fn=(g)=>(Fn=te.E)(g),T2=(g)=>(T2=te._emscripten_stack_restore)(g),H2=(g)=>(H2=te._emscripten_stack_alloc)(g),C2=()=>(C2=te.emscripten_stack_get_current)(),L2=(g)=>(L2=te.__cxa_increment_exception_refcount)(g),Hg=(g)=>(Hg=te.G)(g),F2=n.dynCall_jiji=(g,w,y,E,R)=>(F2=n.dynCall_jiji=te.H)(g,w,y,E,R),wc;Ts=function g(){if(!wc)Cg();if(!wc)Ts=g};function Cg(){if(oi>0)return;if(ld(),oi>0)return;function g(){if(wc)return;if(wc=!0,n.calledRun=!0,N)return;if(dd(),r(n),n.onRuntimeInitialized)n.onRuntimeInitialized();QM()}if(n.setStatus)n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),g()},1);else g()}if(n.preInit){if(typeof n.preInit=="function")n.preInit=[n.preInit];while(n.preInit.length>0)n.preInit.pop()()}return Cg(),o}})(),Zb=PI;function Yd(t){if(t[0]!==255||t[1]!==216)return null;let e=2;while(e+9<t.length){if(t[e]!==255){e++;continue}let n=t[e+1];if(n===255){e++;continue}let r=t[e+2]<<8|t[e+3];if(n>=192&&n<=207&&n!==196&&n!==200&&n!==204)return{height:t[e+5]<<8|t[e+6],width:t[e+7]<<8|t[e+8]};e+=2+r}return null}var qd;function AI(){if(qd)return qd;let t=new WebAssembly.Module(NI(Buffer.from("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","base64"))),e={noInitialRun:!0,print:()=>{return},printErr:()=>{return},instantiateWasm:(n,r)=>{let i=new WebAssembly.Instance(t,n);return r(i),i.exports}};if(Zb(e),typeof e.decode!=="function")throw Error("the JPEG decoder did not start");return qd=e,e}function Qb(t,e){let n=Yd(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);let r=null;try{r=AI().decode(t,!0)}catch{r=null}if(!r)throw Error("not a JPEG image this decoder can read");return{width:r.width,height:r.height,data:new Uint8Array(r.data.buffer,r.data.byteOffset,r.data.length)}}var vo=[137,80,78,71,13,10,26,10],ew=13,nw=3;function hi(t){return t.length>=vo.length&&vo.every((e,n)=>t[n]===e)}var rw={0:1,2:3,4:2,6:4};function LI(t){if(t.length<33||!hi(t))return;let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength),n=e.readUInt32BE(16),r=e.readUInt32BE(20),i=e[25];if(e[24]!==8||e[28]!==0||rw[i]===void 0)return;let o=[];for(let s=8;s+12<=e.length;){let a=e.readUInt32BE(s),c=e.toString("latin1",s+4,s+8);if(c==="IDAT")o.push(e.subarray(s+8,s+8+a));else if(c==="tRNS"||c==="IEND"){if(c==="tRNS"&&i!==4&&i!==6)return;break}s+=12+a}return o.length>0?{width:n,height:r,type:i,idat:o}:void 0}function FI(t,e,n,r){let i=new Uint8Array(e);for(let o=0;o<n;o++){let s=o*(e+1),a=t[s],c=s+1,u=o>0?t:i,l=o>0?c-e-1:0;if(a===1)for(let d=r;d<e;d++)t[c+d]=t[c+d]+t[c+d-r];else if(a===2)for(let d=0;d<e;d++)t[c+d]=t[c+d]+u[l+d];else if(a===3){for(let d=0;d<r;d++)t[c+d]=t[c+d]+(u[l+d]>>1);for(let d=r;d<e;d++)t[c+d]=t[c+d]+(t[c+d-r]+u[l+d]>>1)}else if(a===4){for(let d=0;d<r;d++)t[c+d]=t[c+d]+u[l+d];for(let d=r;d<e;d++){let f=t[c+d-r],h=u[l+d],m=u[l+d-r],p=Math.abs(h-m),b=Math.abs(f-m),$=Math.abs(f+h-2*m);t[c+d]=t[c+d]+(p<=b&&p<=$?f:b<=$?h:m)}}else if(a!==0)throw Error(`bad PNG filter ${a}`)}}function jI(t){let{width:e,height:n,type:r}=t,i=rw[r],o=e*i,s=CI(Buffer.concat(t.idat),{chunkSize:Math.min(268435456,Math.max(65536,n*(o+1)))});if(s.length<n*(o+1))throw Error("truncated PNG");FI(s,o,n,i);let a=new Uint8Array(e*n*4);for(let c=0;c<n;c++){let u=c*(o+1)+1,l=c*e*4;if(r===6)a.set(s.subarray(u,u+o),l);else if(r===2)for(let d=0,f=u,h=l;d<e;d++,f+=3,h+=4)a[h]=s[f],a[h+1]=s[f+1],a[h+2]=s[f+2],a[h+3]=255;else if(r===0)for(let d=0,f=l;d<e;d++,f+=4){let h=s[u+d];a[f]=h,a[f+1]=h,a[f+2]=h,a[f+3]=255}else for(let d=0,f=u,h=l;d<e;d++,f+=2,h+=4){let m=s[f];a[h]=m,a[h+1]=m,a[h+2]=m,a[h+3]=s[f+1]}}return{width:e,height:n,data:a}}function _t(t){let e=LI(t);if(e)return jI(e);let n=tw.PNG.sync.read(Buffer.from(t));return{width:n.width,height:n.height,data:new Uint8Array(n.data)}}function br(t,e){if(hi(t)){let n=wn(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);return _t(t)}if(t[0]===255&&t[1]===216)return Qb(t,e);throw Error("not a PNG or JPEG image")}function iw(t,e){let{width:n,height:r,at:i}=e,o=Math.max(0,i.x),s=Math.max(0,i.y),a=Math.min(n,i.x+i.w),c=Math.min(r,i.y+i.h);if(a<=o||c<=s)return;let u={x:o,y:s,w:a-o,h:c-s};if(i.w===t.width&&i.h===t.height)return{part:t,box:u,dx:o-i.x,dy:s-i.y};let l={x:(o-i.x)*t.width/i.w,y:(s-i.y)*t.height/i.h,w:u.w*t.width/i.w,h:u.h*t.height/i.h};return{part:js(t,l,u.w,u.h),box:u,dx:0,dy:0}}function ow(t,e){let n=new Uint8Array(e.width*e.height*4),r=iw(t,e);if(r){let{part:i,box:o,dx:s,dy:a}=r;for(let c=0;c<o.h;c++){let u=((c+a)*i.width+s)*4;n.set(i.data.subarray(u,u+o.w*4),((o.y+c)*e.width+o.x)*4)}}return{width:e.width,height:e.height,data:n}}function wr(t,e,n,r={width:t.width,height:t.height,at:{x:0,y:0,w:t.width,h:t.height}}){let i=nt(e),{width:o,height:s}=r,a=new Uint8Array(o*s*3);for(let h=0;h<o*3;h+=3)a.set(i,h);for(let h=1;h<s;h++)a.copyWithin(h*o*3,0,o*3);let c=iw(t,r);if(!c)return{width:o,height:s,data:a};let{part:u,box:l,dx:d,dy:f}=c;for(let h=0;h<l.h;h++)for(let m=0;m<l.w;m++){let p=((h+f)*u.width+m+d)*4,b=((l.y+h)*o+l.x+m)*3,$=u.data[p+3]/255*n;for(let k=0;k<3;k++)a[b+k]=Math.round(i[k]*(1-$)+u.data[p+k]*$)}return{width:o,height:s,data:a}}function Xb(t,e){for(let n=0;n+e.length<=t.length;n++){let r=!0;for(let i=0;i<e.length&&r;i++)r=t[n+i]===e.charCodeAt(i);if(r)return n}return-1}function wn(t){if(t.length<33||!hi(t))return null;let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=e.getUint32(16),r=e.getUint32(20);if(t[25]===4||t[25]===6)return{width:n,height:r,alpha:!0};let i=Xb(t,"IDAT");return{width:n,height:r,alpha:Xb(i===-1?t:t.subarray(0,i),"tRNS")!==-1}}function sw(t,e=ew){let{width:n,height:r,data:i}=t,o=(l)=>{for(let d=l*n*4+3,f=d+n*4;d<f;d+=4)if(i[d]>=e)return!0;return!1},s=0;while(s<r&&!o(s))s++;if(s===r)return null;let a=r-1;while(!o(a))a--;let c=n,u=-1;for(let l=s;l<=a;l++){let d=l*n*4+3;for(let f=0;f<c;f++)if(i[d+f*4]>=e){c=f;break}for(let f=n-1;f>u;f--)if(i[d+f*4]>=e){u=f;break}}return{x:c,y:s,w:u-c+1,h:a-s+1}}function Wn(t,e={x:0,y:0,w:t.width,h:t.height}){let n=0;for(let r=e.y;r<e.y+e.h;r++)for(let i=e.x;i<e.x+e.w;i++)if((t.data[(r*t.width+i)*4+3]??0)<ew)n++;return Math.round(n*100/(e.w*e.h))}function aw(t,e,n){let r=Math.min(e/t.width,n/t.height),i=Math.max(1,Math.round(t.width*r)),o=Math.max(1,Math.round(t.height*r)),s=js(t,{x:0,y:0,w:t.width,h:t.height},i,o),a=new Uint8Array(e*n*4),c=Math.floor((e-i)/2),u=Math.floor((n-o)/2);for(let l=0;l<o;l++)a.set(s.data.subarray(l*i*4,(l+1)*i*4),((u+l)*e+c)*4);return{width:e,height:n,data:a}}function _I(t){let e=Math.abs(t);if(e<1)return(7*e*e*e-12*e*e+5.333333333333333)/6;if(e<2)return(-2.3333333333333335*e*e*e+12*e*e-20*e+10.666666666666666)/6;return 0}function Jd(t,e,n,r){if(n===r&&Number.isInteger(e)&&e>=0&&e+r<=t)return{first:Int32Array.from({length:r},(l,d)=>e+d),size:1,weights:new Float32Array(r).fill(1)};let i=n/r,o=Math.max(1,i),s=2*o,a=Math.min(t,Math.ceil(2*s)+2),c=new Int32Array(r),u=new Float32Array(r*a);for(let l=0;l<r;l++){let d=e+(l+0.5)*i,f=Math.floor(d-s-0.5),h=Math.max(0,Math.min(t-a,f));c[l]=h;let m=0;for(let p=f;p<=Math.ceil(d+s-0.5);p++){let b=_I((p+0.5-d)/o),$=l*a+Math.min(t-1,Math.max(0,p))-h;u[$]=(u[$]??0)+b,m+=b}for(let p=l*a;p<(l+1)*a;p++)u[p]=(u[p]??0)/m}return{first:c,size:a,weights:u}}function cw(t,e,n,r,i,o,s){let a=Jd(t,e.y,e.h,r),c=n*i,u=a.size+1,l=Array.from({length:u},()=>new Float32Array(c)),d=new Int32Array(u).fill(-1),f=new Float32Array(c),h=[],m=[];for(let p=0;p<r;p++){h.length=0,m.length=0;let b=a.first[p];for(let k=0;k<a.size;k++){let v=a.weights[p*a.size+k];if(v===0)continue;let S=b+k,M=S%u,I=l[M];if(d[M]!==S)o(S,I),d[M]=S;h.push(I),m.push(v)}let $=0;while($<h.length){let k=h[$],v=m[$];if(h.length-$>=4){let S=h[$+1],M=h[$+2],I=h[$+3],x=m[$+1],H=m[$+2],N=m[$+3];if($===0)for(let j=0;j<c;j++)f[j]=k[j]*v+S[j]*x+M[j]*H+I[j]*N;else for(let j=0;j<c;j++)f[j]=f[j]+(k[j]*v+S[j]*x+M[j]*H+I[j]*N);$+=4}else{if($===0)for(let S=0;S<c;S++)f[S]=k[S]*v;else for(let S=0;S<c;S++)f[S]=f[S]+k[S]*v;$+=1}}if(h.length===0)f.fill(0);s(p,f)}}function uw(t,e,n,r,i){let o=0,s=n;while(o<s){let c=o+s>>1;if(t[c]+e-1<r)o=c+1;else s=c}let a=o;s=n;while(o<s){let c=o+s>>1;if(t[c]<=i)o=c+1;else s=c}return[a,o]}function js(t,e,n,r){let i=Jd(t.width,e.x,e.w,n),o=t.data,s=t.width,a=new Float32Array(s*4),c=new Uint8Array(n*r*4);return cw(t.height,e,n,r,4,(u,l)=>{let d=u*s*4,f=s,h=-1;for(let b=0,$=0;b<s*4;b+=4,$++){let k=o[d+b+3];if(k===0){a[b]=0,a[b+1]=0,a[b+2]=0,a[b+3]=0;continue}if($<f)f=$;h=$,a[b]=o[d+b]*k,a[b+1]=o[d+b+1]*k,a[b+2]=o[d+b+2]*k,a[b+3]=k}if(l.fill(0),h<0)return;let[m,p]=uw(i.first,i.size,n,f,h);for(let b=m;b<p;b++){let $=i.first[b]*4,k=b*i.size,v=0,S=0,M=0,I=0;for(let x=0;x<i.size;x++){let H=i.weights[k+x],N=$+x*4;v+=a[N]*H,S+=a[N+1]*H,M+=a[N+2]*H,I+=a[N+3]*H}l[b*4]=v,l[b*4+1]=S,l[b*4+2]=M,l[b*4+3]=I}},(u,l)=>{let d=u*n*4;for(let f=0;f<n;f++){let h=f*4,m=l[h+3];if(m<=0)continue;let p=l[h]/m;c[d+h]=(p<0?0:p>255?255:p)+0.5,p=l[h+1]/m,c[d+h+1]=(p<0?0:p>255?255:p)+0.5,p=l[h+2]/m,c[d+h+2]=(p<0?0:p>255?255:p)+0.5,c[d+h+3]=(m>255?255:m)+0.5}}),{width:n,height:r,data:c}}function lw(t,e,n,r){let i=Jd(t.width,e.x,e.w,n),o=t.data,s=t.width,a=new Float32Array(n*r);return cw(t.height,e,n,r,1,(c,u)=>{let l=c*s,d=s,f=-1;for(let p=0;p<s;p++)if(o[l+p]!==0){if(p<d)d=p;f=p}if(u.fill(0),f<0)return;let[h,m]=uw(i.first,i.size,n,d,f);for(let p=h;p<m;p++){let b=l+i.first[p],$=p*i.size,k=0;for(let v=0;v<i.size;v++)k+=o[b+v]*i.weights[$+v];u[p]=k}},(c,u)=>{a.set(u,c*n)}),{width:n,height:r,data:a}}function _s(t,e){if(e<=0)return t;let n=Math.max(1,Math.ceil(e*3)),r=Array.from({length:2*n+1},(l,d)=>Math.exp(-((d-n)**2)/(2*e*e))),i=r.reduce((l,d)=>l+d,0),{width:o,height:s,data:a}=t,c=new Float32Array(o*s);for(let l=0;l<s;l++){let d=l*o;for(let f=0;f<o;f++){let h=0;for(let m=-n;m<=n;m++)h+=(a[d+Math.min(o-1,Math.max(0,f+m))]??0)*(r[m+n]??0);c[d+f]=h/i}}let u=new Float32Array(o*s);for(let l=0;l<s;l++){let d=l*o;for(let f=-n;f<=n;f++){let h=(r[f+n]??0)/i,m=Math.min(s-1,Math.max(0,l+f))*o;for(let p=0;p<o;p++)u[d+p]=(u[d+p]??0)+(c[m+p]??0)*h}}return{width:o,height:s,data:u}}function Bs(t){let e=new Uint8Array(t.data.length);for(let n=0;n<e.length;n++){let r=t.data[n];e[n]=(r<0?0:r>255?255:r)+0.5}return{width:t.width,height:t.height,data:e}}function mi(t){let e=new Uint8Array(t.width*t.height);for(let n=0;n<e.length;n++)e[n]=t.data[n*4+3]??0;return{width:t.width,height:t.height,data:e}}var BI=Array.from({length:256},(t,e)=>{let n=e;for(let r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;return n>>>0});function GI(t){let e=4294967295;for(let n of t)e=(BI[(e^n)&255]??0)^e>>>8;return(e^4294967295)>>>0}function gr(t,e){let n=Buffer.alloc(12+e.length);return n.writeUInt32BE(e.length,0),n.write(t,4,"latin1"),n.set(e,8),n.writeUInt32BE(GI(n.subarray(4,8+e.length)),8+e.length),n}function dw(t,e,n){let r=new Uint8Array(n*(e+1));r.set(t.subarray(0,e),1);for(let i=1;i<n;i++){let o=i*(e+1),s=i*e,a=s-e;r[o]=2;for(let c=0;c<e;c++)r[o+1+c]=t[s+c]-t[a+c]}return r}function fw(t){return HI(t,{level:1,strategy:TI.Z_RLE})}function hw(t,e,n){let r=Buffer.alloc(13);return r.writeUInt32BE(t.width,0),r.writeUInt32BE(t.height,4),r[8]=8,r[9]=e,Buffer.concat([Buffer.from(vo),gr("IHDR",r),...n,gr("IDAT",fw(dw(t.data,t.width,t.height))),gr("IEND",new Uint8Array)])}function mw(t){let[e,n,r]=nt(t),i=new Uint8Array(768);for(let o=0;o<256;o++)i.set([e,n,r],o*3);return gr("PLTE",i)}function pw(t,e,n,r,i){let o=Buffer.alloc(13);return o.writeUInt32BE(t,0),o.writeUInt32BE(e,4),o[8]=8,o[9]=n,Buffer.concat([Buffer.from(vo),gr("IHDR",o),gr("IDAT",fw(dw(i,t*r,e))),gr("IEND",new Uint8Array)])}function $r(t){return pw(t.width,t.height,2,3,t.data)}function Fe(t){return pw(t.width,t.height,6,4,t.data)}function pi(t,e){return hw(t,nw,[mw(e),gr("tRNS",Uint8Array.from({length:256},(n,r)=>r))])}function Vd(t){return hw(t,0,[])}function Mc(t,e){if(!hi(t)||t[25]!==nw)return;let n=Buffer.from(t.buffer,t.byteOffset,t.byteLength),r=[Buffer.from(vo)],i=vo.length;while(i+8<=n.length){let o=i+12+n.readUInt32BE(i);r.push(n.toString("latin1",i+4,i+8)==="PLTE"?mw(e):n.subarray(i,o)),i=o}return Buffer.concat(r)}var kr=100,Se=25000000,YI=536870912,So=["safe","questionable","explicit"],gi=["nudity","underwear"],tf=["comic","monochrome","sketch","chibi"],Ew=["off","5","10","25","50","100"],Mw=["off","720","1080","1440","1800","2560"],xw={nudity:new Set(["nude","naked","topless","bottomless","nipples","naked_towel","undressing"]),underwear:new Set(["underwear","panties","pantsu","bra","lingerie","pantyshot"])},JI={comic:new Set(["comic","4koma"]),monochrome:new Set(["monochrome","greyscale"]),sketch:new Set(["sketch","lineart","line_art"]),chibi:new Set(["chibi"])},VI=/^(?:rating|score|width|height|filetype|dimension):/,Gs={safe:"s",questionable:"q",explicit:"e"},Ow=8191,ZI=20000,QI=5000,gw=3000,bw=8,XI=8,tR=8000,eR=3000,Iw=60000,ww=3,nR=3,rR="https://static.zerochan.net",Rw="https://s1.zerochan.net",ef=`ttheme/${lt.version} (+${lt.homepage})`,iR=["orig","tile","thumb","cut"],Pw=new Map,oR=vR(process.env.TTHEME_FIND_HOSTS),sR=yR(process.env.TTHEME_FIND_CUTOUTS);zI(eR);var aR=["artist","character","copyright"];function $w(t){try{return UI(t)}catch{return[]}}function Eo(t){return t.startsWith("//")?`https:${t}`:t}function vr(t){return(/\.([a-z0-9]+)(?:\?.*)?$/i.exec(t)?.[1]??"").toLowerCase()}function Ws(t){let e=t.trim();if(!e)return[];let n=JSON.parse(e);if(Array.isArray(n))return n;let r=n.posts;return Array.isArray(r)?r:[]}function cR(t){let e=t.trim(),r=(e?JSON.parse(e):{}).tags??{};return new Map(Object.entries(r).map(([i,o])=>[i,String(o)]))}function Qd(t,e,n){let r=Eo(String(t??""));return{file:r,width:Number(e)||0,height:Number(n)||0,ext:vr(r)}}function Kn(t){return String(t??"").split(/\s+/).filter(Boolean)}function Xd(t){let e=typeof t==="number"?new Date(t*1000):typeof t==="string"?new Date(t):void 0;return e&&!Number.isNaN(e.getTime())?e.toISOString().slice(0,10):void 0}function Nw(t,e){let n=Eo(String(e.preview??""));if(!e.file||!n||!Number(t.id))return[];let r=Number(t.width??t.image_width)||0,i=Number(t.height??t.image_height)||0;return[{id:Number(t.id),width:r,height:i,file:e.file,preview:n,ext:e.ext,owner:String(e.owner??""),score:Number(t.score)||0,rating:String(t.rating??""),md5:String(e.md5??""),source:String(t.source??""),tags:Kn(e.tags),named:e.named,...Xd(t.created_at)?{posted:Xd(t.created_at)}:{},solo:e.solo,family:Number(t.parent_id)||(t.has_children===!0?Number(t.id):0),smaller:e.versions.filter((o)=>o.file&&o.width>0&&o.height>0&&o.width*o.height<r*i)}]}function uR(t){let e=cR(t);return Ws(t).flatMap((n)=>{let r=Eo(String(n.file_url??"")),i=String(n.tags??""),o=(s)=>Kn(i).filter((a)=>e.get(a)===s);return Nw(n,{preview:n.preview_url,file:r,ext:String(n.file_ext||vr(r)).toLowerCase(),owner:n.author,md5:n.md5,tags:i,named:{artist:o("artist"),character:o("character"),copyright:o("copyright")},solo:void 0,versions:[Qd(n.jpeg_url,n.jpeg_width,n.jpeg_height),Qd(n.sample_url,n.sample_width,n.sample_height)]})})}function lR(t){return Ws(t).flatMap((e)=>{let n=Eo(String(e.file_url??"")),r=String(e.tag_string??""),i=e.media_asset??{};return Nw(e,{preview:i.variants?.find((o)=>o.type==="360x360")?.url??e.preview_file_url,file:n,ext:String(e.file_ext||vr(n)).toLowerCase(),owner:"",md5:e.md5,tags:r,named:{artist:Kn(e.tag_string_artist),character:Kn(e.tag_string_character),copyright:Kn(e.tag_string_copyright)},solo:r.split(/\s+/).includes("solo"),versions:(i.variants??[]).map((o)=>Qd(o.url,o.width,o.height)).filter((o)=>o.ext==="jpg"||o.ext==="png").sort((o,s)=>s.width*s.height-o.width*o.height)})})}function Aw(t){return t.toLowerCase().replace(/\s+/g,"_")}function dR(t){return(Array.isArray(t)?t:[]).map((e)=>Aw(String(e)))}function fR(t){return String(t??"").replace(/[^0-9a-z]+/gi,".").replace(/^\.+|\.+$/g,"")||"zerochan"}function hR(t){let e=t.trim(),n=e?JSON.parse(e):{};return(Array.isArray(n.items)?n.items:n.id?[n]:[]).flatMap((i)=>{let o=Number(i.id);if(!o)return[];let s=dR(i.tags),a=Eo(String(i.full??""));return[{id:o,width:Number(i.width)||0,height:Number(i.height)||0,file:a,ext:vr(a),preview:`${Rw}/${fR(i.tag??i.primary)}.600.${o}.jpg`,owner:"",score:0,rating:s.some((c)=>xw.nudity.has(c))?"q":"g",md5:String(i.md5??i.hash??""),source:String(i.source??""),tags:s,named:{artist:[],character:[],copyright:[]},solo:s.includes("solo"),family:0,smaller:[]}]})}var mR={mangaka:"artist",studio:"artist",character:"character",series:"copyright",game:"copyright"};function kw(t){return t.replace(/&(?:#(\d+)|amp|quot|apos|lt|gt);/g,(e,n)=>n?String.fromCharCode(Number(n)):{"&amp;":"&","&quot;":'"',"&apos;":"'","&lt;":"<","&gt;":">"}[e]??e)}function pR(t){let e={artist:[],character:[],copyright:[]};for(let[,r,i]of t.matchAll(/<li class="([a-z]+)[^"]*"[^>]*\bdata-tag="([^"]*)"/g)){let o=mR[r],s=Aw(kw(i));if(o&&!e[o].includes(s))e[o].push(s)}let n=Xd(/"datePublished":\s*"([^"]+)"/.exec(t)?.[1]);return{named:e,source:"",owner:kw(/\buploader = \{\s*name: '([^']*)'/.exec(t)?.[1]??""),...n?{posted:n}:{}}}function gR(t){return Number(/Zerochan has ([\d,]+) /.exec(t)?.[1]?.replace(/,/g,"")??0)}function bR(t){return Ws(t).flatMap((e)=>{let n=String(e.value??"");return n?[{value:n,count:Number(e.post_count)||0}]:[]})}function wR(t){return Ws(t).flatMap((e)=>{let n=String(e.name??"");return n?[{value:n,count:Number(e.count)||0}]:[]})}function $R(t){return Number(/count="(\d+)"/.exec(t)?.[1]??0)}function kR(t){let n=(t.trim()?JSON.parse(t):{}).counts?.posts;return n===null?Number.NaN:Number(n)||0}function yR(t){let e=new Map;for(let n of(t??"").split(/\s+/).filter(Boolean)){let r=n.indexOf("=");if(r>0)e.set(n.slice(0,r),n.slice(r+1).split(",").filter(Boolean))}return e}function vR(t){let e=new Map;for(let n of(t??"").split(/[\s,]+/).filter(Boolean)){let r=n.indexOf("="),i=n.slice(0,r);try{let o=new URL(n.slice(r+1));if(i&&o.protocol==="https:")e.set(i,o.origin)}catch{}}return e}function xc(t,e,n,r){let i=(t??"").split(/\s+/);if(r!==void 0&&i.includes(r))return[];let o=e.filter((s)=>i.includes(s));return o.length>0?o:[...n]}function bi(t){return xc(t,So,["safe"])}function Mo(t){return xc(t,gi,gi,"none")}function Oc(t){return xc(t,tf,[],"none")}function Ks(t){let e=V.map((n)=>n.name);return xc(t,e,e)}function nf(t,e,n){return{score:Number(t)||0,size:Number(e)||0,png:n==="on"}}function zs(t){return[...new Set((t??"").toLowerCase().split(/[\s,]+/).map((e)=>e.replace(/^-+/,"")).filter(Boolean))]}function rf(t,e,n){return{safe:new Set(t),questionable:new Set(e),explicit:new Set(n)}}function of(t){let e=oR.get(t.key),n=sR.get(t.key);return{...t,origin:e??t.origin,moved:e!==void 0&&e!==t.origin,cutouts:n??t.cutouts,vouched:t.vouched&&n===void 0}}function Tw(t){return t.length<2?t.join(""):t.map((e)=>`~${e}`).join(" ")}function Hw(t){return t>0?[`width:>=${t}`,`height:>=${t}`]:[]}function yw(t){let e=of(t),n=(r)=>new URLSearchParams({api_version:"2",include_tags:"1",...r});return{...e,scored:!0,narrow:({score:r,size:i})=>[...r>0?[`score:>=${r}`]:[],...Hw(i)],cutouts:Tw(e.cutouts),ratings:rf([Gs.safe],[Gs.questionable],[Gs.explicit]),rate:(r)=>{let[i]=r;if(r.length===1&&i)return`rating:${Gs[i]}`;let o=So.filter((a)=>!r.includes(a)),[s]=o;return o.length===1&&s?`-rating:${Gs[s]}`:""},best:"order:score",tagBudget:Number.POSITIVE_INFINITY,ors:!0,postsUrl:(r,i)=>`${e.origin}/post.json?${n({limit:String(kr),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/post.xml?${new URLSearchParams({limit:"1",tags:r})}`,postUrl:(r)=>`${e.origin}/post.json?${n({tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/post/show/${r}`,parse:uR,count:$R,uploadedBy:(r)=>`user:${r}`}}function SR(t){let e=of(t),n=rf(["g"],["s","q"],["e"]);return{...e,scored:!0,narrow:({score:r,size:i,png:o})=>[...r>0?[`score:>=${r}`]:[],...Hw(i),...o?["filetype:png"]:[]],cutouts:Tw(e.cutouts),ratings:n,rate:(r)=>r.length===So.length?"":`rating:${r.flatMap((i)=>[...n[i]]).join(",")}`,best:"order:score",tagBudget:2,ors:!0,postsUrl:(r,i)=>`${e.origin}/posts.json?${new URLSearchParams({limit:String(kr),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/counts/posts.json?${new URLSearchParams({tags:r})}`,postUrl:(r)=>`${e.origin}/posts.json?${new URLSearchParams({limit:"1",tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/posts/${r}`,parse:lR,count:kR,uploadedBy:(r)=>`user:${r}`}}function Zd(t){return t.split(/\s+/).filter((e)=>e&&!/^(?:order|dimension):/.test(e)).map((e)=>e.split("_").map(encodeURIComponent).join("+")).join(",")}function vw(t){let e=t.split(/\s+/),n=e.find((r)=>r.startsWith("dimension:"))?.slice(10);return{s:e.includes("order:fav")?"fav":"id",...n?{d:n}:{}}}function ER(t){let e=of(t);return{...e,scored:!1,narrow:({size:n})=>n>=1800?["dimension:huge"]:n>0?["dimension:large"]:[],cutouts:e.cutouts[0]??"",ratings:rf(["g"],["q"],["e"]),rate:()=>"",best:"order:fav",tagBudget:3,ors:!1,missing:404,postsUrl:(n,r)=>`${e.origin}/${Zd(n)}?${new URLSearchParams({json:"",l:String(kr),p:String(r+1),...vw(n)})}`,countUrl:(n)=>`${e.origin}/${Zd(n)}?${new URLSearchParams({xml:"",l:"1"})}`,postUrl:(n)=>`${e.origin}/${n}?json=`,pageUrl:(n)=>`${e.origin}/${n}`,parse:hR,count:gR,credits:pR,counts:(n)=>Zd(n).split(",").length===1&&!("d"in vw(n)),guesses:(n)=>(n.tags.includes("transparent_background")?["png","jpg"]:["jpg","png"]).map((r)=>n.preview.replace(Rw,rR).replace(/\.600\.(\d+)\.jpg$/,`.full.$1.${r}`))}}function MR(t){let e=Sw(`https://${t}`);return V.find((n)=>Sw(n.origin)===e)}function sf(t){return t.split(/\s+/).filter((e)=>e&&!VI.test(e)).length}function Ic(t,e){let n=t.trim();if(/^\d+$/.test(n))return{site:e,id:Number(n)};let r=/^([\w.]+):(\d+)$/.exec(n);if(r){let a=V.find((c)=>c.key===r[1]||c.name===r[1]);return a&&{site:a,id:Number(r[2])}}let i;try{i=new URL(n)}catch{return}let o=MR(i.host),s=Number(i.searchParams.get("id")??i.pathname.split("/").filter(Boolean).at(-1));return o&&s>0?{site:o,id:s}:void 0}var V=[SR({key:"danbooru",name:"danbooru",origin:"https://shima.donmai.us",cutouts:["transparent_background"],vouched:!1,ansi:2}),yw({key:"konachan",name:"konachan",origin:"https://konachan.net",cutouts:["transparent","vector"],vouched:!1,ansi:6}),yw({key:"yande",name:"yande.re",origin:"https://yande.re",cutouts:["transparent_png"],vouched:!0,ansi:5}),ER({key:"zerochan",name:"zerochan",origin:"https://www.zerochan.net",cutouts:["transparent_background"],vouched:!1,ansi:3})],ie=V.find((t)=>t.key==="danbooru"),Sr=134217728;function Ee(t,e){let n=V.indexOf(t);return(n===-1?V.length:n)*Sr+e}function Sw(t){let e;try{e=new URL(t).hostname}catch{return""}return e.split(".").slice(-2).join(".")}function wi(t,e,n=e){return e.mirror&&n===e?{site:ie,url:e.mirror.file}:{site:t,url:n.file}}function Rc(t,e){return e.mirror?{site:ie,url:e.mirror.preview}:{site:t,url:e.preview}}function Pc(t,e=gi){return t.tags.filter((n)=>e.some((r)=>xw[r].has(n)))}function Cw(t,e){return t.tags.filter((n)=>e.some((r)=>JI[r].has(n)))}function Nc(t,e,n=["safe"]){return n.some((r)=>t.ratings[r].has(e.rating))}function Lw(t,e){return t.rate(["safe"])===""?void 0:So.find((n)=>t.ratings[n].has(e.rating))}function $n(t){return[t,...t.smaller].find((e)=>e.width*e.height<=Se)}function Fw(t){let e=new Map;for(let[n,r]of[...t].sort(([i],[o])=>i<o?-1:1)){if(r==="")continue;e.set(r,[...e.get(r)??[],n])}return e}function Er(){return Us(process.env.XDG_CACHE_HOME??Us(DI(),".cache"),"ttheme")}function Ve(t){return Us(Er(),t.key)}function jw(t=YI,e=Er()){let n=[],r=0;for(let i of $w(e))for(let o of iR){let s=Us(e,i,o);for(let a of $w(s)){let c=Us(s,a);try{let{size:u,mtimeMs:l}=KI(c);n.push({path:c,size:u,at:l}),r+=u}catch{}}}n.sort((i,o)=>i.at-o.at);for(let i of n){if(r<=t)return;try{WI(i.path,{force:!0}),r-=i.size}catch{}}}function xR(t,e){if(t!==null&&/^\s*\d+\s*$/.test(t))return Number(t)*1000;let n=t===null?Number.NaN:Date.parse(t);return Number.isNaN(n)?Iw:Math.max(0,n-e)}function zn(t){return Pw.get(t.key)??0}function OR(t){for(let e=t;e instanceof Error;e=e.cause)if(e.code==="ECONNRESET")return!0;return!1}function IR(t){return(t.headers.get("server")??"").startsWith("cloudflare")&&t.headers.get("cf-mitigated")==="challenge"}function RR(t,e){let n=new URL(e,t);if(!n.search)n.search=new URL(t).search;return n.href}async function yr(t,e,n,r={},i=ZI){let o=e;for(let s=1,a=0;;s++){let c=zn(t)-Date.now();if(c>0)await qI(c,void 0,{signal:n});let u;try{u=await fetch(o,{headers:{"User-Agent":ef,Referer:`${t.origin}/`,...r},redirect:"manual",signal:i?AbortSignal.any([n,AbortSignal.timeout(i)]):n})}catch(d){if(s<ww&&!n.aborted&&OR(d))continue;throw d}let l=u.headers.get("location");if(l&&u.status>=300&&u.status<400&&a<nR){await u.body?.cancel(),o=RR(o,l),a++,s--;continue}if(u.status===429&&s<ww){await u.body?.cancel();let d=xR(u.headers.get("retry-after"),Date.now());if(d>Iw)throw Error(`${t.name} asks to wait ${Math.ceil(d/1000)}s`);Pw.set(t.key,Math.max(zn(t),Date.now()+d));continue}if(!u.ok)throw await u.body?.cancel(),Object.assign(Error(IR(u)?`${t.name} is behind a Cloudflare challenge`:`${t.name} answered ${u.status}`),{status:u.status});return u}}async function Ac(t,e,n){try{return await(await yr(t,e,n)).text()}catch(r){if(t.missing!==void 0&&r.status===t.missing)return"";throw r}}async function _w(t,e,n,r){return t.parse(await Ac(t,t.postsUrl(e,n),r))}async function af(t,e,n){return t.count(await Ac(t,t.countUrl(e),n))}async function xo(t,e,n){let[r]=t.parse(await Ac(t,t.postUrl(e),n));return r}async function Tc(t,e,n){return t.credits?.(await Ac(t,t.pageUrl(e),n))}var PR=/^https?:\/\/(?:i\.pximg\.net|i\d*\.pixiv\.net|img\d*\.pixiv\.net)\/\S*\/(\d+)(?:_p\d+)?(?:_\w+)?\.\w+(?:[?#]\S*)?$/i,NR=/^https?:\/\/(?:www\.)?pixiv\.net\/member_illust\.php\?\S*\billust_id=(\d+)/i;function Ds(t){let e=PR.exec(t)?.[1]??NR.exec(t)?.[1];return e?`https://www.pixiv.net/artworks/${e}`:t}function Hc(t,e){return t.credits!==void 0&&e.named.artist.length===0}function qs(t,e){for(let n of aR){let r=e.named?.[n]??[];if(t.named[n].length===0&&r.length>0)t.named[n]=r}if(t.source||=e.source??"",t.owner||=e.owner??"",!t.posted&&e.posted)t.posted=e.posted}function AR(t){let e=new URLSearchParams({limit:String(2*kr),only:"md5,tag_string,tag_string_artist,tag_string_character,tag_string_copyright,source,file_url",tags:`md5:${t.join(",")}`});return`${ie.origin}/posts.json?${e}`}function TR(t){return new Map(Ws(t).flatMap((e)=>{let n=String(e.md5??"");return n?[[n,{tags:Kn(e.tag_string),named:{artist:Kn(e.tag_string_artist),character:Kn(e.tag_string_character),copyright:Kn(e.tag_string_copyright)},source:String(e.source??""),file:Eo(String(e.file_url??""))}]]:[]}))}function Cc(t,e){for(let n of t){let r=e.get(n.md5);if(!r)continue;if(n.tags=[...new Set([...n.tags,...r.tags])],qs(n,r),n.solo=r.tags.includes("solo"),r.file.includes("/original/")){if(n.mirror={file:r.file,preview:r.file.replace("/original/","/360x360/").replace(/\.[a-z0-9]+$/i,".jpg")},!n.file)n.file=r.file,n.ext=vr(r.file)}}}async function Lc(t,e){let n=new Map;if(zn(ie)>Date.now())return n;for(let r=0;r<t.length;r+=kr){let i=await(await yr(ie,AR(t.slice(r,r+kr)),e,{},QI)).text();for(let[o,s]of TR(i))n.set(o,s)}return n}async function Ys(t,e,n){if(e.file||!t.guesses)return;for(let r of t.guesses(e))try{let i=await yr(t,r,n,{Range:`bytes=0-${Ow}`}),o=wn(new Uint8Array(await i.arrayBuffer()));return e.file=r,e.ext=vr(r),o}catch(i){if(n.aborted||i.status!==404)throw i}throw Error(`${t.name} keeps no png or jpg of ${e.id}`)}async function Bw(t,e){if(zn(ie)<=Date.now())try{let i=new URLSearchParams({"search[query]":t,"search[type]":"tag_query",limit:String(bw)}),o=`${ie.origin}/autocomplete.json?${i}`;return bR(await(await yr(ie,o,e,{},gw)).text())}catch(i){if(e.aborted)throw i}let n=V.find((i)=>i.key==="yande"),r=new URLSearchParams({name:t,order:"count",limit:String(bw)});return wR(await(await yr(n,`${n.origin}/tag.json?${r}`,e,{},gw)).text())}function HR(t){try{return(JSON.parse(t).related_tags??[]).flatMap(({tag:n})=>n?.name?[{value:n.name,count:Number(n.post_count)||0}]:[])}catch{return[]}}async function Gw(t,e){if(zn(ie)>Date.now())return[];let n=new URLSearchParams({"search[query]":t,"search[category]":"character",limit:String(XI)});return HR(await(await yr(ie,`${ie.origin}/related_tag.json?${n}`,e,{},tR)).text())}function Uw(t,e){return e.slice(0,t.ors?t.tagBudget:1)}async function Ww(t,e,n){let r=await yr(t,e,n,{Range:`bytes=0-${Ow}`});return wn(new Uint8Array(await r.arrayBuffer()))}async function Fc(t,e,n,r){let i=await yr(t,e,n,{},0),o=Number(i.headers.get("content-length"))||0,s=i.body?.getReader();if(!s)return new Uint8Array(await i.arrayBuffer());let a=[],c=0;for(;;){let{done:d,value:f}=await s.read();if(d)break;a.push(f),c+=f.length,r?.(c,o)}let u=new Uint8Array(c),l=0;for(let d of a)u.set(d,l),l+=d.length;return u}var UR=12,WR=/^[0-9a-f]{40}$/;function Oo(){return Io(Er(),"drawn")}function Kw(t){return CR("sha1").update(JSON.stringify(t)).digest("hex")}function zw(t){return LR(Io(Oo(),t))}function Dw(t){let e=Io(Oo(),t);try{let n=jR(e),r=n.readUInt32BE(0),i=JSON.parse(n.toString("utf8",4,4+r)),o=n.subarray(4+r,4+r+i.figure),s=n.subarray(4+r+i.figure,4+r+i.figure+i.picture);if(o.length!==i.figure||s.length!==i.picture)return;let a=new Date;return GR(e,a,a),{stem:i.stem,fill:i.fill,...i.peak?{peak:i.peak}:{},figure:o,picture:s}}catch{return}}function cf(t,e){let n=Buffer.from(JSON.stringify({stem:e.stem,fill:e.fill,...e.peak?{peak:e.peak}:{},figure:e.figure.length,picture:e.picture.length})),r=Buffer.alloc(4);r.writeUInt32BE(n.length),L(Io(Oo(),t),Buffer.concat([r,n,e.figure,e.picture])),KR()}function KR(){let t=FR(Oo()).filter((e)=>WR.test(e)).flatMap((e)=>{try{return[{name:e,at:BR(Io(Oo(),e)).mtimeMs}]}catch{return[]}}).sort((e,n)=>n.at-e.at);for(let{name:e}of t.slice(UR))_R(Io(Oo(),e),{force:!0})}import{readdirSync as ZR,readFileSync as e0}from"node:fs";import{basename as QR,join as n0}from"node:path";/*!
4
4
  * Copyright (c) Squirrel Chat et al., All rights reserved.
5
5
  * SPDX-License-Identifier: BSD-3-Clause
6
6
  *
@@ -26,9 +26,9 @@ import{createRequire as w2}from"node:module";var d2=Object.create;var{getPrototy
26
26
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
27
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
- */function mR(t,e){let n=t.slice(0,e).split(/\r?\n/);return[n.length,n.pop().length+1]}function pR(t,e,n){let r=t.split(/\r?\n/),i="",o=(Math.log10(e+1)|0)+1;for(let s=e-1;s<=e+1;s++){let a=r[s-1];if(!a)continue;if(i+=s.toString().padEnd(o," "),i+=": ",i+=a,i+=`
29
+ */function zR(t,e){let n=t.slice(0,e).split(/\r?\n/);return[n.length,n.pop().length+1]}function DR(t,e,n){let r=t.split(/\r?\n/),i="",o=(Math.log10(e+1)|0)+1;for(let s=e-1;s<=e+1;s++){let a=r[s-1];if(!a)continue;if(i+=s.toString().padEnd(o," "),i+=": ",i+=a,i+=`
30
30
  `,s===e)i+=" ".repeat(o+n+2),i+=`^
31
- `}return i}class D extends Error{line;column;codeblock;constructor(t,e){let[n,r]=mR(e.toml,e.ptr),i=pR(e.toml,n,r);super(`Invalid TOML document: ${t}
31
+ `}return i}class D extends Error{line;column;codeblock;constructor(t,e){let[n,r]=zR(e.toml,e.ptr),i=DR(e.toml,n,r);super(`Invalid TOML document: ${t}
32
32
 
33
33
  ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(t,{toml:e.s,ptr:n??e.p})}}/*!
34
34
  * Copyright (c) Squirrel Chat et al., All rights reserved.
@@ -56,7 +56,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
56
56
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
57
57
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
58
58
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59
- */function Ac(t){let e=t.p,n=t.s.charCodeAt(t.p++),r=n,i=n===39,o=n===t.s.charCodeAt(t.p)&&n===t.s.charCodeAt(t.p+1);if(o){if((n=t.s.charCodeAt(t.p+=2))===10)t.p++;else if(n===13&&t.s.charCodeAt(t.p+1)===10)t.p+=2}let s="",a=t.p,c=0;for(;t.p<t.s.length;t.p++)if(n=t.s.charCodeAt(t.p),o&&(n===10||n===13&&t.s.charCodeAt(t.p+1)===10))c=c&&3;else if(n<32&&n!==9||n===127)D.x("control characters are not allowed in strings",t);else if((!c||c===3)&&n===r&&(!o||t.s.charCodeAt(t.p+1)===r&&t.s.charCodeAt(t.p+2)===r)){if(o){if(t.s.charCodeAt(t.p+3)===r)t.p++;if(t.s.charCodeAt(t.p+3)===r)t.p++}if(!c){let u=t.s.slice(a,t.p);s=s?s+u:u}return t.p+=o?3:1,s}else if(!c){if(!i&&n===92)s+=t.s.slice(a,a=t.p),c=1}else if(c===1)if(n===120||n===117||n===85){let u=t.p++-1,l=0,d=n===120?2:n===117?4:8;for(let f=0;f<d;f++,t.p++){let h=t.s.charCodeAt(t.p),m=h>=48&&h<=57?h-48:h>=65&&h<=70?h-65+10:h>=97&&h<=102?h-97+10:-1;if(m<0)D.x("invalid non-hex character in unicode escape",t);l=l<<4|m}if(l<0||l>1114111||l>=55296&&l<=57343)D.x("invalid unicode escape",t,u);s+=String.fromCodePoint(l),a=t.p--,c=0}else if(o&&(n===32||n===9))c=2;else{if(n===98)s+="\b";else if(n===116)s+="\t";else if(n===110)s+=`
59
+ */function jc(t){let e=t.p,n=t.s.charCodeAt(t.p++),r=n,i=n===39,o=n===t.s.charCodeAt(t.p)&&n===t.s.charCodeAt(t.p+1);if(o){if((n=t.s.charCodeAt(t.p+=2))===10)t.p++;else if(n===13&&t.s.charCodeAt(t.p+1)===10)t.p+=2}let s="",a=t.p,c=0;for(;t.p<t.s.length;t.p++)if(n=t.s.charCodeAt(t.p),o&&(n===10||n===13&&t.s.charCodeAt(t.p+1)===10))c=c&&3;else if(n<32&&n!==9||n===127)D.x("control characters are not allowed in strings",t);else if((!c||c===3)&&n===r&&(!o||t.s.charCodeAt(t.p+1)===r&&t.s.charCodeAt(t.p+2)===r)){if(o){if(t.s.charCodeAt(t.p+3)===r)t.p++;if(t.s.charCodeAt(t.p+3)===r)t.p++}if(!c){let u=t.s.slice(a,t.p);s=s?s+u:u}return t.p+=o?3:1,s}else if(!c){if(!i&&n===92)s+=t.s.slice(a,a=t.p),c=1}else if(c===1)if(n===120||n===117||n===85){let u=t.p++-1,l=0,d=n===120?2:n===117?4:8;for(let f=0;f<d;f++,t.p++){let h=t.s.charCodeAt(t.p),m=h>=48&&h<=57?h-48:h>=65&&h<=70?h-65+10:h>=97&&h<=102?h-97+10:-1;if(m<0)D.x("invalid non-hex character in unicode escape",t);l=l<<4|m}if(l<0||l>1114111||l>=55296&&l<=57343)D.x("invalid unicode escape",t,u);s+=String.fromCodePoint(l),a=t.p--,c=0}else if(o&&(n===32||n===9))c=2;else{if(n===98)s+="\b";else if(n===116)s+="\t";else if(n===110)s+=`
60
60
  `;else if(n===102)s+="\f";else if(n===114)s+="\r";else if(n===101)s+="\x1B";else if(n===34)s+='"';else if(n===92)s+="\\";else D.x("unrecognised escape sequence",t);a=t.p+1,c=0}else if(n!==32&&n!==9){if(c===2)D.x("invalid escape: only line-ending whitespace may be escaped",t,a);c=!i&&n===92?1:0,a=t.p}D.x("unfinished string",t,e)}/*!
61
61
  * Copyright (c) Squirrel Chat et al., All rights reserved.
62
62
  * SPDX-License-Identifier: BSD-3-Clause
@@ -83,7 +83,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
83
83
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
84
84
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
85
85
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
86
- */var gR=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;class Or extends Date{#e=!1;#n=!1;#t=null;constructor(t,e,n){let r=!0,i=!0,o="Z",s;if(typeof t==="string")if(e)t:{if(e<3){if(+t.slice(11,13)>23){t="";break t}if(e===2)o=null,t+="Z";else if((s=t.charCodeAt(t.length-1))!==90&&s!==122)o=t.slice(t.length-6);if(n)t=t.slice(0,10)+"T"+t.slice(11)}else if(e===4)t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`;r=e!==4,i=e!==3}else{let a=t.match(gR);if(a){if(!a[1])r=!1,t=`0000-01-01T${t}`;if(i=!!a[2],i&&t[10]===" "&&(t=t.replace(" ","T")),a[2]&&+a[2]>23)t="";else if(o=a[3]||null,!o&&i)t+="Z"}else t=""}super(t);if(!isNaN(this.getTime()))this.#e=r,this.#n=i,this.#t=o}isDateTime(){return this.#e&&this.#n}isLocal(){return!this.#e||!this.#n||!this.#t}isDate(){return this.#e&&!this.#n}isTime(){return this.#n&&!this.#e}isValid(){return this.#e||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#t===null)return t.slice(0,-1);if(this.#t==="Z"||this.#t==="z")return t;let e=+this.#t.slice(1,3)*60+ +this.#t.slice(4,6);return e=this.#t[0]==="-"?e:-e,new Date(this.getTime()-e*60000).toISOString().slice(0,-1)+this.#t}static wrapAsOffsetDateTime(t,e="Z"){let n=new Or(t);return n.#t=e,n}static wrapAsLocalDateTime(t){let e=new Or(t);return e.#t=null,e}static wrapAsLocalDate(t){let e=new Or(t);return e.#n=!1,e.#t=null,e}static wrapAsLocalTime(t){let e=new Or(t);return e.#e=!1,e.#t=null,e}}/*!
86
+ */var qR=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;class Mr extends Date{#e=!1;#n=!1;#t=null;constructor(t,e,n){let r=!0,i=!0,o="Z",s;if(typeof t==="string")if(e)t:{if(e<3){if(+t.slice(11,13)>23){t="";break t}if(e===2)o=null,t+="Z";else if((s=t.charCodeAt(t.length-1))!==90&&s!==122)o=t.slice(t.length-6);if(n)t=t.slice(0,10)+"T"+t.slice(11)}else if(e===4)t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`;r=e!==4,i=e!==3}else{let a=t.match(qR);if(a){if(!a[1])r=!1,t=`0000-01-01T${t}`;if(i=!!a[2],i&&t[10]===" "&&(t=t.replace(" ","T")),a[2]&&+a[2]>23)t="";else if(o=a[3]||null,!o&&i)t+="Z"}else t=""}super(t);if(!isNaN(this.getTime()))this.#e=r,this.#n=i,this.#t=o}isDateTime(){return this.#e&&this.#n}isLocal(){return!this.#e||!this.#n||!this.#t}isDate(){return this.#e&&!this.#n}isTime(){return this.#n&&!this.#e}isValid(){return this.#e||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#t===null)return t.slice(0,-1);if(this.#t==="Z"||this.#t==="z")return t;let e=+this.#t.slice(1,3)*60+ +this.#t.slice(4,6);return e=this.#t[0]==="-"?e:-e,new Date(this.getTime()-e*60000).toISOString().slice(0,-1)+this.#t}static wrapAsOffsetDateTime(t,e="Z"){let n=new Mr(t);return n.#t=e,n}static wrapAsLocalDateTime(t){let e=new Mr(t);return e.#t=null,e}static wrapAsLocalDate(t){let e=new Mr(t);return e.#n=!1,e.#t=null,e}static wrapAsLocalTime(t){let e=new Mr(t);return e.#e=!1,e.#t=null,e}}/*!
87
87
  * Copyright (c) Squirrel Chat et al., All rights reserved.
88
88
  * SPDX-License-Identifier: BSD-3-Clause
89
89
  *
@@ -109,7 +109,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
109
109
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
110
110
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
111
111
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
112
- */function Me(t,e=10){return e===16?t>47&&t<58||t>64&&t<71||t>96&&t<103:t>47&&t<48+e}function ef(t,e){return t===32||t===9||t===10||t===13||e&&(t===e||t===44)||t===35}function Ks(t,e){let n=t.p,r=t.s.charCodeAt(t.p);if(r===91||r===123){t.d--||D.x("document contains excessively nested structures. aborting.",t);let i=r===91?Uw(t):Gw(t);return t.d++,i}if(r===34||r===39)return Ac(t);if(r===116){if(t.s.charCodeAt(++t.p)!==114||t.s.charCodeAt(++t.p)!==117||t.s.charCodeAt(++t.p)!==101)D.x("invalid value",t,n);return t.p++,!0}if(r===102){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==108||t.s.charCodeAt(++t.p)!==115||t.s.charCodeAt(++t.p)!==101)D.x("invalid value",t,n);return t.p++,!1}if(r===43||r===45)return Tc(t,t.p,t.s.charCodeAt(++t.p),44-r,e);if(t.s.charCodeAt(t.p+4)===45&&t.s.charCodeAt(t.p+7)===45)return bR(t,r,e);if(t.s.charCodeAt(t.p+2)===58)return wR(t,r,e);return Tc(t,t.p,r,0,e)}function Tc(t,e,n,r,i){let o=n,s=0,a=!1;if(o===105){if(t.s.charCodeAt(++t.p)!==110||t.s.charCodeAt(++t.p)!==102)D.x("invalid value",t,e);return t.p++,(r||1)/0}if(o===110){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==110)D.x("invalid value",t,e);return t.p++,NaN}if(o===48){if(++t.p>=t.s.length||ef(o=t.s.charCodeAt(t.p),i))return t.bi===!0?0n:0;if(!r){if(o===120)return tf(t,e,16,i);else if(o===98)return tf(t,e,2,i);else if(o===111)return tf(t,e,8,i)}if(o===46)s=2;else if(o===101||o===69)s=4;else D.x("illegal leading zero",t,e)}else if(!Me(o))D.x("invalid value",t,e);while(++t.p<t.s.length&&(o=t.s.charCodeAt(t.p),!ef(o,i))){if(!s)s=1;if(o===95){if(!(s&1))D.x("illegal underscore",t);s+=11,a=!0}else if(s===1&&o===46)s=2;else if((s===1||s===3)&&(o===101||o===69))s=4;else if(s===4&&(o===43||o===45));else if(!Me(o))D.x("illegal character in numeric literal",t);else if(s>9)s-=11;else if(!(s&1))s++}if(!s){let u=(n-48)*(r||1);return t.bi===!0?BigInt(u):u}if(!(s&1))D.x("unfinished numeric value",t,e);let c=t.s.slice(e,t.p);if(a)c=c.replaceAll("_","");return s>1?parseFloat(c):Bw(t,c,10,e)}function tf(t,e,n,r){let i,o=1;while(++t.p<t.s.length&&(i=t.s.charCodeAt(t.p),!ef(i,r)))if(i===95){if(o&1)D.x("illegal underscore",t);o=3}else if(!Me(i,n))D.x("illegal character in numeric literal",t);else if(o&1)o--;if(o&1)D.x("unfinished numeric value",t);let s=t.s.slice(e+2,t.p);if(o)s=s.replaceAll("_","");return Bw(t,s,n,e)}function Bw(t,e,n,r){if(t.bi!==!0)t:{let i=parseInt(e,n);if(!Number.isSafeInteger(i)){if(t.bi)break t;D.x("integer value cannot be represented losslessly",t,r)}return i}return n===10?BigInt(e):BigInt((n===2?"0b":n===8?"0o":"0x")+e)}function bR(t,e,n){let r=t.p++,i;if(!Me(e)||!Me(t.s.charCodeAt(t.p++))||!Me(t.s.charCodeAt(t.p++))||!Me(t.s.charCodeAt(t.p++)))return Tc(t,t.p=r,e,0,n);if(t.p+=5,!Me(t.s.charCodeAt(t.p++)))D.x("invalid date-time: date part is malformed",t,r);if(t.p>=t.s.length||((e=t.s.charCodeAt(t.p))!==32||(i=!0,!Me(t.s.charCodeAt(t.p+1))))&&e!==84&&e!==116){let s=t.s.slice(r,t.p);return Ws(t,s,3,!1,r)}if(t.s.charCodeAt(t.p+=3)!==58)D.x("invalid date-time: time part is malformed",t,r);if(t.s.charCodeAt(t.p+=3)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Me(t.s.charCodeAt(++t.p)));if(e=t.s.charCodeAt(t.p)){if(e===90||e===122){let s=t.s.slice(r,++t.p);return Ws(t,s,1,i,r,"[+00:00]")}if(e===43||e===45){let s=t.s.slice(r,t.p+=6);return Ws(t,s,1,i,r,!t.ld&&"["+t.s.slice(t.p-6,t.p)+"]")}}let o=t.s.slice(r,t.p);return Ws(t,o,2,i,r)}function wR(t,e,n){let r=t.p;if(!Me(e)||!Me(t.s.charCodeAt(++t.p)))return Tc(t,--t.p,e,0,n);if(t.s.charCodeAt(t.p+=4)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Me(t.s.charCodeAt(++t.p)));let i=t.s.slice(r,t.p);return Ws(t,i,4,!1,r)}function Ws(t,e,n,r,i,o){if(t.ld){let s=new Or(e,n,r);if(!s.isValid())D.x("invalid date",t,i);return s}try{if(o)e+=o;switch(n){case 1:return Temporal.ZonedDateTime.from(e);case 2:return Temporal.PlainDateTime.from(e);case 3:return Temporal.PlainDate.from(e);case 4:return Temporal.PlainTime.from(e)}}catch(s){D.x(s instanceof Error?s.message:""+s,t,i)}}/*!
112
+ */function Me(t,e=10){return e===16?t>47&&t<58||t>64&&t<71||t>96&&t<103:t>47&&t<48+e}function lf(t,e){return t===32||t===9||t===10||t===13||e&&(t===e||t===44)||t===35}function Vs(t,e){let n=t.p,r=t.s.charCodeAt(t.p);if(r===91||r===123){t.d--||D.x("document contains excessively nested structures. aborting.",t);let i=r===91?Jw(t):Yw(t);return t.d++,i}if(r===34||r===39)return jc(t);if(r===116){if(t.s.charCodeAt(++t.p)!==114||t.s.charCodeAt(++t.p)!==117||t.s.charCodeAt(++t.p)!==101)D.x("invalid value",t,n);return t.p++,!0}if(r===102){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==108||t.s.charCodeAt(++t.p)!==115||t.s.charCodeAt(++t.p)!==101)D.x("invalid value",t,n);return t.p++,!1}if(r===43||r===45)return _c(t,t.p,t.s.charCodeAt(++t.p),44-r,e);if(t.s.charCodeAt(t.p+4)===45&&t.s.charCodeAt(t.p+7)===45)return YR(t,r,e);if(t.s.charCodeAt(t.p+2)===58)return JR(t,r,e);return _c(t,t.p,r,0,e)}function _c(t,e,n,r,i){let o=n,s=0,a=!1;if(o===105){if(t.s.charCodeAt(++t.p)!==110||t.s.charCodeAt(++t.p)!==102)D.x("invalid value",t,e);return t.p++,(r||1)/0}if(o===110){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==110)D.x("invalid value",t,e);return t.p++,NaN}if(o===48){if(++t.p>=t.s.length||lf(o=t.s.charCodeAt(t.p),i))return t.bi===!0?0n:0;if(!r){if(o===120)return uf(t,e,16,i);else if(o===98)return uf(t,e,2,i);else if(o===111)return uf(t,e,8,i)}if(o===46)s=2;else if(o===101||o===69)s=4;else D.x("illegal leading zero",t,e)}else if(!Me(o))D.x("invalid value",t,e);while(++t.p<t.s.length&&(o=t.s.charCodeAt(t.p),!lf(o,i))){if(!s)s=1;if(o===95){if(!(s&1))D.x("illegal underscore",t);s+=11,a=!0}else if(s===1&&o===46)s=2;else if((s===1||s===3)&&(o===101||o===69))s=4;else if(s===4&&(o===43||o===45));else if(!Me(o))D.x("illegal character in numeric literal",t);else if(s>9)s-=11;else if(!(s&1))s++}if(!s){let u=(n-48)*(r||1);return t.bi===!0?BigInt(u):u}if(!(s&1))D.x("unfinished numeric value",t,e);let c=t.s.slice(e,t.p);if(a)c=c.replaceAll("_","");return s>1?parseFloat(c):qw(t,c,10,e)}function uf(t,e,n,r){let i,o=1;while(++t.p<t.s.length&&(i=t.s.charCodeAt(t.p),!lf(i,r)))if(i===95){if(o&1)D.x("illegal underscore",t);o=3}else if(!Me(i,n))D.x("illegal character in numeric literal",t);else if(o&1)o--;if(o&1)D.x("unfinished numeric value",t);let s=t.s.slice(e+2,t.p);if(o)s=s.replaceAll("_","");return qw(t,s,n,e)}function qw(t,e,n,r){if(t.bi!==!0)t:{let i=parseInt(e,n);if(!Number.isSafeInteger(i)){if(t.bi)break t;D.x("integer value cannot be represented losslessly",t,r)}return i}return n===10?BigInt(e):BigInt((n===2?"0b":n===8?"0o":"0x")+e)}function YR(t,e,n){let r=t.p++,i;if(!Me(e)||!Me(t.s.charCodeAt(t.p++))||!Me(t.s.charCodeAt(t.p++))||!Me(t.s.charCodeAt(t.p++)))return _c(t,t.p=r,e,0,n);if(t.p+=5,!Me(t.s.charCodeAt(t.p++)))D.x("invalid date-time: date part is malformed",t,r);if(t.p>=t.s.length||((e=t.s.charCodeAt(t.p))!==32||(i=!0,!Me(t.s.charCodeAt(t.p+1))))&&e!==84&&e!==116){let s=t.s.slice(r,t.p);return Js(t,s,3,!1,r)}if(t.s.charCodeAt(t.p+=3)!==58)D.x("invalid date-time: time part is malformed",t,r);if(t.s.charCodeAt(t.p+=3)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Me(t.s.charCodeAt(++t.p)));if(e=t.s.charCodeAt(t.p)){if(e===90||e===122){let s=t.s.slice(r,++t.p);return Js(t,s,1,i,r,"[+00:00]")}if(e===43||e===45){let s=t.s.slice(r,t.p+=6);return Js(t,s,1,i,r,!t.ld&&"["+t.s.slice(t.p-6,t.p)+"]")}}let o=t.s.slice(r,t.p);return Js(t,o,2,i,r)}function JR(t,e,n){let r=t.p;if(!Me(e)||!Me(t.s.charCodeAt(++t.p)))return _c(t,--t.p,e,0,n);if(t.s.charCodeAt(t.p+=4)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Me(t.s.charCodeAt(++t.p)));let i=t.s.slice(r,t.p);return Js(t,i,4,!1,r)}function Js(t,e,n,r,i,o){if(t.ld){let s=new Mr(e,n,r);if(!s.isValid())D.x("invalid date",t,i);return s}try{if(o)e+=o;switch(n){case 1:return Temporal.ZonedDateTime.from(e);case 2:return Temporal.PlainDateTime.from(e);case 3:return Temporal.PlainDate.from(e);case 4:return Temporal.PlainTime.from(e)}}catch(s){D.x(s instanceof Error?s.message:""+s,t,i)}}/*!
113
113
  * Copyright (c) Squirrel Chat et al., All rights reserved.
114
114
  * SPDX-License-Identifier: BSD-3-Clause
115
115
  *
@@ -135,7 +135,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
135
135
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
136
136
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
137
137
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
138
- */function $R(t){for(;t.p<t.s.length;t.p++){let e=t.s.charCodeAt(t.p);if(e===10)break;if(e===13&&t.s.charCodeAt(t.p+1)===10){t.p++;break}if(e<32&&e!==9||e===127)D.x("control characters are not allowed in comments",t)}}function Ze(t,e,n){let r;while(t.p<t.s.length){while(t.p<t.s.length&&((r=t.s.charCodeAt(t.p))===32||r===9||!e&&(r===10||r===13&&t.s.charCodeAt(t.p+1)===10)))t.p++;if(n||r!==35)break;$R(t)}}/*!
138
+ */function VR(t){for(;t.p<t.s.length;t.p++){let e=t.s.charCodeAt(t.p);if(e===10)break;if(e===13&&t.s.charCodeAt(t.p+1)===10){t.p++;break}if(e<32&&e!==9||e===127)D.x("control characters are not allowed in comments",t)}}function Ze(t,e,n){let r;while(t.p<t.s.length){while(t.p<t.s.length&&((r=t.s.charCodeAt(t.p))===32||r===9||!e&&(r===10||r===13&&t.s.charCodeAt(t.p+1)===10)))t.p++;if(n||r!==35)break;VR(t)}}/*!
139
139
  * Copyright (c) Squirrel Chat et al., All rights reserved.
140
140
  * SPDX-License-Identifier: BSD-3-Clause
141
141
  *
@@ -161,7 +161,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
161
161
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
162
162
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
163
163
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
164
- */function Hc(t,e=61){let n,r=0,i=[],o,s=t.s.charCodeAt(n=t.p);do if(s===e){if(!r)D.x("unexpected end of key",t);if(r===1)i.push(t.s.slice(o,t.p));return t.p++,i}else if(s===46){if(!r)D.x("illegal empty bare key",t);if(r===1)i.push(t.s.slice(o,t.p));r=0}else if(!r&&(s===34||s===39)){if(s===t.s.charCodeAt(t.p+1)&&s===t.s.charCodeAt(t.p+2))D.x("illegal quoted key: multiline strings are not allowed",t);i.push(Ac(t)),r=2,t.p--}else if(s===32||s===9){if(r===1)i.push(t.s.slice(o,t.p)),r=2}else if(r===2||s<48&&s!==45||s>57&&s<65||s>90&&s<97&&s!==95||s>122)D.x("illegal character in key",t);else if(!r)r=1,o=t.p;while(s=t.s.charCodeAt(++t.p));D.x("incomplete key-value: cannot find end of key",t,n)}function Gw(t){let e=t.p++,n=Object.create(null),r=new Set,i;while(t.p<t.s.length){if(Ze(t),(i=t.s.charCodeAt(t.p))===125)return t.p++,n;let o,s=n,a=!1,c=t.p,u=Hc(t);for(let d=0;d<u.length;d++){if(d)s=a?s[o]:s[o]=Object.create(null);if(o=u[d],(a=Object.hasOwn(s,o))&&(typeof s[o]!=="object"||r.has(s[o])))D.x("trying to redefine an already defined value",t,c);let f=o==="__proto__";if(t.uk&&(f||o==="constructor")){s=t.uk!==1&&D.x("document contains an unsafe property",t,c);break}if(!a&&f)Object.defineProperty(s,o,{enumerable:!0,configurable:!0,writable:!0})}if(a)D.x("trying to redefine an already defined value",t,c);Ze(t,!0,!0);let l=Ks(t,125);if(s&&typeof(s[o]=l)==="object")r.add(l);if(Ze(t),(i=t.s.charCodeAt(t.p++))===125)return n;if(i!==44)D.x("expected comma or end of structure",t,t.p-1)}D.x("unfinished table",t,e)}function Uw(t){let e=t.p++,n=[],r;while(t.p<t.s.length){if(Ze(t),(r=t.s.charCodeAt(t.p))===93)return t.p++,n;if(n.push(Ks(t,93)),Ze(t),(r=t.s.charCodeAt(t.p++))===93)return n;if(r!==44)D.x("expected comma or end of structure",t,t.p-1)}D.x("unfinished array",t,e)}/*!
164
+ */function Bc(t,e=61){let n,r=0,i=[],o,s=t.s.charCodeAt(n=t.p);do if(s===e){if(!r)D.x("unexpected end of key",t);if(r===1)i.push(t.s.slice(o,t.p));return t.p++,i}else if(s===46){if(!r)D.x("illegal empty bare key",t);if(r===1)i.push(t.s.slice(o,t.p));r=0}else if(!r&&(s===34||s===39)){if(s===t.s.charCodeAt(t.p+1)&&s===t.s.charCodeAt(t.p+2))D.x("illegal quoted key: multiline strings are not allowed",t);i.push(jc(t)),r=2,t.p--}else if(s===32||s===9){if(r===1)i.push(t.s.slice(o,t.p)),r=2}else if(r===2||s<48&&s!==45||s>57&&s<65||s>90&&s<97&&s!==95||s>122)D.x("illegal character in key",t);else if(!r)r=1,o=t.p;while(s=t.s.charCodeAt(++t.p));D.x("incomplete key-value: cannot find end of key",t,n)}function Yw(t){let e=t.p++,n=Object.create(null),r=new Set,i;while(t.p<t.s.length){if(Ze(t),(i=t.s.charCodeAt(t.p))===125)return t.p++,n;let o,s=n,a=!1,c=t.p,u=Bc(t);for(let d=0;d<u.length;d++){if(d)s=a?s[o]:s[o]=Object.create(null);if(o=u[d],(a=Object.hasOwn(s,o))&&(typeof s[o]!=="object"||r.has(s[o])))D.x("trying to redefine an already defined value",t,c);let f=o==="__proto__";if(t.uk&&(f||o==="constructor")){s=t.uk!==1&&D.x("document contains an unsafe property",t,c);break}if(!a&&f)Object.defineProperty(s,o,{enumerable:!0,configurable:!0,writable:!0})}if(a)D.x("trying to redefine an already defined value",t,c);Ze(t,!0,!0);let l=Vs(t,125);if(s&&typeof(s[o]=l)==="object")r.add(l);if(Ze(t),(i=t.s.charCodeAt(t.p++))===125)return n;if(i!==44)D.x("expected comma or end of structure",t,t.p-1)}D.x("unfinished table",t,e)}function Jw(t){let e=t.p++,n=[],r;while(t.p<t.s.length){if(Ze(t),(r=t.s.charCodeAt(t.p))===93)return t.p++,n;if(n.push(Vs(t,93)),Ze(t),(r=t.s.charCodeAt(t.p++))===93)return n;if(r!==44)D.x("expected comma or end of structure",t,t.p-1)}D.x("unfinished array",t,e)}/*!
165
165
  * Copyright (c) Squirrel Chat et al., All rights reserved.
166
166
  * SPDX-License-Identifier: BSD-3-Clause
167
167
  *
@@ -187,7 +187,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
187
187
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
188
188
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
189
189
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
190
- */function Ww(t,e,n,r,i){let o=n,s=r,a,c=!1,u;for(let l=0;l<e.length;l++){if(l){if(o=c?o[a]:o[a]=Object.create(null),s=(u=s[a]).c,i===0&&(u.t===1||u.t===2))return null;if(u.t===2){let d=o.length-1;o=o[d],s=s[d].c}}if(a=e[l],(c=Object.hasOwn(o,a))&&s[a]?.t===0&&s[a]?.d)return null;if(!c){let d=a==="__proto__";if(t.uk&&(d||a==="constructor"))return!1;if(d)Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(s,a,{enumerable:!0,configurable:!0,writable:!0});s[a]={t:l<e.length-1&&i===2?3:i,d:!1,i:0,c:Object.create(null)}}}if(u=s[a],u.t!==i&&!(i===1&&u.t===3))return null;if(i===2){if(!u.d)u.d=!0,o[a]=[];o[a].push(o=Object.create(null)),u.c[u.i++]=u={t:1,d:!1,i:0,c:Object.create(null)}}if(u.d)return null;if(u.d=!0,i===1)o=c?o[a]:o[a]=Object.create(null);else if(i===0&&c)return null;return[a,o,u.c]}function Kw(t,e,n){if(e===null||t.uk===2)D.x(e===null?"trying to redefine an already defined table or value":"document contains an unsafe property",t,n)}function wi(t,e={}){let n={s:t,p:0,d:e.maxDepth??1000,bi:e.integersAsBigInt??!1,ld:e.useLegacyDate??!0,uk:e.unsafeKeyBehaviour==="throw"?2:e.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),i=Object.create(null),o,s=!1,a=r,c=i;if(t.charCodeAt(0)===65279)n.p++;Ze(n);while(n.p<t.length){if(t.charCodeAt(n.p)===91){let u=t.charCodeAt(++n.p)===91;o=n.p+=+u,s=!1;let l=Hc(n,93);if(u){if(t.charCodeAt(n.p)!==93)D.x("expected end of table array declaration",n);n.p++}let d=Ww(n,l,r,i,u?2:1);if(!d)Kw(n,d,o),s=!0;else c=d[2],a=d[1]}else{o=n.p;let u=Hc(n),l=Ww(n,u,a,c,0);if(!l&&!s)Kw(n,l,o);Ze(n,!0,!0);let d=Ks(n,void 0);if(l&&!s)l[1][l[0]]=d}if(Ze(n,!0),n.p<t.length&&(o=t.charCodeAt(n.p))!==10&&(o!==13||t.charCodeAt(n.p+1)!==10))D.x("each key-value declaration must be followed by an end-of-line",n);Ze(n)}return r}/*!
190
+ */function Vw(t,e,n,r,i){let o=n,s=r,a,c=!1,u;for(let l=0;l<e.length;l++){if(l){if(o=c?o[a]:o[a]=Object.create(null),s=(u=s[a]).c,i===0&&(u.t===1||u.t===2))return null;if(u.t===2){let d=o.length-1;o=o[d],s=s[d].c}}if(a=e[l],(c=Object.hasOwn(o,a))&&s[a]?.t===0&&s[a]?.d)return null;if(!c){let d=a==="__proto__";if(t.uk&&(d||a==="constructor"))return!1;if(d)Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(s,a,{enumerable:!0,configurable:!0,writable:!0});s[a]={t:l<e.length-1&&i===2?3:i,d:!1,i:0,c:Object.create(null)}}}if(u=s[a],u.t!==i&&!(i===1&&u.t===3))return null;if(i===2){if(!u.d)u.d=!0,o[a]=[];o[a].push(o=Object.create(null)),u.c[u.i++]=u={t:1,d:!1,i:0,c:Object.create(null)}}if(u.d)return null;if(u.d=!0,i===1)o=c?o[a]:o[a]=Object.create(null);else if(i===0&&c)return null;return[a,o,u.c]}function Zw(t,e,n){if(e===null||t.uk===2)D.x(e===null?"trying to redefine an already defined table or value":"document contains an unsafe property",t,n)}function $i(t,e={}){let n={s:t,p:0,d:e.maxDepth??1000,bi:e.integersAsBigInt??!1,ld:e.useLegacyDate??!0,uk:e.unsafeKeyBehaviour==="throw"?2:e.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),i=Object.create(null),o,s=!1,a=r,c=i;if(t.charCodeAt(0)===65279)n.p++;Ze(n);while(n.p<t.length){if(t.charCodeAt(n.p)===91){let u=t.charCodeAt(++n.p)===91;o=n.p+=+u,s=!1;let l=Bc(n,93);if(u){if(t.charCodeAt(n.p)!==93)D.x("expected end of table array declaration",n);n.p++}let d=Vw(n,l,r,i,u?2:1);if(!d)Zw(n,d,o),s=!0;else c=d[2],a=d[1]}else{o=n.p;let u=Bc(n),l=Vw(n,u,a,c,0);if(!l&&!s)Zw(n,l,o);Ze(n,!0,!0);let d=Vs(n,void 0);if(l&&!s)l[1][l[0]]=d}if(Ze(n,!0),n.p<t.length&&(o=t.charCodeAt(n.p))!==10&&(o!==13||t.charCodeAt(n.p+1)!==10))D.x("each key-value declaration must be followed by an end-of-line",n);Ze(n)}return r}/*!
191
191
  * Copyright (c) Squirrel Chat et al., All rights reserved.
192
192
  * SPDX-License-Identifier: BSD-3-Clause
193
193
  *
@@ -213,7 +213,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
213
213
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
214
214
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
215
215
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
216
- */var kj=!!"".isWellFormed;/*!
216
+ */var m6=!!"".isWellFormed;/*!
217
217
  * Copyright (c) Squirrel Chat et al., All rights reserved.
218
218
  * SPDX-License-Identifier: BSD-3-Clause
219
219
  *
@@ -239,168 +239,169 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
239
239
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
240
240
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
241
241
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
242
- */var Ut=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right"],zs="Original",vR=1e6,yn="_groups.toml",zw=3,Dw=8,nf="[a-z0-9]+(?:-[a-z0-9]+)*",SR=new RegExp(`^(?:(${nf})@(${nf})/)?(${nf})$`),Vw=["background","foreground","cursor","selection"];function ot(t,e){throw Error(`${t}: ${e}`)}function $i(t,e,n){if(typeof n!=="string"||!le(n))ot(t,`${e} must be "#rrggbb" (lowercase), got ${JSON.stringify(n)}`);return n}function qs(t,e,n){if(typeof n!=="string"||n.length===0)ot(t,`${e} must be a non-empty string`);return n}function oe(t){return t.replace("@","--").replace("/","--")}function j(t){return`ttheme-${oe(t)}`}function lt(t){let e=t.indexOf("/");return e<0?void 0:t.slice(0,e)}function de(t){return t.slice(t.indexOf("/")+1)}function xe(t){let e=SR.exec(t);if(!e)return"takes lowercase letters, digits and single hyphens, as <palette> or <owner>@<market>/<palette>";if((e[1]?.length??0)>39)return"has an owner longer than a GitHub handle can be";return(e[2]?.length??0)>40||(e[3]?.length??0)>40?"is longer than 40 characters":void 0}function Ys(t){if(/[\p{Cc}"$`\\]/u.test(t))return"holds a control character, a quote, $, ` or \\";return t.length>80?"is longer than 80 characters":void 0}function Ds(t,e,n){let r=qs(t,e,n),i=Ys(r);if(i)ot(t,`${e} ${JSON.stringify(r)} ${i}`);return r}function qw(t,e,n){let r=qs(t,e,n),i=xe(r);if(i)ot(t,`${e} "${r}" ${i}`);return r}function xo(t){return t&&typeof t==="object"?t:{}}function ER(t,e,n){if(e===void 0)return[n.cursor,n.selectionBackground,n.background];let r=Array.isArray(e)?e:[e];if(r.length===0)ot(t,"ghostty.icon_screen must not be empty");return r.map((i,o)=>$i(t,`ghostty.icon_screen[${o}]`,i))}function MR(t,e,n){let r=xo(e);return{iconGhost:r.icon_ghost===void 0?n.cursor:$i(t,"ghostty.icon_ghost",r.icon_ghost),iconScreen:ER(t,r.icon_screen,n)}}function xR(t){return new Map([...Vw.map((e)=>[e,t[e]]),...t.ansi.map((e,n)=>[`ansi${n}`,e])])}function OR(t,e,n){if(!Array.isArray(e)||e.length!==zw)ot(t,`meta.signature must name exactly ${zw} palette slots`);let r=xR(n),i=[],o=[];for(let[s,a]of e.entries()){let c=`meta.signature[${s}]`,u=qs(t,c,a),l=r.get(u);if(l===void 0)ot(t,`${c} ${JSON.stringify(a)} is not a palette slot — use ${Vw.join(", ")} or ansi0-ansi15`);i.push(u),o.push(l)}if(new Set(o).size!==o.length)ot(t,"meta.signature slots must resolve to three different colors");return{names:i,colors:o}}function IR(t,e,n,r=!1){if(e===void 0)return;if(!n)ot(t,"meta.booru_sites renames meta.booru per site, so it needs meta.booru");if(!e||typeof e!=="object"||Array.isArray(e))ot(t,'meta.booru_sites must be a table of site = "tag" or site = ["tag", ...]');let i={};for(let[o,s]of Object.entries(e)){let a=J.find((u)=>u.key===o);if(!a){if(r)continue;ot(t,`meta.booru_sites.${o} is not a find site — use ${J.map((u)=>u.key).join(", ")}`)}let c=typeof s==="string"?[s]:Array.isArray(s)?s:void 0;if(!c||c.some((u)=>typeof u!=="string"||u===""||/\s/.test(u)))ot(t,`meta.booru_sites.${o} must be one tag or a list of tags, got ${JSON.stringify(s)}`);if(c.length>1&&!a.ors)ot(t,`meta.booru_sites.${o} takes one tag — ${a.name} does not OR tags`);if(c.length>a.tagBudget)ot(t,`meta.booru_sites.${o} takes ${a.tagBudget} tags at most — ${a.name} searches that many at a time`);i[o]=c}return i}function RR(t,e,n){if(e===void 0)return;if(!Array.isArray(e)||e.length===0||e.length>Dw)ot(t,`[[picture]] holds 1 to ${Dw} pictures`);let r=e.flatMap((i,o)=>{let s=xo(i),a=`picture[${o}]`,c=J.find((h)=>h.key===s.site);if(!c){if(n)return[];ot(t,`${a}.site must be one of ${J.map((h)=>h.key).join(", ")}`)}if(typeof s.id!=="number"||!Number.isSafeInteger(s.id)||s.id<=0)ot(t,`${a}.id must be the post's number on ${c.name}`);let{size:u,position:l,opacity:d}=s;if(u!==void 0&&u!=="fill"&&!(Number.isInteger(u)&&Number(u)>=20&&Number(u)<=999))ot(t,`${a}.size must be "fill" or a percentage from 20 to 999`);let f=l===void 0||Ut.includes(l);if(!f&&!n)ot(t,`${a}.position must be one of ${Ut.join(", ")}`);if(d!==void 0&&!(typeof d==="number"&&d>=0&&d<=1))ot(t,`${a}.opacity must be a number from 0 to 1`);return[{site:c.key,id:s.id,...u!==void 0?{size:u}:{},...l!==void 0&&f?{position:l}:{},...d!==void 0?{opacity:d}:{}}]});return r.length>0?r:void 0}function of(t,e){try{return wi(e)}catch(n){ot(t,`is not valid TOML — ${(n instanceof Error?n.message:String(n)).split(`
243
- `)[0]}`)}}function PR(t){let n=of(yn,Yw(Jw(t,yn),"utf8")).group;if(!Array.isArray(n)||n.length===0)ot(yn,"needs at least one [[group]] table");return n.map((r)=>{let i=xo(r);return{name:Ds(yn,"group.name",i.name),native:i.native===void 0?void 0:Ds(yn,"group.native",i.native),lead:qs(yn,"group.lead",i.lead)}})}function NR(t,e){if(!Array.isArray(e)||e.length===0)ot(t,'meta.native_names must be a list of names, like ["後藤ひとり"]');return e.map((n,r)=>{let i=Ds(t,`meta.native_names[${r}]`,n);if(i.includes("|"))ot(t,`meta.native_names[${r}] ${JSON.stringify(i)} contains |`);return i})}var rf={"":["$schema","meta","colors","contrast","ghostty","picture"],meta:["name","base","group","ansi_source","booru","booru_sites","native_names","signature","order","role"],colors:["background","foreground","cursor","selection_background","ansi"],contrast:["waive","reason"],ghostty:["icon_ghost","icon_screen"],picture:["site","id","size","position","opacity"]};function Zw(t,e){let n=of(t,e),r=(i,o,s=[])=>o&&typeof o==="object"&&!Array.isArray(o)?Object.keys(o).filter((a)=>!s.includes(a)).map((a)=>i?`${i}.${a}`:a):[];return[...r("",n,rf[""]),...["meta","colors","contrast","ghostty"].flatMap((i)=>r(i,n[i],rf[i])),...(Array.isArray(n.picture)?n.picture:[]).flatMap((i,o)=>r(`picture[${o}]`,i,rf.picture))]}function sf(t,e,n){let r=of(t,e),i=xo(r.meta),o=xo(r.colors),s=xo(r.contrast),a=o.ansi;if(!Array.isArray(a)||a.length!==16)ot(t,`colors.ansi must hold exactly 16 colors, got ${Array.isArray(a)?a.length:typeof a}`);let c=qw(t,"meta.name",i.name);if(c!==n.name)ot(t,`meta.name "${c}" does not match its file — it lives at ${n.name}`);let u=n.open===!0;for(let L of["order","role"])if(u&&i[L]!==void 0)ot(t,`meta.${L} is for the official palettes — a market palette follows its base`);let l=i.role;if(l!==void 0&&l!=="default")ot(t,`meta.role must be "default", got ${JSON.stringify(l)}`);let d=i.base===void 0?void 0:qw(t,"meta.base",i.base);if(d!==void 0&&!u)ot(t,"meta.base is for market palettes");let f=d===void 0?void 0:n.bases?.get(d),h=u&&i.group===void 0?f?.group??zs:Ds(t,"meta.group",i.group),m=n.groups.get(h);if(!m&&!(u&&(h===zs||n.open)))ot(t,`meta.group "${h}" has no [[group]] table in ${yn}`);let g=$i(t,"colors.background",o.background),b=$i(t,"colors.foreground",o.foreground),w=$i(t,"colors.cursor",o.cursor),k=$i(t,"colors.selection_background",o.selection_background),v=a.map((L,K)=>$i(t,`colors.ansi[${K}]`,L)),S=OR(t,i.signature,{background:g,foreground:b,cursor:w,selection:k,ansi:v}),M=i.booru===void 0?void 0:qs(t,"meta.booru",i.booru);if(M!==void 0&&/[\s\p{Cc}]/u.test(M))ot(t,`meta.booru must be a single booru tag, got ${JSON.stringify(M)}`);let I=IR(t,i.booru_sites,M,n.foreign===!0),O=i.native_names===void 0?void 0:NR(t,i.native_names),H=Array.isArray(s.waive)?s.waive.map(String):[];if(H.length>0&&typeof s.reason!=="string")ot(t,"contrast.waive needs a contrast.reason explaining why");let N=RR(t,r.picture,n.foreign===!0);return{name:c,...d?{base:d}:{},group:h,native:m?.native,...O?{nativeNames:O}:{},lead:!u&&m?.lead===c,order:u?f?.order??vR:Number(i.order),role:l,ansiSource:u&&i.ansi_source===void 0?d??"original":Ds(t,"meta.ansi_source",i.ansi_source),...M?{booru:M}:{},...I?{booruSites:I}:{},background:g,foreground:b,cursor:w,selectionBackground:k,ansi:v,signature:S.colors,signatureSlots:S.names,ghostty:MR(t,r.ghostty,{background:g,cursor:w,selectionBackground:k}),waive:H,waiveReason:typeof s.reason==="string"?s.reason:void 0,...N?{pictures:N}:{}}}function Qw(t){let e=PR(t),n=new Map(e.map((o)=>[o.name,o]));if(n.size!==e.length)ot(yn,"group.name must be unique");let r=kR(t).filter((o)=>o.endsWith(".toml")&&!o.startsWith("_")).map((o)=>sf(o,Yw(Jw(t,o),"utf8"),{name:yR(o,".toml"),groups:n})).sort((o,s)=>o.order-s.order);if(new Set(r.map((o)=>o.order)).size!==r.length)throw Error("themes: meta.order must be unique across all themes");for(let o of e){let s=r.filter((a)=>a.group===o.name);if(s.length===0)ot(yn,`group "${o.name}" has no themes`);if(!s.some((a)=>a.name===o.lead))ot(yn,`group "${o.name}" lead "${o.lead}" is not one of its themes`)}return r}function Xw(t){return t.filter((e)=>e.role===void 0)}function ki(t){let e=(r,i)=>r<i?-1:r>i?1:0,n=(r)=>lt(r.name)?r.name:r.base??r.name;return[...t].sort((r,i)=>Number(lt(r.name)!==void 0)-Number(lt(i.name)!==void 0)||e(r.group.toLowerCase(),i.group.toLowerCase())||Number(r.catalog===void 0)-Number(i.catalog===void 0)||e((r.catalog??"").toLowerCase(),(i.catalog??"").toLowerCase())||e(n(r),n(i))||Number(r.base!==void 0)-Number(i.base!==void 0)||e(r.name,i.name))}var Js={width:2560,height:1550},FR=1,jR=2560,_R=0.1,l0=0.99,BR=2,yi={tall:1.15,reach:0.4,widest:0.95,headroom:0.04,margin:0.03,stands:12},GR=vt(pt("#19161e","#9b86c8",0.2)),UR="shelf",Lc="originals",WR="images.json",cf=1;function KR(t,e){if(e==="background"||e==="foreground"||e==="cursor")return t[e];if(e==="selection"&&t.selection)return t.selection;let n=/^ansi(\d|1[0-5])$/.exec(e),r=n?t.ansi[Number(n[1])]:void 0;if(!r)throw Error(`${t.name} has no slot ${e}`);return r}function t0(t){if(t(1))return 1;let e=0,n=1;for(let r=0;r<40;r++){let i=(e+n)/2;if(t(i))e=i;else n=i}return e}function d0(t,e){let n=(s)=>zg({name:t.name,background:pt(t.background,e,s),foreground:t.foreground,ansi:t.ansi,waive:t.waived??[]}).map((a)=>a.rule),r=new Set(n(0)),i=t0((s)=>n(s).every((a)=>r.has(a))),o=t0((s)=>vt(pt(t.background,e,s))<=GR);return{cap:i,matched:o,opacity:Math.floor(Math.min(i,o)*100)/100}}function e0(t,e){let n=KR(t,e),{cap:r,matched:i,opacity:o}=d0(t,n),s=et(t.background),a=Math.hypot(...et(n).map((c,u)=>(c-(s[u]??0))*o));return{slot:e,color:n,cap:r,matched:i,opacity:o,reach:a}}function f0(t,e){return d0(t,e).opacity}function vn(t,e){let n=e0(t,"cursor");if(n.opacity>=_R)return n;return e.filter((r)=>r!=="cursor"&&r!=="background").map((r)=>e0(t,r)).reduce((r,i)=>i.reach>r.reach?i:r,n)}function zR(t){return Xb(t)??{x:0,y:0,w:t.width,h:t.height}}function mf(t,e){if(t<=0||e<=0)return Js;let n=Math.min(1,Js.width/Math.max(t,e));return{width:Math.round(t*n),height:Math.round(e*n)}}function h0(t,e,n,r){if(r<yi.stands){let c=t.w*n>t.h*e?{x:t.x+(t.w-t.h*e/n)/2,y:t.y,w:t.h*e/n,h:t.h}:{x:t.x,y:t.y,w:t.w,h:t.w*n/e};return{crop:c,at:{x:0,y:0,w:e,h:n},focus:(c.y-t.y+c.h/2)/t.h}}let i=Math.max(yi.tall*n,yi.reach*e*t.h/t.w),o=i*t.w/t.h;if(o>yi.widest*e)o=yi.widest*e,i=o*t.h/t.w;let s=yi.headroom*n,a=Math.min(1,(n-s)/i);return{crop:{x:t.x,y:t.y,w:t.w,h:t.h*a},at:{x:e*(1-yi.margin)-o,y:s,w:o,h:i*a},focus:Math.min(1,(n/2-s)/i)}}function DR(t,e){return 0.299*(t[e]??0)+0.587*(t[e+1]??0)+0.114*(t[e+2]??0)}function qR(t,e){let n=new Uint32Array(256),r=Math.max(1,Math.floor(e.w*e.h/400000)),i=0;for(let s=0;s<e.w*e.h;s+=r){let a=((e.y+Math.floor(s/e.w))*t.width+e.x+s%e.w)*4;if((t.data[a+3]??0)>=128){let c=Math.round(DR(t.data,a));n[c]=(n[c]??0)+1,i++}}let o=0;for(let s=0;s<256&&i>0;s++)if(o+=n[s]??0,o>=i*l0)return Math.min(BR,Math.max(1,255/Math.max(1,s)));return 1}var af=Float64Array.from({length:256},(t,e)=>{let n=e/255;return n<=0.04045?n/12.92:((n+0.055)/1.055)**2.4});function YR(t,e,n){return`#${[t,e,n].map((r)=>Math.round(r).toString(16).padStart(2,"0")).join("")}`}function JR(t,e){let n=new Uint32Array(256),r=new Float64Array(768),i=Math.max(1,Math.floor(e.w*e.h/400000)),o=0;for(let a=0;a<e.w*e.h;a+=i){let c=((e.y+Math.floor(a/e.w))*t.width+e.x+a%e.w)*4;if((t.data[c+3]??0)>=128){let u=t.data[c]??0,l=t.data[c+1]??0,d=t.data[c+2]??0,f=Math.round(255*Math.sqrt(0.2126*(af[u]??0)+0.7152*(af[l]??0)+0.0722*(af[d]??0)));n[f]=(n[f]??0)+1,r[f*3]=(r[f*3]??0)+u,r[f*3+1]=(r[f*3+1]??0)+l,r[f*3+2]=(r[f*3+2]??0)+d,o++}}let s=0;for(let a=0;a<256&&o>0;a++)if(s+=n[a]??0,s>=o*l0){let c=Math.max(1,n[a]??1);return YR((r[a*3]??0)/c,(r[a*3+1]??0)/c,(r[a*3+2]??0)/c)}return"#ffffff"}function VR(t,e){let n=t.data,r=new Uint8Array(t.width*t.height);for(let i=0,o=0;i<r.length;i++,o+=4){let s=n[o+3];if(s===0)continue;let a=(0.299*n[o]+0.587*n[o+1]+0.114*n[o+2])*e;r[i]=(a>255?255:a)*s/255+0.5}return{width:t.width,height:t.height,data:r}}function m0(t,e,n){let r=Math.max(0,Math.round(t.at.x)),i=Math.max(0,Math.round(t.at.y)),o=Math.min(e,Math.round(t.at.x+t.at.w)),s=Math.min(n,Math.round(t.at.y+t.at.h));if(o<=r||s<=i)return;let a=t.crop.w/t.at.w,c=t.crop.h/t.at.h;return{x0:r,y0:i,x1:o,y1:s,box:{x:t.crop.x+(r-t.at.x)*a,y:t.crop.y+(i-t.at.y)*c,w:(o-r)*a,h:(s-i)*c}}}function Cc(t,e,n,r){let i=new Float32Array(n*r),o=m0(e,n,r);if(o){let s=rw(t,o.box,o.x1-o.x0,o.y1-o.y0);for(let a=o.y0;a<o.y1;a++)i.set(s.data.subarray((a-o.y0)*(o.x1-o.x0),(a-o.y0+1)*(o.x1-o.x0)),a*n+o.x0)}return{width:n,height:r,data:i}}function pf(t,e,n,r){let i=new Uint8Array(n*r*4),o=m0(e,n,r);if(o){let s=o.x1-o.x0,a=As(t,o.box,s,o.y1-o.y0);for(let c=o.y0;c<o.y1;c++)i.set(a.data.subarray((c-o.y0)*s*4,(c-o.y0+1)*s*4),(c*n+o.x0)*4)}return{width:n,height:r,data:i}}function uf(t,e){if(e<=0)return t;let{width:n,height:r}=t,i=[0,1,2,3].map(()=>({width:n,height:r,data:new Float32Array(n*r)}));for(let a=0;a<n*r;a++){let c=t.data[a*4+3]??0;for(let u=0;u<3;u++)i[u].data[a]=(t.data[a*4+u]??0)*c/255;i[3].data[a]=c}let o=i.map((a)=>Ts(a,e).data),s=new Uint8Array(n*r*4);for(let a=0;a<n*r;a++){let c=o[3]?.[a]??0;if(c<=0)continue;for(let u=0;u<3;u++)s[a*4+u]=Math.min(255,Math.max(0,Math.round((o[u]?.[a]??0)*255/c)));s[a*4+3]=Math.min(255,Math.round(c))}return{width:n,height:r,data:s}}function gf(t){let e=zR(t),n,r;return{box:e,clear:Wn(t,e),get ink(){return n??=VR(t,qR(t,e)),n},image:t,get peak(){return r??=JR(t,e),r}}}function p0(t,e,n,r,i){let o=gf(t),{box:s,clear:a,ink:c}=o,u=h0(s,e,n,a),l=Math.min(1,jR/Math.max(s.w,s.h)),d={x:0,y:0,w:Math.round(s.w*l),h:Math.round(s.h*l)},f=r*d.w*u.crop.w/(s.w*u.at.w);if(i==="original")return{coloring:i,figure:uf(As(t,s,d.w,d.h),f),fill:uf(pf(t,u,e,n),r),focus:u.focus,peak:o.peak};let h=Cc(c,{crop:s,at:d,focus:u.focus},d.w,d.h),m=Cc(c,u,e,n);return{coloring:i,figure:Hs(Ts(h,f)),fill:Hs(Ts(m,r)),focus:u.focus}}function ZR(t,e,n,r){let i=et(e),o=et(n),s=new Uint8Array(t.width*t.height*4);for(let a=0;a<t.data.length;a++){let c=(t.data[a]??0)/255*r;for(let u=0;u<3;u++)s[a*4+u]=Math.round((i[u]??0)+((o[u]??0)-(i[u]??0))*c);s[a*4+3]=255}return{width:t.width,height:t.height,data:s}}function QR(t,e,n){let r=et(e),i=new Uint8Array(t.width*t.height*4);for(let o=0;o<t.width*t.height;o++){let s=(t.data[o*4+3]??0)/255*n;for(let a=0;a<3;a++)i[o*4+a]=Math.round((r[a]??0)+((t.data[o*4+a]??0)-(r[a]??0))*s);i[o*4+3]=255}return{width:t.width,height:t.height,data:i}}function g0(t,e,n,r,i,o,s,a="tone"){let{box:c,clear:u,ink:l}=t,d=h0(c,r,i,u),f=Math.round(100*d.at.w/d.crop.w/Math.min(r/c.w,i/c.h)),h=s?.size??"fill",m=h==="fill"?d:{crop:c,at:Ao(c.w,c.h,r,i,h,s?.at??5,!1,h>100?Math.round(d.focus*100):-1),focus:d.focus},g=a==="original"?f0(e,t.peak):n.opacity,b=s?.opacity??g;return{image:a==="original"?QR(uf(pf(t.image,m,r,i),o),e.background,b):ZR(Hs(Ts(Cc(l,m,r,i),o)),e.background,n.color,b),fill:f,opacity:g}}function V(t){return Y(t,"ttheme","backgrounds")}function lf(t){return Y(t,WR)}function vi(t){try{return Io(t,"utf8")}catch{return}}function Ir(t){try{return HR(t)}catch{return[]}}function Ot(t){let e=vi(lf(t));if(e===void 0)return XR(t);let n=JSON.parse(e);if(n.version!==cf)throw Error(`${lf(t)} is version ${n.version} — this ttheme reads version ${cf}`);return n}function _e(t){return t.coloring??"tone"}function bf(t){return{name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,...t.selection?{selection:t.selection}:{},ansi:t.ansi,...t.waived?{waived:t.waived}:{}}}function Ro(t){return{hue:{color:t.backdrop.color,opacity:t.backdrop.opacity},colors:bf(t)}}function Po(t){return t.tone===void 0&&_e(t)==="tone"}function n0(t){return(t.artist??[]).map((e)=>e.replace(/[\s,]+/g,"_")).join(",")}function b0(t,e){let n=e.pictures.findIndex((i)=>i.key===e.active),r=e.pictures[n];return[...r.artist?.length?[`# by ${n0(r)}`]:[],...r.from?[`# from ${r.from}`]:[],`# image ${r.key} ${n+1}/${e.pictures.length}`,...e.pictures.map((i)=>[`# picture ${i.key} ${i.stem} ${i.fill} ${i.opacity} ${i.artist?.length?n0(i):"-"}`,...i.from?[i.from]:[]].join(" ")),...e.pictures.filter((i)=>_e(i)==="original").map((i)=>`# colors ${i.key} original`),`background-image = ${Y(t,r.fill)}`,"background-image-fit = cover","background-image-position = top-right",`background-image-opacity = ${r.opacity}`,`config-file = ?${r.stem}.tune.conf`,`config-file = ?${r.stem}.off.conf`,""].join(`
244
- `)}function w0(t){let e=V(t);for(let[n,r]of Object.entries(Ot(e).palettes)){let i=Y(e,`${oe(n)}.conf`),o=b0(e,r);if(vi(i)!==o)F(i,o)}}function Si(t,e,n){F(lf(t),`${JSON.stringify(e,null,2)}
245
- `);for(let r of n){let i=e.palettes[r],o=Y(t,`${oe(r)}.conf`);if(i)F(o,b0(t,i));else Oo(o,{force:!0})}}function $0(t,e){let n=V(t),r=Ot(n),i=[];for(let[o,s]of e){let a=r.palettes[o];if(a&&!r.palettes[s])r.palettes[s]=a,delete r.palettes[o],i.push(o,s)}if(i.length>0)Si(n,r,i)}function k0(t,e){return Ir(t).filter((n)=>n.startsWith(`${e}.`)||n.startsWith(`${e}@`))}function wf(t,e){for(let n of k0(t,e))Oo(Y(t,n),{force:!0})}function y0(t,e){wf(t,e.stem);for(let n of[e.original,e.cut])if(n)Oo(Y(t,n),{force:!0})}function r0(t,e,n,r){let i=u0(/^background-image\s*=\s*(.*?)\s*$/m.exec(e??"")?.[1]??"");if(!i.startsWith(`${t}.`)||!/^\.[0-9a-f]{8}@fill-\d+\.png$/.test(i.slice(t.length)))return;let o=i.slice(0,i.indexOf("@")),s=r??/^# image (\S+)$/m.exec(e??"")?.[1]??`picture_${o.slice(t.length+1)}`,a=/^# from (.+)$/m.exec(e??"")?.[1],c=Number(/^background-image-opacity\s*=\s*(\S+)/m.exec(e??"")?.[1]??1),u=n.find((l)=>l.startsWith(`${t}-${s}.`));return{key:s,stem:o,fill:i,opacity:Number.isFinite(c)?c:1,...a?{from:a}:{},...u?{original:Y(Lc,u)}:{}}}function i0(t,e){if(hf(t))c0(t,e)}function XR(t){let e={version:cf,palettes:{}};if(!hf(t))return e;let n=Ir(Y(t,Lc)),r=Ir(t).filter((o)=>o.endsWith(".conf")&&o!=="shown.conf"&&!/\.(tune|off)\.conf$/.test(o)).map((o)=>o.slice(0,-5)),i=Y(t,UR);for(let o of new Set([...r,...Ir(i)])){let s=[],a=r0(o,vi(Y(t,`${o}.conf`)),n);if(a)i0(Y(t,`${o}.tune.conf`),Y(t,`${a.stem}.tune.conf`)),i0(Y(t,`${o}.off.conf`),Y(t,`${a.stem}.off.conf`)),s.push(a);for(let c of Ir(Y(i,o))){let u=Y(i,o,c),l=r0(o,vi(Y(u,".conf")),n,c);if(!l)continue;for(let d of Ir(u)){let f=d===".tune.conf"||d===".off.conf"?`${l.stem}${d}`:`${o}${d}`;if(d!==".conf")c0(Y(u,d),Y(t,f))}Oo(u,{recursive:!0}),s.push(l)}if(Ir(Y(i,o)).length===0)Oo(Y(i,o),{recursive:!0,force:!0});if(s.length>0)s.sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0),e.palettes[o]={active:(a??s[0]).key,pictures:s}}if(Ir(i).length===0)Oo(i,{recursive:!0,force:!0});return Si(t,e,Object.keys(e.palettes)),e}function o0(t,e,n){return e.startsWith("~/")?Y(n,e.slice(2)):LR(e)?e:Y(t,e)}function Oe(t,e,n){let r=new Map,i=(a,c)=>{let u=vi(a);if(u===void 0)return!1;for(let l of u.split(`
246
- `)){let d=/^([a-z-]+)\s*=\s*(.*?)\s*$/.exec(l);if(d?.[1]==="config-file"&&c<4)i(o0(t,d[2].replace(/^\?/,""),n),c+1);else if(d&&/^background-image(?:-fit|-opacity|-position)?$/.test(d[1]))r.set(d[1],d[2])}return!0};if(!i(Y(t,`${oe(e)}.conf`),0))return;let o=r.get("background-image")??"";if(o==="")return;let s=Number(r.get("background-image-opacity")??1);return{image:o0(t,o,n),opacity:Number.isFinite(s)?s:1,cover:r.get("background-image-fit")==="cover",position:r.get("background-image-position")??"center"}}function se(t){return`${t.site}_${t.id}`}function Fc(t,e,n){let r=V(t),i=Ot(r),o=i.palettes[e];if(!o)throw Error(`${e} has no image`);let s=o.pictures.findIndex((u)=>u.key===(n??o.active));if(s===-1)throw Error(`${e} has no picture ${n}`);let[a]=o.pictures.splice(s,1);y0(r,a);let c=o.pictures[s%Math.max(o.pictures.length,1)];if(!c)delete i.palettes[e];else if(a.key===o.active)o.active=c.key;return Si(r,i,[e]),{key:a.key,left:o.pictures.length}}function v0(t,e,n,r){let i=n.coloring==="original"?je(n.figure):mi(n.figure,r),o=n.coloring==="original"?je(n.fill):mi(n.fill,r),s=`${oe(t)}.${a0("sha1").update(e).update(i).update(o).digest("hex").slice(0,8)}`,a=`${s}@fill-${Math.round(n.focus*100)}.png`;return{stem:s,fill:a,files:[[`${s}.png`,i],[a,o]]}}function S0(t,e,n,r){return n==="original"&&r?{coloring:"original",opacity:f0(t,r),peak:r}:{coloring:"tone",opacity:e.opacity,tone:e.color}}function df(t,e){return Y(Lc,`${oe(t)}-${e}`)}function $f(t,e){return e.map(([n,r])=>{let i=Y(t,n);return F(i,r),i})}function jc(t,e,n,r,i,o,s,a="tone"){let c=V(t),u=e.name,l=se(i),d=Ot(c),f=d.palettes[u]??{active:l,pictures:[]},h=mf(o.width,o.height),m=p0(r,h.width,h.height,s,a),g=v0(u,l,m,n.color),b=df(u,l),w={key:l,stem:g.stem,fill:g.fill,...S0(e,n,m.coloring,m.coloring==="original"?m.peak:void 0),blur:s,window:h,...i.from?{from:i.from}:{},...i.artist?.length?{artist:i.artist}:{},...i.source?{source:i.source}:{},original:`${b}.${i.ext}`,...i.cut?{cut:`${b}.cut.png`}:{}},k=f.pictures.find((S)=>S.key===l);if(k)y0(c,k);TR(Y(c,Lc),{recursive:!0});let v=$f(c,[...g.files,[w.original,i.bytes],...w.cut?[[w.cut,Ud(hi(r))]]:[]]);return f.pictures=k?f.pictures.map((S)=>S===k?w:S):[...f.pictures,w],f.active=l,d.palettes[u]=f,Si(c,d,[u]),[...v,Y(c,`${oe(u)}.conf`)]}function No(t,e,n){let r=V(t),i=Ot(r),o=i.palettes[e],s=o?o.pictures.findIndex((a)=>a.key===n):-1;if(!o||s===-1)throw Error(`${e} has no picture ${n}`);if(o.active!==n)o.active=n,Si(r,i,[e]);return{at:s+1,of:o.pictures.length}}function fe(t,e){let n=Ot(V(t)).palettes[e];if(!n)return[];return[...n.pictures.filter((i)=>i.key===n.active),...n.pictures.filter((i)=>i.key!==n.active)]}var ff="top-right";function Ao(t,e,n,r,i,o,s,a=-1){let c=Math.trunc,u=(o-1)%3,l=c((o-1)/3),d=n*e>=r*t!==!s,f=d?c(i*n/100):c(i*r*t/(100*e)),h=d?c(i*n*e/(100*t)):c(i*r/100),m=c(u*(n-f)/2),g=c(l*(r-h)/2);if(a>=0){if(f>n)m=c((n-f)/2);if(h>r)g=Math.max(r-h,Math.min(0,c(r/2)-c(a*h/100)))}return{x:m,y:g,w:f,h}}function kf(t,e){let n=vi(Y(t,`${e.stem}.tune.conf`));if(n===void 0)return{};let r=(u)=>new RegExp(`^${u}\\s*=\\s*(.*?)\\s*$`,"m").exec(n)?.[1]??"",i=u0(r("background-image")),o=/@(\d+)-/.exec(i)?.[1],s=/@fill-\d+\.png$/.test(i)?"fill":o?Number(o):r("background-image-fit")==="cover"?"fill":100,a=r("background-image-position").replace("center-center","center")||"center",c=Number(r("background-image-opacity")||1);return{...s!=="fill"?{size:s}:{},...a!==ff?{position:a}:{},...Number.isFinite(c)&&c!==e.opacity?{opacity:c}:{}}}function Vs(t,e,n,r,i){let o=n.size??"fill",s=n.position??ff,a=n.opacity??e.opacity;if(o==="fill"&&s===ff&&a===e.opacity)return;let c=Ut.indexOf(s)+1,u=Y(t,`${e.stem}.png`),l=Y(t,e.fill),d=!0,f=typeof o==="number"&&(o>100||!r&&s!=="center");if(o===100&&!f)l=u,d=!1;else if(typeof o==="number"){if(Po(e))throw Error(`${e.stem} was drawn before pictures kept their tone — init draws it again`);let m=jt(new Uint8Array(Io(u))),{width:g,height:b}=f?Js:m,w=f?Number(/@fill-(\d+)\.png$/.exec(e.fill)?.[1]??50):-1,k=Ao(m.width,m.height,g,b,o,c,!1,w);l=Y(t,`${e.stem}@${o}-${s}${f?`-${g}x${b}`:""}.png`);let S={crop:{x:0,y:0,w:m.width,h:m.height},at:k,focus:w};F(l,e.tone?mi(Hs(Cc(hi(m),S,g,b)),e.tone):je(pf(m,S,g,b))),d=f}let h=Y(t,`${e.stem}.tune.conf`);return F(h,[`background-image = ${l.startsWith(`${i}/`)?`~${l.slice(i.length)}`:l}`,`background-image-fit = ${d?"cover":"contain"}`,`background-image-position = ${s}`,`background-image-opacity = ${a}`,""].join(`
247
- `)),h}function E0(t){let e=new Map;for(let[n,r]of Object.entries(Ot(V(t)).palettes)){let[,i,o]=/^([a-z.]+)_(\d+)$/.exec(r.active)??[];if(i&&o)e.set(n,{site:i,id:Number(o)})}return e}function M0(t){try{let e=$n(new Uint8Array(Io(t)));return e?{width:e.width,height:e.height}:void 0}catch{return}}function x0(t,e,n,r,i,o,s){let a=[n.original,n.cut].map((c)=>{if(!c)return"";try{let{size:u,mtimeMs:l}=CR(Y(t,c));return`${c}:${u}:${l}`}catch{return}});if(!n.original||a.includes(void 0))return;return Fw([FR,oe(e),n.key,...a,r.width,r.height,i,o,o==="tone"?s:""])}function tP(t,e,n){if(!n.window||n.blur===void 0)return;let r=x0(t,e,n,n.window,n.blur,_e(n),n.tone??"");if(!r||jw(r))return;try{Xd(r,{stem:n.stem,fill:n.fill,...n.peak?{peak:n.peak}:{},figure:Io(Y(t,`${n.stem}.png`)),picture:Io(Y(t,n.fill))})}catch{}}function O0(t,e,n,r,i,o,s,a,c){let u=c?void 0:x0(t,e,n,r,s,a,o.hue.color),l=u?_w(u):void 0;if(l)return{made:{stem:l.stem,fill:l.fill,files:[[`${l.stem}.png`,l.figure],[l.fill,l.picture]]},peak:l.peak,image:void 0};let d=i();if(!d)return null;let f=p0(d,r.width,r.height,s,a),h=v0(e,n.key,f,o.hue.color),m=f.coloring==="original"?f.peak:void 0;if(u)Xd(u,{stem:h.stem,fill:h.fill,...m?{peak:m}:{},figure:h.files[0]?.[1],picture:h.files[1]?.[1]});return{made:h,peak:m,image:d}}function Zs(t,e,n,r,i,o,s,a,c,u=_e(n)){let l=V(t),d=n.window??M0(Y(l,n.fill))??Js,f=O0(l,e,n,d,r,i,o,u,c);if(!f)return null;let{made:h,peak:m,image:g}=f,b={...n,stem:h.stem,fill:h.fill,...S0(i.colors,i.hue,u,m),blur:o,window:d,...c?{cut:`${df(e,n.key)}.cut.png`}:{}};if(u==="original")delete b.tone;else delete b.peak;if(c&&g)F(Y(l,`${df(e,n.key)}.cut.png`),Ud(hi(g)));if(h.stem===n.stem)return b;if(_e(n)!==u)tP(l,e,n);$f(l,h.files);let w=kf(l,n);Vs(l,b,_e(n)===u?w:{...w,opacity:void 0},s,a);let k=Y(l,`${n.stem}.off.conf`);if(hf(k))AR(k,Y(l,`${b.stem}.off.conf`));return b}function I0(t,e,n,r,i,o,s){let a=V(t),c=n.window??M0(Y(a,n.fill))??Js;return O0(a,e,n,c,r,i,o,s,!1)!==null}function yf(t,e){let n=V(t),r=Ot(n),i=new Set,o=[];for(let{name:s,picture:a}of e){let c=r.palettes[s],u=c?.pictures.findIndex((d)=>d.key===a.key)??-1,l=c?.pictures[u];if(!c||!l)continue;if(c.pictures[u]=a,i.add(s),l.stem!==a.stem)o.push(l.stem)}if(i.size===0)return;Si(n,r,[...i]);for(let s of o)wf(n,s)}function eP(t,e,n,r){let i=k0(t,n.stem).filter((a)=>a.endsWith(".png")).map((a)=>{let c=new Uint8Array(Io(Y(t,a)));return[a,$c(c,r.color)??mi(hi(jt(c)),r.color)]}),o=(a)=>i.find(([c])=>c===a)?.[1]??new Uint8Array,s=`${oe(e)}.${a0("sha1").update(n.key).update(o(`${n.stem}.png`)).update(o(n.fill)).digest("hex").slice(0,8)}`;$f(t,i.map(([a,c])=>[s+a.slice(n.stem.length),c]));for(let a of["tune","off"]){let c=vi(Y(t,`${n.stem}.${a}.conf`));if(c!==void 0)F(Y(t,`${s}.${a}.conf`),c.split(n.stem).join(s))}return{...n,stem:s,fill:s+n.fill.slice(n.stem.length),tone:r.color}}function s0(t,e){return _e(t)!=="original"&&t.tone!==void 0&&t.tone!==e.hue.color}function R0(t,e){let n=V(t),r=Ot(n),i=[],o=[];for(let[s,a]of Object.entries(r.palettes)){let c=e.get(s);if(!c||!a.pictures.some((u)=>s0(u,c)))continue;a.pictures=a.pictures.map((u)=>{if(!s0(u,c))return u;let l=eP(n,s,u,c.hue);if(l.stem!==u.stem)o.push(u.stem);return l}),i.push(s)}if(i.length>0){Si(n,r,i);for(let s of o)wf(n,s)}return i}var vf=1,Sf="npx @kecan0406/ttheme@latest init";class _c extends Error{}function P0(t,e,n){if(typeof t!=="number"||!Number.isInteger(t)||t<1)throw Error(`${e} schema is not a whole number from 1`);if(t>n)throw new _c(`${e} is schema ${t}, newer than the schema ${n} this ttheme reads — \`${Sf}\` updates it`)}function Qe(t){let{slot:e,color:n,opacity:r}=vn({name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi,waived:t.waive},t.signatureSlots);return{name:t.name,...t.base?{base:t.base}:{},group:t.group,...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},...t.lead?{lead:!0}:{},order:t.order,ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},...t.role==="default"?{default:!0}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,signature:t.signature,signatureSlots:t.signatureSlots,ansi:t.ansi,gate:gn(t),...t.waive.length>0?{waived:t.waive}:{},backdrop:{slot:e,color:n,opacity:r},...t.pictures?{pictures:t.pictures}:{}}}function Ie(t){return{name:t.name,...t.base?{base:t.base}:{},group:t.group,...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},lead:t.lead===!0,order:t.order,...t.default?{role:"default"}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selectionBackground:t.selection,ansi:t.ansi,signature:t.signature,signatureSlots:t.signatureSlots,ghostty:{iconGhost:t.cursor,iconScreen:[t.cursor,t.selection,t.background]},waive:t.waived??[],...t.pictures?{pictures:t.pictures}:{}}}var nP=6,rP=["ansi1","ansi2","ansi4","ansi3","ansi5","ansi6"];function Bc(t){let e=(o)=>o.startsWith("ansi")?t.ansi[Number(o.slice(4))]:o==="foreground"?t.foreground:o==="cursor"?t.cursor:o==="selection"?t.selection:void 0,n=(o)=>o.startsWith("ansi")?`ansi${Number(o.slice(4))%8}`:o,r=new Set,i=[];for(let o of["foreground",...t.signatureSlots,...rP]){let s=e(o);if(i.length===nP||!s||r.has(n(o))||i.includes(s))continue;r.add(n(o)),i.push(s)}return i}function It(t){return t.filter((e)=>e.default!==!0)}function Gc(){return{schema:vf,version:At.version,gate:ve,palettes:[]}}import{existsSync as iP,readFileSync as Wc,statSync as N0}from"node:fs";import{homedir as Lo}from"node:os";import{join as Ho}from"node:path";var oP=["core","kowiki","unlicensed"],sP=["ko","ja","en","zh","other"],H0=["keys","keyAt","ownAt","owners","cards","cardAt","ranks","tags","tagAt","tagCard"],C0="TTNI";function Rr(t=Lo()){return Ho(process.env.XDG_CACHE_HOME??Ho(t,".cache"),"ttheme","aninames")}var aP=/[ァ-ヶ]/g,cP=/[\s\p{P}\p{S}]+/gu;function Co(t){return t.normalize("NFKC").toLowerCase().replace(aP,(e)=>String.fromCharCode(e.charCodeAt(0)-96)).replace(cP,"")}function Ei(t,e){let n=Co(e);if(n===""){let r=e.toLowerCase();return t.some((i)=>i.toLowerCase().includes(r))}return t.some((r)=>Co(r).includes(n))}function Of(t){return t.length>=2||/[\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}]/u.test(t)}function L0(t){let e=Rr(t);return oP.map((n)=>Ho(e,`ttheme-${n}.json`)).filter((n)=>iP(n))}var uP=6;function F0(t){return[`format ${uP}`,...t.map((e)=>`${e}:${N0(e).size}:${N0(e).mtimeMs}`)].join("|")}function lP(t){try{return JSON.parse(Wc(t,"utf8"))}catch{return{}}}function dP(t){let e=new Map;for(let i of t)for(let[o,s]of Object.entries(lP(i))){let a=e.get(o)??{tags:new Set,names:[],japanese:[],generated:[],rank:0,weight:0,posts:0};a.posts=Math.max(a.posts,s.posts??0),a.generated.push(...s.generated??[]),a.japanese.push(...s.names?.ja??[]),a.tag??=s.tag;for(let c of s.danbooru??[])a.tags.add(c);for(let c of sP)a.names.push(...s.names?.[c]??[]);if(s.rank!==void 0){let c=s.weight??1;a.rank=(a.rank*a.weight+s.rank*c)/(a.weight+c),a.weight+=c}e.set(o,a)}let n=[],r=Math.log1p([...e.values()].reduce((i,o)=>Math.max(i,o.posts),1));for(let i of e.values()){if(i.tags.size===0)continue;let o=[...i.tags];n.push({tag:i.tag&&i.tags.has(i.tag)?i.tag:o[0],tags:o,names:[...new Set(i.names)],japanese:[...new Set(i.japanese)],generated:[...new Set(i.generated)],rank:i.posts>0?Math.log1p(i.posts)/r:i.rank})}return n}function Qs(t,e){let n=new t(e.length);return n.set(e),n}function Ef(t){let e=[0];for(let n of t)e.push(e.at(-1)+n.length);return{bytes:Buffer.concat(t),at:Qs(Uint32Array,e)}}function fP(t,e){let n=dP(t),r=new Map,i=(v,S,M)=>{let I=r.get(v),O=S*4+M;if(!I)r.set(v,[O]);else if(I.at(-1)>>>2!==S)I.push(O);else if(I.at(-1)<O)I[I.length-1]=O};n.forEach((v,S)=>{let M=[...v.names,...v.tags.map((I)=>I.replaceAll("_"," "))];for(let[I,O]of[[M,1],[v.generated,0]])for(let H of I){let N=Co(H);if(N&&Of(N))i(N,S,2|O);let L=H.split(/[\s・·_]+/);if(L.length<2)continue;for(let K of L){let B=Co(K);if(B&&Of(B))i(B,S,O)}}});let o=[...r.keys()].sort(),s=[0],a=[];for(let v of o){for(let S of r.get(v)??[])a.push(S);s.push(a.length)}let c=n.flatMap((v,S)=>v.tags.map((M)=>[M,S])).sort(([v],[S])=>v<S?-1:v>S?1:0),u=Ef(o.map((v)=>Buffer.from(v))),l=Ef(n.map((v)=>Buffer.from(JSON.stringify([v.tag,v.tags,v.names,v.japanese,v.generated])))),d=Ef(c.map(([v])=>Buffer.from(v))),f={keys:u.bytes,keyAt:u.at,ownAt:Qs(Uint32Array,s),owners:Qs(Uint32Array,a),cards:l.bytes,cardAt:l.at,ranks:Qs(Float32Array,n.map((v)=>v.rank)),tags:d.bytes,tagAt:d.at,tagCard:Qs(Uint32Array,c.map(([,v])=>v))},h=H0.map((v)=>{let S=f[v];return Buffer.from(S.buffer,S.byteOffset,S.byteLength)}),m=0,g=h.map((v)=>{let S=[m,v.length];return m+=Math.ceil(v.length/4)*4,S}),b=Buffer.from(JSON.stringify({stamp:e,sections:g})),w=Math.ceil((8+b.length)/4)*4,k=Buffer.alloc(w+m);k.write(C0,0,"latin1"),k.writeUInt32LE(b.length,4),b.copy(k,8);for(let[v,S]of h.entries())S.copy(k,w+(g[v]?.[0]??0));return k}function A0(t,e,n,r){let i=e.byteOffset+n;if(i%4===0)return new t(e.buffer,i,r/4);return new t(e.buffer.slice(i,i+r),0,r/4)}function T0(t,e){if(t.toString("latin1",0,4)!==C0)return;let n=t.readUInt32LE(4),r=JSON.parse(t.toString("utf8",8,8+n));if(r.stamp!==e)return;let i=Math.ceil((8+n)/4)*4,o=(c)=>{let[u,l]=r.sections[H0.indexOf(c)];return[i+u,l]},s=(c)=>{let[u,l]=o(c);return t.subarray(u,u+l)},a=(c)=>A0(Uint32Array,t,...o(c));return{keys:s("keys"),keyAt:a("keyAt"),ownAt:a("ownAt"),owners:a("owners"),cards:s("cards"),cardAt:a("cardAt"),ranks:A0(Float32Array,t,...o("ranks")),tags:s("tags"),tagAt:a("tagAt"),tagCard:a("tagCard")}}var Mf;function If(t){try{let e=L0(t);if(e.length===0)return;let n=F0(e);if(Mf?.stamp===n)return Mf.index;let r=Ho(Rr(t),"index.bin"),i;try{i=T0(Wc(r),n)}catch{}if(!i){let o=fP(e,n);try{F(r,o)}catch{}i=T0(o,n)}if(i)Mf={stamp:n,index:i};return i}catch{return}}function j0(t,e){let[n,r,i,o,s]=JSON.parse(t.cards.toString("utf8",t.cardAt[e],t.cardAt[e+1]));return{tag:n,tags:r,names:i,japanese:o,generated:s,rank:t.ranks[e]??0}}function _0(t,e,n,r){let i=0,o=n;while(i<o){let s=i+o>>1;if(t.toString("utf8",e[s],e[s+1])<r)i=s+1;else o=s}return i}function B0(t,e){let n=Buffer.from(e),r=t.tagCard.length,i=_0(t.tags,t.tagAt,r,e);if(i>=r||t.tags.compare(n,0,n.length,t.tagAt[i],t.tagAt[i+1])!==0)return;return t.tagCard[i]}var xf=/\s*[((][^()()]*[))]$/u,Uc={ko:4,en:4,ja:5,zh:3};function hP(t){if(!t)return[];let e=/\p{Script=Hangul}/u,n=/^[\p{Script=Latin}\p{N}\s.'’-]+$/u,r=new Set([...t.names,...t.generated].filter((d)=>!xf.test(d))),i=(d)=>!xf.test(d)||!r.has(d.replace(xf,"")),o=t.names.filter(i),s=o.filter((d)=>e.test(d)),a=[...s,...t.generated.slice(0,s.length>0?0:2)],c=o.filter((d)=>n.test(d)),u=t.japanese.filter(i),l=o.filter((d)=>!e.test(d)&&!n.test(d)&&!u.includes(d));return[...new Set([...a.slice(0,Uc.ko),...c.slice(0,Uc.en),...u.slice(0,Uc.ja),...l.slice(0,Uc.zh)])]}var To;function Kc(t,e=Lo()){if(!t)return[];if(!To)try{To=JSON.parse(Wc(Ho(Rr(e),"aliases.json"),"utf8")).tags}catch{To={}}return To[t]??[]}function Rf(t,e=Lo()){try{return mP(t,e)}catch{return new Map}}function mP(t,e){let n=new Map,r=L0(e);if(r.length===0||t.length===0)return n;let i=F0(r),o=Ho(Rr(e),"aliases.json"),s;try{s=JSON.parse(Wc(o,"utf8"))}catch{}if(s?.stamp===i&&t.every((l)=>(l in s.tags))){To=s.tags;for(let l of t)n.set(l,s.tags[l]??[]);return n}let a=If(e);if(!a)return n;let c=new Set([...t,...s?.stamp===i?Object.keys(s.tags):[]]),u={};for(let l of c){let d=B0(a,l);u[l]=d===void 0?[]:hP(j0(a,d))}try{F(o,`${JSON.stringify({stamp:i,tags:u})}
248
- `)}catch{}To=u;for(let l of t)n.set(l,u[l]??[]);return n}function Mi(t,e=Lo()){Rf(t.flatMap((n)=>n.booru?[n.booru]:[]),e)}var pP=0.25,gP=0.1;function G0(t,e,n=new Set,r=Lo()){let i=Co(t);if(!i||!Of(i))return[];let o=If(r);if(!o)return[];let s=Buffer.from(i),a=o.ownAt.length-1,c=new Set([...n].flatMap((l)=>B0(o,l)??[])),u=new Map;for(let l=_0(o.keys,o.keyAt,a,i);l<a;l++){let d=o.keyAt[l],f=o.keyAt[l+1]-d;if(f<s.length||o.keys.compare(s,0,s.length,d,d+s.length)!==0)break;let h=f===s.length;for(let m=o.ownAt[l];m<o.ownAt[l+1];m++){let g=o.owners[m],b=g>>>2,w=h?Math.max(0,(g&2?2:1)-(g&1?0:1)):0,k=(o.ranks[b]??0)+pP*w+(c.has(b)?gP:0);if((u.get(b)?.score??-1)<k)u.set(b,{score:k,key:l})}}return[...u].sort(([,l],[,d])=>d.score-l.score).slice(0,e).map(([l,{key:d}])=>{let f=j0(o,l),h=o.keys.toString("utf8",o.keyAt[d],o.keyAt[d+1]);return{tag:f.tags.find((m)=>n.has(m))??f.tag,name:[...f.names,...f.generated].find((m)=>Co(m).includes(h))??f.tag.replaceAll("_"," ")}})}function zc(t=Lo()){If(t)}import{existsSync as xP,readdirSync as Z0,readFileSync as OP}from"node:fs";import{basename as Q0,join as qc}from"node:path";import{existsSync as bP,readFileSync as U0}from"node:fs";import{homedir as W0}from"node:os";import{isAbsolute as K0,join as xi,resolve as wP}from"node:path";var q="official",_t="ttheme-market.toml",$P="https://www.schemastore.org/ttheme-market.json",z0="https://www.schemastore.org/ttheme-palette.json",D0=["$schema","name","description","owner","renames","force_remove_deleted_palettes","metadata"],q0=["name","email","url"],Fo="ttheme-market",kP=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i,yP=/^[\w.-]{1,100}$/,vP=/^\w[\w.+/-]{0,199}$/;function Dn(t){return xi(t,"ttheme","installed.json")}function Bt(t){return t??[q]}function jo(t){try{let{markets:e}=JSON.parse(U0(Dn(t),"utf8"));return Bt(Array.isArray(e)?e.filter((n)=>typeof n==="string"):void 0)}catch{return[q]}}function ut(t){return K0(t)}function ae(t){return t!==q&&!ut(t)}function Pr(t){let e=t.indexOf("#");return ae(t)&&e>=0?t.slice(0,e):t}function Xs(t){let e=t.indexOf("#");return ae(t)&&e>=0?t.slice(e+1):void 0}function _o(t,e){return Pr(t)===Pr(e)}function Nr(t,e){return!ut(t)&&(e?.[t]??t===q)}function SP(t){return!vP.test(t)||t.includes("..")||t.includes("//")||/(?:[./]|\.lock)$/.test(t)}function Ar(t,e=process.cwd()){if(t===q)return q;if(t==="~"||t.startsWith("~/"))return xi(W0(),t.slice(1));if(t.startsWith(".")||K0(t))return wP(e,t);let[n="",r,...i]=t.split("#"),[o,s,...a]=n.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").split("/");if(!o||!kP.test(o)||!s||!yP.test(s)||a.length>0||i.length>0||r!==void 0&&SP(r))throw Error(`${t} is not a market — give a repository (alice/ttheme-dust, #v1 pins a tag or branch) or a path (./my-market)`);return`${o.toLowerCase()}/${s}${r===void 0?"":`#${r}`}`}function Y0(t){let e=Xs(t)?.split("/").map(encodeURIComponent).join("/")??"HEAD";return`https://codeload.github.com/${Pr(t)}/tar.gz/${e}`}function J0(t){return t.slice(0,t.indexOf("/"))}function Af(t){return xi(t,"ttheme","markets")}function Be(t,e){return xi(Af(t),`${Pr(e).replace("/","--")}.json`)}function Dc(t){return xi(t,"ttheme","market")}function Tf(t,e){return xi(Dc(t),e)}function EP(t,e){if(typeof t!=="string"||typeof e!=="string")return'needs a "name" and an [owner] table whose name is the GitHub handle';return xe(`${t}@${e}/x`)}function ce({owner:t,name:e}){return`${t}@${e}`}function V0({owner:t,name:e}){return`"$schema" = ${JSON.stringify($P)}
242
+ */var Wt=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right"],Zs="Original",XR=1e6,kn="_groups.toml",Qw=3,Xw=8,df="[a-z0-9]+(?:-[a-z0-9]+)*",tP=new RegExp(`^(?:(${df})@(${df})/)?(${df})$`),r0=["background","foreground","cursor","selection"];function ot(t,e){throw Error(`${t}: ${e}`)}function ki(t,e,n){if(typeof n!=="string"||!le(n))ot(t,`${e} must be "#rrggbb" (lowercase), got ${JSON.stringify(n)}`);return n}function Xs(t,e,n){if(typeof n!=="string"||n.length===0)ot(t,`${e} must be a non-empty string`);return n}function oe(t){return t.replace("@","--").replace("/","--")}function F(t){return`ttheme-${oe(t)}`}function ct(t){let e=t.indexOf("/");return e<0?void 0:t.slice(0,e)}function de(t){return t.slice(t.indexOf("/")+1)}function xe(t){let e=tP.exec(t);if(!e)return"takes lowercase letters, digits and single hyphens, as <palette> or <owner>@<market>/<palette>";if((e[1]?.length??0)>39)return"has an owner longer than a GitHub handle can be";return(e[2]?.length??0)>40||(e[3]?.length??0)>40?"is longer than 40 characters":void 0}function ta(t){if(/[\p{Cc}"$`\\]/u.test(t))return"holds a control character, a quote, $, ` or \\";return t.length>80?"is longer than 80 characters":void 0}function Qs(t,e,n){let r=Xs(t,e,n),i=ta(r);if(i)ot(t,`${e} ${JSON.stringify(r)} ${i}`);return r}function t0(t,e,n){let r=Xs(t,e,n),i=xe(r);if(i)ot(t,`${e} "${r}" ${i}`);return r}function Ro(t){return t&&typeof t==="object"?t:{}}function eP(t,e,n){if(e===void 0)return[n.cursor,n.selectionBackground,n.background];let r=Array.isArray(e)?e:[e];if(r.length===0)ot(t,"ghostty.icon_screen must not be empty");return r.map((i,o)=>ki(t,`ghostty.icon_screen[${o}]`,i))}function nP(t,e,n){let r=Ro(e);return{iconGhost:r.icon_ghost===void 0?n.cursor:ki(t,"ghostty.icon_ghost",r.icon_ghost),iconScreen:eP(t,r.icon_screen,n)}}function rP(t){return new Map([...r0.map((e)=>[e,t[e]]),...t.ansi.map((e,n)=>[`ansi${n}`,e])])}function iP(t,e,n){if(!Array.isArray(e)||e.length!==Qw)ot(t,`meta.signature must name exactly ${Qw} palette slots`);let r=rP(n),i=[],o=[];for(let[s,a]of e.entries()){let c=`meta.signature[${s}]`,u=Xs(t,c,a),l=r.get(u);if(l===void 0)ot(t,`${c} ${JSON.stringify(a)} is not a palette slot — use ${r0.join(", ")} or ansi0-ansi15`);i.push(u),o.push(l)}if(new Set(o).size!==o.length)ot(t,"meta.signature slots must resolve to three different colors");return{names:i,colors:o}}function oP(t,e,n,r=!1){if(e===void 0)return;if(!n)ot(t,"meta.booru_sites renames meta.booru per site, so it needs meta.booru");if(!e||typeof e!=="object"||Array.isArray(e))ot(t,'meta.booru_sites must be a table of site = "tag" or site = ["tag", ...]');let i={};for(let[o,s]of Object.entries(e)){let a=V.find((u)=>u.key===o);if(!a){if(r)continue;ot(t,`meta.booru_sites.${o} is not a find site — use ${V.map((u)=>u.key).join(", ")}`)}let c=typeof s==="string"?[s]:Array.isArray(s)?s:void 0;if(!c||c.some((u)=>typeof u!=="string"||u===""||/\s/.test(u)))ot(t,`meta.booru_sites.${o} must be one tag or a list of tags, got ${JSON.stringify(s)}`);if(c.length>1&&!a.ors)ot(t,`meta.booru_sites.${o} takes one tag — ${a.name} does not OR tags`);if(c.length>a.tagBudget)ot(t,`meta.booru_sites.${o} takes ${a.tagBudget} tags at most — ${a.name} searches that many at a time`);i[o]=c}return i}function sP(t,e,n){if(e===void 0)return;if(!Array.isArray(e)||e.length===0||e.length>Xw)ot(t,`[[picture]] holds 1 to ${Xw} pictures`);let r=e.flatMap((i,o)=>{let s=Ro(i),a=`picture[${o}]`,c=V.find((h)=>h.key===s.site);if(!c){if(n)return[];ot(t,`${a}.site must be one of ${V.map((h)=>h.key).join(", ")}`)}if(typeof s.id!=="number"||!Number.isSafeInteger(s.id)||s.id<=0)ot(t,`${a}.id must be the post's number on ${c.name}`);let{size:u,position:l,opacity:d}=s;if(u!==void 0&&u!=="fill"&&!(Number.isInteger(u)&&Number(u)>=20&&Number(u)<=999))ot(t,`${a}.size must be "fill" or a percentage from 20 to 999`);let f=l===void 0||Wt.includes(l);if(!f&&!n)ot(t,`${a}.position must be one of ${Wt.join(", ")}`);if(d!==void 0&&!(typeof d==="number"&&d>=0&&d<=1))ot(t,`${a}.opacity must be a number from 0 to 1`);return[{site:c.key,id:s.id,...u!==void 0?{size:u}:{},...l!==void 0&&f?{position:l}:{},...d!==void 0?{opacity:d}:{}}]});return r.length>0?r:void 0}function hf(t,e){try{return $i(e)}catch(n){ot(t,`is not valid TOML — ${(n instanceof Error?n.message:String(n)).split(`
243
+ `)[0]}`)}}function aP(t){let n=hf(kn,e0(n0(t,kn),"utf8")).group;if(!Array.isArray(n)||n.length===0)ot(kn,"needs at least one [[group]] table");return n.map((r)=>{let i=Ro(r);return{name:Qs(kn,"group.name",i.name),native:i.native===void 0?void 0:Qs(kn,"group.native",i.native),lead:Xs(kn,"group.lead",i.lead)}})}function cP(t,e){if(!Array.isArray(e)||e.length===0)ot(t,'meta.native_names must be a list of names, like ["後藤ひとり"]');return e.map((n,r)=>{let i=Qs(t,`meta.native_names[${r}]`,n);if(i.includes("|"))ot(t,`meta.native_names[${r}] ${JSON.stringify(i)} contains |`);return i})}var ff={"":["$schema","meta","colors","contrast","ghostty","picture"],meta:["name","base","group","ansi_source","booru","booru_sites","native_names","signature","order","role"],colors:["background","foreground","cursor","selection_background","ansi"],contrast:["waive","reason"],ghostty:["icon_ghost","icon_screen"],picture:["site","id","size","position","opacity"]};function i0(t,e){let n=hf(t,e),r=(i,o,s=[])=>o&&typeof o==="object"&&!Array.isArray(o)?Object.keys(o).filter((a)=>!s.includes(a)).map((a)=>i?`${i}.${a}`:a):[];return[...r("",n,ff[""]),...["meta","colors","contrast","ghostty"].flatMap((i)=>r(i,n[i],ff[i])),...(Array.isArray(n.picture)?n.picture:[]).flatMap((i,o)=>r(`picture[${o}]`,i,ff.picture))]}function mf(t,e,n){let r=hf(t,e),i=Ro(r.meta),o=Ro(r.colors),s=Ro(r.contrast),a=o.ansi;if(!Array.isArray(a)||a.length!==16)ot(t,`colors.ansi must hold exactly 16 colors, got ${Array.isArray(a)?a.length:typeof a}`);let c=t0(t,"meta.name",i.name);if(c!==n.name)ot(t,`meta.name "${c}" does not match its file — it lives at ${n.name}`);let u=n.open===!0;for(let j of["order","role"])if(u&&i[j]!==void 0)ot(t,`meta.${j} is for the official palettes — a market palette follows its base`);let l=i.role;if(l!==void 0&&l!=="default")ot(t,`meta.role must be "default", got ${JSON.stringify(l)}`);let d=i.base===void 0?void 0:t0(t,"meta.base",i.base);if(d!==void 0&&!u)ot(t,"meta.base is for market palettes");let f=d===void 0?void 0:n.bases?.get(d),h=u&&i.group===void 0?f?.group??Zs:Qs(t,"meta.group",i.group),m=n.groups.get(h);if(!m&&!(u&&(h===Zs||n.open)))ot(t,`meta.group "${h}" has no [[group]] table in ${kn}`);let p=ki(t,"colors.background",o.background),b=ki(t,"colors.foreground",o.foreground),$=ki(t,"colors.cursor",o.cursor),k=ki(t,"colors.selection_background",o.selection_background),v=a.map((j,W)=>ki(t,`colors.ansi[${W}]`,j)),S=iP(t,i.signature,{background:p,foreground:b,cursor:$,selection:k,ansi:v}),M=i.booru===void 0?void 0:Xs(t,"meta.booru",i.booru);if(M!==void 0&&/[\s\p{Cc}]/u.test(M))ot(t,`meta.booru must be a single booru tag, got ${JSON.stringify(M)}`);let I=oP(t,i.booru_sites,M,n.foreign===!0),x=i.native_names===void 0?void 0:cP(t,i.native_names),H=Array.isArray(s.waive)?s.waive.map(String):[];if(H.length>0&&typeof s.reason!=="string")ot(t,"contrast.waive needs a contrast.reason explaining why");let N=sP(t,r.picture,n.foreign===!0);return{name:c,...d?{base:d}:{},group:h,native:m?.native,...x?{nativeNames:x}:{},lead:!u&&m?.lead===c,order:u?f?.order??XR:Number(i.order),role:l,ansiSource:u&&i.ansi_source===void 0?d??"original":Qs(t,"meta.ansi_source",i.ansi_source),...M?{booru:M}:{},...I?{booruSites:I}:{},background:p,foreground:b,cursor:$,selectionBackground:k,ansi:v,signature:S.colors,signatureSlots:S.names,ghostty:nP(t,r.ghostty,{background:p,cursor:$,selectionBackground:k}),waive:H,waiveReason:typeof s.reason==="string"?s.reason:void 0,...N?{pictures:N}:{}}}function o0(t){let e=aP(t),n=new Map(e.map((o)=>[o.name,o]));if(n.size!==e.length)ot(kn,"group.name must be unique");let r=ZR(t).filter((o)=>o.endsWith(".toml")&&!o.startsWith("_")).map((o)=>mf(o,e0(n0(t,o),"utf8"),{name:QR(o,".toml"),groups:n})).sort((o,s)=>o.order-s.order);if(new Set(r.map((o)=>o.order)).size!==r.length)throw Error("themes: meta.order must be unique across all themes");for(let o of e){let s=r.filter((a)=>a.group===o.name);if(s.length===0)ot(kn,`group "${o.name}" has no themes`);if(!s.some((a)=>a.name===o.lead))ot(kn,`group "${o.name}" lead "${o.lead}" is not one of its themes`)}return r}function s0(t){return t.filter((e)=>e.role===void 0)}function yi(t){let e=(r,i)=>r<i?-1:r>i?1:0,n=(r)=>ct(r.name)?r.name:r.base??r.name;return[...t].sort((r,i)=>Number(ct(r.name)!==void 0)-Number(ct(i.name)!==void 0)||e(r.group.toLowerCase(),i.group.toLowerCase())||Number(r.catalog===void 0)-Number(i.catalog===void 0)||e((r.catalog??"").toLowerCase(),(i.catalog??"").toLowerCase())||e(n(r),n(i))||Number(r.base!==void 0)-Number(i.base!==void 0)||e(r.name,i.name))}var ea={width:2560,height:1550},mP=1,pP=2560,gP=0.1,b0=0.99,bP=2,vi={tall:1.15,reach:0.4,widest:0.95,headroom:0.04,margin:0.03,stands:12},wP=St(bt("#19161e","#9b86c8",0.2)),$P="shelf",Uc="originals",kP="images.json",gf=1;function yP(t,e){if(e==="background"||e==="foreground"||e==="cursor")return t[e];if(e==="selection"&&t.selection)return t.selection;let n=/^ansi(\d|1[0-5])$/.exec(e),r=n?t.ansi[Number(n[1])]:void 0;if(!r)throw Error(`${t.name} has no slot ${e}`);return r}function a0(t){if(t(1))return 1;let e=0,n=1;for(let r=0;r<40;r++){let i=(e+n)/2;if(t(i))e=i;else n=i}return e}function w0(t,e){let n=(s)=>Qg({name:t.name,background:bt(t.background,e,s),foreground:t.foreground,ansi:t.ansi,waive:t.waived??[]}).map((a)=>a.rule),r=new Set(n(0)),i=a0((s)=>n(s).every((a)=>r.has(a))),o=a0((s)=>St(bt(t.background,e,s))<=wP);return{cap:i,matched:o,opacity:Math.floor(Math.min(i,o)*100)/100}}function c0(t,e){let n=yP(t,e),{cap:r,matched:i,opacity:o}=w0(t,n),s=nt(t.background),a=Math.hypot(...nt(n).map((c,u)=>(c-(s[u]??0))*o));return{slot:e,color:n,cap:r,matched:i,opacity:o,reach:a}}function $0(t,e){return w0(t,e).opacity}function yn(t,e){let n=c0(t,"cursor");if(n.opacity>=gP)return n;return e.filter((r)=>r!=="cursor"&&r!=="background").map((r)=>c0(t,r)).reduce((r,i)=>i.reach>r.reach?i:r,n)}function vP(t){return sw(t)??{x:0,y:0,w:t.width,h:t.height}}function vf(t,e){if(t<=0||e<=0)return ea;let n=Math.min(1,ea.width/Math.max(t,e));return{width:Math.round(t*n),height:Math.round(e*n)}}function k0(t,e,n,r){if(r<vi.stands){let c=t.w*n>t.h*e?{x:t.x+(t.w-t.h*e/n)/2,y:t.y,w:t.h*e/n,h:t.h}:{x:t.x,y:t.y,w:t.w,h:t.w*n/e};return{crop:c,at:{x:0,y:0,w:e,h:n},focus:(c.y-t.y+c.h/2)/t.h}}let i=Math.max(vi.tall*n,vi.reach*e*t.h/t.w),o=i*t.w/t.h;if(o>vi.widest*e)o=vi.widest*e,i=o*t.h/t.w;let s=vi.headroom*n,a=Math.min(1,(n-s)/i);return{crop:{x:t.x,y:t.y,w:t.w,h:t.h*a},at:{x:e*(1-vi.margin)-o,y:s,w:o,h:i*a},focus:Math.min(1,(n/2-s)/i)}}function SP(t,e){return 0.299*(t[e]??0)+0.587*(t[e+1]??0)+0.114*(t[e+2]??0)}function EP(t,e){let n=new Uint32Array(256),r=Math.max(1,Math.floor(e.w*e.h/400000)),i=0;for(let s=0;s<e.w*e.h;s+=r){let a=((e.y+Math.floor(s/e.w))*t.width+e.x+s%e.w)*4;if((t.data[a+3]??0)>=128){let c=Math.round(SP(t.data,a));n[c]=(n[c]??0)+1,i++}}let o=0;for(let s=0;s<256&&i>0;s++)if(o+=n[s]??0,o>=i*b0)return Math.min(bP,Math.max(1,255/Math.max(1,s)));return 1}var pf=Float64Array.from({length:256},(t,e)=>{let n=e/255;return n<=0.04045?n/12.92:((n+0.055)/1.055)**2.4});function MP(t,e,n){return`#${[t,e,n].map((r)=>Math.round(r).toString(16).padStart(2,"0")).join("")}`}function xP(t,e){let n=new Uint32Array(256),r=new Float64Array(768),i=Math.max(1,Math.floor(e.w*e.h/400000)),o=0;for(let a=0;a<e.w*e.h;a+=i){let c=((e.y+Math.floor(a/e.w))*t.width+e.x+a%e.w)*4;if((t.data[c+3]??0)>=128){let u=t.data[c]??0,l=t.data[c+1]??0,d=t.data[c+2]??0,f=Math.round(255*Math.sqrt(0.2126*(pf[u]??0)+0.7152*(pf[l]??0)+0.0722*(pf[d]??0)));n[f]=(n[f]??0)+1,r[f*3]=(r[f*3]??0)+u,r[f*3+1]=(r[f*3+1]??0)+l,r[f*3+2]=(r[f*3+2]??0)+d,o++}}let s=0;for(let a=0;a<256&&o>0;a++)if(s+=n[a]??0,s>=o*b0){let c=Math.max(1,n[a]??1);return MP((r[a*3]??0)/c,(r[a*3+1]??0)/c,(r[a*3+2]??0)/c)}return"#ffffff"}function OP(t,e){let n=t.data,r=new Uint8Array(t.width*t.height);for(let i=0,o=0;i<r.length;i++,o+=4){let s=n[o+3];if(s===0)continue;let a=(0.299*n[o]+0.587*n[o+1]+0.114*n[o+2])*e;r[i]=(a>255?255:a)*s/255+0.5}return{width:t.width,height:t.height,data:r}}function y0(t,e,n){let r=Math.max(0,Math.round(t.at.x)),i=Math.max(0,Math.round(t.at.y)),o=Math.min(e,Math.round(t.at.x+t.at.w)),s=Math.min(n,Math.round(t.at.y+t.at.h));if(o<=r||s<=i)return;let a=t.crop.w/t.at.w,c=t.crop.h/t.at.h;return{x0:r,y0:i,x1:o,y1:s,box:{x:t.crop.x+(r-t.at.x)*a,y:t.crop.y+(i-t.at.y)*c,w:(o-r)*a,h:(s-i)*c}}}function Gc(t,e,n,r){let i=new Float32Array(n*r),o=y0(e,n,r);if(o){let s=lw(t,o.box,o.x1-o.x0,o.y1-o.y0);for(let a=o.y0;a<o.y1;a++)i.set(s.data.subarray((a-o.y0)*(o.x1-o.x0),(a-o.y0+1)*(o.x1-o.x0)),a*n+o.x0)}return{width:n,height:r,data:i}}function Sf(t,e,n,r){let i=new Uint8Array(n*r*4),o=y0(e,n,r);if(o){let s=o.x1-o.x0,a=js(t,o.box,s,o.y1-o.y0);for(let c=o.y0;c<o.y1;c++)i.set(a.data.subarray((c-o.y0)*s*4,(c-o.y0+1)*s*4),(c*n+o.x0)*4)}return{width:n,height:r,data:i}}function bf(t,e){if(e<=0)return t;let{width:n,height:r}=t,i=[0,1,2,3].map(()=>({width:n,height:r,data:new Float32Array(n*r)}));for(let a=0;a<n*r;a++){let c=t.data[a*4+3]??0;for(let u=0;u<3;u++)i[u].data[a]=(t.data[a*4+u]??0)*c/255;i[3].data[a]=c}let o=i.map((a)=>_s(a,e).data),s=new Uint8Array(n*r*4);for(let a=0;a<n*r;a++){let c=o[3]?.[a]??0;if(c<=0)continue;for(let u=0;u<3;u++)s[a*4+u]=Math.min(255,Math.max(0,Math.round((o[u]?.[a]??0)*255/c)));s[a*4+3]=Math.min(255,Math.round(c))}return{width:n,height:r,data:s}}function Ef(t){let e=vP(t),n,r;return{box:e,clear:Wn(t,e),get ink(){return n??=OP(t,EP(t,e)),n},image:t,get peak(){return r??=xP(t,e),r}}}function v0(t,e,n,r,i){let o=Ef(t),{box:s,clear:a,ink:c}=o,u=k0(s,e,n,a),l=Math.min(1,pP/Math.max(s.w,s.h)),d={x:0,y:0,w:Math.round(s.w*l),h:Math.round(s.h*l)},f=r*d.w*u.crop.w/(s.w*u.at.w);if(i==="original")return{coloring:i,figure:bf(js(t,s,d.w,d.h),f),fill:bf(Sf(t,u,e,n),r),focus:u.focus,peak:o.peak};let h=Gc(c,{crop:s,at:d,focus:u.focus},d.w,d.h),m=Gc(c,u,e,n);return{coloring:i,figure:Bs(_s(h,f)),fill:Bs(_s(m,r)),focus:u.focus}}function IP(t,e,n,r){let i=nt(e),o=nt(n),s=new Uint8Array(t.width*t.height*4);for(let a=0;a<t.data.length;a++){let c=(t.data[a]??0)/255*r;for(let u=0;u<3;u++)s[a*4+u]=Math.round((i[u]??0)+((o[u]??0)-(i[u]??0))*c);s[a*4+3]=255}return{width:t.width,height:t.height,data:s}}function RP(t,e,n){let r=nt(e),i=new Uint8Array(t.width*t.height*4);for(let o=0;o<t.width*t.height;o++){let s=(t.data[o*4+3]??0)/255*n;for(let a=0;a<3;a++)i[o*4+a]=Math.round((r[a]??0)+((t.data[o*4+a]??0)-(r[a]??0))*s);i[o*4+3]=255}return{width:t.width,height:t.height,data:i}}function S0(t,e,n,r,i,o,s,a="tone"){let{box:c,clear:u,ink:l}=t,d=k0(c,r,i,u),f=Math.round(100*d.at.w/d.crop.w/Math.min(r/c.w,i/c.h)),h=s?.size??"fill",m=h==="fill"?d:{crop:c,at:Co(c.w,c.h,r,i,h,s?.at??5,!1,h>100?Math.round(d.focus*100):-1),focus:d.focus},p=a==="original"?$0(e,t.peak):n.opacity,b=s?.opacity??p;return{image:a==="original"?RP(bf(Sf(t.image,m,r,i),o),e.background,b):IP(Bs(_s(Gc(l,m,r,i),o)),e.background,n.color,b),fill:f,opacity:p}}function Z(t){return Y(t,"ttheme","backgrounds")}function wf(t){return Y(t,kP)}function Si(t){try{return No(t,"utf8")}catch{return}}function xr(t){try{return dP(t)}catch{return[]}}function Rt(t){let e=Si(wf(t));if(e===void 0)return PP(t);let n=JSON.parse(e);if(n.version!==gf)throw Error(`${wf(t)} is version ${n.version} — this ttheme reads version ${gf}`);return n}function je(t){return t.coloring??"tone"}function Mf(t){return{name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,...t.selection?{selection:t.selection}:{},ansi:t.ansi,...t.waived?{waived:t.waived}:{}}}function Ao(t){return{hue:{color:t.backdrop.color,opacity:t.backdrop.opacity},colors:Mf(t)}}function To(t){return t.tone===void 0&&je(t)==="tone"}function u0(t){return(t.artist??[]).map((e)=>e.replace(/[\s,]+/g,"_")).join(",")}function E0(t,e){let n=e.pictures.findIndex((i)=>i.key===e.active),r=e.pictures[n];return[...r.artist?.length?[`# by ${u0(r)}`]:[],...r.from?[`# from ${r.from}`]:[],`# image ${r.key} ${n+1}/${e.pictures.length}`,...e.pictures.map((i)=>[`# picture ${i.key} ${i.stem} ${i.fill} ${i.opacity} ${i.artist?.length?u0(i):"-"}`,...i.from?[i.from]:[]].join(" ")),...e.pictures.filter((i)=>je(i)==="original").map((i)=>`# colors ${i.key} original`),`background-image = ${Y(t,r.fill)}`,"background-image-fit = cover","background-image-position = top-right",`background-image-opacity = ${r.opacity}`,`config-file = ?${r.stem}.tune.conf`,`config-file = ?${r.stem}.off.conf`,""].join(`
244
+ `)}function M0(t){let e=Z(t);for(let[n,r]of Object.entries(Rt(e).palettes)){let i=Y(e,`${oe(n)}.conf`),o=E0(e,r);if(Si(i)!==o)L(i,o)}}function Ei(t,e,n){L(wf(t),`${JSON.stringify(e,null,2)}
245
+ `);for(let r of n){let i=e.palettes[r],o=Y(t,`${oe(r)}.conf`);if(i)L(o,E0(t,i));else Po(o,{force:!0})}}function x0(t,e){let n=Z(t),r=Rt(n),i=[];for(let[o,s]of e){let a=r.palettes[o];if(a&&!r.palettes[s])r.palettes[s]=a,delete r.palettes[o],i.push(o,s)}if(i.length>0)Ei(n,r,i)}function O0(t,e){return xr(t).filter((n)=>n.startsWith(`${e}.`)||n.startsWith(`${e}@`))}function xf(t,e){for(let n of O0(t,e))Po(Y(t,n),{force:!0})}function I0(t,e){xf(t,e.stem);for(let n of[e.original,e.cut])if(n)Po(Y(t,n),{force:!0})}function l0(t,e,n,r){let i=g0(/^background-image\s*=\s*(.*?)\s*$/m.exec(e??"")?.[1]??"");if(!i.startsWith(`${t}.`)||!/^\.[0-9a-f]{8}@fill-\d+\.png$/.test(i.slice(t.length)))return;let o=i.slice(0,i.indexOf("@")),s=r??/^# image (\S+)$/m.exec(e??"")?.[1]??`picture_${o.slice(t.length+1)}`,a=/^# from (.+)$/m.exec(e??"")?.[1],c=Number(/^background-image-opacity\s*=\s*(\S+)/m.exec(e??"")?.[1]??1),u=n.find((l)=>l.startsWith(`${t}-${s}.`));return{key:s,stem:o,fill:i,opacity:Number.isFinite(c)?c:1,...a?{from:a}:{},...u?{original:Y(Uc,u)}:{}}}function d0(t,e){if(yf(t))p0(t,e)}function PP(t){let e={version:gf,palettes:{}};if(!yf(t))return e;let n=xr(Y(t,Uc)),r=xr(t).filter((o)=>o.endsWith(".conf")&&o!=="shown.conf"&&!/\.(tune|off)\.conf$/.test(o)).map((o)=>o.slice(0,-5)),i=Y(t,$P);for(let o of new Set([...r,...xr(i)])){let s=[],a=l0(o,Si(Y(t,`${o}.conf`)),n);if(a)d0(Y(t,`${o}.tune.conf`),Y(t,`${a.stem}.tune.conf`)),d0(Y(t,`${o}.off.conf`),Y(t,`${a.stem}.off.conf`)),s.push(a);for(let c of xr(Y(i,o))){let u=Y(i,o,c),l=l0(o,Si(Y(u,".conf")),n,c);if(!l)continue;for(let d of xr(u)){let f=d===".tune.conf"||d===".off.conf"?`${l.stem}${d}`:`${o}${d}`;if(d!==".conf")p0(Y(u,d),Y(t,f))}Po(u,{recursive:!0}),s.push(l)}if(xr(Y(i,o)).length===0)Po(Y(i,o),{recursive:!0,force:!0});if(s.length>0)s.sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0),e.palettes[o]={active:(a??s[0]).key,pictures:s}}if(xr(i).length===0)Po(i,{recursive:!0,force:!0});return Ei(t,e,Object.keys(e.palettes)),e}function f0(t,e,n){return e.startsWith("~/")?Y(n,e.slice(2)):hP(e)?e:Y(t,e)}function Oe(t,e,n){let r=new Map,i=(a,c)=>{let u=Si(a);if(u===void 0)return!1;for(let l of u.split(`
246
+ `)){let d=/^([a-z-]+)\s*=\s*(.*?)\s*$/.exec(l);if(d?.[1]==="config-file"&&c<4)i(f0(t,d[2].replace(/^\?/,""),n),c+1);else if(d&&/^background-image(?:-fit|-opacity|-position)?$/.test(d[1]))r.set(d[1],d[2])}return!0};if(!i(Y(t,`${oe(e)}.conf`),0))return;let o=r.get("background-image")??"";if(o==="")return;let s=Number(r.get("background-image-opacity")??1);return{image:f0(t,o,n),opacity:Number.isFinite(s)?s:1,cover:r.get("background-image-fit")==="cover",position:r.get("background-image-position")??"center"}}function se(t){return`${t.site}_${t.id}`}function Wc(t,e,n){let r=Z(t),i=Rt(r),o=i.palettes[e];if(!o)throw Error(`${e} has no image`);let s=o.pictures.findIndex((u)=>u.key===(n??o.active));if(s===-1)throw Error(`${e} has no picture ${n}`);let[a]=o.pictures.splice(s,1);I0(r,a);let c=o.pictures[s%Math.max(o.pictures.length,1)];if(!c)delete i.palettes[e];else if(a.key===o.active)o.active=c.key;return Ei(r,i,[e]),{key:a.key,left:o.pictures.length}}function R0(t,e,n,r){let i=n.coloring==="original"?Fe(n.figure):pi(n.figure,r),o=n.coloring==="original"?Fe(n.fill):pi(n.fill,r),s=`${oe(t)}.${m0("sha1").update(e).update(i).update(o).digest("hex").slice(0,8)}`,a=`${s}@fill-${Math.round(n.focus*100)}.png`;return{stem:s,fill:a,files:[[`${s}.png`,i],[a,o]]}}function P0(t,e,n,r){return n==="original"&&r?{coloring:"original",opacity:$0(t,r),peak:r}:{coloring:"tone",opacity:e.opacity,tone:e.color}}function $f(t,e){return Y(Uc,`${oe(t)}-${e}`)}function Of(t,e){return e.map(([n,r])=>{let i=Y(t,n);return L(i,r),i})}function Kc(t,e,n,r,i,o,s,a="tone"){let c=Z(t),u=e.name,l=se(i),d=Rt(c),f=d.palettes[u]??{active:l,pictures:[]},h=vf(o.width,o.height),m=v0(r,h.width,h.height,s,a),p=R0(u,l,m,n.color),b=$f(u,l),$={key:l,stem:p.stem,fill:p.fill,...P0(e,n,m.coloring,m.coloring==="original"?m.peak:void 0),blur:s,window:h,...i.from?{from:i.from}:{},...i.artist?.length?{artist:i.artist}:{},...i.source?{source:i.source}:{},original:`${b}.${i.ext}`,...i.cut?{cut:`${b}.cut.png`}:{}},k=f.pictures.find((S)=>S.key===l);if(k)I0(c,k);lP(Y(c,Uc),{recursive:!0});let v=Of(c,[...p.files,[$.original,i.bytes],...$.cut?[[$.cut,Vd(mi(r))]]:[]]);return f.pictures=k?f.pictures.map((S)=>S===k?$:S):[...f.pictures,$],f.active=l,d.palettes[u]=f,Ei(c,d,[u]),[...v,Y(c,`${oe(u)}.conf`)]}function Ho(t,e,n){let r=Z(t),i=Rt(r),o=i.palettes[e],s=o?o.pictures.findIndex((a)=>a.key===n):-1;if(!o||s===-1)throw Error(`${e} has no picture ${n}`);if(o.active!==n)o.active=n,Ei(r,i,[e]);return{at:s+1,of:o.pictures.length}}function fe(t,e){let n=Rt(Z(t)).palettes[e];if(!n)return[];return[...n.pictures.filter((i)=>i.key===n.active),...n.pictures.filter((i)=>i.key!==n.active)]}var kf="top-right";function Co(t,e,n,r,i,o,s,a=-1){let c=Math.trunc,u=(o-1)%3,l=c((o-1)/3),d=n*e>=r*t!==!s,f=d?c(i*n/100):c(i*r*t/(100*e)),h=d?c(i*n*e/(100*t)):c(i*r/100),m=c(u*(n-f)/2),p=c(l*(r-h)/2);if(a>=0){if(f>n)m=c((n-f)/2);if(h>r)p=Math.max(r-h,Math.min(0,c(r/2)-c(a*h/100)))}return{x:m,y:p,w:f,h}}function If(t,e){let n=Si(Y(t,`${e.stem}.tune.conf`));if(n===void 0)return{};let r=(u)=>new RegExp(`^${u}\\s*=\\s*(.*?)\\s*$`,"m").exec(n)?.[1]??"",i=g0(r("background-image")),o=/@(\d+)-/.exec(i)?.[1],s=/@fill-\d+\.png$/.test(i)?"fill":o?Number(o):r("background-image-fit")==="cover"?"fill":100,a=r("background-image-position").replace("center-center","center")||"center",c=Number(r("background-image-opacity")||1);return{...s!=="fill"?{size:s}:{},...a!==kf?{position:a}:{},...Number.isFinite(c)&&c!==e.opacity?{opacity:c}:{}}}function na(t,e,n,r,i){let o=n.size??"fill",s=n.position??kf,a=n.opacity??e.opacity;if(o==="fill"&&s===kf&&a===e.opacity)return;let c=Wt.indexOf(s)+1,u=Y(t,`${e.stem}.png`),l=Y(t,e.fill),d=!0,f=typeof o==="number"&&(o>100||!r&&s!=="center");if(o===100&&!f)l=u,d=!1;else if(typeof o==="number"){if(To(e))throw Error(`${e.stem} was drawn before pictures kept their tone — init draws it again`);let m=_t(new Uint8Array(No(u))),{width:p,height:b}=f?ea:m,$=f?Number(/@fill-(\d+)\.png$/.exec(e.fill)?.[1]??50):-1,k=Co(m.width,m.height,p,b,o,c,!1,$);l=Y(t,`${e.stem}@${o}-${s}${f?`-${p}x${b}`:""}.png`);let S={crop:{x:0,y:0,w:m.width,h:m.height},at:k,focus:$};L(l,e.tone?pi(Bs(Gc(mi(m),S,p,b)),e.tone):Fe(Sf(m,S,p,b))),d=f}let h=Y(t,`${e.stem}.tune.conf`);return L(h,[`background-image = ${l.startsWith(`${i}/`)?`~${l.slice(i.length)}`:l}`,`background-image-fit = ${d?"cover":"contain"}`,`background-image-position = ${s}`,`background-image-opacity = ${a}`,""].join(`
247
+ `)),h}function N0(t){let e=new Map;for(let[n,r]of Object.entries(Rt(Z(t)).palettes)){let[,i,o]=/^([a-z.]+)_(\d+)$/.exec(r.active)??[];if(i&&o)e.set(n,{site:i,id:Number(o)})}return e}function A0(t){try{let e=wn(new Uint8Array(No(t)));return e?{width:e.width,height:e.height}:void 0}catch{return}}function T0(t,e,n,r,i,o,s){let a=[n.original,n.cut].map((c)=>{if(!c)return"";try{let{size:u,mtimeMs:l}=fP(Y(t,c));return`${c}:${u}:${l}`}catch{return}});if(!n.original||a.includes(void 0))return;return Kw([mP,oe(e),n.key,...a,r.width,r.height,i,o,o==="tone"?s:""])}function NP(t,e,n){if(!n.window||n.blur===void 0)return;let r=T0(t,e,n,n.window,n.blur,je(n),n.tone??"");if(!r||zw(r))return;try{cf(r,{stem:n.stem,fill:n.fill,...n.peak?{peak:n.peak}:{},figure:No(Y(t,`${n.stem}.png`)),picture:No(Y(t,n.fill))})}catch{}}function H0(t,e,n,r,i,o,s,a,c){let u=c?void 0:T0(t,e,n,r,s,a,o.hue.color),l=u?Dw(u):void 0;if(l)return{made:{stem:l.stem,fill:l.fill,files:[[`${l.stem}.png`,l.figure],[l.fill,l.picture]]},peak:l.peak,image:void 0};let d=i();if(!d)return null;let f=v0(d,r.width,r.height,s,a),h=R0(e,n.key,f,o.hue.color),m=f.coloring==="original"?f.peak:void 0;if(u)cf(u,{stem:h.stem,fill:h.fill,...m?{peak:m}:{},figure:h.files[0]?.[1],picture:h.files[1]?.[1]});return{made:h,peak:m,image:d}}function ra(t,e,n,r,i,o,s,a,c,u=je(n)){let l=Z(t),d=n.window??A0(Y(l,n.fill))??ea,f=H0(l,e,n,d,r,i,o,u,c);if(!f)return null;let{made:h,peak:m,image:p}=f,b={...n,stem:h.stem,fill:h.fill,...P0(i.colors,i.hue,u,m),blur:o,window:d,...c?{cut:`${$f(e,n.key)}.cut.png`}:{}};if(u==="original")delete b.tone;else delete b.peak;if(c&&p)L(Y(l,`${$f(e,n.key)}.cut.png`),Vd(mi(p)));if(h.stem===n.stem)return b;if(je(n)!==u)NP(l,e,n);Of(l,h.files);let $=If(l,n);na(l,b,je(n)===u?$:{...$,opacity:void 0},s,a);let k=Y(l,`${n.stem}.off.conf`);if(yf(k))uP(k,Y(l,`${b.stem}.off.conf`));return b}function C0(t,e,n,r,i,o,s){let a=Z(t),c=n.window??A0(Y(a,n.fill))??ea;return H0(a,e,n,c,r,i,o,s,!1)!==null}function Rf(t,e){let n=Z(t),r=Rt(n),i=new Set,o=[];for(let{name:s,picture:a}of e){let c=r.palettes[s],u=c?.pictures.findIndex((d)=>d.key===a.key)??-1,l=c?.pictures[u];if(!c||!l)continue;if(c.pictures[u]=a,i.add(s),l.stem!==a.stem)o.push(l.stem)}if(i.size===0)return;Ei(n,r,[...i]);for(let s of o)xf(n,s)}function AP(t,e,n,r){let i=O0(t,n.stem).filter((a)=>a.endsWith(".png")).map((a)=>{let c=new Uint8Array(No(Y(t,a)));return[a,Mc(c,r.color)??pi(mi(_t(c)),r.color)]}),o=(a)=>i.find(([c])=>c===a)?.[1]??new Uint8Array,s=`${oe(e)}.${m0("sha1").update(n.key).update(o(`${n.stem}.png`)).update(o(n.fill)).digest("hex").slice(0,8)}`;Of(t,i.map(([a,c])=>[s+a.slice(n.stem.length),c]));for(let a of["tune","off"]){let c=Si(Y(t,`${n.stem}.${a}.conf`));if(c!==void 0)L(Y(t,`${s}.${a}.conf`),c.split(n.stem).join(s))}return{...n,stem:s,fill:s+n.fill.slice(n.stem.length),tone:r.color}}function h0(t,e){return je(t)!=="original"&&t.tone!==void 0&&t.tone!==e.hue.color}function L0(t,e){let n=Z(t),r=Rt(n),i=[],o=[];for(let[s,a]of Object.entries(r.palettes)){let c=e.get(s);if(!c||!a.pictures.some((u)=>h0(u,c)))continue;a.pictures=a.pictures.map((u)=>{if(!h0(u,c))return u;let l=AP(n,s,u,c.hue);if(l.stem!==u.stem)o.push(u.stem);return l}),i.push(s)}if(i.length>0){Ei(n,r,i);for(let s of o)xf(n,s)}return i}var TP=1;function Qe(t){let{slot:e,color:n,opacity:r}=yn({name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi,waived:t.waive},t.signatureSlots);return{name:t.name,...t.base?{base:t.base}:{},group:t.group,...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},...t.lead?{lead:!0}:{},order:t.order,ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},...t.role==="default"?{default:!0}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,signature:t.signature,signatureSlots:t.signatureSlots,ansi:t.ansi,gate:pn(t),...t.waive.length>0?{waived:t.waive}:{},backdrop:{slot:e,color:n,opacity:r},...t.pictures?{pictures:t.pictures}:{}}}function Ie(t){return{name:t.name,...t.base?{base:t.base}:{},group:t.group,...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},lead:t.lead===!0,order:t.order,...t.default?{role:"default"}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selectionBackground:t.selection,ansi:t.ansi,signature:t.signature,signatureSlots:t.signatureSlots,ghostty:{iconGhost:t.cursor,iconScreen:[t.cursor,t.selection,t.background]},waive:t.waived??[],...t.pictures?{pictures:t.pictures}:{}}}var HP=6,CP=["ansi1","ansi2","ansi4","ansi3","ansi5","ansi6"];function zc(t){let e=(o)=>o.startsWith("ansi")?t.ansi[Number(o.slice(4))]:o==="foreground"?t.foreground:o==="cursor"?t.cursor:o==="selection"?t.selection:void 0,n=(o)=>o.startsWith("ansi")?`ansi${Number(o.slice(4))%8}`:o,r=new Set,i=[];for(let o of["foreground",...t.signatureSlots,...CP]){let s=e(o);if(i.length===HP||!s||r.has(n(o))||i.includes(s))continue;r.add(n(o)),i.push(s)}return i}function Pt(t){return t.filter((e)=>e.default!==!0)}function Dc(){return{schema:TP,version:lt.version,gate:ve,palettes:[]}}import{existsSync as LP,readFileSync as Yc,statSync as F0}from"node:fs";import{homedir as _o}from"node:os";import{join as Fo}from"node:path";var FP=["core","kowiki","unlicensed"],jP=["ko","ja","en","zh","other"],B0=["keys","keyAt","ownAt","owners","cards","cardAt","ranks","tags","tagAt","tagCard"],G0="TTNI";function Or(t=_o()){return Fo(process.env.XDG_CACHE_HOME??Fo(t,".cache"),"ttheme","aninames")}var _P=/[ァ-ヶ]/g,BP=/[\s\p{P}\p{S}]+/gu;function jo(t){return t.normalize("NFKC").toLowerCase().replace(_P,(e)=>String.fromCharCode(e.charCodeAt(0)-96)).replace(BP,"")}function Mi(t,e){let n=jo(e);if(n===""){let r=e.toLowerCase();return t.some((i)=>i.toLowerCase().includes(r))}return t.some((r)=>jo(r).includes(n))}function Tf(t){return t.length>=2||/[\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}]/u.test(t)}function U0(t){let e=Or(t);return FP.map((n)=>Fo(e,`ttheme-${n}.json`)).filter((n)=>LP(n))}var GP=6;function W0(t){return[`format ${GP}`,...t.map((e)=>`${e}:${F0(e).size}:${F0(e).mtimeMs}`)].join("|")}function UP(t){try{return JSON.parse(Yc(t,"utf8"))}catch{return{}}}function WP(t){let e=new Map;for(let i of t)for(let[o,s]of Object.entries(UP(i))){let a=e.get(o)??{tags:new Set,names:[],japanese:[],generated:[],rank:0,weight:0,posts:0};a.posts=Math.max(a.posts,s.posts??0),a.generated.push(...s.generated??[]),a.japanese.push(...s.names?.ja??[]),a.tag??=s.tag;for(let c of s.danbooru??[])a.tags.add(c);for(let c of jP)a.names.push(...s.names?.[c]??[]);if(s.rank!==void 0){let c=s.weight??1;a.rank=(a.rank*a.weight+s.rank*c)/(a.weight+c),a.weight+=c}e.set(o,a)}let n=[],r=Math.log1p([...e.values()].reduce((i,o)=>Math.max(i,o.posts),1));for(let i of e.values()){if(i.tags.size===0)continue;let o=[...i.tags];n.push({tag:i.tag&&i.tags.has(i.tag)?i.tag:o[0],tags:o,names:[...new Set(i.names)],japanese:[...new Set(i.japanese)],generated:[...new Set(i.generated)],rank:i.posts>0?Math.log1p(i.posts)/r:i.rank})}return n}function ia(t,e){let n=new t(e.length);return n.set(e),n}function Pf(t){let e=[0];for(let n of t)e.push(e.at(-1)+n.length);return{bytes:Buffer.concat(t),at:ia(Uint32Array,e)}}function KP(t,e){let n=WP(t),r=new Map,i=(v,S,M)=>{let I=r.get(v),x=S*4+M;if(!I)r.set(v,[x]);else if(I.at(-1)>>>2!==S)I.push(x);else if(I.at(-1)<x)I[I.length-1]=x};n.forEach((v,S)=>{let M=[...v.names,...v.tags.map((I)=>I.replaceAll("_"," "))];for(let[I,x]of[[M,1],[v.generated,0]])for(let H of I){let N=jo(H);if(N&&Tf(N))i(N,S,2|x);let j=H.split(/[\s・·_]+/);if(j.length<2)continue;for(let W of j){let _=jo(W);if(_&&Tf(_))i(_,S,x)}}});let o=[...r.keys()].sort(),s=[0],a=[];for(let v of o){for(let S of r.get(v)??[])a.push(S);s.push(a.length)}let c=n.flatMap((v,S)=>v.tags.map((M)=>[M,S])).sort(([v],[S])=>v<S?-1:v>S?1:0),u=Pf(o.map((v)=>Buffer.from(v))),l=Pf(n.map((v)=>Buffer.from(JSON.stringify([v.tag,v.tags,v.names,v.japanese,v.generated])))),d=Pf(c.map(([v])=>Buffer.from(v))),f={keys:u.bytes,keyAt:u.at,ownAt:ia(Uint32Array,s),owners:ia(Uint32Array,a),cards:l.bytes,cardAt:l.at,ranks:ia(Float32Array,n.map((v)=>v.rank)),tags:d.bytes,tagAt:d.at,tagCard:ia(Uint32Array,c.map(([,v])=>v))},h=B0.map((v)=>{let S=f[v];return Buffer.from(S.buffer,S.byteOffset,S.byteLength)}),m=0,p=h.map((v)=>{let S=[m,v.length];return m+=Math.ceil(v.length/4)*4,S}),b=Buffer.from(JSON.stringify({stamp:e,sections:p})),$=Math.ceil((8+b.length)/4)*4,k=Buffer.alloc($+m);k.write(G0,0,"latin1"),k.writeUInt32LE(b.length,4),b.copy(k,8);for(let[v,S]of h.entries())S.copy(k,$+(p[v]?.[0]??0));return k}function j0(t,e,n,r){let i=e.byteOffset+n;if(i%4===0)return new t(e.buffer,i,r/4);return new t(e.buffer.slice(i,i+r),0,r/4)}function _0(t,e){if(t.toString("latin1",0,4)!==G0)return;let n=t.readUInt32LE(4),r=JSON.parse(t.toString("utf8",8,8+n));if(r.stamp!==e)return;let i=Math.ceil((8+n)/4)*4,o=(c)=>{let[u,l]=r.sections[B0.indexOf(c)];return[i+u,l]},s=(c)=>{let[u,l]=o(c);return t.subarray(u,u+l)},a=(c)=>j0(Uint32Array,t,...o(c));return{keys:s("keys"),keyAt:a("keyAt"),ownAt:a("ownAt"),owners:a("owners"),cards:s("cards"),cardAt:a("cardAt"),ranks:j0(Float32Array,t,...o("ranks")),tags:s("tags"),tagAt:a("tagAt"),tagCard:a("tagCard")}}var Nf;function Hf(t){try{let e=U0(t);if(e.length===0)return;let n=W0(e);if(Nf?.stamp===n)return Nf.index;let r=Fo(Or(t),"index.bin"),i;try{i=_0(Yc(r),n)}catch{}if(!i){let o=KP(e,n);try{L(r,o)}catch{}i=_0(o,n)}if(i)Nf={stamp:n,index:i};return i}catch{return}}function K0(t,e){let[n,r,i,o,s]=JSON.parse(t.cards.toString("utf8",t.cardAt[e],t.cardAt[e+1]));return{tag:n,tags:r,names:i,japanese:o,generated:s,rank:t.ranks[e]??0}}function z0(t,e,n,r){let i=0,o=n;while(i<o){let s=i+o>>1;if(t.toString("utf8",e[s],e[s+1])<r)i=s+1;else o=s}return i}function D0(t,e){let n=Buffer.from(e),r=t.tagCard.length,i=z0(t.tags,t.tagAt,r,e);if(i>=r||t.tags.compare(n,0,n.length,t.tagAt[i],t.tagAt[i+1])!==0)return;return t.tagCard[i]}var Af=/\s*[((][^()()]*[))]$/u,qc={ko:4,en:4,ja:5,zh:3};function zP(t){if(!t)return[];let e=/\p{Script=Hangul}/u,n=/^[\p{Script=Latin}\p{N}\s.'’-]+$/u,r=new Set([...t.names,...t.generated].filter((d)=>!Af.test(d))),i=(d)=>!Af.test(d)||!r.has(d.replace(Af,"")),o=t.names.filter(i),s=o.filter((d)=>e.test(d)),a=[...s,...t.generated.slice(0,s.length>0?0:2)],c=o.filter((d)=>n.test(d)),u=t.japanese.filter(i),l=o.filter((d)=>!e.test(d)&&!n.test(d)&&!u.includes(d));return[...new Set([...a.slice(0,qc.ko),...c.slice(0,qc.en),...u.slice(0,qc.ja),...l.slice(0,qc.zh)])]}var Lo;function Jc(t,e=_o()){if(!t)return[];if(!Lo)try{Lo=JSON.parse(Yc(Fo(Or(e),"aliases.json"),"utf8")).tags}catch{Lo={}}return Lo[t]??[]}function Cf(t,e=_o()){try{return DP(t,e)}catch{return new Map}}function DP(t,e){let n=new Map,r=U0(e);if(r.length===0||t.length===0)return n;let i=W0(r),o=Fo(Or(e),"aliases.json"),s;try{s=JSON.parse(Yc(o,"utf8"))}catch{}if(s?.stamp===i&&t.every((l)=>(l in s.tags))){Lo=s.tags;for(let l of t)n.set(l,s.tags[l]??[]);return n}let a=Hf(e);if(!a)return n;let c=new Set([...t,...s?.stamp===i?Object.keys(s.tags):[]]),u={};for(let l of c){let d=D0(a,l);u[l]=d===void 0?[]:zP(K0(a,d))}try{L(o,`${JSON.stringify({stamp:i,tags:u})}
248
+ `)}catch{}Lo=u;for(let l of t)n.set(l,u[l]??[]);return n}function xi(t,e=_o()){Cf(t.flatMap((n)=>n.booru?[n.booru]:[]),e)}var qP=0.25,YP=0.1;function q0(t,e,n=new Set,r=_o()){let i=jo(t);if(!i||!Tf(i))return[];let o=Hf(r);if(!o)return[];let s=Buffer.from(i),a=o.ownAt.length-1,c=new Set([...n].flatMap((l)=>D0(o,l)??[])),u=new Map;for(let l=z0(o.keys,o.keyAt,a,i);l<a;l++){let d=o.keyAt[l],f=o.keyAt[l+1]-d;if(f<s.length||o.keys.compare(s,0,s.length,d,d+s.length)!==0)break;let h=f===s.length;for(let m=o.ownAt[l];m<o.ownAt[l+1];m++){let p=o.owners[m],b=p>>>2,$=h?Math.max(0,(p&2?2:1)-(p&1?0:1)):0,k=(o.ranks[b]??0)+qP*$+(c.has(b)?YP:0);if((u.get(b)?.score??-1)<k)u.set(b,{score:k,key:l})}}return[...u].sort(([,l],[,d])=>d.score-l.score).slice(0,e).map(([l,{key:d}])=>{let f=K0(o,l),h=o.keys.toString("utf8",o.keyAt[d],o.keyAt[d+1]);return{tag:f.tags.find((m)=>n.has(m))??f.tag,name:[...f.names,...f.generated].find((m)=>jo(m).includes(h))??f.tag.replaceAll("_"," ")}})}function Vc(t=_o()){Hf(t)}import{createHash as iN}from"node:crypto";import{existsSync as oN,readdirSync as r$,readFileSync as sN}from"node:fs";import{basename as i$,join as Xc}from"node:path";import{existsSync as JP,readFileSync as Y0}from"node:fs";import{homedir as J0}from"node:os";import{isAbsolute as V0,join as Oi,resolve as VP}from"node:path";var q="official",Bt="ttheme-market.toml",ZP="https://www.schemastore.org/ttheme-market.json",Z0="https://www.schemastore.org/ttheme-palette.json",Q0=["$schema","name","description","owner","renames","force_remove_deleted_palettes","metadata"],X0=["name","email","url"],Bo="ttheme-market",QP=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i,XP=/^[\w.-]{1,100}$/,tN=/^\w[\w.+/-]{0,199}$/;function Dn(t){return Oi(t,"ttheme","installed.json")}function Gt(t){return t??[q]}function Go(t){try{let{markets:e}=JSON.parse(Y0(Dn(t),"utf8"));return Gt(Array.isArray(e)?e.filter((n)=>typeof n==="string"):void 0)}catch{return[q]}}function Ot(t){return V0(t)}function gt(t){return t!==q&&!Ot(t)}function Ir(t){let e=t.indexOf("#");return gt(t)&&e>=0?t.slice(0,e):t}function oa(t){let e=t.indexOf("#");return gt(t)&&e>=0?t.slice(e+1):void 0}function Uo(t,e){return Ir(t)===Ir(e)}function Rr(t,e){return gt(t)&&(e?.[t]??!1)}function eN(t){return!tN.test(t)||t.includes("..")||t.includes("//")||/(?:[./]|\.lock)$/.test(t)}function Pr(t,e=process.cwd()){if(t===q)return q;if(t==="~"||t.startsWith("~/"))return Oi(J0(),t.slice(1));if(t.startsWith(".")||V0(t))return VP(e,t);let[n="",r,...i]=t.split("#"),[o,s,...a]=n.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").split("/");if(!o||!QP.test(o)||!s||!XP.test(s)||a.length>0||i.length>0||r!==void 0&&eN(r))throw Error(`${t} is not a market — give a repository (alice/ttheme-dust, #v1 pins a tag or branch) or a path (./my-market)`);return`${o.toLowerCase()}/${s}${r===void 0?"":`#${r}`}`}function t$(t){let e=oa(t)?.split("/").map(encodeURIComponent).join("/")??"HEAD";return`https://codeload.github.com/${Ir(t)}/tar.gz/${e}`}function e$(t){return t.slice(0,t.indexOf("/"))}function jf(t){return Oi(t,"ttheme","markets")}function _e(t,e){return Oi(jf(t),`${Ir(e).replace("/","--")}.json`)}function Zc(t){return Oi(t,"ttheme","market")}function _f(t,e){return Oi(Zc(t),e)}function nN(t,e){if(typeof t!=="string"||typeof e!=="string")return'needs a "name" and an [owner] table whose name is the GitHub handle';return xe(`${t}@${e}/x`)}function ae({owner:t,name:e}){return`${t}@${e}`}function n$({owner:t,name:e}){return`"$schema" = ${JSON.stringify(ZP)}
249
249
  name = ${JSON.stringify(e)}
250
250
 
251
251
  [owner]
252
252
  name = ${JSON.stringify(t)}
253
- `}function Nf(t,e,n,r){if(typeof n!=="string"||n===""||/\p{Cc}/u.test(n)||n.length>200)throw Error(`${t}: ${e} must be ${r}`);return n}function Pf(t,e,n){return n===void 0?void 0:Nf(t,e,n,"one line of text, 200 characters at most")}function MP(t,e){if(e===void 0)return{};if(!e||typeof e!=="object"||Array.isArray(e))throw Error(`${t}: [renames] maps an old palette name to its new name, or to false once it is gone`);let n={};for(let[r,i]of Object.entries(e)){if(xe(r)||i!==!1&&(typeof i!=="string"||xe(i)))throw Error(`${t}: renames.${r} must map a palette name to a palette name, or to false`);n[r]=i}return n}function Hf(t,e){let n;try{n=wi(t)}catch(f){throw Error(`${e} is not valid TOML — ${f.message.split(`
254
- `)[0]}`)}let r=Nf(e,"name",n.name,"the market name"),i=n.owner;if(!i||typeof i!=="object"||Array.isArray(i))throw Error(`${e}: owner is a table — [owner] with name = "<GitHub handle>"`);let o=i,s={name:Nf(e,"owner.name",o.name,"the GitHub handle")},a=Pf(e,"owner.email",o.email),c=Pf(e,"owner.url",o.url),u=Pf(e,"description",n.description),l=n.force_remove_deleted_palettes;if(l!==void 0&&typeof l!=="boolean")throw Error(`${e}: force_remove_deleted_palettes must be true or false`);let d=EP(s.name,r);if(d)throw Error(`${e} ${d}`);return{owner:s.name,name:r,about:{...s,...a?{email:a}:{},...c?{url:c}:{}},...u?{description:u}:{},renames:MP(e,n.renames),forceRemove:l===!0}}function Ge(t){let e=xi(t,_t);if(!bP(e))throw Error(`${t} has no ${_t} — \`ttheme market init ${t}\` makes one`);return Hf(U0(e,"utf8"),e)}function nt(t){if(t===q)return"the ttheme catalog";if(!ut(t))return`github.com/${t}`;let e=W0();return t===e||t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}var Sn="tt1:",X0=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)];function Oi(t,e=!0){return jo(t).filter(ut).flatMap((n)=>{try{let r=Ge(n);return[{dir:n,...r,id:ce(r)}]}catch(r){if(e)process.stderr.write(`ttheme: skipping the market at ${n} — ${r.message}
255
- `);return[]}})}function Yc(t){return qc(t,"palettes")}function Cf(t,e){return t<e?-1:t>e?1:0}function Lf(t,e){let n=[],r=[];for(let i of t){let[o,s,a,...c]=i.split("/");if(o!=="palettes"||!s||s.startsWith(".")||c.length>0)continue;if(a===void 0){if(s.endsWith(".toml"))r.push({file:{path:e(i),slug:Q0(s,".toml")},name:s})}else if(a.endsWith(".toml"))n.push({file:{path:e(i),slug:Q0(a,".toml"),catalog:s},name:a})}return n.sort((i,o)=>Cf(i.file.catalog??"",o.file.catalog??"")||Cf(i.name,o.name)),r.sort((i,o)=>Cf(i.name,o.name)),[...n,...r].map(({file:i})=>i)}function Bo(t){let e=Yc(t);if(!xP(e))return[];let n=Z0(e,{withFileTypes:!0}).flatMap((r)=>r.isDirectory()?Z0(qc(e,r.name)).map((i)=>`palettes/${r.name}/${i}`):[`palettes/${r.name}`]);return Lf(n,(r)=>qc(t,r))}function IP(t,e){let n=e.get(t.slug);if(n)return`${t.slug} is also ${n.catalog?`in ${n.catalog}`:"outside a catalog"} — a palette name is used once in a market`;let r=t.catalog===void 0?void 0:Ys(t.catalog);return r?`the catalog folder ${JSON.stringify(t.catalog)} ${r}`:void 0}function Ff(t,e){let n=lt(e);if(!n)throw Error(`${e} is an official palette — yours are named <you>@<market>/<palette>`);let r=Oi(t,!1).find((o)=>o.id===n);if(!r)throw Error(`${n} is not a local market — \`ttheme market add <dir>\` adds the folder that holds it`);let i=de(e);return Bo(r.dir).find((o)=>o.slug===i)?.path??qc(Yc(r.dir),`${i}.toml`)}function RP(t,e,n=!1){let r=new Map;for(let o of e)if(o.group!==zs&&!r.has(o.group)){let s=e.find((a)=>a.group===o.group&&a.lead)?.name??"";r.set(o.group,{name:o.group,...o.native?{native:o.native}:{},lead:s})}let i=new Map(e.filter((o)=>!o.default&&!lt(o.name)).map((o)=>[o.name,{group:o.group,order:o.order}]));return{name:t,groups:r,bases:i,open:!0,...n?{foreign:!0}:{}}}function En(t,e,n,r=!1){let i=de(t),{native:o,...s}=sf(`${i}.toml`,e,RP(i,n,r)),a=lt(t);return{...s,name:t,...a?{group:a,lead:!1}:{}}}function ue(t){return t?(e,n)=>process.stderr.write(`ttheme: skipping ${e} — ${n}
256
- `):()=>{}}function jf(t,e,n,r,i,o=!1){let s=new Map;return t.flatMap((a)=>{try{let c=IP(a,s);if(c)throw Error(c);s.set(a.slug,a);let u=Qe(En(`${n}/${a.slug}`,e(a),r,o));return[a.catalog?{...u,catalog:a.catalog}:u]}catch(c){return i(a.path,c.message),[]}})}function Xe(t,e,n,r=ue(!0)){return jf(Bo(t),(i)=>OP(i.path,"utf8"),e,n,r)}function Jc(t,e,n=!0){return Oi(t,n).flatMap(({dir:r,id:i})=>Xe(r,i,e,ue(n)))}function _f(t,e=t.name,n){return{name:e,...t.base?{base:t.base}:{},...t.group!==zs?{group:t.group}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},signature:t.signatureSlots,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi,...t.waived&&t.waived.length>0?{waive:t.waived,reason:n??"kept from the palette"}:{},...t.pictures?{pictures:t.pictures}:{}}}var xt=(t)=>JSON.stringify(t);function t$(t){return["[[picture]]",`site = ${xt(t.site)}`,`id = ${t.id}`,...t.size===void 0?[]:[`size = ${typeof t.size==="number"?t.size:xt(t.size)}`],...t.position===void 0?[]:[`position = ${xt(t.position)}`],...t.opacity===void 0?[]:[`opacity = ${t.opacity}`]]}function e$(t,e){return e.length===0?t:`${t.replace(/\n*$/,`
253
+ `}function Ff(t,e,n,r){if(typeof n!=="string"||n===""||/\p{Cc}/u.test(n)||n.length>200)throw Error(`${t}: ${e} must be ${r}`);return n}function Lf(t,e,n){return n===void 0?void 0:Ff(t,e,n,"one line of text, 200 characters at most")}function rN(t,e){if(e===void 0)return{};if(!e||typeof e!=="object"||Array.isArray(e))throw Error(`${t}: [renames] maps an old palette name to its new name, or to false once it is gone`);let n={};for(let[r,i]of Object.entries(e)){if(xe(r)||i!==!1&&(typeof i!=="string"||xe(i)))throw Error(`${t}: renames.${r} must map a palette name to a palette name, or to false`);n[r]=i}return n}function Bf(t,e){let n;try{n=$i(t)}catch(f){throw Error(`${e} is not valid TOML — ${f.message.split(`
254
+ `)[0]}`)}let r=Ff(e,"name",n.name,"the market name"),i=n.owner;if(!i||typeof i!=="object"||Array.isArray(i))throw Error(`${e}: owner is a table — [owner] with name = "<GitHub handle>"`);let o=i,s={name:Ff(e,"owner.name",o.name,"the GitHub handle")},a=Lf(e,"owner.email",o.email),c=Lf(e,"owner.url",o.url),u=Lf(e,"description",n.description),l=n.force_remove_deleted_palettes;if(l!==void 0&&typeof l!=="boolean")throw Error(`${e}: force_remove_deleted_palettes must be true or false`);let d=nN(s.name,r);if(d)throw Error(`${e} ${d}`);return{owner:s.name,name:r,about:{...s,...a?{email:a}:{},...c?{url:c}:{}},...u?{description:u}:{},renames:rN(e,n.renames),forceRemove:l===!0}}function Be(t){let e=Oi(t,Bt);if(!JP(e))throw Error(`${t} has no ${Bt} — \`ttheme market init ${t}\` makes one`);return Bf(Y0(e,"utf8"),e)}function tt(t){if(t===q)return"the ttheme catalog";if(!Ot(t))return`github.com/${t}`;let e=J0();return t===e||t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}var Nr="tt2:",Qc=4,o$=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)];function Ii(t,e=!0){return Go(t).filter(Ot).flatMap((n)=>{try{let r=Be(n);return[{dir:n,...r,id:ae(r)}]}catch(r){if(e)process.stderr.write(`ttheme: skipping the market at ${n} — ${r.message}
255
+ `);return[]}})}function tu(t){return Xc(t,"palettes")}function Gf(t,e){return t<e?-1:t>e?1:0}function Uf(t,e){let n=[],r=[];for(let i of t){let[o,s,a,...c]=i.split("/");if(o!=="palettes"||!s||s.startsWith(".")||c.length>0)continue;if(a===void 0){if(s.endsWith(".toml"))r.push({file:{path:e(i),slug:i$(s,".toml")},name:s})}else if(a.endsWith(".toml"))n.push({file:{path:e(i),slug:i$(a,".toml"),catalog:s},name:a})}return n.sort((i,o)=>Gf(i.file.catalog??"",o.file.catalog??"")||Gf(i.name,o.name)),r.sort((i,o)=>Gf(i.name,o.name)),[...n,...r].map(({file:i})=>i)}function Wo(t){let e=tu(t);if(!oN(e))return[];let n=r$(e,{withFileTypes:!0}).flatMap((r)=>r.isDirectory()?r$(Xc(e,r.name)).map((i)=>`palettes/${r.name}/${i}`):[`palettes/${r.name}`]);return Uf(n,(r)=>Xc(t,r))}function aN(t,e){let n=e.get(t.slug);if(n)return`${t.slug} is also ${n.catalog?`in ${n.catalog}`:"outside a catalog"} — a palette name is used once in a market`;let r=t.catalog===void 0?void 0:ta(t.catalog);return r?`the catalog folder ${JSON.stringify(t.catalog)} ${r}`:void 0}function Wf(t,e){let n=ct(e);if(!n)throw Error(`${e} is an official palette — yours are named <you>@<market>/<palette>`);let r=Ii(t,!1).find((o)=>o.id===n);if(!r)throw Error(`${n} is not a local market — \`ttheme market add <dir>\` adds the folder that holds it`);let i=de(e);return Wo(r.dir).find((o)=>o.slug===i)?.path??Xc(tu(r.dir),`${i}.toml`)}function cN(t,e,n=!1){let r=new Map;for(let o of e)if(o.group!==Zs&&!r.has(o.group)){let s=e.find((a)=>a.group===o.group&&a.lead)?.name??"";r.set(o.group,{name:o.group,...o.native?{native:o.native}:{},lead:s})}let i=new Map(e.filter((o)=>!o.default&&!ct(o.name)).map((o)=>[o.name,{group:o.group,order:o.order}]));return{name:t,groups:r,bases:i,open:!0,...n?{foreign:!0}:{}}}function vn(t,e,n,r=!1){let i=de(t),{native:o,...s}=mf(`${i}.toml`,e,cN(i,n,r)),a=ct(t);return{...s,name:t,...a?{group:a,lead:!1}:{}}}function ce(t){return t?(e,n)=>process.stderr.write(`ttheme: skipping ${e} — ${n}
256
+ `):()=>{}}function Kf(t,e,n,r,i,o=!1){let s=new Map;return t.flatMap((a)=>{try{let c=aN(a,s);if(c)throw Error(c);s.set(a.slug,a);let u=Qe(vn(`${n}/${a.slug}`,e(a),r,o));return[a.catalog?{...u,catalog:a.catalog}:u]}catch(c){return i(a.path,c.message),[]}})}function Xe(t,e,n,r=ce(!0)){return Kf(Wo(t),(i)=>sN(i.path,"utf8"),e,n,r)}function eu(t,e,n=!0){return Ii(t,n).flatMap(({dir:r,id:i})=>Xe(r,i,e,ce(n)))}function zf(t,e=t.name,n){return{name:e,...t.base?{base:t.base}:{},...t.group!==Zs?{group:t.group}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},signature:t.signatureSlots,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi,...t.waived&&t.waived.length>0?{waive:t.waived,reason:n??"kept from the palette"}:{},...t.pictures?{pictures:t.pictures}:{}}}var It=(t)=>JSON.stringify(t);function s$(t){return["[[picture]]",`site = ${It(t.site)}`,`id = ${t.id}`,...t.size===void 0?[]:[`size = ${typeof t.size==="number"?t.size:It(t.size)}`],...t.position===void 0?[]:[`position = ${It(t.position)}`],...t.opacity===void 0?[]:[`opacity = ${t.opacity}`]]}function a$(t,e){return e.length===0?t:`${t.replace(/\n*$/,`
257
257
  `)}${e.map((n)=>`
258
- ${t$(n).join(`
258
+ ${s$(n).join(`
259
259
  `)}
260
- `).join("")}`}function Bf(t){let e=[`"$schema" = ${xt(z0)}`,"","[meta]",`name = ${xt(de(t.name))}`,...t.base?[`base = ${xt(t.base)}`]:[],...t.group?[`group = ${xt(t.group)}`]:[],...t.ansiSource?[`ansi_source = ${xt(t.ansiSource)}`]:[],...t.booru?[`booru = ${xt(t.booru)}`]:[],`signature = [${t.signature.map(xt).join(", ")}]`,...t.booruSites?["","[meta.booru_sites]",...Object.entries(t.booruSites).map(([n,r])=>`${n} = [${r.map(xt).join(", ")}]`)]:[],"","[colors]",`background = ${xt(t.background)}`,`foreground = ${xt(t.foreground)}`,`cursor = ${xt(t.cursor)}`,`selection_background = ${xt(t.selection)}`,"ansi = [",...t.ansi.slice(0,8).map((n)=>` ${xt(n)},`),"",...t.ansi.slice(8).map((n)=>` ${xt(n)},`),"]"];if(t.waive&&t.waive.length>0)e.push("","[contrast]",`waive = [${t.waive.map(xt).join(", ")}]`,`reason = ${xt(t.reason??"")}`);for(let n of t.pictures??[])e.push("",...t$(n));return`${e.join(`
260
+ `).join("")}`}function Df(t){let e=[`"$schema" = ${It(Z0)}`,"","[meta]",`name = ${It(de(t.name))}`,...t.base?[`base = ${It(t.base)}`]:[],...t.group?[`group = ${It(t.group)}`]:[],...t.ansiSource?[`ansi_source = ${It(t.ansiSource)}`]:[],...t.booru?[`booru = ${It(t.booru)}`]:[],`signature = [${t.signature.map(It).join(", ")}]`,...t.booruSites?["","[meta.booru_sites]",...Object.entries(t.booruSites).map(([n,r])=>`${n} = [${r.map(It).join(", ")}]`)]:[],"","[colors]",`background = ${It(t.background)}`,`foreground = ${It(t.foreground)}`,`cursor = ${It(t.cursor)}`,`selection_background = ${It(t.selection)}`,"ansi = [",...t.ansi.slice(0,8).map((n)=>` ${It(n)},`),"",...t.ansi.slice(8).map((n)=>` ${It(n)},`),"]"];if(t.waive&&t.waive.length>0)e.push("","[contrast]",`waive = [${t.waive.map(It).join(", ")}]`,`reason = ${It(t.reason??"")}`);for(let n of t.pictures??[])e.push("",...s$(n));return`${e.join(`
261
261
  `)}
262
- `}class n${bytes=[];u8(t){this.bytes.push(t&255)}u16(t){this.u8(t>>8),this.u8(t)}u32(t){this.u16(Math.floor(t/65536)),this.u16(t%65536)}str(t=""){let e=new TextEncoder().encode(t);if(e.length>255)throw Error(`"${t}" is too long to share`);this.u8(e.length),this.bytes.push(...e)}color(t){let e=Number.parseInt(t.slice(1),16);this.u8(e>>16),this.u8(e>>8),this.u8(e)}done(){return Buffer.from(this.bytes).toString("base64url")}}class r${at=0;bytes;constructor(t){this.bytes=t}u8(){let t=this.bytes[this.at++];if(t===void 0)throw Error("the share code is cut short");return t}u16(){return this.u8()*256+this.u8()}u32(){return this.u16()*65536+this.u16()}str(){let t=this.u8(),e=this.bytes.subarray(this.at,this.at+t);if(e.length!==t)throw Error("the share code is cut short");return this.at+=t,new TextDecoder("utf-8",{fatal:!0}).decode(e)}color(){return`#${[this.u8(),this.u8(),this.u8()].map((t)=>t.toString(16).padStart(2,"0")).join("")}`}end(){if(this.at!==this.bytes.length)throw Error("the share code has bytes left over")}}function Gf(t){let e=new n$;e.str(t.name);for(let r of[t.background,t.foreground,t.cursor,t.selection,...t.ansi])e.color(r);for(let r of t.signature)e.u8(X0.indexOf(r));e.str(t.base),e.str(t.group),e.str(t.ansiSource),e.str(t.booru),e.u16((t.waive??[]).reduce((r,i)=>r|1<<Sd.indexOf(i),0)),e.str(t.waive&&t.waive.length>0?t.reason:"");let n=t.pictures??[];e.u8(n.length);for(let r of n)e.u8(J.findIndex((i)=>i.key===r.site)),e.u32(r.id),e.u16(r.size===void 0?0:r.size==="fill"?1:r.size),e.u8(r.position===void 0?0:Ut.indexOf(r.position)+1),e.u16(r.opacity===void 0?0:Math.round(r.opacity*1000)+1);return`${Sn}${e.done()}`}function Uf(t){if(!t.startsWith(Sn))throw Error(`a share code starts with ${Sn}`);let e=t.slice(Sn.length);if(!/^[A-Za-z0-9_-]+$/.test(e))throw Error("the share code holds characters it never uses — was it copied whole?");let n=new r$(new Uint8Array(Buffer.from(e,"base64url"))),r=n.str(),[i,o,s,a,...c]=Array.from({length:20},()=>n.color()),u=[n.u8(),n.u8(),n.u8()].map((k)=>X0[k]??`slot${k}`),l=n.str(),d=n.str(),f=n.str(),h=n.str(),m=n.u16(),g=n.str(),b=Sd.filter((k,v)=>m&1<<v),w=Array.from({length:n.u8()},()=>{let k=J[n.u8()]?.key??"unknown",v=n.u32(),S=n.u16(),M=n.u8(),I=n.u16();return{site:k,id:v,...S===1?{size:"fill"}:S>1?{size:S}:{},...M>0?{position:Ut[M-1]??"unknown"}:{},...I>0?{opacity:(I-1)/1000}:{}}});if(n.end(),![i,o,s,a,...c].every(le))throw Error("the share code holds a color that is not one");return{name:r,...l?{base:l}:{},...d?{group:d}:{},...f?{ansiSource:f}:{},...h?{booru:h}:{},signature:u,background:i,foreground:o,cursor:s,selection:a,ansi:c,...b.length>0?{waive:b,reason:g}:{},...w.length>0?{pictures:w}:{}}}function ta(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi}}function Wf(t,e){let n=t.indexOf("ansi = ["),r=t.indexOf("]",n);if(n<0||r<0)throw Error("no ansi = [...] list to rewrite");let i=0,o=t.slice(n,r).replace(/"#[0-9a-fA-F]{6}"/g,()=>xt(e.ansi[i++]));return[["background",e.background],["foreground",e.foreground],["cursor",e.cursor],["selection_background",e.selection]].reduce((a,[c,u])=>a.replace(new RegExp(`^(${c}\\s*=\\s*)"#[0-9a-fA-F]{6}"`,"m"),(l,d)=>`${d}${xt(u)}`),t.slice(0,n)+o+t.slice(r))}function i$(t,e){return t.replace(/^(signature\s*=\s*)\[[^\]]*\]/m,(n,r)=>`${r}[${e.map(xt).join(", ")}]`)}function ea(t){let e=gn(Ie(t)),n=new Set(t.waived??[]),r=Math.max(...ve.map((i)=>i.label.length));return ve.map((i,o)=>{let s=e[o],a=n.has(i.rule)||Number.isNaN(s)||(i.min===void 0||s>=i.min)&&(i.max===void 0||s<=i.max),c=i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",u=Number.isNaN(s)?"—":Number.isInteger(s)?String(s):s.toFixed(2);return` ${a?"✓":"✗"} ${i.label.padEnd(r)} ${u.padStart(6)} ${c}${n.has(i.rule)?" waived":""}`})}import{existsSync as PP,readFileSync as NP,rmSync as AP}from"node:fs";import{join as TP}from"node:path";var ra=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],HP=1;function o$(t){return TP(t,"ttheme","tone.json")}function s$(t){return ra.includes(t)}function qn(t){let e=o$(t);if(!PP(e))return{};let n;try{n=JSON.parse(NP(e,"utf8"))}catch{return{}}let r=n?.palettes;if(typeof r!=="object"||r===null)return{};let i={};for(let[o,s]of Object.entries(r)){if(typeof s!=="object"||s===null)continue;let a={};for(let[c,u]of Object.entries(s))if(s$(c)&&typeof u==="string"&&le(u.toLowerCase()))a[c]=u.toLowerCase();if(Object.keys(a).length>0)i[o]=a}return i}function Kf(t,e){let n=o$(t),r=Object.fromEntries(Object.entries(e).filter(([,i])=>Object.keys(i).length>0));if(Object.keys(r).length===0){AP(n,{force:!0});return}F(n,`${JSON.stringify({version:HP,palettes:r},null,2)}
263
- `)}function na(t,e){if(e==="background"||e==="foreground"||e==="cursor"||e==="selection")return t[e];return t.ansi[Number(e.slice(4))]}function a$(t){return ra.map((e)=>na(t,e))}function c$(t,e){let n={};return ra.forEach((r,i)=>{let o=e[i].toLowerCase();if(o!==na(t,r).toLowerCase())n[r]=o}),n}function Vc(t,e){if(!e)return t;let n=(u)=>e[u]===void 0||e[u]===na(t,u).toLowerCase();if(ra.every(n))return t;let r=(u)=>e[u]??na(t,u),i={background:r("background"),foreground:r("foreground"),cursor:r("cursor"),selection:r("selection"),ansi:ra.slice(4).map(r)},o=t.signatureSlots.map((u)=>s$(u)?r(u):na(i,u)),s={...t,...i,signature:o},a=Ie(s),c=vn({name:s.name,background:i.background,foreground:i.foreground,cursor:i.cursor,selection:i.selection,ansi:i.ansi,waived:a.waive},s.signatureSlots);return{...s,gate:gn(a),backdrop:c}}function Zc(t,e){return Object.keys(e).length===0?t:t.map((n)=>Vc(n,e[n.name]))}function u$(t,e,n){let r={...t};if(Object.keys(n).length===0)delete r[e];else r[e]=n;return r}function l$(t,e,n){let r=qn(t);if(!Object.keys(r).some((o)=>e.has(o)||n.includes(o)))return;Kf(t,Object.fromEntries(Object.entries(r).filter(([o])=>!n.includes(o)).map(([o,s])=>[e.get(o)??o,s])))}var h$="https://kecan0406.github.io/ttheme/manifest.json",m$=20000;function Re(t){return f$(t,"ttheme","catalog.json")}function Qc(t,e){F(Re(t),`${JSON.stringify(e,null,2)}
264
- `)}function dt(t,e=!0,n){let r=jo(t),i=Re(t),o=Gc();if(r.includes(q))if(n)o=n;else{if(!d$(i))throw Error(`no catalog at ${i} — run \`ttheme init\` first`);o=en(zf(i,"utf8"))}let s=r.filter(ae).flatMap((a)=>LP(t,a,o.palettes,e));return{...o,palettes:[...o.palettes,...s]}}function CP(t){let e;try{e=JSON.parse(t)}catch{throw Error("is not valid JSON")}let n=e?.files;if(!n||typeof n!=="object"||Object.values(n).some((r)=>typeof r!=="string"))throw Error("is not a copy of a market this ttheme fetched — `ttheme update` fetches it again");return{...typeof e?.etag==="string"?{etag:e.etag}:{},files:n}}function tn(t,e){return CP(zf(Be(t,e),"utf8"))}function p$(t,e){return ce({owner:J0(t),name:e.name})}function g$(t,e){let n=e.files[_t];if(n===void 0)throw Error(`${nt(t)} has no ${_t} — \`ttheme market init\` makes one`);return Hf(n,_t)}function Xc(t,e){return p$(t,g$(t,e))}function Yn(t,e,n,r){let i=g$(t,e),o=p$(t,i),s=nt(t),a=new Map(Object.entries(e.files).map(([u,l])=>[`${s}/${u}`,l])),c=Lf(Object.keys(e.files),(u)=>`${s}/${u}`);return{id:o,info:i,entries:jf(c,(u)=>a.get(u.path)??"",o,n,r,!0)}}function LP(t,e,n,r){let i=Be(t,e);if(!d$(i))return[];try{return Yn(e,tn(t,e),n,ue(!1)).entries}catch(o){if(r)process.stderr.write(`ttheme: skipping ${i} — ${o.message}
265
- `);return[]}}function en(t){let e;try{e=JSON.parse(t)}catch{throw Error("catalog is not valid JSON")}let n=e?.schema;if(n===void 0)throw Error("catalog has no schema — `ttheme update` fetches it again");P0(n,"catalog",vf);let r=e;if(typeof r.version!=="string"||!Array.isArray(r.palettes))throw Error("catalog has no version or palettes");for(let i of r.palettes){let o=b$(i);if(o)throw Error(`catalog entry ${JSON.stringify(i?.name)} ${o}`)}return r}function b$(t){if(typeof t?.name!=="string"||!Array.isArray(t.ansi)||t.ansi.length!==16)return"is missing name or its 16 ANSI colors";let e=xe(t.name)??(t.base===void 0?void 0:xe(t.base));if(e)return e;if(![t.background,t.foreground,t.cursor,t.selection,...t.ansi].every((n)=>typeof n==="string"&&le(n)))return'holds a color that is not "#rrggbb"';for(let n of[t.group,t.native??"-",t.catalog??"-",t.ansiSource]){let r=typeof n==="string"?Ys(n):"has a field that is not text";if(r)return r}return}function w$(t){return f$(t,"ttheme","kept.json")}function tu(t,e){F(w$(t),`${JSON.stringify({palettes:e},null,2)}
266
- `)}function Jn(t){try{let{palettes:e}=JSON.parse(zf(w$(t),"utf8"));return Array.isArray(e)?e.filter((n)=>b$(n)===void 0):[]}catch{return[]}}function Go(t,e,n=!0){let r=[...e.palettes,...Jc(t,e.palettes,n)],i=new Set(r.map((o)=>o.name));return{...e,palettes:[...r,...Jn(t).filter((o)=>!i.has(o.name))]}}function Rt(t,e,n=!0){let r=Go(t,e,n);return{...r,palettes:Zc(r.palettes,qn(t))}}function he(t){return Rt(t,dt(t))}class eu extends Error{}class nu extends Error{}async function Df(t,e=m$,n,r={}){let i;try{let o=AbortSignal.timeout(e);i=await fetch(t,{headers:r,signal:n?AbortSignal.any([o,n]):o})}catch(o){throw Error(`cannot reach ${t} — ${o instanceof Error?o.message:String(o)}`)}if(i.status===404)throw new eu(`nothing at ${t}`);if(i.status===403||i.status===429)throw new nu(`${new URL(t).host} is turning requests away for now (${i.status}) — try again in a minute`);if(!i.ok&&i.status!==304)throw Error(`${t} answered ${i.status}`);return i}async function ru(t,e,n=m$,r){return e(await(await Df(t,n,r)).text())}function ia(t){let e=new Set(t.waived??[]),n=t.gate??gn(Ie(t));return ve.flatMap((r,i)=>{let o=n[i];if(e.has(r.rule)||typeof o!=="number"||Number.isNaN(o))return[];if(r.min!==void 0&&o<r.min)return[`${r.label} ${o} < ${r.min}`];if(r.max!==void 0&&o>r.max)return[`${r.label} ${o} > ${r.max}`];return[]})}function Tr(t,e){let n=t.find((r)=>r.name===e);if(!n)throw Error(`no palette named ${e} in the catalog — ${qf(t,[e])}`);return n}function qf(t,e){let n=e.map((s)=>s.toLowerCase()),r=t.filter((s)=>n.some((a)=>s.name.includes(a))),i=t.filter((s)=>!r.includes(s)&&n.some((a)=>s.group.toLowerCase().includes(a))),o=[...r,...i].map((s)=>s.name).slice(0,3);return o.length>0?`did you mean: ${o.join(", ")}?`:"`ttheme list` shows what is there"}function $$(t,e){return t.filter((n)=>Ei([n.name,n.group,n.native??"",n.ansiSource,...n.nativeNames??[],...Kc(n.booru)],e))}function k$(t,e,n){let r=n.toLowerCase(),i=(o)=>o.name===e.name?0:o.group===e.group?1:2;return t.filter((o)=>o.booru?.toLowerCase().includes(r)).map((o,s)=>({p:o,at:s})).sort((o,s)=>i(o.p)-i(s.p)||o.at-s.at).map(({p:o})=>o)}function y$(t,e){return t.booruSites?.[e]??(t.booru?[t.booru]:[])}var FP=9999,Uo;function Vt(t,e){if(!Uo||e===""||Uo.length>=FP)return e;return`\x1B[?${Uo.push(t)}y${e}\x1B[?0y`}function S$(t){let e=Uo,n=[];Uo=n;try{return{drawn:t(),targets:n}}finally{Uo=e}}function E$(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?Number(e):void 0}function jP(t){let e=t.slice(2,-1);return t.startsWith("\x1B[")&&t.endsWith("G")&&/^\d*$/.test(e)?Math.max(1,Number(e||1))-1:void 0}function _P(t,e,n){if(!t.includes("\x1B[?"))return{text:t,zones:[]};let r=[],i=[],o="",s=0,a="",c=()=>{let l=i.pop();if(l&&s>l.col)r.push({row:e,col:l.col,width:s-l.col,height:1,target:l.target})},u=0;while(u<t.length){let l=t.indexOf("\x1B",u);if(l!==u){let m=l===-1?t.length:l;a+=t.slice(u,m),o+=t.slice(u,m),u=m;continue}let d=t.slice(u,u+(Rs(t,u)||1));u+=d.length;let f=E$(d),h=f===void 0?jP(d):void 0;if(f===void 0&&h===void 0){o+=d;continue}if(s+=_(a),a="",h!==void 0)s=h,o+=d;else if(f===0)c();else if(f!==void 0)i.push({target:n[f-1],col:s})}s+=_(a);while(i.length>0)c();return{text:o,zones:r}}function M$(t,e,n){let r=[],i=[],o="",s=(m)=>{let g=E$(m);if(g===0)r.pop();else if(g!==void 0)r.push(m);else if(m.startsWith("\x1B]8;"))o=m.slice(m.indexOf(";",4)+1).replace("\x07","").replace("\x1B\\","")===""?"":m;else if(m.startsWith("\x1B[")&&m.endsWith("m"))i.push(m)},a=t.includes("\x1B")||n.includes("\x1B")?"\x1B[0m":"",c="",u=0,l=0;while(l<t.length&&u<e){let m=Rs(t,l);if(m>0){let b=t.slice(l,l+m);s(b),c+=b,l+=m;continue}let g=String.fromCodePoint(t.codePointAt(l));if(u+_(g)>e)break;c+=g,u+=_(g),l+=g.length}c+=" ".repeat(e-Math.min(e,u));let d=`${"\x1B[?0y".repeat(r.length)}${o?"\x1B]8;;\x1B\\":""}${a}`,f=e+_(n);while(l<t.length&&u<f){let m=Rs(t,l);if(m>0){s(t.slice(l,l+m)),l+=m;continue}let g=String.fromCodePoint(t.codePointAt(l));u+=_(g),l+=g.length}if(l>=t.length)return`${c}${d}${n}${a}`;let h=`${i.join("")}${o}${r.join("")}${" ".repeat(Math.max(0,u-f))}`;return`${c}${d}${n}${a}${h}${t.slice(l)}`}function x$(t,e){let n=[];return{lines:t.map((i,o)=>{let s=_P(i,o,e);return n.push(...s.zones),s.text}),zones:n}}function v$(t,e,n,r=0.5,i=0.5){let o=n-t.col,s=e-t.row;return{target:t.target,x:o,y:s,exact:{x:o+r,y:s+i},width:t.width,height:t.height,inside:o>=0&&o<t.width&&s>=0&&s<t.height}}function BP(t,e,n){let r;for(let i of t)if(e>=i.row&&e<i.row+i.height&&n>=i.col&&n<i.col+i.width&&(!r||i.width*i.height<=r.width*r.height))r=i;return r}var GP={space:" ",enter:"enter",esc:"esc",tab:"tab",bksp:"backspace","←":"left","→":"right"};function Yf(t){let e=/^(ctrl|alt)\+([a-z])$/.exec(t);if(e)return`${e[1]}-${e[2]}`;return GP[t]??([...t].length===1&&t!==" "?t:void 0)}function Wt(t,e){let n=Yf(t);return n?Vt({kind:"key",key:n},e):e}class Jf{zones=[];held;point(t){if(t.action==="drag"||t.action==="release"){let n=this.held;if(t.action==="release")this.held=void 0;return n&&v$(n,t.row,t.col,t.fx,t.fy)}let e=BP(this.zones,t.row,t.col);if(t.action==="press")this.held=t.button==="left"?e:void 0;return e&&v$(e,t.row,t.col,t.fx,t.fy)}drop(){this.held=void 0}}var Vn=[{name:"preview",title:"Preview"},{name:"browse",title:"Browse"}],iu=10,ou=20,UP="\x1B[7;1m\x1B[36m";function O$(t){return Vn.find((e)=>e.name===t.TTHEME_HUB)?.name}function I$(t,e){let n=Vn.findIndex((r)=>r.name===t);return ou+(n+e+Vn.length)%Vn.length+1}function R$(t){return ou+Vn.findIndex((e)=>e.name===t)+1}function Vf(t,e){let n=Vn.map(({name:i,title:o})=>{let s={kind:"hub",tab:i};if(!e)return Vt(s,i===t?`[${o}]`:` ${o} `);return i===t?`${UP}${Vt(s,` ${o} `)}${Lt}`:`${C}${Vt(s,` ${o} `)}${Lt}`}),r="tab next";return` ${n.join(" ")} ${e?`${C}tab next${Lt}`:"tab next"}`}import{execFileSync as _T}from"node:child_process";import{existsSync as Xu,mkdirSync as BT,readdirSync as GT,readFileSync as tl,rmSync as t1}from"node:fs";import{basename as i1,join as xa,relative as e1}from"node:path";import{styleText as lu}from"node:util";import{stdout as B$,stdin as VP}from"node:process";import ZP from"node:readline";var su="\x1B",H$="›",WP=39,Qf="\x07",C$="[",KP="]",L$="m",Xf=`${KP}8;;`,P$=new RegExp(`(?:\\${C$}(?<code>\\d+)m|\\${Xf}(?<uri>.*)${Qf})`,"y"),N$=(t)=>{if(t>=30&&t<=37)return 39;if(t>=90&&t<=97)return 39;if(t>=40&&t<=47)return 49;if(t>=100&&t<=107)return 49;if(t===1||t===2)return 22;if(t===3)return 23;if(t===4)return 24;if(t===7)return 27;if(t===8)return 28;if(t===9)return 29;if(t===0)return 0;return},A$=(t)=>`${su}${C$}${t}${L$}`,T$=(t)=>`${su}${Xf}${t}${Qf}`,Zf=(t,e,n)=>{let r=e[Symbol.iterator](),i=!1,o=!1,s=t.at(-1),a=s===void 0?0:_(s),c=r.next(),u=r.next(),l=0;while(!c.done){let d=c.value,f=_(d);if(a+f<=n)t[t.length-1]+=d;else t.push(d),a=0;if(d===su||d===H$)i=!0,o=e.startsWith(Xf,l+1);if(i){if(o){if(d===Qf)i=!1,o=!1}else if(d===L$)i=!1}else if(a+=f,a===n&&!u.done)t.push(""),a=0;c=u,u=r.next(),l+=d.length}if(s=t.at(-1),!a&&s!==void 0&&s.length&&t.length>1)t[t.length-2]+=t.pop()},zP=(t)=>{let e=t.split(" "),n=e.length;while(n){if(_(e[n-1]))break;n--}if(n===e.length)return t;return e.slice(0,n).join(" ")+e.slice(n).join("")},DP=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",i,o,s=t.split(" "),a=[""],c=0;for(let d=0;d<s.length;d++){let f=s[d];if(n.trim!==!1){let m=a.at(-1)??"",g=m.trimStart();if(m.length!==g.length)a[a.length-1]=g,c=_(g)}if(d!==0){if(c>=e&&(n.wordWrap===!1||n.trim===!1))a.push(""),c=0;if(c||n.trim===!1)a[a.length-1]+=" ",c++}let h=_(f);if(n.hard&&h>e){let m=e-c,g=1+Math.floor((h-m-1)/e);if(Math.floor((h-1)/e)<g)a.push("");Zf(a,f,e),c=_(a.at(-1)??"");continue}if(c+h>e&&c&&h){if(n.wordWrap===!1&&c<e){Zf(a,f,e),c=_(a.at(-1)??"");continue}a.push(""),c=0}if(c+h>e&&n.wordWrap===!1){Zf(a,f,e),c=_(a.at(-1)??"");continue}a[a.length-1]+=f,c+=h}if(n.trim!==!1)a=a.map((d)=>zP(d));let u=a.join(`
267
- `),l=!1;for(let d=0;d<u.length;d++){let f=u[d];if(r+=f,!l){if(l=f>="\uD800"&&f<="\uDBFF",l)continue}else l=!1;if(f===su||f===H$){P$.lastIndex=d+1;let m=P$.exec(u)?.groups;if(m?.code!==void 0){let g=Number.parseFloat(m.code);i=g===WP?void 0:g}else if(m?.uri!==void 0)o=m.uri.length===0?void 0:m.uri}if(u[d+1]===`
268
- `){if(o)r+=T$("");let h=i?N$(i):void 0;if(i&&h)r+=A$(h)}else if(f===`
269
- `){if(i&&N$(i))r+=A$(i);if(o)r+=T$(o)}}return r},qP=/\r?\n/;function Hr(t,e,n){return String(t).normalize().split(qP).map((r)=>DP(r,e,n)).join(`
270
- `)}var Pe=bd(eh(),1);function Zn(t,e,n){if(!n.some((s)=>!s.disabled))return t;let r=t+e,i=Math.max(n.length-1,0),o=r<0?i:r>i?0:r;return n[o]?.disabled?Zn(o,e<0?-1:1,n):o}function au(t,e,n,r){let i=r.split(`
271
- `),o=0,s=t;for(let c of i){if(s<=c.length)break;s-=c.length+1,o++}for(o=Math.max(0,Math.min(i.length-1,o+n)),s=Math.min(s,i[o].length)+e;s<0&&o>0;)o--,s+=i[o].length+1;for(;s>i[o].length&&o<i.length-1;)s-=i[o].length+1,o++;s=Math.max(0,Math.min(i[o].length,s));let a=0;for(let c=0;c<o;c++)a+=i[c].length+1;return a+s}var QP=["up","down","left","right","space","enter","cancel"],XP=["January","February","March","April","May","June","July","August","September","October","November","December"],Kt={actions:new Set(QP),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...XP],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(t,e)=>`There are only ${t} days in ${e}`,afterMin:(t)=>`Date must be on or after ${t.toISOString().slice(0,10)}`,beforeMax:(t)=>`Date must be on or before ${t.toISOString().slice(0,10)}`}}};function G$(t,e){if(typeof t=="string")return Kt.aliases.get(t)===e;for(let n of t)if(n!==void 0&&G$(n,e))return!0;return!1}function tN(t,e){if(t===e)return;let n=t.split(`
262
+ `}class c${bytes=[];u8(t){this.bytes.push(t&255)}u16(t){this.u8(t>>8),this.u8(t)}u32(t){this.u16(Math.floor(t/65536)),this.u16(t%65536)}str(t=""){let e=new TextEncoder().encode(t);if(e.length>255)throw Error(`"${t}" is too long to share`);this.u8(e.length),this.bytes.push(...e)}color(t){let e=Number.parseInt(t.slice(1),16);this.u8(e>>16),this.u8(e>>8),this.u8(e)}done(){let t=Buffer.from(this.bytes);return Buffer.concat([t,l$(t)]).toString("base64url")}}class u${at=0;bytes;constructor(t){this.bytes=t}u8(){let t=this.bytes[this.at++];if(t===void 0)throw Error("the share code is cut short");return t}u16(){return this.u8()*256+this.u8()}u32(){return this.u16()*65536+this.u16()}str(){let t=this.u8(),e=this.bytes.subarray(this.at,this.at+t);if(e.length!==t)throw Error("the share code is cut short");this.at+=t;try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw Error("the share code holds text it cannot read — was it copied whole?")}}color(){return`#${[this.u8(),this.u8(),this.u8()].map((t)=>t.toString(16).padStart(2,"0")).join("")}`}end(){if(this.at!==this.bytes.length)throw Error("the share code has bytes left over")}}function l$(t){return iN("sha256").update(t).digest().subarray(0,Qc)}function nu(t){return/^tt\d+:/.test(t)}function qf(t){let e=new c$;e.str(t.name);for(let r of[t.background,t.foreground,t.cursor,t.selection,...t.ansi])e.color(r);for(let r of t.signature)e.u8(o$.indexOf(r));e.str(t.base),e.str(t.group),e.str(t.ansiSource),e.str(t.booru),e.u16((t.waive??[]).reduce((r,i)=>r|1<<Nd.indexOf(i),0)),e.str(t.waive&&t.waive.length>0?t.reason:"");let n=t.pictures??[];e.u8(n.length);for(let r of n)e.u8(V.findIndex((i)=>i.key===r.site)),e.u32(r.id),e.u16(r.size===void 0?0:r.size==="fill"?1:r.size),e.u8(r.position===void 0?0:Wt.indexOf(r.position)+1),e.u16(r.opacity===void 0?0:Math.round(r.opacity*1000)+1);return`${Nr}${e.done()}`}function Yf(t){if(!t.startsWith(Nr))throw Error(nu(t)?`this ttheme reads ${Nr} share codes, not ${t.slice(0,t.indexOf(":")+1)}`:`a share code starts with ${Nr}`);let e=t.slice(Nr.length);if(!/^[A-Za-z0-9_-]+$/.test(e))throw Error("the share code holds characters it never uses — was it copied whole?");let n=Buffer.from(e,"base64url");if(n.length<=Qc)throw Error("the share code is cut short");let r=n.subarray(0,-Qc);if(!l$(r).equals(n.subarray(-Qc)))throw Error("the share code does not add up — was it copied whole?");let i=new u$(new Uint8Array(r)),o=i.str(),[s,a,c,u,...l]=Array.from({length:20},()=>i.color()),d=[i.u8(),i.u8(),i.u8()].map((S)=>o$[S]??`slot${S}`),f=i.str(),h=i.str(),m=i.str(),p=i.str(),b=i.u16(),$=i.str(),k=Nd.filter((S,M)=>b&1<<M),v=Array.from({length:i.u8()},()=>{let S=V[i.u8()]?.key??"unknown",M=i.u32(),I=i.u16(),x=i.u8(),H=i.u16();return{site:S,id:M,...I===1?{size:"fill"}:I>1?{size:I}:{},...x>0?{position:Wt[x-1]??"unknown"}:{},...H>0?{opacity:(H-1)/1000}:{}}});if(i.end(),![s,a,c,u,...l].every(le))throw Error("the share code holds a color that is not one");return{name:o,...f?{base:f}:{},...h?{group:h}:{},...m?{ansiSource:m}:{},...p?{booru:p}:{},signature:d,background:s,foreground:a,cursor:c,selection:u,ansi:l,...k.length>0?{waive:k,reason:$}:{},...v.length>0?{pictures:v}:{}}}function sa(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi}}function Jf(t,e){let n=t.indexOf("ansi = ["),r=t.indexOf("]",n);if(n<0||r<0)throw Error("no ansi = [...] list to rewrite");let i=0,o=t.slice(n,r).replace(/"#[0-9a-fA-F]{6}"/g,()=>It(e.ansi[i++]));return[["background",e.background],["foreground",e.foreground],["cursor",e.cursor],["selection_background",e.selection]].reduce((a,[c,u])=>a.replace(new RegExp(`^(${c}\\s*=\\s*)"#[0-9a-fA-F]{6}"`,"m"),(l,d)=>`${d}${It(u)}`),t.slice(0,n)+o+t.slice(r))}function d$(t,e){return t.replace(/^(signature\s*=\s*)\[[^\]]*\]/m,(n,r)=>`${r}[${e.map(It).join(", ")}]`)}function aa(t){let e=pn(Ie(t)),n=new Set(t.waived??[]),r=Math.max(...ve.map((i)=>i.label.length));return ve.map((i,o)=>{let s=e[o],a=n.has(i.rule)||Number.isNaN(s)||(i.min===void 0||s>=i.min)&&(i.max===void 0||s<=i.max),c=i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",u=Number.isNaN(s)?"—":Number.isInteger(s)?String(s):s.toFixed(2);return` ${a?"✓":"✗"} ${i.label.padEnd(r)} ${u.padStart(6)} ${c}${n.has(i.rule)?" waived":""}`})}import{existsSync as uN,readFileSync as lN,rmSync as dN}from"node:fs";import{join as fN}from"node:path";var ua=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],hN=1;function f$(t){return fN(t,"ttheme","tone.json")}function h$(t){return ua.includes(t)}function qn(t){let e=f$(t);if(!uN(e))return{};let n;try{n=JSON.parse(lN(e,"utf8"))}catch{return{}}let r=n?.palettes;if(typeof r!=="object"||r===null)return{};let i={};for(let[o,s]of Object.entries(r)){if(typeof s!=="object"||s===null)continue;let a={};for(let[c,u]of Object.entries(s))if(h$(c)&&typeof u==="string"&&le(u.toLowerCase()))a[c]=u.toLowerCase();if(Object.keys(a).length>0)i[o]=a}return i}function Vf(t,e){let n=f$(t),r=Object.fromEntries(Object.entries(e).filter(([,i])=>Object.keys(i).length>0));if(Object.keys(r).length===0){dN(n,{force:!0});return}L(n,`${JSON.stringify({version:hN,palettes:r},null,2)}
263
+ `)}function ca(t,e){if(e==="background"||e==="foreground"||e==="cursor"||e==="selection")return t[e];return t.ansi[Number(e.slice(4))]}function m$(t){return ua.map((e)=>ca(t,e))}function p$(t,e){let n={};return ua.forEach((r,i)=>{let o=e[i].toLowerCase();if(o!==ca(t,r).toLowerCase())n[r]=o}),n}function ru(t,e){if(!e)return t;let n=(u)=>e[u]===void 0||e[u]===ca(t,u).toLowerCase();if(ua.every(n))return t;let r=(u)=>e[u]??ca(t,u),i={background:r("background"),foreground:r("foreground"),cursor:r("cursor"),selection:r("selection"),ansi:ua.slice(4).map(r)},o=t.signatureSlots.map((u)=>h$(u)?r(u):ca(i,u)),s={...t,...i,signature:o},a=Ie(s),c=yn({name:s.name,background:i.background,foreground:i.foreground,cursor:i.cursor,selection:i.selection,ansi:i.ansi,waived:a.waive},s.signatureSlots);return{...s,gate:pn(a),backdrop:c}}function iu(t,e){return Object.keys(e).length===0?t:t.map((n)=>ru(n,e[n.name]))}function g$(t,e,n){let r={...t};if(Object.keys(n).length===0)delete r[e];else r[e]=n;return r}function b$(t,e,n){let r=qn(t);if(!Object.keys(r).some((o)=>e.has(o)||n.includes(o)))return;Vf(t,Object.fromEntries(Object.entries(r).filter(([o])=>!n.includes(o)).map(([o,s])=>[e.get(o)??o,s])))}var y$=20000;function Ge(t){return k$(t,"ttheme","catalog.json")}function v$(t,e){L(Ge(t),`${JSON.stringify(e,null,2)}
264
+ `)}function dt(t,e=!0,n){let r=Go(t),i=Ge(t),o=Dc();if(r.includes(q))if(n)o=n;else{if(!$$(i))throw Error(`no catalog at ${i} — run \`ttheme init\` first`);o=Sn(Zf(i,"utf8"))}let s=r.filter(gt).flatMap((a)=>pN(t,a,o.palettes,e));return{...o,palettes:[...o.palettes,...s]}}function mN(t){let e;try{e=JSON.parse(t)}catch{throw Error("is not valid JSON")}let n=e?.files;if(!n||typeof n!=="object"||Object.values(n).some((r)=>typeof r!=="string"))throw Error("is not a copy of a market this ttheme fetched — `ttheme update` fetches it again");return{...typeof e?.etag==="string"?{etag:e.etag}:{},files:n}}function tn(t,e){return mN(Zf(_e(t,e),"utf8"))}function S$(t,e){return ae({owner:e$(t),name:e.name})}function E$(t,e){let n=e.files[Bt];if(n===void 0)throw Error(`${tt(t)} has no ${Bt} — \`ttheme market init\` makes one`);return Bf(n,Bt)}function ou(t,e){return S$(t,E$(t,e))}function Yn(t,e,n,r){let i=E$(t,e),o=S$(t,i),s=tt(t),a=new Map(Object.entries(e.files).map(([u,l])=>[`${s}/${u}`,l])),c=Uf(Object.keys(e.files),(u)=>`${s}/${u}`);return{id:o,info:i,entries:Kf(c,(u)=>a.get(u.path)??"",o,n,r,!0)}}function pN(t,e,n,r){let i=_e(t,e);if(!$$(i))return[];try{return Yn(e,tn(t,e),n,ce(!1)).entries}catch(o){if(r)process.stderr.write(`ttheme: skipping ${i} — ${o.message}
265
+ `);return[]}}function Sn(t){let e;try{e=JSON.parse(t)}catch{throw Error("catalog is not valid JSON")}let n=e;if(typeof n?.version!=="string"||!Array.isArray(n.palettes))throw Error("catalog has no version or palettes");for(let r of n.palettes){let i=M$(r);if(i)throw Error(`catalog entry ${JSON.stringify(r?.name)} ${i}`)}return n}function M$(t){if(typeof t?.name!=="string"||!Array.isArray(t.ansi)||t.ansi.length!==16)return"is missing name or its 16 ANSI colors";let e=xe(t.name)??(t.base===void 0?void 0:xe(t.base));if(e)return e;if(![t.background,t.foreground,t.cursor,t.selection,...t.ansi].every((n)=>typeof n==="string"&&le(n)))return'holds a color that is not "#rrggbb"';for(let n of[t.group,t.native??"-",t.catalog??"-",t.ansiSource]){let r=typeof n==="string"?ta(n):"has a field that is not text";if(r)return r}return}function x$(t){return k$(t,"ttheme","kept.json")}function Ko(t,e){L(x$(t),`${JSON.stringify({palettes:e},null,2)}
266
+ `)}function Ar(t){try{let{palettes:e}=JSON.parse(Zf(x$(t),"utf8"));return Array.isArray(e)?e.filter((n)=>M$(n)===void 0):[]}catch{return[]}}function w$(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi,t.pictures??[]])}function zo(t,e){let n=new Map(Ar(t).map((r)=>[r.name,r]));return e.palettes.filter((r)=>{let i=n.get(r.name);return ct(r.name)!==void 0&&i!==void 0&&w$(i)!==w$(r)})}function Do(t,e,n=!0){let r=Ar(t),i=new Map(r.filter((a)=>ct(a.name)!==void 0).map((a)=>[a.name,a])),o=[...e.palettes.map((a)=>i.get(a.name)??a),...eu(t,e.palettes,n)],s=new Set(o.map((a)=>a.name));return{...e,palettes:[...o,...r.filter((a)=>!s.has(a.name))]}}function Ct(t,e,n=!0){let r=Do(t,e,n);return{...r,palettes:iu(r.palettes,qn(t))}}function he(t){return Ct(t,dt(t))}class su extends Error{}class au extends Error{}async function Qf(t,e=y$,n,r={}){let i;try{let o=AbortSignal.timeout(e);i=await fetch(t,{headers:r,signal:n?AbortSignal.any([o,n]):o})}catch(o){throw Error(`cannot reach ${t} — ${o instanceof Error?o.message:String(o)}`)}if(i.status===404)throw new su(`nothing at ${t}`);if(i.status===403||i.status===429)throw new au(`${new URL(t).host} is turning requests away for now (${i.status}) — try again in a minute`);if(!i.ok&&i.status!==304)throw Error(`${t} answered ${i.status}`);return i}async function O$(t,e,n=y$,r){return e(await(await Qf(t,n,r)).text())}function la(t){let e=new Set(t.waived??[]),n=t.gate??pn(Ie(t));return ve.flatMap((r,i)=>{let o=n[i];if(e.has(r.rule)||typeof o!=="number"||Number.isNaN(o))return[];if(r.min!==void 0&&o<r.min)return[`${r.label} ${o} < ${r.min}`];if(r.max!==void 0&&o>r.max)return[`${r.label} ${o} > ${r.max}`];return[]})}function Tr(t,e){let n=t.find((r)=>r.name===e);if(!n)throw Error(`no palette named ${e} in the catalog — ${Xf(t,[e])}`);return n}function Xf(t,e){let n=e.map((s)=>s.toLowerCase()),r=t.filter((s)=>n.some((a)=>s.name.includes(a))),i=t.filter((s)=>!r.includes(s)&&n.some((a)=>s.group.toLowerCase().includes(a))),o=[...r,...i].map((s)=>s.name).slice(0,3);return o.length>0?`did you mean: ${o.join(", ")}?`:"`ttheme list` shows what is there"}function I$(t,e){return t.filter((n)=>Mi([n.name,n.group,n.native??"",n.ansiSource,...n.nativeNames??[],...Jc(n.booru)],e))}function R$(t,e,n){let r=n.toLowerCase(),i=(o)=>o.name===e.name?0:o.group===e.group?1:2;return t.filter((o)=>o.booru?.toLowerCase().includes(r)).map((o,s)=>({p:o,at:s})).sort((o,s)=>i(o.p)-i(s.p)||o.at-s.at).map(({p:o})=>o)}function P$(t,e){return t.booruSites?.[e]??(t.booru?[t.booru]:[])}var gN=9999,qo;function Vt(t,e){if(!qo||e===""||qo.length>=gN)return e;return`\x1B[?${qo.push(t)}y${e}\x1B[?0y`}function A$(t){let e=qo,n=[];qo=n;try{return{drawn:t(),targets:n}}finally{qo=e}}function T$(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?Number(e):void 0}function bN(t){let e=t.slice(2,-1);return t.startsWith("\x1B[")&&t.endsWith("G")&&/^\d*$/.test(e)?Math.max(1,Number(e||1))-1:void 0}function wN(t,e,n){if(!t.includes("\x1B[?"))return{text:t,zones:[]};let r=[],i=[],o="",s=0,a="",c=()=>{let l=i.pop();if(l&&s>l.col)r.push({row:e,col:l.col,width:s-l.col,height:1,target:l.target})},u=0;while(u<t.length){let l=t.indexOf("\x1B",u);if(l!==u){let m=l===-1?t.length:l;a+=t.slice(u,m),o+=t.slice(u,m),u=m;continue}let d=t.slice(u,u+(Md(t,u)||1));u+=d.length;let f=T$(d),h=f===void 0?bN(d):void 0;if(f===void 0&&h===void 0){o+=d;continue}if(s+=B(a),a="",h!==void 0)s=h,o+=d;else if(f===0)c();else if(f!==void 0)i.push({target:n[f-1],col:s})}s+=B(a);while(i.length>0)c();return{text:o,zones:r}}function H$(t,e,n){let r=[],i=[],o="",s=(p)=>{let b=T$(p);if(b===0)r.pop();else if(b!==void 0)r.push(p);else if(p.startsWith("\x1B]8;"))o=p.slice(p.indexOf(";",4)+1).replace("\x07","").replace("\x1B\\","")===""?"":p;else if(p.startsWith("\x1B[")&&p.endsWith("m"))i.push(p)},a=t.includes("\x1B")||n.includes("\x1B")?"\x1B[0m":"",c=vc(t),u="",l=0,d=0;while(d<c.length&&l<e){let p=c[d];if(p.sequence)s(p.text);else if(l+p.width>e)break;else l+=p.width;u+=p.text,d++}u+=" ".repeat(e-Math.min(e,l));let f=`${"\x1B[?0y".repeat(r.length)}${o?"\x1B]8;;\x1B\\":""}${a}`,h=e+B(n);while(d<c.length&&l<h){let p=c[d];if(p.sequence)s(p.text);else l+=p.width;d++}if(d>=c.length)return`${u}${f}${n}${a}`;let m=`${i.join("")}${o}${r.join("")}${" ".repeat(Math.max(0,l-h))}`;return`${u}${f}${n}${a}${m}${t.slice(c[d].start)}`}function C$(t,e){let n=[];return{lines:t.map((i,o)=>{let s=wN(i,o,e);return n.push(...s.zones),s.text}),zones:n}}function N$(t,e,n,r=0.5,i=0.5){let o=n-t.col,s=e-t.row;return{target:t.target,x:o,y:s,exact:{x:o+r,y:s+i},width:t.width,height:t.height,inside:o>=0&&o<t.width&&s>=0&&s<t.height}}function $N(t,e,n){let r;for(let i of t)if(e>=i.row&&e<i.row+i.height&&n>=i.col&&n<i.col+i.width&&(!r||i.width*i.height<=r.width*r.height))r=i;return r}var kN={space:" ",enter:"enter",esc:"esc",tab:"tab",bksp:"backspace","←":"left","→":"right"};function th(t){let e=/^(ctrl|alt)\+([a-z])$/.exec(t);if(e)return`${e[1]}-${e[2]}`;return kN[t]??([...t].length===1&&t!==" "?t:void 0)}function Kt(t,e){let n=th(t);return n?Vt({kind:"key",key:n},e):e}class eh{zones=[];held;point(t){if(t.action==="drag"||t.action==="release"){let n=this.held;if(t.action==="release")this.held=void 0;return n&&N$(n,t.row,t.col,t.fx,t.fy)}let e=$N(this.zones,t.row,t.col);if(t.action==="press")this.held=t.button==="left"?e:void 0;return e&&N$(e,t.row,t.col,t.fx,t.fy)}drop(){this.held=void 0}}var Jn=[{name:"preview",title:"Preview"},{name:"browse",title:"Browse"}],cu=10,uu=20,yN="\x1B[7;1m\x1B[36m";function L$(t){return Jn.find((e)=>e.name===t.TTHEME_HUB)?.name}function F$(t,e){let n=Jn.findIndex((r)=>r.name===t);return uu+(n+e+Jn.length)%Jn.length+1}function j$(t){return uu+Jn.findIndex((e)=>e.name===t)+1}function nh(t,e){let n=Jn.map(({name:i,title:o})=>{let s={kind:"hub",tab:i};if(!e)return Vt(s,i===t?`[${o}]`:` ${o} `);return i===t?`${yN}${Vt(s,` ${o} `)}${Ft}`:`${C}${Vt(s,` ${o} `)}${Ft}`}),r="tab next";return` ${n.join(" ")} ${e?`${C}tab next${Ft}`:"tab next"}`}import{execFileSync as gH}from"node:child_process";import{existsSync as tl,mkdirSync as bH,readdirSync as wH,readFileSync as el,rmSync as $H}from"node:fs";import{basename as M1,join as Na,relative as v1}from"node:path";import{styleText as mu}from"node:util";import{stdout as J$,stdin as RN}from"node:process";import PN from"node:readline";var lu="\x1B",W$="›",vN=39,ih="\x07",K$="[",SN="]",z$="m",oh=`${SN}8;;`,_$=new RegExp(`(?:\\${K$}(?<code>\\d+)m|\\${oh}(?<uri>.*)${ih})`,"y"),B$=(t)=>{if(t>=30&&t<=37)return 39;if(t>=90&&t<=97)return 39;if(t>=40&&t<=47)return 49;if(t>=100&&t<=107)return 49;if(t===1||t===2)return 22;if(t===3)return 23;if(t===4)return 24;if(t===7)return 27;if(t===8)return 28;if(t===9)return 29;if(t===0)return 0;return},G$=(t)=>`${lu}${K$}${t}${z$}`,U$=(t)=>`${lu}${oh}${t}${ih}`,rh=(t,e,n)=>{let r=e[Symbol.iterator](),i=!1,o=!1,s=t.at(-1),a=s===void 0?0:B(s),c=r.next(),u=r.next(),l=0;while(!c.done){let d=c.value,f=B(d);if(a+f<=n)t[t.length-1]+=d;else t.push(d),a=0;if(d===lu||d===W$)i=!0,o=e.startsWith(oh,l+1);if(i){if(o){if(d===ih)i=!1,o=!1}else if(d===z$)i=!1}else if(a+=f,a===n&&!u.done)t.push(""),a=0;c=u,u=r.next(),l+=d.length}if(s=t.at(-1),!a&&s!==void 0&&s.length&&t.length>1)t[t.length-2]+=t.pop()},EN=(t)=>{let e=t.split(" "),n=e.length;while(n){if(B(e[n-1]))break;n--}if(n===e.length)return t;return e.slice(0,n).join(" ")+e.slice(n).join("")},MN=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",i,o,s=t.split(" "),a=[""],c=0;for(let d=0;d<s.length;d++){let f=s[d];if(n.trim!==!1){let m=a.at(-1)??"",p=m.trimStart();if(m.length!==p.length)a[a.length-1]=p,c=B(p)}if(d!==0){if(c>=e&&(n.wordWrap===!1||n.trim===!1))a.push(""),c=0;if(c||n.trim===!1)a[a.length-1]+=" ",c++}let h=B(f);if(n.hard&&h>e){let m=e-c,p=1+Math.floor((h-m-1)/e);if(Math.floor((h-1)/e)<p)a.push("");rh(a,f,e),c=B(a.at(-1)??"");continue}if(c+h>e&&c&&h){if(n.wordWrap===!1&&c<e){rh(a,f,e),c=B(a.at(-1)??"");continue}a.push(""),c=0}if(c+h>e&&n.wordWrap===!1){rh(a,f,e),c=B(a.at(-1)??"");continue}a[a.length-1]+=f,c+=h}if(n.trim!==!1)a=a.map((d)=>EN(d));let u=a.join(`
267
+ `),l=!1;for(let d=0;d<u.length;d++){let f=u[d];if(r+=f,!l){if(l=f>="\uD800"&&f<="\uDBFF",l)continue}else l=!1;if(f===lu||f===W$){_$.lastIndex=d+1;let m=_$.exec(u)?.groups;if(m?.code!==void 0){let p=Number.parseFloat(m.code);i=p===vN?void 0:p}else if(m?.uri!==void 0)o=m.uri.length===0?void 0:m.uri}if(u[d+1]===`
268
+ `){if(o)r+=U$("");let h=i?B$(i):void 0;if(i&&h)r+=G$(h)}else if(f===`
269
+ `){if(i&&B$(i))r+=G$(i);if(o)r+=U$(o)}}return r},xN=/\r?\n/;function Hr(t,e,n){return String(t).normalize().split(xN).map((r)=>MN(r,e,n)).join(`
270
+ `)}var Re=Sd(ah(),1);function Vn(t,e,n){if(!n.some((s)=>!s.disabled))return t;let r=t+e,i=Math.max(n.length-1,0),o=r<0?i:r>i?0:r;return n[o]?.disabled?Vn(o,e<0?-1:1,n):o}function du(t,e,n,r){let i=r.split(`
271
+ `),o=0,s=t;for(let c of i){if(s<=c.length)break;s-=c.length+1,o++}for(o=Math.max(0,Math.min(i.length-1,o+n)),s=Math.min(s,i[o].length)+e;s<0&&o>0;)o--,s+=i[o].length+1;for(;s>i[o].length&&o<i.length-1;)s-=i[o].length+1,o++;s=Math.max(0,Math.min(i[o].length,s));let a=0;for(let c=0;c<o;c++)a+=i[c].length+1;return a+s}var NN=["up","down","left","right","space","enter","cancel"],AN=["January","February","March","April","May","June","July","August","September","October","November","December"],zt={actions:new Set(NN),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...AN],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(t,e)=>`There are only ${t} days in ${e}`,afterMin:(t)=>`Date must be on or after ${t.toISOString().slice(0,10)}`,beforeMax:(t)=>`Date must be on or before ${t.toISOString().slice(0,10)}`}}};function V$(t,e){if(typeof t=="string")return zt.aliases.get(t)===e;for(let n of t)if(n!==void 0&&V$(n,e))return!0;return!1}function TN(t,e){if(t===e)return;let n=t.split(`
272
272
  `),r=e.split(`
273
- `),i=Math.max(n.length,r.length),o=[];for(let s=0;s<i;s++)n[s]!==r[s]&&o.push(s);return{lines:o,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}var D6=globalThis.process.platform.startsWith("win"),rh=Symbol("clack:cancel");function me(t){return t===rh}function cu(t,e){let n=t;n.isTTY&&n.setRawMode(e)}var du=(t)=>("columns"in t)&&typeof t.columns=="number"?t.columns:80,oh=(t)=>("rows"in t)&&typeof t.rows=="number"?t.rows:20;function Cr(t,e,n,r=n,i=n,o){let s=du(t??B$);return Hr(e,s-n.length,{hard:!0,trim:!1}).split(`
273
+ `),i=Math.max(n.length,r.length),o=[];for(let s=0;s<i;s++)n[s]!==r[s]&&o.push(s);return{lines:o,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}var G_=globalThis.process.platform.startsWith("win"),uh=Symbol("clack:cancel");function me(t){return t===uh}function fu(t,e){let n=t;n.isTTY&&n.setRawMode(e)}var pu=(t)=>("columns"in t)&&typeof t.columns=="number"?t.columns:80,dh=(t)=>("rows"in t)&&typeof t.rows=="number"?t.rows:20;function Cr(t,e,n,r=n,i=n,o){let s=pu(t??J$);return Hr(e,s-n.length,{hard:!0,trim:!1}).split(`
274
274
  `).map((a,c,u)=>{let l=o?o(a,c):a;return c===0?`${r}${l}`:c===u.length-1?`${i}${l}`:`${n}${l}`}).join(`
275
- `)}function U$(t,e){if("~standard"in t){let n=t["~standard"].validate(e);if(n instanceof Promise)throw TypeError("Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.");return n.issues?.at(0)?.message}return t(e)}class Qn{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(t,e=!0){let{input:n=VP,output:r=B$,render:i,signal:o,...s}=t;this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=e,this._abortSignal=o,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(t,e){let n=this._subscribers.get(t)??[];n.push(e),this._subscribers.set(t,n)}on(t,e){this.setSubscriber(t,{cb:e})}once(t,e){this.setSubscriber(t,{cb:e,once:!0})}emit(t,...e){let n=this._subscribers.get(t)??[],r=[];for(let i of n)i.cb(...e),i.once&&r.push(()=>n.splice(n.indexOf(i),1));for(let i of r)i()}prompt(){return new Promise((t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(rh);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=ZP.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),cu(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Pe.cursor.show),this.output.off("resize",this.render),cu(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(Pe.cursor.show),this.output.off("resize",this.render),cu(this.input,!1),t(rh)})})}_isActionKey(t,e){return t==="\t"}_shouldSubmit(t,e){return!0}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,e){this.userInput=t??"",this.emit("userInput",this.userInput),e&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(t,e){if(this._track&&e.name!=="return"&&(e.name&&this._isActionKey(t,e)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),e?.name&&(!this._track&&Kt.aliases.has(e.name)&&this.emit("cursor",Kt.aliases.get(e.name)),Kt.actions.has(e.name)&&this.emit("cursor",e.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t,e),e?.name==="return"&&this._shouldSubmit(t,e)){if(this.opts.validate){let n=U$(this.opts.validate,this.value);n&&(this.error=n instanceof Error?n.message:n,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}G$([t,e?.name,e?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
276
- `),cu(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=Hr(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
277
- `).length-1;this.output.write(Pe.cursor.move(-999,t*-1))}render(){let t=Hr(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(Pe.cursor.hide);else{let e=tN(this._prevFrame,t),n=oh(this.output);if(this.restoreCursor(),e){let r=Math.max(0,e.numLinesAfter-n),i=Math.max(0,e.numLinesBefore-n),o=e.lines.find((s)=>s>=r);if(o===void 0){this._prevFrame=t;return}if(e.lines.length===1){this.output.write(Pe.cursor.move(0,o-i)),this.output.write(Pe.erase.lines(1));let s=t.split(`
278
- `);this.output.write(s[o]),this._prevFrame=t,this.output.write(Pe.cursor.move(0,s.length-o-1));return}else if(e.lines.length>1){if(r<i)o=r;else{let a=o-i;a>0&&this.output.write(Pe.cursor.move(0,a))}this.output.write(Pe.erase.down());let s=t.split(`
275
+ `)}function Z$(t,e){if("~standard"in t){let n=t["~standard"].validate(e);if(n instanceof Promise)throw TypeError("Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.");return n.issues?.at(0)?.message}return t(e)}class Zn{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(t,e=!0){let{input:n=RN,output:r=J$,render:i,signal:o,...s}=t;this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=e,this._abortSignal=o,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(t,e){let n=this._subscribers.get(t)??[];n.push(e),this._subscribers.set(t,n)}on(t,e){this.setSubscriber(t,{cb:e})}once(t,e){this.setSubscriber(t,{cb:e,once:!0})}emit(t,...e){let n=this._subscribers.get(t)??[],r=[];for(let i of n)i.cb(...e),i.once&&r.push(()=>n.splice(n.indexOf(i),1));for(let i of r)i()}prompt(){return new Promise((t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(uh);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=PN.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),fu(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Re.cursor.show),this.output.off("resize",this.render),fu(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(Re.cursor.show),this.output.off("resize",this.render),fu(this.input,!1),t(uh)})})}_isActionKey(t,e){return t==="\t"}_shouldSubmit(t,e){return!0}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,e){this.userInput=t??"",this.emit("userInput",this.userInput),e&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(t,e){if(this._track&&e.name!=="return"&&(e.name&&this._isActionKey(t,e)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),e?.name&&(!this._track&&zt.aliases.has(e.name)&&this.emit("cursor",zt.aliases.get(e.name)),zt.actions.has(e.name)&&this.emit("cursor",e.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t,e),e?.name==="return"&&this._shouldSubmit(t,e)){if(this.opts.validate){let n=Z$(this.opts.validate,this.value);n&&(this.error=n instanceof Error?n.message:n,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}V$([t,e?.name,e?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
276
+ `),fu(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=Hr(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
277
+ `).length-1;this.output.write(Re.cursor.move(-999,t*-1))}render(){let t=Hr(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(Re.cursor.hide);else{let e=TN(this._prevFrame,t),n=dh(this.output);if(this.restoreCursor(),e){let r=Math.max(0,e.numLinesAfter-n),i=Math.max(0,e.numLinesBefore-n),o=e.lines.find((s)=>s>=r);if(o===void 0){this._prevFrame=t;return}if(e.lines.length===1){this.output.write(Re.cursor.move(0,o-i)),this.output.write(Re.erase.lines(1));let s=t.split(`
278
+ `);this.output.write(s[o]),this._prevFrame=t,this.output.write(Re.cursor.move(0,s.length-o-1));return}else if(e.lines.length>1){if(r<i)o=r;else{let a=o-i;a>0&&this.output.write(Re.cursor.move(0,a))}this.output.write(Re.erase.down());let s=t.split(`
279
279
  `).slice(o);this.output.write(s.join(`
280
- `)),this._prevFrame=t;return}}this.output.write(Pe.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}function eN(t,e){if(t===void 0||e.length===0)return 0;let n=e.findIndex((r)=>r.value===t);return n!==-1?n:0}function nN(t,e){return(e.label??String(e.value)).toLowerCase().includes(t.toLowerCase())}function rN(t,e){if(e)return t?e:e[0]}var iN=class extends Qn{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#n="";#t;#o;#a;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return lu(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let e=this.userInput.slice(0,this.cursor),n=this.userInput.slice(this.cursor,this.cursor+1),r=this.userInput.slice(this.cursor+1);return`${e}${lu("inverse",n)}${r}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#a=e.placeholder;let n=this.options;this.filteredOptions=[...n],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??nN;let r;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?r=e.initialValue:r=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(r=[this.options[0]?.value]),r)for(let i of r){let o=n.findIndex((s)=>s.value===i);o!==-1&&(this.toggleSelected(i),this.#e=o)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,o)=>this.#r(i,o)),this.on("userInput",(i)=>this.#i(i))}_isActionKey(e,n){return e==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&e!==void 0&&e!==""}#r(e,n){let r=n.name==="up",i=n.name==="down",o=n.name==="return",s=this.userInput===""||this.userInput==="\t",a=this.#a,c=this.options,u=a!==void 0&&a!==""&&c.some((l)=>!l.disabled&&(this.#t?this.#t(a,l):!0));if(n.name==="tab"&&s&&u){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}r||i?(this.#e=Zn(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):o?this.value=rN(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter((n)=>n!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#i(e){if(e!==this.#n){this.#n=e;let n=this.options;e&&this.#t?this.filteredOptions=n.filter((o)=>this.#t?.(e,o)):this.filteredOptions=[...n];let r=eN(this.focusedValue,this.filteredOptions);this.#e=Zn(r,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class sh extends Qn{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(e)=>{this.output.write(Pe.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var oN={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function j$(t){return[...t].map((e)=>oN[e])}function sN(t){let e=new Intl.DateTimeFormat(t,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2000,0,15)),n=[],r="/";for(let i of e)i.type==="literal"?r=i.value.trim()||i.value:(i.type==="year"||i.type==="month"||i.type==="day")&&n.push({type:i.type,len:i.type==="year"?4:2});return{segments:n,separator:r}}function nh(t){return Number.parseInt((t||"0").replace(/_/g,"0"),10)||0}function uu(t){return{year:nh(t.year),month:nh(t.month),day:nh(t.day)}}function ih(t,e){return new Date(t||2001,e||1,0).getDate()}function W$(t){let{year:e,month:n,day:r}=uu(t);if(!e||e<0||e>9999||!n||n<1||n>12||!r||r<1)return;let i=new Date(Date.UTC(e,n-1,r));if(!(i.getUTCFullYear()!==e||i.getUTCMonth()!==n-1||i.getUTCDate()!==r))return{year:e,month:n,day:r}}function _$(t){let e=W$(t);return e?new Date(Date.UTC(e.year,e.month-1,e.day)):void 0}function aN(t,e,n,r){let i=n?{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}:null,o=r?{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate()}:null;return t==="year"?{min:i?.year??1,max:o?.year??9999}:t==="month"?{min:i&&e.year===i.year?i.month:1,max:o&&e.year===o.year?o.month:12}:{min:i&&e.year===i.year&&e.month===i.month?i.day:1,max:o&&e.year===o.year&&e.month===o.month?o.day:ih(e.year,e.month)}}class K$ extends Qn{#e;#n;#t;#o;#a;#r={segmentIndex:0,positionInSegment:0};#i=!0;#s=null;inlineError="";get segmentCursor(){return{...this.#r}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#n}get formattedValue(){return this.#d(this.#t)}#d(t){return this.#e.map((e)=>t[e.type]).join(this.#n)}#c(){this._setUserInput(this.#d(this.#t)),this._setValue(_$(this.#t)??void 0)}constructor(t){let e=t.format?{segments:j$(t.format),separator:t.separator??"/"}:sN(t.locale),n=t.separator??e.separator,r=t.format?j$(t.format):e.segments,i=t.initialValue??t.defaultValue,o=i?{year:String(i.getUTCFullYear()).padStart(4,"0"),month:String(i.getUTCMonth()+1).padStart(2,"0"),day:String(i.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},s=r.map((a)=>o[a.type]).join(n);super({...t,initialUserInput:s},!1),this.#e=r,this.#n=n,this.#t=o,this.#o=t.minDate,this.#a=t.maxDate,this.#c(),this.on("cursor",(a)=>this.#m(a)),this.on("key",(a,c)=>this.#p(a,c)),this.on("finalize",()=>this.#g(t))}#u(){let t=Math.max(0,Math.min(this.#r.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#r.positionInSegment=Math.max(0,Math.min(this.#r.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#s=null;let e=this.#u();e&&(this.#r.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#r.positionInSegment=0,this.#i=!0)}#f(t){let e=this.#u();if(!e)return;let{segment:n}=e,r=this.#t[n.type],i=!r||r.replace(/_/g,"")==="",o=Number.parseInt((r||"0").replace(/_/g,"0"),10)||0,s=aN(n.type,uu(this.#t),this.#o,this.#a),a;i?a=t===1?s.min:s.max:a=Math.max(Math.min(s.max,o+t),s.min),this.#t={...this.#t,[n.type]:a.toString().padStart(n.len,"0")},this.#i=!0,this.#s=null,this.#c()}#m(t){if(t)switch(t){case"right":return this.#l(1);case"left":return this.#l(-1);case"up":return this.#f(1);case"down":return this.#f(-1)}}#p(t,e){if(e?.name==="backspace"||e?.sequence===""||e?.sequence==="\b"||t===""||t==="\b"){this.inlineError="";let n=this.#u();if(!n)return;if(!this.#t[n.segment.type].replace(/_/g,"")){this.#l(-1);return}this.#t[n.segment.type]="_".repeat(n.segment.len),this.#i=!0,this.#r.positionInSegment=0,this.#c();return}if(e?.name==="tab"){this.inlineError="";let n=this.#u();if(!n)return;let r=e.shift?-1:1,i=n.index+r;i>=0&&i<this.#e.length&&(this.#r.segmentIndex=i,this.#r.positionInSegment=0,this.#i=!0);return}if(t&&/^[0-9]$/.test(t)){let n=this.#u();if(!n)return;let{segment:r}=n,i=!this.#t[r.type].replace(/_/g,"");if(this.#i&&this.#s!==null&&!i){let f=this.#s+t,h={...this.#t,[r.type]:f},m=this.#h(h,r);if(m){this.inlineError=m,this.#s=null,this.#i=!1;return}this.inlineError="",this.#t[r.type]=f,this.#s=null,this.#i=!1,this.#c(),n.index<this.#e.length-1&&(this.#r.segmentIndex=n.index+1,this.#r.positionInSegment=0,this.#i=!0);return}this.#i&&!i&&(this.#t[r.type]="_".repeat(r.len),this.#r.positionInSegment=0),this.#i=!1,this.#s=null;let o=this.#t[r.type],s=o.indexOf("_"),a=s>=0?s:Math.min(this.#r.positionInSegment,r.len-1);if(a<0||a>=r.len)return;let c=o.slice(0,a)+t+o.slice(a+1),u=!1;if(a===0&&o==="__"&&(r.type==="month"||r.type==="day")){let f=Number.parseInt(t,10);c=`0${t}`,u=f<=(r.type==="month"?1:2)}if(r.type==="year"&&(c=(o.replace(/_/g,"")+t).padStart(r.len,"_")),!c.includes("_")){let f={...this.#t,[r.type]:c},h=this.#h(f,r);if(h){this.inlineError=h;return}}this.inlineError="",this.#t[r.type]=c;let l=c.includes("_")?void 0:W$(this.#t);if(l){let{year:f,month:h}=l,m=ih(f,h);this.#t={year:String(Math.max(0,Math.min(9999,f))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,h))).padStart(2,"0"),day:String(Math.max(1,Math.min(m,l.day))).padStart(2,"0")}}this.#c();let d=c.indexOf("_");u?(this.#i=!0,this.#s=t):d>=0?this.#r.positionInSegment=d:s>=0&&n.index<this.#e.length-1?(this.#r.segmentIndex=n.index+1,this.#r.positionInSegment=0,this.#i=!0):this.#r.positionInSegment=Math.min(a+1,r.len-1)}}#h(t,e){let{month:n,day:r}=uu(t);if(e.type==="month"&&(n<0||n>12))return Kt.date.messages.invalidMonth;if(e.type==="day"&&(r<0||r>31))return Kt.date.messages.invalidDay(31,"any month")}#g(t){let{year:e,month:n,day:r}=uu(this.#t);if(e&&n&&r){let i=ih(e,n);this.#t={...this.#t,day:String(Math.min(r,i)).padStart(2,"0")}}this.value=_$(this.#t)??t.defaultValue??void 0}}var cN=class extends Qn{options;cursor=0;#e;getGroupItems(e){return this.options.filter((n)=>n.group===e)}isGroupSelected(e){let n=this.getGroupItems(e),r=this.value;return r===void 0?!1:n.every((i)=>r.includes(i.value))}toggleValue(){let e=this.options[this.cursor];if(e!==void 0)if(this.value===void 0&&(this.value=[]),e.group===!0){let n=e.value,r=this.getGroupItems(n);this.isGroupSelected(n)?this.value=this.value.filter((i)=>r.findIndex((o)=>o.value===i)===-1):this.value=[...this.value,...r.map((i)=>i.value)],this.value=Array.from(new Set(this.value))}else{let n=this.value.includes(e.value);this.value=n?this.value.filter((r)=>r!==e.value):[...this.value,e.value]}}constructor(e){super(e,!1);let{options:n}=e;this.#e=e.selectableGroups!==!1,this.options=Object.entries(n).flatMap(([r,i])=>[{value:r,group:!0,label:r},...i.map((o)=>({...o,group:r}))]),this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:r})=>r===e.cursorAt),this.#e?0:1),this.on("cursor",(r)=>{switch(r){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}},uN=new Set(["up","down","left","right"]);class z$ extends Qn{#e=!1;#n;focused="editor";get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${t}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return n===`
280
+ `)),this._prevFrame=t;return}}this.output.write(Re.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}function HN(t,e){if(t===void 0||e.length===0)return 0;let n=e.findIndex((r)=>r.value===t);return n!==-1?n:0}function CN(t,e){return(e.label??String(e.value)).toLowerCase().includes(t.toLowerCase())}function LN(t,e){if(e)return t?e:e[0]}var FN=class extends Zn{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#n="";#t;#o;#a;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return mu(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let e=this.userInput.slice(0,this.cursor),n=this.userInput.slice(this.cursor,this.cursor+1),r=this.userInput.slice(this.cursor+1);return`${e}${mu("inverse",n)}${r}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#a=e.placeholder;let n=this.options;this.filteredOptions=[...n],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??CN;let r;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?r=e.initialValue:r=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(r=[this.options[0]?.value]),r)for(let i of r){let o=n.findIndex((s)=>s.value===i);o!==-1&&(this.toggleSelected(i),this.#e=o)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,o)=>this.#r(i,o)),this.on("userInput",(i)=>this.#i(i))}_isActionKey(e,n){return e==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&e!==void 0&&e!==""}#r(e,n){let r=n.name==="up",i=n.name==="down",o=n.name==="return",s=this.userInput===""||this.userInput==="\t",a=this.#a,c=this.options,u=a!==void 0&&a!==""&&c.some((l)=>!l.disabled&&(this.#t?this.#t(a,l):!0));if(n.name==="tab"&&s&&u){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}r||i?(this.#e=Vn(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):o?this.value=LN(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter((n)=>n!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#i(e){if(e!==this.#n){this.#n=e;let n=this.options;e&&this.#t?this.filteredOptions=n.filter((o)=>this.#t?.(e,o)):this.filteredOptions=[...n];let r=HN(this.focusedValue,this.filteredOptions);this.#e=Vn(r,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class fh extends Zn{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(e)=>{this.output.write(Re.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var jN={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function q$(t){return[...t].map((e)=>jN[e])}function _N(t){let e=new Intl.DateTimeFormat(t,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2000,0,15)),n=[],r="/";for(let i of e)i.type==="literal"?r=i.value.trim()||i.value:(i.type==="year"||i.type==="month"||i.type==="day")&&n.push({type:i.type,len:i.type==="year"?4:2});return{segments:n,separator:r}}function ch(t){return Number.parseInt((t||"0").replace(/_/g,"0"),10)||0}function hu(t){return{year:ch(t.year),month:ch(t.month),day:ch(t.day)}}function lh(t,e){return new Date(t||2001,e||1,0).getDate()}function Q$(t){let{year:e,month:n,day:r}=hu(t);if(!e||e<0||e>9999||!n||n<1||n>12||!r||r<1)return;let i=new Date(Date.UTC(e,n-1,r));if(!(i.getUTCFullYear()!==e||i.getUTCMonth()!==n-1||i.getUTCDate()!==r))return{year:e,month:n,day:r}}function Y$(t){let e=Q$(t);return e?new Date(Date.UTC(e.year,e.month-1,e.day)):void 0}function BN(t,e,n,r){let i=n?{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}:null,o=r?{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate()}:null;return t==="year"?{min:i?.year??1,max:o?.year??9999}:t==="month"?{min:i&&e.year===i.year?i.month:1,max:o&&e.year===o.year?o.month:12}:{min:i&&e.year===i.year&&e.month===i.month?i.day:1,max:o&&e.year===o.year&&e.month===o.month?o.day:lh(e.year,e.month)}}class X$ extends Zn{#e;#n;#t;#o;#a;#r={segmentIndex:0,positionInSegment:0};#i=!0;#s=null;inlineError="";get segmentCursor(){return{...this.#r}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#n}get formattedValue(){return this.#d(this.#t)}#d(t){return this.#e.map((e)=>t[e.type]).join(this.#n)}#c(){this._setUserInput(this.#d(this.#t)),this._setValue(Y$(this.#t)??void 0)}constructor(t){let e=t.format?{segments:q$(t.format),separator:t.separator??"/"}:_N(t.locale),n=t.separator??e.separator,r=t.format?q$(t.format):e.segments,i=t.initialValue??t.defaultValue,o=i?{year:String(i.getUTCFullYear()).padStart(4,"0"),month:String(i.getUTCMonth()+1).padStart(2,"0"),day:String(i.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},s=r.map((a)=>o[a.type]).join(n);super({...t,initialUserInput:s},!1),this.#e=r,this.#n=n,this.#t=o,this.#o=t.minDate,this.#a=t.maxDate,this.#c(),this.on("cursor",(a)=>this.#m(a)),this.on("key",(a,c)=>this.#p(a,c)),this.on("finalize",()=>this.#g(t))}#u(){let t=Math.max(0,Math.min(this.#r.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#r.positionInSegment=Math.max(0,Math.min(this.#r.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#s=null;let e=this.#u();e&&(this.#r.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#r.positionInSegment=0,this.#i=!0)}#f(t){let e=this.#u();if(!e)return;let{segment:n}=e,r=this.#t[n.type],i=!r||r.replace(/_/g,"")==="",o=Number.parseInt((r||"0").replace(/_/g,"0"),10)||0,s=BN(n.type,hu(this.#t),this.#o,this.#a),a;i?a=t===1?s.min:s.max:a=Math.max(Math.min(s.max,o+t),s.min),this.#t={...this.#t,[n.type]:a.toString().padStart(n.len,"0")},this.#i=!0,this.#s=null,this.#c()}#m(t){if(t)switch(t){case"right":return this.#l(1);case"left":return this.#l(-1);case"up":return this.#f(1);case"down":return this.#f(-1)}}#p(t,e){if(e?.name==="backspace"||e?.sequence===""||e?.sequence==="\b"||t===""||t==="\b"){this.inlineError="";let n=this.#u();if(!n)return;if(!this.#t[n.segment.type].replace(/_/g,"")){this.#l(-1);return}this.#t[n.segment.type]="_".repeat(n.segment.len),this.#i=!0,this.#r.positionInSegment=0,this.#c();return}if(e?.name==="tab"){this.inlineError="";let n=this.#u();if(!n)return;let r=e.shift?-1:1,i=n.index+r;i>=0&&i<this.#e.length&&(this.#r.segmentIndex=i,this.#r.positionInSegment=0,this.#i=!0);return}if(t&&/^[0-9]$/.test(t)){let n=this.#u();if(!n)return;let{segment:r}=n,i=!this.#t[r.type].replace(/_/g,"");if(this.#i&&this.#s!==null&&!i){let f=this.#s+t,h={...this.#t,[r.type]:f},m=this.#h(h,r);if(m){this.inlineError=m,this.#s=null,this.#i=!1;return}this.inlineError="",this.#t[r.type]=f,this.#s=null,this.#i=!1,this.#c(),n.index<this.#e.length-1&&(this.#r.segmentIndex=n.index+1,this.#r.positionInSegment=0,this.#i=!0);return}this.#i&&!i&&(this.#t[r.type]="_".repeat(r.len),this.#r.positionInSegment=0),this.#i=!1,this.#s=null;let o=this.#t[r.type],s=o.indexOf("_"),a=s>=0?s:Math.min(this.#r.positionInSegment,r.len-1);if(a<0||a>=r.len)return;let c=o.slice(0,a)+t+o.slice(a+1),u=!1;if(a===0&&o==="__"&&(r.type==="month"||r.type==="day")){let f=Number.parseInt(t,10);c=`0${t}`,u=f<=(r.type==="month"?1:2)}if(r.type==="year"&&(c=(o.replace(/_/g,"")+t).padStart(r.len,"_")),!c.includes("_")){let f={...this.#t,[r.type]:c},h=this.#h(f,r);if(h){this.inlineError=h;return}}this.inlineError="",this.#t[r.type]=c;let l=c.includes("_")?void 0:Q$(this.#t);if(l){let{year:f,month:h}=l,m=lh(f,h);this.#t={year:String(Math.max(0,Math.min(9999,f))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,h))).padStart(2,"0"),day:String(Math.max(1,Math.min(m,l.day))).padStart(2,"0")}}this.#c();let d=c.indexOf("_");u?(this.#i=!0,this.#s=t):d>=0?this.#r.positionInSegment=d:s>=0&&n.index<this.#e.length-1?(this.#r.segmentIndex=n.index+1,this.#r.positionInSegment=0,this.#i=!0):this.#r.positionInSegment=Math.min(a+1,r.len-1)}}#h(t,e){let{month:n,day:r}=hu(t);if(e.type==="month"&&(n<0||n>12))return zt.date.messages.invalidMonth;if(e.type==="day"&&(r<0||r>31))return zt.date.messages.invalidDay(31,"any month")}#g(t){let{year:e,month:n,day:r}=hu(this.#t);if(e&&n&&r){let i=lh(e,n);this.#t={...this.#t,day:String(Math.min(r,i)).padStart(2,"0")}}this.value=Y$(this.#t)??t.defaultValue??void 0}}var GN=class extends Zn{options;cursor=0;#e;getGroupItems(e){return this.options.filter((n)=>n.group===e)}isGroupSelected(e){let n=this.getGroupItems(e),r=this.value;return r===void 0?!1:n.every((i)=>r.includes(i.value))}toggleValue(){let e=this.options[this.cursor];if(e!==void 0)if(this.value===void 0&&(this.value=[]),e.group===!0){let n=e.value,r=this.getGroupItems(n);this.isGroupSelected(n)?this.value=this.value.filter((i)=>r.findIndex((o)=>o.value===i)===-1):this.value=[...this.value,...r.map((i)=>i.value)],this.value=Array.from(new Set(this.value))}else{let n=this.value.includes(e.value);this.value=n?this.value.filter((r)=>r!==e.value):[...this.value,e.value]}}constructor(e){super(e,!1);let{options:n}=e;this.#e=e.selectableGroups!==!1,this.options=Object.entries(n).flatMap(([r,i])=>[{value:r,group:!0,label:r},...i.map((o)=>({...o,group:r}))]),this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:r})=>r===e.cursorAt),this.#e?0:1),this.on("cursor",(r)=>{switch(r){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}},UN=new Set(["up","down","left","right"]);class tk extends Zn{#e=!1;#n;focused="editor";get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${t}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return n===`
281
281
  `?`${e}█
282
- ${r}`:`${e}${lu("inverse",n)}${r}`}get cursor(){return this._cursor}#t(t){if(this.userInput.length===0){this._setUserInput(t);return}this._setUserInput(this.userInput.slice(0,this.cursor)+t+this.userInput.slice(this.cursor))}#o(t){let e=this.value??"";switch(t){case"up":this._cursor=au(this._cursor,0,-1,e);return;case"down":this._cursor=au(this._cursor,0,1,e);return;case"left":this._cursor=au(this._cursor,-1,0,e);return;case"right":this._cursor=au(this._cursor,1,0,e);return}}_shouldSubmit(t,e){if(this.#n)return this.focused==="submit"?!0:(this.#t(`
282
+ ${r}`:`${e}${mu("inverse",n)}${r}`}get cursor(){return this._cursor}#t(t){if(this.userInput.length===0){this._setUserInput(t);return}this._setUserInput(this.userInput.slice(0,this.cursor)+t+this.userInput.slice(this.cursor))}#o(t){let e=this.value??"";switch(t){case"up":this._cursor=du(this._cursor,0,-1,e);return;case"down":this._cursor=du(this._cursor,0,1,e);return;case"left":this._cursor=du(this._cursor,-1,0,e);return;case"right":this._cursor=du(this._cursor,1,0,e);return}}_shouldSubmit(t,e){if(this.#n)return this.focused==="submit"?!0:(this.#t(`
283
283
  `),this._cursor++,!1);let n=this.#e;return this.#e=!0,n&&this.cursor===this.userInput.length?(this.userInput[this.cursor-1]===`
284
284
  `&&(this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--),!0):(this.#t(`
285
- `),this._cursor++,!1)}constructor(t){let e=t.initialUserInput??t.initialValue;super({...t,initialUserInput:e},!1),e!==void 0&&(this._cursor=e.length),this.#n=t.showSubmit??!1,this.on("key",(n,r)=>{if(r?.name&&uN.has(r.name)){this.#e=!1,this.#o(r.name);return}if(n==="\t"&&this.#n){this.focused=this.focused==="editor"?"submit":"editor";return}if(r?.name!=="return"){if(this.#e=!1,r?.name==="backspace"&&this.cursor>0){this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--;return}if(r?.name==="delete"&&this.cursor<this.userInput.length){this._setUserInput(this.userInput.slice(0,this.cursor)+this.userInput.slice(this.cursor+1));return}n&&(this.#n&&this.focused==="submit"&&(this.focused="editor"),this.#t(n??""),this._cursor++)}}),this.on("userInput",(n)=>{this._setValue(n)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}class ah extends Qn{options;cursor=0;get _value(){return this.options[this.cursor]?.value}get _enabledOptions(){return this.options.filter((t)=>t.disabled!==!0)}toggleAll(){let t=this._enabledOptions,e=this.value!==void 0&&this.value.length===t.length;this.value=e?[]:t.map((n)=>n.value)}toggleInvert(){let t=this.value;if(!t)return;let e=this._enabledOptions.filter((n)=>!t.includes(n.value));this.value=e.map((n)=>n.value)}toggleValue(){this.value===void 0&&(this.value=[]);let t=this.value.includes(this._value);this.value=t?this.value.filter((e)=>e!==this._value):[...this.value,this._value]}constructor(t){super(t,!1),this.options=t.options,this.value=[...t.initialValues??[]];let e=Math.max(this.options.findIndex(({value:n})=>n===t.cursorAt),0);this.cursor=this.options[e]?.disabled?Zn(e,1,this.options):e,this.on("key",(n,r)=>{r.name==="a"&&this.toggleAll(),r.name==="i"&&this.toggleInvert()}),this.on("cursor",(n)=>{switch(n){case"left":case"up":this.cursor=Zn(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Zn(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var D$=class extends Qn{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){let e=this._selectedValue;this.value=e===void 0?void 0:e.value}constructor(e){super(e,!1),this.options=e.options;let n=this.options.findIndex(({value:i})=>i===e.initialValue),r=n===-1?0:n;this.cursor=this.options[r]?.disabled?Zn(r,1,this.options):r,this.changeValue(),this.on("cursor",(i)=>{switch(i){case"left":case"up":this.cursor=Zn(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Zn(this.cursor,1,this.options);break}this.changeValue()})}};class ch extends Qn{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return`${e}${lu("inverse",n)}${r}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",(e)=>{this._setValue(e)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}import{styleText as x,stripVTControlCharacters as t_}from"node:util";import Ue from"node:process";var Z$=bd(eh(),1);function lN(){if(Ue.platform!=="win32")return Ue.env.TERM!=="linux";return Boolean(Ue.env.CI)||Boolean(Ue.env.WT_SESSION)||Boolean(Ue.env.TERMINUS_SUBLIME)||Ue.env.ConEmuTask==="{cmd::Cmder}"||Ue.env.TERM_PROGRAM==="Terminus-Sublime"||Ue.env.TERM_PROGRAM==="vscode"||Ue.env.TERM==="xterm-256color"||Ue.env.TERM==="alacritty"||Ue.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var dN=lN();var ht=(t,e)=>dN?t:e,fN=ht("◆","*"),hN=ht("■","x"),mN=ht("▲","x"),dh=ht("◇","o"),pN=ht("┌","T"),it=ht("│","|"),Xn=ht("└","—"),i_=ht("┐","T"),o_=ht("┘","—"),uh=ht("●",">"),hu=ht("○"," "),gN=ht("◻","[•]"),q$=ht("◼","[+]"),Y$=ht("◻","[ ]"),s_=ht("▪","•"),J$=ht("─","-"),bN=ht("╮","+"),wN=ht("├","+"),$N=ht("╯","+"),kN=ht("╰","+"),a_=ht("╭","+"),yN=ht("●","•"),vN=ht("◆","*"),SN=ht("▲","!"),EN=ht("■","x"),mu=(t)=>{switch(t){case"initial":case"active":return x("cyan",fN);case"cancel":return x("red",hN);case"error":return x("yellow",mN);case"submit":return x("green",dh)}},Q$=(t)=>{switch(t){case"initial":case"active":return x("cyan",it);case"cancel":return x("red",it);case"error":return x("yellow",it);case"submit":return x("green",it)}};function X$(t,e){let n=[`${e?`${x("cyan",it)} `:""}${t.join(" • ")}`];return e&&n.push(x("cyan",Xn)),n}var V$=(t,e,n,r,i,o=!1)=>{let s=e,a=0;if(o)for(let c=r-1;c>=n;c--){let u=t[c];if(u&&(s-=u.length),a++,s<=i)break}else for(let c=n;c<r;c++){let u=t[c];if(u&&(s-=u.length),a++,s<=i)break}return{lineCount:s,removals:a}},lh=({cursor:t,options:e,style:n,output:r=process.stdout,maxItems:i=Number.POSITIVE_INFINITY,columnPadding:o=0,rowPadding:s=4})=>{let a=du(r)-o,c=oh(r),u=x("dim","..."),l=Math.max(c-s,0),d=Math.max(Math.min(i,l),5),f=0;t>=d-3&&(f=Math.max(Math.min(t-d+3,e.length-d),0));let h=d<e.length&&f>0,m=d<e.length&&f+d<e.length,g=Math.min(f+d,e.length),b=[],w=0;h&&w++,m&&w++;let k=f+(h?1:0),v=g-(m?1:0);for(let M=k;M<v;M++){let I=e[M],O=I?n(I,M===t):"",H=Hr(O,a,{hard:!0,trim:!1}).split(`
286
- `);b.push(H),w+=H.length}if(w>l){let M=0,I=0,O=w,H=t-k,N=l,L=()=>V$(b,O,0,H,N),K=()=>V$(b,O,H+1,b.length,N,!0);h?({lineCount:O,removals:M}=L(),O>N&&(m||(N-=1),{lineCount:O,removals:I}=K())):(m||(N-=1),{lineCount:O,removals:I}=K(),O>N&&(N-=1,{lineCount:O,removals:M}=L())),M>0&&(h=!0,b.splice(0,M)),I>0&&(m=!0,b.splice(b.length-I,I))}let S=[];h&&S.push(u);for(let M of b)for(let I of M)S.push(I);return m&&S.push(u),S};var nn=(t)=>{let e=t.active??"Yes",n=t.inactive??"No";return new sh({active:e,inactive:n,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue??!0,render(){let r=t.withGuide??Kt.withGuide,i=`${mu(this.state)} `,o=r?`${x("gray",it)} `:"",s=Cr(t.output,t.message,o,i),a=`${r?`${x("gray",it)}
285
+ `),this._cursor++,!1)}constructor(t){let e=t.initialUserInput??t.initialValue;super({...t,initialUserInput:e},!1),e!==void 0&&(this._cursor=e.length),this.#n=t.showSubmit??!1,this.on("key",(n,r)=>{if(r?.name&&UN.has(r.name)){this.#e=!1,this.#o(r.name);return}if(n==="\t"&&this.#n){this.focused=this.focused==="editor"?"submit":"editor";return}if(r?.name!=="return"){if(this.#e=!1,r?.name==="backspace"&&this.cursor>0){this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--;return}if(r?.name==="delete"&&this.cursor<this.userInput.length){this._setUserInput(this.userInput.slice(0,this.cursor)+this.userInput.slice(this.cursor+1));return}n&&(this.#n&&this.focused==="submit"&&(this.focused="editor"),this.#t(n??""),this._cursor++)}}),this.on("userInput",(n)=>{this._setValue(n)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}class hh extends Zn{options;cursor=0;get _value(){return this.options[this.cursor]?.value}get _enabledOptions(){return this.options.filter((t)=>t.disabled!==!0)}toggleAll(){let t=this._enabledOptions,e=this.value!==void 0&&this.value.length===t.length;this.value=e?[]:t.map((n)=>n.value)}toggleInvert(){let t=this.value;if(!t)return;let e=this._enabledOptions.filter((n)=>!t.includes(n.value));this.value=e.map((n)=>n.value)}toggleValue(){this.value===void 0&&(this.value=[]);let t=this.value.includes(this._value);this.value=t?this.value.filter((e)=>e!==this._value):[...this.value,this._value]}constructor(t){super(t,!1),this.options=t.options,this.value=[...t.initialValues??[]];let e=Math.max(this.options.findIndex(({value:n})=>n===t.cursorAt),0);this.cursor=this.options[e]?.disabled?Vn(e,1,this.options):e,this.on("key",(n,r)=>{r.name==="a"&&this.toggleAll(),r.name==="i"&&this.toggleInvert()}),this.on("cursor",(n)=>{switch(n){case"left":case"up":this.cursor=Vn(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Vn(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var ek=class extends Zn{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){let e=this._selectedValue;this.value=e===void 0?void 0:e.value}constructor(e){super(e,!1),this.options=e.options;let n=this.options.findIndex(({value:i})=>i===e.initialValue),r=n===-1?0:n;this.cursor=this.options[r]?.disabled?Vn(r,1,this.options):r,this.changeValue(),this.on("cursor",(i)=>{switch(i){case"left":case"up":this.cursor=Vn(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Vn(this.cursor,1,this.options);break}this.changeValue()})}};class mh extends Zn{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return`${e}${mu("inverse",n)}${r}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",(e)=>{this._setValue(e)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}import{styleText as O,stripVTControlCharacters as J_}from"node:util";import Ue from"node:process";var sk=Sd(ah(),1);function WN(){if(Ue.platform!=="win32")return Ue.env.TERM!=="linux";return Boolean(Ue.env.CI)||Boolean(Ue.env.WT_SESSION)||Boolean(Ue.env.TERMINUS_SUBLIME)||Ue.env.ConEmuTask==="{cmd::Cmder}"||Ue.env.TERM_PROGRAM==="Terminus-Sublime"||Ue.env.TERM_PROGRAM==="vscode"||Ue.env.TERM==="xterm-256color"||Ue.env.TERM==="alacritty"||Ue.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var KN=WN();var ht=(t,e)=>KN?t:e,zN=ht("◆","*"),DN=ht("■","x"),qN=ht("▲","x"),bh=ht("◇","o"),YN=ht("┌","T"),it=ht("│","|"),Qn=ht("└","—"),X_=ht("┐","T"),tB=ht("┘","—"),ph=ht("●",">"),bu=ht("○"," "),JN=ht("◻","[•]"),nk=ht("◼","[+]"),rk=ht("◻","[ ]"),eB=ht("▪","•"),ik=ht("─","-"),VN=ht("╮","+"),ZN=ht("├","+"),QN=ht("╯","+"),XN=ht("╰","+"),nB=ht("╭","+"),tA=ht("●","•"),eA=ht("◆","*"),nA=ht("▲","!"),rA=ht("■","x"),wu=(t)=>{switch(t){case"initial":case"active":return O("cyan",zN);case"cancel":return O("red",DN);case"error":return O("yellow",qN);case"submit":return O("green",bh)}},ak=(t)=>{switch(t){case"initial":case"active":return O("cyan",it);case"cancel":return O("red",it);case"error":return O("yellow",it);case"submit":return O("green",it)}};function ck(t,e){let n=[`${e?`${O("cyan",it)} `:""}${t.join(" • ")}`];return e&&n.push(O("cyan",Qn)),n}var ok=(t,e,n,r,i,o=!1)=>{let s=e,a=0;if(o)for(let c=r-1;c>=n;c--){let u=t[c];if(u&&(s-=u.length),a++,s<=i)break}else for(let c=n;c<r;c++){let u=t[c];if(u&&(s-=u.length),a++,s<=i)break}return{lineCount:s,removals:a}},gh=({cursor:t,options:e,style:n,output:r=process.stdout,maxItems:i=Number.POSITIVE_INFINITY,columnPadding:o=0,rowPadding:s=4})=>{let a=pu(r)-o,c=dh(r),u=O("dim","..."),l=Math.max(c-s,0),d=Math.max(Math.min(i,l),5),f=0;t>=d-3&&(f=Math.max(Math.min(t-d+3,e.length-d),0));let h=d<e.length&&f>0,m=d<e.length&&f+d<e.length,p=Math.min(f+d,e.length),b=[],$=0;h&&$++,m&&$++;let k=f+(h?1:0),v=p-(m?1:0);for(let M=k;M<v;M++){let I=e[M],x=I?n(I,M===t):"",H=Hr(x,a,{hard:!0,trim:!1}).split(`
286
+ `);b.push(H),$+=H.length}if($>l){let M=0,I=0,x=$,H=t-k,N=l,j=()=>ok(b,x,0,H,N),W=()=>ok(b,x,H+1,b.length,N,!0);h?({lineCount:x,removals:M}=j(),x>N&&(m||(N-=1),{lineCount:x,removals:I}=W())):(m||(N-=1),{lineCount:x,removals:I}=W(),x>N&&(N-=1,{lineCount:x,removals:M}=j())),M>0&&(h=!0,b.splice(0,M)),I>0&&(m=!0,b.splice(b.length-I,I))}let S=[];h&&S.push(u);for(let M of b)for(let I of M)S.push(I);return m&&S.push(u),S};var en=(t)=>{let e=t.active??"Yes",n=t.inactive??"No";return new fh({active:e,inactive:n,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue??!0,render(){let r=t.withGuide??zt.withGuide,i=`${wu(this.state)} `,o=r?`${O("gray",it)} `:"",s=Cr(t.output,t.message,o,i),a=`${r?`${O("gray",it)}
287
287
  `:""}${s}
288
- `,c=this.value?e:n;switch(this.state){case"submit":{let u=r?`${x("gray",it)} `:"";return`${a}${u}${x("dim",c)}`}case"cancel":{let u=r?`${x("gray",it)} `:"";return`${a}${u}${x(["strikethrough","dim"],c)}${r?`
289
- ${x("gray",it)}`:""}`}default:{let u=r?`${x("cyan",it)} `:"",l=r?x("cyan",Xn):"";return`${a}${u}${this.value?`${x("green",uh)} ${e}`:`${x("dim",hu)} ${x("dim",e)}`}${t.vertical?r?`
290
- ${x("cyan",it)} `:`
291
- `:` ${x("dim","/")} `}${this.value?`${x("dim",hu)} ${x("dim",n)}`:`${x("green",uh)} ${n}`}
288
+ `,c=this.value?e:n;switch(this.state){case"submit":{let u=r?`${O("gray",it)} `:"";return`${a}${u}${O("dim",c)}`}case"cancel":{let u=r?`${O("gray",it)} `:"";return`${a}${u}${O(["strikethrough","dim"],c)}${r?`
289
+ ${O("gray",it)}`:""}`}default:{let u=r?`${O("cyan",it)} `:"",l=r?O("cyan",Qn):"";return`${a}${u}${this.value?`${O("green",ph)} ${e}`:`${O("dim",bu)} ${O("dim",e)}`}${t.vertical?r?`
290
+ ${O("cyan",it)} `:`
291
+ `:` ${O("dim","/")} `}${this.value?`${O("dim",bu)} ${O("dim",n)}`:`${O("green",ph)} ${n}`}
292
292
  ${l}
293
- `}}}}).prompt()};var MN=[`${x("dim","↑/↓")} to navigate`,`${x("dim","Space:")} select`,`${x("dim","Enter:")} confirm`],oa=(t,e)=>t.split(`
293
+ `}}}}).prompt()};var iA=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Space:")} select`,`${O("dim","Enter:")} confirm`],da=(t,e)=>t.split(`
294
294
  `).map((n)=>e(n)).join(`
295
- `),tk=(t)=>{let e=(i,o)=>{let s=i.label??String(i.value);return o==="disabled"?`${x("gray",Y$)} ${oa(s,(a)=>x(["strikethrough","gray"],a))}${i.hint?` ${x("dim",`(${i.hint??"disabled"})`)}`:""}`:o==="active"?`${x("cyan",gN)} ${s}${i.hint?` ${x("dim",`(${i.hint})`)}`:""}`:o==="selected"?`${x("green",q$)} ${oa(s,(a)=>x("dim",a))}${i.hint?` ${x("dim",`(${i.hint})`)}`:""}`:o==="cancelled"?`${oa(s,(a)=>x(["strikethrough","dim"],a))}`:o==="active-selected"?`${x("green",q$)} ${s}${i.hint?` ${x("dim",`(${i.hint})`)}`:""}`:o==="submitted"?`${oa(s,(a)=>x("dim",a))}`:`${x("dim",Y$)} ${oa(s,(a)=>x("dim",a))}`},n=t.required??!0,r=t.showInstructions??!0;return new ah({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValues:t.initialValues,required:n,cursorAt:t.cursorAt,validate(i){if(n&&(i===void 0||i.length===0))return`Please select at least one option.
296
- ${x("reset",x("dim",`Press ${x(["gray","bgWhite","inverse"]," space ")} to select, ${x("gray",x("bgWhite",x("inverse"," enter ")))} to submit`))}`},render(){let i=t.withGuide??Kt.withGuide,o=Cr(t.output,t.message,i?`${Q$(this.state)} `:"",`${mu(this.state)} `),s=`${i?`${x("gray",it)}
295
+ `),uk=(t)=>{let e=(i,o)=>{let s=i.label??String(i.value);return o==="disabled"?`${O("gray",rk)} ${da(s,(a)=>O(["strikethrough","gray"],a))}${i.hint?` ${O("dim",`(${i.hint??"disabled"})`)}`:""}`:o==="active"?`${O("cyan",JN)} ${s}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="selected"?`${O("green",nk)} ${da(s,(a)=>O("dim",a))}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="cancelled"?`${da(s,(a)=>O(["strikethrough","dim"],a))}`:o==="active-selected"?`${O("green",nk)} ${s}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="submitted"?`${da(s,(a)=>O("dim",a))}`:`${O("dim",rk)} ${da(s,(a)=>O("dim",a))}`},n=t.required??!0,r=t.showInstructions??!0;return new hh({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValues:t.initialValues,required:n,cursorAt:t.cursorAt,validate(i){if(n&&(i===void 0||i.length===0))return`Please select at least one option.
296
+ ${O("reset",O("dim",`Press ${O(["gray","bgWhite","inverse"]," space ")} to select, ${O("gray",O("bgWhite",O("inverse"," enter ")))} to submit`))}`},render(){let i=t.withGuide??zt.withGuide,o=Cr(t.output,t.message,i?`${ak(this.state)} `:"",`${wu(this.state)} `),s=`${i?`${O("gray",it)}
297
297
  `:""}${o}
298
- `,a=this.value??[],c=(u,l)=>{if(u.disabled)return e(u,"disabled");let d=a.includes(u.value);return l&&d?e(u,"active-selected"):d?e(u,"selected"):e(u,l?"active":"inactive")};switch(this.state){case"submit":{let u=this.options.filter(({value:d})=>a.includes(d)).map((d)=>e(d,"submitted")).join(x("dim",", "))||x("dim","none"),l=Cr(t.output,u,i?`${x("gray",it)} `:"");return`${s}${l}`}case"cancel":{let u=this.options.filter(({value:d})=>a.includes(d)).map((d)=>e(d,"cancelled")).join(x("dim",", "));if(u.trim()==="")return`${s}${x("gray",it)}`;let l=Cr(t.output,u,i?`${x("gray",it)} `:"");return`${s}${l}${i?`
299
- ${x("gray",it)}`:""}`}case"error":{let u=i?`${x("yellow",it)} `:"",l=this.error.split(`
300
- `).map((h,m)=>m===0?`${i?`${x("yellow",Xn)} `:""}${x("yellow",h)}`:` ${h}`).join(`
298
+ `,a=this.value??[],c=(u,l)=>{if(u.disabled)return e(u,"disabled");let d=a.includes(u.value);return l&&d?e(u,"active-selected"):d?e(u,"selected"):e(u,l?"active":"inactive")};switch(this.state){case"submit":{let u=this.options.filter(({value:d})=>a.includes(d)).map((d)=>e(d,"submitted")).join(O("dim",", "))||O("dim","none"),l=Cr(t.output,u,i?`${O("gray",it)} `:"");return`${s}${l}`}case"cancel":{let u=this.options.filter(({value:d})=>a.includes(d)).map((d)=>e(d,"cancelled")).join(O("dim",", "));if(u.trim()==="")return`${s}${O("gray",it)}`;let l=Cr(t.output,u,i?`${O("gray",it)} `:"");return`${s}${l}${i?`
299
+ ${O("gray",it)}`:""}`}case"error":{let u=i?`${O("yellow",it)} `:"",l=this.error.split(`
300
+ `).map((h,m)=>m===0?`${i?`${O("yellow",Qn)} `:""}${O("yellow",h)}`:` ${h}`).join(`
301
301
  `),d=s.split(`
302
302
  `).length,f=l.split(`
303
- `).length+1;return`${s}${u}${lh({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:d+f,style:c}).join(`
303
+ `).length+1;return`${s}${u}${gh({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:d+f,style:c}).join(`
304
304
  ${u}`)}
305
305
  ${l}
306
- `}default:{let u=i?`${x("cyan",it)} `:"",l=s.split(`
307
- `).length,d=r?X$(MN,i):i?[x("cyan",Xn)]:[],f=d.join(`
308
- `),h=d.length+1;return`${s}${u}${lh({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:l+h,style:c}).join(`
306
+ `}default:{let u=i?`${O("cyan",it)} `:"",l=s.split(`
307
+ `).length,d=r?ck(iA,i):i?[O("cyan",Qn)]:[],f=d.join(`
308
+ `),h=d.length+1;return`${s}${u}${gh({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:l+h,style:c}).join(`
309
309
  ${u}`)}
310
310
  ${f}
311
- `}}}}).prompt()};var Lr={message:(t=[],{symbol:e=x("gray",it),secondarySymbol:n=x("gray",it),output:r=process.stdout,spacing:i=1,withGuide:o}={})=>{let s=[],a=o??Kt.withGuide,c=a?n:"",u=a?`${e} `:"",l=a?`${n} `:"";for(let f=0;f<i;f++)s.push(c);let d=Array.isArray(t)?t:t.split(`
311
+ `}}}}).prompt()};var Lr={message:(t=[],{symbol:e=O("gray",it),secondarySymbol:n=O("gray",it),output:r=process.stdout,spacing:i=1,withGuide:o}={})=>{let s=[],a=o??zt.withGuide,c=a?n:"",u=a?`${e} `:"",l=a?`${n} `:"";for(let f=0;f<i;f++)s.push(c);let d=Array.isArray(t)?t:t.split(`
312
312
  `);if(d.length>0){let[f,...h]=d;f.length>0?s.push(`${u}${f}`):s.push(a?e:"");for(let m of h)m.length>0?s.push(`${l}${m}`):s.push(a?n:"")}r.write(`${s.join(`
313
313
  `)}
314
- `)},info:(t,e)=>{Lr.message(t,{...e,symbol:x("blue",yN)})},success:(t,e)=>{Lr.message(t,{...e,symbol:x("green",vN)})},step:(t,e)=>{Lr.message(t,{...e,symbol:x("green",dh)})},warn:(t,e)=>{Lr.message(t,{...e,symbol:x("yellow",SN)})},warning:(t,e)=>{Lr.warn(t,e)},error:(t,e)=>{Lr.message(t,{...e,symbol:x("red",EN)})}},Fr=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Kt.withGuide?`${x("gray",Xn)} `:"";n.write(`${r}${x("red",t)}
314
+ `)},info:(t,e)=>{Lr.message(t,{...e,symbol:O("blue",tA)})},success:(t,e)=>{Lr.message(t,{...e,symbol:O("green",eA)})},step:(t,e)=>{Lr.message(t,{...e,symbol:O("green",bh)})},warn:(t,e)=>{Lr.message(t,{...e,symbol:O("yellow",nA)})},warning:(t,e)=>{Lr.warn(t,e)},error:(t,e)=>{Lr.message(t,{...e,symbol:O("red",rA)})}},Fr=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??zt.withGuide?`${O("gray",Qn)} `:"";n.write(`${r}${O("red",t)}
315
315
 
316
- `)},pu=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Kt.withGuide?`${x("gray",pN)} `:"";n.write(`${r}${t}
317
- `)},sa=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Kt.withGuide?`${x("gray",it)}
318
- ${x("gray",Xn)} `:"";n.write(`${r}${t}
316
+ `)},$u=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??zt.withGuide?`${O("gray",YN)} `:"";n.write(`${r}${t}
317
+ `)},fa=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??zt.withGuide?`${O("gray",it)}
318
+ ${O("gray",Qn)} `:"";n.write(`${r}${t}
319
319
 
320
- `)};var xN=(t)=>t,ON=(t,e,n)=>{let r={hard:!0,trim:!1},i=Hr(t,e,r).split(`
321
- `),o=i.reduce((c,u)=>Math.max(_(u),c),0),s=i.map(n).reduce((c,u)=>Math.max(_(u),c),0),a=e-(s-o);return Hr(t,a,r)},Mn=(t="",e="",n)=>{let r=n?.output??Ue.stdout,i=n?.withGuide??Kt.withGuide,o=n?.format??xN,s=["",...ON(t,du(r)-6,o).split(`
322
- `).map(o),""],a=_(e),c=Math.max(s.reduce((f,h)=>{let m=_(h);return m>f?m:f},0),a)+2,u=s.map((f)=>`${x("gray",it)} ${f}${" ".repeat(c-_(f))}${x("gray",it)}`).join(`
323
- `),l=i?`${x("gray",it)}
324
- `:"",d=i?wN:kN;r.write(`${l}${x("green",dh)} ${x("reset",e)} ${x("gray",J$.repeat(Math.max(c-a-1,1))+bN)}
320
+ `)};var oA=(t)=>t,sA=(t,e,n)=>{let r={hard:!0,trim:!1},i=Hr(t,e,r).split(`
321
+ `),o=i.reduce((c,u)=>Math.max(B(u),c),0),s=i.map(n).reduce((c,u)=>Math.max(B(u),c),0),a=e-(s-o);return Hr(t,a,r)},En=(t="",e="",n)=>{let r=n?.output??Ue.stdout,i=n?.withGuide??zt.withGuide,o=n?.format??oA,s=["",...sA(t,pu(r)-6,o).split(`
322
+ `).map(o),""],a=B(e),c=Math.max(s.reduce((f,h)=>{let m=B(h);return m>f?m:f},0),a)+2,u=s.map((f)=>`${O("gray",it)} ${f}${" ".repeat(c-B(f))}${O("gray",it)}`).join(`
323
+ `),l=i?`${O("gray",it)}
324
+ `:"",d=i?ZN:XN;r.write(`${l}${O("green",bh)} ${O("reset",e)} ${O("gray",ik.repeat(Math.max(c-a-1,1))+VN)}
325
325
  ${u}
326
- ${x("gray",d+J$.repeat(c+2)+$N)}
327
- `)};var c_={light:ht("─","-"),heavy:ht("━","="),block:ht("█","#")};var IN=[`${x("dim","↑/↓")} to navigate`,`${x("dim","Enter:")} confirm`],fu=(t,e)=>t.includes(`
326
+ ${O("gray",d+ik.repeat(c+2)+QN)}
327
+ `)};var rB={light:ht("─","-"),heavy:ht("━","="),block:ht("█","#")};var aA=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Enter:")} confirm`],gu=(t,e)=>t.includes(`
328
328
  `)?t.split(`
329
329
  `).map((n)=>e(n)).join(`
330
- `):e(t),ek=(t)=>{let e=(r,i)=>{if(r===void 0)return"";let o=r.label??String(r.value);switch(i){case"disabled":return`${x("gray",hu)} ${fu(o,(s)=>x("gray",s))}${r.hint?` ${x("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${fu(o,(s)=>x("dim",s))}`;case"active":return`${x("green",uh)} ${o}${r.hint?` ${x("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${fu(o,(s)=>x(["strikethrough","dim"],s))}`;default:return`${x("dim",hu)} ${fu(o,(s)=>x("dim",s))}`}},n=t.showInstructions??!0;return new D$({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,render(){let r=t.withGuide??Kt.withGuide,i=`${mu(this.state)} `,o=`${Q$(this.state)} `,s=Cr(t.output,t.message,o,i),a=`${r?`${x("gray",it)}
330
+ `):e(t),lk=(t)=>{let e=(r,i)=>{if(r===void 0)return"";let o=r.label??String(r.value);switch(i){case"disabled":return`${O("gray",bu)} ${gu(o,(s)=>O("gray",s))}${r.hint?` ${O("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${gu(o,(s)=>O("dim",s))}`;case"active":return`${O("green",ph)} ${o}${r.hint?` ${O("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${gu(o,(s)=>O(["strikethrough","dim"],s))}`;default:return`${O("dim",bu)} ${gu(o,(s)=>O("dim",s))}`}},n=t.showInstructions??!0;return new ek({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,render(){let r=t.withGuide??zt.withGuide,i=`${wu(this.state)} `,o=`${ak(this.state)} `,s=Cr(t.output,t.message,o,i),a=`${r?`${O("gray",it)}
331
331
  `:""}${s}
332
- `;switch(this.state){case"submit":{let c=r?`${x("gray",it)} `:"",u=Cr(t.output,e(this.options[this.cursor],"selected"),c);return`${a}${u}`}case"cancel":{let c=r?`${x("gray",it)} `:"",u=Cr(t.output,e(this.options[this.cursor],"cancelled"),c);return`${a}${u}${r?`
333
- ${x("gray",it)}`:""}`}default:{let c=r?`${x("cyan",it)} `:"",u=a.split(`
334
- `).length,l=n?X$(IN,r):r?[x("cyan",Xn)]:[],d=l.join(`
335
- `),f=l.length+1;return`${a}${c}${lh({output:t.output,cursor:this.cursor,options:this.options,maxItems:t.maxItems,columnPadding:c.length,rowPadding:u+f,style:(h,m)=>e(h,h.disabled?"disabled":m?"active":"inactive")}).join(`
332
+ `;switch(this.state){case"submit":{let c=r?`${O("gray",it)} `:"",u=Cr(t.output,e(this.options[this.cursor],"selected"),c);return`${a}${u}`}case"cancel":{let c=r?`${O("gray",it)} `:"",u=Cr(t.output,e(this.options[this.cursor],"cancelled"),c);return`${a}${u}${r?`
333
+ ${O("gray",it)}`:""}`}default:{let c=r?`${O("cyan",it)} `:"",u=a.split(`
334
+ `).length,l=n?ck(aA,r):r?[O("cyan",Qn)]:[],d=l.join(`
335
+ `),f=l.length+1;return`${a}${c}${gh({output:t.output,cursor:this.cursor,options:this.options,maxItems:t.maxItems,columnPadding:c.length,rowPadding:u+f,style:(h,m)=>e(h,h.disabled?"disabled":m?"active":"inactive")}).join(`
336
336
  ${c}`)}
337
337
  ${d}
338
- `}}}}).prompt()};var u_=`${x("gray",it)} `;var fh=(t)=>new ch({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,output:t.output,signal:t.signal,input:t.input,render(){let e=t?.withGuide??Kt.withGuide,n=`${`${e?`${x("gray",it)}
339
- `:""}${mu(this.state)} `}${t.message}
340
- `,r=t.placeholder&&t.placeholder.length>0?x("inverse",t.placeholder[0])+x("dim",t.placeholder.slice(1)):x(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,o=this.value??"";switch(this.state){case"error":{let s=this.error?` ${x("yellow",this.error)}`:"",a=e?`${x("yellow",it)} `:"",c=e?x("yellow",Xn):"";return`${n.trim()}
338
+ `}}}}).prompt()};var iB=`${O("gray",it)} `;var wh=(t)=>new mh({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,output:t.output,signal:t.signal,input:t.input,render(){let e=t?.withGuide??zt.withGuide,n=`${`${e?`${O("gray",it)}
339
+ `:""}${wu(this.state)} `}${t.message}
340
+ `,r=t.placeholder&&t.placeholder.length>0?O("inverse",t.placeholder[0])+O("dim",t.placeholder.slice(1)):O(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,o=this.value??"";switch(this.state){case"error":{let s=this.error?` ${O("yellow",this.error)}`:"",a=e?`${O("yellow",it)} `:"",c=e?O("yellow",Qn):"";return`${n.trim()}
341
341
  ${a}${i}
342
342
  ${c}${s}
343
- `}case"submit":{let s=o?` ${x("dim",o)}`:"",a=e?x("gray",it):"";return`${n}${a}${s}`}case"cancel":{let s=o?` ${x(["strikethrough","dim"],o)}`:"",a=e?x("gray",it):"";return`${n}${a}${s}${o.trim()?`
344
- ${a}`:""}`}default:{let s=e?`${x("cyan",it)} `:"",a=e?x("cyan",Xn):"";return`${n}${s}${i}
343
+ `}case"submit":{let s=o?` ${O("dim",o)}`:"",a=e?O("gray",it):"";return`${n}${a}${s}`}case"cancel":{let s=o?` ${O(["strikethrough","dim"],o)}`:"",a=e?O("gray",it):"";return`${n}${a}${s}${o.trim()?`
344
+ ${a}`:""}`}default:{let s=e?`${O("cyan",it)} `:"",a=e?O("cyan",Qn):"";return`${n}${s}${i}
345
345
  ${a}
346
- `}}}}).prompt();import{existsSync as Wu,readFileSync as ky,rmSync as um}from"node:fs";import{homedir as an}from"node:os";import{join as ts}from"node:path";var nk=44,zt=[{name:"Shell",lines:["«B4»~/code/demo«d» on «5»main«2» +2«3» ~1","«2»❯ «»git status -sb","«w»## «2»main«»...«1»origin/main«3» [ahead 1]","«1» M«» src/main.rs","«1»??«» notes.md","","«w»«2»❯ «»ls","«w»«B4»docs«» «B4»src«» «B4»tests«» Cargo.toml README.md","«w»","«2»❯ «»cargo test","«2» ✓«» parses config","«n»«1» ✗«» renders frame","«w»«1» ✗«» renders frame«d» expected «2»3«d», received «1»2","","«2»❯ «»echo «s»selected text«» «c» "]},{name:"Code",lines:["«d» 12 │ «5»import«» { readFile } «5»from «2»'node:fs/promises'","«d» 13 │","«d» 14 │ «8»// Read a palette and check its sixteen colors","«d» 15 │ «5»export async function «4»load«»(path: «6»string«») {","«d» 16 │ «5»const«» text = «5»await «4»readFile«»(path, «2»'utf8'«»)","«b» 17 «d»│ «5»const«» colors = «s»parse(text)«».colors ?? {}","«d» 18 │ «5»if«» (colors.ansi.length !== «3»16«») {","«d» 19 │ «5»throw new «6»Error«»(«2»'needs 16 colors'«»)","«d» 20 │ }","«d» 21 │ «5»return«» { ...colors, ratio: «c»4«3».5«» }","«d» 22 │ }"]},{name:"Diff",lines:["«2»❯ «»git diff --stat","«» src/theme.ts | 3 «2»++«1»-","«2»❯ «»git diff","«b»diff --git a/src/theme.ts b/src/theme.ts","«6»@@ -16,3 +16,4 @@«» export async function load(","«» const text = await readFile(path, 'utf8')","«1»- const colors = parse(text).colors","«2»+ const colors = parse(text).colors ?? {}","«2»+ const ratio = contrast(colors)","«2»❯ «»git log --oneline --graph -4","«3»* 3f2a1c9 («B6»HEAD -> «B2»main«3»)«» Check contrast on load","«3»* 9b04e7d«» Merge branch ansi","«1»|«5»\\","«1»| «5»* «3»51cd0aa«» Add sixteen ANSI colors","«1»|«5»/","«3»* 07be2f1 («B1»origin/main«3», «B3»tag: v1.0«3»)«» Read palette files"]},{name:"Logs",lines:["«2»❯ «»npm run dev","«B2» VITE v6.2.0«d» ready in «b»412«d» ms","«2» ➜ «b»Local«»: «6»http://localhost:5173/","«d»10:42:07 «2»INFO «» GET /api/palettes «2»200«d» 12 ms","«d»10:42:08 «2»INFO «» GET /api/themes/kita «2»200«d» 8 ms","«d»10:42:09 «3»WARN «» slow query: palettes «3»812 ms","«d»10:42:10 «4»DEBUG«» cache hit themes/kita","«d»10:42:11 «B1»ERROR«» POST /api/share «1»500«d» 41 ms","«1» Error«»: read ECONNRESET","«d» at «»TCP.onStreamRead «d»(«6»node:net:216:20«d»)","«d» at «»share «d»(«6»src/share.ts:48:11«d»)","«d»10:42:12 «2»INFO «» retry 1/3 in 200 ms"]},{name:"Monitor",lines:["«6» 1 «b»[«2»|||||||||||||«1»||«» 42.1%«b»]«6» Tasks: «b»128«», 412 thr; «B2»3«» running","«6» 2 «b»[«2»||||||«4»||«» 21.4%«b»]«6» Load average: «b»1.42 «»1.18 0.97","«6» 3 «b»[«2»||||||||||||||«1»|||||«» 71.0%«b»]«6» Uptime: «b»3 days, 04:12:55","«6» 4 «b»[«2»||«» 7.9%«b»]","«6» Mem«b»[«2»||||||||«4»||«3»||«» 6.21G/16.0G«b»]","«6» Swp«b»[«1»|«» 0.10G/2.00G«b»]","","«K2» PID USER CPU% MEM% TIME+ Command ","«s» 4127 kec 38.2 2.1 3:12.44 node dev.js ","«» 2210 kec 12.0 4.8 1:02.10 «b»ghostty","«» 3301 kec 4.4 1.2 0:05.61 «b»zsh","«» 812 «1»root«» 3.1 0.3 0:44.02 «d»kernel_task","«» 167 «1»root«» 0.9 0.1 0:12.80 «d»WindowServer"]}];function Ii(t){let e=zt.length;return zt[(t%e+e)%e]}function Wo(t,e){let n=t.split("«"),r=n[0]?[[n[0],""]]:[];for(let i of n.slice(1)){let o=i.indexOf("»"),s=i.slice(0,o),a=i.slice(o+1);if(s==="w"||s==="n"){if(s==="w"!==e>=44)return}if(a)r.push([a,s==="w"||s==="n"?"":s])}return r}import{createHash as FN}from"node:crypto";import{existsSync as wu,readFileSync as kh,rmSync as sk}from"node:fs";import{homedir as ak}from"node:os";import{join as Ri}from"node:path";function jr(t){return[`# ${t.name} — ${t.group}${t.native?` (${t.native})`:""}`,`# ANSI: ${t.ansiSource}`]}function tr(t,e){return[`[${t}]`,`Color=${et(e).join(",")}`,""]}function hh(t,e,n=["Wallpaper="]){let r=(i)=>pt(i,t.background,0.5);return[...tr("Background",t.background),...tr("BackgroundFaint",t.background),...tr("BackgroundIntense",t.background),...t.ansi.slice(0,8).flatMap((i,o)=>[...tr(`Color${o}`,i),...tr(`Color${o}Faint`,r(i)),...tr(`Color${o}Intense`,t.ansi[o+8])]),...tr("Foreground",t.foreground),...tr("ForegroundFaint",r(t.foreground)),...tr("ForegroundIntense",t.foreground),"[General]","Blur=false","ColorRandomization=false",`Description=${e}`,"Opacity=1",...n,""]}var rk={left:"0",top:"0",center:"0.5",right:"1",bottom:"1"};function RN(t){if(!t||t.opacity<=0)return["Wallpaper="];let[e="center",n="center"]=t.position.split("-");return[`Wallpaper=${t.image}`,`FillStyle=${t.cover?"Crop":"Adapt"}`,`Anchor=${rk[n]??"0.5"},${rk[e]??"0.5"}`,`WallpaperOpacity=${t.opacity}`]}function mh(t,e){return[...jr(t),"",...hh(t,`ttheme · ${t.name}`,RN(e))].join(`
347
- `)}var ph={id:"konsole",limits:"draws no OSC 4, so a tab repaints by switching color scheme",emit(t){return[{path:`konsole/${j(t.name)}.colorscheme`,content:mh(t)}]}};import{openSync as PN,writeSync as NN}from"node:fs";import{ReadStream as AN}from"node:tty";var rn=["11","10","12","17",...Array.from({length:16},(t,e)=>`4;${e}`)];function Pt(t=process.env){return Boolean(t.NO_COLOR)||t.TERM==="dumb"}function TN(t,e){return`\x1B]${rn[t]};${e}\x1B\\`}function er(t,e){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi].map((n,r)=>e&&!e.includes(r)?"":TN(r,n)).join("")}function HN(t){return`\x1B]${t.startsWith("4;")?`104;${t.slice(2)}`:`1${t}`}\x1B\\`}function CN(t){let e=new Map;for(let n of t.split("\x1B")){let r=n.match(/^\](\d+(?:;\d+)?);(rgba?:[0-9a-fA-F/]+)/),[,i,o]=r??[];if(i&&o)e.set(i,o)}return e}function ik(t){return`#${t.slice(t.indexOf(":")+1).split("/").slice(0,3).map((n)=>n.slice(0,2).padStart(2,"0")).join("")}`}function ok(t){return rn.map((e)=>{let n=t.get(e);return n?ik(n):void 0})}function gu(t,e=[...t.keys()],n=!1){return e.map((r)=>{let i=t.get(r);return i?`\x1B]${r};${n?ik(i):i}\x1B\\`:HN(r)}).join("")}function bu(t,e){return`\x1B]50;ColorScheme=${t};UseCustomCursorColor=true;customCursorColor=${e}\x07`}function gh(t=rn,e="\x1B[5n"){return`${t.map((n)=>`\x1B]${n};?\x1B\\`).join("")}${e}`}function LN(t){return t.includes("\x1B[0n")}async function bh(t=rn){let e,n;try{e=PN("/dev/tty","r+"),n=new AN(e),n.setRawMode(!0)}catch{return new Map}try{NN(e,gh(t));let r="";return await new Promise((i)=>{let o=setTimeout(i,120);n.on("data",(s)=>{if(r+=s.toString(),LN(r))clearTimeout(o),i()})}),CN(r)}finally{n.setRawMode(!1),n.destroy()}}function yh(t){if(t.NVIM)return"nvim";if(t.VIM_TERMINAL)return"vim";if(t.INSIDE_EMACS)return"emacs";return t.TERM_PROGRAM==="vscode"?"vscode":void 0}function Dt(t){if(yh(t))return"editor";if(t.TERM_PROGRAM==="WarpTerminal")return"warp";if(t.GHOSTTY_RESOURCES_DIR||t.TERM_PROGRAM==="ghostty")return"ghostty";if(t.KITTY_WINDOW_ID)return"kitty";if(t.WEZTERM_PANE)return"wezterm";if(t.ALACRITTY_WINDOW_ID)return"alacritty";if(t.KONSOLE_VERSION)return"konsole";if(t.ITERM_SESSION_ID||t.TERM_PROGRAM==="iTerm.app")return"iterm2";if(t.TERM_PROGRAM==="Apple_Terminal")return"terminal-app";if(t.WT_SESSION&&!t.TERM_PROGRAM)return"windows-terminal";if(t.TERM?.startsWith("foot"))return"foot";return"unknown"}var pe={ghostty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},kitty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},iterm2:{links:!0,pictures:!0,bands:!0,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1]},wezterm:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!1,paints:!0,wipes:!0,views:!0},alacritty:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"windows-terminal":{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},konsole:{links:!1,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1],hex:!0,schemes:!0},foot:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"terminal-app":{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},warp:{links:!0,pictures:!0,bands:!0,files:!1,moves:!1,layers:!1,paints:!1},editor:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!1},unknown:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0}};function wh(t,e,n){let r="";for(let i of t.split(`
348
- `)){let o=i.trim();if(o.startsWith("[")&&o.endsWith("]"))r=o.slice(1,-1);else if(r===e&&o.startsWith(`${n}=`))return o.slice(n.length+1)}return}function jN(t){let e=t.XDG_CONFIG_HOME??Ri(ak(),".config"),n=Ri(e,"konsolerc"),r=wu(n)?wh(kh(n,"utf8"),"Desktop Entry","DefaultProfile"):void 0;for(let i=0;i<8&&r&&r!=="FALLBACK/";i++){let o=r.endsWith(".profile")?r:`${r}.profile`,s=dk(t).map((u)=>Ri(u,o)).find((u)=>wu(u));if(!s)return!1;let a=kh(s,"utf8"),c=wh(a,"Interaction Options","AllowEscapedLinks");if(c!==void 0)return c==="true";r=wh(a,"General","Parent")}return!1}function ck(t){let e=Dt(t);return e==="konsole"?jN(t):pe[e].links}function Ko(t,e){let n=Dt(t),r=pe[n];return r.pictures&&!t.TMUX&&(!r.views||e.includes(n))}function $u(t){return pe[Dt(t)].bands}function ku(t){return pe[Dt(t)].files}function zo(t){return pe[Dt(t)].layers}function uk(t){return pe[Dt(t)].moves}function lk(t){return pe[Dt(t)].wipes===!0}function Pi(t){return pe[Dt(t)].views===!0}function Ni(t){return`\x1B]1337;SetUserVar=ttheme_view=${Buffer.from(t).toString("base64")}\x07`}var Ai="\x1B[H\x1B[K\x1B[2H\x1B[J\x1B[H",vh=120,$h=4,_N=40;function BN(t){let e=t.TTHEME_ITERM_SHOWN;return t.TTHEME_ITERM_SWITCH==="1"&&t.TTHEME_ITERM_DYED==="0"&&e?`ttheme · ${e}`:void 0}function GN(t,e){let n=pe.iterm2.repaint??[],r=rn.map((c,u)=>u).filter((c)=>!n.includes(c)),i=new Set(n),o=BN(t),s=[],a=()=>{for(let c of s)clearTimeout(c);s=[]};return{slots:n,paint(c){a();for(let u=0;u<r.length;u+=$h){let l=r.slice(u,u+$h),d=setTimeout(()=>{for(let f of l)i.add(f);e(er(c,l))},vh+u/$h*_N);d.unref?.(),s.push(d)}return er(c,n)},wear:(c)=>er(c),saved:()=>bh(),restore(c){a();let u=rn.filter((l,d)=>i.has(d));return o?`\x1B[?2026h${gu(new Map,u)}\x1B]1337;SetProfile=${o}\x07\x1B[?2026l`:gu(c,u)},stop:a}}var UN=3,WN=/^(Wallpaper|FillStyle|Anchor|WallpaperOpacity|WallpaperFlipType)=/;function dk(t){return[t.XDG_DATA_HOME??Ri(ak(),".local","share"),...(t.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((e)=>Ri(e,"konsole"))}function KN(t,e){let n=/(?:^|;)ColorScheme=([^;]+)/.exec(e)?.[1],r=n&&t.map((c)=>Ri(c,`${n}.colorscheme`)).find((c)=>wu(c));if(!r)return["Wallpaper="];let i=kh(r,"utf8").split(`
349
- `),o=i.findIndex((c)=>c.trim()==="[General]"),s=i.findIndex((c,u)=>u>o&&c.trimStart().startsWith("[")),a=o<0?[]:i.slice(o+1,s<0?void 0:s).filter((c)=>WN.test(c));return a.length>0?a:["Wallpaper="]}function zN(t,e){let n=dk(t),r=n[0],i=KN(n,e),o=[],s=(c,u,l)=>{let d=hh(u,`ttheme · ${c}`,i).join(`
350
- `),f=`${j("view")}.${FN("sha1").update(d).digest("hex").slice(0,10)}`,h=Ri(r,`${f}.colorscheme`);if(!wu(h))F(h,d);if(!o.includes(h))o.push(h);for(let m of o.splice(0,Math.max(0,o.length-UN)))sk(m,{force:!0});return bu(f,l)},a=()=>{for(let c of o.splice(0))sk(c,{force:!0})};return{slots:[],paint:(c)=>s(c.name,c,c.cursor),wear:(c,u)=>u.includes("konsole")?bu(j(c.name),c.cursor):void 0,saved:async()=>new Map,restore:()=>{return a(),`\x1B]50;${e}\x07`},stop:a}}function fk(t,e,n=(r)=>{process.stdout.write(r)}){let r=Dt(t),i=pe[r];if(!e||Pt(t)||t.TMUX||!i.paints)return;if(r==="iterm2")return GN(t,n);if(r==="konsole"&&t.TTHEME_KONSOLE_LOOK)return zN(t,t.TTHEME_KONSOLE_LOOK);let o=i.repaint??rn.map((a,c)=>c),s=rn.filter((a,c)=>o.includes(c));return{slots:o,paint:(a)=>er(a,o),wear:(a,c)=>!i.schemes?er(a):c.includes(r)?bu(j(a.name),a.cursor):void 0,saved:()=>bh(s),restore:(a)=>gu(a,s,i.hex===!0)}}var Zt=["ghostty","kitty","alacritty","wezterm","iterm2","windows-terminal","warp","konsole","terminal-app"];var DN=[{section:"tab",title:"This tab"},{section:"startup",title:"New tabs"},{section:"catalog",title:"Palettes"},{section:"own",title:"Your own"},{section:"setup",title:"Setup"},{section:"support",title:"Support"}],ua=[{name:"preview",args:[],about:"Try palettes live — focus repaints, enter edits its tone and picture and applies it, esc restores, ? lists keys",section:"tab",start:"Try every palette live — enter tunes the one you land on and applies it",shell:!0},{name:"use",args:["<palette>"],about:"Paint this tab — a unique prefix works: ttheme use ho",section:"tab",start:"Paint this tab with one — ttheme use homura",shell:!0},{name:"next",args:[],about:"Advance this tab to the next palette",section:"tab",shell:!0},{name:"default",args:["<palette>"],about:"Make a palette the one new tabs open with",section:"startup"},{name:"on",args:[],about:"Wear the default palette in new tabs again",section:"startup"},{name:"off",args:[],about:"Take the palette and picture off every tab — the terminal's own colors until `ttheme on`",section:"startup"},{name:"pin",args:["[directory|ssh:<host>]"],about:"Pick a palette for this directory, everything below it, its repository or an ssh host — cd or ssh in repaints, leaving restores",section:"tab",shell:!0},{name:"unpin",args:["[directory|ssh:<host>]"],about:"Drop a pin — this directory's, every one below it, the one above that paints it, or an ssh host's",section:"tab",shell:!0},{name:"pins",args:[],about:"Map every pinned directory as a tree in its palette's colors, every ssh host, and the pin that covers this one",section:"tab",shell:!0},{name:"config",args:[],about:"Edit settings in $EDITOR — they apply in new tabs",section:"startup",shell:!0},{name:"browse",args:[],about:"Pick palettes and markets in a live picker — shift+←/→ moves between Catalog, Installed, Markets and Errors",section:"catalog",start:"Install or drop palettes, add markets — every change applies at once on enter"},{name:"list",args:["[query]"],about:"Show the catalog, marking what is installed",section:"catalog",flags:{json:{type:"boolean",about:"Print the matches as JSON: name, group, catalog, installed"}}},{name:"add",args:["<palette...>"],about:"Install palettes from the catalog, or from a share code: ttheme add tt1:…",section:"catalog",flags:{market:{type:"string",value:"<source>",about:"Add this market first — a repository, a folder or official — and take bare palette names from it"}}},{name:"remove",args:["<palette...>"],about:"Uninstall palettes",section:"catalog"},{name:"update",args:[],about:"Refresh every market you added now — those with auto-update refresh on their own once a day",section:"catalog"},{name:"market",args:["[action]","[source]"],about:"The markets you added — add, remove and search them; init makes one of your own",actions:[["(none)","List the markets you added: palettes, auto-update and the last update"],["add <source>","Add one: a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official — asks whether it updates on its own"],["remove <market>","Drop one by its name (alice@pastel) — the palettes you installed from it keep working"],["search [query]","Repositories on GitHub with the ttheme-market topic"],["init [name]","Make a market of your own, <you>@<name>, in ~/.config/ttheme/market/<name> (or give a folder)"],["check [dir]","Check a market's folder before you push it — ttheme-market.toml, every palette, the renames and the gate; nothing is written"]],section:"catalog"},{name:"new",args:["<name>"],about:"Make a palette of your own, <you>@<market>/<name>, from blank in the palette editor — installed at once",section:"own",flags:{from:{type:"string",value:"<palette>",about:"Open the editor on this palette's colors instead of blank"},in:{type:"string",value:"<market>",about:"The local market to put it in, when you have more than one"}}},{name:"edit",args:["<palette>"],about:"Change one of your palettes in the palette editor — the contrast gate advises, never refuses",section:"own"},{name:"check",args:["<palette>"],about:"Measure a palette against the contrast gate and suggest colors that pass",section:"own",flags:{fix:{type:"boolean",about:"Write the suggested colors into your palette"}}},{name:"share",args:["<palette>"],about:"Print a share code — ttheme add <code> installs it anywhere, pictures included",section:"own",flags:{tone:{type:"string",value:"<tuned|original>",choices:["tuned","original"],about:"Share the palette as you tuned its colors, or as it was — asked when you tuned it and omit this"}}},{name:"init",args:[],about:"Install the shell layer and wire your terminal configs",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Accept every default without prompting"}}},{name:"uninstall",args:[],about:"Take ttheme out of every terminal config and delete what it wrote",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Remove without asking"}}},{name:"wire",args:["<terminal>"],about:"Wire one more terminal into this setup, after showing what it edits — the shell offers it in a terminal that paints only through the config init would have wired",section:"setup",hidden:!0},{name:"info",args:[],about:"Print what a bug report needs — version, OS, shell, terminal and the settings you changed",section:"support"},{name:"build",args:[],about:"Emit dist/ for every terminal, plus the zsh palette table — from a checkout",section:"setup",hidden:!0,flags:{only:{type:"string",multiple:!0,value:"<terminal>",choices:Zt,about:"Rebuild just this terminal — repeat it for more"}}},{name:"find",args:["<palette>"],about:"Pick a booru background for a palette — preview opens this on tab",section:"setup",hidden:!0},{name:"image",args:["<palette>","<action>","[picture]"],about:"Show one of a palette's saved backgrounds, remove one, draw one in its palette's tone or its own colors (or get the other ready before it is asked for), or pass on tuning — preview calls this",section:"setup",hidden:!0},{name:"flatten",args:["<source>","<out>","<background>","<opacity>","[canvas]","[place]","[into]"],about:"Lay a picture on a background color at an opacity, placed on a canvas when given one, for Warp, which fades the window instead, and Terminal.app, which takes it written into the file its profile points at and renamed to the out — preview calls this",section:"setup",hidden:!0},{name:"bake",args:["<source>","<out>","<canvas>","<place>"],about:"Place a picture on a transparent canvas the way sips bakes preview's tuning — preview in Warp calls this",section:"setup",hidden:!0},{name:"tone",args:["<palette>","<action>"],about:"Print a palette's colors for preview's panel, or open them in the palette editor — preview calls this",section:"setup",hidden:!0},{name:"redraw",args:[],about:"Draw the background pictures again after TTHEME_BG_BLUR changed — ttheme config and preview call this",section:"setup",hidden:!0},{name:"names",args:[],about:"Download aninames' character names when its release changed and index them — any command starts this in the background once a day",section:"setup",hidden:!0}];function ca(t){let e=Object.entries(t.flags??{}).map(([n,{value:r}])=>`[--${n}${r?` ${r}`:""}]`);return[t.name,...e,...t.args].join(" ")}function Sh(t,e=Math.max(...t.map(([n])=>n.length))){return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}var qN=[["npx @kecan0406/ttheme init -y","Wire the terminals found here, no prompts"],["ttheme add homura madoka","Install two palettes"],["ttheme use homura","Paint this tab with one"],["ttheme list --json madoka","The madoka series as JSON"],["ttheme market add alice/ttheme-pastel","alice's market, alice@pastel — ttheme add alice@pastel/dusk"],["ttheme add dusk --market alice/ttheme-pastel","The same in one step"],["ttheme new rei --from rei","Your own rei, <you>@<market>/rei, to edit and share"]];function la(t,e=!1){let n=ua.filter((s)=>!s.hidden&&!(e&&s.section==="setup")),r=DN.filter(({section:s})=>n.some((a)=>a.section===s)),i=[...e?["ttheme alone opens preview and browse as tabs — tab and shift+tab move between them"]:[],t?"ttheme help <command> describes one command · ttheme --version prints the version":"ttheme help <command> describes one · ttheme help all lists every command with what it does","https://kecan0406.github.io/ttheme"];if(!t){let s=n.filter((c)=>c.start),a=Math.max(...r.map(({title:c})=>c.length));return["Usage: ttheme <command>","",At.description,"","Start here",...Sh(s.map((c)=>[ca(c),c.start])),"",...r.map(({section:c,title:u})=>`${u.padEnd(a)} ${n.filter((l)=>l.section===c).map((l)=>l.name).join(" · ")}`),"",...i].join(`
351
- `)}let o=Math.max(...n.map((s)=>ca(s).length));return["Usage: ttheme <command>","",At.description,...r.flatMap(({section:s,title:a})=>["",a,...Sh(n.filter((c)=>c.section===s).map((c)=>[ca(c),c.about]),o)]),"","Examples",...Sh(qN),"",...i].join(`
352
- `)}import{readFileSync as YN}from"node:fs";import{join as JN}from"node:path";var Eh="# ttheme begin",Mh="# ttheme end",Do=/# ttheme begin\n[\s\S]*?# ttheme end\n?/;function _r(t,e){let n=`${Eh}
346
+ `}}}}).prompt();import{existsSync as qu,readFileSync as Fy,rmSync as pm}from"node:fs";import{homedir as sn}from"node:os";import{join as as}from"node:path";var dk=44,Dt=[{name:"Shell",lines:["«B4»~/code/demo«d» on «5»main«2» +2«3» ~1","«2»❯ «»git status -sb","«w»## «2»main«»...«1»origin/main«3» [ahead 1]","«1» M«» src/main.rs","«1»??«» notes.md","","«w»«2»❯ «»ls","«w»«B4»docs«» «B4»src«» «B4»tests«» Cargo.toml README.md","«w»","«2»❯ «»cargo test","«2» ✓«» parses config","«n»«1» ✗«» renders frame","«w»«1» ✗«» renders frame«d» expected «2»3«d», received «1»2","","«2»❯ «»echo «s»selected text«» «c» "]},{name:"Code",lines:["«d» 12 │ «5»import«» { readFile } «5»from «2»'node:fs/promises'","«d» 13 │","«d» 14 │ «8»// Read a palette and check its sixteen colors","«d» 15 │ «5»export async function «4»load«»(path: «6»string«») {","«d» 16 │ «5»const«» text = «5»await «4»readFile«»(path, «2»'utf8'«»)","«b» 17 «d»│ «5»const«» colors = «s»parse(text)«».colors ?? {}","«d» 18 │ «5»if«» (colors.ansi.length !== «3»16«») {","«d» 19 │ «5»throw new «6»Error«»(«2»'needs 16 colors'«»)","«d» 20 │ }","«d» 21 │ «5»return«» { ...colors, ratio: «c»4«3».5«» }","«d» 22 │ }"]},{name:"Diff",lines:["«2»❯ «»git diff --stat","«» src/theme.ts | 3 «2»++«1»-","«2»❯ «»git diff","«b»diff --git a/src/theme.ts b/src/theme.ts","«6»@@ -16,3 +16,4 @@«» export async function load(","«» const text = await readFile(path, 'utf8')","«1»- const colors = parse(text).colors","«2»+ const colors = parse(text).colors ?? {}","«2»+ const ratio = contrast(colors)","«2»❯ «»git log --oneline --graph -4","«3»* 3f2a1c9 («B6»HEAD -> «B2»main«3»)«» Check contrast on load","«3»* 9b04e7d«» Merge branch ansi","«1»|«5»\\","«1»| «5»* «3»51cd0aa«» Add sixteen ANSI colors","«1»|«5»/","«3»* 07be2f1 («B1»origin/main«3», «B3»tag: v1.0«3»)«» Read palette files"]},{name:"Logs",lines:["«2»❯ «»npm run dev","«B2» VITE v6.2.0«d» ready in «b»412«d» ms","«2» ➜ «b»Local«»: «6»http://localhost:5173/","«d»10:42:07 «2»INFO «» GET /api/palettes «2»200«d» 12 ms","«d»10:42:08 «2»INFO «» GET /api/themes/kita «2»200«d» 8 ms","«d»10:42:09 «3»WARN «» slow query: palettes «3»812 ms","«d»10:42:10 «4»DEBUG«» cache hit themes/kita","«d»10:42:11 «B1»ERROR«» POST /api/share «1»500«d» 41 ms","«1» Error«»: read ECONNRESET","«d» at «»TCP.onStreamRead «d»(«6»node:net:216:20«d»)","«d» at «»share «d»(«6»src/share.ts:48:11«d»)","«d»10:42:12 «2»INFO «» retry 1/3 in 200 ms"]},{name:"Monitor",lines:["«6» 1 «b»[«2»|||||||||||||«1»||«» 42.1%«b»]«6» Tasks: «b»128«», 412 thr; «B2»3«» running","«6» 2 «b»[«2»||||||«4»||«» 21.4%«b»]«6» Load average: «b»1.42 «»1.18 0.97","«6» 3 «b»[«2»||||||||||||||«1»|||||«» 71.0%«b»]«6» Uptime: «b»3 days, 04:12:55","«6» 4 «b»[«2»||«» 7.9%«b»]","«6» Mem«b»[«2»||||||||«4»||«3»||«» 6.21G/16.0G«b»]","«6» Swp«b»[«1»|«» 0.10G/2.00G«b»]","","«K2» PID USER CPU% MEM% TIME+ Command ","«s» 4127 kec 38.2 2.1 3:12.44 node dev.js ","«» 2210 kec 12.0 4.8 1:02.10 «b»ghostty","«» 3301 kec 4.4 1.2 0:05.61 «b»zsh","«» 812 «1»root«» 3.1 0.3 0:44.02 «d»kernel_task","«» 167 «1»root«» 0.9 0.1 0:12.80 «d»WindowServer"]}];function Ri(t){let e=Dt.length;return Dt[(t%e+e)%e]}function Yo(t,e){let n=t.split("«"),r=n[0]?[[n[0],""]]:[];for(let i of n.slice(1)){let o=i.indexOf("»"),s=i.slice(0,o),a=i.slice(o+1);if(s==="w"||s==="n"){if(s==="w"!==e>=44)return}if(a)r.push([a,s==="w"||s==="n"?"":s])}return r}import{createHash as gA}from"node:crypto";import{existsSync as vu,readFileSync as xh,rmSync as pk}from"node:fs";import{homedir as gk}from"node:os";import{join as Pi}from"node:path";function jr(t){return[`# ${t.name} — ${t.group}${t.native?` (${t.native})`:""}`,`# ANSI: ${t.ansiSource}`]}function Xn(t,e){return[`[${t}]`,`Color=${nt(e).join(",")}`,""]}function $h(t,e,n=["Wallpaper="]){let r=(i)=>bt(i,t.background,0.5);return[...Xn("Background",t.background),...Xn("BackgroundFaint",t.background),...Xn("BackgroundIntense",t.background),...t.ansi.slice(0,8).flatMap((i,o)=>[...Xn(`Color${o}`,i),...Xn(`Color${o}Faint`,r(i)),...Xn(`Color${o}Intense`,t.ansi[o+8])]),...Xn("Foreground",t.foreground),...Xn("ForegroundFaint",r(t.foreground)),...Xn("ForegroundIntense",t.foreground),"[General]","Blur=false","ColorRandomization=false",`Description=${e}`,"Opacity=1",...n,""]}var fk={left:"0",top:"0",center:"0.5",right:"1",bottom:"1"};function cA(t){if(!t||t.opacity<=0)return["Wallpaper="];let[e="center",n="center"]=t.position.split("-");return[`Wallpaper=${t.image}`,`FillStyle=${t.cover?"Crop":"Adapt"}`,`Anchor=${fk[n]??"0.5"},${fk[e]??"0.5"}`,`WallpaperOpacity=${t.opacity}`]}function kh(t,e){return[...jr(t),"",...$h(t,`ttheme · ${t.name}`,cA(e))].join(`
347
+ `)}var yh={id:"konsole",limits:"draws no OSC 4, so a tab repaints by switching color scheme",emit(t){return[{path:`konsole/${F(t.name)}.colorscheme`,content:kh(t)}]}};import{openSync as uA,writeSync as lA}from"node:fs";import{ReadStream as dA}from"node:tty";var nn=["11","10","12","17",...Array.from({length:16},(t,e)=>`4;${e}`)];function Nt(t=process.env){return Boolean(t.NO_COLOR)||t.TERM==="dumb"}function fA(t,e){return`\x1B]${nn[t]};${e}\x1B\\`}function tr(t,e){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi].map((n,r)=>e&&!e.includes(r)?"":fA(r,n)).join("")}function hA(t){return`\x1B]${t.startsWith("4;")?`104;${t.slice(2)}`:`1${t}`}\x1B\\`}function mA(t){let e=new Map;for(let n of t.split("\x1B")){let r=n.match(/^\](\d+(?:;\d+)?);(rgba?:[0-9a-fA-F/]+)/),[,i,o]=r??[];if(i&&o)e.set(i,o)}return e}function hk(t){return`#${t.slice(t.indexOf(":")+1).split("/").slice(0,3).map((n)=>n.slice(0,2).padStart(2,"0")).join("")}`}function mk(t){return nn.map((e)=>{let n=t.get(e);return n?hk(n):void 0})}function ku(t,e=[...t.keys()],n=!1){return e.map((r)=>{let i=t.get(r);return i?`\x1B]${r};${n?hk(i):i}\x1B\\`:hA(r)}).join("")}function yu(t,e){return`\x1B]50;ColorScheme=${t};UseCustomCursorColor=true;customCursorColor=${e}\x07`}function vh(t=nn,e="\x1B[5n"){return`${t.map((n)=>`\x1B]${n};?\x1B\\`).join("")}${e}`}function pA(t){return t.includes("\x1B[0n")}async function Sh(t=nn){let e,n;try{e=uA("/dev/tty","r+"),n=new dA(e),n.setRawMode(!0)}catch{return new Map}try{lA(e,vh(t));let r="";return await new Promise((i)=>{let o=setTimeout(i,120);n.on("data",(s)=>{if(r+=s.toString(),pA(r))clearTimeout(o),i()})}),mA(r)}finally{n.setRawMode(!1),n.destroy()}}function Oh(t){if(t.NVIM)return"nvim";if(t.VIM_TERMINAL)return"vim";if(t.INSIDE_EMACS)return"emacs";return t.TERM_PROGRAM==="vscode"?"vscode":void 0}function qt(t){if(Oh(t))return"editor";if(t.TERM_PROGRAM==="WarpTerminal")return"warp";if(t.GHOSTTY_RESOURCES_DIR||t.TERM_PROGRAM==="ghostty")return"ghostty";if(t.KITTY_WINDOW_ID)return"kitty";if(t.WEZTERM_PANE)return"wezterm";if(t.ALACRITTY_WINDOW_ID)return"alacritty";if(t.KONSOLE_VERSION)return"konsole";if(t.ITERM_SESSION_ID||t.TERM_PROGRAM==="iTerm.app")return"iterm2";if(t.TERM_PROGRAM==="Apple_Terminal")return"terminal-app";if(t.WT_SESSION&&!t.TERM_PROGRAM)return"windows-terminal";if(t.TERM?.startsWith("foot"))return"foot";return"unknown"}var pe={ghostty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},kitty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},iterm2:{links:!0,pictures:!0,bands:!0,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1]},wezterm:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!1,paints:!0,wipes:!0,views:!0},alacritty:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"windows-terminal":{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},konsole:{links:!1,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1],hex:!0,schemes:!0},foot:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"terminal-app":{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},warp:{links:!0,pictures:!0,bands:!0,files:!1,moves:!1,layers:!1,paints:!1},editor:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!1},unknown:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0}};function Eh(t,e,n){let r="";for(let i of t.split(`
348
+ `)){let o=i.trim();if(o.startsWith("[")&&o.endsWith("]"))r=o.slice(1,-1);else if(r===e&&o.startsWith(`${n}=`))return o.slice(n.length+1)}return}function bA(t){let e=t.XDG_CONFIG_HOME??Pi(gk(),".config"),n=Pi(e,"konsolerc"),r=vu(n)?Eh(xh(n,"utf8"),"Desktop Entry","DefaultProfile"):void 0;for(let i=0;i<8&&r&&r!=="FALLBACK/";i++){let o=r.endsWith(".profile")?r:`${r}.profile`,s=kk(t).map((u)=>Pi(u,o)).find((u)=>vu(u));if(!s)return!1;let a=xh(s,"utf8"),c=Eh(a,"Interaction Options","AllowEscapedLinks");if(c!==void 0)return c==="true";r=Eh(a,"General","Parent")}return!1}function bk(t){let e=qt(t);return e==="konsole"?bA(t):pe[e].links}function Jo(t,e){let n=qt(t),r=pe[n];return r.pictures&&!t.TMUX&&(!r.views||e.includes(n))}function Su(t){return pe[qt(t)].bands}function Eu(t){return pe[qt(t)].files}function Vo(t){return pe[qt(t)].layers}function wk(t){return pe[qt(t)].moves}function $k(t){return pe[qt(t)].wipes===!0}function Ni(t){return pe[qt(t)].views===!0}function Ai(t){return`\x1B]1337;SetUserVar=ttheme_view=${Buffer.from(t).toString("base64")}\x07`}var Ti="\x1B[H\x1B[K\x1B[2H\x1B[J\x1B[H",Ih=120,Mh=4,wA=40;function $A(t){let e=t.TTHEME_ITERM_SHOWN;return t.TTHEME_ITERM_SWITCH==="1"&&t.TTHEME_ITERM_DYED==="0"&&e?`ttheme · ${e}`:void 0}function kA(t,e){let n=pe.iterm2.repaint??[],r=nn.map((c,u)=>u).filter((c)=>!n.includes(c)),i=new Set(n),o=$A(t),s=[],a=()=>{for(let c of s)clearTimeout(c);s=[]};return{slots:n,paint(c){a();for(let u=0;u<r.length;u+=Mh){let l=r.slice(u,u+Mh),d=setTimeout(()=>{for(let f of l)i.add(f);e(tr(c,l))},Ih+u/Mh*wA);d.unref?.(),s.push(d)}return tr(c,n)},wear:(c)=>tr(c),saved:()=>Sh(),restore(c){a();let u=nn.filter((l,d)=>i.has(d));return o?`\x1B[?2026h${ku(new Map,u)}\x1B]1337;SetProfile=${o}\x07\x1B[?2026l`:ku(c,u)},stop:a}}var yA=3,vA=/^(Wallpaper|FillStyle|Anchor|WallpaperOpacity|WallpaperFlipType)=/;function kk(t){return[t.XDG_DATA_HOME??Pi(gk(),".local","share"),...(t.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((e)=>Pi(e,"konsole"))}function SA(t,e){let n=/(?:^|;)ColorScheme=([^;]+)/.exec(e)?.[1],r=n&&t.map((c)=>Pi(c,`${n}.colorscheme`)).find((c)=>vu(c));if(!r)return["Wallpaper="];let i=xh(r,"utf8").split(`
349
+ `),o=i.findIndex((c)=>c.trim()==="[General]"),s=i.findIndex((c,u)=>u>o&&c.trimStart().startsWith("[")),a=o<0?[]:i.slice(o+1,s<0?void 0:s).filter((c)=>vA.test(c));return a.length>0?a:["Wallpaper="]}function EA(t,e){let n=kk(t),r=n[0],i=SA(n,e),o=[],s=(c,u,l)=>{let d=$h(u,`ttheme · ${c}`,i).join(`
350
+ `),f=`${F("view")}.${gA("sha1").update(d).digest("hex").slice(0,10)}`,h=Pi(r,`${f}.colorscheme`);if(!vu(h))L(h,d);if(!o.includes(h))o.push(h);for(let m of o.splice(0,Math.max(0,o.length-yA)))pk(m,{force:!0});return yu(f,l)},a=()=>{for(let c of o.splice(0))pk(c,{force:!0})};return{slots:[],paint:(c)=>s(c.name,c,c.cursor),wear:(c,u)=>u.includes("konsole")?yu(F(c.name),c.cursor):void 0,saved:async()=>new Map,restore:()=>{return a(),`\x1B]50;${e}\x07`},stop:a}}function yk(t,e,n=(r)=>{process.stdout.write(r)}){let r=qt(t),i=pe[r];if(!e||Nt(t)||t.TMUX||!i.paints)return;if(r==="iterm2")return kA(t,n);if(r==="konsole"&&t.TTHEME_KONSOLE_LOOK)return EA(t,t.TTHEME_KONSOLE_LOOK);let o=i.repaint??nn.map((a,c)=>c),s=nn.filter((a,c)=>o.includes(c));return{slots:o,paint:(a)=>tr(a,o),wear:(a,c)=>!i.schemes?tr(a):c.includes(r)?yu(F(a.name),a.cursor):void 0,saved:()=>Sh(s),restore:(a)=>ku(a,s,i.hex===!0)}}var Zt=["ghostty","kitty","alacritty","wezterm","iterm2","windows-terminal","warp","konsole","terminal-app"];var MA=[{section:"tab",title:"This tab"},{section:"startup",title:"New tabs"},{section:"catalog",title:"Palettes"},{section:"own",title:"Your own"},{section:"setup",title:"Setup"},{section:"support",title:"Support"}],Qo=[{name:"preview",args:[],about:"Try palettes live — focus repaints, enter edits its tone and picture and applies it, esc restores, ? lists keys",section:"tab",shell:!0},{name:"use",args:["<palette>"],about:"Paint this tab — a unique prefix works: ttheme use ho",section:"tab",shell:!0},{name:"default",args:["<palette>"],about:"Make a palette the one new tabs open with",section:"startup"},{name:"on",args:[],about:"Wear the default palette in new tabs again",section:"startup"},{name:"off",args:[],about:"Take the palette and picture off every tab — the terminal's own colors until `ttheme on`",section:"startup"},{name:"pin",args:["[dir|ssh:<host>]"],about:"Pin a palette to a directory or an ssh host — the pin covers everything below it, or its whole repository; cd or ssh in repaints, leaving restores",section:"tab",shell:!0},{name:"unpin",args:["[dir|ssh:<host>]"],about:"Drop a pin — this directory's, every one below it, the one above that paints it, or an ssh host's",section:"tab",shell:!0},{name:"pins",args:[],about:"Map every pin — the pinned directories as a tree in their palettes' colors, every ssh host, and the pin that covers this one",section:"tab",shell:!0},{name:"config",args:[],about:"Edit settings in $EDITOR — they apply in new tabs",section:"startup",shell:!0},{name:"browse",args:[],about:"Pick palettes and markets in a live picker — shift+←/→ moves between Catalog, Installed, Markets and Errors",section:"catalog"},{name:"list",args:["[query]"],about:"Show the catalog, marking what is installed",section:"catalog",flags:{json:{type:"boolean",about:"Print the matches as JSON — name, group, catalog, installed"}}},{name:"add",args:["<palette...>"],about:"Install palettes — from the catalog, or from a share code: ttheme add tt2:…",section:"catalog",flags:{market:{type:"string",value:"<source>",about:"Add this market first — a repository, a folder or official — and take bare palette names from it"}}},{name:"remove",args:["<palette...>"],about:"Uninstall palettes",section:"catalog"},{name:"update",args:["[market...]"],about:"Update ttheme and refresh your markets — official palettes come with ttheme; an installed palette from another market keeps its colors until browse's Installed tab takes its update",section:"catalog"},{name:"market",args:["[action]","[source]"],about:"The markets you added — add, remove and search them; init makes one of your own",actions:[["(none)","List the markets you added — their palettes, auto-update and last update"],["add <source>","Add a market — a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official; asks whether it updates on its own"],["remove <market>","Drop one by its name (alice@pastel) — the palettes you installed from it keep working"],["search [query]","Repositories on GitHub with the ttheme-market topic"],["init [name]","Make a market of your own — <you>@<name>, in ~/.config/ttheme/market/<name> or a folder you give"],["check [dir]","Check a market's folder before you push it — ttheme-market.toml, every palette, the renames and the gate; nothing is written"]],section:"catalog"},{name:"new",args:["<name>"],about:"Make a palette of your own in the palette editor — <you>@<market>/<name>, from blank, installed at once",section:"own",flags:{from:{type:"string",value:"<palette>",about:"Start from this palette's colors instead of blank"},in:{type:"string",value:"<market>",about:"The local market to put it in — when you have more than one"}}},{name:"edit",args:["<palette>"],about:"Change one of your palettes in the palette editor — the contrast gate advises, never refuses",section:"own"},{name:"check",args:["<palette>"],about:"Measure a palette against the contrast gate — where it misses, suggest colors that pass",section:"own",flags:{fix:{type:"boolean",about:"Write the suggested colors into your palette"}}},{name:"share",args:["<palette>"],about:"Print a share code — ttheme add <code> installs it anywhere, pictures included",section:"own",flags:{tone:{type:"string",value:"<tuned|original>",choices:["tuned","original"],about:"Share it as you tuned it, or as it was — asked when you tuned it and omit this"}}},{name:"init",args:[],about:"Install the shell layer and wire your terminals",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Accept every default without prompting"}}},{name:"uninstall",args:[],about:"Remove ttheme — its block comes out of every terminal config and what it wrote is deleted",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Remove without asking"}}},{name:"wire",args:["<terminal>"],about:"Wire one more terminal into this setup, after showing what it edits — the shell offers it in a terminal that paints only through the config init would have wired",section:"setup",hidden:!0},{name:"info",args:[],about:"Print what a bug report needs — version, OS, shell, terminal and the settings you changed",section:"support"},{name:"build",args:[],about:"Emit dist/ for every terminal, plus the zsh palette table — from a checkout",section:"setup",hidden:!0,flags:{only:{type:"string",multiple:!0,value:"<terminal>",choices:Zt,about:"Rebuild just this terminal — repeat it for more"}}},{name:"find",args:["<palette>"],about:"Pick a booru background for a palette — preview opens this on tab",section:"setup",hidden:!0},{name:"image",args:["<palette>","<action>","[picture]"],about:"Show one of a palette's saved backgrounds, remove one, draw one in its palette's tone or its own colors (or get the other ready before it is asked for), or pass on tuning — preview calls this",section:"setup",hidden:!0},{name:"flatten",args:["<source>","<out>","<background>","<opacity>","[canvas]","[place]","[into]"],about:"Lay a picture on a background color at an opacity, placed on a canvas when given one, for Warp, which fades the window instead, and Terminal.app, which takes it written into the file its profile points at and renamed to the out — preview calls this",section:"setup",hidden:!0},{name:"bake",args:["<source>","<out>","<canvas>","<place>"],about:"Place a picture on a transparent canvas the way sips bakes preview's tuning — preview in Warp calls this",section:"setup",hidden:!0},{name:"tone",args:["<palette>","<action>"],about:"Print a palette's colors for preview's panel, or open them in the palette editor — preview calls this",section:"setup",hidden:!0},{name:"redraw",args:[],about:"Draw the background pictures again after TTHEME_BG_BLUR changed — ttheme config and preview call this",section:"setup",hidden:!0},{name:"latest",args:[],about:"Ask npm for the newest ttheme — any command starts this in the background once a day",section:"setup",hidden:!0},{name:"names",args:[],about:"Download aninames' character names when its release changed and index them — any command starts this in the background once a day",section:"setup",hidden:!0}];function xA(t){let e=Object.entries(t.flags??{}).map(([n,{value:r}])=>`[--${n}${r?` ${r}`:""}]`);return[t.name,...e,...t.args].join(" ")}function Zo(t,e=OA){return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}function vk(t){return t.split(" — ")[0]}function Ek(t){return Object.entries(t.flags??{}).map(([e,{short:n,value:r,about:i}])=>[`${n?`-${n}, `:""}--${e}${r?` ${r}`:""}`,i])}function Mk(t,e){let n=e?[...t.actions??[],...Ek(t)]:[];return[[[t.name,...t.args].join(" "),vk(t.about)],...n.map(([r,i])=>[` ${r}`,vk(i)])]}var xk=[`ttheme ${lt.version}`,lt.description,"Usage: ttheme <command> [options] [args]"],Ok=[["ttheme help","Every command"],["ttheme help all","Every command with its options, and examples"],["ttheme help <command>","One command in full"]],Ik=[["-h, --help","Show help — after a command, that command's"],["-v, --version","Print the version"]],OA=Math.max(...[...Ok,...Ik,...Qo.filter((t)=>!t.hidden).flatMap((t)=>Mk(t,!0))].map(([t])=>t.length)),Sk=[["npx @kecan0406/ttheme init -y","Wire the terminals found here, no prompts"],["ttheme add homura madoka","Install two palettes"],["ttheme use homura","Paint this tab with one"],["ttheme list --json madoka","The madoka series as JSON"],["ttheme market add alice/ttheme-pastel","alice's market, alice@pastel — ttheme add alice@pastel/dusk"],["ttheme add dusk --market alice/ttheme-pastel","The same in one step"],["ttheme new rei --from rei","Your own rei, <you>@<market>/rei, to edit and share"]];function Rk(){return[...xk,"","Use --help to list every command, or init to set ttheme up"].join(`
351
+ `)}function Rh(t){let e=Ek(t);return[`Usage: ttheme ${xA(t)}`,"",t.about,...t.actions?["","Actions:",...Zo(t.actions)]:[],...e.length>0?["","Options:",...Zo(e)]:[]].join(`
352
+ `)}function ma(t,e=!1){let n=Qo.filter((i)=>!i.hidden&&!(e&&i.section==="setup")),r=MA.filter(({section:i})=>n.some((o)=>o.section===i));return[...xk,"","Getting help:",...Zo(Ok),"","Global options:",...Zo(Ik),...r.flatMap(({section:i,title:o})=>["",`${o}:`,...Zo(n.filter((s)=>s.section===i).flatMap((s)=>Mk(s,t)))]),...t?["","Examples:",...Zo(Sk,Math.max(...Sk.map(([i])=>i.length)))]:[],"",...e?["ttheme alone opens preview and browse as tabs — tab and shift+tab move between them"]:[],"https://ttheme.vercel.app"].join(`
353
+ `)}import{readFileSync as IA}from"node:fs";import{join as RA}from"node:path";var Ph="# ttheme begin",Nh="# ttheme end",Xo=/# ttheme begin\n[\s\S]*?# ttheme end\n?/;function _r(t,e){let n=`${Ph}
353
354
  ${e}
354
- ${Mh}
355
- `;if(Do.test(t))return t.replace(Do,n);if(t==="")return n;return`${t.replace(/\n*$/,`
355
+ ${Nh}
356
+ `;if(Xo.test(t))return t.replace(Xo,n);if(t==="")return n;return`${t.replace(/\n*$/,`
356
357
  `)}
357
358
  ${n}`}function Br(t){let e=t.replace(/\n?# ttheme begin\n[\s\S]*?# ttheme end(?=\n|$)/,"");if(e===t)return t;return e.trim()===""?"":e.replace(/\n*$/,`
358
- `)}function Gr(t,e){let n=t.replace(Do,"");return new RegExp(String.raw`^[ \t]*${e}(?:[ \t]*=|[ \t]+\S)`,"m").test(n)}function hk(t){return`source ${t}/ttheme.zsh`}var VN="# ttheme settings — uncomment a line to change it; exported variables win over this file",qo={TTHEME_TAB_PALETTE:{doc:"# new tabs: off keeps the configured terminal theme, seq rotates through the palettes (default off)",default:"off"},TTHEME_ANNOUNCE:{doc:'# the palette notice under "Last login:": 1 shows it, 0 silences it (default 1)',default:"1"},TTHEME_FX:{doc:"# search hint animation: typewriter, decode or glitch (default typewriter)",default:"typewriter"},TTHEME_SORT:{doc:"# series and palettes in ttheme and preview: abc sorts them by name, series keeps the order they were added (default abc)",default:"abc"},TTHEME_MOUSE:{doc:"# clicks, the wheel and drags in preview, browse, the palette editor and find: on, or off to leave the mouse to the terminal, so a drag selects text again without a modifier (default on)",default:"on"},TTHEME_BG_BLUR:{doc:"# soften the background pictures behind the text: a blur radius in screen pixels, 0 keeps them sharp — changing it draws every picture again (default 0)",default:"0"},TTHEME_BG_COLORS:{doc:"# the colors new background pictures are drawn in: tone tints a picture in one color of its palette, original keeps its own — preview switches each picture later (default tone)",default:"tone"},TTHEME_WARP_FAST:{doc:"# Warp tab switches: on keeps Warp rereading its settings while it is in front with tabs of different palettes, so the tab you switch to shows its palette in about 0.2 s instead of 0.6 s — about 8% CPU meanwhile; off leaves it to Warp (default on)",default:"on"},TTHEME_NAMES:{doc:"# character names in every language for searching palettes and find's search box, from aninames' weekly release: on downloads them (about 7 MB) and checks once a day in the background; off leaves them as they are (default on)",default:"on"},TTHEME_MARKET_LOOKUP:{doc:"# the Markets tab in browse: on looks GitHub up by itself — the markets carrying the ttheme-market topic when the tab opens or you type, and the palettes of a repository you type or move onto; off waits for space (default on)",default:"on"},TTHEME_FIND_RATING:{doc:"# the ratings find lists, any of safe, questionable and explicit, each booru read in its own rating vocabulary (default safe)",default:"safe"},TTHEME_FIND_BLOCK:{doc:'# the posts find drops by tag: nudity, underwear, both, or none to keep them all (default "nudity underwear")',default:"nudity underwear"},TTHEME_FIND_POSTS:{doc:"# what find lists first: all is every post of the character, cutouts are the transparent ones (default all)",default:"all"},TTHEME_FIND_SOLO:{doc:"# on keeps the posts tagged solo, the character alone, by danbooru or zerochan; off lists every post (default on)",default:"on"},TTHEME_FIND_CUTOUTS:{doc:'# the tags find calls a transparent cutout, per site as key=tag,tag pairs — e.g. "konachan=transparent,vector yande=transparent_png" (default the built-in tags)',default:""},TTHEME_FIND_ORDER:{doc:"# the order find lists posts in: fit ranks each page by how well it makes a backdrop, newest or score (default fit)",default:"fit"},TTHEME_FIND_SETS:{doc:"# runs of the same picture at the same size from one uploader: fold shows them as one tile, show lists each (default fold)",default:"fold"},TTHEME_FIND_REMOVE_BG:{doc:"# an opaque picture tried on in find: on cuts the character out with macOS Vision, off leaves it as it is (default on)",default:"on"},TTHEME_FIND_MIN_SCORE:{doc:"# the lowest score find lists: off, or a number such as 5, 10, 25, 50 or 100 — danbooru, konachan and yande.re filter by it, zerochan keeps no score (default off)",default:"off"},TTHEME_FIND_MIN_SIZE:{doc:"# the shortest side a picture find lists must reach, in pixels: off, or a number such as 720, 1080, 1440, 1800 or 2560 (default off)",default:"off"},TTHEME_FIND_SITES:{doc:"# the sites find mixes in its all tab: any of danbooru, konachan, yande.re and zerochan (default all four)",default:"danbooru konachan yande.re zerochan"},TTHEME_FIND_HIDE:{doc:"# the kinds of picture find leaves out by tag: comic, monochrome, sketch, chibi, or none to keep them all (default none)",default:"none"},TTHEME_FIND_HIDE_TAGS:{doc:'# more tags find leaves out, spaced — e.g. "cosplay multiple_girls" (default none)',default:""},TTHEME_FIND_PNG:{doc:"# on lists PNG originals only — a zerochan post counts only where danbooru holds the same file (default off)",default:"off"},TTHEME_FIND_HOSTS:{doc:'# send a find site somewhere else, as key=https://host pairs — e.g. "danbooru=https://danbooru.donmai.us" (default none)',default:""}};function da(t){return qo[t]?.default}function xh(t,e){let n=`: \${${t}:=${e}}`;return da(t)===e?`# ${n}`:n}function mk(t){return new RegExp(String.raw`^#? ?: \$\{${t}[^\n]*$`,"m")}function ZN(t,e){if(mk(e).test(t))return t;let n=qo[e];return`${t.replace(/\n*$/,`
359
+ `)}function Gr(t,e){let n=t.replace(Xo,"");return new RegExp(String.raw`^[ \t]*${e}(?:[ \t]*=|[ \t]+\S)`,"m").test(n)}function Pk(t){return`source ${t}/ttheme.zsh`}var PA="# ttheme settings — uncomment a line to change it; exported variables win over this file",ts={TTHEME_TAB_PALETTE:{doc:"# new tabs: off keeps the configured terminal theme, seq rotates through the palettes (default off)",default:"off"},TTHEME_ANNOUNCE:{doc:'# the palette notice under "Last login:": 1 shows it, 0 silences it (default 1)',default:"1"},TTHEME_FX:{doc:"# search hint animation: typewriter, decode or glitch (default typewriter)",default:"typewriter"},TTHEME_SORT:{doc:"# series and palettes in ttheme and preview: abc sorts them by name, series keeps the order they were added (default abc)",default:"abc"},TTHEME_MOUSE:{doc:"# clicks, the wheel and drags in preview, browse, the palette editor and find: on, or off to leave the mouse to the terminal, so a drag selects text again without a modifier (default on)",default:"on"},TTHEME_BG_BLUR:{doc:"# soften the background pictures behind the text: a blur radius in screen pixels, 0 keeps them sharp — changing it draws every picture again (default 0)",default:"0"},TTHEME_BG_COLORS:{doc:"# the colors new background pictures are drawn in: tone tints a picture in one color of its palette, original keeps its own — preview switches each picture later (default tone)",default:"tone"},TTHEME_WARP_FAST:{doc:"# Warp tab switches: on keeps Warp rereading its settings while it is in front with tabs of different palettes, so the tab you switch to shows its palette in about 0.2 s instead of 0.6 s — about 8% CPU meanwhile; off leaves it to Warp (default on)",default:"on"},TTHEME_NAMES:{doc:"# character names in every language for searching palettes and find's search box, from aninames' weekly release: on downloads them (about 7 MB) and checks once a day in the background; off leaves them as they are (default on)",default:"on"},TTHEME_AUTO_UPDATE:{doc:"# checks in the background: on refreshes the markets you set to update on their own once a day and says when a newer ttheme is out; off leaves both to ttheme update (default on)",default:"on"},TTHEME_MARKET_LOOKUP:{doc:"# the Markets tab in browse: on looks GitHub up by itself — the markets carrying the ttheme-market topic when the tab opens or you type, and the palettes of a repository you type or move onto; off waits for space (default on)",default:"on"},TTHEME_FIND_RATING:{doc:"# the ratings find lists, any of safe, questionable and explicit, each booru read in its own rating vocabulary (default safe)",default:"safe"},TTHEME_FIND_BLOCK:{doc:'# the posts find drops by tag: nudity, underwear, both, or none to keep them all (default "nudity underwear")',default:"nudity underwear"},TTHEME_FIND_POSTS:{doc:"# what find lists first: all is every post of the character, cutouts are the transparent ones (default all)",default:"all"},TTHEME_FIND_SOLO:{doc:"# on keeps the posts tagged solo, the character alone, by danbooru or zerochan; off lists every post (default on)",default:"on"},TTHEME_FIND_CUTOUTS:{doc:'# the tags find calls a transparent cutout, per site as key=tag,tag pairs — e.g. "konachan=transparent,vector yande=transparent_png" (default the built-in tags)',default:""},TTHEME_FIND_ORDER:{doc:"# the order find lists posts in: fit ranks each page by how well it makes a backdrop, newest or score (default fit)",default:"fit"},TTHEME_FIND_SETS:{doc:"# runs of the same picture at the same size from one uploader: fold shows them as one tile, show lists each (default fold)",default:"fold"},TTHEME_FIND_REMOVE_BG:{doc:"# an opaque picture tried on in find: on cuts the character out with macOS Vision, off leaves it as it is (default on)",default:"on"},TTHEME_FIND_MIN_SCORE:{doc:"# the lowest score find lists: off, or a number such as 5, 10, 25, 50 or 100 — danbooru, konachan and yande.re filter by it, zerochan keeps no score (default off)",default:"off"},TTHEME_FIND_MIN_SIZE:{doc:"# the shortest side a picture find lists must reach, in pixels: off, or a number such as 720, 1080, 1440, 1800 or 2560 (default off)",default:"off"},TTHEME_FIND_SITES:{doc:"# the sites find mixes in its all tab: any of danbooru, konachan, yande.re and zerochan (default all four)",default:"danbooru konachan yande.re zerochan"},TTHEME_FIND_HIDE:{doc:"# the kinds of picture find leaves out by tag: comic, monochrome, sketch, chibi, or none to keep them all (default none)",default:"none"},TTHEME_FIND_HIDE_TAGS:{doc:'# more tags find leaves out, spaced — e.g. "cosplay multiple_girls" (default none)',default:""},TTHEME_FIND_PNG:{doc:"# on lists PNG originals only — a zerochan post counts only where danbooru holds the same file (default off)",default:"off"},TTHEME_FIND_HOSTS:{doc:'# send a find site somewhere else, as key=https://host pairs — e.g. "danbooru=https://danbooru.donmai.us" (default none)',default:""}};function pa(t){return ts[t]?.default}function Ah(t,e){let n=`: \${${t}:=${e}}`;return pa(t)===e?`# ${n}`:n}function Nk(t){return new RegExp(String.raw`^#? ?: \$\{${t}[^\n]*$`,"m")}function NA(t,e){if(Nk(e).test(t))return t;let n=ts[e];return`${t.replace(/\n*$/,`
359
360
  `)}
360
361
  ${n.doc}
361
- ${xh(e,n.default)}
362
- `}var yu=Object.keys(qo),QN=8;function vu(t,e){let n="";try{n=YN(JN(t,"ttheme","config.zsh"),"utf8")}catch{}return(new RegExp(String.raw`^: \$\{${e}:=([^}\n]*)\}`,"m").exec(n)?.[1]??qo[e].default).replace(/^(["'])(.*)\1$/,"$2")}function Ur(t){let e=Number(vu(t,"TTHEME_BG_BLUR"));return Number.isFinite(e)?Math.min(QN,Math.max(0,e)):0}function Su(t){return vu(t,"TTHEME_BG_COLORS")==="original"?"original":"tone"}function Oh(){let t=Object.entries(qo).map(([e,n])=>`${n.doc}
363
- ${xh(e,n.default)}`);return`${[VN,...t].join(`
362
+ ${Ah(e,n.default)}
363
+ `}var Mu=Object.keys(ts),AA=8;function xu(t,e){let n="";try{n=IA(RA(t,"ttheme","config.zsh"),"utf8")}catch{}return(new RegExp(String.raw`^: \$\{${e}:=([^}\n]*)\}`,"m").exec(n)?.[1]??ts[e].default).replace(/^(["'])(.*)\1$/,"$2")}function Ur(t){let e=Number(xu(t,"TTHEME_BG_BLUR"));return Number.isFinite(e)?Math.min(AA,Math.max(0,e)):0}function Ou(t){return xu(t,"TTHEME_BG_COLORS")==="original"?"original":"tone"}function Th(){let t=Object.entries(ts).map(([e,n])=>`${n.doc}
364
+ ${Ah(e,n.default)}`);return`${[PA,...t].join(`
364
365
 
365
366
  `)}
366
- `}function Eu(t,e,n){let r=xh(e,n),i=mk(e);if(i.test(t))return t.replace(i,r);return`${t.replace(/\n*$/,`
367
+ `}function Iu(t,e,n){let r=Ah(e,n),i=Nk(e);if(i.test(t))return t.replace(i,r);return`${t.replace(/\n*$/,`
367
368
  `)}
368
369
  ${r}
369
- `}function pk(t){if(t==="")return Oh();return Object.keys(qo).reduce(ZN,t)}var Mu=/["$`\\]/;function XN(t){return t.replace(/_\([^)]*\)$/,"").replaceAll("_"," ")}function Ih(t,e,n=[],r={}){for(let l of t)for(let d of[l.name,l.group,l.native??"",...l.nativeNames??[],l.ansiSource])if(Mu.test(d))throw Error(`${l.name}: "${d}" contains a character that breaks zsh quoting`);let i=Math.max(0,...t.map((l)=>l.name.length)),o=(l,d)=>` ${l.name.padEnd(i)} "${d}"`,s=(l)=>l.map((d)=>d.name).join(" "),a=It(t),c=(l)=>`'${l.replaceAll("'","'\\''")}'`,u=ua.filter((l)=>l.section!=="setup"&&!l.hidden);return["# Generated by `mise run build` — do not edit.","# Source of truth: themes/*.toml in the ttheme repo.","",`typeset -g TTHEME_VERSION=${At.version}`,"",'# the palette new tabs open with, which the iTerm2 "ttheme · default" profile wears',`typeset -g TTHEME_STARTUP=${e??""}`,"","# the terminals ttheme is wired into: a picture change reaches every one of them, from whichever runs the shell",`typeset -ga TTHEME_TERMINALS=(${n.join(" ")})`,...Object.keys(r).length>0?["","# what a wired terminal's adapter needs to know of it (src/terminals/)",...Object.entries(r).map(([l,d])=>`typeset -g ${l}=${c(d)}`)]:[],"","# the commands the shell layer knows (src/verbs.ts): help, completion and argument checks read them",`typeset -ga TTHEME_VERBS=(${u.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_TAB_VERBS=(${u.filter((l)=>l.section==="tab").map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_SHELL_VERBS=(${u.filter((l)=>l.shell).map((l)=>l.name).join(" ")})`,"typeset -gA TTHEME_VERB_ARGS=(",...u.map((l)=>` ${l.name} ${c(l.args.join(" "))}`),")","typeset -gA TTHEME_VERB_ABOUT=(",...u.map((l)=>` ${l.name} ${c(l.about)}`),")",`typeset -g TTHEME_HELP=${c(la(!1,!0))}`,`typeset -g TTHEME_HELP_ALL=${c(la(!0,!0))}`,"","# the screens the bare ttheme switches between (src/hub.ts): the exit status of a screen run by the CLI says where it went",`typeset -ga TTHEME_HUB_TABS=(${Vn.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_HUB_TITLES=(${Vn.map((l)=>l.title).join(" ")})`,`typeset -gi TTHEME_HUB_CLOSED=${iu} TTHEME_HUB_SWITCH=${ou}`,"","# the settings config.zsh holds, handed to the CLI on every call",`typeset -ga TTHEME_SETTINGS=(${yu.join(" ")})`,"","# seed for `ttheme config` when no config.zsh exists yet",`typeset -g TTHEME_CONFIG_TEMPLATE='${Oh().trimEnd().replaceAll("'","'\\''")}'`,"","typeset -gA TTHEME_PALETTE=(",...t.map((l)=>o(l,[l.background,l.foreground,l.cursor,l.selection,...l.ansi].join(" "))),")","","# series order: new tabs cycle through it and TTHEME_SORT=series lists it — the default role stays applyable but unlisted",`typeset -ga TTHEME_ORDER=(${s(a)})`,"","# the same palettes by series name, then palette name: TTHEME_SORT=abc lists them this way",`typeset -ga TTHEME_ABC=(${s(ki(a))})`,"","typeset -gA TTHEME_GROUP=(",...t.map((l)=>o(l,l.group)),")","","# the catalog a market palette sits in — the folder under the market's palettes/, one level below the market in every list","typeset -gA TTHEME_CATALOG=(",...t.filter((l)=>l.catalog).map((l)=>o(l,l.catalog??"")),")","","# original-language title, rendered dim next to the group","typeset -gA TTHEME_NATIVE=(",...t.filter((l)=>l.native).map((l)=>o(l,l.native??"")),")","","# the character's names in its original language, |-separated, and as its booru tag spells it: preview searches both","typeset -gA TTHEME_NATIVE_NAMES=(",...t.filter((l)=>l.nativeNames).map((l)=>o(l,(l.nativeNames??[]).join("|"))),")","typeset -gA TTHEME_CHARACTER=(",...t.filter((l)=>l.booru&&!Mu.test(l.booru)).map((l)=>o(l,XN(l.booru??""))),")","","# the example scenes preview draws beside the list (src/scenes.ts), each line as «role»text runs",`typeset -ga TTHEME_SCENES=(${zt.map((l)=>l.name).join(" ")})`,...zt.flatMap((l,d)=>[`typeset -ga TTHEME_SCENE_${d+1}=(`,...l.lines.map((f)=>` ${c(f)}`),")"]),"","# each booru's ANSI color, which marks a link to one of its posts",`typeset -gA TTHEME_SITE_ANSI=(${J.map((l)=>`${l.name} ${l.ansi}`).join(" ")})`,"","# the terminals that open OSC 8 links (src/terminal.ts)",`typeset -ga TTHEME_LINKS=(${Object.entries(pe).flatMap(([l,d])=>d.links?[l]:[]).join(" ")})`,"","# the six colors a list row shows: foreground, the signature, then red and green","typeset -gA TTHEME_SWATCH=(",...t.map((l)=>o(l,Bc(l).join(" "))),")","","# where each palette's 16 ANSI colors came from","typeset -gA TTHEME_SRC=(",...t.map((l)=>o(l,l.ansiSource)),")",""].join(`
370
- `)}function gk(t){let e=Object.entries(t).flatMap(([r,i])=>{let o=i.filter((s)=>!Mu.test(s)&&!s.includes("|"));return o.length>0&&!Mu.test(r)?[[r,o.join("|")]]:[]}),n=Math.max(0,...e.map(([r])=>r.length));return["# the character's other names in every language, |-separated, from the aninames index in the cache: preview reads this when it opens and searches them too","typeset -gA TTHEME_ALIASES=(",...e.map(([r,i])=>` ${r.padEnd(n)} "${i}"`),")",""].join(`
371
- `)}var Rh={id:"shell",emitShared(t){return[{path:"shell/palettes.zsh",content:Ih(t.map(Qe))}]}};import{execFileSync as tA}from"node:child_process";import{existsSync as bk,readdirSync as eA,readFileSync as nA}from"node:fs";import{join as wk}from"node:path";function at(t){return bk(t)?nA(t,"utf8"):""}function Ct(t,e){return t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}function xu(t){return[...new Set(t.split(`
372
- `).map((e)=>e.split(/[ =]/)[0]))].join(", ")}function xn(t,e){let n=at(t),r=e(n);return r===n?[]:[{file:t,content:r}]}function fa(t){return process.env.XDG_DATA_HOME??wk(t,".local","share")}function Yo(t){return bk(t)?eA(t).flatMap((e)=>e.startsWith(j(""))?[wk(t,e)]:[]):[]}function Ph(t,e){if(!t.shelf)return[];let n=`${[t.id,t.shelf.from].filter(Boolean).join("/")}/`;return(t.emitter.emit?.(e)??[]).flatMap((r)=>{let i=r.path.startsWith(n)?r.path.slice(n.length):"";return i!==""&&!i.includes("/")?[{file:i,content:r.content}]:[]})}function on(){return{platform:process.platform,env:process.env,run:(t,e)=>{try{return tA(t,[...e],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5000}).trim()}catch{return}}}}import{existsSync as Nk}from"node:fs";import{join as Iu}from"node:path";var rA=["black","red","green","yellow","blue","magenta","cyan","white"];function $k(t,e){return[t,...rA.map((n,r)=>`${n} = '${e[r]}'`),""].join(`
373
- `)}var Nh={id:"alacritty",limits:"no runtime color API (OSC only)",emit(t){let e=[...jr(t),"","[colors.primary]",`background = '${t.background}'`,`foreground = '${t.foreground}'`,"","[colors.cursor]",`cursor = '${t.cursor}'`,`text = '${t.background}'`,"","[colors.selection]",`background = '${t.selectionBackground}'`,`text = '${t.foreground}'`,"",$k("[colors.normal]",t.ansi.slice(0,8)),$k("[colors.bright]",t.ansi.slice(8,16))].join(`
374
- `);return[{path:`alacritty/themes/${j(t.name)}.toml`,content:e}]}};var Ah={id:"ghostty",emit(t){let e=[...jr(t),`background = ${t.background}`,`foreground = ${t.foreground}`,`cursor-color = ${t.cursor}`,`selection-background = ${t.selectionBackground}`,`selection-foreground = ${t.foreground}`,...t.ansi.map((n,r)=>`palette = ${r}=${n}`),"","macos-icon = custom-style",`macos-icon-ghost-color = ${t.ghostty.iconGhost}`,`macos-icon-screen-color = ${t.ghostty.iconScreen.join(",")}`,"macos-icon-frame = chrome",""].join(`
375
- `);return[{path:`ghostty/themes/${j(t.name)}`,content:e}]}};function Wr(t){let[e,n,r]=et(t);return{"Alpha Component":1,"Blue Component":r/255,"Color Space":"P3","Green Component":n/255,"Red Component":e/255}}function yk(t){return{...Object.fromEntries(t.ansi.map((e,n)=>[`Ansi ${n} Color`,Wr(e)])),"Background Color":Wr(t.background),"Bold Color":Wr(t.foreground),"Cursor Color":Wr(t.cursor),"Cursor Text Color":Wr(t.background),"Foreground Color":Wr(t.foreground),"Selected Text Color":Wr(t.foreground),"Selection Color":Wr(t.selectionBackground)}}function kk(t){return t?{"Background Image Location":t.image,"Background Image Mode":t.cover?2:3,Blend:t.opacity}:{"Background Image Location":""}}function vk(t,e,n,r,i=!1){let o=(c,u)=>({Name:`ttheme · ${u}`,Guid:j(u),...r?{"Dynamic Profile Parent GUID":r}:{},"Use Separate Colors for Light and Dark Mode":!1,...kk(e.get(c.name)),...yk(c)}),s={Name:"ttheme · default",Guid:j("default"),"Dynamic Profile Parent GUID":r,...kk(void 0)},a=[...n?[o(n,"default")]:i&&r?[s]:[],...t.map((c)=>o(c,c.name))];return`${JSON.stringify({Profiles:a},null,2)}
376
- `}function iA(t,e){return[` <key>${t}</key>`,"\t<dict>",...Object.entries(e).flatMap(([n,r])=>[` <key>${n}</key>`,typeof r==="string"?` <string>${r}</string>`:` <real>${r}</real>`]),"\t</dict>"].join(`
377
- `)}var Th={id:"iterm2",limits:"colors are Display P3, the space iTerm2 reads OSC colors in",emit(t){let e=['<?xml version="1.0" encoding="UTF-8"?>','<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">','<plist version="1.0">',"<dict>",...Object.entries(yk(t)).map(([n,r])=>iA(n,r)),"</dict>","</plist>",""].join(`
378
- `);return[{path:`iterm2/${j(t.name)}.itermcolors`,content:e}]}};var Hh={id:"kitty",emit(t){let e=[...jr(t),`background ${t.background}`,`foreground ${t.foreground}`,`cursor ${t.cursor}`,`cursor_text_color ${t.background}`,`selection_background ${t.selectionBackground}`,`selection_foreground ${t.foreground}`,...t.ansi.map((n,r)=>`color${r} ${n}`),""].join(`
379
- `);return[{path:`kitty/themes/${j(t.name)}.conf`,content:e}]}};function Sk(t){return["# Generated by ttheme — rewritten on every add, remove and default; do not edit.","import os","",`THEMES = ${JSON.stringify(t.themes)}`,`BACKGROUNDS = ${JSON.stringify(t.backgrounds)}`,"PLACES = {"," 'top-left': 'top-left', 'top-center': 'top', 'top-right': 'top-right',"," 'center-left': 'left', 'center': 'center', 'center-center': 'center', 'center-right': 'right',"," 'bottom-left': 'bottom-left', 'bottom-center': 'bottom', 'bottom-right': 'bottom-right',","}","","shown = {}","faded = {}","worn = {}","","","def locate(path):"," if path.startswith('~/'):"," return os.path.expanduser(path)"," return path if os.path.isabs(path) else os.path.join(BACKGROUNDS, path)","","","def read(path, into):"," try:"," with open(path, encoding='utf-8') as f:"," lines = f.read().splitlines()"," except OSError:"," return False"," for line in lines:"," key, sep, value = line.partition('=')"," key, value = key.strip(), value.strip()"," if not sep or not key or key.startswith('#'):"," continue"," if key == 'config-file':"," read(locate(value.lstrip('?')), into)"," else:"," into[key] = value"," return True","","","def logo(palette):"," c = {}"," if not palette or not read(os.path.join(BACKGROUNDS, palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf'), c):"," return None"," image = c.get('background-image', '')"," try:"," opacity = min(float(c.get('background-image-opacity', '1')), 1.0)"," except ValueError:"," opacity = 1.0"," if not image or opacity <= 0:"," return None"," return locate(image), PLACES.get(c.get('background-image-position', 'center'), 'center'), opacity","","","def fade(path, opacity):"," key = f'{path}#{opacity}'"," if key not in faded:"," from kitty.fast_data_types import load_png_data, png_from_32bit_rgba_data"," with open(path, 'rb') as f:"," rgba, width, height = load_png_data(f.read())"," data = bytearray(rgba)"," data[3::4] = data[3::4].translate(bytes(round(a * opacity) for a in range(256)))"," if len(faded) > 8:"," faded.clear()"," faded[key] = png_from_32bit_rgba_data(bytes(data), width, height)"," return key, faded[key]","","","def show(window):"," want = logo(window.user_vars.get('ttheme_shown') or '')"," if window.id in shown and shown[window.id] == want:"," return"," shown[window.id] = want"," try:"," if want is None:"," window.set_logo('')"," elif want[2] < 1:"," key, png = fade(want[0], want[2])"," window.set_logo(key, want[1], 1, png)"," else:"," window.set_logo(want[0], want[1], 1)"," except Exception:"," shown.pop(window.id, None)","","","def theme(palette):"," path = os.path.join(THEMES, 'ttheme-' + palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf')"," if not palette or not os.path.exists(path):"," return None"," from kitty.colors import parse_colors"," return parse_colors([path])","","","def wear(palette):"," colors = theme(palette) if worn.get('startup') != palette else None"," if colors is None:"," return"," from kitty.colors import patch_colors"," patch_colors(colors[0], colors[1], True, ())"," worn['startup'] = palette","","","def rewear(boss):"," from kitty.colors import patch_colors"," for window in tuple(boss.all_windows):"," colors = theme(window.user_vars.get('ttheme_worn') or '')"," if colors is not None:"," patch_colors(colors[0], colors[1], False, (window,))","","","def on_load(boss, data):"," if getattr(boss, 'ttheme_rewears', False):"," return"," load = boss.load_config_file",""," def reload(*args, **kwargs):"," load(*args, **kwargs)"," worn.pop('startup', None)"," rewear(boss)",""," boss.load_config_file = reload"," boss.ttheme_rewears = True","","","def on_set_user_var(boss, window, data):"," if data['key'] == 'ttheme_shown':"," show(window)"," elif data['key'] == 'ttheme_startup':"," wear(data['value'] or '')","","","def on_focus_change(boss, window, data):"," if data['focused']:"," show(window)","","","def on_close(boss, window, data):"," shown.pop(window.id, None)",""].join(`
380
- `)}function oA(t){let[e]=t;if(!e)throw Error("manifest needs at least one theme");return{...Gc(),palettes:t.map(Qe)}}var Ch={id:"meta",emitShared(t){return[{path:"manifest.json",content:`${JSON.stringify(oA(t),null,2)}
381
- `}]}};var Lh={id:"terminal-app",limits:"profiles go into its own settings at init, so the archive carries none"};import{createHash as sA}from"node:crypto";var aA=["black","red","green","yellow","blue","magenta","cyan","white"];function Ek(t,e){return[` ${t}:`,...aA.map((n,r)=>` ${n}: "${e[r]}"`)]}function cA(t,e,n){let r=sA("sha1");for(let i of e)r.update(i);return`${j(t)}.${r.digest("hex").slice(0,8)}.${n}`}function Mk(t,e,n){let r=2166136261;for(let i of Buffer.from(`${e}
382
- ${n.toLowerCase()}`,"utf8"))r=Math.imul(r^i,16777619)>>>0;return`${j(t)}.${r.toString(16).padStart(8,"0")}.png`}function ha(t,e){return e?cA(t,[e.image,String(xk(e))],"yaml"):`${j(t)}.yaml`}function xk(t){return Math.max(0,Math.min(100,Math.round(t.opacity*100)))}function ma(t,e){return[`name: "${t.name}"`,`background: "${t.background}"`,`foreground: "${t.foreground}"`,`accent: "${t.cursor}"`,`cursor: "${t.cursor}"`,`details: ${vt(t.background)<0.18?"darker":"lighter"}`,...e?["background_image:",` path: "${e.image}"`,` opacity: ${xk(e)}`]:[],"terminal_colors:",...Ek("normal",t.ansi.slice(0,8)),...Ek("bright",t.ansi.slice(8,16)),""].join(`
383
- `)}var Fh={id:"warp",limits:"no selection color, and Warp paints one theme app-wide",emit(t){return[{path:`warp/themes/${ha(t.name)}`,content:ma(t)}]}};var Ok=(t)=>`[${t.map((e)=>`"${e}"`).join(", ")}]`,jh={id:"wezterm",limits:"OSC repaints per pane, pictures show per window",emit(t){let e=["[metadata]",`name = "${j(t.name)}"`,`origin_url = "${t.ansiSource}"`,"","[colors]",`foreground = "${t.foreground}"`,`background = "${t.background}"`,`cursor_bg = "${t.cursor}"`,`cursor_border = "${t.cursor}"`,`cursor_fg = "${t.background}"`,`selection_bg = "${t.selectionBackground}"`,`selection_fg = "${t.foreground}"`,"",`ansi = ${Ok(t.ansi.slice(0,8))}`,`brights = ${Ok(t.ansi.slice(8,16))}`,""].join(`
384
- `);return[{path:`wezterm/colors/${j(t.name)}.toml`,content:e}]}},Jo=(t)=>JSON.stringify(t);function Ik(t){return["-- Generated by ttheme — rewritten on every add, remove and default; do not edit.","local wezterm = require 'wezterm'","",`local MODULE = ${Jo(t.path)}`,`local COLORS = ${Jo(t.colors)}`,`local BACKGROUNDS = ${Jo(t.backgrounds)}`,`local STARTUP = ${t.startup?Jo(j(t.startup)):"nil"}`,"local PALETTES = {",...t.palettes.map((e)=>` [${Jo(e.name)}] = ${Jo(e.background)},`),"}","","local X = { left = 'Left', center = 'Center', right = 'Right' }","local Y = { top = 'Top', center = 'Middle', bottom = 'Bottom' }","local SIZE = { cover = 'Cover', contain = 'Contain', stretch = '100%' }","","local function locate(path)"," if path:sub(1, 2) == '~/' then"," return os.getenv('HOME') .. path:sub(2)"," elseif path:sub(1, 1) == '/' or path:match('^%a:[/\\\\]') then"," return path"," end"," return BACKGROUNDS .. '/' .. path","end","","local function read(path, into)"," local f = io.open(path, 'r')"," if not f then"," return false"," end"," for line in f:lines() do"," local key, value = line:match('^%s*([%w%-]+)%s*=%s*(.-)%s*$')"," if key == 'config-file' then"," read(locate((value:gsub('^%?', ''))), into)"," elseif key then"," into[key] = value"," end"," end"," f:close()"," return true","end","","local function layers(palette)"," local color = PALETTES[palette]"," local c = {}"," if not color or not read(BACKGROUNDS .. '/' .. ((palette:gsub('@', '--', 1)):gsub('/', '--', 1)) .. '.conf', c) then"," return nil, 'none'"," end"," local image = c['background-image'] or ''"," local opacity = tonumber(c['background-image-opacity'] or '1') or 1"," if image == '' or opacity <= 0 then"," return nil, 'none'"," end"," local fit = c['background-image-fit'] or 'contain'"," local position = c['background-image-position'] or 'center'"," local y, x = position:match('^(%a+)-(%a+)$')"," local rep = c['background-image-repeat'] == 'true' and 'Repeat' or 'NoRepeat'"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = locate(image) },"," opacity = opacity,"," width = SIZE[fit],"," height = SIZE[fit],"," horizontal_align = X[x or 'center'],"," vertical_align = Y[y or 'center'],"," repeat_x = rep,"," repeat_y = rep,"," },"," }, table.concat({ color, image, opacity, fit, position, rep }, '|')","end","","local function framed(window, view)"," local color, image, opacity, W, H, w, h, x, y, at ="," view:match('^([^|]*)|([^|]*)|([^|]*)|(%d+)|(%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%d)$')"," if not image or image == '' or tonumber(W) == 0 or tonumber(H) == 0 then"," return nil, 'none'"," end"," local d = window:get_dimensions()"," local k = math.max(d.pixel_width / W, d.pixel_height / H)"," local n = tonumber(at) - 1"," local ax, ay = n % 3, n // 3"," local px = function(n) return string.format('%.2fpx', n) end"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = image },"," opacity = tonumber(opacity) or 1,"," width = px(w * k),"," height = px(h * k),"," horizontal_align = 'Left',"," vertical_align = 'Top',"," horizontal_offset = px(ax * (d.pixel_width - W * k) / 2 + x * k),"," vertical_offset = px(ay * (d.pixel_height - H * k) / 2 + y * k),"," repeat_x = 'NoRepeat',"," repeat_y = 'NoRepeat',"," },"," }, table.concat({ view, d.pixel_width, d.pixel_height }, '|')","end","","local shown = {}","","local function show(window, pane)"," local vars = pane:get_user_vars()"," local id = window:window_id()"," local background, key"," if vars.ttheme_view and vars.ttheme_view ~= '' then"," background, key = framed(window, vars.ttheme_view)"," elseif vars.ttheme_shown and vars.ttheme_shown ~= '' then"," background, key = layers(vars.ttheme_shown)"," elseif shown[id] == nil then"," return"," end"," if shown[id] == key then"," return"," end"," shown[id] = key"," local overrides = window:get_config_overrides() or {}"," overrides.background = background"," window:set_config_overrides(overrides)","end","","wezterm.on('user-var-changed', function(window, pane, name)"," if name == 'ttheme_shown' or name == 'ttheme_view' then"," show(window, pane)"," end","end)","wezterm.on('update-status', show)","","return function(config)"," local dirs = config.color_scheme_dirs or {}"," table.insert(dirs, COLORS)"," config.color_scheme_dirs = dirs"," if STARTUP then"," config.color_scheme = STARTUP"," end"," wezterm.add_to_config_reload_watch_list(MODULE)","end",""].join(`
385
- `)}var Rk=["black","red","green","yellow","blue","purple","cyan","white"];function Pk(t){return{name:j(t.name),background:t.background,foreground:t.foreground,cursorColor:t.cursor,selectionBackground:t.selectionBackground,...Object.fromEntries(Rk.map((e,n)=>[e,t.ansi[n]])),...Object.fromEntries(Rk.map((e,n)=>[`bright${e[0]?.toUpperCase()}${e.slice(1)}`,t.ansi[n+8]]))}}function _h(t,e,n){let r={...e&&n?{profiles:[{updates:e,colorScheme:j(n)}]}:{},schemes:t.map(Pk)};return`${JSON.stringify(r,null,2)}
386
- `}var Bh={id:"windows-terminal",limits:"a picture belongs to a profile, which a pane cannot change, so none; OSC repaints per pane",emit(t){return[{path:`windows-terminal/schemes/${j(t.name)}.json`,content:`${JSON.stringify(Pk(t),null,2)}
387
- `}]},emitShared(t){return[{path:"windows-terminal/ttheme.json",content:_h(t)}]}};function uA(t){let e=t.replace(Do,"");return/^[ \t]*\[colors[\].]/m.test(e)||/^[ \t]*colors[ \t]*[.=]/m.test(e)}var lA=/^[ \t]*\[general\][ \t]*(?:#.*)?$/m,Ak=/^[ \t]*\[/m,Tk=/^[ \t]*import[ \t]*=/m,dA=/^[ \t]*general[ \t]*[.=]/m;function fA(t){return t?`[general]
388
- import = ["${t}"]`:""}function Gh(t,e){let n=t.replace(Do,""),r=lA.exec(n);if(!r){let c=n.search(Ak),u=c<0?n:n.slice(0,c);if(dA.test(n)||Tk.test(u))return;return _r(t,fA(e))}let i=r.index+r[0].length,o=n.slice(i),s=o.search(Ak);if(Tk.test(s<0?o:o.slice(0,s)))return;let a=e?`import = ["${e}"]
370
+ `}function Ak(t){if(t==="")return Th();return Object.keys(ts).reduce(NA,t)}var Ru=/["$`\\]/;function TA(t){return t.replace(/_\([^)]*\)$/,"").replaceAll("_"," ")}function Hh(t,e,n=[],r={}){for(let l of t)for(let d of[l.name,l.group,l.native??"",...l.nativeNames??[],l.ansiSource])if(Ru.test(d))throw Error(`${l.name}: "${d}" contains a character that breaks zsh quoting`);let i=Math.max(0,...t.map((l)=>l.name.length)),o=(l,d)=>` ${l.name.padEnd(i)} "${d}"`,s=(l)=>l.map((d)=>d.name).join(" "),a=Pt(t),c=(l)=>`'${l.replaceAll("'","'\\''")}'`,u=Qo.filter((l)=>l.section!=="setup"&&!l.hidden);return["# Generated by `mise run build` — do not edit.","# Source of truth: themes/*.toml in the ttheme repo.","",`typeset -g TTHEME_VERSION=${lt.version}`,"",'# the palette new tabs open with, which the iTerm2 "ttheme · default" profile wears',`typeset -g TTHEME_STARTUP=${e??""}`,"","# the terminals ttheme is wired into: a picture change reaches every one of them, from whichever runs the shell",`typeset -ga TTHEME_TERMINALS=(${n.join(" ")})`,...Object.keys(r).length>0?["","# what a wired terminal's adapter needs to know of it (src/terminals/)",...Object.entries(r).map(([l,d])=>`typeset -g ${l}=${c(d)}`)]:[],"","# the commands the shell layer knows (src/verbs.ts): help, completion and argument checks read them",`typeset -ga TTHEME_VERBS=(${u.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_TAB_VERBS=(${u.filter((l)=>l.section==="tab").map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_SHELL_VERBS=(${u.filter((l)=>l.shell).map((l)=>l.name).join(" ")})`,"typeset -gA TTHEME_VERB_ARGS=(",...u.map((l)=>` ${l.name} ${c(l.args.join(" "))}`),")","typeset -gA TTHEME_VERB_ABOUT=(",...u.map((l)=>` ${l.name} ${c(l.about)}`),")",`typeset -g TTHEME_HELP=${c(ma(!1,!0))}`,`typeset -g TTHEME_HELP_ALL=${c(ma(!0,!0))}`,"","# the screens the bare ttheme switches between (src/hub.ts): the exit status of a screen run by the CLI says where it went",`typeset -ga TTHEME_HUB_TABS=(${Jn.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_HUB_TITLES=(${Jn.map((l)=>l.title).join(" ")})`,`typeset -gi TTHEME_HUB_CLOSED=${cu} TTHEME_HUB_SWITCH=${uu}`,"","# the settings config.zsh holds, handed to the CLI on every call",`typeset -ga TTHEME_SETTINGS=(${Mu.join(" ")})`,"","# seed for `ttheme config` when no config.zsh exists yet",`typeset -g TTHEME_CONFIG_TEMPLATE='${Th().trimEnd().replaceAll("'","'\\''")}'`,"","typeset -gA TTHEME_PALETTE=(",...t.map((l)=>o(l,[l.background,l.foreground,l.cursor,l.selection,...l.ansi].join(" "))),")","","# series order: new tabs cycle through it and TTHEME_SORT=series lists it — the default role stays applyable but unlisted",`typeset -ga TTHEME_ORDER=(${s(a)})`,"","# the same palettes by series name, then palette name: TTHEME_SORT=abc lists them this way",`typeset -ga TTHEME_ABC=(${s(yi(a))})`,"","typeset -gA TTHEME_GROUP=(",...t.map((l)=>o(l,l.group)),")","","# the catalog a market palette sits in — the folder under the market's palettes/, one level below the market in every list","typeset -gA TTHEME_CATALOG=(",...t.filter((l)=>l.catalog).map((l)=>o(l,l.catalog??"")),")","","# original-language title, rendered dim next to the group","typeset -gA TTHEME_NATIVE=(",...t.filter((l)=>l.native).map((l)=>o(l,l.native??"")),")","","# the character's names in its original language, |-separated, and as its booru tag spells it: preview searches both","typeset -gA TTHEME_NATIVE_NAMES=(",...t.filter((l)=>l.nativeNames).map((l)=>o(l,(l.nativeNames??[]).join("|"))),")","typeset -gA TTHEME_CHARACTER=(",...t.filter((l)=>l.booru&&!Ru.test(l.booru)).map((l)=>o(l,TA(l.booru??""))),")","","# the example scenes preview draws beside the list (src/scenes.ts), each line as «role»text runs",`typeset -ga TTHEME_SCENES=(${Dt.map((l)=>l.name).join(" ")})`,...Dt.flatMap((l,d)=>[`typeset -ga TTHEME_SCENE_${d+1}=(`,...l.lines.map((f)=>` ${c(f)}`),")"]),"","# each booru's ANSI color, which marks a link to one of its posts",`typeset -gA TTHEME_SITE_ANSI=(${V.map((l)=>`${l.name} ${l.ansi}`).join(" ")})`,"","# the terminals that open OSC 8 links (src/terminal.ts)",`typeset -ga TTHEME_LINKS=(${Object.entries(pe).flatMap(([l,d])=>d.links?[l]:[]).join(" ")})`,"","# the six colors a list row shows: foreground, the signature, then red and green","typeset -gA TTHEME_SWATCH=(",...t.map((l)=>o(l,zc(l).join(" "))),")","","# where each palette's 16 ANSI colors came from","typeset -gA TTHEME_SRC=(",...t.map((l)=>o(l,l.ansiSource)),")",""].join(`
371
+ `)}function Tk(t){let e=Object.entries(t).flatMap(([r,i])=>{let o=i.filter((s)=>!Ru.test(s)&&!s.includes("|"));return o.length>0&&!Ru.test(r)?[[r,o.join("|")]]:[]}),n=Math.max(0,...e.map(([r])=>r.length));return["# the character's other names in every language, |-separated, from the aninames index in the cache: preview reads this when it opens and searches them too","typeset -gA TTHEME_ALIASES=(",...e.map(([r,i])=>` ${r.padEnd(n)} "${i}"`),")",""].join(`
372
+ `)}var Ch={id:"shell",emitShared(t){return[{path:"shell/palettes.zsh",content:Hh(t.map(Qe))}]}};import{execFileSync as HA}from"node:child_process";import{existsSync as Hk,readdirSync as CA,readFileSync as LA}from"node:fs";import{join as Ck}from"node:path";function at(t){return Hk(t)?LA(t,"utf8"):""}function Lt(t,e){return t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}function Pu(t){return[...new Set(t.split(`
373
+ `).map((e)=>e.split(/[ =]/)[0]))].join(", ")}function Mn(t,e){let n=at(t),r=e(n);return r===n?[]:[{file:t,content:r}]}function ga(t){return process.env.XDG_DATA_HOME??Ck(t,".local","share")}function es(t){return Hk(t)?CA(t).flatMap((e)=>e.startsWith(F(""))?[Ck(t,e)]:[]):[]}function Lh(t,e){if(!t.shelf)return[];let n=`${[t.id,t.shelf.from].filter(Boolean).join("/")}/`;return(t.emitter.emit?.(e)??[]).flatMap((r)=>{let i=r.path.startsWith(n)?r.path.slice(n.length):"";return i!==""&&!i.includes("/")?[{file:i,content:r.content}]:[]})}function rn(){return{platform:process.platform,env:process.env,run:(t,e)=>{try{return HA(t,[...e],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5000}).trim()}catch{return}}}}import{existsSync as Yk}from"node:fs";import{join as Au}from"node:path";var FA=["black","red","green","yellow","blue","magenta","cyan","white"];function Lk(t,e){return[t,...FA.map((n,r)=>`${n} = '${e[r]}'`),""].join(`
374
+ `)}var Fh={id:"alacritty",limits:"no runtime color API (OSC only)",emit(t){let e=[...jr(t),"","[colors.primary]",`background = '${t.background}'`,`foreground = '${t.foreground}'`,"","[colors.cursor]",`cursor = '${t.cursor}'`,`text = '${t.background}'`,"","[colors.selection]",`background = '${t.selectionBackground}'`,`text = '${t.foreground}'`,"",Lk("[colors.normal]",t.ansi.slice(0,8)),Lk("[colors.bright]",t.ansi.slice(8,16))].join(`
375
+ `);return[{path:`alacritty/themes/${F(t.name)}.toml`,content:e}]}};var jh={id:"ghostty",emit(t){let e=[...jr(t),`background = ${t.background}`,`foreground = ${t.foreground}`,`cursor-color = ${t.cursor}`,`selection-background = ${t.selectionBackground}`,`selection-foreground = ${t.foreground}`,...t.ansi.map((n,r)=>`palette = ${r}=${n}`),"","macos-icon = custom-style",`macos-icon-ghost-color = ${t.ghostty.iconGhost}`,`macos-icon-screen-color = ${t.ghostty.iconScreen.join(",")}`,"macos-icon-frame = chrome",""].join(`
376
+ `);return[{path:`ghostty/themes/${F(t.name)}`,content:e}]}};function Wr(t){let[e,n,r]=nt(t);return{"Alpha Component":1,"Blue Component":r/255,"Color Space":"P3","Green Component":n/255,"Red Component":e/255}}function jk(t){return{...Object.fromEntries(t.ansi.map((e,n)=>[`Ansi ${n} Color`,Wr(e)])),"Background Color":Wr(t.background),"Bold Color":Wr(t.foreground),"Cursor Color":Wr(t.cursor),"Cursor Text Color":Wr(t.background),"Foreground Color":Wr(t.foreground),"Selected Text Color":Wr(t.foreground),"Selection Color":Wr(t.selectionBackground)}}function Fk(t){return t?{"Background Image Location":t.image,"Background Image Mode":t.cover?2:3,Blend:t.opacity}:{"Background Image Location":""}}function _k(t,e,n,r,i=!1){let o=(c,u)=>({Name:`ttheme · ${u}`,Guid:F(u),...r?{"Dynamic Profile Parent GUID":r}:{},"Use Separate Colors for Light and Dark Mode":!1,...Fk(e.get(c.name)),...jk(c)}),s={Name:"ttheme · default",Guid:F("default"),"Dynamic Profile Parent GUID":r,...Fk(void 0)},a=[...n?[o(n,"default")]:i&&r?[s]:[],...t.map((c)=>o(c,c.name))];return`${JSON.stringify({Profiles:a},null,2)}
377
+ `}function jA(t,e){return[` <key>${t}</key>`,"\t<dict>",...Object.entries(e).flatMap(([n,r])=>[` <key>${n}</key>`,typeof r==="string"?` <string>${r}</string>`:` <real>${r}</real>`]),"\t</dict>"].join(`
378
+ `)}var _h={id:"iterm2",limits:"colors are Display P3, the space iTerm2 reads OSC colors in",emit(t){let e=['<?xml version="1.0" encoding="UTF-8"?>','<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">','<plist version="1.0">',"<dict>",...Object.entries(jk(t)).map(([n,r])=>jA(n,r)),"</dict>","</plist>",""].join(`
379
+ `);return[{path:`iterm2/${F(t.name)}.itermcolors`,content:e}]}};var Bh={id:"kitty",emit(t){let e=[...jr(t),`background ${t.background}`,`foreground ${t.foreground}`,`cursor ${t.cursor}`,`cursor_text_color ${t.background}`,`selection_background ${t.selectionBackground}`,`selection_foreground ${t.foreground}`,...t.ansi.map((n,r)=>`color${r} ${n}`),""].join(`
380
+ `);return[{path:`kitty/themes/${F(t.name)}.conf`,content:e}]}};function Bk(t){return["# Generated by ttheme — rewritten on every add, remove and default; do not edit.","import os","",`THEMES = ${JSON.stringify(t.themes)}`,`BACKGROUNDS = ${JSON.stringify(t.backgrounds)}`,"PLACES = {"," 'top-left': 'top-left', 'top-center': 'top', 'top-right': 'top-right',"," 'center-left': 'left', 'center': 'center', 'center-center': 'center', 'center-right': 'right',"," 'bottom-left': 'bottom-left', 'bottom-center': 'bottom', 'bottom-right': 'bottom-right',","}","","shown = {}","faded = {}","worn = {}","","","def locate(path):"," if path.startswith('~/'):"," return os.path.expanduser(path)"," return path if os.path.isabs(path) else os.path.join(BACKGROUNDS, path)","","","def read(path, into):"," try:"," with open(path, encoding='utf-8') as f:"," lines = f.read().splitlines()"," except OSError:"," return False"," for line in lines:"," key, sep, value = line.partition('=')"," key, value = key.strip(), value.strip()"," if not sep or not key or key.startswith('#'):"," continue"," if key == 'config-file':"," read(locate(value.lstrip('?')), into)"," else:"," into[key] = value"," return True","","","def logo(palette):"," c = {}"," if not palette or not read(os.path.join(BACKGROUNDS, palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf'), c):"," return None"," image = c.get('background-image', '')"," try:"," opacity = min(float(c.get('background-image-opacity', '1')), 1.0)"," except ValueError:"," opacity = 1.0"," if not image or opacity <= 0:"," return None"," return locate(image), PLACES.get(c.get('background-image-position', 'center'), 'center'), opacity","","","def fade(path, opacity):"," key = f'{path}#{opacity}'"," if key not in faded:"," from kitty.fast_data_types import load_png_data, png_from_32bit_rgba_data"," with open(path, 'rb') as f:"," rgba, width, height = load_png_data(f.read())"," data = bytearray(rgba)"," data[3::4] = data[3::4].translate(bytes(round(a * opacity) for a in range(256)))"," if len(faded) > 8:"," faded.clear()"," faded[key] = png_from_32bit_rgba_data(bytes(data), width, height)"," return key, faded[key]","","","def show(window):"," want = logo(window.user_vars.get('ttheme_shown') or '')"," if window.id in shown and shown[window.id] == want:"," return"," shown[window.id] = want"," try:"," if want is None:"," window.set_logo('')"," elif want[2] < 1:"," key, png = fade(want[0], want[2])"," window.set_logo(key, want[1], 1, png)"," else:"," window.set_logo(want[0], want[1], 1)"," except Exception:"," shown.pop(window.id, None)","","","def theme(palette):"," path = os.path.join(THEMES, 'ttheme-' + palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf')"," if not palette or not os.path.exists(path):"," return None"," from kitty.colors import parse_colors"," return parse_colors([path])","","","def wear(palette):"," colors = theme(palette) if worn.get('startup') != palette else None"," if colors is None:"," return"," from kitty.colors import patch_colors"," patch_colors(colors[0], colors[1], True, ())"," worn['startup'] = palette","","","def rewear(boss):"," from kitty.colors import patch_colors"," for window in tuple(boss.all_windows):"," colors = theme(window.user_vars.get('ttheme_worn') or '')"," if colors is not None:"," patch_colors(colors[0], colors[1], False, (window,))","","","def on_load(boss, data):"," if getattr(boss, 'ttheme_rewears', False):"," return"," load = boss.load_config_file",""," def reload(*args, **kwargs):"," load(*args, **kwargs)"," worn.pop('startup', None)"," rewear(boss)",""," boss.load_config_file = reload"," boss.ttheme_rewears = True","","","def on_set_user_var(boss, window, data):"," if data['key'] == 'ttheme_shown':"," show(window)"," elif data['key'] == 'ttheme_startup':"," wear(data['value'] or '')","","","def on_focus_change(boss, window, data):"," if data['focused']:"," show(window)","","","def on_close(boss, window, data):"," shown.pop(window.id, None)",""].join(`
381
+ `)}function _A(t){let[e]=t;if(!e)throw Error("manifest needs at least one theme");return{...Dc(),palettes:t.map(Qe)}}var Gh={id:"meta",emitShared(t){return[{path:"manifest.json",content:`${JSON.stringify(_A(t),null,2)}
382
+ `}]}};var Uh={id:"terminal-app",limits:"profiles go into its own settings at init, so the archive carries none"};import{createHash as BA}from"node:crypto";var GA=["black","red","green","yellow","blue","magenta","cyan","white"];function Gk(t,e){return[` ${t}:`,...GA.map((n,r)=>` ${n}: "${e[r]}"`)]}function UA(t,e,n){let r=BA("sha1");for(let i of e)r.update(i);return`${F(t)}.${r.digest("hex").slice(0,8)}.${n}`}function Uk(t,e,n){let r=2166136261;for(let i of Buffer.from(`${e}
383
+ ${n.toLowerCase()}`,"utf8"))r=Math.imul(r^i,16777619)>>>0;return`${F(t)}.${r.toString(16).padStart(8,"0")}.png`}function ba(t,e){return e?UA(t,[e.image,String(Wk(e))],"yaml"):`${F(t)}.yaml`}function Wk(t){return Math.max(0,Math.min(100,Math.round(t.opacity*100)))}function wa(t,e){return[`name: "${t.name}"`,`background: "${t.background}"`,`foreground: "${t.foreground}"`,`accent: "${t.cursor}"`,`cursor: "${t.cursor}"`,`details: ${St(t.background)<0.18?"darker":"lighter"}`,...e?["background_image:",` path: "${e.image}"`,` opacity: ${Wk(e)}`]:[],"terminal_colors:",...Gk("normal",t.ansi.slice(0,8)),...Gk("bright",t.ansi.slice(8,16)),""].join(`
384
+ `)}var Wh={id:"warp",limits:"no selection color, and Warp paints one theme app-wide",emit(t){return[{path:`warp/themes/${ba(t.name)}`,content:wa(t)}]}};var Kk=(t)=>`[${t.map((e)=>`"${e}"`).join(", ")}]`,Kh={id:"wezterm",limits:"OSC repaints per pane, pictures show per window",emit(t){let e=["[metadata]",`name = "${F(t.name)}"`,`origin_url = "${t.ansiSource}"`,"","[colors]",`foreground = "${t.foreground}"`,`background = "${t.background}"`,`cursor_bg = "${t.cursor}"`,`cursor_border = "${t.cursor}"`,`cursor_fg = "${t.background}"`,`selection_bg = "${t.selectionBackground}"`,`selection_fg = "${t.foreground}"`,"",`ansi = ${Kk(t.ansi.slice(0,8))}`,`brights = ${Kk(t.ansi.slice(8,16))}`,""].join(`
385
+ `);return[{path:`wezterm/colors/${F(t.name)}.toml`,content:e}]}},ns=(t)=>JSON.stringify(t);function zk(t){return["-- Generated by ttheme — rewritten on every add, remove and default; do not edit.","local wezterm = require 'wezterm'","",`local MODULE = ${ns(t.path)}`,`local COLORS = ${ns(t.colors)}`,`local BACKGROUNDS = ${ns(t.backgrounds)}`,`local STARTUP = ${t.startup?ns(F(t.startup)):"nil"}`,"local PALETTES = {",...t.palettes.map((e)=>` [${ns(e.name)}] = ${ns(e.background)},`),"}","","local X = { left = 'Left', center = 'Center', right = 'Right' }","local Y = { top = 'Top', center = 'Middle', bottom = 'Bottom' }","local SIZE = { cover = 'Cover', contain = 'Contain', stretch = '100%' }","","local function locate(path)"," if path:sub(1, 2) == '~/' then"," return os.getenv('HOME') .. path:sub(2)"," elseif path:sub(1, 1) == '/' or path:match('^%a:[/\\\\]') then"," return path"," end"," return BACKGROUNDS .. '/' .. path","end","","local function read(path, into)"," local f = io.open(path, 'r')"," if not f then"," return false"," end"," for line in f:lines() do"," local key, value = line:match('^%s*([%w%-]+)%s*=%s*(.-)%s*$')"," if key == 'config-file' then"," read(locate((value:gsub('^%?', ''))), into)"," elseif key then"," into[key] = value"," end"," end"," f:close()"," return true","end","","local function layers(palette)"," local color = PALETTES[palette]"," local c = {}"," if not color or not read(BACKGROUNDS .. '/' .. ((palette:gsub('@', '--', 1)):gsub('/', '--', 1)) .. '.conf', c) then"," return nil, 'none'"," end"," local image = c['background-image'] or ''"," local opacity = tonumber(c['background-image-opacity'] or '1') or 1"," if image == '' or opacity <= 0 then"," return nil, 'none'"," end"," local fit = c['background-image-fit'] or 'contain'"," local position = c['background-image-position'] or 'center'"," local y, x = position:match('^(%a+)-(%a+)$')"," local rep = c['background-image-repeat'] == 'true' and 'Repeat' or 'NoRepeat'"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = locate(image) },"," opacity = opacity,"," width = SIZE[fit],"," height = SIZE[fit],"," horizontal_align = X[x or 'center'],"," vertical_align = Y[y or 'center'],"," repeat_x = rep,"," repeat_y = rep,"," },"," }, table.concat({ color, image, opacity, fit, position, rep }, '|')","end","","local function framed(window, view)"," local color, image, opacity, W, H, w, h, x, y, at ="," view:match('^([^|]*)|([^|]*)|([^|]*)|(%d+)|(%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%d)$')"," if not image or image == '' or tonumber(W) == 0 or tonumber(H) == 0 then"," return nil, 'none'"," end"," local d = window:get_dimensions()"," local k = math.max(d.pixel_width / W, d.pixel_height / H)"," local n = tonumber(at) - 1"," local ax, ay = n % 3, n // 3"," local px = function(n) return string.format('%.2fpx', n) end"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = image },"," opacity = tonumber(opacity) or 1,"," width = px(w * k),"," height = px(h * k),"," horizontal_align = 'Left',"," vertical_align = 'Top',"," horizontal_offset = px(ax * (d.pixel_width - W * k) / 2 + x * k),"," vertical_offset = px(ay * (d.pixel_height - H * k) / 2 + y * k),"," repeat_x = 'NoRepeat',"," repeat_y = 'NoRepeat',"," },"," }, table.concat({ view, d.pixel_width, d.pixel_height }, '|')","end","","local shown = {}","","local function show(window, pane)"," local vars = pane:get_user_vars()"," local id = window:window_id()"," local background, key"," if vars.ttheme_view and vars.ttheme_view ~= '' then"," background, key = framed(window, vars.ttheme_view)"," elseif vars.ttheme_shown and vars.ttheme_shown ~= '' then"," background, key = layers(vars.ttheme_shown)"," elseif shown[id] == nil then"," return"," end"," if shown[id] == key then"," return"," end"," shown[id] = key"," local overrides = window:get_config_overrides() or {}"," overrides.background = background"," window:set_config_overrides(overrides)","end","","wezterm.on('user-var-changed', function(window, pane, name)"," if name == 'ttheme_shown' or name == 'ttheme_view' then"," show(window, pane)"," end","end)","wezterm.on('update-status', show)","","return function(config)"," local dirs = config.color_scheme_dirs or {}"," table.insert(dirs, COLORS)"," config.color_scheme_dirs = dirs"," if STARTUP then"," config.color_scheme = STARTUP"," end"," wezterm.add_to_config_reload_watch_list(MODULE)","end",""].join(`
386
+ `)}var Dk=["black","red","green","yellow","blue","purple","cyan","white"];function qk(t){return{name:F(t.name),background:t.background,foreground:t.foreground,cursorColor:t.cursor,selectionBackground:t.selectionBackground,...Object.fromEntries(Dk.map((e,n)=>[e,t.ansi[n]])),...Object.fromEntries(Dk.map((e,n)=>[`bright${e[0]?.toUpperCase()}${e.slice(1)}`,t.ansi[n+8]]))}}function zh(t,e,n){let r={...e&&n?{profiles:[{updates:e,colorScheme:F(n)}]}:{},schemes:t.map(qk)};return`${JSON.stringify(r,null,2)}
387
+ `}var Dh={id:"windows-terminal",limits:"a picture belongs to a profile, which a pane cannot change, so none; OSC repaints per pane",emit(t){return[{path:`windows-terminal/schemes/${F(t.name)}.json`,content:`${JSON.stringify(qk(t),null,2)}
388
+ `}]},emitShared(t){return[{path:"windows-terminal/ttheme.json",content:zh(t)}]}};function WA(t){let e=t.replace(Xo,"");return/^[ \t]*\[colors[\].]/m.test(e)||/^[ \t]*colors[ \t]*[.=]/m.test(e)}var KA=/^[ \t]*\[general\][ \t]*(?:#.*)?$/m,Jk=/^[ \t]*\[/m,Vk=/^[ \t]*import[ \t]*=/m,zA=/^[ \t]*general[ \t]*[.=]/m;function DA(t){return t?`[general]
389
+ import = ["${t}"]`:""}function qh(t,e){let n=t.replace(Xo,""),r=KA.exec(n);if(!r){let c=n.search(Jk),u=c<0?n:n.slice(0,c);if(zA.test(n)||Vk.test(u))return;return _r(t,DA(e))}let i=r.index+r[0].length,o=n.slice(i),s=o.search(Jk);if(Vk.test(s<0?o:o.slice(0,s)))return;let a=e?`import = ["${e}"]
389
390
  `:"";return`${n.slice(0,i)}
390
- ${Eh}
391
- ${a}${Mh}${o}`}function Ou(t){return Iu(t,"alacritty","alacritty.toml")}function Hk(t){return Iu(t.configHome,"alacritty","themes")}function hA(t,e){return e?Iu(t,"alacritty","themes",`${j(e)}.toml`):void 0}var Uh={id:"alacritty",name:"Alacritty",emitter:Nh,shelf:{from:"themes",dir:Hk},offered:()=>!0,present:(t)=>Nk(Iu(t.configHome,"alacritty")),sync(t,e){e.themes(Uh);let n=Ou(t.configHome),r=Gh(at(n),hA(t.configHome,t.startup));if(r!==void 0)e.wire(n,r)},plan(t){let e=Ou(t.configHome);return Gh(at(e),void 0)!==void 0?[`Edit ${Ct(e,t.home)} — a ttheme block: general.import`]:[]},notes(t){let e=Ou(t.configHome),n=at(e);return[...Nk(e)&&Gh(n,void 0)===void 0?[`${e} already imports files under [general] — ttheme left it alone; add ${Hk(t)}/<palette>.toml to that import list yourself`]:[],...uA(n)?[`${Ct(e,t.home)} sets its own colors, which win over an imported palette — remove them to open with ttheme's`]:[]]},next:()=>["Alacritty Reloads its config by itself"],unwire:(t)=>({edits:xn(Ou(t.configHome),Br),removals:[],touches:[]})};import{existsSync as mA}from"node:fs";import{join as Pu}from"node:path";function pA(t,e,n=""){let r=[];if(!Gr(n,"command")){if(r.push(`command = ${t}/launch-tab.zsh`),!Gr(n,"shell-integration"))r.push("shell-integration = zsh")}if(e)r.push(`theme = ${j(e)}`);return r.push(`config-file = ?${t}/backgrounds/shown.conf`),r.join(`
392
- `)}function Ru(t){return Pu(t,"ghostty","config")}function Ck(t,e,n){return pA(Pu(t.configHome,"ttheme"),e,n)}var Wh={id:"ghostty",name:"Ghostty",emitter:Ah,shelf:{from:"themes",dir:(t)=>Pu(t.configHome,"ghostty","themes")},offered:()=>!0,present:(t)=>mA(Pu(t.configHome,"ghostty")),sync(t,e){e.themes(Wh);let n=Ru(t.configHome),r=at(n);e.wire(n,_r(r,Ck(t,t.startup,r)))},plan(t){let e=Ru(t.configHome);return[`Edit ${Ct(e,t.home)} — a ttheme block: ${xu(Ck(t,t.startup,at(e)))}`]},notes(t){let e=Ru(t.configHome);return Gr(at(e),"command")?[`${Ct(e,t.home)} sets its own command — ttheme leaves it, so a new tab takes its palette once zsh starts`]:[]},next:()=>["Restart Ghostty New tabs pick up its config"],unwire:(t)=>({edits:xn(Ru(t.configHome),Br),removals:[],touches:[]})};import{existsSync as Lk}from"node:fs";import{join as _k}from"node:path";var Kh="ttheme-default";function Vo(t){return _k(t,"Library","Application Support","iTerm2","DynamicProfiles","ttheme.json")}function Bk(t){return t.itermBase!==void 0&&t.palettes.length>0}function Fk(t){let e=V(t.configHome),n=new Map;for(let i of t.themes){let o=Oe(e,i.name,t.home);if(o)n.set(i.name,o)}let r=new Set(It(t.entries).map((i)=>i.name));return vk(t.themes.filter((i)=>r.has(i.name)),n,t.themes.find((i)=>i.name===t.startup),t.state.itermBase,Bk(t.state))}function zh(t){return t.env.TTHEME_ITERM_SUITE??"com.googlecode.iterm2"}function jk(t){return t.run("defaults",["read",zh(t),"Default Bookmark Guid"])||void 0}function gA(t){return t.run("defaults",["read",zh(t),"PreventEscapeSequenceFromChangingProfile"])==="0"}var bA={key:"itermBase",profile:()=>"ttheme · default",base(t){let e=jk(t.host);return e&&!e.startsWith("ttheme-")?{...t.state,itermBase:e}:t.state},point(t,e){let n=jk(t.host),r=t.startup?e||n===Kh?Kh:void 0:n===Kh&&!Bk(t.state)?t.state.itermBase:void 0;if(!r||r===n)return;return t.host.run("defaults",["write",zh(t.host),"Default Bookmark Guid","-string",r]),{restart:Boolean(t.host.run("pgrep",["-x","iTerm2"]))}}},Gk={id:"iterm2",name:"iTerm2",emitter:Th,bakes:!0,offered:(t,e)=>e.platform==="darwin",present:(t)=>Lk(_k(t.home,"Library","Application Support","iTerm2")),sync(t,e){e.write(Vo(t.home),Fk(t))},pictures(t,e){e.write(Vo(t.home),Fk(t))},layer:(t,e)=>({TTHEME_ITERM_SWITCH:gA(e)?"1":"",TTHEME_ITERM_PROFILES:Vo(t.home)}),plan:(t)=>[`Write ${Ct(Vo(t.home),t.home)} — a "ttheme · <palette>" profile per palette`],notes:()=>[],next(t,e){let n=['iTerm2 profiles A "ttheme · <palette>" per palette in Settings › Profiles'];if(t.startup)n.push(e?.restart?`Restart iTerm2 New tabs open on "ttheme · default", which wears ${t.startup}`:`iTerm2 default "ttheme · default" wears ${t.startup} and follows \`ttheme default\``);return n},unwire:(t)=>({edits:[],removals:Lk(Vo(t.home))?[Vo(t.home)]:[],touches:[]}),defaults:bA};import{existsSync as wA}from"node:fs";import{join as Au}from"node:path";function Uk(t,e,n=""){return[...t?[`include themes/${j(t)}.conf`]:[],`watcher ${e}`,...["window_logo_scale 100","window_logo_alpha 1"].filter((r)=>!Gr(n,r.split(" ")[0]))].join(`
393
- `)}function Nu(t){return Au(t,"kitty","kitty.conf")}function Dh(t){return Au(t,"ttheme","kitty.py")}function Wk(t){return Au(t.configHome,"kitty","themes")}var qh={id:"kitty",name:"kitty",emitter:Hh,shelf:{from:"themes",dir:Wk},offered:()=>!0,present:(t)=>wA(Au(t.configHome,"kitty")),sync(t,e){e.themes(qh),e.write(Dh(t.configHome),Sk({themes:Wk(t),backgrounds:V(t.configHome)}));let n=Nu(t.configHome),r=at(n);e.wire(n,_r(r,Uk(t.startup,Dh(t.configHome),r)))},plan(t){let e=Nu(t.configHome),n=Uk(t.startup,Dh(t.configHome),at(e));return[`Edit ${Ct(e,t.home)} — a ttheme block: ${xu(n)}`]},notes(t){let e=at(Nu(t.configHome));return Gr(e,"window_logo_scale")||Gr(e,"window_logo_alpha")?["kitty.conf sets its own window_logo_scale or window_logo_alpha — pictures are drawn with them"]:[]},next:()=>["New kitty window Pictures follow it — kitty reloads its colors by itself"],unwire:(t)=>({edits:xn(Nu(t.configHome),Br),removals:[],touches:[]})};import{createHash as $A}from"node:crypto";import{existsSync as Tu}from"node:fs";import{basename as zk,isAbsolute as kA,join as Ti}from"node:path";function Zo(t){return Ti(fa(t),"konsole")}function pa(t){return Ti(t,"konsolerc")}function Dk(t){return`${j(t)}.profile`}function ga(t){return`ttheme · ${t}`}function qk(t,e){let n=t.findIndex((i)=>i.trim()===`[${e}]`);if(n<0)return;let r=t.findIndex((i,o)=>o>n&&i.trimStart().startsWith("["));return[n,r<0?t.length:r]}function Yh(t){return new RegExp(String.raw`^\s*${t}\s*=`)}function Kr(t,e,n){let r=t.split(`
394
- `),i=qk(r,e);return(i&&r.slice(i[0]+1,i[1]).find((s)=>Yh(n).test(s)))?.replace(Yh(n),"").trim()}function Yk(t,e){let n=t.split(`
395
- `),r=qk(n,"Desktop Entry"),i=e===void 0?[]:[`DefaultProfile=${e}`];if(!r)return e===void 0?t:`${t===""?"":t.replace(/\n*$/,`
391
+ ${Ph}
392
+ ${a}${Nh}${o}`}function Nu(t){return Au(t,"alacritty","alacritty.toml")}function Zk(t){return Au(t.configHome,"alacritty","themes")}function qA(t,e){return e?Au(t,"alacritty","themes",`${F(e)}.toml`):void 0}var Yh={id:"alacritty",name:"Alacritty",emitter:Fh,shelf:{from:"themes",dir:Zk},offered:()=>!0,present:(t)=>Yk(Au(t.configHome,"alacritty")),sync(t,e){e.themes(Yh);let n=Nu(t.configHome),r=qh(at(n),qA(t.configHome,t.startup));if(r!==void 0)e.wire(n,r)},plan(t){let e=Nu(t.configHome);return qh(at(e),void 0)!==void 0?[`Edit ${Lt(e,t.home)} — a ttheme block: general.import`]:[]},notes(t){let e=Nu(t.configHome),n=at(e);return[...Yk(e)&&qh(n,void 0)===void 0?[`${e} already imports files under [general] — ttheme left it alone; add ${Zk(t)}/<palette>.toml to that import list yourself`]:[],...WA(n)?[`${Lt(e,t.home)} sets its own colors, which win over an imported palette — remove them to open with ttheme's`]:[]]},next:()=>["Alacritty Reloads its config by itself"],unwire:(t)=>({edits:Mn(Nu(t.configHome),Br),removals:[],touches:[]})};import{existsSync as YA}from"node:fs";import{join as Hu}from"node:path";function JA(t,e,n=""){let r=[];if(!Gr(n,"command")){if(r.push(`command = ${t}/launch-tab.zsh`),!Gr(n,"shell-integration"))r.push("shell-integration = zsh")}if(e)r.push(`theme = ${F(e)}`);return r.push(`config-file = ?${t}/backgrounds/shown.conf`),r.join(`
393
+ `)}function Tu(t){return Hu(t,"ghostty","config")}function Qk(t,e,n){return JA(Hu(t.configHome,"ttheme"),e,n)}var Jh={id:"ghostty",name:"Ghostty",emitter:jh,shelf:{from:"themes",dir:(t)=>Hu(t.configHome,"ghostty","themes")},offered:()=>!0,present:(t)=>YA(Hu(t.configHome,"ghostty")),sync(t,e){e.themes(Jh);let n=Tu(t.configHome),r=at(n);e.wire(n,_r(r,Qk(t,t.startup,r)))},plan(t){let e=Tu(t.configHome);return[`Edit ${Lt(e,t.home)} — a ttheme block: ${Pu(Qk(t,t.startup,at(e)))}`]},notes(t){let e=Tu(t.configHome);return Gr(at(e),"command")?[`${Lt(e,t.home)} sets its own command — ttheme leaves it, so a new tab takes its palette once zsh starts`]:[]},next:()=>["Restart Ghostty New tabs pick up its config"],unwire:(t)=>({edits:Mn(Tu(t.configHome),Br),removals:[],touches:[]})};import{existsSync as Xk}from"node:fs";import{join as ny}from"node:path";var Vh="ttheme-default";function rs(t){return ny(t,"Library","Application Support","iTerm2","DynamicProfiles","ttheme.json")}function ry(t){return t.itermBase!==void 0&&t.palettes.length>0}function ty(t){let e=Z(t.configHome),n=new Map;for(let i of t.themes){let o=Oe(e,i.name,t.home);if(o)n.set(i.name,o)}let r=new Set(Pt(t.entries).map((i)=>i.name));return _k(t.themes.filter((i)=>r.has(i.name)),n,t.themes.find((i)=>i.name===t.startup),t.state.itermBase,ry(t.state))}function Zh(t){return t.env.TTHEME_ITERM_SUITE??"com.googlecode.iterm2"}function ey(t){return t.run("defaults",["read",Zh(t),"Default Bookmark Guid"])||void 0}function VA(t){return t.run("defaults",["read",Zh(t),"PreventEscapeSequenceFromChangingProfile"])==="0"}var ZA={key:"itermBase",profile:()=>"ttheme · default",base(t){let e=ey(t.host);return e&&!e.startsWith("ttheme-")?{...t.state,itermBase:e}:t.state},point(t,e){let n=ey(t.host),r=t.startup?e||n===Vh?Vh:void 0:n===Vh&&!ry(t.state)?t.state.itermBase:void 0;if(!r||r===n)return;return t.host.run("defaults",["write",Zh(t.host),"Default Bookmark Guid","-string",r]),{restart:Boolean(t.host.run("pgrep",["-x","iTerm2"]))}}},iy={id:"iterm2",name:"iTerm2",emitter:_h,bakes:!0,offered:(t,e)=>e.platform==="darwin",present:(t)=>Xk(ny(t.home,"Library","Application Support","iTerm2")),sync(t,e){e.write(rs(t.home),ty(t))},pictures(t,e){e.write(rs(t.home),ty(t))},layer:(t,e)=>({TTHEME_ITERM_SWITCH:VA(e)?"1":"",TTHEME_ITERM_PROFILES:rs(t.home)}),plan:(t)=>[`Write ${Lt(rs(t.home),t.home)} — a "ttheme · <palette>" profile per palette`],notes:()=>[],next(t,e){let n=['iTerm2 profiles A "ttheme · <palette>" per palette in Settings › Profiles'];if(t.startup)n.push(e?.restart?`Restart iTerm2 New tabs open on "ttheme · default", which wears ${t.startup}`:`iTerm2 default "ttheme · default" wears ${t.startup} and follows \`ttheme default\``);return n},unwire:(t)=>({edits:[],removals:Xk(rs(t.home))?[rs(t.home)]:[],touches:[]}),defaults:ZA};import{existsSync as QA}from"node:fs";import{join as Lu}from"node:path";function oy(t,e,n=""){return[...t?[`include themes/${F(t)}.conf`]:[],`watcher ${e}`,...["window_logo_scale 100","window_logo_alpha 1"].filter((r)=>!Gr(n,r.split(" ")[0]))].join(`
394
+ `)}function Cu(t){return Lu(t,"kitty","kitty.conf")}function Qh(t){return Lu(t,"ttheme","kitty.py")}function sy(t){return Lu(t.configHome,"kitty","themes")}var Xh={id:"kitty",name:"kitty",emitter:Bh,shelf:{from:"themes",dir:sy},offered:()=>!0,present:(t)=>QA(Lu(t.configHome,"kitty")),sync(t,e){e.themes(Xh),e.write(Qh(t.configHome),Bk({themes:sy(t),backgrounds:Z(t.configHome)}));let n=Cu(t.configHome),r=at(n);e.wire(n,_r(r,oy(t.startup,Qh(t.configHome),r)))},plan(t){let e=Cu(t.configHome),n=oy(t.startup,Qh(t.configHome),at(e));return[`Edit ${Lt(e,t.home)} — a ttheme block: ${Pu(n)}`]},notes(t){let e=at(Cu(t.configHome));return Gr(e,"window_logo_scale")||Gr(e,"window_logo_alpha")?["kitty.conf sets its own window_logo_scale or window_logo_alpha — pictures are drawn with them"]:[]},next:()=>["New kitty window Pictures follow it — kitty reloads its colors by itself"],unwire:(t)=>({edits:Mn(Cu(t.configHome),Br),removals:[],touches:[]})};import{createHash as XA}from"node:crypto";import{existsSync as Fu}from"node:fs";import{basename as cy,isAbsolute as tT,join as Hi}from"node:path";function is(t){return Hi(ga(t),"konsole")}function $a(t){return Hi(t,"konsolerc")}function uy(t){return`${F(t)}.profile`}function ka(t){return`ttheme · ${t}`}function ly(t,e){let n=t.findIndex((i)=>i.trim()===`[${e}]`);if(n<0)return;let r=t.findIndex((i,o)=>o>n&&i.trimStart().startsWith("["));return[n,r<0?t.length:r]}function tm(t){return new RegExp(String.raw`^\s*${t}\s*=`)}function Kr(t,e,n){let r=t.split(`
395
+ `),i=ly(r,e);return(i&&r.slice(i[0]+1,i[1]).find((s)=>tm(n).test(s)))?.replace(tm(n),"").trim()}function dy(t,e){let n=t.split(`
396
+ `),r=ly(n,"Desktop Entry"),i=e===void 0?[]:[`DefaultProfile=${e}`];if(!r)return e===void 0?t:`${t===""?"":t.replace(/\n*$/,`
396
397
 
397
398
  `)}[Desktop Entry]
398
399
  ${i[0]}
399
- `;let o=n.findIndex((a,c)=>c>r[0]&&c<r[1]&&Yh("DefaultProfile").test(a));if(o>=0)n.splice(o,1,...i);else n.splice(r[0]+1,0,...i);let s=r[1]+i.length-(o>=0?1:0);if(n.slice(r[0]+1,s).every((a)=>a.trim()==="")){let a=r[0]>0&&n[r[0]-1]?.trim()===""?r[0]-1:r[0],c=s===n.length&&n[s-1]===""?s-1:s;n.splice(a,c-a)}return n.join(`
400
- `)}function yA(t){if(t&&le(t.toLowerCase()))return t.toLowerCase();let e=t?.split(",").map((n)=>Number(n.trim()));if(!e||e.length<3||e.slice(0,3).some((n)=>!Number.isInteger(n)||n<0||n>255))return;return`#${e.slice(0,3).map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function Jk(t,e){let n=e.endsWith(".profile")?e:`${e}.profile`;if(kA(n))return Tu(n)?n:void 0;let r=n.includes("/")?n:Ti("konsole",n);return[fa(t.home),...(process.env.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((o)=>Ti(o,r)).find((o)=>Tu(o))}function Vk(t,e,n=0){let r=e&&e!=="FALLBACK/"&&n<8?Jk(t,e):void 0;if(!r)return{};let i=at(r),o=Vk(t,Kr(i,"General","Parent"),n+1);return{scheme:Kr(i,"Appearance","ColorScheme")||o.scheme,use:Kr(i,"Cursor Options","UseCustomCursorColor")??o.use,cursor:Kr(i,"Cursor Options","CustomCursorColor")??o.cursor}}function vA(t,e){let n=Vk(t,e),r=n.use==="true"?yA(n.cursor):void 0;return[`ColorScheme=${n.scheme??"Breeze"}`,`UseCustomCursorColor=${r?"true":"false"}`,...r?[`customCursorColor=${r}`]:[]].join(";")}function SA(t,e){return["[Appearance]",`ColorScheme=${j(t.name)}`,"","[Cursor Options]",`CustomCursorColor=${et(t.cursor).join(",")}`,`CustomCursorTextColor=${et(t.background).join(",")}`,"UseCustomCursorColor=true","","[General]",`Name=${ga(t.name)}`,`Parent=${e}`,""].join(`
401
- `)}var Zk=/^ttheme-(.+)\.([0-9a-f]{8})\.colorscheme$/;function EA(t){return $A("sha1").update(t).digest("hex").slice(0,8)}function Kk(t,e){let n=Zo(t.home),r=V(t.configHome),i=new Set;for(let o of t.themes){let s=mh(o,Oe(r,o.name,t.home)),a=Ti(n,`${j(o.name)}.${EA(s)}.colorscheme`);i.add(a),e.write(Ti(n,`${j(o.name)}.colorscheme`),s),e.write(a,s)}for(let o of Yo(n))if(Zk.test(zk(o))&&!i.has(o))e.remove(o)}function MA(t){return Yo(t).flatMap((e)=>{let[,n,r]=Zk.exec(zk(e))??[];return n&&r?[`${n} ${r}`]:[]}).sort().join(" ")}function xA(t){let e=new Set(It(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}var Jh=["--session","--print-reply","--reply-timeout=2000"];function OA(t){return[...(t.run("dbus-send",[...Jh,"--dest=org.freedesktop.DBus","/org/freedesktop/DBus","org.freedesktop.DBus.ListNames"])??"").matchAll(/string "(org\.kde\.konsole(?:-\d+)?)"/g)].flatMap(([,n=""])=>{let i=t.run("dbus-send",[...Jh,`--dest=${n}`,"/Windows","org.freedesktop.DBus.Introspectable.Introspect"])?.match(/<node name="(\d+)"/)?.[1];return i?[{service:n,window:`/Windows/${i}`}]:[]})}function IA(t,{service:e,window:n},r){let i=(o,...s)=>t.run("dbus-send",[...Jh,`--dest=${e}`,n,`org.kde.konsole.Window.${o}`,...s]);return i("setDefaultProfile",`string:${r}`),i("defaultProfile")?.includes(`string "${r}"`)===!0}function RA(t,e){let n=Jk(t,e);return n?Kr(at(n),"General","Name"):void 0}function PA(t){return Kr(at(pa(t)),"Desktop Entry","DefaultProfile")}var NA={key:"konsoleBase",profile:ga,base(t){let e=PA(t.configHome);return e&&!e.startsWith(j(""))?{...t.state,konsoleBase:e}:t.state},point(t,e){let n=pa(t.configHome),r=at(n),i=Kr(r,"Desktop Entry","DefaultProfile"),o=i?.startsWith(j(""))===!0,s=t.startup?e||o?Dk(t.startup):void 0:o?t.state.konsoleBase??"":void 0;if(s===void 0||s===(i??"")&&!e)return;if(s!==(i??""))bn(n,Yk(r,s||void 0));let a=t.startup?ga(t.startup):s?RA(t,s):void 0,c=OA(t.host),u=a!==void 0&&c.every((l)=>IA(t.host,l,a));return{restart:c.length>0&&!u}}},Qk={id:"konsole",name:"Konsole",emitter:ph,shelf:{from:"",dir:(t)=>Zo(t.home)},offered:(t,e)=>e.platform!=="darwin"&&e.platform!=="win32",present:(t)=>Tu(Zo(t.home))||Tu(pa(t.configHome)),sync(t,e){Kk(t,e);let n=Zo(t.home),r=t.state.konsoleBase??"FALLBACK/",i=new Set;for(let o of xA(t)){let s=Ti(n,Dk(o.name));i.add(s),e.write(s,SA(o,r))}for(let o of Yo(n))if(o.endsWith(".profile")&&!i.has(o))e.remove(o)},pictures:Kk,layer:(t)=>({TTHEME_KONSOLE_BASE:vA(t,t.state.konsoleBase),TTHEME_KONSOLE_SCHEMES:MA(Zo(t.home))}),plan(t){return[`Write ${Ct(Zo(t.home),t.home)}/${j("*")}.profile — a "ttheme · <palette>" profile per palette, on top of your own`,...t.startup?[`Edit ${Ct(pa(t.configHome),t.home)} — DefaultProfile; \`ttheme off\` puts yours back`]:[]]},notes:()=>[],next(t,e){let n=['Konsole profiles A "ttheme · <palette>" per palette in its profile list'];if(t.startup)n.push(e?.restart?`Restart Konsole New tabs open on "${ga(t.startup)}"`:`Konsole default "${ga(t.startup)}", which follows \`ttheme default\``);return n},unwire(t,e){let n=pa(t.configHome),r=at(n);return{edits:Kr(r,"Desktop Entry","DefaultProfile")?.startsWith(j(""))?[{file:n,content:Yk(r,e?.konsoleBase)}]:[],removals:[],touches:[]}},defaults:NA};import{createHash as AA}from"node:crypto";import{existsSync as ey,readdirSync as TA,readFileSync as HA,rmSync as CA}from"node:fs";import{join as Hi}from"node:path";var ny="com.apple.Terminal",ba="ttheme · ";function sn(t){return`${ba}${t}`}function Hu(t){return Hi(t,"ttheme","terminal-app.js")}function Qo(t){return Hi(t,"ttheme","terminal-app")}function LA(t,e){return Hi(t.XDG_STATE_HOME??Hi(e,".local","state"),"ttheme","terminal-app.window")}var FA=`ObjC.import('AppKit')
400
+ `;let o=n.findIndex((a,c)=>c>r[0]&&c<r[1]&&tm("DefaultProfile").test(a));if(o>=0)n.splice(o,1,...i);else n.splice(r[0]+1,0,...i);let s=r[1]+i.length-(o>=0?1:0);if(n.slice(r[0]+1,s).every((a)=>a.trim()==="")){let a=r[0]>0&&n[r[0]-1]?.trim()===""?r[0]-1:r[0],c=s===n.length&&n[s-1]===""?s-1:s;n.splice(a,c-a)}return n.join(`
401
+ `)}function eT(t){if(t&&le(t.toLowerCase()))return t.toLowerCase();let e=t?.split(",").map((n)=>Number(n.trim()));if(!e||e.length<3||e.slice(0,3).some((n)=>!Number.isInteger(n)||n<0||n>255))return;return`#${e.slice(0,3).map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function fy(t,e){let n=e.endsWith(".profile")?e:`${e}.profile`;if(tT(n))return Fu(n)?n:void 0;let r=n.includes("/")?n:Hi("konsole",n);return[ga(t.home),...(process.env.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((o)=>Hi(o,r)).find((o)=>Fu(o))}function hy(t,e,n=0){let r=e&&e!=="FALLBACK/"&&n<8?fy(t,e):void 0;if(!r)return{};let i=at(r),o=hy(t,Kr(i,"General","Parent"),n+1);return{scheme:Kr(i,"Appearance","ColorScheme")||o.scheme,use:Kr(i,"Cursor Options","UseCustomCursorColor")??o.use,cursor:Kr(i,"Cursor Options","CustomCursorColor")??o.cursor}}function nT(t,e){let n=hy(t,e),r=n.use==="true"?eT(n.cursor):void 0;return[`ColorScheme=${n.scheme??"Breeze"}`,`UseCustomCursorColor=${r?"true":"false"}`,...r?[`customCursorColor=${r}`]:[]].join(";")}function rT(t,e){return["[Appearance]",`ColorScheme=${F(t.name)}`,"","[Cursor Options]",`CustomCursorColor=${nt(t.cursor).join(",")}`,`CustomCursorTextColor=${nt(t.background).join(",")}`,"UseCustomCursorColor=true","","[General]",`Name=${ka(t.name)}`,`Parent=${e}`,""].join(`
402
+ `)}var my=/^ttheme-(.+)\.([0-9a-f]{8})\.colorscheme$/;function iT(t){return XA("sha1").update(t).digest("hex").slice(0,8)}function ay(t,e){let n=is(t.home),r=Z(t.configHome),i=new Set;for(let o of t.themes){let s=kh(o,Oe(r,o.name,t.home)),a=Hi(n,`${F(o.name)}.${iT(s)}.colorscheme`);i.add(a),e.write(Hi(n,`${F(o.name)}.colorscheme`),s),e.write(a,s)}for(let o of es(n))if(my.test(cy(o))&&!i.has(o))e.remove(o)}function oT(t){return es(t).flatMap((e)=>{let[,n,r]=my.exec(cy(e))??[];return n&&r?[`${n} ${r}`]:[]}).sort().join(" ")}function sT(t){let e=new Set(Pt(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}var em=["--session","--print-reply","--reply-timeout=2000"];function aT(t){return[...(t.run("dbus-send",[...em,"--dest=org.freedesktop.DBus","/org/freedesktop/DBus","org.freedesktop.DBus.ListNames"])??"").matchAll(/string "(org\.kde\.konsole(?:-\d+)?)"/g)].flatMap(([,n=""])=>{let i=t.run("dbus-send",[...em,`--dest=${n}`,"/Windows","org.freedesktop.DBus.Introspectable.Introspect"])?.match(/<node name="(\d+)"/)?.[1];return i?[{service:n,window:`/Windows/${i}`}]:[]})}function cT(t,{service:e,window:n},r){let i=(o,...s)=>t.run("dbus-send",[...em,`--dest=${e}`,n,`org.kde.konsole.Window.${o}`,...s]);return i("setDefaultProfile",`string:${r}`),i("defaultProfile")?.includes(`string "${r}"`)===!0}function uT(t,e){let n=fy(t,e);return n?Kr(at(n),"General","Name"):void 0}function lT(t){return Kr(at($a(t)),"Desktop Entry","DefaultProfile")}var dT={key:"konsoleBase",profile:ka,base(t){let e=lT(t.configHome);return e&&!e.startsWith(F(""))?{...t.state,konsoleBase:e}:t.state},point(t,e){let n=$a(t.configHome),r=at(n),i=Kr(r,"Desktop Entry","DefaultProfile"),o=i?.startsWith(F(""))===!0,s=t.startup?e||o?uy(t.startup):void 0:o?t.state.konsoleBase??"":void 0;if(s===void 0||s===(i??"")&&!e)return;if(s!==(i??""))gn(n,dy(r,s||void 0));let a=t.startup?ka(t.startup):s?uT(t,s):void 0,c=aT(t.host),u=a!==void 0&&c.every((l)=>cT(t.host,l,a));return{restart:c.length>0&&!u}}},py={id:"konsole",name:"Konsole",emitter:yh,shelf:{from:"",dir:(t)=>is(t.home)},offered:(t,e)=>e.platform!=="darwin"&&e.platform!=="win32",present:(t)=>Fu(is(t.home))||Fu($a(t.configHome)),sync(t,e){ay(t,e);let n=is(t.home),r=t.state.konsoleBase??"FALLBACK/",i=new Set;for(let o of sT(t)){let s=Hi(n,uy(o.name));i.add(s),e.write(s,rT(o,r))}for(let o of es(n))if(o.endsWith(".profile")&&!i.has(o))e.remove(o)},pictures:ay,layer:(t)=>({TTHEME_KONSOLE_BASE:nT(t,t.state.konsoleBase),TTHEME_KONSOLE_SCHEMES:oT(is(t.home))}),plan(t){return[`Write ${Lt(is(t.home),t.home)}/${F("*")}.profile — a "ttheme · <palette>" profile per palette, on top of your own`,...t.startup?[`Edit ${Lt($a(t.configHome),t.home)} — DefaultProfile; \`ttheme off\` puts yours back`]:[]]},notes:()=>[],next(t,e){let n=['Konsole profiles A "ttheme · <palette>" per palette in its profile list'];if(t.startup)n.push(e?.restart?`Restart Konsole New tabs open on "${ka(t.startup)}"`:`Konsole default "${ka(t.startup)}", which follows \`ttheme default\``);return n},unwire(t,e){let n=$a(t.configHome),r=at(n);return{edits:Kr(r,"Desktop Entry","DefaultProfile")?.startsWith(F(""))?[{file:n,content:dy(r,e?.konsoleBase)}]:[],removals:[],touches:[]}},defaults:dT};import{createHash as fT}from"node:crypto";import{existsSync as wy,readdirSync as hT,readFileSync as mT,rmSync as pT}from"node:fs";import{join as Ci}from"node:path";var $y="com.apple.Terminal",ya="ttheme · ";function on(t){return`${ya}${t}`}function ju(t){return Ci(t,"ttheme","terminal-app.js")}function os(t){return Ci(t,"ttheme","terminal-app")}function gT(t,e){return Ci(t.XDG_STATE_HOME??Ci(e,".local","state"),"ttheme","terminal-app.window")}var bT=`ObjC.import('AppKit')
402
403
 
403
- const OURS = '${ba}'
404
+ const OURS = '${ya}'
404
405
  const IMAGE = 'BackgroundImageBookmark'
405
406
  const KEYS = ['BackgroundColor', 'TextColor', 'CursorColor', 'SelectionColor', 'ANSIBlackColor', 'ANSIRedColor',
406
407
  'ANSIGreenColor', 'ANSIYellowColor', 'ANSIBlueColor', 'ANSIMagentaColor', 'ANSICyanColor', 'ANSIWhiteColor',
@@ -584,83 +585,65 @@ function run(argv) {
584
585
  }
585
586
  return changed ? 'wrote' : 'same'
586
587
  }
587
- `;function Vh(t,e,n){return t.run("osascript",["-l","JavaScript",Hu(e),...n])}function Zh(t){return t.run("defaults",["read",ny,"Default Window Settings"])||void 0}function jA(t){return[t.background,t.foreground,t.cursor,t.selectionBackground,...t.ansi]}function ry(t){let e=new Set(It(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}function Qh(t,e){let n=Zh(e);return t.terminalBase??(n&&!n.startsWith(ba)?n:"Basic")}function Xh(t,e){let n=/^(\d+)x(\d+)$/.exec(at(LA(t,e)).trim());return n?{width:Number(n[1])*2,height:Number(n[2])*2}:void 0}function tm(t,e,n,r){let i=r?.width??t,o=r?.height??e,s=Ut.indexOf(n.position)+1||5,a=Ao(t,e,i,o,100,s,n.cover),c=Math.min(1,t/Math.max(1,a.w));return{width:Math.max(1,Math.round(i*c)),height:Math.max(1,Math.round(o*c)),at:{x:Math.round(a.x*c),y:Math.round(a.y*c),w:Math.round(a.w*c),h:Math.round(a.h*c)}}}var iy=/^ttheme-(.+)\.([0-9a-z-]+)\.png$/;function Cu(t){let e=new Map;for(let n of ey(t)?TA(t):[]){let[,r]=iy.exec(n)??[];if(r)e.set(r,[...e.get(r)??[],n])}return e}function _A(t){return[...Cu(t)].map(([e,n])=>`${e} ${(iy.exec(n[0])??[])[2]}`).sort().join(" ")}function Xk(t){let e=Qo(t.configHome),n=Cu(e),r=Xh(t.host.env,t.home),i=new Map,o=(s)=>{for(let a of s)CA(Hi(e,a),{force:!0})};for(let s of ry(t)){let a=n.get(oe(s.name))??[];n.delete(oe(s.name));let c=Oe(V(t.configHome),s.name,t.home),u=c&&ey(c.image)?new Uint8Array(HA(c.image)):void 0,l=u&&$n(u);if(!c||!u||!l||c.opacity<=0){o(a);continue}let d=tm(l.width,l.height,c,r),f=AA("sha1").update(u).update(JSON.stringify([s.background.toLowerCase(),c.opacity,d])).digest("hex").slice(0,8),h=`${j(s.name)}.${f}.png`,m=Hi(e,h);if(!a.includes(h)){let g;try{g=yr(kr(jt(u),s.background,c.opacity,d))}catch{o(a);continue}let[b,...w]=a;if(b)li(Hi(e,b),m,g);else F(m,g);o(w)}else o(a.filter((g)=>g!==h));i.set(s.name,m)}for(let s of n.values())o(s);return i}function ty(t,e){Vh(t.host,t.configHome,["write",Qh(t.state,t.host),...ry(t).flatMap((n)=>[sn(n.name),...jA(n),e.get(n.name)??"-"])])}var BA={key:"terminalBase",profile:sn,base(t){let e=Zh(t.host);return e&&!e.startsWith(ba)?{...t.state,terminalBase:e}:t.state},point(t,e){let n=Zh(t.host),r=n?.startsWith(ba)===!0;if(t.state.palettes.length===0)Vh(t.host,t.configHome,["drop"]);let i=t.startup?e||r?sn(t.startup):void 0:r?Qh(t.state,t.host):void 0;if(i===void 0||i===n&&!e)return;for(let s of["Default Window Settings","Startup Window Settings"])t.host.run("defaults",["write",ny,s,"-string",i]);return{restart:Boolean(t.host.run("pgrep",["-x","Terminal"]))&&Vh(t.host,t.configHome,["loaded",i])!=="1"}}},oy={id:"terminal-app",name:"Terminal.app",emitter:Lh,offered:(t,e)=>e.platform==="darwin",present:()=>!1,sync(t,e){e.write(Hu(t.configHome),FA),ty(t,Xk(t))},pictures(t){ty(t,Xk(t))},layer:(t,e)=>({TTHEME_TERMINAL_APP_BASE:Qh(t.state,e),TTHEME_TERMINAL_PICTURES:_A(Qo(t.configHome))}),plan:(t)=>[`Add a "${sn("<palette>")}" profile per palette to Terminal.app's settings — a copy of your own profile in the palette's colors, with its picture`,...t.startup?[`Make "${sn(t.startup)}" Terminal.app's default — \`ttheme off\` puts yours back`]:[]],notes:()=>[],next(t,e){let n=[`Terminal.app A "${sn("<palette>")}" profile per palette in Settings › Profiles`];if(t.startup)n.push(e?.restart?`Restart Terminal New windows and tabs open on "${sn(t.startup)}"`:`Terminal default "${sn(t.startup)}", which follows \`ttheme default\``);return n},unwire:()=>({edits:[],removals:[],touches:[]}),defaults:BA};import{spawn as GA}from"node:child_process";import{existsSync as zr,mkdirSync as UA,readdirSync as em,readFileSync as nm,realpathSync as WA,rmSync as KA,writeFileSync as zA}from"node:fs";import{dirname as uy,join as Ne}from"node:path";function Ci(t){return process.platform==="darwin"?Ne(t,".warp","themes"):Ne(fa(t),"warp-terminal","themes")}function Dr(t,e){return process.platform==="darwin"?Ne(t,".warp","settings.toml"):Ne(e,"warp-terminal","settings.toml")}var Lu='"dark"';function Fu(t){return Ne(t,"ttheme","warp.base")}var ly="[appearance.themes]";function dy(t){let e=t.findIndex((r)=>r.trim()===ly);if(e<0)return;let n=t.findIndex((r,i)=>i>e&&r.trimStart().startsWith("["));return[e,n<0?t.length:n]}function qr(t){let e=t.split(`
588
- `),n=dy(e);if(!n)return;return e.slice(n[0]+1,n[1]).find((i)=>/^theme\s*=/.test(i))?.replace(/^theme\s*=\s*/,"").trim()}function im(t,e=`${j(t)}.yaml`){return`{ custom = { name = "${t}", path = "${e}" } }`}function DA(t){return t?.includes(`path = "${j("")}`)===!0?/name = "([^"]+)"/.exec(t)?.[1]:void 0}function ju(t,e){let n=t.split(`
589
- `),r=dy(n);if(!r)return e===void 0?t:`${t.replace(/\n*$/,`
588
+ `;function nm(t,e,n){return t.run("osascript",["-l","JavaScript",ju(e),...n])}function rm(t){return t.run("defaults",["read",$y,"Default Window Settings"])||void 0}function wT(t){return[t.background,t.foreground,t.cursor,t.selectionBackground,...t.ansi]}function ky(t){let e=new Set(Pt(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}function im(t,e){let n=rm(e);return t.terminalBase??(n&&!n.startsWith(ya)?n:"Basic")}function om(t,e){let n=/^(\d+)x(\d+)$/.exec(at(gT(t,e)).trim());return n?{width:Number(n[1])*2,height:Number(n[2])*2}:void 0}function sm(t,e,n,r){let i=r?.width??t,o=r?.height??e,s=Wt.indexOf(n.position)+1||5,a=Co(t,e,i,o,100,s,n.cover),c=Math.min(1,t/Math.max(1,a.w));return{width:Math.max(1,Math.round(i*c)),height:Math.max(1,Math.round(o*c)),at:{x:Math.round(a.x*c),y:Math.round(a.y*c),w:Math.round(a.w*c),h:Math.round(a.h*c)}}}var yy=/^ttheme-(.+)\.([0-9a-z-]+)\.png$/;function _u(t){let e=new Map;for(let n of wy(t)?hT(t):[]){let[,r]=yy.exec(n)??[];if(r)e.set(r,[...e.get(r)??[],n])}return e}function $T(t){return[..._u(t)].map(([e,n])=>`${e} ${(yy.exec(n[0])??[])[2]}`).sort().join(" ")}function gy(t){let e=os(t.configHome),n=_u(e),r=om(t.host.env,t.home),i=new Map,o=(s)=>{for(let a of s)pT(Ci(e,a),{force:!0})};for(let s of ky(t)){let a=n.get(oe(s.name))??[];n.delete(oe(s.name));let c=Oe(Z(t.configHome),s.name,t.home),u=c&&wy(c.image)?new Uint8Array(mT(c.image)):void 0,l=u&&wn(u);if(!c||!u||!l||c.opacity<=0){o(a);continue}let d=sm(l.width,l.height,c,r),f=fT("sha1").update(u).update(JSON.stringify([s.background.toLowerCase(),c.opacity,d])).digest("hex").slice(0,8),h=`${F(s.name)}.${f}.png`,m=Ci(e,h);if(!a.includes(h)){let p;try{p=$r(wr(_t(u),s.background,c.opacity,d))}catch{o(a);continue}let[b,...$]=a;if(b)di(Ci(e,b),m,p);else L(m,p);o($)}else o(a.filter((p)=>p!==h));i.set(s.name,m)}for(let s of n.values())o(s);return i}function by(t,e){nm(t.host,t.configHome,["write",im(t.state,t.host),...ky(t).flatMap((n)=>[on(n.name),...wT(n),e.get(n.name)??"-"])])}var kT={key:"terminalBase",profile:on,base(t){let e=rm(t.host);return e&&!e.startsWith(ya)?{...t.state,terminalBase:e}:t.state},point(t,e){let n=rm(t.host),r=n?.startsWith(ya)===!0;if(t.state.palettes.length===0)nm(t.host,t.configHome,["drop"]);let i=t.startup?e||r?on(t.startup):void 0:r?im(t.state,t.host):void 0;if(i===void 0||i===n&&!e)return;for(let s of["Default Window Settings","Startup Window Settings"])t.host.run("defaults",["write",$y,s,"-string",i]);return{restart:Boolean(t.host.run("pgrep",["-x","Terminal"]))&&nm(t.host,t.configHome,["loaded",i])!=="1"}}},vy={id:"terminal-app",name:"Terminal.app",emitter:Uh,offered:(t,e)=>e.platform==="darwin",present:()=>!1,sync(t,e){e.write(ju(t.configHome),bT),by(t,gy(t))},pictures(t){by(t,gy(t))},layer:(t,e)=>({TTHEME_TERMINAL_APP_BASE:im(t.state,e),TTHEME_TERMINAL_PICTURES:$T(os(t.configHome))}),plan:(t)=>[`Add a "${on("<palette>")}" profile per palette to Terminal.app's settings — a copy of your own profile in the palette's colors, with its picture`,...t.startup?[`Make "${on(t.startup)}" Terminal.app's default — \`ttheme off\` puts yours back`]:[]],notes:()=>[],next(t,e){let n=[`Terminal.app A "${on("<palette>")}" profile per palette in Settings › Profiles`];if(t.startup)n.push(e?.restart?`Restart Terminal New windows and tabs open on "${on(t.startup)}"`:`Terminal default "${on(t.startup)}", which follows \`ttheme default\``);return n},unwire:()=>({edits:[],removals:[],touches:[]}),defaults:kT};import{spawn as yT}from"node:child_process";import{existsSync as zr,mkdirSync as vT,readdirSync as am,readFileSync as cm,realpathSync as ST,rmSync as ET,writeFileSync as MT}from"node:fs";import{dirname as xy,join as Pe}from"node:path";function Li(t){return process.platform==="darwin"?Pe(t,".warp","themes"):Pe(ga(t),"warp-terminal","themes")}function Dr(t,e){return process.platform==="darwin"?Pe(t,".warp","settings.toml"):Pe(e,"warp-terminal","settings.toml")}var Bu='"dark"';function Gu(t){return Pe(t,"ttheme","warp.base")}var Oy="[appearance.themes]";function Iy(t){let e=t.findIndex((r)=>r.trim()===Oy);if(e<0)return;let n=t.findIndex((r,i)=>i>e&&r.trimStart().startsWith("["));return[e,n<0?t.length:n]}function qr(t){let e=t.split(`
589
+ `),n=Iy(e);if(!n)return;return e.slice(n[0]+1,n[1]).find((i)=>/^theme\s*=/.test(i))?.replace(/^theme\s*=\s*/,"").trim()}function lm(t,e=`${F(t)}.yaml`){return`{ custom = { name = "${t}", path = "${e}" } }`}function xT(t){return t?.includes(`path = "${F("")}`)===!0?/name = "([^"]+)"/.exec(t)?.[1]:void 0}function Uu(t,e){let n=t.split(`
590
+ `),r=Iy(n);if(!r)return e===void 0?t:`${t.replace(/\n*$/,`
590
591
  `)}
591
- ${ly}
592
+ ${Oy}
592
593
  theme = ${e}
593
594
  `;let i=n.findIndex((o,s)=>s>r[0]&&s<r[1]&&/^theme\s*=/.test(o));if(i>=0)n.splice(i,1,...e===void 0?[]:[`theme = ${e}`]);else if(e!==void 0)n.splice(r[0]+1,0,`theme = ${e}`);return n.join(`
594
- `)}function rm(t){return qr(t)?.includes(`path = "${j("")}`)===!0}var qA="setTimeout(() => { const fs = require('node:fs'); const [file, next, seen, theme] = process.argv.slice(-4); if (fs.readFileSync(file, 'utf8') !== seen || !fs.existsSync(theme)) return; const tmp = file + '.ttheme-' + process.pid; fs.writeFileSync(tmp, next); fs.chmodSync(tmp, fs.statSync(file).mode & 0o7777); fs.renameSync(tmp, file) }, 500)";function fy(t,e,n){return{image:Ne(t,Mk(e.name,n.image,e.background)),opacity:n.opacity}}function sy(t){let e=Ci(t.home),n=V(t.configHome),r=new Map,i=new Set;for(let o of t.themes){let s=Oe(n,o.name,t.home),a=ha(o.name,s&&fy(e,o,s));r.set(o.name,a);for(let c of new Set([a,ha(o.name)]))if(!zr(Ne(e,c)))i.add(c)}return{files:r,fresh:i}}function ay(t,e,n){let r=Ci(t.home),i=V(t.configHome),o=new Set(n.values()),s=qr(at(Dr(t.home,t.configHome)))??"";for(let u of t.themes){let l=Oe(i,u.name,t.home),d=n.get(u.name);if(l&&d){let f=fy(r,u,l);if(!zr(f.image))try{let h=jt(new Uint8Array(nm(l.image)));F(f.image,yr(kr(h,u.background,1)))}catch{n.set(u.name,ha(u.name));continue}e.write(Ne(r,d),ma(u,f))}}if(!zr(r))return;let a=(u,l)=>u.startsWith(j(""))&&new RegExp(`\\.[0-9a-f]{8}\\.${l}$`).test(u);for(let u of em(r))if(a(u,"yaml")&&!o.has(u)&&!s.includes(`path = "${u}"`))e.remove(Ne(r,u));let c=new Set;for(let u of em(r)){let l=u.startsWith(j(""))&&u.endsWith(".yaml")?/^ {2}path: "(.+)"$/m.exec(at(Ne(r,u)))?.[1]:void 0;if(l)c.add(l)}for(let u of em(r))if(a(u,"png")&&!c.has(Ne(r,u)))e.remove(Ne(r,u))}function YA(t,e){let n=process.env.TTHEME_WARP_WEARS;return t!==void 0&&n!==void 0&&e.files.has(n)?n:t}function cy(t,e,n,r=!1){let i=Dr(t.home,t.configHome);if(!zr(i))return;let o=Fu(t.configHome),s=nm(i,"utf8"),a=r?DA(qr(s)):e;if(r&&(a===void 0||!n.files.has(a)))return;let c;if(a){if(!rm(s)&&!zr(o))UA(uy(o),{recursive:!0}),zA(o,qr(s)??"");c=im(a,n.files.get(a))}else{if(!rm(s))return;c=zr(o)&&nm(o,"utf8")||Lu,KA(o,{force:!0})}let u=ju(s,c);if(u===s)return;let l=a===void 0?void 0:n.files.get(a)??`${j(a)}.yaml`;if(l!==void 0&&n.fresh.has(l))Md(i),GA(process.execPath,["-e",qA,WA(i),u,s,Ne(Ci(t.home),l)],{detached:!0,stdio:"ignore"}).unref();else bn(i,u);return i}var om={id:"warp",name:"Warp",emitter:Fh,shelf:{from:"themes",dir:(t)=>Ci(t.home)},bakes:!0,offered:(t,e)=>e.platform!=="win32",present:(t)=>zr(uy(Ci(t.home))),sync(t,e){let n=sy(t);e.themes(om),ay(t,e,n.files);let r=cy(t,YA(t.startup,n),n);if(r)e.note(r)},pictures(t,e){let n=sy(t);ay(t,e,n.files),cy(t,void 0,n,!0)},plan(t){let e=Dr(t.home,t.configHome);return t.startup&&zr(e)?[`Edit ${Ct(e,t.home)} — [appearance.themes] theme; \`ttheme off\` puts yours back`]:[]},notes:()=>["Warp wears one theme for the whole app, set through its settings.toml — a tab that takes a palette (`ttheme use`, a pin, preview) switches it, and switching tabs puts on the palette of the tab in front, read from Warp’s session database with sqlite3"],next:()=>[],unwire(t){let e=Dr(t.home,t.configHome),n=at(e);return{edits:rm(n)?[{file:e,content:ju(n,at(Fu(t.configHome))||Lu)}]:[],removals:[],touches:[]}}};import{existsSync as Gu}from"node:fs";import{join as Xo}from"node:path";var hy=/-- ttheme begin\n[\s\S]*?-- ttheme end\n?/,JA=/^return config[ \t]*$/gm;function VA(t){return`dofile(${JSON.stringify(t)})(config)`}var py=`local wezterm = require 'wezterm'
595
+ `)}function um(t){return qr(t)?.includes(`path = "${F("")}`)===!0}var OT="setTimeout(() => { const fs = require('node:fs'); const [file, next, seen, theme] = process.argv.slice(-4); if (fs.readFileSync(file, 'utf8') !== seen || !fs.existsSync(theme)) return; const tmp = file + '.ttheme-' + process.pid; fs.writeFileSync(tmp, next); fs.chmodSync(tmp, fs.statSync(file).mode & 0o7777); fs.renameSync(tmp, file) }, 500)";function Ry(t,e,n){return{image:Pe(t,Uk(e.name,n.image,e.background)),opacity:n.opacity}}function Sy(t){let e=Li(t.home),n=Z(t.configHome),r=new Map,i=new Set;for(let o of t.themes){let s=Oe(n,o.name,t.home),a=ba(o.name,s&&Ry(e,o,s));r.set(o.name,a);for(let c of new Set([a,ba(o.name)]))if(!zr(Pe(e,c)))i.add(c)}return{files:r,fresh:i}}function Ey(t,e,n){let r=Li(t.home),i=Z(t.configHome),o=new Set(n.values()),s=qr(at(Dr(t.home,t.configHome)))??"";for(let u of t.themes){let l=Oe(i,u.name,t.home),d=n.get(u.name);if(l&&d){let f=Ry(r,u,l);if(!zr(f.image))try{let h=_t(new Uint8Array(cm(l.image)));L(f.image,$r(wr(h,u.background,1)))}catch{n.set(u.name,ba(u.name));continue}e.write(Pe(r,d),wa(u,f))}}if(!zr(r))return;let a=(u,l)=>u.startsWith(F(""))&&new RegExp(`\\.[0-9a-f]{8}\\.${l}$`).test(u);for(let u of am(r))if(a(u,"yaml")&&!o.has(u)&&!s.includes(`path = "${u}"`))e.remove(Pe(r,u));let c=new Set;for(let u of am(r)){let l=u.startsWith(F(""))&&u.endsWith(".yaml")?/^ {2}path: "(.+)"$/m.exec(at(Pe(r,u)))?.[1]:void 0;if(l)c.add(l)}for(let u of am(r))if(a(u,"png")&&!c.has(Pe(r,u)))e.remove(Pe(r,u))}function IT(t,e){let n=process.env.TTHEME_WARP_WEARS;return t!==void 0&&n!==void 0&&e.files.has(n)?n:t}function My(t,e,n,r=!1){let i=Dr(t.home,t.configHome);if(!zr(i))return;let o=Gu(t.configHome),s=cm(i,"utf8"),a=r?xT(qr(s)):e;if(r&&(a===void 0||!n.files.has(a)))return;let c;if(a){if(!um(s)&&!zr(o))vT(xy(o),{recursive:!0}),MT(o,qr(s)??"");c=lm(a,n.files.get(a))}else{if(!um(s))return;c=zr(o)&&cm(o,"utf8")||Bu,ET(o,{force:!0})}let u=Uu(s,c);if(u===s)return;let l=a===void 0?void 0:n.files.get(a)??`${F(a)}.yaml`;if(l!==void 0&&n.fresh.has(l))Td(i),yT(process.execPath,["-e",OT,ST(i),u,s,Pe(Li(t.home),l)],{detached:!0,stdio:"ignore"}).unref();else gn(i,u);return i}var dm={id:"warp",name:"Warp",emitter:Wh,shelf:{from:"themes",dir:(t)=>Li(t.home)},bakes:!0,offered:(t,e)=>e.platform!=="win32",present:(t)=>zr(xy(Li(t.home))),sync(t,e){let n=Sy(t);e.themes(dm),Ey(t,e,n.files);let r=My(t,IT(t.startup,n),n);if(r)e.note(r)},pictures(t,e){let n=Sy(t);Ey(t,e,n.files),My(t,void 0,n,!0)},plan(t){let e=Dr(t.home,t.configHome);return t.startup&&zr(e)?[`Edit ${Lt(e,t.home)} — [appearance.themes] theme; \`ttheme off\` puts yours back`]:[]},notes:()=>["Warp wears one theme for the whole app, set through its settings.toml — a tab that takes a palette (`ttheme use`, a pin, preview) switches it, and switching tabs puts on the palette of the tab in front, read from Warp’s session database with sqlite3"],next:()=>[],unwire(t){let e=Dr(t.home,t.configHome),n=at(e);return{edits:um(n)?[{file:e,content:Uu(n,at(Gu(t.configHome))||Bu)}]:[],removals:[],touches:[]}}};import{existsSync as zu}from"node:fs";import{join as ss}from"node:path";var Py=/-- ttheme begin\n[\s\S]*?-- ttheme end\n?/,RT=/^return config[ \t]*$/gm;function PT(t){return`dofile(${JSON.stringify(t)})(config)`}var Ay=`local wezterm = require 'wezterm'
595
596
  local config = wezterm.config_builder()
596
597
 
597
- `;function ZA(t){let e=t.replace(/-- ttheme begin\n[\s\S]*?-- ttheme end\n\n?/,"");return e===`${py}return config
598
- `?"":e}function sm(t,e){let n=`-- ttheme begin
598
+ `;function NT(t){let e=t.replace(/-- ttheme begin\n[\s\S]*?-- ttheme end\n\n?/,"");return e===`${Ay}return config
599
+ `?"":e}function fm(t,e){let n=`-- ttheme begin
599
600
  ${e}
600
601
  -- ttheme end
601
- `;if(hy.test(t))return t.replace(hy,n);if(t==="")return`${py}${n}
602
+ `;if(Py.test(t))return t.replace(Py,n);if(t==="")return`${Ay}${n}
602
603
  return config
603
- `;let r=[...t.matchAll(JA)].at(-1);if(r?.index===void 0)return;return`${t.slice(0,r.index)}${n}
604
- ${t.slice(r.index)}`}function _u(t,e){let n=Xo(e,".wezterm.lua");return Gu(n)?n:Xo(t,"wezterm","wezterm.lua")}function my(t){return Xo(t.configHome,"wezterm","colors")}function Bu(t){return Xo(t.configHome,"ttheme","wezterm.lua")}var am={id:"wezterm",name:"WezTerm",emitter:jh,shelf:{from:"colors",dir:my},offered:()=>!0,present:(t)=>Gu(Xo(t.configHome,"wezterm"))||Gu(Xo(t.home,".wezterm.lua")),sync(t,e){e.themes(am),e.write(Bu(t),Ik({path:Bu(t),colors:my(t),backgrounds:V(t.configHome),...t.startup?{startup:t.startup}:{},palettes:t.themes}));let n=_u(t.configHome,t.home),r=sm(at(n),VA(Bu(t)));if(r!==void 0)e.wire(n,r)},plan(t){let e=_u(t.configHome,t.home);return sm(at(e),"")!==void 0?[`Edit ${Ct(e,t.home)} — a ttheme block before \`return config\`: color_scheme_dirs, color_scheme, pictures`]:[]},notes(t){let e=_u(t.configHome,t.home);return Gu(e)&&sm(at(e),"")===void 0?[`${e} has no \`return config\` line — ttheme left it alone; call \`dofile("${Bu(t)}")(config)\` from it yourself`]:[]},next:()=>["WezTerm Reloads its config by itself"],unwire:(t)=>({edits:xn(_u(t.configHome,t.home),ZA),removals:[],touches:[]})};import{existsSync as by,readFileSync as QA,utimesSync as XA}from"node:fs";import{dirname as tT,join as Uu}from"node:path";function cm(t){return Uu(t,"Microsoft","Windows Terminal","Fragments","ttheme","ttheme.json")}function gy(t){return[Uu(t,"Packages","Microsoft.WindowsTerminal_8wekyb3d8bbwe","LocalState","settings.json"),Uu(t,"Packages","Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe","LocalState","settings.json"),Uu(t,"Microsoft","Windows Terminal","settings.json")].filter((e)=>by(e))}function eT(t){for(let e of t){let n=/"defaultProfile"\s*:\s*"(\{[0-9a-fA-F-]+\})"/.exec(QA(e,"utf8"))?.[1];if(n)return n}return}function wy(t){if(t.platform==="win32")return t.env.LOCALAPPDATA;if(!t.env.WSL_DISTRO_NAME)return;let e=t.run("cmd.exe",["/d","/c","echo %LOCALAPPDATA%"]);return e&&t.run("wslpath",["-u",e])||void 0}var $y={id:"windows-terminal",name:"Windows Terminal",emitter:Bh,offered:(t)=>t.wtHome!==void 0,present:(t)=>t.wtHome!==void 0,installs:(t)=>({wtHome:t.wtHome,wtProfile:t.wtProfile}),sync(t,e){let{wtHome:n,wtProfile:r}=t.state;if(!n)return;let i=gy(n);if(e.write(cm(n),_h(t.themes,r??eT(i),t.startup))){let o=new Date;for(let s of i)XA(s,o,o);if(i.length>0)e.repaint()}},plan:(t)=>t.state.wtHome?[`Write ${cm(t.state.wtHome)} — its schemes, and touch settings.json so it reloads`]:[],notes:(t)=>t.state.wtHome?[]:["Windows Terminal: %LOCALAPPDATA% was not found — drop the release fragment into its Fragments folder yourself"],next:()=>["Windows Terminal Reloads its settings by itself"],unwire(t,e){let n=e?.wtHome,r=n?tT(cm(n)):void 0;return{edits:[],removals:r&&by(r)?[r]:[],touches:n?gy(n):[]}}};var On={ghostty:Wh,kitty:qh,alacritty:Uh,wezterm:am,iterm2:Gk,"windows-terminal":$y,warp:om,konsole:Qk,"terminal-app":oy};function $t(t=Zt){return t.map((e)=>On[e])}function Fi(t){return t.startup&&t.palettes.includes(t.startup)?t.startup:t.palettes[0]}function Ae(t){return t.off?void 0:Fi(t)}function Q(){return process.env.XDG_CONFIG_HOME??ts(an(),".config")}var Li=(t)=>typeof t==="string"&&t!==""?t:void 0,nT={author:Li,startup:Li,off:(t)=>t?!0:void 0,itermBase:Li,konsoleBase:Li,terminalBase:Li,wtHome:Li,wtProfile:Li,markets:(t)=>Array.isArray(t)?t.filter((e)=>typeof e==="string"):void 0,updates:(t)=>t&&typeof t==="object"?Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]==="boolean")):void 0};function W(t){let e=Dn(t);if(!Wu(e))throw Error(`nothing installed yet at ${e} — run \`ttheme init\` first`);let n=JSON.parse(ky(e,"utf8"));if(!Array.isArray(n?.palettes)||!Array.isArray(n.terminals))throw Error(`${e} has no palettes or terminals`);return{terminals:n.terminals.filter((r)=>Zt.includes(r)),...Object.fromEntries(Object.entries(nT).flatMap(([r,i])=>{let o=i(n[r]);return o===void 0?[]:[[r,o]]})),palettes:n.palettes}}function We(t,e){F(Dn(t),`${JSON.stringify(e,null,2)}
605
- `)}function yy(t,e){let n=new Map(t.palettes.map((i)=>[i.name,i])),r=e.filter((i)=>!n.has(i));if(r.length>0){let i=[...new Set(r.flatMap((s)=>lt(s)??[]))].filter((s)=>!t.palettes.some((a)=>lt(a.name)===s)),o=i.length>0?`add ${i.join(", ")} first — \`ttheme market search\` finds a market's repository`:qf(It(t.palettes),r);throw Error(`not in any market: ${r.join(", ")} — ${o}`)}return t.palettes.filter((i)=>e.includes(i.name))}function wa(t,e,n){return{configHome:t,home:n,state:e,startup:Ae(e)}}function vy(t,e,n,r,i){return{...wa(t,n,r),entries:e,themes:e.map(Ie),host:i}}function Sy(t){let e=[],n={written:e,repainted:!1,write(r,i){if(e.push(r),Wu(r)&&ky(r,"utf8")===i)return!1;return F(r,i),!0},wire(r,i){e.push(r),bn(r,i)},note(r){e.push(r)},remove(r){um(r,{force:!0})},themes(r){let i=r.shelf?.dir(t);if(!i)return;for(let o of t.themes)for(let{file:s,content:a}of Ph(r,o))n.write(ts(i,s),a)},repaint(){n.repainted=!0}};return n}function rT(t,e){return Object.assign({},...$t(t.state.terminals).map((n)=>n.layer?.(t,e)??{}))}function qt(t,e,n,r=an(),i=on()){Ot(V(t));let o=yy(Go(t,e),n.palettes),s=Zc(o,qn(t));R0(t,new Map(s.map((u)=>[u.name,Ro(u)]))),w0(t),tu(t,o);let a=vy(t,s,n,r,i),c=Sy(a);for(let u of $t(n.terminals))u.sync(a,c);return c.written.push(xy(a,i,c.repainted)),My(t,s,r),c.written}function Ey(t,e=an()){if(!Wu(ts(t,"ttheme","palettes.zsh")))return;let n=new Set(W(t).palettes);My(t,he(t).palettes.filter((r)=>n.has(r.name)),e)}function My(t,e,n){let r=ts(t,"ttheme","aliases.zsh"),i=gk(iT(e,n));if(at(r)!==i)F(r,i)}function iT(t,e){let n=t.flatMap((o)=>o.booru?[o.booru]:[]),r=Rf(n,e),i={};for(let o of t){let s=new Set(o.nativeNames??[]),a=(o.booru?r.get(o.booru)??[]:[]).filter((c)=>!s.has(c));if(a.length>0)i[o.name]=a}return i}function xy(t,e,n){let r=ts(t.configHome,"ttheme","palettes.zsh"),i=Ih(t.entries,t.startup,t.state.terminals,rT(t,e));if(n||at(r)!==i)F(r,i),um(`${r}.zwc`,{force:!0});return r}function Te(t,e=an(),n=on()){let r=W(t),i=$t(r.terminals).filter((a)=>a.pictures);if(i.length===0)return;let o=vy(t,yy(he(t),r.palettes),r,e,n),s=Sy(o);for(let a of i)a.pictures?.(o,s);xy(o,n,!1)}function ji(t){return!$t(t).some((e)=>e.bakes)}function Ku(t,e,n=an()){let r=wa(t,e,n);return $t(e.terminals).flatMap((i)=>[...i.shelf?[`Write ${Ct(i.shelf.dir(r),n)}/${j("*")} — a theme file per palette`]:[],...i.plan(r)])}function zu(t,e,n=an()){let r=wa(t,e,n);return $t(e.terminals).flatMap((i)=>i.notes(r))}function Du(t,e,n,r=an()){let i=wa(t,e,r);return $t(e.terminals).flatMap((o)=>o.next(i,n.get(o.id)))}function es(t,e,n,r,i=an()){let o=[],s=Rt(t,e,!1).palettes;for(let a of $t(n)){let c=a.shelf?.dir({configHome:t,home:i});for(let u of c?s.filter((l)=>r.includes(l.name)):[])for(let{file:l}of Ph(a,Ie(u))){let d=ts(c,l);if(Wu(d))um(d,{force:!0}),o.push(d)}}return o}function Oy(t,e,n,r){return{...wa(t,e,r),host:n}}function $a(t,e,n,r=an()){return $t(e.terminals).reduce((i,o)=>o.defaults?.base(Oy(t,i,n,r))??i,e)}function _i(t,e,n,r,i=an()){let o=new Map;for(let s of $t(e.terminals)){let a=s.defaults?.point(Oy(t,e,r,i),n);if(a)o.set(s.id,a)}return o}function Ke(t,e,n,r,i=!1,o=on(),s=an()){let a=i||!Ae(n)&&Ae(r)!==void 0,c=a?$a(t,r,o,s):r;return qt(t,e,c,s,o),We(t,c),a||Ae(n)!==Ae(r)?_i(t,c,a,o,s):new Map}import{performance as Iy}from"node:perf_hooks";var oT=16,lm=80,Ry="\x1B[?2026h",Py="\x1B[?2026l";class Bi{shown=[];pointer=new Jf;cursor="";wipe="";immediate;delayed;ticker;last=Number.NEGATIVE_INFINITY;stopped=!1;write;view;beat;constructor(t){this.write=t.write,this.view=t.view,this.beat=t.beat??(()=>{})}request(){if(this.stopped||this.immediate||this.delayed)return;let t=this.last+oT-Iy.now();if(t>0)this.delayed=setTimeout(this.paint,t);else this.immediate=setImmediate(this.paint)}soon(){if(this.stopped||this.immediate)return;clearTimeout(this.delayed),this.delayed=void 0,this.immediate=setImmediate(this.paint)}now(){this.cancel(),this.paint()}reset(t=""){this.shown=[],this.cursor="",this.wipe=t}stop(){this.stopped=!0,this.cancel(),clearInterval(this.ticker),this.ticker=void 0}point(t){return this.pointer.point(t)}drop(){this.pointer.drop()}cancel(){clearImmediate(this.immediate),clearTimeout(this.delayed),this.immediate=void 0,this.delayed=void 0}paint=()=>{if(this.immediate=void 0,this.delayed=void 0,this.stopped)return;let{drawn:t,targets:e}=S$(()=>this.view());if(!t)return;this.last=Iy.now();let{lines:n,zones:r}=x$(t.lines,e);this.pointer.zones=[...t.zones??[],...r];let i=this.wipe;this.wipe="";let o=new Set,s=Math.max(n.length,this.shown.length);for(let l=0;l<s;l++){let d=n[l];if(d!==this.shown[l])i+=`\x1B[${l+1};1H\x1B[0m\x1B[2K${d??""}`,o.add(l)}this.shown=n;let a=t.after?.(o)??"",c=t.cursor??"",u=c!==""&&(i!==""||a!==""||c!==this.cursor);if(this.cursor=c,i||a||u)this.write(`${Ry}${i}${a}\x1B[0m${u?c:""}${Py}`);this.tick(t.ticking===!0)};tick(t){if(t&&!this.ticker)this.ticker=setInterval(()=>{this.beat(),this.request()},lm);else if(!t&&this.ticker)clearInterval(this.ticker),this.ticker=void 0}}class dm{shown=[];write;cols;constructor(t,e){this.write=t,this.cols=e}draw(t){this.put(t,"")}redraw(t){let e=`${this.shown.length>1?`\x1B[${this.shown.length-1}A`:""}${this.shown.length>0?"\r\x1B[J":""}`;this.shown=[],this.put(t,e)}end(t){this.put(t,""),this.write(`
604
+ `;let r=[...t.matchAll(RT)].at(-1);if(r?.index===void 0)return;return`${t.slice(0,r.index)}${n}
605
+ ${t.slice(r.index)}`}function Wu(t,e){let n=ss(e,".wezterm.lua");return zu(n)?n:ss(t,"wezterm","wezterm.lua")}function Ny(t){return ss(t.configHome,"wezterm","colors")}function Ku(t){return ss(t.configHome,"ttheme","wezterm.lua")}var hm={id:"wezterm",name:"WezTerm",emitter:Kh,shelf:{from:"colors",dir:Ny},offered:()=>!0,present:(t)=>zu(ss(t.configHome,"wezterm"))||zu(ss(t.home,".wezterm.lua")),sync(t,e){e.themes(hm),e.write(Ku(t),zk({path:Ku(t),colors:Ny(t),backgrounds:Z(t.configHome),...t.startup?{startup:t.startup}:{},palettes:t.themes}));let n=Wu(t.configHome,t.home),r=fm(at(n),PT(Ku(t)));if(r!==void 0)e.wire(n,r)},plan(t){let e=Wu(t.configHome,t.home);return fm(at(e),"")!==void 0?[`Edit ${Lt(e,t.home)} — a ttheme block before \`return config\`: color_scheme_dirs, color_scheme, pictures`]:[]},notes(t){let e=Wu(t.configHome,t.home);return zu(e)&&fm(at(e),"")===void 0?[`${e} has no \`return config\` line — ttheme left it alone; call \`dofile("${Ku(t)}")(config)\` from it yourself`]:[]},next:()=>["WezTerm Reloads its config by itself"],unwire:(t)=>({edits:Mn(Wu(t.configHome,t.home),NT),removals:[],touches:[]})};import{existsSync as Hy,readFileSync as AT,utimesSync as TT}from"node:fs";import{dirname as HT,join as Du}from"node:path";function mm(t){return Du(t,"Microsoft","Windows Terminal","Fragments","ttheme","ttheme.json")}function Ty(t){return[Du(t,"Packages","Microsoft.WindowsTerminal_8wekyb3d8bbwe","LocalState","settings.json"),Du(t,"Packages","Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe","LocalState","settings.json"),Du(t,"Microsoft","Windows Terminal","settings.json")].filter((e)=>Hy(e))}function CT(t){for(let e of t){let n=/"defaultProfile"\s*:\s*"(\{[0-9a-fA-F-]+\})"/.exec(AT(e,"utf8"))?.[1];if(n)return n}return}function Cy(t){if(t.platform==="win32")return t.env.LOCALAPPDATA;if(!t.env.WSL_DISTRO_NAME)return;let e=t.run("cmd.exe",["/d","/c","echo %LOCALAPPDATA%"]);return e&&t.run("wslpath",["-u",e])||void 0}var Ly={id:"windows-terminal",name:"Windows Terminal",emitter:Dh,offered:(t)=>t.wtHome!==void 0,present:(t)=>t.wtHome!==void 0,installs:(t)=>({wtHome:t.wtHome,wtProfile:t.wtProfile}),sync(t,e){let{wtHome:n,wtProfile:r}=t.state;if(!n)return;let i=Ty(n);if(e.write(mm(n),zh(t.themes,r??CT(i),t.startup))){let o=new Date;for(let s of i)TT(s,o,o);if(i.length>0)e.repaint()}},plan:(t)=>t.state.wtHome?[`Write ${mm(t.state.wtHome)} — its schemes, and touch settings.json so it reloads`]:[],notes:(t)=>t.state.wtHome?[]:["Windows Terminal: %LOCALAPPDATA% was not found — drop the release fragment into its Fragments folder yourself"],next:()=>["Windows Terminal Reloads its settings by itself"],unwire(t,e){let n=e?.wtHome,r=n?HT(mm(n)):void 0;return{edits:[],removals:r&&Hy(r)?[r]:[],touches:n?Ty(n):[]}}};var xn={ghostty:Jh,kitty:Xh,alacritty:Yh,wezterm:hm,iterm2:iy,"windows-terminal":Ly,warp:dm,konsole:py,"terminal-app":vy};function kt(t=Zt){return t.map((e)=>xn[e])}function ji(t){return t.startup&&t.palettes.includes(t.startup)?t.startup:t.palettes[0]}function Ne(t){return t.off?void 0:ji(t)}function J(){return process.env.XDG_CONFIG_HOME??as(sn(),".config")}var Fi=(t)=>typeof t==="string"&&t!==""?t:void 0,LT={author:Fi,startup:Fi,off:(t)=>t?!0:void 0,itermBase:Fi,konsoleBase:Fi,terminalBase:Fi,wtHome:Fi,wtProfile:Fi,markets:(t)=>Array.isArray(t)?t.filter((e)=>typeof e==="string"):void 0,updates:(t)=>t&&typeof t==="object"?Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]==="boolean")):void 0};function K(t){let e=Dn(t);if(!qu(e))throw Error(`nothing installed yet at ${e} — run \`ttheme init\` first`);let n=JSON.parse(Fy(e,"utf8"));if(!Array.isArray(n?.palettes)||!Array.isArray(n.terminals))throw Error(`${e} has no palettes or terminals`);return{terminals:n.terminals.filter((r)=>Zt.includes(r)),...Object.fromEntries(Object.entries(LT).flatMap(([r,i])=>{let o=i(n[r]);return o===void 0?[]:[[r,o]]})),palettes:n.palettes}}function We(t,e){L(Dn(t),`${JSON.stringify(e,null,2)}
606
+ `)}function jy(t,e){let n=new Map(t.palettes.map((i)=>[i.name,i])),r=e.filter((i)=>!n.has(i));if(r.length>0){let i=[...new Set(r.flatMap((s)=>ct(s)??[]))].filter((s)=>!t.palettes.some((a)=>ct(a.name)===s)),o=i.length>0?`add ${i.join(", ")} first — \`ttheme market search\` finds a market's repository`:Xf(Pt(t.palettes),r);throw Error(`not in any market: ${r.join(", ")} — ${o}`)}return t.palettes.filter((i)=>e.includes(i.name))}function va(t,e,n){return{configHome:t,home:n,state:e,startup:Ne(e)}}function _y(t,e,n,r,i){return{...va(t,n,r),entries:e,themes:e.map(Ie),host:i}}function By(t){let e=[],n={written:e,repainted:!1,write(r,i){if(e.push(r),qu(r)&&Fy(r,"utf8")===i)return!1;return L(r,i),!0},wire(r,i){e.push(r),gn(r,i)},note(r){e.push(r)},remove(r){pm(r,{force:!0})},themes(r){let i=r.shelf?.dir(t);if(!i)return;for(let o of t.themes)for(let{file:s,content:a}of Lh(r,o))n.write(as(i,s),a)},repaint(){n.repainted=!0}};return n}function FT(t,e){return Object.assign({},...kt(t.state.terminals).map((n)=>n.layer?.(t,e)??{}))}function ue(t,e,n,r=sn(),i=rn()){Rt(Z(t));let o=jy(Do(t,e),n.palettes),s=iu(o,qn(t));L0(t,new Map(s.map((u)=>[u.name,Ao(u)]))),M0(t),Ko(t,o);let a=_y(t,s,n,r,i),c=By(a);for(let u of kt(n.terminals))u.sync(a,c);return c.written.push(Wy(a,i,c.repainted)),Uy(t,s,r),c.written}function Gy(t,e=sn()){if(!qu(as(t,"ttheme","palettes.zsh")))return;let n=new Set(K(t).palettes);Uy(t,he(t).palettes.filter((r)=>n.has(r.name)),e)}function Uy(t,e,n){let r=as(t,"ttheme","aliases.zsh"),i=Tk(jT(e,n));if(at(r)!==i)L(r,i)}function jT(t,e){let n=t.flatMap((o)=>o.booru?[o.booru]:[]),r=Cf(n,e),i={};for(let o of t){let s=new Set(o.nativeNames??[]),a=(o.booru?r.get(o.booru)??[]:[]).filter((c)=>!s.has(c));if(a.length>0)i[o.name]=a}return i}function Wy(t,e,n){let r=as(t.configHome,"ttheme","palettes.zsh"),i=Hh(t.entries,t.startup,t.state.terminals,FT(t,e));if(n||at(r)!==i)L(r,i),pm(`${r}.zwc`,{force:!0});return r}function Ae(t,e=sn(),n=rn()){let r=K(t),i=kt(r.terminals).filter((a)=>a.pictures);if(i.length===0)return;let o=_y(t,jy(he(t),r.palettes),r,e,n),s=By(o);for(let a of i)a.pictures?.(o,s);Wy(o,n,!1)}function _i(t){return!kt(t).some((e)=>e.bakes)}function Yu(t,e,n=sn()){let r=va(t,e,n);return kt(e.terminals).flatMap((i)=>[...i.shelf?[`Write ${Lt(i.shelf.dir(r),n)}/${F("*")} — a theme file per palette`]:[],...i.plan(r)])}function Ju(t,e,n=sn()){let r=va(t,e,n);return kt(e.terminals).flatMap((i)=>i.notes(r))}function Vu(t,e,n,r=sn()){let i=va(t,e,r);return kt(e.terminals).flatMap((o)=>o.next(i,n.get(o.id)))}function cs(t,e,n,r,i=sn()){let o=[],s=Ct(t,e,!1).palettes;for(let a of kt(n)){let c=a.shelf?.dir({configHome:t,home:i});for(let u of c?s.filter((l)=>r.includes(l.name)):[])for(let{file:l}of Lh(a,Ie(u))){let d=as(c,l);if(qu(d))pm(d,{force:!0}),o.push(d)}}return o}function Ky(t,e,n,r){return{...va(t,e,r),host:n}}function Sa(t,e,n,r=sn()){return kt(e.terminals).reduce((i,o)=>o.defaults?.base(Ky(t,i,n,r))??i,e)}function Bi(t,e,n,r,i=sn()){let o=new Map;for(let s of kt(e.terminals)){let a=s.defaults?.point(Ky(t,e,r,i),n);if(a)o.set(s.id,a)}return o}function Ke(t,e,n,r,i=!1,o=rn(),s=sn()){let a=i||!Ne(n)&&Ne(r)!==void 0,c=a?Sa(t,r,o,s):r;return ue(t,e,c,s,o),We(t,c),a||Ne(n)!==Ne(r)?Bi(t,c,a,o,s):new Map}import{performance as zy}from"node:perf_hooks";var _T=16,gm=80,Dy="\x1B[?2026h",qy="\x1B[?2026l";class Gi{shown=[];pointer=new eh;cursor="";wipe="";immediate;delayed;ticker;last=Number.NEGATIVE_INFINITY;stopped=!1;write;view;beat;constructor(t){this.write=t.write,this.view=t.view,this.beat=t.beat??(()=>{})}request(){if(this.stopped||this.immediate||this.delayed)return;let t=this.last+_T-zy.now();if(t>0)this.delayed=setTimeout(this.paint,t);else this.immediate=setImmediate(this.paint)}soon(){if(this.stopped||this.immediate)return;clearTimeout(this.delayed),this.delayed=void 0,this.immediate=setImmediate(this.paint)}now(){this.cancel(),this.paint()}reset(t=""){this.shown=[],this.cursor="",this.wipe=t}stop(){this.stopped=!0,this.cancel(),clearInterval(this.ticker),this.ticker=void 0}point(t){return this.pointer.point(t)}drop(){this.pointer.drop()}cancel(){clearImmediate(this.immediate),clearTimeout(this.delayed),this.immediate=void 0,this.delayed=void 0}paint=()=>{if(this.immediate=void 0,this.delayed=void 0,this.stopped)return;let{drawn:t,targets:e}=A$(()=>this.view());if(!t)return;this.last=zy.now();let{lines:n,zones:r}=C$(t.lines,e);this.pointer.zones=[...t.zones??[],...r];let i=this.wipe;this.wipe="";let o=new Set,s=Math.max(n.length,this.shown.length);for(let l=0;l<s;l++){let d=n[l];if(d!==this.shown[l])i+=`\x1B[${l+1};1H\x1B[0m\x1B[2K${d??""}`,o.add(l)}this.shown=n;let a=t.after?.(o)??"",c=t.cursor??"",u=c!==""&&(i!==""||a!==""||c!==this.cursor);if(this.cursor=c,i||a||u)this.write(`${Dy}${i}${a}\x1B[0m${u?c:""}${qy}`);this.tick(t.ticking===!0)};tick(t){if(t&&!this.ticker)this.ticker=setInterval(()=>{this.beat(),this.request()},gm);else if(!t&&this.ticker)clearInterval(this.ticker),this.ticker=void 0}}class bm{shown=[];write;cols;constructor(t,e){this.write=t,this.cols=e}draw(t){this.put(t,"")}redraw(t){let e=`${this.shown.length>1?`\x1B[${this.shown.length-1}A`:""}${this.shown.length>0?"\r\x1B[J":""}`;this.shown=[],this.put(t,e)}end(t){this.put(t,""),this.write(`
606
607
  `),this.shown=[]}put(t,e){let n=t.map((o)=>rt(o,this.cols()-1,!1)),r=0;while(r<n.length&&r<this.shown.length&&n[r]===this.shown[r])r++;if(r===n.length&&n.length===this.shown.length)return;if(r===n.length)r=Math.max(0,n.length-1);let i="";if(this.shown.length===0)i=n.join(`
607
608
  `);else if(r>=this.shown.length)i=`
608
609
  ${n.slice(r).join(`
609
610
  `)}`;else{let o=this.shown.length-1-r;i=`${o>0?`\x1B[${o}A`:""}\r\x1B[J${n.slice(r).join(`
610
- `)}`}this.shown=n,this.write(`${Ry}${e}${i}${Py}`)}}var sT=300;function qu(t){return t>=1e6?`${(t/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(t/1000))} KB`}function Yu(t,e){if(!e)return qu(t);return e>=1e6?`${(t/1e6).toFixed(1)}/${(e/1e6).toFixed(1)} MB`:`${Math.round(t/1000)}/${Math.round(e/1000)} KB`}var ns;async function Ny(t,e){ns=t;try{return await e()}finally{ns=void 0}}function Yr(t){if(ns)ns.say(t);else console.log(t)}function Jr(t=""){if(ns){let u=ns;return u.set(t),{set:(l)=>u.set(l),say:(l)=>u.say(l),done:()=>u.set("")}}let e=process.stdout;if(!e.isTTY||process.env.TERM==="dumb")return{set(){},say:(u)=>console.log(u),done(){}};let[n,r]=Pt()?["",""]:[C,$e],i=0,o=!1,s,a=()=>{e.write(`\r\x1B[2K${n}${rt(`${jn[i%jn.length]} ${t}`,(e.columns||80)-1,!1)}${r}`)},c=setTimeout(()=>{o=!0,a(),s=setInterval(()=>{i++,a()},lm),s.unref()},sT);return c.unref(),{set(u){if(t=u,o)a()},say(u){if(o)e.write("\r\x1B[2K");if(console.log(u),o)a()},done(){if(clearTimeout(c),clearInterval(s),o)e.write("\r\x1B[2K"),o=!1}}}import{existsSync as qy,mkdirSync as Yy,readFileSync as Jy,statSync as xT,utimesSync as OT}from"node:fs";import{homedir as IT}from"node:os";import{dirname as RT,join as Ky}from"node:path";function fm(t){if(t.length>0&&process.stderr.isTTY)process.stderr.write(`${t.join(`
611
+ `)}`}this.shown=n,this.write(`${Dy}${e}${i}${qy}`)}}var BT=300;function Zu(t){return t>=1e6?`${(t/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(t/1000))} KB`}function Qu(t,e){if(!e)return Zu(t);return e>=1e6?`${(t/1e6).toFixed(1)}/${(e/1e6).toFixed(1)} MB`:`${Math.round(t/1000)}/${Math.round(e/1000)} KB`}var us;async function Yy(t,e){us=t;try{return await e()}finally{us=void 0}}function On(t){if(us)us.say(t);else console.log(t)}function Yr(t=""){if(us){let u=us;return u.set(t),{set:(l)=>u.set(l),say:(l)=>u.say(l),done:()=>u.set("")}}let e=process.stdout;if(!e.isTTY||process.env.TERM==="dumb")return{set(){},say:(u)=>console.log(u),done(){}};let[n,r]=Nt()?["",""]:[C,$e],i=0,o=!1,s,a=()=>{e.write(`\r\x1B[2K${n}${rt(`${jn[i%jn.length]} ${t}`,(e.columns||80)-1,!1)}${r}`)},c=setTimeout(()=>{o=!0,a(),s=setInterval(()=>{i++,a()},gm),s.unref()},BT);return c.unref(),{set(u){if(t=u,o)a()},say(u){if(o)e.write("\r\x1B[2K");if(console.log(u),o)a()},done(){if(clearTimeout(c),clearInterval(s),o)e.write("\r\x1B[2K"),o=!1}}}import{existsSync as Mm,mkdirSync as p1,readFileSync as g1,statSync as iH,utimesSync as oH}from"node:fs";import{homedir as sH}from"node:os";import{dirname as aH,join as h1}from"node:path";function Xu(t){if(t.length>0&&process.stderr.isTTY)process.stderr.write(`${t.join(`
611
612
  `)}
612
- `)}import{existsSync as hm,mkdirSync as Ay,readFileSync as is}from"node:fs";import{homedir as fT}from"node:os";import{dirname as Ty,join as Gi}from"node:path";import{spawn as aT}from"node:child_process";var cT=30000,uT=3,lT=97,dT=`ObjC.import('Vision')
613
- ObjC.import('CoreImage')
614
- ObjC.import('CoreGraphics')
615
- function run(argv) {
616
- const error = Ref()
617
- const image = $.CIImage.imageWithContentsOfURL($.NSURL.fileURLWithPath(argv[0]))
618
- if (!image) throw new Error('unreadable image')
619
- const handler = $.VNImageRequestHandler.alloc.initWithCIImageOptions(image, $({}))
620
- const request = $.VNGenerateForegroundInstanceMaskRequest.alloc.init
621
- if (!handler.performRequestsError($([request]), error)) throw new Error('vision failed')
622
- if (request.results.count === 0) throw new Error('no foreground')
623
- const found = request.results.objectAtIndex(0)
624
- const buffer = found.generateMaskedImageOfInstancesFromRequestHandlerCroppedToInstancesExtentError(
625
- found.allInstances, handler, false, error)
626
- if (!buffer) throw new Error('mask failed')
627
- const written = $.CIContext.context.writePNGRepresentationOfImageToURLFormatColorSpaceOptionsError(
628
- $.CIImage.imageWithCVPixelBuffer(buffer), $.NSURL.fileURLWithPath(argv[1]), $.kCIFormatRGBA8,
629
- $.CGColorSpaceCreateWithName($.kCGColorSpaceSRGB), $({}), error)
630
- if (!written) throw new Error('write failed')
631
- }`;function rs(){return process.platform==="darwin"}function Ju(t){return t>=uT&&t<=lT}function ka(t,e,n){return new Promise((r,i)=>{let o=aT("osascript",["-l","JavaScript","-e",dT,t,e],{stdio:["ignore","ignore","pipe"],signal:AbortSignal.any([n,AbortSignal.timeout(cT)])}),s="";o.stderr.on("data",(a)=>{s+=a}),o.on("error",i),o.on("close",(a)=>{if(a===0){r();return}i(Error(s.trim().split(`
632
- `).at(-1)||`osascript exited ${a}`))})})}var Hy=90000;function Zu(t,e){let n=V(t),r=fe(t,e).flatMap((i)=>{let[,o,s]=/^([a-z.]+)_(\d+)$/.exec(i.key)??[];return o&&s&&J.some((a)=>a.key===o)?[{site:o,id:Number(s),...kf(n,i)}]:[]});return r.length>0?r:void 0}function hT(t,e){let n=new Set(Ot(V(t)).palettes[e.name]?.pictures.map((r)=>r.key));return(e.pictures??[]).filter((r)=>!n.has(se(r)))}function os(t,e){let n=new Set((e??[]).map((r)=>se(r)));return{...t,pictures:(t.pictures??[]).filter((r)=>!n.has(se(r)))}}async function mT(t,e,n,r,i,o){let s=J.find((b)=>b.key===n.site);if(!s)throw Error(`no site called ${n.site}`);o("Fetching");let a=await So(s,n.id,i);if(!a)throw Error("the post is gone");if(s!==ie&&a.md5)try{Rc([a],await Pc([a.md5],i))}catch{}let c=Ic(s,a)?Oc(s,a.id,i).then((b)=>{if(b)Gs(a,b)},()=>{}):void 0;if(!Mc(s,a,gi(process.env.TTHEME_FIND_RATING))||Ec(a,vo(process.env.TTHEME_FIND_BLOCK)).length>0)throw Error("outside your find filters — TTHEME_FIND_RATING and TTHEME_FIND_BLOCK");let u=kn(a);if(!u)throw Error("too large to use");let l=Gi(Ve(s),"orig",`${n.id}.${u.ext}`),d;if(hm(l))d=new Uint8Array(is(l));else{o("Downloading");let b=bi(s,a,u);d=await Nc(b.site,b.url,i,(w,k)=>o("Downloading",Yu(w,k))),F(l,d)}let f=$r(d,Se),h=!1;if(Wn(f)===0&&rs()&&process.env.TTHEME_FIND_REMOVE_BG!=="off"){let b=Gi(Ve(s),"cut",`${n.id}.png`);try{if(!hm(b))o("Cutting out"),Ay(Ty(b),{recursive:!0}),await ka(l,b,i);let w=$r(new Uint8Array(is(b)),Se);if(Ju(Wn(w)))f=w,h=!0}catch{}}await c;let m=bf(e);o("Drawing"),jc(t,m,vn(m,e.signatureSlots),f,{site:s.key,id:n.id,ext:u.ext,bytes:d,from:`${s.name} ${n.id} ${s.pageUrl(n.id)}`,artist:a.named.artist,source:Bs(a.source),cut:h},{width:0,height:0},Ur(t),Su(t));let g=fe(t,e.name).find((b)=>b.key===se(n));if(g)Vs(V(t),g,n,r,fT())}function pT(t,e){let n=J.find((o)=>o.key===t.site),r=`${n?.name??t.site} ${t.id}`;if(!n||!e)return r;return`${Pt()?Is:`\x1B[${30+n.ansi}m${Is}\x1B[39m`} ${gc(r,n.pageUrl(t.id))}`}async function nr(t,e,n){let r=e.flatMap((c)=>hT(t,c).map((u)=>({entry:c,shared:u})));if(r.length===0)return;let i=ji(n),o=process.stdout.isTTY&&ck(process.env),s=new Set,a=Jr();for(let[c,{entry:u,shared:l}]of r.entries()){let d=`${u.name} · ${pT(l,o)}`,f=r.length>1?` · ${c+1}/${r.length}`:"",h=(m,g)=>a.set(`${m} ${d}${g?` · ${g}`:""}${f}`);try{await mT(t,u,l,i,AbortSignal.timeout(Hy),h),a.say(` ▣ ${d}`),s.add(u)}catch(m){a.say(` ▢ ${d} — ${m instanceof Error?m.message:String(m)}`)}}a.done();for(let c of s){let u=(c.pictures??[]).find((l)=>fe(t,c.name).some((d)=>d.key===se(l)));if(u)No(t,c.name,se(u))}if(s.size>0)Te(t)}function Cy(t,e,n){if(e.width!==t.width||e.height!==t.height)return!1;for(let r=0;r<t.width*t.height;r++)t.data[r*4+3]=e.data[r*4+n]??0;return!0}async function gT(t,e){let[,n,r]=/^(.+)_(\d+)$/.exec(t)??[],i=Gi(xr(),n??"local","cut",`${r??t}.png`);if(!hm(i)){if(!rs())return;Ay(Ty(i),{recursive:!0}),await ka(e,i,AbortSignal.timeout(Hy))}return $r(new Uint8Array(is(i)),Se)}function bT(t,e){try{return Wn(jt(new Uint8Array(is(Gi(t,`${e.stem}.png`)))))>0}catch{return!1}}function Vu(t,e){return()=>$r(new Uint8Array(is(Gi(t,e.original))),Se)}function Ly(t,e){let n=Vu(t,e);return()=>{let r=n(),i=jt(new Uint8Array(is(Gi(t,e.cut))));return Cy(r,i,0)?r:null}}async function Qu(t,e,n,r,i,o,s,a){let c=V(t),u=Ot(c).palettes[e]?.pictures.find((l)=>l.key===n);if(!u?.original)return null;if(u.cut)return Zs(t,e,u,Ly(c,u),r,i,o,s,!1,a);if(Po(u)){let l=Vu(c,u)();if(Wn(l)===0&&bT(c,u)){let d=await gT(n,Gi(c,u.original));if(!d||!Cy(l,d,3))return null;return Zs(t,e,u,()=>l,r,i,o,s,!0,a)}return Zs(t,e,u,()=>l,r,i,o,s,!1,a)}return Zs(t,e,u,Vu(c,u),r,i,o,s,!1,a)}function Fy(t,e,n,r,i,o){let s=V(t),a=Ot(s).palettes[e]?.pictures.find((u)=>u.key===n);if(!a?.original||Po(a))return!1;let c=a.cut?Ly(s,a):Vu(s,a);return I0(t,e,a,c,r,i,o)}import{existsSync as wT,readFileSync as $T}from"node:fs";import{join as kT}from"node:path";function yT(t){return kT(t,"ttheme","pins")}function jy(t,e,n){let r=yT(t);if(!wT(r))return;let i=$T(r,"utf8"),s=i.split(`
613
+ `)}import{existsSync as GT,readFileSync as UT}from"node:fs";import{join as WT}from"node:path";function KT(t){return WT(t,"ttheme","pins")}function Jy(t,e,n){let r=KT(t);if(!GT(r))return;let i=UT(r,"utf8"),s=i.split(`
633
614
  `).flatMap((a)=>{let c=/^((?:[~/]|ssh:).*\s)(\S+)(\s*)$/.exec(a);if(!c)return[a];let[,u,l,d]=c;if(n.includes(l))return[];let f=e.get(l);return[f?`${u}${f}${d}`:a]}).join(`
634
- `);if(s!==i)F(r,s)}function _y(t,e){let n=e,r=new Set;while(Object.hasOwn(t,n)&&!r.has(n)){r.add(n);let i=t[n];if(i===!1)return!1;n=i}return r.has(n)||n===e?void 0:n}function By(t,e,n,r,i){let o=`${t}/`;for(let s of r){let a=s.startsWith(o)?s.slice(o.length):void 0;if(a===void 0||n.has(a))continue;let c=_y(e.renames,a);if(c===!1)i.removed.push(s);else if(c!==void 0&&n.has(c))i.renamed.set(s,`${o}${c}`);else if(e.forceRemove)i.removed.push(s)}}function Gy(t,e){let n=[],r=[];for(let i of Object.keys(t)){if(e.has(i)){r.push(`renames.${i}: ${i} is still a palette here, so the rename never applies`);continue}let o=_y(t,i);if(o===void 0)n.push(`renames.${i}: the chain comes back to a name it already passed`);else if(o!==!1&&!e.has(o))n.push(`renames.${i}: the chain ends at ${o}, which is not a palette here — end it at one, or at false`)}return{errors:n,warnings:r}}import{gunzipSync as vT}from"node:zlib";var Ui=512,Uy=67108864,mm=new TextDecoder;function ss(t,e,n){let r=t.subarray(e,e+n),i=r.indexOf(0);return mm.decode(i<0?r:r.subarray(0,i))}function ST(t){if((t[124]??0)&128)throw Error("the archive holds a file too large to be a palette");let e=Number.parseInt(ss(t,124,12).trim()||"0",8);if(!Number.isFinite(e)||e<0)throw Error("the archive has a header that does not read");return e}function ET(t){let e=0,n;while(e<t.length){let r=t.indexOf(32,e),i=r<0?Number.NaN:Number.parseInt(mm.decode(t.subarray(e,r)),10);if(!Number.isFinite(i)||i<=0)break;let o=mm.decode(t.subarray(r+1,e+i-1)),s=o.indexOf("=");if(o.slice(0,s)==="path")n=o.slice(s+1);e+=i}return n}function MT(t){if(t[0]!==31||t[1]!==139)return t;try{return vT(t,{maxOutputLength:Uy})}catch(e){throw Error(e instanceof RangeError?`the archive unpacks to more than ${Uy/1024/1024} MB`:"the archive is not a gzip file that reads")}}function Wy(t){let e=MT(t),n=new Map,r,i=0;while(i+Ui<=e.length){let o=e.subarray(i,i+Ui);if(o.every((d)=>d===0))break;let s=ST(o),a=e.subarray(i+Ui,i+Ui+s);i+=Ui+Math.ceil(s/Ui)*Ui;let c=String.fromCharCode(o[156]??0);if(c==="x"){r=ET(a)??r;continue}if(c==="L"){r=ss(a,0,a.length);continue}let u=ss(o,257,5)==="ustar"?ss(o,345,155):"",l=r??(u?`${u}/${ss(o,0,100)}`:ss(o,0,100));if(r=void 0,c==="0"||c==="\x00")n.set(l.split("/").slice(1).join("/"),a)}return n}var PT=86400000,NT=3600000,gm=5000;function pm(){return Ky(process.env.XDG_STATE_HOME??Ky(IT(),".local","state"),"ttheme","markets.json")}function rr(){try{let t=JSON.parse(Jy(pm(),"utf8"));return Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]?.at==="number"&&typeof e[1].error==="string"))}catch{return{}}}function zy(t,e){let n=rr();if(e===void 0){if(!(t in n))return;delete n[t]}else n[t]={at:Date.now(),error:e};Yy(RT(pm()),{recursive:!0}),F(pm(),`${JSON.stringify(n,null,2)}
635
- `)}function ya(t,e){let n=e===q?Re(t):ae(e)?Be(t,e):void 0;try{return n?xT(n).mtimeMs:void 0}catch{return}}function AT(t,e,n,r){return t&&(e===void 0||r-e>=PT)&&(n===void 0||r-n>=NT)}function bm(t,e,n=Date.now()){let r=rr();return Bt(e.markets).filter((i)=>AT(Nr(i,e.updates),ya(t,i),r[i]?.at,n))}function TT(t,e){let n={},r=new TextDecoder;for(let[i,o]of Wy(t))if(i===_t||i.startsWith("palettes/")&&i.endsWith(".toml"))n[i]=r.decode(o);return{...e?{etag:e}:{},files:n}}async function Vy(t,e,n,r){let i;try{i=await Df(Y0(t),e,n,r?{"if-none-match":r}:{})}catch(o){if(o instanceof eu){let s=Xs(t);throw Error(`${nt(t)}${s?` has no ${s}`:" is not there"} — is the repository public?`)}throw o}if(i.status===304)return;return TT(new Uint8Array(await i.arrayBuffer()),i.headers.get("etag"))}function Zy(t,e,n){let{id:r,info:i,entries:o}=Yn(t,e,n,ue(!1));return{source:t,id:r,entries:o,archive:e,info:i}}function va(t){return Wi(t,q)}async function Sa(t,e,n,r){if(e===q){let o=await ru(h$,en,n,r);return{source:e,id:q,manifest:o,entries:o.palettes}}let i=await Vy(e,n,r);if(!i)throw Error(`${nt(e)} answered as if nothing had changed`);return Zy(e,i,va(t))}function as(t,e){if("manifest"in e){Qc(t,e.manifest);return}Yy(Af(t),{recursive:!0}),F(Be(t,e.source),`${JSON.stringify(e.archive)}
636
- `)}function HT(t,e){try{return tn(t,e)}catch{return}}function Wi(t,e){try{if(e===q)return en(Jy(Re(t),"utf8")).palettes;return Yn(e,tn(t,e),va(t),ue(!1)).entries}catch{return[]}}function CT(t,e){let n=new Map(t.map((i)=>[i.name,JSON.stringify(i)])),r=new Map(e.map((i)=>[i.name,JSON.stringify(i)]));return{added:[...r.keys()].filter((i)=>!n.has(i)),changed:[...r].filter(([i,o])=>n.has(i)&&n.get(i)!==o).map(([i])=>i),gone:[...n.keys()].filter((i)=>!r.has(i))}}async function LT(t,e,n){if(!ae(e))return Sa(t,e,n);let r=HT(t,e),i=await Vy(e,n,void 0,r?.etag);return i&&Zy(e,i,va(t))}async function wm(t,e,n){let r=Wi(t,e),i;try{i=await LT(t,e,n)}catch(s){throw zy(e,s.message),s}if(i)as(t,i);else{let s=new Date;OT(Be(t,e),s,s)}zy(e,void 0);let o=i?.entries??r;return{source:e,id:i?.id??Xc(e,tn(t,e)),...i&&"manifest"in i?{version:i.manifest.version}:{},count:It(o).length,change:CT(r,o)}}async function $m(t,e,n){try{return{source:e,refreshed:await wm(t,e,n)}}catch(r){return{source:e,failure:r instanceof Error?r:Error(String(r))}}}function km(t,e){return`${nt(t)}: ${e.message}`}function FT(t){return"failure"in t&&t.failure instanceof _c?km(t.source,t.failure):void 0}function Tt(t){return`${t} palette${t===1?"":"s"}`}function Ea(t,e=Date.now()){let n=Math.floor(Math.max(0,e-t)/60000);if(n<1)return"just now";if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<48?`${r}h ago`:`${Math.floor(r/24)}d ago`}function Qy({added:t,changed:e,gone:n}){return[t.length>0?`${t.length} new`:"",e.length>0?`${e.length} changed`:"",n.length>0?`${n.length} gone`:""].filter(Boolean).join(", ")}function ym(t){let e=Qy(t.change);return`${t.version?`${t.id} ${t.version}`:t.id} — ${Tt(t.count)}${e?` (${e})`:""}`}function vm(t){return Qy(t.change)?`Updated ${ym(t)}`:void 0}var Dy=/^(\d+)\.(\d+)\.(\d+)$/;function jT(t,e){let n=Dy.exec(t),r=Dy.exec(e);if(!n||!r)return!1;for(let i of[1,2,3]){let o=Number(n[i])-Number(r[i]);if(o!==0)return o>0}return!1}function Sm(t,e=At.version){return t.version&&jT(t.version,e)?`ttheme ${t.version} is out, you have ${e} — \`${Sf}\` updates it`:void 0}function Ma(t,e,n=va(t)){try{if(ut(e)){let r=Ge(e),i=ce(r);return{id:i,info:r,entries:Xe(e,i,n,ue(!1))}}return ae(e)?Yn(e,tn(t,e),n,ue(!1)):void 0}catch{return}}function Em(t){if(!qy(Dn(t)))return[];let e=W(t),n=va(t),r={renamed:new Map,removed:[]};for(let u of Bt(e.markets)){let l=Ma(t,u,n);if(l)By(l.id,l.info,new Set(l.entries.map((d)=>de(d.name))),e.palettes,r)}if(r.renamed.size===0&&r.removed.length===0)return[];let i=dt(t,!1);es(t,i,e.terminals,[...r.renamed.keys(),...r.removed]),l$(t,r.renamed,r.removed),$0(t,r.renamed),jy(t,r.renamed,r.removed);let o=[...new Set(e.palettes.filter((u)=>!r.removed.includes(u)).map((u)=>r.renamed.get(u)??u))],{startup:s,...a}=e,c=s&&!r.removed.includes(s)?r.renamed.get(s)??s:void 0;return Ke(t,i,e,{...a,palettes:o,...c?{startup:c}:{}}),[...[...r.renamed].map(([u,l])=>`${u} is ${l} now — its market renamed it`),...r.removed.map((u)=>`${u} was removed from its market`)]}async function Mm(t,e,n,r){let i=Em(t),o=i.length>0?W(t):e,s=new Set(r.flatMap((f)=>[...f.change.changed,...f.change.gone])),a=o.palettes.filter((f)=>s.has(f));if(a.length===0)return i;let c=dt(t,!1);qt(t,c,o);let u=new Set(r.flatMap((f)=>f.change.gone)),l=a.filter((f)=>u.has(f)).map((f)=>`${f} left its market — ttheme keeps the copy you have`),d=new Map(n.map((f)=>[f.name,f.pictures]));return await nr(t,Rt(t,c,!1).palettes.filter((f)=>a.includes(f.name)&&d.has(f.name)).map((f)=>os(f,d.get(f.name))),o.terminals),[...i,...l]}async function Xy(t=Q()){try{if(!qy(Dn(t)))return;let e=W(t),n=bm(t,e);if(n.length===0)return;let r=Jn(t),i=Jr(`Checking ${n.map(nt).join(", ")} for updates`),o=await Promise.all(n.map((u)=>$m(t,u,gm)));i.done();let s=o.flatMap((u)=>("refreshed"in u)?[u.refreshed]:[]),a=s.flatMap((u)=>vm(u)??[]);fm(a);let c=a.length>0?await Mm(t,e,r,s):[];fm([...c,...o.flatMap((u)=>FT(u)??[]),...s.flatMap((u)=>Sm(u)??[])])}catch{return}}var o1=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,UT=["add","remove","search","init","check"];function Om(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function WT(){try{let t=_T("gh",["api","user","--jq",".login"],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4}).trim().toLowerCase();return o1.test(t)?t:void 0}catch{return}}async function KT(t,e){if(e.author)return e.author;let n=WT();if(!n){if(!Om())throw Error("your palettes are named after your GitHub handle — log in with `gh auth login`, or run this in a terminal");let r=await fh({message:"Your GitHub handle — your palettes are named <handle>@<market>/<palette>",validate:(i)=>o1.test((i??"").toLowerCase())&&(i??"").length<=39?void 0:"that is not a GitHub handle"});if(me(r))throw Error("no handle given");n=r.toLowerCase()}return We(t,{...e,author:n}),console.log(`Your palettes are named ${n}@<market>/<palette>`),n}function cs(t,e){if(e===q)return q;return ut(e)?ce(Ge(e)):Xc(e,tn(t,e))}function el(t,e){try{return cs(t,e)}catch{return}}function s1(t){return lt(t)??q}function Oa(t){return dt(t).palettes.filter((e)=>lt(e.name)===void 0)}function zT(t){let e=xa(import.meta.dirname,"..","dist","manifest.json");return Xu(e)?en(tl(e,"utf8")).palettes:Oa(t)}function Ia(t,e,n){let{updates:r,...i}=t,o=Object.entries(n).filter(([s,a])=>e.includes(s)&&a!==Nr(s,{}));return{...i,markets:e,...o.length>0?{updates:Object.fromEntries(o)}:{}}}function a1(t,e,n,r){return e.find((i)=>i!==n&&!_o(i,n)&&el(t,i)===r)}function xm(t,e,n,r){let i=W(t),o=Bt(i.markets),s=a1(t,o,e,n);if(s)throw Error(`${n} already names the market at ${nt(s)} — \`ttheme market remove ${n}\` first`);let a=r===void 0?{...i.updates}:{...i.updates,[e]:r};We(t,Ia(i,o.includes(e)?o:[...o,e],a))}async function DT(t){if(!Om())return!1;let e=await nn({message:`Update ${t} on its own when its author changes it? ttheme checks once a day, when you run it`,initialValue:!1});if(me(e))throw Error("no answer given — nothing was added");return e}async function c1(t,e){let n=Jr(`Fetching ${nt(e)}`);try{return await Sa(t,e)}finally{n.done()}}async function qT(t,e,n){let r=await c1(t,n),i=W(t),o=Bt(i.markets),s=a1(t,o,n,r.id);if(s)throw Error(`${r.id} already names the market at ${nt(s)} — \`ttheme market remove ${r.id}\` first`);let{[e]:a,...c}=i.updates??{},u=a===void 0?c:{...c,[n]:a};return We(t,Ia(i,o.map((l)=>l===e?n:l),u)),as(t,r),r}async function Im(t,e){let n=Ar(e),r=Bt(W(t).markets);if(r.includes(n))return console.log(`${nt(n)} is already added`),{source:n,id:cs(t,n),fresh:!1};let i=ae(n)?r.find((c)=>ae(c)&&_o(c,n)):void 0;if(i){let c=await qT(t,i,n);return console.log(`Moved ${c.id} to ${Xs(n)??"its default branch"} · ${nt(n)} — ${Tt(It(c.entries).length)}`),{source:n,id:c.id,fresh:!1}}if(ut(n)){let c=ce(Ge(n));xm(t,n,c);let u=Xe(n,c,Oa(t)).length;return console.log(`Added ${c} · ${nt(n)} — ${Tt(u)}, read in place`),{source:n,id:c,fresh:!0}}let o=await c1(t,n),s=n===q?void 0:await DT(o.id);xm(t,n,o.id,s),as(t,o);let a=Tt(It(o.entries).length);return console.log(n===q?`Added the ttheme catalog — ${a}`:`Added ${o.id} · ${nt(n)} — ${a}${s?", updating on its own":""}`),{source:n,id:o.id,fresh:!0}}async function YT(t){let e=Q(),{source:n,id:r,fresh:i}=await Im(e,t);if(!i)return;if(ut(n))console.log("\n`ttheme browse` picks them · once the folder is on GitHub, `ttheme market add <owner>/<repo>` adds it anywhere");else if(n===q)console.log("\n`ttheme browse` picks them");else console.log(`
637
- \`ttheme browse\` picks them, or \`ttheme add ${r}/<palette>\``)}function Rm(t,e){if(e===q)t1(Re(t),{force:!0});else if(ae(e))t1(Be(t,e),{force:!0})}function Pm(t){return`${Tt(t.length)} installed from it keep${t.length===1?"s":""} working: ${t.join(", ")} — \`ttheme remove\` drops ${t.length===1?"it":"them"}`}function JT(t){let e=Q(),n=W(e),r=Bt(n.markets),i=r.find((u)=>el(e,u)===t)??r.find((u)=>u===u1(t));if(!i)throw Error(`no market named ${t} — \`ttheme market\` lists them`);let o=el(e,i),s=n.palettes.filter((u)=>s1(u)===o),a=r.filter((u)=>u!==i),c=Ia(n,a,n.updates??{});if(We(e,c),Rm(e,i),qt(e,dt(e),c),console.log(`Removed ${o??t} · ${nt(i)}`),s.length>0)console.log(Pm(s))}function u1(t){try{return Ar(t)}catch{return}}function VT(t,e){try{if(e===q)return It(en(tl(Re(t),"utf8")).palettes).length;if(ut(e))return Xe(e,cs(t,e),Oa(t),ue(!1)).length;return Yn(e,tn(t,e),Oa(t),ue(!1)).entries.length}catch{return}}function Nm(t,e,n=rr(),r=Date.now()){if(ut(e))return"read in place";let i=n[e],o=ya(t,e);if(i&&(o===void 0||i.at>o))return`update failed ${Ea(i.at,r)}`;return o===void 0?"never updated":`updated ${Ea(o,r)}`}function ZT(){let t=Q(),e=W(t),n=Bt(e.markets);if(n.length===0){console.log("No markets — `ttheme market add official` brings the ttheme catalog back");return}let r=rr(),i=n.map((a)=>{let c=el(t,a)??"?",u=VT(t,a),l=e.palettes.filter((h)=>s1(h)===c).length,d=ut(a)?[]:[`auto-update ${Nr(a,e.updates)?"on":"off"}`],f=a===q?void 0:Ma(t,a)?.info.description;return{name:c,where:nt(a),about:f,note:[u===void 0?"Unreadable":Tt(u),...l>0?[`${l} installed`]:[],...d,Nm(t,a,r)].join(" · ")}}),o=Math.max(...i.map((a)=>a.name.length)),s=Math.max(...i.map((a)=>a.where.length));for(let a of i)if(console.log(` ${a.name.padEnd(o)} ${a.where.padEnd(s)} ${a.note}`),a.about)console.log(` ${" ".repeat(o)} ${a.about}`)}function Am(t){return`${t.owner.login.toLowerCase()}/${t.name}`}async function Tm(t,e){let n=encodeURIComponent(`topic:${Fo}${t?` ${t}`:""}`);try{let{items:r}=await ru(`https://api.github.com/search/repositories?q=${n}&sort=stars&per_page=50`,(i)=>JSON.parse(i),void 0,e);return r}catch(r){if(r instanceof nu)throw Error("GitHub lets a search through about ten times a minute without signing in — try again in a minute");throw r}}async function QT(t){let e=Q(),n=await Tm(t);if(n.length===0){console.log(`No repository carries the ${Fo} topic${t?` and matches ${t}`:""} yet`);return}let r=new Set(Bt(W(e).markets).map(Pr)),i=n.map((s)=>{let a=Am(s);return{arg:a,added:r.has(a),stars:`★${s.stargazers_count}`,about:s.description??""}}),o=Math.max(...i.map((s)=>s.arg.length));for(let s of i)console.log(` ${s.added?"●":"○"} ${s.arg.padEnd(o)} ${s.stars.padStart(5)} ${s.about}`);console.log("\n`ttheme market add <name>` adds one")}function l1({name:t}){return`ttheme-${t}`}function XT(t,e){BT(Yc(t),{recursive:!0}),F(xa(t,_t),V0(e)),F(xa(t,"README.md"),`# ${ce(e)}
615
+ `);if(s!==i)L(r,s)}import{execFile as zT,spawn as DT,spawnSync as wm}from"node:child_process";import{mkdirSync as qT,readFileSync as YT,realpathSync as Vy}from"node:fs";import{homedir as JT,tmpdir as Zy}from"node:os";import{dirname as VT,join as $m}from"node:path";var Ea=`npx ${lt.name}@latest init`,vm=86400000,ZT=3600000,QT=1e4,km=/^(\d+)\.(\d+)\.(\d+)$/;function Qy(t,e){let n=km.exec(t),r=km.exec(e);if(!n||!r)return!1;for(let i of[1,2,3]){let o=Number(n[i])-Number(r[i]);if(o!==0)return o>0}return!1}function ds(t=process.env){return t.TTHEME_AUTO_UPDATE!=="off"&&(t.CI===void 0||t.CI===""||t.CI==="false")}function ym(){return $m(process.env.XDG_STATE_HOME??$m(JT(),".local","state"),"ttheme","release.json")}function Ma(){try{let t=JSON.parse(YT(ym(),"utf8"));return{checked:typeof t.checked==="number"?t.checked:0,...typeof t.latest==="string"?{latest:t.latest}:{},...typeof t.told==="number"?{told:t.told}:{}}}catch{return{checked:0}}}function ls(t){qT(VT(ym()),{recursive:!0}),L(ym(),`${JSON.stringify(t)}
616
+ `)}function Xy(t=QT){return new Promise((e,n)=>{zT("npm",["view",`${lt.name}@latest`,"version","--prefer-online"],{cwd:Zy(),encoding:"utf8",timeout:t,env:{...process.env,npm_config_update_notifier:"false"}},(r,i,o)=>{if(r){let a=o.split(`
617
+ `).find((l)=>/\S/.test(l))?.replace(/^npm (error|ERR!) /,""),{code:c,killed:u}=r;n(Error(c==="ENOENT"?"cannot run npm":u?`npm did not answer within ${t/1000} s`:`npm could not ask its registry — ${a??"it gave no reason"}`));return}let s=i.trim();if(!km.test(s)){n(Error("the npm registry named no version"));return}e(s)})})}function t1(t=Date.now()){let e=Ma();if(!ds()||t-e.checked<vm)return;try{ls({...e,checked:t}),DT(process.execPath,[process.argv[1],"latest"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}async function e1(){let t=Ma();try{return ls({...t,checked:Date.now(),latest:await Xy()}),0}catch{return ls({...t,checked:Date.now()-vm+ZT}),1}}function n1(t=J()){return $m(t,"ttheme","ttheme.js")}function r1(){try{return Vy(process.argv[1])===Vy(n1())}catch{return!1}}function XT(){return r1()?"`ttheme update` updates it":`\`${Ea}\` updates it`}function i1(t,e=lt.version){return`ttheme ${t} is out, you have ${e} — ${XT()}`}function o1(t=Date.now()){let e=Ma();if(!ds()||!e.latest||!Qy(e.latest,lt.version)||t-(e.told??0)<vm)return;if(process.stderr.isTTY)ls({...e,told:t});Xu([i1(e.latest)])}function s1(t,e){console.log(`Updating ttheme ${lt.version} → ${t}`);let n=wm("npx",["--yes",`${lt.name}@${t}`,"init","--yes"],{cwd:Zy(),stdio:"inherit",env:{...process.env,npm_config_prefer_online:"true"}});if(n.error)throw Error(`cannot run npx — ${n.error.message}; \`${Ea}\` updates ttheme once npm is there`);if(n.status!==0)throw Error(`npx stopped with status ${n.status} — ttheme ${lt.version} is still installed`);let r=n1(),i=wm(process.execPath,[r,"--version"],{encoding:"utf8"}).stdout?.trim();if(i!==t)throw Error(`${r} is ${i||"unreadable"} after the update, not ${t} — \`${Ea}\` tries again`);let o=Ma();return ls({...o,latest:t}),wm(process.execPath,[r,"update",...e],{stdio:"inherit",env:{...process.env,TTHEME_UPDATED:t}}).status??1}async function a1(){if(process.env.TTHEME_UPDATED)return{note:` ttheme ${lt.version} — updated`};let t;try{t=await Xy()}catch(e){return{note:` ttheme ${lt.version} — could not check for a newer one: ${e.message}`}}if(ls({...Ma(),checked:Date.now(),latest:t}),!Qy(t,lt.version))return{note:` ttheme ${lt.version} — up to date`};return r1()?{latest:t,note:""}:{note:` ${i1(t)}`}}function c1(t,e){let n=e,r=new Set;while(Object.hasOwn(t,n)&&!r.has(n)){r.add(n);let i=t[n];if(i===!1)return!1;n=i}return r.has(n)||n===e?void 0:n}function u1(t,e,n,r,i){let o=`${t}/`;for(let s of r){let a=s.startsWith(o)?s.slice(o.length):void 0;if(a===void 0||n.has(a))continue;let c=c1(e.renames,a);if(c===!1)i.removed.push(s);else if(c!==void 0&&n.has(c))i.renamed.set(s,`${o}${c}`);else if(e.forceRemove)i.removed.push(s)}}function l1(t,e){let n=[],r=[];for(let i of Object.keys(t)){if(e.has(i)){r.push(`renames.${i}: ${i} is still a palette here, so the rename never applies`);continue}let o=c1(t,i);if(o===void 0)n.push(`renames.${i}: the chain comes back to a name it already passed`);else if(o!==!1&&!e.has(o))n.push(`renames.${i}: the chain ends at ${o}, which is not a palette here — end it at one, or at false`)}return{errors:n,warnings:r}}import{gunzipSync as tH}from"node:zlib";var Ui=512,d1=67108864,Sm=new TextDecoder;function fs(t,e,n){let r=t.subarray(e,e+n),i=r.indexOf(0);return Sm.decode(i<0?r:r.subarray(0,i))}function eH(t){if((t[124]??0)&128)throw Error("the archive holds a file too large to be a palette");let e=Number.parseInt(fs(t,124,12).trim()||"0",8);if(!Number.isFinite(e)||e<0)throw Error("the archive has a header that does not read");return e}function nH(t){let e=0,n;while(e<t.length){let r=t.indexOf(32,e),i=r<0?Number.NaN:Number.parseInt(Sm.decode(t.subarray(e,r)),10);if(!Number.isFinite(i)||i<=0)break;let o=Sm.decode(t.subarray(r+1,e+i-1)),s=o.indexOf("=");if(o.slice(0,s)==="path")n=o.slice(s+1);e+=i}return n}function rH(t){if(t[0]!==31||t[1]!==139)return t;try{return tH(t,{maxOutputLength:d1})}catch(e){throw Error(e instanceof RangeError?`the archive unpacks to more than ${d1/1024/1024} MB`:"the archive is not a gzip file that reads")}}function f1(t){let e=rH(t),n=new Map,r,i=0;while(i+Ui<=e.length){let o=e.subarray(i,i+Ui);if(o.every((d)=>d===0))break;let s=eH(o),a=e.subarray(i+Ui,i+Ui+s);i+=Ui+Math.ceil(s/Ui)*Ui;let c=String.fromCharCode(o[156]??0);if(c==="x"){r=nH(a)??r;continue}if(c==="L"){r=fs(a,0,a.length);continue}let u=fs(o,257,5)==="ustar"?fs(o,345,155):"",l=r??(u?`${u}/${fs(o,0,100)}`:fs(o,0,100));if(r=void 0,c==="0"||c==="\x00")n.set(l.split("/").slice(1).join("/"),a)}return n}var cH=86400000,uH=3600000,xm=5000;function Em(){return h1(process.env.XDG_STATE_HOME??h1(sH(),".local","state"),"ttheme","markets.json")}function er(){try{let t=JSON.parse(g1(Em(),"utf8"));return Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]?.at==="number"&&typeof e[1].error==="string"))}catch{return{}}}function m1(t,e){let n=er();if(e===void 0){if(!(t in n))return;delete n[t]}else n[t]={at:Date.now(),error:e};p1(aH(Em()),{recursive:!0}),L(Em(),`${JSON.stringify(n,null,2)}
618
+ `)}function xa(t,e){let n=gt(e)?_e(t,e):void 0;try{return n?iH(n).mtimeMs:void 0}catch{return}}function lH(t,e,n,r){return t&&(e===void 0||r-e>=cH)&&(n===void 0||r-n>=uH)}function Om(t,e,n=Date.now()){let r=er();return Gt(e.markets).filter((i)=>lH(Rr(i,e.updates),xa(t,i),r[i]?.at,n))}function dH(t,e){let n={},r=new TextDecoder;for(let[i,o]of f1(t))if(i===Bt||i.startsWith("palettes/")&&i.endsWith(".toml"))n[i]=r.decode(o);return{...e?{etag:e}:{},files:n}}async function b1(t,e,n,r){let i;try{i=await Qf(t$(t),e,n,r?{"if-none-match":r}:{})}catch(o){if(o instanceof su){let s=oa(t);throw Error(`${tt(t)}${s?` has no ${s}`:" is not there"} — is the repository public?`)}throw o}if(i.status===304)return;return dH(new Uint8Array(await i.arrayBuffer()),i.headers.get("etag"))}function w1(t,e,n){let{id:r,info:i,entries:o}=Yn(t,e,n,ce(!1));return{source:t,id:r,entries:o,archive:e,info:i}}function Oa(t){return Jr(t,q)}async function Ia(t,e,n,r){if(e===q){if(!Mm(Ge(t)))throw Error(`the ttheme catalog is not on this machine — \`${Ea}\` puts it back`);return{source:e,id:q,entries:Jr(t,q)}}let i=await b1(e,n,r);if(!i)throw Error(`${tt(e)} answered as if nothing had changed`);return w1(e,i,Oa(t))}function hs(t,e){if(!("archive"in e))return;p1(jf(t),{recursive:!0}),L(_e(t,e.source),`${JSON.stringify(e.archive)}
619
+ `)}function fH(t,e){try{return tn(t,e)}catch{return}}function Jr(t,e){try{if(e===q)return Sn(g1(Ge(t),"utf8")).palettes;return Yn(e,tn(t,e),Oa(t),ce(!1)).entries}catch{return[]}}function hH(t,e){let n=new Map(t.map((i)=>[i.name,JSON.stringify(i)])),r=new Map(e.map((i)=>[i.name,JSON.stringify(i)]));return{added:[...r.keys()].filter((i)=>!n.has(i)),changed:[...r].filter(([i,o])=>n.has(i)&&n.get(i)!==o).map(([i])=>i),gone:[...n.keys()].filter((i)=>!r.has(i))}}async function mH(t,e,n){if(!gt(e))return Ia(t,e,n);let r=fH(t,e),i=await b1(e,n,void 0,r?.etag);return i&&w1(e,i,Oa(t))}async function Im(t,e,n){let r=Jr(t,e),i;try{i=await mH(t,e,n)}catch(s){throw m1(e,s.message),s}if(i)hs(t,i);else{let s=new Date;oH(_e(t,e),s,s)}m1(e,void 0);let o=i?.entries??r;return{source:e,id:i?.id??ou(e,tn(t,e)),count:Pt(o).length,change:hH(r,o)}}async function Rm(t,e,n){try{return{source:e,refreshed:await Im(t,e,n)}}catch(r){return{source:e,failure:r instanceof Error?r:Error(String(r))}}}function $1(t,e){return`${tt(t)}: ${e.message}`}function Tt(t){return`${t} palette${t===1?"":"s"}`}function Ra(t,e=Date.now()){let n=Math.floor(Math.max(0,e-t)/60000);if(n<1)return"just now";if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<48?`${r}h ago`:`${Math.floor(r/24)}d ago`}function k1({added:t,changed:e,gone:n}){return[t.length>0?`${t.length} new`:"",e.length>0?`${e.length} changed`:"",n.length>0?`${n.length} gone`:""].filter(Boolean).join(", ")}function Pm(t){let e=k1(t.change);return`${t.id} — ${Tt(t.count)}${e?` (${e})`:""}`}function Nm(t){return k1(t.change)?`Updated ${Pm(t)}`:void 0}function Pa(t,e,n=Oa(t)){try{if(Ot(e)){let r=Be(e),i=ae(r);return{id:i,info:r,entries:Xe(e,i,n,ce(!1))}}return gt(e)?Yn(e,tn(t,e),n,ce(!1)):void 0}catch{return}}function pH(t){if(!Mm(Dn(t)))return[];let e=K(t),n=Oa(t),r={renamed:new Map,removed:[]};for(let u of Gt(e.markets)){let l=Pa(t,u,n);if(l)u1(l.id,l.info,new Set(l.entries.map((d)=>de(d.name))),e.palettes,r)}if(r.renamed.size===0&&r.removed.length===0)return[];let i=dt(t,!1);cs(t,i,e.terminals,[...r.renamed.keys(),...r.removed]),b$(t,r.renamed,r.removed),x0(t,r.renamed),Jy(t,r.renamed,r.removed);let o=[...new Set(e.palettes.filter((u)=>!r.removed.includes(u)).map((u)=>r.renamed.get(u)??u))],{startup:s,...a}=e,c=s&&!r.removed.includes(s)?r.renamed.get(s)??s:void 0;return Ke(t,i,e,{...a,palettes:o,...c?{startup:c}:{}}),[...[...r.renamed].map(([u,l])=>`${u} is ${l} now — its market renamed it`),...r.removed.map((u)=>`${u} was removed from its market`)]}function Am(t){let e=zo(t,dt(t,!1)).map((n)=>n.name);if(e.length===0)return;return`${e.join(", ")} ${e.length===1?"has":"have"} an update from ${e.length===1?"its market":"their markets"} — ctrl+r in \`ttheme browse\`'s Installed tab takes it`}function Wi(t,e){let n=pH(t),r=K(t),i=new Set(e.flatMap((s)=>s.change.gone)),o=r.palettes.filter((s)=>i.has(s)).map((s)=>`${s} left its market — ttheme keeps the copy you have`);return[...n,...o]}async function y1(t=J()){try{if(!ds()||!Mm(Dn(t)))return;let e=Om(t,K(t));if(e.length===0)return;let n=Yr(`Checking ${e.map(tt).join(", ")} for updates`),r=await Promise.all(e.map((s)=>Rm(t,s,xm)));n.done();let i=r.flatMap((s)=>("refreshed"in s)?[s.refreshed]:[]),o=i.flatMap((s)=>Nm(s)??[]);if(o.length===0)return;Xu([...o,...Wi(t,i),...[Am(t)??[]].flat()])}catch{return}}var x1=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,kH=["add","remove","search","init","check"];function Hm(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function yH(){try{let t=gH("gh",["api","user","--jq",".login"],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4}).trim().toLowerCase();return x1.test(t)?t:void 0}catch{return}}async function vH(t,e){if(e.author)return e.author;let n=yH();if(!n){if(!Hm())throw Error("your palettes are named after your GitHub handle — log in with `gh auth login`, or run this in a terminal");let r=await wh({message:"Your GitHub handle — your palettes are named <handle>@<market>/<palette>",validate:(i)=>x1.test((i??"").toLowerCase())&&(i??"").length<=39?void 0:"that is not a GitHub handle"});if(me(r))throw Error("no handle given");n=r.toLowerCase()}return We(t,{...e,author:n}),console.log(`Your palettes are named ${n}@<market>/<palette>`),n}function Vr(t,e){if(e===q)return q;return Ot(e)?ae(Be(e)):ou(e,tn(t,e))}function nl(t,e){try{return Vr(t,e)}catch{return}}function O1(t){return ct(t)??q}function Aa(t){return dt(t).palettes.filter((e)=>ct(e.name)===void 0)}function SH(t){let e=Na(import.meta.dirname,"..","dist","manifest.json");return tl(e)?Sn(el(e,"utf8")).palettes:Aa(t)}function Ta(t,e,n){let{updates:r,...i}=t,o=Object.entries(n).filter(([s,a])=>gt(s)&&e.includes(s)&&a!==Rr(s,{}));return{...i,markets:e,...o.length>0?{updates:Object.fromEntries(o)}:{}}}function I1(t,e,n,r){return e.find((i)=>i!==n&&!Uo(i,n)&&nl(t,i)===r)}function Tm(t,e,n,r){let i=K(t),o=Gt(i.markets),s=I1(t,o,e,n);if(s)throw Error(`${n} already names the market at ${tt(s)} — \`ttheme market remove ${n}\` first`);let a=r===void 0?{...i.updates}:{...i.updates,[e]:r};We(t,Ta(i,o.includes(e)?o:[...o,e],a))}async function EH(t){if(!Hm())return!1;let e=await en({message:`Update ${t} on its own when its author changes it? ttheme checks once a day, when you run it`,initialValue:!1});if(me(e))throw Error("no answer given — nothing was added");return e}async function R1(t,e){let n=Yr(`Fetching ${tt(e)}`);try{return await Ia(t,e)}finally{n.done()}}async function MH(t,e,n){let r=await R1(t,n),i=K(t),o=Gt(i.markets),s=I1(t,o,n,r.id);if(s)throw Error(`${r.id} already names the market at ${tt(s)} — \`ttheme market remove ${r.id}\` first`);let{[e]:a,...c}=i.updates??{},u=a===void 0?c:{...c,[n]:a};return We(t,Ta(i,o.map((l)=>l===e?n:l),u)),hs(t,r),r}async function Cm(t,e){let n=Pr(e),r=Gt(K(t).markets);if(r.includes(n))return console.log(`${tt(n)} is already added`),{source:n,id:Vr(t,n),fresh:!1};let i=gt(n)?r.find((c)=>gt(c)&&Uo(c,n)):void 0;if(i){let c=await MH(t,i,n);return console.log(`Moved ${c.id} to ${oa(n)??"its default branch"} · ${tt(n)} — ${Tt(Pt(c.entries).length)}`),{source:n,id:c.id,fresh:!1}}if(Ot(n)){let c=ae(Be(n));Tm(t,n,c);let u=Xe(n,c,Aa(t)).length;return console.log(`Added ${c} · ${tt(n)} — ${Tt(u)}, read in place`),{source:n,id:c,fresh:!0}}let o=await R1(t,n),s=n===q?void 0:await EH(o.id);Tm(t,n,o.id,s),hs(t,o);let a=Tt(Pt(o.entries).length);return console.log(n===q?`Added the ttheme catalog — ${a}`:`Added ${o.id} · ${tt(n)} — ${a}${s?", updating on its own":""}`),{source:n,id:o.id,fresh:!0}}async function xH(t){let e=J(),{source:n,id:r,fresh:i}=await Cm(e,t);if(!i)return;if(Ot(n))console.log("\n`ttheme browse` picks them · once the folder is on GitHub, `ttheme market add <owner>/<repo>` adds it anywhere");else if(n===q)console.log("\n`ttheme browse` picks them");else console.log(`
620
+ \`ttheme browse\` picks them, or \`ttheme add ${r}/<palette>\``)}function Lm(t,e){if(gt(e))$H(_e(t,e),{force:!0})}function Fm(t){return`${Tt(t.length)} installed from it keep${t.length===1?"s":""} working: ${t.join(", ")} — \`ttheme remove\` drops ${t.length===1?"it":"them"}`}function OH(t){let e=J(),n=K(e),r=Gt(n.markets),i=r.find((u)=>nl(e,u)===t)??r.find((u)=>u===P1(t));if(!i)throw Error(`no market named ${t} — \`ttheme market\` lists them`);let o=nl(e,i),s=n.palettes.filter((u)=>O1(u)===o),a=r.filter((u)=>u!==i),c=Ta(n,a,n.updates??{});if(We(e,c),Lm(e,i),ue(e,dt(e),c),console.log(`Removed ${o??t} · ${tt(i)}`),s.length>0)console.log(Fm(s))}function P1(t){try{return Pr(t)}catch{return}}function IH(t,e){try{if(e===q)return Pt(Sn(el(Ge(t),"utf8")).palettes).length;if(Ot(e))return Xe(e,Vr(t,e),Aa(t),ce(!1)).length;return Yn(e,tn(t,e),Aa(t),ce(!1)).entries.length}catch{return}}function jm(t,e,n=er(),r=Date.now()){if(Ot(e))return"read in place";if(e===q)return"comes with ttheme";let i=n[e],o=xa(t,e);if(i&&(o===void 0||i.at>o))return`update failed ${Ra(i.at,r)}`;return o===void 0?"never updated":`updated ${Ra(o,r)}`}function RH(){let t=J(),e=K(t),n=Gt(e.markets);if(n.length===0){console.log("No markets — `ttheme market add official` brings the ttheme catalog back");return}let r=er(),i=n.map((a)=>{let c=nl(t,a)??"?",u=IH(t,a),l=e.palettes.filter((h)=>O1(h)===c).length,d=Ot(a)?[]:[`auto-update ${Rr(a,e.updates)?"on":"off"}`],f=a===q?void 0:Pa(t,a)?.info.description;return{name:c,where:tt(a),about:f,note:[u===void 0?"Unreadable":Tt(u),...l>0?[`${l} installed`]:[],...d,jm(t,a,r)].join(" · ")}}),o=Math.max(...i.map((a)=>a.name.length)),s=Math.max(...i.map((a)=>a.where.length));for(let a of i)if(console.log(` ${a.name.padEnd(o)} ${a.where.padEnd(s)} ${a.note}`),a.about)console.log(` ${" ".repeat(o)} ${a.about}`)}function _m(t){return`${t.owner.login.toLowerCase()}/${t.name}`}async function Bm(t,e){let n=encodeURIComponent(`topic:${Bo}${t?` ${t}`:""}`);try{let{items:r}=await O$(`https://api.github.com/search/repositories?q=${n}&sort=stars&per_page=50`,(i)=>JSON.parse(i),void 0,e);return r}catch(r){if(r instanceof au)throw Error("GitHub lets a search through about ten times a minute without signing in — try again in a minute");throw r}}async function PH(t){let e=J(),n=await Bm(t);if(n.length===0){console.log(`No repository carries the ${Bo} topic${t?` and matches ${t}`:""} yet`);return}let r=new Set(Gt(K(e).markets).map(Ir)),i=n.map((s)=>{let a=_m(s);return{arg:a,added:r.has(a),stars:`★${s.stargazers_count}`,about:s.description??""}}),o=Math.max(...i.map((s)=>s.arg.length));for(let s of i)console.log(` ${s.added?"●":"○"} ${s.arg.padEnd(o)} ${s.stars.padStart(5)} ${s.about}`);console.log("\n`ttheme market add <name>` adds one")}function N1({name:t}){return`ttheme-${t}`}function NH(t,e){bH(tu(t),{recursive:!0}),L(Na(t,Bt),n$(e)),L(Na(t,"README.md"),`# ${ae(e)}
638
621
 
639
622
  A [ttheme](https://github.com/kecan0406/ttheme) market:
640
623
 
641
624
  \`\`\`sh
642
- ttheme market add ${e.owner}/${l1(e)}
625
+ ttheme market add ${e.owner}/${N1(e)}
643
626
  ttheme browse
644
627
  \`\`\`
645
- `)}function d1(t){return xe(`x@${t}/x`)?"takes lowercase letters, digits and single hyphens":void 0}async function f1(){if(!Om())throw Error("name the market: ttheme market init <name>, or --in <name> on new");let t=await fh({message:"Your market's name — its palettes are <you>@<name>/<palette>",validate:(e)=>d1((e??"").toLowerCase())});if(me(t))throw Error("no market name given");return t.toLowerCase()}async function h1(t,e){let n=Oi(t);if(e){let s=n.find((a)=>a.name===e||a.id===e||a.dir===u1(e));if(!s)throw Error(`${e} is not one of your local markets — \`ttheme market init ${e}\` makes it one`);return s}let[r,...i]=n;if(r&&i.length===0)return r;if(r)throw Error(`you have ${n.length} local markets — --in names one: ${n.map((s)=>s.name).join(", ")}`);let o=await f1();return m1(t,Tf(t,o),o)}async function m1(t,e,n){let r=!Xu(xa(e,_t)),i;if(r){let s=d1(n);if(s)throw Error(`the market name ${n} ${s}`);if(Xu(e)&&GT(e).length>0)throw Error(`${e} is not empty — pick a new folder for the market`);i={owner:await KT(t,W(t)),name:n},XT(e,i)}else i=Ge(e);let o=ce(i);return xm(t,e,o),console.log(`${r?"Made":"Added"} your market ${o} · ${nt(e)}`),{dir:e,...i,id:o}}function n1(t){return t.startsWith(".")||t.startsWith("/")||t.startsWith("~")}async function tH(t){let e=Q(),n=t&&!n1(t)?t.toLowerCase():t?i1(Ar(t)).toLowerCase():await f1(),r=t&&n1(t)?Ar(t):Tf(e,n),i=await m1(e,r,n),o=`${i.owner}/${l1(i)}`;console.log(`
628
+ `)}function A1(t){return xe(`x@${t}/x`)?"takes lowercase letters, digits and single hyphens":void 0}async function T1(){if(!Hm())throw Error("name the market: ttheme market init <name>, or --in <name> on new");let t=await wh({message:"Your market's name — its palettes are <you>@<name>/<palette>",validate:(e)=>A1((e??"").toLowerCase())});if(me(t))throw Error("no market name given");return t.toLowerCase()}async function H1(t,e){let n=Ii(t);if(e){let s=n.find((a)=>a.name===e||a.id===e||a.dir===P1(e));if(!s)throw Error(`${e} is not one of your local markets — \`ttheme market init ${e}\` makes it one`);return s}let[r,...i]=n;if(r&&i.length===0)return r;if(r)throw Error(`you have ${n.length} local markets — --in names one: ${n.map((s)=>s.name).join(", ")}`);let o=await T1();return C1(t,_f(t,o),o)}async function C1(t,e,n){let r=!tl(Na(e,Bt)),i;if(r){let s=A1(n);if(s)throw Error(`the market name ${n} ${s}`);if(tl(e)&&wH(e).length>0)throw Error(`${e} is not empty — pick a new folder for the market`);i={owner:await vH(t,K(t)),name:n},NH(e,i)}else i=Be(e);let o=ae(i);return Tm(t,e,o),console.log(`${r?"Made":"Added"} your market ${o} · ${tt(e)}`),{dir:e,...i,id:o}}function S1(t){return t.startsWith(".")||t.startsWith("/")||t.startsWith("~")}async function AH(t){let e=J(),n=t&&!S1(t)?t.toLowerCase():t?M1(Pr(t)).toLowerCase():await T1(),r=t&&S1(t)?Pr(t):_f(e,n),i=await C1(e,r,n),o=`${i.owner}/${N1(i)}`;console.log(`
646
629
  \`ttheme new <palette> --from <palette>\` puts palettes in it, and a folder under palettes/ shelves them in a catalog — others see them once it is on GitHub:
647
630
 
648
- cd ${nt(r)}
631
+ cd ${tt(r)}
649
632
  git init -b main && git add -A && git commit -m "${i.id}"
650
633
  gh repo create ${o} --public --source . --push
651
- gh repo edit ${o} --add-topic ${Fo}
634
+ gh repo edit ${o} --add-topic ${Bo}
652
635
 
653
- Every push is the market: \`ttheme market add ${o}\` works anywhere`)}function eH(t){let e=t?Ar(t):process.cwd(),n=xa(e,_t);if(!Xu(n))throw Error(`${nt(e)} has no ${_t} — \`ttheme market init ${nt(e)}\` makes one`);let r=[],i=[],o=tl(n,"utf8"),s;try{s=Ge(e)}catch(h){return console.error(` ✗ ${h.message}`),1}let a=wi(o),c=a.owner;for(let h of Object.keys(a).filter((m)=>!D0.includes(m)))i.push(`${_t}: unknown key ${h} — ttheme ignores it`);for(let h of Object.keys(c).filter((m)=>!q0.includes(m)))i.push(`${_t}: unknown key owner.${h} — ttheme ignores it`);if(!s.description)i.push(`${_t}: no description — browse and the market page show one`);let u=ce(s),l=Xe(e,u,zT(Q()),(h,m)=>r.push(`${e1(e,h)}: ${m.replace(`${i1(h)}: `,"")}`));for(let h of Bo(e)){let m;try{m=Zw(h.path,tl(h.path,"utf8"))}catch{m=[]}for(let g of m)i.push(`${e1(e,h.path)}: unknown key ${g} — ttheme ignores it`)}let d=Gy(s.renames,new Set(l.map((h)=>de(h.name))));r.push(...d.errors.map((h)=>`${_t}: ${h}`)),i.push(...d.warnings.map((h)=>`${_t}: ${h}`));for(let h of l){let m=ea(h).filter((b)=>b.startsWith(" ✗")),g=h.catalog?`${h.catalog}/${de(h.name)}`:de(h.name);console.log(` ${g}${m.length>0?`
636
+ Every push is the market: \`ttheme market add ${o}\` works anywhere`)}function TH(t){let e=t?Pr(t):process.cwd(),n=Na(e,Bt);if(!tl(n))throw Error(`${tt(e)} has no ${Bt} — \`ttheme market init ${tt(e)}\` makes one`);let r=[],i=[],o=el(n,"utf8"),s;try{s=Be(e)}catch(h){return console.error(` ✗ ${h.message}`),1}let a=$i(o),c=a.owner;for(let h of Object.keys(a).filter((m)=>!Q0.includes(m)))i.push(`${Bt}: unknown key ${h} — ttheme ignores it`);for(let h of Object.keys(c).filter((m)=>!X0.includes(m)))i.push(`${Bt}: unknown key owner.${h} — ttheme ignores it`);if(!s.description)i.push(`${Bt}: no description — browse and the market page show one`);let u=ae(s),l=Xe(e,u,SH(J()),(h,m)=>r.push(`${v1(e,h)}: ${m.replace(`${M1(h)}: `,"")}`));for(let h of Wo(e)){let m;try{m=i0(h.path,el(h.path,"utf8"))}catch{m=[]}for(let p of m)i.push(`${v1(e,h.path)}: unknown key ${p} — ttheme ignores it`)}let d=l1(s.renames,new Set(l.map((h)=>de(h.name))));r.push(...d.errors.map((h)=>`${Bt}: ${h}`)),i.push(...d.warnings.map((h)=>`${Bt}: ${h}`));for(let h of l){let m=aa(h).filter((b)=>b.startsWith(" ✗")),p=h.catalog?`${h.catalog}/${de(h.name)}`:de(h.name);console.log(` ${p}${m.length>0?`
654
637
  ${m.join(`
655
638
  `)}`:" passes the gate"}`)}for(let h of r)console.error(` ✗ ${h}`);for(let h of i)console.log(` ! ${h}`);let f=(h,m)=>`${h} ${m}${h===1?"":"s"}`;return console.log(`
656
- ${u} · ${Tt(l.length)} · ${f(r.length,"error")} · ${f(i.length,"warning")}`),r.length>0?1:0}async function p1(t,e){switch(t){case void 0:ZT();return;case"add":await YT(r1(t,e));return;case"remove":JT(r1(t,e));return;case"search":await QT(e);return;case"init":await tH(e);return;case"check":return eH(e);default:throw Error(`unknown market action ${t} — ${UT.join(", ")}, or none to list them`)}}function r1(t,e){if(!e)throw Error(t==="add"?"market add takes a repository or a folder: ttheme market add alice/ttheme-dust":"market remove takes a market name — `ttheme market` lists them");return e}function g1(t,e){let n=cs(t,e);return`${n} — ${Tt(Xe(e,n,Oa(t),ue(!1)).length)}, read in place`}var nH=new Intl.Segmenter(void 0,{granularity:"grapheme"});function b1(t){return[...t].length===1&&t>=" "&&t!==""}function rH(t){return[...t.replace(/[\r\n\t]+/g," ")].filter(b1).join("")}function Ki(t,e,n=()=>!0){if(e==="backspace")return[...nH.segment(t)].slice(0,-1).map((r)=>r.segment).join("");if(e==="ctrl-u")return"";if(e==="ctrl-w"||e==="alt-backspace")return t.replace(/\S*\s*$/,"");return b1(e)&&n(e)?t+e:void 0}class Vr{value;constructor(t=""){this.value=t}key(t){let e=Ki(this.value,t);if(e===void 0)return!1;return this.value=e,!0}paste(t){this.value+=rH(t)}}import{performance as iH}from"node:perf_hooks";import{StringDecoder as oH}from"node:string_decoder";var sH=30,w1=50,aH=500,cH=5,$1=Buffer.from("\x1B[M"),rl="\x1B]1337;ReportCellSize\x07\x1B[16t\x1B[14t\x1B[18t",O1="\x1B[?1016$p\x1B[16t",I1={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end","1~":"home","7~":"home","3~":"delete","4~":"end","8~":"end","5~":"pgup","6~":"pgdn",I:"focus-in",O:"focus-out",Z:"shift-tab","1;2C":"shift-right","1;2D":"shift-left"},uH={"\r":"enter","\n":"enter","\t":"tab","\b":"backspace","":"backspace","\x1B":"esc","\x00":"ctrl-space"},k1=/\[([0-?]*)([ -/]*)([@-~])/y,lH=/^\[[0-?]*[ -/]*$/,y1=/\[(<-?\d+;-?\d+;-?\d+)([Mm])/y,dH=/^\[<[-\d;]*$/,v1=/\](\d+)/y,fH=/^\]\d*$/,S1=/\]\d+;/y,hH=/^1337;ReportCellSize=([\d.]+);([\d.]+)(?:;([\d.]+))?$/,mH=/^(1[0-2]|17|4;\d{1,3});(rgba?:[0-9a-fA-F/]+)$/,R1="\x1B[200~",nl="\x1B[201~";function pH(t){let e=uH[t];if(e)return e;let n=t.codePointAt(0)??0;if(n<27)return`ctrl-${String.fromCharCode(n+96)}`;return n<32?void 0:t}function us(t){return{kind:"key",key:t}}function ls(t){return{events:[us("esc")],end:t+1}}function gH(t){let e={};for(let n of t.split(":")){let r=n.indexOf("=");if(r>0)e[n.slice(0,r)]=n.slice(r+1)}return e}var bH=["left","middle","right",void 0];function Hm(t,e,n,r){if(!Number.isInteger(t)||t<0||t>=128||!(e>=0)||!(n>=0))return;let i=t&3,o={kind:"mouse",row:n,col:e,shift:(t&4)!==0,alt:(t&8)!==0,ctrl:(t&16)!==0};if(t&64)return{...o,action:"wheel",button:void 0,wheel:i%2===0?-1:1,sideways:i>=2,count:0};let s=bH[i],a=t&32?s?"drag":"move":r||!s?"release":"press";return{...o,action:a,button:s,wheel:0,sideways:!1,count:a==="press"?1:0}}function wH(t,e,n){let r=[],i=e;while(r.length<3&&i<t.length){let u=t.codePointAt(i);r.push(u),i+=u>65535?2:1}if(r.length<3)return n?{events:[],end:t.length}:void 0;let[o=0,s=0,a=0]=r,c=Math.max(o,s,a)<128?Hm(o-32,s-33,a-33,!1):void 0;return{events:c?[c]:[],end:i}}function $H(t,e,n,r,i){let o=Math.max(0,e)/i.w,s=Math.max(0,n)/i.h,a=Math.floor(o),c=Math.floor(s),u=Hm(t,a,c,r);return u&&{...u,fx:o-a,fy:s-c}}function E1(t,e,n,r){if((n==="M"||n==="m")&&e===""&&t.startsWith("<")){let[o=-1,s=0,a=0]=t.slice(1).split(";").map(Number),c=r?$H(o,s,a,n==="m",r):Hm(o,s-1,a-1,n==="m");return c?[c]:[]}if(n==="t"&&e===""){let[o,s=0,a=0]=t.split(";").map(Number),c=o===6?"cell":o===4?"window":o===8?"grid":void 0;return c?[{kind:"size",of:c,h:s,w:a}]:[]}if(n==="y"&&e==="$"&&t.startsWith("?")){let[o=0,s=0]=t.slice(1).split(";").map(Number);return[{kind:"mode",mode:o,value:s}]}if(n==="c"&&t.startsWith("?"))return[{kind:"attributes"}];let i=e===""?I1[`${t}${n}`]:void 0;return i?[us(i)]:[]}function kH(t,e,n,r){y1.lastIndex=e+1;let i=y1.exec(t);if(i)return{events:E1(i[1],"",i[2],r),end:e+1+i[0].length};k1.lastIndex=e+1;let o=k1.exec(t);if(!o){let d=t.slice(e+1);return!n&&(lH.test(d)||dH.test(d))?void 0:ls(e)}let[s,a="",c="",u=""]=o,l=e+1+s.length;if(a===""&&c===""&&u==="M")return wH(t,l,n);if(a==="200"&&u==="~"){let d=t.indexOf(nl,l);if(d===-1)return n?{events:[{kind:"paste",text:t.slice(l)}],end:t.length}:void 0;return{events:[{kind:"paste",text:t.slice(l,d)}],end:d+nl.length}}return{events:E1(a,c,u,r),end:l}}function yH(t){let e=hH.exec(t);if(e){let s=Number(e[3]??1);return[{kind:"size",of:"cell",h:Math.round(Number(e[1])*s),w:Math.round(Number(e[2])*s)}]}let n=mH.exec(t);if(n)return[{kind:"color",code:n[1],value:n[2]}];let[r="",i="",...o]=t.split(";");return[{kind:"osc",code:r,meta:gH(i),payload:o.join(";")}]}function vH(t,e,n){v1.lastIndex=e+1;let r=v1.exec(t),i=r?t[e+1+r[0].length]:void 0;if(i!==";"&&i!=="\x07"&&i!=="\x1B")return!n&&fH.test(t.slice(e+1))?void 0:ls(e);let o=[t.indexOf("\x07",e),t.indexOf("\x1B\\",e+2)].filter((a)=>a!==-1);if(o.length===0)return n?{events:[],end:t.length}:void 0;let s=Math.min(...o);return{events:yH(t.slice(e+2,s)),end:s+(t[s]==="\x07"?1:2)}}function SH(t,e,n){let r=t[e+2];if(r===void 0)return n?ls(e):void 0;if(!/^[A-Za-z]$/.test(r))return ls(e);let i=I1[r];return{events:i?[us(i)]:[],end:e+3}}function EH(t,e,n,r){let i=t[e+1];if(i===void 0)return n?ls(e):void 0;if(i==="[")return kH(t,e,n,r);if(i==="]")return vH(t,e,n);if(i==="O")return SH(t,e,n);if(i==="")return{events:[us("alt-backspace")],end:e+2};if(/^[a-z]$/.test(i))return{events:[us(`alt-${i}`)],end:e+2};return ls(e)}function M1(t,e=!1,n){let r=[],i=0;while(i<t.length){if(t[i]==="\x1B"){let a=EH(t,i,e,n);if(!a)return{events:r,rest:t.slice(i)};r.push(...a.events),i=a.end;continue}let o=String.fromCodePoint(t.codePointAt(i)),s=pH(o);if(s)r.push(us(s));i+=o.length}return{events:r,rest:""}}function MH(t){let e=t.indexOf($1);if(e===-1)return{bytes:t,carry:void 0};let n=[],r=0;while(e!==-1&&e+6<=t.length){n.push(t.subarray(r,e));let[i=0,o=0,s=0]=t.subarray(e+3,e+6);if(o>32&&s>32)n.push(Buffer.from(`\x1B[<${i-32};${o-32};${s-32}M`));r=e+6,e=t.indexOf($1,r)}return n.push(t.subarray(r,e===-1?t.length:e)),{bytes:Buffer.concat(n),carry:e===-1?void 0:t.subarray(e)}}function x1(t){return S1.lastIndex=1,t.startsWith(R1)||t.startsWith("\x1B]")&&S1.test(t)}function xH(t,e){let n=t.slice(-nl.length)+e;return t.startsWith(R1)?n.includes(nl):n.includes("\x07")||n.includes("\x1B\\")}class Cm{held="";timer;carry;pressed;wheeled;utf8=new oH("utf8");burst;cell;take;constructor(t,e=()=>!1,n=()=>{return}){this.burst=e,this.cell=n,this.take=(r)=>{let i=this.counted(r);if(i.length>0)t(i)}}counted(t){let e=iH.now();return t.filter((n)=>{if(n.kind!=="mouse")return!0;if(n.action==="wheel"){let o=n.wheel*(n.sideways?2:1),s=this.wheeled;if(s!==void 0&&s.way===o&&e-s.at<cH)return!1;return this.wheeled={at:e,way:o},!0}if(n.action==="release")n.count=this.pressed?.count??0;if(n.action!=="press"||!n.button)return!0;let r=this.pressed,i=r!==void 0&&r.button===n.button&&r.row===n.row&&Math.abs(r.col-n.col)<=1&&e-r.at<=aH;return n.count=i?r.count+1:1,this.pressed={at:e,button:n.button,row:n.row,col:n.col,count:n.count},!0})}feed(t){clearTimeout(this.timer);let e=typeof t==="string"?t:this.bytes(t);if(this.carry)this.wait(w1);if(!this.held&&!e.includes("\x1B")&&this.burst(e)){this.take([{kind:"paste",text:e}]);return}if(x1(this.held)&&!xH(this.held,e)){this.held+=e;return}let{events:n,rest:r}=M1(this.held+e,!1,this.cell());if(this.held=r,r&&!x1(r))this.wait(r.length===1?sH:w1);if(n.length>0)this.take(n)}bytes(t){let{bytes:e,carry:n}=MH(this.carry?Buffer.concat([this.carry,t]):t);return this.carry=n,this.utf8.write(e)}wait(t){clearTimeout(this.timer),this.timer=setTimeout(()=>this.flush(),t)}flush(){clearTimeout(this.timer),this.carry=void 0;let{events:t}=M1(this.held,!0,this.cell());if(this.held="",t.length>0)this.take(t)}stop(){clearTimeout(this.timer),this.held="",this.carry=void 0}}class Ra{window;grid;see(t){if(t.kind!=="size")return;if(t.of==="cell")return{w:t.w,h:t.h};if(t.of==="window")this.window=t;else this.grid=t;let e=this.window,n=this.grid;return e&&n&&n.h>0&&n.w>0?{h:Math.floor(e.h/n.h),w:Math.floor(e.w/n.w)}:void 0}}class Lm{known=!1;cell;see(t){if(t.kind==="mode"&&t.mode===1016)this.known=t.value===1||t.value===2;else if(t.kind==="size"&&t.of==="cell"&&t.w>0&&t.h>0)this.cell={w:t.w,h:t.h};else if(t.kind==="attributes")return{cell:this.known?this.cell:void 0};return}}var ol={on:"\x1B[?1049h",off:"\x1B[?1049l"},Rn={on:"\x1B[?25l",off:"\x1B[?25h"},Zr={on:"\x1B[?7l",off:"\x1B[?7h"},ir={on:"\x1B[?2004h",off:"\x1B[?2004l"},C1={on:"\x1B[?1004h",off:"\x1B[?1004l"},OH={on:"\x1B[?1000h\x1B[?1002h\x1B[?1006h",off:"\x1B[?1006l\x1B[?1002l\x1B[?1000l"},P1={on:"\x1B[?1016h",off:"\x1B[?1016l\x1B[?1006h"};function Qr(t=process.env){return t.TTHEME_MOUSE==="off"?[]:[OH]}var L1={SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGTERM:15},IH=3000;class Na extends Error{exit;constructor(t){super(t);this.exit=128+L1[t]}}var In=[],zi=new Map,Pa=new Map,N1;function A1(t){return In.findLast((e)=>e.input===t)}var T1;function F1(t){for(let e of[...In].reverse())e.abort(t);if(!T1)T1=setTimeout(()=>{j1(),process.exit(t instanceof Na?t.exit:1)},IH).unref()}var RH=Object.fromEntries(Object.keys(L1).map((t)=>[t,()=>F1(new Na(t))]));function j1(){for(let t of[...In].reverse())t.close()}function PH(){for(let t of In)t.reassert();In.at(-1)?.redraw()}function H1(t){let e=t?"on":"off";for(let[n,r]of Object.entries(RH))process[e](n,r);if(process[e]("uncaughtException",F1),process[e]("exit",j1),process.platform!=="win32")process[e]("SIGCONT",PH)}function il(){}class _1{input;output;failed;modes=[];assumed;owned=[];keys;tty;take;resized;queued=[];asking;reject=il;open=!0;aborted=!1;constructor(t={}){if(this.input=t.input??process.stdin,this.output=t.output??process.stdout,this.tty=this.output.isTTY===!0&&this.input.isTTY===!0,this.assumed=t.assume??[],this.keys=new Cm((r)=>this.deliver(r),t.burst,()=>zi.has(P1)?N1:void 0),this.failed=new Promise((r,i)=>{this.reject=i}),this.failed.catch(il),this.tty&&!In.some((r)=>r.tty))H1(!0);In.push(this);let e="";for(let r of this.assumed)if(!zi.has(r))e+=r.on;for(let r of t.modes??[])e+=this.claim(r);this.write(e);let n=Pa.get(this.input)??0;if(n===0)this.input.setRawMode?.(!0);Pa.set(this.input,n+1),this.input.on("data",this.received),this.input.resume(),this.output.on("resize",this.resizing),this.output.on("error",il)}hold(t){this.write(this.claim(t))}pixels(t){N1=t,this.hold(P1)}get cols(){return this.output.columns||80}get rows(){return this.output.rows||24}write(t){if(t&&this.open)this.output.write(t)}listen(t){this.take=t;let e=this.queued;if(this.queued=[],e.length>0)t(e)}onResize(t){this.resized=t}until(t){return Promise.race([t,this.failed])}loop(t,e=()=>{}){return this.until(new Promise((n)=>{let r=!1;this.listen((i)=>{for(let o of i){let s=r?void 0:t(o);if(s!==void 0)r=!0,n(s)}if(!r)e()})}))}ask(t,e,n,r=!0){return new Promise((i)=>{let o={hold:r,pick:(c)=>{let u=e(c);if(u===void 0)return!1;return s(u),!0}},s=(c)=>{if(clearTimeout(a),this.asking===o)this.asking=void 0;i(c),this.release()},a=setTimeout(()=>s(void 0),n);this.asking=o,this.write(t)})}abort(t){if(this.aborted)return;this.aborted=!0,this.keys.stop(),this.reject(t)}redraw(){this.resized?.()}reassert(){if(this.open)this.input.setRawMode?.(!0),this.write([...this.assumed,...this.owned].map((t)=>t.on).join(""))}close(){if(!this.open)return;this.keys.stop(),this.input.off("data",this.received),this.output.off("resize",this.resizing);let t="";for(let n of[...this.modes].reverse()){let r=(zi.get(n)??1)-1;if(r===0)zi.delete(n),t+=n.off;else zi.set(n,r)}this.write(t),this.open=!1;let e=(Pa.get(this.input)??1)-1;if(e===0)Pa.delete(this.input),this.input.setRawMode?.(!1),this.input.pause();else Pa.set(this.input,e);if(this.output.off("error",il),In.splice(In.indexOf(this),1),this.tty&&!In.some((n)=>n.tty))H1(!1)}received=(t)=>{if(A1(this.input)===this&&!this.aborted)this.keys.feed(t)};resizing=()=>{if(A1(this.input)===this)this.resized?.()};claim(t){this.modes.push(t);let e=zi.get(t)??0;if(zi.set(t,e+1),e>0)return"";return this.owned.push(t),t.on}deliver(t){let e=this.asking,n=e?t.filter((r)=>!e.pick(r)):t;if(n.length===0)return;if(!this.take||this.asking?.hold){this.queued.push(...n);return}this.take(n)}release(){if(this.take&&this.queued.length>0){let t=this.queued;this.queued=[],this.take(t)}}}async function Xr(t,e){let n=new _1(t);try{return await e(n)}finally{n.close()}}var NH=3;function Aa(t,e){return`${t}/${e}`}function B1(t){return lt(t.name)?de(t.name):t.name}function ds(t){return t.catalog!==void 0&&U1(t.group)?Aa(t.group,t.catalog):void 0}function Fm(t){if(t?.kind==="palette")return`palette ${t.entry.name}`;if(t?.kind==="group")return`group ${t.name}`;if(t?.kind==="catalog")return`catalog ${Aa(t.group,t.name)}`;return t?.kind??""}function sl(t,e){return Ei([t.name,t.group,t.native??"",t.catalog??"",...t.nativeNames??[],...Kc(t.booru)],e)}function G1(t,e,n){let r=n.trim(),i=[],o=new Set,s=(a)=>({kind:"palette",entry:a});for(let a of t){if(a.default||o.has(a.group))continue;o.add(a.group);let c=t.filter((f)=>!f.default&&f.group===a.group),u=r?c.filter((f)=>sl(f,r)):c;if(r&&u.length===0)continue;let l=r.length>0||e.has(a.group);if(i.push({kind:"group",name:a.group,native:a.native,lead:c.find((f)=>f.lead)??a,expanded:l,count:u.length}),!l)continue;let d=u.filter((f)=>ds(f)!==void 0);for(let f of new Set(d.map((h)=>h.catalog))){let h=d.filter((g)=>g.catalog===f),m=r.length>0||e.has(Aa(a.group,f));if(i.push({kind:"catalog",group:a.group,name:f,lead:h[0],expanded:m,count:h.length}),m)i.push(...h.map(s))}i.push(...u.filter((f)=>ds(f)===void 0).map(s))}return i}function AH(t,e){let n=e.trim(),r=new Set(t.filter((i)=>!i.default&&(n===""||sl(i,n))).map((i)=>i.group));return G1(t,new Set,"").filter((i)=>i.kind==="group"&&r.has(i.name))}function U1(t){return t.includes("@")}function jm(t,e,n,r,i=!0){let o=n-1;if(o<0)return t;let s;if(!Number.isFinite(e))s=e>0?o:0;else if(e>0)s=t>=o?i?0:o:Math.min(o,t+e);else s=t<=0?i?o:0:Math.max(0,t+e);return r(s)?s+Math.sign(e):s}function al(t,e){let n={home:Number.NEGATIVE_INFINITY,end:Number.POSITIVE_INFINITY,pgup:-e,pgdn:e};return t===void 0?void 0:n[t]}function TH(t){let e=t.findIndex((n)=>n.kind==="group"&&U1(n.name));return e>0&&t.slice(0,e).some((n)=>n.kind==="group")?[...t.slice(0,e),{kind:"rule"},...t.slice(e)]:t}function HH(t){let e=t.findIndex((n)=>n.kind==="palette");return e===-1?0:e}function cl(t){return t==="decode"||t==="glitch"?t:"typewriter"}function fs(t,e,n){return Vt({kind:"row",at:t,part:e},n)}class Ta{picked;scope;maxItems;named=[];series=[];color;onFocus;entries=[];seriesPad=0;namePad=0;expanded=new Set;rows=[];cursor=0;top=0;filter="";lastFocused="";constructor(t){this.picked=t.picked,this.scope=t.scope??"palette",this.maxItems=t.maxItems??12,this.color=t.color??!0,this.onFocus=t.onFocus,this.load(t.entries),this.rebuild("first")}load(t){this.entries=t,this.named=t.filter((e)=>!e.default),this.series=[...new Set(this.named.map((e)=>e.group))],this.seriesPad=Math.max(0,...this.series.map((e)=>e.length)),this.namePad=Math.max(0,...this.named.map((e)=>this.indent(e).length+B1(e).length))}indent(t){return ds(t)===void 0?" ":" "}setEntries(t){this.load(t),this.rebuild("stay")}setFilter(t){if(t!==this.filter)this.filter=t,this.rebuild("keep")}clear(){let t=this.rows[this.cursor];if(t?.kind==="palette"&&!t.entry.default){this.expanded.add(t.entry.group);let e=ds(t.entry);if(e!==void 0)this.expanded.add(e)}this.setFilter("")}focusedRow(){return this.rows[this.cursor]}refocus(){this.lastFocused="",this.sync()}members(t,e){let n=this.scope==="palette"?this.filter.trim():"";return this.named.filter((r)=>r.group===t&&(e===void 0||r.catalog===e)&&(n===""||sl(r,n)))}everyone(t){return t.flatMap((e)=>e.kind==="group"?this.members(e.name):[])}pick(){let t=this.rows[this.cursor],e=t?.kind==="palette"?[t.entry.name]:t?.kind==="group"?this.members(t.name).map((r)=>r.name):t?.kind==="catalog"?this.members(t.group,t.name).map((r)=>r.name):t?.kind==="all"?this.everyone(this.rows).map((r)=>r.name):[];if(e.length===0)return;let n=e.some((r)=>!this.picked.has(r));for(let r of e)if(n)this.picked.add(r);else this.picked.delete(r)}pickedIn(t,e){return this.members(t,e).filter((n)=>this.picked.has(n.name)).length}pickedCount(){if(this.scope==="palette")return this.named.filter((t)=>this.picked.has(t.name)).length;return this.series.filter((t)=>this.members(t).every((e)=>this.picked.has(e.name))).length}total(){return this.scope==="series"?this.series.length:this.named.length}matched(){let t=this.filter.trim();if(this.scope==="series")return this.rows.filter((e)=>e.kind==="group").length;return t?this.named.filter((e)=>sl(e,t)).length:this.named.length}sync(){let t=this.rows[this.cursor],e=t?.kind==="palette"?t.entry:t?.kind==="group"&&this.scope==="series"?t.lead:void 0;if(e&&e.name!==this.lastFocused)this.lastFocused=e.name,this.onFocus?.(e)}rebuild(t){let e=this.rows[this.cursor],n=this.scope==="series"?AH(this.entries,this.filter):G1(this.entries,this.expanded,this.filter);this.rows=n.length>0?TH([{kind:"all",count:this.allCount(n)},...n]):[];let r=n.length>0?this.rows.indexOf(n[HH(n)]):0;if(t==="first")this.cursor=r;else if(t==="keep"||t==="stay"){let i=Fm(e),o=e?.kind==="palette"||t==="stay"?this.rows.findIndex((s)=>Fm(s)===i):-1;this.cursor=o===-1?r:o}else if(this.cursor>=this.rows.length)this.cursor=Math.max(0,this.rows.length-1);this.sync()}allCount(t){return this.scope==="series"?t.length:this.everyone(t).length}move(t,e=!0){this.cursor=jm(this.cursor,t,this.rows.length,(n)=>this.rows[n]?.kind==="rule",e),this.sync()}point(t){let e=this.rows[t];if(!e||e.kind==="rule")return!1;return this.cursor=t,this.sync(),!0}flip(){let t=this.rows[this.cursor];if(t?.kind==="group"||t?.kind==="catalog")this.fold(!t.expanded)}foldable(){let t=this.rows[this.cursor];return(t?.kind==="group"||t?.kind==="catalog")&&this.scope==="palette"&&!this.filter}open(){if(this.foldable())this.flip();else this.pick()}toggle(t){if(this.expanded.has(t))this.expanded.delete(t);else this.expanded.add(t);this.rebuild("clamp")}climb(t,e){this.expanded.delete(t),this.rebuild("clamp"),this.reach(e)}reach(t){this.cursor=Math.max(0,this.rows.findIndex((e)=>Fm(e)===t)),this.sync()}fold(t){if(this.filter||this.scope==="series")return;let e=this.rows[this.cursor];if(e?.kind==="group"){if(t!==e.expanded)this.toggle(e.name)}else if(e?.kind==="catalog"){if(t!==e.expanded)this.toggle(Aa(e.group,e.name));else if(!t)this.reach(`group ${e.group}`)}else if(e?.kind==="palette"&&!t&&!e.entry.default){let n=ds(e.entry);if(n===void 0)this.climb(e.entry.group,`group ${e.entry.group}`);else this.climb(n,`catalog ${n}`)}}window(){if(this.cursor<this.top)this.top=this.cursor;if(this.cursor>=this.top+this.maxItems)this.top=this.cursor-this.maxItems+1;this.top=Math.min(this.top,Math.max(0,this.rows.length-this.maxItems));let t=this.rows.slice(this.top,this.top+this.maxItems);return{lines:t.map((e,n)=>this.renderRow(e,this.top+n)),above:this.top,below:this.rows.length-this.top-t.length}}renderRow(t,e){if(t.kind==="rule")return` ${this.color?`${C}${"── Markets ──────────"}${Lt}`:"── Markets ──────────"}`;return fs(e,"row",this.rowText(t,e))}rowText(t,e){let n=e===this.cursor,r=t.kind==="palette"?t.entry:t.kind==="all"?void 0:t.lead,i=this.color&&n&&r!==void 0,o=(v)=>this.color?`${C}${v}${$e}`:v,s=(v)=>this.color?`${ct}${v}${$e}`:v,a=(v)=>this.color?` ${Fg(Bc(v),i?qe(v.foreground):"\x1B[39m")}`:"",c=n?i?`${qe(r.cursor)}▌\x1B[39m `:"▌ ":" ",u=(v)=>i?`${c}${mc(r.selection,r.foreground)} ${v} ${Lt}`:`${c} ${v}`,l=(v)=>fs(e,"box",`${v?"●":"○"} `),d=(v)=>fs(e,"fold",`${v?"▾":"▸"} `);if(t.kind==="all")return u(`${l(this.everyone(this.rows).every((v)=>this.picked.has(v.name)))}Select all ${o(`(${t.count})`)}`);if(t.kind==="group"&&this.scope==="series"){let v=`(${t.count})${t.native?` ${t.native}`:""}`;return u(`${l(this.pickedIn(t.name)===t.count)}${s(t.name.padEnd(this.seriesPad))}${a(t.lead)}${this.color?" ":" "}${o(v)}`)}let f=this.rows[this.cursor],h=(v,S)=>this.color&&f?.kind==="palette"&&v?`${ct}${qe(f.entry.cursor)}${S}${$e}\x1B[39m`:s(S);if(t.kind==="group"){let v=h(f?.kind==="palette"&&f.entry.group===t.name,t.name),S=t.native?` ${o(t.native)}`:"";return u(`${d(t.expanded)}${v} ${o(`(${this.pickedIn(t.name)}/${t.count})`)}${S}`)}if(t.kind==="catalog"){let v=f?.kind==="palette"&&ds(f.entry)===Aa(t.group,t.name),S=o(`(${this.pickedIn(t.group,t.name)}/${t.count})`);return u(` ${d(t.expanded)}${h(v,t.name)} ${S}`)}let m=t.entry,g=this.indent(m),b=B1(m),w=this.color?b.padEnd(this.namePad-g.length):b,k=n?s(w):w;return u(`${g}${l(this.picked.has(m.name))}${k}${a(m)}`)}}function _m(t){let e=t.named[Math.floor(Math.random()*t.named.length)],n=t.series[Math.floor(Math.random()*t.series.length)];return e&&n?`${e.name} | ${n}`:""}class ul{fx;make;redraw;roller;example="";step=0;seed=0;timer;constructor(t,e,n){this.fx=t,this.make=e,this.redraw=n,this.roll(),this.roller=setInterval(()=>{this.roll(),this.step=8,this.redraw()},3000),this.roller.unref?.()}stop(){clearInterval(this.roller),clearTimeout(this.timer)}roll(){let t=this.make();this.example=t.length>30?`${t.slice(0,29)}…`:t,this.seed=Math.floor(Math.random()*997)}text(){if(this.step===0)return this.example;if(!this.timer)this.timer=setTimeout(()=>{this.timer=void 0,this.step-=1,this.redraw()},60),this.timer.unref?.();let t=Math.floor(this.example.length*(8-this.step)/8);if(this.fx==="typewriter")return`${this.example.slice(0,t)}▏`;let e=this.fx==="decode"?"abcdefghijklmnopqrstuvwxyz":"▓▒░#*+=<>?/-_",n=this.fx==="decode"?(r)=>!/[a-z0-9]/i.test(r):(r)=>r===" ";return[...this.example].map((r,i)=>i+(i*7+this.seed)%3<t||n(r)?r:e[Math.floor(Math.random()*e.length)]??r).join("")}}var CH=5;class Bm{picked;list;scope;color;required;most;hint;field=new Vr;input;output;state="active";error="";redraw=()=>{};constructor(t){this.scope=t.scope??"palette",this.picked=new Set(t.installed??[]),this.color=t.color??!0,this.required=t.required??!1,this.most=t.maxItems??12,this.input=t.input,this.output=t.output,this.list=new Ta({entries:t.entries,picked:this.picked,scope:this.scope,maxItems:this.most,color:this.color,...t.onFocus?{onFocus:t.onFocus}:{}}),this.hint=new ul(t.fx??"typewriter",()=>_m(this.list),()=>this.redraw())}prompt(){return Xr({input:this.input,output:this.output,modes:[Rn,ir]},async(t)=>{let e=new dm((r)=>t.write(r),()=>t.cols),n=()=>{return this.list.maxItems=Math.max(NH,Math.min(this.most,t.rows-CH)),this.draw()};this.redraw=()=>e.draw(n()),t.onResize(()=>e.redraw(n())),this.redraw();try{let r=await t.loop((i)=>{return this.take(i),this.state==="submit"||this.state==="cancel"?this.state:void 0},()=>this.redraw());return this.redraw=()=>{},e.end(this.draw()),r}finally{this.hint.stop()}})}take(t){if(t.kind==="paste"){this.field.paste(t.text),this.list.setFilter(this.field.value);return}if(t.kind!=="key")return;let e=t.key;if(this.state==="error")this.state="active";let n=al(e,this.list.maxItems);if(e==="esc"||e==="ctrl-c")this.state="cancel";else if(e==="enter")if(this.required&&this.picked.size===0)this.error=`Pick at least one ${this.scope}`,this.state="error";else this.state="submit";else if(e==="up"||e==="down")this.list.move(e==="up"?-1:1);else if(e==="left"||e==="right")this.list.fold(e==="right");else if(n!==void 0)this.list.move(n);else if(e===" ")this.list.pick();else if(this.field.key(e))this.list.setFilter(this.field.value)}draw(){let t=(m)=>this.color?`${C}${m}${Lt}`:m,e=(m)=>this.color?`${pc}${m}${Lt}`:m,n=this.scope==="series"?"Series":"Catalog";if(this.state==="submit")return[`${t("◇")} ${n} ${t(`· ${this.list.pickedCount()} picked`)}`];if(this.state==="cancel")return[`${t(`◇ ${n} · cancelled`)}`];let r=this.field.value,i=`${e("◆")} ${n} ${t(`(${this.list.matched()}/${this.list.total()} · ${this.list.pickedCount()} picked)`)}`,o=this.hint.text(),s=`${e("│")} ${r?`${r}_`:t(`Search…${o?` e.g. ${o}`:""}`)}`,{lines:a,below:c}=this.list.window(),u=a.length>0?a.map((m)=>`${e("│")} ${m}`):[`${e("│")} ${t(`No ${this.scope==="series"?"series":"palettes"} match '${r}'`)}`];while(u.length<this.list.maxItems)u.push(e("│"));let l=c>0?`${e("│")} ${t(`↓ ${c} more`)}`:e("│"),d=this.scope==="series"?"":" · ←→ fold",f=this.scope==="series"?"continue":"install",h=this.state==="error"?`${e("└")} ${this.color?`${ne}${this.error}${Lt}`:this.error}`:`${e("└")} ${t(`↑↓ move${d} · space pick · type to filter · enter ${f} · esc cancel`)}`;return[i,s,...u,l,h]}}var hs=[{tab:"catalog",title:"Catalog",heading:"Discover palettes"},{tab:"installed",title:"Installed",heading:"Installed palettes"},{tab:"markets",title:"Markets",heading:"Manage markets"},{tab:"errors",title:"Errors",heading:"Problems"}],Gm=34,LH=72,FH=94,jH=22,W1=40,K1=10,z1=3,_H=600,BH=500,GH=300,D1=12,UH="\x1B[7;1m",Um={title:"",lines:[],brief:""};function Ha(t){let e=t.trim();if(e!==q&&!e.includes("/")&&!e.startsWith("~"))return;try{return Ar(e)}catch{return}}function WH(t){return t.charAt(0).toUpperCase()+t.slice(1)}class Wm{picked;tab="catalog";fields={catalog:new Vr,installed:new Vr,markets:new Vr,errors:new Vr};cursor={markets:0,errors:0};top={markets:0,errors:0};adds=new Map;removes=new Set;want=new Map;scope={catalog:void 0,installed:void 0};busy=new Map;failed=new Map;peeked=new Map;peekFailed=new Map;staging=new Set;timers=new Map;refreshed=[];inflight=new Set;markets;problems;kept;installed;startup;io;order;color;hub;owns;input;output;maxItems=12;paint;catalog;mine;hint;screen;state="active";phase="browse";offset=0;started=!1;log=[];working="";stopped;beat=0;asking;leaving;goto;repos;searching=!1;searchError;searched;asked=0;help=!1;worn;live;constructor(t){this.markets=t.markets,this.problems=t.problems,this.kept=t.kept,this.installed=new Set(t.installed),this.startup=t.startup,this.io=t.io,this.order=t.order??((n)=>n),this.color=t.color??!0,this.hub=t.hub,this.owns=t.owns??!1,this.input=t.input,this.output=t.output,this.live=t.lookups??!0,this.paint=t.onFocus,this.picked=new Set(t.installed);let e=this.entries();this.catalog=new Ta({entries:e,picked:this.picked,color:this.color,maxItems:this.maxItems,onFocus:(n)=>this.focus("catalog",n)}),this.mine=new Ta({entries:this.mineOf(e),picked:this.picked,color:this.color,maxItems:this.maxItems,onFocus:(n)=>this.focus("installed",n)}),this.hint=new ul(t.fx??"typewriter",()=>_m(this.tab==="installed"?this.mine:this.catalog),()=>this.redraw());for(let n of t.due)this.update(n)}run(){let t=[...this.owns?[ol,Rn,Zr]:[],ir,...Qr()],e=this.owns?[]:[Rn,Zr];return Xr({input:this.input,output:this.output,modes:t,assume:e},async(n)=>{let r=new Bi({write:(i)=>n.write(i),view:()=>this.state==="active"?{lines:this.view(),ticking:this.phase==="applying"}:void 0,beat:()=>{this.beat+=1}});this.screen=r,n.onResize(()=>{r.reset(),r.request()}),r.now();try{return await n.loop((i)=>{if(i.kind==="key")this.key(i.key);else if(i.kind==="paste")this.pasted(i.text);else if(i.kind==="mouse")this.mouse(i,r);return this.state==="active"?void 0:this.state},()=>r.soon())}finally{r.stop(),this.screen=void 0,this.hint.stop();for(let i of this.timers.values())clearTimeout(i);this.timers.clear()}})}applied(){return this.started}lines(){return this.log}failure(){return this.stopped}next(){return this.goto}async idle(){await Promise.allSettled([...this.inflight])}result(){let t=new Set(this.entries().map((e)=>e.name));return{picked:new Set([...this.picked].filter((e)=>t.has(e))),adds:[...this.adds.values()],removes:[...this.removes],auto:Object.fromEntries(this.want),refreshed:this.refreshed}}key(t){if(t==="ctrl-c"){this.state="cancel";return}if(this.help){if(t==="?"||t==="esc")this.help=!1;return}if(this.leaving!==void 0){if(t==="esc")this.leaving=void 0;else if(/^[yn]$/i.test(t)){if(t.toLowerCase()==="y")this.begin();else this.goto=this.leaving,this.state="cancel";this.leaving=void 0}return}if(this.asking){if(t==="esc")this.asking=void 0;else if(/^[yn]$/i.test(t))this.answer(t.toLowerCase()==="y");return}if(this.phase!=="browse"){this.steer(t);return}let e=al(t,this.maxItems),n=this.list();if(t==="enter")if(n?.foldable())n.flip();else if(this.dirty())this.phase="review",this.offset=0;else this.state="submit";else if((t==="esc"||t==="ctrl-u")&&this.fields[this.tab].value)this.clear();else if(t==="esc")this.state="cancel";else if(t==="?")this.help=!0;else if(e!==void 0)this.move(e);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="left"||t==="right")this.side(t==="right");else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(I$(this.hub,t==="tab"?1:-1))}else if(t==="shift-left"||t==="shift-right")this.switchTab(t==="shift-right"?1:-1);else if(t===" ")this.activate();else if(t==="ctrl-r"){let r=this.tab==="markets"?this.marketRow():void 0;if(r?.kind==="market"&&!this.adds.has(r.market.source))this.update(r.market.source);else if(r?.kind==="find")this.search()}else if(t==="ctrl-s")this.cycle();else if(this.fields[this.tab].key(t))this.typed()}pasted(t){if(this.phase==="browse"&&!this.help&&!this.asking&&this.leaving===void 0)this.fields[this.tab].paste(t),this.typed()}mouse(t,e){if(this.help){if(t.action==="release")this.help=!1;return}let n=e.point(t),r=n?.target,i=this.phase==="browse"&&this.leaving===void 0&&!this.asking;if(t.action==="wheel"){if(!t.sideways&&(i||this.phase!=="browse"))this.wheel(t.wheel);return}if(!r)return;if(t.action==="press"&&t.button==="left"){if(!i)return;if(r.kind==="tab")this.show(r.tab);else if(r.kind==="chip")this.scopeTo(r.source);else if(r.kind==="row")this.pointRow(r.at)}else if(t.action==="release"&&n?.inside){if(r.kind==="key")this.key(r.key);else if(r.kind==="page"){if(this.phase!=="browse")this.scroll(r.step*this.span());else if(i)this.move(r.step*this.maxItems)}else if(r.kind==="hub"){if(i&&this.hub&&r.tab!==this.hub)this.leave(R$(r.tab))}else if(r.kind==="row"&&i)this.openRow(r,t.count)}}wheel(t){if(this.phase!=="browse"){this.scroll(t);return}let e=this.list();if(e)e.move(t,!1);else this.move(t,!1)}pointRow(t){let e=this.list();if(e){e.point(t);return}this.cursor[this.tab==="markets"?"markets":"errors"]=t,this.watch()}openRow(t,e){let n=this.list();if(n){if(t.part==="box")n.pick();else if(t.part==="fold")n.flip();else if(e===2)n.open()}else if(t.part==="box"||e===2)this.activate()}typed(){let t=this.fields[this.tab].value;if(this.list()?.setFilter(t),this.tab==="markets")this.later("search",_H,()=>this.lookup()),this.watch()}clear(){this.fields[this.tab].value="";let t=this.list();if(t)t.clear();else this.typed()}redraw(){if(this.state==="active")this.screen?.request()}focus(t,e){if(this.tab===t&&this.state!=="submit"&&this.state!=="cancel")this.worn=e,this.paint?.(e)}track(t){this.inflight.add(t);let e=()=>this.inflight.delete(t);return t.then(e,e),t}list(){return this.tab==="catalog"?this.catalog:this.tab==="installed"?this.mine:void 0}active(){return[...this.markets.filter((t)=>!this.removes.has(t.source)),...this.adds.values()]}entries(){let t=this.active().flatMap((i)=>i.entries),e=new Set(t.map((i)=>i.name)),n=new Map,r=this.markets.filter((i)=>this.removes.has(i.source)).flatMap((i)=>i.entries);for(let i of[...this.kept,...r])if(this.installed.has(i.name)&&!e.has(i.name))n.set(i.name,i);return this.order([...t,...n.values()])}mineOf(t){return t.filter((e)=>this.installed.has(e.name))}scoped(t,e){let n=this.scope[e],r=n===void 0?void 0:this.active().find((o)=>o.source===n);if(!r)return this.scope[e]=void 0,t;let i=new Set(r.entries.map((o)=>o.name));return t.filter((o)=>i.has(o.name))}reload(){let t=this.entries();this.catalog.setEntries(this.scoped(t,"catalog")),this.mine.setEntries(this.scoped(this.mineOf(t),"installed"))}chips(t){let e=t==="catalog"?this.entries():this.mineOf(this.entries()),n=this.active().map((r)=>({source:r.source,label:r.id,count:r.entries.filter((i)=>!i.default&&(t==="catalog"||this.installed.has(i.name))).length})).filter((r)=>t==="catalog"||r.count>0||r.source===this.scope[t]);return[{source:void 0,label:"All",count:e.filter((r)=>!r.default).length},...n]}cycle(){let t=this.tab;if(t!=="catalog"&&t!=="installed"||this.active().length<2)return;let e=this.chips(t),n=Math.max(0,e.findIndex((r)=>r.source===this.scope[t]));this.scopeTo(e[(n+1)%e.length]?.source)}scopeTo(t){let e=this.tab;if(e!=="catalog"&&e!=="installed")return;this.scope[e]=t,this.reload(),this.list()?.refocus()}switchTab(t){let e=hs.findIndex((n)=>n.tab===this.tab);this.show(hs[(e+t+hs.length)%hs.length]?.tab??"catalog")}show(t){if(this.tab=t,this.list()?.refocus(),t==="markets")this.lookup(),this.watch()}move(t,e=!0){let n=this.list();if(n){n.move(t,e);return}let r=this.tab==="markets"?"markets":"errors",i=r==="markets"?this.marketRows().map((o)=>o.kind==="rule"):this.problemRows().map(()=>!1);this.cursor[r]=jm(this.cursor[r],t,i.length,(o)=>i[o]===!0,e),this.watch()}side(t){let e=this.list();if(e){e.fold(t);return}let n=this.tab==="markets"?this.marketRow():void 0;if(n?.kind==="market"&&!ut(n.market.source))if(t===n.market.auto)this.want.delete(n.market.source);else this.want.set(n.market.source,t)}activate(){let t=this.list();if(t){t.pick();return}let e=this.tab==="markets"?this.marketRow():void 0;if(e?.kind==="market")this.toggleMarket(e.market);else if(e?.kind==="add")this.load(e.source,!0);else if(e?.kind==="repo"){let n=this.known(e.source),r=this.marketRows().findIndex((i)=>i.kind==="market"&&i.market===n);if(n&&r>=0)this.cursor.markets=r;else if(!n)this.load(e.source,!0)}else if(e?.kind==="find")this.search()}toggleMarket(t){if(this.adds.has(t.source))this.adds.delete(t.source),this.want.delete(t.source);else if(this.removes.has(t.source))this.removes.delete(t.source);else this.removes.add(t.source);this.reload()}known(t){return[...this.markets,...this.adds.values()].find((e)=>_o(e.source,t))}load(t,e){let n=this.peeked.get(t);if(n){if(e)this.arrive(t,n);return}if(e)this.staging.add(t);if(this.busy.has(t))return;this.failed.delete(t),this.peekFailed.delete(t),this.busy.set(t,"Fetching…"),this.track(this.io.fetch(t)).then((r)=>{if(this.busy.delete(t),this.peeked.set(t,r),this.staging.delete(t))this.arrive(t,r);this.redraw()},(r)=>{if(this.busy.delete(t),this.staging.delete(t))this.failed.set(t,r.message);else this.peekFailed.set(t,r.message);this.redraw()})}arrive(t,e){let n=this.active().find((r)=>r.id===e.id);if(n)this.failed.set(t,`${e.id} already names the market at ${n.shown}`);else if(ut(t)||t===q)this.stage(e,e.auto);else this.asking=e;this.redraw()}later(t,e,n){this.cancel(t),this.timers.set(t,setTimeout(()=>{if(this.timers.delete(t),this.state!=="submit"&&this.state!=="cancel")n()},e))}cancel(t){clearTimeout(this.timers.get(t)),this.timers.delete(t)}wants(t){return!this.known(t)&&!this.peeked.has(t)&&!this.busy.has(t)&&!this.peekFailed.has(t)}watch(){if(!this.live||this.tab!=="markets")return;let t=Ha(this.fields.markets.value);if(t&&this.wants(t))this.later("typed",BH,()=>this.load(t,!1));else this.cancel("typed");let e=this.marketRow();if(e?.kind==="repo"&&this.wants(e.source)){let n=e.source;this.later("focus",GH,()=>{let r=this.marketRow();if(this.tab==="markets"&&r?.kind==="repo"&&r.source===n)this.load(n,!1)})}else this.cancel("focus")}answer(t){let e=this.asking;if(this.asking=void 0,e)this.stage(e,t)}stage(t,e){if(this.adds.set(t.source,t),e===t.auto)this.want.delete(t.source);else this.want.set(t.source,e);this.reload(),this.cursor.markets=Math.max(0,this.marketRows().findIndex((n)=>n.kind==="market"&&n.market.source===t.source))}update(t){if(this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Updating…"),this.track(this.io.refresh(t)).then(({market:e,refreshed:n})=>{this.busy.delete(t),this.markets=this.markets.map((r)=>r.source===t?e:r),this.problems=this.problems.filter((r)=>r.source!==t),this.refreshed.push(n),this.reload(),this.redraw()},(e)=>{this.busy.delete(t),this.failed.set(t,`Update failed: ${e.message}`),this.redraw()})}wanted(){let t=this.fields.markets.value.trim();return t&&!Ha(t)?t:""}lookup(){if(this.live&&this.searched!==this.wanted())this.search()}search(){let t=this.wanted(),e=++this.asked;this.searched=t,this.searching=!0,this.searchError=void 0,this.track(this.io.search(t||void 0)).then((n)=>{if(e===this.asked)this.searching=!1,this.repos=n,this.watch(),this.redraw()},(n)=>{if(e===this.asked)this.searching=!1,this.searchError=n.message,this.redraw()})}marketRows(){let t=(...o)=>Ei(o,this.fields.markets.value),e=[...this.markets,...this.adds.values()],n=e.filter((o)=>t(o.id,o.shown,o.source)).map((o)=>({kind:"market",market:o})),r=Ha(this.fields.markets.value);if(r&&!e.some((o)=>_o(o.source,r)))n.push({kind:"add",source:r});let i=(this.repos??[]).map((o)=>({repo:o,source:Am(o)})).filter(({repo:o,source:s})=>t(s,o.description??""));return n.push({kind:"rule"},...i.length>0?i.map(({repo:o,source:s})=>({kind:"repo",repo:o,source:s})):[{kind:"find"}]),n}marketRow(){let t=this.marketRows();return t[this.at(t,"markets",(e)=>e?.kind==="rule")]}problemList(){let t=new Map([...this.markets,...this.adds.values()].map((e)=>[e.source,e.id]));return[...this.problems.filter((e)=>!(e.update&&e.source&&this.failed.has(e.source))),...[...this.failed].map(([e,n])=>({where:t.get(e)??e,message:n,source:e}))]}problemRows(){return this.problemList().filter((t)=>Ei([`${t.where} ${t.message}`],this.fields.errors.value))}at(t,e,n=()=>!1){let r=Math.min(this.cursor[e],Math.max(0,t.length-1));if(!n(t[r]))return r;return r>0?r-1:r+1}windowOf(t,e,n,r=()=>!1){let i=this.at(t,e,r);this.cursor[e]=i;let o=(l)=>r(t[l])?1:2,s=(l,d)=>{let f=0;for(let h=l;h<=d;h++)f+=o(h);return f},a=Math.min(this.top[e],i);while(a<i&&s(a,i)>this.maxItems)a+=1;while(a>0&&s(a-1,t.length-1)<=this.maxItems)a-=1;this.top[e]=a;let c=[],u=0;for(let l=a;l<t.length&&u+o(l)<=this.maxItems;l++)c.push(l),u+=o(l);return{lines:c.flatMap((l)=>{let d=n(t[l],l===i,l);return r(t[l])?d:d.map((f)=>fs(l,"row",f))}),above:a,below:t.length-a-c.length}}dim(t){return this.color?`${C}${t}${$e}`:t}bold(t){return this.color?`${ct}${t}${$e}`:t}warn(t){return this.color?`${ne}${t}\x1B[39m`:t}lit(t,e,n){if(e&&this.color&&t)return`${qe(t.cursor)}▌\x1B[39m ${mc(t.selection,t.foreground)} ${n} ${Lt}`;return`${e?"▌ ":" "} ${n}`}status(t){return this.adds.has(t.source)?"Will add":this.removes.has(t.source)?"Will remove":this.busy.get(t.source)??(this.failed.has(t.source)||t.status.startsWith("update failed")?"Update failed":"")}note(t){return` ${this.dim(t)}`}peeking(t){let e=this.peeked.get(t);return e?Tt(e.entries.filter((n)=>!n.default).length):""}marketLine(t,e,n){let r=(o)=>fs(n,"box",`${o} `);if(t.kind==="rule")return[` ${this.dim(`── On GitHub${this.searching?" · searching…":""} ──────────`)}`];if(t.kind==="market"){let o=t.market,s=this.status(o),a=e?this.bold(o.id):o.id,c=o.entries.filter((l)=>!l.default),u=!ut(o.source)&&(this.want.get(o.source)??o.auto)?` ${this.dim("↻ auto-update")}`:"";return[this.lit(o.entries.find((l)=>!l.default),e,`${r(this.removes.has(o.source)?"○":"●")}${a}${u}${s?` ${this.dim(s)}`:""}`),this.note([o.source===q?"The ttheme catalog":ut(o.source)?o.shown:o.source,Tt(c.length),`${c.filter((l)=>this.installed.has(l.name)).length} installed`,o.status].join(" · "))]}if(t.kind==="add"){let o=this.busy.get(t.source),s=this.failed.get(t.source)??this.peekFailed.get(t.source),a=this.peeked.get(t.source);return[this.lit(void 0,e,`${r("+")}Add ${nt(t.source)}${o?` ${this.dim(o)}`:""}`),s?` ${this.warn(s)}`:this.note(a?`${a.id} · ${this.peeking(t.source)}`:this.live?"Fetching its palettes…":"space fetches its palettes")]}if(t.kind==="find"){let o=this.fields.markets.value.trim(),s=o&&!Ha(o),a=!this.searching&&!this.searchError&&this.repos===void 0,c=this.searching?"Searching GitHub…":this.searchError?"GitHub search failed":a?s?`Find "${o}" on GitHub`:"Find markets on GitHub":s?`No market on GitHub matches "${o}"`:"No market on GitHub yet";return[this.lit(void 0,e,`${r("⌕")}${c}`),this.note(this.searchError??(this.searching?"":a?"space searches GitHub":"space searches again"))]}let i=this.busy.get(t.source);return[this.lit(void 0,e,`${r(this.known(t.source)?"●":"○")}${t.source} ${this.dim(`★${t.repo.stargazers_count}`)}${i?` ${this.dim(i)}`:""}`),this.note([this.peeking(t.source),t.repo.description??""].filter(Boolean).join(" · "))]}problemLine(t,e){return[this.lit(void 0,e,`${this.warn("✗")} ${t.where}`),this.note(t.message)]}body(){let t=this.list();if(t){let n=this.fields[this.tab].value;return{...t.window(),empty:n?`No palettes match '${n}'`:this.tab==="installed"?"Nothing installed yet":"No palettes"}}if(this.tab==="markets")return{...this.windowOf(this.marketRows(),"markets",(n,r,i)=>this.marketLine(n,r,i),(n)=>n?.kind==="rule"),empty:""};let e=this.fields.errors.value;return{...this.windowOf(this.problemRows(),"errors",(n,r)=>this.problemLine(n,r)),empty:e?`No problems match '${e}'`:"No problems"}}changes(){return this.adds.size+this.removes.size+this.want.size}dirty(){let{picked:t}=this.result();return this.changes()>0||t.size!==this.installed.size||[...t].some((e)=>!this.installed.has(e))}leave(t){if(this.dirty()){this.leaving=t;return}this.goto=t,this.state="cancel"}steer(t){if(this.phase==="review"){if(t==="enter")this.begin();else if(t==="esc")this.phase="browse"}else if(this.phase==="done"&&(t==="enter"||t==="esc"))this.state="submit";let e=t==="up"?-1:t==="down"?1:al(t,this.span());if(e!==void 0)this.scroll(e)}scroll(t){this.offset=Number.isFinite(t)?Math.max(0,this.offset+t):t>0?Number.MAX_SAFE_INTEGER:0,this.redraw()}span(){return Math.max(z1,this.rows()-(this.hub?1:0)-4)}begin(){this.phase="applying",this.started=!0,this.offset=0,this.log=[],this.working="";let t={say:(e)=>{this.log.push(...e.split(`
657
- `)),this.redraw()},status:(e)=>{this.working=e,this.redraw()}};this.track(this.io.apply(this.result(),t)).then(()=>this.ended(),(e)=>this.ended(e))}ended(t){this.working="",this.stopped=t,this.phase="done",this.offset=0,this.redraw()}pending(){let t=this.entries().filter((e)=>!e.default);return{names:t.filter((e)=>this.picked.has(e.name)&&!this.installed.has(e.name)),dropped:t.filter((e)=>this.installed.has(e.name)&&!this.picked.has(e.name))}}marketChanges(){let t=[];for(let e of this.adds.values()){let n=e.source!==q&&(this.want.get(e.source)??e.auto)?"updates on its own":"";t.push(`+ ${e.id} ${this.dim([e.source===q?"The ttheme catalog":e.shown,Tt(e.entries.filter((r)=>!r.default).length),n].filter(Boolean).join(" · "))}`)}for(let e of this.removes){let n=this.markets.find((i)=>i.source===e),r=(n?.entries??[]).filter((i)=>!i.default&&this.installed.has(i.name)&&this.picked.has(i.name));t.push(`- ${n?.id??e} ${this.dim([n?.shown??nt(e),r.length>0?`its ${Tt(r.length)} installed keep working`:""].filter(Boolean).join(" · "))}`)}for(let[e,n]of this.want){let r=this.markets.find((i)=>i.source===e);if(r&&!this.removes.has(e))t.push(`↻ ${r.id} ${this.dim(n?"updates on its own from now":"stops updating on its own")}`)}return t}reviewLines(){let t=this.marketChanges(),{names:e,dropped:n}=this.pending(),r=Math.max(0,...[...e,...n].map((s)=>s.name.length)),i=(s,a)=>` ${s} ${a.name.padEnd(r)} ${this.dim(lt(a.name)?a.catalog??"":a.group)}`,o=[e.length>0?`${e.length} to install`:"",n.length>0?`${n.length} to remove`:""].filter(Boolean);return[...t.length>0?[` ${this.bold("Markets")} ${this.dim(`(${t.length})`)}`,...t.map((s)=>` ${s}`),""]:[],...o.length>0?[` ${this.bold("Palettes")} ${this.dim(`(${o.join(" · ")})`)}`,...e.map((s)=>i("+",s)),...n.map((s)=>i("-",s))]:[]]}summary(){let{names:t,dropped:e}=this.pending(),n=this.adds.size;return[n>0?`${n} market${n===1?"":"s"} added`:"",this.removes.size>0?`${this.removes.size} removed`:"",t.length>0?`${t.length} installed`:"",e.length>0?`${e.length} removed`:""].filter(Boolean).join(" · ")}progressLines(){let t=this.log.map((e)=>` ${e}`);if(this.phase==="applying"){let e=jn[this.beat%jn.length];t.push(` ${this.dim(`${e} ${this.working||"Working…"}`)}`)}else if(this.stopped)t.push("",...bt(this.stopped.message,Math.max(20,this.columns()-6)).map((e,n)=>` ${n===0?this.warn("✗"):" "} ${e}`));return t}frame(t,e){let n=t-1,r=this.phase==="review",i=r?this.reviewLines():this.progressLines(),o=this.phase==="review"?`${this.bold("Review changes")}`:this.phase==="applying"?this.bold("Applying changes"):this.stopped?`${this.warn("✗")} ${this.bold("Stopped")}`:`${this.bold("✓ Applied")} ${this.dim(this.summary()?`(${this.summary()})`:"")}`,s=this.span(),a=Math.max(0,i.length-s),c=this.phase==="applying"?a:Math.min(this.offset,a);this.offset=c;let u=i.slice(c,c+s),l=i.length-c-u.length,d=[c>0?` ${this.more(-1,`↑ ${c} more`)}`:"",...u];while(d.length<s+1)d.push("");d.push(l>0?` ${this.more(1,`↓ ${l} more`)}`:"");let f=a>0?[["↑↓","scroll"]]:[],h=r?{badge:"BROWSE (APPLY)",keys:[...f,["enter","apply"]],right:["esc","back"]}:this.phase==="applying"?{badge:"BROWSE (APPLY)",note:"Keys wait until it ends",keys:[]}:{badge:"BROWSE (APPLY)",keys:f,right:["enter","close"]};return[...this.hub?[rt(Vf(this.hub,this.color),n,!1)]:[],rt(` ${o}`,n,!1),...d.map((m)=>rt(m,n,!1)),` ${this.keyBar(h,n-1)}`].slice(0,e).join(`
658
- `)}keyBar(t,e){let n=this.color&&this.worn?qe(this.worn.cursor):"",r=this.color?`\x1B[7;1m${n} ${t.badge} ${Lt} `:`[${t.badge}] `,i=([c,u])=>Wt(c.split(" ")[0]??"",`${this.bold(c)} ${this.dim(u)}`),{note:o,keys:s,right:a}=t;for(;;){let c=`${r}${[t.lead??"",o?this.dim(o):"",...s.map(i)].filter(Boolean).join(" ")}`,u=a?i(a):"";if(_(c)+(a?3+_(u):0)<=e)return a?yt(c,u,e):rt(c,e,!1);if(o)o=void 0;else if(s.length>2||!a&&s.length>1){let l=s.length-2;s=s.filter((d,f)=>f!==l)}else if(a)a=void 0;else return rt(c,e,!1)}}more(t,e){return this.dim(Vt({kind:"page",step:t},e))}counts(){let t=[...this.busy.values()].includes("Updating…")?"Updating… · ":"",e=this.list();if(e)return`${t}${e.matched()}/${e.total()} · ${e.pickedCount()} picked`;if(this.tab==="markets"){let n=this.markets.length+this.adds.size,r=this.marketRows().filter((o)=>o.kind==="market").length,i=this.changes();return`${t}${r}/${n}${i>0?` · ${i} to apply`:""}`}return`${this.problemRows().length}/${this.problemList().length}`}searchText(){let t=this.fields[this.tab].value;if(t)return`${t}_`;if(this.tab==="markets")return this.dim("Search… or add one: owner/repo");let e=this.tab==="errors"?"":this.hint.text();return this.dim(`Search…${e?` e.g. ${e}`:""}`)}tabBar(){return hs.map(({tab:t,title:e})=>{let n=t==="errors"?this.problemList().length:0,r=n>0?`${e} ${n}`:e,i={kind:"tab",tab:t};if(!this.color)return Vt(i,t===this.tab?`[${r}]`:` ${r} `);return`${t===this.tab?UH:C}${Vt(i,` ${r} `)}${Lt}`}).join(" ")}heading(){let t=hs.find((e)=>e.tab===this.tab)?.heading??"";return`${this.bold(t)} ${this.dim(`(${this.counts()})`)}`}searchBox(t){let e=(r,i)=>this.dim(`${r}${"─".repeat(t-2)}${i}`),n=this.dim("│");return[e("╭","╮"),`${n} ${rt(`${this.dim("⌕")} ${this.searchText()}`,t-4)} ${n}`,e("╰","╯")]}strip(t){let e=this.tab;if(e!=="catalog"&&e!=="installed"||this.active().length<2)return;let n=this.chips(e),r=Math.max(0,n.findIndex((b)=>b.source===this.scope[e])),i=n.map((b,w)=>w===r&&!this.color?`[${b.label} ${b.count}]`:`${b.label} ${b.count}`),o=" · ",s=(b)=>b>0?`${o}+${b} more`.length:0,a=(b)=>{let w=b>0?2:0,k=0;for(let v=b;v<i.length;v++){let S=w+(k>0?o.length:0)+i[v].length;if(S+s(i.length-v-1)>t)break;w=S,k+=1}return k},c=0;while(c<r&&c+a(c)<=r)c+=1;let u=Math.max(1,a(c)),l=i.slice(c,c+u),d=i.length-c-u,f=l.map((b,w)=>{let k=Vt({kind:"chip",source:n[c+w]?.source},b);if(c+w===r)return this.color?`${ct}${pc}${k}${Lt}`:k;return this.dim(k)}),h=`${c>0?`${this.dim(Wt("ctrl+s","…"))} `:""}${f.join(this.dim(o))}${d>0?this.dim(`${o}${Wt("ctrl+s",`+${d} more`)}`):""}`,m=(c>0?2:0)+l.join(o).length+s(d),g="ctrl+s market";return m+2+g.length<=t?`${h} ${this.dim(Wt("ctrl+s",g))}`:h}sourceOf(t){let e=this.active().find((n)=>n.entries.some((r)=>r.name===t.name));if(!e)return"In no market you added";return e.source===q?"The ttheme catalog":e.shown}paletteState(t){let e=this.picked.has(t.name),n=this.installed.has(t.name),r=e&&n?"Installed":e?"Will install":n?"Will remove":"Not installed";return this.startup===t.name?`${r} · Default`:r}paletteDetail(t,e){if(!t||t.kind==="rule")return Um;if(t.kind==="all")return{title:this.bold("Select all"),lines:["space picks every palette shown"],brief:""};if(t.kind==="group"){let u=this.entries().filter((f)=>f.group===t.name&&!f.default),l=this.sourceOf(t.lead),d=`${Tt(u.length)} · ${u.filter((f)=>this.installed.has(f.name)).length} installed`;return{title:this.bold(t.name),lines:[...t.native?bt(t.native,e).map((f)=>this.dim(f)):[],...bt(l,e),d],brief:`${l} · ${d}`}}if(t.kind==="catalog"){let u=this.entries().filter((f)=>f.group===t.group&&f.catalog===t.name),l=this.sourceOf(t.lead),d=`${Tt(u.length)} · ${u.filter((f)=>this.installed.has(f.name)).length} installed`;return{title:this.bold(t.name),lines:[t.group,...bt(l,e),d],brief:`${t.group} · ${d}`}}let n=t.entry,r=this.sourceOf(n),i=ia(n),o=`Gate ${ve.length-i.length}/${ve.length}`,s=n.pictures?.length??0,a=[...s>0?[`${s} picture${s===1?"":"s"}`]:[],...n.base?[`Base ${n.base}`]:[]].join(" · "),c=lt(n.name)?n.catalog?[n.catalog]:[]:[n.group,...n.native?[this.dim(n.native)]:[]];return{title:this.color?`${ct}${qe(n.cursor)}${n.name}${$e}\x1B[39m`:n.name,lines:[...bt(r,e),...c,this.paletteState(n),"",i.length===0?`${o} · passes`:o,...i.flatMap((u)=>bt(u,e-2).map((l,d)=>`${d===0?this.warn("✗"):" "} ${l}`)),...a?["",a]:[]],brief:[r,o,...a?[a]:[],this.paletteState(n)].join(" · ")}}marketDetail(t,e){if(!t||t.kind==="rule")return Um;if(t.kind==="market"){let i=t.market,o=i.source===q?"The ttheme catalog":i.shown,s=i.entries.filter((h)=>!h.default),a=s.filter((h)=>this.installed.has(h.name)).map((h)=>h.name),c=`${Tt(s.length)} · ${a.length} installed`,u=ut(i.source)?"Read in place":`Auto-update ${this.want.get(i.source)??i.auto?"on":"off"}`,l=this.busy.get(i.source)??WH(i.status),d=this.failed.get(i.source),f=this.adds.has(i.source)?["Will add"]:this.removes.has(i.source)?[a.length>0?`Will remove — ${a.join(", ")} stay${a.length===1?"s":""} installed`:"Will remove"]:this.want.has(i.source)?[`Auto-update turns ${this.want.get(i.source)?"on":"off"}`]:[];return{title:this.bold(i.id),lines:[...bt(o,e),...i.description?bt(i.description,e).map((h)=>this.dim(h)):[],c,"",ut(i.source)?u:`${u} ${this.dim("←→")}`,...ut(i.source)?[]:[l],...d?bt(d,e).map((h)=>this.warn(h)):[],...f.length>0?["",...f.flatMap((h)=>bt(h,e))]:[]],brief:[o,u,...f,...ut(i.source)?[]:[l]].join(" · ")}}if(t.kind==="add"){let i=this.busy.get(t.source)??this.failed.get(t.source)??this.peekFailed.get(t.source)??(this.peeked.has(t.source)?"space adds it":this.live?"Fetching its palettes…":"space fetches its palettes");return{title:this.bold(nt(t.source)),lines:["Not added",...this.peekLines(t.source,e),"",...bt(i,e)],brief:[this.peeking(t.source),i].filter(Boolean).join(" · ")}}if(t.kind==="find"){let i=this.fields.markets.value.trim(),o=this.searchError??(this.searching?"Searching…":this.repos?`${this.repos.length} found · space searches again`:"space searches GitHub");return{title:this.bold("GitHub"),lines:[...bt(`Repositories with the ${Fo} topic`,e),...i&&!Ha(i)?[`Matching "${i}"`]:[],"",...bt(o,e)],brief:o}}let r=this.known(t.source)?"Added":this.busy.get(t.source)??this.failed.get(t.source)??this.peekFailed.get(t.source)??"space adds it";return{title:this.bold(t.source),lines:[`★ ${t.repo.stargazers_count}`,...bt(t.repo.description??"",e),...this.peekLines(t.source,e),"",...bt(r,e)],brief:[this.peeking(t.source),r].filter(Boolean).join(" · ")}}peekLines(t,e){let n=this.peeked.get(t);if(!n)return[];let r=n.entries.filter((o)=>!o.default),i=`${r.slice(0,D1).map((o)=>de(o.name)).join(", ")}${r.length>D1?", …":""}`;return["",n.id,...n.description?bt(n.description,e):[],Tt(r.length),...bt(i,e).map((o)=>this.dim(o))]}detail(t){let e=this.list();if(e)return this.paletteDetail(e.focusedRow(),t);if(this.tab==="markets")return this.marketDetail(this.marketRow(),t);let n=this.problemRows(),r=n[Math.min(this.cursor.errors,n.length-1)];return r?{title:this.bold(r.where),lines:bt(r.message,t),brief:r.message}:Um}footer(){if(this.help)return{badge:"HELP",keys:[],right:["? esc","close"]};if(this.leaving!==void 0)return{badge:"BROWSE",lead:"Apply your changes before you leave?",keys:[["y","apply"],["n","discard"]],right:["esc","stay"]};if(this.asking)return{badge:"BROWSE",lead:`Update ${this.asking.id} on its own when its author changes it?`,keys:[["y","yes"],["n","no"]],right:["esc","back"]};let t=this.fields[this.tab].value,e=["enter",this.dirty()?"apply":"close"],n=[["⇧←→","tabs"],...t?[["bksp","edit"]]:[],["?","keys"]];return{badge:t?"BROWSE (FILTER)":"BROWSE",keys:[...this.rowKeys(e),...n],right:t?["esc","clear filter"]:["esc","cancel"]}}rowKeys(t){let e=this.list();if(e){let r=e.focusedRow();if(!r)return[t];if(e.foldable())return[(r.kind==="group"||r.kind==="catalog")&&r.expanded?["←","close"]:["→","open"],["space","pick"]];return[["space","pick"],t]}if(this.tab==="errors")return[t];let n=this.marketRow();if(n?.kind==="market"){let r=n.market;return[["space",this.adds.has(r.source)||this.removes.has(r.source)?"undo":"remove"],...ut(r.source)?[]:[["←→","auto-update"]],...this.adds.has(r.source)?[]:[["ctrl+r","update"]],t]}if(n?.kind==="find")return[["space","search"],t];if(n?.kind==="add"||n?.kind==="repo"&&!this.known(n.source))return[["space","add"],t];return[t]}columns(){return(this.output??process.stdout).columns??100}rows(){return(this.output??process.stdout).rows??24}fitItems(t){let e=Math.max(z1,this.rows()-t);this.maxItems=e,this.catalog.maxItems=e,this.mine.maxItems=e}view(){let t=this.draw().split(`
659
- `);return Array.from({length:this.rows()},(e,n)=>t[n]??"")}draw(){let t=this.columns(),e=this.rows();if(t<W1||e<K1)return`Needs ${W1}×${K1} — now ${t}×${e}
660
- ${this.dim("esc cancels")}`;if(this.phase!=="browse")return this.frame(t,e);let n=t>=FH,r=t-1,i=n?Math.min(t-Gm-4,LH):r,o=this.strip(r-1),s=[` ${this.tabBar()}`,...e>=jH?[` ${this.heading()}`,...this.searchBox(t-3).map((b)=>` ${b}`)]:[yt(` ${this.dim("⌕")} ${this.searchText()}`,this.dim(this.counts()),r)],...o?[` ${o}`]:[]];this.fitItems(s.length+3+(n?0:1)+(this.hub?1:0));let{lines:a,above:c,below:u,empty:l}=this.body(),d=a.length>0?a.map((b)=>` ${b}`):[` ${this.dim(l)}`];while(d.length<this.maxItems)d.push("");let f=[c>0?` ${this.more(-1,`↑ ${c} more`)}`:"",...d,u>0?` ${this.more(1,`↓ ${u} more`)}`:""],h=this.detail(n?Gm:i-2),m=n?f.map((b,w)=>`${rt(b,i)} ${this.dim("│")} ${rt(w===0?h.title:h.lines[w-1]??"",Gm,!1)}`):[...f.map((b)=>rt(b,i,!1)),rt(` ${this.dim(h.brief)}`,i,!1)],g=[...this.hub?[rt(Vf(this.hub,this.color),r,!1)]:[],...s.map((b)=>rt(b,r,!1)),...m,` ${this.keyBar(this.footer(),r-1)}`];return(this.help?this.helpBox(g,t,e,g.length-m.length-1):g).join(`
661
- `)}helpRows(){return[["Move","↑↓ home end pgup pgdn"],["Series","←→ · enter on a series"],["Pick","space · a palette, a series, all"],["Filter","Any text · bksp · ctrl-u clears"],["","Each tab keeps its own"],["Tabs","⇧←→ Catalog, Installed, Markets, Errors"],...this.active().length>=2?[["Market","ctrl+s · one market, then all"]]:[],["Markets","space adds or removes · ←→ auto-update"],["","ctrl+r updates it, or searches again"],["Apply","enter reviews and applies · esc cancels"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]]}helpBox(t,e,n,r){let i=this.helpRows(),o=Math.min(e-2,58),s=Math.floor((e-o)/2),a=`│${" ".repeat(o-2)}│`,c=[`╭─ Help ${"─".repeat(o-9)}╮`,a,...i.map(([l,d])=>`│${rt(` ${this.bold(l.padEnd(10))}${d}`,o-4)} │`),a,`╰${"─".repeat(o-2)}╯`],u=Math.max(0,Math.min(Math.max(r,Math.floor((n-c.length)/2)),n-1-c.length));return t.map((l,d)=>{let f=c[d-u];return f===void 0?l:`${jg(l,s)}${f}`})}}import{existsSync as I8}from"node:fs";import{existsSync as oc,mkdirSync as d8,readFileSync as zp}from"node:fs";import{dirname as f8}from"node:path";class He extends Error{}import{closeSync as QL,mkdtempSync as XL,openSync as tF,readSync as eF,rmSync as iS}from"node:fs";import{homedir as nF,tmpdir as rF}from"node:os";import{join as oS}from"node:path";import{readFileSync as KH}from"node:fs";var kt={pitch:25,cols:22,rows:9,height:13},qi={cols:25,rows:21},be={cols:10,rows:3,pitch:12,top:4},ge=be.top+be.rows+1,zH=1073741824,Vm=2147483648,DH=-1073741826,qH=1600,YH=56,JH=4,q1=20,VH=50,Y1=[["space","unfolds a set of ×N"],["o","opens the post page in a browser"],["c","switches between cutouts and every post"],["a","opens the advanced filters"],["1-9","turn a tag of the tags row on or off"],["ctrl+v","tries on a picture from the clipboard — or drop one on the window"]];function Zm(t){return Math.max(0,Math.floor((t-1)/be.pitch))}function or(t,e){let n=e-ge-2;return{perRow:Math.max(1,Math.floor((t-1)/kt.pitch)),rowsVis:Math.max(1,Math.floor(n/kt.height)),height:n}}function hl(t,e=!0){if(e)return`\x1B_Ga=t,t=f,f=100,i=${t.id},q=2;${Buffer.from(t.path).toString("base64")}\x1B\\`;let n;try{n=KH(t.path).toString("base64")}catch{return}let r=n.match(/.{1,4096}/g)??[""];return r.map((i,o)=>{let s=o<r.length-1?1:0;return o===0?`\x1B_Ga=t,f=100,i=${t.id},m=${s},q=2;${i}\x1B\\`:`\x1B_Gm=${s},q=2;${i}\x1B\\`}).join("")}function nv(t,e){let n=t.crop===void 0?"":`,x=0,y=${t.crop*e.h},w=${t.cols*e.w},h=${t.rows*e.h}`;return`\x1B[${t.row+1};${t.col+1}H\x1B_Ga=p,i=${t.id},p=${t.id}${n},c=${t.cols},r=${t.rows},C=1,z=${t.z},q=2\x1B\\`}function Qm(t){return`\x1B_Ga=d,d=i,i=${t},p=${t},q=2\x1B\\`}function _a(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}function ms(t){return`\x1B[38;2;${et(t).join(";")}m`}function fl(t){return`\x1B[48;2;${et(t).join(";")}m`}var zm=!1;function ml(t){return zm=!0,t.beat}function ps(t){return jn[ml(t)%jn.length]}function ft(t){return _(t)}function Dm(t,e){if(_(t)<=e)return t;let n="";for(let r of t){if(_(n+r)>e)break;n+=r}return n}function ti(t){return`\x1B[${30+t}m`}function Yi(t,e,n,r){return n?[[`${Is} `,r,void 0,{kind:"link",url:n}],[t,e,n]]:[[t,e]]}function Km(t){let e=Yf(t);return e?{kind:"key",key:e}:void 0}function qm(t){return t.reduce((e,[n])=>e+ft(n),0)}function ZH(t,e){let n=[],r=e;for(let[i,o,s,a]of t){let c=ft(i);if(c<=r){n.push([i,o,s,a]),r-=c;continue}n.push([`${Dm(i,r)}…`,o,s,a]);break}return n}class dl{parts=[];cols;constructor(t){this.cols=t}put(t,e,n="",r,i){return this.parts.push({col:t,text:e,sgr:n,...r?{link:r}:{},...i?{spot:i}:{}}),t+ft(e)}run(t,e){let n=t;for(let[r,i,o,s]of e)n=this.put(n,r,i,o,s);return n}mark(t,e,n){this.parts.push({col:t,text:" ".repeat(Math.max(0,e)),sgr:"",spot:n,hidden:!0})}zones(t){return this.parts.flatMap(({col:e,text:n,link:r,spot:i})=>{let o=i??(r?{kind:"link",url:r}:void 0),s=e>=0&&e<this.cols?ft(Dm(n,this.cols-e)):0;return o&&s>0?[{row:t,col:e,width:s,height:1,target:o}]:[]})}right(t,e){this.run(t-e.reduce((n,[r])=>n+ft(r),0),e)}center(t,e){this.run(Math.floor((t-e.reduce((n,[r])=>n+ft(r),0))/2),e)}render(){let t="";for(let{col:e,text:n,sgr:r,link:i,hidden:o}of this.parts){if(o||e>=this.cols||e<0)continue;let s=Dm(n,this.cols-e);t+=`\x1B[${e+1}G${r}${gc(s,i)}${r?Lt:""}`}return t}}function QH(t){return t.replace(/_\([^)]*\)?$/,"")}function rv(t){return[`${t.reduced?"↓":""}${t.width}×${t.height}`,Math.max(t.width,t.height)<qH?ne:C]}function Fa(t,e,n,r){let i=[...r.keys??[]],o=r.lead,s=r.right,a=()=>{let l=[...o?[qm(o)]:[],...i.map(([f,h])=>ft(f)+1+ft(h))];return(r.badge?ft(r.badge)+4:0)+l.reduce((f,h)=>f+h,0)+3*Math.max(0,l.length-1)+(s?3+ft(s[0])+1+ft(s[1]):0)};while(a()>e)if(i.length>2)i.splice(-2,1);else if(s)s=void 0;else if(i.length>1)i.splice(-2,1);else break;if(o&&a()>e)o=ZH(o,Math.max(0,qm(o)-(a()-e)-1));let c=0;if(r.badge)c=t.put(0,` ${r.badge} `,`\x1B[7;1m${n}`)+2;if([...o?[o]:[],...i.map(([l,d])=>[[l,ct,void 0,Km(l)],[` ${d}`,C,void 0,Km(l)]])].forEach((l,d)=>{c=t.run(c+(d?3:0),l)}),s){let l=Km(s[0].split(" ")[0]??"");t.right(e,[[s[0],ct,void 0,l],[` ${s[1]}`,C,void 0,l]])}}function XH(t,e){if(t==="d")return C;if(t==="b")return ct;if(t==="s")return fl(e.colors.selection);if(t==="c")return fl(e.colors.cursor);let n=/^([BK]?)(\d+)$/.exec(t);if(!n)return"";let r=Number(n[2]),i=(o)=>r<8?o+r:o+52+r;if(n[1]==="K")return`\x1B[30;${i(40)}m`;return`\x1B[${n[1]==="B"?"1;":""}${i(30)}m`}function tC(t,e,n,r,i){let o=zt.indexOf(Ii(r.scene)),s=zt.flatMap((c,u)=>[...u?[[" ",""]]:[],[c.name,u===o?ct+i:C,void 0,{kind:"scene",scene:u}]]),a=s.reduce((c,[u])=>c+ft(u),0)<=n;t?.run(e,a?s:[[Ii(r.scene).name,ct+i],[` ${o+1}/${zt.length}`,C]])}function eC(t,e,n,r,i,o,s){let{ansi:a,cursor:c}=o.colors;tC(t[e-2],n,r,o,s);let u=r<nk?3:4;if(r>=56)u=Math.min(7,Math.floor((r+1)/8)-1);let l=n;for(let f=0;f<8;f++)l=(t[e]?.put(l,"▀".repeat(u),ms(a[f]??c)+fl(a[f+8]??c))??l)+1;let d=e+2;for(let f of Ii(o.scene).lines){let h=Wo(f,r);if(!h)continue;if(d>i)return;t[d]?.run(n,h.map(([m,g])=>[m,XH(g,o)])),d++}}function nC(t,e,n){let r=[[]];for(let s of t){let a=r[r.length-1];if(a.length===0||ft([...a,s].join(" "))<=e)a.push(s);else if(r.length<n)r.push([s]);else break}let i=r.reduce((s,a)=>s+a.length,0),o=r[r.length-1];while(i<t.length&&o.length>0&&ft([...o,`+${t.length-i}`].join(" "))>e)o.pop(),i--;if(i<t.length)o.push(`+${t.length-i}`);return r.filter((s)=>s.length>0).map((s)=>s.join(" "))}function J1(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function rC(t,e,n,r,i){let o=r.info,s=o?.artists??[],a=ti(r.tiles[r.focus]?.siteAnsi??r.siteAnsi);[["Post",o?.page?Yi(J1(o.page),"",o.page,a):[["—",C]]],["Source",o?.source?Yi(J1(o.source),"",o.link,i):[["—",C]]],["Artist",[s.length>0?[s.join(" "),""]:["—",C]]]].forEach(([u,l],d)=>{t[e+d]?.put(n,u,C),t[e+d]?.run(n+12,l)})}function iC(t,e,n,r,i,o){let s=o.info,a=o.tiles[o.focus];if(!s||!a)return;let c=o.shown?.id===a.key?o.shown:void 0,u=n+12,l=Math.max(12,r-12),d=[`${a.width}×${a.height}${s.ext?` ${s.ext.toUpperCase()}`:""}`,...c?[qu(c.bytes)]:[]].join(" · "),f=[s.rating??"—",a.score>0?`★${a.score}`:"",s.posted??""].filter(Boolean).join(" · "),h=(b,w)=>b.length>0?nC(b,l,w).map((k)=>[[k,""]]):[[["—",C]]],m=[["Characters",h(s.characters,2)],["Series",h(s.series,1)],["Tags",h(s.tags,3)],["Rating",[[[f,f==="—"?C:""]]]],["File",[[[d,""],...c?[[" ",""]]:[],...c?iv(c):[]]]],["Uploader",[[s.uploader?[s.uploader,""]:["—",C]]]]],g=e;for(let[b,w]of m){if(g+w.length-1>i)return;t[g]?.put(n,b,C);for(let k of w)t[g]?.run(u,k),g++}}var oC=["Size","Position","Opacity"],sC=[0,3,6];function aC(t,e){let{tune:n,untuned:r}=t;return e===0?n.size!==r.size:e===1?n.at!==r.at:n.opacity!==r.opacity}function cC(t){return t.toFixed(2)}function uC(t,e,n,r,i,o){let s=i.tuning;if(!s)return;let a=i.tiles[i.focus];t[e-3]?.run(n,[[i.palette,ct+o],[" Background",C],...a?[[" · ",C],...Yi(`${a.site} ${a.id}`,C,a.page||void 0,ti(a.siteAnsi))]:[]]);let c=Math.max(8,r-n-21),u=20,l=Math.max(100,s.fill);for(let[d,f]of oC.entries()){let h=e+sC[d],m=s.field===d,g=m?ct:C;if(m)t[h]?.put(n,"▶",o,void 0,{kind:"field",field:d});t[h]?.put(n+2,f,g,void 0,{kind:"field",field:d});let b;if(d===1){for(let w=1;w<=9;w++){let k=w===i.tune.at,v=t[e+2+Math.floor((w-1)/3)],S=n+12+(w-1)%3*3;v?.mark(S-1,3,{kind:"place",at:w}),v?.put(S,k?"■":"·",k?ct+o:C)}b=Ut[i.tune.at-1]??"center"}else{let w;if(d===0){let{size:k}=i.tune;w=k==="fill"?c-1:Math.floor((k-u)*(c-1)/(l-u+1)),b=k==="fill"?"fill":`${k}%`}else w=Math.floor(Math.round(i.tune.opacity*100)*(c-1)/100),b=cC(i.tune.opacity);w=Math.max(0,Math.min(c-1,w)),t[h]?.run(n+12,[["━".repeat(w),o],["●",ct],["─".repeat(c-1-w),C]]),t[h]?.mark(n+12,c,{kind:"track",field:d})}if(t[h]?.right(r-2,[[b,g]]),aC(i,d))t[h]?.put(r-1,"↺",m?ct+o:C)}}function lC(t,e,n,r,i,o){t[e]?.put(n,`╭${"─".repeat(i-2)}╮`,o);for(let s=e+1;s<e+r-1;s++)t[s]?.put(n,"│",o),t[s]?.put(n+i-1,"│",o);t[e+r-1]?.put(n,`╰${"─".repeat(i-2)}╯`,o)}function Ym(t,e=t.site,n=t.siteAnsi){return[` ${e} `,`\x1B[7;${30+n}m`]}function La(t){return`${J[Math.floor(t/Mr)]?.name??"local"} ${t%Mr}`}function Ca(t,e,n){let r=J[Math.floor(e/Mr)],i=La(e),o=t.indexOf(i);if(!r||o===-1)return[[t,n]];return[[t.slice(0,o),n],...Yi(i,n,r.pageUrl(e%Mr),ti(r.ansi)),[t.slice(o+i.length),n]].filter(([a])=>a!=="")}function dC(t,e,n){let r=[{name:"all",moved:!1},...J].flatMap((o,s)=>{let a=`${o.name}${o.moved?"*":""}`,[c,u]=o.name===n.site?Ym(n,a):[` ${a} `,C],l=[c,u,void 0,{kind:"site",tab:s}];return s?[[" ",""],l]:[l]}),i=r.reduce((o,[s])=>o+ft(s),0)<=e;t.run(0,i?r:[Ym(n)])}function fC(t,e,n,r){if(n.chips.length===0)return;let i=[["tags ",C]],o=ft("tags "),s=n.chips.length;for(let[a,c]of n.chips.entries()){let u=` ${a+1} ${c.name} `;if(o+ft(u)+1>e-2)break;i.push([u,c.on?`\x1B[7m${r}`:C,void 0,{kind:"chip",index:a}],[" ",""]),o+=ft(u)+1,s--}if(s>0)i.push([`+${s}`,C]);t.run(0,i)}function hC(t,e,n,r,i){t[ge-1]?.put(0,"─".repeat(n-1),C);let o=t[be.top-1],s=Zm(n),a=r.held.length>s?Math.max(0,s-1):r.held.length;for(let[c,u]of r.held.slice(0,a).entries()){let l=c*be.pitch,d=u.up?ct:"";if(o.run(l+1,u.page?Yi(String(u.id),d,u.page,ti(u.ansi)):[["● ",ti(u.ansi)],[String(u.id),d]]),u.up)for(let f=0;f<be.rows;f++)t[be.top+f]?.put(l,"▌",i);if(u.thumb)e.push({id:zH+c,path:u.thumb,row:be.top,col:l+1,cols:be.cols,rows:be.rows,z:-1})}if(a<r.held.length)o.put(a*be.pitch+1,`+${r.held.length-a}`,C)}function mC(t,e,n,r){if(n.editing!==void 0){let c=t.run(0,[["⌕ ",r],[n.editing,""],["█",r]]),u=n.suggest?.length?" ↑↓ pick enter searches":" enter searches";t.put(c,n.editing?u:` A tag, a post URL or an id, or drop a picture or ctrl+v — ${n.tag||"esc leaves"}`,C);return}let i=t.run(0,[["⌕ ",r,void 0,{kind:"query"}],[n.tag||"Nothing yet — / searches, ctrl+v pastes a picture",n.tag?"":C,void 0,{kind:"query"}]]),o=pi.filter((c)=>!n.block.includes(c)),s=J.filter((c)=>!n.enabled.includes(c.name)).map((c)=>c.name),a=[n.preset,...n.solo?["solo"]:[],n.order,...n.rating.join("+")==="safe"?[]:[n.rating.join("+")],...o.length>0?[`allows ${o.join("+")}`]:[],...n.narrow.size>0?[`≥${n.narrow.size}px`]:[],...n.narrow.score>0?[`score≥${n.narrow.score}`]:[],...n.narrow.png?["png"]:[],...n.hide.length+n.hideTags.length>0?[`hides ${[...n.hide,...n.hideTags].join("+")}`]:[],...s.length>0?[`all skips ${s.join("+")}`]:[]];if(t.put(i,` ${a.join(" ")}`,C),n.total>0||!n.searching){let c=[[`${n.tiles.length}/${n.checked}`,""]];if(n.checked<n.total)c.push([` of ${n.total}`,C]);t.right(e,c)}}function iv(t){if(t.cut==="on")return[[`Cut out · ${t.clear}% transparent`,lo]];if(t.cut==="off")return[["Opaque · x cuts out",ne]];if(t.cut==="failed")return[["Opaque · no cut-out",ne]];return[t.clear>0?[`${t.clear}% transparent`,lo]:["Opaque",ne]]}function V1(t){return t.site==="all"?"any site":t.site}function Jm(t,e){if(t.installing!==void 0)return Ca(`${ps(t)} Installing ${t.palette} ← ${La(t.installing)}`,t.installing,ne);if(t.hint)return[[t.hint,lo]];if(t.error)return[[t.error,ne]];if(t.waiting!==void 0)return[[`${t.slow??t.site} asked to slow down · ${t.waiting}s`,ne]];if(t.fetching){let{id:n,got:r,size:i}=t.fetching;return Ca(`${ps(t)} Fetching ${La(n)} · ${Yu(r,i)}`,n,ne)}if(t.cutting!==void 0)return Ca(`${ps(t)} Cutting out ${La(t.cutting)}`,t.cutting,ne);if(t.preparing!==void 0)return Ca(`${ps(t)} Preparing ${La(t.preparing)}`,t.preparing,ne);if(e)return[e];if(t.saved)return Ca(t.saved.text,t.saved.key,lo);if(t.note)return[[t.note,C]];return}function ov(t){if(t.ranking)return"Ranking previews by palette colors";if(t.stage==="check")return t.preset==="cutouts"?"Checking PNG headers":"Loading previews";return"Fetching posts"}function sv(t,e){return t.ranking?`${e}${t.ranking.done}/${t.ranking.total}`:""}function pC(t,e,n,r,i){let{background:o,cursor:s,selection:a}=r.colors,{ranking:c}=r,u=c?Math.round(n*c.done/c.total):-1,l=Math.max(6,Math.round(n*0.22)),d=ml(r)%(q1*2)/q1,f=Math.round((n-l)*(0.5-0.5*Math.cos(Math.PI*(d<1?d:2-d)))),h=pt(o,s,i),m=pt(o,pt(a,o,0.15),i),g=Array.from({length:n},(w,k)=>{let v=(u>=0?k<u:k>=f&&k<f+l)?h:m;return k===0||k===n-1?pt(v,o,0.55):v}),b=0;for(let w=1;w<=n;w++)if(w===n||g[w]!==g[b])t?.put(e+b," ".repeat(w-b),fl(g[b])),b=w}function gC(t,e,n,r,i){let{background:o,foreground:s}=i.colors,a=i.loaderFrom===void 0?0:Math.min(1,(ml(i)-i.loaderFrom)/JH),c=e+(n>=5?Math.floor((n-5)/2):0);t[c]?.center(r,[[ov(i),ct+ms(pt(o,s,a))],[sv(i," "),ms(pt(o,pt(s,o,0.45),a))]]);let u=Math.min(YH,r-8);if(pC(t[c+(n>=3?2:1)],Math.floor((r-u)/2),u,i,a),n<5)return;t[c+4]?.center(r,i.sites.flatMap(({name:l,arrived:d},f)=>[...f?[[" · ",ms(pt(o,s,0.25*a))]]:[],[l,ms(pt(o,d?pt(s,o,0.2):s,d?a:0.32*a))]]))}function bC(t,e,n,r,i,o){if(i<=r)return;let s=Math.max(1,Math.round(r*r/i)),a=Math.max(0,Math.min(r-s,Math.round(n.scroll*r/i)));for(let c=0;c<r;c++){let u=c>=a&&c<a+s;t[ge+c]?.put(e-1,u?"┃":"│",u?o:C)}}function wC(t,e,n){if(e)return[`${ps(t)} ${ov(t)}${sv(t," · ")}`,C];let r=n.filter((o)=>!o.missing),i=r.filter((o)=>o.thumb).length;return i<r.length?[`${ps(t)} Loading thumbnails · ${i}/${r.length}`,C]:void 0}function $C(t,e,n,r,i,o,s){let{perRow:a,rowsVis:c,height:u}=or(r,i);mC(t[0],r,o,s),dC(t[1],r,o),fC(t[2],r,o,s),hC(t,e,r,o,s);let l=t.map((H,N)=>N>=ge&&N<ge+u?H:void 0),d=Math.floor(o.scroll/kt.height),f=Math.floor((o.scroll+u-1)/kt.height),h=[];for(let H=d;H<=f;H++){let N=ge+H*kt.height-o.scroll;for(let L=0;L<a;L++){let K=H*a+L,B=L*kt.pitch,X=o.tiles[K];if(!X)continue;h.push(X);let z=Math.max(N,ge),Mt=Math.min(N+kt.height,ge+u);if(Mt>z)n.push({row:z,col:B,width:kt.pitch-1,height:Mt-z,target:{kind:"tile",index:K}});let tt=K===o.focus;if(tt)lC(l,N,B,kt.height,kt.pitch-1,s);let fr=N+1,fn=Math.max(fr,ge),hn=Math.min(fr+kt.rows,ge+u);if(X.thumb&&hn>fn)e.push({id:X.key,path:X.thumb,row:fn,col:B+1,cols:kt.cols,rows:hn-fn,...hn-fn<kt.rows?{crop:fn-fr}:{},z:-1});let mn=[...o.installed.includes(X.key)?[["✓ ",lo]]:[],...X.page||o.site!=="all"?Yi(String(X.id),tt?ct:"",X.page||void 0,ti(X.siteAnsi)):[["● ",ti(X.siteAnsi)],[String(X.id),tt?ct:""]],[" ",""],rv(X)],lc=kt.cols-(X.mates.length>0?1:0);if(l[N+10]?.run(B+1,qm(mn)>lc?mn.map(([rd,id,od])=>[rd.replace(/^(\S) $/,"$1"),id,od]):mn),X.mates.length>0)l[N+10]?.put(B+kt.cols,"≈",s);l[N+11]?.put(B+1,X.artist?QH(X.artist).slice(0,kt.cols-8):"—",C);let ri=[];if(X.score>0)ri.push([`★${X.score}`,C]);if(X.variants>1)ri.push([` ×${X.variants}`,s]);if(ri.length>0)l[N+11]?.right(B+kt.cols+1,ri)}}let m=Math.ceil(o.tiles.length/a)*kt.height;bC(t,r,o,u,m,s);let g=Math.max(ge,ge+m-o.scroll),b=ge+u-g,w=o.searching&&b>=2;if(w)gC(l,g,b,r-1,o);let k=o.searching&&o.tiles.length===0;if(k&&!o.error){let[H,N]=Y1[Math.floor(ml(o)/VH)%Y1.length];t[i-2]?.run(0,[["Tip ",C],[H,ct],[` ${N}`,C]])}let v=o.top*a,S=o.tiles.length-(o.top+c)*a,M=[...v>0?[`↑ ${v} above`]:[],...S>0?[`↓ ${S} more`]:[]];if(M.length>0)t[i-2]?.put(0,M.join(" "),C);if(!o.searching&&o.tiles.length===0&&!o.error&&o.tag)t[ge+1]?.put(0,o.preset==="cutouts"?`No transparent cutouts of ${o.tag} on ${V1(o)} — c searches every post, tab tries ${o.nextSite}`:`No posts of ${o.tag} on ${V1(o)} — tab tries ${o.nextSite}`,C);let I=wC(o,w,h),O=Jm(o,I);return Fa(t[i-1],r,s,{badge:"IMAGE SEARCH",lead:O,keys:k&&O?.[0]===I?[]:[["←↑↓→","move"],["enter","try on"],["tab","site"],["ctrl+v","picture"],["s","settings"],["/","search"],["?","keys"]],right:["esc","back"]}),w}function kC(t,e,n,r,i,o){let s=i.tiles[i.focus];if(!s)return;let a=i.shown?.id===s.key?i.shown:void 0,c=[Ym(i,s.site,s.siteAnsi),[" ",""],...Yi(String(s.id),ct,s.page||void 0,ti(s.siteAnsi)),[" ",""],rv(s)];if(s.score>0)c.push([` · ★${s.score}`,C]);if(a)c.push([` · ${qu(a.bytes)}`,C]);if(a){if(c.push([" ",""],...iv(a)),i.coloring==="original")c.push([" · own colors",C])}if(t[0]?.run(0,c),s.mates.length>0)t[0]?.right(n,[["≈ ",o],[s.mates.join(" "),C]]);if(rC(t,1,2,i,o),i.tuning)uC(t,8,2,2+Math.min(n-4,60),i,o);else if(i.details)iC(t,5,2,Math.min(n-4,Math.max(48,Math.floor(n*0.55))),r-2,i);else eC(t,7,2,n-4,r-2,i,o);if(i.shown)e.push({id:Vm+i.shown.id,path:i.shown.path,row:0,col:0,cols:n,rows:r,z:DH});if(i.tuning){Fa(t[r-1],n,o,{badge:"IMAGE EDIT",lead:Jm(i),keys:[["↑↓","field"],["←→","step"],["=","reset"],["+","reset all"],i.tuning.field===1?["1-9","place"]:["⇧←→","×10"],["c","colors"],["enter","keep"]],right:["esc","undo"]});return}let u=Jm(i);Fa(t[r-1],n,o,{badge:"IMAGE PREVIEW",lead:u,keys:i.installing===void 0?[["←→","browse"],["enter","install"],["t","tune"],["c","colors"],["i","details"],...i.details?[]:[["⇧←→","example"]],...i.shown?.cut==="on"||i.shown?.cut==="off"?[["x","cut out"]]:[],["?","keys"]]:[],right:i.installing===void 0?["esc","grid"]:void 0})}var yC=[["Field","↑↓ size, position, opacity"],["Step","←→ · ⇧←→ ×10"],["Place","1-9 the nine positions"],["Reset","= this field back to its default · + every field"],["Colors","c the palette's tone or its own colors, opacity back to its default"],["Keep","enter back to try, installed with the picture"],["Undo","esc"],["Close","? esc"]],vC={grid:[["Move","←↑↓→ j k home end pgup pgdn"],["Try on","enter"],["Site",`tab shift+tab all, ${J.map((t)=>t.name).join(", ")}`],["Posts","c cutouts or every post"],["Search","/ a tag, a post URL or an id"],["Tags","1-9 turn a tag of the tags row on or off — the palette's own, then danbooru's related characters"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window or paste its link"],["Unfold","space a set of ×N"],["Open","o the post page in a browser"],["Settings","s rating, block, posts, solo, order, sets, remove bg"],["Advanced","a or Advanced › in settings min score, min size, sites, hide, hide tags, PNG only"],["Back","esc returns to preview"],["Close","? esc"]],try:[["Browse","←→"],["Install","enter"],["Tune","t size, position and opacity, installed with the picture"],["Colors","c the palette's tone or its own colors, installed with the picture"],["Details","i characters, series, tags, rating and file, under Post, Source and Artist"],["Example",`⇧←→ ${zt.map((t)=>t.name.toLowerCase()).join(", ")}`],["Cut out","x the background off or on, on an opaque picture"],["Open","o the post page in a browser"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window"],["Grid","esc"],["Close","? esc"]]},Xm=6,SC=24;function ja(t){return[...t.settings.flatMap((e,n)=>Boolean(e.advanced)===t.advanced?[n]:[]),t.settings.length]}function EC(t){return t.replace(/^[A-Z](?=[a-z])/,(e)=>e.toLowerCase())}function Z1(t){let e=t.settings.filter((n)=>Boolean(n.advanced)!==t.advanced).map((n)=>EC(n.label));return`${t.advanced?"Back to":"More filters:"} ${e.join(", ")} — enter opens the page, or a from any row`}function av(t,e,n){let r=t.indexOf(e);if(r!==-1)return t[(r+n+t.length)%t.length];let i=Number(e)||0;return(n>0?t.find((s)=>(Number(s)||0)>i):[...t].reverse().find((s)=>(Number(s)||0)<i))??t[n>0?0:t.length-1]}function Di(t,e){let n=[],r="";for(let i of t.split(" "))if(r&&ft(r)+1+ft(i)>e)n.push(r),r=i;else r=r?`${r} ${i}`:i;return r?[...n,r]:n}function MC(t){if(t.entry!=="number"||t.choices.includes(t.value))return t.choices;let e=t.choices.findIndex((n)=>(Number(n)||0)>Number(t.value));return e===-1?[...t.choices,t.value]:[...t.choices.slice(0,e),t.value,...t.choices.slice(e)]}function xC(t,e,n,r){let i=`\x1B[7;${30+r}m`,o=e&&n!==void 0;if(t.entry==="text")return[{text:` ${o?`${n}█`:t.value||"none"} `,sgr:o||e&&t.value?i:t.value?"":C}];let s=o?[]:t.value.split(" "),a=(o?t.choices:MC(t)).map((c,u)=>{let l=s.includes(c),d=t.multi&&e&&u===t.cursor?"4;":"";return{text:t.multi?` ${l?"[x]":"[ ]"} ${c} `:` ${c} `,sgr:l?e?`\x1B[${d}7;${30+r}m`:"":d?`\x1B[4m${C}`:C,choice:c}});return o?[...a,{text:` ${n}█ `,sgr:i}]:a}function Q1(t){if(t.entry==="text")return[{text:" ".repeat(SC),sgr:""}];let e=t.choices.map((n)=>({text:t.multi?` [x] ${n} `:` ${n} `,sgr:""}));return t.entry==="number"?[...e,{text:` ${"0".repeat(Xm)}█ `,sgr:""}]:e}function OC(t){return t.reduce((e,n)=>e+ft(n.text)+1,0)-1}function X1(t,e){let n=[[]],r=0;for(let i of t){let o=ft(i.text)>e?{...i,text:` …${Array.from(i.text).slice(-(e-2)).join("")}`}:i;if(r>0&&r+ft(o.text)>e)n.push([]),r=0;n[n.length-1]?.push(o),r+=ft(o.text)+1}return n}function tv(t){if(t.multi&&t.choices.every((e)=>t.default.split(" ").includes(e)))return"Default all";return`Default ${t.default&&t.default!==t.multi?.none?t.default:"none"}`}function ev(t){if(!t.tag)return"";if(!t.counts)return`${t.tag}: counting…`;let e=t.counts.map(({site:n,count:r})=>`${n} ${r===void 0?"no count":r.toLocaleString("en-US")}`);return`${t.tag}: ${e.join(" · ")}`}function IC(t,e){let n=t.advanced?"basic":"advanced";if(!e)return{keys:[["↑↓","setting"],["enter",n],["s","save"]],right:["esc","undo"]};if(t.typing!==void 0)return{keys:[["⌫","erase"],["enter","done"]],right:["esc","cancel"]};if(e.entry)return{keys:[["↑↓","setting"],...e.entry==="number"?[["←→","step"]]:[],["a",n],["enter","type"],["s","save"]],right:["esc","undo"]};return{keys:[["↑↓","setting"],["←→","value"],["a",n],...e.multi?[["space","toggle"]]:[],["enter","save"]],right:["esc","undo"]}}function RC(t,e,n,r,i){let o=r.panel??0,s=r.settings.length,c=6+Math.max(...r.settings.map((z)=>ft(z.label))),u=Math.max(...r.settings.map((z)=>ft(tv(z)))),l=c+Math.max(...r.settings.map((z)=>OC(Q1(z))))+u+5,d=Math.min(e-2,Math.max(48,l)),f=d-c-u-5,h=d-7,m=[!1,!0].map((z)=>({advanced:z,rows:ja({settings:r.settings,advanced:z}).slice(0,-1)})),g=r.settings.map((z)=>X1(Q1(z),f).length),b=Math.max(...m.map((z)=>z.rows.reduce((Mt,tt)=>Mt+g[tt],0))),w=Math.max(...m.map((z)=>Di(Z1({settings:r.settings,advanced:z.advanced}),h).length),...r.settings.map((z)=>Di(z.about,h).length)),k=`${r.tag}: ${J.map((z)=>`${z.name} 0,000,000`).join(" · ")}`,v=r.tag?Math.max(Di(k,h).length,Di(ev(r),h).length):0,S=b+w+v+8,M=Math.floor((e-d)/2),I=Math.max(1,Math.floor((n-1-S)/2)),O=`\x1B[7;${30+r.siteAnsi}m`;t[I]?.put(M,`╭─ Settings ${"─".repeat(Math.max(0,d-13))}╮`);for(let z=I+1;z<I+S-1;z++)t[z]?.put(M,`│${" ".repeat(d-2)}│`);let H=I+2;for(let z of ja(r).slice(0,-1)){let Mt=r.settings[z],tt=z===o;if(tt)t[H]?.put(M+2,"▶",i);if(t[H]?.mark(M+2,c-3,{kind:"setting",index:z}),t[H]?.put(M+4,Mt.label,tt?ct:""),Mt.value!==Mt.default)t[H]?.right(M+d-3,[[tv(Mt),C]]);X1(xC(Mt,tt,r.typing,r.siteAnsi),f).forEach((fr,fn)=>{let hn=M+c;for(let mn of fr)hn=t[H+fn].put(hn,mn.text,mn.sgr,void 0,{kind:"choice",index:z,choice:mn.choice}),hn+=1}),H+=g[z]}let N=m.find((z)=>z.advanced!==r.advanced)?.rows??[],L=t[I+3+b];if(o===s)L.put(M+2,"▶",i);let K=L.put(M+3,r.advanced?" ‹ Basic ":" Advanced › ",o===s?O:ct,void 0,{kind:"setting",index:s});if(N.some((z)=>r.settings[z]?.value!==r.settings[z]?.default))L.put(K+1,"•",C);t[I+5+b]?.put(M+2,"─".repeat(d-4),C),Di(r.settings[o]?.about??Z1(r),h).forEach((z,Mt)=>{t[I+6+b+Mt]?.put(M+4,z)}),Di(ev(r),h).forEach((z,Mt)=>{t[I+6+b+w+Mt]?.put(M+4,z,C)}),t[I+S-1]?.put(M,`╰${"─".repeat(d-2)}╯`);let{keys:B,right:X}=IC(r,r.settings[o]);Fa(t[n-1],e,i,{keys:B,right:X})}function PC(t,e,n,r,i){let o=r.tuning?yC:vC[r.mode],s=Math.min(e-2,Math.max(50,...o.map(([,f])=>ft(f)+16))),a=o.map(([f,h])=>({label:f,parts:Di(h,s-16)})),c=a.reduce((f,{parts:h})=>f+h.length,0)+4,u=Math.floor((e-s)/2),l=Math.max(2,Math.floor((n-c)/2));t[l]?.put(u,`╭─ Help ${"─".repeat(s-9)}╮`);for(let f=l+1;f<l+c-1;f++)t[f]?.put(u,`│${" ".repeat(s-2)}│`);let d=l+2;for(let{label:f,parts:h}of a){t[d]?.put(u+3,f,ct);for(let m of h)t[d]?.put(u+13,m),d++}t[l+c-1]?.put(u,`╰${"─".repeat(s-2)}╯`),Fa(t[n-1],e,i,{badge:"HELP",right:["? esc","close"]})}function NC(t,e,n){let r=e.suggest??[],i=r.map((a)=>a.alias??(a.count>0?String(a.count):a.palette??"0")),o=Math.max(...r.map((a)=>ft(a.value))),s=Math.max(7,...i.map(ft));r.forEach((a,c)=>{let u=c===e.pick,l=t[1+c];l?.run(0,[[u?"▸ ":" ",n,void 0,{kind:"suggest",index:c}],[a.value,u?ct+n:"",void 0,{kind:"suggest",index:c}]]),l?.right(2+o+2+s,[[i[c],C]])})}function ll(t,e=[]){return[...e,...t.flatMap((n,r)=>n.zones(r))]}function tp(t,e,n){let r=Array.from({length:n},()=>new dl(e)),i=[],o=[],s=ms(t.colors.cursor);if(zm=!1,e<qi.cols||n<qi.rows)return r[0]?.put(0,"ttheme find",ct+s),r[1]?.put(0,`Needs ${qi.cols}×${qi.rows} — now ${e}×${n}`),r[2]?.put(0,"esc quits",C,void 0,{kind:"key",key:"esc"}),{lines:r.map((c)=>c.render()),images:i,zones:ll(r),loader:!1,tick:!1};let a=!1;if(t.mode==="try")kC(r,i,e,n,t,s);else a=$C(r,i,o,e,n,t,s);if(t.mode==="grid"&&t.editing!==void 0&&t.suggest?.length){for(let c=1;c<n-1;c++)r[c]=new dl(e);return NC(r,t,s),{lines:r.map((c)=>c.render()),images:[],zones:ll(r),loader:!1,tick:!1}}if(t.help||t.panel!==void 0){let c=t.mode==="try"?i:[];for(let u=0;u<n;u++)r[u]=new dl(e);if(t.help)PC(r,e,n,t,s);else RC(r,e,n,t,s);return{lines:r.map((u)=>u.render()),images:c,zones:ll(r),loader:!1,tick:!1}}return{lines:r.map((c)=>c.render()),images:i,zones:ll(r,o),loader:a,tick:zm}}var AC=130,TC=38,HC=96,CC=28,Ga=[{id:"shell",scenes:["Diff","Logs","Shell"],name:"zsh",tail:!0},{id:"code",scenes:["Editor"],name:"nvim",tail:!1},{id:"monitor",scenes:["Top"],name:"htop",tail:!1}],LC={Shell:[0,1,2,3,4,6,7,9,10,12,14],Diff:[0,1,3,4,6,7,8,9,10,15],Logs:[0,1,2,3,4,5,6,7,8,9,10]},cv=(t)=>Array.from({length:8},(e,n)=>`«K${t+n}» «»`).join(" "),FC=["«2»❯ «»colortest",`«d»0-7 ${cv(0)}`,`«d»8-15 ${cv(8)}`],uv=2;function jC(t){let e=Ga.length;return Ga[(t%e+e)%e]}function fv(){return Ga.map((t)=>t.name)}function Ua(t,e,n){let r=t>=AC&&e>=TC?"full":t>=HC&&e>=CC?"tabs":void 0;if(!r)return;let i=r==="full"?t>=140?47:38:37,o=t-i-1,s=i+1+uv,a=i+o-uv,c=3,u=e-3,l={col:s,row:c,cols:a-s+1,rows:u-c+1},d={col:s+1,row:c+3,cols:l.cols-2,rows:u-c-3},f=[{row:c,col:s,length:l.cols,down:!1},{row:c+2,col:s,length:l.cols,down:!1},{row:u,col:s,length:l.cols,down:!1},{row:c,col:s,length:u-c+1,down:!0},{row:c,col:a,length:u-c+1,down:!0}],h=jC(n);return{tier:r,side:i,width:o,frame:l,title:{col:d.col,row:c+1,cols:d.cols,rows:1},inner:d,rules:f,tiles:[{id:h.id,name:h.name,col:d.col,row:d.row,width:d.cols,rows:d.rows}]}}var Ba="«2»▎ ",lv="«3»▎ ",_C="«1»▁ ",BC=[["","«5»import«» { «4»readFile«» } «5»from «2»'node:fs/promises'"],["","«5»import«» { «5»type «6»Hex«», «4»contrast«» } «5»from «2»'./color.ts'"],["",""],["","«8»/** A palette read from disk and checked against the gate. */"],[Ba,"«5»export interface «6»Palette «»{"],[Ba," name: «6»string"],[Ba," ansi: «6»Hex«»[]"],[Ba," ratio?: «6»number"],[Ba,"}"],["",""],["","«5»const «»SIXTEEN = «3»16"],["","«5»const «»FLOOR = «3»4.5 «8»// WCAG AA for body text"],["",""],["","«5»export async function «4»load«»(path: «6»string«»): «6»Promise«»<«6»Palette«»> {"],[lv," «5»const «»text = «5»await «4»readFile«»(path, «2»'utf8'«»)"],[lv," «5»const «»colors = «s»parse(text)«».colors ?? {}"],[""," «5»if «»(colors.ansi.length !== «K3»SIXTEEN«») { «1»● needs 16 ANSI colors"],[""," «5»throw new «6»Error«»(«2»'expected sixteen colors, got '«» + colors.ansi.length)"],[""," }"],[_C," «5»const «»ratio = «4»contrast«»(colors.ansi[«3»0«»], colors.ansi[«3»7«»]) «3»● ratio is read once"],[""," «5»return «»{ name: path, ...colors, ratio: «c»r«»atio }"],["","}"],["",""],["","«5»export function «4»passes«»(palette: «6»Palette«»): «6»boolean «»{"],[""," «5»return «»(palette.ratio ?? «3»0«») >= FLOOR «8»// TODO: check the bright pairs"],["","}"]],GC=21;function UC(){return["«K4» theme.ts «s» scenes.ts «s» contrast.ts ",...BC.map(([t,e],n)=>{let r=String(n+1).padStart(3);return`${n+1===GC?`«b»${r}`:`«d»${r}`} ${t||"«» "}«»${e}`})]}function ep(t,e,n,r){let i=Math.max(1,r-t.length-2-n.length),o=0,s=`«6»${t}«b»[`;for(let[a,c]of e){let u=Math.min(i-o,Math.round(c*i));s+=`«${a}»${"|".repeat(u)}`,o+=u}return`${s}«»${" ".repeat(i-o)}${n}«b»]`}var WC=[[0.31,0.07,0],[0.22,0.02,0.03],[0.04,0.01,0],[0.52,0.12,0],[0.1,0.02,0],[0.41,0.11,0],[0.02,0,0],[0.15,0.03,0.04]],KC=["«s» 4127 kec 24 0 412G 612M «s»R 38.2 3.7 3:12.44 node dev.js"," 2210 kec 31 0 411G 1.2G «2»R«» 12.0 7.5 1:02.10 «d»/Applications/«b»Ghostty"," 3301 kec 31 0 409G 12M S 4.4 0.1 0:05.61 «b»zsh"," 3302 kec 31 0 409G 9.8M S 0.0 0.1 0:00.42 «d»├─ «b»nvim «»src/theme.ts"," 3310 kec 31 0 410G 88M S 1.2 0.5 0:03.18 «d»│ └─ «b»tsserver"," 3402 kec 24 0 409G 21M «2»R«» 0.6 0.1 0:01.02 «d»└─ «b»htop"," 501 kec 31 «4»10«» 409G 34M S 0.3 0.2 0:02.77 «b»bun «»test --watch"," 1180 kec 31 0 409G 72M «1»D«» 0.0 0.4 0:00.91 «b»rsync «»-a ~/Pictures backup:"," 812 «d»root«» «1» 4 -20«» 410G 1.5G S 3.1 9.4 0:44.02 «d»kernel_task"," 167 «d»root«» 31 0 411G 402M S 0.9 2.5 0:12.80 «d»WindowServer"," 344 «d»_mdns«» 31 0 408G 5.1M S 0.0 0.0 0:00.33 «d»mDNSResponder"],zC=["Help","Setup","Search","Filter","Tree","SortBy","Nice -","Nice +","Kill","Quit"];function DC(t,e,n){return`«${t}»${e}${" ".repeat(Math.max(0,n-_(e)))}`}function qC(t){let e=t-2,n=Math.floor((e-2)/2),r=(i)=>{let[o,s,a]=WC[i],c=`${((o+s+a)*100).toFixed(1)}%`;return ep(String(i).padStart(3),[["2",o],["1",s],["4",a]],c,n)};return[...[0,1,2,3].map((i)=>`${r(i)} ${r(i+4)}`),`${ep("Mem",[["2",0.45],["4",0.1],["3",0.07]],"9.84G/16.0G",n)} «6»Tasks: «b»214«», 1093 thr; «B2»4«» running`,`${ep("Swp",[["1",0.15]],"0.31G/2.00G",n)} «6»Load average: «b»2.14 «»1.87 «d»1.52`,`${" ".repeat(n)} «6»Uptime: «b»3 days, 04:12:55`,"",DC("K2"," PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command",e),...KC.map((i)=>i.startsWith("«s»")?`${i}${" ".repeat(Math.max(0,e-_(i.replace(/«[^»]*»/g,""))))}`:i)]}function YC(t){let e=t-2,n="",r=0;return zC.forEach((i,o)=>{let s=`F${o+1}`,a=i.padEnd(6);if(r+s.length+a.length<=e)n+=`«»${s}«K6»${a}`,r+=s.length+a.length}),`${n}«K6»${" ".repeat(Math.max(0,e-r))}`}function dv(t,e,n){if(t==="Editor")return UC();if(t==="Top")return qC(n);let r=zt.find((s)=>s.name===t)?.lines??[],i=e?LC[t]:void 0,o=i?i.map((s)=>r[s]??""):r;return t==="Shell"?[...o.slice(0,-1),...FC,...o.slice(-1)]:o}function pl(t,e){let n=[];for(let r of t){let i=Wo(r,e);if(!i)continue;let o=0;n.push(i.map(([s,a])=>{let c={text:s,role:a,col:o};return o+=_(s),c}))}return n}function JC(t){let r=t-2-_("«K4» NORMAL «s» main src/theme.ts [+] ".replace(/«[^»]*»/g,""))-_("«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% ".replace(/«[^»]*»/g,""));return`${"«K4» NORMAL «s» main src/theme.ts [+] "}${" ".repeat(Math.max(0,r))}${"«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% "}`}function VC(t,e){if(t.id==="code")return[JC(e),'«d»"src/theme.ts" 26L, 912B written'];return t.id==="monitor"?[YC(e)]:[]}function ZC(t,e,n){let r=pl(VC(t,e),e),i=Math.max(0,n-r.length),o=[];for(let a of[...t.scenes].reverse()){let c=pl(dv(a,!1,e),e),u=pl(dv(a,!0,e),e),l=[c,u].find((d)=>o.length+d.length<=i);if(!l){if(o.length===0)o=t.tail?u.slice(u.length-i):u.slice(0,i);break}o=[...l,...o]}if(r.length===0)return o;let s=pl(Array.from({length:i-o.length},()=>t.id==="code"?"«4»~":""),e);return[...o,...s,...r]}function Wa(t){let e=Ga.find((n)=>n.id===t.id);return e?ZC(e,t.width,t.rows):[]}function np(t,e){let{text:n,ground:r}=mv(t);return n===e||r===e}function hv(t,e){let n=t.inner;return Ga.map((r)=>({name:r.name,count:Wa({id:r.id,name:r.name,col:n.col,row:n.row,width:n.cols,rows:n.rows}).flat().filter((i)=>np(i.role,e)).length}))}function mv(t){if(t==="s")return{text:1,ground:3};if(t==="c")return{text:1,ground:2};let e=/^([BK]?)(\d+)$/.exec(t);if(!e)return{text:1,ground:0};let n=4+Number(e[2]);return e[1]==="K"?{text:4,ground:n}:{text:n,ground:0}}function rp(t,e){if(e>=4){let n=/^([BK]?)(\d+)$/.exec(t);return n!==null&&Number(n[2])===e-4}return e===3&&t==="s"||e===2&&t==="c"}function gl(t){let e=[];for(let n of t.tiles)Wa(n).forEach((r,i)=>{r.forEach((o,s)=>{e.push({spot:{pane:n.id,line:i,run:s},col:o.col,text:o.text,role:o.role})})});return e}function ip(t,e){return t.pane===e.pane&&t.line===e.line&&t.run===e.run}function pv(t,e){let n=gl(t);return(n.find((r)=>rp(r.role,e))??n[0])?.spot}function bl(t,e){return e&&gl(t).find((n)=>ip(n.spot,e))?.spot}function gv(t,e,n){let r=gl(t);if(r.length===0)return;let i=e?r.findIndex((f)=>ip(f.spot,e)):-1;if(i<0)return r[0]?.spot;let o=r[i];if(n==="left"||n==="right")return r[(i+(n==="left"?r.length-1:1))%r.length]?.spot;if(n==="next"||n==="previous"){let f=t.tiles.map((g)=>g.id),h=f.indexOf(o.spot.pane),m=f[(h+(n==="next"?1:f.length-1))%f.length];return r.find((g)=>g.spot.pane===m)?.spot}let s=n==="up"?-1:1,a=r.filter((f)=>f.spot.pane===o.spot.pane),c=[...new Set(a.map((f)=>f.spot.line))],u=c[c.indexOf(o.spot.line)+s];if(u===void 0){let f=t.tiles.map((k)=>k.id),h=f.indexOf(o.spot.pane)+s,m=f[(h+f.length)%f.length],g=r.filter((k)=>k.spot.pane===m),b=s<0?g.at(-1)?.spot.line??0:g[0]?.spot.line??0,w=g.filter((k)=>k.spot.line===b);return(w.find((k)=>k.col>=o.col)??w.at(-1))?.spot}let l=a.filter((f)=>f.spot.line===u);return(l.find((f)=>f.col<=o.col&&f.col+_(f.text)>o.col)??l.find((f)=>f.col>=o.col)??l.at(-1))?.spot}function bv(t,e){let n=gl(t).find((r)=>ip(r.spot,e));return n?mv(n.role):void 0}var QC={lr:"─",du:"│",dr:"╭",dl:"╮",ru:"╰",lu:"╯",dlr:"┬",lru:"┴",dru:"├",dlu:"┤",dlru:"┼"};function wv(t){let e=new Map,n=(i,o,s)=>{let a=e.get(i)??new Map;e.set(i,a);let c=a.get(o)??new Set;a.set(o,c),c.add(s)};for(let i of t)for(let o=0;o<i.length;o++){let s=i.down?i.row+o:i.row,a=i.down?i.col:i.col+o;if(o>0)n(s,a,i.down?"u":"l");if(o<i.length-1)n(s,a,i.down?"d":"r")}let r=new Map;for(let[i,o]of e){let s=new Map;for(let[a,c]of o){let u=[...c].sort().join("");s.set(a,QC[u]??(c.has("l")||c.has("r")?"─":"│"))}r.set(i,s)}return r}import{execFile as XC}from"node:child_process";import{createHash as vv}from"node:crypto";import{existsSync as tL,mkdtempSync as eL,readFileSync as yl,rmSync as nL,statSync as Sv,writeFileSync as Ev}from"node:fs";import{homedir as rL,tmpdir as iL}from"node:os";import{join as wl}from"node:path";import{fileURLToPath as oL}from"node:url";import{promisify as sL}from"node:util";var Pn=sL(XC),$l=67108864,aL=4096,ap=["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/heic"],cL=["text/uri-list","text/plain;charset=utf-8","text/plain"],op=[...ap,"text/uri-list","text/plain"];function uL(t){try{return Sv(t).isFile()}catch{return!1}}function lL(t){let e=[],n="",r="",i=!1;for(let o=0;o<t.length;o++){let s=t[o];if(r==="'")if(s==="'")r="";else n+=s;else if(r==='"')if(s==='"')r="";else if(s==="\\"&&'"\\$`'.includes(t[o+1]??""))n+=t[++o];else n+=s;else if(s==="\\"&&o+1<t.length)n+=t[++o],i=!0;else if(s==="'"||s==='"')r=s,i=!0;else if(/\s/.test(s)){if(i)e.push(n);n="",i=!1}else n+=s,i=!0}if(i)e.push(n);return e}function $v(t){if(/^file:\/\//i.test(t))try{return oL(t)}catch{return}if(t.startsWith("~/"))return wl(rL(),t.slice(2));return t.startsWith("/")?t:void 0}function gs(t,e=uL){let n=[];for(let r of t.replace(/\r\n?/g,`
639
+ ${u} · ${Tt(l.length)} · ${f(r.length,"error")} · ${f(i.length,"warning")}`),r.length>0?1:0}async function L1(t,e){switch(t){case void 0:RH();return;case"add":await xH(E1(t,e));return;case"remove":OH(E1(t,e));return;case"search":await PH(e);return;case"init":await AH(e);return;case"check":return TH(e);default:throw Error(`unknown market action ${t} — ${kH.join(", ")}, or none to list them`)}}function E1(t,e){if(!e)throw Error(t==="add"?"market add takes a repository or a folder: ttheme market add alice/ttheme-dust":"market remove takes a market name — `ttheme market` lists them");return e}function F1(t,e){let n=Vr(t,e);return`${n} — ${Tt(Xe(e,n,Aa(t),ce(!1)).length)}, read in place`}function j1(t){return[...t].length===1&&t>=" "&&t!==""}function HH(t){return[...t.replace(/[\r\n\t]+/g," ")].filter(j1).join("")}function Ki(t,e,n=()=>!0){if(e==="backspace")return[...xd.segment(t)].slice(0,-1).map((r)=>r.segment).join("");if(e==="ctrl-u")return"";if(e==="ctrl-w"||e==="alt-backspace")return t.replace(/\S*\s*$/,"");return j1(e)&&n(e)?t+e:void 0}class Zr{value;constructor(t=""){this.value=t}key(t){let e=Ki(this.value,t);if(e===void 0)return!1;return this.value=e,!0}paste(t){this.value+=HH(t)}}import{performance as CH}from"node:perf_hooks";import{StringDecoder as LH}from"node:string_decoder";var FH=30,_1=50,jH=500,_H=5,B1=Buffer.from("\x1B[M"),il="\x1B]1337;ReportCellSize\x07\x1B[16t\x1B[14t\x1B[18t",Y1="\x1B[?1016$p\x1B[16t",J1={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end","1~":"home","7~":"home","3~":"delete","4~":"end","8~":"end","5~":"pgup","6~":"pgdn",I:"focus-in",O:"focus-out",Z:"shift-tab","1;2C":"shift-right","1;2D":"shift-left"},BH={"\r":"enter","\n":"enter","\t":"tab","\b":"backspace","":"backspace","\x1B":"esc","\x00":"ctrl-space"},G1=/\[([0-?]*)([ -/]*)([@-~])/y,GH=/^\[[0-?]*[ -/]*$/,U1=/\[(<-?\d+;-?\d+;-?\d+)([Mm])/y,UH=/^\[<[-\d;]*$/,W1=/\](\d+)/y,WH=/^\]\d*$/,K1=/\]\d+;/y,KH=/^1337;ReportCellSize=([\d.]+);([\d.]+)(?:;([\d.]+))?$/,zH=/^(1[0-2]|17|4;\d{1,3});(rgba?:[0-9a-fA-F/]+)$/,V1="\x1B[200~",rl="\x1B[201~";function DH(t){let e=BH[t];if(e)return e;let n=t.codePointAt(0)??0;if(n<27)return`ctrl-${String.fromCharCode(n+96)}`;return n<32?void 0:t}function ms(t){return{kind:"key",key:t}}function ps(t){return{events:[ms("esc")],end:t+1}}function qH(t){let e={};for(let n of t.split(":")){let r=n.indexOf("=");if(r>0)e[n.slice(0,r)]=n.slice(r+1)}return e}var YH=["left","middle","right",void 0];function Gm(t,e,n,r){if(!Number.isInteger(t)||t<0||t>=128||!(e>=0)||!(n>=0))return;let i=t&3,o={kind:"mouse",row:n,col:e,shift:(t&4)!==0,alt:(t&8)!==0,ctrl:(t&16)!==0};if(t&64)return{...o,action:"wheel",button:void 0,wheel:i%2===0?-1:1,sideways:i>=2,count:0};let s=YH[i],a=t&32?s?"drag":"move":r||!s?"release":"press";return{...o,action:a,button:s,wheel:0,sideways:!1,count:a==="press"?1:0}}function JH(t,e,n){let r=[],i=e;while(r.length<3&&i<t.length){let u=t.codePointAt(i);r.push(u),i+=u>65535?2:1}if(r.length<3)return n?{events:[],end:t.length}:void 0;let[o=0,s=0,a=0]=r,c=Math.max(o,s,a)<128?Gm(o-32,s-33,a-33,!1):void 0;return{events:c?[c]:[],end:i}}function VH(t,e,n,r,i){let o=Math.max(0,e)/i.w,s=Math.max(0,n)/i.h,a=Math.floor(o),c=Math.floor(s),u=Gm(t,a,c,r);return u&&{...u,fx:o-a,fy:s-c}}function z1(t,e,n,r){if((n==="M"||n==="m")&&e===""&&t.startsWith("<")){let[o=-1,s=0,a=0]=t.slice(1).split(";").map(Number),c=r?VH(o,s,a,n==="m",r):Gm(o,s-1,a-1,n==="m");return c?[c]:[]}if(n==="t"&&e===""){let[o,s=0,a=0]=t.split(";").map(Number),c=o===6?"cell":o===4?"window":o===8?"grid":void 0;return c?[{kind:"size",of:c,h:s,w:a}]:[]}if(n==="y"&&e==="$"&&t.startsWith("?")){let[o=0,s=0]=t.slice(1).split(";").map(Number);return[{kind:"mode",mode:o,value:s}]}if(n==="c"&&t.startsWith("?"))return[{kind:"attributes"}];let i=e===""?J1[`${t}${n}`]:void 0;return i?[ms(i)]:[]}function ZH(t,e,n,r){U1.lastIndex=e+1;let i=U1.exec(t);if(i)return{events:z1(i[1],"",i[2],r),end:e+1+i[0].length};G1.lastIndex=e+1;let o=G1.exec(t);if(!o){let d=t.slice(e+1);return!n&&(GH.test(d)||UH.test(d))?void 0:ps(e)}let[s,a="",c="",u=""]=o,l=e+1+s.length;if(a===""&&c===""&&u==="M")return JH(t,l,n);if(a==="200"&&u==="~"){let d=t.indexOf(rl,l);if(d===-1)return n?{events:[{kind:"paste",text:t.slice(l)}],end:t.length}:void 0;return{events:[{kind:"paste",text:t.slice(l,d)}],end:d+rl.length}}return{events:z1(a,c,u,r),end:l}}function QH(t){let e=KH.exec(t);if(e){let s=Number(e[3]??1);return[{kind:"size",of:"cell",h:Math.round(Number(e[1])*s),w:Math.round(Number(e[2])*s)}]}let n=zH.exec(t);if(n)return[{kind:"color",code:n[1],value:n[2]}];let[r="",i="",...o]=t.split(";");return[{kind:"osc",code:r,meta:qH(i),payload:o.join(";")}]}function XH(t,e,n){W1.lastIndex=e+1;let r=W1.exec(t),i=r?t[e+1+r[0].length]:void 0;if(i!==";"&&i!=="\x07"&&i!=="\x1B")return!n&&WH.test(t.slice(e+1))?void 0:ps(e);let o=[t.indexOf("\x07",e),t.indexOf("\x1B\\",e+2)].filter((a)=>a!==-1);if(o.length===0)return n?{events:[],end:t.length}:void 0;let s=Math.min(...o);return{events:QH(t.slice(e+2,s)),end:s+(t[s]==="\x07"?1:2)}}function tC(t,e,n){let r=t[e+2];if(r===void 0)return n?ps(e):void 0;if(!/^[A-Za-z]$/.test(r))return ps(e);let i=J1[r];return{events:i?[ms(i)]:[],end:e+3}}function eC(t,e,n,r){let i=t[e+1];if(i===void 0)return n?ps(e):void 0;if(i==="[")return ZH(t,e,n,r);if(i==="]")return XH(t,e,n);if(i==="O")return tC(t,e,n);if(i==="")return{events:[ms("alt-backspace")],end:e+2};if(/^[a-z]$/.test(i))return{events:[ms(`alt-${i}`)],end:e+2};return ps(e)}function D1(t,e=!1,n){let r=[],i=0;while(i<t.length){if(t[i]==="\x1B"){let a=eC(t,i,e,n);if(!a)return{events:r,rest:t.slice(i)};r.push(...a.events),i=a.end;continue}let o=String.fromCodePoint(t.codePointAt(i)),s=DH(o);if(s)r.push(ms(s));i+=o.length}return{events:r,rest:""}}function nC(t){let e=t.indexOf(B1);if(e===-1)return{bytes:t,carry:void 0};let n=[],r=0;while(e!==-1&&e+6<=t.length){n.push(t.subarray(r,e));let[i=0,o=0,s=0]=t.subarray(e+3,e+6);if(o>32&&s>32)n.push(Buffer.from(`\x1B[<${i-32};${o-32};${s-32}M`));r=e+6,e=t.indexOf(B1,r)}return n.push(t.subarray(r,e===-1?t.length:e)),{bytes:Buffer.concat(n),carry:e===-1?void 0:t.subarray(e)}}function q1(t){return K1.lastIndex=1,t.startsWith(V1)||t.startsWith("\x1B]")&&K1.test(t)}function rC(t,e){let n=t.slice(-rl.length)+e;return t.startsWith(V1)?n.includes(rl):n.includes("\x07")||n.includes("\x1B\\")}class Um{held="";timer;carry;pressed;wheeled;utf8=new LH("utf8");burst;cell;take;constructor(t,e=()=>!1,n=()=>{return}){this.burst=e,this.cell=n,this.take=(r)=>{let i=this.counted(r);if(i.length>0)t(i)}}counted(t){let e=CH.now();return t.filter((n)=>{if(n.kind!=="mouse")return!0;if(n.action==="wheel"){let o=n.wheel*(n.sideways?2:1),s=this.wheeled;if(s!==void 0&&s.way===o&&e-s.at<_H)return!1;return this.wheeled={at:e,way:o},!0}if(n.action==="release")n.count=this.pressed?.count??0;if(n.action!=="press"||!n.button)return!0;let r=this.pressed,i=r!==void 0&&r.button===n.button&&r.row===n.row&&Math.abs(r.col-n.col)<=1&&e-r.at<=jH;return n.count=i?r.count+1:1,this.pressed={at:e,button:n.button,row:n.row,col:n.col,count:n.count},!0})}feed(t){clearTimeout(this.timer);let e=typeof t==="string"?t:this.bytes(t);if(this.carry)this.wait(_1);if(!this.held&&!e.includes("\x1B")&&this.burst(e)){this.take([{kind:"paste",text:e}]);return}if(q1(this.held)&&!rC(this.held,e)){this.held+=e;return}let{events:n,rest:r}=D1(this.held+e,!1,this.cell());if(this.held=r,r&&!q1(r))this.wait(r.length===1?FH:_1);if(n.length>0)this.take(n)}bytes(t){let{bytes:e,carry:n}=nC(this.carry?Buffer.concat([this.carry,t]):t);return this.carry=n,this.utf8.write(e)}wait(t){clearTimeout(this.timer),this.timer=setTimeout(()=>this.flush(),t)}flush(){clearTimeout(this.timer),this.carry=void 0;let{events:t}=D1(this.held,!0,this.cell());if(this.held="",t.length>0)this.take(t)}stop(){clearTimeout(this.timer),this.held="",this.carry=void 0}}class Ha{window;grid;see(t){if(t.kind!=="size")return;if(t.of==="cell")return{w:t.w,h:t.h};if(t.of==="window")this.window=t;else this.grid=t;let e=this.window,n=this.grid;return e&&n&&n.h>0&&n.w>0?{h:Math.floor(e.h/n.h),w:Math.floor(e.w/n.w)}:void 0}}class Wm{known=!1;cell;see(t){if(t.kind==="mode"&&t.mode===1016)this.known=t.value===1||t.value===2;else if(t.kind==="size"&&t.of==="cell"&&t.w>0&&t.h>0)this.cell={w:t.w,h:t.h};else if(t.kind==="attributes")return{cell:this.known?this.cell:void 0};return}}var sl={on:"\x1B[?1049h",off:"\x1B[?1049l"},Rn={on:"\x1B[?25l",off:"\x1B[?25h"},Qr={on:"\x1B[?7l",off:"\x1B[?7h"},nr={on:"\x1B[?2004h",off:"\x1B[?2004l"},nv={on:"\x1B[?1004h",off:"\x1B[?1004l"},iC={on:"\x1B[?1000h\x1B[?1002h\x1B[?1006h",off:"\x1B[?1006l\x1B[?1002l\x1B[?1000l"},Z1={on:"\x1B[?1016h",off:"\x1B[?1016l\x1B[?1006h"};function Xr(t=process.env){return t.TTHEME_MOUSE==="off"?[]:[iC]}var rv={SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGTERM:15},oC=3000;class La extends Error{exit;constructor(t){super(t);this.exit=128+rv[t]}}var In=[],zi=new Map,Ca=new Map,Q1;function X1(t){return In.findLast((e)=>e.input===t)}var tv;function iv(t){for(let e of[...In].reverse())e.abort(t);if(!tv)tv=setTimeout(()=>{ov(),process.exit(t instanceof La?t.exit:1)},oC).unref()}var sC=Object.fromEntries(Object.keys(rv).map((t)=>[t,()=>iv(new La(t))]));function ov(){for(let t of[...In].reverse())t.close()}function aC(){for(let t of In)t.reassert();In.at(-1)?.redraw()}function ev(t){let e=t?"on":"off";for(let[n,r]of Object.entries(sC))process[e](n,r);if(process[e]("uncaughtException",iv),process[e]("exit",ov),process.platform!=="win32")process[e]("SIGCONT",aC)}function ol(){}class sv{input;output;failed;modes=[];assumed;owned=[];keys;tty;take;resized;queued=[];asking;reject=ol;open=!0;aborted=!1;constructor(t={}){if(this.input=t.input??process.stdin,this.output=t.output??process.stdout,this.tty=this.output.isTTY===!0&&this.input.isTTY===!0,this.assumed=t.assume??[],this.keys=new Um((r)=>this.deliver(r),t.burst,()=>zi.has(Z1)?Q1:void 0),this.failed=new Promise((r,i)=>{this.reject=i}),this.failed.catch(ol),this.tty&&!In.some((r)=>r.tty))ev(!0);In.push(this);let e="";for(let r of this.assumed)if(!zi.has(r))e+=r.on;for(let r of t.modes??[])e+=this.claim(r);this.write(e);let n=Ca.get(this.input)??0;if(n===0)this.input.setRawMode?.(!0);Ca.set(this.input,n+1),this.input.on("data",this.received),this.input.resume(),this.output.on("resize",this.resizing),this.output.on("error",ol)}hold(t){this.write(this.claim(t))}pixels(t){Q1=t,this.hold(Z1)}get cols(){return this.output.columns||80}get rows(){return this.output.rows||24}write(t){if(t&&this.open)this.output.write(t)}listen(t){this.take=t;let e=this.queued;if(this.queued=[],e.length>0)t(e)}onResize(t){this.resized=t}until(t){return Promise.race([t,this.failed])}loop(t,e=()=>{}){return this.until(new Promise((n)=>{let r=!1;this.listen((i)=>{for(let o of i){let s=r?void 0:t(o);if(s!==void 0)r=!0,n(s)}if(!r)e()})}))}ask(t,e,n,r=!0){return new Promise((i)=>{let o={hold:r,pick:(c)=>{let u=e(c);if(u===void 0)return!1;return s(u),!0}},s=(c)=>{if(clearTimeout(a),this.asking===o)this.asking=void 0;i(c),this.release()},a=setTimeout(()=>s(void 0),n);this.asking=o,this.write(t)})}abort(t){if(this.aborted)return;this.aborted=!0,this.keys.stop(),this.reject(t)}redraw(){this.resized?.()}reassert(){if(this.open)this.input.setRawMode?.(!0),this.write([...this.assumed,...this.owned].map((t)=>t.on).join(""))}close(){if(!this.open)return;this.keys.stop(),this.input.off("data",this.received),this.output.off("resize",this.resizing);let t="";for(let n of[...this.modes].reverse()){let r=(zi.get(n)??1)-1;if(r===0)zi.delete(n),t+=n.off;else zi.set(n,r)}this.write(t),this.open=!1;let e=(Ca.get(this.input)??1)-1;if(e===0)Ca.delete(this.input),this.input.setRawMode?.(!1),this.input.pause();else Ca.set(this.input,e);if(this.output.off("error",ol),In.splice(In.indexOf(this),1),this.tty&&!In.some((n)=>n.tty))ev(!1)}received=(t)=>{if(X1(this.input)===this&&!this.aborted)this.keys.feed(t)};resizing=()=>{if(X1(this.input)===this)this.resized?.()};claim(t){this.modes.push(t);let e=zi.get(t)??0;if(zi.set(t,e+1),e>0)return"";return this.owned.push(t),t.on}deliver(t){let e=this.asking,n=e?t.filter((r)=>!e.pick(r)):t;if(n.length===0)return;if(!this.take||this.asking?.hold){this.queued.push(...n);return}this.take(n)}release(){if(this.take&&this.queued.length>0){let t=this.queued;this.queued=[],this.take(t)}}}async function ti(t,e){let n=new sv(t);try{return await e(n)}finally{n.close()}}var cC=3;function Fa(t,e){return`${t}/${e}`}function av(t){return ct(t.name)?de(t.name):t.name}function gs(t){return t.catalog!==void 0&&uv(t.group)?Fa(t.group,t.catalog):void 0}function Km(t){if(t?.kind==="palette")return`palette ${t.entry.name}`;if(t?.kind==="group")return`group ${t.name}`;if(t?.kind==="catalog")return`catalog ${Fa(t.group,t.name)}`;return t?.kind??""}function al(t,e){return Mi([t.name,t.group,t.native??"",t.catalog??"",...t.nativeNames??[],...Jc(t.booru)],e)}function cv(t,e,n){let r=n.trim(),i=[],o=new Set,s=(a)=>({kind:"palette",entry:a});for(let a of t){if(a.default||o.has(a.group))continue;o.add(a.group);let c=t.filter((f)=>!f.default&&f.group===a.group),u=r?c.filter((f)=>al(f,r)):c;if(r&&u.length===0)continue;let l=r.length>0||e.has(a.group);if(i.push({kind:"group",name:a.group,native:a.native,lead:c.find((f)=>f.lead)??a,expanded:l,count:u.length}),!l)continue;let d=u.filter((f)=>gs(f)!==void 0);for(let f of new Set(d.map((h)=>h.catalog))){let h=d.filter((p)=>p.catalog===f),m=r.length>0||e.has(Fa(a.group,f));if(i.push({kind:"catalog",group:a.group,name:f,lead:h[0],expanded:m,count:h.length}),m)i.push(...h.map(s))}i.push(...u.filter((f)=>gs(f)===void 0).map(s))}return i}function uC(t,e){let n=e.trim(),r=new Set(t.filter((i)=>!i.default&&(n===""||al(i,n))).map((i)=>i.group));return cv(t,new Set,"").filter((i)=>i.kind==="group"&&r.has(i.name))}function uv(t){return t.includes("@")}function zm(t,e,n,r,i=!0){let o=n-1;if(o<0)return t;let s;if(!Number.isFinite(e))s=e>0?o:0;else if(e>0)s=t>=o?i?0:o:Math.min(o,t+e);else s=t<=0?i?o:0:Math.max(0,t+e);if(!r(s))return s;let a=Math.sign(e),c=s+a;if(c>=0&&c<=o)return c;return i&&Math.abs(e)===1?c<0?o:0:s-a}function cl(t,e){let n={home:Number.NEGATIVE_INFINITY,end:Number.POSITIVE_INFINITY,pgup:-e,pgdn:e};return t===void 0?void 0:n[t]}function lC(t){let e=t.findIndex((n)=>n.kind==="group"&&uv(n.name));return e>0&&t.slice(0,e).some((n)=>n.kind==="group")?[...t.slice(0,e),{kind:"rule"},...t.slice(e)]:t}function dC(t){let e=t.findIndex((n)=>n.kind==="palette");return e===-1?0:e}function ul(t){return t==="decode"||t==="glitch"?t:"typewriter"}function bs(t,e,n){return Vt({kind:"row",at:t,part:e},n)}class ja{picked;scope;maxItems;named=[];series=[];color;onFocus;note;entries=[];seriesPad=0;namePad=0;expanded=new Set;rows=[];cursor=0;top=0;filter="";lastFocused="";constructor(t){this.picked=t.picked,this.scope=t.scope??"palette",this.maxItems=t.maxItems??12,this.color=t.color??!0,this.onFocus=t.onFocus,this.note=t.note,this.load(t.entries),this.rebuild("first")}load(t){this.entries=t,this.named=t.filter((e)=>!e.default),this.series=[...new Set(this.named.map((e)=>e.group))],this.seriesPad=Math.max(0,...this.series.map((e)=>e.length)),this.namePad=Math.max(0,...this.named.map((e)=>this.indent(e).length+av(e).length))}indent(t){return gs(t)===void 0?" ":" "}setEntries(t){this.load(t),this.rebuild("stay")}setFilter(t){if(t!==this.filter)this.filter=t,this.rebuild("keep")}clear(){let t=this.rows[this.cursor];if(t?.kind==="palette"&&!t.entry.default){this.expanded.add(t.entry.group);let e=gs(t.entry);if(e!==void 0)this.expanded.add(e)}this.setFilter("")}focusedRow(){return this.rows[this.cursor]}refocus(){this.lastFocused="",this.sync()}members(t,e){let n=this.scope==="palette"?this.filter.trim():"";return this.named.filter((r)=>r.group===t&&(e===void 0||r.catalog===e)&&(n===""||al(r,n)))}everyone(t){return t.flatMap((e)=>e.kind==="group"?this.members(e.name):[])}pick(){let t=this.rows[this.cursor],e=t?.kind==="palette"?[t.entry.name]:t?.kind==="group"?this.members(t.name).map((r)=>r.name):t?.kind==="catalog"?this.members(t.group,t.name).map((r)=>r.name):t?.kind==="all"?this.everyone(this.rows).map((r)=>r.name):[];if(e.length===0)return;let n=e.some((r)=>!this.picked.has(r));for(let r of e)if(n)this.picked.add(r);else this.picked.delete(r)}pickedIn(t,e){return this.members(t,e).filter((n)=>this.picked.has(n.name)).length}pickedCount(){if(this.scope==="palette")return this.named.filter((t)=>this.picked.has(t.name)).length;return this.series.filter((t)=>this.members(t).every((e)=>this.picked.has(e.name))).length}total(){return this.scope==="series"?this.series.length:this.named.length}matched(){let t=this.filter.trim();if(this.scope==="series")return this.rows.filter((e)=>e.kind==="group").length;return t?this.named.filter((e)=>al(e,t)).length:this.named.length}sync(){let t=this.rows[this.cursor],e=t?.kind==="palette"?t.entry:t?.kind==="group"&&this.scope==="series"?t.lead:void 0;if(e&&e.name!==this.lastFocused)this.lastFocused=e.name,this.onFocus?.(e)}rebuild(t){let e=this.rows[this.cursor],n=this.scope==="series"?uC(this.entries,this.filter):cv(this.entries,this.expanded,this.filter);this.rows=n.length>0?lC([{kind:"all",count:this.allCount(n)},...n]):[];let r=n.length>0?this.rows.indexOf(n[dC(n)]):0;if(t==="first")this.cursor=r;else if(t==="keep"||t==="stay"){let i=Km(e),o=e?.kind==="palette"||t==="stay"?this.rows.findIndex((s)=>Km(s)===i):-1;this.cursor=o===-1?r:o}else if(this.cursor>=this.rows.length)this.cursor=Math.max(0,this.rows.length-1);this.sync()}allCount(t){return this.scope==="series"?t.length:this.everyone(t).length}move(t,e=!0){this.cursor=zm(this.cursor,t,this.rows.length,(n)=>this.rows[n]?.kind==="rule",e),this.sync()}point(t){let e=this.rows[t];if(!e||e.kind==="rule")return!1;return this.cursor=t,this.sync(),!0}flip(){let t=this.rows[this.cursor];if(t?.kind==="group"||t?.kind==="catalog")this.fold(!t.expanded)}foldable(){let t=this.rows[this.cursor];return(t?.kind==="group"||t?.kind==="catalog")&&this.scope==="palette"&&!this.filter}open(){if(this.foldable())this.flip();else this.pick()}toggle(t){if(this.expanded.has(t))this.expanded.delete(t);else this.expanded.add(t);this.rebuild("clamp")}climb(t,e){this.expanded.delete(t),this.rebuild("clamp"),this.reach(e)}reach(t){this.cursor=Math.max(0,this.rows.findIndex((e)=>Km(e)===t)),this.sync()}fold(t){if(this.filter||this.scope==="series")return;let e=this.rows[this.cursor];if(e?.kind==="group"){if(t!==e.expanded)this.toggle(e.name)}else if(e?.kind==="catalog"){if(t!==e.expanded)this.toggle(Fa(e.group,e.name));else if(!t)this.reach(`group ${e.group}`)}else if(e?.kind==="palette"&&!t&&!e.entry.default){let n=gs(e.entry);if(n===void 0)this.climb(e.entry.group,`group ${e.entry.group}`);else this.climb(n,`catalog ${n}`)}}window(){if(this.cursor<this.top)this.top=this.cursor;if(this.cursor>=this.top+this.maxItems)this.top=this.cursor-this.maxItems+1;this.top=Math.min(this.top,Math.max(0,this.rows.length-this.maxItems));let t=this.rows.slice(this.top,this.top+this.maxItems);return{lines:t.map((e,n)=>this.renderRow(e,this.top+n)),above:this.top,below:this.rows.length-this.top-t.length}}renderRow(t,e){if(t.kind==="rule")return` ${this.color?`${C}${"── Markets ──────────"}${Ft}`:"── Markets ──────────"}`;return bs(e,"row",this.rowText(t,e))}rowText(t,e){let n=e===this.cursor,r=t.kind==="palette"?t.entry:t.kind==="all"?void 0:t.lead,i=this.color&&n&&r!==void 0,o=(v)=>this.color?`${C}${v}${$e}`:v,s=(v)=>this.color?`${ut}${v}${$e}`:v,a=(v)=>this.color?` ${Kg(zc(v),i?qe(v.foreground):"\x1B[39m")}`:"",c=n?i?`${qe(r.cursor)}▌\x1B[39m `:"▌ ":" ",u=(v)=>i?`${c}${$c(r.selection,r.foreground)} ${v} ${Ft}`:`${c} ${v}`,l=(v)=>bs(e,"box",`${v?"●":"○"} `),d=(v)=>bs(e,"fold",`${v?"▾":"▸"} `);if(t.kind==="all")return u(`${l(this.everyone(this.rows).every((v)=>this.picked.has(v.name)))}Select all ${o(`(${t.count})`)}`);if(t.kind==="group"&&this.scope==="series"){let v=`(${t.count})${t.native?` ${t.native}`:""}`;return u(`${l(this.pickedIn(t.name)===t.count)}${s(t.name.padEnd(this.seriesPad))}${a(t.lead)}${this.color?" ":" "}${o(v)}`)}let f=this.rows[this.cursor],h=(v,S)=>this.color&&f?.kind==="palette"&&v?`${ut}${qe(f.entry.cursor)}${S}${$e}\x1B[39m`:s(S);if(t.kind==="group"){let v=h(f?.kind==="palette"&&f.entry.group===t.name,t.name),S=t.native?` ${o(t.native)}`:"";return u(`${d(t.expanded)}${v} ${o(`(${this.pickedIn(t.name)}/${t.count})`)}${S}`)}if(t.kind==="catalog"){let v=f?.kind==="palette"&&gs(f.entry)===Fa(t.group,t.name),S=o(`(${this.pickedIn(t.group,t.name)}/${t.count})`);return u(` ${d(t.expanded)}${h(v,t.name)} ${S}`)}let m=t.entry,p=this.indent(m),b=av(m),$=this.color?b.padEnd(this.namePad-p.length):b,k=n?s($):$;return u(`${p}${l(this.picked.has(m.name))}${k}${a(m)}${this.note?.(m)??""}`)}}function Dm(t){let e=t.named[Math.floor(Math.random()*t.named.length)],n=t.series[Math.floor(Math.random()*t.series.length)];return e&&n?`${e.name} | ${n}`:""}class ll{fx;make;redraw;roller;example="";step=0;seed=0;timer;constructor(t,e,n){this.fx=t,this.make=e,this.redraw=n,this.roll(),this.roller=setInterval(()=>{this.roll(),this.step=8,this.redraw()},3000),this.roller.unref?.()}stop(){clearInterval(this.roller),clearTimeout(this.timer)}roll(){let t=this.make();this.example=t.length>30?`${t.slice(0,29)}…`:t,this.seed=Math.floor(Math.random()*997)}text(){if(this.step===0)return this.example;if(!this.timer)this.timer=setTimeout(()=>{this.timer=void 0,this.step-=1,this.redraw()},60),this.timer.unref?.();let t=Math.floor(this.example.length*(8-this.step)/8);if(this.fx==="typewriter")return`${this.example.slice(0,t)}▏`;let e=this.fx==="decode"?"abcdefghijklmnopqrstuvwxyz":"▓▒░#*+=<>?/-_",n=this.fx==="decode"?(r)=>!/[a-z0-9]/i.test(r):(r)=>r===" ";return[...this.example].map((r,i)=>i+(i*7+this.seed)%3<t||n(r)?r:e[Math.floor(Math.random()*e.length)]??r).join("")}}var fC=5;class qm{picked;list;scope;color;required;most;hint;field=new Zr;input;output;state="active";error="";redraw=()=>{};constructor(t){this.scope=t.scope??"palette",this.picked=new Set(t.installed??[]),this.color=t.color??!0,this.required=t.required??!1,this.most=t.maxItems??12,this.input=t.input,this.output=t.output,this.list=new ja({entries:t.entries,picked:this.picked,scope:this.scope,maxItems:this.most,color:this.color,...t.onFocus?{onFocus:t.onFocus}:{}}),this.hint=new ll(t.fx??"typewriter",()=>Dm(this.list),()=>this.redraw())}prompt(){return ti({input:this.input,output:this.output,modes:[Rn,nr]},async(t)=>{let e=new bm((r)=>t.write(r),()=>t.cols),n=()=>{return this.list.maxItems=Math.max(cC,Math.min(this.most,t.rows-fC)),this.draw()};this.redraw=()=>e.draw(n()),t.onResize(()=>e.redraw(n())),this.redraw();try{let r=await t.loop((i)=>{return this.take(i),this.state==="submit"||this.state==="cancel"?this.state:void 0},()=>this.redraw());return this.redraw=()=>{},e.end(this.draw()),r}finally{this.hint.stop()}})}take(t){if(t.kind==="paste"){this.field.paste(t.text),this.list.setFilter(this.field.value);return}if(t.kind!=="key")return;let e=t.key;if(this.state==="error")this.state="active";let n=cl(e,this.list.maxItems);if(e==="esc"||e==="ctrl-c")this.state="cancel";else if(e==="enter")if(this.required&&this.picked.size===0)this.error=`Pick at least one ${this.scope}`,this.state="error";else this.state="submit";else if(e==="up"||e==="down")this.list.move(e==="up"?-1:1);else if(e==="left"||e==="right")this.list.fold(e==="right");else if(n!==void 0)this.list.move(n);else if(e===" ")this.list.pick();else if(this.field.key(e))this.list.setFilter(this.field.value)}draw(){let t=(m)=>this.color?`${C}${m}${Ft}`:m,e=(m)=>this.color?`${kc}${m}${Ft}`:m,n=this.scope==="series"?"Series":"Catalog";if(this.state==="submit")return[`${t("◇")} ${n} ${t(`· ${this.list.pickedCount()} picked`)}`];if(this.state==="cancel")return[`${t(`◇ ${n} · cancelled`)}`];let r=this.field.value,i=`${e("◆")} ${n} ${t(`(${this.list.matched()}/${this.list.total()} · ${this.list.pickedCount()} picked)`)}`,o=this.hint.text(),s=`${e("│")} ${r?`${r}_`:t(`Search…${o?` e.g. ${o}`:""}`)}`,{lines:a,below:c}=this.list.window(),u=a.length>0?a.map((m)=>`${e("│")} ${m}`):[`${e("│")} ${t(`No ${this.scope==="series"?"series":"palettes"} match '${r}'`)}`];while(u.length<this.list.maxItems)u.push(e("│"));let l=c>0?`${e("│")} ${t(`↓ ${c} more`)}`:e("│"),d=this.scope==="series"?"":" · ←→ fold",f=this.scope==="series"?"continue":"install",h=this.state==="error"?`${e("└")} ${this.color?`${ne}${this.error}${Ft}`:this.error}`:`${e("└")} ${t(`↑↓ move${d} · space pick · type to filter · enter ${f} · esc cancel`)}`;return[i,s,...u,l,h]}}var ws=[{tab:"catalog",title:"Catalog",heading:"Discover palettes"},{tab:"installed",title:"Installed",heading:"Installed palettes"},{tab:"markets",title:"Markets",heading:"Manage markets"},{tab:"errors",title:"Errors",heading:"Problems"}],Ym=34,hC=72,mC=94,pC=22,lv=40,dv=10,dl=3,gC=600,bC=500,wC=300,fv=12,$C="\x1B[7;1m",Jm={title:"",lines:[],brief:""};function _a(t){let e=t.trim();if(e!==q&&!e.includes("/")&&!e.startsWith("~"))return;try{return Pr(e)}catch{return}}function hv(t){return t.charAt(0).toUpperCase()+t.slice(1)}class Vm{picked;tab="catalog";fields={catalog:new Zr,installed:new Zr,markets:new Zr,errors:new Zr};cursor={markets:0,errors:0};top={markets:0,errors:0};adds=new Map;removes=new Set;want=new Map;renew=new Set;updates;scope={catalog:void 0,installed:void 0};busy=new Map;failed=new Map;peeked=new Map;peekFailed=new Map;staging=new Set;timers=new Map;refreshed=[];inflight=new Set;markets;problems;kept;installed;startup;io;order;color;hub;owns;input;output;maxItems=12;paint;catalog;mine;hint;screen;state="active";phase="browse";offset=0;started=!1;log=[];working="";stopped;beat=0;asking;leaving;goto;repos;searching=!1;searchError;searched;asked=0;help=!1;worn;live;constructor(t){this.markets=t.markets,this.problems=t.problems,this.kept=t.kept,this.installed=new Set(t.installed),this.updates=new Set(t.updates??[]),this.startup=t.startup,this.io=t.io,this.order=t.order??((n)=>n),this.color=t.color??!0,this.hub=t.hub,this.owns=t.owns??!1,this.input=t.input,this.output=t.output,this.live=t.lookups??!0,this.paint=t.onFocus,this.picked=new Set(t.installed);let e=this.entries();this.catalog=new ja({entries:e,picked:this.picked,color:this.color,maxItems:this.maxItems,note:(n)=>this.mark(n),onFocus:(n)=>this.focus("catalog",n)}),this.mine=new ja({entries:this.mineOf(e),picked:this.picked,color:this.color,maxItems:this.maxItems,note:(n)=>this.mark(n),onFocus:(n)=>this.focus("installed",n)}),this.hint=new ll(t.fx??"typewriter",()=>Dm(this.tab==="installed"?this.mine:this.catalog),()=>this.redraw());for(let n of t.due)this.update(n)}run(){let t=[...this.owns?[sl,Rn,Qr]:[],nr,...Xr()],e=this.owns?[]:[Rn,Qr];return ti({input:this.input,output:this.output,modes:t,assume:e},async(n)=>{let r=new Gi({write:(i)=>n.write(i),view:()=>this.state==="active"?{lines:this.view(),ticking:this.phase==="applying"}:void 0,beat:()=>{this.beat+=1}});this.screen=r,n.onResize(()=>{r.reset(),r.request()}),r.now();try{return await n.loop((i)=>{if(i.kind==="key")this.key(i.key);else if(i.kind==="paste")this.pasted(i.text);else if(i.kind==="mouse")this.mouse(i,r);return this.state==="active"?void 0:this.state},()=>r.soon())}finally{r.stop(),this.screen=void 0,this.hint.stop();for(let i of this.timers.values())clearTimeout(i);this.timers.clear()}})}applied(){return this.started}lines(){return this.log}failure(){return this.stopped}next(){return this.goto}async idle(){await Promise.allSettled([...this.inflight])}result(){let t=new Set(this.entries().map((e)=>e.name));return{picked:new Set([...this.picked].filter((e)=>t.has(e))),adds:[...this.adds.values()],removes:[...this.removes],auto:Object.fromEntries(this.want),renew:[...this.renew].filter((e)=>this.updates.has(e)&&this.picked.has(e)&&t.has(e)),refreshed:this.refreshed}}key(t){if(t==="ctrl-c"){this.state="cancel";return}if(this.help){if(t==="?"||t==="esc")this.help=!1;return}if(this.leaving!==void 0){if(t==="esc")this.leaving=void 0;else if(/^[yn]$/i.test(t)){if(t.toLowerCase()==="y")this.begin();else this.goto=this.leaving,this.state="cancel";this.leaving=void 0}return}if(this.asking){if(t==="esc")this.asking=void 0;else if(/^[yn]$/i.test(t))this.answer(t.toLowerCase()==="y");return}if(this.phase!=="browse"){this.steer(t);return}let e=cl(t,this.maxItems),n=this.list();if(t==="enter")if(n?.foldable())n.flip();else if(this.dirty())this.phase="review",this.offset=0;else this.state="submit";else if((t==="esc"||t==="ctrl-u")&&this.fields[this.tab].value)this.clear();else if(t==="esc")this.state="cancel";else if(t==="?")this.help=!0;else if(e!==void 0)this.move(e);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="left"||t==="right")this.side(t==="right");else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(F$(this.hub,t==="tab"?1:-1))}else if(t==="shift-left"||t==="shift-right")this.switchTab(t==="shift-right"?1:-1);else if(t===" ")this.activate();else if(t==="ctrl-r"&&n)this.toggleRenew(n);else if(t==="ctrl-r"){let r=this.tab==="markets"?this.marketRow():void 0;if(r?.kind==="market"&&gt(r.market.source)&&!this.adds.has(r.market.source))this.update(r.market.source);else if(r?.kind==="find")this.search()}else if(t==="ctrl-s")this.cycle();else if(this.fields[this.tab].key(t))this.typed()}pasted(t){if(this.phase==="browse"&&!this.help&&!this.asking&&this.leaving===void 0)this.fields[this.tab].paste(t),this.typed()}mouse(t,e){if(this.help){if(t.action==="release")this.help=!1;return}let n=e.point(t),r=n?.target,i=this.phase==="browse"&&this.leaving===void 0&&!this.asking;if(t.action==="wheel"){if(!t.sideways&&(i||this.phase!=="browse"))this.wheel(t.wheel);return}if(!r)return;if(t.action==="press"&&t.button==="left"){if(!i)return;if(r.kind==="tab")this.show(r.tab);else if(r.kind==="chip")this.scopeTo(r.source);else if(r.kind==="row")this.pointRow(r.at)}else if(t.action==="release"&&n?.inside){if(r.kind==="key")this.key(r.key);else if(r.kind==="page"){if(this.phase!=="browse")this.scroll(r.step*this.span());else if(i)this.move(r.step*this.maxItems)}else if(r.kind==="hub"){if(i&&this.hub&&r.tab!==this.hub)this.leave(j$(r.tab))}else if(r.kind==="row"&&i)this.openRow(r,t.count)}}wheel(t){if(this.phase!=="browse"){this.scroll(t);return}let e=this.list();if(e)e.move(t,!1);else this.move(t,!1)}pointRow(t){let e=this.list();if(e){e.point(t);return}this.cursor[this.tab==="markets"?"markets":"errors"]=t,this.watch()}openRow(t,e){let n=this.list();if(n){if(t.part==="box")n.pick();else if(t.part==="fold")n.flip();else if(e===2)n.open()}else if(t.part==="box"||e===2)this.activate()}typed(){let t=this.fields[this.tab].value;if(this.list()?.setFilter(t),this.tab==="markets")this.later("search",gC,()=>this.lookup()),this.watch()}clear(){this.fields[this.tab].value="";let t=this.list();if(t)t.clear();else this.typed()}redraw(){if(this.state==="active")this.screen?.request()}focus(t,e){if(this.tab===t&&this.state!=="submit"&&this.state!=="cancel")this.worn=e,this.paint?.(e)}track(t){this.inflight.add(t);let e=()=>this.inflight.delete(t);return t.then(e,e),t}list(){return this.tab==="catalog"?this.catalog:this.tab==="installed"?this.mine:void 0}active(){return[...this.markets.filter((t)=>!this.removes.has(t.source)),...this.adds.values()]}entries(){let t=this.active().flatMap((i)=>i.entries),e=new Set(t.map((i)=>i.name)),n=new Map,r=this.markets.filter((i)=>this.removes.has(i.source)).flatMap((i)=>i.entries);for(let i of[...this.kept,...r])if(this.installed.has(i.name)&&!e.has(i.name))n.set(i.name,i);return this.order([...t,...n.values()])}mineOf(t){return t.filter((e)=>this.installed.has(e.name))}scoped(t,e){let n=this.scope[e],r=n===void 0?void 0:this.active().find((o)=>o.source===n);if(!r)return this.scope[e]=void 0,t;let i=new Set(r.entries.map((o)=>o.name));return t.filter((o)=>i.has(o.name))}reload(){let t=this.entries();this.catalog.setEntries(this.scoped(t,"catalog")),this.mine.setEntries(this.scoped(this.mineOf(t),"installed"))}chips(t){let e=t==="catalog"?this.entries():this.mineOf(this.entries()),n=this.active().map((r)=>({source:r.source,label:r.id,count:r.entries.filter((i)=>!i.default&&(t==="catalog"||this.installed.has(i.name))).length})).filter((r)=>t==="catalog"||r.count>0||r.source===this.scope[t]);return[{source:void 0,label:"All",count:e.filter((r)=>!r.default).length},...n]}cycle(){let t=this.tab;if(t!=="catalog"&&t!=="installed"||this.active().length<2)return;let e=this.chips(t),n=Math.max(0,e.findIndex((r)=>r.source===this.scope[t]));this.scopeTo(e[(n+1)%e.length]?.source)}scopeTo(t){let e=this.tab;if(e!=="catalog"&&e!=="installed")return;this.scope[e]=t,this.reload(),this.list()?.refocus()}switchTab(t){let e=ws.findIndex((n)=>n.tab===this.tab);this.show(ws[(e+t+ws.length)%ws.length]?.tab??"catalog")}show(t){if(this.tab=t,this.list()?.refocus(),t==="markets")this.lookup(),this.watch()}move(t,e=!0){let n=this.list();if(n){n.move(t,e);return}let r=this.tab==="markets"?"markets":"errors",i=r==="markets"?this.marketRows().map((o)=>o.kind==="rule"):this.problemRows().map(()=>!1);this.cursor[r]=zm(this.cursor[r],t,i.length,(o)=>i[o]===!0,e),this.watch()}side(t){let e=this.list();if(e){e.fold(t);return}let n=this.tab==="markets"?this.marketRow():void 0;if(n?.kind==="market"&&gt(n.market.source))if(t===n.market.auto)this.want.delete(n.market.source);else this.want.set(n.market.source,t)}activate(){let t=this.list();if(t){t.pick();return}let e=this.tab==="markets"?this.marketRow():void 0;if(e?.kind==="market")this.toggleMarket(e.market);else if(e?.kind==="add")this.load(e.source,!0);else if(e?.kind==="repo"){let n=this.known(e.source),r=this.marketRows().findIndex((i)=>i.kind==="market"&&i.market===n);if(n&&r>=0)this.cursor.markets=r;else if(!n)this.load(e.source,!0)}else if(e?.kind==="find")this.search()}toggleMarket(t){if(this.adds.has(t.source))this.adds.delete(t.source),this.want.delete(t.source);else if(this.removes.has(t.source))this.removes.delete(t.source);else this.removes.add(t.source);this.reload()}known(t){return[...this.markets,...this.adds.values()].find((e)=>Uo(e.source,t))}load(t,e){let n=this.peeked.get(t);if(n){if(e)this.arrive(t,n);return}if(e)this.staging.add(t);if(this.busy.has(t))return;this.failed.delete(t),this.peekFailed.delete(t),this.busy.set(t,"Fetching…"),this.track(this.io.fetch(t)).then((r)=>{if(this.busy.delete(t),this.peeked.set(t,r),this.staging.delete(t))this.arrive(t,r);this.redraw()},(r)=>{if(this.busy.delete(t),this.staging.delete(t))this.failed.set(t,r.message);else this.peekFailed.set(t,r.message);this.redraw()})}arrive(t,e){let n=this.active().find((r)=>r.id===e.id);if(n)this.failed.set(t,`${e.id} already names the market at ${n.shown}`);else if(Ot(t)||t===q)this.stage(e,e.auto);else this.asking=e;this.redraw()}later(t,e,n){this.cancel(t),this.timers.set(t,setTimeout(()=>{if(this.timers.delete(t),this.state!=="submit"&&this.state!=="cancel")n()},e))}cancel(t){clearTimeout(this.timers.get(t)),this.timers.delete(t)}wants(t){return!this.known(t)&&!this.peeked.has(t)&&!this.busy.has(t)&&!this.peekFailed.has(t)}watch(){if(!this.live||this.tab!=="markets")return;let t=_a(this.fields.markets.value);if(t&&this.wants(t))this.later("typed",bC,()=>this.load(t,!1));else this.cancel("typed");let e=this.marketRow();if(e?.kind==="repo"&&this.wants(e.source)){let n=e.source;this.later("focus",wC,()=>{let r=this.marketRow();if(this.tab==="markets"&&r?.kind==="repo"&&r.source===n)this.load(n,!1)})}else this.cancel("focus")}answer(t){let e=this.asking;if(this.asking=void 0,e)this.stage(e,t)}stage(t,e){if(this.adds.set(t.source,t),e===t.auto)this.want.delete(t.source);else this.want.set(t.source,e);this.reload(),this.cursor.markets=Math.max(0,this.marketRows().findIndex((n)=>n.kind==="market"&&n.market.source===t.source))}update(t){if(this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Updating…"),this.track(this.io.refresh(t)).then(({market:e,refreshed:n,updates:r})=>{this.busy.delete(t),this.updates=new Set(r),this.markets=this.markets.map((i)=>i.source===t?e:i),this.problems=this.problems.filter((i)=>i.source!==t),this.refreshed.push(n),this.reload(),this.redraw()},(e)=>{this.busy.delete(t),this.failed.set(t,`Update failed: ${e.message}`),this.redraw()})}wanted(){let t=this.fields.markets.value.trim();return t&&!_a(t)?t:""}lookup(){if(this.live&&this.searched!==this.wanted())this.search()}search(){let t=this.wanted(),e=++this.asked;this.searched=t,this.searching=!0,this.searchError=void 0,this.track(this.io.search(t||void 0)).then((n)=>{if(e===this.asked)this.searching=!1,this.repos=n,this.watch(),this.redraw()},(n)=>{if(e===this.asked)this.searching=!1,this.searchError=n.message,this.redraw()})}marketRows(){let t=(...o)=>Mi(o,this.fields.markets.value),e=[...this.markets,...this.adds.values()],n=e.filter((o)=>t(o.id,o.shown,o.source)).map((o)=>({kind:"market",market:o})),r=_a(this.fields.markets.value);if(r&&!e.some((o)=>Uo(o.source,r)))n.push({kind:"add",source:r});let i=(this.repos??[]).map((o)=>({repo:o,source:_m(o)})).filter(({repo:o,source:s})=>t(s,o.description??""));return n.push({kind:"rule"},...i.length>0?i.map(({repo:o,source:s})=>({kind:"repo",repo:o,source:s})):[{kind:"find"}]),n}marketRow(){let t=this.marketRows();return t[this.at(t,"markets",(e)=>e?.kind==="rule")]}problemList(){let t=new Map([...this.markets,...this.adds.values()].map((e)=>[e.source,e.id]));return[...this.problems.filter((e)=>!(e.update&&e.source&&this.failed.has(e.source))),...[...this.failed].map(([e,n])=>({where:t.get(e)??e,message:n,source:e}))]}problemRows(){return this.problemList().filter((t)=>Mi([`${t.where} ${t.message}`],this.fields.errors.value))}at(t,e,n=()=>!1){let r=Math.min(this.cursor[e],Math.max(0,t.length-1));if(!n(t[r]))return r;return r>0?r-1:r+1}windowOf(t,e,n,r=()=>!1){let i=this.at(t,e,r);this.cursor[e]=i;let o=(l)=>r(t[l])?1:2,s=(l,d)=>{let f=0;for(let h=l;h<=d;h++)f+=o(h);return f},a=Math.min(this.top[e],i);while(a<i&&s(a,i)>this.maxItems)a+=1;while(a>0&&s(a-1,t.length-1)<=this.maxItems)a-=1;this.top[e]=a;let c=[],u=0;for(let l=a;l<t.length&&u+o(l)<=this.maxItems;l++)c.push(l),u+=o(l);return{lines:c.flatMap((l)=>{let d=n(t[l],l===i,l);return r(t[l])?d:d.map((f)=>bs(l,"row",f))}),above:a,below:t.length-a-c.length}}dim(t){return this.color?`${C}${t}${$e}`:t}bold(t){return this.color?`${ut}${t}${$e}`:t}warn(t){return this.color?`${ne}${t}\x1B[39m`:t}lit(t,e,n){if(e&&this.color&&t)return`${qe(t.cursor)}▌\x1B[39m ${$c(t.selection,t.foreground)} ${n} ${Ft}`;return`${e?"▌ ":" "} ${n}`}status(t){return this.adds.has(t.source)?"Will add":this.removes.has(t.source)?"Will remove":this.busy.get(t.source)??(this.failed.has(t.source)||t.status.startsWith("update failed")?"Update failed":"")}note(t){return` ${this.dim(t)}`}peeking(t){let e=this.peeked.get(t);return e?Tt(e.entries.filter((n)=>!n.default).length):""}marketLine(t,e,n){let r=(o)=>bs(n,"box",`${o} `);if(t.kind==="rule")return[` ${this.dim(`── On GitHub${this.searching?" · searching…":""} ──────────`)}`];if(t.kind==="market"){let o=t.market,s=this.status(o),a=e?this.bold(o.id):o.id,c=o.entries.filter((l)=>!l.default),u=gt(o.source)&&(this.want.get(o.source)??o.auto)?` ${this.dim("↻ auto-update")}`:"";return[this.lit(o.entries.find((l)=>!l.default),e,`${r(this.removes.has(o.source)?"○":"●")}${a}${u}${s?` ${this.dim(s)}`:""}`),this.note([o.source===q?"The ttheme catalog":Ot(o.source)?o.shown:o.source,Tt(c.length),`${c.filter((l)=>this.installed.has(l.name)).length} installed`,o.status].join(" · "))]}if(t.kind==="add"){let o=this.busy.get(t.source),s=this.failed.get(t.source)??this.peekFailed.get(t.source),a=this.peeked.get(t.source);return[this.lit(void 0,e,`${r("+")}Add ${tt(t.source)}${o?` ${this.dim(o)}`:""}`),s?` ${this.warn(s)}`:this.note(a?`${a.id} · ${this.peeking(t.source)}`:this.live?"Fetching its palettes…":"space fetches its palettes")]}if(t.kind==="find"){let o=this.fields.markets.value.trim(),s=o&&!_a(o),a=!this.searching&&!this.searchError&&this.repos===void 0,c=this.searching?"Searching GitHub…":this.searchError?"GitHub search failed":a?s?`Find "${o}" on GitHub`:"Find markets on GitHub":s?`No market on GitHub matches "${o}"`:"No market on GitHub yet";return[this.lit(void 0,e,`${r("⌕")}${c}`),this.note(this.searchError??(this.searching?"":a?"space searches GitHub":"space searches again"))]}let i=this.busy.get(t.source);return[this.lit(void 0,e,`${r(this.known(t.source)?"●":"○")}${t.source} ${this.dim(`★${t.repo.stargazers_count}`)}${i?` ${this.dim(i)}`:""}`),this.note([this.peeking(t.source),t.repo.description??""].filter(Boolean).join(" · "))]}problemLine(t,e){return[this.lit(void 0,e,`${this.warn("✗")} ${t.where}`),this.note(t.message)]}body(){let t=this.list();if(t){let n=this.fields[this.tab].value;return{...t.window(),empty:n?`No palettes match '${n}'`:this.tab==="installed"?"Nothing installed yet":"No palettes"}}if(this.tab==="markets")return{...this.windowOf(this.marketRows(),"markets",(n,r,i)=>this.marketLine(n,r,i),(n)=>n?.kind==="rule"),empty:""};let e=this.fields.errors.value;return{...this.windowOf(this.problemRows(),"errors",(n,r)=>this.problemLine(n,r)),empty:e?`No problems match '${e}'`:"No problems"}}changes(){return this.adds.size+this.removes.size+this.want.size}dirty(){let{picked:t,renew:e}=this.result();return this.changes()>0||e.length>0||t.size!==this.installed.size||[...t].some((n)=>!this.installed.has(n))}mark(t){if(!this.updates.has(t.name)||!this.installed.has(t.name))return"";return this.renew.has(t.name)?` ${this.bold("↑ update")}`:` ${this.dim("↑")}`}toggleRenew(t){let e=t.focusedRow(),n=this.entries(),r=(e?.kind==="palette"?[e.entry]:e?.kind==="group"?n.filter((o)=>o.group===e.name):e?.kind==="catalog"?n.filter((o)=>o.group===e.group&&o.catalog===e.name):e?.kind==="all"?n:[]).map((o)=>o.name).filter((o)=>this.updates.has(o)&&this.installed.has(o));if(r.length===0)return;let i=r.some((o)=>!this.renew.has(o));for(let o of r)if(i)this.renew.add(o);else this.renew.delete(o)}leave(t){if(this.dirty()){this.leaving=t;return}this.goto=t,this.state="cancel"}steer(t){if(this.phase==="review"){if(t==="enter")this.begin();else if(t==="esc")this.phase="browse"}else if(this.phase==="done"&&(t==="enter"||t==="esc"))this.state="submit";let e=t==="up"?-1:t==="down"?1:cl(t,this.span());if(e!==void 0)this.scroll(e)}scroll(t){this.offset=Number.isFinite(t)?Math.max(0,this.offset+t):t>0?Number.MAX_SAFE_INTEGER:0,this.redraw()}span(){return Math.max(dl,this.rows()-(this.hub?1:0)-4)}begin(){this.phase="applying",this.started=!0,this.offset=0,this.log=[],this.working="";let t={say:(e)=>{this.log.push(...e.split(`
640
+ `)),this.redraw()},status:(e)=>{this.working=e,this.redraw()}};this.track(this.io.apply(this.result(),t)).then(()=>this.ended(),(e)=>this.ended(e))}ended(t){this.working="",this.stopped=t,this.phase="done",this.offset=0,this.redraw()}pending(){let t=this.entries().filter((e)=>!e.default);return{names:t.filter((e)=>this.picked.has(e.name)&&!this.installed.has(e.name)),dropped:t.filter((e)=>this.installed.has(e.name)&&!this.picked.has(e.name))}}marketChanges(){let t=[];for(let e of this.adds.values()){let n=e.source!==q&&(this.want.get(e.source)??e.auto)?"updates on its own":"";t.push(`+ ${e.id} ${this.dim([e.source===q?"The ttheme catalog":e.shown,Tt(e.entries.filter((r)=>!r.default).length),n].filter(Boolean).join(" · "))}`)}for(let e of this.removes){let n=this.markets.find((i)=>i.source===e),r=(n?.entries??[]).filter((i)=>!i.default&&this.installed.has(i.name)&&this.picked.has(i.name));t.push(`- ${n?.id??e} ${this.dim([n?.shown??tt(e),r.length>0?`its ${Tt(r.length)} installed keep working`:""].filter(Boolean).join(" · "))}`)}for(let[e,n]of this.want){let r=this.markets.find((i)=>i.source===e);if(r&&!this.removes.has(e))t.push(`↻ ${r.id} ${this.dim(n?"updates on its own from now":"stops updating on its own")}`)}return t}reviewLines(){let t=this.marketChanges(),{names:e,dropped:n}=this.pending(),r=new Set(this.result().renew),i=this.entries().filter((c)=>r.has(c.name)),o=Math.max(0,...[...e,...n,...i].map((c)=>c.name.length)),s=(c,u)=>` ${c} ${u.name.padEnd(o)} ${this.dim(ct(u.name)?u.catalog??"":u.group)}`,a=[e.length>0?`${e.length} to install`:"",n.length>0?`${n.length} to remove`:"",i.length>0?`${i.length} to update`:""].filter(Boolean);return[...t.length>0?[` ${this.bold("Markets")} ${this.dim(`(${t.length})`)}`,...t.map((c)=>` ${c}`),""]:[],...a.length>0?[` ${this.bold("Palettes")} ${this.dim(`(${a.join(" · ")})`)}`,...e.map((c)=>s("+",c)),...n.map((c)=>s("-",c)),...i.map((c)=>s("↑",c))]:[]]}summary(){let{names:t,dropped:e}=this.pending(),n=this.adds.size;return[n>0?`${n} market${n===1?"":"s"} added`:"",this.removes.size>0?`${this.removes.size} removed`:"",t.length>0?`${t.length} installed`:"",e.length>0?`${e.length} removed`:"",this.result().renew.length>0?`${this.result().renew.length} updated`:""].filter(Boolean).join(" · ")}progressLines(){let t=this.log.map((e)=>` ${e}`);if(this.phase==="applying"){let e=jn[this.beat%jn.length];t.push(` ${this.dim(`${e} ${this.working||"Working…"}`)}`)}else if(this.stopped)t.push("",...wt(this.stopped.message,Math.max(20,this.columns()-6)).map((e,n)=>` ${n===0?this.warn("✗"):" "} ${e}`));return t}frame(t,e){let n=t-1,r=this.phase==="review",i=r?this.reviewLines():this.progressLines(),o=this.phase==="review"?`${this.bold("Review changes")}`:this.phase==="applying"?this.bold("Applying changes"):this.stopped?`${this.warn("✗")} ${this.bold("Stopped")}`:`${this.bold("✓ Applied")} ${this.dim(this.summary()?`(${this.summary()})`:"")}`,s=this.span(),a=Math.max(0,i.length-s),c=this.phase==="applying"?a:Math.min(this.offset,a);this.offset=c;let u=i.slice(c,c+s),l=i.length-c-u.length,d=[c>0?` ${this.more(-1,`↑ ${c} more`)}`:"",...u];while(d.length<s+1)d.push("");d.push(l>0?` ${this.more(1,`↓ ${l} more`)}`:"");let f=a>0?[["↑↓","scroll"]]:[],h=r?{badge:"BROWSE (APPLY)",keys:[...f,["enter","apply"]],right:["esc","back"]}:this.phase==="applying"?{badge:"BROWSE (APPLY)",note:"Keys wait until it ends",keys:[]}:{badge:"BROWSE (APPLY)",keys:f,right:["enter","close"]};return[...this.hub?[rt(nh(this.hub,this.color),n,!1)]:[],rt(` ${o}`,n,!1),...d.map((m)=>rt(m,n,!1)),` ${this.keyBar(h,n-1)}`].slice(0,e).join(`
641
+ `)}keyBar(t,e){let n=this.color&&this.worn?qe(this.worn.cursor):"",r=this.color?`\x1B[7;1m${n} ${t.badge} ${Ft} `:`[${t.badge}] `,i=([c,u])=>Kt(c.split(" ")[0]??"",`${this.bold(c)} ${this.dim(u)}`),{note:o,keys:s,right:a}=t;for(;;){let c=`${r}${[t.lead??"",o?this.dim(o):"",...s.map(i)].filter(Boolean).join(" ")}`,u=a?i(a):"";if(B(c)+(a?3+B(u):0)<=e)return a?vt(c,u,e):rt(c,e,!1);if(o)o=void 0;else if(s.length>2||!a&&s.length>1){let l=s.length-2;s=s.filter((d,f)=>f!==l)}else if(a)a=void 0;else return rt(c,e,!1)}}more(t,e){return this.dim(Vt({kind:"page",step:t},e))}counts(){let t=[...this.busy.values()].includes("Updating…")?"Updating… · ":"",e=this.list();if(e)return`${t}${e.matched()}/${e.total()} · ${e.pickedCount()} picked`;if(this.tab==="markets"){let n=this.markets.length+this.adds.size,r=this.marketRows().filter((o)=>o.kind==="market").length,i=this.changes();return`${t}${r}/${n}${i>0?` · ${i} to apply`:""}`}return`${this.problemRows().length}/${this.problemList().length}`}searchText(){let t=this.fields[this.tab].value;if(t)return`${t}_`;if(this.tab==="markets")return this.dim("Search… or add one: owner/repo");let e=this.tab==="errors"?"":this.hint.text();return this.dim(`Search…${e?` e.g. ${e}`:""}`)}tabBar(){return ws.map(({tab:t,title:e})=>{let n=t==="errors"?this.problemList().length:0,r=n>0?`${e} ${n}`:e,i={kind:"tab",tab:t};if(!this.color)return Vt(i,t===this.tab?`[${r}]`:` ${r} `);return`${t===this.tab?$C:C}${Vt(i,` ${r} `)}${Ft}`}).join(" ")}heading(){let t=ws.find((e)=>e.tab===this.tab)?.heading??"";return`${this.bold(t)} ${this.dim(`(${this.counts()})`)}`}searchBox(t){let e=(r,i)=>this.dim(`${r}${"─".repeat(t-2)}${i}`),n=this.dim("│");return[e("╭","╮"),`${n} ${rt(`${this.dim("⌕")} ${this.searchText()}`,t-4)} ${n}`,e("╰","╯")]}strip(t){let e=this.tab;if(e!=="catalog"&&e!=="installed"||this.active().length<2)return;let n=this.chips(e),r=Math.max(0,n.findIndex((b)=>b.source===this.scope[e])),i=n.map((b,$)=>$===r&&!this.color?`[${b.label} ${b.count}]`:`${b.label} ${b.count}`),o=" · ",s=(b)=>b>0?`${o}+${b} more`.length:0,a=(b)=>{let $=b>0?2:0,k=0;for(let v=b;v<i.length;v++){let S=$+(k>0?o.length:0)+i[v].length;if(S+s(i.length-v-1)>t)break;$=S,k+=1}return k},c=0;while(c<r&&c+a(c)<=r)c+=1;let u=Math.max(1,a(c)),l=i.slice(c,c+u),d=i.length-c-u,f=l.map((b,$)=>{let k=Vt({kind:"chip",source:n[c+$]?.source},b);if(c+$===r)return this.color?`${ut}${kc}${k}${Ft}`:k;return this.dim(k)}),h=`${c>0?`${this.dim(Kt("ctrl+s","…"))} `:""}${f.join(this.dim(o))}${d>0?this.dim(`${o}${Kt("ctrl+s",`+${d} more`)}`):""}`,m=(c>0?2:0)+l.join(o).length+s(d),p="ctrl+s market";return m+2+p.length<=t?`${h} ${this.dim(Kt("ctrl+s",p))}`:h}sourceOf(t){let e=this.active().find((n)=>n.entries.some((r)=>r.name===t.name));if(!e)return"In no market you added";return e.source===q?"The ttheme catalog":e.shown}paletteState(t){let e=this.picked.has(t.name),n=this.installed.has(t.name),r=e&&n?"Installed":e?"Will install":n?"Will remove":"Not installed",i=e&&n&&this.updates.has(t.name)?this.renew.has(t.name)?" · Will update":" · Update ready":"";return`${r}${i}${this.startup===t.name?" · Default":""}`}paletteDetail(t,e){if(!t||t.kind==="rule")return Jm;if(t.kind==="all")return{title:this.bold("Select all"),lines:["space picks every palette shown"],brief:""};if(t.kind==="group"){let u=this.entries().filter((f)=>f.group===t.name&&!f.default),l=this.sourceOf(t.lead),d=`${Tt(u.length)} · ${u.filter((f)=>this.installed.has(f.name)).length} installed`;return{title:this.bold(t.name),lines:[...t.native?wt(t.native,e).map((f)=>this.dim(f)):[],...wt(l,e),d],brief:`${l} · ${d}`}}if(t.kind==="catalog"){let u=this.entries().filter((f)=>f.group===t.group&&f.catalog===t.name),l=this.sourceOf(t.lead),d=`${Tt(u.length)} · ${u.filter((f)=>this.installed.has(f.name)).length} installed`;return{title:this.bold(t.name),lines:[t.group,...wt(l,e),d],brief:`${t.group} · ${d}`}}let n=t.entry,r=this.sourceOf(n),i=la(n),o=`Gate ${ve.length-i.length}/${ve.length}`,s=n.pictures?.length??0,a=[...s>0?[`${s} picture${s===1?"":"s"}`]:[],...n.base?[`Base ${n.base}`]:[]].join(" · "),c=ct(n.name)?n.catalog?[n.catalog]:[]:[n.group,...n.native?[this.dim(n.native)]:[]];return{title:this.color?`${ut}${qe(n.cursor)}${n.name}${$e}\x1B[39m`:n.name,lines:[...wt(r,e),...c,this.paletteState(n),"",i.length===0?`${o} · passes`:o,...i.flatMap((u)=>wt(u,e-2).map((l,d)=>`${d===0?this.warn("✗"):" "} ${l}`)),...a?["",a]:[]],brief:[r,o,...a?[a]:[],this.paletteState(n)].join(" · ")}}marketDetail(t,e){if(!t||t.kind==="rule")return Jm;if(t.kind==="market"){let i=t.market,o=i.source===q?"The ttheme catalog":i.shown,s=i.entries.filter((h)=>!h.default),a=s.filter((h)=>this.installed.has(h.name)).map((h)=>h.name),c=`${Tt(s.length)} · ${a.length} installed`,u=gt(i.source)?`Auto-update ${this.want.get(i.source)??i.auto?"on":"off"}`:hv(i.status),l=this.busy.get(i.source)??hv(i.status),d=this.failed.get(i.source),f=this.adds.has(i.source)?["Will add"]:this.removes.has(i.source)?[a.length>0?`Will remove — ${a.join(", ")} stay${a.length===1?"s":""} installed`:"Will remove"]:this.want.has(i.source)?[`Auto-update turns ${this.want.get(i.source)?"on":"off"}`]:[];return{title:this.bold(i.id),lines:[...wt(o,e),...i.description?wt(i.description,e).map((h)=>this.dim(h)):[],c,"",gt(i.source)?`${u} ${this.dim("←→")}`:u,...gt(i.source)?[l]:[],...d?wt(d,e).map((h)=>this.warn(h)):[],...f.length>0?["",...f.flatMap((h)=>wt(h,e))]:[]],brief:[o,u,...f,...gt(i.source)?[l]:[]].join(" · ")}}if(t.kind==="add"){let i=this.busy.get(t.source)??this.failed.get(t.source)??this.peekFailed.get(t.source)??(this.peeked.has(t.source)?"space adds it":this.live?"Fetching its palettes…":"space fetches its palettes");return{title:this.bold(tt(t.source)),lines:["Not added",...this.peekLines(t.source,e),"",...wt(i,e)],brief:[this.peeking(t.source),i].filter(Boolean).join(" · ")}}if(t.kind==="find"){let i=this.fields.markets.value.trim(),o=this.searchError??(this.searching?"Searching…":this.repos?`${this.repos.length} found · space searches again`:"space searches GitHub");return{title:this.bold("GitHub"),lines:[...wt(`Repositories with the ${Bo} topic`,e),...i&&!_a(i)?[`Matching "${i}"`]:[],"",...wt(o,e)],brief:o}}let r=this.known(t.source)?"Added":this.busy.get(t.source)??this.failed.get(t.source)??this.peekFailed.get(t.source)??"space adds it";return{title:this.bold(t.source),lines:[`★ ${t.repo.stargazers_count}`,...wt(t.repo.description??"",e),...this.peekLines(t.source,e),"",...wt(r,e)],brief:[this.peeking(t.source),r].filter(Boolean).join(" · ")}}peekLines(t,e){let n=this.peeked.get(t);if(!n)return[];let r=n.entries.filter((o)=>!o.default),i=`${r.slice(0,fv).map((o)=>de(o.name)).join(", ")}${r.length>fv?", …":""}`;return["",n.id,...n.description?wt(n.description,e):[],Tt(r.length),...wt(i,e).map((o)=>this.dim(o))]}detail(t){let e=this.list();if(e)return this.paletteDetail(e.focusedRow(),t);if(this.tab==="markets")return this.marketDetail(this.marketRow(),t);let n=this.problemRows(),r=n[Math.min(this.cursor.errors,n.length-1)];return r?{title:this.bold(r.where),lines:wt(r.message,t),brief:r.message}:Jm}footer(){if(this.help)return{badge:"HELP",keys:[],right:["? esc","close"]};if(this.leaving!==void 0)return{badge:"BROWSE",lead:"Apply your changes before you leave?",keys:[["y","apply"],["n","discard"]],right:["esc","stay"]};if(this.asking)return{badge:"BROWSE",lead:`Update ${this.asking.id} on its own when its author changes it?`,keys:[["y","yes"],["n","no"]],right:["esc","back"]};let t=this.fields[this.tab].value,e=["enter",this.dirty()?"apply":"close"],n=[["⇧←→","tabs"],...t?[["bksp","edit"]]:[],["?","keys"]];return{badge:t?"BROWSE (FILTER)":"BROWSE",keys:[...this.rowKeys(e),...n],right:t?["esc","clear filter"]:["esc","cancel"]}}rowKeys(t){let e=this.list();if(e){let r=e.focusedRow();if(!r)return[t];if(e.foldable())return[(r.kind==="group"||r.kind==="catalog")&&r.expanded?["←","close"]:["→","open"],["space","pick"]];let i=r.kind==="palette"&&this.updates.has(r.entry.name)&&this.installed.has(r.entry.name);return[["space","pick"],...i?[["ctrl+r",this.renew.has(r.entry.name)?"keep":"update"]]:[],t]}if(this.tab==="errors")return[t];let n=this.marketRow();if(n?.kind==="market"){let r=n.market;return[["space",this.adds.has(r.source)||this.removes.has(r.source)?"undo":"remove"],...gt(r.source)?[["←→","auto-update"]]:[],...gt(r.source)&&!this.adds.has(r.source)?[["ctrl+r","update"]]:[],t]}if(n?.kind==="find")return[["space","search"],t];if(n?.kind==="add"||n?.kind==="repo"&&!this.known(n.source))return[["space","add"],t];return[t]}columns(){return(this.output??process.stdout).columns??100}rows(){return(this.output??process.stdout).rows??24}fitItems(t){let e=Math.max(dl,this.rows()-t);this.maxItems=e,this.catalog.maxItems=e,this.mine.maxItems=e}view(){let t=this.draw().split(`
642
+ `);return Array.from({length:this.rows()},(e,n)=>t[n]??"")}small(t,e,n){return`Needs ${lv}×${n} — now ${t}×${e}
643
+ ${this.dim("esc cancels")}`}draw(){let t=this.columns(),e=this.rows();if(t<lv||e<dv)return this.small(t,e,dv);if(this.phase!=="browse")return this.frame(t,e);let n=t>=mC,r=t-1,i=n?Math.min(t-Ym-4,hC):r,o=this.strip(r-1),s=[` ${this.tabBar()}`,...e>=pC?[` ${this.heading()}`,...this.searchBox(t-3).map(($)=>` ${$}`)]:[vt(` ${this.dim("⌕")} ${this.searchText()}`,this.dim(this.counts()),r)],...o?[` ${o}`]:[]],a=s.length+3+(n?0:1)+(this.hub?1:0);if(e<a+dl)return this.small(t,e,a+dl);this.fitItems(a);let{lines:c,above:u,below:l,empty:d}=this.body(),f=c.length>0?c.map(($)=>` ${$}`):[` ${this.dim(d)}`];while(f.length<this.maxItems)f.push("");let h=[u>0?` ${this.more(-1,`↑ ${u} more`)}`:"",...f,l>0?` ${this.more(1,`↓ ${l} more`)}`:""],m=this.detail(n?Ym:i-2),p=n?h.map(($,k)=>`${rt($,i)} ${this.dim("│")} ${rt(k===0?m.title:m.lines[k-1]??"",Ym,!1)}`):[...h.map(($)=>rt($,i,!1)),rt(` ${this.dim(m.brief)}`,i,!1)],b=[...this.hub?[rt(nh(this.hub,this.color),r,!1)]:[],...s.map(($)=>rt($,r,!1)),...p,` ${this.keyBar(this.footer(),r-1)}`];return(this.help?this.helpBox(b,t,e,b.length-p.length-1):b).join(`
644
+ `)}helpRows(){return[["Move","↑↓ home end pgup pgdn"],["Series","←→ · enter on a series"],["Pick","space · a palette, a series, all"],["Filter","Any text · bksp · ctrl-u clears"],["","Each tab keeps its own"],["Tabs","⇧←→ Catalog, Installed, Markets, Errors"],...this.active().length>=2?[["Market","ctrl+s · one market, then all"]]:[],["Markets","space adds or removes · ←→ auto-update"],["","ctrl+r updates it, or searches again"],["Update","ctrl+r on a palette marked ↑"],["Apply","enter reviews and applies · esc cancels"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]]}helpBox(t,e,n,r){let i=this.helpRows(),o=Math.min(e-2,58),s=Math.floor((e-o)/2),a=`│${" ".repeat(o-2)}│`,c=[`╭─ Help ${"─".repeat(o-9)}╮`,a,...i.map(([l,d])=>`│${rt(` ${this.bold(l.padEnd(10))}${d}`,o-4)} │`),a,`╰${"─".repeat(o-2)}╯`],u=Math.max(0,Math.min(Math.max(r,Math.floor((n-c.length)/2)),n-1-c.length));return t.map((l,d)=>{let f=c[d-u];return f===void 0?l:`${zg(l,s)}${f}`})}}import{existsSync as p5}from"node:fs";import{existsSync as dc,mkdirSync as Q8,readFileSync as Xp}from"node:fs";import{dirname as X8}from"node:path";class Te extends Error{}import{closeSync as _F,mkdtempSync as BF,openSync as GF,readSync as UF,rmSync as AS}from"node:fs";import{homedir as WF,tmpdir as KF}from"node:os";import{join as TS}from"node:path";import{readFileSync as kC}from"node:fs";var yt={pitch:25,cols:22,rows:9,height:13},qi={cols:25,rows:21},be={cols:10,rows:3,pitch:12,top:4},ge=be.top+be.rows+1,yC=1073741824,rp=2147483648,vC=-1073741826,SC=1600,EC=56,MC=4,mv=20,xC=50,pv=[["space","unfolds a set of ×N"],["o","opens the post page in a browser"],["c","switches between cutouts and every post"],["a","opens the advanced filters"],["1-9","turn a tag of the tags row on or off"],["ctrl+v","tries on a picture from the clipboard — or drop one on the window"]];function ip(t){return Math.max(0,Math.floor((t-1)/be.pitch))}function rr(t,e){let n=e-ge-2;return{perRow:Math.max(1,Math.floor((t-1)/yt.pitch)),rowsVis:Math.max(1,Math.floor(n/yt.height)),height:n}}function pl(t,e=!0){if(e)return`\x1B_Ga=t,t=f,f=100,i=${t.id},q=2;${Buffer.from(t.path).toString("base64")}\x1B\\`;let n;try{n=kC(t.path).toString("base64")}catch{return}let r=n.match(/.{1,4096}/g)??[""];return r.map((i,o)=>{let s=o<r.length-1?1:0;return o===0?`\x1B_Ga=t,f=100,i=${t.id},m=${s},q=2;${i}\x1B\\`:`\x1B_Gm=${s},q=2;${i}\x1B\\`}).join("")}function Sv(t,e){let n=t.crop===void 0?"":`,x=0,y=${t.crop*e.h},w=${t.cols*e.w},h=${t.rows*e.h}`;return`\x1B[${t.row+1};${t.col+1}H\x1B_Ga=p,i=${t.id},p=${t.id}${n},c=${t.cols},r=${t.rows},C=1,z=${t.z},q=2\x1B\\`}function op(t){return`\x1B_Ga=d,d=i,i=${t},p=${t},q=2\x1B\\`}function Ka(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}function $s(t){return`\x1B[38;2;${nt(t).join(";")}m`}function ml(t){return`\x1B[48;2;${nt(t).join(";")}m`}var Qm=!1;function gl(t){return Qm=!0,t.beat}function ks(t){return jn[gl(t)%jn.length]}function ft(t){return B(t)}function Xm(t,e){if(B(t)<=e)return t;let n="";for(let r of t){if(B(n+r)>e)break;n+=r}return n}function ei(t){return`\x1B[${30+t}m`}function Yi(t,e,n,r){return n?[[`${Cs} `,r,void 0,{kind:"link",url:n}],[t,e,n]]:[[t,e]]}function Zm(t){let e=th(t);return e?{kind:"key",key:e}:void 0}function tp(t){return t.reduce((e,[n])=>e+ft(n),0)}function OC(t,e){let n=[],r=e;for(let[i,o,s,a]of t){let c=ft(i);if(c<=r){n.push([i,o,s,a]),r-=c;continue}n.push([`${Xm(i,r)}…`,o,s,a]);break}return n}class hl{parts=[];cols;constructor(t){this.cols=t}put(t,e,n="",r,i){return this.parts.push({col:t,text:e,sgr:n,...r?{link:r}:{},...i?{spot:i}:{}}),t+ft(e)}run(t,e){let n=t;for(let[r,i,o,s]of e)n=this.put(n,r,i,o,s);return n}mark(t,e,n){this.parts.push({col:t,text:" ".repeat(Math.max(0,e)),sgr:"",spot:n,hidden:!0})}zones(t){return this.parts.flatMap(({col:e,text:n,link:r,spot:i})=>{let o=i??(r?{kind:"link",url:r}:void 0),s=e>=0&&e<this.cols?ft(Xm(n,this.cols-e)):0;return o&&s>0?[{row:t,col:e,width:s,height:1,target:o}]:[]})}right(t,e){this.run(t-e.reduce((n,[r])=>n+ft(r),0),e)}center(t,e){this.run(Math.floor((t-e.reduce((n,[r])=>n+ft(r),0))/2),e)}render(){let t="";for(let{col:e,text:n,sgr:r,link:i,hidden:o}of this.parts){if(o||e>=this.cols||e<0)continue;let s=Xm(n,this.cols-e);t+=`\x1B[${e+1}G${r}${yc(s,i)}${r?Ft:""}`}return t}}function IC(t){return t.replace(/_\([^)]*\)?$/,"")}function Ev(t){return[`${t.reduced?"↓":""}${t.width}×${t.height}`,Math.max(t.width,t.height)<SC?ne:C]}function Ua(t,e,n,r){let i=[...r.keys??[]],o=r.lead,s=r.right,a=()=>{let l=[...o?[tp(o)]:[],...i.map(([f,h])=>ft(f)+1+ft(h))];return(r.badge?ft(r.badge)+4:0)+l.reduce((f,h)=>f+h,0)+3*Math.max(0,l.length-1)+(s?3+ft(s[0])+1+ft(s[1]):0)};while(a()>e)if(i.length>2)i.splice(-2,1);else if(s)s=void 0;else if(i.length>1)i.splice(-2,1);else break;if(o&&a()>e)o=OC(o,Math.max(0,tp(o)-(a()-e)-1));let c=0;if(r.badge)c=t.put(0,` ${r.badge} `,`\x1B[7;1m${n}`)+2;if([...o?[o]:[],...i.map(([l,d])=>[[l,ut,void 0,Zm(l)],[` ${d}`,C,void 0,Zm(l)]])].forEach((l,d)=>{c=t.run(c+(d?3:0),l)}),s){let l=Zm(s[0].split(" ")[0]??"");t.right(e,[[s[0],ut,void 0,l],[` ${s[1]}`,C,void 0,l]])}}function RC(t,e){if(t==="d")return C;if(t==="b")return ut;if(t==="s")return ml(e.colors.selection);if(t==="c")return ml(e.colors.cursor);let n=/^([BK]?)(\d+)$/.exec(t);if(!n)return"";let r=Number(n[2]),i=(o)=>r<8?o+r:o+52+r;if(n[1]==="K")return`\x1B[30;${i(40)}m`;return`\x1B[${n[1]==="B"?"1;":""}${i(30)}m`}function PC(t,e,n,r,i){let o=Dt.indexOf(Ri(r.scene)),s=Dt.flatMap((c,u)=>[...u?[[" ",""]]:[],[c.name,u===o?ut+i:C,void 0,{kind:"scene",scene:u}]]),a=s.reduce((c,[u])=>c+ft(u),0)<=n;t?.run(e,a?s:[[Ri(r.scene).name,ut+i],[` ${o+1}/${Dt.length}`,C]])}function NC(t,e,n,r,i,o,s){let{ansi:a,cursor:c}=o.colors;PC(t[e-2],n,r,o,s);let u=r<dk?3:4;if(r>=56)u=Math.min(7,Math.floor((r+1)/8)-1);let l=n;for(let f=0;f<8;f++)l=(t[e]?.put(l,"▀".repeat(u),$s(a[f]??c)+ml(a[f+8]??c))??l)+1;let d=e+2;for(let f of Ri(o.scene).lines){let h=Yo(f,r);if(!h)continue;if(d>i)return;t[d]?.run(n,h.map(([m,p])=>[m,RC(p,o)])),d++}}function AC(t,e,n){let r=[[]];for(let s of t){let a=r[r.length-1];if(a.length===0||ft([...a,s].join(" "))<=e)a.push(s);else if(r.length<n)r.push([s]);else break}let i=r.reduce((s,a)=>s+a.length,0),o=r[r.length-1];while(i<t.length&&o.length>0&&ft([...o,`+${t.length-i}`].join(" "))>e)o.pop(),i--;if(i<t.length)o.push(`+${t.length-i}`);return r.filter((s)=>s.length>0).map((s)=>s.join(" "))}function gv(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function TC(t,e,n,r,i){let o=r.info,s=o?.artists??[],a=ei(r.tiles[r.focus]?.siteAnsi??r.siteAnsi);[["Post",o?.page?Yi(gv(o.page),"",o.page,a):[["—",C]]],["Source",o?.source?Yi(gv(o.source),"",o.link,i):[["—",C]]],["Artist",[s.length>0?[s.join(" "),""]:["—",C]]]].forEach(([u,l],d)=>{t[e+d]?.put(n,u,C),t[e+d]?.run(n+12,l)})}function HC(t,e,n,r,i,o){let s=o.info,a=o.tiles[o.focus];if(!s||!a)return;let c=o.shown?.id===a.key?o.shown:void 0,u=n+12,l=Math.max(12,r-12),d=[`${a.width}×${a.height}${s.ext?` ${s.ext.toUpperCase()}`:""}`,...c?[Zu(c.bytes)]:[]].join(" · "),f=[s.rating??"—",a.score>0?`★${a.score}`:"",s.posted??""].filter(Boolean).join(" · "),h=(b,$)=>b.length>0?AC(b,l,$).map((k)=>[[k,""]]):[[["—",C]]],m=[["Characters",h(s.characters,2)],["Series",h(s.series,1)],["Tags",h(s.tags,3)],["Rating",[[[f,f==="—"?C:""]]]],["File",[[[d,""],...c?[[" ",""]]:[],...c?Mv(c):[]]]],["Uploader",[[s.uploader?[s.uploader,""]:["—",C]]]]],p=e;for(let[b,$]of m){if(p+$.length-1>i)return;t[p]?.put(n,b,C);for(let k of $)t[p]?.run(u,k),p++}}var CC=["Size","Position","Opacity"],LC=[0,3,6];function FC(t,e){let{tune:n,untuned:r}=t;return e===0?n.size!==r.size:e===1?n.at!==r.at:n.opacity!==r.opacity}function jC(t){return t.toFixed(2)}function _C(t,e,n,r,i,o){let s=i.tuning;if(!s)return;let a=i.tiles[i.focus];t[e-3]?.run(n,[[i.palette,ut+o],[" Background",C],...a?[[" · ",C],...Yi(`${a.site} ${a.id}`,C,a.page||void 0,ei(a.siteAnsi))]:[]]);let c=Math.max(8,r-n-21),u=20,l=Math.max(100,s.fill);for(let[d,f]of CC.entries()){let h=e+LC[d],m=s.field===d,p=m?ut:C;if(m)t[h]?.put(n,"▶",o,void 0,{kind:"field",field:d});t[h]?.put(n+2,f,p,void 0,{kind:"field",field:d});let b;if(d===1){for(let $=1;$<=9;$++){let k=$===i.tune.at,v=t[e+2+Math.floor(($-1)/3)],S=n+12+($-1)%3*3;v?.mark(S-1,3,{kind:"place",at:$}),v?.put(S,k?"■":"·",k?ut+o:C)}b=Wt[i.tune.at-1]??"center"}else{let $;if(d===0){let{size:k}=i.tune;$=k==="fill"?c-1:Math.floor((k-u)*(c-1)/(l-u+1)),b=k==="fill"?"fill":`${k}%`}else $=Math.floor(Math.round(i.tune.opacity*100)*(c-1)/100),b=jC(i.tune.opacity);$=Math.max(0,Math.min(c-1,$)),t[h]?.run(n+12,[["━".repeat($),o],["●",ut],["─".repeat(c-1-$),C]]),t[h]?.mark(n+12,c,{kind:"track",field:d})}if(t[h]?.right(r-2,[[b,p]]),FC(i,d))t[h]?.put(r-1,"↺",m?ut+o:C)}}function BC(t,e,n,r,i,o){t[e]?.put(n,`╭${"─".repeat(i-2)}╮`,o);for(let s=e+1;s<e+r-1;s++)t[s]?.put(n,"│",o),t[s]?.put(n+i-1,"│",o);t[e+r-1]?.put(n,`╰${"─".repeat(i-2)}╯`,o)}function ep(t,e=t.site,n=t.siteAnsi){return[` ${e} `,`\x1B[7;${30+n}m`]}function Ga(t){return`${V[Math.floor(t/Sr)]?.name??"local"} ${t%Sr}`}function Ba(t,e,n){let r=V[Math.floor(e/Sr)],i=Ga(e),o=t.indexOf(i);if(!r||o===-1)return[[t,n]];return[[t.slice(0,o),n],...Yi(i,n,r.pageUrl(e%Sr),ei(r.ansi)),[t.slice(o+i.length),n]].filter(([a])=>a!=="")}function GC(t,e,n){let r=[{name:"all",moved:!1},...V].flatMap((o,s)=>{let a=`${o.name}${o.moved?"*":""}`,[c,u]=o.name===n.site?ep(n,a):[` ${a} `,C],l=[c,u,void 0,{kind:"site",tab:s}];return s?[[" ",""],l]:[l]}),i=r.reduce((o,[s])=>o+ft(s),0)<=e;t.run(0,i?r:[ep(n)])}function UC(t,e,n,r){if(n.chips.length===0)return;let i=[["tags ",C]],o=ft("tags "),s=n.chips.length;for(let[a,c]of n.chips.entries()){let u=` ${a+1} ${c.name} `;if(o+ft(u)+1>e-2)break;i.push([u,c.on?`\x1B[7m${r}`:C,void 0,{kind:"chip",index:a}],[" ",""]),o+=ft(u)+1,s--}if(s>0)i.push([`+${s}`,C]);t.run(0,i)}function WC(t,e,n,r,i){t[ge-1]?.put(0,"─".repeat(n-1),C);let o=t[be.top-1],s=ip(n),a=r.held.length>s?Math.max(0,s-1):r.held.length;for(let[c,u]of r.held.slice(0,a).entries()){let l=c*be.pitch,d=u.up?ut:"";if(o.run(l+1,u.page?Yi(String(u.id),d,u.page,ei(u.ansi)):[["● ",ei(u.ansi)],[String(u.id),d]]),u.up)for(let f=0;f<be.rows;f++)t[be.top+f]?.put(l,"▌",i);if(u.thumb)e.push({id:yC+c,path:u.thumb,row:be.top,col:l+1,cols:be.cols,rows:be.rows,z:-1})}if(a<r.held.length)o.put(a*be.pitch+1,`+${r.held.length-a}`,C)}function KC(t,e,n,r){if(n.editing!==void 0){let c=t.run(0,[["⌕ ",r],[n.editing,""],["█",r]]),u=n.suggest?.length?" ↑↓ pick enter searches":" enter searches";t.put(c,n.editing?u:` A tag, a post URL or an id, or drop a picture or ctrl+v — ${n.tag||"esc leaves"}`,C);return}let i=t.run(0,[["⌕ ",r,void 0,{kind:"query"}],[n.tag||"Nothing yet — / searches, ctrl+v pastes a picture",n.tag?"":C,void 0,{kind:"query"}]]),o=gi.filter((c)=>!n.block.includes(c)),s=V.filter((c)=>!n.enabled.includes(c.name)).map((c)=>c.name),a=[n.preset,...n.solo?["solo"]:[],n.order,...n.rating.join("+")==="safe"?[]:[n.rating.join("+")],...o.length>0?[`allows ${o.join("+")}`]:[],...n.narrow.size>0?[`≥${n.narrow.size}px`]:[],...n.narrow.score>0?[`score≥${n.narrow.score}`]:[],...n.narrow.png?["png"]:[],...n.hide.length+n.hideTags.length>0?[`hides ${[...n.hide,...n.hideTags].join("+")}`]:[],...s.length>0?[`all skips ${s.join("+")}`]:[]];if(t.put(i,` ${a.join(" ")}`,C),n.total>0||!n.searching){let c=[[`${n.tiles.length}/${n.checked}`,""]];if(n.checked<n.total)c.push([` of ${n.total}`,C]);t.right(e,c)}}function Mv(t){if(t.cut==="on")return[[`Cut out · ${t.clear}% transparent`,mo]];if(t.cut==="off")return[["Opaque · x cuts out",ne]];if(t.cut==="failed")return[["Opaque · no cut-out",ne]];return[t.clear>0?[`${t.clear}% transparent`,mo]:["Opaque",ne]]}function bv(t){return t.site==="all"?"any site":t.site}function np(t,e){if(t.installing!==void 0)return Ba(`${ks(t)} Installing ${t.palette} ← ${Ga(t.installing)}`,t.installing,ne);if(t.hint)return[[t.hint,mo]];if(t.error)return[[t.error,ne]];if(t.waiting!==void 0)return[[`${t.slow??t.site} asked to slow down · ${t.waiting}s`,ne]];if(t.fetching){let{id:n,got:r,size:i}=t.fetching;return Ba(`${ks(t)} Fetching ${Ga(n)} · ${Qu(r,i)}`,n,ne)}if(t.cutting!==void 0)return Ba(`${ks(t)} Cutting out ${Ga(t.cutting)}`,t.cutting,ne);if(t.preparing!==void 0)return Ba(`${ks(t)} Preparing ${Ga(t.preparing)}`,t.preparing,ne);if(e)return[e];if(t.saved)return Ba(t.saved.text,t.saved.key,mo);if(t.note)return[[t.note,C]];return}function xv(t){if(t.ranking)return"Ranking previews by palette colors";if(t.stage==="check")return t.preset==="cutouts"?"Checking PNG headers":"Loading previews";return"Fetching posts"}function Ov(t,e){return t.ranking?`${e}${t.ranking.done}/${t.ranking.total}`:""}function zC(t,e,n,r,i){let{background:o,cursor:s,selection:a}=r.colors,{ranking:c}=r,u=c?Math.round(n*c.done/c.total):-1,l=Math.max(6,Math.round(n*0.22)),d=gl(r)%(mv*2)/mv,f=Math.round((n-l)*(0.5-0.5*Math.cos(Math.PI*(d<1?d:2-d)))),h=bt(o,s,i),m=bt(o,bt(a,o,0.15),i),p=Array.from({length:n},($,k)=>{let v=(u>=0?k<u:k>=f&&k<f+l)?h:m;return k===0||k===n-1?bt(v,o,0.55):v}),b=0;for(let $=1;$<=n;$++)if($===n||p[$]!==p[b])t?.put(e+b," ".repeat($-b),ml(p[b])),b=$}function DC(t,e,n,r,i){let{background:o,foreground:s}=i.colors,a=i.loaderFrom===void 0?0:Math.min(1,(gl(i)-i.loaderFrom)/MC),c=e+(n>=5?Math.floor((n-5)/2):0);t[c]?.center(r,[[xv(i),ut+$s(bt(o,s,a))],[Ov(i," "),$s(bt(o,bt(s,o,0.45),a))]]);let u=Math.min(EC,r-8);if(zC(t[c+(n>=3?2:1)],Math.floor((r-u)/2),u,i,a),n<5)return;t[c+4]?.center(r,i.sites.flatMap(({name:l,arrived:d},f)=>[...f?[[" · ",$s(bt(o,s,0.25*a))]]:[],[l,$s(bt(o,d?bt(s,o,0.2):s,d?a:0.32*a))]]))}function qC(t,e,n,r,i,o){if(i<=r)return;let s=Math.max(1,Math.round(r*r/i)),a=Math.max(0,Math.min(r-s,Math.round(n.scroll*r/i)));for(let c=0;c<r;c++){let u=c>=a&&c<a+s;t[ge+c]?.put(e-1,u?"┃":"│",u?o:C)}}function YC(t,e,n){if(e)return[`${ks(t)} ${xv(t)}${Ov(t," · ")}`,C];let r=n.filter((o)=>!o.missing),i=r.filter((o)=>o.thumb).length;return i<r.length?[`${ks(t)} Loading thumbnails · ${i}/${r.length}`,C]:void 0}function JC(t,e,n,r,i,o,s){let{perRow:a,rowsVis:c,height:u}=rr(r,i);KC(t[0],r,o,s),GC(t[1],r,o),UC(t[2],r,o,s),WC(t,e,r,o,s);let l=t.map((H,N)=>N>=ge&&N<ge+u?H:void 0),d=Math.floor(o.scroll/yt.height),f=Math.floor((o.scroll+u-1)/yt.height),h=[];for(let H=d;H<=f;H++){let N=ge+H*yt.height-o.scroll;for(let j=0;j<a;j++){let W=H*a+j,_=j*yt.pitch,X=o.tiles[W];if(!X)continue;h.push(X);let z=Math.max(N,ge),xt=Math.min(N+yt.height,ge+u);if(xt>z)n.push({row:z,col:_,width:yt.pitch-1,height:xt-z,target:{kind:"tile",index:W}});let et=W===o.focus;if(et)BC(l,N,_,yt.height,yt.pitch-1,s);let lr=N+1,dn=Math.max(lr,ge),fn=Math.min(lr+yt.rows,ge+u);if(X.thumb&&fn>dn)e.push({id:X.key,path:X.thumb,row:dn,col:_+1,cols:yt.cols,rows:fn-dn,...fn-dn<yt.rows?{crop:dn-lr}:{},z:-1});let hn=[...o.installed.includes(X.key)?[["✓ ",mo]]:[],...X.page||o.site!=="all"?Yi(String(X.id),et?ut:"",X.page||void 0,ei(X.siteAnsi)):[["● ",ei(X.siteAnsi)],[String(X.id),et?ut:""]],[" ",""],Ev(X)],pc=yt.cols-(X.mates.length>0?1:0);if(l[N+10]?.run(_+1,tp(hn)>pc?hn.map(([ud,ld,dd])=>[ud.replace(/^(\S) $/,"$1"),ld,dd]):hn),X.mates.length>0)l[N+10]?.put(_+yt.cols,"≈",s);l[N+11]?.put(_+1,X.artist?IC(X.artist).slice(0,yt.cols-8):"—",C);let ii=[];if(X.score>0)ii.push([`★${X.score}`,C]);if(X.variants>1)ii.push([` ×${X.variants}`,s]);if(ii.length>0)l[N+11]?.right(_+yt.cols+1,ii)}}let m=Math.ceil(o.tiles.length/a)*yt.height;qC(t,r,o,u,m,s);let p=Math.max(ge,ge+m-o.scroll),b=ge+u-p,$=o.searching&&b>=2;if($)DC(l,p,b,r-1,o);let k=o.searching&&o.tiles.length===0;if(k&&!o.error){let[H,N]=pv[Math.floor(gl(o)/xC)%pv.length];t[i-2]?.run(0,[["Tip ",C],[H,ut],[` ${N}`,C]])}let v=o.top*a,S=o.tiles.length-(o.top+c)*a,M=[...v>0?[`↑ ${v} above`]:[],...S>0?[`↓ ${S} more`]:[]];if(M.length>0)t[i-2]?.put(0,M.join(" "),C);if(!o.searching&&o.tiles.length===0&&!o.error&&o.tag)t[ge+1]?.put(0,o.preset==="cutouts"?`No transparent cutouts of ${o.tag} on ${bv(o)} — c searches every post, tab tries ${o.nextSite}`:`No posts of ${o.tag} on ${bv(o)} — tab tries ${o.nextSite}`,C);let I=YC(o,$,h),x=np(o,I);return Ua(t[i-1],r,s,{badge:"IMAGE SEARCH",lead:x,keys:k&&x?.[0]===I?[]:[["←↑↓→","move"],["enter","try on"],["tab","site"],["ctrl+v","picture"],["s","settings"],["/","search"],["?","keys"]],right:["esc","back"]}),$}function VC(t,e,n,r,i,o){let s=i.tiles[i.focus];if(!s)return;let a=i.shown?.id===s.key?i.shown:void 0,c=[ep(i,s.site,s.siteAnsi),[" ",""],...Yi(String(s.id),ut,s.page||void 0,ei(s.siteAnsi)),[" ",""],Ev(s)];if(s.score>0)c.push([` · ★${s.score}`,C]);if(a)c.push([` · ${Zu(a.bytes)}`,C]);if(a){if(c.push([" ",""],...Mv(a)),i.coloring==="original")c.push([" · own colors",C])}if(t[0]?.run(0,c),s.mates.length>0)t[0]?.right(n,[["≈ ",o],[s.mates.join(" "),C]]);if(TC(t,1,2,i,o),i.tuning)_C(t,8,2,2+Math.min(n-4,60),i,o);else if(i.details)HC(t,5,2,Math.min(n-4,Math.max(48,Math.floor(n*0.55))),r-2,i);else NC(t,7,2,n-4,r-2,i,o);if(i.shown)e.push({id:rp+i.shown.id,path:i.shown.path,row:0,col:0,cols:n,rows:r,z:vC});if(i.tuning){Ua(t[r-1],n,o,{badge:"IMAGE EDIT",lead:np(i),keys:[["↑↓","field"],["←→","step"],["=","reset"],["+","reset all"],i.tuning.field===1?["1-9","place"]:["⇧←→","×10"],["c","colors"],["enter","keep"]],right:["esc","undo"]});return}let u=np(i);Ua(t[r-1],n,o,{badge:"IMAGE PREVIEW",lead:u,keys:i.installing===void 0?[["←→","browse"],["enter","install"],["t","tune"],["c","colors"],["i","details"],...i.details?[]:[["⇧←→","example"]],...i.shown?.cut==="on"||i.shown?.cut==="off"?[["x","cut out"]]:[],["?","keys"]]:[],right:i.installing===void 0?["esc","grid"]:void 0})}var ZC=[["Field","↑↓ size, position, opacity"],["Step","←→ · ⇧←→ ×10"],["Place","1-9 the nine positions"],["Reset","= this field back to its default · + every field"],["Colors","c the palette's tone or its own colors, opacity back to its default"],["Keep","enter back to try, installed with the picture"],["Undo","esc"],["Close","? esc"]],QC={grid:[["Move","←↑↓→ j k home end pgup pgdn"],["Try on","enter"],["Site",`tab shift+tab all, ${V.map((t)=>t.name).join(", ")}`],["Posts","c cutouts or every post"],["Search","/ a tag, a post URL or an id"],["Tags","1-9 turn a tag of the tags row on or off — the palette's own, then danbooru's related characters"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window or paste its link"],["Unfold","space a set of ×N"],["Open","o the post page in a browser"],["Settings","s rating, block, posts, solo, order, sets, remove bg"],["Advanced","a or Advanced › in settings min score, min size, sites, hide, hide tags, PNG only"],["Back","esc returns to preview"],["Close","? esc"]],try:[["Browse","←→"],["Install","enter"],["Tune","t size, position and opacity, installed with the picture"],["Colors","c the palette's tone or its own colors, installed with the picture"],["Details","i characters, series, tags, rating and file, under Post, Source and Artist"],["Example",`⇧←→ ${Dt.map((t)=>t.name.toLowerCase()).join(", ")}`],["Cut out","x the background off or on, on an opaque picture"],["Open","o the post page in a browser"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window"],["Grid","esc"],["Close","? esc"]]},sp=6,XC=24;function Wa(t){return[...t.settings.flatMap((e,n)=>Boolean(e.advanced)===t.advanced?[n]:[]),t.settings.length]}function tL(t){return t.replace(/^[A-Z](?=[a-z])/,(e)=>e.toLowerCase())}function wv(t){let e=t.settings.filter((n)=>Boolean(n.advanced)!==t.advanced).map((n)=>tL(n.label));return`${t.advanced?"Back to":"More filters:"} ${e.join(", ")} — enter opens the page, or a from any row`}function Iv(t,e,n){let r=t.indexOf(e);if(r!==-1)return t[(r+n+t.length)%t.length];let i=Number(e)||0;return(n>0?t.find((s)=>(Number(s)||0)>i):[...t].reverse().find((s)=>(Number(s)||0)<i))??t[n>0?0:t.length-1]}function Di(t,e){let n=[],r="";for(let i of t.split(" "))if(r&&ft(r)+1+ft(i)>e)n.push(r),r=i;else r=r?`${r} ${i}`:i;return r?[...n,r]:n}function eL(t){if(t.entry!=="number"||t.choices.includes(t.value))return t.choices;let e=t.choices.findIndex((n)=>(Number(n)||0)>Number(t.value));return e===-1?[...t.choices,t.value]:[...t.choices.slice(0,e),t.value,...t.choices.slice(e)]}function nL(t,e,n,r){let i=`\x1B[7;${30+r}m`,o=e&&n!==void 0;if(t.entry==="text")return[{text:` ${o?`${n}█`:t.value||"none"} `,sgr:o||e&&t.value?i:t.value?"":C}];let s=o?[]:t.value.split(" "),a=(o?t.choices:eL(t)).map((c,u)=>{let l=s.includes(c),d=t.multi&&e&&u===t.cursor?"4;":"";return{text:t.multi?` ${l?"[x]":"[ ]"} ${c} `:` ${c} `,sgr:l?e?`\x1B[${d}7;${30+r}m`:"":d?`\x1B[4m${C}`:C,choice:c}});return o?[...a,{text:` ${n}█ `,sgr:i}]:a}function $v(t){if(t.entry==="text")return[{text:" ".repeat(XC),sgr:""}];let e=t.choices.map((n)=>({text:t.multi?` [x] ${n} `:` ${n} `,sgr:""}));return t.entry==="number"?[...e,{text:` ${"0".repeat(sp)}█ `,sgr:""}]:e}function rL(t){return t.reduce((e,n)=>e+ft(n.text)+1,0)-1}function kv(t,e){let n=[[]],r=0;for(let i of t){let o=ft(i.text)>e?{...i,text:` …${Array.from(i.text).slice(-(e-2)).join("")}`}:i;if(r>0&&r+ft(o.text)>e)n.push([]),r=0;n[n.length-1]?.push(o),r+=ft(o.text)+1}return n}function yv(t){if(t.multi&&t.choices.every((e)=>t.default.split(" ").includes(e)))return"Default all";return`Default ${t.default&&t.default!==t.multi?.none?t.default:"none"}`}function vv(t){if(!t.tag)return"";if(!t.counts)return`${t.tag}: counting…`;let e=t.counts.map(({site:n,count:r})=>`${n} ${r===void 0?"no count":r.toLocaleString("en-US")}`);return`${t.tag}: ${e.join(" · ")}`}function iL(t,e){let n=t.advanced?"basic":"advanced";if(!e)return{keys:[["↑↓","setting"],["enter",n],["s","save"]],right:["esc","undo"]};if(t.typing!==void 0)return{keys:[["⌫","erase"],["enter","done"]],right:["esc","cancel"]};if(e.entry)return{keys:[["↑↓","setting"],...e.entry==="number"?[["←→","step"]]:[],["a",n],["enter","type"],["s","save"]],right:["esc","undo"]};return{keys:[["↑↓","setting"],["←→","value"],["a",n],...e.multi?[["space","toggle"]]:[],["enter","save"]],right:["esc","undo"]}}function oL(t,e,n,r,i){let o=r.panel??0,s=r.settings.length,c=6+Math.max(...r.settings.map((z)=>ft(z.label))),u=Math.max(...r.settings.map((z)=>ft(yv(z)))),l=c+Math.max(...r.settings.map((z)=>rL($v(z))))+u+5,d=Math.min(e-2,Math.max(48,l)),f=d-c-u-5,h=d-7,m=[!1,!0].map((z)=>({advanced:z,rows:Wa({settings:r.settings,advanced:z}).slice(0,-1)})),p=r.settings.map((z)=>kv($v(z),f).length),b=Math.max(...m.map((z)=>z.rows.reduce((xt,et)=>xt+p[et],0))),$=Math.max(...m.map((z)=>Di(wv({settings:r.settings,advanced:z.advanced}),h).length),...r.settings.map((z)=>Di(z.about,h).length)),k=`${r.tag}: ${V.map((z)=>`${z.name} 0,000,000`).join(" · ")}`,v=r.tag?Math.max(Di(k,h).length,Di(vv(r),h).length):0,S=b+$+v+8,M=Math.floor((e-d)/2),I=Math.max(1,Math.floor((n-1-S)/2)),x=`\x1B[7;${30+r.siteAnsi}m`;t[I]?.put(M,`╭─ Settings ${"─".repeat(Math.max(0,d-13))}╮`);for(let z=I+1;z<I+S-1;z++)t[z]?.put(M,`│${" ".repeat(d-2)}│`);let H=I+2;for(let z of Wa(r).slice(0,-1)){let xt=r.settings[z],et=z===o;if(et)t[H]?.put(M+2,"▶",i);if(t[H]?.mark(M+2,c-3,{kind:"setting",index:z}),t[H]?.put(M+4,xt.label,et?ut:""),xt.value!==xt.default)t[H]?.right(M+d-3,[[yv(xt),C]]);kv(nL(xt,et,r.typing,r.siteAnsi),f).forEach((lr,dn)=>{let fn=M+c;for(let hn of lr)fn=t[H+dn].put(fn,hn.text,hn.sgr,void 0,{kind:"choice",index:z,choice:hn.choice}),fn+=1}),H+=p[z]}let N=m.find((z)=>z.advanced!==r.advanced)?.rows??[],j=t[I+3+b];if(o===s)j.put(M+2,"▶",i);let W=j.put(M+3,r.advanced?" ‹ Basic ":" Advanced › ",o===s?x:ut,void 0,{kind:"setting",index:s});if(N.some((z)=>r.settings[z]?.value!==r.settings[z]?.default))j.put(W+1,"•",C);t[I+5+b]?.put(M+2,"─".repeat(d-4),C),Di(r.settings[o]?.about??wv(r),h).forEach((z,xt)=>{t[I+6+b+xt]?.put(M+4,z)}),Di(vv(r),h).forEach((z,xt)=>{t[I+6+b+$+xt]?.put(M+4,z,C)}),t[I+S-1]?.put(M,`╰${"─".repeat(d-2)}╯`);let{keys:_,right:X}=iL(r,r.settings[o]);Ua(t[n-1],e,i,{keys:_,right:X})}function sL(t,e,n,r,i){let o=r.tuning?ZC:QC[r.mode],s=Math.min(e-2,Math.max(50,...o.map(([,f])=>ft(f)+16))),a=o.map(([f,h])=>({label:f,parts:Di(h,s-16)})),c=a.reduce((f,{parts:h})=>f+h.length,0)+4,u=Math.floor((e-s)/2),l=Math.max(2,Math.floor((n-c)/2));t[l]?.put(u,`╭─ Help ${"─".repeat(s-9)}╮`);for(let f=l+1;f<l+c-1;f++)t[f]?.put(u,`│${" ".repeat(s-2)}│`);let d=l+2;for(let{label:f,parts:h}of a){t[d]?.put(u+3,f,ut);for(let m of h)t[d]?.put(u+13,m),d++}t[l+c-1]?.put(u,`╰${"─".repeat(s-2)}╯`),Ua(t[n-1],e,i,{badge:"HELP",right:["? esc","close"]})}function aL(t,e,n){let r=e.suggest??[],i=r.map((a)=>a.alias??(a.count>0?String(a.count):a.palette??"0")),o=Math.max(...r.map((a)=>ft(a.value))),s=Math.max(7,...i.map(ft));r.forEach((a,c)=>{let u=c===e.pick,l=t[1+c];l?.run(0,[[u?"▸ ":" ",n,void 0,{kind:"suggest",index:c}],[a.value,u?ut+n:"",void 0,{kind:"suggest",index:c}]]),l?.right(2+o+2+s,[[i[c],C]])})}function fl(t,e=[]){return[...e,...t.flatMap((n,r)=>n.zones(r))]}function ap(t,e,n){let r=Array.from({length:n},()=>new hl(e)),i=[],o=[],s=$s(t.colors.cursor);if(Qm=!1,e<qi.cols||n<qi.rows)return r[0]?.put(0,"ttheme find",ut+s),r[1]?.put(0,`Needs ${qi.cols}×${qi.rows} — now ${e}×${n}`),r[2]?.put(0,"esc quits",C,void 0,{kind:"key",key:"esc"}),{lines:r.map((c)=>c.render()),images:i,zones:fl(r),loader:!1,tick:!1};let a=!1;if(t.mode==="try")VC(r,i,e,n,t,s);else a=JC(r,i,o,e,n,t,s);if(t.mode==="grid"&&t.editing!==void 0&&t.suggest?.length){for(let c=1;c<n-1;c++)r[c]=new hl(e);return aL(r,t,s),{lines:r.map((c)=>c.render()),images:[],zones:fl(r),loader:!1,tick:!1}}if(t.help||t.panel!==void 0){let c=t.mode==="try"?i:[];for(let u=0;u<n;u++)r[u]=new hl(e);if(t.help)sL(r,e,n,t,s);else oL(r,e,n,t,s);return{lines:r.map((u)=>u.render()),images:c,zones:fl(r),loader:!1,tick:!1}}return{lines:r.map((c)=>c.render()),images:i,zones:fl(r,o),loader:a,tick:Qm}}var cL=130,uL=38,lL=96,dL=28,Da=[{id:"shell",scenes:["Diff","Logs","Shell"],name:"zsh",tail:!0},{id:"code",scenes:["Editor"],name:"nvim",tail:!1},{id:"monitor",scenes:["Top"],name:"htop",tail:!1}],fL={Shell:[0,1,2,3,4,6,7,9,10,12,14],Diff:[0,1,3,4,6,7,8,9,10,15],Logs:[0,1,2,3,4,5,6,7,8,9,10]},Rv=(t)=>Array.from({length:8},(e,n)=>`«K${t+n}» «»`).join(" "),hL=["«2»❯ «»colortest",`«d»0-7 ${Rv(0)}`,`«d»8-15 ${Rv(8)}`],Pv=2;function mL(t){let e=Da.length;return Da[(t%e+e)%e]}function Tv(){return Da.map((t)=>t.name)}function qa(t,e,n){let r=t>=cL&&e>=uL?"full":t>=lL&&e>=dL?"tabs":void 0;if(!r)return;let i=r==="full"?t>=140?47:38:37,o=t-i-1,s=i+1+Pv,a=i+o-Pv,c=3,u=e-3,l={col:s,row:c,cols:a-s+1,rows:u-c+1},d={col:s+1,row:c+3,cols:l.cols-2,rows:u-c-3},f=[{row:c,col:s,length:l.cols,down:!1},{row:c+2,col:s,length:l.cols,down:!1},{row:u,col:s,length:l.cols,down:!1},{row:c,col:s,length:u-c+1,down:!0},{row:c,col:a,length:u-c+1,down:!0}],h=mL(n);return{tier:r,side:i,width:o,frame:l,title:{col:d.col,row:c+1,cols:d.cols,rows:1},inner:d,rules:f,tiles:[{id:h.id,name:h.name,col:d.col,row:d.row,width:d.cols,rows:d.rows}]}}var za="«2»▎ ",Nv="«3»▎ ",pL="«1»▁ ",gL=[["","«5»import«» { «4»readFile«» } «5»from «2»'node:fs/promises'"],["","«5»import«» { «5»type «6»Hex«», «4»contrast«» } «5»from «2»'./color.ts'"],["",""],["","«8»/** A palette read from disk and checked against the gate. */"],[za,"«5»export interface «6»Palette «»{"],[za," name: «6»string"],[za," ansi: «6»Hex«»[]"],[za," ratio?: «6»number"],[za,"}"],["",""],["","«5»const «»SIXTEEN = «3»16"],["","«5»const «»FLOOR = «3»4.5 «8»// WCAG AA for body text"],["",""],["","«5»export async function «4»load«»(path: «6»string«»): «6»Promise«»<«6»Palette«»> {"],[Nv," «5»const «»text = «5»await «4»readFile«»(path, «2»'utf8'«»)"],[Nv," «5»const «»colors = «s»parse(text)«».colors ?? {}"],[""," «5»if «»(colors.ansi.length !== «K3»SIXTEEN«») { «1»● needs 16 ANSI colors"],[""," «5»throw new «6»Error«»(«2»'expected sixteen colors, got '«» + colors.ansi.length)"],[""," }"],[pL," «5»const «»ratio = «4»contrast«»(colors.ansi[«3»0«»], colors.ansi[«3»7«»]) «3»● ratio is read once"],[""," «5»return «»{ name: path, ...colors, ratio: «c»r«»atio }"],["","}"],["",""],["","«5»export function «4»passes«»(palette: «6»Palette«»): «6»boolean «»{"],[""," «5»return «»(palette.ratio ?? «3»0«») >= FLOOR «8»// TODO: check the bright pairs"],["","}"]],bL=21;function wL(){return["«K4» theme.ts «s» scenes.ts «s» contrast.ts ",...gL.map(([t,e],n)=>{let r=String(n+1).padStart(3);return`${n+1===bL?`«b»${r}`:`«d»${r}`} ${t||"«» "}«»${e}`})]}function cp(t,e,n,r){let i=Math.max(1,r-t.length-2-n.length),o=0,s=`«6»${t}«b»[`;for(let[a,c]of e){let u=Math.min(i-o,Math.round(c*i));s+=`«${a}»${"|".repeat(u)}`,o+=u}return`${s}«»${" ".repeat(i-o)}${n}«b»]`}var $L=[[0.31,0.07,0],[0.22,0.02,0.03],[0.04,0.01,0],[0.52,0.12,0],[0.1,0.02,0],[0.41,0.11,0],[0.02,0,0],[0.15,0.03,0.04]],kL=["«s» 4127 kec 24 0 412G 612M «s»R 38.2 3.7 3:12.44 node dev.js"," 2210 kec 31 0 411G 1.2G «2»R«» 12.0 7.5 1:02.10 «d»/Applications/«b»Ghostty"," 3301 kec 31 0 409G 12M S 4.4 0.1 0:05.61 «b»zsh"," 3302 kec 31 0 409G 9.8M S 0.0 0.1 0:00.42 «d»├─ «b»nvim «»src/theme.ts"," 3310 kec 31 0 410G 88M S 1.2 0.5 0:03.18 «d»│ └─ «b»tsserver"," 3402 kec 24 0 409G 21M «2»R«» 0.6 0.1 0:01.02 «d»└─ «b»htop"," 501 kec 31 «4»10«» 409G 34M S 0.3 0.2 0:02.77 «b»bun «»test --watch"," 1180 kec 31 0 409G 72M «1»D«» 0.0 0.4 0:00.91 «b»rsync «»-a ~/Pictures backup:"," 812 «d»root«» «1» 4 -20«» 410G 1.5G S 3.1 9.4 0:44.02 «d»kernel_task"," 167 «d»root«» 31 0 411G 402M S 0.9 2.5 0:12.80 «d»WindowServer"," 344 «d»_mdns«» 31 0 408G 5.1M S 0.0 0.0 0:00.33 «d»mDNSResponder"],yL=["Help","Setup","Search","Filter","Tree","SortBy","Nice -","Nice +","Kill","Quit"];function vL(t,e,n){return`«${t}»${e}${" ".repeat(Math.max(0,n-B(e)))}`}function SL(t){let e=t-2,n=Math.floor((e-2)/2),r=(i)=>{let[o,s,a]=$L[i],c=`${((o+s+a)*100).toFixed(1)}%`;return cp(String(i).padStart(3),[["2",o],["1",s],["4",a]],c,n)};return[...[0,1,2,3].map((i)=>`${r(i)} ${r(i+4)}`),`${cp("Mem",[["2",0.45],["4",0.1],["3",0.07]],"9.84G/16.0G",n)} «6»Tasks: «b»214«», 1093 thr; «B2»4«» running`,`${cp("Swp",[["1",0.15]],"0.31G/2.00G",n)} «6»Load average: «b»2.14 «»1.87 «d»1.52`,`${" ".repeat(n)} «6»Uptime: «b»3 days, 04:12:55`,"",vL("K2"," PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command",e),...kL.map((i)=>i.startsWith("«s»")?`${i}${" ".repeat(Math.max(0,e-B(i.replace(/«[^»]*»/g,""))))}`:i)]}function EL(t){let e=t-2,n="",r=0;return yL.forEach((i,o)=>{let s=`F${o+1}`,a=i.padEnd(6);if(r+s.length+a.length<=e)n+=`«»${s}«K6»${a}`,r+=s.length+a.length}),`${n}«K6»${" ".repeat(Math.max(0,e-r))}`}function Av(t,e,n){if(t==="Editor")return wL();if(t==="Top")return SL(n);let r=Dt.find((s)=>s.name===t)?.lines??[],i=e?fL[t]:void 0,o=i?i.map((s)=>r[s]??""):r;return t==="Shell"?[...o.slice(0,-1),...hL,...o.slice(-1)]:o}function bl(t,e){let n=[];for(let r of t){let i=Yo(r,e);if(!i)continue;let o=0;n.push(i.map(([s,a])=>{let c={text:s,role:a,col:o};return o+=B(s),c}))}return n}function ML(t){let r=t-2-B("«K4» NORMAL «s» main src/theme.ts [+] ".replace(/«[^»]*»/g,""))-B("«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% ".replace(/«[^»]*»/g,""));return`${"«K4» NORMAL «s» main src/theme.ts [+] "}${" ".repeat(Math.max(0,r))}${"«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% "}`}function xL(t,e){if(t.id==="code")return[ML(e),'«d»"src/theme.ts" 26L, 912B written'];return t.id==="monitor"?[EL(e)]:[]}function OL(t,e,n){let r=bl(xL(t,e),e),i=Math.max(0,n-r.length),o=[];for(let a of[...t.scenes].reverse()){let c=bl(Av(a,!1,e),e),u=bl(Av(a,!0,e),e),l=[c,u].find((d)=>o.length+d.length<=i);if(!l){if(o.length===0)o=t.tail?u.slice(u.length-i):u.slice(0,i);break}o=[...l,...o]}if(r.length===0)return o;let s=bl(Array.from({length:i-o.length},()=>t.id==="code"?"«4»~":""),e);return[...o,...s,...r]}function Ya(t){let e=Da.find((n)=>n.id===t.id);return e?OL(e,t.width,t.rows):[]}function up(t,e){let{text:n,ground:r}=Cv(t);return n===e||r===e}function Hv(t,e){let n=t.inner;return Da.map((r)=>({name:r.name,count:Ya({id:r.id,name:r.name,col:n.col,row:n.row,width:n.cols,rows:n.rows}).flat().filter((i)=>up(i.role,e)).length}))}function Cv(t){if(t==="s")return{text:1,ground:3};if(t==="c")return{text:1,ground:2};let e=/^([BK]?)(\d+)$/.exec(t);if(!e)return{text:1,ground:0};let n=4+Number(e[2]);return e[1]==="K"?{text:4,ground:n}:{text:n,ground:0}}function lp(t,e){if(e>=4){let n=/^([BK]?)(\d+)$/.exec(t);return n!==null&&Number(n[2])===e-4}return e===3&&t==="s"||e===2&&t==="c"}function wl(t){let e=[];for(let n of t.tiles)Ya(n).forEach((r,i)=>{r.forEach((o,s)=>{e.push({spot:{pane:n.id,line:i,run:s},col:o.col,text:o.text,role:o.role})})});return e}function dp(t,e){return t.pane===e.pane&&t.line===e.line&&t.run===e.run}function Lv(t,e){let n=wl(t);return(n.find((r)=>lp(r.role,e))??n[0])?.spot}function $l(t,e){return e&&wl(t).find((n)=>dp(n.spot,e))?.spot}function Fv(t,e,n){let r=wl(t);if(r.length===0)return;let i=e?r.findIndex((f)=>dp(f.spot,e)):-1;if(i<0)return r[0]?.spot;let o=r[i];if(n==="left"||n==="right")return r[(i+(n==="left"?r.length-1:1))%r.length]?.spot;if(n==="next"||n==="previous"){let f=t.tiles.map((p)=>p.id),h=f.indexOf(o.spot.pane),m=f[(h+(n==="next"?1:f.length-1))%f.length];return r.find((p)=>p.spot.pane===m)?.spot}let s=n==="up"?-1:1,a=r.filter((f)=>f.spot.pane===o.spot.pane),c=[...new Set(a.map((f)=>f.spot.line))],u=c[c.indexOf(o.spot.line)+s];if(u===void 0){let f=t.tiles.map((k)=>k.id),h=f.indexOf(o.spot.pane)+s,m=f[(h+f.length)%f.length],p=r.filter((k)=>k.spot.pane===m),b=s<0?p.at(-1)?.spot.line??0:p[0]?.spot.line??0,$=p.filter((k)=>k.spot.line===b);return($.find((k)=>k.col>=o.col)??$.at(-1))?.spot}let l=a.filter((f)=>f.spot.line===u);return(l.find((f)=>f.col<=o.col&&f.col+B(f.text)>o.col)??l.find((f)=>f.col>=o.col)??l.at(-1))?.spot}function jv(t,e){let n=wl(t).find((r)=>dp(r.spot,e));return n?Cv(n.role):void 0}var IL={lr:"─",du:"│",dr:"╭",dl:"╮",ru:"╰",lu:"╯",dlr:"┬",lru:"┴",dru:"├",dlu:"┤",dlru:"┼"};function _v(t){let e=new Map,n=(i,o,s)=>{let a=e.get(i)??new Map;e.set(i,a);let c=a.get(o)??new Set;a.set(o,c),c.add(s)};for(let i of t)for(let o=0;o<i.length;o++){let s=i.down?i.row+o:i.row,a=i.down?i.col:i.col+o;if(o>0)n(s,a,i.down?"u":"l");if(o<i.length-1)n(s,a,i.down?"d":"r")}let r=new Map;for(let[i,o]of e){let s=new Map;for(let[a,c]of o){let u=[...c].sort().join("");s.set(a,IL[u]??(c.has("l")||c.has("r")?"─":"│"))}r.set(i,s)}return r}import{execFile as RL}from"node:child_process";import{createHash as Wv}from"node:crypto";import{existsSync as PL,mkdtempSync as NL,readFileSync as Sl,rmSync as AL,statSync as Kv,writeFileSync as zv}from"node:fs";import{homedir as TL,tmpdir as HL}from"node:os";import{join as kl}from"node:path";import{fileURLToPath as CL}from"node:url";import{promisify as LL}from"node:util";var Pn=LL(RL),yl=67108864,FL=4096,mp=["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/heic"],jL=["text/uri-list","text/plain;charset=utf-8","text/plain"],fp=[...mp,"text/uri-list","text/plain"];function _L(t){try{return Kv(t).isFile()}catch{return!1}}function BL(t){let e=[],n="",r="",i=!1;for(let o=0;o<t.length;o++){let s=t[o];if(r==="'")if(s==="'")r="";else n+=s;else if(r==='"')if(s==='"')r="";else if(s==="\\"&&'"\\$`'.includes(t[o+1]??""))n+=t[++o];else n+=s;else if(s==="\\"&&o+1<t.length)n+=t[++o],i=!0;else if(s==="'"||s==='"')r=s,i=!0;else if(/\s/.test(s)){if(i)e.push(n);n="",i=!1}else n+=s,i=!0}if(i)e.push(n);return e}function Bv(t){if(/^file:\/\//i.test(t))try{return CL(t)}catch{return}if(t.startsWith("~/"))return kl(TL(),t.slice(2));return t.startsWith("/")?t:void 0}function ys(t,e=_L){let n=[];for(let r of t.replace(/\r\n?/g,`
662
645
  `).split(`
663
- `)){let i=$v(r.trim());if(i&&e(i)){n.push(i);continue}for(let o of lL(r)){if(/^https?:\/\/\S+$/i.test(o)){n.push(o);continue}let s=$v(o);if(s&&e(s))n.push(s)}}return n}function kv(t){let e=fi(t)?$n(t):Bd(t);if(!e)return;return{ext:fi(t)?"png":"jpg",width:e.width,height:e.height}}async function kl(t,e){let n=kv(t);if(n&&n.width*n.height<=Se)return{bytes:t,...n,source:e};if(process.platform!=="darwin")throw Error(n?`${n.width}×${n.height} is over ${Se/1e6} megapixels`:"only PNG and JPEG pictures work here");let r=eL(wl(iL(),"ttheme-attach-"));try{let i=wl(r,"in"),o=wl(r,"out.png");Ev(i,t);let s=!n||n.width*n.height>Se?["--resampleHeightWidthMax",String(aL)]:[];await Pn("sips",["-s","format","png",...s,i,"--out",o]).catch(()=>{throw Error("that is not a picture macOS can read")});let a=new Uint8Array(yl(o)),c=kv(a);if(!c)throw Error("that is not a picture macOS can read");return{bytes:a,...c,source:e}}finally{nL(r,{recursive:!0,force:!0})}}async function cp(t,e){if(/^https?:\/\//i.test(t)){let n=await fetch(t,{headers:{"User-Agent":qd},signal:e});if(!n.ok)throw Error(`${new URL(t).host} answered ${n.status}`);if(Number(n.headers.get("content-length")??0)>$l)throw Error("that picture is over 64 MB");let r=new Uint8Array(await n.arrayBuffer());if(/^text\/html/i.test(n.headers.get("content-type")??""))throw Error(`${new URL(t).host} sent a web page, not a picture — copy the image address instead`);return kl(r,t)}if(Sv(t).size>$l)throw Error("that picture is over 64 MB");return kl(new Uint8Array(yl(t)),t)}var Mv=new Map,sr={key:"local",name:"local",origin:"file://",moved:!1,cutouts:"",best:"",tagBudget:0,ors:!1,vouched:!0,scored:!1,ansi:7,ratings:{safe:new Set,questionable:new Set,explicit:new Set},rate:()=>"",narrow:()=>[],postsUrl:()=>"",countUrl:()=>"",postUrl:()=>"",pageUrl:(t)=>Mv.get(t)??"",parse:()=>[],count:()=>0};function xv(t){if(/^https?:\/\//i.test(t))return"";return t.split("/").pop()??t}function Ov(t,e){Mv.set(t,e)}function Iv(t){return Number.parseInt(vv("sha1").update(t).digest("hex").slice(0,8),16)%Mr}var dL=`ObjC.import('AppKit')
646
+ `)){let i=Bv(r.trim());if(i&&e(i)){n.push(i);continue}for(let o of BL(r)){if(/^https?:\/\/\S+$/i.test(o)){n.push(o);continue}let s=Bv(o);if(s&&e(s))n.push(s)}}return n}function Gv(t){let e=hi(t)?wn(t):Yd(t);if(!e)return;return{ext:hi(t)?"png":"jpg",width:e.width,height:e.height}}async function vl(t,e){let n=Gv(t);if(n&&n.width*n.height<=Se)return{bytes:t,...n,source:e};if(process.platform!=="darwin")throw Error(n?`${n.width}×${n.height} is over ${Se/1e6} megapixels`:"only PNG and JPEG pictures work here");let r=NL(kl(HL(),"ttheme-attach-"));try{let i=kl(r,"in"),o=kl(r,"out.png");zv(i,t);let s=!n||n.width*n.height>Se?["--resampleHeightWidthMax",String(FL)]:[];await Pn("sips",["-s","format","png",...s,i,"--out",o]).catch(()=>{throw Error("that is not a picture macOS can read")});let a=new Uint8Array(Sl(o)),c=Gv(a);if(!c)throw Error("that is not a picture macOS can read");return{bytes:a,...c,source:e}}finally{AL(r,{recursive:!0,force:!0})}}async function pp(t,e){if(/^https?:\/\//i.test(t)){let n=await fetch(t,{headers:{"User-Agent":ef},signal:e});if(!n.ok)throw Error(`${new URL(t).host} answered ${n.status}`);if(Number(n.headers.get("content-length")??0)>yl)throw Error("that picture is over 64 MB");let r=new Uint8Array(await n.arrayBuffer());if(/^text\/html/i.test(n.headers.get("content-type")??""))throw Error(`${new URL(t).host} sent a web page, not a picture — copy the image address instead`);return vl(r,t)}if(Kv(t).size>yl)throw Error("that picture is over 64 MB");return vl(new Uint8Array(Sl(t)),t)}var Dv=new Map,ir={key:"local",name:"local",origin:"file://",moved:!1,cutouts:"",best:"",tagBudget:0,ors:!1,vouched:!0,scored:!1,ansi:7,ratings:{safe:new Set,questionable:new Set,explicit:new Set},rate:()=>"",narrow:()=>[],postsUrl:()=>"",countUrl:()=>"",postUrl:()=>"",pageUrl:(t)=>Dv.get(t)??"",parse:()=>[],count:()=>0};function qv(t){if(/^https?:\/\//i.test(t))return"";return t.split("/").pop()??t}function Yv(t,e){Dv.set(t,e)}function Jv(t){return Number.parseInt(Wv("sha1").update(t).digest("hex").slice(0,8),16)%Sr}var GL=`ObjC.import('AppKit')
664
647
  function run(argv) {
665
648
  const pb = $.NSPasteboard.generalPasteboard
666
649
  const files = pb.readObjectsForClassesOptions($([$.NSURL]), $({ NSPasteboardURLReadingFileURLsOnlyKey: true }))
@@ -685,16 +668,16 @@ function run(argv) {
685
668
  if (web && web.count > 0) return web.objectAtIndex(0).absoluteString.js
686
669
  const text = pb.stringForType('public.utf8-plain-text')
687
670
  return text && !text.isNil() ? text.js : ''
688
- }`,fL=`Add-Type -AssemblyName System.Windows.Forms,System.Drawing
671
+ }`,UL=`Add-Type -AssemblyName System.Windows.Forms,System.Drawing
689
672
  $c = [Windows.Forms.Clipboard]
690
673
  $f = $c::GetFileDropList(); if ($f.Count) { $f; exit }
691
674
  $p = Join-Path $env:TEMP 'ttheme-clipboard.png'
692
675
  $s = $c::GetData('PNG'); if ($s -is [IO.MemoryStream]) { [IO.File]::WriteAllBytes($p, $s.ToArray()); $p; exit }
693
676
  $i = $c::GetImage(); if ($i) { $i.Save($p, [Drawing.Imaging.ImageFormat]::Png); $p; exit }
694
- $c::GetText()`;function Rv(){if(process.platform!=="linux")return!1;try{return/microsoft/i.test(yl("/proc/version","utf8"))}catch{return!1}}async function hL(t){let e=Boolean(process.env.WAYLAND_DISPLAY),n=e?["wl-paste",["--list-types"]]:["xclip",["-selection","clipboard","-t","TARGETS","-o"]],r=(await Pn(n[0],n[1])).stdout.split(`
695
- `).map((s)=>s.trim()),i=(s)=>e?Pn("wl-paste",["--no-newline","--type",s],{encoding:"buffer",maxBuffer:$l}):Pn("xclip",["-selection","clipboard","-t",s,"-o"],{encoding:"buffer",maxBuffer:$l});if(r.includes("text/uri-list"))return{text:(await i("text/uri-list")).stdout.toString("utf8")};let o=ap.find((s)=>r.includes(s));if(o)return Ev(t,(await i(o)).stdout),{image:t};return{text:r.some((s)=>s.startsWith("text/plain")||s==="UTF8_STRING")?(await i(r.includes("text/plain")?"text/plain":"UTF8_STRING")).stdout.toString("utf8"):""}}function up(){return Boolean(process.env.SSH_CONNECTION||process.env.SSH_TTY)}async function Pv(t){if(process.platform==="darwin"){let e=(await Pn("osascript",["-l","JavaScript","-e",dL,t])).stdout.trim();return e===t?{image:t}:{text:e}}if(Rv()){let e=(await Pn("powershell.exe",["-NoProfile","-STA","-Command",fL])).stdout.replace(/\r/g,"").trim(),n=await Promise.all(e.split(`
677
+ $c::GetText()`;function Vv(){if(process.platform!=="linux")return!1;try{return/microsoft/i.test(Sl("/proc/version","utf8"))}catch{return!1}}async function WL(t){let e=Boolean(process.env.WAYLAND_DISPLAY),n=e?["wl-paste",["--list-types"]]:["xclip",["-selection","clipboard","-t","TARGETS","-o"]],r=(await Pn(n[0],n[1])).stdout.split(`
678
+ `).map((s)=>s.trim()),i=(s)=>e?Pn("wl-paste",["--no-newline","--type",s],{encoding:"buffer",maxBuffer:yl}):Pn("xclip",["-selection","clipboard","-t",s,"-o"],{encoding:"buffer",maxBuffer:yl});if(r.includes("text/uri-list"))return{text:(await i("text/uri-list")).stdout.toString("utf8")};let o=mp.find((s)=>r.includes(s));if(o)return zv(t,(await i(o)).stdout),{image:t};return{text:r.some((s)=>s.startsWith("text/plain")||s==="UTF8_STRING")?(await i(r.includes("text/plain")?"text/plain":"UTF8_STRING")).stdout.toString("utf8"):""}}function gp(){return Boolean(process.env.SSH_CONNECTION||process.env.SSH_TTY)}async function Zv(t){if(process.platform==="darwin"){let e=(await Pn("osascript",["-l","JavaScript","-e",GL,t])).stdout.trim();return e===t?{image:t}:{text:e}}if(Vv()){let e=(await Pn("powershell.exe",["-NoProfile","-STA","-Command",UL])).stdout.replace(/\r/g,"").trim(),n=await Promise.all(e.split(`
696
679
  `).map(async(r)=>/^[A-Za-z]:\\/.test(r)?(await Pn("wslpath",["-u",r])).stdout.trim():r));return n.length===1&&/ttheme-clipboard\.png$/.test(n[0]??"")?{image:n[0]}:{text:n.join(`
697
- `)}}if(process.platform==="linux")return hL(t);throw Error(`reading the clipboard is not supported on ${process.platform}`)}var mL=`ObjC.import('AppKit')
680
+ `)}}if(process.platform==="linux")return WL(t);throw Error(`reading the clipboard is not supported on ${process.platform}`)}var KL=`ObjC.import('AppKit')
698
681
  function run() {
699
682
  const pb = $.NSPasteboard.generalPasteboard
700
683
  const files = pb.readObjectsForClassesOptions($([$.NSURL]), $({ NSPasteboardURLReadingFileURLsOnlyKey: true }))
@@ -706,55 +689,77 @@ function run() {
706
689
  picture = ['public.png', 'public.tiff', 'public.jpeg', 'public.heic'].some((t) => types.includes(t))
707
690
  }
708
691
  return pb.changeCount + '\\t' + (picture ? 'picture' : '')
709
- }`;async function Nv(){if(up())return;if(process.platform==="darwin"){let[t="",e=""]=(await Pn("osascript",["-l","JavaScript","-e",mL])).stdout.trim().split("\t");return{stamp:t,picture:e==="picture"}}if(process.platform==="linux"&&!Rv()){let e=Boolean(process.env.WAYLAND_DISPLAY)?(await Pn("wl-paste",["--list-types"])).stdout:(await Pn("xclip",["-selection","clipboard","-t","TARGETS","-o"])).stdout;return{stamp:e,picture:/^image\//m.test(e)}}return}function vl(t){return t.length>8&&/^(?:\/|~\/|file:|https?:)/.test(t)}var Ka=(t)=>Buffer.from(t).toString("base64"),sp=(t)=>Buffer.from(t,"base64");function yv(t,e){return e.find((n)=>t.includes(n))}class lp{clipboard=!1;drops=!1;reading;offered=[];dropping;pw=Ka(vv("sha1").update(`${process.pid}:${Date.now()}`).digest("hex"));send;deliver;constructor(t,e){this.send=t,this.deliver=e}start(){let t="";if(this.clipboard)t+="\x1B[?5522h";if(this.drops)t+=`\x1B]72;t=a;${op.join(" ")}\x1B\\`;this.send(t)}stop(){this.send(`${this.clipboard?"\x1B[?5522l":""}${this.drops?"\x1B]72;t=A\x1B\\":""}`)}ask(){this.reading={mime:".",chunks:[],pw:"",listing:!0},this.send(`\x1B]5522;type=read:name=${Ka("ttheme")}:pw=${this.pw};${Ka(".")}\x1B\\`)}take(t){if(t.code==="5522")this.clip(t.meta,t.payload);else if(t.code==="72")this.drop(t.meta,t.payload)}clip(t,e){if(t.type!=="read")return;let n=t.status??"";if(n==="OK"){if(this.reading??={mime:".",chunks:[],pw:t.pw??"",listing:!0},t.pw)this.reading.pw=t.pw;return}let r=this.reading;if(!r)return;if(n==="DATA"){if(r.mime=t.mime?sp(t.mime).toString("utf8"):r.mime,e)r.chunks.push(sp(e));return}if(this.reading=void 0,n!=="DONE"){this.deliver({kind:"error",message:n==="EPERM"?"The clipboard read was not allowed":`The terminal answered ${n}`});return}let i=Buffer.concat(r.chunks);if(r.listing){let o=i.toString("utf8").split(/\s+/).filter(Boolean),s=yv(o,[...ap,...cL]);if(!s){this.deliver({kind:"text",text:""});return}let a=r.pw||this.pw,c=r.pw?"Paste event":"ttheme";this.reading={mime:s,chunks:[],pw:a,listing:!1},this.send(`\x1B]5522;type=read:name=${Ka(c)}:pw=${a};${Ka(s)}\x1B\\`);return}this.deliver(r.mime.startsWith("image/")?{kind:"bytes",bytes:new Uint8Array(i),source:"clipboard"}:{kind:"text",text:i.toString("utf8")})}drop(t,e){let n=t.t??"";if(n==="m"){if(t.x==="-1"){this.offered=[];return}if(e){this.offered=e.split(" ").filter(Boolean);let a=op.filter((c)=>this.offered.includes(c));this.send(`\x1B]72;t=m:o=${a.length>0?1:0};${a.join(" ")}\x1B\\`)}return}if(n==="M"){let a=e?e.split(" ").filter(Boolean):this.offered,c=yv(a,op);if(!c){this.send("\x1B]72;t=r:o=0\x1B\\");return}this.dropping={mimes:a,index:a.indexOf(c)+1,chunks:[]},this.send(`\x1B]72;t=r:x=${this.dropping.index}\x1B\\`);return}let r=this.dropping;if(!r)return;if(n==="R"){this.dropping=void 0,this.send("\x1B]72;t=r:o=0\x1B\\"),this.deliver({kind:"error",message:`The drop failed: ${e.split(":")[0]||"unknown error"}`});return}if(n!=="r"&&n!=="")return;if(e)r.chunks.push(sp(e));if(t.m==="1"||e)return;this.dropping=void 0;let i=Buffer.concat(r.chunks),o=r.mimes[r.index-1]??"",s;if(o.startsWith("image/"))s={kind:"bytes",bytes:new Uint8Array(i),source:"drop"};else{let a=i.toString("utf8"),c=o==="text/uri-list"?gs(a).find((u)=>tL(u)):void 0;s=c?{kind:"bytes",bytes:new Uint8Array(yl(c)),source:c}:{kind:"text",text:a}}this.send("\x1B]72;t=r:o=1\x1B\\"),this.deliver(s)}}var dp=5,pL=6,Av=0.05,gL=[1,2,3,4,5,6,9,10,11,12,13,14],Tv=(t,e)=>(e-t+360)%360<=180?1:-1;function Nn(t,e,n){let r=e*Math.cos(n*Math.PI/180),i=e*Math.sin(n*Math.PI/180),o=[t+0.3963377774*r+0.2158037573*i,t-0.1055613458*r-0.0638541728*i,t-0.0894841775*r-1.291485548*i].map((l)=>l**3),[s,a,c]=o,u=[4.0767416621*s-3.3077115913*a+0.2309699292*c,-1.2684380046*s+2.6097574011*a-0.3413193965*c,-0.0041960863*s-0.7034186147*a+1.707614701*c];if(u.some((l)=>l<-0.0001||l>1.0001))return;return u.map((l)=>{let d=Math.min(1,Math.max(0,l));return Math.round(255*(d<=0.0031308?12.92*d:1.055*d**0.4166666666666667-0.055))})}function bs(t,e,n){if(Nn(t,n,e)!==void 0)return n;let r=0,i=n;for(let o=0;o<24;o++){let s=(r+i)/2;if(Nn(t,s,e)===void 0)i=s;else r=s}return r}function ze(t,e,n){return`#${(Nn(t,bs(t,n,e),n)??[0,0,0]).map((i)=>i.toString(16).padStart(2,"0")).join("")}`}function bL(t,e){let{l:n,c:r}=Et(t);return ze(n,r,(e+360)%360)}function wL(t,e,n){let{l:r,c:i,h:o}=Et(t),s=vt(e)<0.18,a=(l)=>ze(s?r+(1-r)*l:r*(1-l),i,o);if(wt(a(1),e)<n+Av)return a(1);let c=0,u=1;for(let l=0;l<30;l++){let d=(c+u)/2;if(wt(a(d),e)>=n+Av)u=d;else c=d}return a(u)}function $L(t,e){let{l:n,c:r,h:i}=Et(t),o=0,s=n;for(let a=0;a<30;a++){let c=(o+s)/2;if(vt(ze(c,r,i))<=e-0.005)o=c;else s=c}return ze(o,r,i)}function kL(t,e,n){let r=ke[e],[i,o]=[Et(t[e]),Et(t[e+8])],s=(l,d)=>n.has(l)?[d]:Array.from({length:2*r.width+1},(f,h)=>(r.center-r.width+h+360)%360),a=(l,d,f)=>mr.every((h)=>{let m=(l>8?8:0)+h;if(m===l)return!0;let g=Et(t[m]);return g.c<ui||ye(g.h,d)>=fo+1||Math.abs(g.l-f)>=ho}),c,u=Number.POSITIVE_INFINITY;for(let l of s(e,i.h)){if(!n.has(e)&&!a(e,l,i.l))continue;for(let d of s(e+8,o.h)){if(ye(l,d)>Ye-dp||!n.has(e+8)&&!a(e+8,d,o.l))continue;let f=ye(l,i.h)+ye(d,o.h);if(f<u)u=f,c=[l,d]}}return c}class Hv{theme;moves=[];constructor(t){this.theme={...t,ansi:[...t.ansi]}}set(t,e,n){let r=this.get(t);if(n===r)return;if(this.moves.push({slot:t,rule:e,from:r,to:n}),t==="foreground")this.theme.foreground=n;else if(t==="selection")this.theme.selectionBackground=n;else this.theme.ansi[Number(t.slice(4))]=n}get(t){if(t==="foreground")return this.theme.foreground;if(t==="selection")return this.theme.selectionBackground;return this.theme.ansi[Number(t.slice(4))]}rehue(t,e,n){this.set(`ansi${t}`,e,bL(this.theme.ansi[t],n))}roles(){let t=new Set(this.theme.signatureSlots);for(let{slot:n,hue:r}of pr(this.theme)){let i=ke[pn(n)];this.rehue(n,"ansi-role",i.center+Tv(i.center,r)*(i.width-dp))}for(let{normal:n,gap:r}of Bn(this.theme)){if(r<=Ye)continue;let[i,o]=t.has(`ansi${n+8}`)?[n+8,n]:[n,n+8],s=Et(this.theme.ansi[i]).h,a=Et(this.theme.ansi[o]).h;this.rehue(o,"bright-follows",s+Tv(s,a)*(Ye-dp))}let e=mo(this.theme);for(let[n,r]of Gn(this.theme)){let i=pn(e.has(r)?n:r),o=kL(this.theme.ansi,i,e);if(o===void 0)continue;this.rehue(i,"distinct",o[0]),this.rehue(i+8,"distinct",o[1])}}readability(){let t=new Set(this.theme.waive),{background:e}=this.theme,n=(r,i,o,s=e)=>{if(t.has(r))return;for(let a of i)if(wt(this.get(a),s)<o)this.set(a,r,wL(this.get(a),s,o))};if(n("foreground",["foreground"],7),n("accents",gL.map((r)=>`ansi${r}`),3),n("light-ansi",["ansi7","ansi15"],7),n("ansi8-visible",["ansi8"],1.6),!t.has("ansi0-dark")&&vt(this.get("ansi0"))>0.15)this.set("ansi0","ansi0-dark",$L(this.get("ansi0"),0.15));n("selection",["selection"],7,this.theme.foreground)}net(){return[...new Set(this.moves.map((t)=>t.slot))].flatMap((t)=>{let e=this.moves.filter((i)=>i.slot===t),n=e[0].from,r=this.get(t);return n===r?[]:[{slot:t,rule:[...new Set(e.map((i)=>i.rule))].join(", "),from:n,to:r}]})}}function Sl(t){let e=new Hv(t);for(let n=0;n<pL;n++)if(e.readability(),e.roles(),Un(e.theme).length===0)break;return{theme:e.theme,moves:e.net(),left:Un(e.theme)}}var Ji=[{key:"background",label:"Background",min:0,max:0.5,step:0.01,digits:2},{key:"foreground",label:"Foreground",min:0.5,max:1,step:0.01,digits:2},{key:"hue",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0},{key:"tint",label:"Tint",min:0,max:0.1,step:0.005,digits:3},{key:"lightness",label:"Accent lightness",min:0.4,max:0.95,step:0.01,digits:2},{key:"chroma",label:"Accent chroma",min:0,max:0.3,step:0.005,digits:3},{key:"brights",label:"Brights",min:-0.2,max:0.2,step:0.01,digits:2}],za={background:0.21,foreground:0.88,hue:265,tint:0.02,lightness:0.72,chroma:0.12,brights:0.06},Cv=(t,e,n)=>Math.min(n,Math.max(e,t));function fp(t,e,n){let r=t[e.key]+e.step*n,i=e.wraps?(r%e.max+e.max)%e.max:Cv(r,e.min,e.max);return{...t,[e.key]:Math.round(i*1e4)/1e4}}function ei(t){let e=(r,i,o)=>ze(Cv(r,0,1),i,o),n=Array.from({length:16},()=>"#000000");n[0]=e(t.background+0.06,t.tint,t.hue),n[8]=e(t.background+0.25,t.tint,t.hue),n[7]=e(t.foreground-0.06,t.tint/2,t.hue),n[15]=e(t.foreground+0.06,t.tint/2,t.hue);for(let r of mr){let i=ke[r].center;n[r]=e(t.lightness,t.chroma,i),n[r+8]=e(t.lightness+t.brights,t.chroma,i)}return{background:e(t.background,t.tint,t.hue),foreground:e(t.foreground,t.tint/2,t.hue),cursor:e(t.lightness+t.brights,Math.max(t.chroma,0.08),t.hue),selection:e(t.background+0.1,t.tint*2,t.hue),ansi:n}}var An=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],A=["Background","Foreground","Cursor","Selection"],ln=["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"],yL=["Behind every cell","Plain text","The cursor block","Selected text","Text on colored bars, dark shades","Errors, deleted lines, failed tests","Success, added lines, prompts","Warnings, commit hashes, skipped tests","Directories, info, keywords","Keywords, branches, pictures in ls","Links, diff hunks, types","Light shades, text in some programs","Comments, muted text, suggestions"],cr=A.length+ln.length,un=[{key:"l",label:"Lightness",min:0,max:1,step:0.01,digits:2},{key:"c",label:"Chroma",min:0,max:0.37,step:0.005,digits:3},{key:"h",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0}],Lv=5,vL=5,Qt=un.length,ws=["this","pair","normals","brights","accents"],El=[1,2,3,4,5,6,9,10,11,12,13,14],Fv=El.filter((t)=>t<8).map((t)=>A.length+t),jv=El.filter((t)=>t>8).map((t)=>A.length+t);function hp(t,e){let n=e-A.length;if(n<0||t==="this")return[e];if(t==="pair")return[A.length+n%8,A.length+8+n%8];let r=t==="normals"?Fv:t==="brights"?jv:[...Fv,...jv];return r.includes(e)?r:[e]}function SL(){return Array.from({length:cr},(t,e)=>e<A.length?[e]:[e,e+8]).flat()}function EL(t){let e=t.trim();return/^https?:\/\/\S+$/i.test(e)||gs(e).length>0}function cn(t){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi]}function Gt(t){let[e,n,r,i,...o]=t;return{background:e,foreground:n,cursor:r,selection:i,ansi:o}}function Ce(t){if(t<A.length)return{name:A[t],about:An[t]};let e=t-A.length,n=ln[e%8];return e<8?{name:n,about:`ANSI ${e}`}:{name:`Bright ${n.toLowerCase()}`,about:`ANSI ${e}`}}function Uv(t){let e=t-A.length;if(e>=9&&e<=15)return`Bold or bright ${ln[e-8].toLowerCase()} text`;return yL[t]}var Vi=(t,e,n)=>Math.min(n,Math.max(e,t));function _v(t){return t.length===1?t.toLowerCase():t}function ML(t){return Vi(Math.round(t),0,255).toString(16).padStart(2,"0")}function Bv(t){let e=t.trim().toLowerCase(),n=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/.exec(e);if(n){let o=n[1];return`#${o.length===3?[...o].map((s)=>s+s).join(""):o}`}let r=/^rgb\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*\)$/.exec(e);if(r)return`#${r.slice(1,4).map((o)=>ML(Number(o))).join("")}`;let i=/^oklch\(\s*([\d.]+)(%?)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:deg|°)?\s*\)$/.exec(e);if(i){let o=Number(i[1])/(i[2]?100:1);return ze(Vi(o,0,1),Number(i[3]),Number(i[4])%360)}return}function Zi(t){let e=ve.find((n)=>n.rule===t);return e?.min??e?.max??0}function ur(t,e,n){let r=Gt(t);return{name:"draft",background:r.background,foreground:r.foreground,selectionBackground:r.selection,ansi:r.ansi,waive:n,signatureSlots:e}}function xL(t,e){let n=t-A.length,r=t<=1?"foreground":t===3?"selection":n===7||n===15?"light-ansi":n===8?"ansi8-visible":El.includes(n)?"accents":void 0;return{against:t===0||t===3?1:0,floor:r===void 0||e.includes(r)?void 0:Zi(r)}}function bp(t,e,n,r){let i=ur(t,e,n),{background:o,foreground:s,selection:a,ansi:c}=Gt(t),u=(l,d,f)=>wt(d,f)<Zi(r)?[l]:[];if(r==="foreground")return wt(s,o)<Zi(r)?[1,0]:[];if(r==="selection")return wt(s,a)<Zi(r)?[3,1]:[];if(r==="accents")return El.flatMap((l)=>u(A.length+l,c[l],o));if(r==="light-ansi")return[7,15].flatMap((l)=>u(A.length+l,c[l],o));if(r==="ansi8-visible")return u(A.length+8,c[8],o);if(r==="ansi0-dark")return vt(c[0])>Zi(r)?[A.length]:[];if(r==="ansi-role")return pr(i).map(({slot:l})=>A.length+l);if(r==="bright-follows")return Bn(i).filter(({gap:l})=>l>Ye).flatMap(({normal:l})=>[A.length+l,A.length+l+8]);if(r==="distinct")return Gn(i).flatMap(([l,d])=>[A.length+l,A.length+d]);return[]}function wp(t,e,n){return new Set(An.flatMap((r,i)=>$p(t,e,n,i).some((o)=>o.ok===!1)?[i]:[]))}function ar(t,e,n,r,i){let o=wt(t,e),s=Zi(n);if(i.includes(n))return{ok:void 0,text:`${r} ${o.toFixed(2)}:1 · waived`};return{ok:o>=s,text:`${r} ${o.toFixed(2)}:1 · ≥ ${s}`}}function $p(t,e,n,r){let i=Gt(t),o=ur(t,e,n);if(r===0){let w=[1,2,3,4,5,6,9,10,11,12,13,14].reduce((k,v)=>wt(i.ansi[k],i.background)<=wt(i.ansi[v],i.background)?k:v);return[ar(i.foreground,i.background,"foreground","Foreground on it",n),ar(i.ansi[w],i.background,"accents",`Weakest, ANSI ${w},`,n),ar(i.ansi[8],i.background,"ansi8-visible","ANSI 8 on it",n)]}if(r===1)return[ar(i.foreground,i.background,"foreground","On background",n),ar(i.foreground,i.selection,"selection","On the selection",n)];if(r===2)return[{ok:void 0,text:`On background ${wt(i.cursor,i.background).toFixed(2)}:1`}];if(r===3)return[ar(i.foreground,i.selection,"selection","Foreground on it",n)];let s=r-A.length,a=i.ansi[s];if(s===0){let b=vt(a),w=Zi("ansi0-dark");return[n.includes("ansi0-dark")?{ok:void 0,text:`Luminance ${b.toFixed(3)} · waived`}:{ok:b<=w,text:`Luminance ${b.toFixed(3)} · ≤ ${w}`}]}if(s===7||s===15)return[ar(a,i.background,"light-ansi","On background",n)];if(s===8)return[ar(a,i.background,"ansi8-visible","On background",n)];let c=[ar(a,i.background,"accents","On background",n)],u=Et(a),l=pn(s),d=ke[l],f=`${d.name} ${d.center}±${d.width}°`;if(u.c<ui)c.push({ok:void 0,text:"Too grey to have a hue"});else if(mo(o).has(s))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · a signature, free of ${f}`});else if(n.includes("ansi-role"))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · ${f} waived`});else{let b=ye(u.h,d.center)-d.width;c.push(b>0?{ok:!1,text:`Hue ${u.h.toFixed(0)}° · ${b.toFixed(0)}° outside ${f}`}:{ok:!0,text:`Hue ${u.h.toFixed(0)}° · in ${f}`})}let h=s<8?s+8:s-8,m=Bn(o).find((b)=>b.normal===l);if(m)c.push(n.includes("bright-follows")?{ok:void 0,text:`${m.gap.toFixed(0)}° from ANSI ${h} · waived`}:{ok:m.gap<=Ye,text:`${m.gap.toFixed(0)}° from ANSI ${h} · ≤ ${Ye}°`});let g=Gn(o).flatMap(([b,w])=>b===s?[w]:w===s?[b]:[]);if(g.length>0&&!n.includes("distinct"))c.push({ok:!1,text:`Reads as ANSI ${g.join(", ")} · within ${fo}° and ${ho} lightness`});return c}function kp(t,e,n){let r=gn(ur(t,e,n));return ve.map((i,o)=>{let s=r[o],a=n.includes(i.rule),c=a||Number.isNaN(s)?void 0:(i.min===void 0||s>=i.min)&&(i.max===void 0||s<=i.max);return{ok:c,label:i.label,value:Number.isNaN(s)?"—":Number.isInteger(s)?String(s):s.toFixed(2),bound:a?"waived":i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",slots:c===!1?bp(t,e,n,i.rule):[]}})}var OL=new Set(["reset","reset-all","hex","paste","fix","open","tune","sig","follow"]),Wv=un[1].max;function mp(t){let[e,n,r]=et(t);return e===n&&n===r}function pp(t,e){return Math.floor(bs(t,e,Wv)*1e4)/1e4}function gp(t,e){return{l:e.l-t.l,c:e.c-t.c,h:((e.h-t.h)%360+540)%360-180}}function Gv(t,e){let n=t.wraps?t.max-t.step:t.max;return Math.min(n,Math.round((t.min+(t.max-t.min)*e)/t.step)*t.step)}class yp{mode;seeds=za;field=0;list;lch;start;original;signature;row=0;col=0;channel=0;scope="this";view="slot";scene=0;typing;overlay;quitting=!1;compare=!1;notice;filter="";pick=0;result;wants;pictures;inspect=!1;spot;format="hex";pic=!0;menu;entry=0;changedOnly=!1;where=!1;size;copied;startPictures;options;fresh;tone;startSignature;seeded=!1;tuneFrom;holds=new Map;clip;history=[];future=[];lastEdit;links=new Map;unlinked=new Set;offsets=new Map;constructor(t){this.options=t,this.tone=t.tone===!0,this.fresh=t.colors===void 0,this.mode=this.fresh?"seeds":"list",this.list=cn(t.colors??ei(this.seeds)),this.lch=this.lchs(),this.start=[...this.list],this.original=t.original?cn(t.original):[...this.list],this.signature=[...t.signature],this.startSignature=[...t.signature],this.pictures=t.pictures??0,this.startPictures=this.pictures,this.chain(this.original)}chain(t){this.links=new Map,this.unlinked=new Set,this.offsets=new Map;for(let e=0;e<8;e++){let n=A.length+e,r=n+8,i=this.lchOf(t[n]),o=this.lchOf(t[r]);if(i.c>=ui&&o.c>=ui&&ye(i.h,o.h)<=3)this.links.set(r,n),this.offsets.set(r,gp(i,o))}}pair(t){if(t<A.length)return;let e=A.length+(t-A.length)%8,n=e+8;return{normal:e,bright:n,on:this.linkOf(n)!==void 0,lift:this.lch[n].l-this.lch[e].l}}linkOf(t){let e=this.links.get(t);return e!==void 0&&!this.unlinked.has(t)?e:void 0}changed(t){return this.list[t]!==this.original[t]}visible(t){return!this.changedOnly||this.changed(t)}changes(){return this.list.filter((t,e)=>this.changed(e)).length}slotAt(t,e){return t<A.length?t:t+(e===1?8:0)}get added(){return Math.max(0,this.pictures-this.startPictures)}found(t){this.pictures=t.count,this.notice=t.note}get waive(){return this.options.waive??[]}get held(){return this.holds.get(this.slot())}colors(){return Gt(this.list)}edited(){return{colors:this.colors(),signature:[...this.signature]}}shown(){return this.compare?this.start:this.list}slot(){return this.row<A.length?this.row:this.row+(this.col===1?8:0)}dirty(){return this.seeded||this.pictures!==this.startPictures||this.list.some((t,e)=>t!==this.start[e])||this.signature.join()!==this.startSignature.join()}misses(){return wp(this.list,this.signature,this.waive)}failing(){return Un(ur(this.list,this.signature,this.waive))}choices(){let t=this.filter.toLowerCase();return(this.options.palettes??[]).filter((e)=>e.name.toLowerCase().includes(t))}paste(t){if(this.notice=void 0,this.overlay==="open"){this.filter+=t.replace(/\s+/g,"").toLowerCase(),this.pick=0;return}if(this.overlay)return;if(!this.tone&&t.trim()===""){this.findPictures({clipboard:!0});return}if(!this.tone&&EL(t)){this.findPictures({paste:t});return}if(this.mode==="seeds")return;let e=this.options.decode?.(t);if(e){this.remember("open"),this.list=cn(e),this.lch=this.lchs(),this.chain(this.list),this.notice="Took the colors of the share code";return}let n=Bv(t);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"paste")}press(t){if(this.notice=void 0,t==="ctrl-c"){this.result="cancelled";return}if(this.quitting){if(this.quitting=!1,t==="y"||t==="Y")this.result="cancelled";return}if(this.typing!==void 0){this.type(t);return}if(this.overlay==="keys"){this.overlay=void 0;return}if(this.overlay==="open"){this.openKey(t);return}if(this.menu){this.menuKey(t);return}if(t==="?"){this.overlay="keys";return}if(this.inspect&&this.mode==="list"&&this.inspectKey(t))return;if(this.tone&&(t==="ctrl-v"||t==="alt-v"||t==="p"))return;if(t==="ctrl-v"||t==="alt-v"){this.findPictures({clipboard:!0});return}if(t==="p"&&this.mode!=="tune"){this.findPictures();return}if(t===" "&&this.mode!=="seeds"){this.compare=!this.compare;return}if(this.compare&&t==="esc"){this.compare=!1;return}if(t==="g"&&this.mode!=="seeds"){this.view=this.view==="slot"?"relations":"slot";return}let e=t==="j"?"down":t==="k"?"up":t;if(this.mode==="seeds")this.seedKey(e);else if(this.mode==="tune")this.tuneKey(e);else this.listKey(e)}select(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.mode==="tune"){if(t===this.slot())return;this.tuneKey("enter")}this.notice=void 0,this.seat(t),this.lastEdit=void 0}seat(t){if(this.row=t<A.length?t:A.length+(t-A.length)%8,t>=A.length)this.col=t-A.length>=8?1:0}grip(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return!1;if(this.notice=void 0,this.mode==="list")this.tune();return this.channel=t,!0}slide(t,e){if(!this.grip(t))return;let n=Math.min(1,Math.max(0,e));if(t===Qt){this.reach(21**n);return}this.put(Gv(un[t],n))}sow(t,e){let n=Ji[t];if(this.mode!=="seeds"||this.overlay||this.quitting||!n)return;this.notice=void 0,this.field=t;let r=Math.min(1,Math.max(0,e));this.seeds=fp({...this.seeds,[n.key]:Gv(n,r)},n,0),this.list=cn(ei(this.seeds)),this.lch=this.lchs()}scroll(t){let e=(n,r)=>Math.min(r,Math.max(0,n+t));if(this.overlay==="open")this.pick=e(this.pick,Math.max(0,this.choices().length-1));else if(this.overlay||this.quitting||this.typing!==void 0)return;else if(this.mode==="seeds")this.field=e(this.field,Ji.length-1);else if(this.mode==="tune")this.channel=0,this.step(-t);else this.row=e(this.row,cr-1),this.lastEdit=void 0}lchOf(t){let e=Et(t);return mp(t)?{...e,h:this.neutralHue()}:e}lchs(){return this.list.map((t)=>this.lchOf(t))}neutralHue(){let t=[0,1,3,2].map((e)=>this.list[e]).find((e)=>!mp(e));return t?Et(t).h:za.hue}seedKey(t){let e=Ji.length;if(t==="up"||t==="down")this.field=(this.field+(t==="up"?e-1:1))%e;else if(t==="home"||t==="end")this.field=t==="home"?0:e-1;else if(t==="left"||t==="right"||t==="shift-left"||t==="shift-right"){let n=Ji[this.field],r=(t.endsWith("left")?-1:1)*(t.startsWith("shift")?n.wraps?10:Lv:1);this.seeds=fp(this.seeds,n,r),this.list=cn(ei(this.seeds)),this.lch=this.lchs()}else if(t==="enter")this.leaveSeeds();else if(t==="o")this.openPalettes();else if(t==="esc")this.leave()}leaveSeeds(){this.start=[...this.list],this.original=[...this.list],this.chain(this.original),this.seeded=!0,this.mode="list"}leave(){if(this.dirty())this.quitting=!0;else this.result="cancelled"}findPictures(t){if(!this.options.find){this.notice="Pictures need Ghostty, iTerm2 or kitty, outside tmux";return}this.wants=t?{start:t}:{}}openPalettes(){if((this.options.palettes??[]).length>0)this.overlay="open",this.pick=0;else this.notice="No other palettes to take colors from"}listKey(t){if(t==="up"||t==="down"){let e=t==="up"?-1:1;this.land(this.row+e,e),this.lastEdit=void 0}else if(t==="home"||t==="end")this.land(t==="home"?0:cr-1,t==="home"?1:-1);else if(t==="pgup"||t==="pgdn")this.land(t==="pgup"?0:A.length,1);else if(t==="left"||t==="right"){let e=t==="left"?0:1;if(this.row>=A.length&&this.visible(this.slotAt(this.row,e)))this.col=e,this.lastEdit=void 0}else if(this.builderKey(t))return;else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1;else if(t==="n"||t==="N")this.nextMiss(t==="n"?1:-1);else if(t==="enter"||t==="tab")this.tune();else if(t==="#")this.typing="";else if(t==="c")this.clip=this.list[this.slot()],this.notice=`Copied ${this.clip}`;else if(t==="v")if(this.clip)this.set(this.slot(),this.clip,"paste");else this.notice="Nothing copied yet — c copies a slot";else if(t==="r")this.set(this.slot(),this.original[this.slot()],"reset");else if(t==="R")this.remember("reset-all"),this.list=[...this.original],this.lch=this.lchs();else if(t==="=")this.follow();else if(t==="*"&&!this.tone)this.mark();else if(t==="f")this.fix();else if(t==="o"&&!this.tone)this.openPalettes();else if(t==="u")this.undo();else if(t==="ctrl-r")this.redo();else if(t==="s"||t==="ctrl-s")this.save();else if(t==="esc")this.leave()}viewport(t,e){this.size={cols:t,rows:e}}layout(){return this.size?Ua(this.size.cols,this.size.rows,this.scene):void 0}get roomy(){return this.layout()!==void 0}reseat(){if(!this.visible(this.slot()))this.land(this.row,1)}rowShown(t){return this.visible(this.slotAt(t,0))||t>=A.length&&this.visible(this.slotAt(t,1))}land(t,e){for(let n=0;n<cr;n++){let r=((t+e*n)%cr+cr)%cr;if(this.rowShown(r)){if(this.row=r,r>=A.length&&!this.visible(this.slotAt(r,this.col)))this.col=1-this.col;return}}}builderKey(t){if(["i","m","w","x","I"].includes(t)&&!this.roomy)return this.notice="The builder needs a window of at least 96×28",!0;if(t==="i")this.startInspect();else if(t==="l")this.linkKey();else if(t==="m")this.changedOnly=!this.changedOnly,this.reseat(),this.notice=this.changedOnly?this.changes()>0?void 0:"Nothing changed yet":void 0;else if(t==="b")this.pic=!this.pic;else if(t==="w")this.where=!this.where;else if(t==="x"&&this.options.exports)this.menu="export",this.entry=0;else if(t==="I")this.menu="import",this.entry=0;else return!1;return!0}menuKey(t){let e=this.menu==="export"?3:2;if(t==="esc")this.menu=void 0;else if(t==="up"||t==="down"||t==="k"||t==="j")this.entry=(this.entry+(t==="up"||t==="k"?e-1:1))%e;else if(t==="enter")this.choose(this.entry)}choose(t){let e=this.menu;if(this.menu=void 0,e==="import"){if(t===0)this.openPalettes();else this.notice=this.options.decode?"Paste a tt1: share code into this window":"Share codes are not read here";return}let n=this.options.exports;if(e!=="export"||!n)return;try{let r=this.edited(),i=n.code(r);this.copied=t===0?i:t===1?`${n.command} ${i}`:n.toml(r),this.notice=`Copied ${t===0?"the share code":t===1?"the add command":"the palette file"} — paste it where you need it`}catch(r){this.notice=r instanceof Error?r.message:String(r)}}openMenu(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;this.menu=this.menu===t?void 0:t,this.entry=0}startInspect(){let t=this.layout();if(!t){this.notice="The builder needs a window of at least 96×28";return}this.inspect=!0,this.spot=pv(t,this.slot())}toggleInspect(){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.inspect)this.inspect=!1,this.spot=void 0;else this.startInspect()}inspectKey(t){let e=this.layout();if(!e)return this.inspect=!1,!1;let r={left:"left",right:"right",up:"up",k:"up",down:"down",j:"down",tab:"next","shift-tab":"previous"}[t];if(t==="i"||t==="esc")this.inspect=!1,this.spot=void 0;else if(r)this.spot=gv(e,bl(e,this.spot),r);else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1,this.spot=void 0;else if(t==="enter")this.jump();else return!1;return!0}point(t){if(this.mode!=="seeds"&&!this.overlay&&!this.quitting&&this.typing===void 0&&this.layout())this.inspect=!0,this.spot=t}slotsHere(){let t=this.layout();return t&&this.spot?bv(t,this.spot):void 0}jump(){let t=this.slotsHere();if(!t)return;let e=t.ground!==0?t.ground:t.text;this.inspect=!1,this.spot=void 0,this.show(e),this.select(e)}show(t){if(!this.visible(t))this.changedOnly=!1}openSlot(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;let e=this.mode==="tune"&&t===this.slot();if(this.mode==="tune")this.tuneKey("enter");if(e)return;if(this.show(t),this.select(t),this.mode==="list")this.tune()}dismiss(){if(this.mode!=="tune"||this.overlay||this.quitting)return;this.typing=void 0,this.tuneKey("enter")}plane(t,e){if(!this.grip(0))return;this.channel=0,this.put(t),this.channel=1,this.put(e)}linkKey(){let t=this.slot();if(t<A.length){this.notice="l links a bright to its normal — pick an ANSI row";return}let e=A.length+(t-A.length)%8,n=e+8,r=`${Ce(n).name} and ${Ce(e).name.toLowerCase()}`;if(this.mode!=="tune")this.remember("link");if(this.linkOf(n)!==void 0){this.unlinked.add(n),this.notice=`${r} move apart`;return}this.links.set(n,e),this.unlinked.delete(n),this.offsets.set(n,gp(this.lch[e],this.lch[n])),this.notice=`${r} move together`}nextMiss(t){let e=SL(),n=this.misses();if(n.size===0){this.notice="The gate passes";return}let r=e.indexOf(this.slot());for(let i=1;i<=e.length;i++){let o=e[((r+t*i)%e.length+e.length)%e.length];if(n.has(o)){this.seat(o);return}}}tune(){this.remember("tune"),this.tuneFrom={list:[...this.list],lch:[...this.lch]},this.holds=new Map,this.hold(),this.mode="tune"}hold(){for(let t of this.scoped())if(!this.holds.has(t))this.holds.set(t,this.lch[t].c)}scoped(){return hp(this.scope,this.slot())}tuneKey(t){let e=this.channel===Qt;if(t==="tab"||t==="shift-tab")this.channel=e?0:Qt;else if(t==="up"||t==="down"||t==="pgup"||t==="pgdn")this.channel=0,this.step((t==="up"||t==="pgup"?1:-1)*(t.startsWith("pg")?Lv:1));else if(t==="left"||t==="right"){let n=t==="left"?-1:1;if(e)this.reach(this.ratio()+n*0.1);else this.channel=1,this.step(n)}else if(t==="shift-left"||t==="shift-right"){let n=t==="shift-left"?-1:1;if(e)this.reach(this.ratio()+n*0.5);else this.channel=2,this.step(n*vL)}else if((t===","||t===".")&&!e)this.channel=2,this.step(t===","?-1:1);else if(t==="home"||t==="end")if(e)this.reach(t==="home"?this.partner().floor??1:21);else{let n=un[this.channel];this.put(t==="home"?n.min:n.wraps?n.max-n.step:n.max)}else if(/^[0-9]$/.test(t))if(e){if(t!=="0")this.reach(Number(t))}else{let n=un[this.channel];this.put(n.min+(n.max-n.min)*Number(t)/10)}else if(t==="a")this.rescope();else if(t==="#")this.typing="";else if(t==="l")this.linkKey();else if(t==="s"||t==="ctrl-s")this.tuneKey("enter"),this.save();else if(t==="enter"){if(this.tuneFrom&&this.list.every((n,r)=>n===this.tuneFrom?.list[r]))this.history.pop();this.endTune()}else if(t==="esc"){if(this.tuneFrom)this.list=[...this.tuneFrom.list],this.lch=[...this.tuneFrom.lch],this.history.pop();this.endTune()}}rescope(){if(this.slot()<A.length){this.notice="A base color moves alone";return}let t=ws.indexOf(this.scope);for(let e=1;e<=ws.length;e++){let n=ws[(t+e)%ws.length];if(n==="this"||hp(n,this.slot()).length>1){this.scopeTo(n);return}}}scopeTo(t){if(this.mode!=="tune"||this.typing!==void 0||this.quitting||this.slot()<A.length)return;if(t!=="this"&&hp(t,this.slot()).length<=1)return;this.scope=t,this.hold();let e=this.scoped().length;this.notice=e>1?`${e} slots move together`:"This slot moves alone"}endTune(){this.tuneFrom=void 0,this.holds=new Map,this.mode="list"}partner(){return xL(this.slot(),this.waive)}ratio(){return wt(this.list[this.slot()],this.list[this.partner().against])}origin(){let t=this.slot(),e=this.original[t];if(e===this.list[t])return;return{hex:e,lch:this.lchOf(e),ratio:wt(e,this.original[this.partner().against])}}reach(t){let e=this.slot(),n=this.list[this.partner().against],r=this.lch[e],i=this.holds.get(e)??r.c,o=(f)=>ze(f,Math.min(i,pp(f,r.h)),r.h),s=(f)=>wt(o(f),n),a=vt(this.list[e])>=vt(n),c=Et(n).l,u=Math.max(1,Math.round(t*100)/100),l=a?1:0,d;if(s(l)<u)d=l,this.notice=`The ratio stops at ${s(l).toFixed(2)}:1 on this side of the color it is read against`;else{let f=c,h=l;for(let m=0;m<24;m++){let g=(f+h)/2;if(s(g)>=u)h=g;else f=g}d=h}this.place(e,d,i,r.h);for(let f=0;f<40&&d!==l&&wt(this.list[e],n)<u;f++)d=a?Math.min(1,d+0.001):Math.max(0,d-0.001),this.place(e,d,i,r.h);this.lch[e]={...this.lch[e],l:Math.round(d*1e4)/1e4}}step(t){let e=un[this.channel],n=this.lch[this.slot()][e.key];this.put(n+e.step*t)}put(t){let e=this.slot(),n=un[this.channel],r=n.wraps?(t%n.max+n.max)%n.max:Vi(t,n.min,n.max),i=Math.round(r*1e4)/1e4,o=this.lch[e],s=this.scoped().filter((u)=>u!==e),a=(u)=>Math.round(u*1e4)/1e4;if(n.key==="c"){let u=pp(o.l,o.h);if(i>u)this.notice=`Chroma stops at ${u.toFixed(3)}, the sRGB edge for this lightness and hue`;let l=Math.min(i,u),d=l-o.c;this.holds.set(e,l),this.place(e,o.l,l,o.h);for(let f of s){let h=this.lch[f],m=a(Vi((this.holds.get(f)??h.c)+d,0,Wv));this.holds.set(f,m),this.place(f,h.l,m,h.h)}this.trail([e,...s]);return}let c=n.key==="h"?((i-o.h)%360+540)%360-180:i-o.l;if(this.place(e,n.key==="l"?i:o.l,this.holds.get(e)??o.c,n.key==="h"?i:o.h),n.key==="h"&&mp(this.list[e]))this.notice="A grey shows no hue — raise its chroma first";for(let u of s){let l=this.lch[u];this.place(u,n.key==="l"?a(Vi(l.l+c,0,1)):l.l,this.holds.get(u)??l.c,n.key==="h"?a(((l.h+c)%360+360)%360):l.h)}this.trail([e,...s])}trail(t){let e=new Set(t);for(let[n,r]of this.links){if(this.unlinked.has(n))continue;if(e.has(n)&&!e.has(r))this.unlinked.add(n);else if(e.has(r)&&!e.has(n)){let i=this.lch[r],o=this.offsets.get(n);this.place(n,Vi(i.l+o.l,0,1),Math.max(0,i.c+o.c),((i.h+o.h)%360+360)%360)}}}place(t,e,n,r){let i=Math.min(n,pp(e,r));this.lch[t]={l:e,c:i,h:r},this.list[t]=ze(e,i,r)}take(t,e){if(this.mode==="tune")this.list[this.slot()]=t,this.lch[this.slot()]=this.lchOf(t),this.holds.set(this.slot(),this.lch[this.slot()].c),this.trail([this.slot()]);else this.set(this.slot(),t,e)}type(t){let e=this.typing??"";if(t==="esc")this.typing=void 0;else if(t==="enter"){let n=Bv(e);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"hex")}else{let n=Ki(e,_v(t),(r)=>/^[0-9a-z#(),.% ]$/.test(r)&&e.length<28);if(n!==void 0)this.typing=n}}openKey(t){let e=this.choices();if(t==="esc")this.overlay=void 0,this.filter="";else if(t==="up"||t==="down"){let n=Math.max(1,e.length);this.pick=(this.pick+(t==="up"?n-1:1))%n}else if(t==="home"||t==="end")this.pick=t==="home"?0:Math.max(0,e.length-1);else if(t==="enter"){let n=e[this.pick];if(!n)return;if(this.remember("open"),this.list=cn(n.colors),this.lch=this.lchs(),this.chain(this.list),this.overlay=void 0,this.filter="",this.notice=`Took the colors of ${n.name}`,this.mode==="seeds")this.leaveSeeds()}else{let n=Ki(this.filter,_v(t),(r)=>/^[a-z0-9@/-]$/.test(r));if(n!==void 0)this.filter=n,this.pick=0}}remember(t){if(t!==this.lastEdit||OL.has(t))this.history.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.future=[];this.lastEdit=t}set(t,e,n){if(!le(e)||this.list[t]===e)return;this.remember(n),this.list[t]=e,this.lch[t]=this.lchOf(e),this.trail([t])}follow(){if(this.row<A.length){this.notice="= works on an ANSI row — the bright takes its normal";return}let t=this.row,e=this.row+8,n=this.lch[t];this.remember("follow"),this.place(e,Vi(n.l+0.06,0,1),n.c,n.h),this.links.set(e,t),this.unlinked.delete(e),this.offsets.set(e,gp(n,this.lch[e])),this.seat(e),this.notice=`${Ce(e).name} follows ${Ce(t).name.toLowerCase()}`}mark(){let t=An[this.slot()];this.remember("sig");let e=this.signature.includes(t)?this.signature.filter((r)=>r!==t):[...this.signature,t],n=e.length>3?e[0]:void 0;this.signature=e.slice(-3),this.notice=this.signature.length===3?`Signature: ${this.signature.join(", ")}${n?` — ${n} dropped`:""}`:`The signature needs three slots — ${this.signature.length} marked`}fix(){let t=ur(this.list,this.signature,this.waive),{theme:e,moves:n,left:r}=Sl({...t,selectionBackground:t.selectionBackground,signatureSlots:this.signature});if(n.length===0){this.notice=Un(t).length===0?"Already passes the gate":"No color change fixes it";return}this.remember("fix");let i=cn({...this.colors(),foreground:e.foreground,selection:e.selectionBackground,ansi:e.ansi}),o=this.list;this.list=i,this.lch=i.map((s,a)=>s===o[a]?this.lch[a]:this.lchOf(s)),this.notice=`Moved ${n.length} ${n.length===1?"color":"colors"}${r.length===0?" — passes the gate":" closer to the gate"}`}save(){let t=this.options.check(this.edited());if(t){this.notice=t;return}this.result="saved"}undo(){let t=this.history.pop();if(!t){this.notice="Nothing to undo";return}this.future.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.restore(t)}redo(){let t=this.future.pop();if(!t){this.notice="Nothing to redo";return}this.history.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.restore(t)}restore(t){this.list=[...t.list],this.lch=[...t.lch],this.signature=[...t.signature],this.lastEdit=void 0}}import{mkdirSync as _L,readFileSync as Ep,writeFileSync as Zv}from"node:fs";import{dirname as BL}from"node:path";import{isMainThread as GL,parentPort as Qv,Worker as UL}from"node:worker_threads";var IL=new Set(["comic","4koma","monochrome","greyscale","sketch","lineart","speech_bubble"]),RL=new Set(["scenery","landscape","scenic","no_humans","wide_shot","very_wide_shot"]),PL=0.04,NL=0.1,AL=0.05,TL=4096;function HL(t){return new Set(t.cutouts.split(/\s+/).map((e)=>e.replace(/^~/,"")).filter(Boolean))}function CL(t,e,n,r=0){let{site:i,post:o}=t,s=new Set(o.tags),a=[...HL(i)].some((l)=>s.has(l)),c=Math.min(o.width,o.height),u=o.width>0&&o.height>0?o.width/o.height/(e.w/e.h):1;return(o.solo?2:0)+([...IL].some((l)=>s.has(l))?-3:0)+([...RL].some((l)=>s.has(l))?-1.5:0)+2*Math.min(1,c/e.h)+(a?1.5:-Math.min(1.5,Math.abs(Math.log(u))))+(n>0?1.5*Math.log1p(Math.max(0,o.score))/Math.log1p(n):0)+2*r}function Ml(t,e,n=new Map){let r=new Map;for(let{site:i,post:o}of t)r.set(i,Math.max(r.get(i)??0,o.score));return t.map((i,o)=>({pick:i,at:o,score:CL(i,e,r.get(i.site)??0,n.get(i.post))})).sort((i,o)=>o.score-i.score||i.at-o.at).map(({pick:i})=>i)}function zv(t){let e=new Map;for(let r of t)e.set(r.site,[...e.get(r.site)??[],r]);let n=[];for(let r=0;n.length<t.length;r++)for(let i of e.values()){let o=i[r];if(o)n.push(o)}return n}function vp(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function Kv(t,e,n){let[r,i,o]=[vp(t),vp(e),vp(n)],s=Math.cbrt(0.4122214708*r+0.5363325363*i+0.0514459929*o),a=Math.cbrt(0.2119034982*r+0.6806995451*i+0.1073969566*o),c=Math.cbrt(0.0883024619*r+0.2817188376*i+0.6299787005*o);return[0.2104542553*s+0.793617785*a-0.0040720468*c,1.9779984951*s-2.428592205*a+0.4505937099*c,0.0259040371*s+0.7827717662*a-0.808675766*c]}function Dv(t,e){let n=e.map((s)=>Kv(...et(s))).filter(([,s,a])=>Math.hypot(s,a)>=PL);if(n.length===0)return 0;let r=Math.max(1,Math.floor(Math.sqrt(t.width*t.height/TL))),i=n.map(()=>0),o=0;for(let s=0;s<t.height;s+=r)for(let a=0;a<t.width;a+=r){let c=(s*t.width+a)*4;if(t.data[c+3]<128)continue;o++;let[u,l,d]=Kv(t.data[c],t.data[c+1],t.data[c+2]);n.forEach(([f,h,m],g)=>{if(Math.hypot(u-f,l-h,d-m)<NL)i[g]=i[g]+1})}if(o===0)return 0;return i.reduce((s,a)=>s+Math.min(1,a/o/AL),0)/n.length}var LL=/(?:^|[^0-9a-f])([0-9a-f]{32})(?:[^0-9a-f]|$)/i,FL=[[/yande\.re\/post\/show\/(\d+)/,"yande"],[/konachan\.(?:com|net)\/post\/show\/(\d+)/,"konachan"],[/danbooru\.donmai\.us\/(?:posts|post\/show)\/(\d+)/,"danbooru"],[/zerochan\.net\/(\d+)(?:[?#\s]|$)/,"zerochan"]];function Sp(t){let e=/(\d+)_p(\d+)/.exec(t.source);return[...t.md5?[`md5:${t.md5}`]:[],...e&&t.source.includes("pximg")?[`pixiv:${e[1]}_p${e[2]}`]:[]]}function qv(t,e){let n=LL.exec(e.source)?.[1]?.toLowerCase();return[`post:${t.key}:${e.id}`,...e.md5?[`md5:${e.md5}`]:[],...n&&n!==e.md5?[`md5:${n}`]:[],...FL.flatMap(([r,i])=>{let o=r.exec(e.source)?.[1];return o?[`post:${i}:${Number(o)}`]:[]}),...e.family?[`family:${t.key}:${e.family}`]:[]]}function Yv(t,e){let n=t.owner||t.named.artist[0]||"";return n!==""&&n===(e.owner||e.named.artist[0]||"")&&t.width===e.width&&t.height===e.height}function Jv(t){let r=[];for(let o=0;o<8;o++){let s=Math.floor(o*t.height/8),a=Math.max(s+1,Math.floor((o+1)*t.height/8));for(let c=0;c<9;c++){let u=Math.floor(c*t.width/9),l=Math.max(u+1,Math.floor((c+1)*t.width/9)),d=0;for(let f=s;f<a;f++)for(let h=u;h<l;h++){let m=(f*t.width+h)*4,g=t.data[m+3]/255,b=0.299*t.data[m]+0.587*t.data[m+1]+0.114*t.data[m+2];d+=b*g+255*(1-g)}r.push(d/((l-u)*(a-s)))}}let i=0n;for(let o=0;o<8;o++)for(let s=0;s<8;s++)i=i<<1n|(r[o*9+s]>r[o*9+s+1]?1n:0n);return i.toString(16).padStart(16,"0")}function jL(t,e){let n=BigInt(`0x${t}`)^BigInt(`0x${e}`),r=0;while(n>0n)r+=Number(n&1n),n>>=1n;return r}function Vv(t,e){if(t.width<=0||t.height<=0||e.width<=0||e.height<=0)return!1;return Math.abs(Math.log(t.width/t.height/(e.width/e.height)))<0.01&&jL(t.hash,e.hash)<=2}var WL={thumb:"tile",band:"band",match:"tile",show:"view",backdrop:"view",redraw:"view"},xl;async function KL(t){if(t.job==="redraw")return Qu(t.home,t.name,t.key,t.paint,t.blur,t.aligns,t.user);if(t.job==="show"){if(xl?.from!==t.from){let s=$r(new Uint8Array(Ep(t.from)),Se);xl={from:t.from,clear:Wn(s),inked:gf(s)}}let{image:r,fill:i,opacity:o}=g0(xl.inked,t.colors,t.tone,t.width,t.height,t.blur,t.tune,t.coloring);return _L(BL(t.to),{recursive:!0}),Zv(t.to,je(r)),{clear:xl.clear,fill:i,opacity:o}}let e=$r(new Uint8Array(Ep(t.from)),Se);if(t.job==="backdrop"){jc(t.home,t.colors,t.tone,e,{...t.origin,bytes:new Uint8Array(Ep(t.source)),cut:t.from!==t.source},t,t.blur,t.coloring);let r=t.tune&&fe(t.home,t.colors.name).find((i)=>i.key===se(t.origin));if(t.tune&&r)Vs(V(t.home),r,t.tune,t.aligns??!0,t.user??t.home);return 0}if(t.job==="match")return{match:Dv(e,t.colors),hash:Jv(e)};if(t.job==="thumb")return F(t.to,je(tw(e,t.width,t.height))),0;let n=e.data.subarray(t.y*e.width*4,(t.y+t.height)*e.width*4);return Zv(t.to,je({width:e.width,height:t.height,data:n})),0}function zL(t){t.on("message",async(e)=>{try{t.postMessage({id:e.id,value:await KL(e)})}catch(n){t.postMessage({id:e.id,error:n instanceof Error?n.message:String(n)})}})}class Mp{worker;next=1;waiting=new Map;send(t){let e=this.next++;return new Promise((n,r)=>{let i=this.open();this.waiting.set(e,{ok:n,no:r}),i.ref(),i.postMessage({...t,id:e})})}close(){this.worker?.terminate(),this.worker=void 0,this.drop(Error("renderer closed"))}open(){if(this.worker)return this.worker;let t=new UL(import.meta.filename);t.unref(),t.on("message",({id:n,value:r,error:i})=>{let o=this.waiting.get(n);if(this.waiting.delete(n),this.waiting.size===0)t.unref();if(i!==void 0)o?.no(Error(i));else o?.ok(r)});let e=(n)=>{if(this.worker===t)this.worker=void 0;this.drop(n instanceof Error?n:Error("renderer stopped"))};return t.on("error",e),t.on("exit",()=>e(void 0)),this.worker=t,t}drop(t){for(let e of this.waiting.values())e.no(t);this.waiting.clear()}}class Da{lines=new Map;run(t){let e=WL[t.job],n=this.lines.get(e);if(!n)n=new Mp,this.lines.set(e,n);return n.send(t)}close(){for(let t of this.lines.values())t.close();this.lines.clear()}}class xp{lines;constructor(t){this.lines=Array.from({length:Math.max(1,t)},()=>new Mp)}async map(t){let e=[],n=0;return await Promise.all(this.lines.map(async(r)=>{while(n<t.length){let i=n++;try{e[i]=await r.send(t[i])}catch(o){e[i]=o instanceof Error?o:Error(String(o))}}})),e}close(){for(let t of this.lines)t.close()}}if(!GL&&Qv)zL(Qv);import{existsSync as DL,mkdtempSync as qL,readFileSync as YL,rmSync as Xv,writeFileSync as JL}from"node:fs";import{tmpdir as VL}from"node:os";import{basename as eS,join as tS}from"node:path";var ZL=6;class Op{dir;made=[];of(t,e){this.dir??=qL(tS(VL(),"ttheme-tint-"));let n=tS(this.dir,`${eS(t,".png")}.${e.slice(1).toLowerCase()}.png`);if(!DL(n)){let r=new Uint8Array(YL(t));JL(n,$c(r,e)??mi(hi(jt(r)),e)),this.made.push(n);while(this.made.length>ZL)Xv(this.made.shift(),{force:!0})}return n}clear(){if(this.dir)Xv(this.dir,{recursive:!0,force:!0});this.dir=void 0,this.made.length=0}}function nS(t,e,n,r,i){if(_e(t)==="original")return e;let o=vn(n,[...r]);return o.color===t.tone?e:i.of(e,o.color)}function rS(t,e){let n=eS(e);return t.find((r)=>n.startsWith(`${r.stem}.`)||n.startsWith(`${r.stem}@`))}var iF=2147483625,sS=2147483626,Tn=2147483627,oF=-1073741831,aS=-1073741830,sF=-1073741829,aF=4;function cF(t,e,n,r,i){let o=Math.trunc,s=n.col*r.w,a=n.row*r.h,c=o((Math.max(i.x,s)+r.w-1)/r.w),u=o(Math.min(i.x+i.w,s+n.cols*r.w)/r.w),l=o((Math.max(i.y,a)+r.h-1)/r.h),d=o(Math.min(i.y+i.h,a+n.rows*r.h)/r.h);if(u<=c||d<=l)return;return{col:c,row:l,cols:u-c,rows:d-l,x:o((c*r.w-i.x)*t/i.w),y:o((l*r.h-i.y)*e/i.h),w:o((u-c)*r.w*t/i.w),h:o((d-l)*r.h*e/i.h)}}function uF(t){try{let e=tF(t,"r"),n=Buffer.alloc(24);return eF(e,n,0,24,0),QL(e),n.readUInt32BE(0)===2303741511?{width:n.readUInt32BE(16),height:n.readUInt32BE(20)}:void 0}catch{return}}class Ol{ready=()=>{};cell={w:0,h:0};held;tints=new Op;sent=new Map;placed=new Map;viewed="";renders;scratch;made=0;bands=new Map;home;name;views;banded;files;static of(t,e,n,r){if(Pt(t)||!Ko(t,r)||!(zo(t)||Pi(t)))return;return new Ol(t,e,n)}constructor(t,e,n){this.home=e,this.name=n,this.views=Pi(t),this.banded=$u(t),this.files=ku(t)}get laid(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}load(){let t=V(this.home),e=Oe(t,this.name,nF()),n=[];try{n=Ot(t).palettes[this.name]?.pictures??[]}catch{}let r=e?rS(n,e.image):void 0;this.held=e&&r?{picture:r,image:e.image,opacity:e.opacity,cover:e.cover,at:Ut.indexOf(e.position)+1||5}:void 0}draw(t,e,n,r,i,o={col:0,row:0,cols:r,rows:i}){if(this.cell.w===0)return"";let s=t[0],a=this.look(t,e,n,o,!this.views||o.cols===r&&o.rows===i);if(this.views){let u=r*this.cell.w,l=i*this.cell.h,d=a?`${s}|${a.image}|${a.opacity}|${u}|${l}|${a.box.w}|${a.box.h}|${a.box.x}|${a.box.y}|${this.held?.at??5}`:`${s}||1|${u}|${l}|0|0|0|0|5`;if(d===this.viewed)return"";return this.viewed=d,Ni(d)}let c=this.layer(iF,oF,"f=24",Buffer.from(et(s)),o);if(a){let u=Math.max(0,Math.min(255,Math.round((1-a.opacity)*255)));c+=this.picture(a),c+=this.layer(sS,sF,"f=32",Buffer.from([...et(s),u]),o)}else c+=this.drop(Tn)+this.drop(sS);return c}resized(){this.sent.clear(),this.placed.clear(),this.viewed=""}clear(){let t=this.views&&this.viewed?Ni(""):"";for(let e of this.sent.keys())t+=_a(e);return this.resized(),t}close(){let t=this.clear();if(this.tints.clear(),this.renders?.close(),this.scratch)iS(this.scratch,{recursive:!0,force:!0});return t}look(t,e,n,r,i){let o=this.held;if(!o)return;let s={name:this.name,...Gt([...t]),waived:[...n]},a=nS(o.picture,o.image,s,e,this.tints),c=uF(a);if(!c)return;let u=Ao(c.width,c.height,r.cols*this.cell.w,r.rows*this.cell.h,100,o.at,o.cover&&i),l={...u,x:u.x+r.col*this.cell.w,y:u.y+r.row*this.cell.h},d=cF(c.width,c.height,r,this.cell,l);if(!d)return;return{image:a,opacity:o.opacity,...c,box:l,rect:d}}layer(t,e,n,r,i){let o=r.toString("base64"),s=`${o}|${i.col}|${i.row}|${i.cols}|${i.rows}`;if(this.placed.get(t)===s)return"";return this.sent.set(t,s),this.placed.set(t,s),`\x1B_Ga=t,${n},s=1,v=1,i=${t},q=2;${o}\x1B\\\x1B[${i.row+1};${i.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${i.cols},r=${i.rows},C=1,z=${e},q=2\x1B\\`}picture(t){let{image:e,rect:n}=t;if(this.banded&&(2*n.y+n.h-t.height)**2>1){let o=this.band(t.image,n.y,n.h);if(!o.ready)return"";e=o.path,n={...n,y:0}}let r="";if(this.sent.get(Tn)!==e){let o=hl({id:Tn,path:e,row:0,col:0,cols:0,rows:0,z:aS},this.files);if(o===void 0)return"";r+=o,this.sent.set(Tn,e),this.placed.delete(Tn)}let i=`${n.col};${n.row};${n.cols};${n.rows};${n.x};${n.y};${n.w};${n.h}`;if(this.placed.get(Tn)!==i)r+=`\x1B[${n.row+1};${n.col+1}H\x1B_Ga=p,i=${Tn},p=${Tn},x=${n.x},y=${n.y},w=${n.w},h=${n.h},c=${n.cols},r=${n.rows},C=1,z=${aS},q=2\x1B\\`,this.placed.set(Tn,i);return r}drop(t){if(!this.sent.has(t))return"";return this.sent.delete(t),this.placed.delete(t),_a(t)}band(t,e,n){let r=`${t}|${e}|${n}`,i=this.bands.get(r);if(i)return i;this.scratch??=XL(oS(rF(),"ttheme-edit-")),this.renders??=new Da;let o={path:oS(this.scratch,`band-${++this.made}.png`),ready:!1};this.bands.set(r,o),this.renders.run({job:"band",from:t,to:o.path,y:e,height:n}).then(()=>{o.ready=!0,this.ready()}).catch(()=>{});for(let[s,a]of this.bands){if(this.bands.size<=aF)break;if(a.ready&&a.path!==this.sent.get(Tn))this.bands.delete(s),iS(a.path,{force:!0})}return o}}var Qi=50;function st(t,e){return Vt(t,e)}function $s(t){return{color:t,dim:(e)=>t?`${C}${e}${$e}`:e,bold:(e)=>t?`${ct}${e}${$e}`:e,fg:(e)=>t?qe(e):"",bg:(e)=>t?`\x1B[48;2;${et(e).join(";")}m`:""}}function qa(t){return vt(t)>0.35?"#000000":"#ffffff"}function Ip(t,e){return t.held!==void 0&&t.held-e.c>0.0005?t.held:void 0}function Il(t,e,n,r){let i=e.mode==="tune"&&e.channel===Qt,o=e.ratio(),{floor:s}=e.partner(),a=(g)=>Math.round(Math.log(Math.max(1,g))/Math.log(21)*(n-1)),c=a(o),u=s===void 0?-1:a(s),l=r===void 0?-1:a(r),d=i?"━":"─",f=Array.from({length:n},(g,b)=>b===c?t.bold("●"):b===l?"○":b===u?"┃":b<u?t.dim(d):d).join(""),h=`${o.toFixed(2)}:1`.padStart(6),m={kind:"channel",channel:Qt};return`${st(m,i?t.bold("▸◐"):t.dim(" ◐"))} ${st({kind:"bar",channel:Qt},f)} ${st(m,i?t.bold(h):t.dim(h))}`}function Rl(t,e){if(!t.misses().has(e))return;if(bp(t.list,t.signature,t.waive,"bright-follows").includes(e))return e-A.length<8?"= makes the bright follow its normal":"= on the normal makes this follow it";return"f moves the colors the gate misses"}function Pl(t,e,n){let r=$p(t.list,t.signature,t.waive,e),i=Ip(t,n);if(i!==void 0)r.push({ok:void 0,text:`Chroma ○ ${i.toFixed(3)} is held while you tune — ${n.c.toFixed(3)} fits this lightness and hue`});return r}var lF={top:"╭╮",mid:"├┤",bottom:"╰╯"};function Xt(t,e,n=[]){let[r,i]=[...lF[e]],o=[...`${r}${"─".repeat(Math.max(0,t-2))}${i}`];for(let[s,a]of n)[...a].forEach((c,u)=>{if(s+u>0&&s+u<t-1)o[s+u]=c});return o.join("")}function dn(t,e,n){return`${t.dim("│")}${rt(e,n-2)}${t.dim("│")}`}function Nl(t){let e=(n,r)=>n.toFixed(r).replace(/^0(?=\.)/,"");return`${e(t.l,2)} ${e(t.c,3)} ${t.h.toFixed(0).padStart(3)}°`}function cS(t){return`${t.l.toFixed(2)} ${t.c.toFixed(3)} ${t.h.toFixed(0).padStart(3)}°`}function Rp(t,e){return e===void 0?t.dim("·"):e?t.dim("✓"):t.bold("✗")}function dF(t,e,n,r=Qi){let i=kp(e.list,e.signature,e.waive).sort((u,l)=>Number(u.ok!==!1)-Number(l.ok!==!1)),o=i.filter((u)=>u.ok===!1).length,s=` ${t.dim("Gate")} ${o===0?t.dim("passes"):t.bold(`${o} ${o===1?"miss":"misses"}`)}`,a=r-4,c=i.flatMap((u)=>{let l=`${u.value} ${u.bound}`,d=` ${Rp(t,u.ok)} ${yt(u.ok===!1?u.label:t.dim(u.label),t.dim(l),a-2)}`,f=[...new Set(u.slots)].map((g)=>Ce(g).name),h=u.slots[0],m=(g)=>h===void 0?g:st({kind:"slot",slot:h},g);return f.length>0?[m(d),m(` ${t.dim(rt(f.join(" · "),a-2))}`)]:[m(d)]});return[o===0?s:yt(s,`${t.bold("n")} ${t.dim("next miss")}`,r-2),...c.slice(0,Math.max(0,n-1))]}function uS(t,e){let n=t-A.length;if(n>=0)return e===String(n)||e===`B${n}`||e===`K${n}`;return t===3&&e==="s"||t===2&&e==="c"}function Al(t,e,n,r){let i=r?"\x1B[4m":"";if(n==="d")return`${t.fg(e.foreground)}\x1B[2m${i}`;if(n==="b")return`${t.fg(e.foreground)}\x1B[1m${i}`;if(n==="s")return`${t.bg(e.selection)}${t.fg(e.foreground)}${i}`;if(n==="c")return`${t.bg(e.cursor)}${i}`;let o=/^([BK]?)(\d+)$/.exec(n);if(!o)return`${t.fg(e.foreground)}${i}`;let s=e.ansi[Number(o[2])];if(o[1]==="K")return`${t.fg(e.ansi[0])}${t.bg(s)}${i}`;return`${t.fg(s)}${o[1]==="B"?"\x1B[1m":""}${i}`}function Ya(t,e,n,r,i){let o=e.length-1,s=Math.max(0,Math.min(o,n)),a=i===void 0?-1:Math.max(0,Math.min(o,i));if(!t.color)return e.map((c,u)=>u===s?"●":u===a?"○":r?"━":"─").join("");return e.map((c,u)=>{let l=c??"#000000";if(u===s)return`${t.bg(l)}${t.fg(qa(l))}●\x1B[39;49m`;if(u===a)return c?`${t.bg(c)}${t.fg(qa(c))}○\x1B[39;49m`:`${t.fg("#aaaaaa")}○`;return c?`${t.fg(c)}█`:`${t.fg(r?"#777777":"#555555")}░`}).join("").concat("\x1B[39m")}function Tl(t,e,n){return Array.from({length:n},(r,i)=>{let o=e.min+(e.max-e.min)*i/(n-1),s={...t,[e.key]:o};return Nn(s.l,s.c,s.h)?ze(s.l,s.c,s.h):void 0})}function Xi(t,e,n,r){return Math.round((t-e)/(n-e)*(r-1))}function Pp(t){return kp(t.list,t.signature,t.waive).filter((e)=>e.ok===!1).length}function Ja(t,e,n,r){if(n<3)return[];let i=Pp(e),o=i===0?" Gate ✓ passes ":` Gate ✗ ${i} · n next `;return[t.dim(Xt(r,"top",[[2,o]])),...dF(t,e,n-1,r-1).slice(1).map((s)=>dn(t,s,r)),t.dim(Xt(r,"bottom"))]}var dr=0.98,Va=0.12,fF=0.37,lS=0.74,hF=0.15,mF=-1073741828,Np=-1073741827,Ap=-1073741826,pF=-1073741825,gF=2147483584,bF=["panel","plane","hue","contrast","mark","hue-thumb","contrast-thumb","origin","hue-origin","contrast-origin"],wF=4096;function Za(t,e){return bs(t,e,fF)}function Cl(t,e,n){let r=Za(t,n);return r>0.000001?Math.min(1,e/r):0}function Qa(t,e){return{width:t,height:e,data:new Uint8Array(t*e*4)}}function ni(t,e,n,r,i){let o=r[3]*i;if(o<=0||e<0||n<0||e>=t.width||n>=t.height)return;let s=(n*t.width+e)*4,a=t.data;if(o>=1){a[s]=r[0],a[s+1]=r[1],a[s+2]=r[2],a[s+3]=255;return}let c=a[s+3]/255,u=o+c*(1-o);for(let l=0;l<3;l++)a[s+l]=Math.round((r[l]*o+a[s+l]*c*(1-o))/u);a[s+3]=Math.round(u*255)}function lr(t,e=1){return[...et(t),e]}function ys(t,e,n,r,i,o,s){let a=Math.abs(t-(n+i/2))-(i/2-s),c=Math.abs(e-(r+o/2))-(o/2-s);return Math.hypot(Math.max(a,0),Math.max(c,0))+Math.min(Math.max(a,c),0)-s}function to(t,e,n,r){let i=[],o=[],s=Math.max(0,Math.floor(r?.x??0)),a=Math.max(0,Math.floor(r?.y??0)),c=Math.min(t,Math.ceil(r?r.x+r.w:t)),u=Math.min(e,Math.ceil(r?r.y+r.h:e));for(let l=a;l<u;l++)for(let d=s;d<c;d++){let f=n(d+0.5,l+0.5);if(f>0.002)i.push(l*t+d),o.push(Math.min(1,f))}return{at:Uint32Array.from(i),cover:Float32Array.from(o)}}function eo(t,e,n){for(let r=0;r<e.at.length;r++){let i=e.at[r];ni(t,i%t.width,Math.floor(i/t.width),n,e.cover[r])}}function Tp(t,e){return(n,r)=>Math.max(0,0.5-ys(n,r,t.x,t.y,t.w,t.h,e))}function dS(t,e,n){return(r,i)=>Math.max(0,0.5-Math.abs(ys(r,i,t.x,t.y,t.w,t.h,e)+n/2)+n/2)}var Hl=new Map;function $F(t,e,n,r){let i=`${e.w}x${e.h} ${mS({...t,ground:"#000000",ink:"#000000",accent:"#000000"})}`,o=Hl.get(i);if(o)return o;let{panel:s}=t,a={x:e.w,y:0,w:s.cols*e.w,h:s.rows*e.h},c=Math.round(e.h*0.45),u=Math.round(e.h*0.18),l=e.h*0.6,d=Math.max(1,Math.round(e.h/22)),f=(O)=>({x:(O.col-s.col+1)*e.w,y:(O.row-s.row)*e.h}),h=Math.max(1,Math.round(e.h*0.08)),m=f(t.tabs),g={x:m.x,y:m.y+h,w:t.tabs.cols*e.w,h:e.h-2*h},b=Math.floor(t.tabs.cols/t.tabs.count)*e.w,w=Math.max(1,Math.round(h/2)),k={x:g.x+t.tabs.active*b+w,y:g.y+w,w:(t.tabs.active===t.tabs.count-1?g.w-t.tabs.active*b:b)-2*w,h:g.h-2*w},v=f(t.field),S={x:v.x,y:v.y+h,w:t.field.cols*e.w,h:e.h-2*h},M=t.divider===void 0?void 0:{x:a.x+e.w*0.6,y:(t.divider-s.row)*e.h,w:a.w-e.w*1.2,h:d},I={shadow:to(n,r,(O,H)=>{let N=ys(O,H,a.x,u,a.w,a.h,c);return N>0&&N<l?(1-N/l)**2:0}),fill:to(n,r,Tp(a,c),a),border:to(n,r,dS(a,c,d),a),track:to(n,r,Tp(g,g.h*0.3),g),segment:to(n,r,Tp(k,k.h*0.3),k),field:to(n,r,dS(S,S.h*0.3,d),S),divider:M&&to(n,r,()=>1,M)};if(Hl.size>8)Hl.clear();return Hl.set(i,I),I}function kF(t){let e=vt(t.ground)<0.18;return{dark:e,surface:pt(t.ground,t.ink,e?0.07:0.04)}}function yF(t,e){let n=Qa((t.panel.cols+2)*e.w,(t.panel.rows+1)*e.h),r=$F(t,e,n.width,n.height),{dark:i,surface:o}=kF(t);if(eo(n,r.shadow,[0,0,0,i?0.45:0.18]),eo(n,r.fill,lr(o)),eo(n,r.border,lr(t.ink,i?0.16:0.2)),eo(n,r.track,lr(t.ink,i?0.06:0.07)),eo(n,r.segment,lr(t.accent,i?0.24:0.2)),eo(n,r.field,lr(t.ink,i?0.22:0.28)),r.divider)eo(n,r.divider,lr(t.ink,i?0.12:0.16));return n}function vF(t,e,n){let r=Qa(Math.round(t.cols*n.w),Math.round(t.rows*n.h)),{width:i,height:o,data:s}=r,a=Math.round(n.h*0.3),c=Math.max(1,(t.cols-1)*n.w),u=(h)=>Math.min(1,Math.max(0,(h+0.5-n.w/2)/c)),l=t.rows*2-1,d=(h)=>dr-Math.min(1,Math.max(0,((h+0.5)/n.h*2-0.5)/l))*(dr-Va),f=[];for(let h=0;h<o;h++){if(h%2===0){let m=d(h+0.5),g=Za(m,e);f=Array.from({length:Math.ceil(i/2)},(b,w)=>Nn(m,u(w*2+0.5)*g,e)??[0,0,0])}for(let m=0;m<i;m++){let b=(m<a||m>=i-a)&&(h<a||h>=o-a)?Math.min(1,Math.max(0,0.5-ys(m+0.5,h+0.5,0,0,i,o,a))):1;if(b<=0)continue;let w=f[m>>1],k=(h*i+m)*4;s[k]=w[0],s[k+1]=w[1],s[k+2]=w[2],s[k+3]=Math.round(b*255)}}return r}function hS(t,e){let n=Math.max(4,Math.round(t.h*0.42));return{top:Math.round((t.h-n)/2),height:n,width:e*t.w}}function SF(t,e){let n=Qa(t.cols*e.w,e.h),{top:r,height:i,width:o}=hS(e,t.cols),s=Array.from({length:o},(a,c)=>{let l=Math.min(1,Math.max(0,((c+0.5)/e.w-0.5)/Math.max(1,t.cols-1)))*360;return Nn(lS,bs(lS,l,hF),l)??[0,0,0]});for(let a=r;a<r+i;a++)for(let c=0;c<o;c++){let u=Math.min(1,Math.max(0,0.5-ys(c+0.5,a+0.5,0,r,o,i,i/2))),l=s[c];ni(n,c,a,[l[0],l[1],l[2],1],u)}return n}function EF(t,e,n){let r=Qa(t.cols*n.w,n.h),{top:i,height:o,width:s}=hS(n,t.cols),a=t.floor===void 0?-1:Math.round((t.floor*(t.cols-1)+0.5)*n.w),c=Math.max(2,Math.round(o*0.45)),u=i+Math.round((o-c)/2);for(let l=u;l<u+c;l++)for(let d=0;d<s;d++){let f=Math.min(1,Math.max(0,0.5-ys(d+0.5,l+0.5,0,u,s,c,c/2))),h=a<0||d>=a;ni(r,d,l,lr(e,h?t.lit?0.5:0.36:0.14),f)}if(a>=0){let l=Math.max(2,Math.round(n.w/5));for(let d=i-1;d<i+o+1;d++)for(let f=a-Math.floor(l/2);f<a-Math.floor(l/2)+l;f++)ni(r,f,d,lr(e,0.85),1)}return r}function MF(t,e,n,r,i,o,s){let a=Qa(t*s.w,e*s.h),c=Math.max(2,Math.round(i*0.3)),u=(d,f)=>Math.min(1,Math.max(0,d-f+0.5)),l=[0,0,0,0.5];for(let d=0;d<a.height;d++)for(let f=0;f<a.width;f++){let h=Math.hypot(f+0.5-n,d+0.5-r);if(o)ni(a,f,d,lr(o),u(i-c,h));else ni(a,f,d,l,u(i-c,h)-u(i-c-1,h));ni(a,f,d,l,u(i+1,h)-u(i,h)),ni(a,f,d,[255,255,255,1],u(i,h)-u(i-c,h))}return a}function ks(t,e,n,r,i,o,s=pF){let a=Math.floor((e-r-2)/o.w),c=Math.floor((e+r+2)/o.w),u=Math.floor((n-r-2)/o.h),l=Math.floor((n+r+2)/o.h),d={row:u,col:a,cols:c-a+1,rows:l-u+1},f=Math.round((e-a*o.w)*2)/2,h=Math.round((n-u*o.h)*2)/2;return{name:t,key:`${d.cols}x${d.rows} ${f},${h} ${r} ${i??"-"}`,box:d,z:s,paint:()=>MF(d.cols,d.rows,f,h,r,i,o)}}function mS(t){let{panel:e}=t,n=(i)=>`${i.row-e.row},${i.col-e.col},${i.cols}`,r=t.divider===void 0?"-":t.divider-e.row;return`${e.cols}x${e.rows} ${t.ground} ${t.ink} ${t.accent} ${n(t.tabs)},${t.tabs.active}/${t.tabs.count} ${n(t.field)} ${r}`}function xF(t,e){let n=`${e.w}x${e.h}`,r=Math.max(4,Math.round(e.h*0.34)),i=(d,f)=>(d.col+0.5+f*(d.cols-1))*e.w,o=(d)=>(d.row+0.5)*e.h,s=t.plane,a=(d)=>{let f=(dr-d)/(dr-Va)*(s.rows*2-1);return s.row*e.h+(Math.min(s.rows*2-1,Math.max(0,f))+0.5)*e.h/2},c=a(s.l),u=[{name:"panel",key:`${n} ${mS(t)}`,box:{row:t.panel.row,col:t.panel.col-1,cols:t.panel.cols+2,rows:t.panel.rows+1},z:mF,paint:()=>yF(t,e)},{name:"plane",key:`${n} ${s.cols}x${s.rows} ${s.h.toFixed(2)}`,box:s,z:Np,paint:()=>vF(s,s.h,e.h>=24?{w:e.w/2,h:e.h/2}:e)},{name:"hue",key:`${n} ${t.hue.cols}`,box:{...t.hue,rows:1},z:Np,paint:()=>SF(t.hue,e)},{name:"contrast",key:`${n} ${t.contrast.cols} ${t.contrast.floor??"-"} ${t.contrast.lit} ${t.ink}`,box:{...t.contrast,rows:1},z:Np,paint:()=>EF(t.contrast,t.ink,e)},ks("mark",i(s,Cl(s.l,s.c,s.h)),c,r,void 0,e),ks("hue-thumb",i(t.hue,t.hue.h/360),o(t.hue),r,t.hue.color,e),ks("contrast-thumb",i(t.contrast,t.contrast.at),o(t.contrast),r,t.contrast.color,e)],l=t.origin;if(l){let d=Math.max(3,Math.round(r*0.55));u.push(ks("origin",i(s,Cl(l.l,l.c,l.h)),a(l.l),d,l.color,e,Ap),ks("hue-origin",i(t.hue,l.h/360),o(t.hue),d,l.color,e,Ap),ks("contrast-origin",i(t.contrast,l.at),o(t.contrast),d,l.color,e,Ap))}return u}function OF(t,e){let r=e.toString("base64").match(new RegExp(`.{1,${wF}}`,"g"))??[""];return r.map((i,o)=>{let s=o<r.length-1?1:0;return o===0?`\x1B_Ga=t,f=100,i=${t},m=${s},q=2;${i}\x1B\\`:`\x1B_Gm=${s},q=2;${i}\x1B\\`}).join("")}function fS(t,e,n){return`\x1B[${e.row+1};${e.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${e.cols},r=${e.rows},C=1,z=${n},q=2\x1B\\`}function Hp(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}class Ll{cell={w:0,h:0};shown=new Map;static of(t,e){return Pt(t)||!Ko(t,e)||!zo(t)?void 0:new Ll}get ready(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}draw(t){if(!this.ready)return"";let e=t?xF(t,this.cell):[],n="";for(let r of e)n+=this.put(r);for(let[r,i]of this.shown)if(!e.some((o)=>o.name===r))n+=Hp(i.id),this.shown.delete(r);return n}clear(){let t="";for(let e of this.shown.values())t+=Hp(e.id);return this.shown.clear(),t}put(t){let e=`${t.box.row};${t.box.col};${t.box.cols};${t.box.rows}`,n=this.shown.get(t.name);if(n&&n.key===t.key){if(n.at===e)return"";return n.at=e,fS(n.id,t.box,t.z)}let r=gF+bF.indexOf(t.name)*2,i=n?.id===r?r+1:r;return this.shown.set(t.name,{key:t.key,id:i,at:e}),`${OF(i,je(t.paint()))}${fS(i,t.box,t.z)}${n?Hp(n.id):""}`}}var IF="\x1B[0m",Fp="\x1B[33m",Xa=34,Cp=2,RF=6,jl=3,PF=7,gS="↑↓ L ←→ C ⇧←→ H tab ◐";function NF(t,e,n){let r="",i=0;for(let o of t){let s=i+_(o);if(s>e&&i<n)r+=i>=e&&s<=n?o:" ".repeat(Math.min(s,n)-Math.max(i,e));if(i=s,i>=n)break}return r}function _l(t){return t.reduce((e,n)=>e+_(n.text),0)}function Bl(t,e,n){let r=[],i=0;for(let o of t){let s=_(o.text),a=Math.max(e,i),c=Math.min(n,i+s);if(c>a)r.push({...o,text:NF(o.text,a-i,c-i)});i+=s}return r}function AF(t,e,n){return[...Bl(t,0,e),...n,...Bl(t,e+_l(n),_l(t))]}function TF(t,e){return t.map((n)=>{let r=e&&n.sgr?`${n.sgr}${n.text}${IF}`:n.text;return n.target?Vt(n.target,r):r}).join("")}function Gl(t,e,n){return t.color?`${t.bg(e.selection)}${t.fg(e.foreground)}${t.bold(` ${n} `)}\x1B[39;49m`:`[${n}]`}function bS(t){return t<A.length?A[t]:ln[(t-A.length)%8]}function wS(t,e,n,r){let i=t.signature.includes(An[n])?"◆":e.color?"■":" ";return e.color?`${e.fg(t.list[n])}${i}${r}`:i}function $S(t,e,n,r,i){return r.has(n)?e.bold("✗"):t.changed(n)?e.color?`${Fp}●${i}`:"●":" "}function kS(t,e,n){return n?t.color?`${t.fg(e.cursor)}▌\x1B[39m `:"▌ ":" "}function HF(t,e,n,r,i,o){let s=r===t.slot(),a=s?e.fg(n.foreground):"\x1B[39m",c=bS(r).padEnd(12),u=t.lch[r],l=`${kS(e,n,s)}${wS(t,e,r,a)} ${s?e.bold(c):c}${cS(u)} ${$S(t,e,r,o,a)}`,d=rt(l,i);return st({kind:"open",slot:r},s&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${d}\x1B[39;49m`:d)}var Lp=8,yS=44;function ec(t){return t>=yS?16:11}function pS(t,e,n,r,i,o){let s=ec(i);if(!t.visible(r))return" ".repeat(s);let a=r===t.slot(),c=a&&e.color?e.fg(n.foreground):"\x1B[39m",u=t.lch[r],l=(g,b)=>g.toFixed(b).replace(/^0(?=\.)/,""),d=`${u.h.toFixed(0).padStart(3)}°`,f=i>=yS?`${l(u.l,2)} ${l(u.c,3)} ${d}`:`${l(u.l,2)} ${d}`,h=`${wS(t,e,r,c)} ${f}${$S(t,e,r,o,c)}`,m=a&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${h}\x1B[39;49m`:h;return st({kind:"open",slot:r},m)}function CF(t,e,n,r,i,o){let s=A.length+r,a=s+8,c=t.row===s,u=ln[r].padEnd(Lp),l=t.linkOf(a)!==void 0?e.dim("⇠"):" ";return`${st({kind:"open",slot:s},`${kS(e,n,c)}${c?e.bold(u):u}`)}${pS(t,e,n,s,i,o)}${l} ${pS(t,e,n,a,i,o)}`}function vS(t){return 14+2*ec(t)}function LF(t){let e=ec(t)>=16;return[[2," ANSI "],[2+Lp,e?" Normal 0–7 ":" Normal "],[5+Lp+ec(t),e?" Bright 8–15 ":" Bright "]]}function FF(t,e,n,r,i){let o=t.slot(),s=Ce(o),a=vS(i),c=a-2,u=` ${s.name}${o>=A.length?` · ${s.about}`:""} `,l=[` ${e.dim(Uv(o))}`];if(o>=2){let f=hv(r,o).filter((g)=>g.count>0),h=f.length>0?f.map((g)=>`${g.name} ${g.count}`).join(" · "):"none",m=Wt("w",t.where?Gl(e,n,"w where"):e.dim("w where"));l.push(yt(` ${e.dim("Shown in")} ${h}`,`${m} `,c))}let d=o-A.length;if(d===0||d===7||d===8||d===15){let f=t.lch[o].l,h=t.lch[0].l,m=t.lch[1].l,g=Math.abs(f-h)<=Math.abs(f-m)?"the background":"the text";l.push(` ${e.dim(`L ${f.toFixed(2)} reads near ${g}`)}`)}return[e.dim(Xt(a,"top",[[2,u]])),...l.map((f)=>dn(e,f,a)),e.dim(Xt(a,"bottom"))]}function Fl(t,e){return dr-t*(dr-Va)/(e*2-1)}function SS(t,e,n,r,i){let o=Fl(Math.max(0,Math.min(e*2-1,t*2-0.5)),e),s=Math.max(0,Math.min(1,(n-0.5)/Math.max(1,r-1)));return{lightness:o,chroma:s*Za(o,i)}}function jF(t,e,n,r,i,o){let s=(d)=>{let f=Math.max(0,Math.min(i*2-1,Math.round((dr-d.l)/(dr-Va)*(i*2-1))));return{row:Math.floor(f/2),col:Math.round(Cl(d.l,d.c,d.h)*(r-1))}},{row:a,col:c}=s(e),u=o?s(o):{row:-1,col:-1},l=(d,f)=>{return`#${(Nn(d,f*Za(d,e.h),e.h)??[0,0,0]).map((m)=>m.toString(16).padStart(2,"0")).join("")}`};return Array.from({length:i},(d,f)=>{let h="";for(let m=0;m<r;m++){if(f===a&&m===c){h+=t.color?`${t.bg(n)}${t.fg(qa(n))}●\x1B[39;49m`:"●";continue}let g=m/Math.max(1,r-1);if(f===u.row&&m===u.col){let b=l(Fl(f*2+1,i),g);h+=t.color?`${t.bg(b)}${t.fg(qa(b))}○\x1B[39;49m`:"○";continue}h+=t.color?`${t.fg(l(Fl(f*2,i),g))}${t.bg(l(Fl(f*2+1,i),g))}▀\x1B[39;49m`:"·"}return st({kind:"plane",row:f,rows:i},h)})}function _F(t,e,n){if(t.format==="rgb"){let[r,i,o]=[1,3,5].map((s)=>Number.parseInt(e.slice(s,s+2),16));return`rgb(${r} ${i} ${o})`}if(t.format==="oklch")return`oklch(${n.l.toFixed(3)} ${n.c.toFixed(3)} ${n.h.toFixed(0)})`;return e}function ES(t,e,n){let r=t.slot(),i=t.lch[r],s=Pl(t,r,i).filter((c)=>c.ok===!1||c.text.startsWith("Chroma ○")).flatMap((c)=>bt(c.text,n-2).map((u,l)=>`${l===0?c.ok===!1?e.bold("✗"):e.dim("○"):" "} ${u}`)),a=Rl(t,r);return[...s.slice(0,3),...a?[e.dim(a)]:[]]}function MS(t,e,n){let r=t.pair(t.slot());if(!r)return;let i=t.slot()>=r.bright,o=bS(i?r.normal:r.bright).toLowerCase(),s=`${r.lift>=0?"+":""}${r.lift.toFixed(2)}`,a=n-9,c=i?r.on?[`⇠ Linked to ${o} · L ${s}`,`⇠ ${o} · L ${s}`,`⇠ ${o}`]:[`Not linked to ${o}`,"Not linked"]:r.on?[`Bright follows · L ${s}`,"Bright follows"]:["Its bright moves on its own","Moves on its own"],u=c.find((l)=>_(l)<=a)??c[c.length-1]??"";return yt(e.dim(u),Wt("l",`${e.bold("l")} ${e.dim(r.on?"unlink":"link")}`),n)}function xS(t,e,n){let r=t.slot(),i=t.list[r],o=t.lch[r],s=t.typing!==void 0?e.bold(`${t.typing}▏`):Wt("#",e.bold(_F(t,i,o))),a=t.start[r],c=e.color?`${e.fg(a)}■\x1B[39m `:"";return yt(s,a!==i?e.dim(`was ${c}${a}`):"",n)}function BF(t,e,n,r,i){let o=t.slot(),s=t.lch[o],a=t.list[o],c=r-4,u=e.dim("│"),l=(O)=>`${u} ${rt(O,c)} ${u}`,d=MS(t,e,c),f=6+(d?1:0),h=ES(t,e,c).slice(0,Math.max(0,i-f-jl)),m=Math.max(jl,Math.min(RF,i-f-h.length)),g=" L × C ",b=` H ${s.h.toFixed(0)}° `,w=Math.max(0,r-4-_(" L × C ")-_(b)),k=[`${e.dim("╭─")}${e.dim(" L × C ")}${e.dim("─".repeat(w))}${e.dim(b)}${e.dim("─╮")}`],v=t.origin();for(let O of jF(e,s,a,c,m,v?.lch))k.push(l(O));let S=un[2];k.push(l(st({kind:"bar",channel:2},Ya(e,Tl(s,S,c),Xi(s.h,S.min,S.max,c),t.mode==="tune"&&t.channel===2,v&&Xi(v.lch.h,S.min,S.max,c))))),k.push(l(Il(e,t,Math.max(8,c-11),v?.ratio)));let M=(O,H)=>st({kind:"format",format:H},t.format===H?Gl(e,n,O):e.dim(` ${O} `));if(k.push(l(`${M("Hex","hex")} ${M("RGB","rgb")} ${M("OKLCH","oklch")}`)),k.push(l(xS(t,e,c))),d)k.push(l(d));for(let O of h)k.push(l(O));let I=rt(` ${gS} `,r-4,!1);return k.push(`${e.dim("╰─")}${e.dim(I)}${e.dim("─".repeat(Math.max(0,r-4-_(I))))}${e.dim("─╯")}`),{lines:k.map((O)=>st({kind:"picker"},O))}}var tc=[["Hex","hex"],["RGB","rgb"],["OKLCH","oklch"]];function GF(t,e,n,r,i){let o=t.lch[t.slot()],s=r-2,a=MS(t,e,s),c=6+(a?1:0),u=ES(t,e,s).slice(0,Math.max(0,i-c-jl)),l=Math.max(jl,Math.min(PF,i-c-u.length)),d=(O)=>` ${rt(O,s)} `,f=[d(yt(e.dim("L × C"),e.dim(`H ${o.h.toFixed(0)}°`),s))];for(let O=0;O<l;O++)f.push(d(st({kind:"plane",row:O,rows:l}," ".repeat(s))));let h=f.length;f.push(d(st({kind:"bar",channel:2}," ".repeat(s))));let m=f.length,g=t.mode==="tune"&&t.channel===Qt,b={kind:"channel",channel:Qt},w=`${t.ratio().toFixed(2)}:1`.padStart(8),k=s-11;f.push(d(`${st(b,g?e.bold("◐"):e.dim("◐"))} ${st({kind:"bar",channel:Qt}," ".repeat(k))} ${st(b,g?e.bold(w):e.dim(w))}`));let v=f.length,S=Math.floor(s/tc.length);f.push(d(tc.map(([O,H],N)=>{let L=N===tc.length-1?s-S*N:S,K=Math.floor((L-_(O))/2),B=`${" ".repeat(K)}${O}${" ".repeat(L-K-_(O))}`,X=t.format===H?e.color?`${e.fg(n.cursor)}${e.bold(B)}\x1B[39m`:`[${O}]`.padEnd(L):e.dim(B);return st({kind:"format",format:H},X)}).join("")));let M=f.length;f.push(d(` ${xS(t,e,s-2)} `));let I=a?f.length:void 0;if(a)f.push(d(a));for(let O of u)f.push(d(O));return f.push(d(e.dim(gS))),{lines:f.map((O)=>st({kind:"picker"},O)),parts:{plane:{row:1,col:1,cols:s,rows:l},hue:{row:h,col:1,cols:s,rows:1},contrast:{row:m,col:3,cols:k,rows:1},tabs:{row:v,col:1,cols:s,rows:1},field:{row:M,col:1,cols:s,rows:1},divider:I}}}function UF(t,e,n,r,i,o){let s=t.slot(),a=t.lch[s],c=t.list[s],u=(h)=>({row:r+h.row,col:i+h.col,cols:h.cols,rows:h.rows}),l=(h)=>Math.log(Math.max(1,h))/Math.log(21),d=t.partner().floor,f=t.origin();return{panel:{row:r,col:i,cols:n.plane.cols+2,rows:o},ground:e.background,ink:e.foreground,accent:e.cursor,plane:{...u(n.plane),h:a.h,l:a.l,c:a.c},hue:{...u(n.hue),h:a.h,color:c},contrast:{...u(n.contrast),at:l(t.ratio()),floor:d===void 0?void 0:l(d),color:c,lit:t.channel===Qt},tabs:{...u(n.tabs),active:tc.findIndex(([,h])=>h===t.format),count:tc.length},field:u(n.field),divider:n.divider===void 0?void 0:r+n.divider,origin:f&&{...f.lch,color:f.hex,at:l(f.ratio)}}}function WF(t,e,n,r,i,o,s,a){let u=o??1,l=s-1-u,d=u-2,f=12+2*ec(r)-Cp,h=a?GF:BF,m=h(t,e,n,f,Number.POSITIVE_INFINITY),g=m.lines.length<=l||m.lines.length>d&&l>=d,b=g?l:d,w=m.lines.length<=b?m:h(t,e,n,f,b),k=g?u+1:u-w.lines.length,v=Array.from({length:s},(S,M)=>i[M]??"");return w.lines.forEach((S,M)=>{let I=k+M;if(I>=0&&I<s)v[I]=M$(v[I],Cp,S)}),{lines:v,art:w.parts&&UF(t,n,w.parts,k,Cp,w.lines.length)}}function KF(t,e,n,r,i){let o=r.side,s=Pp(t),a=t.changedOnly?e.color?`${Fp}●\x1B[39m`:"●":" ",c=s===0?e.dim("Gate ✓"):e.bold(`Gate ✗ ${s}`),u=yt(` ${e.bold("Colors")} ${c}`,Wt("m",`${t.changedOnly?e.bold("⧩ changed"):e.dim("⧩ changed")}${a} `),o),l=i-1,d=t.misses(),f=vS(o),h=[],m,g=A.map((k,v)=>v).filter((k)=>t.visible(k));if(g.length>0){h.push(e.dim(Xt(f,"top",[[2," Base "]])));for(let k of g){if(k===t.slot())m=h.length;h.push(dn(e,HF(t,e,n,k,f-2,d),f))}}let b=ln.map((k,v)=>v).filter((k)=>t.visible(A.length+k)||t.visible(A.length+k+8));if(b.length>0){h.push(e.dim(Xt(f,g.length>0?"mid":"top",LF(o))));for(let k of b){if(t.row===A.length+k)m=h.length;h.push(dn(e,CF(t,e,n,k,o,d),f))}}if(g.length>0||b.length>0)h.push(e.dim(Xt(f,"bottom")));if(t.visible(t.slot()))h.push(...FF(t,e,n,r,o));let w=Ja(e,t,l-h.length,f);return h.push(...Array.from({length:Math.max(0,l-h.length-w.length)},()=>""),...w),{lines:[u,...h.slice(0,l)],anchor:m===void 0?void 0:m+1}}function zF(t,e,n,r){let o=`${e.fg(t.list[2])}◆${e.color?"\x1B[39m":""} ${e.bold(t.options.title)} ${e.dim(`· ${t.options.name}`)}`,s=t.dirty(),a=t.changes(),c=e.color?`${Fp}●\x1B[39m`:"●",u=s?`${c} ${e.dim(a>0?`unsaved · ${a} changed`:"unsaved")}`:"",l=s?`${Wt("R",e.dim("Reset"))} ${Wt("s",Gl(e,n,"Save"))}`:"",d=[o,u,l].filter(Boolean).join(" "),f=(g,b,w)=>Wt(g,w?Gl(e,n,b):e.dim(b)),m=[...t.options.find||t.pictures>0?[f("b",`▣ ${t.pictures>0?`${t.pictures} `:""}Picture`,t.pic&&(t.pictures>0||!!t.options.find))]:[],f("i","⌖ Inspect",t.inspect),`${f("u","↶",!1)} ${f("ctrl+r","↷",!1)}`,f("I","Import ▾",t.menu==="import"),...t.options.exports?[f("x","Export ▾",t.menu==="export")]:[]].join(" ");return yt(d,`${m} `,r)}var DF={kind:"open",slot:0};function qF(t,e,n){return t.color?`${n?"\x1B[49m":t.bg(e.background)}${t.fg(e.foreground)}`:""}function YF(t,e,n,r,i,o){let s=Wa(r),a=qF(e,n,o),c=t.slot();return Array.from({length:r.rows},(u,l)=>{let d=s[l],f=[{text:" ",sgr:a}];if(d)d.forEach((g,b)=>{let w=i&&i.pane===r.id&&i.line===l&&i.run===b,k=e.color?w?`${a}${e.bg(n.foreground)}${e.fg(n.background)}`:`${a}${Al(e,n,g.role,rp(g.role,c))}${t.where&&!np(g.role,c)?"\x1B[2m":""}`:"";f.push({text:g.text,sgr:k,target:{kind:"run",spot:{pane:r.id,line:l,run:b}}})});let h=Bl(f,0,r.width-1),m=r.width-_l(h);return m>0?[...h,{text:" ".repeat(m),sgr:a,target:DF}]:h})}function JF(t,e,n){let r=t.slotsHere();if(!r)return;let i=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",o=e.color?`${i}\x1B[2m`:"",s=(d)=>({text:d,sgr:o}),a="┌ Slots here ",c="└ enter its slot · esc ",u=[[s(`${a}${"─".repeat(Xa-_(a)-1)}┐`)]],l=[["text",r.text]];if(r.ground!==r.text)l.push(["ground",r.ground]);for(let[d,f]of l){let h={kind:"open",slot:f},m=t.shown()[f],g=f<A.length?"":Ce(f).about;u.push([{text:"│ ",sgr:o,target:h},{text:d.padEnd(7),sgr:o,target:h},{text:"■",sgr:e.color?`${i}${e.fg(m)}`:"",target:h},{text:" ",sgr:i,target:h},{text:Ce(f).name.slice(0,14).padEnd(14),sgr:i,target:h},{text:g.padEnd(Xa-27),sgr:o,target:h},{text:" │",sgr:o,target:h}])}return u.push([s(`${c}${"─".repeat(Xa-_(c)-1)}┘`)]),u.map((d)=>Bl(d,0,Xa))}function VF(t,e,n){if(!t.menu)return;let r=t.menu==="export"?["Share code","Add command","Palette file"]:["Another palette","A share code"],i=24,o=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",s=e.color?`${o}\x1B[2m`:"",a=t.menu==="export"?"Copy ":"Take from ",c=[[{text:`┌ ${a}${"─".repeat(Math.max(0,i-3-a.length))}┐`,sgr:s}]];return r.forEach((u,l)=>{let d=l===t.entry,f={kind:"entry",index:l};c.push([{text:"│",sgr:s},{text:` ${d?"▌":" "} ${u.padEnd(i-6)}`,sgr:d&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}\x1B[1m`:o,target:f},{text:"│",sgr:s}])}),c.push([{text:`└${"─".repeat(i-2)}┘`,sgr:s}]),c}var ZF=["#ff5f57","#febc2e","#28c840"];function QF(t,e,n,r){let i=e.color?`${e.bg(OS(n))}${e.fg(n.foreground)}`:"",o=[{text:" ",sgr:i}];for(let u of ZF)o.push({text:"●",sgr:e.color?`${i}${e.fg(u)}`:""},{text:" ",sgr:i});o.push({text:" ",sgr:i});let s=fv(),a=(t.scene%s.length+s.length)%s.length;s.forEach((u,l)=>{let d={kind:"scene",scene:l};o.push(l===a?{text:` ${u} `,sgr:e.color?`${i}${e.bg(pt(n.background,n.foreground,0.3))}\x1B[1m`:"",target:d}:{text:` ${u} `,sgr:e.color?`${i}\x1B[2m`:"",target:d},{text:" ",sgr:i})});let c="⇧←→ ";return[...o,{text:" ".repeat(Math.max(0,r-_l(o)-_(c))),sgr:i},{text:c,sgr:e.color?`${i}\x1B[2m`:""}]}function OS(t){return pt(t.background,t.foreground,0.14)}function XF(t,e,n){let{frame:r}=n,i=pt(e.background,e.foreground,0.45),o=t.color?`${t.bg(IS(e))}${t.fg(i)}`:"",s=t.color?`${t.bg(OS(e))}${t.fg(i)}`:"",a=(u,l)=>u===r.row||u===r.row+r.rows-1||l===r.col||l===r.col+r.cols-1,c=[];for(let[u,l]of wv(n.rules))for(let[d,f]of l)c.push([u,d,[{text:f,sgr:a(u,d)?o:s}]]);return c}function IS(t){return pt(t.background,t.foreground,0.08)}function RS(t,e){return Ua(t,e,0)?.inner}function PS(t,e,n,r,i={}){let o=Ua(e,n,t.scene);if(!o)return;let s=$s(r),a=t.shown(),c=Gt(a),u=Gt(i.chrome?[...i.chrome]:t.list),l=KF(t,s,u,o,n-1),d=t.mode==="tune"?WF(t,s,u,o.side,l.lines,l.anchor,n-1,r&&i.art===!0):{lines:l.lines,art:void 0},f=d.lines,h=i.behind===!0,m=t.inspect?bl(o,t.spot):void 0,g=s.color?s.bg(IS(u)):"",b=Array.from({length:n-3},()=>[{text:" ".repeat(o.width),sgr:g}]),w=(N,L,K)=>{let B=N-2;if(B>=0&&B<b.length)b[B]=AF(b[B],L,K)},k=o.side+1;for(let[N,L,K]of XF(s,u,o))w(N,L-k,K);for(let N of o.tiles)YF(t,s,c,N,m,h).forEach((L,K)=>{w(N.row+K,N.col-k,L)});w(o.title.row,o.title.col-k,QF(t,s,u,o.title.cols));let v=m?JF(t,s,c):void 0;if(m&&v){let N=o.tiles.find((K)=>K.id===m.pane),L=Wa(N)[m.line]?.[m.run];if(L){let K=Math.max(0,Math.min(N.col-k+1+L.col,o.width-Xa)),B=N.row+m.line,X=B+1,z=X+v.length-2>n-2?B-v.length:X;v.forEach((Mt,tt)=>{w(z+tt,K,Mt)})}}let S=VF(t,s,c);if(S){let N=Math.max(0,o.width-24-(t.menu==="import"?12:2));S.forEach((L,K)=>{w(2+K,N,L)})}let M=zF(t,s,u,o.width),I=s.dim("─".repeat(o.width)),O=s.dim("│"),H=[];for(let N=0;N<n-1;N++){let L=N===0?M:N===1?I:TF(b[N-2]??[],r);H.push(`${rt(f[N]??"",o.side)}${O}${L}`)}return{lines:H,art:d.art}}var NS=80,AS=24,jp=11;function t3(t,e,n,r){let i=Ip(e,n);return un.map((o,s)=>{let a=e.mode==="tune"&&s===e.channel,c=n[o.key],u=`${c.toFixed(o.digits)}${o.wraps?"°":""}`.padStart(6),l=Ya(t,Tl(n,o,r),Xi(c,o.min,o.max,r),a,o.key==="c"&&i!==void 0?Xi(i,o.min,o.max,r):void 0),d=o.key.toUpperCase(),f={kind:"channel",channel:s};return`${st(f,a?t.bold(`▸${d}`):t.dim(` ${d}`))} ${st({kind:"bar",channel:s},l)} ${st(f,a?t.bold(u):t.dim(u))}`})}function e3(t,e){if(e.mode!=="tune"||e.slot()<A.length)return[];let n=Gt(e.list),r=ws.map((o)=>st({kind:"scope",scope:o},o!==e.scope?t.dim(o):t.color?`${t.bg(n.selection)}${t.fg(n.foreground)} ${o} \x1B[39;49m`:`[${o}]`)),i=e.scoped().length;return[`${t.dim("Scope")} ${r.join(" ")}`,t.dim(i>1?`${i} slots move by the same step, each keeping its own color`:"This slot moves alone · a widens it")]}var TS={background:(t)=>t.background,foreground:(t)=>t.foreground,hue:(t)=>t.cursor,tint:(t)=>t.background,lightness:(t)=>t.ansi[4],chroma:(t)=>t.ansi[1],brights:(t)=>t.ansi[12]};function n3(t){return`oklch ${t.l.toFixed(3)} ${t.c.toFixed(3)} ${t.h.toFixed(0)}°`}function r3(t,e){return`${t.dim("oklch")} ${t.bold(`${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(0)}°`)}`}function i3(t,e,n,r=Qi){let i=e.misses(),o=Gt(e.list),s=e.slot(),a=(d)=>{let f=e.list[d],h=d===s,m=e.signature.includes(An[d])?"◆":t.color?"■":" ",g=i.has(d)?"✗":e.tone&&e.changed(d)?"●":" ",w=`${t.color?`${t.fg(f)}${m}${h?t.fg(o.foreground):"\x1B[39m"} `:`${m} `}${Nl(e.lch[d])}${g}`;if(!h)return st({kind:"slot",slot:d},` ${w}`);return st({kind:"slot",slot:d},t.color?`${t.bg(o.selection)}${t.fg(o.foreground)} ${w}\x1B[39;49m`:`›${w}`)},c=(d)=>d?t.color?`${t.fg(o.cursor)}▌\x1B[39m `:"▌ ":" ",u=[t.dim(Xt(r,"top",[[2," Base "]]))];for(let d=0;d<A.length;d++){let f=d===e.row,h=A[d].padEnd(10);u.push(dn(t,`${st({kind:"slot",slot:d},`${c(f)}${f?t.bold(h):h}`)}${a(d)}`,r))}u.push(t.dim(Xt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])));for(let d=A.length;d<cr;d++){let f=d===e.row,h=ln[d-A.length].padEnd(10),m=st({kind:"slot",slot:d+(e.col===1?8:0)},`${c(f)}${f?t.bold(h):h}`);u.push(dn(t,`${m}${a(d)}${a(d+8)}`,r))}u.push(t.dim(Xt(r,"bottom")));let l=Ja(t,e,n-u.length,r);return[...u,...Array.from({length:Math.max(0,n-u.length-l.length)},()=>""),...l]}function o3(t,e,n){let r=Gt(e.list),i=[` ${t.dim("Seeds")}`];Ji.forEach((o,s)=>{let a=s===e.field,c=e.seeds[o.key],u=Array.from({length:jp},(b,w)=>{let k=o.min+(o.max-o.min)*w/(jp-1);return TS[o.key](ei({...e.seeds,[o.key]:k}))}),l=Ya(t,u,Xi(c,o.min,o.max,jp),a),d=`${c.toFixed(o.digits)}${o.wraps?"°":""}`.padStart(6),f=TS[o.key](r),h=a?t.color?`${t.fg(r.cursor)}▌\x1B[39m `:"▌ ":" ",m=o.label.padEnd(17),g={kind:"field",field:s};i.push(`${st(g,`${h}${a?t.bold(m):m}`)}${st({kind:"seed",field:s},l)}${st(g,` ${d} ${t.color?`${t.fg(f)}■\x1B[39m `:""}${t.dim(f)}`)}`)}),i.push("");for(let o of bt("Seven seeds grow all twenty colors, each accent on the hue its ANSI role reads as — whatever the seeds, they pass the gate. enter moves on to tune each slot, and the seeds stay behind.",Qi-4))i.push(` ${t.dim(o)}`);return i.push(""),[...i,...Ja(t,e,n-i.length,Qi)]}function FS(t,e,n,r,i,o){let s=zt.indexOf(Ii(i)),a=zt.map((l,d)=>st({kind:"scene",scene:d},d!==s?t.dim(l.name):t.color?`${t.bg(e.selection)}${t.fg(e.foreground)} ${l.name} \x1B[39;49m`:`[${l.name}]`)).join(" "),c=[yt(a,t.dim("⇧←→"),n)],u=`${t.bg(e.background)}${t.fg(e.foreground)}`;for(let l of Ii(i).lines){let d=Wo(l,n-2);if(!d)continue;if(c.length>=r)break;let f=t.color?d.map(([h,m])=>`${Al(t,e,m,uS(o,m))}${h}\x1B[0m${u}`).join(""):d.map(([h])=>h).join("");c.push(`${u} ${rt(f,n-2)} ${t.color?"\x1B[0m":""}`)}return c}var s3=["Bk","Rd","Gr","Ye","Bl","Ma","Cy","Wh"];function HS(t,e,n,r,i,o,s){let a=(i-o)/(s-1),c=jS(e),u=Gt(n),l=(d)=>Math.min(s-1,Math.max(0,Math.round((i-r(Et(d)))/a)));return Array.from({length:s},(d,f)=>{let m=`${(f%2===0?(i-a*f).toFixed(i>=1?1:2).replace(/^0(?=\.\d\d)/,""):"").padStart(4)} ${t.dim(f%2===0?"┤":"│")}`;for(let g=0;g<8;g++){let b=[" "," "," "," "," "],w=u.ansi[g],k=u.ansi[g+8],v=l(w)===f,S=l(k)===f,M=(O)=>{if(O===1&&v)return t.color?`${t.fg(w)}●`:"●";if(O===3&&S)return t.color?`${t.fg(k)}○`:"○";return b[O]},I=[0,1,2,3,4].map(M).join("");m+=c.has(g)?t.color?`${t.bg(u.selection)}${I}\x1B[39;49m`:I:`${I}${t.color?"\x1B[39m":""}`}return m})}function jS(t){let e=t.mode==="tune"?t.scoped():[t.slot()];return new Set(e.filter((n)=>n>=A.length).map((n)=>(n-A.length)%8))}function a3(t,e){let n=jS(e);return` ${s3.map((r,i)=>n.has(i)?t.bold(` ${r} `):t.dim(` ${r} `)).join("")}`}function c3(t,e){let n=Gt(e),r=Array.from({length:40},(o,s)=>{let a=s*9+4.5,c=-1,u=999;for(let[l,d]of Object.entries(ke)){let f=ye(a,d.center);if(f<=d.width&&f<u)u=f,c=Number(l)}return c<0?" ":t.color?`${t.fg(n.ansi[c])}─`:"─"}).join(""),i=(o,s)=>{let a=Array.from({length:40},()=>" ");for(let c of Object.keys(ke).map(Number)){let u=n.ansi[c+o],l=Math.min(39,Math.round(Et(u).h/9));a[l]=t.color?`${t.fg(u)}${s}\x1B[39m`:s}return` ${a.join("")}`};return[`${t.bold("Hue")} ${t.dim("0° 90° 180° 270° 360°")}`,`${t.dim("bands")} ${r}${t.color?"\x1B[39m":""}`,i(0,"●"),i(8,"○")]}function u3(t,e,n){let r=ur(n,e.signature,e.waive),i=(a)=>Ce(A.length+a).name,o=(a)=>Et(n[A.length+a]).h.toFixed(0),s=[...Bn(r).filter(({gap:a})=>a>25).map(({normal:a,gap:c})=>`${i(a)} ${o(a)}° → bright ${o(a+8)}° · ${c.toFixed(0)}° apart · ≤ 25°`),...pr(r).map(({slot:a,over:c})=>{let u=ke[pn(a)];return`${i(a)} ${o(a)}° · ${c.toFixed(0)}° outside ${u.name} ${u.center}±${u.width}°`}),...Gn(r).map(([a,c])=>`${i(a)} and ${i(c).toLowerCase()} read as one color`)];return s.length>0?s.map((a)=>`${t.bold("✗")} ${a}`):[t.dim("✓ Every accent keeps its role and its bright")]}function CS(t,e,n,r,i){let o=e.shown(),s=Math.max(...o.slice(A.length).map((u)=>Et(u).c)),a=Math.max(0.2,Math.ceil(s/0.05)*0.05),c=[yt(t.bold("Lightness"),t.dim("● normal ○ bright"),n),...HS(t,e,o,(u)=>u.l,1,0.3,8),a3(t,e)];if(i)c.push("",t.bold("Chroma"),...HS(t,e,o,(u)=>u.c,a,0,5),"",...c3(t,o));return[...c,...u3(t,e,o)].slice(0,r)}function l3(t,e,n){let r=Gt(e.list),i=(o,s)=>st({kind:"view",view:s},e.view!==s?t.dim(` ${o} `):t.color?`${t.bg(r.selection)}${t.fg(r.foreground)}${t.bold(` ${o} `)}\x1B[39;49m`:`[${o}]`);return yt(`${i("Slot","slot")}${i("Relations","relations")}`,Wt("g",`${t.bold("g")} ${t.dim("switch")}`),n)}function d3(t,e,n,r){let i=e.slot(),o=e.list[i],s=e.lch[i],a=e.start[i],{name:c,about:u}=Ce(i),l=e.signature.includes(An[i]),d=Math.max(8,Math.min(64,n-12));if(e.view==="relations"&&e.mode!=="tune")return[l3(t,e,n),"",...CS(t,e,n,r-2,!0)];let f=i>=A.length?t.dim("Uses underlined below"):l?t.dim("◆ signature"):"",h=[yt(`${t.bold(c)} ${t.dim(u)}`,e.view==="relations"?"":f,n),""],m=t.color?`${t.fg(o)}${"█".repeat(8)}\x1B[39m `:"",g=e.typing!==void 0?`${t.bold(`${e.typing}▏`)}`:void 0,[b,w,k]=et(o);if(h.push(`${m}${g??r3(t,s)}`),h.push(`${m}${t.dim(`${o} · rgb ${b} ${w} ${k}`)}`),e.view!=="relations"){let I=t.color?`${t.fg(a)}■\x1B[39m `:"";h.push(`${m}${a!==o?t.dim(`was ${I}${n3(e.lchOf(a)).slice(6)} · ${a}`):t.dim("as it opened")}`)}h.push(""),h.push(...t3(t,e,s,d),Il(t,e,d));let v=e3(t,e);if(v.length>0)h.push(...v);if(e.view==="relations")return h.push("",...CS(t,e,n,r-h.length-1,!1)),h;h.push("");for(let I of Pl(e,i,s))bt(I.text,n-2).forEach((O,H)=>{h.push(`${H===0?Rp(t,I.ok):" "} ${I.ok===!1?O:t.dim(O)}`)});let S=Rl(e,i);if(S)h.push(t.dim(` ${S}`));let M=r-h.length-1;if(M>=3)h.push("",...FS(t,Gt(e.shown()),n,M,e.scene,i));return h}function f3(t,e,n,r){return[yt(`${t.bold("Sample")} ${t.dim("what the seeds grow")}`,"",n),"",...FS(t,Gt(e.list),n,r-2,e.scene,-1)]}var h3=[["Slots","↑↓ slot · ←→ normal or bright · home end · pgup the base colors · pgdn the ANSI ones · n N the next and last miss"],["Tune","enter or tab opens the picker over the list, under the slot · ↑↓ lightness · ←→ chroma · ⇧←→ hue by 5, , . by 1 · pgup pgdn lightness ×5 · tab ◐ contrast · home end the ends · 0-9 jump · enter keeps · esc undoes · a click outside it keeps"],["Contrast","◐ moves lightness until the ratio to the color it is read against changes · home the gate’s floor · 1-9 that ratio"],["Chroma","stops at the sRGB edge · what lightness or hue takes away comes back while you tune, where it fits again (○)"],["Scope","a while tuning: this, pair, normals, brights or accents — the slots in it move by the same step, each keeping its own color"],["Relations","g shows the lightness, chroma and hue of every ANSI color at once, and the relations the gate checks"],["Sample","⇧←→ another tab · the slot under the cursor is underlined where it is used · w dims the rest"],["Inspect","i, or a click on the sample, finds the slots a spot uses · ←→↑↓ move · enter goes to the slot · esc leaves"],["Link","l makes a bright follow its normal — tuning the normal moves it, tuning the bright alone unlinks it · = snaps it to its normal"],["Filter","m only the slots that changed · n and N walk the gate misses listed under the slots"],["Export","x copies the share code, an add command or the palette file · I takes colors from another palette or a share code"],["Type","# then #rrggbb, rgb(r g b) or oklch(l c h) — a paste works too"],["Slot","c copies · v pastes · r puts it back as it opened, R all of them · = the bright follows its normal · * marks it a signature color"],["Palette","f moves the colors the gate misses · o takes another palette’s colors"],["Gate","✗ marks every slot whose own checks miss, and each miss names its slots"],["History","u undo · ctrl+r redo"],["Pictures","p finds one on the boorus, tried on in these colors · b shows or hides it behind the editor · drop a picture on the window, or paste one, its path or its link · ctrl+v takes the clipboard’s"],["Compare","space shows the colors you started from, on the terminal too"],["Save","s saves · esc cancels, asking first when something changed"]];function m3(t,e,n){let r=[` ${t.bold("Help")}`,""];for(let[i,o]of h3.filter(([s])=>s!=="Pictures"||e.options.find))bt(o,n-16).forEach((s,a)=>{r.push(` ${t.bold((a===0?i:"").padEnd(11))} ${s}`)});return r}function p3(t,e,n,r){let i=e.choices(),o=e.options.palettes?.length??0,s=e.filter?`${t.bold(e.filter)}▏`:t.dim("type to filter"),a=[yt(` ${t.bold("Take colors from")} ${s}`,t.dim(`${i.length}/${o}`),n),""],c=r-2,u=Math.max(0,Math.min(e.pick-Math.floor(c/2),i.length-c)),l=Math.min(40,Math.max(12,...i.map((d)=>_(d.name))));if(i.slice(u,u+c).forEach((d,f)=>{let h=u+f===e.pick,m=d.colors,g=t.color?`${t.bg(m.background)} ${[...m.ansi].map((k)=>`${t.fg(k)}■`).join("")} ${t.fg(m.foreground)}Aa \x1B[0m`:"",b=h?"▌ ":" ",w=d.name.padEnd(l);a.push(st({kind:"choice",index:u+f},`${b}${h?t.bold(w):w} ${g}`))}),i.length===0)a.push(` ${t.dim(`No palettes match '${e.filter}'`)}`);return a}var g3=new Set(["enter","s","?","g","a","i"]);function LS(t,e,n,r){let i=t.fg((r??e.list)[2]),o="EDIT",s="",a=[],c="";if(e.quitting)o="EDIT (QUIT)",s=e.added>0?`Discard changes and ${e.added} ${e.added===1?"picture":"pictures"}?`:"Discard changes?",a=[["y","discard"],["n","keep editing"]];else if(e.typing!==void 0)o="EDIT (TYPE)",s=t.dim("#rrggbb, rgb(r g b) or oklch(l c h)"),a=[["enter","set"],["ctrl+u","clear"]],c="esc back";else if(e.overlay==="keys")o="HELP",c="any key closes";else if(e.overlay==="open")o="EDIT (OPEN)",a=[["↑↓","palette"],["a-z","filter"],["enter","take its colors"]],c="esc close";else if(e.menu)o=e.menu==="export"?"EDIT (EXPORT)":"EDIT (IMPORT)",a=[["↑↓","item"],["enter","choose"]],c="esc close";else if(e.compare)o="EDIT (BEFORE)",s="The colors you started from",a=[["space","back to yours"]],c="esc back";else if(e.mode==="seeds")o="EDIT (SEEDS)",a=[["↑↓","seed"],["←→","step"],["⇧←→","×5"],["enter","tune the slots"],["o","open a palette"],["p","picture"],["?","keys"]],c="esc cancel";else if(e.mode==="tune")o="EDIT (TUNE)",a=[["↑↓","L"],["←→",e.channel===Qt?"ratio":"C"],["⇧←→","H"],["tab","◐"],...e.slot()>=A.length?[["a","scope"]]:[],[e.channel===Qt?"1-9":"0-9",e.channel===Qt?"ratio":"jump"],["#","type"],["enter","keep"]],c="esc undo";else if(e.inspect)o="EDIT (INSPECT)",a=[["←→↑↓","spot"],["tab","pane"],["enter","its slot"],["i","leave"]],c="esc leave";else a=[["↑↓","slot"],["←→","normal or bright"],["enter","tune"],["i","inspect"],["l","link"],["m","changed"],["g",e.view==="slot"?"relations":"slot"],...e.misses().size>0?[["n","next miss"]]:[],["#","type"],["f","fix"],["p","picture"],["b","picture layer"],["x","export"],["u","undo"],["s","save"],["?","keys"]],c="esc cancel";if(!e.options.find)a=a.filter(([d])=>d!=="p"&&d!=="b");if(!e.options.exports||!e.roomy)a=a.filter(([d])=>d!=="x");if(!e.roomy)a=a.filter(([d])=>d!=="i"&&d!=="m");if(e.notice)s=t.color?`\x1B[33m${e.notice}\x1B[39m`:e.notice,a=[];let u=t.color?`\x1B[7;1m${i} ${o} \x1B[0m `:`[${o}] `,l=c?Wt(c.split(" ")[0],`${t.bold(c.split(" ")[0])} ${t.dim(c.split(" ").slice(1).join(" "))}`):"";for(;;){let d=[s,...a.map(([m,g])=>Wt(m,`${t.bold(m)} ${t.dim(g)}`))].filter(Boolean),f=`${u}${d.join(" ")}`,h=-1;if(a.forEach(([m],g)=>{if(g>0&&!g3.has(m))h=g}),_(f)+_(c)+3<=n||h<0)return c?yt(f,l,n):rt(f,n);a=a.filter((m,g)=>g!==h)}}function b3(t,e,n,r,i={}){let o=$s(r);if(e<NS||n<AS){let g=[o.bold("ttheme palette editor"),`Needs ${NS}×${AS} — now ${e}×${n}`,o.dim("esc cancels")];return{lines:Array.from({length:n},(b,w)=>rt(g[w]??"",e)),art:void 0}}if(t.viewport(e,n),!t.overlay&&t.mode!=="seeds"){let g=PS(t,e,n,r,i);if(g)return{lines:[...g.lines,LS(o,t,e,i.chrome)],art:g.art}}let s=t.failing().length,a=s===0?"✓ Passes the gate":`✗ ${s} ${s===1?"miss":"misses"} in the gate`,c=t.pictures>0?o.dim(`▣ ${t.pictures} ${t.pictures===1?"picture":"pictures"} `):"",u=`${t.dirty()?`${o.color?"\x1B[33m●\x1B[39m":"●"} unsaved `:""}${c}${o.dim(a)}`,d=`${o.fg(t.list[2])}◆${o.color?"\x1B[39m":""} ${o.bold(t.options.title)} ${o.dim(`· ${t.options.name}`)}`,f=n-4,h;if(t.overlay==="keys")h=m3(o,t,e);else if(t.overlay==="open")h=p3(o,t,e,f);else{let g=e-Qi-2,b=t.mode==="seeds"?o3(o,t,f):i3(o,t,f),w=t.mode==="seeds"?f3(o,t,g,f):d3(o,t,g,f);h=Array.from({length:f},(k,v)=>`${rt(b[v]??"",Qi)}${o.dim("│")} ${rt(w[v]??"",g)}`)}let m=[yt(d,u,e),""];for(let g=0;g<f;g++)m.push(rt(h[g]??"",e));return m.push("",LS(o,t,e,i.chrome)),{lines:m,art:void 0}}var w3=new Set(["tab","a","#","l","enter","esc"]),$3=new Set(["picker","plane","bar","channel","format","scope","open","slot"]);function k3(t){if(!t)return!0;return t.kind==="key"?!w3.has(t.key):!$3.has(t.kind)}function y3(t,e,n){if(n.action==="wheel"){if(!n.sideways)t.scroll(n.wheel);return}if((n.action==="press"||n.action==="drag")&&n.button!=="left")return;if(n.action==="press"&&t.overlay==="keys"){t.press("esc");return}let r=e?.target;if(n.action==="press"&&t.mode==="tune"&&t.roomy&&!t.overlay&&k3(r))t.dismiss();if(!e||!r)return;let i=e.width>1?(e.exact.x-0.5)/(e.width-1):0;if(n.action==="release"){if(!e.inside)return;if(r.kind==="key")t.press(r.key);else if(r.kind==="entry")t.choose(r.index);else if(n.count===2&&r.kind==="slot"&&t.mode==="list")t.press("enter");else if(n.count===2&&r.kind==="choice"&&t.overlay==="open")t.press("enter");return}if(r.kind==="plane"){let o=SS(r.row+e.exact.y,r.rows,e.exact.x,e.width,t.lch[t.slot()].h);t.plane(o.lightness,o.chroma)}else if(r.kind==="bar")t.slide(r.channel,i);else if(r.kind==="seed")t.sow(r.field,i);else if(n.action!=="press")return;else if(r.kind==="slot")t.select(r.slot);else if(r.kind==="open")t.openSlot(r.slot);else if(r.kind==="run")t.point(r.spot);else if(r.kind==="entry")t.entry=r.index;else if(r.kind==="format")t.format=r.format;else if(r.kind==="channel")t.grip(r.channel);else if(r.kind==="scope")t.scopeTo(r.scope);else if(r.kind==="choice"){if(t.overlay==="open")t.pick=r.index}else if(t.typing===void 0&&!t.overlay&&!t.quitting){if(r.kind==="field"&&t.mode==="seeds")t.field=r.field;else if(r.kind==="view"&&t.mode!=="seeds")t.view=r.view;else if(r.kind==="scene")t.scene=r.scene}}var v3=[ol,Rn,Zr,ir];async function _S(t,e){let n=new yp(t),r=e.backdrop,i=e.layer,o=(a)=>n.typing===void 0&&vl(a),s=e.hosted?{modes:[ir,...Qr()],assume:[Rn,Zr],burst:o}:{modes:[...v3,...Qr()],burst:o};return Xr(s,async(a)=>{let c=!1,u=!1,l=new Map,d=new Lm,f=await a.ask(`${gh(rn,"")}${Qr().length>0?O1:""}\x1B[c`,(S)=>{if(S.kind==="color"){l.set(S.code,S.value);return}return d.see(S)},1000);if(f?.cell)a.pixels(f.cell);let h=ok(l),m=h.map((S,M)=>S??n.start[M]),[g,b]=m;if(!h[3])m[3]=pt(g,b,0.2);let w=new Bi({write:(S)=>a.write(S),view:()=>{if(c)return;let{lines:S,art:M}=b3(n,a.cols,a.rows,e.color,{behind:n.pic&&r?.laid===!0,art:i?.ready===!0,chrome:m});return{lines:S,after:()=>`${(n.pic?r?.draw(n.shown(),n.signature,n.waive,a.cols,a.rows,RS(a.cols,a.rows)):r?.clear())??""}${i?.draw(M)??""}`}}}),k=(S=!1)=>{if(S)w.soon();else w.request()},v=async(S)=>{let M=t.find;if(!M)return;c=!0,a.write(`${r?.clear()??""}${i?.clear()??""}`);try{n.found(await M(n.edited(),S))}catch(I){n.notice=I instanceof Error?I.message:String(I)}if(u)return;c=!1,r?.load(),w.reset(Ai),k()};if(a.write(Ai),a.onResize(()=>{r?.resized(),a.write(i?.clear()??""),w.reset(Ai),w.request()}),r)r.load(),r.ready=()=>w.request();if(r||i){let S=new Ra;a.ask(rl,(M)=>S.see(M),1000).then((M)=>{if(M)r?.measured(M),i?.measured(M);w.request()})}k();try{let{edited:S}=await a.loop((M)=>{if(c)return;if(M.kind==="paste")n.paste(M.text);else if(M.kind==="key")n.press(M.key);else if(M.kind==="mouse")y3(n,w.point(M),M);if(n.copied!==void 0)a.write(`\x1B]52;c;${Buffer.from(n.copied).toString("base64")}\x07`),n.copied=void 0;if(n.result)return{edited:n.result==="saved"?n.edited():void 0};let I=n.wants;if(I)n.wants=void 0,v(I.start);return},()=>{if(!c)k(!0)});return S}finally{u=!0,w.stop(),a.write(`${r?.close()??""}${i?.clear()??""}`)}})}import{spawn as L3}from"node:child_process";import{createHash as tE}from"node:crypto";import{existsSync as rc,mkdirSync as F3,mkdtempSync as j3,readFileSync as _3,rmSync as Ul}from"node:fs";import{homedir as B3,tmpdir as G3}from"node:os";import{basename as U3,dirname as W3,join as Hn}from"node:path";import{pathToFileURL as US}from"node:url";import{existsSync as S3,readFileSync as E3,statSync as M3}from"node:fs";import{join as BS}from"node:path";function x3(t,e){try{return JSON.parse(E3(BS(Ve(t),e),"utf8"))}catch{return{}}}function O3(t,e,n){F(BS(Ve(t),e),`${JSON.stringify(n)}
710
- `)}class _p{caches=new Map;unsaved=new Set;owners=new Map;crediting=new Map;inflight=new Map;home;catalog;entry;signal;credited;constructor(t){this.home=t.home,this.catalog=t.catalog,this.entry=t.entry,this.signal=t.signal,this.credited=t.credited}matesOf(t,e){return this.owners.get(t.key)?.get(e)??[]}async transparent(t,e){let n=this.keep(t,"probes.json"),r=n[e.id];if(r!==void 0)return r;try{let i=await Us(t,e,this.signal),o=bi(t,e),s=(i===void 0?await Lw(o.site,o.url,this.signal):i)?.alpha===!0;return n[e.id]=s,this.unsaved.add(`${t.key}/probes.json`),s}catch{return!1}}save(){for(let t of this.unsaved){let[e,n]=t.split("/"),r=J.find((i)=>i.key===e);if(r)O3(r,n,this.keep(r,n))}this.unsaved.clear()}owned(t,e,n){this.keep(t,"owners.json")[e]=n,this.unsaved.add(`${t.key}/owners.json`)}credit(t,e){let{site:n,post:r}=t;if(!Ic(n,r))return Promise.resolve();let i=Ee(n,r.id),o=this.crediting.get(i);if(!o)o=this.credits(t,e).finally(()=>this.crediting.delete(i)),this.crediting.set(i,o);return o}async mateOwners(t){let e=this.owners.get(t.key);if(e)return e;let n=E0(this.home),r=this.keep(t,"owners.json"),i=this.catalog.palettes.flatMap((c)=>{let u=n.get(c.name);return c.group===this.entry.group&&c.name!==this.entry.name&&u?.site===t.key?[{name:c.name,id:u.id}]:[]}),o=await Promise.all(i.map(async(c)=>{let u=r[c.id];if(u!==void 0)return{...c,owner:u};try{return{...c,owner:(await So(t,c.id,this.signal))?.owner??""}}catch{return}})),s=new Map;for(let c of o)if(c)r[c.id]=c.owner,s.set(c.name,c.owner);this.unsaved.add(`${t.key}/owners.json`);let a=Pw(s);return this.owners.set(t.key,a),a}async cached(t,e,n,r){if(S3(e))return M3(e).size;let i=this.inflight.get(e);if(i)return i;let o=(async()=>{let s=await Nc(t,n,this.signal,r);return F(e,s),s.length})();this.inflight.set(e,o);try{return await o}finally{this.inflight.delete(e)}}keep(t,e){let n=`${t.key}/${e}`,r=this.caches.get(n);if(!r)r=x3(t,e),this.caches.set(n,r);return r}async credits({site:t,post:e},n){let r=this.keep(t,"credits.json"),i=r[e.id];if(!i){try{i=await Oc(t,e.id,n)}catch{return}if(!i?.owner)return;r[e.id]=i,this.unsaved.add(`${t.key}/credits.json`)}Gs(e,i),this.credited()}}import{rmSync as I3}from"node:fs";import{join as R3}from"node:path";var vs=2147483645,nc=2147483646,GS=-1073741827,P3=-1073741828,N3=16,A3=0.4,T3=3221225472,H3=256;function C3(t){let e=/^(\d+) (\d+)$/.exec(t??"");return e&&(Number(e[1])>0||Number(e[2])>0)?{x:Number(e[1]),y:Number(e[2])}:void 0}var Bp=C3(process.env.TTHEME_BG_MARGIN);class Gp{screen;gliding;sent=new Map;placed=new Map;covered="";viewed="";bands=$u(process.env);files=ku(process.env);moves=uk(process.env);layers=zo(process.env);wipes=lk(process.env);views=Pi(process.env);bandFiles=new Map;nextBand=T3;view;grid;background;renders;scratch;signal;write;constructor(t){this.view=t.view,this.grid=t.grid,this.background=t.background,this.renders=t.renders,this.scratch=t.scratch,this.signal=t.signal,this.write=t.write,this.screen=new Bi({write:(e)=>this.write(e),view:()=>this.frame(),beat:()=>{this.view.beat++}})}draw(){if(!this.signal.aborted)this.screen.request()}soon(){if(!this.signal.aborted)this.screen.soon()}flush(){if(!this.signal.aborted)this.screen.now()}point(t){return this.screen.point(t)}drop(){this.screen.drop()}frame(){if(this.signal.aborted)return;let{cols:t,rows:e,cell:n}=this.grid(),r=tp(this.view,t,e);return this.view.loaderFrom=r.loader?this.view.loaderFrom??this.view.beat:void 0,{lines:r.lines,zones:r.zones,after:(i)=>this.images(r.images,i,n),...this.view.mode==="grid"&&this.view.editing!==void 0?{cursor:this.caret()}:{},ticking:r.tick}}images(t,e,n){let r="",i=new Set,o;for(let s of t){if(this.views&&s.id>=Vm){o=s;continue}let a=this.bands?this.banded(s):s;if(!a)continue;if(this.wipes&&[...e].some((u)=>u>=a.row&&u<a.row+a.rows))this.placed.delete(a.id);if(i.add(a.id),this.sent.get(a.id)!==a.path){let u=hl(a,this.files);if(u===void 0)continue;r+=u,this.sent.set(a.id,a.path),this.placed.delete(a.id)}let c=`${a.row};${a.col};${a.cols};${a.rows};${a.crop};${a.z}`;if(this.placed.get(a.id)!==c){if(!this.moves&&this.placed.has(a.id))r+=Qm(a.id);r+=nv(a,n),this.placed.set(a.id,c)}}for(let s of this.sent.keys())if(!i.has(s))r+=_a(s),this.sent.delete(s),this.placed.delete(s);return r+(this.views?this.backdrop(o):this.cover())}glide(){if(this.bands)this.prebake();if(this.gliding)return;let{cols:t,rows:e}=this.grid(),n=or(t,e).height,r=()=>{let i=this.view,o=i.top*kt.height,s=o-i.scroll;if(s===0||i.mode!=="grid"){i.scroll=o;let a=this.gliding!==void 0;if(this.gliding=void 0,a)this.draw();return}if(Math.abs(s)>2*n)i.scroll=o-Math.sign(s)*n,s=o-i.scroll;i.scroll+=Math.sign(s)*Math.max(1,Math.round(Math.abs(s)*A3)),this.draw(),this.gliding=setTimeout(r,N3)};r()}snap(){clearTimeout(this.gliding),this.gliding=void 0,this.view.scroll=this.view.top*kt.height}resized(){this.screen.reset()}stop(){this.screen.stop(),clearTimeout(this.gliding)}prebake(){let t=this.view,{cols:e,rows:n}=this.grid();for(let r of tp({...t,scroll:t.top*kt.height},e,n).images)if(r.crop!==void 0)this.band(r.path,r.crop,r.rows)}cover(){let{cols:t,rows:e}=this.grid(),n=`${t};${e}`;if(!this.layers||this.covered===n)return"";let r="";if(!this.covered){let i=Buffer.from(et(this.background)).toString("base64");if(r+=`\x1B_Ga=t,f=24,s=1,v=1,i=${vs},q=2;${i}\x1B\\`,Bp)r+=`\x1B_Ga=t,f=32,s=1,v=1,i=${nc},q=2;AAAAAA==\x1B\\\x1B[H\x1B_Ga=p,i=${nc},p=${nc},c=1,r=1,C=1,z=${P3},q=2\x1B\\`}else if(!this.moves)r+=Qm(vs);if(this.covered=n,Bp){let{x:i,y:o}=Bp;return`${r}\x1B_Ga=p,i=${vs},p=${vs},P=${nc},Q=${nc},H=${-i},V=${-o},c=${t+2*i},r=${e+2*o},C=1,z=${GS},q=2\x1B\\`}return`${r}\x1B[H\x1B_Ga=p,i=${vs},p=${vs},c=${t},r=${e},C=1,z=${GS},q=2\x1B\\`}backdrop(t){let{cols:e,rows:n,cell:r}=this.grid(),i=e*r.w,o=n*r.h,s=t?`${this.background}|${t.path}|1|${i}|${o}|${i}|${o}|0|0|1`:`${this.background}||1|${i}|${o}|0|0|0|0|5`;if(s===this.viewed)return"";return this.viewed=s,Ni(s)}caret(){return`\x1B[1;${Math.min(this.grid().cols,_(`⌕ ${this.view.editing??""}`)+1)}H`}banded(t){if(t.crop===void 0)return t;let e=this.band(t.path,t.crop,t.rows,!this.gliding);return e?.ready?{...t,id:e.id,path:e.path,crop:void 0}:void 0}band(t,e,n,r=!0){let i=`${t}|${e}|${n}`,o=this.bandFiles.get(i);if(o||!r)return o;let{cell:s}=this.grid(),a=this.nextBand++,c={id:a,path:R3(this.scratch,`band-${a}.png`),ready:!1};return this.bandFiles.set(i,c),this.renders.run({job:"band",from:t,to:c.path,y:e*s.h,height:n*s.h}).then(()=>{c.ready=!0,this.draw()}).catch(()=>{}),this.trimBands(),c}trimBands(){for(let[t,e]of this.bandFiles){if(this.bandFiles.size<=H3)return;if(e.ready&&!this.sent.has(e.id))this.bandFiles.delete(t),I3(e.path,{force:!0})}}}var no=[{name:"TTHEME_FIND_RATING",label:"Rating",about:"The ratings to list, each site read in its own words — space ticks one, and one stays ticked",choices:ko,multi:{read:gi}},{name:"TTHEME_FIND_BLOCK",label:"Block",about:"Posts tagged with nudity or underwear are left out — space unticks one",choices:pi,multi:{read:vo,none:"none"}},{name:"TTHEME_FIND_POSTS",label:"Posts",about:"Every post of the character, or only the transparent cutouts",choices:["all","cutouts"]},{name:"TTHEME_FIND_SOLO",label:"Solo",about:"When on, only the posts known to show the character alone — checked as posts arrive, so the counts below leave it out",choices:["on","off"]},{name:"TTHEME_FIND_ORDER",label:"Order",about:"How posts are ranked: fit, by how well each makes a backdrop; newest; or score",choices:["fit","newest","score"]},{name:"TTHEME_FIND_SETS",label:"Sets",about:"One picture posted over and over, or held by another site too: fold it into one tile, or show each",choices:["fold","show"]},...rs()?[{name:"TTHEME_FIND_REMOVE_BG",label:"Remove bg",about:"Cut the character out of an opaque picture you try on, with macOS Vision",choices:["on","off"]}]:[],{name:"TTHEME_FIND_MIN_SCORE",label:"Min score",about:"Posts scored at least this — danbooru, konachan and yande.re; zerochan keeps no score. ←→ steps, or type any number",choices:bw,entry:"number",advanced:!0},{name:"TTHEME_FIND_MIN_SIZE",label:"Min size",about:"The shorter side of a picture, in px — every site filters it. ←→ steps, or type any number",choices:ww,entry:"number",advanced:!0},{name:"TTHEME_FIND_SITES",label:"Sites",about:"The sites the all tab mixes — each keeps its own tab. Space ticks one, and one stays ticked",choices:J.map((t)=>t.name),multi:{read:js},advanced:!0},{name:"TTHEME_FIND_HIDE",label:"Hide",about:"Comics, monochrome, sketches or chibi, told by tag in every site's spelling — checked as posts arrive",choices:Dd,multi:{read:yc,none:"none"},advanced:!0},{name:"TTHEME_FIND_HIDE_TAGS",label:"Hide tags",about:"Posts with any of these tags are left out, spaced like cosplay multiple_girls — checked as posts arrive",choices:[],entry:"text",advanced:!0},{name:"TTHEME_FIND_PNG",label:"PNG only",about:"PNG originals only — danbooru counts it, the others are told by the file; zerochan only where danbooru holds it",choices:["off","on"],advanced:!0}];function WS(t,e){if(t.multi)return t.multi.read(e).join(" ")||t.multi.none;if(t.entry==="number")return/^\d+$/.test(e??"")&&Number(e)>0?String(Number(e)):"off";if(t.entry==="text")return _s(e).join(" ");return t.choices.find((n)=>n===e)??t.choices[0]}var K3=["fit","newest","score"];function Up(t){return K3.find((e)=>e===t)??"fit"}var z3={left:-1,right:1,"shift-left":-10,"shift-right":10};function KS(t){if(process.env.SSH_CONNECTION||!/^(?:https?|file):/i.test(t))return;try{let e=L3(process.platform==="darwin"?"open":"xdg-open",[t],{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}function D3(t,e,n){if(e<0){if(t!=="fill")return Math.max(Kl,t+e);if(!n)return t;return Math.max(Kl,Math.max(100,n)+e+1)}return t==="fill"||t+e>n?"fill":t+e}function eE(t,e){return t.size===e.size&&t.at===e.at&&t.opacity===e.opacity}function q3(t,e){if(eE(t,e))return;return{...t.size!=="fill"?{size:t.size}:{},...t.at!==e.at?{position:Ut[t.at-1]}:{},...t.opacity!==e.opacity?{opacity:t.opacity}:{}}}function zS(t,e){let n=V(t);return fe(t,e).flatMap((r,i)=>{let[,o,s]=/^([a-z.]+)_(\d+)$/.exec(r.key)??[],a=[...J,sr].find((c)=>c.key===o);if(!a||!s)return[];return[{key:r.key,id:Number(s),ansi:a.ansi,...a===sr?{}:{page:a.pageUrl(Number(s))},up:i===0,from:Hn(n,r.original??r.fill)}]})}function Y3(t){return t.length>=2&&!/^\d+$/.test(t)&&!t.includes("://")&&!/^[\w.]+:\d+$/.test(t)}var DS=12,J3=4,V3=150,Z3=300,qS=12,Q3=2,X3=150,t8="\x1B[?5522$p\x1B]72;t=q\x1B\\\x1B[c",e8=4000,n8=8000,YS=/\.(png|jpe?g|gif|webp|heic|tiff?|bmp)$/i,r8=process.platform==="win32"?"alt+v":"ctrl+v",JS=process.platform==="darwin"?"ctrl+shift+cmd+4 copies a screenshot":"copy a picture first",i8=1280,o8=16,s8=Ut.indexOf("top-right")+1,Kl=20,VS=2,ZS=3,a8=/[\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/u,c8=8,u8=9;function Wl(t,e){return{key:t,groups:[],sources:[],queue:[],rounds:0,roundOf:new Map,last:new Map,kin:new Map,kindred:new Map,shapes:[],seen:new Set,same:new Map,checked:0,total:0,focus:0,top:0,searching:e,stage:"fetch",arrived:new Set}}function ic(t){if(!(t instanceof Error))return String(t);if(t instanceof AggregateError&&t.errors[0])return ic(t.errors[0]);if(t.cause)return ic(t.cause);let e=t.code;if(typeof e==="string")return e;let n=(t.message||t.name).split(".")[0]??"";return n.length>56?`${n.slice(0,55)}…`:n}function Wp(t,e){return`${t}: ${ic(e)}`}function QS(t){return t.width*t.height}function XS(t,e){return`${t}-${tE("sha1").update(e).digest("hex").slice(0,8)}`}class Kp{view;tone;session=new AbortController;cell={w:0,h:0};cols=process.stdout.columns||80;rows=process.stdout.rows||24;gen=0;pumping=0;boards=new Map;board;posts=new Map;thumbPath=new Map;looking=new Map;looked=new Map;matched=new Map;aheading=!1;pages=new Map;tab=0;values=new Map(no.map((t)=>[t.name,WS(t,process.env[t.name])]));direction=1;prefetching=0;related=new Map;pool=[];relating;thumbQueue=[];heldFiles=new Map;heldAsked=new Set;thumbing=0;clarity=new Map;tunedFiles=[];presenting=!1;again=!1;renders=new Da;showing;thumbless=new Set;current;fetch;settle;suggestTimer;suggesting;countTimer;counting;terminal;grabber=new lp((t)=>this.write(t),(t)=>void this.got(t));noticeTimer;peekTimer;peeked;attaching;done;scratch=j3(Hn(G3(),"ttheme-find-"));home;catalog;entry;tagged;blurring;start;paint;kept;constructor(t,e,n,r,i){this.start=i,this.home=t,this.catalog=e,this.entry=n,this.tagged=new Set(e.palettes.flatMap((s)=>s.booru?[s.booru]:[])),this.tone=vn(n,n.signatureSlots),this.blurring=Ur(t);let o={size:"fill",at:s8,opacity:this.tone.opacity};this.view={palette:n.name,tag:r,site:this.tabName,siteAnsi:this.tabAnsi,nextSite:this.nextTabName,preset:this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:Up(this.setting("TTHEME_FIND_ORDER")),solo:this.setting("TTHEME_FIND_SOLO")==="on",rating:gi(this.setting("TTHEME_FIND_RATING")),block:vo(this.setting("TTHEME_FIND_BLOCK")),sets:this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",narrow:this.narrowed(),enabled:js(this.setting("TTHEME_FIND_SITES")),hide:yc(this.setting("TTHEME_FIND_HIDE")),hideTags:_s(this.setting("TTHEME_FIND_HIDE_TAGS")),advanced:!1,settings:no.map((s)=>({label:s.label,choices:[...s.choices],value:this.setting(s.name),default:WS(s,da(s.name)),multi:s.multi&&{none:s.multi.none},about:s.about,entry:s.entry,advanced:s.advanced,cursor:0})),colors:{cursor:n.cursor,selection:n.selection,background:n.background,foreground:n.foreground,ansi:n.ansi},tiles:[],installed:[],held:zS(t,n.name),checked:0,total:0,searching:r!=="",stage:"fetch",sites:[],focus:0,top:0,scroll:0,beat:0,mode:"grid",help:!1,scene:Math.max(0,zt.findIndex((s)=>s.name.toLowerCase()===process.env.TTHEME_SCENE)),details:!1,tune:{...o},untuned:o,coloring:Su(t),editing:r===""?"":void 0,chips:[]},this.paint=new Gp({view:this.view,grid:()=>({cols:this.cols,rows:this.rows,cell:this.cell}),background:n.background,renders:this.renders,scratch:this.scratch,signal:this.signal,write:(s)=>this.write(s)}),this.kept=new _p({home:t,catalog:e,entry:n,signal:this.signal,credited:()=>{this.show(),this.inform(),this.paint.draw()}}),this.pool=this.selected(this.view),this.syncChips(),this.board=Wl(this.boardKey,r!==""),this.boards.set(this.board.key,this.board)}get signal(){return this.session.signal}get site(){return this.tab===0?void 0:J[this.tab-1]}get sites(){return this.site?[this.site]:J.filter((t)=>this.view.enabled.includes(t.name))}get tabName(){return this.site?.name??"all"}get tabAnsi(){return this.site?.ansi??J3}get nextTabName(){let t=(this.tab+1)%(J.length+1);return t===0?"all":J[t-1].name}frame(){return{w:this.cols*(this.cell.w||10),h:this.rows*(this.cell.h||20)}}setting(t){return this.values.get(t)}narrowed(){return Yd(this.setting("TTHEME_FIND_MIN_SCORE"),this.setting("TTHEME_FIND_MIN_SIZE"),this.setting("TTHEME_FIND_PNG"))}get boardKey(){return`${this.site?.key??"all"}|${this.view.preset}|${this.view.order}`}origPath(t,e,n){return Hn(Ve(t),"orig",`${e}.${n}`)}previewPath(t){let{url:e}=Sc(t.site,t.post);return Hn(Ve(t.site),"thumb",`${XS(t.post.id,e)}.${Er(e)}`)}tileOf(t,e){let{site:n,post:r}=t,i=Ee(n,r.id),o=kn(r)??r;return{id:r.id,key:i,site:n.name,siteAnsi:n.ansi,width:o.width,height:o.height,reduced:o!==r,page:n===sr?"":n.pageUrl(r.id),artist:n===sr?xv(r.source):r.named.artist[0]??"",score:r.score,variants:e,mates:this.kept.matesOf(n,r.owner),thumb:this.thumbPath.get(i),missing:this.thumbless.has(i)}}show(){let t=this.view,e=this.board;if(t.tiles=e.groups.flatMap((n)=>n.open?n.posts.map((r)=>this.tileOf(r,0)):[this.tileOf(n.posts[0],n.posts.length)]),t.checked=e.checked,t.total=e.total,t.searching=e.searching,this.stageOf(e),t.note=e.note,t.focus=Math.max(0,Math.min(e.focus,t.tiles.length-1)),t.top=e.top,this.showing!==e)this.showing=e,this.paint.snap()}stageOf(t){let e=this.view;e.stage=t.stage,e.ranking=t.ranking,e.sites=this.sites.map((n)=>({name:n.name,arrived:t.arrived.has(n.name)}))}syncSite(){let t=this.view;t.site=this.tabName,t.siteAnsi=this.tabAnsi,t.nextSite=this.nextTabName}run(){let t=(e)=>this.view.editing===void 0&&vl(e);return Xr({modes:[ir,...Qr()],assume:[Rn,Zr],burst:t},async(e)=>{this.terminal=e,e.onResize(this.onResize),e.listen((i)=>{for(let o of i)this.inbound(o);this.paint.soon()}),e.write(Ai);let n=new Promise((i)=>{this.done=i}),r=setInterval(this.onClock,250);setTimeout(zc,0);try{let i=new Ra,o=await e.ask(rl,(s)=>i.see(s),1000);if(o){if(this.cell=o,this.holdThumbs(),this.view.tag)this.search(),this.relate(this.view.tag)}else this.view.searching=!1,this.view.error="This terminal does not report its cell size — find needs kitty graphics";if(!process.env.TMUX)await e.ask(t8,(s)=>s.kind==="attributes"?!0:void 0,500,!1);if(this.grabber.start(),e.hold(C1),this.start&&"paste"in this.start)this.pasted(this.start.paste);else if(this.start)this.fromClipboard();else this.peek();return this.paint.draw(),await e.until(n)}finally{this.session.abort(),this.grabber.stop(),this.attaching?.abort(),clearTimeout(this.noticeTimer),clearTimeout(this.peekTimer),this.fetch?.abort(),clearTimeout(this.settle),this.quietSuggest(),this.quietCount(),clearInterval(r),this.paint.stop(),e.write(`\x1B_Ga=d,d=A,q=2\x1B\\${Ai}`),this.kept.save(),this.renders.close(),Ul(this.scratch,{recursive:!0,force:!0}),Nw()}})}write(t){this.terminal?.write(t)}get saved(){return this.view.saved?.text}get installs(){return this.view.installed.length}finish(t){this.done?.(t===2&&this.saved?0:t)}inbound(t){if(t.kind==="key")this.key(t.key);else if(t.kind==="mouse")this.pointer(t);else if(t.kind==="paste")this.pasted(t.text);else if(t.kind==="mode"){if(t.mode===5522)this.grabber.clipboard=t.value!==0&&t.value!==4}else if(t.kind==="osc")if(t.code==="72"&&t.meta.t==="q")this.grabber.drops=!0;else this.grabber.take(t)}pasted(t){let e=this.view;if(e.editing!==void 0&&t.trim()!==""&&!this.picture(t)){e.editing+=t.replace(/[\r\n]+/g," "),this.suggest(),this.paint.draw();return}if(e.installing!==void 0||e.panel!==void 0||e.help)return;if(t.trim()===""){this.fromClipboard();return}this.attach(t)}picture(t){let e=t.trim();if(/^https?:\/\/\S+$/i.test(e))return!vc(e,this.site??J[0]);return gs(e).length>0}async got(t){if(t.kind==="error"){this.notice(t.message);return}if(t.kind==="text"){if(t.text.trim()===""){this.notice(`No picture on the clipboard — ${JS}`);return}this.pasted(t.text);return}await this.bring(()=>kl(t.bytes,t.source))}notice(t,e=e8){let n=this.view;n.error=t,clearTimeout(this.noticeTimer),this.noticeTimer=setTimeout(()=>{if(n.error===t)n.error=void 0,this.paint.draw()},e),this.paint.draw()}async peek(){let t=this.view,e;try{e=await Nv()}catch{return}if(!e||e.stamp===this.peeked)return;if(this.peeked=e.stamp,!e.picture||t.installing!==void 0)return;t.hint=`Picture on the clipboard · ${r8} uses it`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{t.hint=void 0,this.paint.draw()},n8),this.paint.draw()}async fromClipboard(){let t=this.view;if(up()){if(this.grabber.clipboard){this.grabber.ask();return}this.notice("Over SSH the clipboard is not here — drop the file");return}let e;try{e=await Pv(Hn(this.scratch,`clipboard-${Date.now()}.png`))}catch(r){this.notice(`Could not read the clipboard: ${ic(r)}`);return}if(clearTimeout(this.peekTimer),t.hint=void 0,"image"in e){await this.bring(async(r)=>({...await cp(e.image,r),source:"clipboard"}));return}let n=e.text.trim();if(!n){this.notice(`No picture on the clipboard — ${JS}`);return}if(this.picture(n)){await this.attach(n);return}if(t.editing===void 0)t.editing="";this.pasted(n)}async attach(t){let e=t.trim();if(/^https?:\/\//i.test(e)){let i=vc(e,this.site??J[0]);if(i){await this.jump(i.site,i.id);return}}let[n,...r]=gs(e).sort((i,o)=>Number(!YS.test(i))-Number(!YS.test(o)));if(!n){this.notice("Nothing to use in that — drop a picture, or paste one or its link");return}await this.bring((i)=>cp(n,i),r.length)}async bring(t,e=0){let n=this.view;this.attaching?.abort();let r=new AbortController;this.attaching=r,n.error=void 0,n.saved=void 0,n.note="Reading the picture…",this.paint.draw();let i;try{i=await t(AbortSignal.any([r.signal,this.signal]))}catch(f){if(!r.signal.aborted)n.note=void 0,this.notice(ic(f),8000);return}if(r.signal.aborted)return;n.note=e>0?`The first picture of ${e+1} — drop one at a time to try the others`:void 0,this.quietSuggest(),n.editing=void 0,n.suggest=void 0,n.pick=void 0;let o=Iv(i.bytes);Ov(o,i.source);let s=this.origPath(sr,o,i.ext);F(s,i.bytes);let a=US(s).href,c={id:o,file:a,width:i.width,height:i.height,ext:i.ext,preview:a,owner:"",score:0,rating:"s",md5:tE("md5").update(i.bytes).digest("hex"),source:i.source,tags:[],named:{artist:[],character:[],copyright:[]},solo:void 0,family:0,smaller:[]},u={site:sr,post:c},l=this.previewPath(u);F(l,i.bytes),++this.gen,this.current=void 0,n.shown=void 0;let d=Wl(`local|post:${o}`,!1);this.board=d,this.boards.set(d.key,d),this.single(d,u)}single(t,e){t.searching=!1,this.posts.set(Ee(e.site,e.post.id),e),t.groups=[{posts:[e],open:!1}],t.checked=1,t.total=1,this.thumbQueue.push(e),this.thumbs(),this.view.mode="try",this.show(),this.select(),this.paint.draw()}onClock=()=>{let t=this.sites.reduce((r,i)=>zn(i)>zn(r)?i:r),e=Math.ceil((zn(t)-Date.now())/1000),n=e>0?e:void 0;if(n!==this.view.waiting)this.view.waiting=n,this.view.slow=t.name,this.paint.draw()};onResize=()=>{if(this.cols=process.stdout.columns||this.cols,this.rows=process.stdout.rows||this.rows,this.paint.resized(),this.holdThumbs(),this.scroll(),this.paint.snap(),this.view.mode==="try"&&this.current)this.reveal();this.pump(),this.paint.draw()};key(t){let e=this.view;if(t==="ctrl-c"){this.finish(2);return}if(e.installing!==void 0)return;if(t==="focus-in"){this.peek();return}if(t==="focus-out")return;if((t==="ctrl-v"||t==="alt-v")&&e.panel===void 0){this.fromClipboard();return}if(e.editing!==void 0){this.editKey(t);return}if(e.panel!==void 0){this.panelKey(t);return}if(e.help){if(t==="?"||t==="esc")e.help=!1,this.paint.draw();return}if(this.cols<qi.cols||this.rows<qi.rows){if(t==="esc")this.finish(2);return}if(t==="?"){e.help=!0,this.paint.draw();return}if(e.mode==="try"){this.tryKey(t);return}this.gridKey(t)}pointer(t){let e=this.view,n=this.paint.point(t),r=n?.target;if(e.installing!==void 0)return;if(t.action==="wheel"){if(!t.sideways)this.wheel(t.wheel);return}if((t.action==="press"||t.action==="drag")&&t.button!=="left")return;if(r?.kind==="track"&&n&&t.action!=="release")this.slide(r.field,n);else if(t.action==="press")this.pressed(r);else if(t.action==="release"&&n?.inside)this.released(r,t)}pressed(t){let e=this.view;if(e.help)this.paint.drop(),this.key("esc");else if(e.editing!==void 0||t===void 0)return;else if(e.panel!==void 0){if(t.kind==="setting"&&t.index<e.settings.length&&e.typing===void 0)e.panel=t.index,this.paint.draw()}else if(e.mode==="try")this.tryPoint(t);else if(t.kind==="tile")this.focus(t.index);else if(t.kind==="query")this.gridKey("/");else if(t.kind==="site")this.tab=t.tab,this.syncSite(),this.turn()}released(t,e){let n=this.view;if(t?.kind==="key")this.key(t.key);else if(t?.kind==="link"){if(!e.shift&&!e.alt&&!e.ctrl)KS(t.url)}else if(n.editing!==void 0){if(t?.kind==="suggest")n.pick=t.index,this.editKey("enter")}else if(n.panel!==void 0)this.panelPoint(t);else if(n.mode==="try"){if(t?.kind==="place"&&n.tuning)this.tuneKey(String(t.at))}else if(t?.kind==="tile"&&e.count===2)this.gridKey("enter");else if(t?.kind==="chip")this.toggle(t.index)}wheel(t){let e=this.view;if(e.help)return;if(e.editing!==void 0){if(e.suggest?.length)this.editKey(t<0?"up":"down")}else if(e.panel!==void 0){if(e.typing===void 0)this.panelKey(t<0?"up":"down")}else if(e.tuning)this.tuneKey(t<0?"up":"down");else if(e.mode==="try")this.tryKey(t<0?"left":"right");else this.focus(e.focus+t*or(this.cols,this.rows).perRow)}panelPoint(t){let e=this.view;if(t?.kind!=="setting"&&t?.kind!=="choice")return;let n=e.settings[t.index];if(e.typing!==void 0){let r=e.settings[e.panel??0];if(r&&(t.index!==e.panel||t.kind==="setting"))this.typeKey(r,"enter");else return}if(t.kind==="setting"&&t.index===e.settings.length){e.panel=t.index,this.panelKey("enter");return}if(e.panel=t.index,t.kind==="choice"&&n){if(n.entry==="text"||t.choice===void 0){this.panelKey("enter");return}if(n.multi){n.cursor=Math.max(0,n.choices.indexOf(t.choice)),this.panelKey(" ");return}if(n.value!==t.choice)n.value=t.choice,this.recount()}this.paint.draw()}tryPoint(t){let e=this.view;if(t.kind==="scene")e.scene=t.scene,e.details=!1,this.paint.draw();else if(e.tuning&&t.kind==="field")e.tuning.field=t.field,this.paint.draw()}slide(t,e){let n=this.view,r=n.tuning;if(!r)return;let i=Math.min(1,Math.max(0,e.width>1?e.x/(e.width-1):0));if(r.field=t,t===0){let o=Math.max(100,r.fill),s=Kl+Math.round(i*(o-Kl+1));n.tune.size=i===1||r.fill>0&&s>=r.fill?"fill":Math.min(o,s)}else n.tune.opacity=Math.round(i*100)/100;this.retune()}gridKey(t){let e=this.view,{perRow:n,rowsVis:r}=or(this.cols,this.rows),o={left:-1,right:1,up:-n,down:n,k:-n,j:n,pgup:-n*r,pgdn:n*r,home:-e.focus,end:e.tiles.length}[t];if(o!==void 0){this.focus(e.focus+o);return}if(/^[1-9]$/.test(t)){this.toggle(Number(t)-1);return}if(t==="enter"&&e.tiles[e.focus]){e.mode="try",e.error=void 0,this.select();return}if(t==="v"){this.fromClipboard();return}if(t==="c"){e.preset=e.preset==="cutouts"?"all":"cutouts",this.turn();return}if(t==="tab"||t==="shift-tab"){let s=J.length+1;this.tab=(this.tab+(t==="tab"?1:s-1))%s,this.syncSite(),this.turn();return}if(t==="/"){e.editing="",this.paint.draw();return}if(t===" "){this.unfold();return}if(t==="o"){this.openPage();return}if(t==="s"){e.panel=0,e.advanced=!1,this.recount(),this.paint.draw();return}if(t==="esc")this.finish(2)}panelKey(t){let e=this.view,n=e.panel??0,r=e.settings[n];if(e.typing!==void 0&&r){this.typeKey(r,t);return}let i=ja(e);if(t==="up"||t==="down"){let o=i.indexOf(n)+(t==="up"?-1:1);e.panel=i[(o+i.length)%i.length]??n,this.paint.draw();return}if(t==="a"||t==="enter"&&n===e.settings.length){e.advanced=!e.advanced,e.panel=ja(e)[0]??0,this.paint.draw();return}if(r?.entry&&(t==="enter"||r.entry==="number"&&/^[0-9]$/.test(t))){e.typing=t==="enter"?r.entry==="text"?r.value:"":t,this.paint.draw();return}if((t==="left"||t==="right")&&r&&r.entry!=="text"){let o=t==="left"?-1:1;if(r.multi)r.cursor=(r.cursor+o+r.choices.length)%r.choices.length;else r.value=av(r.choices,r.value,o),this.recount();this.paint.draw();return}if(t===" "&&r?.multi){let o=r.value.split(" "),s=r.choices.filter((c,u)=>u===r.cursor?!o.includes(c):o.includes(c)),a=r.multi.none;if(s.length>0||a!==void 0)r.value=s.length>0?s.join(" "):a,this.recount(),this.paint.draw();return}if(t==="esc"){e.settings.forEach((o,s)=>{o.value=this.setting(no[s]?.name??"")}),e.panel=void 0,e.advanced=!1,this.quietCount(),this.paint.draw();return}if(t==="enter"||t==="s"||t==="alt-c")e.panel=void 0,e.advanced=!1,this.quietCount(),this.adopt()}typeKey(t,e){let n=this.view,r=n.typing??"";if(e==="esc"){n.typing=void 0,this.paint.draw();return}if(e==="enter"||e==="up"||e==="down"){if(t.value=t.entry==="number"?Number(r)>0?String(Number(r)):"off":_s(r).join(" "),n.typing=void 0,this.recount(),e==="enter"){this.paint.draw();return}this.panelKey(e);return}let i=Ki(r,e,(o)=>t.entry==="number"?/^[0-9]$/.test(o)&&r.length<Xm:/^[\x20-\x7e]$/.test(o));if(i!==void 0)n.typing=i,this.paint.draw()}quietCount(){clearTimeout(this.countTimer),this.counting?.abort(),this.counting=void 0}recount(){if(this.quietCount(),this.view.counts=void 0,!this.view.tag)return;let t=new AbortController;this.counting=t,this.countTimer=setTimeout(()=>void this.countPending(t),Z3)}pending(){let t=(e)=>this.view.settings[no.findIndex((n)=>n.name===e)]?.value??this.setting(e);return{tag:this.view.tag,chosen:this.view.chosen,preset:t("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:Up(t("TTHEME_FIND_ORDER")),rating:gi(t("TTHEME_FIND_RATING")),narrow:Yd(t("TTHEME_FIND_MIN_SCORE"),t("TTHEME_FIND_MIN_SIZE"),t("TTHEME_FIND_PNG")),enabled:js(t("TTHEME_FIND_SITES"))}}async countPending(t){let e=this.pending(),n=this.site?[this.site]:J.filter((o)=>e.enabled.includes(o.name)),r=AbortSignal.any([this.signal,t.signal]),i=await Promise.all(n.map(async(o)=>{let s=this.query(o,e);if(!s)return{site:o.name,count:0};if(o.counts&&!o.counts(s.tags))return{site:o.name};try{let a=await Qd(o,s.tags,r);return{site:o.name,...Number.isFinite(a)?{count:a}:{}}}catch{return{site:o.name}}}));if(this.counting===t&&this.view.panel!==void 0)this.view.counts=i,this.paint.draw()}adopt(){let t=this.view,e=no.map((r)=>this.setting(r.name));t.settings.forEach((r,i)=>{let o=no[i];if(o)this.values.set(o.name,r.value)});let n=no.filter((r,i)=>this.setting(r.name)!==e[i]);if(n.length===0){this.paint.draw();return}this.save(n),t.rating=gi(this.setting("TTHEME_FIND_RATING")),t.block=vo(this.setting("TTHEME_FIND_BLOCK")),t.sets=this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",t.preset=this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",t.order=Up(this.setting("TTHEME_FIND_ORDER")),t.solo=this.setting("TTHEME_FIND_SOLO")==="on",t.narrow=this.narrowed(),t.enabled=js(this.setting("TTHEME_FIND_SITES")),t.hide=yc(this.setting("TTHEME_FIND_HIDE")),t.hideTags=_s(this.setting("TTHEME_FIND_HIDE_TAGS")),this.boards.clear(),this.current=void 0,t.shown=void 0,t.mode="grid",this.search()}save(t){this.store(t.map((e)=>[e.name,this.setting(e.name)]))}store(t){let e=Hn(this.home,"ttheme","config.zsh");try{let n=rc(e)?_3(e,"utf8"):"";return F(e,t.reduce((r,[i,o])=>Eu(r,i,o),n)),!0}catch(n){return this.view.error=n instanceof Error?n.message:String(n),!1}}editKey(t){let e=this.view,n=e.editing??"",r=e.suggest??[];if((t==="up"||t==="down")&&r.length>0){let s=((e.pick??r.length)+(t==="down"?1:r.length))%(r.length+1);e.pick=s===r.length?void 0:s,this.paint.draw();return}if(t==="esc"||t==="enter")this.quietSuggest();if(t==="esc"){if(e.editing=void 0,e.tag===""){this.finish(2);return}this.paint.draw();return}if(t==="enter"){let o=e.pick===void 0?void 0:r[e.pick],s=o?o.whole?o.value:n.replace(/\S*$/,o.value):n;if(e.editing=void 0,e.suggest=void 0,e.pick=void 0,s.trim()){this.commit(s.trim());return}if(e.tag===""){this.finish(2);return}this.paint.draw();return}let i=Ki(n,t);if(i!==void 0)e.editing=i,this.suggest(),this.paint.draw()}quietSuggest(){clearTimeout(this.suggestTimer),this.suggesting?.abort(),this.suggesting=void 0}suggest(){this.quietSuggest();let t=this.view;t.pick=void 0;let e=t.editing??"",n=/\S*$/.exec(e)?.[0]??"",r=Y3(n),i=G0(e,ZS,this.tagged).map((c)=>({value:c.tag,count:0,alias:c.name,whole:!0}));if(!r&&i.length===0){t.suggest=void 0;return}let o=r?k$(this.catalog.palettes,this.entry,n).map((c)=>({value:c.booru,count:0,palette:c.name})):[],s=[...new Map([...o.slice(0,ZS),...i].map((c)=>[c.value,c])).values()];if(t.suggest=s.length>0?s:void 0,i.length>0&&a8.test(e))t.pick=s.findIndex((c)=>("whole"in c));if(!r)return;let a=new AbortController;this.suggesting=a,this.suggestTimer=setTimeout(async()=>{try{let c=await Tw(n,AbortSignal.any([this.signal,a.signal]));if(this.suggesting===a&&t.editing!==void 0){let u=new Map(c.map((d)=>[d.value,d.count])),l=new Set(s.map((d)=>d.value));t.suggest=[...s.map((d)=>({...d,count:u.get(d.value)??0})),...c.filter((d)=>!l.has(d.value))].slice(0,c8),t.pick=t.pick!==void 0&&t.pick<s.length?t.pick:void 0,this.paint.draw()}}catch{}},V3)}async commit(t){let e=vc(t,this.site??J[0]);if(e){await this.jump(e.site,e.id);return}if(this.picture(t)){await this.attach(t);return}this.view.tag=t,this.view.chosen=void 0,this.relate(t),this.boards.clear(),await this.search()}async jump(t,e){let n=++this.gen;this.tab=J.indexOf(t)+1,this.syncSite(),this.current=void 0,this.view.shown=void 0,this.view.error=void 0;let r=Wl(`${t.key}|post:${e}`,!0);this.board=r,this.boards.set(r.key,r),this.show(),this.paint.draw();try{let i=await So(t,e,this.signal);if(n!==this.gen)return;if(!i){r.searching=!1,r.error=`${t.name} has no post ${e}`,this.view.error=r.error,this.show(),this.paint.draw();return}this.single(r,{site:t,post:i})}catch(i){this.fail(n,i,t)}}async turn(){this.fetch?.abort(),this.current=void 0,this.view.shown=void 0;let t=this.boards.get(this.boardKey);if(!t){await this.search();return}this.gen++,this.board=t,this.view.error=t.error,this.show(),this.paint.draw(),await this.pump()}unfold(){let t=this.view,e=0;for(let n of this.board.groups){let r=n.open?n.posts.length:1;if(t.focus<e+r){if(n.posts.length<2)return;n.open=!n.open,this.board.focus=e;for(let i of n.posts)if(!this.thumbPath.has(Ee(i.site,i.post.id)))this.thumbQueue.push(i);this.thumbs(),this.show(),this.scroll(),this.paint.glide(),this.paint.draw();return}e+=r}}openPage(){let t=this.view.tiles[this.view.focus],e=t&&this.posts.get(t.key);if(e)KS(e.site.pageUrl(e.post.id))}tryKey(t){let e=this.view;if(e.tuning){this.tuneKey(t);return}if(t==="left"||t==="right"){this.direction=t==="left"?-1:1,this.focus(e.focus+this.direction);return}if(t==="shift-left"||t==="shift-right"){e.scene+=t==="shift-left"?-1:1,e.details=!1,this.paint.draw();return}if(t==="i"){e.details=!e.details,this.inform(),this.paint.draw();return}if(t==="t"){e.tuning={field:0,held:{...e.tune},fill:this.current?.fill??0,coloring:e.coloring},this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="o"){this.openPage();return}if(t==="x"){this.swap();return}if(t==="v"){this.fromClipboard();return}if(t==="enter"){this.install();return}if(t==="esc")this.fetch?.abort(),clearTimeout(this.settle),e.fetching=void 0,e.mode="grid",e.error=void 0,this.paint.draw()}tuneKey(t){let e=this.view,n=e.tuning,r=e.tune;if(t==="up"||t==="down"){n.field=(n.field+(t==="up"?2:1))%3,this.paint.draw();return}let i=z3[t];if(i!==void 0){if(n.field===0)r.size=D3(r.size,i,n.fill);else if(n.field===1)r.at=(r.at-1+Math.sign(i)+9)%9+1;else r.opacity=Math.max(0,Math.min(100,Math.round(r.opacity*100)+i))/100;this.retune();return}if(/^[1-9]$/.test(t)){n.field=1,r.at=Number(t),this.retune();return}if(t==="="){let o=e.untuned;if(n.field===0)r.size=o.size;else if(n.field===1)r.at=o.at;else r.opacity=o.opacity;this.retune();return}if(t==="+"){e.tune={...e.untuned},this.retune();return}if(t==="enter"){e.tuning=void 0,this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="esc")e.tune={...n.held,...n.coloring===e.coloring?{}:{opacity:e.untuned.opacity}},e.tuning=void 0,this.retune()}recolor(){let t=this.view;if(!this.current||t.shown?.id!==this.current.key)return;t.coloring=t.coloring==="tone"?"original":"tone",t.tune.opacity=t.untuned.opacity,this.paint.draw(),this.reveal()}retune(){if(this.paint.draw(),this.current&&this.view.shown?.id===this.current.key)this.reveal()}inform(){let t=this.view,e=t.tiles[t.focus],n=e&&this.posts.get(e.key);t.info=n?this.infoOf(n):void 0}infoOf(t){let{site:e,post:n}=t,r=n.named,i=Rw(e,n),o=new Set([...r.artist,...r.character,...r.copyright]),s=Bs(n.source),a=/^https?:\/\//i.test(s)?s:e===sr&&s.startsWith("/")?US(s).href:void 0;return{page:e===sr?"":e.pageUrl(n.id),source:s,...a?{link:a}:{},artists:r.artist,characters:r.character,series:r.copyright,tags:n.tags.filter((c)=>!o.has(c)),...i?{rating:i}:{},...n.posted?{posted:n.posted}:{},ext:(kn(n)??n).ext,uploader:n.owner}}focus(t){let e=this.view;if(e.tiles.length===0)return;let n=Math.max(0,Math.min(e.tiles.length-1,t));if(n===e.focus)return;if(e.focus=n,this.board.focus=n,this.scroll(),this.paint.glide(),this.pump(),e.mode==="try")this.select();this.paint.draw()}scroll(){let t=this.view,{perRow:e,rowsVis:n}=or(this.cols,this.rows),r=Math.floor(t.focus/e);if(r<t.top)t.top=r;if(r>t.top+n-1)t.top=r-n+1;this.board.top=t.top}selected(t){if(t.chosen)return t.chosen;if(!t.tag)return[];return this.namesOf(t.tag,"danbooru")}namesOf(t,e){let n=t===this.entry.booru?this.entry:this.catalog.palettes.find((r)=>r.booru===t);return n?y$(n,e):[t]}syncChips(){let t=this.selected(this.view);this.view.chips=this.pool.slice(0,u8).map((e)=>({name:e,on:t.includes(e)}))}toggle(t){let e=this.view,n=e.chips[t];if(!n)return;let r=this.selected(e),i=n.on?r.filter((o)=>o!==n.name):[...r,n.name];if(i.length===0)return;e.chosen=i,e.tag=i.join(" or "),this.syncChips(),this.boards.clear(),this.search()}async relate(t){this.relating?.abort();let e=this.selected({tag:t,chosen:void 0});if(this.pool=e,this.syncChips(),this.paint.draw(),!t||/\s/.test(t))return;let n=this.related.get(t);if(!n){let r=new AbortController;this.relating=r;try{n=(await Hw(t,AbortSignal.any([this.signal,r.signal]))).map((i)=>i.value)}catch{return}if(this.relating!==r)return;this.related.set(t,n)}this.pool=[...new Set([...e,...n])],this.syncChips(),this.paint.draw()}query(t,e=this.view){let n=e.chosen?Cw(t,e.chosen):this.namesOf(e.tag,t.key);if(n.length===0)return;let r=e.chosen?.slice(n.length)??[],i=n.length>1,o=e.preset==="cutouts"?t.cutouts:"",s=i&&o.includes("~"),a=[i?n.map((l)=>`~${l}`).join(" "):n[0],t.rate(e.rating),...t.narrow(e.narrow),s?"":o,e.order==="score"?t.best:""].filter(Boolean),c=[],u=[];for(let l of a)if(Zd([...c,l].join(" "))<=t.tagBudget)c.push(l);else u.push(l);return{tags:c.join(" "),notes:[...u.length>0?[`${t.name} takes ${t.tagBudget} tags — ${u.join(" ")} left out`]:[],...r.length>0?[`${t.name} takes ${n.length} tag${n.length===1?"":"s"} — ${r.join(" ")} left out`]:[],...s?[`${t.name} ORs the names, so cutouts are told by the file`]:[],...e.narrow.score>0&&!t.scored?[`${t.name} keeps no score`]:[],...e.narrow.png&&t.guesses?[`${t.name} names a file type only where danbooru holds the file`]:[]]}}async search(){let t=++this.gen,e=Wl(this.boardKey,!0);this.board=e,this.boards.set(e.key,e),this.view.error=void 0;let n=this.sites.flatMap((o)=>{let s=this.query(o);return s?[{site:o,...s}]:[]}),r=this.sites.filter((o)=>!n.some((s)=>s.site===o)),i=[...n.flatMap(({notes:o})=>o),...r.length>0?[`${this.entry.name} has no tag on ${r.map((o)=>o.name).join(", ")}`]:[]];if(e.note=i.length>0?i.join(" · "):void 0,n.length===0)e.searching=!1;this.show(),this.paint.draw(),this.tally(t,e,n);try{let o=await Promise.all(n.map(async(s)=>({plan:s,owners:await this.kept.mateOwners(s.site)})));if(t!==this.gen)return;e.sources=o.flatMap(({plan:{site:s,tags:a},owners:c})=>{let u=Zd(a)+1<=s.tagBudget?s.uploadedBy:void 0;return[...u?[...c.keys()].map((l)=>({site:s,tags:`${a} ${u(l)}`,page:0,done:!1})):[],{site:s,tags:a,page:0,done:!1}]}),this.show(),this.paint.draw(),await this.pump()}catch(o){this.fail(t,o)}}async tally(t,e,n){let r=await Promise.allSettled(n.map(({site:i,tags:o})=>Qd(i,o,this.signal)));if(t===this.gen)e.total=r.reduce((i,o)=>i+(o.status==="fulfilled"&&Number.isFinite(o.value)?o.value:0),0),this.show(),this.paint.draw()}fail(t,e,n=this.site){if(t!==this.gen||this.signal.aborted)return;this.board.error=Wp(n?.name??this.tabName,e),this.board.searching=!1,this.view.error=this.board.error,this.show(),this.paint.draw()}drop(t,e,n){for(let r of t.sources)if(r.site===e)r.done=!0;t.note=[t.note,Wp(e.name,n)].filter(Boolean).join(" · ")}wants(){let{perRow:t,rowsVis:e}=or(this.cols,this.rows);return this.view.tiles.length<(this.board.top+e+VS)*t}need(){let{perRow:t,rowsVis:e}=or(this.cols,this.rows);return(e+VS)*t}live(t){return this.boards.get(t.key)===t}page(t,e,n){let r=`${t.key}|${e}|${n}`,i=this.pages.get(r);if(!i)i=Aw(t,e,n,this.signal).then((o)=>this.borrow(t,o)),this.pages.set(r,i),i.catch(()=>this.pages.delete(r));return i}async borrow(t,e){let n=t===ie?[]:e.filter((r)=>r.md5!=="");if(n.length>0)try{Rc(n,await Pc(n.map((r)=>r.md5),this.signal))}catch{}return e}staged(t){if(t===this.board)this.stageOf(t),this.paint.draw()}async round(t){t.stage="fetch",this.staged(t);let e=J.flatMap((a)=>{let c=t.sources.find((u)=>u.site===a&&!u.done);return c?[c]:[]}),n=await Promise.all(e.map(async(a)=>{try{let c=await this.page(a.site,a.tags,a.page);return t.arrived.add(a.site.name),this.staged(t),{source:a,posts:c}}catch(c){if(t.sources.every((u)=>u.site===a.site)||this.signal.aborted)throw c;return this.drop(t,a.site,c),{source:a,posts:void 0}}}));if(!this.live(t))return;let r=[];for(let{source:a,posts:c}of n){if(!c)continue;a.page++,a.done=c.length<vr;let u=t.last.get(a);for(let l of c){let d=u&&Yv(u.post,l)?u.set:`set:${a.site.key}:${l.id}`;u={post:l,set:d};let f=Ee(a.site,l.id);if(t.seen.has(f))continue;t.seen.add(f);let h={site:a.site,post:l};if(this.eligible(h))t.kin.set(h,[d,...qv(a.site,l)]),r.push(h);else t.checked++}if(u)t.last.set(a,u)}let i=this.dedupe(t,r),o=++t.rounds,s;if(this.view.order!=="fit")s=e.length>1?zv(i):i;else{let a=Ml(i,this.frame(),this.matched),c=a.slice(0,this.need()),u={done:0,total:c.length};if(t.ranking=u,this.staged(t),await this.looks(c,()=>{u.done++,this.staged(t)}),t.ranking=void 0,!this.live(t))return;s=[...Ml(c,this.frame(),this.matched),...a.slice(c.length)]}t.stage="check",this.staged(t);for(let a of s)t.roundOf.set(a,o);t.queue.push(...s),this.ahead(t)}ahead(t){if(this.aheading||this.view.order!=="fit"||!this.live(t))return;let e=t.queue.slice(0,this.need()).filter((n)=>!this.looking.has(Ee(n.site,n.post.id)));if(e.length===0)return;this.aheading=!0,this.looks(e).then(()=>{this.aheading=!1;for(let n of new Set(e.map((r)=>t.roundOf.get(r)??0)))this.resort(t,n);this.ahead(t)})}resort(t,e){let n=t.queue.flatMap((i,o)=>t.roundOf.get(i)===e?[o]:[]),r=Ml(n.map((i)=>t.queue[i]),this.frame(),this.matched);n.forEach((i,o)=>{t.queue[i]=r[o]})}dedupe(t,e){let n=[];for(let r of e){let i=Sp(r.post),o=i.map((a)=>t.same.get(a)).find(Boolean);if(!o){for(let a of i)t.same.set(a,r);n.push(r);continue}if(t.checked++,QS(r.post)<=QS(o.post))continue;for(let a of[...i,...Sp(o.post)])t.same.set(a,r);let s=n.indexOf(o);if(s>=0){n[s]=r;continue}this.replace(t,o,r)}return n}replace(t,e,n){t.roundOf.set(n,t.roundOf.get(e)??0);let r=t.queue.indexOf(e);if(r>=0){t.queue[r]=n;return}for(let i of t.groups){let o=i.posts.indexOf(e);if(o>=0){i.posts[o]=n,this.posts.set(Ee(n.site,n.post.id),n),this.thumbQueue.push(n),this.thumbs();return}}}async looks(t,e){let n=0;await Promise.all(Array.from({length:qS},async()=>{while(n<t.length)await this.look(t[n++]),e?.()}))}look(t){let e=Ee(t.site,t.post.id),n=this.looking.get(e);if(!n)n=(async()=>{let r=this.previewPath(t),i=Sc(t.site,t.post);await this.kept.cached(i.site,r,i.url);let o=await this.renders.run({job:"match",from:r,colors:this.entry.signature});return this.looked.set(e,o),this.matched.set(t.post,o.match),o})().catch(()=>{return}),this.looking.set(e,n);return n}async pump(){let t=this.gen,e=this.board;if(this.pumping===t||e.sources.length===0)return;this.pumping=t;let n=[],r;try{e.searching=!0;while(t===this.gen){while(n.length<DS&&e.queue.length>0&&this.wants()){let s=e.queue.shift();n.push({pick:s,passed:this.vet(s)})}if(this.ahead(e),!r&&e.queue.length<DS&&e.sources.some((s)=>!s.done)&&this.wants()){let s=this.round(e).then(()=>{if(r===s)r=void 0});s.catch(()=>{}),r=s}let i=n.shift();if(!i){if(!r)break;await r,this.show(),this.paint.draw();continue}let o=await i.passed;if(t!==this.gen)return;if(e.checked++,o)this.admit(i.pick);this.show(),this.paint.draw()}if(t===this.gen)e.searching=!1,this.show(),this.paint.draw()}catch(i){this.fail(t,i)}finally{if(this.kept.save(),this.pumping===t)this.pumping=0}}eligible({site:t,post:e}){let n=kn(e);if(!Mc(t,e,this.view.rating)||Ec(e,this.view.block).length>0||!n)return!1;if(this.view.solo&&e.solo===!1)return!1;let{score:r,size:i,png:o}=this.view.narrow;if(Math.min(e.width,e.height)<i||t.scored&&e.score<r||o&&e.ext!=="png"||Iw(e,this.view.hide).length>0||this.view.hideTags.some((s)=>e.tags.includes(s)))return!1;return this.view.preset==="all"?["png","jpg","jpeg",""].includes(n.ext):["png",""].includes(e.ext)}async vet(t){let[e]=await Promise.all([this.passes(t),this.look(t)]);return e}async passes({site:t,post:e}){return this.view.preset==="all"||t.vouched||this.kept.transparent(t,e)}admit(t){let{site:e,post:n}=t,r=this.board,i=Ee(e,n.id);this.posts.set(i,t);let o=r.kin.get(t)??[],s=this.looked.get(i),a=s&&{hash:s.hash,width:n.width,height:n.height},c=this.view.sets==="fold"?this.kindred(r,o,a):void 0;if(c){if(c.posts.push(t),this.register(r,c,o,a),c.open)this.thumbQueue.push(t),this.thumbs();return}let u={posts:[t],open:!1};r.groups.push(u),this.register(r,u,o,a),this.thumbQueue.push(t),this.thumbs()}kindred(t,e,n){for(let r of e){let i=t.kindred.get(r);if(i)return i}return n&&t.shapes.find((r)=>Vv(r.shape,n))?.group}register(t,e,n,r){for(let i of n)if(!t.kindred.has(i))t.kindred.set(i,e);if(r)t.shapes.push({shape:r,group:e})}holds(){this.view.held=zS(this.home,this.entry.name).map((t)=>{let e=this.heldFiles.get(t.from);return e?{...t,thumb:e}:t}),this.holdThumbs()}holdThumbs(){let t=be.cols*this.cell.w,e=be.rows*this.cell.h;if(t===0||e===0)return;for(let n of this.view.held.slice(0,Zm(this.cols))){if(n.thumb||this.heldAsked.has(n.from))continue;this.heldAsked.add(n.from);let r=Hn(this.scratch,`held-${U3(n.from)}-${t}x${e}.png`);this.renders.run({job:"thumb",from:n.from,to:r,width:t,height:e}).then(()=>{this.heldFiles.set(n.from,r),this.holds(),this.paint.draw()}).catch(()=>{})}}thumbs(){while(!this.signal.aborted&&this.thumbing<qS&&this.thumbQueue.length>0){let t=this.thumbQueue.shift();this.thumbing++,this.thumb(t).catch(()=>{this.thumbless.add(Ee(t.site,t.post.id)),this.show(),this.paint.draw()}).finally(()=>{this.thumbing--,this.thumbs()})}}async thumb(t){let{site:e,post:n}=t,r=kt.cols*this.cell.w,i=kt.rows*this.cell.h,o=Sc(e,n),s=Hn(Ve(e),"tile",`${XS(n.id,o.url)}-${r}x${i}.png`);if(!rc(s)){let a=this.previewPath(t);if(await this.kept.cached(o.site,a,o.url),this.signal.aborted)return;await this.renders.run({job:"thumb",from:a,to:s,width:r,height:i})}this.thumbPath.set(Ee(e,n.id),s),this.show(),this.paint.draw()}select(){let t=this.view,e=t.tiles[t.focus];if(this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,this.inform(),!e)return;if(this.current?.key===e.key){this.reveal();return}this.settle=setTimeout(()=>void this.load(e),X3),this.paint.draw()}async load(t){let e=this.view,n=this.posts.get(t.key);if(!n)return;let r=new AbortController;if(this.fetch=r,this.kept.credit(n,r.signal),!kn(n.post))return;let{site:i}=n,o=this.board;try{await Us(i,n.post,r.signal);let s=kn(n.post),a=this.origPath(i,t.id,s.ext);if(!rc(a))e.fetching={id:t.key,got:0,size:0},this.paint.draw();let c=bi(i,n.post,s),u=await this.kept.cached(c.site,a,c.url,(f,h)=>{if(e.fetching?.id===t.key)e.fetching={id:t.key,got:f,size:h},this.paint.draw()});if(r.signal.aborted)return;if(e.fetching=void 0,o!==this.board)return;let l={site:i,id:t.id,key:t.key,path:a,ext:s.ext,size:u,using:"plain",failed:!1};e.preparing=t.key,this.paint.flush();let d=await this.render(l,"plain");if(r.signal.aborted||o!==this.board)return;if(d.clear===0&&rs()&&this.setting("TTHEME_FIND_REMOVE_BG")!=="off"){if(e.preparing=void 0,e.cutting=t.key,this.paint.flush(),l.cut=await this.cutOut(i,t.id,a,r.signal),r.signal.aborted||o!==this.board)return;if(e.cutting=void 0,l.cut){e.preparing=t.key,this.paint.flush();let f=await this.render(l,"cut").catch(()=>{return});if(r.signal.aborted||o!==this.board)return;if(f&&Ju(f.clear))l.using="cut";else Ul(l.cut,{force:!0}),l.cut=void 0,l.failed=!0}else l.failed=!0}if(this.current=l,e.tiles[e.focus]?.key===t.key)await this.present();this.preload()}catch(s){if(!r.signal.aborted&&!this.signal.aborted)e.error=Wp(i.name,s)}finally{if(e.fetching?.id===t.key)e.fetching=void 0;if(e.preparing===t.key)e.preparing=void 0;if(e.cutting===t.key)e.cutting=void 0;this.paint.draw()}}async cutOut(t,e,n,r){let i=Hn(Ve(t),"cut",`${e}.png`);if(rc(i))return i;try{return F3(W3(i),{recursive:!0}),await ka(n,i,r),i}catch{Ul(i,{force:!0});return}}swap(){let t=this.current;if(!t?.cut||this.view.shown?.id!==t.key)return;t.using=t.using==="cut"?"plain":"cut",this.reveal()}preload(){let t=this.view;if(t.mode!=="try")return;for(let e of[t.focus+this.direction,t.focus-this.direction]){let n=t.tiles[e],r=n&&this.posts.get(n.key);if(r)this.kept.credit(r,this.signal);if(this.prefetching>=Q3||!r||!kn(r.post))continue;let{site:i,post:o}=r;this.prefetching++,Us(i,o,this.signal).then(async()=>{let s=kn(o),a=this.origPath(i,o.id,s.ext),c=bi(i,o,s);return await this.kept.cached(c.site,a,c.url),this.render({site:i,id:o.id,key:n.key,path:a,ext:s.ext,size:0,using:"plain",failed:!1},"plain")}).catch(()=>{}).finally(()=>{this.prefetching--})}}async render(t,e){let n=this.cols*this.cell.w,r=this.rows*this.cell.h,i=Math.min(n,i8),o=Math.max(1,Math.round(r*i/n)),s={...this.view.tune},{coloring:a}=this.view,c=!eE(s,this.view.untuned),u=s.opacity!==this.view.untuned.opacity,l=c?`-${s.size}-${s.at}${u?`-${Math.round(s.opacity*100)}`:""}`:"",d=Hn(this.scratch,`${t.site.key}-${t.id}${e==="cut"?"c":""}${a==="original"?"o":""}-${i}x${o}${l}.png`),f=`${t.site.key}:${t.id}:${e}:${a}:${i}x${o}`,h=this.clarity.get(f);if(h&&rc(d))return t.fill=h.fill,{clear:h.clear,path:d,opacity:h.opacity,touched:u};let m=await this.renders.run({job:"show",from:e==="cut"?t.cut:t.path,to:d,width:i,height:o,colors:this.entry,tone:this.tone,blur:this.blurring*i/mf(n,r).width,coloring:a,...c?{tune:{size:s.size,at:s.at,...u?{opacity:s.opacity}:{}}}:{}});if(this.clarity.set(f,m),t.fill=m.fill,c)this.keepTuned(d);return{clear:m.clear,path:d,opacity:m.opacity,touched:u}}keepTuned(t){this.tunedFiles.push(t);while(this.tunedFiles.length>o8){let e=this.tunedFiles.findIndex((n)=>n!==this.view.shown?.path&&n!==t);if(e===-1)return;Ul(this.tunedFiles.splice(e,1)[0],{force:!0})}}async present(){let t=this.current;if(!t)return;let e=t.using,{coloring:n}=this.view,r=this.view.tune.opacity,{clear:i,path:o,opacity:s,touched:a}=await this.render(t,e);if(this.current!==t||t.using!==e||this.view.coloring!==n)return;if(!a&&this.view.tune.opacity===r)this.view.untuned.opacity=s,this.view.tune.opacity=s;if(this.view.tuning&&t.fill)this.view.tuning.fill=t.fill;this.view.shown={id:t.key,clear:i,bytes:t.size,path:o,cut:t.cut?e==="cut"?"on":"off":t.failed?"failed":"none"}}reveal(){let t=this.view;if(this.presenting){this.again=!0;return}this.presenting=!0,t.preparing=this.current?.key,this.paint.flush(),this.present().catch((e)=>{t.error=e instanceof Error?e.message:String(e)}).finally(()=>{if(this.presenting=!1,this.again){this.again=!1,this.reveal();return}if(t.preparing===this.current?.key)t.preparing=void 0;this.paint.draw()})}async install(){let t=this.view,e=t.tiles[t.focus],n=this.current;if(!e||n?.key!==e.key||t.preparing!==void 0||t.shown?.id!==e.key)return;t.installing=e.key,t.error=void 0,this.paint.flush();let r=q3(t.tune,t.untuned),i=this.posts.get(n.key)?.post;try{await this.renders.run({job:"backdrop",from:n.using==="cut"?n.cut:n.path,source:n.path,home:this.home,colors:this.entry,tone:this.tone,origin:{site:n.site.key,id:n.id,ext:n.ext,from:`${n.site.name} ${n.id} ${n.site.pageUrl(n.id)}`,artist:i?.named.artist??[],source:Bs(i?.source??"")},width:this.cols*this.cell.w,height:this.rows*this.cell.h,blur:this.blurring,coloring:t.coloring,...r?{tune:r,aligns:ji(W(this.home).terminals),user:B3()}:{}}),this.kept.owned(n.site,n.id,i?.owner??""),Te(this.home),this.holds();let{size:o,at:s,opacity:a}=t.tune,c=r?` · ${o==="fill"?"fill":`${o}%`} · ${Ut[s-1]} · ${a.toFixed(2)}`:"",u=i?.named.artist.length?`${i.named.artist.join(", ")} · `:"";t.saved={text:`Background · ${this.entry.name} ← ${u}${n.site.name} ${n.id}${c}`,key:e.key},t.installed.push(e.key),this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,t.mode="grid"}catch(o){t.error=o instanceof Error?o.message:String(o)}t.installing=void 0,this.paint.draw()}}async function nE(t,e,n){let r=new Kp(t,he(t),e,e.booru??"",n);if(await r.run(),Pi(process.env))process.stdout.write(Ni(""));return{saved:r.saved,installs:r.installs}}async function rE(t){let e=Q(),n=he(e),r=Tr(n.palettes,t);if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error("needs a terminal");let i=new Kp(e,n,r,r.booru??""),o=await i.run();if(i.saved&&o!==0)return process.stderr.write(`${i.saved}
711
- `),0;return o}var Ss=50;function l8(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi}}function iE(t,e,n){let r=$s(n),i=cn(l8(e)),o=a$(t).map((h)=>h.toLowerCase()),s=wp(i,e.signatureSlots,e.waived??[]),a=Un(ur(i,e.signatureSlots,e.waived??[])).length,c=(h)=>i[h]?.toLowerCase()!==o[h],u=i.filter((h,m)=>c(m)).length,l=(h)=>{let m=i[h],g=e.signatureSlots.includes(An[h])?"◆":n?"■":" ",b=n?`${r.fg(m)}${g}\x1B[39m`:g,w=s.has(h)?r.bold("✗"):c(h)?n?"\x1B[33m●\x1B[39m":"●":" ";return` ${b} ${Nl(Et(m))}${w}`},d=a===0?"passes the gate":`${a} ${a===1?"miss":"misses"} in the gate`,f=[` ${yt(`${r.dim("Palette")}${u>0?r.dim(` ${u} tuned`):""}`,r.dim(d),Ss-2)}`];f.push(r.dim(Xt(Ss,"top",[[2," Base "]])));for(let h=0;h<A.length;h++)f.push(dn(r,` ${A[h].padEnd(10)}${l(h)}`,Ss));return f.push(r.dim(Xt(Ss,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]]))),ln.forEach((h,m)=>{f.push(dn(r,` ${h.padEnd(10)}${l(A.length+m)}${l(A.length+8+m)}`,Ss))}),f.push(r.dim(Xt(Ss,"bottom"))),f}function ql(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function sE(t,e){if(t.includes("/"))return t;let n=Oi(e,!1),r=n.filter((o)=>Bo(o.dir).some((s)=>s.slug===t)),[i]=r.length===1?r:n.length===1?n:[];return i?`${i.id}/${t}`:t}function h8(t,e,n){let r=W(t),i=n.filter((o)=>!r.palettes.includes(o));if(i.length>0)Ke(t,e,r,{...r,palettes:[...r.palettes,...i]});else if(n.some((o)=>r.palettes.includes(o)))qt(t,e,r);return{state:r,fresh:i}}function m8(t){let e=Math.max(0,...t.map((n)=>n.slot.length));return t.map((n)=>` ${n.slot.padEnd(e)} ${n.from} → ${n.to} ${n.rule}`)}function aE(t,e,n){let r=Uf(e),i=Qe(En(r.name,Bf(r),n.palettes,!0)),o=Rt(t,n,!1).palettes.find((s)=>s.name===i.name);if(o&&JSON.stringify(o)!==JSON.stringify(i))throw Error(`${i.name} is already in ${lt(i.name)??"the ttheme catalog"} and differs — \`ttheme add ${i.name}\` wears that one`);if(!o)tu(t,[...Jn(t),i]);return i.name}var p8=["background","foreground","cursor"];function cE(t){try{t();return}catch(e){return e.message}}function uE(t,e,n){return Rt(t,e,!1).palettes.filter((r)=>r.name!==n).map((r)=>({name:r.name,colors:{background:r.background,foreground:r.foreground,cursor:r.cursor,selection:r.selection,ansi:r.ansi}}))}function lE(t,e){let n=new Set(fe(t,e).map((r)=>r.key));return{count:()=>fe(t,e).length,added:()=>fe(t,e).filter((r)=>!n.has(r.key)).length,fresh:()=>(Zu(t,e)??[]).filter((r)=>!n.has(se(r))),discard:()=>{let r=fe(t,e).filter((i)=>!n.has(i.key));for(let i of r)No(t,e,i.key),Fc(t,e);if(r.length>0)Te(t)}}}function g8(...t){let e=new Map;for(let n of t.flatMap((r)=>r??[]))e.set(se(n),n);return e.size>0?[...e.values()]:void 0}function dE(t,e,n,r){if(!Ko(process.env,W(t).terminals))return;return async(i,o)=>{let s=Qe(En(e,r(i),n.palettes)),{saved:a}=await nE(t,s,o);return{...a?{note:a}:{},count:fe(t,e).length}}}async function Dp(t,e=!1){let n=process.stdout.isTTY===!0,r=Q(),i=W(r).terminals,o=n?Ol.of(process.env,r,t.name,i):void 0,s=n?Ll.of(process.env,i):void 0;return _S(t,{color:!Pt(),...o?{backdrop:o}:{},...s?{layer:s}:{},...e?{hosted:!0}:{}})}async function fE(t,e,n){let r=Q(),i=dt(r),o=await h1(r,n),s=t.includes("/")?t:`${o.id}/${t}`,a=xe(s);if(a)throw Error(`${s} ${a}`);if(lt(s)!==o.id)throw Error(`palettes in ${o.dir} are named ${o.id}/<palette> — ${s} belongs elsewhere`);let c=Ff(r,s);if(oc(c))throw Error(`${s} already exists — \`ttheme edit ${s}\` changes it`);let u=e?Tr(Rt(r,i).palettes,e):void 0;if(!ql())throw Error("new opens the palette editor — run it in a terminal");let l=u&&(lt(u.name)?u.base:u.default?void 0:u.name),d=u?_f(u,s,`kept from ${u.name}`):void 0,f=u?Zu(r,u.name)??u.pictures:void 0,{base:h,ansiSource:m,group:g,...b}=d??{name:s,signature:p8,...ei(za)},w=lE(r,s),k=({colors:M,signature:I})=>{let O=g8(f,w.fresh());return Bf({...b,...M,signature:I,...l?{base:l}:{},...O?{pictures:O}:{}})},v=await Dp({title:"New palette",name:s,...d?{colors:d}:{},signature:b.signature,...b.waive?{waive:b.waive}:{},palettes:uE(r,i,s),pictures:w.count(),find:dE(r,s,i,k),exports:bE(r,s,i,k),decode:qp,check:(M)=>cE(()=>En(s,k(M),i.palettes))});if(!v){w.discard(),console.log("Nothing made");return}d8(f8(c),{recursive:!0}),F(c,k(v));let{state:S}=h8(r,i,[s]);console.log(` + ${s}${u?` from ${u.name}`:""}
712
- ${c}`),await nr(r,Rt(r,i).palettes.filter((M)=>M.name===s),S.terminals),console.log(`
713
- \`ttheme use ${s}\` wears it · \`ttheme edit ${s}\` opens it again`)}function b8(t,e,n){let r=Qe(En(t,e,n.palettes));return ia(r).length>0?ea(r).filter((i)=>i.startsWith(" ✗")):[]}async function hE(t){let e=Q(),n=dt(e),r=W(e),i=Rt(e,n,!1),o=sE(t,e),s=Dl(e,o),a=s&&oc(s)?o:i.palettes.some((w)=>w.name===t)?t:o,c=Dl(e,a);if(!c||!oc(c)){let w=i.palettes.some((k)=>k.name===a);throw Error(w?`${a} is not one of yours — \`ttheme new <name> --from ${a}\` makes your own copy`:`no palette of yours called ${a} — \`ttheme new\` makes one`)}if(!ql())throw Error("edit opens the palette editor — run it in a terminal");let u=zp(c,"utf8"),l;try{l=En(a,u,n.palettes)}catch(w){throw Error(`${c} cannot be read — ${w.message}`)}let d=lE(e,a),f=new Set((l.pictures??[]).map((w)=>se(w))),h=({colors:w,signature:k})=>e$(i$(Wf(u,w),k),d.fresh().filter((v)=>!f.has(se(v)))),m=await Dp({title:"Edit palette",name:a,colors:ta(l),signature:l.signatureSlots,waive:l.waive,palettes:uE(e,n,a),pictures:d.count(),find:dE(e,a,n,h),exports:bE(e,a,n,h),decode:qp,check:(w)=>cE(()=>En(a,h(w),n.palettes))});if(!m){d.discard(),console.log("Nothing changed");return}let g=h(m);if(g===u){console.log(d.added()>0?`Kept the pictures you added to ${a}`:"Nothing changed");return}if(F(c,g),r.palettes.includes(a))qt(e,n,r);console.log(`Saved ${a}${r.palettes.includes(a)?" — new tabs and `ttheme use` wear it":` — \`ttheme add ${a}\` installs it`}`);let b=b8(a,g,n);if(b.length>0)console.log(`
692
+ }`;async function Qv(){if(gp())return;if(process.platform==="darwin"){let[t="",e=""]=(await Pn("osascript",["-l","JavaScript","-e",KL])).stdout.trim().split("\t");return{stamp:t,picture:e==="picture"}}if(process.platform==="linux"&&!Vv()){let e=Boolean(process.env.WAYLAND_DISPLAY)?(await Pn("wl-paste",["--list-types"])).stdout:(await Pn("xclip",["-selection","clipboard","-t","TARGETS","-o"])).stdout;return{stamp:e,picture:/^image\//m.test(e)}}return}function El(t){return t.length>8&&/^(?:\/|~\/|file:|https?:)/.test(t)}var Ja=(t)=>Buffer.from(t).toString("base64"),hp=(t)=>Buffer.from(t,"base64");function Uv(t,e){return e.find((n)=>t.includes(n))}class bp{clipboard=!1;drops=!1;reading;offered=[];dropping;pw=Ja(Wv("sha1").update(`${process.pid}:${Date.now()}`).digest("hex"));send;deliver;constructor(t,e){this.send=t,this.deliver=e}start(){let t="";if(this.clipboard)t+="\x1B[?5522h";if(this.drops)t+=`\x1B]72;t=a;${fp.join(" ")}\x1B\\`;this.send(t)}stop(){this.send(`${this.clipboard?"\x1B[?5522l":""}${this.drops?"\x1B]72;t=A\x1B\\":""}`)}ask(){this.reading={mime:".",chunks:[],pw:"",listing:!0},this.send(`\x1B]5522;type=read:name=${Ja("ttheme")}:pw=${this.pw};${Ja(".")}\x1B\\`)}take(t){if(t.code==="5522")this.clip(t.meta,t.payload);else if(t.code==="72")this.drop(t.meta,t.payload)}clip(t,e){if(t.type!=="read")return;let n=t.status??"";if(n==="OK"){if(this.reading??={mime:".",chunks:[],pw:t.pw??"",listing:!0},t.pw)this.reading.pw=t.pw;return}let r=this.reading;if(!r)return;if(n==="DATA"){if(r.mime=t.mime?hp(t.mime).toString("utf8"):r.mime,e)r.chunks.push(hp(e));return}if(this.reading=void 0,n!=="DONE"){this.deliver({kind:"error",message:n==="EPERM"?"The clipboard read was not allowed":`The terminal answered ${n}`});return}let i=Buffer.concat(r.chunks);if(r.listing){let o=i.toString("utf8").split(/\s+/).filter(Boolean),s=Uv(o,[...mp,...jL]);if(!s){this.deliver({kind:"text",text:""});return}let a=r.pw||this.pw,c=r.pw?"Paste event":"ttheme";this.reading={mime:s,chunks:[],pw:a,listing:!1},this.send(`\x1B]5522;type=read:name=${Ja(c)}:pw=${a};${Ja(s)}\x1B\\`);return}this.deliver(r.mime.startsWith("image/")?{kind:"bytes",bytes:new Uint8Array(i),source:"clipboard"}:{kind:"text",text:i.toString("utf8")})}drop(t,e){let n=t.t??"";if(n==="m"){if(t.x==="-1"){this.offered=[];return}if(e){this.offered=e.split(" ").filter(Boolean);let a=fp.filter((c)=>this.offered.includes(c));this.send(`\x1B]72;t=m:o=${a.length>0?1:0};${a.join(" ")}\x1B\\`)}return}if(n==="M"){let a=e?e.split(" ").filter(Boolean):this.offered,c=Uv(a,fp);if(!c){this.send("\x1B]72;t=r:o=0\x1B\\");return}this.dropping={mimes:a,index:a.indexOf(c)+1,chunks:[]},this.send(`\x1B]72;t=r:x=${this.dropping.index}\x1B\\`);return}let r=this.dropping;if(!r)return;if(n==="R"){this.dropping=void 0,this.send("\x1B]72;t=r:o=0\x1B\\"),this.deliver({kind:"error",message:`The drop failed: ${e.split(":")[0]||"unknown error"}`});return}if(n!=="r"&&n!=="")return;if(e)r.chunks.push(hp(e));if(t.m==="1"||e)return;this.dropping=void 0;let i=Buffer.concat(r.chunks),o=r.mimes[r.index-1]??"",s;if(o.startsWith("image/"))s={kind:"bytes",bytes:new Uint8Array(i),source:"drop"};else{let a=i.toString("utf8"),c=o==="text/uri-list"?ys(a).find((u)=>PL(u)):void 0;s=c?{kind:"bytes",bytes:new Uint8Array(Sl(c)),source:c}:{kind:"text",text:a}}this.send("\x1B]72;t=r:o=1\x1B\\"),this.deliver(s)}}var wp=5,zL=6,Xv=0.05,DL=[1,2,3,4,5,6,9,10,11,12,13,14],tS=(t,e)=>(e-t+360)%360<=180?1:-1;function Nn(t,e,n){let r=e*Math.cos(n*Math.PI/180),i=e*Math.sin(n*Math.PI/180),o=[t+0.3963377774*r+0.2158037573*i,t-0.1055613458*r-0.0638541728*i,t-0.0894841775*r-1.291485548*i].map((l)=>l**3),[s,a,c]=o,u=[4.0767416621*s-3.3077115913*a+0.2309699292*c,-1.2684380046*s+2.6097574011*a-0.3413193965*c,-0.0041960863*s-0.7034186147*a+1.707614701*c];if(u.some((l)=>l<-0.0001||l>1.0001))return;return u.map((l)=>{let d=Math.min(1,Math.max(0,l));return Math.round(255*(d<=0.0031308?12.92*d:1.055*d**0.4166666666666667-0.055))})}function vs(t,e,n){if(Nn(t,n,e)!==void 0)return n;let r=0,i=n;for(let o=0;o<24;o++){let s=(r+i)/2;if(Nn(t,s,e)===void 0)i=s;else r=s}return r}function ze(t,e,n){return`#${(Nn(t,vs(t,n,e),n)??[0,0,0]).map((i)=>i.toString(16).padStart(2,"0")).join("")}`}function qL(t,e){let{l:n,c:r}=Mt(t);return ze(n,r,(e+360)%360)}function YL(t,e,n){let{l:r,c:i,h:o}=Mt(t),s=St(e)<0.18,a=(l)=>ze(s?r+(1-r)*l:r*(1-l),i,o);if($t(a(1),e)<n+Xv)return a(1);let c=0,u=1;for(let l=0;l<30;l++){let d=(c+u)/2;if($t(a(d),e)>=n+Xv)u=d;else c=d}return a(u)}function JL(t,e){let{l:n,c:r,h:i}=Mt(t),o=0,s=n;for(let a=0;a<30;a++){let c=(o+s)/2;if(St(ze(c,r,i))<=e-0.005)o=c;else s=c}return ze(o,r,i)}function VL(t,e,n){let r=ke[e],[i,o]=[Mt(t[e]),Mt(t[e+8])],s=(l,d)=>n.has(l)?[d]:Array.from({length:2*r.width+1},(f,h)=>(r.center-r.width+h+360)%360),a=(l,d,f)=>fr.every((h)=>{let m=(l>8?8:0)+h;if(m===l)return!0;let p=Mt(t[m]);return p.c<li||ye(p.h,d)>=po+1||Math.abs(p.l-f)>=go}),c,u=Number.POSITIVE_INFINITY;for(let l of s(e,i.h)){if(!n.has(e)&&!a(e,l,i.l))continue;for(let d of s(e+8,o.h)){if(ye(l,d)>Ye-wp||!n.has(e+8)&&!a(e+8,d,o.l))continue;let f=ye(l,i.h)+ye(d,o.h);if(f<u)u=f,c=[l,d]}}return c}class eS{theme;moves=[];constructor(t){this.theme={...t,ansi:[...t.ansi]}}set(t,e,n){let r=this.get(t);if(n===r)return;if(this.moves.push({slot:t,rule:e,from:r,to:n}),t==="foreground")this.theme.foreground=n;else if(t==="selection")this.theme.selectionBackground=n;else this.theme.ansi[Number(t.slice(4))]=n}get(t){if(t==="foreground")return this.theme.foreground;if(t==="selection")return this.theme.selectionBackground;return this.theme.ansi[Number(t.slice(4))]}rehue(t,e,n){this.set(`ansi${t}`,e,qL(this.theme.ansi[t],n))}roles(){let t=new Set(this.theme.signatureSlots);for(let{slot:n,hue:r}of hr(this.theme)){let i=ke[mn(n)];this.rehue(n,"ansi-role",i.center+tS(i.center,r)*(i.width-wp))}for(let{normal:n,gap:r}of Bn(this.theme)){if(r<=Ye)continue;let[i,o]=t.has(`ansi${n+8}`)?[n+8,n]:[n,n+8],s=Mt(this.theme.ansi[i]).h,a=Mt(this.theme.ansi[o]).h;this.rehue(o,"bright-follows",s+tS(s,a)*(Ye-wp))}let e=bo(this.theme);for(let[n,r]of Gn(this.theme)){let i=mn(e.has(r)?n:r),o=VL(this.theme.ansi,i,e);if(o===void 0)continue;this.rehue(i,"distinct",o[0]),this.rehue(i+8,"distinct",o[1])}}readability(){let t=new Set(this.theme.waive),{background:e}=this.theme,n=(r,i,o,s=e)=>{if(t.has(r))return;for(let a of i)if($t(this.get(a),s)<o)this.set(a,r,YL(this.get(a),s,o))};if(n("foreground",["foreground"],7),n("accents",DL.map((r)=>`ansi${r}`),3),n("light-ansi",["ansi7","ansi15"],7),n("ansi8-visible",["ansi8"],1.6),!t.has("ansi0-dark")&&St(this.get("ansi0"))>0.15)this.set("ansi0","ansi0-dark",JL(this.get("ansi0"),0.15));n("selection",["selection"],7,this.theme.foreground)}net(){return[...new Set(this.moves.map((t)=>t.slot))].flatMap((t)=>{let e=this.moves.filter((i)=>i.slot===t),n=e[0].from,r=this.get(t);return n===r?[]:[{slot:t,rule:[...new Set(e.map((i)=>i.rule))].join(", "),from:n,to:r}]})}}function Ml(t){let e=new eS(t);for(let n=0;n<zL;n++)if(e.readability(),e.roles(),Un(e.theme).length===0)break;return{theme:e.theme,moves:e.net(),left:Un(e.theme)}}var Ji=[{key:"background",label:"Background",min:0,max:0.5,step:0.01,digits:2},{key:"foreground",label:"Foreground",min:0.5,max:1,step:0.01,digits:2},{key:"hue",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0},{key:"tint",label:"Tint",min:0,max:0.1,step:0.005,digits:3},{key:"lightness",label:"Accent lightness",min:0.4,max:0.95,step:0.01,digits:2},{key:"chroma",label:"Accent chroma",min:0,max:0.3,step:0.005,digits:3},{key:"brights",label:"Brights",min:-0.2,max:0.2,step:0.01,digits:2}],Va={background:0.21,foreground:0.88,hue:265,tint:0.02,lightness:0.72,chroma:0.12,brights:0.06},nS=(t,e,n)=>Math.min(n,Math.max(e,t));function $p(t,e,n){let r=t[e.key]+e.step*n,i=e.wraps?(r%e.max+e.max)%e.max:nS(r,e.min,e.max);return{...t,[e.key]:Math.round(i*1e4)/1e4}}function ni(t){let e=(r,i,o)=>ze(nS(r,0,1),i,o),n=Array.from({length:16},()=>"#000000");n[0]=e(t.background+0.06,t.tint,t.hue),n[8]=e(t.background+0.25,t.tint,t.hue),n[7]=e(t.foreground-0.06,t.tint/2,t.hue),n[15]=e(t.foreground+0.06,t.tint/2,t.hue);for(let r of fr){let i=ke[r].center;n[r]=e(t.lightness,t.chroma,i),n[r+8]=e(t.lightness+t.brights,t.chroma,i)}return{background:e(t.background,t.tint,t.hue),foreground:e(t.foreground,t.tint/2,t.hue),cursor:e(t.lightness+t.brights,Math.max(t.chroma,0.08),t.hue),selection:e(t.background+0.1,t.tint*2,t.hue),ansi:n}}var An=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],A=["Background","Foreground","Cursor","Selection"],un=["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"],ZL=["Behind every cell","Plain text","The cursor block","Selected text","Text on colored bars, dark shades","Errors, deleted lines, failed tests","Success, added lines, prompts","Warnings, commit hashes, skipped tests","Directories, info, keywords","Keywords, branches, pictures in ls","Links, diff hunks, types","Light shades, text in some programs","Comments, muted text, suggestions"],sr=A.length+un.length,cn=[{key:"l",label:"Lightness",min:0,max:1,step:0.01,digits:2},{key:"c",label:"Chroma",min:0,max:0.37,step:0.005,digits:3},{key:"h",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0}],rS=5,QL=5,Qt=cn.length,Ss=["this","pair","normals","brights","accents"],xl=[1,2,3,4,5,6,9,10,11,12,13,14],iS=xl.filter((t)=>t<8).map((t)=>A.length+t),oS=xl.filter((t)=>t>8).map((t)=>A.length+t);function kp(t,e){let n=e-A.length;if(n<0||t==="this")return[e];if(t==="pair")return[A.length+n%8,A.length+8+n%8];let r=t==="normals"?iS:t==="brights"?oS:[...iS,...oS];return r.includes(e)?r:[e]}function XL(){return Array.from({length:sr},(t,e)=>e<A.length?[e]:[e,e+8]).flat()}function tF(t){let e=t.trim();return/^https?:\/\/\S+$/i.test(e)||ys(e).length>0}function an(t){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi]}function Ut(t){let[e,n,r,i,...o]=t;return{background:e,foreground:n,cursor:r,selection:i,ansi:o}}function He(t){if(t<A.length)return{name:A[t],about:An[t]};let e=t-A.length,n=un[e%8];return e<8?{name:n,about:`ANSI ${e}`}:{name:`Bright ${n.toLowerCase()}`,about:`ANSI ${e}`}}function uS(t){let e=t-A.length;if(e>=9&&e<=15)return`Bold or bright ${un[e-8].toLowerCase()} text`;return ZL[t]}var Vi=(t,e,n)=>Math.min(n,Math.max(e,t));function sS(t){return t.length===1?t.toLowerCase():t}function eF(t){return Vi(Math.round(t),0,255).toString(16).padStart(2,"0")}function aS(t){let e=t.trim().toLowerCase(),n=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/.exec(e);if(n){let o=n[1];return`#${o.length===3?[...o].map((s)=>s+s).join(""):o}`}let r=/^rgb\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*\)$/.exec(e);if(r)return`#${r.slice(1,4).map((o)=>eF(Number(o))).join("")}`;let i=/^oklch\(\s*([\d.]+)(%?)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:deg|°)?\s*\)$/.exec(e);if(i){let o=Number(i[1])/(i[2]?100:1);return ze(Vi(o,0,1),Number(i[3]),Number(i[4])%360)}return}function Zi(t){let e=ve.find((n)=>n.rule===t);return e?.min??e?.max??0}function ar(t,e,n){let r=Ut(t);return{name:"draft",background:r.background,foreground:r.foreground,selectionBackground:r.selection,ansi:r.ansi,waive:n,signatureSlots:e}}function nF(t,e){let n=t-A.length,r=t<=1?"foreground":t===3?"selection":n===7||n===15?"light-ansi":n===8?"ansi8-visible":xl.includes(n)?"accents":void 0;return{against:t===0||t===3?1:0,floor:r===void 0||e.includes(r)?void 0:Zi(r)}}function Ep(t,e,n,r){let i=ar(t,e,n),{background:o,foreground:s,selection:a,ansi:c}=Ut(t),u=(l,d,f)=>$t(d,f)<Zi(r)?[l]:[];if(r==="foreground")return $t(s,o)<Zi(r)?[1,0]:[];if(r==="selection")return $t(s,a)<Zi(r)?[3,1]:[];if(r==="accents")return xl.flatMap((l)=>u(A.length+l,c[l],o));if(r==="light-ansi")return[7,15].flatMap((l)=>u(A.length+l,c[l],o));if(r==="ansi8-visible")return u(A.length+8,c[8],o);if(r==="ansi0-dark")return St(c[0])>Zi(r)?[A.length]:[];if(r==="ansi-role")return hr(i).map(({slot:l})=>A.length+l);if(r==="bright-follows")return Bn(i).filter(({gap:l})=>l>Ye).flatMap(({normal:l})=>[A.length+l,A.length+l+8]);if(r==="distinct")return Gn(i).flatMap(([l,d])=>[A.length+l,A.length+d]);return[]}function Mp(t,e,n){return new Set(An.flatMap((r,i)=>xp(t,e,n,i).some((o)=>o.ok===!1)?[i]:[]))}function or(t,e,n,r,i){let o=$t(t,e),s=Zi(n);if(i.includes(n))return{ok:void 0,text:`${r} ${o.toFixed(2)}:1 · waived`};return{ok:o>=s,text:`${r} ${o.toFixed(2)}:1 · ≥ ${s}`}}function xp(t,e,n,r){let i=Ut(t),o=ar(t,e,n);if(r===0){let $=[1,2,3,4,5,6,9,10,11,12,13,14].reduce((k,v)=>$t(i.ansi[k],i.background)<=$t(i.ansi[v],i.background)?k:v);return[or(i.foreground,i.background,"foreground","Foreground on it",n),or(i.ansi[$],i.background,"accents",`Weakest, ANSI ${$},`,n),or(i.ansi[8],i.background,"ansi8-visible","ANSI 8 on it",n)]}if(r===1)return[or(i.foreground,i.background,"foreground","On background",n),or(i.foreground,i.selection,"selection","On the selection",n)];if(r===2)return[{ok:void 0,text:`On background ${$t(i.cursor,i.background).toFixed(2)}:1`}];if(r===3)return[or(i.foreground,i.selection,"selection","Foreground on it",n)];let s=r-A.length,a=i.ansi[s];if(s===0){let b=St(a),$=Zi("ansi0-dark");return[n.includes("ansi0-dark")?{ok:void 0,text:`Luminance ${b.toFixed(3)} · waived`}:{ok:b<=$,text:`Luminance ${b.toFixed(3)} · ≤ ${$}`}]}if(s===7||s===15)return[or(a,i.background,"light-ansi","On background",n)];if(s===8)return[or(a,i.background,"ansi8-visible","On background",n)];let c=[or(a,i.background,"accents","On background",n)],u=Mt(a),l=mn(s),d=ke[l],f=`${d.name} ${d.center}±${d.width}°`;if(u.c<li)c.push({ok:void 0,text:"Too grey to have a hue"});else if(bo(o).has(s))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · a signature, free of ${f}`});else if(n.includes("ansi-role"))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · ${f} waived`});else{let b=ye(u.h,d.center)-d.width;c.push(b>0?{ok:!1,text:`Hue ${u.h.toFixed(0)}° · ${b.toFixed(0)}° outside ${f}`}:{ok:!0,text:`Hue ${u.h.toFixed(0)}° · in ${f}`})}let h=s<8?s+8:s-8,m=Bn(o).find((b)=>b.normal===l);if(m)c.push(n.includes("bright-follows")?{ok:void 0,text:`${m.gap.toFixed(0)}° from ANSI ${h} · waived`}:{ok:m.gap<=Ye,text:`${m.gap.toFixed(0)}° from ANSI ${h} · ≤ ${Ye}°`});let p=Gn(o).flatMap(([b,$])=>b===s?[$]:$===s?[b]:[]);if(p.length>0&&!n.includes("distinct"))c.push({ok:!1,text:`Reads as ANSI ${p.join(", ")} · within ${po}° and ${go} lightness`});return c}function Op(t,e,n){let r=pn(ar(t,e,n));return ve.map((i,o)=>{let s=r[o],a=n.includes(i.rule),c=a||Number.isNaN(s)?void 0:(i.min===void 0||s>=i.min)&&(i.max===void 0||s<=i.max);return{ok:c,label:i.label,value:Number.isNaN(s)?"—":Number.isInteger(s)?String(s):s.toFixed(2),bound:a?"waived":i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",slots:c===!1?Ep(t,e,n,i.rule):[]}})}var rF=new Set(["reset","reset-all","hex","paste","fix","open","tune","sig","follow"]),lS=cn[1].max;function yp(t){let[e,n,r]=nt(t);return e===n&&n===r}function vp(t,e){return Math.floor(vs(t,e,lS)*1e4)/1e4}function Sp(t,e){return{l:e.l-t.l,c:e.c-t.c,h:((e.h-t.h)%360+540)%360-180}}function cS(t,e){let n=t.wraps?t.max-t.step:t.max;return Math.min(n,Math.round((t.min+(t.max-t.min)*e)/t.step)*t.step)}class Ip{mode;seeds=Va;field=0;list;lch;start;original;signature;row=0;col=0;channel=0;scope="this";view="slot";scene=0;typing;overlay;quitting=!1;compare=!1;notice;filter="";pick=0;result;wants;pictures;inspect=!1;spot;format="hex";pic=!0;menu;entry=0;changedOnly=!1;where=!1;size;copied;startPictures;options;fresh;tone;startSignature;seeded=!1;tuneFrom;holds=new Map;clip;history=[];future=[];lastEdit;links=new Map;unlinked=new Set;offsets=new Map;constructor(t){this.options=t,this.tone=t.tone===!0,this.fresh=t.colors===void 0,this.mode=this.fresh?"seeds":"list",this.list=an(t.colors??ni(this.seeds)),this.lch=this.lchs(),this.start=[...this.list],this.original=t.original?an(t.original):[...this.list],this.signature=[...t.signature],this.startSignature=[...t.signature],this.pictures=t.pictures??0,this.startPictures=this.pictures,this.chain(this.original)}chain(t){this.links=new Map,this.unlinked=new Set,this.offsets=new Map;for(let e=0;e<8;e++){let n=A.length+e,r=n+8,i=this.lchOf(t[n]),o=this.lchOf(t[r]);if(i.c>=li&&o.c>=li&&ye(i.h,o.h)<=3)this.links.set(r,n),this.offsets.set(r,Sp(i,o))}}pair(t){if(t<A.length)return;let e=A.length+(t-A.length)%8,n=e+8;return{normal:e,bright:n,on:this.linkOf(n)!==void 0,lift:this.lch[n].l-this.lch[e].l}}linkOf(t){let e=this.links.get(t);return e!==void 0&&!this.unlinked.has(t)?e:void 0}changed(t){return this.list[t]!==this.original[t]}visible(t){return!this.changedOnly||this.changed(t)}changes(){return this.list.filter((t,e)=>this.changed(e)).length}slotAt(t,e){return t<A.length?t:t+(e===1?8:0)}get added(){return Math.max(0,this.pictures-this.startPictures)}found(t){this.pictures=t.count,this.notice=t.note}get waive(){return this.options.waive??[]}get held(){return this.holds.get(this.slot())}colors(){return Ut(this.list)}edited(){return{colors:this.colors(),signature:[...this.signature]}}shown(){return this.compare?this.start:this.list}slot(){return this.row<A.length?this.row:this.row+(this.col===1?8:0)}dirty(){return this.seeded||this.pictures!==this.startPictures||this.list.some((t,e)=>t!==this.start[e])||this.signature.join()!==this.startSignature.join()}misses(){return Mp(this.list,this.signature,this.waive)}failing(){return Un(ar(this.list,this.signature,this.waive))}choices(){let t=this.filter.toLowerCase();return(this.options.palettes??[]).filter((e)=>e.name.toLowerCase().includes(t))}paste(t){if(this.notice=void 0,this.overlay==="open"){this.filter+=t.replace(/\s+/g,"").toLowerCase(),this.pick=0;return}if(this.overlay)return;if(!this.tone&&t.trim()===""){this.findPictures({clipboard:!0});return}if(!this.tone&&tF(t)){this.findPictures({paste:t});return}if(this.mode==="seeds")return;let e=this.options.decode?.(t);if(e){this.remember("open"),this.list=an(e),this.lch=this.lchs(),this.chain(this.list),this.notice="Took the colors of the share code";return}let n=aS(t);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"paste")}press(t){if(this.notice=void 0,t==="ctrl-c"){this.result="cancelled";return}if(this.quitting){if(this.quitting=!1,t==="y"||t==="Y")this.result="cancelled";return}if(this.typing!==void 0){this.type(t);return}if(this.overlay==="keys"){this.overlay=void 0;return}if(this.overlay==="open"){this.openKey(t);return}if(this.menu){this.menuKey(t);return}if(t==="?"){this.overlay="keys";return}if(this.inspect&&this.mode==="list"&&this.inspectKey(t))return;if(this.tone&&(t==="ctrl-v"||t==="alt-v"||t==="p"))return;if(t==="ctrl-v"||t==="alt-v"){this.findPictures({clipboard:!0});return}if(t==="p"&&this.mode!=="tune"){this.findPictures();return}if(t===" "&&this.mode!=="seeds"){this.compare=!this.compare;return}if(this.compare&&t==="esc"){this.compare=!1;return}if(t==="g"&&this.mode!=="seeds"){this.view=this.view==="slot"?"relations":"slot";return}let e=t==="j"?"down":t==="k"?"up":t;if(this.mode==="seeds")this.seedKey(e);else if(this.mode==="tune")this.tuneKey(e);else this.listKey(e)}select(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.mode==="tune"){if(t===this.slot())return;this.tuneKey("enter")}this.notice=void 0,this.seat(t),this.lastEdit=void 0}seat(t){if(this.row=t<A.length?t:A.length+(t-A.length)%8,t>=A.length)this.col=t-A.length>=8?1:0}grip(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return!1;if(this.notice=void 0,this.mode==="list")this.tune();return this.channel=t,!0}slide(t,e){if(!this.grip(t))return;let n=Math.min(1,Math.max(0,e));if(t===Qt){this.reach(21**n);return}this.put(cS(cn[t],n))}sow(t,e){let n=Ji[t];if(this.mode!=="seeds"||this.overlay||this.quitting||!n)return;this.notice=void 0,this.field=t;let r=Math.min(1,Math.max(0,e));this.seeds=$p({...this.seeds,[n.key]:cS(n,r)},n,0),this.list=an(ni(this.seeds)),this.lch=this.lchs()}scroll(t){let e=(n,r)=>Math.min(r,Math.max(0,n+t));if(this.overlay==="open")this.pick=e(this.pick,Math.max(0,this.choices().length-1));else if(this.overlay||this.quitting||this.typing!==void 0)return;else if(this.mode==="seeds")this.field=e(this.field,Ji.length-1);else if(this.mode==="tune")this.channel=0,this.step(-t);else this.row=e(this.row,sr-1),this.lastEdit=void 0}lchOf(t){let e=Mt(t);return yp(t)?{...e,h:this.neutralHue()}:e}lchs(){return this.list.map((t)=>this.lchOf(t))}neutralHue(){let t=[0,1,3,2].map((e)=>this.list[e]).find((e)=>!yp(e));return t?Mt(t).h:Va.hue}seedKey(t){let e=Ji.length;if(t==="up"||t==="down")this.field=(this.field+(t==="up"?e-1:1))%e;else if(t==="home"||t==="end")this.field=t==="home"?0:e-1;else if(t==="left"||t==="right"||t==="shift-left"||t==="shift-right"){let n=Ji[this.field],r=(t.endsWith("left")?-1:1)*(t.startsWith("shift")?n.wraps?10:rS:1);this.seeds=$p(this.seeds,n,r),this.list=an(ni(this.seeds)),this.lch=this.lchs()}else if(t==="enter")this.leaveSeeds();else if(t==="o")this.openPalettes();else if(t==="esc")this.leave()}leaveSeeds(){this.start=[...this.list],this.original=[...this.list],this.chain(this.original),this.seeded=!0,this.mode="list"}leave(){if(this.dirty())this.quitting=!0;else this.result="cancelled"}findPictures(t){if(!this.options.find){this.notice="Pictures need Ghostty, iTerm2 or kitty, outside tmux";return}this.wants=t?{start:t}:{}}openPalettes(){if((this.options.palettes??[]).length>0)this.overlay="open",this.pick=0;else this.notice="No other palettes to take colors from"}listKey(t){if(t==="up"||t==="down"){let e=t==="up"?-1:1;this.land(this.row+e,e),this.lastEdit=void 0}else if(t==="home"||t==="end")this.land(t==="home"?0:sr-1,t==="home"?1:-1);else if(t==="pgup"||t==="pgdn")this.land(t==="pgup"?0:A.length,1);else if(t==="left"||t==="right"){let e=t==="left"?0:1;if(this.row>=A.length&&this.visible(this.slotAt(this.row,e)))this.col=e,this.lastEdit=void 0}else if(this.builderKey(t))return;else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1;else if(t==="n"||t==="N")this.nextMiss(t==="n"?1:-1);else if(t==="enter"||t==="tab")this.tune();else if(t==="#")this.typing="";else if(t==="c")this.clip=this.list[this.slot()],this.notice=`Copied ${this.clip}`;else if(t==="v")if(this.clip)this.set(this.slot(),this.clip,"paste");else this.notice="Nothing copied yet — c copies a slot";else if(t==="r")this.set(this.slot(),this.original[this.slot()],"reset");else if(t==="R")this.remember("reset-all"),this.list=[...this.original],this.lch=this.lchs();else if(t==="=")this.follow();else if(t==="*"&&!this.tone)this.mark();else if(t==="f")this.fix();else if(t==="o"&&!this.tone)this.openPalettes();else if(t==="u")this.undo();else if(t==="ctrl-r")this.redo();else if(t==="s"||t==="ctrl-s")this.save();else if(t==="esc")this.leave()}viewport(t,e){this.size={cols:t,rows:e}}layout(){return this.size?qa(this.size.cols,this.size.rows,this.scene):void 0}get roomy(){return this.layout()!==void 0}reseat(){if(!this.visible(this.slot()))this.land(this.row,1)}rowShown(t){return this.visible(this.slotAt(t,0))||t>=A.length&&this.visible(this.slotAt(t,1))}land(t,e){for(let n=0;n<sr;n++){let r=((t+e*n)%sr+sr)%sr;if(this.rowShown(r)){if(this.row=r,r>=A.length&&!this.visible(this.slotAt(r,this.col)))this.col=1-this.col;return}}}builderKey(t){if(["i","m","w","x","I"].includes(t)&&!this.roomy)return this.notice="The builder needs a window of at least 96×28",!0;if(t==="i")this.startInspect();else if(t==="l")this.linkKey();else if(t==="m")this.changedOnly=!this.changedOnly,this.reseat(),this.notice=this.changedOnly?this.changes()>0?void 0:"Nothing changed yet":void 0;else if(t==="b")this.pic=!this.pic;else if(t==="w")this.where=!this.where;else if(t==="x"&&this.options.exports)this.menu="export",this.entry=0;else if(t==="I")this.menu="import",this.entry=0;else return!1;return!0}menuKey(t){let e=this.menu==="export"?3:2;if(t==="esc")this.menu=void 0;else if(t==="up"||t==="down"||t==="k"||t==="j")this.entry=(this.entry+(t==="up"||t==="k"?e-1:1))%e;else if(t==="enter")this.choose(this.entry)}choose(t){let e=this.menu;if(this.menu=void 0,e==="import"){if(t===0)this.openPalettes();else this.notice=this.options.decode?"Paste a tt2: share code into this window":"Share codes are not read here";return}let n=this.options.exports;if(e!=="export"||!n)return;try{let r=this.edited(),i=n.code(r);this.copied=t===0?i:t===1?`${n.command} ${i}`:n.toml(r),this.notice=`Copied ${t===0?"the share code":t===1?"the add command":"the palette file"} — paste it where you need it`}catch(r){this.notice=r instanceof Error?r.message:String(r)}}openMenu(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;this.menu=this.menu===t?void 0:t,this.entry=0}startInspect(){let t=this.layout();if(!t){this.notice="The builder needs a window of at least 96×28";return}this.inspect=!0,this.spot=Lv(t,this.slot())}toggleInspect(){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.inspect)this.inspect=!1,this.spot=void 0;else this.startInspect()}inspectKey(t){let e=this.layout();if(!e)return this.inspect=!1,!1;let r={left:"left",right:"right",up:"up",k:"up",down:"down",j:"down",tab:"next","shift-tab":"previous"}[t];if(t==="i"||t==="esc")this.inspect=!1,this.spot=void 0;else if(r)this.spot=Fv(e,$l(e,this.spot),r);else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1,this.spot=void 0;else if(t==="enter")this.jump();else return!1;return!0}point(t){if(this.mode!=="seeds"&&!this.overlay&&!this.quitting&&this.typing===void 0&&this.layout())this.inspect=!0,this.spot=t}slotsHere(){let t=this.layout();return t&&this.spot?jv(t,this.spot):void 0}jump(){let t=this.slotsHere();if(!t)return;let e=t.ground!==0?t.ground:t.text;this.inspect=!1,this.spot=void 0,this.show(e),this.select(e)}show(t){if(!this.visible(t))this.changedOnly=!1}openSlot(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;let e=this.mode==="tune"&&t===this.slot();if(this.mode==="tune")this.tuneKey("enter");if(e)return;if(this.show(t),this.select(t),this.mode==="list")this.tune()}dismiss(){if(this.mode!=="tune"||this.overlay||this.quitting)return;this.typing=void 0,this.tuneKey("enter")}plane(t,e){if(!this.grip(0))return;this.channel=0,this.put(t),this.channel=1,this.put(e)}linkKey(){let t=this.slot();if(t<A.length){this.notice="l links a bright to its normal — pick an ANSI row";return}let e=A.length+(t-A.length)%8,n=e+8,r=`${He(n).name} and ${He(e).name.toLowerCase()}`;if(this.mode!=="tune")this.remember("link");if(this.linkOf(n)!==void 0){this.unlinked.add(n),this.notice=`${r} move apart`;return}this.links.set(n,e),this.unlinked.delete(n),this.offsets.set(n,Sp(this.lch[e],this.lch[n])),this.notice=`${r} move together`}nextMiss(t){let e=XL(),n=this.misses();if(n.size===0){this.notice="The gate passes";return}let r=e.indexOf(this.slot());for(let i=1;i<=e.length;i++){let o=e[((r+t*i)%e.length+e.length)%e.length];if(n.has(o)){this.seat(o);return}}}tune(){this.remember("tune"),this.tuneFrom={list:[...this.list],lch:[...this.lch]},this.holds=new Map,this.hold(),this.mode="tune"}hold(){for(let t of this.scoped())if(!this.holds.has(t))this.holds.set(t,this.lch[t].c)}scoped(){return kp(this.scope,this.slot())}tuneKey(t){let e=this.channel===Qt;if(t==="tab"||t==="shift-tab")this.channel=e?0:Qt;else if(t==="up"||t==="down"||t==="pgup"||t==="pgdn")this.channel=0,this.step((t==="up"||t==="pgup"?1:-1)*(t.startsWith("pg")?rS:1));else if(t==="left"||t==="right"){let n=t==="left"?-1:1;if(e)this.reach(this.ratio()+n*0.1);else this.channel=1,this.step(n)}else if(t==="shift-left"||t==="shift-right"){let n=t==="shift-left"?-1:1;if(e)this.reach(this.ratio()+n*0.5);else this.channel=2,this.step(n*QL)}else if((t===","||t===".")&&!e)this.channel=2,this.step(t===","?-1:1);else if(t==="home"||t==="end")if(e)this.reach(t==="home"?this.partner().floor??1:21);else{let n=cn[this.channel];this.put(t==="home"?n.min:n.wraps?n.max-n.step:n.max)}else if(/^[0-9]$/.test(t))if(e){if(t!=="0")this.reach(Number(t))}else{let n=cn[this.channel];this.put(n.min+(n.max-n.min)*Number(t)/10)}else if(t==="a")this.rescope();else if(t==="#")this.typing="";else if(t==="l")this.linkKey();else if(t==="s"||t==="ctrl-s")this.tuneKey("enter"),this.save();else if(t==="enter"){if(this.tuneFrom&&this.list.every((n,r)=>n===this.tuneFrom?.list[r]))this.history.pop();this.endTune()}else if(t==="esc"){if(this.tuneFrom)this.list=[...this.tuneFrom.list],this.lch=[...this.tuneFrom.lch],this.history.pop();this.endTune()}}rescope(){if(this.slot()<A.length){this.notice="A base color moves alone";return}let t=Ss.indexOf(this.scope);for(let e=1;e<=Ss.length;e++){let n=Ss[(t+e)%Ss.length];if(n==="this"||kp(n,this.slot()).length>1){this.scopeTo(n);return}}}scopeTo(t){if(this.mode!=="tune"||this.typing!==void 0||this.quitting||this.slot()<A.length)return;if(t!=="this"&&kp(t,this.slot()).length<=1)return;this.scope=t,this.hold();let e=this.scoped().length;this.notice=e>1?`${e} slots move together`:"This slot moves alone"}endTune(){this.tuneFrom=void 0,this.holds=new Map,this.mode="list"}partner(){return nF(this.slot(),this.waive)}ratio(){return $t(this.list[this.slot()],this.list[this.partner().against])}origin(){let t=this.slot(),e=this.original[t];if(e===this.list[t])return;return{hex:e,lch:this.lchOf(e),ratio:$t(e,this.original[this.partner().against])}}reach(t){let e=this.slot(),n=this.list[this.partner().against],r=this.lch[e],i=this.holds.get(e)??r.c,o=(f)=>ze(f,Math.min(i,vp(f,r.h)),r.h),s=(f)=>$t(o(f),n),a=St(this.list[e])>=St(n),c=Mt(n).l,u=Math.max(1,Math.round(t*100)/100),l=a?1:0,d;if(s(l)<u)d=l,this.notice=`The ratio stops at ${s(l).toFixed(2)}:1 on this side of the color it is read against`;else{let f=c,h=l;for(let m=0;m<24;m++){let p=(f+h)/2;if(s(p)>=u)h=p;else f=p}d=h}this.place(e,d,i,r.h);for(let f=0;f<40&&d!==l&&$t(this.list[e],n)<u;f++)d=a?Math.min(1,d+0.001):Math.max(0,d-0.001),this.place(e,d,i,r.h);this.lch[e]={...this.lch[e],l:Math.round(d*1e4)/1e4}}step(t){let e=cn[this.channel],n=this.lch[this.slot()][e.key];this.put(n+e.step*t)}put(t){let e=this.slot(),n=cn[this.channel],r=n.wraps?(t%n.max+n.max)%n.max:Vi(t,n.min,n.max),i=Math.round(r*1e4)/1e4,o=this.lch[e],s=this.scoped().filter((u)=>u!==e),a=(u)=>Math.round(u*1e4)/1e4;if(n.key==="c"){let u=vp(o.l,o.h);if(i>u)this.notice=`Chroma stops at ${u.toFixed(3)}, the sRGB edge for this lightness and hue`;let l=Math.min(i,u),d=l-o.c;this.holds.set(e,l),this.place(e,o.l,l,o.h);for(let f of s){let h=this.lch[f],m=a(Vi((this.holds.get(f)??h.c)+d,0,lS));this.holds.set(f,m),this.place(f,h.l,m,h.h)}this.trail([e,...s]);return}let c=n.key==="h"?((i-o.h)%360+540)%360-180:i-o.l;if(this.place(e,n.key==="l"?i:o.l,this.holds.get(e)??o.c,n.key==="h"?i:o.h),n.key==="h"&&yp(this.list[e]))this.notice="A grey shows no hue — raise its chroma first";for(let u of s){let l=this.lch[u];this.place(u,n.key==="l"?a(Vi(l.l+c,0,1)):l.l,this.holds.get(u)??l.c,n.key==="h"?a(((l.h+c)%360+360)%360):l.h)}this.trail([e,...s])}trail(t){let e=new Set(t);for(let[n,r]of this.links){if(this.unlinked.has(n))continue;if(e.has(n)&&!e.has(r))this.unlinked.add(n);else if(e.has(r)&&!e.has(n)){let i=this.lch[r],o=this.offsets.get(n);this.place(n,Vi(i.l+o.l,0,1),Math.max(0,i.c+o.c),((i.h+o.h)%360+360)%360)}}}place(t,e,n,r){let i=Math.min(n,vp(e,r));this.lch[t]={l:e,c:i,h:r},this.list[t]=ze(e,i,r)}take(t,e){if(this.mode==="tune")this.list[this.slot()]=t,this.lch[this.slot()]=this.lchOf(t),this.holds.set(this.slot(),this.lch[this.slot()].c),this.trail([this.slot()]);else this.set(this.slot(),t,e)}type(t){let e=this.typing??"";if(t==="esc")this.typing=void 0;else if(t==="enter"){let n=aS(e);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"hex")}else{let n=Ki(e,sS(t),(r)=>/^[0-9a-z#(),.% ]$/.test(r)&&e.length<28);if(n!==void 0)this.typing=n}}openKey(t){let e=this.choices();if(t==="esc")this.overlay=void 0,this.filter="";else if(t==="up"||t==="down"){let n=Math.max(1,e.length);this.pick=(this.pick+(t==="up"?n-1:1))%n}else if(t==="home"||t==="end")this.pick=t==="home"?0:Math.max(0,e.length-1);else if(t==="enter"){let n=e[this.pick];if(!n)return;if(this.remember("open"),this.list=an(n.colors),this.lch=this.lchs(),this.chain(this.list),this.overlay=void 0,this.filter="",this.notice=`Took the colors of ${n.name}`,this.mode==="seeds")this.leaveSeeds()}else{let n=Ki(this.filter,sS(t),(r)=>/^[a-z0-9@/-]$/.test(r));if(n!==void 0)this.filter=n,this.pick=0}}remember(t){if(t!==this.lastEdit||rF.has(t))this.history.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.future=[];this.lastEdit=t}set(t,e,n){if(!le(e)||this.list[t]===e)return;this.remember(n),this.list[t]=e,this.lch[t]=this.lchOf(e),this.trail([t])}follow(){if(this.row<A.length){this.notice="= works on an ANSI row — the bright takes its normal";return}let t=this.row,e=this.row+8,n=this.lch[t];this.remember("follow"),this.place(e,Vi(n.l+0.06,0,1),n.c,n.h),this.links.set(e,t),this.unlinked.delete(e),this.offsets.set(e,Sp(n,this.lch[e])),this.seat(e),this.notice=`${He(e).name} follows ${He(t).name.toLowerCase()}`}mark(){let t=An[this.slot()];this.remember("sig");let e=this.signature.includes(t)?this.signature.filter((r)=>r!==t):[...this.signature,t],n=e.length>3?e[0]:void 0;this.signature=e.slice(-3),this.notice=this.signature.length===3?`Signature: ${this.signature.join(", ")}${n?` — ${n} dropped`:""}`:`The signature needs three slots — ${this.signature.length} marked`}fix(){let t=ar(this.list,this.signature,this.waive),{theme:e,moves:n,left:r}=Ml({...t,selectionBackground:t.selectionBackground,signatureSlots:this.signature});if(n.length===0){this.notice=Un(t).length===0?"Already passes the gate":"No color change fixes it";return}this.remember("fix");let i=an({...this.colors(),foreground:e.foreground,selection:e.selectionBackground,ansi:e.ansi}),o=this.list;this.list=i,this.lch=i.map((s,a)=>s===o[a]?this.lch[a]:this.lchOf(s)),this.notice=`Moved ${n.length} ${n.length===1?"color":"colors"}${r.length===0?" — passes the gate":" closer to the gate"}`}save(){let t=this.options.check(this.edited());if(t){this.notice=t;return}this.result="saved"}undo(){let t=this.history.pop();if(!t){this.notice="Nothing to undo";return}this.future.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.restore(t)}redo(){let t=this.future.pop();if(!t){this.notice="Nothing to redo";return}this.history.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.restore(t)}restore(t){this.list=[...t.list],this.lch=[...t.lch],this.signature=[...t.signature],this.lastEdit=void 0}}import{mkdirSync as xF,readFileSync as Ap,writeFileSync as MS}from"node:fs";import{dirname as OF}from"node:path";import{isMainThread as IF,parentPort as xS,Worker as RF}from"node:worker_threads";var iF=new Set(["comic","4koma","monochrome","greyscale","sketch","lineart","speech_bubble"]),oF=new Set(["scenery","landscape","scenic","no_humans","wide_shot","very_wide_shot"]),sF=0.04,aF=0.1,cF=0.05,uF=4096;function lF(t){return new Set(t.cutouts.split(/\s+/).map((e)=>e.replace(/^~/,"")).filter(Boolean))}function dF(t,e,n,r=0){let{site:i,post:o}=t,s=new Set(o.tags),a=[...lF(i)].some((l)=>s.has(l)),c=Math.min(o.width,o.height),u=o.width>0&&o.height>0?o.width/o.height/(e.w/e.h):1;return(o.solo?2:0)+([...iF].some((l)=>s.has(l))?-3:0)+([...oF].some((l)=>s.has(l))?-1.5:0)+2*Math.min(1,c/e.h)+(a?1.5:-Math.min(1.5,Math.abs(Math.log(u))))+(n>0?1.5*Math.log1p(Math.max(0,o.score))/Math.log1p(n):0)+2*r}function Ol(t,e,n=new Map){let r=new Map;for(let{site:i,post:o}of t)r.set(i,Math.max(r.get(i)??0,o.score));return t.map((i,o)=>({pick:i,at:o,score:dF(i,e,r.get(i.site)??0,n.get(i.post))})).sort((i,o)=>o.score-i.score||i.at-o.at).map(({pick:i})=>i)}function fS(t){let e=new Map;for(let r of t)e.set(r.site,[...e.get(r.site)??[],r]);let n=[];for(let r=0;n.length<t.length;r++)for(let i of e.values()){let o=i[r];if(o)n.push(o)}return n}function Rp(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function dS(t,e,n){let[r,i,o]=[Rp(t),Rp(e),Rp(n)],s=Math.cbrt(0.4122214708*r+0.5363325363*i+0.0514459929*o),a=Math.cbrt(0.2119034982*r+0.6806995451*i+0.1073969566*o),c=Math.cbrt(0.0883024619*r+0.2817188376*i+0.6299787005*o);return[0.2104542553*s+0.793617785*a-0.0040720468*c,1.9779984951*s-2.428592205*a+0.4505937099*c,0.0259040371*s+0.7827717662*a-0.808675766*c]}function hS(t,e){let n=e.map((s)=>dS(...nt(s))).filter(([,s,a])=>Math.hypot(s,a)>=sF);if(n.length===0)return 0;let r=Math.max(1,Math.floor(Math.sqrt(t.width*t.height/uF))),i=n.map(()=>0),o=0;for(let s=0;s<t.height;s+=r)for(let a=0;a<t.width;a+=r){let c=(s*t.width+a)*4;if(t.data[c+3]<128)continue;o++;let[u,l,d]=dS(t.data[c],t.data[c+1],t.data[c+2]);n.forEach(([f,h,m],p)=>{if(Math.hypot(u-f,l-h,d-m)<aF)i[p]=i[p]+1})}if(o===0)return 0;return i.reduce((s,a)=>s+Math.min(1,a/o/cF),0)/n.length}import{existsSync as Pp,mkdirSync as mS,readFileSync as Ms}from"node:fs";import{homedir as bF}from"node:os";import{dirname as pS,join as Qi}from"node:path";import{spawn as fF}from"node:child_process";var hF=30000,mF=3,pF=97,gF=`ObjC.import('Vision')
693
+ ObjC.import('CoreImage')
694
+ ObjC.import('CoreGraphics')
695
+ function run(argv) {
696
+ const error = Ref()
697
+ const image = $.CIImage.imageWithContentsOfURL($.NSURL.fileURLWithPath(argv[0]))
698
+ if (!image) throw new Error('unreadable image')
699
+ const handler = $.VNImageRequestHandler.alloc.initWithCIImageOptions(image, $({}))
700
+ const request = $.VNGenerateForegroundInstanceMaskRequest.alloc.init
701
+ if (!handler.performRequestsError($([request]), error)) throw new Error('vision failed')
702
+ if (request.results.count === 0) throw new Error('no foreground')
703
+ const found = request.results.objectAtIndex(0)
704
+ const buffer = found.generateMaskedImageOfInstancesFromRequestHandlerCroppedToInstancesExtentError(
705
+ found.allInstances, handler, false, error)
706
+ if (!buffer) throw new Error('mask failed')
707
+ const written = $.CIContext.context.writePNGRepresentationOfImageToURLFormatColorSpaceOptionsError(
708
+ $.CIImage.imageWithCVPixelBuffer(buffer), $.NSURL.fileURLWithPath(argv[1]), $.kCIFormatRGBA8,
709
+ $.CGColorSpaceCreateWithName($.kCGColorSpaceSRGB), $({}), error)
710
+ if (!written) throw new Error('write failed')
711
+ }`;function Es(){return process.platform==="darwin"}function Il(t){return t>=mF&&t<=pF}function Za(t,e,n){return new Promise((r,i)=>{let o=fF("osascript",["-l","JavaScript","-e",gF,t,e],{stdio:["ignore","ignore","pipe"],signal:AbortSignal.any([n,AbortSignal.timeout(hF)])}),s="";o.stderr.on("data",(a)=>{s+=a}),o.on("error",i),o.on("close",(a)=>{if(a===0){r();return}i(Error(s.trim().split(`
712
+ `).at(-1)||`osascript exited ${a}`))})})}var gS=90000;function Pl(t,e){let n=Z(t),r=fe(t,e).flatMap((i)=>{let[,o,s]=/^([a-z.]+)_(\d+)$/.exec(i.key)??[];return o&&s&&V.some((a)=>a.key===o)?[{site:o,id:Number(s),...If(n,i)}]:[]});return r.length>0?r:void 0}function wF(t,e){let n=new Set(Rt(Z(t)).palettes[e.name]?.pictures.map((r)=>r.key));return(e.pictures??[]).filter((r)=>!n.has(se(r)))}function bS(t,e){let n=new Set((e??[]).map((r)=>se(r)));return{...t,pictures:(t.pictures??[]).filter((r)=>!n.has(se(r)))}}async function $F(t,e,n,r,i,o){let s=V.find((b)=>b.key===n.site);if(!s)throw Error(`no site called ${n.site}`);o("Fetching");let a=await xo(s,n.id,i);if(!a)throw Error("the post is gone");if(s!==ie&&a.md5)try{Cc([a],await Lc([a.md5],i))}catch{}let c=Hc(s,a)?Tc(s,a.id,i).then((b)=>{if(b)qs(a,b)},()=>{}):void 0;if(!Nc(s,a,bi(process.env.TTHEME_FIND_RATING))||Pc(a,Mo(process.env.TTHEME_FIND_BLOCK)).length>0)throw Error("outside your find filters — TTHEME_FIND_RATING and TTHEME_FIND_BLOCK");let u=$n(a);if(!u)throw Error("too large to use");let l=Qi(Ve(s),"orig",`${n.id}.${u.ext}`),d;if(Pp(l))d=new Uint8Array(Ms(l));else{o("Downloading");let b=wi(s,a,u);d=await Fc(b.site,b.url,i,($,k)=>o("Downloading",Qu($,k))),L(l,d)}let f=br(d,Se),h=!1;if(Wn(f)===0&&Es()&&process.env.TTHEME_FIND_REMOVE_BG!=="off"){let b=Qi(Ve(s),"cut",`${n.id}.png`);try{if(!Pp(b))o("Cutting out"),mS(pS(b),{recursive:!0}),await Za(l,b,i);let $=br(new Uint8Array(Ms(b)),Se);if(Il(Wn($)))f=$,h=!0}catch{}}await c;let m=Mf(e);o("Drawing"),Kc(t,m,yn(m,e.signatureSlots),f,{site:s.key,id:n.id,ext:u.ext,bytes:d,from:`${s.name} ${n.id} ${s.pageUrl(n.id)}`,artist:a.named.artist,source:Ds(a.source),cut:h},{width:0,height:0},Ur(t),Ou(t));let p=fe(t,e.name).find((b)=>b.key===se(n));if(p)na(Z(t),p,n,r,bF())}function kF(t,e){let n=V.find((o)=>o.key===t.site),r=`${n?.name??t.site} ${t.id}`;if(!n||!e)return r;return`${Nt()?Cs:`\x1B[${30+n.ansi}m${Cs}\x1B[39m`} ${yc(r,n.pageUrl(t.id))}`}async function Xi(t,e,n){let r=e.flatMap((c)=>wF(t,c).map((u)=>({entry:c,shared:u})));if(r.length===0)return;let i=_i(n),o=process.stdout.isTTY&&bk(process.env),s=new Set,a=Yr();for(let[c,{entry:u,shared:l}]of r.entries()){let d=`${u.name} · ${kF(l,o)}`,f=r.length>1?` · ${c+1}/${r.length}`:"",h=(m,p)=>a.set(`${m} ${d}${p?` · ${p}`:""}${f}`);try{await $F(t,u,l,i,AbortSignal.timeout(gS),h),a.say(` ▣ ${d}`),s.add(u)}catch(m){a.say(` ▢ ${d} — ${m instanceof Error?m.message:String(m)}`)}}a.done();for(let c of s){let u=(c.pictures??[]).find((l)=>fe(t,c.name).some((d)=>d.key===se(l)));if(u)Ho(t,c.name,se(u))}if(s.size>0)Ae(t)}function wS(t,e,n){if(e.width!==t.width||e.height!==t.height)return!1;for(let r=0;r<t.width*t.height;r++)t.data[r*4+3]=e.data[r*4+n]??0;return!0}async function yF(t,e){let[,n,r]=/^(.+)_(\d+)$/.exec(t)??[],i=Qi(Er(),n??"local","cut",`${r??t}.png`);if(!Pp(i)){if(!Es())return;mS(pS(i),{recursive:!0}),await Za(e,i,AbortSignal.timeout(gS))}return br(new Uint8Array(Ms(i)),Se)}function vF(t,e){try{return Wn(_t(new Uint8Array(Ms(Qi(t,`${e.stem}.png`)))))>0}catch{return!1}}function Rl(t,e){return()=>br(new Uint8Array(Ms(Qi(t,e.original))),Se)}function $S(t,e){let n=Rl(t,e);return()=>{let r=n(),i=_t(new Uint8Array(Ms(Qi(t,e.cut))));return wS(r,i,0)?r:null}}async function Nl(t,e,n,r,i,o,s,a){let c=Z(t),u=Rt(c).palettes[e]?.pictures.find((l)=>l.key===n);if(!u?.original)return null;if(u.cut)return ra(t,e,u,$S(c,u),r,i,o,s,!1,a);if(To(u)){let l=Rl(c,u)();if(Wn(l)===0&&vF(c,u)){let d=await yF(n,Qi(c,u.original));if(!d||!wS(l,d,3))return null;return ra(t,e,u,()=>l,r,i,o,s,!0,a)}return ra(t,e,u,()=>l,r,i,o,s,!1,a)}return ra(t,e,u,Rl(c,u),r,i,o,s,!1,a)}function kS(t,e,n,r,i,o){let s=Z(t),a=Rt(s).palettes[e]?.pictures.find((u)=>u.key===n);if(!a?.original||To(a))return!1;let c=a.cut?$S(s,a):Rl(s,a);return C0(t,e,a,c,r,i,o)}var SF=/(?:^|[^0-9a-f])([0-9a-f]{32})(?:[^0-9a-f]|$)/i,EF=[[/yande\.re\/post\/show\/(\d+)/,"yande"],[/konachan\.(?:com|net)\/post\/show\/(\d+)/,"konachan"],[/danbooru\.donmai\.us\/(?:posts|post\/show)\/(\d+)/,"danbooru"],[/zerochan\.net\/(\d+)(?:[?#\s]|$)/,"zerochan"]];function Np(t){let e=/(\d+)_p(\d+)/.exec(t.source);return[...t.md5?[`md5:${t.md5}`]:[],...e&&t.source.includes("pximg")?[`pixiv:${e[1]}_p${e[2]}`]:[]]}function yS(t,e){let n=SF.exec(e.source)?.[1]?.toLowerCase();return[`post:${t.key}:${e.id}`,...e.md5?[`md5:${e.md5}`]:[],...n&&n!==e.md5?[`md5:${n}`]:[],...EF.flatMap(([r,i])=>{let o=r.exec(e.source)?.[1];return o?[`post:${i}:${Number(o)}`]:[]}),...e.family?[`family:${t.key}:${e.family}`]:[]]}function vS(t,e){let n=t.owner||t.named.artist[0]||"";return n!==""&&n===(e.owner||e.named.artist[0]||"")&&t.width===e.width&&t.height===e.height}function SS(t){let r=[];for(let o=0;o<8;o++){let s=Math.floor(o*t.height/8),a=Math.max(s+1,Math.floor((o+1)*t.height/8));for(let c=0;c<9;c++){let u=Math.floor(c*t.width/9),l=Math.max(u+1,Math.floor((c+1)*t.width/9)),d=0;for(let f=s;f<a;f++)for(let h=u;h<l;h++){let m=(f*t.width+h)*4,p=t.data[m+3]/255,b=0.299*t.data[m]+0.587*t.data[m+1]+0.114*t.data[m+2];d+=b*p+255*(1-p)}r.push(d/((l-u)*(a-s)))}}let i=0n;for(let o=0;o<8;o++)for(let s=0;s<8;s++)i=i<<1n|(r[o*9+s]>r[o*9+s+1]?1n:0n);return i.toString(16).padStart(16,"0")}function MF(t,e){let n=BigInt(`0x${t}`)^BigInt(`0x${e}`),r=0;while(n>0n)r+=Number(n&1n),n>>=1n;return r}function ES(t,e){if(t.width<=0||t.height<=0||e.width<=0||e.height<=0)return!1;return Math.abs(Math.log(t.width/t.height/(e.width/e.height)))<0.01&&MF(t.hash,e.hash)<=2}var PF={thumb:"tile",band:"band",match:"tile",show:"view",backdrop:"view",redraw:"view"},Al;async function NF(t){if(t.job==="redraw")return Nl(t.home,t.name,t.key,t.paint,t.blur,t.aligns,t.user);if(t.job==="show"){if(Al?.from!==t.from){let s=br(new Uint8Array(Ap(t.from)),Se);Al={from:t.from,clear:Wn(s),inked:Ef(s)}}let{image:r,fill:i,opacity:o}=S0(Al.inked,t.colors,t.tone,t.width,t.height,t.blur,t.tune,t.coloring);return xF(OF(t.to),{recursive:!0}),MS(t.to,Fe(r)),{clear:Al.clear,fill:i,opacity:o}}let e=br(new Uint8Array(Ap(t.from)),Se);if(t.job==="backdrop"){Kc(t.home,t.colors,t.tone,e,{...t.origin,bytes:new Uint8Array(Ap(t.source)),cut:t.from!==t.source},t,t.blur,t.coloring);let r=t.tune&&fe(t.home,t.colors.name).find((i)=>i.key===se(t.origin));if(t.tune&&r)na(Z(t.home),r,t.tune,t.aligns??!0,t.user??t.home);return 0}if(t.job==="match")return{match:hS(e,t.colors),hash:SS(e)};if(t.job==="thumb")return L(t.to,Fe(aw(e,t.width,t.height))),0;let n=e.data.subarray(t.y*e.width*4,(t.y+t.height)*e.width*4);return MS(t.to,Fe({width:e.width,height:t.height,data:n})),0}function AF(t){t.on("message",async(e)=>{try{t.postMessage({id:e.id,value:await NF(e)})}catch(n){t.postMessage({id:e.id,error:n instanceof Error?n.message:String(n)})}})}class Tp{worker;next=1;waiting=new Map;send(t){let e=this.next++;return new Promise((n,r)=>{let i=this.open();this.waiting.set(e,{ok:n,no:r}),i.ref(),i.postMessage({...t,id:e})})}close(){this.worker?.terminate(),this.worker=void 0,this.drop(Error("renderer closed"))}open(){if(this.worker)return this.worker;let t=new RF(import.meta.filename);t.unref(),t.on("message",({id:n,value:r,error:i})=>{let o=this.waiting.get(n);if(this.waiting.delete(n),this.waiting.size===0)t.unref();if(i!==void 0)o?.no(Error(i));else o?.ok(r)});let e=(n)=>{if(this.worker===t)this.worker=void 0;this.drop(n instanceof Error?n:Error("renderer stopped"))};return t.on("error",e),t.on("exit",()=>e(void 0)),this.worker=t,t}drop(t){for(let e of this.waiting.values())e.no(t);this.waiting.clear()}}class Qa{lines=new Map;run(t){let e=PF[t.job],n=this.lines.get(e);if(!n)n=new Tp,this.lines.set(e,n);return n.send(t)}close(){for(let t of this.lines.values())t.close();this.lines.clear()}}class Hp{lines;constructor(t){this.lines=Array.from({length:Math.max(1,t)},()=>new Tp)}async map(t){let e=[],n=0;return await Promise.all(this.lines.map(async(r)=>{while(n<t.length){let i=n++;try{e[i]=await r.send(t[i])}catch(o){e[i]=o instanceof Error?o:Error(String(o))}}})),e}close(){for(let t of this.lines)t.close()}}if(!IF&&xS)AF(xS);import{existsSync as TF,mkdtempSync as HF,readFileSync as CF,rmSync as OS,writeFileSync as LF}from"node:fs";import{tmpdir as FF}from"node:os";import{basename as RS,join as IS}from"node:path";var jF=6;class Cp{dir;made=[];of(t,e){this.dir??=HF(IS(FF(),"ttheme-tint-"));let n=IS(this.dir,`${RS(t,".png")}.${e.slice(1).toLowerCase()}.png`);if(!TF(n)){let r=new Uint8Array(CF(t));LF(n,Mc(r,e)??pi(mi(_t(r)),e)),this.made.push(n);while(this.made.length>jF)OS(this.made.shift(),{force:!0})}return n}clear(){if(this.dir)OS(this.dir,{recursive:!0,force:!0});this.dir=void 0,this.made.length=0}}function PS(t,e,n,r,i){if(je(t)==="original")return e;let o=yn(n,[...r]);return o.color===t.tone?e:i.of(e,o.color)}function NS(t,e){let n=RS(e);return t.find((r)=>n.startsWith(`${r.stem}.`)||n.startsWith(`${r.stem}@`))}var zF=2147483625,HS=2147483626,Tn=2147483627,DF=-1073741831,CS=-1073741830,qF=-1073741829,YF=4;function JF(t,e,n,r,i){let o=Math.trunc,s=n.col*r.w,a=n.row*r.h,c=o((Math.max(i.x,s)+r.w-1)/r.w),u=o(Math.min(i.x+i.w,s+n.cols*r.w)/r.w),l=o((Math.max(i.y,a)+r.h-1)/r.h),d=o(Math.min(i.y+i.h,a+n.rows*r.h)/r.h);if(u<=c||d<=l)return;return{col:c,row:l,cols:u-c,rows:d-l,x:o((c*r.w-i.x)*t/i.w),y:o((l*r.h-i.y)*e/i.h),w:o((u-c)*r.w*t/i.w),h:o((d-l)*r.h*e/i.h)}}function VF(t){try{let e=GF(t,"r"),n=Buffer.alloc(24);return UF(e,n,0,24,0),_F(e),n.readUInt32BE(0)===2303741511?{width:n.readUInt32BE(16),height:n.readUInt32BE(20)}:void 0}catch{return}}class Tl{ready=()=>{};cell={w:0,h:0};held;tints=new Cp;sent=new Map;placed=new Map;viewed="";renders;scratch;made=0;bands=new Map;home;name;views;banded;files;static of(t,e,n,r){if(Nt(t)||!Jo(t,r)||!(Vo(t)||Ni(t)))return;return new Tl(t,e,n)}constructor(t,e,n){this.home=e,this.name=n,this.views=Ni(t),this.banded=Su(t),this.files=Eu(t)}get laid(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}load(){let t=Z(this.home),e=Oe(t,this.name,WF()),n=[];try{n=Rt(t).palettes[this.name]?.pictures??[]}catch{}let r=e?NS(n,e.image):void 0;this.held=e&&r?{picture:r,image:e.image,opacity:e.opacity,cover:e.cover,at:Wt.indexOf(e.position)+1||5}:void 0}draw(t,e,n,r,i,o={col:0,row:0,cols:r,rows:i}){if(this.cell.w===0)return"";let s=t[0],a=this.look(t,e,n,o,!this.views||o.cols===r&&o.rows===i);if(this.views){let u=r*this.cell.w,l=i*this.cell.h,d=a?`${s}|${a.image}|${a.opacity}|${u}|${l}|${a.box.w}|${a.box.h}|${a.box.x}|${a.box.y}|${this.held?.at??5}`:`${s}||1|${u}|${l}|0|0|0|0|5`;if(d===this.viewed)return"";return this.viewed=d,Ai(d)}let c=this.layer(zF,DF,"f=24",Buffer.from(nt(s)),o);if(a){let u=Math.max(0,Math.min(255,Math.round((1-a.opacity)*255)));c+=this.picture(a),c+=this.layer(HS,qF,"f=32",Buffer.from([...nt(s),u]),o)}else c+=this.drop(Tn)+this.drop(HS);return c}resized(){this.sent.clear(),this.placed.clear(),this.viewed=""}clear(){let t=this.views&&this.viewed?Ai(""):"";for(let e of this.sent.keys())t+=Ka(e);return this.resized(),t}close(){let t=this.clear();if(this.tints.clear(),this.renders?.close(),this.scratch)AS(this.scratch,{recursive:!0,force:!0});return t}look(t,e,n,r,i){let o=this.held;if(!o)return;let s={name:this.name,...Ut([...t]),waived:[...n]},a=PS(o.picture,o.image,s,e,this.tints),c=VF(a);if(!c)return;let u=Co(c.width,c.height,r.cols*this.cell.w,r.rows*this.cell.h,100,o.at,o.cover&&i),l={...u,x:u.x+r.col*this.cell.w,y:u.y+r.row*this.cell.h},d=JF(c.width,c.height,r,this.cell,l);if(!d)return;return{image:a,opacity:o.opacity,...c,box:l,rect:d}}layer(t,e,n,r,i){let o=r.toString("base64"),s=`${o}|${i.col}|${i.row}|${i.cols}|${i.rows}`;if(this.placed.get(t)===s)return"";return this.sent.set(t,s),this.placed.set(t,s),`\x1B_Ga=t,${n},s=1,v=1,i=${t},q=2;${o}\x1B\\\x1B[${i.row+1};${i.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${i.cols},r=${i.rows},C=1,z=${e},q=2\x1B\\`}picture(t){let{image:e,rect:n}=t;if(this.banded&&(2*n.y+n.h-t.height)**2>1){let o=this.band(t.image,n.y,n.h);if(!o.ready)return"";e=o.path,n={...n,y:0}}let r="";if(this.sent.get(Tn)!==e){let o=pl({id:Tn,path:e,row:0,col:0,cols:0,rows:0,z:CS},this.files);if(o===void 0)return"";r+=o,this.sent.set(Tn,e),this.placed.delete(Tn)}let i=`${n.col};${n.row};${n.cols};${n.rows};${n.x};${n.y};${n.w};${n.h}`;if(this.placed.get(Tn)!==i)r+=`\x1B[${n.row+1};${n.col+1}H\x1B_Ga=p,i=${Tn},p=${Tn},x=${n.x},y=${n.y},w=${n.w},h=${n.h},c=${n.cols},r=${n.rows},C=1,z=${CS},q=2\x1B\\`,this.placed.set(Tn,i);return r}drop(t){if(!this.sent.has(t))return"";return this.sent.delete(t),this.placed.delete(t),Ka(t)}band(t,e,n){let r=`${t}|${e}|${n}`,i=this.bands.get(r);if(i)return i;this.scratch??=BF(TS(KF(),"ttheme-edit-")),this.renders??=new Qa;let o={path:TS(this.scratch,`band-${++this.made}.png`),ready:!1};this.bands.set(r,o),this.renders.run({job:"band",from:t,to:o.path,y:e,height:n}).then(()=>{o.ready=!0,this.ready()}).catch(()=>{});for(let[s,a]of this.bands){if(this.bands.size<=YF)break;if(a.ready&&a.path!==this.sent.get(Tn))this.bands.delete(s),AS(a.path,{force:!0})}return o}}var to=50;function st(t,e){return Vt(t,e)}function xs(t){return{color:t,dim:(e)=>t?`${C}${e}${$e}`:e,bold:(e)=>t?`${ut}${e}${$e}`:e,fg:(e)=>t?qe(e):"",bg:(e)=>t?`\x1B[48;2;${nt(e).join(";")}m`:""}}function Xa(t){return St(t)>0.35?"#000000":"#ffffff"}function Lp(t,e){return t.held!==void 0&&t.held-e.c>0.0005?t.held:void 0}function Hl(t,e,n,r){let i=e.mode==="tune"&&e.channel===Qt,o=e.ratio(),{floor:s}=e.partner(),a=(p)=>Math.round(Math.log(Math.max(1,p))/Math.log(21)*(n-1)),c=a(o),u=s===void 0?-1:a(s),l=r===void 0?-1:a(r),d=i?"━":"─",f=Array.from({length:n},(p,b)=>b===c?t.bold("●"):b===l?"○":b===u?"┃":b<u?t.dim(d):d).join(""),h=`${o.toFixed(2)}:1`.padStart(6),m={kind:"channel",channel:Qt};return`${st(m,i?t.bold("▸◐"):t.dim(" ◐"))} ${st({kind:"bar",channel:Qt},f)} ${st(m,i?t.bold(h):t.dim(h))}`}function Cl(t,e){if(!t.misses().has(e))return;if(Ep(t.list,t.signature,t.waive,"bright-follows").includes(e))return e-A.length<8?"= makes the bright follow its normal":"= on the normal makes this follow it";return"f moves the colors the gate misses"}function Ll(t,e,n){let r=xp(t.list,t.signature,t.waive,e),i=Lp(t,n);if(i!==void 0)r.push({ok:void 0,text:`Chroma ○ ${i.toFixed(3)} is held while you tune — ${n.c.toFixed(3)} fits this lightness and hue`});return r}var ZF={top:"╭╮",mid:"├┤",bottom:"╰╯"};function Xt(t,e,n=[]){let[r,i]=[...ZF[e]],o=[...`${r}${"─".repeat(Math.max(0,t-2))}${i}`];for(let[s,a]of n)[...a].forEach((c,u)=>{if(s+u>0&&s+u<t-1)o[s+u]=c});return o.join("")}function ln(t,e,n){return`${t.dim("│")}${rt(e,n-2)}${t.dim("│")}`}function Fl(t){let e=(n,r)=>n.toFixed(r).replace(/^0(?=\.)/,"");return`${e(t.l,2)} ${e(t.c,3)} ${t.h.toFixed(0).padStart(3)}°`}function LS(t){return`${t.l.toFixed(2)} ${t.c.toFixed(3)} ${t.h.toFixed(0).padStart(3)}°`}function Fp(t,e){return e===void 0?t.dim("·"):e?t.dim("✓"):t.bold("✗")}function QF(t,e,n,r=to){let i=Op(e.list,e.signature,e.waive).sort((u,l)=>Number(u.ok!==!1)-Number(l.ok!==!1)),o=i.filter((u)=>u.ok===!1).length,s=` ${t.dim("Gate")} ${o===0?t.dim("passes"):t.bold(`${o} ${o===1?"miss":"misses"}`)}`,a=r-4,c=i.flatMap((u)=>{let l=`${u.value} ${u.bound}`,d=` ${Fp(t,u.ok)} ${vt(u.ok===!1?u.label:t.dim(u.label),t.dim(l),a-2)}`,f=[...new Set(u.slots)].map((p)=>He(p).name),h=u.slots[0],m=(p)=>h===void 0?p:st({kind:"slot",slot:h},p);return f.length>0?[m(d),m(` ${t.dim(rt(f.join(" · "),a-2))}`)]:[m(d)]});return[o===0?s:vt(s,`${t.bold("n")} ${t.dim("next miss")}`,r-2),...c.slice(0,Math.max(0,n-1))]}function FS(t,e){let n=t-A.length;if(n>=0)return e===String(n)||e===`B${n}`||e===`K${n}`;return t===3&&e==="s"||t===2&&e==="c"}function jl(t,e,n,r){let i=r?"\x1B[4m":"";if(n==="d")return`${t.fg(e.foreground)}\x1B[2m${i}`;if(n==="b")return`${t.fg(e.foreground)}\x1B[1m${i}`;if(n==="s")return`${t.bg(e.selection)}${t.fg(e.foreground)}${i}`;if(n==="c")return`${t.bg(e.cursor)}${i}`;let o=/^([BK]?)(\d+)$/.exec(n);if(!o)return`${t.fg(e.foreground)}${i}`;let s=e.ansi[Number(o[2])];if(o[1]==="K")return`${t.fg(e.ansi[0])}${t.bg(s)}${i}`;return`${t.fg(s)}${o[1]==="B"?"\x1B[1m":""}${i}`}function tc(t,e,n,r,i){let o=e.length-1,s=Math.max(0,Math.min(o,n)),a=i===void 0?-1:Math.max(0,Math.min(o,i));if(!t.color)return e.map((c,u)=>u===s?"●":u===a?"○":r?"━":"─").join("");return e.map((c,u)=>{let l=c??"#000000";if(u===s)return`${t.bg(l)}${t.fg(Xa(l))}●\x1B[39;49m`;if(u===a)return c?`${t.bg(c)}${t.fg(Xa(c))}○\x1B[39;49m`:`${t.fg("#aaaaaa")}○`;return c?`${t.fg(c)}█`:`${t.fg(r?"#777777":"#555555")}░`}).join("").concat("\x1B[39m")}function _l(t,e,n){return Array.from({length:n},(r,i)=>{let o=e.min+(e.max-e.min)*i/(n-1),s={...t,[e.key]:o};return Nn(s.l,s.c,s.h)?ze(s.l,s.c,s.h):void 0})}function eo(t,e,n,r){return Math.round((t-e)/(n-e)*(r-1))}function jp(t){return Op(t.list,t.signature,t.waive).filter((e)=>e.ok===!1).length}function ec(t,e,n,r){if(n<3)return[];let i=jp(e),o=i===0?" Gate ✓ passes ":` Gate ✗ ${i} · n next `;return[t.dim(Xt(r,"top",[[2,o]])),...QF(t,e,n-1,r-1).slice(1).map((s)=>ln(t,s,r)),t.dim(Xt(r,"bottom"))]}var ur=0.98,nc=0.12,XF=0.37,jS=0.74,t3=0.15,e3=-1073741828,_p=-1073741827,Bp=-1073741826,n3=-1073741825,r3=2147483584,i3=["panel","plane","hue","contrast","mark","hue-thumb","contrast-thumb","origin","hue-origin","contrast-origin"],o3=4096;function rc(t,e){return vs(t,e,XF)}function Gl(t,e,n){let r=rc(t,n);return r>0.000001?Math.min(1,e/r):0}function ic(t,e){return{width:t,height:e,data:new Uint8Array(t*e*4)}}function ri(t,e,n,r,i){let o=r[3]*i;if(o<=0||e<0||n<0||e>=t.width||n>=t.height)return;let s=(n*t.width+e)*4,a=t.data;if(o>=1){a[s]=r[0],a[s+1]=r[1],a[s+2]=r[2],a[s+3]=255;return}let c=a[s+3]/255,u=o+c*(1-o);for(let l=0;l<3;l++)a[s+l]=Math.round((r[l]*o+a[s+l]*c*(1-o))/u);a[s+3]=Math.round(u*255)}function cr(t,e=1){return[...nt(t),e]}function Is(t,e,n,r,i,o,s){let a=Math.abs(t-(n+i/2))-(i/2-s),c=Math.abs(e-(r+o/2))-(o/2-s);return Math.hypot(Math.max(a,0),Math.max(c,0))+Math.min(Math.max(a,c),0)-s}function no(t,e,n,r){let i=[],o=[],s=Math.max(0,Math.floor(r?.x??0)),a=Math.max(0,Math.floor(r?.y??0)),c=Math.min(t,Math.ceil(r?r.x+r.w:t)),u=Math.min(e,Math.ceil(r?r.y+r.h:e));for(let l=a;l<u;l++)for(let d=s;d<c;d++){let f=n(d+0.5,l+0.5);if(f>0.002)i.push(l*t+d),o.push(Math.min(1,f))}return{at:Uint32Array.from(i),cover:Float32Array.from(o)}}function ro(t,e,n){for(let r=0;r<e.at.length;r++){let i=e.at[r];ri(t,i%t.width,Math.floor(i/t.width),n,e.cover[r])}}function Gp(t,e){return(n,r)=>Math.max(0,0.5-Is(n,r,t.x,t.y,t.w,t.h,e))}function _S(t,e,n){return(r,i)=>Math.max(0,0.5-Math.abs(Is(r,i,t.x,t.y,t.w,t.h,e)+n/2)+n/2)}var Bl=new Map;function s3(t,e,n,r){let i=`${e.w}x${e.h} ${US({...t,ground:"#000000",ink:"#000000",accent:"#000000"})}`,o=Bl.get(i);if(o)return o;let{panel:s}=t,a={x:e.w,y:0,w:s.cols*e.w,h:s.rows*e.h},c=Math.round(e.h*0.45),u=Math.round(e.h*0.18),l=e.h*0.6,d=Math.max(1,Math.round(e.h/22)),f=(x)=>({x:(x.col-s.col+1)*e.w,y:(x.row-s.row)*e.h}),h=Math.max(1,Math.round(e.h*0.08)),m=f(t.tabs),p={x:m.x,y:m.y+h,w:t.tabs.cols*e.w,h:e.h-2*h},b=Math.floor(t.tabs.cols/t.tabs.count)*e.w,$=Math.max(1,Math.round(h/2)),k={x:p.x+t.tabs.active*b+$,y:p.y+$,w:(t.tabs.active===t.tabs.count-1?p.w-t.tabs.active*b:b)-2*$,h:p.h-2*$},v=f(t.field),S={x:v.x,y:v.y+h,w:t.field.cols*e.w,h:e.h-2*h},M=t.divider===void 0?void 0:{x:a.x+e.w*0.6,y:(t.divider-s.row)*e.h,w:a.w-e.w*1.2,h:d},I={shadow:no(n,r,(x,H)=>{let N=Is(x,H,a.x,u,a.w,a.h,c);return N>0&&N<l?(1-N/l)**2:0}),fill:no(n,r,Gp(a,c),a),border:no(n,r,_S(a,c,d),a),track:no(n,r,Gp(p,p.h*0.3),p),segment:no(n,r,Gp(k,k.h*0.3),k),field:no(n,r,_S(S,S.h*0.3,d),S),divider:M&&no(n,r,()=>1,M)};if(Bl.size>8)Bl.clear();return Bl.set(i,I),I}function a3(t){let e=St(t.ground)<0.18;return{dark:e,surface:bt(t.ground,t.ink,e?0.07:0.04)}}function c3(t,e){let n=ic((t.panel.cols+2)*e.w,(t.panel.rows+1)*e.h),r=s3(t,e,n.width,n.height),{dark:i,surface:o}=a3(t);if(ro(n,r.shadow,[0,0,0,i?0.45:0.18]),ro(n,r.fill,cr(o)),ro(n,r.border,cr(t.ink,i?0.16:0.2)),ro(n,r.track,cr(t.ink,i?0.06:0.07)),ro(n,r.segment,cr(t.accent,i?0.24:0.2)),ro(n,r.field,cr(t.ink,i?0.22:0.28)),r.divider)ro(n,r.divider,cr(t.ink,i?0.12:0.16));return n}function u3(t,e,n){let r=ic(Math.round(t.cols*n.w),Math.round(t.rows*n.h)),{width:i,height:o,data:s}=r,a=Math.round(n.h*0.3),c=Math.max(1,(t.cols-1)*n.w),u=(h)=>Math.min(1,Math.max(0,(h+0.5-n.w/2)/c)),l=t.rows*2-1,d=(h)=>ur-Math.min(1,Math.max(0,((h+0.5)/n.h*2-0.5)/l))*(ur-nc),f=[];for(let h=0;h<o;h++){if(h%2===0){let m=d(h+0.5),p=rc(m,e);f=Array.from({length:Math.ceil(i/2)},(b,$)=>Nn(m,u($*2+0.5)*p,e)??[0,0,0])}for(let m=0;m<i;m++){let b=(m<a||m>=i-a)&&(h<a||h>=o-a)?Math.min(1,Math.max(0,0.5-Is(m+0.5,h+0.5,0,0,i,o,a))):1;if(b<=0)continue;let $=f[m>>1],k=(h*i+m)*4;s[k]=$[0],s[k+1]=$[1],s[k+2]=$[2],s[k+3]=Math.round(b*255)}}return r}function GS(t,e){let n=Math.max(4,Math.round(t.h*0.42));return{top:Math.round((t.h-n)/2),height:n,width:e*t.w}}function l3(t,e){let n=ic(t.cols*e.w,e.h),{top:r,height:i,width:o}=GS(e,t.cols),s=Array.from({length:o},(a,c)=>{let l=Math.min(1,Math.max(0,((c+0.5)/e.w-0.5)/Math.max(1,t.cols-1)))*360;return Nn(jS,vs(jS,l,t3),l)??[0,0,0]});for(let a=r;a<r+i;a++)for(let c=0;c<o;c++){let u=Math.min(1,Math.max(0,0.5-Is(c+0.5,a+0.5,0,r,o,i,i/2))),l=s[c];ri(n,c,a,[l[0],l[1],l[2],1],u)}return n}function d3(t,e,n){let r=ic(t.cols*n.w,n.h),{top:i,height:o,width:s}=GS(n,t.cols),a=t.floor===void 0?-1:Math.round((t.floor*(t.cols-1)+0.5)*n.w),c=Math.max(2,Math.round(o*0.45)),u=i+Math.round((o-c)/2);for(let l=u;l<u+c;l++)for(let d=0;d<s;d++){let f=Math.min(1,Math.max(0,0.5-Is(d+0.5,l+0.5,0,u,s,c,c/2))),h=a<0||d>=a;ri(r,d,l,cr(e,h?t.lit?0.5:0.36:0.14),f)}if(a>=0){let l=Math.max(2,Math.round(n.w/5));for(let d=i-1;d<i+o+1;d++)for(let f=a-Math.floor(l/2);f<a-Math.floor(l/2)+l;f++)ri(r,f,d,cr(e,0.85),1)}return r}function f3(t,e,n,r,i,o,s){let a=ic(t*s.w,e*s.h),c=Math.max(2,Math.round(i*0.3)),u=(d,f)=>Math.min(1,Math.max(0,d-f+0.5)),l=[0,0,0,0.5];for(let d=0;d<a.height;d++)for(let f=0;f<a.width;f++){let h=Math.hypot(f+0.5-n,d+0.5-r);if(o)ri(a,f,d,cr(o),u(i-c,h));else ri(a,f,d,l,u(i-c,h)-u(i-c-1,h));ri(a,f,d,l,u(i+1,h)-u(i,h)),ri(a,f,d,[255,255,255,1],u(i,h)-u(i-c,h))}return a}function Os(t,e,n,r,i,o,s=n3){let a=Math.floor((e-r-2)/o.w),c=Math.floor((e+r+2)/o.w),u=Math.floor((n-r-2)/o.h),l=Math.floor((n+r+2)/o.h),d={row:u,col:a,cols:c-a+1,rows:l-u+1},f=Math.round((e-a*o.w)*2)/2,h=Math.round((n-u*o.h)*2)/2;return{name:t,key:`${d.cols}x${d.rows} ${f},${h} ${r} ${i??"-"}`,box:d,z:s,paint:()=>f3(d.cols,d.rows,f,h,r,i,o)}}function US(t){let{panel:e}=t,n=(i)=>`${i.row-e.row},${i.col-e.col},${i.cols}`,r=t.divider===void 0?"-":t.divider-e.row;return`${e.cols}x${e.rows} ${t.ground} ${t.ink} ${t.accent} ${n(t.tabs)},${t.tabs.active}/${t.tabs.count} ${n(t.field)} ${r}`}function h3(t,e){let n=`${e.w}x${e.h}`,r=Math.max(4,Math.round(e.h*0.34)),i=(d,f)=>(d.col+0.5+f*(d.cols-1))*e.w,o=(d)=>(d.row+0.5)*e.h,s=t.plane,a=(d)=>{let f=(ur-d)/(ur-nc)*(s.rows*2-1);return s.row*e.h+(Math.min(s.rows*2-1,Math.max(0,f))+0.5)*e.h/2},c=a(s.l),u=[{name:"panel",key:`${n} ${US(t)}`,box:{row:t.panel.row,col:t.panel.col-1,cols:t.panel.cols+2,rows:t.panel.rows+1},z:e3,paint:()=>c3(t,e)},{name:"plane",key:`${n} ${s.cols}x${s.rows} ${s.h.toFixed(2)}`,box:s,z:_p,paint:()=>u3(s,s.h,e.h>=24?{w:e.w/2,h:e.h/2}:e)},{name:"hue",key:`${n} ${t.hue.cols}`,box:{...t.hue,rows:1},z:_p,paint:()=>l3(t.hue,e)},{name:"contrast",key:`${n} ${t.contrast.cols} ${t.contrast.floor??"-"} ${t.contrast.lit} ${t.ink}`,box:{...t.contrast,rows:1},z:_p,paint:()=>d3(t.contrast,t.ink,e)},Os("mark",i(s,Gl(s.l,s.c,s.h)),c,r,void 0,e),Os("hue-thumb",i(t.hue,t.hue.h/360),o(t.hue),r,t.hue.color,e),Os("contrast-thumb",i(t.contrast,t.contrast.at),o(t.contrast),r,t.contrast.color,e)],l=t.origin;if(l){let d=Math.max(3,Math.round(r*0.55));u.push(Os("origin",i(s,Gl(l.l,l.c,l.h)),a(l.l),d,l.color,e,Bp),Os("hue-origin",i(t.hue,l.h/360),o(t.hue),d,l.color,e,Bp),Os("contrast-origin",i(t.contrast,l.at),o(t.contrast),d,l.color,e,Bp))}return u}function m3(t,e){let r=e.toString("base64").match(new RegExp(`.{1,${o3}}`,"g"))??[""];return r.map((i,o)=>{let s=o<r.length-1?1:0;return o===0?`\x1B_Ga=t,f=100,i=${t},m=${s},q=2;${i}\x1B\\`:`\x1B_Gm=${s},q=2;${i}\x1B\\`}).join("")}function BS(t,e,n){return`\x1B[${e.row+1};${e.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${e.cols},r=${e.rows},C=1,z=${n},q=2\x1B\\`}function Up(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}class Ul{cell={w:0,h:0};shown=new Map;static of(t,e){return Nt(t)||!Jo(t,e)||!Vo(t)?void 0:new Ul}get ready(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}draw(t){if(!this.ready)return"";let e=t?h3(t,this.cell):[],n="";for(let r of e)n+=this.put(r);for(let[r,i]of this.shown)if(!e.some((o)=>o.name===r))n+=Up(i.id),this.shown.delete(r);return n}clear(){let t="";for(let e of this.shown.values())t+=Up(e.id);return this.shown.clear(),t}put(t){let e=`${t.box.row};${t.box.col};${t.box.cols};${t.box.rows}`,n=this.shown.get(t.name);if(n&&n.key===t.key){if(n.at===e)return"";return n.at=e,BS(n.id,t.box,t.z)}let r=r3+i3.indexOf(t.name)*2,i=n?.id===r?r+1:r;return this.shown.set(t.name,{key:t.key,id:i,at:e}),`${m3(i,Fe(t.paint()))}${BS(i,t.box,t.z)}${n?Up(n.id):""}`}}var p3="\x1B[0m",zp="\x1B[33m",oc=34,Wp=2,g3=6,Kl=3,b3=7,KS="↑↓ L ←→ C ⇧←→ H tab ◐";function w3(t,e,n){let r="",i=0;for(let o of t){let s=i+B(o);if(s>e&&i<n)r+=i>=e&&s<=n?o:" ".repeat(Math.min(s,n)-Math.max(i,e));if(i=s,i>=n)break}return r}function zl(t){return t.reduce((e,n)=>e+B(n.text),0)}function Dl(t,e,n){let r=[],i=0;for(let o of t){let s=B(o.text),a=Math.max(e,i),c=Math.min(n,i+s);if(c>a)r.push({...o,text:w3(o.text,a-i,c-i)});i+=s}return r}function $3(t,e,n){return[...Dl(t,0,e),...n,...Dl(t,e+zl(n),zl(t))]}function k3(t,e){return t.map((n)=>{let r=e&&n.sgr?`${n.sgr}${n.text}${p3}`:n.text;return n.target?Vt(n.target,r):r}).join("")}function ql(t,e,n){return t.color?`${t.bg(e.selection)}${t.fg(e.foreground)}${t.bold(` ${n} `)}\x1B[39;49m`:`[${n}]`}function zS(t){return t<A.length?A[t]:un[(t-A.length)%8]}function DS(t,e,n,r){let i=t.signature.includes(An[n])?"◆":e.color?"■":" ";return e.color?`${e.fg(t.list[n])}${i}${r}`:i}function qS(t,e,n,r,i){return r.has(n)?e.bold("✗"):t.changed(n)?e.color?`${zp}●${i}`:"●":" "}function YS(t,e,n){return n?t.color?`${t.fg(e.cursor)}▌\x1B[39m `:"▌ ":" "}function y3(t,e,n,r,i,o){let s=r===t.slot(),a=s?e.fg(n.foreground):"\x1B[39m",c=zS(r).padEnd(12),u=t.lch[r],l=`${YS(e,n,s)}${DS(t,e,r,a)} ${s?e.bold(c):c}${LS(u)} ${qS(t,e,r,o,a)}`,d=rt(l,i);return st({kind:"open",slot:r},s&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${d}\x1B[39;49m`:d)}var Kp=8,JS=44;function ac(t){return t>=JS?16:11}function WS(t,e,n,r,i,o){let s=ac(i);if(!t.visible(r))return" ".repeat(s);let a=r===t.slot(),c=a&&e.color?e.fg(n.foreground):"\x1B[39m",u=t.lch[r],l=(p,b)=>p.toFixed(b).replace(/^0(?=\.)/,""),d=`${u.h.toFixed(0).padStart(3)}°`,f=i>=JS?`${l(u.l,2)} ${l(u.c,3)} ${d}`:`${l(u.l,2)} ${d}`,h=`${DS(t,e,r,c)} ${f}${qS(t,e,r,o,c)}`,m=a&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${h}\x1B[39;49m`:h;return st({kind:"open",slot:r},m)}function v3(t,e,n,r,i,o){let s=A.length+r,a=s+8,c=t.row===s,u=un[r].padEnd(Kp),l=t.linkOf(a)!==void 0?e.dim("⇠"):" ";return`${st({kind:"open",slot:s},`${YS(e,n,c)}${c?e.bold(u):u}`)}${WS(t,e,n,s,i,o)}${l} ${WS(t,e,n,a,i,o)}`}function VS(t){return 14+2*ac(t)}function S3(t){let e=ac(t)>=16;return[[2," ANSI "],[2+Kp,e?" Normal 0–7 ":" Normal "],[5+Kp+ac(t),e?" Bright 8–15 ":" Bright "]]}function E3(t,e,n,r,i){let o=t.slot(),s=He(o),a=VS(i),c=a-2,u=` ${s.name}${o>=A.length?` · ${s.about}`:""} `,l=[` ${e.dim(uS(o))}`];if(o>=2){let f=Hv(r,o).filter((p)=>p.count>0),h=f.length>0?f.map((p)=>`${p.name} ${p.count}`).join(" · "):"none",m=Kt("w",t.where?ql(e,n,"w where"):e.dim("w where"));l.push(vt(` ${e.dim("Shown in")} ${h}`,`${m} `,c))}let d=o-A.length;if(d===0||d===7||d===8||d===15){let f=t.lch[o].l,h=t.lch[0].l,m=t.lch[1].l,p=Math.abs(f-h)<=Math.abs(f-m)?"the background":"the text";l.push(` ${e.dim(`L ${f.toFixed(2)} reads near ${p}`)}`)}return[e.dim(Xt(a,"top",[[2,u]])),...l.map((f)=>ln(e,f,a)),e.dim(Xt(a,"bottom"))]}function Wl(t,e){return ur-t*(ur-nc)/(e*2-1)}function ZS(t,e,n,r,i){let o=Wl(Math.max(0,Math.min(e*2-1,t*2-0.5)),e),s=Math.max(0,Math.min(1,(n-0.5)/Math.max(1,r-1)));return{lightness:o,chroma:s*rc(o,i)}}function M3(t,e,n,r,i,o){let s=(d)=>{let f=Math.max(0,Math.min(i*2-1,Math.round((ur-d.l)/(ur-nc)*(i*2-1))));return{row:Math.floor(f/2),col:Math.round(Gl(d.l,d.c,d.h)*(r-1))}},{row:a,col:c}=s(e),u=o?s(o):{row:-1,col:-1},l=(d,f)=>{return`#${(Nn(d,f*rc(d,e.h),e.h)??[0,0,0]).map((m)=>m.toString(16).padStart(2,"0")).join("")}`};return Array.from({length:i},(d,f)=>{let h="";for(let m=0;m<r;m++){if(f===a&&m===c){h+=t.color?`${t.bg(n)}${t.fg(Xa(n))}●\x1B[39;49m`:"●";continue}let p=m/Math.max(1,r-1);if(f===u.row&&m===u.col){let b=l(Wl(f*2+1,i),p);h+=t.color?`${t.bg(b)}${t.fg(Xa(b))}○\x1B[39;49m`:"○";continue}h+=t.color?`${t.fg(l(Wl(f*2,i),p))}${t.bg(l(Wl(f*2+1,i),p))}▀\x1B[39;49m`:"·"}return st({kind:"plane",row:f,rows:i},h)})}function x3(t,e,n){if(t.format==="rgb"){let[r,i,o]=[1,3,5].map((s)=>Number.parseInt(e.slice(s,s+2),16));return`rgb(${r} ${i} ${o})`}if(t.format==="oklch")return`oklch(${n.l.toFixed(3)} ${n.c.toFixed(3)} ${n.h.toFixed(0)})`;return e}function QS(t,e,n){let r=t.slot(),i=t.lch[r],s=Ll(t,r,i).filter((c)=>c.ok===!1||c.text.startsWith("Chroma ○")).flatMap((c)=>wt(c.text,n-2).map((u,l)=>`${l===0?c.ok===!1?e.bold("✗"):e.dim("○"):" "} ${u}`)),a=Cl(t,r);return[...s.slice(0,3),...a?[e.dim(a)]:[]]}function XS(t,e,n){let r=t.pair(t.slot());if(!r)return;let i=t.slot()>=r.bright,o=zS(i?r.normal:r.bright).toLowerCase(),s=`${r.lift>=0?"+":""}${r.lift.toFixed(2)}`,a=n-9,c=i?r.on?[`⇠ Linked to ${o} · L ${s}`,`⇠ ${o} · L ${s}`,`⇠ ${o}`]:[`Not linked to ${o}`,"Not linked"]:r.on?[`Bright follows · L ${s}`,"Bright follows"]:["Its bright moves on its own","Moves on its own"],u=c.find((l)=>B(l)<=a)??c[c.length-1]??"";return vt(e.dim(u),Kt("l",`${e.bold("l")} ${e.dim(r.on?"unlink":"link")}`),n)}function tE(t,e,n){let r=t.slot(),i=t.list[r],o=t.lch[r],s=t.typing!==void 0?e.bold(`${t.typing}▏`):Kt("#",e.bold(x3(t,i,o))),a=t.start[r],c=e.color?`${e.fg(a)}■\x1B[39m `:"";return vt(s,a!==i?e.dim(`was ${c}${a}`):"",n)}function O3(t,e,n,r,i){let o=t.slot(),s=t.lch[o],a=t.list[o],c=r-4,u=e.dim("│"),l=(x)=>`${u} ${rt(x,c)} ${u}`,d=XS(t,e,c),f=6+(d?1:0),h=QS(t,e,c).slice(0,Math.max(0,i-f-Kl)),m=Math.max(Kl,Math.min(g3,i-f-h.length)),p=" L × C ",b=` H ${s.h.toFixed(0)}° `,$=Math.max(0,r-4-B(" L × C ")-B(b)),k=[`${e.dim("╭─")}${e.dim(" L × C ")}${e.dim("─".repeat($))}${e.dim(b)}${e.dim("─╮")}`],v=t.origin();for(let x of M3(e,s,a,c,m,v?.lch))k.push(l(x));let S=cn[2];k.push(l(st({kind:"bar",channel:2},tc(e,_l(s,S,c),eo(s.h,S.min,S.max,c),t.mode==="tune"&&t.channel===2,v&&eo(v.lch.h,S.min,S.max,c))))),k.push(l(Hl(e,t,Math.max(8,c-11),v?.ratio)));let M=(x,H)=>st({kind:"format",format:H},t.format===H?ql(e,n,x):e.dim(` ${x} `));if(k.push(l(`${M("Hex","hex")} ${M("RGB","rgb")} ${M("OKLCH","oklch")}`)),k.push(l(tE(t,e,c))),d)k.push(l(d));for(let x of h)k.push(l(x));let I=rt(` ${KS} `,r-4,!1);return k.push(`${e.dim("╰─")}${e.dim(I)}${e.dim("─".repeat(Math.max(0,r-4-B(I))))}${e.dim("─╯")}`),{lines:k.map((x)=>st({kind:"picker"},x))}}var sc=[["Hex","hex"],["RGB","rgb"],["OKLCH","oklch"]];function I3(t,e,n,r,i){let o=t.lch[t.slot()],s=r-2,a=XS(t,e,s),c=6+(a?1:0),u=QS(t,e,s).slice(0,Math.max(0,i-c-Kl)),l=Math.max(Kl,Math.min(b3,i-c-u.length)),d=(x)=>` ${rt(x,s)} `,f=[d(vt(e.dim("L × C"),e.dim(`H ${o.h.toFixed(0)}°`),s))];for(let x=0;x<l;x++)f.push(d(st({kind:"plane",row:x,rows:l}," ".repeat(s))));let h=f.length;f.push(d(st({kind:"bar",channel:2}," ".repeat(s))));let m=f.length,p=t.mode==="tune"&&t.channel===Qt,b={kind:"channel",channel:Qt},$=`${t.ratio().toFixed(2)}:1`.padStart(8),k=s-11;f.push(d(`${st(b,p?e.bold("◐"):e.dim("◐"))} ${st({kind:"bar",channel:Qt}," ".repeat(k))} ${st(b,p?e.bold($):e.dim($))}`));let v=f.length,S=Math.floor(s/sc.length);f.push(d(sc.map(([x,H],N)=>{let j=N===sc.length-1?s-S*N:S,W=Math.floor((j-B(x))/2),_=`${" ".repeat(W)}${x}${" ".repeat(j-W-B(x))}`,X=t.format===H?e.color?`${e.fg(n.cursor)}${e.bold(_)}\x1B[39m`:`[${x}]`.padEnd(j):e.dim(_);return st({kind:"format",format:H},X)}).join("")));let M=f.length;f.push(d(` ${tE(t,e,s-2)} `));let I=a?f.length:void 0;if(a)f.push(d(a));for(let x of u)f.push(d(x));return f.push(d(e.dim(KS))),{lines:f.map((x)=>st({kind:"picker"},x)),parts:{plane:{row:1,col:1,cols:s,rows:l},hue:{row:h,col:1,cols:s,rows:1},contrast:{row:m,col:3,cols:k,rows:1},tabs:{row:v,col:1,cols:s,rows:1},field:{row:M,col:1,cols:s,rows:1},divider:I}}}function R3(t,e,n,r,i,o){let s=t.slot(),a=t.lch[s],c=t.list[s],u=(h)=>({row:r+h.row,col:i+h.col,cols:h.cols,rows:h.rows}),l=(h)=>Math.log(Math.max(1,h))/Math.log(21),d=t.partner().floor,f=t.origin();return{panel:{row:r,col:i,cols:n.plane.cols+2,rows:o},ground:e.background,ink:e.foreground,accent:e.cursor,plane:{...u(n.plane),h:a.h,l:a.l,c:a.c},hue:{...u(n.hue),h:a.h,color:c},contrast:{...u(n.contrast),at:l(t.ratio()),floor:d===void 0?void 0:l(d),color:c,lit:t.channel===Qt},tabs:{...u(n.tabs),active:sc.findIndex(([,h])=>h===t.format),count:sc.length},field:u(n.field),divider:n.divider===void 0?void 0:r+n.divider,origin:f&&{...f.lch,color:f.hex,at:l(f.ratio)}}}function P3(t,e,n,r,i,o,s,a){let u=o??1,l=s-1-u,d=u-2,f=12+2*ac(r)-Wp,h=a?I3:O3,m=h(t,e,n,f,Number.POSITIVE_INFINITY),p=m.lines.length<=l||m.lines.length>d&&l>=d,b=p?l:d,$=m.lines.length<=b?m:h(t,e,n,f,b),k=p?u+1:u-$.lines.length,v=Array.from({length:s},(S,M)=>i[M]??"");return $.lines.forEach((S,M)=>{let I=k+M;if(I>=0&&I<s)v[I]=H$(v[I],Wp,S)}),{lines:v,art:$.parts&&R3(t,n,$.parts,k,Wp,$.lines.length)}}function N3(t,e,n,r,i){let o=r.side,s=jp(t),a=t.changedOnly?e.color?`${zp}●\x1B[39m`:"●":" ",c=s===0?e.dim("Gate ✓"):e.bold(`Gate ✗ ${s}`),u=vt(` ${e.bold("Colors")} ${c}`,Kt("m",`${t.changedOnly?e.bold("⧩ changed"):e.dim("⧩ changed")}${a} `),o),l=i-1,d=t.misses(),f=VS(o),h=[],m,p=A.map((k,v)=>v).filter((k)=>t.visible(k));if(p.length>0){h.push(e.dim(Xt(f,"top",[[2," Base "]])));for(let k of p){if(k===t.slot())m=h.length;h.push(ln(e,y3(t,e,n,k,f-2,d),f))}}let b=un.map((k,v)=>v).filter((k)=>t.visible(A.length+k)||t.visible(A.length+k+8));if(b.length>0){h.push(e.dim(Xt(f,p.length>0?"mid":"top",S3(o))));for(let k of b){if(t.row===A.length+k)m=h.length;h.push(ln(e,v3(t,e,n,k,o,d),f))}}if(p.length>0||b.length>0)h.push(e.dim(Xt(f,"bottom")));if(t.visible(t.slot()))h.push(...E3(t,e,n,r,o));let $=ec(e,t,l-h.length,f);return h.push(...Array.from({length:Math.max(0,l-h.length-$.length)},()=>""),...$),{lines:[u,...h.slice(0,l)],anchor:m===void 0?void 0:m+1}}function A3(t,e,n,r){let o=`${e.fg(t.list[2])}◆${e.color?"\x1B[39m":""} ${e.bold(t.options.title)} ${e.dim(`· ${t.options.name}`)}`,s=t.dirty(),a=t.changes(),c=e.color?`${zp}●\x1B[39m`:"●",u=s?`${c} ${e.dim(a>0?`unsaved · ${a} changed`:"unsaved")}`:"",l=s?`${Kt("R",e.dim("Reset"))} ${Kt("s",ql(e,n,"Save"))}`:"",d=[o,u,l].filter(Boolean).join(" "),f=(p,b,$)=>Kt(p,$?ql(e,n,b):e.dim(b)),m=[...t.options.find||t.pictures>0?[f("b",`▣ ${t.pictures>0?`${t.pictures} `:""}Picture`,t.pic&&(t.pictures>0||!!t.options.find))]:[],f("i","⌖ Inspect",t.inspect),`${f("u","↶",!1)} ${f("ctrl+r","↷",!1)}`,f("I","Import ▾",t.menu==="import"),...t.options.exports?[f("x","Export ▾",t.menu==="export")]:[]].join(" ");return vt(d,`${m} `,r)}var T3={kind:"open",slot:0};function H3(t,e,n){return t.color?`${n?"\x1B[49m":t.bg(e.background)}${t.fg(e.foreground)}`:""}function C3(t,e,n,r,i,o){let s=Ya(r),a=H3(e,n,o),c=t.slot();return Array.from({length:r.rows},(u,l)=>{let d=s[l],f=[{text:" ",sgr:a}];if(d)d.forEach((p,b)=>{let $=i&&i.pane===r.id&&i.line===l&&i.run===b,k=e.color?$?`${a}${e.bg(n.foreground)}${e.fg(n.background)}`:`${a}${jl(e,n,p.role,lp(p.role,c))}${t.where&&!up(p.role,c)?"\x1B[2m":""}`:"";f.push({text:p.text,sgr:k,target:{kind:"run",spot:{pane:r.id,line:l,run:b}}})});let h=Dl(f,0,r.width-1),m=r.width-zl(h);return m>0?[...h,{text:" ".repeat(m),sgr:a,target:T3}]:h})}function L3(t,e,n){let r=t.slotsHere();if(!r)return;let i=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",o=e.color?`${i}\x1B[2m`:"",s=(d)=>({text:d,sgr:o}),a="┌ Slots here ",c="└ enter its slot · esc ",u=[[s(`${a}${"─".repeat(oc-B(a)-1)}┐`)]],l=[["text",r.text]];if(r.ground!==r.text)l.push(["ground",r.ground]);for(let[d,f]of l){let h={kind:"open",slot:f},m=t.shown()[f],p=f<A.length?"":He(f).about;u.push([{text:"│ ",sgr:o,target:h},{text:d.padEnd(7),sgr:o,target:h},{text:"■",sgr:e.color?`${i}${e.fg(m)}`:"",target:h},{text:" ",sgr:i,target:h},{text:He(f).name.slice(0,14).padEnd(14),sgr:i,target:h},{text:p.padEnd(oc-27),sgr:o,target:h},{text:" │",sgr:o,target:h}])}return u.push([s(`${c}${"─".repeat(oc-B(c)-1)}┘`)]),u.map((d)=>Dl(d,0,oc))}function F3(t,e,n){if(!t.menu)return;let r=t.menu==="export"?["Share code","Add command","Palette file"]:["Another palette","A share code"],i=24,o=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",s=e.color?`${o}\x1B[2m`:"",a=t.menu==="export"?"Copy ":"Take from ",c=[[{text:`┌ ${a}${"─".repeat(Math.max(0,i-3-a.length))}┐`,sgr:s}]];return r.forEach((u,l)=>{let d=l===t.entry,f={kind:"entry",index:l};c.push([{text:"│",sgr:s},{text:` ${d?"▌":" "} ${u.padEnd(i-6)}`,sgr:d&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}\x1B[1m`:o,target:f},{text:"│",sgr:s}])}),c.push([{text:`└${"─".repeat(i-2)}┘`,sgr:s}]),c}var j3=["#ff5f57","#febc2e","#28c840"];function _3(t,e,n,r){let i=e.color?`${e.bg(eE(n))}${e.fg(n.foreground)}`:"",o=[{text:" ",sgr:i}];for(let u of j3)o.push({text:"●",sgr:e.color?`${i}${e.fg(u)}`:""},{text:" ",sgr:i});o.push({text:" ",sgr:i});let s=Tv(),a=(t.scene%s.length+s.length)%s.length;s.forEach((u,l)=>{let d={kind:"scene",scene:l};o.push(l===a?{text:` ${u} `,sgr:e.color?`${i}${e.bg(bt(n.background,n.foreground,0.3))}\x1B[1m`:"",target:d}:{text:` ${u} `,sgr:e.color?`${i}\x1B[2m`:"",target:d},{text:" ",sgr:i})});let c="⇧←→ ";return[...o,{text:" ".repeat(Math.max(0,r-zl(o)-B(c))),sgr:i},{text:c,sgr:e.color?`${i}\x1B[2m`:""}]}function eE(t){return bt(t.background,t.foreground,0.14)}function B3(t,e,n){let{frame:r}=n,i=bt(e.background,e.foreground,0.45),o=t.color?`${t.bg(nE(e))}${t.fg(i)}`:"",s=t.color?`${t.bg(eE(e))}${t.fg(i)}`:"",a=(u,l)=>u===r.row||u===r.row+r.rows-1||l===r.col||l===r.col+r.cols-1,c=[];for(let[u,l]of _v(n.rules))for(let[d,f]of l)c.push([u,d,[{text:f,sgr:a(u,d)?o:s}]]);return c}function nE(t){return bt(t.background,t.foreground,0.08)}function rE(t,e){return qa(t,e,0)?.inner}function iE(t,e,n,r,i={}){let o=qa(e,n,t.scene);if(!o)return;let s=xs(r),a=t.shown(),c=Ut(a),u=Ut(i.chrome?[...i.chrome]:t.list),l=N3(t,s,u,o,n-1),d=t.mode==="tune"?P3(t,s,u,o.side,l.lines,l.anchor,n-1,r&&i.art===!0):{lines:l.lines,art:void 0},f=d.lines,h=i.behind===!0,m=t.inspect?$l(o,t.spot):void 0,p=s.color?s.bg(nE(u)):"",b=Array.from({length:n-3},()=>[{text:" ".repeat(o.width),sgr:p}]),$=(N,j,W)=>{let _=N-2;if(_>=0&&_<b.length)b[_]=$3(b[_],j,W)},k=o.side+1;for(let[N,j,W]of B3(s,u,o))$(N,j-k,W);for(let N of o.tiles)C3(t,s,c,N,m,h).forEach((j,W)=>{$(N.row+W,N.col-k,j)});$(o.title.row,o.title.col-k,_3(t,s,u,o.title.cols));let v=m?L3(t,s,c):void 0;if(m&&v){let N=o.tiles.find((W)=>W.id===m.pane),j=Ya(N)[m.line]?.[m.run];if(j){let W=Math.max(0,Math.min(N.col-k+1+j.col,o.width-oc)),_=N.row+m.line,X=_+1,z=X+v.length-2>n-2?_-v.length:X;v.forEach((xt,et)=>{$(z+et,W,xt)})}}let S=F3(t,s,c);if(S){let N=Math.max(0,o.width-24-(t.menu==="import"?12:2));S.forEach((j,W)=>{$(2+W,N,j)})}let M=A3(t,s,u,o.width),I=s.dim("─".repeat(o.width)),x=s.dim("│"),H=[];for(let N=0;N<n-1;N++){let j=N===0?M:N===1?I:k3(b[N-2]??[],r);H.push(`${rt(f[N]??"",o.side)}${x}${j}`)}return{lines:H,art:d.art}}var oE=80,sE=24,Dp=11;function G3(t,e,n,r){let i=Lp(e,n);return cn.map((o,s)=>{let a=e.mode==="tune"&&s===e.channel,c=n[o.key],u=`${c.toFixed(o.digits)}${o.wraps?"°":""}`.padStart(6),l=tc(t,_l(n,o,r),eo(c,o.min,o.max,r),a,o.key==="c"&&i!==void 0?eo(i,o.min,o.max,r):void 0),d=o.key.toUpperCase(),f={kind:"channel",channel:s};return`${st(f,a?t.bold(`▸${d}`):t.dim(` ${d}`))} ${st({kind:"bar",channel:s},l)} ${st(f,a?t.bold(u):t.dim(u))}`})}function U3(t,e){if(e.mode!=="tune"||e.slot()<A.length)return[];let n=Ut(e.list),r=Ss.map((o)=>st({kind:"scope",scope:o},o!==e.scope?t.dim(o):t.color?`${t.bg(n.selection)}${t.fg(n.foreground)} ${o} \x1B[39;49m`:`[${o}]`)),i=e.scoped().length;return[`${t.dim("Scope")} ${r.join(" ")}`,t.dim(i>1?`${i} slots move by the same step, each keeping its own color`:"This slot moves alone · a widens it")]}var aE={background:(t)=>t.background,foreground:(t)=>t.foreground,hue:(t)=>t.cursor,tint:(t)=>t.background,lightness:(t)=>t.ansi[4],chroma:(t)=>t.ansi[1],brights:(t)=>t.ansi[12]};function W3(t){return`oklch ${t.l.toFixed(3)} ${t.c.toFixed(3)} ${t.h.toFixed(0)}°`}function K3(t,e){return`${t.dim("oklch")} ${t.bold(`${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(0)}°`)}`}function z3(t,e,n,r=to){let i=e.misses(),o=Ut(e.list),s=e.slot(),a=(d)=>{let f=e.list[d],h=d===s,m=e.signature.includes(An[d])?"◆":t.color?"■":" ",p=i.has(d)?"✗":e.tone&&e.changed(d)?"●":" ",$=`${t.color?`${t.fg(f)}${m}${h?t.fg(o.foreground):"\x1B[39m"} `:`${m} `}${Fl(e.lch[d])}${p}`;if(!h)return st({kind:"slot",slot:d},` ${$}`);return st({kind:"slot",slot:d},t.color?`${t.bg(o.selection)}${t.fg(o.foreground)} ${$}\x1B[39;49m`:`›${$}`)},c=(d)=>d?t.color?`${t.fg(o.cursor)}▌\x1B[39m `:"▌ ":" ",u=[t.dim(Xt(r,"top",[[2," Base "]]))];for(let d=0;d<A.length;d++){let f=d===e.row,h=A[d].padEnd(10);u.push(ln(t,`${st({kind:"slot",slot:d},`${c(f)}${f?t.bold(h):h}`)}${a(d)}`,r))}u.push(t.dim(Xt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])));for(let d=A.length;d<sr;d++){let f=d===e.row,h=un[d-A.length].padEnd(10),m=st({kind:"slot",slot:d+(e.col===1?8:0)},`${c(f)}${f?t.bold(h):h}`);u.push(ln(t,`${m}${a(d)}${a(d+8)}`,r))}u.push(t.dim(Xt(r,"bottom")));let l=ec(t,e,n-u.length,r);return[...u,...Array.from({length:Math.max(0,n-u.length-l.length)},()=>""),...l]}function D3(t,e,n){let r=Ut(e.list),i=[` ${t.dim("Seeds")}`];Ji.forEach((o,s)=>{let a=s===e.field,c=e.seeds[o.key],u=Array.from({length:Dp},(b,$)=>{let k=o.min+(o.max-o.min)*$/(Dp-1);return aE[o.key](ni({...e.seeds,[o.key]:k}))}),l=tc(t,u,eo(c,o.min,o.max,Dp),a),d=`${c.toFixed(o.digits)}${o.wraps?"°":""}`.padStart(6),f=aE[o.key](r),h=a?t.color?`${t.fg(r.cursor)}▌\x1B[39m `:"▌ ":" ",m=o.label.padEnd(17),p={kind:"field",field:s};i.push(`${st(p,`${h}${a?t.bold(m):m}`)}${st({kind:"seed",field:s},l)}${st(p,` ${d} ${t.color?`${t.fg(f)}■\x1B[39m `:""}${t.dim(f)}`)}`)}),i.push("");for(let o of wt("Seven seeds grow all twenty colors, each accent on the hue its ANSI role reads as — whatever the seeds, they pass the gate. enter moves on to tune each slot, and the seeds stay behind.",to-4))i.push(` ${t.dim(o)}`);return i.push(""),[...i,...ec(t,e,n-i.length,to)]}function dE(t,e,n,r,i,o){let s=Dt.indexOf(Ri(i)),a=Dt.map((l,d)=>st({kind:"scene",scene:d},d!==s?t.dim(l.name):t.color?`${t.bg(e.selection)}${t.fg(e.foreground)} ${l.name} \x1B[39;49m`:`[${l.name}]`)).join(" "),c=[vt(a,t.dim("⇧←→"),n)],u=`${t.bg(e.background)}${t.fg(e.foreground)}`;for(let l of Ri(i).lines){let d=Yo(l,n-2);if(!d)continue;if(c.length>=r)break;let f=t.color?d.map(([h,m])=>`${jl(t,e,m,FS(o,m))}${h}\x1B[0m${u}`).join(""):d.map(([h])=>h).join("");c.push(`${u} ${rt(f,n-2)} ${t.color?"\x1B[0m":""}`)}return c}var q3=["Bk","Rd","Gr","Ye","Bl","Ma","Cy","Wh"];function cE(t,e,n,r,i,o,s){let a=(i-o)/(s-1),c=fE(e),u=Ut(n),l=(d)=>Math.min(s-1,Math.max(0,Math.round((i-r(Mt(d)))/a)));return Array.from({length:s},(d,f)=>{let m=`${(f%2===0?(i-a*f).toFixed(i>=1?1:2).replace(/^0(?=\.\d\d)/,""):"").padStart(4)} ${t.dim(f%2===0?"┤":"│")}`;for(let p=0;p<8;p++){let b=[" "," "," "," "," "],$=u.ansi[p],k=u.ansi[p+8],v=l($)===f,S=l(k)===f,M=(x)=>{if(x===1&&v)return t.color?`${t.fg($)}●`:"●";if(x===3&&S)return t.color?`${t.fg(k)}○`:"○";return b[x]},I=[0,1,2,3,4].map(M).join("");m+=c.has(p)?t.color?`${t.bg(u.selection)}${I}\x1B[39;49m`:I:`${I}${t.color?"\x1B[39m":""}`}return m})}function fE(t){let e=t.mode==="tune"?t.scoped():[t.slot()];return new Set(e.filter((n)=>n>=A.length).map((n)=>(n-A.length)%8))}function Y3(t,e){let n=fE(e);return` ${q3.map((r,i)=>n.has(i)?t.bold(` ${r} `):t.dim(` ${r} `)).join("")}`}function J3(t,e){let n=Ut(e),r=Array.from({length:40},(o,s)=>{let a=s*9+4.5,c=-1,u=999;for(let[l,d]of Object.entries(ke)){let f=ye(a,d.center);if(f<=d.width&&f<u)u=f,c=Number(l)}return c<0?" ":t.color?`${t.fg(n.ansi[c])}─`:"─"}).join(""),i=(o,s)=>{let a=Array.from({length:40},()=>" ");for(let c of Object.keys(ke).map(Number)){let u=n.ansi[c+o],l=Math.min(39,Math.round(Mt(u).h/9));a[l]=t.color?`${t.fg(u)}${s}\x1B[39m`:s}return` ${a.join("")}`};return[`${t.bold("Hue")} ${t.dim("0° 90° 180° 270° 360°")}`,`${t.dim("bands")} ${r}${t.color?"\x1B[39m":""}`,i(0,"●"),i(8,"○")]}function V3(t,e,n){let r=ar(n,e.signature,e.waive),i=(a)=>He(A.length+a).name,o=(a)=>Mt(n[A.length+a]).h.toFixed(0),s=[...Bn(r).filter(({gap:a})=>a>25).map(({normal:a,gap:c})=>`${i(a)} ${o(a)}° → bright ${o(a+8)}° · ${c.toFixed(0)}° apart · ≤ 25°`),...hr(r).map(({slot:a,over:c})=>{let u=ke[mn(a)];return`${i(a)} ${o(a)}° · ${c.toFixed(0)}° outside ${u.name} ${u.center}±${u.width}°`}),...Gn(r).map(([a,c])=>`${i(a)} and ${i(c).toLowerCase()} read as one color`)];return s.length>0?s.map((a)=>`${t.bold("✗")} ${a}`):[t.dim("✓ Every accent keeps its role and its bright")]}function uE(t,e,n,r,i){let o=e.shown(),s=Math.max(...o.slice(A.length).map((u)=>Mt(u).c)),a=Math.max(0.2,Math.ceil(s/0.05)*0.05),c=[vt(t.bold("Lightness"),t.dim("● normal ○ bright"),n),...cE(t,e,o,(u)=>u.l,1,0.3,8),Y3(t,e)];if(i)c.push("",t.bold("Chroma"),...cE(t,e,o,(u)=>u.c,a,0,5),"",...J3(t,o));return[...c,...V3(t,e,o)].slice(0,r)}function Z3(t,e,n){let r=Ut(e.list),i=(o,s)=>st({kind:"view",view:s},e.view!==s?t.dim(` ${o} `):t.color?`${t.bg(r.selection)}${t.fg(r.foreground)}${t.bold(` ${o} `)}\x1B[39;49m`:`[${o}]`);return vt(`${i("Slot","slot")}${i("Relations","relations")}`,Kt("g",`${t.bold("g")} ${t.dim("switch")}`),n)}function Q3(t,e,n,r){let i=e.slot(),o=e.list[i],s=e.lch[i],a=e.start[i],{name:c,about:u}=He(i),l=e.signature.includes(An[i]),d=Math.max(8,Math.min(64,n-12));if(e.view==="relations"&&e.mode!=="tune")return[Z3(t,e,n),"",...uE(t,e,n,r-2,!0)];let f=i>=A.length?t.dim("Uses underlined below"):l?t.dim("◆ signature"):"",h=[vt(`${t.bold(c)} ${t.dim(u)}`,e.view==="relations"?"":f,n),""],m=t.color?`${t.fg(o)}${"█".repeat(8)}\x1B[39m `:"",p=e.typing!==void 0?`${t.bold(`${e.typing}▏`)}`:void 0,[b,$,k]=nt(o);if(h.push(`${m}${p??K3(t,s)}`),h.push(`${m}${t.dim(`${o} · rgb ${b} ${$} ${k}`)}`),e.view!=="relations"){let I=t.color?`${t.fg(a)}■\x1B[39m `:"";h.push(`${m}${a!==o?t.dim(`was ${I}${W3(e.lchOf(a)).slice(6)} · ${a}`):t.dim("as it opened")}`)}h.push(""),h.push(...G3(t,e,s,d),Hl(t,e,d));let v=U3(t,e);if(v.length>0)h.push(...v);if(e.view==="relations")return h.push("",...uE(t,e,n,r-h.length-1,!1)),h;h.push("");for(let I of Ll(e,i,s))wt(I.text,n-2).forEach((x,H)=>{h.push(`${H===0?Fp(t,I.ok):" "} ${I.ok===!1?x:t.dim(x)}`)});let S=Cl(e,i);if(S)h.push(t.dim(` ${S}`));let M=r-h.length-1;if(M>=3)h.push("",...dE(t,Ut(e.shown()),n,M,e.scene,i));return h}function X3(t,e,n,r){return[vt(`${t.bold("Sample")} ${t.dim("what the seeds grow")}`,"",n),"",...dE(t,Ut(e.list),n,r-2,e.scene,-1)]}var t8=[["Slots","↑↓ slot · ←→ normal or bright · home end · pgup the base colors · pgdn the ANSI ones · n N the next and last miss"],["Tune","enter or tab opens the picker over the list, under the slot · ↑↓ lightness · ←→ chroma · ⇧←→ hue by 5, , . by 1 · pgup pgdn lightness ×5 · tab ◐ contrast · home end the ends · 0-9 jump · enter keeps · esc undoes · a click outside it keeps"],["Contrast","◐ moves lightness until the ratio to the color it is read against changes · home the gate’s floor · 1-9 that ratio"],["Chroma","stops at the sRGB edge · what lightness or hue takes away comes back while you tune, where it fits again (○)"],["Scope","a while tuning: this, pair, normals, brights or accents — the slots in it move by the same step, each keeping its own color"],["Relations","g shows the lightness, chroma and hue of every ANSI color at once, and the relations the gate checks"],["Sample","⇧←→ another tab · the slot under the cursor is underlined where it is used · w dims the rest"],["Inspect","i, or a click on the sample, finds the slots a spot uses · ←→↑↓ move · enter goes to the slot · esc leaves"],["Link","l makes a bright follow its normal — tuning the normal moves it, tuning the bright alone unlinks it · = snaps it to its normal"],["Filter","m only the slots that changed · n and N walk the gate misses listed under the slots"],["Export","x copies the share code, an add command or the palette file · I takes colors from another palette or a share code"],["Type","# then #rrggbb, rgb(r g b) or oklch(l c h) — a paste works too"],["Slot","c copies · v pastes · r puts it back as it opened, R all of them · = the bright follows its normal · * marks it a signature color"],["Palette","f moves the colors the gate misses · o takes another palette’s colors"],["Gate","✗ marks every slot whose own checks miss, and each miss names its slots"],["History","u undo · ctrl+r redo"],["Pictures","p finds one on the boorus, tried on in these colors · b shows or hides it behind the editor · drop a picture on the window, or paste one, its path or its link · ctrl+v takes the clipboard’s"],["Compare","space shows the colors you started from, on the terminal too"],["Save","s saves · esc cancels, asking first when something changed"]];function e8(t,e,n){let r=[` ${t.bold("Help")}`,""];for(let[i,o]of t8.filter(([s])=>s!=="Pictures"||e.options.find))wt(o,n-16).forEach((s,a)=>{r.push(` ${t.bold((a===0?i:"").padEnd(11))} ${s}`)});return r}function n8(t,e,n,r){let i=e.choices(),o=e.options.palettes?.length??0,s=e.filter?`${t.bold(e.filter)}▏`:t.dim("type to filter"),a=[vt(` ${t.bold("Take colors from")} ${s}`,t.dim(`${i.length}/${o}`),n),""],c=r-2,u=Math.max(0,Math.min(e.pick-Math.floor(c/2),i.length-c)),l=Math.min(40,Math.max(12,...i.map((d)=>B(d.name))));if(i.slice(u,u+c).forEach((d,f)=>{let h=u+f===e.pick,m=d.colors,p=t.color?`${t.bg(m.background)} ${[...m.ansi].map((k)=>`${t.fg(k)}■`).join("")} ${t.fg(m.foreground)}Aa \x1B[0m`:"",b=h?"▌ ":" ",$=d.name.padEnd(l);a.push(st({kind:"choice",index:u+f},`${b}${h?t.bold($):$} ${p}`))}),i.length===0)a.push(` ${t.dim(`No palettes match '${e.filter}'`)}`);return a}var r8=new Set(["enter","s","?","g","a","i"]);function lE(t,e,n,r){let i=t.fg((r??e.list)[2]),o="EDIT",s="",a=[],c="";if(e.quitting)o="EDIT (QUIT)",s=e.added>0?`Discard changes and ${e.added} ${e.added===1?"picture":"pictures"}?`:"Discard changes?",a=[["y","discard"],["n","keep editing"]];else if(e.typing!==void 0)o="EDIT (TYPE)",s=t.dim("#rrggbb, rgb(r g b) or oklch(l c h)"),a=[["enter","set"],["ctrl+u","clear"]],c="esc back";else if(e.overlay==="keys")o="HELP",c="any key closes";else if(e.overlay==="open")o="EDIT (OPEN)",a=[["↑↓","palette"],["a-z","filter"],["enter","take its colors"]],c="esc close";else if(e.menu)o=e.menu==="export"?"EDIT (EXPORT)":"EDIT (IMPORT)",a=[["↑↓","item"],["enter","choose"]],c="esc close";else if(e.compare)o="EDIT (BEFORE)",s="The colors you started from",a=[["space","back to yours"]],c="esc back";else if(e.mode==="seeds")o="EDIT (SEEDS)",a=[["↑↓","seed"],["←→","step"],["⇧←→","×5"],["enter","tune the slots"],["o","open a palette"],["p","picture"],["?","keys"]],c="esc cancel";else if(e.mode==="tune")o="EDIT (TUNE)",a=[["↑↓","L"],["←→",e.channel===Qt?"ratio":"C"],["⇧←→","H"],["tab","◐"],...e.slot()>=A.length?[["a","scope"]]:[],[e.channel===Qt?"1-9":"0-9",e.channel===Qt?"ratio":"jump"],["#","type"],["enter","keep"]],c="esc undo";else if(e.inspect)o="EDIT (INSPECT)",a=[["←→↑↓","spot"],["tab","pane"],["enter","its slot"],["i","leave"]],c="esc leave";else a=[["↑↓","slot"],["←→","normal or bright"],["enter","tune"],["i","inspect"],["l","link"],["m","changed"],["g",e.view==="slot"?"relations":"slot"],...e.misses().size>0?[["n","next miss"]]:[],["#","type"],["f","fix"],["p","picture"],["b","picture layer"],["x","export"],["u","undo"],["s","save"],["?","keys"]],c="esc cancel";if(!e.options.find)a=a.filter(([d])=>d!=="p"&&d!=="b");if(!e.options.exports||!e.roomy)a=a.filter(([d])=>d!=="x");if(!e.roomy)a=a.filter(([d])=>d!=="i"&&d!=="m");if(e.notice)s=t.color?`\x1B[33m${e.notice}\x1B[39m`:e.notice,a=[];let u=t.color?`\x1B[7;1m${i} ${o} \x1B[0m `:`[${o}] `,l=c?Kt(c.split(" ")[0],`${t.bold(c.split(" ")[0])} ${t.dim(c.split(" ").slice(1).join(" "))}`):"";for(;;){let d=[s,...a.map(([m,p])=>Kt(m,`${t.bold(m)} ${t.dim(p)}`))].filter(Boolean),f=`${u}${d.join(" ")}`,h=-1;if(a.forEach(([m],p)=>{if(p>0&&!r8.has(m))h=p}),B(f)+B(c)+3<=n||h<0)return c?vt(f,l,n):rt(f,n);a=a.filter((m,p)=>p!==h)}}function i8(t,e,n,r,i={}){let o=xs(r);if(e<oE||n<sE){let p=[o.bold("ttheme palette editor"),`Needs ${oE}×${sE} — now ${e}×${n}`,o.dim("esc cancels")];return{lines:Array.from({length:n},(b,$)=>rt(p[$]??"",e)),art:void 0}}if(t.viewport(e,n),!t.overlay&&t.mode!=="seeds"){let p=iE(t,e,n,r,i);if(p)return{lines:[...p.lines,lE(o,t,e,i.chrome)],art:p.art}}let s=t.failing().length,a=s===0?"✓ Passes the gate":`✗ ${s} ${s===1?"miss":"misses"} in the gate`,c=t.pictures>0?o.dim(`▣ ${t.pictures} ${t.pictures===1?"picture":"pictures"} `):"",u=`${t.dirty()?`${o.color?"\x1B[33m●\x1B[39m":"●"} unsaved `:""}${c}${o.dim(a)}`,d=`${o.fg(t.list[2])}◆${o.color?"\x1B[39m":""} ${o.bold(t.options.title)} ${o.dim(`· ${t.options.name}`)}`,f=n-4,h;if(t.overlay==="keys")h=e8(o,t,e);else if(t.overlay==="open")h=n8(o,t,e,f);else{let p=e-to-2,b=t.mode==="seeds"?D3(o,t,f):z3(o,t,f),$=t.mode==="seeds"?X3(o,t,p,f):Q3(o,t,p,f);h=Array.from({length:f},(k,v)=>`${rt(b[v]??"",to)}${o.dim("│")} ${rt($[v]??"",p)}`)}let m=[vt(d,u,e),""];for(let p=0;p<f;p++)m.push(rt(h[p]??"",e));return m.push("",lE(o,t,e,i.chrome)),{lines:m,art:void 0}}var o8=new Set(["tab","a","#","l","enter","esc"]),s8=new Set(["picker","plane","bar","channel","format","scope","open","slot"]);function a8(t){if(!t)return!0;return t.kind==="key"?!o8.has(t.key):!s8.has(t.kind)}function c8(t,e,n){if(n.action==="wheel"){if(!n.sideways)t.scroll(n.wheel);return}if((n.action==="press"||n.action==="drag")&&n.button!=="left")return;if(n.action==="press"&&t.overlay==="keys"){t.press("esc");return}let r=e?.target;if(n.action==="press"&&t.mode==="tune"&&t.roomy&&!t.overlay&&a8(r))t.dismiss();if(!e||!r)return;let i=e.width>1?(e.exact.x-0.5)/(e.width-1):0;if(n.action==="release"){if(!e.inside)return;if(r.kind==="key")t.press(r.key);else if(r.kind==="entry")t.choose(r.index);else if(n.count===2&&r.kind==="slot"&&t.mode==="list")t.press("enter");else if(n.count===2&&r.kind==="choice"&&t.overlay==="open")t.press("enter");return}if(r.kind==="plane"){let o=ZS(r.row+e.exact.y,r.rows,e.exact.x,e.width,t.lch[t.slot()].h);t.plane(o.lightness,o.chroma)}else if(r.kind==="bar")t.slide(r.channel,i);else if(r.kind==="seed")t.sow(r.field,i);else if(n.action!=="press")return;else if(r.kind==="slot")t.select(r.slot);else if(r.kind==="open")t.openSlot(r.slot);else if(r.kind==="run")t.point(r.spot);else if(r.kind==="entry")t.entry=r.index;else if(r.kind==="format")t.format=r.format;else if(r.kind==="channel")t.grip(r.channel);else if(r.kind==="scope")t.scopeTo(r.scope);else if(r.kind==="choice"){if(t.overlay==="open")t.pick=r.index}else if(t.typing===void 0&&!t.overlay&&!t.quitting){if(r.kind==="field"&&t.mode==="seeds")t.field=r.field;else if(r.kind==="view"&&t.mode!=="seeds")t.view=r.view;else if(r.kind==="scene")t.scene=r.scene}}var u8=[sl,Rn,Qr,nr];async function hE(t,e){let n=new Ip(t),r=e.backdrop,i=e.layer,o=(a)=>n.typing===void 0&&El(a),s=e.hosted?{modes:[nr,...Xr()],assume:[Rn,Qr],burst:o}:{modes:[...u8,...Xr()],burst:o};return ti(s,async(a)=>{let c=!1,u=!1,l=new Map,d=new Wm,f=await a.ask(`${vh(nn,"")}${Xr().length>0?Y1:""}\x1B[c`,(S)=>{if(S.kind==="color"){l.set(S.code,S.value);return}return d.see(S)},1000);if(f?.cell)a.pixels(f.cell);let h=mk(l),m=h.map((S,M)=>S??n.start[M]),[p,b]=m;if(!h[3])m[3]=bt(p,b,0.2);let $=new Gi({write:(S)=>a.write(S),view:()=>{if(c)return;let{lines:S,art:M}=i8(n,a.cols,a.rows,e.color,{behind:n.pic&&r?.laid===!0,art:i?.ready===!0,chrome:m});return{lines:S,after:()=>`${(n.pic?r?.draw(n.shown(),n.signature,n.waive,a.cols,a.rows,rE(a.cols,a.rows)):r?.clear())??""}${i?.draw(M)??""}`}}}),k=(S=!1)=>{if(S)$.soon();else $.request()},v=async(S)=>{let M=t.find;if(!M)return;c=!0,a.write(`${r?.clear()??""}${i?.clear()??""}`);try{n.found(await M(n.edited(),S))}catch(I){n.notice=I instanceof Error?I.message:String(I)}if(u)return;c=!1,r?.load(),$.reset(Ti),k()};if(a.write(Ti),a.onResize(()=>{r?.resized(),a.write(i?.clear()??""),$.reset(Ti),$.request()}),r)r.load(),r.ready=()=>$.request();if(r||i){let S=new Ha;a.ask(il,(M)=>S.see(M),1000).then((M)=>{if(M)r?.measured(M),i?.measured(M);$.request()})}k();try{let{edited:S}=await a.loop((M)=>{if(c)return;if(M.kind==="paste")n.paste(M.text);else if(M.kind==="key")n.press(M.key);else if(M.kind==="mouse")c8(n,$.point(M),M);if(n.copied!==void 0)a.write(`\x1B]52;c;${Buffer.from(n.copied).toString("base64")}\x07`),n.copied=void 0;if(n.result)return{edited:n.result==="saved"?n.edited():void 0};let I=n.wants;if(I)n.wants=void 0,v(I.start);return},()=>{if(!c)k(!0)});return S}finally{u=!0,$.stop(),a.write(`${r?.close()??""}${i?.clear()??""}`)}})}import{spawn as S8}from"node:child_process";import{createHash as IE}from"node:crypto";import{existsSync as uc,mkdirSync as E8,mkdtempSync as M8,readFileSync as x8,rmSync as Yl}from"node:fs";import{homedir as O8,tmpdir as I8}from"node:os";import{basename as R8,dirname as P8,join as Hn}from"node:path";import{pathToFileURL as gE}from"node:url";import{existsSync as l8,readFileSync as d8,statSync as f8}from"node:fs";import{join as mE}from"node:path";function h8(t,e){try{return JSON.parse(d8(mE(Ve(t),e),"utf8"))}catch{return{}}}function m8(t,e,n){L(mE(Ve(t),e),`${JSON.stringify(n)}
713
+ `)}class qp{caches=new Map;unsaved=new Set;owners=new Map;crediting=new Map;inflight=new Map;home;catalog;entry;signal;credited;constructor(t){this.home=t.home,this.catalog=t.catalog,this.entry=t.entry,this.signal=t.signal,this.credited=t.credited}matesOf(t,e){return this.owners.get(t.key)?.get(e)??[]}async transparent(t,e){let n=this.keep(t,"probes.json"),r=n[e.id];if(r!==void 0)return r;try{let i=await Ys(t,e,this.signal),o=wi(t,e),s=(i===void 0?await Ww(o.site,o.url,this.signal):i)?.alpha===!0;return n[e.id]=s,this.unsaved.add(`${t.key}/probes.json`),s}catch{return!1}}save(){for(let t of this.unsaved){let[e,n]=t.split("/"),r=V.find((i)=>i.key===e);if(r)m8(r,n,this.keep(r,n))}this.unsaved.clear()}owned(t,e,n){this.keep(t,"owners.json")[e]=n,this.unsaved.add(`${t.key}/owners.json`)}credit(t,e){let{site:n,post:r}=t;if(!Hc(n,r))return Promise.resolve();let i=Ee(n,r.id),o=this.crediting.get(i);if(!o)o=this.credits(t,e).finally(()=>this.crediting.delete(i)),this.crediting.set(i,o);return o}async mateOwners(t){let e=this.owners.get(t.key);if(e)return e;let n=N0(this.home),r=this.keep(t,"owners.json"),i=this.catalog.palettes.flatMap((c)=>{let u=n.get(c.name);return c.group===this.entry.group&&c.name!==this.entry.name&&u?.site===t.key?[{name:c.name,id:u.id}]:[]}),o=await Promise.all(i.map(async(c)=>{let u=r[c.id];if(u!==void 0)return{...c,owner:u};try{return{...c,owner:(await xo(t,c.id,this.signal))?.owner??""}}catch{return}})),s=new Map;for(let c of o)if(c)r[c.id]=c.owner,s.set(c.name,c.owner);this.unsaved.add(`${t.key}/owners.json`);let a=Fw(s);return this.owners.set(t.key,a),a}async cached(t,e,n,r){if(l8(e))return f8(e).size;let i=this.inflight.get(e);if(i)return i;let o=(async()=>{let s=await Fc(t,n,this.signal,r);return L(e,s),s.length})();this.inflight.set(e,o);try{return await o}finally{this.inflight.delete(e)}}keep(t,e){let n=`${t.key}/${e}`,r=this.caches.get(n);if(!r)r=h8(t,e),this.caches.set(n,r);return r}async credits({site:t,post:e},n){let r=this.keep(t,"credits.json"),i=r[e.id];if(!i){try{i=await Tc(t,e.id,n)}catch{return}if(!i?.owner)return;r[e.id]=i,this.unsaved.add(`${t.key}/credits.json`)}qs(e,i),this.credited()}}import{rmSync as p8}from"node:fs";import{join as g8}from"node:path";var Rs=2147483645,cc=2147483646,pE=-1073741827,b8=-1073741828,w8=16,$8=0.4,k8=3221225472,y8=256;function v8(t){let e=/^(\d+) (\d+)$/.exec(t??"");return e&&(Number(e[1])>0||Number(e[2])>0)?{x:Number(e[1]),y:Number(e[2])}:void 0}var Yp=v8(process.env.TTHEME_BG_MARGIN);class Jp{screen;gliding;sent=new Map;placed=new Map;covered="";viewed="";bands=Su(process.env);files=Eu(process.env);moves=wk(process.env);layers=Vo(process.env);wipes=$k(process.env);views=Ni(process.env);bandFiles=new Map;nextBand=k8;view;grid;background;renders;scratch;signal;write;constructor(t){this.view=t.view,this.grid=t.grid,this.background=t.background,this.renders=t.renders,this.scratch=t.scratch,this.signal=t.signal,this.write=t.write,this.screen=new Gi({write:(e)=>this.write(e),view:()=>this.frame(),beat:()=>{this.view.beat++}})}draw(){if(!this.signal.aborted)this.screen.request()}soon(){if(!this.signal.aborted)this.screen.soon()}flush(){if(!this.signal.aborted)this.screen.now()}point(t){return this.screen.point(t)}drop(){this.screen.drop()}frame(){if(this.signal.aborted)return;let{cols:t,rows:e,cell:n}=this.grid(),r=ap(this.view,t,e);return this.view.loaderFrom=r.loader?this.view.loaderFrom??this.view.beat:void 0,{lines:r.lines,zones:r.zones,after:(i)=>this.images(r.images,i,n),...this.view.mode==="grid"&&this.view.editing!==void 0?{cursor:this.caret()}:{},ticking:r.tick}}images(t,e,n){let r="",i=new Set,o;for(let s of t){if(this.views&&s.id>=rp){o=s;continue}let a=this.bands?this.banded(s):s;if(!a)continue;if(this.wipes&&[...e].some((u)=>u>=a.row&&u<a.row+a.rows))this.placed.delete(a.id);if(i.add(a.id),this.sent.get(a.id)!==a.path){let u=pl(a,this.files);if(u===void 0)continue;r+=u,this.sent.set(a.id,a.path),this.placed.delete(a.id)}let c=`${a.row};${a.col};${a.cols};${a.rows};${a.crop};${a.z}`;if(this.placed.get(a.id)!==c){if(!this.moves&&this.placed.has(a.id))r+=op(a.id);r+=Sv(a,n),this.placed.set(a.id,c)}}for(let s of this.sent.keys())if(!i.has(s))r+=Ka(s),this.sent.delete(s),this.placed.delete(s);return r+(this.views?this.backdrop(o):this.cover())}glide(){if(this.bands)this.prebake();if(this.gliding)return;let{cols:t,rows:e}=this.grid(),n=rr(t,e).height,r=()=>{let i=this.view,o=i.top*yt.height,s=o-i.scroll;if(s===0||i.mode!=="grid"){i.scroll=o;let a=this.gliding!==void 0;if(this.gliding=void 0,a)this.draw();return}if(Math.abs(s)>2*n)i.scroll=o-Math.sign(s)*n,s=o-i.scroll;i.scroll+=Math.sign(s)*Math.max(1,Math.round(Math.abs(s)*$8)),this.draw(),this.gliding=setTimeout(r,w8)};r()}snap(){clearTimeout(this.gliding),this.gliding=void 0,this.view.scroll=this.view.top*yt.height}resized(){this.screen.reset()}stop(){this.screen.stop(),clearTimeout(this.gliding)}prebake(){let t=this.view,{cols:e,rows:n}=this.grid();for(let r of ap({...t,scroll:t.top*yt.height},e,n).images)if(r.crop!==void 0)this.band(r.path,r.crop,r.rows)}cover(){let{cols:t,rows:e}=this.grid(),n=`${t};${e}`;if(!this.layers||this.covered===n)return"";let r="";if(!this.covered){let i=Buffer.from(nt(this.background)).toString("base64");if(r+=`\x1B_Ga=t,f=24,s=1,v=1,i=${Rs},q=2;${i}\x1B\\`,Yp)r+=`\x1B_Ga=t,f=32,s=1,v=1,i=${cc},q=2;AAAAAA==\x1B\\\x1B[H\x1B_Ga=p,i=${cc},p=${cc},c=1,r=1,C=1,z=${b8},q=2\x1B\\`}else if(!this.moves)r+=op(Rs);if(this.covered=n,Yp){let{x:i,y:o}=Yp;return`${r}\x1B_Ga=p,i=${Rs},p=${Rs},P=${cc},Q=${cc},H=${-i},V=${-o},c=${t+2*i},r=${e+2*o},C=1,z=${pE},q=2\x1B\\`}return`${r}\x1B[H\x1B_Ga=p,i=${Rs},p=${Rs},c=${t},r=${e},C=1,z=${pE},q=2\x1B\\`}backdrop(t){let{cols:e,rows:n,cell:r}=this.grid(),i=e*r.w,o=n*r.h,s=t?`${this.background}|${t.path}|1|${i}|${o}|${i}|${o}|0|0|1`:`${this.background}||1|${i}|${o}|0|0|0|0|5`;if(s===this.viewed)return"";return this.viewed=s,Ai(s)}caret(){return`\x1B[1;${Math.min(this.grid().cols,B(`⌕ ${this.view.editing??""}`)+1)}H`}banded(t){if(t.crop===void 0)return t;let e=this.band(t.path,t.crop,t.rows,!this.gliding);return e?.ready?{...t,id:e.id,path:e.path,crop:void 0}:void 0}band(t,e,n,r=!0){let i=`${t}|${e}|${n}`,o=this.bandFiles.get(i);if(o||!r)return o;let{cell:s}=this.grid(),a=this.nextBand++,c={id:a,path:g8(this.scratch,`band-${a}.png`),ready:!1};return this.bandFiles.set(i,c),this.renders.run({job:"band",from:t,to:c.path,y:e*s.h,height:n*s.h}).then(()=>{c.ready=!0,this.draw()}).catch(()=>{}),this.trimBands(),c}trimBands(){for(let[t,e]of this.bandFiles){if(this.bandFiles.size<=y8)return;if(e.ready&&!this.sent.has(e.id))this.bandFiles.delete(t),p8(e.path,{force:!0})}}}var io=[{name:"TTHEME_FIND_RATING",label:"Rating",about:"The ratings to list, each site read in its own words — space ticks one, and one stays ticked",choices:So,multi:{read:bi}},{name:"TTHEME_FIND_BLOCK",label:"Block",about:"Posts tagged with nudity or underwear are left out — space unticks one",choices:gi,multi:{read:Mo,none:"none"}},{name:"TTHEME_FIND_POSTS",label:"Posts",about:"Every post of the character, or only the transparent cutouts",choices:["all","cutouts"]},{name:"TTHEME_FIND_SOLO",label:"Solo",about:"When on, only the posts known to show the character alone — checked as posts arrive, so the counts below leave it out",choices:["on","off"]},{name:"TTHEME_FIND_ORDER",label:"Order",about:"How posts are ranked: fit, by how well each makes a backdrop; newest; or score",choices:["fit","newest","score"]},{name:"TTHEME_FIND_SETS",label:"Sets",about:"One picture posted over and over, or held by another site too: fold it into one tile, or show each",choices:["fold","show"]},...Es()?[{name:"TTHEME_FIND_REMOVE_BG",label:"Remove bg",about:"Cut the character out of an opaque picture you try on, with macOS Vision",choices:["on","off"]}]:[],{name:"TTHEME_FIND_MIN_SCORE",label:"Min score",about:"Posts scored at least this — danbooru, konachan and yande.re; zerochan keeps no score. ←→ steps, or type any number",choices:Ew,entry:"number",advanced:!0},{name:"TTHEME_FIND_MIN_SIZE",label:"Min size",about:"The shorter side of a picture, in px — every site filters it. ←→ steps, or type any number",choices:Mw,entry:"number",advanced:!0},{name:"TTHEME_FIND_SITES",label:"Sites",about:"The sites the all tab mixes — each keeps its own tab. Space ticks one, and one stays ticked",choices:V.map((t)=>t.name),multi:{read:Ks},advanced:!0},{name:"TTHEME_FIND_HIDE",label:"Hide",about:"Comics, monochrome, sketches or chibi, told by tag in every site's spelling — checked as posts arrive",choices:tf,multi:{read:Oc,none:"none"},advanced:!0},{name:"TTHEME_FIND_HIDE_TAGS",label:"Hide tags",about:"Posts with any of these tags are left out, spaced like cosplay multiple_girls — checked as posts arrive",choices:[],entry:"text",advanced:!0},{name:"TTHEME_FIND_PNG",label:"PNG only",about:"PNG originals only — danbooru counts it, the others are told by the file; zerochan only where danbooru holds it",choices:["off","on"],advanced:!0}];function bE(t,e){if(t.multi)return t.multi.read(e).join(" ")||t.multi.none;if(t.entry==="number")return/^\d+$/.test(e??"")&&Number(e)>0?String(Number(e)):"off";if(t.entry==="text")return zs(e).join(" ");return t.choices.find((n)=>n===e)??t.choices[0]}var N8=["fit","newest","score"];function Vp(t){return N8.find((e)=>e===t)??"fit"}var A8={left:-1,right:1,"shift-left":-10,"shift-right":10};function wE(t){if(process.env.SSH_CONNECTION||!/^(?:https?|file):/i.test(t))return;try{let e=S8(process.platform==="darwin"?"open":"xdg-open",[t],{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}function T8(t,e,n){if(e<0){if(t!=="fill")return Math.max(Vl,t+e);if(!n)return t;return Math.max(Vl,Math.max(100,n)+e+1)}return t==="fill"||t+e>n?"fill":t+e}function RE(t,e){return t.size===e.size&&t.at===e.at&&t.opacity===e.opacity}function H8(t,e){if(RE(t,e))return;return{...t.size!=="fill"?{size:t.size}:{},...t.at!==e.at?{position:Wt[t.at-1]}:{},...t.opacity!==e.opacity?{opacity:t.opacity}:{}}}function $E(t,e){let n=Z(t);return fe(t,e).flatMap((r,i)=>{let[,o,s]=/^([a-z.]+)_(\d+)$/.exec(r.key)??[],a=[...V,ir].find((c)=>c.key===o);if(!a||!s)return[];return[{key:r.key,id:Number(s),ansi:a.ansi,...a===ir?{}:{page:a.pageUrl(Number(s))},up:i===0,from:Hn(n,r.original??r.fill)}]})}function C8(t){return t.length>=2&&!/^\d+$/.test(t)&&!t.includes("://")&&!/^[\w.]+:\d+$/.test(t)}var kE=12,L8=4,F8=150,j8=300,yE=12,_8=2,B8=150,G8="\x1B[?5522$p\x1B]72;t=q\x1B\\\x1B[c",U8=4000,W8=8000,vE=/\.(png|jpe?g|gif|webp|heic|tiff?|bmp)$/i,K8=process.platform==="win32"?"alt+v":"ctrl+v",SE=process.platform==="darwin"?"ctrl+shift+cmd+4 copies a screenshot":"copy a picture first",z8=1280,D8=16,q8=Wt.indexOf("top-right")+1,Vl=20,EE=2,ME=3,Y8=/[\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/u,J8=8,V8=9;function Jl(t,e){return{key:t,groups:[],sources:[],queue:[],rounds:0,roundOf:new Map,last:new Map,kin:new Map,kindred:new Map,shapes:[],seen:new Set,same:new Map,checked:0,total:0,focus:0,top:0,searching:e,stage:"fetch",arrived:new Set}}function lc(t){if(!(t instanceof Error))return String(t);if(t instanceof AggregateError&&t.errors[0])return lc(t.errors[0]);if(t.cause)return lc(t.cause);let e=t.code;if(typeof e==="string")return e;let n=(t.message||t.name).split(".")[0]??"";return n.length>56?`${n.slice(0,55)}…`:n}function Zp(t,e){return`${t}: ${lc(e)}`}function xE(t){return t.width*t.height}function OE(t,e){return`${t}-${IE("sha1").update(e).digest("hex").slice(0,8)}`}class Qp{view;tone;session=new AbortController;cell={w:0,h:0};cols=process.stdout.columns||80;rows=process.stdout.rows||24;gen=0;pumping=0;boards=new Map;board;posts=new Map;thumbPath=new Map;looking=new Map;looked=new Map;matched=new Map;aheading=!1;pages=new Map;tab=0;values=new Map(io.map((t)=>[t.name,bE(t,process.env[t.name])]));direction=1;prefetching=0;related=new Map;pool=[];relating;thumbQueue=[];heldFiles=new Map;heldAsked=new Set;thumbing=0;clarity=new Map;tunedFiles=[];presenting=!1;again=!1;renders=new Qa;showing;thumbless=new Set;current;fetch;settle;suggestTimer;suggesting;countTimer;counting;terminal;grabber=new bp((t)=>this.write(t),(t)=>void this.got(t));noticeTimer;peekTimer;peeked;attaching;done;scratch=M8(Hn(I8(),"ttheme-find-"));home;catalog;entry;tagged;blurring;start;paint;kept;constructor(t,e,n,r,i){this.start=i,this.home=t,this.catalog=e,this.entry=n,this.tagged=new Set(e.palettes.flatMap((s)=>s.booru?[s.booru]:[])),this.tone=yn(n,n.signatureSlots),this.blurring=Ur(t);let o={size:"fill",at:q8,opacity:this.tone.opacity};this.view={palette:n.name,tag:r,site:this.tabName,siteAnsi:this.tabAnsi,nextSite:this.nextTabName,preset:this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:Vp(this.setting("TTHEME_FIND_ORDER")),solo:this.setting("TTHEME_FIND_SOLO")==="on",rating:bi(this.setting("TTHEME_FIND_RATING")),block:Mo(this.setting("TTHEME_FIND_BLOCK")),sets:this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",narrow:this.narrowed(),enabled:Ks(this.setting("TTHEME_FIND_SITES")),hide:Oc(this.setting("TTHEME_FIND_HIDE")),hideTags:zs(this.setting("TTHEME_FIND_HIDE_TAGS")),advanced:!1,settings:io.map((s)=>({label:s.label,choices:[...s.choices],value:this.setting(s.name),default:bE(s,pa(s.name)),multi:s.multi&&{none:s.multi.none},about:s.about,entry:s.entry,advanced:s.advanced,cursor:0})),colors:{cursor:n.cursor,selection:n.selection,background:n.background,foreground:n.foreground,ansi:n.ansi},tiles:[],installed:[],held:$E(t,n.name),checked:0,total:0,searching:r!=="",stage:"fetch",sites:[],focus:0,top:0,scroll:0,beat:0,mode:"grid",help:!1,scene:Math.max(0,Dt.findIndex((s)=>s.name.toLowerCase()===process.env.TTHEME_SCENE)),details:!1,tune:{...o},untuned:o,coloring:Ou(t),editing:r===""?"":void 0,chips:[]},this.paint=new Jp({view:this.view,grid:()=>({cols:this.cols,rows:this.rows,cell:this.cell}),background:n.background,renders:this.renders,scratch:this.scratch,signal:this.signal,write:(s)=>this.write(s)}),this.kept=new qp({home:t,catalog:e,entry:n,signal:this.signal,credited:()=>{this.show(),this.inform(),this.paint.draw()}}),this.pool=this.selected(this.view),this.syncChips(),this.board=Jl(this.boardKey,r!==""),this.boards.set(this.board.key,this.board)}get signal(){return this.session.signal}get site(){return this.tab===0?void 0:V[this.tab-1]}get sites(){return this.site?[this.site]:V.filter((t)=>this.view.enabled.includes(t.name))}get tabName(){return this.site?.name??"all"}get tabAnsi(){return this.site?.ansi??L8}get nextTabName(){let t=(this.tab+1)%(V.length+1);return t===0?"all":V[t-1].name}frame(){return{w:this.cols*(this.cell.w||10),h:this.rows*(this.cell.h||20)}}setting(t){return this.values.get(t)}narrowed(){return nf(this.setting("TTHEME_FIND_MIN_SCORE"),this.setting("TTHEME_FIND_MIN_SIZE"),this.setting("TTHEME_FIND_PNG"))}get boardKey(){return`${this.site?.key??"all"}|${this.view.preset}|${this.view.order}`}origPath(t,e,n){return Hn(Ve(t),"orig",`${e}.${n}`)}previewPath(t){let{url:e}=Rc(t.site,t.post);return Hn(Ve(t.site),"thumb",`${OE(t.post.id,e)}.${vr(e)}`)}tileOf(t,e){let{site:n,post:r}=t,i=Ee(n,r.id),o=$n(r)??r;return{id:r.id,key:i,site:n.name,siteAnsi:n.ansi,width:o.width,height:o.height,reduced:o!==r,page:n===ir?"":n.pageUrl(r.id),artist:n===ir?qv(r.source):r.named.artist[0]??"",score:r.score,variants:e,mates:this.kept.matesOf(n,r.owner),thumb:this.thumbPath.get(i),missing:this.thumbless.has(i)}}show(){let t=this.view,e=this.board;if(t.tiles=e.groups.flatMap((n)=>n.open?n.posts.map((r)=>this.tileOf(r,0)):[this.tileOf(n.posts[0],n.posts.length)]),t.checked=e.checked,t.total=e.total,t.searching=e.searching,this.stageOf(e),t.note=e.note,t.focus=Math.max(0,Math.min(e.focus,t.tiles.length-1)),t.top=e.top,this.showing!==e)this.showing=e,this.paint.snap()}stageOf(t){let e=this.view;e.stage=t.stage,e.ranking=t.ranking,e.sites=this.sites.map((n)=>({name:n.name,arrived:t.arrived.has(n.name)}))}syncSite(){let t=this.view;t.site=this.tabName,t.siteAnsi=this.tabAnsi,t.nextSite=this.nextTabName}run(){let t=(e)=>this.view.editing===void 0&&El(e);return ti({modes:[nr,...Xr()],assume:[Rn,Qr],burst:t},async(e)=>{this.terminal=e,e.onResize(this.onResize),e.listen((i)=>{for(let o of i)this.inbound(o);this.paint.soon()}),e.write(Ti);let n=new Promise((i)=>{this.done=i}),r=setInterval(this.onClock,250);setTimeout(Vc,0);try{let i=new Ha,o=await e.ask(il,(s)=>i.see(s),1000);if(o){if(this.cell=o,this.holdThumbs(),this.view.tag)this.search(),this.relate(this.view.tag)}else this.view.searching=!1,this.view.error="This terminal does not report its cell size — find needs kitty graphics";if(!process.env.TMUX)await e.ask(G8,(s)=>s.kind==="attributes"?!0:void 0,500,!1);if(this.grabber.start(),e.hold(nv),this.start&&"paste"in this.start)this.pasted(this.start.paste);else if(this.start)this.fromClipboard();else this.peek();return this.paint.draw(),await e.until(n)}finally{this.session.abort(),this.grabber.stop(),this.attaching?.abort(),clearTimeout(this.noticeTimer),clearTimeout(this.peekTimer),this.fetch?.abort(),clearTimeout(this.settle),this.quietSuggest(),this.quietCount(),clearInterval(r),this.paint.stop(),e.write(`\x1B_Ga=d,d=A,q=2\x1B\\${Ti}`),this.kept.save(),this.renders.close(),Yl(this.scratch,{recursive:!0,force:!0}),jw()}})}write(t){this.terminal?.write(t)}get saved(){return this.view.saved?.text}get installs(){return this.view.installed.length}finish(t){this.done?.(t===2&&this.saved?0:t)}inbound(t){if(t.kind==="key")this.key(t.key);else if(t.kind==="mouse")this.pointer(t);else if(t.kind==="paste")this.pasted(t.text);else if(t.kind==="mode"){if(t.mode===5522)this.grabber.clipboard=t.value!==0&&t.value!==4}else if(t.kind==="osc")if(t.code==="72"&&t.meta.t==="q")this.grabber.drops=!0;else this.grabber.take(t)}pasted(t){let e=this.view;if(e.editing!==void 0&&t.trim()!==""&&!this.picture(t)){e.editing+=t.replace(/[\r\n]+/g," "),this.suggest(),this.paint.draw();return}if(e.installing!==void 0||e.panel!==void 0||e.help)return;if(t.trim()===""){this.fromClipboard();return}this.attach(t)}picture(t){let e=t.trim();if(/^https?:\/\/\S+$/i.test(e))return!Ic(e,this.site??V[0]);return ys(e).length>0}async got(t){if(t.kind==="error"){this.notice(t.message);return}if(t.kind==="text"){if(t.text.trim()===""){this.notice(`No picture on the clipboard — ${SE}`);return}this.pasted(t.text);return}await this.bring(()=>vl(t.bytes,t.source))}notice(t,e=U8){let n=this.view;n.error=t,clearTimeout(this.noticeTimer),this.noticeTimer=setTimeout(()=>{if(n.error===t)n.error=void 0,this.paint.draw()},e),this.paint.draw()}async peek(){let t=this.view,e;try{e=await Qv()}catch{return}if(!e||e.stamp===this.peeked)return;if(this.peeked=e.stamp,!e.picture||t.installing!==void 0)return;t.hint=`Picture on the clipboard · ${K8} uses it`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{t.hint=void 0,this.paint.draw()},W8),this.paint.draw()}async fromClipboard(){let t=this.view;if(gp()){if(this.grabber.clipboard){this.grabber.ask();return}this.notice("Over SSH the clipboard is not here — drop the file");return}let e;try{e=await Zv(Hn(this.scratch,`clipboard-${Date.now()}.png`))}catch(r){this.notice(`Could not read the clipboard: ${lc(r)}`);return}if(clearTimeout(this.peekTimer),t.hint=void 0,"image"in e){await this.bring(async(r)=>({...await pp(e.image,r),source:"clipboard"}));return}let n=e.text.trim();if(!n){this.notice(`No picture on the clipboard — ${SE}`);return}if(this.picture(n)){await this.attach(n);return}if(t.editing===void 0)t.editing="";this.pasted(n)}async attach(t){let e=t.trim();if(/^https?:\/\//i.test(e)){let i=Ic(e,this.site??V[0]);if(i){await this.jump(i.site,i.id);return}}let[n,...r]=ys(e).sort((i,o)=>Number(!vE.test(i))-Number(!vE.test(o)));if(!n){this.notice("Nothing to use in that — drop a picture, or paste one or its link");return}await this.bring((i)=>pp(n,i),r.length)}async bring(t,e=0){let n=this.view;this.attaching?.abort();let r=new AbortController;this.attaching=r,n.error=void 0,n.saved=void 0,n.note="Reading the picture…",this.paint.draw();let i;try{i=await t(AbortSignal.any([r.signal,this.signal]))}catch(f){if(!r.signal.aborted)n.note=void 0,this.notice(lc(f),8000);return}if(r.signal.aborted)return;n.note=e>0?`The first picture of ${e+1} — drop one at a time to try the others`:void 0,this.quietSuggest(),n.editing=void 0,n.suggest=void 0,n.pick=void 0;let o=Jv(i.bytes);Yv(o,i.source);let s=this.origPath(ir,o,i.ext);L(s,i.bytes);let a=gE(s).href,c={id:o,file:a,width:i.width,height:i.height,ext:i.ext,preview:a,owner:"",score:0,rating:"s",md5:IE("md5").update(i.bytes).digest("hex"),source:i.source,tags:[],named:{artist:[],character:[],copyright:[]},solo:void 0,family:0,smaller:[]},u={site:ir,post:c},l=this.previewPath(u);L(l,i.bytes),++this.gen,this.current=void 0,n.shown=void 0;let d=Jl(`local|post:${o}`,!1);this.board=d,this.boards.set(d.key,d),this.single(d,u)}single(t,e){t.searching=!1,this.posts.set(Ee(e.site,e.post.id),e),t.groups=[{posts:[e],open:!1}],t.checked=1,t.total=1,this.thumbQueue.push(e),this.thumbs(),this.view.mode="try",this.show(),this.select(),this.paint.draw()}onClock=()=>{let t=this.sites.reduce((r,i)=>zn(i)>zn(r)?i:r),e=Math.ceil((zn(t)-Date.now())/1000),n=e>0?e:void 0;if(n!==this.view.waiting)this.view.waiting=n,this.view.slow=t.name,this.paint.draw()};onResize=()=>{if(this.cols=process.stdout.columns||this.cols,this.rows=process.stdout.rows||this.rows,this.paint.resized(),this.holdThumbs(),this.scroll(),this.paint.snap(),this.view.mode==="try"&&this.current)this.reveal();this.pump(),this.paint.draw()};key(t){let e=this.view;if(t==="ctrl-c"){this.finish(2);return}if(e.installing!==void 0)return;if(t==="focus-in"){this.peek();return}if(t==="focus-out")return;if((t==="ctrl-v"||t==="alt-v")&&e.panel===void 0){this.fromClipboard();return}if(e.editing!==void 0){this.editKey(t);return}if(e.panel!==void 0){this.panelKey(t);return}if(e.help){if(t==="?"||t==="esc")e.help=!1,this.paint.draw();return}if(this.cols<qi.cols||this.rows<qi.rows){if(t==="esc")this.finish(2);return}if(t==="?"){e.help=!0,this.paint.draw();return}if(e.mode==="try"){this.tryKey(t);return}this.gridKey(t)}pointer(t){let e=this.view,n=this.paint.point(t),r=n?.target;if(e.installing!==void 0)return;if(t.action==="wheel"){if(!t.sideways)this.wheel(t.wheel);return}if((t.action==="press"||t.action==="drag")&&t.button!=="left")return;if(r?.kind==="track"&&n&&t.action!=="release")this.slide(r.field,n);else if(t.action==="press")this.pressed(r);else if(t.action==="release"&&n?.inside)this.released(r,t)}pressed(t){let e=this.view;if(e.help)this.paint.drop(),this.key("esc");else if(e.editing!==void 0||t===void 0)return;else if(e.panel!==void 0){if(t.kind==="setting"&&t.index<e.settings.length&&e.typing===void 0)e.panel=t.index,this.paint.draw()}else if(e.mode==="try")this.tryPoint(t);else if(t.kind==="tile")this.focus(t.index);else if(t.kind==="query")this.gridKey("/");else if(t.kind==="site")this.tab=t.tab,this.syncSite(),this.turn()}released(t,e){let n=this.view;if(t?.kind==="key")this.key(t.key);else if(t?.kind==="link"){if(!e.shift&&!e.alt&&!e.ctrl)wE(t.url)}else if(n.editing!==void 0){if(t?.kind==="suggest")n.pick=t.index,this.editKey("enter")}else if(n.panel!==void 0)this.panelPoint(t);else if(n.mode==="try"){if(t?.kind==="place"&&n.tuning)this.tuneKey(String(t.at))}else if(t?.kind==="tile"&&e.count===2)this.gridKey("enter");else if(t?.kind==="chip")this.toggle(t.index)}wheel(t){let e=this.view;if(e.help)return;if(e.editing!==void 0){if(e.suggest?.length)this.editKey(t<0?"up":"down")}else if(e.panel!==void 0){if(e.typing===void 0)this.panelKey(t<0?"up":"down")}else if(e.tuning)this.tuneKey(t<0?"up":"down");else if(e.mode==="try")this.tryKey(t<0?"left":"right");else this.focus(e.focus+t*rr(this.cols,this.rows).perRow)}panelPoint(t){let e=this.view;if(t?.kind!=="setting"&&t?.kind!=="choice")return;let n=e.settings[t.index];if(e.typing!==void 0){let r=e.settings[e.panel??0];if(r&&(t.index!==e.panel||t.kind==="setting"))this.typeKey(r,"enter");else return}if(t.kind==="setting"&&t.index===e.settings.length){e.panel=t.index,this.panelKey("enter");return}if(e.panel=t.index,t.kind==="choice"&&n){if(n.entry==="text"||t.choice===void 0){this.panelKey("enter");return}if(n.multi){n.cursor=Math.max(0,n.choices.indexOf(t.choice)),this.panelKey(" ");return}if(n.value!==t.choice)n.value=t.choice,this.recount()}this.paint.draw()}tryPoint(t){let e=this.view;if(t.kind==="scene")e.scene=t.scene,e.details=!1,this.paint.draw();else if(e.tuning&&t.kind==="field")e.tuning.field=t.field,this.paint.draw()}slide(t,e){let n=this.view,r=n.tuning;if(!r)return;let i=Math.min(1,Math.max(0,e.width>1?e.x/(e.width-1):0));if(r.field=t,t===0){let o=Math.max(100,r.fill),s=Vl+Math.round(i*(o-Vl+1));n.tune.size=i===1||r.fill>0&&s>=r.fill?"fill":Math.min(o,s)}else n.tune.opacity=Math.round(i*100)/100;this.retune()}gridKey(t){let e=this.view,{perRow:n,rowsVis:r}=rr(this.cols,this.rows),o={left:-1,right:1,up:-n,down:n,k:-n,j:n,pgup:-n*r,pgdn:n*r,home:-e.focus,end:e.tiles.length}[t];if(o!==void 0){this.focus(e.focus+o);return}if(/^[1-9]$/.test(t)){this.toggle(Number(t)-1);return}if(t==="enter"&&e.tiles[e.focus]){e.mode="try",e.error=void 0,this.select();return}if(t==="v"){this.fromClipboard();return}if(t==="c"){e.preset=e.preset==="cutouts"?"all":"cutouts",this.turn();return}if(t==="tab"||t==="shift-tab"){let s=V.length+1;this.tab=(this.tab+(t==="tab"?1:s-1))%s,this.syncSite(),this.turn();return}if(t==="/"){e.editing="",this.paint.draw();return}if(t===" "){this.unfold();return}if(t==="o"){this.openPage();return}if(t==="s"){e.panel=0,e.advanced=!1,this.recount(),this.paint.draw();return}if(t==="esc")this.finish(2)}panelKey(t){let e=this.view,n=e.panel??0,r=e.settings[n];if(e.typing!==void 0&&r){this.typeKey(r,t);return}let i=Wa(e);if(t==="up"||t==="down"){let o=i.indexOf(n)+(t==="up"?-1:1);e.panel=i[(o+i.length)%i.length]??n,this.paint.draw();return}if(t==="a"||t==="enter"&&n===e.settings.length){e.advanced=!e.advanced,e.panel=Wa(e)[0]??0,this.paint.draw();return}if(r?.entry&&(t==="enter"||r.entry==="number"&&/^[0-9]$/.test(t))){e.typing=t==="enter"?r.entry==="text"?r.value:"":t,this.paint.draw();return}if((t==="left"||t==="right")&&r&&r.entry!=="text"){let o=t==="left"?-1:1;if(r.multi)r.cursor=(r.cursor+o+r.choices.length)%r.choices.length;else r.value=Iv(r.choices,r.value,o),this.recount();this.paint.draw();return}if(t===" "&&r?.multi){let o=r.value.split(" "),s=r.choices.filter((c,u)=>u===r.cursor?!o.includes(c):o.includes(c)),a=r.multi.none;if(s.length>0||a!==void 0)r.value=s.length>0?s.join(" "):a,this.recount(),this.paint.draw();return}if(t==="esc"){e.settings.forEach((o,s)=>{o.value=this.setting(io[s]?.name??"")}),e.panel=void 0,e.advanced=!1,this.quietCount(),this.paint.draw();return}if(t==="enter"||t==="s"||t==="alt-c")e.panel=void 0,e.advanced=!1,this.quietCount(),this.adopt()}typeKey(t,e){let n=this.view,r=n.typing??"";if(e==="esc"){n.typing=void 0,this.paint.draw();return}if(e==="enter"||e==="up"||e==="down"){if(t.value=t.entry==="number"?Number(r)>0?String(Number(r)):"off":zs(r).join(" "),n.typing=void 0,this.recount(),e==="enter"){this.paint.draw();return}this.panelKey(e);return}let i=Ki(r,e,(o)=>t.entry==="number"?/^[0-9]$/.test(o)&&r.length<sp:/^[\x20-\x7e]$/.test(o));if(i!==void 0)n.typing=i,this.paint.draw()}quietCount(){clearTimeout(this.countTimer),this.counting?.abort(),this.counting=void 0}recount(){if(this.quietCount(),this.view.counts=void 0,!this.view.tag)return;let t=new AbortController;this.counting=t,this.countTimer=setTimeout(()=>void this.countPending(t),j8)}pending(){let t=(e)=>this.view.settings[io.findIndex((n)=>n.name===e)]?.value??this.setting(e);return{tag:this.view.tag,chosen:this.view.chosen,preset:t("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:Vp(t("TTHEME_FIND_ORDER")),rating:bi(t("TTHEME_FIND_RATING")),narrow:nf(t("TTHEME_FIND_MIN_SCORE"),t("TTHEME_FIND_MIN_SIZE"),t("TTHEME_FIND_PNG")),enabled:Ks(t("TTHEME_FIND_SITES"))}}async countPending(t){let e=this.pending(),n=this.site?[this.site]:V.filter((o)=>e.enabled.includes(o.name)),r=AbortSignal.any([this.signal,t.signal]),i=await Promise.all(n.map(async(o)=>{let s=this.query(o,e);if(!s)return{site:o.name,count:0};if(o.counts&&!o.counts(s.tags))return{site:o.name};try{let a=await af(o,s.tags,r);return{site:o.name,...Number.isFinite(a)?{count:a}:{}}}catch{return{site:o.name}}}));if(this.counting===t&&this.view.panel!==void 0)this.view.counts=i,this.paint.draw()}adopt(){let t=this.view,e=io.map((r)=>this.setting(r.name));t.settings.forEach((r,i)=>{let o=io[i];if(o)this.values.set(o.name,r.value)});let n=io.filter((r,i)=>this.setting(r.name)!==e[i]);if(n.length===0){this.paint.draw();return}this.save(n),t.rating=bi(this.setting("TTHEME_FIND_RATING")),t.block=Mo(this.setting("TTHEME_FIND_BLOCK")),t.sets=this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",t.preset=this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",t.order=Vp(this.setting("TTHEME_FIND_ORDER")),t.solo=this.setting("TTHEME_FIND_SOLO")==="on",t.narrow=this.narrowed(),t.enabled=Ks(this.setting("TTHEME_FIND_SITES")),t.hide=Oc(this.setting("TTHEME_FIND_HIDE")),t.hideTags=zs(this.setting("TTHEME_FIND_HIDE_TAGS")),this.boards.clear(),this.current=void 0,t.shown=void 0,t.mode="grid",this.search()}save(t){this.store(t.map((e)=>[e.name,this.setting(e.name)]))}store(t){let e=Hn(this.home,"ttheme","config.zsh");try{let n=uc(e)?x8(e,"utf8"):"";return L(e,t.reduce((r,[i,o])=>Iu(r,i,o),n)),!0}catch(n){return this.view.error=n instanceof Error?n.message:String(n),!1}}editKey(t){let e=this.view,n=e.editing??"",r=e.suggest??[];if((t==="up"||t==="down")&&r.length>0){let s=((e.pick??r.length)+(t==="down"?1:r.length))%(r.length+1);e.pick=s===r.length?void 0:s,this.paint.draw();return}if(t==="esc"||t==="enter")this.quietSuggest();if(t==="esc"){if(e.editing=void 0,e.tag===""){this.finish(2);return}this.paint.draw();return}if(t==="enter"){let o=e.pick===void 0?void 0:r[e.pick],s=o?o.whole?o.value:n.replace(/\S*$/,o.value):n;if(e.editing=void 0,e.suggest=void 0,e.pick=void 0,s.trim()){this.commit(s.trim());return}if(e.tag===""){this.finish(2);return}this.paint.draw();return}let i=Ki(n,t);if(i!==void 0)e.editing=i,this.suggest(),this.paint.draw()}quietSuggest(){clearTimeout(this.suggestTimer),this.suggesting?.abort(),this.suggesting=void 0}suggest(){this.quietSuggest();let t=this.view;t.pick=void 0;let e=t.editing??"",n=/\S*$/.exec(e)?.[0]??"",r=C8(n),i=q0(e,ME,this.tagged).map((c)=>({value:c.tag,count:0,alias:c.name,whole:!0}));if(!r&&i.length===0){t.suggest=void 0;return}let o=r?R$(this.catalog.palettes,this.entry,n).map((c)=>({value:c.booru,count:0,palette:c.name})):[],s=[...new Map([...o.slice(0,ME),...i].map((c)=>[c.value,c])).values()];if(t.suggest=s.length>0?s:void 0,i.length>0&&Y8.test(e))t.pick=s.findIndex((c)=>("whole"in c));if(!r)return;let a=new AbortController;this.suggesting=a,this.suggestTimer=setTimeout(async()=>{try{let c=await Bw(n,AbortSignal.any([this.signal,a.signal]));if(this.suggesting===a&&t.editing!==void 0){let u=new Map(c.map((d)=>[d.value,d.count])),l=new Set(s.map((d)=>d.value));t.suggest=[...s.map((d)=>({...d,count:u.get(d.value)??0})),...c.filter((d)=>!l.has(d.value))].slice(0,J8),t.pick=t.pick!==void 0&&t.pick<s.length?t.pick:void 0,this.paint.draw()}}catch{}},F8)}async commit(t){let e=Ic(t,this.site??V[0]);if(e){await this.jump(e.site,e.id);return}if(this.picture(t)){await this.attach(t);return}this.view.tag=t,this.view.chosen=void 0,this.relate(t),this.boards.clear(),await this.search()}async jump(t,e){let n=++this.gen;this.tab=V.indexOf(t)+1,this.syncSite(),this.current=void 0,this.view.shown=void 0,this.view.error=void 0;let r=Jl(`${t.key}|post:${e}`,!0);this.board=r,this.boards.set(r.key,r),this.show(),this.paint.draw();try{let i=await xo(t,e,this.signal);if(n!==this.gen)return;if(!i){r.searching=!1,r.error=`${t.name} has no post ${e}`,this.view.error=r.error,this.show(),this.paint.draw();return}this.single(r,{site:t,post:i})}catch(i){this.fail(n,i,t)}}async turn(){this.fetch?.abort(),this.current=void 0,this.view.shown=void 0;let t=this.boards.get(this.boardKey);if(!t){await this.search();return}this.gen++,this.board=t,this.view.error=t.error,this.show(),this.paint.draw(),await this.pump()}unfold(){let t=this.view,e=0;for(let n of this.board.groups){let r=n.open?n.posts.length:1;if(t.focus<e+r){if(n.posts.length<2)return;n.open=!n.open,this.board.focus=e;for(let i of n.posts)if(!this.thumbPath.has(Ee(i.site,i.post.id)))this.thumbQueue.push(i);this.thumbs(),this.show(),this.scroll(),this.paint.glide(),this.paint.draw();return}e+=r}}openPage(){let t=this.view.tiles[this.view.focus],e=t&&this.posts.get(t.key);if(e)wE(e.site.pageUrl(e.post.id))}tryKey(t){let e=this.view;if(e.tuning){this.tuneKey(t);return}if(t==="left"||t==="right"){this.direction=t==="left"?-1:1,this.focus(e.focus+this.direction);return}if(t==="shift-left"||t==="shift-right"){e.scene+=t==="shift-left"?-1:1,e.details=!1,this.paint.draw();return}if(t==="i"){e.details=!e.details,this.inform(),this.paint.draw();return}if(t==="t"){e.tuning={field:0,held:{...e.tune},fill:this.current?.fill??0,coloring:e.coloring},this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="o"){this.openPage();return}if(t==="x"){this.swap();return}if(t==="v"){this.fromClipboard();return}if(t==="enter"){this.install();return}if(t==="esc")this.fetch?.abort(),clearTimeout(this.settle),e.fetching=void 0,e.mode="grid",e.error=void 0,this.paint.draw()}tuneKey(t){let e=this.view,n=e.tuning,r=e.tune;if(t==="up"||t==="down"){n.field=(n.field+(t==="up"?2:1))%3,this.paint.draw();return}let i=A8[t];if(i!==void 0){if(n.field===0)r.size=T8(r.size,i,n.fill);else if(n.field===1)r.at=(r.at-1+Math.sign(i)+9)%9+1;else r.opacity=Math.max(0,Math.min(100,Math.round(r.opacity*100)+i))/100;this.retune();return}if(/^[1-9]$/.test(t)){n.field=1,r.at=Number(t),this.retune();return}if(t==="="){let o=e.untuned;if(n.field===0)r.size=o.size;else if(n.field===1)r.at=o.at;else r.opacity=o.opacity;this.retune();return}if(t==="+"){e.tune={...e.untuned},this.retune();return}if(t==="enter"){e.tuning=void 0,this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="esc")e.tune={...n.held,...n.coloring===e.coloring?{}:{opacity:e.untuned.opacity}},e.tuning=void 0,this.retune()}recolor(){let t=this.view;if(!this.current||t.shown?.id!==this.current.key)return;t.coloring=t.coloring==="tone"?"original":"tone",t.tune.opacity=t.untuned.opacity,this.paint.draw(),this.reveal()}retune(){if(this.paint.draw(),this.current&&this.view.shown?.id===this.current.key)this.reveal()}inform(){let t=this.view,e=t.tiles[t.focus],n=e&&this.posts.get(e.key);t.info=n?this.infoOf(n):void 0}infoOf(t){let{site:e,post:n}=t,r=n.named,i=Lw(e,n),o=new Set([...r.artist,...r.character,...r.copyright]),s=Ds(n.source),a=/^https?:\/\//i.test(s)?s:e===ir&&s.startsWith("/")?gE(s).href:void 0;return{page:e===ir?"":e.pageUrl(n.id),source:s,...a?{link:a}:{},artists:r.artist,characters:r.character,series:r.copyright,tags:n.tags.filter((c)=>!o.has(c)),...i?{rating:i}:{},...n.posted?{posted:n.posted}:{},ext:($n(n)??n).ext,uploader:n.owner}}focus(t){let e=this.view;if(e.tiles.length===0)return;let n=Math.max(0,Math.min(e.tiles.length-1,t));if(n===e.focus)return;if(e.focus=n,this.board.focus=n,this.scroll(),this.paint.glide(),this.pump(),e.mode==="try")this.select();this.paint.draw()}scroll(){let t=this.view,{perRow:e,rowsVis:n}=rr(this.cols,this.rows),r=Math.floor(t.focus/e);if(r<t.top)t.top=r;if(r>t.top+n-1)t.top=r-n+1;this.board.top=t.top}selected(t){if(t.chosen)return t.chosen;if(!t.tag)return[];return this.namesOf(t.tag,"danbooru")}namesOf(t,e){let n=t===this.entry.booru?this.entry:this.catalog.palettes.find((r)=>r.booru===t);return n?P$(n,e):[t]}syncChips(){let t=this.selected(this.view);this.view.chips=this.pool.slice(0,V8).map((e)=>({name:e,on:t.includes(e)}))}toggle(t){let e=this.view,n=e.chips[t];if(!n)return;let r=this.selected(e),i=n.on?r.filter((o)=>o!==n.name):[...r,n.name];if(i.length===0)return;e.chosen=i,e.tag=i.join(" or "),this.syncChips(),this.boards.clear(),this.search()}async relate(t){this.relating?.abort();let e=this.selected({tag:t,chosen:void 0});if(this.pool=e,this.syncChips(),this.paint.draw(),!t||/\s/.test(t))return;let n=this.related.get(t);if(!n){let r=new AbortController;this.relating=r;try{n=(await Gw(t,AbortSignal.any([this.signal,r.signal]))).map((i)=>i.value)}catch{return}if(this.relating!==r)return;this.related.set(t,n)}this.pool=[...new Set([...e,...n])],this.syncChips(),this.paint.draw()}query(t,e=this.view){let n=e.chosen?Uw(t,e.chosen):this.namesOf(e.tag,t.key);if(n.length===0)return;let r=e.chosen?.slice(n.length)??[],i=n.length>1,o=e.preset==="cutouts"?t.cutouts:"",s=i&&o.includes("~"),a=[i?n.map((l)=>`~${l}`).join(" "):n[0],t.rate(e.rating),...t.narrow(e.narrow),s?"":o,e.order==="score"?t.best:""].filter(Boolean),c=[],u=[];for(let l of a)if(sf([...c,l].join(" "))<=t.tagBudget)c.push(l);else u.push(l);return{tags:c.join(" "),notes:[...u.length>0?[`${t.name} takes ${t.tagBudget} tags — ${u.join(" ")} left out`]:[],...r.length>0?[`${t.name} takes ${n.length} tag${n.length===1?"":"s"} — ${r.join(" ")} left out`]:[],...s?[`${t.name} ORs the names, so cutouts are told by the file`]:[],...e.narrow.score>0&&!t.scored?[`${t.name} keeps no score`]:[],...e.narrow.png&&t.guesses?[`${t.name} names a file type only where danbooru holds the file`]:[]]}}async search(){let t=++this.gen,e=Jl(this.boardKey,!0);this.board=e,this.boards.set(e.key,e),this.view.error=void 0;let n=this.sites.flatMap((o)=>{let s=this.query(o);return s?[{site:o,...s}]:[]}),r=this.sites.filter((o)=>!n.some((s)=>s.site===o)),i=[...n.flatMap(({notes:o})=>o),...r.length>0?[`${this.entry.name} has no tag on ${r.map((o)=>o.name).join(", ")}`]:[]];if(e.note=i.length>0?i.join(" · "):void 0,n.length===0)e.searching=!1;this.show(),this.paint.draw(),this.tally(t,e,n);try{let o=await Promise.all(n.map(async(s)=>({plan:s,owners:await this.kept.mateOwners(s.site)})));if(t!==this.gen)return;e.sources=o.flatMap(({plan:{site:s,tags:a},owners:c})=>{let u=sf(a)+1<=s.tagBudget?s.uploadedBy:void 0;return[...u?[...c.keys()].map((l)=>({site:s,tags:`${a} ${u(l)}`,page:0,done:!1})):[],{site:s,tags:a,page:0,done:!1}]}),this.show(),this.paint.draw(),await this.pump()}catch(o){this.fail(t,o)}}async tally(t,e,n){let r=await Promise.allSettled(n.map(({site:i,tags:o})=>af(i,o,this.signal)));if(t===this.gen)e.total=r.reduce((i,o)=>i+(o.status==="fulfilled"&&Number.isFinite(o.value)?o.value:0),0),this.show(),this.paint.draw()}fail(t,e,n=this.site){if(t!==this.gen||this.signal.aborted)return;this.board.error=Zp(n?.name??this.tabName,e),this.board.searching=!1,this.view.error=this.board.error,this.show(),this.paint.draw()}drop(t,e,n){for(let r of t.sources)if(r.site===e)r.done=!0;t.note=[t.note,Zp(e.name,n)].filter(Boolean).join(" · ")}wants(){let{perRow:t,rowsVis:e}=rr(this.cols,this.rows);return this.view.tiles.length<(this.board.top+e+EE)*t}need(){let{perRow:t,rowsVis:e}=rr(this.cols,this.rows);return(e+EE)*t}live(t){return this.boards.get(t.key)===t}page(t,e,n){let r=`${t.key}|${e}|${n}`,i=this.pages.get(r);if(!i)i=_w(t,e,n,this.signal).then((o)=>this.borrow(t,o)),this.pages.set(r,i),i.catch(()=>this.pages.delete(r));return i}async borrow(t,e){let n=t===ie?[]:e.filter((r)=>r.md5!=="");if(n.length>0)try{Cc(n,await Lc(n.map((r)=>r.md5),this.signal))}catch{}return e}staged(t){if(t===this.board)this.stageOf(t),this.paint.draw()}async round(t){t.stage="fetch",this.staged(t);let e=V.flatMap((a)=>{let c=t.sources.find((u)=>u.site===a&&!u.done);return c?[c]:[]}),n=await Promise.all(e.map(async(a)=>{try{let c=await this.page(a.site,a.tags,a.page);return t.arrived.add(a.site.name),this.staged(t),{source:a,posts:c}}catch(c){if(t.sources.every((u)=>u.site===a.site)||this.signal.aborted)throw c;return this.drop(t,a.site,c),{source:a,posts:void 0}}}));if(!this.live(t))return;let r=[];for(let{source:a,posts:c}of n){if(!c)continue;a.page++,a.done=c.length<kr;let u=t.last.get(a);for(let l of c){let d=u&&vS(u.post,l)?u.set:`set:${a.site.key}:${l.id}`;u={post:l,set:d};let f=Ee(a.site,l.id);if(t.seen.has(f))continue;t.seen.add(f);let h={site:a.site,post:l};if(this.eligible(h))t.kin.set(h,[d,...yS(a.site,l)]),r.push(h);else t.checked++}if(u)t.last.set(a,u)}let i=this.dedupe(t,r),o=++t.rounds,s;if(this.view.order!=="fit")s=e.length>1?fS(i):i;else{let a=Ol(i,this.frame(),this.matched),c=a.slice(0,this.need()),u={done:0,total:c.length};if(t.ranking=u,this.staged(t),await this.looks(c,()=>{u.done++,this.staged(t)}),t.ranking=void 0,!this.live(t))return;s=[...Ol(c,this.frame(),this.matched),...a.slice(c.length)]}t.stage="check",this.staged(t);for(let a of s)t.roundOf.set(a,o);t.queue.push(...s),this.ahead(t)}ahead(t){if(this.aheading||this.view.order!=="fit"||!this.live(t))return;let e=t.queue.slice(0,this.need()).filter((n)=>!this.looking.has(Ee(n.site,n.post.id)));if(e.length===0)return;this.aheading=!0,this.looks(e).then(()=>{this.aheading=!1;for(let n of new Set(e.map((r)=>t.roundOf.get(r)??0)))this.resort(t,n);this.ahead(t)})}resort(t,e){let n=t.queue.flatMap((i,o)=>t.roundOf.get(i)===e?[o]:[]),r=Ol(n.map((i)=>t.queue[i]),this.frame(),this.matched);n.forEach((i,o)=>{t.queue[i]=r[o]})}dedupe(t,e){let n=[];for(let r of e){let i=Np(r.post),o=i.map((a)=>t.same.get(a)).find(Boolean);if(!o){for(let a of i)t.same.set(a,r);n.push(r);continue}if(t.checked++,xE(r.post)<=xE(o.post))continue;for(let a of[...i,...Np(o.post)])t.same.set(a,r);let s=n.indexOf(o);if(s>=0){n[s]=r;continue}this.replace(t,o,r)}return n}replace(t,e,n){t.roundOf.set(n,t.roundOf.get(e)??0);let r=t.queue.indexOf(e);if(r>=0){t.queue[r]=n;return}for(let i of t.groups){let o=i.posts.indexOf(e);if(o>=0){i.posts[o]=n,this.posts.set(Ee(n.site,n.post.id),n),this.thumbQueue.push(n),this.thumbs();return}}}async looks(t,e){let n=0;await Promise.all(Array.from({length:yE},async()=>{while(n<t.length)await this.look(t[n++]),e?.()}))}look(t){let e=Ee(t.site,t.post.id),n=this.looking.get(e);if(!n)n=(async()=>{let r=this.previewPath(t),i=Rc(t.site,t.post);await this.kept.cached(i.site,r,i.url);let o=await this.renders.run({job:"match",from:r,colors:this.entry.signature});return this.looked.set(e,o),this.matched.set(t.post,o.match),o})().catch(()=>{return}),this.looking.set(e,n);return n}async pump(){let t=this.gen,e=this.board;if(this.pumping===t||e.sources.length===0)return;this.pumping=t;let n=[],r;try{e.searching=!0;while(t===this.gen){while(n.length<kE&&e.queue.length>0&&this.wants()){let s=e.queue.shift();n.push({pick:s,passed:this.vet(s)})}if(this.ahead(e),!r&&e.queue.length<kE&&e.sources.some((s)=>!s.done)&&this.wants()){let s=this.round(e).then(()=>{if(r===s)r=void 0});s.catch(()=>{}),r=s}let i=n.shift();if(!i){if(!r)break;await r,this.show(),this.paint.draw();continue}let o=await i.passed;if(t!==this.gen)return;if(e.checked++,o)this.admit(i.pick);this.show(),this.paint.draw()}if(t===this.gen)e.searching=!1,this.show(),this.paint.draw()}catch(i){this.fail(t,i)}finally{if(this.kept.save(),this.pumping===t)this.pumping=0}}eligible({site:t,post:e}){let n=$n(e);if(!Nc(t,e,this.view.rating)||Pc(e,this.view.block).length>0||!n)return!1;if(this.view.solo&&e.solo===!1)return!1;let{score:r,size:i,png:o}=this.view.narrow;if(Math.min(e.width,e.height)<i||t.scored&&e.score<r||o&&e.ext!=="png"||Cw(e,this.view.hide).length>0||this.view.hideTags.some((s)=>e.tags.includes(s)))return!1;return this.view.preset==="all"?["png","jpg","jpeg",""].includes(n.ext):["png",""].includes(e.ext)}async vet(t){let[e]=await Promise.all([this.passes(t),this.look(t)]);return e}async passes({site:t,post:e}){return this.view.preset==="all"||t.vouched||this.kept.transparent(t,e)}admit(t){let{site:e,post:n}=t,r=this.board,i=Ee(e,n.id);this.posts.set(i,t);let o=r.kin.get(t)??[],s=this.looked.get(i),a=s&&{hash:s.hash,width:n.width,height:n.height},c=this.view.sets==="fold"?this.kindred(r,o,a):void 0;if(c){if(c.posts.push(t),this.register(r,c,o,a),c.open)this.thumbQueue.push(t),this.thumbs();return}let u={posts:[t],open:!1};r.groups.push(u),this.register(r,u,o,a),this.thumbQueue.push(t),this.thumbs()}kindred(t,e,n){for(let r of e){let i=t.kindred.get(r);if(i)return i}return n&&t.shapes.find((r)=>ES(r.shape,n))?.group}register(t,e,n,r){for(let i of n)if(!t.kindred.has(i))t.kindred.set(i,e);if(r)t.shapes.push({shape:r,group:e})}holds(){this.view.held=$E(this.home,this.entry.name).map((t)=>{let e=this.heldFiles.get(t.from);return e?{...t,thumb:e}:t}),this.holdThumbs()}holdThumbs(){let t=be.cols*this.cell.w,e=be.rows*this.cell.h;if(t===0||e===0)return;for(let n of this.view.held.slice(0,ip(this.cols))){if(n.thumb||this.heldAsked.has(n.from))continue;this.heldAsked.add(n.from);let r=Hn(this.scratch,`held-${R8(n.from)}-${t}x${e}.png`);this.renders.run({job:"thumb",from:n.from,to:r,width:t,height:e}).then(()=>{this.heldFiles.set(n.from,r),this.holds(),this.paint.draw()}).catch(()=>{})}}thumbs(){while(!this.signal.aborted&&this.thumbing<yE&&this.thumbQueue.length>0){let t=this.thumbQueue.shift();this.thumbing++,this.thumb(t).catch(()=>{this.thumbless.add(Ee(t.site,t.post.id)),this.show(),this.paint.draw()}).finally(()=>{this.thumbing--,this.thumbs()})}}async thumb(t){let{site:e,post:n}=t,r=yt.cols*this.cell.w,i=yt.rows*this.cell.h,o=Rc(e,n),s=Hn(Ve(e),"tile",`${OE(n.id,o.url)}-${r}x${i}.png`);if(!uc(s)){let a=this.previewPath(t);if(await this.kept.cached(o.site,a,o.url),this.signal.aborted)return;await this.renders.run({job:"thumb",from:a,to:s,width:r,height:i})}this.thumbPath.set(Ee(e,n.id),s),this.show(),this.paint.draw()}select(){let t=this.view,e=t.tiles[t.focus];if(this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,this.inform(),!e)return;if(this.current?.key===e.key){this.reveal();return}this.settle=setTimeout(()=>void this.load(e),B8),this.paint.draw()}async load(t){let e=this.view,n=this.posts.get(t.key);if(!n)return;let r=new AbortController;if(this.fetch=r,this.kept.credit(n,r.signal),!$n(n.post))return;let{site:i}=n,o=this.board;try{await Ys(i,n.post,r.signal);let s=$n(n.post),a=this.origPath(i,t.id,s.ext);if(!uc(a))e.fetching={id:t.key,got:0,size:0},this.paint.draw();let c=wi(i,n.post,s),u=await this.kept.cached(c.site,a,c.url,(f,h)=>{if(e.fetching?.id===t.key)e.fetching={id:t.key,got:f,size:h},this.paint.draw()});if(r.signal.aborted)return;if(e.fetching=void 0,o!==this.board)return;let l={site:i,id:t.id,key:t.key,path:a,ext:s.ext,size:u,using:"plain",failed:!1};e.preparing=t.key,this.paint.flush();let d=await this.render(l,"plain");if(r.signal.aborted||o!==this.board)return;if(d.clear===0&&Es()&&this.setting("TTHEME_FIND_REMOVE_BG")!=="off"){if(e.preparing=void 0,e.cutting=t.key,this.paint.flush(),l.cut=await this.cutOut(i,t.id,a,r.signal),r.signal.aborted||o!==this.board)return;if(e.cutting=void 0,l.cut){e.preparing=t.key,this.paint.flush();let f=await this.render(l,"cut").catch(()=>{return});if(r.signal.aborted||o!==this.board)return;if(f&&Il(f.clear))l.using="cut";else Yl(l.cut,{force:!0}),l.cut=void 0,l.failed=!0}else l.failed=!0}if(this.current=l,e.tiles[e.focus]?.key===t.key)await this.present();this.preload()}catch(s){if(!r.signal.aborted&&!this.signal.aborted)e.error=Zp(i.name,s)}finally{if(e.fetching?.id===t.key)e.fetching=void 0;if(e.preparing===t.key)e.preparing=void 0;if(e.cutting===t.key)e.cutting=void 0;this.paint.draw()}}async cutOut(t,e,n,r){let i=Hn(Ve(t),"cut",`${e}.png`);if(uc(i))return i;try{return E8(P8(i),{recursive:!0}),await Za(n,i,r),i}catch{Yl(i,{force:!0});return}}swap(){let t=this.current;if(!t?.cut||this.view.shown?.id!==t.key)return;t.using=t.using==="cut"?"plain":"cut",this.reveal()}preload(){let t=this.view;if(t.mode!=="try")return;for(let e of[t.focus+this.direction,t.focus-this.direction]){let n=t.tiles[e],r=n&&this.posts.get(n.key);if(r)this.kept.credit(r,this.signal);if(this.prefetching>=_8||!r||!$n(r.post))continue;let{site:i,post:o}=r;this.prefetching++,Ys(i,o,this.signal).then(async()=>{let s=$n(o),a=this.origPath(i,o.id,s.ext),c=wi(i,o,s);return await this.kept.cached(c.site,a,c.url),this.render({site:i,id:o.id,key:n.key,path:a,ext:s.ext,size:0,using:"plain",failed:!1},"plain")}).catch(()=>{}).finally(()=>{this.prefetching--})}}async render(t,e){let n=this.cols*this.cell.w,r=this.rows*this.cell.h,i=Math.min(n,z8),o=Math.max(1,Math.round(r*i/n)),s={...this.view.tune},{coloring:a}=this.view,c=!RE(s,this.view.untuned),u=s.opacity!==this.view.untuned.opacity,l=c?`-${s.size}-${s.at}${u?`-${Math.round(s.opacity*100)}`:""}`:"",d=Hn(this.scratch,`${t.site.key}-${t.id}${e==="cut"?"c":""}${a==="original"?"o":""}-${i}x${o}${l}.png`),f=`${t.site.key}:${t.id}:${e}:${a}:${i}x${o}`,h=this.clarity.get(f);if(h&&uc(d))return t.fill=h.fill,{clear:h.clear,path:d,opacity:h.opacity,touched:u};let m=await this.renders.run({job:"show",from:e==="cut"?t.cut:t.path,to:d,width:i,height:o,colors:this.entry,tone:this.tone,blur:this.blurring*i/vf(n,r).width,coloring:a,...c?{tune:{size:s.size,at:s.at,...u?{opacity:s.opacity}:{}}}:{}});if(this.clarity.set(f,m),t.fill=m.fill,c)this.keepTuned(d);return{clear:m.clear,path:d,opacity:m.opacity,touched:u}}keepTuned(t){this.tunedFiles.push(t);while(this.tunedFiles.length>D8){let e=this.tunedFiles.findIndex((n)=>n!==this.view.shown?.path&&n!==t);if(e===-1)return;Yl(this.tunedFiles.splice(e,1)[0],{force:!0})}}async present(){let t=this.current;if(!t)return;let e=t.using,{coloring:n}=this.view,r=this.view.tune.opacity,{clear:i,path:o,opacity:s,touched:a}=await this.render(t,e);if(this.current!==t||t.using!==e||this.view.coloring!==n)return;if(!a&&this.view.tune.opacity===r)this.view.untuned.opacity=s,this.view.tune.opacity=s;if(this.view.tuning&&t.fill)this.view.tuning.fill=t.fill;this.view.shown={id:t.key,clear:i,bytes:t.size,path:o,cut:t.cut?e==="cut"?"on":"off":t.failed?"failed":"none"}}reveal(){let t=this.view;if(this.presenting){this.again=!0;return}this.presenting=!0,t.preparing=this.current?.key,this.paint.flush(),this.present().catch((e)=>{t.error=e instanceof Error?e.message:String(e)}).finally(()=>{if(this.presenting=!1,this.again){this.again=!1,this.reveal();return}if(t.preparing===this.current?.key)t.preparing=void 0;this.paint.draw()})}async install(){let t=this.view,e=t.tiles[t.focus],n=this.current;if(!e||n?.key!==e.key||t.preparing!==void 0||t.shown?.id!==e.key)return;t.installing=e.key,t.error=void 0,this.paint.flush();let r=H8(t.tune,t.untuned),i=this.posts.get(n.key)?.post;try{await this.renders.run({job:"backdrop",from:n.using==="cut"?n.cut:n.path,source:n.path,home:this.home,colors:this.entry,tone:this.tone,origin:{site:n.site.key,id:n.id,ext:n.ext,from:`${n.site.name} ${n.id} ${n.site.pageUrl(n.id)}`,artist:i?.named.artist??[],source:Ds(i?.source??"")},width:this.cols*this.cell.w,height:this.rows*this.cell.h,blur:this.blurring,coloring:t.coloring,...r?{tune:r,aligns:_i(K(this.home).terminals),user:O8()}:{}}),this.kept.owned(n.site,n.id,i?.owner??""),Ae(this.home),this.holds();let{size:o,at:s,opacity:a}=t.tune,c=r?` · ${o==="fill"?"fill":`${o}%`} · ${Wt[s-1]} · ${a.toFixed(2)}`:"",u=i?.named.artist.length?`${i.named.artist.join(", ")} · `:"";t.saved={text:`Background · ${this.entry.name} ← ${u}${n.site.name} ${n.id}${c}`,key:e.key},t.installed.push(e.key),this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,t.mode="grid"}catch(o){t.error=o instanceof Error?o.message:String(o)}t.installing=void 0,this.paint.draw()}}async function PE(t,e,n){let r=new Qp(t,he(t),e,e.booru??"",n);if(await r.run(),Ni(process.env))process.stdout.write(Ai(""));return{saved:r.saved,installs:r.installs}}async function NE(t){let e=J(),n=he(e),r=Tr(n.palettes,t);if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error("needs a terminal");let i=new Qp(e,n,r,r.booru??""),o=await i.run();if(i.saved&&o!==0)return process.stderr.write(`${i.saved}
714
+ `),0;return o}var Ps=50;function Z8(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi}}function AE(t,e,n){let r=xs(n),i=an(Z8(e)),o=m$(t).map((h)=>h.toLowerCase()),s=Mp(i,e.signatureSlots,e.waived??[]),a=Un(ar(i,e.signatureSlots,e.waived??[])).length,c=(h)=>i[h]?.toLowerCase()!==o[h],u=i.filter((h,m)=>c(m)).length,l=(h)=>{let m=i[h],p=e.signatureSlots.includes(An[h])?"◆":n?"■":" ",b=n?`${r.fg(m)}${p}\x1B[39m`:p,$=s.has(h)?r.bold("✗"):c(h)?n?"\x1B[33m●\x1B[39m":"●":" ";return` ${b} ${Fl(Mt(m))}${$}`},d=a===0?"passes the gate":`${a} ${a===1?"miss":"misses"} in the gate`,f=[` ${vt(`${r.dim("Palette")}${u>0?r.dim(` ${u} tuned`):""}`,r.dim(d),Ps-2)}`];f.push(r.dim(Xt(Ps,"top",[[2," Base "]])));for(let h=0;h<A.length;h++)f.push(ln(r,` ${A[h].padEnd(10)}${l(h)}`,Ps));return f.push(r.dim(Xt(Ps,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]]))),un.forEach((h,m)=>{f.push(ln(r,` ${h.padEnd(10)}${l(A.length+m)}${l(A.length+8+m)}`,Ps))}),f.push(r.dim(Xt(Ps,"bottom"))),f}function Xl(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function HE(t,e){if(t.includes("/"))return t;let n=Ii(e,!1),r=n.filter((o)=>Wo(o.dir).some((s)=>s.slug===t)),[i]=r.length===1?r:n.length===1?n:[];return i?`${i.id}/${t}`:t}function t5(t,e,n){let r=K(t),i=n.filter((o)=>!r.palettes.includes(o));if(i.length>0)Ke(t,e,r,{...r,palettes:[...r.palettes,...i]});else if(n.some((o)=>r.palettes.includes(o)))ue(t,e,r);return{state:r,fresh:i}}function e5(t){let e=Math.max(0,...t.map((n)=>n.slot.length));return t.map((n)=>` ${n.slot.padEnd(e)} ${n.from} → ${n.to} ${n.rule}`)}function CE(t,e,n){let r=Yf(e),i=Qe(vn(r.name,Df(r),n.palettes,!0)),o=Ct(t,n,!1).palettes.find((s)=>s.name===i.name);if(o&&JSON.stringify(o)!==JSON.stringify(i))throw Error(`${i.name} is already in ${ct(i.name)??"the ttheme catalog"} and differs — \`ttheme add ${i.name}\` wears that one`);if(!o)Ko(t,[...Ar(t),i]);return i.name}var n5=["background","foreground","cursor"];function LE(t){try{t();return}catch(e){return e.message}}function FE(t,e,n){return Ct(t,e,!1).palettes.filter((r)=>r.name!==n).map((r)=>({name:r.name,colors:{background:r.background,foreground:r.foreground,cursor:r.cursor,selection:r.selection,ansi:r.ansi}}))}function jE(t,e){let n=new Set(fe(t,e).map((r)=>r.key));return{count:()=>fe(t,e).length,added:()=>fe(t,e).filter((r)=>!n.has(r.key)).length,fresh:()=>(Pl(t,e)??[]).filter((r)=>!n.has(se(r))),discard:()=>{let r=fe(t,e).filter((i)=>!n.has(i.key));for(let i of r)Ho(t,e,i.key),Wc(t,e);if(r.length>0)Ae(t)}}}function r5(...t){let e=new Map;for(let n of t.flatMap((r)=>r??[]))e.set(se(n),n);return e.size>0?[...e.values()]:void 0}function _E(t,e,n,r){if(!Jo(process.env,K(t).terminals))return;return async(i,o)=>{let s=Qe(vn(e,r(i),n.palettes)),{saved:a}=await PE(t,s,o);return{...a?{note:a}:{},count:fe(t,e).length}}}async function tg(t,e=!1){let n=process.stdout.isTTY===!0,r=J(),i=K(r).terminals,o=n?Tl.of(process.env,r,t.name,i):void 0,s=n?Ul.of(process.env,i):void 0;return hE(t,{color:!Nt(),...o?{backdrop:o}:{},...s?{layer:s}:{},...e?{hosted:!0}:{}})}async function BE(t,e,n){let r=J(),i=dt(r),o=await H1(r,n),s=t.includes("/")?t:`${o.id}/${t}`,a=xe(s);if(a)throw Error(`${s} ${a}`);if(ct(s)!==o.id)throw Error(`palettes in ${o.dir} are named ${o.id}/<palette> — ${s} belongs elsewhere`);let c=Wf(r,s);if(dc(c))throw Error(`${s} already exists — \`ttheme edit ${s}\` changes it`);let u=e?Tr(Ct(r,i).palettes,e):void 0;if(!Xl())throw Error("new opens the palette editor — run it in a terminal");let l=u&&(ct(u.name)?u.base:u.default?void 0:u.name),d=u?zf(u,s,`kept from ${u.name}`):void 0,f=u?Pl(r,u.name)??u.pictures:void 0,{base:h,ansiSource:m,group:p,...b}=d??{name:s,signature:n5,...ni(Va)},$=jE(r,s),k=({colors:M,signature:I})=>{let x=r5(f,$.fresh());return Df({...b,...M,signature:I,...l?{base:l}:{},...x?{pictures:x}:{}})},v=await tg({title:"New palette",name:s,...d?{colors:d}:{},signature:b.signature,...b.waive?{waive:b.waive}:{},palettes:FE(r,i,s),pictures:$.count(),find:_E(r,s,i,k),exports:zE(r,s,i,k),decode:eg,check:(M)=>LE(()=>vn(s,k(M),i.palettes))});if(!v){$.discard(),console.log("Nothing made");return}Q8(X8(c),{recursive:!0}),L(c,k(v));let{state:S}=t5(r,i,[s]);console.log(` + ${s}${u?` from ${u.name}`:""}
715
+ ${c}`),await Xi(r,Ct(r,i).palettes.filter((M)=>M.name===s),S.terminals),console.log(`
716
+ \`ttheme use ${s}\` wears it · \`ttheme edit ${s}\` opens it again`)}function i5(t,e,n){let r=Qe(vn(t,e,n.palettes));return la(r).length>0?aa(r).filter((i)=>i.startsWith(" ✗")):[]}async function GE(t){let e=J(),n=dt(e),r=K(e),i=Ct(e,n,!1),o=HE(t,e),s=Ql(e,o),a=s&&dc(s)?o:i.palettes.some(($)=>$.name===t)?t:o,c=Ql(e,a);if(!c||!dc(c)){let $=i.palettes.some((k)=>k.name===a);throw Error($?`${a} is not one of yours — \`ttheme new <name> --from ${a}\` makes your own copy`:`no palette of yours called ${a} — \`ttheme new\` makes one`)}if(!Xl())throw Error("edit opens the palette editor — run it in a terminal");let u=Xp(c,"utf8"),l;try{l=vn(a,u,n.palettes)}catch($){throw Error(`${c} cannot be read — ${$.message}`)}let d=jE(e,a),f=new Set((l.pictures??[]).map(($)=>se($))),h=({colors:$,signature:k})=>a$(d$(Jf(u,$),k),d.fresh().filter((v)=>!f.has(se(v)))),m=await tg({title:"Edit palette",name:a,colors:sa(l),signature:l.signatureSlots,waive:l.waive,palettes:FE(e,n,a),pictures:d.count(),find:_E(e,a,n,h),exports:zE(e,a,n,h),decode:eg,check:($)=>LE(()=>vn(a,h($),n.palettes))});if(!m){d.discard(),console.log("Nothing changed");return}let p=h(m);if(p===u){console.log(d.added()>0?`Kept the pictures you added to ${a}`:"Nothing changed");return}if(L(c,p),r.palettes.includes(a))ue(e,n,r);console.log(`Saved ${a}${r.palettes.includes(a)?" — new tabs and `ttheme use` wear it":` — \`ttheme add ${a}\` installs it`}`);let b=i5(a,p,n);if(b.length>0)console.log(`
714
717
  It misses the contrast gate:
715
718
  ${b.join(`
716
719
  `)}
717
- \`ttheme check --fix ${a}\` suggests colors that pass`)}var oE=2;async function mE(t,e){let n=Q(),r=Tr(Go(n,dt(n),!1).palettes,t),i=Vc(r,qn(n)[t]);if(e==="show")return console.log(iE(r,i,!Pt()).join(`
718
- `)),0;if(e!=="edit")throw Error(`tone takes show or edit, not ${e}`);if(!ql())throw Error("needs a terminal");let o=await Dp({title:"Edit palette",name:t,colors:ta(Ie(i)),original:ta(Ie(r)),tone:!0,signature:i.signatureSlots,...i.waived?{waive:i.waived}:{},decode:qp,check:()=>{return}},!0);if(!o)return oE;let s=qn(n),a=c$(r,cn(o.colors));if(JSON.stringify(a)===JSON.stringify(s[t]??{}))return oE;Kf(n,u$(s,t,a)),qt(n,dt(n),W(n));let c=Object.keys(a).length;return process.stderr.write(c===0?"Back to the original colors":`Saved · ${c} ${c===1?"color":"colors"} tuned`),0}function pE(t,e,n){return Tr(t.palettes,t.palettes.some((r)=>r.name===e)?e:sE(e,n))}function gE(t,e=!1){let n=Q(),r=dt(n),i=W(n),o=pE(Rt(n,r),t,n);if(console.log(`${o.name} · ${o.group}
719
- `),console.log(ea(o).join(`
720
- `)),ia(o).length===0)return console.log(`
721
- Passes the gate`),0;let{theme:a,moves:c,left:u}=Sl(Ie(o));if(c.length===0)return console.log(`
720
+ \`ttheme check --fix ${a}\` suggests colors that pass`)}var TE=2;async function UE(t,e){let n=J(),r=Tr(Do(n,dt(n),!1).palettes,t),i=ru(r,qn(n)[t]);if(e==="show")return console.log(AE(r,i,!Nt()).join(`
721
+ `)),0;if(e!=="edit")throw Error(`tone takes show or edit, not ${e}`);if(!Xl())throw Error("needs a terminal");let o=await tg({title:"Edit palette",name:t,colors:sa(Ie(i)),original:sa(Ie(r)),tone:!0,signature:i.signatureSlots,...i.waived?{waive:i.waived}:{},decode:eg,check:()=>{return}},!0);if(!o)return TE;let s=qn(n),a=p$(r,an(o.colors));if(JSON.stringify(a)===JSON.stringify(s[t]??{}))return TE;Vf(n,g$(s,t,a)),ue(n,dt(n),K(n));let c=Object.keys(a).length;return process.stderr.write(c===0?"Back to the original colors":`Saved · ${c} ${c===1?"color":"colors"} tuned`),0}function WE(t,e,n){return Tr(t.palettes,t.palettes.some((r)=>r.name===e)?e:HE(e,n))}function KE(t,e=!1){let n=J(),r=dt(n),i=K(n),o=WE(Ct(n,r),t,n);if(console.log(`${o.name} · ${o.group}
722
+ `),console.log(aa(o).join(`
723
+ `)),la(o).length===0)return console.log(`
724
+ Passes the gate`),0;let{theme:a,moves:c,left:u}=Ml(Ie(o));if(c.length===0)return console.log(`
722
725
  No color change fixes it — waive the rule in [contrast] with a reason, or pick other colors`),1;console.log(`
723
726
  ${u.length===0?"These colors pass":"These colors come closer"}:
724
- ${m8(c).join(`
725
- `)}`);let l=Dl(n,o.name);if(!l||!oc(l))return console.log(`
727
+ ${e5(c).join(`
728
+ `)}`);let l=Ql(n,o.name);if(!l||!dc(l))return console.log(`
726
729
  \`ttheme new <name> --from ${o.name}\` makes a copy you can fix`),1;if(!e)return console.log(`
727
- \`ttheme check --fix ${o.name}\` writes them`),1;if(F(l,Wf(zp(l,"utf8"),ta(a))),i.palettes.includes(o.name))qt(n,r,i);return console.log(`
728
- Wrote ${l}`),u.length===0?0:1}function Dl(t,e){let n=lt(e);return n&&Oi(t,!1).some((r)=>r.id===n)?Ff(t,e):void 0}function qp(t){let e=t.trim();if(!e.startsWith(Sn))return;try{let{background:n,foreground:r,cursor:i,selection:o,ansi:s}=Uf(e);return{background:n,foreground:r,cursor:i,selection:o,ansi:s}}catch{return}}function bE(t,e,n,r){return{code:(i)=>Gf(wE(t,Qe(En(e,r(i),n.palettes)))),toml:r,command:"ttheme add"}}function wE(t,e){let n=Dl(t,e.name),r=n&&oc(n)?En(e.name,zp(n,"utf8"),[e]).waiveReason:void 0,i=Zu(t,e.name)??e.pictures,{pictures:o,...s}=_f(e,e.name,r);return{...s,...i?{pictures:i}:{}}}async function w8(t,e,n){if(t===e)return e;let r=n;if(r===void 0)if(!ql())r="tuned";else{let i=await ek({message:`Share ${e.name} as…`,options:[{value:"tuned",label:"Your tone",hint:`named ${zl(e.name)}`},{value:"original",label:"The original"}]});if(me(i))throw new He;r=i}return r==="original"?e:t}function zl(t){return`${t}-tuned`}async function $E(t,e){let n=Q(),r=dt(n),i=pE(Go(n,r),t,n),o=Vc(i,qn(n)[i.name]),s=await w8(o,i,e),a=wE(n,s),c=s===o&&o!==i;if(c){let u=xe(zl(s.name));if(u)throw Error(`${zl(s.name)} ${u} — share the original, or tune a palette with a shorter name`);a.name=zl(s.name)}if(console.log(Gf(a)),process.stdout.isTTY)console.error(`
729
- Anyone with ttheme wears it with: ttheme add ${Sn}…${c?`
730
- It carries your tone, named ${a.name} so it does not clash with ${s.name}`:""}`)}import{spawn as $8,spawnSync as kE}from"node:child_process";import{existsSync as k8,readFileSync as yE}from"node:fs";import{homedir as y8}from"node:os";import{join as vE}from"node:path";function SE(t,e,n,r=y8(),i=(o)=>{process.stdout.write(o)}){if(!e||Pt(t)||t.TMUX||Dt(t)!=="terminal-app")return;let[o="",s="-"]=(t.TTHEME_TERMINAL_SHOWN??"").split(" "),a=t.TTHEME_TTY,c=o?Oe(V(n),o,r):void 0,u=Cu(Qo(n)).get(oe(o))??[],l=u.find((B)=>B===`${j(o)}.${s}.png`)??u[0];if(!a||!c||s==="-"||!l||!k8(c.image))return;let d=vE(Qo(n),l),f=["-l","JavaScript",Hu(n),"tab",a,sn(o)],h=W(n).terminalBase??"Basic",m=Xh(t,r),g=yE(d),b,w=d,k=0,v,S=!1,M=!1,I,O=(B)=>{S=!0,$8("osascript",[...f,h],{stdio:"ignore"}).on("close",()=>{if(S=!1,M)return;i(B);let X=I;I=void 0,X?.()})},H=(B,X)=>{b??=jt(new Uint8Array(yE(c.image)));let z=vE(Qo(n),`${j(o)}.h${process.pid}-${++k}.png`);li(w,z,yr(kr(b,B,c.opacity,tm(b.width,b.height,c,m)))),w=z,O(X)},N=()=>{if(w!==d)li(w,d,g),w=d},L=(B)=>{clearTimeout(v),v=setTimeout(()=>{if(S)I=B;else B()},vh)},K=()=>{clearTimeout(v),I=void 0};return{slots:[],paint(B){return L(B.name===o?()=>{N(),O("")}:()=>H(B.background,er(B))),""},wear(B){return kE("osascript",[...f.slice(0,-1),sn(B.name),h],{encoding:"utf8"}).stdout?.trim()==="worn"?"":er(B)},saved:async()=>new Map,restore(){return K(),M=!0,N(),kE("osascript",[...f,h],{stdio:"ignore"}),""},stop:K}}import{existsSync as sc,readdirSync as v8,readFileSync as Jl,rmSync as EE,statSync as xE}from"node:fs";import{homedir as S8}from"node:os";import{join as ro}from"node:path";var E8=150,M8=260;function Yl(t){return t?.includes(`path = "${j("")}`)===!0}function x8(t){try{return W(t).terminals.includes("warp")}catch{return!1}}function ME(t,e){let n=j(e);if(!sc(t))return;return v8(t).filter((i)=>i.startsWith(`${n}.`)&&/^[0-9a-f]{8}\.yaml$/.test(i.slice(n.length+1))).map((i)=>({file:i,at:xE(ro(t,i)).mtimeMs})).sort((i,o)=>o.at-i.at)[0]?.file??(sc(ro(t,`${n}.yaml`))?`${n}.yaml`:void 0)}function O8(t,e){if(!e)return;let n;try{n=Jl(ro(t,e),"utf8")}catch{return}let r=/^background_image:\n\s+path:\s*"([^"]*)"\n\s+opacity:\s*(\d+)/m.exec(n);return r?.[1]?{image:r[1],opacity:Number(r[2])/100}:void 0}function OE(t,e,n,r=S8()){if(!e||Pt(t)||t.TMUX||Dt(t)!=="warp")return;let i=Dr(r,n);if(!sc(i)||!x8(n))return;let o=Ci(r),s=Fu(n),a=[],c=t.TTHEME_WARP_WEARS??Ae(W(n)),u=O8(o,c&&ME(o,c)),l,d,f=(b)=>{let w=Jl(i,"utf8"),k=qr(w);if(k===b)return;if(Yl(b)&&!Yl(k)&&!sc(s))F(s,k??"");if(bn(i,ju(w,b)),!Yl(b))EE(s,{force:!0})},h=(b)=>{for(let w of a.splice(0))if(w===b)a.push(w);else EE(ro(o,w),{force:!0})},m=()=>{clearTimeout(l),clearTimeout(d)},g=(b,w,k)=>{m(),l=setTimeout(()=>{let v=w;if(!v)v=`${j(b.name)}.view-${process.pid}-${a.length+1}.yaml`,F(ro(o,v),ma(b,k)),a.push(v);let S=v,M=Date.now()-xE(ro(o,S)).mtimeMs;d=setTimeout(()=>{f(im(b.name,S)),h(S)},Math.max(0,M8-M))},E8)};return{slots:[],paint:(b)=>{if(b.name===c)g(b,ME(o,b.name));else if(u)g(b,void 0,u);else g(b,sc(ro(o,`${j(b.name)}.yaml`))?`${j(b.name)}.yaml`:void 0);return""},wear:(b,w)=>w.includes("warp")?"":void 0,saved:async()=>new Map([["theme",qr(Jl(i,"utf8"))??""]]),restore:(b)=>{m();let w=b.get("theme");if(w)f(w);else if(Yl(qr(Jl(i,"utf8"))))f(Lu);return h(),""}}}function Es(t,e,n){return SE(t,e,n)??fk(t,e)??OE(t,e,n)}function Vl(t){Yr(`
731
- ${t} palettes installed — open a new tab, or reload your terminal config`)}function R8(t,e){return t.map((n)=>{if(n.startsWith(Sn))return n;let r=lt(n);if(r===void 0)return e===q?n:`${e}/${n}`;if(r!==e)throw Error(`${n} is not in ${e} — give its bare name, or leave --market out`);return n})}async function IE(t,e){let n=Q(),r=e?R8(t,(await Im(n,e)).id):t,i=dt(n),o=[...new Set(r.map((l)=>l.startsWith(Sn)?aE(n,l,i):l))],s=W(n),a=o.filter((l)=>s.palettes.includes(l)),c=o.filter((l)=>!s.palettes.includes(l));if(c.length===0){qt(n,i,s),console.log(`Already installed: ${a.join(", ")}`);return}let u={...s,palettes:[...s.palettes,...c]};Ke(n,i,s,u);for(let l of c)console.log(` + ${l}`);await nr(n,Rt(n,i,!1).palettes.filter((l)=>c.includes(l.name)),u.terminals),Vl(u.palettes.length)}function RE(t){let e=Q(),n=dt(e),r=W(e),i=t.filter((a)=>r.palettes.includes(a)),o=t.filter((a)=>!r.palettes.includes(a));if(i.length===0)throw Error(`not installed: ${o.join(", ")} — \`ttheme list\` marks what is`);let s={...r,palettes:r.palettes.filter((a)=>!i.includes(a))};Ke(e,n,r,s),es(e,n,r.terminals,i);for(let a of i)console.log(` - ${a}`);if(Vl(s.palettes.length),o.length>0)return console.error(`ttheme remove: not installed: ${o.join(", ")}`),1;return 0}function PE(t){let e=Q(),n=dt(e),r=W(e);if(!r.palettes.includes(t))throw Error(`${t} is not installed — \`ttheme add ${t}\` first`);let{off:i,...o}=r,s=Ke(e,n,r,{...o,startup:t},!0);console.log(TE(t,r.terminals,s).join(`
732
- `))}function NE(){let t=Q(),e=W(t),n=Fi(e);if(!n)throw Error("no palettes installed — `ttheme browse` picks some");if(!e.off){console.log(`Already on · ${n}`);return}let{off:r,...i}=e,o=Ke(t,dt(t),e,i);console.log(TE(n,i.terminals,o).join(`
733
- `))}function AE(){let t=Q(),e=W(t);if(e.off){console.log("Already off");return}let n=Ke(t,dt(t),e,{...e,off:!0}),r=Fi(e);console.log(`Off · new tabs open in the terminal's own colors${r?` — \`ttheme on\` wears ${r} again`:""}`);for(let i of $t(e.terminals))if(n.get(i.id)?.restart)console.log(`${i.name} new tabs open on your own profile once ${i.name} restarts`)}function TE(t,e,n){let r=$t(e).filter((o)=>!o.defaults),i=r.length>0?[`Default ${t} · ${r.map((o)=>o.name).join(", ")} open new tabs with it once their config reloads`]:[];for(let o of $t(e)){let s=o.defaults?.profile(t);if(s)i.push(n.get(o.id)?.restart?`${o.name} new tabs open with it once ${o.name} restarts — "${s}" is now its default profile`:`${o.name} new tabs open with it — "${s}" is its default profile`)}return i.length>0?i:[`Default ${t} · no terminal is wired to open with it — \`ttheme init\` wires one`]}function HE(t,e){let n=new Map(e.palettes.map((r)=>[r.name,"market"]));for(let r of Jc(t,e.palettes,!1))n.set(r.name,"mine");return n}function CE(t,e=!1){let n=Q(),r=dt(n),i=new Set(W(n).palettes),o=HE(n,r),s=It(Rt(n,r).palettes);if(t)Mi(s);let a=ki(t?$$(s,t):s),c=(d)=>o.get(d)??"kept";if(e){let d=a.map((f)=>({name:f.name,group:f.group,...f.catalog?{catalog:f.catalog}:{},installed:i.has(f.name),source:c(f.name)}));console.log(JSON.stringify(d,null,2));return}let u=Math.max(...a.map((d)=>d.name.length),0),l={market:"",mine:" · yours",kept:" · in no market you added"};for(let d of a){let f=d.catalog?`${d.group} / ${d.catalog}`:d.group;console.log(` ${i.has(d.name)?"●":"○"} ${d.name.padEnd(u)} ${f}${l[c(d.name)]}`)}if(process.stdout.isTTY){let d=t?`${a.length} of ${s.length}`:`${s.length}`;console.log(`
734
- ${d} palettes — ${a.filter((f)=>i.has(f.name)).length} installed`)}}async function LE(){let t=Q(),e=jo(t);if(e.length===0)console.log("No markets to update — `ttheme market add official` brings the ttheme catalog back");let n=(h,m)=>`${km(h,m)} — kept the copy from the last update`;for(let h of e.filter(ut))try{console.log(` ${g1(t,h)}`)}catch(m){console.log(` ${n(h,m)}`)}let r=e.filter((h)=>!ut(h)),i=new Set(r),o=[],s=Jr(),a=()=>s.set(`Updating ${[...i].map(nt).join(", ")}${r.length>1?` · ${r.length-i.size}/${r.length}`:""}`);a(),await Promise.all(r.map(async(h)=>{let m=await $m(t,h),g;if("refreshed"in m){g=ym(m.refreshed);let b=Sm(m.refreshed);if(b)o.push(b)}else g=n(h,m.failure);if(i.delete(h),i.size>0)a();else s.done();s.say(` ${g}`)})),s.done();for(let h of o)console.log(h);if(!I8(Dn(t)))return;for(let h of Em(t))console.log(` ${h}`);let c=dt(t),u=W(t),l=HE(t,c),d=u.palettes.filter((h)=>!l.has(h)),f=new Map(Jn(t).map((h)=>[h.name,h.pictures]));qt(t,c,u);for(let h of d)console.log(` ${h} left its market — ttheme keeps the copy you have`);await nr(t,Rt(t,c,!1).palettes.filter((h)=>u.palettes.includes(h.name)&&f.has(h.name)).map((h)=>os(h,f.get(h.name))),u.terminals)}async function Yp(t,e,n,r=!1){let i=process.env.TTHEME_SORT==="series"?t.palettes:ki(t.palettes);Mi(i);let o=process.stdout.isTTY===!0,s=Es(process.env,o,Q()),a=s?await s.saved():new Map,c=new Bm({entries:i,scope:n,installed:e,required:r,color:!Pt(),fx:cl(process.env.TTHEME_FX),onFocus:s?(l)=>process.stdout.write(s.paint(l)):void 0}),u=await c.prompt();if(s)process.stdout.write(s.restore(a));if(u==="cancel")return;return t.palettes.filter((l)=>c.picked.has(l.name)).map((l)=>l.name)}function Vp(t,e,n,r){let i=n===q?void 0:Ma(t,n),o;try{o=i?.id??cs(t,n)}catch{o=ae(n)?Pr(n):nt(n)}return{source:n,id:o,...i?.info.description?{description:i.info.description}:{},shown:nt(n),entries:n===q?Wi(t,n):i?.entries??[],auto:Nr(n,e.updates),status:Nm(t,n,r)}}function Jp(t){return t instanceof Error?t.message:String(t)}function A8(t,e,n,r){let i=new Map(r.map((a)=>[a.source,a.id])),o=[],s=(a,c)=>o.push({where:a,message:c});for(let a of Bt(e.markets)){let c=i.get(a)??nt(a),u=n[a],l=ya(t,a);if(u&&(l===void 0||u.at>l))o.push({where:c,source:a,update:!0,message:`Update failed ${Ea(u.at)}: ${u.error}`});if(a===q)try{en(N8(Re(t),"utf8"))}catch(d){o.push({where:c,source:a,message:`${nt(Re(t))}: ${Jp(d)}`})}else if(ae(a))if(!P8(Be(t,a)))o.push({where:c,source:a,message:"No copy of it yet — `ttheme update` fetches it"});else try{Yn(a,tn(t,a),Wi(t,q),s)}catch(d){o.push({where:c,source:a,message:`${nt(Be(t,a))}: ${Jp(d)}`})}else try{Xe(a,ce(Ge(a)),Wi(t,q),(d,f)=>s(nt(d),f))}catch(d){o.push({where:c,message:Jp(d)})}}return o}function T8(t,e,n,r,i){return{refresh:async(o)=>{if(ut(o)){let a=Vp(t,e,o,rr());return{market:a,refreshed:{source:o,id:a.id,count:It(a.entries).length,change:{added:[],changed:[],gone:[]}}}}let s=await wm(t,o,gm);return{market:Vp(t,e,o,rr()),refreshed:s}},fetch:async(o)=>{if(ut(o)){let a=Ge(o),c=ce(a);return{source:o,id:c,...a.description?{description:a.description}:{},shown:nt(o),entries:Xe(o,c,Wi(t,q),ue(!1)),auto:!1,status:"read in place"}}let s=await Sa(t,o,void 0,r);return n.set(o,s),{source:o,id:s.id,..."info"in s&&s.info.description?{description:s.info.description}:{},shown:nt(o),entries:s.entries,auto:Nr(o,{}),status:"not added yet"}},search:(o)=>Tm(o,r),apply:i}}async function Zp(...t){for(let e of await Mm(...t))Yr(e)}function H8(t,e,n){let r=[];for(let i of t.adds){let o=i.source!==q&&(t.auto[i.source]??i.auto);r.push(`Added ${i.id} · ${i.shown} — ${Tt(It(i.entries).length)}${o?", updating on its own":""}`)}for(let i of t.removes){let o=e.find((a)=>a.source===i)?.id??i;r.push(`Removed ${o} · ${nt(i)}`);let s=n.filter((a)=>(lt(a)??q)===o);if(s.length>0)r.push(Pm(s))}for(let[i,o]of Object.entries(t.auto)){let s=e.find((a)=>a.source===i);if(s&&!t.removes.includes(i))r.push(`${s.id} ${o?"updates on its own now":"no longer updates on its own"}`)}return r}async function C8(t,e,n,r,i){let o=W(t),s=r.adds.length+r.removes.length+Object.keys(r.auto).length>0;for(let w of r.adds){let k=i.get(w.source);if(k)as(t,k)}for(let w of r.removes)Rm(t,w);let a=[...Bt(o.markets).filter((w)=>!r.removes.includes(w)),...r.adds.map((w)=>w.source)],c=Ia(o,a,{...o.updates,...r.auto});if(s)We(t,c);let u=dt(t,!1),l=Rt(t,u,!1).palettes.filter((w)=>r.picked.has(w.name)).map((w)=>w.name),d=o.palettes.filter((w)=>!l.includes(w)),f=l.filter((w)=>!o.palettes.includes(w));if(!s&&f.length===0&&d.length===0){await Zp(t,o,e,r.refreshed),Yr("Nothing changed");return}let h={...c,palettes:l};Ke(t,u,o,h),es(t,u,o.terminals,d);for(let w of H8(r,n,l))Yr(w);for(let w of f)Yr(` + ${w}`);for(let w of d)Yr(` - ${w}`);let m=new Map(e.map((w)=>[w.name,w.pictures])),g=new Set(r.refreshed.flatMap((w)=>[...w.change.changed,...w.change.gone])),b=Rt(t,u,!1).palettes;if(await nr(t,[...b.filter((w)=>f.includes(w.name)),...b.filter((w)=>l.includes(w.name)&&!f.includes(w.name)&&g.has(w.name)&&m.has(w.name)).map((w)=>os(w,m.get(w.name)))],h.terminals),f.length>0||d.length>0)Vl(h.palettes.length)}async function FE(){let t=O$(process.env),e=Q(),n=W(e),r=Jn(e),i=rr(),o=Bt(n.markets).map((w)=>Vp(e,n,w,i)),s=new Set(o.flatMap((w)=>w.entries.map((k)=>k.name))),a=r.filter((w)=>n.palettes.includes(w.name)&&!s.has(w.name));Mi([...o.flatMap((w)=>w.entries),...a]);let c=new Map,u=new AbortController,l=process.stdout.isTTY===!0,d=Es(process.env,l,e),f=d&&!t?await d.saved():new Map,h=Ae(n);if(t)process.stdout.write("\x1B[?2026h");let m=new Wm({markets:o,kept:a,installed:n.palettes,...h?{startup:h}:{},...t?{hub:t}:{},problems:A8(e,n,i,o),due:bm(e,n),io:T8(e,n,c,u.signal,(w,k)=>Ny({say:k.say,set:k.status},()=>C8(e,r,o,w,c))),...process.env.TTHEME_SORT==="series"?{}:{order:ki},color:!Pt(),lookups:process.env.TTHEME_MARKET_LOOKUP!=="off",fx:cl(process.env.TTHEME_FX),owns:l&&!t,...d?{onFocus:(w)=>process.stdout.write(d.paint(w))}:{}});try{await m.run()}finally{if(d?.stop?.(),d&&!t)process.stdout.write(d.restore(f));u.abort()}await m.idle();let g=m.result(),b=m.next();if(t&&b!==void 0)return await Zp(e,W(e),r,g.refreshed),b;if(l&&t)process.stdout.write("\x1B[?1049l\x1B[?25h");for(let w of g.refreshed){let k=vm(w);if(k)console.log(k)}if(m.applied()){for(let k of m.lines())console.log(k);let w=m.failure();if(w)throw w}else await Zp(e,W(e),r,g.refreshed),console.log("Nothing changed");return t?iu:0}import{rmSync as jE}from"node:fs";import{basename as L8,join as ac}from"node:path";var _E=ac(import.meta.dirname,".."),F8=ac(_E,"themes"),Qp=ac(_E,"dist"),Zl=Zt.map((t)=>On[t].emitter),j8=[Rh,Ch],tq=Zl.map((t)=>t.id);async function Ql({only:t}={}){if(typeof Bun>"u")throw Error("needs bun — run it from a checkout: bun src/bin.ts build");let e=t&&t.length>0?Zl.filter((o)=>t.includes(o.id)):Zl,n=Qw(F8),r=Dg(n);if(r.length>0){for(let o of r)console.error(` ✗ ${o.theme} [${o.rule}] ${o.detail}`);throw Error(`${r.length} contrast violation(s). Fix the palette, or waive the rule in its [contrast] section with a reason.`)}if(e.length===Zl.length)jE(Qp,{recursive:!0,force:!0});else for(let o of e)jE(ac(Qp,o.id),{recursive:!0,force:!0});let i=0;for(let o of[...e,...j8]){let s=n.flatMap((u)=>o.emit?.(u)??[]),a=o.emitShared?.(n)??[];for(let u of[...s,...a])await Bun.write(ac(Qp,u.path),u.content),i++;let c=s.length>0?`${n.length} themes${o.limits?` (${o.limits})`:""}`:a.length>0?a.map((u)=>L8(u.path)).join(" "):`no files (${o.limits??"nothing to write"})`;console.log(` ${o.id.padEnd(16)} ${c}`)}console.log(`
735
- ${n.length} themes (${Xw(n).length} in the new-tab rotation) -> ${i} files in dist/`)}import{existsSync as G8,readFileSync as KE}from"node:fs";import{availableParallelism as _8,homedir as BE}from"node:os";var B8=4;async function Xl(t,e,n=BE()){let r=Ot(V(t)),i=Ur(t),o=new Map(he(t).palettes.map((d)=>[d.name,Ro(d)])),s=Object.entries(r.palettes).flatMap(([d,f])=>{let h=o.get(d);return h?f.pictures.filter((m)=>Po(m)||(m.blur??0)!==i).map((m)=>({name:d,key:m.key,paint:h})):[]});if(s.length===0)return 0;e(`Drawing ${s.length} background picture${s.length===1?"":"s"} again${i?` · blur ${i}px`:""}`);let a=ji(W(t).terminals),c=new xp(Math.min(B8,_8()-1)),u=await c.map(s.map(({name:d,key:f,paint:h})=>({job:"redraw",home:t,user:n,name:d,key:f,paint:h,blur:i,aligns:a})));c.close();let l=[];return u.forEach((d,f)=>{let{name:h,key:m}=s[f];if(d instanceof Error||d===null){e(` ▢ ${h} ${m} — ${d instanceof Error?d.message:"no original to draw it from"}, left as it was`);return}l.push({name:h,picture:d})}),yf(t,l),Te(t,n),l.length}async function GE(t,e,n,r,i=BE()){let o=Ot(V(t)).palettes[e],s=o?.pictures.find((l)=>l.key===(r??o.active));if(!o||!s)throw Error(`${e} has no picture ${r??"shown"}`);if(_e(s)===n)return{key:s.key,changed:!1};let a=he(t).palettes.find((l)=>l.name===e);if(!a)throw Error(`no palette called ${e}`);let c=ji(W(t).terminals),u=await Qu(t,e,s.key,Ro(a),Ur(t),c,i,n);if(!u)throw Error(`${e} ${s.key} has no original to draw it from`);return yf(t,[{name:e,picture:u}]),Te(t,i),{key:s.key,changed:!0}}function UE(t,e,n){let r=Ot(V(t)).palettes[e],i=r?.pictures.find((a)=>a.key===(n??r.active));if(!r||!i)throw Error(`${e} has no picture ${n??"shown"}`);let o=he(t).palettes.find((a)=>a.name===e);if(!o)throw Error(`no palette called ${e}`);let s=_e(i)==="original"?"tone":"original";if(!Fy(t,e,i.key,Ro(o),Ur(t),s))throw Error(`${e} ${i.key} has no original to draw it from`);return{key:i.key,coloring:s}}async function WE(){return await Xl(Q(),(t)=>process.stderr.write(`${t}
736
- `)),0}async function zE(t,e,n){let r=Q();if(Tr(he(r).palettes,t),e==="show"){if(!n)throw Error("image show needs the picture to show");let{at:i,of:o}=No(r,t,n);return Te(r),process.stderr.write(`Background · ${t} ${i}/${o} ${n}
737
- `),0}if(e==="drop"){let{key:i,left:o}=Fc(r,t,n);return Te(r),process.stderr.write(`Background · ${t} removed ${i} · ${o} left
738
- `),0}if(e==="tone"||e==="original"){let i=await GE(r,t,e,n);return process.stderr.write(`Background · ${t} ${i.key} ${e==="tone"?"tinted":"in its own colors"}
739
- `),0}if(e==="prepare"){let{key:i,coloring:o}=UE(r,t,n);return process.stderr.write(`Background · ${t} ${i} ready in ${o==="tone"?"its tone":"its own colors"}
740
- `),0}if(e==="tuned")return Te(r),0;throw Error(`unknown image action ${e} — show, drop, tone, original, prepare or tuned`)}function DE(t,e){let n=/^(\d+)x(\d+)$/.exec(t),r=/^(\d+)x(\d+)([+-]\d+)([+-]\d+)$/.exec(e);if(!n||!r)throw Error("a canvas is <width>x<height> and a place <width>x<height>+<x>+<y>");let[i,o]=n.slice(1).map(Number),[s,a,c,u]=r.slice(1).map(Number);return{width:i,height:o,at:{x:c,y:u,w:s,h:a}}}function U8(t,e,n){let r=DE(e,n),i=Math.min(1,t.width/r.at.w);if(i===1)return r;return{width:Math.max(1,Math.round(r.width*i)),height:Math.max(1,Math.round(r.height*i)),at:{x:Math.round(r.at.x*i),y:Math.round(r.at.y*i),w:t.width,h:t.height}}}function qE(t,e,n,r){let i=jt(new Uint8Array(KE(t)));return F(e,je(Qb(i,DE(n,r)))),0}function YE(t,e,n,r,i,o,s){let a=Number(r);if(!le(n)||!Number.isFinite(a))throw Error("flatten needs a #rrggbb background and an opacity from 0 to 1");let c=jt(new Uint8Array(KE(t))),u=i?U8(c,i,o??""):void 0,l=yr(kr(c,n,Math.max(0,Math.min(1,a)),u));if(s&&G8(s))li(s,e,l);else F(e,l);return 0}import{execFileSync as W8}from"node:child_process";import{readFileSync as K8}from"node:fs";import{arch as z8,platform as td,release as Xp}from"node:os";var D8={ghostty:"ghostty",iterm2:"iTerm.app",wezterm:"WezTerm","terminal-app":"Apple_Terminal",warp:"WarpTerminal"};function q8(t,e){if(t==="konsole"){let r=/^(\d{2})(\d{2})(\d{2})$/.exec(e.KONSOLE_VERSION??"");return r?`${r[1]}.${r[2]}.${Number(r[3])}`:e.KONSOLE_VERSION}let n=D8[t];return n!==void 0&&e.TERM_PROGRAM===n?e.TERM_PROGRAM_VERSION:void 0}function Y8(t){let e=Dt(t),n=t.TERM_PROGRAM&&t.TERM_PROGRAM!=="tmux"?t.TERM_PROGRAM:void 0,r=e==="unknown"?`unknown${n?` (TERM_PROGRAM=${n})`:""}`:e==="editor"?`editor (${yh(t)})`:`${e} ${q8(e,t)??"(version unknown)"}`,i=t.TERM_PROGRAM==="tmux"?t.TERM_PROGRAM_VERSION:void 0;return[r,t.TMUX?`tmux ${i??"yes"}`:"tmux no",t.SSH_CONNECTION||t.SSH_TTY?"ssh yes":"ssh no"].join(" · ")}function JE(t,e){try{return W8(t,e,{encoding:"utf8",timeout:2000,stdio:["ignore","pipe","ignore"]}).trim()}catch{return}}function J8(){let t=z8();if(td()==="darwin")return`macOS ${JE("sw_vers",["-productVersion"])??`(Darwin ${Xp()})`} · ${t}`;if(td()==="linux"){let e="";try{e=K8("/etc/os-release","utf8")}catch{}return`${/^PRETTY_NAME="?([^"\n]*)"?$/m.exec(e)?.[1]??"Linux"} · linux ${Xp()} · ${t}`}return`${td()==="win32"?"Windows":td()} ${Xp()} · ${t}`}function V8(t){if(t.TTHEME_ZSH)return`zsh ${t.TTHEME_ZSH}`;return(t.SHELL?JE(t.SHELL,["--version"])?.split(`
741
- `)[0]:void 0)??t.SHELL??"unknown"}function Z8(t){try{let{terminals:e}=W(t);return e.length>0?e.join(", "):"none"}catch{return"installed.json missing or unreadable"}}function Q8(t){let e=yu.flatMap((n)=>{let r=t[n];return r===void 0||r===da(n)?[]:[`${n}=${/\s/.test(r)?JSON.stringify(r):r}`]});return e.length>0?e.join(" "):void 0}function VE(){let t=process.env,n=[["ttheme",At.version],["OS",J8()],["Shell",V8(t)],["Terminal",Y8(t)],["Wired",Z8(Q())],["Settings",Q8(t)]].filter((i)=>i[1]!==void 0),r=Math.max(...n.map(([i])=>i.length));for(let[i,o]of n)console.log(`${i.padEnd(r)} ${o}`)}import{execFileSync as X8,spawnSync as t5}from"node:child_process";import{chmodSync as e5,copyFileSync as n5,existsSync as io,mkdirSync as ZE,readdirSync as r5,readFileSync as nd,rmSync as tg}from"node:fs";import{homedir as i5}from"node:os";import{dirname as Ms,join as gt}from"node:path";function o5(t,e,n){for(let r of r5(e))t.push({from:gt(e,r),to:gt(n,r)})}function ig(t){return en(nd(gt(t,"dist","manifest.json"),"utf8"))}function ed(t,e){let n=gt(e.configHome,"ttheme"),r=[{from:gt(e.root,"bin","ttheme.js"),to:gt(n,"ttheme.js")},{from:gt(e.root,"bin","ttheme.js.map"),to:gt(n,"ttheme.js.map")},{from:gt(e.root,"shell","ttheme.zsh"),to:gt(n,"ttheme.zsh")},{from:gt(e.root,"shell","preview.zsh"),to:gt(n,"preview.zsh")},{from:gt(e.root,"shell","launch-tab.zsh"),to:gt(n,"launch-tab.zsh"),executable:!0}];o5(r,gt(e.root,"shell","adapters"),gt(n,"adapters"));let i=[{file:gt(e.zdotdir,".zshrc"),block:hk(n)}],o=gt(n,"config.zsh"),s=pk(io(o)?nd(o,"utf8"):""),a={file:o,content:t.warpFast===void 0?s:Eu(s,"TTHEME_WARP_FAST",t.warpFast?"on":"off")},c={terminals:t.terminals,palettes:t.palettes,...Object.fromEntries($t(t.terminals).flatMap((d)=>Object.entries(d.installs?.(e)??{}).filter(([,f])=>f!==void 0))),...t.off?{off:!0}:{}},u=zu(e.configHome,c,e.home),l=e.stateDir?[gt(e.stateDir,"ghostty",".blind")]:[];return{home:e.home,copies:r,edits:i,settings:a,forget:l,catalog:ig(e.root),installed:c,notes:u}}function XE(t){try{return W(t)}catch{return}}function tM(t,e){try{return Rt(t,dt(t,!1,e),!1).palettes}catch{return[]}}function s5(t,e){let n=ig(e.root),r=Bt(t.markets).includes(q)?n.palettes:[],i=new Set(r.map((s)=>s.name)),o=tM(e.configHome,n).filter((s)=>!i.has(s.name)&&(lt(s.name)!==void 0||t.palettes.includes(s.name)));return{...n,palettes:[...r,...o]}}function eM(t,e){let n=Fi(t);return n&&e.includes(n)?n:void 0}function a5(t,e,n){let r=ed(e,n),i=eM(t,e.palettes),o=new Set(["terminals","palettes","off","startup",...Zt.flatMap((a)=>Object.keys(On[a].installs?.(n)??{}))]),s=Object.fromEntries(Object.entries(t).filter(([a])=>!o.has(a)));return{...r,installed:{...s,...r.installed,...i?{startup:i}:{}}}}function c5(t,e){let n=ed({terminals:t.terminals,palettes:t.palettes,off:t.off},e),r=new Set([...n.catalog.palettes,...tM(e.configHome,n.catalog)].map((l)=>l.name)),i=t.palettes.filter((l)=>r.has(l)),o=t.palettes.filter((l)=>!r.has(l)),{startup:s,...a}=t,c={...a,palettes:i,...s&&i.includes(s)?{startup:s}:{}},u=o.length>0?[`Dropped ${o.join(", ")} — no longer in the catalog`,...n.notes]:n.notes;return{...n,installed:c,notes:u}}function u5(t){try{return X8(process.execPath,[gt(t,"ttheme","ttheme.js"),"--version"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function nM(t){let e=Ae(t);return[$t(t.terminals).map((n)=>n.name).join(", "),`${t.palettes.length} palettes`,e?`default ${e}`:"no default — ttheme is off"].join(" · ")}function eg(t,e=on()){for(let s of t.copies)if(ZE(Ms(s.to),{recursive:!0}),tg(s.to,{force:!0}),tg(`${s.to}.zwc`,{force:!0}),n5(s.from,s.to),s.executable)e5(s.to,493);F(t.settings.file,t.settings.content);for(let s of t.forget)tg(s,{force:!0});let n=Ms(Ms(t.settings.file)),r=XE(n),i=Object.fromEntries($t(t.installed.terminals).flatMap((s)=>{let a=s.defaults?.key,c=a?r?.[a]:void 0;return a&&c?[[a,c]]:[]})),o=$a(n,{...t.installed,...i},e,t.home);if(Bt(o.markets).includes(q))Qc(n,t.catalog);We(n,o),qt(n,dt(n),o,t.home,e);for(let s of t.edits){ZE(Ms(s.file),{recursive:!0});let a=io(s.file)?nd(s.file,"utf8"):"";bn(s.file,_r(a,s.block))}return _i(n,o,!0,e,t.home)}function cc(t){if(me(t))throw Fr("Nothing changed"),new He;return t}function ng(t,e){return Zt.filter((n)=>On[n].offered(t,e))}async function l5(t,e,n,r){return cc(await tk({message:"Wire which terminals?",options:ng(n,r).map((i)=>({value:i,label:On[i].name,hint:i===t?"detected":void 0})),initialValues:e,required:!0}))}async function d5(t){return cc(await nn({message:"Switch Warp to each tab's palette in about 0.2 s instead of 0.6 s?\nAbout 8% CPU while Warp is in front with tabs of different palettes — `ttheme config` changes it",initialValue:vu(t,"TTHEME_WARP_FAST")!=="off"}))}function rg(t){let e=[...t.copies.filter((n)=>!io(n.to)).map((n)=>n.to),...io(t.settings.file)?[]:[t.settings.file],...t.edits.filter((n)=>!nd(n.file,"utf8").includes("# ttheme begin")).map((n)=>n.file)];if(e.length>0)throw Error(`init left gaps:
730
+ \`ttheme check --fix ${o.name}\` writes them`),1;if(L(l,Jf(Xp(l,"utf8"),sa(a))),i.palettes.includes(o.name))ue(n,r,i);return console.log(`
731
+ Wrote ${l}`),u.length===0?0:1}function Ql(t,e){let n=ct(e);return n&&Ii(t,!1).some((r)=>r.id===n)?Wf(t,e):void 0}function eg(t){let e=t.trim();if(!e.startsWith(Nr))return;try{let{background:n,foreground:r,cursor:i,selection:o,ansi:s}=Yf(e);return{background:n,foreground:r,cursor:i,selection:o,ansi:s}}catch{return}}function zE(t,e,n,r){return{code:(i)=>qf(DE(t,Qe(vn(e,r(i),n.palettes)))),toml:r,command:"ttheme add"}}function DE(t,e){let n=Ql(t,e.name),r=n&&dc(n)?vn(e.name,Xp(n,"utf8"),[e]).waiveReason:void 0,i=Pl(t,e.name)??e.pictures,{pictures:o,...s}=zf(e,e.name,r);return{...s,...i?{pictures:i}:{}}}async function o5(t,e,n){if(t===e)return e;let r=n;if(r===void 0)if(!Xl())r="tuned";else{let i=await lk({message:`Share ${e.name} as…`,options:[{value:"tuned",label:"Your tone",hint:`named ${Zl(e.name)}`},{value:"original",label:"The original"}]});if(me(i))throw new Te;r=i}return r==="original"?e:t}function Zl(t){return`${t}-tuned`}async function qE(t,e){let n=J(),r=dt(n),i=WE(Do(n,r),t,n),o=ru(i,qn(n)[i.name]),s=await o5(o,i,e),a=DE(n,s),c=s===o&&o!==i;if(c){let u=xe(Zl(s.name));if(u)throw Error(`${Zl(s.name)} ${u} — share the original, or tune a palette with a shorter name`);a.name=Zl(s.name)}if(console.log(qf(a)),process.stdout.isTTY)console.error(`
732
+ Anyone with ttheme wears it with: ttheme add ${Nr}…${c?`
733
+ It carries your tone, named ${a.name} so it does not clash with ${s.name}`:""}`)}import{spawn as s5,spawnSync as YE}from"node:child_process";import{existsSync as a5,readFileSync as JE}from"node:fs";import{homedir as c5}from"node:os";import{join as VE}from"node:path";function ZE(t,e,n,r=c5(),i=(o)=>{process.stdout.write(o)}){if(!e||Nt(t)||t.TMUX||qt(t)!=="terminal-app")return;let[o="",s="-"]=(t.TTHEME_TERMINAL_SHOWN??"").split(" "),a=t.TTHEME_TTY,c=o?Oe(Z(n),o,r):void 0,u=_u(os(n)).get(oe(o))??[],l=u.find((_)=>_===`${F(o)}.${s}.png`)??u[0];if(!a||!c||s==="-"||!l||!a5(c.image))return;let d=VE(os(n),l),f=["-l","JavaScript",ju(n),"tab",a,on(o)],h=K(n).terminalBase??"Basic",m=om(t,r),p=JE(d),b,$=d,k=0,v,S=!1,M=!1,I,x=(_)=>{S=!0,s5("osascript",[...f,h],{stdio:"ignore"}).on("close",()=>{if(S=!1,M)return;i(_);let X=I;I=void 0,X?.()})},H=(_,X)=>{b??=_t(new Uint8Array(JE(c.image)));let z=VE(os(n),`${F(o)}.h${process.pid}-${++k}.png`);di($,z,$r(wr(b,_,c.opacity,sm(b.width,b.height,c,m)))),$=z,x(X)},N=()=>{if($!==d)di($,d,p),$=d},j=(_)=>{clearTimeout(v),v=setTimeout(()=>{if(S)I=_;else _()},Ih)},W=()=>{clearTimeout(v),I=void 0};return{slots:[],paint(_){return j(_.name===o?()=>{N(),x("")}:()=>H(_.background,tr(_))),""},wear(_){return YE("osascript",[...f.slice(0,-1),on(_.name),h],{encoding:"utf8"}).stdout?.trim()==="worn"?"":tr(_)},saved:async()=>new Map,restore(){return W(),M=!0,N(),YE("osascript",[...f,h],{stdio:"ignore"}),""},stop:W}}import{existsSync as fc,readdirSync as u5,readFileSync as ed,rmSync as QE,statSync as tM}from"node:fs";import{homedir as l5}from"node:os";import{join as oo}from"node:path";var d5=150,f5=260;function td(t){return t?.includes(`path = "${F("")}`)===!0}function h5(t){try{return K(t).terminals.includes("warp")}catch{return!1}}function XE(t,e){let n=F(e);if(!fc(t))return;return u5(t).filter((i)=>i.startsWith(`${n}.`)&&/^[0-9a-f]{8}\.yaml$/.test(i.slice(n.length+1))).map((i)=>({file:i,at:tM(oo(t,i)).mtimeMs})).sort((i,o)=>o.at-i.at)[0]?.file??(fc(oo(t,`${n}.yaml`))?`${n}.yaml`:void 0)}function m5(t,e){if(!e)return;let n;try{n=ed(oo(t,e),"utf8")}catch{return}let r=/^background_image:\n\s+path:\s*"([^"]*)"\n\s+opacity:\s*(\d+)/m.exec(n);return r?.[1]?{image:r[1],opacity:Number(r[2])/100}:void 0}function eM(t,e,n,r=l5()){if(!e||Nt(t)||t.TMUX||qt(t)!=="warp")return;let i=Dr(r,n);if(!fc(i)||!h5(n))return;let o=Li(r),s=Gu(n),a=[],c=t.TTHEME_WARP_WEARS??Ne(K(n)),u=m5(o,c&&XE(o,c)),l,d,f=(b)=>{let $=ed(i,"utf8"),k=qr($);if(k===b)return;if(td(b)&&!td(k)&&!fc(s))L(s,k??"");if(gn(i,Uu($,b)),!td(b))QE(s,{force:!0})},h=(b)=>{for(let $ of a.splice(0))if($===b)a.push($);else QE(oo(o,$),{force:!0})},m=()=>{clearTimeout(l),clearTimeout(d)},p=(b,$,k)=>{m(),l=setTimeout(()=>{let v=$;if(!v)v=`${F(b.name)}.view-${process.pid}-${a.length+1}.yaml`,L(oo(o,v),wa(b,k)),a.push(v);let S=v,M=Date.now()-tM(oo(o,S)).mtimeMs;d=setTimeout(()=>{f(lm(b.name,S)),h(S)},Math.max(0,f5-M))},d5)};return{slots:[],paint:(b)=>{if(b.name===c)p(b,XE(o,b.name));else if(u)p(b,void 0,u);else p(b,fc(oo(o,`${F(b.name)}.yaml`))?`${F(b.name)}.yaml`:void 0);return""},wear:(b,$)=>$.includes("warp")?"":void 0,saved:async()=>new Map([["theme",qr(ed(i,"utf8"))??""]]),restore:(b)=>{m();let $=b.get("theme");if($)f($);else if(td(qr(ed(i,"utf8"))))f(Bu);return h(),""}}}function Ns(t,e,n){return ZE(t,e,n)??yk(t,e)??eM(t,e,n)}function nd(t){On(`
734
+ ${t} palettes installed — open a new tab, or reload your terminal config`)}function g5(t,e){return t.map((n)=>{if(nu(n))return n;let r=ct(n);if(r===void 0)return e===q?n:`${e}/${n}`;if(r!==e)throw Error(`${n} is not in ${e} — give its bare name, or leave --market out`);return n})}async function nM(t,e){let n=J(),r=e?g5(t,(await Cm(n,e)).id):t,i=dt(n),o=[...new Set(r.map((l)=>nu(l)?CE(n,l,i):l))],s=K(n),a=o.filter((l)=>s.palettes.includes(l)),c=o.filter((l)=>!s.palettes.includes(l));if(c.length===0){ue(n,i,s),console.log(`Already installed: ${a.join(", ")}`);return}let u={...s,palettes:[...s.palettes,...c]};Ke(n,i,s,u);for(let l of c)console.log(` + ${l}`);await Xi(n,Ct(n,i,!1).palettes.filter((l)=>c.includes(l.name)),u.terminals),nd(u.palettes.length)}function rM(t){let e=J(),n=dt(e),r=K(e),i=t.filter((a)=>r.palettes.includes(a)),o=t.filter((a)=>!r.palettes.includes(a));if(i.length===0)throw Error(`not installed: ${o.join(", ")} — \`ttheme list\` marks what is`);let s={...r,palettes:r.palettes.filter((a)=>!i.includes(a))};Ke(e,n,r,s),cs(e,n,r.terminals,i);for(let a of i)console.log(` - ${a}`);if(nd(s.palettes.length),o.length>0)return console.error(`ttheme remove: not installed: ${o.join(", ")}`),1;return 0}function iM(t){let e=J(),n=dt(e),r=K(e);if(!r.palettes.includes(t))throw Error(`${t} is not installed — \`ttheme add ${t}\` first`);let{off:i,...o}=r,s=Ke(e,n,r,{...o,startup:t},!0);console.log(aM(t,r.terminals,s).join(`
735
+ `))}function oM(){let t=J(),e=K(t),n=ji(e);if(!n)throw Error("no palettes installed — `ttheme browse` picks some");if(!e.off){console.log(`Already on · ${n}`);return}let{off:r,...i}=e,o=Ke(t,dt(t),e,i);console.log(aM(n,i.terminals,o).join(`
736
+ `))}function sM(){let t=J(),e=K(t);if(e.off){console.log("Already off");return}let n=Ke(t,dt(t),e,{...e,off:!0}),r=ji(e);console.log(`Off · new tabs open in the terminal's own colors${r?` — \`ttheme on\` wears ${r} again`:""}`);for(let i of kt(e.terminals))if(n.get(i.id)?.restart)console.log(`${i.name} new tabs open on your own profile once ${i.name} restarts`)}function aM(t,e,n){let r=kt(e).filter((o)=>!o.defaults),i=r.length>0?[`Default ${t} · ${r.map((o)=>o.name).join(", ")} open new tabs with it once their config reloads`]:[];for(let o of kt(e)){let s=o.defaults?.profile(t);if(s)i.push(n.get(o.id)?.restart?`${o.name} new tabs open with it once ${o.name} restarts — "${s}" is now its default profile`:`${o.name} new tabs open with it — "${s}" is its default profile`)}return i.length>0?i:[`Default ${t} · no terminal is wired to open with it — \`ttheme init\` wires one`]}function b5(t,e){let n=new Map(e.palettes.map((r)=>[r.name,"market"]));for(let r of eu(t,e.palettes,!1))n.set(r.name,"mine");return n}function cM(t,e=!1){let n=J(),r=dt(n),i=new Set(K(n).palettes),o=b5(n,r),s=Pt(Ct(n,r).palettes);if(t)xi(s);let a=yi(t?I$(s,t):s),c=(d)=>o.get(d)??"kept";if(e){let d=a.map((f)=>({name:f.name,group:f.group,...f.catalog?{catalog:f.catalog}:{},installed:i.has(f.name),source:c(f.name)}));console.log(JSON.stringify(d,null,2));return}let u=Math.max(...a.map((d)=>d.name.length),0),l={market:"",mine:" · yours",kept:" · in no market you added"};for(let d of a){let f=d.catalog?`${d.group} / ${d.catalog}`:d.group;console.log(` ${i.has(d.name)?"●":"○"} ${d.name.padEnd(u)} ${f}${l[c(d.name)]}`)}if(process.stdout.isTTY){let d=t?`${a.length} of ${s.length}`:`${s.length}`;console.log(`
737
+ ${d} palettes — ${a.filter((f)=>i.has(f.name)).length} installed`)}}function w5(t,e,n){let r=(o)=>{try{return Vr(t,o)}catch{return}},i=e.find((o)=>o===n||tt(o)===n||r(o)===n);if(!i)throw Error(`no market named ${n} — \`ttheme market\` lists them`);return i}async function uM(t=[]){let e=J(),n=Go(e),r=t.map((m)=>w5(e,n,m)),i=await a1(),o=!1;if(i.latest)try{return s1(i.latest,t)}catch(m){o=!0,console.log(` ttheme could not update to ${i.latest}: ${m.message}`)}else console.log(i.note);let s=(r.length>0?r:n).filter((m)=>m!==q);if(r.length===0&&s.length===0)console.log("No markets to update — `ttheme market add <owner>/<repo>` adds one");let a=(m,p)=>`${$1(m,p)} — kept the copy from the last update`;for(let m of s.filter(Ot))try{console.log(` ${F1(e,m)}`)}catch(p){console.log(` ${a(m,p)}`)}let c=s.filter((m)=>!Ot(m)),u=new Set(c),l=[],d=Yr(),f=()=>d.set(`Updating ${[...u].map(tt).join(", ")}${c.length>1?` · ${c.length-u.size}/${c.length}`:""}`);if(f(),await Promise.all(c.map(async(m)=>{let p=await Rm(e,m);if("refreshed"in p)l.push(p.refreshed);if(u.delete(m),u.size>0)f();else d.done();d.say(` ${"refreshed"in p?Pm(p.refreshed):a(m,p.failure)}`)})),d.done(),!p5(Dn(e)))return o?1:0;for(let m of Wi(e,l))console.log(` ${m}`);let h=Am(e);if(h)console.log(h);return o?1:0}async function lM(t,e){let n=dt(t,!1),r=new Map(zo(t,n).filter((a)=>e.includes(a.name)).map((a)=>[a.name,a]));if(r.size===0)return;let i=Ar(t);Ko(t,i.map((a)=>r.get(a.name)??a));let o=K(t);ue(t,n,o);let s=new Map(i.map((a)=>[a.name,a.pictures]));await Xi(t,Ct(t,n,!1).palettes.filter((a)=>r.has(a.name)).map((a)=>bS(a,s.get(a.name))),o.terminals)}async function ng(t,e,n,r=!1){let i=process.env.TTHEME_SORT==="series"?t.palettes:yi(t.palettes);xi(i);let o=process.stdout.isTTY===!0,s=Ns(process.env,o,J()),a=s?await s.saved():new Map,c=new qm({entries:i,scope:n,installed:e,required:r,color:!Nt(),fx:ul(process.env.TTHEME_FX),onFocus:s?(l)=>process.stdout.write(s.paint(l)):void 0}),u=await c.prompt();if(s)process.stdout.write(s.restore(a));if(u==="cancel")return;return t.palettes.filter((l)=>c.picked.has(l.name)).map((l)=>l.name)}function ig(t,e,n,r){let i=n===q?void 0:Pa(t,n),o;try{o=i?.id??Vr(t,n)}catch{o=gt(n)?Ir(n):tt(n)}return{source:n,id:o,...i?.info.description?{description:i.info.description}:{},shown:tt(n),entries:n===q?Jr(t,n):i?.entries??[],auto:Rr(n,e.updates),status:jm(t,n,r)}}function rg(t){return t instanceof Error?t.message:String(t)}function y5(t,e,n,r){let i=new Map(r.map((a)=>[a.source,a.id])),o=[],s=(a,c)=>o.push({where:a,message:c});for(let a of Gt(e.markets)){let c=i.get(a)??tt(a),u=n[a],l=xa(t,a);if(u&&(l===void 0||u.at>l))o.push({where:c,source:a,update:!0,message:`Update failed ${Ra(u.at)}: ${u.error}`});if(a===q)try{Sn(k5(Ge(t),"utf8"))}catch(d){o.push({where:c,source:a,message:`${tt(Ge(t))}: ${rg(d)}`})}else if(gt(a))if(!$5(_e(t,a)))o.push({where:c,source:a,message:"No copy of it yet — `ttheme update` fetches it"});else try{Yn(a,tn(t,a),Jr(t,q),s)}catch(d){o.push({where:c,source:a,message:`${tt(_e(t,a))}: ${rg(d)}`})}else try{Xe(a,ae(Be(a)),Jr(t,q),(d,f)=>s(tt(d),f))}catch(d){o.push({where:c,message:rg(d)})}}return o}function og(t){return zo(t,dt(t,!1)).map((e)=>e.name)}function v5(t,e,n,r,i){return{refresh:async(o)=>{if(Ot(o)){let a=ig(t,e,o,er());return{market:a,refreshed:{source:o,id:a.id,count:Pt(a.entries).length,change:{added:[],changed:[],gone:[]}},updates:og(t)}}let s=await Im(t,o,xm);return{market:ig(t,e,o,er()),refreshed:s,updates:og(t)}},fetch:async(o)=>{if(Ot(o)){let a=Be(o),c=ae(a);return{source:o,id:c,...a.description?{description:a.description}:{},shown:tt(o),entries:Xe(o,c,Jr(t,q),ce(!1)),auto:!1,status:"read in place"}}let s=await Ia(t,o,void 0,r);return n.set(o,s),{source:o,id:s.id,..."info"in s&&s.info.description?{description:s.info.description}:{},shown:tt(o),entries:s.entries,auto:Rr(o,{}),status:"not added yet"}},search:(o)=>Bm(o,r),apply:i}}function dM(...t){for(let e of Wi(...t))On(e)}function S5(t,e,n){let r=[];for(let i of t.adds){let o=i.source!==q&&(t.auto[i.source]??i.auto);r.push(`Added ${i.id} · ${i.shown} — ${Tt(Pt(i.entries).length)}${o?", updating on its own":""}`)}for(let i of t.removes){let o=e.find((a)=>a.source===i)?.id??i;r.push(`Removed ${o} · ${tt(i)}`);let s=n.filter((a)=>(ct(a)??q)===o);if(s.length>0)r.push(Fm(s))}for(let[i,o]of Object.entries(t.auto)){let s=e.find((a)=>a.source===i);if(s&&!t.removes.includes(i))r.push(`${s.id} ${o?"updates on its own now":"no longer updates on its own"}`)}return r}async function E5(t,e,n,r){let i=K(t),o=n.adds.length+n.removes.length+Object.keys(n.auto).length>0;for(let m of n.adds){let p=r.get(m.source);if(p)hs(t,p)}for(let m of n.removes)Lm(t,m);let s=[...Gt(i.markets).filter((m)=>!n.removes.includes(m)),...n.adds.map((m)=>m.source)],a=Ta(i,s,{...i.updates,...n.auto});if(o)We(t,a);let c=dt(t,!1),u=Ct(t,c,!1).palettes.filter((m)=>n.picked.has(m.name)).map((m)=>m.name),l=i.palettes.filter((m)=>!u.includes(m)),d=u.filter((m)=>!i.palettes.includes(m)),f=n.renew.filter((m)=>u.includes(m));if(!o&&d.length===0&&l.length===0&&f.length===0){dM(t,n.refreshed),On("Nothing changed");return}let h={...a,palettes:u};Ke(t,c,i,h),cs(t,c,i.terminals,l);for(let m of S5(n,e,u))On(m);for(let m of d)On(` + ${m}`);for(let m of l)On(` - ${m}`);for(let m of Wi(t,n.refreshed))On(m);if(await Xi(t,Ct(t,c,!1).palettes.filter((m)=>d.includes(m.name)),h.terminals),f.length>0){await lM(t,f);for(let m of f)On(` ↑ ${m}`)}if(d.length>0||l.length>0)nd(h.palettes.length)}async function fM(){let t=L$(process.env),e=J(),n=K(e),r=Ar(e),i=er(),o=ds(),s=Gt(n.markets).map((k)=>ig(e,n,k,i)),a=new Set(s.flatMap((k)=>k.entries.map((v)=>v.name))),c=r.filter((k)=>n.palettes.includes(k.name)&&!a.has(k.name));xi([...s.flatMap((k)=>k.entries),...c]);let u=new Map,l=new AbortController,d=process.stdout.isTTY===!0,f=Ns(process.env,d,e),h=f&&!t?await f.saved():new Map,m=Ne(n);if(t)process.stdout.write("\x1B[?2026h");let p=new Vm({markets:s,kept:c,installed:n.palettes,updates:og(e),...m?{startup:m}:{},...t?{hub:t}:{},problems:y5(e,n,i,s),due:o?Om(e,n):[],io:v5(e,n,u,l.signal,(k,v)=>Yy({say:v.say,set:v.status},()=>E5(e,s,k,u))),...process.env.TTHEME_SORT==="series"?{}:{order:yi},color:!Nt(),lookups:process.env.TTHEME_MARKET_LOOKUP!=="off",fx:ul(process.env.TTHEME_FX),owns:d&&!t,...f?{onFocus:(k)=>process.stdout.write(f.paint(k))}:{}});try{await p.run()}finally{if(f?.stop?.(),f&&!t)process.stdout.write(f.restore(h));l.abort()}await p.idle();let b=p.result(),$=p.next();if(t&&$!==void 0)return dM(e,b.refreshed),$;if(d&&t)process.stdout.write("\x1B[?1049l\x1B[?25h");for(let k of b.refreshed){let v=Nm(k);if(v)console.log(v)}if(p.applied()){for(let v of p.lines())console.log(v);let k=p.failure();if(k)throw k}else{for(let k of Wi(e,b.refreshed))console.log(k);console.log("Nothing changed")}return t?cu:0}import{rmSync as hM}from"node:fs";import{basename as M5,join as hc}from"node:path";var mM=hc(import.meta.dirname,".."),x5=hc(mM,"themes"),sg=hc(mM,"dist"),rd=Zt.map((t)=>xn[t].emitter),O5=[Ch,Gh],sY=rd.map((t)=>t.id);async function id({only:t}={}){if(typeof Bun>"u")throw Error("needs bun — run it from a checkout: bun src/bin.ts build");let e=t&&t.length>0?rd.filter((o)=>t.includes(o.id)):rd,n=o0(x5),r=Xg(n);if(r.length>0){for(let o of r)console.error(` ✗ ${o.theme} [${o.rule}] ${o.detail}`);throw Error(`${r.length} contrast violation(s). Fix the palette, or waive the rule in its [contrast] section with a reason.`)}if(e.length===rd.length)hM(sg,{recursive:!0,force:!0});else for(let o of e)hM(hc(sg,o.id),{recursive:!0,force:!0});let i=0;for(let o of[...e,...O5]){let s=n.flatMap((u)=>o.emit?.(u)??[]),a=o.emitShared?.(n)??[];for(let u of[...s,...a])await Bun.write(hc(sg,u.path),u.content),i++;let c=s.length>0?`${n.length} themes${o.limits?` (${o.limits})`:""}`:a.length>0?a.map((u)=>M5(u.path)).join(" "):`no files (${o.limits??"nothing to write"})`;console.log(` ${o.id.padEnd(16)} ${c}`)}console.log(`
738
+ ${n.length} themes (${s0(n).length} in the new-tab rotation) -> ${i} files in dist/`)}import{existsSync as P5,readFileSync as $M}from"node:fs";import{availableParallelism as I5,homedir as pM}from"node:os";var R5=4;async function od(t,e,n=pM()){let r=Rt(Z(t)),i=Ur(t),o=new Map(he(t).palettes.map((d)=>[d.name,Ao(d)])),s=Object.entries(r.palettes).flatMap(([d,f])=>{let h=o.get(d);return h?f.pictures.filter((m)=>To(m)||(m.blur??0)!==i).map((m)=>({name:d,key:m.key,paint:h})):[]});if(s.length===0)return 0;e(`Drawing ${s.length} background picture${s.length===1?"":"s"} again${i?` · blur ${i}px`:""}`);let a=_i(K(t).terminals),c=new Hp(Math.min(R5,I5()-1)),u=await c.map(s.map(({name:d,key:f,paint:h})=>({job:"redraw",home:t,user:n,name:d,key:f,paint:h,blur:i,aligns:a})));c.close();let l=[];return u.forEach((d,f)=>{let{name:h,key:m}=s[f];if(d instanceof Error||d===null){e(` ▢ ${h} ${m} — ${d instanceof Error?d.message:"no original to draw it from"}, left as it was`);return}l.push({name:h,picture:d})}),Rf(t,l),Ae(t,n),l.length}async function gM(t,e,n,r,i=pM()){let o=Rt(Z(t)).palettes[e],s=o?.pictures.find((l)=>l.key===(r??o.active));if(!o||!s)throw Error(`${e} has no picture ${r??"shown"}`);if(je(s)===n)return{key:s.key,changed:!1};let a=he(t).palettes.find((l)=>l.name===e);if(!a)throw Error(`no palette called ${e}`);let c=_i(K(t).terminals),u=await Nl(t,e,s.key,Ao(a),Ur(t),c,i,n);if(!u)throw Error(`${e} ${s.key} has no original to draw it from`);return Rf(t,[{name:e,picture:u}]),Ae(t,i),{key:s.key,changed:!0}}function bM(t,e,n){let r=Rt(Z(t)).palettes[e],i=r?.pictures.find((a)=>a.key===(n??r.active));if(!r||!i)throw Error(`${e} has no picture ${n??"shown"}`);let o=he(t).palettes.find((a)=>a.name===e);if(!o)throw Error(`no palette called ${e}`);let s=je(i)==="original"?"tone":"original";if(!kS(t,e,i.key,Ao(o),Ur(t),s))throw Error(`${e} ${i.key} has no original to draw it from`);return{key:i.key,coloring:s}}async function wM(){return await od(J(),(t)=>process.stderr.write(`${t}
739
+ `)),0}async function kM(t,e,n){let r=J();if(Tr(he(r).palettes,t),e==="show"){if(!n)throw Error("image show needs the picture to show");let{at:i,of:o}=Ho(r,t,n);return Ae(r),process.stderr.write(`Background · ${t} ${i}/${o} ${n}
740
+ `),0}if(e==="drop"){let{key:i,left:o}=Wc(r,t,n);return Ae(r),process.stderr.write(`Background · ${t} removed ${i} · ${o} left
741
+ `),0}if(e==="tone"||e==="original"){let i=await gM(r,t,e,n);return process.stderr.write(`Background · ${t} ${i.key} ${e==="tone"?"tinted":"in its own colors"}
742
+ `),0}if(e==="prepare"){let{key:i,coloring:o}=bM(r,t,n);return process.stderr.write(`Background · ${t} ${i} ready in ${o==="tone"?"its tone":"its own colors"}
743
+ `),0}if(e==="tuned")return Ae(r),0;throw Error(`unknown image action ${e} — show, drop, tone, original, prepare or tuned`)}function yM(t,e){let n=/^(\d+)x(\d+)$/.exec(t),r=/^(\d+)x(\d+)([+-]\d+)([+-]\d+)$/.exec(e);if(!n||!r)throw Error("a canvas is <width>x<height> and a place <width>x<height>+<x>+<y>");let[i,o]=n.slice(1).map(Number),[s,a,c,u]=r.slice(1).map(Number);return{width:i,height:o,at:{x:c,y:u,w:s,h:a}}}function N5(t,e,n){let r=yM(e,n),i=Math.min(1,t.width/r.at.w);if(i===1)return r;return{width:Math.max(1,Math.round(r.width*i)),height:Math.max(1,Math.round(r.height*i)),at:{x:Math.round(r.at.x*i),y:Math.round(r.at.y*i),w:t.width,h:t.height}}}function vM(t,e,n,r){let i=_t(new Uint8Array($M(t)));return L(e,Fe(ow(i,yM(n,r)))),0}function SM(t,e,n,r,i,o,s){let a=Number(r);if(!le(n)||!Number.isFinite(a))throw Error("flatten needs a #rrggbb background and an opacity from 0 to 1");let c=_t(new Uint8Array($M(t))),u=i?N5(c,i,o??""):void 0,l=$r(wr(c,n,Math.max(0,Math.min(1,a)),u));if(s&&P5(s))di(s,e,l);else L(e,l);return 0}import{execFileSync as A5}from"node:child_process";import{readFileSync as T5}from"node:fs";import{arch as H5,platform as sd,release as ag}from"node:os";var C5={ghostty:"ghostty",iterm2:"iTerm.app",wezterm:"WezTerm","terminal-app":"Apple_Terminal",warp:"WarpTerminal"};function L5(t,e){if(t==="konsole"){let r=/^(\d{2})(\d{2})(\d{2})$/.exec(e.KONSOLE_VERSION??"");return r?`${r[1]}.${r[2]}.${Number(r[3])}`:e.KONSOLE_VERSION}let n=C5[t];return n!==void 0&&e.TERM_PROGRAM===n?e.TERM_PROGRAM_VERSION:void 0}function F5(t){let e=qt(t),n=t.TERM_PROGRAM&&t.TERM_PROGRAM!=="tmux"?t.TERM_PROGRAM:void 0,r=e==="unknown"?`unknown${n?` (TERM_PROGRAM=${n})`:""}`:e==="editor"?`editor (${Oh(t)})`:`${e} ${L5(e,t)??"(version unknown)"}`,i=t.TERM_PROGRAM==="tmux"?t.TERM_PROGRAM_VERSION:void 0;return[r,t.TMUX?`tmux ${i??"yes"}`:"tmux no",t.SSH_CONNECTION||t.SSH_TTY?"ssh yes":"ssh no"].join(" · ")}function EM(t,e){try{return A5(t,e,{encoding:"utf8",timeout:2000,stdio:["ignore","pipe","ignore"]}).trim()}catch{return}}function j5(){let t=H5();if(sd()==="darwin")return`macOS ${EM("sw_vers",["-productVersion"])??`(Darwin ${ag()})`} · ${t}`;if(sd()==="linux"){let e="";try{e=T5("/etc/os-release","utf8")}catch{}return`${/^PRETTY_NAME="?([^"\n]*)"?$/m.exec(e)?.[1]??"Linux"} · linux ${ag()} · ${t}`}return`${sd()==="win32"?"Windows":sd()} ${ag()} · ${t}`}function _5(t){if(t.TTHEME_ZSH)return`zsh ${t.TTHEME_ZSH}`;return(t.SHELL?EM(t.SHELL,["--version"])?.split(`
744
+ `)[0]:void 0)??t.SHELL??"unknown"}function B5(t){try{let{terminals:e}=K(t);return e.length>0?e.join(", "):"none"}catch{return"installed.json missing or unreadable"}}function G5(t){let e=Mu.flatMap((n)=>{let r=t[n];return r===void 0||r===pa(n)?[]:[`${n}=${/\s/.test(r)?JSON.stringify(r):r}`]});return e.length>0?e.join(" "):void 0}function MM(){let t=process.env,n=[["ttheme",lt.version],["OS",j5()],["Shell",_5(t)],["Terminal",F5(t)],["Wired",B5(J())],["Settings",G5(t)]].filter((i)=>i[1]!==void 0),r=Math.max(...n.map(([i])=>i.length));for(let[i,o]of n)console.log(`${i.padEnd(r)} ${o}`)}import{execFileSync as U5,spawnSync as W5}from"node:child_process";import{chmodSync as K5,copyFileSync as z5,existsSync as so,mkdirSync as xM,readdirSync as D5,readFileSync as cd,rmSync as cg}from"node:fs";import{homedir as q5}from"node:os";import{dirname as As,join as mt}from"node:path";function Y5(t,e,n){for(let r of D5(e))t.push({from:mt(e,r),to:mt(n,r)})}function fg(t){return Sn(cd(mt(t,"dist","manifest.json"),"utf8"))}function ad(t,e){let n=mt(e.configHome,"ttheme"),r=[{from:mt(e.root,"bin","ttheme.js"),to:mt(n,"ttheme.js")},{from:mt(e.root,"bin","ttheme.js.map"),to:mt(n,"ttheme.js.map")},{from:mt(e.root,"bin","package.json"),to:mt(n,"package.json")},{from:mt(e.root,"shell","ttheme.zsh"),to:mt(n,"ttheme.zsh")},{from:mt(e.root,"shell","preview.zsh"),to:mt(n,"preview.zsh")},{from:mt(e.root,"shell","launch-tab.zsh"),to:mt(n,"launch-tab.zsh"),executable:!0}];Y5(r,mt(e.root,"shell","adapters"),mt(n,"adapters"));let i=[{file:mt(e.zdotdir,".zshrc"),block:Pk(n)}],o=mt(n,"config.zsh"),s=Ak(so(o)?cd(o,"utf8"):""),a={file:o,content:t.warpFast===void 0?s:Iu(s,"TTHEME_WARP_FAST",t.warpFast?"on":"off")},c={terminals:t.terminals,palettes:t.palettes,...Object.fromEntries(kt(t.terminals).flatMap((d)=>Object.entries(d.installs?.(e)??{}).filter(([,f])=>f!==void 0))),...t.off?{off:!0}:{}},u=Ju(e.configHome,c,e.home),l=e.stateDir?[mt(e.stateDir,"ghostty",".blind")]:[];return{home:e.home,copies:r,edits:i,settings:a,forget:l,catalog:fg(e.root),installed:c,notes:u}}function IM(t){try{return K(t)}catch{return}}function RM(t,e){try{return Ct(t,dt(t,!1,e),!1).palettes}catch{return[]}}function J5(t,e){let n=fg(e.root),r=Gt(t.markets).includes(q)?n.palettes:[],i=new Set(r.map((s)=>s.name)),o=RM(e.configHome,n).filter((s)=>!i.has(s.name)&&(ct(s.name)!==void 0||t.palettes.includes(s.name)));return{...n,palettes:[...r,...o]}}function PM(t,e){let n=ji(t);return n&&e.includes(n)?n:void 0}function V5(t,e,n){let r=ad(e,n),i=PM(t,e.palettes),o=new Set(["terminals","palettes","off","startup",...Zt.flatMap((a)=>Object.keys(xn[a].installs?.(n)??{}))]),s=Object.fromEntries(Object.entries(t).filter(([a])=>!o.has(a)));return{...r,installed:{...s,...r.installed,...i?{startup:i}:{}}}}function Z5(t,e){let n=ad({terminals:t.terminals,palettes:t.palettes,off:t.off},e),r=new Set([...n.catalog.palettes,...RM(e.configHome,n.catalog)].map((l)=>l.name)),i=t.palettes.filter((l)=>r.has(l)),o=t.palettes.filter((l)=>!r.has(l)),{startup:s,...a}=t,c={...a,palettes:i,...s&&i.includes(s)?{startup:s}:{}},u=o.length>0?[`Dropped ${o.join(", ")} — no longer in the catalog`,...n.notes]:n.notes;return{...n,installed:c,notes:u}}function Q5(t){try{return U5(process.execPath,[mt(t,"ttheme","ttheme.js"),"--version"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function NM(t){let e=Ne(t);return[kt(t.terminals).map((n)=>n.name).join(", "),`${t.palettes.length} palettes`,e?`default ${e}`:"no default — ttheme is off"].join(" · ")}function ug(t,e=rn()){for(let s of t.copies)if(xM(As(s.to),{recursive:!0}),cg(s.to,{force:!0}),cg(`${s.to}.zwc`,{force:!0}),z5(s.from,s.to),s.executable)K5(s.to,493);L(t.settings.file,t.settings.content);for(let s of t.forget)cg(s,{force:!0});let n=As(As(t.settings.file)),r=IM(n),i=Object.fromEntries(kt(t.installed.terminals).flatMap((s)=>{let a=s.defaults?.key,c=a?r?.[a]:void 0;return a&&c?[[a,c]]:[]})),o=Sa(n,{...t.installed,...i},e,t.home);if(Gt(o.markets).includes(q))v$(n,t.catalog);We(n,o),ue(n,dt(n),o,t.home,e);for(let s of t.edits){xM(As(s.file),{recursive:!0});let a=so(s.file)?cd(s.file,"utf8"):"";gn(s.file,_r(a,s.block))}return Bi(n,o,!0,e,t.home)}function mc(t){if(me(t))throw Fr("Nothing changed"),new Te;return t}function lg(t,e){return Zt.filter((n)=>xn[n].offered(t,e))}async function X5(t,e,n,r){return mc(await uk({message:"Wire which terminals?",options:lg(n,r).map((i)=>({value:i,label:xn[i].name,hint:i===t?"detected":void 0})),initialValues:e,required:!0}))}async function t4(t){return mc(await en({message:"Switch Warp to each tab's palette in about 0.2 s instead of 0.6 s?\nAbout 8% CPU while Warp is in front with tabs of different palettes — `ttheme config` changes it",initialValue:xu(t,"TTHEME_WARP_FAST")!=="off"}))}function dg(t){let e=[...t.copies.filter((n)=>!so(n.to)).map((n)=>n.to),...so(t.settings.file)?[]:[t.settings.file],...t.edits.filter((n)=>!cd(n.file,"utf8").includes("# ttheme begin")).map((n)=>n.file)];if(e.length>0)throw Error(`init left gaps:
742
745
  ${e.join(`
743
- `)}`)}function rM(t,e){return[...new Set(t.palettes.filter((n)=>e.includes(n.name)).map((n)=>n.group))]}function f5(t,e,n){let r=t.palettes.find((s)=>s.name===Ae(e)),i=process.stdout.isTTY===!0,o=r&&Es(process.env,i,n)?.wear(r,e.terminals);if(o===void 0)return!1;return process.stdout.write(o),!0}function h5(t,e){let n=Ae(t);if(!n)return["Default none — new tabs keep the terminal colors",`Turn on \`ttheme on\` wears ${Fi(t)}`];return[`Default ${n}${e?" — this tab wears it already":""}`,"Change it `ttheme preview`, enter on a palette, then default"]}function m5(t){t5("zsh",["-c",'source "$1" && __tt_preview init',"zsh",gt(t,"ttheme","ttheme.zsh")],{stdio:"inherit"})}function p5(t,e,n,r){let i=rM(t.catalog,e.palettes);Mn([`${i.join(", ")} (${e.palettes.length})`,...h5(t.installed,n)].join(`
744
- `),`Installed ${e.palettes.length} palettes`),Mn(["exec zsh The ttheme command in this tab",...og(t,r)].join(`
745
- `),"Next"),sa("Done")}function og(t,e){return[...Du(Ms(Ms(t.settings.file)),t.installed,e,t.home),...t.notes]}function iM(t){return t?(e)=>Lr.step(e):(e)=>console.log(e)}async function QE(t,e,n,r){let i=c5(t,e),o=eg(i,n);rg(i),await Xl(e.configHome,iM(r),e.home);let s=["exec zsh Open tabs run the new layer — new tabs already do",...og(i,o)],a=`Updated to ${At.version} — kept ${nM(i.installed)}`;if(!r){console.log([a,...s].join(`
746
- `));return}Mn(s.join(`
747
- `),a),sa("Done")}function g5(t,e){let n=[`Placed ${t.copies.length} files`,`Settings in ${t.settings.file} — edit later with \`ttheme config\``,...t.edits.map((r)=>`Wired ${r.file}`),...og(t,e),"No palettes yet — open a new shell (`exec zsh`), then `ttheme browse` picks them from the catalog"];console.log(n.join(`
748
- `))}async function oM(t={}){let e=gt(import.meta.dirname,"..");if(!io(gt(e,"bin","ttheme.js")))throw Error("bin/ttheme.js is missing — run `mise run bin:build` first");if(!io(gt(e,"dist"))){if(typeof Bun>"u")throw Error("this package is missing dist/ — reinstall @kecan0406/ttheme");await Ql()}let n=i5(),r=Q(),i=process.env.ZDOTDIR??n,o=on(),s=wy(o),a=process.env.WT_PROFILE_ID,c={root:e,home:n,configHome:r,zdotdir:i,stateDir:gt(process.env.XDG_STATE_HOME??gt(n,".local","state"),"ttheme"),...s?{wtHome:s}:{},...a?{wtProfile:a}:{}},u=Dt(process.env),l=ng(c,o).filter((O)=>O===u||On[O].present(c));if(!t.yes&&(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0))throw Error("init asks before it edits your configs — run it in a terminal, or pass --yes to accept the defaults");let d=XE(r);if(t.yes&&d){await QE(d,c,o,!1);return}if(t.yes){if(l.length===0)throw Error(`no supported terminal detected — run this inside ${$t(ng(c,o)).map((L)=>L.name.toLowerCase()).join(", ").replace(/, ([^,]*)$/," or $1")}`);let H=ed({terminals:l,palettes:[]},c),N=eg(H,o);rg(H),g5(H,N);return}if(pu("ttheme init"),d){let O=u5(r);if(cc(await nn({message:`ttheme${O?` ${O}`:""} is installed — ${nM(d)}
749
- ${O===At.version?"Reinstall":"Update to"} ${At.version} and keep all of it?`,active:"Yes",inactive:"No, set it up again",initialValue:!0}))){await QE(d,c,o,!0);return}}let f=await l5(u,d?.terminals??l,c,o),h=f.includes("warp")?await d5(r):void 0,m=d?s5(d,c):ig(e),g=d?await Yp(m,d.palettes,"palette",!0):await Yp(m,[],"series",!0);if(!g)throw Fr("Nothing changed"),new He;let b=(d&&eM(d,g))??g[0],w=g.length>1&&(pe[u].paints||u==="warp"&&f.includes("warp")&&io(Dr(n,r))),k=cc(await nn({message:w?"Pick a default palette in ttheme preview once installed?":`Wear ${b} in every tab?`,initialValue:d?!d.off:!0})),v={terminals:f,palettes:g,off:!k,warpFast:h},S=d?a5(d,v,c):ed(v,c);if(Mn([`Install ${g.length} palettes — ${rM(m,g).join(", ")}`,`Copy ${S.copies.length} files under ${r}`,`Write ${S.settings.file}`,...S.edits.map((O)=>`Edit ${O.file} — a ttheme block: source ttheme.zsh`),...Ku(r,S.installed,n),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out",k?w?`Open ttheme preview — every tab wears the palette picked there, ${b} until then`:`Paint every tab with ${b}, this one now`:"Leave the terminal colors as they are — `ttheme on` wears a palette later",...k&&b?$t(f).flatMap((O)=>O.defaults?[`Make "${O.defaults.profile(b)}" the ${O.name} default profile`]:[]):[]].join(`
750
- `),`Wiring ${$t(f).map((O)=>O.name).join(", ")}`),!cc(await nn({message:"Apply these changes?"})))throw Fr("Nothing changed"),new He;let M=eg(S,o);if(rg(S),await Xl(r,iM(!0),n),k&&w)m5(r);let I=W(r);p5({...S,catalog:m,installed:I},v,f5(m,I,r),M)}import{spawn as b5}from"node:child_process";import{createHash as w5}from"node:crypto";import{existsSync as sg,mkdirSync as $5,readFileSync as k5,statSync as y5,utimesSync as v5,writeFileSync as S5}from"node:fs";import{homedir as uM}from"node:os";import{join as lM}from"node:path";import{gunzipSync as E5}from"node:zlib";var sM="https://github.com/kecan0406/aninames/releases/latest/download",dM=86400000,M5=3600000,x5=120000;function fM(t){return lM(Rr(t),".checked")}function O5(t=process.env){return t.TTHEME_NAMES!=="off"}function I5(t){try{return Date.now()-y5(fM(t)).mtimeMs>=dM}catch{return!0}}function ag(t,e){let n=fM(t);if($5(Rr(t),{recursive:!0}),!sg(n))S5(n,"");v5(n,e/1000,e/1000)}function hM(t=uM()){if(!O5()||!I5(t))return;try{ag(t,Date.now()),b5(process.execPath,[process.argv[1],"names"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}function aM(t){return w5("sha256").update(t).digest("hex")}async function cM(t){let e=await fetch(t,{signal:AbortSignal.timeout(x5)});if(!e.ok)throw Error(`${t} answered ${e.status}`);return new Uint8Array(await e.arrayBuffer())}async function mM(t=uM()){let e=Rr(t);try{let r=JSON.parse(new TextDecoder().decode(await cM(`${sM}/ttheme.json`)));for(let[i,{file:o,sha256:s}]of Object.entries(r.layers)){let a=lM(e,`ttheme-${i}.json`);if(sg(a)&&aM(k5(a))===s)continue;let c=E5(await cM(`${sM}/${o}`));if(aM(c)!==s)throw Error(`${o} does not match its hash`);F(a,c)}ag(t,Date.now())}catch{return ag(t,Date.now()-dM+M5),1}zc(t);let n=Q();if(sg(Re(n)))Mi(he(n).palettes,t),Ey(n,t);return 0}import{existsSync as pM,rmSync as R5,utimesSync as P5}from"node:fs";import{homedir as N5}from"node:os";import{join as uc}from"node:path";function A5(t){try{return W(t)}catch{return}}function T5(t){let{home:e,configHome:n}=t,r=A5(n),i={configHome:n,home:e},o=$t(Zt),s=o.map((c)=>c.unwire(i,r)),a=[uc(n,"ttheme"),t.cacheDir,t.stateDir];return{edits:[...xn(uc(t.zdotdir,".zshrc"),Br),...s.flatMap((c)=>c.edits)],removals:[...o.flatMap((c)=>c.shelf?Yo(c.shelf.dir(i)):[]),...s.flatMap((c)=>c.removals),...a.filter((c)=>pM(c))],touches:s.flatMap((c)=>c.touches),...r?{state:r}:{}}}function H5(t,e,n=on()){let r=[];for(let{file:o,content:s}of t.edits){let a=Zg(o,s);r.push(a==="removed"?`Removed ${o} — ttheme had created it`:a==="restored"?`Took ttheme out of ${o}`:`Took ttheme out of ${o} — kept ${o}.ttheme.bak, since the file changed after ttheme's first edit`)}if(t.state){let o=_i(e.configHome,{...t.state,off:!0,palettes:[]},!1,n,e.home);for(let s of $t(t.state.terminals))if(o.has(s.id))r.push(`Gave ${s.name} its own default profile back — it takes it at its next start`)}for(let o of t.removals)R5(o,{recursive:!0,force:!0});if(t.removals.length>0)r.push(`Deleted ${t.removals.length} files and folders ttheme wrote`);let i=new Date;for(let o of t.touches)P5(o,i,i);return r}function C5(){let t=N5();return{home:t,configHome:Q(),zdotdir:process.env.ZDOTDIR??t,cacheDir:xr(),stateDir:uc(process.env.XDG_STATE_HOME??uc(t,".local","state"),"ttheme")}}async function gM(t=!1){let e=C5(),n=T5(e);if(n.edits.length===0&&n.removals.length===0){console.log("Nothing of ttheme is installed");return}if(!t){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("uninstall asks before it deletes anything — run it in a terminal, or pass --yes");let r=uc(e.configHome,"ttheme");pu("ttheme uninstall"),Mn([...n.edits.map((o)=>`Take ttheme out of ${o.file}`),...n.removals.map((o)=>o===r?`Delete ${o} — settings, pins, every installed picture${pM(Dc(e.configHome))?`, and your markets under ${Dc(e.configHome)} (push them to GitHub first to keep them)`:""}`:`Delete ${o}`)].join(`
751
- `),"Uninstall");let i=await nn({message:"Remove ttheme?"});if(me(i)||!i)throw Fr("Nothing changed"),new He}for(let r of H5(n,e))console.log(r);console.log("Open tabs keep their colors until they close — restart your terminal to drop ttheme everywhere")}import{homedir as L5}from"node:os";async function bM(t){if(!Zt.includes(t))throw Error(`no terminal ${t} — one of ${Zt.join(", ")}`);let e=t,n=On[e],r=Q(),i=L5(),o=on(),s=W(r);if(s.terminals.includes(e))return console.log(`${n.name} is wired already`),0;let a={configHome:r,home:i};if(!n.offered(a,o))throw Error(`${n.name} cannot be wired on this system`);if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("wire asks before it edits your configs — run it in a terminal");let c={...s,...n.installs?.(a)??{},terminals:[e]};Mn([...Ku(r,c,i),...zu(r,c,i),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out"].join(`
752
- `),`Wiring ${n.name}`);let u=await nn({message:`Wire ${n.name} now?`,initialValue:!1});if(me(u)||!u)throw Fr("Nothing changed"),new He;let l=$a(r,c,o,i),d={...l,terminals:[...s.terminals,e]};We(r,d),qt(r,dt(r),d,i,o);let f=_i(r,l,!0,o,i),h=Du(r,l,f,i);if(h.length>0)Mn(h.join(`
753
- `),"Next");return sa(`Wired ${n.name}`),0}var j5=new Set(["add","remove","market","default","on","off"]),_5={default:([t])=>PE(t),on:()=>NE(),off:()=>AE(),browse:()=>FE(),list:([t],{json:e})=>CE(t,e),add:(t,{market:e})=>IE(t,e),remove:(t)=>RE(t),update:()=>LE(),market:([t,e])=>p1(t,e),new:([t],{from:e,in:n})=>fE(t,e,n),edit:([t])=>hE(t),check:([t],{fix:e})=>gE(t,e),share:([t],{tone:e})=>$E(t,e),init:(t,{yes:e})=>oM({yes:e}),uninstall:(t,{yes:e})=>gM(e),wire:([t])=>bM(t),info:()=>VE(),build:(t,{only:e})=>Ql({only:e}),find:([t])=>rE(t),image:([t,e,n])=>zE(t,e,n),redraw:()=>WE(),names:()=>mM(),tone:([t,e])=>mE(t,e),flatten:([t,e,n,r,i,o,s])=>YE(t,e,n,r,i,o,s),bake:([t,e,n,r])=>qE(t,e,n,r)},B5=ua.map((t)=>({...t,run:_5[t.name]}));class oo extends Error{verb;constructor(t,e){super(t);this.verb=e}}function wM(t){let e=B5.find((n)=>n.name===t);if(!e)throw new oo(t.startsWith("-")?`unknown option '${t}'`:`unknown command '${t}'`);return e}function G5(t,e){let n={help:{type:"boolean",short:"h"}};for(let[r,{type:i,short:o,multiple:s}]of Object.entries(t.flags??{}))n[r]={type:i,multiple:s===!0,...o?{short:o}:{}};try{return F5({args:e,options:n,allowPositionals:!0})}catch(r){let[i=""]=(r instanceof Error?r.message:String(r)).split(". ");throw new oo(`${i.charAt(0).toLowerCase()}${i.slice(1)}`,t)}}function U5(t){let[e,...n]=t;if(e===void 0)return{kind:"help",code:1};if(e==="-h"||e==="--help")return{kind:"help",code:0};if(e==="-V"||e==="--version")return{kind:"version"};if(e==="help"){if(n[0]===void 0||n[0]==="all")return{kind:"help",all:n[0]==="all",code:0};return{kind:"help",verb:wM(n[0]),code:0}}let r=wM(e),i=G5(r,n);if(i.values.help)return{kind:"help",verb:r,code:0};for(let[l,{choices:d}]of Object.entries(r.flags??{}))for(let f of[i.values[l]??[]].flat())if(d&&!d.includes(String(f)))throw new oo(`--${l} takes ${d.join(", ")} — not ${f}`,r);let o=i.positionals,s=r.args.filter((l)=>l.startsWith("<")).length,a=r.args.some((l)=>l.includes("..."))?Number.POSITIVE_INFINITY:r.args.length;if(o.length<s)throw new oo(`missing ${r.args[o.length]}`,r);if(o.length>a)throw new oo(`too many arguments: ${o.slice(a).join(" ")}`,r);let{help:c,...u}=i.values;return{kind:"run",verb:r,args:o,flags:u}}function $M(t){let e=Math.max(0,...t.map(([n])=>n.length));return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}function cg(t,e=!1){if(!t)return la(e);let n=Object.entries(t.flags??{}).map(([r,{short:i,value:o,about:s}])=>[`${i?`-${i}, `:""}--${r}${o?` ${o}`:""}`,s]);return[`Usage: ttheme ${ca(t)}`,"",t.about,...t.actions?["","Actions:",...$M(t.actions)]:[],...n.length>0?["","Options:",...$M(n)]:[]].join(`
754
- `)}var W5=[TypeError,RangeError,ReferenceError,SyntaxError];function K5(t){return W5.some((e)=>t instanceof e)||t instanceof Error&&"code"in t}async function kM(t){let e;try{let n=U5(t);if(n.kind==="version")return console.log(At.version),0;if(n.kind==="help"){if(n.code===0)console.log(cg(n.verb,n.all));else console.error(cg(n.verb,n.all));return n.code}if(e=n.verb,!n.verb.run)throw Error("runs in the shell layer — open a new tab once `ttheme init` has wired it");if(j5.has(n.verb.name))await Xy();let r=await n.verb.run(n.args,n.flags);if(!n.verb.hidden&&n.verb.name!=="uninstall")hM();return typeof r==="number"?r:0}catch(n){if(n instanceof oo)return console.error(n.verb?`ttheme ${n.verb.name}: ${n.message}
746
+ `)}`)}function AM(t,e){return[...new Set(t.palettes.filter((n)=>e.includes(n.name)).map((n)=>n.group))]}function e4(t,e,n){let r=t.palettes.find((s)=>s.name===Ne(e)),i=process.stdout.isTTY===!0,o=r&&Ns(process.env,i,n)?.wear(r,e.terminals);if(o===void 0)return!1;return process.stdout.write(o),!0}function n4(t,e){let n=Ne(t);if(!n)return["Default none — new tabs keep the terminal colors",`Turn on \`ttheme on\` wears ${ji(t)}`];return[`Default ${n}${e?" — this tab wears it already":""}`,"Change it `ttheme preview`, enter on a palette, then default"]}function r4(t){W5("zsh",["-c",'source "$1" && __tt_preview init',"zsh",mt(t,"ttheme","ttheme.zsh")],{stdio:"inherit"})}function i4(t,e,n,r){let i=AM(t.catalog,e.palettes);En([`${i.join(", ")} (${e.palettes.length})`,...n4(t.installed,n)].join(`
747
+ `),`Installed ${e.palettes.length} palettes`),En(["exec zsh The ttheme command in this tab",...hg(t,r)].join(`
748
+ `),"Next"),fa("Done")}function hg(t,e){return[...Vu(As(As(t.settings.file)),t.installed,e,t.home),...t.notes]}function TM(t){return t?(e)=>Lr.step(e):(e)=>console.log(e)}async function OM(t,e,n,r){let i=Z5(t,e),o=ug(i,n);dg(i),await od(e.configHome,TM(r),e.home);let s=["exec zsh Open tabs run the new layer — new tabs already do",...hg(i,o)],a=`Updated to ${lt.version} — kept ${NM(i.installed)}`;if(!r){console.log([a,...s].join(`
749
+ `));return}En(s.join(`
750
+ `),a),fa("Done")}function o4(t,e){let n=[`Placed ${t.copies.length} files`,`Settings in ${t.settings.file} — edit later with \`ttheme config\``,...t.edits.map((r)=>`Wired ${r.file}`),...hg(t,e),"No palettes yet — open a new shell (`exec zsh`), then `ttheme browse` picks them from the catalog"];console.log(n.join(`
751
+ `))}async function HM(t={}){let e=mt(import.meta.dirname,"..");for(let x of["ttheme.js","package.json"])if(!so(mt(e,"bin",x)))throw Error(`bin/${x} is missing — run \`mise run bin:build\` first`);if(!so(mt(e,"dist"))){if(typeof Bun>"u")throw Error("this package is missing dist/ — reinstall @kecan0406/ttheme");await id()}let n=q5(),r=J(),i=process.env.ZDOTDIR??n,o=rn(),s=Cy(o),a=process.env.WT_PROFILE_ID,c={root:e,home:n,configHome:r,zdotdir:i,stateDir:mt(process.env.XDG_STATE_HOME??mt(n,".local","state"),"ttheme"),...s?{wtHome:s}:{},...a?{wtProfile:a}:{}},u=qt(process.env),l=lg(c,o).filter((x)=>x===u||xn[x].present(c));if(!t.yes&&(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0))throw Error("init asks before it edits your configs — run it in a terminal, or pass --yes to accept the defaults");let d=IM(r);if(t.yes&&d){await OM(d,c,o,!1);return}if(t.yes){if(l.length===0)throw Error(`no supported terminal detected — run this inside ${kt(lg(c,o)).map((j)=>j.name.toLowerCase()).join(", ").replace(/, ([^,]*)$/," or $1")}`);let H=ad({terminals:l,palettes:[]},c),N=ug(H,o);dg(H),o4(H,N);return}if($u("ttheme init"),d){let x=Q5(r);if(mc(await en({message:`ttheme${x?` ${x}`:""} is installed — ${NM(d)}
752
+ ${x===lt.version?"Reinstall":"Update to"} ${lt.version} and keep all of it?`,active:"Yes",inactive:"No, set it up again",initialValue:!0}))){await OM(d,c,o,!0);return}}let f=await X5(u,d?.terminals??l,c,o),h=f.includes("warp")?await t4(r):void 0,m=d?J5(d,c):fg(e),p=d?await ng(m,d.palettes,"palette",!0):await ng(m,[],"series",!0);if(!p)throw Fr("Nothing changed"),new Te;let b=(d&&PM(d,p))??p[0],$=p.length>1&&(pe[u].paints||u==="warp"&&f.includes("warp")&&so(Dr(n,r))),k=mc(await en({message:$?"Pick a default palette in ttheme preview once installed?":`Wear ${b} in every tab?`,initialValue:d?!d.off:!0})),v={terminals:f,palettes:p,off:!k,warpFast:h},S=d?V5(d,v,c):ad(v,c);if(En([`Install ${p.length} palettes — ${AM(m,p).join(", ")}`,`Copy ${S.copies.length} files under ${r}`,`Write ${S.settings.file}`,...S.edits.map((x)=>`Edit ${x.file} — a ttheme block: source ttheme.zsh`),...Yu(r,S.installed,n),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out",k?$?`Open ttheme preview — every tab wears the palette picked there, ${b} until then`:`Paint every tab with ${b}, this one now`:"Leave the terminal colors as they are — `ttheme on` wears a palette later",...k&&b?kt(f).flatMap((x)=>x.defaults?[`Make "${x.defaults.profile(b)}" the ${x.name} default profile`]:[]):[]].join(`
753
+ `),`Wiring ${kt(f).map((x)=>x.name).join(", ")}`),!mc(await en({message:"Apply these changes?"})))throw Fr("Nothing changed"),new Te;let M=ug(S,o);if(dg(S),await od(r,TM(!0),n),k&&$)r4(r);let I=K(r);i4({...S,catalog:m,installed:I},v,e4(m,I,r),M)}import{spawn as s4}from"node:child_process";import{createHash as a4}from"node:crypto";import{existsSync as mg,mkdirSync as c4,readFileSync as u4,statSync as l4,utimesSync as d4,writeFileSync as f4}from"node:fs";import{homedir as jM}from"node:os";import{join as _M}from"node:path";import{gunzipSync as h4}from"node:zlib";var CM="https://github.com/kecan0406/aninames/releases/latest/download",BM=86400000,m4=3600000,p4=120000;function GM(t){return _M(Or(t),".checked")}function g4(t=process.env){return t.TTHEME_NAMES!=="off"}function b4(t){try{return Date.now()-l4(GM(t)).mtimeMs>=BM}catch{return!0}}function pg(t,e){let n=GM(t);if(c4(Or(t),{recursive:!0}),!mg(n))f4(n,"");d4(n,e/1000,e/1000)}function UM(t=jM()){if(!g4()||!b4(t))return;try{pg(t,Date.now()),s4(process.execPath,[process.argv[1],"names"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}function LM(t){return a4("sha256").update(t).digest("hex")}async function FM(t){let e=await fetch(t,{signal:AbortSignal.timeout(p4)});if(!e.ok)throw Error(`${t} answered ${e.status}`);return new Uint8Array(await e.arrayBuffer())}async function WM(t=jM()){let e=Or(t);try{let r=JSON.parse(new TextDecoder().decode(await FM(`${CM}/ttheme.json`)));for(let[i,{file:o,sha256:s}]of Object.entries(r.layers)){let a=_M(e,`ttheme-${i}.json`);if(mg(a)&&LM(u4(a))===s)continue;let c=h4(await FM(`${CM}/${o}`));if(LM(c)!==s)throw Error(`${o} does not match its hash`);L(a,c)}pg(t,Date.now())}catch{return pg(t,Date.now()-BM+m4),1}Vc(t);let n=J();if(mg(Ge(n)))xi(he(n).palettes,t),Gy(n,t);return 0}import{createHash as w4}from"node:crypto";import{existsSync as KM,readdirSync as zM,readFileSync as DM,rmSync as $4,statSync as k4,utimesSync as y4}from"node:fs";import{homedir as v4}from"node:os";import{join as ao}from"node:path";var S4=new Set(["814e75361c745b9f1467c82bee90ab3f47daeaa70a528d330a4bc8aec9faeeb9","668092ea188445700b02d60a102c429e092e46fcd88c33509b9f1fd64d68e6a6","bf52a8c6d019f59f71723be460d7fe450234d0f03ff0f35e94db2c42455f00ba","8df4e3246f2cf26deaa0f620f31e94efac21104ec2dbe81fba55ba066141aeb4","7bdc8051f34b902e970df84df0e4c8d27331b5e04da7f7b498d50b592eaa72f2","e06b39cd6fa2701bd360b7062d82d4a56766aba97889dfa547d14db5895454f1"]);function qM(t){try{return zM(t).map((e)=>ao(t,e)).filter((e)=>k4(e).isFile())}catch{return[]}}function E4(t){let e=t.slice(t.lastIndexOf("/")+1);if(e.startsWith(F("")))return!1;let n=e.replace(/\.(conf|toml)$/,""),r=DM(t,"utf8");return r.startsWith(`# ${n} — `)&&r.split(`
754
+ `)[1]?.startsWith("# ANSI: ")===!0||r.startsWith(`[metadata]
755
+ name = "${n}"
756
+ origin_url = "`)}function M4(t){let n=qM(t).filter((r)=>S4.has(w4("sha256").update(DM(r)).digest("hex")));return n.length>0&&n.length===zM(t).length?[t]:n}function x4(t){try{return K(t)}catch{return}}function O4(t){let{home:e,configHome:n}=t,r=x4(n),i={configHome:n,home:e},o=kt(Zt),s=o.map((c)=>c.unwire(i,r)),a=[ao(n,"ttheme"),t.cacheDir,t.stateDir];return{edits:[...Mn(ao(t.zdotdir,".zshrc"),Br),...s.flatMap((c)=>c.edits)],removals:[...o.flatMap((c)=>c.shelf?es(c.shelf.dir(i)):[]),...o.flatMap((c)=>c.shelf?qM(c.shelf.dir(i)).filter(E4):[]),...M4(ao(n,"ghostty","shaders")),...s.flatMap((c)=>c.removals),...a.filter((c)=>KM(c))],touches:s.flatMap((c)=>c.touches),...r?{state:r}:{}}}function I4(t,e,n=rn()){let r=[];for(let{file:o,content:s}of t.edits){let a=ib(o,s);r.push(a==="removed"?`Removed ${o} — ttheme had created it`:a==="restored"?`Took ttheme out of ${o}`:`Took ttheme out of ${o} — kept ${o}.ttheme.bak, since the file changed after ttheme's first edit`)}if(t.state){let o=Bi(e.configHome,{...t.state,off:!0,palettes:[]},!1,n,e.home);for(let s of kt(t.state.terminals))if(o.has(s.id))r.push(`Gave ${s.name} its own default profile back — it takes it at its next start`)}for(let o of t.removals)$4(o,{recursive:!0,force:!0});if(t.removals.length>0)r.push(`Deleted ${t.removals.length} files and folders ttheme wrote`);let i=new Date;for(let o of t.touches)y4(o,i,i);return r}function R4(){let t=v4();return{home:t,configHome:J(),zdotdir:process.env.ZDOTDIR??t,cacheDir:Er(),stateDir:ao(process.env.XDG_STATE_HOME??ao(t,".local","state"),"ttheme")}}async function YM(t=!1){let e=R4(),n=O4(e);if(n.edits.length===0&&n.removals.length===0){console.log("Nothing of ttheme is installed");return}if(!t){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("uninstall asks before it deletes anything — run it in a terminal, or pass --yes");let r=ao(e.configHome,"ttheme");$u("ttheme uninstall"),En([...n.edits.map((o)=>`Take ttheme out of ${o.file}`),...n.removals.map((o)=>o===r?`Delete ${o} — settings, pins, every installed picture${KM(Zc(e.configHome))?`, and your markets under ${Zc(e.configHome)} (push them to GitHub first to keep them)`:""}`:`Delete ${o}`)].join(`
757
+ `),"Uninstall");let i=await en({message:"Remove ttheme?"});if(me(i)||!i)throw Fr("Nothing changed"),new Te}for(let r of I4(n,e))console.log(r);console.log("Open tabs keep their colors until they close — restart your terminal to drop ttheme everywhere")}import{homedir as P4}from"node:os";async function JM(t){if(!Zt.includes(t))throw Error(`no terminal ${t} — one of ${Zt.join(", ")}`);let e=t,n=xn[e],r=J(),i=P4(),o=rn(),s=K(r);if(s.terminals.includes(e))return console.log(`${n.name} is wired already`),0;let a={configHome:r,home:i};if(!n.offered(a,o))throw Error(`${n.name} cannot be wired on this system`);if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("wire asks before it edits your configs — run it in a terminal");let c={...s,...n.installs?.(a)??{},terminals:[e]};En([...Yu(r,c,i),...Ju(r,c,i),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out"].join(`
758
+ `),`Wiring ${n.name}`);let u=await en({message:`Wire ${n.name} now?`,initialValue:!1});if(me(u)||!u)throw Fr("Nothing changed"),new Te;let l=Sa(r,c,o,i),d={...l,terminals:[...s.terminals,e]};We(r,d),ue(r,dt(r),d,i,o);let f=Bi(r,l,!0,o,i),h=Vu(r,l,f,i);if(h.length>0)En(h.join(`
759
+ `),"Next");return fa(`Wired ${n.name}`),0}var A4=new Set(["add","remove","market","default","on","off"]),T4={default:([t])=>iM(t),on:()=>oM(),off:()=>sM(),browse:()=>fM(),list:([t],{json:e})=>cM(t,e),add:(t,{market:e})=>nM(t,e),remove:(t)=>rM(t),update:(t)=>uM(t),market:([t,e])=>L1(t,e),new:([t],{from:e,in:n})=>BE(t,e,n),edit:([t])=>GE(t),check:([t],{fix:e})=>KE(t,e),share:([t],{tone:e})=>qE(t,e),init:(t,{yes:e})=>HM({yes:e}),uninstall:(t,{yes:e})=>YM(e),wire:([t])=>JM(t),info:()=>MM(),build:(t,{only:e})=>id({only:e}),find:([t])=>NE(t),image:([t,e,n])=>kM(t,e,n),redraw:()=>wM(),names:()=>WM(),latest:()=>e1(),tone:([t,e])=>UE(t,e),flatten:([t,e,n,r,i,o,s])=>SM(t,e,n,r,i,o,s),bake:([t,e,n,r])=>vM(t,e,n,r)},H4=Qo.map((t)=>({...t,run:T4[t.name]}));class co extends Error{verb;constructor(t,e){super(t);this.verb=e}}function VM(t){let e=H4.find((n)=>n.name===t);if(!e)throw new co(t.startsWith("-")?`unknown option '${t}'`:`unknown command '${t}'`);return e}function C4(t,e){let n={help:{type:"boolean",short:"h"}};for(let[r,{type:i,short:o,multiple:s}]of Object.entries(t.flags??{}))n[r]={type:i,multiple:s===!0,...o?{short:o}:{}};try{return N4({args:e,options:n,allowPositionals:!0})}catch(r){let[i=""]=(r instanceof Error?r.message:String(r)).split(". ");throw new co(`${i.charAt(0).toLowerCase()}${i.slice(1)}`,t)}}function L4(t){let[e,...n]=t;if(e===void 0)return{kind:"brief"};if(e==="-h"||e==="--help")return{kind:"help"};if(e==="-v"||e==="--version")return{kind:"version"};if(e==="help"){if(n[0]===void 0||n[0]==="all")return{kind:"help",all:n[0]==="all"};return{kind:"help",verb:VM(n[0])}}let r=VM(e),i=C4(r,n);if(i.values.help)return{kind:"help",verb:r};for(let[l,{choices:d}]of Object.entries(r.flags??{}))for(let f of[i.values[l]??[]].flat())if(d&&!d.includes(String(f)))throw new co(`--${l} takes ${d.join(", ")} — not ${f}`,r);let o=i.positionals,s=r.args.filter((l)=>l.startsWith("<")).length,a=r.args.some((l)=>l.includes("..."))?Number.POSITIVE_INFINITY:r.args.length;if(o.length<s)throw new co(`missing ${r.args[o.length]}`,r);if(o.length>a)throw new co(`too many arguments: ${o.slice(a).join(" ")}`,r);let{help:c,...u}=i.values;return{kind:"run",verb:r,args:o,flags:u}}var F4=[TypeError,RangeError,ReferenceError,SyntaxError];function j4(t){return F4.some((e)=>t instanceof e)||t instanceof Error&&"code"in t}async function ZM(t){let e;try{let n=L4(t);if(n.kind==="version")return console.log(lt.version),0;if(n.kind==="brief")return console.error(Rk()),1;if(n.kind==="help")return console.log(n.verb?Rh(n.verb):ma(n.all===!0)),0;if(e=n.verb,!n.verb.run)throw Error("runs in the shell layer — open a new tab once `ttheme init` has wired it");if(A4.has(n.verb.name))await y1();let r=await n.verb.run(n.args,n.flags);if(!n.verb.hidden&&n.verb.name!=="uninstall"){if(UM(),n.verb.name!=="update"&&n.verb.name!=="init")t1(),o1()}return typeof r==="number"?r:0}catch(n){if(n instanceof co)return console.error(n.verb?`ttheme ${n.verb.name}: ${n.message}
755
760
 
756
- ${cg(n.verb)}`:`ttheme: ${n.message} — see \`ttheme help\``),1;if(n instanceof He)return 1;if(n instanceof Na)return n.exit;let r=process.env.TTHEME_DEBUG&&n instanceof Error?n.stack:void 0;return console.error(`
757
- ttheme${e?` ${e.name}`:""}: ${r??(n instanceof Error?n.message:String(n))}${K5(n)?"\nReport a bug with the output of `ttheme info`":""}`),1}}if(D5)if(process.env.TTHEME_DEBUG&&typeof Bun>"u"&&!process.sourceMapsEnabled){let t=z5(process.execPath,["--enable-source-maps",...process.argv.slice(1)],{stdio:"inherit"});process.exitCode=t.status??1}else process.exitCode=await kM(process.argv.slice(2));
761
+ ${Rh(n.verb)}`:`ttheme: ${n.message} — see \`ttheme help\``),1;if(n instanceof Te)return 1;if(n instanceof La)return n.exit;let r=process.env.TTHEME_DEBUG&&n instanceof Error?n.stack:void 0;return console.error(`
762
+ ttheme${e?` ${e.name}`:""}: ${r??(n instanceof Error?n.message:String(n))}${j4(n)?"\nReport a bug with the output of `ttheme info`":""}`),1}}if(B4)if(process.env.TTHEME_DEBUG&&typeof Bun>"u"&&!process.sourceMapsEnabled){let t=_4(process.execPath,["--enable-source-maps",...process.argv.slice(1)],{stdio:"inherit"});process.exitCode=t.status??1}else process.exitCode=await ZM(process.argv.slice(2));
758
763
 
759
- //# debugId=CC4380ED83DBF72264756E2164756E21
764
+ //# debugId=8E9908930116CF5E64756E2164756E21
760
765
  //# sourceMappingURL=ttheme.js.map