@kecan0406/ttheme 1.2.23 → 1.2.25

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 eI}from"node:module";var JP=Object.create;var{getPrototypeOf:YP,defineProperty:Jb,getOwnPropertyNames:VP}=Object;var ZP=Object.prototype.hasOwnProperty;function XP(t){return this[t]}var QP,tI,gd=(t,e,n)=>{var r=t!=null&&typeof t==="object";if(r){var i=e?QP??=new WeakMap:tI??=new WeakMap,s=i.get(t);if(s)return s}n=t!=null?JP(YP(t)):{};let o=e||!t||!t.__esModule?Jb(n,"default",{value:t,enumerable:!0}):n;for(let a of VP(t))if(!ZP.call(o,a))Jb(o,a,{get:XP.bind(t,a),enumerable:!0});if(r)i.set(t,o);return o};var xt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Qt=eI(import.meta.url);var vd=xt((pB,uw)=>{var hI=Qt("util"),cw=Qt("stream"),un=uw.exports=function(){cw.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};hI.inherits(un,cw);un.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))};un.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};un.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()};un.prototype.destroySoon=un.prototype.end;un.prototype._end=function(){if(this._reads.length>0)this.emit("error",Error("Unexpected end of input"));this.destroy()};un.prototype.destroy=function(){if(!this._buffers)return;this.writable=!1,this._reads=null,this._buffers=null,this.emit("close")};un.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)};un.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++],s=Math.min(i.length,t.length-e);if(i.copy(r,e,0,s),e+=s,s!==i.length)this._buffers[--n]=i.slice(s)}if(n>0)this._buffers.splice(0,n);this._buffered-=t.length,t.func.call(this,r)};un.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 Sd=xt((mI)=>{var Fr=[{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]}];mI.getImagePasses=function(t,e){let n=[],r=t%8,i=e%8,s=(t-r)/8,o=(e-i)/8;for(let a=0;a<Fr.length;a++){let c=Fr[a],u=s*c.x.length,f=o*c.y.length;for(let l=0;l<c.x.length;l++)if(c.x[l]<r)u++;else break;for(let l=0;l<c.y.length;l++)if(c.y[l]<i)f++;else break;if(u>0&&f>0)n.push({width:u,height:f,index:a})}return n};mI.getInterlaceIterator=function(t){return function(e,n,r){let i=e%Fr[r].x.length,s=(e-i)/Fr[r].x.length*8+Fr[r].x[i],o=n%Fr[r].y.length,a=(n-o)/Fr[r].y.length*8+Fr[r].y[o];return s*4+a*t*4}}});var Ed=xt((bB,lw)=>{lw.exports=function(e,n,r){let i=e+n-r,s=Math.abs(i-e),o=Math.abs(i-n),a=Math.abs(i-r);if(s<=o&&s<=a)return e;if(o<=a)return n;return r}});var Md=xt((wB,dw)=>{var bI=Sd(),wI=Ed();function fw(t,e,n){let r=t*e;if(n!==8)r=Math.ceil(r/(8/n));return r}var Ks=dw.exports=function(t,e){let{width:n,height:r,interlace:i,bpp:s,depth:o}=t;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let a=bI.getImagePasses(n,r);for(let c=0;c<a.length;c++)this._images.push({byteWidth:fw(a[c].width,s,o),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:fw(n,s,o),height:r,lineIndex:0});if(o===8)this._xComparison=s;else if(o===16)this._xComparison=s*2;else this._xComparison=1};Ks.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};Ks.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,i=r-1;for(let s=0;s<n;s++){let o=t[1+s],a=s>i?e[s-r]:0;e[s]=o+a}};Ks.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let i=0;i<n;i++){let s=t[1+i],o=r?r[i]:0;e[i]=s+o}};Ks.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,i=r-1,s=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],c=s?s[o]:0,u=o>i?e[o-r]:0,f=Math.floor((u+c)/2);e[o]=a+f}};Ks.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,i=r-1,s=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],c=s?s[o]:0,u=o>i?e[o-r]:0,f=o>i&&s?s[o-r]:0,l=wI(u,c,f);e[o]=a+l}};Ks.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 pw=xt(($B,mw)=>{var $I=Qt("util"),hw=vd(),kI=Md(),yI=mw.exports=function(t){hw.call(this);let e=[],n=this;this._filter=new kI(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};$I.inherits(yI,hw)});var zs=xt((kB,gw)=>{gw.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 Pd=xt((yB,bw)=>{var xd=[];(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;xd[t]=e}})();var Od=bw.exports=function(){this._crc=-1};Od.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=xd[(this._crc^t[e])&255]^this._crc>>>8;return!0};Od.prototype.crc32=function(){return this._crc^-1};Od.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=xd[(e^t[n])&255]^e>>>8;return e^-1}});var Id=xt((vB,ww)=>{var _t=zs(),vI=Pd(),Ut=ww.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[_t.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[_t.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[_t.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[_t.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[_t.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[_t.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(){}};Ut.prototype.start=function(){this.read(_t.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Ut.prototype._parseSignature=function(t){let e=_t.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))};Ut.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let s=4;s<8;s++)r+=String.fromCharCode(t[s]);let i=Boolean(t[4]&32);if(!this._hasIHDR&&n!==_t.TYPE_IHDR){this.error(Error("Expected IHDR on beggining"));return}if(this._crc=new vI,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))};Ut.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Ut.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Ut.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))};Ut.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};Ut.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],i=t[9],s=t[10],o=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 _t.COLORTYPE_TO_BPP_MAP)){this.error(Error("Unsupported color type"));return}if(s!==0){this.error(Error("Unsupported compression method"));return}if(o!==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=_t.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:Boolean(a),palette:Boolean(i&_t.COLORTYPE_PALETTE),color:Boolean(i&_t.COLORTYPE_COLOR),alpha:Boolean(i&_t.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};Ut.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};Ut.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()};Ut.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};Ut.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===_t.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===_t.COLORTYPE_GRAYSCALE)this.transColor([t.readUInt16BE(0)]);if(this._colorType===_t.COLORTYPE_COLOR)this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]);this._handleChunkEnd()};Ut.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};Ut.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/_t.GAMMA_DIVISION),this._handleChunkEnd()};Ut.prototype._handleIDAT=function(t){if(!this._emittedHeadersFinished)this._emittedHeadersFinished=!0,this.headersFinished();this.read(-t,this._parseIDAT.bind(this,t))};Ut.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===_t.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()};Ut.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};Ut.prototype._parseIEND=function(t){if(this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished)this.finished()}});var Rd=xt((PI)=>{var $w=Sd(),SI=[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]}],EI=[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 MI(t,e){let n=[],r=0;function i(){if(r===t.length)throw Error("Ran out of data");let s=t[r];r++;let o,a,c,u,f,l,d,h;switch(e){default:throw Error("unrecognised depth");case 16:d=t[r],r++,n.push((s<<8)+d);break;case 4:d=s&15,h=s>>4,n.push(h,d);break;case 2:f=s&3,l=s>>2&3,d=s>>4&3,h=s>>6&3,n.push(h,d,l,f);break;case 1:o=s&1,a=s>>1&1,c=s>>2&1,u=s>>3&1,f=s>>4&1,l=s>>5&1,d=s>>6&1,h=s>>7&1,n.push(h,d,l,f,u,c,a,o);break}}return{get:function(s){while(n.length<s)i();let o=n.slice(0,s);return n=n.slice(s),o},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw Error("extra data found")}}}function xI(t,e,n,r,i,s){let{width:o,height:a,index:c}=t;for(let u=0;u<a;u++)for(let f=0;f<o;f++){let l=n(f,u,c);SI[r](e,i,l,s),s+=r}return s}function OI(t,e,n,r,i,s){let{width:o,height:a,index:c}=t;for(let u=0;u<a;u++){for(let f=0;f<o;f++){let l=i.get(r),d=n(f,u,c);EI[r](e,l,d,s)}i.resetAfterLine()}}PI.dataToBitMap=function(t,e){let{width:n,height:r,depth:i,bpp:s,interlace:o}=e,a;if(i!==8)a=MI(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,f=0,l,d;if(o)l=$w.getImagePasses(n,r),d=$w.getInterlaceIterator(n,r);else{let h=0;d=function(){let m=h;return h+=4,m},l=[{width:n,height:r}]}for(let h=0;h<l.length;h++)if(i===8)f=xI(l[h],c,d,s,t,f);else OI(l[h],c,d,s,a,u);if(i===8){if(f!==t.length)throw Error("extra data found")}else a.end();return c}});var Ad=xt((EB,kw)=>{function RI(t,e,n,r,i){let s=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let c=i[t[s]];if(!c)throw Error("index "+t[s]+" not in palette");for(let u=0;u<4;u++)e[s+u]=c[u];s+=4}}function AI(t,e,n,r,i){let s=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let c=!1;if(i.length===1){if(i[0]===t[s])c=!0}else if(i[0]===t[s]&&i[1]===t[s+1]&&i[2]===t[s+2])c=!0;if(c)for(let u=0;u<4;u++)e[s+u]=0;s+=4}}function NI(t,e,n,r,i){let s=255,o=Math.pow(2,i)-1,a=0;for(let c=0;c<r;c++)for(let u=0;u<n;u++){for(let f=0;f<4;f++)e[a+f]=Math.floor(t[a+f]*s/o+0.5);a+=4}}kw.exports=function(t,e,n=!1){let{depth:r,width:i,height:s,colorType:o,transColor:a,palette:c}=e,u=t;if(o===3)RI(t,u,i,s,c);else{if(a)AI(t,u,i,s,a);if(r!==8&&!n){if(r===16)u=Buffer.alloc(i*s*4);NI(t,u,i,s,r)}}return u}});var Sw=xt((MB,vw)=>{var TI=Qt("util"),Nd=Qt("zlib"),yw=vd(),HI=pw(),LI=Id(),FI=Rd(),CI=Ad(),Rn=vw.exports=function(t){yw.call(this),this._parser=new LI(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()};TI.inherits(Rn,yw);Rn.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};Rn.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Nd.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,Nd.Z_MIN_CHUNK);this._inflate=Nd.createInflate({chunkSize:r});let i=n,s=this.emit.bind(this,"error");this._inflate.on("error",function(a){if(!i)return;s(a)}),this._filter.on("complete",this._complete.bind(this));let o=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,o(a)}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};Rn.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new HI(this._bitmapInfo)};Rn.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};Rn.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};Rn.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Rn.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Rn.prototype._finished=function(){if(this.errord)return;if(!this._inflate)this.emit("error","No Inflate block");else this._inflate.end()};Rn.prototype._complete=function(t){if(this.errord)return;let e;try{let n=FI.dataToBitMap(t,this._bitmapInfo);e=CI(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Mw=xt((xB,Ew)=>{var De=zs();Ew.exports=function(t,e,n,r){let i=[De.COLORTYPE_COLOR_ALPHA,De.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 s=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=De.COLORTYPE_TO_BPP_MAP[r.inputColorType];if(a===4&&!r.inputHasAlpha)a=3;let c=De.COLORTYPE_TO_BPP_MAP[r.colorType];if(r.bitDepth===16)o=65535,c*=2;let u=Buffer.alloc(e*n*c),f=0,l=0,d=r.bgColor||{};if(d.red===void 0)d.red=o;if(d.green===void 0)d.green=o;if(d.blue===void 0)d.blue=o;function h(){let m,p,b,$=o;switch(r.inputColorType){case De.COLORTYPE_COLOR_ALPHA:$=s[f+3],m=s[f],p=s[f+1],b=s[f+2];break;case De.COLORTYPE_COLOR:m=s[f],p=s[f+1],b=s[f+2];break;case De.COLORTYPE_ALPHA:$=s[f+1],m=s[f],p=m,b=m;break;case De.COLORTYPE_GRAYSCALE:m=s[f],p=m,b=m;break;default:throw Error("input color type:"+r.inputColorType+" is not supported at present")}if(r.inputHasAlpha){if(!i)$/=o,m=Math.min(Math.max(Math.round((1-$)*d.red+$*m),0),o),p=Math.min(Math.max(Math.round((1-$)*d.green+$*p),0),o),b=Math.min(Math.max(Math.round((1-$)*d.blue+$*b),0),o)}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(s,f);switch(r.colorType){case De.COLORTYPE_COLOR_ALPHA:case De.COLORTYPE_COLOR:if(r.bitDepth===8){if(u[l]=b.red,u[l+1]=b.green,u[l+2]=b.blue,i)u[l+3]=b.alpha}else if(u.writeUInt16BE(b.red,l),u.writeUInt16BE(b.green,l+2),u.writeUInt16BE(b.blue,l+4),i)u.writeUInt16BE(b.alpha,l+6);break;case De.COLORTYPE_ALPHA:case De.COLORTYPE_GRAYSCALE:{let $=(b.red+b.green+b.blue)/3;if(r.bitDepth===8){if(u[l]=$,i)u[l+1]=b.alpha}else if(u.writeUInt16BE($,l),i)u.writeUInt16BE(b.alpha,l+2);break}default:throw Error("unrecognised color Type "+r.colorType)}f+=a,l+=c}return u}});var Pw=xt((OB,Ow)=>{var xw=Ed();function jI(t,e,n,r,i){for(let s=0;s<n;s++)r[i+s]=t[e+s]}function _I(t,e,n){let r=0,i=e+n;for(let s=e;s<i;s++)r+=Math.abs(t[s]);return r}function BI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=t[e+o]-a;r[i+o]=c}}function GI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=t[e+s]-o;i+=Math.abs(a)}return i}function UI(t,e,n,r,i){for(let s=0;s<n;s++){let o=e>0?t[e+s-n]:0,a=t[e+s]-o;r[i+s]=a}}function WI(t,e,n){let r=0,i=e+n;for(let s=e;s<i;s++){let o=e>0?t[s-n]:0,a=t[s]-o;r+=Math.abs(a)}return r}function KI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=e>0?t[e+o-n]:0,u=t[e+o]-(a+c>>1);r[i+o]=u}}function zI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=e>0?t[e+s-n]:0,c=t[e+s]-(o+a>>1);i+=Math.abs(c)}return i}function DI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=e>0?t[e+o-n]:0,u=e>0&&o>=s?t[e+o-(n+s)]:0,f=t[e+o]-xw(a,c,u);r[i+o]=f}}function qI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=e>0?t[e+s-n]:0,c=e>0&&s>=r?t[e+s-(n+r)]:0,u=t[e+s]-xw(o,a,c);i+=Math.abs(u)}return i}var JI={0:jI,1:BI,2:UI,3:KI,4:DI},YI={0:_I,1:GI,2:WI,3:zI,4:qI};Ow.exports=function(t,e,n,r,i){let s;if(!("filterType"in r)||r.filterType===-1)s=[0,1,2,3,4];else if(typeof r.filterType==="number")s=[r.filterType];else throw Error("unrecognised filter types");if(r.bitDepth===16)i*=2;let o=e*i,a=0,c=0,u=Buffer.alloc((o+1)*n),f=s[0];for(let l=0;l<n;l++){if(s.length>1){let d=1/0;for(let h=0;h<s.length;h++){let m=YI[s[h]](t,c,o,i);if(m<d)f=s[h],d=m}}u[a]=f,a++,JI[f](t,c,o,u,a,i),a+=o,c+=o}return u}});var Td=xt((PB,Iw)=>{var te=zs(),VI=Pd(),ZI=Mw(),XI=Pw(),QI=Qt("zlib"),Cr=Iw.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||QI.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType==="number"?t.colorType:te.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType==="number"?t.inputColorType:te.COLORTYPE_COLOR_ALPHA,[te.COLORTYPE_GRAYSCALE,te.COLORTYPE_COLOR,te.COLORTYPE_COLOR_ALPHA,te.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw Error("option color type:"+t.colorType+" is not supported at present");if([te.COLORTYPE_GRAYSCALE,te.COLORTYPE_COLOR,te.COLORTYPE_COLOR_ALPHA,te.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")};Cr.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Cr.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Cr.prototype.filterData=function(t,e,n){let r=ZI(t,e,n,this._options),i=te.COLORTYPE_TO_BPP_MAP[this._options.colorType];return XI(r,e,n,this._options,i)};Cr.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(VI.crc32(r.slice(4,r.length-4)),r.length-4),r};Cr.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*te.GAMMA_DIVISION),0),this._packChunk(te.TYPE_gAMA,e)};Cr.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(te.TYPE_IHDR,n)};Cr.prototype.packIDAT=function(t){return this._packChunk(te.TYPE_IDAT,t)};Cr.prototype.packIEND=function(){return this._packChunk(te.TYPE_IEND,null)}});var Tw=xt((IB,Nw)=>{var tR=Qt("util"),Rw=Qt("stream"),eR=zs(),nR=Td(),Aw=Nw.exports=function(t){Rw.call(this);let e=t||{};this._packer=new nR(e),this._deflate=this._packer.createDeflate(),this.readable=!0};tR.inherits(Aw,Rw);Aw.prototype.pack=function(t,e,n,r){if(this.emit("data",Buffer.from(eR.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(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var _w=xt((ba,jw)=>{var Hw=Qt("assert").ok,Ds=Qt("zlib"),rR=Qt("util"),Lw=Qt("buffer").kMaxLength;function Ti(t){if(!(this instanceof Ti))return new Ti(t);if(t&&t.chunkSize<Ds.Z_MIN_CHUNK)t.chunkSize=Ds.Z_MIN_CHUNK;if(Ds.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 iR(t){return new Ti(t)}function Fw(t,e){if(e)process.nextTick(e);if(!t._handle)return;t._handle.close(),t._handle=null}Ti.prototype._processChunk=function(t,e,n){if(typeof n==="function")return Ds.Inflate._processChunk.call(this,t,e,n);let r=this,i=t&&t.length,s=this._chunkSize-this._offset,o=this._maxLength,a=0,c=[],u=0,f;this.on("error",function(m){f=m});function l(m,p){if(r._hadError)return;let b=s-p;if(Hw(b>=0,"have should not go down"),b>0){let $=r._buffer.slice(r._offset,r._offset+b);if(r._offset+=b,$.length>o)$=$.slice(0,o);if(c.push($),u+=$.length,o-=$.length,o===0)return!1}if(p===0||r._offset>=r._chunkSize)s=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize);if(p===0)return a+=i-m,i=m,!0;return!1}Hw(this._handle,"zlib binding closed");let d;do d=this._handle.writeSync(e,t,a,i,this._buffer,this._offset,s),d=d||this._writeState;while(!this._hadError&&l(d[0],d[1]));if(this._hadError)throw f;if(u>=Lw)throw Fw(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+Lw.toString(16)+" bytes");let h=Buffer.concat(c,u);return Fw(this),h};rR.inherits(Ti,Ds.Inflate);function sR(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=Ds.Z_FINISH;return t._processChunk(e,n)}function Cw(t,e){return sR(new Ti(e),t)}jw.exports=ba=Cw;ba.Inflate=Ti;ba.createInflate=iR;ba.inflateSync=Cw});var Hd=xt((RB,Gw)=>{var Bw=Gw.exports=function(t){this._buffer=t,this._reads=[]};Bw.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Bw.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 Uw=xt((cR)=>{var oR=Hd(),aR=Md();cR.process=function(t,e){let n=[],r=new oR(t);return new aR(e,{read:r.read.bind(r),write:function(s){n.push(s)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Dw=xt((NB,zw)=>{var Ww=!0,Kw=Qt("zlib"),lR=_w();if(!Kw.deflateSync)Ww=!1;var fR=Hd(),dR=Uw(),hR=Id(),mR=Rd(),pR=Ad();zw.exports=function(t,e){if(!Ww)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(v){n=v}let i;function s(v){i=v}function o(v){i.transColor=v}function a(v){i.palette=v}function c(){i.alpha=!0}let u;function f(v){u=v}let l=[];function d(v){l.push(v)}let h=new fR(t);if(new hR(e,{read:h.read.bind(h),error:r,metadata:s,gamma:f,palette:a,transColor:o,inflateData:d,simpleTransparency:c}).start(),h.process(),n)throw n;let p=Buffer.concat(l);l.length=0;let b;if(i.interlace)b=Kw.inflateSync(p);else{let x=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;b=lR(p,{chunkSize:x,maxLength:x})}if(p=null,!b||!b.length)throw Error("bad png - invalid inflate data response");let $=dR.process(b,i);p=null;let k=mR.dataToBitMap($,i);$=null;let S=pR(k,i,e.skipRescale);return i.data=S,i.gamma=u||0,i}});var Vw=xt((TB,Yw)=>{var qw=!0,Jw=Qt("zlib");if(!Jw.deflateSync)qw=!1;var gR=zs(),bR=Td();Yw.exports=function(t,e){if(!qw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new bR(e||{}),i=[];if(i.push(Buffer.from(gR.PNG_SIGNATURE)),i.push(r.packIHDR(t.width,t.height)),t.gamma)i.push(r.packGAMA(t.gamma));let s=r.filterData(t.data,t.width,t.height),o=Jw.deflateSync(s,r.getDeflateOptions());if(s=null,!o||!o.length)throw Error("bad png - invalid compressed data response");return i.push(r.packIDAT(o)),i.push(r.packIEND()),Buffer.concat(i)}});var Zw=xt((kR)=>{var wR=Dw(),$R=Vw();kR.read=function(t,e){return wR(t,e||{})};kR.write=function(t,e){return $R(t,e)}});var Qw=xt((OR)=>{var SR=Qt("util"),Xw=Qt("stream"),ER=Sw(),MR=Tw(),xR=Zw(),le=OR.PNG=function(t){if(Xw.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 ER(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 MR(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"))};SR.inherits(le,Xw);le.sync=xR;le.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};le.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};le.prototype.write=function(t){return this._parser.write(t),!0};le.prototype.end=function(t){this._parser.end(t)};le.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};le.prototype._gamma=function(t){this.gamma=t};le.prototype._handleClose=function(){if(!this._parser.writable&&!this._packer.readable)this.emit("close")};le.bitblt=function(t,e,n,r,i,s,o,a){if(n|=0,r|=0,i|=0,s|=0,o|=0,a|=0,n>t.width||r>t.height||n+i>t.width||r+s>t.height)throw Error("bitblt reading outside image");if(o>e.width||a>e.height||o+i>e.width||a+s>e.height)throw Error("bitblt writing outside image");for(let c=0;c<s;c++)t.data.copy(e.data,(a+c)*e.width+o<<2,(r+c)*t.width+n<<2,(r+c)*t.width+n+i<<2)};le.prototype.bitblt=function(t,e,n,r,i,s,o){return le.bitblt(this,t,e,n,r,i,s,o),this};le.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 s=t.data[r+i]/255;s=Math.pow(s,0.45454545454545453/t.gamma),t.data[r+i]=Math.round(s*255)}}t.gamma=0}};le.prototype.adjustGamma=function(){le.adjustGamma(this)}});var um=xt((gW,by)=>{var cm={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"},eH={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},nH={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?cm.up():"");if(t)e+=cm.left;return e}};by.exports={cursor:cm,scroll:eH,erase:nH,beep:"\x07"}});import{spawnSync as iB}from"node:child_process";import{isMainThread as sB}from"node:worker_threads";import{parseArgs as V_}from"node:util";var dt={name:"@kecan0406/ttheme",version:"1.2.23",type:"module",bin:{ttheme:"bin/ttheme.js"},files:["bin","dist/manifest.json","shell","!shell/check.zsh"],description:"Character terminal palettes for Ghostty, iTerm2, kitty, Alacritty, WezTerm, Windows Terminal, Warp, Konsole and Terminal.app",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","warp","windows-terminal"],devDependencies:{"@biomejs/biome":"^2.5.15","@clack/prompts":"^1.8.1","@jsquash/jpeg":"^1.6.0","@material/material-color-utilities":"^0.4.0","@oxlint/plugins":"1.87.0","@types/bun":"^1.4.2","@types/pngjs":"6.0.5","@xterm/headless":"6.0.0","fast-string-width":"^3.0.2",oxlint:"1.87.0",pngjs:"7.0.0","smol-toml":"^1.9.0",typescript:"^7.0.2",uqr:"^0.1.3"},engines:{bun:">=1.3",node:">=22"}};import{existsSync as Rk,readFileSync as Jh}from"node:fs";import{join as Ak}from"node:path";var rI=/^#[0-9a-f]{6}$/;function we(t){return rI.test(t)}function ct(t){let e=Number.parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,e&255]}function Nt(t,e,n){let r=ct(t),i=ct(e);return`#${r.map((s,o)=>Math.round(s+((i[o]??0)-s)*n).toString(16).padStart(2,"0")).join("")}`}function Mt(t){let[e,n,r]=ct(t).map((i)=>{let s=i/255;return s<=0.03928?s/12.92:((s+0.055)/1.055)**2.4});return 0.2126*e+0.7152*n+0.0722*r}function kt(t,e){let n=Mt(t),r=Mt(e);return(Math.max(n,r)+0.05)/(Math.min(n,r)+0.05)}function au(t,e){return Math.round(kt(t,e)*100)/100}function iI(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function Ot(t){let[e,n,r]=ct(t).map(iI),i=Math.cbrt(0.4122214708*e+0.5363325363*n+0.0514459929*r),s=Math.cbrt(0.2119034982*e+0.6806995451*n+0.1073969566*r),o=Math.cbrt(0.0883024619*e+0.2817188376*n+0.6299787005*r),a=1.9779984951*i-2.428592205*s+0.4505937099*o,c=0.0259040371*i+0.7827717662*s-0.808675766*o;return{l:0.2104542553*i+0.793617785*s-0.0040720468*o,c:Math.hypot(a,c),h:(Math.atan2(c,a)*180/Math.PI+360)%360}}var Tr=7,Yb=3,bd=0.15,Vb=1.6,$d=[1,2,3,4,5,6,9,10,11,12,13,14],Zb=[7,15],cn=[1,2,3,4,5,6],Ae={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}},Ai=0.03,an=25,Gs=15,Us=0.08;function nr(t,e){let n=t.ansi[e];if(n===void 0)throw Error(`${t.name}: missing ANSI ${e}`);return n}function wd(t,e,n){let r=t.background;return e.flatMap((i)=>{let s=nr(t,i);return kt(s,r)<n?[`ANSI ${i} ${s} on ${r} is ${au(s,r)}:1, needs ${n}:1`]:[]})}function Xb(t,e){return Math.min(...e.map((n)=>kt(nr(t,n),t.background)))}var Qb=[{rule:"foreground",label:"foreground on background",unit:"ratio",min:Tr,measure:({foreground:t,background:e})=>kt(t,e),check:({foreground:t,background:e})=>kt(t,e)<Tr?[`foreground ${t} on ${e} is ${au(t,e)}:1, needs ${Tr}:1`]:[]},{rule:"accents",label:"weakest accent on background",unit:"ratio",min:Yb,measure:(t)=>Xb(t,$d),check:(t)=>wd(t,$d,Yb)},{rule:"ansi0-dark",label:"ansi0 luminance",unit:"luminance",max:bd,measure:(t)=>Mt(nr(t,0)),check:(t)=>{let e=nr(t,0);return Mt(e)>bd?[`ANSI 0 ${e} has luminance ${Mt(e).toFixed(3)}, needs <= ${bd}`]:[]}},{rule:"light-ansi",label:"ansi7 and ansi15 on background",unit:"ratio",min:Tr,measure:(t)=>Xb(t,Zb),check:(t)=>wd(t,Zb,Tr)},{rule:"ansi8-visible",label:"ansi8 on background",unit:"ratio",min:Vb,measure:(t)=>kt(nr(t,8),t.background),check:(t)=>wd(t,[8],Vb)},{rule:"selection",label:"foreground on selection",unit:"ratio",min:Tr,measure:({foreground:t,selectionBackground:e})=>e===void 0?Number.NaN:kt(t,e),check:({foreground:t,selectionBackground:e})=>e!==void 0&&kt(t,e)<Tr?[`foreground ${t} on selection ${e} is ${au(t,e)}:1, needs ${Tr}:1`]:[]}];function Ne(t,e){let n=Math.abs(t-e)%360;return Math.min(n,360-n)}var On=(t)=>t>8?t-8:t;function Ws(t){let e=t.signatureSlots.filter((n)=>n.startsWith("ansi")).map((n)=>Number(n.slice(4)));return new Set(e.flatMap((n)=>cn.includes(On(n))?[n,n>8?n-8:n+8]:[n]))}function ma(t,e){let n=Ot(nr(t,e));return n.c<Ai?void 0:n}function Hr(t){let e=Ws(t);return $d.flatMap((n)=>{let r=ma(t,n),i=Ae[On(n)];if(r===void 0||i===void 0||e.has(n))return[];let s=Ne(r.h,i.center)-i.width;return s>0?[{slot:n,hue:r.h,over:s}]:[]})}function rr(t){let e=new Set(t.signatureSlots);return cn.flatMap((n)=>{let r=ma(t,n),i=ma(t,n+8);if(r===void 0||i===void 0||e.has(`ansi${n}`)&&e.has(`ansi${n+8}`))return[];return[{normal:n,gap:Ne(r.h,i.h)}]})}function ir(t){let e=Ws(t);return[0,8].flatMap((n)=>cn.flatMap((r)=>cn.filter((i)=>i>r).flatMap((i)=>{let[s,o]=[n+r,n+i],a=ma(t,s),c=ma(t,o);if(a===void 0||c===void 0||e.has(s)&&e.has(o))return[];return Ne(a.h,c.h)<Gs&&Math.abs(a.l-c.l)<Us?[[s,o]]:[]})))}var sI=[{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=Ae[On(e)];return`ANSI ${e} ${nr(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:an,measure:(t)=>Math.max(0,...rr(t).map((e)=>e.gap)),check:(t)=>rr(t).filter((e)=>e.gap>an).map(({normal:e,gap:n})=>`ANSI ${e+8} is ${n.toFixed(0)}° from ANSI ${e}, needs <= ${an}°`)},{rule:"distinct",label:"accent pairs that read as one color",unit:"pairs",max:0,measure:(t)=>ir(t).length,check:(t)=>ir(t).map(([e,n])=>`ANSI ${e} ${nr(t,e)} and ANSI ${n} ${nr(t,n)} are within ${Gs}° hue and ${Us} lightness`)}],cu=[...Qb,...sI],kd=cu.map((t)=>t.rule),Te=cu.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 cu.map((e)=>Math.round(e.measure(t)*1000)/1000)}function tw(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 sr(t){return tw(cu,t)}function ew(t){return tw(Qb,t)}function nw(t){return t.flatMap(sr)}import{chmodSync as oI,copyFileSync as aI,existsSync as Lr,mkdirSync as cI,readFileSync as pa,realpathSync as uI,renameSync as iw,rmSync as rw,statSync as lI,writeFileSync as sw}from"node:fs";import{dirname as fI}from"node:path";function ga(t){return`${t}.ttheme.bak`}var dI=/^(?:#|--) ttheme begin$|path = "ttheme-|^DefaultProfile=ttheme-/m;function yd(t){let e=ga(t);if(Lr(t)&&!Lr(e)&&!dI.test(pa(t,"utf8")))aI(t,e)}function H(t,e){let n=Lr(t)?uI(t):t;cI(fI(n),{recursive:!0});let r=`${n}.ttheme-${process.pid}`;if(sw(r,e),Lr(n))oI(r,lI(n).mode&4095);iw(r,n)}function Ni(t,e,n){if(sw(t,n),t!==e)iw(t,e)}function In(t,e){if((Lr(t)?pa(t,"utf8"):void 0)===e)return!1;return yd(t),H(t,e),!0}function ow(t,e){return t.replace(/\n*$/,"")===e.replace(/\n*$/,"")}function aw(t,e){let n=ga(t),r=Lr(n)?pa(n,"utf8"):void 0;if(e===""&&r===void 0)return rw(t,{force:!0}),"removed";let i=r!==void 0&&ow(r,e);if(H(t,i?r:e),r===void 0||i)return rw(n,{force:!0}),"restored";return"kept backup"}function uu(t){let e=ga(t);return Lr(t)&&Lr(e)&&ow(pa(t,"utf8"),pa(e,"utf8"))?[e]:[]}import{createHash as S$}from"node:crypto";import{copyFileSync as MN,existsSync as gh,mkdirSync as xN,readdirSync as ON,readFileSync as oo,renameSync as E$,rmSync as so,statSync as PN}from"node:fs";import{basename as M$,isAbsolute as IN,join as V}from"node:path";import{readdirSync as BR,rmSync as GR,statSync as UR}from"node:fs";import{setDefaultAutoSelectFamilyAttemptTimeout as WR}from"node:net";import{homedir as KR}from"node:os";import{join as ya}from"node:path";import{setTimeout as zR}from"node:timers/promises";var i0=gd(Qw(),1);import{constants as AR,deflateSync as NR,inflateSync as TR}from"node:zlib";import{inflateRawSync as IR}from"node:zlib";var PR=(()=>{var t=import.meta.url;return function(e={}){var n=e,r,i,s=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),f=[],l="./this.program",d=(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,S,v;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)v=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.responseType="arraybuffer",w.send(null),new Uint8Array(w.response)};S=(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 x=n.print||console.log.bind(console),M=n.printErr||console.error.bind(console);if(Object.assign(n,u),u=null,n.arguments)f=n.arguments;if(n.thisProgram)l=n.thisProgram;if(n.quit)d=n.quit;var N;if(n.wasmBinary)N=n.wasmBinary;var C,I=!1,j,U,G,F,gt,Xt,at,Nr,Ke;function xn(){var g=C.buffer;n.HEAP8=U=new Int8Array(g),n.HEAP16=F=new Int16Array(g),n.HEAPU8=G=new Uint8Array(g),n.HEAPU16=gt=new Uint16Array(g),n.HEAP32=Xt=new Int32Array(g),n.HEAPU32=at=new Uint32Array(g),n.HEAPF32=Nr=new Float32Array(g),n.HEAPF64=Ke=new Float64Array(g)}var Fs=[],ru=[],Mi=[],nd=!1;function rd(){if(n.preRun){if(typeof n.preRun=="function")n.preRun=[n.preRun];while(n.preRun.length)sO(n.preRun.shift())}od(Fs)}function id(){nd=!0,od(ru)}function iO(){if(n.postRun){if(typeof n.postRun=="function")n.postRun=[n.postRun];while(n.postRun.length)aO(n.postRun.shift())}od(Mi)}function sO(g){Fs.unshift(g)}function oO(g){ru.unshift(g)}function aO(g){Mi.unshift(g)}var xi=0,sd=null,da=null;function cO(g){xi++,n.monitorRunDependencies?.(xi)}function uO(g){if(xi--,n.monitorRunDependencies?.(xi),xi==0){if(sd!==null)clearInterval(sd),sd=null;if(da){var w=da;da=null,w()}}}function Pb(g){n.onAbort?.(g),g="Aborted("+g+")",M(g),I=!0,j=1,g+=". Build with -sASSERTIONS for more info.";var w=new WebAssembly.RuntimeError(g);throw i(w),w}var lO="data:application/octet-stream;base64,",Ib=(g)=>g.startsWith(lO),Oi;if(n.locateFile){if(Oi="mozjpeg_dec.wasm",!Ib(Oi))Oi=$(Oi)}else Oi=new URL("mozjpeg_dec.wasm",import.meta.url).href;function Rb(g){if(g==Oi&&N)return new Uint8Array(N);if(v)return v(g);throw"both async and sync fetching of the wasm failed"}function fO(g){if(!N&&(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(()=>Rb(g))}return Promise.resolve().then(()=>Rb(g))}function Ab(g,w,y){return fO(g).then((E)=>WebAssembly.instantiate(E,w)).then(y,(E)=>{M(`failed to asynchronously prepare wasm: ${E}`),Pb(E)})}function dO(g,w,y,E){if(!g&&typeof WebAssembly.instantiateStreaming=="function"&&!Ib(w)&&typeof fetch=="function")return fetch(w,{credentials:"same-origin"}).then((P)=>{var A=WebAssembly.instantiateStreaming(P,y);return A.then(E,function(W){return M(`wasm streaming compile failed: ${W}`),M("falling back to ArrayBuffer instantiation"),Ab(w,y,E)})});return Ab(w,y,E)}function hO(){var g={a:CP};function w(E,P){return ce=E.exports,C=ce.A,xn(),_b=ce.F,oO(ce.B),uO("wasm-instantiate"),ce}cO("wasm-instantiate");function y(E){w(E.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(g,w)}catch(E){M(`Module.instantiateWasm callback failed with error: ${E}`),i(E)}return dO(N,Oi,g,y).catch(i),{}}function mO(g){this.name="ExitStatus",this.message=`Program terminated with exit(${g})`,this.status=g}var od=(g)=>{while(g.length>0)g.shift()(n)},pO=n.noExitRuntime||!0;class Nb{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){at[this.ptr+4>>2]=g}get_type(){return at[this.ptr+4>>2]}set_destructor(g){at[this.ptr+8>>2]=g}get_destructor(){return at[this.ptr+8>>2]}set_caught(g){g=g?1:0,U[this.ptr+12]=g}get_caught(){return U[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,U[this.ptr+13]=g}get_rethrown(){return U[this.ptr+13]!=0}init(g,w){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(w)}set_adjusted_ptr(g){at[this.ptr+16>>2]=g}get_adjusted_ptr(){return at[this.ptr+16>>2]}get_exception_ptr(){var g=Db(this.get_type());if(g)return at[this.excPtr>>2];var w=this.get_adjusted_ptr();if(w!==0)return w;return this.excPtr}}var Tb=0,gO=0,bO=(g,w,y)=>{var E=new Nb(g);throw E.init(w,y),Tb=g,gO++,Tb},wO=(g,w,y,E,P)=>{},$O=()=>{var g=Array(256);for(var w=0;w<256;++w)g[w]=String.fromCharCode(w);Hb=g},Hb,on=(g)=>{var w="",y=g;while(G[y])w+=Hb[G[y++]];return w},Cs={},Pi={},iu={},Lb,Re=(g)=>{throw new Lb(g)},Fb,Cb=(g)=>{throw new Fb(g)},kO=(g,w,y)=>{g.forEach(function(T){iu[T]=w});function E(T){var z=y(T);if(z.length!==g.length)Cb("Mismatched type converter count");for(var Q=0;Q<g.length;++Q)Qn(g[Q],z[Q])}var P=Array(w.length),A=[],W=0;if(w.forEach((T,z)=>{if(Pi.hasOwnProperty(T))P[z]=Pi[T];else{if(A.push(T),!Cs.hasOwnProperty(T))Cs[T]=[];Cs[T].push(()=>{if(P[z]=Pi[T],++W,W===A.length)E(P)})}}),A.length===0)E(P)};function yO(g,w,y={}){var E=w.name;if(!g)Re(`type "${E}" must have a positive integer typeid pointer`);if(Pi.hasOwnProperty(g))if(y.ignoreDuplicateRegistrations)return;else Re(`Cannot register type '${E}' twice`);if(Pi[g]=w,delete iu[g],Cs.hasOwnProperty(g)){var P=Cs[g];delete Cs[g],P.forEach((A)=>A())}}function Qn(g,w,y={}){if(!("argPackAdvance"in w))throw TypeError("registerType registeredInstance requires argPackAdvance");return yO(g,w,y)}var Ii=8,vO=(g,w,y,E)=>{w=on(w),Qn(g,{name:w,fromWireType:function(P){return!!P},toWireType:function(P,A){return A?y:E},argPackAdvance:Ii,readValueFromPointer:function(P){return this.fromWireType(G[P])},destructorFunction:null})},ad=[],tr=[],cd=(g)=>{if(g>9&&--tr[g+1]===0)tr[g]=void 0,ad.push(g)},SO=()=>tr.length/2-5-ad.length,EO=()=>{tr.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=SO},Ri={toValue:(g)=>{if(!g)Re("Cannot use deleted val. handle = "+g);return tr[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=ad.pop()||tr.length;return tr[w]=g,tr[w+1]=1,w}}}};function ud(g){return this.fromWireType(at[g>>2])}var MO={name:"emscripten::val",fromWireType:(g)=>{var w=Ri.toValue(g);return cd(g),w},toWireType:(g,w)=>Ri.toHandle(w),argPackAdvance:Ii,readValueFromPointer:ud,destructorFunction:null},xO=(g)=>Qn(g,MO),OO=(g,w)=>{switch(w){case 4:return function(y){return this.fromWireType(Nr[y>>2])};case 8:return function(y){return this.fromWireType(Ke[y>>3])};default:throw TypeError(`invalid float width (${w}): ${g}`)}},PO=(g,w,y)=>{w=on(w),Qn(g,{name:w,fromWireType:(E)=>E,toWireType:(E,P)=>P,argPackAdvance:Ii,readValueFromPointer:OO(w,y),destructorFunction:null})},ld=(g,w)=>Object.defineProperty(w,"name",{value:g}),jb=(g)=>{while(g.length){var w=g.pop(),y=g.pop();y(w)}};function IO(g){for(var w=1;w<g.length;++w)if(g[w]!==null&&g[w].destructorFunction===void 0)return!0;return!1}function RO(g,w,y,E,P,A){var W=w.length;if(W<2)Re("argTypes array size mismatch! Must at least get return value and 'this' types!");var T=w[1]!==null&&y!==null,z=IO(w),Q=w[0].name!=="void",bt=W-2,jt=Array(bt),ue=[],ze=[],js=function(...md){if(md.length!==bt)Re(`function ${g} called with ${md.length} arguments, expected ${bt}`);ze.length=0;var pd;if(ue.length=T?2:1,ue[0]=P,T)pd=w[1].toWireType(ze,this),ue[1]=pd;for(var _s=0;_s<bt;++_s)jt[_s]=w[_s+2].toWireType(ze,md[_s]),ue.push(jt[_s]);var KP=E(...ue);function zP(DP){if(z)jb(ze);else for(var Bs=T?1:2;Bs<w.length;Bs++){var qP=Bs===1?pd:jt[Bs-2];if(w[Bs].destructorFunction!==null)w[Bs].destructorFunction(qP)}if(Q)return w[0].fromWireType(DP)}return zP(KP)};return ld(g,js)}var AO=(g,w,y)=>{if(g[w].overloadTable===void 0){var E=g[w];g[w]=function(...P){if(!g[w].overloadTable.hasOwnProperty(P.length))Re(`Function '${y}' called with an invalid number of arguments (${P.length}) - expects one of (${g[w].overloadTable})!`);return g[w].overloadTable[P.length].apply(this,P)},g[w].overloadTable=[],g[w].overloadTable[E.argCount]=E}},NO=(g,w,y)=>{if(n.hasOwnProperty(g)){if(y===void 0||n[g].overloadTable!==void 0&&n[g].overloadTable[y]!==void 0)Re(`Cannot register public name '${g}' twice`);if(AO(n,g,g),n.hasOwnProperty(y))Re(`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},TO=(g,w)=>{var y=[];for(var E=0;E<g;E++)y.push(at[w+E*4>>2]);return y},HO=(g,w,y)=>{if(!n.hasOwnProperty(g))Cb("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},LO=(g,w,y)=>{g=g.replace(/p/g,"i");var E=n["dynCall_"+g];return E(w,...y)},su=[],_b,Bb=(g)=>{var w=su[g];if(!w){if(g>=su.length)su.length=g+1;su[g]=w=_b.get(g)}return w},FO=(g,w,y=[])=>{if(g.includes("j"))return LO(g,w,y);var E=Bb(w)(...y);return E},CO=(g,w)=>(...y)=>FO(g,w,y),jO=(g,w)=>{g=on(g);function y(){if(g.includes("j"))return CO(g,w);return Bb(w)}var E=y();if(typeof E!="function")Re(`unknown function pointer with signature ${g}: ${w}`);return E},_O=(g,w)=>{var y=ld(w,function(E){this.name=w,this.message=E;var P=Error(E).stack;if(P!==void 0)this.stack=this.toString()+`
3
- `+P.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},Gb,Ub=(g)=>{var w=zb(g),y=on(w);return er(w),y},BO=(g,w)=>{var y=[],E={};function P(A){if(E[A])return;if(Pi[A])return;if(iu[A]){iu[A].forEach(P);return}y.push(A),E[A]=!0}throw w.forEach(P),new Gb(`${g}: `+y.map(Ub).join([", "]))},GO=(g)=>{g=g.trim();let w=g.indexOf("(");if(w!==-1)return g.substr(0,w);else return g},UO=(g,w,y,E,P,A,W)=>{var T=TO(w,y);g=on(g),g=GO(g),P=jO(E,P),NO(g,function(){BO(`Cannot call ${g} due to unbound types`,T)},w-1),kO([],T,(z)=>{var Q=[z[0],null].concat(z.slice(1));return HO(g,RO(g,Q,null,P,A,W),w-1),[]})},WO=(g,w,y)=>{switch(w){case 1:return y?(E)=>U[E]:(E)=>G[E];case 2:return y?(E)=>F[E>>1]:(E)=>gt[E>>1];case 4:return y?(E)=>Xt[E>>2]:(E)=>at[E>>2];default:throw TypeError(`invalid integer width (${w}): ${g}`)}},KO=(g,w,y,E,P)=>{if(w=on(w),P===-1)P=4294967295;var A=(bt)=>bt;if(E===0){var W=32-8*y;A=(bt)=>bt<<W>>>W}var T=w.includes("unsigned"),z=(bt,jt)=>{},Q;if(T)Q=function(bt,jt){return z(jt,this.name),jt>>>0};else Q=function(bt,jt){return z(jt,this.name),jt};Qn(g,{name:w,fromWireType:A,toWireType:Q,argPackAdvance:Ii,readValueFromPointer:WO(w,y,E!==0),destructorFunction:null})},zO=(g,w,y)=>{var E=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],P=E[w];function A(W){var T=at[W>>2],z=at[W+4>>2];return new P(U.buffer,z,T)}y=on(y),Qn(g,{name:y,fromWireType:A,argPackAdvance:Ii,readValueFromPointer:A},{ignoreDuplicateRegistrations:!0})},DO=(g,w,y,E)=>{if(!(E>0))return 0;var P=y,A=y+E-1;for(var W=0;W<g.length;++W){var T=g.charCodeAt(W);if(T>=55296&&T<=57343){var z=g.charCodeAt(++W);T=65536+((T&1023)<<10)|z&1023}if(T<=127){if(y>=A)break;w[y++]=T}else if(T<=2047){if(y+1>=A)break;w[y++]=192|T>>6,w[y++]=128|T&63}else if(T<=65535){if(y+2>=A)break;w[y++]=224|T>>12,w[y++]=128|T>>6&63,w[y++]=128|T&63}else{if(y+3>=A)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-P},qO=(g,w,y)=>DO(g,G,w,y),JO=(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},Wb=(g,w,y)=>{var E=w+y,P="";while(!(w>=E)){var A=g[w++];if(!A)return P;if(!(A&128)){P+=String.fromCharCode(A);continue}var W=g[w++]&63;if((A&224)==192){P+=String.fromCharCode((A&31)<<6|W);continue}var T=g[w++]&63;if((A&240)==224)A=(A&15)<<12|W<<6|T;else A=(A&7)<<18|W<<12|T<<6|g[w++]&63;if(A<65536)P+=String.fromCharCode(A);else{var z=A-65536;P+=String.fromCharCode(55296|z>>10,56320|z&1023)}}return P},YO=(g,w)=>g?Wb(G,g,w):"",VO=(g,w)=>{w=on(w);var y=w==="std::string";Qn(g,{name:w,fromWireType(E){var P=at[E>>2],A=E+4,W;if(y){var T=A;for(var z=0;z<=P;++z){var Q=A+z;if(z==P||G[Q]==0){var bt=Q-T,jt=YO(T,bt);if(W===void 0)W=jt;else W+=String.fromCharCode(0),W+=jt;T=Q+1}}}else{var ue=Array(P);for(var z=0;z<P;++z)ue[z]=String.fromCharCode(G[A+z]);W=ue.join("")}return er(E),W},toWireType(E,P){if(P instanceof ArrayBuffer)P=new Uint8Array(P);var A,W=typeof P=="string";if(!(W||P instanceof Uint8Array||P instanceof Uint8ClampedArray||P instanceof Int8Array))Re("Cannot pass non-string to std::string");if(y&&W)A=JO(P);else A=P.length;var T=hd(4+A+1),z=T+4;if(at[T>>2]=A,y&&W)qO(P,z,A+1);else if(W)for(var Q=0;Q<A;++Q){var bt=P.charCodeAt(Q);if(bt>255)er(z),Re("String has UTF-16 code units that do not fit in 8 bits");G[z+Q]=bt}else for(var Q=0;Q<A;++Q)G[z+Q]=P[Q];if(E!==null)E.push(er,T);return T},argPackAdvance:Ii,readValueFromPointer:ud,destructorFunction(E){er(E)}})},ZO=(g,w)=>{var y="";for(var E=0;!(E>=w/2);++E){var P=F[g+E*2>>1];if(P==0)break;y+=String.fromCharCode(P)}return y},XO=(g,w,y)=>{if(y??=2147483647,y<2)return 0;y-=2;var E=w,P=y<g.length*2?y/2:g.length;for(var A=0;A<P;++A){var W=g.charCodeAt(A);F[w>>1]=W,w+=2}return F[w>>1]=0,w-E},QO=(g)=>g.length*2,tP=(g,w)=>{var y=0,E="";while(!(y>=w/4)){var P=Xt[g+y*4>>2];if(P==0)break;if(++y,P>=65536){var A=P-65536;E+=String.fromCharCode(55296|A>>10,56320|A&1023)}else E+=String.fromCharCode(P)}return E},eP=(g,w,y)=>{if(y??=2147483647,y<4)return 0;var E=w,P=E+y-4;for(var A=0;A<g.length;++A){var W=g.charCodeAt(A);if(W>=55296&&W<=57343){var T=g.charCodeAt(++A);W=65536+((W&1023)<<10)|T&1023}if(Xt[w>>2]=W,w+=4,w+4>P)break}return Xt[w>>2]=0,w-E},nP=(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},rP=(g,w,y)=>{y=on(y);var E,P,A,W;if(w===2)E=ZO,P=XO,W=QO,A=(T)=>gt[T>>1];else if(w===4)E=tP,P=eP,W=nP,A=(T)=>at[T>>2];Qn(g,{name:y,fromWireType:(T)=>{var z=at[T>>2],Q,bt=T+4;for(var jt=0;jt<=z;++jt){var ue=T+4+jt*w;if(jt==z||A(ue)==0){var ze=ue-bt,js=E(bt,ze);if(Q===void 0)Q=js;else Q+=String.fromCharCode(0),Q+=js;bt=ue+w}}return er(T),Q},toWireType:(T,z)=>{if(typeof z!="string")Re(`Cannot pass non-string to C++ string type ${y}`);var Q=W(z),bt=hd(4+Q+w);if(at[bt>>2]=Q/w,P(z,bt+4,Q+w),T!==null)T.push(er,bt);return bt},argPackAdvance:Ii,readValueFromPointer:ud,destructorFunction(T){er(T)}})},iP=(g,w)=>{w=on(w),Qn(g,{isVoid:!0,name:w,argPackAdvance:0,fromWireType:()=>{return},toWireType:(y,E)=>{return}})},sP=(g,w,y)=>G.copyWithin(g,w,w+y),fd=[],oP=(g,w,y,E)=>{return g=fd[g],w=Ri.toValue(w),g(null,w,y,E)},aP={},cP=(g)=>{var w=aP[g];if(w===void 0)return on(g);return w},Kb=()=>{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.")},uP=(g)=>{if(g===0)return Ri.toHandle(Kb());else return g=cP(g),Ri.toHandle(Kb()[g])},lP=(g)=>{var w=fd.length;return fd.push(g),w},fP=(g,w)=>{var y=Pi[g];if(y===void 0)Re(`${w} has unknown type ${Ub(g)}`);return y},dP=(g,w)=>{var y=Array(g);for(var E=0;E<g;++E)y[E]=fP(at[w+E*4>>2],"parameter "+E);return y},hP=Reflect.construct,mP=(g,w,y)=>{var E=[],P=g.toWireType(E,y);if(E.length)at[w>>2]=Ri.toHandle(E);return P},pP=(g,w,y)=>{var E=dP(g,w),P=E.shift();g--;var A=Array(g),W=(z,Q,bt,jt)=>{var ue=0;for(var ze=0;ze<g;++ze)A[ze]=E[ze].readValueFromPointer(jt+ue),ue+=E[ze].argPackAdvance;var js=y===1?hP(Q,A):Q.apply(z,A);return mP(P,bt,js)},T=`methodCaller<(${E.map((z)=>z.name).join(", ")}) => ${P.name}>`;return lP(ld(T,W))},gP=(g)=>{if(g>9)tr[g+1]+=1},bP=(g)=>{var w=Ri.toValue(g);jb(w),cd(g)},wP=()=>{Pb("")},$P=()=>2147483648,kP=(g)=>{var w=C.buffer,y=(g-w.byteLength+65535)/65536;try{return C.grow(y),xn(),1}catch(E){}},yP=(g)=>{var w=G.length;g>>>=0;var y=$P();if(g>y)return!1;var E=(z,Q)=>z+(Q-z%Q)%Q;for(var P=1;P<=4;P*=2){var A=w*(1+0.2/P);A=Math.min(A,g+100663296);var W=Math.min(y,E(Math.max(g,A),65536)),T=kP(W);if(T)return!0}return!1},dd={},vP=()=>l||"./this.program",ha=()=>{if(!ha.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,_:vP()};for(var y in dd)if(dd[y]===void 0)delete w[y];else w[y]=dd[y];var E=[];for(var y in w)E.push(`${y}=${w[y]}`);ha.strings=E}return ha.strings},SP=(g,w)=>{for(var y=0;y<g.length;++y)U[w++]=g.charCodeAt(y);U[w]=0},EP=(g,w)=>{var y=0;return ha().forEach((E,P)=>{var A=w+y;at[g+P*4>>2]=A,SP(E,A),y+=E.length+1}),0},MP=(g,w)=>{var y=ha();at[g>>2]=y.length;var E=0;return y.forEach((P)=>E+=P.length+1),at[w>>2]=E,0},xP=0,OP=()=>pO||xP>0,PP=(g)=>{if(j=g,!OP())n.onExit?.(g),I=!0;d(g,new mO(g))},IP=(g,w)=>{j=g,PP(g)},RP=IP,AP=(g)=>52,NP=(g,w)=>w+2097152>>>0<4194305-!!g?(g>>>0)+w*4294967296:NaN;function TP(g,w,y,E,P){var A=NP(w,y);return 70}var HP=[null,[],[]],LP=(g,w)=>{var y=HP[g];if(w===0||w===10)(g===1?x:M)(Wb(y,0)),y.length=0;else y.push(w)},FP=(g,w,y,E)=>{var P=0;for(var A=0;A<y;A++){var W=at[w>>2],T=at[w+4>>2];w+=8;for(var z=0;z<T;z++)LP(g,G[W+z]);P+=T}return at[E>>2]=P,0};$O(),Lb=n.BindingError=class extends Error{constructor(w){super(w);this.name="BindingError"}},Fb=n.InternalError=class extends Error{constructor(w){super(w);this.name="InternalError"}},EO(),Gb=n.UnboundTypeError=_O(Error,"UnboundTypeError");var CP={o:bO,q:wO,m:vO,l:xO,j:PO,f:UO,b:KO,a:zO,e:VO,c:rP,n:iP,v:sP,i:oP,d:cd,k:uP,h:pP,y:gP,g:bP,r:wP,s:yP,t:EP,u:MP,z:RP,w:AP,p:TP,x:FP},ce=hO(),jP=()=>(jP=ce.B)(),zb=(g)=>(zb=ce.C)(g),hd=(g)=>(hd=ce.D)(g),er=(g)=>(er=ce.E)(g),_P=(g)=>(_P=ce._emscripten_stack_restore)(g),BP=(g)=>(BP=ce._emscripten_stack_alloc)(g),GP=()=>(GP=ce.emscripten_stack_get_current)(),UP=(g)=>(UP=ce.__cxa_increment_exception_refcount)(g),Db=(g)=>(Db=ce.G)(g),WP=n.dynCall_jiji=(g,w,y,E,P)=>(WP=n.dynCall_jiji=ce.H)(g,w,y,E,P),ou;da=function g(){if(!ou)qb();if(!ou)da=g};function qb(){if(xi>0)return;if(rd(),xi>0)return;function g(){if(ou)return;if(ou=!0,n.calledRun=!0,I)return;if(id(),r(n),n.onRuntimeInitialized)n.onRuntimeInitialized();iO()}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 qb(),s}})(),t0=PR;function Fd(t){let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=t[0]===73&&t[1]===73;if(t.length<8||!n&&(t[0]!==77||t[1]!==77))return 1;let r=e.getUint32(4,n);if(r+2>t.length)return 1;for(let i=r+2,s=e.getUint16(r,n);s>0&&i+12<=t.length;s--,i+=12)if(e.getUint16(i,n)===274){let o=e.getUint16(i+8,n);return o>=1&&o<=8?o:1}return 1}function Cd(t){if(t[0]!==255||t[1]!==216)return null;let e=1,n=2;while(n+9<t.length){if(t[n]!==255){n++;continue}let r=t[n+1];if(r===255){n++;continue}let i=t[n+2]<<8|t[n+3];if(r===225&&String.fromCharCode(...t.subarray(n+4,n+10))==="Exif\x00\x00")e=Fd(t.subarray(n+10,Math.min(t.length,n+2+i)));if(r>=192&&r<=207&&r!==196&&r!==200&&r!==204){let s=t[n+5]<<8|t[n+6],o=t[n+7]<<8|t[n+8];return e>=5?{width:s,height:o}:{width:o,height:s}}n+=2+i}return null}var Ld;function RR(){if(Ld)return Ld;let t=new WebAssembly.Module(IR(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(t0(e),typeof e.decode!=="function")throw Error("the JPEG decoder did not start");return Ld=e,e}function e0(t,e){let n=Cd(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);let r=null;try{r=RR().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 qs=[137,80,78,71,13,10,26,10],s0=13,wa=3;function _r(t){return t.length>=qs.length&&qs.every((e,n)=>t[n]===e)}var o0={0:1,2:3,3:1,4:2,6:4};function a0(t){if(t.length<33||!_r(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||o0[i]===void 0)return;let s=[],o,a;for(let c=8;c+12<=e.length;){let u=e.readUInt32BE(c),f=e.toString("latin1",c+4,c+8),l=e.subarray(c+8,c+8+u);if(f==="IDAT")s.push(l);else if(f==="PLTE")o=l;else if(f==="tRNS"){if(i!==wa)return;a=l}else if(f==="IEND")break;c+=12+u}if(s.length===0||i===wa&&!o)return;return{width:n,height:r,type:i,idat:s,palette:o,opacity:a}}function HR(t,e){let n=new Uint32Array(256),r=new Uint8Array(n.buffer);for(let i=0;i<256;i++)r[i*4]=t[i*3]??0,r[i*4+1]=t[i*3+1]??0,r[i*4+2]=t[i*3+2]??0,r[i*4+3]=e?.[i]??255;return n}function LR(t,e,n,r){let i=new Uint8Array(e);for(let s=0;s<n;s++){let o=s*(e+1),a=t[o],c=o+1,u=s>0?t:i,f=s>0?c-e-1:0;if(a===1)for(let l=r;l<e;l++)t[c+l]=t[c+l]+t[c+l-r];else if(a===2)for(let l=0;l<e;l++)t[c+l]=t[c+l]+u[f+l];else if(a===3){for(let l=0;l<r;l++)t[c+l]=t[c+l]+(u[f+l]>>1);for(let l=r;l<e;l++)t[c+l]=t[c+l]+(t[c+l-r]+u[f+l]>>1)}else if(a===4){for(let l=0;l<r;l++)t[c+l]=t[c+l]+u[f+l];for(let l=r;l<e;l++){let d=t[c+l-r],h=u[f+l],m=u[f+l-r],p=Math.abs(h-m),b=Math.abs(d-m),$=Math.abs(d+h-2*m);t[c+l]=t[c+l]+(p<=b&&p<=$?d:b<=$?h:m)}}else if(a!==0)throw Error(`bad PNG filter ${a}`)}}function FR(t){let{width:e,height:n,type:r}=t,i=o0[r],s=e*i,o=TR(Buffer.concat(t.idat),{chunkSize:Math.min(268435456,Math.max(65536,n*(s+1)))});if(o.length<n*(s+1))throw Error("truncated PNG");LR(o,s,n,i);let a=new Uint8Array(e*n*4),c=r===wa?HR(t.palette,t.opacity):void 0,u=new Uint32Array(a.buffer);for(let f=0;f<n;f++){let l=f*(s+1)+1,d=f*e*4;if(c)for(let h=0,m=f*e;h<e;h++,m++)u[m]=c[o[l+h]];else if(r===6)a.set(o.subarray(l,l+s),d);else if(r===2)for(let h=0,m=l,p=d;h<e;h++,m+=3,p+=4)a[p]=o[m],a[p+1]=o[m+1],a[p+2]=o[m+2],a[p+3]=255;else if(r===0)for(let h=0,m=d;h<e;h++,m+=4){let p=o[l+h];a[m]=p,a[m+1]=p,a[m+2]=p,a[m+3]=255}else for(let h=0,m=l,p=d;h<e;h++,m+=2,p+=4){let b=o[m];a[p]=b,a[p+1]=b,a[p+2]=b,a[p+3]=o[m+1]}}return{width:e,height:n,data:a}}function jd(t){let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength);for(let n=8;n+12<=e.length;){let r=e.readUInt32BE(n),i=e.toString("latin1",n+4,n+8);if(i==="eXIf")return Fd(e.subarray(n+8,Math.min(e.length,n+8+r)));if(i==="IDAT"||i==="IEND")return 1;n+=12+r}return 1}function n0(t,e){if(e<=1)return t;let{width:n,height:r}=t,i=e>=5?r:n,s=e>=5?n:r,o=new Uint32Array(t.data.buffer,t.data.byteOffset,n*r),a=new Uint8Array(i*s*4),c=new Uint32Array(a.buffer);for(let u=0;u<s;u++)for(let f=0;f<i;f++){let l=e<=3&&e>=2?n-1-f:e===5||e===6?u:e>=7?n-1-u:f,d=e===3||e===4?r-1-u:e===5||e===8?f:e>=6?r-1-f:u;c[u*i+f]=o[d*n+l]}return{width:i,height:s,data:a}}function Wt(t){let e=a0(t);if(e)return n0(FR(e),jd(t));let n=i0.PNG.sync.read(Buffer.from(t));return n0({width:n.width,height:n.height,data:new Uint8Array(n.data)},jd(t))}function An(t,e){if(_r(t)){let n=Nn(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);return Wt(t)}if(t[0]===255&&t[1]===216)return e0(t,e);throw Error("not a PNG or JPEG image")}function _d(t,e,n){let{width:r,height:i,at:s}=e,o=Math.max(0,s.x),a=Math.max(0,s.y),c=Math.min(r,s.x+s.w),u=Math.min(i,s.y+s.h);if(c<=o||u<=a)return;let f={x:o,y:a,w:c-o,h:u-a};if(s.w===t.width&&s.h===t.height)return{part:t,box:f,dx:o-s.x,dy:a-s.y};let l={x:(o-s.x)*t.width/s.w,y:(a-s.y)*t.height/s.h,w:f.w*t.width/s.w,h:f.h*t.height/s.h};return{part:n(t,l,f.w,f.h),box:f,dx:0,dy:0}}function c0(t,e){let n=new Uint8Array(e.width*e.height*4),r=_d(t,e,Gr);if(r){let{part:i,box:s,dx:o,dy:a}=r;for(let c=0;c<s.h;c++){let u=((c+a)*i.width+o)*4;n.set(i.data.subarray(u,u+s.w*4),((s.y+c)*e.width+s.x)*4)}}return{width:e.width,height:e.height,data:n}}function u0(t,e){let n=new Uint8Array(e.width*e.height),r=_d(t,e,(i,s,o,a)=>Js(Gd(i,s,o,a)));if(r){let{part:i,box:s,dx:o,dy:a}=r;for(let c=0;c<s.h;c++){let u=(c+a)*i.width+o;n.set(i.data.subarray(u,u+s.w),(s.y+c)*e.width+s.x)}}return{width:e.width,height:e.height,data:n}}function Br(t,e,n,r={width:t.width,height:t.height,at:{x:0,y:0,w:t.width,h:t.height}}){let i=ct(e),{width:s,height:o}=r,a=new Uint8Array(s*o*3);for(let h=0;h<s*3;h+=3)a.set(i,h);for(let h=1;h<o;h++)a.copyWithin(h*s*3,0,s*3);let c=_d(t,r,Gr);if(!c)return{width:s,height:o,data:a};let{part:u,box:f,dx:l,dy:d}=c;for(let h=0;h<f.h;h++)for(let m=0;m<f.w;m++){let p=((h+d)*u.width+m+l)*4,b=((f.y+h)*s+f.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:s,height:o,data:a}}function r0(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 Nn(t){if(t.length<33||!_r(t))return null;let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=jd(t)>=5,r=e.getUint32(n?20:16),i=e.getUint32(n?16:20);if(t[25]===4||t[25]===6)return{width:r,height:i,alpha:!0};let s=r0(t,"IDAT");return{width:r,height:i,alpha:r0(s===-1?t:t.subarray(0,s),"tRNS")!==-1}}function l0(t,e=s0){let{width:n,height:r,data:i}=t,s=(f)=>{for(let l=f*n*4+3,d=l+n*4;l<d;l+=4)if(i[l]>=e)return!0;return!1},o=0;while(o<r&&!s(o))o++;if(o===r)return null;let a=r-1;while(!s(a))a--;let c=n,u=-1;for(let f=o;f<=a;f++){let l=f*n*4+3;for(let d=0;d<c;d++)if(i[l+d*4]>=e){c=d;break}for(let d=n-1;d>u;d--)if(i[l+d*4]>=e){u=d;break}}return{x:c,y:o,w:u-c+1,h:a-o+1}}function or(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)<s0)n++;return Math.round(n*100/(e.w*e.h))}function f0(t,e,n){let r=Math.min(e/t.width,n/t.height),i=Math.max(1,Math.round(t.width*r)),s=Math.max(1,Math.round(t.height*r)),o=Gr(t,{x:0,y:0,w:t.width,h:t.height},i,s),a=new Uint8Array(e*n*4),c=Math.floor((e-i)/2),u=Math.floor((n-s)/2);for(let f=0;f<s;f++)a.set(o.data.subarray(f*i*4,(f+1)*i*4),((u+f)*e+c)*4);return{width:e,height:n,data:a}}function CR(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 Bd(t,e,n,r){if(n===r&&Number.isInteger(e)&&e>=0&&e+r<=t)return{first:Int32Array.from({length:r},(f,l)=>e+l),size:1,weights:new Float32Array(r).fill(1)};let i=n/r,s=Math.max(1,i),o=2*s,a=Math.min(t,Math.ceil(2*o)+2),c=new Int32Array(r),u=new Float32Array(r*a);for(let f=0;f<r;f++){let l=e+(f+0.5)*i,d=Math.floor(l-o-0.5),h=Math.max(0,Math.min(t-a,d));c[f]=h;let m=0;for(let p=d;p<=Math.ceil(l+o-0.5);p++){let b=CR((p+0.5-l)/s),$=f*a+Math.min(t-1,Math.max(0,p))-h;u[$]=(u[$]??0)+b,m+=b}for(let p=f*a;p<(f+1)*a;p++)u[p]=(u[p]??0)/m}return{first:c,size:a,weights:u}}function d0(t,e,n,r,i,s,o){let a=Bd(t,e.y,e.h,r),c=n*i,u=a.size+1,f=Array.from({length:u},()=>new Float32Array(c)),l=new Int32Array(u).fill(-1),d=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 S=a.weights[p*a.size+k];if(S===0)continue;let v=b+k,x=v%u,M=f[x];if(l[x]!==v)s(v,M),l[x]=v;h.push(M),m.push(S)}let $=0;while($<h.length){let k=h[$],S=m[$];if(h.length-$>=4){let v=h[$+1],x=h[$+2],M=h[$+3],N=m[$+1],C=m[$+2],I=m[$+3];if($===0)for(let j=0;j<c;j++)d[j]=k[j]*S+v[j]*N+x[j]*C+M[j]*I;else for(let j=0;j<c;j++)d[j]=d[j]+(k[j]*S+v[j]*N+x[j]*C+M[j]*I);$+=4}else{if($===0)for(let v=0;v<c;v++)d[v]=k[v]*S;else for(let v=0;v<c;v++)d[v]=d[v]+k[v]*S;$+=1}}if(h.length===0)d.fill(0);o(p,d)}}function h0(t,e,n,r,i){let s=0,o=n;while(s<o){let c=s+o>>1;if(t[c]+e-1<r)s=c+1;else o=c}let a=s;o=n;while(s<o){let c=s+o>>1;if(t[c]<=i)s=c+1;else o=c}return[a,s]}function Gr(t,e,n,r){let i=Bd(t.width,e.x,e.w,n),s=t.data,o=t.width,a=new Float32Array(o*4),c=new Uint8Array(n*r*4);return d0(t.height,e,n,r,4,(u,f)=>{let l=u*o*4,d=o,h=-1;for(let b=0,$=0;b<o*4;b+=4,$++){let k=s[l+b+3];if(k===0){a[b]=0,a[b+1]=0,a[b+2]=0,a[b+3]=0;continue}if($<d)d=$;h=$,a[b]=s[l+b]*k,a[b+1]=s[l+b+1]*k,a[b+2]=s[l+b+2]*k,a[b+3]=k}if(f.fill(0),h<0)return;let[m,p]=h0(i.first,i.size,n,d,h);for(let b=m;b<p;b++){let $=i.first[b]*4,k=b*i.size,S=0,v=0,x=0,M=0;for(let N=0;N<i.size;N++){let C=i.weights[k+N],I=$+N*4;S+=a[I]*C,v+=a[I+1]*C,x+=a[I+2]*C,M+=a[I+3]*C}f[b*4]=S,f[b*4+1]=v,f[b*4+2]=x,f[b*4+3]=M}},(u,f)=>{let l=u*n*4;for(let d=0;d<n;d++){let h=d*4,m=f[h+3];if(m<=0)continue;let p=f[h]/m;c[l+h]=(p<0?0:p>255?255:p)+0.5,p=f[h+1]/m,c[l+h+1]=(p<0?0:p>255?255:p)+0.5,p=f[h+2]/m,c[l+h+2]=(p<0?0:p>255?255:p)+0.5,c[l+h+3]=(m>255?255:m)+0.5}}),{width:n,height:r,data:c}}function Gd(t,e,n,r){let i=Bd(t.width,e.x,e.w,n),s=t.data,o=t.width,a=new Float32Array(n*r);return d0(t.height,e,n,r,1,(c,u)=>{let f=c*o,l=o,d=-1;for(let p=0;p<o;p++)if(s[f+p]!==0){if(p<l)l=p;d=p}if(u.fill(0),d<0)return;let[h,m]=h0(i.first,i.size,n,l,d);for(let p=h;p<m;p++){let b=f+i.first[p],$=p*i.size,k=0;for(let S=0;S<i.size;S++)k+=s[b+S]*i.weights[$+S];u[p]=k}},(c,u)=>{a.set(u,c*n)}),{width:n,height:r,data:a}}function $a(t,e){if(e<=0)return t;let n=Math.max(1,Math.ceil(e*3)),r=Array.from({length:2*n+1},(f,l)=>Math.exp(-((l-n)**2)/(2*e*e))),i=r.reduce((f,l)=>f+l,0),{width:s,height:o,data:a}=t,c=new Float32Array(s*o);for(let f=0;f<o;f++){let l=f*s;for(let d=0;d<s;d++){let h=0;for(let m=-n;m<=n;m++)h+=(a[l+Math.min(s-1,Math.max(0,d+m))]??0)*(r[m+n]??0);c[l+d]=h/i}}let u=new Float32Array(s*o);for(let f=0;f<o;f++){let l=f*s;for(let d=-n;d<=n;d++){let h=(r[d+n]??0)/i,m=Math.min(o-1,Math.max(0,f+d))*s;for(let p=0;p<s;p++)u[l+p]=(u[l+p]??0)+(c[m+p]??0)*h}}return{width:s,height:o,data:u}}function Js(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 ar(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 jR=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 _R(t){let e=4294967295;for(let n of t)e=(jR[(e^n)&255]??0)^e>>>8;return(e^4294967295)>>>0}function jr(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(_R(n.subarray(4,8+e.length)),8+e.length),n}function m0(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 s=i*(e+1),o=i*e,a=o-e;r[s]=2;for(let c=0;c<e;c++)r[s+1+c]=t[o+c]-t[a+c]}return r}function p0(t){return NR(t,{level:1,strategy:AR.Z_RLE})}function g0(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(qs),jr("IHDR",r),...n,jr("IDAT",p0(m0(t.data,t.width,t.height))),jr("IEND",new Uint8Array)])}function b0(t){let[e,n,r]=ct(t),i=new Uint8Array(768);for(let s=0;s<256;s++)i.set([e,n,r],s*3);return jr("PLTE",i)}function w0(t,e,n,r,i){let s=Buffer.alloc(13);return s.writeUInt32BE(t,0),s.writeUInt32BE(e,4),s[8]=8,s[9]=n,Buffer.concat([Buffer.from(qs),jr("IHDR",s),jr("IDAT",p0(m0(i,t*r,e))),jr("IEND",new Uint8Array)])}function Ur(t){return w0(t.width,t.height,2,3,t.data)}function qe(t){return w0(t.width,t.height,6,4,t.data)}function cr(t,e){return g0(t,wa,[b0(e),jr("tRNS",Uint8Array.from({length:256},(n,r)=>r))])}function Ud(t){return g0(t,0,[])}function $0(t){let e=a0(t)?.palette;if(!e||e.length<3)return;for(let n=3;n+2<e.length;n+=3)if(e[n]!==e[0]||e[n+1]!==e[1]||e[n+2]!==e[2])return;return`#${[...e.subarray(0,3)].map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function lu(t,e){if(!_r(t)||t[25]!==wa)return;let n=Buffer.from(t.buffer,t.byteOffset,t.byteLength),r=[Buffer.from(qs)],i=qs.length;while(i+8<=n.length){let s=i+12+n.readUInt32BE(i);r.push(n.toString("latin1",i+4,i+8)==="PLTE"?b0(e):n.subarray(i,s)),i=s}return Buffer.concat(r)}var Tn=100,fe=25000000,DR=536870912,Ys=["safe","questionable","explicit"],Hi=["nudity","underwear"],Dd=["comic","monochrome","sketch","chibi"],P0=["off","5","10","25","50","100"],I0=["off","720","1080","1440","1800","2560"],R0={nudity:new Set(["nude","naked","topless","bottomless","nipples","naked_towel","undressing"]),underwear:new Set(["underwear","panties","pantsu","bra","lingerie","pantyshot"])},qR={comic:new Set(["comic","4koma"]),monochrome:new Set(["monochrome","greyscale"]),sketch:new Set(["sketch","lineart","line_art"]),chibi:new Set(["chibi"])},JR=/^(?:rating|score|width|height|filetype|dimension):/,ka={safe:"s",questionable:"q",explicit:"e"},A0=8191,YR=20000,N0=5000,k0=3000,y0=8,VR=8,ZR=8000,XR=3000,T0=60000,v0=3,QR=3,tA="https://static.zerochan.net",H0="https://s1.zerochan.net",qd=`ttheme/${dt.version} (+${dt.homepage})`,eA=["orig","tile","thumb","cut"],L0=new Map,nA=$A(process.env.TTHEME_FIND_HOSTS),rA=wA(process.env.TTHEME_FIND_CUTOUTS);WR(XR);var iA=["artist","character","copyright"];function S0(t){try{return BR(t)}catch{return[]}}function Vs(t){return t.startsWith("//")?`https:${t}`:t}function Wr(t){return(/\.([a-z0-9]+)(?:\?.*)?$/i.exec(t)?.[1]??"").toLowerCase()}function Zs(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 sA(t){let e=t.trim(),r=(e?JSON.parse(e):{}).tags??{};return new Map(Object.entries(r).map(([i,s])=>[i,String(s)]))}function Kd(t,e,n){let r=Vs(String(t??""));return{file:r,width:Number(e)||0,height:Number(n)||0,ext:Wr(r)}}function ur(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 F0(t,e){let n=Vs(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:ur(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((s)=>s.file&&s.width>0&&s.height>0&&s.width*s.height<r*i)}]}function oA(t){let e=sA(t);return Zs(t).flatMap((n)=>{let r=Vs(String(n.file_url??"")),i=String(n.tags??""),s=(o)=>ur(i).filter((a)=>e.get(a)===o);return F0(n,{preview:n.preview_url,file:r,ext:String(n.file_ext||Wr(r)).toLowerCase(),owner:n.author,md5:n.md5,tags:i,named:{artist:s("artist"),character:s("character"),copyright:s("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 aA(t){return Zs(t).flatMap((e)=>{let n=Vs(String(e.file_url??"")),r=String(e.tag_string??""),i=e.media_asset??{};return F0(e,{preview:i.variants?.find((s)=>s.type==="360x360")?.url??e.preview_file_url,file:n,ext:String(e.file_ext||Wr(n)).toLowerCase(),owner:"",md5:e.md5,tags:r,named:{artist:ur(e.tag_string_artist),character:ur(e.tag_string_character),copyright:ur(e.tag_string_copyright)},solo:r.split(/\s+/).includes("solo"),versions:(i.variants??[]).map((s)=>Kd(s.url,s.width,s.height)).filter((s)=>s.ext==="jpg"||s.ext==="png").sort((s,o)=>o.width*o.height-s.width*s.height)})})}function C0(t){return t.toLowerCase().replace(/\s+/g,"_")}function cA(t){return(Array.isArray(t)?t:[]).map((e)=>C0(String(e)))}function uA(t){return String(t??"").replace(/[^0-9a-z]+/gi,".").replace(/^\.+|\.+$/g,"")||"zerochan"}function lA(t){let e=t.trim(),n=e?JSON.parse(e):{};return(Array.isArray(n.items)?n.items:n.id?[n]:[]).flatMap((i)=>{let s=Number(i.id);if(!s)return[];let o=cA(i.tags),a=Vs(String(i.full??""));return[{id:s,width:Number(i.width)||0,height:Number(i.height)||0,file:a,ext:Wr(a),preview:`${H0}/${uA(i.tag??i.primary)}.600.${s}.jpg`,owner:"",score:0,rating:o.some((c)=>R0.nudity.has(c))?"q":"g",md5:String(i.md5??i.hash??""),source:String(i.source??""),tags:o,named:{artist:[],character:[],copyright:[]},solo:o.includes("solo"),family:0,smaller:[]}]})}var fA={mangaka:"artist",studio:"artist",character:"character",series:"copyright",game:"copyright"};function E0(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 dA(t){let e={artist:[],character:[],copyright:[]};for(let[,r,i]of t.matchAll(/<li class="([a-z]+)[^"]*"[^>]*\bdata-tag="([^"]*)"/g)){let s=fA[r],o=C0(E0(i));if(s&&!e[s].includes(o))e[s].push(o)}let n=zd(/"datePublished":\s*"([^"]+)"/.exec(t)?.[1]);return{named:e,source:"",owner:E0(/\buploader = \{\s*name: '([^']*)'/.exec(t)?.[1]??""),...n?{posted:n}:{}}}function hA(t){return Number(/Zerochan has ([\d,]+) /.exec(t)?.[1]?.replace(/,/g,"")??0)}function mA(t){return Zs(t).flatMap((e)=>{let n=String(e.value??"");return n?[{value:n,count:Number(e.post_count)||0}]:[]})}function pA(t){return Zs(t).flatMap((e)=>{let n=String(e.name??"");return n?[{value:n,count:Number(e.count)||0}]:[]})}function gA(t){return Number(/count="(\d+)"/.exec(t)?.[1]??0)}function bA(t){let n=(t.trim()?JSON.parse(t):{}).counts?.posts;return n===null?Number.NaN:Number(n)||0}function wA(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 $A(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 s=new URL(n.slice(r+1));if(i&&s.protocol==="https:")e.set(i,s.origin)}catch{}}return e}function fu(t,e,n,r){let i=(t??"").split(/\s+/);if(r!==void 0&&i.includes(r))return[];let s=e.filter((o)=>i.includes(o));return s.length>0?s:[...n]}function Li(t){return fu(t,Ys,["safe"])}function Xs(t){return fu(t,Hi,Hi,"none")}function du(t){return fu(t,Dd,[],"none")}function va(t){let e=Z.map((n)=>n.name);return fu(t,e,e)}function Jd(t,e,n){return{score:Number(t)||0,size:Number(e)||0,png:n==="on"}}function Sa(t){return[...new Set((t??"").toLowerCase().split(/[\s,]+/).map((e)=>e.replace(/^-+/,"")).filter(Boolean))]}function Yd(t,e,n){return{safe:new Set(t),questionable:new Set(e),explicit:new Set(n)}}function Vd(t){let e=nA.get(t.key),n=rA.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 j0(t){return t.length<2?t.join(""):t.map((e)=>`~${e}`).join(" ")}function _0(t){return t>0?[`width:>=${t}`,`height:>=${t}`]:[]}function M0(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}`]:[],..._0(i)],cutouts:j0(e.cutouts),ratings:Yd([ka.safe],[ka.questionable],[ka.explicit]),rate:(r)=>{let[i]=r;if(r.length===1&&i)return`rating:${ka[i]}`;let s=Ys.filter((a)=>!r.includes(a)),[o]=s;return s.length===1&&o?`-rating:${ka[o]}`:""},best:"order:score",tagBudget:Number.POSITIVE_INFINITY,ors:!0,postsUrl:(r,i)=>`${e.origin}/post.json?${n({limit:String(Tn),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:oA,count:gA,uploadedBy:(r)=>`user:${r}`}}function kA(t){let e=Vd(t),n=Yd(["g"],["s","q"],["e"]);return{...e,scored:!0,narrow:({score:r,size:i,png:s})=>[...r>0?[`score:>=${r}`]:[],..._0(i),...s?["filetype:png"]:[]],cutouts:j0(e.cutouts),ratings:n,rate:(r)=>r.length===Ys.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(Tn),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:aA,count:bA,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 x0(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 yA(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:Yd(["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(Tn),p:String(r+1),...x0(n)})}`,countUrl:(n)=>`${e.origin}/${Wd(n)}?${new URLSearchParams({xml:"",l:"1"})}`,postUrl:(n)=>`${e.origin}/${n}?json=`,pageUrl:(n)=>`${e.origin}/${n}`,parse:lA,count:hA,credits:dA,counts:(n)=>Wd(n).split(",").length===1&&!("d"in x0(n)),guesses:(n)=>(n.tags.includes("transparent_background")?["png","jpg"]:["jpg","png"]).map((r)=>n.preview.replace(H0,tA).replace(/\.600\.(\d+)\.jpg$/,`.full.$1.${r}`))}}function vA(t){let e=O0(`https://${t}`);return Z.find((n)=>O0(n.origin)===e)}function Zd(t){return t.split(/\s+/).filter((e)=>e&&!JR.test(e)).length}function hu(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=Z.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 s=vA(i.host),o=Number(i.searchParams.get("id")??i.pathname.split("/").findLast(Boolean));return s&&o>0?{site:s,id:o}:void 0}var Z=[kA({key:"danbooru",name:"danbooru",origin:"https://shima.donmai.us",cutouts:["transparent_background"],vouched:!1,ansi:2}),M0({key:"konachan",name:"konachan",origin:"https://konachan.net",cutouts:["transparent","vector"],vouched:!1,ansi:6}),M0({key:"yande",name:"yande.re",origin:"https://yande.re",cutouts:["transparent_png"],vouched:!0,ansi:5}),yA({key:"zerochan",name:"zerochan",origin:"https://www.zerochan.net",cutouts:["transparent_background"],vouched:!1,ansi:3})],Pt=Z.find((t)=>t.key==="danbooru"),Kr=134217728;function ee(t,e){let n=Z.indexOf(t);return(n===-1?Z.length:n)*Kr+e}function O0(t){let e;try{e=new URL(t).hostname}catch{return""}return e.split(".").slice(-2).join(".")}function zr(t,e,n=e){return e.mirror&&n===e?{site:Pt,url:e.mirror.file}:{site:t,url:n.file}}function mu(t,e){return e.mirror?{site:Pt,url:e.mirror.preview}:{site:t,url:e.preview}}function pu(t,e=Hi){return t.tags.filter((n)=>e.some((r)=>R0[r].has(n)))}function B0(t,e){return t.tags.filter((n)=>e.some((r)=>qR[r].has(n)))}function gu(t,e,n=["safe"]){return n.some((r)=>t.ratings[r].has(e.rating))}function G0(t,e){return t.rate(["safe"])===""?void 0:Ys.find((n)=>t.ratings[n].has(e.rating))}function ln(t){return[t,...t.smaller].find((e)=>e.width*e.height<=fe)}function U0(t){let e=new Map;for(let[n,r]of[...t].sort(([i],[s])=>i<s?-1:1)){if(r==="")continue;e.set(r,[...e.get(r)??[],n])}return e}function Ln(){return ya(process.env.XDG_CACHE_HOME??ya(KR(),".cache"),"ttheme")}function fn(t){return ya(Ln(),t.key)}function W0(t=DR,e=Ln()){let n=[],r=0;for(let i of S0(e))for(let s of eA){let o=ya(e,i,s);for(let a of S0(o)){let c=ya(o,a);try{let{size:u,mtimeMs:f}=UR(c);n.push({path:c,size:u,at:f}),r+=u}catch{}}}n.sort((i,s)=>i.at-s.at);for(let i of n){if(r<=t)return;try{GR(i.path,{force:!0}),r-=i.size}catch{}}}function SA(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)?T0:Math.max(0,n-e)}function Hn(t){return L0.get(t.key)??0}function EA(t){for(let e=t;e instanceof Error;e=e.cause)if(e.code==="ECONNRESET")return!0;return!1}function MA(t){return(t.headers.get("server")??"").startsWith("cloudflare")&&t.headers.get("cf-mitigated")==="challenge"}function xA(t,e){let n=new URL(e,t);if(!n.search)n.search=new URL(t).search;return n.href}async function lr(t,e,n,r={},i=YR){let s=e;for(let o=1,a=0;;o++){let c=Hn(t)-Date.now();if(c>0)await zR(c,void 0,{signal:n});let u;try{u=await fetch(s,{headers:{"User-Agent":qd,Referer:`${t.origin}/`,...r},redirect:"manual",signal:i?AbortSignal.any([n,AbortSignal.timeout(i)]):n})}catch(l){if(o<v0&&!n.aborted&&EA(l))continue;throw l}let f=u.headers.get("location");if(f&&u.status>=300&&u.status<400&&a<QR){await u.body?.cancel(),s=xA(s,f),a++,o--;continue}if(u.status===429&&o<v0){await u.body?.cancel();let l=SA(u.headers.get("retry-after"),Date.now());if(l>T0)throw Error(`${t.name} asks to wait ${Math.ceil(l/1000)}s`);L0.set(t.key,Math.max(Hn(t),Date.now()+l));continue}if(!u.ok)throw await u.body?.cancel(),Object.assign(Error(MA(u)?`${t.name} is behind a Cloudflare challenge`:`${t.name} answered ${u.status}`),{status:u.status});return u}}async function bu(t,e,n){try{return await(await lr(t,e,n)).text()}catch(r){if(t.missing!==void 0&&r.status===t.missing)return"";throw r}}async function K0(t,e,n,r){return t.parse(await bu(t,t.postsUrl(e,n),r))}async function Xd(t,e,n){return t.count(await bu(t,t.countUrl(e),n))}async function Fi(t,e,n){let[r]=t.parse(await bu(t,t.postUrl(e),n));return r}async function Ea(t,e,n){return t.credits?.(await bu(t,t.pageUrl(e),n))}var OA=/^https?:\/\/(?:i\.pximg\.net|i\d*\.pixiv\.net|img\d*\.pixiv\.net)\/\S*\/(\d+)(?:_p\d+)?(?:_\w+)?\.\w+(?:[?#]\S*)?$/i,PA=/^https?:\/\/(?:www\.)?pixiv\.net\/member_illust\.php\?\S*\billust_id=(\d+)/i;function Ci(t){let e=OA.exec(t)?.[1]??PA.exec(t)?.[1];return e?`https://www.pixiv.net/artworks/${e}`:t}function Ma(t,e){return t.credits!==void 0&&e.named.artist.length===0}function Qs(t,e){for(let n of iA){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 IA(t){let e=new URLSearchParams({limit:String(2*Tn),only:"md5,tag_string,tag_string_artist,tag_string_character,tag_string_copyright,source,file_url",tags:`md5:${t.join(",")}`});return`${Pt.origin}/posts.json?${e}`}function RA(t){return new Map(Zs(t).flatMap((e)=>{let n=String(e.md5??"");return n?[[n,{tags:ur(e.tag_string),named:{artist:ur(e.tag_string_artist),character:ur(e.tag_string_character),copyright:ur(e.tag_string_copyright)},source:String(e.source??""),file:Vs(String(e.file_url??""))}]]:[]}))}function xa(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=Wr(r.file)}}}async function Oa(t,e){let n=new Map;if(Hn(Pt)>Date.now())return n;for(let r=0;r<t.length;r+=Tn){let i=await(await lr(Pt,IA(t.slice(r,r+Tn)),e,{},N0)).text();for(let[s,o]of RA(i))n.set(s,o)}return n}function AA(t){let e=new URLSearchParams([...t.map((n)=>["search[name_array][]",n]),["only","name,is_deleted,urls"],["limit",String(t.length)]]);return`${Pt.origin}/artists.json?${e}`}function NA(t){return new Map(Zs(t).flatMap((e)=>{let n=String(e.name??"");if(!n||e.is_deleted===!0)return[];let r=Array.isArray(e.urls)?e.urls:[];return[[n,r.flatMap((i)=>i.is_active===!1||!i.url?[]:[String(i.url)])]]}))}async function z0(t,e){let n=new Map;if(Hn(Pt)>Date.now())return n;for(let r=0;r<t.length;r+=Tn){let i=await(await lr(Pt,AA(t.slice(r,r+Tn)),e,{},N0)).text();for(let[s,o]of NA(i))n.set(s,o)}return n}async function Pa(t,e,n){if(e.file||!t.guesses)return;for(let r of t.guesses(e))try{let i=await lr(t,r,n,{Range:`bytes=0-${A0}`}),s=Nn(new Uint8Array(await i.arrayBuffer()));return e.file=r,e.ext=Wr(r),s}catch(i){if(n.aborted||i.status!==404)throw i}throw Error(`${t.name} keeps no png or jpg of ${e.id}`)}async function D0(t,e){if(Hn(Pt)<=Date.now())try{let i=new URLSearchParams({"search[query]":t,"search[type]":"tag_query",limit:String(y0)}),s=`${Pt.origin}/autocomplete.json?${i}`;return mA(await(await lr(Pt,s,e,{},k0)).text())}catch(i){if(e.aborted)throw i}let n=Z.find((i)=>i.key==="yande"),r=new URLSearchParams({name:t,order:"count",limit:String(y0)});return pA(await(await lr(n,`${n.origin}/tag.json?${r}`,e,{},k0)).text())}function TA(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 q0(t,e){if(Hn(Pt)>Date.now())return[];let n=new URLSearchParams({"search[query]":t,"search[category]":"character",limit:String(VR)});return TA(await(await lr(Pt,`${Pt.origin}/related_tag.json?${n}`,e,{},ZR)).text())}function J0(t,e){return e.slice(0,t.ors?t.tagBudget:1)}async function Y0(t,e,n){let r=await lr(t,e,n,{Range:`bytes=0-${A0}`});return Nn(new Uint8Array(await r.arrayBuffer()))}async function wu(t,e,n,r){let i=await lr(t,e,n,{},0),s=Number(i.headers.get("content-length"))||0,o=i.body?.getReader();if(!o)return new Uint8Array(await i.arrayBuffer());let a=[],c=0;for(;;){let{done:l,value:d}=await o.read();if(l)break;a.push(d),c+=d.length,r?.(c,s)}let u=new Uint8Array(c),f=0;for(let l of a)u.set(l,f),f+=l.length;return u}var HA=["pixiv","x","bsky","fanbox","skeb","patreon","fantia"],V0=[["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?users\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/users/${t}`],["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/member\.php\?id=(\d+)$/i,(t)=>`https://www.pixiv.net/users/${t}`],["x",/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(?!(?:i|intent|home|search|explore|hashtag|share|settings)\/?$)(\w{1,15})\/?$/i,(t)=>`https://x.com/${t}`],["bsky",/^https?:\/\/bsky\.app\/profile\/(?!did:)([\w.-]+)\/?$/i,(t)=>`https://bsky.app/profile/${t}`],["fanbox",/^https?:\/\/([\w-]+)\.fanbox\.cc\/?$/i,(t)=>`https://${t}.fanbox.cc`],["fanbox",/^https?:\/\/(?:www\.)?pixiv\.net\/fanbox\/creator\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/fanbox/creator/${t}`],["skeb",/^https?:\/\/skeb\.jp\/@([\w-]+)\/?$/i,(t)=>`https://skeb.jp/@${t}`],["patreon",/^https?:\/\/(?:www\.)?patreon\.com\/(?:c\/)?(?!(?:user|posts|join|home|login|search)\/?$)([\w-]+)\/?$/i,(t)=>`https://www.patreon.com/${t}`],["fantia",/^https?:\/\/fantia\.jp\/fanclubs\/(\d+)\/?$/i,(t)=>`https://fantia.jp/fanclubs/${t}`]],LA=[[/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?artworks\/(\d+)/i,(t)=>`pixiv ${t[1]}`],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(\w{1,15})\/status\/\d+/i,(t)=>`x ${t[1]}`],[/^https?:\/\/bsky\.app\/profile\/([\w.-]+)\/post\//i,(t)=>`bsky ${t[1]}`],[/^https?:\/\/([\w-]+)\.fanbox\.cc\/posts\/\d+/i,(t)=>`fanbox ${t[1]}`]],FA=[[/^https?:\/\/(?:www\.)?pixiv\.net\//i,"pixiv"],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\//i,"x"],[/^https?:\/\/bsky\.app\//i,"bsky"]],CA=["x","pixiv","bsky"],jA={"shima.donmai.us":"danbooru.donmai.us"},_A=/^https?:\/\/[^\s\p{Cc}]+$/u;function Z0(t){return _A.test(t)}function BA(t){return V0.find(([,e])=>e.test(t))?.[0]}function GA(t){return HA.flatMap((e)=>{for(let[,n,r]of V0.filter(([i])=>i===e))for(let i of t){let s=n.exec(i)?.[1];if(s)return[r(s)]}return[]})}function Ia(t){return(t??[]).flatMap((e)=>{let n=BA(e);return n?[{kind:n,url:e}]:[]})}function UA(t){for(let[e,n]of LA){let r=e.exec(t);if(r)return n(r)}try{return new URL(t).hostname.replace(/^www\./,"")}catch{return t}}function WA(t){try{let e=new URL(t),n=jA[e.hostname];if(n)e.hostname=n;return e.href}catch{return t}}function KA(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function Qd(t){let e=t.source??"";return Z0(e)?{label:UA(e),url:e}:void 0}function zA(t){let e=(t.from??"").split(" "),n=e[2]??"";return Z0(n)?{label:e.slice(0,2).join(" "),url:n}:void 0}function DA(t,e){let n=e?FA.find(([s])=>s.test(e))?.[1]:void 0,r=Ia(t),i=CA.find((s)=>s!==n&&r.some((o)=>o.kind===s));return r.find((s)=>s.kind===i)?.url}function X0(t){let e=Qd(t)?.url??zA(t)?.url,n=t.artist??[];if(!e&&n.length===0)return;let r=n.length>0?`Background art by ${n.map((i)=>{let s=DA(t.profiles?.[i],e);return s?`${i} (${KA(s)})`:i}).join(", ")}`:"Background art (artist unknown)";return e?`${r} · ${WA(e)}`:r}async function $u(t,e){let n=await z0(t,e);return new Map(t.map((r)=>[r,GA(n.get(r)??[])]))}import{spawn as qA}from"node:child_process";var JA=30000,YA=3,VA=97,th={from:0.45,to:0.75},ku=2,Ra=1,ZA=Uint8Array.from({length:256},(t,e)=>Math.round(255*Math.min(1,Math.max(0,(e/255-th.from)/(th.to-th.from))))),XA=`ObjC.import('Vision')
2
+ import{createRequire as XP}from"node:module";var zP=Object.create;var{getPrototypeOf:DP,defineProperty:Db,getOwnPropertyNames:qP}=Object;var JP=Object.prototype.hasOwnProperty;function YP(t){return this[t]}var VP,ZP,hd=(t,e,n)=>{var r=t!=null&&typeof t==="object";if(r){var i=e?VP??=new WeakMap:ZP??=new WeakMap,s=i.get(t);if(s)return s}n=t!=null?zP(DP(t)):{};let o=e||!t||!t.__esModule?Db(n,"default",{value:t,enumerable:!0}):n;for(let a of qP(t))if(!JP.call(o,a))Db(o,a,{get:YP.bind(t,a),enumerable:!0});if(r)i.set(t,o);return o};var xt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Qt=XP(import.meta.url);var $d=xt((dB,aw)=>{var lI=Qt("util"),ow=Qt("stream"),cn=aw.exports=function(){ow.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};lI.inherits(cn,ow);cn.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))};cn.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};cn.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()};cn.prototype.destroySoon=cn.prototype.end;cn.prototype._end=function(){if(this._reads.length>0)this.emit("error",Error("Unexpected end of input"));this.destroy()};cn.prototype.destroy=function(){if(!this._buffers)return;this.writable=!1,this._reads=null,this._buffers=null,this.emit("close")};cn.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)};cn.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++],s=Math.min(i.length,t.length-e);if(i.copy(r,e,0,s),e+=s,s!==i.length)this._buffers[--n]=i.slice(s)}if(n>0)this._buffers.splice(0,n);this._buffered-=t.length,t.func.call(this,r)};cn.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 kd=xt((fI)=>{var Fr=[{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]}];fI.getImagePasses=function(t,e){let n=[],r=t%8,i=e%8,s=(t-r)/8,o=(e-i)/8;for(let a=0;a<Fr.length;a++){let c=Fr[a],u=s*c.x.length,f=o*c.y.length;for(let l=0;l<c.x.length;l++)if(c.x[l]<r)u++;else break;for(let l=0;l<c.y.length;l++)if(c.y[l]<i)f++;else break;if(u>0&&f>0)n.push({width:u,height:f,index:a})}return n};fI.getInterlaceIterator=function(t){return function(e,n,r){let i=e%Fr[r].x.length,s=(e-i)/Fr[r].x.length*8+Fr[r].x[i],o=n%Fr[r].y.length,a=(n-o)/Fr[r].y.length*8+Fr[r].y[o];return s*4+a*t*4}}});var yd=xt((mB,cw)=>{cw.exports=function(e,n,r){let i=e+n-r,s=Math.abs(i-e),o=Math.abs(i-n),a=Math.abs(i-r);if(s<=o&&s<=a)return e;if(o<=a)return n;return r}});var vd=xt((pB,lw)=>{var mI=kd(),pI=yd();function uw(t,e,n){let r=t*e;if(n!==8)r=Math.ceil(r/(8/n));return r}var Us=lw.exports=function(t,e){let{width:n,height:r,interlace:i,bpp:s,depth:o}=t;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let a=mI.getImagePasses(n,r);for(let c=0;c<a.length;c++)this._images.push({byteWidth:uw(a[c].width,s,o),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:uw(n,s,o),height:r,lineIndex:0});if(o===8)this._xComparison=s;else if(o===16)this._xComparison=s*2;else this._xComparison=1};Us.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};Us.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,i=r-1;for(let s=0;s<n;s++){let o=t[1+s],a=s>i?e[s-r]:0;e[s]=o+a}};Us.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let i=0;i<n;i++){let s=t[1+i],o=r?r[i]:0;e[i]=s+o}};Us.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,i=r-1,s=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],c=s?s[o]:0,u=o>i?e[o-r]:0,f=Math.floor((u+c)/2);e[o]=a+f}};Us.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,i=r-1,s=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],c=s?s[o]:0,u=o>i?e[o-r]:0,f=o>i&&s?s[o-r]:0,l=pI(u,c,f);e[o]=a+l}};Us.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 hw=xt((gB,dw)=>{var gI=Qt("util"),fw=$d(),bI=vd(),wI=dw.exports=function(t){fw.call(this);let e=[],n=this;this._filter=new bI(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};gI.inherits(wI,fw)});var Ws=xt((bB,mw)=>{mw.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 Md=xt((wB,pw)=>{var Sd=[];(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;Sd[t]=e}})();var Ed=pw.exports=function(){this._crc=-1};Ed.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=Sd[(this._crc^t[e])&255]^this._crc>>>8;return!0};Ed.prototype.crc32=function(){return this._crc^-1};Ed.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=Sd[(e^t[n])&255]^e>>>8;return e^-1}});var xd=xt(($B,gw)=>{var jt=Ws(),$I=Md(),Ut=gw.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[jt.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[jt.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[jt.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[jt.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[jt.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[jt.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(){}};Ut.prototype.start=function(){this.read(jt.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Ut.prototype._parseSignature=function(t){let e=jt.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))};Ut.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let s=4;s<8;s++)r+=String.fromCharCode(t[s]);let i=Boolean(t[4]&32);if(!this._hasIHDR&&n!==jt.TYPE_IHDR){this.error(Error("Expected IHDR on beggining"));return}if(this._crc=new $I,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))};Ut.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Ut.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Ut.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))};Ut.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};Ut.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],i=t[9],s=t[10],o=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 jt.COLORTYPE_TO_BPP_MAP)){this.error(Error("Unsupported color type"));return}if(s!==0){this.error(Error("Unsupported compression method"));return}if(o!==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=jt.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:Boolean(a),palette:Boolean(i&jt.COLORTYPE_PALETTE),color:Boolean(i&jt.COLORTYPE_COLOR),alpha:Boolean(i&jt.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};Ut.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};Ut.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()};Ut.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};Ut.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===jt.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===jt.COLORTYPE_GRAYSCALE)this.transColor([t.readUInt16BE(0)]);if(this._colorType===jt.COLORTYPE_COLOR)this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]);this._handleChunkEnd()};Ut.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};Ut.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/jt.GAMMA_DIVISION),this._handleChunkEnd()};Ut.prototype._handleIDAT=function(t){if(!this._emittedHeadersFinished)this._emittedHeadersFinished=!0,this.headersFinished();this.read(-t,this._parseIDAT.bind(this,t))};Ut.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===jt.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()};Ut.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};Ut.prototype._parseIEND=function(t){if(this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished)this.finished()}});var Od=xt((MI)=>{var bw=kd(),kI=[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]}],yI=[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 vI(t,e){let n=[],r=0;function i(){if(r===t.length)throw Error("Ran out of data");let s=t[r];r++;let o,a,c,u,f,l,d,h;switch(e){default:throw Error("unrecognised depth");case 16:d=t[r],r++,n.push((s<<8)+d);break;case 4:d=s&15,h=s>>4,n.push(h,d);break;case 2:f=s&3,l=s>>2&3,d=s>>4&3,h=s>>6&3,n.push(h,d,l,f);break;case 1:o=s&1,a=s>>1&1,c=s>>2&1,u=s>>3&1,f=s>>4&1,l=s>>5&1,d=s>>6&1,h=s>>7&1,n.push(h,d,l,f,u,c,a,o);break}}return{get:function(s){while(n.length<s)i();let o=n.slice(0,s);return n=n.slice(s),o},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw Error("extra data found")}}}function SI(t,e,n,r,i,s){let{width:o,height:a,index:c}=t;for(let u=0;u<a;u++)for(let f=0;f<o;f++){let l=n(f,u,c);kI[r](e,i,l,s),s+=r}return s}function EI(t,e,n,r,i,s){let{width:o,height:a,index:c}=t;for(let u=0;u<a;u++){for(let f=0;f<o;f++){let l=i.get(r),d=n(f,u,c);yI[r](e,l,d,s)}i.resetAfterLine()}}MI.dataToBitMap=function(t,e){let{width:n,height:r,depth:i,bpp:s,interlace:o}=e,a;if(i!==8)a=vI(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,f=0,l,d;if(o)l=bw.getImagePasses(n,r),d=bw.getInterlaceIterator(n,r);else{let h=0;d=function(){let m=h;return h+=4,m},l=[{width:n,height:r}]}for(let h=0;h<l.length;h++)if(i===8)f=SI(l[h],c,d,s,t,f);else EI(l[h],c,d,s,a,u);if(i===8){if(f!==t.length)throw Error("extra data found")}else a.end();return c}});var Pd=xt((yB,ww)=>{function OI(t,e,n,r,i){let s=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let c=i[t[s]];if(!c)throw Error("index "+t[s]+" not in palette");for(let u=0;u<4;u++)e[s+u]=c[u];s+=4}}function PI(t,e,n,r,i){let s=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let c=!1;if(i.length===1){if(i[0]===t[s])c=!0}else if(i[0]===t[s]&&i[1]===t[s+1]&&i[2]===t[s+2])c=!0;if(c)for(let u=0;u<4;u++)e[s+u]=0;s+=4}}function II(t,e,n,r,i){let s=255,o=Math.pow(2,i)-1,a=0;for(let c=0;c<r;c++)for(let u=0;u<n;u++){for(let f=0;f<4;f++)e[a+f]=Math.floor(t[a+f]*s/o+0.5);a+=4}}ww.exports=function(t,e,n=!1){let{depth:r,width:i,height:s,colorType:o,transColor:a,palette:c}=e,u=t;if(o===3)OI(t,u,i,s,c);else{if(a)PI(t,u,i,s,a);if(r!==8&&!n){if(r===16)u=Buffer.alloc(i*s*4);II(t,u,i,s,r)}}return u}});var yw=xt((vB,kw)=>{var RI=Qt("util"),Id=Qt("zlib"),$w=$d(),AI=hw(),NI=xd(),TI=Od(),HI=Pd(),On=kw.exports=function(t){$w.call(this),this._parser=new NI(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()};RI.inherits(On,$w);On.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};On.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Id.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,Id.Z_MIN_CHUNK);this._inflate=Id.createInflate({chunkSize:r});let i=n,s=this.emit.bind(this,"error");this._inflate.on("error",function(a){if(!i)return;s(a)}),this._filter.on("complete",this._complete.bind(this));let o=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,o(a)}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};On.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new AI(this._bitmapInfo)};On.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};On.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};On.prototype._simpleTransparency=function(){this._metaData.alpha=!0};On.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};On.prototype._finished=function(){if(this.errord)return;if(!this._inflate)this.emit("error","No Inflate block");else this._inflate.end()};On.prototype._complete=function(t){if(this.errord)return;let e;try{let n=TI.dataToBitMap(t,this._bitmapInfo);e=HI(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Sw=xt((SB,vw)=>{var ze=Ws();vw.exports=function(t,e,n,r){let i=[ze.COLORTYPE_COLOR_ALPHA,ze.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 s=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=ze.COLORTYPE_TO_BPP_MAP[r.inputColorType];if(a===4&&!r.inputHasAlpha)a=3;let c=ze.COLORTYPE_TO_BPP_MAP[r.colorType];if(r.bitDepth===16)o=65535,c*=2;let u=Buffer.alloc(e*n*c),f=0,l=0,d=r.bgColor||{};if(d.red===void 0)d.red=o;if(d.green===void 0)d.green=o;if(d.blue===void 0)d.blue=o;function h(){let m,p,b,$=o;switch(r.inputColorType){case ze.COLORTYPE_COLOR_ALPHA:$=s[f+3],m=s[f],p=s[f+1],b=s[f+2];break;case ze.COLORTYPE_COLOR:m=s[f],p=s[f+1],b=s[f+2];break;case ze.COLORTYPE_ALPHA:$=s[f+1],m=s[f],p=m,b=m;break;case ze.COLORTYPE_GRAYSCALE:m=s[f],p=m,b=m;break;default:throw Error("input color type:"+r.inputColorType+" is not supported at present")}if(r.inputHasAlpha){if(!i)$/=o,m=Math.min(Math.max(Math.round((1-$)*d.red+$*m),0),o),p=Math.min(Math.max(Math.round((1-$)*d.green+$*p),0),o),b=Math.min(Math.max(Math.round((1-$)*d.blue+$*b),0),o)}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(s,f);switch(r.colorType){case ze.COLORTYPE_COLOR_ALPHA:case ze.COLORTYPE_COLOR:if(r.bitDepth===8){if(u[l]=b.red,u[l+1]=b.green,u[l+2]=b.blue,i)u[l+3]=b.alpha}else if(u.writeUInt16BE(b.red,l),u.writeUInt16BE(b.green,l+2),u.writeUInt16BE(b.blue,l+4),i)u.writeUInt16BE(b.alpha,l+6);break;case ze.COLORTYPE_ALPHA:case ze.COLORTYPE_GRAYSCALE:{let $=(b.red+b.green+b.blue)/3;if(r.bitDepth===8){if(u[l]=$,i)u[l+1]=b.alpha}else if(u.writeUInt16BE($,l),i)u.writeUInt16BE(b.alpha,l+2);break}default:throw Error("unrecognised color Type "+r.colorType)}f+=a,l+=c}return u}});var xw=xt((EB,Mw)=>{var Ew=yd();function FI(t,e,n,r,i){for(let s=0;s<n;s++)r[i+s]=t[e+s]}function LI(t,e,n){let r=0,i=e+n;for(let s=e;s<i;s++)r+=Math.abs(t[s]);return r}function CI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=t[e+o]-a;r[i+o]=c}}function jI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=t[e+s]-o;i+=Math.abs(a)}return i}function _I(t,e,n,r,i){for(let s=0;s<n;s++){let o=e>0?t[e+s-n]:0,a=t[e+s]-o;r[i+s]=a}}function BI(t,e,n){let r=0,i=e+n;for(let s=e;s<i;s++){let o=e>0?t[s-n]:0,a=t[s]-o;r+=Math.abs(a)}return r}function GI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=e>0?t[e+o-n]:0,u=t[e+o]-(a+c>>1);r[i+o]=u}}function UI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=e>0?t[e+s-n]:0,c=t[e+s]-(o+a>>1);i+=Math.abs(c)}return i}function WI(t,e,n,r,i,s){for(let o=0;o<n;o++){let a=o>=s?t[e+o-s]:0,c=e>0?t[e+o-n]:0,u=e>0&&o>=s?t[e+o-(n+s)]:0,f=t[e+o]-Ew(a,c,u);r[i+o]=f}}function KI(t,e,n,r){let i=0;for(let s=0;s<n;s++){let o=s>=r?t[e+s-r]:0,a=e>0?t[e+s-n]:0,c=e>0&&s>=r?t[e+s-(n+r)]:0,u=t[e+s]-Ew(o,a,c);i+=Math.abs(u)}return i}var zI={0:FI,1:CI,2:_I,3:GI,4:WI},DI={0:LI,1:jI,2:BI,3:UI,4:KI};Mw.exports=function(t,e,n,r,i){let s;if(!("filterType"in r)||r.filterType===-1)s=[0,1,2,3,4];else if(typeof r.filterType==="number")s=[r.filterType];else throw Error("unrecognised filter types");if(r.bitDepth===16)i*=2;let o=e*i,a=0,c=0,u=Buffer.alloc((o+1)*n),f=s[0];for(let l=0;l<n;l++){if(s.length>1){let d=1/0;for(let h=0;h<s.length;h++){let m=DI[s[h]](t,c,o,i);if(m<d)f=s[h],d=m}}u[a]=f,a++,zI[f](t,c,o,u,a,i),a+=o,c+=o}return u}});var Rd=xt((MB,Ow)=>{var te=Ws(),qI=Md(),JI=Sw(),YI=xw(),VI=Qt("zlib"),Lr=Ow.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||VI.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType==="number"?t.colorType:te.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType==="number"?t.inputColorType:te.COLORTYPE_COLOR_ALPHA,[te.COLORTYPE_GRAYSCALE,te.COLORTYPE_COLOR,te.COLORTYPE_COLOR_ALPHA,te.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw Error("option color type:"+t.colorType+" is not supported at present");if([te.COLORTYPE_GRAYSCALE,te.COLORTYPE_COLOR,te.COLORTYPE_COLOR_ALPHA,te.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")};Lr.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Lr.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Lr.prototype.filterData=function(t,e,n){let r=JI(t,e,n,this._options),i=te.COLORTYPE_TO_BPP_MAP[this._options.colorType];return YI(r,e,n,this._options,i)};Lr.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(qI.crc32(r.slice(4,r.length-4)),r.length-4),r};Lr.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*te.GAMMA_DIVISION),0),this._packChunk(te.TYPE_gAMA,e)};Lr.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(te.TYPE_IHDR,n)};Lr.prototype.packIDAT=function(t){return this._packChunk(te.TYPE_IDAT,t)};Lr.prototype.packIEND=function(){return this._packChunk(te.TYPE_IEND,null)}});var Aw=xt((xB,Rw)=>{var ZI=Qt("util"),Pw=Qt("stream"),XI=Ws(),QI=Rd(),Iw=Rw.exports=function(t){Pw.call(this);let e=t||{};this._packer=new QI(e),this._deflate=this._packer.createDeflate(),this.readable=!0};ZI.inherits(Iw,Pw);Iw.prototype.pack=function(t,e,n,r){if(this.emit("data",Buffer.from(XI.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(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Cw=xt((ma,Lw)=>{var Nw=Qt("assert").ok,Ks=Qt("zlib"),tR=Qt("util"),Tw=Qt("buffer").kMaxLength;function Ni(t){if(!(this instanceof Ni))return new Ni(t);if(t&&t.chunkSize<Ks.Z_MIN_CHUNK)t.chunkSize=Ks.Z_MIN_CHUNK;if(Ks.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 eR(t){return new Ni(t)}function Hw(t,e){if(e)process.nextTick(e);if(!t._handle)return;t._handle.close(),t._handle=null}Ni.prototype._processChunk=function(t,e,n){if(typeof n==="function")return Ks.Inflate._processChunk.call(this,t,e,n);let r=this,i=t&&t.length,s=this._chunkSize-this._offset,o=this._maxLength,a=0,c=[],u=0,f;this.on("error",function(m){f=m});function l(m,p){if(r._hadError)return;let b=s-p;if(Nw(b>=0,"have should not go down"),b>0){let $=r._buffer.slice(r._offset,r._offset+b);if(r._offset+=b,$.length>o)$=$.slice(0,o);if(c.push($),u+=$.length,o-=$.length,o===0)return!1}if(p===0||r._offset>=r._chunkSize)s=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize);if(p===0)return a+=i-m,i=m,!0;return!1}Nw(this._handle,"zlib binding closed");let d;do d=this._handle.writeSync(e,t,a,i,this._buffer,this._offset,s),d=d||this._writeState;while(!this._hadError&&l(d[0],d[1]));if(this._hadError)throw f;if(u>=Tw)throw Hw(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+Tw.toString(16)+" bytes");let h=Buffer.concat(c,u);return Hw(this),h};tR.inherits(Ni,Ks.Inflate);function nR(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=Ks.Z_FINISH;return t._processChunk(e,n)}function Fw(t,e){return nR(new Ni(e),t)}Lw.exports=ma=Fw;ma.Inflate=Ni;ma.createInflate=eR;ma.inflateSync=Fw});var Ad=xt((OB,_w)=>{var jw=_w.exports=function(t){this._buffer=t,this._reads=[]};jw.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};jw.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 Bw=xt((sR)=>{var rR=Ad(),iR=vd();sR.process=function(t,e){let n=[],r=new rR(t);return new iR(e,{read:r.read.bind(r),write:function(s){n.push(s)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Kw=xt((IB,Ww)=>{var Gw=!0,Uw=Qt("zlib"),aR=Cw();if(!Uw.deflateSync)Gw=!1;var cR=Ad(),uR=Bw(),lR=xd(),fR=Od(),dR=Pd();Ww.exports=function(t,e){if(!Gw)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 s(S){i=S}function o(S){i.transColor=S}function a(S){i.palette=S}function c(){i.alpha=!0}let u;function f(S){u=S}let l=[];function d(S){l.push(S)}let h=new cR(t);if(new lR(e,{read:h.read.bind(h),error:r,metadata:s,gamma:f,palette:a,transColor:o,inflateData:d,simpleTransparency:c}).start(),h.process(),n)throw n;let p=Buffer.concat(l);l.length=0;let b;if(i.interlace)b=Uw.inflateSync(p);else{let M=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;b=aR(p,{chunkSize:M,maxLength:M})}if(p=null,!b||!b.length)throw Error("bad png - invalid inflate data response");let $=uR.process(b,i);p=null;let k=fR.dataToBitMap($,i);$=null;let v=dR(k,i,e.skipRescale);return i.data=v,i.gamma=u||0,i}});var Jw=xt((RB,qw)=>{var zw=!0,Dw=Qt("zlib");if(!Dw.deflateSync)zw=!1;var hR=Ws(),mR=Rd();qw.exports=function(t,e){if(!zw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new mR(e||{}),i=[];if(i.push(Buffer.from(hR.PNG_SIGNATURE)),i.push(r.packIHDR(t.width,t.height)),t.gamma)i.push(r.packGAMA(t.gamma));let s=r.filterData(t.data,t.width,t.height),o=Dw.deflateSync(s,r.getDeflateOptions());if(s=null,!o||!o.length)throw Error("bad png - invalid compressed data response");return i.push(r.packIDAT(o)),i.push(r.packIEND()),Buffer.concat(i)}});var Yw=xt((bR)=>{var pR=Kw(),gR=Jw();bR.read=function(t,e){return pR(t,e||{})};bR.write=function(t,e){return gR(t,e)}});var Zw=xt((ER)=>{var kR=Qt("util"),Vw=Qt("stream"),yR=yw(),vR=Aw(),SR=Yw(),le=ER.PNG=function(t){if(Vw.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 yR(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 vR(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"))};kR.inherits(le,Vw);le.sync=SR;le.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};le.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};le.prototype.write=function(t){return this._parser.write(t),!0};le.prototype.end=function(t){this._parser.end(t)};le.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};le.prototype._gamma=function(t){this.gamma=t};le.prototype._handleClose=function(){if(!this._parser.writable&&!this._packer.readable)this.emit("close")};le.bitblt=function(t,e,n,r,i,s,o,a){if(n|=0,r|=0,i|=0,s|=0,o|=0,a|=0,n>t.width||r>t.height||n+i>t.width||r+s>t.height)throw Error("bitblt reading outside image");if(o>e.width||a>e.height||o+i>e.width||a+s>e.height)throw Error("bitblt writing outside image");for(let c=0;c<s;c++)t.data.copy(e.data,(a+c)*e.width+o<<2,(r+c)*t.width+n<<2,(r+c)*t.width+n+i<<2)};le.prototype.bitblt=function(t,e,n,r,i,s,o){return le.bitblt(this,t,e,n,r,i,s,o),this};le.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 s=t.data[r+i]/255;s=Math.pow(s,0.45454545454545453/t.gamma),t.data[r+i]=Math.round(s*255)}}t.gamma=0}};le.prototype.adjustGamma=function(){le.adjustGamma(this)}});var om=xt((hW,py)=>{var sm={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"},tH={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},eH={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?sm.up():"");if(t)e+=sm.left;return e}};py.exports={cursor:sm,scroll:tH,erase:eH,beep:"\x07"}});import{spawnSync as eB}from"node:child_process";import{isMainThread as nB}from"node:worker_threads";import{parseArgs as q_}from"node:util";var lt={name:"@kecan0406/ttheme",version:"1.2.25",type:"module",bin:{ttheme:"bin/ttheme.js"},files:["bin","dist/manifest.json","shell","!shell/check.zsh"],description:"Character terminal palettes for Ghostty, iTerm2, kitty, Alacritty, WezTerm, Windows Terminal, Warp, Konsole and Terminal.app",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","warp","windows-terminal"],devDependencies:{"@biomejs/biome":"^2.5.15","@clack/prompts":"^1.8.1","@jsquash/jpeg":"^1.6.0","@material/material-color-utilities":"^0.4.0","@oxlint/plugins":"1.87.0","@types/bun":"^1.4.2","@types/pngjs":"6.0.5","@xterm/headless":"6.0.0","fast-string-width":"^3.0.2",oxlint:"1.87.0",pngjs:"7.0.0","smol-toml":"^1.9.0",typescript:"^7.0.2",uqr:"^0.1.3"},engines:{bun:">=1.3",node:">=22"}};import{existsSync as Pk,readFileSync as zh}from"node:fs";import{join as Ik}from"node:path";var tI=/^#[0-9a-f]{6}$/;function we(t){return tI.test(t)}function st(t){let e=Number.parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,e&255]}function Nt(t,e,n){let r=st(t),i=st(e);return`#${r.map((s,o)=>Math.round(s+((i[o]??0)-s)*n).toString(16).padStart(2,"0")).join("")}`}function Mt(t){let[e,n,r]=st(t).map((i)=>{let s=i/255;return s<=0.03928?s/12.92:((s+0.055)/1.055)**2.4});return 0.2126*e+0.7152*n+0.0722*r}function kt(t,e){let n=Mt(t),r=Mt(e);return(Math.max(n,r)+0.05)/(Math.min(n,r)+0.05)}function iu(t,e){return Math.round(kt(t,e)*100)/100}function eI(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function Ot(t){let[e,n,r]=st(t).map(eI),i=Math.cbrt(0.4122214708*e+0.5363325363*n+0.0514459929*r),s=Math.cbrt(0.2119034982*e+0.6806995451*n+0.1073969566*r),o=Math.cbrt(0.0883024619*e+0.2817188376*n+0.6299787005*r),a=1.9779984951*i-2.428592205*s+0.4505937099*o,c=0.0259040371*i+0.7827717662*s-0.808675766*o;return{l:0.2104542553*i+0.793617785*s-0.0040720468*o,c:Math.hypot(a,c),h:(Math.atan2(c,a)*180/Math.PI+360)%360}}var Nr=7,qb=3,md=0.15,Jb=1.6,gd=[1,2,3,4,5,6,9,10,11,12,13,14],Yb=[7,15],an=[1,2,3,4,5,6],Re={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}},Ri=0.03,on=25,_s=15,Bs=0.08;function Qn(t,e){let n=t.ansi[e];if(n===void 0)throw Error(`${t.name}: missing ANSI ${e}`);return n}function pd(t,e,n){let r=t.background;return e.flatMap((i)=>{let s=Qn(t,i);return kt(s,r)<n?[`ANSI ${i} ${s} on ${r} is ${iu(s,r)}:1, needs ${n}:1`]:[]})}function Vb(t,e){return Math.min(...e.map((n)=>kt(Qn(t,n),t.background)))}var Zb=[{rule:"foreground",label:"foreground on background",unit:"ratio",min:Nr,measure:({foreground:t,background:e})=>kt(t,e),check:({foreground:t,background:e})=>kt(t,e)<Nr?[`foreground ${t} on ${e} is ${iu(t,e)}:1, needs ${Nr}:1`]:[]},{rule:"accents",label:"weakest accent on background",unit:"ratio",min:qb,measure:(t)=>Vb(t,gd),check:(t)=>pd(t,gd,qb)},{rule:"ansi0-dark",label:"ansi0 luminance",unit:"luminance",max:md,measure:(t)=>Mt(Qn(t,0)),check:(t)=>{let e=Qn(t,0);return Mt(e)>md?[`ANSI 0 ${e} has luminance ${Mt(e).toFixed(3)}, needs <= ${md}`]:[]}},{rule:"light-ansi",label:"ansi7 and ansi15 on background",unit:"ratio",min:Nr,measure:(t)=>Vb(t,Yb),check:(t)=>pd(t,Yb,Nr)},{rule:"ansi8-visible",label:"ansi8 on background",unit:"ratio",min:Jb,measure:(t)=>kt(Qn(t,8),t.background),check:(t)=>pd(t,[8],Jb)},{rule:"selection",label:"foreground on selection",unit:"ratio",min:Nr,measure:({foreground:t,selectionBackground:e})=>e===void 0?Number.NaN:kt(t,e),check:({foreground:t,selectionBackground:e})=>e!==void 0&&kt(t,e)<Nr?[`foreground ${t} on selection ${e} is ${iu(t,e)}:1, needs ${Nr}:1`]:[]}];function Ae(t,e){let n=Math.abs(t-e)%360;return Math.min(n,360-n)}var En=(t)=>t>8?t-8:t;function Gs(t){let e=t.signatureSlots.filter((n)=>n.startsWith("ansi")).map((n)=>Number(n.slice(4)));return new Set(e.flatMap((n)=>an.includes(En(n))?[n,n>8?n-8:n+8]:[n]))}function fa(t,e){let n=Ot(Qn(t,e));return n.c<Ri?void 0:n}function Tr(t){let e=Gs(t);return gd.flatMap((n)=>{let r=fa(t,n),i=Re[En(n)];if(r===void 0||i===void 0||e.has(n))return[];let s=Ae(r.h,i.center)-i.width;return s>0?[{slot:n,hue:r.h,over:s}]:[]})}function tr(t){let e=new Set(t.signatureSlots);return an.flatMap((n)=>{let r=fa(t,n),i=fa(t,n+8);if(r===void 0||i===void 0||e.has(`ansi${n}`)&&e.has(`ansi${n+8}`))return[];return[{normal:n,gap:Ae(r.h,i.h)}]})}function er(t){let e=Gs(t);return[0,8].flatMap((n)=>an.flatMap((r)=>an.filter((i)=>i>r).flatMap((i)=>{let[s,o]=[n+r,n+i],a=fa(t,s),c=fa(t,o);if(a===void 0||c===void 0||e.has(s)&&e.has(o))return[];return Ae(a.h,c.h)<_s&&Math.abs(a.l-c.l)<Bs?[[s,o]]:[]})))}var nI=[{rule:"ansi-role",label:"accent hue outside its ANSI role",unit:"degrees",max:0,measure:(t)=>Math.max(0,...Tr(t).map((e)=>e.over)),check:(t)=>Tr(t).map(({slot:e,hue:n,over:r})=>{let i=Re[En(e)];return`ANSI ${e} ${Qn(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:on,measure:(t)=>Math.max(0,...tr(t).map((e)=>e.gap)),check:(t)=>tr(t).filter((e)=>e.gap>on).map(({normal:e,gap:n})=>`ANSI ${e+8} is ${n.toFixed(0)}° from ANSI ${e}, needs <= ${on}°`)},{rule:"distinct",label:"accent pairs that read as one color",unit:"pairs",max:0,measure:(t)=>er(t).length,check:(t)=>er(t).map(([e,n])=>`ANSI ${e} ${Qn(t,e)} and ANSI ${n} ${Qn(t,n)} are within ${_s}° hue and ${Bs} lightness`)}],su=[...Zb,...nI],bd=su.map((t)=>t.rule),Ne=su.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 Mn(t){return su.map((e)=>Math.round(e.measure(t)*1000)/1000)}function Xb(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 nr(t){return Xb(su,t)}function Qb(t){return Xb(Zb,t)}function tw(t){return t.flatMap(nr)}import{chmodSync as rI,copyFileSync as iI,existsSync as Hr,mkdirSync as sI,readFileSync as da,realpathSync as oI,renameSync as nw,rmSync as ew,statSync as aI,writeFileSync as rw}from"node:fs";import{dirname as cI}from"node:path";function ha(t){return`${t}.ttheme.bak`}var uI=/^(?:#|--) ttheme begin$|path = "ttheme-|^DefaultProfile=ttheme-/m;function wd(t){let e=ha(t);if(Hr(t)&&!Hr(e)&&!uI.test(da(t,"utf8")))iI(t,e)}function C(t,e){let n=Hr(t)?oI(t):t;sI(cI(n),{recursive:!0});let r=`${n}.ttheme-${process.pid}`;if(rw(r,e),Hr(n))rI(r,aI(n).mode&4095);nw(r,n)}function Ai(t,e,n){if(rw(t,n),t!==e)nw(t,e)}function xn(t,e){if((Hr(t)?da(t,"utf8"):void 0)===e)return!1;return wd(t),C(t,e),!0}function iw(t,e){return t.replace(/\n*$/,"")===e.replace(/\n*$/,"")}function sw(t,e){let n=ha(t),r=Hr(n)?da(n,"utf8"):void 0;if(e===""&&r===void 0)return ew(t,{force:!0}),"removed";let i=r!==void 0&&iw(r,e);if(C(t,i?r:e),r===void 0||i)return ew(n,{force:!0}),"restored";return"kept backup"}function ou(t){let e=ha(t);return Hr(t)&&Hr(e)&&iw(da(t,"utf8"),da(e,"utf8"))?[e]:[]}import{createHash as y$}from"node:crypto";import{copyFileSync as SN,existsSync as hh,mkdirSync as EN,readdirSync as MN,readFileSync as io,renameSync as v$,rmSync as ro,statSync as xN}from"node:fs";import{basename as S$,isAbsolute as ON,join as V}from"node:path";import{readdirSync as CR,rmSync as jR,statSync as _R}from"node:fs";import{setDefaultAutoSelectFamilyAttemptTimeout as BR}from"node:net";import{homedir as GR}from"node:os";import{join as wa}from"node:path";import{setTimeout as UR}from"node:timers/promises";var n0=hd(Zw(),1);import{constants as PR,deflateSync as IR,inflateSync as RR}from"node:zlib";import{inflateRawSync as xR}from"node:zlib";var MR=(()=>{var t=import.meta.url;return function(e={}){var n=e,r,i,s=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),f=[],l="./this.program",d=(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),x=n.printErr||console.error.bind(console);if(Object.assign(n,u),u=null,n.arguments)f=n.arguments;if(n.thisProgram)l=n.thisProgram;if(n.quit)d=n.quit;var N;if(n.wasmBinary)N=n.wasmBinary;var R,T=!1,_,K,G,L,gt,Xt,it,Ar,We;function Sn(){var g=R.buffer;n.HEAP8=K=new Int8Array(g),n.HEAP16=L=new Int16Array(g),n.HEAPU8=G=new Uint8Array(g),n.HEAPU16=gt=new Uint16Array(g),n.HEAP32=Xt=new Int32Array(g),n.HEAPU32=it=new Uint32Array(g),n.HEAPF32=Ar=new Float32Array(g),n.HEAPF64=We=new Float64Array(g)}var Hs=[],tu=[],Ei=[],Qf=!1;function td(){if(n.preRun){if(typeof n.preRun=="function")n.preRun=[n.preRun];while(n.preRun.length)nO(n.preRun.shift())}rd(Hs)}function ed(){Qf=!0,rd(tu)}function eO(){if(n.postRun){if(typeof n.postRun=="function")n.postRun=[n.postRun];while(n.postRun.length)iO(n.postRun.shift())}rd(Ei)}function nO(g){Hs.unshift(g)}function rO(g){tu.unshift(g)}function iO(g){Ei.unshift(g)}var Mi=0,nd=null,ua=null;function sO(g){Mi++,n.monitorRunDependencies?.(Mi)}function oO(g){if(Mi--,n.monitorRunDependencies?.(Mi),Mi==0){if(nd!==null)clearInterval(nd),nd=null;if(ua){var w=ua;ua=null,w()}}}function xb(g){n.onAbort?.(g),g="Aborted("+g+")",x(g),T=!0,_=1,g+=". Build with -sASSERTIONS for more info.";var w=new WebAssembly.RuntimeError(g);throw i(w),w}var aO="data:application/octet-stream;base64,",Ob=(g)=>g.startsWith(aO),xi;if(n.locateFile){if(xi="mozjpeg_dec.wasm",!Ob(xi))xi=$(xi)}else xi=new URL("mozjpeg_dec.wasm",import.meta.url).href;function Pb(g){if(g==xi&&N)return new Uint8Array(N);if(S)return S(g);throw"both async and sync fetching of the wasm failed"}function cO(g){if(!N&&(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(()=>Pb(g))}return Promise.resolve().then(()=>Pb(g))}function Ib(g,w,y){return cO(g).then((E)=>WebAssembly.instantiate(E,w)).then(y,(E)=>{x(`failed to asynchronously prepare wasm: ${E}`),xb(E)})}function uO(g,w,y,E){if(!g&&typeof WebAssembly.instantiateStreaming=="function"&&!Ob(w)&&typeof fetch=="function")return fetch(w,{credentials:"same-origin"}).then((P)=>{var A=WebAssembly.instantiateStreaming(P,y);return A.then(E,function(U){return x(`wasm streaming compile failed: ${U}`),x("falling back to ArrayBuffer instantiation"),Ib(w,y,E)})});return Ib(w,y,E)}function lO(){var g={a:HP};function w(E,P){return ce=E.exports,R=ce.A,Sn(),Cb=ce.F,rO(ce.B),oO("wasm-instantiate"),ce}sO("wasm-instantiate");function y(E){w(E.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(g,w)}catch(E){x(`Module.instantiateWasm callback failed with error: ${E}`),i(E)}return uO(N,xi,g,y).catch(i),{}}function fO(g){this.name="ExitStatus",this.message=`Program terminated with exit(${g})`,this.status=g}var rd=(g)=>{while(g.length>0)g.shift()(n)},dO=n.noExitRuntime||!0;class Rb{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){it[this.ptr+4>>2]=g}get_type(){return it[this.ptr+4>>2]}set_destructor(g){it[this.ptr+8>>2]=g}get_destructor(){return it[this.ptr+8>>2]}set_caught(g){g=g?1:0,K[this.ptr+12]=g}get_caught(){return K[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,K[this.ptr+13]=g}get_rethrown(){return K[this.ptr+13]!=0}init(g,w){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(w)}set_adjusted_ptr(g){it[this.ptr+16>>2]=g}get_adjusted_ptr(){return it[this.ptr+16>>2]}get_exception_ptr(){var g=Kb(this.get_type());if(g)return it[this.excPtr>>2];var w=this.get_adjusted_ptr();if(w!==0)return w;return this.excPtr}}var Ab=0,hO=0,mO=(g,w,y)=>{var E=new Rb(g);throw E.init(w,y),Ab=g,hO++,Ab},pO=(g,w,y,E,P)=>{},gO=()=>{var g=Array(256);for(var w=0;w<256;++w)g[w]=String.fromCharCode(w);Nb=g},Nb,sn=(g)=>{var w="",y=g;while(G[y])w+=Nb[G[y++]];return w},Fs={},Oi={},eu={},Tb,Ie=(g)=>{throw new Tb(g)},Hb,Fb=(g)=>{throw new Hb(g)},bO=(g,w,y)=>{g.forEach(function(H){eu[H]=w});function E(H){var z=y(H);if(z.length!==g.length)Fb("Mismatched type converter count");for(var Q=0;Q<g.length;++Q)Vn(g[Q],z[Q])}var P=Array(w.length),A=[],U=0;if(w.forEach((H,z)=>{if(Oi.hasOwnProperty(H))P[z]=Oi[H];else{if(A.push(H),!Fs.hasOwnProperty(H))Fs[H]=[];Fs[H].push(()=>{if(P[z]=Oi[H],++U,U===A.length)E(P)})}}),A.length===0)E(P)};function wO(g,w,y={}){var E=w.name;if(!g)Ie(`type "${E}" must have a positive integer typeid pointer`);if(Oi.hasOwnProperty(g))if(y.ignoreDuplicateRegistrations)return;else Ie(`Cannot register type '${E}' twice`);if(Oi[g]=w,delete eu[g],Fs.hasOwnProperty(g)){var P=Fs[g];delete Fs[g],P.forEach((A)=>A())}}function Vn(g,w,y={}){if(!("argPackAdvance"in w))throw TypeError("registerType registeredInstance requires argPackAdvance");return wO(g,w,y)}var Pi=8,$O=(g,w,y,E)=>{w=sn(w),Vn(g,{name:w,fromWireType:function(P){return!!P},toWireType:function(P,A){return A?y:E},argPackAdvance:Pi,readValueFromPointer:function(P){return this.fromWireType(G[P])},destructorFunction:null})},id=[],Zn=[],sd=(g)=>{if(g>9&&--Zn[g+1]===0)Zn[g]=void 0,id.push(g)},kO=()=>Zn.length/2-5-id.length,yO=()=>{Zn.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=kO},Ii={toValue:(g)=>{if(!g)Ie("Cannot use deleted val. handle = "+g);return Zn[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=id.pop()||Zn.length;return Zn[w]=g,Zn[w+1]=1,w}}}};function od(g){return this.fromWireType(it[g>>2])}var vO={name:"emscripten::val",fromWireType:(g)=>{var w=Ii.toValue(g);return sd(g),w},toWireType:(g,w)=>Ii.toHandle(w),argPackAdvance:Pi,readValueFromPointer:od,destructorFunction:null},SO=(g)=>Vn(g,vO),EO=(g,w)=>{switch(w){case 4:return function(y){return this.fromWireType(Ar[y>>2])};case 8:return function(y){return this.fromWireType(We[y>>3])};default:throw TypeError(`invalid float width (${w}): ${g}`)}},MO=(g,w,y)=>{w=sn(w),Vn(g,{name:w,fromWireType:(E)=>E,toWireType:(E,P)=>P,argPackAdvance:Pi,readValueFromPointer:EO(w,y),destructorFunction:null})},ad=(g,w)=>Object.defineProperty(w,"name",{value:g}),Lb=(g)=>{while(g.length){var w=g.pop(),y=g.pop();y(w)}};function xO(g){for(var w=1;w<g.length;++w)if(g[w]!==null&&g[w].destructorFunction===void 0)return!0;return!1}function OO(g,w,y,E,P,A){var U=w.length;if(U<2)Ie("argTypes array size mismatch! Must at least get return value and 'this' types!");var H=w[1]!==null&&y!==null,z=xO(w),Q=w[0].name!=="void",bt=U-2,Ct=Array(bt),ue=[],Ke=[],Ls=function(...fd){if(fd.length!==bt)Ie(`function ${g} called with ${fd.length} arguments, expected ${bt}`);Ke.length=0;var dd;if(ue.length=H?2:1,ue[0]=P,H)dd=w[1].toWireType(Ke,this),ue[1]=dd;for(var Cs=0;Cs<bt;++Cs)Ct[Cs]=w[Cs+2].toWireType(Ke,fd[Cs]),ue.push(Ct[Cs]);var GP=E(...ue);function UP(WP){if(z)Lb(Ke);else for(var js=H?1:2;js<w.length;js++){var KP=js===1?dd:Ct[js-2];if(w[js].destructorFunction!==null)w[js].destructorFunction(KP)}if(Q)return w[0].fromWireType(WP)}return UP(GP)};return ad(g,Ls)}var PO=(g,w,y)=>{if(g[w].overloadTable===void 0){var E=g[w];g[w]=function(...P){if(!g[w].overloadTable.hasOwnProperty(P.length))Ie(`Function '${y}' called with an invalid number of arguments (${P.length}) - expects one of (${g[w].overloadTable})!`);return g[w].overloadTable[P.length].apply(this,P)},g[w].overloadTable=[],g[w].overloadTable[E.argCount]=E}},IO=(g,w,y)=>{if(n.hasOwnProperty(g)){if(y===void 0||n[g].overloadTable!==void 0&&n[g].overloadTable[y]!==void 0)Ie(`Cannot register public name '${g}' twice`);if(PO(n,g,g),n.hasOwnProperty(y))Ie(`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},RO=(g,w)=>{var y=[];for(var E=0;E<g;E++)y.push(it[w+E*4>>2]);return y},AO=(g,w,y)=>{if(!n.hasOwnProperty(g))Fb("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},NO=(g,w,y)=>{g=g.replace(/p/g,"i");var E=n["dynCall_"+g];return E(w,...y)},nu=[],Cb,jb=(g)=>{var w=nu[g];if(!w){if(g>=nu.length)nu.length=g+1;nu[g]=w=Cb.get(g)}return w},TO=(g,w,y=[])=>{if(g.includes("j"))return NO(g,w,y);var E=jb(w)(...y);return E},HO=(g,w)=>(...y)=>TO(g,w,y),FO=(g,w)=>{g=sn(g);function y(){if(g.includes("j"))return HO(g,w);return jb(w)}var E=y();if(typeof E!="function")Ie(`unknown function pointer with signature ${g}: ${w}`);return E},LO=(g,w)=>{var y=ad(w,function(E){this.name=w,this.message=E;var P=Error(E).stack;if(P!==void 0)this.stack=this.toString()+`
3
+ `+P.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},_b,Bb=(g)=>{var w=Wb(g),y=sn(w);return Xn(w),y},CO=(g,w)=>{var y=[],E={};function P(A){if(E[A])return;if(Oi[A])return;if(eu[A]){eu[A].forEach(P);return}y.push(A),E[A]=!0}throw w.forEach(P),new _b(`${g}: `+y.map(Bb).join([", "]))},jO=(g)=>{g=g.trim();let w=g.indexOf("(");if(w!==-1)return g.substr(0,w);else return g},_O=(g,w,y,E,P,A,U)=>{var H=RO(w,y);g=sn(g),g=jO(g),P=FO(E,P),IO(g,function(){CO(`Cannot call ${g} due to unbound types`,H)},w-1),bO([],H,(z)=>{var Q=[z[0],null].concat(z.slice(1));return AO(g,OO(g,Q,null,P,A,U),w-1),[]})},BO=(g,w,y)=>{switch(w){case 1:return y?(E)=>K[E]:(E)=>G[E];case 2:return y?(E)=>L[E>>1]:(E)=>gt[E>>1];case 4:return y?(E)=>Xt[E>>2]:(E)=>it[E>>2];default:throw TypeError(`invalid integer width (${w}): ${g}`)}},GO=(g,w,y,E,P)=>{if(w=sn(w),P===-1)P=4294967295;var A=(bt)=>bt;if(E===0){var U=32-8*y;A=(bt)=>bt<<U>>>U}var H=w.includes("unsigned"),z=(bt,Ct)=>{},Q;if(H)Q=function(bt,Ct){return z(Ct,this.name),Ct>>>0};else Q=function(bt,Ct){return z(Ct,this.name),Ct};Vn(g,{name:w,fromWireType:A,toWireType:Q,argPackAdvance:Pi,readValueFromPointer:BO(w,y,E!==0),destructorFunction:null})},UO=(g,w,y)=>{var E=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],P=E[w];function A(U){var H=it[U>>2],z=it[U+4>>2];return new P(K.buffer,z,H)}y=sn(y),Vn(g,{name:y,fromWireType:A,argPackAdvance:Pi,readValueFromPointer:A},{ignoreDuplicateRegistrations:!0})},WO=(g,w,y,E)=>{if(!(E>0))return 0;var P=y,A=y+E-1;for(var U=0;U<g.length;++U){var H=g.charCodeAt(U);if(H>=55296&&H<=57343){var z=g.charCodeAt(++U);H=65536+((H&1023)<<10)|z&1023}if(H<=127){if(y>=A)break;w[y++]=H}else if(H<=2047){if(y+1>=A)break;w[y++]=192|H>>6,w[y++]=128|H&63}else if(H<=65535){if(y+2>=A)break;w[y++]=224|H>>12,w[y++]=128|H>>6&63,w[y++]=128|H&63}else{if(y+3>=A)break;w[y++]=240|H>>18,w[y++]=128|H>>12&63,w[y++]=128|H>>6&63,w[y++]=128|H&63}}return w[y]=0,y-P},KO=(g,w,y)=>WO(g,G,w,y),zO=(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},Gb=(g,w,y)=>{var E=w+y,P="";while(!(w>=E)){var A=g[w++];if(!A)return P;if(!(A&128)){P+=String.fromCharCode(A);continue}var U=g[w++]&63;if((A&224)==192){P+=String.fromCharCode((A&31)<<6|U);continue}var H=g[w++]&63;if((A&240)==224)A=(A&15)<<12|U<<6|H;else A=(A&7)<<18|U<<12|H<<6|g[w++]&63;if(A<65536)P+=String.fromCharCode(A);else{var z=A-65536;P+=String.fromCharCode(55296|z>>10,56320|z&1023)}}return P},DO=(g,w)=>g?Gb(G,g,w):"",qO=(g,w)=>{w=sn(w);var y=w==="std::string";Vn(g,{name:w,fromWireType(E){var P=it[E>>2],A=E+4,U;if(y){var H=A;for(var z=0;z<=P;++z){var Q=A+z;if(z==P||G[Q]==0){var bt=Q-H,Ct=DO(H,bt);if(U===void 0)U=Ct;else U+=String.fromCharCode(0),U+=Ct;H=Q+1}}}else{var ue=Array(P);for(var z=0;z<P;++z)ue[z]=String.fromCharCode(G[A+z]);U=ue.join("")}return Xn(E),U},toWireType(E,P){if(P instanceof ArrayBuffer)P=new Uint8Array(P);var A,U=typeof P=="string";if(!(U||P instanceof Uint8Array||P instanceof Uint8ClampedArray||P instanceof Int8Array))Ie("Cannot pass non-string to std::string");if(y&&U)A=zO(P);else A=P.length;var H=ld(4+A+1),z=H+4;if(it[H>>2]=A,y&&U)KO(P,z,A+1);else if(U)for(var Q=0;Q<A;++Q){var bt=P.charCodeAt(Q);if(bt>255)Xn(z),Ie("String has UTF-16 code units that do not fit in 8 bits");G[z+Q]=bt}else for(var Q=0;Q<A;++Q)G[z+Q]=P[Q];if(E!==null)E.push(Xn,H);return H},argPackAdvance:Pi,readValueFromPointer:od,destructorFunction(E){Xn(E)}})},JO=(g,w)=>{var y="";for(var E=0;!(E>=w/2);++E){var P=L[g+E*2>>1];if(P==0)break;y+=String.fromCharCode(P)}return y},YO=(g,w,y)=>{if(y??=2147483647,y<2)return 0;y-=2;var E=w,P=y<g.length*2?y/2:g.length;for(var A=0;A<P;++A){var U=g.charCodeAt(A);L[w>>1]=U,w+=2}return L[w>>1]=0,w-E},VO=(g)=>g.length*2,ZO=(g,w)=>{var y=0,E="";while(!(y>=w/4)){var P=Xt[g+y*4>>2];if(P==0)break;if(++y,P>=65536){var A=P-65536;E+=String.fromCharCode(55296|A>>10,56320|A&1023)}else E+=String.fromCharCode(P)}return E},XO=(g,w,y)=>{if(y??=2147483647,y<4)return 0;var E=w,P=E+y-4;for(var A=0;A<g.length;++A){var U=g.charCodeAt(A);if(U>=55296&&U<=57343){var H=g.charCodeAt(++A);U=65536+((U&1023)<<10)|H&1023}if(Xt[w>>2]=U,w+=4,w+4>P)break}return Xt[w>>2]=0,w-E},QO=(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},tP=(g,w,y)=>{y=sn(y);var E,P,A,U;if(w===2)E=JO,P=YO,U=VO,A=(H)=>gt[H>>1];else if(w===4)E=ZO,P=XO,U=QO,A=(H)=>it[H>>2];Vn(g,{name:y,fromWireType:(H)=>{var z=it[H>>2],Q,bt=H+4;for(var Ct=0;Ct<=z;++Ct){var ue=H+4+Ct*w;if(Ct==z||A(ue)==0){var Ke=ue-bt,Ls=E(bt,Ke);if(Q===void 0)Q=Ls;else Q+=String.fromCharCode(0),Q+=Ls;bt=ue+w}}return Xn(H),Q},toWireType:(H,z)=>{if(typeof z!="string")Ie(`Cannot pass non-string to C++ string type ${y}`);var Q=U(z),bt=ld(4+Q+w);if(it[bt>>2]=Q/w,P(z,bt+4,Q+w),H!==null)H.push(Xn,bt);return bt},argPackAdvance:Pi,readValueFromPointer:od,destructorFunction(H){Xn(H)}})},eP=(g,w)=>{w=sn(w),Vn(g,{isVoid:!0,name:w,argPackAdvance:0,fromWireType:()=>{return},toWireType:(y,E)=>{return}})},nP=(g,w,y)=>G.copyWithin(g,w,w+y),cd=[],rP=(g,w,y,E)=>{return g=cd[g],w=Ii.toValue(w),g(null,w,y,E)},iP={},sP=(g)=>{var w=iP[g];if(w===void 0)return sn(g);return w},Ub=()=>{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.")},oP=(g)=>{if(g===0)return Ii.toHandle(Ub());else return g=sP(g),Ii.toHandle(Ub()[g])},aP=(g)=>{var w=cd.length;return cd.push(g),w},cP=(g,w)=>{var y=Oi[g];if(y===void 0)Ie(`${w} has unknown type ${Bb(g)}`);return y},uP=(g,w)=>{var y=Array(g);for(var E=0;E<g;++E)y[E]=cP(it[w+E*4>>2],"parameter "+E);return y},lP=Reflect.construct,fP=(g,w,y)=>{var E=[],P=g.toWireType(E,y);if(E.length)it[w>>2]=Ii.toHandle(E);return P},dP=(g,w,y)=>{var E=uP(g,w),P=E.shift();g--;var A=Array(g),U=(z,Q,bt,Ct)=>{var ue=0;for(var Ke=0;Ke<g;++Ke)A[Ke]=E[Ke].readValueFromPointer(Ct+ue),ue+=E[Ke].argPackAdvance;var Ls=y===1?lP(Q,A):Q.apply(z,A);return fP(P,bt,Ls)},H=`methodCaller<(${E.map((z)=>z.name).join(", ")}) => ${P.name}>`;return aP(ad(H,U))},hP=(g)=>{if(g>9)Zn[g+1]+=1},mP=(g)=>{var w=Ii.toValue(g);Lb(w),sd(g)},pP=()=>{xb("")},gP=()=>2147483648,bP=(g)=>{var w=R.buffer,y=(g-w.byteLength+65535)/65536;try{return R.grow(y),Sn(),1}catch(E){}},wP=(g)=>{var w=G.length;g>>>=0;var y=gP();if(g>y)return!1;var E=(z,Q)=>z+(Q-z%Q)%Q;for(var P=1;P<=4;P*=2){var A=w*(1+0.2/P);A=Math.min(A,g+100663296);var U=Math.min(y,E(Math.max(g,A),65536)),H=bP(U);if(H)return!0}return!1},ud={},$P=()=>l||"./this.program",la=()=>{if(!la.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,_:$P()};for(var y in ud)if(ud[y]===void 0)delete w[y];else w[y]=ud[y];var E=[];for(var y in w)E.push(`${y}=${w[y]}`);la.strings=E}return la.strings},kP=(g,w)=>{for(var y=0;y<g.length;++y)K[w++]=g.charCodeAt(y);K[w]=0},yP=(g,w)=>{var y=0;return la().forEach((E,P)=>{var A=w+y;it[g+P*4>>2]=A,kP(E,A),y+=E.length+1}),0},vP=(g,w)=>{var y=la();it[g>>2]=y.length;var E=0;return y.forEach((P)=>E+=P.length+1),it[w>>2]=E,0},SP=0,EP=()=>dO||SP>0,MP=(g)=>{if(_=g,!EP())n.onExit?.(g),T=!0;d(g,new fO(g))},xP=(g,w)=>{_=g,MP(g)},OP=xP,PP=(g)=>52,IP=(g,w)=>w+2097152>>>0<4194305-!!g?(g>>>0)+w*4294967296:NaN;function RP(g,w,y,E,P){var A=IP(w,y);return 70}var AP=[null,[],[]],NP=(g,w)=>{var y=AP[g];if(w===0||w===10)(g===1?M:x)(Gb(y,0)),y.length=0;else y.push(w)},TP=(g,w,y,E)=>{var P=0;for(var A=0;A<y;A++){var U=it[w>>2],H=it[w+4>>2];w+=8;for(var z=0;z<H;z++)NP(g,G[U+z]);P+=H}return it[E>>2]=P,0};gO(),Tb=n.BindingError=class extends Error{constructor(w){super(w);this.name="BindingError"}},Hb=n.InternalError=class extends Error{constructor(w){super(w);this.name="InternalError"}},yO(),_b=n.UnboundTypeError=LO(Error,"UnboundTypeError");var HP={o:mO,q:pO,m:$O,l:SO,j:MO,f:_O,b:GO,a:UO,e:qO,c:tP,n:eP,v:nP,i:rP,d:sd,k:oP,h:dP,y:hP,g:mP,r:pP,s:wP,t:yP,u:vP,z:OP,w:PP,p:RP,x:TP},ce=lO(),FP=()=>(FP=ce.B)(),Wb=(g)=>(Wb=ce.C)(g),ld=(g)=>(ld=ce.D)(g),Xn=(g)=>(Xn=ce.E)(g),LP=(g)=>(LP=ce._emscripten_stack_restore)(g),CP=(g)=>(CP=ce._emscripten_stack_alloc)(g),jP=()=>(jP=ce.emscripten_stack_get_current)(),_P=(g)=>(_P=ce.__cxa_increment_exception_refcount)(g),Kb=(g)=>(Kb=ce.G)(g),BP=n.dynCall_jiji=(g,w,y,E,P)=>(BP=n.dynCall_jiji=ce.H)(g,w,y,E,P),ru;ua=function g(){if(!ru)zb();if(!ru)ua=g};function zb(){if(Mi>0)return;if(td(),Mi>0)return;function g(){if(ru)return;if(ru=!0,n.calledRun=!0,T)return;if(ed(),r(n),n.onRuntimeInitialized)n.onRuntimeInitialized();eO()}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 zb(),s}})(),Xw=MR;function Td(t){let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=t[0]===73&&t[1]===73;if(t.length<8||!n&&(t[0]!==77||t[1]!==77))return 1;let r=e.getUint32(4,n);if(r+2>t.length)return 1;for(let i=r+2,s=e.getUint16(r,n);s>0&&i+12<=t.length;s--,i+=12)if(e.getUint16(i,n)===274){let o=e.getUint16(i+8,n);return o>=1&&o<=8?o:1}return 1}function Hd(t){if(t[0]!==255||t[1]!==216)return null;let e=1,n=2;while(n+9<t.length){if(t[n]!==255){n++;continue}let r=t[n+1];if(r===255){n++;continue}let i=t[n+2]<<8|t[n+3];if(r===225&&String.fromCharCode(...t.subarray(n+4,n+10))==="Exif\x00\x00")e=Td(t.subarray(n+10,Math.min(t.length,n+2+i)));if(r>=192&&r<=207&&r!==196&&r!==200&&r!==204){let s=t[n+5]<<8|t[n+6],o=t[n+7]<<8|t[n+8];return e>=5?{width:s,height:o}:{width:o,height:s}}n+=2+i}return null}var Nd;function OR(){if(Nd)return Nd;let t=new WebAssembly.Module(xR(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(Xw(e),typeof e.decode!=="function")throw Error("the JPEG decoder did not start");return Nd=e,e}function Qw(t,e){let n=Hd(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);let r=null;try{r=OR().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 zs=[137,80,78,71,13,10,26,10],r0=13,pa=3;function jr(t){return t.length>=zs.length&&zs.every((e,n)=>t[n]===e)}var i0={0:1,2:3,3:1,4:2,6:4};function s0(t){if(t.length<33||!jr(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||i0[i]===void 0)return;let s=[],o,a;for(let c=8;c+12<=e.length;){let u=e.readUInt32BE(c),f=e.toString("latin1",c+4,c+8),l=e.subarray(c+8,c+8+u);if(f==="IDAT")s.push(l);else if(f==="PLTE")o=l;else if(f==="tRNS"){if(i!==pa)return;a=l}else if(f==="IEND")break;c+=12+u}if(s.length===0||i===pa&&!o)return;return{width:n,height:r,type:i,idat:s,palette:o,opacity:a}}function AR(t,e){let n=new Uint32Array(256),r=new Uint8Array(n.buffer);for(let i=0;i<256;i++)r[i*4]=t[i*3]??0,r[i*4+1]=t[i*3+1]??0,r[i*4+2]=t[i*3+2]??0,r[i*4+3]=e?.[i]??255;return n}function NR(t,e,n,r){let i=new Uint8Array(e);for(let s=0;s<n;s++){let o=s*(e+1),a=t[o],c=o+1,u=s>0?t:i,f=s>0?c-e-1:0;if(a===1)for(let l=r;l<e;l++)t[c+l]=t[c+l]+t[c+l-r];else if(a===2)for(let l=0;l<e;l++)t[c+l]=t[c+l]+u[f+l];else if(a===3){for(let l=0;l<r;l++)t[c+l]=t[c+l]+(u[f+l]>>1);for(let l=r;l<e;l++)t[c+l]=t[c+l]+(t[c+l-r]+u[f+l]>>1)}else if(a===4){for(let l=0;l<r;l++)t[c+l]=t[c+l]+u[f+l];for(let l=r;l<e;l++){let d=t[c+l-r],h=u[f+l],m=u[f+l-r],p=Math.abs(h-m),b=Math.abs(d-m),$=Math.abs(d+h-2*m);t[c+l]=t[c+l]+(p<=b&&p<=$?d:b<=$?h:m)}}else if(a!==0)throw Error(`bad PNG filter ${a}`)}}function TR(t){let{width:e,height:n,type:r}=t,i=i0[r],s=e*i,o=RR(Buffer.concat(t.idat),{chunkSize:Math.min(268435456,Math.max(65536,n*(s+1)))});if(o.length<n*(s+1))throw Error("truncated PNG");NR(o,s,n,i);let a=new Uint8Array(e*n*4),c=r===pa?AR(t.palette,t.opacity):void 0,u=new Uint32Array(a.buffer);for(let f=0;f<n;f++){let l=f*(s+1)+1,d=f*e*4;if(c)for(let h=0,m=f*e;h<e;h++,m++)u[m]=c[o[l+h]];else if(r===6)a.set(o.subarray(l,l+s),d);else if(r===2)for(let h=0,m=l,p=d;h<e;h++,m+=3,p+=4)a[p]=o[m],a[p+1]=o[m+1],a[p+2]=o[m+2],a[p+3]=255;else if(r===0)for(let h=0,m=d;h<e;h++,m+=4){let p=o[l+h];a[m]=p,a[m+1]=p,a[m+2]=p,a[m+3]=255}else for(let h=0,m=l,p=d;h<e;h++,m+=2,p+=4){let b=o[m];a[p]=b,a[p+1]=b,a[p+2]=b,a[p+3]=o[m+1]}}return{width:e,height:n,data:a}}function Fd(t){let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength);for(let n=8;n+12<=e.length;){let r=e.readUInt32BE(n),i=e.toString("latin1",n+4,n+8);if(i==="eXIf")return Td(e.subarray(n+8,Math.min(e.length,n+8+r)));if(i==="IDAT"||i==="IEND")return 1;n+=12+r}return 1}function t0(t,e){if(e<=1)return t;let{width:n,height:r}=t,i=e>=5?r:n,s=e>=5?n:r,o=new Uint32Array(t.data.buffer,t.data.byteOffset,n*r),a=new Uint8Array(i*s*4),c=new Uint32Array(a.buffer);for(let u=0;u<s;u++)for(let f=0;f<i;f++){let l=e<=3&&e>=2?n-1-f:e===5||e===6?u:e>=7?n-1-u:f,d=e===3||e===4?r-1-u:e===5||e===8?f:e>=6?r-1-f:u;c[u*i+f]=o[d*n+l]}return{width:i,height:s,data:a}}function Wt(t){let e=s0(t);if(e)return t0(TR(e),Fd(t));let n=n0.PNG.sync.read(Buffer.from(t));return t0({width:n.width,height:n.height,data:new Uint8Array(n.data)},Fd(t))}function Pn(t,e){if(jr(t)){let n=In(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);return Wt(t)}if(t[0]===255&&t[1]===216)return Qw(t,e);throw Error("not a PNG or JPEG image")}function Ld(t,e,n){let{width:r,height:i,at:s}=e,o=Math.max(0,s.x),a=Math.max(0,s.y),c=Math.min(r,s.x+s.w),u=Math.min(i,s.y+s.h);if(c<=o||u<=a)return;let f={x:o,y:a,w:c-o,h:u-a};if(s.w===t.width&&s.h===t.height)return{part:t,box:f,dx:o-s.x,dy:a-s.y};let l={x:(o-s.x)*t.width/s.w,y:(a-s.y)*t.height/s.h,w:f.w*t.width/s.w,h:f.h*t.height/s.h};return{part:n(t,l,f.w,f.h),box:f,dx:0,dy:0}}function o0(t,e){let n=new Uint8Array(e.width*e.height*4),r=Ld(t,e,Br);if(r){let{part:i,box:s,dx:o,dy:a}=r;for(let c=0;c<s.h;c++){let u=((c+a)*i.width+o)*4;n.set(i.data.subarray(u,u+s.w*4),((s.y+c)*e.width+s.x)*4)}}return{width:e.width,height:e.height,data:n}}function a0(t,e){let n=new Uint8Array(e.width*e.height),r=Ld(t,e,(i,s,o,a)=>Ds(jd(i,s,o,a)));if(r){let{part:i,box:s,dx:o,dy:a}=r;for(let c=0;c<s.h;c++){let u=(c+a)*i.width+o;n.set(i.data.subarray(u,u+s.w),(s.y+c)*e.width+s.x)}}return{width:e.width,height:e.height,data:n}}function _r(t,e,n,r={width:t.width,height:t.height,at:{x:0,y:0,w:t.width,h:t.height}}){let i=st(e),{width:s,height:o}=r,a=new Uint8Array(s*o*3);for(let h=0;h<s*3;h+=3)a.set(i,h);for(let h=1;h<o;h++)a.copyWithin(h*s*3,0,s*3);let c=Ld(t,r,Br);if(!c)return{width:s,height:o,data:a};let{part:u,box:f,dx:l,dy:d}=c;for(let h=0;h<f.h;h++)for(let m=0;m<f.w;m++){let p=((h+d)*u.width+m+l)*4,b=((f.y+h)*s+f.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:s,height:o,data:a}}function e0(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 In(t){if(t.length<33||!jr(t))return null;let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=Fd(t)>=5,r=e.getUint32(n?20:16),i=e.getUint32(n?16:20);if(t[25]===4||t[25]===6)return{width:r,height:i,alpha:!0};let s=e0(t,"IDAT");return{width:r,height:i,alpha:e0(s===-1?t:t.subarray(0,s),"tRNS")!==-1}}function c0(t,e=r0){let{width:n,height:r,data:i}=t,s=(f)=>{for(let l=f*n*4+3,d=l+n*4;l<d;l+=4)if(i[l]>=e)return!0;return!1},o=0;while(o<r&&!s(o))o++;if(o===r)return null;let a=r-1;while(!s(a))a--;let c=n,u=-1;for(let f=o;f<=a;f++){let l=f*n*4+3;for(let d=0;d<c;d++)if(i[l+d*4]>=e){c=d;break}for(let d=n-1;d>u;d--)if(i[l+d*4]>=e){u=d;break}}return{x:c,y:o,w:u-c+1,h:a-o+1}}function rr(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)<r0)n++;return Math.round(n*100/(e.w*e.h))}function u0(t,e,n){let r=Math.min(e/t.width,n/t.height),i=Math.max(1,Math.round(t.width*r)),s=Math.max(1,Math.round(t.height*r)),o=Br(t,{x:0,y:0,w:t.width,h:t.height},i,s),a=new Uint8Array(e*n*4),c=Math.floor((e-i)/2),u=Math.floor((n-s)/2);for(let f=0;f<s;f++)a.set(o.data.subarray(f*i*4,(f+1)*i*4),((u+f)*e+c)*4);return{width:e,height:n,data:a}}function HR(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 Cd(t,e,n,r){if(n===r&&Number.isInteger(e)&&e>=0&&e+r<=t)return{first:Int32Array.from({length:r},(f,l)=>e+l),size:1,weights:new Float32Array(r).fill(1)};let i=n/r,s=Math.max(1,i),o=2*s,a=Math.min(t,Math.ceil(2*o)+2),c=new Int32Array(r),u=new Float32Array(r*a);for(let f=0;f<r;f++){let l=e+(f+0.5)*i,d=Math.floor(l-o-0.5),h=Math.max(0,Math.min(t-a,d));c[f]=h;let m=0;for(let p=d;p<=Math.ceil(l+o-0.5);p++){let b=HR((p+0.5-l)/s),$=f*a+Math.min(t-1,Math.max(0,p))-h;u[$]=(u[$]??0)+b,m+=b}for(let p=f*a;p<(f+1)*a;p++)u[p]=(u[p]??0)/m}return{first:c,size:a,weights:u}}function l0(t,e,n,r,i,s,o){let a=Cd(t,e.y,e.h,r),c=n*i,u=a.size+1,f=Array.from({length:u},()=>new Float32Array(c)),l=new Int32Array(u).fill(-1),d=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,x=f[M];if(l[M]!==S)s(S,x),l[M]=S;h.push(x),m.push(v)}let $=0;while($<h.length){let k=h[$],v=m[$];if(h.length-$>=4){let S=h[$+1],M=h[$+2],x=h[$+3],N=m[$+1],R=m[$+2],T=m[$+3];if($===0)for(let _=0;_<c;_++)d[_]=k[_]*v+S[_]*N+M[_]*R+x[_]*T;else for(let _=0;_<c;_++)d[_]=d[_]+(k[_]*v+S[_]*N+M[_]*R+x[_]*T);$+=4}else{if($===0)for(let S=0;S<c;S++)d[S]=k[S]*v;else for(let S=0;S<c;S++)d[S]=d[S]+k[S]*v;$+=1}}if(h.length===0)d.fill(0);o(p,d)}}function f0(t,e,n,r,i){let s=0,o=n;while(s<o){let c=s+o>>1;if(t[c]+e-1<r)s=c+1;else o=c}let a=s;o=n;while(s<o){let c=s+o>>1;if(t[c]<=i)s=c+1;else o=c}return[a,s]}function Br(t,e,n,r){let i=Cd(t.width,e.x,e.w,n),s=t.data,o=t.width,a=new Float32Array(o*4),c=new Uint8Array(n*r*4);return l0(t.height,e,n,r,4,(u,f)=>{let l=u*o*4,d=o,h=-1;for(let b=0,$=0;b<o*4;b+=4,$++){let k=s[l+b+3];if(k===0){a[b]=0,a[b+1]=0,a[b+2]=0,a[b+3]=0;continue}if($<d)d=$;h=$,a[b]=s[l+b]*k,a[b+1]=s[l+b+1]*k,a[b+2]=s[l+b+2]*k,a[b+3]=k}if(f.fill(0),h<0)return;let[m,p]=f0(i.first,i.size,n,d,h);for(let b=m;b<p;b++){let $=i.first[b]*4,k=b*i.size,v=0,S=0,M=0,x=0;for(let N=0;N<i.size;N++){let R=i.weights[k+N],T=$+N*4;v+=a[T]*R,S+=a[T+1]*R,M+=a[T+2]*R,x+=a[T+3]*R}f[b*4]=v,f[b*4+1]=S,f[b*4+2]=M,f[b*4+3]=x}},(u,f)=>{let l=u*n*4;for(let d=0;d<n;d++){let h=d*4,m=f[h+3];if(m<=0)continue;let p=f[h]/m;c[l+h]=(p<0?0:p>255?255:p)+0.5,p=f[h+1]/m,c[l+h+1]=(p<0?0:p>255?255:p)+0.5,p=f[h+2]/m,c[l+h+2]=(p<0?0:p>255?255:p)+0.5,c[l+h+3]=(m>255?255:m)+0.5}}),{width:n,height:r,data:c}}function jd(t,e,n,r){let i=Cd(t.width,e.x,e.w,n),s=t.data,o=t.width,a=new Float32Array(n*r);return l0(t.height,e,n,r,1,(c,u)=>{let f=c*o,l=o,d=-1;for(let p=0;p<o;p++)if(s[f+p]!==0){if(p<l)l=p;d=p}if(u.fill(0),d<0)return;let[h,m]=f0(i.first,i.size,n,l,d);for(let p=h;p<m;p++){let b=f+i.first[p],$=p*i.size,k=0;for(let v=0;v<i.size;v++)k+=s[b+v]*i.weights[$+v];u[p]=k}},(c,u)=>{a.set(u,c*n)}),{width:n,height:r,data:a}}function ga(t,e){if(e<=0)return t;let n=Math.max(1,Math.ceil(e*3)),r=Array.from({length:2*n+1},(f,l)=>Math.exp(-((l-n)**2)/(2*e*e))),i=r.reduce((f,l)=>f+l,0),{width:s,height:o,data:a}=t,c=new Float32Array(s*o);for(let f=0;f<o;f++){let l=f*s;for(let d=0;d<s;d++){let h=0;for(let m=-n;m<=n;m++)h+=(a[l+Math.min(s-1,Math.max(0,d+m))]??0)*(r[m+n]??0);c[l+d]=h/i}}let u=new Float32Array(s*o);for(let f=0;f<o;f++){let l=f*s;for(let d=-n;d<=n;d++){let h=(r[d+n]??0)/i,m=Math.min(o-1,Math.max(0,f+d))*s;for(let p=0;p<s;p++)u[l+p]=(u[l+p]??0)+(c[m+p]??0)*h}}return{width:s,height:o,data:u}}function Ds(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 ir(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 FR=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 LR(t){let e=4294967295;for(let n of t)e=(FR[(e^n)&255]??0)^e>>>8;return(e^4294967295)>>>0}function Cr(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(LR(n.subarray(4,8+e.length)),8+e.length),n}function d0(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 s=i*(e+1),o=i*e,a=o-e;r[s]=2;for(let c=0;c<e;c++)r[s+1+c]=t[o+c]-t[a+c]}return r}function h0(t){return IR(t,{level:1,strategy:PR.Z_RLE})}function m0(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(zs),Cr("IHDR",r),...n,Cr("IDAT",h0(d0(t.data,t.width,t.height))),Cr("IEND",new Uint8Array)])}function p0(t){let[e,n,r]=st(t),i=new Uint8Array(768);for(let s=0;s<256;s++)i.set([e,n,r],s*3);return Cr("PLTE",i)}function g0(t,e,n,r,i){let s=Buffer.alloc(13);return s.writeUInt32BE(t,0),s.writeUInt32BE(e,4),s[8]=8,s[9]=n,Buffer.concat([Buffer.from(zs),Cr("IHDR",s),Cr("IDAT",h0(d0(i,t*r,e))),Cr("IEND",new Uint8Array)])}function Gr(t){return g0(t.width,t.height,2,3,t.data)}function De(t){return g0(t.width,t.height,6,4,t.data)}function sr(t,e){return m0(t,pa,[p0(e),Cr("tRNS",Uint8Array.from({length:256},(n,r)=>r))])}function _d(t){return m0(t,0,[])}function b0(t){let e=s0(t)?.palette;if(!e||e.length<3)return;for(let n=3;n+2<e.length;n+=3)if(e[n]!==e[0]||e[n+1]!==e[1]||e[n+2]!==e[2])return;return`#${[...e.subarray(0,3)].map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function au(t,e){if(!jr(t)||t[25]!==pa)return;let n=Buffer.from(t.buffer,t.byteOffset,t.byteLength),r=[Buffer.from(zs)],i=zs.length;while(i+8<=n.length){let s=i+12+n.readUInt32BE(i);r.push(n.toString("latin1",i+4,i+8)==="PLTE"?p0(e):n.subarray(i,s)),i=s}return Buffer.concat(r)}var Rn=100,fe=25000000,WR=536870912,qs=["safe","questionable","explicit"],Ti=["nudity","underwear"],Wd=["comic","monochrome","sketch","chibi"],x0=["off","5","10","25","50","100"],O0=["off","720","1080","1440","1800","2560"],P0={nudity:new Set(["nude","naked","topless","bottomless","nipples","naked_towel","undressing"]),underwear:new Set(["underwear","panties","pantsu","bra","lingerie","pantyshot"])},KR={comic:new Set(["comic","4koma"]),monochrome:new Set(["monochrome","greyscale"]),sketch:new Set(["sketch","lineart","line_art"]),chibi:new Set(["chibi"])},zR=/^(?:rating|score|width|height|filetype|dimension):/,ba={safe:"s",questionable:"q",explicit:"e"},I0=8191,DR=20000,R0=5000,w0=3000,$0=8,qR=8,JR=8000,YR=3000,A0=60000,k0=3,VR=3,ZR="https://static.zerochan.net",N0="https://s1.zerochan.net",Kd=`ttheme/${lt.version} (+${lt.homepage})`,XR=["orig","tile","thumb","cut"],T0=new Map,QR=gA(process.env.TTHEME_FIND_HOSTS),tA=pA(process.env.TTHEME_FIND_CUTOUTS);BR(YR);var eA=["artist","character","copyright"];function y0(t){try{return CR(t)}catch{return[]}}function Js(t){return t.startsWith("//")?`https:${t}`:t}function Ur(t){return(/\.([a-z0-9]+)(?:\?.*)?$/i.exec(t)?.[1]??"").toLowerCase()}function Ys(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 nA(t){let e=t.trim(),r=(e?JSON.parse(e):{}).tags??{};return new Map(Object.entries(r).map(([i,s])=>[i,String(s)]))}function Gd(t,e,n){let r=Js(String(t??""));return{file:r,width:Number(e)||0,height:Number(n)||0,ext:Ur(r)}}function or(t){return String(t??"").split(/\s+/).filter(Boolean)}function Ud(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 H0(t,e){let n=Js(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:or(e.tags),named:e.named,...Ud(t.created_at)?{posted:Ud(t.created_at)}:{},solo:e.solo,family:Number(t.parent_id)||(t.has_children===!0?Number(t.id):0),smaller:e.versions.filter((s)=>s.file&&s.width>0&&s.height>0&&s.width*s.height<r*i)}]}function rA(t){let e=nA(t);return Ys(t).flatMap((n)=>{let r=Js(String(n.file_url??"")),i=String(n.tags??""),s=(o)=>or(i).filter((a)=>e.get(a)===o);return H0(n,{preview:n.preview_url,file:r,ext:String(n.file_ext||Ur(r)).toLowerCase(),owner:n.author,md5:n.md5,tags:i,named:{artist:s("artist"),character:s("character"),copyright:s("copyright")},solo:void 0,versions:[Gd(n.jpeg_url,n.jpeg_width,n.jpeg_height),Gd(n.sample_url,n.sample_width,n.sample_height)]})})}function iA(t){return Ys(t).flatMap((e)=>{let n=Js(String(e.file_url??"")),r=String(e.tag_string??""),i=e.media_asset??{};return H0(e,{preview:i.variants?.find((s)=>s.type==="360x360")?.url??e.preview_file_url,file:n,ext:String(e.file_ext||Ur(n)).toLowerCase(),owner:"",md5:e.md5,tags:r,named:{artist:or(e.tag_string_artist),character:or(e.tag_string_character),copyright:or(e.tag_string_copyright)},solo:r.split(/\s+/).includes("solo"),versions:(i.variants??[]).map((s)=>Gd(s.url,s.width,s.height)).filter((s)=>s.ext==="jpg"||s.ext==="png").sort((s,o)=>o.width*o.height-s.width*s.height)})})}function F0(t){return t.toLowerCase().replace(/\s+/g,"_")}function sA(t){return(Array.isArray(t)?t:[]).map((e)=>F0(String(e)))}function oA(t){return String(t??"").replace(/[^0-9a-z]+/gi,".").replace(/^\.+|\.+$/g,"")||"zerochan"}function aA(t){let e=t.trim(),n=e?JSON.parse(e):{};return(Array.isArray(n.items)?n.items:n.id?[n]:[]).flatMap((i)=>{let s=Number(i.id);if(!s)return[];let o=sA(i.tags),a=Js(String(i.full??""));return[{id:s,width:Number(i.width)||0,height:Number(i.height)||0,file:a,ext:Ur(a),preview:`${N0}/${oA(i.tag??i.primary)}.600.${s}.jpg`,owner:"",score:0,rating:o.some((c)=>P0.nudity.has(c))?"q":"g",md5:String(i.md5??i.hash??""),source:String(i.source??""),tags:o,named:{artist:[],character:[],copyright:[]},solo:o.includes("solo"),family:0,smaller:[]}]})}var cA={mangaka:"artist",studio:"artist",character:"character",series:"copyright",game:"copyright"};function v0(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 uA(t){let e={artist:[],character:[],copyright:[]};for(let[,r,i]of t.matchAll(/<li class="([a-z]+)[^"]*"[^>]*\bdata-tag="([^"]*)"/g)){let s=cA[r],o=F0(v0(i));if(s&&!e[s].includes(o))e[s].push(o)}let n=Ud(/"datePublished":\s*"([^"]+)"/.exec(t)?.[1]);return{named:e,source:"",owner:v0(/\buploader = \{\s*name: '([^']*)'/.exec(t)?.[1]??""),...n?{posted:n}:{}}}function lA(t){return Number(/Zerochan has ([\d,]+) /.exec(t)?.[1]?.replace(/,/g,"")??0)}function fA(t){return Ys(t).flatMap((e)=>{let n=String(e.value??"");return n?[{value:n,count:Number(e.post_count)||0}]:[]})}function dA(t){return Ys(t).flatMap((e)=>{let n=String(e.name??"");return n?[{value:n,count:Number(e.count)||0}]:[]})}function hA(t){return Number(/count="(\d+)"/.exec(t)?.[1]??0)}function mA(t){let n=(t.trim()?JSON.parse(t):{}).counts?.posts;return n===null?Number.NaN:Number(n)||0}function pA(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 gA(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 s=new URL(n.slice(r+1));if(i&&s.protocol==="https:")e.set(i,s.origin)}catch{}}return e}function cu(t,e,n,r){let i=(t??"").split(/\s+/);if(r!==void 0&&i.includes(r))return[];let s=e.filter((o)=>i.includes(o));return s.length>0?s:[...n]}function Hi(t){return cu(t,qs,["safe"])}function Vs(t){return cu(t,Ti,Ti,"none")}function uu(t){return cu(t,Wd,[],"none")}function $a(t){let e=Z.map((n)=>n.name);return cu(t,e,e)}function zd(t,e,n){return{score:Number(t)||0,size:Number(e)||0,png:n==="on"}}function ka(t){return[...new Set((t??"").toLowerCase().split(/[\s,]+/).map((e)=>e.replace(/^-+/,"")).filter(Boolean))]}function Dd(t,e,n){return{safe:new Set(t),questionable:new Set(e),explicit:new Set(n)}}function qd(t){let e=QR.get(t.key),n=tA.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 L0(t){return t.length<2?t.join(""):t.map((e)=>`~${e}`).join(" ")}function C0(t){return t>0?[`width:>=${t}`,`height:>=${t}`]:[]}function S0(t){let e=qd(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}`]:[],...C0(i)],cutouts:L0(e.cutouts),ratings:Dd([ba.safe],[ba.questionable],[ba.explicit]),rate:(r)=>{let[i]=r;if(r.length===1&&i)return`rating:${ba[i]}`;let s=qs.filter((a)=>!r.includes(a)),[o]=s;return s.length===1&&o?`-rating:${ba[o]}`:""},best:"order:score",tagBudget:Number.POSITIVE_INFINITY,ors:!0,postsUrl:(r,i)=>`${e.origin}/post.json?${n({limit:String(Rn),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:rA,count:hA,uploadedBy:(r)=>`user:${r}`}}function bA(t){let e=qd(t),n=Dd(["g"],["s","q"],["e"]);return{...e,scored:!0,narrow:({score:r,size:i,png:s})=>[...r>0?[`score:>=${r}`]:[],...C0(i),...s?["filetype:png"]:[]],cutouts:L0(e.cutouts),ratings:n,rate:(r)=>r.length===qs.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(Rn),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:iA,count:mA,uploadedBy:(r)=>`user:${r}`}}function Bd(t){return t.split(/\s+/).filter((e)=>e&&!/^(?:order|dimension):/.test(e)).map((e)=>e.split("_").map(encodeURIComponent).join("+")).join(",")}function E0(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 wA(t){let e=qd(t);return{...e,scored:!1,narrow:({size:n})=>n>=1800?["dimension:huge"]:n>0?["dimension:large"]:[],cutouts:e.cutouts[0]??"",ratings:Dd(["g"],["q"],["e"]),rate:()=>"",best:"order:fav",tagBudget:3,ors:!1,missing:404,postsUrl:(n,r)=>`${e.origin}/${Bd(n)}?${new URLSearchParams({json:"",l:String(Rn),p:String(r+1),...E0(n)})}`,countUrl:(n)=>`${e.origin}/${Bd(n)}?${new URLSearchParams({xml:"",l:"1"})}`,postUrl:(n)=>`${e.origin}/${n}?json=`,pageUrl:(n)=>`${e.origin}/${n}`,parse:aA,count:lA,credits:uA,counts:(n)=>Bd(n).split(",").length===1&&!("d"in E0(n)),guesses:(n)=>(n.tags.includes("transparent_background")?["png","jpg"]:["jpg","png"]).map((r)=>n.preview.replace(N0,ZR).replace(/\.600\.(\d+)\.jpg$/,`.full.$1.${r}`))}}function $A(t){let e=M0(`https://${t}`);return Z.find((n)=>M0(n.origin)===e)}function Jd(t){return t.split(/\s+/).filter((e)=>e&&!zR.test(e)).length}function lu(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=Z.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 s=$A(i.host),o=Number(i.searchParams.get("id")??i.pathname.split("/").findLast(Boolean));return s&&o>0?{site:s,id:o}:void 0}var Z=[bA({key:"danbooru",name:"danbooru",origin:"https://shima.donmai.us",cutouts:["transparent_background"],vouched:!1,ansi:2}),S0({key:"konachan",name:"konachan",origin:"https://konachan.net",cutouts:["transparent","vector"],vouched:!1,ansi:6}),S0({key:"yande",name:"yande.re",origin:"https://yande.re",cutouts:["transparent_png"],vouched:!0,ansi:5}),wA({key:"zerochan",name:"zerochan",origin:"https://www.zerochan.net",cutouts:["transparent_background"],vouched:!1,ansi:3})],Pt=Z.find((t)=>t.key==="danbooru"),Wr=134217728;function ee(t,e){let n=Z.indexOf(t);return(n===-1?Z.length:n)*Wr+e}function M0(t){let e;try{e=new URL(t).hostname}catch{return""}return e.split(".").slice(-2).join(".")}function Kr(t,e,n=e){return e.mirror&&n===e?{site:Pt,url:e.mirror.file}:{site:t,url:n.file}}function fu(t,e){return e.mirror?{site:Pt,url:e.mirror.preview}:{site:t,url:e.preview}}function du(t,e=Ti){return t.tags.filter((n)=>e.some((r)=>P0[r].has(n)))}function j0(t,e){return t.tags.filter((n)=>e.some((r)=>KR[r].has(n)))}function hu(t,e,n=["safe"]){return n.some((r)=>t.ratings[r].has(e.rating))}function _0(t,e){return t.rate(["safe"])===""?void 0:qs.find((n)=>t.ratings[n].has(e.rating))}function un(t){return[t,...t.smaller].find((e)=>e.width*e.height<=fe)}function B0(t){let e=new Map;for(let[n,r]of[...t].sort(([i],[s])=>i<s?-1:1)){if(r==="")continue;e.set(r,[...e.get(r)??[],n])}return e}function Nn(){return wa(process.env.XDG_CACHE_HOME??wa(GR(),".cache"),"ttheme")}function ln(t){return wa(Nn(),t.key)}function G0(t=WR,e=Nn()){let n=[],r=0;for(let i of y0(e))for(let s of XR){let o=wa(e,i,s);for(let a of y0(o)){let c=wa(o,a);try{let{size:u,mtimeMs:f}=_R(c);n.push({path:c,size:u,at:f}),r+=u}catch{}}}n.sort((i,s)=>i.at-s.at);for(let i of n){if(r<=t)return;try{jR(i.path,{force:!0}),r-=i.size}catch{}}}function kA(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)?A0:Math.max(0,n-e)}function An(t){return T0.get(t.key)??0}function yA(t){for(let e=t;e instanceof Error;e=e.cause)if(e.code==="ECONNRESET")return!0;return!1}function vA(t){return(t.headers.get("server")??"").startsWith("cloudflare")&&t.headers.get("cf-mitigated")==="challenge"}function SA(t,e){let n=new URL(e,t);if(!n.search)n.search=new URL(t).search;return n.href}async function ar(t,e,n,r={},i=DR){let s=e;for(let o=1,a=0;;o++){let c=An(t)-Date.now();if(c>0)await UR(c,void 0,{signal:n});let u;try{u=await fetch(s,{headers:{"User-Agent":Kd,Referer:`${t.origin}/`,...r},redirect:"manual",signal:i?AbortSignal.any([n,AbortSignal.timeout(i)]):n})}catch(l){if(o<k0&&!n.aborted&&yA(l))continue;throw l}let f=u.headers.get("location");if(f&&u.status>=300&&u.status<400&&a<VR){await u.body?.cancel(),s=SA(s,f),a++,o--;continue}if(u.status===429&&o<k0){await u.body?.cancel();let l=kA(u.headers.get("retry-after"),Date.now());if(l>A0)throw Error(`${t.name} asks to wait ${Math.ceil(l/1000)}s`);T0.set(t.key,Math.max(An(t),Date.now()+l));continue}if(!u.ok)throw await u.body?.cancel(),Object.assign(Error(vA(u)?`${t.name} is behind a Cloudflare challenge`:`${t.name} answered ${u.status}`),{status:u.status});return u}}async function mu(t,e,n){try{return await(await ar(t,e,n)).text()}catch(r){if(t.missing!==void 0&&r.status===t.missing)return"";throw r}}async function U0(t,e,n,r){return t.parse(await mu(t,t.postsUrl(e,n),r))}async function Yd(t,e,n){return t.count(await mu(t,t.countUrl(e),n))}async function Fi(t,e,n){let[r]=t.parse(await mu(t,t.postUrl(e),n));return r}async function ya(t,e,n){return t.credits?.(await mu(t,t.pageUrl(e),n))}var EA=/^https?:\/\/(?:i\.pximg\.net|i\d*\.pixiv\.net|img\d*\.pixiv\.net)\/\S*\/(\d+)(?:_p\d+)?(?:_\w+)?\.\w+(?:[?#]\S*)?$/i,MA=/^https?:\/\/(?:www\.)?pixiv\.net\/member_illust\.php\?\S*\billust_id=(\d+)/i;function Li(t){let e=EA.exec(t)?.[1]??MA.exec(t)?.[1];return e?`https://www.pixiv.net/artworks/${e}`:t}function va(t,e){return t.credits!==void 0&&e.named.artist.length===0}function Zs(t,e){for(let n of eA){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 xA(t){let e=new URLSearchParams({limit:String(2*Rn),only:"md5,tag_string,tag_string_artist,tag_string_character,tag_string_copyright,source,file_url",tags:`md5:${t.join(",")}`});return`${Pt.origin}/posts.json?${e}`}function OA(t){return new Map(Ys(t).flatMap((e)=>{let n=String(e.md5??"");return n?[[n,{tags:or(e.tag_string),named:{artist:or(e.tag_string_artist),character:or(e.tag_string_character),copyright:or(e.tag_string_copyright)},source:String(e.source??""),file:Js(String(e.file_url??""))}]]:[]}))}function Sa(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])],Zs(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=Ur(r.file)}}}async function Ea(t,e){let n=new Map;if(An(Pt)>Date.now())return n;for(let r=0;r<t.length;r+=Rn){let i=await(await ar(Pt,xA(t.slice(r,r+Rn)),e,{},R0)).text();for(let[s,o]of OA(i))n.set(s,o)}return n}function PA(t){let e=new URLSearchParams([...t.map((n)=>["search[name_array][]",n]),["only","name,is_deleted,urls"],["limit",String(t.length)]]);return`${Pt.origin}/artists.json?${e}`}function IA(t){return new Map(Ys(t).flatMap((e)=>{let n=String(e.name??"");if(!n||e.is_deleted===!0)return[];let r=Array.isArray(e.urls)?e.urls:[];return[[n,r.flatMap((i)=>i.is_active===!1||!i.url?[]:[String(i.url)])]]}))}async function W0(t,e){let n=new Map;if(An(Pt)>Date.now())return n;for(let r=0;r<t.length;r+=Rn){let i=await(await ar(Pt,PA(t.slice(r,r+Rn)),e,{},R0)).text();for(let[s,o]of IA(i))n.set(s,o)}return n}async function Ma(t,e,n){if(e.file||!t.guesses)return;for(let r of t.guesses(e))try{let i=await ar(t,r,n,{Range:`bytes=0-${I0}`}),s=In(new Uint8Array(await i.arrayBuffer()));return e.file=r,e.ext=Ur(r),s}catch(i){if(n.aborted||i.status!==404)throw i}throw Error(`${t.name} keeps no png or jpg of ${e.id}`)}async function K0(t,e){if(An(Pt)<=Date.now())try{let i=new URLSearchParams({"search[query]":t,"search[type]":"tag_query",limit:String($0)}),s=`${Pt.origin}/autocomplete.json?${i}`;return fA(await(await ar(Pt,s,e,{},w0)).text())}catch(i){if(e.aborted)throw i}let n=Z.find((i)=>i.key==="yande"),r=new URLSearchParams({name:t,order:"count",limit:String($0)});return dA(await(await ar(n,`${n.origin}/tag.json?${r}`,e,{},w0)).text())}function RA(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 z0(t,e){if(An(Pt)>Date.now())return[];let n=new URLSearchParams({"search[query]":t,"search[category]":"character",limit:String(qR)});return RA(await(await ar(Pt,`${Pt.origin}/related_tag.json?${n}`,e,{},JR)).text())}function D0(t,e){return e.slice(0,t.ors?t.tagBudget:1)}async function q0(t,e,n){let r=await ar(t,e,n,{Range:`bytes=0-${I0}`});return In(new Uint8Array(await r.arrayBuffer()))}async function pu(t,e,n,r){let i=await ar(t,e,n,{},0),s=Number(i.headers.get("content-length"))||0,o=i.body?.getReader();if(!o)return new Uint8Array(await i.arrayBuffer());let a=[],c=0;for(;;){let{done:l,value:d}=await o.read();if(l)break;a.push(d),c+=d.length,r?.(c,s)}let u=new Uint8Array(c),f=0;for(let l of a)u.set(l,f),f+=l.length;return u}var AA=["pixiv","x","bsky","fanbox","skeb","patreon","fantia"],J0=[["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?users\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/users/${t}`],["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/member\.php\?id=(\d+)$/i,(t)=>`https://www.pixiv.net/users/${t}`],["x",/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(?!(?:i|intent|home|search|explore|hashtag|share|settings)\/?$)(\w{1,15})\/?$/i,(t)=>`https://x.com/${t}`],["bsky",/^https?:\/\/bsky\.app\/profile\/(?!did:)([\w.-]+)\/?$/i,(t)=>`https://bsky.app/profile/${t}`],["fanbox",/^https?:\/\/([\w-]+)\.fanbox\.cc\/?$/i,(t)=>`https://${t}.fanbox.cc`],["fanbox",/^https?:\/\/(?:www\.)?pixiv\.net\/fanbox\/creator\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/fanbox/creator/${t}`],["skeb",/^https?:\/\/skeb\.jp\/@([\w-]+)\/?$/i,(t)=>`https://skeb.jp/@${t}`],["patreon",/^https?:\/\/(?:www\.)?patreon\.com\/(?:c\/)?(?!(?:user|posts|join|home|login|search)\/?$)([\w-]+)\/?$/i,(t)=>`https://www.patreon.com/${t}`],["fantia",/^https?:\/\/fantia\.jp\/fanclubs\/(\d+)\/?$/i,(t)=>`https://fantia.jp/fanclubs/${t}`]],NA=[[/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?artworks\/(\d+)/i,(t)=>`pixiv ${t[1]}`],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(\w{1,15})\/status\/\d+/i,(t)=>`x ${t[1]}`],[/^https?:\/\/bsky\.app\/profile\/([\w.-]+)\/post\//i,(t)=>`bsky ${t[1]}`],[/^https?:\/\/([\w-]+)\.fanbox\.cc\/posts\/\d+/i,(t)=>`fanbox ${t[1]}`]],TA=[[/^https?:\/\/(?:www\.)?pixiv\.net\//i,"pixiv"],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\//i,"x"],[/^https?:\/\/bsky\.app\//i,"bsky"]],HA=["x","pixiv","bsky"],FA={"shima.donmai.us":"danbooru.donmai.us"},LA=/^https?:\/\/[^\s\p{Cc}]+$/u;function Y0(t){return LA.test(t)}function CA(t){return J0.find(([,e])=>e.test(t))?.[0]}function jA(t){return AA.flatMap((e)=>{for(let[,n,r]of J0.filter(([i])=>i===e))for(let i of t){let s=n.exec(i)?.[1];if(s)return[r(s)]}return[]})}function xa(t){return(t??[]).flatMap((e)=>{let n=CA(e);return n?[{kind:n,url:e}]:[]})}function _A(t){for(let[e,n]of NA){let r=e.exec(t);if(r)return n(r)}try{return new URL(t).hostname.replace(/^www\./,"")}catch{return t}}function BA(t){try{let e=new URL(t),n=FA[e.hostname];if(n)e.hostname=n;return e.href}catch{return t}}function GA(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function Vd(t){let e=t.source??"";return Y0(e)?{label:_A(e),url:e}:void 0}function UA(t){let e=(t.from??"").split(" "),n=e[2]??"";return Y0(n)?{label:e.slice(0,2).join(" "),url:n}:void 0}function WA(t){return TA.find(([e])=>e.test(t))?.[1]}function KA(t,e){let n=e?WA(e):void 0,r=xa(t),i=HA.find((s)=>s!==n&&r.some((o)=>o.kind===s));return r.find((s)=>s.kind===i)?.url}function V0(t){let e=Vd(t)?.url??UA(t)?.url,n=t.artist??[];if(!e&&n.length===0)return;let r=n.length>0?`Background art by ${n.map((i)=>{let s=KA(t.profiles?.[i],e);return s?`${i} (${GA(s)})`:i}).join(", ")}`:"Background art (artist unknown)";return e?`${r} · ${BA(e)}`:r}async function gu(t,e){let n=await W0(t,e);return new Map(t.map((r)=>[r,jA(n.get(r)??[])]))}import{spawn as zA}from"node:child_process";var DA=30000,qA=3,JA=97,Zd={from:0.45,to:0.75},bu=2,Oa=1,YA=Uint8Array.from({length:256},(t,e)=>Math.round(255*Math.min(1,Math.max(0,(e/255-Zd.from)/(Zd.to-Zd.from))))),VA=`ObjC.import('Vision')
4
4
  ObjC.import('CoreImage')
5
5
  ObjC.import('CoreGraphics')
6
6
  function run(argv) {
@@ -20,8 +20,8 @@ function run(argv) {
20
20
  $.CIImage.imageWithCVPixelBuffer(buffer), $.NSURL.fileURLWithPath(argv[1]), $.kCIFormatRGBA8,
21
21
  $.CGColorSpaceCreateWithName($.kCGColorSpaceSRGB), $({}), error)
22
22
  if (!written) throw new Error('write failed')
23
- }`;function to(){return process.platform==="darwin"}function yu(t){return t>=YA&&t<=VA}function Q0(t){let{width:e,height:n}=t,r=t.data.slice();for(let i=3;i<r.length;i+=4)r[i]=ZA[r[i]];for(let i=0;i<n;i++)for(let s=0;s<e;s++){let o=(i*e+s)*4,a=r[o+3];if(a===0||a===255)continue;let c=0,u=0,f=0,l=0;for(let d=Math.max(0,i-ku);d<=Math.min(n-1,i+ku);d++)for(let h=Math.max(0,s-ku);h<=Math.min(e-1,s+ku);h++){let m=(d*e+h)*4;if(r[m+3]===255)c+=r[m],u+=r[m+1],f+=r[m+2],l++}if(l>0)r[o]=Math.round(c/l),r[o+1]=Math.round(u/l),r[o+2]=Math.round(f/l)}return{width:e,height:n,data:r}}function Aa(t,e,n){return new Promise((r,i)=>{let s=qA("osascript",["-l","JavaScript","-e",XA,t,e],{stdio:["ignore","ignore","pipe"],signal:AbortSignal.any([n,AbortSignal.timeout(JA)])}),o="";s.stderr.on("data",(a)=>{o+=a}),s.on("error",i),s.on("close",(a)=>{if(a===0){r();return}i(Error(o.trim().split(`
24
- `).at(-1)||`osascript exited ${a}`))})})}import{createHash as QA}from"node:crypto";import{existsSync as tN,readdirSync as eN,readFileSync as nN,rmSync as rN,statSync as iN,utimesSync as sN}from"node:fs";import{join as no}from"node:path";var oN=12,aN=/^[0-9a-f]{40}$/;function eo(){return no(Ln(),"drawn")}function t$(t){return QA("sha1").update(JSON.stringify(t)).digest("hex")}function e$(t){return tN(no(eo(),t))}function n$(t){let e=no(eo(),t);try{let n=nN(e),r=n.readUInt32BE(0),i=JSON.parse(n.toString("utf8",4,4+r)),s=n.subarray(4+r,4+r+i.figure),o=n.subarray(4+r+i.figure,4+r+i.figure+i.picture);if(s.length!==i.figure||o.length!==i.picture)return;let a=new Date;return sN(e,a,a),{stem:i.stem,fill:i.fill,...i.peak?{peak:i.peak}:{},figure:s,picture:o}}catch{return}}function eh(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),H(no(eo(),t),Buffer.concat([r,n,e.figure,e.picture])),cN()}function cN(){let t=eN(eo()).filter((e)=>aN.test(e)).flatMap((e)=>{try{return[{name:e,at:iN(no(eo(),e)).mtimeMs}]}catch{return[]}}).sort((e,n)=>n.at-e.at);for(let{name:e}of t.slice(oN))rN(no(eo(),e),{force:!0})}import{readdirSync as c$,readFileSync as u$}from"node:fs";import{basename as pN,join as Mu}from"node:path";/*!
23
+ }`;function Xs(){return process.platform==="darwin"}function wu(t){return t>=qA&&t<=JA}function Z0(t){let{width:e,height:n}=t,r=t.data.slice();for(let i=3;i<r.length;i+=4)r[i]=YA[r[i]];for(let i=0;i<n;i++)for(let s=0;s<e;s++){let o=(i*e+s)*4,a=r[o+3];if(a===0||a===255)continue;let c=0,u=0,f=0,l=0;for(let d=Math.max(0,i-bu);d<=Math.min(n-1,i+bu);d++)for(let h=Math.max(0,s-bu);h<=Math.min(e-1,s+bu);h++){let m=(d*e+h)*4;if(r[m+3]===255)c+=r[m],u+=r[m+1],f+=r[m+2],l++}if(l>0)r[o]=Math.round(c/l),r[o+1]=Math.round(u/l),r[o+2]=Math.round(f/l)}return{width:e,height:n,data:r}}function Pa(t,e,n){return new Promise((r,i)=>{let s=zA("osascript",["-l","JavaScript","-e",VA,t,e],{stdio:["ignore","ignore","pipe"],signal:AbortSignal.any([n,AbortSignal.timeout(DA)])}),o="";s.stderr.on("data",(a)=>{o+=a}),s.on("error",i),s.on("close",(a)=>{if(a===0){r();return}i(Error(o.trim().split(`
24
+ `).at(-1)||`osascript exited ${a}`))})})}import{createHash as ZA}from"node:crypto";import{existsSync as XA,readdirSync as QA,readFileSync as tN,rmSync as eN,statSync as nN,utimesSync as rN}from"node:fs";import{join as to}from"node:path";var iN=12,sN=/^[0-9a-f]{40}$/;function Qs(){return to(Nn(),"drawn")}function X0(t){return ZA("sha1").update(JSON.stringify(t)).digest("hex")}function Q0(t){return XA(to(Qs(),t))}function t$(t){let e=to(Qs(),t);try{let n=tN(e),r=n.readUInt32BE(0),i=JSON.parse(n.toString("utf8",4,4+r)),s=n.subarray(4+r,4+r+i.figure),o=n.subarray(4+r+i.figure,4+r+i.figure+i.picture);if(s.length!==i.figure||o.length!==i.picture)return;let a=new Date;return rN(e,a,a),{stem:i.stem,fill:i.fill,...i.peak?{peak:i.peak}:{},figure:s,picture:o}}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),C(to(Qs(),t),Buffer.concat([r,n,e.figure,e.picture])),oN()}function oN(){let t=QA(Qs()).filter((e)=>sN.test(e)).flatMap((e)=>{try{return[{name:e,at:nN(to(Qs(),e)).mtimeMs}]}catch{return[]}}).sort((e,n)=>n.at-e.at);for(let{name:e}of t.slice(iN))eN(to(Qs(),e),{force:!0})}import{readdirSync as o$,readFileSync as a$}from"node:fs";import{basename as hN,join as vu}from"node:path";/*!
25
25
  * Copyright (c) Squirrel Chat et al., All rights reserved.
26
26
  * SPDX-License-Identifier: BSD-3-Clause
27
27
  *
@@ -47,9 +47,9 @@ function run(argv) {
47
47
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
48
48
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
49
49
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50
- */function uN(t,e){let n=t.slice(0,e).split(/\r?\n/);return[n.length,n.pop().length+1]}function lN(t,e,n){let r=t.split(/\r?\n/),i="",s=(Math.log10(e+1)|0)+1;for(let o=e-1;o<=e+1;o++){let a=r[o-1];if(!a)continue;if(i+=o.toString().padEnd(s," "),i+=": ",i+=a,i+=`
50
+ */function aN(t,e){let n=t.slice(0,e).split(/\r?\n/);return[n.length,n.pop().length+1]}function cN(t,e,n){let r=t.split(/\r?\n/),i="",s=(Math.log10(e+1)|0)+1;for(let o=e-1;o<=e+1;o++){let a=r[o-1];if(!a)continue;if(i+=o.toString().padEnd(s," "),i+=": ",i+=a,i+=`
51
51
  `,o===e)i+=" ".repeat(s+n+2),i+=`^
52
- `}return i}class q extends Error{line;column;codeblock;constructor(t,e){let[n,r]=uN(e.toml,e.ptr),i=lN(e.toml,n,r);super(`Invalid TOML document: ${t}
52
+ `}return i}class q extends Error{line;column;codeblock;constructor(t,e){let[n,r]=aN(e.toml,e.ptr),i=cN(e.toml,n,r);super(`Invalid TOML document: ${t}
53
53
 
54
54
  ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(t,{toml:e.s,ptr:n??e.p})}}/*!
55
55
  * Copyright (c) Squirrel Chat et al., All rights reserved.
@@ -77,7 +77,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
77
77
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
78
78
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
79
79
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
80
- */function vu(t){let e=t.p,n=t.s.charCodeAt(t.p++),r=n,i=n===39,s=n===t.s.charCodeAt(t.p)&&n===t.s.charCodeAt(t.p+1);if(s){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 o="",a=t.p,c=0;for(;t.p<t.s.length;t.p++)if(n=t.s.charCodeAt(t.p),s&&(n===10||n===13&&t.s.charCodeAt(t.p+1)===10))c=c&&3;else if(n<32&&n!==9||n===127)q.x("control characters are not allowed in strings",t);else if((!c||c===3)&&n===r&&(!s||t.s.charCodeAt(t.p+1)===r&&t.s.charCodeAt(t.p+2)===r)){if(s){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);o=o?o+u:u}return t.p+=s?3:1,o}else if(!c){if(!i&&n===92)o+=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,f=0,l=n===120?2:n===117?4:8;for(let d=0;d<l;d++,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)q.x("invalid non-hex character in unicode escape",t);f=f<<4|m}if(f<0||f>1114111||f>=55296&&f<=57343)q.x("invalid unicode escape",t,u);o+=String.fromCodePoint(f),a=t.p--,c=0}else if(s&&(n===32||n===9))c=2;else{if(n===98)o+="\b";else if(n===116)o+="\t";else if(n===110)o+=`
80
+ */function $u(t){let e=t.p,n=t.s.charCodeAt(t.p++),r=n,i=n===39,s=n===t.s.charCodeAt(t.p)&&n===t.s.charCodeAt(t.p+1);if(s){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 o="",a=t.p,c=0;for(;t.p<t.s.length;t.p++)if(n=t.s.charCodeAt(t.p),s&&(n===10||n===13&&t.s.charCodeAt(t.p+1)===10))c=c&&3;else if(n<32&&n!==9||n===127)q.x("control characters are not allowed in strings",t);else if((!c||c===3)&&n===r&&(!s||t.s.charCodeAt(t.p+1)===r&&t.s.charCodeAt(t.p+2)===r)){if(s){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);o=o?o+u:u}return t.p+=s?3:1,o}else if(!c){if(!i&&n===92)o+=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,f=0,l=n===120?2:n===117?4:8;for(let d=0;d<l;d++,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)q.x("invalid non-hex character in unicode escape",t);f=f<<4|m}if(f<0||f>1114111||f>=55296&&f<=57343)q.x("invalid unicode escape",t,u);o+=String.fromCodePoint(f),a=t.p--,c=0}else if(s&&(n===32||n===9))c=2;else{if(n===98)o+="\b";else if(n===116)o+="\t";else if(n===110)o+=`
81
81
  `;else if(n===102)o+="\f";else if(n===114)o+="\r";else if(n===101)o+="\x1B";else if(n===34)o+='"';else if(n===92)o+="\\";else q.x("unrecognised escape sequence",t);a=t.p+1,c=0}else if(n!==32&&n!==9){if(c===2)q.x("invalid escape: only line-ending whitespace may be escaped",t,a);c=!i&&n===92?1:0,a=t.p}q.x("unfinished string",t,e)}/*!
82
82
  * Copyright (c) Squirrel Chat et al., All rights reserved.
83
83
  * SPDX-License-Identifier: BSD-3-Clause
@@ -104,7 +104,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
104
104
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
105
105
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
106
106
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
107
- */var fN=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;class Dr extends Date{#e=!1;#r=!1;#t=null;constructor(t,e,n){let r=!0,i=!0,s="Z",o;if(typeof t==="string")if(e)t:{if(e<3){if(+t.slice(11,13)>23){t="";break t}if(e===2)s=null,t+="Z";else if((o=t.charCodeAt(t.length-1))!==90&&o!==122)s=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(fN);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(s=a[3]||null,!s&&i)t+="Z"}else t=""}super(t);if(!isNaN(this.getTime()))this.#e=r,this.#r=i,this.#t=s}isDateTime(){return this.#e&&this.#r}isLocal(){return!this.#e||!this.#r||!this.#t}isDate(){return this.#e&&!this.#r}isTime(){return this.#r&&!this.#e}isValid(){return this.#e||this.#r}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 Dr(t);return n.#t=e,n}static wrapAsLocalDateTime(t){let e=new Dr(t);return e.#t=null,e}static wrapAsLocalDate(t){let e=new Dr(t);return e.#r=!1,e.#t=null,e}static wrapAsLocalTime(t){let e=new Dr(t);return e.#e=!1,e.#t=null,e}}/*!
107
+ */var uN=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;class zr extends Date{#e=!1;#r=!1;#t=null;constructor(t,e,n){let r=!0,i=!0,s="Z",o;if(typeof t==="string")if(e)t:{if(e<3){if(+t.slice(11,13)>23){t="";break t}if(e===2)s=null,t+="Z";else if((o=t.charCodeAt(t.length-1))!==90&&o!==122)s=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(uN);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(s=a[3]||null,!s&&i)t+="Z"}else t=""}super(t);if(!isNaN(this.getTime()))this.#e=r,this.#r=i,this.#t=s}isDateTime(){return this.#e&&this.#r}isLocal(){return!this.#e||!this.#r||!this.#t}isDate(){return this.#e&&!this.#r}isTime(){return this.#r&&!this.#e}isValid(){return this.#e||this.#r}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 zr(t);return n.#t=e,n}static wrapAsLocalDateTime(t){let e=new zr(t);return e.#t=null,e}static wrapAsLocalDate(t){let e=new zr(t);return e.#r=!1,e.#t=null,e}static wrapAsLocalTime(t){let e=new zr(t);return e.#e=!1,e.#t=null,e}}/*!
108
108
  * Copyright (c) Squirrel Chat et al., All rights reserved.
109
109
  * SPDX-License-Identifier: BSD-3-Clause
110
110
  *
@@ -130,7 +130,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
130
130
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
131
131
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
132
132
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
133
- */function He(t,e=10){return e===16?t>47&&t<58||t>64&&t<71||t>96&&t<103:t>47&&t<48+e}function rh(t,e){return t===32||t===9||t===10||t===13||e&&(t===e||t===44)||t===35}function Ta(t,e){let n=t.p,r=t.s.charCodeAt(t.p);if(r===91||r===123){t.d--||q.x("document contains excessively nested structures. aborting.",t);let i=r===91?s$(t):i$(t);return t.d++,i}if(r===34||r===39)return vu(t);if(r===116){if(t.s.charCodeAt(++t.p)!==114||t.s.charCodeAt(++t.p)!==117||t.s.charCodeAt(++t.p)!==101)q.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)q.x("invalid value",t,n);return t.p++,!1}if(r===43||r===45)return Su(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 dN(t,r,e);if(t.s.charCodeAt(t.p+2)===58)return hN(t,r,e);return Su(t,t.p,r,0,e)}function Su(t,e,n,r,i){let s=n,o=0,a=!1;if(s===105){if(t.s.charCodeAt(++t.p)!==110||t.s.charCodeAt(++t.p)!==102)q.x("invalid value",t,e);return t.p++,(r||1)/0}if(s===110){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==110)q.x("invalid value",t,e);return t.p++,NaN}if(s===48){if(++t.p>=t.s.length||rh(s=t.s.charCodeAt(t.p),i))return t.bi===!0?0n:0;if(!r){if(s===120)return nh(t,e,16,i);else if(s===98)return nh(t,e,2,i);else if(s===111)return nh(t,e,8,i)}if(s===46)o=2;else if(s===101||s===69)o=4;else q.x("illegal leading zero",t,e)}else if(!He(s))q.x("invalid value",t,e);while(++t.p<t.s.length&&(s=t.s.charCodeAt(t.p),!rh(s,i))){if(!o)o=1;if(s===95){if(!(o&1))q.x("illegal underscore",t);o+=11,a=!0}else if(o===1&&s===46)o=2;else if((o===1||o===3)&&(s===101||s===69))o=4;else if(o===4&&(s===43||s===45));else if(!He(s))q.x("illegal character in numeric literal",t);else if(o>9)o-=11;else if(!(o&1))o++}if(!o){let u=(n-48)*(r||1);return t.bi===!0?BigInt(u):u}if(!(o&1))q.x("unfinished numeric value",t,e);let c=t.s.slice(e,t.p);if(a)c=c.replaceAll("_","");return o>1?parseFloat(c):r$(t,c,10,e)}function nh(t,e,n,r){let i,s=1;while(++t.p<t.s.length&&(i=t.s.charCodeAt(t.p),!rh(i,r)))if(i===95){if(s&1)q.x("illegal underscore",t);s=3}else if(!He(i,n))q.x("illegal character in numeric literal",t);else if(s&1)s--;if(s&1)q.x("unfinished numeric value",t);let o=t.s.slice(e+2,t.p);if(s)o=o.replaceAll("_","");return r$(t,o,n,e)}function r$(t,e,n,r){if(t.bi!==!0)t:{let i=parseInt(e,n);if(!Number.isSafeInteger(i)){if(t.bi)break t;q.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 dN(t,e,n){let r=t.p++,i;if(!He(e)||!He(t.s.charCodeAt(t.p++))||!He(t.s.charCodeAt(t.p++))||!He(t.s.charCodeAt(t.p++)))return Su(t,t.p=r,e,0,n);if(t.p+=5,!He(t.s.charCodeAt(t.p++)))q.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,!He(t.s.charCodeAt(t.p+1))))&&e!==84&&e!==116){let o=t.s.slice(r,t.p);return Na(t,o,3,!1,r)}if(t.s.charCodeAt(t.p+=3)!==58)q.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(He(t.s.charCodeAt(++t.p)));if(e=t.s.charCodeAt(t.p)){if(e===90||e===122){let o=t.s.slice(r,++t.p);return Na(t,o,1,i,r,"[+00:00]")}if(e===43||e===45){let o=t.s.slice(r,t.p+=6);return Na(t,o,1,i,r,!t.ld&&"["+t.s.slice(t.p-6,t.p)+"]")}}let s=t.s.slice(r,t.p);return Na(t,s,2,i,r)}function hN(t,e,n){let r=t.p;if(!He(e)||!He(t.s.charCodeAt(++t.p)))return Su(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(He(t.s.charCodeAt(++t.p)));let i=t.s.slice(r,t.p);return Na(t,i,4,!1,r)}function Na(t,e,n,r,i,s){if(t.ld){let o=new Dr(e,n,r);if(!o.isValid())q.x("invalid date",t,i);return o}try{if(s)e+=s;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(o){q.x(o instanceof Error?o.message:""+o,t,i)}}/*!
133
+ */function Te(t,e=10){return e===16?t>47&&t<58||t>64&&t<71||t>96&&t<103:t>47&&t<48+e}function th(t,e){return t===32||t===9||t===10||t===13||e&&(t===e||t===44)||t===35}function Ra(t,e){let n=t.p,r=t.s.charCodeAt(t.p);if(r===91||r===123){t.d--||q.x("document contains excessively nested structures. aborting.",t);let i=r===91?r$(t):n$(t);return t.d++,i}if(r===34||r===39)return $u(t);if(r===116){if(t.s.charCodeAt(++t.p)!==114||t.s.charCodeAt(++t.p)!==117||t.s.charCodeAt(++t.p)!==101)q.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)q.x("invalid value",t,n);return t.p++,!1}if(r===43||r===45)return ku(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 lN(t,r,e);if(t.s.charCodeAt(t.p+2)===58)return fN(t,r,e);return ku(t,t.p,r,0,e)}function ku(t,e,n,r,i){let s=n,o=0,a=!1;if(s===105){if(t.s.charCodeAt(++t.p)!==110||t.s.charCodeAt(++t.p)!==102)q.x("invalid value",t,e);return t.p++,(r||1)/0}if(s===110){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==110)q.x("invalid value",t,e);return t.p++,NaN}if(s===48){if(++t.p>=t.s.length||th(s=t.s.charCodeAt(t.p),i))return t.bi===!0?0n:0;if(!r){if(s===120)return Qd(t,e,16,i);else if(s===98)return Qd(t,e,2,i);else if(s===111)return Qd(t,e,8,i)}if(s===46)o=2;else if(s===101||s===69)o=4;else q.x("illegal leading zero",t,e)}else if(!Te(s))q.x("invalid value",t,e);while(++t.p<t.s.length&&(s=t.s.charCodeAt(t.p),!th(s,i))){if(!o)o=1;if(s===95){if(!(o&1))q.x("illegal underscore",t);o+=11,a=!0}else if(o===1&&s===46)o=2;else if((o===1||o===3)&&(s===101||s===69))o=4;else if(o===4&&(s===43||s===45));else if(!Te(s))q.x("illegal character in numeric literal",t);else if(o>9)o-=11;else if(!(o&1))o++}if(!o){let u=(n-48)*(r||1);return t.bi===!0?BigInt(u):u}if(!(o&1))q.x("unfinished numeric value",t,e);let c=t.s.slice(e,t.p);if(a)c=c.replaceAll("_","");return o>1?parseFloat(c):e$(t,c,10,e)}function Qd(t,e,n,r){let i,s=1;while(++t.p<t.s.length&&(i=t.s.charCodeAt(t.p),!th(i,r)))if(i===95){if(s&1)q.x("illegal underscore",t);s=3}else if(!Te(i,n))q.x("illegal character in numeric literal",t);else if(s&1)s--;if(s&1)q.x("unfinished numeric value",t);let o=t.s.slice(e+2,t.p);if(s)o=o.replaceAll("_","");return e$(t,o,n,e)}function e$(t,e,n,r){if(t.bi!==!0)t:{let i=parseInt(e,n);if(!Number.isSafeInteger(i)){if(t.bi)break t;q.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 lN(t,e,n){let r=t.p++,i;if(!Te(e)||!Te(t.s.charCodeAt(t.p++))||!Te(t.s.charCodeAt(t.p++))||!Te(t.s.charCodeAt(t.p++)))return ku(t,t.p=r,e,0,n);if(t.p+=5,!Te(t.s.charCodeAt(t.p++)))q.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,!Te(t.s.charCodeAt(t.p+1))))&&e!==84&&e!==116){let o=t.s.slice(r,t.p);return Ia(t,o,3,!1,r)}if(t.s.charCodeAt(t.p+=3)!==58)q.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(Te(t.s.charCodeAt(++t.p)));if(e=t.s.charCodeAt(t.p)){if(e===90||e===122){let o=t.s.slice(r,++t.p);return Ia(t,o,1,i,r,"[+00:00]")}if(e===43||e===45){let o=t.s.slice(r,t.p+=6);return Ia(t,o,1,i,r,!t.ld&&"["+t.s.slice(t.p-6,t.p)+"]")}}let s=t.s.slice(r,t.p);return Ia(t,s,2,i,r)}function fN(t,e,n){let r=t.p;if(!Te(e)||!Te(t.s.charCodeAt(++t.p)))return ku(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(Te(t.s.charCodeAt(++t.p)));let i=t.s.slice(r,t.p);return Ia(t,i,4,!1,r)}function Ia(t,e,n,r,i,s){if(t.ld){let o=new zr(e,n,r);if(!o.isValid())q.x("invalid date",t,i);return o}try{if(s)e+=s;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(o){q.x(o instanceof Error?o.message:""+o,t,i)}}/*!
134
134
  * Copyright (c) Squirrel Chat et al., All rights reserved.
135
135
  * SPDX-License-Identifier: BSD-3-Clause
136
136
  *
@@ -156,7 +156,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
156
156
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
157
157
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
158
158
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
159
- */function mN(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)q.x("control characters are not allowed in comments",t)}}function dn(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;mN(t)}}/*!
159
+ */function dN(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)q.x("control characters are not allowed in comments",t)}}function fn(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;dN(t)}}/*!
160
160
  * Copyright (c) Squirrel Chat et al., All rights reserved.
161
161
  * SPDX-License-Identifier: BSD-3-Clause
162
162
  *
@@ -182,7 +182,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
182
182
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
183
183
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
184
184
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
185
- */function Eu(t,e=61){let n,r=0,i=[],s,o=t.s.charCodeAt(n=t.p);do if(o===e){if(!r)q.x("unexpected end of key",t);if(r===1)i.push(t.s.slice(s,t.p));return t.p++,i}else if(o===46){if(!r)q.x("illegal empty bare key",t);if(r===1)i.push(t.s.slice(s,t.p));r=0}else if(!r&&(o===34||o===39)){if(o===t.s.charCodeAt(t.p+1)&&o===t.s.charCodeAt(t.p+2))q.x("illegal quoted key: multiline strings are not allowed",t);i.push(vu(t)),r=2,t.p--}else if(o===32||o===9){if(r===1)i.push(t.s.slice(s,t.p)),r=2}else if(r===2||o<48&&o!==45||o>57&&o<65||o>90&&o<97&&o!==95||o>122)q.x("illegal character in key",t);else if(!r)r=1,s=t.p;while(o=t.s.charCodeAt(++t.p));q.x("incomplete key-value: cannot find end of key",t,n)}function i$(t){let e=t.p++,n=Object.create(null),r=new Set,i;while(t.p<t.s.length){if(dn(t),(i=t.s.charCodeAt(t.p))===125)return t.p++,n;let s,o=n,a=!1,c=t.p,u=Eu(t);for(let l=0;l<u.length;l++){if(l)o=a?o[s]:o[s]=Object.create(null);if(s=u[l],(a=Object.hasOwn(o,s))&&(typeof o[s]!=="object"||r.has(o[s])))q.x("trying to redefine an already defined value",t,c);let d=s==="__proto__";if(t.uk&&(d||s==="constructor")){o=t.uk!==1&&q.x("document contains an unsafe property",t,c);break}if(!a&&d)Object.defineProperty(o,s,{enumerable:!0,configurable:!0,writable:!0})}if(a)q.x("trying to redefine an already defined value",t,c);dn(t,!0,!0);let f=Ta(t,125);if(o&&typeof(o[s]=f)==="object")r.add(f);if(dn(t),(i=t.s.charCodeAt(t.p++))===125)return n;if(i!==44)q.x("expected comma or end of structure",t,t.p-1)}q.x("unfinished table",t,e)}function s$(t){let e=t.p++,n=[],r;while(t.p<t.s.length){if(dn(t),(r=t.s.charCodeAt(t.p))===93)return t.p++,n;if(n.push(Ta(t,93)),dn(t),(r=t.s.charCodeAt(t.p++))===93)return n;if(r!==44)q.x("expected comma or end of structure",t,t.p-1)}q.x("unfinished array",t,e)}/*!
185
+ */function yu(t,e=61){let n,r=0,i=[],s,o=t.s.charCodeAt(n=t.p);do if(o===e){if(!r)q.x("unexpected end of key",t);if(r===1)i.push(t.s.slice(s,t.p));return t.p++,i}else if(o===46){if(!r)q.x("illegal empty bare key",t);if(r===1)i.push(t.s.slice(s,t.p));r=0}else if(!r&&(o===34||o===39)){if(o===t.s.charCodeAt(t.p+1)&&o===t.s.charCodeAt(t.p+2))q.x("illegal quoted key: multiline strings are not allowed",t);i.push($u(t)),r=2,t.p--}else if(o===32||o===9){if(r===1)i.push(t.s.slice(s,t.p)),r=2}else if(r===2||o<48&&o!==45||o>57&&o<65||o>90&&o<97&&o!==95||o>122)q.x("illegal character in key",t);else if(!r)r=1,s=t.p;while(o=t.s.charCodeAt(++t.p));q.x("incomplete key-value: cannot find end of key",t,n)}function n$(t){let e=t.p++,n=Object.create(null),r=new Set,i;while(t.p<t.s.length){if(fn(t),(i=t.s.charCodeAt(t.p))===125)return t.p++,n;let s,o=n,a=!1,c=t.p,u=yu(t);for(let l=0;l<u.length;l++){if(l)o=a?o[s]:o[s]=Object.create(null);if(s=u[l],(a=Object.hasOwn(o,s))&&(typeof o[s]!=="object"||r.has(o[s])))q.x("trying to redefine an already defined value",t,c);let d=s==="__proto__";if(t.uk&&(d||s==="constructor")){o=t.uk!==1&&q.x("document contains an unsafe property",t,c);break}if(!a&&d)Object.defineProperty(o,s,{enumerable:!0,configurable:!0,writable:!0})}if(a)q.x("trying to redefine an already defined value",t,c);fn(t,!0,!0);let f=Ra(t,125);if(o&&typeof(o[s]=f)==="object")r.add(f);if(fn(t),(i=t.s.charCodeAt(t.p++))===125)return n;if(i!==44)q.x("expected comma or end of structure",t,t.p-1)}q.x("unfinished table",t,e)}function r$(t){let e=t.p++,n=[],r;while(t.p<t.s.length){if(fn(t),(r=t.s.charCodeAt(t.p))===93)return t.p++,n;if(n.push(Ra(t,93)),fn(t),(r=t.s.charCodeAt(t.p++))===93)return n;if(r!==44)q.x("expected comma or end of structure",t,t.p-1)}q.x("unfinished array",t,e)}/*!
186
186
  * Copyright (c) Squirrel Chat et al., All rights reserved.
187
187
  * SPDX-License-Identifier: BSD-3-Clause
188
188
  *
@@ -208,7 +208,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
208
208
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
209
209
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
210
210
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
211
- */function o$(t,e,n,r,i){let s=n,o=r,a,c=!1,u;for(let f=0;f<e.length;f++){if(f){if(s=c?s[a]:s[a]=Object.create(null),o=(u=o[a]).c,i===0&&(u.t===1||u.t===2))return null;if(u.t===2){let l=s.length-1;s=s[l],o=o[l].c}}if(a=e[f],(c=Object.hasOwn(s,a))&&o[a]?.t===0&&o[a]?.d)return null;if(!c){let l=a==="__proto__";if(t.uk&&(l||a==="constructor"))return!1;if(l)Object.defineProperty(s,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0});o[a]={t:f<e.length-1&&i===2?3:i,d:!1,i:0,c:Object.create(null)}}}if(u=o[a],u.t!==i&&!(i===1&&u.t===3))return null;if(i===2){if(!u.d)u.d=!0,s[a]=[];s[a].push(s=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)s=c?s[a]:s[a]=Object.create(null);else if(i===0&&c)return null;return[a,s,u.c]}function a$(t,e,n){if(e===null||t.uk===2)q.x(e===null?"trying to redefine an already defined table or value":"document contains an unsafe property",t,n)}function ji(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),s,o=!1,a=r,c=i;if(t.charCodeAt(0)===65279)n.p++;dn(n);while(n.p<t.length){if(t.charCodeAt(n.p)===91){let u=t.charCodeAt(++n.p)===91;s=n.p+=+u,o=!1;let f=Eu(n,93);if(u){if(t.charCodeAt(n.p)!==93)q.x("expected end of table array declaration",n);n.p++}let l=o$(n,f,r,i,u?2:1);if(!l)a$(n,l,s),o=!0;else c=l[2],a=l[1]}else{s=n.p;let u=Eu(n),f=o$(n,u,a,c,0);if(!f&&!o)a$(n,f,s);dn(n,!0,!0);let l=Ta(n,void 0);if(f&&!o)f[1][f[0]]=l}if(dn(n,!0),n.p<t.length&&(s=t.charCodeAt(n.p))!==10&&(s!==13||t.charCodeAt(n.p+1)!==10))q.x("each key-value declaration must be followed by an end-of-line",n);dn(n)}return r}/*!
211
+ */function i$(t,e,n,r,i){let s=n,o=r,a,c=!1,u;for(let f=0;f<e.length;f++){if(f){if(s=c?s[a]:s[a]=Object.create(null),o=(u=o[a]).c,i===0&&(u.t===1||u.t===2))return null;if(u.t===2){let l=s.length-1;s=s[l],o=o[l].c}}if(a=e[f],(c=Object.hasOwn(s,a))&&o[a]?.t===0&&o[a]?.d)return null;if(!c){let l=a==="__proto__";if(t.uk&&(l||a==="constructor"))return!1;if(l)Object.defineProperty(s,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0});o[a]={t:f<e.length-1&&i===2?3:i,d:!1,i:0,c:Object.create(null)}}}if(u=o[a],u.t!==i&&!(i===1&&u.t===3))return null;if(i===2){if(!u.d)u.d=!0,s[a]=[];s[a].push(s=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)s=c?s[a]:s[a]=Object.create(null);else if(i===0&&c)return null;return[a,s,u.c]}function s$(t,e,n){if(e===null||t.uk===2)q.x(e===null?"trying to redefine an already defined table or value":"document contains an unsafe property",t,n)}function Ci(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),s,o=!1,a=r,c=i;if(t.charCodeAt(0)===65279)n.p++;fn(n);while(n.p<t.length){if(t.charCodeAt(n.p)===91){let u=t.charCodeAt(++n.p)===91;s=n.p+=+u,o=!1;let f=yu(n,93);if(u){if(t.charCodeAt(n.p)!==93)q.x("expected end of table array declaration",n);n.p++}let l=i$(n,f,r,i,u?2:1);if(!l)s$(n,l,s),o=!0;else c=l[2],a=l[1]}else{s=n.p;let u=yu(n),f=i$(n,u,a,c,0);if(!f&&!o)s$(n,f,s);fn(n,!0,!0);let l=Ra(n,void 0);if(f&&!o)f[1][f[0]]=l}if(fn(n,!0),n.p<t.length&&(s=t.charCodeAt(n.p))!==10&&(s!==13||t.charCodeAt(n.p+1)!==10))q.x("each key-value declaration must be followed by an end-of-line",n);fn(n)}return r}/*!
212
212
  * Copyright (c) Squirrel Chat et al., All rights reserved.
213
213
  * SPDX-License-Identifier: BSD-3-Clause
214
214
  *
@@ -234,7 +234,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
234
234
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
235
235
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
236
236
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
237
- */var RG=!!"".isWellFormed;/*!
237
+ */var OG=!!"".isWellFormed;/*!
238
238
  * Copyright (c) Squirrel Chat et al., All rights reserved.
239
239
  * SPDX-License-Identifier: BSD-3-Clause
240
240
  *
@@ -260,181 +260,181 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(
260
260
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
261
261
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
262
262
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
263
- */var Jt=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right"],ot="ttheme-marketplace.toml",gN=1e6,l$=3,f$=8,ih="[a-z0-9]+(?:-[a-z0-9]+)*",bN=new RegExp(`^(?:(${ih})@(${ih})/)?(${ih})$`),d$=["background","foreground","cursor","selection"];function nt(t,e){throw Error(`${t}: ${e}`)}function _i(t,e,n){if(typeof n!=="string"||!we(n))nt(t,`${e} must be "#rrggbb" (lowercase), got ${JSON.stringify(n)}`);return n}function Ou(t,e,n){if(typeof n!=="string"||n.length===0)nt(t,`${e} must be a non-empty string`);return n}function de(t){return t.replace("@","--").replace("/","--")}function _(t){return`ttheme-${de(t)}`}function et(t){let e=t.indexOf("/");return e<0?void 0:t.slice(0,e)}function $e(t){return t.slice(t.indexOf("/")+1)}function ne(t){let e=bN.exec(t);if(!e)return"takes lowercase letters, digits and single hyphens, as <palette> or <owner>@<marketplace>/<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 Ha(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 xu(t,e,n){let r=Ou(t,e,n),i=Ha(r);if(i)nt(t,`${e} ${JSON.stringify(r)} ${i}`);return r}function oh(t,e,n){let r=Ou(t,e,n),i=ne(r);if(i)nt(t,`${e} "${r}" ${i}`);return r}function ro(t){return t&&typeof t==="object"?t:{}}function wN(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)nt(t,"ghostty.icon_screen must not be empty");return r.map((i,s)=>_i(t,`ghostty.icon_screen[${s}]`,i))}function $N(t,e,n){let r=ro(e);return{iconGhost:r.icon_ghost===void 0?n.cursor:_i(t,"ghostty.icon_ghost",r.icon_ghost),iconScreen:wN(t,r.icon_screen,n)}}function kN(t){return new Map([...d$.map((e)=>[e,t[e]]),...t.ansi.map((e,n)=>[`ansi${n}`,e])])}function yN(t,e,n){if(!Array.isArray(e)||e.length!==l$)nt(t,`meta.signature must name exactly ${l$} palette slots`);let r=kN(n),i=[],s=[];for(let[o,a]of e.entries()){let c=`meta.signature[${o}]`,u=Ou(t,c,a),f=r.get(u);if(f===void 0)nt(t,`${c} ${JSON.stringify(a)} is not a palette slot — use ${d$.join(", ")} or ansi0-ansi15`);i.push(u),s.push(f)}if(new Set(s).size!==s.length)nt(t,"meta.signature slots must resolve to three different colors");return{names:i,colors:s}}function vN(t,e,n,r=!1){if(e===void 0)return;if(!n)nt(t,"meta.booru_sites renames meta.booru per site, so it needs meta.booru");if(!e||typeof e!=="object"||Array.isArray(e))nt(t,'meta.booru_sites must be a table of site = "tag" or site = ["tag", ...]');let i={};for(let[s,o]of Object.entries(e)){let a=Z.find((u)=>u.key===s);if(!a){if(r)continue;nt(t,`meta.booru_sites.${s} is not a find site — use ${Z.map((u)=>u.key).join(", ")}`)}let c=typeof o==="string"?[o]:Array.isArray(o)?o:void 0;if(!c||c.some((u)=>typeof u!=="string"||u===""||/\s/.test(u)))nt(t,`meta.booru_sites.${s} must be one tag or a list of tags, got ${JSON.stringify(o)}`);if(c.length>1&&!a.ors)nt(t,`meta.booru_sites.${s} takes one tag — ${a.name} does not OR tags`);if(c.length>a.tagBudget)nt(t,`meta.booru_sites.${s} takes ${a.tagBudget} tags at most — ${a.name} searches that many at a time`);i[s]=c}return i}function SN(t,e,n){if(e===void 0)return;if(!Array.isArray(e)||e.length===0||e.length>f$)nt(t,`[[picture]] holds 1 to ${f$} pictures`);let r=e.flatMap((i,s)=>{let o=ro(i),a=`picture[${s}]`,c=Z.find((h)=>h.key===o.site);if(!c){if(n)return[];nt(t,`${a}.site must be one of ${Z.map((h)=>h.key).join(", ")}`)}if(typeof o.id!=="number"||!Number.isSafeInteger(o.id)||o.id<=0)nt(t,`${a}.id must be the post's number on ${c.name}`);let{size:u,position:f,opacity:l}=o;if(u!==void 0&&u!=="fill"&&!(Number.isInteger(u)&&Number(u)>=20&&Number(u)<=999))nt(t,`${a}.size must be "fill" or a percentage from 20 to 999`);let d=f===void 0||Jt.includes(f);if(!d&&!n)nt(t,`${a}.position must be one of ${Jt.join(", ")}`);if(l!==void 0&&!(typeof l==="number"&&l>=0&&l<=1))nt(t,`${a}.opacity must be a number from 0 to 1`);return[{site:c.key,id:o.id,...u!==void 0?{size:u}:{},...f!==void 0&&d?{position:f}:{},...l!==void 0?{opacity:l}:{}}]});return r.length>0?r:void 0}function ah(t,e){try{return ji(e)}catch(n){nt(t,`is not valid TOML — ${(n instanceof Error?n.message:String(n)).split(`
264
- `)[0]}`)}}function ch(t,e){if(e===void 0)return[];if(!Array.isArray(e))nt(t,"catalog must be [[catalog]] tables");let n=e.map((r,i)=>{let s=ro(r);return{name:xu(t,`catalog[${i}].name`,s.name),...s.native===void 0?{}:{native:xu(t,`catalog[${i}].native`,s.native)},...s.lead===void 0?{}:{lead:oh(t,`catalog[${i}].lead`,s.lead)}}});if(new Set(n.map((r)=>r.name)).size!==n.length)nt(t,"catalog.name must be unique");return n}function EN(t,e){if(!Array.isArray(e)||e.length===0)nt(t,'meta.native_names must be a list of names, like ["後藤ひとり"]');return e.map((n,r)=>{let i=xu(t,`meta.native_names[${r}]`,n);if(i.includes("|"))nt(t,`meta.native_names[${r}] ${JSON.stringify(i)} contains |`);return i})}var sh={"":["$schema","meta","colors","contrast","ghostty","picture"],meta:["name","base","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 h$(t,e){let n=ah(t,e),r=(i,s,o=[])=>s&&typeof s==="object"&&!Array.isArray(s)?Object.keys(s).filter((a)=>!o.includes(a)).map((a)=>i?`${i}.${a}`:a):[];return[...r("",n,sh[""]),...["meta","colors","contrast","ghostty"].flatMap((i)=>r(i,n[i],sh[i])),...(Array.isArray(n.picture)?n.picture:[]).flatMap((i,s)=>r(`picture[${s}]`,i,sh.picture))]}function uh(t,e,n){let r=ah(t,e),i=ro(r.meta),s=ro(r.colors),o=ro(r.contrast),a=s.ansi;if(!Array.isArray(a)||a.length!==16)nt(t,`colors.ansi must hold exactly 16 colors, got ${Array.isArray(a)?a.length:typeof a}`);let c=oh(t,"meta.name",i.name);if(c!==n.name)nt(t,`meta.name "${c}" does not match its file — it lives at ${n.name}`);let u=n.open===!0;for(let I of["order","role"])if(u&&i[I]!==void 0)nt(t,`meta.${I} is for the official palettes — a marketplace palette follows its base`);let f=i.role;if(f!==void 0&&f!=="default")nt(t,`meta.role must be "default", got ${JSON.stringify(f)}`);let l=i.base===void 0?void 0:oh(t,"meta.base",i.base);if(l!==void 0&&!u)nt(t,"meta.base is for marketplace palettes");let d=l===void 0?void 0:n.bases?.get(l),h=n.catalog===void 0?void 0:n.catalogs.get(n.catalog);if(!u&&!h)nt(t,n.catalog===void 0?"an official palette lives in a catalog folder, palettes/<catalog>/<palette>.toml":`its folder "${n.catalog}" has no [[catalog]] table in ${ot}`);let m=_i(t,"colors.background",s.background),p=_i(t,"colors.foreground",s.foreground),b=_i(t,"colors.cursor",s.cursor),$=_i(t,"colors.selection_background",s.selection_background),k=a.map((I,j)=>_i(t,`colors.ansi[${j}]`,I)),S=yN(t,i.signature,{background:m,foreground:p,cursor:b,selection:$,ansi:k}),v=i.booru===void 0?void 0:Ou(t,"meta.booru",i.booru);if(v!==void 0&&/[\s\p{Cc}]/u.test(v))nt(t,`meta.booru must be a single booru tag, got ${JSON.stringify(v)}`);let x=vN(t,i.booru_sites,v,n.foreign===!0),M=i.native_names===void 0?void 0:EN(t,i.native_names),N=Array.isArray(o.waive)?o.waive.map(String):[];if(N.length>0&&typeof o.reason!=="string")nt(t,"contrast.waive needs a contrast.reason explaining why");let C=SN(t,r.picture,n.foreign===!0);return{name:c,...l?{base:l}:{},...n.catalog===void 0?{}:{catalog:n.catalog},native:h?.native,...M?{nativeNames:M}:{},lead:h?.lead===c,order:u?d?.order??gN:Number(i.order),role:f,ansiSource:u&&i.ansi_source===void 0?l??"original":xu(t,"meta.ansi_source",i.ansi_source),...v?{booru:v}:{},...x?{booruSites:x}:{},background:m,foreground:p,cursor:b,selectionBackground:$,ansi:k,signature:S.colors,signatureSlots:S.names,ghostty:$N(t,r.ghostty,{background:m,cursor:b,selectionBackground:$}),waive:N,waiveReason:typeof o.reason==="string"?o.reason:void 0,...C?{pictures:C}:{}}}function m$(t){let e=ch(ot,ah(ot,u$(Mu(t,ot),"utf8")).catalog);if(e.length===0)nt(ot,"needs at least one [[catalog]] table");let n=new Map(e.map((a)=>[a.name,a])),r=Mu(t,"palettes"),i=c$(r,{withFileTypes:!0}).filter((a)=>!a.name.startsWith(".")).flatMap((a)=>{if(!a.isDirectory())nt(`palettes/${a.name}`,"an official palette lives in a catalog folder, palettes/<catalog>/<palette>.toml");return c$(Mu(r,a.name)).filter((c)=>c.endsWith(".toml")).map((c)=>uh(`palettes/${a.name}/${c}`,u$(Mu(r,a.name,c),"utf8"),{name:pN(c,".toml"),catalog:a.name,catalogs:n}))}).sort((a,c)=>a.order-c.order);if(new Set(i.map((a)=>a.order)).size!==i.length)throw Error("themes: meta.order must be unique across all themes");let o=Map.groupBy(i,(a)=>a.catalog);for(let a of e){let c=o.get(a.name);if(!c)nt(ot,`catalog "${a.name}" has no palettes`);if(!c.some((u)=>u.name===a.lead))nt(ot,`catalog "${a.name}" needs a lead, one of its palettes`)}if([...o.keys()].join(`
263
+ */var Jt=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right"],ft="ttheme-marketplace.toml",mN=1e6,c$=3,u$=8,eh="[a-z0-9]+(?:-[a-z0-9]+)*",pN=new RegExp(`^(?:(${eh})@(${eh})/)?(${eh})$`),l$=["background","foreground","cursor","selection"];function nt(t,e){throw Error(`${t}: ${e}`)}function ji(t,e,n){if(typeof n!=="string"||!we(n))nt(t,`${e} must be "#rrggbb" (lowercase), got ${JSON.stringify(n)}`);return n}function Eu(t,e,n){if(typeof n!=="string"||n.length===0)nt(t,`${e} must be a non-empty string`);return n}function de(t){return t.replace("@","--").replace("/","--")}function j(t){return`ttheme-${de(t)}`}function et(t){let e=t.indexOf("/");return e<0?void 0:t.slice(0,e)}function $e(t){return t.slice(t.indexOf("/")+1)}function ne(t){let e=pN.exec(t);if(!e)return"takes lowercase letters, digits and single hyphens, as <palette> or <owner>@<marketplace>/<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 Aa(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 Su(t,e,n){let r=Eu(t,e,n),i=Aa(r);if(i)nt(t,`${e} ${JSON.stringify(r)} ${i}`);return r}function rh(t,e,n){let r=Eu(t,e,n),i=ne(r);if(i)nt(t,`${e} "${r}" ${i}`);return r}function eo(t){return t&&typeof t==="object"?t:{}}function gN(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)nt(t,"ghostty.icon_screen must not be empty");return r.map((i,s)=>ji(t,`ghostty.icon_screen[${s}]`,i))}function bN(t,e,n){let r=eo(e);return{iconGhost:r.icon_ghost===void 0?n.cursor:ji(t,"ghostty.icon_ghost",r.icon_ghost),iconScreen:gN(t,r.icon_screen,n)}}function wN(t){return new Map([...l$.map((e)=>[e,t[e]]),...t.ansi.map((e,n)=>[`ansi${n}`,e])])}function $N(t,e,n){if(!Array.isArray(e)||e.length!==c$)nt(t,`meta.signature must name exactly ${c$} palette slots`);let r=wN(n),i=[],s=[];for(let[o,a]of e.entries()){let c=`meta.signature[${o}]`,u=Eu(t,c,a),f=r.get(u);if(f===void 0)nt(t,`${c} ${JSON.stringify(a)} is not a palette slot — use ${l$.join(", ")} or ansi0-ansi15`);i.push(u),s.push(f)}if(new Set(s).size!==s.length)nt(t,"meta.signature slots must resolve to three different colors");return{names:i,colors:s}}function kN(t,e,n,r=!1){if(e===void 0)return;if(!n)nt(t,"meta.booru_sites renames meta.booru per site, so it needs meta.booru");if(!e||typeof e!=="object"||Array.isArray(e))nt(t,'meta.booru_sites must be a table of site = "tag" or site = ["tag", ...]');let i={};for(let[s,o]of Object.entries(e)){let a=Z.find((u)=>u.key===s);if(!a){if(r)continue;nt(t,`meta.booru_sites.${s} is not a find site — use ${Z.map((u)=>u.key).join(", ")}`)}let c=typeof o==="string"?[o]:Array.isArray(o)?o:void 0;if(!c||c.some((u)=>typeof u!=="string"||u===""||/\s/.test(u)))nt(t,`meta.booru_sites.${s} must be one tag or a list of tags, got ${JSON.stringify(o)}`);if(c.length>1&&!a.ors)nt(t,`meta.booru_sites.${s} takes one tag — ${a.name} does not OR tags`);if(c.length>a.tagBudget)nt(t,`meta.booru_sites.${s} takes ${a.tagBudget} tags at most — ${a.name} searches that many at a time`);i[s]=c}return i}function yN(t,e,n){if(e===void 0)return;if(!Array.isArray(e)||e.length===0||e.length>u$)nt(t,`[[picture]] holds 1 to ${u$} pictures`);let r=e.flatMap((i,s)=>{let o=eo(i),a=`picture[${s}]`,c=Z.find((h)=>h.key===o.site);if(!c){if(n)return[];nt(t,`${a}.site must be one of ${Z.map((h)=>h.key).join(", ")}`)}if(typeof o.id!=="number"||!Number.isSafeInteger(o.id)||o.id<=0)nt(t,`${a}.id must be the post's number on ${c.name}`);let{size:u,position:f,opacity:l}=o;if(u!==void 0&&u!=="fill"&&!(Number.isInteger(u)&&Number(u)>=20&&Number(u)<=999))nt(t,`${a}.size must be "fill" or a percentage from 20 to 999`);let d=f===void 0||Jt.includes(f);if(!d&&!n)nt(t,`${a}.position must be one of ${Jt.join(", ")}`);if(l!==void 0&&!(typeof l==="number"&&l>=0&&l<=1))nt(t,`${a}.opacity must be a number from 0 to 1`);return[{site:c.key,id:o.id,...u!==void 0?{size:u}:{},...f!==void 0&&d?{position:f}:{},...l!==void 0?{opacity:l}:{}}]});return r.length>0?r:void 0}function ih(t,e){try{return Ci(e)}catch(n){nt(t,`is not valid TOML — ${(n instanceof Error?n.message:String(n)).split(`
264
+ `)[0]}`)}}function sh(t,e){if(e===void 0)return[];if(!Array.isArray(e))nt(t,"catalog must be [[catalog]] tables");let n=e.map((r,i)=>{let s=eo(r);return{name:Su(t,`catalog[${i}].name`,s.name),...s.native===void 0?{}:{native:Su(t,`catalog[${i}].native`,s.native)},...s.lead===void 0?{}:{lead:rh(t,`catalog[${i}].lead`,s.lead)}}});if(new Set(n.map((r)=>r.name)).size!==n.length)nt(t,"catalog.name must be unique");return n}function vN(t,e){if(!Array.isArray(e)||e.length===0)nt(t,'meta.native_names must be a list of names, like ["後藤ひとり"]');return e.map((n,r)=>{let i=Su(t,`meta.native_names[${r}]`,n);if(i.includes("|"))nt(t,`meta.native_names[${r}] ${JSON.stringify(i)} contains |`);return i})}var nh={"":["$schema","meta","colors","contrast","ghostty","picture"],meta:["name","base","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 f$(t,e){let n=ih(t,e),r=(i,s,o=[])=>s&&typeof s==="object"&&!Array.isArray(s)?Object.keys(s).filter((a)=>!o.includes(a)).map((a)=>i?`${i}.${a}`:a):[];return[...r("",n,nh[""]),...["meta","colors","contrast","ghostty"].flatMap((i)=>r(i,n[i],nh[i])),...(Array.isArray(n.picture)?n.picture:[]).flatMap((i,s)=>r(`picture[${s}]`,i,nh.picture))]}function oh(t,e,n){let r=ih(t,e),i=eo(r.meta),s=eo(r.colors),o=eo(r.contrast),a=s.ansi;if(!Array.isArray(a)||a.length!==16)nt(t,`colors.ansi must hold exactly 16 colors, got ${Array.isArray(a)?a.length:typeof a}`);let c=rh(t,"meta.name",i.name);if(c!==n.name)nt(t,`meta.name "${c}" does not match its file — it lives at ${n.name}`);let u=n.open===!0;for(let T of["order","role"])if(u&&i[T]!==void 0)nt(t,`meta.${T} is for the official palettes — a marketplace palette follows its base`);let f=i.role;if(f!==void 0&&f!=="default")nt(t,`meta.role must be "default", got ${JSON.stringify(f)}`);let l=i.base===void 0?void 0:rh(t,"meta.base",i.base);if(l!==void 0&&!u)nt(t,"meta.base is for marketplace palettes");let d=l===void 0?void 0:n.bases?.get(l),h=n.catalog===void 0?void 0:n.catalogs.get(n.catalog);if(!u&&!h)nt(t,n.catalog===void 0?"an official palette lives in a catalog folder, palettes/<catalog>/<palette>.toml":`its folder "${n.catalog}" has no [[catalog]] table in ${ft}`);let m=ji(t,"colors.background",s.background),p=ji(t,"colors.foreground",s.foreground),b=ji(t,"colors.cursor",s.cursor),$=ji(t,"colors.selection_background",s.selection_background),k=a.map((T,_)=>ji(t,`colors.ansi[${_}]`,T)),v=$N(t,i.signature,{background:m,foreground:p,cursor:b,selection:$,ansi:k}),S=i.booru===void 0?void 0:Eu(t,"meta.booru",i.booru);if(S!==void 0&&/[\s\p{Cc}]/u.test(S))nt(t,`meta.booru must be a single booru tag, got ${JSON.stringify(S)}`);let M=kN(t,i.booru_sites,S,n.foreign===!0),x=i.native_names===void 0?void 0:vN(t,i.native_names),N=Array.isArray(o.waive)?o.waive.map(String):[];if(N.length>0&&typeof o.reason!=="string")nt(t,"contrast.waive needs a contrast.reason explaining why");let R=yN(t,r.picture,n.foreign===!0);return{name:c,...l?{base:l}:{},...n.catalog===void 0?{}:{catalog:n.catalog},native:h?.native,...x?{nativeNames:x}:{},lead:h?.lead===c,order:u?d?.order??mN:Number(i.order),role:f,ansiSource:u&&i.ansi_source===void 0?l??"original":Su(t,"meta.ansi_source",i.ansi_source),...S?{booru:S}:{},...M?{booruSites:M}:{},background:m,foreground:p,cursor:b,selectionBackground:$,ansi:k,signature:v.colors,signatureSlots:v.names,ghostty:bN(t,r.ghostty,{background:m,cursor:b,selectionBackground:$}),waive:N,waiveReason:typeof o.reason==="string"?o.reason:void 0,...R?{pictures:R}:{}}}function d$(t){let e=sh(ft,ih(ft,a$(vu(t,ft),"utf8")).catalog);if(e.length===0)nt(ft,"needs at least one [[catalog]] table");let n=new Map(e.map((a)=>[a.name,a])),r=vu(t,"palettes"),i=o$(r,{withFileTypes:!0}).filter((a)=>!a.name.startsWith(".")).flatMap((a)=>{if(!a.isDirectory())nt(`palettes/${a.name}`,"an official palette lives in a catalog folder, palettes/<catalog>/<palette>.toml");return o$(vu(r,a.name)).filter((c)=>c.endsWith(".toml")).map((c)=>oh(`palettes/${a.name}/${c}`,a$(vu(r,a.name,c),"utf8"),{name:hN(c,".toml"),catalog:a.name,catalogs:n}))}).sort((a,c)=>a.order-c.order);if(new Set(i.map((a)=>a.order)).size!==i.length)throw Error("themes: meta.order must be unique across all themes");let o=Map.groupBy(i,(a)=>a.catalog);for(let a of e){let c=o.get(a.name);if(!c)nt(ft,`catalog "${a.name}" has no palettes`);if(!c.some((u)=>u.name===a.lead))nt(ft,`catalog "${a.name}" needs a lead, one of its palettes`)}if([...o.keys()].join(`
265
265
  `)!==e.map((a)=>a.name).join(`
266
- `))nt(ot,"the [[catalog]] tables must follow the order meta.order gives their palettes");return i}function p$(t){return t.filter((e)=>e.role===void 0)}function re(t){return[et(t.name),t.catalog].filter((e)=>e!==void 0).join(" / ")}function io(t){return et(t.name)??t.catalog??""}function Bi(t){let e=(r,i)=>r<i?-1:r>i?1:0,n=(r)=>et(r.name)?r.name:r.base??r.name;return t.toSorted((r,i)=>Number(et(r.name)!==void 0)-Number(et(i.name)!==void 0)||e(io(r).toLowerCase(),io(i).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 La={width:2560,height:1550},RN=2,AN=2560,NN=0.1,x$=0.99,TN=2,Gi={tall:1.15,reach:0.4,widest:0.95,headroom:0.04,margin:0.03,stands:12},HN=Mt(Nt("#19161e","#9b86c8",0.2)),LN="shelf",Iu="originals",FN="images.json",fh=1;function CN(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 g$(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 O$(t,e){let n=(o)=>ew({name:t.name,background:Nt(t.background,e,o),foreground:t.foreground,ansi:t.ansi,waive:t.waived??[]}).map((a)=>a.rule),r=new Set(n(0)),i=g$((o)=>n(o).every((a)=>r.has(a))),s=g$((o)=>Mt(Nt(t.background,e,o))<=HN);return{cap:i,matched:s,opacity:Math.floor(Math.min(i,s)*100)/100}}function b$(t,e){let n=CN(t,e),{cap:r,matched:i,opacity:s}=O$(t,n),o=ct(t.background),a=Math.hypot(...ct(n).map((c,u)=>(c-(o[u]??0))*s));return{slot:e,color:n,cap:r,matched:i,opacity:s,reach:a}}function P$(t,e){return O$(t,e).opacity}function Fn(t,e){let n=b$(t,"cursor");if(n.opacity>=NN)return n;return e.values().filter((r)=>r!=="cursor"&&r!=="background").map((r)=>b$(t,r)).reduce((r,i)=>i.reach>r.reach?i:r,n)}function jN(t){return l0(t)??{x:0,y:0,w:t.width,h:t.height}}function bh(t,e){if(t<=0||e<=0)return La;let n=Math.min(1,La.width/Math.max(t,e));return{width:Math.round(t*n),height:Math.round(e*n)}}function I$(t,e,n,r){if(r<Gi.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(Gi.tall*n,Gi.reach*e*t.h/t.w),s=i*t.w/t.h;if(s>Gi.widest*e)s=Gi.widest*e,i=s*t.h/t.w;let o=Gi.headroom*n,a=Math.min(1,(n-o)/i);return{crop:{x:t.x,y:t.y,w:t.w,h:t.h*a},at:{x:e*(1-Gi.margin)-s,y:o,w:s,h:i*a},focus:Math.min(1,(n/2-o)/i)}}function _N(t,e){return 0.299*(t[e]??0)+0.587*(t[e+1]??0)+0.114*(t[e+2]??0)}function BN(t,e){let n=new Uint32Array(256),r=Math.max(1,Math.floor(e.w*e.h/400000)),i=0;for(let o=0;o<e.w*e.h;o+=r){let a=((e.y+Math.floor(o/e.w))*t.width+e.x+o%e.w)*4;if((t.data[a+3]??0)>=128){let c=Math.round(_N(t.data,a));n[c]=(n[c]??0)+1,i++}}let s=0;for(let o=0;o<256&&i>0;o++)if(s+=n[o]??0,s>=i*x$)return Math.min(TN,Math.max(1,255/Math.max(1,o)));return 1}var lh=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 GN(t,e,n){return`#${[t,e,n].map((r)=>Math.round(r).toString(16).padStart(2,"0")).join("")}`}function UN(t,e){let n=new Uint32Array(256),r=new Float64Array(768),i=Math.max(1,Math.floor(e.w*e.h/400000)),s=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,f=t.data[c+1]??0,l=t.data[c+2]??0,d=Math.round(255*Math.sqrt(0.2126*(lh[u]??0)+0.7152*(lh[f]??0)+0.0722*(lh[l]??0)));n[d]=(n[d]??0)+1,r[d*3]=(r[d*3]??0)+u,r[d*3+1]=(r[d*3+1]??0)+f,r[d*3+2]=(r[d*3+2]??0)+l,s++}}let o=0;for(let a=0;a<256&&s>0;a++)if(o+=n[a]??0,o>=s*x$){let c=Math.max(1,n[a]??1);return GN((r[a*3]??0)/c,(r[a*3+1]??0)/c,(r[a*3+2]??0)/c)}return"#ffffff"}function WN(t,e){let n=t.data,r=new Uint8Array(t.width*t.height);for(let i=0,s=0;i<r.length;i++,s+=4){let o=n[s+3];if(o===0)continue;let a=(0.299*n[s]+0.587*n[s+1]+0.114*n[s+2])*e;r[i]=(a>255?255:a)*o/255+0.5}return{width:t.width,height:t.height,data:r}}function R$(t,e,n){let r=Math.max(0,Math.round(t.at.x)),i=Math.max(0,Math.round(t.at.y)),s=Math.min(e,Math.round(t.at.x+t.at.w)),o=Math.min(n,Math.round(t.at.y+t.at.h));if(s<=r||o<=i)return;let a=t.crop.w/t.at.w,c=t.crop.h/t.at.h;return{x0:r,y0:i,x1:s,y1:o,box:{x:t.crop.x+(r-t.at.x)*a,y:t.crop.y+(i-t.at.y)*c,w:(s-r)*a,h:(o-i)*c}}}function Pu(t,e,n,r){let i=new Float32Array(n*r),s=R$(e,n,r);if(s){let o=Gd(t,s.box,s.x1-s.x0,s.y1-s.y0);for(let a=s.y0;a<s.y1;a++)i.set(o.data.subarray((a-s.y0)*(s.x1-s.x0),(a-s.y0+1)*(s.x1-s.x0)),a*n+s.x0)}return{width:n,height:r,data:i}}function wh(t,e,n,r){let i=new Uint8Array(n*r*4),s=R$(e,n,r);if(s){let o=s.x1-s.x0,a=Gr(t,s.box,o,s.y1-s.y0);for(let c=s.y0;c<s.y1;c++)i.set(a.data.subarray((c-s.y0)*o*4,(c-s.y0+1)*o*4),(c*n+s.x0)*4)}return{width:n,height:r,data:i}}function dh(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 s=i.map((a)=>$a(a,e).data),o=new Uint8Array(n*r*4);for(let a=0;a<n*r;a++){let c=s[3]?.[a]??0;if(c<=0)continue;for(let u=0;u<3;u++)o[a*4+u]=Math.min(255,Math.max(0,Math.round((s[u]?.[a]??0)*255/c)));o[a*4+3]=Math.min(255,Math.round(c))}return{width:n,height:r,data:o}}function $h(t,e=!1){let n=e?Q0(t):t,r=jN(n),i,s;return{box:r,clear:or(n,r),get ink(){return i??=WN(n,BN(n,r)),i},image:n,get peak(){return s??=UN(n,r),s}}}function A$(t,e,n,r,i,s){let o=$h(t,s),{box:a,clear:c,ink:u,image:f}=o,l=I$(a,e,n,c),d=Math.min(1,AN/Math.max(a.w,a.h)),h={x:0,y:0,w:Math.round(a.w*d),h:Math.round(a.h*d)},m=r*h.w*l.crop.w/(a.w*l.at.w);if(i==="original")return{coloring:i,figure:dh(Gr(f,a,h.w,h.h),m),fill:dh(wh(f,l,e,n),r),focus:l.focus,peak:o.peak};let p=Pu(u,{crop:a,at:h,focus:l.focus},h.w,h.h),b=Pu(u,l,e,n);return{coloring:i,figure:Js($a(p,m)),fill:Js($a(b,r)),focus:l.focus}}function KN(t,e,n,r){let i=ct(e),s=ct(n),o=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++)o[a*4+u]=Math.round((i[u]??0)+((s[u]??0)-(i[u]??0))*c);o[a*4+3]=255}return{width:t.width,height:t.height,data:o}}function zN(t,e,n){let r=ct(e),i=new Uint8Array(t.width*t.height*4);for(let s=0;s<t.width*t.height;s++){let o=(t.data[s*4+3]??0)/255*n;for(let a=0;a<3;a++)i[s*4+a]=Math.round((r[a]??0)+((t.data[s*4+a]??0)-(r[a]??0))*o);i[s*4+3]=255}return{width:t.width,height:t.height,data:i}}function N$(t,e,n,r,i,s,o,a="tone"){let{box:c,clear:u,ink:f}=t,l=I$(c,r,i,u),d=Math.round(100*l.at.w/l.crop.w/Math.min(r/c.w,i/c.h)),h=o?.size??"fill",m=h==="fill"?l:{crop:c,at:lo(c.w,c.h,r,i,h,o?.at??5,!1,h>100?Math.round(l.focus*100):-1),focus:l.focus},p=a==="original"?P$(e,t.peak):n.opacity,b=o?.opacity??p;return{image:a==="original"?zN(dh(wh(t.image,m,r,i),s),e.background,b):KN(Js($a(Pu(f,m,r,i),s)),e.background,n.color,b),fill:d,opacity:p}}function X(t){return V(t,"ttheme","backgrounds")}function hh(t){return V(t,FN)}function Ui(t){try{return oo(t,"utf8")}catch{return}}function qr(t){try{return ON(t)}catch{return[]}}function Tt(t){let e=Ui(hh(t));if(e===void 0)return qN(t);let n=JSON.parse(e);if(n.version!==fh)throw Error(`${hh(t)} is version ${n.version} — this ttheme reads version ${fh}`);return n}function Je(t){return t.coloring??"tone"}function kh(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:kh(t)}}function co(t){return t.tone===void 0&&Je(t)==="tone"}function T$(t){return t.replace(/[\s,\p{Cc}]+/gu,"_")}function w$(t){return(t.artist??[]).map(T$).join(",")}function DN(t){let e=Qd(t),n=X0(t)?.replace(/\p{Cc}+/gu,"");return[...n?[`# credit ${t.key} ${n}`]:[],...e?[`# source ${t.key} ${e.label} ${e.url}`]:[],...(t.artist??[]).flatMap((r)=>{let i=Ia(t.profiles?.[r]);return i.length>0?[`# profile ${t.key} ${T$(r)} ${i.map((s)=>`${s.kind} ${s.url}`).join(" ")}`]:[]})]}function H$(t,e){let n=e.pictures.findIndex((i)=>i.key===e.active),r=e.pictures[n];return[...r.artist?.length?[`# by ${w$(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?w$(i):"-"}`,...i.from?[i.from]:[]].join(" ")),...e.pictures.filter((i)=>Je(i)==="original").map((i)=>`# colors ${i.key} original`),...e.pictures.flatMap(DN),`background-image = ${V(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(`
267
- `)}function L$(t){let e=X(t);for(let[n,r]of Object.entries(Tt(e).palettes)){let i=V(e,`${de(n)}.conf`),s=H$(e,r);if(Ui(i)!==s)H(i,s)}}function Wi(t,e,n){H(hh(t),`${JSON.stringify(e,null,2)}
268
- `);for(let r of n){let i=e.palettes[r],s=V(t,`${de(r)}.conf`);if(i)H(s,H$(t,i));else so(s,{force:!0})}}function F$(t,e){let n=X(t),r=Tt(n),i=[];for(let[s,o]of e){let a=r.palettes[s];if(a&&!r.palettes[o])r.palettes[o]=a,delete r.palettes[s],i.push(s,o)}if(i.length>0)Wi(n,r,i)}function C$(t,e){return qr(t).filter((n)=>n.startsWith(`${e}.`)||n.startsWith(`${e}@`))}function yh(t,e){for(let n of C$(t,e))so(V(t,n),{force:!0})}function j$(t,e){yh(t,e.stem);for(let n of[e.original,e.cut])if(n)so(V(t,n),{force:!0})}function $$(t,e,n,r){let i=M$(/^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 s=i.slice(0,i.indexOf("@")),o=r??/^# image (\S+)$/m.exec(e??"")?.[1]??`picture_${s.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((f)=>f.startsWith(`${t}-${o}.`));return{key:o,stem:s,fill:i,opacity:Number.isFinite(c)?c:1,...a?{from:a}:{},...u?{original:V(Iu,u)}:{}}}function k$(t,e){if(gh(t))E$(t,e)}function qN(t){let e={version:fh,palettes:{}};if(!gh(t))return e;let n=qr(V(t,Iu)),r=qr(t).filter((s)=>s.endsWith(".conf")&&s!=="shown.conf"&&!/\.(tune|off)\.conf$/.test(s)).map((s)=>s.slice(0,-5)),i=V(t,LN);for(let s of new Set([...r,...qr(i)])){let o=[],a=$$(s,Ui(V(t,`${s}.conf`)),n);if(a)k$(V(t,`${s}.tune.conf`),V(t,`${a.stem}.tune.conf`)),k$(V(t,`${s}.off.conf`),V(t,`${a.stem}.off.conf`)),o.push(a);for(let c of qr(V(i,s))){let u=V(i,s,c),f=$$(s,Ui(V(u,".conf")),n,c);if(!f)continue;for(let l of qr(u)){let d=l===".tune.conf"||l===".off.conf"?`${f.stem}${l}`:`${s}${l}`;if(l!==".conf")E$(V(u,l),V(t,d))}so(u,{recursive:!0}),o.push(f)}if(qr(V(i,s)).length===0)so(V(i,s),{recursive:!0,force:!0});if(o.length>0)o.sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0),e.palettes[s]={active:(a??o[0]).key,pictures:o}}if(qr(i).length===0)so(i,{recursive:!0,force:!0});return Wi(t,e,Object.keys(e.palettes)),e}function y$(t,e,n){return e.startsWith("~/")?V(n,e.slice(2)):IN(e)?e:V(t,e)}function Le(t,e,n){let r=new Map,i=(a,c)=>{let u=Ui(a);if(u===void 0)return!1;for(let f of u.split(`
269
- `)){let l=/^([a-z-]+)\s*=\s*(.*?)\s*$/.exec(f);if(l?.[1]==="config-file"&&c<4)i(y$(t,l[2].replace(/^\?/,""),n),c+1);else if(l&&/^background-image(?:-fit|-opacity|-position)?$/.test(l[1]))r.set(l[1],l[2])}return!0};if(!i(V(t,`${de(e)}.conf`),0))return;let s=r.get("background-image")??"";if(s==="")return;let o=Number(r.get("background-image-opacity")??1);return{image:y$(t,s,n),opacity:Number.isFinite(o)?o:1,cover:r.get("background-image-fit")==="cover",position:r.get("background-image-position")??"center"}}function he(t){return`${t.site}_${t.id}`}function Ru(t,e,n){let r=X(t),i=Tt(r),s=i.palettes[e];if(!s)throw Error(`${e} has no image`);let o=s.pictures.findIndex((u)=>u.key===(n??s.active));if(o===-1)throw Error(`${e} has no picture ${n}`);let[a]=s.pictures.splice(o,1);j$(r,a);let c=s.pictures[o%Math.max(s.pictures.length,1)];if(!c)delete i.palettes[e];else if(a.key===s.active)s.active=c.key;return Wi(r,i,[e]),{key:a.key,left:s.pictures.length}}function _$(t,e,n,r){let i=n.coloring==="original"?qe(n.figure):cr(n.figure,r),s=n.coloring==="original"?qe(n.fill):cr(n.fill,r),o=`${de(t)}.${S$("sha1").update(e).update(i).update(s).digest("hex").slice(0,8)}`,a=`${o}@fill-${Math.round(n.focus*100)}.png`;return{stem:o,fill:a,files:[[`${o}.png`,i],[a,s]]}}function B$(t,e,n,r){return n==="original"&&r?{coloring:"original",opacity:P$(t,r),peak:r}:{coloring:"tone",opacity:e.opacity,tone:e.color}}function mh(t,e){return V(Iu,`${de(t)}-${e}`)}function vh(t,e){return e.map(([n,r])=>{let i=V(t,n);return H(i,r),i})}function Au(t,e,n,r,i,s,o,a="tone"){let c=X(t),u=e.name,f=he(i),l=Tt(c),d=l.palettes[u]??{active:f,pictures:[]},h=bh(s.width,s.height),m=A$(r,h.width,h.height,o,a,i.cut===!0),p=_$(u,f,m,n.color),b=mh(u,f),$={key:f,stem:p.stem,fill:p.fill,...B$(e,n,m.coloring,m.coloring==="original"?m.peak:void 0),blur:o,window:h,...i.from?{from:i.from}:{},...i.artist?.length?{artist:i.artist}:{},...i.profiles&&Object.keys(i.profiles).length>0?{profiles:i.profiles}:{},...i.source?{source:i.source}:{},original:`${b}.${i.ext}`,...i.cut?{cut:`${b}.cut.png`,matte:Ra}:{}},k=d.pictures.find((v)=>v.key===f);if(k)j$(c,k);xN(V(c,Iu),{recursive:!0});let S=vh(c,[...p.files,[$.original,i.bytes],...$.cut?[[$.cut,Ud(ar(r))]]:[]]);return d.pictures=k?d.pictures.map((v)=>v===k?$:v):[...d.pictures,$],d.active=f,l.palettes[u]=d,Wi(c,l,[u]),[...S,V(c,`${de(u)}.conf`)]}function uo(t,e,n){let r=X(t),i=Tt(r),s=i.palettes[e],o=s?s.pictures.findIndex((a)=>a.key===n):-1;if(!s||o===-1)throw Error(`${e} has no picture ${n}`);if(s.active!==n)s.active=n,Wi(r,i,[e]);return{at:o+1,of:s.pictures.length}}function ke(t,e){let n=Tt(X(t)).palettes[e];if(!n)return[];return[...n.pictures.filter((i)=>i.key===n.active),...n.pictures.filter((i)=>i.key!==n.active)]}var ph="top-right";function lo(t,e,n,r,i,s,o,a=-1){let c=Math.trunc,u=(s-1)%3,f=c((s-1)/3),l=n*e>=r*t!==!o,d=l?c(i*n/100):c(i*r*t/(100*e)),h=l?c(i*n*e/(100*t)):c(i*r/100),m=c(u*(n-d)/2),p=c(f*(r-h)/2);if(a>=0){if(d>n)m=c((n-d)/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:d,h}}function Sh(t,e){let n=Ui(V(t,`${e.stem}.tune.conf`));if(n===void 0)return{};let r=(u)=>new RegExp(`^${u}\\s*=\\s*(.*?)\\s*$`,"m").exec(n)?.[1]??"",i=M$(r("background-image")),s=/@(\d+)-/.exec(i)?.[1],o=/@fill-\d+\.png$/.test(i)?"fill":s?Number(s):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{...o!=="fill"?{size:o}:{},...a!==ph?{position:a}:{},...Number.isFinite(c)&&c!==e.opacity?{opacity:c}:{}}}function Fa(t,e,n,r,i){let s=n.size??"fill",o=n.position??ph,a=n.opacity??e.opacity;if(s==="fill"&&o===ph&&a===e.opacity)return;let c=Jt.indexOf(o)+1,u=V(t,`${e.stem}.png`),f=V(t,e.fill),l=!0,d=typeof s==="number"&&(s>100||!r&&o!=="center");if(s===100&&!d)f=u,l=!1;else if(typeof s==="number"){if(co(e))throw Error(`${e.stem} was drawn before pictures kept their tone — init draws it again`);let m=Wt(new Uint8Array(oo(u))),{width:p,height:b}=d?La:m,$=d?Number(/@fill-(\d+)\.png$/.exec(e.fill)?.[1]??50):-1,k=lo(m.width,m.height,p,b,s,c,!1,$);f=V(t,`${e.stem}@${s}-${o}${d?`-${p}x${b}`:""}.png`);let v={crop:{x:0,y:0,w:m.width,h:m.height},at:k,focus:$};H(f,e.tone?cr(Js(Pu(ar(m),v,p,b)),e.tone):qe(wh(m,v,p,b))),l=d}let h=V(t,`${e.stem}.tune.conf`);return H(h,[`background-image = ${f.startsWith(`${i}/`)?`~${f.slice(i.length)}`:f}`,`background-image-fit = ${l?"cover":"contain"}`,`background-image-position = ${o}`,`background-image-opacity = ${a}`,""].join(`
270
- `)),h}function G$(t){return new Map(Object.entries(Tt(X(t)).palettes).flatMap(([e,n])=>{let[,r,i]=/^([a-z.]+)_(\d+)$/.exec(n.active)??[];return r&&i?[[e,{site:r,id:Number(i)}]]:[]}))}function U$(t){try{let e=Nn(new Uint8Array(oo(t)));return e?{width:e.width,height:e.height}:void 0}catch{return}}function W$(t,e,n,r,i,s,o){let a=[n.original,n.cut].map((c)=>{if(!c)return"";try{let{size:u,mtimeMs:f}=PN(V(t,c));return`${c}:${u}:${f}`}catch{return}});if(!n.original||a.includes(void 0))return;return t$([RN,de(e),n.key,...a,r.width,r.height,i,s,s==="tone"?o:""])}function JN(t,e,n){if(!n.window||n.blur===void 0)return;let r=W$(t,e,n,n.window,n.blur,Je(n),n.tone??"");if(!r||e$(r))return;try{eh(r,{stem:n.stem,fill:n.fill,...n.peak?{peak:n.peak}:{},figure:oo(V(t,`${n.stem}.png`)),picture:oo(V(t,n.fill))})}catch{}}function K$(t,e,n,r,i,s,o,a,c){let u=c?void 0:W$(t,e,n,r,o,a,s.hue.color),f=u?n$(u):void 0;if(f)return{made:{stem:f.stem,fill:f.fill,files:[[`${f.stem}.png`,f.figure],[f.fill,f.picture]]},peak:f.peak,image:void 0};let l=i();if(!l)return null;let d=A$(l,r.width,r.height,o,a,c||n.cut!==void 0),h=_$(e,n.key,d,s.hue.color),m=d.coloring==="original"?d.peak:void 0;if(u)eh(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:l}}function Ca(t,e,n,r,i,s,o,a,c,u=Je(n)){let f=X(t),l=n.window??U$(V(f,n.fill))??La,d=K$(f,e,n,l,r,i,s,u,c);if(!d)return null;let{made:h,peak:m,image:p}=d,b={...n,stem:h.stem,fill:h.fill,...B$(i.colors,i.hue,u,m),blur:s,window:l,...c?{cut:`${mh(e,n.key)}.cut.png`}:{},...c||n.cut?{matte:Ra}:{}};if(u==="original")delete b.tone;else delete b.peak;if(c&&p)H(V(f,`${mh(e,n.key)}.cut.png`),Ud(ar(p)));if(h.stem===n.stem)return b;if(Je(n)!==u)JN(f,e,n);vh(f,h.files);let $=Sh(f,n);Fa(f,b,Je(n)===u?$:{...$,opacity:void 0},o,a);let k=V(f,`${n.stem}.off.conf`);if(gh(k))MN(k,V(f,`${b.stem}.off.conf`));return b}function z$(t,e,n,r,i,s,o){let a=X(t),c=n.window??U$(V(a,n.fill))??La;return K$(a,e,n,c,r,i,s,o,!1)!==null}function Eh(t,e){let n=X(t),r=Tt(n),i=new Set,s=[];for(let{name:o,picture:a}of e){let c=r.palettes[o],u=c?.pictures.findIndex((l)=>l.key===a.key)??-1,f=c?.pictures[u];if(!c||!f)continue;if(c.pictures[u]=a,i.add(o),f.stem!==a.stem)s.push(f.stem)}if(i.size===0)return;Wi(n,r,[...i]);for(let o of s)yh(n,o)}function YN(t,e,n,r){let i=C$(t,n.stem).filter((a)=>a.endsWith(".png")).map((a)=>{let c=new Uint8Array(oo(V(t,a)));return[a,lu(c,r.color)??cr(ar(Wt(c)),r.color)]}),s=(a)=>i.find(([c])=>c===a)?.[1]??new Uint8Array,o=`${de(e)}.${S$("sha1").update(n.key).update(s(`${n.stem}.png`)).update(s(n.fill)).digest("hex").slice(0,8)}`;vh(t,i.map(([a,c])=>[o+a.slice(n.stem.length),c]));for(let a of["tune","off"]){let c=Ui(V(t,`${n.stem}.${a}.conf`));if(c!==void 0)H(V(t,`${o}.${a}.conf`),c.split(n.stem).join(o))}return{...n,stem:o,fill:o+n.fill.slice(n.stem.length),tone:r.color}}function v$(t,e){return Je(t)!=="original"&&t.tone!==void 0&&t.tone!==e.hue.color}function D$(t,e){let n=X(t),r=Tt(n),i=[],s=[];for(let[o,a]of Object.entries(r.palettes)){let c=e.get(o);if(!c||!a.pictures.some((u)=>v$(u,c)))continue;a.pictures=a.pictures.map((u)=>{if(!v$(u,c))return u;let f=YN(n,o,u,c.hue);if(f.stem!==u.stem)s.push(u.stem);return f}),i.push(o)}if(i.length>0){Wi(n,r,i);for(let o of s)yh(n,o)}return i}var VN=1;function hn(t){let{slot:e,color:n,opacity:r}=Fn({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}:{},...t.catalog?{catalog:t.catalog}:{},...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 Fe(t){return{name:t.name,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},...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 ZN=6,XN=["ansi1","ansi2","ansi4","ansi3","ansi5","ansi6"];function fo(t){let e=(s)=>s.startsWith("ansi")?t.ansi[Number(s.slice(4))]:s==="foreground"?t.foreground:s==="cursor"?t.cursor:s==="selection"?t.selection:void 0,n=(s)=>s.startsWith("ansi")?`ansi${Number(s.slice(4))%8}`:s,r=new Set,i=[];for(let s of["foreground",...t.signatureSlots,...XN]){let o=e(s);if(i.length===ZN||!o||r.has(n(s))||i.includes(o))continue;r.add(n(s)),i.push(o)}return i}function It(t){return t.filter((e)=>e.default!==!0)}function Nu(){return{schema:VN,version:dt.version,gate:Te,palettes:[]}}import{existsSync as QN,readFileSync as Hu,statSync as q$}from"node:fs";import{homedir as go}from"node:os";import{join as mo}from"node:path";var tT=["core","kowiki","unlicensed"],eT=["ko","ja","en","zh","other"],V$=["keys","keyAt","ownAt","owners","cards","cardAt","ranks","tags","tagAt","tagCard"],Z$="TTNI";function Jr(t=go()){return mo(process.env.XDG_CACHE_HOME??mo(t,".cache"),"ttheme","aninames")}var nT=/[ァ-ヶ]/g,rT=/[\s\p{P}\p{S}]+/gu;function po(t){return t.normalize("NFKC").toLowerCase().replace(nT,(e)=>String.fromCharCode(e.charCodeAt(0)-96)).replace(rT,"")}function Ki(t,e){let n=po(e);if(n===""){let r=e.toLowerCase();return t.some((i)=>i.toLowerCase().includes(r))}return t.some((r)=>po(r).includes(n))}function Ph(t){return t.length>=2||/[\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}]/u.test(t)}function X$(t){let e=Jr(t);return tT.values().map((n)=>mo(e,`ttheme-${n}.json`)).filter((n)=>QN(n)).toArray()}var iT=6;function Q$(t){return[`format ${iT}`,...t.map((e)=>`${e}:${q$(e).size}:${q$(e).mtimeMs}`)].join("|")}function sT(t){try{return JSON.parse(Hu(t,"utf8"))}catch{return{}}}function oT(t){let e=new Map;for(let r of t)for(let[i,s]of Object.entries(sT(r))){let o=e.get(i)??{tags:new Set,names:[],japanese:[],generated:[],rank:0,weight:0,posts:0};o.posts=Math.max(o.posts,s.posts??0),o.generated.push(...s.generated??[]),o.japanese.push(...s.names?.ja??[]),o.tag??=s.tag;for(let a of s.danbooru??[])o.tags.add(a);for(let a of eT)o.names.push(...s.names?.[a]??[]);if(s.rank!==void 0){let a=s.weight??1;o.rank=(o.rank*o.weight+s.rank*a)/(o.weight+a),o.weight+=a}e.set(i,o)}let n=Math.log1p(e.values().reduce((r,i)=>Math.max(r,i.posts),1));return e.values().filter((r)=>r.tags.size>0).map((r)=>{let i=[...r.tags];return{tag:r.tag&&r.tags.has(r.tag)?r.tag:i[0],tags:i,names:[...new Set(r.names)],japanese:[...new Set(r.japanese)],generated:[...new Set(r.generated)],rank:r.posts>0?Math.log1p(r.posts)/n:r.rank}}).toArray()}function ja(t,e){let n=new t(e.length);return n.set(e),n}function Mh(t){let e=[0];for(let n of t)e.push(e.at(-1)+n.length);return{bytes:Buffer.concat(t),at:ja(Uint32Array,e)}}function aT(t,e){let n=oT(t),r=new Map,i=(S,v,x)=>{let M=r.get(S),N=v*4+x;if(!M)r.set(S,[N]);else if(M.at(-1)>>>2!==v)M.push(N);else if(M.at(-1)<N)M[M.length-1]=N};n.forEach((S,v)=>{let x=[...S.names,...S.tags.map((M)=>M.replaceAll("_"," "))];for(let[M,N]of[[x,1],[S.generated,0]])for(let C of M){let I=po(C);if(I&&Ph(I))i(I,v,2|N);let j=C.split(/[\s・·_]+/);if(j.length<2)continue;for(let U of j){let G=po(U);if(G&&Ph(G))i(G,v,N)}}});let s=[...r.keys()].sort(),o=[0],a=[];for(let S of s){for(let v of r.get(S)??[])a.push(v);o.push(a.length)}let c=n.flatMap((S,v)=>S.tags.map((x)=>[x,v])).sort(([S],[v])=>S<v?-1:S>v?1:0),u=Mh(s.map((S)=>Buffer.from(S))),f=Mh(n.map((S)=>Buffer.from(JSON.stringify([S.tag,S.tags,S.names,S.japanese,S.generated])))),l=Mh(c.map(([S])=>Buffer.from(S))),d={keys:u.bytes,keyAt:u.at,ownAt:ja(Uint32Array,o),owners:ja(Uint32Array,a),cards:f.bytes,cardAt:f.at,ranks:ja(Float32Array,n.map((S)=>S.rank)),tags:l.bytes,tagAt:l.at,tagCard:ja(Uint32Array,c.map(([,S])=>S))},h=V$.map((S)=>{let v=d[S];return Buffer.from(v.buffer,v.byteOffset,v.byteLength)}),m=0,p=h.map((S)=>{let v=[m,S.length];return m+=Math.ceil(S.length/4)*4,v}),b=Buffer.from(JSON.stringify({stamp:e,sections:p})),$=Math.ceil((8+b.length)/4)*4,k=Buffer.alloc($+m);k.write(Z$,0,"latin1"),k.writeUInt32LE(b.length,4),b.copy(k,8);for(let[S,v]of h.entries())v.copy(k,$+(p[S]?.[0]??0));return k}function J$(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 Y$(t,e){if(t.toString("latin1",0,4)!==Z$)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,s=(c)=>{let[u,f]=r.sections[V$.indexOf(c)];return[i+u,f]},o=(c)=>{let[u,f]=s(c);return t.subarray(u,u+f)},a=(c)=>J$(Uint32Array,t,...s(c));return{keys:o("keys"),keyAt:a("keyAt"),ownAt:a("ownAt"),owners:a("owners"),cards:o("cards"),cardAt:a("cardAt"),ranks:J$(Float32Array,t,...s("ranks")),tags:o("tags"),tagAt:a("tagAt"),tagCard:a("tagCard")}}var xh;function Ih(t){try{let e=X$(t);if(e.length===0)return;let n=Q$(e);if(xh?.stamp===n)return xh.index;let r=mo(Jr(t),"index.bin"),i;try{i=Y$(Hu(r),n)}catch{}if(!i){let s=aT(e,n);try{H(r,s)}catch{}i=Y$(s,n)}if(i)xh={stamp:n,index:i};return i}catch{return}}function tk(t,e){let[n,r,i,s,o]=JSON.parse(t.cards.toString("utf8",t.cardAt[e],t.cardAt[e+1]));return{tag:n,tags:r,names:i,japanese:s,generated:o,rank:t.ranks[e]??0}}function ek(t,e,n,r){let i=0,s=n;while(i<s){let o=i+s>>1;if(t.toString("utf8",e[o],e[o+1])<r)i=o+1;else s=o}return i}function nk(t,e){let n=Buffer.from(e),r=t.tagCard.length,i=ek(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 Oh=/\s*[((][^()()]*[))]$/u,Tu={ko:4,en:4,ja:5,zh:3};function cT(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((l)=>!Oh.test(l))),i=(l)=>!Oh.test(l)||!r.has(l.replace(Oh,"")),s=t.names.filter(i),o=s.filter((l)=>e.test(l)),a=[...o,...t.generated.slice(0,o.length>0?0:2)],c=s.filter((l)=>n.test(l)),u=t.japanese.filter(i),f=s.filter((l)=>!e.test(l)&&!n.test(l)&&!u.includes(l));return[...new Set([...a.slice(0,Tu.ko),...c.slice(0,Tu.en),...u.slice(0,Tu.ja),...f.slice(0,Tu.zh)])]}var ho;function Lu(t,e=go()){if(!t)return[];if(!ho)try{ho=JSON.parse(Hu(mo(Jr(e),"aliases.json"),"utf8")).tags}catch{ho={}}return ho[t]??[]}function Rh(t,e=go()){try{return uT(t,e)}catch{return new Map}}function uT(t,e){let n=X$(e);if(n.length===0||t.length===0)return new Map;let r=Q$(n),i=mo(Jr(e),"aliases.json"),s;try{s=JSON.parse(Hu(i,"utf8"))}catch{}if(s?.stamp===r&&t.every((u)=>(u in s.tags)))return ho=s.tags,new Map(t.map((u)=>[u,s.tags[u]??[]]));let o=Ih(e);if(!o)return new Map;let a=new Set([...t,...s?.stamp===r?Object.keys(s.tags):[]]),c={};for(let u of a){let f=nk(o,u);c[u]=f===void 0?[]:cT(tk(o,f))}try{H(i,`${JSON.stringify({stamp:r,tags:c})}
271
- `)}catch{}return ho=c,new Map(t.map((u)=>[u,c[u]??[]]))}function zi(t,e=go()){Rh(t.flatMap((n)=>n.booru?[n.booru]:[]),e)}var lT=0.25,fT=0.1;function rk(t,e,n=new Set,r=go()){let i=po(t);if(!i||!Ph(i))return[];let s=Ih(r);if(!s)return[];let o=Buffer.from(i),a=s.ownAt.length-1,c=new Set([...n].flatMap((f)=>nk(s,f)??[])),u=new Map;for(let f=ek(s.keys,s.keyAt,a,i);f<a;f++){let l=s.keyAt[f],d=s.keyAt[f+1]-l;if(d<o.length||s.keys.compare(o,0,o.length,l,l+o.length)!==0)break;let h=d===o.length;for(let m=s.ownAt[f];m<s.ownAt[f+1];m++){let p=s.owners[m],b=p>>>2,$=h?Math.max(0,(p&2?2:1)-(p&1?0:1)):0,k=(s.ranks[b]??0)+lT*$+(c.has(b)?fT:0);if((u.get(b)?.score??-1)<k)u.set(b,{score:k,key:f})}}return[...u].sort(([,f],[,l])=>l.score-f.score).slice(0,e).map(([f,{key:l}])=>{let d=tk(s,f),h=s.keys.toString("utf8",s.keyAt[l],s.keyAt[l+1]);return{tag:d.tags.find((m)=>n.has(m))??d.tag,name:[...d.names,...d.generated].find((m)=>po(m).includes(h))??d.tag.replaceAll("_"," ")}})}function Fu(t=go()){Ih(t)}import{createHash as kT}from"node:crypto";import{existsSync as yT,readdirSync as mk,readFileSync as vT}from"node:fs";import{basename as pk,join as ju}from"node:path";import{existsSync as dT,readFileSync as ik}from"node:fs";import{homedir as sk}from"node:os";import{isAbsolute as ok,join as Di,resolve as hT}from"node:path";var Y="official",Th="https://www.schemastore.org/ttheme-marketplace.json",ak="https://www.schemastore.org/ttheme-palette.json",ck=["$schema","name","description","owner","catalog","renames","force_remove_deleted_palettes","metadata"],uk=["name","email","url"],lk=["name","native","lead"],qi="ttheme-marketplace",mT=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i,pT=/^[\w.-]{1,100}$/,gT=/^\w[\w.+/-]{0,199}$/;function mn(t){return Di(t,"ttheme","installed.json")}function Yt(t){return t??[Y]}function bo(t){try{let{marketplaces:e}=JSON.parse(ik(mn(t),"utf8"));return Yt(Array.isArray(e)?e.filter((n)=>typeof n==="string"):void 0)}catch{return[Y]}}function Ht(t){return ok(t)}function yt(t){return t!==Y&&!Ht(t)}function Yr(t){let e=t.indexOf("#");return yt(t)&&e>=0?t.slice(0,e):t}function _a(t){let e=t.indexOf("#");return yt(t)&&e>=0?t.slice(e+1):void 0}function Ji(t,e){return Yr(t)===Yr(e)}function Vr(t,e){return yt(t)&&(e?.[t]??!1)}function bT(t){return!gT.test(t)||t.includes("..")||t.includes("//")||/(?:[./]|\.lock)$/.test(t)}function pn(t,e=process.cwd()){if(t===Y)return Y;if(t==="~"||t.startsWith("~/"))return Di(sk(),t.slice(1));if(t.startsWith(".")||ok(t))return hT(e,t);let[n="",r,...i]=t.split("#"),[s,o,...a]=n.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").split("/");if(!s||!mT.test(s)||!o||!pT.test(o)||a.length>0||i.length>0||r!==void 0&&bT(r))throw Error(`${t} is not a marketplace — give a repository (alice/ttheme-dust, #v1 pins a tag or branch) or a path (./my-marketplace)`);return`${s.toLowerCase()}/${o}${r===void 0?"":`#${r}`}`}function fk(t){let e=_a(t)?.split("/").map(encodeURIComponent).join("/")??"HEAD";return`https://codeload.github.com/${Yr(t)}/tar.gz/${e}`}function dk(t){return t.slice(0,t.indexOf("/"))}function wo(t){return Di(t,"ttheme","marketplaces")}function fr(t,e){return Di(wo(t),`${Yr(e).replace("/","--")}.json`)}function Yi(t){return Di(t,"ttheme","marketplace")}function Hh(t,e){return Di(Yi(t),e)}function wT(t,e){if(typeof t!=="string"||typeof e!=="string")return'needs a "name" and an [owner] table whose name is the GitHub handle';return ne(`${t}@${e}/x`)}function ye({owner:t,name:e}){return`${t}@${e}`}function hk({owner:t,name:e}){return`"$schema" = ${JSON.stringify(Th)}
266
+ `))nt(ft,"the [[catalog]] tables must follow the order meta.order gives their palettes");return i}function h$(t){return t.filter((e)=>e.role===void 0)}function re(t){return[et(t.name),t.catalog].filter((e)=>e!==void 0).join(" / ")}function no(t){return et(t.name)??t.catalog??""}function _i(t){let e=(r,i)=>r<i?-1:r>i?1:0,n=(r)=>et(r.name)?r.name:r.base??r.name;return t.toSorted((r,i)=>Number(et(r.name)!==void 0)-Number(et(i.name)!==void 0)||e(no(r).toLowerCase(),no(i).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 Na={width:2560,height:1550},PN=2,IN=2560,RN=0.1,E$=0.99,AN=2,Bi={tall:1.15,reach:0.4,widest:0.95,headroom:0.04,margin:0.03,stands:12},NN=Mt(Nt("#19161e","#9b86c8",0.2)),TN="shelf",xu="originals",HN="images.json",ch=1;function FN(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 m$(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 M$(t,e){let n=(o)=>Qb({name:t.name,background:Nt(t.background,e,o),foreground:t.foreground,ansi:t.ansi,waive:t.waived??[]}).map((a)=>a.rule),r=new Set(n(0)),i=m$((o)=>n(o).every((a)=>r.has(a))),s=m$((o)=>Mt(Nt(t.background,e,o))<=NN);return{cap:i,matched:s,opacity:Math.floor(Math.min(i,s)*100)/100}}function p$(t,e){let n=FN(t,e),{cap:r,matched:i,opacity:s}=M$(t,n),o=st(t.background),a=Math.hypot(...st(n).map((c,u)=>(c-(o[u]??0))*s));return{slot:e,color:n,cap:r,matched:i,opacity:s,reach:a}}function x$(t,e){return M$(t,e).opacity}function Tn(t,e){let n=p$(t,"cursor");if(n.opacity>=RN)return n;return e.values().filter((r)=>r!=="cursor"&&r!=="background").map((r)=>p$(t,r)).reduce((r,i)=>i.reach>r.reach?i:r,n)}function LN(t){return c0(t)??{x:0,y:0,w:t.width,h:t.height}}function mh(t,e){if(t<=0||e<=0)return Na;let n=Math.min(1,Na.width/Math.max(t,e));return{width:Math.round(t*n),height:Math.round(e*n)}}function O$(t,e,n,r){if(r<Bi.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(Bi.tall*n,Bi.reach*e*t.h/t.w),s=i*t.w/t.h;if(s>Bi.widest*e)s=Bi.widest*e,i=s*t.h/t.w;let o=Bi.headroom*n,a=Math.min(1,(n-o)/i);return{crop:{x:t.x,y:t.y,w:t.w,h:t.h*a},at:{x:e*(1-Bi.margin)-s,y:o,w:s,h:i*a},focus:Math.min(1,(n/2-o)/i)}}function CN(t,e){return 0.299*(t[e]??0)+0.587*(t[e+1]??0)+0.114*(t[e+2]??0)}function jN(t,e){let n=new Uint32Array(256),r=Math.max(1,Math.floor(e.w*e.h/400000)),i=0;for(let o=0;o<e.w*e.h;o+=r){let a=((e.y+Math.floor(o/e.w))*t.width+e.x+o%e.w)*4;if((t.data[a+3]??0)>=128){let c=Math.round(CN(t.data,a));n[c]=(n[c]??0)+1,i++}}let s=0;for(let o=0;o<256&&i>0;o++)if(s+=n[o]??0,s>=i*E$)return Math.min(AN,Math.max(1,255/Math.max(1,o)));return 1}var ah=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 _N(t,e,n){return`#${[t,e,n].map((r)=>Math.round(r).toString(16).padStart(2,"0")).join("")}`}function BN(t,e){let n=new Uint32Array(256),r=new Float64Array(768),i=Math.max(1,Math.floor(e.w*e.h/400000)),s=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,f=t.data[c+1]??0,l=t.data[c+2]??0,d=Math.round(255*Math.sqrt(0.2126*(ah[u]??0)+0.7152*(ah[f]??0)+0.0722*(ah[l]??0)));n[d]=(n[d]??0)+1,r[d*3]=(r[d*3]??0)+u,r[d*3+1]=(r[d*3+1]??0)+f,r[d*3+2]=(r[d*3+2]??0)+l,s++}}let o=0;for(let a=0;a<256&&s>0;a++)if(o+=n[a]??0,o>=s*E$){let c=Math.max(1,n[a]??1);return _N((r[a*3]??0)/c,(r[a*3+1]??0)/c,(r[a*3+2]??0)/c)}return"#ffffff"}function GN(t,e){let n=t.data,r=new Uint8Array(t.width*t.height);for(let i=0,s=0;i<r.length;i++,s+=4){let o=n[s+3];if(o===0)continue;let a=(0.299*n[s]+0.587*n[s+1]+0.114*n[s+2])*e;r[i]=(a>255?255:a)*o/255+0.5}return{width:t.width,height:t.height,data:r}}function P$(t,e,n){let r=Math.max(0,Math.round(t.at.x)),i=Math.max(0,Math.round(t.at.y)),s=Math.min(e,Math.round(t.at.x+t.at.w)),o=Math.min(n,Math.round(t.at.y+t.at.h));if(s<=r||o<=i)return;let a=t.crop.w/t.at.w,c=t.crop.h/t.at.h;return{x0:r,y0:i,x1:s,y1:o,box:{x:t.crop.x+(r-t.at.x)*a,y:t.crop.y+(i-t.at.y)*c,w:(s-r)*a,h:(o-i)*c}}}function Mu(t,e,n,r){let i=new Float32Array(n*r),s=P$(e,n,r);if(s){let o=jd(t,s.box,s.x1-s.x0,s.y1-s.y0);for(let a=s.y0;a<s.y1;a++)i.set(o.data.subarray((a-s.y0)*(s.x1-s.x0),(a-s.y0+1)*(s.x1-s.x0)),a*n+s.x0)}return{width:n,height:r,data:i}}function ph(t,e,n,r){let i=new Uint8Array(n*r*4),s=P$(e,n,r);if(s){let o=s.x1-s.x0,a=Br(t,s.box,o,s.y1-s.y0);for(let c=s.y0;c<s.y1;c++)i.set(a.data.subarray((c-s.y0)*o*4,(c-s.y0+1)*o*4),(c*n+s.x0)*4)}return{width:n,height:r,data:i}}function uh(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 s=i.map((a)=>ga(a,e).data),o=new Uint8Array(n*r*4);for(let a=0;a<n*r;a++){let c=s[3]?.[a]??0;if(c<=0)continue;for(let u=0;u<3;u++)o[a*4+u]=Math.min(255,Math.max(0,Math.round((s[u]?.[a]??0)*255/c)));o[a*4+3]=Math.min(255,Math.round(c))}return{width:n,height:r,data:o}}function gh(t,e=!1){let n=e?Z0(t):t,r=LN(n),i,s;return{box:r,clear:rr(n,r),get ink(){return i??=GN(n,jN(n,r)),i},image:n,get peak(){return s??=BN(n,r),s}}}function I$(t,e,n,r,i,s){let o=gh(t,s),{box:a,clear:c,ink:u,image:f}=o,l=O$(a,e,n,c),d=Math.min(1,IN/Math.max(a.w,a.h)),h={x:0,y:0,w:Math.round(a.w*d),h:Math.round(a.h*d)},m=r*h.w*l.crop.w/(a.w*l.at.w);if(i==="original")return{coloring:i,figure:uh(Br(f,a,h.w,h.h),m),fill:uh(ph(f,l,e,n),r),focus:l.focus,peak:o.peak};let p=Mu(u,{crop:a,at:h,focus:l.focus},h.w,h.h),b=Mu(u,l,e,n);return{coloring:i,figure:Ds(ga(p,m)),fill:Ds(ga(b,r)),focus:l.focus}}function UN(t,e,n,r){let i=st(e),s=st(n),o=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++)o[a*4+u]=Math.round((i[u]??0)+((s[u]??0)-(i[u]??0))*c);o[a*4+3]=255}return{width:t.width,height:t.height,data:o}}function WN(t,e,n){let r=st(e),i=new Uint8Array(t.width*t.height*4);for(let s=0;s<t.width*t.height;s++){let o=(t.data[s*4+3]??0)/255*n;for(let a=0;a<3;a++)i[s*4+a]=Math.round((r[a]??0)+((t.data[s*4+a]??0)-(r[a]??0))*o);i[s*4+3]=255}return{width:t.width,height:t.height,data:i}}function R$(t,e,n,r,i,s,o,a="tone"){let{box:c,clear:u,ink:f}=t,l=O$(c,r,i,u),d=Math.round(100*l.at.w/l.crop.w/Math.min(r/c.w,i/c.h)),h=o?.size??"fill",m=h==="fill"?l:{crop:c,at:co(c.w,c.h,r,i,h,o?.at??5,!1,h>100?Math.round(l.focus*100):-1),focus:l.focus},p=a==="original"?x$(e,t.peak):n.opacity,b=o?.opacity??p;return{image:a==="original"?WN(uh(ph(t.image,m,r,i),s),e.background,b):UN(Ds(ga(Mu(f,m,r,i),s)),e.background,n.color,b),fill:d,opacity:p}}function X(t){return V(t,"ttheme","backgrounds")}function lh(t){return V(t,HN)}function Gi(t){try{return io(t,"utf8")}catch{return}}function Dr(t){try{return MN(t)}catch{return[]}}function Tt(t){let e=Gi(lh(t));if(e===void 0)return zN(t);let n=JSON.parse(e);if(n.version!==ch)throw Error(`${lh(t)} is version ${n.version} — this ttheme reads version ${ch}`);return n}function qe(t){return t.coloring??"tone"}function bh(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 so(t){return{hue:{color:t.backdrop.color,opacity:t.backdrop.opacity},colors:bh(t)}}function oo(t){return t.tone===void 0&&qe(t)==="tone"}function A$(t){return t.replace(/[\s,\p{Cc}]+/gu,"_")}function g$(t){return(t.artist??[]).map(A$).join(",")}function KN(t){let e=Vd(t),n=V0(t)?.replace(/\p{Cc}+/gu,"");return[...n?[`# credit ${t.key} ${n}`]:[],...e?[`# source ${t.key} ${e.label} ${e.url}`]:[],...(t.artist??[]).flatMap((r)=>{let i=xa(t.profiles?.[r]);return i.length>0?[`# profile ${t.key} ${A$(r)} ${i.map((s)=>`${s.kind} ${s.url}`).join(" ")}`]:[]})]}function N$(t,e){let n=e.pictures.findIndex((i)=>i.key===e.active),r=e.pictures[n];return[...r.artist?.length?[`# by ${g$(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?g$(i):"-"}`,...i.from?[i.from]:[]].join(" ")),...e.pictures.filter((i)=>qe(i)==="original").map((i)=>`# colors ${i.key} original`),...e.pictures.flatMap(KN),`background-image = ${V(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(`
267
+ `)}function T$(t){let e=X(t);for(let[n,r]of Object.entries(Tt(e).palettes)){let i=V(e,`${de(n)}.conf`),s=N$(e,r);if(Gi(i)!==s)C(i,s)}}function Ui(t,e,n){C(lh(t),`${JSON.stringify(e,null,2)}
268
+ `);for(let r of n){let i=e.palettes[r],s=V(t,`${de(r)}.conf`);if(i)C(s,N$(t,i));else ro(s,{force:!0})}}function H$(t,e){let n=X(t),r=Tt(n),i=[];for(let[s,o]of e){let a=r.palettes[s];if(a&&!r.palettes[o])r.palettes[o]=a,delete r.palettes[s],i.push(s,o)}if(i.length>0)Ui(n,r,i)}function F$(t,e){return Dr(t).filter((n)=>n.startsWith(`${e}.`)||n.startsWith(`${e}@`))}function wh(t,e){for(let n of F$(t,e))ro(V(t,n),{force:!0})}function L$(t,e){wh(t,e.stem);for(let n of[e.original,e.cut])if(n)ro(V(t,n),{force:!0})}function b$(t,e,n,r){let i=S$(/^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 s=i.slice(0,i.indexOf("@")),o=r??/^# image (\S+)$/m.exec(e??"")?.[1]??`picture_${s.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((f)=>f.startsWith(`${t}-${o}.`));return{key:o,stem:s,fill:i,opacity:Number.isFinite(c)?c:1,...a?{from:a}:{},...u?{original:V(xu,u)}:{}}}function w$(t,e){if(hh(t))v$(t,e)}function zN(t){let e={version:ch,palettes:{}};if(!hh(t))return e;let n=Dr(V(t,xu)),r=Dr(t).filter((s)=>s.endsWith(".conf")&&s!=="shown.conf"&&!/\.(tune|off)\.conf$/.test(s)).map((s)=>s.slice(0,-5)),i=V(t,TN);for(let s of new Set([...r,...Dr(i)])){let o=[],a=b$(s,Gi(V(t,`${s}.conf`)),n);if(a)w$(V(t,`${s}.tune.conf`),V(t,`${a.stem}.tune.conf`)),w$(V(t,`${s}.off.conf`),V(t,`${a.stem}.off.conf`)),o.push(a);for(let c of Dr(V(i,s))){let u=V(i,s,c),f=b$(s,Gi(V(u,".conf")),n,c);if(!f)continue;for(let l of Dr(u)){let d=l===".tune.conf"||l===".off.conf"?`${f.stem}${l}`:`${s}${l}`;if(l!==".conf")v$(V(u,l),V(t,d))}ro(u,{recursive:!0}),o.push(f)}if(Dr(V(i,s)).length===0)ro(V(i,s),{recursive:!0,force:!0});if(o.length>0)o.sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0),e.palettes[s]={active:(a??o[0]).key,pictures:o}}if(Dr(i).length===0)ro(i,{recursive:!0,force:!0});return Ui(t,e,Object.keys(e.palettes)),e}function $$(t,e,n){return e.startsWith("~/")?V(n,e.slice(2)):ON(e)?e:V(t,e)}function He(t,e,n){let r=new Map,i=(a,c)=>{let u=Gi(a);if(u===void 0)return!1;for(let f of u.split(`
269
+ `)){let l=/^([a-z-]+)\s*=\s*(.*?)\s*$/.exec(f);if(l?.[1]==="config-file"&&c<4)i($$(t,l[2].replace(/^\?/,""),n),c+1);else if(l&&/^background-image(?:-fit|-opacity|-position)?$/.test(l[1]))r.set(l[1],l[2])}return!0};if(!i(V(t,`${de(e)}.conf`),0))return;let s=r.get("background-image")??"";if(s==="")return;let o=Number(r.get("background-image-opacity")??1);return{image:$$(t,s,n),opacity:Number.isFinite(o)?o:1,cover:r.get("background-image-fit")==="cover",position:r.get("background-image-position")??"center"}}function he(t){return`${t.site}_${t.id}`}function Ou(t,e,n){let r=X(t),i=Tt(r),s=i.palettes[e];if(!s)throw Error(`${e} has no image`);let o=s.pictures.findIndex((u)=>u.key===(n??s.active));if(o===-1)throw Error(`${e} has no picture ${n}`);let[a]=s.pictures.splice(o,1);L$(r,a);let c=s.pictures[o%Math.max(s.pictures.length,1)];if(!c)delete i.palettes[e];else if(a.key===s.active)s.active=c.key;return Ui(r,i,[e]),{key:a.key,left:s.pictures.length}}function C$(t,e,n,r){let i=n.coloring==="original"?De(n.figure):sr(n.figure,r),s=n.coloring==="original"?De(n.fill):sr(n.fill,r),o=`${de(t)}.${y$("sha1").update(e).update(i).update(s).digest("hex").slice(0,8)}`,a=`${o}@fill-${Math.round(n.focus*100)}.png`;return{stem:o,fill:a,files:[[`${o}.png`,i],[a,s]]}}function j$(t,e,n,r){return n==="original"&&r?{coloring:"original",opacity:x$(t,r),peak:r}:{coloring:"tone",opacity:e.opacity,tone:e.color}}function fh(t,e){return V(xu,`${de(t)}-${e}`)}function $h(t,e){return e.map(([n,r])=>{let i=V(t,n);return C(i,r),i})}function Pu(t,e,n,r,i,s,o,a="tone"){let c=X(t),u=e.name,f=he(i),l=Tt(c),d=l.palettes[u]??{active:f,pictures:[]},h=mh(s.width,s.height),m=I$(r,h.width,h.height,o,a,i.cut===!0),p=C$(u,f,m,n.color),b=fh(u,f),$={key:f,stem:p.stem,fill:p.fill,...j$(e,n,m.coloring,m.coloring==="original"?m.peak:void 0),blur:o,window:h,...i.from?{from:i.from}:{},...i.artist?.length?{artist:i.artist}:{},...i.profiles&&Object.keys(i.profiles).length>0?{profiles:i.profiles}:{},...i.source?{source:i.source}:{},original:`${b}.${i.ext}`,...i.cut?{cut:`${b}.cut.png`,matte:Oa}:{}},k=d.pictures.find((S)=>S.key===f);if(k)L$(c,k);EN(V(c,xu),{recursive:!0});let v=$h(c,[...p.files,[$.original,i.bytes],...$.cut?[[$.cut,_d(ir(r))]]:[]]);return d.pictures=k?d.pictures.map((S)=>S===k?$:S):[...d.pictures,$],d.active=f,l.palettes[u]=d,Ui(c,l,[u]),[...v,V(c,`${de(u)}.conf`)]}function ao(t,e,n){let r=X(t),i=Tt(r),s=i.palettes[e],o=s?s.pictures.findIndex((a)=>a.key===n):-1;if(!s||o===-1)throw Error(`${e} has no picture ${n}`);if(s.active!==n)s.active=n,Ui(r,i,[e]);return{at:o+1,of:s.pictures.length}}function ke(t,e){let n=Tt(X(t)).palettes[e];if(!n)return[];return[...n.pictures.filter((i)=>i.key===n.active),...n.pictures.filter((i)=>i.key!==n.active)]}var dh="top-right";function co(t,e,n,r,i,s,o,a=-1){let c=Math.trunc,u=(s-1)%3,f=c((s-1)/3),l=n*e>=r*t!==!o,d=l?c(i*n/100):c(i*r*t/(100*e)),h=l?c(i*n*e/(100*t)):c(i*r/100),m=c(u*(n-d)/2),p=c(f*(r-h)/2);if(a>=0){if(d>n)m=c((n-d)/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:d,h}}function kh(t,e){let n=Gi(V(t,`${e.stem}.tune.conf`));if(n===void 0)return{};let r=(u)=>new RegExp(`^${u}\\s*=\\s*(.*?)\\s*$`,"m").exec(n)?.[1]??"",i=S$(r("background-image")),s=/@(\d+)-/.exec(i)?.[1],o=/@fill-\d+\.png$/.test(i)?"fill":s?Number(s):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{...o!=="fill"?{size:o}:{},...a!==dh?{position:a}:{},...Number.isFinite(c)&&c!==e.opacity?{opacity:c}:{}}}function Ta(t,e,n,r,i){let s=n.size??"fill",o=n.position??dh,a=n.opacity??e.opacity;if(s==="fill"&&o===dh&&a===e.opacity)return;let c=Jt.indexOf(o)+1,u=V(t,`${e.stem}.png`),f=V(t,e.fill),l=!0,d=typeof s==="number"&&(s>100||!r&&o!=="center");if(s===100&&!d)f=u,l=!1;else if(typeof s==="number"){if(oo(e))throw Error(`${e.stem} was drawn before pictures kept their tone — init draws it again`);let m=Wt(new Uint8Array(io(u))),{width:p,height:b}=d?Na:m,$=d?Number(/@fill-(\d+)\.png$/.exec(e.fill)?.[1]??50):-1,k=co(m.width,m.height,p,b,s,c,!1,$);f=V(t,`${e.stem}@${s}-${o}${d?`-${p}x${b}`:""}.png`);let S={crop:{x:0,y:0,w:m.width,h:m.height},at:k,focus:$};C(f,e.tone?sr(Ds(Mu(ir(m),S,p,b)),e.tone):De(ph(m,S,p,b))),l=d}let h=V(t,`${e.stem}.tune.conf`);return C(h,[`background-image = ${f.startsWith(`${i}/`)?`~${f.slice(i.length)}`:f}`,`background-image-fit = ${l?"cover":"contain"}`,`background-image-position = ${o}`,`background-image-opacity = ${a}`,""].join(`
270
+ `)),h}function _$(t){return new Map(Object.entries(Tt(X(t)).palettes).flatMap(([e,n])=>{let[,r,i]=/^([a-z.]+)_(\d+)$/.exec(n.active)??[];return r&&i?[[e,{site:r,id:Number(i)}]]:[]}))}function B$(t){try{let e=In(new Uint8Array(io(t)));return e?{width:e.width,height:e.height}:void 0}catch{return}}function G$(t,e,n,r,i,s,o){let a=[n.original,n.cut].map((c)=>{if(!c)return"";try{let{size:u,mtimeMs:f}=xN(V(t,c));return`${c}:${u}:${f}`}catch{return}});if(!n.original||a.includes(void 0))return;return X0([PN,de(e),n.key,...a,r.width,r.height,i,s,s==="tone"?o:""])}function DN(t,e,n){if(!n.window||n.blur===void 0)return;let r=G$(t,e,n,n.window,n.blur,qe(n),n.tone??"");if(!r||Q0(r))return;try{Xd(r,{stem:n.stem,fill:n.fill,...n.peak?{peak:n.peak}:{},figure:io(V(t,`${n.stem}.png`)),picture:io(V(t,n.fill))})}catch{}}function U$(t,e,n,r,i,s,o,a,c){let u=c?void 0:G$(t,e,n,r,o,a,s.hue.color),f=u?t$(u):void 0;if(f)return{made:{stem:f.stem,fill:f.fill,files:[[`${f.stem}.png`,f.figure],[f.fill,f.picture]]},peak:f.peak,image:void 0};let l=i();if(!l)return null;let d=I$(l,r.width,r.height,o,a,c||n.cut!==void 0),h=C$(e,n.key,d,s.hue.color),m=d.coloring==="original"?d.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:l}}function Ha(t,e,n,r,i,s,o,a,c,u=qe(n)){let f=X(t),l=n.window??B$(V(f,n.fill))??Na,d=U$(f,e,n,l,r,i,s,u,c);if(!d)return null;let{made:h,peak:m,image:p}=d,b={...n,stem:h.stem,fill:h.fill,...j$(i.colors,i.hue,u,m),blur:s,window:l,...c?{cut:`${fh(e,n.key)}.cut.png`}:{},...c||n.cut?{matte:Oa}:{}};if(u==="original")delete b.tone;else delete b.peak;if(c&&p)C(V(f,`${fh(e,n.key)}.cut.png`),_d(ir(p)));if(h.stem===n.stem)return b;if(qe(n)!==u)DN(f,e,n);$h(f,h.files);let $=kh(f,n);Ta(f,b,qe(n)===u?$:{...$,opacity:void 0},o,a);let k=V(f,`${n.stem}.off.conf`);if(hh(k))SN(k,V(f,`${b.stem}.off.conf`));return b}function W$(t,e,n,r,i,s,o){let a=X(t),c=n.window??B$(V(a,n.fill))??Na;return U$(a,e,n,c,r,i,s,o,!1)!==null}function yh(t,e){let n=X(t),r=Tt(n),i=new Set,s=[];for(let{name:o,picture:a}of e){let c=r.palettes[o],u=c?.pictures.findIndex((l)=>l.key===a.key)??-1,f=c?.pictures[u];if(!c||!f)continue;if(c.pictures[u]=a,i.add(o),f.stem!==a.stem)s.push(f.stem)}if(i.size===0)return;Ui(n,r,[...i]);for(let o of s)wh(n,o)}function qN(t,e,n,r){let i=F$(t,n.stem).filter((a)=>a.endsWith(".png")).map((a)=>{let c=new Uint8Array(io(V(t,a)));return[a,au(c,r.color)??sr(ir(Wt(c)),r.color)]}),s=(a)=>i.find(([c])=>c===a)?.[1]??new Uint8Array,o=`${de(e)}.${y$("sha1").update(n.key).update(s(`${n.stem}.png`)).update(s(n.fill)).digest("hex").slice(0,8)}`;$h(t,i.map(([a,c])=>[o+a.slice(n.stem.length),c]));for(let a of["tune","off"]){let c=Gi(V(t,`${n.stem}.${a}.conf`));if(c!==void 0)C(V(t,`${o}.${a}.conf`),c.split(n.stem).join(o))}return{...n,stem:o,fill:o+n.fill.slice(n.stem.length),tone:r.color}}function k$(t,e){return qe(t)!=="original"&&t.tone!==void 0&&t.tone!==e.hue.color}function K$(t,e){let n=X(t),r=Tt(n),i=[],s=[];for(let[o,a]of Object.entries(r.palettes)){let c=e.get(o);if(!c||!a.pictures.some((u)=>k$(u,c)))continue;a.pictures=a.pictures.map((u)=>{if(!k$(u,c))return u;let f=qN(n,o,u,c.hue);if(f.stem!==u.stem)s.push(u.stem);return f}),i.push(o)}if(i.length>0){Ui(n,r,i);for(let o of s)wh(n,o)}return i}var JN=1;function dn(t){let{slot:e,color:n,opacity:r}=Tn({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}:{},...t.catalog?{catalog:t.catalog}:{},...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:Mn(t),...t.waive.length>0?{waived:t.waive}:{},backdrop:{slot:e,color:n,opacity:r},...t.pictures?{pictures:t.pictures}:{}}}function Fe(t){return{name:t.name,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},...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 YN=6,VN=["ansi1","ansi2","ansi4","ansi3","ansi5","ansi6"];function uo(t){let e=(s)=>s.startsWith("ansi")?t.ansi[Number(s.slice(4))]:s==="foreground"?t.foreground:s==="cursor"?t.cursor:s==="selection"?t.selection:void 0,n=(s)=>s.startsWith("ansi")?`ansi${Number(s.slice(4))%8}`:s,r=new Set,i=[];for(let s of["foreground",...t.signatureSlots,...VN]){let o=e(s);if(i.length===YN||!o||r.has(n(s))||i.includes(o))continue;r.add(n(s)),i.push(o)}return i}function It(t){return t.filter((e)=>e.default!==!0)}function Iu(){return{schema:JN,version:lt.version,gate:Ne,palettes:[]}}import{existsSync as ZN,readFileSync as Au,statSync as z$}from"node:fs";import{homedir as mo}from"node:os";import{join as fo}from"node:path";var XN=["core","kowiki","unlicensed"],QN=["ko","ja","en","zh","other"],J$=["keys","keyAt","ownAt","owners","cards","cardAt","ranks","tags","tagAt","tagCard"],Y$="TTNI";function qr(t=mo()){return fo(process.env.XDG_CACHE_HOME??fo(t,".cache"),"ttheme","aninames")}var tT=/[ァ-ヶ]/g,eT=/[\s\p{P}\p{S}]+/gu;function ho(t){return t.normalize("NFKC").toLowerCase().replace(tT,(e)=>String.fromCharCode(e.charCodeAt(0)-96)).replace(eT,"")}function Wi(t,e){let n=ho(e);if(n===""){let r=e.toLowerCase();return t.some((i)=>i.toLowerCase().includes(r))}return t.some((r)=>ho(r).includes(n))}function Mh(t){return t.length>=2||/[\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}]/u.test(t)}function V$(t){let e=qr(t);return XN.values().map((n)=>fo(e,`ttheme-${n}.json`)).filter((n)=>ZN(n)).toArray()}var nT=6;function Z$(t){return[`format ${nT}`,...t.map((e)=>`${e}:${z$(e).size}:${z$(e).mtimeMs}`)].join("|")}function rT(t){try{return JSON.parse(Au(t,"utf8"))}catch{return{}}}function iT(t){let e=new Map;for(let r of t)for(let[i,s]of Object.entries(rT(r))){let o=e.get(i)??{tags:new Set,names:[],japanese:[],generated:[],rank:0,weight:0,posts:0};o.posts=Math.max(o.posts,s.posts??0),o.generated.push(...s.generated??[]),o.japanese.push(...s.names?.ja??[]),o.tag??=s.tag;for(let a of s.danbooru??[])o.tags.add(a);for(let a of QN)o.names.push(...s.names?.[a]??[]);if(s.rank!==void 0){let a=s.weight??1;o.rank=(o.rank*o.weight+s.rank*a)/(o.weight+a),o.weight+=a}e.set(i,o)}let n=Math.log1p(e.values().reduce((r,i)=>Math.max(r,i.posts),1));return e.values().filter((r)=>r.tags.size>0).map((r)=>{let i=[...r.tags];return{tag:r.tag&&r.tags.has(r.tag)?r.tag:i[0],tags:i,names:[...new Set(r.names)],japanese:[...new Set(r.japanese)],generated:[...new Set(r.generated)],rank:r.posts>0?Math.log1p(r.posts)/n:r.rank}}).toArray()}function Fa(t,e){let n=new t(e.length);return n.set(e),n}function vh(t){let e=[0];for(let n of t)e.push(e.at(-1)+n.length);return{bytes:Buffer.concat(t),at:Fa(Uint32Array,e)}}function sT(t,e){let n=iT(t),r=new Map,i=(v,S,M)=>{let x=r.get(v),N=S*4+M;if(!x)r.set(v,[N]);else if(x.at(-1)>>>2!==S)x.push(N);else if(x.at(-1)<N)x[x.length-1]=N};n.forEach((v,S)=>{let M=[...v.names,...v.tags.map((x)=>x.replaceAll("_"," "))];for(let[x,N]of[[M,1],[v.generated,0]])for(let R of x){let T=ho(R);if(T&&Mh(T))i(T,S,2|N);let _=R.split(/[\s・·_]+/);if(_.length<2)continue;for(let K of _){let G=ho(K);if(G&&Mh(G))i(G,S,N)}}});let s=[...r.keys()].sort(),o=[0],a=[];for(let v of s){for(let S of r.get(v)??[])a.push(S);o.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=vh(s.map((v)=>Buffer.from(v))),f=vh(n.map((v)=>Buffer.from(JSON.stringify([v.tag,v.tags,v.names,v.japanese,v.generated])))),l=vh(c.map(([v])=>Buffer.from(v))),d={keys:u.bytes,keyAt:u.at,ownAt:Fa(Uint32Array,o),owners:Fa(Uint32Array,a),cards:f.bytes,cardAt:f.at,ranks:Fa(Float32Array,n.map((v)=>v.rank)),tags:l.bytes,tagAt:l.at,tagCard:Fa(Uint32Array,c.map(([,v])=>v))},h=J$.map((v)=>{let S=d[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(Y$,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 D$(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 q$(t,e){if(t.toString("latin1",0,4)!==Y$)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,s=(c)=>{let[u,f]=r.sections[J$.indexOf(c)];return[i+u,f]},o=(c)=>{let[u,f]=s(c);return t.subarray(u,u+f)},a=(c)=>D$(Uint32Array,t,...s(c));return{keys:o("keys"),keyAt:a("keyAt"),ownAt:a("ownAt"),owners:a("owners"),cards:o("cards"),cardAt:a("cardAt"),ranks:D$(Float32Array,t,...s("ranks")),tags:o("tags"),tagAt:a("tagAt"),tagCard:a("tagCard")}}var Sh;function xh(t){try{let e=V$(t);if(e.length===0)return;let n=Z$(e);if(Sh?.stamp===n)return Sh.index;let r=fo(qr(t),"index.bin"),i;try{i=q$(Au(r),n)}catch{}if(!i){let s=sT(e,n);try{C(r,s)}catch{}i=q$(s,n)}if(i)Sh={stamp:n,index:i};return i}catch{return}}function X$(t,e){let[n,r,i,s,o]=JSON.parse(t.cards.toString("utf8",t.cardAt[e],t.cardAt[e+1]));return{tag:n,tags:r,names:i,japanese:s,generated:o,rank:t.ranks[e]??0}}function Q$(t,e,n,r){let i=0,s=n;while(i<s){let o=i+s>>1;if(t.toString("utf8",e[o],e[o+1])<r)i=o+1;else s=o}return i}function tk(t,e){let n=Buffer.from(e),r=t.tagCard.length,i=Q$(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 Eh=/\s*[((][^()()]*[))]$/u,Ru={ko:4,en:4,ja:5,zh:3};function oT(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((l)=>!Eh.test(l))),i=(l)=>!Eh.test(l)||!r.has(l.replace(Eh,"")),s=t.names.filter(i),o=s.filter((l)=>e.test(l)),a=[...o,...t.generated.slice(0,o.length>0?0:2)],c=s.filter((l)=>n.test(l)),u=t.japanese.filter(i),f=s.filter((l)=>!e.test(l)&&!n.test(l)&&!u.includes(l));return[...new Set([...a.slice(0,Ru.ko),...c.slice(0,Ru.en),...u.slice(0,Ru.ja),...f.slice(0,Ru.zh)])]}var lo;function Nu(t,e=mo()){if(!t)return[];if(!lo)try{lo=JSON.parse(Au(fo(qr(e),"aliases.json"),"utf8")).tags}catch{lo={}}return lo[t]??[]}function Oh(t,e=mo()){try{return aT(t,e)}catch{return new Map}}function aT(t,e){let n=V$(e);if(n.length===0||t.length===0)return new Map;let r=Z$(n),i=fo(qr(e),"aliases.json"),s;try{s=JSON.parse(Au(i,"utf8"))}catch{}if(s?.stamp===r&&t.every((u)=>(u in s.tags)))return lo=s.tags,new Map(t.map((u)=>[u,s.tags[u]??[]]));let o=xh(e);if(!o)return new Map;let a=new Set([...t,...s?.stamp===r?Object.keys(s.tags):[]]),c={};for(let u of a){let f=tk(o,u);c[u]=f===void 0?[]:oT(X$(o,f))}try{C(i,`${JSON.stringify({stamp:r,tags:c})}
271
+ `)}catch{}return lo=c,new Map(t.map((u)=>[u,c[u]??[]]))}function Ki(t,e=mo()){Oh(t.flatMap((n)=>n.booru?[n.booru]:[]),e)}var cT=0.25,uT=0.1;function ek(t,e,n=new Set,r=mo()){let i=ho(t);if(!i||!Mh(i))return[];let s=xh(r);if(!s)return[];let o=Buffer.from(i),a=s.ownAt.length-1,c=new Set([...n].flatMap((f)=>tk(s,f)??[])),u=new Map;for(let f=Q$(s.keys,s.keyAt,a,i);f<a;f++){let l=s.keyAt[f],d=s.keyAt[f+1]-l;if(d<o.length||s.keys.compare(o,0,o.length,l,l+o.length)!==0)break;let h=d===o.length;for(let m=s.ownAt[f];m<s.ownAt[f+1];m++){let p=s.owners[m],b=p>>>2,$=h?Math.max(0,(p&2?2:1)-(p&1?0:1)):0,k=(s.ranks[b]??0)+cT*$+(c.has(b)?uT:0);if((u.get(b)?.score??-1)<k)u.set(b,{score:k,key:f})}}return[...u].sort(([,f],[,l])=>l.score-f.score).slice(0,e).map(([f,{key:l}])=>{let d=X$(s,f),h=s.keys.toString("utf8",s.keyAt[l],s.keyAt[l+1]);return{tag:d.tags.find((m)=>n.has(m))??d.tag,name:[...d.names,...d.generated].find((m)=>ho(m).includes(h))??d.tag.replaceAll("_"," ")}})}function Tu(t=mo()){xh(t)}import{createHash as $T}from"node:crypto";import{existsSync as kT,readdirSync as dk,readFileSync as yT}from"node:fs";import{basename as hk,join as Lu}from"node:path";import{existsSync as lT,readFileSync as nk}from"node:fs";import{homedir as rk}from"node:os";import{isAbsolute as ik,join as zi,resolve as fT}from"node:path";var Y="official",dT="https://www.schemastore.org/ttheme-marketplace.json",sk="https://www.schemastore.org/ttheme-palette.json",ok=["$schema","name","description","owner","catalog","renames","force_remove_deleted_palettes","metadata"],ak=["name","email","url"],ck=["name","native","lead"],Di="ttheme-marketplace",hT=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i,mT=/^[\w.-]{1,100}$/,pT=/^\w[\w.+/-]{0,199}$/;function cr(t){return zi(t,"ttheme","installed.json")}function Yt(t){return t??[Y]}function po(t){try{let{marketplaces:e}=JSON.parse(nk(cr(t),"utf8"));return Yt(Array.isArray(e)?e.filter((n)=>typeof n==="string"):void 0)}catch{return[Y]}}function _t(t){return ik(t)}function yt(t){return t!==Y&&!_t(t)}function Jr(t){let e=t.indexOf("#");return yt(t)&&e>=0?t.slice(0,e):t}function La(t){let e=t.indexOf("#");return yt(t)&&e>=0?t.slice(e+1):void 0}function qi(t,e){return Jr(t)===Jr(e)}function Yr(t,e){return yt(t)&&(e?.[t]??!1)}function gT(t){return!pT.test(t)||t.includes("..")||t.includes("//")||/(?:[./]|\.lock)$/.test(t)}function hn(t,e=process.cwd()){if(t===Y)return Y;if(t==="~"||t.startsWith("~/"))return zi(rk(),t.slice(1));if(t.startsWith(".")||ik(t))return fT(e,t);let[n="",r,...i]=t.split("#"),[s,o,...a]=n.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").split("/");if(!s||!hT.test(s)||!o||!mT.test(o)||a.length>0||i.length>0||r!==void 0&&gT(r))throw Error(`${t} is not a marketplace — give a repository (alice/ttheme-dust, #v1 pins a tag or branch) or a path (./my-marketplace)`);return`${s.toLowerCase()}/${o}${r===void 0?"":`#${r}`}`}function uk(t){let e=La(t)?.split("/").map(encodeURIComponent).join("/")??"HEAD";return`https://codeload.github.com/${Jr(t)}/tar.gz/${e}`}function lk(t){return t.slice(0,t.indexOf("/"))}function Rh(t){return zi(t,"ttheme","marketplaces")}function ur(t,e){return zi(Rh(t),`${Jr(e).replace("/","--")}.json`)}function Hu(t){return zi(t,"ttheme","marketplace")}function Ah(t,e){return zi(Hu(t),e)}function bT(t,e){if(typeof t!=="string"||typeof e!=="string")return'needs a "name" and an [owner] table whose name is the GitHub handle';return ne(`${t}@${e}/x`)}function ye({owner:t,name:e}){return`${t}@${e}`}function fk({owner:t,name:e}){return`"$schema" = ${JSON.stringify(dT)}
272
272
  name = ${JSON.stringify(e)}
273
273
 
274
274
  [owner]
275
275
  name = ${JSON.stringify(t)}
276
- `}function Nh(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 Ah(t,e,n){return n===void 0?void 0:Nh(t,e,n,"one line of text, 200 characters at most")}function $T(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(ne(r)||i!==!1&&(typeof i!=="string"||ne(i)))throw Error(`${t}: renames.${r} must map a palette name to a palette name, or to false`);n[r]=i}return n}function Lh(t,e){let n;try{n=ji(t)}catch(d){throw Error(`${e} is not valid TOML — ${d.message.split(`
277
- `)[0]}`)}let r=Nh(e,"name",n.name,"the marketplace 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 s=i,o={name:Nh(e,"owner.name",s.name,"the GitHub handle")},a=Ah(e,"owner.email",s.email),c=Ah(e,"owner.url",s.url),u=Ah(e,"description",n.description),f=n.force_remove_deleted_palettes;if(f!==void 0&&typeof f!=="boolean")throw Error(`${e}: force_remove_deleted_palettes must be true or false`);let l=wT(o.name,r);if(l)throw Error(`${e} ${l}`);return{owner:o.name,name:r,about:{...o,...a?{email:a}:{},...c?{url:c}:{}},...u?{description:u}:{},catalogs:ch(e,n.catalog),renames:$T(e,n.renames),forceRemove:f===!0}}function Ye(t){let e=Di(t,ot);if(!dT(e))throw Error(`${t} has no ${ot} — \`ttheme marketplace init ${t}\` makes one`);return Lh(ik(e,"utf8"),e)}function st(t){if(t===Y)return"the official marketplace";if(!Ht(t))return`github.com/${t}`;let e=sk();return t===e||t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}var Ba="tt2:",jh="https://ttheme.vercel.app/p/",Cu=4,gk=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)];function Vi(t,e=!0){return bo(t).filter(Ht).flatMap((n)=>{try{let r=Ye(n);return[{dir:n,...r,id:ye(r)}]}catch(r){if(e)process.stderr.write(`ttheme: skipping the marketplace at ${n} — ${r.message}
278
- `);return[]}})}function _u(t){return ju(t,"palettes")}function Fh(t,e){return t<e?-1:t>e?1:0}function _h(t,e,n=[]){let r=[],i=[];for(let o of t){let[a,c,u,...f]=o.split("/");if(a!=="palettes"||!c||c.startsWith(".")||f.length>0)continue;if(u===void 0){if(c.endsWith(".toml"))i.push({file:{path:e(o),slug:pk(c,".toml")},name:c})}else if(u.endsWith(".toml"))r.push({file:{path:e(o),slug:pk(u,".toml"),catalog:c},name:u})}let s=(o="")=>{let a=n.findIndex((c)=>c.name===o);return a<0?n.length:a};return r.sort((o,a)=>s(o.file.catalog)-s(a.file.catalog)||Fh(o.file.catalog??"",a.file.catalog??"")||Fh(o.name,a.name)),i.sort((o,a)=>Fh(o.name,a.name)),[...r,...i].map(({file:o})=>o)}function ST(t){try{return Ye(t).catalogs}catch{return[]}}function $o(t,e=[]){let n=_u(t);if(!yT(n))return[];let r=mk(n,{withFileTypes:!0}).flatMap((i)=>i.isDirectory()?mk(ju(n,i.name)).map((s)=>`palettes/${i.name}/${s}`):[`palettes/${i.name}`]);return _h(r,(i)=>ju(t,i),e)}function ET(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 marketplace`;let r=t.catalog===void 0?void 0:Ha(t.catalog);return r?`the catalog folder ${JSON.stringify(t.catalog)} ${r}`:void 0}function Bh(t,e){let n=et(e);if(!n)throw Error(`${e} is an official palette — yours are named <you>@<marketplace>/<palette>`);let r=Vi(t,!1).find((s)=>s.id===n);if(!r)throw Error(`${n} is not a local marketplace — \`ttheme marketplace add <dir>\` adds the folder that holds it`);let i=$e(e);return $o(r.dir).find((s)=>s.slug===i)?.path??ju(_u(r.dir),`${i}.toml`)}function MT(t,e,n,r){let i=new Map(e.values().filter((s)=>!s.default&&!et(s.name)).map((s)=>[s.name,{order:s.order}]));return{name:t,...r.catalog===void 0?{}:{catalog:r.catalog},catalogs:new Map((r.catalogs??[]).map((s)=>[s.name,s])),bases:i,open:!0,...n?{foreign:!0}:{}}}function Cn(t,e,n,r=!1,i={}){let s=$e(t);return{...uh(`${s}.toml`,e,MT(s,n,r,i)),name:t}}function me(t){return t?(e,n)=>process.stderr.write(`ttheme: skipping ${e} — ${n}
279
- `):()=>{}}function Gh(t,e,n,r,i,s=!1,o=[]){let a=new Map;return t.flatMap((c)=>{try{let u=ET(c,a);if(u)throw Error(u);a.set(c.slug,c);let f={...c.catalog===void 0?{}:{catalog:c.catalog},catalogs:o};return[hn(Cn(`${n}/${c.slug}`,e(c),r,s,f))]}catch(u){return i(c.path,u.message),[]}})}function jn(t,e,n,r=me(!0)){let i=ST(t);return Gh($o(t,i),(s)=>vT(s.path,"utf8"),e,n,r,!1,i)}function Bu(t,e,n=!0){return Vi(t,n).flatMap(({dir:r,id:i})=>jn(r,i,e,me(n)))}function Uh(t,e=t.name,n){return{name:e,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},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 Lt=(t)=>JSON.stringify(t);function bk(t){return["[[picture]]",`site = ${Lt(t.site)}`,`id = ${t.id}`,...t.size===void 0?[]:[`size = ${typeof t.size==="number"?t.size:Lt(t.size)}`],...t.position===void 0?[]:[`position = ${Lt(t.position)}`],...t.opacity===void 0?[]:[`opacity = ${t.opacity}`]]}function wk(t,e){return e.length===0?t:`${t.replace(/\n*$/,`
276
+ `}function Ih(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 Ph(t,e,n){return n===void 0?void 0:Ih(t,e,n,"one line of text, 200 characters at most")}function wT(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(ne(r)||i!==!1&&(typeof i!=="string"||ne(i)))throw Error(`${t}: renames.${r} must map a palette name to a palette name, or to false`);n[r]=i}return n}function Nh(t,e){let n;try{n=Ci(t)}catch(d){throw Error(`${e} is not valid TOML — ${d.message.split(`
277
+ `)[0]}`)}let r=Ih(e,"name",n.name,"the marketplace 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 s=i,o={name:Ih(e,"owner.name",s.name,"the GitHub handle")},a=Ph(e,"owner.email",s.email),c=Ph(e,"owner.url",s.url),u=Ph(e,"description",n.description),f=n.force_remove_deleted_palettes;if(f!==void 0&&typeof f!=="boolean")throw Error(`${e}: force_remove_deleted_palettes must be true or false`);let l=bT(o.name,r);if(l)throw Error(`${e} ${l}`);return{owner:o.name,name:r,about:{...o,...a?{email:a}:{},...c?{url:c}:{}},...u?{description:u}:{},catalogs:sh(e,n.catalog),renames:wT(e,n.renames),forceRemove:f===!0}}function Je(t){let e=zi(t,ft);if(!lT(e))throw Error(`${t} has no ${ft} — \`ttheme marketplace init ${t}\` makes one`);return Nh(nk(e,"utf8"),e)}function ot(t){if(t===Y)return"the official marketplace";if(!_t(t))return`github.com/${t}`;let e=rk();return t===e||t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}var Ca="tt2:",Fh="https://ttheme.vercel.app/p/",Fu=4,mk=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)];function Ji(t,e=!0){return po(t).filter(_t).flatMap((n)=>{try{let r=Je(n);return[{dir:n,...r,id:ye(r)}]}catch(r){if(e)process.stderr.write(`ttheme: skipping the marketplace at ${n} — ${r.message}
278
+ `);return[]}})}function Cu(t){return Lu(t,"palettes")}function Th(t,e){return t<e?-1:t>e?1:0}function Lh(t,e,n=[]){let r=[],i=[];for(let o of t){let[a,c,u,...f]=o.split("/");if(a!=="palettes"||!c||c.startsWith(".")||f.length>0)continue;if(u===void 0){if(c.endsWith(".toml"))i.push({file:{path:e(o),slug:hk(c,".toml")},name:c})}else if(u.endsWith(".toml"))r.push({file:{path:e(o),slug:hk(u,".toml"),catalog:c},name:u})}let s=(o="")=>{let a=n.findIndex((c)=>c.name===o);return a<0?n.length:a};return r.sort((o,a)=>s(o.file.catalog)-s(a.file.catalog)||Th(o.file.catalog??"",a.file.catalog??"")||Th(o.name,a.name)),i.sort((o,a)=>Th(o.name,a.name)),[...r,...i].map(({file:o})=>o)}function vT(t){try{return Je(t).catalogs}catch{return[]}}function go(t,e=[]){let n=Cu(t);if(!kT(n))return[];let r=dk(n,{withFileTypes:!0}).flatMap((i)=>i.isDirectory()?dk(Lu(n,i.name)).map((s)=>`palettes/${i.name}/${s}`):[`palettes/${i.name}`]);return Lh(r,(i)=>Lu(t,i),e)}function ST(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 marketplace`;let r=t.catalog===void 0?void 0:Aa(t.catalog);return r?`the catalog folder ${JSON.stringify(t.catalog)} ${r}`:void 0}function Ch(t,e){let n=et(e);if(!n)throw Error(`${e} is an official palette — yours are named <you>@<marketplace>/<palette>`);let r=Ji(t,!1).find((s)=>s.id===n);if(!r)throw Error(`${n} is not a local marketplace — \`ttheme marketplace add <dir>\` adds the folder that holds it`);let i=$e(e);return go(r.dir).find((s)=>s.slug===i)?.path??Lu(Cu(r.dir),`${i}.toml`)}function ET(t,e,n,r){let i=new Map(e.values().filter((s)=>!s.default&&!et(s.name)).map((s)=>[s.name,{order:s.order}]));return{name:t,...r.catalog===void 0?{}:{catalog:r.catalog},catalogs:new Map((r.catalogs??[]).map((s)=>[s.name,s])),bases:i,open:!0,...n?{foreign:!0}:{}}}function Hn(t,e,n,r=!1,i={}){let s=$e(t);return{...oh(`${s}.toml`,e,ET(s,n,r,i)),name:t}}function me(t){return t?(e,n)=>process.stderr.write(`ttheme: skipping ${e} — ${n}
279
+ `):()=>{}}function jh(t,e,n,r,i,s=!1,o=[]){let a=new Map;return t.flatMap((c)=>{try{let u=ST(c,a);if(u)throw Error(u);a.set(c.slug,c);let f={...c.catalog===void 0?{}:{catalog:c.catalog},catalogs:o};return[dn(Hn(`${n}/${c.slug}`,e(c),r,s,f))]}catch(u){return i(c.path,u.message),[]}})}function Fn(t,e,n,r=me(!0)){let i=vT(t);return jh(go(t,i),(s)=>yT(s.path,"utf8"),e,n,r,!1,i)}function ju(t,e,n=!0){return Ji(t,n).flatMap(({dir:r,id:i})=>Fn(r,i,e,me(n)))}function _h(t,e=t.name,n){return{name:e,...t.base?{base:t.base}:{},...t.catalog?{catalog:t.catalog}:{},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 Ht=(t)=>JSON.stringify(t);function pk(t){return["[[picture]]",`site = ${Ht(t.site)}`,`id = ${t.id}`,...t.size===void 0?[]:[`size = ${typeof t.size==="number"?t.size:Ht(t.size)}`],...t.position===void 0?[]:[`position = ${Ht(t.position)}`],...t.opacity===void 0?[]:[`opacity = ${t.opacity}`]]}function gk(t,e){return e.length===0?t:`${t.replace(/\n*$/,`
280
280
  `)}${e.map((n)=>`
281
- ${bk(n).join(`
281
+ ${pk(n).join(`
282
282
  `)}
283
- `).join("")}`}function Wh(t){return`${[`"$schema" = ${Lt(ak)}`,"","[meta]",`name = ${Lt($e(t.name))}`,...t.base?[`base = ${Lt(t.base)}`]:[],...t.ansiSource?[`ansi_source = ${Lt(t.ansiSource)}`]:[],...t.booru?[`booru = ${Lt(t.booru)}`]:[],`signature = [${t.signature.map(Lt).join(", ")}]`,...t.booruSites?["","[meta.booru_sites]",...Object.entries(t.booruSites).map(([n,r])=>`${n} = [${r.map(Lt).join(", ")}]`)]:[],"","[colors]",`background = ${Lt(t.background)}`,`foreground = ${Lt(t.foreground)}`,`cursor = ${Lt(t.cursor)}`,`selection_background = ${Lt(t.selection)}`,"ansi = [",...t.ansi.slice(0,8).map((n)=>` ${Lt(n)},`),"",...t.ansi.slice(8).map((n)=>` ${Lt(n)},`),"]",...t.waive&&t.waive.length>0?["","[contrast]",`waive = [${t.waive.map(Lt).join(", ")}]`,`reason = ${Lt(t.reason??"")}`]:[],...(t.pictures??[]).flatMap((n)=>["",...bk(n)])].join(`
283
+ `).join("")}`}function Bh(t){return`${[`"$schema" = ${Ht(sk)}`,"","[meta]",`name = ${Ht($e(t.name))}`,...t.base?[`base = ${Ht(t.base)}`]:[],...t.ansiSource?[`ansi_source = ${Ht(t.ansiSource)}`]:[],...t.booru?[`booru = ${Ht(t.booru)}`]:[],`signature = [${t.signature.map(Ht).join(", ")}]`,...t.booruSites?["","[meta.booru_sites]",...Object.entries(t.booruSites).map(([n,r])=>`${n} = [${r.map(Ht).join(", ")}]`)]:[],"","[colors]",`background = ${Ht(t.background)}`,`foreground = ${Ht(t.foreground)}`,`cursor = ${Ht(t.cursor)}`,`selection_background = ${Ht(t.selection)}`,"ansi = [",...t.ansi.slice(0,8).map((n)=>` ${Ht(n)},`),"",...t.ansi.slice(8).map((n)=>` ${Ht(n)},`),"]",...t.waive&&t.waive.length>0?["","[contrast]",`waive = [${t.waive.map(Ht).join(", ")}]`,`reason = ${Ht(t.reason??"")}`]:[],...(t.pictures??[]).flatMap((n)=>["",...pk(n)])].join(`
284
284
  `)}
285
- `}class $k{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,yk(t)]).toString("base64url")}}class kk{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 yk(t){return kT("sha256").update(t).digest().subarray(0,Cu)}function Ch(t){return/^tt\d+:/.test(t)}function vk(t){return`${jh}${t}`}function ko(t){let e=t.trim();if(!/^https?:\/\//i.test(e))return Ch(e)?e:void 0;let r=(URL.canParse(e)?/^\/p\/([^/]+)\/?$/.exec(new URL(e).pathname)?.[1]:void 0)?.replace(/%3a/gi,":");return r&&Ch(r)?r:void 0}function Sk(t,e){let n=zh(t),r=hn(Cn(n.name,Wh(n),e,!0));return n.catalog?{...r,catalog:n.catalog}:r}function Kh(t){let e=new $k;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(gk.indexOf(r));e.str(t.base),e.str(t.catalog),e.str(t.ansiSource),e.str(t.booru),e.u16((t.waive??[]).reduce((r,i)=>r|1<<kd.indexOf(i),0)),e.str(t.waive&&t.waive.length>0?t.reason:"");let n=t.pictures??[];if(n.length>255)throw Error(`a share code carries at most 255 pictures, and ${t.name} holds ${n.length}`);e.u8(n.length);for(let r of n)e.u8(Z.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:Jt.indexOf(r.position)+1),e.u16(r.opacity===void 0?0:Math.round(r.opacity*1000)+1);return`${Ba}${e.done()}`}function zh(t){if(!t.startsWith(Ba))throw Error(Ch(t)?`this ttheme reads ${Ba} share codes, not ${t.slice(0,t.indexOf(":")+1)}`:`a share code starts with ${Ba}`);let e=t.slice(Ba.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<=Cu)throw Error("the share code is cut short");let r=n.subarray(0,-Cu);if(!yk(r).equals(n.subarray(-Cu)))throw Error("the share code does not add up — was it copied whole?");let i=new kk(new Uint8Array(r)),s=i.str(),[o,a,c,u,...f]=Array.from({length:20},()=>i.color()),l=[i.u8(),i.u8(),i.u8()].map((v)=>gk[v]??`slot${v}`),d=i.str(),h=i.str(),m=i.str(),p=i.str(),b=i.u16(),$=i.str(),k=kd.filter((v,x)=>b&1<<x),S=Array.from({length:i.u8()},()=>{let v=Z[i.u8()]?.key??"unknown",x=i.u32(),M=i.u16(),N=i.u8(),C=i.u16();return{site:v,id:x,...M===1?{size:"fill"}:M>1?{size:M}:{},...N>0?{position:Jt[N-1]??"unknown"}:{},...C>0?{opacity:(C-1)/1000}:{}}});if(i.end(),![o,a,c,u,...f].every(we))throw Error("the share code holds a color that is not one");return{name:s,...d?{base:d}:{},...h?{catalog:h}:{},...m?{ansiSource:m}:{},...p?{booru:p}:{},signature:l,background:o,foreground:a,cursor:c,selection:u,ansi:f,...k.length>0?{waive:k,reason:$}:{},...S.length>0?{pictures:S}:{}}}function yo(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi}}function Dh(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,s=t.slice(n,r).replace(/"#[0-9a-fA-F]{6}"/g,()=>Lt(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"),(f,l)=>`${l}${Lt(u)}`),t.slice(0,n)+s+t.slice(r))}function Ek(t,e){return t.replace(/^(signature\s*=\s*)\[[^\]]*\]/m,(n,r)=>`${r}[${e.map(Lt).join(", ")}]`)}function Ga(t){let e=Pn(Fe(t)),n=new Set(t.waived??[]),r=Math.max(...Te.map((i)=>i.label.length));return Te.map((i,s)=>{let o=e[s],a=n.has(i.rule)||Number.isNaN(o)||(i.min===void 0||o>=i.min)&&(i.max===void 0||o<=i.max),c=i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",u=Number.isNaN(o)?"—":Number.isInteger(o)?String(o):o.toFixed(2);return` ${a?"✓":"✗"} ${i.label.padEnd(r)} ${u.padStart(6)} ${c}${n.has(i.rule)?" waived":""}`})}import{existsSync as xT,readFileSync as OT,rmSync as PT}from"node:fs";import{join as IT}from"node:path";var Wa=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],RT=1;function Mk(t){return IT(t,"ttheme","tone.json")}function xk(t){return Wa.includes(t)}function Kt(t){let e=Mk(t);if(!xT(e))return{};let n;try{n=JSON.parse(OT(e,"utf8"))}catch{return{}}let r=n?.palettes;if(typeof r!=="object"||r===null)return{};let i={};for(let[s,o]of Object.entries(r)){if(typeof o!=="object"||o===null)continue;let a={};for(let[c,u]of Object.entries(o))if(xk(c)&&typeof u==="string"&&we(u.toLowerCase()))a[c]=u.toLowerCase();if(Object.keys(a).length>0)i[s]=a}return i}function Ka(t,e){let n=Mk(t),r=Object.fromEntries(Object.entries(e).filter(([,i])=>Object.keys(i).length>0));if(Object.keys(r).length===0){PT(n,{force:!0});return}H(n,`${JSON.stringify({version:RT,palettes:r},null,2)}
286
- `)}function Ua(t,e){if(e==="background"||e==="foreground"||e==="cursor"||e==="selection")return t[e];return t.ansi[Number(e.slice(4))]}function Ok(t){return Wa.map((e)=>Ua(t,e))}function qh(t,e){return Object.fromEntries(Wa.flatMap((n,r)=>{let i=e[r].toLowerCase();return i===Ua(t,n).toLowerCase()?[]:[[n,i]]}))}function za(t,e){if(!e)return t;let n=(u)=>e[u]===void 0||e[u]===Ua(t,u).toLowerCase();if(Wa.every(n))return t;let r=(u)=>e[u]??Ua(t,u),i={background:r("background"),foreground:r("foreground"),cursor:r("cursor"),selection:r("selection"),ansi:Wa.slice(4).map(r)},s=t.signatureSlots.map((u)=>xk(u)?r(u):Ua(i,u)),o={...t,...i,signature:s},a=Fe(o),c=Fn({name:o.name,background:i.background,foreground:i.foreground,cursor:i.cursor,selection:i.selection,ansi:i.ansi,waived:a.waive},o.signatureSlots);return{...o,gate:Pn(a),backdrop:c}}function Gu(t,e){return Object.keys(e).length===0?t:t.map((n)=>za(n,e[n.name]))}function Uu(t,e,n){let r={...t};if(Object.keys(n).length===0)delete r[e];else r[e]=n;return r}function Pk(t,e,n){let r=Kt(t);if(!Object.keys(r).some((s)=>e.has(s)||n.includes(s)))return;Ka(t,Object.fromEntries(Object.entries(r).filter(([s])=>!n.includes(s)).map(([s,o])=>[e.get(s)??s,o])))}var AT=20000;function gn(t){return Ak(t,"ttheme","official.json")}function Nk(t,e){H(gn(t),`${JSON.stringify(e,null,2)}
287
- `)}function lt(t,e=!0,n){let r=bo(t),i=gn(t),s=Nu();if(r.includes(Y))if(n)s=n;else{if(!Rk(i))throw Error(`no official marketplace at ${i} — run \`ttheme init\` first`);s=Zr(Jh(i,"utf8"))}let o=r.filter(yt).flatMap((a)=>TT(t,a,s.palettes,e));return{...s,palettes:[...s.palettes,...o]}}function NT(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 marketplace this ttheme fetched — `ttheme update` fetches it again");return{...typeof e?.etag==="string"?{etag:e.etag}:{},files:n}}function dr(t,e){return NT(Jh(fr(t,e),"utf8"))}function Tk(t,e){return ye({owner:dk(t),name:e.name})}function Hk(t,e){let n=e.files[ot];if(n===void 0)throw Error(`${st(t)} has no ${ot} — \`ttheme marketplace init\` makes one`);return Lh(n,ot)}function Wu(t,e){return Tk(t,Hk(t,e))}function Zi(t,e,n,r){let i=Hk(t,e),s=Tk(t,i),o=st(t),a=new Map(Object.entries(e.files).map(([u,f])=>[`${o}/${u}`,f])),c=_h(Object.keys(e.files),(u)=>`${o}/${u}`);return{id:s,info:i,entries:Gh(c,(u)=>a.get(u.path)??"",s,n,r,!0)}}function TT(t,e,n,r){let i=fr(t,e);if(!Rk(i))return[];try{return Zi(e,dr(t,e),n,me(!1)).entries}catch(s){if(r)process.stderr.write(`ttheme: skipping ${i} — ${s.message}
288
- `);return[]}}function Zr(t){let e;try{e=JSON.parse(t)}catch{throw Error("the manifest is not valid JSON")}let n=e;if(typeof n?.version!=="string"||!Array.isArray(n.palettes))throw Error("the manifest has no version or palettes");for(let r of n.palettes){let i=Lk(r);if(i)throw Error(`manifest entry ${JSON.stringify(r?.name)} ${i}`)}return n}function Lk(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=ne(t.name)??(t.base===void 0?void 0:ne(t.base));if(e)return e;if(![t.background,t.foreground,t.cursor,t.selection,...t.ansi].every((n)=>typeof n==="string"&&we(n)))return'holds a color that is not "#rrggbb"';return[t.native??"-",t.catalog??"-",t.ansiSource].values().map((n)=>typeof n==="string"?Ha(n):"has a field that is not text").find(Boolean)}function Fk(t){return Ak(t,"ttheme","kept.json")}function vo(t,e){H(Fk(t),`${JSON.stringify({palettes:e},null,2)}
289
- `)}function Xr(t){try{let{palettes:e}=JSON.parse(Jh(Fk(t),"utf8"));return Array.isArray(e)?e.filter((n)=>Lk(n)===void 0):[]}catch{return[]}}function Ik(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi,t.pictures??[]])}function So(t,e){let n=new Map(Xr(t).map((r)=>[r.name,r]));return e.palettes.filter((r)=>{let i=n.get(r.name);return et(r.name)!==void 0&&i!==void 0&&Ik(i)!==Ik(r)})}function hr(t,e,n=!0){let r=Xr(t),i=new Map(r.filter((a)=>et(a.name)!==void 0).map((a)=>[a.name,a])),s=[...e.palettes.map((a)=>i.get(a.name)??a),...Bu(t,e.palettes,n)],o=new Set(s.map((a)=>a.name));return{...e,palettes:[...s,...r.filter((a)=>!o.has(a.name))]}}function zt(t,e,n=!0){let r=hr(t,e,n);return{...r,palettes:Gu(r.palettes,Kt(t))}}function ve(t){return zt(t,lt(t))}class Ku extends Error{}class Ck extends Error{}async function Da(t,e=AT,n,r={}){let i;try{let s=AbortSignal.timeout(e);i=await fetch(t,{headers:r,signal:n?AbortSignal.any([s,n]):s})}catch(s){throw Error(`cannot reach ${t} — ${s instanceof Error?s.message:String(s)}`)}if(i.status===404)throw new Ku(`nothing at ${t}`);if(i.status===403||i.status===429)throw new Ck(`${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}function qa(t){let e=new Set(t.waived??[]),n=t.gate??Pn(Fe(t));return Te.flatMap((r,i)=>{let s=n[i];if(e.has(r.rule)||typeof s!=="number"||Number.isNaN(s))return[];if(r.min!==void 0&&s<r.min)return[`${r.label} ${s} < ${r.min}`];if(r.max!==void 0&&s>r.max)return[`${r.label} ${s} > ${r.max}`];return[]})}function _n(t,e){let n=t.find((r)=>r.name===e);if(!n)throw Error(`no palette named ${e} in your marketplaces — ${Yh(t,[e])}`);return n}function Yh(t,e){let n=e.map((o)=>o.toLowerCase()),r=t.filter((o)=>n.some((a)=>o.name.includes(a))),i=t.filter((o)=>!r.includes(o)&&n.some((a)=>re(o).toLowerCase().includes(a))),s=[...r,...i].map((o)=>o.name).slice(0,3);return s.length>0?`did you mean: ${s.join(", ")}?`:"`ttheme list` shows what is there"}function jk(t,e){return t.filter((n)=>Ki([n.name,re(n),n.native??"",n.ansiSource,...n.nativeNames??[],...Lu(n.booru)],e))}function _k(t,e,n){let r=n.toLowerCase(),i=(s)=>s.name===e.name?0:re(s)===re(e)?1:2;return t.filter((s)=>s.booru?.toLowerCase().includes(r)).sort((s,o)=>i(s)-i(o))}function Bk(t,e){return t.booruSites?.[e]??(t.booru?[t.booru]:[])}var Gk=(()=>{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}})(),Uk=(t)=>{return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510},Wk=(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 HT=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,LT=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Kk=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,FT=/\t{1,1000}/y,zk=/[\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,CT=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,jT=/\p{M}+/gu,_T={limit:1/0,ellipsis:""},Dk=(t,e={},n={})=>{let r=e.limit??1/0,i=e.ellipsis??"",s=e?.ellipsisWidth??(i?Dk(i,_T,n).width:0),o=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,f=2,l=n.regularWidth??1,d=n.wideWidth??2,h=[[CT,l],[HT,0],[LT,a],[FT,c],[zk,u],[Kk,d]],m=0,p=0,b=t.length,$=0,k=!1,S=b,v=Math.max(0,r-s),x=0,M=0,N=0,C=0;t:while(!0){if(M>x||p>=b&&p>m){let I=t.slice(x,M)||t.slice(m,p);$=0;for(let j of I.replaceAll(jT,"")){let U=j.codePointAt(0)||0;if(Uk(U))C=2;else if(Wk(U))C=d;else C=l;if(N+C>v)S=Math.min(S,Math.max(x,m)+$);if(N+C>r){k=!0;break t}$+=j.length,N+=C}x=M=0}if(p>=b)break t;for(let I=0,j=h.length;I<j;I++){let[U,G]=h[I];if(U.lastIndex=p,U.test(t)){if($=U===Kk?Gk(t.slice(p,U.lastIndex)):U===zk?1:U.lastIndex-p,C=$*G,N+C>v)S=Math.min(S,p+Math.floor((v-N)/G));if(N+C>r){k=!0;break t}N+=C,x=m,M=p,p=m=U.lastIndex;continue t}}p+=1}return{width:k?v:N,index:k?S:b,truncated:k,ellipsed:k&&r>=s}},qk=Dk;var BT={limit:1/0,ellipsis:"",ellipsisWidth:0},GT=(t,e={})=>{return qk(t,BT,e).width},B=GT;var Jk={dim:["2","22"],bold:["1","22"],under:["4","24"],reverse:["7","27"],accent:["36","39"],pill:["7;1;36","22;27;39"],chip:["100;1","22;49"],danger:["7;1;31","22;27;39"],match:["1;4;36","22;24;39"],ok:["32","39"],warn:["33","39"],error:["31","39"]},UT={stage:0.08,bar:0.14,selection:0.2,tab:0.3,line:0.45},R={gutter:"▌",current:"◆",signature:"✦",closed:"▸",opened:"▾",on:"●",off:"○",ok:"✓",miss:"✗",above:"↑",below:"↓",update:"⇡",auto:"↻",remove:"×",undo:"↶",star:"★",link:"⧉",search:"⌕",linked:"⇠",contrast:"◐",swatch:"■",pictures:"▣",sep:"·",cut:"…"},bn=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function Ce(t){return`\x1B[${t}m`}function wt(t){return Ce(Jk[t][0])}function Vh(t){return Ce(Jk[t][1])}var Se=Ce("0"),$t=Ce("39"),Yk=Ce("49"),pe=Ce("39;49");function Xi(t){return Ce(String(t<8?30+t:82+t))}function Vk(t){return Ce(String(t<8?40+t:92+t))}function Zk(t,e){return Ce(`38;5;${t};48;5;${e}`)}function zu(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 mr(t){return Ce(`38;2;${zu(t)}`)}function Zh(t){return Ce(`48;2;${zu(t)}`)}function Xk(t,e){return Ce(`48;2;${zu(t)};38;2;${zu(e)}`)}function Du(t,e=$t){return`${t.map((n)=>`${mr(n)}${R.swatch}`).join(" ")}${e}`}function Qi(t,e,n){return Nt(t,e,UT[n])}function Xh(t){let e=!1,n=!1,r=!1,i=!1,s=!1,o=!1;for(let c of t.split("\x1B[").slice(1)){let u=/^([0-9;]*)m/.exec(c)?.[1];if(u===void 0)continue;let f=(u||"0").split(";").map(Number);for(let l=0;l<f.length;l++){let d=f[l];if(d===0)e=n=r=i=s=o=!1;else if(d===1||d===2)e=!0;else if(d===22)e=!1;else if(d===3||d===23)n=d===3;else if(d===4||d===24)r=d===4;else if(d===7||d===27)i=d===7;else if(d===38||d===48)s||=d===38,o||=d===48,l+=f[l+1]===5?2:4;else if(d===39)s=!1;else if(d===49)o=!1;else if(d>=30&&d<=37||d>=90&&d<=97)s=!0;else if(d>=40&&d<=47||d>=100&&d<=107)o=!0}}let a=[e&&"22",n&&"23",r&&"24",i&&"27",s&&"39",o&&"49"].filter(Boolean);return a.length>0?Ce(a.join(";")):""}function je(t){let e=(n)=>(r)=>t?`${wt(n)}${r}${Vh(n)}`:r;return{color:t,dim:e("dim"),bold:e("bold"),accent:e("accent"),pill:e("pill"),chip:e("chip"),danger:e("danger"),ok:e("ok"),warn:e("warn"),error:e("error"),fg:(n)=>t?mr(n):"",bg:(n)=>t?Zh(n):""}}function qu(t,e){return e&&!/\p{Cc}/u.test(e)?`\x1B]8;;${e}\x1B\\${t}\x1B]8;;\x1B\\`:t}function Qh(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),s=r!==-1&&(i===-1||r<i)?r+1:i!==-1?i+2:0;return s?s-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 Qk;function tm(t){return Qk??=new Intl.Segmenter(void 0,{granularity:"grapheme"}),Qk.segment(t)}function Eo(t){let e=[],n=0;while(n<t.length){let r=Qh(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),s=i===-1?t.length:i;for(let{segment:o,index:a}of tm(t.slice(n,s)))e.push({text:o,start:n+a,end:n+a+o.length,width:B(o),sequence:!1});n=s}return e}function WT(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?e:void 0}function em(t,e){let n="",r=0,i=0;for(let s of Eo(t)){if(!s.sequence){if(r+s.width>e)break;r+=s.width}else{let o=WT(s.text);if(o!==void 0)i=o==="0"?Math.max(0,i-1):i+1}n+=s.text}return{head:n,used:r,ends:"\x1B[?0y".repeat(i)}}function tt(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:s,ends:o}=em(t,e-1);return`${i}${Xh(i)}…${o}${n?" ".repeat(e-1-s):""}`}function ty(t,e){let{head:n,used:r,ends:i}=em(t,e);return`${n}${Xh(n)}${i}${" ".repeat(e-r)}`}function Rt(t,e,n){let r=n-B(e)-1;return r<=0?tt(t,n):`${tt(t,r)} ${e}`}function Ft(t,e){let n=[],r="";for(let i of t.split(/\s+/).filter(Boolean)){let s=r?`${r} ${i}`:i;if(B(s)<=e){r=s;continue}if(r)n.push(r);while(B(i)>e){let{head:o}=em(i,e),a=Math.max(o.lastIndexOf("/")+1,o.lastIndexOf("#")),c=a>0?a:o.length||Eo(i)[0].end;n.push(i.slice(0,c)),i=i.slice(c)}r=i}if(r)n.push(r);return n}var KT=9999,Mo;function Ve(t,e){if(!Mo||e===""||Mo.length>=KT)return e;return`\x1B[?${Mo.push(t)}y${e}\x1B[?0y`}function ny(t){let e=Mo,n=[];Mo=n;try{return{drawn:t(),targets:n}}finally{Mo=e}}function ry(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?Number(e):void 0}function zT(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 DT(t,e,n){if(!t.includes("\x1B[?"))return{text:t,zones:[]};let r=[],i=[],s="",o=0,a="",c=()=>{let f=i.pop();if(f&&o>f.col)r.push({row:e,col:f.col,width:o-f.col,height:1,target:f.target})},u=0;while(u<t.length){let f=t.indexOf("\x1B",u);if(f!==u){let m=f===-1?t.length:f;a+=t.slice(u,m),s+=t.slice(u,m),u=m;continue}let l=t.slice(u,u+(Qh(t,u)||1));u+=l.length;let d=ry(l),h=d===void 0?zT(l):void 0;if(d===void 0&&h===void 0){s+=l;continue}if(o+=B(a),a="",h!==void 0)o=h,s+=l;else if(d===0)c();else if(d!==void 0)i.push({target:n[d-1],col:o})}o+=B(a);while(i.length>0)c();return{text:s,zones:r}}function iy(t,e,n){let r=[],i=[],s="",o=(b)=>{let $=ry(b);if($===0)r.pop();else if($!==void 0)r.push(b);else if(b.startsWith("\x1B]8;"))s=b.slice(b.indexOf(";",4)+1).replace("\x07","").replace("\x1B\\","")===""?"":b;else if(b.startsWith("\x1B[")&&b.endsWith("m"))i.push(b)},a=t.includes("\x1B")||n.includes("\x1B")?Se:"",c=Eo(t),u="",f=0,l=0;while(l<c.length&&f<e){let b=c[l];if(b.sequence)o(b.text);else if(f+b.width>e)break;else f+=b.width;u+=b.text,l++}u+=" ".repeat(e-Math.min(e,f));let d=`${"\x1B[?0y".repeat(r.length)}${s?"\x1B]8;;\x1B\\":""}${a}`,h=e+B(n);while(l<c.length&&f<h){let b=c[l];if(b.sequence)o(b.text);else f+=b.width;l++}let m=l<c.length?t.slice(c[l].start):"";if(m===""&&f<=h)return`${u}${d}${n}${a}`;let p=`${i.join("")}${s}${r.join("")}${" ".repeat(Math.max(0,f-h))}`;return`${u}${d}${n}${a}${p}${m}`}function sy(t,e){let n=t.map((r,i)=>DT(r,i,e));return{lines:n.map((r)=>r.text),zones:n.flatMap((r)=>r.zones)}}function ey(t,e,n,r=0.5,i=0.5){let s=n-t.col,o=e-t.row;return{target:t.target,x:s,y:o,exact:{x:s+r,y:o+i},width:t.width,height:t.height,inside:s>=0&&s<t.width&&o>=0&&o<t.height}}function qT(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 JT={space:" ",enter:"enter",esc:"esc",tab:"tab",bksp:"backspace",del:"delete","←":"left","→":"right"};function nm(t){let e=/^(ctrl|alt)\+([a-z])$/.exec(t);if(e)return`${e[1]}-${e[2]}`;return JT[t]??([...t].length===1&&t!==" "?t:void 0)}function ge(t,e){let n=nm(t);return n?Ve({kind:"key",key:n},e):e}class rm{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&&ey(n,t.row,t.col,t.fx,t.fy)}let e=qT(this.zones,t.row,t.col);if(t.action==="press")this.held=t.button==="left"?e:void 0;return e&&ey(e,t.row,t.col,t.fx,t.fy)}drop(){this.held=void 0}}function Ju(t,e,n,r=(i)=>i){if(!t.color)return r(n?`[${e}]`:` ${e} `);return n?t.pill(r(` ${e} `)):t.dim(r(` ${e} `))}function oy(t,e,n,r=!1){if(!t.color)return n==="focus"?`[${e}]`:` ${e} `;if(n==="off")return t.dim(` ${e} `);if(n==="focus")return r?t.danger(` ${e} `):t.pill(` ${e} `);return t.chip(` ${e} `)}function Ze(t,e){return t.color?t.pill(` ${e} `):`[${e}]`}function ay(t,e,n){return ge(e.split(" ")[0]??"",`${t.bold(e)} ${t.dim(n)}`)}function Yu(t,e){return e===void 0?t.dim(R.sep):e?t.dim(R.ok):t.bold(R.miss)}var YT={top:"╭╮",mid:"├┤",bottom:"╰╯"};function Bt(t,e,n=[]){let[r,i]=[...YT[e]],s=[...`${r}${"─".repeat(Math.max(0,t-2))}${i}`];for(let[o,a]of n)[...a].forEach((c,u)=>{if(o+u>0&&o+u<t-1)s[o+u]=c});return s.join("")}function Xe(t,e,n){return`${t.dim("│")}${tt(e,n-2)}${t.dim("│")}`}var pr=[{name:"preview",title:"Preview"},{name:"browse",title:"Browse"}],Vu=10,Zu=20;function cy(t){return pr.find((e)=>e.name===t.TTHEME_HUB)?.name}function Xu(t,e){let n=pr.findIndex((r)=>r.name===t);return Zu+(n+e+pr.length)%pr.length+1}function uy(t){return Zu+pr.findIndex((e)=>e.name===t)+1}function im(t,e){let n=je(e);return` ${pr.map(({name:i,title:s})=>{let o={kind:"hub",tab:i};return Ju(n,s,i===t,(a)=>Ve(o,a))}).join(" ")} ${n.dim("tab next")}`}import{execFileSync as oC}from"node:child_process";import{existsSync as Wl,mkdirSync as aC,readdirSync as cC,readFileSync as Kl,rmSync as uC}from"node:fs";import{basename as eS,join as mc,relative as Xv}from"node:path";import{styleText as rl}from"node:util";import{stdout as ky,stdin as rH}from"node:process";import iH from"node:readline";var Qu="\x1B",my="›",VT=39,om="\x07",py="[",ZT="]",gy="m",am=`${ZT}8;;`,ly=new RegExp(`(?:\\${py}(?<code>\\d+)m|\\${am}(?<uri>.*)${om})`,"y"),fy=(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},dy=(t)=>`${Qu}${py}${t}${gy}`,hy=(t)=>`${Qu}${am}${t}${om}`,sm=(t,e,n)=>{let r=e[Symbol.iterator](),i=!1,s=!1,o=t.at(-1),a=o===void 0?0:B(o),c=r.next(),u=r.next(),f=0;while(!c.done){let l=c.value,d=B(l);if(a+d<=n)t[t.length-1]+=l;else t.push(l),a=0;if(l===Qu||l===my)i=!0,s=e.startsWith(am,f+1);if(i){if(s){if(l===om)i=!1,s=!1}else if(l===gy)i=!1}else if(a+=d,a===n&&!u.done)t.push(""),a=0;c=u,u=r.next(),f+=l.length}if(o=t.at(-1),!a&&o!==void 0&&o.length&&t.length>1)t[t.length-2]+=t.pop()},XT=(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("")},QT=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",i,s,o=t.split(" "),a=[""],c=0;for(let l=0;l<o.length;l++){let d=o[l];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(l!==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(d);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("");sm(a,d,e),c=B(a.at(-1)??"");continue}if(c+h>e&&c&&h){if(n.wordWrap===!1&&c<e){sm(a,d,e),c=B(a.at(-1)??"");continue}a.push(""),c=0}if(c+h>e&&n.wordWrap===!1){sm(a,d,e),c=B(a.at(-1)??"");continue}a[a.length-1]+=d,c+=h}if(n.trim!==!1)a=a.map((l)=>XT(l));let u=a.join(`
290
- `),f=!1;for(let l=0;l<u.length;l++){let d=u[l];if(r+=d,!f){if(f=d>="\uD800"&&d<="\uDBFF",f)continue}else f=!1;if(d===Qu||d===my){ly.lastIndex=l+1;let m=ly.exec(u)?.groups;if(m?.code!==void 0){let p=Number.parseFloat(m.code);i=p===VT?void 0:p}else if(m?.uri!==void 0)s=m.uri.length===0?void 0:m.uri}if(u[l+1]===`
291
- `){if(s)r+=hy("");let h=i?fy(i):void 0;if(i&&h)r+=dy(h)}else if(d===`
292
- `){if(i&&fy(i))r+=dy(i);if(s)r+=hy(s)}}return r},tH=/\r?\n/;function Qr(t,e,n){return String(t).normalize().split(tH).map((r)=>QT(r,e,n)).join(`
293
- `)}var _e=gd(um(),1);function gr(t,e,n){if(!n.some((o)=>!o.disabled))return t;let r=t+e,i=Math.max(n.length-1,0),s=r<0?i:r>i?0:r;return n[s]?.disabled?gr(s,e<0?-1:1,n):s}function tl(t,e,n,r){let i=r.split(`
294
- `),s=0,o=t;for(let c of i){if(o<=c.length)break;o-=c.length+1,s++}for(s=Math.max(0,Math.min(i.length-1,s+n)),o=Math.min(o,i[s].length)+e;o<0&&s>0;)s--,o+=i[s].length+1;for(;o>i[s].length&&s<i.length-1;)o-=i[s].length+1,s++;o=Math.max(0,Math.min(i[s].length,o));let a=0;for(let c=0;c<s;c++)a+=i[c].length+1;return a+o}var sH=["up","down","left","right","space","enter","cancel"],oH=["January","February","March","April","May","June","July","August","September","October","November","December"],Gt={actions:new Set(sH),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,accessible:void 0,date:{monthNames:[...oH],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 aH(t){if(t!==void 0)return t;if(Gt.accessible!==void 0)return Gt.accessible;let e=process.env.ACCESSIBLE;return e!==void 0&&e!==""&&e!=="0"&&e!=="false"}function yy(t,e){if(typeof t=="string")return Gt.aliases.get(t)===e;for(let n of t)if(n!==void 0&&yy(n,e))return!0;return!1}function cH(t,e){if(t===e)return;let n=t.split(`
285
+ `}class bk{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,$k(t)]).toString("base64url")}}class wk{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 $k(t){return $T("sha256").update(t).digest().subarray(0,Fu)}function Hh(t){return/^tt\d+:/.test(t)}function kk(t){return`${Fh}${t}`}function bo(t){let e=t.trim();if(!/^https?:\/\//i.test(e))return Hh(e)?e:void 0;let r=(URL.canParse(e)?/^\/p\/([^/]+)\/?$/.exec(new URL(e).pathname)?.[1]:void 0)?.replace(/%3a/gi,":");return r&&Hh(r)?r:void 0}function yk(t,e){let n=Uh(t),r=dn(Hn(n.name,Bh(n),e,!0));return n.catalog?{...r,catalog:n.catalog}:r}function Gh(t){let e=new bk;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(mk.indexOf(r));e.str(t.base),e.str(t.catalog),e.str(t.ansiSource),e.str(t.booru),e.u16((t.waive??[]).reduce((r,i)=>r|1<<bd.indexOf(i),0)),e.str(t.waive&&t.waive.length>0?t.reason:"");let n=t.pictures??[];if(n.length>255)throw Error(`a share code carries at most 255 pictures, and ${t.name} holds ${n.length}`);e.u8(n.length);for(let r of n)e.u8(Z.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:Jt.indexOf(r.position)+1),e.u16(r.opacity===void 0?0:Math.round(r.opacity*1000)+1);return`${Ca}${e.done()}`}function Uh(t){if(!t.startsWith(Ca))throw Error(Hh(t)?`this ttheme reads ${Ca} share codes, not ${t.slice(0,t.indexOf(":")+1)}`:`a share code starts with ${Ca}`);let e=t.slice(Ca.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<=Fu)throw Error("the share code is cut short");let r=n.subarray(0,-Fu);if(!$k(r).equals(n.subarray(-Fu)))throw Error("the share code does not add up — was it copied whole?");let i=new wk(new Uint8Array(r)),s=i.str(),[o,a,c,u,...f]=Array.from({length:20},()=>i.color()),l=[i.u8(),i.u8(),i.u8()].map((S)=>mk[S]??`slot${S}`),d=i.str(),h=i.str(),m=i.str(),p=i.str(),b=i.u16(),$=i.str(),k=bd.filter((S,M)=>b&1<<M),v=Array.from({length:i.u8()},()=>{let S=Z[i.u8()]?.key??"unknown",M=i.u32(),x=i.u16(),N=i.u8(),R=i.u16();return{site:S,id:M,...x===1?{size:"fill"}:x>1?{size:x}:{},...N>0?{position:Jt[N-1]??"unknown"}:{},...R>0?{opacity:(R-1)/1000}:{}}});if(i.end(),![o,a,c,u,...f].every(we))throw Error("the share code holds a color that is not one");return{name:s,...d?{base:d}:{},...h?{catalog:h}:{},...m?{ansiSource:m}:{},...p?{booru:p}:{},signature:l,background:o,foreground:a,cursor:c,selection:u,ansi:f,...k.length>0?{waive:k,reason:$}:{},...v.length>0?{pictures:v}:{}}}function wo(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi}}function Wh(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,s=t.slice(n,r).replace(/"#[0-9a-fA-F]{6}"/g,()=>Ht(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"),(f,l)=>`${l}${Ht(u)}`),t.slice(0,n)+s+t.slice(r))}function vk(t,e){return t.replace(/^(signature\s*=\s*)\[[^\]]*\]/m,(n,r)=>`${r}[${e.map(Ht).join(", ")}]`)}function ja(t){let e=Mn(Fe(t)),n=new Set(t.waived??[]),r=Math.max(...Ne.map((i)=>i.label.length));return Ne.map((i,s)=>{let o=e[s],a=n.has(i.rule)||Number.isNaN(o)||(i.min===void 0||o>=i.min)&&(i.max===void 0||o<=i.max),c=i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",u=Number.isNaN(o)?"—":Number.isInteger(o)?String(o):o.toFixed(2);return` ${a?"✓":"✗"} ${i.label.padEnd(r)} ${u.padStart(6)} ${c}${n.has(i.rule)?" waived":""}`})}import{existsSync as MT,readFileSync as xT,rmSync as OT}from"node:fs";import{join as PT}from"node:path";var Ba=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],IT=1;function Sk(t){return PT(t,"ttheme","tone.json")}function Ek(t){return Ba.includes(t)}function Kt(t){let e=Sk(t);if(!MT(e))return{};let n;try{n=JSON.parse(xT(e,"utf8"))}catch{return{}}let r=n?.palettes;if(typeof r!=="object"||r===null)return{};let i={};for(let[s,o]of Object.entries(r)){if(typeof o!=="object"||o===null)continue;let a={};for(let[c,u]of Object.entries(o))if(Ek(c)&&typeof u==="string"&&we(u.toLowerCase()))a[c]=u.toLowerCase();if(Object.keys(a).length>0)i[s]=a}return i}function Ga(t,e){let n=Sk(t),r=Object.fromEntries(Object.entries(e).filter(([,i])=>Object.keys(i).length>0));if(Object.keys(r).length===0){OT(n,{force:!0});return}C(n,`${JSON.stringify({version:IT,palettes:r},null,2)}
286
+ `)}function _a(t,e){if(e==="background"||e==="foreground"||e==="cursor"||e==="selection")return t[e];return t.ansi[Number(e.slice(4))]}function Mk(t){return Ba.map((e)=>_a(t,e))}function Kh(t,e){return Object.fromEntries(Ba.flatMap((n,r)=>{let i=e[r].toLowerCase();return i===_a(t,n).toLowerCase()?[]:[[n,i]]}))}function Ua(t,e){if(!e)return t;let n=(u)=>e[u]===void 0||e[u]===_a(t,u).toLowerCase();if(Ba.every(n))return t;let r=(u)=>e[u]??_a(t,u),i={background:r("background"),foreground:r("foreground"),cursor:r("cursor"),selection:r("selection"),ansi:Ba.slice(4).map(r)},s=t.signatureSlots.map((u)=>Ek(u)?r(u):_a(i,u)),o={...t,...i,signature:s},a=Fe(o),c=Tn({name:o.name,background:i.background,foreground:i.foreground,cursor:i.cursor,selection:i.selection,ansi:i.ansi,waived:a.waive},o.signatureSlots);return{...o,gate:Mn(a),backdrop:c}}function _u(t,e){return Object.keys(e).length===0?t:t.map((n)=>Ua(n,e[n.name]))}function Bu(t,e,n){let r={...t};if(Object.keys(n).length===0)delete r[e];else r[e]=n;return r}function xk(t,e,n){let r=Kt(t);if(!Object.keys(r).some((s)=>e.has(s)||n.includes(s)))return;Ga(t,Object.fromEntries(Object.entries(r).filter(([s])=>!n.includes(s)).map(([s,o])=>[e.get(s)??s,o])))}var RT=20000;function lr(t){return Ik(t,"ttheme","official.json")}function Rk(t,e){C(lr(t),`${JSON.stringify(e,null,2)}
287
+ `)}function ct(t,e=!0,n){let r=po(t),i=lr(t),s=Iu();if(r.includes(Y))if(n)s=n;else{if(!Pk(i))throw Error(`no official marketplace at ${i} — run \`ttheme init\` first`);s=Vr(zh(i,"utf8"))}let o=r.filter(yt).flatMap((a)=>NT(t,a,s.palettes,e));return{...s,palettes:[...s.palettes,...o]}}function AT(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 marketplace this ttheme fetched — `ttheme update` fetches it again");return{...typeof e?.etag==="string"?{etag:e.etag}:{},files:n}}function fr(t,e){return AT(zh(ur(t,e),"utf8"))}function Ak(t,e){return ye({owner:lk(t),name:e.name})}function Nk(t,e){let n=e.files[ft];if(n===void 0)throw Error(`${ot(t)} has no ${ft} — \`ttheme marketplace init\` makes one`);return Nh(n,ft)}function Gu(t,e){return Ak(t,Nk(t,e))}function Yi(t,e,n,r){let i=Nk(t,e),s=Ak(t,i),o=ot(t),a=new Map(Object.entries(e.files).map(([u,f])=>[`${o}/${u}`,f])),c=Lh(Object.keys(e.files),(u)=>`${o}/${u}`);return{id:s,info:i,entries:jh(c,(u)=>a.get(u.path)??"",s,n,r,!0)}}function NT(t,e,n,r){let i=ur(t,e);if(!Pk(i))return[];try{return Yi(e,fr(t,e),n,me(!1)).entries}catch(s){if(r)process.stderr.write(`ttheme: skipping ${i} — ${s.message}
288
+ `);return[]}}function Vr(t){let e;try{e=JSON.parse(t)}catch{throw Error("the manifest is not valid JSON")}let n=e;if(typeof n?.version!=="string"||!Array.isArray(n.palettes))throw Error("the manifest has no version or palettes");for(let r of n.palettes){let i=Tk(r);if(i)throw Error(`manifest entry ${JSON.stringify(r?.name)} ${i}`)}return n}function Tk(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=ne(t.name)??(t.base===void 0?void 0:ne(t.base));if(e)return e;if(![t.background,t.foreground,t.cursor,t.selection,...t.ansi].every((n)=>typeof n==="string"&&we(n)))return'holds a color that is not "#rrggbb"';return[t.native??"-",t.catalog??"-",t.ansiSource].values().map((n)=>typeof n==="string"?Aa(n):"has a field that is not text").find(Boolean)}function Hk(t){return Ik(t,"ttheme","kept.json")}function $o(t,e){C(Hk(t),`${JSON.stringify({palettes:e},null,2)}
289
+ `)}function Zr(t){try{let{palettes:e}=JSON.parse(zh(Hk(t),"utf8"));return Array.isArray(e)?e.filter((n)=>Tk(n)===void 0):[]}catch{return[]}}function Ok(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi,t.pictures??[]])}function ko(t,e){let n=new Map(Zr(t).map((r)=>[r.name,r]));return e.palettes.filter((r)=>{let i=n.get(r.name);return et(r.name)!==void 0&&i!==void 0&&Ok(i)!==Ok(r)})}function dr(t,e,n=!0){let r=Zr(t),i=new Map(r.filter((a)=>et(a.name)!==void 0).map((a)=>[a.name,a])),s=[...e.palettes.map((a)=>i.get(a.name)??a),...ju(t,e.palettes,n)],o=new Set(s.map((a)=>a.name));return{...e,palettes:[...s,...r.filter((a)=>!o.has(a.name))]}}function zt(t,e,n=!0){let r=dr(t,e,n);return{...r,palettes:_u(r.palettes,Kt(t))}}function ve(t){return zt(t,ct(t))}class Uu extends Error{}class Fk extends Error{}async function Wa(t,e=RT,n,r={}){let i;try{let s=AbortSignal.timeout(e);i=await fetch(t,{headers:r,signal:n?AbortSignal.any([s,n]):s})}catch(s){throw Error(`cannot reach ${t} — ${s instanceof Error?s.message:String(s)}`)}if(i.status===404)throw new Uu(`nothing at ${t}`);if(i.status===403||i.status===429)throw new Fk(`${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}function Ka(t){let e=new Set(t.waived??[]),n=t.gate??Mn(Fe(t));return Ne.flatMap((r,i)=>{let s=n[i];if(e.has(r.rule)||typeof s!=="number"||Number.isNaN(s))return[];if(r.min!==void 0&&s<r.min)return[`${r.label} ${s} < ${r.min}`];if(r.max!==void 0&&s>r.max)return[`${r.label} ${s} > ${r.max}`];return[]})}function Ln(t,e){let n=t.find((r)=>r.name===e);if(!n)throw Error(`no palette named ${e} in your marketplaces — ${Dh(t,[e])}`);return n}function Dh(t,e){let n=e.map((o)=>o.toLowerCase()),r=t.filter((o)=>n.some((a)=>o.name.includes(a))),i=t.filter((o)=>!r.includes(o)&&n.some((a)=>re(o).toLowerCase().includes(a))),s=[...r,...i].map((o)=>o.name).slice(0,3);return s.length>0?`did you mean: ${s.join(", ")}?`:"`ttheme list` shows what is there"}function Lk(t,e){return t.filter((n)=>Wi([n.name,re(n),n.native??"",n.ansiSource,...n.nativeNames??[],...Nu(n.booru)],e))}function Ck(t,e,n){let r=n.toLowerCase(),i=(s)=>s.name===e.name?0:re(s)===re(e)?1:2;return t.filter((s)=>s.booru?.toLowerCase().includes(r)).sort((s,o)=>i(s)-i(o))}function jk(t,e){return t.booruSites?.[e]??(t.booru?[t.booru]:[])}var _k=(()=>{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}})(),Bk=(t)=>{return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510},Gk=(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 TT=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,HT=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Uk=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,FT=/\t{1,1000}/y,Wk=/[\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,LT=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,CT=/\p{M}+/gu,jT={limit:1/0,ellipsis:""},Kk=(t,e={},n={})=>{let r=e.limit??1/0,i=e.ellipsis??"",s=e?.ellipsisWidth??(i?Kk(i,jT,n).width:0),o=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,f=2,l=n.regularWidth??1,d=n.wideWidth??2,h=[[LT,l],[TT,0],[HT,a],[FT,c],[Wk,u],[Uk,d]],m=0,p=0,b=t.length,$=0,k=!1,v=b,S=Math.max(0,r-s),M=0,x=0,N=0,R=0;t:while(!0){if(x>M||p>=b&&p>m){let T=t.slice(M,x)||t.slice(m,p);$=0;for(let _ of T.replaceAll(CT,"")){let K=_.codePointAt(0)||0;if(Bk(K))R=2;else if(Gk(K))R=d;else R=l;if(N+R>S)v=Math.min(v,Math.max(M,m)+$);if(N+R>r){k=!0;break t}$+=_.length,N+=R}M=x=0}if(p>=b)break t;for(let T=0,_=h.length;T<_;T++){let[K,G]=h[T];if(K.lastIndex=p,K.test(t)){if($=K===Uk?_k(t.slice(p,K.lastIndex)):K===Wk?1:K.lastIndex-p,R=$*G,N+R>S)v=Math.min(v,p+Math.floor((S-N)/G));if(N+R>r){k=!0;break t}N+=R,M=m,x=p,p=m=K.lastIndex;continue t}}p+=1}return{width:k?S:N,index:k?v:b,truncated:k,ellipsed:k&&r>=s}},zk=Kk;var _T={limit:1/0,ellipsis:"",ellipsisWidth:0},BT=(t,e={})=>{return zk(t,_T,e).width},B=BT;var Dk={dim:["2","22"],bold:["1","22"],under:["4","24"],reverse:["7","27"],accent:["36","39"],pill:["7;1;36","22;27;39"],chip:["100;1","22;49"],danger:["7;1;31","22;27;39"],match:["1;4;36","22;24;39"],ok:["32","39"],warn:["33","39"],error:["31","39"]},GT={stage:0.08,bar:0.14,selection:0.2,tab:0.3,line:0.45},I={gutter:"▌",current:"◆",signature:"✦",closed:"▸",opened:"▾",on:"●",off:"○",ok:"✓",miss:"✗",above:"↑",below:"↓",update:"⇡",auto:"↻",remove:"×",undo:"↶",star:"★",link:"⧉",search:"⌕",linked:"⇠",contrast:"◐",swatch:"■",pictures:"▣",sep:"·",cut:"…"},mn=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function Le(t){return`\x1B[${t}m`}function wt(t){return Le(Dk[t][0])}function qh(t){return Le(Dk[t][1])}var Se=Le("0"),$t=Le("39"),qk=Le("49"),pe=Le("39;49");function Vi(t){return Le(String(t<8?30+t:82+t))}function Jk(t){return Le(String(t<8?40+t:92+t))}function Yk(t,e){return Le(`38;5;${t};48;5;${e}`)}function Wu(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 hr(t){return Le(`38;2;${Wu(t)}`)}function Jh(t){return Le(`48;2;${Wu(t)}`)}function Vk(t,e){return Le(`48;2;${Wu(t)};38;2;${Wu(e)}`)}function Ku(t,e=$t){return`${t.map((n)=>`${hr(n)}${I.swatch}`).join(" ")}${e}`}function Zi(t,e,n){return Nt(t,e,GT[n])}function Yh(t){let e=!1,n=!1,r=!1,i=!1,s=!1,o=!1;for(let c of t.split("\x1B[").slice(1)){let u=/^([0-9;]*)m/.exec(c)?.[1];if(u===void 0)continue;let f=(u||"0").split(";").map(Number);for(let l=0;l<f.length;l++){let d=f[l];if(d===0)e=n=r=i=s=o=!1;else if(d===1||d===2)e=!0;else if(d===22)e=!1;else if(d===3||d===23)n=d===3;else if(d===4||d===24)r=d===4;else if(d===7||d===27)i=d===7;else if(d===38||d===48)s||=d===38,o||=d===48,l+=f[l+1]===5?2:4;else if(d===39)s=!1;else if(d===49)o=!1;else if(d>=30&&d<=37||d>=90&&d<=97)s=!0;else if(d>=40&&d<=47||d>=100&&d<=107)o=!0}}let a=[e&&"22",n&&"23",r&&"24",i&&"27",s&&"39",o&&"49"].filter(Boolean);return a.length>0?Le(a.join(";")):""}function Ce(t){let e=(n)=>(r)=>t?`${wt(n)}${r}${qh(n)}`:r;return{color:t,dim:e("dim"),bold:e("bold"),accent:e("accent"),pill:e("pill"),chip:e("chip"),danger:e("danger"),ok:e("ok"),warn:e("warn"),error:e("error"),fg:(n)=>t?hr(n):"",bg:(n)=>t?Jh(n):""}}function zu(t,e){return e&&!/\p{Cc}/u.test(e)?`\x1B]8;;${e}\x1B\\${t}\x1B]8;;\x1B\\`:t}function Vh(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),s=r!==-1&&(i===-1||r<i)?r+1:i!==-1?i+2:0;return s?s-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 Zk;function Zh(t){return Zk??=new Intl.Segmenter(void 0,{granularity:"grapheme"}),Zk.segment(t)}function yo(t){let e=[],n=0;while(n<t.length){let r=Vh(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),s=i===-1?t.length:i;for(let{segment:o,index:a}of Zh(t.slice(n,s)))e.push({text:o,start:n+a,end:n+a+o.length,width:B(o),sequence:!1});n=s}return e}function UT(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?e:void 0}function Xh(t,e){let n="",r=0,i=0;for(let s of yo(t)){if(!s.sequence){if(r+s.width>e)break;r+=s.width}else{let o=UT(s.text);if(o!==void 0)i=o==="0"?Math.max(0,i-1):i+1}n+=s.text}return{head:n,used:r,ends:"\x1B[?0y".repeat(i)}}function tt(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:s,ends:o}=Xh(t,e-1);return`${i}${Yh(i)}…${o}${n?" ".repeat(e-1-s):""}`}function Xk(t,e){let{head:n,used:r,ends:i}=Xh(t,e);return`${n}${Yh(n)}${i}${" ".repeat(e-r)}`}function Rt(t,e,n){let r=n-B(e)-1;return r<=0?tt(t,n):`${tt(t,r)} ${e}`}function Ft(t,e){let n=[],r="";for(let i of t.split(/\s+/).filter(Boolean)){let s=r?`${r} ${i}`:i;if(B(s)<=e){r=s;continue}if(r)n.push(r);while(B(i)>e){let{head:o}=Xh(i,e),a=Math.max(o.lastIndexOf("/")+1,o.lastIndexOf("#")),c=a>0?a:o.length||yo(i)[0].end;n.push(i.slice(0,c)),i=i.slice(c)}r=i}if(r)n.push(r);return n}var WT=9999,vo;function Ye(t,e){if(!vo||e===""||vo.length>=WT)return e;return`\x1B[?${vo.push(t)}y${e}\x1B[?0y`}function ty(t){let e=vo,n=[];vo=n;try{return{drawn:t(),targets:n}}finally{vo=e}}function ey(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?Number(e):void 0}function KT(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 zT(t,e,n){if(!t.includes("\x1B[?"))return{text:t,zones:[]};let r=[],i=[],s="",o=0,a="",c=()=>{let f=i.pop();if(f&&o>f.col)r.push({row:e,col:f.col,width:o-f.col,height:1,target:f.target})},u=0;while(u<t.length){let f=t.indexOf("\x1B",u);if(f!==u){let m=f===-1?t.length:f;a+=t.slice(u,m),s+=t.slice(u,m),u=m;continue}let l=t.slice(u,u+(Vh(t,u)||1));u+=l.length;let d=ey(l),h=d===void 0?KT(l):void 0;if(d===void 0&&h===void 0){s+=l;continue}if(o+=B(a),a="",h!==void 0)o=h,s+=l;else if(d===0)c();else if(d!==void 0)i.push({target:n[d-1],col:o})}o+=B(a);while(i.length>0)c();return{text:s,zones:r}}function ny(t,e,n){let r=[],i=[],s="",o=(b)=>{let $=ey(b);if($===0)r.pop();else if($!==void 0)r.push(b);else if(b.startsWith("\x1B]8;"))s=b.slice(b.indexOf(";",4)+1).replace("\x07","").replace("\x1B\\","")===""?"":b;else if(b.startsWith("\x1B[")&&b.endsWith("m"))i.push(b)},a=t.includes("\x1B")||n.includes("\x1B")?Se:"",c=yo(t),u="",f=0,l=0;while(l<c.length&&f<e){let b=c[l];if(b.sequence)o(b.text);else if(f+b.width>e)break;else f+=b.width;u+=b.text,l++}u+=" ".repeat(e-Math.min(e,f));let d=`${"\x1B[?0y".repeat(r.length)}${s?"\x1B]8;;\x1B\\":""}${a}`,h=e+B(n);while(l<c.length&&f<h){let b=c[l];if(b.sequence)o(b.text);else f+=b.width;l++}let m=l<c.length?t.slice(c[l].start):"";if(m===""&&f<=h)return`${u}${d}${n}${a}`;let p=`${i.join("")}${s}${r.join("")}${" ".repeat(Math.max(0,f-h))}`;return`${u}${d}${n}${a}${p}${m}`}function ry(t,e){let n=t.map((r,i)=>zT(r,i,e));return{lines:n.map((r)=>r.text),zones:n.flatMap((r)=>r.zones)}}function Qk(t,e,n,r=0.5,i=0.5){let s=n-t.col,o=e-t.row;return{target:t.target,x:s,y:o,exact:{x:s+r,y:o+i},width:t.width,height:t.height,inside:s>=0&&s<t.width&&o>=0&&o<t.height}}function DT(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 qT={space:" ",enter:"enter",esc:"esc",tab:"tab",bksp:"backspace",del:"delete","←":"left","→":"right"};function Qh(t){let e=/^(ctrl|alt)\+([a-z])$/.exec(t);if(e)return`${e[1]}-${e[2]}`;return qT[t]??([...t].length===1&&t!==" "?t:void 0)}function ge(t,e){let n=Qh(t);return n?Ye({kind:"key",key:n},e):e}class tm{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&&Qk(n,t.row,t.col,t.fx,t.fy)}let e=DT(this.zones,t.row,t.col);if(t.action==="press")this.held=t.button==="left"?e:void 0;return e&&Qk(e,t.row,t.col,t.fx,t.fy)}drop(){this.held=void 0}}function Du(t,e,n,r=(i)=>i){if(!t.color)return r(n?`[${e}]`:` ${e} `);return n?t.pill(r(` ${e} `)):t.dim(r(` ${e} `))}function iy(t,e,n,r=!1){if(!t.color)return n==="focus"?`[${e}]`:` ${e} `;if(n==="off")return t.dim(` ${e} `);if(n==="focus")return r?t.danger(` ${e} `):t.pill(` ${e} `);return t.chip(` ${e} `)}function Ve(t,e){return t.color?t.pill(` ${e} `):`[${e}]`}function sy(t,e,n){return ge(e.split(" ")[0]??"",`${t.bold(e)} ${t.dim(n)}`)}function qu(t,e){return e===void 0?t.dim(I.sep):e?t.dim(I.ok):t.bold(I.miss)}var JT={top:"╭╮",mid:"├┤",bottom:"╰╯"};function Bt(t,e,n=[]){let[r,i]=[...JT[e]],s=[...`${r}${"─".repeat(Math.max(0,t-2))}${i}`];for(let[o,a]of n)[...a].forEach((c,u)=>{if(o+u>0&&o+u<t-1)s[o+u]=c});return s.join("")}function Ze(t,e,n){return`${t.dim("│")}${tt(e,n-2)}${t.dim("│")}`}var mr=[{name:"preview",title:"Preview"},{name:"browse",title:"Browse"}],Ju=10,Yu=20;function oy(t){return mr.find((e)=>e.name===t.TTHEME_HUB)?.name}function Vu(t,e){let n=mr.findIndex((r)=>r.name===t);return Yu+(n+e+mr.length)%mr.length+1}function ay(t){return Yu+mr.findIndex((e)=>e.name===t)+1}function em(t,e){let n=Ce(e);return` ${mr.map(({name:i,title:s})=>{let o={kind:"hub",tab:i};return Du(n,s,i===t,(a)=>Ye(o,a))}).join(" ")} ${n.dim("tab next")}`}import{execFileSync as sC}from"node:child_process";import{existsSync as Gl,mkdirSync as oC,readdirSync as aC,readFileSync as Ul,rmSync as cC}from"node:fs";import{basename as Qv,join as fc,relative as Vv}from"node:path";import{styleText as el}from"node:util";import{stdout as wy,stdin as nH}from"node:process";import rH from"node:readline";var Zu="\x1B",dy="›",YT=39,rm="\x07",hy="[",VT="]",my="m",im=`${VT}8;;`,cy=new RegExp(`(?:\\${hy}(?<code>\\d+)m|\\${im}(?<uri>.*)${rm})`,"y"),uy=(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},ly=(t)=>`${Zu}${hy}${t}${my}`,fy=(t)=>`${Zu}${im}${t}${rm}`,nm=(t,e,n)=>{let r=e[Symbol.iterator](),i=!1,s=!1,o=t.at(-1),a=o===void 0?0:B(o),c=r.next(),u=r.next(),f=0;while(!c.done){let l=c.value,d=B(l);if(a+d<=n)t[t.length-1]+=l;else t.push(l),a=0;if(l===Zu||l===dy)i=!0,s=e.startsWith(im,f+1);if(i){if(s){if(l===rm)i=!1,s=!1}else if(l===my)i=!1}else if(a+=d,a===n&&!u.done)t.push(""),a=0;c=u,u=r.next(),f+=l.length}if(o=t.at(-1),!a&&o!==void 0&&o.length&&t.length>1)t[t.length-2]+=t.pop()},ZT=(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("")},XT=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",i,s,o=t.split(" "),a=[""],c=0;for(let l=0;l<o.length;l++){let d=o[l];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(l!==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(d);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("");nm(a,d,e),c=B(a.at(-1)??"");continue}if(c+h>e&&c&&h){if(n.wordWrap===!1&&c<e){nm(a,d,e),c=B(a.at(-1)??"");continue}a.push(""),c=0}if(c+h>e&&n.wordWrap===!1){nm(a,d,e),c=B(a.at(-1)??"");continue}a[a.length-1]+=d,c+=h}if(n.trim!==!1)a=a.map((l)=>ZT(l));let u=a.join(`
290
+ `),f=!1;for(let l=0;l<u.length;l++){let d=u[l];if(r+=d,!f){if(f=d>="\uD800"&&d<="\uDBFF",f)continue}else f=!1;if(d===Zu||d===dy){cy.lastIndex=l+1;let m=cy.exec(u)?.groups;if(m?.code!==void 0){let p=Number.parseFloat(m.code);i=p===YT?void 0:p}else if(m?.uri!==void 0)s=m.uri.length===0?void 0:m.uri}if(u[l+1]===`
291
+ `){if(s)r+=fy("");let h=i?uy(i):void 0;if(i&&h)r+=ly(h)}else if(d===`
292
+ `){if(i&&uy(i))r+=ly(i);if(s)r+=fy(s)}}return r},QT=/\r?\n/;function Xr(t,e,n){return String(t).normalize().split(QT).map((r)=>XT(r,e,n)).join(`
293
+ `)}var je=hd(om(),1);function pr(t,e,n){if(!n.some((o)=>!o.disabled))return t;let r=t+e,i=Math.max(n.length-1,0),s=r<0?i:r>i?0:r;return n[s]?.disabled?pr(s,e<0?-1:1,n):s}function Xu(t,e,n,r){let i=r.split(`
294
+ `),s=0,o=t;for(let c of i){if(o<=c.length)break;o-=c.length+1,s++}for(s=Math.max(0,Math.min(i.length-1,s+n)),o=Math.min(o,i[s].length)+e;o<0&&s>0;)s--,o+=i[s].length+1;for(;o>i[s].length&&s<i.length-1;)o-=i[s].length+1,s++;o=Math.max(0,Math.min(i[s].length,o));let a=0;for(let c=0;c<s;c++)a+=i[c].length+1;return a+o}var iH=["up","down","left","right","space","enter","cancel"],sH=["January","February","March","April","May","June","July","August","September","October","November","December"],Gt={actions:new Set(iH),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,accessible:void 0,date:{monthNames:[...sH],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 oH(t){if(t!==void 0)return t;if(Gt.accessible!==void 0)return Gt.accessible;let e=process.env.ACCESSIBLE;return e!==void 0&&e!==""&&e!=="0"&&e!=="false"}function $y(t,e){if(typeof t=="string")return Gt.aliases.get(t)===e;for(let n of t)if(n!==void 0&&$y(n,e))return!0;return!1}function aH(t,e){if(t===e)return;let n=t.split(`
295
295
  `),r=e.split(`
296
- `),i=Math.max(n.length,r.length),s=[];for(let o=0;o<i;o++)n[o]!==r[o]&&s.push(o);return{lines:s,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}var yW=globalThis.process.platform.startsWith("win"),il=Symbol("clack:cancel");function ie(t){return t===il}function el(t,e){let n=t;n.isTTY&&n.setRawMode(e)}var sl=(t)=>("columns"in t)&&typeof t.columns=="number"?t.columns:80,dm=(t)=>("rows"in t)&&typeof t.rows=="number"?t.rows:20;function ti(t,e,n,r=n,i=n,s){let o=sl(t??ky);return Qr(e,o-n.length,{hard:!0,trim:!1}).split(`
296
+ `),i=Math.max(n.length,r.length),s=[];for(let o=0;o<i;o++)n[o]!==r[o]&&s.push(o);return{lines:s,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}var wW=globalThis.process.platform.startsWith("win"),nl=Symbol("clack:cancel");function ie(t){return t===nl}function Qu(t,e){let n=t;n.isTTY&&n.setRawMode(e)}var rl=(t)=>("columns"in t)&&typeof t.columns=="number"?t.columns:80,um=(t)=>("rows"in t)&&typeof t.rows=="number"?t.rows:20;function Qr(t,e,n,r=n,i=n,s){let o=rl(t??wy);return Xr(e,o-n.length,{hard:!0,trim:!1}).split(`
297
297
  `).map((a,c,u)=>{let f=s?s(a,c):a;return c===0?`${r}${f}`:c===u.length-1?`${i}${f}`:`${n}${f}`}).join(`
298
- `)}function vy(t,e){if("~standard"in t){let n=t["~standard"].validate(e);return n instanceof Promise?n.then((r)=>r.issues?.at(0)?.message):n.issues?.at(0)?.message}return t(e)}class br{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";get accessible(){return aH(this.opts.accessible)}constructor(t,e=!0){let{input:n=rH,output:r=ky,render:i,signal:s,...o}=t;this.opts=o,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=s,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(il);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=iH.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),el(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(_e.cursor.show),this.output.off("resize",this.render),el(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(_e.cursor.show),this.output.off("resize",this.render),el(this.input,!1),t(il)})})}_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("")}async onKeypress(t,e){if(this.state!=="validating"){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&&Gt.aliases.has(e.name)&&this.emit("cursor",Gt.aliases.get(e.name)),Gt.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=vy(this.opts.validate,this.value),r;n instanceof Promise?(this.state="validating",this.render(),r=await n):r=n,r&&(this.error=r instanceof Error?r.message:r,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}yy([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(`
299
- `),el(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=Qr(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
300
- `).length-1;this.output.write(_e.cursor.move(-999,t*-1))}render(){let t=Qr(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(_e.cursor.hide);else{let e=cH(this._prevFrame,t),n=dm(this.output);if(this.restoreCursor(),e){let r=Math.max(0,e.numLinesAfter-n),i=Math.max(0,e.numLinesBefore-n),s=e.lines.find((o)=>o>=r);if(s===void 0){this._prevFrame=t;return}if(e.lines.length===1){this.output.write(_e.cursor.move(0,s-i)),this.output.write(_e.erase.lines(1));let o=t.split(`
301
- `);this.output.write(o[s]),this._prevFrame=t,this.output.write(_e.cursor.move(0,o.length-s-1));return}else if(e.lines.length>1){if(r<i)s=r;else{let a=s-i;a>0&&this.output.write(_e.cursor.move(0,a))}this.output.write(_e.erase.down());let o=t.split(`
298
+ `)}function ky(t,e){if("~standard"in t){let n=t["~standard"].validate(e);return n instanceof Promise?n.then((r)=>r.issues?.at(0)?.message):n.issues?.at(0)?.message}return t(e)}class gr{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";get accessible(){return oH(this.opts.accessible)}constructor(t,e=!0){let{input:n=nH,output:r=wy,render:i,signal:s,...o}=t;this.opts=o,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=s,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(nl);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=rH.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),Qu(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(je.cursor.show),this.output.off("resize",this.render),Qu(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(je.cursor.show),this.output.off("resize",this.render),Qu(this.input,!1),t(nl)})})}_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("")}async onKeypress(t,e){if(this.state!=="validating"){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&&Gt.aliases.has(e.name)&&this.emit("cursor",Gt.aliases.get(e.name)),Gt.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=ky(this.opts.validate,this.value),r;n instanceof Promise?(this.state="validating",this.render(),r=await n):r=n,r&&(this.error=r instanceof Error?r.message:r,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}$y([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(`
299
+ `),Qu(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=Xr(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
300
+ `).length-1;this.output.write(je.cursor.move(-999,t*-1))}render(){let t=Xr(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(je.cursor.hide);else{let e=aH(this._prevFrame,t),n=um(this.output);if(this.restoreCursor(),e){let r=Math.max(0,e.numLinesAfter-n),i=Math.max(0,e.numLinesBefore-n),s=e.lines.find((o)=>o>=r);if(s===void 0){this._prevFrame=t;return}if(e.lines.length===1){this.output.write(je.cursor.move(0,s-i)),this.output.write(je.erase.lines(1));let o=t.split(`
301
+ `);this.output.write(o[s]),this._prevFrame=t,this.output.write(je.cursor.move(0,o.length-s-1));return}else if(e.lines.length>1){if(r<i)s=r;else{let a=s-i;a>0&&this.output.write(je.cursor.move(0,a))}this.output.write(je.erase.down());let o=t.split(`
302
302
  `).slice(s);this.output.write(o.join(`
303
- `)),this._prevFrame=t;return}}this.output.write(_e.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}function uH(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 lH(t,e){return(e.label??String(e.value)).toLowerCase().includes(t.toLowerCase())}function fH(t,e){if(e)return t?e:e[0]}var dH=class extends br{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#r="";#t;#o;#a;#n;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return rl(["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}${rl("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,this.#n=e.completeOnTab===!0;let n=this.options;this.filteredOptions=[...n],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??lH;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 s=n.findIndex((o)=>o.value===i);s!==-1&&(this.toggleSelected(i),this.#e=s)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,s)=>this.#i(i,s)),this.on("userInput",(i)=>this.#s(i))}_isActionKey(e,n){return e==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&e!==void 0&&e!==""}#i(e,n){let r=n.name==="up",i=n.name==="down",s=n.name==="return",o=this.userInput===""||this.userInput==="\t",a=this.#a,c=this.options,u=a!==void 0&&a!==""&&c.some((f)=>!f.disabled&&(this.#t?this.#t(a,f):!0));if(n.name==="tab"&&o&&u){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}if(n.name==="tab"&&this.#n&&!this.multiple&&this.focusedValue!==void 0){let f=String(this.focusedValue);this._clearUserInput(),this._setUserInput(f,!0),this.isNavigating=!1;return}r||i?(this.#e=gr(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):s?this.value=fH(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])}#s(e){if(e!==this.#r){this.#r=e;let n=this.options;e&&this.#t?this.filteredOptions=n.filter((s)=>this.#t?.(e,s)):this.filteredOptions=[...n];let r=uH(this.focusedValue,this.filteredOptions);this.#e=gr(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 hm extends br{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(_e.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var hH={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function wy(t){return[...t].map((e)=>hH[e])}function mH(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 lm(t){return Number.parseInt((t||"0").replace(/_/g,"0"),10)||0}function nl(t){return{year:lm(t.year),month:lm(t.month),day:lm(t.day)}}function fm(t,e){return new Date(t||2001,e||1,0).getDate()}function Sy(t){let{year:e,month:n,day:r}=nl(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=Sy(t);return e?new Date(Date.UTC(e.year,e.month-1,e.day)):void 0}function pH(t,e,n,r){let i=n?{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}:null,s=r?{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate()}:null;return t==="year"?{min:i?.year??1,max:s?.year??9999}:t==="month"?{min:i&&e.year===i.year?i.month:1,max:s&&e.year===s.year?s.month:12}:{min:i&&e.year===i.year&&e.month===i.month?i.day:1,max:s&&e.year===s.year&&e.month===s.month?s.day:fm(e.year,e.month)}}class Ey extends br{#e;#r;#t;#o;#a;#n={segmentIndex:0,positionInSegment:0};#i=!0;#s=null;inlineError="";get segmentCursor(){return{...this.#n}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#r}get formattedValue(){return this.#f(this.#t)}#f(t){return this.#e.map((e)=>t[e.type]).join(this.#r)}#c(){this._setUserInput(this.#f(this.#t)),this._setValue($y(this.#t)??void 0)}constructor(t){let e=t.format?{segments:wy(t.format),separator:t.separator??"/"}:mH(t.locale),n=t.separator??e.separator,r=t.format?wy(t.format):e.segments,i=t.initialValue??t.defaultValue,s=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:"__"},o=r.map((a)=>s[a.type]).join(n);super({...t,initialUserInput:o},!1),this.#e=r,this.#r=n,this.#t=s,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.#n.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#n.positionInSegment=Math.max(0,Math.min(this.#n.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#s=null;let e=this.#u();e&&(this.#n.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#n.positionInSegment=0,this.#i=!0)}#d(t){let e=this.#u();if(!e)return;let{segment:n}=e,r=this.#t[n.type],i=!r||r.replace(/_/g,"")==="",s=Number.parseInt((r||"0").replace(/_/g,"0"),10)||0,o=pH(n.type,nl(this.#t),this.#o,this.#a),a;i?a=t===1?o.min:o.max:a=Math.max(Math.min(o.max,s+t),o.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.#d(1);case"down":return this.#d(-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.#n.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.#n.segmentIndex=i,this.#n.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 d=this.#s+t,h={...this.#t,[r.type]:d},m=this.#h(h,r);if(m){this.inlineError=m,this.#s=null,this.#i=!1;return}this.inlineError="",this.#t[r.type]=d,this.#s=null,this.#i=!1,this.#c(),n.index<this.#e.length-1&&(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0);return}this.#i&&!i&&(this.#t[r.type]="_".repeat(r.len),this.#n.positionInSegment=0),this.#i=!1,this.#s=null;let s=this.#t[r.type],o=s.indexOf("_"),a=o>=0?o:Math.min(this.#n.positionInSegment,r.len-1);if(a<0||a>=r.len)return;let c=s.slice(0,a)+t+s.slice(a+1),u=!1;if(a===0&&s==="__"&&(r.type==="month"||r.type==="day")){let d=Number.parseInt(t,10);c=`0${t}`,u=d<=(r.type==="month"?1:2)}if(r.type==="year"&&(c=(s.replace(/_/g,"")+t).padStart(r.len,"_")),!c.includes("_")){let d={...this.#t,[r.type]:c},h=this.#h(d,r);if(h){this.inlineError=h;return}}this.inlineError="",this.#t[r.type]=c;let f=c.includes("_")?void 0:Sy(this.#t);if(f){let{year:d,month:h}=f,m=fm(d,h);this.#t={year:String(Math.max(0,Math.min(9999,d))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,h))).padStart(2,"0"),day:String(Math.max(1,Math.min(m,f.day))).padStart(2,"0")}}this.#c();let l=c.indexOf("_");u?(this.#i=!0,this.#s=t):l>=0?this.#n.positionInSegment=l:o>=0&&n.index<this.#e.length-1?(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0):this.#n.positionInSegment=Math.min(a+1,r.len-1)}}#h(t,e){let{month:n,day:r}=nl(t);if(e.type==="month"&&(n<0||n>12))return Gt.date.messages.invalidMonth;if(e.type==="day"&&(r<0||r>31))return Gt.date.messages.invalidDay(31,"any month")}#g(t){let{year:e,month:n,day:r}=nl(this.#t);if(e&&n&&r){let i=fm(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 gH=class extends br{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((s)=>s.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((s)=>({...s,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}})}},bH=new Set(["up","down","left","right"]);class My extends br{#e=!1;#r;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===`
303
+ `)),this._prevFrame=t;return}}this.output.write(je.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}function cH(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 uH(t,e){return(e.label??String(e.value)).toLowerCase().includes(t.toLowerCase())}function lH(t,e){if(e)return t?e:e[0]}var fH=class extends gr{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#r="";#t;#o;#a;#n;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return el(["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}${el("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,this.#n=e.completeOnTab===!0;let n=this.options;this.filteredOptions=[...n],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??uH;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 s=n.findIndex((o)=>o.value===i);s!==-1&&(this.toggleSelected(i),this.#e=s)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,s)=>this.#i(i,s)),this.on("userInput",(i)=>this.#s(i))}_isActionKey(e,n){return e==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&e!==void 0&&e!==""}#i(e,n){let r=n.name==="up",i=n.name==="down",s=n.name==="return",o=this.userInput===""||this.userInput==="\t",a=this.#a,c=this.options,u=a!==void 0&&a!==""&&c.some((f)=>!f.disabled&&(this.#t?this.#t(a,f):!0));if(n.name==="tab"&&o&&u){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}if(n.name==="tab"&&this.#n&&!this.multiple&&this.focusedValue!==void 0){let f=String(this.focusedValue);this._clearUserInput(),this._setUserInput(f,!0),this.isNavigating=!1;return}r||i?(this.#e=pr(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):s?this.value=lH(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])}#s(e){if(e!==this.#r){this.#r=e;let n=this.options;e&&this.#t?this.filteredOptions=n.filter((s)=>this.#t?.(e,s)):this.filteredOptions=[...n];let r=cH(this.focusedValue,this.filteredOptions);this.#e=pr(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 lm extends gr{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(je.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var dH={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function gy(t){return[...t].map((e)=>dH[e])}function hH(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 am(t){return Number.parseInt((t||"0").replace(/_/g,"0"),10)||0}function tl(t){return{year:am(t.year),month:am(t.month),day:am(t.day)}}function cm(t,e){return new Date(t||2001,e||1,0).getDate()}function yy(t){let{year:e,month:n,day:r}=tl(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 by(t){let e=yy(t);return e?new Date(Date.UTC(e.year,e.month-1,e.day)):void 0}function mH(t,e,n,r){let i=n?{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}:null,s=r?{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate()}:null;return t==="year"?{min:i?.year??1,max:s?.year??9999}:t==="month"?{min:i&&e.year===i.year?i.month:1,max:s&&e.year===s.year?s.month:12}:{min:i&&e.year===i.year&&e.month===i.month?i.day:1,max:s&&e.year===s.year&&e.month===s.month?s.day:cm(e.year,e.month)}}class vy extends gr{#e;#r;#t;#o;#a;#n={segmentIndex:0,positionInSegment:0};#i=!0;#s=null;inlineError="";get segmentCursor(){return{...this.#n}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#r}get formattedValue(){return this.#f(this.#t)}#f(t){return this.#e.map((e)=>t[e.type]).join(this.#r)}#c(){this._setUserInput(this.#f(this.#t)),this._setValue(by(this.#t)??void 0)}constructor(t){let e=t.format?{segments:gy(t.format),separator:t.separator??"/"}:hH(t.locale),n=t.separator??e.separator,r=t.format?gy(t.format):e.segments,i=t.initialValue??t.defaultValue,s=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:"__"},o=r.map((a)=>s[a.type]).join(n);super({...t,initialUserInput:o},!1),this.#e=r,this.#r=n,this.#t=s,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.#n.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#n.positionInSegment=Math.max(0,Math.min(this.#n.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#s=null;let e=this.#u();e&&(this.#n.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#n.positionInSegment=0,this.#i=!0)}#d(t){let e=this.#u();if(!e)return;let{segment:n}=e,r=this.#t[n.type],i=!r||r.replace(/_/g,"")==="",s=Number.parseInt((r||"0").replace(/_/g,"0"),10)||0,o=mH(n.type,tl(this.#t),this.#o,this.#a),a;i?a=t===1?o.min:o.max:a=Math.max(Math.min(o.max,s+t),o.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.#d(1);case"down":return this.#d(-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.#n.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.#n.segmentIndex=i,this.#n.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 d=this.#s+t,h={...this.#t,[r.type]:d},m=this.#h(h,r);if(m){this.inlineError=m,this.#s=null,this.#i=!1;return}this.inlineError="",this.#t[r.type]=d,this.#s=null,this.#i=!1,this.#c(),n.index<this.#e.length-1&&(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0);return}this.#i&&!i&&(this.#t[r.type]="_".repeat(r.len),this.#n.positionInSegment=0),this.#i=!1,this.#s=null;let s=this.#t[r.type],o=s.indexOf("_"),a=o>=0?o:Math.min(this.#n.positionInSegment,r.len-1);if(a<0||a>=r.len)return;let c=s.slice(0,a)+t+s.slice(a+1),u=!1;if(a===0&&s==="__"&&(r.type==="month"||r.type==="day")){let d=Number.parseInt(t,10);c=`0${t}`,u=d<=(r.type==="month"?1:2)}if(r.type==="year"&&(c=(s.replace(/_/g,"")+t).padStart(r.len,"_")),!c.includes("_")){let d={...this.#t,[r.type]:c},h=this.#h(d,r);if(h){this.inlineError=h;return}}this.inlineError="",this.#t[r.type]=c;let f=c.includes("_")?void 0:yy(this.#t);if(f){let{year:d,month:h}=f,m=cm(d,h);this.#t={year:String(Math.max(0,Math.min(9999,d))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,h))).padStart(2,"0"),day:String(Math.max(1,Math.min(m,f.day))).padStart(2,"0")}}this.#c();let l=c.indexOf("_");u?(this.#i=!0,this.#s=t):l>=0?this.#n.positionInSegment=l:o>=0&&n.index<this.#e.length-1?(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0):this.#n.positionInSegment=Math.min(a+1,r.len-1)}}#h(t,e){let{month:n,day:r}=tl(t);if(e.type==="month"&&(n<0||n>12))return Gt.date.messages.invalidMonth;if(e.type==="day"&&(r<0||r>31))return Gt.date.messages.invalidDay(31,"any month")}#g(t){let{year:e,month:n,day:r}=tl(this.#t);if(e&&n&&r){let i=cm(e,n);this.#t={...this.#t,day:String(Math.min(r,i)).padStart(2,"0")}}this.value=by(this.#t)??t.defaultValue??void 0}}var pH=class extends gr{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((s)=>s.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((s)=>({...s,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}})}},gH=new Set(["up","down","left","right"]);class Sy extends gr{#e=!1;#r;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===`
304
304
  `?`${e}█
305
- ${r}`:`${e}${rl("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=tl(this._cursor,0,-1,e);return;case"down":this._cursor=tl(this._cursor,0,1,e);return;case"left":this._cursor=tl(this._cursor,-1,0,e);return;case"right":this._cursor=tl(this._cursor,1,0,e);return}}_shouldSubmit(t,e){if(this.#r)return this.focused==="submit"?!0:(this.#t(`
305
+ ${r}`:`${e}${el("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=Xu(this._cursor,0,-1,e);return;case"down":this._cursor=Xu(this._cursor,0,1,e);return;case"left":this._cursor=Xu(this._cursor,-1,0,e);return;case"right":this._cursor=Xu(this._cursor,1,0,e);return}}_shouldSubmit(t,e){if(this.#r)return this.focused==="submit"?!0:(this.#t(`
306
306
  `),this._cursor++,!1);let n=this.#e;return this.#e=!0,n&&this.cursor===this.userInput.length?(this.userInput[this.cursor-1]===`
307
307
  `&&(this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--),!0):(this.#t(`
308
- `),this._cursor++,!1)}constructor(t){let e=t.initialUserInput??t.initialValue;super({...t,initialUserInput:e},!1),e!==void 0&&(this._cursor=e.length),this.#r=t.showSubmit??!1,this.on("key",(n,r)=>{if(r?.name&&bH.has(r.name)){this.#e=!1,this.#o(r.name);return}if(n==="\t"&&this.#r){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.#r&&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 mm extends br{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?gr(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=gr(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=gr(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var xy=class extends br{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?gr(r,1,this.options):r,this.changeValue(),this.on("cursor",(i)=>{switch(i){case"left":case"up":this.cursor=gr(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=gr(this.cursor,1,this.options);break}this.changeValue()})}};class pm extends br{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}${rl("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 IW}from"node:util";import Qe from"node:process";var Ny=gd(um(),1);function wH(){if(Qe.platform!=="win32")return Qe.env.TERM!=="linux";return Boolean(Qe.env.CI)||Boolean(Qe.env.WT_SESSION)||Boolean(Qe.env.TERMINUS_SUBLIME)||Qe.env.ConEmuTask==="{cmd::Cmder}"||Qe.env.TERM_PROGRAM==="Terminus-Sublime"||Qe.env.TERM_PROGRAM==="vscode"||Qe.env.TERM==="xterm-256color"||Qe.env.TERM==="alacritty"||Qe.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var $H=wH();var mt=(t,e)=>$H?t:e,Oy=mt("◆","*"),kH=mt("■","x"),yH=mt("▲","x"),wm=mt("◇","o"),vH=mt("┌","T"),it=mt("│","|"),Bn=mt("└","—"),TW=mt("┐","T"),HW=mt("┘","—"),gm=mt("●",">"),al=mt("○"," "),SH=mt("◻","[•]"),Py=mt("◼","[+]"),Iy=mt("◻","[ ]"),LW=mt("▪","•"),Ry=mt("─","-"),EH=mt("╮","+"),MH=mt("├","+"),xH=mt("╯","+"),OH=mt("╰","+"),FW=mt("╭","+"),PH=mt("●","•"),IH=mt("◆","*"),RH=mt("▲","!"),AH=mt("■","x"),cl=(t)=>{switch(t){case"initial":case"active":return O("cyan",Oy);case"cancel":return O("red",kH);case"error":return O("yellow",yH);case"submit":return O("green",wm);case"validating":return O("dim",Oy)}},Ty=(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 Hy(t,e){let n=[`${e?`${O("cyan",it)} `:""}${t.join(" • ")}`];return e&&n.push(O("cyan",Bn)),n}var Ay=(t,e,n,r,i,s=!1)=>{let o=e,a=0;if(s)for(let c=r-1;c>=n;c--){let u=t[c];if(u&&(o-=u.length),a++,o<=i)break}else for(let c=n;c<r;c++){let u=t[c];if(u&&(o-=u.length),a++,o<=i)break}return{lineCount:o,removals:a}},bm=({cursor:t,options:e,style:n,output:r=process.stdout,maxItems:i=Number.POSITIVE_INFINITY,columnPadding:s=0,rowPadding:o=4})=>{let a=sl(r)-s,c=dm(r),u=O("dim","..."),f=Math.max(c-o,0),l=Math.max(Math.min(i,f),5),d=0;t>=l-3&&(d=Math.max(Math.min(t-l+3,e.length-l),0));let h=l<e.length&&d>0,m=l<e.length&&d+l<e.length,p=Math.min(d+l,e.length),b=[],$=0;h&&$++,m&&$++;let k=d+(h?1:0),S=p-(m?1:0);for(let x=k;x<S;x++){let M=e[x],N=M?n(M,x===t):"",C=Qr(N,a,{hard:!0,trim:!1}).split(`
309
- `);b.push(C),$+=C.length}if($>f){let x=0,M=0,N=$,C=t-k,I=f,j=()=>Ay(b,N,0,C,I),U=()=>Ay(b,N,C+1,b.length,I,!0);h?({lineCount:N,removals:x}=j(),N>I&&(m||(I-=1),{lineCount:N,removals:M}=U())):(m||(I-=1),{lineCount:N,removals:M}=U(),N>I&&(I-=1,{lineCount:N,removals:x}=j())),x>0&&(h=!0,b.splice(0,x)),M>0&&(m=!0,b.splice(b.length-M,M))}let v=[];h&&v.push(u);for(let x of b)for(let M of x)v.push(M);return m&&v.push(u),v};var Be=(t)=>{let e=t.active??"Yes",n=t.inactive??"No";return new hm({active:e,inactive:n,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue??!0,render(){let r=t.withGuide??Gt.withGuide,i=`${cl(this.state)} `,s=r?`${O("gray",it)} `:"",o=ti(t.output,t.message,s,i),a=`${r?`${O("gray",it)}
308
+ `),this._cursor++,!1)}constructor(t){let e=t.initialUserInput??t.initialValue;super({...t,initialUserInput:e},!1),e!==void 0&&(this._cursor=e.length),this.#r=t.showSubmit??!1,this.on("key",(n,r)=>{if(r?.name&&gH.has(r.name)){this.#e=!1,this.#o(r.name);return}if(n==="\t"&&this.#r){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.#r&&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 fm extends gr{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?pr(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=pr(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=pr(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var Ey=class extends gr{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?pr(r,1,this.options):r,this.changeValue(),this.on("cursor",(i)=>{switch(i){case"left":case"up":this.cursor=pr(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=pr(this.cursor,1,this.options);break}this.changeValue()})}};class dm extends gr{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}${el("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 xW}from"node:util";import Xe from"node:process";var Ry=hd(om(),1);function bH(){if(Xe.platform!=="win32")return Xe.env.TERM!=="linux";return Boolean(Xe.env.CI)||Boolean(Xe.env.WT_SESSION)||Boolean(Xe.env.TERMINUS_SUBLIME)||Xe.env.ConEmuTask==="{cmd::Cmder}"||Xe.env.TERM_PROGRAM==="Terminus-Sublime"||Xe.env.TERM_PROGRAM==="vscode"||Xe.env.TERM==="xterm-256color"||Xe.env.TERM==="alacritty"||Xe.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var wH=bH();var ht=(t,e)=>wH?t:e,My=ht("◆","*"),$H=ht("■","x"),kH=ht("▲","x"),pm=ht("◇","o"),yH=ht("┌","T"),rt=ht("│","|"),Cn=ht("└","—"),RW=ht("┐","T"),AW=ht("┘","—"),hm=ht("●",">"),sl=ht("○"," "),vH=ht("◻","[•]"),xy=ht("◼","[+]"),Oy=ht("◻","[ ]"),NW=ht("▪","•"),Py=ht("─","-"),SH=ht("╮","+"),EH=ht("├","+"),MH=ht("╯","+"),xH=ht("╰","+"),TW=ht("╭","+"),OH=ht("●","•"),PH=ht("◆","*"),IH=ht("▲","!"),RH=ht("■","x"),ol=(t)=>{switch(t){case"initial":case"active":return O("cyan",My);case"cancel":return O("red",$H);case"error":return O("yellow",kH);case"submit":return O("green",pm);case"validating":return O("dim",My)}},Ay=(t)=>{switch(t){case"initial":case"active":return O("cyan",rt);case"cancel":return O("red",rt);case"error":return O("yellow",rt);case"submit":return O("green",rt)}};function Ny(t,e){let n=[`${e?`${O("cyan",rt)} `:""}${t.join(" • ")}`];return e&&n.push(O("cyan",Cn)),n}var Iy=(t,e,n,r,i,s=!1)=>{let o=e,a=0;if(s)for(let c=r-1;c>=n;c--){let u=t[c];if(u&&(o-=u.length),a++,o<=i)break}else for(let c=n;c<r;c++){let u=t[c];if(u&&(o-=u.length),a++,o<=i)break}return{lineCount:o,removals:a}},mm=({cursor:t,options:e,style:n,output:r=process.stdout,maxItems:i=Number.POSITIVE_INFINITY,columnPadding:s=0,rowPadding:o=4})=>{let a=rl(r)-s,c=um(r),u=O("dim","..."),f=Math.max(c-o,0),l=Math.max(Math.min(i,f),5),d=0;t>=l-3&&(d=Math.max(Math.min(t-l+3,e.length-l),0));let h=l<e.length&&d>0,m=l<e.length&&d+l<e.length,p=Math.min(d+l,e.length),b=[],$=0;h&&$++,m&&$++;let k=d+(h?1:0),v=p-(m?1:0);for(let M=k;M<v;M++){let x=e[M],N=x?n(x,M===t):"",R=Xr(N,a,{hard:!0,trim:!1}).split(`
309
+ `);b.push(R),$+=R.length}if($>f){let M=0,x=0,N=$,R=t-k,T=f,_=()=>Iy(b,N,0,R,T),K=()=>Iy(b,N,R+1,b.length,T,!0);h?({lineCount:N,removals:M}=_(),N>T&&(m||(T-=1),{lineCount:N,removals:x}=K())):(m||(T-=1),{lineCount:N,removals:x}=K(),N>T&&(T-=1,{lineCount:N,removals:M}=_())),M>0&&(h=!0,b.splice(0,M)),x>0&&(m=!0,b.splice(b.length-x,x))}let S=[];h&&S.push(u);for(let M of b)for(let x of M)S.push(x);return m&&S.push(u),S};var _e=(t)=>{let e=t.active??"Yes",n=t.inactive??"No";return new lm({active:e,inactive:n,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue??!0,render(){let r=t.withGuide??Gt.withGuide,i=`${ol(this.state)} `,s=r?`${O("gray",rt)} `:"",o=Qr(t.output,t.message,s,i),a=`${r?`${O("gray",rt)}
310
310
  `:""}${o}
311
- `,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?`
312
- ${O("gray",it)}`:""}`}default:{let u=r?`${O("cyan",it)} `:"",f=r?O("cyan",Bn):"";return`${a}${u}${this.value?`${O("green",gm)} ${e}`:`${O("dim",al)} ${O("dim",e)}`}${t.vertical?r?`
313
- ${O("cyan",it)} `:`
314
- `:` ${O("dim","/")} `}${this.value?`${O("dim",al)} ${O("dim",n)}`:`${O("green",gm)} ${n}`}
311
+ `,c=this.value?e:n;switch(this.state){case"submit":{let u=r?`${O("gray",rt)} `:"";return`${a}${u}${O("dim",c)}`}case"cancel":{let u=r?`${O("gray",rt)} `:"";return`${a}${u}${O(["strikethrough","dim"],c)}${r?`
312
+ ${O("gray",rt)}`:""}`}default:{let u=r?`${O("cyan",rt)} `:"",f=r?O("cyan",Cn):"";return`${a}${u}${this.value?`${O("green",hm)} ${e}`:`${O("dim",sl)} ${O("dim",e)}`}${t.vertical?r?`
313
+ ${O("cyan",rt)} `:`
314
+ `:` ${O("dim","/")} `}${this.value?`${O("dim",sl)} ${O("dim",n)}`:`${O("green",hm)} ${n}`}
315
315
  ${f}
316
- `}}}}).prompt()};var NH=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Space:")} select`,`${O("dim","Enter:")} confirm`],Ja=(t,e)=>t.split(`
316
+ `}}}}).prompt()};var AH=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Space:")} select`,`${O("dim","Enter:")} confirm`],za=(t,e)=>t.split(`
317
317
  `).map((n)=>e(n)).join(`
318
- `),Ly=(t)=>{let e=(i,s)=>{let o=i.label??String(i.value);return s==="disabled"?`${O("gray",Iy)} ${Ja(o,(a)=>O(["strikethrough","gray"],a))}${i.hint?` ${O("dim",`(${i.hint??"disabled"})`)}`:""}`:s==="active"?`${O("cyan",SH)} ${o}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="selected"?`${O("green",Py)} ${Ja(o,(a)=>O("dim",a))}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="cancelled"?`${Ja(o,(a)=>O(["strikethrough","dim"],a))}`:s==="active-selected"?`${O("green",Py)} ${o}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="submitted"?`${Ja(o,(a)=>O("dim",a))}`:`${O("dim",Iy)} ${Ja(o,(a)=>O("dim",a))}`},n=t.required??!0,r=t.showInstructions??!0;return new mm({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.
319
- ${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??Gt.withGuide,s=ti(t.output,t.message,i?`${Ty(this.state)} `:"",`${cl(this.state)} `),o=`${i?`${O("gray",it)}
318
+ `),Ty=(t)=>{let e=(i,s)=>{let o=i.label??String(i.value);return s==="disabled"?`${O("gray",Oy)} ${za(o,(a)=>O(["strikethrough","gray"],a))}${i.hint?` ${O("dim",`(${i.hint??"disabled"})`)}`:""}`:s==="active"?`${O("cyan",vH)} ${o}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="selected"?`${O("green",xy)} ${za(o,(a)=>O("dim",a))}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="cancelled"?`${za(o,(a)=>O(["strikethrough","dim"],a))}`:s==="active-selected"?`${O("green",xy)} ${o}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:s==="submitted"?`${za(o,(a)=>O("dim",a))}`:`${O("dim",Oy)} ${za(o,(a)=>O("dim",a))}`},n=t.required??!0,r=t.showInstructions??!0;return new fm({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.
319
+ ${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??Gt.withGuide,s=Qr(t.output,t.message,i?`${Ay(this.state)} `:"",`${ol(this.state)} `),o=`${i?`${O("gray",rt)}
320
320
  `:""}${s}
321
- `,a=this.value??[],c=(u,f)=>{if(u.disabled)return e(u,"disabled");let l=a.includes(u.value);return f&&l?e(u,"active-selected"):l?e(u,"selected"):e(u,f?"active":"inactive")};switch(this.state){case"submit":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"submitted")).join(O("dim",", "))||O("dim","none"),f=ti(t.output,u,i?`${O("gray",it)} `:"");return`${o}${f}`}case"cancel":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"cancelled")).join(O("dim",", "));if(u.trim()==="")return`${o}${O("gray",it)}`;let f=ti(t.output,u,i?`${O("gray",it)} `:"");return`${o}${f}${i?`
322
- ${O("gray",it)}`:""}`}case"error":{let u=i?`${O("yellow",it)} `:"",f=this.error.split(`
323
- `).map((h,m)=>m===0?`${i?`${O("yellow",Bn)} `:""}${O("yellow",h)}`:` ${h}`).join(`
321
+ `,a=this.value??[],c=(u,f)=>{if(u.disabled)return e(u,"disabled");let l=a.includes(u.value);return f&&l?e(u,"active-selected"):l?e(u,"selected"):e(u,f?"active":"inactive")};switch(this.state){case"submit":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"submitted")).join(O("dim",", "))||O("dim","none"),f=Qr(t.output,u,i?`${O("gray",rt)} `:"");return`${o}${f}`}case"cancel":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"cancelled")).join(O("dim",", "));if(u.trim()==="")return`${o}${O("gray",rt)}`;let f=Qr(t.output,u,i?`${O("gray",rt)} `:"");return`${o}${f}${i?`
322
+ ${O("gray",rt)}`:""}`}case"error":{let u=i?`${O("yellow",rt)} `:"",f=this.error.split(`
323
+ `).map((h,m)=>m===0?`${i?`${O("yellow",Cn)} `:""}${O("yellow",h)}`:` ${h}`).join(`
324
324
  `),l=o.split(`
325
325
  `).length,d=f.split(`
326
- `).length+1;return`${o}${u}${bm({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:l+d,style:c}).join(`
326
+ `).length+1;return`${o}${u}${mm({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:l+d,style:c}).join(`
327
327
  ${u}`)}
328
328
  ${f}
329
- `}default:{let u=i?`${O("cyan",it)} `:"",f=o.split(`
330
- `).length,l=r?Hy(NH,i):i?[O("cyan",Bn)]:[],d=l.join(`
331
- `),h=l.length+1;return`${o}${u}${bm({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:f+h,style:c}).join(`
329
+ `}default:{let u=i?`${O("cyan",rt)} `:"",f=o.split(`
330
+ `).length,l=r?Ny(AH,i):i?[O("cyan",Cn)]:[],d=l.join(`
331
+ `),h=l.length+1;return`${o}${u}${mm({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:f+h,style:c}).join(`
332
332
  ${u}`)}
333
333
  ${d}
334
- `}}}}).prompt()};var wr={message:(t=[],{symbol:e=O("gray",it),secondarySymbol:n=O("gray",it),output:r=process.stdout,spacing:i=1,withGuide:s}={})=>{let o=[],a=s??Gt.withGuide,c=a?n:"",u=a?`${e} `:"",f=a?`${n} `:"";for(let d=0;d<i;d++)o.push(c);let l=Array.isArray(t)?t:t.split(`
334
+ `}}}}).prompt()};var ti={message:(t=[],{symbol:e=O("gray",rt),secondarySymbol:n=O("gray",rt),output:r=process.stdout,spacing:i=1,withGuide:s}={})=>{let o=[],a=s??Gt.withGuide,c=a?n:"",u=a?`${e} `:"",f=a?`${n} `:"";for(let d=0;d<i;d++)o.push(c);let l=Array.isArray(t)?t:t.split(`
335
335
  `);if(l.length>0){let[d,...h]=l;d.length>0?o.push(`${u}${d}`):o.push(a?e:"");for(let m of h)m.length>0?o.push(`${f}${m}`):o.push(a?n:"")}r.write(`${o.join(`
336
336
  `)}
337
- `)},info:(t,e)=>{wr.message(t,{...e,symbol:O("blue",PH)})},success:(t,e)=>{wr.message(t,{...e,symbol:O("green",IH)})},step:(t,e)=>{wr.message(t,{...e,symbol:O("green",wm)})},warn:(t,e)=>{wr.message(t,{...e,symbol:O("yellow",RH)})},warning:(t,e)=>{wr.warn(t,e)},error:(t,e)=>{wr.message(t,{...e,symbol:O("red",AH)})}},ei=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Gt.withGuide?`${O("gray",Bn)} `:"";n.write(`${r}${O("red",t)}
337
+ `)},info:(t,e)=>{ti.message(t,{...e,symbol:O("blue",OH)})},success:(t,e)=>{ti.message(t,{...e,symbol:O("green",PH)})},step:(t,e)=>{ti.message(t,{...e,symbol:O("green",pm)})},warn:(t,e)=>{ti.message(t,{...e,symbol:O("yellow",IH)})},warning:(t,e)=>{ti.warn(t,e)},error:(t,e)=>{ti.message(t,{...e,symbol:O("red",RH)})}},ei=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Gt.withGuide?`${O("gray",Cn)} `:"";n.write(`${r}${O("red",t)}
338
338
 
339
- `)},ul=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Gt.withGuide?`${O("gray",vH)} `:"";n.write(`${r}${t}
340
- `)},Ya=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Gt.withGuide?`${O("gray",it)}
341
- ${O("gray",Bn)} `:"";n.write(`${r}${t}
339
+ `)},al=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Gt.withGuide?`${O("gray",yH)} `:"";n.write(`${r}${t}
340
+ `)},Da=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Gt.withGuide?`${O("gray",rt)}
341
+ ${O("gray",Cn)} `:"";n.write(`${r}${t}
342
342
 
343
- `)};var TH=(t)=>t,HH=(t,e,n)=>{let r={hard:!0,trim:!1},i=Qr(t,e,r).split(`
344
- `),s=i.reduce((c,u)=>Math.max(B(u),c),0),o=i.map(n).reduce((c,u)=>Math.max(B(u),c),0),a=e-(o-s);return Qr(t,a,r)},Gn=(t="",e="",n)=>{let r=n?.output??Qe.stdout,i=n?.withGuide??Gt.withGuide,s=n?.format??TH,o=["",...HH(t,sl(r)-6,s).split(`
345
- `).map(s),""],a=B(e),c=Math.max(o.reduce((d,h)=>{let m=B(h);return m>d?m:d},0),a)+2,u=o.map((d)=>`${O("gray",it)} ${d}${" ".repeat(c-B(d))}${O("gray",it)}`).join(`
346
- `),f=i?`${O("gray",it)}
347
- `:"",l=i?MH:OH;r.write(`${f}${O("green",wm)} ${O("reset",e)} ${O("gray",Ry.repeat(Math.max(c-a-1,1))+EH)}
343
+ `)};var NH=(t)=>t,TH=(t,e,n)=>{let r={hard:!0,trim:!1},i=Xr(t,e,r).split(`
344
+ `),s=i.reduce((c,u)=>Math.max(B(u),c),0),o=i.map(n).reduce((c,u)=>Math.max(B(u),c),0),a=e-(o-s);return Xr(t,a,r)},jn=(t="",e="",n)=>{let r=n?.output??Xe.stdout,i=n?.withGuide??Gt.withGuide,s=n?.format??NH,o=["",...TH(t,rl(r)-6,s).split(`
345
+ `).map(s),""],a=B(e),c=Math.max(o.reduce((d,h)=>{let m=B(h);return m>d?m:d},0),a)+2,u=o.map((d)=>`${O("gray",rt)} ${d}${" ".repeat(c-B(d))}${O("gray",rt)}`).join(`
346
+ `),f=i?`${O("gray",rt)}
347
+ `:"",l=i?EH:xH;r.write(`${f}${O("green",pm)} ${O("reset",e)} ${O("gray",Py.repeat(Math.max(c-a-1,1))+SH)}
348
348
  ${u}
349
- ${O("gray",l+Ry.repeat(c+2)+xH)}
350
- `)};var CW={light:mt("─","-"),heavy:mt("━","="),block:mt("█","#")};var LH=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Enter:")} confirm`],ol=(t,e)=>t.includes(`
349
+ ${O("gray",l+Py.repeat(c+2)+MH)}
350
+ `)};var HW={light:ht("─","-"),heavy:ht("━","="),block:ht("█","#")};var HH=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Enter:")} confirm`],il=(t,e)=>t.includes(`
351
351
  `)?t.split(`
352
352
  `).map((n)=>e(n)).join(`
353
- `):e(t),$m=(t)=>{let e=(r,i)=>{if(r===void 0)return"";let s=r.label??String(r.value);switch(i){case"disabled":return`${O("gray",al)} ${ol(s,(o)=>O("gray",o))}${r.hint?` ${O("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${ol(s,(o)=>O("dim",o))}`;case"active":return`${O("green",gm)} ${s}${r.hint?` ${O("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${ol(s,(o)=>O(["strikethrough","dim"],o))}`;default:return`${O("dim",al)} ${ol(s,(o)=>O("dim",o))}`}},n=t.showInstructions??!0;return new xy({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,render(){let r=t.withGuide??Gt.withGuide,i=`${cl(this.state)} `,s=`${Ty(this.state)} `,o=ti(t.output,t.message,s,i),a=`${r?`${O("gray",it)}
353
+ `):e(t),gm=(t)=>{let e=(r,i)=>{if(r===void 0)return"";let s=r.label??String(r.value);switch(i){case"disabled":return`${O("gray",sl)} ${il(s,(o)=>O("gray",o))}${r.hint?` ${O("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${il(s,(o)=>O("dim",o))}`;case"active":return`${O("green",hm)} ${s}${r.hint?` ${O("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${il(s,(o)=>O(["strikethrough","dim"],o))}`;default:return`${O("dim",sl)} ${il(s,(o)=>O("dim",o))}`}},n=t.showInstructions??!0;return new Ey({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,render(){let r=t.withGuide??Gt.withGuide,i=`${ol(this.state)} `,s=`${Ay(this.state)} `,o=Qr(t.output,t.message,s,i),a=`${r?`${O("gray",rt)}
354
354
  `:""}${o}
355
- `;switch(this.state){case"submit":{let c=r?`${O("gray",it)} `:"",u=ti(t.output,e(this.options[this.cursor],"selected"),c);return`${a}${u}`}case"cancel":{let c=r?`${O("gray",it)} `:"",u=ti(t.output,e(this.options[this.cursor],"cancelled"),c);return`${a}${u}${r?`
356
- ${O("gray",it)}`:""}`}default:{let c=r?`${O("cyan",it)} `:"",u=a.split(`
357
- `).length,f=n?Hy(LH,r):r?[O("cyan",Bn)]:[],l=f.join(`
358
- `),d=f.length+1;return`${a}${c}${bm({output:t.output,cursor:this.cursor,options:this.options,maxItems:t.maxItems,columnPadding:c.length,rowPadding:u+d,style:(h,m)=>e(h,h.disabled?"disabled":m?"active":"inactive")}).join(`
355
+ `;switch(this.state){case"submit":{let c=r?`${O("gray",rt)} `:"",u=Qr(t.output,e(this.options[this.cursor],"selected"),c);return`${a}${u}`}case"cancel":{let c=r?`${O("gray",rt)} `:"",u=Qr(t.output,e(this.options[this.cursor],"cancelled"),c);return`${a}${u}${r?`
356
+ ${O("gray",rt)}`:""}`}default:{let c=r?`${O("cyan",rt)} `:"",u=a.split(`
357
+ `).length,f=n?Ny(HH,r):r?[O("cyan",Cn)]:[],l=f.join(`
358
+ `),d=f.length+1;return`${a}${c}${mm({output:t.output,cursor:this.cursor,options:this.options,maxItems:t.maxItems,columnPadding:c.length,rowPadding:u+d,style:(h,m)=>e(h,h.disabled?"disabled":m?"active":"inactive")}).join(`
359
359
  ${c}`)}
360
360
  ${l}
361
- `}}}}).prompt()};var jW=`${O("gray",it)} `;var km=(t)=>new pm({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??Gt.withGuide,n=`${`${e?`${O("gray",it)}
362
- `:""}${cl(this.state)} `}${t.message}
363
- `,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,s=this.value??"";switch(this.state){case"validating":{let o=e?`${O("cyan",it)} `:"",a=e?O("cyan",Bn):"",c=O("dim",i),u=O("dim","Validating...");return`${n}${o}${c}
361
+ `}}}}).prompt()};var FW=`${O("gray",rt)} `;var bm=(t)=>new dm({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??Gt.withGuide,n=`${`${e?`${O("gray",rt)}
362
+ `:""}${ol(this.state)} `}${t.message}
363
+ `,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,s=this.value??"";switch(this.state){case"validating":{let o=e?`${O("cyan",rt)} `:"",a=e?O("cyan",Cn):"",c=O("dim",i),u=O("dim","Validating...");return`${n}${o}${c}
364
364
  ${a} ${u}
365
- `}case"error":{let o=this.error?` ${O("yellow",this.error)}`:"",a=e?`${O("yellow",it)} `:"",c=e?O("yellow",Bn):"";return`${n.trim()}
365
+ `}case"error":{let o=this.error?` ${O("yellow",this.error)}`:"",a=e?`${O("yellow",rt)} `:"",c=e?O("yellow",Cn):"";return`${n.trim()}
366
366
  ${a}${i}
367
367
  ${c}${o}
368
- `}case"submit":{let o=s?`${e?" ":""}${O("dim",s)}`:"",a=e?O("gray",it):"";return`${n}${a}${o}`}case"cancel":{let o=s?` ${O(["strikethrough","dim"],s)}`:"",a=e?O("gray",it):"";return`${n}${a}${o}${s.trim()?`
369
- ${a}`:""}`}default:{let o=e?`${O("cyan",it)} `:"",a=e?O("cyan",Bn):"";return`${n}${o}${i}
368
+ `}case"submit":{let o=s?`${e?" ":""}${O("dim",s)}`:"",a=e?O("gray",rt):"";return`${n}${a}${o}`}case"cancel":{let o=s?` ${O(["strikethrough","dim"],s)}`:"",a=e?O("gray",rt):"";return`${n}${a}${o}${s.trim()?`
369
+ ${a}`:""}`}default:{let o=e?`${O("cyan",rt)} `:"",a=e?O("cyan",Cn):"";return`${n}${o}${i}
370
370
  ${a}
371
- `}}}}).prompt();import{readFileSync as YF}from"node:fs";import{join as VF}from"node:path";import{existsSync as Rp,mkdirSync as zv,readFileSync as Dv,statSync as CF,utimesSync as jF}from"node:fs";import{homedir as _F}from"node:os";import{dirname as BF,join as Wv}from"node:path";function ll(t){if(t.length>0&&process.stderr.isTTY)process.stderr.write(`${t.join(`
371
+ `}}}}).prompt();import{readFileSync as JL}from"node:fs";import{join as YL}from"node:path";import{existsSync as Op,mkdirSync as Wv,readFileSync as Kv,statSync as LL,utimesSync as CL}from"node:fs";import{homedir as jL}from"node:os";import{dirname as _L,join as Gv}from"node:path";function cl(t){if(t.length>0&&process.stderr.isTTY)process.stderr.write(`${t.join(`
372
372
  `)}
373
- `)}import{existsSync as Fl,readFileSync as hv,rmSync as kp}from"node:fs";import{homedir as vn}from"node:os";import{join as Bo}from"node:path";var Fy=44,Vt=[{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 ts(t){let e=Vt.length;return Vt[(t%e+e)%e]}function xo(t,e){let n=t.split("«"),r=n[0]?[[n[0],""]]:[];for(let i of n.slice(1)){let s=i.indexOf("»"),o=i.slice(0,s),a=i.slice(s+1);if(o==="w"||o==="n"){if(o==="w"!==e>=44)return}if(a)r.push([a,o==="w"||o==="n"?"":o])}return r}import{createHash as KH}from"node:crypto";import{existsSync as hl,readFileSync as Pm,rmSync as By}from"node:fs";import{homedir as Gy}from"node:os";import{join as es}from"node:path";function ni(t){return[`# ${t.name} — ${re(t)}${t.native?` (${t.native})`:""}`,`# ANSI: ${t.ansiSource}`]}function $r(t,e){return[`[${t}]`,`Color=${ct(e).join(",")}`,""]}function ym(t,e,n=["Wallpaper="]){let r=(i)=>Nt(i,t.background,0.5);return[...$r("Background",t.background),...$r("BackgroundFaint",t.background),...$r("BackgroundIntense",t.background),...t.ansi.slice(0,8).flatMap((i,s)=>[...$r(`Color${s}`,i),...$r(`Color${s}Faint`,r(i)),...$r(`Color${s}Intense`,t.ansi[s+8])]),...$r("Foreground",t.foreground),...$r("ForegroundFaint",r(t.foreground)),...$r("ForegroundIntense",t.foreground),"[General]","Blur=false","ColorRandomization=false",`Description=${e}`,"Opacity=1",...n,""]}var Cy={left:"0",top:"0",center:"0.5",right:"1",bottom:"1"};function FH(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=${Cy[n]??"0.5"},${Cy[e]??"0.5"}`,`WallpaperOpacity=${t.opacity}`]}function vm(t,e){return[...ni(t),"",...ym(t,`ttheme · ${t.name}`,FH(e))].join(`
374
- `)}var Sm={id:"konsole",limits:"draws no OSC 4, so a tab repaints by switching color scheme",emit(t){return[{path:`konsole/${_(t.name)}.colorscheme`,content:vm(t)}]}};import{openSync as CH,writeSync as jH}from"node:fs";import{ReadStream as _H}from"node:tty";var wn=["11","10","12","17",...Array.from({length:16},(t,e)=>`4;${e}`)];function Ct(t=process.env){return Boolean(t.NO_COLOR)||t.TERM==="dumb"}function BH(t,e){return`\x1B]${wn[t]};${e}\x1B\\`}function kr(t,e){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi].map((n,r)=>e&&!e.includes(r)?"":BH(r,n)).join("")}function GH(t){return`\x1B]${t.startsWith("4;")?`104;${t.slice(2)}`:`1${t}`}\x1B\\`}function UH(t){let e=new Map;for(let n of t.split("\x1B")){let r=n.match(/^\](\d+(?:;\d+)?);(rgba?:[0-9a-fA-F/]+)/),[,i,s]=r??[];if(i&&s)e.set(i,s)}return e}function jy(t){return`#${t.slice(t.indexOf(":")+1).split("/").slice(0,3).map((n)=>n.slice(0,2).padStart(2,"0")).join("")}`}function _y(t){return wn.map((e)=>{let n=t.get(e);return n?jy(n):void 0})}function fl(t,e=[...t.keys()],n=!1){return e.map((r)=>{let i=t.get(r);return i?`\x1B]${r};${n?jy(i):i}\x1B\\`:GH(r)}).join("")}function dl(t,e){return`\x1B]50;ColorScheme=${t};UseCustomCursorColor=true;customCursorColor=${e}\x07`}function Em(t=wn,e="\x1B[5n"){return`${t.map((n)=>`\x1B]${n};?\x1B\\`).join("")}${e}`}function WH(t){return t.includes("\x1B[0n")}async function Mm(t=wn){let e,n;try{e=CH("/dev/tty","r+"),n=new _H(e),n.setRawMode(!0)}catch{return new Map}try{jH(e,Em(t));let r="";return await new Promise((i)=>{let s=setTimeout(i,120);n.on("data",(o)=>{if(r+=o.toString(),WH(r))clearTimeout(s),i()})}),UH(r)}finally{n.setRawMode(!1),n.destroy()}}function Im(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 Zt(t){if(Im(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 Ee={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 xm(t,e,n){let r="";for(let i of t.split(`
375
- `)){let s=i.trim();if(s.startsWith("[")&&s.endsWith("]"))r=s.slice(1,-1);else if(r===e&&s.startsWith(`${n}=`))return s.slice(n.length+1)}return}function zH(t){let e=t.XDG_CONFIG_HOME??es(Gy(),".config"),n=es(e,"konsolerc"),r=hl(n)?xm(Pm(n,"utf8"),"Desktop Entry","DefaultProfile"):void 0;for(let i=0;i<8&&r&&r!=="FALLBACK/";i++){let s=r.endsWith(".profile")?r:`${r}.profile`,o=zy(t).map((u)=>es(u,s)).find((u)=>hl(u));if(!o)return!1;let a=Pm(o,"utf8"),c=xm(a,"Interaction Options","AllowEscapedLinks");if(c!==void 0)return c==="true";r=xm(a,"General","Parent")}return!1}function Uy(t){let e=Zt(t);return e==="konsole"?zH(t):Ee[e].links}function Oo(t,e){let n=Zt(t),r=Ee[n];return r.pictures&&!t.TMUX&&(!r.views||e.includes(n))}function ml(t){return Ee[Zt(t)].bands}function pl(t){return Ee[Zt(t)].files}function Po(t){return Ee[Zt(t)].layers}function Wy(t){return Ee[Zt(t)].moves}function Ky(t){return Ee[Zt(t)].wipes===!0}function ns(t){return Ee[Zt(t)].views===!0}function rs(t){return`\x1B]1337;SetUserVar=ttheme_view=${Buffer.from(t).toString("base64")}\x07`}var is="\x1B[H\x1B[K\x1B[2H\x1B[J\x1B[H",Rm=120,Om=4,DH=40;function qH(t){let e=t.TTHEME_ITERM_SHOWN;return t.TTHEME_ITERM_SWITCH==="1"&&t.TTHEME_ITERM_DYED==="0"&&e?`ttheme · ${e}`:void 0}function JH(t,e){let n=Ee.iterm2.repaint??[],r=[...wn.keys()].filter((c)=>!n.includes(c)),i=new Set(n),s=qH(t),o=[],a=()=>{for(let c of o)clearTimeout(c);o=[]};return{slots:n,paint(c){a();for(let u=0;u<r.length;u+=Om){let f=r.slice(u,u+Om),l=setTimeout(()=>{for(let d of f)i.add(d);e(kr(c,f))},Rm+u/Om*DH);l.unref?.(),o.push(l)}return kr(c,n)},wear:(c)=>kr(c),saved:()=>Mm(),restore(c){a();let u=wn.filter((f,l)=>i.has(l));return s?`\x1B[?2026h${fl(new Map,u)}\x1B]1337;SetProfile=${s}\x07\x1B[?2026l`:fl(c,u)},stop:a}}var YH=3,VH=/^(Wallpaper|FillStyle|Anchor|WallpaperOpacity|WallpaperFlipType)=/;function zy(t){return[t.XDG_DATA_HOME??es(Gy(),".local","share"),...(t.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((e)=>es(e,"konsole"))}function ZH(t,e){let n=/(?:^|;)ColorScheme=([^;]+)/.exec(e)?.[1],r=n&&t.map((c)=>es(c,`${n}.colorscheme`)).find((c)=>hl(c));if(!r)return["Wallpaper="];let i=Pm(r,"utf8").split(`
376
- `),s=i.findIndex((c)=>c.trim()==="[General]"),o=i.findIndex((c,u)=>u>s&&c.trimStart().startsWith("[")),a=s<0?[]:i.slice(s+1,o<0?void 0:o).filter((c)=>VH.test(c));return a.length>0?a:["Wallpaper="]}function XH(t,e){let n=zy(t),r=n[0],i=ZH(n,e),s=[],o=(c,u,f)=>{let l=ym(u,`ttheme · ${c}`,i).join(`
377
- `),d=`${_("view")}.${KH("sha1").update(l).digest("hex").slice(0,10)}`,h=es(r,`${d}.colorscheme`);if(!hl(h))H(h,l);if(!s.includes(h))s.push(h);for(let m of s.splice(0,Math.max(0,s.length-YH)))By(m,{force:!0});return dl(d,f)},a=()=>{for(let c of s.splice(0))By(c,{force:!0})};return{slots:[],paint:(c)=>o(c.name,c,c.cursor),wear:(c,u)=>u.includes("konsole")?dl(_(c.name),c.cursor):void 0,saved:async()=>new Map,restore:()=>{return a(),`\x1B]50;${e}\x07`},stop:a}}function Dy(t,e,n=(r)=>{process.stdout.write(r)}){let r=Zt(t),i=Ee[r];if(!e||Ct(t)||t.TMUX||!i.paints)return;if(r==="iterm2")return JH(t,n);if(r==="konsole"&&t.TTHEME_KONSOLE_LOOK)return XH(t,t.TTHEME_KONSOLE_LOOK);let s=i.repaint??[...wn.keys()],o=wn.filter((a,c)=>s.includes(c));return{slots:s,paint:(a)=>kr(a,s),wear:(a,c)=>!i.schemes?kr(a):c.includes(r)?dl(_(a.name),a.cursor):void 0,saved:()=>Mm(o),restore:(a)=>fl(a,o,i.hex===!0)}}var se=["ghostty","kitty","alacritty","wezterm","iterm2","windows-terminal","warp","konsole","terminal-app"];var QH=[{section:"tab",title:"This tab"},{section:"startup",title:"New tabs"},{section:"palettes",title:"Palettes"},{section:"own",title:"Your own"},{section:"setup",title:"Setup"},{section:"support",title:"Support"}],Ro=[{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 as a file tree — the pinned directories 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 marketplaces in a live picker — one list with every marketplace as a row, which ctrl+s narrows to one marketplace at a time",section:"palettes",hidden:!0},{name:"list",args:["[query]"],about:"List palettes, marking what is installed",section:"palettes",flags:{json:{type:"boolean",about:"Print the matches as JSON — name, group, catalog, installed"}}},{name:"add",args:["<palette...>"],about:"Install palettes — from your marketplaces, or from a share link: ttheme add https://ttheme.vercel.app/p/tt2:…",section:"palettes",flags:{marketplace:{type:"string",value:"<source>",about:"Add this marketplace first — a repository, a folder or official — and take bare palette names from it"}}},{name:"remove",args:["<palette...>"],about:"Uninstall palettes",section:"palettes"},{name:"update",args:["[marketplace...]"],about:"Update ttheme and refresh your marketplaces — official palettes come with ttheme; an installed palette from another marketplace keeps its colors until ctrl+r on it in Browse takes its update",section:"palettes"},{name:"marketplace",args:["[action]","[source]"],about:"The marketplaces you added — add, remove and search them; init makes one of your own",actions:[["(none)","List the marketplaces you added — their palettes, auto-update and last update"],["add <source>","Add a marketplace — a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official; asks whether it updates on its own"],["remove <marketplace>","Drop one by its name (alice@pastel) — the palettes you installed from it keep working"],["search [query]","The marketplaces on GitHub with the ttheme-marketplace topic, listed every half hour — a query matches names, palettes and descriptions"],["init [name]","Make a marketplace of your own — <you>@<name>, in ~/.config/ttheme/marketplace/<name> or a folder you give"],["check [dir]","Check a marketplace's folder before you push it — ttheme-marketplace.toml, every palette, the renames and the gate; nothing is written"]],section:"palettes"},{name:"new",args:["<name>"],about:"Make a palette of your own in the palette editor — <you>@<marketplace>/<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:"<marketplace>",about:"The local marketplace to put it in — when you have more than one"}}},{name:"edit",args:["[palette]"],about:"Change a palette in the palette editor — your own in its file, any other as your tone over its marketplace's colors, which R and s in the editor put back; with none named, asks to edit the one this tab wears",section:"own"},{name:"check",args:["[palette]"],about:"Measure a palette against the contrast gate — where it misses, suggest colors that pass; with none named, asks to check the one this tab wears",section:"own",flags:{fix:{type:"boolean",about:"Write the suggested colors into your palette"}}},{name:"share",args:["[palette]"],about:"Print a share link and its QR code — the page shows the palette, and ttheme add <link> installs it anywhere, pictures included; with none named, asks to share the one this tab wears — or shares it without asking when the link goes to a pipe",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:se,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 where preview's tuning puts it — preview calls this for a size the terminal cannot scale and for the bands iTerm2 shows",section:"setup",hidden:!0},{name:"tone",args:["<palette>","<action>","[width]"],about:"Print a palette's colors for preview's panel at its width, open them in the palette editor, or reset them to its marketplace's — preview calls this",section:"setup",hidden:!0},{name:"sync",args:[],about:"Write every wired terminal's config again from what is installed and config.zsh — ttheme config and preview call this when TTHEME_TAB_PALETTE changed",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 tL(t){let e=Object.entries(t.flags??{}).map(([n,{value:r}])=>`[--${n}${r?` ${r}`:""}]`);return[t.name,...e,...t.args].join(" ")}function Io(t,e=eL){return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}function qy(t){return t.split(" — ")[0]}function Yy(t){return Object.entries(t.flags??{}).map(([e,{short:n,value:r,about:i}])=>[`${n?`-${n}, `:""}--${e}${r?` ${r}`:""}`,i])}function Vy(t,e){let n=e?[...t.actions??[],...Yy(t)]:[];return[[[t.name,...t.args].join(" "),qy(t.about)],...n.map(([r,i])=>[` ${r}`,qy(i)])]}var Zy=[`ttheme ${dt.version}`,dt.description,"Usage: ttheme <command> [options] [args]"],Xy=[["ttheme help","Every command"],["ttheme help all","Every command with its options, and examples"],["ttheme help <command>","One command in full"]],Qy=[["-h, --help","Show help — after a command, that command's"],["-v, --version","Print the version"]],eL=Math.max(...[...Xy,...Qy,...Ro.filter((t)=>!t.hidden).flatMap((t)=>Vy(t,!0))].map(([t])=>t.length)),Jy=[["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 Magica catalog as JSON"],["ttheme marketplace add alice/ttheme-pastel","alice's marketplace, alice@pastel — ttheme add alice@pastel/dusk"],["ttheme add dusk --marketplace alice/ttheme-pastel","The same in one step"],["ttheme new rei --from rei","Your own rei, <you>@<marketplace>/rei, to edit and share"]];function t1(){return[...Zy,"","Use --help to list every command, or init to set ttheme up"].join(`
378
- `)}function Am(t){let e=Yy(t);return[`Usage: ttheme ${tL(t)}`,"",t.about,...t.actions?["","Actions:",...Io(t.actions)]:[],...e.length>0?["","Options:",...Io(e)]:[]].join(`
379
- `)}function Za(t,e=!1){let n=Ro.filter((i)=>!i.hidden&&!(e&&i.section==="setup")),r=QH.filter(({section:i})=>n.some((s)=>s.section===i));return[...Zy,"ttheme alone opens Preview and Browse as tabs — tab and shift+tab move between them","","Getting help:",...Io(Xy),"","Global options:",...Io(Qy),...r.flatMap(({section:i,title:s})=>["",`${s}:`,...Io(n.filter((o)=>o.section===i).flatMap((o)=>Vy(o,t)))]),...t?["","Examples:",...Io(Jy,Math.max(...Jy.map(([i])=>i.length)))]:[],"","https://ttheme.vercel.app"].join(`
380
- `)}import{readFileSync as nL}from"node:fs";import{join as rL}from"node:path";var Nm="# ttheme begin",Tm="# ttheme end",ss=/# ttheme begin\n[\s\S]*?# ttheme end\n?/,Me="Managed by ttheme — npx @kecan0406/ttheme@latest uninstall takes it out",Un="Generated by ttheme — rewritten on every add, remove and default; do not edit.";function ri(t,e,n){return t.startsWith(`${e}/`)?`${n}${t.slice(e.length)}`:void 0}function ii(t,e){let n=`${Nm}
373
+ `)}import{existsSync as Hl,readFileSync as fv,rmSync as bp}from"node:fs";import{homedir as $n}from"node:os";import{join as Co}from"node:path";var Hy=44,Vt=[{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 Xi(t){let e=Vt.length;return Vt[(t%e+e)%e]}function So(t,e){let n=t.split("«"),r=n[0]?[[n[0],""]]:[];for(let i of n.slice(1)){let s=i.indexOf("»"),o=i.slice(0,s),a=i.slice(s+1);if(o==="w"||o==="n"){if(o==="w"!==e>=44)return}if(a)r.push([a,o==="w"||o==="n"?"":o])}return r}import{createHash as WH}from"node:crypto";import{existsSync as fl,readFileSync as Mm,rmSync as jy}from"node:fs";import{homedir as _y}from"node:os";import{join as Qi}from"node:path";function ni(t){return[`# ${t.name} — ${re(t)}${t.native?` (${t.native})`:""}`,`# ANSI: ${t.ansiSource}`]}function br(t,e){return[`[${t}]`,`Color=${st(e).join(",")}`,""]}function wm(t,e,n=["Wallpaper="]){let r=(i)=>Nt(i,t.background,0.5);return[...br("Background",t.background),...br("BackgroundFaint",t.background),...br("BackgroundIntense",t.background),...t.ansi.slice(0,8).flatMap((i,s)=>[...br(`Color${s}`,i),...br(`Color${s}Faint`,r(i)),...br(`Color${s}Intense`,t.ansi[s+8])]),...br("Foreground",t.foreground),...br("ForegroundFaint",r(t.foreground)),...br("ForegroundIntense",t.foreground),"[General]","Blur=false","ColorRandomization=false",`Description=${e}`,"Opacity=1",...n,""]}var Fy={left:"0",top:"0",center:"0.5",right:"1",bottom:"1"};function FH(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=${Fy[n]??"0.5"},${Fy[e]??"0.5"}`,`WallpaperOpacity=${t.opacity}`]}function $m(t,e){return[...ni(t),"",...wm(t,`ttheme · ${t.name}`,FH(e))].join(`
374
+ `)}var km={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:$m(t)}]}};import{openSync as LH,writeSync as CH}from"node:fs";import{ReadStream as jH}from"node:tty";var pn=["11","10","12","17",...Array.from({length:16},(t,e)=>`4;${e}`)];function Lt(t=process.env){return Boolean(t.NO_COLOR)||t.TERM==="dumb"}function _H(t,e){return`\x1B]${pn[t]};${e}\x1B\\`}function wr(t,e){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi].map((n,r)=>e&&!e.includes(r)?"":_H(r,n)).join("")}function BH(t){return`\x1B]${t.startsWith("4;")?`104;${t.slice(2)}`:`1${t}`}\x1B\\`}function GH(t){let e=new Map;for(let n of t.split("\x1B")){let r=n.match(/^\](\d+(?:;\d+)?);(rgba?:[0-9a-fA-F/]+)/),[,i,s]=r??[];if(i&&s)e.set(i,s)}return e}function Ly(t){return`#${t.slice(t.indexOf(":")+1).split("/").slice(0,3).map((n)=>n.slice(0,2).padStart(2,"0")).join("")}`}function Cy(t){return pn.map((e)=>{let n=t.get(e);return n?Ly(n):void 0})}function ul(t,e=[...t.keys()],n=!1){return e.map((r)=>{let i=t.get(r);return i?`\x1B]${r};${n?Ly(i):i}\x1B\\`:BH(r)}).join("")}function ll(t,e){return`\x1B]50;ColorScheme=${t};UseCustomCursorColor=true;customCursorColor=${e}\x07`}function ym(t=pn,e="\x1B[5n"){return`${t.map((n)=>`\x1B]${n};?\x1B\\`).join("")}${e}`}function UH(t){return t.includes("\x1B[0n")}async function vm(t=pn){let e,n;try{e=LH("/dev/tty","r+"),n=new jH(e),n.setRawMode(!0)}catch{return new Map}try{CH(e,ym(t));let r="";return await new Promise((i)=>{let s=setTimeout(i,120);n.on("data",(o)=>{if(r+=o.toString(),UH(r))clearTimeout(s),i()})}),GH(r)}finally{n.setRawMode(!1),n.destroy()}}function xm(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 Zt(t){if(xm(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 Ee={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 Sm(t,e,n){let r="";for(let i of t.split(`
375
+ `)){let s=i.trim();if(s.startsWith("[")&&s.endsWith("]"))r=s.slice(1,-1);else if(r===e&&s.startsWith(`${n}=`))return s.slice(n.length+1)}return}function KH(t){let e=t.XDG_CONFIG_HOME??Qi(_y(),".config"),n=Qi(e,"konsolerc"),r=fl(n)?Sm(Mm(n,"utf8"),"Desktop Entry","DefaultProfile"):void 0;for(let i=0;i<8&&r&&r!=="FALLBACK/";i++){let s=r.endsWith(".profile")?r:`${r}.profile`,o=Wy(t).map((u)=>Qi(u,s)).find((u)=>fl(u));if(!o)return!1;let a=Mm(o,"utf8"),c=Sm(a,"Interaction Options","AllowEscapedLinks");if(c!==void 0)return c==="true";r=Sm(a,"General","Parent")}return!1}function By(t){let e=Zt(t);return e==="konsole"?KH(t):Ee[e].links}function Eo(t,e){let n=Zt(t),r=Ee[n];return r.pictures&&!t.TMUX&&(!r.views||e.includes(n))}function dl(t){return Ee[Zt(t)].bands}function hl(t){return Ee[Zt(t)].files}function Mo(t){return Ee[Zt(t)].layers}function Gy(t){return Ee[Zt(t)].moves}function Uy(t){return Ee[Zt(t)].wipes===!0}function ts(t){return Ee[Zt(t)].views===!0}function es(t){return`\x1B]1337;SetUserVar=ttheme_view=${Buffer.from(t).toString("base64")}\x07`}var ns="\x1B[H\x1B[K\x1B[2H\x1B[J\x1B[H",Om=120,Em=4,zH=40;function DH(t){let e=t.TTHEME_ITERM_SHOWN;return t.TTHEME_ITERM_SWITCH==="1"&&t.TTHEME_ITERM_DYED==="0"&&e?`ttheme · ${e}`:void 0}function qH(t,e){let n=Ee.iterm2.repaint??[],r=[...pn.keys()].filter((c)=>!n.includes(c)),i=new Set(n),s=DH(t),o=[],a=()=>{for(let c of o)clearTimeout(c);o=[]};return{slots:n,paint(c){a();for(let u=0;u<r.length;u+=Em){let f=r.slice(u,u+Em),l=setTimeout(()=>{for(let d of f)i.add(d);e(wr(c,f))},Om+u/Em*zH);l.unref?.(),o.push(l)}return wr(c,n)},wear:(c)=>wr(c),saved:()=>vm(),restore(c){a();let u=pn.filter((f,l)=>i.has(l));return s?`\x1B[?2026h${ul(new Map,u)}\x1B]1337;SetProfile=${s}\x07\x1B[?2026l`:ul(c,u)},stop:a}}var JH=3,YH=/^(Wallpaper|FillStyle|Anchor|WallpaperOpacity|WallpaperFlipType)=/;function Wy(t){return[t.XDG_DATA_HOME??Qi(_y(),".local","share"),...(t.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((e)=>Qi(e,"konsole"))}function VH(t,e){let n=/(?:^|;)ColorScheme=([^;]+)/.exec(e)?.[1],r=n&&t.map((c)=>Qi(c,`${n}.colorscheme`)).find((c)=>fl(c));if(!r)return["Wallpaper="];let i=Mm(r,"utf8").split(`
376
+ `),s=i.findIndex((c)=>c.trim()==="[General]"),o=i.findIndex((c,u)=>u>s&&c.trimStart().startsWith("[")),a=s<0?[]:i.slice(s+1,o<0?void 0:o).filter((c)=>YH.test(c));return a.length>0?a:["Wallpaper="]}function ZH(t,e){let n=Wy(t),r=n[0],i=VH(n,e),s=[],o=(c,u,f)=>{let l=wm(u,`ttheme · ${c}`,i).join(`
377
+ `),d=`${j("view")}.${WH("sha1").update(l).digest("hex").slice(0,10)}`,h=Qi(r,`${d}.colorscheme`);if(!fl(h))C(h,l);if(!s.includes(h))s.push(h);for(let m of s.splice(0,Math.max(0,s.length-JH)))jy(m,{force:!0});return ll(d,f)},a=()=>{for(let c of s.splice(0))jy(c,{force:!0})};return{slots:[],paint:(c)=>o(c.name,c,c.cursor),wear:(c,u)=>u.includes("konsole")?ll(j(c.name),c.cursor):void 0,saved:async()=>new Map,restore:()=>{return a(),`\x1B]50;${e}\x07`},stop:a}}function Ky(t,e,n=(r)=>{process.stdout.write(r)}){let r=Zt(t),i=Ee[r];if(!e||Lt(t)||t.TMUX||!i.paints)return;if(r==="iterm2")return qH(t,n);if(r==="konsole"&&t.TTHEME_KONSOLE_LOOK)return ZH(t,t.TTHEME_KONSOLE_LOOK);let s=i.repaint??[...pn.keys()],o=pn.filter((a,c)=>s.includes(c));return{slots:s,paint:(a)=>wr(a,s),wear:(a,c)=>!i.schemes?wr(a):c.includes(r)?ll(j(a.name),a.cursor):void 0,saved:()=>vm(o),restore:(a)=>ul(a,o,i.hex===!0)}}var se=["ghostty","kitty","alacritty","wezterm","iterm2","windows-terminal","warp","konsole","terminal-app"];var XH=[{section:"tab",title:"This tab"},{section:"startup",title:"New tabs"},{section:"palettes",title:"Palettes"},{section:"own",title:"Your own"},{section:"setup",title:"Setup"},{section:"support",title:"Support"}],Oo=[{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 as a file tree — the pinned directories 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 marketplaces in a live picker — one list with every marketplace as a row, which ctrl+s narrows to one marketplace at a time",section:"palettes",hidden:!0},{name:"list",args:["[query]"],about:"List palettes, marking what is installed",section:"palettes",flags:{json:{type:"boolean",about:"Print the matches as JSON — name, group, catalog, installed"}}},{name:"add",args:["<palette...>"],about:"Install palettes — from your marketplaces, or from a share link: ttheme add https://ttheme.vercel.app/p/tt2:…",section:"palettes",flags:{marketplace:{type:"string",value:"<source>",about:"Add this marketplace first — a repository, a folder or official — and take bare palette names from it"}}},{name:"remove",args:["<palette...>"],about:"Uninstall palettes",section:"palettes"},{name:"update",args:["[marketplace...]"],about:"Update ttheme and refresh your marketplaces — official palettes come with ttheme; an installed palette from another marketplace keeps its colors until ctrl+r on it in Browse takes its update",section:"palettes"},{name:"marketplace",args:["[action]","[source]"],about:"The marketplaces you added — add, remove and search them; init makes one of your own",actions:[["(none)","List the marketplaces you added — their palettes, auto-update and last update"],["add <source>","Add a marketplace — a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official; asks whether it updates on its own"],["remove <marketplace>","Drop one by its name (alice@pastel) — the palettes you installed from it keep working"],["search [query]","The marketplaces on GitHub with the ttheme-marketplace topic, listed every half hour — a query matches names, palettes and descriptions"],["init [name]","Make a marketplace of your own — <you>@<name>, in ~/.config/ttheme/marketplace/<name> or a folder you give"],["check [dir]","Check a marketplace's folder before you push it — ttheme-marketplace.toml, every palette, the renames and the gate; nothing is written"]],section:"palettes"},{name:"new",args:["<name>"],about:"Make a palette of your own in the palette editor — <you>@<marketplace>/<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:"<marketplace>",about:"The local marketplace to put it in — when you have more than one"}}},{name:"edit",args:["[palette]"],about:"Change a palette in the palette editor — your own in its file, any other as your tone over its marketplace's colors, which R and s in the editor put back; with none named, asks to edit the one this tab wears",section:"own"},{name:"check",args:["[palette]"],about:"Measure a palette against the contrast gate — where it misses, suggest colors that pass; with none named, asks to check the one this tab wears",section:"own",flags:{fix:{type:"boolean",about:"Write the suggested colors into your palette"}}},{name:"share",args:["[palette]"],about:"Print a share link and its QR code — the page shows the palette, and ttheme add <link> installs it anywhere, pictures included; with none named, asks to share the one this tab wears — or shares it without asking when the link goes to a pipe",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:se,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 where preview's tuning puts it — preview calls this for a size the terminal cannot scale and for the bands iTerm2 shows",section:"setup",hidden:!0},{name:"tone",args:["<palette>","<action>","[width]"],about:"Print a palette's colors for preview's panel at its width, open them in the palette editor, or reset them to its marketplace's — preview calls this",section:"setup",hidden:!0},{name:"sync",args:[],about:"Write every wired terminal's config again from what is installed and config.zsh — ttheme config and preview call this when TTHEME_TAB_PALETTE changed",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 QH(t){let e=Object.entries(t.flags??{}).map(([n,{value:r}])=>`[--${n}${r?` ${r}`:""}]`);return[t.name,...e,...t.args].join(" ")}function xo(t,e=tF){return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}function zy(t){return t.split(" — ")[0]}function qy(t){return Object.entries(t.flags??{}).map(([e,{short:n,value:r,about:i}])=>[`${n?`-${n}, `:""}--${e}${r?` ${r}`:""}`,i])}function Jy(t,e){let n=e?[...t.actions??[],...qy(t)]:[];return[[[t.name,...t.args].join(" "),zy(t.about)],...n.map(([r,i])=>[` ${r}`,zy(i)])]}var Yy=[`ttheme ${lt.version}`,lt.description,"Usage: ttheme <command> [options] [args]"],Vy=[["ttheme help","Every command"],["ttheme help all","Every command with its options, and examples"],["ttheme help <command>","One command in full"]],Zy=[["-h, --help","Show help — after a command, that command's"],["-v, --version","Print the version"]],tF=Math.max(...[...Vy,...Zy,...Oo.filter((t)=>!t.hidden).flatMap((t)=>Jy(t,!0))].map(([t])=>t.length)),Dy=[["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 Magica catalog as JSON"],["ttheme marketplace add alice/ttheme-pastel","alice's marketplace, alice@pastel — ttheme add alice@pastel/dusk"],["ttheme add dusk --marketplace alice/ttheme-pastel","The same in one step"],["ttheme new rei --from rei","Your own rei, <you>@<marketplace>/rei, to edit and share"]];function Xy(){return[...Yy,"","Use --help to list every command, or init to set ttheme up"].join(`
378
+ `)}function Pm(t){let e=qy(t);return[`Usage: ttheme ${QH(t)}`,"",t.about,...t.actions?["","Actions:",...xo(t.actions)]:[],...e.length>0?["","Options:",...xo(e)]:[]].join(`
379
+ `)}function Ja(t,e=!1){let n=Oo.filter((i)=>!i.hidden&&!(e&&i.section==="setup")),r=XH.filter(({section:i})=>n.some((s)=>s.section===i));return[...Yy,"ttheme alone opens Preview and Browse as tabs — tab and shift+tab move between them","","Getting help:",...xo(Vy),"","Global options:",...xo(Zy),...r.flatMap(({section:i,title:s})=>["",`${s}:`,...xo(n.filter((o)=>o.section===i).flatMap((o)=>Jy(o,t)))]),...t?["","Examples:",...xo(Dy,Math.max(...Dy.map(([i])=>i.length)))]:[],"","https://ttheme.vercel.app"].join(`
380
+ `)}import{readFileSync as eF}from"node:fs";import{join as nF}from"node:path";var Im="# ttheme begin",Rm="# ttheme end",rs=/# ttheme begin\n[\s\S]*?# ttheme end\n?/,Me="Managed by ttheme — npx @kecan0406/ttheme@latest uninstall takes it out",_n="Generated by ttheme — rewritten on every add, remove and default; do not edit.";function ri(t,e,n){return t.startsWith(`${e}/`)?`${n}${t.slice(e.length)}`:void 0}function ii(t,e){let n=`${Im}
381
381
  ${e}
382
- ${Tm}
383
- `;if(ss.test(t))return t.replace(ss,n);if(t==="")return n;return`${t.replace(/\n*$/,`
382
+ ${Rm}
383
+ `;if(rs.test(t))return t.replace(rs,n);if(t==="")return n;return`${t.replace(/\n*$/,`
384
384
  `)}
385
- ${n}`}function Wn(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*$/,`
386
- `)}function Ao(t,e){let n=t.replace(ss,"");return new RegExp(String.raw`^[ \t]*${e}(?:[ \t]*=|[ \t]+\S)`,"m").test(n)}var gl='"${XDG_CONFIG_HOME:-$HOME/.config}/ttheme/ttheme.zsh"';function e1(){return`# ${Me}
387
- [[ -r ${gl} ]] && source ${gl}`}var iL="# ttheme settings — uncomment a line to change it; exported variables win over this file",No={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:"# catalogs and palettes in ttheme and preview: abc sorts them by name, catalog 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 marketplaces 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_MARKETPLACE_LOOKUP:{doc:"# GitHub lookups in browse: on downloads the list of marketplaces carrying the ttheme-marketplace topic when Search marketplace opens; 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 Xa(t){return No[t]?.default}function Hm(t,e){let n=`: \${${t}:=${e}}`;return Xa(t)===e?`# ${n}`:n}function n1(t){return new RegExp(String.raw`^#? ?: \$\{${t}[^\n]*$`,"m")}function sL(t,e){if(n1(e).test(t))return t;let n=No[e];return`${t.replace(/\n*$/,`
385
+ ${n}`}function Bn(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*$/,`
386
+ `)}function Po(t,e){let n=t.replace(rs,"");return new RegExp(String.raw`^[ \t]*${e}(?:[ \t]*=|[ \t]+\S)`,"m").test(n)}var ml='"${XDG_CONFIG_HOME:-$HOME/.config}/ttheme/ttheme.zsh"';function Qy(){return`# ${Me}
387
+ [[ -r ${ml} ]] && source ${ml}`}var rF="# ttheme settings — uncomment a line to change it; exported variables win over this file",Io={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:"# catalogs and palettes in ttheme and preview: abc sorts them by name, catalog 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 marketplaces 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_MARKETPLACE_LOOKUP:{doc:"# GitHub lookups in browse: on downloads the list of marketplaces carrying the ttheme-marketplace topic when Search marketplace opens; 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 Ya(t){return Io[t]?.default}function Am(t,e){let n=`: \${${t}:=${e}}`;return Ya(t)===e?`# ${n}`:n}function t1(t){return new RegExp(String.raw`^#? ?: \$\{${t}[^\n]*$`,"m")}function iF(t,e){if(t1(e).test(t))return t;let n=Io[e];return`${t.replace(/\n*$/,`
388
388
  `)}
389
389
  ${n.doc}
390
- ${Hm(e,n.default)}
391
- `}var bl=Object.keys(No),oL=8;function To(t,e){let n="";try{n=nL(rL(t,"ttheme","config.zsh"),"utf8")}catch{}return(new RegExp(String.raw`^: \$\{${e}:=([^}\n]*)\}`,"m").exec(n)?.[1]??No[e].default).replace(/^(["'])(.*)\1$/,"$2")}function si(t){let e=Number(To(t,"TTHEME_BG_BLUR"));return Number.isFinite(e)?Math.min(oL,Math.max(0,e)):0}function wl(t){return To(t,"TTHEME_BG_COLORS")==="original"?"original":"tone"}function Lm(){let t=Object.entries(No).map(([e,n])=>`${n.doc}
392
- ${Hm(e,n.default)}`);return`${[iL,...t].join(`
390
+ ${Am(e,n.default)}
391
+ `}var pl=Object.keys(Io),sF=8;function Ro(t,e){let n="";try{n=eF(nF(t,"ttheme","config.zsh"),"utf8")}catch{}return(new RegExp(String.raw`^: \$\{${e}:=([^}\n]*)\}`,"m").exec(n)?.[1]??Io[e].default).replace(/^(["'])(.*)\1$/,"$2")}function si(t){let e=Number(Ro(t,"TTHEME_BG_BLUR"));return Number.isFinite(e)?Math.min(sF,Math.max(0,e)):0}function gl(t){return Ro(t,"TTHEME_BG_COLORS")==="original"?"original":"tone"}function Nm(){let t=Object.entries(Io).map(([e,n])=>`${n.doc}
392
+ ${Am(e,n.default)}`);return`${[rF,...t].join(`
393
393
 
394
394
  `)}
395
- `}function $l(t,e,n){let r=Hm(e,n),i=n1(e);if(i.test(t))return t.replace(i,r);return`${t.replace(/\n*$/,`
395
+ `}function bl(t,e,n){let r=Am(e,n),i=t1(e);if(i.test(t))return t.replace(i,r);return`${t.replace(/\n*$/,`
396
396
  `)}
397
397
  ${r}
398
- `}function r1(t){if(t==="")return Lm();return Object.keys(No).reduce(sL,t)}var kl=/["$`\\]/;function aL(t){return t.replace(/_\([^)]*\)$/,"").replaceAll("_"," ")}function Fm(t,e,n=[],r={},i=[]){for(let l of t)for(let d of[l.name,l.catalog??"",l.native??"",...l.nativeNames??[],l.ansiSource])if(kl.test(d))throw Error(`${l.name}: "${d}" contains a character that breaks zsh quoting`);let s=Math.max(0,...t.map((l)=>l.name.length)),o=(l,d)=>` ${l.name.padEnd(s)} "${d}"`,a=(l)=>l.map((d)=>d.name).join(" "),c=It(t),u=(l)=>`'${l.replaceAll("'","'\\''")}'`,f=Ro.filter((l)=>l.section!=="setup"&&!l.hidden);return["# Generated by `mise run build` — do not edit.","# Source of truth: themes/palettes/<catalog>/*.toml in the ttheme repo.","",`typeset -g TTHEME_VERSION=${dt.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}=${u(d)}`)]:[],"","# the commands the shell layer knows (src/verbs.ts): help, completion and argument checks read them",`typeset -ga TTHEME_VERBS=(${f.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_TAB_VERBS=(${f.filter((l)=>l.section==="tab").map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_SHELL_VERBS=(${f.filter((l)=>l.shell).map((l)=>l.name).join(" ")})`,"typeset -gA TTHEME_VERB_ARGS=(",...f.map((l)=>` ${l.name} ${u(l.args.join(" "))}`),")","typeset -gA TTHEME_VERB_ABOUT=(",...f.map((l)=>` ${l.name} ${u(l.about)}`),")",`typeset -g TTHEME_HELP=${u(Za(!1,!0))}`,`typeset -g TTHEME_HELP_ALL=${u(Za(!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=(${pr.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_HUB_TITLES=(${pr.map((l)=>l.title).join(" ")})`,`typeset -gi TTHEME_HUB_CLOSED=${Vu} TTHEME_HUB_SWITCH=${Zu}`,"","# the settings config.zsh holds, handed to the CLI on every call",`typeset -ga TTHEME_SETTINGS=(${bl.join(" ")})`,"","# seed for `ttheme config` when no config.zsh exists yet",`typeset -g TTHEME_CONFIG_TEMPLATE='${Lm().trimEnd().replaceAll("'","'\\''")}'`,"","typeset -gA TTHEME_PALETTE=(",...t.map((l)=>o(l,[l.background,l.foreground,l.cursor,l.selection,...l.ansi].join(" "))),")","","# the palettes whose colors your tone moves off their marketplace's (tone.json): lists mark them, and preview's panel offers to reset them",`typeset -ga TTHEME_TUNED=(${t.flatMap((l)=>i.includes(l.name)?[l.name]:[]).join(" ")})`,"","# the order palettes were added: new tabs cycle through it and TTHEME_SORT=catalog lists it — the default role stays applyable but unlisted",`typeset -ga TTHEME_ORDER=(${a(c)})`,"","# the same palettes by catalog name, then palette name: TTHEME_SORT=abc lists them this way",`typeset -ga TTHEME_ABC=(${a(Bi(c))})`,"","# the marketplace a palette came from, for every one but the official palettes, whose catalogs head the lists","typeset -gA TTHEME_MARKETPLACE=(",...t.flatMap((l)=>{let d=et(l.name);return d?[o(l,d)]:[]}),")","","# the catalog a palette sits in — the folder under its marketplace's palettes/, one level below a marketplace in every list","typeset -gA TTHEME_CATALOG=(",...t.flatMap((l)=>l.catalog?[o(l,l.catalog)]:[]),")","","# the catalog's original-language title, rendered dim next to it","typeset -gA TTHEME_NATIVE=(",...t.flatMap((l)=>l.native?[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.flatMap((l)=>l.nativeNames?[o(l,l.nativeNames.join("|"))]:[]),")","typeset -gA TTHEME_CHARACTER=(",...t.flatMap((l)=>l.booru&&!kl.test(l.booru)?[o(l,aL(l.booru))]:[]),")","","# the example scenes preview draws beside the list (src/scenes.ts), each line as «role»text runs",`typeset -ga TTHEME_SCENES=(${Vt.map((l)=>l.name).join(" ")})`,...Vt.flatMap((l,d)=>[`typeset -ga TTHEME_SCENE_${d+1}=(`,...l.lines.map((h)=>` ${u(h)}`),")"]),"","# each booru's ANSI color, which marks a link to one of its posts",`typeset -gA TTHEME_SITE_ANSI=(${Z.map((l)=>`${l.name} ${l.ansi}`).join(" ")})`,"","# the terminals that open OSC 8 links (src/terminal.ts)",`typeset -ga TTHEME_LINKS=(${Object.entries(Ee).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,fo(l).join(" "))),")","","# where each palette's 16 ANSI colors came from","typeset -gA TTHEME_SRC=(",...t.map((l)=>o(l,l.ansiSource)),")",""].join(`
399
- `)}function i1(t){let e=Object.entries(t).flatMap(([r,i])=>{let s=i.filter((o)=>!kl.test(o)&&!o.includes("|"));return s.length>0&&!kl.test(r)?[[r,s.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(`
400
- `)}var Cm={id:"shell",emitShared(t){return[{path:"shell/palettes.zsh",content:Fm(t.map(hn))}]}};import{execFileSync as cL}from"node:child_process";import{existsSync as s1,readdirSync as uL,readFileSync as lL}from"node:fs";import{join as o1}from"node:path";function ft(t){return s1(t)?lL(t,"utf8"):""}function ht(t,e){return t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}function yl(t){let e=t.split(`
401
- `).filter((n)=>n!==""&&!n.startsWith("#"));return[...new Set(e.map((n)=>n.split(/[ =]/)[0]))].join(", ")}function $n(t,e){let n=ft(t),r=e(n);return r===n?[]:[{file:t,content:r}]}function Qa(t){return process.env.XDG_DATA_HOME??o1(t,".local","share")}function Ho(t){return s1(t)?uL(t).flatMap((e)=>e.startsWith(_(""))?[o1(t,e)]:[]):[]}function jm(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 tn(){return{platform:process.platform,env:process.env,run:(t,e)=>{try{return cL(t,[...e],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5000}).trim()}catch{return}}}}import{existsSync as nc}from"node:fs";import{join as ai}from"node:path";var fL=["black","red","green","yellow","blue","magenta","cyan","white"];function a1(t,e){return[t,...fL.map((n,r)=>`${n} = '${e[r]}'`),""].join(`
402
- `)}var _m={id:"alacritty",limits:"no runtime color API (OSC only)",emit(t){let e=[...ni(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}'`,"",a1("[colors.normal]",t.ansi.slice(0,8)),a1("[colors.bright]",t.ansi.slice(8,16))].join(`
403
- `);return[{path:`alacritty/themes/${_(t.name)}.toml`,content:e}]}};var Bm={id:"ghostty",emit(t){let e=[...ni(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(`
404
- `);return[{path:`ghostty/themes/${_(t.name)}`,content:e}]}};function oi(t){let[e,n,r]=ct(t);return{"Alpha Component":1,"Blue Component":r/255,"Color Space":"P3","Green Component":n/255,"Red Component":e/255}}function u1(t){return{...Object.fromEntries(t.ansi.map((e,n)=>[`Ansi ${n} Color`,oi(e)])),"Background Color":oi(t.background),"Bold Color":oi(t.foreground),"Cursor Color":oi(t.cursor),"Cursor Text Color":oi(t.background),"Foreground Color":oi(t.foreground),"Selected Text Color":oi(t.foreground),"Selection Color":oi(t.selectionBackground)}}function c1(t){return t?{"Background Image Location":t.image,"Background Image Mode":t.cover?2:3,Blend:t.opacity}:{"Background Image Location":""}}function l1(t,e,n,r,i=!1){let s=(c,u)=>({Name:`ttheme · ${u}`,Guid:_(u),...r?{"Dynamic Profile Parent GUID":r}:{},"Use Separate Colors for Light and Dark Mode":!1,...c1(e.get(c.name)),...u1(c)}),o={Name:"ttheme · default",Guid:_("default"),"Dynamic Profile Parent GUID":r,...c1(void 0)},a=[...n?[s(n,"default")]:i&&r?[o]:[],...t.map((c)=>s(c,c.name))];return`${JSON.stringify({Profiles:a},null,2)}
405
- `}function dL(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(`
406
- `)}var Gm={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(u1(t)).map(([n,r])=>dL(n,r)),"</dict>","</plist>",""].join(`
407
- `);return[{path:`iterm2/${_(t.name)}.itermcolors`,content:e}]}};var Um={id:"kitty",emit(t){let e=[...ni(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(`
408
- `);return[{path:`kitty/themes/${_(t.name)}.conf`,content:e}]}};function f1(t){return[`# ${Un}`,"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(`
409
- `)}function hL(t){let[e]=t;if(!e)throw Error("manifest needs at least one theme");return{...Nu(),palettes:t.map(hn)}}var Wm={id:"meta",emitShared(t){return[{path:"manifest.json",content:`${JSON.stringify(hL(t),null,2)}
410
- `}]}};var Km={id:"terminal-app",limits:"profiles go into its own settings at init, so the archive carries none"};import{createHash as mL}from"node:crypto";var pL=["black","red","green","yellow","blue","magenta","cyan","white"];function d1(t,e){return[` ${t}:`,...pL.map((n,r)=>` ${n}: "${e[r]}"`)]}function gL(t,e,n){let r=mL("sha1");for(let i of e)r.update(i);return`${_(t)}.${r.digest("hex").slice(0,8)}.${n}`}function h1(t,e,n){let r=2166136261;for(let i of Buffer.from(`${e}
411
- ${n.toLowerCase()}`,"utf8"))r=Math.imul(r^i,16777619)>>>0;return`${_(t)}.${r.toString(16).padStart(8,"0")}.png`}function tc(t,e){return e?gL(t,[e.image,String(m1(e))],"yaml"):`${_(t)}.yaml`}function m1(t){return Math.max(0,Math.min(100,Math.round(t.opacity*100)))}function ec(t,e){return[`name: "${t.name}"`,`background: "${t.background}"`,`foreground: "${t.foreground}"`,`accent: "${t.cursor}"`,`cursor: "${t.cursor}"`,`details: ${Mt(t.background)<0.18?"darker":"lighter"}`,...e?["background_image:",` path: "${e.image}"`,` opacity: ${m1(e)}`]:[],"terminal_colors:",...d1("normal",t.ansi.slice(0,8)),...d1("bright",t.ansi.slice(8,16)),""].join(`
412
- `)}var zm={id:"warp",limits:"no selection color, and Warp paints one theme app-wide",emit(t){return[{path:`warp/themes/${tc(t.name)}`,content:ec(t)}]}};var p1=(t)=>`[${t.map((e)=>`"${e}"`).join(", ")}]`,Dm={id:"wezterm",limits:"OSC repaints per pane, pictures show per window",emit(t){let e=["[metadata]",`name = "${_(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 = ${p1(t.ansi.slice(0,8))}`,`brights = ${p1(t.ansi.slice(8,16))}`,""].join(`
413
- `);return[{path:`wezterm/colors/${_(t.name)}.toml`,content:e}]}},Lo=(t)=>JSON.stringify(t);function g1(t){return[`-- ${Un}`,"local wezterm = require 'wezterm'","",`local MODULE = ${Lo(t.path)}`,`local COLORS = ${Lo(t.colors)}`,`local BACKGROUNDS = ${Lo(t.backgrounds)}`,`local STARTUP = ${t.startup?Lo(_(t.startup)):"nil"}`,"local PALETTES = {",...t.palettes.map((e)=>` [${Lo(e.name)}] = ${Lo(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(`
414
- `)}var b1=["black","red","green","yellow","blue","purple","cyan","white"];function w1(t){return{name:_(t.name),background:t.background,foreground:t.foreground,cursorColor:t.cursor,selectionBackground:t.selectionBackground,...Object.fromEntries(b1.map((e,n)=>[e,t.ansi[n]])),...Object.fromEntries(b1.map((e,n)=>[`bright${e[0]?.toUpperCase()}${e.slice(1)}`,t.ansi[n+8]]))}}function qm(t,e,n){let r={...e&&n?{profiles:[{updates:e,colorScheme:_(n)}]}:{},schemes:t.map(w1)};return`${JSON.stringify(r,null,2)}
415
- `}var Jm={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/${_(t.name)}.json`,content:`${JSON.stringify(w1(t),null,2)}
416
- `}]},emitShared(t){return[{path:"windows-terminal/ttheme.json",content:qm(t)}]}};function bL(t){let e=t.replace(ss,"");return/^[ \t]*\[colors[\].]/m.test(e)||/^[ \t]*colors[ \t]*[.=]/m.test(e)}var wL=/^[ \t]*\[general\][ \t]*(?:#.*)?\r?$/m,$1=/^[ \t]*\[/m,k1=/^[ \t]*import[ \t]*=/m,$L=/^[ \t]*general[ \t]*[.=]/m;function Zm(t){return`import = [${JSON.stringify(t)}]`}function Ym(t,e){let n=t.replace(ss,""),r=wL.exec(n);if(!r){let a=n.search($1),c=a<0?n:n.slice(0,a);if($L.test(n)||k1.test(c))return;return ii(t,`# ${Me}
398
+ `}function e1(t){if(t==="")return Nm();return Object.keys(Io).reduce(iF,t)}var wl=/["$`\\]/;function oF(t){return t.replace(/_\([^)]*\)$/,"").replaceAll("_"," ")}function Tm(t,e,n=[],r={},i=[]){for(let l of t)for(let d of[l.name,l.catalog??"",l.native??"",...l.nativeNames??[],l.ansiSource])if(wl.test(d))throw Error(`${l.name}: "${d}" contains a character that breaks zsh quoting`);let s=Math.max(0,...t.map((l)=>l.name.length)),o=(l,d)=>` ${l.name.padEnd(s)} "${d}"`,a=(l)=>l.map((d)=>d.name).join(" "),c=It(t),u=(l)=>`'${l.replaceAll("'","'\\''")}'`,f=Oo.filter((l)=>l.section!=="setup"&&!l.hidden);return["# Generated by `mise run build` — do not edit.","# Source of truth: themes/palettes/<catalog>/*.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}=${u(d)}`)]:[],"","# the commands the shell layer knows (src/verbs.ts): help, completion and argument checks read them",`typeset -ga TTHEME_VERBS=(${f.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_TAB_VERBS=(${f.filter((l)=>l.section==="tab").map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_SHELL_VERBS=(${f.filter((l)=>l.shell).map((l)=>l.name).join(" ")})`,"typeset -gA TTHEME_VERB_ARGS=(",...f.map((l)=>` ${l.name} ${u(l.args.join(" "))}`),")","typeset -gA TTHEME_VERB_ABOUT=(",...f.map((l)=>` ${l.name} ${u(l.about)}`),")",`typeset -g TTHEME_HELP=${u(Ja(!1,!0))}`,`typeset -g TTHEME_HELP_ALL=${u(Ja(!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=(${mr.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_HUB_TITLES=(${mr.map((l)=>l.title).join(" ")})`,`typeset -gi TTHEME_HUB_CLOSED=${Ju} TTHEME_HUB_SWITCH=${Yu}`,"","# the settings config.zsh holds, handed to the CLI on every call",`typeset -ga TTHEME_SETTINGS=(${pl.join(" ")})`,"","# seed for `ttheme config` when no config.zsh exists yet",`typeset -g TTHEME_CONFIG_TEMPLATE='${Nm().trimEnd().replaceAll("'","'\\''")}'`,"","typeset -gA TTHEME_PALETTE=(",...t.map((l)=>o(l,[l.background,l.foreground,l.cursor,l.selection,...l.ansi].join(" "))),")","","# the palettes whose colors your tone moves off their marketplace's (tone.json): lists mark them, and preview's panel offers to reset them",`typeset -ga TTHEME_TUNED=(${t.flatMap((l)=>i.includes(l.name)?[l.name]:[]).join(" ")})`,"","# the order palettes were added: new tabs cycle through it and TTHEME_SORT=catalog lists it — the default role stays applyable but unlisted",`typeset -ga TTHEME_ORDER=(${a(c)})`,"","# the same palettes by catalog name, then palette name: TTHEME_SORT=abc lists them this way",`typeset -ga TTHEME_ABC=(${a(_i(c))})`,"","# the marketplace a palette came from, for every one but the official palettes, whose catalogs head the lists","typeset -gA TTHEME_MARKETPLACE=(",...t.flatMap((l)=>{let d=et(l.name);return d?[o(l,d)]:[]}),")","","# the catalog a palette sits in — the folder under its marketplace's palettes/, one level below a marketplace in every list","typeset -gA TTHEME_CATALOG=(",...t.flatMap((l)=>l.catalog?[o(l,l.catalog)]:[]),")","","# the catalog's original-language title, rendered dim next to it","typeset -gA TTHEME_NATIVE=(",...t.flatMap((l)=>l.native?[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.flatMap((l)=>l.nativeNames?[o(l,l.nativeNames.join("|"))]:[]),")","typeset -gA TTHEME_CHARACTER=(",...t.flatMap((l)=>l.booru&&!wl.test(l.booru)?[o(l,oF(l.booru))]:[]),")","","# the example scenes preview draws beside the list (src/scenes.ts), each line as «role»text runs",`typeset -ga TTHEME_SCENES=(${Vt.map((l)=>l.name).join(" ")})`,...Vt.flatMap((l,d)=>[`typeset -ga TTHEME_SCENE_${d+1}=(`,...l.lines.map((h)=>` ${u(h)}`),")"]),"","# each booru's ANSI color, which marks a link to one of its posts",`typeset -gA TTHEME_SITE_ANSI=(${Z.map((l)=>`${l.name} ${l.ansi}`).join(" ")})`,"","# the terminals that open OSC 8 links (src/terminal.ts)",`typeset -ga TTHEME_LINKS=(${Object.entries(Ee).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,uo(l).join(" "))),")","","# where each palette's 16 ANSI colors came from","typeset -gA TTHEME_SRC=(",...t.map((l)=>o(l,l.ansiSource)),")",""].join(`
399
+ `)}function n1(t){let e=Object.entries(t).flatMap(([r,i])=>{let s=i.filter((o)=>!wl.test(o)&&!o.includes("|"));return s.length>0&&!wl.test(r)?[[r,s.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(`
400
+ `)}var Hm={id:"shell",emitShared(t){return[{path:"shell/palettes.zsh",content:Tm(t.map(dn))}]}};import{execFileSync as aF}from"node:child_process";import{existsSync as r1,readdirSync as cF,readFileSync as uF}from"node:fs";import{join as i1}from"node:path";function ut(t){return r1(t)?uF(t,"utf8"):""}function dt(t,e){return t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}function $l(t){let e=t.split(`
401
+ `).filter((n)=>n!==""&&!n.startsWith("#"));return[...new Set(e.map((n)=>n.split(/[ =]/)[0]))].join(", ")}function gn(t,e){let n=ut(t),r=e(n);return r===n?[]:[{file:t,content:r}]}function Va(t){return process.env.XDG_DATA_HOME??i1(t,".local","share")}function Ao(t){return r1(t)?cF(t).flatMap((e)=>e.startsWith(j(""))?[i1(t,e)]:[]):[]}function Fm(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 Qe(){return{platform:process.platform,env:process.env,run:(t,e)=>{try{return aF(t,[...e],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5000}).trim()}catch{return}}}}import{existsSync as Qa}from"node:fs";import{join as ai}from"node:path";var lF=["black","red","green","yellow","blue","magenta","cyan","white"];function s1(t,e){return[t,...lF.map((n,r)=>`${n} = '${e[r]}'`),""].join(`
402
+ `)}var Lm={id:"alacritty",limits:"no runtime color API (OSC only)",emit(t){let e=[...ni(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}'`,"",s1("[colors.normal]",t.ansi.slice(0,8)),s1("[colors.bright]",t.ansi.slice(8,16))].join(`
403
+ `);return[{path:`alacritty/themes/${j(t.name)}.toml`,content:e}]}};var Cm={id:"ghostty",emit(t){let e=[...ni(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(`
404
+ `);return[{path:`ghostty/themes/${j(t.name)}`,content:e}]}};function oi(t){let[e,n,r]=st(t);return{"Alpha Component":1,"Blue Component":r/255,"Color Space":"P3","Green Component":n/255,"Red Component":e/255}}function a1(t){return{...Object.fromEntries(t.ansi.map((e,n)=>[`Ansi ${n} Color`,oi(e)])),"Background Color":oi(t.background),"Bold Color":oi(t.foreground),"Cursor Color":oi(t.cursor),"Cursor Text Color":oi(t.background),"Foreground Color":oi(t.foreground),"Selected Text Color":oi(t.foreground),"Selection Color":oi(t.selectionBackground)}}function o1(t){return t?{"Background Image Location":t.image,"Background Image Mode":t.cover?2:3,Blend:t.opacity}:{"Background Image Location":""}}function c1(t,e,n,r,i=!1){let s=(c,u)=>({Name:`ttheme · ${u}`,Guid:j(u),...r?{"Dynamic Profile Parent GUID":r}:{},"Use Separate Colors for Light and Dark Mode":!1,...o1(e.get(c.name)),...a1(c)}),o={Name:"ttheme · default",Guid:j("default"),"Dynamic Profile Parent GUID":r,...o1(void 0)},a=[...n?[s(n,"default")]:i&&r?[o]:[],...t.map((c)=>s(c,c.name))];return`${JSON.stringify({Profiles:a},null,2)}
405
+ `}function fF(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(`
406
+ `)}var jm={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(a1(t)).map(([n,r])=>fF(n,r)),"</dict>","</plist>",""].join(`
407
+ `);return[{path:`iterm2/${j(t.name)}.itermcolors`,content:e}]}};var _m={id:"kitty",emit(t){let e=[...ni(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(`
408
+ `);return[{path:`kitty/themes/${j(t.name)}.conf`,content:e}]}};function u1(t){return[`# ${_n}`,"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(`
409
+ `)}function dF(t){let[e]=t;if(!e)throw Error("manifest needs at least one theme");return{...Iu(),palettes:t.map(dn)}}var Bm={id:"meta",emitShared(t){return[{path:"manifest.json",content:`${JSON.stringify(dF(t),null,2)}
410
+ `}]}};var Gm={id:"terminal-app",limits:"profiles go into its own settings at init, so the archive carries none"};import{createHash as hF}from"node:crypto";var mF=["black","red","green","yellow","blue","magenta","cyan","white"];function l1(t,e){return[` ${t}:`,...mF.map((n,r)=>` ${n}: "${e[r]}"`)]}function pF(t,e,n){let r=hF("sha1");for(let i of e)r.update(i);return`${j(t)}.${r.digest("hex").slice(0,8)}.${n}`}function f1(t,e,n){let r=2166136261;for(let i of Buffer.from(`${e}
411
+ ${n.toLowerCase()}`,"utf8"))r=Math.imul(r^i,16777619)>>>0;return`${j(t)}.${r.toString(16).padStart(8,"0")}.png`}function Za(t,e){return e?pF(t,[e.image,String(d1(e))],"yaml"):`${j(t)}.yaml`}function d1(t){return Math.max(0,Math.min(100,Math.round(t.opacity*100)))}function Xa(t,e){return[`name: "${t.name}"`,`background: "${t.background}"`,`foreground: "${t.foreground}"`,`accent: "${t.cursor}"`,`cursor: "${t.cursor}"`,`details: ${Mt(t.background)<0.18?"darker":"lighter"}`,...e?["background_image:",` path: "${e.image}"`,` opacity: ${d1(e)}`]:[],"terminal_colors:",...l1("normal",t.ansi.slice(0,8)),...l1("bright",t.ansi.slice(8,16)),""].join(`
412
+ `)}var Um={id:"warp",limits:"no selection color, and Warp paints one theme app-wide",emit(t){return[{path:`warp/themes/${Za(t.name)}`,content:Xa(t)}]}};var h1=(t)=>`[${t.map((e)=>`"${e}"`).join(", ")}]`,Wm={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 = ${h1(t.ansi.slice(0,8))}`,`brights = ${h1(t.ansi.slice(8,16))}`,""].join(`
413
+ `);return[{path:`wezterm/colors/${j(t.name)}.toml`,content:e}]}},No=(t)=>JSON.stringify(t);function m1(t){return[`-- ${_n}`,"local wezterm = require 'wezterm'","",`local MODULE = ${No(t.path)}`,`local COLORS = ${No(t.colors)}`,`local BACKGROUNDS = ${No(t.backgrounds)}`,`local STARTUP = ${t.startup?No(j(t.startup)):"nil"}`,"local PALETTES = {",...t.palettes.map((e)=>` [${No(e.name)}] = ${No(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(`
414
+ `)}var p1=["black","red","green","yellow","blue","purple","cyan","white"];function g1(t){return{name:j(t.name),background:t.background,foreground:t.foreground,cursorColor:t.cursor,selectionBackground:t.selectionBackground,...Object.fromEntries(p1.map((e,n)=>[e,t.ansi[n]])),...Object.fromEntries(p1.map((e,n)=>[`bright${e[0]?.toUpperCase()}${e.slice(1)}`,t.ansi[n+8]]))}}function Km(t,e,n){let r={...e&&n?{profiles:[{updates:e,colorScheme:j(n)}]}:{},schemes:t.map(g1)};return`${JSON.stringify(r,null,2)}
415
+ `}var zm={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(g1(t),null,2)}
416
+ `}]},emitShared(t){return[{path:"windows-terminal/ttheme.json",content:Km(t)}]}};function gF(t){let e=t.replace(rs,"");return/^[ \t]*\[colors[\].]/m.test(e)||/^[ \t]*colors[ \t]*[.=]/m.test(e)}var bF=/^[ \t]*\[general\][ \t]*(?:#.*)?\r?$/m,b1=/^[ \t]*\[/m,w1=/^[ \t]*import[ \t]*=/m,wF=/^[ \t]*general[ \t]*[.=]/m;function Jm(t){return`import = [${JSON.stringify(t)}]`}function Dm(t,e){let n=t.replace(rs,""),r=bF.exec(n);if(!r){let a=n.search(b1),c=a<0?n:n.slice(0,a);if(wF.test(n)||w1.test(c))return;return ii(t,`# ${Me}
417
417
  [general]
418
- ${Zm(e)}`)}let i=r.index+r[0].length,s=n.slice(i),o=s.search($1);if(k1.test(o<0?s:s.slice(0,o)))return;return`${n.slice(0,i)}
419
- ${Nm}
418
+ ${Jm(e)}`)}let i=r.index+r[0].length,s=n.slice(i),o=s.search(b1);if(w1.test(o<0?s:s.slice(0,o)))return;return`${n.slice(0,i)}
419
+ ${Im}
420
420
  # ${Me}
421
- ${Zm(e)}
422
- ${Tm}${s}`}function y1(t){return[...new Set([ai(t.configHome,"alacritty","alacritty.toml"),ai(t.configHome,"alacritty.toml"),ai(t.home,".config","alacritty","alacritty.toml"),ai(t.home,".alacritty.toml")])]}function kL(t){let e=ft(t);return ss.test(e)&&Wn(e)===""&&!nc(ga(t))}function Vm(t){let e=y1(t),n=e.filter(kL),r=e.find((s)=>nc(s)&&!n.includes(s)),i=r?void 0:e.map((s)=>s.replace(/\.toml$/,".yml")).find((s)=>nc(s));if(!r&&!i)return{file:n[0]??e[0]};return{file:r??e[0],...i?{yaml:i}:{},...n.length>0?{leftover:n}:{}}}function Xm(t){return ai(t,"ttheme","alacritty.toml")}function yL(t){return[`# ${Un}`,...t?["[general]",Zm(t)]:[],""].join(`
423
- `)}function vl(t){let e=Xm(t.configHome);return ri(e,t.home,"~")??e}function v1(t){return ai(t.configHome,"alacritty","themes")}function vL(t){return t.startup?ai(v1(t),`${_(t.startup)}.toml`):void 0}var Qm={id:"alacritty",name:"Alacritty",emitter:_m,shelf:{from:"themes",dir:v1},offered:()=>!0,present:(t)=>nc(ai(t.configHome,"alacritty")),sync(t,e){e.themes(Qm),e.write(Xm(t.configHome),yL(vL(t)));let n=Vm(t);for(let i of n.leftover??[])e.remove(i);let r=n.yaml?void 0:Ym(ft(n.file),vl(t));if(r!==void 0)e.wire(n.file,r)},plan(t){let e=Vm(t);return!e.yaml&&Ym(ft(e.file),vl(t))!==void 0?[`Edit ${ht(e.file,t.home)} — a ttheme block: general.import`,`Write ${ht(Xm(t.configHome),t.home)} — general.import`]:[]},notes(t){let e=Vm(t),n=(e.leftover??[]).map((i)=>`${ht(i,t.home)} held only ttheme's import and hid ${ht(e.yaml??e.file,t.home)} from Alacritty — ttheme removed it`);if(e.yaml)return[...n,`${ht(e.yaml,t.home)} is the config Alacritty reads, and ttheme edits TOML only — \`alacritty migrate\` converts it, and ttheme wires the TOML at its next add, remove or default`];let r=ft(e.file);return[...n,...nc(e.file)&&Ym(r,vl(t))===void 0?[`${ht(e.file,t.home)} already imports files under [general] — ttheme left it alone; add ${vl(t)} to that import list yourself`]:[],...t.startup&&bL(r)?[`${ht(e.file,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:y1(t).flatMap((e)=>$n(e,Wn)),removals:[],touches:[]})};import{existsSync as SL}from"node:fs";import{join as kn}from"node:path";var EL=["background","foreground","palette","cursor-color","cursor-text","selection-background","selection-foreground"];function Sl(t){return kn(t,"ghostty","config")}function S1(t){return kn(t,"ttheme","ghostty.conf")}function ML(t,e=process.platform){let n=kn(t.home,"Library","Application Support","com.mitchellh.ghostty");return[Sl(t.configHome),kn(t.configHome,"ghostty","config.ghostty"),...e==="darwin"?[kn(n,"config"),kn(n,"config.ghostty")]:[]]}function El(t,e){return ML(t).find((n)=>Ao(ft(n),e))}function xL(t,e){let n=kn(t,"ghostty.conf");return`# ${Me}
424
- config-file = ?${ri(n,e,"~")??n}`}function OL(t,e,n,r){return[`# ${Un}`,...n?[`command = ${t}/launch-tab.zsh`,...r?["shell-integration = zsh"]:[]]:[],...e?[`theme = ${_(e)}`]:[],"config-file = ?backgrounds/shown.conf",""].join(`
425
- `)}function M1(t){return To(t.configHome,"TTHEME_TAB_PALETTE")!=="off"}function E1(t){return OL(kn(t.configHome,"ttheme"),t.startup,M1(t)&&El(t,"command")===void 0,El(t,"shell-integration")===void 0)}var tp={id:"ghostty",name:"Ghostty",emitter:Bm,shelf:{from:"themes",dir:(t)=>kn(t.configHome,"ghostty","themes")},offered:()=>!0,present:(t)=>SL(kn(t.configHome,"ghostty")),sync(t,e){e.themes(tp),e.write(S1(t.configHome),E1(t));let n=Sl(t.configHome);e.wire(n,ii(ft(n),xL(kn(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${ht(Sl(t.configHome),t.home)} — a ttheme block: config-file`,`Write ${ht(S1(t.configHome),t.home)} — ${yl(E1(t))}`]},notes(t){let e=El(t,"command"),n=t.startup?EL.map((r)=>El(t,r)).find(Boolean):void 0;return[...e&&M1(t)?[`${ht(e,t.home)} sets its own command — ttheme leaves it, so a new tab takes its palette once zsh starts`]:[],...n?[`${ht(n,t.home)} sets its own colors, which win over a theme — remove them to open with ttheme's`]:[]]},next:()=>["Restart Ghostty New tabs pick up its config"],unwire:(t)=>({edits:$n(Sl(t.configHome),Wn),removals:[],touches:[]})};import{existsSync as x1}from"node:fs";import{join as I1}from"node:path";var ep="ttheme-default";function Fo(t){return I1(t,"Library","Application Support","iTerm2","DynamicProfiles","ttheme.json")}function R1(t){return t.itermBase!==void 0&&t.palettes.length>0}function O1(t){let e=X(t.configHome),n=new Map;for(let i of t.themes){let s=Le(e,i.name,t.home);if(s)n.set(i.name,s)}let r=new Set(It(t.entries).map((i)=>i.name));return l1(t.themes.filter((i)=>r.has(i.name)),n,t.themes.find((i)=>i.name===t.startup),t.state.itermBase,R1(t.state))}function np(t){return t.env.TTHEME_ITERM_SUITE??"com.googlecode.iterm2"}function P1(t){return t.run("defaults",["read",np(t),"Default Bookmark Guid"])||void 0}function PL(t){return t.run("defaults",["read",np(t),"PreventEscapeSequenceFromChangingProfile"])==="0"}var IL={key:"itermBase",profile:()=>"ttheme · default",base(t){let e=P1(t.host);return e&&!e.startsWith("ttheme-")?{...t.state,itermBase:e}:t.state},point(t,e){let n=P1(t.host),r=t.startup?e||n===ep?ep:void 0:n===ep&&!R1(t.state)?t.state.itermBase:void 0;if(!r||r===n)return;return t.host.run("defaults",["write",np(t.host),"Default Bookmark Guid","-string",r]),{restart:Boolean(t.host.run("pgrep",["-x","iTerm2"]))}}},A1={id:"iterm2",name:"iTerm2",emitter:Gm,bakes:!0,offered:(t,e)=>e.platform==="darwin",present:(t)=>x1(I1(t.home,"Library","Application Support","iTerm2")),sync(t,e){e.write(Fo(t.home),O1(t))},pictures(t,e){e.write(Fo(t.home),O1(t))},layer:(t,e)=>({TTHEME_ITERM_SWITCH:PL(e)?"1":"",TTHEME_ITERM_PROFILES:Fo(t.home)}),plan:(t)=>[`Write ${ht(Fo(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:x1(Fo(t.home))?[Fo(t.home)]:[],touches:[]}),defaults:IL};import{existsSync as RL}from"node:fs";import{join as ci}from"node:path";function AL(t,e){let n=ci(t,"kitty.conf");return`# ${Me}
426
- include ${ri(n,e,"~")??n}`}function NL(t,e,n=""){return[`# ${Un}`,...t?[`include ${t}`]:[],`watcher ${e}`,...["window_logo_scale 100","window_logo_alpha 1"].filter((r)=>!Ao(n,r.split(" ")[0])),""].join(`
427
- `)}function rc(t){return ci(t,"kitty","kitty.conf")}function N1(t){return ci(t,"ttheme","kitty.conf")}function H1(t){return ci(t,"ttheme","kitty.py")}function rp(t){return ci(t.configHome,"kitty","themes")}function T1(t){return NL(t.startup&&ci(rp(t),`${_(t.startup)}.conf`),H1(t.configHome),ft(rc(t.configHome)))}var ip={id:"kitty",name:"kitty",emitter:Um,shelf:{from:"themes",dir:rp},offered:()=>!0,present:(t)=>RL(ci(t.configHome,"kitty")),sync(t,e){e.themes(ip),e.write(H1(t.configHome),f1({themes:rp(t),backgrounds:X(t.configHome)})),e.write(N1(t.configHome),T1(t));let n=rc(t.configHome);e.wire(n,ii(ft(n),AL(ci(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${ht(rc(t.configHome),t.home)} — a ttheme block: include`,`Write ${ht(N1(t.configHome),t.home)} — ${yl(T1(t))}`]},notes(t){let e=ft(rc(t.configHome));return Ao(e,"window_logo_scale")||Ao(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:$n(rc(t.configHome),Wn),removals:[],touches:[]})};import{createHash as TL}from"node:crypto";import{existsSync as Ml}from"node:fs";import{basename as F1,isAbsolute as HL,join as os}from"node:path";function Co(t){return os(Qa(t),"konsole")}function ic(t){return os(t,"konsolerc")}function C1(t){return`${_(t)}.profile`}function sc(t){return`ttheme · ${t}`}function j1(t,e){let n=t.findIndex((i)=>i.trim()===`[${e}]`);if(n<0)return;let r=t.findIndex((i,s)=>s>n&&i.trimStart().startsWith("["));return[n,r<0?t.length:r]}function sp(t){return new RegExp(String.raw`^\s*${t}\s*=`)}function ui(t,e,n){let r=t.split(`
428
- `),i=j1(r,e);return(i&&r.slice(i[0]+1,i[1]).find((o)=>sp(n).test(o)))?.replace(sp(n),"").trim()}function _1(t,e){let n=t.split(`
429
- `),r=j1(n,"Desktop Entry"),i=e===void 0?[]:[`DefaultProfile=${e}`];if(!r)return e===void 0?t:`${t===""?"":t.replace(/\n*$/,`
421
+ ${Jm(e)}
422
+ ${Rm}${s}`}function $1(t){return[...new Set([ai(t.configHome,"alacritty","alacritty.toml"),ai(t.configHome,"alacritty.toml"),ai(t.home,".config","alacritty","alacritty.toml"),ai(t.home,".alacritty.toml")])]}function $F(t){let e=ut(t);return rs.test(e)&&Bn(e)===""&&!Qa(ha(t))}function qm(t){let e=$1(t),n=e.filter($F),r=e.find((s)=>Qa(s)&&!n.includes(s)),i=r?void 0:e.map((s)=>s.replace(/\.toml$/,".yml")).find((s)=>Qa(s));if(!r&&!i)return{file:n[0]??e[0]};return{file:r??e[0],...i?{yaml:i}:{},...n.length>0?{leftover:n}:{}}}function Ym(t){return ai(t,"ttheme","alacritty.toml")}function kF(t){return[`# ${_n}`,...t?["[general]",Jm(t)]:[],""].join(`
423
+ `)}function kl(t){let e=Ym(t.configHome);return ri(e,t.home,"~")??e}function k1(t){return ai(t.configHome,"alacritty","themes")}function yF(t){return t.startup?ai(k1(t),`${j(t.startup)}.toml`):void 0}var Vm={id:"alacritty",name:"Alacritty",emitter:Lm,shelf:{from:"themes",dir:k1},offered:()=>!0,present:(t)=>Qa(ai(t.configHome,"alacritty")),sync(t,e){e.themes(Vm),e.write(Ym(t.configHome),kF(yF(t)));let n=qm(t);for(let i of n.leftover??[])e.remove(i);let r=n.yaml?void 0:Dm(ut(n.file),kl(t));if(r!==void 0)e.wire(n.file,r)},plan(t){let e=qm(t);return!e.yaml&&Dm(ut(e.file),kl(t))!==void 0?[`Edit ${dt(e.file,t.home)} — a ttheme block: general.import`,`Write ${dt(Ym(t.configHome),t.home)} — general.import`]:[]},notes(t){let e=qm(t),n=(e.leftover??[]).map((i)=>`${dt(i,t.home)} held only ttheme's import and hid ${dt(e.yaml??e.file,t.home)} from Alacritty — ttheme removed it`);if(e.yaml)return[...n,`${dt(e.yaml,t.home)} is the config Alacritty reads, and ttheme edits TOML only — \`alacritty migrate\` converts it, and ttheme wires the TOML at its next add, remove or default`];let r=ut(e.file);return[...n,...Qa(e.file)&&Dm(r,kl(t))===void 0?[`${dt(e.file,t.home)} already imports files under [general] — ttheme left it alone; add ${kl(t)} to that import list yourself`]:[],...t.startup&&gF(r)?[`${dt(e.file,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:$1(t).flatMap((e)=>gn(e,Bn)),removals:[],touches:[]})};import{existsSync as vF}from"node:fs";import{join as bn}from"node:path";var SF=["background","foreground","palette","cursor-color","cursor-text","selection-background","selection-foreground"];function yl(t){return bn(t,"ghostty","config")}function y1(t){return bn(t,"ttheme","ghostty.conf")}function EF(t,e=process.platform){let n=bn(t.home,"Library","Application Support","com.mitchellh.ghostty");return[yl(t.configHome),bn(t.configHome,"ghostty","config.ghostty"),...e==="darwin"?[bn(n,"config"),bn(n,"config.ghostty")]:[]]}function vl(t,e){return EF(t).find((n)=>Po(ut(n),e))}function MF(t,e){let n=bn(t,"ghostty.conf");return`# ${Me}
424
+ config-file = ?${ri(n,e,"~")??n}`}function xF(t,e,n,r){return[`# ${_n}`,...n?[`command = ${t}/launch-tab.zsh`,...r?["shell-integration = zsh"]:[]]:[],...e?[`theme = ${j(e)}`]:[],"config-file = ?backgrounds/shown.conf",""].join(`
425
+ `)}function S1(t){return Ro(t.configHome,"TTHEME_TAB_PALETTE")!=="off"}function v1(t){return xF(bn(t.configHome,"ttheme"),t.startup,S1(t)&&vl(t,"command")===void 0,vl(t,"shell-integration")===void 0)}var Zm={id:"ghostty",name:"Ghostty",emitter:Cm,shelf:{from:"themes",dir:(t)=>bn(t.configHome,"ghostty","themes")},offered:()=>!0,present:(t)=>vF(bn(t.configHome,"ghostty")),sync(t,e){e.themes(Zm),e.write(y1(t.configHome),v1(t));let n=yl(t.configHome);e.wire(n,ii(ut(n),MF(bn(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${dt(yl(t.configHome),t.home)} — a ttheme block: config-file`,`Write ${dt(y1(t.configHome),t.home)} — ${$l(v1(t))}`]},notes(t){let e=vl(t,"command"),n=t.startup?SF.map((r)=>vl(t,r)).find(Boolean):void 0;return[...e&&S1(t)?[`${dt(e,t.home)} sets its own command — ttheme leaves it, so a new tab takes its palette once zsh starts`]:[],...n?[`${dt(n,t.home)} sets its own colors, which win over a theme — remove them to open with ttheme's`]:[]]},next:()=>["Restart Ghostty New tabs pick up its config"],unwire:(t)=>({edits:gn(yl(t.configHome),Bn),removals:[],touches:[]})};import{existsSync as E1}from"node:fs";import{join as O1}from"node:path";var Xm="ttheme-default";function To(t){return O1(t,"Library","Application Support","iTerm2","DynamicProfiles","ttheme.json")}function P1(t){return t.itermBase!==void 0&&t.palettes.length>0}function M1(t){let e=X(t.configHome),n=new Map;for(let i of t.themes){let s=He(e,i.name,t.home);if(s)n.set(i.name,s)}let r=new Set(It(t.entries).map((i)=>i.name));return c1(t.themes.filter((i)=>r.has(i.name)),n,t.themes.find((i)=>i.name===t.startup),t.state.itermBase,P1(t.state))}function Qm(t){return t.env.TTHEME_ITERM_SUITE??"com.googlecode.iterm2"}function x1(t){return t.run("defaults",["read",Qm(t),"Default Bookmark Guid"])||void 0}function OF(t){return t.run("defaults",["read",Qm(t),"PreventEscapeSequenceFromChangingProfile"])==="0"}var PF={key:"itermBase",profile:()=>"ttheme · default",base(t){let e=x1(t.host);return e&&!e.startsWith("ttheme-")?{...t.state,itermBase:e}:t.state},point(t,e){let n=x1(t.host),r=t.startup?e||n===Xm?Xm:void 0:n===Xm&&!P1(t.state)?t.state.itermBase:void 0;if(!r||r===n)return;return t.host.run("defaults",["write",Qm(t.host),"Default Bookmark Guid","-string",r]),{restart:Boolean(t.host.run("pgrep",["-x","iTerm2"]))}}},I1={id:"iterm2",name:"iTerm2",emitter:jm,bakes:!0,offered:(t,e)=>e.platform==="darwin",present:(t)=>E1(O1(t.home,"Library","Application Support","iTerm2")),sync(t,e){e.write(To(t.home),M1(t))},pictures(t,e){e.write(To(t.home),M1(t))},layer:(t,e)=>({TTHEME_ITERM_SWITCH:OF(e)?"1":"",TTHEME_ITERM_PROFILES:To(t.home)}),plan:(t)=>[`Write ${dt(To(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:E1(To(t.home))?[To(t.home)]:[],touches:[]}),defaults:PF};import{existsSync as IF}from"node:fs";import{join as ci}from"node:path";function RF(t,e){let n=ci(t,"kitty.conf");return`# ${Me}
426
+ include ${ri(n,e,"~")??n}`}function AF(t,e,n=""){return[`# ${_n}`,...t?[`include ${t}`]:[],`watcher ${e}`,...["window_logo_scale 100","window_logo_alpha 1"].filter((r)=>!Po(n,r.split(" ")[0])),""].join(`
427
+ `)}function tc(t){return ci(t,"kitty","kitty.conf")}function R1(t){return ci(t,"ttheme","kitty.conf")}function N1(t){return ci(t,"ttheme","kitty.py")}function tp(t){return ci(t.configHome,"kitty","themes")}function A1(t){return AF(t.startup&&ci(tp(t),`${j(t.startup)}.conf`),N1(t.configHome),ut(tc(t.configHome)))}var ep={id:"kitty",name:"kitty",emitter:_m,shelf:{from:"themes",dir:tp},offered:()=>!0,present:(t)=>IF(ci(t.configHome,"kitty")),sync(t,e){e.themes(ep),e.write(N1(t.configHome),u1({themes:tp(t),backgrounds:X(t.configHome)})),e.write(R1(t.configHome),A1(t));let n=tc(t.configHome);e.wire(n,ii(ut(n),RF(ci(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${dt(tc(t.configHome),t.home)} — a ttheme block: include`,`Write ${dt(R1(t.configHome),t.home)} — ${$l(A1(t))}`]},notes(t){let e=ut(tc(t.configHome));return Po(e,"window_logo_scale")||Po(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:gn(tc(t.configHome),Bn),removals:[],touches:[]})};import{createHash as NF}from"node:crypto";import{existsSync as Sl}from"node:fs";import{basename as H1,isAbsolute as TF,join as is}from"node:path";function Ho(t){return is(Va(t),"konsole")}function ec(t){return is(t,"konsolerc")}function F1(t){return`${j(t)}.profile`}function nc(t){return`ttheme · ${t}`}function L1(t,e){let n=t.findIndex((i)=>i.trim()===`[${e}]`);if(n<0)return;let r=t.findIndex((i,s)=>s>n&&i.trimStart().startsWith("["));return[n,r<0?t.length:r]}function np(t){return new RegExp(String.raw`^\s*${t}\s*=`)}function ui(t,e,n){let r=t.split(`
428
+ `),i=L1(r,e);return(i&&r.slice(i[0]+1,i[1]).find((o)=>np(n).test(o)))?.replace(np(n),"").trim()}function C1(t,e){let n=t.split(`
429
+ `),r=L1(n,"Desktop Entry"),i=e===void 0?[]:[`DefaultProfile=${e}`];if(!r)return e===void 0?t:`${t===""?"":t.replace(/\n*$/,`
430
430
 
431
431
  `)}[Desktop Entry]
432
432
  ${i[0]}
433
- `;let s=n.findIndex((a,c)=>c>r[0]&&c<r[1]&&sp("DefaultProfile").test(a));if(s>=0)n.splice(s,1,...i);else n.splice(r[0]+1,0,...i);let o=r[1]+i.length-(s>=0?1:0);if(n.slice(r[0]+1,o).every((a)=>a.trim()==="")){let a=r[0]>0&&n[r[0]-1]?.trim()===""?r[0]-1:r[0],c=o===n.length&&n[o-1]===""?o-1:o;n.splice(a,c-a)}return n.join(`
434
- `)}function LL(t){if(t&&we(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 B1(t,e){let n=e.endsWith(".profile")?e:`${e}.profile`;if(HL(n))return Ml(n)?n:void 0;let r=n.includes("/")?n:os("konsole",n);return[Qa(t.home),...(process.env.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((s)=>os(s,r)).find((s)=>Ml(s))}function G1(t,e,n=0){let r=e&&e!=="FALLBACK/"&&n<8?B1(t,e):void 0;if(!r)return{};let i=ft(r),s=G1(t,ui(i,"General","Parent"),n+1);return{scheme:ui(i,"Appearance","ColorScheme")||s.scheme,use:ui(i,"Cursor Options","UseCustomCursorColor")??s.use,cursor:ui(i,"Cursor Options","CustomCursorColor")??s.cursor}}function FL(t,e){let n=G1(t,e),r=n.use==="true"?LL(n.cursor):void 0;return[`ColorScheme=${n.scheme??"Breeze"}`,`UseCustomCursorColor=${r?"true":"false"}`,...r?[`customCursorColor=${r}`]:[]].join(";")}function CL(t,e){return["[Appearance]",`ColorScheme=${_(t.name)}`,"","[Cursor Options]",`CustomCursorColor=${ct(t.cursor).join(",")}`,`CustomCursorTextColor=${ct(t.background).join(",")}`,"UseCustomCursorColor=true","","[General]",`Name=${sc(t.name)}`,`Parent=${e}`,""].join(`
435
- `)}var U1=/^ttheme-(.+)\.([0-9a-f]{8})\.colorscheme$/;function jL(t){return TL("sha1").update(t).digest("hex").slice(0,8)}function L1(t,e){let n=Co(t.home),r=X(t.configHome),i=new Set;for(let s of t.themes){let o=vm(s,Le(r,s.name,t.home)),a=os(n,`${_(s.name)}.${jL(o)}.colorscheme`);i.add(a),e.write(os(n,`${_(s.name)}.colorscheme`),o),e.write(a,o)}for(let s of Ho(n))if(U1.test(F1(s))&&!i.has(s))e.remove(s)}function _L(t){return Ho(t).flatMap((e)=>{let[,n,r]=U1.exec(F1(e))??[];return n&&r?[`${n} ${r}`]:[]}).sort().join(" ")}function BL(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 op=["--session","--print-reply","--reply-timeout=2000"];function GL(t){return[...(t.run("dbus-send",[...op,"--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",[...op,`--dest=${n}`,"/Windows","org.freedesktop.DBus.Introspectable.Introspect"])?.match(/<node name="(\d+)"/)?.[1];return i?[{service:n,window:`/Windows/${i}`}]:[]})}function UL(t,{service:e,window:n},r){let i=(s,...o)=>t.run("dbus-send",[...op,`--dest=${e}`,n,`org.kde.konsole.Window.${s}`,...o]);return i("setDefaultProfile",`string:${r}`),i("defaultProfile")?.includes(`string "${r}"`)===!0}function WL(t,e){let n=B1(t,e);return n?ui(ft(n),"General","Name"):void 0}function KL(t){return ui(ft(ic(t)),"Desktop Entry","DefaultProfile")}var zL={key:"konsoleBase",profile:sc,base(t){let e=KL(t.configHome);return e&&!e.startsWith(_(""))?{...t.state,konsoleBase:e}:t.state},point(t,e){let n=ic(t.configHome),r=ft(n),i=ui(r,"Desktop Entry","DefaultProfile"),s=i?.startsWith(_(""))===!0,o=t.startup?e||s?C1(t.startup):void 0:s?t.state.konsoleBase??"":void 0;if(o===void 0||o===(i??"")&&!e)return;if(o!==(i??""))In(n,_1(r,o||void 0));let a=t.startup?sc(t.startup):o?WL(t,o):void 0,c=GL(t.host),u=a!==void 0&&c.every((f)=>UL(t.host,f,a));return{restart:c.length>0&&!u}}},W1={id:"konsole",name:"Konsole",emitter:Sm,shelf:{from:"",dir:(t)=>Co(t.home)},offered:(t,e)=>e.platform!=="darwin"&&e.platform!=="win32",present:(t)=>Ml(Co(t.home))||Ml(ic(t.configHome)),sync(t,e){L1(t,e);let n=Co(t.home),r=t.state.konsoleBase??"FALLBACK/",i=new Set;for(let s of BL(t)){let o=os(n,C1(s.name));i.add(o),e.write(o,CL(s,r))}for(let s of Ho(n))if(s.endsWith(".profile")&&!i.has(s))e.remove(s)},pictures:L1,layer:(t)=>({TTHEME_KONSOLE_BASE:FL(t,t.state.konsoleBase),TTHEME_KONSOLE_SCHEMES:_L(Co(t.home))}),plan(t){return[`Write ${ht(Co(t.home),t.home)}/${_("*")}.profile — a "ttheme · <palette>" profile per palette, on top of your own`,...t.startup?[`Edit ${ht(ic(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 "${sc(t.startup)}"`:`Konsole default "${sc(t.startup)}", which follows \`ttheme default\``);return n},unwire(t,e){let n=ic(t.configHome),r=ft(n),i=ui(r,"Desktop Entry","DefaultProfile")?.startsWith(_(""))===!0;return{edits:i?[{file:n,content:_1(r,e?.konsoleBase)}]:[],removals:i?[]:uu(n),touches:[]}},defaults:zL};import{createHash as DL}from"node:crypto";import{existsSync as D1,readdirSync as qL,readFileSync as JL,rmSync as YL}from"node:fs";import{join as as}from"node:path";var q1="com.apple.Terminal",oc="ttheme · ";function yn(t){return`${oc}${t}`}function xl(t){return as(t,"ttheme","terminal-app.js")}function jo(t){return as(t,"ttheme","terminal-app")}function VL(t,e){return as(t.XDG_STATE_HOME??as(e,".local","state"),"ttheme","terminal-app.window")}var ZL=`ObjC.import('AppKit')
433
+ `;let s=n.findIndex((a,c)=>c>r[0]&&c<r[1]&&np("DefaultProfile").test(a));if(s>=0)n.splice(s,1,...i);else n.splice(r[0]+1,0,...i);let o=r[1]+i.length-(s>=0?1:0);if(n.slice(r[0]+1,o).every((a)=>a.trim()==="")){let a=r[0]>0&&n[r[0]-1]?.trim()===""?r[0]-1:r[0],c=o===n.length&&n[o-1]===""?o-1:o;n.splice(a,c-a)}return n.join(`
434
+ `)}function HF(t){if(t&&we(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 j1(t,e){let n=e.endsWith(".profile")?e:`${e}.profile`;if(TF(n))return Sl(n)?n:void 0;let r=n.includes("/")?n:is("konsole",n);return[Va(t.home),...(process.env.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((s)=>is(s,r)).find((s)=>Sl(s))}function _1(t,e,n=0){let r=e&&e!=="FALLBACK/"&&n<8?j1(t,e):void 0;if(!r)return{};let i=ut(r),s=_1(t,ui(i,"General","Parent"),n+1);return{scheme:ui(i,"Appearance","ColorScheme")||s.scheme,use:ui(i,"Cursor Options","UseCustomCursorColor")??s.use,cursor:ui(i,"Cursor Options","CustomCursorColor")??s.cursor}}function FF(t,e){let n=_1(t,e),r=n.use==="true"?HF(n.cursor):void 0;return[`ColorScheme=${n.scheme??"Breeze"}`,`UseCustomCursorColor=${r?"true":"false"}`,...r?[`customCursorColor=${r}`]:[]].join(";")}function LF(t,e){return["[Appearance]",`ColorScheme=${j(t.name)}`,"","[Cursor Options]",`CustomCursorColor=${st(t.cursor).join(",")}`,`CustomCursorTextColor=${st(t.background).join(",")}`,"UseCustomCursorColor=true","","[General]",`Name=${nc(t.name)}`,`Parent=${e}`,""].join(`
435
+ `)}var B1=/^ttheme-(.+)\.([0-9a-f]{8})\.colorscheme$/;function CF(t){return NF("sha1").update(t).digest("hex").slice(0,8)}function T1(t,e){let n=Ho(t.home),r=X(t.configHome),i=new Set;for(let s of t.themes){let o=$m(s,He(r,s.name,t.home)),a=is(n,`${j(s.name)}.${CF(o)}.colorscheme`);i.add(a),e.write(is(n,`${j(s.name)}.colorscheme`),o),e.write(a,o)}for(let s of Ao(n))if(B1.test(H1(s))&&!i.has(s))e.remove(s)}function jF(t){return Ao(t).flatMap((e)=>{let[,n,r]=B1.exec(H1(e))??[];return n&&r?[`${n} ${r}`]:[]}).sort().join(" ")}function _F(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 rp=["--session","--print-reply","--reply-timeout=2000"];function BF(t){return[...(t.run("dbus-send",[...rp,"--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",[...rp,`--dest=${n}`,"/Windows","org.freedesktop.DBus.Introspectable.Introspect"])?.match(/<node name="(\d+)"/)?.[1];return i?[{service:n,window:`/Windows/${i}`}]:[]})}function GF(t,{service:e,window:n},r){let i=(s,...o)=>t.run("dbus-send",[...rp,`--dest=${e}`,n,`org.kde.konsole.Window.${s}`,...o]);return i("setDefaultProfile",`string:${r}`),i("defaultProfile")?.includes(`string "${r}"`)===!0}function UF(t,e){let n=j1(t,e);return n?ui(ut(n),"General","Name"):void 0}function WF(t){return ui(ut(ec(t)),"Desktop Entry","DefaultProfile")}var KF={key:"konsoleBase",profile:nc,base(t){let e=WF(t.configHome);return e&&!e.startsWith(j(""))?{...t.state,konsoleBase:e}:t.state},point(t,e){let n=ec(t.configHome),r=ut(n),i=ui(r,"Desktop Entry","DefaultProfile"),s=i?.startsWith(j(""))===!0,o=t.startup?e||s?F1(t.startup):void 0:s?t.state.konsoleBase??"":void 0;if(o===void 0||o===(i??"")&&!e)return;if(o!==(i??""))xn(n,C1(r,o||void 0));let a=t.startup?nc(t.startup):o?UF(t,o):void 0,c=BF(t.host),u=a!==void 0&&c.every((f)=>GF(t.host,f,a));return{restart:c.length>0&&!u}}},G1={id:"konsole",name:"Konsole",emitter:km,shelf:{from:"",dir:(t)=>Ho(t.home)},offered:(t,e)=>e.platform!=="darwin"&&e.platform!=="win32",present:(t)=>Sl(Ho(t.home))||Sl(ec(t.configHome)),sync(t,e){T1(t,e);let n=Ho(t.home),r=t.state.konsoleBase??"FALLBACK/",i=new Set;for(let s of _F(t)){let o=is(n,F1(s.name));i.add(o),e.write(o,LF(s,r))}for(let s of Ao(n))if(s.endsWith(".profile")&&!i.has(s))e.remove(s)},pictures:T1,layer:(t)=>({TTHEME_KONSOLE_BASE:FF(t,t.state.konsoleBase),TTHEME_KONSOLE_SCHEMES:jF(Ho(t.home))}),plan(t){return[`Write ${dt(Ho(t.home),t.home)}/${j("*")}.profile — a "ttheme · <palette>" profile per palette, on top of your own`,...t.startup?[`Edit ${dt(ec(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 "${nc(t.startup)}"`:`Konsole default "${nc(t.startup)}", which follows \`ttheme default\``);return n},unwire(t,e){let n=ec(t.configHome),r=ut(n),i=ui(r,"Desktop Entry","DefaultProfile")?.startsWith(j(""))===!0;return{edits:i?[{file:n,content:C1(r,e?.konsoleBase)}]:[],removals:i?[]:ou(n),touches:[]}},defaults:KF};import{createHash as zF}from"node:crypto";import{existsSync as K1,readdirSync as DF,readFileSync as qF,rmSync as JF}from"node:fs";import{join as ss}from"node:path";var z1="com.apple.Terminal",rc="ttheme · ";function wn(t){return`${rc}${t}`}function El(t){return ss(t,"ttheme","terminal-app.js")}function Fo(t){return ss(t,"ttheme","terminal-app")}function YF(t,e){return ss(t.XDG_STATE_HOME??ss(e,".local","state"),"ttheme","terminal-app.window")}var VF=`ObjC.import('AppKit')
436
436
 
437
- const OURS = '${oc}'
437
+ const OURS = '${rc}'
438
438
  const IMAGE = 'BackgroundImageBookmark'
439
439
  const KEYS = ['BackgroundColor', 'TextColor', 'CursorColor', 'SelectionColor', 'ANSIBlackColor', 'ANSIRedColor',
440
440
  'ANSIGreenColor', 'ANSIYellowColor', 'ANSIBlueColor', 'ANSIMagentaColor', 'ANSICyanColor', 'ANSIWhiteColor',
@@ -618,68 +618,68 @@ function run(argv) {
618
618
  }
619
619
  return changed ? 'wrote' : 'same'
620
620
  }
621
- `;function ap(t,e,n){return t.run("osascript",["-l","JavaScript",xl(e),...n])}function cp(t){return t.run("defaults",["read",q1,"Default Window Settings"])||void 0}function XL(t){return[t.background,t.foreground,t.cursor,t.selectionBackground,...t.ansi]}function J1(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 up(t,e){let n=cp(e);return t.terminalBase??(n&&!n.startsWith(oc)?n:"Basic")}function lp(t,e){let n=/^(\d+)x(\d+)$/.exec(ft(VL(t,e)).trim());return n?{width:Number(n[1])*2,height:Number(n[2])*2}:void 0}function fp(t,e,n,r){let i=r?.width??t,s=r?.height??e,o=Jt.indexOf(n.position)+1||5,a=lo(t,e,i,s,100,o,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(s*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 Y1=/^ttheme-(.+)\.([0-9a-z-]+)\.png$/;function Ol(t){let e=new Map;for(let n of D1(t)?qL(t):[]){let[,r]=Y1.exec(n)??[];if(r)e.set(r,[...e.get(r)??[],n])}return e}function QL(t){return[...Ol(t)].map(([e,n])=>`${e} ${(Y1.exec(n[0])??[])[2]}`).sort().join(" ")}function K1(t){let e=jo(t.configHome),n=Ol(e),r=lp(t.host.env,t.home),i=new Map,s=(o)=>{for(let a of o)YL(as(e,a),{force:!0})};for(let o of J1(t)){let a=n.get(de(o.name))??[];n.delete(de(o.name));let c=Le(X(t.configHome),o.name,t.home),u=c&&D1(c.image)?new Uint8Array(JL(c.image)):void 0,f=u&&Nn(u);if(!c||!u||!f||c.opacity<=0){s(a);continue}let l=fp(f.width,f.height,c,r),d=DL("sha1").update(u).update(JSON.stringify([o.background.toLowerCase(),c.opacity,l])).digest("hex").slice(0,8),h=`${_(o.name)}.${d}.png`,m=as(e,h);if(!a.includes(h)){let p;try{p=Ur(Br(Wt(u),o.background,c.opacity,l))}catch{s(a);continue}let[b,...$]=a;if(b)Ni(as(e,b),m,p);else H(m,p);s($)}else s(a.filter((p)=>p!==h));i.set(o.name,m)}for(let o of n.values())s(o);return i}function z1(t,e){ap(t.host,t.configHome,["write",up(t.state,t.host),...J1(t).flatMap((n)=>[yn(n.name),...XL(n),e.get(n.name)??"-"])])}var tF={key:"terminalBase",profile:yn,base(t){let e=cp(t.host);return e&&!e.startsWith(oc)?{...t.state,terminalBase:e}:t.state},point(t,e){let n=cp(t.host),r=n?.startsWith(oc)===!0;if(t.state.palettes.length===0)ap(t.host,t.configHome,["drop"]);let i=t.startup?e||r?yn(t.startup):void 0:r?up(t.state,t.host):void 0;if(i===void 0||i===n&&!e)return;for(let o of["Default Window Settings","Startup Window Settings"])t.host.run("defaults",["write",q1,o,"-string",i]);return{restart:Boolean(t.host.run("pgrep",["-x","Terminal"]))&&ap(t.host,t.configHome,["loaded",i])!=="1"}}},V1={id:"terminal-app",name:"Terminal.app",emitter:Km,offered:(t,e)=>e.platform==="darwin",present:()=>!1,sync(t,e){e.write(xl(t.configHome),ZL),z1(t,K1(t))},pictures(t){z1(t,K1(t))},layer:(t,e)=>({TTHEME_TERMINAL_APP_BASE:up(t.state,e),TTHEME_TERMINAL_PICTURES:QL(jo(t.configHome))}),plan:(t)=>[`Add a "${yn("<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 "${yn(t.startup)}" Terminal.app's default — \`ttheme off\` puts yours back`]:[]],notes:()=>[],next(t,e){let n=[`Terminal.app A "${yn("<palette>")}" profile per palette in Settings › Profiles`];if(t.startup)n.push(e?.restart?`Restart Terminal New windows and tabs open on "${yn(t.startup)}"`:`Terminal default "${yn(t.startup)}", which follows \`ttheme default\``);return n},unwire:()=>({edits:[],removals:[],touches:[]}),defaults:tF};import{spawn as eF}from"node:child_process";import{randomUUID as nF}from"node:crypto";import{existsSync as li,mkdirSync as Z1,readdirSync as dp,readFileSync as hp,realpathSync as rF,rmSync as X1,writeFileSync as Q1}from"node:fs";import{dirname as mp,join as xe}from"node:path";function cs(t){return process.platform==="darwin"?xe(t,".warp","themes"):xe(Qa(t),"warp-terminal","themes")}function fi(t,e){return process.platform==="darwin"?xe(t,".warp","settings.toml"):xe(e,"warp-terminal","settings.toml")}var Il='"dark"';function Rl(t){return xe(t,"ttheme","warp.base")}function iF(t){return xe(t,"ttheme","warp.later")}var rv="[appearance.themes]";function iv(t){let e=t.findIndex((r)=>r.trim()===rv);if(e<0)return;let n=t.findIndex((r,i)=>i>e&&r.trimStart().startsWith("["));return[e,n<0?t.length:n]}function di(t){let e=t.split(`
622
- `),n=iv(e);if(!n)return;return e.slice(n[0]+1,n[1]).find((i)=>/^theme\s*=/.test(i))?.replace(/^theme\s*=\s*/,"").trim()}function pp(t,e=`${_(t)}.yaml`){return`{ custom = { name = "${t}", path = "${e}" } }`}function sF(t){return t?.includes(`path = "${_("")}`)===!0?/name = "([^"]+)"/.exec(t)?.[1]:void 0}function Al(t,e){let n=t.split(`
623
- `),r=iv(n);if(!r)return e===void 0?t:`${t.replace(/\n*$/,`
621
+ `;function ip(t,e,n){return t.run("osascript",["-l","JavaScript",El(e),...n])}function sp(t){return t.run("defaults",["read",z1,"Default Window Settings"])||void 0}function ZF(t){return[t.background,t.foreground,t.cursor,t.selectionBackground,...t.ansi]}function D1(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 op(t,e){let n=sp(e);return t.terminalBase??(n&&!n.startsWith(rc)?n:"Basic")}function ap(t,e){let n=/^(\d+)x(\d+)$/.exec(ut(YF(t,e)).trim());return n?{width:Number(n[1])*2,height:Number(n[2])*2}:void 0}function cp(t,e,n,r){let i=r?.width??t,s=r?.height??e,o=Jt.indexOf(n.position)+1||5,a=co(t,e,i,s,100,o,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(s*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 q1=/^ttheme-(.+)\.([0-9a-z-]+)\.png$/;function Ml(t){let e=new Map;for(let n of K1(t)?DF(t):[]){let[,r]=q1.exec(n)??[];if(r)e.set(r,[...e.get(r)??[],n])}return e}function XF(t){return[...Ml(t)].map(([e,n])=>`${e} ${(q1.exec(n[0])??[])[2]}`).sort().join(" ")}function U1(t){let e=Fo(t.configHome),n=Ml(e),r=ap(t.host.env,t.home),i=new Map,s=(o)=>{for(let a of o)JF(ss(e,a),{force:!0})};for(let o of D1(t)){let a=n.get(de(o.name))??[];n.delete(de(o.name));let c=He(X(t.configHome),o.name,t.home),u=c&&K1(c.image)?new Uint8Array(qF(c.image)):void 0,f=u&&In(u);if(!c||!u||!f||c.opacity<=0){s(a);continue}let l=cp(f.width,f.height,c,r),d=zF("sha1").update(u).update(JSON.stringify([o.background.toLowerCase(),c.opacity,l])).digest("hex").slice(0,8),h=`${j(o.name)}.${d}.png`,m=ss(e,h);if(!a.includes(h)){let p;try{p=Gr(_r(Wt(u),o.background,c.opacity,l))}catch{s(a);continue}let[b,...$]=a;if(b)Ai(ss(e,b),m,p);else C(m,p);s($)}else s(a.filter((p)=>p!==h));i.set(o.name,m)}for(let o of n.values())s(o);return i}function W1(t,e){ip(t.host,t.configHome,["write",op(t.state,t.host),...D1(t).flatMap((n)=>[wn(n.name),...ZF(n),e.get(n.name)??"-"])])}var QF={key:"terminalBase",profile:wn,base(t){let e=sp(t.host);return e&&!e.startsWith(rc)?{...t.state,terminalBase:e}:t.state},point(t,e){let n=sp(t.host),r=n?.startsWith(rc)===!0;if(t.state.palettes.length===0)ip(t.host,t.configHome,["drop"]);let i=t.startup?e||r?wn(t.startup):void 0:r?op(t.state,t.host):void 0;if(i===void 0||i===n&&!e)return;for(let o of["Default Window Settings","Startup Window Settings"])t.host.run("defaults",["write",z1,o,"-string",i]);return{restart:Boolean(t.host.run("pgrep",["-x","Terminal"]))&&ip(t.host,t.configHome,["loaded",i])!=="1"}}},J1={id:"terminal-app",name:"Terminal.app",emitter:Gm,offered:(t,e)=>e.platform==="darwin",present:()=>!1,sync(t,e){e.write(El(t.configHome),VF),W1(t,U1(t))},pictures(t){W1(t,U1(t))},layer:(t,e)=>({TTHEME_TERMINAL_APP_BASE:op(t.state,e),TTHEME_TERMINAL_PICTURES:XF(Fo(t.configHome))}),plan:(t)=>[`Add a "${wn("<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 "${wn(t.startup)}" Terminal.app's default — \`ttheme off\` puts yours back`]:[]],notes:()=>[],next(t,e){let n=[`Terminal.app A "${wn("<palette>")}" profile per palette in Settings › Profiles`];if(t.startup)n.push(e?.restart?`Restart Terminal New windows and tabs open on "${wn(t.startup)}"`:`Terminal default "${wn(t.startup)}", which follows \`ttheme default\``);return n},unwire:()=>({edits:[],removals:[],touches:[]}),defaults:QF};import{spawn as tL}from"node:child_process";import{randomUUID as eL}from"node:crypto";import{existsSync as li,mkdirSync as Y1,readdirSync as up,readFileSync as lp,realpathSync as nL,rmSync as V1,writeFileSync as Z1}from"node:fs";import{dirname as fp,join as xe}from"node:path";function os(t){return process.platform==="darwin"?xe(t,".warp","themes"):xe(Va(t),"warp-terminal","themes")}function fi(t,e){return process.platform==="darwin"?xe(t,".warp","settings.toml"):xe(e,"warp-terminal","settings.toml")}var Ol='"dark"';function Pl(t){return xe(t,"ttheme","warp.base")}function rL(t){return xe(t,"ttheme","warp.later")}var ev="[appearance.themes]";function nv(t){let e=t.findIndex((r)=>r.trim()===ev);if(e<0)return;let n=t.findIndex((r,i)=>i>e&&r.trimStart().startsWith("["));return[e,n<0?t.length:n]}function di(t){let e=t.split(`
622
+ `),n=nv(e);if(!n)return;return e.slice(n[0]+1,n[1]).find((i)=>/^theme\s*=/.test(i))?.replace(/^theme\s*=\s*/,"").trim()}function dp(t,e=`${j(t)}.yaml`){return`{ custom = { name = "${t}", path = "${e}" } }`}function iL(t){return t?.includes(`path = "${j("")}`)===!0?/name = "([^"]+)"/.exec(t)?.[1]:void 0}function Il(t,e){let n=t.split(`
623
+ `),r=nv(n);if(!r)return e===void 0?t:`${t.replace(/\n*$/,`
624
624
  `)}
625
- ${rv}
625
+ ${ev}
626
626
  theme = ${e}
627
627
  `;let i=n.findIndex((s,o)=>o>r[0]&&o<r[1]&&/^theme\s*=/.test(s));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(`
628
- `)}function Pl(t){return di(t)?.includes(`path = "${_("")}`)===!0}var oF="setTimeout(() => { const fs = require('node:fs'); const [file, next, seen, theme, later, token] = process.argv.slice(-6); if (!fs.existsSync(later) || fs.readFileSync(later, 'utf8') !== token || 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 sv(t,e,n){return{image:xe(t,h1(e.name,n.image,e.background)),opacity:n.opacity}}function tv(t){let e=cs(t.home),n=X(t.configHome),r=new Map,i=new Set;for(let s of t.themes){let o=Le(n,s.name,t.home),a=tc(s.name,o&&sv(e,s,o));r.set(s.name,a);for(let c of new Set([a,tc(s.name)]))if(!li(xe(e,c)))i.add(c)}return{files:r,fresh:i}}function ev(t,e,n){let r=cs(t.home),i=X(t.configHome),s=new Set(n.values()),o=di(ft(fi(t.home,t.configHome)))??"";for(let u of t.themes){let f=Le(i,u.name,t.home),l=n.get(u.name);if(f&&l){let d=sv(r,u,f);if(!li(d.image))try{let h=Wt(new Uint8Array(hp(f.image)));H(d.image,Ur(Br(h,u.background,1)))}catch{n.set(u.name,tc(u.name));continue}e.write(xe(r,l),ec(u,d))}}if(!li(r))return;let a=(u,f)=>u.startsWith(_(""))&&new RegExp(`\\.[0-9a-f]{8}\\.${f}$`).test(u);for(let u of dp(r))if(a(u,"yaml")&&!s.has(u)&&!o.includes(`path = "${u}"`))e.remove(xe(r,u));let c=new Set(dp(r).values().filter((u)=>u.startsWith(_(""))&&u.endsWith(".yaml")).map((u)=>/^ {2}path: "(.+)"$/m.exec(ft(xe(r,u)))?.[1]).filter((u)=>u!==void 0));for(let u of dp(r))if(a(u,"png")&&!c.has(xe(r,u)))e.remove(xe(r,u))}function aF(t,e){let n=process.env.TTHEME_WARP_WEARS;return t!==void 0&&n!==void 0&&e.files.has(n)?n:t}function nv(t,e,n,r=!1){let i=fi(t.home,t.configHome);if(!li(i))return;let s=Rl(t.configHome),o=hp(i,"utf8"),a=r?sF(di(o)):e;if(r&&(a===void 0||!n.files.has(a)))return;let c=iF(t.configHome);X1(c,{force:!0});let u;if(a){if(!Pl(o)&&!li(s))Z1(mp(s),{recursive:!0}),Q1(s,di(o)??"");u=pp(a,n.files.get(a))}else{if(!Pl(o))return;u=li(s)&&hp(s,"utf8")||Il,X1(s,{force:!0})}let f=Al(o,u);if(f===o)return;let l=a===void 0?void 0:n.files.get(a)??`${_(a)}.yaml`;if(l!==void 0&&n.fresh.has(l)){yd(i);let d=nF();Z1(mp(c),{recursive:!0}),Q1(c,d),eF(process.execPath,["-e",oF,rF(i),f,o,xe(cs(t.home),l),c,d],{detached:!0,stdio:"ignore"}).unref()}else In(i,f);return i}var gp={id:"warp",name:"Warp",emitter:zm,shelf:{from:"themes",dir:(t)=>cs(t.home)},bakes:!0,offered:(t,e)=>e.platform!=="win32",present:(t)=>li(mp(cs(t.home))),sync(t,e){let n=tv(t);e.themes(gp),ev(t,e,n.files);let r=nv(t,aF(t.startup,n),n);if(r)e.note(r)},pictures(t,e){let n=tv(t);ev(t,e,n.files),nv(t,void 0,n,!0)},plan(t){let e=fi(t.home,t.configHome);return t.startup&&li(e)?[`Edit ${ht(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=fi(t.home,t.configHome),n=ft(e);return{edits:Pl(n)?[{file:e,content:Al(n,ft(Rl(t.configHome))||Il)}]:[],removals:Pl(n)?[]:uu(e),touches:[]}}};import{existsSync as Hl}from"node:fs";import{join as _o}from"node:path";var ov=/-- ttheme begin\n[\s\S]*?-- ttheme end\n?/,cF=/^return config[ \t]*$/gm;function uF(t,e){let n=ri(t,e,""),r=n===void 0?JSON.stringify(t):`require('wezterm').home_dir .. ${JSON.stringify(n)}`;return`-- ${Me}
629
- do local path = ${r} local file = io.open(path) if file then file:close() dofile(path)(config) end end`}var cv=`local wezterm = require 'wezterm'
628
+ `)}function xl(t){return di(t)?.includes(`path = "${j("")}`)===!0}var sL="setTimeout(() => { const fs = require('node:fs'); const [file, next, seen, theme, later, token] = process.argv.slice(-6); if (!fs.existsSync(later) || fs.readFileSync(later, 'utf8') !== token || 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 rv(t,e,n){return{image:xe(t,f1(e.name,n.image,e.background)),opacity:n.opacity}}function X1(t){let e=os(t.home),n=X(t.configHome),r=new Map,i=new Set;for(let s of t.themes){let o=He(n,s.name,t.home),a=Za(s.name,o&&rv(e,s,o));r.set(s.name,a);for(let c of new Set([a,Za(s.name)]))if(!li(xe(e,c)))i.add(c)}return{files:r,fresh:i}}function Q1(t,e,n){let r=os(t.home),i=X(t.configHome),s=new Set(n.values()),o=di(ut(fi(t.home,t.configHome)))??"";for(let u of t.themes){let f=He(i,u.name,t.home),l=n.get(u.name);if(f&&l){let d=rv(r,u,f);if(!li(d.image))try{let h=Wt(new Uint8Array(lp(f.image)));C(d.image,Gr(_r(h,u.background,1)))}catch{n.set(u.name,Za(u.name));continue}e.write(xe(r,l),Xa(u,d))}}if(!li(r))return;let a=(u,f)=>u.startsWith(j(""))&&new RegExp(`\\.[0-9a-f]{8}\\.${f}$`).test(u);for(let u of up(r))if(a(u,"yaml")&&!s.has(u)&&!o.includes(`path = "${u}"`))e.remove(xe(r,u));let c=new Set(up(r).values().filter((u)=>u.startsWith(j(""))&&u.endsWith(".yaml")).map((u)=>/^ {2}path: "(.+)"$/m.exec(ut(xe(r,u)))?.[1]).filter((u)=>u!==void 0));for(let u of up(r))if(a(u,"png")&&!c.has(xe(r,u)))e.remove(xe(r,u))}function oL(t,e){let n=process.env.TTHEME_WARP_WEARS;return t!==void 0&&n!==void 0&&e.files.has(n)?n:t}function tv(t,e,n,r=!1){let i=fi(t.home,t.configHome);if(!li(i))return;let s=Pl(t.configHome),o=lp(i,"utf8"),a=r?iL(di(o)):e;if(r&&(a===void 0||!n.files.has(a)))return;let c=rL(t.configHome);V1(c,{force:!0});let u;if(a){if(!xl(o)&&!li(s))Y1(fp(s),{recursive:!0}),Z1(s,di(o)??"");u=dp(a,n.files.get(a))}else{if(!xl(o))return;u=li(s)&&lp(s,"utf8")||Ol,V1(s,{force:!0})}let f=Il(o,u);if(f===o)return;let l=a===void 0?void 0:n.files.get(a)??`${j(a)}.yaml`;if(l!==void 0&&n.fresh.has(l)){wd(i);let d=eL();Y1(fp(c),{recursive:!0}),Z1(c,d),tL(process.execPath,["-e",sL,nL(i),f,o,xe(os(t.home),l),c,d],{detached:!0,stdio:"ignore"}).unref()}else xn(i,f);return i}var hp={id:"warp",name:"Warp",emitter:Um,shelf:{from:"themes",dir:(t)=>os(t.home)},bakes:!0,offered:(t,e)=>e.platform!=="win32",present:(t)=>li(fp(os(t.home))),sync(t,e){let n=X1(t);e.themes(hp),Q1(t,e,n.files);let r=tv(t,oL(t.startup,n),n);if(r)e.note(r)},pictures(t,e){let n=X1(t);Q1(t,e,n.files),tv(t,void 0,n,!0)},plan(t){let e=fi(t.home,t.configHome);return t.startup&&li(e)?[`Edit ${dt(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=fi(t.home,t.configHome),n=ut(e);return{edits:xl(n)?[{file:e,content:Il(n,ut(Pl(t.configHome))||Ol)}]:[],removals:xl(n)?[]:ou(e),touches:[]}}};import{existsSync as Nl}from"node:fs";import{join as Lo}from"node:path";var iv=/-- ttheme begin\n[\s\S]*?-- ttheme end\n?/,aL=/^return config[ \t]*$/gm;function cL(t,e){let n=ri(t,e,""),r=n===void 0?JSON.stringify(t):`require('wezterm').home_dir .. ${JSON.stringify(n)}`;return`-- ${Me}
629
+ do local path = ${r} local file = io.open(path) if file then file:close() dofile(path)(config) end end`}var ov=`local wezterm = require 'wezterm'
630
630
  local config = wezterm.config_builder()
631
631
 
632
- `;function lF(t){let e=t.replace(/-- ttheme begin\n[\s\S]*?-- ttheme end\n\n?/,"");return e===`${cv}return config
633
- `?"":e}function bp(t,e){let n=`-- ttheme begin
632
+ `;function uL(t){let e=t.replace(/-- ttheme begin\n[\s\S]*?-- ttheme end\n\n?/,"");return e===`${ov}return config
633
+ `?"":e}function mp(t,e){let n=`-- ttheme begin
634
634
  ${e}
635
635
  -- ttheme end
636
- `;if(ov.test(t))return t.replace(ov,n);if(t==="")return`${cv}${n}
636
+ `;if(iv.test(t))return t.replace(iv,n);if(t==="")return`${ov}${n}
637
637
  return config
638
- `;let r=[...t.matchAll(cF)].at(-1);if(r?.index===void 0)return;return`${t.slice(0,r.index)}${n}
639
- ${t.slice(r.index)}`}function Nl(t,e){let n=_o(e,".wezterm.lua");return Hl(n)?n:_o(t,"wezterm","wezterm.lua")}function av(t){return _o(t.configHome,"wezterm","colors")}function Tl(t){return _o(t.configHome,"ttheme","wezterm.lua")}var wp={id:"wezterm",name:"WezTerm",emitter:Dm,shelf:{from:"colors",dir:av},offered:()=>!0,present:(t)=>Hl(_o(t.configHome,"wezterm"))||Hl(_o(t.home,".wezterm.lua")),sync(t,e){e.themes(wp),e.write(Tl(t),g1({path:Tl(t),colors:av(t),backgrounds:X(t.configHome),...t.startup?{startup:t.startup}:{},palettes:t.themes}));let n=Nl(t.configHome,t.home),r=bp(ft(n),uF(Tl(t),t.home));if(r!==void 0)e.wire(n,r)},plan(t){let e=Nl(t.configHome,t.home);return bp(ft(e),"")!==void 0?[`Edit ${ht(e,t.home)} — a ttheme block before \`return config\`: color_scheme_dirs, color_scheme, pictures`]:[]},notes(t){let e=Nl(t.configHome,t.home);return Hl(e)&&bp(ft(e),"")===void 0?[`${e} has no \`return config\` line — ttheme left it alone; call \`dofile("${Tl(t)}")(config)\` from it yourself`]:[]},next:()=>["WezTerm Reloads its config by itself"],unwire:(t)=>({edits:$n(Nl(t.configHome,t.home),lF),removals:[],touches:[]})};import{existsSync as lv,readFileSync as fF,utimesSync as dF}from"node:fs";import{dirname as hF,join as Ll}from"node:path";function $p(t){return Ll(t,"Microsoft","Windows Terminal","Fragments","ttheme","ttheme.json")}function uv(t){return[Ll(t,"Packages","Microsoft.WindowsTerminal_8wekyb3d8bbwe","LocalState","settings.json"),Ll(t,"Packages","Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe","LocalState","settings.json"),Ll(t,"Microsoft","Windows Terminal","settings.json")].filter((e)=>lv(e))}function mF(t){return t.values().map((e)=>/"defaultProfile"\s*:\s*"(\{[0-9a-fA-F-]+\})"/.exec(fF(e,"utf8"))?.[1]).find((e)=>e!==void 0)}function fv(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 dv={id:"windows-terminal",name:"Windows Terminal",emitter:Jm,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=uv(n);if(e.write($p(n),qm(t.themes,r??mF(i),t.startup))){let s=new Date;for(let o of i)dF(o,s,s);if(i.length>0)e.repaint()}},plan:(t)=>t.state.wtHome?[`Write ${$p(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?hF($p(n)):void 0;return{edits:[],removals:r&&lv(r)?[r]:[],touches:n?uv(n):[]}}};var yr={ghostty:tp,kitty:ip,alacritty:Qm,wezterm:wp,iterm2:A1,"windows-terminal":dv,warp:gp,konsole:W1,"terminal-app":V1};function vt(t=se){return t.map((e)=>yr[e])}function ls(t){return t.startup&&t.palettes.includes(t.startup)?t.startup:t.palettes[0]}function Ge(t){return t.off?void 0:ls(t)}function J(){return process.env.XDG_CONFIG_HOME??Bo(vn(),".config")}var us=(t)=>typeof t==="string"&&t!==""?t:void 0,pF={author:us,startup:us,off:(t)=>t?!0:void 0,itermBase:us,konsoleBase:us,terminalBase:us,wtHome:us,wtProfile:us,marketplaces:(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 D(t){let e=mn(t);if(!Fl(e))throw Error(`nothing installed yet at ${e} — run \`ttheme init\` first`);let n=JSON.parse(hv(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)=>se.includes(r)),...Object.fromEntries(Object.entries(pF).flatMap(([r,i])=>{let s=i(n[r]);return s===void 0?[]:[[r,s]]})),palettes:n.palettes}}function en(t,e){H(mn(t),`${JSON.stringify(e,null,2)}
640
- `)}function mv(t,e){let n=new Map(t.palettes.map((s)=>[s.name,s])),r=e.filter((s)=>!n.has(s));if(r.length>0){let s=new Set(t.palettes.flatMap((c)=>et(c.name)??[])),o=[...new Set(r.flatMap((c)=>et(c)??[])).difference(s)],a=o.length>0?`add ${o.join(", ")} first — \`ttheme marketplace search\` finds a marketplace's repository`:Yh(It(t.palettes),r);throw Error(`not in any marketplace: ${r.join(", ")} — ${a}`)}let i=new Set(e);return t.palettes.filter((s)=>i.has(s.name))}function ac(t,e,n){return{configHome:t,home:n,state:e,startup:Ge(e)}}function pv(t,e,n,r,i){return{...ac(t,n,r),entries:e,themes:e.map(Fe),host:i}}function gv(t){let e=[],n={written:e,repainted:!1,write(r,i){if(e.push(r),Fl(r)&&hv(r,"utf8")===i)return!1;return H(r,i),!0},wire(r,i){e.push(r),In(r,i)},note(r){e.push(r)},remove(r){kp(r,{force:!0})},themes(r){let i=r.shelf?.dir(t);if(!i)return;for(let s of t.themes)for(let{file:o,content:a}of jm(r,s))n.write(Bo(i,o),a)},repaint(){n.repainted=!0}};return n}function gF(t,e){return Object.assign({},...vt(t.state.terminals).map((n)=>n.layer?.(t,e)??{}))}function Dt(t,e,n,r=vn(),i=tn()){Tt(X(t));let s=mv(hr(t,e),n.palettes),o=Gu(s,Kt(t));D$(t,new Map(o.map((u)=>[u.name,ao(u)]))),L$(t),vo(t,s);let a=pv(t,o,n,r,i),c=gv(a);for(let u of vt(n.terminals))u.sync(a,c);return c.written.push($v(a,i,c.repainted)),wv(t,o,r),c.written}function bv(t,e=vn()){if(!Fl(Bo(t,"ttheme","palettes.zsh")))return;let n=new Set(D(t).palettes);wv(t,ve(t).palettes.filter((r)=>n.has(r.name)),e)}function wv(t,e,n){let r=Bo(t,"ttheme","aliases.zsh"),i=i1(bF(e,n));if(ft(r)!==i)H(r,i)}function bF(t,e){let n=t.flatMap((s)=>s.booru?[s.booru]:[]),r=Rh(n,e),i={};for(let s of t){let o=new Set(s.nativeNames??[]),a=(s.booru?r.get(s.booru)??[]:[]).filter((c)=>!o.has(c));if(a.length>0)i[s.name]=a}return i}function $v(t,e,n){let r=Bo(t.configHome,"ttheme","palettes.zsh"),i=Fm(t.entries,t.startup,t.state.terminals,gF(t,e),Object.keys(Kt(t.configHome)));if(n||ft(r)!==i)H(r,i),kp(`${r}.zwc`,{force:!0});return r}function Ue(t,e=vn(),n=tn()){let r=D(t),i=vt(r.terminals).filter((a)=>a.pictures);if(i.length===0)return;let s=pv(t,mv(ve(t),r.palettes),r,e,n),o=gv(s);for(let a of i)a.pictures?.(s,o);$v(s,n,!1)}function fs(t){return!vt(t).some((e)=>e.bakes)}function Cl(t,e,n=vn()){let r=ac(t,e,n);return vt(e.terminals).flatMap((i)=>[...i.shelf?[`Write ${ht(i.shelf.dir(r),n)}/${_("*")} — a theme file per palette`]:[],...i.plan(r)])}function jl(t,e,n=vn()){let r=ac(t,e,n);return vt(e.terminals).flatMap((i)=>i.notes(r))}function _l(t,e,n,r=vn()){let i=ac(t,e,r);return vt(e.terminals).flatMap((s)=>s.next(i,n.get(s.id)))}function Go(t,e,n,r,i=vn()){let s=[],o=zt(t,e,!1).palettes.filter((a)=>r.includes(a.name));for(let a of vt(n)){let c=a.shelf?.dir({configHome:t,home:i});if(!c)continue;for(let u of o)for(let{file:f}of jm(a,Fe(u))){let l=Bo(c,f);if(Fl(l))kp(l,{force:!0}),s.push(l)}}return s}function kv(t,e,n,r){return{...ac(t,e,r),host:n}}function cc(t,e,n,r=vn()){return vt(e.terminals).reduce((i,s)=>s.defaults?.base(kv(t,i,n,r))??i,e)}function ds(t,e,n,r,i=vn()){let s=new Map;for(let o of vt(e.terminals)){let a=o.defaults?.point(kv(t,e,r,i),n);if(a)s.set(o.id,a)}return s}function nn(t,e,n,r,i=!1,s=tn(),o=vn()){let a=i||!Ge(n)&&Ge(r)!==void 0,c=a?cc(t,r,s,o):r;return Dt(t,e,c,o,s),en(t,c),a||Ge(n)!==Ge(r)?ds(t,c,a,s,o):new Map}import{performance as yv}from"node:perf_hooks";var wF=16,yp=80,vv="\x1B[?2026h",Sv="\x1B[?2026l";class hs{shown=[];pointer=new rm;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+wF-yv.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}=ny(()=>this.view());if(!t)return;this.last=yv.now();let{lines:n,zones:r}=sy(t.lines,e);this.pointer.zones=[...t.zones??[],...r];let i=this.wipe;this.wipe="";let s=new Set,o=Math.max(n.length,this.shown.length);for(let f=0;f<o;f++){let l=n[f];if(l!==this.shown[f])i+=`\x1B[${f+1};1H${Se}\x1B[2K${l??""}`,s.add(f)}this.shown=n;let a=t.after?.(s)??"",c=t.cursor??"",u=c!==""&&(i!==""||a!==""||c!==this.cursor);if(this.cursor=c,i||a||u)this.write(`${vv}${i}${a}${Se}${u?c:""}${Sv}`);this.tick(t.ticking===!0)};tick(t){if(t&&!this.ticker)this.ticker=setInterval(()=>{this.beat(),this.request()},yp);else if(!t&&this.ticker)clearInterval(this.ticker),this.ticker=void 0}}class vp{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(`
638
+ `;let r=[...t.matchAll(aL)].at(-1);if(r?.index===void 0)return;return`${t.slice(0,r.index)}${n}
639
+ ${t.slice(r.index)}`}function Rl(t,e){let n=Lo(e,".wezterm.lua");return Nl(n)?n:Lo(t,"wezterm","wezterm.lua")}function sv(t){return Lo(t.configHome,"wezterm","colors")}function Al(t){return Lo(t.configHome,"ttheme","wezterm.lua")}var pp={id:"wezterm",name:"WezTerm",emitter:Wm,shelf:{from:"colors",dir:sv},offered:()=>!0,present:(t)=>Nl(Lo(t.configHome,"wezterm"))||Nl(Lo(t.home,".wezterm.lua")),sync(t,e){e.themes(pp),e.write(Al(t),m1({path:Al(t),colors:sv(t),backgrounds:X(t.configHome),...t.startup?{startup:t.startup}:{},palettes:t.themes}));let n=Rl(t.configHome,t.home),r=mp(ut(n),cL(Al(t),t.home));if(r!==void 0)e.wire(n,r)},plan(t){let e=Rl(t.configHome,t.home);return mp(ut(e),"")!==void 0?[`Edit ${dt(e,t.home)} — a ttheme block before \`return config\`: color_scheme_dirs, color_scheme, pictures`]:[]},notes(t){let e=Rl(t.configHome,t.home);return Nl(e)&&mp(ut(e),"")===void 0?[`${e} has no \`return config\` line — ttheme left it alone; call \`dofile("${Al(t)}")(config)\` from it yourself`]:[]},next:()=>["WezTerm Reloads its config by itself"],unwire:(t)=>({edits:gn(Rl(t.configHome,t.home),uL),removals:[],touches:[]})};import{existsSync as cv,readFileSync as lL,utimesSync as fL}from"node:fs";import{dirname as dL,join as Tl}from"node:path";function gp(t){return Tl(t,"Microsoft","Windows Terminal","Fragments","ttheme","ttheme.json")}function av(t){return[Tl(t,"Packages","Microsoft.WindowsTerminal_8wekyb3d8bbwe","LocalState","settings.json"),Tl(t,"Packages","Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe","LocalState","settings.json"),Tl(t,"Microsoft","Windows Terminal","settings.json")].filter((e)=>cv(e))}function hL(t){return t.values().map((e)=>/"defaultProfile"\s*:\s*"(\{[0-9a-fA-F-]+\})"/.exec(lL(e,"utf8"))?.[1]).find((e)=>e!==void 0)}function uv(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 lv={id:"windows-terminal",name:"Windows Terminal",emitter:zm,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=av(n);if(e.write(gp(n),Km(t.themes,r??hL(i),t.startup))){let s=new Date;for(let o of i)fL(o,s,s);if(i.length>0)e.repaint()}},plan:(t)=>t.state.wtHome?[`Write ${gp(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?dL(gp(n)):void 0;return{edits:[],removals:r&&cv(r)?[r]:[],touches:n?av(n):[]}}};var $r={ghostty:Zm,kitty:ep,alacritty:Vm,wezterm:pp,iterm2:I1,"windows-terminal":lv,warp:hp,konsole:G1,"terminal-app":J1};function vt(t=se){return t.map((e)=>$r[e])}function cs(t){return t.startup&&t.palettes.includes(t.startup)?t.startup:t.palettes[0]}function Be(t){return t.off?void 0:cs(t)}function J(){return process.env.XDG_CONFIG_HOME??Co($n(),".config")}var as=(t)=>typeof t==="string"&&t!==""?t:void 0,mL={author:as,startup:as,off:(t)=>t?!0:void 0,itermBase:as,konsoleBase:as,terminalBase:as,wtHome:as,wtProfile:as,marketplaces:(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 D(t){let e=cr(t);if(!Hl(e))throw Error(`nothing installed yet at ${e} — run \`ttheme init\` first`);let n=JSON.parse(fv(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)=>se.includes(r)),...Object.fromEntries(Object.entries(mL).flatMap(([r,i])=>{let s=i(n[r]);return s===void 0?[]:[[r,s]]})),palettes:n.palettes}}function tn(t,e){C(cr(t),`${JSON.stringify(e,null,2)}
640
+ `)}function dv(t,e){let n=new Map(t.palettes.map((s)=>[s.name,s])),r=e.filter((s)=>!n.has(s));if(r.length>0){let s=new Set(t.palettes.flatMap((c)=>et(c.name)??[])),o=[...new Set(r.flatMap((c)=>et(c)??[])).difference(s)],a=o.length>0?`add ${o.join(", ")} first — \`ttheme marketplace search\` finds a marketplace's repository`:Dh(It(t.palettes),r);throw Error(`not in any marketplace: ${r.join(", ")} — ${a}`)}let i=new Set(e);return t.palettes.filter((s)=>i.has(s.name))}function ic(t,e,n){return{configHome:t,home:n,state:e,startup:Be(e)}}function hv(t,e,n,r,i){return{...ic(t,n,r),entries:e,themes:e.map(Fe),host:i}}function mv(t){let e=[],n={written:e,repainted:!1,write(r,i){if(e.push(r),Hl(r)&&fv(r,"utf8")===i)return!1;return C(r,i),!0},wire(r,i){e.push(r),xn(r,i)},note(r){e.push(r)},remove(r){bp(r,{force:!0})},themes(r){let i=r.shelf?.dir(t);if(!i)return;for(let s of t.themes)for(let{file:o,content:a}of Fm(r,s))n.write(Co(i,o),a)},repaint(){n.repainted=!0}};return n}function pL(t,e){return Object.assign({},...vt(t.state.terminals).map((n)=>n.layer?.(t,e)??{}))}function Dt(t,e,n,r=$n(),i=Qe()){Tt(X(t));let s=dv(dr(t,e),n.palettes),o=_u(s,Kt(t));K$(t,new Map(o.map((u)=>[u.name,so(u)]))),T$(t),$o(t,s);let a=hv(t,o,n,r,i),c=mv(a);for(let u of vt(n.terminals))u.sync(a,c);return c.written.push(bv(a,i,c.repainted)),gv(t,o,r),c.written}function pv(t,e=$n()){if(!Hl(Co(t,"ttheme","palettes.zsh")))return;let n=new Set(D(t).palettes);gv(t,ve(t).palettes.filter((r)=>n.has(r.name)),e)}function gv(t,e,n){let r=Co(t,"ttheme","aliases.zsh"),i=n1(gL(e,n));if(ut(r)!==i)C(r,i)}function gL(t,e){let n=t.flatMap((s)=>s.booru?[s.booru]:[]),r=Oh(n,e),i={};for(let s of t){let o=new Set(s.nativeNames??[]),a=(s.booru?r.get(s.booru)??[]:[]).filter((c)=>!o.has(c));if(a.length>0)i[s.name]=a}return i}function bv(t,e,n){let r=Co(t.configHome,"ttheme","palettes.zsh"),i=Tm(t.entries,t.startup,t.state.terminals,pL(t,e),Object.keys(Kt(t.configHome)));if(n||ut(r)!==i)C(r,i),bp(`${r}.zwc`,{force:!0});return r}function Ge(t,e=$n(),n=Qe()){let r=D(t),i=vt(r.terminals).filter((a)=>a.pictures);if(i.length===0)return;let s=hv(t,dv(ve(t),r.palettes),r,e,n),o=mv(s);for(let a of i)a.pictures?.(s,o);bv(s,n,!1)}function us(t){return!vt(t).some((e)=>e.bakes)}function Fl(t,e,n=$n()){let r=ic(t,e,n);return vt(e.terminals).flatMap((i)=>[...i.shelf?[`Write ${dt(i.shelf.dir(r),n)}/${j("*")} — a theme file per palette`]:[],...i.plan(r)])}function Ll(t,e,n=$n()){let r=ic(t,e,n);return vt(e.terminals).flatMap((i)=>i.notes(r))}function Cl(t,e,n,r=$n()){let i=ic(t,e,r);return vt(e.terminals).flatMap((s)=>s.next(i,n.get(s.id)))}function jo(t,e,n,r,i=$n()){let s=[],o=zt(t,e,!1).palettes.filter((a)=>r.includes(a.name));for(let a of vt(n)){let c=a.shelf?.dir({configHome:t,home:i});if(!c)continue;for(let u of o)for(let{file:f}of Fm(a,Fe(u))){let l=Co(c,f);if(Hl(l))bp(l,{force:!0}),s.push(l)}}return s}function wv(t,e,n,r){return{...ic(t,e,r),host:n}}function sc(t,e,n,r=$n()){return vt(e.terminals).reduce((i,s)=>s.defaults?.base(wv(t,i,n,r))??i,e)}function ls(t,e,n,r,i=$n()){let s=new Map;for(let o of vt(e.terminals)){let a=o.defaults?.point(wv(t,e,r,i),n);if(a)s.set(o.id,a)}return s}function en(t,e,n,r,i=!1,s=Qe(),o=$n()){let a=i||!Be(n)&&Be(r)!==void 0,c=a?sc(t,r,s,o):r;return Dt(t,e,c,o,s),tn(t,c),a||Be(n)!==Be(r)?ls(t,c,a,s,o):new Map}import{performance as $v}from"node:perf_hooks";var bL=16,wp=80,kv="\x1B[?2026h",yv="\x1B[?2026l";class fs{shown=[];pointer=new tm;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+bL-$v.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}=ty(()=>this.view());if(!t)return;this.last=$v.now();let{lines:n,zones:r}=ry(t.lines,e);this.pointer.zones=[...t.zones??[],...r];let i=this.wipe;this.wipe="";let s=new Set,o=Math.max(n.length,this.shown.length);for(let f=0;f<o;f++){let l=n[f];if(l!==this.shown[f])i+=`\x1B[${f+1};1H${Se}\x1B[2K${l??""}`,s.add(f)}this.shown=n;let a=t.after?.(s)??"",c=t.cursor??"",u=c!==""&&(i!==""||a!==""||c!==this.cursor);if(this.cursor=c,i||a||u)this.write(`${kv}${i}${a}${Se}${u?c:""}${yv}`);this.tick(t.ticking===!0)};tick(t){if(t&&!this.ticker)this.ticker=setInterval(()=>{this.beat(),this.request()},wp);else if(!t&&this.ticker)clearInterval(this.ticker),this.ticker=void 0}}class $p{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(`
641
641
  `),this.shown=[]}put(t,e){let n=t.map((s)=>tt(s,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(`
642
642
  `);else if(r>=this.shown.length)i=`
643
643
  ${n.slice(r).join(`
644
644
  `)}`;else{let s=this.shown.length-1-r;i=`${s>0?`\x1B[${s}A`:""}\r\x1B[J${n.slice(r).join(`
645
- `)}`}this.shown=n,this.write(`${vv}${e}${i}${Sv}`)}}var $F=300;function Bl(t){return t>=1e6?`${(t/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(t/1000))} KB`}function Gl(t,e){if(!e)return Bl(t);return e>=1e6?`${(t/1e6).toFixed(1)}/${(e/1e6).toFixed(1)} MB`:`${Math.round(t/1000)}/${Math.round(e/1000)} KB`}var Uo;async function Ev(t,e){Uo=t;try{return await e()}finally{Uo=void 0}}function Kn(t){if(Uo)Uo.say(t);else console.log(t)}function hi(t=""){if(Uo){let u=Uo;return u.set(t),{set:(f)=>u.set(f),say:(f)=>u.say(f),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]=Ct()?["",""]:[wt("dim"),Vh("dim")],i=0,s=!1,o,a=()=>{e.write(`\r\x1B[2K${n}${tt(`${bn[i%bn.length]} ${t}`,(e.columns||80)-1,!1)}${r}`)},c=setTimeout(()=>{s=!0,a(),o=setInterval(()=>{i++,a()},yp),o.unref()},$F);return c.unref(),{set(u){if(t=u,s)a()},say(u){if(s)e.write("\r\x1B[2K");if(console.log(u),s)a()},done(){if(clearTimeout(c),clearInterval(o),s)e.write("\r\x1B[2K"),s=!1}}}import{existsSync as kF,readFileSync as yF}from"node:fs";import{join as vF}from"node:path";function SF(t){return vF(t,"ttheme","pins")}function Mv(t,e,n){let r=SF(t);if(!kF(r))return;let i=yF(r,"utf8"),o=i.split(`
645
+ `)}`}this.shown=n,this.write(`${kv}${e}${i}${yv}`)}}var wL=300;function jl(t){return t>=1e6?`${(t/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(t/1000))} KB`}function _l(t,e){if(!e)return jl(t);return e>=1e6?`${(t/1e6).toFixed(1)}/${(e/1e6).toFixed(1)} MB`:`${Math.round(t/1000)}/${Math.round(e/1000)} KB`}var _o;async function vv(t,e){_o=t;try{return await e()}finally{_o=void 0}}function Gn(t){if(_o)_o.say(t);else console.log(t)}function hi(t=""){if(_o){let u=_o;return u.set(t),{set:(f)=>u.set(f),say:(f)=>u.say(f),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]=Lt()?["",""]:[wt("dim"),qh("dim")],i=0,s=!1,o,a=()=>{e.write(`\r\x1B[2K${n}${tt(`${mn[i%mn.length]} ${t}`,(e.columns||80)-1,!1)}${r}`)},c=setTimeout(()=>{s=!0,a(),o=setInterval(()=>{i++,a()},wp),o.unref()},wL);return c.unref(),{set(u){if(t=u,s)a()},say(u){if(s)e.write("\r\x1B[2K");if(console.log(u),s)a()},done(){if(clearTimeout(c),clearInterval(o),s)e.write("\r\x1B[2K"),s=!1}}}import{existsSync as $L,readFileSync as kL}from"node:fs";import{join as yL}from"node:path";function vL(t){return yL(t,"ttheme","pins")}function Sv(t,e,n){let r=vL(t);if(!$L(r))return;let i=kL(r,"utf8"),o=i.split(`
646
646
  `).flatMap((a)=>{let c=/^((?:[~/]|ssh:).*\s)(\S+)(\s*)$/.exec(a);if(!c)return[a];let[,u,f,l]=c;if(n.includes(f))return[];let d=e.get(f);return[d?`${u}${d}${l}`:a]}).join(`
647
- `);if(o!==i)H(r,o)}import{execFile as EF,spawn as MF,spawnSync as Sp}from"node:child_process";import{mkdirSync as xF,readFileSync as OF,realpathSync as xv}from"node:fs";import{homedir as PF,tmpdir as Ov}from"node:os";import{dirname as IF,join as Ep}from"node:path";var uc=`npx ${dt.name}@latest init`,Op=86400000,RF=3600000,AF=1e4,Mp=/^(\d+)\.(\d+)\.(\d+)$/;function Pv(t,e){let n=Mp.exec(t),r=Mp.exec(e);if(!n||!r)return!1;return([1,2,3].map((s)=>Number(n[s])-Number(r[s])).find((s)=>s!==0)??0)>0}function Ko(t=process.env){return t.TTHEME_AUTO_UPDATE!=="off"&&(t.CI===void 0||t.CI===""||t.CI==="false")}function xp(){return Ep(process.env.XDG_STATE_HOME??Ep(PF(),".local","state"),"ttheme","release.json")}function lc(){try{let t=JSON.parse(OF(xp(),"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 Wo(t){xF(IF(xp()),{recursive:!0}),H(xp(),`${JSON.stringify(t)}
648
- `)}function Iv(t=AF){return new Promise((e,n)=>{EF("npm",["view",`${dt.name}@latest`,"version","--prefer-online"],{cwd:Ov(),encoding:"utf8",timeout:t,env:{...process.env,npm_config_update_notifier:"false"}},(r,i,s)=>{if(r){let a=s.split(`
649
- `).find((f)=>/\S/.test(f))?.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 o=i.trim();if(!Mp.test(o)){n(Error("the npm registry named no version"));return}e(o)})})}function Rv(t=Date.now()){let e=lc();if(!Ko()||t-e.checked<Op)return;try{Wo({...e,checked:t}),MF(process.execPath,[process.argv[1],"latest"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}async function Av(){let t=lc();try{return Wo({...t,checked:Date.now(),latest:await Iv()}),0}catch{return Wo({...t,checked:Date.now()-Op+RF}),1}}function Nv(t=J()){return Ep(t,"ttheme","ttheme.js")}function Tv(){try{return xv(process.argv[1])===xv(Nv())}catch{return!1}}function NF(){return Tv()?"`ttheme update` updates it":`\`${uc}\` updates it`}function Hv(t,e=dt.version){return`ttheme ${t} is out, you have ${e} — ${NF()}`}function Lv(t=Date.now()){let e=lc();if(!Ko()||!e.latest||!Pv(e.latest,dt.version)||t-(e.told??0)<Op)return;if(process.stderr.isTTY)Wo({...e,told:t});ll([Hv(e.latest)])}function Fv(t,e){console.log(`Updating ttheme ${dt.version} → ${t}`);let n=Sp("npx",["--yes",`${dt.name}@${t}`,"init","--yes"],{cwd:Ov(),stdio:"inherit",env:{...process.env,npm_config_prefer_online:"true"}});if(n.error)throw Error(`cannot run npx — ${n.error.message}; \`${uc}\` updates ttheme once npm is there`);if(n.status!==0)throw Error(`npx stopped with status ${n.status} — ttheme ${dt.version} is still installed`);let r=Nv(),i=Sp(process.execPath,[r,"--version"],{encoding:"utf8"}).stdout?.trim();if(i!==t)throw Error(`${r} is ${i||"unreadable"} after the update, not ${t} — \`${uc}\` tries again`);let s=lc();return Wo({...s,latest:t}),Sp(process.execPath,[r,"update",...e],{stdio:"inherit",env:{...process.env,TTHEME_UPDATED:t}}).status??1}async function Cv(){if(process.env.TTHEME_UPDATED)return{note:` ttheme ${dt.version} — updated`};let t;try{t=await Iv()}catch(e){return{note:` ttheme ${dt.version} — could not check for a newer one: ${e.message}`}}if(Wo({...lc(),checked:Date.now(),latest:t}),!Pv(t,dt.version))return{note:` ttheme ${dt.version} — up to date`};return Tv()?{latest:t,note:""}:{note:` ${Hv(t)}`}}function jv(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 _v(t,e,n,r,i){let s=`${t}/`;for(let o of r){let a=o.startsWith(s)?o.slice(s.length):void 0;if(a===void 0||n.has(a))continue;let c=jv(e.renames,a);if(c===!1)i.removed.push(o);else if(c!==void 0&&n.has(c))i.renamed.set(o,`${s}${c}`);else if(e.forceRemove)i.removed.push(o)}}function Bv(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 s=jv(t,i);if(s===void 0)n.push(`renames.${i}: the chain comes back to a name it already passed`);else if(s!==!1&&!e.has(s))n.push(`renames.${i}: the chain ends at ${s}, which is not a palette here — end it at one, or at false`)}return{errors:n,warnings:r}}import{gunzipSync as TF}from"node:zlib";var ms=512,Gv=67108864,Pp=new TextDecoder;function zo(t,e,n){let r=t.subarray(e,e+n),i=r.indexOf(0);return Pp.decode(i<0?r:r.subarray(0,i))}function HF(t){if((t[124]??0)&128)throw Error("the archive holds a file too large to be a palette");let e=Number.parseInt(zo(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 LF(t){let e=0,n;while(e<t.length){let r=t.indexOf(32,e),i=r<0?Number.NaN:Number.parseInt(Pp.decode(t.subarray(e,r)),10);if(!Number.isFinite(i)||i<=0)break;let s=Pp.decode(t.subarray(r+1,e+i-1)),o=s.indexOf("=");if(s.slice(0,o)==="path")n=s.slice(o+1);e+=i}return n}function FF(t){if(t[0]!==31||t[1]!==139)return t;try{return TF(t,{maxOutputLength:Gv})}catch(e){throw Error(e instanceof RangeError?`the archive unpacks to more than ${Gv/1024/1024} MB`:"the archive is not a gzip file that reads")}}function Uv(t){let e=FF(t),n=new Map,r,i=0;while(i+ms<=e.length){let s=e.subarray(i,i+ms);if(s.every((l)=>l===0))break;let o=HF(s),a=e.subarray(i+ms,i+ms+o);i+=ms+Math.ceil(o/ms)*ms;let c=String.fromCharCode(s[156]??0);if(c==="x"){r=LF(a)??r;continue}if(c==="L"){r=zo(a,0,a.length);continue}let u=zo(s,257,5)==="ustar"?zo(s,345,155):"",f=r??(u?`${u}/${zo(s,0,100)}`:zo(s,0,100));if(r=void 0,c==="0"||c==="\x00")n.set(f.split("/").slice(1).join("/"),a)}return n}var GF=86400000,UF=3600000,Ap=5000;function Ip(){return Wv(process.env.XDG_STATE_HOME??Wv(_F(),".local","state"),"ttheme","marketplaces.json")}function vr(){try{let t=JSON.parse(Dv(Ip(),"utf8"));return Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]?.at==="number"&&typeof e[1].error==="string"))}catch{return{}}}function Kv(t,e){let n=vr();if(e===void 0){if(!(t in n))return;delete n[t]}else n[t]={at:Date.now(),error:e};zv(BF(Ip()),{recursive:!0}),H(Ip(),`${JSON.stringify(n,null,2)}
650
- `)}function Np(t,e){let n=yt(e)?fr(t,e):void 0;try{return n?CF(n).mtimeMs:void 0}catch{return}}function WF(t,e,n,r){return t&&(e===void 0||r-e>=GF)&&(n===void 0||r-n>=UF)}function Tp(t,e,n=Date.now()){let r=vr();return Yt(e.marketplaces).filter((i)=>WF(Vr(i,e.updates),Np(t,i),r[i]?.at,n))}function KF(t,e){let n=new TextDecoder,r=Object.fromEntries(Uv(t).entries().filter(([i])=>i===ot||i.startsWith("palettes/")&&i.endsWith(".toml")).map(([i,s])=>[i,n.decode(s)]));return{...e?{etag:e}:{},files:r}}async function Hp(t,e,n,r){let i;try{i=await Da(fk(t),e,n,r?{"if-none-match":r}:{})}catch(s){if(s instanceof Ku){let o=_a(t);throw Error(`${st(t)}${o?` has no ${o}`:" is not there"} — is the repository public?`)}throw s}if(i.status===304)return;return KF(new Uint8Array(await i.arrayBuffer()),i.headers.get("etag"))}function Lp(t,e,n){let{id:r,info:i,entries:s}=Zi(t,e,n,me(!1));return{source:t,id:r,entries:s,archive:e,info:i}}function fc(t){return qo(t,Y)}async function dc(t,e,n,r){if(e===Y){if(!Rp(gn(t)))throw Error(`the official marketplace is not on this machine — \`${uc}\` puts it back`);return{source:e,id:Y,entries:qo(t,Y)}}let i=await Hp(e,n,r);if(!i)throw Error(`${st(e)} answered as if nothing had changed`);return Lp(e,i,fc(t))}function Do(t,e){if(!("archive"in e))return;zv(wo(t),{recursive:!0}),H(fr(t,e.source),`${JSON.stringify(e.archive)}
651
- `)}function zF(t,e){try{return dr(t,e)}catch{return}}function qo(t,e){try{if(e===Y)return Zr(Dv(gn(t),"utf8")).palettes;return Zi(e,dr(t,e),fc(t),me(!1)).entries}catch{return[]}}function DF(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.keys()].filter((i)=>n.has(i)&&n.get(i)!==r.get(i)),gone:[...n.keys()].filter((i)=>!r.has(i))}}async function qF(t,e,n){if(!yt(e))return dc(t,e,n);let r=zF(t,e),i=await Hp(e,n,void 0,r?.etag);return i&&Lp(e,i,fc(t))}async function Fp(t,e,n){let r=qo(t,e),i;try{i=await qF(t,e,n)}catch(o){throw Kv(e,o.message),o}if(i)Do(t,i);else{let o=new Date;jF(fr(t,e),o,o)}Kv(e,void 0);let s=i?.entries??r;return{source:e,id:i?.id??Wu(e,dr(t,e)),count:It(s).length,change:DF(r,s)}}async function Cp(t,e,n){try{return{source:e,refreshed:await Fp(t,e,n)}}catch(r){return{source:e,failure:r instanceof Error?r:Error(String(r))}}}function qv(t,e){return`${st(t)}: ${e.message}`}function qt(t){return`${t} palette${t===1?"":"s"}`}function Jo(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 Jv({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 jp(t){let e=Jv(t.change);return`${t.id} — ${qt(t.count)}${e?` (${e})`:""}`}function _p(t){return Jv(t.change)?`Updated ${jp(t)}`:void 0}function hc(t,e,n=fc(t)){try{if(Ht(e)){let r=Ye(e),i=ye(r);return{id:i,info:r,entries:jn(e,i,n,me(!1))}}return yt(e)?Zi(e,dr(t,e),n,me(!1)):void 0}catch{return}}function JF(t){if(!Rp(mn(t)))return[];let e=D(t),n=fc(t),r={renamed:new Map,removed:[]};for(let u of Yt(e.marketplaces)){let f=hc(t,u,n);if(f)_v(f.id,f.info,new Set(f.entries.map((l)=>$e(l.name))),e.palettes,r)}if(r.renamed.size===0&&r.removed.length===0)return[];let i=lt(t,!1);Go(t,i,e.terminals,[...r.renamed.keys(),...r.removed]),Pk(t,r.renamed,r.removed),F$(t,r.renamed),Mv(t,r.renamed,r.removed);let s=[...new Set(e.palettes.filter((u)=>!r.removed.includes(u)).map((u)=>r.renamed.get(u)??u))],{startup:o,...a}=e,c=o&&!r.removed.includes(o)?r.renamed.get(o)??o:void 0;return nn(t,i,e,{...a,palettes:s,...c?{startup:c}:{}}),[...[...r.renamed].map(([u,f])=>`${u} is ${f} now — its marketplace renamed it`),...r.removed.map((u)=>`${u} was removed from its marketplace`)]}function Bp(t){let e=So(t,lt(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 marketplace":"their marketplaces"} — ctrl+r on a palette marked ↑ in Browse (\`ttheme\`) takes it`}function ps(t,e){let n=JF(t),r=D(t),i=new Set(e.flatMap((o)=>o.change.gone)),s=r.palettes.filter((o)=>i.has(o)).map((o)=>`${o} left its marketplace — ttheme keeps the copy you have`);return[...n,...s]}async function Yv(t=J()){try{if(!Ko()||!Rp(mn(t)))return;let e=Tp(t,D(t));if(e.length===0)return;let n=hi(`Checking ${e.map(st).join(", ")} for updates`),r=await Promise.all(e.map((o)=>Cp(t,o,Ap)));n.done();let i=r.flatMap((o)=>("refreshed"in o)?[o.refreshed]:[]),s=i.flatMap((o)=>_p(o)??[]);if(s.length===0)return;ll([...s,...ps(t,i),...[Bp(t)??[]].flat()])}catch{return}}var ZF="https://kecan0406.github.io/ttheme/marketplaces.json",XF=/^#[0-9a-f]{6}$/i,QF=/^(cursor|foreground|background|selection|ansi(1[0-5]|[0-9]))$/,tC=/^\d{4}-\d{2}-\d{2}$/;function eC(t){return t.replace(/[\p{Cc}\s]+/gu," ").trim()}function Yo(t){return typeof t==="string"?eC(t):void 0}function Vv(t){return typeof t==="string"&&XF.test(t)?t.toLowerCase():void 0}function nC(t,e){if(typeof e!=="object"||e===null)return;let n=e,r=Yo(n.name),[i,s,o,a]=[n.background,n.foreground,n.cursor,n.selection].map(Vv),c=Array.isArray(n.ansi)?n.ansi.map(Vv):[],u=Array.isArray(n.signatureSlots)?n.signatureSlots:[];if(!r||ne(`${t}/${r}`)||!i||!s||!o||!a||c.length!==16||c.some((l)=>l===void 0)||u.length!==3||!u.every((l)=>typeof l==="string"&&QF.test(l)))return;let f=Yo(n.catalog);return{name:r,...f?{catalog:f}:{},background:i,foreground:s,cursor:o,selection:a,ansi:c.filter((l)=>l!==void 0),signatureSlots:u}}function rC(t){if(typeof t!=="object"||t===null)return;let e=t,n=Yo(e.id),r=Yo(e.source);if(!n||!r||ne(`${n}/x`))return;let i;try{i=pn(r)}catch{return}if(!yt(i))return;let s=(Array.isArray(e.palettes)?e.palettes:[]).flatMap((c)=>nC(n,c)??[]);if(s.length===0)return;let o=typeof e.stars==="number"&&Number.isFinite(e.stars)&&e.stars>=0?Math.floor(e.stars):0,a=Yo(e.updated)??"";return{id:n,source:i,about:Yo(e.about)??"",stars:o,updated:tC.test(a)?a:"",palettes:s}}function Zv(t){let e=JSON.parse(t),n=typeof e==="object"&&e!==null?e.marketplaces:void 0;if(!Array.isArray(n))throw Error("the marketplace index lists no marketplaces");let r=new Set;return n.flatMap((i)=>{let s=rC(i);if(!s||r.has(s.id))return[];return r.add(s.id),[s]})}function iC(){return VF(Ln(),"marketplace-index.json")}function sC(t){try{let e=JSON.parse(YF(t,"utf8")),n=typeof e==="object"&&e!==null?e:{};return typeof n.etag==="string"&&typeof n.at==="number"&&typeof n.text==="string"?{etag:n.etag,at:n.at,text:n.text}:void 0}catch{return}}async function Ul(t,e=iC(),n=ZF){let r=sC(e),i;try{i=r?Zv(r.text):void 0}catch{i=void 0}try{let s=await Da(n,void 0,t,r&&i?{"if-none-match":r.etag}:{}),o=Date.now();if(s.status===304&&r&&i)return H(e,JSON.stringify({...r,at:o})),{marketplaces:i,at:o};let a=await s.text(),c=Zv(a);return H(e,JSON.stringify({etag:s.headers.get("etag")??"",at:o,text:a})),{marketplaces:c,at:o}}catch(s){if(!r||!i)throw s;return{marketplaces:i,at:r.at,offline:s instanceof Error?s.message:String(s)}}}var nS=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,lC=["add","remove","search","init","check"];function Up(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function fC(){try{let t=oC("gh",["api","user","--jq",".login"],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4}).trim().toLowerCase();return nS.test(t)?t:void 0}catch{return}}async function dC(t,e){if(e.author)return e.author;let n=fC();if(!n){if(!Up())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 km({message:"Your GitHub handle — your palettes are named <handle>@<marketplace>/<palette>",validate:(i)=>nS.test((i??"").toLowerCase())&&(i??"").length<=39?void 0:"that is not a GitHub handle"});if(ie(r))throw Error("no handle given");n=r.toLowerCase()}return en(t,{...e,author:n}),console.log(`Your palettes are named ${n}@<marketplace>/<palette>`),n}function mi(t,e){if(e===Y)return Y;return Ht(e)?ye(Ye(e)):Wu(e,dr(t,e))}function zl(t,e){try{return mi(t,e)}catch{return}}function rS(t){return et(t)??Y}function pc(t){return lt(t).palettes.filter((e)=>et(e.name)===void 0)}function hC(t){let e=mc(import.meta.dirname,"..","dist","manifest.json");return Wl(e)?Zr(Kl(e,"utf8")).palettes:pc(t)}function gc(t,e,n){let{updates:r,...i}=t,s=Object.entries(n).filter(([o,a])=>yt(o)&&e.includes(o)&&a!==Vr(o,{}));return{...i,marketplaces:e,...s.length>0?{updates:Object.fromEntries(s)}:{}}}function iS(t,e,n,r){return e.find((i)=>i!==n&&!Ji(i,n)&&zl(t,i)===r)}function Gp(t,e,n,r){let i=D(t),s=Yt(i.marketplaces),o=iS(t,s,e,n);if(o)throw Error(`${n} already names the marketplace at ${st(o)} — \`ttheme marketplace remove ${n}\` first`);let a=r===void 0?{...i.updates}:{...i.updates,[e]:r};en(t,gc(i,s.includes(e)?s:[...s,e],a))}async function mC(t){if(!Up())return!1;let e=await Be({message:`Update ${t} on its own when its author changes it? ttheme checks once a day, when you run it`,initialValue:!1});if(ie(e))throw Error("no answer given — nothing was added");return e}async function sS(t,e){let n=hi(`Fetching ${st(e)}`);try{return await dc(t,e)}finally{n.done()}}async function pC(t,e,n){let r=await sS(t,n),i=D(t),s=Yt(i.marketplaces),o=iS(t,s,n,r.id);if(o)throw Error(`${r.id} already names the marketplace at ${st(o)} — \`ttheme marketplace remove ${r.id}\` first`);let{[e]:a,...c}=i.updates??{},u=a===void 0?c:{...c,[n]:a};return en(t,gc(i,s.map((f)=>f===e?n:f),u)),Do(t,r),r}async function Wp(t,e){let n=pn(e),r=Yt(D(t).marketplaces);if(r.includes(n))return console.log(`${st(n)} is already added`),{source:n,id:mi(t,n),fresh:!1};let i=yt(n)?r.find((c)=>yt(c)&&Ji(c,n)):void 0;if(i){let c=await pC(t,i,n);return console.log(`Moved ${c.id} to ${_a(n)??"its default branch"} · ${st(n)} — ${qt(It(c.entries).length)}`),{source:n,id:c.id,fresh:!1}}if(Ht(n)){let c=ye(Ye(n));Gp(t,n,c);let u=jn(n,c,pc(t)).length;return console.log(`Added ${c} · ${st(n)} — ${qt(u)}, read in place`),{source:n,id:c,fresh:!0}}let s=await sS(t,n),o=n===Y?void 0:await mC(s.id);Gp(t,n,s.id,o),Do(t,s);let a=qt(It(s.entries).length);return console.log(n===Y?`Added the official marketplace — ${a}`:`Added ${s.id} · ${st(n)} — ${a}${o?", updating on its own":""}`),{source:n,id:s.id,fresh:!0}}async function gC(t){let e=J(),{source:n,id:r,fresh:i}=await Wp(e,t);if(!i)return;if(Ht(n))console.log("\nThe Browse tab of `ttheme` picks them · once the folder is on GitHub, `ttheme marketplace add <owner>/<repo>` adds it anywhere");else if(n===Y)console.log("\nThe Browse tab of `ttheme` picks them");else console.log(`
652
- The Browse tab of \`ttheme\` picks them, or \`ttheme add ${r}/<palette>\``)}function Kp(t,e){if(yt(e))uC(fr(t,e),{force:!0})}function zp(t){return`${qt(t.length)} installed from it keep${t.length===1?"s":""} working: ${t.join(", ")} — \`ttheme remove\` drops ${t.length===1?"it":"them"}`}function bC(t){let e=J(),n=D(e),r=Yt(n.marketplaces),i=r.find((u)=>zl(e,u)===t)??r.find((u)=>u===oS(t));if(!i)throw Error(`no marketplace named ${t} — \`ttheme marketplace\` lists them`);let s=zl(e,i),o=n.palettes.filter((u)=>rS(u)===s),a=r.filter((u)=>u!==i),c=gc(n,a,n.updates??{});if(en(e,c),Kp(e,i),Dt(e,lt(e),c),console.log(`Removed ${s??t} · ${st(i)}`),o.length>0)console.log(zp(o))}function oS(t){try{return pn(t)}catch{return}}function wC(t,e){try{if(e===Y)return It(Zr(Kl(gn(t),"utf8")).palettes).length;if(Ht(e))return jn(e,mi(t,e),pc(t),me(!1)).length;return Zi(e,dr(t,e),pc(t),me(!1)).entries.length}catch{return}}function Dp(t,e,n=vr(),r=Date.now()){if(Ht(e))return"read in place";if(e===Y)return"comes with ttheme";let i=n[e],s=Np(t,e);if(i&&(s===void 0||i.at>s))return`update failed ${Jo(i.at,r)}`;return s===void 0?"never updated":`updated ${Jo(s,r)}`}function $C(){let t=J(),e=D(t),n=Yt(e.marketplaces);if(n.length===0){console.log("No marketplaces — `ttheme marketplace add official` brings the official one back");return}let r=vr(),i=n.map((a)=>{let c=zl(t,a)??"?",u=wC(t,a),f=e.palettes.filter((h)=>rS(h)===c).length,l=Ht(a)?[]:[`auto-update ${Vr(a,e.updates)?"on":"off"}`],d=a===Y?void 0:hc(t,a)?.info.description;return{name:c,where:st(a),about:d,note:[u===void 0?"Unreadable":qt(u),...f>0?[`${f} installed`]:[],...l,Dp(t,a,r)].join(" · ")}}),s=Math.max(...i.map((a)=>a.name.length)),o=Math.max(...i.map((a)=>a.where.length));for(let a of i)if(console.log(` ${a.name.padEnd(s)} ${a.where.padEnd(o)} ${a.note}`),a.about)console.log(` ${" ".repeat(s)} ${a.about}`)}function qp(t,e){return Ki([t.id,t.source,t.about,...t.palettes.flatMap((n)=>[n.name,n.catalog??""])],e)}async function kC(t){let e=J(),{marketplaces:n,at:r,offline:i}=await Ul();if(i)console.log(`Offline — the list from ${Jo(r)} (${i})
653
- `);let s=n.filter((u)=>!t||qp(u,t));if(s.length===0){console.log(`No marketplace carries the ${qi} topic${t?` and matches ${t}`:""} yet`);return}let o=new Set(Yt(D(e).marketplaces).map(Yr)),a=Math.max(...s.map((u)=>u.id.length)),c=Math.max(...s.map((u)=>u.source.length));for(let u of s){let f=`★${u.stars}`.padStart(5);console.log(` ${o.has(u.source)?"●":"○"} ${u.id.padEnd(a)} ${u.source.padEnd(c)} ${f} ${qt(u.palettes.length)} ${u.about}`)}console.log("\n`ttheme marketplace add <owner/repo>` adds one")}function aS({name:t}){return`ttheme-${t}`}function yC(t,e){aC(_u(t),{recursive:!0}),H(mc(t,ot),hk(e)),H(mc(t,"README.md"),`# ${ye(e)}
647
+ `);if(o!==i)C(r,o)}import{execFile as SL,spawn as EL,spawnSync as kp}from"node:child_process";import{mkdirSync as ML,readFileSync as xL,realpathSync as Ev}from"node:fs";import{homedir as OL,tmpdir as Mv}from"node:os";import{dirname as PL,join as yp}from"node:path";var oc=`npx ${lt.name}@latest init`,Ep=86400000,IL=3600000,RL=1e4,vp=/^(\d+)\.(\d+)\.(\d+)$/;function xv(t,e){let n=vp.exec(t),r=vp.exec(e);if(!n||!r)return!1;return([1,2,3].map((s)=>Number(n[s])-Number(r[s])).find((s)=>s!==0)??0)>0}function Go(t=process.env){return t.TTHEME_AUTO_UPDATE!=="off"&&(t.CI===void 0||t.CI===""||t.CI==="false")}function Sp(){return yp(process.env.XDG_STATE_HOME??yp(OL(),".local","state"),"ttheme","release.json")}function ac(){try{let t=JSON.parse(xL(Sp(),"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 Bo(t){ML(PL(Sp()),{recursive:!0}),C(Sp(),`${JSON.stringify(t)}
648
+ `)}function Ov(t=RL){return new Promise((e,n)=>{SL("npm",["view",`${lt.name}@latest`,"version","--prefer-online"],{cwd:Mv(),encoding:"utf8",timeout:t,env:{...process.env,npm_config_update_notifier:"false"}},(r,i,s)=>{if(r){let a=s.split(`
649
+ `).find((f)=>/\S/.test(f))?.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 o=i.trim();if(!vp.test(o)){n(Error("the npm registry named no version"));return}e(o)})})}function Pv(t=Date.now()){let e=ac();if(!Go()||t-e.checked<Ep)return;try{Bo({...e,checked:t}),EL(process.execPath,[process.argv[1],"latest"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}async function Iv(){let t=ac();try{return Bo({...t,checked:Date.now(),latest:await Ov()}),0}catch{return Bo({...t,checked:Date.now()-Ep+IL}),1}}function Rv(t=J()){return yp(t,"ttheme","ttheme.js")}function Av(){try{return Ev(process.argv[1])===Ev(Rv())}catch{return!1}}function AL(){return Av()?"`ttheme update` updates it":`\`${oc}\` updates it`}function Nv(t,e=lt.version){return`ttheme ${t} is out, you have ${e} — ${AL()}`}function Tv(t=Date.now()){let e=ac();if(!Go()||!e.latest||!xv(e.latest,lt.version)||t-(e.told??0)<Ep)return;if(process.stderr.isTTY)Bo({...e,told:t});cl([Nv(e.latest)])}function Hv(t,e){console.log(`Updating ttheme ${lt.version} → ${t}`);let n=kp("npx",["--yes",`${lt.name}@${t}`,"init","--yes"],{cwd:Mv(),stdio:"inherit",env:{...process.env,npm_config_prefer_online:"true"}});if(n.error)throw Error(`cannot run npx — ${n.error.message}; \`${oc}\` 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=Rv(),i=kp(process.execPath,[r,"--version"],{encoding:"utf8"}).stdout?.trim();if(i!==t)throw Error(`${r} is ${i||"unreadable"} after the update, not ${t} — \`${oc}\` tries again`);let s=ac();return Bo({...s,latest:t}),kp(process.execPath,[r,"update",...e],{stdio:"inherit",env:{...process.env,TTHEME_UPDATED:t}}).status??1}async function Fv(){if(process.env.TTHEME_UPDATED)return{note:` ttheme ${lt.version} — updated`};let t;try{t=await Ov()}catch(e){return{note:` ttheme ${lt.version} — could not check for a newer one: ${e.message}`}}if(Bo({...ac(),checked:Date.now(),latest:t}),!xv(t,lt.version))return{note:` ttheme ${lt.version} — up to date`};return Av()?{latest:t,note:""}:{note:` ${Nv(t)}`}}function Lv(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 Cv(t,e,n,r,i){let s=`${t}/`;for(let o of r){let a=o.startsWith(s)?o.slice(s.length):void 0;if(a===void 0||n.has(a))continue;let c=Lv(e.renames,a);if(c===!1)i.removed.push(o);else if(c!==void 0&&n.has(c))i.renamed.set(o,`${s}${c}`);else if(e.forceRemove)i.removed.push(o)}}function jv(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 s=Lv(t,i);if(s===void 0)n.push(`renames.${i}: the chain comes back to a name it already passed`);else if(s!==!1&&!e.has(s))n.push(`renames.${i}: the chain ends at ${s}, which is not a palette here — end it at one, or at false`)}return{errors:n,warnings:r}}import{gunzipSync as NL}from"node:zlib";var ds=512,_v=67108864,Mp=new TextDecoder;function Uo(t,e,n){let r=t.subarray(e,e+n),i=r.indexOf(0);return Mp.decode(i<0?r:r.subarray(0,i))}function TL(t){if((t[124]??0)&128)throw Error("the archive holds a file too large to be a palette");let e=Number.parseInt(Uo(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 HL(t){let e=0,n;while(e<t.length){let r=t.indexOf(32,e),i=r<0?Number.NaN:Number.parseInt(Mp.decode(t.subarray(e,r)),10);if(!Number.isFinite(i)||i<=0)break;let s=Mp.decode(t.subarray(r+1,e+i-1)),o=s.indexOf("=");if(s.slice(0,o)==="path")n=s.slice(o+1);e+=i}return n}function FL(t){if(t[0]!==31||t[1]!==139)return t;try{return NL(t,{maxOutputLength:_v})}catch(e){throw Error(e instanceof RangeError?`the archive unpacks to more than ${_v/1024/1024} MB`:"the archive is not a gzip file that reads")}}function Bv(t){let e=FL(t),n=new Map,r,i=0;while(i+ds<=e.length){let s=e.subarray(i,i+ds);if(s.every((l)=>l===0))break;let o=TL(s),a=e.subarray(i+ds,i+ds+o);i+=ds+Math.ceil(o/ds)*ds;let c=String.fromCharCode(s[156]??0);if(c==="x"){r=HL(a)??r;continue}if(c==="L"){r=Uo(a,0,a.length);continue}let u=Uo(s,257,5)==="ustar"?Uo(s,345,155):"",f=r??(u?`${u}/${Uo(s,0,100)}`:Uo(s,0,100));if(r=void 0,c==="0"||c==="\x00")n.set(f.split("/").slice(1).join("/"),a)}return n}var BL=86400000,GL=3600000,Pp=5000;function xp(){return Gv(process.env.XDG_STATE_HOME??Gv(jL(),".local","state"),"ttheme","marketplaces.json")}function kr(){try{let t=JSON.parse(Kv(xp(),"utf8"));return Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]?.at==="number"&&typeof e[1].error==="string"))}catch{return{}}}function Uv(t,e){let n=kr();if(e===void 0){if(!(t in n))return;delete n[t]}else n[t]={at:Date.now(),error:e};Wv(_L(xp()),{recursive:!0}),C(xp(),`${JSON.stringify(n,null,2)}
650
+ `)}function Ip(t,e){let n=yt(e)?ur(t,e):void 0;try{return n?LL(n).mtimeMs:void 0}catch{return}}function UL(t,e,n,r){return t&&(e===void 0||r-e>=BL)&&(n===void 0||r-n>=GL)}function Rp(t,e,n=Date.now()){let r=kr();return Yt(e.marketplaces).filter((i)=>UL(Yr(i,e.updates),Ip(t,i),r[i]?.at,n))}function WL(t,e){let n=new TextDecoder,r=Object.fromEntries(Bv(t).entries().filter(([i])=>i===ft||i.startsWith("palettes/")&&i.endsWith(".toml")).map(([i,s])=>[i,n.decode(s)]));return{...e?{etag:e}:{},files:r}}async function Ap(t,e,n,r){let i;try{i=await Wa(uk(t),e,n,r?{"if-none-match":r}:{})}catch(s){if(s instanceof Uu){let o=La(t);throw Error(`${ot(t)}${o?` has no ${o}`:" is not there"} — is the repository public?`)}throw s}if(i.status===304)return;return WL(new Uint8Array(await i.arrayBuffer()),i.headers.get("etag"))}function Np(t,e,n){let{id:r,info:i,entries:s}=Yi(t,e,n,me(!1));return{source:t,id:r,entries:s,archive:e,info:i}}function cc(t){return Ko(t,Y)}async function uc(t,e,n,r){if(e===Y){if(!Op(lr(t)))throw Error(`the official marketplace is not on this machine — \`${oc}\` puts it back`);return{source:e,id:Y,entries:Ko(t,Y)}}let i=await Ap(e,n,r);if(!i)throw Error(`${ot(e)} answered as if nothing had changed`);return Np(e,i,cc(t))}function Wo(t,e){if(!("archive"in e))return;Wv(Rh(t),{recursive:!0}),C(ur(t,e.source),`${JSON.stringify(e.archive)}
651
+ `)}function KL(t,e){try{return fr(t,e)}catch{return}}function Ko(t,e){try{if(e===Y)return Vr(Kv(lr(t),"utf8")).palettes;return Yi(e,fr(t,e),cc(t),me(!1)).entries}catch{return[]}}function zL(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.keys()].filter((i)=>n.has(i)&&n.get(i)!==r.get(i)),gone:[...n.keys()].filter((i)=>!r.has(i))}}async function DL(t,e,n){if(!yt(e))return uc(t,e,n);let r=KL(t,e),i=await Ap(e,n,void 0,r?.etag);return i&&Np(e,i,cc(t))}async function Tp(t,e,n){let r=Ko(t,e),i;try{i=await DL(t,e,n)}catch(o){throw Uv(e,o.message),o}if(i)Wo(t,i);else{let o=new Date;CL(ur(t,e),o,o)}Uv(e,void 0);let s=i?.entries??r;return{source:e,id:i?.id??Gu(e,fr(t,e)),count:It(s).length,change:zL(r,s)}}async function Hp(t,e,n){try{return{source:e,refreshed:await Tp(t,e,n)}}catch(r){return{source:e,failure:r instanceof Error?r:Error(String(r))}}}function zv(t,e){return`${ot(t)}: ${e.message}`}function qt(t){return`${t} palette${t===1?"":"s"}`}function zo(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 Dv({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 Fp(t){let e=Dv(t.change);return`${t.id} — ${qt(t.count)}${e?` (${e})`:""}`}function Lp(t){return Dv(t.change)?`Updated ${Fp(t)}`:void 0}function lc(t,e,n=cc(t)){try{if(_t(e)){let r=Je(e),i=ye(r);return{id:i,info:r,entries:Fn(e,i,n,me(!1))}}return yt(e)?Yi(e,fr(t,e),n,me(!1)):void 0}catch{return}}function qL(t){if(!Op(cr(t)))return[];let e=D(t),n=cc(t),r={renamed:new Map,removed:[]};for(let u of Yt(e.marketplaces)){let f=lc(t,u,n);if(f)Cv(f.id,f.info,new Set(f.entries.map((l)=>$e(l.name))),e.palettes,r)}if(r.renamed.size===0&&r.removed.length===0)return[];let i=ct(t,!1);jo(t,i,e.terminals,[...r.renamed.keys(),...r.removed]),xk(t,r.renamed,r.removed),H$(t,r.renamed),Sv(t,r.renamed,r.removed);let s=[...new Set(e.palettes.filter((u)=>!r.removed.includes(u)).map((u)=>r.renamed.get(u)??u))],{startup:o,...a}=e,c=o&&!r.removed.includes(o)?r.renamed.get(o)??o:void 0;return en(t,i,e,{...a,palettes:s,...c?{startup:c}:{}}),[...[...r.renamed].map(([u,f])=>`${u} is ${f} now — its marketplace renamed it`),...r.removed.map((u)=>`${u} was removed from its marketplace`)]}function Cp(t){let e=ko(t,ct(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 marketplace":"their marketplaces"} — ctrl+r on a palette marked ↑ in Browse (\`ttheme\`) takes it`}function hs(t,e){let n=qL(t),r=D(t),i=new Set(e.flatMap((o)=>o.change.gone)),s=r.palettes.filter((o)=>i.has(o)).map((o)=>`${o} left its marketplace — ttheme keeps the copy you have`);return[...n,...s]}async function qv(t=J()){try{if(!Go()||!Op(cr(t)))return;let e=Rp(t,D(t));if(e.length===0)return;let n=hi(`Checking ${e.map(ot).join(", ")} for updates`),r=await Promise.all(e.map((o)=>Hp(t,o,Pp)));n.done();let i=r.flatMap((o)=>("refreshed"in o)?[o.refreshed]:[]),s=i.flatMap((o)=>Lp(o)??[]);if(s.length===0)return;cl([...s,...hs(t,i),...[Cp(t)??[]].flat()])}catch{return}}var VL="https://kecan0406.github.io/ttheme/marketplaces.json",ZL=/^#[0-9a-f]{6}$/i,XL=/^(cursor|foreground|background|selection|ansi(1[0-5]|[0-9]))$/,QL=/^\d{4}-\d{2}-\d{2}$/;function tC(t){return t.replace(/[\p{Cc}\s]+/gu," ").trim()}function Do(t){return typeof t==="string"?tC(t):void 0}function Jv(t){return typeof t==="string"&&ZL.test(t)?t.toLowerCase():void 0}function eC(t,e){if(typeof e!=="object"||e===null)return;let n=e,r=Do(n.name),[i,s,o,a]=[n.background,n.foreground,n.cursor,n.selection].map(Jv),c=Array.isArray(n.ansi)?n.ansi.map(Jv):[],u=Array.isArray(n.signatureSlots)?n.signatureSlots:[];if(!r||ne(`${t}/${r}`)||!i||!s||!o||!a||c.length!==16||c.some((l)=>l===void 0)||u.length!==3||!u.every((l)=>typeof l==="string"&&XL.test(l)))return;let f=Do(n.catalog);return{name:r,...f?{catalog:f}:{},background:i,foreground:s,cursor:o,selection:a,ansi:c.filter((l)=>l!==void 0),signatureSlots:u}}function nC(t){if(typeof t!=="object"||t===null)return;let e=t,n=Do(e.id),r=Do(e.source);if(!n||!r||ne(`${n}/x`))return;let i;try{i=hn(r)}catch{return}if(!yt(i))return;let s=(Array.isArray(e.palettes)?e.palettes:[]).flatMap((c)=>eC(n,c)??[]);if(s.length===0)return;let o=typeof e.stars==="number"&&Number.isFinite(e.stars)&&e.stars>=0?Math.floor(e.stars):0,a=Do(e.updated)??"";return{id:n,source:i,about:Do(e.about)??"",stars:o,updated:QL.test(a)?a:"",palettes:s}}function Yv(t){let e=JSON.parse(t),n=typeof e==="object"&&e!==null?e.marketplaces:void 0;if(!Array.isArray(n))throw Error("the marketplace index lists no marketplaces");let r=new Set;return n.flatMap((i)=>{let s=nC(i);if(!s||r.has(s.id))return[];return r.add(s.id),[s]})}function rC(){return YL(Nn(),"marketplace-index.json")}function iC(t){try{let e=JSON.parse(JL(t,"utf8")),n=typeof e==="object"&&e!==null?e:{};return typeof n.etag==="string"&&typeof n.at==="number"&&typeof n.text==="string"?{etag:n.etag,at:n.at,text:n.text}:void 0}catch{return}}async function Bl(t,e=rC(),n=VL){let r=iC(e),i;try{i=r?Yv(r.text):void 0}catch{i=void 0}try{let s=await Wa(n,void 0,t,r&&i?{"if-none-match":r.etag}:{}),o=Date.now();if(s.status===304&&r&&i)return C(e,JSON.stringify({...r,at:o})),{marketplaces:i,at:o};let a=await s.text(),c=Yv(a);return C(e,JSON.stringify({etag:s.headers.get("etag")??"",at:o,text:a})),{marketplaces:c,at:o}}catch(s){if(!r||!i)throw s;return{marketplaces:i,at:r.at,offline:s instanceof Error?s.message:String(s)}}}var tS=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,uC=["add","remove","search","init","check"];function _p(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function lC(){try{let t=sC("gh",["api","user","--jq",".login"],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4}).trim().toLowerCase();return tS.test(t)?t:void 0}catch{return}}async function fC(t,e){if(e.author)return e.author;let n=lC();if(!n){if(!_p())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 bm({message:"Your GitHub handle — your palettes are named <handle>@<marketplace>/<palette>",validate:(i)=>tS.test((i??"").toLowerCase())&&(i??"").length<=39?void 0:"that is not a GitHub handle"});if(ie(r))throw Error("no handle given");n=r.toLowerCase()}return tn(t,{...e,author:n}),console.log(`Your palettes are named ${n}@<marketplace>/<palette>`),n}function mi(t,e){if(e===Y)return Y;return _t(e)?ye(Je(e)):Gu(e,fr(t,e))}function Wl(t,e){try{return mi(t,e)}catch{return}}function eS(t){return et(t)??Y}function dc(t){return ct(t).palettes.filter((e)=>et(e.name)===void 0)}function dC(t){let e=fc(import.meta.dirname,"..","dist","manifest.json");return Gl(e)?Vr(Ul(e,"utf8")).palettes:dc(t)}function hc(t,e,n){let{updates:r,...i}=t,s=Object.entries(n).filter(([o,a])=>yt(o)&&e.includes(o)&&a!==Yr(o,{}));return{...i,marketplaces:e,...s.length>0?{updates:Object.fromEntries(s)}:{}}}function nS(t,e,n,r){return e.find((i)=>i!==n&&!qi(i,n)&&Wl(t,i)===r)}function jp(t,e,n,r){let i=D(t),s=Yt(i.marketplaces),o=nS(t,s,e,n);if(o)throw Error(`${n} already names the marketplace at ${ot(o)} — \`ttheme marketplace remove ${n}\` first`);let a=r===void 0?{...i.updates}:{...i.updates,[e]:r};tn(t,hc(i,s.includes(e)?s:[...s,e],a))}async function hC(t){if(!_p())return!1;let e=await _e({message:`Update ${t} on its own when its author changes it? ttheme checks once a day, when you run it`,initialValue:!1});if(ie(e))throw Error("no answer given — nothing was added");return e}async function rS(t,e){let n=hi(`Fetching ${ot(e)}`);try{return await uc(t,e)}finally{n.done()}}async function mC(t,e,n){let r=await rS(t,n),i=D(t),s=Yt(i.marketplaces),o=nS(t,s,n,r.id);if(o)throw Error(`${r.id} already names the marketplace at ${ot(o)} — \`ttheme marketplace remove ${r.id}\` first`);let{[e]:a,...c}=i.updates??{},u=a===void 0?c:{...c,[n]:a};return tn(t,hc(i,s.map((f)=>f===e?n:f),u)),Wo(t,r),r}async function Bp(t,e){let n=hn(e),r=Yt(D(t).marketplaces);if(r.includes(n))return console.log(`${ot(n)} is already added`),{source:n,id:mi(t,n),fresh:!1};let i=yt(n)?r.find((c)=>yt(c)&&qi(c,n)):void 0;if(i){let c=await mC(t,i,n);return console.log(`Moved ${c.id} to ${La(n)??"its default branch"} · ${ot(n)} — ${qt(It(c.entries).length)}`),{source:n,id:c.id,fresh:!1}}if(_t(n)){let c=ye(Je(n));jp(t,n,c);let u=Fn(n,c,dc(t)).length;return console.log(`Added ${c} · ${ot(n)} — ${qt(u)}, read in place`),{source:n,id:c,fresh:!0}}let s=await rS(t,n),o=n===Y?void 0:await hC(s.id);jp(t,n,s.id,o),Wo(t,s);let a=qt(It(s.entries).length);return console.log(n===Y?`Added the official marketplace — ${a}`:`Added ${s.id} · ${ot(n)} — ${a}${o?", updating on its own":""}`),{source:n,id:s.id,fresh:!0}}async function pC(t){let e=J(),{source:n,id:r,fresh:i}=await Bp(e,t);if(!i)return;if(_t(n))console.log("\nThe Browse tab of `ttheme` picks them · once the folder is on GitHub, `ttheme marketplace add <owner>/<repo>` adds it anywhere");else if(n===Y)console.log("\nThe Browse tab of `ttheme` picks them");else console.log(`
652
+ The Browse tab of \`ttheme\` picks them, or \`ttheme add ${r}/<palette>\``)}function Gp(t,e){if(yt(e))cC(ur(t,e),{force:!0})}function Up(t){return`${qt(t.length)} installed from it keep${t.length===1?"s":""} working: ${t.join(", ")} — \`ttheme remove\` drops ${t.length===1?"it":"them"}`}function gC(t){let e=J(),n=D(e),r=Yt(n.marketplaces),i=r.find((u)=>Wl(e,u)===t)??r.find((u)=>u===iS(t));if(!i)throw Error(`no marketplace named ${t} — \`ttheme marketplace\` lists them`);let s=Wl(e,i),o=n.palettes.filter((u)=>eS(u)===s),a=r.filter((u)=>u!==i),c=hc(n,a,n.updates??{});if(tn(e,c),Gp(e,i),Dt(e,ct(e),c),console.log(`Removed ${s??t} · ${ot(i)}`),o.length>0)console.log(Up(o))}function iS(t){try{return hn(t)}catch{return}}function bC(t,e){try{if(e===Y)return It(Vr(Ul(lr(t),"utf8")).palettes).length;if(_t(e))return Fn(e,mi(t,e),dc(t),me(!1)).length;return Yi(e,fr(t,e),dc(t),me(!1)).entries.length}catch{return}}function Wp(t,e,n=kr(),r=Date.now()){if(_t(e))return"read in place";if(e===Y)return"comes with ttheme";let i=n[e],s=Ip(t,e);if(i&&(s===void 0||i.at>s))return`update failed ${zo(i.at,r)}`;return s===void 0?"never updated":`updated ${zo(s,r)}`}function wC(){let t=J(),e=D(t),n=Yt(e.marketplaces);if(n.length===0){console.log("No marketplaces — `ttheme marketplace add official` brings the official one back");return}let r=kr(),i=n.map((a)=>{let c=Wl(t,a)??"?",u=bC(t,a),f=e.palettes.filter((h)=>eS(h)===c).length,l=_t(a)?[]:[`auto-update ${Yr(a,e.updates)?"on":"off"}`],d=a===Y?void 0:lc(t,a)?.info.description;return{name:c,where:ot(a),about:d,note:[u===void 0?"Unreadable":qt(u),...f>0?[`${f} installed`]:[],...l,Wp(t,a,r)].join(" · ")}}),s=Math.max(...i.map((a)=>a.name.length)),o=Math.max(...i.map((a)=>a.where.length));for(let a of i)if(console.log(` ${a.name.padEnd(s)} ${a.where.padEnd(o)} ${a.note}`),a.about)console.log(` ${" ".repeat(s)} ${a.about}`)}function Kp(t,e){return Wi([t.id,t.source,t.about,...t.palettes.flatMap((n)=>[n.name,n.catalog??""])],e)}async function $C(t){let e=J(),{marketplaces:n,at:r,offline:i}=await Bl();if(i)console.log(`Offline — the list from ${zo(r)} (${i})
653
+ `);let s=n.filter((u)=>!t||Kp(u,t));if(s.length===0){console.log(`No marketplace carries the ${Di} topic${t?` and matches ${t}`:""} yet`);return}let o=new Set(Yt(D(e).marketplaces).map(Jr)),a=Math.max(...s.map((u)=>u.id.length)),c=Math.max(...s.map((u)=>u.source.length));for(let u of s){let f=`★${u.stars}`.padStart(5);console.log(` ${o.has(u.source)?"●":"○"} ${u.id.padEnd(a)} ${u.source.padEnd(c)} ${f} ${qt(u.palettes.length)} ${u.about}`)}console.log("\n`ttheme marketplace add <owner/repo>` adds one")}function sS({name:t}){return`ttheme-${t}`}function kC(t,e){oC(Cu(t),{recursive:!0}),C(fc(t,ft),fk(e)),C(fc(t,"README.md"),`# ${ye(e)}
654
654
 
655
655
  A [ttheme](https://github.com/kecan0406/ttheme) marketplace:
656
656
 
657
657
  \`\`\`sh
658
- ttheme marketplace add ${e.owner}/${aS(e)}
658
+ ttheme marketplace add ${e.owner}/${sS(e)}
659
659
  ttheme
660
660
  \`\`\`
661
- `)}function cS(t){return ne(`x@${t}/x`)?"takes lowercase letters, digits and single hyphens":void 0}async function uS(){if(!Up())throw Error("name the marketplace: ttheme marketplace init <name>, or --in <name> on new");let t=await km({message:"Your marketplace's name — its palettes are <you>@<name>/<palette>",validate:(e)=>cS((e??"").toLowerCase())});if(ie(t))throw Error("no marketplace name given");return t.toLowerCase()}async function lS(t,e){let n=Vi(t);if(e){let o=n.find((a)=>a.name===e||a.id===e||a.dir===oS(e));if(!o)throw Error(`${e} is not one of your local marketplaces — \`ttheme marketplace init ${e}\` makes it one`);return o}let[r,...i]=n;if(r&&i.length===0)return r;if(r)throw Error(`you have ${n.length} local marketplaces — --in names one: ${n.map((o)=>o.name).join(", ")}`);let s=await uS();return fS(t,Hh(t,s),s)}async function fS(t,e,n){let r=!Wl(mc(e,ot)),i;if(r){let o=cS(n);if(o)throw Error(`the marketplace name ${n} ${o}`);if(Wl(e)&&cC(e).length>0)throw Error(`${e} is not empty — pick a new folder for the marketplace`);i={owner:await dC(t,D(t)),name:n},yC(e,i)}else i=Ye(e);let s=ye(i);return Gp(t,e,s),console.log(`${r?"Made":"Added"} your marketplace ${s} · ${st(e)}`),{dir:e,...i,id:s}}function Qv(t){return t.startsWith(".")||t.startsWith("/")||t.startsWith("~")}async function vC(t){let e=J(),n=t&&!Qv(t)?t.toLowerCase():t?eS(pn(t)).toLowerCase():await uS(),r=t&&Qv(t)?pn(t):Hh(e,n),i=await fS(e,r,n),s=`${i.owner}/${aS(i)}`;console.log(`
661
+ `)}function oS(t){return ne(`x@${t}/x`)?"takes lowercase letters, digits and single hyphens":void 0}async function aS(){if(!_p())throw Error("name the marketplace: ttheme marketplace init <name>, or --in <name> on new");let t=await bm({message:"Your marketplace's name — its palettes are <you>@<name>/<palette>",validate:(e)=>oS((e??"").toLowerCase())});if(ie(t))throw Error("no marketplace name given");return t.toLowerCase()}async function cS(t,e){let n=Ji(t);if(e){let o=n.find((a)=>a.name===e||a.id===e||a.dir===iS(e));if(!o)throw Error(`${e} is not one of your local marketplaces — \`ttheme marketplace init ${e}\` makes it one`);return o}let[r,...i]=n;if(r&&i.length===0)return r;if(r)throw Error(`you have ${n.length} local marketplaces — --in names one: ${n.map((o)=>o.name).join(", ")}`);let s=await aS();return uS(t,Ah(t,s),s)}async function uS(t,e,n){let r=!Gl(fc(e,ft)),i;if(r){let o=oS(n);if(o)throw Error(`the marketplace name ${n} ${o}`);if(Gl(e)&&aC(e).length>0)throw Error(`${e} is not empty — pick a new folder for the marketplace`);i={owner:await fC(t,D(t)),name:n},kC(e,i)}else i=Je(e);let s=ye(i);return jp(t,e,s),console.log(`${r?"Made":"Added"} your marketplace ${s} · ${ot(e)}`),{dir:e,...i,id:s}}function Zv(t){return t.startsWith(".")||t.startsWith("/")||t.startsWith("~")}async function yC(t){let e=J(),n=t&&!Zv(t)?t.toLowerCase():t?Qv(hn(t)).toLowerCase():await aS(),r=t&&Zv(t)?hn(t):Ah(e,n),i=await uS(e,r,n),s=`${i.owner}/${sS(i)}`;console.log(`
662
662
  \`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:
663
663
 
664
- cd ${st(r)}
664
+ cd ${ot(r)}
665
665
  git init -b main && git add -A && git commit -m "${i.id}"
666
666
  gh repo create ${s} --public --source . --push
667
- gh repo edit ${s} --add-topic ${qi}
667
+ gh repo edit ${s} --add-topic ${Di}
668
668
 
669
- Every push is the marketplace: \`ttheme marketplace add ${s}\` works anywhere`)}function SC(t){let e=t?pn(t):process.cwd(),n=mc(e,ot);if(!Wl(n))throw Error(`${st(e)} has no ${ot} — \`ttheme marketplace init ${st(e)}\` makes one`);let r=[],i=[],s=Kl(n,"utf8"),o;try{o=Ye(e)}catch(h){return console.error(` ✗ ${h.message}`),1}let a=ji(s),c=a.owner;for(let h of Object.keys(a).filter((m)=>!ck.includes(m)))i.push(`${ot}: unknown key ${h} — ttheme ignores it`);for(let h of Object.keys(c).filter((m)=>!uk.includes(m)))i.push(`${ot}: unknown key owner.${h} — ttheme ignores it`);for(let[h,m]of(Array.isArray(a.catalog)?a.catalog:[]).entries())for(let p of Object.keys(m).filter((b)=>!lk.includes(b)))i.push(`${ot}: unknown key catalog[${h}].${p} — ttheme ignores it`);if(!o.description)i.push(`${ot}: no description — Browse and the marketplace page show one`);let u=ye(o),f=jn(e,u,hC(J()),(h,m)=>r.push(`${Xv(e,h)}: ${m.replace(`${eS(h)}: `,"")}`));for(let h of $o(e)){let m;try{m=h$(h.path,Kl(h.path,"utf8"))}catch{m=[]}for(let p of m)i.push(`${Xv(e,h.path)}: unknown key ${p} — ttheme ignores it`)}for(let h of o.catalogs){let m=f.filter((p)=>p.catalog===h.name);if(m.length===0)i.push(`${ot}: catalog ${h.name} has no folder under palettes/ — ttheme ignores it`);else if(h.lead&&!m.some((p)=>$e(p.name)===h.lead))i.push(`${ot}: catalog ${h.name} leads with ${h.lead}, which is not in it — its first palette leads instead`)}let l=Bv(o.renames,new Set(f.map((h)=>$e(h.name))));r.push(...l.errors.map((h)=>`${ot}: ${h}`)),i.push(...l.warnings.map((h)=>`${ot}: ${h}`));for(let h of f){let m=Ga(h).filter((b)=>b.startsWith(" ✗")),p=h.catalog?`${h.catalog}/${$e(h.name)}`:$e(h.name);console.log(` ${p}${m.length>0?`
669
+ Every push is the marketplace: \`ttheme marketplace add ${s}\` works anywhere`)}function vC(t){let e=t?hn(t):process.cwd(),n=fc(e,ft);if(!Gl(n))throw Error(`${ot(e)} has no ${ft} — \`ttheme marketplace init ${ot(e)}\` makes one`);let r=[],i=[],s=Ul(n,"utf8"),o;try{o=Je(e)}catch(h){return console.error(` ✗ ${h.message}`),1}let a=Ci(s),c=a.owner;for(let h of Object.keys(a).filter((m)=>!ok.includes(m)))i.push(`${ft}: unknown key ${h} — ttheme ignores it`);for(let h of Object.keys(c).filter((m)=>!ak.includes(m)))i.push(`${ft}: unknown key owner.${h} — ttheme ignores it`);for(let[h,m]of(Array.isArray(a.catalog)?a.catalog:[]).entries())for(let p of Object.keys(m).filter((b)=>!ck.includes(b)))i.push(`${ft}: unknown key catalog[${h}].${p} — ttheme ignores it`);if(!o.description)i.push(`${ft}: no description — Browse and the marketplace page show one`);let u=ye(o),f=Fn(e,u,dC(J()),(h,m)=>r.push(`${Vv(e,h)}: ${m.replace(`${Qv(h)}: `,"")}`));for(let h of go(e)){let m;try{m=f$(h.path,Ul(h.path,"utf8"))}catch{m=[]}for(let p of m)i.push(`${Vv(e,h.path)}: unknown key ${p} — ttheme ignores it`)}for(let h of o.catalogs){let m=f.filter((p)=>p.catalog===h.name);if(m.length===0)i.push(`${ft}: catalog ${h.name} has no folder under palettes/ — ttheme ignores it`);else if(h.lead&&!m.some((p)=>$e(p.name)===h.lead))i.push(`${ft}: catalog ${h.name} leads with ${h.lead}, which is not in it — its first palette leads instead`)}let l=jv(o.renames,new Set(f.map((h)=>$e(h.name))));r.push(...l.errors.map((h)=>`${ft}: ${h}`)),i.push(...l.warnings.map((h)=>`${ft}: ${h}`));for(let h of f){let m=ja(h).filter((b)=>b.startsWith(" ✗")),p=h.catalog?`${h.catalog}/${$e(h.name)}`:$e(h.name);console.log(` ${p}${m.length>0?`
670
670
  ${m.join(`
671
671
  `)}`:" passes the gate"}`)}for(let h of r)console.error(` ✗ ${h}`);for(let h of i)console.log(` ! ${h}`);let d=(h,m)=>`${h} ${m}${h===1?"":"s"}`;return console.log(`
672
- ${u} · ${qt(f.length)} · ${d(r.length,"error")} · ${d(i.length,"warning")}`),r.length>0?1:0}async function dS(t,e){switch(t){case void 0:$C();return;case"add":await gC(tS(t,e));return;case"remove":bC(tS(t,e));return;case"search":await kC(e);return;case"init":await vC(e);return;case"check":return SC(e);default:throw Error(`unknown marketplace action ${t} — ${lC.join(", ")}, or none to list them`)}}function tS(t,e){if(!e)throw Error(t==="add"?"marketplace add takes a repository or a folder: ttheme marketplace add alice/ttheme-dust":"marketplace remove takes a marketplace name — `ttheme marketplace` lists them");return e}function hS(t,e){let n=mi(t,e);return`${n} — ${qt(jn(e,n,pc(t),me(!1)).length)}, read in place`}function mS(t){return[...t].length===1&&t>=" "&&t!==""}function EC(t){return[...t.replace(/[\r\n\t]+/g," ")].filter(mS).join("")}function gs(t,e,n=()=>!0){if(e==="backspace")return[...tm(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 mS(e)&&n(e)?t+e:void 0}class bs{value;constructor(t=""){this.value=t}key(t){let e=gs(this.value,t);if(e===void 0)return!1;return this.value=e,!0}paste(t){this.value+=EC(t)}}import{performance as MC}from"node:perf_hooks";import{StringDecoder as xC}from"node:string_decoder";var OC=30,PC=50,IC=500,RC=5,Vo=Buffer.from("\x1B[M"),ql="\x1B]1337;ReportCellSize\x07\x1B[16t\x1B[14t\x1B[18t",vS="\x1B[?1016$p\x1B[16t",SS={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"},AC={"\r":"enter","\n":"enter","\t":"tab","\b":"backspace","":"backspace","\x1B":"esc","\x00":"ctrl-space"},pS=/\[([0-?]*)([ -/]*)([@-~])/y,NC=/^\[[0-?]*[ -/]*$/,gS=/\[(<-?\d+;-?\d+;-?\d+)([Mm])/y,TC=/^\[<[-\d;]*$/,bS=/\](\d+)/y,HC=/^\]\d*$/,wS=/\]\d+;/y,LC=/^1337;ReportCellSize=([\d.]+);([\d.]+)(?:;([\d.]+))?$/,FC=/^(1[0-2]|17|4;\d{1,3});(rgba?:[0-9a-fA-F/]+)$/,ES="\x1B[200~",Dl="\x1B[201~";function CC(t){let e=AC[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 Zo(t){return{kind:"key",key:t}}function Xo(t){return{events:[Zo("esc")],end:t+1}}function jC(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 _C=["left","middle","right",void 0];function Jp(t,e,n,r){if(!Number.isInteger(t)||t<0||t>=128||!(e>=0)||!(n>=0))return;let i=t&3,s={kind:"mouse",row:n,col:e,shift:(t&4)!==0,alt:(t&8)!==0,ctrl:(t&16)!==0};if(t&64)return{...s,action:"wheel",button:void 0,wheel:i%2===0?-1:1,sideways:i>=2,count:0};let o=_C[i],a=t&32?o?"drag":"move":r||!o?"release":"press";return{...s,action:a,button:o,wheel:0,sideways:!1,count:a==="press"?1:0}}function BC(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[s=0,o=0,a=0]=r,c=Math.max(s,o,a)<128?Jp(s-32,o-33,a-33,!1):void 0;return{events:c?[c]:[],end:i}}function GC(t,e,n,r,i){let s=Math.max(0,e)/i.w,o=Math.max(0,n)/i.h,a=Math.floor(s),c=Math.floor(o),u=Jp(t,a,c,r);return u&&{...u,fx:s-a,fy:o-c}}function $S(t,e,n,r){if((n==="M"||n==="m")&&e===""&&t.startsWith("<")){let[s=-1,o=0,a=0]=t.slice(1).split(";").map(Number),c=r?GC(s,o,a,n==="m",r):Jp(s,o-1,a-1,n==="m");return c?[c]:[]}if(n==="t"&&e===""){let[s,o=0,a=0]=t.split(";").map(Number),c=s===6?"cell":s===4?"window":s===8?"grid":void 0;return c?[{kind:"size",of:c,h:o,w:a}]:[]}if(n==="y"&&e==="$"&&t.startsWith("?")){let[s=0,o=0]=t.slice(1).split(";").map(Number);return[{kind:"mode",mode:s,value:o}]}if(n==="c"&&t.startsWith("?"))return[{kind:"attributes"}];let i=e===""?SS[`${t}${n}`]:void 0;return i?[Zo(i)]:[]}function UC(t,e,n,r){gS.lastIndex=e+1;let i=gS.exec(t);if(i)return{events:$S(i[1],"",i[2],r),end:e+1+i[0].length};pS.lastIndex=e+1;let s=pS.exec(t);if(!s){let l=t.slice(e+1);return!n&&(NC.test(l)||TC.test(l))?void 0:Xo(e)}let[o,a="",c="",u=""]=s,f=e+1+o.length;if(a===""&&c===""&&u==="M")return BC(t,f,n);if(a==="200"&&u==="~"){let l=t.indexOf(Dl,f);if(l===-1)return n?{events:[{kind:"paste",text:t.slice(f)}],end:t.length}:void 0;return{events:[{kind:"paste",text:t.slice(f,l)}],end:l+Dl.length}}return{events:$S(a,c,u,r),end:f}}function WC(t){let e=LC.exec(t);if(e){let o=Number(e[3]??1);return[{kind:"size",of:"cell",h:Math.round(Number(e[1])*o),w:Math.round(Number(e[2])*o)}]}let n=FC.exec(t);if(n)return[{kind:"color",code:n[1],value:n[2]}];let[r="",i="",...s]=t.split(";");return[{kind:"osc",code:r,meta:jC(i),payload:s.join(";")}]}function KC(t,e,n){bS.lastIndex=e+1;let r=bS.exec(t),i=r?t[e+1+r[0].length]:void 0;if(i!==";"&&i!=="\x07"&&i!=="\x1B")return!n&&HC.test(t.slice(e+1))?void 0:Xo(e);let s=[t.indexOf("\x07",e),t.indexOf("\x1B\\",e+2)].filter((a)=>a!==-1);if(s.length===0)return n?{events:[],end:t.length}:void 0;let o=Math.min(...s);return{events:WC(t.slice(e+2,o)),end:o+(t[o]==="\x07"?1:2)}}function zC(t,e,n){let r=t[e+2];if(r===void 0)return n?Xo(e):void 0;if(!/^[A-Za-z]$/.test(r))return Xo(e);let i=SS[r];return{events:i?[Zo(i)]:[],end:e+3}}function DC(t,e,n,r){let i=t[e+1];if(i===void 0)return n?Xo(e):void 0;if(i==="[")return UC(t,e,n,r);if(i==="]")return KC(t,e,n);if(i==="O")return zC(t,e,n);if(i==="")return{events:[Zo("alt-backspace")],end:e+2};if(/^[a-z]$/.test(i))return{events:[Zo(`alt-${i}`)],end:e+2};return Xo(e)}function kS(t,e=!1,n){let r=[],i=0;while(i<t.length){if(t[i]==="\x1B"){let a=DC(t,i,e,n);if(!a)return{events:r,rest:t.slice(i)};r.push(...a.events),i=a.end;continue}let s=String.fromCodePoint(t.codePointAt(i)),o=CC(s);if(o)r.push(Zo(o));i+=s.length}return{events:r,rest:""}}function qC(t,e){for(let n=Math.min(Vo.length-1,t.length-e);n>0;n--)if(t.subarray(t.length-n).equals(Vo.subarray(0,n)))return t.length-n;return t.length}function JC(t){let e=[],n=0,r=t.indexOf(Vo);while(r!==-1&&r+6<=t.length){e.push(t.subarray(n,r));let[s=0,o=0,a=0]=t.subarray(r+3,r+6);if(o>32&&a>32)e.push(Buffer.from(`\x1B[<${s-32};${o-32};${a-32}M`));n=r+6,r=t.indexOf(Vo,n)}let i=r===-1?qC(t,n):r;return e.push(t.subarray(n,i)),{bytes:Buffer.concat(e),carry:i<t.length?t.subarray(i):void 0}}function yS(t){return wS.lastIndex=1,t.startsWith(ES)||t.startsWith("\x1B]")&&wS.test(t)}function YC(t,e){let n=t.slice(-Dl.length)+e;return t.startsWith(ES)?n.includes(Dl):n.includes("\x07")||n.includes("\x1B\\")}class Yp{held="";timer;carry;pressed;wheeled;utf8=new xC("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=MC.now();return t.filter((n)=>{if(n.kind!=="mouse")return!0;if(n.action==="wheel"){let s=n.wheel*(n.sideways?2:1),o=this.wheeled;if(o!==void 0&&o.way===s&&e-o.at<RC)return!1;return this.wheeled={at:e,way:s},!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<=IC;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.held&&!e.includes("\x1B")&&this.burst(e)){this.settle(),this.take([{kind:"paste",text:e}]);return}if(yS(this.held)&&!YC(this.held,e)){this.held+=e;return}let{events:n,rest:r}=kS(this.held+e,!1,this.cell());if(this.held=r,this.settle(),n.length>0)this.take(n)}settle(){let t=this.held.length+(this.carry?.length??0);if(t>0&&!yS(this.held))this.wait(t===1?OC:PC)}bytes(t){let{bytes:e,carry:n}=JC(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);let t=this.carry;this.carry=void 0;let e=t&&!t.subarray(0,Vo.length).equals(Vo)?this.utf8.write(t):"",{events:n}=kS(this.held+e,!0,this.cell());if(this.held="",n.length>0)this.take(n)}stop(){clearTimeout(this.timer),this.held="",this.carry=void 0}}class bc{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 Vp{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 Yl={on:"\x1B[?1049h",off:"\x1B[?1049l"},Dn={on:"\x1B[?25l",off:"\x1B[?25h"},pi={on:"\x1B[?7l",off:"\x1B[?7h"},Sr={on:"\x1B[?2004h",off:"\x1B[?2004l"},RS={on:"\x1B[?1004h",off:"\x1B[?1004l"},VC={on:"\x1B[?1000h\x1B[?1002h\x1B[?1006h",off:"\x1B[?1006l\x1B[?1002l\x1B[?1000l"},MS={on:"\x1B[?1016h",off:"\x1B[?1016l\x1B[?1006h"};function gi(t=process.env){return t.TTHEME_MOUSE==="off"?[]:[VC]}var AS={SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGTERM:15},ZC=3000;class $c extends Error{exit;constructor(t){super(t);this.exit=128+AS[t]}}var zn=[],ws=new Map,wc=new Map,xS;function OS(t){return zn.findLast((e)=>e.input===t)}var PS;function NS(t){for(let e of zn.toReversed())e.abort(t);if(!PS)PS=setTimeout(()=>{TS(),process.exit(t instanceof $c?t.exit:1)},ZC).unref()}var XC=Object.fromEntries(Object.keys(AS).map((t)=>[t,()=>NS(new $c(t))]));function TS(){for(let t of zn.toReversed())t.close()}function QC(){for(let t of zn)t.reassert();zn.at(-1)?.redraw()}function IS(t){let e=t?"on":"off";for(let[n,r]of Object.entries(XC))process[e](n,r);if(process[e]("uncaughtException",NS),process[e]("exit",TS),process.platform!=="win32")process[e]("SIGCONT",QC)}function Jl(){}class HS{input;output;failed;modes=[];assumed;owned=[];keys;tty;take;resized;queued=[];asking;reject=Jl;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 Yp((r)=>this.deliver(r),t.burst,()=>ws.has(MS)?xS:void 0),this.failed=new Promise((r,i)=>{this.reject=i}),this.failed.catch(Jl),this.tty&&!zn.some((r)=>r.tty))IS(!0);zn.push(this);let e="";for(let r of this.assumed)if(!ws.has(r))e+=r.on;for(let r of t.modes??[])e+=this.claim(r);this.write(e);let n=wc.get(this.input)??0;if(n===0)this.input.setRawMode?.(!0);wc.set(this.input,n+1),this.input.on("data",this.received),this.input.resume(),this.output.on("resize",this.resizing),this.output.on("error",Jl)}hold(t){this.write(this.claim(t))}pixels(t){xS=t,this.hold(MS)}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 s of i){let o=r?void 0:t(s);if(o!==void 0)r=!0,n(o)}if(!r)e()})}))}ask(t,e,n,r=!0){return new Promise((i)=>{let s={hold:r,pick:(c)=>{let u=e(c);if(u===void 0)return!1;return o(u),!0}},o=(c)=>{if(clearTimeout(a),this.asking===s)this.asking=void 0;i(c),this.release()},a=setTimeout(()=>o(void 0),n);this.asking=s,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.toReversed()){let r=(ws.get(n)??1)-1;if(r===0)ws.delete(n),t+=n.off;else ws.set(n,r)}this.write(t),this.open=!1;let e=(wc.get(this.input)??1)-1;if(e===0)wc.delete(this.input),this.input.setRawMode?.(!1),this.input.pause();else wc.set(this.input,e);if(this.output.off("error",Jl),zn.splice(zn.indexOf(this),1),this.tty&&!zn.some((n)=>n.tty))IS(!1)}received=(t)=>{if(OS(this.input)===this&&!this.aborted)this.keys.feed(t)};resizing=()=>{if(OS(this.input)===this)this.resized?.()};claim(t){this.modes.push(t);let e=ws.get(t)??0;if(ws.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 bi(t,e){let n=new HS(t);try{return await e(n)}finally{n.close()}}var t8=3,CS={catalogs:{top:io,shelf:(t)=>et(t.name)?t.catalog:void 0},marketplaces:{top:(t)=>et(t.name)??Y,shelf:(t)=>t.catalog}};function kc(t,e){return`${t}/${e}`}function LS(t){return et(t.name)?$e(t.name):t.name}function Vl(t,e){let n=e.shelf(t);return n===void 0?void 0:kc(e.top(t),n)}function Zl(t){if(t?.kind==="palette")return`palette ${t.entry.name}`;if(t?.kind==="top")return`top ${t.name}`;if(t?.kind==="catalog")return`catalog ${kc(t.top,t.name)}`;if(t?.kind==="extra")return`extra ${t.extra.key}`;return t?.kind??""}function $s(t){return t?.kind==="rule"}function Xl(t,e){return Ki([t.name,et(t.name)??"",t.native??"",t.catalog??"",...t.nativeNames??[],...Lu(t.booru)],e)}function jS(t,e,n,r="catalogs",i=[],s="tree"){let o=CS[r],a=n.trim(),c=[],u=(l)=>({kind:"palette",entry:l}),f=Map.groupBy(t.filter((l)=>!l.default),(l)=>o.top(l));for(let[l,d]of f){let h=d[0],m=a?d.filter(($)=>Xl($,a)):d;if(a&&m.length===0)continue;let p=s==="inside"||s==="tree"&&(a.length>0||e.has(l));if(s!=="inside")c.push({kind:"top",name:l,...!et(h.name)&&l===h.catalog&&h.native?{native:h.native}:{},lead:d.find(($)=>$.lead)??h,expanded:p,count:m.length});if(!p)continue;let b=m.filter(($)=>o.shelf($)!==void 0);for(let[$,k]of Map.groupBy(b,(S)=>o.shelf(S))){let S=k.find((x)=>x.lead)??k[0],v=a.length>0||e.has(kc(l,$));if(c.push({kind:"catalog",top:l,name:$,...S.native?{native:S.native}:{},lead:S,expanded:v,count:k.length}),v)c.push(...k.map(u))}c.push(...m.filter(($)=>o.shelf($)===void 0).map(u))}for(let l of i)if(!f.has(l)&&(a===""||Ki([l],a)))c.push({kind:"top",name:l,expanded:e.has(l),count:0});return c}function e8(t,e){let n=e.trim(),r=new Set(t.values().filter((i)=>!i.default&&(n===""||Xl(i,n))).map(io));return jS(t,new Set,"").filter((i)=>i.kind==="top"&&r.has(i.name))}function n8(t){return t.includes("@")}function FS(t,e,n,r,i=!0){let s=n-1;if(s<0)return t;let o;if(!Number.isFinite(e))o=e>0?s:0;else if(e>0)o=t>=s?i?0:s:Math.min(s,t+e);else o=t<=0?i?s:0:Math.max(0,t+e);if(!r(o))return o;let a=Math.sign(e),c=o+a;if(c>=0&&c<=s)return c;return i&&Math.abs(e)===1?c<0?s:0:o-a}function yc(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 r8(t){let e=t.findIndex((n)=>n.kind==="top"&&n8(n.name));return e>0&&t.slice(0,e).some((n)=>n.kind==="top")?t.toSpliced(e,0,{kind:"rule"}):t}function i8(t){let e=t.findIndex((n)=>n.kind==="palette");return e===-1?0:e}function Ql(t){return t==="decode"||t==="glitch"?t:"typewriter"}function wi(t,e,n,r){return Ve({kind:"row",at:t,part:e,...r?{pane:r}:{}},n)}class Qo{picked;scope;maxItems;focus="lit";named=[];catalogs=[];layout;mode;pane;place;color;p;onFocus;note;badge;about;tops;heads;extras;pinned;entries=[];catalogPad=0;namePad=0;expanded=new Set;rows=[];fixed=0;cursor=0;top=0;span=1;filter="";lastFocused="";constructor(t){this.picked=t.picked,this.scope=t.scope??"palette",this.layout=t.layout??"catalogs",this.mode=t.mode??"tree",this.pane=t.pane,this.place=CS[this.layout],this.maxItems=t.maxItems??12,this.color=t.color??!0,this.p=je(this.color),this.onFocus=t.onFocus,this.note=t.note,this.badge=t.badge,this.about=t.about,this.tops=t.tops,this.heads=t.heads,this.extras=t.extras,this.pinned=t.pinned,this.load(t.entries),this.rebuild("first")}load(t){this.entries=t,this.named=t.filter((e)=>!e.default),this.catalogs=[...new Set(this.named.map(io))],this.catalogPad=Math.max(0,...this.catalogs.map((e)=>e.length)),this.namePad=Math.max(0,...this.named.map((e)=>this.indent(e).length+LS(e).length))}lead(){return this.mode==="inside"?"":" "}indent(t){return this.place.shelf(t)===void 0?this.lead():`${this.lead()} `}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(this.place.top(t.entry));let e=Vl(t.entry,this.place);if(e!==void 0)this.expanded.add(e)}this.setFilter("")}focusedRow(){return this.rows[this.cursor]}refocus(){this.lastFocused="",this.sync()}refresh(){this.rebuild("stay")}select(t){let e=this.rows.findIndex((n)=>Zl(n)===t);if(e===-1)return!1;return this.cursor=e,this.sync(),!0}members(t,e){let n=this.scope==="palette"?this.filter.trim():"";return this.under(t,e).filter((r)=>n===""||Xl(r,n))}under(t,e){return this.named.filter((n)=>this.place.top(n)===t&&(e===void 0||this.place.shelf(n)===e))}inside(t){return t.kind==="palette"?[t.entry]:t.kind==="top"?this.under(t.name):t.kind==="catalog"?this.under(t.top,t.name):[]}everyone(t){return t.flatMap((e)=>e.kind==="top"?this.members(e.name):[])}pick(){let t=this.rows[this.cursor],e=t?.kind==="palette"?[t.entry.name]:t?.kind==="top"?this.members(t.name).map((r)=>r.name):t?.kind==="catalog"?this.members(t.top,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.catalogs.filter((t)=>this.members(t).every((e)=>this.picked.has(e.name))).length}total(){return this.scope==="catalog"?this.catalogs.length:this.named.length}matched(){let t=this.filter.trim();if(this.scope==="catalog")return this.rows.filter((e)=>e.kind==="top").length;return t?this.named.filter((e)=>Xl(e,t)).length:this.named.length}sync(){let t=this.rows[this.cursor],e=t?.kind==="palette"?t.entry:t?.kind==="top"&&this.scope==="catalog"?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==="catalog"?e8(this.entries,this.filter):jS(this.entries,this.expanded,this.filter,this.layout,this.tops?.()??[],this.mode),r=this.layout==="marketplaces"||n.length===0?n:r8([{kind:"all",count:this.allCount(n)},...n]),i=(a)=>(a??[]).map((c)=>({kind:"extra",extra:c})),s=i(this.pinned?.());this.fixed=s.length,this.rows=[...i(this.heads?.()),...r,...i(this.extras?.()),...s];let o=n.length>0?this.rows.indexOf(n[this.mode==="inside"&&!this.filter.trim()?0:i8(n)]):Math.max(0,this.rows.findIndex((a)=>!$s(a)&&!(a.kind==="extra"&&a.extra.idle)));if(t==="first")this.cursor=o;else if(t==="keep"||t==="stay"){let a=Zl(e),c=e?.kind==="palette"||t==="stay"?this.rows.findIndex((f)=>Zl(f)===a):-1,u=e?.kind==="extra"&&t==="stay";this.cursor=c!==-1?c:u?Math.min(this.cursor,this.rows.length-1):o}else if(this.cursor>=this.rows.length)this.cursor=Math.max(0,this.rows.length-1);this.settle(),this.sync()}settle(){if(!$s(this.rows[this.cursor]))return;let t=this.rows.findIndex((n,r)=>r>this.cursor&&!$s(n)),e=this.rows.findLastIndex((n,r)=>r<this.cursor&&!$s(n));this.cursor=t!==-1?t:e!==-1?e:this.cursor}allCount(t){return this.scope==="catalog"?t.length:this.everyone(t).length}move(t,e=!0){let n=this.rows.length-this.fixed,r=this.fixed>0&&n>0&&Math.abs(t)!==1;this.cursor=r?FS(Math.min(this.cursor,n-1),t,n,(i)=>$s(this.rows[i]),e):FS(this.cursor,t,this.rows.length,(i)=>$s(this.rows[i]),e),this.sync()}point(t){let e=this.rows[t];if(!e||$s(e))return!1;return this.cursor=t,this.sync(),!0}size(){return this.rows.length}outer(){let t=this.rows[this.cursor];return this.mode==="inside"&&(this.filter.trim()!==""||t===void 0||t.kind==="extra"||t.kind==="catalog"&&!t.expanded||t.kind==="palette"&&Vl(t.entry,this.place)===void 0)}flip(){let t=this.rows[this.cursor];if(t?.kind==="top"||t?.kind==="catalog")this.fold(!t.expanded)}foldable(){let t=this.rows[this.cursor];return(t?.kind==="catalog"||t?.kind==="top"&&this.mode==="tree")&&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)=>Zl(e)===t)),this.sync()}fold(t){if(this.filter||this.scope==="catalog")return;let e=this.rows[this.cursor];if(e?.kind==="top"){if(t!==e.expanded)this.toggle(e.name)}else if(e?.kind==="catalog"){if(t!==e.expanded)this.toggle(kc(e.top,e.name));else if(!t&&this.mode==="tree")this.reach(`top ${e.top}`)}else if(e?.kind==="palette"&&!t&&!e.entry.default){let n=Vl(e.entry,this.place);if(n===void 0){if(this.mode==="tree"){let r=this.place.top(e.entry);this.climb(r,`top ${r}`)}}else this.climb(n,`catalog ${n}`)}}page(){return this.span}pins(){let t=this.rows.length-this.fixed;return this.rows.slice(t).flatMap((e,n)=>this.renderRow(e,t+n))}window(){let t=this.rows.length-this.fixed,e=this.rows.slice(0,t).map((u,f)=>this.renderRow(u,f)),n=(u)=>e[u]?.length??0,r=Math.max(1,this.maxItems),i=Math.max(0,Math.min(this.cursor,t-1));this.top=Math.min(this.top,i);let s=0;for(let u=this.top;u<=i;u++)s+=n(u);while(this.top<i&&s>r)s-=n(this.top),this.top+=1;let o=0;for(let u=this.top;u<e.length;u++)o+=n(u);while(this.top>0&&o+n(this.top-1)<=r)this.top-=1,o+=n(this.top);let a=[],c=this.top;while(c<e.length&&(c===this.top||a.length+n(c)<=r))a.push(...e[c]??[]),c+=1;return this.span=Math.max(1,c-this.top),a.push(...e[c]??[]),{lines:a.slice(0,r),above:this.top,below:e.length-c}}renderRow(t,e){if(t.kind==="rule")return[` ${this.p.dim("── Marketplaces ──────────")}`];return(t.kind==="extra"?t.extra.text(e===this.cursor&&this.focus==="lit",e):this.rowText(t,e)).split(`
673
- `).map((r)=>r?wi(e,"row",r,this.pane):r)}rowText(t,e){let n=e===this.cursor&&this.focus!=="off",r=t.kind==="palette"?t.entry:t.kind==="all"?void 0:t.lead,i=this.color&&n&&this.focus==="lit"&&r!==void 0,{dim:s,bold:o}=this.p,a=(S)=>this.color?` ${Du(fo(S),i?mr(S.foreground):$t)}`:"",c=!n?" ":i?`${mr(r.cursor)}${R.gutter}${$t} `:this.focus==="held"?this.color?`${this.p.dim(R.gutter)} `:" ":`${R.gutter} `,u=(S)=>i?`${c}${Xk(r.selection,r.foreground)} ${S} ${pe}`:`${c} ${S}`,f=(S)=>wi(e,"box",`${S?R.on:R.off} `,this.pane),l=(S)=>wi(e,"fold",`${S?R.opened:R.closed} `,this.pane);if(t.kind==="all")return u(`${f(this.everyone(this.rows).every((S)=>this.picked.has(S.name)))}Select all ${s(`(${t.count})`)}`);if(t.kind==="top"&&this.scope==="catalog"){let S=`(${t.count})${t.native?` ${t.native}`:""}`;return u(`${f(this.pickedIn(t.name)===t.count)}${o(t.name.padEnd(this.catalogPad))}${t.lead?a(t.lead):""}${this.color?" ":" "}${s(S)}`)}let d=this.rows[this.cursor],h=(S,v)=>this.color&&d?.kind==="palette"&&S?this.p.accent(o(v)):o(v);if(t.kind==="top"){let S=h(d?.kind==="palette"&&this.place.top(d.entry)===t.name,t.name),v=t.native?` ${s(t.native)}`:"",x=this.badge?.(t.name)??"";if(this.about){let M=this.about(t.name,this.under(t.name),this.filter.trim()?t.count:void 0);return[...e>0?[""]:[],u(`${wi(e,"fold",`${M.added?R.on:R.off} `,this.pane)}${S}${v}${x}`),...M.lines.map((N)=>u(` ${N}`))].join(`
674
- `)}return u(`${l(t.expanded)}${S} ${s(`(${this.pickedIn(t.name)}/${t.count})`)}${v}${x}`)}if(t.kind==="catalog"){let S=d?.kind==="palette"&&Vl(d.entry,this.place)===kc(t.top,t.name),v=s(`(${this.pickedIn(t.top,t.name)}/${t.count})`),x=t.native?` ${s(t.native)}`:"";return u(`${this.lead()}${l(t.expanded)}${h(S,t.name)} ${v}${x}`)}let m=t.entry,p=this.indent(m),b=LS(m),$=this.color?b.padEnd(this.namePad-p.length):b,k=n?o($):$;return u(`${p}${f(this.picked.has(m.name))}${k}${a(m)}${this.note?.(m)??""}`)}}function Zp(t){let e=t.named[Math.floor(Math.random()*t.named.length)],n=t.catalogs[Math.floor(Math.random()*t.catalogs.length)];return e&&n?`${e.name} | ${n}`:""}class tf{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 s8=5;class Xp{picked;list;scope;color;required;most;hint;field=new bs;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 Qo({entries:t.entries,picked:this.picked,scope:this.scope,maxItems:this.most,color:this.color,...t.onFocus?{onFocus:t.onFocus}:{}}),this.hint=new tf(t.fx??"typewriter",()=>Zp(this.list),()=>this.redraw())}prompt(){return bi({input:this.input,output:this.output,modes:[Dn,Sr]},async(t)=>{let e=new vp((r)=>t.write(r),()=>t.cols),n=()=>{return this.list.maxItems=Math.max(t8,Math.min(this.most,t.rows-s8)),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=yc(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{dim:t,accent:e,warn:n}=je(this.color),r=this.scope==="catalog"?"Catalogs":"Palettes";if(this.state==="submit")return[`${t("◇")} ${r} ${t(`· ${this.list.pickedCount()} picked`)}`];if(this.state==="cancel")return[`${t(`◇ ${r} · cancelled`)}`];let i=this.field.value,s=`${e("◆")} ${r} ${t(`(${this.list.matched()}/${this.list.total()} · ${this.list.pickedCount()} picked)`)}`,o=this.hint.text(),a=`${e("│")} ${i?`${i}_`:t(`Search…${o?` e.g. ${o}`:""}`)}`,{lines:c,below:u}=this.list.window(),f=c.length>0?c.map((p)=>`${e("│")} ${p}`):[`${e("│")} ${t(`No ${this.scope==="catalog"?"catalogs":"palettes"} match '${i}'`)}`];while(f.length<this.list.maxItems)f.push(e("│"));let l=u>0?`${e("│")} ${t(`↓ ${u} more`)}`:e("│"),d=this.scope==="catalog"?"":" · ←→ fold",h=this.scope==="catalog"?"continue":"install",m=this.state==="error"?`${e("└")} ${n(this.error)}`:`${e("└")} ${t(`↑↓ move${d} · space pick · type to filter · enter ${h} · esc cancel`)}`;return[s,a,...f,l,m]}}var o8=40,a8=60,c8=42,u8=94,l8=22,_S=40,BS=10,vc=3,f8=20,GS={title:"",lines:[],brief:""};function d8(t){let e=t.trim();if(e!==Y&&!e.includes("/")&&!e.startsWith("~"))return;try{return pn(e)}catch{return}}function Qp(t){return t===Y?"Built in":yt(t)?t:st(t)}function tg(t){return t.charAt(0).toUpperCase()+t.slice(1)}class eg{picked;field=new bs;query=new bs;address=new bs;adds=new Map;removes=new Set;want=new Map;renew=new Set;updates;tuned;busy=new Map;failed=new Map;fetched=new Map;staging=new Set;refreshed=[];inflight=new Set;marketplaces;kept;installed;startup;io;order;color;p;hub;owns;input;output;maxItems=12;paint;list;inside;results;side="cards";showing="browse";landing;open;split=0;hint;screen;state="active";phase="browse";offset=0;started=!1;log=[];working="";stopped;beat=0;removing;adding;formError;leaving;goto;listing;loading=!1;loadError;help=!1;live;constructor(t){this.marketplaces=t.marketplaces,this.kept=t.kept,this.installed=new Set(t.installed),this.updates=new Set(t.updates??[]),this.tuned=new Set(t.tuned??[]),this.startup=t.startup,this.io=t.io,this.order=t.order??((e)=>e),this.color=t.color??!0,this.p=je(this.color),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),this.list=new Qo({entries:this.entries(),picked:this.picked,layout:"marketplaces",mode:"cards",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),badge:(e)=>this.badge(e),about:(e,n,r)=>this.about(e,n,r),tops:()=>this.tops(),heads:()=>this.heads(),onFocus:(e)=>this.focus(e)}),this.inside=new Qo({entries:[],picked:this.picked,layout:"marketplaces",mode:"inside",pane:"panel",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),pinned:()=>this.actions(),onFocus:(e)=>{if(this.side==="panel")this.focus(e)}}),this.inside.focus="off",this.results=new Qo({entries:[],picked:new Set,layout:"marketplaces",mode:"cards",color:this.color,maxItems:this.maxItems,heads:()=>[this.row({kind:"back"},!0)],extras:()=>this.found()}),this.follow(),this.hint=new tf(t.fx??"typewriter",()=>Zp(this.list),()=>this.redraw());for(let e of t.due)this.update(e)}run(){let t=[...this.owns?[Yl,Dn,pi]:[],Sr,...gi()],e=this.owns?[]:[Dn,pi];return bi({input:this.input,output:this.output,modes:t,assume:e},async(n)=>{let r=new hs({write:(i)=>n.write(i),view:()=>this.state==="active"?{lines:this.view(),ticking:this.phase==="applying"||this.fetching()}: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()}})}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.values().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.removing){if(t==="esc")this.removing=void 0;else if(/^[yn]$/i.test(t))this.answer(t.toLowerCase()==="y");return}if(this.phase!=="browse"){this.steer(t);return}if(this.showing==="search"){this.searchKey(t);return}if(this.side==="form"){this.formKey(t);return}let e=this.side==="panel",n=e?void 0:this.focusedFound(),r=n?.kind==="new"||n?.kind==="search",i=yc(t,(e?this.inside:this.list).page());if(t==="enter")if(this.onAction())this.act();else if(e&&this.inside.foldable())this.inside.flip();else if(!e&&this.list.focusedRow()?.kind==="top")this.enter();else if(r)this.activate();else this.finish();else if((t==="esc"||t==="ctrl-u")&&this.field.value)this.clear();else if(t==="esc")if(e)this.back();else this.state="cancel";else if(t==="?")this.help=!0;else if(i!==void 0)this.move(i);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="right")if(e)this.inside.fold(!0);else if(r)this.activate();else this.enter();else if(t==="left"){if(e&&this.inside.outer())this.back();else if(e)this.inside.fold(!1)}else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Xu(this.hub,t==="tab"?1:-1))}else if(t===" ")if(this.onAction())this.act();else if(e)this.inside.pick();else this.activate();else if(t==="ctrl-r"){if(e)this.toggleRenew()}else if(this.field.key(t))this.typed()}searchKey(t){let e=yc(t,this.results.page());if(t==="enter"||t===" ")this.take(t==="enter");else if((t==="esc"||t==="ctrl-u")&&this.query.value)this.query.value="",this.searchTyped();else if(t==="esc"||t==="left")this.closeSearch();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==="tab"||t==="shift-tab"){if(this.hub)this.leave(Xu(this.hub,t==="tab"?1:-1))}else if(t==="ctrl-r")this.loadIndex();else if(this.query.key(t))this.searchTyped()}formKey(t){if(t==="esc"||t==="left")this.back();else if(t==="?")this.help=!0;else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Xu(this.hub,t==="tab"?1:-1))}else if(this.fetching())return;else if(t==="enter")this.submit();else if(this.address.key(t))this.edited()}openForm(){let t=this.field.value.trim();if(!this.address.value&&d8(t))this.address.value=t;this.side="form",this.list.focus="held"}edited(){this.formError=void 0,this.adding=void 0}submit(){let t=this.address.value.trim();if(!t){this.formError="type a repository or a folder";return}let e;try{e=pn(t)}catch(r){this.formError=r.message;return}let n=this.known(e);if(n){this.address.value="",this.reveal(n.id);return}this.adding=e,this.load(e)}fetching(){return this.adding!==void 0&&this.busy.has(this.adding)}reveal(t){if(this.back(),this.field.value)this.clear();this.list.select(`top ${t}`),this.enter()}take(t){let e=this.focusedFound();if(e?.kind==="back"){this.closeSearch();return}if(e?.kind==="state"){this.loadIndex();return}let n=e?.kind==="listed"?e.listed.source:void 0;if(n===void 0)return;let r=this.known(n);if(!r)this.landing=t?n:void 0,this.load(n);else if(t)this.closeSearch(),this.list.select(`top ${r.id}`);else if(this.adds.has(r.source))this.adds.delete(r.source),this.want.delete(r.source),this.reload()}openSearch(){let t=this.field.value.trim();if(t)this.query.value=t;if(this.showing="search",this.results.setFilter(this.query.value),this.results.refresh(),this.live&&!this.listing)this.loadIndex()}closeSearch(){this.showing="browse",this.landing=void 0,this.follow()}searchTyped(){this.results.setFilter(this.query.value)}loadIndex(){if(this.loading)return;this.loading=!0,this.loadError=void 0,this.redraw(),this.track(this.io.index()).then((t)=>{this.loading=!1,this.listing=t,this.results.refresh(),this.redraw()},(t)=>{this.loading=!1,this.loadError=t.message,this.results.refresh(),this.redraw()})}finish(){if(this.dirty())this.phase="review",this.offset=0}enter(){if(this.follow(),this.side==="panel")return!0;if(this.list.focusedRow()?.kind!=="top"||this.inside.size()===0)return!1;return this.side="panel",this.list.focus="held",this.inside.focus="lit",this.inside.refocus(),!0}back(){if(this.side==="form"&&this.adding!==void 0)this.staging.delete(this.adding);this.side="cards",this.list.focus="lit",this.inside.focus="off"}follow(t=!1){let e=this.list.focusedRow(),n=e?.kind==="top"?e.name:void 0;if(t||n!==this.open)this.open=n,this.inside.setEntries(n===void 0?[]:this.membersOf(n));if(this.side==="panel"&&this.inside.size()===0)this.back()}membersOf(t){return this.entries().filter((e)=>(et(e.name)??Y)===t)}pasted(t){if(this.phase!=="browse"||this.help||this.removing||this.leaving!==void 0)return;if(this.showing==="search")this.query.paste(t),this.searchTyped();else if(this.side==="form"){if(!this.fetching())this.address.paste(t),this.edited()}else this.field.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.removing;if(t.action==="wheel"){if(!t.sideways&&(i||this.phase!=="browse"))this.wheel(t.wheel,this.split>0&&t.col>=this.split);return}if(!r)return;if(t.action==="press"&&t.button==="left"){if(i&&r.kind==="row")this.point(r);else if(i&&r.kind==="form")this.openForm()}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.side===(r.pane?"panel":"cards"))this.move(r.step*(r.pane?this.inside:this.current()).page())}else if(r.kind==="hub"){if(i&&this.hub&&r.tab!==this.hub)this.leave(uy(r.tab))}else if(r.kind==="row"&&i)this.openRow(r,t.count)}}point(t){if(this.showing==="search"){this.results.point(t.at);return}if(t.pane){if(this.enter())this.inside.point(t.at);return}this.back(),this.list.point(t.at)}wheel(t,e){if(this.phase!=="browse"){this.scroll(t);return}if(this.showing==="search"){this.move(t,!1);return}if(e&&!this.enter())return;if(!e)this.back();this.move(t,!1)}openRow(t,e){if(this.showing==="search"){if(t.part==="box"||e===2)this.take(e===2)}else if(t.pane){if(this.onAction()){if(t.part==="box"||e===2)this.act()}else if(t.part==="box")this.inside.pick();else if(t.part==="fold")this.inside.flip();else if(e===2)this.inside.open()}else if(this.list.focusedRow()?.kind==="extra"){if(t.part==="box"||e===2)this.activate()}else if(t.part==="fold"||e===2)this.enter()}typed(){let t=this.field.value,e=this.list.focusedRow();if(this.list.setFilter(t),e?.kind==="top")this.list.select(`top ${e.name}`);if(this.inside.setFilter(t),this.follow(),t.trim()&&this.list.focusedRow()?.kind==="top"&&this.inside.matched()>0)this.enter();else if(t.trim())this.back()}clear(){this.field.value="";let t=this.list.focusedRow();if(this.inside.clear(),this.list.setFilter(""),t?.kind==="top")this.list.select(`top ${t.name}`);this.follow()}redraw(){if(this.state==="active")this.screen?.request()}focus(t){if(this.state!=="submit"&&this.state!=="cancel")this.paint?.(t)}track(t){this.inflight.add(t);let e=()=>this.inflight.delete(t);return t.then(e,e),t}active(){return[...this.marketplaces.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.marketplaces.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()])}reload(){this.list.setEntries(this.entries()),this.follow(!0)}tops(){return this.active().map((t)=>t.id)}marketplaceNamed(t){return this.active().find((e)=>e.id===t)}focusedMarketplace(){let t=this.list.focusedRow();return t?.kind==="top"?this.marketplaceNamed(t.name):void 0}current(){return this.showing==="search"?this.results:this.list}move(t,e=!0){(this.side==="panel"?this.inside:this.current()).move(t,e)}autoUpdate(t){let e=!(this.want.get(t.source)??t.auto);if(e===t.auto)this.want.delete(t.source);else this.want.set(t.source,e)}onAction(){return this.side==="panel"&&this.inside.focusedRow()?.kind==="extra"}act(){let t=this.inside.focusedRow(),e=this.focusedMarketplace(),n=t?.kind==="extra"?t.extra.action:void 0;if(!e||n===void 0)return;if(n==="update")this.update(e.source);else if(n==="auto")this.autoUpdate(e);else if(this.adds.has(e.source))this.adds.delete(e.source),this.want.delete(e.source),this.back(),this.reload();else this.removing=e}activate(){let t=this.list.focusedRow();if(t?.kind!=="extra"){this.list.pick();return}let e=t.extra.found;if(e?.kind==="new")this.openForm();else if(e?.kind==="search")this.openSearch()}remove(t){let e=this.tops().indexOf(t.id);this.removes.add(t.source),this.want.delete(t.source),this.back(),this.reload();let n=this.tops()[Math.min(e,this.tops().length-1)];if(n!==void 0)this.list.select(`top ${n}`)}known(t){return[...this.marketplaces,...this.adds.values()].find((e)=>Ji(e.source,t))}load(t){let e=this.fetched.get(t);if(e){this.arrive(t,e);return}if(this.staging.add(t),this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Fetching…"),this.track(this.io.fetch(t)).then((n)=>{if(this.busy.delete(t),this.fetched.set(t,n),this.staging.delete(t))this.arrive(t,n);this.redraw()},(n)=>{this.busy.delete(t),this.staging.delete(t),this.failed.set(t,n.message),this.landing=void 0,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 marketplace at ${n.shown}`),this.landing=void 0;else this.stage(e);this.redraw()}focusedFound(){let t=this.current().focusedRow();return t?.kind==="extra"?t.extra.found:void 0}answer(t){let e=this.removing;if(this.removing=void 0,e&&t)this.remove(e)}stage(t){if(this.adds.set(t.source,t),this.reload(),this.adding!==void 0&&Ji(this.adding,t.source)){this.address.value="",this.adding=void 0,this.reveal(t.id);return}if(this.list.select(`top ${t.id}`),this.landing!==void 0&&Ji(this.landing,t.source))this.closeSearch();else this.results.refresh()}update(t){if(this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Updating…"),this.track(this.io.refresh(t)).then(({marketplace:e,refreshed:n,updates:r})=>{this.busy.delete(t),this.updates=new Set(r),this.marketplaces=this.marketplaces.map((i)=>i.source===t?e:i),this.refreshed.push(n),this.reload(),this.redraw()},(e)=>{this.busy.delete(t),this.failed.set(t,`Update failed: ${e.message}`),this.redraw()})}row(t,e=!1){return{key:t.kind==="listed"?`listed ${t.listed.source}`:t.kind,...e?{idle:e}:{},found:t,text:(n,r)=>this.foundLine(t,n,r)}}actions(){let t=this.open===void 0?void 0:this.marketplaceNamed(this.open);if(!t)return[];let{source:e}=t,n=yt(e),r=(i)=>({key:i,action:i,text:(s,o)=>this.actionLine(i,e,s,o)});return[...n&&!this.adds.has(e)?[r("update")]:[],...n?[r("auto")]:[],r("remove")]}actionLine(t,e,n,r){let[i,s]=this.actionText(t,e);return this.button(r,n,this.actionMark(t,e),i.padEnd(f8),s?` ${this.p.dim(s)}`:"",{pane:"panel",off:t==="update"&&this.busy.has(e),danger:t==="remove"&&!this.adds.has(e)})}button(t,e,n,r,i,s={}){let o=oy(this.p,`${n} ${r}`,s.off?"off":e?"focus":"idle",s.danger);return`${e?`${R.gutter} `:" "}${wi(t,"box",`${o}${i}`,s.pane)}`}actionMark(t,e){if(t==="update")return R.update;if(t==="auto")return R.auto;return this.adds.has(e)?R.undo:R.remove}actionText(t,e){let n=this.known(e);if(t==="update")return["Update now",this.busy.get(e)??(this.failed.has(e)?"Update failed":n?tg(n.status):"")];if(t==="auto")return["Auto-update",this.want.get(e)??n?.auto?"on":"off"];return[this.adds.has(e)?"Undo add":"Remove marketplace",""]}actionAbout(t,e){if(t==="update")return["Update now",`Fetch ${Qp(e)} again now`];if(t==="auto")return["Auto-update","Fetch it on its own once a day and say what changed"];return this.adds.has(e)?["Undo add","Drop it before it is added"]:["Remove marketplace","Take it off your list — its installed palettes stay"]}actionVerb(t,e){if(t==="update")return"update";if(t==="auto")return this.want.get(e)??this.known(e)?.auto?"turn off":"turn on";return this.adds.has(e)?"undo add":"remove"}heads(){return[this.row({kind:"new"},!0),this.row({kind:"search"})]}matches(){let t=this.query.value.trim();return(this.listing?.marketplaces??[]).filter((e)=>!t||qp(e,t))}found(){let t=this.matches();return t.length>0?t.map((e)=>this.row({kind:"listed",listed:e})):[this.row({kind:"state"})]}lit(t,e){return`${t?`${R.gutter} `:" "} ${e}`}status(t){return this.adds.has(t.source)?"Will add":this.busy.get(t.source)??(this.failed.has(t.source)?"Update failed":"")}about(t,e,n){let r=this.marketplaceNamed(t),i=e.filter((c)=>this.installed.has(c.name)).length,s=e.filter((c)=>this.picked.has(c.name)&&!this.installed.has(c.name)).length,o=e.filter((c)=>this.installed.has(c.name)&&!this.picked.has(c.name)).length,a=[...r&&n!==void 0?[`${n} of ${r.entries.filter((c)=>!c.default).length} match`]:[],...r&&n===void 0?[`${r.entries.filter((c)=>!c.default).length} available`]:[],...i>0||!r?[`${i} installed`]:[],...s>0?[`${s} to install`]:[],...o>0?[`${o} to remove`]:[],...r&&r.source!==Y&&!(this.adds.has(r.source)&&yt(r.source))?[tg(r.status)]:[]];return{added:r!==void 0,lines:[this.p.dim(r?Qp(r.source):"Not added"),this.p.dim(a.join(" · "))]}}badge(t){let e=this.marketplaceNamed(t);if(!e)return"";return[yt(e.source)&&(this.want.get(e.source)??e.auto)?`${R.auto} auto-update`:"",this.status(e)].map((r)=>r?` ${this.p.dim(r)}`:"").join("")}foundLine(t,e,n){let r=(u)=>wi(n,"box",`${u} `),i=(u)=>u?` ${this.p.dim(u)}`:"";if(t.kind==="new")return this.button(n,e,"+","Add marketplace",i("owner/repo or a folder"));if(t.kind==="search")return this.button(n,e,R.search,"Search marketplace",i("find one on GitHub"));if(t.kind==="back")return` ${wi(n,"box",Ju(this.p,"← Back",e))}
675
- `;if(t.kind==="state"){let[u,f]=this.stateOf();return this.button(n,e,R.search,u,i(f))}let s=t.listed,o=this.known(s.source),a=this.failed.get(s.source),c=[`${R.star}${s.stars}`,o?this.addedNote(o):qt(s.palettes.length),this.busy.get(s.source)??""].filter(Boolean);return this.lit(e,`${r(o?R.on:R.off)}${s.id}${i(c.join(" · "))}${a?` ${this.p.error(a)}`:""}`)}stateOf(){let t=this.query.value.trim();return this.loading?["Loading the marketplace list…",""]:this.loadError?["The marketplace list did not load","space retries"]:!this.listing?["Load the marketplace list","space loads it"]:t?[`No marketplace matches "${t}"`,""]:["No marketplace yet",""]}addedNote(t){return this.adds.has(t.source)?"Will add":"Added"}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.isSubsetOf(this.installed)}mark(t){let e=this.tuned.has(t.name)?` ${this.p.warn(R.on)}`:"";if(!this.updates.has(t.name)||!this.installed.has(t.name))return e;return`${e}${this.renew.has(t.name)?` ${this.p.bold(`${R.update} update`)}`:` ${this.p.dim(R.update)}`}`}toggleRenew(){let t=this.inside,e=t.focusedRow(),n=(e?t.inside(e):[]).map((i)=>i.name).filter((i)=>this.updates.has(i)&&this.installed.has(i));if(n.length===0)return;let r=n.some((i)=>!this.renew.has(i));for(let i of n)if(r)this.renew.add(i);else this.renew.delete(i)}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:yc(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(vc,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(`
676
- `)),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))}}marketplaceChanges(){let t=[];for(let e of this.adds.values()){let n=e.source!==Y&&(this.want.get(e.source)??e.auto)?"updates on its own":"";t.push(`+ ${e.id} ${this.p.dim([e.source===Y?"The official marketplace":e.shown,qt(e.entries.filter((r)=>!r.default).length),n].filter(Boolean).join(" · "))}`)}for(let e of this.removes){let n=this.marketplaces.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.p.dim([n?.shown??st(e),r.length>0?`its ${qt(r.length)} installed keep working`:""].filter(Boolean).join(" · "))}`)}for(let[e,n]of this.want){let r=this.marketplaces.find((i)=>i.source===e);if(r)t.push(`${R.auto} ${r.id} ${this.p.dim(n?"updates on its own from now":"stops updating on its own")}`)}return t}reviewLines(){let t=this.marketplaceChanges(),{names:e,dropped:n}=this.pending(),r=new Set(this.result().renew),i=this.entries().filter((c)=>r.has(c.name)),s=Math.max(0,...[...e,...n,...i].map((c)=>c.name.length)),o=(c,u)=>` ${c} ${u.name.padEnd(s)} ${this.p.dim(u.catalog??"")}`,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.p.bold("Marketplaces")} ${this.p.dim(`(${t.length})`)}`,...t.map((c)=>` ${c}`),""]:[],...a.length>0?[` ${this.p.bold("Palettes")} ${this.p.dim(`(${a.join(" · ")})`)}`,...e.map((c)=>o("+",c)),...n.map((c)=>o("-",c)),...i.map((c)=>o(R.update,c))]:[]]}summary(){let{names:t,dropped:e}=this.pending(),n=this.adds.size;return[n>0?`${n} marketplace${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=bn[this.beat%bn.length];t.push(` ${this.p.dim(`${e} ${this.working||"Working…"}`)}`)}else if(this.stopped)t.push("",...Ft(this.stopped.message,Math.max(20,this.columns()-6)).map((e,n)=>` ${n===0?this.p.error(R.miss):" "} ${e}`));return t}frame(t,e){let n=t-1,r=this.phase==="review",i=r?this.reviewLines():this.progressLines(),s=this.phase==="review"?`${this.p.bold("Review changes")}`:this.phase==="applying"?this.p.bold("Applying changes"):this.stopped?`${this.p.error(R.miss)} ${this.p.bold("Stopped")}`:`${this.p.bold(`${R.ok} Applied`)} ${this.p.dim(this.summary()?`(${this.summary()})`:"")}`,o=this.span(),a=Math.max(0,i.length-o),c=this.phase==="applying"?a:Math.min(this.offset,a);this.offset=c;let u=i.slice(c,c+o),f=i.length-c-u.length,l=[c>0?` ${this.more(-1,`↑ ${c} more`)}`:"",...u];while(l.length<o+1)l.push("");l.push(f>0?` ${this.more(1,`↓ ${f} more`)}`:"");let d=a>0?[["↑↓","scroll"]]:[],h=r?{badge:"BROWSE (APPLY)",keys:[...d,["enter","apply"]],right:["esc","back"]}:this.phase==="applying"?{badge:"BROWSE (APPLY)",note:"Keys wait until it ends",keys:[]}:{badge:"BROWSE (APPLY)",keys:d,right:["enter","close"]};return[...this.hub?[tt(im(this.hub,this.color),n,!1)]:[],tt(` ${s}`,n,!1),...l.map((m)=>tt(m,n,!1)),` ${this.keyBar(h,n-1)}`].slice(0,e).join(`
677
- `)}keyBar(t,e){let n=`${Ze(this.p,t.badge)}${this.color?" ":" "}`,r=([a,c])=>ay(this.p,a,c),{note:i,keys:s,right:o}=t;for(;;){let a=`${n}${[t.lead??"",i?this.p.dim(i):"",...s.map(r)].filter(Boolean).join(" ")}`,c=o?r(o):"";if(B(a)+(o?3+B(c):0)<=e)return o?Rt(a,c,e):tt(a,e,!1);if(i)i=void 0;else if(s.length>2||!o&&s.length>1)s=s.toSpliced(-2,1);else if(o)o=void 0;else return tt(a,e,!1)}}more(t,e,n){return this.p.dim(Ve({kind:"page",step:t,...n?{pane:n}:{}},e))}counts(){if(this.showing==="search"){let i=[...this.loading?["Loading…"]:[],...this.listing?[`${this.matches().length} found`]:[],...this.listing?.offline?[`offline, from ${Jo(this.listing.at)}`]:[]];return i.length>0?i.join(" · "):"on GitHub"}let t=this.busy.values().some((i)=>i==="Updating…")?"Updating… · ":"",e=this.list,n=this.removes.size,r=n>0?` · ${n} marketplace${n===1?"":"s"} to remove`:"";return`${t}${e.matched()}/${e.total()} · ${e.pickedCount()} picked${r}`}searchText(){let t=(this.showing==="search"?this.query:this.field).value;if(t)return`${t}_`;if(this.showing==="search")return this.p.dim("Search… a marketplace or a palette");let e=this.hint.text();return this.p.dim(`Search…${e?` e.g. ${e}`:""}`)}heading(){let t=this.showing==="search"?"Search marketplace":"Browse";return`${this.p.bold(t)} ${this.p.dim(`(${this.counts()})`)}`}searchBox(t){return this.framed(t,`${this.p.dim(R.search)} ${this.searchText()}`)}framed(t,e){let n=(i,s)=>this.p.dim(`${i}${"─".repeat(t-2)}${s}`),r=this.p.dim("│");return[n("╭","╮"),`${r} ${tt(e,t-4)} ${r}`,n("╰","╯")]}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":""}`}detail(t){let e=this.current().focusedRow();if(e?.kind==="extra")return e.extra.found?this.foundDetail(e.extra.found,t):GS;if(e?.kind!=="top")return GS;let n=this.marketplaceNamed(e.name);if(n)return this.marketplaceDetail(n,t);let r="In no marketplace you added — its installed palettes stay";return{title:this.p.bold(e.name),lines:Ft(r,t),brief:r}}foot(t){let e=this.inside.focusedRow();if(e?.kind==="catalog"){let c=this.inside.inside(e),u=c.filter((f)=>this.installed.has(f.name)).length;return[`${this.p.bold(e.name)}${e.native?` ${this.p.dim(e.native)}`:""}`,this.p.dim(`${qt(c.length)} · ${u} installed`),""]}if(e?.kind==="extra"&&e.extra.action){let[c,u]=this.actionAbout(e.extra.action,this.focusedMarketplace()?.source??"");return[this.p.bold(c),this.p.dim(u),""]}if(e?.kind!=="palette")return["","",""];let n=e.entry,r=qa(n),i=`Gate ${Te.length-r.length}/${Te.length}`,s=n.pictures?.length??0,o=[...s>0?[`${s} picture${s===1?"":"s"}`]:[],...n.base?[`Base ${n.base}`]:[]].join(" · "),a=r.length>1?` · +${r.length-1}`:"";return[`${this.color?this.p.bold(`${mr(n.cursor)}${n.name}${$t}`):n.name} ${this.p.dim(this.paletteState(n))}`,r[0]===void 0?this.p.dim(`${i} · passes`):`${i} · ${this.p.bold(R.miss)} ${r[0]}${a}`,tt(this.p.dim(o),t)]}marketplaceDetail(t,e){let n=yt(t.source)?`Auto-update ${this.want.get(t.source)??t.auto?"on":"off"}`:tg(t.status),r=this.failed.get(t.source),i=this.adds.has(t.source)?["Will add"]:this.want.has(t.source)?[`Auto-update turns ${this.want.get(t.source)?"on":"off"}`]:[];return{title:this.p.bold(t.id),lines:[...t.description?[...Ft(t.description,e).map((s)=>this.p.dim(s)),""]:[],...yt(t.source)?[]:[n],...r?Ft(r,e).map((s)=>this.p.error(s)):[],...i.length>0?["",...i.flatMap((s)=>Ft(s,e))]:[]],brief:[n,...i].join(" · ")}}foundDetail(t,e){if(t.kind==="new")return{title:this.p.bold("Add marketplace"),lines:this.formLines(e),brief:"enter adds a repository or a folder"};if(t.kind==="search"){let s=`The marketplaces anyone publishes on GitHub with the ${qi} topic, listed every half hour`;return{title:this.p.bold("Search marketplace"),lines:[...Ft(s,e),"",...Ft("enter opens the search",e)],brief:"enter searches the marketplaces on GitHub"}}if(t.kind==="back")return{title:this.p.bold("Back"),lines:["Back to your marketplaces"],brief:"enter goes back"};if(t.kind==="state"){let[s,o]=this.stateOf(),a=`Repositories with the ${qi} topic, read every half hour into one list`;return{title:this.p.bold("Marketplaces"),lines:[...Ft(a,e),"",...Ft([s,o].filter(Boolean).join(" · "),e),...this.loadError?Ft(this.loadError,e).map((c)=>this.p.error(c)):[],"",...Ft("Not listed yet? + Add marketplace adds one by its owner/repo",e)],brief:[s,o].filter(Boolean).join(" · ")}}let n=t.listed,r=this.known(n.source),i=r?this.addedNote(r):this.busy.get(n.source)??this.failed.get(n.source)??"space adds it, enter adds it and goes back";return{title:this.p.bold(n.id),lines:[this.p.dim(n.source),...Ft(n.about,e).map((s)=>this.p.dim(s)),this.p.dim([`★ ${n.stars}`,...n.updated?[`updated ${n.updated}`]:[]].join(" · ")),"",...Ft(i,e),"",...this.paletteLines(n,e)],brief:[qt(n.palettes.length),i].join(" · ")}}paletteLines(t,e){let n=Math.min(Math.max(...t.palettes.map((i)=>B(i.name))),Math.max(8,e-16)),r;return t.palettes.flatMap((i)=>{let s=i.catalog!==r&&i.catalog?[this.p.dim(i.catalog)]:[];r=i.catalog;let o=this.color?` ${Du(fo(i))}`:"";return[...s,` ${tt(i.name,n)}${o}`]})}formLines(t){let e=this.side==="form",n=this.address.value,r=n?`${n}${e?"_":""}`:e?"_":this.p.dim("owner/repo or a folder"),i=this.formError??(this.adding===void 0?void 0:this.failed.get(this.adding)),s=this.adding!==void 0&&this.fetching()?[this.p.dim(`${bn[this.beat%bn.length]} Fetching ${Qp(this.adding)}…`)]:i?Ft(i,t).map((o)=>this.p.error(o)):[];return["Enter marketplace source:",this.p.dim("Examples:"),...["owner/repo (GitHub)","owner/repo#v1 (a tag or branch)","~/path/to/marketplace (a folder)"].map((o)=>this.p.dim(` · ${o}`)),"",...this.framed(t,r).map((o)=>Ve({kind:"form"},o)),...s.length>0?["",...s]:[]]}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.removing)return{badge:"BROWSE",lead:`Remove ${this.removing.id}? Its installed palettes stay installed`,keys:[["y","remove"],["n","keep"]],right:["esc","back"]};if(this.showing==="search")return{badge:"SEARCH",keys:[...this.searchKeys(),...this.query.value?[["bksp","edit"]]:[],["?","keys"]],right:this.query.value?["esc","clear search"]:["esc","back"]};if(this.side==="form")return{badge:"BROWSE (ADD)",keys:[...this.fetching()?[]:[["enter","add"],...this.address.value?[["bksp","edit"]]:[]],["?","keys"]],right:["esc","cancel"]};let t=this.field.value,e=this.dirty()?[["enter","apply"]]:[],n=[...t?[["bksp","edit"]]:[],["?","keys"]];return{badge:t?"BROWSE (FILTER)":"BROWSE",keys:[...this.side==="panel"?this.panelKeys(e):this.cardKeys(e),...n],right:t?["esc","clear filter"]:this.side==="panel"?["esc","back"]:["esc","cancel"]}}panelKeys(t){let e=this.inside,n=e.focusedRow();if(n?.kind==="extra"&&n.extra.action)return[["enter",this.actionVerb(n.extra.action,this.focusedMarketplace()?.source??"")]];if(n?.kind==="catalog"&&e.foldable())return[n.expanded?["←","close"]:["→","open"],["space","pick"]];let r=n?.kind==="palette"&&this.updates.has(n.entry.name)&&this.installed.has(n.entry.name);return[["space","pick"],...r?[["ctrl+r",this.renew.has(n.entry.name)?"keep":"update"]]:[],...t]}searchKeys(){let t=this.focusedFound();if(t?.kind==="back")return[["enter","back"]];if(t?.kind==="state")return this.loading?[]:[["space","load"]];let e=t?.kind==="listed"?t.listed.source:void 0;if(e===void 0)return[];let n=this.known(e);if(!n)return[["space","add"],["enter","add and go back"]];return[...this.adds.has(n.source)?[["space","undo"]]:[],["enter","go to it"]]}cardKeys(t){let e=this.list.focusedRow();if(e?.kind==="extra")return[["enter","open"]];if(e?.kind!=="top")return t;return[...this.inside.size()>0?[["→","open"]]:[],["space","pick"]]}columns(){return(this.output??process.stdout).columns??100}rows(){return(this.output??process.stdout).rows??24}fitItems(t){let e=Math.max(vc,this.rows()-t);this.maxItems=e,this.list.maxItems=e,this.results.maxItems=e}view(){let t=this.draw().split(`
678
- `);return Array.from({length:this.rows()},(e,n)=>t[n]??"")}small(t,e,n){return`Needs ${_S}×${n} — now ${t}×${e}
679
- ${this.p.dim("esc cancels")}`}draw(){let t=this.columns(),e=this.rows();if(t<_S||e<BS)return this.small(t,e,BS);if(this.phase!=="browse")return this.frame(t,e);this.follow();let n=t>=u8,r=t-1,i=e>=l8?[` ${this.heading()}`,...this.searchBox(t-3).map((d)=>` ${d}`)]:[Rt(` ${this.p.dim(R.search)} ${this.searchText()}`,this.p.dim(this.counts()),r)],s=i.length+3+(n?0:1)+(this.hub?1:0);if(e<s+vc)return this.small(t,e,s+vc);this.fitItems(s);let o=this.current().window(),a=(d)=>Eo(d).flatMap((h)=>h.sequence?[]:[h.text]).join("").trimEnd(),c=Math.max(0,...o.lines.map((d)=>B(a(d))+3)),u=n?Math.min(a8,r-c8-1,Math.max(o8,c)):r;this.split=n?u+1:0;let f=!n&&this.side!=="cards"?this.panel(r-1,this.maxItems+3).map((d)=>` ${d}`):this.cards(o,n,u,r),l=[...this.hub?[tt(im(this.hub,this.color),r,!1)]:[],...i.map((d)=>tt(d,r,!1)),...f,` ${this.keyBar(this.footer(),r-1)}`];return(this.help?this.helpBox(l,t,e,l.length-f.length-1):l).join(`
680
- `)}cards({lines:t,above:e,below:n},r,i,s){let o=t.map((u)=>` ${u}`);while(o.length<this.maxItems)o.push("");let a=[e>0?` ${this.more(-1,`↑ ${e} more`)}`:"",...o,n>0?` ${this.more(1,`↓ ${n} more`)}`:""];if(!r)return[...a.map((u)=>tt(u,i,!1)),tt(` ${this.p.dim(this.detail(i-2).brief)}`,i,!1)];let c=this.panel(s-i-1,a.length);return a.map((u,f)=>`${tt(u,i)} ${c[f]??""}`)}panel(t,e){let n=this.side!=="cards",r=(v)=>n?this.p.accent(v):this.p.dim(v),i=t-4,s=(v)=>`${r("│")} ${tt(v,i)} ${r("│")}`,o=this.detail(i),a=n?this.p.accent(o.title):o.title,c=e-2;if(this.current().focusedRow()?.kind!=="top"){let v=o.lines.length>c?[...o.lines.slice(0,c-1),this.p.dim("…")]:o.lines.slice(0);while(v.length<c)v.push("");return[this.edge(t,"top",a,"",n),...v.map(s),this.edge(t,"bottom","","",n)]}let u=this.inside.pins(),f=u.length>0?u.length+1:0,l=n?this.foot(i):[],d=l.length>0&&c-1-f-(l.length+1)>=vc?l:[],h=f+(d.length>0?d.length+1:0),m=o.lines.slice(0,Math.max(0,c-2-h));this.inside.maxItems=Math.max(1,c-m.length-1-h);let{lines:p,above:b,below:$}=this.inside.window(),k=p.length>0?p:[this.p.dim(" No palettes yet")];while(k.length<this.inside.maxItems)k.push("");let S=$>0?this.more(1,`↓ ${$} more`,"panel"):"";return[this.edge(t,"top",a,"",n),...m.map(s),s(b>0?this.more(-1,`↑ ${b} more`,"panel"):""),...k.map(s),...h>0?[this.edge(t,"mid","",S,n)]:[],...d.map(s),...d.length>0&&f>0?[this.edge(t,"mid","","",n)]:[],...u.map(s),this.edge(t,"bottom","",h>0?"":S,n)]}edge(t,e,n,r,i){let s=(l)=>i?this.p.accent(l):this.p.dim(l),[o="",a=""]=[...Bt(2,e)],c=n?` ${tt(n,t-8,!1)} `:"",u=r?` ${r} `:"",f=Math.max(0,t-3-B(c)-B(u)-(r?1:0));return`${s(`${o}─`)}${c}${s("─".repeat(f))}${u}${s(`${r?"─":""}${a}`)}`}helpRows(){if(this.showing==="search")return[["Move","↑↓ home end pgup pgdn"],["Filter","Any text · bksp · ctrl-u clears"],["Add","space adds it · again to undo"],["","enter adds it and goes back to its card"],["Reload","ctrl+r the list, which GitHub fills every half hour"],["Back","← esc · ← Back"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]];return[["Move","↑↓ home end pgup pgdn"],["Open","→ enter · a marketplace into the panel, a catalog"],["Back","← esc · from the panel to the marketplaces"],["Pick","space · a palette, a catalog, a marketplace"],["Filter","Any text · bksp · ctrl-u clears"],["Marketplace","↓ below its palettes, to its own actions"],["","enter updates it, turns auto-update on or off, removes it"],["Add","enter on + Add marketplace · a repository or a folder, in the panel"],["Search","enter on Search marketplace · finds one on GitHub"],["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(),s=Math.max(...i.map(([l])=>l.length))+3,o=Math.min(e-2,6+s+Math.max(...i.map(([,l])=>B(l)))),a=Math.floor((e-o)/2),c=`│${" ".repeat(o-2)}│`,u=[`╭─ Help ${"─".repeat(o-9)}╮`,c,...i.map(([l,d])=>`│${tt(` ${this.p.bold(l.padEnd(s))}${d}`,o-4)} │`),c,`╰${"─".repeat(o-2)}╯`],f=Math.max(0,Math.min(Math.max(r,Math.floor((n-u.length)/2)),n-1-u.length));return t.map((l,d)=>{let h=u[d-f];return h===void 0?l:`${ty(l,a)}${h}`})}}import{existsSync as H6}from"node:fs";import{existsSync as Zc,mkdirSync as b6,readFileSync as ob}from"node:fs";import{dirname as w6}from"node:path";class be extends Error{}import{closeSync as F5,mkdtempSync as C5,openSync as j5,readSync as _5,rmSync as fM}from"node:fs";import{homedir as B5,tmpdir as G5}from"node:os";import{join as dM}from"node:path";import{readFileSync as h8}from"node:fs";var St={pitch:25,cols:22,rows:9,height:13},ys={cols:25,rows:21},Pe={cols:10,rows:3,pitch:12,top:4},Oe=Pe.top+Pe.rows+1,m8=1073741824,ag=2147483648,p8=-1073741826,g8=1600,b8=56,w8=4,US=20,$8=50,WS=[["space","unfolds a set of ×N"],["o","opens the artwork 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 cg(t){return Math.max(0,Math.floor((t-1)/Pe.pitch))}function Er(t,e){let n=e-Oe-2;return{perRow:Math.max(1,Math.floor((t-1)/St.pitch)),rowsVis:Math.max(1,Math.floor(n/St.height)),height:n}}function sf(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=h8(t.path).toString("base64")}catch{return}let r=n.match(/.{1,4096}/g)??[""];return r.map((i,s)=>{let o=s<r.length-1?1:0;return s===0?`\x1B_Ga=t,f=100,i=${t.id},m=${o},q=2;${i}\x1B\\`:`\x1B_Gm=${o},q=2;${i}\x1B\\`}).join("")}function ZS(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 ug(t){return`\x1B_Ga=d,d=i,i=${t},p=${t},q=2\x1B\\`}function Ic(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}var At=wt("bold"),K=wt("dim"),xc=wt("ok"),qn=wt("warn"),Ec=mr,rf=Zh,rg=!1;function of(t){return rg=!0,t.beat}function ta(t){return bn[of(t)%bn.length]}function Et(t){return B(t)}function ig(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 $i(t){return Xi(t)}function lg(t){return`${wt("reverse")}${Xi(t)}`}function ki(t,e,n,r){return n?[[`${R.link} `,r,void 0,{kind:"link",url:n}],[t,e,n]]:[[t,e]]}function ng(t){let e=nm(t);return e?{kind:"key",key:e}:void 0}function vs(t){return t.reduce((e,[n])=>e+Et(n),0)}function k8(t,e){let n=[],r=e;for(let[i,s,o,a]of t){let c=Et(i);if(c<=r){n.push([i,s,o,a]),r-=c;continue}n.push([`${ig(i,r)}…`,s,o,a]);break}return n}class nf{parts=[];cols;constructor(t){this.cols=t}put(t,e,n="",r,i){let s=e.replace(/\p{Cc}/gu,"");return this.parts.push({col:t,text:s,sgr:n,...r?{link:r}:{},...i?{spot:i}:{}}),t+Et(s)}run(t,e){let n=t;for(let[r,i,s,o]of e)n=this.put(n,r,i,s,o);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 s=i??(r?{kind:"link",url:r}:void 0),o=e>=0&&e<this.cols?Et(ig(n,this.cols-e)):0;return s&&o>0?[{row:t,col:e,width:o,height:1,target:s}]:[]})}right(t,e){this.run(t-vs(e),e)}center(t,e){this.run(Math.floor((t-vs(e))/2),e)}render(){let t="";for(let{col:e,text:n,sgr:r,link:i,hidden:s}of this.parts){if(s||e>=this.cols||e<0)continue;let o=ig(n,this.cols-e);t+=`\x1B[${e+1}G${r}${qu(o,i)}${r?Se:""}`}return t}}function y8(t){return t.replace(/_\([^)]*\)?$/,"")}function XS(t){return[`${t.reduced?"↓":""}${t.width}×${t.height}`,Math.max(t.width,t.height)<g8?qn:K]}function Oc(t,e,n){let r=[...n.keys??[]],i=n.lead,s=n.right,o=()=>{let u=[...i?[vs(i)]:[],...r.map(([l,d])=>Et(l)+1+Et(d))];return(n.badge?Et(n.badge)+4:0)+u.reduce((l,d)=>l+d,0)+3*Math.max(0,u.length-1)+(s?3+Et(s[0])+1+Et(s[1]):0)};while(o()>e)if(r.length>2)r.splice(-2,1);else if(s)s=void 0;else if(r.length>1)r.splice(-2,1);else break;if(i&&o()>e)i=k8(i,Math.max(0,vs(i)-(o()-e)-1));let a=0;if(n.badge)a=t.put(0,` ${n.badge} `,wt("pill"))+2;if([...i?[i]:[],...r.map(([u,f])=>[[u,At,void 0,ng(u)],[` ${f}`,K,void 0,ng(u)]])].forEach((u,f)=>{a=t.run(a+(f?3:0),u)}),s){let u=ng(s[0].split(" ")[0]??"");t.right(e,[[s[0],At,void 0,u],[` ${s[1]}`,K,void 0,u]])}}function v8(t,e){if(t==="d")return K;if(t==="b")return At;if(t==="s")return rf(e.colors.selection);if(t==="c")return rf(e.colors.cursor);let n=/^([BK]?)(\d+)$/.exec(t);if(!n)return"";let r=Number(n[2]);if(n[1]==="K")return`${Xi(0)}${Vk(r)}`;return`${n[1]==="B"?At:""}${Xi(r)}`}function S8(t,e,n,r,i){let s=Vt.indexOf(ts(r.scene)),o=Vt.flatMap((c,u)=>[...u?[[" ",""]]:[],[c.name,u===s?At+i:K,void 0,{kind:"scene",scene:u}]]),a=vs(o)<=n;t?.run(e,a?o:[[ts(r.scene).name,At+i],[` ${s+1}/${Vt.length}`,K]])}function E8(t,e,n,r,i,s,o){let{ansi:a,cursor:c}=s.colors;S8(t[e-2],n,r,s,o);let u=r<Fy?3:4;if(r>=56)u=Math.min(7,Math.floor((r+1)/8)-1);let f=n;for(let d=0;d<8;d++)f=(t[e]?.put(f,"▀".repeat(u),Ec(a[d]??c)+rf(a[d+8]??c))??f)+1;let l=e+2;for(let d of ts(s.scene).lines){let h=xo(d,r);if(!h)continue;if(l>i)return;t[l]?.run(n,h.map(([m,p])=>[m,v8(p,s)])),l++}}function M8(t,e,n){let r=[[]];for(let o of t){let a=r[r.length-1];if(a.length===0||Et([...a,o].join(" "))<=e)a.push(o);else if(r.length<n)r.push([o]);else break}let i=r.reduce((o,a)=>o+a.length,0),s=r[r.length-1];while(i<t.length&&s.length>0&&Et([...s,`+${t.length-i}`].join(" "))>e)s.pop(),i--;if(i<t.length)s.push(`+${t.length-i}`);return r.flatMap((o)=>o.length>0?[o.join(" ")]:[])}function KS(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function x8(t,e,n){return t.flatMap((r,i)=>[...i>0?[[" ",""]]:[],[r,""],...(e[r]??[]).flatMap((s)=>[[" ",""],...ki(s.kind,"",s.url,n)])])}function O8(t,e,n,r,i){let s=r.info,o=s?.artists??[],a=$i(r.tiles[r.focus]?.siteAnsi??r.siteAnsi);[["Post",s?.page?ki(KS(s.page),"",s.page,a):[["—",K]]],["Source",s?.source?ki(KS(s.source),"",s.link,i):[["—",K]]],["Artist",o.length>0?x8(o,s?.profiles??{},i):[["—",K]]]].forEach(([u,f],l)=>{t[e+l]?.put(n,u,K),t[e+l]?.run(n+12,f)})}function P8(t,e,n,r,i,s){let o=s.info,a=s.tiles[s.focus];if(!o||!a)return;let c=s.shown?.id===a.key?s.shown:void 0,u=n+12,f=Math.max(12,r-12),l=[`${a.width}×${a.height}${o.ext?` ${o.ext.toUpperCase()}`:""}`,...c?[Bl(c.bytes)]:[]].join(" · "),d=[o.rating??"—",a.score>0?`★${a.score}`:"",o.posted??""].filter(Boolean).join(" · "),h=(b,$)=>b.length>0?M8(b,f,$).map((k)=>[[k,""]]):[[["—",K]]],m=[["Characters",h(o.characters,2)],["Series",h(o.series,1)],["Tags",h(o.tags,3)],["Rating",[[[d,d==="—"?K:""]]]],["File",[[[l,""],...c?[[" ",""]]:[],...c?QS(c):[]]]],["Uploader",[[o.uploader?[o.uploader,""]:["—",K]]]]],p=e;for(let[b,$]of m){if(p+$.length-1>i)return;t[p]?.put(n,b,K);for(let k of $)t[p]?.run(u,k),p++}}var I8=["Size","Position","Opacity"],R8=[0,3,6];function A8(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 N8(t){return t.toFixed(2)}function T8(t,e,n,r,i,s){let o=i.tuning;if(!o)return;let a=i.tiles[i.focus];t[e-3]?.run(n,[[i.palette,At+s],[" Background",K],...a?[[" · ",K],...ki(`${a.site} ${a.id}`,K,a.page||void 0,$i(a.siteAnsi))]:[]]);let c=Math.max(8,r-n-21),u=20,f=Math.max(100,o.fill);for(let[l,d]of I8.entries()){let h=e+R8[l],m=o.field===l,p=m?At:K;if(m)t[h]?.put(n,"▶",s,void 0,{kind:"field",field:l});t[h]?.put(n+2,d,p,void 0,{kind:"field",field:l});let b;if(l===1){for(let $=1;$<=9;$++){let k=$===i.tune.at,S=t[e+2+Math.floor(($-1)/3)],v=n+12+($-1)%3*3;S?.mark(v-1,3,{kind:"place",at:$}),S?.put(v,k?"■":"·",k?At+s:K)}b=Jt[i.tune.at-1]??"center"}else{let $;if(l===0){let{size:k}=i.tune;$=k==="fill"?c-1:Math.floor((k-u)*(c-1)/(f-u+1)),b=k==="fill"?"fill":`${k}%`}else $=Math.floor(Math.round(i.tune.opacity*100)*(c-1)/100),b=N8(i.tune.opacity);$=Math.max(0,Math.min(c-1,$)),t[h]?.run(n+12,[["━".repeat($),s],["●",At],["─".repeat(c-1-$),K]]),t[h]?.mark(n+12,c,{kind:"track",field:l})}if(t[h]?.right(r-2,[[b,p]]),A8(i,l))t[h]?.put(r-1,"↺",m?At+s:K)}}function H8(t,e,n,r,i,s){t[e]?.put(n,`╭${"─".repeat(i-2)}╮`,s);for(let o=e+1;o<e+r-1;o++)t[o]?.put(n,"│",s),t[o]?.put(n+i-1,"│",s);t[e+r-1]?.put(n,`╰${"─".repeat(i-2)}╯`,s)}function sg(t,e=t.site,n=t.siteAnsi){return[` ${e} `,lg(n)]}function Mc(t){return`${Z[Math.floor(t/Kr)]?.name??"local"} ${t%Kr}`}function Sc(t,e,n){let r=Z[Math.floor(e/Kr)],i=Mc(e),s=t.indexOf(i);if(!r||s===-1)return[[t,n]];return[[t.slice(0,s),n],...ki(i,n,r.pageUrl(e%Kr),$i(r.ansi)),[t.slice(s+i.length),n]].filter(([a])=>a!=="")}function L8(t,e,n){let r=[{name:"all",moved:!1},...Z].flatMap((s,o)=>{let a=`${s.name}${s.moved?"*":""}`,[c,u]=s.name===n.site?sg(n,a):[` ${a} `,K],f=[c,u,void 0,{kind:"site",tab:o}];return o?[[" ",""],f]:[f]}),i=vs(r)<=e;t.run(0,i?r:[sg(n)])}function F8(t,e,n,r){if(n.chips.length===0)return;let i=[["tags ",K]],s=Et("tags "),o=n.chips.length;for(let[a,c]of n.chips.entries()){let u=` ${a+1} ${c.name} `;if(s+Et(u)+1>e-2)break;i.push([u,c.on?`${wt("reverse")}${r}`:K,void 0,{kind:"chip",index:a}],[" ",""]),s+=Et(u)+1,o--}if(o>0)i.push([`+${o}`,K]);t.run(0,i)}function C8(t,e,n,r,i){t[Oe-1]?.put(0,"─".repeat(n-1),K);let s=t[Pe.top-1],o=cg(n),a=r.held.length>o?Math.max(0,o-1):r.held.length;for(let[c,u]of r.held.slice(0,a).entries()){let f=c*Pe.pitch,l=u.up?At:"";if(s.run(f+1,u.page?ki(String(u.id),l,u.page,$i(u.ansi)):[["● ",$i(u.ansi)],[String(u.id),l]]),u.up)for(let d=0;d<Pe.rows;d++)t[Pe.top+d]?.put(f,"▌",i);if(u.thumb)e.push({id:m8+c,path:u.thumb,row:Pe.top,col:f+1,cols:Pe.cols,rows:Pe.rows,z:-1})}if(a<r.held.length)s.put(a*Pe.pitch+1,`+${r.held.length-a}`,K)}function j8(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"}`,K);return}let i=t.run(0,[["⌕ ",r,void 0,{kind:"query"}],[n.tag||"Nothing yet — / searches, ctrl+v pastes a picture",n.tag?"":K,void 0,{kind:"query"}]]),s=Hi.filter((c)=>!n.block.includes(c)),o=Z.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("+")],...s.length>0?[`allows ${s.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("+")}`]:[],...o.length>0?[`all skips ${o.join("+")}`]:[]];if(t.put(i,` ${a.join(" ")}`,K),n.total>0||!n.searching){let c=[[`${n.tiles.length}/${n.checked}`,""]];if(n.checked<n.total)c.push([` of ${n.total}`,K]);t.right(e,c)}}function QS(t){if(t.cut==="on")return[[`Cut out · ${t.clear}% transparent`,xc]];if(t.cut==="off")return[["Opaque · x cuts out",qn]];if(t.cut==="failed")return[["Opaque · no cut-out",qn]];return[t.clear>0?[`${t.clear}% transparent`,xc]:["Opaque",qn]]}function zS(t){return t.site==="all"?"any site":t.site}function og(t,e){if(t.installing!==void 0)return Sc(`${ta(t)} Installing ${t.palette} ← ${Mc(t.installing)}`,t.installing,qn);if(t.hint)return[[t.hint,xc]];if(t.error)return[[t.error,qn]];if(t.waiting!==void 0)return[[`${t.slow??t.site} asked to slow down · ${t.waiting}s`,qn]];if(t.fetching){let{id:n,got:r,size:i}=t.fetching;return Sc(`${ta(t)} Fetching ${Mc(n)} · ${Gl(r,i)}`,n,qn)}if(t.cutting!==void 0)return Sc(`${ta(t)} Cutting out ${Mc(t.cutting)}`,t.cutting,qn);if(t.preparing!==void 0)return Sc(`${ta(t)} Preparing ${Mc(t.preparing)}`,t.preparing,qn);if(e)return[e];if(t.saved)return Sc(t.saved.text,t.saved.key,xc);if(t.note)return[[t.note,K]];return}function tE(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 eE(t,e){return t.ranking?`${e}${t.ranking.done}/${t.ranking.total}`:""}function _8(t,e,n,r,i){let{background:s,cursor:o,selection:a}=r.colors,{ranking:c}=r,u=c?Math.round(n*c.done/c.total):-1,f=Math.max(6,Math.round(n*0.22)),l=of(r)%(US*2)/US,d=Math.round((n-f)*(0.5-0.5*Math.cos(Math.PI*(l<1?l:2-l)))),h=Nt(s,o,i),m=Nt(s,Nt(a,s,0.15),i),p=Array.from({length:n},($,k)=>{let S=(u>=0?k<u:k>=d&&k<d+f)?h:m;return k===0||k===n-1?Nt(S,s,0.55):S}),b=0;for(let $=1;$<=n;$++)if($===n||p[$]!==p[b])t?.put(e+b," ".repeat($-b),rf(p[b])),b=$}function B8(t,e,n,r,i){let{background:s,foreground:o}=i.colors,a=i.loaderFrom===void 0?0:Math.min(1,(of(i)-i.loaderFrom)/w8),c=e+(n>=5?Math.floor((n-5)/2):0);t[c]?.center(r,[[tE(i),At+Ec(Nt(s,o,a))],[eE(i," "),Ec(Nt(s,Nt(o,s,0.45),a))]]);let u=Math.min(b8,r-8);if(_8(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:f,arrived:l},d)=>[...d?[[" · ",Ec(Nt(s,o,0.25*a))]]:[],[f,Ec(Nt(s,l?Nt(o,s,0.2):o,l?a:0.32*a))]]))}function G8(t,e,n,r,i,s){if(i<=r)return;let o=Math.max(1,Math.round(r*r/i)),a=Math.max(0,Math.min(r-o,Math.round(n.scroll*r/i)));for(let c=0;c<r;c++){let u=c>=a&&c<a+o;t[Oe+c]?.put(e-1,u?"┃":"│",u?s:K)}}function U8(t,e,n){if(e)return[`${ta(t)} ${tE(t)}${eE(t," · ")}`,K];let r=n.filter((s)=>!s.missing),i=r.filter((s)=>s.thumb).length;return i<r.length?[`${ta(t)} Loading thumbnails · ${i}/${r.length}`,K]:void 0}function W8(t,e,n,r,i,s,o){let{perRow:a,rowsVis:c,height:u}=Er(r,i);j8(t[0],r,s,o),L8(t[1],r,s),F8(t[2],r,s,o),C8(t,e,r,s,o);let f=t.map((C,I)=>I>=Oe&&I<Oe+u?C:void 0),l=Math.floor(s.scroll/St.height),d=Math.floor((s.scroll+u-1)/St.height),h=[];for(let C=l;C<=d;C++){let I=Oe+C*St.height-s.scroll;for(let j=0;j<a;j++){let U=C*a+j,G=j*St.pitch,F=s.tiles[U];if(!F)continue;h.push(F);let gt=Math.max(I,Oe),Xt=Math.min(I+St.height,Oe+u);if(Xt>gt)n.push({row:gt,col:G,width:St.pitch-1,height:Xt-gt,target:{kind:"tile",index:U}});let at=U===s.focus;if(at)H8(f,I,G,St.height,St.pitch-1,o);let Nr=I+1,Ke=Math.max(Nr,Oe),xn=Math.min(Nr+St.rows,Oe+u);if(F.thumb&&xn>Ke)e.push({id:F.key,path:F.thumb,row:Ke,col:G+1,cols:St.cols,rows:xn-Ke,...xn-Ke<St.rows?{crop:Ke-Nr}:{},z:-1});let Fs=[...s.installed.includes(F.key)?[["✓ ",xc]]:[],...F.page||s.site!=="all"?ki(String(F.id),at?At:"",F.page||void 0,$i(F.siteAnsi)):[["● ",$i(F.siteAnsi)],[String(F.id),at?At:""]],[" ",""],XS(F)],ru=St.cols-(F.mates.length>0?1:0);if(f[I+10]?.run(G+1,vs(Fs)>ru?Fs.map(([nd,rd,id])=>[nd.replace(/^(\S) $/,"$1"),rd,id]):Fs),F.mates.length>0)f[I+10]?.put(G+St.cols,"≈",o);f[I+11]?.put(G+1,F.artist?y8(F.artist).slice(0,St.cols-8):"—",K);let Mi=[];if(F.score>0)Mi.push([`★${F.score}`,K]);if(F.variants>1)Mi.push([` ×${F.variants}`,o]);if(Mi.length>0)f[I+11]?.right(G+St.cols+1,Mi)}}let m=Math.ceil(s.tiles.length/a)*St.height;G8(t,r,s,u,m,o);let p=Math.max(Oe,Oe+m-s.scroll),b=Oe+u-p,$=s.searching&&b>=2;if($)B8(f,p,b,r-1,s);let k=s.searching&&s.tiles.length===0;if(k&&!s.error){let[C,I]=WS[Math.floor(of(s)/$8)%WS.length];t[i-2]?.run(0,[["Tip ",K],[C,At],[` ${I}`,K]])}let S=s.top*a,v=s.tiles.length-(s.top+c)*a,x=[...S>0?[`↑ ${S} above`]:[],...v>0?[`↓ ${v} more`]:[]];if(x.length>0)t[i-2]?.put(0,x.join(" "),K);if(!s.searching&&s.tiles.length===0&&!s.error&&s.tag)t[Oe+1]?.put(0,s.preset==="cutouts"?`No transparent cutouts of ${s.tag} on ${zS(s)} — c searches every post, tab tries ${s.nextSite}`:`No posts of ${s.tag} on ${zS(s)} — tab tries ${s.nextSite}`,K);let M=U8(s,$,h),N=og(s,M);return Oc(t[i-1],r,{badge:"IMAGE SEARCH",lead:N,keys:k&&N?.[0]===M?[]:[["←↑↓→","move"],["enter","try on"],["tab","site"],["ctrl+v","picture"],["s","settings"],["/","search"],["?","keys"]],right:["esc","back"]}),$}function K8(t,e,n,r,i,s){let o=i.tiles[i.focus];if(!o)return;let a=i.shown?.id===o.key?i.shown:void 0,c=[sg(i,o.site,o.siteAnsi),[" ",""],...ki(String(o.id),At,o.page||void 0,$i(o.siteAnsi)),[" ",""],XS(o)];if(o.score>0)c.push([` · ★${o.score}`,K]);if(a)c.push([` · ${Bl(a.bytes)}`,K]);if(a){if(c.push([" ",""],...QS(a)),i.coloring==="original")c.push([" · own colors",K])}if(t[0]?.run(0,c),o.mates.length>0)t[0]?.right(n,[["≈ ",s],[o.mates.join(" "),K]]);if(O8(t,1,2,i,s),i.tuning)T8(t,8,2,2+Math.min(n-4,60),i,s);else if(i.details)P8(t,5,2,Math.min(n-4,Math.max(48,Math.floor(n*0.55))),r-2,i);else E8(t,7,2,n-4,r-2,i,s);if(i.shown)e.push({id:ag+i.shown.id,path:i.shown.path,row:0,col:0,cols:n,rows:r,z:p8});if(i.tuning){Oc(t[r-1],n,{badge:"IMAGE EDIT",lead:og(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=og(i);Oc(t[r-1],n,{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 z8=[["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"]],D8={grid:[["Move","←↑↓→ j k home end pgup pgdn"],["Try on","enter"],["Site",`tab shift+tab all, ${Z.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 artwork page in a browser · O the post page"],["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",`⇧←→ ${Vt.map((t)=>t.name.toLowerCase()).join(", ")}`],["Cut out","x the background off or on, on an opaque picture"],["Open","o the artwork page in a browser · O the post page"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window"],["Grid","esc"],["Close","? esc"]]},fg=6,q8=24;function Pc(t){return[...t.settings.flatMap((e,n)=>Boolean(e.advanced)===t.advanced?[n]:[]),t.settings.length]}function J8(t){return t.replace(/^[A-Z](?=[a-z])/,(e)=>e.toLowerCase())}function DS(t){let e=t.settings.filter((n)=>Boolean(n.advanced)!==t.advanced).map((n)=>J8(n.label));return`${t.advanced?"Back to":"More filters:"} ${e.join(", ")} — enter opens the page, or a from any row`}function nE(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((o)=>(Number(o)||0)>i):t.findLast((o)=>(Number(o)||0)<i))??t[n>0?0:t.length-1]}function ks(t,e){let n=[],r="";for(let i of t.split(" "))if(r&&Et(r)+1+Et(i)>e)n.push(r),r=i;else r=r?`${r} ${i}`:i;return r?[...n,r]:n}function Y8(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.toSpliced(e,0,t.value)}function V8(t,e,n,r){let i=lg(r),s=e&&n!==void 0;if(t.entry==="text")return[{text:` ${s?`${n}█`:t.value||"none"} `,sgr:s||e&&t.value?i:t.value?"":K}];let o=s?[]:t.value.split(" "),a=(s?t.choices:Y8(t)).map((c,u)=>{let f=o.includes(c),l=t.multi&&e&&u===t.cursor?wt("under"):"";return{text:t.multi?` ${f?"[x]":"[ ]"} ${c} `:` ${c} `,sgr:f?e?`${l}${i}`:"":l?`${l}${K}`:K,choice:c}});return s?[...a,{text:` ${n}█ `,sgr:i}]:a}function qS(t){if(t.entry==="text")return[{text:" ".repeat(q8),sgr:""}];let e=t.choices.map((n)=>({text:t.multi?` [x] ${n} `:` ${n} `,sgr:""}));return t.entry==="number"?[...e,{text:` ${"0".repeat(fg)}█ `,sgr:""}]:e}function Z8(t){return t.reduce((e,n)=>e+Et(n.text)+1,0)-1}function JS(t,e){let n=[[]],r=0;for(let i of t){let s=Et(i.text)>e?{...i,text:` …${Array.from(i.text).slice(-(e-2)).join("")}`}:i;if(r>0&&r+Et(s.text)>e)n.push([]),r=0;n[n.length-1]?.push(s),r+=Et(s.text)+1}return n}function YS(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 VS(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 X8(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 Q8(t,e,n,r,i){let s=r.panel??0,o=r.settings.length,c=6+Math.max(...r.settings.map((F)=>Et(F.label))),u=Math.max(...r.settings.map((F)=>Et(YS(F)))),f=c+Math.max(...r.settings.map((F)=>Z8(qS(F))))+u+5,l=Math.min(e-2,Math.max(48,f)),d=l-c-u-5,h=l-7,m=[!1,!0].map((F)=>({advanced:F,rows:Pc({settings:r.settings,advanced:F}).slice(0,-1)})),p=r.settings.map((F)=>JS(qS(F),d).length),b=Math.max(...m.map((F)=>F.rows.reduce((gt,Xt)=>gt+p[Xt],0))),$=Math.max(...m.map((F)=>ks(DS({settings:r.settings,advanced:F.advanced}),h).length),...r.settings.map((F)=>ks(F.about,h).length)),k=`${r.tag}: ${Z.map((F)=>`${F.name} 0,000,000`).join(" · ")}`,S=r.tag?Math.max(ks(k,h).length,ks(VS(r),h).length):0,v=b+$+S+8,x=Math.floor((e-l)/2),M=Math.max(1,Math.floor((n-1-v)/2)),N=lg(r.siteAnsi);t[M]?.put(x,`╭─ Settings ${"─".repeat(Math.max(0,l-13))}╮`);for(let F=M+1;F<M+v-1;F++)t[F]?.put(x,`│${" ".repeat(l-2)}│`);let C=M+2;for(let F of Pc(r).slice(0,-1)){let gt=r.settings[F],Xt=F===s;if(Xt)t[C]?.put(x+2,"▶",i);if(t[C]?.mark(x+2,c-3,{kind:"setting",index:F}),t[C]?.put(x+4,gt.label,Xt?At:""),gt.value!==gt.default)t[C]?.right(x+l-3,[[YS(gt),K]]);JS(V8(gt,Xt,r.typing,r.siteAnsi),d).forEach((at,Nr)=>{let Ke=x+c;for(let xn of at)Ke=(t[C+Nr]?.put(Ke,xn.text,xn.sgr,void 0,{kind:"choice",index:F,choice:xn.choice})??Ke)+1}),C+=p[F]}let I=m.find((F)=>F.advanced!==r.advanced)?.rows??[],j=t[M+3+b];if(j){if(s===o)j.put(x+2,"▶",i);let F=j.put(x+3,r.advanced?" ‹ Basic ":" Advanced › ",s===o?N:At,void 0,{kind:"setting",index:o});if(I.some((gt)=>r.settings[gt]?.value!==r.settings[gt]?.default))j.put(F+1,"•",K)}t[M+5+b]?.put(x+2,"─".repeat(l-4),K),ks(r.settings[s]?.about??DS(r),h).forEach((F,gt)=>{t[M+6+b+gt]?.put(x+4,F)}),ks(VS(r),h).forEach((F,gt)=>{t[M+6+b+$+gt]?.put(x+4,F,K)}),t[M+v-1]?.put(x,`╰${"─".repeat(l-2)}╯`);let{keys:U,right:G}=X8(r,r.settings[s]);Oc(t[n-1],e,{keys:U,right:G})}function t3(t,e,n,r){let i=r.tuning?z8:D8[r.mode],s=Math.min(e-2,Math.max(50,...i.map(([,l])=>Et(l)+16))),o=i.map(([l,d])=>({label:l,parts:ks(d,s-16)})),a=o.reduce((l,{parts:d})=>l+d.length,0)+4,c=Math.floor((e-s)/2),u=Math.max(2,Math.floor((n-a)/2));t[u]?.put(c,`╭─ Help ${"─".repeat(s-9)}╮`);for(let l=u+1;l<u+a-1;l++)t[l]?.put(c,`│${" ".repeat(s-2)}│`);let f=u+2;for(let{label:l,parts:d}of o){t[f]?.put(c+3,l,At);for(let h of d)t[f]?.put(c+13,h),f++}t[u+a-1]?.put(c,`╰${"─".repeat(s-2)}╯`),Oc(t[n-1],e,{badge:"HELP",right:["? esc","close"]})}function e3(t,e,n){let r=e.suggest??[],i=r.map((a)=>a.alias??(a.count>0?String(a.count):a.palette??"0")),s=Math.max(...r.map((a)=>Et(a.value))),o=Math.max(7,...i.map(Et));r.forEach((a,c)=>{let u=c===e.pick,f=t[1+c];f?.run(0,[[u?"▸ ":" ",n,void 0,{kind:"suggest",index:c}],[a.value,u?At+n:"",void 0,{kind:"suggest",index:c}]]),f?.right(2+s+2+o,[[i[c],K]])})}function ef(t,e=[]){return[...e,...t.flatMap((n,r)=>n.zones(r))]}function dg(t,e,n){let r=Array.from({length:n},()=>new nf(e)),i=[],s=[],o=wt("accent");if(rg=!1,e<ys.cols||n<ys.rows)return r[0]?.put(0,"ttheme find",At+o),r[1]?.put(0,`Needs ${ys.cols}×${ys.rows} — now ${e}×${n}`),r[2]?.put(0,"esc quits",K,void 0,{kind:"key",key:"esc"}),{lines:r.map((c)=>c.render()),images:i,zones:ef(r),loader:!1,tick:!1};let a=!1;if(t.mode==="try")K8(r,i,e,n,t,o);else a=W8(r,i,s,e,n,t,o);if(t.mode==="grid"&&t.editing!==void 0&&t.suggest?.length){for(let c=1;c<n-1;c++)r[c]=new nf(e);return e3(r,t,o),{lines:r.map((c)=>c.render()),images:[],zones:ef(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 nf(e);if(t.help)t3(r,e,n,t);else Q8(r,e,n,t,o);return{lines:r.map((u)=>u.render()),images:c,zones:ef(r),loader:!1,tick:!1}}return{lines:r.map((c)=>c.render()),images:i,zones:ef(r,s),loader:a,tick:rg}}var n3=130,r3=38,i3=96,s3=28,Ac=[{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}],o3={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]},rE=(t)=>Array.from({length:8},(e,n)=>`«K${t+n}» «»`).join(" "),a3=["«2»❯ «»colortest",`«d»0-7 ${rE(0)}`,`«d»8-15 ${rE(8)}`],iE=2;function c3(t){let e=Ac.length;return Ac[(t%e+e)%e]}function aE(){return Ac.map((t)=>t.name)}function Nc(t,e,n){let r=t>=n3&&e>=r3?"full":t>=i3&&e>=s3?"tabs":void 0;if(!r)return;let i=r==="full"?t>=140?47:38:37,s=t-i-1,o=i+1+iE,a=i+s-iE,c=3,u=e-3,f={col:o,row:c,cols:a-o+1,rows:u-c+1},l={col:o+1,row:c+3,cols:f.cols-2,rows:u-c-3},d=[{row:c,col:o,length:f.cols,down:!1},{row:c+2,col:o,length:f.cols,down:!1},{row:u,col:o,length:f.cols,down:!1},{row:c,col:o,length:u-c+1,down:!0},{row:c,col:a,length:u-c+1,down:!0}],h=c3(n);return{tier:r,side:i,width:s,frame:f,title:{col:l.col,row:c+1,cols:l.cols,rows:1},inner:l,rules:d,tiles:[{id:h.id,name:h.name,col:l.col,row:l.row,width:l.cols,rows:l.rows}]}}var Rc="«2»▎ ",sE="«3»▎ ",u3="«1»▁ ",l3=[["","«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. */"],[Rc,"«5»export interface «6»Palette «»{"],[Rc," name: «6»string"],[Rc," ansi: «6»Hex«»[]"],[Rc," ratio?: «6»number"],[Rc,"}"],["",""],["","«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«»> {"],[sE," «5»const «»text = «5»await «4»readFile«»(path, «2»'utf8'«»)"],[sE," «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)"],[""," }"],[u3," «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"],["","}"]],f3=21;function d3(){return["«K4» theme.ts «s» scenes.ts «s» contrast.ts ",...l3.map(([t,e],n)=>{let r=String(n+1).padStart(3);return`${n+1===f3?`«b»${r}`:`«d»${r}`} ${t||"«» "}«»${e}`})]}function hg(t,e,n,r){let i=Math.max(1,r-t.length-2-n.length),s=0,o=`«6»${t}«b»[`;for(let[a,c]of e){let u=Math.min(i-s,Math.round(c*i));o+=`«${a}»${"|".repeat(u)}`,s+=u}return`${o}«»${" ".repeat(i-s)}${n}«b»]`}var h3=[[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]],m3=["«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"],p3=["Help","Setup","Search","Filter","Tree","SortBy","Nice -","Nice +","Kill","Quit"];function g3(t,e,n){return`«${t}»${e}${" ".repeat(Math.max(0,n-B(e)))}`}function b3(t){let e=t-2,n=Math.floor((e-2)/2),r=(i)=>{let[s,o,a]=h3[i],c=`${((s+o+a)*100).toFixed(1)}%`;return hg(String(i).padStart(3),[["2",s],["1",o],["4",a]],c,n)};return[...[0,1,2,3].map((i)=>`${r(i)} ${r(i+4)}`),`${hg("Mem",[["2",0.45],["4",0.1],["3",0.07]],"9.84G/16.0G",n)} «6»Tasks: «b»214«», 1093 thr; «B2»4«» running`,`${hg("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`,"",g3("K2"," PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command",e),...m3.map((i)=>i.startsWith("«s»")?`${i}${" ".repeat(Math.max(0,e-B(i.replace(/«[^»]*»/g,""))))}`:i)]}function w3(t){let e=t-2,n="",r=0;return p3.forEach((i,s)=>{let o=`F${s+1}`,a=i.padEnd(6);if(r+o.length+a.length<=e)n+=`«»${o}«K6»${a}`,r+=o.length+a.length}),`${n}«K6»${" ".repeat(Math.max(0,e-r))}`}function oE(t,e,n){if(t==="Editor")return d3();if(t==="Top")return b3(n);let r=Vt.find((o)=>o.name===t)?.lines??[],i=e?o3[t]:void 0,s=i?i.map((o)=>r[o]??""):r;return t==="Shell"?[...s.slice(0,-1),...a3,...s.slice(-1)]:s}function af(t,e){return t.values().map((n)=>xo(n,e)).filter((n)=>n!==void 0).map((n)=>{let r=0;return n.map(([i,s])=>{let o={text:i,role:s,col:r};return r+=B(i),o})}).toArray()}function $3(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 k3(t,e){if(t.id==="code")return[$3(e),'«d»"src/theme.ts" 26L, 912B written'];return t.id==="monitor"?[w3(e)]:[]}function y3(t,e,n){let r=af(k3(t,e),e),i=Math.max(0,n-r.length),s=[];for(let a of t.scenes.toReversed()){let c=af(oE(a,!1,e),e),u=af(oE(a,!0,e),e),f=[c,u].find((l)=>s.length+l.length<=i);if(!f){if(s.length===0)s=t.tail?u.slice(u.length-i):u.slice(0,i);break}s=[...f,...s]}if(r.length===0)return s;let o=af(Array.from({length:i-s.length},()=>t.id==="code"?"«4»~":""),e);return[...s,...o,...r]}function Tc(t){let e=Ac.find((r)=>r.id===t.id),n=t.width-2;return e?y3(e,t.width,t.rows).map((r)=>r.filter((i)=>i.col<n)):[]}function mg(t,e){let{text:n,ground:r}=uE(t);return n===e||r===e}function cE(t,e){let n=t.inner;return Ac.map((r)=>({name:r.name,count:Tc({id:r.id,name:r.name,col:n.col,row:n.row,width:n.cols,rows:n.rows}).flat().filter((i)=>mg(i.role,e)).length}))}function uE(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 pg(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 cf(t){return t.tiles.flatMap((e)=>Tc(e).flatMap((n,r)=>n.map((i,s)=>({spot:{pane:e.id,line:r,run:s},col:i.col,text:i.text,role:i.role}))))}function gg(t,e){return t.pane===e.pane&&t.line===e.line&&t.run===e.run}function lE(t,e){let n=cf(t);return(n.find((r)=>pg(r.role,e))??n[0])?.spot}function uf(t,e){return e&&cf(t).find((n)=>gg(n.spot,e))?.spot}function fE(t,e,n){let r=cf(t);if(r.length===0)return;let i=e?r.findIndex((d)=>gg(d.spot,e)):-1;if(i<0)return r[0]?.spot;let s=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 d=t.tiles.map((p)=>p.id),h=d.indexOf(s.spot.pane),m=d[(h+(n==="next"?1:d.length-1))%d.length];return r.find((p)=>p.spot.pane===m)?.spot}let o=n==="up"?-1:1,a=r.filter((d)=>d.spot.pane===s.spot.pane),c=[...new Set(a.map((d)=>d.spot.line))],u=c[c.indexOf(s.spot.line)+o];if(u===void 0){let d=t.tiles.map((k)=>k.id),h=d.indexOf(s.spot.pane)+o,m=d[(h+d.length)%d.length],p=r.filter((k)=>k.spot.pane===m),b=o<0?p.at(-1)?.spot.line??0:p[0]?.spot.line??0,$=p.filter((k)=>k.spot.line===b);return($.find((k)=>k.col>=s.col)??$.at(-1))?.spot}let f=a.filter((d)=>d.spot.line===u);return(f.find((d)=>d.col<=s.col&&d.col+B(d.text)>s.col)??f.find((d)=>d.col>=s.col)??f.at(-1))?.spot}function dE(t,e){let n=cf(t).find((r)=>gg(r.spot,e));return n?uE(n.role):void 0}var v3={lr:"─",du:"│",dr:"╭",dl:"╮",ru:"╰",lu:"╯",dlr:"┬",lru:"┴",dru:"├",dlu:"┤",dlru:"┼"};function hE(t){let e=new Map,n=(i,s,o)=>{let a=e.get(i)??new Map;e.set(i,a);let c=a.get(s)??new Set;a.set(s,c),c.add(o)};for(let i of t)for(let s=0;s<i.length;s++){let o=i.down?i.row+s:i.row,a=i.down?i.col:i.col+s;if(s>0)n(o,a,i.down?"u":"l");if(s<i.length-1)n(o,a,i.down?"d":"r")}let r=(i)=>v3[[...i].sort().join("")]??(i.has("l")||i.has("r")?"─":"│");return new Map(e.entries().map(([i,s])=>[i,new Map(s.entries().map(([o,a])=>[o,r(a)]))]))}import{execFile as S3}from"node:child_process";import{createHash as bE}from"node:crypto";import{existsSync as E3,mkdtempSync as M3,readFileSync as hf,rmSync as x3,statSync as wE,writeFileSync as $E}from"node:fs";import{homedir as O3,tmpdir as P3}from"node:os";import{join as lf}from"node:path";import{fileURLToPath as I3}from"node:url";import{promisify as R3}from"node:util";import{inflateSync as A3}from"node:zlib";var Sn=R3(S3),ff=67108864,N3=4096,T3="/System/Library/ColorSync/Profiles/sRGB Profile.icc",$g=["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/heic"],H3=["text/uri-list","text/plain;charset=utf-8","text/plain"],bg=[...$g,"text/uri-list","text/plain"];function L3(t){try{return wE(t).isFile()}catch{return!1}}function F3(t){let e=[],n="",r="",i=!1;for(let s=0;s<t.length;s++){let o=t[s];if(r==="'")if(o==="'")r="";else n+=o;else if(r==='"')if(o==='"')r="";else if(o==="\\"&&'"\\$`'.includes(t[s+1]??""))n+=t[++s];else n+=o;else if(o==="\\"&&s+1<t.length)n+=t[++s],i=!0;else if(o==="'"||o==='"')r=o,i=!0;else if(/\s/.test(o)){if(i)e.push(n);n="",i=!1}else n+=o,i=!0}if(i)e.push(n);return e}function mE(t){if(/^file:\/\//i.test(t))try{return I3(t)}catch{return}if(t.startsWith("~/"))return lf(O3(),t.slice(2));return t.startsWith("/")?t:void 0}function ea(t,e=L3){return t.replace(/\r\n?/g,`
672
+ ${u} · ${qt(f.length)} · ${d(r.length,"error")} · ${d(i.length,"warning")}`),r.length>0?1:0}async function lS(t,e){switch(t){case void 0:wC();return;case"add":await pC(Xv(t,e));return;case"remove":gC(Xv(t,e));return;case"search":await $C(e);return;case"init":await yC(e);return;case"check":return vC(e);default:throw Error(`unknown marketplace action ${t} — ${uC.join(", ")}, or none to list them`)}}function Xv(t,e){if(!e)throw Error(t==="add"?"marketplace add takes a repository or a folder: ttheme marketplace add alice/ttheme-dust":"marketplace remove takes a marketplace name — `ttheme marketplace` lists them");return e}function fS(t,e){let n=mi(t,e);return`${n} — ${qt(Fn(e,n,dc(t),me(!1)).length)}, read in place`}function dS(t){return[...t].length===1&&t>=" "&&t!==""}function SC(t){return[...t.replace(/[\r\n\t]+/g," ")].filter(dS).join("")}function ms(t,e,n=()=>!0){if(e==="backspace")return[...Zh(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 dS(e)&&n(e)?t+e:void 0}class ps{value;constructor(t=""){this.value=t}key(t){let e=ms(this.value,t);if(e===void 0)return!1;return this.value=e,!0}paste(t){this.value+=SC(t)}}import{performance as EC}from"node:perf_hooks";import{StringDecoder as MC}from"node:string_decoder";var xC=30,OC=50,PC=500,IC=5,qo=Buffer.from("\x1B[M"),zl="\x1B]1337;ReportCellSize\x07\x1B[16t\x1B[14t\x1B[18t",kS="\x1B[?1016$p\x1B[16t",yS={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"},RC={"\r":"enter","\n":"enter","\t":"tab","\b":"backspace","":"backspace","\x1B":"esc","\x00":"ctrl-space"},hS=/\[([0-?]*)([ -/]*)([@-~])/y,AC=/^\[[0-?]*[ -/]*$/,mS=/\[(<-?\d+;-?\d+;-?\d+)([Mm])/y,NC=/^\[<[-\d;]*$/,pS=/\](\d+)/y,TC=/^\]\d*$/,gS=/\]\d+;/y,HC=/^1337;ReportCellSize=([\d.]+);([\d.]+)(?:;([\d.]+))?$/,FC=/^(1[0-2]|17|4;\d{1,3});(rgba?:[0-9a-fA-F/]+)$/,vS="\x1B[200~",Kl="\x1B[201~";function LC(t){let e=RC[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 Jo(t){return{kind:"key",key:t}}function Yo(t){return{events:[Jo("esc")],end:t+1}}function CC(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 jC=["left","middle","right",void 0];function zp(t,e,n,r){if(!Number.isInteger(t)||t<0||t>=128||!(e>=0)||!(n>=0))return;let i=t&3,s={kind:"mouse",row:n,col:e,shift:(t&4)!==0,alt:(t&8)!==0,ctrl:(t&16)!==0};if(t&64)return{...s,action:"wheel",button:void 0,wheel:i%2===0?-1:1,sideways:i>=2,count:0};let o=jC[i],a=t&32?o?"drag":"move":r||!o?"release":"press";return{...s,action:a,button:o,wheel:0,sideways:!1,count:a==="press"?1:0}}function _C(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[s=0,o=0,a=0]=r,c=Math.max(s,o,a)<128?zp(s-32,o-33,a-33,!1):void 0;return{events:c?[c]:[],end:i}}function BC(t,e,n,r,i){let s=Math.max(0,e)/i.w,o=Math.max(0,n)/i.h,a=Math.floor(s),c=Math.floor(o),u=zp(t,a,c,r);return u&&{...u,fx:s-a,fy:o-c}}function bS(t,e,n,r){if((n==="M"||n==="m")&&e===""&&t.startsWith("<")){let[s=-1,o=0,a=0]=t.slice(1).split(";").map(Number),c=r?BC(s,o,a,n==="m",r):zp(s,o-1,a-1,n==="m");return c?[c]:[]}if(n==="t"&&e===""){let[s,o=0,a=0]=t.split(";").map(Number),c=s===6?"cell":s===4?"window":s===8?"grid":void 0;return c?[{kind:"size",of:c,h:o,w:a}]:[]}if(n==="y"&&e==="$"&&t.startsWith("?")){let[s=0,o=0]=t.slice(1).split(";").map(Number);return[{kind:"mode",mode:s,value:o}]}if(n==="c"&&t.startsWith("?"))return[{kind:"attributes"}];let i=e===""?yS[`${t}${n}`]:void 0;return i?[Jo(i)]:[]}function GC(t,e,n,r){mS.lastIndex=e+1;let i=mS.exec(t);if(i)return{events:bS(i[1],"",i[2],r),end:e+1+i[0].length};hS.lastIndex=e+1;let s=hS.exec(t);if(!s){let l=t.slice(e+1);return!n&&(AC.test(l)||NC.test(l))?void 0:Yo(e)}let[o,a="",c="",u=""]=s,f=e+1+o.length;if(a===""&&c===""&&u==="M")return _C(t,f,n);if(a==="200"&&u==="~"){let l=t.indexOf(Kl,f);if(l===-1)return n?{events:[{kind:"paste",text:t.slice(f)}],end:t.length}:void 0;return{events:[{kind:"paste",text:t.slice(f,l)}],end:l+Kl.length}}return{events:bS(a,c,u,r),end:f}}function UC(t){let e=HC.exec(t);if(e){let o=Number(e[3]??1);return[{kind:"size",of:"cell",h:Math.round(Number(e[1])*o),w:Math.round(Number(e[2])*o)}]}let n=FC.exec(t);if(n)return[{kind:"color",code:n[1],value:n[2]}];let[r="",i="",...s]=t.split(";");return[{kind:"osc",code:r,meta:CC(i),payload:s.join(";")}]}function WC(t,e,n){pS.lastIndex=e+1;let r=pS.exec(t),i=r?t[e+1+r[0].length]:void 0;if(i!==";"&&i!=="\x07"&&i!=="\x1B")return!n&&TC.test(t.slice(e+1))?void 0:Yo(e);let s=[t.indexOf("\x07",e),t.indexOf("\x1B\\",e+2)].filter((a)=>a!==-1);if(s.length===0)return n?{events:[],end:t.length}:void 0;let o=Math.min(...s);return{events:UC(t.slice(e+2,o)),end:o+(t[o]==="\x07"?1:2)}}function KC(t,e,n){let r=t[e+2];if(r===void 0)return n?Yo(e):void 0;if(!/^[A-Za-z]$/.test(r))return Yo(e);let i=yS[r];return{events:i?[Jo(i)]:[],end:e+3}}function zC(t,e,n,r){let i=t[e+1];if(i===void 0)return n?Yo(e):void 0;if(i==="[")return GC(t,e,n,r);if(i==="]")return WC(t,e,n);if(i==="O")return KC(t,e,n);if(i==="")return{events:[Jo("alt-backspace")],end:e+2};if(/^[a-z]$/.test(i))return{events:[Jo(`alt-${i}`)],end:e+2};return Yo(e)}function wS(t,e=!1,n){let r=[],i=0;while(i<t.length){if(t[i]==="\x1B"){let a=zC(t,i,e,n);if(!a)return{events:r,rest:t.slice(i)};r.push(...a.events),i=a.end;continue}let s=String.fromCodePoint(t.codePointAt(i)),o=LC(s);if(o)r.push(Jo(o));i+=s.length}return{events:r,rest:""}}function DC(t,e){for(let n=Math.min(qo.length-1,t.length-e);n>0;n--)if(t.subarray(t.length-n).equals(qo.subarray(0,n)))return t.length-n;return t.length}function qC(t){let e=[],n=0,r=t.indexOf(qo);while(r!==-1&&r+6<=t.length){e.push(t.subarray(n,r));let[s=0,o=0,a=0]=t.subarray(r+3,r+6);if(o>32&&a>32)e.push(Buffer.from(`\x1B[<${s-32};${o-32};${a-32}M`));n=r+6,r=t.indexOf(qo,n)}let i=r===-1?DC(t,n):r;return e.push(t.subarray(n,i)),{bytes:Buffer.concat(e),carry:i<t.length?t.subarray(i):void 0}}function $S(t){return gS.lastIndex=1,t.startsWith(vS)||t.startsWith("\x1B]")&&gS.test(t)}function JC(t,e){let n=t.slice(-Kl.length)+e;return t.startsWith(vS)?n.includes(Kl):n.includes("\x07")||n.includes("\x1B\\")}class Dp{held="";timer;carry;pressed;wheeled;utf8=new MC("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=EC.now();return t.filter((n)=>{if(n.kind!=="mouse")return!0;if(n.action==="wheel"){let s=n.wheel*(n.sideways?2:1),o=this.wheeled;if(o!==void 0&&o.way===s&&e-o.at<IC)return!1;return this.wheeled={at:e,way:s},!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<=PC;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.held&&!e.includes("\x1B")&&this.burst(e)){this.settle(),this.take([{kind:"paste",text:e}]);return}if($S(this.held)&&!JC(this.held,e)){this.held+=e;return}let{events:n,rest:r}=wS(this.held+e,!1,this.cell());if(this.held=r,this.settle(),n.length>0)this.take(n)}settle(){let t=this.held.length+(this.carry?.length??0);if(t>0&&!$S(this.held))this.wait(t===1?xC:OC)}bytes(t){let{bytes:e,carry:n}=qC(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);let t=this.carry;this.carry=void 0;let e=t&&!t.subarray(0,qo.length).equals(qo)?this.utf8.write(t):"",{events:n}=wS(this.held+e,!0,this.cell());if(this.held="",n.length>0)this.take(n)}stop(){clearTimeout(this.timer),this.held="",this.carry=void 0}}class mc{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 qp{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 ql={on:"\x1B[?1049h",off:"\x1B[?1049l"},Wn={on:"\x1B[?25l",off:"\x1B[?25h"},pi={on:"\x1B[?7l",off:"\x1B[?7h"},yr={on:"\x1B[?2004h",off:"\x1B[?2004l"},PS={on:"\x1B[?1004h",off:"\x1B[?1004l"},YC={on:"\x1B[?1000h\x1B[?1002h\x1B[?1006h",off:"\x1B[?1006l\x1B[?1002l\x1B[?1000l"},SS={on:"\x1B[?1016h",off:"\x1B[?1016l\x1B[?1006h"};function gi(t=process.env){return t.TTHEME_MOUSE==="off"?[]:[YC]}var IS={SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGTERM:15},VC=3000;class gc extends Error{exit;constructor(t){super(t);this.exit=128+IS[t]}}var Un=[],gs=new Map,pc=new Map,ES;function MS(t){return Un.findLast((e)=>e.input===t)}var xS;function RS(t){for(let e of Un.toReversed())e.abort(t);if(!xS)xS=setTimeout(()=>{AS(),process.exit(t instanceof gc?t.exit:1)},VC).unref()}var ZC=Object.fromEntries(Object.keys(IS).map((t)=>[t,()=>RS(new gc(t))]));function AS(){for(let t of Un.toReversed())t.close()}function XC(){for(let t of Un)t.reassert();Un.at(-1)?.redraw()}function OS(t){let e=t?"on":"off";for(let[n,r]of Object.entries(ZC))process[e](n,r);if(process[e]("uncaughtException",RS),process[e]("exit",AS),process.platform!=="win32")process[e]("SIGCONT",XC)}function Dl(){}class NS{input;output;failed;modes=[];assumed;owned=[];keys;tty;take;resized;queued=[];asking;reject=Dl;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 Dp((r)=>this.deliver(r),t.burst,()=>gs.has(SS)?ES:void 0),this.failed=new Promise((r,i)=>{this.reject=i}),this.failed.catch(Dl),this.tty&&!Un.some((r)=>r.tty))OS(!0);Un.push(this);let e="";for(let r of this.assumed)if(!gs.has(r))e+=r.on;for(let r of t.modes??[])e+=this.claim(r);this.write(e);let n=pc.get(this.input)??0;if(n===0)this.input.setRawMode?.(!0);pc.set(this.input,n+1),this.input.on("data",this.received),this.input.resume(),this.output.on("resize",this.resizing),this.output.on("error",Dl)}hold(t){this.write(this.claim(t))}pixels(t){ES=t,this.hold(SS)}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 s of i){let o=r?void 0:t(s);if(o!==void 0)r=!0,n(o)}if(!r)e()})}))}ask(t,e,n,r=!0){return new Promise((i)=>{let s={hold:r,pick:(c)=>{let u=e(c);if(u===void 0)return!1;return o(u),!0}},o=(c)=>{if(clearTimeout(a),this.asking===s)this.asking=void 0;i(c),this.release()},a=setTimeout(()=>o(void 0),n);this.asking=s,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.toReversed()){let r=(gs.get(n)??1)-1;if(r===0)gs.delete(n),t+=n.off;else gs.set(n,r)}this.write(t),this.open=!1;let e=(pc.get(this.input)??1)-1;if(e===0)pc.delete(this.input),this.input.setRawMode?.(!1),this.input.pause();else pc.set(this.input,e);if(this.output.off("error",Dl),Un.splice(Un.indexOf(this),1),this.tty&&!Un.some((n)=>n.tty))OS(!1)}received=(t)=>{if(MS(this.input)===this&&!this.aborted)this.keys.feed(t)};resizing=()=>{if(MS(this.input)===this)this.resized?.()};claim(t){this.modes.push(t);let e=gs.get(t)??0;if(gs.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 bi(t,e){let n=new NS(t);try{return await e(n)}finally{n.close()}}var QC=3,FS={catalogs:{top:no,shelf:(t)=>et(t.name)?t.catalog:void 0},marketplaces:{top:(t)=>et(t.name)??Y,shelf:(t)=>t.catalog}};function bc(t,e){return`${t}/${e}`}function TS(t){return et(t.name)?$e(t.name):t.name}function Jl(t,e){let n=e.shelf(t);return n===void 0?void 0:bc(e.top(t),n)}function Yl(t){if(t?.kind==="palette")return`palette ${t.entry.name}`;if(t?.kind==="top")return`top ${t.name}`;if(t?.kind==="catalog")return`catalog ${bc(t.top,t.name)}`;if(t?.kind==="extra")return`extra ${t.extra.key}`;return t?.kind??""}function bs(t){return t?.kind==="rule"}function Vl(t,e){return Wi([t.name,et(t.name)??"",t.native??"",t.catalog??"",...t.nativeNames??[],...Nu(t.booru)],e)}function LS(t,e,n,r="catalogs",i=[],s="tree"){let o=FS[r],a=n.trim(),c=[],u=(l)=>({kind:"palette",entry:l}),f=Map.groupBy(t.filter((l)=>!l.default),(l)=>o.top(l));for(let[l,d]of f){let h=d[0],m=a?d.filter(($)=>Vl($,a)):d;if(a&&m.length===0)continue;let p=s==="inside"||s==="tree"&&(a.length>0||e.has(l));if(s!=="inside")c.push({kind:"top",name:l,...!et(h.name)&&l===h.catalog&&h.native?{native:h.native}:{},lead:d.find(($)=>$.lead)??h,expanded:p,count:m.length});if(!p)continue;let b=m.filter(($)=>o.shelf($)!==void 0);for(let[$,k]of Map.groupBy(b,(v)=>o.shelf(v))){let v=k.find((M)=>M.lead)??k[0],S=a.length>0||e.has(bc(l,$));if(c.push({kind:"catalog",top:l,name:$,...v.native?{native:v.native}:{},lead:v,expanded:S,count:k.length}),S)c.push(...k.map(u))}c.push(...m.filter(($)=>o.shelf($)===void 0).map(u))}for(let l of i)if(!f.has(l)&&(a===""||Wi([l],a)))c.push({kind:"top",name:l,expanded:e.has(l),count:0});return c}function t8(t,e){let n=e.trim(),r=new Set(t.values().filter((i)=>!i.default&&(n===""||Vl(i,n))).map(no));return LS(t,new Set,"").filter((i)=>i.kind==="top"&&r.has(i.name))}function e8(t){return t.includes("@")}function HS(t,e,n,r,i=!0){let s=n-1;if(s<0)return t;let o;if(!Number.isFinite(e))o=e>0?s:0;else if(e>0)o=t>=s?i?0:s:Math.min(s,t+e);else o=t<=0?i?s:0:Math.max(0,t+e);if(!r(o))return o;let a=Math.sign(e),c=o+a;if(c>=0&&c<=s)return c;return i&&Math.abs(e)===1?c<0?s:0:o-a}function wc(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 n8(t){let e=t.findIndex((n)=>n.kind==="top"&&e8(n.name));return e>0&&t.slice(0,e).some((n)=>n.kind==="top")?t.toSpliced(e,0,{kind:"rule"}):t}function r8(t){let e=t.findIndex((n)=>n.kind==="palette");return e===-1?0:e}function Zl(t){return t==="decode"||t==="glitch"?t:"typewriter"}function wi(t,e,n,r){return Ye({kind:"row",at:t,part:e,...r?{pane:r}:{}},n)}class Vo{picked;scope;maxItems;focus="lit";named=[];catalogs=[];layout;mode;pane;place;color;p;onFocus;note;badge;about;tops;heads;extras;pinned;entries=[];catalogPad=0;namePad=0;expanded=new Set;rows=[];fixed=0;cursor=0;top=0;span=1;filter="";lastFocused="";constructor(t){this.picked=t.picked,this.scope=t.scope??"palette",this.layout=t.layout??"catalogs",this.mode=t.mode??"tree",this.pane=t.pane,this.place=FS[this.layout],this.maxItems=t.maxItems??12,this.color=t.color??!0,this.p=Ce(this.color),this.onFocus=t.onFocus,this.note=t.note,this.badge=t.badge,this.about=t.about,this.tops=t.tops,this.heads=t.heads,this.extras=t.extras,this.pinned=t.pinned,this.load(t.entries),this.rebuild("first")}load(t){this.entries=t,this.named=t.filter((e)=>!e.default),this.catalogs=[...new Set(this.named.map(no))],this.catalogPad=Math.max(0,...this.catalogs.map((e)=>e.length)),this.namePad=Math.max(0,...this.named.map((e)=>this.indent(e).length+TS(e).length))}lead(){return this.mode==="inside"?"":" "}indent(t){return this.place.shelf(t)===void 0?this.lead():`${this.lead()} `}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(this.place.top(t.entry));let e=Jl(t.entry,this.place);if(e!==void 0)this.expanded.add(e)}this.setFilter("")}focusedRow(){return this.rows[this.cursor]}refocus(){this.lastFocused="",this.sync()}refresh(){this.rebuild("stay")}select(t){let e=this.rows.findIndex((n)=>Yl(n)===t);if(e===-1)return!1;return this.cursor=e,this.sync(),!0}members(t,e){let n=this.scope==="palette"?this.filter.trim():"";return this.under(t,e).filter((r)=>n===""||Vl(r,n))}under(t,e){return this.named.filter((n)=>this.place.top(n)===t&&(e===void 0||this.place.shelf(n)===e))}inside(t){return t.kind==="palette"?[t.entry]:t.kind==="top"?this.under(t.name):t.kind==="catalog"?this.under(t.top,t.name):[]}everyone(t){return t.flatMap((e)=>e.kind==="top"?this.members(e.name):[])}pick(){let t=this.rows[this.cursor],e=t?.kind==="palette"?[t.entry.name]:t?.kind==="top"?this.members(t.name).map((r)=>r.name):t?.kind==="catalog"?this.members(t.top,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.catalogs.filter((t)=>this.members(t).every((e)=>this.picked.has(e.name))).length}total(){return this.scope==="catalog"?this.catalogs.length:this.named.length}matched(){let t=this.filter.trim();if(this.scope==="catalog")return this.rows.filter((e)=>e.kind==="top").length;return t?this.named.filter((e)=>Vl(e,t)).length:this.named.length}sync(){let t=this.rows[this.cursor],e=t?.kind==="palette"?t.entry:t?.kind==="top"&&this.scope==="catalog"?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==="catalog"?t8(this.entries,this.filter):LS(this.entries,this.expanded,this.filter,this.layout,this.tops?.()??[],this.mode),r=this.layout==="marketplaces"||n.length===0?n:n8([{kind:"all",count:this.allCount(n)},...n]),i=(a)=>(a??[]).map((c)=>({kind:"extra",extra:c})),s=i(this.pinned?.());this.fixed=s.length,this.rows=[...i(this.heads?.()),...r,...i(this.extras?.()),...s];let o=n.length>0?this.rows.indexOf(n[this.mode==="inside"&&!this.filter.trim()?0:r8(n)]):Math.max(0,this.rows.findIndex((a)=>!bs(a)&&!(a.kind==="extra"&&a.extra.idle)));if(t==="first")this.cursor=o;else if(t==="keep"||t==="stay"){let a=Yl(e),c=e?.kind==="palette"||t==="stay"?this.rows.findIndex((f)=>Yl(f)===a):-1,u=e?.kind==="extra"&&t==="stay";this.cursor=c!==-1?c:u?Math.min(this.cursor,this.rows.length-1):o}else if(this.cursor>=this.rows.length)this.cursor=Math.max(0,this.rows.length-1);this.settle(),this.sync()}settle(){if(!bs(this.rows[this.cursor]))return;let t=this.rows.findIndex((n,r)=>r>this.cursor&&!bs(n)),e=this.rows.findLastIndex((n,r)=>r<this.cursor&&!bs(n));this.cursor=t!==-1?t:e!==-1?e:this.cursor}allCount(t){return this.scope==="catalog"?t.length:this.everyone(t).length}move(t,e=!0){let n=this.rows.length-this.fixed,r=this.fixed>0&&n>0&&Math.abs(t)!==1;this.cursor=r?HS(Math.min(this.cursor,n-1),t,n,(i)=>bs(this.rows[i]),e):HS(this.cursor,t,this.rows.length,(i)=>bs(this.rows[i]),e),this.sync()}point(t){let e=this.rows[t];if(!e||bs(e))return!1;return this.cursor=t,this.sync(),!0}size(){return this.rows.length}outer(){let t=this.rows[this.cursor];return this.mode==="inside"&&(this.filter.trim()!==""||t===void 0||t.kind==="extra"||t.kind==="catalog"&&!t.expanded||t.kind==="palette"&&Jl(t.entry,this.place)===void 0)}flip(){let t=this.rows[this.cursor];if(t?.kind==="top"||t?.kind==="catalog")this.fold(!t.expanded)}foldable(){let t=this.rows[this.cursor];return(t?.kind==="catalog"||t?.kind==="top"&&this.mode==="tree")&&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)=>Yl(e)===t)),this.sync()}fold(t){if(this.filter||this.scope==="catalog")return;let e=this.rows[this.cursor];if(e?.kind==="top"){if(t!==e.expanded)this.toggle(e.name)}else if(e?.kind==="catalog"){if(t!==e.expanded)this.toggle(bc(e.top,e.name));else if(!t&&this.mode==="tree")this.reach(`top ${e.top}`)}else if(e?.kind==="palette"&&!t&&!e.entry.default){let n=Jl(e.entry,this.place);if(n===void 0){if(this.mode==="tree"){let r=this.place.top(e.entry);this.climb(r,`top ${r}`)}}else this.climb(n,`catalog ${n}`)}}page(){return this.span}pins(){let t=this.rows.length-this.fixed;return this.rows.slice(t).flatMap((e,n)=>this.renderRow(e,t+n))}window(){let t=this.rows.length-this.fixed,e=this.rows.slice(0,t).map((u,f)=>this.renderRow(u,f)),n=(u)=>e[u]?.length??0,r=Math.max(1,this.maxItems),i=Math.max(0,Math.min(this.cursor,t-1));this.top=Math.min(this.top,i);let s=0;for(let u=this.top;u<=i;u++)s+=n(u);while(this.top<i&&s>r)s-=n(this.top),this.top+=1;let o=0;for(let u=this.top;u<e.length;u++)o+=n(u);while(this.top>0&&o+n(this.top-1)<=r)this.top-=1,o+=n(this.top);let a=[],c=this.top;while(c<e.length&&(c===this.top||a.length+n(c)<=r))a.push(...e[c]??[]),c+=1;return this.span=Math.max(1,c-this.top),a.push(...e[c]??[]),{lines:a.slice(0,r),above:this.top,below:e.length-c}}renderRow(t,e){if(t.kind==="rule")return[` ${this.p.dim("── Marketplaces ──────────")}`];return(t.kind==="extra"?t.extra.text(e===this.cursor&&this.focus==="lit",e):this.rowText(t,e)).split(`
673
+ `).map((r)=>r?wi(e,"row",r,this.pane):r)}rowText(t,e){let n=e===this.cursor&&this.focus!=="off",r=t.kind==="palette"?t.entry:t.kind==="all"?void 0:t.lead,i=this.color&&n&&this.focus==="lit"&&r!==void 0,{dim:s,bold:o}=this.p,a=(v)=>this.color?` ${Ku(uo(v),i?hr(v.foreground):$t)}`:"",c=!n?" ":i?`${hr(r.cursor)}${I.gutter}${$t} `:this.focus==="held"?this.color?`${this.p.dim(I.gutter)} `:" ":`${I.gutter} `,u=(v)=>i?`${c}${Vk(r.selection,r.foreground)} ${v} ${pe}`:`${c} ${v}`,f=(v)=>wi(e,"box",`${v?I.on:I.off} `,this.pane),l=(v)=>wi(e,"fold",`${v?I.opened:I.closed} `,this.pane);if(t.kind==="all")return u(`${f(this.everyone(this.rows).every((v)=>this.picked.has(v.name)))}Select all ${s(`(${t.count})`)}`);if(t.kind==="top"&&this.scope==="catalog"){let v=`(${t.count})${t.native?` ${t.native}`:""}`;return u(`${f(this.pickedIn(t.name)===t.count)}${o(t.name.padEnd(this.catalogPad))}${t.lead?a(t.lead):""}${this.color?" ":" "}${s(v)}`)}let d=this.rows[this.cursor],h=(v,S)=>this.color&&d?.kind==="palette"&&v?this.p.accent(o(S)):o(S);if(t.kind==="top"){let v=h(d?.kind==="palette"&&this.place.top(d.entry)===t.name,t.name),S=t.native?` ${s(t.native)}`:"",M=this.badge?.(t.name)??"";if(this.about){let x=this.about(t.name,this.under(t.name),this.filter.trim()?t.count:void 0);return[...e>0?[""]:[],u(`${wi(e,"fold",`${x.added?I.on:I.off} `,this.pane)}${v}${S}${M}`),...x.lines.map((N)=>u(` ${N}`))].join(`
674
+ `)}return u(`${l(t.expanded)}${v} ${s(`(${this.pickedIn(t.name)}/${t.count})`)}${S}${M}`)}if(t.kind==="catalog"){let v=d?.kind==="palette"&&Jl(d.entry,this.place)===bc(t.top,t.name),S=s(`(${this.pickedIn(t.top,t.name)}/${t.count})`),M=t.native?` ${s(t.native)}`:"";return u(`${this.lead()}${l(t.expanded)}${h(v,t.name)} ${S}${M}`)}let m=t.entry,p=this.indent(m),b=TS(m),$=this.color?b.padEnd(this.namePad-p.length):b,k=n?o($):$;return u(`${p}${f(this.picked.has(m.name))}${k}${a(m)}${this.note?.(m)??""}`)}}function Jp(t){let e=t.named[Math.floor(Math.random()*t.named.length)],n=t.catalogs[Math.floor(Math.random()*t.catalogs.length)];return e&&n?`${e.name} | ${n}`:""}class Xl{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 i8=5;class Yp{picked;list;scope;color;required;most;hint;field=new ps;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 Vo({entries:t.entries,picked:this.picked,scope:this.scope,maxItems:this.most,color:this.color,...t.onFocus?{onFocus:t.onFocus}:{}}),this.hint=new Xl(t.fx??"typewriter",()=>Jp(this.list),()=>this.redraw())}prompt(){return bi({input:this.input,output:this.output,modes:[Wn,yr]},async(t)=>{let e=new $p((r)=>t.write(r),()=>t.cols),n=()=>{return this.list.maxItems=Math.max(QC,Math.min(this.most,t.rows-i8)),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=wc(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{dim:t,accent:e,warn:n}=Ce(this.color),r=this.scope==="catalog"?"Catalogs":"Palettes";if(this.state==="submit")return[`${t("◇")} ${r} ${t(`· ${this.list.pickedCount()} picked`)}`];if(this.state==="cancel")return[`${t(`◇ ${r} · cancelled`)}`];let i=this.field.value,s=`${e("◆")} ${r} ${t(`(${this.list.matched()}/${this.list.total()} · ${this.list.pickedCount()} picked)`)}`,o=this.hint.text(),a=`${e("│")} ${i?`${i}_`:t(`Search…${o?` e.g. ${o}`:""}`)}`,{lines:c,below:u}=this.list.window(),f=c.length>0?c.map((p)=>`${e("│")} ${p}`):[`${e("│")} ${t(`No ${this.scope==="catalog"?"catalogs":"palettes"} match '${i}'`)}`];while(f.length<this.list.maxItems)f.push(e("│"));let l=u>0?`${e("│")} ${t(`↓ ${u} more`)}`:e("│"),d=this.scope==="catalog"?"":" · ←→ fold",h=this.scope==="catalog"?"continue":"install",m=this.state==="error"?`${e("└")} ${n(this.error)}`:`${e("└")} ${t(`↑↓ move${d} · space pick · type to filter · enter ${h} · esc cancel`)}`;return[s,a,...f,l,m]}}var s8=40,o8=60,a8=42,c8=94,u8=22,CS=40,jS=10,$c=3,l8=20,_S={title:"",lines:[],brief:""};function f8(t){let e=t.trim();if(e!==Y&&!e.includes("/")&&!e.startsWith("~"))return;try{return hn(e)}catch{return}}function Vp(t){return t===Y?"Built in":yt(t)?t:ot(t)}function Zp(t){return t.charAt(0).toUpperCase()+t.slice(1)}class Xp{picked;field=new ps;query=new ps;address=new ps;adds=new Map;removes=new Set;want=new Map;renew=new Set;updates;tuned;busy=new Map;failed=new Map;fetched=new Map;staging=new Set;refreshed=[];inflight=new Set;marketplaces;kept;installed;startup;io;order;color;p;hub;owns;input;output;maxItems=12;paint;list;inside;results;side="cards";showing="browse";landing;open;split=0;hint;screen;state="active";phase="browse";offset=0;started=!1;log=[];working="";stopped;beat=0;removing;adding;formError;leaving;goto;listing;loading=!1;loadError;help=!1;live;constructor(t){this.marketplaces=t.marketplaces,this.kept=t.kept,this.installed=new Set(t.installed),this.updates=new Set(t.updates??[]),this.tuned=new Set(t.tuned??[]),this.startup=t.startup,this.io=t.io,this.order=t.order??((e)=>e),this.color=t.color??!0,this.p=Ce(this.color),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),this.list=new Vo({entries:this.entries(),picked:this.picked,layout:"marketplaces",mode:"cards",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),badge:(e)=>this.badge(e),about:(e,n,r)=>this.about(e,n,r),tops:()=>this.tops(),heads:()=>this.heads(),onFocus:(e)=>this.focus(e)}),this.inside=new Vo({entries:[],picked:this.picked,layout:"marketplaces",mode:"inside",pane:"panel",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),pinned:()=>this.actions(),onFocus:(e)=>{if(this.side==="panel")this.focus(e)}}),this.inside.focus="off",this.results=new Vo({entries:[],picked:new Set,layout:"marketplaces",mode:"cards",color:this.color,maxItems:this.maxItems,heads:()=>[this.row({kind:"back"},!0)],extras:()=>this.found()}),this.follow(),this.hint=new Xl(t.fx??"typewriter",()=>Jp(this.list),()=>this.redraw());for(let e of t.due)this.update(e)}run(){let t=[...this.owns?[ql,Wn,pi]:[],yr,...gi()],e=this.owns?[]:[Wn,pi];return bi({input:this.input,output:this.output,modes:t,assume:e},async(n)=>{let r=new fs({write:(i)=>n.write(i),view:()=>this.state==="active"?{lines:this.view(),ticking:this.phase==="applying"||this.fetching()}: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()}})}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.values().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.removing){if(t==="esc")this.removing=void 0;else if(/^[yn]$/i.test(t))this.answer(t.toLowerCase()==="y");return}if(this.phase!=="browse"){this.steer(t);return}if(this.showing==="search"){this.searchKey(t);return}if(this.side==="form"){this.formKey(t);return}let e=this.side==="panel",n=e?void 0:this.focusedFound(),r=n?.kind==="new"||n?.kind==="search",i=wc(t,(e?this.inside:this.list).page());if(t==="enter")if(this.onAction())this.act();else if(e&&this.inside.foldable())this.inside.flip();else if(!e&&this.list.focusedRow()?.kind==="top")this.enter();else if(r)this.activate();else this.finish();else if((t==="esc"||t==="ctrl-u")&&this.field.value)this.clear();else if(t==="esc")if(e)this.back();else this.state="cancel";else if(t==="?")this.help=!0;else if(i!==void 0)this.move(i);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="right")if(e)this.inside.fold(!0);else if(r)this.activate();else this.enter();else if(t==="left"){if(e&&this.inside.outer())this.back();else if(e)this.inside.fold(!1)}else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(t===" ")if(this.onAction())this.act();else if(e)this.inside.pick();else this.activate();else if(t==="ctrl-r"){if(e)this.toggleRenew()}else if(this.field.key(t))this.typed()}searchKey(t){let e=wc(t,this.results.page());if(t==="enter"||t===" ")this.take(t==="enter");else if((t==="esc"||t==="ctrl-u")&&this.query.value)this.query.value="",this.searchTyped();else if(t==="esc"||t==="left")this.closeSearch();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==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(t==="ctrl-r")this.loadIndex();else if(this.query.key(t))this.searchTyped()}formKey(t){if(t==="esc"||t==="left")this.back();else if(t==="?")this.help=!0;else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Vu(this.hub,t==="tab"?1:-1))}else if(this.fetching())return;else if(t==="enter")this.submit();else if(this.address.key(t))this.edited()}openForm(){let t=this.field.value.trim();if(!this.address.value&&f8(t))this.address.value=t;this.side="form",this.list.focus="held"}edited(){this.formError=void 0,this.adding=void 0}submit(){let t=this.address.value.trim();if(!t){this.formError="type a repository or a folder";return}let e;try{e=hn(t)}catch(r){this.formError=r.message;return}let n=this.known(e);if(n){this.address.value="",this.reveal(n.id);return}this.adding=e,this.load(e)}fetching(){return this.adding!==void 0&&this.busy.has(this.adding)}reveal(t){if(this.back(),this.field.value)this.clear();this.list.select(`top ${t}`),this.enter()}take(t){let e=this.focusedFound();if(e?.kind==="back"){this.closeSearch();return}if(e?.kind==="state"){this.loadIndex();return}let n=e?.kind==="listed"?e.listed.source:void 0;if(n===void 0)return;let r=this.known(n);if(!r)this.landing=t?n:void 0,this.load(n);else if(t)this.closeSearch(),this.list.select(`top ${r.id}`);else if(this.adds.has(r.source))this.adds.delete(r.source),this.want.delete(r.source),this.reload()}openSearch(){let t=this.field.value.trim();if(t)this.query.value=t;if(this.showing="search",this.results.setFilter(this.query.value),this.results.refresh(),this.live&&!this.listing)this.loadIndex()}closeSearch(){this.showing="browse",this.landing=void 0,this.follow()}searchTyped(){this.results.setFilter(this.query.value)}loadIndex(){if(this.loading)return;this.loading=!0,this.loadError=void 0,this.redraw(),this.track(this.io.index()).then((t)=>{this.loading=!1,this.listing=t,this.results.refresh(),this.redraw()},(t)=>{this.loading=!1,this.loadError=t.message,this.results.refresh(),this.redraw()})}finish(){if(this.dirty())this.phase="review",this.offset=0}enter(){if(this.follow(),this.side==="panel")return!0;if(this.list.focusedRow()?.kind!=="top"||this.inside.size()===0)return!1;return this.side="panel",this.list.focus="held",this.inside.focus="lit",this.inside.refocus(),!0}back(){if(this.side==="form"&&this.adding!==void 0)this.staging.delete(this.adding);this.side="cards",this.list.focus="lit",this.inside.focus="off"}follow(t=!1){let e=this.list.focusedRow(),n=e?.kind==="top"?e.name:void 0;if(t||n!==this.open)this.open=n,this.inside.setEntries(n===void 0?[]:this.membersOf(n));if(this.side==="panel"&&this.inside.size()===0)this.back()}membersOf(t){return this.entries().filter((e)=>(et(e.name)??Y)===t)}pasted(t){if(this.phase!=="browse"||this.help||this.removing||this.leaving!==void 0)return;if(this.showing==="search")this.query.paste(t),this.searchTyped();else if(this.side==="form"){if(!this.fetching())this.address.paste(t),this.edited()}else this.field.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.removing;if(t.action==="wheel"){if(!t.sideways&&(i||this.phase!=="browse"))this.wheel(t.wheel,this.split>0&&t.col>=this.split);return}if(!r)return;if(t.action==="press"&&t.button==="left"){if(i&&r.kind==="row")this.point(r);else if(i&&r.kind==="form")this.openForm()}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.side===(r.pane?"panel":"cards"))this.move(r.step*(r.pane?this.inside:this.current()).page())}else if(r.kind==="hub"){if(i&&this.hub&&r.tab!==this.hub)this.leave(ay(r.tab))}else if(r.kind==="row"&&i)this.openRow(r,t.count)}}point(t){if(this.showing==="search"){this.results.point(t.at);return}if(t.pane){if(this.enter())this.inside.point(t.at);return}this.back(),this.list.point(t.at)}wheel(t,e){if(this.phase!=="browse"){this.scroll(t);return}if(this.showing==="search"){this.move(t,!1);return}if(e&&!this.enter())return;if(!e)this.back();this.move(t,!1)}openRow(t,e){if(this.showing==="search"){if(t.part==="box"||e===2)this.take(e===2)}else if(t.pane){if(this.onAction()){if(t.part==="box"||e===2)this.act()}else if(t.part==="box")this.inside.pick();else if(t.part==="fold")this.inside.flip();else if(e===2)this.inside.open()}else if(this.list.focusedRow()?.kind==="extra"){if(t.part==="box"||e===2)this.activate()}else if(t.part==="fold"||e===2)this.enter()}typed(){let t=this.field.value,e=this.list.focusedRow();if(this.list.setFilter(t),e?.kind==="top")this.list.select(`top ${e.name}`);if(this.inside.setFilter(t),this.follow(),t.trim()&&this.list.focusedRow()?.kind==="top"&&this.inside.matched()>0)this.enter();else if(t.trim())this.back()}clear(){this.field.value="";let t=this.list.focusedRow();if(this.inside.clear(),this.list.setFilter(""),t?.kind==="top")this.list.select(`top ${t.name}`);this.follow()}redraw(){if(this.state==="active")this.screen?.request()}focus(t){if(this.state!=="submit"&&this.state!=="cancel")this.paint?.(t)}track(t){this.inflight.add(t);let e=()=>this.inflight.delete(t);return t.then(e,e),t}active(){return[...this.marketplaces.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.marketplaces.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()])}reload(){this.list.setEntries(this.entries()),this.follow(!0)}tops(){return this.active().map((t)=>t.id)}marketplaceNamed(t){return this.active().find((e)=>e.id===t)}focusedMarketplace(){let t=this.list.focusedRow();return t?.kind==="top"?this.marketplaceNamed(t.name):void 0}current(){return this.showing==="search"?this.results:this.list}move(t,e=!0){(this.side==="panel"?this.inside:this.current()).move(t,e)}autoUpdate(t){let e=!(this.want.get(t.source)??t.auto);if(e===t.auto)this.want.delete(t.source);else this.want.set(t.source,e)}onAction(){return this.side==="panel"&&this.inside.focusedRow()?.kind==="extra"}act(){let t=this.inside.focusedRow(),e=this.focusedMarketplace(),n=t?.kind==="extra"?t.extra.action:void 0;if(!e||n===void 0)return;if(n==="update")this.update(e.source);else if(n==="auto")this.autoUpdate(e);else if(this.adds.has(e.source))this.adds.delete(e.source),this.want.delete(e.source),this.back(),this.reload();else this.removing=e}activate(){let t=this.list.focusedRow();if(t?.kind!=="extra"){this.list.pick();return}let e=t.extra.found;if(e?.kind==="new")this.openForm();else if(e?.kind==="search")this.openSearch()}remove(t){let e=this.tops().indexOf(t.id);this.removes.add(t.source),this.want.delete(t.source),this.back(),this.reload();let n=this.tops()[Math.min(e,this.tops().length-1)];if(n!==void 0)this.list.select(`top ${n}`)}known(t){return[...this.marketplaces,...this.adds.values()].find((e)=>qi(e.source,t))}load(t){let e=this.fetched.get(t);if(e){this.arrive(t,e);return}if(this.staging.add(t),this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Fetching…"),this.track(this.io.fetch(t)).then((n)=>{if(this.busy.delete(t),this.fetched.set(t,n),this.staging.delete(t))this.arrive(t,n);this.redraw()},(n)=>{this.busy.delete(t),this.staging.delete(t),this.failed.set(t,n.message),this.landing=void 0,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 marketplace at ${n.shown}`),this.landing=void 0;else this.stage(e);this.redraw()}focusedFound(){let t=this.current().focusedRow();return t?.kind==="extra"?t.extra.found:void 0}answer(t){let e=this.removing;if(this.removing=void 0,e&&t)this.remove(e)}stage(t){if(this.adds.set(t.source,t),this.reload(),this.adding!==void 0&&qi(this.adding,t.source)){this.address.value="",this.adding=void 0,this.reveal(t.id);return}if(this.list.select(`top ${t.id}`),this.landing!==void 0&&qi(this.landing,t.source))this.closeSearch();else this.results.refresh()}update(t){if(this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Updating…"),this.track(this.io.refresh(t)).then(({marketplace:e,refreshed:n,updates:r})=>{this.busy.delete(t),this.updates=new Set(r),this.marketplaces=this.marketplaces.map((i)=>i.source===t?e:i),this.refreshed.push(n),this.reload(),this.redraw()},(e)=>{this.busy.delete(t),this.failed.set(t,`Update failed: ${e.message}`),this.redraw()})}row(t,e=!1){return{key:t.kind==="listed"?`listed ${t.listed.source}`:t.kind,...e?{idle:e}:{},found:t,text:(n,r)=>this.foundLine(t,n,r)}}actions(){let t=this.open===void 0?void 0:this.marketplaceNamed(this.open);if(!t)return[];let{source:e}=t,n=yt(e),r=(i)=>({key:i,action:i,text:(s,o)=>this.actionLine(i,e,s,o)});return[...n&&!this.adds.has(e)?[r("update")]:[],...n?[r("auto")]:[],r("remove")]}actionLine(t,e,n,r){let[i,s]=this.actionText(t,e);return this.button(r,n,this.actionMark(t,e),i.padEnd(l8),s?` ${this.p.dim(s)}`:"",{pane:"panel",off:t==="update"&&this.busy.has(e),danger:t==="remove"&&!this.adds.has(e)})}button(t,e,n,r,i,s={}){let o=iy(this.p,`${n} ${r}`,s.off?"off":e?"focus":"idle",s.danger);return`${e?`${I.gutter} `:" "}${wi(t,"box",`${o}${i}`,s.pane)}`}actionMark(t,e){if(t==="update")return I.update;if(t==="auto")return I.auto;return this.adds.has(e)?I.undo:I.remove}actionText(t,e){let n=this.known(e);if(t==="update")return["Update now",this.busy.get(e)??(this.failed.has(e)?"Update failed":n?Zp(n.status):"")];if(t==="auto")return["Auto-update",this.want.get(e)??n?.auto?"on":"off"];return[this.adds.has(e)?"Undo add":"Remove marketplace",""]}actionAbout(t,e){if(t==="update")return["Update now",`Fetch ${Vp(e)} again now`];if(t==="auto")return["Auto-update","Fetch it on its own once a day and say what changed"];return this.adds.has(e)?["Undo add","Drop it before it is added"]:["Remove marketplace","Take it off your list — its installed palettes stay"]}actionVerb(t,e){if(t==="update")return"update";if(t==="auto")return this.want.get(e)??this.known(e)?.auto?"turn off":"turn on";return this.adds.has(e)?"undo add":"remove"}heads(){return[this.row({kind:"new"},!0),this.row({kind:"search"})]}matches(){let t=this.query.value.trim();return(this.listing?.marketplaces??[]).filter((e)=>!t||Kp(e,t))}found(){let t=this.matches();return t.length>0?t.map((e)=>this.row({kind:"listed",listed:e})):[this.row({kind:"state"})]}lit(t,e){return`${t?`${I.gutter} `:" "} ${e}`}status(t){return this.adds.has(t.source)?"Will add":this.busy.get(t.source)??(this.failed.has(t.source)?"Update failed":"")}about(t,e,n){let r=this.marketplaceNamed(t),i=e.filter((c)=>this.installed.has(c.name)).length,s=e.filter((c)=>this.picked.has(c.name)&&!this.installed.has(c.name)).length,o=e.filter((c)=>this.installed.has(c.name)&&!this.picked.has(c.name)).length,a=[...r&&n!==void 0?[`${n} of ${r.entries.filter((c)=>!c.default).length} match`]:[],...r&&n===void 0?[`${r.entries.filter((c)=>!c.default).length} available`]:[],...i>0||!r?[`${i} installed`]:[],...s>0?[`${s} to install`]:[],...o>0?[`${o} to remove`]:[],...r&&r.source!==Y&&!(this.adds.has(r.source)&&yt(r.source))?[Zp(r.status)]:[]];return{added:r!==void 0,lines:[this.p.dim(r?Vp(r.source):"Not added"),this.p.dim(a.join(" · "))]}}badge(t){let e=this.marketplaceNamed(t);if(!e)return"";return[yt(e.source)&&(this.want.get(e.source)??e.auto)?`${I.auto} auto-update`:"",this.status(e)].map((r)=>r?` ${this.p.dim(r)}`:"").join("")}foundLine(t,e,n){let r=(u)=>wi(n,"box",`${u} `),i=(u)=>u?` ${this.p.dim(u)}`:"";if(t.kind==="new")return this.button(n,e,"+","Add marketplace",i("owner/repo or a folder"));if(t.kind==="search")return this.button(n,e,I.search,"Search marketplace",i("find one on GitHub"));if(t.kind==="back")return` ${wi(n,"box",Du(this.p,"← Back",e))}
675
+ `;if(t.kind==="state"){let[u,f]=this.stateOf();return this.button(n,e,I.search,u,i(f))}let s=t.listed,o=this.known(s.source),a=this.failed.get(s.source),c=[`${I.star}${s.stars}`,o?this.addedNote(o):qt(s.palettes.length),this.busy.get(s.source)??""].filter(Boolean);return this.lit(e,`${r(o?I.on:I.off)}${s.id}${i(c.join(" · "))}${a?` ${this.p.error(a)}`:""}`)}stateOf(){let t=this.query.value.trim();return this.loading?["Loading the marketplace list…",""]:this.loadError?["The marketplace list did not load","space retries"]:!this.listing?["Load the marketplace list","space loads it"]:t?[`No marketplace matches "${t}"`,""]:["No marketplace yet",""]}addedNote(t){return this.adds.has(t.source)?"Will add":"Added"}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.isSubsetOf(this.installed)}mark(t){let e=this.tuned.has(t.name)?` ${this.p.warn(I.on)}`:"";if(!this.updates.has(t.name)||!this.installed.has(t.name))return e;return`${e}${this.renew.has(t.name)?` ${this.p.bold(`${I.update} update`)}`:` ${this.p.dim(I.update)}`}`}toggleRenew(){let t=this.inside,e=t.focusedRow(),n=(e?t.inside(e):[]).map((i)=>i.name).filter((i)=>this.updates.has(i)&&this.installed.has(i));if(n.length===0)return;let r=n.some((i)=>!this.renew.has(i));for(let i of n)if(r)this.renew.add(i);else this.renew.delete(i)}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:wc(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($c,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(`
676
+ `)),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))}}marketplaceChanges(){let t=[];for(let e of this.adds.values()){let n=e.source!==Y&&(this.want.get(e.source)??e.auto)?"updates on its own":"";t.push(`+ ${e.id} ${this.p.dim([e.source===Y?"The official marketplace":e.shown,qt(e.entries.filter((r)=>!r.default).length),n].filter(Boolean).join(" · "))}`)}for(let e of this.removes){let n=this.marketplaces.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.p.dim([n?.shown??ot(e),r.length>0?`its ${qt(r.length)} installed keep working`:""].filter(Boolean).join(" · "))}`)}for(let[e,n]of this.want){let r=this.marketplaces.find((i)=>i.source===e);if(r)t.push(`${I.auto} ${r.id} ${this.p.dim(n?"updates on its own from now":"stops updating on its own")}`)}return t}reviewLines(){let t=this.marketplaceChanges(),{names:e,dropped:n}=this.pending(),r=new Set(this.result().renew),i=this.entries().filter((c)=>r.has(c.name)),s=Math.max(0,...[...e,...n,...i].map((c)=>c.name.length)),o=(c,u)=>` ${c} ${u.name.padEnd(s)} ${this.p.dim(u.catalog??"")}`,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.p.bold("Marketplaces")} ${this.p.dim(`(${t.length})`)}`,...t.map((c)=>` ${c}`),""]:[],...a.length>0?[` ${this.p.bold("Palettes")} ${this.p.dim(`(${a.join(" · ")})`)}`,...e.map((c)=>o("+",c)),...n.map((c)=>o("-",c)),...i.map((c)=>o(I.update,c))]:[]]}summary(){let{names:t,dropped:e}=this.pending(),n=this.adds.size;return[n>0?`${n} marketplace${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=mn[this.beat%mn.length];t.push(` ${this.p.dim(`${e} ${this.working||"Working…"}`)}`)}else if(this.stopped)t.push("",...Ft(this.stopped.message,Math.max(20,this.columns()-6)).map((e,n)=>` ${n===0?this.p.error(I.miss):" "} ${e}`));return t}frame(t,e){let n=t-1,r=this.phase==="review",i=r?this.reviewLines():this.progressLines(),s=this.phase==="review"?`${this.p.bold("Review changes")}`:this.phase==="applying"?this.p.bold("Applying changes"):this.stopped?`${this.p.error(I.miss)} ${this.p.bold("Stopped")}`:`${this.p.bold(`${I.ok} Applied`)} ${this.p.dim(this.summary()?`(${this.summary()})`:"")}`,o=this.span(),a=Math.max(0,i.length-o),c=this.phase==="applying"?a:Math.min(this.offset,a);this.offset=c;let u=i.slice(c,c+o),f=i.length-c-u.length,l=[c>0?` ${this.more(-1,`↑ ${c} more`)}`:"",...u];while(l.length<o+1)l.push("");l.push(f>0?` ${this.more(1,`↓ ${f} more`)}`:"");let d=a>0?[["↑↓","scroll"]]:[],h=r?{badge:"BROWSE (APPLY)",keys:[...d,["enter","apply"]],right:["esc","back"]}:this.phase==="applying"?{badge:"BROWSE (APPLY)",note:"Keys wait until it ends",keys:[]}:{badge:"BROWSE (APPLY)",keys:d,right:["enter","close"]};return[...this.hub?[tt(em(this.hub,this.color),n,!1)]:[],tt(` ${s}`,n,!1),...l.map((m)=>tt(m,n,!1)),` ${this.keyBar(h,n-1)}`].slice(0,e).join(`
677
+ `)}keyBar(t,e){let n=`${Ve(this.p,t.badge)}${this.color?" ":" "}`,r=([a,c])=>sy(this.p,a,c),{note:i,keys:s,right:o}=t;for(;;){let a=`${n}${[t.lead??"",i?this.p.dim(i):"",...s.map(r)].filter(Boolean).join(" ")}`,c=o?r(o):"";if(B(a)+(o?3+B(c):0)<=e)return o?Rt(a,c,e):tt(a,e,!1);if(i)i=void 0;else if(s.length>2||!o&&s.length>1)s=s.toSpliced(-2,1);else if(o)o=void 0;else return tt(a,e,!1)}}more(t,e,n){return this.p.dim(Ye({kind:"page",step:t,...n?{pane:n}:{}},e))}counts(){if(this.showing==="search"){let i=[...this.loading?["Loading…"]:[],...this.listing?[`${this.matches().length} found`]:[],...this.listing?.offline?[`offline, from ${zo(this.listing.at)}`]:[]];return i.length>0?i.join(" · "):"on GitHub"}let t=this.busy.values().some((i)=>i==="Updating…")?"Updating… · ":"",e=this.list,n=this.removes.size,r=n>0?` · ${n} marketplace${n===1?"":"s"} to remove`:"";return`${t}${e.matched()}/${e.total()} · ${e.pickedCount()} picked${r}`}searchText(){let t=(this.showing==="search"?this.query:this.field).value;if(t)return`${t}_`;if(this.showing==="search")return this.p.dim("Search… a marketplace or a palette");let e=this.hint.text();return this.p.dim(`Search…${e?` e.g. ${e}`:""}`)}heading(){let t=this.showing==="search"?"Search marketplace":"Browse";return`${this.p.bold(t)} ${this.p.dim(`(${this.counts()})`)}`}searchBox(t){return this.framed(t,`${this.p.dim(I.search)} ${this.searchText()}`)}framed(t,e){let n=(i,s)=>this.p.dim(`${i}${"─".repeat(t-2)}${s}`),r=this.p.dim("│");return[n("╭","╮"),`${r} ${tt(e,t-4)} ${r}`,n("╰","╯")]}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":""}`}detail(t){let e=this.current().focusedRow();if(e?.kind==="extra")return e.extra.found?this.foundDetail(e.extra.found,t):_S;if(e?.kind!=="top")return _S;let n=this.marketplaceNamed(e.name);if(n)return this.marketplaceDetail(n,t);let r="In no marketplace you added — its installed palettes stay";return{title:this.p.bold(e.name),lines:Ft(r,t),brief:r}}foot(t){let e=this.inside.focusedRow();if(e?.kind==="catalog"){let c=this.inside.inside(e),u=c.filter((f)=>this.installed.has(f.name)).length;return[`${this.p.bold(e.name)}${e.native?` ${this.p.dim(e.native)}`:""}`,this.p.dim(`${qt(c.length)} · ${u} installed`),""]}if(e?.kind==="extra"&&e.extra.action){let[c,u]=this.actionAbout(e.extra.action,this.focusedMarketplace()?.source??"");return[this.p.bold(c),this.p.dim(u),""]}if(e?.kind!=="palette")return["","",""];let n=e.entry,r=Ka(n),i=`Gate ${Ne.length-r.length}/${Ne.length}`,s=n.pictures?.length??0,o=[...s>0?[`${s} picture${s===1?"":"s"}`]:[],...n.base?[`Base ${n.base}`]:[]].join(" · "),a=r.length>1?` · +${r.length-1}`:"";return[`${this.color?this.p.bold(`${hr(n.cursor)}${n.name}${$t}`):n.name} ${this.p.dim(this.paletteState(n))}`,r[0]===void 0?this.p.dim(`${i} · passes`):`${i} · ${this.p.bold(I.miss)} ${r[0]}${a}`,tt(this.p.dim(o),t)]}marketplaceDetail(t,e){let n=yt(t.source)?`Auto-update ${this.want.get(t.source)??t.auto?"on":"off"}`:Zp(t.status),r=this.failed.get(t.source),i=this.adds.has(t.source)?["Will add"]:this.want.has(t.source)?[`Auto-update turns ${this.want.get(t.source)?"on":"off"}`]:[];return{title:this.p.bold(t.id),lines:[...t.description?[...Ft(t.description,e).map((s)=>this.p.dim(s)),""]:[],...yt(t.source)?[]:[n],...r?Ft(r,e).map((s)=>this.p.error(s)):[],...i.length>0?["",...i.flatMap((s)=>Ft(s,e))]:[]],brief:[n,...i].join(" · ")}}foundDetail(t,e){if(t.kind==="new")return{title:this.p.bold("Add marketplace"),lines:this.formLines(e),brief:"enter adds a repository or a folder"};if(t.kind==="search"){let s=`The marketplaces anyone publishes on GitHub with the ${Di} topic, listed every half hour`;return{title:this.p.bold("Search marketplace"),lines:[...Ft(s,e),"",...Ft("enter opens the search",e)],brief:"enter searches the marketplaces on GitHub"}}if(t.kind==="back")return{title:this.p.bold("Back"),lines:["Back to your marketplaces"],brief:"enter goes back"};if(t.kind==="state"){let[s,o]=this.stateOf(),a=`Repositories with the ${Di} topic, read every half hour into one list`;return{title:this.p.bold("Marketplaces"),lines:[...Ft(a,e),"",...Ft([s,o].filter(Boolean).join(" · "),e),...this.loadError?Ft(this.loadError,e).map((c)=>this.p.error(c)):[],"",...Ft("Not listed yet? + Add marketplace adds one by its owner/repo",e)],brief:[s,o].filter(Boolean).join(" · ")}}let n=t.listed,r=this.known(n.source),i=r?this.addedNote(r):this.busy.get(n.source)??this.failed.get(n.source)??"space adds it, enter adds it and goes back";return{title:this.p.bold(n.id),lines:[this.p.dim(n.source),...Ft(n.about,e).map((s)=>this.p.dim(s)),this.p.dim([`★ ${n.stars}`,...n.updated?[`updated ${n.updated}`]:[]].join(" · ")),"",...Ft(i,e),"",...this.paletteLines(n,e)],brief:[qt(n.palettes.length),i].join(" · ")}}paletteLines(t,e){let n=Math.min(Math.max(...t.palettes.map((i)=>B(i.name))),Math.max(8,e-16)),r;return t.palettes.flatMap((i)=>{let s=i.catalog!==r&&i.catalog?[this.p.dim(i.catalog)]:[];r=i.catalog;let o=this.color?` ${Ku(uo(i))}`:"";return[...s,` ${tt(i.name,n)}${o}`]})}formLines(t){let e=this.side==="form",n=this.address.value,r=n?`${n}${e?"_":""}`:e?"_":this.p.dim("owner/repo or a folder"),i=this.formError??(this.adding===void 0?void 0:this.failed.get(this.adding)),s=this.adding!==void 0&&this.fetching()?[this.p.dim(`${mn[this.beat%mn.length]} Fetching ${Vp(this.adding)}…`)]:i?Ft(i,t).map((o)=>this.p.error(o)):[];return["Enter marketplace source:",this.p.dim("Examples:"),...["owner/repo (GitHub)","owner/repo#v1 (a tag or branch)","~/path/to/marketplace (a folder)"].map((o)=>this.p.dim(` · ${o}`)),"",...this.framed(t,r).map((o)=>Ye({kind:"form"},o)),...s.length>0?["",...s]:[]]}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.removing)return{badge:"BROWSE",lead:`Remove ${this.removing.id}? Its installed palettes stay installed`,keys:[["y","remove"],["n","keep"]],right:["esc","back"]};if(this.showing==="search")return{badge:"SEARCH",keys:[...this.searchKeys(),...this.query.value?[["bksp","edit"]]:[],["?","keys"]],right:this.query.value?["esc","clear search"]:["esc","back"]};if(this.side==="form")return{badge:"BROWSE (ADD)",keys:[...this.fetching()?[]:[["enter","add"],...this.address.value?[["bksp","edit"]]:[]],["?","keys"]],right:["esc","cancel"]};let t=this.field.value,e=this.dirty()?[["enter","apply"]]:[],n=[...t?[["bksp","edit"]]:[],["?","keys"]];return{badge:t?"BROWSE (FILTER)":"BROWSE",keys:[...this.side==="panel"?this.panelKeys(e):this.cardKeys(e),...n],right:t?["esc","clear filter"]:this.side==="panel"?["esc","back"]:["esc","cancel"]}}panelKeys(t){let e=this.inside,n=e.focusedRow();if(n?.kind==="extra"&&n.extra.action)return[["enter",this.actionVerb(n.extra.action,this.focusedMarketplace()?.source??"")]];if(n?.kind==="catalog"&&e.foldable())return[n.expanded?["←","close"]:["→","open"],["space","pick"]];let r=n?.kind==="palette"&&this.updates.has(n.entry.name)&&this.installed.has(n.entry.name);return[["space","pick"],...r?[["ctrl+r",this.renew.has(n.entry.name)?"keep":"update"]]:[],...t]}searchKeys(){let t=this.focusedFound();if(t?.kind==="back")return[["enter","back"]];if(t?.kind==="state")return this.loading?[]:[["space","load"]];let e=t?.kind==="listed"?t.listed.source:void 0;if(e===void 0)return[];let n=this.known(e);if(!n)return[["space","add"],["enter","add and go back"]];return[...this.adds.has(n.source)?[["space","undo"]]:[],["enter","go to it"]]}cardKeys(t){let e=this.list.focusedRow();if(e?.kind==="extra")return[["enter","open"]];if(e?.kind!=="top")return t;return[...this.inside.size()>0?[["→","open"]]:[],["space","pick"]]}columns(){return(this.output??process.stdout).columns??100}rows(){return(this.output??process.stdout).rows??24}fitItems(t){let e=Math.max($c,this.rows()-t);this.maxItems=e,this.list.maxItems=e,this.results.maxItems=e}view(){let t=this.draw().split(`
678
+ `);return Array.from({length:this.rows()},(e,n)=>t[n]??"")}small(t,e,n){return`Needs ${CS}×${n} — now ${t}×${e}
679
+ ${this.p.dim("esc cancels")}`}draw(){let t=this.columns(),e=this.rows();if(t<CS||e<jS)return this.small(t,e,jS);if(this.phase!=="browse")return this.frame(t,e);this.follow();let n=t>=c8,r=t-1,i=e>=u8?[` ${this.heading()}`,...this.searchBox(t-3).map((d)=>` ${d}`)]:[Rt(` ${this.p.dim(I.search)} ${this.searchText()}`,this.p.dim(this.counts()),r)],s=i.length+3+(n?0:1)+(this.hub?1:0);if(e<s+$c)return this.small(t,e,s+$c);this.fitItems(s);let o=this.current().window(),a=(d)=>yo(d).flatMap((h)=>h.sequence?[]:[h.text]).join("").trimEnd(),c=Math.max(0,...o.lines.map((d)=>B(a(d))+3)),u=n?Math.min(o8,r-a8-1,Math.max(s8,c)):r;this.split=n?u+1:0;let f=!n&&this.side!=="cards"?this.panel(r-1,this.maxItems+3).map((d)=>` ${d}`):this.cards(o,n,u,r),l=[...this.hub?[tt(em(this.hub,this.color),r,!1)]:[],...i.map((d)=>tt(d,r,!1)),...f,` ${this.keyBar(this.footer(),r-1)}`];return(this.help?this.helpBox(l,t,e,l.length-f.length-1):l).join(`
680
+ `)}cards({lines:t,above:e,below:n},r,i,s){let o=t.map((u)=>` ${u}`);while(o.length<this.maxItems)o.push("");let a=[e>0?` ${this.more(-1,`↑ ${e} more`)}`:"",...o,n>0?` ${this.more(1,`↓ ${n} more`)}`:""];if(!r)return[...a.map((u)=>tt(u,i,!1)),tt(` ${this.p.dim(this.detail(i-2).brief)}`,i,!1)];let c=this.panel(s-i-1,a.length);return a.map((u,f)=>`${tt(u,i)} ${c[f]??""}`)}panel(t,e){let n=this.side!=="cards",r=(S)=>n?this.p.accent(S):this.p.dim(S),i=t-4,s=(S)=>`${r("│")} ${tt(S,i)} ${r("│")}`,o=this.detail(i),a=n?this.p.accent(o.title):o.title,c=e-2;if(this.current().focusedRow()?.kind!=="top"){let S=o.lines.length>c?[...o.lines.slice(0,c-1),this.p.dim("…")]:o.lines.slice(0);while(S.length<c)S.push("");return[this.edge(t,"top",a,"",n),...S.map(s),this.edge(t,"bottom","","",n)]}let u=this.inside.pins(),f=u.length>0?u.length+1:0,l=n?this.foot(i):[],d=l.length>0&&c-1-f-(l.length+1)>=$c?l:[],h=f+(d.length>0?d.length+1:0),m=o.lines.slice(0,Math.max(0,c-2-h));this.inside.maxItems=Math.max(1,c-m.length-1-h);let{lines:p,above:b,below:$}=this.inside.window(),k=p.length>0?p:[this.p.dim(" No palettes yet")];while(k.length<this.inside.maxItems)k.push("");let v=$>0?this.more(1,`↓ ${$} more`,"panel"):"";return[this.edge(t,"top",a,"",n),...m.map(s),s(b>0?this.more(-1,`↑ ${b} more`,"panel"):""),...k.map(s),...h>0?[this.edge(t,"mid","",v,n)]:[],...d.map(s),...d.length>0&&f>0?[this.edge(t,"mid","","",n)]:[],...u.map(s),this.edge(t,"bottom","",h>0?"":v,n)]}edge(t,e,n,r,i){let s=(l)=>i?this.p.accent(l):this.p.dim(l),[o="",a=""]=[...Bt(2,e)],c=n?` ${tt(n,t-8,!1)} `:"",u=r?` ${r} `:"",f=Math.max(0,t-3-B(c)-B(u)-(r?1:0));return`${s(`${o}─`)}${c}${s("─".repeat(f))}${u}${s(`${r?"─":""}${a}`)}`}helpRows(){if(this.showing==="search")return[["Move","↑↓ home end pgup pgdn"],["Filter","Any text · bksp · ctrl-u clears"],["Add","space adds it · again to undo"],["","enter adds it and goes back to its card"],["Reload","ctrl+r the list, which GitHub fills every half hour"],["Back","← esc · ← Back"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]];return[["Move","↑↓ home end pgup pgdn"],["Open","→ enter · a marketplace into the panel, a catalog"],["Back","← esc · from the panel to the marketplaces"],["Pick","space · a palette, a catalog, a marketplace"],["Filter","Any text · bksp · ctrl-u clears"],["Marketplace","↓ below its palettes, to its own actions"],["","enter updates it, turns auto-update on or off, removes it"],["Add","enter on + Add marketplace · a repository or a folder, in the panel"],["Search","enter on Search marketplace · finds one on GitHub"],["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(),s=Math.max(...i.map(([l])=>l.length))+3,o=Math.min(e-2,6+s+Math.max(...i.map(([,l])=>B(l)))),a=Math.floor((e-o)/2),c=`│${" ".repeat(o-2)}│`,u=[`╭─ Help ${"─".repeat(o-9)}╮`,c,...i.map(([l,d])=>`│${tt(` ${this.p.bold(l.padEnd(s))}${d}`,o-4)} │`),c,`╰${"─".repeat(o-2)}╯`],f=Math.max(0,Math.min(Math.max(r,Math.floor((n-u.length)/2)),n-1-u.length));return t.map((l,d)=>{let h=u[d-f];return h===void 0?l:`${Xk(l,a)}${h}`})}}import{existsSync as T6}from"node:fs";import{existsSync as Jc,mkdirSync as g6,readFileSync as rb}from"node:fs";import{dirname as b6}from"node:path";class be extends Error{}import{closeSync as F5,mkdtempSync as L5,openSync as C5,readSync as j5,rmSync as uM}from"node:fs";import{homedir as _5,tmpdir as B5}from"node:os";import{join as lM}from"node:path";import{readFileSync as d8}from"node:fs";var St={pitch:25,cols:22,rows:9,height:13},$s={cols:25,rows:21},Pe={cols:10,rows:3,pitch:12,top:4},Oe=Pe.top+Pe.rows+1,h8=1073741824,ig=2147483648,m8=-1073741826,p8=1600,g8=56,b8=4,BS=20,w8=50,GS=[["space","unfolds a set of ×N"],["o","opens the artwork 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 sg(t){return Math.max(0,Math.floor((t-1)/Pe.pitch))}function vr(t,e){let n=e-Oe-2;return{perRow:Math.max(1,Math.floor((t-1)/St.pitch)),rowsVis:Math.max(1,Math.floor(n/St.height)),height:n}}function nf(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=d8(t.path).toString("base64")}catch{return}let r=n.match(/.{1,4096}/g)??[""];return r.map((i,s)=>{let o=s<r.length-1?1:0;return s===0?`\x1B_Ga=t,f=100,i=${t.id},m=${o},q=2;${i}\x1B\\`:`\x1B_Gm=${o},q=2;${i}\x1B\\`}).join("")}function YS(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 og(t){return`\x1B_Ga=d,d=i,i=${t},p=${t},q=2\x1B\\`}function xc(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}var At=wt("bold"),W=wt("dim"),Sc=wt("ok"),Kn=wt("warn"),yc=hr,ef=Jh,tg=!1;function rf(t){return tg=!0,t.beat}function Zo(t){return mn[rf(t)%mn.length]}function Et(t){return B(t)}function eg(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 $i(t){return Vi(t)}function ag(t){return`${wt("reverse")}${Vi(t)}`}function ki(t,e,n,r){return n?[[`${I.link} `,r,void 0,{kind:"link",url:n}],[t,e,n]]:[[t,e]]}function Qp(t){let e=Qh(t);return e?{kind:"key",key:e}:void 0}function ks(t){return t.reduce((e,[n])=>e+Et(n),0)}function $8(t,e){let n=[],r=e;for(let[i,s,o,a]of t){let c=Et(i);if(c<=r){n.push([i,s,o,a]),r-=c;continue}n.push([`${eg(i,r)}…`,s,o,a]);break}return n}class tf{parts=[];cols;constructor(t){this.cols=t}put(t,e,n="",r,i){let s=e.replace(/\p{Cc}/gu,"");return this.parts.push({col:t,text:s,sgr:n,...r?{link:r}:{},...i?{spot:i}:{}}),t+Et(s)}run(t,e){let n=t;for(let[r,i,s,o]of e)n=this.put(n,r,i,s,o);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 s=i??(r?{kind:"link",url:r}:void 0),o=e>=0&&e<this.cols?Et(eg(n,this.cols-e)):0;return s&&o>0?[{row:t,col:e,width:o,height:1,target:s}]:[]})}right(t,e){this.run(t-ks(e),e)}center(t,e){this.run(Math.floor((t-ks(e))/2),e)}render(){let t="";for(let{col:e,text:n,sgr:r,link:i,hidden:s}of this.parts){if(s||e>=this.cols||e<0)continue;let o=eg(n,this.cols-e);t+=`\x1B[${e+1}G${r}${zu(o,i)}${r?Se:""}`}return t}}function k8(t){return t.replace(/_\([^)]*\)?$/,"")}function VS(t){return[`${t.reduced?"↓":""}${t.width}×${t.height}`,Math.max(t.width,t.height)<p8?Kn:W]}function Ec(t,e,n){let r=[...n.keys??[]],i=n.lead,s=n.right,o=()=>{let u=[...i?[ks(i)]:[],...r.map(([l,d])=>Et(l)+1+Et(d))];return(n.badge?Et(n.badge)+4:0)+u.reduce((l,d)=>l+d,0)+3*Math.max(0,u.length-1)+(s?3+Et(s[0])+1+Et(s[1]):0)};while(o()>e)if(r.length>2)r.splice(-2,1);else if(s)s=void 0;else if(r.length>1)r.splice(-2,1);else break;if(i&&o()>e)i=$8(i,Math.max(0,ks(i)-(o()-e)-1));let a=0;if(n.badge)a=t.put(0,` ${n.badge} `,wt("pill"))+2;if([...i?[i]:[],...r.map(([u,f])=>[[u,At,void 0,Qp(u)],[` ${f}`,W,void 0,Qp(u)]])].forEach((u,f)=>{a=t.run(a+(f?3:0),u)}),s){let u=Qp(s[0].split(" ")[0]??"");t.right(e,[[s[0],At,void 0,u],[` ${s[1]}`,W,void 0,u]])}}function y8(t,e){if(t==="d")return W;if(t==="b")return At;if(t==="s")return ef(e.colors.selection);if(t==="c")return ef(e.colors.cursor);let n=/^([BK]?)(\d+)$/.exec(t);if(!n)return"";let r=Number(n[2]);if(n[1]==="K")return`${Vi(0)}${Jk(r)}`;return`${n[1]==="B"?At:""}${Vi(r)}`}function v8(t,e,n,r,i){let s=Vt.indexOf(Xi(r.scene)),o=Vt.flatMap((c,u)=>[...u?[[" ",""]]:[],[c.name,u===s?At+i:W,void 0,{kind:"scene",scene:u}]]),a=ks(o)<=n;t?.run(e,a?o:[[Xi(r.scene).name,At+i],[` ${s+1}/${Vt.length}`,W]])}function S8(t,e,n,r,i,s,o){let{ansi:a,cursor:c}=s.colors;v8(t[e-2],n,r,s,o);let u=r<Hy?3:4;if(r>=56)u=Math.min(7,Math.floor((r+1)/8)-1);let f=n;for(let d=0;d<8;d++)f=(t[e]?.put(f,"▀".repeat(u),yc(a[d]??c)+ef(a[d+8]??c))??f)+1;let l=e+2;for(let d of Xi(s.scene).lines){let h=So(d,r);if(!h)continue;if(l>i)return;t[l]?.run(n,h.map(([m,p])=>[m,y8(p,s)])),l++}}function E8(t,e,n){let r=[[]];for(let o of t){let a=r[r.length-1];if(a.length===0||Et([...a,o].join(" "))<=e)a.push(o);else if(r.length<n)r.push([o]);else break}let i=r.reduce((o,a)=>o+a.length,0),s=r[r.length-1];while(i<t.length&&s.length>0&&Et([...s,`+${t.length-i}`].join(" "))>e)s.pop(),i--;if(i<t.length)s.push(`+${t.length-i}`);return r.flatMap((o)=>o.length>0?[o.join(" ")]:[])}function US(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function M8(t,e,n){return t.flatMap((r,i)=>[...i>0?[[" ",""]]:[],[r,""],...(e[r]??[]).flatMap((s)=>[[" ",""],...ki(s.kind,"",s.url,n)])])}function x8(t,e,n,r,i){let s=r.info,o=s?.artists??[],a=$i(r.tiles[r.focus]?.siteAnsi??r.siteAnsi);[["Post",s?.page?ki(US(s.page),"",s.page,a):[["—",W]]],["Source",s?.source?ki(US(s.source),"",s.link,i):[["—",W]]],["Artist",o.length>0?M8(o,s?.profiles??{},i):[["—",W]]]].forEach(([u,f],l)=>{t[e+l]?.put(n,u,W),t[e+l]?.run(n+12,f)})}function O8(t,e,n,r,i,s){let o=s.info,a=s.tiles[s.focus];if(!o||!a)return;let c=s.shown?.id===a.key?s.shown:void 0,u=n+12,f=Math.max(12,r-12),l=[`${a.width}×${a.height}${o.ext?` ${o.ext.toUpperCase()}`:""}`,...c?[jl(c.bytes)]:[]].join(" · "),d=[o.rating??"—",a.score>0?`★${a.score}`:"",o.posted??""].filter(Boolean).join(" · "),h=(b,$)=>b.length>0?E8(b,f,$).map((k)=>[[k,""]]):[[["—",W]]],m=[["Characters",h(o.characters,2)],["Series",h(o.series,1)],["Tags",h(o.tags,3)],["Rating",[[[d,d==="—"?W:""]]]],["File",[[[l,""],...c?[[" ",""]]:[],...c?ZS(c):[]]]],["Uploader",[[o.uploader?[o.uploader,""]:["—",W]]]]],p=e;for(let[b,$]of m){if(p+$.length-1>i)return;t[p]?.put(n,b,W);for(let k of $)t[p]?.run(u,k),p++}}var P8=["Size","Position","Opacity"],I8=[0,3,6];function R8(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 A8(t){return t.toFixed(2)}function N8(t,e,n,r,i,s){let o=i.tuning;if(!o)return;let a=i.tiles[i.focus];t[e-3]?.run(n,[[i.palette,At+s],[" Background",W],...a?[[" · ",W],...ki(`${a.site} ${a.id}`,W,a.page||void 0,$i(a.siteAnsi))]:[]]);let c=Math.max(8,r-n-21),u=20,f=Math.max(100,o.fill);for(let[l,d]of P8.entries()){let h=e+I8[l],m=o.field===l,p=m?At:W;if(m)t[h]?.put(n,"▶",s,void 0,{kind:"field",field:l});t[h]?.put(n+2,d,p,void 0,{kind:"field",field:l});let b;if(l===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?At+s:W)}b=Jt[i.tune.at-1]??"center"}else{let $;if(l===0){let{size:k}=i.tune;$=k==="fill"?c-1:Math.floor((k-u)*(c-1)/(f-u+1)),b=k==="fill"?"fill":`${k}%`}else $=Math.floor(Math.round(i.tune.opacity*100)*(c-1)/100),b=A8(i.tune.opacity);$=Math.max(0,Math.min(c-1,$)),t[h]?.run(n+12,[["━".repeat($),s],["●",At],["─".repeat(c-1-$),W]]),t[h]?.mark(n+12,c,{kind:"track",field:l})}if(t[h]?.right(r-2,[[b,p]]),R8(i,l))t[h]?.put(r-1,"↺",m?At+s:W)}}function T8(t,e,n,r,i,s){t[e]?.put(n,`╭${"─".repeat(i-2)}╮`,s);for(let o=e+1;o<e+r-1;o++)t[o]?.put(n,"│",s),t[o]?.put(n+i-1,"│",s);t[e+r-1]?.put(n,`╰${"─".repeat(i-2)}╯`,s)}function ng(t,e=t.site,n=t.siteAnsi){return[` ${e} `,ag(n)]}function vc(t){return`${Z[Math.floor(t/Wr)]?.name??"local"} ${t%Wr}`}function kc(t,e,n){let r=Z[Math.floor(e/Wr)],i=vc(e),s=t.indexOf(i);if(!r||s===-1)return[[t,n]];return[[t.slice(0,s),n],...ki(i,n,r.pageUrl(e%Wr),$i(r.ansi)),[t.slice(s+i.length),n]].filter(([a])=>a!=="")}function H8(t,e,n){let r=[{name:"all",moved:!1},...Z].flatMap((s,o)=>{let a=`${s.name}${s.moved?"*":""}`,[c,u]=s.name===n.site?ng(n,a):[` ${a} `,W],f=[c,u,void 0,{kind:"site",tab:o}];return o?[[" ",""],f]:[f]}),i=ks(r)<=e;t.run(0,i?r:[ng(n)])}function F8(t,e,n,r){if(n.chips.length===0)return;let i=[["tags ",W]],s=Et("tags "),o=n.chips.length;for(let[a,c]of n.chips.entries()){let u=` ${a+1} ${c.name} `;if(s+Et(u)+1>e-2)break;i.push([u,c.on?`${wt("reverse")}${r}`:W,void 0,{kind:"chip",index:a}],[" ",""]),s+=Et(u)+1,o--}if(o>0)i.push([`+${o}`,W]);t.run(0,i)}function L8(t,e,n,r,i){t[Oe-1]?.put(0,"─".repeat(n-1),W);let s=t[Pe.top-1],o=sg(n),a=r.held.length>o?Math.max(0,o-1):r.held.length;for(let[c,u]of r.held.slice(0,a).entries()){let f=c*Pe.pitch,l=u.up?At:"";if(s.run(f+1,u.page?ki(String(u.id),l,u.page,$i(u.ansi)):[["● ",$i(u.ansi)],[String(u.id),l]]),u.up)for(let d=0;d<Pe.rows;d++)t[Pe.top+d]?.put(f,"▌",i);if(u.thumb)e.push({id:h8+c,path:u.thumb,row:Pe.top,col:f+1,cols:Pe.cols,rows:Pe.rows,z:-1})}if(a<r.held.length)s.put(a*Pe.pitch+1,`+${r.held.length-a}`,W)}function C8(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"}`,W);return}let i=t.run(0,[["⌕ ",r,void 0,{kind:"query"}],[n.tag||"Nothing yet — / searches, ctrl+v pastes a picture",n.tag?"":W,void 0,{kind:"query"}]]),s=Ti.filter((c)=>!n.block.includes(c)),o=Z.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("+")],...s.length>0?[`allows ${s.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("+")}`]:[],...o.length>0?[`all skips ${o.join("+")}`]:[]];if(t.put(i,` ${a.join(" ")}`,W),n.total>0||!n.searching){let c=[[`${n.tiles.length}/${n.checked}`,""]];if(n.checked<n.total)c.push([` of ${n.total}`,W]);t.right(e,c)}}function ZS(t){if(t.cut==="on")return[[`Cut out · ${t.clear}% transparent`,Sc]];if(t.cut==="off")return[["Opaque · x cuts out",Kn]];if(t.cut==="failed")return[["Opaque · no cut-out",Kn]];return[t.clear>0?[`${t.clear}% transparent`,Sc]:["Opaque",Kn]]}function WS(t){return t.site==="all"?"any site":t.site}function rg(t,e){if(t.installing!==void 0)return kc(`${Zo(t)} Installing ${t.palette} ← ${vc(t.installing)}`,t.installing,Kn);if(t.hint)return[[t.hint,Sc]];if(t.error)return[[t.error,Kn]];if(t.waiting!==void 0)return[[`${t.slow??t.site} asked to slow down · ${t.waiting}s`,Kn]];if(t.fetching){let{id:n,got:r,size:i}=t.fetching;return kc(`${Zo(t)} Fetching ${vc(n)} · ${_l(r,i)}`,n,Kn)}if(t.cutting!==void 0)return kc(`${Zo(t)} Cutting out ${vc(t.cutting)}`,t.cutting,Kn);if(t.preparing!==void 0)return kc(`${Zo(t)} Preparing ${vc(t.preparing)}`,t.preparing,Kn);if(e)return[e];if(t.saved)return kc(t.saved.text,t.saved.key,Sc);if(t.note)return[[t.note,W]];return}function XS(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 QS(t,e){return t.ranking?`${e}${t.ranking.done}/${t.ranking.total}`:""}function j8(t,e,n,r,i){let{background:s,cursor:o,selection:a}=r.colors,{ranking:c}=r,u=c?Math.round(n*c.done/c.total):-1,f=Math.max(6,Math.round(n*0.22)),l=rf(r)%(BS*2)/BS,d=Math.round((n-f)*(0.5-0.5*Math.cos(Math.PI*(l<1?l:2-l)))),h=Nt(s,o,i),m=Nt(s,Nt(a,s,0.15),i),p=Array.from({length:n},($,k)=>{let v=(u>=0?k<u:k>=d&&k<d+f)?h:m;return k===0||k===n-1?Nt(v,s,0.55):v}),b=0;for(let $=1;$<=n;$++)if($===n||p[$]!==p[b])t?.put(e+b," ".repeat($-b),ef(p[b])),b=$}function _8(t,e,n,r,i){let{background:s,foreground:o}=i.colors,a=i.loaderFrom===void 0?0:Math.min(1,(rf(i)-i.loaderFrom)/b8),c=e+(n>=5?Math.floor((n-5)/2):0);t[c]?.center(r,[[XS(i),At+yc(Nt(s,o,a))],[QS(i," "),yc(Nt(s,Nt(o,s,0.45),a))]]);let u=Math.min(g8,r-8);if(j8(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:f,arrived:l},d)=>[...d?[[" · ",yc(Nt(s,o,0.25*a))]]:[],[f,yc(Nt(s,l?Nt(o,s,0.2):o,l?a:0.32*a))]]))}function B8(t,e,n,r,i,s){if(i<=r)return;let o=Math.max(1,Math.round(r*r/i)),a=Math.max(0,Math.min(r-o,Math.round(n.scroll*r/i)));for(let c=0;c<r;c++){let u=c>=a&&c<a+o;t[Oe+c]?.put(e-1,u?"┃":"│",u?s:W)}}function G8(t,e,n){if(e)return[`${Zo(t)} ${XS(t)}${QS(t," · ")}`,W];let r=n.filter((s)=>!s.missing),i=r.filter((s)=>s.thumb).length;return i<r.length?[`${Zo(t)} Loading thumbnails · ${i}/${r.length}`,W]:void 0}function U8(t,e,n,r,i,s,o){let{perRow:a,rowsVis:c,height:u}=vr(r,i);C8(t[0],r,s,o),H8(t[1],r,s),F8(t[2],r,s,o),L8(t,e,r,s,o);let f=t.map((R,T)=>T>=Oe&&T<Oe+u?R:void 0),l=Math.floor(s.scroll/St.height),d=Math.floor((s.scroll+u-1)/St.height),h=[];for(let R=l;R<=d;R++){let T=Oe+R*St.height-s.scroll;for(let _=0;_<a;_++){let K=R*a+_,G=_*St.pitch,L=s.tiles[K];if(!L)continue;h.push(L);let gt=Math.max(T,Oe),Xt=Math.min(T+St.height,Oe+u);if(Xt>gt)n.push({row:gt,col:G,width:St.pitch-1,height:Xt-gt,target:{kind:"tile",index:K}});let it=K===s.focus;if(it)T8(f,T,G,St.height,St.pitch-1,o);let Ar=T+1,We=Math.max(Ar,Oe),Sn=Math.min(Ar+St.rows,Oe+u);if(L.thumb&&Sn>We)e.push({id:L.key,path:L.thumb,row:We,col:G+1,cols:St.cols,rows:Sn-We,...Sn-We<St.rows?{crop:We-Ar}:{},z:-1});let Hs=[...s.installed.includes(L.key)?[["✓ ",Sc]]:[],...L.page||s.site!=="all"?ki(String(L.id),it?At:"",L.page||void 0,$i(L.siteAnsi)):[["● ",$i(L.siteAnsi)],[String(L.id),it?At:""]],[" ",""],VS(L)],tu=St.cols-(L.mates.length>0?1:0);if(f[T+10]?.run(G+1,ks(Hs)>tu?Hs.map(([Qf,td,ed])=>[Qf.replace(/^(\S) $/,"$1"),td,ed]):Hs),L.mates.length>0)f[T+10]?.put(G+St.cols,"≈",o);f[T+11]?.put(G+1,L.artist?k8(L.artist).slice(0,St.cols-8):"—",W);let Ei=[];if(L.score>0)Ei.push([`★${L.score}`,W]);if(L.variants>1)Ei.push([` ×${L.variants}`,o]);if(Ei.length>0)f[T+11]?.right(G+St.cols+1,Ei)}}let m=Math.ceil(s.tiles.length/a)*St.height;B8(t,r,s,u,m,o);let p=Math.max(Oe,Oe+m-s.scroll),b=Oe+u-p,$=s.searching&&b>=2;if($)_8(f,p,b,r-1,s);let k=s.searching&&s.tiles.length===0;if(k&&!s.error){let[R,T]=GS[Math.floor(rf(s)/w8)%GS.length];t[i-2]?.run(0,[["Tip ",W],[R,At],[` ${T}`,W]])}let v=s.top*a,S=s.tiles.length-(s.top+c)*a,M=[...v>0?[`↑ ${v} above`]:[],...S>0?[`↓ ${S} more`]:[]];if(M.length>0)t[i-2]?.put(0,M.join(" "),W);if(!s.searching&&s.tiles.length===0&&!s.error&&s.tag)t[Oe+1]?.put(0,s.preset==="cutouts"?`No transparent cutouts of ${s.tag} on ${WS(s)} — c searches every post, tab tries ${s.nextSite}`:`No posts of ${s.tag} on ${WS(s)} — tab tries ${s.nextSite}`,W);let x=G8(s,$,h),N=rg(s,x);return Ec(t[i-1],r,{badge:"IMAGE SEARCH",lead:N,keys:k&&N?.[0]===x?[]:[["←↑↓→","move"],["enter","try on"],["tab","site"],["ctrl+v","picture"],["s","settings"],["/","search"],["?","keys"]],right:["esc","back"]}),$}function W8(t,e,n,r,i,s){let o=i.tiles[i.focus];if(!o)return;let a=i.shown?.id===o.key?i.shown:void 0,c=[ng(i,o.site,o.siteAnsi),[" ",""],...ki(String(o.id),At,o.page||void 0,$i(o.siteAnsi)),[" ",""],VS(o)];if(o.score>0)c.push([` · ★${o.score}`,W]);if(a)c.push([` · ${jl(a.bytes)}`,W]);if(a){if(c.push([" ",""],...ZS(a)),i.coloring==="original")c.push([" · own colors",W])}if(t[0]?.run(0,c),o.mates.length>0)t[0]?.right(n,[["≈ ",s],[o.mates.join(" "),W]]);if(x8(t,1,2,i,s),i.tuning)N8(t,8,2,2+Math.min(n-4,60),i,s);else if(i.details)O8(t,5,2,Math.min(n-4,Math.max(48,Math.floor(n*0.55))),r-2,i);else S8(t,7,2,n-4,r-2,i,s);if(i.shown)e.push({id:ig+i.shown.id,path:i.shown.path,row:0,col:0,cols:n,rows:r,z:m8});if(i.tuning){Ec(t[r-1],n,{badge:"IMAGE EDIT",lead:rg(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=rg(i);Ec(t[r-1],n,{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 K8=[["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"]],z8={grid:[["Move","←↑↓→ j k home end pgup pgdn"],["Try on","enter"],["Site",`tab shift+tab all, ${Z.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 artwork page in a browser · O the post page"],["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",`⇧←→ ${Vt.map((t)=>t.name.toLowerCase()).join(", ")}`],["Cut out","x the background off or on, on an opaque picture"],["Open","o the artwork page in a browser · O the post page"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window"],["Grid","esc"],["Close","? esc"]]},cg=6,D8=24;function Mc(t){return[...t.settings.flatMap((e,n)=>Boolean(e.advanced)===t.advanced?[n]:[]),t.settings.length]}function q8(t){return t.replace(/^[A-Z](?=[a-z])/,(e)=>e.toLowerCase())}function KS(t){let e=t.settings.filter((n)=>Boolean(n.advanced)!==t.advanced).map((n)=>q8(n.label));return`${t.advanced?"Back to":"More filters:"} ${e.join(", ")} — enter opens the page, or a from any row`}function tE(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((o)=>(Number(o)||0)>i):t.findLast((o)=>(Number(o)||0)<i))??t[n>0?0:t.length-1]}function ws(t,e){let n=[],r="";for(let i of t.split(" "))if(r&&Et(r)+1+Et(i)>e)n.push(r),r=i;else r=r?`${r} ${i}`:i;return r?[...n,r]:n}function J8(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.toSpliced(e,0,t.value)}function Y8(t,e,n,r){let i=ag(r),s=e&&n!==void 0;if(t.entry==="text")return[{text:` ${s?`${n}█`:t.value||"none"} `,sgr:s||e&&t.value?i:t.value?"":W}];let o=s?[]:t.value.split(" "),a=(s?t.choices:J8(t)).map((c,u)=>{let f=o.includes(c),l=t.multi&&e&&u===t.cursor?wt("under"):"";return{text:t.multi?` ${f?"[x]":"[ ]"} ${c} `:` ${c} `,sgr:f?e?`${l}${i}`:"":l?`${l}${W}`:W,choice:c}});return s?[...a,{text:` ${n}█ `,sgr:i}]:a}function zS(t){if(t.entry==="text")return[{text:" ".repeat(D8),sgr:""}];let e=t.choices.map((n)=>({text:t.multi?` [x] ${n} `:` ${n} `,sgr:""}));return t.entry==="number"?[...e,{text:` ${"0".repeat(cg)}█ `,sgr:""}]:e}function V8(t){return t.reduce((e,n)=>e+Et(n.text)+1,0)-1}function DS(t,e){let n=[[]],r=0;for(let i of t){let s=Et(i.text)>e?{...i,text:` …${Array.from(i.text).slice(-(e-2)).join("")}`}:i;if(r>0&&r+Et(s.text)>e)n.push([]),r=0;n[n.length-1]?.push(s),r+=Et(s.text)+1}return n}function qS(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 JS(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 Z8(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 X8(t,e,n,r,i){let s=r.panel??0,o=r.settings.length,c=6+Math.max(...r.settings.map((L)=>Et(L.label))),u=Math.max(...r.settings.map((L)=>Et(qS(L)))),f=c+Math.max(...r.settings.map((L)=>V8(zS(L))))+u+5,l=Math.min(e-2,Math.max(48,f)),d=l-c-u-5,h=l-7,m=[!1,!0].map((L)=>({advanced:L,rows:Mc({settings:r.settings,advanced:L}).slice(0,-1)})),p=r.settings.map((L)=>DS(zS(L),d).length),b=Math.max(...m.map((L)=>L.rows.reduce((gt,Xt)=>gt+p[Xt],0))),$=Math.max(...m.map((L)=>ws(KS({settings:r.settings,advanced:L.advanced}),h).length),...r.settings.map((L)=>ws(L.about,h).length)),k=`${r.tag}: ${Z.map((L)=>`${L.name} 0,000,000`).join(" · ")}`,v=r.tag?Math.max(ws(k,h).length,ws(JS(r),h).length):0,S=b+$+v+8,M=Math.floor((e-l)/2),x=Math.max(1,Math.floor((n-1-S)/2)),N=ag(r.siteAnsi);t[x]?.put(M,`╭─ Settings ${"─".repeat(Math.max(0,l-13))}╮`);for(let L=x+1;L<x+S-1;L++)t[L]?.put(M,`│${" ".repeat(l-2)}│`);let R=x+2;for(let L of Mc(r).slice(0,-1)){let gt=r.settings[L],Xt=L===s;if(Xt)t[R]?.put(M+2,"▶",i);if(t[R]?.mark(M+2,c-3,{kind:"setting",index:L}),t[R]?.put(M+4,gt.label,Xt?At:""),gt.value!==gt.default)t[R]?.right(M+l-3,[[qS(gt),W]]);DS(Y8(gt,Xt,r.typing,r.siteAnsi),d).forEach((it,Ar)=>{let We=M+c;for(let Sn of it)We=(t[R+Ar]?.put(We,Sn.text,Sn.sgr,void 0,{kind:"choice",index:L,choice:Sn.choice})??We)+1}),R+=p[L]}let T=m.find((L)=>L.advanced!==r.advanced)?.rows??[],_=t[x+3+b];if(_){if(s===o)_.put(M+2,"▶",i);let L=_.put(M+3,r.advanced?" ‹ Basic ":" Advanced › ",s===o?N:At,void 0,{kind:"setting",index:o});if(T.some((gt)=>r.settings[gt]?.value!==r.settings[gt]?.default))_.put(L+1,"•",W)}t[x+5+b]?.put(M+2,"─".repeat(l-4),W),ws(r.settings[s]?.about??KS(r),h).forEach((L,gt)=>{t[x+6+b+gt]?.put(M+4,L)}),ws(JS(r),h).forEach((L,gt)=>{t[x+6+b+$+gt]?.put(M+4,L,W)}),t[x+S-1]?.put(M,`╰${"─".repeat(l-2)}╯`);let{keys:K,right:G}=Z8(r,r.settings[s]);Ec(t[n-1],e,{keys:K,right:G})}function Q8(t,e,n,r){let i=r.tuning?K8:z8[r.mode],s=Math.min(e-2,Math.max(50,...i.map(([,l])=>Et(l)+16))),o=i.map(([l,d])=>({label:l,parts:ws(d,s-16)})),a=o.reduce((l,{parts:d})=>l+d.length,0)+4,c=Math.floor((e-s)/2),u=Math.max(2,Math.floor((n-a)/2));t[u]?.put(c,`╭─ Help ${"─".repeat(s-9)}╮`);for(let l=u+1;l<u+a-1;l++)t[l]?.put(c,`│${" ".repeat(s-2)}│`);let f=u+2;for(let{label:l,parts:d}of o){t[f]?.put(c+3,l,At);for(let h of d)t[f]?.put(c+13,h),f++}t[u+a-1]?.put(c,`╰${"─".repeat(s-2)}╯`),Ec(t[n-1],e,{badge:"HELP",right:["? esc","close"]})}function t3(t,e,n){let r=e.suggest??[],i=r.map((a)=>a.alias??(a.count>0?String(a.count):a.palette??"0")),s=Math.max(...r.map((a)=>Et(a.value))),o=Math.max(7,...i.map(Et));r.forEach((a,c)=>{let u=c===e.pick,f=t[1+c];f?.run(0,[[u?"▸ ":" ",n,void 0,{kind:"suggest",index:c}],[a.value,u?At+n:"",void 0,{kind:"suggest",index:c}]]),f?.right(2+s+2+o,[[i[c],W]])})}function Ql(t,e=[]){return[...e,...t.flatMap((n,r)=>n.zones(r))]}function ug(t,e,n){let r=Array.from({length:n},()=>new tf(e)),i=[],s=[],o=wt("accent");if(tg=!1,e<$s.cols||n<$s.rows)return r[0]?.put(0,"ttheme find",At+o),r[1]?.put(0,`Needs ${$s.cols}×${$s.rows} — now ${e}×${n}`),r[2]?.put(0,"esc quits",W,void 0,{kind:"key",key:"esc"}),{lines:r.map((c)=>c.render()),images:i,zones:Ql(r),loader:!1,tick:!1};let a=!1;if(t.mode==="try")W8(r,i,e,n,t,o);else a=U8(r,i,s,e,n,t,o);if(t.mode==="grid"&&t.editing!==void 0&&t.suggest?.length){for(let c=1;c<n-1;c++)r[c]=new tf(e);return t3(r,t,o),{lines:r.map((c)=>c.render()),images:[],zones:Ql(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 tf(e);if(t.help)Q8(r,e,n,t);else X8(r,e,n,t,o);return{lines:r.map((u)=>u.render()),images:c,zones:Ql(r),loader:!1,tick:!1}}return{lines:r.map((c)=>c.render()),images:i,zones:Ql(r,s),loader:a,tick:tg}}var e3=130,n3=38,r3=96,i3=28,Pc=[{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}],s3={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]},eE=(t)=>Array.from({length:8},(e,n)=>`«K${t+n}» «»`).join(" "),o3=["«2»❯ «»colortest",`«d»0-7 ${eE(0)}`,`«d»8-15 ${eE(8)}`],nE=2;function a3(t){let e=Pc.length;return Pc[(t%e+e)%e]}function sE(){return Pc.map((t)=>t.name)}function Ic(t,e,n){let r=t>=e3&&e>=n3?"full":t>=r3&&e>=i3?"tabs":void 0;if(!r)return;let i=r==="full"?t>=140?47:38:37,s=t-i-1,o=i+1+nE,a=i+s-nE,c=3,u=e-3,f={col:o,row:c,cols:a-o+1,rows:u-c+1},l={col:o+1,row:c+3,cols:f.cols-2,rows:u-c-3},d=[{row:c,col:o,length:f.cols,down:!1},{row:c+2,col:o,length:f.cols,down:!1},{row:u,col:o,length:f.cols,down:!1},{row:c,col:o,length:u-c+1,down:!0},{row:c,col:a,length:u-c+1,down:!0}],h=a3(n);return{tier:r,side:i,width:s,frame:f,title:{col:l.col,row:c+1,cols:l.cols,rows:1},inner:l,rules:d,tiles:[{id:h.id,name:h.name,col:l.col,row:l.row,width:l.cols,rows:l.rows}]}}var Oc="«2»▎ ",rE="«3»▎ ",c3="«1»▁ ",u3=[["","«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. */"],[Oc,"«5»export interface «6»Palette «»{"],[Oc," name: «6»string"],[Oc," ansi: «6»Hex«»[]"],[Oc," ratio?: «6»number"],[Oc,"}"],["",""],["","«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«»> {"],[rE," «5»const «»text = «5»await «4»readFile«»(path, «2»'utf8'«»)"],[rE," «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)"],[""," }"],[c3," «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"],["","}"]],l3=21;function f3(){return["«K4» theme.ts «s» scenes.ts «s» contrast.ts ",...u3.map(([t,e],n)=>{let r=String(n+1).padStart(3);return`${n+1===l3?`«b»${r}`:`«d»${r}`} ${t||"«» "}«»${e}`})]}function lg(t,e,n,r){let i=Math.max(1,r-t.length-2-n.length),s=0,o=`«6»${t}«b»[`;for(let[a,c]of e){let u=Math.min(i-s,Math.round(c*i));o+=`«${a}»${"|".repeat(u)}`,s+=u}return`${o}«»${" ".repeat(i-s)}${n}«b»]`}var d3=[[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]],h3=["«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"],m3=["Help","Setup","Search","Filter","Tree","SortBy","Nice -","Nice +","Kill","Quit"];function p3(t,e,n){return`«${t}»${e}${" ".repeat(Math.max(0,n-B(e)))}`}function g3(t){let e=t-2,n=Math.floor((e-2)/2),r=(i)=>{let[s,o,a]=d3[i],c=`${((s+o+a)*100).toFixed(1)}%`;return lg(String(i).padStart(3),[["2",s],["1",o],["4",a]],c,n)};return[...[0,1,2,3].map((i)=>`${r(i)} ${r(i+4)}`),`${lg("Mem",[["2",0.45],["4",0.1],["3",0.07]],"9.84G/16.0G",n)} «6»Tasks: «b»214«», 1093 thr; «B2»4«» running`,`${lg("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`,"",p3("K2"," PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command",e),...h3.map((i)=>i.startsWith("«s»")?`${i}${" ".repeat(Math.max(0,e-B(i.replace(/«[^»]*»/g,""))))}`:i)]}function b3(t){let e=t-2,n="",r=0;return m3.forEach((i,s)=>{let o=`F${s+1}`,a=i.padEnd(6);if(r+o.length+a.length<=e)n+=`«»${o}«K6»${a}`,r+=o.length+a.length}),`${n}«K6»${" ".repeat(Math.max(0,e-r))}`}function iE(t,e,n){if(t==="Editor")return f3();if(t==="Top")return g3(n);let r=Vt.find((o)=>o.name===t)?.lines??[],i=e?s3[t]:void 0,s=i?i.map((o)=>r[o]??""):r;return t==="Shell"?[...s.slice(0,-1),...o3,...s.slice(-1)]:s}function sf(t,e){return t.values().map((n)=>So(n,e)).filter((n)=>n!==void 0).map((n)=>{let r=0;return n.map(([i,s])=>{let o={text:i,role:s,col:r};return r+=B(i),o})}).toArray()}function w3(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 $3(t,e){if(t.id==="code")return[w3(e),'«d»"src/theme.ts" 26L, 912B written'];return t.id==="monitor"?[b3(e)]:[]}function k3(t,e,n){let r=sf($3(t,e),e),i=Math.max(0,n-r.length),s=[];for(let a of t.scenes.toReversed()){let c=sf(iE(a,!1,e),e),u=sf(iE(a,!0,e),e),f=[c,u].find((l)=>s.length+l.length<=i);if(!f){if(s.length===0)s=t.tail?u.slice(u.length-i):u.slice(0,i);break}s=[...f,...s]}if(r.length===0)return s;let o=sf(Array.from({length:i-s.length},()=>t.id==="code"?"«4»~":""),e);return[...s,...o,...r]}function Rc(t){let e=Pc.find((r)=>r.id===t.id),n=t.width-2;return e?k3(e,t.width,t.rows).map((r)=>r.filter((i)=>i.col<n)):[]}function fg(t,e){let{text:n,ground:r}=aE(t);return n===e||r===e}function oE(t,e){let n=t.inner;return Pc.map((r)=>({name:r.name,count:Rc({id:r.id,name:r.name,col:n.col,row:n.row,width:n.cols,rows:n.rows}).flat().filter((i)=>fg(i.role,e)).length}))}function aE(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 dg(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 of(t){return t.tiles.flatMap((e)=>Rc(e).flatMap((n,r)=>n.map((i,s)=>({spot:{pane:e.id,line:r,run:s},col:i.col,text:i.text,role:i.role}))))}function hg(t,e){return t.pane===e.pane&&t.line===e.line&&t.run===e.run}function cE(t,e){let n=of(t);return(n.find((r)=>dg(r.role,e))??n[0])?.spot}function af(t,e){return e&&of(t).find((n)=>hg(n.spot,e))?.spot}function uE(t,e,n){let r=of(t);if(r.length===0)return;let i=e?r.findIndex((d)=>hg(d.spot,e)):-1;if(i<0)return r[0]?.spot;let s=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 d=t.tiles.map((p)=>p.id),h=d.indexOf(s.spot.pane),m=d[(h+(n==="next"?1:d.length-1))%d.length];return r.find((p)=>p.spot.pane===m)?.spot}let o=n==="up"?-1:1,a=r.filter((d)=>d.spot.pane===s.spot.pane),c=[...new Set(a.map((d)=>d.spot.line))],u=c[c.indexOf(s.spot.line)+o];if(u===void 0){let d=t.tiles.map((k)=>k.id),h=d.indexOf(s.spot.pane)+o,m=d[(h+d.length)%d.length],p=r.filter((k)=>k.spot.pane===m),b=o<0?p.at(-1)?.spot.line??0:p[0]?.spot.line??0,$=p.filter((k)=>k.spot.line===b);return($.find((k)=>k.col>=s.col)??$.at(-1))?.spot}let f=a.filter((d)=>d.spot.line===u);return(f.find((d)=>d.col<=s.col&&d.col+B(d.text)>s.col)??f.find((d)=>d.col>=s.col)??f.at(-1))?.spot}function lE(t,e){let n=of(t).find((r)=>hg(r.spot,e));return n?aE(n.role):void 0}var y3={lr:"─",du:"│",dr:"╭",dl:"╮",ru:"╰",lu:"╯",dlr:"┬",lru:"┴",dru:"├",dlu:"┤",dlru:"┼"};function fE(t){let e=new Map,n=(i,s,o)=>{let a=e.get(i)??new Map;e.set(i,a);let c=a.get(s)??new Set;a.set(s,c),c.add(o)};for(let i of t)for(let s=0;s<i.length;s++){let o=i.down?i.row+s:i.row,a=i.down?i.col:i.col+s;if(s>0)n(o,a,i.down?"u":"l");if(s<i.length-1)n(o,a,i.down?"d":"r")}let r=(i)=>y3[[...i].sort().join("")]??(i.has("l")||i.has("r")?"─":"│");return new Map(e.entries().map(([i,s])=>[i,new Map(s.entries().map(([o,a])=>[o,r(a)]))]))}import{execFile as v3}from"node:child_process";import{createHash as pE}from"node:crypto";import{existsSync as S3,mkdtempSync as E3,readFileSync as ff,rmSync as M3,statSync as gE,writeFileSync as bE}from"node:fs";import{homedir as x3,tmpdir as O3}from"node:os";import{join as cf}from"node:path";import{fileURLToPath as P3}from"node:url";import{promisify as I3}from"node:util";import{inflateSync as R3}from"node:zlib";var kn=I3(v3),uf=67108864,A3=4096,N3="/System/Library/ColorSync/Profiles/sRGB Profile.icc",gg=["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/heic"],T3=["text/uri-list","text/plain;charset=utf-8","text/plain"],mg=[...gg,"text/uri-list","text/plain"];function H3(t){try{return gE(t).isFile()}catch{return!1}}function F3(t){let e=[],n="",r="",i=!1;for(let s=0;s<t.length;s++){let o=t[s];if(r==="'")if(o==="'")r="";else n+=o;else if(r==='"')if(o==='"')r="";else if(o==="\\"&&'"\\$`'.includes(t[s+1]??""))n+=t[++s];else n+=o;else if(o==="\\"&&s+1<t.length)n+=t[++s],i=!0;else if(o==="'"||o==='"')r=o,i=!0;else if(/\s/.test(o)){if(i)e.push(n);n="",i=!1}else n+=o,i=!0}if(i)e.push(n);return e}function dE(t){if(/^file:\/\//i.test(t))try{return P3(t)}catch{return}if(t.startsWith("~/"))return cf(x3(),t.slice(2));return t.startsWith("/")?t:void 0}function Xo(t,e=H3){return t.replace(/\r\n?/g,`
681
681
  `).split(`
682
- `).flatMap((n)=>{let r=mE(n.trim());if(r&&e(r))return[r];return F3(n).flatMap((i)=>{if(/^https?:\/\/\S+$/i.test(i))return[i];let s=mE(i);return s&&e(s)?[s]:[]})})}function pE(t){let e=_r(t)?Nn(t):Cd(t);if(!e)return;return{ext:_r(t)?"png":"jpg",width:e.width,height:e.height}}function C3(t){let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength);if(_r(t)){for(let r=8;r+12<=e.length;){let i=e.readUInt32BE(r),s=e.toString("latin1",r+4,r+8);if(s==="iCCP"){let o=e.subarray(r+8,r+8+i);try{return A3(o.subarray(o.indexOf(0)+2))}catch{return}}if(s==="IDAT")return;r+=12+i}return}let n=[];for(let r=2;r+4<=e.length&&e[r]===255&&e[r+1]!==218;){let i=e.readUInt16BE(r+2);if(e[r+1]===226&&e.toString("latin1",r+4,r+16)==="ICC_PROFILE\x00")n[e[r+16]??0]=e.subarray(r+18,r+2+i);r+=2+i}return n.length>0?Buffer.concat(n.filter(Boolean)):void 0}function j3(t){let e=C3(t);if(!e||e.length<132||e.toString("latin1",16,20)==="GRAY")return!1;for(let n=132,r=e.readUInt32BE(128);r>0&&n+12<=e.length;r--,n+=12)if(e.toString("latin1",n,n+4)==="desc"){let i=e.readUInt32BE(n+4),s=e.toString("latin1",i,i+e.readUInt32BE(n+8)).replaceAll("\x00","");return!/sRGB/i.test(s)}return!0}async function _3(t){let{stdout:e}=await Sn("sips",["-g","pixelWidth","-g","pixelHeight",t]).catch(()=>({stdout:""})),n=Number(/pixelWidth: (\d+)/.exec(e)?.[1]),r=Number(/pixelHeight: (\d+)/.exec(e)?.[1]);return n>0&&r>0?{width:n,height:r}:void 0}async function df(t,e){let n=pE(t),r=process.platform==="darwin";if(n&&n.width*n.height<=fe&&!(r&&j3(t)))return{bytes:t,...n,source:e};if(!r)throw Error(n?`${n.width}×${n.height} is over ${fe/1e6} megapixels`:"only PNG and JPEG pictures work here");let i=M3(lf(P3(),"ttheme-attach-"));try{let s=lf(i,"in"),o=lf(i,"out.png");$E(s,t);let a=n??await _3(s),c=a&&a.width*a.height>fe?["--resampleHeightWidthMax",String(N3)]:[];await Sn("sips",["-s","format","png","--matchTo",T3,...c,s,"--out",o]).catch(()=>{throw Error("that is not a picture macOS can read")});let u=new Uint8Array(hf(o)),f=pE(u);if(!f)throw Error("that is not a picture macOS can read");return{bytes:u,...f,source:e}}finally{x3(i,{recursive:!0,force:!0})}}async function kg(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)>ff)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 df(r,t)}if(wE(t).size>ff)throw Error("that picture is over 64 MB");return df(new Uint8Array(hf(t)),t)}var kE=new Map,Jn={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)=>kE.get(t)??"",parse:()=>[],count:()=>0};function yE(t){if(/^https?:\/\//i.test(t))return"";return t.split("/").pop()??t}function vE(t,e){kE.set(t,e)}function SE(t){return Number.parseInt(bE("sha1").update(t).digest("hex").slice(0,8),16)%Kr}var B3=`ObjC.import('AppKit')
682
+ `).flatMap((n)=>{let r=dE(n.trim());if(r&&e(r))return[r];return F3(n).flatMap((i)=>{if(/^https?:\/\/\S+$/i.test(i))return[i];let s=dE(i);return s&&e(s)?[s]:[]})})}function hE(t){let e=jr(t)?In(t):Hd(t);if(!e)return;return{ext:jr(t)?"png":"jpg",width:e.width,height:e.height}}function L3(t){let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength);if(jr(t)){for(let r=8;r+12<=e.length;){let i=e.readUInt32BE(r),s=e.toString("latin1",r+4,r+8);if(s==="iCCP"){let o=e.subarray(r+8,r+8+i);try{return R3(o.subarray(o.indexOf(0)+2))}catch{return}}if(s==="IDAT")return;r+=12+i}return}let n=[];for(let r=2;r+4<=e.length&&e[r]===255&&e[r+1]!==218;){let i=e.readUInt16BE(r+2);if(e[r+1]===226&&e.toString("latin1",r+4,r+16)==="ICC_PROFILE\x00")n[e[r+16]??0]=e.subarray(r+18,r+2+i);r+=2+i}return n.length>0?Buffer.concat(n.filter(Boolean)):void 0}function C3(t){let e=L3(t);if(!e||e.length<132||e.toString("latin1",16,20)==="GRAY")return!1;for(let n=132,r=e.readUInt32BE(128);r>0&&n+12<=e.length;r--,n+=12)if(e.toString("latin1",n,n+4)==="desc"){let i=e.readUInt32BE(n+4),s=e.toString("latin1",i,i+e.readUInt32BE(n+8)).replaceAll("\x00","");return!/sRGB/i.test(s)}return!0}async function j3(t){let{stdout:e}=await kn("sips",["-g","pixelWidth","-g","pixelHeight",t]).catch(()=>({stdout:""})),n=Number(/pixelWidth: (\d+)/.exec(e)?.[1]),r=Number(/pixelHeight: (\d+)/.exec(e)?.[1]);return n>0&&r>0?{width:n,height:r}:void 0}async function lf(t,e){let n=hE(t),r=process.platform==="darwin";if(n&&n.width*n.height<=fe&&!(r&&C3(t)))return{bytes:t,...n,source:e};if(!r)throw Error(n?`${n.width}×${n.height} is over ${fe/1e6} megapixels`:"only PNG and JPEG pictures work here");let i=E3(cf(O3(),"ttheme-attach-"));try{let s=cf(i,"in"),o=cf(i,"out.png");bE(s,t);let a=n??await j3(s),c=a&&a.width*a.height>fe?["--resampleHeightWidthMax",String(A3)]:[];await kn("sips",["-s","format","png","--matchTo",N3,...c,s,"--out",o]).catch(()=>{throw Error("that is not a picture macOS can read")});let u=new Uint8Array(ff(o)),f=hE(u);if(!f)throw Error("that is not a picture macOS can read");return{bytes:u,...f,source:e}}finally{M3(i,{recursive:!0,force:!0})}}async function bg(t,e){if(/^https?:\/\//i.test(t)){let n=await fetch(t,{headers:{"User-Agent":Kd},signal:e});if(!n.ok)throw Error(`${new URL(t).host} answered ${n.status}`);if(Number(n.headers.get("content-length")??0)>uf)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 lf(r,t)}if(gE(t).size>uf)throw Error("that picture is over 64 MB");return lf(new Uint8Array(ff(t)),t)}var wE=new Map,zn={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)=>wE.get(t)??"",parse:()=>[],count:()=>0};function $E(t){if(/^https?:\/\//i.test(t))return"";return t.split("/").pop()??t}function kE(t,e){wE.set(t,e)}function yE(t){return Number.parseInt(pE("sha1").update(t).digest("hex").slice(0,8),16)%Wr}var _3=`ObjC.import('AppKit')
683
683
  function run(argv) {
684
684
  const pb = $.NSPasteboard.generalPasteboard
685
685
  const files = pb.readObjectsForClassesOptions($([$.NSURL]), $({ NSPasteboardURLReadingFileURLsOnlyKey: true }))
@@ -704,16 +704,16 @@ function run(argv) {
704
704
  if (web && web.count > 0) return web.objectAtIndex(0).absoluteString.js
705
705
  const text = pb.stringForType('public.utf8-plain-text')
706
706
  return text && !text.isNil() ? text.js : ''
707
- }`,G3=`Add-Type -AssemblyName System.Windows.Forms,System.Drawing
707
+ }`,B3=`Add-Type -AssemblyName System.Windows.Forms,System.Drawing
708
708
  $c = [Windows.Forms.Clipboard]
709
709
  $f = $c::GetFileDropList(); if ($f.Count) { $f; exit }
710
710
  $p = Join-Path $env:TEMP 'ttheme-clipboard.png'
711
711
  $s = $c::GetData('PNG'); if ($s -is [IO.MemoryStream]) { [IO.File]::WriteAllBytes($p, $s.ToArray()); $p; exit }
712
712
  $i = $c::GetImage(); if ($i) { $i.Save($p, [Drawing.Imaging.ImageFormat]::Png); $p; exit }
713
- $c::GetText()`;function EE(){if(process.platform!=="linux")return!1;try{return/microsoft/i.test(hf("/proc/version","utf8"))}catch{return!1}}async function U3(t){let e=Boolean(process.env.WAYLAND_DISPLAY),n=e?["wl-paste",["--list-types"]]:["xclip",["-selection","clipboard","-t","TARGETS","-o"]],r=(await Sn(n[0],n[1])).stdout.split(`
714
- `).map((o)=>o.trim()),i=(o)=>e?Sn("wl-paste",["--no-newline","--type",o],{encoding:"buffer",maxBuffer:ff}):Sn("xclip",["-selection","clipboard","-t",o,"-o"],{encoding:"buffer",maxBuffer:ff});if(r.includes("text/uri-list"))return{text:(await i("text/uri-list")).stdout.toString("utf8")};let s=$g.find((o)=>r.includes(o));if(s)return $E(t,(await i(s)).stdout),{image:t};return{text:r.some((o)=>o.startsWith("text/plain")||o==="UTF8_STRING")?(await i(r.includes("text/plain")?"text/plain":"UTF8_STRING")).stdout.toString("utf8"):""}}function yg(){return Boolean(process.env.SSH_CONNECTION||process.env.SSH_TTY)}async function ME(t){if(process.platform==="darwin"){let e=(await Sn("osascript",["-l","JavaScript","-e",B3,t])).stdout.trim();return e===t?{image:t}:{text:e}}if(EE()){let e=(await Sn("powershell.exe",["-NoProfile","-STA","-Command",G3])).stdout.replace(/\r/g,"").trim(),n=await Promise.all(e.split(`
715
- `).map(async(r)=>/^[A-Za-z]:\\/.test(r)?(await Sn("wslpath",["-u",r])).stdout.trim():r));return n.length===1&&/ttheme-clipboard\.png$/.test(n[0]??"")?{image:n[0]}:{text:n.join(`
716
- `)}}if(process.platform==="linux")return U3(t);throw Error(`reading the clipboard is not supported on ${process.platform}`)}var W3=`ObjC.import('AppKit')
713
+ $c::GetText()`;function vE(){if(process.platform!=="linux")return!1;try{return/microsoft/i.test(ff("/proc/version","utf8"))}catch{return!1}}async function G3(t){let e=Boolean(process.env.WAYLAND_DISPLAY),n=e?["wl-paste",["--list-types"]]:["xclip",["-selection","clipboard","-t","TARGETS","-o"]],r=(await kn(n[0],n[1])).stdout.split(`
714
+ `).map((o)=>o.trim()),i=(o)=>e?kn("wl-paste",["--no-newline","--type",o],{encoding:"buffer",maxBuffer:uf}):kn("xclip",["-selection","clipboard","-t",o,"-o"],{encoding:"buffer",maxBuffer:uf});if(r.includes("text/uri-list"))return{text:(await i("text/uri-list")).stdout.toString("utf8")};let s=gg.find((o)=>r.includes(o));if(s)return bE(t,(await i(s)).stdout),{image:t};return{text:r.some((o)=>o.startsWith("text/plain")||o==="UTF8_STRING")?(await i(r.includes("text/plain")?"text/plain":"UTF8_STRING")).stdout.toString("utf8"):""}}function wg(){return Boolean(process.env.SSH_CONNECTION||process.env.SSH_TTY)}async function SE(t){if(process.platform==="darwin"){let e=(await kn("osascript",["-l","JavaScript","-e",_3,t])).stdout.trim();return e===t?{image:t}:{text:e}}if(vE()){let e=(await kn("powershell.exe",["-NoProfile","-STA","-Command",B3])).stdout.replace(/\r/g,"").trim(),n=await Promise.all(e.split(`
715
+ `).map(async(r)=>/^[A-Za-z]:\\/.test(r)?(await kn("wslpath",["-u",r])).stdout.trim():r));return n.length===1&&/ttheme-clipboard\.png$/.test(n[0]??"")?{image:n[0]}:{text:n.join(`
716
+ `)}}if(process.platform==="linux")return G3(t);throw Error(`reading the clipboard is not supported on ${process.platform}`)}var U3=`ObjC.import('AppKit')
717
717
  function run() {
718
718
  const pb = $.NSPasteboard.generalPasteboard
719
719
  const files = pb.readObjectsForClassesOptions($([$.NSURL]), $({ NSPasteboardURLReadingFileURLsOnlyKey: true }))
@@ -725,64 +725,62 @@ function run() {
725
725
  picture = ['public.png', 'public.tiff', 'public.jpeg', 'public.heic'].some((t) => types.includes(t))
726
726
  }
727
727
  return pb.changeCount + '\\t' + (picture ? 'picture' : '')
728
- }`;async function xE(){if(yg())return;if(process.platform==="darwin"){let[t="",e=""]=(await Sn("osascript",["-l","JavaScript","-e",W3])).stdout.trim().split("\t");return{stamp:t,picture:e==="picture"}}if(process.platform==="linux"&&!EE()){let e=Boolean(process.env.WAYLAND_DISPLAY)?(await Sn("wl-paste",["--list-types"])).stdout:(await Sn("xclip",["-selection","clipboard","-t","TARGETS","-o"])).stdout;return{stamp:e,picture:/^image\//m.test(e)}}return}function mf(t){return t.length>8&&/^(?:\/|~\/|file:|https?:)/.test(t)}var Hc=(t)=>Buffer.from(t).toString("base64"),wg=(t)=>Buffer.from(t,"base64");function gE(t,e){return e.find((n)=>t.includes(n))}class vg{clipboard=!1;drops=!1;reading;offered=[];dropping;pw=Hc(bE("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;${bg.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=${Hc("ttheme")}:pw=${this.pw};${Hc(".")}\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?wg(t.mime).toString("utf8"):r.mime,e)r.chunks.push(wg(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 s=i.toString("utf8").split(/\s+/).filter(Boolean),o=gE(s,[...$g,...H3]);if(!o){this.deliver({kind:"text",text:""});return}let a=r.pw||this.pw,c=r.pw?"Paste event":"ttheme";this.reading={mime:o,chunks:[],pw:a,listing:!1},this.send(`\x1B]5522;type=read:name=${Hc(c)}:pw=${a};${Hc(o)}\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=bg.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=gE(a,bg);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(wg(e));if(t.m==="1"||e)return;this.dropping=void 0;let i=Buffer.concat(r.chunks),s=r.mimes[r.index-1]??"",o;if(s.startsWith("image/"))o={kind:"bytes",bytes:new Uint8Array(i),source:"drop"};else{let a=i.toString("utf8"),c=s==="text/uri-list"?ea(a).find((u)=>E3(u)):void 0;o=c?{kind:"bytes",bytes:new Uint8Array(hf(c)),source:c}:{kind:"text",text:a}}this.send("\x1B]72;t=r:o=1\x1B\\"),this.deliver(o)}}var Sg=5,K3=6,OE=0.05,z3=[1,2,3,4,5,6,9,10,11,12,13,14],PE=(t,e)=>(e-t+360)%360<=180?1:-1;function Yn(t,e,n){let r=e*Math.cos(n*Math.PI/180),i=e*Math.sin(n*Math.PI/180),s=[t+0.3963377774*r+0.2158037573*i,t-0.1055613458*r-0.0638541728*i,t-0.0894841775*r-1.291485548*i].map((f)=>f**3),[o,a,c]=s,u=[4.0767416621*o-3.3077115913*a+0.2309699292*c,-1.2684380046*o+2.6097574011*a-0.3413193965*c,-0.0041960863*o-0.7034186147*a+1.707614701*c];if(u.some((f)=>f<-0.0001||f>1.0001))return;return u.map((f)=>{let l=Math.min(1,Math.max(0,f));return Math.round(255*(l<=0.0031308?12.92*l:1.055*l**0.4166666666666667-0.055))})}function na(t,e,n){if(Yn(t,n,e)!==void 0)return n;let r=0,i=n;for(let s=0;s<24;s++){let o=(r+i)/2;if(Yn(t,o,e)===void 0)i=o;else r=o}return r}function rn(t,e,n){return`#${(Yn(t,na(t,n,e),n)??[0,0,0]).map((i)=>i.toString(16).padStart(2,"0")).join("")}`}function D3(t,e){let{l:n,c:r}=Ot(t);return rn(n,r,(e+360)%360)}function q3(t,e,n){let{l:r,c:i,h:s}=Ot(t),o=Mt(e)<0.18,a=(f)=>rn(o?r+(1-r)*f:r*(1-f),i,s);if(kt(a(1),e)<n+OE)return a(1);let c=0,u=1;for(let f=0;f<30;f++){let l=(c+u)/2;if(kt(a(l),e)>=n+OE)u=l;else c=l}return a(u)}function J3(t,e){let{l:n,c:r,h:i}=Ot(t),s=0,o=n;for(let a=0;a<30;a++){let c=(s+o)/2;if(Mt(rn(c,r,i))<=e-0.005)s=c;else o=c}return rn(s,r,i)}function Y3(t,e,n){let r=Ae[e],[i,s]=[Ot(t[e]),Ot(t[e+8])],o=(f,l)=>n.has(f)?[l]:Array.from({length:2*r.width+1},(d,h)=>(r.center-r.width+h+360)%360),a=(f,l,d)=>cn.every((h)=>{let m=(f>8?8:0)+h;if(m===f)return!0;let p=Ot(t[m]);return p.c<Ai||Ne(p.h,l)>=Gs+1||Math.abs(p.l-d)>=Us}),c,u=Number.POSITIVE_INFINITY;for(let f of o(e,i.h)){if(!n.has(e)&&!a(e,f,i.l))continue;for(let l of o(e+8,s.h)){if(Ne(f,l)>an-Sg||!n.has(e+8)&&!a(e+8,l,s.l))continue;let d=Ne(f,i.h)+Ne(l,s.h);if(d<u)u=d,c=[f,l]}}return c}class IE{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,D3(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=Ae[On(n)];this.rehue(n,"ansi-role",i.center+PE(i.center,r)*(i.width-Sg))}for(let{normal:n,gap:r}of rr(this.theme)){if(r<=an)continue;let[i,s]=t.has(`ansi${n+8}`)?[n+8,n]:[n,n+8],o=Ot(this.theme.ansi[i]).h,a=Ot(this.theme.ansi[s]).h;this.rehue(s,"bright-follows",o+PE(o,a)*(an-Sg))}let e=Ws(this.theme);for(let[n,r]of ir(this.theme)){let i=On(e.has(r)?n:r),s=Y3(this.theme.ansi,i,e);if(s===void 0)continue;this.rehue(i,"distinct",s[0]),this.rehue(i+8,"distinct",s[1])}}readability(){let t=new Set(this.theme.waive),{background:e}=this.theme,n=(r,i,s,o=e)=>{if(t.has(r))return;for(let a of i)if(kt(this.get(a),o)<s)this.set(a,r,q3(this.get(a),o,s))};if(n("foreground",["foreground"],7),n("accents",z3.map((r)=>`ansi${r}`),3),n("light-ansi",["ansi7","ansi15"],7),n("ansi8-visible",["ansi8"],1.6),!t.has("ansi0-dark")&&Mt(this.get("ansi0"))>0.15)this.set("ansi0","ansi0-dark",J3(this.get("ansi0"),0.15));n("selection",["selection"],7,this.theme.foreground)}net(){return[...Map.groupBy(this.moves,(t)=>t.slot)].flatMap(([t,e])=>{let 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 pf(t){let e=new IE(t);for(let n=0;n<K3;n++)if(e.readability(),e.roles(),sr(e.theme).length===0)break;return{theme:e.theme,moves:e.net(),left:sr(e.theme)}}var Ss=[{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}],Lc={background:0.21,foreground:0.88,hue:265,tint:0.02,lightness:0.72,chroma:0.12,brights:0.06},RE=(t,e,n)=>Math.min(n,Math.max(e,t));function Eg(t,e,n){let r=t[e.key]+e.step*n,i=e.wraps?(r%e.max+e.max)%e.max:RE(r,e.min,e.max);return{...t,[e.key]:Math.round(i*1e4)/1e4}}function yi(t){let e=(r,i,s)=>rn(RE(r,0,1),i,s),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 cn){let i=Ae[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 Vn=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],L=["Background","Foreground","Cursor","Selection"],Mn=["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"],V3=["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"],Es=L.length+Mn.length,En=[{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}],AE=5,Z3=5,oe=En.length,ra=["this","pair","normals","brights","accents"],CE=[1,2,3,4,5,6,9,10,11,12,13,14],NE=cn.map((t)=>L.length+t),TE=cn.map((t)=>L.length+8+t);function Mg(t,e){let n=e-L.length;if(n<0||t==="this")return[e];if(t==="pair")return[L.length+n%8,L.length+8+n%8];let r=t==="normals"?NE:t==="brights"?TE:[...NE,...TE];return r.includes(e)?r:[e]}function X3(){return Array.from({length:Es},(t,e)=>e<L.length?[e]:[e,e+8]).flat()}function Q3(t){let e=t.trim();return/^https?:\/\/\S+$/i.test(e)||ea(e).length>0}function sn(t){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi]}function ae(t){let[e,n,r,i,...s]=t;return{background:e,foreground:n,cursor:r,selection:i,ansi:s}}function We(t){if(t<L.length)return{name:L[t],about:Vn[t]};let e=t-L.length,n=Mn[e%8];return e<8?{name:n,about:`ANSI ${e}`}:{name:`Bright ${n.toLowerCase()}`,about:`ANSI ${e}`}}function jE(t){let e=t-L.length;if(e>=9&&e<=15)return`Bold or bright ${Mn[e-8].toLowerCase()} text`;return V3[t]}var Ms=(t,e,n)=>Math.min(n,Math.max(e,t));function HE(t){return t.length===1?t.toLowerCase():t}function t5(t){return Ms(Math.round(t),0,255).toString(16).padStart(2,"0")}function LE(t){let e=t.trim().toLowerCase(),n=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/.exec(e);if(n){let s=n[1];return`#${s.length===3?[...s].map((o)=>o+o).join(""):s}`}let r=/^rgb\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*\)$/.exec(e);if(r)return`#${r.slice(1,4).map((s)=>t5(Number(s))).join("")}`;let i=/^oklch\(\s*([\d.]+)(%?)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:deg|°)?\s*\)$/.exec(e);if(i){let s=Number(i[1])/(i[2]?100:1);return rn(Ms(s,0,1),Number(i[3]),Number(i[4])%360)}return}function xs(t){let e=Te.find((n)=>n.rule===t);return e?.min??e?.max??0}function xr(t,e,n){let r=ae(t);return{name:"draft",background:r.background,foreground:r.foreground,selectionBackground:r.selection,ansi:r.ansi,waive:n,signatureSlots:e}}function e5(t,e){let n=t-L.length,r=t<=1?"foreground":t===3?"selection":n===7||n===15?"light-ansi":n===8?"ansi8-visible":CE.includes(n)?"accents":void 0;return{against:t===0||t===3?1:0,floor:r===void 0||e.includes(r)?void 0:xs(r)}}function Ig(t,e,n,r){let i=xr(t,e,n),{background:s,foreground:o,selection:a,ansi:c}=ae(t),u=(f,l,d)=>kt(l,d)<xs(r)?[f]:[];if(r==="foreground")return kt(o,s)<xs(r)?[1,0]:[];if(r==="selection")return kt(o,a)<xs(r)?[3,1]:[];if(r==="accents")return CE.flatMap((f)=>u(L.length+f,c[f],s));if(r==="light-ansi")return[7,15].flatMap((f)=>u(L.length+f,c[f],s));if(r==="ansi8-visible")return u(L.length+8,c[8],s);if(r==="ansi0-dark")return Mt(c[0])>xs(r)?[L.length]:[];if(r==="ansi-role")return Hr(i).map(({slot:f})=>L.length+f);if(r==="bright-follows")return rr(i).filter(({gap:f})=>f>an).flatMap(({normal:f})=>[L.length+f,L.length+f+8]);if(r==="distinct")return ir(i).flatMap(([f,l])=>[L.length+f,L.length+l]);return[]}function Rg(t,e,n){return new Set(Vn.keys().filter((r)=>Ag(t,e,n,r).some((i)=>i.ok===!1)))}function Mr(t,e,n,r,i){let s=kt(t,e),o=xs(n);if(i.includes(n))return{ok:void 0,text:`${r} ${s.toFixed(2)}:1 · waived`};return{ok:s>=o,text:`${r} ${s.toFixed(2)}:1 · ≥ ${o}`}}function Ag(t,e,n,r){let i=ae(t),s=xr(t,e,n);if(r===0){let $=[1,2,3,4,5,6,9,10,11,12,13,14].reduce((k,S)=>kt(i.ansi[k],i.background)<=kt(i.ansi[S],i.background)?k:S);return[Mr(i.foreground,i.background,"foreground","Foreground on it",n),Mr(i.ansi[$],i.background,"accents",`Weakest, ANSI ${$},`,n),Mr(i.ansi[8],i.background,"ansi8-visible","ANSI 8 on it",n)]}if(r===1)return[Mr(i.foreground,i.background,"foreground","On background",n),Mr(i.foreground,i.selection,"selection","On the selection",n)];if(r===2)return[{ok:void 0,text:`On background ${kt(i.cursor,i.background).toFixed(2)}:1`}];if(r===3)return[Mr(i.foreground,i.selection,"selection","Foreground on it",n)];let o=r-L.length,a=i.ansi[o];if(o===0){let b=Mt(a),$=xs("ansi0-dark");return[n.includes("ansi0-dark")?{ok:void 0,text:`Luminance ${b.toFixed(3)} · waived`}:{ok:b<=$,text:`Luminance ${b.toFixed(3)} · ≤ ${$}`}]}if(o===7||o===15)return[Mr(a,i.background,"light-ansi","On background",n)];if(o===8)return[Mr(a,i.background,"ansi8-visible","On background",n)];let c=[Mr(a,i.background,"accents","On background",n)],u=Ot(a),f=On(o),l=Ae[f],d=`${l.name} ${l.center}±${l.width}°`;if(u.c<Ai)c.push({ok:void 0,text:"Too grey to have a hue"});else if(Ws(s).has(o))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · a signature, free of ${d}`});else if(n.includes("ansi-role"))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · ${d} waived`});else{let b=Ne(u.h,l.center)-l.width;c.push(b>0?{ok:!1,text:`Hue ${u.h.toFixed(0)}° · ${b.toFixed(0)}° outside ${d}`}:{ok:!0,text:`Hue ${u.h.toFixed(0)}° · in ${d}`})}let h=o<8?o+8:o-8,m=rr(s).find((b)=>b.normal===f);if(m)c.push(n.includes("bright-follows")?{ok:void 0,text:`${m.gap.toFixed(0)}° from ANSI ${h} · waived`}:{ok:m.gap<=an,text:`${m.gap.toFixed(0)}° from ANSI ${h} · ≤ ${an}°`});let p=ir(s).flatMap(([b,$])=>b===o?[$]:$===o?[b]:[]);if(p.length>0&&!n.includes("distinct"))c.push({ok:!1,text:`Reads as ANSI ${p.join(", ")} · within ${Gs}° and ${Us} lightness`});return c}function Ng(t,e,n){let r=Pn(xr(t,e,n));return Te.map((i,s)=>{let o=r[s],a=n.includes(i.rule),c=a||Number.isNaN(o)?void 0:(i.min===void 0||o>=i.min)&&(i.max===void 0||o<=i.max);return{ok:c,label:i.label,value:Number.isNaN(o)?"—":Number.isInteger(o)?String(o):o.toFixed(2),bound:a?"waived":i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",slots:c===!1?Ig(t,e,n,i.rule):[]}})}var n5=new Set(["reset","reset-all","hex","paste","fix","open","tune","sig","follow"]),_E=En[1].max;function Pg(t){let[e,n,r]=ct(t);return e===n&&n===r}function r5(t,e){let n=Ot(e);if(!Pg(e))return n;let r=[0,1,3,2].map((i)=>t[i]).find((i)=>!Pg(i));return{...n,h:r?Ot(r).h:Lc.hue}}function BE(t,e,n){if(t==="rgb"){let[r,i,s]=ct(e);return`rgb(${r} ${i} ${s})`}if(t==="oklch")return`oklch(${n.l.toFixed(3)} ${n.c.toFixed(3)} ${n.h.toFixed(0)})`;return e}function xg(t,e){return Math.floor(na(t,e,_E)*1e4)/1e4}function Og(t,e){return{l:e.l-t.l,c:e.c-t.c,h:((e.h-t.h)%360+540)%360-180}}function FE(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 Tg{mode;seeds=Lc;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=sn(t.colors??yi(this.seeds)),this.lch=this.lchs(),this.start=this.list,this.original=t.original?sn(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=L.length+e,r=n+8,i=this.lchOf(t[n]),s=this.lchOf(t[r]);if(i.c>=Ai&&s.c>=Ai&&Ne(i.h,s.h)<=3)this.links.set(r,n),this.offsets.set(r,Og(i,s))}}pair(t){if(t<L.length)return;let e=L.length+(t-L.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<L.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 ae(this.list)}edited(){return{colors:this.colors(),signature:[...this.signature]}}shown(){return this.compare?this.start:this.list}slot(){return this.row<L.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()}resettable(){return this.dirty()||this.tone&&this.list.some((t,e)=>t!==this.original[e])}misses(){return Rg(this.list,this.signature,this.waive)}failing(){return sr(xr(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&&Q3(t)){this.findPictures({paste:t});return}if(this.mode==="seeds")return;let e=this.options.decode?.(t);if(e){this.remember("open"),this.list=sn(e),this.lch=this.lchs(),this.chain(this.list),this.notice="Took the colors of the share code";return}let n=LE(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",this.inspect=!1,this.spot=void 0;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<L.length?t:L.length+(t-L.length)%8,t>=L.length)this.col=t-L.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===oe){this.reach(21**n);return}this.put(FE(En[t],n))}sow(t,e){let n=Ss[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=Eg({...this.seeds,[n.key]:FE(n,r)},n,0),this.list=sn(yi(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,Ss.length-1);else if(this.mode==="tune")this.channel=0,this.step(-t);else this.row=e(this.row,Es-1),this.lastEdit=void 0}lchOf(t){return r5(this.list,t)}lchs(){return this.list.map((t)=>this.lchOf(t))}seedKey(t){let e=Ss.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=Ss[this.field],r=(t.endsWith("left")?-1:1)*(t.startsWith("shift")?n.wraps?10:AE:1);this.seeds=Eg(this.seeds,n,r),this.list=sn(yi(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:Es-1,t==="home"?1:-1);else if(t==="pgup"||t==="pgdn")this.land(t==="pgup"?0:L.length,1);else if(t==="left"||t==="right"){let e=t==="left"?0:1;if(this.row>=L.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&&this.view==="slot"?Nc(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>=L.length&&this.visible(this.slotAt(t,1))}land(t,e){for(let n=0;n<Es;n++){let r=((t+e*n)%Es+Es)%Es;if(this.rowShown(r)){if(this.row=r,r>=L.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=this.view==="relations"?"g goes back to the builder":"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 share link or a tt2: 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)}}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=lE(t,this.slot())}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=fE(e,uf(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?dE(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<L.length){this.notice="l links a bright to its normal — pick an ANSI row";return}let e=L.length+(t-L.length)%8,n=e+8,r=`${We(n).name} and ${We(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,Og(this.lch[e],this.lch[n])),this.notice=`${r} move together`}nextMiss(t){let e=X3(),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 s=e[((r+t*i)%e.length+e.length)%e.length];if(n.has(s)){this.seat(s);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 Mg(this.scope,this.slot())}tuneKey(t){let e=this.channel===oe;if(t==="tab"||t==="shift-tab")this.channel=e?0:oe;else if(t==="up"||t==="down"||t==="pgup"||t==="pgdn")this.channel=0,this.step((t==="up"||t==="pgup"?1:-1)*(t.startsWith("pg")?AE: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*Z3)}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=En[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=En[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()<L.length){this.notice="A base color moves alone";return}let t=ra.indexOf(this.scope);for(let e=1;e<=ra.length;e++){let n=ra[(t+e)%ra.length];if(n==="this"||Mg(n,this.slot()).length>1){this.scopeTo(n);return}}}scopeTo(t){if(this.mode!=="tune"||this.typing!==void 0||this.quitting||this.slot()<L.length)return;if(t!=="this"&&Mg(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 e5(this.slot(),this.waive)}ratio(){return kt(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:kt(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,s=(d)=>rn(d,Math.min(i,xg(d,r.h)),r.h),o=(d)=>kt(s(d),n),a=Mt(this.list[e])>=Mt(n),c=Ot(n).l,u=Math.max(1,Math.round(t*100)/100),f=a?1:0,l;if(o(f)<u)l=f,this.notice=`The ratio stops at ${o(f).toFixed(2)}:1 on this side of the color it is read against`;else{let d=c,h=f;for(let m=0;m<24;m++){let p=(d+h)/2;if(o(p)>=u)h=p;else d=p}l=h}this.place(e,l,i,r.h);for(let d=0;d<40&&l!==f&&kt(this.list[e],n)<u;d++)l=a?Math.min(1,l+0.001):Math.max(0,l-0.001),this.place(e,l,i,r.h);this.lch=this.lch.with(e,{...this.lch[e],l:Math.round(l*1e4)/1e4})}step(t){let e=En[this.channel],n=this.lch[this.slot()][e.key];this.put(n+e.step*t)}put(t){let e=this.slot(),n=En[this.channel],r=n.wraps?(t%n.max+n.max)%n.max:Ms(t,n.min,n.max),i=Math.round(r*1e4)/1e4,s=this.lch[e],o=this.scoped().filter((u)=>u!==e),a=(u)=>Math.round(u*1e4)/1e4;if(n.key==="c"){let u=xg(s.l,s.h);if(i>u)this.notice=`Chroma stops at ${u.toFixed(3)}, the sRGB edge for this lightness and hue`;let f=Math.min(i,u),l=f-s.c;this.holds.set(e,f),this.place(e,s.l,f,s.h);for(let d of o){let h=this.lch[d],m=a(Ms((this.holds.get(d)??h.c)+l,0,_E));this.holds.set(d,m),this.place(d,h.l,m,h.h)}this.trail([e,...o]);return}let c=n.key==="h"?((i-s.h)%360+540)%360-180:i-s.l;if(this.place(e,n.key==="l"?i:s.l,this.holds.get(e)??s.c,n.key==="h"?i:s.h),n.key==="h"&&Pg(this.list[e]))this.notice="A grey shows no hue — raise its chroma first";for(let u of o){let f=this.lch[u];this.place(u,n.key==="l"?a(Ms(f.l+c,0,1)):f.l,this.holds.get(u)??f.c,n.key==="h"?a(((f.h+c)%360+360)%360):f.h)}this.trail([e,...o])}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],s=this.offsets.get(n);this.place(n,Ms(i.l+s.l,0,1),Math.max(0,i.c+s.c),((i.h+s.h)%360+360)%360)}}}place(t,e,n,r){let i=Math.min(n,xg(e,r));this.lch=this.lch.with(t,{l:e,c:i,h:r}),this.list=this.list.with(t,rn(e,i,r))}take(t,e){if(this.mode==="tune"){let n=this.slot();this.list=this.list.with(n,t),this.lch=this.lch.with(n,this.lchOf(t)),this.holds.set(n,this.lch[n].c),this.trail([n])}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=LE(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=gs(e,HE(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=sn(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=gs(this.filter,HE(t),(r)=>/^[a-z0-9@/-]$/.test(r));if(n!==void 0)this.filter=n,this.pick=0}}snapshot(){return{list:this.list,lch:this.lch,signature:this.signature}}remember(t){if(t!==this.lastEdit||n5.has(t))this.history.push(this.snapshot()),this.future=[];this.lastEdit=t}set(t,e,n){if(!we(e)||this.list[t]===e)return;this.remember(n),this.list=this.list.with(t,e),this.lch=this.lch.with(t,this.lchOf(e)),this.trail([t])}follow(){if(this.row<L.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,Ms(n.l+0.06,0,1),n.c,n.h),this.links.set(e,t),this.unlinked.delete(e),this.offsets.set(e,Og(n,this.lch[e])),this.seat(e),this.notice=`${We(e).name} follows ${We(t).name.toLowerCase()}`}mark(){let t=Vn[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=xr(this.list,this.signature,this.waive),{theme:e,moves:n,left:r}=pf({...t,selectionBackground:t.selectionBackground,signatureSlots:this.signature});if(n.length===0){this.notice=sr(t).length===0?"Already passes the gate":"No color change fixes it";return}this.remember("fix");let i=sn({...this.colors(),foreground:e.foreground,selection:e.selectionBackground,ansi:e.ansi}),s=this.list;this.list=i,this.lch=i.map((o,a)=>o===s[a]?this.lch[a]:this.lchOf(o)),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(this.snapshot()),this.restore(t)}redo(){let t=this.future.pop();if(!t){this.notice="Nothing to redo";return}this.history.push(this.snapshot()),this.restore(t)}restore(t){this.list=t.list,this.lch=t.lch,this.signature=t.signature,this.lastEdit=void 0}}import{mkdirSync as S5,readFileSync as Fc,writeFileSync as iM}from"node:fs";import{dirname as E5}from"node:path";import{isMainThread as M5,parentPort as sM,Worker as x5}from"node:worker_threads";var i5=new Set(["comic","4koma","monochrome","greyscale","sketch","lineart","speech_bubble"]),s5=new Set(["scenery","landscape","scenic","no_humans","wide_shot","very_wide_shot"]),o5=0.04,a5=0.1,c5=0.05,u5=4096;function l5(t){return new Set(t.cutouts.split(/\s+/).map((e)=>e.replace(/^~/,"")).filter(Boolean))}function f5(t,e,n,r=0){let{site:i,post:s}=t,o=new Set(s.tags),a=!l5(i).isDisjointFrom(o),c=Math.min(s.width,s.height),u=s.width>0&&s.height>0?s.width/s.height/(e.w/e.h):1;return(s.solo?2:0)+(i5.isDisjointFrom(o)?0:-3)+(s5.isDisjointFrom(o)?0:-1.5)+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,s.score))/Math.log1p(n):0)+2*r}function gf(t,e,n=new Map){let r=new Map;for(let{site:i,post:s}of t)r.set(i,Math.max(r.get(i)??0,s.score));return t.map((i,s)=>({pick:i,at:s,score:f5(i,e,r.get(i.site)??0,n.get(i.post))})).sort((i,s)=>s.score-i.score||i.at-s.at).map(({pick:i})=>i)}function UE(t){let e=Map.groupBy(t,(r)=>r.site),n=[];for(let r=0;n.length<t.length;r++)for(let i of e.values()){let s=i[r];if(s)n.push(s)}return n}function Hg(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function GE(t,e,n){let[r,i,s]=[Hg(t),Hg(e),Hg(n)],o=Math.cbrt(0.4122214708*r+0.5363325363*i+0.0514459929*s),a=Math.cbrt(0.2119034982*r+0.6806995451*i+0.1073969566*s),c=Math.cbrt(0.0883024619*r+0.2817188376*i+0.6299787005*s);return[0.2104542553*o+0.793617785*a-0.0040720468*c,1.9779984951*o-2.428592205*a+0.4505937099*c,0.0259040371*o+0.7827717662*a-0.808675766*c]}function WE(t,e){let n=e.values().map((o)=>GE(...ct(o))).filter(([,o,a])=>Math.hypot(o,a)>=o5).toArray();if(n.length===0)return 0;let r=Math.max(1,Math.floor(Math.sqrt(t.width*t.height/u5))),i=n.map(()=>0),s=0;for(let o=0;o<t.height;o+=r)for(let a=0;a<t.width;a+=r){let c=(o*t.width+a)*4;if(t.data[c+3]<128)continue;s++;let[u,f,l]=GE(t.data[c],t.data[c+1],t.data[c+2]);n.forEach(([d,h,m],p)=>{if(Math.hypot(u-d,f-h,l-m)<a5)i[p]=i[p]+1})}if(s===0)return 0;return i.reduce((o,a)=>o+Math.min(1,a/s/c5),0)/n.length}import{existsSync as Lg,mkdirSync as KE,readFileSync as ia}from"node:fs";import{homedir as d5}from"node:os";import{dirname as zE,join as Os}from"node:path";var DE=90000;function wf(t,e){let n=X(t),r=ke(t,e).flatMap((i)=>{let[,s,o]=/^([a-z.]+)_(\d+)$/.exec(i.key)??[];return s&&o&&Z.some((a)=>a.key===s)?[{site:s,id:Number(o),...Sh(n,i)}]:[]});return r.length>0?r:void 0}function h5(t,e){let n=new Set(Tt(X(t)).palettes[e.name]?.pictures.map((r)=>r.key));return(e.pictures??[]).filter((r)=>!n.has(he(r)))}function qE(t,e){let n=new Set((e??[]).map((r)=>he(r)));return{...t,pictures:(t.pictures??[]).filter((r)=>!n.has(he(r)))}}async function m5(t,e,n,r,i,s){let o=Z.find(($)=>$.key===n.site);if(!o)throw Error(`no site called ${n.site}`);s("Fetching");let a=await Fi(o,n.id,i);if(!a)throw Error("the post is gone");if(o!==Pt&&a.md5)try{xa([a],await Oa([a.md5],i))}catch{}let c={},u=(Ma(o,a)?Ea(o,a.id,i).then(($)=>{if($)Qs(a,$)},()=>{}):Promise.resolve()).then(()=>a.named.artist.length>0?$u(a.named.artist,i):new Map).then(($)=>{c=Object.fromEntries($.entries().filter(([,k])=>k.length>0))},()=>{});if(!gu(o,a,Li(process.env.TTHEME_FIND_RATING))||pu(a,Xs(process.env.TTHEME_FIND_BLOCK)).length>0)throw Error("outside your find filters — TTHEME_FIND_RATING and TTHEME_FIND_BLOCK");let f=ln(a);if(!f)throw Error("too large to use");let l=Os(fn(o),"orig",`${n.id}.${f.ext}`),d;if(Lg(l))d=new Uint8Array(ia(l));else{s("Downloading");let $=zr(o,a,f);d=await wu($.site,$.url,i,(k,S)=>s("Downloading",Gl(k,S))),H(l,d)}let h=An(d,fe),m=!1;if(or(h)===0&&to()&&process.env.TTHEME_FIND_REMOVE_BG!=="off"){let $=Os(fn(o),"cut",`${n.id}.png`);try{if(!Lg($))s("Cutting out"),KE(zE($),{recursive:!0}),await Aa(l,$,i);let k=An(new Uint8Array(ia($)),fe);if(yu(or(k)))h=k,m=!0}catch{}}await u;let p=kh(e);s("Drawing"),Au(t,p,Fn(p,e.signatureSlots),h,{site:o.key,id:n.id,ext:f.ext,bytes:d,from:`${o.name} ${n.id} ${o.pageUrl(n.id)}`,artist:a.named.artist,profiles:c,source:Ci(a.source),cut:m},{width:0,height:0},si(t),wl(t));let b=ke(t,e.name).find(($)=>$.key===he(n));if(b)Fa(X(t),b,n,r,d5())}function p5(t,e){let n=Z.find((s)=>s.key===t.site),r=`${n?.name??t.site} ${t.id}`;if(!n||!e)return r;return`${Ct()?R.link:`${Xi(n.ansi)}${R.link}${$t}`} ${qu(r,n.pageUrl(t.id))}`}async function Ps(t,e,n){let r=e.flatMap((c)=>h5(t,c).map((u)=>({entry:c,shared:u})));if(r.length===0)return;let i=fs(n),s=process.stdout.isTTY&&Uy(process.env),o=new Set,a=hi();for(let[c,{entry:u,shared:f}]of r.entries()){let l=`${u.name} · ${p5(f,s)}`,d=r.length>1?` · ${c+1}/${r.length}`:"",h=(m,p)=>a.set(`${m} ${l}${p?` · ${p}`:""}${d}`);try{await m5(t,u,f,i,AbortSignal.timeout(DE),h),a.say(` ▣ ${l}`),o.add(u)}catch(m){a.say(` ▢ ${l} — ${m instanceof Error?m.message:String(m)}`)}}a.done();for(let c of o){let u=new Set(ke(t,c.name).map((l)=>l.key)),f=(c.pictures??[]).find((l)=>u.has(he(l)));if(f)uo(t,c.name,he(f))}if(o.size>0)Ue(t)}function JE(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 g5(t,e){let[,n,r]=/^(.+)_(\d+)$/.exec(t)??[],i=Os(Ln(),n??"local","cut",`${r??t}.png`);if(!Lg(i)){if(!to())return;KE(zE(i),{recursive:!0}),await Aa(e,i,AbortSignal.timeout(DE))}return An(new Uint8Array(ia(i)),fe)}function b5(t,e){try{return or(Wt(new Uint8Array(ia(Os(t,`${e.stem}.png`)))))>0}catch{return!1}}function bf(t,e){return()=>An(new Uint8Array(ia(Os(t,e.original))),fe)}function YE(t,e){let n=bf(t,e);return()=>{let r=n(),i=Wt(new Uint8Array(ia(Os(t,e.cut))));return JE(r,i,0)?r:null}}async function $f(t,e,n,r,i,s,o,a){let c=X(t),u=Tt(c).palettes[e]?.pictures.find((f)=>f.key===n);if(!u?.original)return null;if(u.cut)return Ca(t,e,u,YE(c,u),r,i,s,o,!1,a);if(co(u)){let f=bf(c,u)();if(or(f)===0&&b5(c,u)){let l=await g5(n,Os(c,u.original));if(!l||!JE(f,l,3))return null;return Ca(t,e,u,()=>f,r,i,s,o,!0,a)}return Ca(t,e,u,()=>f,r,i,s,o,!1,a)}return Ca(t,e,u,bf(c,u),r,i,s,o,!1,a)}function VE(t,e,n,r,i,s){let o=X(t),a=Tt(o).palettes[e]?.pictures.find((u)=>u.key===n);if(!a?.original||co(a))return!1;let c=a.cut?YE(o,a):bf(o,a);return z$(t,e,a,c,r,i,s)}var w5=2,$5=0.01,pt={coarse:64,fine:192,solid:230,far:48,score:15,outliers:0.03,least:0.03,most:0.97,smallest:0.25,largest:4,step:1.19,overhang:1.04,tiny:8,guesses:3,nudges:[0.97,1,1.03],reach:5},k5=/(?:^|[^0-9a-f])([0-9a-f]{32})(?:[^0-9a-f]|$)/i,y5=[[/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 Fg(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 XE(t,e){let n=k5.exec(e.source)?.[1]?.toLowerCase();return[`post:${t.key}:${e.id}`,...e.md5?[`md5:${e.md5}`]:[],...n&&n!==e.md5?[`md5:${n}`]:[],...y5.flatMap(([r,i])=>{let s=r.exec(e.source)?.[1];return s?[`post:${i}:${Number(s)}`]:[]}),...e.family?[`family:${t.key}:${e.family}`]:[]]}function QE(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 tM(t){let r=[];for(let s=0;s<8;s++){let o=Math.floor(s*t.height/8),a=Math.max(o+1,Math.floor((s+1)*t.height/8));for(let c=0;c<9;c++){let u=Math.floor(c*t.width/9),f=Math.max(u+1,Math.floor((c+1)*t.width/9)),l=0;for(let d=o;d<a;d++)for(let h=u;h<f;h++){let m=(d*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];l+=b*p+255*(1-p)}r.push(l/((f-u)*(a-o)))}}let i=0n;for(let s=0;s<8;s++)for(let o=0;o<8;o++)i=i<<1n|(r[s*9+o]>r[s*9+o+1]?1n:0n);return i.toString(16).padStart(16,"0")}function v5(t,e){let n=BigInt(`0x${t}`)^BigInt(`0x${e}`),r=0;while(n>0n)r+=Number(n&1n),n>>=1n;return r}function eM(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)))<$5&&v5(t.hash,e.hash)<=w5}var nM={score:Number.POSITIVE_INFINITY,far:1,x:0,y:0,scale:0};function kf(t,e){let n=Math.max(1,Math.round(t.width*e)),r=Math.max(1,Math.round(t.height*e));return Gr(t,{x:0,y:0,w:t.width,h:t.height},n,r)}function ZE(t,e,n,r,i,s,o){let a=[];for(let u=0;u<t.width*t.height;u++)if(t.data[u*4+3]>=pt.solid)a.push(u);let c=nM;if(a.length===0)return c;for(let u=i;u<=s;u++)for(let f=n;f<=r;f++){let l=0,d=0;for(let h of a){let m=h%t.width,p=f+m,b=u+(h-m)/t.width,$=255;if(p>=0&&b>=0&&p<e.width&&b<e.height){let k=h*4,S=(b*e.width+p)*4;$=Math.max(Math.abs(t.data[k]-e.data[S]),Math.abs(t.data[k+1]-e.data[S+1]),Math.abs(t.data[k+2]-e.data[S+2]))}if(l+=$,$>pt.far)d++;if(l>c.score*a.length)break}if(l/a.length<c.score)c={score:l/a.length,far:d/a.length,x:f,y:u,scale:o}}return c}function rM(t,e){let n=0;for(let f=3;f<t.data.length;f+=4)if(t.data[f]>=pt.solid)n++;let r=n/(t.width*t.height);if(r<pt.least||r>pt.most)return!1;let i=Math.max(e.width,e.height),s=new Set([1,e.width/t.width,e.height/t.height]);for(let f=pt.smallest;f<=pt.largest;f*=pt.step)s.add(f);let o=kf(e,pt.coarse/i),a=[];for(let f of s){let l=pt.coarse/i*f;if(t.width*f>e.width*pt.overhang||t.height*f>e.height*pt.overhang)continue;if(t.width*l<pt.tiny||t.height*l<pt.tiny)continue;let d=kf(t,l);a.push(ZE(d,o,-1,o.width-d.width+1,-1,o.height-d.height+1,f))}a.sort((f,l)=>f.score-l.score);let c=kf(e,pt.fine/i),u=nM;for(let f of a.slice(0,pt.guesses))for(let l of pt.nudges){let d=f.scale*l,h=kf(t,pt.fine/i*d),m=Math.round(f.x*pt.fine/pt.coarse),p=Math.round(f.y*pt.fine/pt.coarse),b=ZE(h,c,m-pt.reach,m+pt.reach,p-pt.reach,p+pt.reach,d);if(b.score<u.score)u=b}return u.score<=pt.score&&u.far<=pt.outliers}var O5={thumb:"tile",band:"band",match:"tile",twin:"view",show:"view",backdrop:"view",redraw:"view"},sa;async function P5(t){if(t.job==="twin"){let r=sa?.from===t.whole?sa.inked.image:An(new Uint8Array(Fc(t.whole)),fe);return rM(An(new Uint8Array(Fc(t.cut)),fe),r)}if(t.job==="redraw")return $f(t.home,t.name,t.key,t.paint,t.blur,t.aligns,t.user);if(t.job==="show"){if(sa?.from!==t.from){let o=An(new Uint8Array(Fc(t.from)),fe);sa={from:t.from,clear:or(o),inked:$h(o,t.cut)}}let{image:r,fill:i,opacity:s}=N$(sa.inked,t.colors,t.tone,t.width,t.height,t.blur,t.tune,t.coloring);return S5(E5(t.to),{recursive:!0}),iM(t.to,qe(r)),{clear:sa.clear,fill:i,opacity:s}}let e=An(new Uint8Array(Fc(t.from)),fe);if(t.job==="backdrop"){Au(t.home,t.colors,t.tone,e,{...t.origin,bytes:new Uint8Array(Fc(t.source)),cut:t.from!==t.source},t,t.blur,t.coloring);let r=t.tune&&ke(t.home,t.colors.name).find((i)=>i.key===he(t.origin));if(t.tune&&r)Fa(X(t.home),r,t.tune,t.aligns??!0,t.user??t.home);return 0}if(t.job==="match")return{match:WE(e,t.colors),hash:tM(e)};if(t.job==="thumb")return H(t.to,qe(f0(e,t.width,t.height))),0;let n=e.data.subarray(t.y*e.width*4,(t.y+t.height)*e.width*4);return iM(t.to,qe({width:e.width,height:t.height,data:n})),0}function I5(t){t.on("message",async(e)=>{try{t.postMessage({id:e.id,value:await P5(e)})}catch(n){t.postMessage({id:e.id,error:n instanceof Error?n.message:String(n)})}})}class Cg{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 x5(import.meta.filename);t.unref(),t.on("message",({id:n,value:r,error:i})=>{let s=this.waiting.get(n);if(this.waiting.delete(n),this.waiting.size===0)t.unref();if(i!==void 0)s?.no(Error(i));else s?.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 Cc{lines=new Map;run(t){let e=O5[t.job],n=this.lines.get(e);if(!n)n=new Cg,this.lines.set(e,n);return n.send(t)}close(){for(let t of this.lines.values())t.close();this.lines.clear()}}class jg{lines;constructor(t){this.lines=Array.from({length:Math.max(1,t)},()=>new Cg)}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(s){e[i]=s instanceof Error?s:Error(String(s))}}})),e}close(){for(let t of this.lines)t.close()}}if(!M5&&sM)I5(sM);import{existsSync as R5,mkdtempSync as A5,readFileSync as N5,rmSync as oM,writeFileSync as T5}from"node:fs";import{tmpdir as H5}from"node:os";import{basename as cM,join as aM}from"node:path";var L5=6;class _g{dir;made=[];of(t,e){this.dir??=A5(aM(H5(),"ttheme-tint-"));let n=aM(this.dir,`${cM(t,".png")}.${e.slice(1).toLowerCase()}.png`);if(!R5(n)){let r=new Uint8Array(N5(t));T5(n,lu(r,e)??cr(ar(Wt(r)),e)),this.made.push(n);while(this.made.length>L5)oM(this.made.shift(),{force:!0})}return n}clear(){if(this.dir)oM(this.dir,{recursive:!0,force:!0});this.dir=void 0,this.made.length=0}}function uM(t,e,n,r,i){if(Je(t)==="original")return e;let s=Fn(n,[...r]);return s.color===t.tone?e:i.of(e,s.color)}function lM(t,e){let n=cM(e);return t.find((r)=>n.startsWith(`${r.stem}.`)||n.startsWith(`${r.stem}@`))}var U5=2147483625,hM=2147483626,Zn=2147483627,W5=-1073741831,mM=-1073741830,K5=-1073741829,z5=4;function D5(t,e,n,r,i){let s=Math.trunc,o=n.col*r.w,a=n.row*r.h,c=s((Math.max(i.x,o)+r.w-1)/r.w),u=s(Math.min(i.x+i.w,o+n.cols*r.w)/r.w),f=s((Math.max(i.y,a)+r.h-1)/r.h),l=s(Math.min(i.y+i.h,a+n.rows*r.h)/r.h);if(u<=c||l<=f)return;return{col:c,row:f,cols:u-c,rows:l-f,x:s((c*r.w-i.x)*t/i.w),y:s((f*r.h-i.y)*e/i.h),w:s((u-c)*r.w*t/i.w),h:s((l-f)*r.h*e/i.h)}}function q5(t){try{let e=j5(t,"r"),n=Buffer.alloc(24);return _5(e,n,0,24,0),F5(e),n.readUInt32BE(0)===2303741511?{width:n.readUInt32BE(16),height:n.readUInt32BE(20)}:void 0}catch{return}}class yf{ready=()=>{};cell={w:0,h:0};held;tints=new _g;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(Ct(t)||!Oo(t,r)||!(Po(t)||ns(t)))return;return new yf(t,e,n)}constructor(t,e,n){this.home=e,this.name=n,this.views=ns(t),this.banded=ml(t),this.files=pl(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=X(this.home),e=Le(t,this.name,B5()),n=[];try{n=Tt(t).palettes[this.name]?.pictures??[]}catch{}let r=e?lM(n,e.image):void 0;this.held=e&&r?{picture:r,image:e.image,opacity:e.opacity,cover:e.cover,at:Jt.indexOf(e.position)+1||5}:void 0}draw(t,e,n,r,i,s={col:0,row:0,cols:r,rows:i}){if(this.cell.w===0)return"";let o=t[0],a=this.look(t,e,n,s,!this.views||s.cols===r&&s.rows===i);if(this.views){let u=r*this.cell.w,f=i*this.cell.h,l=a?`${o}|${a.image}|${a.opacity}|${u}|${f}|${a.box.w}|${a.box.h}|${a.box.x}|${a.box.y}|${this.held?.at??5}`:`${o}||1|${u}|${f}|0|0|0|0|5`;if(l===this.viewed)return"";return this.viewed=l,rs(l)}let c=this.layer(U5,W5,"f=24",Buffer.from(ct(o)),s);if(a){let u=Math.max(0,Math.min(255,Math.round((1-a.opacity)*255)));c+=this.picture(a),c+=this.layer(hM,K5,"f=32",Buffer.from([...ct(o),u]),s)}else c+=this.drop(Zn)+this.drop(hM);return c}resized(){this.sent.clear(),this.placed.clear(),this.viewed=""}clear(){let t=this.views&&this.viewed?rs(""):"";for(let e of this.sent.keys())t+=Ic(e);return this.resized(),t}close(){let t=this.clear();if(this.tints.clear(),this.renders?.close(),this.scratch)fM(this.scratch,{recursive:!0,force:!0});return t}look(t,e,n,r,i){let s=this.held;if(!s)return;let o={name:this.name,...ae([...t]),waived:[...n]},a=uM(s.picture,s.image,o,e,this.tints),c=q5(a);if(!c)return;let u=lo(c.width,c.height,r.cols*this.cell.w,r.rows*this.cell.h,100,s.at,s.cover&&i),f={...u,x:u.x+r.col*this.cell.w,y:u.y+r.row*this.cell.h},l=D5(c.width,c.height,r,this.cell,f);if(!l)return;return{image:a,opacity:s.opacity,...c,box:f,rect:l}}layer(t,e,n,r,i){let s=r.toString("base64"),o=`${s}|${i.col}|${i.row}|${i.cols}|${i.rows}`;if(this.placed.get(t)===o)return"";return this.sent.set(t,o),this.placed.set(t,o),`\x1B_Ga=t,${n},s=1,v=1,i=${t},q=2;${s}\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 s=this.band(t.image,n.y,n.h);if(!s.ready)return"";e=s.path,n={...n,y:0}}let r="";if(this.sent.get(Zn)!==e){let s=sf({id:Zn,path:e,row:0,col:0,cols:0,rows:0,z:mM},this.files);if(s===void 0)return"";r+=s,this.sent.set(Zn,e),this.placed.delete(Zn)}let i=`${n.col};${n.row};${n.cols};${n.rows};${n.x};${n.y};${n.w};${n.h}`;if(this.placed.get(Zn)!==i)r+=`\x1B[${n.row+1};${n.col+1}H\x1B_Ga=p,i=${Zn},p=${Zn},x=${n.x},y=${n.y},w=${n.w},h=${n.h},c=${n.cols},r=${n.rows},C=1,z=${mM},q=2\x1B\\`,this.placed.set(Zn,i);return r}drop(t){if(!this.sent.has(t))return"";return this.sent.delete(t),this.placed.delete(t),Ic(t)}band(t,e,n){let r=`${t}|${e}|${n}`,i=this.bands.get(r);if(i)return i;this.scratch??=C5(dM(G5(),"ttheme-edit-")),this.renders??=new Cc;let s={path:dM(this.scratch,`band-${++this.made}.png`),ready:!1};this.bands.set(r,s),this.renders.run({job:"band",from:t,to:s.path,y:e,height:n}).then(()=>{s.ready=!0,this.ready()}).catch(()=>{});for(let[o,a]of this.bands){if(this.bands.size<=z5)break;if(a.ready&&a.path!==this.sent.get(Zn))this.bands.delete(o),fM(a.path,{force:!0})}return s}}var Is=50;function ut(t,e){return Ve(t,e)}function jc(t){return Mt(t)>0.35?"#000000":"#ffffff"}function Bg(t,e){return t.held!==void 0&&t.held-e.c>0.0005?t.held:void 0}function vf(t,e,n,r){let i=e.mode==="tune"&&e.channel===oe,s=e.ratio(),{floor:o}=e.partner(),a=(p)=>Math.round(Math.log(Math.max(1,p))/Math.log(21)*(n-1)),c=a(s),u=o===void 0?-1:a(o),f=r===void 0?-1:a(r),l=i?"━":"─",d=Array.from({length:n},(p,b)=>b===c?t.bold("●"):b===f?"○":b===u?"┃":b<u?t.dim(l):l).join(""),h=`${s.toFixed(2)}:1`.padStart(6),m={kind:"channel",channel:oe};return`${ut(m,i?t.bold("▸◐"):t.dim(" ◐"))} ${ut({kind:"bar",channel:oe},d)} ${ut(m,i?t.bold(h):t.dim(h))}`}function Sf(t,e){if(!t.misses().has(e))return;if(Ig(t.list,t.signature,t.waive,"bright-follows").includes(e))return e-L.length<8?"= makes the bright follow its normal":"= on the normal makes this follow it";return"f moves the colors the gate misses"}function Ef(t,e,n){let r=Ag(t.list,t.signature,t.waive,e),i=Bg(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}function Mf(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 pM(t){return`${t.l.toFixed(2)} ${t.c.toFixed(3)} ${t.h.toFixed(0).padStart(3)}°`}function J5(t,e,n,r=Is){let i=Ng(e.list,e.signature,e.waive).sort((u,f)=>Number(u.ok!==!1)-Number(f.ok!==!1)),s=i.filter((u)=>u.ok===!1).length,o=` ${t.dim("Gate")} ${s===0?t.dim("passes"):t.bold(`${s} ${s===1?"miss":"misses"}`)}`,a=r-4,c=i.flatMap((u)=>{let f=`${u.value} ${u.bound}`,l=` ${Yu(t,u.ok)} ${Rt(u.ok===!1?u.label:t.dim(u.label),t.dim(f),a-2)}`,d=[...new Set(u.slots)].map((p)=>We(p).name),h=u.slots[0],m=(p)=>h===void 0?p:ut({kind:"slot",slot:h},p);return d.length>0?[m(l),m(` ${t.dim(tt(d.join(" · "),a-2))}`)]:[m(l)]});return[s===0?o:Rt(o,`${t.bold("n")} ${t.dim("next miss")}`,r-2),...c.slice(0,Math.max(0,n-1))]}function gM(t,e){let n=t-L.length;if(n>=0)return e===String(n)||e===`B${n}`||e===`K${n}`;return t===3&&e==="s"||t===2&&e==="c"}function xf(t,e,n,r){let i=r?wt("under"):"";if(n==="d")return`${t.fg(e.foreground)}${wt("dim")}${i}`;if(n==="b")return`${t.fg(e.foreground)}${wt("bold")}${i}`;if(n==="s")return`${t.bg(e.selection)}${t.fg(e.foreground)}${i}`;if(n==="c")return`${t.bg(e.cursor)}${i}`;let s=/^([BK]?)(\d+)$/.exec(n);if(!s)return`${t.fg(e.foreground)}${i}`;let o=e.ansi[Number(s[2])];if(s[1]==="K")return`${t.fg(e.ansi[0])}${t.bg(o)}${i}`;return`${t.fg(o)}${s[1]==="B"?wt("bold"):""}${i}`}function _c(t,e,n,r,i){let s=e.length-1,o=Math.max(0,Math.min(s,n)),a=i===void 0?-1:Math.max(0,Math.min(s,i));if(!t.color)return e.map((c,u)=>u===o?"●":u===a?"○":r?"━":"─").join("");return e.map((c,u)=>{let f=c??"#000000";if(u===o)return`${t.bg(f)}${t.fg(jc(f))}${R.on}${pe}`;if(u===a)return c?`${t.bg(c)}${t.fg(jc(c))}${R.off}${pe}`:`${t.fg("#aaaaaa")}${R.off}`;return c?`${t.fg(c)}█`:`${t.fg(r?"#777777":"#555555")}░`}).join("").concat($t)}function Of(t,e,n){return Array.from({length:n},(r,i)=>{let s=e.min+(e.max-e.min)*i/(n-1),o={...t,[e.key]:s};return Yn(o.l,o.c,o.h)?rn(o.l,o.c,o.h):void 0})}function Rs(t,e,n,r){return Math.round((t-e)/(n-e)*(r-1))}function Gg(t){return Ng(t.list,t.signature,t.waive).filter((e)=>e.ok===!1).length}function Bc(t,e,n,r){if(n<3)return[];let i=Gg(e),s=i===0?" Gate ✓ passes ":` Gate ✗ ${i} · n next `;return[t.dim(Bt(r,"top",[[2,s]])),...J5(t,e,n-1,r-1).slice(1).map((o)=>Xe(t,o,r)),t.dim(Bt(r,"bottom"))]}var Pr=0.98,Gc=0.12,Y5=0.37,bM=0.74,V5=0.15,Z5=-1073741828,Ug=-1073741827,Wg=-1073741826,X5=-1073741825,Q5=2147483584,t4=["panel","plane","hue","contrast","mark","hue-thumb","contrast-thumb","origin","hue-origin","contrast-origin"],e4=4096;function Uc(t,e){return na(t,e,Y5)}function If(t,e,n){let r=Uc(t,n);return r>0.000001?Math.min(1,e/r):0}function Wc(t,e){return{width:t,height:e,data:new Uint8Array(t*e*4)}}function vi(t,e,n,r,i){let s=r[3]*i;if(s<=0||e<0||n<0||e>=t.width||n>=t.height)return;let o=(n*t.width+e)*4,a=t.data;if(s>=1){a[o]=r[0],a[o+1]=r[1],a[o+2]=r[2],a[o+3]=255;return}let c=a[o+3]/255,u=s+c*(1-s);for(let f=0;f<3;f++)a[o+f]=Math.round((r[f]*s+a[o+f]*c*(1-s))/u);a[o+3]=Math.round(u*255)}function Or(t,e=1){return[...ct(t),e]}function aa(t,e,n,r,i,s,o){let a=Math.abs(t-(n+i/2))-(i/2-o),c=Math.abs(e-(r+s/2))-(s/2-o);return Math.hypot(Math.max(a,0),Math.max(c,0))+Math.min(Math.max(a,c),0)-o}function As(t,e,n,r){let i=[],s=[],o=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 f=a;f<u;f++)for(let l=o;l<c;l++){let d=n(l+0.5,f+0.5);if(d>0.002)i.push(f*t+l),s.push(Math.min(1,d))}return{at:Uint32Array.from(i),cover:Float32Array.from(s)}}function Ns(t,e,n){for(let r=0;r<e.at.length;r++){let i=e.at[r];vi(t,i%t.width,Math.floor(i/t.width),n,e.cover[r])}}function Kg(t,e){return(n,r)=>Math.max(0,0.5-aa(n,r,t.x,t.y,t.w,t.h,e))}function wM(t,e,n){return(r,i)=>Math.max(0,0.5-Math.abs(aa(r,i,t.x,t.y,t.w,t.h,e)+n/2)+n/2)}var Pf=new Map;function n4(t,e,n,r){let i=`${e.w}x${e.h} ${yM({...t,ground:"#000000",ink:"#000000",accent:"#000000"})}`,s=Pf.get(i);if(s)return s;let{panel:o}=t,a={x:e.w,y:0,w:o.cols*e.w,h:o.rows*e.h},c=Math.round(e.h*0.45),u=Math.round(e.h*0.18),f=e.h*0.6,l=Math.max(1,Math.round(e.h/22)),d=(N)=>({x:(N.col-o.col+1)*e.w,y:(N.row-o.row)*e.h}),h=Math.max(1,Math.round(e.h*0.08)),m=d(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*$},S=d(t.field),v={x:S.x,y:S.y+h,w:t.field.cols*e.w,h:e.h-2*h},x=t.divider===void 0?void 0:{x:a.x+e.w*0.6,y:(t.divider-o.row)*e.h,w:a.w-e.w*1.2,h:l},M={shadow:As(n,r,(N,C)=>{let I=aa(N,C,a.x,u,a.w,a.h,c);return I>0&&I<f?(1-I/f)**2:0}),fill:As(n,r,Kg(a,c),a),border:As(n,r,wM(a,c,l),a),track:As(n,r,Kg(p,p.h*0.3),p),segment:As(n,r,Kg(k,k.h*0.3),k),field:As(n,r,wM(v,v.h*0.3,l),v),divider:x&&As(n,r,()=>1,x)};if(Pf.size>8)Pf.clear();return Pf.set(i,M),M}function r4(t){let e=Mt(t.ground)<0.18;return{dark:e,surface:Nt(t.ground,t.ink,e?0.07:0.04)}}function i4(t,e){let n=Wc((t.panel.cols+2)*e.w,(t.panel.rows+1)*e.h),r=n4(t,e,n.width,n.height),{dark:i,surface:s}=r4(t);if(Ns(n,r.shadow,[0,0,0,i?0.45:0.18]),Ns(n,r.fill,Or(s)),Ns(n,r.border,Or(t.ink,i?0.16:0.2)),Ns(n,r.track,Or(t.ink,i?0.06:0.07)),Ns(n,r.segment,Or(t.accent,i?0.24:0.2)),Ns(n,r.field,Or(t.ink,i?0.22:0.28)),r.divider)Ns(n,r.divider,Or(t.ink,i?0.12:0.16));return n}function s4(t,e,n){let r=Wc(Math.round(t.cols*n.w),Math.round(t.rows*n.h)),{width:i,height:s,data:o}=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)),f=t.rows*2-1,l=(h)=>Pr-Math.min(1,Math.max(0,((h+0.5)/n.h*2-0.5)/f))*(Pr-Gc),d=[];for(let h=0;h<s;h++){if(h%2===0){let m=l(h+0.5),p=Uc(m,e);d=Array.from({length:Math.ceil(i/2)},(b,$)=>Yn(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>=s-a)?Math.min(1,Math.max(0,0.5-aa(m+0.5,h+0.5,0,0,i,s,a))):1;if(b<=0)continue;let $=d[m>>1],k=(h*i+m)*4;o[k]=$[0],o[k+1]=$[1],o[k+2]=$[2],o[k+3]=Math.round(b*255)}}return r}function kM(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 o4(t,e){let n=Wc(t.cols*e.w,e.h),{top:r,height:i,width:s}=kM(e,t.cols),o=Array.from({length:s},(a,c)=>{let f=Math.min(1,Math.max(0,((c+0.5)/e.w-0.5)/Math.max(1,t.cols-1)))*360;return Yn(bM,na(bM,f,V5),f)??[0,0,0]});for(let a=r;a<r+i;a++)for(let c=0;c<s;c++){let u=Math.min(1,Math.max(0,0.5-aa(c+0.5,a+0.5,0,r,s,i,i/2))),f=o[c];vi(n,c,a,[f[0],f[1],f[2],1],u)}return n}function a4(t,e,n){let r=Wc(t.cols*n.w,n.h),{top:i,height:s,width:o}=kM(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(s*0.45)),u=i+Math.round((s-c)/2);for(let f=u;f<u+c;f++)for(let l=0;l<o;l++){let d=Math.min(1,Math.max(0,0.5-aa(l+0.5,f+0.5,0,u,o,c,c/2))),h=a<0||l>=a;vi(r,l,f,Or(e,h?t.lit?0.5:0.36:0.14),d)}if(a>=0){let f=Math.max(2,Math.round(n.w/5));for(let l=i-1;l<i+s+1;l++)for(let d=a-Math.floor(f/2);d<a-Math.floor(f/2)+f;d++)vi(r,d,l,Or(e,0.85),1)}return r}function c4(t,e,n,r,i,s,o){let a=Wc(t*o.w,e*o.h),c=Math.max(2,Math.round(i*0.3)),u=(l,d)=>Math.min(1,Math.max(0,l-d+0.5)),f=[0,0,0,0.5];for(let l=0;l<a.height;l++)for(let d=0;d<a.width;d++){let h=Math.hypot(d+0.5-n,l+0.5-r);if(s)vi(a,d,l,Or(s),u(i-c,h));else vi(a,d,l,f,u(i-c,h)-u(i-c-1,h));vi(a,d,l,f,u(i+1,h)-u(i,h)),vi(a,d,l,[255,255,255,1],u(i,h)-u(i-c,h))}return a}function oa(t,e,n,r,i,s,o=X5){let a=Math.floor((e-r-2)/s.w),c=Math.floor((e+r+2)/s.w),u=Math.floor((n-r-2)/s.h),f=Math.floor((n+r+2)/s.h),l={row:u,col:a,cols:c-a+1,rows:f-u+1},d=Math.round((e-a*s.w)*2)/2,h=Math.round((n-u*s.h)*2)/2;return{name:t,key:`${l.cols}x${l.rows} ${d},${h} ${r} ${i??"-"}`,box:l,z:o,paint:()=>c4(l.cols,l.rows,d,h,r,i,s)}}function yM(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 u4(t,e){let n=`${e.w}x${e.h}`,r=Math.max(4,Math.round(e.h*0.34)),i=(l,d)=>(l.col+0.5+d*(l.cols-1))*e.w,s=(l)=>(l.row+0.5)*e.h,o=t.plane,a=(l)=>{let d=(Pr-l)/(Pr-Gc)*(o.rows*2-1);return o.row*e.h+(Math.min(o.rows*2-1,Math.max(0,d))+0.5)*e.h/2},c=a(o.l),u=[{name:"panel",key:`${n} ${yM(t)}`,box:{row:t.panel.row,col:t.panel.col-1,cols:t.panel.cols+2,rows:t.panel.rows+1},z:Z5,paint:()=>i4(t,e)},{name:"plane",key:`${n} ${o.cols}x${o.rows} ${o.h.toFixed(2)}`,box:o,z:Ug,paint:()=>s4(o,o.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:Ug,paint:()=>o4(t.hue,e)},{name:"contrast",key:`${n} ${t.contrast.cols} ${t.contrast.floor??"-"} ${t.contrast.lit} ${t.ink}`,box:{...t.contrast,rows:1},z:Ug,paint:()=>a4(t.contrast,t.ink,e)},oa("mark",i(o,If(o.l,o.c,o.h)),c,r,void 0,e),oa("hue-thumb",i(t.hue,t.hue.h/360),s(t.hue),r,t.hue.color,e),oa("contrast-thumb",i(t.contrast,t.contrast.at),s(t.contrast),r,t.contrast.color,e)],f=t.origin;if(f){let l=Math.max(3,Math.round(r*0.55));u.push(oa("origin",i(o,If(f.l,f.c,f.h)),a(f.l),l,f.color,e,Wg),oa("hue-origin",i(t.hue,f.h/360),s(t.hue),l,f.color,e,Wg),oa("contrast-origin",i(t.contrast,f.at),s(t.contrast),l,f.color,e,Wg))}return u}function l4(t,e){let r=e.toString("base64").match(new RegExp(`.{1,${e4}}`,"g"))??[""];return r.map((i,s)=>{let o=s<r.length-1?1:0;return s===0?`\x1B_Ga=t,f=100,i=${t},m=${o},q=2;${i}\x1B\\`:`\x1B_Gm=${o},q=2;${i}\x1B\\`}).join("")}function $M(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 zg(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}class Rf{cell={w:0,h:0};shown=new Map;static of(t,e){return Ct(t)||!Oo(t,e)||!Po(t)?void 0:new Rf}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?u4(t,this.cell):[],n="";for(let r of e)n+=this.put(r);for(let[r,i]of this.shown)if(!e.some((s)=>s.name===r))n+=zg(i.id),this.shown.delete(r);return n}clear(){let t=[...this.shown.values()].map((e)=>zg(e.id)).join("");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,$M(n.id,t.box,t.z)}let r=Q5+t4.indexOf(t.name)*2,i=n?.id===r?r+1:r;return this.shown.set(t.name,{key:t.key,id:i,at:e}),`${l4(i,qe(t.paint()))}${$M(i,t.box,t.z)}${n?zg(n.id):""}`}}var Kc=34,Dg=2,f4=6,Nf=3,d4=7,SM="↑↓ L ←→ C ⇧←→ H tab ◐";function h4(t,e,n){let r="",i=0;for(let s of t){let o=i+B(s);if(o>e&&i<n)r+=i>=e&&o<=n?s:" ".repeat(Math.min(o,n)-Math.max(i,e));if(i=o,i>=n)break}return r}function Tf(t){return t.reduce((e,n)=>e+B(n.text),0)}function Hf(t,e,n){let r=[],i=0;for(let s of t){let o=B(s.text),a=Math.max(e,i),c=Math.min(n,i+o);if(c>a)r.push({...s,text:h4(s.text,a-i,c-i)});i+=o}return r}function m4(t,e,n){return[...Hf(t,0,e),...n,...Hf(t,e+Tf(n),Tf(t))]}function p4(t,e){return t.map((n)=>{let r=e&&n.sgr?`${n.sgr}${n.text}${Se}`:n.text;return n.target?Ve(n.target,r):r}).join("")}function EM(t){return t<L.length?L[t]:Mn[(t-L.length)%8]}function MM(t,e,n,r){let i=t.signature.includes(Vn[n])?R.signature:e.color?R.swatch:" ";return e.color?`${e.fg(t.list[n])}${i}${r}`:i}function xM(t,e,n,r,i){return r.has(n)?e.bold(R.miss):t.changed(n)?e.color?`${wt("warn")}${R.on}${i}`:R.on:" "}function OM(t,e,n){return n?t.color?`${t.fg(e.cursor)}${R.gutter}${$t} `:`${R.gutter} `:" "}function g4(t,e,n,r,i,s){let o=r===t.slot(),a=o?e.fg(n.foreground):$t,c=EM(r).padEnd(12),u=t.lch[r],f=`${OM(e,n,o)}${MM(t,e,r,a)} ${o?e.bold(c):c}${pM(u)} ${xM(t,e,r,s,a)}`,l=tt(f,i);return ut({kind:"open",slot:r},o&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${l}${pe}`:l)}var qg=8,PM=44;function Dc(t){return t>=PM?16:11}function vM(t,e,n,r,i,s){let o=Dc(i);if(!t.visible(r))return" ".repeat(o);let a=r===t.slot(),c=a&&e.color?e.fg(n.foreground):$t,u=t.lch[r],f=(p,b)=>p.toFixed(b).replace(/^0(?=\.)/,""),l=`${u.h.toFixed(0).padStart(3)}°`,d=i>=PM?`${f(u.l,2)} ${f(u.c,3)} ${l}`:`${f(u.l,2)} ${l}`,h=`${MM(t,e,r,c)} ${d}${xM(t,e,r,s,c)}`,m=a&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${h}${pe}`:h;return ut({kind:"open",slot:r},m)}function b4(t,e,n,r,i,s){let o=L.length+r,a=o+8,c=t.row===o,u=Mn[r].padEnd(qg),f=t.linkOf(a)!==void 0?e.dim("⇠"):" ";return`${ut({kind:"open",slot:o},`${OM(e,n,c)}${c?e.bold(u):u}`)}${vM(t,e,n,o,i,s)}${f} ${vM(t,e,n,a,i,s)}`}function IM(t){return 14+2*Dc(t)}function w4(t){let e=Dc(t)>=16;return[[2," ANSI "],[2+qg,e?" Normal 0–7 ":" Normal "],[5+qg+Dc(t),e?" Bright 8–15 ":" Bright "]]}function $4(t,e,n,r){let i=t.slot(),s=We(i),o=IM(r),a=o-2,c=` ${s.name}${i>=L.length?` · ${s.about}`:""} `,u=[` ${e.dim(jE(i))}`];if(i>=2){let l=cE(n,i).filter((m)=>m.count>0),d=l.length>0?l.map((m)=>`${m.name} ${m.count}`).join(" · "):"none",h=ge("w",t.where?Ze(e,"w where"):e.dim("w where"));u.push(Rt(` ${e.dim("Shown in")} ${d}`,`${h} `,a))}let f=i-L.length;if(f===0||f===7||f===8||f===15){let l=t.lch[i].l,d=t.lch[0].l,h=t.lch[1].l,m=Math.abs(l-d)<=Math.abs(l-h)?"the background":"the text";u.push(` ${e.dim(`L ${l.toFixed(2)} reads near ${m}`)}`)}return[e.dim(Bt(o,"top",[[2,c]])),...u.map((l)=>Xe(e,l,o)),e.dim(Bt(o,"bottom"))]}function Af(t,e){return Pr-t*(Pr-Gc)/(e*2-1)}function RM(t,e,n,r,i){let s=Af(Math.max(0,Math.min(e*2-1,t*2-0.5)),e),o=Math.max(0,Math.min(1,(n-0.5)/Math.max(1,r-1)));return{lightness:s,chroma:o*Uc(s,i)}}function k4(t,e,n,r,i,s){let o=(l)=>{let d=Math.max(0,Math.min(i*2-1,Math.round((Pr-l.l)/(Pr-Gc)*(i*2-1))));return{row:Math.floor(d/2),col:Math.round(If(l.l,l.c,l.h)*(r-1))}},{row:a,col:c}=o(e),u=s?o(s):{row:-1,col:-1},f=(l,d)=>{return`#${(Yn(l,d*Uc(l,e.h),e.h)??[0,0,0]).map((m)=>m.toString(16).padStart(2,"0")).join("")}`};return Array.from({length:i},(l,d)=>{let h="";for(let m=0;m<r;m++){if(d===a&&m===c){h+=t.color?`${t.bg(n)}${t.fg(jc(n))}${R.on}${pe}`:R.on;continue}let p=m/Math.max(1,r-1);if(d===u.row&&m===u.col){let b=f(Af(d*2+1,i),p);h+=t.color?`${t.bg(b)}${t.fg(jc(b))}${R.off}${pe}`:R.off;continue}h+=t.color?`${t.fg(f(Af(d*2,i),p))}${t.bg(f(Af(d*2+1,i),p))}▀${pe}`:"·"}return ut({kind:"plane",row:d,rows:i},h)})}function AM(t,e,n){let r=t.slot(),i=t.lch[r],o=Ef(t,r,i).filter((c)=>c.ok===!1||c.text.startsWith("Chroma ○")).flatMap((c)=>Ft(c.text,n-2).map((u,f)=>`${f===0?c.ok===!1?e.bold(R.miss):e.dim(R.off):" "} ${u}`)),a=Sf(t,r);return[...o.slice(0,3),...a?[e.dim(a)]:[]]}function NM(t,e,n){let r=t.pair(t.slot());if(!r)return;let i=t.slot()>=r.bright,s=EM(i?r.normal:r.bright).toLowerCase(),o=`${r.lift>=0?"+":""}${r.lift.toFixed(2)}`,a=n-9,c=i?r.on?[`⇠ Linked to ${s} · L ${o}`,`⇠ ${s} · L ${o}`,`⇠ ${s}`]:[`Not linked to ${s}`,"Not linked"]:r.on?[`Bright follows · L ${o}`,"Bright follows"]:["Its bright moves on its own","Moves on its own"],u=c.find((f)=>B(f)<=a)??c.at(-1)??"";return Rt(e.dim(u),ge("l",`${e.bold("l")} ${e.dim(r.on?"unlink":"link")}`),n)}function TM(t,e,n){let r=t.slot(),i=t.list[r],s=t.lch[r],o=t.typing!==void 0?e.bold(`${t.typing}▏`):ge("#",e.bold(BE(t.format,i,s))),a=t.start[r],c=e.color?`${e.fg(a)}${R.swatch}${$t} `:"";return Rt(o,a!==i?e.dim(`was ${c}${a}`):"",n)}function y4(t,e,n,r){let i=t.slot(),s=t.lch[i],o=t.list[i],a=n-4,c=e.dim("│"),u=(M)=>`${c} ${tt(M,a)} ${c}`,f=NM(t,e,a),l=6+(f?1:0),d=AM(t,e,a).slice(0,Math.max(0,r-l-Nf)),h=Math.max(Nf,Math.min(f4,r-l-d.length)),m=" L × C ",p=` H ${s.h.toFixed(0)}° `,b=Math.max(0,n-4-B(" L × C ")-B(p)),$=t.origin(),k=En[2],S=(M,N)=>ut({kind:"format",format:N},t.format===N?Ze(e,M):e.dim(` ${M} `)),v=tt(` ${SM} `,n-4,!1);return{lines:[`${e.dim("╭─")}${e.dim(" L × C ")}${e.dim("─".repeat(b))}${e.dim(p)}${e.dim("─╮")}`,...k4(e,s,o,a,h,$?.lch).map((M)=>u(M)),u(ut({kind:"bar",channel:2},_c(e,Of(s,k,a),Rs(s.h,k.min,k.max,a),t.mode==="tune"&&t.channel===2,$&&Rs($.lch.h,k.min,k.max,a)))),u(vf(e,t,Math.max(8,a-11),$?.ratio)),u(`${S("Hex","hex")} ${S("RGB","rgb")} ${S("OKLCH","oklch")}`),u(TM(t,e,a)),...f?[u(f)]:[],...d.map((M)=>u(M)),`${e.dim("╰─")}${e.dim(v)}${e.dim("─".repeat(Math.max(0,n-4-B(v))))}${e.dim("─╯")}`].map((M)=>ut({kind:"picker"},M))}}var zc=[["Hex","hex"],["RGB","rgb"],["OKLCH","oklch"]];function v4(t,e,n,r){let i=t.lch[t.slot()],s=n-2,o=NM(t,e,s),a=6+(o?1:0),c=AM(t,e,s).slice(0,Math.max(0,r-a-Nf)),u=Math.max(Nf,Math.min(d4,r-a-c.length)),f=(M)=>` ${tt(M,s)} `,l=[f(Rt(e.dim("L × C"),e.dim(`H ${i.h.toFixed(0)}°`),s)),...Array.from({length:u},(M,N)=>f(ut({kind:"plane",row:N,rows:u}," ".repeat(s))))],d=l.length;l.push(f(ut({kind:"bar",channel:2}," ".repeat(s))));let h=l.length,m=t.mode==="tune"&&t.channel===oe,p={kind:"channel",channel:oe},b=`${t.ratio().toFixed(2)}:1`.padStart(8),$=s-11;l.push(f(`${ut(p,m?e.bold("◐"):e.dim("◐"))} ${ut({kind:"bar",channel:oe}," ".repeat($))} ${ut(p,m?e.bold(b):e.dim(b))}`));let k=l.length,S=Math.floor(s/zc.length);l.push(f(zc.map(([M,N],C)=>{let I=C===zc.length-1?s-S*C:S,j=Math.floor((I-B(M))/2),U=`${" ".repeat(j)}${M}${" ".repeat(I-j-B(M))}`,G=t.format===N?e.color?e.accent(e.bold(U)):`[${M}]`.padEnd(I):e.dim(U);return ut({kind:"format",format:N},G)}).join("")));let v=l.length;l.push(f(` ${TM(t,e,s-2)} `));let x=o?l.length:void 0;if(o)l.push(f(o));return l.push(...c.map((M)=>f(M)),f(e.dim(SM))),{lines:l.map((M)=>ut({kind:"picker"},M)),parts:{plane:{row:1,col:1,cols:s,rows:u},hue:{row:d,col:1,cols:s,rows:1},contrast:{row:h,col:3,cols:$,rows:1},tabs:{row:k,col:1,cols:s,rows:1},field:{row:v,col:1,cols:s,rows:1},divider:x}}}function S4(t,e,n,r,i,s){let o=t.slot(),a=t.lch[o],c=t.list[o],u=(h)=>({row:r+h.row,col:i+h.col,cols:h.cols,rows:h.rows}),f=(h)=>Math.log(Math.max(1,h))/Math.log(21),l=t.partner().floor,d=t.origin();return{panel:{row:r,col:i,cols:n.plane.cols+2,rows:s},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:f(t.ratio()),floor:l===void 0?void 0:f(l),color:c,lit:t.channel===oe},tabs:{...u(n.tabs),active:zc.findIndex(([,h])=>h===t.format),count:zc.length},field:u(n.field),divider:n.divider===void 0?void 0:r+n.divider,origin:d&&{...d.lch,color:d.hex,at:f(d.ratio)}}}function E4(t,e,n,r,i,s,o,a){let u=s??1,f=o-1-u,l=u-2,d=12+2*Dc(r)-Dg,h=a?v4:y4,m=h(t,e,d,Number.POSITIVE_INFINITY),p=m.lines.length<=f||m.lines.length>l&&f>=l,b=p?f:l,$=m.lines.length<=b?m:h(t,e,d,b),k=p?u+1:u-$.lines.length,S=Array.from({length:o},(v,x)=>i[x]??"");return $.lines.forEach((v,x)=>{let M=k+x;if(M>=0&&M<o)S[M]=iy(S[M],Dg,v)}),{lines:S,art:$.parts&&S4(t,n,$.parts,k,Dg,$.lines.length)}}function M4(t,e,n,r,i){let s=r.side,o=Gg(t),a=t.changedOnly?e.warn(R.on):" ",c=o===0?e.dim("Gate ✓"):e.bold(`Gate ✗ ${o}`),u=Rt(` ${e.bold("Colors")} ${c}`,ge("m",`${t.changedOnly?e.bold("⧩ changed"):e.dim("⧩ changed")}${a} `),s),f=i-1,l=t.misses(),d=IM(s),h=[],m,p=[...L.keys()].filter((k)=>t.visible(k));if(p.length>0){h.push(e.dim(Bt(d,"top",[[2," Base "]])));for(let k of p){if(k===t.slot())m=h.length;h.push(Xe(e,g4(t,e,n,k,d-2,l),d))}}let b=[...Mn.keys()].filter((k)=>t.visible(L.length+k)||t.visible(L.length+k+8));if(b.length>0){h.push(e.dim(Bt(d,p.length>0?"mid":"top",w4(s))));for(let k of b){if(t.row===L.length+k)m=h.length;h.push(Xe(e,b4(t,e,n,k,s,l),d))}}if(p.length>0||b.length>0)h.push(e.dim(Bt(d,"bottom")));if(t.visible(t.slot()))h.push(...$4(t,e,r,s));let $=Bc(e,t,f-h.length,d);return h.push(...Array.from({length:Math.max(0,f-h.length-$.length)},()=>""),...$),{lines:[u,...h.slice(0,f)],anchor:m===void 0?void 0:m+1}}function x4(t,e,n){let r=`${e.accent(R.current)} ${e.bold(t.options.title)} ${e.dim(`· ${t.options.name}`)}`,i=t.dirty(),s=t.changes(),o=e.warn(R.on),a=i?`${o} ${e.dim(s>0?`unsaved · ${s} changed`:"unsaved")}`:"",c=[t.resettable()?ge("R",e.dim("Reset")):"",i?ge("s",Ze(e,"Save")):""].filter(Boolean).join(" "),u=[r,a,c].filter(Boolean).join(" "),f=(h,m,p)=>ge(h,p?Ze(e,m):e.dim(m)),d=[...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 Rt(u,`${d} `,n)}var O4={kind:"open",slot:0};function P4(t,e,n){return t.color?`${n?Yk:t.bg(e.background)}${t.fg(e.foreground)}`:""}function I4(t,e,n,r,i,s){let o=Tc(r),a=P4(e,n,s),c=t.slot();return Array.from({length:r.rows},(u,f)=>{let l=[{text:" ",sgr:a},...(o[f]??[]).map((m,p)=>{let b=i&&i.pane===r.id&&i.line===f&&i.run===p,$=e.color?b?`${a}${e.bg(n.foreground)}${e.fg(n.background)}`:`${a}${xf(e,n,m.role,pg(m.role,c))}${t.where&&!mg(m.role,c)?wt("dim"):""}`:"";return{text:m.text,sgr:$,target:{kind:"run",spot:{pane:r.id,line:f,run:p}}}})],d=Hf(l,0,r.width-1),h=r.width-Tf(d);return h>0?[...d,{text:" ".repeat(h),sgr:a,target:O4}]:d})}function R4(t,e,n){let r=t.slotsHere();if(!r)return;let i=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",s=e.color?`${i}${wt("dim")}`:"",o=(l)=>({text:l,sgr:s}),a="┌ Slots here ",c="└ enter its slot · esc ",u=[["text",r.text]];if(r.ground!==r.text)u.push(["ground",r.ground]);return[[o(`${a}${"─".repeat(Kc-B(a)-1)}┐`)],...u.map(([l,d])=>{let h={kind:"open",slot:d},m=t.shown()[d],p=d<L.length?"":We(d).about;return[{text:"│ ",sgr:s,target:h},{text:l.padEnd(7),sgr:s,target:h},{text:R.swatch,sgr:e.color?`${i}${e.fg(m)}`:"",target:h},{text:" ",sgr:i,target:h},{text:We(d).name.slice(0,14).padEnd(14),sgr:i,target:h},{text:p.padEnd(Kc-27),sgr:s,target:h},{text:" │",sgr:s,target:h}]}),[o(`${c}${"─".repeat(Kc-B(c)-1)}┘`)]].map((l)=>Hf(l,0,Kc))}function A4(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,s=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",o=e.color?`${s}${wt("dim")}`:"",a=t.menu==="export"?"Copy ":"Take from ";return[[{text:`┌ ${a}${"─".repeat(Math.max(0,i-3-a.length))}┐`,sgr:o}],...r.map((c,u)=>{let f=u===t.entry,l={kind:"entry",index:u};return[{text:"│",sgr:o},{text:` ${f?"▌":" "} ${c.padEnd(i-6)}`,sgr:f&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${wt("bold")}`:s,target:l},{text:"│",sgr:o}]}),[{text:`└${"─".repeat(i-2)}┘`,sgr:o}]]}var N4=["#ff5f57","#febc2e","#28c840"];function T4(t,e,n,r){let i=e.color?`${e.bg(HM(n))}${e.fg(n.foreground)}`:"",s=aE(),o=(t.scene%s.length+s.length)%s.length,a=[{text:" ",sgr:i},...N4.flatMap((u)=>[{text:"●",sgr:e.color?`${i}${e.fg(u)}`:""},{text:" ",sgr:i}]),{text:" ",sgr:i},...s.flatMap((u,f)=>{let l={kind:"scene",scene:f};return[f===o?{text:` ${u} `,sgr:e.color?`${i}${e.bg(Qi(n.background,n.foreground,"tab"))}${wt("bold")}`:"",target:l}:{text:` ${u} `,sgr:e.color?`${i}${wt("dim")}`:"",target:l},{text:" ",sgr:i}]})],c="⇧←→ ";return[...a,{text:" ".repeat(Math.max(0,r-Tf(a)-B("⇧←→ "))),sgr:i},{text:"⇧←→ ",sgr:e.color?`${i}${wt("dim")}`:""}]}function HM(t){return Qi(t.background,t.foreground,"bar")}function H4(t,e,n){let{frame:r}=n,i=Qi(e.background,e.foreground,"line"),s=t.color?`${t.bg(LM(e))}${t.fg(i)}`:"",o=t.color?`${t.bg(HM(e))}${t.fg(i)}`:"",a=(u,f)=>u===r.row||u===r.row+r.rows-1||f===r.col||f===r.col+r.cols-1,c=[];for(let[u,f]of hE(n.rules))for(let[l,d]of f)c.push([u,l,[{text:d,sgr:a(u,l)?s:o}]]);return c}function LM(t){return Qi(t.background,t.foreground,"stage")}function FM(t,e){return Nc(t,e,0)?.inner}function CM(t,e,n,r,i={}){let s=Nc(e,n,t.scene);if(!s)return;let o=je(r),a=t.shown(),c=ae(a),u=ae(i.chrome?[...i.chrome]:t.list),f=M4(t,o,u,s,n-1),l=t.mode==="tune"?E4(t,o,u,s.side,f.lines,f.anchor,n-1,r&&i.art===!0):{lines:f.lines,art:void 0},d=l.lines,h=i.behind===!0,m=t.inspect?uf(s,t.spot):void 0,p=o.color?o.bg(LM(u)):"",b=Array.from({length:n-3},()=>[{text:" ".repeat(s.width),sgr:p}]),$=(I,j,U)=>{let G=I-2;if(G>=0&&G<b.length)b[G]=m4(b[G],j,U)},k=s.side+1;for(let[I,j,U]of H4(o,u,s))$(I,j-k,U);for(let I of s.tiles)I4(t,o,c,I,m,h).forEach((j,U)=>{$(I.row+U,I.col-k,j)});$(s.title.row,s.title.col-k,T4(t,o,u,s.title.cols));let S=m?R4(t,o,c):void 0;if(m&&S){let I=s.tiles.find((U)=>U.id===m.pane),j=Tc(I)[m.line]?.[m.run];if(j){let U=Math.max(0,Math.min(I.col-k+1+j.col,s.width-Kc)),G=I.row+m.line,F=G+1,gt=F+S.length-2>n-2?G-S.length:F;S.forEach((Xt,at)=>{$(gt+at,U,Xt)})}}let v=A4(t,o,c);if(v){let I=Math.max(0,s.width-24-(t.menu==="import"?12:2));v.forEach((j,U)=>{$(2+U,I,j)})}let x=x4(t,o,s.width),M=o.dim("─".repeat(s.width)),N=o.dim("│");return{lines:Array.from({length:n-1},(I,j)=>{let U=j===0?x:j===1?M:p4(b[j-2]??[],r);return`${tt(d[j]??"",s.side)}${N}${U}`}),art:l.art}}var jM=80,_M=24,Jg=11;function L4(t,e,n,r){let i=Bg(e,n);return En.map((s,o)=>{let a=e.mode==="tune"&&o===e.channel,c=n[s.key],u=`${c.toFixed(s.digits)}${s.wraps?"°":""}`.padStart(6),f=_c(t,Of(n,s,r),Rs(c,s.min,s.max,r),a,s.key==="c"&&i!==void 0?Rs(i,s.min,s.max,r):void 0),l=s.key.toUpperCase(),d={kind:"channel",channel:o};return`${ut(d,a?t.bold(`▸${l}`):t.dim(` ${l}`))} ${ut({kind:"bar",channel:o},f)} ${ut(d,a?t.bold(u):t.dim(u))}`})}function F4(t,e){if(e.mode!=="tune"||e.slot()<L.length)return[];let n=ra.map((i)=>ut({kind:"scope",scope:i},i!==e.scope?t.dim(i):Ze(t,i))),r=e.scoped().length;return[`${t.dim("Scope")} ${n.join(" ")}`,t.dim(r>1?`${r} slots move by the same step, each keeping its own color`:"This slot moves alone · a widens it")]}var BM={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 C4(t){return`oklch ${t.l.toFixed(3)} ${t.c.toFixed(3)} ${t.h.toFixed(0)}°`}function j4(t,e){return`${t.dim("oklch")} ${t.bold(`${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(0)}°`)}`}function _4(t,e,n,r=Is){let i=e.misses(),s=ae(e.list),o=e.slot(),a=(l)=>{let d=e.list[l],h=l===o,m=e.signature.includes(Vn[l])?R.signature:t.color?R.swatch:" ",p=i.has(l)?R.miss:e.tone&&e.changed(l)?R.on:" ",$=`${t.color?`${t.fg(d)}${m}${h?t.fg(s.foreground):$t} `:`${m} `}${Mf(e.lch[l])}${p}`;if(!h)return ut({kind:"slot",slot:l},` ${$}`);return ut({kind:"slot",slot:l},t.color?`${t.bg(s.selection)}${t.fg(s.foreground)} ${$}${pe}`:`›${$}`)},c=(l)=>l?t.color?`${t.fg(s.cursor)}${R.gutter}${$t} `:`${R.gutter} `:" ",u=[t.dim(Bt(r,"top",[[2," Base "]])),...L.map((l,d)=>{let h=d===e.row,m=l.padEnd(10);return Xe(t,`${ut({kind:"slot",slot:d},`${c(h)}${h?t.bold(m):m}`)}${a(d)}`,r)}),t.dim(Bt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])),...Mn.map((l,d)=>{let h=L.length+d,m=h===e.row,p=l.padEnd(10),b=ut({kind:"slot",slot:h+(e.col===1?8:0)},`${c(m)}${m?t.bold(p):p}`);return Xe(t,`${b}${a(h)}${a(h+8)}`,r)}),t.dim(Bt(r,"bottom"))],f=Bc(t,e,n-u.length,r);return[...u,...Array.from({length:Math.max(0,n-u.length-f.length)},()=>""),...f]}function B4(t,e,n){let r=ae(e.list),i=[` ${t.dim("Seeds")}`,...Ss.map((s,o)=>{let a=o===e.field,c=e.seeds[s.key],u=Array.from({length:Jg},(b,$)=>{let k=s.min+(s.max-s.min)*$/(Jg-1);return BM[s.key](yi({...e.seeds,[s.key]:k}))}),f=_c(t,u,Rs(c,s.min,s.max,Jg),a),l=`${c.toFixed(s.digits)}${s.wraps?"°":""}`.padStart(6),d=BM[s.key](r),h=a?t.color?`${t.fg(r.cursor)}${R.gutter}${$t} `:`${R.gutter} `:" ",m=s.label.padEnd(17),p={kind:"field",field:o};return`${ut(p,`${h}${a?t.bold(m):m}`)}${ut({kind:"seed",field:o},f)}${ut(p,` ${l} ${t.color?`${t.fg(d)}${R.swatch}${$t} `:""}${t.dim(d)}`)}`}),"",...Ft("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.",Is-4).map((s)=>` ${t.dim(s)}`),""];return[...i,...Bc(t,e,n-i.length,Is)]}function KM(t,e,n,r,i,s){let o=Vt.indexOf(ts(i)),a=Vt.map((u,f)=>ut({kind:"scene",scene:f},f!==o?t.dim(u.name):Ze(t,u.name))).join(" "),c=`${t.bg(e.background)}${t.fg(e.foreground)}`;return[Rt(a,t.dim("⇧←→"),n),...ts(i).lines.values().map((u)=>xo(u,n-2)).filter((u)=>u!==void 0).take(Math.max(0,r-1)).map((u)=>{let f=t.color?u.map(([l,d])=>`${xf(t,e,d,gM(s,d))}${l}${Se}${c}`).join(""):u.map(([l])=>l).join("");return`${c} ${tt(f,n-2)} ${t.color?Se:""}`})]}var G4=["Bk","Rd","Gr","Ye","Bl","Ma","Cy","Wh"];function GM(t,e,n,r,i,s,o){let a=(i-s)/(o-1),c=zM(e),u=ae(n),f=(l)=>Math.min(o-1,Math.max(0,Math.round((i-r(Ot(l)))/a)));return Array.from({length:o},(l,d)=>{let h=d%2===0?(i-a*d).toFixed(i>=1?1:2).replace(/^0(?=\.\d\d)/,""):"",m=Array.from({length:8},(p,b)=>{let $=[" "," "," "," "," "],k=u.ansi[b],S=u.ansi[b+8],v=f(k)===d,x=f(S)===d,M=(C)=>{if(C===1&&v)return t.color?`${t.fg(k)}${R.on}`:R.on;if(C===3&&x)return t.color?`${t.fg(S)}${R.off}`:R.off;return $[C]},N=[0,1,2,3,4].map(M).join("");return c.has(b)?t.color?`${t.bg(u.selection)}${N}${pe}`:N:`${N}${t.color?$t:""}`});return`${h.padStart(4)} ${t.dim(d%2===0?"┤":"│")}${m.join("")}`})}function zM(t){let e=t.mode==="tune"?t.scoped():[t.slot()];return new Set(e.filter((n)=>n>=L.length).map((n)=>(n-L.length)%8))}function U4(t,e){let n=zM(e);return` ${G4.map((r,i)=>n.has(i)?t.bold(` ${r} `):t.dim(` ${r} `)).join("")}`}function W4(t,e){let n=ae(e),r=Array.from({length:40},(s,o)=>{let a=o*9+4.5,c=-1,u=999;for(let[f,l]of Object.entries(Ae)){let d=Ne(a,l.center);if(d<=l.width&&d<u)u=d,c=Number(f)}return c<0?" ":t.color?`${t.fg(n.ansi[c])}─`:"─"}).join(""),i=(s,o)=>{let a=Array.from({length:40},()=>" ");for(let c of Object.keys(Ae).map(Number)){let u=n.ansi[c+s],f=Math.min(39,Math.round(Ot(u).h/9));a[f]=t.color?`${t.fg(u)}${o}${$t}`:o}return` ${a.join("")}`};return[`${t.bold("Hue")} ${t.dim("0° 90° 180° 270° 360°")}`,`${t.dim("bands")} ${r}${t.color?$t:""}`,i(0,R.on),i(8,R.off)]}function K4(t,e,n){let r=xr(n,e.signature,e.waive),i=(a)=>We(L.length+a).name,s=(a)=>Ot(n[L.length+a]).h.toFixed(0),o=[...rr(r).filter(({gap:a})=>a>25).map(({normal:a,gap:c})=>`${i(a)} ${s(a)}° → bright ${s(a+8)}° · ${c.toFixed(0)}° apart · ≤ 25°`),...Hr(r).map(({slot:a,over:c})=>{let u=Ae[On(a)];return`${i(a)} ${s(a)}° · ${c.toFixed(0)}° outside ${u.name} ${u.center}±${u.width}°`}),...ir(r).map(([a,c])=>`${i(a)} and ${i(c).toLowerCase()} read as one color`)];return o.length>0?o.map((a)=>`${t.bold(R.miss)} ${a}`):[t.dim(`${R.ok} Every accent keeps its role and its bright`)]}function UM(t,e,n,r,i){let s=e.shown(),o=Math.max(...s.slice(L.length).map((u)=>Ot(u).c)),a=Math.max(0.2,Math.ceil(o/0.05)*0.05),c=[Rt(t.bold("Lightness"),t.dim("● normal ○ bright"),n),...GM(t,e,s,(u)=>u.l,1,0.3,8),U4(t,e)];if(i)c.push("",t.bold("Chroma"),...GM(t,e,s,(u)=>u.c,a,0,5),"",...W4(t,s));return[...c,...K4(t,e,s)].slice(0,r)}function z4(t,e,n){let r=(i,s)=>ut({kind:"view",view:s},e.view!==s?t.dim(` ${i} `):Ze(t,i));return Rt(`${r("Slot","slot")}${r("Relations","relations")}`,ge("g",`${t.bold("g")} ${t.dim("switch")}`),n)}function D4(t,e,n,r){let i=e.slot(),s=e.list[i],o=e.lch[i],a=e.start[i],{name:c,about:u}=We(i),f=e.signature.includes(Vn[i]),l=Math.max(8,Math.min(64,n-12));if(e.view==="relations"&&e.mode!=="tune")return[z4(t,e,n),"",...UM(t,e,n,r-2,!0)];let d=i>=L.length?t.dim("Uses underlined below"):f?t.dim("◆ signature"):"",h=[Rt(`${t.bold(c)} ${t.dim(u)}`,e.view==="relations"?"":d,n),""],m=t.color?`${t.fg(s)}${"█".repeat(8)}${$t} `:"",p=e.typing!==void 0?`${t.bold(`${e.typing}▏`)}`:void 0,[b,$,k]=ct(s);if(h.push(`${m}${p??j4(t,o)}`,`${m}${t.dim(`${s} · rgb ${b} ${$} ${k}`)}`),e.view!=="relations"){let x=t.color?`${t.fg(a)}${R.swatch}${$t} `:"";h.push(`${m}${a!==s?t.dim(`was ${x}${C4(e.lchOf(a)).slice(6)} · ${a}`):t.dim("as it opened")}`)}if(h.push("",...L4(t,e,o,l),vf(t,e,l),...F4(t,e)),e.view==="relations")return h.push("",...UM(t,e,n,r-h.length-1,!1)),h;h.push("",...Ef(e,i,o).flatMap((x)=>Ft(x.text,n-2).map((M,N)=>`${N===0?Yu(t,x.ok):" "} ${x.ok===!1?M:t.dim(M)}`)));let S=Sf(e,i);if(S)h.push(t.dim(` ${S}`));let v=r-h.length-1;if(v>=3)h.push("",...KM(t,ae(e.shown()),n,v,e.scene,i));return h}function q4(t,e,n,r){return[Rt(`${t.bold("Sample")} ${t.dim("what the seeds grow")}`,"",n),"",...KM(t,ae(e.list),n,r-2,e.scene,-1)]}var J4=[["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 Y4(t,e,n){return[` ${t.bold("Help")}`,"",...J4.filter(([r])=>r!=="Pictures"||e.options.find).flatMap(([r,i])=>Ft(i,n-16).map((s,o)=>` ${t.bold((o===0?r:"").padEnd(11))} ${s}`))]}function V4(t,e,n,r){let i=e.choices(),s=e.options.palettes?.length??0,o=e.filter?`${t.bold(e.filter)}▏`:t.dim("type to filter"),a=r-2,c=Math.max(0,Math.min(e.pick-Math.floor(a/2),i.length-a)),u=Math.min(40,Math.max(12,...i.map((f)=>B(f.name))));return[Rt(` ${t.bold("Take colors from")} ${o}`,t.dim(`${i.length}/${s}`),n),"",...i.slice(c,c+a).map((f,l)=>{let d=c+l===e.pick,h=f.colors,m=t.color?`${t.bg(h.background)} ${h.ansi.map(($)=>`${t.fg($)}${R.swatch}`).join("")} ${t.fg(h.foreground)}Aa ${pe}`:"",p=d?"▌ ":" ",b=f.name.padEnd(u);return ut({kind:"choice",index:c+l},`${p}${d?t.bold(b):b} ${m}`)}),...i.length===0?[` ${t.dim(`No palettes match '${e.filter}'`)}`]:[]]}var Z4=new Set(["enter","s","?","g","a","i"]);function WM(t,e,n){let r="EDIT",i="",s=[],o="";if(e.quitting)r="EDIT (QUIT)",i=e.added>0?`Discard changes and ${e.added} ${e.added===1?"picture":"pictures"}?`:"Discard changes?",s=[["y","discard"],["n","keep editing"]];else if(e.typing!==void 0)r="EDIT (TYPE)",i=t.dim("#rrggbb, rgb(r g b) or oklch(l c h)"),s=[["enter","set"],["ctrl+u","clear"]],o="esc back";else if(e.overlay==="keys")r="HELP",o="any key closes";else if(e.overlay==="open")r="EDIT (OPEN)",s=[["↑↓","palette"],["a-z","filter"],["enter","take its colors"]],o="esc close";else if(e.menu)r=e.menu==="export"?"EDIT (EXPORT)":"EDIT (IMPORT)",s=[["↑↓","item"],["enter","choose"]],o="esc close";else if(e.compare)r="EDIT (BEFORE)",i="The colors you started from",s=[["space","back to yours"]],o="esc back";else if(e.mode==="seeds")r="EDIT (SEEDS)",s=[["↑↓","seed"],["←→","step"],["⇧←→","×5"],["enter","tune the slots"],["o","open a palette"],["p","picture"],["?","keys"]],o="esc cancel";else if(e.mode==="tune")r="EDIT (TUNE)",s=[["↑↓","L"],["←→",e.channel===oe?"ratio":"C"],["⇧←→","H"],["tab","◐"],...e.slot()>=L.length?[["a","scope"]]:[],[e.channel===oe?"1-9":"0-9",e.channel===oe?"ratio":"jump"],["#","type"],["enter","keep"]],o="esc undo";else if(e.inspect)r="EDIT (INSPECT)",s=[["←→↑↓","spot"],["⇧←→","tab"],["enter","its slot"],["i","leave"]],o="esc leave";else s=[["↑↓","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"]],o="esc cancel";if(!e.options.find)s=s.filter(([u])=>u!=="p"&&u!=="b");if(!e.options.exports||!e.roomy)s=s.filter(([u])=>u!=="x");if(!e.roomy)s=s.filter(([u])=>u!=="i"&&u!=="m");if(e.notice)i=t.warn(e.notice),s=[];let a=`${Ze(t,r)}${t.color?" ":" "}`,c=o?ge(o.split(" ")[0],`${t.bold(o.split(" ")[0])} ${t.dim(o.split(" ").slice(1).join(" "))}`):"";for(;;){let u=[i,...s.map(([d,h])=>ge(d,`${t.bold(d)} ${t.dim(h)}`))].filter(Boolean),f=`${a}${u.join(" ")}`,l=s.findLastIndex(([d],h)=>h>0&&!Z4.has(d));if(B(f)+B(o)+3<=n||l<0)return o?Rt(f,c,n):tt(f,n);s=s.toSpliced(l,1)}}function X4(t,e,n,r,i={}){let s=je(r);if(e<jM||n<_M){let p=[s.bold("ttheme palette editor"),`Needs ${jM}×${_M} — now ${e}×${n}`,s.dim("esc cancels")];return{lines:Array.from({length:n},(b,$)=>tt(p[$]??"",e)),art:void 0}}if(t.viewport(e,n),!t.overlay&&t.mode!=="seeds"&&t.view==="slot"){let p=CM(t,e,n,r,i);if(p)return{lines:[...p.lines,WM(s,t,e)],art:p.art}}let o=t.failing().length,a=o===0?"✓ Passes the gate":`✗ ${o} ${o===1?"miss":"misses"} in the gate`,c=t.pictures>0?s.dim(`▣ ${t.pictures} ${t.pictures===1?"picture":"pictures"} `):"",u=t.resettable()?`${ge("R",s.dim("Reset"))} `:"",f=`${t.dirty()?`${s.warn(R.on)} unsaved `:""}${u}${c}${s.dim(a)}`,l=`${s.accent(R.current)} ${s.bold(t.options.title)} ${s.dim(`· ${t.options.name}`)}`,d=n-4,h;if(t.overlay==="keys")h=Y4(s,t,e);else if(t.overlay==="open")h=V4(s,t,e,d);else{let p=e-Is-2,b=t.mode==="seeds"?B4(s,t,d):_4(s,t,d),$=t.mode==="seeds"?q4(s,t,p,d):D4(s,t,p,d);h=Array.from({length:d},(k,S)=>`${tt(b[S]??"",Is)}${s.dim("│")} ${tt($[S]??"",p)}`)}return{lines:[Rt(l,f,e),"",...Array.from({length:d},(p,b)=>tt(h[b]??"",e)),"",WM(s,t,e)],art:void 0}}var Q4=new Set(["tab","a","#","l","enter","esc"]),tj=new Set(["picker","plane","bar","channel","format","scope","open","slot"]);function ej(t){if(!t)return!0;return t.kind==="key"?!Q4.has(t.key):!tj.has(t.kind)}function nj(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&&ej(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 s=RM(r.row+e.exact.y,r.rows,e.exact.x,e.width,t.lch[t.slot()].h);t.plane(s.lightness,s.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 rj=[Yl,Dn,pi,Sr];async function DM(t,e){let n=new Tg(t),r=e.backdrop,i=e.layer,s=(a)=>n.typing===void 0&&mf(a),o=e.hosted?{modes:[Sr,...gi()],assume:[Dn,pi],burst:s}:{modes:[...rj,...gi()],burst:s};return bi(o,async(a)=>{let c=!1,u=!1,f=new Map,l=new Vp,d=await a.ask(`${Em(wn,"")}${gi().length>0?vS:""}\x1B[c`,(v)=>{if(v.kind==="color"){f.set(v.code,v.value);return}return l.see(v)},1000);if(d?.cell)a.pixels(d.cell);let h=_y(f),m=h.map((v,x)=>v??n.start[x]),[p,b]=m;if(!h[3])m[3]=Qi(p,b,"selection");let $=new hs({write:(v)=>a.write(v),view:()=>{if(c)return;let{lines:v,art:x}=X4(n,a.cols,a.rows,e.color,{behind:n.pic&&r?.laid===!0,art:i?.ready===!0,chrome:m});return{lines:v,after:()=>`${(n.pic?r?.draw(n.shown(),n.signature,n.waive,a.cols,a.rows,FM(a.cols,a.rows)):r?.clear())??""}${i?.draw(x)??""}`}}}),k=(v=!1)=>{if(v)$.soon();else $.request()},S=async(v)=>{let x=t.find;if(!x)return;c=!0,a.write(`${r?.clear()??""}${i?.clear()??""}`);try{n.found(await x(n.edited(),v))}catch(M){n.notice=M instanceof Error?M.message:String(M)}if(u)return;c=!1,r?.load(),$.reset(is),k()};if(a.write(is),a.onResize(()=>{r?.resized(),a.write(i?.clear()??""),$.reset(is),$.request()}),r)r.load(),r.ready=()=>$.request();if(r||i){let v=new bc;a.ask(ql,(x)=>v.see(x),1000).then((x)=>{if(x)r?.measured(x),i?.measured(x);$.request()})}k();try{let{edited:v}=await a.loop((x)=>{if(c)return;if(x.kind==="paste")n.paste(x.text);else if(x.kind==="key")n.press(x.key);else if(x.kind==="mouse")nj(n,$.point(x),x);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 M=n.wants;if(M)n.wants=void 0,S(M.start);return},()=>{if(!c)k(!0)});return v}finally{u=!0,$.stop(),a.write(`${r?.close()??""}${i?.clear()??""}`)}})}import{spawn as wj}from"node:child_process";import{createHash as cx}from"node:crypto";import{existsSync as Jc,mkdirSync as $j,mkdtempSync as kj,readFileSync as yj,rmSync as Lf}from"node:fs";import{homedir as vj,tmpdir as Sj}from"node:os";import{basename as Ej,dirname as Mj,join as Xn}from"node:path";import{setTimeout as xj}from"node:timers/promises";import{pathToFileURL as YM}from"node:url";import{existsSync as ij,readFileSync as sj,statSync as oj}from"node:fs";import{join as qM}from"node:path";function aj(t,e){try{return JSON.parse(sj(qM(fn(t),e),"utf8"))}catch{return{}}}function cj(t,e,n){H(qM(fn(t),e),`${JSON.stringify(n)}
729
- `)}var uj=604800000;class Yg{caches=new Map;unsaved=new Set;owners=new Map;crediting=new Map;inflight=new Map;asking=new Map;home;manifest;entry;signal;credited;constructor(t){this.home=t.home,this.manifest=t.manifest,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 Pa(t,e,this.signal),s=zr(t,e),o=(i===void 0?await Y0(s.site,s.url,this.signal):i)?.alpha===!0;return n[e.id]=o,this.unsaved.add(`${t.key}/probes.json`),o}catch{return!1}}save(){for(let t of this.unsaved){let[e,n]=t.split("/"),r=Z.find((i)=>i.key===e);if(r)cj(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(!Ma(n,r))return Promise.resolve();let i=ee(n,r.id),s=this.crediting.get(i);if(!s)s=this.credits(t,e).finally(()=>this.crediting.delete(i)),this.crediting.set(i,s);return s}links(t){let e=this.keep(Pt,"profiles.json");return Object.fromEntries(t.flatMap((n)=>{let r=e[n]?.urls??[];return r.length>0?[[n,r]]:[]}))}profile(t,e){return this.credit(t,e).then(()=>this.profiles(t.post.named.artist,e))}async mateOwners(t){let e=this.owners.get(t.key);if(e)return e;let n=G$(this.home),r=this.keep(t,"owners.json"),i=this.manifest.palettes.flatMap((c)=>{let u=n.get(c.name);return re(c)===re(this.entry)&&c.name!==this.entry.name&&u?.site===t.key?[{name:c.name,id:u.id}]:[]}),s=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 Fi(t,c.id,this.signal))?.owner??""}}catch{return}})),o=new Map;for(let c of s)if(c)r[c.id]=c.owner,o.set(c.name,c.owner);this.unsaved.add(`${t.key}/owners.json`);let a=U0(o);return this.owners.set(t.key,a),a}async cached(t,e,n,r){if(ij(e))return oj(e).size;let i=this.inflight.get(e);if(i)return i;let s=(async()=>{let o=await wu(t,n,this.signal,r);return H(e,o),o.length})();this.inflight.set(e,s);try{return await s}finally{this.inflight.delete(e)}}keep(t,e){let n=`${t.key}/${e}`,r=this.caches.get(n);if(!r)r=aj(t,e),this.caches.set(n,r);return r}async profiles(t,e){let n=this.keep(Pt,"profiles.json"),r=Date.now(),i=t.filter((s)=>!this.asking.has(s)&&r-(n[s]?.at??0)>=uj);if(i.length>0){let s=$u(i,e).then((o)=>{for(let a of i)n[a]={at:Date.now(),urls:o.get(a)??[]};this.unsaved.add(`${Pt.key}/profiles.json`),this.credited()},()=>{}).finally(()=>{for(let o of i)this.asking.delete(o)});for(let o of i)this.asking.set(o,s)}await Promise.all(t.flatMap((s)=>this.asking.get(s)??[]))}async credits({site:t,post:e},n){let r=this.keep(t,"credits.json"),i=r[e.id];if(!i){try{i=await Ea(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 lj}from"node:fs";import{join as fj}from"node:path";var ca=2147483645,qc=2147483646,JM=-1073741827,dj=-1073741828,hj=16,mj=0.4,pj=3221225472,gj=256;function bj(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 Vg=bj(process.env.TTHEME_BG_MARGIN);class Zg{screen;gliding;sent=new Map;placed=new Map;covered="";viewed="";bands=ml(process.env);files=pl(process.env);moves=Wy(process.env);layers=Po(process.env);wipes=Ky(process.env);views=ns(process.env);bandFiles=new Map;nextBand=pj;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 hs({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=dg(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,s;for(let o of t){if(this.views&&o.id>=ag){s=o;continue}let a=this.bands?this.banded(o):o;if(!a)continue;if(this.wipes&&e.values().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=sf(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+=ug(a.id);r+=ZS(a,n),this.placed.set(a.id,c)}}for(let o of this.sent.keys())if(!i.has(o))r+=Ic(o),this.sent.delete(o),this.placed.delete(o);return r+(this.views?this.backdrop(s):this.cover())}glide(){if(this.bands)this.prebake();if(this.gliding)return;let{cols:t,rows:e}=this.grid(),n=Er(t,e).height,r=()=>{let i=this.view,s=i.top*St.height,o=s-i.scroll;if(o===0||i.mode!=="grid"){i.scroll=s;let a=this.gliding!==void 0;if(this.gliding=void 0,a)this.draw();return}if(Math.abs(o)>2*n)i.scroll=s-Math.sign(o)*n,o=s-i.scroll;i.scroll+=Math.sign(o)*Math.max(1,Math.round(Math.abs(o)*mj)),this.draw(),this.gliding=setTimeout(r,hj)};r()}snap(){clearTimeout(this.gliding),this.gliding=void 0,this.view.scroll=this.view.top*St.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 dg({...t,scroll:t.top*St.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(ct(this.background)).toString("base64");if(r+=`\x1B_Ga=t,f=24,s=1,v=1,i=${ca},q=2;${i}\x1B\\`,Vg)r+=`\x1B_Ga=t,f=32,s=1,v=1,i=${qc},q=2;AAAAAA==\x1B\\\x1B[H\x1B_Ga=p,i=${qc},p=${qc},c=1,r=1,C=1,z=${dj},q=2\x1B\\`}else if(!this.moves)r+=ug(ca);if(this.covered=n,Vg){let{x:i,y:s}=Vg;return`${r}\x1B_Ga=p,i=${ca},p=${ca},P=${qc},Q=${qc},H=${-i},V=${-s},c=${t+2*i},r=${e+2*s},C=1,z=${JM},q=2\x1B\\`}return`${r}\x1B[H\x1B_Ga=p,i=${ca},p=${ca},c=${t},r=${e},C=1,z=${JM},q=2\x1B\\`}backdrop(t){let{cols:e,rows:n,cell:r}=this.grid(),i=e*r.w,s=n*r.h,o=t?`${this.background}|${t.path}|1|${i}|${s}|${i}|${s}|0|0|1`:`${this.background}||1|${i}|${s}|0|0|0|0|5`;if(o===this.viewed)return"";return this.viewed=o,rs(o)}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}`,s=this.bandFiles.get(i);if(s||!r)return s;let{cell:o}=this.grid(),a=this.nextBand++,c={id:a,path:fj(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*o.h,height:n*o.h}).then(()=>{c.ready=!0,this.draw()}).catch(()=>{}),this.trimBands(),c}trimBands(){for(let[t,e]of this.bandFiles){if(this.bandFiles.size<=gj)return;if(e.ready&&!this.sent.has(e.id))this.bandFiles.delete(t),lj(e.path,{force:!0})}}}var Ts=[{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:Ys,multi:{read:Li}},{name:"TTHEME_FIND_BLOCK",label:"Block",about:"Posts tagged with nudity or underwear are left out — space unticks one",choices:Hi,multi:{read:Xs,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"]},...to()?[{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:P0,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:I0,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:Z.map((t)=>t.name),multi:{read:va},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:du,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 VM(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 Sa(e).join(" ");return t.choices.find((n)=>n===e)??t.choices[0]}var Oj=["fit","newest","score"];function Xg(t){return Oj.find((e)=>e===t)??"fit"}var Pj={left:-1,right:1,"shift-left":-10,"shift-right":10};function ZM(t){if(process.env.SSH_CONNECTION||!/^(?:https?|file):/i.test(t))return;try{let e=wj(process.platform==="darwin"?"open":"xdg-open",[t],{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}function Ij(t,e,n){if(e<0){if(t!=="fill")return Math.max(Cf,t+e);if(!n)return t;return Math.max(Cf,Math.max(100,n)+e+1)}return t==="fill"||t+e>n?"fill":t+e}function ux(t,e){return t.size===e.size&&t.at===e.at&&t.opacity===e.opacity}function Rj(t,e){if(ux(t,e))return;return{...t.size!=="fill"?{size:t.size}:{},...t.at!==e.at?{position:Jt[t.at-1]}:{},...t.opacity!==e.opacity?{opacity:t.opacity}:{}}}function XM(t,e){let n=X(t);return ke(t,e).flatMap((r,i)=>{let[,s,o]=/^([a-z.]+)_(\d+)$/.exec(r.key)??[],a=[...Z,Jn].find((c)=>c.key===s);if(!a||!o)return[];return[{key:r.key,id:Number(o),ansi:a.ansi,...a===Jn?{}:{page:a.pageUrl(Number(o))},up:i===0,from:Xn(n,r.original??r.fill)}]})}function Aj(t){return t.length>=2&&!/^\d+$/.test(t)&&!t.includes("://")&&!/^[\w.]+:\d+$/.test(t)}var QM=12,Nj=4,Tj=150,Hj=300,tx=12,Lj=2,Fj=5000,Cj=150,jj="\x1B[?5522$p\x1B]72;t=q\x1B\\\x1B[c",ex=4000,_j=8000,nx=/\.(png|jpe?g|gif|webp|heic|tiff?|bmp)$/i,Bj=process.platform==="win32"?"alt+v":"ctrl+v",rx=process.platform==="darwin"?"ctrl+shift+cmd+4 copies a screenshot":"copy a picture first",Gj=1280,Uj=16,Wj=Jt.indexOf("top-right")+1,Cf=20,ix=2,sx=3,Kj=/[\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/u,zj=8,Dj=9;function Ff(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 Yc(t){if(!(t instanceof Error))return String(t);if(t instanceof AggregateError&&t.errors[0])return Yc(t.errors[0]);if(t.cause)return Yc(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 Qg(t,e){return`${t}: ${Yc(e)}`}function ox(t){return t.width*t.height}function ax(t,e){return`${t}-${cx("sha1").update(e).digest("hex").slice(0,8)}`}class tb{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(Ts.map((t)=>[t.name,VM(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 Cc;showing;thumbless=new Set;current;fetch;settle;suggestTimer;suggesting;countTimer;counting;terminal;grabber=new vg((t)=>this.write(t),(t)=>void this.got(t));noticeTimer;peekTimer;peeked;twins=new Map;attaching;done;scratch=kj(Xn(Sj(),"ttheme-find-"));home;manifest;entry;tagged;blurring;start;paint;kept;constructor(t,e,n,r,i){this.start=i,this.home=t,this.manifest=e,this.entry=n,this.tagged=new Set(e.palettes.flatMap((o)=>o.booru?[o.booru]:[])),this.tone=Fn(n,n.signatureSlots),this.blurring=si(t);let s={size:"fill",at:Wj,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:Xg(this.setting("TTHEME_FIND_ORDER")),solo:this.setting("TTHEME_FIND_SOLO")==="on",rating:Li(this.setting("TTHEME_FIND_RATING")),block:Xs(this.setting("TTHEME_FIND_BLOCK")),sets:this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",narrow:this.narrowed(),enabled:va(this.setting("TTHEME_FIND_SITES")),hide:du(this.setting("TTHEME_FIND_HIDE")),hideTags:Sa(this.setting("TTHEME_FIND_HIDE_TAGS")),advanced:!1,settings:Ts.map((o)=>({label:o.label,choices:[...o.choices],value:this.setting(o.name),default:VM(o,Xa(o.name)),multi:o.multi&&{none:o.multi.none},about:o.about,entry:o.entry,advanced:o.advanced,cursor:0})),colors:{cursor:n.cursor,selection:n.selection,background:n.background,foreground:n.foreground,ansi:n.ansi},tiles:[],installed:[],held:XM(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,Vt.findIndex((o)=>o.name.toLowerCase()===process.env.TTHEME_SCENE)),details:!1,tune:{...s},untuned:s,coloring:wl(t),editing:r===""?"":void 0,chips:[]},this.paint=new Zg({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:(o)=>this.write(o)}),this.kept=new Yg({home:t,manifest:e,entry:n,signal:this.signal,credited:()=>{this.show(),this.inform(),this.paint.draw()}}),this.pool=this.selected(this.view),this.syncChips(),this.board=Ff(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:Z[this.tab-1]}get sites(){return this.site?[this.site]:Z.filter((t)=>this.view.enabled.includes(t.name))}get tabName(){return this.site?.name??"all"}get tabAnsi(){return this.site?.ansi??Nj}get nextTabName(){let t=(this.tab+1)%(Z.length+1);return t===0?"all":Z[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 Jd(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 Xn(fn(t),"orig",`${e}.${n}`)}previewPath(t){let{url:e}=mu(t.site,t.post);return Xn(fn(t.site),"thumb",`${ax(t.post.id,e)}.${Wr(e)}`)}tileOf(t,e){let{site:n,post:r}=t,i=ee(n,r.id),s=ln(r)??r;return{id:r.id,key:i,site:n.name,siteAnsi:n.ansi,width:s.width,height:s.height,reduced:s!==r,page:n===Jn?"":n.pageUrl(r.id),artist:n===Jn?yE(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&&mf(e);return bi({modes:[Sr,...gi()],assume:[Dn,pi],burst:t},async(e)=>{this.terminal=e,e.onResize(this.onResize),e.listen((i)=>{for(let s of i)this.inbound(s);this.paint.soon()}),e.write(is);let n=new Promise((i)=>{this.done=i}),r=setInterval(this.onClock,250);setTimeout(Fu,0);try{let i=new bc,s=await e.ask(ql,(o)=>i.see(o),1000);if(s){if(this.cell=s,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(jj,(o)=>o.kind==="attributes"?!0:void 0,500,!1);if(this.grabber.start(),e.hold(RS),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\\${is}`),this.kept.save(),this.renders.close(),Lf(this.scratch,{recursive:!0,force:!0}),W0()}})}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!hu(e,this.site??Z[0]);return ea(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 — ${rx}`);return}this.pasted(t.text);return}await this.bring(()=>df(t.bytes,t.source))}notice(t,e=ex){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 xE()}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 · ${Bj} uses it`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{t.hint=void 0,this.paint.draw()},_j),this.paint.draw()}async fromClipboard(){let t=this.view;if(yg()){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 ME(Xn(this.scratch,`clipboard-${Date.now()}.png`))}catch(r){this.notice(`Could not read the clipboard: ${Yc(r)}`);return}if(clearTimeout(this.peekTimer),t.hint=void 0,"image"in e){await this.bring(async(r)=>({...await kg(e.image,r),source:"clipboard"}));return}let n=e.text.trim();if(!n){this.notice(`No picture on the clipboard — ${rx}`);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=hu(e,this.site??Z[0]);if(i){await this.jump(i.site,i.id);return}}let[n,...r]=ea(e).sort((i,s)=>Number(!nx.test(i))-Number(!nx.test(s)));if(!n){this.notice("Nothing to use in that — drop a picture, or paste one or its link");return}await this.bring((i)=>kg(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(d){if(!r.signal.aborted)n.note=void 0,this.notice(Yc(d),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 s=SE(i.bytes);vE(s,i.source);let o=this.origPath(Jn,s,i.ext);H(o,i.bytes);let a=YM(o).href,c={id:s,file:a,width:i.width,height:i.height,ext:i.ext,preview:a,owner:"",score:0,rating:"s",md5:cx("md5").update(i.bytes).digest("hex"),source:i.source,tags:[],named:{artist:[],character:[],copyright:[]},solo:void 0,family:0,smaller:[]},u={site:Jn,post:c},f=this.previewPath(u);H(f,i.bytes),++this.gen,this.current=void 0,n.shown=void 0;let l=Ff(`local|post:${s}`,!1);this.board=l,this.boards.set(l.key,l),this.single(l,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)=>Hn(i)>Hn(r)?i:r),e=Math.ceil((Hn(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<ys.cols||this.rows<ys.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)ZM(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*Er(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 s=Math.max(100,r.fill),o=Cf+Math.round(i*(s-Cf+1));n.tune.size=i===1||r.fill>0&&o>=r.fill?"fill":Math.min(s,o)}else n.tune.opacity=Math.round(i*100)/100;this.retune()}gridKey(t){let e=this.view,{perRow:n,rowsVis:r}=Er(this.cols,this.rows),s={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(s!==void 0){this.focus(e.focus+s);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 o=Z.length+1;this.tab=(this.tab+(t==="tab"?1:o-1))%o,this.syncSite(),this.turn();return}if(t==="/"){e.editing="",this.paint.draw();return}if(t===" "){this.unfold();return}if(t==="o"||t==="O"){this.openPage(t==="O");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=Pc(e);if(t==="up"||t==="down"){let s=i.indexOf(n)+(t==="up"?-1:1);e.panel=i[(s+i.length)%i.length]??n,this.paint.draw();return}if(t==="a"||t==="enter"&&n===e.settings.length){e.advanced=!e.advanced,e.panel=Pc(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 s=t==="left"?-1:1;if(r.multi)r.cursor=(r.cursor+s+r.choices.length)%r.choices.length;else r.value=nE(r.choices,r.value,s),this.recount();this.paint.draw();return}if(t===" "&&r?.multi){let s=r.value.split(" "),o=r.choices.filter((c,u)=>u===r.cursor?!s.includes(c):s.includes(c)),a=r.multi.none;if(o.length>0||a!==void 0)r.value=o.length>0?o.join(" "):a,this.recount(),this.paint.draw();return}if(t==="esc"){e.settings.forEach((s,o)=>{s.value=this.setting(Ts[o]?.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":Sa(r).join(" "),n.typing=void 0,this.recount(),e==="enter"){this.paint.draw();return}this.panelKey(e);return}let i=gs(r,e,(s)=>t.entry==="number"?/^[0-9]$/.test(s)&&r.length<fg:/^[\x20-\x7e]$/.test(s));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),Hj)}pending(){let t=(e)=>this.view.settings[Ts.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:Xg(t("TTHEME_FIND_ORDER")),rating:Li(t("TTHEME_FIND_RATING")),narrow:Jd(t("TTHEME_FIND_MIN_SCORE"),t("TTHEME_FIND_MIN_SIZE"),t("TTHEME_FIND_PNG")),enabled:va(t("TTHEME_FIND_SITES"))}}async countPending(t){let e=this.pending(),n=this.site?[this.site]:Z.filter((s)=>e.enabled.includes(s.name)),r=AbortSignal.any([this.signal,t.signal]),i=await Promise.all(n.map(async(s)=>{let o=this.query(s,e);if(!o)return{site:s.name,count:0};if(s.counts&&!s.counts(o.tags))return{site:s.name};try{let a=await Xd(s,o.tags,r);return{site:s.name,...Number.isFinite(a)?{count:a}:{}}}catch{return{site:s.name}}}));if(this.counting===t&&this.view.panel!==void 0)this.view.counts=i,this.paint.draw()}adopt(){let t=this.view,e=Ts.map((r)=>this.setting(r.name));t.settings.forEach((r,i)=>{let s=Ts[i];if(s)this.values.set(s.name,r.value)});let n=Ts.filter((r,i)=>this.setting(r.name)!==e[i]);if(n.length===0){this.paint.draw();return}this.save(n),t.rating=Li(this.setting("TTHEME_FIND_RATING")),t.block=Xs(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=Xg(this.setting("TTHEME_FIND_ORDER")),t.solo=this.setting("TTHEME_FIND_SOLO")==="on",t.narrow=this.narrowed(),t.enabled=va(this.setting("TTHEME_FIND_SITES")),t.hide=du(this.setting("TTHEME_FIND_HIDE")),t.hideTags=Sa(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=Xn(this.home,"ttheme","config.zsh");try{let n=Jc(e)?yj(e,"utf8"):"";return H(e,t.reduce((r,[i,s])=>$l(r,i,s),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 o=((e.pick??r.length)+(t==="down"?1:r.length))%(r.length+1);e.pick=o===r.length?void 0:o,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 s=e.pick===void 0?void 0:r[e.pick],o=s?s.whole?s.value:n.replace(/\S*$/,s.value):n;if(e.editing=void 0,e.suggest=void 0,e.pick=void 0,o.trim()){this.commit(o.trim());return}if(e.tag===""){this.finish(2);return}this.paint.draw();return}let i=gs(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=Aj(n),i=rk(e,sx,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 s=r?_k(this.manifest.palettes,this.entry,n).map((c)=>({value:c.booru,count:0,palette:c.name})):[],o=[...new Map([...s.slice(0,sx),...i].map((c)=>[c.value,c])).values()];if(t.suggest=o.length>0?o:void 0,i.length>0&&Kj.test(e))t.pick=o.findIndex((c)=>("whole"in c));if(!r)return;let a=new AbortController;this.suggesting=a,this.suggestTimer=setTimeout(async()=>{try{let c=await D0(n,AbortSignal.any([this.signal,a.signal]));if(this.suggesting===a&&t.editing!==void 0){let u=new Map(c.map((l)=>[l.value,l.count])),f=new Set(o.map((l)=>l.value));t.suggest=[...o.map((l)=>({...l,count:u.get(l.value)??0})),...c.filter((l)=>!f.has(l.value))].slice(0,zj),t.pick=t.pick!==void 0&&t.pick<o.length?t.pick:void 0,this.paint.draw()}}catch{}},Tj)}async commit(t){let e=hu(t,this.site??Z[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=Z.indexOf(t)+1,this.syncSite(),this.current=void 0,this.view.shown=void 0,this.view.error=void 0;let r=Ff(`${t.key}|post:${e}`,!0);this.board=r,this.boards.set(r.key,r),this.show(),this.paint.draw();try{let i=await Fi(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,this.thumbQueue.push(...n.posts.filter((i)=>!this.thumbPath.has(ee(i.site,i.post.id)))),this.thumbs(),this.show(),this.scroll(),this.paint.glide(),this.paint.draw();return}e+=r}}openPage(t){let e=this.view.tiles[this.view.focus],n=e&&this.posts.get(e.key);if(!n)return;let r=Ci(n.post.source),i=n.site===Jn?"":n.site.pageUrl(n.post.id),s=!t&&/^https?:\/\//i.test(r)?r:i;if(s)ZM(s)}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"||t==="O"){this.openPage(t==="O");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=Pj[t];if(i!==void 0){if(n.field===0)r.size=Ij(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 s=e.untuned;if(n.field===0)r.size=s.size;else if(n.field===1)r.at=s.at;else r.opacity=s.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=G0(e,n),s=new Set([...r.artist,...r.character,...r.copyright]),o=Ci(n.source),a=/^https?:\/\//i.test(o)?o:e===Jn&&o.startsWith("/")?YM(o).href:void 0;return{page:e===Jn?"":e.pageUrl(n.id),source:o,...a?{link:a}:{},artists:r.artist,profiles:Object.fromEntries(Object.entries(this.kept.links(r.artist)).map(([c,u])=>[c,Ia(u)])),characters:r.character,series:r.copyright,tags:n.tags.filter((c)=>!s.has(c)),...i?{rating:i}:{},...n.posted?{posted:n.posted}:{},ext:(ln(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}=Er(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.manifest.palettes.find((r)=>r.booru===t);return n?Bk(n,e):[t]}syncChips(){let t=this.selected(this.view);this.view.chips=this.pool.slice(0,Dj).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((s)=>s!==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 q0(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?J0(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,s=e.preset==="cutouts"?t.cutouts:"",o=i&&s.includes("~"),a=[i?n.map((f)=>`~${f}`).join(" "):n[0],t.rate(e.rating),...t.narrow(e.narrow),o?"":s,e.order==="score"?t.best:""].filter(Boolean),c=[],u=[];for(let f of a)if(Zd([...c,f].join(" "))<=t.tagBudget)c.push(f);else u.push(f);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`]:[],...o?[`${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=Ff(this.boardKey,!0);this.board=e,this.boards.set(e.key,e),this.view.error=void 0;let n=this.sites.flatMap((s)=>{let o=this.query(s);return o?[{site:s,...o}]:[]}),r=this.sites.filter((s)=>!n.some((o)=>o.site===s)),i=[...n.flatMap(({notes:s})=>s),...r.length>0?[`${this.entry.name} has no tag on ${r.map((s)=>s.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 s=await Promise.all(n.map(async(o)=>({plan:o,owners:await this.kept.mateOwners(o.site)})));if(t!==this.gen)return;e.sources=s.flatMap(({plan:{site:o,tags:a},owners:c})=>{let u=Zd(a)+1<=o.tagBudget?o.uploadedBy:void 0;return[...u?c.keys().map((f)=>({site:o,tags:`${a} ${u(f)}`,page:0,done:!1})):[],{site:o,tags:a,page:0,done:!1}]}),this.show(),this.paint.draw(),await this.pump()}catch(s){this.fail(t,s)}}async tally(t,e,n){let r=await Promise.allSettled(n.map(({site:i,tags:s})=>Xd(i,s,this.signal)));if(t===this.gen)e.total=r.reduce((i,s)=>i+(s.status==="fulfilled"&&Number.isFinite(s.value)?s.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=Qg(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,Qg(e.name,n)].filter(Boolean).join(" · ")}wants(){let{perRow:t,rowsVis:e}=Er(this.cols,this.rows);return this.view.tiles.length<(this.board.top+e+ix)*t}need(){let{perRow:t,rowsVis:e}=Er(this.cols,this.rows);return(e+ix)*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=K0(t,e,n,this.signal).then((s)=>this.borrow(t,s)),this.pages.set(r,i),i.catch(()=>this.pages.delete(r));return i}async borrow(t,e){let n=t===Pt?[]:e.filter((r)=>r.md5!=="");if(n.length>0)try{xa(n,await Oa(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=Z.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<Tn;let u=t.last.get(a);for(let f of c){let l=u&&QE(u.post,f)?u.set:`set:${a.site.key}:${f.id}`;u={post:f,set:l};let d=ee(a.site,f.id);if(t.seen.has(d))continue;t.seen.add(d);let h={site:a.site,post:f};if(this.eligible(h))t.kin.set(h,[l,...XE(a.site,f)]),r.push(h);else t.checked++}if(u)t.last.set(a,u)}let i=this.dedupe(t,r),s=++t.rounds,o;if(this.view.order!=="fit")o=e.length>1?UE(i):i;else{let a=gf(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;o=[...gf(c,this.frame(),this.matched),...a.slice(c.length)]}t.stage="check",this.staged(t);for(let a of o)t.roundOf.set(a,s);t.queue.push(...o),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,s)=>t.roundOf.get(i)===e?[s]:[]),r=gf(n.map((i)=>t.queue[i]),this.frame(),this.matched);n.forEach((i,s)=>{t.queue[i]=r[s]})}dedupe(t,e){let n=[];for(let r of e){let i=Fg(r.post),s=i.map((a)=>t.same.get(a)).find(Boolean);if(!s){for(let a of i)t.same.set(a,r);n.push(r);continue}if(t.checked++,ox(r.post)<=ox(s.post))continue;for(let a of[...i,...Fg(s.post)])t.same.set(a,r);let o=n.indexOf(s);if(o>=0){n[o]=r;continue}this.replace(t,s,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 s=i.posts.indexOf(e);if(s>=0){i.posts[s]=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:tx},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=mu(t.site,t.post);await this.kept.cached(i.site,r,i.url);let s=await this.renders.run({job:"match",from:r,colors:this.entry.signature});return this.looked.set(e,s),this.matched.set(t.post,s.match),s})().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<QM&&e.queue.length>0&&this.wants()){let o=e.queue.shift();n.push({pick:o,passed:this.vet(o)})}if(this.ahead(e),!r&&e.queue.length<QM&&e.sources.some((o)=>!o.done)&&this.wants()){let o=this.round(e).then(()=>{if(r===o)r=void 0});o.catch(()=>{}),r=o}let i=n.shift();if(!i){if(!r)break;await r,this.show(),this.paint.draw();continue}let s=await i.passed;if(t!==this.gen)return;if(e.checked++,s)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=ln(e);if(!gu(t,e,this.view.rating)||pu(e,this.view.block).length>0||!n)return!1;if(this.view.solo&&e.solo===!1)return!1;let{score:r,size:i,png:s}=this.view.narrow;if(Math.min(e.width,e.height)<i||t.scored&&e.score<r||s&&e.ext!=="png"||B0(e,this.view.hide).length>0||this.view.hideTags.some((o)=>e.tags.includes(o)))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 s=r.kin.get(t)??[],o=this.looked.get(i),a=o&&{hash:o.hash,width:n.width,height:n.height},c=this.view.sets==="fold"?this.kindred(r,s,a):void 0;if(c){if(c.posts.push(t),this.register(r,c,s,a),c.open)this.thumbQueue.push(t),this.thumbs();return}let u={posts:[t],open:!1};r.groups.push(u),this.register(r,u,s,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)=>eM(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=XM(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=Pe.cols*this.cell.w,e=Pe.rows*this.cell.h;if(t===0||e===0)return;for(let n of this.view.held.slice(0,cg(this.cols))){if(n.thumb||this.heldAsked.has(n.from))continue;this.heldAsked.add(n.from);let r=Xn(this.scratch,`held-${Ej(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<tx&&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=St.cols*this.cell.w,i=St.rows*this.cell.h,s=mu(e,n),o=Xn(fn(e),"tile",`${ax(n.id,s.url)}-${r}x${i}.png`);if(!Jc(o)){let a=this.previewPath(t);if(await this.kept.cached(s.site,a,s.url),this.signal.aborted)return;await this.renders.run({job:"thumb",from:a,to:o,width:r,height:i})}this.thumbPath.set(ee(e,n.id),o),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),Cj),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.profile(n,r.signal),!ln(n.post))return;let{site:i}=n,s=this.board,o;try{await Pa(i,n.post,r.signal);let c=ln(n.post),u=this.origPath(i,t.id,c.ext);if(!Jc(u))e.fetching={id:t.key,got:0,size:0},this.paint.draw();let f=zr(i,n.post,c),l=await this.kept.cached(f.site,u,f.url,(m,p)=>{if(e.fetching?.id===t.key)e.fetching={id:t.key,got:m,size:p},this.paint.draw()});if(r.signal.aborted)return;if(e.fetching=void 0,s!==this.board)return;let d={site:i,id:t.id,key:t.key,path:u,ext:c.ext,size:l,using:"plain",failed:!1};e.preparing=t.key,this.paint.flush();let h=await this.render(d,"plain");if(r.signal.aborted||s!==this.board)return;if(o=h.clear===0?await this.twinOf(n,u,r.signal):void 0,o||r.signal.aborted||s!==this.board)return;if(h.clear===0&&to()&&this.setting("TTHEME_FIND_REMOVE_BG")!=="off"){if(e.preparing=void 0,e.cutting=t.key,this.paint.flush(),d.cut=await this.cutOut(i,t.id,u,r.signal),r.signal.aborted||s!==this.board)return;if(e.cutting=void 0,d.cut){e.preparing=t.key,this.paint.flush();let m=await this.render(d,"cut").catch(()=>{return});if(r.signal.aborted||s!==this.board)return;if(m&&yu(m.clear))d.using="cut";else Lf(d.cut,{force:!0}),d.cut=void 0,d.failed=!0}else d.failed=!0}if(this.current=d,e.tiles[e.focus]?.key===t.key)await this.present();this.preload()}catch(c){if(!r.signal.aborted&&!this.signal.aborted)e.error=Qg(i.name,c)}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()}let a=o&&s===this.board?this.swapIn(o):void 0;if(a)await this.load(a)}async twinOf(t,e,n){let r=this.view,i=this.board.groups.find((s)=>!s.open&&s.posts[0]===t);for(let s of i?.posts.slice(1)??[]){let o=ee(s.site,s.post.id),a=`${ee(t.site,t.post.id)}>${o}`;if(this.twins.get(a)===!1||!await this.kept.transparent(s.site,s.post))continue;let c=ln(s.post);if(n.aborted||c?.ext!=="png")continue;try{let u=this.origPath(s.site,s.post.id,c.ext),f=zr(s.site,s.post,c);r.fetching={id:o,got:0,size:0},await this.kept.cached(f.site,u,f.url,(d,h)=>{if(r.fetching?.id===o)r.fetching={id:o,got:d,size:h},this.paint.draw()}),r.fetching=void 0,r.preparing=o,this.paint.flush();let l=this.twins.get(a)??await this.renders.run({job:"twin",cut:u,whole:e});if(this.twins.set(a,l),l&&i?.posts.includes(s)&&!n.aborted)return i.posts.splice(i.posts.indexOf(s),1),i.posts.unshift(s),s}catch{this.twins.set(a,!1)}finally{if(r.fetching?.id===o)r.fetching=void 0;if(r.preparing===o)r.preparing=void 0}}return}swapIn(t){let e=this.view,n=ee(t.site,t.post.id);if(!this.thumbPath.has(n))this.thumbQueue.push(t),this.thumbs();this.show(),this.inform();let r=e.tiles[e.focus];if(r?.key!==n)return;return e.hint=`Trying ${t.site.name} ${t.post.id}, the same picture with a transparent background`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{e.hint=void 0,this.paint.draw()},ex),this.paint.draw(),r}async cutOut(t,e,n,r){let i=Xn(fn(t),"cut",`${e}.png`);if(Jc(i))return i;try{return $j(Mj(i),{recursive:!0}),await Aa(n,i,r),i}catch{Lf(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.profile(r,this.signal);if(this.prefetching>=Lj||!r||!ln(r.post))continue;let{site:i,post:s}=r;this.prefetching++,Pa(i,s,this.signal).then(async()=>{let o=ln(s),a=this.origPath(i,s.id,o.ext),c=zr(i,s,o);return await this.kept.cached(c.site,a,c.url),this.render({site:i,id:s.id,key:n.key,path:a,ext:o.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,Gj),s=Math.max(1,Math.round(r*i/n)),o={...this.view.tune},{coloring:a}=this.view,c=!ux(o,this.view.untuned),u=o.opacity!==this.view.untuned.opacity,f=c?`-${o.size}-${o.at}${u?`-${Math.round(o.opacity*100)}`:""}`:"",l=Xn(this.scratch,`${t.site.key}-${t.id}${e==="cut"?"c":""}${a==="original"?"o":""}-${i}x${s}${f}.png`),d=`${t.site.key}:${t.id}:${e}:${a}:${i}x${s}`,h=this.clarity.get(d);if(h&&Jc(l))return t.fill=h.fill,{clear:h.clear,path:l,opacity:h.opacity,touched:u};let m=await this.renders.run({job:"show",from:e==="cut"?t.cut:t.path,cut:e==="cut",to:l,width:i,height:s,colors:this.entry,tone:this.tone,blur:this.blurring*i/bh(n,r).width,coloring:a,...c?{tune:{size:o.size,at:o.at,...u?{opacity:o.opacity}:{}}}:{}});if(this.clarity.set(d,m),t.fill=m.fill,c)this.keepTuned(l);return{clear:m.clear,path:l,opacity:m.opacity,touched:u}}keepTuned(t){this.tunedFiles.push(t);while(this.tunedFiles.length>Uj){let e=this.tunedFiles.findIndex((n)=>n!==this.view.shown?.path&&n!==t);if(e===-1)return;Lf(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:s,opacity:o,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=o,this.view.tune.opacity=o;if(this.view.tuning&&t.fill)this.view.tuning.fill=t.fill;this.view.shown={id:t.key,clear:i,bytes:t.size,path:s,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=Rj(t.tune,t.untuned),i=this.posts.get(n.key),s=i?.post;if(i)await Promise.race([this.kept.profile(i,this.signal),xj(Fj,void 0,{ref:!1})]);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:s?.named.artist??[],profiles:this.kept.links(s?.named.artist??[]),source:Ci(s?.source??"")},width:this.cols*this.cell.w,height:this.rows*this.cell.h,blur:this.blurring,coloring:t.coloring,...r?{tune:r,aligns:fs(D(this.home).terminals),user:vj()}:{}}),this.kept.owned(n.site,n.id,s?.owner??""),Ue(this.home),this.holds();let{size:o,at:a,opacity:c}=t.tune,u=r?` · ${o==="fill"?"fill":`${o}%`} · ${Jt[a-1]} · ${c.toFixed(2)}`:"",f=s?.named.artist.length?`${s.named.artist.join(", ")} · `:"";t.saved={text:`Background · ${this.entry.name} ← ${f}${n.site.name} ${n.id}${u}`,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 lx(t,e,n){let r=new tb(t,ve(t),e,e.booru??"",n);if(await r.run(),ns(process.env))process.stdout.write(rs(""));return{saved:r.saved,installs:r.installs}}async function fx(t){let e=J(),n=ve(e),r=_n(n.palettes,t);if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error("needs a terminal");let i=new tb(e,n,r,r.booru??""),s=await i.run();if(i.saved&&s!==0)return process.stderr.write(`${i.saved}
730
- `),0;return s}var Hs=((t)=>{return t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t})(Hs||{}),qj=[0,1],hx=[1,0],mx=[2,3],px=[3,2],Jj={L:qj,M:hx,Q:mx,H:px},Yj=/^\d*$/,Vj=/^[A-Z0-9 $%*+./:-]*$/,eb="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",ib=1,sb=40,dx=3,Zj=3,jf=40,Xj=10,gx=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],bx=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class wx{constructor(t,e,n,r){if(this.version=t,this.ecc=e,t<ib||t>sb)throw RangeError("Version value out of range");if(r<-1||r>7)throw RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let o=0;o<this.size;o++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(n);if(this.drawCodewords(s),r===-1){let o=1e9;for(let a=0;a<8;a++){this.applyMask(a),this.drawFormatBits(a);let c=this.getPenaltyScore();if(c<o)r=a,o=c;this.applyMask(a)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(t,e){return t>=0&&t<this.size&&e>=0&&e<this.size&&this.modules[e][t]}drawFunctionPatterns(){for(let n=0;n<this.size;n++)this.setFunctionModule(6,n,n%2===0,Hs.Timing),this.setFunctionModule(n,6,n%2===0,Hs.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),e=t.length;for(let n=0;n<e;n++)for(let r=0;r<e;r++)if(!(n===0&&r===0||n===0&&r===e-1||n===e-1&&r===0))this.drawAlignmentPattern(t[n],t[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let e=this.ecc[1]<<3|t,n=e;for(let i=0;i<10;i++)n=n<<1^(n>>>9)*1335;let r=(e<<10|n)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,Ir(r,i));this.setFunctionModule(8,7,Ir(r,6)),this.setFunctionModule(8,8,Ir(r,7)),this.setFunctionModule(7,8,Ir(r,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,Ir(r,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,Ir(r,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,Ir(r,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let n=0;n<12;n++)t=t<<1^(t>>>11)*7973;let e=this.version<<12|t;for(let n=0;n<18;n++){let r=Ir(e,n),i=this.size-11+n%3,s=Math.floor(n/3);this.setFunctionModule(i,s,r),this.setFunctionModule(s,i,r)}}drawFinderPattern(t,e){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),s=t+r,o=e+n;if(s>=0&&s<this.size&&o>=0&&o<this.size)this.setFunctionModule(s,o,i!==2&&i!==4,Hs.Position)}}drawAlignmentPattern(t,e){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(t+r,e+n,Math.max(Math.abs(r),Math.abs(n))!==1,Hs.Alignment)}setFunctionModule(t,e,n,r=Hs.Function){this.modules[e][t]=n,this.types[e][t]=r}addEccAndInterleave(t){let e=this.version,n=this.ecc;if(t.length!==_f(e,n))throw RangeError("Invalid argument");let r=bx[n[0]][e],i=gx[n[0]][e],s=Math.floor(nb(e)/8),o=r-s%r,a=Math.floor(s/r),c=[],u=a6(i);for(let l=0,d=0;l<r;l++){let h=t.slice(d,d+a-i+(l<o?0:1));d+=h.length;let m=c6(h,u);if(l<o)h.push(0);c.push(h.concat(m))}let f=[];for(let l=0;l<c[0].length;l++)c.forEach((d,h)=>{if(l!==a-i||h>=o)f.push(d[l])});return f}drawCodewords(t){if(t.length!==Math.floor(nb(this.version)/8))throw RangeError("Invalid argument");let e=0;for(let n=this.size-1;n>=1;n-=2){if(n===6)n=5;for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let s=n-i,a=(n+1&2)===0?this.size-1-r:r;if(!this.types[a][s]&&e<t.length*8)this.modules[a][s]=Ir(t[e>>>3],7-(e&7)),e++}}}applyMask(t){if(t<0||t>7)throw RangeError("Mask value out of range");for(let e=0;e<this.size;e++)for(let n=0;n<this.size;n++){let r;switch(t){case 0:r=(n+e)%2===0;break;case 1:r=e%2===0;break;case 2:r=n%3===0;break;case 3:r=(n+e)%3===0;break;case 4:r=(Math.floor(n/3)+Math.floor(e/2))%2===0;break;case 5:r=n*e%2+n*e%3===0;break;case 6:r=(n*e%2+n*e%3)%2===0;break;case 7:r=((n+e)%2+n*e%3)%2===0;break;default:throw Error("Unreachable")}if(!this.types[e][n]&&r)this.modules[e][n]=!this.modules[e][n]}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,o=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[i][c]===s){if(o++,o===5)t+=dx;else if(o>5)t++}else{if(this.finderPenaltyAddHistory(o,a),!s)t+=this.finderPenaltyCountPatterns(a)*jf;s=this.modules[i][c],o=1}t+=this.finderPenaltyTerminateAndCount(s,o,a)*jf}for(let i=0;i<this.size;i++){let s=!1,o=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[c][i]===s){if(o++,o===5)t+=dx;else if(o>5)t++}else{if(this.finderPenaltyAddHistory(o,a),!s)t+=this.finderPenaltyCountPatterns(a)*jf;s=this.modules[c][i],o=1}t+=this.finderPenaltyTerminateAndCount(s,o,a)*jf}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let o=this.modules[i][s];if(o===this.modules[i][s+1]&&o===this.modules[i+1][s]&&o===this.modules[i+1][s+1])t+=Zj}let e=0;for(let i of this.modules)e=i.reduce((s,o)=>s+(o?1:0),e);let n=this.size*this.size,r=Math.ceil(Math.abs(e*20-n*10)/n)-1;return t+=r*Xj,t}getAlignmentPatternPositions(){if(this.version===1)return[];else{let t=Math.floor(this.version/7)+2,e=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,n=[6];for(let r=this.size-7;n.length<t;r-=e)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(t){let e=t[1],n=e>0&&t[2]===e&&t[3]===e*3&&t[4]===e&&t[5]===e;return(n&&t[0]>=e*4&&t[6]>=e?1:0)+(n&&t[6]>=e*4&&t[0]>=e?1:0)}finderPenaltyTerminateAndCount(t,e,n){if(t)this.finderPenaltyAddHistory(e,n),e=0;return e+=this.size,this.finderPenaltyAddHistory(e,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(t,e){if(e[0]===0)t+=this.size;e.pop(),e.unshift(t)}}function Rr(t,e,n){if(e<0||e>31||t>>>e!==0)throw RangeError("Value out of range");for(let r=e-1;r>=0;r--)n.push(t>>>r&1)}function Ir(t,e){return(t>>>e&1)!==0}class Bf{constructor(t,e,n){if(this.mode=t,this.numChars=e,this.bitData=n,e<0)throw RangeError("Invalid argument");this.bitData=n.slice()}getData(){return this.bitData.slice()}}var Qj=[1,10,12,14],t6=[2,9,11,13],e6=[4,8,16,16];function $x(t,e){return t[Math.floor((e+7)/17)+1]}function kx(t){let e=[];for(let n of t)Rr(n,8,e);return new Bf(e6,t.length,e)}function n6(t){if(!yx(t))throw RangeError("String contains non-numeric characters");let e=[];for(let n=0;n<t.length;){let r=Math.min(t.length-n,3);Rr(Number.parseInt(t.substring(n,n+r),10),r*3+1,e),n+=r}return new Bf(Qj,t.length,e)}function r6(t){if(!vx(t))throw RangeError("String contains unencodable characters in alphanumeric mode");let e=[],n;for(n=0;n+2<=t.length;n+=2){let r=eb.indexOf(t.charAt(n))*45;r+=eb.indexOf(t.charAt(n+1)),Rr(r,11,e)}if(n<t.length)Rr(eb.indexOf(t.charAt(n)),6,e);return new Bf(t6,t.length,e)}function i6(t){if(t==="")return[];else if(yx(t))return[n6(t)];else if(vx(t))return[r6(t)];else return[kx(o6(t))]}function yx(t){return Yj.test(t)}function vx(t){return Vj.test(t)}function s6(t,e){let n=0;for(let r of t){let i=$x(r.mode,e);if(r.numChars>=1<<i)return Number.POSITIVE_INFINITY;n+=4+i+r.bitData.length}return n}function o6(t){t=encodeURI(t);let e=[];for(let n=0;n<t.length;n++)if(t.charAt(n)!=="%")e.push(t.charCodeAt(n));else e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2;return e}function nb(t){if(t<ib||t>sb)throw RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let n=Math.floor(t/7)+2;if(e-=(25*n-10)*n-55,t>=7)e-=36}return e}function _f(t,e){return Math.floor(nb(t)/8)-gx[e[0]][t]*bx[e[0]][t]}function a6(t){if(t<1||t>255)throw RangeError("Degree out of range");let e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let n=1;for(let r=0;r<t;r++){for(let i=0;i<e.length;i++)if(e[i]=rb(e[i],n),i+1<e.length)e[i]^=e[i+1];n=rb(n,2)}return e}function c6(t,e){let n=e.map((r)=>0);for(let r of t){let i=r^n.shift();n.push(0),e.forEach((s,o)=>n[o]^=rb(s,i))}return n}function rb(t,e){if(t>>>8!==0||e>>>8!==0)throw RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(e>>>r&1)*t;return n}function u6(t,e,n=1,r=40,i=-1,s=!0){if(!(ib<=n&&n<=r&&r<=sb)||i<-1||i>7)throw RangeError("Invalid value");let o,a;for(o=n;;o++){let l=_f(o,e)*8,d=s6(t,o);if(d<=l){a=d;break}if(o>=r)throw RangeError("Data too long")}for(let l of[hx,mx,px])if(s&&a<=_f(o,l)*8)e=l;let c=[];for(let l of t){Rr(l.mode[0],4,c),Rr(l.numChars,$x(l.mode,o),c);for(let d of l.getData())c.push(d)}let u=_f(o,e)*8;Rr(0,Math.min(4,u-c.length),c),Rr(0,(8-c.length%8)%8,c);for(let l=236;c.length<u;l^=253)Rr(l,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((l,d)=>f[d>>>3]|=l<<7-(d&7)),new wx(o,e,f,i)}function Sx(t,e){let{ecc:n="L",boostEcc:r=!1,minVersion:i=1,maxVersion:s=40,maskPattern:o=-1,border:a=1}=e||{},c=typeof t==="string"?i6(t):Array.isArray(t)?[kx(t)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);let u=u6(c,Jj[n],i,s,o,r),f=l6({version:u.version,maskPattern:u.mask,size:u.size,data:u.modules,types:u.types},a);if(e?.invert)f.data=f.data.map((l)=>l.map((d)=>!d));return e?.onEncoded?.(f),f}function l6(t,e=1){if(!e)return t;let{size:n}=t,r=n+e*2;t.size=r,t.data.forEach((s)=>{for(let o=0;o<e;o++)s.unshift(!1),s.push(!1)});for(let s=0;s<e;s++)t.data.unshift(Array.from({length:r},(o)=>!1)),t.data.push(Array.from({length:r},(o)=>!1));let i=Hs.Border;t.types.forEach((s)=>{for(let o=0;o<e;o++)s.unshift(i),s.push(i)});for(let s=0;s<e;s++)t.types.unshift(Array.from({length:r},(o)=>i)),t.types.push(Array.from({length:r},(o)=>i));return t}var f6=Zk(16,231),d6=[" ","▀","▄","█"],h6=2953;function Ex(t){if(Buffer.byteLength(t)>h6)return;let{data:e}=Sx(t,{border:2,boostEcc:!0}),n=[];for(let r=0;r<e.length;r+=2){let i=e[r]??[],s=e[r+1]??[];n.push(`${f6}${i.map((o,a)=>d6[(o?1:0)+(s[a]?2:0)]).join("")}${Se}`)}return n}var m6=50;function p6(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi}}function g6(t,e,n){for(let r of n){let i=t-4-r.length;if(i>e.length+2)return[[2,e],[i,` ${r} `]]}return[[2,e]]}function Mx(t,e,n,r=m6){let i=je(n),s=sn(p6(e)),o=Ok(t).map((m)=>m.toLowerCase()),a=Rg(s,e.signatureSlots,e.waived??[]),c=sr(xr(s,e.signatureSlots,e.waived??[])).length,u=(m)=>s[m]?.toLowerCase()!==o[m],f=s.filter((m,p)=>u(p)).length,l=(m)=>{let p=s[m],b=e.signatureSlots.includes(Vn[m])?R.signature:n?R.swatch:" ",$=n?`${i.fg(p)}${b}${$t}`:b,k=a.has(m)?i.bold(R.miss):u(m)?i.warn(R.on):" ";return` ${$} ${Mf(Ot(p))}${k}`},d=c===0?"passes the gate":`${c} ${c===1?"miss":"misses"} in the gate`,h=f>0?[`${f} tuned · ${d}`,d]:[d];return[i.dim(Bt(r,"top",g6(r," Palette ",h))),...L.map((m,p)=>Xe(i,` ${m.padEnd(10)}${l(p)}`,r)),i.dim(Bt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])),...Mn.map((m,p)=>Xe(i,` ${m.padEnd(10)}${l(L.length+p)}${l(L.length+8+p)}`,r)),i.dim(Bt(r,"bottom"))]}function ua(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}async function ab(){let t=process.env.TTHEME_WORN;if(!t||!ua())return;let e=await Be({message:`Use ${t}, the palette this tab wears?`});if(ie(e)||!e)throw new be;return t}async function Px(t){let e=process.env.TTHEME_WORN;if(!e)return;if(!ua())return console.error(`Sharing ${e}, the palette this tab wears`),{name:e,...t?{tone:t}:{}};if(t!==void 0||Kt(J())[e]===void 0)return await ab(),{name:e,...t?{tone:t}:{}};let n=await $m({message:`Share ${e}, the palette this tab wears?`,options:[{value:"tuned",label:"Your tone",hint:`named ${Vc(e)}`},{value:"original",label:"The original"},{value:"no",label:"No"}]});if(ie(n)||n==="no")throw new be;return{name:e,tone:n}}function Ix(t,e){if(t.includes("/"))return t;let n=Vi(e,!1),r=n.filter((s)=>$o(s.dir).some((o)=>o.slug===t)),[i]=r.length===1?r:n.length===1?n:[];return i?`${i.id}/${t}`:t}function $6(t,e,n){let r=D(t),i=n.filter((s)=>!r.palettes.includes(s));if(i.length>0)nn(t,e,r,{...r,palettes:[...r.palettes,...i]});else if(n.some((s)=>r.palettes.includes(s)))Dt(t,e,r);return{state:r,fresh:i}}function k6(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 xx(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi])}function Rx(t,e,n){let r=Sk(e,n.palettes),i=hr(t,n,!1).palettes.find((s)=>s.name===r.name);if(i&&xx(i)!==xx(r))throw Error(`${r.name} is already in ${et(r.name)??"the official marketplace"} and differs — \`ttheme add ${r.name}\` wears that one`);if(!i)vo(t,[...Xr(t),r]);return r}var y6=["background","foreground","cursor"];function Ax(t){try{t();return}catch(e){return e.message}}function Nx(t,e,n){return zt(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 Tx(t,e){let n=new Set(ke(t,e).map((r)=>r.key));return{count:()=>ke(t,e).length,added:()=>ke(t,e).filter((r)=>!n.has(r.key)).length,fresh:()=>(wf(t,e)??[]).filter((r)=>!n.has(he(r))),discard:()=>{let r=ke(t,e).filter((i)=>!n.has(i.key));for(let i of r)uo(t,e,i.key),Ru(t,e);if(r.length>0)Ue(t)}}}function v6(...t){let e=new Map(t.flatMap((n)=>n??[]).map((n)=>[he(n),n]));return e.size>0?[...e.values()]:void 0}function Hx(t,e,n,r){if(!Oo(process.env,D(t).terminals))return;return async(i,s)=>{let o=hn(Cn(e,r(i),n.palettes)),{saved:a}=await lx(t,o,s);return{...a?{note:a}:{},count:ke(t,e).length}}}async function cb(t,e=!1){let n=process.stdout.isTTY===!0,r=J(),i=D(r).terminals,s=n?yf.of(process.env,r,t.name,i):void 0,o=n?Rf.of(process.env,i):void 0;return DM(t,{color:!Ct(),...s?{backdrop:s}:{},...o?{layer:o}:{},...e?{hosted:!0}:{}})}async function Lx(t,e,n){let r=J(),i=lt(r),s=await lS(r,n),o=t.includes("/")?t:`${s.id}/${t}`,a=ne(o);if(a)throw Error(`${o} ${a}`);if(et(o)!==s.id)throw Error(`palettes in ${s.dir} are named ${s.id}/<palette> — ${o} belongs elsewhere`);let c=Bh(r,o);if(Zc(c))throw Error(`${o} already exists — \`ttheme edit ${o}\` changes it`);let u=e?_n(zt(r,i).palettes,e):void 0;if(!ua())throw Error("new opens the palette editor — run it in a terminal");let f=u&&(et(u.name)?u.base:u.default?void 0:u.name),l=u?Uh(u,o,`kept from ${u.name}`):void 0,d=u?wf(r,u.name)??u.pictures:void 0,{base:h,ansiSource:m,...p}=l??{name:o,signature:y6,...yi(Lc)},b=Tx(r,o),$=({colors:v,signature:x})=>{let M=v6(d,b.fresh());return Wh({...p,...v,signature:x,...f?{base:f}:{},...M?{pictures:M}:{}})},k=await cb({title:"New palette",name:o,...l?{colors:l}:{},signature:p.signature,...p.waive?{waive:p.waive}:{},palettes:Nx(r,i,o),pictures:b.count(),find:Hx(r,o,i,$),exports:Ux(r,o,i,$),decode:ub,check:(v)=>Ax(()=>Cn(o,$(v),i.palettes))});if(!k){b.discard(),console.log("Nothing made");return}b6(w6(c),{recursive:!0}),H(c,$(k));let{state:S}=$6(r,i,[o]);console.log(` + ${o}${u?` from ${u.name}`:""}
731
- ${c}`),await Ps(r,zt(r,i).palettes.filter((v)=>v.name===o),S.terminals),console.log(`
732
- \`ttheme use ${o}\` wears it · \`ttheme edit ${o}\` opens it again`)}function S6(t,e,n){let r=hn(Cn(t,e,n.palettes));return qa(r).length>0?Ga(r).filter((i)=>i.startsWith(" ✗")):[]}async function Fx(t){let e=J(),n=lt(e),r=D(e),i=zt(e,n,!1),s=Ix(t,e),o=Gf(e,s),a=o&&Zc(o)?s:i.palettes.some((k)=>k.name===t)?t:s,c=Gf(e,a),u=!c||!Zc(c);if(u&&!i.palettes.some((k)=>k.name===a))throw Error(`no palette called ${a} — \`ttheme new\` makes one`);if(!ua())throw Error("edit opens the palette editor — run it in a terminal");if(u){let k=await _x(e,a,!1);console.log(k===void 0?"Nothing changed":k===0?`${a} is back to its own colors`:`Saved ${a} · ${jx(k)} — R then s in \`ttheme edit ${a}\` puts its own colors back`);return}let f=ob(c,"utf8"),l;try{l=Cn(a,f,n.palettes)}catch(k){throw Error(`${c} cannot be read — ${k.message}`)}let d=Tx(e,a),h=new Set((l.pictures??[]).map((k)=>he(k))),m=({colors:k,signature:S})=>wk(Ek(Dh(f,k),S),d.fresh().filter((v)=>!h.has(he(v)))),p=await cb({title:"Edit palette",name:a,colors:yo(l),signature:l.signatureSlots,waive:l.waive,palettes:Nx(e,n,a),pictures:d.count(),find:Hx(e,a,n,m),exports:Ux(e,a,n,m),decode:ub,check:(k)=>Ax(()=>Cn(a,m(k),n.palettes))});if(!p){d.discard(),console.log("Nothing changed");return}let b=m(p);if(b===f){console.log(d.added()>0?`Kept the pictures you added to ${a}`:"Nothing changed");return}if(H(c,b),r.palettes.includes(a))Dt(e,n,r);console.log(`Saved ${a}${r.palettes.includes(a)?" — new tabs and `ttheme use` wear it":` — \`ttheme add ${a}\` installs it`}`);let $=S6(a,b,n);if($.length>0)console.log(`
728
+ }`;async function EE(){if(wg())return;if(process.platform==="darwin"){let[t="",e=""]=(await kn("osascript",["-l","JavaScript","-e",U3])).stdout.trim().split("\t");return{stamp:t,picture:e==="picture"}}if(process.platform==="linux"&&!vE()){let e=Boolean(process.env.WAYLAND_DISPLAY)?(await kn("wl-paste",["--list-types"])).stdout:(await kn("xclip",["-selection","clipboard","-t","TARGETS","-o"])).stdout;return{stamp:e,picture:/^image\//m.test(e)}}return}function df(t){return t.length>8&&/^(?:\/|~\/|file:|https?:)/.test(t)}var Ac=(t)=>Buffer.from(t).toString("base64"),pg=(t)=>Buffer.from(t,"base64");function mE(t,e){return e.find((n)=>t.includes(n))}class $g{clipboard=!1;drops=!1;reading;offered=[];dropping;pw=Ac(pE("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;${mg.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=${Ac("ttheme")}:pw=${this.pw};${Ac(".")}\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?pg(t.mime).toString("utf8"):r.mime,e)r.chunks.push(pg(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 s=i.toString("utf8").split(/\s+/).filter(Boolean),o=mE(s,[...gg,...T3]);if(!o){this.deliver({kind:"text",text:""});return}let a=r.pw||this.pw,c=r.pw?"Paste event":"ttheme";this.reading={mime:o,chunks:[],pw:a,listing:!1},this.send(`\x1B]5522;type=read:name=${Ac(c)}:pw=${a};${Ac(o)}\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=mg.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=mE(a,mg);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(pg(e));if(t.m==="1"||e)return;this.dropping=void 0;let i=Buffer.concat(r.chunks),s=r.mimes[r.index-1]??"",o;if(s.startsWith("image/"))o={kind:"bytes",bytes:new Uint8Array(i),source:"drop"};else{let a=i.toString("utf8"),c=s==="text/uri-list"?Xo(a).find((u)=>S3(u)):void 0;o=c?{kind:"bytes",bytes:new Uint8Array(ff(c)),source:c}:{kind:"text",text:a}}this.send("\x1B]72;t=r:o=1\x1B\\"),this.deliver(o)}}var kg=5,W3=6,ME=0.05,K3=[1,2,3,4,5,6,9,10,11,12,13,14],xE=(t,e)=>(e-t+360)%360<=180?1:-1;function Dn(t,e,n){let r=e*Math.cos(n*Math.PI/180),i=e*Math.sin(n*Math.PI/180),s=[t+0.3963377774*r+0.2158037573*i,t-0.1055613458*r-0.0638541728*i,t-0.0894841775*r-1.291485548*i].map((f)=>f**3),[o,a,c]=s,u=[4.0767416621*o-3.3077115913*a+0.2309699292*c,-1.2684380046*o+2.6097574011*a-0.3413193965*c,-0.0041960863*o-0.7034186147*a+1.707614701*c];if(u.some((f)=>f<-0.0001||f>1.0001))return;return u.map((f)=>{let l=Math.min(1,Math.max(0,f));return Math.round(255*(l<=0.0031308?12.92*l:1.055*l**0.4166666666666667-0.055))})}function Qo(t,e,n){if(Dn(t,n,e)!==void 0)return n;let r=0,i=n;for(let s=0;s<24;s++){let o=(r+i)/2;if(Dn(t,o,e)===void 0)i=o;else r=o}return r}function nn(t,e,n){return`#${(Dn(t,Qo(t,n,e),n)??[0,0,0]).map((i)=>i.toString(16).padStart(2,"0")).join("")}`}function z3(t,e){let{l:n,c:r}=Ot(t);return nn(n,r,(e+360)%360)}function D3(t,e,n){let{l:r,c:i,h:s}=Ot(t),o=Mt(e)<0.18,a=(f)=>nn(o?r+(1-r)*f:r*(1-f),i,s);if(kt(a(1),e)<n+ME)return a(1);let c=0,u=1;for(let f=0;f<30;f++){let l=(c+u)/2;if(kt(a(l),e)>=n+ME)u=l;else c=l}return a(u)}function q3(t,e){let{l:n,c:r,h:i}=Ot(t),s=0,o=n;for(let a=0;a<30;a++){let c=(s+o)/2;if(Mt(nn(c,r,i))<=e-0.005)s=c;else o=c}return nn(s,r,i)}function J3(t,e,n){let r=Re[e],[i,s]=[Ot(t[e]),Ot(t[e+8])],o=(f,l)=>n.has(f)?[l]:Array.from({length:2*r.width+1},(d,h)=>(r.center-r.width+h+360)%360),a=(f,l,d)=>an.every((h)=>{let m=(f>8?8:0)+h;if(m===f)return!0;let p=Ot(t[m]);return p.c<Ri||Ae(p.h,l)>=_s+1||Math.abs(p.l-d)>=Bs}),c,u=Number.POSITIVE_INFINITY;for(let f of o(e,i.h)){if(!n.has(e)&&!a(e,f,i.l))continue;for(let l of o(e+8,s.h)){if(Ae(f,l)>on-kg||!n.has(e+8)&&!a(e+8,l,s.l))continue;let d=Ae(f,i.h)+Ae(l,s.h);if(d<u)u=d,c=[f,l]}}return c}class OE{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,z3(this.theme.ansi[t],n))}roles(){let t=new Set(this.theme.signatureSlots);for(let{slot:n,hue:r}of Tr(this.theme)){let i=Re[En(n)];this.rehue(n,"ansi-role",i.center+xE(i.center,r)*(i.width-kg))}for(let{normal:n,gap:r}of tr(this.theme)){if(r<=on)continue;let[i,s]=t.has(`ansi${n+8}`)?[n+8,n]:[n,n+8],o=Ot(this.theme.ansi[i]).h,a=Ot(this.theme.ansi[s]).h;this.rehue(s,"bright-follows",o+xE(o,a)*(on-kg))}let e=Gs(this.theme);for(let[n,r]of er(this.theme)){let i=En(e.has(r)?n:r),s=J3(this.theme.ansi,i,e);if(s===void 0)continue;this.rehue(i,"distinct",s[0]),this.rehue(i+8,"distinct",s[1])}}readability(){let t=new Set(this.theme.waive),{background:e}=this.theme,n=(r,i,s,o=e)=>{if(t.has(r))return;for(let a of i)if(kt(this.get(a),o)<s)this.set(a,r,D3(this.get(a),o,s))};if(n("foreground",["foreground"],7),n("accents",K3.map((r)=>`ansi${r}`),3),n("light-ansi",["ansi7","ansi15"],7),n("ansi8-visible",["ansi8"],1.6),!t.has("ansi0-dark")&&Mt(this.get("ansi0"))>0.15)this.set("ansi0","ansi0-dark",q3(this.get("ansi0"),0.15));n("selection",["selection"],7,this.theme.foreground)}net(){return[...Map.groupBy(this.moves,(t)=>t.slot)].flatMap(([t,e])=>{let 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 hf(t){let e=new OE(t);for(let n=0;n<W3;n++)if(e.readability(),e.roles(),nr(e.theme).length===0)break;return{theme:e.theme,moves:e.net(),left:nr(e.theme)}}var ys=[{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}],Nc={background:0.21,foreground:0.88,hue:265,tint:0.02,lightness:0.72,chroma:0.12,brights:0.06},PE=(t,e,n)=>Math.min(n,Math.max(e,t));function yg(t,e,n){let r=t[e.key]+e.step*n,i=e.wraps?(r%e.max+e.max)%e.max:PE(r,e.min,e.max);return{...t,[e.key]:Math.round(i*1e4)/1e4}}function yi(t){let e=(r,i,s)=>nn(PE(r,0,1),i,s),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 an){let i=Re[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 qn=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],F=["Background","Foreground","Cursor","Selection"],vn=["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"],Y3=["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"],vs=F.length+vn.length,yn=[{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}],IE=5,V3=5,oe=yn.length,ta=["this","pair","normals","brights","accents"],FE=[1,2,3,4,5,6,9,10,11,12,13,14],RE=an.map((t)=>F.length+t),AE=an.map((t)=>F.length+8+t);function vg(t,e){let n=e-F.length;if(n<0||t==="this")return[e];if(t==="pair")return[F.length+n%8,F.length+8+n%8];let r=t==="normals"?RE:t==="brights"?AE:[...RE,...AE];return r.includes(e)?r:[e]}function Z3(){return Array.from({length:vs},(t,e)=>e<F.length?[e]:[e,e+8]).flat()}function X3(t){let e=t.trim();return/^https?:\/\/\S+$/i.test(e)||Xo(e).length>0}function rn(t){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi]}function ae(t){let[e,n,r,i,...s]=t;return{background:e,foreground:n,cursor:r,selection:i,ansi:s}}function Ue(t){if(t<F.length)return{name:F[t],about:qn[t]};let e=t-F.length,n=vn[e%8];return e<8?{name:n,about:`ANSI ${e}`}:{name:`Bright ${n.toLowerCase()}`,about:`ANSI ${e}`}}function LE(t){let e=t-F.length;if(e>=9&&e<=15)return`Bold or bright ${vn[e-8].toLowerCase()} text`;return Y3[t]}var Ss=(t,e,n)=>Math.min(n,Math.max(e,t));function NE(t){return t.length===1?t.toLowerCase():t}function Q3(t){return Ss(Math.round(t),0,255).toString(16).padStart(2,"0")}function TE(t){let e=t.trim().toLowerCase(),n=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/.exec(e);if(n){let s=n[1];return`#${s.length===3?[...s].map((o)=>o+o).join(""):s}`}let r=/^rgb\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*\)$/.exec(e);if(r)return`#${r.slice(1,4).map((s)=>Q3(Number(s))).join("")}`;let i=/^oklch\(\s*([\d.]+)(%?)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:deg|°)?\s*\)$/.exec(e);if(i){let s=Number(i[1])/(i[2]?100:1);return nn(Ss(s,0,1),Number(i[3]),Number(i[4])%360)}return}function Es(t){let e=Ne.find((n)=>n.rule===t);return e?.min??e?.max??0}function Er(t,e,n){let r=ae(t);return{name:"draft",background:r.background,foreground:r.foreground,selectionBackground:r.selection,ansi:r.ansi,waive:n,signatureSlots:e}}function t5(t,e){let n=t-F.length,r=t<=1?"foreground":t===3?"selection":n===7||n===15?"light-ansi":n===8?"ansi8-visible":FE.includes(n)?"accents":void 0;return{against:t===0||t===3?1:0,floor:r===void 0||e.includes(r)?void 0:Es(r)}}function xg(t,e,n,r){let i=Er(t,e,n),{background:s,foreground:o,selection:a,ansi:c}=ae(t),u=(f,l,d)=>kt(l,d)<Es(r)?[f]:[];if(r==="foreground")return kt(o,s)<Es(r)?[1,0]:[];if(r==="selection")return kt(o,a)<Es(r)?[3,1]:[];if(r==="accents")return FE.flatMap((f)=>u(F.length+f,c[f],s));if(r==="light-ansi")return[7,15].flatMap((f)=>u(F.length+f,c[f],s));if(r==="ansi8-visible")return u(F.length+8,c[8],s);if(r==="ansi0-dark")return Mt(c[0])>Es(r)?[F.length]:[];if(r==="ansi-role")return Tr(i).map(({slot:f})=>F.length+f);if(r==="bright-follows")return tr(i).filter(({gap:f})=>f>on).flatMap(({normal:f})=>[F.length+f,F.length+f+8]);if(r==="distinct")return er(i).flatMap(([f,l])=>[F.length+f,F.length+l]);return[]}function Og(t,e,n){return new Set(qn.keys().filter((r)=>Pg(t,e,n,r).some((i)=>i.ok===!1)))}function Sr(t,e,n,r,i){let s=kt(t,e),o=Es(n);if(i.includes(n))return{ok:void 0,text:`${r} ${s.toFixed(2)}:1 · waived`};return{ok:s>=o,text:`${r} ${s.toFixed(2)}:1 · ≥ ${o}`}}function Pg(t,e,n,r){let i=ae(t),s=Er(t,e,n);if(r===0){let $=[1,2,3,4,5,6,9,10,11,12,13,14].reduce((k,v)=>kt(i.ansi[k],i.background)<=kt(i.ansi[v],i.background)?k:v);return[Sr(i.foreground,i.background,"foreground","Foreground on it",n),Sr(i.ansi[$],i.background,"accents",`Weakest, ANSI ${$},`,n),Sr(i.ansi[8],i.background,"ansi8-visible","ANSI 8 on it",n)]}if(r===1)return[Sr(i.foreground,i.background,"foreground","On background",n),Sr(i.foreground,i.selection,"selection","On the selection",n)];if(r===2)return[{ok:void 0,text:`On background ${kt(i.cursor,i.background).toFixed(2)}:1`}];if(r===3)return[Sr(i.foreground,i.selection,"selection","Foreground on it",n)];let o=r-F.length,a=i.ansi[o];if(o===0){let b=Mt(a),$=Es("ansi0-dark");return[n.includes("ansi0-dark")?{ok:void 0,text:`Luminance ${b.toFixed(3)} · waived`}:{ok:b<=$,text:`Luminance ${b.toFixed(3)} · ≤ ${$}`}]}if(o===7||o===15)return[Sr(a,i.background,"light-ansi","On background",n)];if(o===8)return[Sr(a,i.background,"ansi8-visible","On background",n)];let c=[Sr(a,i.background,"accents","On background",n)],u=Ot(a),f=En(o),l=Re[f],d=`${l.name} ${l.center}±${l.width}°`;if(u.c<Ri)c.push({ok:void 0,text:"Too grey to have a hue"});else if(Gs(s).has(o))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · a signature, free of ${d}`});else if(n.includes("ansi-role"))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · ${d} waived`});else{let b=Ae(u.h,l.center)-l.width;c.push(b>0?{ok:!1,text:`Hue ${u.h.toFixed(0)}° · ${b.toFixed(0)}° outside ${d}`}:{ok:!0,text:`Hue ${u.h.toFixed(0)}° · in ${d}`})}let h=o<8?o+8:o-8,m=tr(s).find((b)=>b.normal===f);if(m)c.push(n.includes("bright-follows")?{ok:void 0,text:`${m.gap.toFixed(0)}° from ANSI ${h} · waived`}:{ok:m.gap<=on,text:`${m.gap.toFixed(0)}° from ANSI ${h} · ≤ ${on}°`});let p=er(s).flatMap(([b,$])=>b===o?[$]:$===o?[b]:[]);if(p.length>0&&!n.includes("distinct"))c.push({ok:!1,text:`Reads as ANSI ${p.join(", ")} · within ${_s}° and ${Bs} lightness`});return c}function Ig(t,e,n){let r=Mn(Er(t,e,n));return Ne.map((i,s)=>{let o=r[s],a=n.includes(i.rule),c=a||Number.isNaN(o)?void 0:(i.min===void 0||o>=i.min)&&(i.max===void 0||o<=i.max);return{ok:c,label:i.label,value:Number.isNaN(o)?"—":Number.isInteger(o)?String(o):o.toFixed(2),bound:a?"waived":i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",slots:c===!1?xg(t,e,n,i.rule):[]}})}var e5=new Set(["reset","reset-all","hex","paste","fix","open","tune","sig","follow"]),CE=yn[1].max;function Mg(t){let[e,n,r]=st(t);return e===n&&n===r}function n5(t,e){let n=Ot(e);if(!Mg(e))return n;let r=[0,1,3,2].map((i)=>t[i]).find((i)=>!Mg(i));return{...n,h:r?Ot(r).h:Nc.hue}}function jE(t,e,n){if(t==="rgb"){let[r,i,s]=st(e);return`rgb(${r} ${i} ${s})`}if(t==="oklch")return`oklch(${n.l.toFixed(3)} ${n.c.toFixed(3)} ${n.h.toFixed(0)})`;return e}function Sg(t,e){return Math.floor(Qo(t,e,CE)*1e4)/1e4}function Eg(t,e){return{l:e.l-t.l,c:e.c-t.c,h:((e.h-t.h)%360+540)%360-180}}function HE(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 Rg{mode;seeds=Nc;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=rn(t.colors??yi(this.seeds)),this.lch=this.lchs(),this.start=this.list,this.original=t.original?rn(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=F.length+e,r=n+8,i=this.lchOf(t[n]),s=this.lchOf(t[r]);if(i.c>=Ri&&s.c>=Ri&&Ae(i.h,s.h)<=3)this.links.set(r,n),this.offsets.set(r,Eg(i,s))}}pair(t){if(t<F.length)return;let e=F.length+(t-F.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<F.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 ae(this.list)}edited(){return{colors:this.colors(),signature:[...this.signature]}}shown(){return this.compare?this.start:this.list}slot(){return this.row<F.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()}resettable(){return this.dirty()||this.tone&&this.list.some((t,e)=>t!==this.original[e])}misses(){return Og(this.list,this.signature,this.waive)}failing(){return nr(Er(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&&X3(t)){this.findPictures({paste:t});return}if(this.mode==="seeds")return;let e=this.options.decode?.(t);if(e){this.remember("open"),this.list=rn(e),this.lch=this.lchs(),this.chain(this.list),this.notice="Took the colors of the share code";return}let n=TE(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",this.inspect=!1,this.spot=void 0;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<F.length?t:F.length+(t-F.length)%8,t>=F.length)this.col=t-F.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===oe){this.reach(21**n);return}this.put(HE(yn[t],n))}sow(t,e){let n=ys[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=yg({...this.seeds,[n.key]:HE(n,r)},n,0),this.list=rn(yi(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,ys.length-1);else if(this.mode==="tune")this.channel=0,this.step(-t);else this.row=e(this.row,vs-1),this.lastEdit=void 0}lchOf(t){return n5(this.list,t)}lchs(){return this.list.map((t)=>this.lchOf(t))}seedKey(t){let e=ys.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=ys[this.field],r=(t.endsWith("left")?-1:1)*(t.startsWith("shift")?n.wraps?10:IE:1);this.seeds=yg(this.seeds,n,r),this.list=rn(yi(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:vs-1,t==="home"?1:-1);else if(t==="pgup"||t==="pgdn")this.land(t==="pgup"?0:F.length,1);else if(t==="left"||t==="right"){let e=t==="left"?0:1;if(this.row>=F.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&&this.view==="slot"?Ic(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>=F.length&&this.visible(this.slotAt(t,1))}land(t,e){for(let n=0;n<vs;n++){let r=((t+e*n)%vs+vs)%vs;if(this.rowShown(r)){if(this.row=r,r>=F.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=this.view==="relations"?"g goes back to the builder":"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 share link or a tt2: 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)}}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=cE(t,this.slot())}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=uE(e,af(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?lE(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<F.length){this.notice="l links a bright to its normal — pick an ANSI row";return}let e=F.length+(t-F.length)%8,n=e+8,r=`${Ue(n).name} and ${Ue(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,Eg(this.lch[e],this.lch[n])),this.notice=`${r} move together`}nextMiss(t){let e=Z3(),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 s=e[((r+t*i)%e.length+e.length)%e.length];if(n.has(s)){this.seat(s);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 vg(this.scope,this.slot())}tuneKey(t){let e=this.channel===oe;if(t==="tab"||t==="shift-tab")this.channel=e?0:oe;else if(t==="up"||t==="down"||t==="pgup"||t==="pgdn")this.channel=0,this.step((t==="up"||t==="pgup"?1:-1)*(t.startsWith("pg")?IE: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*V3)}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=yn[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=yn[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()<F.length){this.notice="A base color moves alone";return}let t=ta.indexOf(this.scope);for(let e=1;e<=ta.length;e++){let n=ta[(t+e)%ta.length];if(n==="this"||vg(n,this.slot()).length>1){this.scopeTo(n);return}}}scopeTo(t){if(this.mode!=="tune"||this.typing!==void 0||this.quitting||this.slot()<F.length)return;if(t!=="this"&&vg(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 t5(this.slot(),this.waive)}ratio(){return kt(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:kt(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,s=(d)=>nn(d,Math.min(i,Sg(d,r.h)),r.h),o=(d)=>kt(s(d),n),a=Mt(this.list[e])>=Mt(n),c=Ot(n).l,u=Math.max(1,Math.round(t*100)/100),f=a?1:0,l;if(o(f)<u)l=f,this.notice=`The ratio stops at ${o(f).toFixed(2)}:1 on this side of the color it is read against`;else{let d=c,h=f;for(let m=0;m<24;m++){let p=(d+h)/2;if(o(p)>=u)h=p;else d=p}l=h}this.place(e,l,i,r.h);for(let d=0;d<40&&l!==f&&kt(this.list[e],n)<u;d++)l=a?Math.min(1,l+0.001):Math.max(0,l-0.001),this.place(e,l,i,r.h);this.lch=this.lch.with(e,{...this.lch[e],l:Math.round(l*1e4)/1e4})}step(t){let e=yn[this.channel],n=this.lch[this.slot()][e.key];this.put(n+e.step*t)}put(t){let e=this.slot(),n=yn[this.channel],r=n.wraps?(t%n.max+n.max)%n.max:Ss(t,n.min,n.max),i=Math.round(r*1e4)/1e4,s=this.lch[e],o=this.scoped().filter((u)=>u!==e),a=(u)=>Math.round(u*1e4)/1e4;if(n.key==="c"){let u=Sg(s.l,s.h);if(i>u)this.notice=`Chroma stops at ${u.toFixed(3)}, the sRGB edge for this lightness and hue`;let f=Math.min(i,u),l=f-s.c;this.holds.set(e,f),this.place(e,s.l,f,s.h);for(let d of o){let h=this.lch[d],m=a(Ss((this.holds.get(d)??h.c)+l,0,CE));this.holds.set(d,m),this.place(d,h.l,m,h.h)}this.trail([e,...o]);return}let c=n.key==="h"?((i-s.h)%360+540)%360-180:i-s.l;if(this.place(e,n.key==="l"?i:s.l,this.holds.get(e)??s.c,n.key==="h"?i:s.h),n.key==="h"&&Mg(this.list[e]))this.notice="A grey shows no hue — raise its chroma first";for(let u of o){let f=this.lch[u];this.place(u,n.key==="l"?a(Ss(f.l+c,0,1)):f.l,this.holds.get(u)??f.c,n.key==="h"?a(((f.h+c)%360+360)%360):f.h)}this.trail([e,...o])}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],s=this.offsets.get(n);this.place(n,Ss(i.l+s.l,0,1),Math.max(0,i.c+s.c),((i.h+s.h)%360+360)%360)}}}place(t,e,n,r){let i=Math.min(n,Sg(e,r));this.lch=this.lch.with(t,{l:e,c:i,h:r}),this.list=this.list.with(t,nn(e,i,r))}take(t,e){if(this.mode==="tune"){let n=this.slot();this.list=this.list.with(n,t),this.lch=this.lch.with(n,this.lchOf(t)),this.holds.set(n,this.lch[n].c),this.trail([n])}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=TE(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=ms(e,NE(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=rn(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=ms(this.filter,NE(t),(r)=>/^[a-z0-9@/-]$/.test(r));if(n!==void 0)this.filter=n,this.pick=0}}snapshot(){return{list:this.list,lch:this.lch,signature:this.signature}}remember(t){if(t!==this.lastEdit||e5.has(t))this.history.push(this.snapshot()),this.future=[];this.lastEdit=t}set(t,e,n){if(!we(e)||this.list[t]===e)return;this.remember(n),this.list=this.list.with(t,e),this.lch=this.lch.with(t,this.lchOf(e)),this.trail([t])}follow(){if(this.row<F.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,Ss(n.l+0.06,0,1),n.c,n.h),this.links.set(e,t),this.unlinked.delete(e),this.offsets.set(e,Eg(n,this.lch[e])),this.seat(e),this.notice=`${Ue(e).name} follows ${Ue(t).name.toLowerCase()}`}mark(){let t=qn[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=Er(this.list,this.signature,this.waive),{theme:e,moves:n,left:r}=hf({...t,selectionBackground:t.selectionBackground,signatureSlots:this.signature});if(n.length===0){this.notice=nr(t).length===0?"Already passes the gate":"No color change fixes it";return}this.remember("fix");let i=rn({...this.colors(),foreground:e.foreground,selection:e.selectionBackground,ansi:e.ansi}),s=this.list;this.list=i,this.lch=i.map((o,a)=>o===s[a]?this.lch[a]:this.lchOf(o)),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(this.snapshot()),this.restore(t)}redo(){let t=this.future.pop();if(!t){this.notice="Nothing to redo";return}this.history.push(this.snapshot()),this.restore(t)}restore(t){this.list=t.list,this.lch=t.lch,this.signature=t.signature,this.lastEdit=void 0}}import{mkdirSync as v5,readFileSync as Tc,writeFileSync as nM}from"node:fs";import{dirname as S5}from"node:path";import{isMainThread as E5,parentPort as rM,Worker as M5}from"node:worker_threads";var r5=new Set(["comic","4koma","monochrome","greyscale","sketch","lineart","speech_bubble"]),i5=new Set(["scenery","landscape","scenic","no_humans","wide_shot","very_wide_shot"]),s5=0.04,o5=0.1,a5=0.05,c5=4096;function u5(t){return new Set(t.cutouts.split(/\s+/).map((e)=>e.replace(/^~/,"")).filter(Boolean))}function l5(t,e,n,r=0){let{site:i,post:s}=t,o=new Set(s.tags),a=!u5(i).isDisjointFrom(o),c=Math.min(s.width,s.height),u=s.width>0&&s.height>0?s.width/s.height/(e.w/e.h):1;return(s.solo?2:0)+(r5.isDisjointFrom(o)?0:-3)+(i5.isDisjointFrom(o)?0:-1.5)+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,s.score))/Math.log1p(n):0)+2*r}function mf(t,e,n=new Map){let r=new Map;for(let{site:i,post:s}of t)r.set(i,Math.max(r.get(i)??0,s.score));return t.map((i,s)=>({pick:i,at:s,score:l5(i,e,r.get(i.site)??0,n.get(i.post))})).sort((i,s)=>s.score-i.score||i.at-s.at).map(({pick:i})=>i)}function BE(t){let e=Map.groupBy(t,(r)=>r.site),n=[];for(let r=0;n.length<t.length;r++)for(let i of e.values()){let s=i[r];if(s)n.push(s)}return n}function Ag(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function _E(t,e,n){let[r,i,s]=[Ag(t),Ag(e),Ag(n)],o=Math.cbrt(0.4122214708*r+0.5363325363*i+0.0514459929*s),a=Math.cbrt(0.2119034982*r+0.6806995451*i+0.1073969566*s),c=Math.cbrt(0.0883024619*r+0.2817188376*i+0.6299787005*s);return[0.2104542553*o+0.793617785*a-0.0040720468*c,1.9779984951*o-2.428592205*a+0.4505937099*c,0.0259040371*o+0.7827717662*a-0.808675766*c]}function GE(t,e){let n=e.values().map((o)=>_E(...st(o))).filter(([,o,a])=>Math.hypot(o,a)>=s5).toArray();if(n.length===0)return 0;let r=Math.max(1,Math.floor(Math.sqrt(t.width*t.height/c5))),i=n.map(()=>0),s=0;for(let o=0;o<t.height;o+=r)for(let a=0;a<t.width;a+=r){let c=(o*t.width+a)*4;if(t.data[c+3]<128)continue;s++;let[u,f,l]=_E(t.data[c],t.data[c+1],t.data[c+2]);n.forEach(([d,h,m],p)=>{if(Math.hypot(u-d,f-h,l-m)<o5)i[p]=i[p]+1})}if(s===0)return 0;return i.reduce((o,a)=>o+Math.min(1,a/s/a5),0)/n.length}import{existsSync as Ng,mkdirSync as UE,readFileSync as ea}from"node:fs";import{homedir as f5}from"node:os";import{dirname as WE,join as Ms}from"node:path";var KE=90000;function gf(t,e){let n=X(t),r=ke(t,e).flatMap((i)=>{let[,s,o]=/^([a-z.]+)_(\d+)$/.exec(i.key)??[];return s&&o&&Z.some((a)=>a.key===s)?[{site:s,id:Number(o),...kh(n,i)}]:[]});return r.length>0?r:void 0}function d5(t,e){let n=new Set(Tt(X(t)).palettes[e.name]?.pictures.map((r)=>r.key));return(e.pictures??[]).filter((r)=>!n.has(he(r)))}function zE(t,e){let n=new Set((e??[]).map((r)=>he(r)));return{...t,pictures:(t.pictures??[]).filter((r)=>!n.has(he(r)))}}async function h5(t,e,n,r,i,s){let o=Z.find(($)=>$.key===n.site);if(!o)throw Error(`no site called ${n.site}`);s("Fetching");let a=await Fi(o,n.id,i);if(!a)throw Error("the post is gone");if(o!==Pt&&a.md5)try{Sa([a],await Ea([a.md5],i))}catch{}let c={},u=(va(o,a)?ya(o,a.id,i).then(($)=>{if($)Zs(a,$)},()=>{}):Promise.resolve()).then(()=>a.named.artist.length>0?gu(a.named.artist,i):new Map).then(($)=>{c=Object.fromEntries($.entries().filter(([,k])=>k.length>0))},()=>{});if(!hu(o,a,Hi(process.env.TTHEME_FIND_RATING))||du(a,Vs(process.env.TTHEME_FIND_BLOCK)).length>0)throw Error("outside your find filters — TTHEME_FIND_RATING and TTHEME_FIND_BLOCK");let f=un(a);if(!f)throw Error("too large to use");let l=Ms(ln(o),"orig",`${n.id}.${f.ext}`),d;if(Ng(l))d=new Uint8Array(ea(l));else{s("Downloading");let $=Kr(o,a,f);d=await pu($.site,$.url,i,(k,v)=>s("Downloading",_l(k,v))),C(l,d)}let h=Pn(d,fe),m=!1;if(rr(h)===0&&Xs()&&process.env.TTHEME_FIND_REMOVE_BG!=="off"){let $=Ms(ln(o),"cut",`${n.id}.png`);try{if(!Ng($))s("Cutting out"),UE(WE($),{recursive:!0}),await Pa(l,$,i);let k=Pn(new Uint8Array(ea($)),fe);if(wu(rr(k)))h=k,m=!0}catch{}}await u;let p=bh(e);s("Drawing"),Pu(t,p,Tn(p,e.signatureSlots),h,{site:o.key,id:n.id,ext:f.ext,bytes:d,from:`${o.name} ${n.id} ${o.pageUrl(n.id)}`,artist:a.named.artist,profiles:c,source:Li(a.source),cut:m},{width:0,height:0},si(t),gl(t));let b=ke(t,e.name).find(($)=>$.key===he(n));if(b)Ta(X(t),b,n,r,f5())}function m5(t,e){let n=Z.find((s)=>s.key===t.site),r=`${n?.name??t.site} ${t.id}`;if(!n||!e)return r;return`${Lt()?I.link:`${Vi(n.ansi)}${I.link}${$t}`} ${zu(r,n.pageUrl(t.id))}`}async function xs(t,e,n){let r=e.flatMap((c)=>d5(t,c).map((u)=>({entry:c,shared:u})));if(r.length===0)return;let i=us(n),s=process.stdout.isTTY&&By(process.env),o=new Set,a=hi();for(let[c,{entry:u,shared:f}]of r.entries()){let l=`${u.name} · ${m5(f,s)}`,d=r.length>1?` · ${c+1}/${r.length}`:"",h=(m,p)=>a.set(`${m} ${l}${p?` · ${p}`:""}${d}`);try{await h5(t,u,f,i,AbortSignal.timeout(KE),h),a.say(` ▣ ${l}`),o.add(u)}catch(m){a.say(` ▢ ${l} — ${m instanceof Error?m.message:String(m)}`)}}a.done();for(let c of o){let u=new Set(ke(t,c.name).map((l)=>l.key)),f=(c.pictures??[]).find((l)=>u.has(he(l)));if(f)ao(t,c.name,he(f))}if(o.size>0)Ge(t)}function DE(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 p5(t,e){let[,n,r]=/^(.+)_(\d+)$/.exec(t)??[],i=Ms(Nn(),n??"local","cut",`${r??t}.png`);if(!Ng(i)){if(!Xs())return;UE(WE(i),{recursive:!0}),await Pa(e,i,AbortSignal.timeout(KE))}return Pn(new Uint8Array(ea(i)),fe)}function g5(t,e){try{return rr(Wt(new Uint8Array(ea(Ms(t,`${e.stem}.png`)))))>0}catch{return!1}}function pf(t,e){return()=>Pn(new Uint8Array(ea(Ms(t,e.original))),fe)}function qE(t,e){let n=pf(t,e);return()=>{let r=n(),i=Wt(new Uint8Array(ea(Ms(t,e.cut))));return DE(r,i,0)?r:null}}async function bf(t,e,n,r,i,s,o,a){let c=X(t),u=Tt(c).palettes[e]?.pictures.find((f)=>f.key===n);if(!u?.original)return null;if(u.cut)return Ha(t,e,u,qE(c,u),r,i,s,o,!1,a);if(oo(u)){let f=pf(c,u)();if(rr(f)===0&&g5(c,u)){let l=await p5(n,Ms(c,u.original));if(!l||!DE(f,l,3))return null;return Ha(t,e,u,()=>f,r,i,s,o,!0,a)}return Ha(t,e,u,()=>f,r,i,s,o,!1,a)}return Ha(t,e,u,pf(c,u),r,i,s,o,!1,a)}function JE(t,e,n,r,i,s){let o=X(t),a=Tt(o).palettes[e]?.pictures.find((u)=>u.key===n);if(!a?.original||oo(a))return!1;let c=a.cut?qE(o,a):pf(o,a);return W$(t,e,a,c,r,i,s)}var b5=2,w5=0.01,mt={coarse:64,fine:192,solid:230,far:48,score:15,outliers:0.03,least:0.03,most:0.97,smallest:0.25,largest:4,step:1.19,overhang:1.04,tiny:8,guesses:3,nudges:[0.97,1,1.03],reach:5},$5=/(?:^|[^0-9a-f])([0-9a-f]{32})(?:[^0-9a-f]|$)/i,k5=[[/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 Tg(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 VE(t,e){let n=$5.exec(e.source)?.[1]?.toLowerCase();return[`post:${t.key}:${e.id}`,...e.md5?[`md5:${e.md5}`]:[],...n&&n!==e.md5?[`md5:${n}`]:[],...k5.flatMap(([r,i])=>{let s=r.exec(e.source)?.[1];return s?[`post:${i}:${Number(s)}`]:[]}),...e.family?[`family:${t.key}:${e.family}`]:[]]}function ZE(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 XE(t){let r=[];for(let s=0;s<8;s++){let o=Math.floor(s*t.height/8),a=Math.max(o+1,Math.floor((s+1)*t.height/8));for(let c=0;c<9;c++){let u=Math.floor(c*t.width/9),f=Math.max(u+1,Math.floor((c+1)*t.width/9)),l=0;for(let d=o;d<a;d++)for(let h=u;h<f;h++){let m=(d*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];l+=b*p+255*(1-p)}r.push(l/((f-u)*(a-o)))}}let i=0n;for(let s=0;s<8;s++)for(let o=0;o<8;o++)i=i<<1n|(r[s*9+o]>r[s*9+o+1]?1n:0n);return i.toString(16).padStart(16,"0")}function y5(t,e){let n=BigInt(`0x${t}`)^BigInt(`0x${e}`),r=0;while(n>0n)r+=Number(n&1n),n>>=1n;return r}function QE(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)))<w5&&y5(t.hash,e.hash)<=b5}var tM={score:Number.POSITIVE_INFINITY,far:1,x:0,y:0,scale:0};function wf(t,e){let n=Math.max(1,Math.round(t.width*e)),r=Math.max(1,Math.round(t.height*e));return Br(t,{x:0,y:0,w:t.width,h:t.height},n,r)}function YE(t,e,n,r,i,s,o){let a=[];for(let u=0;u<t.width*t.height;u++)if(t.data[u*4+3]>=mt.solid)a.push(u);let c=tM;if(a.length===0)return c;for(let u=i;u<=s;u++)for(let f=n;f<=r;f++){let l=0,d=0;for(let h of a){let m=h%t.width,p=f+m,b=u+(h-m)/t.width,$=255;if(p>=0&&b>=0&&p<e.width&&b<e.height){let k=h*4,v=(b*e.width+p)*4;$=Math.max(Math.abs(t.data[k]-e.data[v]),Math.abs(t.data[k+1]-e.data[v+1]),Math.abs(t.data[k+2]-e.data[v+2]))}if(l+=$,$>mt.far)d++;if(l>c.score*a.length)break}if(l/a.length<c.score)c={score:l/a.length,far:d/a.length,x:f,y:u,scale:o}}return c}function eM(t,e){let n=0;for(let f=3;f<t.data.length;f+=4)if(t.data[f]>=mt.solid)n++;let r=n/(t.width*t.height);if(r<mt.least||r>mt.most)return!1;let i=Math.max(e.width,e.height),s=new Set([1,e.width/t.width,e.height/t.height]);for(let f=mt.smallest;f<=mt.largest;f*=mt.step)s.add(f);let o=wf(e,mt.coarse/i),a=[];for(let f of s){let l=mt.coarse/i*f;if(t.width*f>e.width*mt.overhang||t.height*f>e.height*mt.overhang)continue;if(t.width*l<mt.tiny||t.height*l<mt.tiny)continue;let d=wf(t,l);a.push(YE(d,o,-1,o.width-d.width+1,-1,o.height-d.height+1,f))}a.sort((f,l)=>f.score-l.score);let c=wf(e,mt.fine/i),u=tM;for(let f of a.slice(0,mt.guesses))for(let l of mt.nudges){let d=f.scale*l,h=wf(t,mt.fine/i*d),m=Math.round(f.x*mt.fine/mt.coarse),p=Math.round(f.y*mt.fine/mt.coarse),b=YE(h,c,m-mt.reach,m+mt.reach,p-mt.reach,p+mt.reach,d);if(b.score<u.score)u=b}return u.score<=mt.score&&u.far<=mt.outliers}var x5={thumb:"tile",band:"band",match:"tile",twin:"view",show:"view",backdrop:"view",redraw:"view"},na;async function O5(t){if(t.job==="twin"){let r=na?.from===t.whole?na.inked.image:Pn(new Uint8Array(Tc(t.whole)),fe);return eM(Pn(new Uint8Array(Tc(t.cut)),fe),r)}if(t.job==="redraw")return bf(t.home,t.name,t.key,t.paint,t.blur,t.aligns,t.user);if(t.job==="show"){if(na?.from!==t.from){let o=Pn(new Uint8Array(Tc(t.from)),fe);na={from:t.from,clear:rr(o),inked:gh(o,t.cut)}}let{image:r,fill:i,opacity:s}=R$(na.inked,t.colors,t.tone,t.width,t.height,t.blur,t.tune,t.coloring);return v5(S5(t.to),{recursive:!0}),nM(t.to,De(r)),{clear:na.clear,fill:i,opacity:s}}let e=Pn(new Uint8Array(Tc(t.from)),fe);if(t.job==="backdrop"){Pu(t.home,t.colors,t.tone,e,{...t.origin,bytes:new Uint8Array(Tc(t.source)),cut:t.from!==t.source},t,t.blur,t.coloring);let r=t.tune&&ke(t.home,t.colors.name).find((i)=>i.key===he(t.origin));if(t.tune&&r)Ta(X(t.home),r,t.tune,t.aligns??!0,t.user??t.home);return 0}if(t.job==="match")return{match:GE(e,t.colors),hash:XE(e)};if(t.job==="thumb")return C(t.to,De(u0(e,t.width,t.height))),0;let n=e.data.subarray(t.y*e.width*4,(t.y+t.height)*e.width*4);return nM(t.to,De({width:e.width,height:t.height,data:n})),0}function P5(t){t.on("message",async(e)=>{try{t.postMessage({id:e.id,value:await O5(e)})}catch(n){t.postMessage({id:e.id,error:n instanceof Error?n.message:String(n)})}})}class Hg{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 M5(import.meta.filename);t.unref(),t.on("message",({id:n,value:r,error:i})=>{let s=this.waiting.get(n);if(this.waiting.delete(n),this.waiting.size===0)t.unref();if(i!==void 0)s?.no(Error(i));else s?.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 Hc{lines=new Map;run(t){let e=x5[t.job],n=this.lines.get(e);if(!n)n=new Hg,this.lines.set(e,n);return n.send(t)}close(){for(let t of this.lines.values())t.close();this.lines.clear()}}class Fg{lines;constructor(t){this.lines=Array.from({length:Math.max(1,t)},()=>new Hg)}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(s){e[i]=s instanceof Error?s:Error(String(s))}}})),e}close(){for(let t of this.lines)t.close()}}if(!E5&&rM)P5(rM);import{existsSync as I5,mkdtempSync as R5,readFileSync as A5,rmSync as iM,writeFileSync as N5}from"node:fs";import{tmpdir as T5}from"node:os";import{basename as oM,join as sM}from"node:path";var H5=6;class Lg{dir;made=[];of(t,e){this.dir??=R5(sM(T5(),"ttheme-tint-"));let n=sM(this.dir,`${oM(t,".png")}.${e.slice(1).toLowerCase()}.png`);if(!I5(n)){let r=new Uint8Array(A5(t));N5(n,au(r,e)??sr(ir(Wt(r)),e)),this.made.push(n);while(this.made.length>H5)iM(this.made.shift(),{force:!0})}return n}clear(){if(this.dir)iM(this.dir,{recursive:!0,force:!0});this.dir=void 0,this.made.length=0}}function aM(t,e,n,r,i){if(qe(t)==="original")return e;let s=Tn(n,[...r]);return s.color===t.tone?e:i.of(e,s.color)}function cM(t,e){let n=oM(e);return t.find((r)=>n.startsWith(`${r.stem}.`)||n.startsWith(`${r.stem}@`))}var G5=2147483625,fM=2147483626,Jn=2147483627,U5=-1073741831,dM=-1073741830,W5=-1073741829,K5=4;function z5(t,e,n,r,i){let s=Math.trunc,o=n.col*r.w,a=n.row*r.h,c=s((Math.max(i.x,o)+r.w-1)/r.w),u=s(Math.min(i.x+i.w,o+n.cols*r.w)/r.w),f=s((Math.max(i.y,a)+r.h-1)/r.h),l=s(Math.min(i.y+i.h,a+n.rows*r.h)/r.h);if(u<=c||l<=f)return;return{col:c,row:f,cols:u-c,rows:l-f,x:s((c*r.w-i.x)*t/i.w),y:s((f*r.h-i.y)*e/i.h),w:s((u-c)*r.w*t/i.w),h:s((l-f)*r.h*e/i.h)}}function D5(t){try{let e=C5(t,"r"),n=Buffer.alloc(24);return j5(e,n,0,24,0),F5(e),n.readUInt32BE(0)===2303741511?{width:n.readUInt32BE(16),height:n.readUInt32BE(20)}:void 0}catch{return}}class $f{ready=()=>{};cell={w:0,h:0};held;tints=new Lg;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(Lt(t)||!Eo(t,r)||!(Mo(t)||ts(t)))return;return new $f(t,e,n)}constructor(t,e,n){this.home=e,this.name=n,this.views=ts(t),this.banded=dl(t),this.files=hl(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=X(this.home),e=He(t,this.name,_5()),n=[];try{n=Tt(t).palettes[this.name]?.pictures??[]}catch{}let r=e?cM(n,e.image):void 0;this.held=e&&r?{picture:r,image:e.image,opacity:e.opacity,cover:e.cover,at:Jt.indexOf(e.position)+1||5}:void 0}draw(t,e,n,r,i,s={col:0,row:0,cols:r,rows:i}){if(this.cell.w===0)return"";let o=t[0],a=this.look(t,e,n,s,!this.views||s.cols===r&&s.rows===i);if(this.views){let u=r*this.cell.w,f=i*this.cell.h,l=a?`${o}|${a.image}|${a.opacity}|${u}|${f}|${a.box.w}|${a.box.h}|${a.box.x}|${a.box.y}|${this.held?.at??5}`:`${o}||1|${u}|${f}|0|0|0|0|5`;if(l===this.viewed)return"";return this.viewed=l,es(l)}let c=this.layer(G5,U5,"f=24",Buffer.from(st(o)),s);if(a){let u=Math.max(0,Math.min(255,Math.round((1-a.opacity)*255)));c+=this.picture(a),c+=this.layer(fM,W5,"f=32",Buffer.from([...st(o),u]),s)}else c+=this.drop(Jn)+this.drop(fM);return c}resized(){this.sent.clear(),this.placed.clear(),this.viewed=""}clear(){let t=this.views&&this.viewed?es(""):"";for(let e of this.sent.keys())t+=xc(e);return this.resized(),t}close(){let t=this.clear();if(this.tints.clear(),this.renders?.close(),this.scratch)uM(this.scratch,{recursive:!0,force:!0});return t}look(t,e,n,r,i){let s=this.held;if(!s)return;let o={name:this.name,...ae([...t]),waived:[...n]},a=aM(s.picture,s.image,o,e,this.tints),c=D5(a);if(!c)return;let u=co(c.width,c.height,r.cols*this.cell.w,r.rows*this.cell.h,100,s.at,s.cover&&i),f={...u,x:u.x+r.col*this.cell.w,y:u.y+r.row*this.cell.h},l=z5(c.width,c.height,r,this.cell,f);if(!l)return;return{image:a,opacity:s.opacity,...c,box:f,rect:l}}layer(t,e,n,r,i){let s=r.toString("base64"),o=`${s}|${i.col}|${i.row}|${i.cols}|${i.rows}`;if(this.placed.get(t)===o)return"";return this.sent.set(t,o),this.placed.set(t,o),`\x1B_Ga=t,${n},s=1,v=1,i=${t},q=2;${s}\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 s=this.band(t.image,n.y,n.h);if(!s.ready)return"";e=s.path,n={...n,y:0}}let r="";if(this.sent.get(Jn)!==e){let s=nf({id:Jn,path:e,row:0,col:0,cols:0,rows:0,z:dM},this.files);if(s===void 0)return"";r+=s,this.sent.set(Jn,e),this.placed.delete(Jn)}let i=`${n.col};${n.row};${n.cols};${n.rows};${n.x};${n.y};${n.w};${n.h}`;if(this.placed.get(Jn)!==i)r+=`\x1B[${n.row+1};${n.col+1}H\x1B_Ga=p,i=${Jn},p=${Jn},x=${n.x},y=${n.y},w=${n.w},h=${n.h},c=${n.cols},r=${n.rows},C=1,z=${dM},q=2\x1B\\`,this.placed.set(Jn,i);return r}drop(t){if(!this.sent.has(t))return"";return this.sent.delete(t),this.placed.delete(t),xc(t)}band(t,e,n){let r=`${t}|${e}|${n}`,i=this.bands.get(r);if(i)return i;this.scratch??=L5(lM(B5(),"ttheme-edit-")),this.renders??=new Hc;let s={path:lM(this.scratch,`band-${++this.made}.png`),ready:!1};this.bands.set(r,s),this.renders.run({job:"band",from:t,to:s.path,y:e,height:n}).then(()=>{s.ready=!0,this.ready()}).catch(()=>{});for(let[o,a]of this.bands){if(this.bands.size<=K5)break;if(a.ready&&a.path!==this.sent.get(Jn))this.bands.delete(o),uM(a.path,{force:!0})}return s}}var Os=50;function at(t,e){return Ye(t,e)}function Fc(t){return Mt(t)>0.35?"#000000":"#ffffff"}function Cg(t,e){return t.held!==void 0&&t.held-e.c>0.0005?t.held:void 0}function kf(t,e,n,r){let i=e.mode==="tune"&&e.channel===oe,s=e.ratio(),{floor:o}=e.partner(),a=(p)=>Math.round(Math.log(Math.max(1,p))/Math.log(21)*(n-1)),c=a(s),u=o===void 0?-1:a(o),f=r===void 0?-1:a(r),l=i?"━":"─",d=Array.from({length:n},(p,b)=>b===c?t.bold("●"):b===f?"○":b===u?"┃":b<u?t.dim(l):l).join(""),h=`${s.toFixed(2)}:1`.padStart(6),m={kind:"channel",channel:oe};return`${at(m,i?t.bold("▸◐"):t.dim(" ◐"))} ${at({kind:"bar",channel:oe},d)} ${at(m,i?t.bold(h):t.dim(h))}`}function yf(t,e){if(!t.misses().has(e))return;if(xg(t.list,t.signature,t.waive,"bright-follows").includes(e))return e-F.length<8?"= makes the bright follow its normal":"= on the normal makes this follow it";return"f moves the colors the gate misses"}function vf(t,e,n){let r=Pg(t.list,t.signature,t.waive,e),i=Cg(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}function Sf(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 hM(t){return`${t.l.toFixed(2)} ${t.c.toFixed(3)} ${t.h.toFixed(0).padStart(3)}°`}function q5(t,e,n,r=Os){let i=Ig(e.list,e.signature,e.waive).sort((u,f)=>Number(u.ok!==!1)-Number(f.ok!==!1)),s=i.filter((u)=>u.ok===!1).length,o=` ${t.dim("Gate")} ${s===0?t.dim("passes"):t.bold(`${s} ${s===1?"miss":"misses"}`)}`,a=r-4,c=i.flatMap((u)=>{let f=`${u.value} ${u.bound}`,l=` ${qu(t,u.ok)} ${Rt(u.ok===!1?u.label:t.dim(u.label),t.dim(f),a-2)}`,d=[...new Set(u.slots)].map((p)=>Ue(p).name),h=u.slots[0],m=(p)=>h===void 0?p:at({kind:"slot",slot:h},p);return d.length>0?[m(l),m(` ${t.dim(tt(d.join(" · "),a-2))}`)]:[m(l)]});return[s===0?o:Rt(o,`${t.bold("n")} ${t.dim("next miss")}`,r-2),...c.slice(0,Math.max(0,n-1))]}function mM(t,e){let n=t-F.length;if(n>=0)return e===String(n)||e===`B${n}`||e===`K${n}`;return t===3&&e==="s"||t===2&&e==="c"}function Ef(t,e,n,r){let i=r?wt("under"):"";if(n==="d")return`${t.fg(e.foreground)}${wt("dim")}${i}`;if(n==="b")return`${t.fg(e.foreground)}${wt("bold")}${i}`;if(n==="s")return`${t.bg(e.selection)}${t.fg(e.foreground)}${i}`;if(n==="c")return`${t.bg(e.cursor)}${i}`;let s=/^([BK]?)(\d+)$/.exec(n);if(!s)return`${t.fg(e.foreground)}${i}`;let o=e.ansi[Number(s[2])];if(s[1]==="K")return`${t.fg(e.ansi[0])}${t.bg(o)}${i}`;return`${t.fg(o)}${s[1]==="B"?wt("bold"):""}${i}`}function Lc(t,e,n,r,i){let s=e.length-1,o=Math.max(0,Math.min(s,n)),a=i===void 0?-1:Math.max(0,Math.min(s,i));if(!t.color)return e.map((c,u)=>u===o?"●":u===a?"○":r?"━":"─").join("");return e.map((c,u)=>{let f=c??"#000000";if(u===o)return`${t.bg(f)}${t.fg(Fc(f))}${I.on}${pe}`;if(u===a)return c?`${t.bg(c)}${t.fg(Fc(c))}${I.off}${pe}`:`${t.fg("#aaaaaa")}${I.off}`;return c?`${t.fg(c)}█`:`${t.fg(r?"#777777":"#555555")}░`}).join("").concat($t)}function Mf(t,e,n){return Array.from({length:n},(r,i)=>{let s=e.min+(e.max-e.min)*i/(n-1),o={...t,[e.key]:s};return Dn(o.l,o.c,o.h)?nn(o.l,o.c,o.h):void 0})}function Ps(t,e,n,r){return Math.round((t-e)/(n-e)*(r-1))}function jg(t){return Ig(t.list,t.signature,t.waive).filter((e)=>e.ok===!1).length}function Cc(t,e,n,r){if(n<3)return[];let i=jg(e),s=i===0?" Gate ✓ passes ":` Gate ✗ ${i} · n next `;return[t.dim(Bt(r,"top",[[2,s]])),...q5(t,e,n-1,r-1).slice(1).map((o)=>Ze(t,o,r)),t.dim(Bt(r,"bottom"))]}var xr=0.98,jc=0.12,J5=0.37,pM=0.74,Y5=0.15,V5=-1073741828,_g=-1073741827,Bg=-1073741826,Z5=-1073741825,X5=2147483584,Q5=["panel","plane","hue","contrast","mark","hue-thumb","contrast-thumb","origin","hue-origin","contrast-origin"],t4=4096;function _c(t,e){return Qo(t,e,J5)}function Of(t,e,n){let r=_c(t,n);return r>0.000001?Math.min(1,e/r):0}function Bc(t,e){return{width:t,height:e,data:new Uint8Array(t*e*4)}}function vi(t,e,n,r,i){let s=r[3]*i;if(s<=0||e<0||n<0||e>=t.width||n>=t.height)return;let o=(n*t.width+e)*4,a=t.data;if(s>=1){a[o]=r[0],a[o+1]=r[1],a[o+2]=r[2],a[o+3]=255;return}let c=a[o+3]/255,u=s+c*(1-s);for(let f=0;f<3;f++)a[o+f]=Math.round((r[f]*s+a[o+f]*c*(1-s))/u);a[o+3]=Math.round(u*255)}function Mr(t,e=1){return[...st(t),e]}function ia(t,e,n,r,i,s,o){let a=Math.abs(t-(n+i/2))-(i/2-o),c=Math.abs(e-(r+s/2))-(s/2-o);return Math.hypot(Math.max(a,0),Math.max(c,0))+Math.min(Math.max(a,c),0)-o}function Is(t,e,n,r){let i=[],s=[],o=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 f=a;f<u;f++)for(let l=o;l<c;l++){let d=n(l+0.5,f+0.5);if(d>0.002)i.push(f*t+l),s.push(Math.min(1,d))}return{at:Uint32Array.from(i),cover:Float32Array.from(s)}}function Rs(t,e,n){for(let r=0;r<e.at.length;r++){let i=e.at[r];vi(t,i%t.width,Math.floor(i/t.width),n,e.cover[r])}}function Gg(t,e){return(n,r)=>Math.max(0,0.5-ia(n,r,t.x,t.y,t.w,t.h,e))}function gM(t,e,n){return(r,i)=>Math.max(0,0.5-Math.abs(ia(r,i,t.x,t.y,t.w,t.h,e)+n/2)+n/2)}var xf=new Map;function e4(t,e,n,r){let i=`${e.w}x${e.h} ${$M({...t,ground:"#000000",ink:"#000000",accent:"#000000"})}`,s=xf.get(i);if(s)return s;let{panel:o}=t,a={x:e.w,y:0,w:o.cols*e.w,h:o.rows*e.h},c=Math.round(e.h*0.45),u=Math.round(e.h*0.18),f=e.h*0.6,l=Math.max(1,Math.round(e.h/22)),d=(N)=>({x:(N.col-o.col+1)*e.w,y:(N.row-o.row)*e.h}),h=Math.max(1,Math.round(e.h*0.08)),m=d(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=d(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-o.row)*e.h,w:a.w-e.w*1.2,h:l},x={shadow:Is(n,r,(N,R)=>{let T=ia(N,R,a.x,u,a.w,a.h,c);return T>0&&T<f?(1-T/f)**2:0}),fill:Is(n,r,Gg(a,c),a),border:Is(n,r,gM(a,c,l),a),track:Is(n,r,Gg(p,p.h*0.3),p),segment:Is(n,r,Gg(k,k.h*0.3),k),field:Is(n,r,gM(S,S.h*0.3,l),S),divider:M&&Is(n,r,()=>1,M)};if(xf.size>8)xf.clear();return xf.set(i,x),x}function n4(t){let e=Mt(t.ground)<0.18;return{dark:e,surface:Nt(t.ground,t.ink,e?0.07:0.04)}}function r4(t,e){let n=Bc((t.panel.cols+2)*e.w,(t.panel.rows+1)*e.h),r=e4(t,e,n.width,n.height),{dark:i,surface:s}=n4(t);if(Rs(n,r.shadow,[0,0,0,i?0.45:0.18]),Rs(n,r.fill,Mr(s)),Rs(n,r.border,Mr(t.ink,i?0.16:0.2)),Rs(n,r.track,Mr(t.ink,i?0.06:0.07)),Rs(n,r.segment,Mr(t.accent,i?0.24:0.2)),Rs(n,r.field,Mr(t.ink,i?0.22:0.28)),r.divider)Rs(n,r.divider,Mr(t.ink,i?0.12:0.16));return n}function i4(t,e,n){let r=Bc(Math.round(t.cols*n.w),Math.round(t.rows*n.h)),{width:i,height:s,data:o}=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)),f=t.rows*2-1,l=(h)=>xr-Math.min(1,Math.max(0,((h+0.5)/n.h*2-0.5)/f))*(xr-jc),d=[];for(let h=0;h<s;h++){if(h%2===0){let m=l(h+0.5),p=_c(m,e);d=Array.from({length:Math.ceil(i/2)},(b,$)=>Dn(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>=s-a)?Math.min(1,Math.max(0,0.5-ia(m+0.5,h+0.5,0,0,i,s,a))):1;if(b<=0)continue;let $=d[m>>1],k=(h*i+m)*4;o[k]=$[0],o[k+1]=$[1],o[k+2]=$[2],o[k+3]=Math.round(b*255)}}return r}function wM(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 s4(t,e){let n=Bc(t.cols*e.w,e.h),{top:r,height:i,width:s}=wM(e,t.cols),o=Array.from({length:s},(a,c)=>{let f=Math.min(1,Math.max(0,((c+0.5)/e.w-0.5)/Math.max(1,t.cols-1)))*360;return Dn(pM,Qo(pM,f,Y5),f)??[0,0,0]});for(let a=r;a<r+i;a++)for(let c=0;c<s;c++){let u=Math.min(1,Math.max(0,0.5-ia(c+0.5,a+0.5,0,r,s,i,i/2))),f=o[c];vi(n,c,a,[f[0],f[1],f[2],1],u)}return n}function o4(t,e,n){let r=Bc(t.cols*n.w,n.h),{top:i,height:s,width:o}=wM(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(s*0.45)),u=i+Math.round((s-c)/2);for(let f=u;f<u+c;f++)for(let l=0;l<o;l++){let d=Math.min(1,Math.max(0,0.5-ia(l+0.5,f+0.5,0,u,o,c,c/2))),h=a<0||l>=a;vi(r,l,f,Mr(e,h?t.lit?0.5:0.36:0.14),d)}if(a>=0){let f=Math.max(2,Math.round(n.w/5));for(let l=i-1;l<i+s+1;l++)for(let d=a-Math.floor(f/2);d<a-Math.floor(f/2)+f;d++)vi(r,d,l,Mr(e,0.85),1)}return r}function a4(t,e,n,r,i,s,o){let a=Bc(t*o.w,e*o.h),c=Math.max(2,Math.round(i*0.3)),u=(l,d)=>Math.min(1,Math.max(0,l-d+0.5)),f=[0,0,0,0.5];for(let l=0;l<a.height;l++)for(let d=0;d<a.width;d++){let h=Math.hypot(d+0.5-n,l+0.5-r);if(s)vi(a,d,l,Mr(s),u(i-c,h));else vi(a,d,l,f,u(i-c,h)-u(i-c-1,h));vi(a,d,l,f,u(i+1,h)-u(i,h)),vi(a,d,l,[255,255,255,1],u(i,h)-u(i-c,h))}return a}function ra(t,e,n,r,i,s,o=Z5){let a=Math.floor((e-r-2)/s.w),c=Math.floor((e+r+2)/s.w),u=Math.floor((n-r-2)/s.h),f=Math.floor((n+r+2)/s.h),l={row:u,col:a,cols:c-a+1,rows:f-u+1},d=Math.round((e-a*s.w)*2)/2,h=Math.round((n-u*s.h)*2)/2;return{name:t,key:`${l.cols}x${l.rows} ${d},${h} ${r} ${i??"-"}`,box:l,z:o,paint:()=>a4(l.cols,l.rows,d,h,r,i,s)}}function $M(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 c4(t,e){let n=`${e.w}x${e.h}`,r=Math.max(4,Math.round(e.h*0.34)),i=(l,d)=>(l.col+0.5+d*(l.cols-1))*e.w,s=(l)=>(l.row+0.5)*e.h,o=t.plane,a=(l)=>{let d=(xr-l)/(xr-jc)*(o.rows*2-1);return o.row*e.h+(Math.min(o.rows*2-1,Math.max(0,d))+0.5)*e.h/2},c=a(o.l),u=[{name:"panel",key:`${n} ${$M(t)}`,box:{row:t.panel.row,col:t.panel.col-1,cols:t.panel.cols+2,rows:t.panel.rows+1},z:V5,paint:()=>r4(t,e)},{name:"plane",key:`${n} ${o.cols}x${o.rows} ${o.h.toFixed(2)}`,box:o,z:_g,paint:()=>i4(o,o.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:_g,paint:()=>s4(t.hue,e)},{name:"contrast",key:`${n} ${t.contrast.cols} ${t.contrast.floor??"-"} ${t.contrast.lit} ${t.ink}`,box:{...t.contrast,rows:1},z:_g,paint:()=>o4(t.contrast,t.ink,e)},ra("mark",i(o,Of(o.l,o.c,o.h)),c,r,void 0,e),ra("hue-thumb",i(t.hue,t.hue.h/360),s(t.hue),r,t.hue.color,e),ra("contrast-thumb",i(t.contrast,t.contrast.at),s(t.contrast),r,t.contrast.color,e)],f=t.origin;if(f){let l=Math.max(3,Math.round(r*0.55));u.push(ra("origin",i(o,Of(f.l,f.c,f.h)),a(f.l),l,f.color,e,Bg),ra("hue-origin",i(t.hue,f.h/360),s(t.hue),l,f.color,e,Bg),ra("contrast-origin",i(t.contrast,f.at),s(t.contrast),l,f.color,e,Bg))}return u}function u4(t,e){let r=e.toString("base64").match(new RegExp(`.{1,${t4}}`,"g"))??[""];return r.map((i,s)=>{let o=s<r.length-1?1:0;return s===0?`\x1B_Ga=t,f=100,i=${t},m=${o},q=2;${i}\x1B\\`:`\x1B_Gm=${o},q=2;${i}\x1B\\`}).join("")}function bM(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 Ug(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}class Pf{cell={w:0,h:0};shown=new Map;static of(t,e){return Lt(t)||!Eo(t,e)||!Mo(t)?void 0:new Pf}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?c4(t,this.cell):[],n="";for(let r of e)n+=this.put(r);for(let[r,i]of this.shown)if(!e.some((s)=>s.name===r))n+=Ug(i.id),this.shown.delete(r);return n}clear(){let t=[...this.shown.values()].map((e)=>Ug(e.id)).join("");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,bM(n.id,t.box,t.z)}let r=X5+Q5.indexOf(t.name)*2,i=n?.id===r?r+1:r;return this.shown.set(t.name,{key:t.key,id:i,at:e}),`${u4(i,De(t.paint()))}${bM(i,t.box,t.z)}${n?Ug(n.id):""}`}}var Gc=34,Wg=2,l4=6,Rf=3,f4=7,yM="↑↓ L ←→ C ⇧←→ H tab ◐";function d4(t,e,n){let r="",i=0;for(let s of t){let o=i+B(s);if(o>e&&i<n)r+=i>=e&&o<=n?s:" ".repeat(Math.min(o,n)-Math.max(i,e));if(i=o,i>=n)break}return r}function Af(t){return t.reduce((e,n)=>e+B(n.text),0)}function Nf(t,e,n){let r=[],i=0;for(let s of t){let o=B(s.text),a=Math.max(e,i),c=Math.min(n,i+o);if(c>a)r.push({...s,text:d4(s.text,a-i,c-i)});i+=o}return r}function h4(t,e,n){return[...Nf(t,0,e),...n,...Nf(t,e+Af(n),Af(t))]}function m4(t,e){return t.map((n)=>{let r=e&&n.sgr?`${n.sgr}${n.text}${Se}`:n.text;return n.target?Ye(n.target,r):r}).join("")}function vM(t){return t<F.length?F[t]:vn[(t-F.length)%8]}function SM(t,e,n,r){let i=t.signature.includes(qn[n])?I.signature:e.color?I.swatch:" ";return e.color?`${e.fg(t.list[n])}${i}${r}`:i}function EM(t,e,n,r,i){return r.has(n)?e.bold(I.miss):t.changed(n)?e.color?`${wt("warn")}${I.on}${i}`:I.on:" "}function MM(t,e,n){return n?t.color?`${t.fg(e.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" "}function p4(t,e,n,r,i,s){let o=r===t.slot(),a=o?e.fg(n.foreground):$t,c=vM(r).padEnd(12),u=t.lch[r],f=`${MM(e,n,o)}${SM(t,e,r,a)} ${o?e.bold(c):c}${hM(u)} ${EM(t,e,r,s,a)}`,l=tt(f,i);return at({kind:"open",slot:r},o&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${l}${pe}`:l)}var Kg=8,xM=44;function Wc(t){return t>=xM?16:11}function kM(t,e,n,r,i,s){let o=Wc(i);if(!t.visible(r))return" ".repeat(o);let a=r===t.slot(),c=a&&e.color?e.fg(n.foreground):$t,u=t.lch[r],f=(p,b)=>p.toFixed(b).replace(/^0(?=\.)/,""),l=`${u.h.toFixed(0).padStart(3)}°`,d=i>=xM?`${f(u.l,2)} ${f(u.c,3)} ${l}`:`${f(u.l,2)} ${l}`,h=`${SM(t,e,r,c)} ${d}${EM(t,e,r,s,c)}`,m=a&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${h}${pe}`:h;return at({kind:"open",slot:r},m)}function g4(t,e,n,r,i,s){let o=F.length+r,a=o+8,c=t.row===o,u=vn[r].padEnd(Kg),f=t.linkOf(a)!==void 0?e.dim("⇠"):" ";return`${at({kind:"open",slot:o},`${MM(e,n,c)}${c?e.bold(u):u}`)}${kM(t,e,n,o,i,s)}${f} ${kM(t,e,n,a,i,s)}`}function OM(t){return 14+2*Wc(t)}function b4(t){let e=Wc(t)>=16;return[[2," ANSI "],[2+Kg,e?" Normal 0–7 ":" Normal "],[5+Kg+Wc(t),e?" Bright 8–15 ":" Bright "]]}function w4(t,e,n,r){let i=t.slot(),s=Ue(i),o=OM(r),a=o-2,c=` ${s.name}${i>=F.length?` · ${s.about}`:""} `,u=[` ${e.dim(LE(i))}`];if(i>=2){let l=oE(n,i).filter((m)=>m.count>0),d=l.length>0?l.map((m)=>`${m.name} ${m.count}`).join(" · "):"none",h=ge("w",t.where?Ve(e,"w where"):e.dim("w where"));u.push(Rt(` ${e.dim("Shown in")} ${d}`,`${h} `,a))}let f=i-F.length;if(f===0||f===7||f===8||f===15){let l=t.lch[i].l,d=t.lch[0].l,h=t.lch[1].l,m=Math.abs(l-d)<=Math.abs(l-h)?"the background":"the text";u.push(` ${e.dim(`L ${l.toFixed(2)} reads near ${m}`)}`)}return[e.dim(Bt(o,"top",[[2,c]])),...u.map((l)=>Ze(e,l,o)),e.dim(Bt(o,"bottom"))]}function If(t,e){return xr-t*(xr-jc)/(e*2-1)}function PM(t,e,n,r,i){let s=If(Math.max(0,Math.min(e*2-1,t*2-0.5)),e),o=Math.max(0,Math.min(1,(n-0.5)/Math.max(1,r-1)));return{lightness:s,chroma:o*_c(s,i)}}function $4(t,e,n,r,i,s){let o=(l)=>{let d=Math.max(0,Math.min(i*2-1,Math.round((xr-l.l)/(xr-jc)*(i*2-1))));return{row:Math.floor(d/2),col:Math.round(Of(l.l,l.c,l.h)*(r-1))}},{row:a,col:c}=o(e),u=s?o(s):{row:-1,col:-1},f=(l,d)=>{return`#${(Dn(l,d*_c(l,e.h),e.h)??[0,0,0]).map((m)=>m.toString(16).padStart(2,"0")).join("")}`};return Array.from({length:i},(l,d)=>{let h="";for(let m=0;m<r;m++){if(d===a&&m===c){h+=t.color?`${t.bg(n)}${t.fg(Fc(n))}${I.on}${pe}`:I.on;continue}let p=m/Math.max(1,r-1);if(d===u.row&&m===u.col){let b=f(If(d*2+1,i),p);h+=t.color?`${t.bg(b)}${t.fg(Fc(b))}${I.off}${pe}`:I.off;continue}h+=t.color?`${t.fg(f(If(d*2,i),p))}${t.bg(f(If(d*2+1,i),p))}▀${pe}`:"·"}return at({kind:"plane",row:d,rows:i},h)})}function IM(t,e,n){let r=t.slot(),i=t.lch[r],o=vf(t,r,i).filter((c)=>c.ok===!1||c.text.startsWith("Chroma ○")).flatMap((c)=>Ft(c.text,n-2).map((u,f)=>`${f===0?c.ok===!1?e.bold(I.miss):e.dim(I.off):" "} ${u}`)),a=yf(t,r);return[...o.slice(0,3),...a?[e.dim(a)]:[]]}function RM(t,e,n){let r=t.pair(t.slot());if(!r)return;let i=t.slot()>=r.bright,s=vM(i?r.normal:r.bright).toLowerCase(),o=`${r.lift>=0?"+":""}${r.lift.toFixed(2)}`,a=n-9,c=i?r.on?[`⇠ Linked to ${s} · L ${o}`,`⇠ ${s} · L ${o}`,`⇠ ${s}`]:[`Not linked to ${s}`,"Not linked"]:r.on?[`Bright follows · L ${o}`,"Bright follows"]:["Its bright moves on its own","Moves on its own"],u=c.find((f)=>B(f)<=a)??c.at(-1)??"";return Rt(e.dim(u),ge("l",`${e.bold("l")} ${e.dim(r.on?"unlink":"link")}`),n)}function AM(t,e,n){let r=t.slot(),i=t.list[r],s=t.lch[r],o=t.typing!==void 0?e.bold(`${t.typing}▏`):ge("#",e.bold(jE(t.format,i,s))),a=t.start[r],c=e.color?`${e.fg(a)}${I.swatch}${$t} `:"";return Rt(o,a!==i?e.dim(`was ${c}${a}`):"",n)}function k4(t,e,n,r){let i=t.slot(),s=t.lch[i],o=t.list[i],a=n-4,c=e.dim("│"),u=(x)=>`${c} ${tt(x,a)} ${c}`,f=RM(t,e,a),l=6+(f?1:0),d=IM(t,e,a).slice(0,Math.max(0,r-l-Rf)),h=Math.max(Rf,Math.min(l4,r-l-d.length)),m=" L × C ",p=` H ${s.h.toFixed(0)}° `,b=Math.max(0,n-4-B(" L × C ")-B(p)),$=t.origin(),k=yn[2],v=(x,N)=>at({kind:"format",format:N},t.format===N?Ve(e,x):e.dim(` ${x} `)),S=tt(` ${yM} `,n-4,!1);return{lines:[`${e.dim("╭─")}${e.dim(" L × C ")}${e.dim("─".repeat(b))}${e.dim(p)}${e.dim("─╮")}`,...$4(e,s,o,a,h,$?.lch).map((x)=>u(x)),u(at({kind:"bar",channel:2},Lc(e,Mf(s,k,a),Ps(s.h,k.min,k.max,a),t.mode==="tune"&&t.channel===2,$&&Ps($.lch.h,k.min,k.max,a)))),u(kf(e,t,Math.max(8,a-11),$?.ratio)),u(`${v("Hex","hex")} ${v("RGB","rgb")} ${v("OKLCH","oklch")}`),u(AM(t,e,a)),...f?[u(f)]:[],...d.map((x)=>u(x)),`${e.dim("╰─")}${e.dim(S)}${e.dim("─".repeat(Math.max(0,n-4-B(S))))}${e.dim("─╯")}`].map((x)=>at({kind:"picker"},x))}}var Uc=[["Hex","hex"],["RGB","rgb"],["OKLCH","oklch"]];function y4(t,e,n,r){let i=t.lch[t.slot()],s=n-2,o=RM(t,e,s),a=6+(o?1:0),c=IM(t,e,s).slice(0,Math.max(0,r-a-Rf)),u=Math.max(Rf,Math.min(f4,r-a-c.length)),f=(x)=>` ${tt(x,s)} `,l=[f(Rt(e.dim("L × C"),e.dim(`H ${i.h.toFixed(0)}°`),s)),...Array.from({length:u},(x,N)=>f(at({kind:"plane",row:N,rows:u}," ".repeat(s))))],d=l.length;l.push(f(at({kind:"bar",channel:2}," ".repeat(s))));let h=l.length,m=t.mode==="tune"&&t.channel===oe,p={kind:"channel",channel:oe},b=`${t.ratio().toFixed(2)}:1`.padStart(8),$=s-11;l.push(f(`${at(p,m?e.bold("◐"):e.dim("◐"))} ${at({kind:"bar",channel:oe}," ".repeat($))} ${at(p,m?e.bold(b):e.dim(b))}`));let k=l.length,v=Math.floor(s/Uc.length);l.push(f(Uc.map(([x,N],R)=>{let T=R===Uc.length-1?s-v*R:v,_=Math.floor((T-B(x))/2),K=`${" ".repeat(_)}${x}${" ".repeat(T-_-B(x))}`,G=t.format===N?e.color?e.accent(e.bold(K)):`[${x}]`.padEnd(T):e.dim(K);return at({kind:"format",format:N},G)}).join("")));let S=l.length;l.push(f(` ${AM(t,e,s-2)} `));let M=o?l.length:void 0;if(o)l.push(f(o));return l.push(...c.map((x)=>f(x)),f(e.dim(yM))),{lines:l.map((x)=>at({kind:"picker"},x)),parts:{plane:{row:1,col:1,cols:s,rows:u},hue:{row:d,col:1,cols:s,rows:1},contrast:{row:h,col:3,cols:$,rows:1},tabs:{row:k,col:1,cols:s,rows:1},field:{row:S,col:1,cols:s,rows:1},divider:M}}}function v4(t,e,n,r,i,s){let o=t.slot(),a=t.lch[o],c=t.list[o],u=(h)=>({row:r+h.row,col:i+h.col,cols:h.cols,rows:h.rows}),f=(h)=>Math.log(Math.max(1,h))/Math.log(21),l=t.partner().floor,d=t.origin();return{panel:{row:r,col:i,cols:n.plane.cols+2,rows:s},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:f(t.ratio()),floor:l===void 0?void 0:f(l),color:c,lit:t.channel===oe},tabs:{...u(n.tabs),active:Uc.findIndex(([,h])=>h===t.format),count:Uc.length},field:u(n.field),divider:n.divider===void 0?void 0:r+n.divider,origin:d&&{...d.lch,color:d.hex,at:f(d.ratio)}}}function S4(t,e,n,r,i,s,o,a){let u=s??1,f=o-1-u,l=u-2,d=12+2*Wc(r)-Wg,h=a?y4:k4,m=h(t,e,d,Number.POSITIVE_INFINITY),p=m.lines.length<=f||m.lines.length>l&&f>=l,b=p?f:l,$=m.lines.length<=b?m:h(t,e,d,b),k=p?u+1:u-$.lines.length,v=Array.from({length:o},(S,M)=>i[M]??"");return $.lines.forEach((S,M)=>{let x=k+M;if(x>=0&&x<o)v[x]=ny(v[x],Wg,S)}),{lines:v,art:$.parts&&v4(t,n,$.parts,k,Wg,$.lines.length)}}function E4(t,e,n,r,i){let s=r.side,o=jg(t),a=t.changedOnly?e.warn(I.on):" ",c=o===0?e.dim("Gate ✓"):e.bold(`Gate ✗ ${o}`),u=Rt(` ${e.bold("Colors")} ${c}`,ge("m",`${t.changedOnly?e.bold("⧩ changed"):e.dim("⧩ changed")}${a} `),s),f=i-1,l=t.misses(),d=OM(s),h=[],m,p=[...F.keys()].filter((k)=>t.visible(k));if(p.length>0){h.push(e.dim(Bt(d,"top",[[2," Base "]])));for(let k of p){if(k===t.slot())m=h.length;h.push(Ze(e,p4(t,e,n,k,d-2,l),d))}}let b=[...vn.keys()].filter((k)=>t.visible(F.length+k)||t.visible(F.length+k+8));if(b.length>0){h.push(e.dim(Bt(d,p.length>0?"mid":"top",b4(s))));for(let k of b){if(t.row===F.length+k)m=h.length;h.push(Ze(e,g4(t,e,n,k,s,l),d))}}if(p.length>0||b.length>0)h.push(e.dim(Bt(d,"bottom")));if(t.visible(t.slot()))h.push(...w4(t,e,r,s));let $=Cc(e,t,f-h.length,d);return h.push(...Array.from({length:Math.max(0,f-h.length-$.length)},()=>""),...$),{lines:[u,...h.slice(0,f)],anchor:m===void 0?void 0:m+1}}function M4(t,e,n){let r=`${e.accent(I.current)} ${e.bold(t.options.title)} ${e.dim(`· ${t.options.name}`)}`,i=t.dirty(),s=t.changes(),o=e.warn(I.on),a=i?`${o} ${e.dim(s>0?`unsaved · ${s} changed`:"unsaved")}`:"",c=[t.resettable()?ge("R",e.dim("Reset")):"",i?ge("s",Ve(e,"Save")):""].filter(Boolean).join(" "),u=[r,a,c].filter(Boolean).join(" "),f=(h,m,p)=>ge(h,p?Ve(e,m):e.dim(m)),d=[...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 Rt(u,`${d} `,n)}var x4={kind:"open",slot:0};function O4(t,e,n){return t.color?`${n?qk:t.bg(e.background)}${t.fg(e.foreground)}`:""}function P4(t,e,n,r,i,s){let o=Rc(r),a=O4(e,n,s),c=t.slot();return Array.from({length:r.rows},(u,f)=>{let l=[{text:" ",sgr:a},...(o[f]??[]).map((m,p)=>{let b=i&&i.pane===r.id&&i.line===f&&i.run===p,$=e.color?b?`${a}${e.bg(n.foreground)}${e.fg(n.background)}`:`${a}${Ef(e,n,m.role,dg(m.role,c))}${t.where&&!fg(m.role,c)?wt("dim"):""}`:"";return{text:m.text,sgr:$,target:{kind:"run",spot:{pane:r.id,line:f,run:p}}}})],d=Nf(l,0,r.width-1),h=r.width-Af(d);return h>0?[...d,{text:" ".repeat(h),sgr:a,target:x4}]:d})}function I4(t,e,n){let r=t.slotsHere();if(!r)return;let i=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",s=e.color?`${i}${wt("dim")}`:"",o=(l)=>({text:l,sgr:s}),a="┌ Slots here ",c="└ enter its slot · esc ",u=[["text",r.text]];if(r.ground!==r.text)u.push(["ground",r.ground]);return[[o(`${a}${"─".repeat(Gc-B(a)-1)}┐`)],...u.map(([l,d])=>{let h={kind:"open",slot:d},m=t.shown()[d],p=d<F.length?"":Ue(d).about;return[{text:"│ ",sgr:s,target:h},{text:l.padEnd(7),sgr:s,target:h},{text:I.swatch,sgr:e.color?`${i}${e.fg(m)}`:"",target:h},{text:" ",sgr:i,target:h},{text:Ue(d).name.slice(0,14).padEnd(14),sgr:i,target:h},{text:p.padEnd(Gc-27),sgr:s,target:h},{text:" │",sgr:s,target:h}]}),[o(`${c}${"─".repeat(Gc-B(c)-1)}┘`)]].map((l)=>Nf(l,0,Gc))}function R4(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,s=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",o=e.color?`${s}${wt("dim")}`:"",a=t.menu==="export"?"Copy ":"Take from ";return[[{text:`┌ ${a}${"─".repeat(Math.max(0,i-3-a.length))}┐`,sgr:o}],...r.map((c,u)=>{let f=u===t.entry,l={kind:"entry",index:u};return[{text:"│",sgr:o},{text:` ${f?"▌":" "} ${c.padEnd(i-6)}`,sgr:f&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${wt("bold")}`:s,target:l},{text:"│",sgr:o}]}),[{text:`└${"─".repeat(i-2)}┘`,sgr:o}]]}var A4=["#ff5f57","#febc2e","#28c840"];function N4(t,e,n,r){let i=e.color?`${e.bg(NM(n))}${e.fg(n.foreground)}`:"",s=sE(),o=(t.scene%s.length+s.length)%s.length,a=[{text:" ",sgr:i},...A4.flatMap((u)=>[{text:"●",sgr:e.color?`${i}${e.fg(u)}`:""},{text:" ",sgr:i}]),{text:" ",sgr:i},...s.flatMap((u,f)=>{let l={kind:"scene",scene:f};return[f===o?{text:` ${u} `,sgr:e.color?`${i}${e.bg(Zi(n.background,n.foreground,"tab"))}${wt("bold")}`:"",target:l}:{text:` ${u} `,sgr:e.color?`${i}${wt("dim")}`:"",target:l},{text:" ",sgr:i}]})],c="⇧←→ ";return[...a,{text:" ".repeat(Math.max(0,r-Af(a)-B("⇧←→ "))),sgr:i},{text:"⇧←→ ",sgr:e.color?`${i}${wt("dim")}`:""}]}function NM(t){return Zi(t.background,t.foreground,"bar")}function T4(t,e,n){let{frame:r}=n,i=Zi(e.background,e.foreground,"line"),s=t.color?`${t.bg(TM(e))}${t.fg(i)}`:"",o=t.color?`${t.bg(NM(e))}${t.fg(i)}`:"",a=(u,f)=>u===r.row||u===r.row+r.rows-1||f===r.col||f===r.col+r.cols-1,c=[];for(let[u,f]of fE(n.rules))for(let[l,d]of f)c.push([u,l,[{text:d,sgr:a(u,l)?s:o}]]);return c}function TM(t){return Zi(t.background,t.foreground,"stage")}function HM(t,e){return Ic(t,e,0)?.inner}function FM(t,e,n,r,i={}){let s=Ic(e,n,t.scene);if(!s)return;let o=Ce(r),a=t.shown(),c=ae(a),u=ae(i.chrome?[...i.chrome]:t.list),f=E4(t,o,u,s,n-1),l=t.mode==="tune"?S4(t,o,u,s.side,f.lines,f.anchor,n-1,r&&i.art===!0):{lines:f.lines,art:void 0},d=l.lines,h=i.behind===!0,m=t.inspect?af(s,t.spot):void 0,p=o.color?o.bg(TM(u)):"",b=Array.from({length:n-3},()=>[{text:" ".repeat(s.width),sgr:p}]),$=(T,_,K)=>{let G=T-2;if(G>=0&&G<b.length)b[G]=h4(b[G],_,K)},k=s.side+1;for(let[T,_,K]of T4(o,u,s))$(T,_-k,K);for(let T of s.tiles)P4(t,o,c,T,m,h).forEach((_,K)=>{$(T.row+K,T.col-k,_)});$(s.title.row,s.title.col-k,N4(t,o,u,s.title.cols));let v=m?I4(t,o,c):void 0;if(m&&v){let T=s.tiles.find((K)=>K.id===m.pane),_=Rc(T)[m.line]?.[m.run];if(_){let K=Math.max(0,Math.min(T.col-k+1+_.col,s.width-Gc)),G=T.row+m.line,L=G+1,gt=L+v.length-2>n-2?G-v.length:L;v.forEach((Xt,it)=>{$(gt+it,K,Xt)})}}let S=R4(t,o,c);if(S){let T=Math.max(0,s.width-24-(t.menu==="import"?12:2));S.forEach((_,K)=>{$(2+K,T,_)})}let M=M4(t,o,s.width),x=o.dim("─".repeat(s.width)),N=o.dim("│");return{lines:Array.from({length:n-1},(T,_)=>{let K=_===0?M:_===1?x:m4(b[_-2]??[],r);return`${tt(d[_]??"",s.side)}${N}${K}`}),art:l.art}}var LM=80,CM=24,zg=11;function H4(t,e,n,r){let i=Cg(e,n);return yn.map((s,o)=>{let a=e.mode==="tune"&&o===e.channel,c=n[s.key],u=`${c.toFixed(s.digits)}${s.wraps?"°":""}`.padStart(6),f=Lc(t,Mf(n,s,r),Ps(c,s.min,s.max,r),a,s.key==="c"&&i!==void 0?Ps(i,s.min,s.max,r):void 0),l=s.key.toUpperCase(),d={kind:"channel",channel:o};return`${at(d,a?t.bold(`▸${l}`):t.dim(` ${l}`))} ${at({kind:"bar",channel:o},f)} ${at(d,a?t.bold(u):t.dim(u))}`})}function F4(t,e){if(e.mode!=="tune"||e.slot()<F.length)return[];let n=ta.map((i)=>at({kind:"scope",scope:i},i!==e.scope?t.dim(i):Ve(t,i))),r=e.scoped().length;return[`${t.dim("Scope")} ${n.join(" ")}`,t.dim(r>1?`${r} slots move by the same step, each keeping its own color`:"This slot moves alone · a widens it")]}var jM={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 L4(t){return`oklch ${t.l.toFixed(3)} ${t.c.toFixed(3)} ${t.h.toFixed(0)}°`}function C4(t,e){return`${t.dim("oklch")} ${t.bold(`${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(0)}°`)}`}function j4(t,e,n,r=Os){let i=e.misses(),s=ae(e.list),o=e.slot(),a=(l)=>{let d=e.list[l],h=l===o,m=e.signature.includes(qn[l])?I.signature:t.color?I.swatch:" ",p=i.has(l)?I.miss:e.tone&&e.changed(l)?I.on:" ",$=`${t.color?`${t.fg(d)}${m}${h?t.fg(s.foreground):$t} `:`${m} `}${Sf(e.lch[l])}${p}`;if(!h)return at({kind:"slot",slot:l},` ${$}`);return at({kind:"slot",slot:l},t.color?`${t.bg(s.selection)}${t.fg(s.foreground)} ${$}${pe}`:`›${$}`)},c=(l)=>l?t.color?`${t.fg(s.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" ",u=[t.dim(Bt(r,"top",[[2," Base "]])),...F.map((l,d)=>{let h=d===e.row,m=l.padEnd(10);return Ze(t,`${at({kind:"slot",slot:d},`${c(h)}${h?t.bold(m):m}`)}${a(d)}`,r)}),t.dim(Bt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])),...vn.map((l,d)=>{let h=F.length+d,m=h===e.row,p=l.padEnd(10),b=at({kind:"slot",slot:h+(e.col===1?8:0)},`${c(m)}${m?t.bold(p):p}`);return Ze(t,`${b}${a(h)}${a(h+8)}`,r)}),t.dim(Bt(r,"bottom"))],f=Cc(t,e,n-u.length,r);return[...u,...Array.from({length:Math.max(0,n-u.length-f.length)},()=>""),...f]}function _4(t,e,n){let r=ae(e.list),i=[` ${t.dim("Seeds")}`,...ys.map((s,o)=>{let a=o===e.field,c=e.seeds[s.key],u=Array.from({length:zg},(b,$)=>{let k=s.min+(s.max-s.min)*$/(zg-1);return jM[s.key](yi({...e.seeds,[s.key]:k}))}),f=Lc(t,u,Ps(c,s.min,s.max,zg),a),l=`${c.toFixed(s.digits)}${s.wraps?"°":""}`.padStart(6),d=jM[s.key](r),h=a?t.color?`${t.fg(r.cursor)}${I.gutter}${$t} `:`${I.gutter} `:" ",m=s.label.padEnd(17),p={kind:"field",field:o};return`${at(p,`${h}${a?t.bold(m):m}`)}${at({kind:"seed",field:o},f)}${at(p,` ${l} ${t.color?`${t.fg(d)}${I.swatch}${$t} `:""}${t.dim(d)}`)}`}),"",...Ft("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.",Os-4).map((s)=>` ${t.dim(s)}`),""];return[...i,...Cc(t,e,n-i.length,Os)]}function UM(t,e,n,r,i,s){let o=Vt.indexOf(Xi(i)),a=Vt.map((u,f)=>at({kind:"scene",scene:f},f!==o?t.dim(u.name):Ve(t,u.name))).join(" "),c=`${t.bg(e.background)}${t.fg(e.foreground)}`;return[Rt(a,t.dim("⇧←→"),n),...Xi(i).lines.values().map((u)=>So(u,n-2)).filter((u)=>u!==void 0).take(Math.max(0,r-1)).map((u)=>{let f=t.color?u.map(([l,d])=>`${Ef(t,e,d,mM(s,d))}${l}${Se}${c}`).join(""):u.map(([l])=>l).join("");return`${c} ${tt(f,n-2)} ${t.color?Se:""}`})]}var B4=["Bk","Rd","Gr","Ye","Bl","Ma","Cy","Wh"];function _M(t,e,n,r,i,s,o){let a=(i-s)/(o-1),c=WM(e),u=ae(n),f=(l)=>Math.min(o-1,Math.max(0,Math.round((i-r(Ot(l)))/a)));return Array.from({length:o},(l,d)=>{let h=d%2===0?(i-a*d).toFixed(i>=1?1:2).replace(/^0(?=\.\d\d)/,""):"",m=Array.from({length:8},(p,b)=>{let $=[" "," "," "," "," "],k=u.ansi[b],v=u.ansi[b+8],S=f(k)===d,M=f(v)===d,x=(R)=>{if(R===1&&S)return t.color?`${t.fg(k)}${I.on}`:I.on;if(R===3&&M)return t.color?`${t.fg(v)}${I.off}`:I.off;return $[R]},N=[0,1,2,3,4].map(x).join("");return c.has(b)?t.color?`${t.bg(u.selection)}${N}${pe}`:N:`${N}${t.color?$t:""}`});return`${h.padStart(4)} ${t.dim(d%2===0?"┤":"│")}${m.join("")}`})}function WM(t){let e=t.mode==="tune"?t.scoped():[t.slot()];return new Set(e.filter((n)=>n>=F.length).map((n)=>(n-F.length)%8))}function G4(t,e){let n=WM(e);return` ${B4.map((r,i)=>n.has(i)?t.bold(` ${r} `):t.dim(` ${r} `)).join("")}`}function U4(t,e){let n=ae(e),r=Array.from({length:40},(s,o)=>{let a=o*9+4.5,c=-1,u=999;for(let[f,l]of Object.entries(Re)){let d=Ae(a,l.center);if(d<=l.width&&d<u)u=d,c=Number(f)}return c<0?" ":t.color?`${t.fg(n.ansi[c])}─`:"─"}).join(""),i=(s,o)=>{let a=Array.from({length:40},()=>" ");for(let c of Object.keys(Re).map(Number)){let u=n.ansi[c+s],f=Math.min(39,Math.round(Ot(u).h/9));a[f]=t.color?`${t.fg(u)}${o}${$t}`:o}return` ${a.join("")}`};return[`${t.bold("Hue")} ${t.dim("0° 90° 180° 270° 360°")}`,`${t.dim("bands")} ${r}${t.color?$t:""}`,i(0,I.on),i(8,I.off)]}function W4(t,e,n){let r=Er(n,e.signature,e.waive),i=(a)=>Ue(F.length+a).name,s=(a)=>Ot(n[F.length+a]).h.toFixed(0),o=[...tr(r).filter(({gap:a})=>a>25).map(({normal:a,gap:c})=>`${i(a)} ${s(a)}° → bright ${s(a+8)}° · ${c.toFixed(0)}° apart · ≤ 25°`),...Tr(r).map(({slot:a,over:c})=>{let u=Re[En(a)];return`${i(a)} ${s(a)}° · ${c.toFixed(0)}° outside ${u.name} ${u.center}±${u.width}°`}),...er(r).map(([a,c])=>`${i(a)} and ${i(c).toLowerCase()} read as one color`)];return o.length>0?o.map((a)=>`${t.bold(I.miss)} ${a}`):[t.dim(`${I.ok} Every accent keeps its role and its bright`)]}function BM(t,e,n,r,i){let s=e.shown(),o=Math.max(...s.slice(F.length).map((u)=>Ot(u).c)),a=Math.max(0.2,Math.ceil(o/0.05)*0.05),c=[Rt(t.bold("Lightness"),t.dim("● normal ○ bright"),n),..._M(t,e,s,(u)=>u.l,1,0.3,8),G4(t,e)];if(i)c.push("",t.bold("Chroma"),..._M(t,e,s,(u)=>u.c,a,0,5),"",...U4(t,s));return[...c,...W4(t,e,s)].slice(0,r)}function K4(t,e,n){let r=(i,s)=>at({kind:"view",view:s},e.view!==s?t.dim(` ${i} `):Ve(t,i));return Rt(`${r("Slot","slot")}${r("Relations","relations")}`,ge("g",`${t.bold("g")} ${t.dim("switch")}`),n)}function z4(t,e,n,r){let i=e.slot(),s=e.list[i],o=e.lch[i],a=e.start[i],{name:c,about:u}=Ue(i),f=e.signature.includes(qn[i]),l=Math.max(8,Math.min(64,n-12));if(e.view==="relations"&&e.mode!=="tune")return[K4(t,e,n),"",...BM(t,e,n,r-2,!0)];let d=i>=F.length?t.dim("Uses underlined below"):f?t.dim("◆ signature"):"",h=[Rt(`${t.bold(c)} ${t.dim(u)}`,e.view==="relations"?"":d,n),""],m=t.color?`${t.fg(s)}${"█".repeat(8)}${$t} `:"",p=e.typing!==void 0?`${t.bold(`${e.typing}▏`)}`:void 0,[b,$,k]=st(s);if(h.push(`${m}${p??C4(t,o)}`,`${m}${t.dim(`${s} · rgb ${b} ${$} ${k}`)}`),e.view!=="relations"){let M=t.color?`${t.fg(a)}${I.swatch}${$t} `:"";h.push(`${m}${a!==s?t.dim(`was ${M}${L4(e.lchOf(a)).slice(6)} · ${a}`):t.dim("as it opened")}`)}if(h.push("",...H4(t,e,o,l),kf(t,e,l),...F4(t,e)),e.view==="relations")return h.push("",...BM(t,e,n,r-h.length-1,!1)),h;h.push("",...vf(e,i,o).flatMap((M)=>Ft(M.text,n-2).map((x,N)=>`${N===0?qu(t,M.ok):" "} ${M.ok===!1?x:t.dim(x)}`)));let v=yf(e,i);if(v)h.push(t.dim(` ${v}`));let S=r-h.length-1;if(S>=3)h.push("",...UM(t,ae(e.shown()),n,S,e.scene,i));return h}function D4(t,e,n,r){return[Rt(`${t.bold("Sample")} ${t.dim("what the seeds grow")}`,"",n),"",...UM(t,ae(e.list),n,r-2,e.scene,-1)]}var q4=[["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 J4(t,e,n){return[` ${t.bold("Help")}`,"",...q4.filter(([r])=>r!=="Pictures"||e.options.find).flatMap(([r,i])=>Ft(i,n-16).map((s,o)=>` ${t.bold((o===0?r:"").padEnd(11))} ${s}`))]}function Y4(t,e,n,r){let i=e.choices(),s=e.options.palettes?.length??0,o=e.filter?`${t.bold(e.filter)}▏`:t.dim("type to filter"),a=r-2,c=Math.max(0,Math.min(e.pick-Math.floor(a/2),i.length-a)),u=Math.min(40,Math.max(12,...i.map((f)=>B(f.name))));return[Rt(` ${t.bold("Take colors from")} ${o}`,t.dim(`${i.length}/${s}`),n),"",...i.slice(c,c+a).map((f,l)=>{let d=c+l===e.pick,h=f.colors,m=t.color?`${t.bg(h.background)} ${h.ansi.map(($)=>`${t.fg($)}${I.swatch}`).join("")} ${t.fg(h.foreground)}Aa ${pe}`:"",p=d?"▌ ":" ",b=f.name.padEnd(u);return at({kind:"choice",index:c+l},`${p}${d?t.bold(b):b} ${m}`)}),...i.length===0?[` ${t.dim(`No palettes match '${e.filter}'`)}`]:[]]}var V4=new Set(["enter","s","?","g","a","i"]);function GM(t,e,n){let r="EDIT",i="",s=[],o="";if(e.quitting)r="EDIT (QUIT)",i=e.added>0?`Discard changes and ${e.added} ${e.added===1?"picture":"pictures"}?`:"Discard changes?",s=[["y","discard"],["n","keep editing"]];else if(e.typing!==void 0)r="EDIT (TYPE)",i=t.dim("#rrggbb, rgb(r g b) or oklch(l c h)"),s=[["enter","set"],["ctrl+u","clear"]],o="esc back";else if(e.overlay==="keys")r="HELP",o="any key closes";else if(e.overlay==="open")r="EDIT (OPEN)",s=[["↑↓","palette"],["a-z","filter"],["enter","take its colors"]],o="esc close";else if(e.menu)r=e.menu==="export"?"EDIT (EXPORT)":"EDIT (IMPORT)",s=[["↑↓","item"],["enter","choose"]],o="esc close";else if(e.compare)r="EDIT (BEFORE)",i="The colors you started from",s=[["space","back to yours"]],o="esc back";else if(e.mode==="seeds")r="EDIT (SEEDS)",s=[["↑↓","seed"],["←→","step"],["⇧←→","×5"],["enter","tune the slots"],["o","open a palette"],["p","picture"],["?","keys"]],o="esc cancel";else if(e.mode==="tune")r="EDIT (TUNE)",s=[["↑↓","L"],["←→",e.channel===oe?"ratio":"C"],["⇧←→","H"],["tab","◐"],...e.slot()>=F.length?[["a","scope"]]:[],[e.channel===oe?"1-9":"0-9",e.channel===oe?"ratio":"jump"],["#","type"],["enter","keep"]],o="esc undo";else if(e.inspect)r="EDIT (INSPECT)",s=[["←→↑↓","spot"],["⇧←→","tab"],["enter","its slot"],["i","leave"]],o="esc leave";else s=[["↑↓","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"]],o="esc cancel";if(!e.options.find)s=s.filter(([u])=>u!=="p"&&u!=="b");if(!e.options.exports||!e.roomy)s=s.filter(([u])=>u!=="x");if(!e.roomy)s=s.filter(([u])=>u!=="i"&&u!=="m");if(e.notice)i=t.warn(e.notice),s=[];let a=`${Ve(t,r)}${t.color?" ":" "}`,c=o?ge(o.split(" ")[0],`${t.bold(o.split(" ")[0])} ${t.dim(o.split(" ").slice(1).join(" "))}`):"";for(;;){let u=[i,...s.map(([d,h])=>ge(d,`${t.bold(d)} ${t.dim(h)}`))].filter(Boolean),f=`${a}${u.join(" ")}`,l=s.findLastIndex(([d],h)=>h>0&&!V4.has(d));if(B(f)+B(o)+3<=n||l<0)return o?Rt(f,c,n):tt(f,n);s=s.toSpliced(l,1)}}function Z4(t,e,n,r,i={}){let s=Ce(r);if(e<LM||n<CM){let p=[s.bold("ttheme palette editor"),`Needs ${LM}×${CM} — now ${e}×${n}`,s.dim("esc cancels")];return{lines:Array.from({length:n},(b,$)=>tt(p[$]??"",e)),art:void 0}}if(t.viewport(e,n),!t.overlay&&t.mode!=="seeds"&&t.view==="slot"){let p=FM(t,e,n,r,i);if(p)return{lines:[...p.lines,GM(s,t,e)],art:p.art}}let o=t.failing().length,a=o===0?"✓ Passes the gate":`✗ ${o} ${o===1?"miss":"misses"} in the gate`,c=t.pictures>0?s.dim(`▣ ${t.pictures} ${t.pictures===1?"picture":"pictures"} `):"",u=t.resettable()?`${ge("R",s.dim("Reset"))} `:"",f=`${t.dirty()?`${s.warn(I.on)} unsaved `:""}${u}${c}${s.dim(a)}`,l=`${s.accent(I.current)} ${s.bold(t.options.title)} ${s.dim(`· ${t.options.name}`)}`,d=n-4,h;if(t.overlay==="keys")h=J4(s,t,e);else if(t.overlay==="open")h=Y4(s,t,e,d);else{let p=e-Os-2,b=t.mode==="seeds"?_4(s,t,d):j4(s,t,d),$=t.mode==="seeds"?D4(s,t,p,d):z4(s,t,p,d);h=Array.from({length:d},(k,v)=>`${tt(b[v]??"",Os)}${s.dim("│")} ${tt($[v]??"",p)}`)}return{lines:[Rt(l,f,e),"",...Array.from({length:d},(p,b)=>tt(h[b]??"",e)),"",GM(s,t,e)],art:void 0}}var X4=new Set(["tab","a","#","l","enter","esc"]),Q4=new Set(["picker","plane","bar","channel","format","scope","open","slot"]);function tj(t){if(!t)return!0;return t.kind==="key"?!X4.has(t.key):!Q4.has(t.kind)}function ej(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&&tj(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 s=PM(r.row+e.exact.y,r.rows,e.exact.x,e.width,t.lch[t.slot()].h);t.plane(s.lightness,s.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 nj=[ql,Wn,pi,yr];async function KM(t,e){let n=new Rg(t),r=e.backdrop,i=e.layer,s=(a)=>n.typing===void 0&&df(a),o=e.hosted?{modes:[yr,...gi()],assume:[Wn,pi],burst:s}:{modes:[...nj,...gi()],burst:s};return bi(o,async(a)=>{let c=!1,u=!1,f=new Map,l=new qp,d=await a.ask(`${ym(pn,"")}${gi().length>0?kS:""}\x1B[c`,(S)=>{if(S.kind==="color"){f.set(S.code,S.value);return}return l.see(S)},1000);if(d?.cell)a.pixels(d.cell);let h=Cy(f),m=h.map((S,M)=>S??n.start[M]),[p,b]=m;if(!h[3])m[3]=Zi(p,b,"selection");let $=new fs({write:(S)=>a.write(S),view:()=>{if(c)return;let{lines:S,art:M}=Z4(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,HM(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(x){n.notice=x instanceof Error?x.message:String(x)}if(u)return;c=!1,r?.load(),$.reset(ns),k()};if(a.write(ns),a.onResize(()=>{r?.resized(),a.write(i?.clear()??""),$.reset(ns),$.request()}),r)r.load(),r.ready=()=>$.request();if(r||i){let S=new mc;a.ask(zl,(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")ej(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 x=n.wants;if(x)n.wants=void 0,v(x.start);return},()=>{if(!c)k(!0)});return S}finally{u=!0,$.stop(),a.write(`${r?.close()??""}${i?.clear()??""}`)}})}import{spawn as bj}from"node:child_process";import{createHash as ox}from"node:crypto";import{existsSync as zc,mkdirSync as wj,mkdtempSync as $j,readFileSync as kj,rmSync as Tf}from"node:fs";import{homedir as yj,tmpdir as vj}from"node:os";import{basename as Sj,dirname as Ej,join as Yn}from"node:path";import{setTimeout as Mj}from"node:timers/promises";import{pathToFileURL as qM}from"node:url";import{existsSync as rj,readFileSync as ij,statSync as sj}from"node:fs";import{join as zM}from"node:path";function oj(t,e){try{return JSON.parse(ij(zM(ln(t),e),"utf8"))}catch{return{}}}function aj(t,e,n){C(zM(ln(t),e),`${JSON.stringify(n)}
729
+ `)}var cj=604800000;class Dg{caches=new Map;unsaved=new Set;owners=new Map;crediting=new Map;inflight=new Map;asking=new Map;home;manifest;entry;signal;credited;constructor(t){this.home=t.home,this.manifest=t.manifest,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 Ma(t,e,this.signal),s=Kr(t,e),o=(i===void 0?await q0(s.site,s.url,this.signal):i)?.alpha===!0;return n[e.id]=o,this.unsaved.add(`${t.key}/probes.json`),o}catch{return!1}}save(){for(let t of this.unsaved){let[e,n]=t.split("/"),r=Z.find((i)=>i.key===e);if(r)aj(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(!va(n,r))return Promise.resolve();let i=ee(n,r.id),s=this.crediting.get(i);if(!s)s=this.credits(t,e).finally(()=>this.crediting.delete(i)),this.crediting.set(i,s);return s}links(t){let e=this.keep(Pt,"profiles.json");return Object.fromEntries(t.flatMap((n)=>{let r=e[n]?.urls??[];return r.length>0?[[n,r]]:[]}))}profile(t,e){return this.credit(t,e).then(()=>this.profiles(t.post.named.artist,e))}async mateOwners(t){let e=this.owners.get(t.key);if(e)return e;let n=_$(this.home),r=this.keep(t,"owners.json"),i=this.manifest.palettes.flatMap((c)=>{let u=n.get(c.name);return re(c)===re(this.entry)&&c.name!==this.entry.name&&u?.site===t.key?[{name:c.name,id:u.id}]:[]}),s=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 Fi(t,c.id,this.signal))?.owner??""}}catch{return}})),o=new Map;for(let c of s)if(c)r[c.id]=c.owner,o.set(c.name,c.owner);this.unsaved.add(`${t.key}/owners.json`);let a=B0(o);return this.owners.set(t.key,a),a}async cached(t,e,n,r){if(rj(e))return sj(e).size;let i=this.inflight.get(e);if(i)return i;let s=(async()=>{let o=await pu(t,n,this.signal,r);return C(e,o),o.length})();this.inflight.set(e,s);try{return await s}finally{this.inflight.delete(e)}}keep(t,e){let n=`${t.key}/${e}`,r=this.caches.get(n);if(!r)r=oj(t,e),this.caches.set(n,r);return r}async profiles(t,e){let n=this.keep(Pt,"profiles.json"),r=Date.now(),i=t.filter((s)=>!this.asking.has(s)&&r-(n[s]?.at??0)>=cj);if(i.length>0){let s=gu(i,e).then((o)=>{for(let a of i)n[a]={at:Date.now(),urls:o.get(a)??[]};this.unsaved.add(`${Pt.key}/profiles.json`),this.credited()},()=>{}).finally(()=>{for(let o of i)this.asking.delete(o)});for(let o of i)this.asking.set(o,s)}await Promise.all(t.flatMap((s)=>this.asking.get(s)??[]))}async credits({site:t,post:e},n){let r=this.keep(t,"credits.json"),i=r[e.id];if(!i){try{i=await ya(t,e.id,n)}catch{return}if(!i?.owner)return;r[e.id]=i,this.unsaved.add(`${t.key}/credits.json`)}Zs(e,i),this.credited()}}import{rmSync as uj}from"node:fs";import{join as lj}from"node:path";var sa=2147483645,Kc=2147483646,DM=-1073741827,fj=-1073741828,dj=16,hj=0.4,mj=3221225472,pj=256;function gj(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 qg=gj(process.env.TTHEME_BG_MARGIN);class Jg{screen;gliding;sent=new Map;placed=new Map;covered="";viewed="";bands=dl(process.env);files=hl(process.env);moves=Gy(process.env);layers=Mo(process.env);wipes=Uy(process.env);views=ts(process.env);bandFiles=new Map;nextBand=mj;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 fs({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=ug(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,s;for(let o of t){if(this.views&&o.id>=ig){s=o;continue}let a=this.bands?this.banded(o):o;if(!a)continue;if(this.wipes&&e.values().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=nf(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+=og(a.id);r+=YS(a,n),this.placed.set(a.id,c)}}for(let o of this.sent.keys())if(!i.has(o))r+=xc(o),this.sent.delete(o),this.placed.delete(o);return r+(this.views?this.backdrop(s):this.cover())}glide(){if(this.bands)this.prebake();if(this.gliding)return;let{cols:t,rows:e}=this.grid(),n=vr(t,e).height,r=()=>{let i=this.view,s=i.top*St.height,o=s-i.scroll;if(o===0||i.mode!=="grid"){i.scroll=s;let a=this.gliding!==void 0;if(this.gliding=void 0,a)this.draw();return}if(Math.abs(o)>2*n)i.scroll=s-Math.sign(o)*n,o=s-i.scroll;i.scroll+=Math.sign(o)*Math.max(1,Math.round(Math.abs(o)*hj)),this.draw(),this.gliding=setTimeout(r,dj)};r()}snap(){clearTimeout(this.gliding),this.gliding=void 0,this.view.scroll=this.view.top*St.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 ug({...t,scroll:t.top*St.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(st(this.background)).toString("base64");if(r+=`\x1B_Ga=t,f=24,s=1,v=1,i=${sa},q=2;${i}\x1B\\`,qg)r+=`\x1B_Ga=t,f=32,s=1,v=1,i=${Kc},q=2;AAAAAA==\x1B\\\x1B[H\x1B_Ga=p,i=${Kc},p=${Kc},c=1,r=1,C=1,z=${fj},q=2\x1B\\`}else if(!this.moves)r+=og(sa);if(this.covered=n,qg){let{x:i,y:s}=qg;return`${r}\x1B_Ga=p,i=${sa},p=${sa},P=${Kc},Q=${Kc},H=${-i},V=${-s},c=${t+2*i},r=${e+2*s},C=1,z=${DM},q=2\x1B\\`}return`${r}\x1B[H\x1B_Ga=p,i=${sa},p=${sa},c=${t},r=${e},C=1,z=${DM},q=2\x1B\\`}backdrop(t){let{cols:e,rows:n,cell:r}=this.grid(),i=e*r.w,s=n*r.h,o=t?`${this.background}|${t.path}|1|${i}|${s}|${i}|${s}|0|0|1`:`${this.background}||1|${i}|${s}|0|0|0|0|5`;if(o===this.viewed)return"";return this.viewed=o,es(o)}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}`,s=this.bandFiles.get(i);if(s||!r)return s;let{cell:o}=this.grid(),a=this.nextBand++,c={id:a,path:lj(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*o.h,height:n*o.h}).then(()=>{c.ready=!0,this.draw()}).catch(()=>{}),this.trimBands(),c}trimBands(){for(let[t,e]of this.bandFiles){if(this.bandFiles.size<=pj)return;if(e.ready&&!this.sent.has(e.id))this.bandFiles.delete(t),uj(e.path,{force:!0})}}}var As=[{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:qs,multi:{read:Hi}},{name:"TTHEME_FIND_BLOCK",label:"Block",about:"Posts tagged with nudity or underwear are left out — space unticks one",choices:Ti,multi:{read:Vs,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"]},...Xs()?[{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:x0,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:O0,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:Z.map((t)=>t.name),multi:{read:$a},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:Wd,multi:{read:uu,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 JM(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 ka(e).join(" ");return t.choices.find((n)=>n===e)??t.choices[0]}var xj=["fit","newest","score"];function Yg(t){return xj.find((e)=>e===t)??"fit"}var Oj={left:-1,right:1,"shift-left":-10,"shift-right":10};function YM(t){if(process.env.SSH_CONNECTION||!/^(?:https?|file):/i.test(t))return;try{let e=bj(process.platform==="darwin"?"open":"xdg-open",[t],{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}function Pj(t,e,n){if(e<0){if(t!=="fill")return Math.max(Ff,t+e);if(!n)return t;return Math.max(Ff,Math.max(100,n)+e+1)}return t==="fill"||t+e>n?"fill":t+e}function ax(t,e){return t.size===e.size&&t.at===e.at&&t.opacity===e.opacity}function Ij(t,e){if(ax(t,e))return;return{...t.size!=="fill"?{size:t.size}:{},...t.at!==e.at?{position:Jt[t.at-1]}:{},...t.opacity!==e.opacity?{opacity:t.opacity}:{}}}function VM(t,e){let n=X(t);return ke(t,e).flatMap((r,i)=>{let[,s,o]=/^([a-z.]+)_(\d+)$/.exec(r.key)??[],a=[...Z,zn].find((c)=>c.key===s);if(!a||!o)return[];return[{key:r.key,id:Number(o),ansi:a.ansi,...a===zn?{}:{page:a.pageUrl(Number(o))},up:i===0,from:Yn(n,r.original??r.fill)}]})}function Rj(t){return t.length>=2&&!/^\d+$/.test(t)&&!t.includes("://")&&!/^[\w.]+:\d+$/.test(t)}var ZM=12,Aj=4,Nj=150,Tj=300,XM=12,Hj=2,Fj=5000,Lj=150,Cj="\x1B[?5522$p\x1B]72;t=q\x1B\\\x1B[c",QM=4000,jj=8000,tx=/\.(png|jpe?g|gif|webp|heic|tiff?|bmp)$/i,_j=process.platform==="win32"?"alt+v":"ctrl+v",ex=process.platform==="darwin"?"ctrl+shift+cmd+4 copies a screenshot":"copy a picture first",Bj=1280,Gj=16,Uj=Jt.indexOf("top-right")+1,Ff=20,nx=2,rx=3,Wj=/[\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/u,Kj=8,zj=9;function Hf(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 Dc(t){if(!(t instanceof Error))return String(t);if(t instanceof AggregateError&&t.errors[0])return Dc(t.errors[0]);if(t.cause)return Dc(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 Vg(t,e){return`${t}: ${Dc(e)}`}function ix(t){return t.width*t.height}function sx(t,e){return`${t}-${ox("sha1").update(e).digest("hex").slice(0,8)}`}class Zg{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(As.map((t)=>[t.name,JM(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 Hc;showing;thumbless=new Set;current;fetch;settle;suggestTimer;suggesting;countTimer;counting;terminal;grabber=new $g((t)=>this.write(t),(t)=>void this.got(t));noticeTimer;peekTimer;peeked;twins=new Map;attaching;done;scratch=$j(Yn(vj(),"ttheme-find-"));home;manifest;entry;tagged;blurring;start;paint;kept;constructor(t,e,n,r,i){this.start=i,this.home=t,this.manifest=e,this.entry=n,this.tagged=new Set(e.palettes.flatMap((o)=>o.booru?[o.booru]:[])),this.tone=Tn(n,n.signatureSlots),this.blurring=si(t);let s={size:"fill",at:Uj,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:Yg(this.setting("TTHEME_FIND_ORDER")),solo:this.setting("TTHEME_FIND_SOLO")==="on",rating:Hi(this.setting("TTHEME_FIND_RATING")),block:Vs(this.setting("TTHEME_FIND_BLOCK")),sets:this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",narrow:this.narrowed(),enabled:$a(this.setting("TTHEME_FIND_SITES")),hide:uu(this.setting("TTHEME_FIND_HIDE")),hideTags:ka(this.setting("TTHEME_FIND_HIDE_TAGS")),advanced:!1,settings:As.map((o)=>({label:o.label,choices:[...o.choices],value:this.setting(o.name),default:JM(o,Ya(o.name)),multi:o.multi&&{none:o.multi.none},about:o.about,entry:o.entry,advanced:o.advanced,cursor:0})),colors:{cursor:n.cursor,selection:n.selection,background:n.background,foreground:n.foreground,ansi:n.ansi},tiles:[],installed:[],held:VM(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,Vt.findIndex((o)=>o.name.toLowerCase()===process.env.TTHEME_SCENE)),details:!1,tune:{...s},untuned:s,coloring:gl(t),editing:r===""?"":void 0,chips:[]},this.paint=new Jg({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:(o)=>this.write(o)}),this.kept=new Dg({home:t,manifest:e,entry:n,signal:this.signal,credited:()=>{this.show(),this.inform(),this.paint.draw()}}),this.pool=this.selected(this.view),this.syncChips(),this.board=Hf(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:Z[this.tab-1]}get sites(){return this.site?[this.site]:Z.filter((t)=>this.view.enabled.includes(t.name))}get tabName(){return this.site?.name??"all"}get tabAnsi(){return this.site?.ansi??Aj}get nextTabName(){let t=(this.tab+1)%(Z.length+1);return t===0?"all":Z[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 zd(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 Yn(ln(t),"orig",`${e}.${n}`)}previewPath(t){let{url:e}=fu(t.site,t.post);return Yn(ln(t.site),"thumb",`${sx(t.post.id,e)}.${Ur(e)}`)}tileOf(t,e){let{site:n,post:r}=t,i=ee(n,r.id),s=un(r)??r;return{id:r.id,key:i,site:n.name,siteAnsi:n.ansi,width:s.width,height:s.height,reduced:s!==r,page:n===zn?"":n.pageUrl(r.id),artist:n===zn?$E(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&&df(e);return bi({modes:[yr,...gi()],assume:[Wn,pi],burst:t},async(e)=>{this.terminal=e,e.onResize(this.onResize),e.listen((i)=>{for(let s of i)this.inbound(s);this.paint.soon()}),e.write(ns);let n=new Promise((i)=>{this.done=i}),r=setInterval(this.onClock,250);setTimeout(Tu,0);try{let i=new mc,s=await e.ask(zl,(o)=>i.see(o),1000);if(s){if(this.cell=s,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(Cj,(o)=>o.kind==="attributes"?!0:void 0,500,!1);if(this.grabber.start(),e.hold(PS),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\\${ns}`),this.kept.save(),this.renders.close(),Tf(this.scratch,{recursive:!0,force:!0}),G0()}})}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!lu(e,this.site??Z[0]);return Xo(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 — ${ex}`);return}this.pasted(t.text);return}await this.bring(()=>lf(t.bytes,t.source))}notice(t,e=QM){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 EE()}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 · ${_j} uses it`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{t.hint=void 0,this.paint.draw()},jj),this.paint.draw()}async fromClipboard(){let t=this.view;if(wg()){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 SE(Yn(this.scratch,`clipboard-${Date.now()}.png`))}catch(r){this.notice(`Could not read the clipboard: ${Dc(r)}`);return}if(clearTimeout(this.peekTimer),t.hint=void 0,"image"in e){await this.bring(async(r)=>({...await bg(e.image,r),source:"clipboard"}));return}let n=e.text.trim();if(!n){this.notice(`No picture on the clipboard — ${ex}`);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=lu(e,this.site??Z[0]);if(i){await this.jump(i.site,i.id);return}}let[n,...r]=Xo(e).sort((i,s)=>Number(!tx.test(i))-Number(!tx.test(s)));if(!n){this.notice("Nothing to use in that — drop a picture, or paste one or its link");return}await this.bring((i)=>bg(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(d){if(!r.signal.aborted)n.note=void 0,this.notice(Dc(d),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 s=yE(i.bytes);kE(s,i.source);let o=this.origPath(zn,s,i.ext);C(o,i.bytes);let a=qM(o).href,c={id:s,file:a,width:i.width,height:i.height,ext:i.ext,preview:a,owner:"",score:0,rating:"s",md5:ox("md5").update(i.bytes).digest("hex"),source:i.source,tags:[],named:{artist:[],character:[],copyright:[]},solo:void 0,family:0,smaller:[]},u={site:zn,post:c},f=this.previewPath(u);C(f,i.bytes),++this.gen,this.current=void 0,n.shown=void 0;let l=Hf(`local|post:${s}`,!1);this.board=l,this.boards.set(l.key,l),this.single(l,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)=>An(i)>An(r)?i:r),e=Math.ceil((An(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<$s.cols||this.rows<$s.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)YM(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*vr(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 s=Math.max(100,r.fill),o=Ff+Math.round(i*(s-Ff+1));n.tune.size=i===1||r.fill>0&&o>=r.fill?"fill":Math.min(s,o)}else n.tune.opacity=Math.round(i*100)/100;this.retune()}gridKey(t){let e=this.view,{perRow:n,rowsVis:r}=vr(this.cols,this.rows),s={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(s!==void 0){this.focus(e.focus+s);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 o=Z.length+1;this.tab=(this.tab+(t==="tab"?1:o-1))%o,this.syncSite(),this.turn();return}if(t==="/"){e.editing="",this.paint.draw();return}if(t===" "){this.unfold();return}if(t==="o"||t==="O"){this.openPage(t==="O");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=Mc(e);if(t==="up"||t==="down"){let s=i.indexOf(n)+(t==="up"?-1:1);e.panel=i[(s+i.length)%i.length]??n,this.paint.draw();return}if(t==="a"||t==="enter"&&n===e.settings.length){e.advanced=!e.advanced,e.panel=Mc(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 s=t==="left"?-1:1;if(r.multi)r.cursor=(r.cursor+s+r.choices.length)%r.choices.length;else r.value=tE(r.choices,r.value,s),this.recount();this.paint.draw();return}if(t===" "&&r?.multi){let s=r.value.split(" "),o=r.choices.filter((c,u)=>u===r.cursor?!s.includes(c):s.includes(c)),a=r.multi.none;if(o.length>0||a!==void 0)r.value=o.length>0?o.join(" "):a,this.recount(),this.paint.draw();return}if(t==="esc"){e.settings.forEach((s,o)=>{s.value=this.setting(As[o]?.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":ka(r).join(" "),n.typing=void 0,this.recount(),e==="enter"){this.paint.draw();return}this.panelKey(e);return}let i=ms(r,e,(s)=>t.entry==="number"?/^[0-9]$/.test(s)&&r.length<cg:/^[\x20-\x7e]$/.test(s));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),Tj)}pending(){let t=(e)=>this.view.settings[As.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:Yg(t("TTHEME_FIND_ORDER")),rating:Hi(t("TTHEME_FIND_RATING")),narrow:zd(t("TTHEME_FIND_MIN_SCORE"),t("TTHEME_FIND_MIN_SIZE"),t("TTHEME_FIND_PNG")),enabled:$a(t("TTHEME_FIND_SITES"))}}async countPending(t){let e=this.pending(),n=this.site?[this.site]:Z.filter((s)=>e.enabled.includes(s.name)),r=AbortSignal.any([this.signal,t.signal]),i=await Promise.all(n.map(async(s)=>{let o=this.query(s,e);if(!o)return{site:s.name,count:0};if(s.counts&&!s.counts(o.tags))return{site:s.name};try{let a=await Yd(s,o.tags,r);return{site:s.name,...Number.isFinite(a)?{count:a}:{}}}catch{return{site:s.name}}}));if(this.counting===t&&this.view.panel!==void 0)this.view.counts=i,this.paint.draw()}adopt(){let t=this.view,e=As.map((r)=>this.setting(r.name));t.settings.forEach((r,i)=>{let s=As[i];if(s)this.values.set(s.name,r.value)});let n=As.filter((r,i)=>this.setting(r.name)!==e[i]);if(n.length===0){this.paint.draw();return}this.save(n),t.rating=Hi(this.setting("TTHEME_FIND_RATING")),t.block=Vs(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=Yg(this.setting("TTHEME_FIND_ORDER")),t.solo=this.setting("TTHEME_FIND_SOLO")==="on",t.narrow=this.narrowed(),t.enabled=$a(this.setting("TTHEME_FIND_SITES")),t.hide=uu(this.setting("TTHEME_FIND_HIDE")),t.hideTags=ka(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=Yn(this.home,"ttheme","config.zsh");try{let n=zc(e)?kj(e,"utf8"):"";return C(e,t.reduce((r,[i,s])=>bl(r,i,s),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 o=((e.pick??r.length)+(t==="down"?1:r.length))%(r.length+1);e.pick=o===r.length?void 0:o,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 s=e.pick===void 0?void 0:r[e.pick],o=s?s.whole?s.value:n.replace(/\S*$/,s.value):n;if(e.editing=void 0,e.suggest=void 0,e.pick=void 0,o.trim()){this.commit(o.trim());return}if(e.tag===""){this.finish(2);return}this.paint.draw();return}let i=ms(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=Rj(n),i=ek(e,rx,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 s=r?Ck(this.manifest.palettes,this.entry,n).map((c)=>({value:c.booru,count:0,palette:c.name})):[],o=[...new Map([...s.slice(0,rx),...i].map((c)=>[c.value,c])).values()];if(t.suggest=o.length>0?o:void 0,i.length>0&&Wj.test(e))t.pick=o.findIndex((c)=>("whole"in c));if(!r)return;let a=new AbortController;this.suggesting=a,this.suggestTimer=setTimeout(async()=>{try{let c=await K0(n,AbortSignal.any([this.signal,a.signal]));if(this.suggesting===a&&t.editing!==void 0){let u=new Map(c.map((l)=>[l.value,l.count])),f=new Set(o.map((l)=>l.value));t.suggest=[...o.map((l)=>({...l,count:u.get(l.value)??0})),...c.filter((l)=>!f.has(l.value))].slice(0,Kj),t.pick=t.pick!==void 0&&t.pick<o.length?t.pick:void 0,this.paint.draw()}}catch{}},Nj)}async commit(t){let e=lu(t,this.site??Z[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=Z.indexOf(t)+1,this.syncSite(),this.current=void 0,this.view.shown=void 0,this.view.error=void 0;let r=Hf(`${t.key}|post:${e}`,!0);this.board=r,this.boards.set(r.key,r),this.show(),this.paint.draw();try{let i=await Fi(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,this.thumbQueue.push(...n.posts.filter((i)=>!this.thumbPath.has(ee(i.site,i.post.id)))),this.thumbs(),this.show(),this.scroll(),this.paint.glide(),this.paint.draw();return}e+=r}}openPage(t){let e=this.view.tiles[this.view.focus],n=e&&this.posts.get(e.key);if(!n)return;let r=Li(n.post.source),i=n.site===zn?"":n.site.pageUrl(n.post.id),s=!t&&/^https?:\/\//i.test(r)?r:i;if(s)YM(s)}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"||t==="O"){this.openPage(t==="O");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=Oj[t];if(i!==void 0){if(n.field===0)r.size=Pj(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 s=e.untuned;if(n.field===0)r.size=s.size;else if(n.field===1)r.at=s.at;else r.opacity=s.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=_0(e,n),s=new Set([...r.artist,...r.character,...r.copyright]),o=Li(n.source),a=/^https?:\/\//i.test(o)?o:e===zn&&o.startsWith("/")?qM(o).href:void 0;return{page:e===zn?"":e.pageUrl(n.id),source:o,...a?{link:a}:{},artists:r.artist,profiles:Object.fromEntries(Object.entries(this.kept.links(r.artist)).map(([c,u])=>[c,xa(u)])),characters:r.character,series:r.copyright,tags:n.tags.filter((c)=>!s.has(c)),...i?{rating:i}:{},...n.posted?{posted:n.posted}:{},ext:(un(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}=vr(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.manifest.palettes.find((r)=>r.booru===t);return n?jk(n,e):[t]}syncChips(){let t=this.selected(this.view);this.view.chips=this.pool.slice(0,zj).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((s)=>s!==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 z0(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?D0(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,s=e.preset==="cutouts"?t.cutouts:"",o=i&&s.includes("~"),a=[i?n.map((f)=>`~${f}`).join(" "):n[0],t.rate(e.rating),...t.narrow(e.narrow),o?"":s,e.order==="score"?t.best:""].filter(Boolean),c=[],u=[];for(let f of a)if(Jd([...c,f].join(" "))<=t.tagBudget)c.push(f);else u.push(f);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`]:[],...o?[`${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=Hf(this.boardKey,!0);this.board=e,this.boards.set(e.key,e),this.view.error=void 0;let n=this.sites.flatMap((s)=>{let o=this.query(s);return o?[{site:s,...o}]:[]}),r=this.sites.filter((s)=>!n.some((o)=>o.site===s)),i=[...n.flatMap(({notes:s})=>s),...r.length>0?[`${this.entry.name} has no tag on ${r.map((s)=>s.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 s=await Promise.all(n.map(async(o)=>({plan:o,owners:await this.kept.mateOwners(o.site)})));if(t!==this.gen)return;e.sources=s.flatMap(({plan:{site:o,tags:a},owners:c})=>{let u=Jd(a)+1<=o.tagBudget?o.uploadedBy:void 0;return[...u?c.keys().map((f)=>({site:o,tags:`${a} ${u(f)}`,page:0,done:!1})):[],{site:o,tags:a,page:0,done:!1}]}),this.show(),this.paint.draw(),await this.pump()}catch(s){this.fail(t,s)}}async tally(t,e,n){let r=await Promise.allSettled(n.map(({site:i,tags:s})=>Yd(i,s,this.signal)));if(t===this.gen)e.total=r.reduce((i,s)=>i+(s.status==="fulfilled"&&Number.isFinite(s.value)?s.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=Vg(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,Vg(e.name,n)].filter(Boolean).join(" · ")}wants(){let{perRow:t,rowsVis:e}=vr(this.cols,this.rows);return this.view.tiles.length<(this.board.top+e+nx)*t}need(){let{perRow:t,rowsVis:e}=vr(this.cols,this.rows);return(e+nx)*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=U0(t,e,n,this.signal).then((s)=>this.borrow(t,s)),this.pages.set(r,i),i.catch(()=>this.pages.delete(r));return i}async borrow(t,e){let n=t===Pt?[]:e.filter((r)=>r.md5!=="");if(n.length>0)try{Sa(n,await Ea(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=Z.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<Rn;let u=t.last.get(a);for(let f of c){let l=u&&ZE(u.post,f)?u.set:`set:${a.site.key}:${f.id}`;u={post:f,set:l};let d=ee(a.site,f.id);if(t.seen.has(d))continue;t.seen.add(d);let h={site:a.site,post:f};if(this.eligible(h))t.kin.set(h,[l,...VE(a.site,f)]),r.push(h);else t.checked++}if(u)t.last.set(a,u)}let i=this.dedupe(t,r),s=++t.rounds,o;if(this.view.order!=="fit")o=e.length>1?BE(i):i;else{let a=mf(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;o=[...mf(c,this.frame(),this.matched),...a.slice(c.length)]}t.stage="check",this.staged(t);for(let a of o)t.roundOf.set(a,s);t.queue.push(...o),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,s)=>t.roundOf.get(i)===e?[s]:[]),r=mf(n.map((i)=>t.queue[i]),this.frame(),this.matched);n.forEach((i,s)=>{t.queue[i]=r[s]})}dedupe(t,e){let n=[];for(let r of e){let i=Tg(r.post),s=i.map((a)=>t.same.get(a)).find(Boolean);if(!s){for(let a of i)t.same.set(a,r);n.push(r);continue}if(t.checked++,ix(r.post)<=ix(s.post))continue;for(let a of[...i,...Tg(s.post)])t.same.set(a,r);let o=n.indexOf(s);if(o>=0){n[o]=r;continue}this.replace(t,s,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 s=i.posts.indexOf(e);if(s>=0){i.posts[s]=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:XM},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=fu(t.site,t.post);await this.kept.cached(i.site,r,i.url);let s=await this.renders.run({job:"match",from:r,colors:this.entry.signature});return this.looked.set(e,s),this.matched.set(t.post,s.match),s})().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<ZM&&e.queue.length>0&&this.wants()){let o=e.queue.shift();n.push({pick:o,passed:this.vet(o)})}if(this.ahead(e),!r&&e.queue.length<ZM&&e.sources.some((o)=>!o.done)&&this.wants()){let o=this.round(e).then(()=>{if(r===o)r=void 0});o.catch(()=>{}),r=o}let i=n.shift();if(!i){if(!r)break;await r,this.show(),this.paint.draw();continue}let s=await i.passed;if(t!==this.gen)return;if(e.checked++,s)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=un(e);if(!hu(t,e,this.view.rating)||du(e,this.view.block).length>0||!n)return!1;if(this.view.solo&&e.solo===!1)return!1;let{score:r,size:i,png:s}=this.view.narrow;if(Math.min(e.width,e.height)<i||t.scored&&e.score<r||s&&e.ext!=="png"||j0(e,this.view.hide).length>0||this.view.hideTags.some((o)=>e.tags.includes(o)))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 s=r.kin.get(t)??[],o=this.looked.get(i),a=o&&{hash:o.hash,width:n.width,height:n.height},c=this.view.sets==="fold"?this.kindred(r,s,a):void 0;if(c){if(c.posts.push(t),this.register(r,c,s,a),c.open)this.thumbQueue.push(t),this.thumbs();return}let u={posts:[t],open:!1};r.groups.push(u),this.register(r,u,s,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)=>QE(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=VM(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=Pe.cols*this.cell.w,e=Pe.rows*this.cell.h;if(t===0||e===0)return;for(let n of this.view.held.slice(0,sg(this.cols))){if(n.thumb||this.heldAsked.has(n.from))continue;this.heldAsked.add(n.from);let r=Yn(this.scratch,`held-${Sj(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<XM&&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=St.cols*this.cell.w,i=St.rows*this.cell.h,s=fu(e,n),o=Yn(ln(e),"tile",`${sx(n.id,s.url)}-${r}x${i}.png`);if(!zc(o)){let a=this.previewPath(t);if(await this.kept.cached(s.site,a,s.url),this.signal.aborted)return;await this.renders.run({job:"thumb",from:a,to:o,width:r,height:i})}this.thumbPath.set(ee(e,n.id),o),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),Lj),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.profile(n,r.signal),!un(n.post))return;let{site:i}=n,s=this.board,o;try{await Ma(i,n.post,r.signal);let c=un(n.post),u=this.origPath(i,t.id,c.ext);if(!zc(u))e.fetching={id:t.key,got:0,size:0},this.paint.draw();let f=Kr(i,n.post,c),l=await this.kept.cached(f.site,u,f.url,(m,p)=>{if(e.fetching?.id===t.key)e.fetching={id:t.key,got:m,size:p},this.paint.draw()});if(r.signal.aborted)return;if(e.fetching=void 0,s!==this.board)return;let d={site:i,id:t.id,key:t.key,path:u,ext:c.ext,size:l,using:"plain",failed:!1};e.preparing=t.key,this.paint.flush();let h=await this.render(d,"plain");if(r.signal.aborted||s!==this.board)return;if(o=h.clear===0?await this.twinOf(n,u,r.signal):void 0,o||r.signal.aborted||s!==this.board)return;if(h.clear===0&&Xs()&&this.setting("TTHEME_FIND_REMOVE_BG")!=="off"){if(e.preparing=void 0,e.cutting=t.key,this.paint.flush(),d.cut=await this.cutOut(i,t.id,u,r.signal),r.signal.aborted||s!==this.board)return;if(e.cutting=void 0,d.cut){e.preparing=t.key,this.paint.flush();let m=await this.render(d,"cut").catch(()=>{return});if(r.signal.aborted||s!==this.board)return;if(m&&wu(m.clear))d.using="cut";else Tf(d.cut,{force:!0}),d.cut=void 0,d.failed=!0}else d.failed=!0}if(this.current=d,e.tiles[e.focus]?.key===t.key)await this.present();this.preload()}catch(c){if(!r.signal.aborted&&!this.signal.aborted)e.error=Vg(i.name,c)}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()}let a=o&&s===this.board?this.swapIn(o):void 0;if(a)await this.load(a)}async twinOf(t,e,n){let r=this.view,i=this.board.groups.find((s)=>!s.open&&s.posts[0]===t);for(let s of i?.posts.slice(1)??[]){let o=ee(s.site,s.post.id),a=`${ee(t.site,t.post.id)}>${o}`;if(this.twins.get(a)===!1||!await this.kept.transparent(s.site,s.post))continue;let c=un(s.post);if(n.aborted||c?.ext!=="png")continue;try{let u=this.origPath(s.site,s.post.id,c.ext),f=Kr(s.site,s.post,c);r.fetching={id:o,got:0,size:0},await this.kept.cached(f.site,u,f.url,(d,h)=>{if(r.fetching?.id===o)r.fetching={id:o,got:d,size:h},this.paint.draw()}),r.fetching=void 0,r.preparing=o,this.paint.flush();let l=this.twins.get(a)??await this.renders.run({job:"twin",cut:u,whole:e});if(this.twins.set(a,l),l&&i?.posts.includes(s)&&!n.aborted)return i.posts.splice(i.posts.indexOf(s),1),i.posts.unshift(s),s}catch{this.twins.set(a,!1)}finally{if(r.fetching?.id===o)r.fetching=void 0;if(r.preparing===o)r.preparing=void 0}}return}swapIn(t){let e=this.view,n=ee(t.site,t.post.id);if(!this.thumbPath.has(n))this.thumbQueue.push(t),this.thumbs();this.show(),this.inform();let r=e.tiles[e.focus];if(r?.key!==n)return;return e.hint=`Trying ${t.site.name} ${t.post.id}, the same picture with a transparent background`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{e.hint=void 0,this.paint.draw()},QM),this.paint.draw(),r}async cutOut(t,e,n,r){let i=Yn(ln(t),"cut",`${e}.png`);if(zc(i))return i;try{return wj(Ej(i),{recursive:!0}),await Pa(n,i,r),i}catch{Tf(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.profile(r,this.signal);if(this.prefetching>=Hj||!r||!un(r.post))continue;let{site:i,post:s}=r;this.prefetching++,Ma(i,s,this.signal).then(async()=>{let o=un(s),a=this.origPath(i,s.id,o.ext),c=Kr(i,s,o);return await this.kept.cached(c.site,a,c.url),this.render({site:i,id:s.id,key:n.key,path:a,ext:o.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,Bj),s=Math.max(1,Math.round(r*i/n)),o={...this.view.tune},{coloring:a}=this.view,c=!ax(o,this.view.untuned),u=o.opacity!==this.view.untuned.opacity,f=c?`-${o.size}-${o.at}${u?`-${Math.round(o.opacity*100)}`:""}`:"",l=Yn(this.scratch,`${t.site.key}-${t.id}${e==="cut"?"c":""}${a==="original"?"o":""}-${i}x${s}${f}.png`),d=`${t.site.key}:${t.id}:${e}:${a}:${i}x${s}`,h=this.clarity.get(d);if(h&&zc(l))return t.fill=h.fill,{clear:h.clear,path:l,opacity:h.opacity,touched:u};let m=await this.renders.run({job:"show",from:e==="cut"?t.cut:t.path,cut:e==="cut",to:l,width:i,height:s,colors:this.entry,tone:this.tone,blur:this.blurring*i/mh(n,r).width,coloring:a,...c?{tune:{size:o.size,at:o.at,...u?{opacity:o.opacity}:{}}}:{}});if(this.clarity.set(d,m),t.fill=m.fill,c)this.keepTuned(l);return{clear:m.clear,path:l,opacity:m.opacity,touched:u}}keepTuned(t){this.tunedFiles.push(t);while(this.tunedFiles.length>Gj){let e=this.tunedFiles.findIndex((n)=>n!==this.view.shown?.path&&n!==t);if(e===-1)return;Tf(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:s,opacity:o,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=o,this.view.tune.opacity=o;if(this.view.tuning&&t.fill)this.view.tuning.fill=t.fill;this.view.shown={id:t.key,clear:i,bytes:t.size,path:s,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=Ij(t.tune,t.untuned),i=this.posts.get(n.key),s=i?.post;if(i)await Promise.race([this.kept.profile(i,this.signal),Mj(Fj,void 0,{ref:!1})]);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:s?.named.artist??[],profiles:this.kept.links(s?.named.artist??[]),source:Li(s?.source??"")},width:this.cols*this.cell.w,height:this.rows*this.cell.h,blur:this.blurring,coloring:t.coloring,...r?{tune:r,aligns:us(D(this.home).terminals),user:yj()}:{}}),this.kept.owned(n.site,n.id,s?.owner??""),Ge(this.home),this.holds();let{size:o,at:a,opacity:c}=t.tune,u=r?` · ${o==="fill"?"fill":`${o}%`} · ${Jt[a-1]} · ${c.toFixed(2)}`:"",f=s?.named.artist.length?`${s.named.artist.join(", ")} · `:"";t.saved={text:`Background · ${this.entry.name} ← ${f}${n.site.name} ${n.id}${u}`,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 cx(t,e,n){let r=new Zg(t,ve(t),e,e.booru??"",n);if(await r.run(),ts(process.env))process.stdout.write(es(""));return{saved:r.saved,installs:r.installs}}async function ux(t){let e=J(),n=ve(e),r=Ln(n.palettes,t);if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error("needs a terminal");let i=new Zg(e,n,r,r.booru??""),s=await i.run();if(i.saved&&s!==0)return process.stderr.write(`${i.saved}
730
+ `),0;return s}var Ns=((t)=>{return t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t})(Ns||{}),Dj=[0,1],fx=[1,0],dx=[2,3],hx=[3,2],qj={L:Dj,M:fx,Q:dx,H:hx},Jj=/^\d*$/,Yj=/^[A-Z0-9 $%*+./:-]*$/,Xg="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",eb=1,nb=40,lx=3,Vj=3,Lf=40,Zj=10,mx=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],px=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class gx{constructor(t,e,n,r){if(this.version=t,this.ecc=e,t<eb||t>nb)throw RangeError("Version value out of range");if(r<-1||r>7)throw RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let o=0;o<this.size;o++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(n);if(this.drawCodewords(s),r===-1){let o=1e9;for(let a=0;a<8;a++){this.applyMask(a),this.drawFormatBits(a);let c=this.getPenaltyScore();if(c<o)r=a,o=c;this.applyMask(a)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(t,e){return t>=0&&t<this.size&&e>=0&&e<this.size&&this.modules[e][t]}drawFunctionPatterns(){for(let n=0;n<this.size;n++)this.setFunctionModule(6,n,n%2===0,Ns.Timing),this.setFunctionModule(n,6,n%2===0,Ns.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),e=t.length;for(let n=0;n<e;n++)for(let r=0;r<e;r++)if(!(n===0&&r===0||n===0&&r===e-1||n===e-1&&r===0))this.drawAlignmentPattern(t[n],t[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let e=this.ecc[1]<<3|t,n=e;for(let i=0;i<10;i++)n=n<<1^(n>>>9)*1335;let r=(e<<10|n)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,Or(r,i));this.setFunctionModule(8,7,Or(r,6)),this.setFunctionModule(8,8,Or(r,7)),this.setFunctionModule(7,8,Or(r,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,Or(r,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,Or(r,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,Or(r,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let n=0;n<12;n++)t=t<<1^(t>>>11)*7973;let e=this.version<<12|t;for(let n=0;n<18;n++){let r=Or(e,n),i=this.size-11+n%3,s=Math.floor(n/3);this.setFunctionModule(i,s,r),this.setFunctionModule(s,i,r)}}drawFinderPattern(t,e){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),s=t+r,o=e+n;if(s>=0&&s<this.size&&o>=0&&o<this.size)this.setFunctionModule(s,o,i!==2&&i!==4,Ns.Position)}}drawAlignmentPattern(t,e){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(t+r,e+n,Math.max(Math.abs(r),Math.abs(n))!==1,Ns.Alignment)}setFunctionModule(t,e,n,r=Ns.Function){this.modules[e][t]=n,this.types[e][t]=r}addEccAndInterleave(t){let e=this.version,n=this.ecc;if(t.length!==Cf(e,n))throw RangeError("Invalid argument");let r=px[n[0]][e],i=mx[n[0]][e],s=Math.floor(Qg(e)/8),o=r-s%r,a=Math.floor(s/r),c=[],u=o6(i);for(let l=0,d=0;l<r;l++){let h=t.slice(d,d+a-i+(l<o?0:1));d+=h.length;let m=a6(h,u);if(l<o)h.push(0);c.push(h.concat(m))}let f=[];for(let l=0;l<c[0].length;l++)c.forEach((d,h)=>{if(l!==a-i||h>=o)f.push(d[l])});return f}drawCodewords(t){if(t.length!==Math.floor(Qg(this.version)/8))throw RangeError("Invalid argument");let e=0;for(let n=this.size-1;n>=1;n-=2){if(n===6)n=5;for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let s=n-i,a=(n+1&2)===0?this.size-1-r:r;if(!this.types[a][s]&&e<t.length*8)this.modules[a][s]=Or(t[e>>>3],7-(e&7)),e++}}}applyMask(t){if(t<0||t>7)throw RangeError("Mask value out of range");for(let e=0;e<this.size;e++)for(let n=0;n<this.size;n++){let r;switch(t){case 0:r=(n+e)%2===0;break;case 1:r=e%2===0;break;case 2:r=n%3===0;break;case 3:r=(n+e)%3===0;break;case 4:r=(Math.floor(n/3)+Math.floor(e/2))%2===0;break;case 5:r=n*e%2+n*e%3===0;break;case 6:r=(n*e%2+n*e%3)%2===0;break;case 7:r=((n+e)%2+n*e%3)%2===0;break;default:throw Error("Unreachable")}if(!this.types[e][n]&&r)this.modules[e][n]=!this.modules[e][n]}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,o=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[i][c]===s){if(o++,o===5)t+=lx;else if(o>5)t++}else{if(this.finderPenaltyAddHistory(o,a),!s)t+=this.finderPenaltyCountPatterns(a)*Lf;s=this.modules[i][c],o=1}t+=this.finderPenaltyTerminateAndCount(s,o,a)*Lf}for(let i=0;i<this.size;i++){let s=!1,o=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[c][i]===s){if(o++,o===5)t+=lx;else if(o>5)t++}else{if(this.finderPenaltyAddHistory(o,a),!s)t+=this.finderPenaltyCountPatterns(a)*Lf;s=this.modules[c][i],o=1}t+=this.finderPenaltyTerminateAndCount(s,o,a)*Lf}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let o=this.modules[i][s];if(o===this.modules[i][s+1]&&o===this.modules[i+1][s]&&o===this.modules[i+1][s+1])t+=Vj}let e=0;for(let i of this.modules)e=i.reduce((s,o)=>s+(o?1:0),e);let n=this.size*this.size,r=Math.ceil(Math.abs(e*20-n*10)/n)-1;return t+=r*Zj,t}getAlignmentPatternPositions(){if(this.version===1)return[];else{let t=Math.floor(this.version/7)+2,e=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,n=[6];for(let r=this.size-7;n.length<t;r-=e)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(t){let e=t[1],n=e>0&&t[2]===e&&t[3]===e*3&&t[4]===e&&t[5]===e;return(n&&t[0]>=e*4&&t[6]>=e?1:0)+(n&&t[6]>=e*4&&t[0]>=e?1:0)}finderPenaltyTerminateAndCount(t,e,n){if(t)this.finderPenaltyAddHistory(e,n),e=0;return e+=this.size,this.finderPenaltyAddHistory(e,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(t,e){if(e[0]===0)t+=this.size;e.pop(),e.unshift(t)}}function Pr(t,e,n){if(e<0||e>31||t>>>e!==0)throw RangeError("Value out of range");for(let r=e-1;r>=0;r--)n.push(t>>>r&1)}function Or(t,e){return(t>>>e&1)!==0}class jf{constructor(t,e,n){if(this.mode=t,this.numChars=e,this.bitData=n,e<0)throw RangeError("Invalid argument");this.bitData=n.slice()}getData(){return this.bitData.slice()}}var Xj=[1,10,12,14],Qj=[2,9,11,13],t6=[4,8,16,16];function bx(t,e){return t[Math.floor((e+7)/17)+1]}function wx(t){let e=[];for(let n of t)Pr(n,8,e);return new jf(t6,t.length,e)}function e6(t){if(!$x(t))throw RangeError("String contains non-numeric characters");let e=[];for(let n=0;n<t.length;){let r=Math.min(t.length-n,3);Pr(Number.parseInt(t.substring(n,n+r),10),r*3+1,e),n+=r}return new jf(Xj,t.length,e)}function n6(t){if(!kx(t))throw RangeError("String contains unencodable characters in alphanumeric mode");let e=[],n;for(n=0;n+2<=t.length;n+=2){let r=Xg.indexOf(t.charAt(n))*45;r+=Xg.indexOf(t.charAt(n+1)),Pr(r,11,e)}if(n<t.length)Pr(Xg.indexOf(t.charAt(n)),6,e);return new jf(Qj,t.length,e)}function r6(t){if(t==="")return[];else if($x(t))return[e6(t)];else if(kx(t))return[n6(t)];else return[wx(s6(t))]}function $x(t){return Jj.test(t)}function kx(t){return Yj.test(t)}function i6(t,e){let n=0;for(let r of t){let i=bx(r.mode,e);if(r.numChars>=1<<i)return Number.POSITIVE_INFINITY;n+=4+i+r.bitData.length}return n}function s6(t){t=encodeURI(t);let e=[];for(let n=0;n<t.length;n++)if(t.charAt(n)!=="%")e.push(t.charCodeAt(n));else e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2;return e}function Qg(t){if(t<eb||t>nb)throw RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let n=Math.floor(t/7)+2;if(e-=(25*n-10)*n-55,t>=7)e-=36}return e}function Cf(t,e){return Math.floor(Qg(t)/8)-mx[e[0]][t]*px[e[0]][t]}function o6(t){if(t<1||t>255)throw RangeError("Degree out of range");let e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let n=1;for(let r=0;r<t;r++){for(let i=0;i<e.length;i++)if(e[i]=tb(e[i],n),i+1<e.length)e[i]^=e[i+1];n=tb(n,2)}return e}function a6(t,e){let n=e.map((r)=>0);for(let r of t){let i=r^n.shift();n.push(0),e.forEach((s,o)=>n[o]^=tb(s,i))}return n}function tb(t,e){if(t>>>8!==0||e>>>8!==0)throw RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(e>>>r&1)*t;return n}function c6(t,e,n=1,r=40,i=-1,s=!0){if(!(eb<=n&&n<=r&&r<=nb)||i<-1||i>7)throw RangeError("Invalid value");let o,a;for(o=n;;o++){let l=Cf(o,e)*8,d=i6(t,o);if(d<=l){a=d;break}if(o>=r)throw RangeError("Data too long")}for(let l of[fx,dx,hx])if(s&&a<=Cf(o,l)*8)e=l;let c=[];for(let l of t){Pr(l.mode[0],4,c),Pr(l.numChars,bx(l.mode,o),c);for(let d of l.getData())c.push(d)}let u=Cf(o,e)*8;Pr(0,Math.min(4,u-c.length),c),Pr(0,(8-c.length%8)%8,c);for(let l=236;c.length<u;l^=253)Pr(l,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((l,d)=>f[d>>>3]|=l<<7-(d&7)),new gx(o,e,f,i)}function yx(t,e){let{ecc:n="L",boostEcc:r=!1,minVersion:i=1,maxVersion:s=40,maskPattern:o=-1,border:a=1}=e||{},c=typeof t==="string"?r6(t):Array.isArray(t)?[wx(t)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);let u=c6(c,qj[n],i,s,o,r),f=u6({version:u.version,maskPattern:u.mask,size:u.size,data:u.modules,types:u.types},a);if(e?.invert)f.data=f.data.map((l)=>l.map((d)=>!d));return e?.onEncoded?.(f),f}function u6(t,e=1){if(!e)return t;let{size:n}=t,r=n+e*2;t.size=r,t.data.forEach((s)=>{for(let o=0;o<e;o++)s.unshift(!1),s.push(!1)});for(let s=0;s<e;s++)t.data.unshift(Array.from({length:r},(o)=>!1)),t.data.push(Array.from({length:r},(o)=>!1));let i=Ns.Border;t.types.forEach((s)=>{for(let o=0;o<e;o++)s.unshift(i),s.push(i)});for(let s=0;s<e;s++)t.types.unshift(Array.from({length:r},(o)=>i)),t.types.push(Array.from({length:r},(o)=>i));return t}var l6=Yk(16,231),f6=[" ","▀","▄","█"],d6=2953;function vx(t){if(Buffer.byteLength(t)>d6)return;let{data:e}=yx(t,{border:2,boostEcc:!0}),n=[];for(let r=0;r<e.length;r+=2){let i=e[r]??[],s=e[r+1]??[];n.push(`${l6}${i.map((o,a)=>f6[(o?1:0)+(s[a]?2:0)]).join("")}${Se}`)}return n}var h6=50;function m6(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi}}function p6(t,e,n){for(let r of n){let i=t-4-r.length;if(i>e.length+2)return[[2,e],[i,` ${r} `]]}return[[2,e]]}function Sx(t,e,n,r=h6){let i=Ce(n),s=rn(m6(e)),o=Mk(t).map((m)=>m.toLowerCase()),a=Og(s,e.signatureSlots,e.waived??[]),c=nr(Er(s,e.signatureSlots,e.waived??[])).length,u=(m)=>s[m]?.toLowerCase()!==o[m],f=s.filter((m,p)=>u(p)).length,l=(m)=>{let p=s[m],b=e.signatureSlots.includes(qn[m])?I.signature:n?I.swatch:" ",$=n?`${i.fg(p)}${b}${$t}`:b,k=a.has(m)?i.bold(I.miss):u(m)?i.warn(I.on):" ";return` ${$} ${Sf(Ot(p))}${k}`},d=c===0?"passes the gate":`${c} ${c===1?"miss":"misses"} in the gate`,h=f>0?[`${f} tuned · ${d}`,d]:[d];return[i.dim(Bt(r,"top",p6(r," Palette ",h))),...F.map((m,p)=>Ze(i,` ${m.padEnd(10)}${l(p)}`,r)),i.dim(Bt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])),...vn.map((m,p)=>Ze(i,` ${m.padEnd(10)}${l(F.length+p)}${l(F.length+8+p)}`,r)),i.dim(Bt(r,"bottom"))]}function oa(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}async function ib(){let t=process.env.TTHEME_WORN;if(!t||!oa())return;let e=await _e({message:`Use ${t}, the palette this tab wears?`});if(ie(e)||!e)throw new be;return t}async function xx(t){let e=process.env.TTHEME_WORN;if(!e)return;if(!oa())return console.error(`Sharing ${e}, the palette this tab wears`),{name:e,...t?{tone:t}:{}};if(t!==void 0||Kt(J())[e]===void 0)return await ib(),{name:e,...t?{tone:t}:{}};let n=await gm({message:`Share ${e}, the palette this tab wears?`,options:[{value:"tuned",label:"Your tone",hint:`named ${qc(e)}`},{value:"original",label:"The original"},{value:"no",label:"No"}]});if(ie(n)||n==="no")throw new be;return{name:e,tone:n}}function Ox(t,e){if(t.includes("/"))return t;let n=Ji(e,!1),r=n.filter((s)=>go(s.dir).some((o)=>o.slug===t)),[i]=r.length===1?r:n.length===1?n:[];return i?`${i.id}/${t}`:t}function w6(t,e,n){let r=D(t),i=n.filter((s)=>!r.palettes.includes(s));if(i.length>0)en(t,e,r,{...r,palettes:[...r.palettes,...i]});else if(n.some((s)=>r.palettes.includes(s)))Dt(t,e,r);return{state:r,fresh:i}}function $6(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 Ex(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi])}function Px(t,e,n){let r=yk(e,n.palettes),i=dr(t,n,!1).palettes.find((s)=>s.name===r.name);if(i&&Ex(i)!==Ex(r))throw Error(`${r.name} is already in ${et(r.name)??"the official marketplace"} and differs — \`ttheme add ${r.name}\` wears that one`);if(!i)$o(t,[...Zr(t),r]);return r}var k6=["background","foreground","cursor"];function Ix(t){try{t();return}catch(e){return e.message}}function Rx(t,e,n){return zt(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 Ax(t,e){let n=new Set(ke(t,e).map((r)=>r.key));return{count:()=>ke(t,e).length,added:()=>ke(t,e).filter((r)=>!n.has(r.key)).length,fresh:()=>(gf(t,e)??[]).filter((r)=>!n.has(he(r))),discard:()=>{let r=ke(t,e).filter((i)=>!n.has(i.key));for(let i of r)ao(t,e,i.key),Ou(t,e);if(r.length>0)Ge(t)}}}function y6(...t){let e=new Map(t.flatMap((n)=>n??[]).map((n)=>[he(n),n]));return e.size>0?[...e.values()]:void 0}function Nx(t,e,n,r){if(!Eo(process.env,D(t).terminals))return;return async(i,s)=>{let o=dn(Hn(e,r(i),n.palettes)),{saved:a}=await cx(t,o,s);return{...a?{note:a}:{},count:ke(t,e).length}}}async function sb(t,e=!1){let n=process.stdout.isTTY===!0,r=J(),i=D(r).terminals,s=n?$f.of(process.env,r,t.name,i):void 0,o=n?Pf.of(process.env,i):void 0;return KM(t,{color:!Lt(),...s?{backdrop:s}:{},...o?{layer:o}:{},...e?{hosted:!0}:{}})}async function Tx(t,e,n){let r=J(),i=ct(r),s=await cS(r,n),o=t.includes("/")?t:`${s.id}/${t}`,a=ne(o);if(a)throw Error(`${o} ${a}`);if(et(o)!==s.id)throw Error(`palettes in ${s.dir} are named ${s.id}/<palette> — ${o} belongs elsewhere`);let c=Ch(r,o);if(Jc(c))throw Error(`${o} already exists — \`ttheme edit ${o}\` changes it`);let u=e?Ln(zt(r,i).palettes,e):void 0;if(!oa())throw Error("new opens the palette editor — run it in a terminal");let f=u&&(et(u.name)?u.base:u.default?void 0:u.name),l=u?_h(u,o,`kept from ${u.name}`):void 0,d=u?gf(r,u.name)??u.pictures:void 0,{base:h,ansiSource:m,...p}=l??{name:o,signature:k6,...yi(Nc)},b=Ax(r,o),$=({colors:S,signature:M})=>{let x=y6(d,b.fresh());return Bh({...p,...S,signature:M,...f?{base:f}:{},...x?{pictures:x}:{}})},k=await sb({title:"New palette",name:o,...l?{colors:l}:{},signature:p.signature,...p.waive?{waive:p.waive}:{},palettes:Rx(r,i,o),pictures:b.count(),find:Nx(r,o,i,$),exports:Bx(r,o,i,$),decode:ob,check:(S)=>Ix(()=>Hn(o,$(S),i.palettes))});if(!k){b.discard(),console.log("Nothing made");return}g6(b6(c),{recursive:!0}),C(c,$(k));let{state:v}=w6(r,i,[o]);console.log(` + ${o}${u?` from ${u.name}`:""}
731
+ ${c}`),await xs(r,zt(r,i).palettes.filter((S)=>S.name===o),v.terminals),console.log(`
732
+ \`ttheme use ${o}\` wears it · \`ttheme edit ${o}\` opens it again`)}function v6(t,e,n){let r=dn(Hn(t,e,n.palettes));return Ka(r).length>0?ja(r).filter((i)=>i.startsWith(" ✗")):[]}async function Hx(t){let e=J(),n=ct(e),r=D(e),i=zt(e,n,!1),s=Ox(t,e),o=_f(e,s),a=o&&Jc(o)?s:i.palettes.some((k)=>k.name===t)?t:s,c=_f(e,a),u=!c||!Jc(c);if(u&&!i.palettes.some((k)=>k.name===a))throw Error(`no palette called ${a} — \`ttheme new\` makes one`);if(!oa())throw Error("edit opens the palette editor — run it in a terminal");if(u){let k=await Cx(e,a,!1);console.log(k===void 0?"Nothing changed":k===0?`${a} is back to its own colors`:`Saved ${a} · ${Lx(k)} — R then s in \`ttheme edit ${a}\` puts its own colors back`);return}let f=rb(c,"utf8"),l;try{l=Hn(a,f,n.palettes)}catch(k){throw Error(`${c} cannot be read — ${k.message}`)}let d=Ax(e,a),h=new Set((l.pictures??[]).map((k)=>he(k))),m=({colors:k,signature:v})=>gk(vk(Wh(f,k),v),d.fresh().filter((S)=>!h.has(he(S)))),p=await sb({title:"Edit palette",name:a,colors:wo(l),signature:l.signatureSlots,waive:l.waive,palettes:Rx(e,n,a),pictures:d.count(),find:Nx(e,a,n,m),exports:Bx(e,a,n,m),decode:ob,check:(k)=>Ix(()=>Hn(a,m(k),n.palettes))});if(!p){d.discard(),console.log("Nothing changed");return}let b=m(p);if(b===f){console.log(d.added()>0?`Kept the pictures you added to ${a}`:"Nothing changed");return}if(C(c,b),r.palettes.includes(a))Dt(e,n,r);console.log(`Saved ${a}${r.palettes.includes(a)?" — new tabs and `ttheme use` wear it":` — \`ttheme add ${a}\` installs it`}`);let $=v6(a,b,n);if($.length>0)console.log(`
733
733
  It misses the contrast gate:
734
734
  ${$.join(`
735
735
  `)}
736
- \`ttheme check --fix ${a}\` suggests colors that pass`)}var Ox=2;async function Cx(t,e,n){let r=J();if(e==="show"){let s=_n(hr(r,lt(r),!1).palettes,t),o=za(s,Kt(r)[t]);return console.log(Mx(s,o,!Ct(),n===void 0?void 0:Number(n)).join(`
737
- `)),0}if(e==="reset"){let s=Kt(r);if(s[t]===void 0)return Ox;return Ka(r,Uu(s,t,{})),Dt(r,lt(r),D(r)),process.stderr.write("Back to the original colors"),0}if(e!=="edit")throw Error(`tone takes show, edit or reset, not ${e}`);if(!ua())throw Error("needs a terminal");let i=await _x(r,t,!0);if(i===void 0)return Ox;return process.stderr.write(i===0?"Back to the original colors":`Saved · ${jx(i)}`),0}function jx(t){return`${t} ${t===1?"color":"colors"} tuned`}async function _x(t,e,n){let r=_n(hr(t,lt(t),!1).palettes,e),i=za(r,Kt(t)[e]),s=await cb({title:"Edit palette",name:e,colors:yo(Fe(i)),original:yo(Fe(r)),tone:!0,signature:i.signatureSlots,...i.waived?{waive:i.waived}:{},decode:ub,check:()=>{return}},n);if(!s)return;let o=Kt(t),a=qh(r,sn(s.colors));if(JSON.stringify(a)===JSON.stringify(o[e]??{}))return;return Ka(t,Uu(o,e,a)),Dt(t,lt(t),D(t)),Object.keys(a).length}function Bx(t,e,n){return _n(t.palettes,t.palettes.some((r)=>r.name===e)?e:Ix(e,n))}function Gx(t,e=!1){let n=J(),r=lt(n),i=D(n),s=Bx(zt(n,r),t,n);if(console.log(`${s.name} · ${re(s)}
738
- `),console.log(Ga(s).join(`
739
- `)),qa(s).length===0)return console.log(`
740
- Passes the gate`),0;let{theme:a,moves:c,left:u}=pf(Fe(s));if(c.length===0)return console.log(`
736
+ \`ttheme check --fix ${a}\` suggests colors that pass`)}var Mx=2;async function Fx(t,e,n){let r=J();if(e==="show"){let s=Ln(dr(r,ct(r),!1).palettes,t),o=Ua(s,Kt(r)[t]);return console.log(Sx(s,o,!Lt(),n===void 0?void 0:Number(n)).join(`
737
+ `)),0}if(e==="reset"){let s=Kt(r);if(s[t]===void 0)return Mx;return Ga(r,Bu(s,t,{})),Dt(r,ct(r),D(r)),process.stderr.write("Back to the original colors"),0}if(e!=="edit")throw Error(`tone takes show, edit or reset, not ${e}`);if(!oa())throw Error("needs a terminal");let i=await Cx(r,t,!0);if(i===void 0)return Mx;return process.stderr.write(i===0?"Back to the original colors":`Saved · ${Lx(i)}`),0}function Lx(t){return`${t} ${t===1?"color":"colors"} tuned`}async function Cx(t,e,n){let r=Ln(dr(t,ct(t),!1).palettes,e),i=Ua(r,Kt(t)[e]),s=await sb({title:"Edit palette",name:e,colors:wo(Fe(i)),original:wo(Fe(r)),tone:!0,signature:i.signatureSlots,...i.waived?{waive:i.waived}:{},decode:ob,check:()=>{return}},n);if(!s)return;let o=Kt(t),a=Kh(r,rn(s.colors));if(JSON.stringify(a)===JSON.stringify(o[e]??{}))return;return Ga(t,Bu(o,e,a)),Dt(t,ct(t),D(t)),Object.keys(a).length}function jx(t,e,n){return Ln(t.palettes,t.palettes.some((r)=>r.name===e)?e:Ox(e,n))}function _x(t,e=!1){let n=J(),r=ct(n),i=D(n),s=jx(zt(n,r),t,n);if(console.log(`${s.name} · ${re(s)}
738
+ `),console.log(ja(s).join(`
739
+ `)),Ka(s).length===0)return console.log(`
740
+ Passes the gate`),0;let{theme:a,moves:c,left:u}=hf(Fe(s));if(c.length===0)return console.log(`
741
741
  No color change fixes it — waive the rule in [contrast] with a reason, or pick other colors`),1;console.log(`
742
742
  ${u.length===0?"These colors pass":"These colors come closer"}:
743
- ${k6(c).join(`
744
- `)}`);let f=Gf(n,s.name),l=!f||!Zc(f);if(!e)return console.log(`
745
- \`ttheme check --fix ${s.name}\` writes them${l?" as your tone of it":""}`),1;if(l){let d=_n(hr(n,r,!1).palettes,s.name);return Ka(n,Uu(Kt(n),s.name,qh(d,sn(yo(a))))),Dt(n,r,i),console.log(`
746
- Saved as your tone of ${s.name} — R then s in \`ttheme edit ${s.name}\` puts its own colors back`),u.length===0?0:1}if(H(f,Dh(ob(f,"utf8"),yo(a))),i.palettes.includes(s.name))Dt(n,r,i);return console.log(`
747
- Wrote ${f}`),u.length===0?0:1}function Gf(t,e){let n=et(e);return n&&Vi(t,!1).some((r)=>r.id===n)?Bh(t,e):void 0}function ub(t){let e=ko(t);if(!e)return;try{let{background:n,foreground:r,cursor:i,selection:s,ansi:o}=zh(e);return{background:n,foreground:r,cursor:i,selection:s,ansi:o}}catch{return}}function Ux(t,e,n,r){return{code:(i)=>Kh(Wx(t,hn(Cn(e,r(i),n.palettes)))),toml:r,command:"ttheme add"}}function Wx(t,e){let n=Gf(t,e.name),r=n&&Zc(n)?Cn(e.name,ob(n,"utf8"),[e]).waiveReason:void 0,i=wf(t,e.name)??e.pictures,{pictures:s,...o}=Uh(e,e.name,r);return{...o,...i?{pictures:i}:{}}}async function E6(t,e,n){if(t===e)return e;let r=n;if(r===void 0)if(!ua())r="tuned";else{let i=await $m({message:`Share ${e.name} as…`,options:[{value:"tuned",label:"Your tone",hint:`named ${Vc(e.name)}`},{value:"original",label:"The original"}]});if(ie(i))throw new be;r=i}return r==="original"?e:t}function Vc(t){return`${t}-tuned`}async function lb(t,e){let n=J(),r=lt(n),i=Bx(hr(n,r),t,n),s=za(i,Kt(n)[i.name]),o=await E6(s,i,e),a=Wx(n,o),c=o===s&&s!==i;if(c){let f=ne(Vc(o.name));if(f)throw Error(`${Vc(o.name)} ${f} — share the original, or tune a palette with a shorter name`);a.name=Vc(o.name)}let u=vk(Kh(a));if(console.log(u),process.stdout.isTTY){let f=Ex(u);if(f)console.log(`
743
+ ${$6(c).join(`
744
+ `)}`);let f=_f(n,s.name),l=!f||!Jc(f);if(!e)return console.log(`
745
+ \`ttheme check --fix ${s.name}\` writes them${l?" as your tone of it":""}`),1;if(l){let d=Ln(dr(n,r,!1).palettes,s.name);return Ga(n,Bu(Kt(n),s.name,Kh(d,rn(wo(a))))),Dt(n,r,i),console.log(`
746
+ Saved as your tone of ${s.name} — R then s in \`ttheme edit ${s.name}\` puts its own colors back`),u.length===0?0:1}if(C(f,Wh(rb(f,"utf8"),wo(a))),i.palettes.includes(s.name))Dt(n,r,i);return console.log(`
747
+ Wrote ${f}`),u.length===0?0:1}function _f(t,e){let n=et(e);return n&&Ji(t,!1).some((r)=>r.id===n)?Ch(t,e):void 0}function ob(t){let e=bo(t);if(!e)return;try{let{background:n,foreground:r,cursor:i,selection:s,ansi:o}=Uh(e);return{background:n,foreground:r,cursor:i,selection:s,ansi:o}}catch{return}}function Bx(t,e,n,r){return{code:(i)=>Gh(Gx(t,dn(Hn(e,r(i),n.palettes)))),toml:r,command:"ttheme add"}}function Gx(t,e){let n=_f(t,e.name),r=n&&Jc(n)?Hn(e.name,rb(n,"utf8"),[e]).waiveReason:void 0,i=gf(t,e.name)??e.pictures,{pictures:s,...o}=_h(e,e.name,r);return{...o,...i?{pictures:i}:{}}}async function S6(t,e,n){if(t===e)return e;let r=n;if(r===void 0)if(!oa())r="tuned";else{let i=await gm({message:`Share ${e.name} as…`,options:[{value:"tuned",label:"Your tone",hint:`named ${qc(e.name)}`},{value:"original",label:"The original"}]});if(ie(i))throw new be;r=i}return r==="original"?e:t}function qc(t){return`${t}-tuned`}async function ab(t,e){let n=J(),r=ct(n),i=jx(dr(n,r),t,n),s=Ua(i,Kt(n)[i.name]),o=await S6(s,i,e),a=Gx(n,o),c=o===s&&s!==i;if(c){let f=ne(qc(o.name));if(f)throw Error(`${qc(o.name)} ${f} — share the original, or tune a palette with a shorter name`);a.name=qc(o.name)}let u=kk(Gh(a));if(console.log(u),process.stdout.isTTY){let f=vx(u);if(f)console.log(`
748
748
  ${f.join(`
749
749
  `)}`);console.error(`
750
750
  Anyone can open the link${f?" or scan the code":""} to see ${a.name}, and ttheme add <link> installs it${c?`
751
- It carries your tone, named ${a.name} so it does not clash with ${o.name}`:""}`)}}import{spawn as M6,spawnSync as Kx}from"node:child_process";import{existsSync as x6,readFileSync as zx}from"node:fs";import{homedir as O6}from"node:os";import{join as Dx}from"node:path";function qx(t,e,n,r=O6(),i=(s)=>{process.stdout.write(s)}){if(!e||Ct(t)||t.TMUX||Zt(t)!=="terminal-app")return;let[s="",o="-"]=(t.TTHEME_TERMINAL_SHOWN??"").split(" "),a=t.TTHEME_TTY,c=s?Le(X(n),s,r):void 0,u=Ol(jo(n)).get(de(s))??[],f=u.find((G)=>G===`${_(s)}.${o}.png`)??u[0];if(!a||!c||o==="-"||!f||!x6(c.image))return;let l=Dx(jo(n),f),d=["-l","JavaScript",xl(n),"tab",a,yn(s)],h=D(n).terminalBase??"Basic",m=lp(t,r),p=zx(l),b,$=l,k=0,S,v=!1,x=!1,M,N=(G)=>{v=!0,M6("osascript",[...d,h],{stdio:"ignore"}).on("close",()=>{if(v=!1,x)return;i(G);let F=M;M=void 0,F?.()})},C=(G,F)=>{b??=Wt(new Uint8Array(zx(c.image)));let gt=Dx(jo(n),`${_(s)}.h${process.pid}-${++k}.png`);Ni($,gt,Ur(Br(b,G,c.opacity,fp(b.width,b.height,c,m)))),$=gt,N(F)},I=()=>{if($!==l)Ni($,l,p),$=l},j=(G)=>{clearTimeout(S),S=setTimeout(()=>{if(v)M=G;else G()},Rm)},U=()=>{clearTimeout(S),M=void 0};return{slots:[],paint(G){return j(G.name===s?()=>{I(),N("")}:()=>C(G.background,kr(G))),""},wear(G){return Kx("osascript",[...d.slice(0,-1),yn(G.name),h],{encoding:"utf8"}).stdout?.trim()==="worn"?"":kr(G)},saved:async()=>new Map,restore(){return U(),x=!0,I(),Kx("osascript",[...d,h],{stdio:"ignore"}),""},stop:U}}import{existsSync as Xc,readdirSync as P6,readFileSync as Wf,rmSync as Jx,statSync as Vx}from"node:fs";import{homedir as I6}from"node:os";import{join as Ls}from"node:path";var R6=150,A6=260;function Uf(t){return t?.includes(`path = "${_("")}`)===!0}function N6(t){try{return D(t).terminals.includes("warp")}catch{return!1}}function Yx(t,e){let n=_(e);if(!Xc(t))return;return P6(t).filter((i)=>i.startsWith(`${n}.`)&&/^[0-9a-f]{8}\.yaml$/.test(i.slice(n.length+1))).map((i)=>({file:i,at:Vx(Ls(t,i)).mtimeMs})).sort((i,s)=>s.at-i.at)[0]?.file??(Xc(Ls(t,`${n}.yaml`))?`${n}.yaml`:void 0)}function T6(t,e){if(!e)return;let n;try{n=Wf(Ls(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 Zx(t,e,n,r=I6()){if(!e||Ct(t)||t.TMUX||Zt(t)!=="warp")return;let i=fi(r,n);if(!Xc(i)||!N6(n))return;let s=cs(r),o=Rl(n),a=[],c=t.TTHEME_WARP_WEARS??Ge(D(n)),u=T6(s,c&&Yx(s,c)),f,l,d=(b)=>{let $=Wf(i,"utf8"),k=di($);if(k===b)return;if(Uf(b)&&!Uf(k)&&!Xc(o))H(o,k??"");if(In(i,Al($,b)),!Uf(b))Jx(o,{force:!0})},h=(b)=>{for(let $ of a.splice(0))if($===b)a.push($);else Jx(Ls(s,$),{force:!0})},m=()=>{clearTimeout(f),clearTimeout(l)},p=(b,$,k)=>{m(),f=setTimeout(()=>{let S=$;if(!S)S=`${_(b.name)}.view-${process.pid}-${a.length+1}.yaml`,H(Ls(s,S),ec(b,k)),a.push(S);let v=S,x=Date.now()-Vx(Ls(s,v)).mtimeMs;l=setTimeout(()=>{d(pp(b.name,v)),h(v)},Math.max(0,A6-x))},R6)};return{slots:[],paint:(b)=>{if(b.name===c)p(b,Yx(s,b.name));else if(u)p(b,void 0,u);else p(b,Xc(Ls(s,`${_(b.name)}.yaml`))?`${_(b.name)}.yaml`:void 0);return""},wear:(b,$)=>$.includes("warp")?"":void 0,saved:async()=>new Map([["theme",di(Wf(i,"utf8"))??""]]),restore:(b)=>{m();let $=b.get("theme");if($)d($);else if(Uf(di(Wf(i,"utf8"))))d(Il);return h(),""}}}function la(t,e,n){return qx(t,e,n)??Dy(t,e)??Zx(t,e,n)}function Kf(t){Kn(`
752
- ${t} palettes installed — open a new tab, or reload your terminal config`)}function L6(t,e){return t.map((n)=>{if(ko(n))return n;let r=et(n);if(r===void 0)return e===Y?n:`${e}/${n}`;if(r!==e)throw Error(`${n} is not in ${e} — give its bare name, or leave --marketplace out`);return n})}async function Xx(t,e){let n=t.find((d)=>/^https?:\/\//i.test(d.trim())&&!ko(d));if(n)throw Error(`${n} is not a share link — one reads ${jh}tt2:…`);let r=J(),i=e?L6(t,(await Wp(r,e)).id):t,s=lt(r),o=new Map,a=[...new Set(i.map((d)=>{let h=ko(d);if(!h)return d;let m=Rx(r,h,s);return o.set(m.name,m),m.name}))],c=D(r),u=a.filter((d)=>c.palettes.includes(d)),f=a.filter((d)=>!c.palettes.includes(d));if(f.length===0){Dt(r,s,c),console.log(`Already installed: ${u.join(", ")}`);return}let l={...c,palettes:[...c.palettes,...f]};nn(r,s,c,l);for(let d of f)console.log(` + ${d}`);await Ps(r,zt(r,s,!1).palettes.filter((d)=>f.includes(d.name)).map((d)=>{let h=o.get(d.name);return h?{...d,pictures:h.pictures}:d}),l.terminals),Kf(l.palettes.length)}function Qx(t){let e=J(),n=lt(e),r=D(e),i=t.filter((a)=>r.palettes.includes(a)),s=t.filter((a)=>!r.palettes.includes(a));if(i.length===0)throw Error(`not installed: ${s.join(", ")} — \`ttheme list\` marks what is`);let o={...r,palettes:r.palettes.filter((a)=>!i.includes(a))};nn(e,n,r,o),Go(e,n,r.terminals,i);for(let a of i)console.log(` - ${a}`);if(Kf(o.palettes.length),s.length>0)return console.error(`ttheme remove: not installed: ${s.join(", ")}`),1;return 0}function t2(t){let e=J(),n=lt(e),r=D(e);if(!r.palettes.includes(t))throw Error(`${t} is not installed — \`ttheme add ${t}\` first`);let{off:i,...s}=r,o=nn(e,n,r,{...s,startup:t},!0);console.log(i2(t,r.terminals,o).join(`
753
- `))}function e2(){let t=J();Dt(t,lt(t),D(t))}function n2(){let t=J(),e=D(t),n=ls(e);if(!n)throw Error("no palettes installed — `ttheme` picks some");if(!e.off){console.log(`Already on · ${n}`);return}let{off:r,...i}=e,s=nn(t,lt(t),e,i);console.log(i2(n,i.terminals,s).join(`
754
- `))}function r2(){let t=J(),e=D(t);if(e.off){console.log("Already off");return}let n=nn(t,lt(t),e,{...e,off:!0}),r=ls(e);console.log(`Off · new tabs open in the terminal's own colors${r?` — \`ttheme on\` wears ${r} again`:""}`);for(let i of vt(e.terminals))if(n.get(i.id)?.restart)console.log(`${i.name} new tabs open on your own profile once ${i.name} restarts`)}function i2(t,e,n){let r=vt(e).filter((s)=>!s.defaults),i=r.length>0?[`Default ${t} · ${r.map((s)=>s.name).join(", ")} open new tabs with it once their config reloads`]:[];for(let s of vt(e)){let o=s.defaults?.profile(t);if(o)i.push(n.get(s.id)?.restart?`${s.name} new tabs open with it once ${s.name} restarts — "${o}" is now its default profile`:`${s.name} new tabs open with it — "${o}" is its default profile`)}return i.length>0?i:[`Default ${t} · no terminal is wired to open with it — \`ttheme init\` wires one`]}function F6(t,e){let n=new Map(e.palettes.map((r)=>[r.name,"marketplace"]));for(let r of Bu(t,e.palettes,!1))n.set(r.name,"mine");return n}function s2(t,e=!1){let n=J(),r=lt(n),i=new Set(D(n).palettes),s=F6(n,r),o=It(zt(n,r).palettes);if(t)zi(o);let a=Bi(t?jk(o,t):o),c=(d)=>s.get(d)??"kept";if(e){let d=a.map((h)=>({name:h.name,marketplace:et(h.name)??Y,...h.catalog?{catalog:h.catalog}:{},installed:i.has(h.name),source:c(h.name)}));console.log(JSON.stringify(d,null,2));return}let u=Math.max(...a.map((d)=>d.name.length),0),f={marketplace:"",mine:" · yours",kept:" · in no marketplace you added"},l=Kt(n);for(let d of a){let h=l[d.name]?" · tuned":"";console.log(` ${i.has(d.name)?"●":"○"} ${d.name.padEnd(u)} ${re(d)}${f[c(d.name)]}${h}`)}if(process.stdout.isTTY){let d=t?`${a.length} of ${o.length}`:`${o.length}`;console.log(`
755
- ${d} palettes — ${a.filter((h)=>i.has(h.name)).length} installed`)}}function C6(t,e,n){let r=(s)=>{try{return mi(t,s)}catch{return}},i=e.find((s)=>s===n||st(s)===n||r(s)===n);if(!i)throw Error(`no marketplace named ${n} — \`ttheme marketplace\` lists them`);return i}async function o2(t=[]){let e=J(),n=bo(e),r=t.map((m)=>C6(e,n,m)),i=await Cv(),s=!1;if(i.latest)try{return Fv(i.latest,t)}catch(m){s=!0,console.log(` ttheme could not update to ${i.latest}: ${m.message}`)}else console.log(i.note);let o=(r.length>0?r:n).filter((m)=>m!==Y);if(r.length===0&&o.length===0)console.log("No marketplaces to update — `ttheme marketplace add <owner>/<repo>` adds one");let a=(m,p)=>`${qv(m,p)} — kept the copy from the last update`;for(let m of o.filter(Ht))try{console.log(` ${hS(e,m)}`)}catch(p){console.log(` ${a(m,p)}`)}let c=o.filter((m)=>!Ht(m)),u=new Set(c),f=[],l=hi(),d=()=>l.set(`Updating ${[...u].map(st).join(", ")}${c.length>1?` · ${c.length-u.size}/${c.length}`:""}`);if(d(),await Promise.all(c.map(async(m)=>{let p=await Cp(e,m);if("refreshed"in p)f.push(p.refreshed);if(u.delete(m),u.size>0)d();else l.done();l.say(` ${"refreshed"in p?jp(p.refreshed):a(m,p.failure)}`)})),l.done(),!H6(mn(e)))return s?1:0;for(let m of ps(e,f))console.log(` ${m}`);let h=Bp(e);if(h)console.log(h);return s?1:0}async function a2(t,e){let n=lt(t,!1),r=new Map(So(t,n).filter((a)=>e.includes(a.name)).map((a)=>[a.name,a]));if(r.size===0)return;let i=Xr(t);vo(t,i.map((a)=>r.get(a.name)??a));let s=D(t);Dt(t,n,s);let o=new Map(i.map((a)=>[a.name,a.pictures]));await Ps(t,zt(t,n,!1).palettes.filter((a)=>r.has(a.name)).map((a)=>qE(a,o.get(a.name))),s.terminals)}async function fb(t,e,n,r=!1){let i=process.env.TTHEME_SORT==="catalog"?t.palettes:Bi(t.palettes);zi(i);let s=process.stdout.isTTY===!0,o=la(process.env,s,J()),a=o?await o.saved():new Map,c=new Xp({entries:i,scope:n,installed:e,required:r,color:!Ct(),fx:Ql(process.env.TTHEME_FX),onFocus:o?(f)=>process.stdout.write(o.paint(f)):void 0}),u=await c.prompt();if(o)process.stdout.write(o.restore(a));if(u==="cancel")return;return t.palettes.filter((f)=>c.picked.has(f.name)).map((f)=>f.name)}function db(t,e,n,r){let i=n===Y?void 0:hc(t,n),s;try{s=i?.id??mi(t,n)}catch{s=yt(n)?Yr(n):st(n)}return{source:n,id:s,...i?.info.description?{description:i.info.description}:{},shown:st(n),entries:n===Y?qo(t,n):i?.entries??[],auto:Vr(n,e.updates),status:Dp(t,n,r)}}function hb(t){return So(t,lt(t,!1)).map((e)=>e.name)}function j6(t,e,n,r,i){return{refresh:async(s)=>{if(Ht(s)){let a=db(t,e,s,vr());return{marketplace:a,refreshed:{source:s,id:a.id,count:It(a.entries).length,change:{added:[],changed:[],gone:[]}},updates:hb(t)}}let o=await Fp(t,s,Ap);return{marketplace:db(t,e,s,vr()),refreshed:o,updates:hb(t)}},fetch:async(s)=>{if(Ht(s)){let a=Ye(s),c=ye(a);return{source:s,id:c,...a.description?{description:a.description}:{},shown:st(s),entries:jn(s,c,qo(t,Y),me(!1)),auto:!1,status:"read in place"}}let o=await dc(t,s,void 0,r);return n.set(s,o),{source:s,id:o.id,..."info"in o&&o.info.description?{description:o.info.description}:{},shown:st(s),entries:o.entries,auto:Vr(s,{}),status:"not added yet"}},index:()=>Ul(r),apply:i}}function c2(...t){for(let e of ps(...t))Kn(e)}function _6(t,e,n){let r=[];for(let i of t.adds){let s=i.source!==Y&&(t.auto[i.source]??i.auto);r.push(`Added ${i.id} · ${i.shown} — ${qt(It(i.entries).length)}${s?", updating on its own":""}`)}for(let i of t.removes){let s=e.find((a)=>a.source===i)?.id??i;r.push(`Removed ${s} · ${st(i)}`);let o=n.filter((a)=>(et(a)??Y)===s);if(o.length>0)r.push(zp(o))}for(let[i,s]of Object.entries(t.auto)){let o=e.find((a)=>a.source===i);if(o&&!t.removes.includes(i))r.push(`${o.id} ${s?"updates on its own now":"no longer updates on its own"}`)}return r}async function B6(t,e,n,r){let i=D(t),s=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)Do(t,p)}for(let m of n.removes)Kp(t,m);let o=[...Yt(i.marketplaces).filter((m)=>!n.removes.includes(m)),...n.adds.map((m)=>m.source)],a=gc(i,o,{...i.updates,...n.auto});if(s)en(t,a);let c=lt(t,!1),u=zt(t,c,!1).palettes.filter((m)=>n.picked.has(m.name)).map((m)=>m.name),f=i.palettes.filter((m)=>!u.includes(m)),l=u.filter((m)=>!i.palettes.includes(m)),d=n.renew.filter((m)=>u.includes(m));if(!s&&l.length===0&&f.length===0&&d.length===0){c2(t,n.refreshed),Kn("Nothing changed");return}let h={...a,palettes:u};nn(t,c,i,h),Go(t,c,i.terminals,f);for(let m of _6(n,e,u))Kn(m);for(let m of l)Kn(` + ${m}`);for(let m of f)Kn(` - ${m}`);for(let m of ps(t,n.refreshed))Kn(m);if(await Ps(t,zt(t,c,!1).palettes.filter((m)=>l.includes(m.name)),h.terminals),d.length>0){await a2(t,d);for(let m of d)Kn(` ↑ ${m}`)}if(l.length>0||f.length>0)Kf(h.palettes.length)}async function u2(){let t=cy(process.env),e=J(),n=D(e),r=Xr(e),i=vr(),s=Ko(),o=Yt(n.marketplaces).map((k)=>db(e,n,k,i)),a=new Set(o.flatMap((k)=>k.entries.map((S)=>S.name))),c=r.filter((k)=>n.palettes.includes(k.name)&&!a.has(k.name));zi([...o.flatMap((k)=>k.entries),...c]);let u=new Map,f=new AbortController,l=process.stdout.isTTY===!0,d=la(process.env,l,e),h=d&&!t?await d.saved():new Map,m=Ge(n);if(t)process.stdout.write("\x1B[?2026h");let p=new eg({marketplaces:o,kept:c,installed:n.palettes,updates:hb(e),tuned:Object.keys(Kt(e)),...m?{startup:m}:{},...t?{hub:t}:{},due:s?Tp(e,n):[],io:j6(e,n,u,f.signal,(k,S)=>Ev({say:S.say,set:S.status},()=>B6(e,o,k,u))),...process.env.TTHEME_SORT==="catalog"?{}:{order:Bi},color:!Ct(),lookups:process.env.TTHEME_MARKETPLACE_LOOKUP!=="off",fx:Ql(process.env.TTHEME_FX),owns:l&&!t,...d?{onFocus:(k)=>process.stdout.write(d.paint(k))}:{}});try{await p.run()}finally{if(d?.stop?.(),d&&(!t||p.next()===void 0))process.stdout.write(d.restore(h));f.abort()}await p.idle();let b=p.result(),$=p.next();if(t&&$!==void 0)return c2(e,b.refreshed),$;if(l&&t)process.stdout.write("\x1B[?1049l\x1B[?25h");for(let k of b.refreshed){let S=_p(k);if(S)console.log(S)}if(p.applied()){for(let S of p.lines())console.log(S);let k=p.failure();if(k)throw k}else{for(let k of ps(e,b.refreshed))console.log(k);console.log("Nothing changed")}return t?Vu:0}import{rmSync as l2}from"node:fs";import{basename as G6,join as Qc}from"node:path";var f2=Qc(import.meta.dirname,".."),U6=Qc(f2,"themes"),mb=Qc(f2,"dist"),zf=se.map((t)=>yr[t].emitter),W6=[Cm,Wm],LX=zf.map((t)=>t.id);async function Df({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?zf.filter((s)=>t.includes(s.id)):zf,n=m$(U6),r=nw(n);if(r.length>0){for(let s of r)console.error(` ✗ ${s.theme} [${s.rule}] ${s.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===zf.length)l2(mb,{recursive:!0,force:!0});else for(let s of e)l2(Qc(mb,s.id),{recursive:!0,force:!0});let i=0;for(let s of[...e,...W6]){let o=n.flatMap((u)=>s.emit?.(u)??[]),a=s.emitShared?.(n)??[];for(let u of[...o,...a])await Bun.write(Qc(mb,u.path),u.content),i++;let c=o.length>0?`${n.length} themes${s.limits?` (${s.limits})`:""}`:a.length>0?a.map((u)=>G6(u.path)).join(" "):`no files (${s.limits??"nothing to write"})`;console.log(` ${s.id.padEnd(16)} ${c}`)}console.log(`
756
- ${n.length} themes (${p$(n).length} in the new-tab rotation) -> ${i} files in dist/`)}import{existsSync as D6,readFileSync as g2}from"node:fs";import{availableParallelism as K6,homedir as d2}from"node:os";var z6=4;async function qf(t,e,n=d2()){let r=Tt(X(t)),i=si(t),s=new Map(ve(t).palettes.map((l)=>[l.name,ao(l)])),o=Object.entries(r.palettes).flatMap(([l,d])=>{let h=s.get(l);return h?d.pictures.filter((m)=>co(m)||(m.blur??0)!==i||m.cut!==void 0&&m.matte!==Ra).map((m)=>({name:l,key:m.key,paint:h})):[]});if(o.length===0)return 0;e(`Drawing ${o.length} background picture${o.length===1?"":"s"} again${i?` · blur ${i}px`:""}`);let a=fs(D(t).terminals),c=new jg(Math.min(z6,K6()-1)),u=await c.map(o.map(({name:l,key:d,paint:h})=>({job:"redraw",home:t,user:n,name:l,key:d,paint:h,blur:i,aligns:a})));c.close();let f=[];return u.forEach((l,d)=>{let{name:h,key:m}=o[d];if(l instanceof Error||l===null){e(` ▢ ${h} ${m} — ${l instanceof Error?l.message:"no original to draw it from"}, left as it was`);return}f.push({name:h,picture:l})}),Eh(t,f),Ue(t,n),f.length}async function h2(t,e,n,r,i=d2()){let s=Tt(X(t)).palettes[e],o=s?.pictures.find((f)=>f.key===(r??s.active));if(!s||!o)throw Error(`${e} has no picture ${r??"shown"}`);if(Je(o)===n)return{key:o.key,changed:!1};let a=ve(t).palettes.find((f)=>f.name===e);if(!a)throw Error(`no palette called ${e}`);let c=fs(D(t).terminals),u=await $f(t,e,o.key,ao(a),si(t),c,i,n);if(!u)throw Error(`${e} ${o.key} has no original to draw it from`);return Eh(t,[{name:e,picture:u}]),Ue(t,i),{key:o.key,changed:!0}}function m2(t,e,n){let r=Tt(X(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 s=ve(t).palettes.find((a)=>a.name===e);if(!s)throw Error(`no palette called ${e}`);let o=Je(i)==="original"?"tone":"original";if(!VE(t,e,i.key,ao(s),si(t),o))throw Error(`${e} ${i.key} has no original to draw it from`);return{key:i.key,coloring:o}}async function p2(){return await qf(J(),(t)=>process.stderr.write(`${t}
757
- `)),0}async function b2(t,e,n){let r=J();if(_n(ve(r).palettes,t),e==="show"){if(!n)throw Error("image show needs the picture to show");let{at:i,of:s}=uo(r,t,n);return Ue(r),process.stderr.write(`Background · ${t} ${i}/${s} ${n}
758
- `),0}if(e==="drop"){let{key:i,left:s}=Ru(r,t,n);return Ue(r),process.stderr.write(`Background · ${t} removed ${i} · ${s} left
759
- `),0}if(e==="tone"||e==="original"){let i=await h2(r,t,e,n);return process.stderr.write(`Background · ${t} ${i.key} ${e==="tone"?"tinted":"in its own colors"}
760
- `),0}if(e==="prepare"){let{key:i,coloring:s}=m2(r,t,n);return process.stderr.write(`Background · ${t} ${i} ready in ${s==="tone"?"its tone":"its own colors"}
761
- `),0}if(e==="tuned")return Ue(r),0;throw Error(`unknown image action ${e} — show, drop, tone, original, prepare or tuned`)}function w2(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,s]=n.slice(1).map(Number),[o,a,c,u]=r.slice(1).map(Number);return{width:i,height:s,at:{x:c,y:u,w:o,h:a}}}function q6(t,e,n){let r=w2(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 $2(t,e,n,r){let i=new Uint8Array(g2(t)),s=w2(n,r),o=Wt(i),a=$0(i);return H(e,a?cr(u0(ar(o),s),a):qe(c0(o,s))),0}function k2(t,e,n,r,i,s,o){let a=Number(r);if(!we(n)||!Number.isFinite(a))throw Error("flatten needs a #rrggbb background and an opacity from 0 to 1");let c=Wt(new Uint8Array(g2(t))),u=i?q6(c,i,s??""):void 0,f=Ur(Br(c,n,Math.max(0,Math.min(1,a)),u));if(o&&D6(o))Ni(o,e,f);else H(e,f);return 0}import{execFileSync as J6}from"node:child_process";import{readFileSync as Y6}from"node:fs";import{arch as V6,platform as Jf,release as pb}from"node:os";var Z6={ghostty:"ghostty",iterm2:"iTerm.app",wezterm:"WezTerm","terminal-app":"Apple_Terminal",warp:"WarpTerminal"};function X6(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=Z6[t];return n!==void 0&&e.TERM_PROGRAM===n?e.TERM_PROGRAM_VERSION:void 0}function Q6(t){let e=Zt(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 (${Im(t)})`:`${e} ${X6(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 y2(t,e){try{return J6(t,e,{encoding:"utf8",timeout:2000,stdio:["ignore","pipe","ignore"]}).trim()}catch{return}}function t_(){let t=V6();if(Jf()==="darwin")return`macOS ${y2("sw_vers",["-productVersion"])??`(Darwin ${pb()})`} · ${t}`;if(Jf()==="linux"){let e="";try{e=Y6("/etc/os-release","utf8")}catch{}return`${/^PRETTY_NAME="?([^"\n]*)"?$/m.exec(e)?.[1]??"Linux"} · linux ${pb()} · ${t}`}return`${Jf()==="win32"?"Windows":Jf()} ${pb()} · ${t}`}function e_(t){if(t.TTHEME_ZSH)return`zsh ${t.TTHEME_ZSH}`;return(t.SHELL?y2(t.SHELL,["--version"])?.split(`
762
- `)[0]:void 0)??t.SHELL??"unknown"}function n_(t){try{let{terminals:e}=D(t);return e.length>0?e.join(", "):"none"}catch{return"installed.json missing or unreadable"}}function r_(t){let e=bl.flatMap((n)=>{let r=t[n];return r===void 0||r===Xa(n)?[]:[`${n}=${/\s/.test(r)?JSON.stringify(r):r}`]});return e.length>0?e.join(" "):void 0}function v2(){let t=process.env,n=[["ttheme",dt.version],["OS",t_()],["Shell",e_(t)],["Terminal",Q6(t)],["Wired",n_(J())],["Settings",r_(t)]].filter((i)=>i[1]!==void 0),r=Math.max(...n.map(([i])=>i.length));for(let[i,s]of n)console.log(`${i.padEnd(r)} ${s}`)}import{execFileSync as s_,spawnSync as o_}from"node:child_process";import{chmodSync as a_,copyFileSync as c_,existsSync as Ie,mkdirSync as T2,readdirSync as L2,readFileSync as Si,renameSync as u_,rmSync as eu}from"node:fs";import{homedir as l_}from"node:os";import{dirname as fa,join as rt}from"node:path";import{existsSync as S2}from"node:fs";import{basename as i_,join as tu}from"node:path";var E2=["zsh","bash","fish"];function Yf(t){let e=i_(t??"").replace(/^-/,"");return E2.includes(e)?e:void 0}function bb(t,e){for(let n=e,r=0;n>1&&r<12;r++){let[i,...s]=t("ps",["-o","ppid=,comm=","-p",String(n)])?.trim().split(/\s+/)??[],o=Yf(s.join(" "));if(o)return o;n=Number(i)}return}function M2(t,e){let n=new Set(["zsh",Yf(t.env.SHELL),bb(t.run,e)]);return E2.filter((r)=>n.has(r))}var gb="ttheme-zdotdir:";function Vf(t,e){if(t.env.ZDOTDIR)return t.env.ZDOTDIR;let n=t.run("zsh",["-c",`print -rn -- "${gb}\${ZDOTDIR:-$HOME}"`])??"",r=n.lastIndexOf(gb);return r>=0&&n.slice(r+gb.length)||e}function x2(t){return t.run("zsh",["-fc","print ok"])==="ok"}var O2=[".bash_profile",".bash_login",".profile"];function P2(t,e){let n=tu(t,".bashrc"),r=O2.map((s)=>tu(t,s)).find((s)=>S2(s)),i=[...S2(n)?[n]:[],...r?[r]:[]];if(e==="darwin"&&!r)i.push(tu(t,".bash_profile"));return i.length>0?i:[n]}function I2(t){return[".bashrc",...O2].map((e)=>tu(t,e))}var R2=`zsh -c 'source ${gl} && ttheme "$@"' ttheme`;function A2(){return`# ${Me}
763
- ttheme() { ${R2} "$@"; }`}function Zf(t){return tu(t,"fish","functions","ttheme.fish")}function N2(){return[`# ${Me}`,"function ttheme --description 'Run ttheme through zsh'",` ${R2} $argv`,"end",""].join(`
764
- `)}function Xf(t){return t.startsWith(`# ${Me}
765
- `)}function f_(t,e){return L2(t).map((n)=>({from:rt(t,n),to:rt(e,n)}))}function yb(t){return Zr(Si(rt(t,"dist","manifest.json"),"utf8"))}function td(t,e){let n=rt(e.configHome,"ttheme"),r=[{from:rt(e.root,"bin","ttheme.js"),to:rt(n,"ttheme.js")},{from:rt(e.root,"bin","ttheme.js.map"),to:rt(n,"ttheme.js.map")},{from:rt(e.root,"bin","package.json"),to:rt(n,"package.json")},{from:rt(e.root,"shell","ttheme.zsh"),to:rt(n,"ttheme.zsh")},{from:rt(e.root,"shell","preview.zsh"),to:rt(n,"preview.zsh")},{from:rt(e.root,"shell","launch-tab.zsh"),to:rt(n,"launch-tab.zsh"),executable:!0},...f_(rt(e.root,"shell","adapters"),rt(n,"adapters"))],i=e.shells??["zsh"],s=[{file:rt(e.zdotdir,".zshrc"),block:e1(),about:"source ttheme.zsh"},...i.includes("bash")?P2(e.home,e.platform??process.platform).map((p)=>({file:p,block:A2(),about:"the ttheme command, run through zsh"})):[]],o=Zf(e.configHome),a=!Ie(o)||Xf(Si(o,"utf8")),c=i.includes("fish")&&a?[{file:o,content:N2(),about:"the ttheme command, run through zsh"}]:[],u=rt(n,"config.zsh"),f=r1(Ie(u)?Si(u,"utf8"):""),l={file:u,content:t.warpFast===void 0?f:$l(f,"TTHEME_WARP_FAST",t.warpFast?"on":"off")},d={terminals:t.terminals,palettes:t.palettes,...Object.fromEntries(vt(t.terminals).flatMap((p)=>Object.entries(p.installs?.(e)??{}).filter(([,b])=>b!==void 0))),...t.off?{off:!0}:{}},h=[...jl(e.configHome,d,e.home),...i.includes("fish")&&!a?[`${ht(o,e.home)} is a function of your own — ttheme left it, so fish has no ttheme command`]:[],...i.some((p)=>p!=="zsh")?[`${i.filter((p)=>p!=="zsh").join(" and ")} run ttheme through zsh — a pin taking effect on cd, the picture following the tab in front and the repaint after a program resets the colors stay with zsh tabs`]:[]],m=e.stateDir?[rt(e.stateDir,"ghostty",".blind")]:[];return{home:e.home,copies:r,edits:s,writes:c,settings:l,forget:m,manifest:yb(e.root),installed:d,notes:h}}function F2(t){try{return D(t)}catch{return}}var Qf="ttheme-market.toml",d_="https://www.schemastore.org/ttheme-market.json";function h_(t,e){let n=rt(t,"ttheme"),r=rt(n,"market");for(let[c,u]of[[r,Yi(t)],[rt(n,"markets"),wo(t)],[rt(n,"catalog.json"),gn(t)]])if(Ie(c)&&!Ie(u))u_(c,u);eu(rt(e,"markets.json"),{force:!0});let i=wo(t);for(let c of Ie(i)?L2(i).filter((u)=>u.endsWith(".json")):[])try{let u=JSON.parse(Si(rt(i,c),"utf8"));if(!u||typeof u!=="object"||!("files"in u))continue;let f=u.files;if(f&&typeof f==="object"&&Qf in f&&!(ot in f)){let{[Qf]:l,...d}=f;H(rt(i,c),`${JSON.stringify({...u,files:{...d,[ot]:l}})}
766
- `)}}catch{}let s=mn(t),o;try{o=JSON.parse(Si(s,"utf8"))}catch{return[]}if(!o||typeof o!=="object")return[];if("markets"in o&&!("marketplaces"in o)){let{markets:c,...u}=o,f=(Array.isArray(c)?c:[]).map((l)=>typeof l==="string"&&l.startsWith(`${r}/`)?rt(Yi(t),l.slice(r.length+1)):l);o={...u,marketplaces:f},H(s,`${JSON.stringify(o,null,2)}
767
- `)}let a=o&&typeof o==="object"&&"marketplaces"in o?o.marketplaces:void 0;return(Array.isArray(a)?a:[]).flatMap((c)=>{if(typeof c!=="string"||!Ht(c))return[];let u=rt(c,Qf),f=rt(c,ot);if(!Ie(u)||Ie(f))return[];return H(f,Si(u,"utf8").replace(d_,Th)),eu(u),[`Renamed ${Qf} to ${ot} in ${st(c)}`]})}function C2(t,e){try{return zt(t,lt(t,!1,e),!1).palettes}catch{return[]}}function m_(t,e){let n=yb(e.root),r=Yt(t.marketplaces).includes(Y)?n.palettes:[],i=new Set(r.map((o)=>o.name)),s=C2(e.configHome,n).filter((o)=>!i.has(o.name)&&(et(o.name)!==void 0||t.palettes.includes(o.name)));return{...n,palettes:[...r,...s]}}function j2(t,e){let n=ls(t);return n&&e.includes(n)?n:void 0}function p_(t,e,n){let r=td(e,n),i=j2(t,e.palettes),s=new Set(["terminals","palettes","off","startup",...se.flatMap((a)=>Object.keys(yr[a].installs?.(n)??{}))]),o=Object.fromEntries(Object.entries(t).filter(([a])=>!s.has(a)));return{...r,installed:{...o,...r.installed,...i?{startup:i}:{}}}}function g_(t,e){let n=td({terminals:t.terminals,palettes:t.palettes,off:t.off},e),r=new Set([...n.manifest.palettes,...C2(e.configHome,n.manifest)].map((f)=>f.name)),i=t.palettes.filter((f)=>r.has(f)),s=t.palettes.filter((f)=>!r.has(f)),{startup:o,...a}=t,c={...a,palettes:i,...o&&i.includes(o)?{startup:o}:{}},u=s.length>0?[`Dropped ${s.join(", ")} — no longer in any marketplace`,...n.notes]:n.notes;return{...n,installed:c,notes:u}}function b_(t){try{return s_(process.execPath,[rt(t,"ttheme","ttheme.js"),"--version"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function _2(t){let e=Ge(t);return[vt(t.terminals).map((n)=>n.name).join(", "),`${t.palettes.length} palettes`,e?`default ${e}`:"no default — ttheme is off"].join(" · ")}function wb(t,e=tn()){for(let o of t.copies)if(T2(fa(o.to),{recursive:!0}),eu(o.to,{force:!0}),eu(`${o.to}.zwc`,{force:!0}),c_(o.from,o.to),o.executable)a_(o.to,493);H(t.settings.file,t.settings.content);for(let o of t.forget)eu(o,{force:!0});let n=fa(fa(t.settings.file)),r=F2(n),i=Object.fromEntries(vt(t.installed.terminals).flatMap((o)=>{let a=o.defaults?.key,c=a?r?.[a]:void 0;return a&&c?[[a,c]]:[]})),s=cc(n,{...t.installed,...i},e,t.home);if(Yt(s.marketplaces).includes(Y))Nk(n,t.manifest);en(n,s),Dt(n,lt(n),s,t.home,e);for(let o of t.edits){T2(fa(o.file),{recursive:!0});let a=Ie(o.file)?Si(o.file,"utf8"):"";In(o.file,ii(a,o.block))}for(let o of t.writes)H(o.file,o.content);return ds(n,s,!0,e,t.home)}function nu(t){if(ie(t))throw ei("Nothing changed"),new be;return t}function $b(t,e){return se.filter((n)=>yr[n].offered(t,e))}async function w_(t,e,n,r){return nu(await Ly({message:"Wire which terminals?",options:$b(n,r).map((i)=>({value:i,label:yr[i].name,hint:i===t?"detected":void 0})),initialValues:e,required:!0}))}async function $_(t){return nu(await Be({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:To(t,"TTHEME_WARP_FAST")!=="off"}))}function kb(t){let e=[...t.copies.filter((n)=>!Ie(n.to)).map((n)=>n.to),...Ie(t.settings.file)?[]:[t.settings.file],...t.edits.filter((n)=>!Si(n.file,"utf8").includes("# ttheme begin")).map((n)=>n.file),...t.writes.filter((n)=>!Ie(n.file)).map((n)=>n.file)];if(e.length>0)throw Error(`init left gaps:
751
+ It carries your tone, named ${a.name} so it does not clash with ${o.name}`:""}`)}}import{spawn as E6,spawnSync as Ux}from"node:child_process";import{existsSync as M6,readFileSync as Wx}from"node:fs";import{homedir as x6}from"node:os";import{join as Kx}from"node:path";function zx(t,e,n,r=x6(),i=(s)=>{process.stdout.write(s)}){if(!e||Lt(t)||t.TMUX||Zt(t)!=="terminal-app")return;let[s="",o="-"]=(t.TTHEME_TERMINAL_SHOWN??"").split(" "),a=t.TTHEME_TTY,c=s?He(X(n),s,r):void 0,u=Ml(Fo(n)).get(de(s))??[],f=u.find((G)=>G===`${j(s)}.${o}.png`)??u[0];if(!a||!c||o==="-"||!f||!M6(c.image))return;let l=Kx(Fo(n),f),d=["-l","JavaScript",El(n),"tab",a,wn(s)],h=D(n).terminalBase??"Basic",m=ap(t,r),p=Wx(l),b,$=l,k=0,v,S=!1,M=!1,x,N=(G)=>{S=!0,E6("osascript",[...d,h],{stdio:"ignore"}).on("close",()=>{if(S=!1,M)return;i(G);let L=x;x=void 0,L?.()})},R=(G,L)=>{b??=Wt(new Uint8Array(Wx(c.image)));let gt=Kx(Fo(n),`${j(s)}.h${process.pid}-${++k}.png`);Ai($,gt,Gr(_r(b,G,c.opacity,cp(b.width,b.height,c,m)))),$=gt,N(L)},T=()=>{if($!==l)Ai($,l,p),$=l},_=(G)=>{clearTimeout(v),v=setTimeout(()=>{if(S)x=G;else G()},Om)},K=()=>{clearTimeout(v),x=void 0};return{slots:[],paint(G){return _(G.name===s?()=>{T(),N("")}:()=>R(G.background,wr(G))),""},wear(G){return Ux("osascript",[...d.slice(0,-1),wn(G.name),h],{encoding:"utf8"}).stdout?.trim()==="worn"?"":wr(G)},saved:async()=>new Map,restore(){return K(),M=!0,T(),Ux("osascript",[...d,h],{stdio:"ignore"}),""},stop:K}}import{existsSync as Yc,readdirSync as O6,readFileSync as Gf,rmSync as Dx,statSync as Jx}from"node:fs";import{homedir as P6}from"node:os";import{join as Ts}from"node:path";var I6=150,R6=260;function Bf(t){return t?.includes(`path = "${j("")}`)===!0}function A6(t){try{return D(t).terminals.includes("warp")}catch{return!1}}function qx(t,e){let n=j(e);if(!Yc(t))return;return O6(t).filter((i)=>i.startsWith(`${n}.`)&&/^[0-9a-f]{8}\.yaml$/.test(i.slice(n.length+1))).map((i)=>({file:i,at:Jx(Ts(t,i)).mtimeMs})).sort((i,s)=>s.at-i.at)[0]?.file??(Yc(Ts(t,`${n}.yaml`))?`${n}.yaml`:void 0)}function N6(t,e){if(!e)return;let n;try{n=Gf(Ts(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 Yx(t,e,n,r=P6()){if(!e||Lt(t)||t.TMUX||Zt(t)!=="warp")return;let i=fi(r,n);if(!Yc(i)||!A6(n))return;let s=os(r),o=Pl(n),a=[],c=t.TTHEME_WARP_WEARS??Be(D(n)),u=N6(s,c&&qx(s,c)),f,l,d=(b)=>{let $=Gf(i,"utf8"),k=di($);if(k===b)return;if(Bf(b)&&!Bf(k)&&!Yc(o))C(o,k??"");if(xn(i,Il($,b)),!Bf(b))Dx(o,{force:!0})},h=(b)=>{for(let $ of a.splice(0))if($===b)a.push($);else Dx(Ts(s,$),{force:!0})},m=()=>{clearTimeout(f),clearTimeout(l)},p=(b,$,k)=>{m(),f=setTimeout(()=>{let v=$;if(!v)v=`${j(b.name)}.view-${process.pid}-${a.length+1}.yaml`,C(Ts(s,v),Xa(b,k)),a.push(v);let S=v,M=Date.now()-Jx(Ts(s,S)).mtimeMs;l=setTimeout(()=>{d(dp(b.name,S)),h(S)},Math.max(0,R6-M))},I6)};return{slots:[],paint:(b)=>{if(b.name===c)p(b,qx(s,b.name));else if(u)p(b,void 0,u);else p(b,Yc(Ts(s,`${j(b.name)}.yaml`))?`${j(b.name)}.yaml`:void 0);return""},wear:(b,$)=>$.includes("warp")?"":void 0,saved:async()=>new Map([["theme",di(Gf(i,"utf8"))??""]]),restore:(b)=>{m();let $=b.get("theme");if($)d($);else if(Bf(di(Gf(i,"utf8"))))d(Ol);return h(),""}}}function aa(t,e,n){return zx(t,e,n)??Ky(t,e)??Yx(t,e,n)}function Uf(t){Gn(`
752
+ ${t} palettes installed — open a new tab, or reload your terminal config`)}function H6(t,e){return t.map((n)=>{if(bo(n))return n;let r=et(n);if(r===void 0)return e===Y?n:`${e}/${n}`;if(r!==e)throw Error(`${n} is not in ${e} — give its bare name, or leave --marketplace out`);return n})}async function Vx(t,e){let n=t.find((d)=>/^https?:\/\//i.test(d.trim())&&!bo(d));if(n)throw Error(`${n} is not a share link — one reads ${Fh}tt2:…`);let r=J(),i=e?H6(t,(await Bp(r,e)).id):t,s=ct(r),o=new Map,a=[...new Set(i.map((d)=>{let h=bo(d);if(!h)return d;let m=Px(r,h,s);return o.set(m.name,m),m.name}))],c=D(r),u=a.filter((d)=>c.palettes.includes(d)),f=a.filter((d)=>!c.palettes.includes(d));if(f.length===0){Dt(r,s,c),console.log(`Already installed: ${u.join(", ")}`);return}let l={...c,palettes:[...c.palettes,...f]};en(r,s,c,l);for(let d of f)console.log(` + ${d}`);await xs(r,zt(r,s,!1).palettes.filter((d)=>f.includes(d.name)).map((d)=>{let h=o.get(d.name);return h?{...d,pictures:h.pictures}:d}),l.terminals),Uf(l.palettes.length)}function Zx(t){let e=J(),n=ct(e),r=D(e),i=t.filter((a)=>r.palettes.includes(a)),s=t.filter((a)=>!r.palettes.includes(a));if(i.length===0)throw Error(`not installed: ${s.join(", ")} — \`ttheme list\` marks what is`);let o={...r,palettes:r.palettes.filter((a)=>!i.includes(a))};en(e,n,r,o),jo(e,n,r.terminals,i);for(let a of i)console.log(` - ${a}`);if(Uf(o.palettes.length),s.length>0)return console.error(`ttheme remove: not installed: ${s.join(", ")}`),1;return 0}function Xx(t){let e=J(),n=ct(e),r=D(e);if(!r.palettes.includes(t))throw Error(`${t} is not installed — \`ttheme add ${t}\` first`);let{off:i,...s}=r,o=en(e,n,r,{...s,startup:t},!0);console.log(n2(t,r.terminals,o).join(`
753
+ `))}function Qx(){let t=J();Dt(t,ct(t),D(t))}function t2(){let t=J(),e=D(t),n=cs(e);if(!n)throw Error("no palettes installed — `ttheme` picks some");if(!e.off){console.log(`Already on · ${n}`);return}let{off:r,...i}=e,s=en(t,ct(t),e,i);console.log(n2(n,i.terminals,s).join(`
754
+ `))}function e2(){let t=J(),e=D(t);if(e.off){console.log("Already off");return}let n=en(t,ct(t),e,{...e,off:!0}),r=cs(e);console.log(`Off · new tabs open in the terminal's own colors${r?` — \`ttheme on\` wears ${r} again`:""}`);for(let i of vt(e.terminals))if(n.get(i.id)?.restart)console.log(`${i.name} new tabs open on your own profile once ${i.name} restarts`)}function n2(t,e,n){let r=vt(e).filter((s)=>!s.defaults),i=r.length>0?[`Default ${t} · ${r.map((s)=>s.name).join(", ")} open new tabs with it once their config reloads`]:[];for(let s of vt(e)){let o=s.defaults?.profile(t);if(o)i.push(n.get(s.id)?.restart?`${s.name} new tabs open with it once ${s.name} restarts — "${o}" is now its default profile`:`${s.name} new tabs open with it — "${o}" is its default profile`)}return i.length>0?i:[`Default ${t} · no terminal is wired to open with it — \`ttheme init\` wires one`]}function F6(t,e){let n=new Map(e.palettes.map((r)=>[r.name,"marketplace"]));for(let r of ju(t,e.palettes,!1))n.set(r.name,"mine");return n}function r2(t,e=!1){let n=J(),r=ct(n),i=new Set(D(n).palettes),s=F6(n,r),o=It(zt(n,r).palettes);if(t)Ki(o);let a=_i(t?Lk(o,t):o),c=(d)=>s.get(d)??"kept";if(e){let d=a.map((h)=>({name:h.name,marketplace:et(h.name)??Y,...h.catalog?{catalog:h.catalog}:{},installed:i.has(h.name),source:c(h.name)}));console.log(JSON.stringify(d,null,2));return}let u=Math.max(...a.map((d)=>d.name.length),0),f={marketplace:"",mine:" · yours",kept:" · in no marketplace you added"},l=Kt(n);for(let d of a){let h=l[d.name]?" · tuned":"";console.log(` ${i.has(d.name)?"●":"○"} ${d.name.padEnd(u)} ${re(d)}${f[c(d.name)]}${h}`)}if(process.stdout.isTTY){let d=t?`${a.length} of ${o.length}`:`${o.length}`;console.log(`
755
+ ${d} palettes — ${a.filter((h)=>i.has(h.name)).length} installed`)}}function L6(t,e,n){let r=(s)=>{try{return mi(t,s)}catch{return}},i=e.find((s)=>s===n||ot(s)===n||r(s)===n);if(!i)throw Error(`no marketplace named ${n} — \`ttheme marketplace\` lists them`);return i}async function i2(t=[]){let e=J(),n=po(e),r=t.map((m)=>L6(e,n,m)),i=await Fv(),s=!1;if(i.latest)try{return Hv(i.latest,t)}catch(m){s=!0,console.log(` ttheme could not update to ${i.latest}: ${m.message}`)}else console.log(i.note);let o=(r.length>0?r:n).filter((m)=>m!==Y);if(r.length===0&&o.length===0)console.log("No marketplaces to update — `ttheme marketplace add <owner>/<repo>` adds one");let a=(m,p)=>`${zv(m,p)} — kept the copy from the last update`;for(let m of o.filter(_t))try{console.log(` ${fS(e,m)}`)}catch(p){console.log(` ${a(m,p)}`)}let c=o.filter((m)=>!_t(m)),u=new Set(c),f=[],l=hi(),d=()=>l.set(`Updating ${[...u].map(ot).join(", ")}${c.length>1?` · ${c.length-u.size}/${c.length}`:""}`);if(d(),await Promise.all(c.map(async(m)=>{let p=await Hp(e,m);if("refreshed"in p)f.push(p.refreshed);if(u.delete(m),u.size>0)d();else l.done();l.say(` ${"refreshed"in p?Fp(p.refreshed):a(m,p.failure)}`)})),l.done(),!T6(cr(e)))return s?1:0;for(let m of hs(e,f))console.log(` ${m}`);let h=Cp(e);if(h)console.log(h);return s?1:0}async function s2(t,e){let n=ct(t,!1),r=new Map(ko(t,n).filter((a)=>e.includes(a.name)).map((a)=>[a.name,a]));if(r.size===0)return;let i=Zr(t);$o(t,i.map((a)=>r.get(a.name)??a));let s=D(t);Dt(t,n,s);let o=new Map(i.map((a)=>[a.name,a.pictures]));await xs(t,zt(t,n,!1).palettes.filter((a)=>r.has(a.name)).map((a)=>zE(a,o.get(a.name))),s.terminals)}async function cb(t,e,n,r=!1){let i=process.env.TTHEME_SORT==="catalog"?t.palettes:_i(t.palettes);Ki(i);let s=process.stdout.isTTY===!0,o=aa(process.env,s,J()),a=o?await o.saved():new Map,c=new Yp({entries:i,scope:n,installed:e,required:r,color:!Lt(),fx:Zl(process.env.TTHEME_FX),onFocus:o?(f)=>process.stdout.write(o.paint(f)):void 0}),u=await c.prompt();if(o)process.stdout.write(o.restore(a));if(u==="cancel")return;return t.palettes.filter((f)=>c.picked.has(f.name)).map((f)=>f.name)}function ub(t,e,n,r){let i=n===Y?void 0:lc(t,n),s;try{s=i?.id??mi(t,n)}catch{s=yt(n)?Jr(n):ot(n)}return{source:n,id:s,...i?.info.description?{description:i.info.description}:{},shown:ot(n),entries:n===Y?Ko(t,n):i?.entries??[],auto:Yr(n,e.updates),status:Wp(t,n,r)}}function lb(t){return ko(t,ct(t,!1)).map((e)=>e.name)}function C6(t,e,n,r,i){return{refresh:async(s)=>{if(_t(s)){let a=ub(t,e,s,kr());return{marketplace:a,refreshed:{source:s,id:a.id,count:It(a.entries).length,change:{added:[],changed:[],gone:[]}},updates:lb(t)}}let o=await Tp(t,s,Pp);return{marketplace:ub(t,e,s,kr()),refreshed:o,updates:lb(t)}},fetch:async(s)=>{if(_t(s)){let a=Je(s),c=ye(a);return{source:s,id:c,...a.description?{description:a.description}:{},shown:ot(s),entries:Fn(s,c,Ko(t,Y),me(!1)),auto:!1,status:"read in place"}}let o=await uc(t,s,void 0,r);return n.set(s,o),{source:s,id:o.id,..."info"in o&&o.info.description?{description:o.info.description}:{},shown:ot(s),entries:o.entries,auto:Yr(s,{}),status:"not added yet"}},index:()=>Bl(r),apply:i}}function o2(...t){for(let e of hs(...t))Gn(e)}function j6(t,e,n){let r=[];for(let i of t.adds){let s=i.source!==Y&&(t.auto[i.source]??i.auto);r.push(`Added ${i.id} · ${i.shown} — ${qt(It(i.entries).length)}${s?", updating on its own":""}`)}for(let i of t.removes){let s=e.find((a)=>a.source===i)?.id??i;r.push(`Removed ${s} · ${ot(i)}`);let o=n.filter((a)=>(et(a)??Y)===s);if(o.length>0)r.push(Up(o))}for(let[i,s]of Object.entries(t.auto)){let o=e.find((a)=>a.source===i);if(o&&!t.removes.includes(i))r.push(`${o.id} ${s?"updates on its own now":"no longer updates on its own"}`)}return r}async function _6(t,e,n,r){let i=D(t),s=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)Wo(t,p)}for(let m of n.removes)Gp(t,m);let o=[...Yt(i.marketplaces).filter((m)=>!n.removes.includes(m)),...n.adds.map((m)=>m.source)],a=hc(i,o,{...i.updates,...n.auto});if(s)tn(t,a);let c=ct(t,!1),u=zt(t,c,!1).palettes.filter((m)=>n.picked.has(m.name)).map((m)=>m.name),f=i.palettes.filter((m)=>!u.includes(m)),l=u.filter((m)=>!i.palettes.includes(m)),d=n.renew.filter((m)=>u.includes(m));if(!s&&l.length===0&&f.length===0&&d.length===0){o2(t,n.refreshed),Gn("Nothing changed");return}let h={...a,palettes:u};en(t,c,i,h),jo(t,c,i.terminals,f);for(let m of j6(n,e,u))Gn(m);for(let m of l)Gn(` + ${m}`);for(let m of f)Gn(` - ${m}`);for(let m of hs(t,n.refreshed))Gn(m);if(await xs(t,zt(t,c,!1).palettes.filter((m)=>l.includes(m.name)),h.terminals),d.length>0){await s2(t,d);for(let m of d)Gn(` ↑ ${m}`)}if(l.length>0||f.length>0)Uf(h.palettes.length)}async function a2(){let t=oy(process.env),e=J(),n=D(e),r=Zr(e),i=kr(),s=Go(),o=Yt(n.marketplaces).map((k)=>ub(e,n,k,i)),a=new Set(o.flatMap((k)=>k.entries.map((v)=>v.name))),c=r.filter((k)=>n.palettes.includes(k.name)&&!a.has(k.name));Ki([...o.flatMap((k)=>k.entries),...c]);let u=new Map,f=new AbortController,l=process.stdout.isTTY===!0,d=aa(process.env,l,e),h=d&&!t?await d.saved():new Map,m=Be(n);if(t)process.stdout.write("\x1B[?2026h");let p=new Xp({marketplaces:o,kept:c,installed:n.palettes,updates:lb(e),tuned:Object.keys(Kt(e)),...m?{startup:m}:{},...t?{hub:t}:{},due:s?Rp(e,n):[],io:C6(e,n,u,f.signal,(k,v)=>vv({say:v.say,set:v.status},()=>_6(e,o,k,u))),...process.env.TTHEME_SORT==="catalog"?{}:{order:_i},color:!Lt(),lookups:process.env.TTHEME_MARKETPLACE_LOOKUP!=="off",fx:Zl(process.env.TTHEME_FX),owns:l&&!t,...d?{onFocus:(k)=>process.stdout.write(d.paint(k))}:{}});try{await p.run()}finally{if(d?.stop?.(),d&&(!t||p.next()===void 0))process.stdout.write(d.restore(h));f.abort()}await p.idle();let b=p.result(),$=p.next();if(t&&$!==void 0)return o2(e,b.refreshed),$;if(l&&t)process.stdout.write("\x1B[?1049l\x1B[?25h");for(let k of b.refreshed){let v=Lp(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 hs(e,b.refreshed))console.log(k);console.log("Nothing changed")}return t?Ju:0}import{rmSync as c2}from"node:fs";import{basename as B6,join as Vc}from"node:path";var u2=Vc(import.meta.dirname,".."),G6=Vc(u2,"themes"),fb=Vc(u2,"dist"),Wf=se.map((t)=>$r[t].emitter),U6=[Hm,Bm],NX=Wf.map((t)=>t.id);async function Kf({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?Wf.filter((s)=>t.includes(s.id)):Wf,n=d$(G6),r=tw(n);if(r.length>0){for(let s of r)console.error(` ✗ ${s.theme} [${s.rule}] ${s.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===Wf.length)c2(fb,{recursive:!0,force:!0});else for(let s of e)c2(Vc(fb,s.id),{recursive:!0,force:!0});let i=0;for(let s of[...e,...U6]){let o=n.flatMap((u)=>s.emit?.(u)??[]),a=s.emitShared?.(n)??[];for(let u of[...o,...a])await Bun.write(Vc(fb,u.path),u.content),i++;let c=o.length>0?`${n.length} themes${s.limits?` (${s.limits})`:""}`:a.length>0?a.map((u)=>B6(u.path)).join(" "):`no files (${s.limits??"nothing to write"})`;console.log(` ${s.id.padEnd(16)} ${c}`)}console.log(`
756
+ ${n.length} themes (${h$(n).length} in the new-tab rotation) -> ${i} files in dist/`)}import{existsSync as z6,readFileSync as m2}from"node:fs";import{availableParallelism as W6,homedir as l2}from"node:os";var K6=4;async function zf(t,e,n=l2()){let r=Tt(X(t)),i=si(t),s=new Map(ve(t).palettes.map((l)=>[l.name,so(l)])),o=Object.entries(r.palettes).flatMap(([l,d])=>{let h=s.get(l);return h?d.pictures.filter((m)=>oo(m)||(m.blur??0)!==i||m.cut!==void 0&&m.matte!==Oa).map((m)=>({name:l,key:m.key,paint:h})):[]});if(o.length===0)return 0;e(`Drawing ${o.length} background picture${o.length===1?"":"s"} again${i?` · blur ${i}px`:""}`);let a=us(D(t).terminals),c=new Fg(Math.min(K6,W6()-1)),u=await c.map(o.map(({name:l,key:d,paint:h})=>({job:"redraw",home:t,user:n,name:l,key:d,paint:h,blur:i,aligns:a})));c.close();let f=[];return u.forEach((l,d)=>{let{name:h,key:m}=o[d];if(l instanceof Error||l===null){e(` ▢ ${h} ${m} — ${l instanceof Error?l.message:"no original to draw it from"}, left as it was`);return}f.push({name:h,picture:l})}),yh(t,f),Ge(t,n),f.length}async function f2(t,e,n,r,i=l2()){let s=Tt(X(t)).palettes[e],o=s?.pictures.find((f)=>f.key===(r??s.active));if(!s||!o)throw Error(`${e} has no picture ${r??"shown"}`);if(qe(o)===n)return{key:o.key,changed:!1};let a=ve(t).palettes.find((f)=>f.name===e);if(!a)throw Error(`no palette called ${e}`);let c=us(D(t).terminals),u=await bf(t,e,o.key,so(a),si(t),c,i,n);if(!u)throw Error(`${e} ${o.key} has no original to draw it from`);return yh(t,[{name:e,picture:u}]),Ge(t,i),{key:o.key,changed:!0}}function d2(t,e,n){let r=Tt(X(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 s=ve(t).palettes.find((a)=>a.name===e);if(!s)throw Error(`no palette called ${e}`);let o=qe(i)==="original"?"tone":"original";if(!JE(t,e,i.key,so(s),si(t),o))throw Error(`${e} ${i.key} has no original to draw it from`);return{key:i.key,coloring:o}}async function h2(){return await zf(J(),(t)=>process.stderr.write(`${t}
757
+ `)),0}async function p2(t,e,n){let r=J();if(Ln(ve(r).palettes,t),e==="show"){if(!n)throw Error("image show needs the picture to show");let{at:i,of:s}=ao(r,t,n);return Ge(r),process.stderr.write(`Background · ${t} ${i}/${s} ${n}
758
+ `),0}if(e==="drop"){let{key:i,left:s}=Ou(r,t,n);return Ge(r),process.stderr.write(`Background · ${t} removed ${i} · ${s} left
759
+ `),0}if(e==="tone"||e==="original"){let i=await f2(r,t,e,n);return process.stderr.write(`Background · ${t} ${i.key} ${e==="tone"?"tinted":"in its own colors"}
760
+ `),0}if(e==="prepare"){let{key:i,coloring:s}=d2(r,t,n);return process.stderr.write(`Background · ${t} ${i} ready in ${s==="tone"?"its tone":"its own colors"}
761
+ `),0}if(e==="tuned")return Ge(r),0;throw Error(`unknown image action ${e} — show, drop, tone, original, prepare or tuned`)}function g2(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,s]=n.slice(1).map(Number),[o,a,c,u]=r.slice(1).map(Number);return{width:i,height:s,at:{x:c,y:u,w:o,h:a}}}function D6(t,e,n){let r=g2(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 b2(t,e,n,r){let i=new Uint8Array(m2(t)),s=g2(n,r),o=Wt(i),a=b0(i);return C(e,a?sr(a0(ir(o),s),a):De(o0(o,s))),0}function w2(t,e,n,r,i,s,o){let a=Number(r);if(!we(n)||!Number.isFinite(a))throw Error("flatten needs a #rrggbb background and an opacity from 0 to 1");let c=Wt(new Uint8Array(m2(t))),u=i?D6(c,i,s??""):void 0,f=Gr(_r(c,n,Math.max(0,Math.min(1,a)),u));if(o&&z6(o))Ai(o,e,f);else C(e,f);return 0}import{execFileSync as q6}from"node:child_process";import{readFileSync as J6}from"node:fs";import{arch as Y6,platform as Df,release as db}from"node:os";var V6={ghostty:"ghostty",iterm2:"iTerm.app",wezterm:"WezTerm","terminal-app":"Apple_Terminal",warp:"WarpTerminal"};function Z6(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=V6[t];return n!==void 0&&e.TERM_PROGRAM===n?e.TERM_PROGRAM_VERSION:void 0}function X6(t){let e=Zt(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 (${xm(t)})`:`${e} ${Z6(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 $2(t,e){try{return q6(t,e,{encoding:"utf8",timeout:2000,stdio:["ignore","pipe","ignore"]}).trim()}catch{return}}function Q6(){let t=Y6();if(Df()==="darwin")return`macOS ${$2("sw_vers",["-productVersion"])??`(Darwin ${db()})`} · ${t}`;if(Df()==="linux"){let e="";try{e=J6("/etc/os-release","utf8")}catch{}return`${/^PRETTY_NAME="?([^"\n]*)"?$/m.exec(e)?.[1]??"Linux"} · linux ${db()} · ${t}`}return`${Df()==="win32"?"Windows":Df()} ${db()} · ${t}`}function t_(t){if(t.TTHEME_ZSH)return`zsh ${t.TTHEME_ZSH}`;return(t.SHELL?$2(t.SHELL,["--version"])?.split(`
762
+ `)[0]:void 0)??t.SHELL??"unknown"}function e_(t){try{let{terminals:e}=D(t);return e.length>0?e.join(", "):"none"}catch{return"installed.json missing or unreadable"}}function n_(t){let e=pl.flatMap((n)=>{let r=t[n];return r===void 0||r===Ya(n)?[]:[`${n}=${/\s/.test(r)?JSON.stringify(r):r}`]});return e.length>0?e.join(" "):void 0}function k2(){let t=process.env,n=[["ttheme",lt.version],["OS",Q6()],["Shell",t_(t)],["Terminal",X6(t)],["Wired",e_(J())],["Settings",n_(t)]].filter((i)=>i[1]!==void 0),r=Math.max(...n.map(([i])=>i.length));for(let[i,s]of n)console.log(`${i.padEnd(r)} ${s}`)}import{execFileSync as i_,spawnSync as s_}from"node:child_process";import{chmodSync as o_,copyFileSync as a_,existsSync as Ir,mkdirSync as A2,readdirSync as c_,readFileSync as Qc,rmSync as pb}from"node:fs";import{homedir as u_}from"node:os";import{dirname as ca,join as pt}from"node:path";import{existsSync as y2}from"node:fs";import{basename as r_,join as Zc}from"node:path";var v2=["zsh","bash","fish"];function qf(t){let e=r_(t??"").replace(/^-/,"");return v2.includes(e)?e:void 0}function mb(t,e){for(let n=e,r=0;n>1&&r<12;r++){let[i,...s]=t("ps",["-o","ppid=,comm=","-p",String(n)])?.trim().split(/\s+/)??[],o=qf(s.join(" "));if(o)return o;n=Number(i)}return}function S2(t,e){let n=new Set(["zsh",qf(t.env.SHELL),mb(t.run,e)]);return v2.filter((r)=>n.has(r))}var hb="ttheme-zdotdir:";function Jf(t,e){if(t.env.ZDOTDIR)return t.env.ZDOTDIR;let n=t.run("zsh",["-c",`print -rn -- "${hb}\${ZDOTDIR:-$HOME}"`])??"",r=n.lastIndexOf(hb);return r>=0&&n.slice(r+hb.length)||e}function E2(t){return t.run("zsh",["-fc","print ok"])==="ok"}var M2=[".bash_profile",".bash_login",".profile"];function x2(t,e){let n=Zc(t,".bashrc"),r=M2.map((s)=>Zc(t,s)).find((s)=>y2(s)),i=[...y2(n)?[n]:[],...r?[r]:[]];if(e==="darwin"&&!r)i.push(Zc(t,".bash_profile"));return i.length>0?i:[n]}function O2(t){return[".bashrc",...M2].map((e)=>Zc(t,e))}var P2=`zsh -c 'source ${ml} && ttheme "$@"' ttheme`;function I2(){return`# ${Me}
763
+ ttheme() { ${P2} "$@"; }`}function Yf(t){return Zc(t,"fish","functions","ttheme.fish")}function R2(){return[`# ${Me}`,"function ttheme --description 'Run ttheme through zsh'",` ${P2} $argv`,"end",""].join(`
764
+ `)}function Vf(t){return t.startsWith(`# ${Me}
765
+ `)}function l_(t,e){return c_(t).map((n)=>({from:pt(t,n),to:pt(e,n)}))}function $b(t){return Vr(Qc(pt(t,"dist","manifest.json"),"utf8"))}function Zf(t,e){let n=pt(e.configHome,"ttheme"),r=[{from:pt(e.root,"bin","ttheme.js"),to:pt(n,"ttheme.js")},{from:pt(e.root,"bin","ttheme.js.map"),to:pt(n,"ttheme.js.map")},{from:pt(e.root,"bin","package.json"),to:pt(n,"package.json")},{from:pt(e.root,"shell","ttheme.zsh"),to:pt(n,"ttheme.zsh")},{from:pt(e.root,"shell","preview.zsh"),to:pt(n,"preview.zsh")},{from:pt(e.root,"shell","launch-tab.zsh"),to:pt(n,"launch-tab.zsh"),executable:!0},...l_(pt(e.root,"shell","adapters"),pt(n,"adapters"))],i=e.shells??["zsh"],s=[{file:pt(e.zdotdir,".zshrc"),block:Qy(),about:"source ttheme.zsh"},...i.includes("bash")?x2(e.home,e.platform??process.platform).map((p)=>({file:p,block:I2(),about:"the ttheme command, run through zsh"})):[]],o=Yf(e.configHome),a=!Ir(o)||Vf(Qc(o,"utf8")),c=i.includes("fish")&&a?[{file:o,content:R2(),about:"the ttheme command, run through zsh"}]:[],u=pt(n,"config.zsh"),f=e1(Ir(u)?Qc(u,"utf8"):""),l={file:u,content:t.warpFast===void 0?f:bl(f,"TTHEME_WARP_FAST",t.warpFast?"on":"off")},d={terminals:t.terminals,palettes:t.palettes,...Object.fromEntries(vt(t.terminals).flatMap((p)=>Object.entries(p.installs?.(e)??{}).filter(([,b])=>b!==void 0))),...t.off?{off:!0}:{}},h=[...Ll(e.configHome,d,e.home),...i.includes("fish")&&!a?[`${dt(o,e.home)} is a function of your own — ttheme left it, so fish has no ttheme command`]:[],...i.some((p)=>p!=="zsh")?[`${i.filter((p)=>p!=="zsh").join(" and ")} run ttheme through zsh — a pin taking effect on cd, the picture following the tab in front and the repaint after a program resets the colors stay with zsh tabs`]:[]],m=e.stateDir?[pt(e.stateDir,"ghostty",".blind")]:[];return{home:e.home,copies:r,edits:s,writes:c,settings:l,forget:m,manifest:$b(e.root),installed:d,notes:h}}function T2(t){try{return D(t)}catch{return}}function H2(t,e){try{return zt(t,ct(t,!1,e),!1).palettes}catch{return[]}}function f_(t,e){let n=$b(e.root),r=Yt(t.marketplaces).includes(Y)?n.palettes:[],i=new Set(r.map((o)=>o.name)),s=H2(e.configHome,n).filter((o)=>!i.has(o.name)&&(et(o.name)!==void 0||t.palettes.includes(o.name)));return{...n,palettes:[...r,...s]}}function F2(t,e){let n=cs(t);return n&&e.includes(n)?n:void 0}function d_(t,e,n){let r=Zf(e,n),i=F2(t,e.palettes),s=new Set(["terminals","palettes","off","startup",...se.flatMap((a)=>Object.keys($r[a].installs?.(n)??{}))]),o=Object.fromEntries(Object.entries(t).filter(([a])=>!s.has(a)));return{...r,installed:{...o,...r.installed,...i?{startup:i}:{}}}}function h_(t,e){let n=Zf({terminals:t.terminals,palettes:t.palettes,off:t.off},e),r=new Set([...n.manifest.palettes,...H2(e.configHome,n.manifest)].map((f)=>f.name)),i=t.palettes.filter((f)=>r.has(f)),s=t.palettes.filter((f)=>!r.has(f)),{startup:o,...a}=t,c={...a,palettes:i,...o&&i.includes(o)?{startup:o}:{}},u=s.length>0?[`Dropped ${s.join(", ")} — no longer in any marketplace`,...n.notes]:n.notes;return{...n,installed:c,notes:u}}function m_(t){try{return i_(process.execPath,[pt(t,"ttheme","ttheme.js"),"--version"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function L2(t){let e=Be(t);return[vt(t.terminals).map((n)=>n.name).join(", "),`${t.palettes.length} palettes`,e?`default ${e}`:"no default — ttheme is off"].join(" · ")}function gb(t,e=Qe()){for(let o of t.copies)if(A2(ca(o.to),{recursive:!0}),pb(o.to,{force:!0}),pb(`${o.to}.zwc`,{force:!0}),a_(o.from,o.to),o.executable)o_(o.to,493);C(t.settings.file,t.settings.content);for(let o of t.forget)pb(o,{force:!0});let n=ca(ca(t.settings.file)),r=T2(n),i=Object.fromEntries(vt(t.installed.terminals).flatMap((o)=>{let a=o.defaults?.key,c=a?r?.[a]:void 0;return a&&c?[[a,c]]:[]})),s=sc(n,{...t.installed,...i},e,t.home);if(Yt(s.marketplaces).includes(Y))Rk(n,t.manifest);tn(n,s),Dt(n,ct(n),s,t.home,e);for(let o of t.edits){A2(ca(o.file),{recursive:!0});let a=Ir(o.file)?Qc(o.file,"utf8"):"";xn(o.file,ii(a,o.block))}for(let o of t.writes)C(o.file,o.content);return ls(n,s,!0,e,t.home)}function Xc(t){if(ie(t))throw ei("Nothing changed"),new be;return t}function bb(t,e){return se.filter((n)=>$r[n].offered(t,e))}async function p_(t,e,n,r){return Xc(await Ty({message:"Wire which terminals?",options:bb(n,r).map((i)=>({value:i,label:$r[i].name,hint:i===t?"detected":void 0})),initialValues:e,required:!0}))}async function g_(t){return Xc(await _e({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:Ro(t,"TTHEME_WARP_FAST")!=="off"}))}function wb(t){let e=[...t.copies.filter((n)=>!Ir(n.to)).map((n)=>n.to),...Ir(t.settings.file)?[]:[t.settings.file],...t.edits.filter((n)=>!Qc(n.file,"utf8").includes("# ttheme begin")).map((n)=>n.file),...t.writes.filter((n)=>!Ir(n.file)).map((n)=>n.file)];if(e.length>0)throw Error(`init left gaps:
768
766
  ${e.join(`
769
- `)}`)}function B2(t,e){return[...new Set(t.palettes.filter((n)=>e.includes(n.name)).map(re))]}function k_(t,e,n){let r=t.palettes.find((o)=>o.name===Ge(e)),i=process.stdout.isTTY===!0,s=r&&la(process.env,i,n)?.wear(r,e.terminals);if(s===void 0)return!1;return process.stdout.write(s),!0}function y_(t,e){let n=Ge(t);if(!n)return["Default none — new tabs keep the terminal colors",`Turn on \`ttheme on\` wears ${ls(t)}`];return[`Default ${n}${e?" — this tab wears it already":""}`,"Change it `ttheme`, enter on a palette, then default"]}function v_(t){o_("zsh",["-c",'source "$1" && __tt_preview init',"zsh",rt(t,"ttheme","ttheme.zsh")],{stdio:"inherit"})}function vb(t){return t==="bash"?"exec bash -l":`exec ${t}`}function S_(t,e,n,r,i){let s=B2(t.manifest,e.palettes);Gn([`${s.join(", ")} (${e.palettes.length})`,...y_(t.installed,n)].join(`
770
- `),`Installed ${e.palettes.length} palettes`),Gn([`${vb(i).padEnd(18)}The ttheme command in this tab`,...Sb(t,r)].join(`
771
- `),"Next"),Ya("Done")}function Sb(t,e){return[..._l(fa(fa(t.settings.file)),t.installed,e,t.home),...t.notes]}function G2(t){return t?(e)=>wr.step(e):(e)=>console.log(e)}async function H2(t,e,n,r,i,s){let o=g_(t,e),a=wb(o,n);kb(o),await qf(e.configHome,G2(r),e.home);let c=[`${vb(i).padEnd(18)}Open tabs run the new layer — new tabs already do`,...Sb(o,a),...s],u=`Updated to ${dt.version} — kept ${_2(o.installed)}`;if(!r){console.log([u,...c].join(`
772
- `));return}Gn(c.join(`
773
- `),u),Ya("Done")}function E_(t,e,n){let r=[`Placed ${t.copies.length} files`,`Settings in ${t.settings.file} — edit later with \`ttheme config\``,...[...t.edits,...t.writes].map((i)=>`Wired ${i.file}`),...Sb(t,e),`No palettes yet — open a new shell (\`${vb(n)}\`), then \`ttheme\` picks them from your marketplaces`];console.log(r.join(`
774
- `))}async function U2(t={}){let e=rt(import.meta.dirname,"..");for(let I of["ttheme.js","package.json"])if(!Ie(rt(e,"bin",I)))throw Error(`bin/${I} is missing — run \`mise run bin:build\` first`);if(!Ie(rt(e,"dist"))){if(typeof Bun>"u")throw Error("this package is missing dist/ — reinstall @kecan0406/ttheme");await Df()}let n=l_(),r=J(),i=tn();if(!x2(i))throw Error("ttheme runs its tab layer in zsh, even for bash and fish — install zsh first");let s=fv(i),o=process.env.WT_PROFILE_ID,a=rt(process.env.XDG_STATE_HOME??rt(n,".local","state"),"ttheme"),c={root:e,home:n,configHome:r,zdotdir:Vf(i,n),shells:M2(i,process.ppid),platform:i.platform,stateDir:a,...s?{wtHome:s}:{},...o?{wtProfile:o}:{}},u=bb(i.run,process.ppid)??Yf(i.env.SHELL)??"zsh",f=Zt(process.env),l=$b(c,i).filter((I)=>I===f);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=h_(r,a),h=F2(r);if(t.yes&&h){await H2(h,c,i,!1,u,d);return}if(t.yes){if(l.length===0)throw Error(`no supported terminal detected — run this inside ${vt($b(c,i)).map((G)=>G.name.toLowerCase()).join(", ").replace(/, ([^,]*)$/," or $1")}`);let j=td({terminals:l,palettes:[]},c),U=wb(j,i);kb(j),E_(j,U,u);return}if(ul("ttheme init"),h){let I=b_(r);if(nu(await Be({message:`ttheme${I?` ${I}`:""} is installed — ${_2(h)}
775
- ${I===dt.version?"Reinstall":"Update to"} ${dt.version} and keep all of it?`,active:"Yes",inactive:"No, set it up again",initialValue:!0}))){await H2(h,c,i,!0,u,d);return}for(let U of d)wr.step(U)}let m=await w_(f,h?.terminals??l,c,i),p=m.includes("warp")?await $_(r):void 0,b=h?m_(h,c):yb(e),$=h?await fb(b,h.palettes,"palette",!0):await fb(b,[],"catalog",!0);if(!$)throw ei("Nothing changed"),new be;let k=(h&&j2(h,$))??$[0],S=$.length>1&&(Ee[f].paints||f==="warp"&&m.includes("warp")&&Ie(fi(n,r))),v=nu(await Be({message:S?"Pick a default palette in ttheme once installed?":`Wear ${k} in every tab?`,initialValue:h?!h.off:!0})),x={terminals:m,palettes:$,off:!v,warpFast:p},M=h?p_(h,x,c):td(x,c);if(Gn([`Install ${$.length} palettes — ${B2(b,$).join(", ")}`,`Copy ${M.copies.length} files under ${r}`,`Write ${M.settings.file}`,...M.edits.map((I)=>`Edit ${I.file} — a ttheme block: ${I.about}`),...M.writes.map((I)=>`Write ${I.file} — ${I.about}`),...Cl(r,M.installed,n),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out",v?S?`Open ttheme — every tab wears the palette picked there, ${k} until then`:`Paint every tab with ${k}, this one now`:"Leave the terminal colors as they are — `ttheme on` wears a palette later",...v&&k?vt(m).flatMap((I)=>I.defaults?[`Make "${I.defaults.profile(k)}" the ${I.name} default profile`]:[]):[]].join(`
776
- `),`Wiring ${vt(m).map((I)=>I.name).join(", ")}`),!nu(await Be({message:"Apply these changes?"})))throw ei("Nothing changed"),new be;let N=wb(M,i);if(kb(M),await qf(r,G2(!0),n),v&&S)v_(r);let C=D(r);S_({...M,manifest:b,installed:C},x,k_(b,C,r),N,u)}import{spawn as M_}from"node:child_process";import{createHash as x_}from"node:crypto";import{existsSync as Eb,mkdirSync as O_,readFileSync as P_,statSync as I_,utimesSync as R_,writeFileSync as A_}from"node:fs";import{homedir as D2}from"node:os";import{join as q2}from"node:path";import{gunzipSync as N_}from"node:zlib";var W2="https://github.com/kecan0406/aninames/releases/latest/download",J2=86400000,T_=3600000,H_=120000;function Y2(t){return q2(Jr(t),".checked")}function L_(t=process.env){return t.TTHEME_NAMES!=="off"}function F_(t){try{return Date.now()-I_(Y2(t)).mtimeMs>=J2}catch{return!0}}function Mb(t,e){let n=Y2(t);if(O_(Jr(t),{recursive:!0}),!Eb(n))A_(n,"");R_(n,e/1000,e/1000)}function V2(t=D2()){if(!L_()||!F_(t))return;try{Mb(t,Date.now()),M_(process.execPath,[process.argv[1],"names"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}function K2(t){return x_("sha256").update(t).digest("hex")}async function z2(t){let e=await fetch(t,{signal:AbortSignal.timeout(H_)});if(!e.ok)throw Error(`${t} answered ${e.status}`);return new Uint8Array(await e.arrayBuffer())}async function Z2(t=D2()){let e=Jr(t);try{let r=JSON.parse(new TextDecoder().decode(await z2(`${W2}/ttheme.json`)));for(let[i,{file:s,sha256:o}]of Object.entries(r.layers)){let a=q2(e,`ttheme-${i}.json`);if(Eb(a)&&K2(P_(a))===o)continue;let c=N_(await z2(`${W2}/${s}`));if(K2(c)!==o)throw Error(`${s} does not match its hash`);H(a,c)}Mb(t,Date.now())}catch{return Mb(t,Date.now()-J2+T_),1}Fu(t);let n=J();if(Eb(gn(n)))zi(ve(n).palettes,t),bv(n,t);return 0}import{createHash as C_}from"node:crypto";import{existsSync as xb,readdirSync as X2,readFileSync as Ob,rmSync as j_,statSync as __,utimesSync as B_}from"node:fs";import{homedir as G_}from"node:os";import{join as Ei}from"node:path";var U_=new Set(["814e75361c745b9f1467c82bee90ab3f47daeaa70a528d330a4bc8aec9faeeb9","668092ea188445700b02d60a102c429e092e46fcd88c33509b9f1fd64d68e6a6","bf52a8c6d019f59f71723be460d7fe450234d0f03ff0f35e94db2c42455f00ba","8df4e3246f2cf26deaa0f620f31e94efac21104ec2dbe81fba55ba066141aeb4","7bdc8051f34b902e970df84df0e4c8d27331b5e04da7f7b498d50b592eaa72f2","e06b39cd6fa2701bd360b7062d82d4a56766aba97889dfa547d14db5895454f1"]);function Q2(t){try{return X2(t).map((e)=>Ei(t,e)).filter((e)=>__(e).isFile())}catch{return[]}}function W_(t){let e=t.slice(t.lastIndexOf("/")+1);if(e.startsWith(_("")))return!1;let n=e.replace(/\.(conf|toml)$/,""),r=Ob(t,"utf8");return r.startsWith(`# ${n} — `)&&r.split(`
767
+ `)}`)}function C2(t,e){return[...new Set(t.palettes.filter((n)=>e.includes(n.name)).map(re))]}function b_(t,e,n){let r=t.palettes.find((o)=>o.name===Be(e)),i=process.stdout.isTTY===!0,s=r&&aa(process.env,i,n)?.wear(r,e.terminals);if(s===void 0)return!1;return process.stdout.write(s),!0}function w_(t,e){let n=Be(t);if(!n)return["Default none — new tabs keep the terminal colors",`Turn on \`ttheme on\` wears ${cs(t)}`];return[`Default ${n}${e?" — this tab wears it already":""}`,"Change it `ttheme`, enter on a palette, then default"]}function $_(t){s_("zsh",["-c",'source "$1" && __tt_preview init',"zsh",pt(t,"ttheme","ttheme.zsh")],{stdio:"inherit"})}function kb(t){return t==="bash"?"exec bash -l":`exec ${t}`}function k_(t,e,n,r,i){let s=C2(t.manifest,e.palettes);jn([`${s.join(", ")} (${e.palettes.length})`,...w_(t.installed,n)].join(`
768
+ `),`Installed ${e.palettes.length} palettes`),jn([`${kb(i).padEnd(18)}The ttheme command in this tab`,...yb(t,r)].join(`
769
+ `),"Next"),Da("Done")}function yb(t,e){return[...Cl(ca(ca(t.settings.file)),t.installed,e,t.home),...t.notes]}function j2(t){return t?(e)=>ti.step(e):(e)=>console.log(e)}async function N2(t,e,n,r,i){let s=h_(t,e),o=gb(s,n);wb(s),await zf(e.configHome,j2(r),e.home);let a=[`${kb(i).padEnd(18)}Open tabs run the new layer — new tabs already do`,...yb(s,o)],c=`Updated to ${lt.version} — kept ${L2(s.installed)}`;if(!r){console.log([c,...a].join(`
770
+ `));return}jn(a.join(`
771
+ `),c),Da("Done")}function y_(t,e,n){let r=[`Placed ${t.copies.length} files`,`Settings in ${t.settings.file} — edit later with \`ttheme config\``,...[...t.edits,...t.writes].map((i)=>`Wired ${i.file}`),...yb(t,e),`No palettes yet — open a new shell (\`${kb(n)}\`), then \`ttheme\` picks them from your marketplaces`];console.log(r.join(`
772
+ `))}async function _2(t={}){let e=pt(import.meta.dirname,"..");for(let R of["ttheme.js","package.json"])if(!Ir(pt(e,"bin",R)))throw Error(`bin/${R} is missing — run \`mise run bin:build\` first`);if(!Ir(pt(e,"dist"))){if(typeof Bun>"u")throw Error("this package is missing dist/ — reinstall @kecan0406/ttheme");await Kf()}let n=u_(),r=J(),i=Qe();if(!E2(i))throw Error("ttheme runs its tab layer in zsh, even for bash and fish — install zsh first");let s=uv(i),o=process.env.WT_PROFILE_ID,a=pt(process.env.XDG_STATE_HOME??pt(n,".local","state"),"ttheme"),c={root:e,home:n,configHome:r,zdotdir:Jf(i,n),shells:S2(i,process.ppid),platform:i.platform,stateDir:a,...s?{wtHome:s}:{},...o?{wtProfile:o}:{}},u=mb(i.run,process.ppid)??qf(i.env.SHELL)??"zsh",f=Zt(process.env),l=bb(c,i).filter((R)=>R===f);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=T2(r);if(t.yes&&d){await N2(d,c,i,!1,u);return}if(t.yes){if(l.length===0)throw Error(`no supported terminal detected — run this inside ${vt(bb(c,i)).map((K)=>K.name.toLowerCase()).join(", ").replace(/, ([^,]*)$/," or $1")}`);let T=Zf({terminals:l,palettes:[]},c),_=gb(T,i);wb(T),y_(T,_,u);return}if(al("ttheme init"),d){let R=m_(r);if(Xc(await _e({message:`ttheme${R?` ${R}`:""} is installed — ${L2(d)}
773
+ ${R===lt.version?"Reinstall":"Update to"} ${lt.version} and keep all of it?`,active:"Yes",inactive:"No, set it up again",initialValue:!0}))){await N2(d,c,i,!0,u);return}}let h=await p_(f,d?.terminals??l,c,i),m=h.includes("warp")?await g_(r):void 0,p=d?f_(d,c):$b(e),b=d?await cb(p,d.palettes,"palette",!0):await cb(p,[],"catalog",!0);if(!b)throw ei("Nothing changed"),new be;let $=(d&&F2(d,b))??b[0],k=b.length>1&&(Ee[f].paints||f==="warp"&&h.includes("warp")&&Ir(fi(n,r))),v=Xc(await _e({message:k?"Pick a default palette in ttheme once installed?":`Wear ${$} in every tab?`,initialValue:d?!d.off:!0})),S={terminals:h,palettes:b,off:!v,warpFast:m},M=d?d_(d,S,c):Zf(S,c);if(jn([`Install ${b.length} palettes — ${C2(p,b).join(", ")}`,`Copy ${M.copies.length} files under ${r}`,`Write ${M.settings.file}`,...M.edits.map((R)=>`Edit ${R.file} — a ttheme block: ${R.about}`),...M.writes.map((R)=>`Write ${R.file} — ${R.about}`),...Fl(r,M.installed,n),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out",v?k?`Open ttheme — every tab wears the palette picked there, ${$} until then`:`Paint every tab with ${$}, this one now`:"Leave the terminal colors as they are — `ttheme on` wears a palette later",...v&&$?vt(h).flatMap((R)=>R.defaults?[`Make "${R.defaults.profile($)}" the ${R.name} default profile`]:[]):[]].join(`
774
+ `),`Wiring ${vt(h).map((R)=>R.name).join(", ")}`),!Xc(await _e({message:"Apply these changes?"})))throw ei("Nothing changed"),new be;let x=gb(M,i);if(wb(M),await zf(r,j2(!0),n),v&&k)$_(r);let N=D(r);k_({...M,manifest:p,installed:N},S,b_(p,N,r),x,u)}import{spawn as v_}from"node:child_process";import{createHash as S_}from"node:crypto";import{existsSync as vb,mkdirSync as E_,readFileSync as M_,statSync as x_,utimesSync as O_,writeFileSync as P_}from"node:fs";import{homedir as W2}from"node:os";import{join as K2}from"node:path";import{gunzipSync as I_}from"node:zlib";var B2="https://github.com/kecan0406/aninames/releases/latest/download",z2=86400000,R_=3600000,A_=120000;function D2(t){return K2(qr(t),".checked")}function N_(t=process.env){return t.TTHEME_NAMES!=="off"}function T_(t){try{return Date.now()-x_(D2(t)).mtimeMs>=z2}catch{return!0}}function Sb(t,e){let n=D2(t);if(E_(qr(t),{recursive:!0}),!vb(n))P_(n,"");O_(n,e/1000,e/1000)}function q2(t=W2()){if(!N_()||!T_(t))return;try{Sb(t,Date.now()),v_(process.execPath,[process.argv[1],"names"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}function G2(t){return S_("sha256").update(t).digest("hex")}async function U2(t){let e=await fetch(t,{signal:AbortSignal.timeout(A_)});if(!e.ok)throw Error(`${t} answered ${e.status}`);return new Uint8Array(await e.arrayBuffer())}async function J2(t=W2()){let e=qr(t);try{let r=JSON.parse(new TextDecoder().decode(await U2(`${B2}/ttheme.json`)));for(let[i,{file:s,sha256:o}]of Object.entries(r.layers)){let a=K2(e,`ttheme-${i}.json`);if(vb(a)&&G2(M_(a))===o)continue;let c=I_(await U2(`${B2}/${s}`));if(G2(c)!==o)throw Error(`${s} does not match its hash`);C(a,c)}Sb(t,Date.now())}catch{return Sb(t,Date.now()-z2+R_),1}Tu(t);let n=J();if(vb(lr(n)))Ki(ve(n).palettes,t),pv(n,t);return 0}import{createHash as H_}from"node:crypto";import{existsSync as Eb,readdirSync as Y2,readFileSync as Mb,rmSync as F_,statSync as L_,utimesSync as C_}from"node:fs";import{homedir as j_}from"node:os";import{join as Si}from"node:path";var __=new Set(["814e75361c745b9f1467c82bee90ab3f47daeaa70a528d330a4bc8aec9faeeb9","668092ea188445700b02d60a102c429e092e46fcd88c33509b9f1fd64d68e6a6","bf52a8c6d019f59f71723be460d7fe450234d0f03ff0f35e94db2c42455f00ba","8df4e3246f2cf26deaa0f620f31e94efac21104ec2dbe81fba55ba066141aeb4","7bdc8051f34b902e970df84df0e4c8d27331b5e04da7f7b498d50b592eaa72f2","e06b39cd6fa2701bd360b7062d82d4a56766aba97889dfa547d14db5895454f1"]);function V2(t){try{return Y2(t).map((e)=>Si(t,e)).filter((e)=>L_(e).isFile())}catch{return[]}}function B_(t){let e=t.slice(t.lastIndexOf("/")+1);if(e.startsWith(j("")))return!1;let n=e.replace(/\.(conf|toml)$/,""),r=Mb(t,"utf8");return r.startsWith(`# ${n} — `)&&r.split(`
777
775
  `)[1]?.startsWith("# ANSI: ")===!0||r.startsWith(`[metadata]
778
776
  name = "${n}"
779
- origin_url = "`)}function K_(t){let n=Q2(t).filter((r)=>U_.has(C_("sha256").update(Ob(r)).digest("hex")));return n.length>0&&n.length===X2(t).length?[t]:n}function z_(t){try{return D(t)}catch{return}}function D_(t){let{home:e,configHome:n}=t,r=z_(n),i={configHome:n,home:e},s=vt(se),o=s.map((u)=>u.unwire(i,r)),a=[Ei(n,"ttheme"),t.cacheDir,t.stateDir],c=Zf(n);return{edits:[...[...new Set([Ei(t.zdotdir,".zshrc"),Ei(e,".zshrc")])].flatMap((u)=>$n(u,Wn)),...I2(e).flatMap((u)=>$n(u,Wn)),...o.flatMap((u)=>u.edits)],removals:[...xb(c)&&Xf(Ob(c,"utf8"))?[c]:[],...s.flatMap((u)=>u.shelf?Ho(u.shelf.dir(i)):[]),...s.flatMap((u)=>u.shelf?Q2(u.shelf.dir(i)).filter(W_):[]),...K_(Ei(n,"ghostty","shaders")),...o.flatMap((u)=>u.removals),...a.filter((u)=>xb(u))],touches:o.flatMap((u)=>u.touches),...r?{state:r}:{}}}function q_(t,e,n=tn()){let r=[];for(let{file:s,content:o}of t.edits){let a=aw(s,o);r.push(a==="removed"?`Removed ${s} — ttheme had created it`:a==="restored"?`Took ttheme out of ${s}`:`Took ttheme out of ${s} — kept ${s}.ttheme.bak, since the file changed after ttheme's first edit`)}if(t.state){let s=ds(e.configHome,{...t.state,off:!0,palettes:[]},!1,n,e.home);for(let o of vt(t.state.terminals))if(s.has(o.id))r.push(`Gave ${o.name} its own default profile back — it takes it at its next start`)}for(let s of t.removals)j_(s,{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 s of t.touches)B_(s,i,i);return r}function J_(){let t=G_();return{home:t,configHome:J(),zdotdir:Vf(tn(),t),cacheDir:Ln(),stateDir:Ei(process.env.XDG_STATE_HOME??Ei(t,".local","state"),"ttheme")}}async function tO(t=!1){let e=J_(),n=D_(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=Ei(e.configHome,"ttheme");ul("ttheme uninstall"),Gn([...n.edits.map((s)=>`Take ttheme out of ${s.file}`),...n.removals.map((s)=>s===r?`Delete ${s} — settings, pins, every installed picture${xb(Yi(e.configHome))?`, and your marketplaces under ${Yi(e.configHome)} (push them to GitHub first to keep them)`:""}`:`Delete ${s}`)].join(`
780
- `),"Uninstall");let i=await Be({message:"Remove ttheme?"});if(ie(i)||!i)throw ei("Nothing changed"),new be}for(let r of q_(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 Y_}from"node:os";async function eO(t){if(!se.includes(t))throw Error(`no terminal ${t} — one of ${se.join(", ")}`);let e=t,n=yr[e],r=J(),i=Y_(),s=tn(),o=D(r);if(o.terminals.includes(e))return console.log(`${n.name} is wired already`),0;let a={configHome:r,home:i};if(!n.offered(a,s))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={...o,...n.installs?.(a)??{},terminals:[e]};Gn([...Cl(r,c,i),...jl(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(`
781
- `),`Wiring ${n.name}`);let u=await Be({message:`Wire ${n.name} now?`,initialValue:!1});if(ie(u)||!u)throw ei("Nothing changed"),new be;let f=cc(r,c,s,i),l={...f,terminals:[...o.terminals,e]};en(r,l),Dt(r,lt(r),l,i,s);let d=ds(r,f,!0,s,i),h=_l(r,f,d,i);if(h.length>0)Gn(h.join(`
782
- `),"Next");return Ya(`Wired ${n.name}`),0}var Z_=new Set(["add","remove","marketplace","default","on","off"]),X_={default:([t])=>t2(t),on:()=>n2(),off:()=>r2(),browse:()=>u2(),list:([t],{json:e})=>s2(t,e),add:(t,{marketplace:e})=>Xx(t,e),remove:(t)=>Qx(t),update:(t)=>o2(t),marketplace:([t,e])=>dS(t,e),new:([t],{from:e,in:n})=>Lx(t,e,n),edit:async(t)=>Fx(await nO(t,"edit")),check:async(t,{fix:e})=>Gx(await nO(t,"check"),e),share:async([t],{tone:e})=>{let n=e;if(t!==void 0)return lb(t,n);let r=await Px(n);if(!r)throw new Ar("name a palette",ed("share"));return lb(r.name,r.tone)},init:(t,{yes:e})=>U2({yes:e}),uninstall:(t,{yes:e})=>tO(e),wire:([t])=>eO(t),info:()=>v2(),build:(t,{only:e})=>Df({only:e}),find:([t])=>fx(t),image:([t,e,n])=>b2(t,e,n),sync:()=>e2(),redraw:()=>p2(),names:()=>Z2(),latest:()=>Av(),tone:([t,e,n])=>Cx(t,e,n),flatten:([t,e,n,r,i,s,o])=>k2(t,e,n,r,i,s,o),bake:([t,e,n,r])=>$2(t,e,n,r)},Q_=Ro.map((t)=>({...t,run:X_[t.name]}));class Ar extends Error{verb;constructor(t,e){super(t);this.verb=e}}function ed(t){let e=Q_.find((n)=>n.name===t);if(!e)throw new Ar(t.startsWith("-")?`unknown option '${t}'`:`unknown command '${t}'`);return e}async function nO([t],e){let n=t??await ab();if(n===void 0){let r=process.env.TTHEME_WORN;throw new Ar(`name a palette${r?` — this tab wears ${r}`:""}`,ed(e))}return n}function tB(t,e){let n={help:{type:"boolean",short:"h"}};for(let[r,{type:i,short:s,multiple:o}]of Object.entries(t.flags??{}))n[r]={type:i,multiple:o===!0,...s?{short:s}:{}};try{return V_({args:e,options:n,allowPositionals:!0})}catch(r){let[i=""]=(r instanceof Error?r.message:String(r)).split(". ");throw new Ar(`${i.charAt(0).toLowerCase()}${i.slice(1)}`,t)}}function eB(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:ed(n[0])}}let r=ed(e),i=tB(r,n);if(i.values.help)return{kind:"help",verb:r};for(let[f,{choices:l}]of Object.entries(r.flags??{}))for(let d of[i.values[f]??[]].flat())if(l&&!l.includes(String(d)))throw new Ar(`--${f} takes ${l.join(", ")} — not ${d}`,r);let s=i.positionals,o=r.args.filter((f)=>f.startsWith("<")).length,a=r.args.some((f)=>f.includes("..."))?Number.POSITIVE_INFINITY:r.args.length;if(s.length<o)throw new Ar(`missing ${r.args[s.length]}`,r);if(s.length>a)throw new Ar(`too many arguments: ${s.slice(a).join(" ")}`,r);let{help:c,...u}=i.values;return{kind:"run",verb:r,args:s,flags:u}}var nB=[TypeError,RangeError,ReferenceError,SyntaxError];function rB(t){return nB.some((e)=>t instanceof e)||t instanceof Error&&"code"in t}async function rO(t){let e;try{let n=eB(t);if(n.kind==="version")return console.log(dt.version),0;if(n.kind==="brief")return console.error(t1()),1;if(n.kind==="help")return console.log(n.verb?Am(n.verb):Za(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(Z_.has(n.verb.name))await Yv();let r=await n.verb.run(n.args,n.flags);if(!n.verb.hidden&&n.verb.name!=="uninstall"){if(V2(),n.verb.name!=="update"&&n.verb.name!=="init")Rv(),Lv()}return typeof r==="number"?r:0}catch(n){if(n instanceof Ar)return console.error(n.verb?`ttheme ${n.verb.name}: ${n.message}
777
+ origin_url = "`)}function G_(t){let n=V2(t).filter((r)=>__.has(H_("sha256").update(Mb(r)).digest("hex")));return n.length>0&&n.length===Y2(t).length?[t]:n}function U_(t){try{return D(t)}catch{return}}function W_(t){let{home:e,configHome:n}=t,r=U_(n),i={configHome:n,home:e},s=vt(se),o=s.map((u)=>u.unwire(i,r)),a=[Si(n,"ttheme"),t.cacheDir,t.stateDir],c=Yf(n);return{edits:[...[...new Set([Si(t.zdotdir,".zshrc"),Si(e,".zshrc")])].flatMap((u)=>gn(u,Bn)),...O2(e).flatMap((u)=>gn(u,Bn)),...o.flatMap((u)=>u.edits)],removals:[...Eb(c)&&Vf(Mb(c,"utf8"))?[c]:[],...s.flatMap((u)=>u.shelf?Ao(u.shelf.dir(i)):[]),...s.flatMap((u)=>u.shelf?V2(u.shelf.dir(i)).filter(B_):[]),...G_(Si(n,"ghostty","shaders")),...o.flatMap((u)=>u.removals),...a.filter((u)=>Eb(u))],touches:o.flatMap((u)=>u.touches),...r?{state:r}:{}}}function K_(t,e,n=Qe()){let r=[];for(let{file:s,content:o}of t.edits){let a=sw(s,o);r.push(a==="removed"?`Removed ${s} — ttheme had created it`:a==="restored"?`Took ttheme out of ${s}`:`Took ttheme out of ${s} — kept ${s}.ttheme.bak, since the file changed after ttheme's first edit`)}if(t.state){let s=ls(e.configHome,{...t.state,off:!0,palettes:[]},!1,n,e.home);for(let o of vt(t.state.terminals))if(s.has(o.id))r.push(`Gave ${o.name} its own default profile back — it takes it at its next start`)}for(let s of t.removals)F_(s,{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 s of t.touches)C_(s,i,i);return r}function z_(){let t=j_();return{home:t,configHome:J(),zdotdir:Jf(Qe(),t),cacheDir:Nn(),stateDir:Si(process.env.XDG_STATE_HOME??Si(t,".local","state"),"ttheme")}}async function Z2(t=!1){let e=z_(),n=W_(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=Si(e.configHome,"ttheme");al("ttheme uninstall"),jn([...n.edits.map((s)=>`Take ttheme out of ${s.file}`),...n.removals.map((s)=>s===r?`Delete ${s} — settings, pins, every installed picture${Eb(Hu(e.configHome))?`, and your marketplaces under ${Hu(e.configHome)} (push them to GitHub first to keep them)`:""}`:`Delete ${s}`)].join(`
778
+ `),"Uninstall");let i=await _e({message:"Remove ttheme?"});if(ie(i)||!i)throw ei("Nothing changed"),new be}for(let r of K_(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 D_}from"node:os";async function X2(t){if(!se.includes(t))throw Error(`no terminal ${t} — one of ${se.join(", ")}`);let e=t,n=$r[e],r=J(),i=D_(),s=Qe(),o=D(r);if(o.terminals.includes(e))return console.log(`${n.name} is wired already`),0;let a={configHome:r,home:i};if(!n.offered(a,s))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={...o,...n.installs?.(a)??{},terminals:[e]};jn([...Fl(r,c,i),...Ll(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(`
779
+ `),`Wiring ${n.name}`);let u=await _e({message:`Wire ${n.name} now?`,initialValue:!1});if(ie(u)||!u)throw ei("Nothing changed"),new be;let f=sc(r,c,s,i),l={...f,terminals:[...o.terminals,e]};tn(r,l),Dt(r,ct(r),l,i,s);let d=ls(r,f,!0,s,i),h=Cl(r,f,d,i);if(h.length>0)jn(h.join(`
780
+ `),"Next");return Da(`Wired ${n.name}`),0}var J_=new Set(["add","remove","marketplace","default","on","off"]),Y_={default:([t])=>Xx(t),on:()=>t2(),off:()=>e2(),browse:()=>a2(),list:([t],{json:e})=>r2(t,e),add:(t,{marketplace:e})=>Vx(t,e),remove:(t)=>Zx(t),update:(t)=>i2(t),marketplace:([t,e])=>lS(t,e),new:([t],{from:e,in:n})=>Tx(t,e,n),edit:async(t)=>Hx(await Q2(t,"edit")),check:async(t,{fix:e})=>_x(await Q2(t,"check"),e),share:async([t],{tone:e})=>{let n=e;if(t!==void 0)return ab(t,n);let r=await xx(n);if(!r)throw new Rr("name a palette",Xf("share"));return ab(r.name,r.tone)},init:(t,{yes:e})=>_2({yes:e}),uninstall:(t,{yes:e})=>Z2(e),wire:([t])=>X2(t),info:()=>k2(),build:(t,{only:e})=>Kf({only:e}),find:([t])=>ux(t),image:([t,e,n])=>p2(t,e,n),sync:()=>Qx(),redraw:()=>h2(),names:()=>J2(),latest:()=>Iv(),tone:([t,e,n])=>Fx(t,e,n),flatten:([t,e,n,r,i,s,o])=>w2(t,e,n,r,i,s,o),bake:([t,e,n,r])=>b2(t,e,n,r)},V_=Oo.map((t)=>({...t,run:Y_[t.name]}));class Rr extends Error{verb;constructor(t,e){super(t);this.verb=e}}function Xf(t){let e=V_.find((n)=>n.name===t);if(!e)throw new Rr(t.startsWith("-")?`unknown option '${t}'`:`unknown command '${t}'`);return e}async function Q2([t],e){let n=t??await ib();if(n===void 0){let r=process.env.TTHEME_WORN;throw new Rr(`name a palette${r?` — this tab wears ${r}`:""}`,Xf(e))}return n}function Z_(t,e){let n={help:{type:"boolean",short:"h"}};for(let[r,{type:i,short:s,multiple:o}]of Object.entries(t.flags??{}))n[r]={type:i,multiple:o===!0,...s?{short:s}:{}};try{return q_({args:e,options:n,allowPositionals:!0})}catch(r){let[i=""]=(r instanceof Error?r.message:String(r)).split(". ");throw new Rr(`${i.charAt(0).toLowerCase()}${i.slice(1)}`,t)}}function X_(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:Xf(n[0])}}let r=Xf(e),i=Z_(r,n);if(i.values.help)return{kind:"help",verb:r};for(let[f,{choices:l}]of Object.entries(r.flags??{}))for(let d of[i.values[f]??[]].flat())if(l&&!l.includes(String(d)))throw new Rr(`--${f} takes ${l.join(", ")} — not ${d}`,r);let s=i.positionals,o=r.args.filter((f)=>f.startsWith("<")).length,a=r.args.some((f)=>f.includes("..."))?Number.POSITIVE_INFINITY:r.args.length;if(s.length<o)throw new Rr(`missing ${r.args[s.length]}`,r);if(s.length>a)throw new Rr(`too many arguments: ${s.slice(a).join(" ")}`,r);let{help:c,...u}=i.values;return{kind:"run",verb:r,args:s,flags:u}}var Q_=[TypeError,RangeError,ReferenceError,SyntaxError];function tB(t){return Q_.some((e)=>t instanceof e)||t instanceof Error&&"code"in t}async function tO(t){let e;try{let n=X_(t);if(n.kind==="version")return console.log(lt.version),0;if(n.kind==="brief")return console.error(Xy()),1;if(n.kind==="help")return console.log(n.verb?Pm(n.verb):Ja(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(J_.has(n.verb.name))await qv();let r=await n.verb.run(n.args,n.flags);if(!n.verb.hidden&&n.verb.name!=="uninstall"){if(q2(),n.verb.name!=="update"&&n.verb.name!=="init")Pv(),Tv()}return typeof r==="number"?r:0}catch(n){if(n instanceof Rr)return console.error(n.verb?`ttheme ${n.verb.name}: ${n.message}
783
781
 
784
- ${Am(n.verb)}`:`ttheme: ${n.message} — see \`ttheme help\``),1;if(n instanceof be)return 1;if(n instanceof $c)return n.exit;let r=process.env.TTHEME_DEBUG&&n instanceof Error?n.stack:void 0;return console.error(`
785
- ttheme${e?` ${e.name}`:""}: ${r??(n instanceof Error?n.message:String(n))}${rB(n)?"\nReport a bug with the output of `ttheme info`":""}`),1}}if(sB)if(process.env.TTHEME_DEBUG&&typeof Bun>"u"&&!process.sourceMapsEnabled){let t=iB(process.execPath,["--enable-source-maps",...process.argv.slice(1)],{stdio:"inherit"});process.exitCode=t.status??1}else process.exitCode=await rO(process.argv.slice(2));
782
+ ${Pm(n.verb)}`:`ttheme: ${n.message} — see \`ttheme help\``),1;if(n instanceof be)return 1;if(n instanceof gc)return n.exit;let r=process.env.TTHEME_DEBUG&&n instanceof Error?n.stack:void 0;return console.error(`
783
+ ttheme${e?` ${e.name}`:""}: ${r??(n instanceof Error?n.message:String(n))}${tB(n)?"\nReport a bug with the output of `ttheme info`":""}`),1}}if(nB)if(process.env.TTHEME_DEBUG&&typeof Bun>"u"&&!process.sourceMapsEnabled){let t=eB(process.execPath,["--enable-source-maps",...process.argv.slice(1)],{stdio:"inherit"});process.exitCode=t.status??1}else process.exitCode=await tO(process.argv.slice(2));
786
784
 
787
- //# debugId=0FD76A1F1E110A4464756E2164756E21
785
+ //# debugId=7AE19FCC4038829F64756E2164756E21
788
786
  //# sourceMappingURL=ttheme.js.map