gerbers-renderer 0.1.2 → 0.1.4
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/README.md +193 -117
- package/dist/core/detect.d.ts +2 -0
- package/dist/core/errors.d.ts +5 -0
- package/dist/core/list.d.ts +2 -0
- package/dist/core/types.d.ts +18 -0
- package/dist/gerbers-renderer.es.js +2461 -2054
- package/dist/gerbers-renderer.es.js.map +1 -1
- package/dist/gerbers-renderer.umd.js +26 -23
- package/dist/gerbers-renderer.umd.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/io/unpackArchive.d.ts +9 -0
- package/dist/libarchive-Bt1VdZR0.js +272 -0
- package/dist/libarchive-Bt1VdZR0.js.map +1 -0
- package/dist/parse/gerber-parser.d.ts +28 -2
- package/dist/render/renderGerbers.d.ts +3 -0
- package/dist/render/renderGerbersFiles.d.ts +7 -0
- package/dist/render/renderGerbersZip.d.ts +3 -7
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gerbers-renderer.es.js","sources":["../node_modules/jszip/dist/jszip.min.js","../src/render/layerClassify.ts","../src/parse/gerber-parser.ts","../src/parse/drill-parser.ts","../src/render/renderGerbersZip.ts","../src/viewer/BoardViewer.ts"],"sourcesContent":["/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","export type Classified = Partial<{\r\n top_copper: string;\r\n bottom_copper: string;\r\n top_mask: string;\r\n bottom_mask: string;\r\n top_silk: string;\r\n bottom_silk: string;\r\n drills: string;\r\n outline: string;\r\n}>;\r\n\r\nfunction norm(s: string) {\r\n return s.toLowerCase();\r\n}\r\n\r\nfunction pickByExt(names: string[], exts: string[]) {\r\n const set = new Set(exts.map((e) => e.toLowerCase()));\r\n // Prefer shortest path (often means \"root file\" not docs/backup)\r\n const candidates = names\r\n .filter((n) => {\r\n const nl = norm(n);\r\n const dot = nl.lastIndexOf(\".\");\r\n if (dot < 0) return false;\r\n return set.has(nl.slice(dot));\r\n })\r\n .sort((a, b) => a.length - b.length);\r\n return candidates[0];\r\n}\r\n\r\nfunction pickByContains(names: string[], required: string[]) {\r\n const req = required.map((x) => x.toLowerCase());\r\n const candidates = names\r\n .filter((n) => {\r\n const nl = norm(n);\r\n return req.every((r) => nl.includes(r));\r\n })\r\n .sort((a, b) => a.length - b.length);\r\n return candidates[0];\r\n}\r\n\r\nexport function classifyLayerNames(names: string[]): Classified {\r\n // Normalize: ignore obvious junk\r\n const files = names.filter((n) => {\r\n const nl = norm(n);\r\n if (nl.endsWith(\"/\")) return false;\r\n if (nl.includes(\"__macosx\")) return false;\r\n if (nl.endsWith(\".ds_store\")) return false;\r\n return true;\r\n });\r\n\r\n const top_copper =\r\n pickByExt(files, [\".gtl\"]) ||\r\n pickByContains(files, [\"f_cu\"]) ||\r\n pickByContains(files, [\"top\", \"cu\"]) ||\r\n pickByContains(files, [\"top\", \"copper\"]);\r\n\r\n const bottom_copper =\r\n pickByExt(files, [\".gbl\"]) ||\r\n pickByContains(files, [\"b_cu\"]) ||\r\n pickByContains(files, [\"bottom\", \"cu\"]) ||\r\n pickByContains(files, [\"bottom\", \"copper\"]);\r\n\r\n const top_mask =\r\n pickByExt(files, [\".gts\"]) ||\r\n pickByContains(files, [\"f_mask\"]) ||\r\n pickByContains(files, [\"top\", \"mask\"]);\r\n\r\n const bottom_mask =\r\n pickByExt(files, [\".gbs\"]) ||\r\n pickByContains(files, [\"b_mask\"]) ||\r\n pickByContains(files, [\"bottom\", \"mask\"]);\r\n\r\n const top_silk =\r\n pickByExt(files, [\".gto\"]) ||\r\n pickByContains(files, [\"f_silks\"]) ||\r\n pickByContains(files, [\"f_silk\"]) ||\r\n pickByContains(files, [\"top\", \"silk\"]);\r\n\r\n const bottom_silk =\r\n pickByExt(files, [\".gbo\"]) ||\r\n pickByContains(files, [\"b_silks\"]) ||\r\n pickByContains(files, [\"b_silk\"]) ||\r\n pickByContains(files, [\"bottom\", \"silk\"]);\r\n\r\n const outline =\r\n pickByExt(files, [\".gko\", \".gm1\"]) ||\r\n pickByContains(files, [\"edge\", \"cuts\"]) ||\r\n pickByContains(files, [\"outline\"]) ||\r\n pickByContains(files, [\"board\", \"outline\"]);\r\n\r\n const drills =\r\n // Excellon often .drl or .xln or .txt\r\n pickByExt(files, [\".drl\", \".xln\"]) ||\r\n // Some CAD exports use .txt for drills but be careful: only if name hints drill\r\n pickByContains(files, [\"drill\"]) ||\r\n pickByContains(files, [\"drills\"]) ||\r\n pickByContains(files, [\"npth\"]) ||\r\n pickByContains(files, [\"pth\"]);\r\n\r\n return {\r\n top_copper,\r\n bottom_copper,\r\n top_mask,\r\n bottom_mask,\r\n top_silk,\r\n bottom_silk,\r\n outline,\r\n drills,\r\n };\r\n}\r\n","// src/parse/gerber-parser.ts\r\n\r\nimport type { Vec2 } from \"../types/pcb-model\";\r\nimport type { LayerRole } from \"../io/file-classifier\";\r\n\r\n/**\r\n * Primitive types used by the geometry pipeline. These are what\r\n * polygonizer.ts consumes.\r\n */\r\n\r\nexport interface GerberPrimitiveTrack {\r\n start: Vec2;\r\n end: Vec2;\r\n width: number; // in mm\r\n}\r\n\r\nexport interface GerberPrimitiveArc {\r\n start: Vec2;\r\n end: Vec2;\r\n center: Vec2;\r\n clockwise: boolean;\r\n width: number;\r\n}\r\n\r\nexport interface GerberPrimitiveFlash {\r\n position: Vec2;\r\n diameterMm: number; // actual aperture diameter in mm\r\n}\r\n\r\nconst DEFAULT_FLASH_DIAM_MM = 0.8; // fallback if aperture has no size\r\n\r\nexport interface GerberPrimitiveRegion {\r\n boundary: Vec2[];\r\n holes: Vec2[][];\r\n}\r\n\r\nexport interface GerberPrimitives {\r\n tracks: GerberPrimitiveTrack[];\r\n arcs: GerberPrimitiveArc[];\r\n flashes: GerberPrimitiveFlash[];\r\n regions: GerberPrimitiveRegion[];\r\n}\r\n\r\n/**\r\n * Represents a Gerber aperture definition.\r\n * \r\n * For rendering purposes, we convert all aperture shapes to an \"effective diameter\"\r\n * to simplify the rendering pipeline while maintaining correct visual proportions.\r\n */\r\ninterface Aperture {\r\n code: number;\r\n shape: string; // C, R, O, P, macro, etc.\r\n diameterMm?: number; // effective diameter (for traces / circular pads)\r\n widthMm?: number; // for R / O\r\n heightMm?: number; // for R / O\r\n}\r\n\r\nexport interface GerberPrimitiveFlash {\r\n position: Vec2;\r\n diameterMm: number; // keep for circular and general “size”\r\n shape: string; // \"C\" | \"R\" | \"O\" | ...\r\n widthMm?: number; // for R / O\r\n heightMm?: number; // for R / O\r\n}\r\n\r\n/**\r\n * Internal parser state\r\n */\r\ninterface ParserState {\r\n unitScale: number; // file units -> mm (1 for mm, 25.4 for inch)\r\n fmtInt: number; // FS int digits\r\n fmtDec: number; // FS dec digits\r\n\r\n x: number; // current X in mm\r\n y: number; // current Y in mm\r\n\r\n apertures: Map<number, Aperture>;\r\n currentAperture: Aperture | null;\r\n\r\n // Region handling\r\n inRegion: boolean;\r\n regionPaths: Vec2[][]; // all contours in current region\r\n currentPath: Vec2[]; // the contour currently being built\r\n\r\n tracks: GerberPrimitiveTrack[];\r\n arcs: GerberPrimitiveArc[];\r\n flashes: GerberPrimitiveFlash[];\r\n regions: GerberPrimitiveRegion[];\r\n}\r\n\r\n/**\r\n * Parse a Gerber file into drawing primitives.\r\n *\r\n * This is a practical, not spec complete parser:\r\n * - Handles %FS, %MO, %AD for simple circular apertures (C)\r\n * - Handles D01 (draw), D02 (move), D03 (flash)\r\n * - Handles G36/G37 for filled regions with multiple contours\r\n * - Ignores arcs (G02/G03) for now\r\n *\r\n * It is good enough to visualize traces and pads for many KiCad/JLC style Gerbers.\r\n */\r\nexport function parseGerberFile(\r\n name: string,\r\n content: string,\r\n _role: LayerRole | string\r\n): GerberPrimitives {\r\n const state: ParserState = {\r\n unitScale: 1.0,\r\n fmtInt: 2,\r\n fmtDec: 4,\r\n x: 0,\r\n y: 0,\r\n apertures: new Map(),\r\n currentAperture: null,\r\n inRegion: false,\r\n regionPaths: [],\r\n currentPath: [],\r\n tracks: [],\r\n arcs: [],\r\n flashes: [],\r\n regions: [],\r\n };\r\n\r\n const lines = content.split(/\\r?\\n/);\r\n\r\n for (const rawLine of lines) {\r\n let line = rawLine.trim();\r\n if (!line) continue;\r\n\r\n // Comments\r\n if (line.startsWith(\"G04\")) continue;\r\n\r\n // Parameter block: % ... *%\r\n if (line.startsWith(\"%\") && line.endsWith(\"%\")) {\r\n handleParameterBlock(line, state);\r\n continue;\r\n }\r\n\r\n // Usual commands end with *\r\n if (line.endsWith(\"*\")) {\r\n line = line.slice(0, -1);\r\n }\r\n\r\n handleCommandLine(line, state);\r\n }\r\n\r\n // If file ended with an open region, finalize it similarly to G37.\r\n if (state.inRegion) {\r\n if (state.currentPath.length >= 3) {\r\n state.regionPaths.push(state.currentPath);\r\n }\r\n if (state.regionPaths.length > 0) {\r\n state.regions.push({\r\n boundary: state.regionPaths[0],\r\n holes: state.regionPaths.slice(1),\r\n });\r\n }\r\n state.inRegion = false;\r\n state.regionPaths = [];\r\n state.currentPath = [];\r\n }\r\n\r\n return {\r\n tracks: state.tracks,\r\n arcs: state.arcs,\r\n flashes: state.flashes,\r\n regions: state.regions,\r\n };\r\n}\r\n\r\n/**\r\n * Handle parameter blocks like:\r\n * - %FSLAX24Y24*%\r\n * - %MOMM*%\r\n * - %MOIN*%\r\n * - %ADD10C,0.300*%\r\n */\r\nfunction handleParameterBlock(block: string, state: ParserState) {\r\n // Strip outer percent signs\r\n let body = block;\r\n if (body.startsWith(\"%\")) body = body.slice(1);\r\n if (body.endsWith(\"%\")) body = body.slice(0, -1);\r\n if (body.endsWith(\"*\")) body = body.slice(0, -1);\r\n\r\n if (body.startsWith(\"FS\")) {\r\n // Format Statement, example: FSLAX24Y24\r\n const m = /FS..X(\\d)(\\d)Y(\\d)(\\d)/.exec(body);\r\n if (m) {\r\n const ix = parseInt(m[1], 10);\r\n const dx = parseInt(m[2], 10);\r\n // const iy = parseInt(m[3], 10);\r\n const dy = parseInt(m[4], 10);\r\n state.fmtInt = ix;\r\n state.fmtDec = dx; // assume X and Y same decimal places\r\n // we ignore separate Y format for now\r\n }\r\n return;\r\n }\r\n\r\n if (body.startsWith(\"MO\")) {\r\n // Units, MOMM or MOIN\r\n const oldScale = state.unitScale;\r\n let newScale = oldScale;\r\n\r\n if (body.includes(\"MOMM\")) {\r\n newScale = 1.0;\r\n } else if (body.includes(\"MOIN\")) {\r\n newScale = 25.4;\r\n }\r\n\r\n if (newScale !== oldScale) {\r\n const factor = newScale / oldScale;\r\n\r\n for (const ap of state.apertures.values()) {\r\n if (ap.diameterMm !== undefined) ap.diameterMm *= factor;\r\n if (ap.widthMm !== undefined) ap.widthMm *= factor;\r\n if (ap.heightMm !== undefined) ap.heightMm *= factor;\r\n }\r\n\r\n state.unitScale = newScale;\r\n }\r\n return;\r\n }\r\n\r\n if (body.startsWith(\"AD\")) {\r\n const m = /AD(D?)(\\d+)([A-Z]),?([0-9.Xx]*)/.exec(body);\r\n if (!m) return;\r\n\r\n const code = parseInt(m[2], 10);\r\n const shape = m[3]; // do not narrow here\r\n const params = m[4] ?? \"\";\r\n\r\n let diameterMm: number | undefined;\r\n let widthMm: number | undefined;\r\n let heightMm: number | undefined;\r\n\r\n if (params) {\r\n const parts = params.split(/[Xx]/);\r\n\r\n // You can use your existing parser or the more robust one from before.\r\n const sizeXmm = parts[0] ? parseFloat(parts[0]) * state.unitScale : undefined;\r\n const sizeYmm = parts[1] ? parseFloat(parts[1]) * state.unitScale : undefined;\r\n\r\n if (shape === \"C\") {\r\n diameterMm = sizeXmm;\r\n } else if (shape === \"R\" || shape === \"O\") {\r\n widthMm = sizeXmm;\r\n heightMm = sizeYmm;\r\n\r\n // For traces we still want a reasonable width, so keep an effective diameter too.\r\n if (sizeXmm !== undefined && sizeYmm !== undefined) {\r\n diameterMm = Math.min(sizeXmm, sizeYmm); // use the narrow side as “diameter”\r\n } else {\r\n diameterMm = sizeXmm ?? sizeYmm;\r\n }\r\n } else {\r\n // Other shapes - keep first param as a generic diameter\r\n diameterMm = sizeXmm ?? sizeYmm;\r\n }\r\n }\r\n\r\n const ap: Aperture = {\r\n code,\r\n shape,\r\n diameterMm,\r\n widthMm,\r\n heightMm,\r\n };\r\n\r\n state.apertures.set(code, ap);\r\n return;\r\n }\r\n\r\n // ignore other parameter blocks\r\n}\r\n\r\n/**\r\n * Handle normal command lines that are not parameter blocks.\r\n * Handles:\r\n * - G36 / G37\r\n * - D01 / D02 / D03 with X/Y coordinates\r\n * - Aperture selection D10, D11, etc\r\n */\r\nfunction handleCommandLine(line: string, state: ParserState) {\r\n // Region start / end\r\n if (line === \"G36\") {\r\n state.inRegion = true;\r\n state.regionPaths = [];\r\n state.currentPath = [];\r\n return;\r\n }\r\n if (line === \"G37\") {\r\n // Finish current contour, if any\r\n if (state.currentPath.length >= 3) {\r\n state.regionPaths.push(state.currentPath);\r\n }\r\n\r\n state.inRegion = false;\r\n\r\n if (state.regionPaths.length > 0) {\r\n // First contour is boundary, rest are holes\r\n state.regions.push({\r\n boundary: state.regionPaths[0],\r\n holes: state.regionPaths.slice(1),\r\n });\r\n }\r\n\r\n state.regionPaths = [];\r\n state.currentPath = [];\r\n return;\r\n }\r\n\r\n // Look for D code at end of line\r\n let dCode: number | null = null;\r\n const dMatch = /D0?(\\d{1,3})$/.exec(line);\r\n if (dMatch) {\r\n dCode = parseInt(dMatch[1], 10);\r\n line = line.slice(0, line.length - dMatch[0].length); // strip Dxx\r\n }\r\n\r\n // Aperture select, like D10, D11 without coords\r\n if (dCode !== null && dCode >= 10) {\r\n const ap = state.apertures.get(dCode);\r\n if (ap) {\r\n state.currentAperture = ap;\r\n }\r\n return;\r\n }\r\n\r\n // Parse coordinates\r\n const coordMatchX = /X([+\\-]?\\d+)/.exec(line);\r\n const coordMatchY = /Y([+\\-]?\\d+)/.exec(line);\r\n\r\n let newX = state.x;\r\n let newY = state.y;\r\n\r\n if (coordMatchX) {\r\n newX = decodeCoord(coordMatchX[1], state);\r\n }\r\n if (coordMatchY) {\r\n newY = decodeCoord(coordMatchY[1], state);\r\n }\r\n\r\n // If no D code, just move modal position\r\n if (dCode === null) {\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n // Region drawing (G36/G37 mode)\r\n if (state.inRegion) {\r\n const prevX = state.x;\r\n const prevY = state.y;\r\n\r\n if (dCode === 1) {\r\n // D01: draw segment from previous point to new point\r\n if (state.currentPath.length === 0) {\r\n // first segment of this contour: start at previous position\r\n state.currentPath.push({ x: prevX, y: prevY });\r\n }\r\n state.currentPath.push({ x: newX, y: newY });\r\n } else if (dCode === 2) {\r\n // D02: finish current contour, move without drawing\r\n if (state.currentPath.length >= 3) {\r\n state.regionPaths.push(state.currentPath);\r\n }\r\n state.currentPath = [];\r\n // newX/newY becomes the new current point; contour starts on next D01\r\n } else {\r\n // D03 or others are not allowed in region mode; ignore safely\r\n }\r\n\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n // Normal drawing / move / flash (outside regions)\r\n const prevX = state.x;\r\n const prevY = state.y;\r\n\r\n if (dCode === 1) {\r\n // Draw\r\n if (!state.currentAperture) {\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n const width =\r\n state.currentAperture.diameterMm !== undefined\r\n ? state.currentAperture.diameterMm\r\n : 0.2;\r\n\r\n state.tracks.push({\r\n start: { x: prevX, y: prevY },\r\n end: { x: newX, y: newY },\r\n width,\r\n });\r\n\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n if (dCode === 2) {\r\n // Move only\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n if (dCode === 3) {\r\n if (state.currentAperture) {\r\n const ap = state.currentAperture;\r\n\r\n const d =\r\n ap.diameterMm !== undefined\r\n ? ap.diameterMm\r\n : DEFAULT_FLASH_DIAM_MM;\r\n\r\n const flash: GerberPrimitiveFlash = {\r\n position: { x: newX, y: newY },\r\n diameterMm: d,\r\n shape: ap.shape,\r\n };\r\n\r\n if (ap.widthMm !== undefined) flash.widthMm = ap.widthMm;\r\n if (ap.heightMm !== undefined) flash.heightMm = ap.heightMm;\r\n\r\n state.flashes.push(flash);\r\n }\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n\r\n // Other D codes ignored for now\r\n}\r\n\r\n/**\r\n * Decode an integer coordinate string using the FS format and unitScale.\r\n * Example:\r\n * fmtInt = 2, fmtDec = 4, unitScale = 1 (mm)\r\n * \"12345\" -> 1.2345 mm\r\n */\r\nfunction decodeCoord(numStr: string, state: ParserState): number {\r\n const sign = numStr.startsWith(\"-\") ? -1 : 1;\r\n const digits = numStr.replace(/[+\\-]/g, \"\");\r\n const n = parseInt(digits, 10);\r\n if (Number.isNaN(n)) return 0;\r\n\r\n const scale = Math.pow(10, state.fmtDec);\r\n const val = (n / scale) * state.unitScale;\r\n return sign * val;\r\n}\r\n\r\nfunction parseApertureParam(raw: string, state: ParserState): number | undefined {\r\n const s = raw.trim();\r\n if (!s) return undefined;\r\n\r\n // If it contains a decimal point, treat as a real value in current units\r\n if (s.includes(\".\")) {\r\n const v = parseFloat(s);\r\n if (Number.isNaN(v)) return undefined;\r\n return v * state.unitScale;\r\n }\r\n\r\n // Otherwise treat it like FS style integer (same fmtDec as coordinates)\r\n const n = parseInt(s, 10);\r\n if (Number.isNaN(n)) return undefined;\r\n\r\n const scale = Math.pow(10, state.fmtDec);\r\n return (n / scale) * state.unitScale;\r\n}\r\n","// src/parse/drill-parser.ts\r\n\r\nimport type { DrillHole } from \"../types/pcb-model\";\r\n\r\n/**\r\n * Parsed drill data for a single Excellon file.\r\n * This will be fed into the geometry pipeline.\r\n */\r\nexport interface ParsedDrillData {\r\n name: string;\r\n holes: DrillHole[];\r\n}\r\n\r\n/**\r\n * Very naive Excellon drill parser.\r\n *\r\n * This is intentionally simple and conservative:\r\n * - It understands basic tool definitions like \"T01C0.300\"\r\n * - It understands coordinate lines like \"X012345Y067890\"\r\n * - It assumes units are already inches or mm as used in the file, and does\r\n * not attempt unit conversion or integer format decoding.\r\n *\r\n * For now, you can treat this as a stub and gradually swap in a robust parser\r\n * if needed. At minimum, it gives you some real hole locations to play with.\r\n */\r\nexport function parseDrillFile(name: string, content: string): ParsedDrillData {\r\n const lines = content.split(/\\r?\\n/);\r\n\r\n const toolDiameters = new Map<string, number>(); // T code -> diameter (same units as file)\r\n let currentTool: string | null = null;\r\n\r\n const holes: DrillHole[] = [];\r\n\r\n for (const rawLine of lines) {\r\n const line = rawLine.trim();\r\n if (!line) continue;\r\n\r\n // Comment or header lines we ignore for now\r\n if (line.startsWith(\";\")) continue;\r\n\r\n // Tool definition, examples:\r\n // T01C0.300\r\n // T02C0.600\r\n if (line.startsWith(\"T\") && line.includes(\"C\")) {\r\n const toolMatch = /^T(\\d+)[C]([\\d.]+)/i.exec(line);\r\n if (toolMatch) {\r\n const toolId = toolMatch[1]; // \"01\"\r\n const diameter = parseFloat(toolMatch[2]);\r\n if (!Number.isNaN(diameter)) {\r\n toolDiameters.set(toolId, diameter);\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n // Tool change, like \"T01\"\r\n if (line.startsWith(\"T\") && !line.includes(\"C\")) {\r\n const toolMatch = /^T(\\d+)/i.exec(line);\r\n if (toolMatch) {\r\n currentTool = toolMatch[1];\r\n }\r\n continue;\r\n }\r\n\r\n // Coordinate line, very naive:\r\n // X012345Y067890\r\n // X1.234Y5.678\r\n if (line[0] === \"X\" || line.includes(\"X\")) {\r\n const coordMatch = /X([\\-0-9.]+)Y([\\-0-9.]+)/i.exec(line);\r\n if (!coordMatch) {\r\n continue;\r\n }\r\n\r\n const xRaw = coordMatch[1];\r\n const yRaw = coordMatch[2];\r\n const xVal = parseFloat(xRaw);\r\n const yVal = parseFloat(yRaw);\r\n\r\n if (Number.isNaN(xVal) || Number.isNaN(yVal)) {\r\n continue;\r\n }\r\n\r\n const diameter =\r\n currentTool && toolDiameters.has(currentTool)\r\n ? toolDiameters.get(currentTool)!\r\n : 0.6; // default fallback diameter\r\n\r\n holes.push({\r\n x: xVal,\r\n y: yVal,\r\n diameter,\r\n plated: true, // default, later you can infer from file or layer\r\n });\r\n continue;\r\n }\r\n\r\n // Everything else is ignored for now\r\n }\r\n\r\n return {\r\n name,\r\n holes,\r\n };\r\n}\r\n","import JSZip from \"jszip\";\r\nimport type { BoardGeom, ViewerLayers } from \"../viewer/types\";\r\nimport { classifyLayerNames } from \"./layerClassify\";\r\n\r\n// your parsers\r\nimport { parseGerberFile } from \"../parse/gerber-parser\";\r\nimport { parseDrillFile } from \"../parse/drill-parser\";\r\n\r\n// Types expected by your parser module\r\nimport type { LayerRole } from \"../io/file-classifier\"; // if you removed this, change to `string`\r\n\r\ntype BoundsMm = { minX: number; minY: number; maxX: number; maxY: number };\r\n\r\nfunction boundsSize(b: { minX: number; minY: number; maxX: number; maxY: number }) {\r\n return { w: b.maxX - b.minX, h: b.maxY - b.minY };\r\n}\r\n\r\nfunction isSaneBounds(b: { minX: number; minY: number; maxX: number; maxY: number }) {\r\n const { w, h } = boundsSize(b);\r\n return Number.isFinite(w) && Number.isFinite(h) && w > 1 && h > 1 && w < 2000 && h < 2000;\r\n}\r\n\r\n// Detect if layer is off by ~25.4x relative to reference.\r\n// Returns scale factor to apply to layer coords to match reference.\r\nfunction detectScaleFactor(layerW: number, refW: number) {\r\n if (!Number.isFinite(layerW) || !Number.isFinite(refW) || layerW <= 0 || refW <= 0) return 1;\r\n\r\n const ratio = layerW / refW;\r\n\r\n // If layer is ~25.4x bigger, scale it down\r\n if (ratio > 20 && ratio < 35) return 1 / 25.4;\r\n\r\n // If layer is ~25.4x smaller, scale it up\r\n if (ratio > 0.02 && ratio < 0.06) return 25.4;\r\n\r\n return 1;\r\n}\r\n\r\nfunction scaleGerberPrims(prims: ReturnType<typeof parseGerberFile>, s: number) {\r\n if (s === 1) return prims;\r\n\r\n return {\r\n ...prims,\r\n tracks: prims.tracks.map((t) => ({\r\n ...t,\r\n start: { x: t.start.x * s, y: t.start.y * s },\r\n end: { x: t.end.x * s, y: t.end.y * s },\r\n width: (t.width ?? 0) * s,\r\n })),\r\n flashes: prims.flashes.map((f) => ({\r\n ...f,\r\n position: { x: f.position.x * s, y: f.position.y * s },\r\n diameterMm: (f.diameterMm ?? 0) * s,\r\n widthMm: (f.widthMm ?? 0) * s,\r\n heightMm: (f.heightMm ?? 0) * s,\r\n })),\r\n regions: prims.regions.map((r) => ({\r\n ...r,\r\n boundary: r.boundary.map((p) => ({ x: p.x * s, y: p.y * s })),\r\n holes: r.holes.map((hole) => hole.map((p) => ({ x: p.x * s, y: p.y * s }))),\r\n })),\r\n };\r\n}\r\n\r\nfunction scaleDrills(holes: Array<{ x: number; y: number; diameter: number }>, s: number) {\r\n if (s === 1) return holes;\r\n return holes.map((h) => ({ x: h.x * s, y: h.y * s, diameter: (h.diameter ?? 0) * s }));\r\n}\r\n\r\nfunction svgToBlobUrl(svg: string): string {\r\n return URL.createObjectURL(new Blob([svg], { type: \"image/svg+xml\" }));\r\n}\r\n\r\nfunction expandBounds(b: BoundsMm, x: number, y: number) {\r\n b.minX = Math.min(b.minX, x);\r\n b.minY = Math.min(b.minY, y);\r\n b.maxX = Math.max(b.maxX, x);\r\n b.maxY = Math.max(b.maxY, y);\r\n}\r\n\r\nfunction initBounds(): BoundsMm {\r\n return { minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity };\r\n}\r\n\r\nfunction boundsFromGerber(prims: ReturnType<typeof parseGerberFile>): BoundsMm {\r\n const b = initBounds();\r\n\r\n for (const t of prims.tracks) {\r\n expandBounds(b, t.start.x, t.start.y);\r\n expandBounds(b, t.end.x, t.end.y);\r\n // include width\r\n const r = (t.width ?? 0) / 2;\r\n expandBounds(b, t.start.x - r, t.start.y - r);\r\n expandBounds(b, t.start.x + r, t.start.y + r);\r\n expandBounds(b, t.end.x - r, t.end.y - r);\r\n expandBounds(b, t.end.x + r, t.end.y + r);\r\n }\r\n\r\n for (const f of prims.flashes) {\r\n const w = (f.widthMm ?? f.diameterMm) || 0;\r\n const h = (f.heightMm ?? f.diameterMm) || 0;\r\n expandBounds(b, f.position.x - w / 2, f.position.y - h / 2);\r\n expandBounds(b, f.position.x + w / 2, f.position.y + h / 2);\r\n }\r\n\r\n for (const r of prims.regions) {\r\n for (const p of r.boundary) expandBounds(b, p.x, p.y);\r\n for (const hole of r.holes) for (const p of hole) expandBounds(b, p.x, p.y);\r\n }\r\n\r\n // arcs not implemented in your parser right now, so no need\r\n\r\n return b;\r\n}\r\n\r\nfunction boundsFromDrills(holes: Array<{ x: number; y: number; diameter: number }>): BoundsMm {\r\n const b = initBounds();\r\n for (const h of holes) {\r\n const r = (h.diameter || 0) / 2;\r\n expandBounds(b, h.x - r, h.y - r);\r\n expandBounds(b, h.x + r, h.y + r);\r\n }\r\n return b;\r\n}\r\n\r\nfunction mergeBounds(a: BoundsMm, b: BoundsMm): BoundsMm {\r\n return {\r\n minX: Math.min(a.minX, b.minX),\r\n minY: Math.min(a.minY, b.minY),\r\n maxX: Math.max(a.maxX, b.maxX),\r\n maxY: Math.max(a.maxY, b.maxY),\r\n };\r\n}\r\n\r\nfunction ensureFiniteBounds(b: BoundsMm): BoundsMm {\r\n if (!Number.isFinite(b.minX) || !Number.isFinite(b.minY) || !Number.isFinite(b.maxX) || !Number.isFinite(b.maxY)) {\r\n return { minX: 0, minY: 0, maxX: 80, maxY: 60 };\r\n }\r\n // guard against degenerate\r\n if (b.maxX - b.minX < 1e-6) b.maxX = b.minX + 1;\r\n if (b.maxY - b.minY < 1e-6) b.maxY = b.minY + 1;\r\n return b;\r\n}\r\n\r\n// Viewer expects stage in px computed from inches with SCALE constant (same model as result.html viewer)\r\nconst SCALE_PX_PER_IN = 1000;\r\n\r\nfunction mmToPx(mm: number): number {\r\n return (mm / 25.4) * SCALE_PX_PER_IN;\r\n}\r\n\r\n// Convert world-mm -> local-mm (0..W, 0..H) by subtracting min bounds\r\nfunction toLocalMm(x: number, y: number, b: BoundsMm) {\r\n // X: left->right\r\n const lx = x - b.minX;\r\n\r\n // Y: invert so Gerber +Y up becomes SVG +Y down\r\n const ly = b.maxY - y;\r\n\r\n return { x: lx, y: ly };\r\n}\r\n\r\n\r\n// SVG builders\r\n\r\nfunction buildBoardMaskSvg(stageWpx: number, stageHpx: number) {\r\n // white = visible, black = clipped\r\n return `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${stageWpx}\" height=\"${stageHpx}\" viewBox=\"0 0 ${stageWpx} ${stageHpx}\">\r\n <rect width=\"${stageWpx}\" height=\"${stageHpx}\" fill=\"white\"/>\r\n</svg>`.trim();\r\n}\r\n\r\nfunction buildCopperSvg(\r\n prims: ReturnType<typeof parseGerberFile>,\r\n bounds: BoundsMm,\r\n stroke: string,\r\n fill: string\r\n) {\r\n const wMm = bounds.maxX - bounds.minX;\r\n const hMm = bounds.maxY - bounds.minY;\r\n const wPx = Math.round(mmToPx(wMm));\r\n const hPx = Math.round(mmToPx(hMm));\r\n const pxPerMm = mmToPx(1);\r\n\r\n const trackEls = prims.tracks.map((t) => {\r\n const a = toLocalMm(t.start.x, t.start.y, bounds);\r\n const b = toLocalMm(t.end.x, t.end.y, bounds);\r\n const sw = Math.max(1, (t.width || 0.2) * pxPerMm);\r\n return `<line x1=\"${(a.x * pxPerMm).toFixed(2)}\" y1=\"${(a.y * pxPerMm).toFixed(2)}\" x2=\"${(b.x * pxPerMm).toFixed(2)}\" y2=\"${(b.y * pxPerMm).toFixed(2)}\" stroke=\"${stroke}\" stroke-width=\"${sw.toFixed(2)}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />`;\r\n });\r\n\r\n const flashEls = prims.flashes.map((f) => {\r\n const p = toLocalMm(f.position.x, f.position.y, bounds);\r\n const cx = p.x * pxPerMm;\r\n const cy = p.y * pxPerMm;\r\n\r\n const w = (f.widthMm ?? f.diameterMm) || 0.8;\r\n const h = (f.heightMm ?? f.diameterMm) || 0.8;\r\n\r\n if (f.shape === \"R\" || f.shape === \"O\") {\r\n const rw = w * pxPerMm;\r\n const rh = h * pxPerMm;\r\n const x = cx - rw / 2;\r\n const y = cy - rh / 2;\r\n // Treat O as rounded rect visually\r\n const rx = f.shape === \"O\" ? Math.min(rw, rh) * 0.4 : 0;\r\n return `<rect x=\"${x.toFixed(2)}\" y=\"${y.toFixed(2)}\" width=\"${rw.toFixed(2)}\" height=\"${rh.toFixed(2)}\" rx=\"${rx.toFixed(2)}\" fill=\"${fill}\" />`;\r\n }\r\n\r\n // default circle\r\n const r = ((f.diameterMm || 0.8) * pxPerMm) / 2;\r\n return `<circle cx=\"${cx.toFixed(2)}\" cy=\"${cy.toFixed(2)}\" r=\"${Math.max(1, r).toFixed(2)}\" fill=\"${fill}\" />`;\r\n });\r\n\r\n const regionEls = prims.regions.map((r) => {\r\n const pts = r.boundary\r\n .map((p) => {\r\n const q = toLocalMm(p.x, p.y, bounds);\r\n return `${(q.x * pxPerMm).toFixed(2)},${(q.y * pxPerMm).toFixed(2)}`;\r\n })\r\n .join(\" \");\r\n // holes ignored for now in SVG (you can add clipPath later)\r\n return `<polygon points=\"${pts}\" fill=\"${fill}\" opacity=\"0.9\" />`;\r\n });\r\n\r\n return `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${wPx}\" height=\"${hPx}\" viewBox=\"0 0 ${wPx} ${hPx}\">\r\n ${trackEls.join(\"\\n \")}\r\n ${flashEls.join(\"\\n \")}\r\n ${regionEls.join(\"\\n \")}\r\n</svg>`.trim();\r\n}\r\n\r\nfunction buildSilkSvg(prims: ReturnType<typeof parseGerberFile>, bounds: BoundsMm) {\r\n const wMm = bounds.maxX - bounds.minX;\r\n const hMm = bounds.maxY - bounds.minY;\r\n const wPx = Math.max(1, Math.round(mmToPx(wMm)));\r\n const hPx = Math.max(1, Math.round(mmToPx(hMm)));\r\n const pxPerMm = Math.max(1e-6, mmToPx(1));\r\n\r\n // White silk, slightly transparent\r\n const stroke = \"rgba(255,255,255,0.95)\";\r\n const fill = \"rgba(255,255,255,0.95)\";\r\n\r\n const trackEls = prims.tracks.map((t) => {\r\n const a = toLocalMm(t.start.x, t.start.y, bounds);\r\n const b2 = toLocalMm(t.end.x, t.end.y, bounds);\r\n const sw = Math.max(1, (t.width || 0.15) * pxPerMm); // silk often thin\r\n return `<line x1=\"${(a.x * pxPerMm).toFixed(2)}\" y1=\"${(a.y * pxPerMm).toFixed(2)}\" x2=\"${(b2.x * pxPerMm).toFixed(2)}\" y2=\"${(b2.y * pxPerMm).toFixed(2)}\" stroke=\"${stroke}\" stroke-width=\"${sw.toFixed(2)}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />`;\r\n });\r\n\r\n const flashEls = prims.flashes.map((f) => {\r\n const p = toLocalMm(f.position.x, f.position.y, bounds);\r\n const cx = p.x * pxPerMm;\r\n const cy = p.y * pxPerMm;\r\n\r\n const w = (f.widthMm ?? f.diameterMm) || 0.6;\r\n const h = (f.heightMm ?? f.diameterMm) || 0.6;\r\n\r\n if (f.shape === \"R\" || f.shape === \"O\") {\r\n const rw = w * pxPerMm;\r\n const rh = h * pxPerMm;\r\n const x = cx - rw / 2;\r\n const y = cy - rh / 2;\r\n const rx = f.shape === \"O\" ? Math.min(rw, rh) * 0.35 : 0;\r\n return `<rect x=\"${x.toFixed(2)}\" y=\"${y.toFixed(2)}\" width=\"${rw.toFixed(2)}\" height=\"${rh.toFixed(2)}\" rx=\"${rx.toFixed(2)}\" fill=\"${fill}\" />`;\r\n }\r\n\r\n const r = ((f.diameterMm || 0.6) * pxPerMm) / 2;\r\n return `<circle cx=\"${cx.toFixed(2)}\" cy=\"${cy.toFixed(2)}\" r=\"${Math.max(1, r).toFixed(2)}\" fill=\"${fill}\" />`;\r\n });\r\n\r\n const regionEls = prims.regions.map((r) => {\r\n const pts = r.boundary\r\n .map((p) => {\r\n const q = toLocalMm(p.x, p.y, bounds);\r\n return `${(q.x * pxPerMm).toFixed(2)},${(q.y * pxPerMm).toFixed(2)}`;\r\n })\r\n .join(\" \");\r\n return `<polygon points=\"${pts}\" fill=\"${fill}\" opacity=\"0.95\" />`;\r\n });\r\n\r\n return `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${wPx}\" height=\"${hPx}\" viewBox=\"0 0 ${wPx} ${hPx}\">\r\n ${trackEls.join(\"\\n \")}\r\n ${flashEls.join(\"\\n \")}\r\n ${regionEls.join(\"\\n \")}\r\n</svg>`.trim();\r\n}\r\n\r\nfunction buildDrillsSvg(\r\n holes: Array<{ x: number; y: number; diameter: number }>,\r\n bounds: BoundsMm\r\n) {\r\n const wMm = bounds.maxX - bounds.minX;\r\n const hMm = bounds.maxY - bounds.minY;\r\n const wPx = Math.round(mmToPx(wMm));\r\n const hPx = Math.round(mmToPx(hMm));\r\n const pxPerMm = mmToPx(1);\r\n\r\n const els = holes.map((h) => {\r\n const p = toLocalMm(h.x, h.y, bounds);\r\n const cx = p.x * pxPerMm;\r\n const cy = p.y * pxPerMm;\r\n const r = ((h.diameter || 0.6) * pxPerMm) / 2;\r\n return `<circle cx=\"${cx.toFixed(2)}\" cy=\"${cy.toFixed(2)}\" r=\"${Math.max(1, r).toFixed(2)}\" fill=\"none\" stroke=\"#e5e7eb\" stroke-width=\"3\" />`;\r\n });\r\n\r\n return `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${wPx}\" height=\"${hPx}\" viewBox=\"0 0 ${wPx} ${hPx}\">\r\n ${els.join(\"\\n \")}\r\n</svg>`.trim();\r\n}\r\n\r\nexport type RenderResult = {\r\n boardGeom: BoardGeom;\r\n layers: ViewerLayers;\r\n revoke: () => void;\r\n};\r\n\r\nexport async function renderGerbersZip(file: File): Promise<RenderResult> {\r\n const zip = await JSZip.loadAsync(file);\r\n const names = Object.keys(zip.files).filter((n) => !zip.files[n].dir);\r\n\r\n const classified = classifyLayerNames(names);\r\n\r\n // Read files as text\r\n async function readText(path?: string): Promise<string | null> {\r\n if (!path) return null;\r\n const f = zip.file(path);\r\n if (!f) return null;\r\n return await f.async(\"text\");\r\n }\r\n\r\n const topText = await readText(classified.top_copper);\r\n const botText = await readText(classified.bottom_copper);\r\n const outText = await readText(classified.outline);\r\n const drillText = await readText(classified.drills);\r\n\r\n const topSilkText = await readText(classified.top_silk);\r\n const botSilkText = await readText(classified.bottom_silk);\r\n\r\n const topPrims = topText ? parseGerberFile(classified.top_copper || \"top\", topText, \"TopCopper\" as LayerRole) : null;\r\n const botPrims = botText ? parseGerberFile(classified.bottom_copper || \"bot\", botText, \"BottomCopper\" as LayerRole) : null;\r\n\r\n // Outline: treat it as just another gerber for bounds\r\n const outPrims = outText ? parseGerberFile(classified.outline || \"outline\", outText, \"Outline\" as LayerRole) : null;\r\n\r\n const drillParsed = drillText ? parseDrillFile(classified.drills || \"drills\", drillText) : null;\r\n\r\n const topSilkPrims = topSilkText\r\n ? parseGerberFile(classified.top_silk || \"top_silk\", topSilkText, \"TopSilkscreen\" as any)\r\n : null;\r\n\r\n const botSilkPrims = botSilkText\r\n ? parseGerberFile(classified.bottom_silk || \"bot_silk\", botSilkText, \"BottomSilkscreen\" as any)\r\n : null;\r\n\r\n console.log(\"[silk parsed]\", {\r\n top: topSilkPrims ? { tracks: topSilkPrims.tracks.length, flashes: topSilkPrims.flashes.length, regions: topSilkPrims.regions.length } : null,\r\n bottom: botSilkPrims ? { tracks: botSilkPrims.tracks.length, flashes: botSilkPrims.flashes.length, regions: botSilkPrims.regions.length } : null,\r\n });\r\n\r\n // NOTE: your drill parser is naive about units.\r\n // For now we assume it is already mm. If it's inch, you will see a huge/small board.\r\n const drillHoles = drillParsed ? drillParsed.holes.map((h) => ({ x: h.x, y: h.y, diameter: h.diameter })) : [];\r\n\r\n const topB = topPrims ? ensureFiniteBounds(boundsFromGerber(topPrims)) : null;\r\n const botB = botPrims ? ensureFiniteBounds(boundsFromGerber(botPrims)) : null;\r\n const outB = outPrims ? ensureFiniteBounds(boundsFromGerber(outPrims)) : null;\r\n const drlB = drillHoles.length ? ensureFiniteBounds(boundsFromDrills(drillHoles)) : null;\r\n\r\n const topSilkB = topSilkPrims ? ensureFiniteBounds(boundsFromGerber(topSilkPrims)) : null;\r\n const botSilkB = botSilkPrims ? ensureFiniteBounds(boundsFromGerber(botSilkPrims)) : null;\r\n\r\n // Choose reference bounds: outline if sane, else top, else bottom, else drills\r\n const refB =\r\n (outB && isSaneBounds(outB) ? outB : null) ||\r\n (topB && isSaneBounds(topB) ? topB : null) ||\r\n (botB && isSaneBounds(botB) ? botB : null) ||\r\n (drlB && isSaneBounds(drlB) ? drlB : null);\r\n\r\n if (!refB) {\r\n // fallback to your existing ensureFiniteBounds\r\n }\r\n\r\n const refW = refB ? (refB.maxX - refB.minX) : 1;\r\n\r\n // Detect per-layer scale factors relative to reference width\r\n const topScale = topB ? detectScaleFactor(topB.maxX - topB.minX, refW) : 1;\r\n const botScale = botB ? detectScaleFactor(botB.maxX - botB.minX, refW) : 1;\r\n const outScale = outB ? detectScaleFactor(outB.maxX - outB.minX, refW) : 1;\r\n const drlScale = drlB ? detectScaleFactor(drlB.maxX - drlB.minX, refW) : 1;\r\n\r\n const topSilkScale = topSilkB ? detectScaleFactor(topSilkB.maxX - topSilkB.minX, refW) : 1;\r\n const botSilkScale = botSilkB ? detectScaleFactor(botSilkB.maxX - botSilkB.minX, refW) : 1;\r\n\r\n console.log(\"[scale factors]\", { topScale, botScale, outScale, drlScale, topSilkScale, botSilkScale });\r\n\r\n // Apply scaling\r\n const topPrimsN = topPrims ? scaleGerberPrims(topPrims, topScale) : null;\r\n const botPrimsN = botPrims ? scaleGerberPrims(botPrims, botScale) : null;\r\n const outPrimsN = outPrims ? scaleGerberPrims(outPrims, outScale) : null;\r\n const drillHolesN = drillHoles.length ? scaleDrills(drillHoles, drlScale) : [];\r\n\r\n const topSilkPrimsN = topSilkPrims ? scaleGerberPrims(topSilkPrims, topSilkScale) : null;\r\n const botSilkPrimsN = botSilkPrims ? scaleGerberPrims(botSilkPrims, botSilkScale) : null;\r\n\r\n// Board bounds: outline preferred (true board extents). Otherwise fall back to copper only.\r\n// IMPORTANT: do NOT allow silk/drills to expand the board size.\r\nlet boardB: BoundsMm | null = null;\r\n\r\nif (outPrimsN) {\r\n const ob = ensureFiniteBounds(boundsFromGerber(outPrimsN));\r\n if (isSaneBounds(ob)) boardB = ob;\r\n}\r\n\r\nif (!boardB) {\r\n let cb = initBounds();\r\n if (topPrimsN) cb = mergeBounds(cb, boundsFromGerber(topPrimsN));\r\n if (botPrimsN) cb = mergeBounds(cb, boundsFromGerber(botPrimsN));\r\n cb = ensureFiniteBounds(cb);\r\n boardB = cb;\r\n}\r\n\r\n// Final safety\r\nconst b = ensureFiniteBounds(boardB!);\r\n\r\n const widthMm = b.maxX - b.minX;\r\n const heightMm = b.maxY - b.minY;\r\n\r\n const boardGeom: BoardGeom = {\r\n board: {\r\n width_in: widthMm / 25.4,\r\n height_in: heightMm / 25.4,\r\n mm_bounds: {\r\n min_x_mm: b.minX,\r\n min_y_mm: b.minY,\r\n max_x_mm: b.maxX,\r\n max_y_mm: b.maxY,\r\n },\r\n },\r\n };\r\n\r\n const wPx = Math.max(1, Math.round(mmToPx(widthMm)));\r\n const hPx = Math.max(1, Math.round(mmToPx(heightMm)));\r\n\r\n const urls: string[] = [];\r\n const addSvg = (svg: string) => {\r\n const u = svgToBlobUrl(svg);\r\n urls.push(u);\r\n return u;\r\n };\r\n\r\n const layers: ViewerLayers = {\r\n top_board_mask: addSvg(buildBoardMaskSvg(wPx, hPx)),\r\n bottom_board_mask: addSvg(buildBoardMaskSvg(wPx, hPx)),\r\n };\r\n\r\n if (topPrimsN) {\r\n layers.top_copper = addSvg(buildCopperSvg(topPrimsN, b, \"#fbbf24\", \"#fbbf24\"));\r\n }\r\n if (botPrimsN) {\r\n layers.bottom_copper = addSvg(buildCopperSvg(botPrimsN, b, \"#38bdf8\", \"#38bdf8\"));\r\n }\r\n if (drillHolesN.length) {\r\n layers.drills = addSvg(buildDrillsSvg(drillHolesN, b));\r\n }\r\n if (topSilkPrimsN) {\r\n layers.top_silk = addSvg(buildSilkSvg(topSilkPrimsN, b));\r\n }\r\n if (botSilkPrimsN) {\r\n layers.bottom_silk = addSvg(buildSilkSvg(botSilkPrimsN, b));\r\n }\r\n\r\n return {\r\n boardGeom,\r\n layers,\r\n revoke: () => urls.forEach((u) => URL.revokeObjectURL(u)),\r\n };\r\n}\r\n","import \"./viewer.css\";\r\nimport type { BoardGeom, BoardViewer, ViewerLayers, ViewerSideMode } from \"./types\";\r\n\r\nfunction clamp(v: number, lo: number, hi: number) {\r\n return Math.max(lo, Math.min(hi, v));\r\n}\r\n\r\nfunction posMod(v: number, m: number) {\r\n if (!Number.isFinite(v) || !Number.isFinite(m) || m <= 0) return 0;\r\n return ((v % m) + m) % m;\r\n}\r\n\r\nfunction setImgSrc(img: HTMLImageElement, url?: string) {\r\n if (url && url.startsWith(\"blob:\")) {\r\n img.setAttribute(\"src\", url);\r\n } else if (url && url.length > 0) {\r\n // allow non-blob URLs too, if you ever use them\r\n img.setAttribute(\"src\", url);\r\n } else {\r\n img.removeAttribute(\"src\"); // critical: prevents it defaulting to current document URL\r\n }\r\n}\r\n\r\nfunction mustGet<T extends HTMLElement>(root: HTMLElement, selector: string): T {\r\n const el = root.querySelector(selector);\r\n if (!el) throw new Error(`Missing required element: ${selector}`);\r\n return el as T;\r\n}\r\n\r\nexport type BoardViewerOptions = {\r\n onDownload?: () => void;\r\n};\r\n\r\nexport function createBoardViewer(host: HTMLElement, opts: BoardViewerOptions = {}): BoardViewer {\r\n const downloadIcon = `\r\n<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M12 3v10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n <path d=\"M8 11l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M4 17v3h16v-3\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n</svg>\r\n`;\r\n\r\n host.innerHTML = `\r\n <div class=\"board-viewer-root\">\r\n <div class=\"viewer-header\">\r\n <div class=\"viewer-header-left\">\r\n <p class=\"viewer-header-title\">Board viewer</p>\r\n <p class=\"viewer-header-sub\" id=\"viewer-subtitle\">Scroll to zoom, drag to pan</p>\r\n </div>\r\n\r\n <div class=\"viewer-header-right\">\r\n <div class=\"controls\">\r\n <div class=\"segment\" title=\"Side\">\r\n <input id=\"side-top\" type=\"radio\" name=\"side\" value=\"top\" checked />\r\n <label for=\"side-top\">Top</label>\r\n\r\n <input id=\"side-bottom\" type=\"radio\" name=\"side\" value=\"bottom\" />\r\n <label for=\"side-bottom\">Bottom</label>\r\n </div>\r\n\r\n <label class=\"toggle\" title=\"Grid\">\r\n <input type=\"checkbox\" id=\"grid-toggle\" />\r\n Grid\r\n </label>\r\n\r\n <div class=\"select\" title=\"Grid units\">\r\n Units\r\n <select id=\"grid-units\">\r\n <option value=\"in\" selected>in</option>\r\n <option value=\"mm\">mm</option>\r\n </select>\r\n </div>\r\n\r\n <button class=\"btn\" id=\"fit-btn\" type=\"button\" title=\"Fit to viewport\">Fit</button>\r\n <button class=\"btn btn-primary\" id=\"download-btn\" type=\"button\" title=\"Download\">\r\n ${downloadIcon}\r\n Download\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"viewer-body\">\r\n <div id=\"board-viewport\">\r\n <canvas id=\"grid-canvas\"></canvas>\r\n <div id=\"board-content\">\r\n <div id=\"board-stage\">\r\n <div class=\"board-clip\" id=\"boardClip\">\r\n <div class=\"layer-frame\" id=\"layer-fr4\" style=\"z-index:0;\">\r\n <img class=\"layer fr4\" id=\"img-fr4\" alt=\"FR4\" />\r\n </div>\r\n\r\n <div class=\"layer-frame\" id=\"layer-bottom-copper\"><img class=\"layer\" id=\"img-bottom-copper\" alt=\"Bottom copper\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-bottom-mask\"><img class=\"layer\" id=\"img-bottom-mask\" alt=\"Bottom mask\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-bottom-silk\"><img class=\"layer\" id=\"img-bottom-silk\" alt=\"Bottom silk\" /></div>\r\n\r\n <div class=\"layer-frame\" id=\"layer-top-copper\"><img class=\"layer\" id=\"img-top-copper\" alt=\"Top copper\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-top-mask\"><img class=\"layer\" id=\"img-top-mask\" alt=\"Top mask\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-top-silk\"><img class=\"layer\" id=\"img-top-silk\" alt=\"Top silk\" /></div>\r\n\r\n <div class=\"layer-frame\" id=\"layer-drills\"><img class=\"layer\" id=\"img-drills\" alt=\"Drills\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-vias\"><img class=\"layer\" id=\"img-vias\" alt=\"Vias\" /></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"board-viewer-hint\">Scroll to zoom, drag to pan.</div>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n\r\n const root = host.firstElementChild as HTMLElement;\r\n const viewport = mustGet<HTMLDivElement>(root, \"#board-viewport\");\r\n const content = mustGet<HTMLDivElement>(root, \"#board-content\");\r\n const stage = mustGet<HTMLDivElement>(root, \"#board-stage\");\r\n const boardClip = mustGet<HTMLDivElement>(root, \"#boardClip\");\r\n\r\n const gridCanvas = mustGet<HTMLCanvasElement>(root, \"#grid-canvas\");\r\n const gridToggle = mustGet<HTMLInputElement>(root, \"#grid-toggle\");\r\n const gridUnits = mustGet<HTMLSelectElement>(root, \"#grid-units\");\r\n const fitBtn = mustGet<HTMLButtonElement>(root, \"#fit-btn\");\r\n const downloadBtn = mustGet<HTMLButtonElement>(root, \"#download-btn\");\r\n\r\n const radios = Array.from(root.querySelectorAll<HTMLInputElement>('input[name=\"side\"]'));\r\n\r\n const imgFr4 = mustGet<HTMLImageElement>(root, \"#img-fr4\");\r\n const imgTopCopper = mustGet<HTMLImageElement>(root, \"#img-top-copper\");\r\n const imgBottomCopper = mustGet<HTMLImageElement>(root, \"#img-bottom-copper\");\r\n const imgTopMask = mustGet<HTMLImageElement>(root, \"#img-top-mask\");\r\n const imgBottomMask = mustGet<HTMLImageElement>(root, \"#img-bottom-mask\");\r\n const imgTopSilk = mustGet<HTMLImageElement>(root, \"#img-top-silk\");\r\n const imgBottomSilk = mustGet<HTMLImageElement>(root, \"#img-bottom-silk\");\r\n const imgDrills = mustGet<HTMLImageElement>(root, \"#img-drills\");\r\n const imgVias = mustGet<HTMLImageElement>(root, \"#img-vias\");\r\n\r\n let boardGeom: BoardGeom | null = null;\r\n let layers: ViewerLayers = {};\r\n\r\n let scale = 1;\r\n let translateX = 0;\r\n let translateY = 0;\r\n\r\n let isDragging = false;\r\n let dragStartX = 0;\r\n let dragStartY = 0;\r\n let dragStartTranslateX = 0;\r\n let dragStartTranslateY = 0;\r\n\r\n let rafPending = false;\r\n let didInteract = false;\r\n\r\n function clampScale(v: number) {\r\n return clamp(v, 0.2, 8);\r\n }\r\n\r\n function requestTransform() {\r\n if (rafPending) return;\r\n rafPending = true;\r\n requestAnimationFrame(() => {\r\n rafPending = false;\r\n content.style.transform =\r\n `translate3d(${translateX}px, ${translateY}px, 0) scale(${scale})`;\r\n if (gridToggle.checked) drawGrid();\r\n });\r\n }\r\n\r\n function fitBoardToViewport(marginFrac = 0.08) {\r\n const vp = viewport.getBoundingClientRect();\r\n const stageW = stage.offsetWidth || 1;\r\n const stageH = stage.offsetHeight || 1;\r\n\r\n const usableW = Math.max(1, vp.width * (1 - 2 * marginFrac));\r\n const usableH = Math.max(1, vp.height * (1 - 2 * marginFrac));\r\n\r\n scale = clampScale(Math.min(usableW / stageW, usableH / stageH));\r\n translateX = (vp.width - scale * stageW) / 2;\r\n translateY = (vp.height - scale * stageH) / 2;\r\n\r\n requestTransform();\r\n }\r\n\r\n function computePxPerIn() {\r\n let pxPerIn = 1000.0;\r\n if (boardGeom?.board?.width_in) {\r\n const rect = stage.getBoundingClientRect();\r\n const worldW = rect.width / scale;\r\n if (Number.isFinite(worldW) && worldW > 0) pxPerIn = worldW / boardGeom.board.width_in;\r\n }\r\n return pxPerIn;\r\n }\r\n\r\n function resizeGridCanvas() {\r\n const dpr = window.devicePixelRatio || 1;\r\n const rect = viewport.getBoundingClientRect();\r\n gridCanvas.width = Math.max(1, Math.floor(rect.width * dpr));\r\n gridCanvas.height = Math.max(1, Math.floor(rect.height * dpr));\r\n gridCanvas.style.width = `${rect.width}px`;\r\n gridCanvas.style.height = `${rect.height}px`;\r\n }\r\n\r\n function drawGrid() {\r\n if (!gridToggle.checked) {\r\n gridCanvas.style.display = \"none\";\r\n return;\r\n }\r\n gridCanvas.style.display = \"block\";\r\n\r\n const ctx = gridCanvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n const dpr = window.devicePixelRatio || 1;\r\n const rect = viewport.getBoundingClientRect();\r\n const w = rect.width;\r\n const h = rect.height;\r\n\r\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n ctx.clearRect(0, 0, w, h);\r\n\r\n const pxPerIn = computePxPerIn();\r\n const pxPerMm = pxPerIn / 25.4;\r\n\r\n const units = gridUnits.value;\r\n const minorWorldPx = units === \"mm\" ? pxPerMm * 1 : pxPerIn * 0.1;\r\n const majorWorldPx = units === \"mm\" ? pxPerMm * 10 : pxPerIn * 1.0;\r\n\r\n const minor = minorWorldPx * scale;\r\n const major = majorWorldPx * scale;\r\n if (!Number.isFinite(minor) || minor < 6) return;\r\n\r\n const oxMinor = posMod(translateX, minor);\r\n const oyMinor = posMod(translateY, minor);\r\n const oxMajor = posMod(translateX, major);\r\n const oyMajor = posMod(translateY, major);\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = \"rgba(17, 24, 39, 0.12)\";\r\n ctx.beginPath();\r\n for (let x = oxMinor; x < w; x += minor) {\r\n const xi = Math.round(x) + 0.5;\r\n ctx.moveTo(xi, 0);\r\n ctx.lineTo(xi, h);\r\n }\r\n for (let y = oyMinor; y < h; y += minor) {\r\n const yi = Math.round(y) + 0.5;\r\n ctx.moveTo(0, yi);\r\n ctx.lineTo(w, yi);\r\n }\r\n ctx.stroke();\r\n\r\n if (Number.isFinite(major) && major >= 12) {\r\n ctx.strokeStyle = \"rgba(17, 24, 39, 0.22)\";\r\n ctx.beginPath();\r\n for (let x = oxMajor; x < w; x += major) {\r\n const xi = Math.round(x) + 0.5;\r\n ctx.moveTo(xi, 0);\r\n ctx.lineTo(xi, h);\r\n }\r\n for (let y = oyMajor; y < h; y += major) {\r\n const yi = Math.round(y) + 0.5;\r\n ctx.moveTo(0, yi);\r\n ctx.lineTo(w, yi);\r\n }\r\n ctx.stroke();\r\n }\r\n }\r\n\r\n function setLayerFrameVisible(frameId: string, on: boolean) {\r\n const el = root.querySelector<HTMLElement>(`#${frameId}`);\r\n if (!el) return;\r\n el.style.display = on ? \"block\" : \"none\";\r\n }\r\n\r\n function setBoardMask(url: string | undefined) {\r\n if (!url) return;\r\n boardClip.style.setProperty(\"--board-mask-url\", `url('${url}')`);\r\n }\r\n\r\n function showSideMode(mode: ViewerSideMode) {\r\n const showTop = mode === \"top\";\r\n const showBottom = mode === \"bottom\";\r\n\r\n setLayerFrameVisible(\"layer-top-copper\", showTop && !!layers.top_copper);\r\n setLayerFrameVisible(\"layer-top-mask\", showTop && !!layers.top_mask);\r\n setLayerFrameVisible(\"layer-top-silk\", showTop && !!layers.top_silk);\r\n\r\n setLayerFrameVisible(\"layer-bottom-copper\", showBottom && !!layers.bottom_copper);\r\n setLayerFrameVisible(\"layer-bottom-mask\", showBottom && !!layers.bottom_mask);\r\n setLayerFrameVisible(\"layer-bottom-silk\", showBottom && !!layers.bottom_silk);\r\n\r\n setLayerFrameVisible(\"layer-drills\", !!layers.drills);\r\n setLayerFrameVisible(\"layer-vias\", !!layers.vias);\r\n\r\n const maskUrl =\r\n mode === \"bottom\"\r\n ? (layers.bottom_board_mask ?? layers.top_board_mask)\r\n : (layers.top_board_mask ?? layers.bottom_board_mask);\r\n\r\n if (maskUrl) setBoardMask(maskUrl);\r\n }\r\n\r\n function setStageFromGeometry() {\r\n if (!boardGeom?.board) return;\r\n const SCALE = 1000.0; // same constant used in your renderer logic in result.html\r\n const W = Math.round((boardGeom.board.width_in || 1) * SCALE);\r\n const H = Math.round((boardGeom.board.height_in || 1) * SCALE);\r\n stage.style.width = `${W}px`;\r\n stage.style.height = `${H}px`;\r\n }\r\n\r\n // Events\r\n viewport.addEventListener(\"wheel\", (event) => {\r\n event.preventDefault();\r\n didInteract = true;\r\n\r\n const rect = viewport.getBoundingClientRect();\r\n const mouseX = event.clientX - rect.left;\r\n const mouseY = event.clientY - rect.top;\r\n\r\n const oldScale = scale;\r\n const zoomFactor = 1.1;\r\n\r\n scale = event.deltaY < 0 ? clampScale(scale * zoomFactor) : clampScale(scale / zoomFactor);\r\n\r\n const zoomRatio = scale / oldScale;\r\n translateX = mouseX - (mouseX - translateX) * zoomRatio;\r\n translateY = mouseY - (mouseY - translateY) * zoomRatio;\r\n\r\n requestTransform();\r\n }, { passive: false });\r\n\r\n viewport.addEventListener(\"mousedown\", (event) => {\r\n if (event.button !== 0) return;\r\n event.preventDefault();\r\n didInteract = true;\r\n\r\n isDragging = true;\r\n viewport.classList.add(\"grabbing\");\r\n dragStartX = event.clientX;\r\n dragStartY = event.clientY;\r\n dragStartTranslateX = translateX;\r\n dragStartTranslateY = translateY;\r\n });\r\n\r\n const onMove = (event: MouseEvent) => {\r\n if (!isDragging) return;\r\n const dx = event.clientX - dragStartX;\r\n const dy = event.clientY - dragStartY;\r\n translateX = dragStartTranslateX + dx;\r\n translateY = dragStartTranslateY + dy;\r\n requestTransform();\r\n };\r\n\r\n const onUp = () => {\r\n if (!isDragging) return;\r\n isDragging = false;\r\n viewport.classList.remove(\"grabbing\");\r\n };\r\n\r\n window.addEventListener(\"mousemove\", onMove);\r\n window.addEventListener(\"mouseup\", onUp);\r\n\r\n gridToggle.addEventListener(\"change\", () => {\r\n resizeGridCanvas();\r\n drawGrid();\r\n });\r\n gridUnits.addEventListener(\"change\", drawGrid);\r\n fitBtn.addEventListener(\"click\", () => fitBoardToViewport(0.08));\r\n downloadBtn.addEventListener(\"click\", () => {\r\n opts.onDownload?.();\r\n });\r\n\r\n radios.forEach((r) => {\r\n r.addEventListener(\"change\", () => {\r\n const mode = (radios.find((x) => x.checked)?.value || \"top\") as ViewerSideMode;\r\n showSideMode(mode);\r\n });\r\n });\r\n\r\n window.addEventListener(\"resize\", () => {\r\n resizeGridCanvas();\r\n if (!didInteract) fitBoardToViewport(0.08);\r\n else requestTransform();\r\n });\r\n\r\n function setData(data: { boardGeom: BoardGeom; layers: ViewerLayers }) {\r\n boardGeom = data.boardGeom;\r\n layers = data.layers;\r\n\r\n // images\r\n setImgSrc(imgTopCopper, layers.top_copper);\r\n setImgSrc(imgBottomCopper, layers.bottom_copper);\r\n setImgSrc(imgTopMask, layers.top_mask);\r\n setImgSrc(imgBottomMask, layers.bottom_mask);\r\n setImgSrc(imgTopSilk, layers.top_silk);\r\n setImgSrc(imgBottomSilk, layers.bottom_silk);\r\n setImgSrc(imgDrills, layers.drills);\r\n setImgSrc(imgVias, layers.vias);\r\n\r\n // FR4 base\r\n setImgSrc(imgFr4, layers.top_copper ?? layers.bottom_copper);\r\n\r\n setStageFromGeometry();\r\n resizeGridCanvas();\r\n fitBoardToViewport(0.08);\r\n\r\n const mode = (radios.find((x) => x.checked)?.value || \"top\") as ViewerSideMode;\r\n showSideMode(mode);\r\n requestTransform();\r\n }\r\n\r\n function dispose() {\r\n window.removeEventListener(\"mousemove\", onMove);\r\n window.removeEventListener(\"mouseup\", onUp);\r\n host.innerHTML = \"\";\r\n }\r\n\r\n return {\r\n setData,\r\n setSideMode: (mode) => {\r\n const r = radios.find((x) => x.value === mode);\r\n if (r) r.checked = true;\r\n showSideMode(mode);\r\n },\r\n fit: () => fitBoardToViewport(0.08),\r\n dispose,\r\n };\r\n}\r\n"],"names":["e","module","s","a","o","h","u","r","t","require","l","n","i","d","c","p","f","A","O","I","m","_","g","b","v","y","w","k","x","S","z","C","B","E","R","global","T","D","F","N","U","P","L","j","Z","W","M","H","G","K","Y","X","V","q","J","norm","pickByExt","names","exts","set","nl","dot","pickByContains","required","req","classifyLayerNames","files","top_copper","bottom_copper","top_mask","bottom_mask","top_silk","bottom_silk","outline","drills","DEFAULT_FLASH_DIAM_MM","parseGerberFile","name","content","_role","state","lines","rawLine","line","handleParameterBlock","handleCommandLine","block","body","ix","dx","oldScale","newScale","factor","ap","code","shape","params","diameterMm","widthMm","heightMm","parts","sizeXmm","sizeYmm","dCode","dMatch","coordMatchX","coordMatchY","newX","newY","decodeCoord","prevX","prevY","width","flash","numStr","sign","digits","scale","val","parseDrillFile","toolDiameters","currentTool","holes","toolMatch","toolId","diameter","coordMatch","xRaw","yRaw","xVal","yVal","boundsSize","isSaneBounds","detectScaleFactor","layerW","refW","ratio","scaleGerberPrims","prims","hole","scaleDrills","svgToBlobUrl","svg","expandBounds","initBounds","boundsFromGerber","boundsFromDrills","mergeBounds","ensureFiniteBounds","SCALE_PX_PER_IN","mmToPx","mm","toLocalMm","lx","ly","buildBoardMaskSvg","stageWpx","stageHpx","buildCopperSvg","bounds","stroke","fill","wMm","hMm","wPx","hPx","pxPerMm","trackEls","sw","flashEls","cx","cy","rw","rh","rx","regionEls","buildSilkSvg","b2","buildDrillsSvg","els","renderGerbersZip","file","zip","JSZip","classified","readText","path","topText","botText","outText","drillText","topSilkText","botSilkText","topPrims","botPrims","outPrims","drillParsed","topSilkPrims","botSilkPrims","drillHoles","topB","botB","outB","drlB","topSilkB","botSilkB","refB","topScale","botScale","outScale","drlScale","topSilkScale","botSilkScale","topPrimsN","botPrimsN","outPrimsN","drillHolesN","topSilkPrimsN","botSilkPrimsN","boardB","ob","cb","boardGeom","urls","addSvg","layers","clamp","lo","hi","posMod","setImgSrc","img","url","mustGet","root","selector","el","createBoardViewer","host","opts","downloadIcon","viewport","stage","boardClip","gridCanvas","gridToggle","gridUnits","fitBtn","downloadBtn","radios","imgFr4","imgTopCopper","imgBottomCopper","imgTopMask","imgBottomMask","imgTopSilk","imgBottomSilk","imgDrills","imgVias","translateX","translateY","isDragging","dragStartX","dragStartY","dragStartTranslateX","dragStartTranslateY","rafPending","didInteract","clampScale","requestTransform","drawGrid","fitBoardToViewport","marginFrac","vp","stageW","stageH","usableW","usableH","computePxPerIn","pxPerIn","worldW","resizeGridCanvas","dpr","rect","ctx","units","minorWorldPx","majorWorldPx","minor","major","oxMinor","oyMinor","oxMajor","oyMajor","xi","yi","setLayerFrameVisible","frameId","on","setBoardMask","showSideMode","mode","showTop","showBottom","maskUrl","setStageFromGeometry","SCALE","event","mouseX","mouseY","zoomFactor","zoomRatio","onMove","dy","onUp","setData","data","dispose"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"gerbers-renderer.es.js","sources":["../node_modules/jszip/dist/jszip.min.js","../src/io/unzip.ts","../src/core/detect.ts","../src/core/errors.ts","../src/io/unpackArchive.ts","../src/render/layerClassify.ts","../src/parse/gerber-parser.ts","../src/parse/drill-parser.ts","../src/render/renderGerbersFiles.ts","../src/render/renderGerbersZip.ts","../src/render/renderGerbers.ts","../src/viewer/BoardViewer.ts"],"sourcesContent":["/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","// src/io/unzip.ts\r\nimport JSZip from \"jszip\";\r\n\r\n/**\r\n * A single entry inside the unzipped gerbers.zip\r\n */\r\nexport interface ZipEntry {\r\n /** Normalized path style name, always forward slashes */\r\n name: string;\r\n /** Read entry as UTF-8 text */\r\n text: () => Promise<string>;\r\n /** Read entry as ArrayBuffer */\r\n arrayBuffer: () => Promise<ArrayBuffer>;\r\n}\r\n\r\n/**\r\n * Accepts a File, Blob, or ArrayBuffer and returns a list of ZipEntry helpers.\r\n */\r\nexport async function unzipGerbersZip(\r\n input: File | Blob | ArrayBuffer\r\n): Promise<ZipEntry[]> {\r\n const buffer = await toArrayBuffer(input);\r\n const zip = await JSZip.loadAsync(buffer);\r\n\r\n const entries: ZipEntry[] = [];\r\n\r\n zip.forEach((rawName, file) => {\r\n if (file.dir) {\r\n // Ignore directories\r\n return;\r\n }\r\n\r\n const normalizedName = normalizeZipPath(rawName);\r\n\r\n entries.push({\r\n name: normalizedName,\r\n text: () => file.async(\"text\"),\r\n arrayBuffer: () => file.async(\"arraybuffer\"),\r\n });\r\n });\r\n\r\n return entries;\r\n}\r\n\r\n/**\r\n * Convert various supported inputs into ArrayBuffer\r\n */\r\nasync function toArrayBuffer(input: File | Blob | ArrayBuffer): Promise<ArrayBuffer> {\r\n if (input instanceof ArrayBuffer) {\r\n return input;\r\n }\r\n\r\n if (input instanceof Blob) {\r\n // File inherits from Blob\r\n return await input.arrayBuffer();\r\n }\r\n\r\n // Fallback, should not hit if types are correct\r\n throw new Error(\"Unsupported input type for unzipGerbersZip\");\r\n}\r\n\r\n/**\r\n * Normalize zip entry paths:\r\n * - Replace backslashes with forward slashes\r\n * - Remove leading \"./\"\r\n */\r\nfunction normalizeZipPath(path: string): string {\r\n let p = path.replace(/\\\\/g, \"/\");\r\n if (p.startsWith(\"./\")) {\r\n p = p.slice(2);\r\n }\r\n // Remove leading slash if any\r\n if (p.startsWith(\"/\")) {\r\n p = p.slice(1);\r\n }\r\n return p;\r\n}\r\n","// src/core/detect.ts\r\n\r\nimport { unzipGerbersZip } from \"../io/unzip\";\r\nimport type { GerberBundleType, GerberDetectResult } from \"./types\";\r\n\r\ntype DirInput = Record<string, Uint8Array>;\r\n\r\nfunction isDirInput(x: unknown): x is DirInput {\r\n return !!x && typeof x === \"object\" && !(x instanceof ArrayBuffer) && !(x instanceof Uint8Array);\r\n}\r\n\r\nfunction toU8(input: ArrayBuffer | Uint8Array): Uint8Array {\r\n return input instanceof Uint8Array ? input : new Uint8Array(input);\r\n}\r\n\r\n// Ensure we pass a real ArrayBuffer (not ArrayBufferLike) and not an offset view.\r\nfunction toExactArrayBuffer(bytes: Uint8Array): ArrayBuffer {\r\n const ab =\r\n bytes.byteOffset === 0 && bytes.byteLength === bytes.buffer.byteLength\r\n ? bytes.buffer\r\n : bytes.slice().buffer;\r\n\r\n // TypeScript sometimes treats bytes.buffer as ArrayBufferLike; normalize.\r\n return ab as ArrayBuffer;\r\n}\r\n\r\nfunction startsWith(bytes: Uint8Array, sig: number[], offset = 0): boolean {\r\n if (bytes.length < offset + sig.length) return false;\r\n for (let i = 0; i < sig.length; i++) {\r\n if (bytes[offset + i] !== sig[i]) return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction detectArchiveTypeFromBytes(bytes: Uint8Array): GerberBundleType {\r\n // ZIP: PK..\r\n if (\r\n startsWith(bytes, [0x50, 0x4b, 0x03, 0x04]) ||\r\n startsWith(bytes, [0x50, 0x4b, 0x05, 0x06]) ||\r\n startsWith(bytes, [0x50, 0x4b, 0x07, 0x08])\r\n ) {\r\n return \"zip\";\r\n }\r\n\r\n // RAR4: 52 61 72 21 1A 07 00\r\n // RAR5: 52 61 72 21 1A 07 01 00\r\n if (\r\n startsWith(bytes, [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00]) ||\r\n startsWith(bytes, [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x01, 0x00])\r\n ) {\r\n return \"rar\";\r\n }\r\n\r\n // 7z: 37 7A BC AF 27 1C\r\n if (startsWith(bytes, [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c])) {\r\n return \"7z\";\r\n }\r\n\r\n // tar: \"ustar\" at offset 257\r\n if (bytes.length > 262 && startsWith(bytes, [0x75, 0x73, 0x74, 0x61, 0x72], 257)) {\r\n return \"tar\";\r\n }\r\n\r\n return \"unknown\";\r\n}\r\n\r\nfunction normalizeName(name: string): string {\r\n return name.replace(/\\\\/g, \"/\").replace(/^\\.?\\//, \"\");\r\n}\r\n\r\nfunction scoreGerberLike(files: string[]): { confidence: number; reasons: string[] } {\r\n const reasons: string[] = [];\r\n const lower = files.map((f) => normalizeName(f).toLowerCase());\r\n\r\n const has = (pred: (s: string) => boolean) => lower.some(pred);\r\n\r\n const gerberExt = /\\.(gbr|gbl|gtl|gbs|gts|gbo|gto|gko|gm1|gml|pho|art)$/i;\r\n const drillExt = /\\.(drl|xln)$/i;\r\n\r\n const gerberLikeCount = lower.filter((f) => gerberExt.test(f)).length;\r\n const drillLikeCount = lower.filter((f) => drillExt.test(f) || f.includes(\"drill\")).length;\r\n\r\n const hasTop = has((f) => (f.includes(\"top\") && f.includes(\"copper\")) || f.endsWith(\".gtl\"));\r\n const hasBottom = has((f) => f.includes(\"bot\") || f.includes(\"bottom\") || f.endsWith(\".gbl\"));\r\n const hasMask = has((f) => f.includes(\"mask\") || f.includes(\"solder\") || f.endsWith(\".gts\") || f.endsWith(\".gbs\"));\r\n const hasSilk = has((f) => f.includes(\"silk\") || f.includes(\"legend\") || f.endsWith(\".gto\") || f.endsWith(\".gbo\"));\r\n const hasOutline = has((f) => f.includes(\"outline\") || f.includes(\"profile\") || f.includes(\"edge\") || f.endsWith(\".gko\") || f.endsWith(\".gm1\") || f.endsWith(\".gml\"));\r\n\r\n const obviousNonGerber = lower.every((f) =>\r\n f.endsWith(\".pdf\") ||\r\n f.endsWith(\".png\") ||\r\n f.endsWith(\".jpg\") ||\r\n f.endsWith(\".jpeg\") ||\r\n f.endsWith(\".svg\") ||\r\n f.endsWith(\".txt\") ||\r\n f.endsWith(\".md\")\r\n );\r\n\r\n let score = 0;\r\n\r\n if (files.length === 0) {\r\n reasons.push(\"No files found.\");\r\n return { confidence: 0, reasons };\r\n }\r\n\r\n if (obviousNonGerber) {\r\n reasons.push(\"Bundle only contains documents/images (no Gerber-like files).\");\r\n return { confidence: 0.05, reasons };\r\n }\r\n\r\n if (gerberLikeCount > 0) {\r\n score += 0.35;\r\n reasons.push(`Found ${gerberLikeCount} Gerber-like file(s) by extension.`);\r\n } else {\r\n reasons.push(\"No common Gerber extensions detected.\");\r\n }\r\n\r\n if (drillLikeCount > 0) {\r\n score += 0.2;\r\n reasons.push(`Found ${drillLikeCount} drill-like file(s).`);\r\n }\r\n\r\n if (hasOutline) {\r\n score += 0.15;\r\n reasons.push(\"Found outline/profile/edge candidate.\");\r\n }\r\n\r\n if (hasTop && hasBottom) {\r\n score += 0.2;\r\n reasons.push(\"Found both top and bottom copper candidates.\");\r\n } else if (hasTop || hasBottom) {\r\n score += 0.1;\r\n reasons.push(\"Found at least one copper candidate.\");\r\n }\r\n\r\n if (hasMask) {\r\n score += 0.05;\r\n reasons.push(\"Found solder mask candidate.\");\r\n }\r\n\r\n if (hasSilk) {\r\n score += 0.05;\r\n reasons.push(\"Found silkscreen/legend candidate.\");\r\n }\r\n\r\n score = Math.max(0, Math.min(1, score));\r\n\r\n if (score < 0.6 && gerberLikeCount >= 2) {\r\n score = Math.max(score, 0.55);\r\n reasons.push(\"Multiple Gerber-like files found, but layer completeness is unclear.\");\r\n }\r\n\r\n return { confidence: score, reasons };\r\n}\r\n\r\nexport async function detectGerberBundle(\r\n input: ArrayBuffer | Uint8Array | Record<string, Uint8Array>\r\n): Promise<GerberDetectResult> {\r\n // Directory-style input\r\n if (isDirInput(input)) {\r\n const files = Object.keys(input).map(normalizeName);\r\n const { confidence, reasons } = scoreGerberLike(files);\r\n return {\r\n isGerber: confidence >= 0.6,\r\n archiveType: \"directory\",\r\n confidence,\r\n reasons,\r\n files,\r\n };\r\n }\r\n\r\n const bytes = toU8(input);\r\n const archiveType = detectArchiveTypeFromBytes(bytes);\r\n\r\n if (archiveType === \"zip\") {\r\n try {\r\n const ab = toExactArrayBuffer(bytes);\r\n const entries = await unzipGerbersZip(ab);\r\n const files = entries.map((e) => e.name);\r\n const { confidence, reasons } = scoreGerberLike(files);\r\n return {\r\n isGerber: confidence >= 0.6,\r\n archiveType: \"zip\",\r\n confidence,\r\n reasons,\r\n files,\r\n };\r\n } catch (err) {\r\n return {\r\n isGerber: false,\r\n archiveType: \"zip\",\r\n confidence: 0.1,\r\n reasons: [\"Looks like a zip, but failed to read as zip.\", String(err)],\r\n };\r\n }\r\n }\r\n\r\n if (archiveType === \"rar\" || archiveType === \"7z\" || archiveType === \"tar\") {\r\n return {\r\n isGerber: false,\r\n archiveType,\r\n confidence: 0.2,\r\n reasons: [\r\n `Detected ${archiveType} archive by signature.`,\r\n \"Archive type is not unpacked by default. Use list/detect for UX, or add a decoder to render.\",\r\n ],\r\n };\r\n }\r\n\r\n // Could be a single Gerber file or random bytes\r\n const head = new TextDecoder(\"utf-8\", { fatal: false }).decode(bytes.slice(0, 4096));\r\n const looksGerber =\r\n head.includes(\"%FSLAX\") ||\r\n head.includes(\"%MOIN\") ||\r\n head.includes(\"%MOMM\") ||\r\n head.includes(\"G04\") ||\r\n head.includes(\"%ADD\");\r\n\r\n if (looksGerber) {\r\n return {\r\n isGerber: true,\r\n archiveType: \"single-file\",\r\n confidence: 0.7,\r\n reasons: [\"Input appears to be a single Gerber file (RS-274X markers detected).\"],\r\n };\r\n }\r\n\r\n return {\r\n isGerber: false,\r\n archiveType: \"unknown\",\r\n confidence: 0.0,\r\n reasons: [\"Input does not match known archive signatures and does not resemble a Gerber file.\"],\r\n };\r\n}\r\n","// src/core/errors.ts\r\n\r\nexport class GerberError extends Error {\r\n code:\r\n | \"NOT_AN_ARCHIVE\"\r\n | \"UNSUPPORTED_ARCHIVE\"\r\n | \"NOT_GERBER\"\r\n | \"MISSING_LAYERS\"\r\n | \"PARSE_ERROR\";\r\n\r\n details?: unknown;\r\n\r\n constructor(\r\n code: GerberError[\"code\"],\r\n message: string,\r\n details?: unknown\r\n ) {\r\n super(message);\r\n this.name = \"GerberError\";\r\n this.code = code;\r\n this.details = details;\r\n }\r\n}\r\n","// src/io/unpackArchive.ts\r\nimport JSZip from \"jszip\";\r\nimport { detectGerberBundle } from \"../core/detect\";\r\nimport { GerberError } from \"../core/errors\";\r\n\r\ntype ArchiveInit = { workerUrl?: string };\r\n\r\nexport type UnpackResult = {\r\n archiveType: \"zip\" | \"rar\";\r\n files: Record<string, Uint8Array>;\r\n};\r\n\r\nfunction normalizeName(name: string): string {\r\n let p = name.replace(/\\\\/g, \"/\");\r\n if (p.startsWith(\"./\")) p = p.slice(2);\r\n if (p.startsWith(\"/\")) p = p.slice(1);\r\n return p;\r\n}\r\n\r\nfunction ensureUint8(input: ArrayBuffer | Uint8Array): Uint8Array {\r\n return input instanceof Uint8Array ? input : new Uint8Array(input);\r\n}\r\nfunction toArrayBuffer(bytes: Uint8Array): ArrayBuffer {\r\n try {\r\n return bytes.slice().buffer;\r\n } catch {\r\n const out = new Uint8Array(bytes.byteLength);\r\n out.set(bytes);\r\n return out.buffer;\r\n }\r\n}\r\n\r\nasync function unzipBytes(bytes: Uint8Array): Promise<Record<string, Uint8Array>> {\r\n let zip: JSZip;\r\n try {\r\n zip = await JSZip.loadAsync(toArrayBuffer(bytes));\r\n } catch (error) {\r\n throw new GerberError(\r\n \"NOT_AN_ARCHIVE\",\r\n \"Failed to parse ZIP archive\",\r\n error\r\n );\r\n }\r\n\r\n const out: Record<string, Uint8Array> = {};\r\n\r\n const MAX_FILES = 1000;\r\n const MAX_TOTAL_BYTES = 100 * 1024 * 1024;\r\n\r\n const entries = Object.entries(zip.files).filter(([, f]) => f && !f.dir);\r\n if (entries.length > MAX_FILES) {\r\n throw new GerberError(\r\n \"PARSE_ERROR\",\r\n `ZIP contains too many files (${entries.length} > ${MAX_FILES})`\r\n );\r\n }\r\n\r\n let totalBytes = 0;\r\n for (const [rawName, file] of entries) {\r\n try {\r\n const name = normalizeName(rawName);\r\n const ab = await file.async(\"arraybuffer\");\r\n totalBytes += ab.byteLength;\r\n if (totalBytes > MAX_TOTAL_BYTES) {\r\n throw new GerberError(\r\n \"PARSE_ERROR\",\r\n `ZIP exceeds max extracted size (${MAX_TOTAL_BYTES} bytes)`\r\n );\r\n }\r\n out[name] = new Uint8Array(ab);\r\n } catch (error) {\r\n console.warn(`Failed to extract file ${rawName}:`, error);\r\n }\r\n }\r\n\r\n if (Object.keys(out).length === 0) {\r\n throw new GerberError(\"PARSE_ERROR\", \"No files extracted from ZIP archive\");\r\n }\r\n\r\n return out;\r\n}\r\n\r\nasync function unrarBytes(bytes: Uint8Array, init?: ArchiveInit): Promise<Record<string, Uint8Array>> {\r\n let Archive: any;\r\n \r\n try {\r\n // Dynamic import to avoid loading unless needed\r\n const mod = await import(\"libarchive.js\");\r\n Archive = (mod as any).Archive ?? (mod as any).default?.Archive;\r\n } catch (error) {\r\n throw new GerberError(\r\n \"PARSE_ERROR\",\r\n \"Failed to load libarchive.js\",\r\n error\r\n );\r\n }\r\n\r\n if (!Archive) {\r\n throw new GerberError(\"PARSE_ERROR\", \"libarchive.js did not export Archive\");\r\n }\r\n\r\n // Consumer must provide workerUrl OR host the worker bundle next to the module.\r\n if (init?.workerUrl) {\r\n try {\r\n Archive.init({ workerUrl: init.workerUrl });\r\n } catch (error) {\r\n throw new GerberError(\r\n \"PARSE_ERROR\",\r\n \"Failed to initialize libarchive.js worker\",\r\n error\r\n );\r\n }\r\n }\r\n\r\n let archive: any;\r\n try {\r\n const blob = new Blob([toArrayBuffer(bytes)], { type: 'application/octet-stream' });\r\n archive = await Archive.open(blob);\r\n } catch (error) {\r\n throw new GerberError(\"NOT_AN_ARCHIVE\", \"Failed to open RAR archive\", error);\r\n }\r\n\r\n let extracted: any;\r\n try {\r\n // Set a timeout to prevent hanging on large archives\r\n extracted = await Promise.race([\r\n archive.extractFiles(),\r\n new Promise((_, reject) => \r\n setTimeout(() => reject(new Error('Extraction timed out')), 30000)\r\n )\r\n ]);\r\n } catch (error) {\r\n throw new GerberError(\"PARSE_ERROR\", \"Failed to extract RAR archive\", error);\r\n }\r\n\r\n const out: Record<string, Uint8Array> = {};\r\n let fileCount = 0;\r\n const MAX_FILES = 1000;\r\n const MAX_TOTAL_SIZE = 100 * 1024 * 1024; // 100MB\r\n let totalSize = 0;\r\n\r\n async function walk(node: any, prefix: string): Promise<void> {\r\n if (fileCount >= MAX_FILES) {\r\n throw new GerberError(\r\n \"PARSE_ERROR\",\r\n `Archive contains too many files (max ${MAX_FILES})`\r\n );\r\n }\r\n\r\n for (const key of Object.keys(node)) {\r\n const val = node[key];\r\n const path = prefix ? `${prefix}/${key}` : key;\r\n\r\n if (val instanceof File || val instanceof Blob) {\r\n fileCount++;\r\n try {\r\n const ab = await val.arrayBuffer();\r\n totalSize += ab.byteLength;\r\n \r\n if (totalSize > MAX_TOTAL_SIZE) {\r\n throw new GerberError(\r\n \"PARSE_ERROR\",\r\n `Total extracted size exceeds limit (${MAX_TOTAL_SIZE} bytes)`\r\n );\r\n }\r\n \r\n out[normalizeName(path)] = new Uint8Array(ab);\r\n } catch (error) {\r\n console.warn(`Failed to extract file ${path}:`, error);\r\n // Continue with other files\r\n }\r\n } else if (val && typeof val === 'object') {\r\n await walk(val, path);\r\n }\r\n }\r\n }\r\n\r\n try {\r\n await walk(extracted, '');\r\n } finally {\r\n // Clean up resources\r\n if (archive && typeof archive.close === 'function') {\r\n try {\r\n await archive.close();\r\n } catch (error) {\r\n console.warn('Failed to close archive:', error);\r\n }\r\n }\r\n }\r\n\r\n if (Object.keys(out).length === 0) {\r\n throw new GerberError(\"PARSE_ERROR\", \"No files extracted from RAR archive\");\r\n }\r\n\r\n return out;\r\n}\r\n\r\nexport async function unpackGerberArchive(\r\n input: ArrayBuffer | Uint8Array,\r\n init?: ArchiveInit\r\n): Promise<UnpackResult> {\r\n if (!input || (input as ArrayBuffer).byteLength === 0) {\r\n throw new GerberError(\"NOT_AN_ARCHIVE\", \"Input is empty\");\r\n }\r\n\r\n const bytes = ensureUint8(input);\r\n \r\n // Validate input size (100MB max)\r\n const MAX_INPUT_SIZE = 100 * 1024 * 1024; // 100MB\r\n if (bytes.length > MAX_INPUT_SIZE) {\r\n throw new GerberError(\r\n \"PARSE_ERROR\",\r\n `Input size (${bytes.length} bytes) exceeds maximum allowed size (${MAX_INPUT_SIZE} bytes)`\r\n );\r\n }\r\n\r\n let det;\r\n try {\r\n det = await detectGerberBundle(bytes);\r\n } catch (error) {\r\n throw new GerberError(\"PARSE_ERROR\", \"Failed to detect archive type\", error);\r\n }\r\n\r\n if (!det.isGerber) {\r\n throw new GerberError(\r\n \"NOT_GERBER\",\r\n det.reasons.join(\"; \") || \"Not a Gerber bundle\",\r\n det\r\n );\r\n }\r\n\r\n try {\r\n if (det.archiveType === 'zip') {\r\n return { archiveType: 'zip', files: await unzipBytes(bytes) };\r\n }\r\n\r\n if (det.archiveType === 'rar') {\r\n return { archiveType: 'rar', files: await unrarBytes(bytes, init) };\r\n }\r\n\r\n throw new GerberError(\r\n \"UNSUPPORTED_ARCHIVE\",\r\n `Unsupported archive type: ${det.archiveType}`,\r\n det\r\n );\r\n } catch (error) {\r\n if (error instanceof GerberError) throw error;\r\n throw new GerberError(\r\n \"PARSE_ERROR\",\r\n error instanceof Error ? error.message : \"Unknown error during extraction\",\r\n { error, det }\r\n );\r\n }\r\n}\r\n","export type Classified = Partial<{\r\n top_copper: string;\r\n bottom_copper: string;\r\n top_mask: string;\r\n bottom_mask: string;\r\n top_silk: string;\r\n bottom_silk: string;\r\n drills: string;\r\n outline: string;\r\n}>;\r\n\r\nfunction norm(s: string) {\r\n return s.toLowerCase();\r\n}\r\n\r\nfunction pickByExt(names: string[], exts: string[]) {\r\n const set = new Set(exts.map((e) => e.toLowerCase()));\r\n // Prefer shortest path (often means \"root file\" not docs/backup)\r\n const candidates = names\r\n .filter((n) => {\r\n const nl = norm(n);\r\n const dot = nl.lastIndexOf(\".\");\r\n if (dot < 0) return false;\r\n return set.has(nl.slice(dot));\r\n })\r\n .sort((a, b) => a.length - b.length);\r\n return candidates[0];\r\n}\r\n\r\nfunction pickByContains(names: string[], required: string[]) {\r\n const req = required.map((x) => x.toLowerCase());\r\n const candidates = names\r\n .filter((n) => {\r\n const nl = norm(n);\r\n return req.every((r) => nl.includes(r));\r\n })\r\n .sort((a, b) => a.length - b.length);\r\n return candidates[0];\r\n}\r\n\r\nexport function classifyLayerNames(names: string[]): Classified {\r\n // Normalize: ignore obvious junk\r\n const files = names.filter((n) => {\r\n const nl = norm(n);\r\n if (nl.endsWith(\"/\")) return false;\r\n if (nl.includes(\"__macosx\")) return false;\r\n if (nl.endsWith(\".ds_store\")) return false;\r\n return true;\r\n });\r\n\r\n const top_copper =\r\n pickByExt(files, [\".gtl\"]) ||\r\n pickByContains(files, [\"f_cu\"]) ||\r\n pickByContains(files, [\"top\", \"cu\"]) ||\r\n pickByContains(files, [\"top\", \"copper\"]);\r\n\r\n const bottom_copper =\r\n pickByExt(files, [\".gbl\"]) ||\r\n pickByContains(files, [\"b_cu\"]) ||\r\n pickByContains(files, [\"bottom\", \"cu\"]) ||\r\n pickByContains(files, [\"bottom\", \"copper\"]);\r\n\r\n const top_mask =\r\n pickByExt(files, [\".gts\"]) ||\r\n pickByContains(files, [\"f_mask\"]) ||\r\n pickByContains(files, [\"top\", \"mask\"]);\r\n\r\n const bottom_mask =\r\n pickByExt(files, [\".gbs\"]) ||\r\n pickByContains(files, [\"b_mask\"]) ||\r\n pickByContains(files, [\"bottom\", \"mask\"]);\r\n\r\n const top_silk =\r\n pickByExt(files, [\".gto\"]) ||\r\n pickByContains(files, [\"f_silks\"]) ||\r\n pickByContains(files, [\"f_silk\"]) ||\r\n pickByContains(files, [\"top\", \"silk\"]);\r\n\r\n const bottom_silk =\r\n pickByExt(files, [\".gbo\"]) ||\r\n pickByContains(files, [\"b_silks\"]) ||\r\n pickByContains(files, [\"b_silk\"]) ||\r\n pickByContains(files, [\"bottom\", \"silk\"]);\r\n\r\n const outline =\r\n pickByExt(files, [\".gko\", \".gm1\"]) ||\r\n pickByContains(files, [\"edge\", \"cuts\"]) ||\r\n pickByContains(files, [\"outline\"]) ||\r\n pickByContains(files, [\"board\", \"outline\"]);\r\n\r\n const drills =\r\n // Excellon often .drl or .xln or .txt\r\n pickByExt(files, [\".drl\", \".xln\"]) ||\r\n // Some CAD exports use .txt for drills but be careful: only if name hints drill\r\n pickByContains(files, [\"drill\"]) ||\r\n pickByContains(files, [\"drills\"]) ||\r\n pickByContains(files, [\"npth\"]) ||\r\n pickByContains(files, [\"pth\"]);\r\n\r\n return {\r\n top_copper,\r\n bottom_copper,\r\n top_mask,\r\n bottom_mask,\r\n top_silk,\r\n bottom_silk,\r\n outline,\r\n drills,\r\n };\r\n}\r\n","// src/parse/gerber-parser.ts\r\n\r\nimport type { Vec2 } from \"../types/pcb-model\";\r\nimport type { LayerRole } from \"../io/file-classifier\";\r\n\r\n/**\r\n * Primitive types used by the geometry pipeline. These are what\r\n * polygonizer.ts consumes.\r\n */\r\n\r\nexport type Polarity = \"dark\" | \"clear\";\r\n\r\nexport type Op =\r\n | { kind: \"track\"; polarity: Polarity; start: Vec2; end: Vec2; widthMm: number }\r\n | { kind: \"flash\"; polarity: Polarity; position: Vec2; diameterMm: number; shape: string; widthMm?: number; heightMm?: number }\r\n | { kind: \"region\"; polarity: Polarity; loops: Vec2[][] };\r\n\r\nexport interface GerberPrimitiveTrack {\r\n start: Vec2;\r\n end: Vec2;\r\n width: number; // in mm\r\n polarity: Polarity;\r\n}\r\n\r\nexport interface GerberPrimitiveArc {\r\n start: Vec2;\r\n end: Vec2;\r\n center: Vec2;\r\n clockwise: boolean;\r\n width: number;\r\n}\r\n\r\nexport interface GerberPrimitiveFlash {\r\n position: Vec2;\r\n diameterMm: number; // actual aperture diameter in mm\r\n shape: string; // \"C\" | \"R\" | \"O\" | ...\r\n widthMm?: number; // for R / O\r\n heightMm?: number; // for R / O\r\n polarity: Polarity;\r\n}\r\n\r\nconst DEFAULT_FLASH_DIAM_MM = 0.8; // fallback if aperture has no size\r\n\r\nexport interface GerberPrimitiveRegion {\r\n loops: Vec2[][]; // multiple loops (boundary + holes)\r\n polarity: Polarity;\r\n}\r\n\r\nexport interface GerberPrimitives {\r\n tracks: GerberPrimitiveTrack[];\r\n arcs: GerberPrimitiveArc[];\r\n flashes: GerberPrimitiveFlash[];\r\n regions: GerberPrimitiveRegion[];\r\n ops: Op[]; // ordered operations for mask rendering\r\n}\r\n\r\n/**\r\n * Represents a Gerber aperture definition.\r\n * \r\n * For rendering purposes, we convert all aperture shapes to an \"effective diameter\"\r\n * to simplify the rendering pipeline while maintaining correct visual proportions.\r\n */\r\ninterface Aperture {\r\n code: number;\r\n shape: string; // C, R, O, P, macro, etc.\r\n diameterMm?: number; // effective diameter (for traces / circular pads)\r\n widthMm?: number; // for R / O\r\n heightMm?: number; // for R / O\r\n}\r\n\r\nexport interface GerberPrimitiveFlash {\r\n position: Vec2;\r\n diameterMm: number; // keep for circular and general “size”\r\n shape: string; // \"C\" | \"R\" | \"O\" | ...\r\n widthMm?: number; // for R / O\r\n heightMm?: number; // for R / O\r\n}\r\n\r\n/**\r\n * Internal parser state\r\n */\r\ninterface ParserState {\r\n unitScale: number; // file units -> mm (1 for mm, 25.4 for inch)\r\n fmtInt: number; // FS int digits\r\n fmtDec: number; // FS dec digits\r\n\r\n x: number; // current X in mm\r\n y: number; // current Y in mm\r\n\r\n apertures: Map<number, Aperture>;\r\n currentAperture: Aperture | null;\r\n\r\n // Region handling\r\n inRegion: boolean;\r\n regionPaths: Vec2[][]; // all contours in current region\r\n currentPath: Vec2[]; // the contour currently being built\r\n\r\n // Polarity tracking\r\n currentPolarity: Polarity;\r\n\r\n // Ordered operations for mask rendering\r\n ops: Op[];\r\n\r\n tracks: GerberPrimitiveTrack[];\r\n arcs: GerberPrimitiveArc[];\r\n flashes: GerberPrimitiveFlash[];\r\n regions: GerberPrimitiveRegion[];\r\n}\r\n\r\n/**\r\n * Parse a Gerber file into drawing primitives.\r\n *\r\n * This is a practical, not spec complete parser:\r\n * - Handles %FS, %MO, %AD for simple circular apertures (C)\r\n * - Handles D01 (draw), D02 (move), D03 (flash)\r\n * - Handles G36/G37 for filled regions with multiple contours\r\n * - Ignores arcs (G02/G03) for now\r\n *\r\n * It is good enough to visualize traces and pads for many KiCad/JLC style Gerbers.\r\n */\r\nexport function parseGerberFile(\r\n name: string,\r\n content: string,\r\n _role: LayerRole | string\r\n): GerberPrimitives {\r\n const state: ParserState = {\r\n unitScale: 1.0,\r\n fmtInt: 2,\r\n fmtDec: 4,\r\n x: 0,\r\n y: 0,\r\n apertures: new Map(),\r\n currentAperture: null,\r\n inRegion: false,\r\n regionPaths: [],\r\n currentPath: [],\r\n currentPolarity: \"dark\" as Polarity,\r\n ops: [],\r\n tracks: [],\r\n arcs: [],\r\n flashes: [],\r\n regions: [],\r\n };\r\n\r\n const lines = content.split(/\\r?\\n/);\r\n\r\n for (const rawLine of lines) {\r\n let line = rawLine.trim();\r\n if (!line) continue;\r\n\r\n // Comments\r\n if (line.startsWith(\"G04\")) continue;\r\n\r\n // Parameter block: % ... *%\r\n if (line.startsWith(\"%\") && line.endsWith(\"%\")) {\r\n handleParameterBlock(line, state);\r\n continue;\r\n }\r\n\r\n // Usual commands end with *\r\n if (line.endsWith(\"*\")) {\r\n line = line.slice(0, -1);\r\n }\r\n\r\n handleCommandLine(line, state);\r\n }\r\n\r\n // If file ended with an open region, finalize it similarly to G37.\r\n if (state.inRegion) {\r\n if (state.currentPath.length >= 3) {\r\n state.regionPaths.push(state.currentPath);\r\n }\r\n if (state.regionPaths.length > 0) {\r\n const region: GerberPrimitiveRegion = {\r\n loops: state.regionPaths,\r\n polarity: state.currentPolarity,\r\n };\r\n state.regions.push(region);\r\n\r\n // Record ordered operation\r\n state.ops.push({\r\n kind: \"region\",\r\n polarity: state.currentPolarity,\r\n loops: state.regionPaths,\r\n });\r\n }\r\n state.inRegion = false;\r\n state.regionPaths = [];\r\n state.currentPath = [];\r\n }\r\n\r\n return {\r\n tracks: state.tracks,\r\n arcs: state.arcs,\r\n flashes: state.flashes,\r\n regions: state.regions,\r\n ops: state.ops,\r\n };\r\n}\r\n\r\n/**\r\n * Handle parameter blocks like:\r\n * - %FSLAX24Y24*%\r\n * - %MOMM*%\r\n * - %MOIN*%\r\n * - %ADD10C,0.300*%\r\n */\r\nfunction handleParameterBlock(block: string, state: ParserState) {\r\n // Strip outer percent signs\r\n let body = block;\r\n if (body.startsWith(\"%\")) body = body.slice(1);\r\n if (body.endsWith(\"%\")) body = body.slice(0, -1);\r\n if (body.endsWith(\"*\")) body = body.slice(0, -1);\r\n\r\n if (body.startsWith(\"FS\")) {\r\n // Format Statement, example: FSLAX24Y24\r\n const m = /FS..X(\\d)(\\d)Y(\\d)(\\d)/.exec(body);\r\n if (m) {\r\n const ix = parseInt(m[1], 10);\r\n const dx = parseInt(m[2], 10);\r\n // const iy = parseInt(m[3], 10);\r\n const dy = parseInt(m[4], 10);\r\n state.fmtInt = ix;\r\n state.fmtDec = dx; // assume X and Y same decimal places\r\n // we ignore separate Y format for now\r\n }\r\n return;\r\n }\r\n\r\n if (body.startsWith(\"MO\")) {\r\n // Units, MOMM or MOIN\r\n const oldScale = state.unitScale;\r\n let newScale = oldScale;\r\n\r\n if (body.includes(\"MOMM\")) {\r\n newScale = 1.0;\r\n } else if (body.includes(\"MOIN\")) {\r\n newScale = 25.4;\r\n }\r\n\r\n if (newScale !== oldScale) {\r\n const factor = newScale / oldScale;\r\n\r\n for (const ap of state.apertures.values()) {\r\n if (ap.diameterMm !== undefined) ap.diameterMm *= factor;\r\n if (ap.widthMm !== undefined) ap.widthMm *= factor;\r\n if (ap.heightMm !== undefined) ap.heightMm *= factor;\r\n }\r\n\r\n state.unitScale = newScale;\r\n }\r\n return;\r\n }\r\n\r\n if (body.startsWith(\"AD\")) {\r\n const m = /AD(D?)(\\d+)([A-Z]),?([0-9.Xx]*)/.exec(body);\r\n if (!m) return;\r\n\r\n const code = parseInt(m[2], 10);\r\n const shape = m[3]; // do not narrow here\r\n const params = m[4] ?? \"\";\r\n\r\n let diameterMm: number | undefined;\r\n let widthMm: number | undefined;\r\n let heightMm: number | undefined;\r\n\r\n if (params) {\r\n const parts = params.split(/[Xx]/);\r\n\r\n // You can use your existing parser or the more robust one from before.\r\n const sizeXmm = parts[0] ? parseFloat(parts[0]) * state.unitScale : undefined;\r\n const sizeYmm = parts[1] ? parseFloat(parts[1]) * state.unitScale : undefined;\r\n\r\n if (shape === \"C\") {\r\n diameterMm = sizeXmm;\r\n } else if (shape === \"R\" || shape === \"O\") {\r\n widthMm = sizeXmm;\r\n heightMm = sizeYmm;\r\n\r\n // For traces we still want a reasonable width, so keep an effective diameter too.\r\n if (sizeXmm !== undefined && sizeYmm !== undefined) {\r\n diameterMm = Math.min(sizeXmm, sizeYmm); // use the narrow side as “diameter”\r\n } else {\r\n diameterMm = sizeXmm ?? sizeYmm;\r\n }\r\n } else {\r\n // Other shapes - keep first param as a generic diameter\r\n diameterMm = sizeXmm ?? sizeYmm;\r\n }\r\n }\r\n\r\n const ap: Aperture = {\r\n code,\r\n shape,\r\n diameterMm,\r\n widthMm,\r\n heightMm,\r\n };\r\n\r\n state.apertures.set(code, ap);\r\n return;\r\n }\r\n\r\n // LPD/LPC polarity commands\r\n if (body.startsWith(\"LPD\")) {\r\n state.currentPolarity = \"dark\" as Polarity;\r\n return;\r\n }\r\n if (body.startsWith(\"LPC\")) {\r\n state.currentPolarity = \"clear\" as Polarity;\r\n return;\r\n }\r\n\r\n // ignore other parameter blocks\r\n}\r\n\r\n/**\r\n * Handle normal command lines that are not parameter blocks.\r\n * Handles:\r\n * - G36 / G37\r\n * - D01 / D02 / D03 with X/Y coordinates\r\n * - Aperture selection D10, D11, etc\r\n */\r\nfunction handleCommandLine(line: string, state: ParserState) {\r\n // Region start / end\r\n if (line === \"G36\") {\r\n state.inRegion = true;\r\n state.regionPaths = [];\r\n state.currentPath = [];\r\n return;\r\n }\r\n if (line === \"G37\") {\r\n // Finish current contour, if any\r\n if (state.currentPath.length >= 3) {\r\n state.regionPaths.push(state.currentPath);\r\n }\r\n\r\n state.inRegion = false;\r\n\r\n if (state.regionPaths.length > 0) {\r\n // First contour is boundary, rest are holes\r\n const region: GerberPrimitiveRegion = {\r\n loops: state.regionPaths,\r\n polarity: state.currentPolarity,\r\n };\r\n state.regions.push(region);\r\n\r\n // Record ordered operation\r\n state.ops.push({\r\n kind: \"region\",\r\n polarity: state.currentPolarity,\r\n loops: state.regionPaths,\r\n });\r\n }\r\n\r\n state.regionPaths = [];\r\n state.currentPath = [];\r\n return;\r\n }\r\n\r\n // Look for D code at end of line\r\n let dCode: number | null = null;\r\n const dMatch = /D0?(\\d{1,3})$/.exec(line);\r\n if (dMatch) {\r\n dCode = parseInt(dMatch[1], 10);\r\n line = line.slice(0, line.length - dMatch[0].length); // strip Dxx\r\n }\r\n\r\n // Aperture select, like D10, D11 without coords\r\n if (dCode !== null && dCode >= 10) {\r\n const ap = state.apertures.get(dCode);\r\n if (ap) {\r\n state.currentAperture = ap;\r\n }\r\n return;\r\n }\r\n\r\n // Parse coordinates\r\n const coordMatchX = /X([+\\-]?\\d+)/.exec(line);\r\n const coordMatchY = /Y([+\\-]?\\d+)/.exec(line);\r\n\r\n let newX = state.x;\r\n let newY = state.y;\r\n\r\n if (coordMatchX) {\r\n newX = decodeCoord(coordMatchX[1], state);\r\n }\r\n if (coordMatchY) {\r\n newY = decodeCoord(coordMatchY[1], state);\r\n }\r\n\r\n // If no D code, just move modal position\r\n if (dCode === null) {\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n // Region drawing (G36/G37 mode)\r\n if (state.inRegion) {\r\n const prevX = state.x;\r\n const prevY = state.y;\r\n\r\n if (dCode === 1) {\r\n // D01: draw segment from previous point to new point\r\n if (state.currentPath.length === 0) {\r\n // first segment of this contour: start at previous position\r\n state.currentPath.push({ x: prevX, y: prevY });\r\n }\r\n state.currentPath.push({ x: newX, y: newY });\r\n } else if (dCode === 2) {\r\n // D02: finish current contour, move without drawing\r\n if (state.currentPath.length >= 3) {\r\n state.regionPaths.push(state.currentPath);\r\n }\r\n state.currentPath = [];\r\n // newX/newY becomes the new current point; contour starts on next D01\r\n } else {\r\n // D03 or others are not allowed in region mode; ignore safely\r\n }\r\n\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n // Normal drawing / move / flash (outside regions)\r\n const prevX = state.x;\r\n const prevY = state.y;\r\n\r\n if (dCode === 1) {\r\n // Draw\r\n if (!state.currentAperture) {\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n const width =\r\n state.currentAperture.diameterMm !== undefined\r\n ? state.currentAperture.diameterMm\r\n : 0.2;\r\n\r\n state.tracks.push({\r\n start: { x: prevX, y: prevY },\r\n end: { x: newX, y: newY },\r\n width,\r\n polarity: state.currentPolarity,\r\n });\r\n\r\n // Record ordered operation\r\n state.ops.push({\r\n kind: \"track\",\r\n polarity: state.currentPolarity,\r\n start: { x: prevX, y: prevY },\r\n end: { x: newX, y: newY },\r\n widthMm: width,\r\n });\r\n\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n if (dCode === 2) {\r\n // Move only\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n if (dCode === 3) {\r\n if (state.currentAperture) {\r\n const ap = state.currentAperture;\r\n\r\n const d =\r\n ap.diameterMm !== undefined\r\n ? ap.diameterMm\r\n : DEFAULT_FLASH_DIAM_MM;\r\n\r\n const flash: GerberPrimitiveFlash = {\r\n position: { x: newX, y: newY },\r\n diameterMm: d,\r\n shape: ap.shape,\r\n polarity: state.currentPolarity,\r\n };\r\n\r\n if (ap.widthMm !== undefined) flash.widthMm = ap.widthMm;\r\n if (ap.heightMm !== undefined) flash.heightMm = ap.heightMm;\r\n\r\n state.flashes.push(flash);\r\n\r\n // Record ordered operation\r\n state.ops.push({\r\n kind: \"flash\",\r\n polarity: state.currentPolarity,\r\n position: { x: newX, y: newY },\r\n diameterMm: d,\r\n shape: ap.shape,\r\n widthMm: ap.widthMm,\r\n heightMm: ap.heightMm,\r\n });\r\n }\r\n state.x = newX;\r\n state.y = newY;\r\n return;\r\n }\r\n\r\n\r\n // Other D codes ignored for now\r\n}\r\n\r\n/**\r\n * Decode an integer coordinate string using the FS format and unitScale.\r\n * Example:\r\n * fmtInt = 2, fmtDec = 4, unitScale = 1 (mm)\r\n * \"12345\" -> 1.2345 mm\r\n */\r\nfunction decodeCoord(numStr: string, state: ParserState): number {\r\n const sign = numStr.startsWith(\"-\") ? -1 : 1;\r\n const digits = numStr.replace(/[+\\-]/g, \"\");\r\n const n = parseInt(digits, 10);\r\n if (Number.isNaN(n)) return 0;\r\n\r\n const scale = Math.pow(10, state.fmtDec);\r\n const val = (n / scale) * state.unitScale;\r\n return sign * val;\r\n}\r\n\r\nfunction parseApertureParam(raw: string, state: ParserState): number | undefined {\r\n const s = raw.trim();\r\n if (!s) return undefined;\r\n\r\n // If it contains a decimal point, treat as a real value in current units\r\n if (s.includes(\".\")) {\r\n const v = parseFloat(s);\r\n if (Number.isNaN(v)) return undefined;\r\n return v * state.unitScale;\r\n }\r\n\r\n // Otherwise treat it like FS style integer (same fmtDec as coordinates)\r\n const n = parseInt(s, 10);\r\n if (Number.isNaN(n)) return undefined;\r\n\r\n const scale = Math.pow(10, state.fmtDec);\r\n return (n / scale) * state.unitScale;\r\n}\r\n","// src/parse/drill-parser.ts\r\n\r\nimport type { DrillHole } from \"../types/pcb-model\";\r\n\r\n/**\r\n * Parsed drill data for a single Excellon file.\r\n * This will be fed into the geometry pipeline.\r\n */\r\nexport interface ParsedDrillData {\r\n name: string;\r\n holes: DrillHole[];\r\n}\r\n\r\n/**\r\n * Very naive Excellon drill parser.\r\n *\r\n * This is intentionally simple and conservative:\r\n * - It understands basic tool definitions like \"T01C0.300\"\r\n * - It understands coordinate lines like \"X012345Y067890\"\r\n * - It assumes units are already inches or mm as used in the file, and does\r\n * not attempt unit conversion or integer format decoding.\r\n *\r\n * For now, you can treat this as a stub and gradually swap in a robust parser\r\n * if needed. At minimum, it gives you some real hole locations to play with.\r\n */\r\nexport function parseDrillFile(name: string, content: string): ParsedDrillData {\r\n const lines = content.split(/\\r?\\n/);\r\n\r\n const toolDiameters = new Map<string, number>(); // T code -> diameter (same units as file)\r\n let currentTool: string | null = null;\r\n\r\n const holes: DrillHole[] = [];\r\n\r\n for (const rawLine of lines) {\r\n const line = rawLine.trim();\r\n if (!line) continue;\r\n\r\n // Comment or header lines we ignore for now\r\n if (line.startsWith(\";\")) continue;\r\n\r\n // Tool definition, examples:\r\n // T01C0.300\r\n // T02C0.600\r\n if (line.startsWith(\"T\") && line.includes(\"C\")) {\r\n const toolMatch = /^T(\\d+)[C]([\\d.]+)/i.exec(line);\r\n if (toolMatch) {\r\n const toolId = toolMatch[1]; // \"01\"\r\n const diameter = parseFloat(toolMatch[2]);\r\n if (!Number.isNaN(diameter)) {\r\n toolDiameters.set(toolId, diameter);\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n // Tool change, like \"T01\"\r\n if (line.startsWith(\"T\") && !line.includes(\"C\")) {\r\n const toolMatch = /^T(\\d+)/i.exec(line);\r\n if (toolMatch) {\r\n currentTool = toolMatch[1];\r\n }\r\n continue;\r\n }\r\n\r\n // Coordinate line, very naive:\r\n // X012345Y067890\r\n // X1.234Y5.678\r\n if (line[0] === \"X\" || line.includes(\"X\")) {\r\n const coordMatch = /X([\\-0-9.]+)Y([\\-0-9.]+)/i.exec(line);\r\n if (!coordMatch) {\r\n continue;\r\n }\r\n\r\n const xRaw = coordMatch[1];\r\n const yRaw = coordMatch[2];\r\n const xVal = parseFloat(xRaw);\r\n const yVal = parseFloat(yRaw);\r\n\r\n if (Number.isNaN(xVal) || Number.isNaN(yVal)) {\r\n continue;\r\n }\r\n\r\n const diameter =\r\n currentTool && toolDiameters.has(currentTool)\r\n ? toolDiameters.get(currentTool)!\r\n : 0.6; // default fallback diameter\r\n\r\n holes.push({\r\n x: xVal,\r\n y: yVal,\r\n diameter,\r\n plated: true, // default, later you can infer from file or layer\r\n });\r\n continue;\r\n }\r\n\r\n // Everything else is ignored for now\r\n }\r\n\r\n return {\r\n name,\r\n holes,\r\n };\r\n}\r\n","// src/render/renderGerbersFiles.ts\r\n\r\nimport type { BoardGeom, ViewerLayers } from \"../viewer/types\";\r\nimport { classifyLayerNames } from \"./layerClassify\";\r\nimport { parseGerberFile } from \"../parse/gerber-parser\";\r\nimport { parseDrillFile } from \"../parse/drill-parser\";\r\nimport type { LayerRole } from \"../io/file-classifier\";\r\n\r\ntype BoundsMm = { minX: number; minY: number; maxX: number; maxY: number };\r\n\r\nfunction boundsSize(b: BoundsMm) {\r\n return { w: b.maxX - b.minX, h: b.maxY - b.minY };\r\n}\r\n\r\nfunction isSaneBounds(b: BoundsMm) {\r\n const { w, h } = boundsSize(b);\r\n return Number.isFinite(w) && Number.isFinite(h) && w > 1 && h > 1 && w < 2000 && h < 2000;\r\n}\r\n\r\nfunction detectScaleFactor(layerW: number, refW: number) {\r\n if (!Number.isFinite(layerW) || !Number.isFinite(refW) || layerW <= 0 || refW <= 0) return 1;\r\n const ratio = layerW / refW;\r\n if (ratio > 20 && ratio < 35) return 1 / 25.4;\r\n if (ratio > 0.02 && ratio < 0.06) return 25.4;\r\n return 1;\r\n}\r\n\r\nfunction scaleGerberPrims(prims: ReturnType<typeof parseGerberFile>, s: number) {\r\n if (s === 1) return prims;\r\n\r\n return {\r\n ...prims,\r\n tracks: prims.tracks.map((t) => ({\r\n ...t,\r\n start: { x: t.start.x * s, y: t.start.y * s },\r\n end: { x: t.end.x * s, y: t.end.y * s },\r\n width: (t.width ?? 0) * s,\r\n })),\r\n flashes: prims.flashes.map((f) => ({\r\n ...f,\r\n position: { x: f.position.x * s, y: f.position.y * s },\r\n diameterMm: (f.diameterMm ?? 0) * s,\r\n widthMm: (f.widthMm ?? 0) * s,\r\n heightMm: (f.heightMm ?? 0) * s,\r\n })),\r\n regions: prims.regions.map((r) => ({\r\n ...r,\r\n loops: r.loops.map((loop) => loop.map((p) => ({ x: p.x * s, y: p.y * s }))),\r\n })),\r\n };\r\n}\r\n\r\nfunction scaleDrills(holes: Array<{ x: number; y: number; diameter: number }>, s: number) {\r\n if (s === 1) return holes;\r\n return holes.map((h) => ({ x: h.x * s, y: h.y * s, diameter: (h.diameter ?? 0) * s }));\r\n}\r\n\r\nfunction svgToBlobUrl(svg: string): string {\r\n return URL.createObjectURL(new Blob([svg], { type: \"image/svg+xml\" }));\r\n}\r\n\r\nfunction expandBounds(b: BoundsMm, x: number, y: number) {\r\n b.minX = Math.min(b.minX, x);\r\n b.minY = Math.min(b.minY, y);\r\n b.maxX = Math.max(b.maxX, x);\r\n b.maxY = Math.max(b.maxY, y);\r\n}\r\n\r\nfunction initBounds(): BoundsMm {\r\n return { minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity };\r\n}\r\n\r\nfunction boundsFromGerber(prims: ReturnType<typeof parseGerberFile>): BoundsMm {\r\n const b = initBounds();\r\n\r\n for (const t of prims.tracks) {\r\n expandBounds(b, t.start.x, t.start.y);\r\n expandBounds(b, t.end.x, t.end.y);\r\n const r = (t.width ?? 0) / 2;\r\n expandBounds(b, t.start.x - r, t.start.y - r);\r\n expandBounds(b, t.start.x + r, t.start.y + r);\r\n expandBounds(b, t.end.x - r, t.end.y - r);\r\n expandBounds(b, t.end.x + r, t.end.y + r);\r\n }\r\n\r\n for (const f of prims.flashes) {\r\n const w = (f.widthMm ?? f.diameterMm) || 0;\r\n const h = (f.heightMm ?? f.diameterMm) || 0;\r\n expandBounds(b, f.position.x - w / 2, f.position.y - h / 2);\r\n expandBounds(b, f.position.x + w / 2, f.position.y + h / 2);\r\n }\r\n\r\n for (const r of prims.regions) {\r\n for (const loop of r.loops) for (const p of loop) expandBounds(b, p.x, p.y);\r\n }\r\n\r\n return b;\r\n}\r\n\r\nfunction boundsFromDrills(holes: Array<{ x: number; y: number; diameter: number }>): BoundsMm {\r\n const b = initBounds();\r\n for (const h of holes) {\r\n const r = (h.diameter || 0) / 2;\r\n expandBounds(b, h.x - r, h.y - r);\r\n expandBounds(b, h.x + r, h.y + r);\r\n }\r\n return b;\r\n}\r\n\r\nfunction mergeBounds(a: BoundsMm, b: BoundsMm): BoundsMm {\r\n return {\r\n minX: Math.min(a.minX, b.minX),\r\n minY: Math.min(a.minY, b.minY),\r\n maxX: Math.max(a.maxX, b.maxX),\r\n maxY: Math.max(a.maxY, b.maxY),\r\n };\r\n}\r\n\r\nfunction ensureFiniteBounds(b: BoundsMm): BoundsMm {\r\n if (!Number.isFinite(b.minX) || !Number.isFinite(b.minY) || !Number.isFinite(b.maxX) || !Number.isFinite(b.maxY)) {\r\n return { minX: 0, minY: 0, maxX: 80, maxY: 60 };\r\n }\r\n if (b.maxX - b.minX < 1e-6) b.maxX = b.minX + 1;\r\n if (b.maxY - b.minY < 1e-6) b.maxY = b.minY + 1;\r\n return b;\r\n}\r\n\r\n// Viewer expects stage px from inches, with a fixed scale\r\nconst SCALE_PX_PER_IN = 1000;\r\n\r\nfunction mmToPx(mm: number): number {\r\n return (mm / 25.4) * SCALE_PX_PER_IN;\r\n}\r\n\r\nfunction toLocalMm(x: number, y: number, b: BoundsMm) {\r\n const lx = x - b.minX;\r\n const ly = b.maxY - y;\r\n return { x: lx, y: ly };\r\n}\r\n\r\nfunction buildBoardMaskSvg(stageWpx: number, stageHpx: number) {\r\n return `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${stageWpx}\" height=\"${stageHpx}\" viewBox=\"0 0 ${stageWpx} ${stageHpx}\">\r\n <rect width=\"${stageWpx}\" height=\"${stageHpx}\" fill=\"white\"/>\r\n</svg>`.trim();\r\n}\r\n\r\n// Helper function to calculate bounding box of a region\r\nfunction bboxOfRegion(region: { loops: { x: number; y: number }[][] }): { minX: number; minY: number; maxX: number; maxY: number } {\r\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\r\n \r\n for (const loop of region.loops) {\r\n for (const point of loop) {\r\n minX = Math.min(minX, point.x);\r\n minY = Math.min(minY, point.y);\r\n maxX = Math.max(maxX, point.x);\r\n maxY = Math.max(maxY, point.y);\r\n }\r\n }\r\n \r\n return { minX, minY, maxX, maxY };\r\n}\r\n\r\n// Detect negative plane layers - polarity-aware and conservative\r\nfunction isNegativePlaneLayer(prims: ReturnType<typeof parseGerberFile>, bounds: BoundsMm): boolean {\r\n const boardArea = (bounds.maxX - bounds.minX) * (bounds.maxY - bounds.minY);\r\n\r\n let largestDarkRegionArea = 0;\r\n let largestClearRegionArea = 0;\r\n\r\n for (const r of prims.regions) {\r\n const bb = bboxOfRegion(r);\r\n const area = (bb.maxX - bb.minX) * (bb.maxY - bb.minY);\r\n\r\n if (r.polarity === \"clear\") largestClearRegionArea = Math.max(largestClearRegionArea, area);\r\n else largestDarkRegionArea = Math.max(largestDarkRegionArea, area);\r\n }\r\n\r\n const darkCount =\r\n prims.tracks.filter((t) => t.polarity !== \"clear\").length +\r\n prims.flashes.filter((f) => f.polarity !== \"clear\").length +\r\n prims.regions.filter((r) => r.polarity !== \"clear\").length;\r\n\r\n const clearCount =\r\n prims.tracks.filter((t) => t.polarity === \"clear\").length +\r\n prims.flashes.filter((f) => f.polarity === \"clear\").length +\r\n prims.regions.filter((r) => r.polarity === \"clear\").length;\r\n\r\n const darkPlane = largestDarkRegionArea > boardArea * 0.7;\r\n const clearDominates = clearCount > darkCount * 3;\r\n const hugeClearRegion = largestClearRegionArea > boardArea * 0.7;\r\n\r\n // If a big DARK plane exists, do NOT invert baseline.\r\n if (darkPlane) return false;\r\n\r\n // Only invert if CLEAR operations dominate OR there is a huge CLEAR region.\r\n return clearDominates || hugeClearRegion;\r\n}\r\n\r\n// Drop-in TS helper: buildLayerSvgWithPolarityMask(...)\r\nfunction buildLayerSvgWithPolarityMask(\r\n prims: ReturnType<typeof parseGerberFile>,\r\n bounds: BoundsMm,\r\n fillColor: string,\r\n opacity: number\r\n): string {\r\n const wMm = bounds.maxX - bounds.minX;\r\n const hMm = bounds.maxY - bounds.minY;\r\n const wPx = Math.max(1, Math.round(mmToPx(wMm)));\r\n const hPx = Math.max(1, Math.round(mmToPx(hMm)));\r\n const pxPerMm = mmToPx(1);\r\n\r\n // Detect if this is a negative plane layer\r\n const negative = isNegativePlaneLayer(prims, bounds);\r\n const baselineFill = negative ? \"white\" : \"black\";\r\n\r\n const toPx = (x: number, y: number) => {\r\n const lx = x - bounds.minX;\r\n const ly = bounds.maxY - y; // global Y flip (Gerber up -> SVG down)\r\n return { x: lx * pxPerMm, y: ly * pxPerMm };\r\n };\r\n\r\n // Helper to render individual operations\r\n const renderOp = (op: any, paintColor: string): string => {\r\n if (op.kind === \"track\") {\r\n const a = toPx(op.start.x, op.start.y);\r\n const b = toPx(op.end.x, op.end.y);\r\n const wMm = Number.isFinite(op.widthMm) ? op.widthMm : 0.2;\r\n const sw = Math.max(1, wMm * pxPerMm);\r\n return `<line x1=\"${a.x.toFixed(2)}\" y1=\"${a.y.toFixed(2)}\" x2=\"${b.x.toFixed(2)}\" y2=\"${b.y.toFixed(2)}\" stroke-width=\"${sw.toFixed(2)}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"${paintColor}\" stroke=\"${paintColor}\" fill-opacity=\"1\" stroke-opacity=\"1\" />`;\r\n }\r\n \r\n if (op.kind === \"flash\") {\r\n const p = toPx(op.position.x, op.position.y);\r\n const fwMm = (op.widthMm ?? op.diameterMm ?? 0.8);\r\n const fhMm = (op.heightMm ?? op.diameterMm ?? 0.8);\r\n const w = Math.max(0.01, Number.isFinite(fwMm) ? fwMm : 0.8) * pxPerMm;\r\n const h = Math.max(0.01, Number.isFinite(fhMm) ? fhMm : 0.8) * pxPerMm;\r\n \r\n if (op.shape === \"R\" || op.shape === \"O\") {\r\n const x = p.x - w / 2;\r\n const y = p.y - h / 2;\r\n const rx = op.shape === \"O\" ? Math.min(w, h) * 0.35 : 0;\r\n return `<rect x=\"${x.toFixed(2)}\" y=\"${y.toFixed(2)}\" width=\"${w.toFixed(2)}\" height=\"${h.toFixed(2)}\" rx=\"${rx.toFixed(2)}\" fill=\"${paintColor}\" fill-opacity=\"1\" />`;\r\n } else {\r\n const r = Math.max(1, Math.max(w, h) / 2);\r\n return `<circle cx=\"${p.x.toFixed(2)}\" cy=\"${p.y.toFixed(2)}\" r=\"${r.toFixed(2)}\" fill=\"${paintColor}\" fill-opacity=\"1\" />`;\r\n }\r\n }\r\n \r\n if (op.kind === \"region\") {\r\n const d = op.loops\r\n .map((loop: any) => {\r\n if (!loop.length) return \"\";\r\n const p0 = toPx(loop[0].x, loop[0].y);\r\n const parts = [`M ${p0.x.toFixed(2)} ${p0.y.toFixed(2)}`];\r\n for (let i = 1; i < loop.length; i++) {\r\n const pi = toPx(loop[i].x, loop[i].y);\r\n parts.push(`L ${pi.x.toFixed(2)} ${pi.y.toFixed(2)}`);\r\n }\r\n parts.push(\"Z\");\r\n return parts.join(\" \");\r\n })\r\n .join(\" \");\r\n \r\n if (!d.trim()) return \"\";\r\n return `<path d=\"${d}\" fill-rule=\"evenodd\" fill=\"${paintColor}\" fill-opacity=\"1\" />`;\r\n }\r\n \r\n return \"\";\r\n };\r\n\r\n // Render in exact sequence primitives appear\r\n const paint: string[] = [];\r\n paint.push(`<rect x=\"0\" y=\"0\" width=\"${wPx}\" height=\"${hPx}\" fill=\"${baselineFill}\" fill-opacity=\"1\" />`);\r\n\r\n for (const op of prims.ops) {\r\n const paintColor = op.polarity === \"clear\" ? \"black\" : \"white\";\r\n const rendered = renderOp(op, paintColor);\r\n if (rendered) paint.push(rendered);\r\n }\r\n\r\n // Debug logging for polarity counts\r\n console.log(\"[polarity counts]\", {\r\n tracksClear: prims.tracks.filter(t => t.polarity === \"clear\").length,\r\n regionsClear: prims.regions.filter(r => r.polarity === \"clear\").length,\r\n negativePlane: negative,\r\n });\r\n\r\n // Enhanced debug logging for plane detection\r\n const boardArea = (bounds.maxX - bounds.minX) * (bounds.maxY - bounds.minY);\r\n let largestDarkRegionArea = 0;\r\n let largestClearRegionArea = 0;\r\n for (const r of prims.regions) {\r\n const bb = bboxOfRegion(r);\r\n const area = (bb.maxX - bb.minX) * (bb.maxY - bb.minY);\r\n if (r.polarity === \"clear\") largestClearRegionArea = Math.max(largestClearRegionArea, area);\r\n else largestDarkRegionArea = Math.max(largestDarkRegionArea, area);\r\n }\r\n const darkCount = prims.tracks.filter((t) => t.polarity !== \"clear\").length +\r\n prims.flashes.filter((f) => f.polarity !== \"clear\").length +\r\n prims.regions.filter((r) => r.polarity !== \"clear\").length;\r\n const clearCount = prims.tracks.filter((t) => t.polarity === \"clear\").length +\r\n prims.flashes.filter((f) => f.polarity === \"clear\").length +\r\n prims.regions.filter((r) => r.polarity === \"clear\").length;\r\n \r\n console.log(\"[plane detect]\", {\r\n darkCount,\r\n clearCount,\r\n largestDarkRegionArea,\r\n largestClearRegionArea,\r\n boardArea,\r\n negative,\r\n });\r\n\r\n // Mask composition:\r\n // - start black (transparent)\r\n // - dark = white (visible)\r\n // - clear = black (erase)\r\n const maskId = `ink_${Math.random().toString(16).slice(2)}`;\r\n\r\n return `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${wPx}\" height=\"${hPx}\" viewBox=\"0 0 ${wPx} ${hPx}\">\r\n <defs>\r\n <mask id=\"${maskId}\" maskUnits=\"userSpaceOnUse\" style=\"mask-type: luminance\">\r\n <rect x=\"0\" y=\"0\" width=\"${wPx}\" height=\"${hPx}\" fill=\"${baselineFill}\" fill-opacity=\"1\" />\r\n ${paint.join(\"\\n \")}\r\n </mask>\r\n </defs>\r\n\r\n <rect x=\"0\" y=\"0\" width=\"${wPx}\" height=\"${hPx}\" fill=\"${fillColor}\" opacity=\"${opacity}\" mask=\"url(#${maskId})\" />\r\n</svg>`.trim();\r\n}\r\n\r\nfunction buildSilkSvg(prims: ReturnType<typeof parseGerberFile>, bounds: BoundsMm) {\r\n const wMm = bounds.maxX - bounds.minX;\r\n const hMm = bounds.maxY - bounds.minY;\r\n const wPx = Math.max(1, Math.round(mmToPx(wMm)));\r\n const hPx = Math.max(1, Math.round(mmToPx(hMm)));\r\n const pxPerMm = Math.max(1e-6, mmToPx(1));\r\n\r\n const stroke = \"rgba(255,255,255,0.95)\";\r\n const fill = \"rgba(255,255,255,0.95)\";\r\n\r\n const trackEls = prims.tracks.map((t) => {\r\n const a = toLocalMm(t.start.x, t.start.y, bounds);\r\n const b2 = toLocalMm(t.end.x, t.end.y, bounds);\r\n const wMm = Number.isFinite(t.width) ? t.width : 0.15;\r\n const sw = Math.max(1, wMm * pxPerMm);\r\n return `<line x1=\"${(a.x * pxPerMm).toFixed(2)}\" y1=\"${(a.y * pxPerMm).toFixed(2)}\" x2=\"${(b2.x * pxPerMm).toFixed(2)}\" y2=\"${(b2.y * pxPerMm).toFixed(2)}\" stroke=\"${stroke}\" stroke-width=\"${sw.toFixed(2)}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />`;\r\n });\r\n\r\n const flashEls = prims.flashes.map((f) => {\r\n const p = toLocalMm(f.position.x, f.position.y, bounds);\r\n const cx = p.x * pxPerMm;\r\n const cy = p.y * pxPerMm;\r\n\r\n const w = (f.widthMm ?? f.diameterMm ?? 0.6);\r\n const h = (f.heightMm ?? f.diameterMm ?? 0.6);\r\n\r\n if (f.shape === \"R\" || f.shape === \"O\") {\r\n const rw = w * pxPerMm;\r\n const rh = h * pxPerMm;\r\n const x = cx - rw / 2;\r\n const y = cy - rh / 2;\r\n const rx = f.shape === \"O\" ? Math.min(rw, rh) * 0.35 : 0;\r\n return `<rect x=\"${x.toFixed(2)}\" y=\"${y.toFixed(2)}\" width=\"${rw.toFixed(2)}\" height=\"${rh.toFixed(2)}\" rx=\"${rx.toFixed(2)}\" fill=\"${fill}\" />`;\r\n }\r\n\r\n const r = ((f.diameterMm ?? 0.6) * pxPerMm) / 2;\r\n return `<circle cx=\"${cx.toFixed(2)}\" cy=\"${cy.toFixed(2)}\" r=\"${Math.max(1, r).toFixed(2)}\" fill=\"${fill}\" />`;\r\n });\r\n\r\n const regionEls = prims.regions.map((r) => {\r\n const d = r.loops\r\n .map((loop) => {\r\n if (!loop.length) return \"\";\r\n const p0 = toLocalMm(loop[0].x, loop[0].y, bounds);\r\n const parts = [`M ${(p0.x * pxPerMm).toFixed(2)} ${(p0.y * pxPerMm).toFixed(2)}`];\r\n for (let i = 1; i < loop.length; i++) {\r\n const pi = toLocalMm(loop[i].x, loop[i].y, bounds);\r\n parts.push(`L ${(pi.x * pxPerMm).toFixed(2)} ${(pi.y * pxPerMm).toFixed(2)}`);\r\n }\r\n parts.push(\"Z\");\r\n return parts.join(\" \");\r\n })\r\n .join(\" \");\r\n\r\n if (!d.trim()) return \"\";\r\n return `<path d=\"${d}\" fill=\"${fill}\" fill-rule=\"evenodd\" opacity=\"0.95\" />`;\r\n });\r\n\r\n return `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${wPx}\" height=\"${hPx}\" viewBox=\"0 0 ${wPx} ${hPx}\">\r\n ${trackEls.join(\"\\n \")}\r\n ${flashEls.join(\"\\n \")}\r\n ${regionEls.join(\"\\n \")}\r\n</svg>`.trim();\r\n}\r\n\r\nfunction buildDrillsSvg(holes: Array<{ x: number; y: number; diameter: number }>, bounds: BoundsMm) {\r\n const wMm = bounds.maxX - bounds.minX;\r\n const hMm = bounds.maxY - bounds.minY;\r\n const wPx = Math.round(mmToPx(wMm));\r\n const hPx = Math.round(mmToPx(hMm));\r\n const pxPerMm = mmToPx(1);\r\n\r\n const els = holes.map((h) => {\r\n const p = toLocalMm(h.x, h.y, bounds);\r\n const cx = p.x * pxPerMm;\r\n const cy = p.y * pxPerMm;\r\n const r = ((h.diameter || 0.6) * pxPerMm) / 2;\r\n return `<circle cx=\"${cx.toFixed(2)}\" cy=\"${cy.toFixed(2)}\" r=\"${Math.max(1, r).toFixed(2)}\" fill=\"none\" stroke=\"#e5e7eb\" stroke-width=\"3\" />`;\r\n });\r\n\r\n return `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${wPx}\" height=\"${hPx}\" viewBox=\"0 0 ${wPx} ${hPx}\">\r\n ${els.join(\"\\n \")}\r\n</svg>`.trim();\r\n}\r\n\r\nexport type RenderResult = {\r\n boardGeom: BoardGeom;\r\n layers: ViewerLayers;\r\n revoke: () => void;\r\n};\r\n\r\nexport async function renderGerbersFiles(files: Record<string, Uint8Array>): Promise<RenderResult> {\r\n const names = Object.keys(files).filter((n) => !!n);\r\n const classified = classifyLayerNames(names);\r\n\r\n const dec = new TextDecoder(\"utf-8\", { fatal: false });\r\n\r\n const readText = async (path?: string): Promise<string | null> => {\r\n if (!path) return null;\r\n const data = files[path];\r\n if (!data) return null;\r\n return dec.decode(data);\r\n };\r\n\r\n const topText = await readText(classified.top_copper);\r\n const botText = await readText(classified.bottom_copper);\r\n const outText = await readText(classified.outline);\r\n const drillText = await readText(classified.drills);\r\n const topSilkText = await readText(classified.top_silk);\r\n const botSilkText = await readText(classified.bottom_silk);\r\n\r\n const topPrims = topText ? parseGerberFile(classified.top_copper || \"top\", topText, \"TopCopper\" as LayerRole) : null;\r\n const botPrims = botText ? parseGerberFile(classified.bottom_copper || \"bot\", botText, \"BottomCopper\" as LayerRole) : null;\r\n const outPrims = outText ? parseGerberFile(classified.outline || \"outline\", outText, \"Outline\" as LayerRole) : null;\r\n\r\n const drillParsed = drillText ? parseDrillFile(classified.drills || \"drills\", drillText) : null;\r\n const drillHoles = drillParsed ? drillParsed.holes.map((h) => ({ x: h.x, y: h.y, diameter: h.diameter })) : [];\r\n\r\n const topSilkPrims = topSilkText ? parseGerberFile(classified.top_silk || \"top_silk\", topSilkText, \"TopSilkscreen\" as any) : null;\r\n const botSilkPrims = botSilkText ? parseGerberFile(classified.bottom_silk || \"bot_silk\", botSilkText, \"BottomSilkscreen\" as any) : null;\r\n\r\n const topB = topPrims ? ensureFiniteBounds(boundsFromGerber(topPrims)) : null;\r\n const botB = botPrims ? ensureFiniteBounds(boundsFromGerber(botPrims)) : null;\r\n const outB = outPrims ? ensureFiniteBounds(boundsFromGerber(outPrims)) : null;\r\n const drlB = drillHoles.length ? ensureFiniteBounds(boundsFromDrills(drillHoles)) : null;\r\n\r\n const topSilkB = topSilkPrims ? ensureFiniteBounds(boundsFromGerber(topSilkPrims)) : null;\r\n const botSilkB = botSilkPrims ? ensureFiniteBounds(boundsFromGerber(botSilkPrims)) : null;\r\n\r\n const refB =\r\n (outB && isSaneBounds(outB) ? outB : null) ||\r\n (topB && isSaneBounds(topB) ? topB : null) ||\r\n (botB && isSaneBounds(botB) ? botB : null) ||\r\n (drlB && isSaneBounds(drlB) ? drlB : null);\r\n\r\n const refW = refB ? (refB.maxX - refB.minX) : 1;\r\n\r\n const topScale = topB ? detectScaleFactor(topB.maxX - topB.minX, refW) : 1;\r\n const botScale = botB ? detectScaleFactor(botB.maxX - botB.minX, refW) : 1;\r\n const outScale = outB ? detectScaleFactor(outB.maxX - outB.minX, refW) : 1;\r\n const drlScale = drlB ? detectScaleFactor(drlB.maxX - drlB.minX, refW) : 1;\r\n const topSilkScale = topSilkB ? detectScaleFactor(topSilkB.maxX - topSilkB.minX, refW) : 1;\r\n const botSilkScale = botSilkB ? detectScaleFactor(botSilkB.maxX - botSilkB.minX, refW) : 1;\r\n\r\n const topPrimsN = topPrims ? scaleGerberPrims(topPrims, topScale) : null;\r\n const botPrimsN = botPrims ? scaleGerberPrims(botPrims, botScale) : null;\r\n const outPrimsN = outPrims ? scaleGerberPrims(outPrims, outScale) : null;\r\n const drillHolesN = drillHoles.length ? scaleDrills(drillHoles, drlScale) : [];\r\n const topSilkPrimsN = topSilkPrims ? scaleGerberPrims(topSilkPrims, topSilkScale) : null;\r\n const botSilkPrimsN = botSilkPrims ? scaleGerberPrims(botSilkPrims, botSilkScale) : null;\r\n\r\n // Board bounds: outline preferred, else copper. Do not let silk/drills expand size.\r\n let boardB: BoundsMm | null = null;\r\n\r\n if (outPrimsN) {\r\n const ob = ensureFiniteBounds(boundsFromGerber(outPrimsN));\r\n if (isSaneBounds(ob)) boardB = ob;\r\n }\r\n\r\n if (!boardB) {\r\n let cb = initBounds();\r\n if (topPrimsN) cb = mergeBounds(cb, boundsFromGerber(topPrimsN));\r\n if (botPrimsN) cb = mergeBounds(cb, boundsFromGerber(botPrimsN));\r\n cb = ensureFiniteBounds(cb);\r\n boardB = cb;\r\n }\r\n\r\n const b = ensureFiniteBounds(boardB!);\r\n const widthMm = b.maxX - b.minX;\r\n const heightMm = b.maxY - b.minY;\r\n\r\n const boardGeom: BoardGeom = {\r\n board: {\r\n width_in: widthMm / 25.4,\r\n height_in: heightMm / 25.4,\r\n mm_bounds: {\r\n min_x_mm: b.minX,\r\n min_y_mm: b.minY,\r\n max_x_mm: b.maxX,\r\n max_y_mm: b.maxY,\r\n },\r\n },\r\n };\r\n\r\n const wPx = Math.max(1, Math.round(mmToPx(widthMm)));\r\n const hPx = Math.max(1, Math.round(mmToPx(heightMm)));\r\n\r\n const urls: string[] = [];\r\n const addSvg = (svg: string) => {\r\n const u = svgToBlobUrl(svg);\r\n urls.push(u);\r\n return u;\r\n };\r\n\r\n const layers: ViewerLayers = {\r\n top_board_mask: addSvg(buildBoardMaskSvg(wPx, hPx)),\r\n bottom_board_mask: addSvg(buildBoardMaskSvg(wPx, hPx)),\r\n };\r\n\r\n if (topPrimsN) layers.top_copper = addSvg(buildLayerSvgWithPolarityMask(topPrimsN, b, \"#fbbf24\", 1.0));\r\n if (botPrimsN) layers.bottom_copper = addSvg(buildLayerSvgWithPolarityMask(botPrimsN, b, \"#38bdf8\", 1.0));\r\n if (drillHolesN.length) layers.drills = addSvg(buildDrillsSvg(drillHolesN, b));\r\n if (topSilkPrimsN) layers.top_silk = addSvg(buildSilkSvg(topSilkPrimsN, b));\r\n if (botSilkPrimsN) layers.bottom_silk = addSvg(buildSilkSvg(botSilkPrimsN, b));\r\n\r\n return {\r\n boardGeom,\r\n layers,\r\n revoke: () => urls.forEach((u) => URL.revokeObjectURL(u)),\r\n };\r\n}\r\n","// src/render/renderGerbersZip.ts\r\nimport { unpackGerberArchive } from \"../io/unpackArchive\";\r\nimport { renderGerbersFiles, type RenderResult } from \"./renderGerbersFiles\";\r\n\r\nexport async function renderGerbersZip(input: File | Blob | ArrayBuffer | Uint8Array): Promise<RenderResult> {\r\n const ab =\r\n input instanceof Uint8Array\r\n ? (input.byteOffset === 0 && input.byteLength === input.buffer.byteLength\r\n ? input.buffer\r\n : input.slice().buffer)\r\n : input instanceof ArrayBuffer\r\n ? input\r\n : await input.arrayBuffer();\r\n\r\n const { files, archiveType } = await unpackGerberArchive(ab as ArrayBuffer, {\r\n // zip path ignores this\r\n // rar path requires it if you don't colocate worker bundle\r\n workerUrl: \"/libarchive-worker-bundle.js\",\r\n });\r\n\r\n if (archiveType !== \"zip\") {\r\n throw new Error(`renderGerbersZip expected zip but got ${archiveType}`);\r\n }\r\n\r\n return await renderGerbersFiles(files);\r\n}\r\n\r\nexport type { RenderResult };\r\n","// src/render/renderGerbers.ts\r\nimport { unpackGerberArchive } from \"../io/unpackArchive\";\r\nimport { renderGerbersFiles } from \"./renderGerbersFiles\";\r\n\r\nexport async function renderGerbers(\r\n input: ArrayBuffer | Uint8Array,\r\n options?: { archiveWorkerUrl?: string }\r\n) {\r\n const { files } = await unpackGerberArchive(input, {\r\n workerUrl: options?.archiveWorkerUrl,\r\n });\r\n return await renderGerbersFiles(files);\r\n}\r\n","import \"./viewer.css\";\r\nimport type { BoardGeom, BoardViewer, ViewerLayers, ViewerSideMode } from \"./types\";\r\n\r\nfunction clamp(v: number, lo: number, hi: number) {\r\n return Math.max(lo, Math.min(hi, v));\r\n}\r\n\r\nfunction posMod(v: number, m: number) {\r\n if (!Number.isFinite(v) || !Number.isFinite(m) || m <= 0) return 0;\r\n return ((v % m) + m) % m;\r\n}\r\n\r\nfunction setImgSrc(img: HTMLImageElement, url?: string) {\r\n if (url && url.startsWith(\"blob:\")) {\r\n img.setAttribute(\"src\", url);\r\n } else if (url && url.length > 0) {\r\n // allow non-blob URLs too, if you ever use them\r\n img.setAttribute(\"src\", url);\r\n } else {\r\n img.removeAttribute(\"src\"); // critical: prevents it defaulting to current document URL\r\n }\r\n}\r\n\r\nfunction mustGet<T extends HTMLElement>(root: HTMLElement, selector: string): T {\r\n const el = root.querySelector(selector);\r\n if (!el) throw new Error(`Missing required element: ${selector}`);\r\n return el as T;\r\n}\r\n\r\nexport type BoardViewerOptions = {\r\n onDownload?: () => void;\r\n};\r\n\r\nexport function createBoardViewer(host: HTMLElement, opts: BoardViewerOptions = {}): BoardViewer {\r\n const downloadIcon = `\r\n<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M12 3v10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n <path d=\"M8 11l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M4 17v3h16v-3\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n</svg>\r\n`;\r\n\r\n host.innerHTML = `\r\n <div class=\"board-viewer-root\">\r\n <div class=\"viewer-header\">\r\n <div class=\"viewer-header-left\">\r\n <p class=\"viewer-header-title\">Board viewer</p>\r\n <p class=\"viewer-header-sub\" id=\"viewer-subtitle\">Scroll to zoom, drag to pan</p>\r\n </div>\r\n\r\n <div class=\"viewer-header-right\">\r\n <div class=\"controls\">\r\n <div class=\"segment\" title=\"Side\">\r\n <input id=\"side-top\" type=\"radio\" name=\"side\" value=\"top\" checked />\r\n <label for=\"side-top\">Top</label>\r\n\r\n <input id=\"side-bottom\" type=\"radio\" name=\"side\" value=\"bottom\" />\r\n <label for=\"side-bottom\">Bottom</label>\r\n </div>\r\n\r\n <label class=\"toggle\" title=\"Grid\">\r\n <input type=\"checkbox\" id=\"grid-toggle\" />\r\n Grid\r\n </label>\r\n\r\n <div class=\"select\" title=\"Grid units\">\r\n Units\r\n <select id=\"grid-units\">\r\n <option value=\"in\" selected>in</option>\r\n <option value=\"mm\">mm</option>\r\n </select>\r\n </div>\r\n\r\n <button class=\"btn\" id=\"fit-btn\" type=\"button\" title=\"Fit to viewport\">Fit</button>\r\n <button class=\"btn btn-primary\" id=\"download-btn\" type=\"button\" title=\"Download\">\r\n ${downloadIcon}\r\n Download\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"viewer-body\">\r\n <div id=\"board-viewport\">\r\n <canvas id=\"grid-canvas\"></canvas>\r\n <div id=\"board-content\">\r\n <div id=\"board-stage\">\r\n <div class=\"board-clip\" id=\"boardClip\">\r\n <div class=\"layer-frame\" id=\"layer-fr4\" style=\"z-index:0;\">\r\n <img class=\"layer fr4\" id=\"img-fr4\" alt=\"FR4\" />\r\n </div>\r\n\r\n <div class=\"layer-frame\" id=\"layer-bottom-copper\"><img class=\"layer\" id=\"img-bottom-copper\" alt=\"Bottom copper\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-bottom-mask\"><img class=\"layer\" id=\"img-bottom-mask\" alt=\"Bottom mask\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-bottom-silk\"><img class=\"layer\" id=\"img-bottom-silk\" alt=\"Bottom silk\" /></div>\r\n\r\n <div class=\"layer-frame\" id=\"layer-top-copper\"><img class=\"layer\" id=\"img-top-copper\" alt=\"Top copper\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-top-mask\"><img class=\"layer\" id=\"img-top-mask\" alt=\"Top mask\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-top-silk\"><img class=\"layer\" id=\"img-top-silk\" alt=\"Top silk\" /></div>\r\n\r\n <div class=\"layer-frame\" id=\"layer-drills\"><img class=\"layer\" id=\"img-drills\" alt=\"Drills\" /></div>\r\n <div class=\"layer-frame\" id=\"layer-vias\"><img class=\"layer\" id=\"img-vias\" alt=\"Vias\" /></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"board-viewer-hint\">Scroll to zoom, drag to pan.</div>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n\r\n const root = host.firstElementChild as HTMLElement;\r\n const viewport = mustGet<HTMLDivElement>(root, \"#board-viewport\");\r\n const content = mustGet<HTMLDivElement>(root, \"#board-content\");\r\n const stage = mustGet<HTMLDivElement>(root, \"#board-stage\");\r\n const boardClip = mustGet<HTMLDivElement>(root, \"#boardClip\");\r\n\r\n const gridCanvas = mustGet<HTMLCanvasElement>(root, \"#grid-canvas\");\r\n const gridToggle = mustGet<HTMLInputElement>(root, \"#grid-toggle\");\r\n const gridUnits = mustGet<HTMLSelectElement>(root, \"#grid-units\");\r\n const fitBtn = mustGet<HTMLButtonElement>(root, \"#fit-btn\");\r\n const downloadBtn = mustGet<HTMLButtonElement>(root, \"#download-btn\");\r\n\r\n const radios = Array.from(root.querySelectorAll<HTMLInputElement>('input[name=\"side\"]'));\r\n\r\n const imgFr4 = mustGet<HTMLImageElement>(root, \"#img-fr4\");\r\n const imgTopCopper = mustGet<HTMLImageElement>(root, \"#img-top-copper\");\r\n const imgBottomCopper = mustGet<HTMLImageElement>(root, \"#img-bottom-copper\");\r\n const imgTopMask = mustGet<HTMLImageElement>(root, \"#img-top-mask\");\r\n const imgBottomMask = mustGet<HTMLImageElement>(root, \"#img-bottom-mask\");\r\n const imgTopSilk = mustGet<HTMLImageElement>(root, \"#img-top-silk\");\r\n const imgBottomSilk = mustGet<HTMLImageElement>(root, \"#img-bottom-silk\");\r\n const imgDrills = mustGet<HTMLImageElement>(root, \"#img-drills\");\r\n const imgVias = mustGet<HTMLImageElement>(root, \"#img-vias\");\r\n\r\n let boardGeom: BoardGeom | null = null;\r\n let layers: ViewerLayers = {};\r\n\r\n let scale = 1;\r\n let translateX = 0;\r\n let translateY = 0;\r\n\r\n let isDragging = false;\r\n let dragStartX = 0;\r\n let dragStartY = 0;\r\n let dragStartTranslateX = 0;\r\n let dragStartTranslateY = 0;\r\n\r\n let rafPending = false;\r\n let didInteract = false;\r\n\r\n function clampScale(v: number) {\r\n return clamp(v, 0.2, 8);\r\n }\r\n\r\n function requestTransform() {\r\n if (rafPending) return;\r\n rafPending = true;\r\n requestAnimationFrame(() => {\r\n rafPending = false;\r\n content.style.transform =\r\n `translate3d(${translateX}px, ${translateY}px, 0) scale(${scale})`;\r\n if (gridToggle.checked) drawGrid();\r\n });\r\n }\r\n\r\n function fitBoardToViewport(marginFrac = 0.08) {\r\n const vp = viewport.getBoundingClientRect();\r\n const stageW = stage.offsetWidth || 1;\r\n const stageH = stage.offsetHeight || 1;\r\n\r\n const usableW = Math.max(1, vp.width * (1 - 2 * marginFrac));\r\n const usableH = Math.max(1, vp.height * (1 - 2 * marginFrac));\r\n\r\n scale = clampScale(Math.min(usableW / stageW, usableH / stageH));\r\n translateX = (vp.width - scale * stageW) / 2;\r\n translateY = (vp.height - scale * stageH) / 2;\r\n\r\n requestTransform();\r\n }\r\n\r\n function computePxPerIn() {\r\n let pxPerIn = 1000.0;\r\n if (boardGeom?.board?.width_in) {\r\n const rect = stage.getBoundingClientRect();\r\n const worldW = rect.width / scale;\r\n if (Number.isFinite(worldW) && worldW > 0) pxPerIn = worldW / boardGeom.board.width_in;\r\n }\r\n return pxPerIn;\r\n }\r\n\r\n function resizeGridCanvas() {\r\n const dpr = window.devicePixelRatio || 1;\r\n const rect = viewport.getBoundingClientRect();\r\n gridCanvas.width = Math.max(1, Math.floor(rect.width * dpr));\r\n gridCanvas.height = Math.max(1, Math.floor(rect.height * dpr));\r\n gridCanvas.style.width = `${rect.width}px`;\r\n gridCanvas.style.height = `${rect.height}px`;\r\n }\r\n\r\n function drawGrid() {\r\n if (!gridToggle.checked) {\r\n gridCanvas.style.display = \"none\";\r\n return;\r\n }\r\n gridCanvas.style.display = \"block\";\r\n\r\n const ctx = gridCanvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n const dpr = window.devicePixelRatio || 1;\r\n const rect = viewport.getBoundingClientRect();\r\n const w = rect.width;\r\n const h = rect.height;\r\n\r\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n ctx.clearRect(0, 0, w, h);\r\n\r\n const pxPerIn = computePxPerIn();\r\n const pxPerMm = pxPerIn / 25.4;\r\n\r\n const units = gridUnits.value;\r\n const minorWorldPx = units === \"mm\" ? pxPerMm * 1 : pxPerIn * 0.1;\r\n const majorWorldPx = units === \"mm\" ? pxPerMm * 10 : pxPerIn * 1.0;\r\n\r\n const minor = minorWorldPx * scale;\r\n const major = majorWorldPx * scale;\r\n if (!Number.isFinite(minor) || minor < 6) return;\r\n\r\n const oxMinor = posMod(translateX, minor);\r\n const oyMinor = posMod(translateY, minor);\r\n const oxMajor = posMod(translateX, major);\r\n const oyMajor = posMod(translateY, major);\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = \"rgba(17, 24, 39, 0.12)\";\r\n ctx.beginPath();\r\n for (let x = oxMinor; x < w; x += minor) {\r\n const xi = Math.round(x) + 0.5;\r\n ctx.moveTo(xi, 0);\r\n ctx.lineTo(xi, h);\r\n }\r\n for (let y = oyMinor; y < h; y += minor) {\r\n const yi = Math.round(y) + 0.5;\r\n ctx.moveTo(0, yi);\r\n ctx.lineTo(w, yi);\r\n }\r\n ctx.stroke();\r\n\r\n if (Number.isFinite(major) && major >= 12) {\r\n ctx.strokeStyle = \"rgba(17, 24, 39, 0.22)\";\r\n ctx.beginPath();\r\n for (let x = oxMajor; x < w; x += major) {\r\n const xi = Math.round(x) + 0.5;\r\n ctx.moveTo(xi, 0);\r\n ctx.lineTo(xi, h);\r\n }\r\n for (let y = oyMajor; y < h; y += major) {\r\n const yi = Math.round(y) + 0.5;\r\n ctx.moveTo(0, yi);\r\n ctx.lineTo(w, yi);\r\n }\r\n ctx.stroke();\r\n }\r\n }\r\n\r\n function setLayerFrameVisible(frameId: string, on: boolean) {\r\n const el = root.querySelector<HTMLElement>(`#${frameId}`);\r\n if (!el) return;\r\n el.style.display = on ? \"block\" : \"none\";\r\n }\r\n\r\n function setBoardMask(url: string | undefined) {\r\n if (!url) return;\r\n boardClip.style.setProperty(\"--board-mask-url\", `url('${url}')`);\r\n }\r\n\r\n function showSideMode(mode: ViewerSideMode) {\r\n const showTop = mode === \"top\";\r\n const showBottom = mode === \"bottom\";\r\n\r\n setLayerFrameVisible(\"layer-top-copper\", showTop && !!layers.top_copper);\r\n setLayerFrameVisible(\"layer-top-mask\", showTop && !!layers.top_mask);\r\n setLayerFrameVisible(\"layer-top-silk\", showTop && !!layers.top_silk);\r\n\r\n setLayerFrameVisible(\"layer-bottom-copper\", showBottom && !!layers.bottom_copper);\r\n setLayerFrameVisible(\"layer-bottom-mask\", showBottom && !!layers.bottom_mask);\r\n setLayerFrameVisible(\"layer-bottom-silk\", showBottom && !!layers.bottom_silk);\r\n\r\n setLayerFrameVisible(\"layer-drills\", !!layers.drills);\r\n setLayerFrameVisible(\"layer-vias\", !!layers.vias);\r\n\r\n const maskUrl =\r\n mode === \"bottom\"\r\n ? (layers.bottom_board_mask ?? layers.top_board_mask)\r\n : (layers.top_board_mask ?? layers.bottom_board_mask);\r\n\r\n if (maskUrl) setBoardMask(maskUrl);\r\n }\r\n\r\n function setStageFromGeometry() {\r\n if (!boardGeom?.board) return;\r\n const SCALE = 1000.0; // same constant used in your renderer logic in result.html\r\n const W = Math.round((boardGeom.board.width_in || 1) * SCALE);\r\n const H = Math.round((boardGeom.board.height_in || 1) * SCALE);\r\n stage.style.width = `${W}px`;\r\n stage.style.height = `${H}px`;\r\n }\r\n\r\n // Events\r\n viewport.addEventListener(\"wheel\", (event) => {\r\n event.preventDefault();\r\n didInteract = true;\r\n\r\n const rect = viewport.getBoundingClientRect();\r\n const mouseX = event.clientX - rect.left;\r\n const mouseY = event.clientY - rect.top;\r\n\r\n const oldScale = scale;\r\n const zoomFactor = 1.1;\r\n\r\n scale = event.deltaY < 0 ? clampScale(scale * zoomFactor) : clampScale(scale / zoomFactor);\r\n\r\n const zoomRatio = scale / oldScale;\r\n translateX = mouseX - (mouseX - translateX) * zoomRatio;\r\n translateY = mouseY - (mouseY - translateY) * zoomRatio;\r\n\r\n requestTransform();\r\n }, { passive: false });\r\n\r\n viewport.addEventListener(\"mousedown\", (event) => {\r\n if (event.button !== 0) return;\r\n event.preventDefault();\r\n didInteract = true;\r\n\r\n isDragging = true;\r\n viewport.classList.add(\"grabbing\");\r\n dragStartX = event.clientX;\r\n dragStartY = event.clientY;\r\n dragStartTranslateX = translateX;\r\n dragStartTranslateY = translateY;\r\n });\r\n\r\n const onMove = (event: MouseEvent) => {\r\n if (!isDragging) return;\r\n const dx = event.clientX - dragStartX;\r\n const dy = event.clientY - dragStartY;\r\n translateX = dragStartTranslateX + dx;\r\n translateY = dragStartTranslateY + dy;\r\n requestTransform();\r\n };\r\n\r\n const onUp = () => {\r\n if (!isDragging) return;\r\n isDragging = false;\r\n viewport.classList.remove(\"grabbing\");\r\n };\r\n\r\n window.addEventListener(\"mousemove\", onMove);\r\n window.addEventListener(\"mouseup\", onUp);\r\n\r\n gridToggle.addEventListener(\"change\", () => {\r\n resizeGridCanvas();\r\n drawGrid();\r\n });\r\n gridUnits.addEventListener(\"change\", drawGrid);\r\n fitBtn.addEventListener(\"click\", () => fitBoardToViewport(0.08));\r\n downloadBtn.addEventListener(\"click\", () => {\r\n opts.onDownload?.();\r\n });\r\n\r\n radios.forEach((r) => {\r\n r.addEventListener(\"change\", () => {\r\n const mode = (radios.find((x) => x.checked)?.value || \"top\") as ViewerSideMode;\r\n showSideMode(mode);\r\n });\r\n });\r\n\r\n window.addEventListener(\"resize\", () => {\r\n resizeGridCanvas();\r\n if (!didInteract) fitBoardToViewport(0.08);\r\n else requestTransform();\r\n });\r\n\r\n function setData(data: { boardGeom: BoardGeom; layers: ViewerLayers }) {\r\n boardGeom = data.boardGeom;\r\n layers = data.layers;\r\n\r\n // images\r\n setImgSrc(imgTopCopper, layers.top_copper);\r\n setImgSrc(imgBottomCopper, layers.bottom_copper);\r\n setImgSrc(imgTopMask, layers.top_mask);\r\n setImgSrc(imgBottomMask, layers.bottom_mask);\r\n setImgSrc(imgTopSilk, layers.top_silk);\r\n setImgSrc(imgBottomSilk, layers.bottom_silk);\r\n setImgSrc(imgDrills, layers.drills);\r\n setImgSrc(imgVias, layers.vias);\r\n\r\n // FR4 base\r\n setImgSrc(imgFr4, layers.top_copper ?? layers.bottom_copper);\r\n\r\n setStageFromGeometry();\r\n resizeGridCanvas();\r\n fitBoardToViewport(0.08);\r\n\r\n const mode = (radios.find((x) => x.checked)?.value || \"top\") as ViewerSideMode;\r\n showSideMode(mode);\r\n requestTransform();\r\n }\r\n\r\n function dispose() {\r\n window.removeEventListener(\"mousemove\", onMove);\r\n window.removeEventListener(\"mouseup\", onUp);\r\n host.innerHTML = \"\";\r\n }\r\n\r\n return {\r\n setData,\r\n setSideMode: (mode) => {\r\n const r = radios.find((x) => x.value === mode);\r\n if (r) r.checked = true;\r\n showSideMode(mode);\r\n },\r\n fit: () => fitBoardToViewport(0.08),\r\n dispose,\r\n };\r\n}\r\n"],"names":["module","s","a","o","h","u","r","e","t","require","l","n","i","d","c","p","f","A","O","I","m","_","g","b","v","y","w","k","x","S","z","C","B","E","R","global","T","D","F","N","U","P","L","j","Z","W","M","H","G","K","Y","X","V","q","J","unzipGerbersZip","input","buffer","toArrayBuffer","zip","JSZip","entries","rawName","file","normalizedName","normalizeZipPath","path","isDirInput","toU8","toExactArrayBuffer","bytes","startsWith","sig","offset","detectArchiveTypeFromBytes","normalizeName","name","scoreGerberLike","files","reasons","lower","has","pred","gerberExt","drillExt","gerberLikeCount","drillLikeCount","hasTop","hasBottom","hasMask","hasSilk","hasOutline","obviousNonGerber","score","detectGerberBundle","confidence","archiveType","ab","err","head","GerberError","code","message","details","ensureUint8","out","unzipBytes","error","MAX_FILES","MAX_TOTAL_BYTES","totalBytes","unrarBytes","init","Archive","mod","archive","blob","extracted","reject","fileCount","MAX_TOTAL_SIZE","totalSize","walk","node","prefix","key","val","unpackGerberArchive","MAX_INPUT_SIZE","det","norm","pickByExt","names","exts","set","nl","dot","pickByContains","required","req","classifyLayerNames","top_copper","bottom_copper","top_mask","bottom_mask","top_silk","bottom_silk","outline","drills","DEFAULT_FLASH_DIAM_MM","parseGerberFile","content","_role","state","lines","rawLine","line","handleParameterBlock","handleCommandLine","region","block","body","ix","dx","oldScale","newScale","factor","ap","shape","params","diameterMm","widthMm","heightMm","parts","sizeXmm","sizeYmm","dCode","dMatch","coordMatchX","coordMatchY","newX","newY","decodeCoord","prevX","prevY","width","flash","numStr","sign","digits","scale","parseDrillFile","toolDiameters","currentTool","holes","toolMatch","toolId","diameter","coordMatch","xRaw","yRaw","xVal","yVal","boundsSize","isSaneBounds","detectScaleFactor","layerW","refW","ratio","scaleGerberPrims","prims","loop","scaleDrills","svgToBlobUrl","svg","expandBounds","initBounds","boundsFromGerber","boundsFromDrills","mergeBounds","ensureFiniteBounds","SCALE_PX_PER_IN","mmToPx","mm","toLocalMm","lx","ly","buildBoardMaskSvg","stageWpx","stageHpx","bboxOfRegion","minX","minY","maxX","maxY","point","isNegativePlaneLayer","bounds","boardArea","largestDarkRegionArea","largestClearRegionArea","bb","area","darkCount","clearCount","darkPlane","clearDominates","hugeClearRegion","buildLayerSvgWithPolarityMask","fillColor","opacity","wMm","hMm","wPx","hPx","pxPerMm","negative","baselineFill","toPx","renderOp","op","paintColor","sw","fwMm","fhMm","rx","p0","pi","paint","rendered","maskId","buildSilkSvg","stroke","fill","trackEls","b2","flashEls","cx","cy","rw","rh","regionEls","buildDrillsSvg","els","renderGerbersFiles","classified","dec","readText","data","topText","botText","outText","drillText","topSilkText","botSilkText","topPrims","botPrims","outPrims","drillParsed","drillHoles","topSilkPrims","botSilkPrims","topB","botB","outB","drlB","topSilkB","botSilkB","refB","topScale","botScale","outScale","drlScale","topSilkScale","botSilkScale","topPrimsN","botPrimsN","outPrimsN","drillHolesN","topSilkPrimsN","botSilkPrimsN","boardB","ob","cb","boardGeom","urls","addSvg","layers","renderGerbersZip","renderGerbers","options","clamp","lo","hi","posMod","setImgSrc","img","url","mustGet","root","selector","el","createBoardViewer","host","opts","downloadIcon","viewport","stage","boardClip","gridCanvas","gridToggle","gridUnits","fitBtn","downloadBtn","radios","imgFr4","imgTopCopper","imgBottomCopper","imgTopMask","imgBottomMask","imgTopSilk","imgBottomSilk","imgDrills","imgVias","translateX","translateY","isDragging","dragStartX","dragStartY","dragStartTranslateX","dragStartTranslateY","rafPending","didInteract","clampScale","requestTransform","drawGrid","fitBoardToViewport","marginFrac","vp","stageW","stageH","usableW","usableH","computePxPerIn","pxPerIn","worldW","resizeGridCanvas","dpr","rect","ctx","units","minorWorldPx","majorWorldPx","minor","major","oxMinor","oyMinor","oxMajor","oyMajor","xi","yi","setLayerFrameVisible","frameId","on","setBoardMask","showSideMode","mode","showTop","showBottom","maskUrl","setStageFromGeometry","SCALE","event","mouseX","mouseY","zoomFactor","zoomRatio","onMove","dy","onUp","setData","dispose"],"mappings":"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","x_google_ignoreList":[0]}
|