Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

esp-web-flasher

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

esp-web-flasher - npm Package Compare versions

Comparing version 3.1.3 to 3.2.0

dist/struct.d.ts

5

dist/const.d.ts

@@ -117,3 +117,3 @@ export interface Logger {

export declare const CHIP_DETECT_MAGIC_VALUES: {
[-999167]: {
4293968129: {
name: string;

@@ -193,1 +193,4 @@ family: number;

export declare const getUartDateRegAddress: (chipFamily: ChipFamily) => number;
export declare class SlipReadError extends Error {
constructor(message: string);
}

12

dist/const.js
import { toByteArray } from "./util";
export const baudRates = [921600, 115200, 230400, 460800];
export const baudRates = [
115200, 128000, 153600, 230400, 460800, 921600, 1500000, 2000000,
];
export const FLASH_SIZES = {

@@ -100,3 +102,3 @@ "512KB": 0x00,

export const CHIP_DETECT_MAGIC_VALUES = {
[-999167]: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
0xfff0c101: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
0x00f01d83: { name: "ESP32", family: CHIP_FAMILY_ESP32 },

@@ -222,1 +224,7 @@ 0x000007c6: { name: "ESP32-S2", family: CHIP_FAMILY_ESP32S2 },

};
export class SlipReadError extends Error {
constructor(message) {
super(message);
this.name = "SlipReadError";
}
}

@@ -14,3 +14,2 @@ /// <reference types="w3c-web-serial" />

connected: boolean;
stopReadLoop: boolean;
flashSize: string | null;

@@ -21,6 +20,2 @@ __inputBuffer?: number[];

private get _inputBuffer();
/**
* @name chipType
* ESP32 or ESP8266 based on which chip type we're talking to
*/
initialize(): Promise<void>;

@@ -38,6 +33,2 @@ /**

macAddr(): any[];
/**
* @name readRegister
* Read a register within the ESP chip RAM, returns a 4-element list
*/
readRegister(reg: number): Promise<number>;

@@ -50,3 +41,3 @@ /**

*/
checkCommand(opcode: number, buffer: number[], checksum?: number, timeout?: number): Promise<(number[] | null)[]>;
checkCommand(opcode: number, buffer: number[], checksum?: number, timeout?: number): Promise<[number, number[]]>;
/**

@@ -59,2 +50,10 @@ * @name sendCommand

/**
* @name readPacket
* Generator to read SLIP packets from a serial port.
* Yields one full SLIP packet at a time, raises exception on timeout or invalid data.
* Designed to avoid too many calls to serial.read(1), which can bog
* down on slow systems.
*/
readPacket(timeout: number): Promise<number[]>;
/**
* @name getResponse

@@ -65,11 +64,4 @@ * Read response data and decodes the slip packet, then parses

*/
getResponse(opcode: number, timeout?: number): Promise<null[] | number[][]>;
getResponse(opcode: number, timeout?: number): Promise<[number, number[]]>;
/**
* @name read
* Read response data and decodes the slip packet.
* Keeps reading until we hit the timeout or get
* a packet closing byte
*/
readBuffer(timeout?: number): Promise<number[] | null>;
/**
* @name checksum

@@ -144,3 +136,3 @@ * Calculate checksum of a blob, as it is defined by the ROM

*/
memBegin(size: number, blocks: number, blocksize: number, offset: number): Promise<(number[] | null)[]>;
memBegin(size: number, blocks: number, blocksize: number, offset: number): Promise<[number, number[]]>;
/**

@@ -150,3 +142,3 @@ * @name memBlock (609)

*/
memBlock(data: number[], seq: number): Promise<(number[] | null)[]>;
memBlock(data: number[], seq: number): Promise<[number, number[]]>;
/**

@@ -161,3 +153,3 @@ * @name memFinish (615)

*/
memFinish(entrypoint?: number): Promise<(number[] | null)[]>;
memFinish(entrypoint?: number): Promise<[number, number[]]>;
runStub(): Promise<EspStubLoader>;

@@ -164,0 +156,0 @@ writeToStream(data: number[]): Promise<void>;

@@ -1,6 +0,7 @@

import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, MAX_TIMEOUT, DEFAULT_TIMEOUT, ERASE_REGION_TIMEOUT_PER_MB, ESP_CHANGE_BAUDRATE, ESP_CHECKSUM_MAGIC, ESP_FLASH_BEGIN, ESP_FLASH_DATA, ESP_FLASH_END, ESP_MEM_BEGIN, ESP_MEM_DATA, ESP_MEM_END, ESP_READ_REG, ESP_WRITE_REG, ESP_SPI_ATTACH, ESP_SPI_SET_PARAMS, ESP_SYNC, FLASH_SECTOR_SIZE, FLASH_WRITE_SIZE, STUB_FLASH_WRITE_SIZE, MEM_END_ROM_TIMEOUT, ROM_INVALID_RECV_MSG, SYNC_PACKET, SYNC_TIMEOUT, USB_RAM_BLOCK, ESP_ERASE_FLASH, CHIP_ERASE_TIMEOUT, timeoutPerMb, ESP_ROM_BAUD, ESP_FLASH_DEFL_BEGIN, ESP_FLASH_DEFL_DATA, ESP_FLASH_DEFL_END, ESP32_BOOTLOADER_FLASH_OFFSET, BOOTLOADER_FLASH_OFFSET, ESP_IMAGE_MAGIC, getFlashSizes, FLASH_FREQUENCIES, FLASH_MODES, getSpiFlashAddresses, getUartDateRegAddress, DETECTED_FLASH_SIZES, CHIP_DETECT_MAGIC_REG_ADDR, CHIP_DETECT_MAGIC_VALUES, } from "./const";
import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP8266, MAX_TIMEOUT, DEFAULT_TIMEOUT, ERASE_REGION_TIMEOUT_PER_MB, ESP_CHANGE_BAUDRATE, ESP_CHECKSUM_MAGIC, ESP_FLASH_BEGIN, ESP_FLASH_DATA, ESP_FLASH_END, ESP_MEM_BEGIN, ESP_MEM_DATA, ESP_MEM_END, ESP_READ_REG, ESP_WRITE_REG, ESP_SPI_ATTACH, ESP_SPI_SET_PARAMS, ESP_SYNC, FLASH_SECTOR_SIZE, FLASH_WRITE_SIZE, STUB_FLASH_WRITE_SIZE, MEM_END_ROM_TIMEOUT, ROM_INVALID_RECV_MSG, SYNC_PACKET, SYNC_TIMEOUT, USB_RAM_BLOCK, ESP_ERASE_FLASH, CHIP_ERASE_TIMEOUT, timeoutPerMb, ESP_ROM_BAUD, ESP_FLASH_DEFL_BEGIN, ESP_FLASH_DEFL_DATA, ESP_FLASH_DEFL_END, ESP32_BOOTLOADER_FLASH_OFFSET, BOOTLOADER_FLASH_OFFSET, ESP_IMAGE_MAGIC, getFlashSizes, FLASH_FREQUENCIES, FLASH_MODES, getSpiFlashAddresses, getUartDateRegAddress, DETECTED_FLASH_SIZES, CHIP_DETECT_MAGIC_REG_ADDR, CHIP_DETECT_MAGIC_VALUES, SlipReadError, } from "./const";
import { getStubCode } from "./stubs";
import { pack, sleep, slipEncode, toHex, unpack } from "./util";
import { hexFormatter, sleep, slipEncode, toHex } from "./util";
// @ts-ignore
import { deflate } from "pako/dist/pako.esm.mjs";
import { pack, unpack } from "./struct";
export class ESPLoader extends EventTarget {

@@ -18,3 +19,2 @@ constructor(port, logger, _parent) {

this.connected = true;
this.stopReadLoop = false;
this.flashSize = null;

@@ -25,6 +25,2 @@ }

}
/**
* @name chipType
* ESP32 or ESP8266 based on which chip type we're talking to
*/
async initialize() {

@@ -40,5 +36,5 @@ await this.hardReset(true);

let chipMagicValue = await this.readRegister(CHIP_DETECT_MAGIC_REG_ADDR);
let chip = CHIP_DETECT_MAGIC_VALUES[chipMagicValue];
let chip = CHIP_DETECT_MAGIC_VALUES[chipMagicValue >>> 0];
if (chip === undefined) {
throw new Error(`Unknown Chip: Hex: ${toHex(chipMagicValue, 8).toLowerCase()} Number: ${chipMagicValue}`);
throw new Error(`Unknown Chip: Hex: ${toHex(chipMagicValue >>> 0, 8).toLowerCase()} Number: ${chipMagicValue}`);
}

@@ -53,3 +49,3 @@ this.chipName = chip.name;

else if (this.chipFamily == CHIP_FAMILY_ESP32) {
baseAddr = 0x6001a000;
baseAddr = 0x3ff5a000;
}

@@ -78,3 +74,3 @@ else if (this.chipFamily == CHIP_FAMILY_ESP32S2) {

try {
while (!this.stopReadLoop) {
while (true) {
const { value, done } = await this._reader.read();

@@ -163,13 +159,10 @@ if (done) {

}
/**
* @name readRegister
* Read a register within the ESP chip RAM, returns a 4-element list
*/
async readRegister(reg) {
if (this.debug) {
this.logger.debug("Reading Register", reg);
this.logger.debug("Reading from Register " + toHex(reg, 8));
}
let packet = pack("I", reg);
let register = (await this.checkCommand(ESP_READ_REG, packet))[0];
return unpack("I", register)[0];
let packet = pack("<I", reg);
await this.sendCommand(ESP_READ_REG, packet);
let [val, _data] = await this.getResponse(ESP_READ_REG);
return val;
}

@@ -227,16 +220,8 @@ /**

async sendCommand(opcode, buffer, checksum = 0) {
//debugMsg("Running Send Command");
this._inputBuffer.length = 0; // Reset input buffer
let packet = [0xc0, 0x00]; // direction
packet.push(opcode);
packet = packet.concat(pack("H", buffer.length));
packet = packet.concat(slipEncode(pack("I", checksum)));
packet = packet.concat(slipEncode(buffer));
packet.push(0xc0);
let packet = slipEncode([
...pack("<BBHI", 0x00, opcode, buffer.length, checksum),
...buffer,
]);
if (this.debug) {
this.logger.debug("Writing " +
packet.length +
" byte" +
(packet.length == 1 ? "" : "s") +
":", packet);
this.logger.debug(`Writing ${packet.length} byte${packet.length == 1 ? "" : "s"}:`, packet);
}

@@ -246,135 +231,107 @@ await this.writeToStream(packet);

/**
* @name getResponse
* Read response data and decodes the slip packet, then parses
* out the value/data and returns as a tuple of (value, data) where
* each is a list of bytes
* @name readPacket
* Generator to read SLIP packets from a serial port.
* Yields one full SLIP packet at a time, raises exception on timeout or invalid data.
* Designed to avoid too many calls to serial.read(1), which can bog
* down on slow systems.
*/
async getResponse(opcode, timeout = DEFAULT_TIMEOUT) {
let reply = [];
let packetLength = 0;
let escapedByte = false;
let stamp = Date.now();
while (Date.now() - stamp < timeout) {
if (this._inputBuffer.length > 0) {
let c = this._inputBuffer.shift();
if (c == 0xdb) {
escapedByte = true;
async readPacket(timeout) {
let partialPacket = null;
let inEscape = false;
let readBytes = [];
while (true) {
let stamp = Date.now();
readBytes = [];
while (Date.now() - stamp < timeout) {
if (this._inputBuffer.length > 0) {
readBytes.push(this._inputBuffer.shift());
break;
}
else if (escapedByte) {
if (c == 0xdd) {
reply.push(0xdc);
}
else if (c == 0xdc) {
reply.push(0xc0);
}
else {
reply = reply.concat([0xdb, c]);
}
escapedByte = false;
}
else {
reply.push(c);
await sleep(10);
}
}
else {
await sleep(10);
if (readBytes.length == 0) {
let waitingFor = partialPacket === null ? "header" : "content";
throw new SlipReadError("Timed out waiting for packet " + waitingFor);
}
if (reply.length > 0 && reply[0] != 0xc0) {
// packets must start with 0xC0
reply.shift();
}
if (reply.length > 1 && reply[1] != 0x01) {
reply.shift();
}
if (reply.length > 2 && reply[2] != opcode) {
reply.shift();
}
if (reply.length > 4) {
// get the length
packetLength = reply[3] + (reply[4] << 8);
}
if (reply.length == packetLength + 10) {
break;
}
}
// Check to see if we have a complete packet. If not, we timed out.
if (reply.length != packetLength + 10) {
this.logger.log("Timed out after " + timeout + " milliseconds");
return [null, null];
}
if (this.debug) {
this.logger.debug("Reading " +
reply.length +
" byte" +
(reply.length == 1 ? "" : "s") +
":", reply);
}
let value = reply.slice(5, 9);
let data = reply.slice(9, -1);
if (this.debug) {
this.logger.debug("value:", value, "data:", data);
}
return [value, data];
}
/**
* @name read
* Read response data and decodes the slip packet.
* Keeps reading until we hit the timeout or get
* a packet closing byte
*/
async readBuffer(timeout = DEFAULT_TIMEOUT) {
let reply = [];
// let packetLength = 0;
let escapedByte = false;
let stamp = Date.now();
while (Date.now() - stamp < timeout) {
if (this._inputBuffer.length > 0) {
let c = this._inputBuffer.shift();
if (c == 0xdb) {
escapedByte = true;
if (this.debug)
this.logger.debug("Read " + readBytes.length + " bytes: " + hexFormatter(readBytes));
for (let b of readBytes) {
if (partialPacket === null) {
// waiting for packet header
if (b == 0xc0) {
partialPacket = [];
}
else {
if (this.debug) {
this.logger.debug("Read invalid data: " + hexFormatter(readBytes));
this.logger.debug("Remaining data in serial buffer: " +
hexFormatter(this._inputBuffer));
}
throw new SlipReadError("Invalid head of packet (" + toHex(b) + ")");
}
}
else if (escapedByte) {
if (c == 0xdd) {
reply.push(0xdc);
else if (inEscape) {
// part-way through escape sequence
inEscape = false;
if (b == 0xdc) {
partialPacket.push(0xc0);
}
else if (c == 0xdc) {
reply.push(0xc0);
else if (b == 0xdd) {
partialPacket.push(0xdb);
}
else {
reply = reply.concat([0xdb, c]);
if (this.debug) {
this.logger.debug("Read invalid data: " + hexFormatter(readBytes));
this.logger.debug("Remaining data in serial buffer: " +
hexFormatter(this._inputBuffer));
}
throw new SlipReadError("Invalid SLIP escape (0xdb, " + toHex(b) + ")");
}
escapedByte = false;
}
else if (b == 0xdb) {
// start of escape sequence
inEscape = true;
}
else if (b == 0xc0) {
// end of packet
if (this.debug)
this.logger.debug("Received full packet: " + hexFormatter(partialPacket));
return partialPacket;
}
else {
reply.push(c);
// normal byte in packet
partialPacket.push(b);
}
}
else {
await sleep(10);
}
throw new SlipReadError("Invalid state");
}
/**
* @name getResponse
* Read response data and decodes the slip packet, then parses
* out the value/data and returns as a tuple of (value, data) where
* each is a list of bytes
*/
async getResponse(opcode, timeout = DEFAULT_TIMEOUT) {
for (let i = 0; i < 100; i++) {
const packet = await this.readPacket(timeout);
if (packet.length < 8) {
continue;
}
if (reply.length > 0 && reply[0] != 0xc0) {
// packets must start with 0xC0
reply.shift();
const [resp, opRet, _lenRet, val] = unpack("<BBHI", packet.slice(0, 8));
if (resp != 1) {
continue;
}
if (reply.length > 1 && reply[reply.length - 1] == 0xc0) {
break;
const data = packet.slice(8);
if (opcode == null || opRet == opcode) {
return [val, data];
}
if (data[0] != 0 && data[1] == ROM_INVALID_RECV_MSG) {
this._inputBuffer.length = 0;
throw new Error(`Invalid (unsupported) command ${toHex(opcode)}`);
}
}
// Check to see if we have a complete packet. If not, we timed out.
if (reply.length < 2) {
this.logger.log("Timed out after " + timeout + " milliseconds");
return null;
}
if (this.debug) {
this.logger.debug("Reading " +
reply.length +
" byte" +
(reply.length == 1 ? "" : "s") +
":", reply);
}
let data = reply.slice(1, -1);
if (this.debug) {
this.logger.debug("data:", data);
}
return data;
throw "Response doesn't match request";
}

@@ -413,8 +370,9 @@ /**

async reconfigurePort(baud) {
var _a, _b;
var _a;
try {
// SerialPort does not allow to be reconfigured while open so we close and re-open
this.stopReadLoop = true;
// reader.cancel() causes the Promise returned by the read() operation running on
// the readLoop to return immediately with { value: undefined, done: true } and thus
// breaking the loop and exiting readLoop();
await ((_a = this._reader) === null || _a === void 0 ? void 0 : _a.cancel());
(_b = this._reader) === null || _b === void 0 ? void 0 : _b.releaseLock();
await this.port.close();

@@ -424,3 +382,2 @@ // Reopen Port

// Restart Readloop
this.stopReadLoop = false;
this.readLoop();

@@ -441,2 +398,3 @@ this.logger.log(`Changed baud rate to ${baud}`);

for (let i = 0; i < 5; i++) {
this._inputBuffer.length = 0;
let response = await this._sync();

@@ -459,8 +417,10 @@ if (response) {

for (let i = 0; i < 8; i++) {
let [_reply, data] = await this.getResponse(ESP_SYNC, SYNC_TIMEOUT);
if (data === null) {
continue;
try {
let [_reply, data] = await this.getResponse(ESP_SYNC, SYNC_TIMEOUT);
if (data.length > 1 && data[0] == 0 && data[1] == 0) {
return true;
}
}
if (data.length > 1 && data[0] == 0 && data[1] == 0) {
return true;
catch (err) {
// If read packet fails.
}

@@ -527,6 +487,6 @@ }

if (compress) {
await this.flashDeflBlock(block, seq, 2000);
await this.flashDeflBlock(block, seq);
}
else {
await this.flashBlock(block, seq, 2000);
await this.flashBlock(block, seq);
}

@@ -558,6 +518,6 @@ seq += 1;

*/
async flashBlock(data, seq, timeout = 100) {
async flashBlock(data, seq, timeout = DEFAULT_TIMEOUT) {
await this.checkCommand(ESP_FLASH_DATA, pack("<IIII", data.length, seq, 0, 0).concat(data), this.checksum(data), timeout);
}
async flashDeflBlock(data, seq, timeout = 100) {
async flashDeflBlock(data, seq, timeout = DEFAULT_TIMEOUT) {
await this.checkCommand(ESP_FLASH_DEFL_DATA, pack("<IIII", data.length, seq, 0, 0).concat(data), this.checksum(data));

@@ -574,3 +534,4 @@ }

let flashWriteSize = this.getFlashWriteSize();
if ([CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2].includes(this.chipFamily)) {
if (!this.IS_STUB &&
[CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2].includes(this.chipFamily)) {
await this.checkCommand(ESP_SPI_ATTACH, new Array(8).fill(0));

@@ -876,13 +837,4 @@ }

let data = pack("<II", entrypoint == 0 ? 1 : 0, entrypoint);
// try {
return await this.checkCommand(ESP_MEM_END, data, 0, timeout);
// } catch (err) {
// console.error("Error in memFinish", err);
// if (this.IS_STUB) {
// // raise
// }
// // pass
// }
}
// ESPTool Line 706
async runStub() {

@@ -912,4 +864,5 @@ const stub = await getStubCode(this.chipFamily);

await this.memFinish(stub["entry"]);
const p = await this.readBuffer(100);
const pChar = String.fromCharCode(...p);
let pChar;
const p = await this.readPacket(500);
pChar = String.fromCharCode(...p);
if (pChar != "OHAI") {

@@ -916,0 +869,0 @@ throw new Error("Failed to start stub. Unexpected response: " + pChar);

{
"text": "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",
"text": "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",
"text_start": 1074520064,
"entry": 1074521496,
"entry": 1074521516,
"data": "CMD8Pw==",
"data_start": 1073605544
}
{
"text": "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",
"text": "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",
"text_start": 1073905664,
"entry": 1073907516,
"entry": 1073907540,
"data": "CAD9Pw==",
"data_start": 1073622004
}
{
"text": "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",
"text_start": 1074847744,
"entry": 1074847748,
"data": "CIH+PwUFBAACAwcAAwMLAFHnEECH5xBAtecQQFToEEAF9xBAuugQQBDpEEBc6RBABfcQQCLqEECf6hBAYOsQQAX3EEAF9xBA+OsQQAX3EEDX7hBAn+8QQNjvEEAF9xBABfcQQHXwEEAF9xBAW/EQQAHyEEBA8xBA//MQQND0EEAF9xBABfcQQAX3EEAF9xBA/vUQQAX3EED09hBAL+0QQCfoEEBC9RBAS+oQQJjpEEAF9xBAiPYQQM/2EEAF9xBABfcQQAX3EEAF9xBABfcQQAX3EEAF9xBABfcQQMDpEED/6RBAWvUQQAEAAAACAAAAAwAAAAQAAAAFAAAABwAAAAkAAAANAAAAEQAAABkAAAAhAAAAMQAAAEEAAABhAAAAgQAAAMEAAAABAQAAgQEAAAECAAABAwAAAQQAAAEGAAABCAAAAQwAAAEQAAABGAAAASAAAAEwAAABQAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAAAAAAAAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAANAAAADwAAABEAAAATAAAAFwAAABsAAAAfAAAAIwAAACsAAAAzAAAAOwAAAEMAAABTAAAAYwAAAHMAAACDAAAAowAAAMMAAADjAAAAAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAQEAAAEAAAAEAAAA",
"text": "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",
"text_start": 1074843648,
"entry": 1074843652,
"data": "CIH+PwUFBAACAwcAAwMLALnXEEDv1xBAHdgQQLrYEEBo5xBAHtkQQHTZEEDA2RBAaOcQQILaEED/2hBAwNsQQGjnEEBo5xBAWNwQQGjnEEA33xBAAOAQQDvgEEBo5xBAaOcQQNfgEEBo5xBAv+EQQGXiEECj4xBAY+QQQDTlEEBo5xBAaOcQQGjnEEBo5xBAYuYQQGjnEEBX5xBAkN0QQI/YEECm5RBAq9oQQPzZEEBo5xBA7OYQQDHnEEBo5xBAaOcQQGjnEEBo5xBAaOcQQGjnEEBo5xBAaOcQQCLaEEBf2hBAvuUQQAEAAAACAAAAAwAAAAQAAAAFAAAABwAAAAkAAAANAAAAEQAAABkAAAAhAAAAMQAAAEEAAABhAAAAgQAAAMEAAAABAQAAgQEAAAECAAABAwAAAQQAAAEGAAABCAAAAQwAAAEQAAABGAAAASAAAAEwAAABQAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAAAAAAAAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAANAAAADwAAABEAAAATAAAAFwAAABsAAAAfAAAAIwAAACsAAAAzAAAAOwAAAEMAAABTAAAAYwAAAHMAAACDAAAAowAAAMMAAADjAAAAAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAQEAAAEAAAAEAAAA",
"data_start": 1073720488
}

@@ -12,5 +12,4 @@ /**

export declare const toByteArray: (str: string) => number[];
export declare const pack: (format: string, ...data: number[]) => number[];
export declare const unpack: (format: string, bytes: number[]) => number[];
export declare const hexFormatter: (bytes: number[]) => string;
export declare const toHex: (value: number, size?: number) => string;
export declare const sleep: (ms: number) => Promise<unknown>;

@@ -7,3 +7,3 @@ /**

export const slipEncode = (buffer) => {
let encoded = [];
let encoded = [0xc0];
for (let byte of buffer) {

@@ -20,2 +20,3 @@ if (byte == 0xdb) {

}
encoded.push(0xc0);
return encoded;

@@ -37,71 +38,3 @@ };

};
export const pack = (format, ...data) => {
// let format = args[0];
let pointer = 0;
// let data = args.slice(1);
if (format.replace(/[<>]/, "").length != data.length) {
throw new Error("Pack format to Argument count mismatch");
}
let bytes = [];
let littleEndian = true;
const pushBytes = (value, byteCount) => {
for (let i = 0; i < byteCount; i++) {
if (littleEndian) {
bytes.push((value >> (i * 8)) & 0xff);
}
else {
bytes.push((value >> ((byteCount - i) * 8)) & 0xff);
}
}
};
for (let i = 0; i < format.length; i++) {
if (format[i] == "<") {
littleEndian = true;
}
else if (format[i] == ">") {
littleEndian = false;
}
else if (format[i] == "B") {
pushBytes(data[pointer], 1);
pointer++;
}
else if (format[i] == "H") {
pushBytes(data[pointer], 2);
pointer++;
}
else if (format[i] == "I") {
pushBytes(data[pointer], 4);
pointer++;
}
else {
throw new Error(`Unhandled character "${format[i]}" in pack format`);
}
}
return bytes;
};
export const unpack = (format, bytes) => {
let pointer = 0;
let data = [];
for (let c of format) {
if (c == "B") {
data.push(bytes[pointer] & 0xff);
pointer += 1;
}
else if (c == "H") {
data.push((bytes[pointer] & 0xff) | ((bytes[pointer + 1] & 0xff) << 8));
pointer += 2;
}
else if (c == "I") {
data.push((bytes[pointer] & 0xff) |
((bytes[pointer + 1] & 0xff) << 8) |
((bytes[pointer + 2] & 0xff) << 16) |
((bytes[pointer + 3] & 0xff) << 24));
pointer += 4;
}
else {
throw new Error(`Unhandled character "${c}" in unpack format`);
}
}
return data;
};
export const hexFormatter = (bytes) => "[" + bytes.map((value) => toHex(value)).join(", ") + "]";
export const toHex = (value, size = 2) => {

@@ -108,0 +41,0 @@ let hex = value.toString(16).toUpperCase();

@@ -1,1 +0,1 @@

var A="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",B=1077411840,w=1077413488,E="DEDIPw==",c=1070164904,g={text:A,text_start:1077411840,entry:1077413488,data:"DEDIPw==",data_start:1070164904};export default g;export{E as data,c as data_start,w as entry,A as text,B as text_start};
var A="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",B=1077411840,w=1077413488,E="DEDIPw==",c=1070164904,g={text:A,text_start:1077411840,entry:1077413488,data:"DEDIPw==",data_start:1070164904};export{E as data,c as data_start,g as default,w as entry,A as text,B as text_start};

@@ -1,1 +0,1 @@

const t=t=>{let e=[];for(let a of t)219==a?e=e.concat([219,221]):192==a?e=e.concat([219,220]):e.push(a);return e},e=t=>{let e=[];for(let a=0;a<t.length;a++){let i=t.charCodeAt(a);i<=255&&e.push(i)}return e},a=(t,...e)=>{let a=0;if(t.replace(/[<>]/,"").length!=e.length)throw new Error("Pack format to Argument count mismatch");let i=[],s=!0;const r=(t,e)=>{for(let a=0;a<e;a++)s?i.push(t>>8*a&255):i.push(t>>8*(e-a)&255)};for(let i=0;i<t.length;i++)if("<"==t[i])s=!0;else if(">"==t[i])s=!1;else if("B"==t[i])r(e[a],1),a++;else if("H"==t[i])r(e[a],2),a++;else{if("I"!=t[i])throw new Error(`Unhandled character "${t[i]}" in pack format`);r(e[a],4),a++}return i},i=(t,e)=>{let a=0,i=[];for(let s of t)if("B"==s)i.push(255&e[a]),a+=1;else if("H"==s)i.push(255&e[a]|(255&e[a+1])<<8),a+=2;else{if("I"!=s)throw new Error(`Unhandled character "${s}" in unpack format`);i.push(255&e[a]|(255&e[a+1])<<8|(255&e[a+2])<<16|(255&e[a+3])<<24),a+=4}return i},s=(t,e=2)=>{let a=t.toString(16).toUpperCase();return a.startsWith("-")?"-0x"+a.substring(1).padStart(e,"0"):"0x"+a.padStart(e,"0")},r=t=>new Promise((e=>setTimeout(e,t))),n={"512KB":0,"256KB":16,"1MB":32,"2MB":48,"4MB":64,"2MB-c1":80,"4MB-c1":96,"8MB":128,"16MB":144},l={"1MB":0,"2MB":16,"4MB":32,"8MB":48,"16MB":64,"32MB":25,"64MB":26},o=2,h=0,d={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},f=e(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),c=33382,_=50,u=12882,g=12835,w={[-999167]:{name:"ESP8266",family:c},15736195:{name:"ESP32",family:_},1990:{name:"ESP32-S2",family:u},9:{name:"ESP32-S3",family:12883},3942662454:{name:"ESP32-S3(beta2)",family:12883},1763790959:{name:"ESP32-C3",family:g},456216687:{name:"ESP32-C3",family:g},3391540258:{name:"ESP32-H2",family:12914},228687983:{name:"ESP32-C6(beta)",family:12838}},m=(t,e)=>{let a=Math.floor(t*(e/486));return a<3e3?3e3:a},p=async t=>{let a;return t==_?a=await import("./esp32-9a0a29d9.js"):t==u?a=await import("./esp32s2-70924167.js"):t==c?a=await import("./esp8266-695df45b.js"):t==g&&(a=await import("./esp32c3-a57b2c5e.js")),{...a,text:e(atob(a.text)),data:e(atob(a.data))}};function b(t){let e=t.length;for(;--e>=0;)t[e]=0}const k=new Uint8Array([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]),y=new Uint8Array([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]),v=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),x=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),z=new Array(576);b(z);const S=new Array(60);b(S);const E=new Array(512);b(E);const U=new Array(256);b(U);const A=new Array(29);b(A);const R=new Array(30);function B(t,e,a,i,s){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=s,this.has_stree=t&&t.length}let I,F,D;function O(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}b(R);const Z=t=>t<256?E[t]:E[256+(t>>>7)],C=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},T=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,C(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},M=(t,e,a)=>{T(t,a[2*e],a[2*e+1])},L=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},N=(t,e,a)=>{const i=new Array(16);let s,r,n=0;for(s=1;s<=15;s++)i[s]=n=n+a[s-1]<<1;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=L(i[e]++,e))}},P=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},H=t=>{t.bi_valid>8?C(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},$=(t,e,a,i)=>{const s=2*e,r=2*a;return t[s]<t[r]||t[s]===t[r]&&i[e]<=i[a]},j=(t,e,a)=>{const i=t.heap[a];let s=a<<1;for(;s<=t.heap_len&&(s<t.heap_len&&$(e,t.heap[s+1],t.heap[s],t.depth)&&s++,!$(e,i,t.heap[s],t.depth));)t.heap[a]=t.heap[s],a=s,s<<=1;t.heap[a]=i},W=(t,e,a)=>{let i,s,r,n,l=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*l]<<8|t.pending_buf[t.d_buf+2*l+1],s=t.pending_buf[t.l_buf+l],l++,0===i?M(t,s,e):(r=U[s],M(t,r+256+1,e),n=k[r],0!==n&&(s-=A[r],T(t,s,n)),i--,r=Z(i),M(t,r,a),n=y[r],0!==n&&(i-=R[r],T(t,i,n)))}while(l<t.last_lit);M(t,256,e)},K=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,l,o,h=-1;for(t.heap_len=0,t.heap_max=573,n=0;n<r;n++)0!==a[2*n]?(t.heap[++t.heap_len]=h=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)o=t.heap[++t.heap_len]=h<2?++h:0,a[2*o]=1,t.depth[o]=0,t.opt_len--,s&&(t.static_len-=i[2*o+1]);for(e.max_code=h,n=t.heap_len>>1;n>=1;n--)j(t,a,n);o=r;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],j(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=l,a[2*o]=a[2*n]+a[2*l],t.depth[o]=(t.depth[n]>=t.depth[l]?t.depth[n]:t.depth[l])+1,a[2*n+1]=a[2*l+1]=o,t.heap[1]=o++,j(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,s=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,o=e.stat_desc.max_length;let h,d,f,c,_,u,g=0;for(c=0;c<=15;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],c=a[2*a[2*d+1]+1]+1,c>o&&(c=o,g++),a[2*d+1]=c,d>i||(t.bl_count[c]++,_=0,d>=l&&(_=n[d-l]),u=a[2*d],t.opt_len+=u*(c+_),r&&(t.static_len+=u*(s[2*d+1]+_)));if(0!==g){do{for(c=o-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[o]--,g-=2}while(g>0);for(c=o;0!==c;c--)for(d=t.bl_count[c];0!==d;)f=t.heap[--h],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),d--)}})(t,e),N(a,h,t.bl_count)},Y=(t,e,a)=>{let i,s,r=-1,n=e[1],l=0,o=7,h=4;for(0===n&&(o=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)s=n,n=e[2*(i+1)+1],++l<o&&s===n||(l<h?t.bl_tree[2*s]+=l:0!==s?(s!==r&&t.bl_tree[2*s]++,t.bl_tree[32]++):l<=10?t.bl_tree[34]++:t.bl_tree[36]++,l=0,r=s,0===n?(o=138,h=3):s===n?(o=6,h=3):(o=7,h=4))},G=(t,e,a)=>{let i,s,r=-1,n=e[1],l=0,o=7,h=4;for(0===n&&(o=138,h=3),i=0;i<=a;i++)if(s=n,n=e[2*(i+1)+1],!(++l<o&&s===n)){if(l<h)do{M(t,s,t.bl_tree)}while(0!=--l);else 0!==s?(s!==r&&(M(t,s,t.bl_tree),l--),M(t,16,t.bl_tree),T(t,l-3,2)):l<=10?(M(t,17,t.bl_tree),T(t,l-3,3)):(M(t,18,t.bl_tree),T(t,l-11,7));l=0,r=s,0===n?(o=138,h=3):s===n?(o=6,h=3):(o=7,h=4)}};let q=!1;const X=(t,e,a,i)=>{T(t,0+(i?1:0),3),((t,e,a,i)=>{H(t),i&&(C(t,a),C(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a})(t,e,a,!0)};var J={_tr_init:t=>{q||((()=>{let t,e,a,i,s;const r=new Array(16);for(a=0,i=0;i<28;i++)for(A[i]=a,t=0;t<1<<k[i];t++)U[a++]=i;for(U[a-1]=i,s=0,i=0;i<16;i++)for(R[i]=s,t=0;t<1<<y[i];t++)E[s++]=i;for(s>>=7;i<30;i++)for(R[i]=s<<7,t=0;t<1<<y[i]-7;t++)E[256+s++]=i;for(e=0;e<=15;e++)r[e]=0;for(t=0;t<=143;)z[2*t+1]=8,t++,r[8]++;for(;t<=255;)z[2*t+1]=9,t++,r[9]++;for(;t<=279;)z[2*t+1]=7,t++,r[7]++;for(;t<=287;)z[2*t+1]=8,t++,r[8]++;for(N(z,287,r),t=0;t<30;t++)S[2*t+1]=5,S[2*t]=L(t,5);I=new B(z,k,257,286,15),F=new B(S,y,0,30,15),D=new B(new Array(0),v,0,19,7)})(),q=!0),t.l_desc=new O(t.dyn_ltree,I),t.d_desc=new O(t.dyn_dtree,F),t.bl_desc=new O(t.bl_tree,D),t.bi_buf=0,t.bi_valid=0,P(t)},_tr_stored_block:X,_tr_flush_block:(t,e,a,i)=>{let s,r,n=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),K(t,t.l_desc),K(t,t.d_desc),n=(t=>{let e;for(Y(t,t.dyn_ltree,t.l_desc.max_code),Y(t,t.dyn_dtree,t.d_desc.max_code),K(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*x[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=a+5,a+4<=s&&-1!==e?X(t,e,a,i):4===t.strategy||r===s?(T(t,2+(i?1:0),3),W(t,z,S)):(T(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(T(t,e-257,5),T(t,a-1,5),T(t,i-4,4),s=0;s<i;s++)T(t,t.bl_tree[2*x[s]+1],3);G(t,t.dyn_ltree,e-1),G(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),W(t,t.dyn_ltree,t.dyn_dtree)),P(t),i&&H(t)},_tr_tally:(t,e,a)=>(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(U[a]+256+1)]++,t.dyn_dtree[2*Z(e)]++),t.last_lit===t.lit_bufsize-1),_tr_align:t=>{T(t,2,3),M(t,256,z),(t=>{16===t.bi_valid?(C(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var Q=(t,e,a,i)=>{let s=65535&t|0,r=t>>>16&65535|0,n=0;for(;0!==a;){n=a>2e3?2e3:a,a-=n;do{s=s+e[i++]|0,r=r+s|0}while(--n);s%=65521,r%=65521}return s|r<<16|0};const V=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var tt=(t,e,a,i)=>{const s=V,r=i+a;t^=-1;for(let a=i;a<r;a++)t=t>>>8^s[255&(t^e[a])];return-1^t},et={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"},at={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_MEM_ERROR:-4,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};const{_tr_init:it,_tr_stored_block:st,_tr_flush_block:rt,_tr_tally:nt,_tr_align:lt}=J,{Z_NO_FLUSH:ot,Z_PARTIAL_FLUSH:ht,Z_FULL_FLUSH:dt,Z_FINISH:ft,Z_BLOCK:ct,Z_OK:_t,Z_STREAM_END:ut,Z_STREAM_ERROR:gt,Z_DATA_ERROR:wt,Z_BUF_ERROR:mt,Z_DEFAULT_COMPRESSION:pt,Z_FILTERED:bt,Z_HUFFMAN_ONLY:kt,Z_RLE:yt,Z_FIXED:vt,Z_DEFAULT_STRATEGY:xt,Z_UNKNOWN:zt,Z_DEFLATED:St}=at,Et=(t,e)=>(t.msg=et[e],e),Ut=t=>(t<<1)-(t>4?9:0),At=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let Rt=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const Bt=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},It=(t,e)=>{rt(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Bt(t.strm)},Ft=(t,e)=>{t.pending_buf[t.pending++]=e},Dt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Ot=(t,e,a,i)=>{let s=t.avail_in;return s>i&&(s=i),0===s?0:(t.avail_in-=s,e.set(t.input.subarray(t.next_in,t.next_in+s),a),1===t.state.wrap?t.adler=Q(t.adler,e,s,a):2===t.state.wrap&&(t.adler=tt(t.adler,e,s,a)),t.next_in+=s,t.total_in+=s,s)},Zt=(t,e)=>{let a,i,s=t.max_chain_length,r=t.strstart,n=t.prev_length,l=t.nice_match;const o=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,f=t.prev,c=t.strstart+258;let _=h[r+n-1],u=h[r+n];t.prev_length>=t.good_match&&(s>>=2),l>t.lookahead&&(l=t.lookahead);do{if(a=e,h[a+n]===u&&h[a+n-1]===_&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<c);if(i=258-(c-r),r=c-258,i>n){if(t.match_start=e,n=i,i>=l)break;_=h[r+n-1],u=h[r+n]}}}while((e=f[e&d])>o&&0!=--s);return n<=t.lookahead?n:t.lookahead},Ct=t=>{const e=t.w_size;let a,i,s,r,n;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,i=t.hash_size,a=i;do{s=t.head[--a],t.head[a]=s>=e?s-e:0}while(--i);i=e,a=i;do{s=t.prev[--a],t.prev[a]=s>=e?s-e:0}while(--i);r+=e}if(0===t.strm.avail_in)break;if(i=Ot(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=i,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=Rt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=Rt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},Tt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(Ct(t),t.lookahead<262&&e===ot)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=nt(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+1]);else i=nt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2},Mt=(t,e)=>{let a,i,s;for(;;){if(t.lookahead<262){if(Ct(t),t.lookahead<262&&e===ot)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=Zt(t,a),t.match_length<=5&&(t.strategy===bt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){s=t.strstart+t.lookahead-3,i=nt(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=s&&(t.ins_h=Rt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(It(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=nt(t,0,t.window[t.strstart-1]),i&&It(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=nt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2};function Lt(t,e,a,i,s){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=s}const Nt=[new Lt(0,0,0,0,((t,e)=>{let a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Ct(t),0===t.lookahead&&e===ot)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,It(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-262&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(It(t,!1),t.strm.avail_out),1)})),new Lt(4,4,8,4,Tt),new Lt(4,5,16,8,Tt),new Lt(4,6,32,32,Tt),new Lt(4,4,16,16,Mt),new Lt(8,16,32,32,Mt),new Lt(8,16,128,128,Mt),new Lt(8,32,128,256,Mt),new Lt(32,128,258,1024,Mt),new Lt(32,258,258,4096,Mt)];function Pt(){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=St,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 Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),At(this.dyn_ltree),At(this.dyn_dtree),At(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),At(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),At(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}const Ht=t=>{if(!t||!t.state)return Et(t,gt);t.total_in=t.total_out=0,t.data_type=zt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=ot,it(e),_t},$t=t=>{const e=Ht(t);var a;return e===_t&&((a=t.state).window_size=2*a.w_size,At(a.head),a.max_lazy_match=Nt[a.level].max_lazy,a.good_match=Nt[a.level].good_length,a.nice_match=Nt[a.level].nice_length,a.max_chain_length=Nt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},jt=(t,e,a,i,s,r)=>{if(!t)return gt;let n=1;if(e===pt&&(e=6),i<0?(n=0,i=-i):i>15&&(n=2,i-=16),s<1||s>9||a!==St||i<8||i>15||e<0||e>9||r<0||r>vt)return Et(t,gt);8===i&&(i=9);const l=new Pt;return t.state=l,l.strm=t,l.wrap=n,l.gzhead=null,l.w_bits=i,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=s+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+3-1)/3),l.window=new Uint8Array(2*l.w_size),l.head=new Uint16Array(l.hash_size),l.prev=new Uint16Array(l.w_size),l.lit_bufsize=1<<s+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new Uint8Array(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=e,l.strategy=r,l.method=a,$t(t)};var Wt={deflateInit:(t,e)=>jt(t,e,St,15,8,xt),deflateInit2:jt,deflateReset:$t,deflateResetKeep:Ht,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?gt:(t.state.gzhead=e,_t):gt,deflate:(t,e)=>{let a,i;if(!t||!t.state||e>ct||e<0)return t?Et(t,gt):gt;const s=t.state;if(!t.output||!t.input&&0!==t.avail_in||666===s.status&&e!==ft)return Et(t,0===t.avail_out?mt:gt);s.strm=t;const r=s.last_flush;if(s.last_flush=e,42===s.status)if(2===s.wrap)t.adler=0,Ft(s,31),Ft(s,139),Ft(s,8),s.gzhead?(Ft(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),Ft(s,255&s.gzhead.time),Ft(s,s.gzhead.time>>8&255),Ft(s,s.gzhead.time>>16&255),Ft(s,s.gzhead.time>>24&255),Ft(s,9===s.level?2:s.strategy>=kt||s.level<2?4:0),Ft(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(Ft(s,255&s.gzhead.extra.length),Ft(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(t.adler=tt(t.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=69):(Ft(s,0),Ft(s,0),Ft(s,0),Ft(s,0),Ft(s,0),Ft(s,9===s.level?2:s.strategy>=kt||s.level<2?4:0),Ft(s,3),s.status=113);else{let e=St+(s.w_bits-8<<4)<<8,a=-1;a=s.strategy>=kt||s.level<2?0:s.level<6?1:6===s.level?2:3,e|=a<<6,0!==s.strstart&&(e|=32),e+=31-e%31,s.status=113,Dt(s,e),0!==s.strstart&&(Dt(s,t.adler>>>16),Dt(s,65535&t.adler)),t.adler=1}if(69===s.status)if(s.gzhead.extra){for(a=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),Bt(t),a=s.pending,s.pending!==s.pending_buf_size));)Ft(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=73)}else s.status=73;if(73===s.status)if(s.gzhead.name){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),Bt(t),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.name.length?255&s.gzhead.name.charCodeAt(s.gzindex++):0,Ft(s,i)}while(0!==i);s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.gzindex=0,s.status=91)}else s.status=91;if(91===s.status)if(s.gzhead.comment){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),Bt(t),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.comment.length?255&s.gzhead.comment.charCodeAt(s.gzindex++):0,Ft(s,i)}while(0!==i);s.gzhead.hcrc&&s.pending>a&&(t.adler=tt(t.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.status=103)}else s.status=103;if(103===s.status&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&Bt(t),s.pending+2<=s.pending_buf_size&&(Ft(s,255&t.adler),Ft(s,t.adler>>8&255),t.adler=0,s.status=113)):s.status=113),0!==s.pending){if(Bt(t),0===t.avail_out)return s.last_flush=-1,_t}else if(0===t.avail_in&&Ut(e)<=Ut(r)&&e!==ft)return Et(t,mt);if(666===s.status&&0!==t.avail_in)return Et(t,mt);if(0!==t.avail_in||0!==s.lookahead||e!==ot&&666!==s.status){let a=s.strategy===kt?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ct(t),0===t.lookahead)){if(e===ot)return 1;break}if(t.match_length=0,a=nt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2})(s,e):s.strategy===yt?((t,e)=>{let a,i,s,r;const n=t.window;for(;;){if(t.lookahead<=258){if(Ct(t),t.lookahead<=258&&e===ot)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(s=t.strstart-1,i=n[s],i===n[++s]&&i===n[++s]&&i===n[++s])){r=t.strstart+258;do{}while(i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&s<r);t.match_length=258-(r-s),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=nt(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=nt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(It(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===ft?(It(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(It(t,!1),0===t.strm.avail_out)?1:2})(s,e):Nt[s.level].func(s,e);if(3!==a&&4!==a||(s.status=666),1===a||3===a)return 0===t.avail_out&&(s.last_flush=-1),_t;if(2===a&&(e===ht?lt(s):e!==ct&&(st(s,0,0,!1),e===dt&&(At(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),Bt(t),0===t.avail_out))return s.last_flush=-1,_t}return e!==ft?_t:s.wrap<=0?ut:(2===s.wrap?(Ft(s,255&t.adler),Ft(s,t.adler>>8&255),Ft(s,t.adler>>16&255),Ft(s,t.adler>>24&255),Ft(s,255&t.total_in),Ft(s,t.total_in>>8&255),Ft(s,t.total_in>>16&255),Ft(s,t.total_in>>24&255)):(Dt(s,t.adler>>>16),Dt(s,65535&t.adler)),Bt(t),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?_t:ut)},deflateEnd:t=>{if(!t||!t.state)return gt;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&103!==e&&113!==e&&666!==e?Et(t,gt):(t.state=null,113===e?Et(t,wt):_t)},deflateSetDictionary:(t,e)=>{let a=e.length;if(!t||!t.state)return gt;const i=t.state,s=i.wrap;if(2===s||1===s&&42!==i.status||i.lookahead)return gt;if(1===s&&(t.adler=Q(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===s&&(At(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const r=t.avail_in,n=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ct(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=Rt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ct(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=n,t.input=l,t.avail_in=r,i.wrap=s,_t},deflateInfo:"pako deflate (from Nodeca project)"};const Kt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Yt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Kt(a,e)&&(t[e]=a[e])}}return t},Gt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,s=t.length;e<s;e++){let s=t[e];a.set(s,i),i+=s.length}return a};let qt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){qt=!1}const Xt=new Uint8Array(256);for(let t=0;t<256;t++)Xt[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Xt[254]=Xt[254]=1;var Jt=t=>{let e,a,i,s,r,n=t.length,l=0;for(s=0;s<n;s++)a=t.charCodeAt(s),55296==(64512&a)&&s+1<n&&(i=t.charCodeAt(s+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),s++)),l+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(l),r=0,s=0;r<l;s++)a=t.charCodeAt(s),55296==(64512&a)&&s+1<n&&(i=t.charCodeAt(s+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),s++)),a<128?e[r++]=a:a<2048?(e[r++]=192|a>>>6,e[r++]=128|63&a):a<65536?(e[r++]=224|a>>>12,e[r++]=128|a>>>6&63,e[r++]=128|63&a):(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63,e[r++]=128|a>>>6&63,e[r++]=128|63&a);return e},Qt=(t,e)=>{let a,i;const s=e||t.length,r=new Array(2*s);for(i=0,a=0;a<s;){let e=t[a++];if(e<128){r[i++]=e;continue}let n=Xt[e];if(n>4)r[i++]=65533,a+=n-1;else{for(e&=2===n?31:3===n?15:7;n>1&&a<s;)e=e<<6|63&t[a++],n--;n>1?r[i++]=65533:e<65536?r[i++]=e:(e-=65536,r[i++]=55296|e>>10&1023,r[i++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&qt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(r,i)},Vt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Xt[t[a]]>e?a:e};var te=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};const ee=Object.prototype.toString,{Z_NO_FLUSH:ae,Z_SYNC_FLUSH:ie,Z_FULL_FLUSH:se,Z_FINISH:re,Z_OK:ne,Z_STREAM_END:le,Z_DEFAULT_COMPRESSION:oe,Z_DEFAULT_STRATEGY:he,Z_DEFLATED:de}=at;function fe(t){this.options=Yt({level:oe,method:de,chunkSize:16384,windowBits:15,memLevel:8,strategy:he},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new te,this.strm.avail_out=0;let a=Wt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ne)throw new Error(et[a]);if(e.header&&Wt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Jt(e.dictionary):"[object ArrayBuffer]"===ee.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Wt.deflateSetDictionary(this.strm,t),a!==ne)throw new Error(et[a]);this._dict_set=!0}}function ce(t,e){const a=new fe(e);if(a.push(t,!0),a.err)throw a.msg||et[a.err];return a.result}fe.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let s,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?re:ae,"string"==typeof t?a.input=Jt(t):"[object ArrayBuffer]"===ee.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(r===ie||r===se)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(s=Wt.deflate(a,r),s===le)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),s=Wt.deflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===ne;if(0!==a.avail_out){if(r>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},fe.prototype.onData=function(t){this.chunks.push(t)},fe.prototype.onEnd=function(t){t===ne&&(this.result=Gt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var _e={Deflate:fe,deflate:ce,deflateRaw:function(t,e){return(e=e||{}).raw=!0,ce(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,ce(t,e)},constants:at};var ue=function(t,e){let a,i,s,r,n,l,o,h,d,f,c,_,u,g,w,m,p,b,k,y,v,x,z,S;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),s=t.next_out,S=t.output,r=s-(e-t.avail_out),n=s+(t.avail_out-257),l=E.dmax,o=E.wsize,h=E.whave,d=E.wnext,f=E.window,c=E.hold,_=E.bits,u=E.lencode,g=E.distcode,w=(1<<E.lenbits)-1,m=(1<<E.distbits)-1;t:do{_<15&&(c+=z[a++]<<_,_+=8,c+=z[a++]<<_,_+=8),p=u[c&w];e:for(;;){if(b=p>>>24,c>>>=b,_-=b,b=p>>>16&255,0===b)S[s++]=65535&p;else{if(!(16&b)){if(0==(64&b)){p=u[(65535&p)+(c&(1<<b)-1)];continue e}if(32&b){E.mode=12;break t}t.msg="invalid literal/length code",E.mode=30;break t}k=65535&p,b&=15,b&&(_<b&&(c+=z[a++]<<_,_+=8),k+=c&(1<<b)-1,c>>>=b,_-=b),_<15&&(c+=z[a++]<<_,_+=8,c+=z[a++]<<_,_+=8),p=g[c&m];a:for(;;){if(b=p>>>24,c>>>=b,_-=b,b=p>>>16&255,!(16&b)){if(0==(64&b)){p=g[(65535&p)+(c&(1<<b)-1)];continue a}t.msg="invalid distance code",E.mode=30;break t}if(y=65535&p,b&=15,_<b&&(c+=z[a++]<<_,_+=8,_<b&&(c+=z[a++]<<_,_+=8)),y+=c&(1<<b)-1,y>l){t.msg="invalid distance too far back",E.mode=30;break t}if(c>>>=b,_-=b,b=s-r,y>b){if(b=y-b,b>h&&E.sane){t.msg="invalid distance too far back",E.mode=30;break t}if(v=0,x=f,0===d){if(v+=o-b,b<k){k-=b;do{S[s++]=f[v++]}while(--b);v=s-y,x=S}}else if(d<b){if(v+=o+d-b,b-=d,b<k){k-=b;do{S[s++]=f[v++]}while(--b);if(v=0,d<k){b=d,k-=b;do{S[s++]=f[v++]}while(--b);v=s-y,x=S}}}else if(v+=d-b,b<k){k-=b;do{S[s++]=f[v++]}while(--b);v=s-y,x=S}for(;k>2;)S[s++]=x[v++],S[s++]=x[v++],S[s++]=x[v++],k-=3;k&&(S[s++]=x[v++],k>1&&(S[s++]=x[v++]))}else{v=s-y;do{S[s++]=S[v++],S[s++]=S[v++],S[s++]=S[v++],k-=3}while(k>2);k&&(S[s++]=S[v++],k>1&&(S[s++]=S[v++]))}break}}break}}while(a<i&&s<n);k=_>>3,a-=k,_-=k<<3,c&=(1<<_)-1,t.next_in=a,t.next_out=s,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=s<n?n-s+257:257-(s-n),E.hold=c,E.bits=_};const ge=new Uint16Array([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]),we=new Uint8Array([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]),me=new Uint16Array([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]),pe=new Uint8Array([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]);var be=(t,e,a,i,s,r,n,l)=>{const o=l.bits;let h,d,f,c,_,u,g=0,w=0,m=0,p=0,b=0,k=0,y=0,v=0,x=0,z=0,S=null,E=0;const U=new Uint16Array(16),A=new Uint16Array(16);let R,B,I,F=null,D=0;for(g=0;g<=15;g++)U[g]=0;for(w=0;w<i;w++)U[e[a+w]]++;for(b=o,p=15;p>=1&&0===U[p];p--);if(b>p&&(b=p),0===p)return s[r++]=20971520,s[r++]=20971520,l.bits=1,0;for(m=1;m<p&&0===U[m];m++);for(b<m&&(b=m),v=1,g=1;g<=15;g++)if(v<<=1,v-=U[g],v<0)return-1;if(v>0&&(0===t||1!==p))return-1;for(A[1]=0,g=1;g<15;g++)A[g+1]=A[g]+U[g];for(w=0;w<i;w++)0!==e[a+w]&&(n[A[e[a+w]]++]=w);if(0===t?(S=F=n,u=19):1===t?(S=ge,E-=257,F=we,D-=257,u=256):(S=me,F=pe,u=-1),z=0,w=0,g=m,_=r,k=b,y=0,f=-1,x=1<<b,c=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){R=g-y,n[w]<u?(B=0,I=n[w]):n[w]>u?(B=F[D+n[w]],I=S[E+n[w]]):(B=96,I=0),h=1<<g-y,d=1<<k,m=d;do{d-=h,s[_+(z>>y)+d]=R<<24|B<<16|I|0}while(0!==d);for(h=1<<g-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,w++,0==--U[g]){if(g===p)break;g=e[a+n[w]]}if(g>b&&(z&c)!==f){for(0===y&&(y=b),_+=m,k=g-y,v=1<<k;k+y<p&&(v-=U[k+y],!(v<=0));)k++,v<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;f=z&c,s[f]=b<<24|k<<16|_-r|0}}return 0!==z&&(s[_+z]=g-y<<24|64<<16|0),l.bits=b,0};const{Z_FINISH:ke,Z_BLOCK:ye,Z_TREES:ve,Z_OK:xe,Z_STREAM_END:ze,Z_NEED_DICT:Se,Z_STREAM_ERROR:Ee,Z_DATA_ERROR:Ue,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Re,Z_DEFLATED:Be}=at,Ie=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Fe(){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 Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const De=t=>{if(!t||!t.state)return Ee;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,xe},Oe=t=>{if(!t||!t.state)return Ee;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,De(t)},Ze=(t,e)=>{let a;if(!t||!t.state)return Ee;const i=t.state;return e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Ee:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,Oe(t))},Ce=(t,e)=>{if(!t)return Ee;const a=new Fe;t.state=a,a.window=null;const i=Ze(t,e);return i!==xe&&(t.state=null),i};let Te,Me,Le=!0;const Ne=t=>{if(Le){Te=new Int32Array(512),Me=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(be(1,t.lens,0,288,Te,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;be(2,t.lens,0,32,Me,0,t.work,{bits:5}),Le=!1}t.lencode=Te,t.lenbits=9,t.distcode=Me,t.distbits=5},Pe=(t,e,a,i)=>{let s;const r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),i>=r.wsize?(r.window.set(e.subarray(a-r.wsize,a),0),r.wnext=0,r.whave=r.wsize):(s=r.wsize-r.wnext,s>i&&(s=i),r.window.set(e.subarray(a-i,a-i+s),r.wnext),(i-=s)?(r.window.set(e.subarray(a-i,a),0),r.wnext=i,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=s))),0};var He={inflateReset:Oe,inflateReset2:Ze,inflateResetKeep:De,inflateInit:t=>Ce(t,15),inflateInit2:Ce,inflate:(t,e)=>{let a,i,s,r,n,l,o,h,d,f,c,_,u,g,w,m,p,b,k,y,v,x,z=0;const S=new Uint8Array(4);let E,U;const A=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return Ee;a=t.state,12===a.mode&&(a.mode=13),n=t.next_out,s=t.output,o=t.avail_out,r=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,f=l,c=o,x=xe;t:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(2&a.wrap&&35615===h){a.check=0,S[0]=255&h,S[1]=h>>>8&255,a.check=tt(a.check,S,2,0),h=0,d=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=30;break}if((15&h)!==Be){t.msg="unknown compression method",a.mode=30;break}if(h>>>=4,d-=4,v=8+(15&h),0===a.wbits)a.wbits=v;else if(v>a.wbits){t.msg="invalid window size",a.mode=30;break}a.dmax=1<<a.wbits,t.adler=a.check=1,a.mode=512&h?10:12,h=0,d=0;break;case 2:for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==Be){t.msg="unknown compression method",a.mode=30;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=30;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=tt(a.check,S,2,0)),h=0,d=0,a.mode=3;case 3:for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,S[2]=h>>>16&255,S[3]=h>>>24&255,a.check=tt(a.check,S,4,0)),h=0,d=0,a.mode=4;case 4:for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=tt(a.check,S,2,0)),h=0,d=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=tt(a.check,S,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(_=a.length,_>l&&(_=l),_&&(a.head&&(v=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(r,r+_),v)),512&a.flags&&(a.check=tt(a.check,i,_,r)),l-=_,r+=_,a.length-=_),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===l)break t;_=0;do{v=i[r+_++],a.head&&v&&a.length<65536&&(a.head.name+=String.fromCharCode(v))}while(v&&_<l);if(512&a.flags&&(a.check=tt(a.check,i,_,r)),l-=_,r+=_,v)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===l)break t;_=0;do{v=i[r+_++],a.head&&v&&a.length<65536&&(a.head.comment+=String.fromCharCode(v))}while(v&&_<l);if(512&a.flags&&(a.check=tt(a.check,i,_,r)),l-=_,r+=_,v)break t}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;d<16;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=30;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=12;break;case 10:for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}t.adler=a.check=Ie(h),h=0,d=0,a.mode=11;case 11:if(0===a.havedict)return t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,Se;t.adler=a.check=1,a.mode=12;case 12:if(e===ye||e===ve)break t;case 13:if(a.last){h>>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=14;break;case 1:if(Ne(a),a.mode=20,e===ve){h>>>=2,d-=2;break t}break;case 2:a.mode=17;break;case 3:t.msg="invalid block type",a.mode=30}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&h,h=0,d=0,a.mode=15,e===ve)break t;case 15:a.mode=16;case 16:if(_=a.length,_){if(_>l&&(_=l),_>o&&(_=o),0===_)break t;s.set(i.subarray(r,r+_),n),l-=_,r+=_,o-=_,n+=_,a.length-=_;break}a.mode=12;break;case 17:for(;d<14;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=30;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;d<3;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.lens[A[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[A[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=be(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(p<16)h>>>=w,d-=w,a.lens[a.have++]=p;else{if(16===p){for(U=w+2;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h>>>=w,d-=w,0===a.have){t.msg="invalid bit length repeat",a.mode=30;break}v=a.lens[a.have-1],_=3+(3&h),h>>>=2,d-=2}else if(17===p){for(U=w+3;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=w,d-=w,v=0,_=3+(7&h),h>>>=3,d-=3}else{for(U=w+7;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=w,d-=w,v=0,_=11+(127&h),h>>>=7,d-=7}if(a.have+_>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=30;break}for(;_--;)a.lens[a.have++]=v}}if(30===a.mode)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,E={bits:a.lenbits},x=be(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=be(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=30;break}if(a.mode=20,e===ve)break t;case 20:a.mode=21;case 21:if(l>=6&&o>=258){t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,ue(t,c),n=t.next_out,s=t.output,o=t.avail_out,r=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(m&&0==(240&m)){for(b=w,k=m,y=p;z=a.lencode[y+((h&(1<<b+k)-1)>>b)],w=z>>>24,m=z>>>16&255,p=65535&z,!(b+w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=b,d-=b,a.back+=b}if(h>>>=w,d-=w,a.back+=w,a.length=p,0===m){a.mode=26;break}if(32&m){a.back=-1,a.mode=12;break}if(64&m){t.msg="invalid literal/length code",a.mode=30;break}a.extra=15&m,a.mode=22;case 22:if(a.extra){for(U=a.extra;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;z=a.distcode[h&(1<<a.distbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(0==(240&m)){for(b=w,k=m,y=p;z=a.distcode[y+((h&(1<<b+k)-1)>>b)],w=z>>>24,m=z>>>16&255,p=65535&z,!(b+w<=d);){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}h>>>=b,d-=b,a.back+=b}if(h>>>=w,d-=w,a.back+=w,64&m){t.msg="invalid distance code",a.mode=30;break}a.offset=p,a.extra=15&m,a.mode=24;case 24:if(a.extra){for(U=a.extra;d<U;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===o)break t;if(_=c-o,a.offset>_){if(_=a.offset-_,_>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=30;break}_>a.wnext?(_-=a.wnext,u=a.wsize-_):u=a.wnext-_,_>a.length&&(_=a.length),g=a.window}else g=s,u=n-a.offset,_=a.length;_>o&&(_=o),o-=_,a.length-=_;do{s[n++]=g[u++]}while(--_);0===a.length&&(a.mode=21);break;case 26:if(0===o)break t;s[n++]=a.length,o--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===l)break t;l--,h|=i[r++]<<d,d+=8}if(c-=o,t.total_out+=c,a.total+=c,c&&(t.adler=a.check=a.flags?tt(a.check,s,c,n-c):Q(a.check,s,c,n-c)),c=o,(a.flags?h:Ie(h))!==a.check){t.msg="incorrect data check",a.mode=30;break}h=0,d=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;d<32;){if(0===l)break t;l--,h+=i[r++]<<d,d+=8}if(h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=30;break}h=0,d=0}a.mode=29;case 29:x=ze;break t;case 30:x=Ue;break t;case 31:return Ae;case 32:default:return Ee}return t.next_out=n,t.avail_out=o,t.next_in=r,t.avail_in=l,a.hold=h,a.bits=d,(a.wsize||c!==t.avail_out&&a.mode<30&&(a.mode<27||e!==ke))&&Pe(t,t.output,t.next_out,c-t.avail_out),f-=t.avail_in,c-=t.avail_out,t.total_in+=f,t.total_out+=c,a.total+=c,a.wrap&&c&&(t.adler=a.check=a.flags?tt(a.check,s,c,t.next_out-c):Q(a.check,s,c,t.next_out-c)),t.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0===f&&0===c||e===ke)&&x===xe&&(x=Re),x},inflateEnd:t=>{if(!t||!t.state)return Ee;let e=t.state;return e.window&&(e.window=null),t.state=null,xe},inflateGetHeader:(t,e)=>{if(!t||!t.state)return Ee;const a=t.state;return 0==(2&a.wrap)?Ee:(a.head=e,e.done=!1,xe)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,s,r;return t&&t.state?(i=t.state,0!==i.wrap&&11!==i.mode?Ee:11===i.mode&&(s=1,s=Q(s,e,a,0),s!==i.check)?Ue:(r=Pe(t,e,a,a),r?(i.mode=31,Ae):(i.havedict=1,xe))):Ee},inflateInfo:"pako inflate (from Nodeca project)"};var $e=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};const je=Object.prototype.toString,{Z_NO_FLUSH:We,Z_FINISH:Ke,Z_OK:Ye,Z_STREAM_END:Ge,Z_NEED_DICT:qe,Z_STREAM_ERROR:Xe,Z_DATA_ERROR:Je,Z_MEM_ERROR:Qe}=at;function Ve(t){this.options=Yt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new te,this.strm.avail_out=0;let a=He.inflateInit2(this.strm,e.windowBits);if(a!==Ye)throw new Error(et[a]);if(this.header=new $e,He.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Jt(e.dictionary):"[object ArrayBuffer]"===je.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=He.inflateSetDictionary(this.strm,e.dictionary),a!==Ye)))throw new Error(et[a])}Ve.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,s=this.options.dictionary;let r,n,l;if(this.ended)return!1;for(n=e===~~e?e:!0===e?Ke:We,"[object ArrayBuffer]"===je.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),r=He.inflate(a,n),r===qe&&s&&(r=He.inflateSetDictionary(a,s),r===Ye?r=He.inflate(a,n):r===Je&&(r=qe));a.avail_in>0&&r===Ge&&a.state.wrap>0&&0!==t[a.next_in];)He.inflateReset(a),r=He.inflate(a,n);switch(r){case Xe:case Je:case qe:case Qe:return this.onEnd(r),this.ended=!0,!1}if(l=a.avail_out,a.next_out&&(0===a.avail_out||r===Ge))if("string"===this.options.to){let t=Vt(a.output,a.next_out),e=a.next_out-t,s=Qt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(s)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(r!==Ye||0!==l){if(r===Ge)return r=He.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},Ve.prototype.onData=function(t){this.chunks.push(t)},Ve.prototype.onEnd=function(t){t===Ye&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Gt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:ta,deflate:ea,deflateRaw:aa,gzip:ia}=_e;var sa=ea;class ra extends EventTarget{constructor(t,e,a){super(),this.port=t,this.logger=e,this._parent=a,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.stopReadLoop=!1,this.flashSize=null}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let t,e=await this.readRegister(1073745920),a=w[e];if(void 0===a)throw new Error(`Unknown Chip: Hex: ${s(e,8).toLowerCase()} Number: ${e}`);this.chipName=a.name,this.chipFamily=a.family,this.chipFamily==c?t=1072693328:(this.chipFamily==_||this.chipFamily==u)&&(t=1610719232);for(let e=0;e<4;e++)this._efuses[e]=await this.readRegister(t+4*e);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;!this.stopReadLoop;){const{value:t,done:e}=await this._reader.read();if(e){this._reader.releaseLock();break}t&&0!==t.length&&this._inputBuffer.push(...Array.from(t))}}catch(t){console.error("Read loop got disconnected"),this.connected=!1,this.dispatchEvent(new Event("disconnect"))}this.logger.debug("Finished read loop")}async hardReset(t=!1){this.logger.log("Try hard reset."),await this.port.setSignals({dataTerminalReady:!1,requestToSend:!0}),await this.port.setSignals({dataTerminalReady:t,requestToSend:!1}),await new Promise((t=>setTimeout(t,1e3)))}macAddr(){let t,e=new Array(6).fill(0),a=this._efuses[0],i=this._efuses[1],s=this._efuses[2],r=this._efuses[3];if(this.chipFamily==c){if(0!=r)t=[r>>16&255,r>>8&255,255&r];else if(0==(i>>16&255))t=[24,254,52];else{if(1!=(i>>16&255))throw new Error("Couldnt determine OUI");t=[172,208,116]}e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=i>>8&255,e[4]=255&i,e[5]=a>>24&255}else if(this.chipFamily==_)e[0]=s>>8&255,e[1]=255&s,e[2]=i>>24&255,e[3]=i>>16&255,e[4]=i>>8&255,e[5]=255&i;else{if(this.chipFamily!=u)throw new Error("Unknown chip family");e[0]=s>>8&255,e[1]=255&s,e[2]=i>>24&255,e[3]=i>>16&255,e[4]=i>>8&255,e[5]=255&i}return e}async readRegister(t){this.debug&&this.logger.debug("Reading Register",t);let e=a("I",t),s=(await this.checkCommand(10,e))[0];return i("I",s)[0]}async checkCommand(t,e,a=0,i=3e3){i=Math.min(i,12e5),await this.sendCommand(t,e,a);let[r,n]=await this.getResponse(t,i);if(null===n)throw new Error("Didn't get enough status bytes");let l=0;if(this.IS_STUB||this.chipFamily==c?l=2:[_,u].includes(this.chipFamily)?l=4:[2,4].includes(n.length)&&(l=n.length),n.length<l)throw new Error("Didn't get enough status bytes");let o=n.slice(-l,n.length);if(n=n.slice(0,-l),this.debug&&(this.logger.debug("status",o),this.logger.debug("value",r),this.logger.debug("data",n)),1==o[0])throw 5==o[1]?new Error("Invalid (unsupported) command "+s(t)):new Error("Command failure error code "+s(o[1]));return[r,n]}async sendCommand(e,i,s=0){this._inputBuffer.length=0;let r=[192,0];r.push(e),r=r.concat(a("H",i.length)),r=r.concat(t(a("I",s))),r=r.concat(t(i)),r.push(192),this.debug&&this.logger.debug("Writing "+r.length+" byte"+(1==r.length?"":"s")+":",r),await this.writeToStream(r)}async getResponse(t,e=3e3){let a=[],i=0,s=!1,n=Date.now();for(;Date.now()-n<e;){if(this._inputBuffer.length>0){let t=this._inputBuffer.shift();219==t?s=!0:s?(221==t?a.push(220):220==t?a.push(192):a=a.concat([219,t]),s=!1):a.push(t)}else await r(10);if(a.length>0&&192!=a[0]&&a.shift(),a.length>1&&1!=a[1]&&a.shift(),a.length>2&&a[2]!=t&&a.shift(),a.length>4&&(i=a[3]+(a[4]<<8)),a.length==i+10)break}if(a.length!=i+10)return this.logger.log("Timed out after "+e+" milliseconds"),[null,null];this.debug&&this.logger.debug("Reading "+a.length+" byte"+(1==a.length?"":"s")+":",a);let l=a.slice(5,9),o=a.slice(9,-1);return this.debug&&this.logger.debug("value:",l,"data:",o),[l,o]}async readBuffer(t=3e3){let e=[],a=!1,i=Date.now();for(;Date.now()-i<t;){if(this._inputBuffer.length>0){let t=this._inputBuffer.shift();219==t?a=!0:a?(221==t?e.push(220):220==t?e.push(192):e=e.concat([219,t]),a=!1):e.push(t)}else await r(10);if(e.length>0&&192!=e[0]&&e.shift(),e.length>1&&192==e[e.length-1])break}if(e.length<2)return this.logger.log("Timed out after "+t+" milliseconds"),null;this.debug&&this.logger.debug("Reading "+e.length+" byte"+(1==e.length?"":"s")+":",e);let s=e.slice(1,-1);return this.debug&&this.logger.debug("data:",s),s}checksum(t,e=239){for(let a of t)e^=a;return e}async setBaudrate(t){if(this.chipFamily==c)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+t+"...");try{let e=a("<II",t,this.IS_STUB?115200:0);await this.checkCommand(15,e)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(t):await this.reconfigurePort(t)}async reconfigurePort(t){var e,a;try{this.stopReadLoop=!0,await(null===(e=this._reader)||void 0===e?void 0:e.cancel()),null===(a=this._reader)||void 0===a||a.releaseLock(),await this.port.close(),await this.port.open({baudRate:t}),this.stopReadLoop=!1,this.readLoop(),this.logger.log(`Changed baud rate to ${t}`)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: ${e}`)}}async sync(){for(let t=0;t<5;t++){if(await this._sync())return await r(100),!0;await r(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,f);for(let t=0;t<8;t++){let[t,e]=await this.getResponse(8,100);if(null!==e&&(e.length>1&&0==e[0]&&0==e[1]))return!0}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(t,e,a=0,i=!1){this.updateImageFlashParams(a,t);let r,n=t.byteLength,l=0;i?(r=sa(new Uint8Array(t),{level:9}).buffer,l=r.byteLength,this.logger.log(`Writing data with filesize: ${n}. Compressed Size: ${l}`),await this.flashDeflBegin(n,l,a)):(this.logger.log(`Writing data with filesize: ${n}`),r=t,await this.flashBegin(n,a));let o=[],h=0,d=0,f=0,c=Date.now(),_=this.getFlashWriteSize(),u=i?l:n;for(;u-f>0;)this.debug&&this.logger.log(`Writing at ${s(a+h*_,8)} `),u-f>=_?o=Array.from(new Uint8Array(r,f,_)):(o=Array.from(new Uint8Array(r,f,u-f)),i||(o=o.concat(new Array(_-o.length).fill(255)))),i?await this.flashDeflBlock(o,h,2e3):await this.flashBlock(o,h,2e3),h+=1,d+=i?Math.round(o.length*n/l):o.length,f+=_,e(d,u);this.logger.log("Took "+(Date.now()-c)+"ms to write "+u+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),i?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(t,e,i=100){await this.checkCommand(3,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t),i)}async flashDeflBlock(t,e,i=100){await this.checkCommand(17,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async flashBegin(t=0,e=0,i=!1){let r,n,l=this.getFlashWriteSize();[_,u].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0)),this.chipFamily==_&&(n=a("<IIIIII",0,this._flashsize,65536,4096,256,65535),await this.checkCommand(11,n));let o,h=Math.floor((t+l-1)/l);r=this.chipFamily==c?this.getEraseSize(e,t):t,o=this.IS_STUB?3e3:m(3e4,t);let d=Date.now();return n=a("<IIII",r,h,l,e),this.chipFamily==u&&(n=n.concat(a("<I",i?1:0))),this.logger.log("Erase size "+r+", blocks "+h+", block size "+l+", offset "+s(e,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,n,0,o),0==t||this.IS_STUB||this.logger.log("Took "+(Date.now()-d)+"ms to erase "+h+" bytes"),h}async flashDeflBegin(t=0,e=0,i=0,s=!1){let r,n=this.getFlashWriteSize(),l=Math.floor((e+n-1)/n),o=Math.floor((t+n-1)/n),h=0,d=0;return this.IS_STUB?(h=t,d=3e3):(h=o*n,d=m(3e4,h)),r=a("<IIII",h,l,n,i),await this.checkCommand(16,r,0,d),l}async flashFinish(){let t=a("<I",1);await this.checkCommand(4,t)}async flashDeflFinish(){let t=a("<I",1);await this.checkCommand(18,t)}getBootloaderOffset(){var t;return this.chipFamily==_||(null===(t=this._parent)||void 0===t?void 0:t.chipFamily)==_?4096:0}updateImageFlashParams(t,e){if(e.byteLength<8)return e;var i=Array.from(new Uint8Array(e,0,4));let r=i[0],d=i[2],f=i[3];if(this.logger.debug(`Image header, Magic=${s(r)}, FlashMode=${s(d)}, FlashSizeFreq=${s(f)}`),t!=this.getBootloaderOffset())return e;if(233!=r)return this.logger.log("Warning: Image file at %s doesn't look like an image file, so not changing any flash settings.",s(t,4)),e;this.logger.log("Image being flashed is a bootloader");let w=o,m=h,p=(t=>{switch(t){case _:case u:return l;case c:return n;case g:return l;default:return n}})(this.getChipFamily())[this.flashSize?this.flashSize:"4MB"],b=a("BB",w,p+m),k=new Uint8Array(e,2,2);return b[0]!=k[0]||b[1]!=k[1]?(k[0]=b[0],k[1]=b[1],this.logger.log(`Patching Flash parameters header bytes to ${s(b[0],2)} ${s(b[1],2)}`)):this.logger.log("Flash parameters header did not need patching."),e}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(t,e,i=4294967295,s=0,r=0){let n=a("<IIII",t,e,i,s);r>0&&n.concat(a("<IIII",(t=>{switch(t){case _:case u:case c:return 1610612856;default:return-1}})(this.getChipFamily()),0,0,r)),await this.checkCommand(9,n)}async setDataLengths(t,e,a){if(-1!=t.mosiDlenOffs){let i=t.regBase+t.mosiDlenOffs,s=t.regBase+t.misoDlenOffs;e>0&&await this.writeRegister(i,e-1),a>0&&await this.writeRegister(s,a-1)}else{let i=t.regBase+t.usr1Offs,s=(0==a?0:a-1)<<8|(0==e?0:e-1)<<17;await this.writeRegister(i,s)}}async waitDone(t,e){for(let a=0;a<10;a++){if(0==(await this.readRegister(t)&e))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(t,e,a=0){let r=(t=>{switch(t){case _:case u:return{regBase:1072963584,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128};case c:return{regBase:1610613248,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64};case g:return{regBase:1610620928,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88};default:return{regBase:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1}}})(this.getChipFamily()),n=r.regBase,l=n+0,o=n+r.usrOffs,h=n+r.usr2Offs,d=n+r.w0Offs,f=1<<18;if(a>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let w=8*e.length,m=await this.readRegister(o),p=await this.readRegister(h),b=1<<31;if(a>0&&(b|=268435456),w>0&&(b|=134217728),await this.setDataLengths(r,w,a),await this.writeRegister(o,b),await this.writeRegister(h,7<<28|t),0==w)await this.writeRegister(d,0);else{e.concat(new Array(e.length%4).fill(0));let t=i("I".repeat(Math.floor(e.length/4)),e),a=d;this.logger.debug(`Words Length: ${t.length}`);for(const e of t)this.logger.debug(`Writing word ${s(e)} to register offset ${s(a)}`),await this.writeRegister(a,e),a+=4}await this.writeRegister(l,f),await this.waitDone(l,f);let k=await this.readRegister(d);return await this.writeRegister(o,m),await this.writeRegister(h,p),k}async detectFlashSize(){this.logger.log("Detecting Flash Size");let t=await this.flashId(),e=255&t,a=t>>16&255;this.logger.debug(`FlashId: ${s(t)}`),this.logger.log(`Flash Manufacturer: ${e.toString(16)}`),this.logger.log(`Flash Device: ${(t>>8&255).toString(16)}${a.toString(16)}`),this.flashSize=d[a],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(t,e){let a=4096,i=Math.floor((e+a-1)/a),s=16-Math.floor(t/a)%16;return i<s&&(s=i),i<2*s?Math.floor((i+1)/2*a):(i-s)*a}async memBegin(t,e,i,s){return await this.checkCommand(5,a("<IIII",t,e,i,s))}async memBlock(t,e){return await this.checkCommand(7,a("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async memFinish(t=0){let e=this.IS_STUB?3e3:50,i=a("<II",0==t?1:0,t);return await this.checkCommand(6,i,0,e)}async runStub(){const t=await p(this.chipFamily);let e=2048;this.logger.log("Uploading stub...");for(let a of["text","data"])if(Object.keys(t).includes(a)){let i=t[a+"_start"],s=t[a].length,r=Math.floor((s+e-1)/e);await this.memBegin(s,r,e,i);for(let i of Array(r).keys()){let r=i*e,n=r+e;n>s&&(n=s),await this.memBlock(t[a].slice(r,n),i)}}this.logger.log("Running stub..."),await this.memFinish(t.entry);const a=await this.readBuffer(100),i=String.fromCharCode(...a);if("OHAI"!=i)throw new Error("Failed to start stub. Unexpected response: "+i);this.logger.log("Stub is now running...");const s=new na(this.port,this.logger,this);return await s.detectFlashSize(),s}async writeToStream(t){const e=this.port.writable.getWriter();await e.write(new Uint8Array(t));try{e.releaseLock()}catch(t){console.error("Ignoring release lock error",t)}}async disconnect(){this._parent?await this._parent.disconnect():(this._reader&&await this._reader.cancel(),await this.port.writable.getWriter().close(),await this.port.close(),this.connected=!1)}}class na extends ra{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(t,e,a,i){let r=await p(this.chipFamily),n=i,l=i+t;console.log(n,l),console.log(r.data_start,r.data.length,r.text_start,r.text.length);for(let[t,e]of[[r.data_start,r.data_start+r.data.length],[r.text_start,r.text_start+r.text.length]])if(n<e&&l>t)throw new Error("Software loader is resident at "+s(t,8)+"-"+s(e,8)+". Can't load binary at overlapping address range "+s(n,8)+"-"+s(l,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,6e5)}}const la=async t=>{const e=await navigator.serial.requestPort();return t.log("Connecting..."),await e.open({baudRate:115200}),t.log("Connected successfully."),new ra(e,t)};export{_ as CHIP_FAMILY_ESP32,g as CHIP_FAMILY_ESP32C3,u as CHIP_FAMILY_ESP32S2,c as CHIP_FAMILY_ESP8266,ra as ESPLoader,la as connect};
const t=t=>{let e=[];for(let a=0;a<t.length;a++){let i=t.charCodeAt(a);i<=255&&e.push(i)}return e},e=t=>"["+t.map((t=>a(t))).join(", ")+"]",a=(t,e=2)=>{let a=t.toString(16).toUpperCase();return a.startsWith("-")?"-0x"+a.substring(1).padStart(e,"0"):"0x"+a.padStart(e,"0")},i=t=>new Promise((e=>setTimeout(e,t))),s={"512KB":0,"256KB":16,"1MB":32,"2MB":48,"4MB":64,"2MB-c1":80,"4MB-c1":96,"8MB":128,"16MB":144},r={"1MB":0,"2MB":16,"4MB":32,"8MB":48,"16MB":64,"32MB":25,"64MB":26},n=2,o=0,l={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},h=t(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),d=33382,f=50,c=12882,_=12835,u={4293968129:{name:"ESP8266",family:d},15736195:{name:"ESP32",family:f},1990:{name:"ESP32-S2",family:c},9:{name:"ESP32-S3",family:12883},3942662454:{name:"ESP32-S3(beta2)",family:12883},1763790959:{name:"ESP32-C3",family:_},456216687:{name:"ESP32-C3",family:_},3391540258:{name:"ESP32-H2",family:12914},228687983:{name:"ESP32-C6(beta)",family:12838}},g=(t,e)=>{let a=Math.floor(t*(e/486));return a<3e3?3e3:a};class w extends Error{constructor(t){super(t),this.name="SlipReadError"}}const m=async e=>{let a;return e==f?a=await import("./esp32-8ce24020.js"):e==c?a=await import("./esp32s2-a3cfaf84.js"):e==d?a=await import("./esp8266-03e6752c.js"):e==_&&(a=await import("./esp32c3-a57b2c5e.js")),{...a,text:t(atob(a.text)),data:t(atob(a.data))}};function p(t){let e=t.length;for(;--e>=0;)t[e]=0}const b=new Uint8Array([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]),y=new Uint8Array([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]),k=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),v=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),x=new Array(576);p(x);const z=new Array(60);p(z);const S=new Array(512);p(S);const U=new Array(256);p(U);const E=new Array(29);p(E);const I=new Array(30);function A(t,e,a,i,s){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=s,this.has_stree=t&&t.length}let R,B,D;function F(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}p(I);const O=t=>t<256?S[t]:S[256+(t>>>7)],T=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},Z=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,T(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},C=(t,e,a)=>{Z(t,a[2*e],a[2*e+1])},M=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},L=(t,e,a)=>{const i=new Array(16);let s,r,n=0;for(s=1;s<=15;s++)i[s]=n=n+a[s-1]<<1;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=M(i[e]++,e))}},N=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},P=t=>{t.bi_valid>8?T(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},H=(t,e,a,i)=>{const s=2*e,r=2*a;return t[s]<t[r]||t[s]===t[r]&&i[e]<=i[a]},$=(t,e,a)=>{const i=t.heap[a];let s=a<<1;for(;s<=t.heap_len&&(s<t.heap_len&&H(e,t.heap[s+1],t.heap[s],t.depth)&&s++,!H(e,i,t.heap[s],t.depth));)t.heap[a]=t.heap[s],a=s,s<<=1;t.heap[a]=i},j=(t,e,a)=>{let i,s,r,n,o=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],s=t.pending_buf[t.l_buf+o],o++,0===i?C(t,s,e):(r=U[s],C(t,r+256+1,e),n=b[r],0!==n&&(s-=E[r],Z(t,s,n)),i--,r=O(i),C(t,r,a),n=y[r],0!==n&&(i-=I[r],Z(t,i,n)))}while(o<t.last_lit);C(t,256,e)},V=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,n=0;n<r;n++)0!==a[2*n]?(t.heap[++t.heap_len]=h=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,s&&(t.static_len-=i[2*l+1]);for(e.max_code=h,n=t.heap_len>>1;n>=1;n--)$(t,a,n);l=r;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],$(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=o,a[2*l]=a[2*n]+a[2*o],t.depth[l]=(t.depth[n]>=t.depth[o]?t.depth[n]:t.depth[o])+1,a[2*n+1]=a[2*o+1]=l,t.heap[1]=l++,$(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,s=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,f,c,_,u,g=0;for(c=0;c<=15;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],c=a[2*a[2*d+1]+1]+1,c>l&&(c=l,g++),a[2*d+1]=c,d>i||(t.bl_count[c]++,_=0,d>=o&&(_=n[d-o]),u=a[2*d],t.opt_len+=u*(c+_),r&&(t.static_len+=u*(s[2*d+1]+_)));if(0!==g){do{for(c=l-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[l]--,g-=2}while(g>0);for(c=l;0!==c;c--)for(d=t.bl_count[c];0!==d;)f=t.heap[--h],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),d--)}})(t,e),L(a,h,t.bl_count)},W=(t,e,a)=>{let i,s,r=-1,n=e[1],o=0,l=7,h=4;for(0===n&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)s=n,n=e[2*(i+1)+1],++o<l&&s===n||(o<h?t.bl_tree[2*s]+=o:0!==s?(s!==r&&t.bl_tree[2*s]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,r=s,0===n?(l=138,h=3):s===n?(l=6,h=3):(l=7,h=4))},K=(t,e,a)=>{let i,s,r=-1,n=e[1],o=0,l=7,h=4;for(0===n&&(l=138,h=3),i=0;i<=a;i++)if(s=n,n=e[2*(i+1)+1],!(++o<l&&s===n)){if(o<h)do{C(t,s,t.bl_tree)}while(0!=--o);else 0!==s?(s!==r&&(C(t,s,t.bl_tree),o--),C(t,16,t.bl_tree),Z(t,o-3,2)):o<=10?(C(t,17,t.bl_tree),Z(t,o-3,3)):(C(t,18,t.bl_tree),Z(t,o-11,7));o=0,r=s,0===n?(l=138,h=3):s===n?(l=6,h=3):(l=7,h=4)}};let Y=!1;const q=(t,e,a,i)=>{Z(t,0+(i?1:0),3),((t,e,a,i)=>{P(t),i&&(T(t,a),T(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a})(t,e,a,!0)};var G={_tr_init:t=>{Y||((()=>{let t,e,a,i,s;const r=new Array(16);for(a=0,i=0;i<28;i++)for(E[i]=a,t=0;t<1<<b[i];t++)U[a++]=i;for(U[a-1]=i,s=0,i=0;i<16;i++)for(I[i]=s,t=0;t<1<<y[i];t++)S[s++]=i;for(s>>=7;i<30;i++)for(I[i]=s<<7,t=0;t<1<<y[i]-7;t++)S[256+s++]=i;for(e=0;e<=15;e++)r[e]=0;for(t=0;t<=143;)x[2*t+1]=8,t++,r[8]++;for(;t<=255;)x[2*t+1]=9,t++,r[9]++;for(;t<=279;)x[2*t+1]=7,t++,r[7]++;for(;t<=287;)x[2*t+1]=8,t++,r[8]++;for(L(x,287,r),t=0;t<30;t++)z[2*t+1]=5,z[2*t]=M(t,5);R=new A(x,b,257,286,15),B=new A(z,y,0,30,15),D=new A(new Array(0),k,0,19,7)})(),Y=!0),t.l_desc=new F(t.dyn_ltree,R),t.d_desc=new F(t.dyn_dtree,B),t.bl_desc=new F(t.bl_tree,D),t.bi_buf=0,t.bi_valid=0,N(t)},_tr_stored_block:q,_tr_flush_block:(t,e,a,i)=>{let s,r,n=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),V(t,t.l_desc),V(t,t.d_desc),n=(t=>{let e;for(W(t,t.dyn_ltree,t.l_desc.max_code),W(t,t.dyn_dtree,t.d_desc.max_code),V(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*v[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=a+5,a+4<=s&&-1!==e?q(t,e,a,i):4===t.strategy||r===s?(Z(t,2+(i?1:0),3),j(t,x,z)):(Z(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(Z(t,e-257,5),Z(t,a-1,5),Z(t,i-4,4),s=0;s<i;s++)Z(t,t.bl_tree[2*v[s]+1],3);K(t,t.dyn_ltree,e-1),K(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),j(t,t.dyn_ltree,t.dyn_dtree)),N(t),i&&P(t)},_tr_tally:(t,e,a)=>(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(U[a]+256+1)]++,t.dyn_dtree[2*O(e)]++),t.last_lit===t.lit_bufsize-1),_tr_align:t=>{Z(t,2,3),C(t,256,x),(t=>{16===t.bi_valid?(T(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var X=(t,e,a,i)=>{let s=65535&t|0,r=t>>>16&65535|0,n=0;for(;0!==a;){n=a>2e3?2e3:a,a-=n;do{s=s+e[i++]|0,r=r+s|0}while(--n);s%=65521,r%=65521}return s|r<<16|0};const Q=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var J=(t,e,a,i)=>{const s=Q,r=i+a;t^=-1;for(let a=i;a<r;a++)t=t>>>8^s[255&(t^e[a])];return-1^t},tt={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"},et={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_MEM_ERROR:-4,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};const{_tr_init:at,_tr_stored_block:it,_tr_flush_block:st,_tr_tally:rt,_tr_align:nt}=G,{Z_NO_FLUSH:ot,Z_PARTIAL_FLUSH:lt,Z_FULL_FLUSH:ht,Z_FINISH:dt,Z_BLOCK:ft,Z_OK:ct,Z_STREAM_END:_t,Z_STREAM_ERROR:ut,Z_DATA_ERROR:gt,Z_BUF_ERROR:wt,Z_DEFAULT_COMPRESSION:mt,Z_FILTERED:pt,Z_HUFFMAN_ONLY:bt,Z_RLE:yt,Z_FIXED:kt,Z_DEFAULT_STRATEGY:vt,Z_UNKNOWN:xt,Z_DEFLATED:zt}=et,St=(t,e)=>(t.msg=tt[e],e),Ut=t=>(t<<1)-(t>4?9:0),Et=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let It=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const At=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Rt=(t,e)=>{st(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,At(t.strm)},Bt=(t,e)=>{t.pending_buf[t.pending++]=e},Dt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Ft=(t,e,a,i)=>{let s=t.avail_in;return s>i&&(s=i),0===s?0:(t.avail_in-=s,e.set(t.input.subarray(t.next_in,t.next_in+s),a),1===t.state.wrap?t.adler=X(t.adler,e,s,a):2===t.state.wrap&&(t.adler=J(t.adler,e,s,a)),t.next_in+=s,t.total_in+=s,s)},Ot=(t,e)=>{let a,i,s=t.max_chain_length,r=t.strstart,n=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,f=t.prev,c=t.strstart+258;let _=h[r+n-1],u=h[r+n];t.prev_length>=t.good_match&&(s>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+n]===u&&h[a+n-1]===_&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<c);if(i=258-(c-r),r=c-258,i>n){if(t.match_start=e,n=i,i>=o)break;_=h[r+n-1],u=h[r+n]}}}while((e=f[e&d])>l&&0!=--s);return n<=t.lookahead?n:t.lookahead},Tt=t=>{const e=t.w_size;let a,i,s,r,n;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,i=t.hash_size,a=i;do{s=t.head[--a],t.head[a]=s>=e?s-e:0}while(--i);i=e,a=i;do{s=t.prev[--a],t.prev[a]=s>=e?s-e:0}while(--i);r+=e}if(0===t.strm.avail_in)break;if(i=Ft(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=i,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=It(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=It(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},Zt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(Tt(t),t.lookahead<262&&e===ot)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=It(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=Ot(t,a)),t.match_length>=3)if(i=rt(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=It(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=It(t,t.ins_h,t.window[t.strstart+1]);else i=rt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(Rt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===dt?(Rt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Rt(t,!1),0===t.strm.avail_out)?1:2},Ct=(t,e)=>{let a,i,s;for(;;){if(t.lookahead<262){if(Tt(t),t.lookahead<262&&e===ot)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=It(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=Ot(t,a),t.match_length<=5&&(t.strategy===pt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){s=t.strstart+t.lookahead-3,i=rt(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=s&&(t.ins_h=It(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(Rt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=rt(t,0,t.window[t.strstart-1]),i&&Rt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=rt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===dt?(Rt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Rt(t,!1),0===t.strm.avail_out)?1:2};function Mt(t,e,a,i,s){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=s}const Lt=[new Mt(0,0,0,0,((t,e)=>{let a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Tt(t),0===t.lookahead&&e===ot)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,Rt(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-262&&(Rt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===dt?(Rt(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Rt(t,!1),t.strm.avail_out),1)})),new Mt(4,4,8,4,Zt),new Mt(4,5,16,8,Zt),new Mt(4,6,32,32,Zt),new Mt(4,4,16,16,Ct),new Mt(8,16,32,32,Ct),new Mt(8,16,128,128,Ct),new Mt(8,32,128,256,Ct),new Mt(32,128,258,1024,Ct),new Mt(32,258,258,4096,Ct)];function Nt(){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=zt,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 Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Et(this.dyn_ltree),Et(this.dyn_dtree),Et(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Et(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Et(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}const Pt=t=>{if(!t||!t.state)return St(t,ut);t.total_in=t.total_out=0,t.data_type=xt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=ot,at(e),ct},Ht=t=>{const e=Pt(t);var a;return e===ct&&((a=t.state).window_size=2*a.w_size,Et(a.head),a.max_lazy_match=Lt[a.level].max_lazy,a.good_match=Lt[a.level].good_length,a.nice_match=Lt[a.level].nice_length,a.max_chain_length=Lt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},$t=(t,e,a,i,s,r)=>{if(!t)return ut;let n=1;if(e===mt&&(e=6),i<0?(n=0,i=-i):i>15&&(n=2,i-=16),s<1||s>9||a!==zt||i<8||i>15||e<0||e>9||r<0||r>kt)return St(t,ut);8===i&&(i=9);const o=new Nt;return t.state=o,o.strm=t,o.wrap=n,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=s+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<s+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=e,o.strategy=r,o.method=a,Ht(t)};var jt={deflateInit:(t,e)=>$t(t,e,zt,15,8,vt),deflateInit2:$t,deflateReset:Ht,deflateResetKeep:Pt,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?ut:(t.state.gzhead=e,ct):ut,deflate:(t,e)=>{let a,i;if(!t||!t.state||e>ft||e<0)return t?St(t,ut):ut;const s=t.state;if(!t.output||!t.input&&0!==t.avail_in||666===s.status&&e!==dt)return St(t,0===t.avail_out?wt:ut);s.strm=t;const r=s.last_flush;if(s.last_flush=e,42===s.status)if(2===s.wrap)t.adler=0,Bt(s,31),Bt(s,139),Bt(s,8),s.gzhead?(Bt(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),Bt(s,255&s.gzhead.time),Bt(s,s.gzhead.time>>8&255),Bt(s,s.gzhead.time>>16&255),Bt(s,s.gzhead.time>>24&255),Bt(s,9===s.level?2:s.strategy>=bt||s.level<2?4:0),Bt(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(Bt(s,255&s.gzhead.extra.length),Bt(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(t.adler=J(t.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=69):(Bt(s,0),Bt(s,0),Bt(s,0),Bt(s,0),Bt(s,0),Bt(s,9===s.level?2:s.strategy>=bt||s.level<2?4:0),Bt(s,3),s.status=113);else{let e=zt+(s.w_bits-8<<4)<<8,a=-1;a=s.strategy>=bt||s.level<2?0:s.level<6?1:6===s.level?2:3,e|=a<<6,0!==s.strstart&&(e|=32),e+=31-e%31,s.status=113,Dt(s,e),0!==s.strstart&&(Dt(s,t.adler>>>16),Dt(s,65535&t.adler)),t.adler=1}if(69===s.status)if(s.gzhead.extra){for(a=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>a&&(t.adler=J(t.adler,s.pending_buf,s.pending-a,a)),At(t),a=s.pending,s.pending!==s.pending_buf_size));)Bt(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>a&&(t.adler=J(t.adler,s.pending_buf,s.pending-a,a)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=73)}else s.status=73;if(73===s.status)if(s.gzhead.name){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(t.adler=J(t.adler,s.pending_buf,s.pending-a,a)),At(t),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.name.length?255&s.gzhead.name.charCodeAt(s.gzindex++):0,Bt(s,i)}while(0!==i);s.gzhead.hcrc&&s.pending>a&&(t.adler=J(t.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.gzindex=0,s.status=91)}else s.status=91;if(91===s.status)if(s.gzhead.comment){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(t.adler=J(t.adler,s.pending_buf,s.pending-a,a)),At(t),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.comment.length?255&s.gzhead.comment.charCodeAt(s.gzindex++):0,Bt(s,i)}while(0!==i);s.gzhead.hcrc&&s.pending>a&&(t.adler=J(t.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.status=103)}else s.status=103;if(103===s.status&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&At(t),s.pending+2<=s.pending_buf_size&&(Bt(s,255&t.adler),Bt(s,t.adler>>8&255),t.adler=0,s.status=113)):s.status=113),0!==s.pending){if(At(t),0===t.avail_out)return s.last_flush=-1,ct}else if(0===t.avail_in&&Ut(e)<=Ut(r)&&e!==dt)return St(t,wt);if(666===s.status&&0!==t.avail_in)return St(t,wt);if(0!==t.avail_in||0!==s.lookahead||e!==ot&&666!==s.status){let a=s.strategy===bt?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Tt(t),0===t.lookahead)){if(e===ot)return 1;break}if(t.match_length=0,a=rt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Rt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===dt?(Rt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Rt(t,!1),0===t.strm.avail_out)?1:2})(s,e):s.strategy===yt?((t,e)=>{let a,i,s,r;const n=t.window;for(;;){if(t.lookahead<=258){if(Tt(t),t.lookahead<=258&&e===ot)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(s=t.strstart-1,i=n[s],i===n[++s]&&i===n[++s]&&i===n[++s])){r=t.strstart+258;do{}while(i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&s<r);t.match_length=258-(r-s),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=rt(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=rt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Rt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===dt?(Rt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Rt(t,!1),0===t.strm.avail_out)?1:2})(s,e):Lt[s.level].func(s,e);if(3!==a&&4!==a||(s.status=666),1===a||3===a)return 0===t.avail_out&&(s.last_flush=-1),ct;if(2===a&&(e===lt?nt(s):e!==ft&&(it(s,0,0,!1),e===ht&&(Et(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),At(t),0===t.avail_out))return s.last_flush=-1,ct}return e!==dt?ct:s.wrap<=0?_t:(2===s.wrap?(Bt(s,255&t.adler),Bt(s,t.adler>>8&255),Bt(s,t.adler>>16&255),Bt(s,t.adler>>24&255),Bt(s,255&t.total_in),Bt(s,t.total_in>>8&255),Bt(s,t.total_in>>16&255),Bt(s,t.total_in>>24&255)):(Dt(s,t.adler>>>16),Dt(s,65535&t.adler)),At(t),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?ct:_t)},deflateEnd:t=>{if(!t||!t.state)return ut;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&103!==e&&113!==e&&666!==e?St(t,ut):(t.state=null,113===e?St(t,gt):ct)},deflateSetDictionary:(t,e)=>{let a=e.length;if(!t||!t.state)return ut;const i=t.state,s=i.wrap;if(2===s||1===s&&42!==i.status||i.lookahead)return ut;if(1===s&&(t.adler=X(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===s&&(Et(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const r=t.avail_in,n=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Tt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=It(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Tt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=n,t.input=o,t.avail_in=r,i.wrap=s,ct},deflateInfo:"pako deflate (from Nodeca project)"};const Vt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Wt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Vt(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,s=t.length;e<s;e++){let s=t[e];a.set(s,i),i+=s.length}return a};let Yt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Yt=!1}const qt=new Uint8Array(256);for(let t=0;t<256;t++)qt[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;qt[254]=qt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,s,r,n=t.length,o=0;for(s=0;s<n;s++)a=t.charCodeAt(s),55296==(64512&a)&&s+1<n&&(i=t.charCodeAt(s+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),s++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),r=0,s=0;r<o;s++)a=t.charCodeAt(s),55296==(64512&a)&&s+1<n&&(i=t.charCodeAt(s+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),s++)),a<128?e[r++]=a:a<2048?(e[r++]=192|a>>>6,e[r++]=128|63&a):a<65536?(e[r++]=224|a>>>12,e[r++]=128|a>>>6&63,e[r++]=128|63&a):(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63,e[r++]=128|a>>>6&63,e[r++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,s;const r=new Array(2*a);for(s=0,i=0;i<a;){let e=t[i++];if(e<128){r[s++]=e;continue}let n=qt[e];if(n>4)r[s++]=65533,i+=n-1;else{for(e&=2===n?31:3===n?15:7;n>1&&i<a;)e=e<<6|63&t[i++],n--;n>1?r[s++]=65533:e<65536?r[s++]=e:(e-=65536,r[s++]=55296|e>>10&1023,r[s++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Yt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(r,s)},Qt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+qt[t[a]]>e?a:e};var Jt=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};const te=Object.prototype.toString,{Z_NO_FLUSH:ee,Z_SYNC_FLUSH:ae,Z_FULL_FLUSH:ie,Z_FINISH:se,Z_OK:re,Z_STREAM_END:ne,Z_DEFAULT_COMPRESSION:oe,Z_DEFAULT_STRATEGY:le,Z_DEFLATED:he}=et;function de(t){this.options=Wt({level:oe,method:he,chunkSize:16384,windowBits:15,memLevel:8,strategy:le},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Jt,this.strm.avail_out=0;let a=jt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==re)throw new Error(tt[a]);if(e.header&&jt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===te.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=jt.deflateSetDictionary(this.strm,t),a!==re)throw new Error(tt[a]);this._dict_set=!0}}function fe(t,e){const a=new de(e);if(a.push(t,!0),a.err)throw a.msg||tt[a.err];return a.result}de.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let s,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?se:ee,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===te.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(r===ae||r===ie)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(s=jt.deflate(a,r),s===ne)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),s=jt.deflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===re;if(0!==a.avail_out){if(r>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},de.prototype.onData=function(t){this.chunks.push(t)},de.prototype.onEnd=function(t){t===re&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var ce={Deflate:de,deflate:fe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,fe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,fe(t,e)},constants:et};var _e=function(t,e){let a,i,s,r,n,o,l,h,d,f,c,_,u,g,w,m,p,b,y,k,v,x,z,S;const U=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),s=t.next_out,S=t.output,r=s-(e-t.avail_out),n=s+(t.avail_out-257),o=U.dmax,l=U.wsize,h=U.whave,d=U.wnext,f=U.window,c=U.hold,_=U.bits,u=U.lencode,g=U.distcode,w=(1<<U.lenbits)-1,m=(1<<U.distbits)-1;t:do{_<15&&(c+=z[a++]<<_,_+=8,c+=z[a++]<<_,_+=8),p=u[c&w];e:for(;;){if(b=p>>>24,c>>>=b,_-=b,b=p>>>16&255,0===b)S[s++]=65535&p;else{if(!(16&b)){if(0==(64&b)){p=u[(65535&p)+(c&(1<<b)-1)];continue e}if(32&b){U.mode=12;break t}t.msg="invalid literal/length code",U.mode=30;break t}y=65535&p,b&=15,b&&(_<b&&(c+=z[a++]<<_,_+=8),y+=c&(1<<b)-1,c>>>=b,_-=b),_<15&&(c+=z[a++]<<_,_+=8,c+=z[a++]<<_,_+=8),p=g[c&m];a:for(;;){if(b=p>>>24,c>>>=b,_-=b,b=p>>>16&255,!(16&b)){if(0==(64&b)){p=g[(65535&p)+(c&(1<<b)-1)];continue a}t.msg="invalid distance code",U.mode=30;break t}if(k=65535&p,b&=15,_<b&&(c+=z[a++]<<_,_+=8,_<b&&(c+=z[a++]<<_,_+=8)),k+=c&(1<<b)-1,k>o){t.msg="invalid distance too far back",U.mode=30;break t}if(c>>>=b,_-=b,b=s-r,k>b){if(b=k-b,b>h&&U.sane){t.msg="invalid distance too far back",U.mode=30;break t}if(v=0,x=f,0===d){if(v+=l-b,b<y){y-=b;do{S[s++]=f[v++]}while(--b);v=s-k,x=S}}else if(d<b){if(v+=l+d-b,b-=d,b<y){y-=b;do{S[s++]=f[v++]}while(--b);if(v=0,d<y){b=d,y-=b;do{S[s++]=f[v++]}while(--b);v=s-k,x=S}}}else if(v+=d-b,b<y){y-=b;do{S[s++]=f[v++]}while(--b);v=s-k,x=S}for(;y>2;)S[s++]=x[v++],S[s++]=x[v++],S[s++]=x[v++],y-=3;y&&(S[s++]=x[v++],y>1&&(S[s++]=x[v++]))}else{v=s-k;do{S[s++]=S[v++],S[s++]=S[v++],S[s++]=S[v++],y-=3}while(y>2);y&&(S[s++]=S[v++],y>1&&(S[s++]=S[v++]))}break}}break}}while(a<i&&s<n);y=_>>3,a-=y,_-=y<<3,c&=(1<<_)-1,t.next_in=a,t.next_out=s,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=s<n?n-s+257:257-(s-n),U.hold=c,U.bits=_};const ue=new Uint16Array([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]),ge=new Uint8Array([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]),we=new Uint16Array([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]),me=new Uint8Array([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]);var pe=(t,e,a,i,s,r,n,o)=>{const l=o.bits;let h,d,f,c,_,u,g=0,w=0,m=0,p=0,b=0,y=0,k=0,v=0,x=0,z=0,S=null,U=0;const E=new Uint16Array(16),I=new Uint16Array(16);let A,R,B,D=null,F=0;for(g=0;g<=15;g++)E[g]=0;for(w=0;w<i;w++)E[e[a+w]]++;for(b=l,p=15;p>=1&&0===E[p];p--);if(b>p&&(b=p),0===p)return s[r++]=20971520,s[r++]=20971520,o.bits=1,0;for(m=1;m<p&&0===E[m];m++);for(b<m&&(b=m),v=1,g=1;g<=15;g++)if(v<<=1,v-=E[g],v<0)return-1;if(v>0&&(0===t||1!==p))return-1;for(I[1]=0,g=1;g<15;g++)I[g+1]=I[g]+E[g];for(w=0;w<i;w++)0!==e[a+w]&&(n[I[e[a+w]]++]=w);if(0===t?(S=D=n,u=19):1===t?(S=ue,U-=257,D=ge,F-=257,u=256):(S=we,D=me,u=-1),z=0,w=0,g=m,_=r,y=b,k=0,f=-1,x=1<<b,c=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){A=g-k,n[w]<u?(R=0,B=n[w]):n[w]>u?(R=D[F+n[w]],B=S[U+n[w]]):(R=96,B=0),h=1<<g-k,d=1<<y,m=d;do{d-=h,s[_+(z>>k)+d]=A<<24|R<<16|B|0}while(0!==d);for(h=1<<g-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,w++,0==--E[g]){if(g===p)break;g=e[a+n[w]]}if(g>b&&(z&c)!==f){for(0===k&&(k=b),_+=m,y=g-k,v=1<<y;y+k<p&&(v-=E[y+k],!(v<=0));)y++,v<<=1;if(x+=1<<y,1===t&&x>852||2===t&&x>592)return 1;f=z&c,s[f]=b<<24|y<<16|_-r|0}}return 0!==z&&(s[_+z]=g-k<<24|64<<16|0),o.bits=b,0};const{Z_FINISH:be,Z_BLOCK:ye,Z_TREES:ke,Z_OK:ve,Z_STREAM_END:xe,Z_NEED_DICT:ze,Z_STREAM_ERROR:Se,Z_DATA_ERROR:Ue,Z_MEM_ERROR:Ee,Z_BUF_ERROR:Ie,Z_DEFLATED:Ae}=et,Re=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){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 Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const De=t=>{if(!t||!t.state)return Se;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ve},Fe=t=>{if(!t||!t.state)return Se;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,De(t)},Oe=(t,e)=>{let a;if(!t||!t.state)return Se;const i=t.state;return e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Se:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,Fe(t))},Te=(t,e)=>{if(!t)return Se;const a=new Be;t.state=a,a.window=null;const i=Oe(t,e);return i!==ve&&(t.state=null),i};let Ze,Ce,Me=!0;const Le=t=>{if(Me){Ze=new Int32Array(512),Ce=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(pe(1,t.lens,0,288,Ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;pe(2,t.lens,0,32,Ce,0,t.work,{bits:5}),Me=!1}t.lencode=Ze,t.lenbits=9,t.distcode=Ce,t.distbits=5},Ne=(t,e,a,i)=>{let s;const r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),i>=r.wsize?(r.window.set(e.subarray(a-r.wsize,a),0),r.wnext=0,r.whave=r.wsize):(s=r.wsize-r.wnext,s>i&&(s=i),r.window.set(e.subarray(a-i,a-i+s),r.wnext),(i-=s)?(r.window.set(e.subarray(a-i,a),0),r.wnext=i,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=s))),0};var Pe={inflateReset:Fe,inflateReset2:Oe,inflateResetKeep:De,inflateInit:t=>Te(t,15),inflateInit2:Te,inflate:(t,e)=>{let a,i,s,r,n,o,l,h,d,f,c,_,u,g,w,m,p,b,y,k,v,x,z=0;const S=new Uint8Array(4);let U,E;const I=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return Se;a=t.state,12===a.mode&&(a.mode=13),n=t.next_out,s=t.output,l=t.avail_out,r=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,f=o,c=l,x=ve;t:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(2&a.wrap&&35615===h){a.check=0,S[0]=255&h,S[1]=h>>>8&255,a.check=J(a.check,S,2,0),h=0,d=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=30;break}if((15&h)!==Ae){t.msg="unknown compression method",a.mode=30;break}if(h>>>=4,d-=4,v=8+(15&h),0===a.wbits)a.wbits=v;else if(v>a.wbits){t.msg="invalid window size",a.mode=30;break}a.dmax=1<<a.wbits,t.adler=a.check=1,a.mode=512&h?10:12,h=0,d=0;break;case 2:for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==Ae){t.msg="unknown compression method",a.mode=30;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=30;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=J(a.check,S,2,0)),h=0,d=0,a.mode=3;case 3:for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,S[2]=h>>>16&255,S[3]=h>>>24&255,a.check=J(a.check,S,4,0)),h=0,d=0,a.mode=4;case 4:for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=J(a.check,S,2,0)),h=0,d=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&(S[0]=255&h,S[1]=h>>>8&255,a.check=J(a.check,S,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(_=a.length,_>o&&(_=o),_&&(a.head&&(v=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(r,r+_),v)),512&a.flags&&(a.check=J(a.check,i,_,r)),o-=_,r+=_,a.length-=_),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===o)break t;_=0;do{v=i[r+_++],a.head&&v&&a.length<65536&&(a.head.name+=String.fromCharCode(v))}while(v&&_<o);if(512&a.flags&&(a.check=J(a.check,i,_,r)),o-=_,r+=_,v)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===o)break t;_=0;do{v=i[r+_++],a.head&&v&&a.length<65536&&(a.head.comment+=String.fromCharCode(v))}while(v&&_<o);if(512&a.flags&&(a.check=J(a.check,i,_,r)),o-=_,r+=_,v)break t}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=30;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=12;break;case 10:for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}t.adler=a.check=Re(h),h=0,d=0,a.mode=11;case 11:if(0===a.havedict)return t.next_out=n,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,ze;t.adler=a.check=1,a.mode=12;case 12:if(e===ye||e===ke)break t;case 13:if(a.last){h>>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=14;break;case 1:if(Le(a),a.mode=20,e===ke){h>>>=2,d-=2;break t}break;case 2:a.mode=17;break;case 3:t.msg="invalid block type",a.mode=30}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&h,h=0,d=0,a.mode=15,e===ke)break t;case 15:a.mode=16;case 16:if(_=a.length,_){if(_>o&&(_=o),_>l&&(_=l),0===_)break t;s.set(i.subarray(r,r+_),n),o-=_,r+=_,l-=_,n+=_,a.length-=_;break}a.mode=12;break;case 17:for(;d<14;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=30;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.lens[I[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[I[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,U={bits:a.lenbits},x=pe(0,a.lens,0,19,a.lencode,0,a.work,U),a.lenbits=U.bits,x){t.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(p<16)h>>>=w,d-=w,a.lens[a.have++]=p;else{if(16===p){for(E=w+2;d<E;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h>>>=w,d-=w,0===a.have){t.msg="invalid bit length repeat",a.mode=30;break}v=a.lens[a.have-1],_=3+(3&h),h>>>=2,d-=2}else if(17===p){for(E=w+3;d<E;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}h>>>=w,d-=w,v=0,_=3+(7&h),h>>>=3,d-=3}else{for(E=w+7;d<E;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}h>>>=w,d-=w,v=0,_=11+(127&h),h>>>=7,d-=7}if(a.have+_>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=30;break}for(;_--;)a.lens[a.have++]=v}}if(30===a.mode)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,U={bits:a.lenbits},x=pe(1,a.lens,0,a.nlen,a.lencode,0,a.work,U),a.lenbits=U.bits,x){t.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,U={bits:a.distbits},x=pe(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,U),a.distbits=U.bits,x){t.msg="invalid distances set",a.mode=30;break}if(a.mode=20,e===ke)break t;case 20:a.mode=21;case 21:if(o>=6&&l>=258){t.next_out=n,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,_e(t,c),n=t.next_out,s=t.output,l=t.avail_out,r=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(m&&0==(240&m)){for(b=w,y=m,k=p;z=a.lencode[k+((h&(1<<b+y)-1)>>b)],w=z>>>24,m=z>>>16&255,p=65535&z,!(b+w<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}h>>>=b,d-=b,a.back+=b}if(h>>>=w,d-=w,a.back+=w,a.length=p,0===m){a.mode=26;break}if(32&m){a.back=-1,a.mode=12;break}if(64&m){t.msg="invalid literal/length code",a.mode=30;break}a.extra=15&m,a.mode=22;case 22:if(a.extra){for(E=a.extra;d<E;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;z=a.distcode[h&(1<<a.distbits)-1],w=z>>>24,m=z>>>16&255,p=65535&z,!(w<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(0==(240&m)){for(b=w,y=m,k=p;z=a.distcode[k+((h&(1<<b+y)-1)>>b)],w=z>>>24,m=z>>>16&255,p=65535&z,!(b+w<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}h>>>=b,d-=b,a.back+=b}if(h>>>=w,d-=w,a.back+=w,64&m){t.msg="invalid distance code",a.mode=30;break}a.offset=p,a.extra=15&m,a.mode=24;case 24:if(a.extra){for(E=a.extra;d<E;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===l)break t;if(_=c-l,a.offset>_){if(_=a.offset-_,_>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=30;break}_>a.wnext?(_-=a.wnext,u=a.wsize-_):u=a.wnext-_,_>a.length&&(_=a.length),g=a.window}else g=s,u=n-a.offset,_=a.length;_>l&&(_=l),l-=_,a.length-=_;do{s[n++]=g[u++]}while(--_);0===a.length&&(a.mode=21);break;case 26:if(0===l)break t;s[n++]=a.length,l--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[r++]<<d,d+=8}if(c-=l,t.total_out+=c,a.total+=c,c&&(t.adler=a.check=a.flags?J(a.check,s,c,n-c):X(a.check,s,c,n-c)),c=l,(a.flags?h:Re(h))!==a.check){t.msg="incorrect data check",a.mode=30;break}h=0,d=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=30;break}h=0,d=0}a.mode=29;case 29:x=xe;break t;case 30:x=Ue;break t;case 31:return Ee;case 32:default:return Se}return t.next_out=n,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||c!==t.avail_out&&a.mode<30&&(a.mode<27||e!==be))&&Ne(t,t.output,t.next_out,c-t.avail_out),f-=t.avail_in,c-=t.avail_out,t.total_in+=f,t.total_out+=c,a.total+=c,a.wrap&&c&&(t.adler=a.check=a.flags?J(a.check,s,c,t.next_out-c):X(a.check,s,c,t.next_out-c)),t.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0===f&&0===c||e===be)&&x===ve&&(x=Ie),x},inflateEnd:t=>{if(!t||!t.state)return Se;let e=t.state;return e.window&&(e.window=null),t.state=null,ve},inflateGetHeader:(t,e)=>{if(!t||!t.state)return Se;const a=t.state;return 0==(2&a.wrap)?Se:(a.head=e,e.done=!1,ve)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,s,r;return t&&t.state?(i=t.state,0!==i.wrap&&11!==i.mode?Se:11===i.mode&&(s=1,s=X(s,e,a,0),s!==i.check)?Ue:(r=Ne(t,e,a,a),r?(i.mode=31,Ee):(i.havedict=1,ve))):Se},inflateInfo:"pako inflate (from Nodeca project)"};var He=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};const $e=Object.prototype.toString,{Z_NO_FLUSH:je,Z_FINISH:Ve,Z_OK:We,Z_STREAM_END:Ke,Z_NEED_DICT:Ye,Z_STREAM_ERROR:qe,Z_DATA_ERROR:Ge,Z_MEM_ERROR:Xe}=et;function Qe(t){this.options=Wt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Jt,this.strm.avail_out=0;let a=Pe.inflateInit2(this.strm,e.windowBits);if(a!==We)throw new Error(tt[a]);if(this.header=new He,Pe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===$e.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Pe.inflateSetDictionary(this.strm,e.dictionary),a!==We)))throw new Error(tt[a])}Qe.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,s=this.options.dictionary;let r,n,o;if(this.ended)return!1;for(n=e===~~e?e:!0===e?Ve:je,"[object ArrayBuffer]"===$e.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),r=Pe.inflate(a,n),r===Ye&&s&&(r=Pe.inflateSetDictionary(a,s),r===We?r=Pe.inflate(a,n):r===Ge&&(r=Ye));a.avail_in>0&&r===Ke&&a.state.wrap>0&&0!==t[a.next_in];)Pe.inflateReset(a),r=Pe.inflate(a,n);switch(r){case qe:case Ge:case Ye:case Xe:return this.onEnd(r),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||r===Ke))if("string"===this.options.to){let t=Qt(a.output,a.next_out),e=a.next_out-t,s=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(s)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(r!==We||0!==o){if(r===Ke)return r=Pe.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},Qe.prototype.onData=function(t){this.chunks.push(t)},Qe.prototype.onEnd=function(t){t===We&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Je,deflate:ta,deflateRaw:ea,gzip:aa}=ce;var ia=ta;const sa={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},ra=(t,...e)=>{let a=0;if(t.replace(/[<>]/,"").length!=e.length)throw"Pack format to Argument count mismatch";let i=[],s=!0;for(let i=0;i<t.length;i++)"<"==t[i]?s=!0:">"==t[i]?s=!1:(r(t[i],e[a]),a++);function r(t,e){if(!(t in sa))throw"Unhandled character '"+t+"' in pack format";let a=sa[t].bytes,r=new DataView(new ArrayBuffer(a));sa[t].p.bind(r)(0,e,s);for(let t=0;t<a;t++)i.push(r.getUint8(t))}return i},na=(t,e)=>{let a=0,i=[],s=!0;for(let e of t)"<"==e?s=!0:">"==e?s=!1:r(e);function r(t){if(!(t in sa))throw"Unhandled character '"+t+"' in unpack format";let r=sa[t].bytes,n=new DataView(new ArrayBuffer(r));for(let t=0;t<r;t++)n.setUint8(t,255&e[a+t]);let o=sa[t].u.bind(n);i.push(o(0,s)),a+=r}return i};class oa extends EventTarget{constructor(t,e,a){super(),this.port=t,this.logger=e,this._parent=a,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let t,e=await this.readRegister(1073745920),i=u[e>>>0];if(void 0===i)throw new Error(`Unknown Chip: Hex: ${a(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=i.name,this.chipFamily=i.family,this.chipFamily==d?t=1072693328:this.chipFamily==f?t=1073061888:this.chipFamily==c&&(t=1610719232);for(let e=0;e<4;e++)this._efuses[e]=await this.readRegister(t+4*e);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:t,done:e}=await this._reader.read();if(e){this._reader.releaseLock();break}t&&0!==t.length&&this._inputBuffer.push(...Array.from(t))}}catch(t){console.error("Read loop got disconnected"),this.connected=!1,this.dispatchEvent(new Event("disconnect"))}this.logger.debug("Finished read loop")}async hardReset(t=!1){this.logger.log("Try hard reset."),await this.port.setSignals({dataTerminalReady:!1,requestToSend:!0}),await this.port.setSignals({dataTerminalReady:t,requestToSend:!1}),await new Promise((t=>setTimeout(t,1e3)))}macAddr(){let t,e=new Array(6).fill(0),a=this._efuses[0],i=this._efuses[1],s=this._efuses[2],r=this._efuses[3];if(this.chipFamily==d){if(0!=r)t=[r>>16&255,r>>8&255,255&r];else if(0==(i>>16&255))t=[24,254,52];else{if(1!=(i>>16&255))throw new Error("Couldnt determine OUI");t=[172,208,116]}e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=i>>8&255,e[4]=255&i,e[5]=a>>24&255}else if(this.chipFamily==f)e[0]=s>>8&255,e[1]=255&s,e[2]=i>>24&255,e[3]=i>>16&255,e[4]=i>>8&255,e[5]=255&i;else{if(this.chipFamily!=c)throw new Error("Unknown chip family");e[0]=s>>8&255,e[1]=255&s,e[2]=i>>24&255,e[3]=i>>16&255,e[4]=i>>8&255,e[5]=255&i}return e}async readRegister(t){this.debug&&this.logger.debug("Reading from Register "+a(t,8));let e=ra("<I",t);await this.sendCommand(10,e);let[i,s]=await this.getResponse(10);return i}async checkCommand(t,e,i=0,s=3e3){s=Math.min(s,12e5),await this.sendCommand(t,e,i);let[r,n]=await this.getResponse(t,s);if(null===n)throw new Error("Didn't get enough status bytes");let o=0;if(this.IS_STUB||this.chipFamily==d?o=2:[f,c].includes(this.chipFamily)?o=4:[2,4].includes(n.length)&&(o=n.length),n.length<o)throw new Error("Didn't get enough status bytes");let l=n.slice(-o,n.length);if(n=n.slice(0,-o),this.debug&&(this.logger.debug("status",l),this.logger.debug("value",r),this.logger.debug("data",n)),1==l[0])throw 5==l[1]?new Error("Invalid (unsupported) command "+a(t)):new Error("Command failure error code "+a(l[1]));return[r,n]}async sendCommand(t,e,a=0){let i=(t=>{let e=[192];for(let a of t)219==a?e=e.concat([219,221]):192==a?e=e.concat([219,220]):e.push(a);return e.push(192),e})([...ra("<BBHI",0,t,e.length,a),...e]);this.debug&&this.logger.debug(`Writing ${i.length} byte${1==i.length?"":"s"}:`,i),await this.writeToStream(i)}async readPacket(t){let s=null,r=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<t;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await i(10)}if(0==n.length){throw new w("Timed out waiting for packet "+(null===s?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+e(n));for(let t of n)if(null===s){if(192!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new w("Invalid head of packet ("+a(t)+")");s=[]}else if(r)if(r=!1,220==t)s.push(192);else{if(221!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new w("Invalid SLIP escape (0xdb, "+a(t)+")");s.push(219)}else if(219==t)r=!0;else{if(192==t)return this.debug&&this.logger.debug("Received full packet: "+e(s)),s;s.push(t)}}throw new w("Invalid state")}async getResponse(t,e=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(e);if(i.length<8)continue;const[s,r,n,o]=na("<BBHI",i.slice(0,8));if(1!=s)continue;const l=i.slice(8);if(null==t||r==t)return[o,l];if(0!=l[0]&&5==l[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${a(t)}`)}throw"Response doesn't match request"}checksum(t,e=239){for(let a of t)e^=a;return e}async setBaudrate(t){if(this.chipFamily==d)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+t+"...");try{let e=ra("<II",t,this.IS_STUB?115200:0);await this.checkCommand(15,e)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(t):await this.reconfigurePort(t)}async reconfigurePort(t){var e;try{await(null===(e=this._reader)||void 0===e?void 0:e.cancel()),await this.port.close(),await this.port.open({baudRate:t}),this.readLoop(),this.logger.log(`Changed baud rate to ${t}`)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: ${e}`)}}async sync(){for(let t=0;t<5;t++){if(this._inputBuffer.length=0,await this._sync())return await i(100),!0;await i(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,h);for(let t=0;t<8;t++)try{let[t,e]=await this.getResponse(8,100);if(e.length>1&&0==e[0]&&0==e[1])return!0}catch(t){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(t,e,i=0,s=!1){this.updateImageFlashParams(i,t);let r,n=t.byteLength,o=0;s?(r=ia(new Uint8Array(t),{level:9}).buffer,o=r.byteLength,this.logger.log(`Writing data with filesize: ${n}. Compressed Size: ${o}`),await this.flashDeflBegin(n,o,i)):(this.logger.log(`Writing data with filesize: ${n}`),r=t,await this.flashBegin(n,i));let l=[],h=0,d=0,f=0,c=Date.now(),_=this.getFlashWriteSize(),u=s?o:n;for(;u-f>0;)this.debug&&this.logger.log(`Writing at ${a(i+h*_,8)} `),u-f>=_?l=Array.from(new Uint8Array(r,f,_)):(l=Array.from(new Uint8Array(r,f,u-f)),s||(l=l.concat(new Array(_-l.length).fill(255)))),s?await this.flashDeflBlock(l,h):await this.flashBlock(l,h),h+=1,d+=s?Math.round(l.length*n/o):l.length,f+=_,e(d,u);this.logger.log("Took "+(Date.now()-c)+"ms to write "+u+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),s?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(t,e,a=3e3){await this.checkCommand(3,ra("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashDeflBlock(t,e,a=3e3){await this.checkCommand(17,ra("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async flashBegin(t=0,e=0,i=!1){let s,r,n=this.getFlashWriteSize();!this.IS_STUB&&[f,c].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0)),this.chipFamily==f&&(r=ra("<IIIIII",0,this._flashsize,65536,4096,256,65535),await this.checkCommand(11,r));let o,l=Math.floor((t+n-1)/n);s=this.chipFamily==d?this.getEraseSize(e,t):t,o=this.IS_STUB?3e3:g(3e4,t);let h=Date.now();return r=ra("<IIII",s,l,n,e),this.chipFamily==c&&(r=r.concat(ra("<I",i?1:0))),this.logger.log("Erase size "+s+", blocks "+l+", block size "+n+", offset "+a(e,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,r,0,o),0==t||this.IS_STUB||this.logger.log("Took "+(Date.now()-h)+"ms to erase "+l+" bytes"),l}async flashDeflBegin(t=0,e=0,a=0,i=!1){let s,r=this.getFlashWriteSize(),n=Math.floor((e+r-1)/r),o=Math.floor((t+r-1)/r),l=0,h=0;return this.IS_STUB?(l=t,h=3e3):(l=o*r,h=g(3e4,l)),s=ra("<IIII",l,n,r,a),await this.checkCommand(16,s,0,h),n}async flashFinish(){let t=ra("<I",1);await this.checkCommand(4,t)}async flashDeflFinish(){let t=ra("<I",1);await this.checkCommand(18,t)}getBootloaderOffset(){var t;return this.chipFamily==f||(null===(t=this._parent)||void 0===t?void 0:t.chipFamily)==f?4096:0}updateImageFlashParams(t,e){if(e.byteLength<8)return e;var i=Array.from(new Uint8Array(e,0,4));let l=i[0],h=i[2],u=i[3];if(this.logger.debug(`Image header, Magic=${a(l)}, FlashMode=${a(h)}, FlashSizeFreq=${a(u)}`),t!=this.getBootloaderOffset())return e;if(233!=l)return this.logger.log("Warning: Image file at %s doesn't look like an image file, so not changing any flash settings.",a(t,4)),e;this.logger.log("Image being flashed is a bootloader");let g=n,w=o,m=(t=>{switch(t){case f:case c:return r;case d:return s;case _:return r;default:return s}})(this.getChipFamily())[this.flashSize?this.flashSize:"4MB"],p=ra("BB",g,m+w),b=new Uint8Array(e,2,2);return p[0]!=b[0]||p[1]!=b[1]?(b[0]=p[0],b[1]=p[1],this.logger.log(`Patching Flash parameters header bytes to ${a(p[0],2)} ${a(p[1],2)}`)):this.logger.log("Flash parameters header did not need patching."),e}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(t,e,a=4294967295,i=0,s=0){let r=ra("<IIII",t,e,a,i);s>0&&r.concat(ra("<IIII",(t=>{switch(t){case f:case c:case d:return 1610612856;default:return-1}})(this.getChipFamily()),0,0,s)),await this.checkCommand(9,r)}async setDataLengths(t,e,a){if(-1!=t.mosiDlenOffs){let i=t.regBase+t.mosiDlenOffs,s=t.regBase+t.misoDlenOffs;e>0&&await this.writeRegister(i,e-1),a>0&&await this.writeRegister(s,a-1)}else{let i=t.regBase+t.usr1Offs,s=(0==a?0:a-1)<<8|(0==e?0:e-1)<<17;await this.writeRegister(i,s)}}async waitDone(t,e){for(let a=0;a<10;a++){if(0==(await this.readRegister(t)&e))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(t,e,i=0){let s=(t=>{switch(t){case f:case c:return{regBase:1072963584,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128};case d:return{regBase:1610613248,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64};case _:return{regBase:1610620928,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88};default:return{regBase:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1}}})(this.getChipFamily()),r=s.regBase,n=r+0,o=r+s.usrOffs,l=r+s.usr2Offs,h=r+s.w0Offs,u=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let g=8*e.length,w=await this.readRegister(o),m=await this.readRegister(l),p=1<<31;if(i>0&&(p|=268435456),g>0&&(p|=134217728),await this.setDataLengths(s,g,i),await this.writeRegister(o,p),await this.writeRegister(l,7<<28|t),0==g)await this.writeRegister(h,0);else{e.concat(new Array(e.length%4).fill(0));let t=na("I".repeat(Math.floor(e.length/4)),e),i=h;this.logger.debug(`Words Length: ${t.length}`);for(const e of t)this.logger.debug(`Writing word ${a(e)} to register offset ${a(i)}`),await this.writeRegister(i,e),i+=4}await this.writeRegister(n,u),await this.waitDone(n,u);let b=await this.readRegister(h);return await this.writeRegister(o,w),await this.writeRegister(l,m),b}async detectFlashSize(){this.logger.log("Detecting Flash Size");let t=await this.flashId(),e=255&t,i=t>>16&255;this.logger.debug(`FlashId: ${a(t)}`),this.logger.log(`Flash Manufacturer: ${e.toString(16)}`),this.logger.log(`Flash Device: ${(t>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=l[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(t,e){let a=4096,i=Math.floor((e+a-1)/a),s=16-Math.floor(t/a)%16;return i<s&&(s=i),i<2*s?Math.floor((i+1)/2*a):(i-s)*a}async memBegin(t,e,a,i){return await this.checkCommand(5,ra("<IIII",t,e,a,i))}async memBlock(t,e){return await this.checkCommand(7,ra("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async memFinish(t=0){let e=this.IS_STUB?3e3:50,a=ra("<II",0==t?1:0,t);return await this.checkCommand(6,a,0,e)}async runStub(){const t=await m(this.chipFamily);let e,a=2048;this.logger.log("Uploading stub...");for(let e of["text","data"])if(Object.keys(t).includes(e)){let i=t[e+"_start"],s=t[e].length,r=Math.floor((s+a-1)/a);await this.memBegin(s,r,a,i);for(let i of Array(r).keys()){let r=i*a,n=r+a;n>s&&(n=s),await this.memBlock(t[e].slice(r,n),i)}}this.logger.log("Running stub..."),await this.memFinish(t.entry);const i=await this.readPacket(500);if(e=String.fromCharCode(...i),"OHAI"!=e)throw new Error("Failed to start stub. Unexpected response: "+e);this.logger.log("Stub is now running...");const s=new la(this.port,this.logger,this);return await s.detectFlashSize(),s}async writeToStream(t){const e=this.port.writable.getWriter();await e.write(new Uint8Array(t));try{e.releaseLock()}catch(t){console.error("Ignoring release lock error",t)}}async disconnect(){this._parent?await this._parent.disconnect():(this._reader&&await this._reader.cancel(),await this.port.writable.getWriter().close(),await this.port.close(),this.connected=!1)}}class la extends oa{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(t,e,i,s){let r=await m(this.chipFamily),n=s,o=s+t;console.log(n,o),console.log(r.data_start,r.data.length,r.text_start,r.text.length);for(let[t,e]of[[r.data_start,r.data_start+r.data.length],[r.text_start,r.text_start+r.text.length]])if(n<e&&o>t)throw new Error("Software loader is resident at "+a(t,8)+"-"+a(e,8)+". Can't load binary at overlapping address range "+a(n,8)+"-"+a(o,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,6e5)}}const ha=async t=>{const e=await navigator.serial.requestPort();return t.log("Connecting..."),await e.open({baudRate:115200}),t.log("Connected successfully."),new oa(e,t)};export{f as CHIP_FAMILY_ESP32,_ as CHIP_FAMILY_ESP32C3,c as CHIP_FAMILY_ESP32S2,d as CHIP_FAMILY_ESP8266,oa as ESPLoader,ha as connect};
{
"name": "esp-web-flasher",
"version": "3.1.3",
"version": "3.2.0",
"description": "Flash ESP devices using WebSerial",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -8,3 +8,6 @@ import { toByteArray } from "./util";

}
export const baudRates = [921600, 115200, 230400, 460800];
export const baudRates = [
115200, 128000, 153600, 230400, 460800, 921600, 1500000, 2000000,
];
export const FLASH_SIZES = {

@@ -139,3 +142,3 @@ "512KB": 0x00,

export const CHIP_DETECT_MAGIC_VALUES = {
[-999167]: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
0xfff0c101: { name: "ESP8266", family: CHIP_FAMILY_ESP8266 },
0x00f01d83: { name: "ESP32", family: CHIP_FAMILY_ESP32 },

@@ -273,1 +276,8 @@ 0x000007c6: { name: "ESP32-S2", family: CHIP_FAMILY_ESP32S2 },

};
export class SlipReadError extends Error {
constructor(message: string) {
super(message);
this.name = "SlipReadError";
}
}

@@ -50,7 +50,9 @@ import {

CHIP_DETECT_MAGIC_VALUES,
SlipReadError,
} from "./const";
import { getStubCode } from "./stubs";
import { pack, sleep, slipEncode, toHex, unpack } from "./util";
import { hexFormatter, sleep, slipEncode, toHex } from "./util";
// @ts-ignore
import { deflate } from "pako/dist/pako.esm.mjs";
import { pack, unpack } from "./struct";

@@ -65,3 +67,2 @@ export class ESPLoader extends EventTarget {

connected = true;
stopReadLoop = false;
flashSize: string | null = null;

@@ -84,6 +85,2 @@

/**
* @name chipType
* ESP32 or ESP8266 based on which chip type we're talking to
*/
async initialize() {

@@ -101,7 +98,7 @@ await this.hardReset(true);

let chipMagicValue = await this.readRegister(CHIP_DETECT_MAGIC_REG_ADDR);
let chip = CHIP_DETECT_MAGIC_VALUES[chipMagicValue];
let chip = CHIP_DETECT_MAGIC_VALUES[chipMagicValue >>> 0];
if (chip === undefined) {
throw new Error(
`Unknown Chip: Hex: ${toHex(
chipMagicValue,
chipMagicValue >>> 0,
8

@@ -119,3 +116,3 @@ ).toLowerCase()} Number: ${chipMagicValue}`

} else if (this.chipFamily == CHIP_FAMILY_ESP32) {
baseAddr = 0x6001a000;
baseAddr = 0x3ff5a000;
} else if (this.chipFamily == CHIP_FAMILY_ESP32S2) {

@@ -148,3 +145,3 @@ baseAddr = 0x6001a000;

try {
while (!this.stopReadLoop) {
while (true) {
const { value, done } = await this._reader.read();

@@ -230,13 +227,10 @@ if (done) {

/**
* @name readRegister
* Read a register within the ESP chip RAM, returns a 4-element list
*/
async readRegister(reg: number) {
if (this.debug) {
this.logger.debug("Reading Register", reg);
this.logger.debug("Reading from Register " + toHex(reg, 8));
}
let packet = pack("I", reg);
let register = (await this.checkCommand(ESP_READ_REG, packet))[0];
return unpack("I", register!)[0];
let packet = pack("<I", reg);
await this.sendCommand(ESP_READ_REG, packet);
let [val, _data] = await this.getResponse(ESP_READ_REG);
return val;
}

@@ -255,3 +249,3 @@

timeout = DEFAULT_TIMEOUT
) {
): Promise<[number, number[]]> {
timeout = Math.min(timeout, MAX_TIMEOUT);

@@ -296,2 +290,3 @@ await this.sendCommand(opcode, buffer, checksum);

}
return [value, data];

@@ -306,17 +301,9 @@ }

async sendCommand(opcode: number, buffer: number[], checksum = 0) {
//debugMsg("Running Send Command");
this._inputBuffer.length = 0; // Reset input buffer
let packet = [0xc0, 0x00]; // direction
packet.push(opcode);
packet = packet.concat(pack("H", buffer.length));
packet = packet.concat(slipEncode(pack("I", checksum)));
packet = packet.concat(slipEncode(buffer));
packet.push(0xc0);
let packet = slipEncode([
...pack("<BBHI", 0x00, opcode, buffer.length, checksum),
...buffer,
]);
if (this.debug) {
this.logger.debug(
"Writing " +
packet.length +
" byte" +
(packet.length == 1 ? "" : "s") +
":",
`Writing ${packet.length} byte${packet.length == 1 ? "" : "s"}:`,
packet

@@ -329,134 +316,122 @@ );

/**
* @name getResponse
* Read response data and decodes the slip packet, then parses
* out the value/data and returns as a tuple of (value, data) where
* each is a list of bytes
* @name readPacket
* Generator to read SLIP packets from a serial port.
* Yields one full SLIP packet at a time, raises exception on timeout or invalid data.
* Designed to avoid too many calls to serial.read(1), which can bog
* down on slow systems.
*/
async getResponse(opcode: number, timeout = DEFAULT_TIMEOUT) {
let reply: number[] = [];
let packetLength = 0;
let escapedByte = false;
let stamp = Date.now();
while (Date.now() - stamp < timeout) {
if (this._inputBuffer.length > 0) {
let c = this._inputBuffer.shift()!;
if (c == 0xdb) {
escapedByte = true;
} else if (escapedByte) {
if (c == 0xdd) {
reply.push(0xdc);
} else if (c == 0xdc) {
reply.push(0xc0);
async readPacket(timeout: number): Promise<number[]> {
let partialPacket: number[] | null = null;
let inEscape = false;
let readBytes: number[] = [];
while (true) {
let stamp = Date.now();
readBytes = [];
while (Date.now() - stamp < timeout) {
if (this._inputBuffer.length > 0) {
readBytes.push(this._inputBuffer.shift()!);
break;
} else {
await sleep(10);
}
}
if (readBytes.length == 0) {
let waitingFor = partialPacket === null ? "header" : "content";
throw new SlipReadError("Timed out waiting for packet " + waitingFor);
}
if (this.debug)
this.logger.debug(
"Read " + readBytes.length + " bytes: " + hexFormatter(readBytes)
);
for (let b of readBytes) {
if (partialPacket === null) {
// waiting for packet header
if (b == 0xc0) {
partialPacket = [];
} else {
reply = reply.concat([0xdb, c]);
if (this.debug) {
this.logger.debug(
"Read invalid data: " + hexFormatter(readBytes)
);
this.logger.debug(
"Remaining data in serial buffer: " +
hexFormatter(this._inputBuffer)
);
}
throw new SlipReadError(
"Invalid head of packet (" + toHex(b) + ")"
);
}
escapedByte = false;
} else if (inEscape) {
// part-way through escape sequence
inEscape = false;
if (b == 0xdc) {
partialPacket.push(0xc0);
} else if (b == 0xdd) {
partialPacket.push(0xdb);
} else {
if (this.debug) {
this.logger.debug(
"Read invalid data: " + hexFormatter(readBytes)
);
this.logger.debug(
"Remaining data in serial buffer: " +
hexFormatter(this._inputBuffer)
);
}
throw new SlipReadError(
"Invalid SLIP escape (0xdb, " + toHex(b) + ")"
);
}
} else if (b == 0xdb) {
// start of escape sequence
inEscape = true;
} else if (b == 0xc0) {
// end of packet
if (this.debug)
this.logger.debug(
"Received full packet: " + hexFormatter(partialPacket)
);
return partialPacket;
} else {
reply.push(c);
// normal byte in packet
partialPacket.push(b);
}
} else {
await sleep(10);
}
if (reply.length > 0 && reply[0] != 0xc0) {
// packets must start with 0xC0
reply.shift();
}
if (reply.length > 1 && reply[1] != 0x01) {
reply.shift();
}
if (reply.length > 2 && reply[2] != opcode) {
reply.shift();
}
if (reply.length > 4) {
// get the length
packetLength = reply[3] + (reply[4] << 8);
}
if (reply.length == packetLength + 10) {
break;
}
}
// Check to see if we have a complete packet. If not, we timed out.
if (reply.length != packetLength + 10) {
this.logger.log("Timed out after " + timeout + " milliseconds");
return [null, null];
}
if (this.debug) {
this.logger.debug(
"Reading " +
reply.length +
" byte" +
(reply.length == 1 ? "" : "s") +
":",
reply
);
}
let value = reply.slice(5, 9);
let data = reply.slice(9, -1);
if (this.debug) {
this.logger.debug("value:", value, "data:", data);
}
return [value, data];
throw new SlipReadError("Invalid state");
}
/**
* @name read
* Read response data and decodes the slip packet.
* Keeps reading until we hit the timeout or get
* a packet closing byte
* @name getResponse
* Read response data and decodes the slip packet, then parses
* out the value/data and returns as a tuple of (value, data) where
* each is a list of bytes
*/
async readBuffer(timeout = DEFAULT_TIMEOUT) {
let reply: number[] = [];
// let packetLength = 0;
let escapedByte = false;
let stamp = Date.now();
while (Date.now() - stamp < timeout) {
if (this._inputBuffer.length > 0) {
let c = this._inputBuffer.shift()!;
if (c == 0xdb) {
escapedByte = true;
} else if (escapedByte) {
if (c == 0xdd) {
reply.push(0xdc);
} else if (c == 0xdc) {
reply.push(0xc0);
} else {
reply = reply.concat([0xdb, c]);
}
escapedByte = false;
} else {
reply.push(c);
}
} else {
await sleep(10);
async getResponse(
opcode: number,
timeout = DEFAULT_TIMEOUT
): Promise<[number, number[]]> {
for (let i = 0; i < 100; i++) {
const packet = await this.readPacket(timeout);
if (packet.length < 8) {
continue;
}
if (reply.length > 0 && reply[0] != 0xc0) {
// packets must start with 0xC0
reply.shift();
const [resp, opRet, _lenRet, val] = unpack("<BBHI", packet.slice(0, 8));
if (resp != 1) {
continue;
}
if (reply.length > 1 && reply[reply.length - 1] == 0xc0) {
break;
const data = packet.slice(8);
if (opcode == null || opRet == opcode) {
return [val, data];
}
if (data[0] != 0 && data[1] == ROM_INVALID_RECV_MSG) {
this._inputBuffer.length = 0;
throw new Error(`Invalid (unsupported) command ${toHex(opcode)}`);
}
}
// Check to see if we have a complete packet. If not, we timed out.
if (reply.length < 2) {
this.logger.log("Timed out after " + timeout + " milliseconds");
return null;
}
if (this.debug) {
this.logger.debug(
"Reading " +
reply.length +
" byte" +
(reply.length == 1 ? "" : "s") +
":",
reply
);
}
let data = reply.slice(1, -1);
if (this.debug) {
this.logger.debug("data:", data);
}
return data;
throw "Response doesn't match request";
}

@@ -503,5 +478,6 @@

// SerialPort does not allow to be reconfigured while open so we close and re-open
this.stopReadLoop = true;
// reader.cancel() causes the Promise returned by the read() operation running on
// the readLoop to return immediately with { value: undefined, done: true } and thus
// breaking the loop and exiting readLoop();
await this._reader?.cancel();
this._reader?.releaseLock();
await this.port.close();

@@ -513,3 +489,2 @@

// Restart Readloop
this.stopReadLoop = false;
this.readLoop();

@@ -531,2 +506,3 @@

for (let i = 0; i < 5; i++) {
this._inputBuffer.length = 0;
let response = await this._sync();

@@ -551,9 +527,10 @@ if (response) {

for (let i = 0; i < 8; i++) {
let [_reply, data] = await this.getResponse(ESP_SYNC, SYNC_TIMEOUT);
if (data === null) {
continue;
try {
let [_reply, data] = await this.getResponse(ESP_SYNC, SYNC_TIMEOUT);
if (data.length > 1 && data[0] == 0 && data[1] == 0) {
return true;
}
} catch (err) {
// If read packet fails.
}
if (data.length > 1 && data[0] == 0 && data[1] == 0) {
return true;
}
}

@@ -643,5 +620,5 @@ return false;

if (compress) {
await this.flashDeflBlock(block, seq, 2000);
await this.flashDeflBlock(block, seq);
} else {
await this.flashBlock(block, seq, 2000);
await this.flashBlock(block, seq);
}

@@ -676,3 +653,3 @@ seq += 1;

*/
async flashBlock(data: number[], seq: number, timeout = 100) {
async flashBlock(data: number[], seq: number, timeout = DEFAULT_TIMEOUT) {
await this.checkCommand(

@@ -685,3 +662,3 @@ ESP_FLASH_DATA,

}
async flashDeflBlock(data: number[], seq: number, timeout = 100) {
async flashDeflBlock(data: number[], seq: number, timeout = DEFAULT_TIMEOUT) {
await this.checkCommand(

@@ -703,3 +680,6 @@ ESP_FLASH_DEFL_DATA,

let flashWriteSize = this.getFlashWriteSize();
if ([CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2].includes(this.chipFamily)) {
if (
!this.IS_STUB &&
[CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2].includes(this.chipFamily)
) {
await this.checkCommand(ESP_SPI_ATTACH, new Array(8).fill(0));

@@ -1128,14 +1108,5 @@ }

let data = pack("<II", entrypoint == 0 ? 1 : 0, entrypoint);
// try {
return await this.checkCommand(ESP_MEM_END, data, 0, timeout);
// } catch (err) {
// console.error("Error in memFinish", err);
// if (this.IS_STUB) {
// // raise
// }
// // pass
// }
}
// ESPTool Line 706
async runStub(): Promise<EspStubLoader> {

@@ -1168,5 +1139,7 @@ const stub = await getStubCode(this.chipFamily);

const p = await this.readBuffer(100);
const pChar = String.fromCharCode(...p!);
let pChar: string;
const p = await this.readPacket(500);
pChar = String.fromCharCode(...p);
if (pChar != "OHAI") {

@@ -1173,0 +1146,0 @@ throw new Error("Failed to start stub. Unexpected response: " + pChar);

{
"text": "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",
"text": "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",
"text_start": 1074520064,
"entry": 1074521496,
"entry": 1074521516,
"data": "CMD8Pw==",
"data_start": 1073605544
}
{
"text": "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",
"text": "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",
"text_start": 1073905664,
"entry": 1073907516,
"entry": 1073907540,
"data": "CAD9Pw==",
"data_start": 1073622004
}
{
"text": "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",
"text_start": 1074847744,
"entry": 1074847748,
"data": "CIH+PwUFBAACAwcAAwMLAFHnEECH5xBAtecQQFToEEAF9xBAuugQQBDpEEBc6RBABfcQQCLqEECf6hBAYOsQQAX3EEAF9xBA+OsQQAX3EEDX7hBAn+8QQNjvEEAF9xBABfcQQHXwEEAF9xBAW/EQQAHyEEBA8xBA//MQQND0EEAF9xBABfcQQAX3EEAF9xBA/vUQQAX3EED09hBAL+0QQCfoEEBC9RBAS+oQQJjpEEAF9xBAiPYQQM/2EEAF9xBABfcQQAX3EEAF9xBABfcQQAX3EEAF9xBABfcQQMDpEED/6RBAWvUQQAEAAAACAAAAAwAAAAQAAAAFAAAABwAAAAkAAAANAAAAEQAAABkAAAAhAAAAMQAAAEEAAABhAAAAgQAAAMEAAAABAQAAgQEAAAECAAABAwAAAQQAAAEGAAABCAAAAQwAAAEQAAABGAAAASAAAAEwAAABQAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAAAAAAAAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAANAAAADwAAABEAAAATAAAAFwAAABsAAAAfAAAAIwAAACsAAAAzAAAAOwAAAEMAAABTAAAAYwAAAHMAAACDAAAAowAAAMMAAADjAAAAAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAQEAAAEAAAAEAAAA",
"text": "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",
"text_start": 1074843648,
"entry": 1074843652,
"data": "CIH+PwUFBAACAwcAAwMLALnXEEDv1xBAHdgQQLrYEEBo5xBAHtkQQHTZEEDA2RBAaOcQQILaEED/2hBAwNsQQGjnEEBo5xBAWNwQQGjnEEA33xBAAOAQQDvgEEBo5xBAaOcQQNfgEEBo5xBAv+EQQGXiEECj4xBAY+QQQDTlEEBo5xBAaOcQQGjnEEBo5xBAYuYQQGjnEEBX5xBAkN0QQI/YEECm5RBAq9oQQPzZEEBo5xBA7OYQQDHnEEBo5xBAaOcQQGjnEEBo5xBAaOcQQGjnEEBo5xBAaOcQQCLaEEBf2hBAvuUQQAEAAAACAAAAAwAAAAQAAAAFAAAABwAAAAkAAAANAAAAEQAAABkAAAAhAAAAMQAAAEEAAABhAAAAgQAAAMEAAAABAQAAgQEAAAECAAABAwAAAQQAAAEGAAABCAAAAQwAAAEQAAABGAAAASAAAAEwAAABQAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAAAAAAAAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAANAAAADwAAABEAAAATAAAAFwAAABsAAAAfAAAAIwAAACsAAAAzAAAAOwAAAEMAAABTAAAAYwAAAHMAAACDAAAAowAAAMMAAADjAAAAAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAQEAAAEAAAAEAAAA",
"data_start": 1073720488
}

@@ -7,3 +7,3 @@ /**

export const slipEncode = (buffer: number[]): number[] => {
let encoded: number[] = [];
let encoded = [0xc0];
for (let byte of buffer) {

@@ -18,2 +18,3 @@ if (byte == 0xdb) {

}
encoded.push(0xc0);
return encoded;

@@ -37,69 +38,5 @@ };

export const pack = (format: string, ...data: number[]) => {
// let format = args[0];
let pointer = 0;
// let data = args.slice(1);
if (format.replace(/[<>]/, "").length != data.length) {
throw new Error("Pack format to Argument count mismatch");
}
let bytes: number[] = [];
let littleEndian = true;
export const hexFormatter = (bytes: number[]) =>
"[" + bytes.map((value) => toHex(value)).join(", ") + "]";
const pushBytes = (value: number, byteCount: number) => {
for (let i = 0; i < byteCount; i++) {
if (littleEndian) {
bytes.push((value >> (i * 8)) & 0xff);
} else {
bytes.push((value >> ((byteCount - i) * 8)) & 0xff);
}
}
};
for (let i = 0; i < format.length; i++) {
if (format[i] == "<") {
littleEndian = true;
} else if (format[i] == ">") {
littleEndian = false;
} else if (format[i] == "B") {
pushBytes(data[pointer], 1);
pointer++;
} else if (format[i] == "H") {
pushBytes(data[pointer], 2);
pointer++;
} else if (format[i] == "I") {
pushBytes(data[pointer], 4);
pointer++;
} else {
throw new Error(`Unhandled character "${format[i]}" in pack format`);
}
}
return bytes;
};
export const unpack = (format: string, bytes: number[]) => {
let pointer = 0;
let data = [];
for (let c of format) {
if (c == "B") {
data.push(bytes[pointer] & 0xff);
pointer += 1;
} else if (c == "H") {
data.push((bytes[pointer] & 0xff) | ((bytes[pointer + 1] & 0xff) << 8));
pointer += 2;
} else if (c == "I") {
data.push(
(bytes[pointer] & 0xff) |
((bytes[pointer + 1] & 0xff) << 8) |
((bytes[pointer + 2] & 0xff) << 16) |
((bytes[pointer + 3] & 0xff) << 24)
);
pointer += 4;
} else {
throw new Error(`Unhandled character "${c}" in unpack format`);
}
}
return data;
};
export const toHex = (value: number, size = 2) => {

@@ -106,0 +43,0 @@ let hex = value.toString(16).toUpperCase();

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc