var U=require("fs"),G=require("zlib");module.exports=class S{static decode(i,s){return U.readFile(i,function(a,h){return new S(h).decode(t=>s(t))})}static load(i){let s=U.readFileSync(i);return new S(s)}constructor(i){let s;for(this.data=i,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.text={};;){let r=this.readUInt32(),l="";for(s=0;s<4;s++)l+=String.fromCharCode(this.data[this.pos++]);switch(l){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"PLTE":this.palette=this.read(r);break;case"IDAT":for(s=0;s0)for(s=0;sthis.data.length)throw new Error("Incomplete or corrupt PNG file")}}read(i){let s=new Array(i);for(let a=0;a{if(s)throw s;let{width:h,height:c}=this,t=this.pixelBitlength/8,f=new Buffer(h*c*t),{length:r}=a,l=0;function o(n,v,B,C,x=!1){let T=Math.ceil((h-n)/B),A=Math.ceil((c-v)/C),p=t*T,d=x?f:new Buffer(p*A),g=0,b=0;for(;g(this.copyToImageData(s,a),i(s)))}};