@liquid-js/qr-code-styling 4.0.5 → 4.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -81
- package/lib/core/qr-code-styling.d.ts +2 -2
- package/lib/core/qr-svg.d.ts +3 -3
- package/lib/figures/corner-dot.d.ts +2 -2
- package/lib/figures/corner-square.d.ts +2 -2
- package/lib/figures/dot.d.ts +2 -2
- package/lib/index.d.ts +9 -9
- package/lib/kanji.js +1 -1
- package/lib/kanji.js.map +1 -1
- package/lib/node.d.ts +12 -12
- package/lib/qr-code-styling-node.js +33 -30
- package/lib/qr-code-styling-node.js.map +1 -1
- package/lib/qr-code-styling.js +1 -1
- package/lib/qr-code-styling.js.map +1 -1
- package/lib/tools/browser-image-tools.d.ts +2 -2
- package/lib/tools/browser-utils.d.ts +3 -3
- package/lib/types/helper.d.ts +7 -7
- package/lib/utils/gradient.d.ts +4 -4
- package/lib/utils/options.d.ts +3 -3
- package/lib/utils/qrcode.d.ts +1 -1
- package/package.json +2 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qr-code-styling.js","sources":["../node_modules/@liquid-js/qrcode-generator/lib/qrcode/BitBuffer.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/ErrorCorrectLevel.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRMath.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/Polynomial.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/Mode.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRData.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QR8BitByte.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRAlphaNum.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRKanji.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRNumber.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/MaskPattern.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRUtil.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/RSBlock.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js","../src/utils/merge.ts","../src/utils/gradient.ts","../src/utils/options.ts","../src/utils/qrcode.ts","../src/utils/svg.ts","../src/figures/corner-dot.ts","../src/figures/corner-square.ts","../src/figures/dot.ts","../src/tools/browser-image-tools.ts","../src/utils/color.ts","../src/core/qr-svg.ts","../src/utils/image.ts","../src/core/qr-code-styling.ts","../node_modules/@liquid-js/qrcode-generator/lib/text/stringToBytes_UTF8.js","../src/utils/canvas-options.ts","../src/tools/browser-utils.ts","../src/index.ts"],"sourcesContent":["export class BitBuffer {\n constructor() {\n this.buffer = [];\n this.length = 0;\n }\n getBuffer() {\n return this.buffer;\n }\n getLengthInBits() {\n return this.length;\n }\n toString() {\n let buffer = \"\";\n for (let i = 0; i < this.getLengthInBits(); i += 1) {\n buffer += this.getBit(i) ? \"1\" : \"0\";\n }\n return buffer;\n }\n getBit(index) {\n return ((this.buffer[~~(index / 8)] >>> (7 - (index % 8))) & 1) == 1;\n }\n put(num, length) {\n for (let i = 0; i < length; i += 1) {\n this.putBit(((num >>> (length - i - 1)) & 1) == 1);\n }\n }\n putBit(bit) {\n if (this.length == this.buffer.length * 8) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[~~(this.length / 8)] |= 0x80 >>> this.length % 8;\n }\n this.length += 1;\n }\n}\n//# sourceMappingURL=BitBuffer.js.map","/**\n * ErrorCorrectLevel\n * @author Kazuhiko Arase\n */\nexport var ErrorCorrectLevel;\n(function (ErrorCorrectLevel) {\n /**\n * 7%\n */\n ErrorCorrectLevel[ErrorCorrectLevel[\"L\"] = 1] = \"L\";\n /**\n * 15%\n */\n ErrorCorrectLevel[ErrorCorrectLevel[\"M\"] = 0] = \"M\";\n /**\n * 25%\n */\n ErrorCorrectLevel[ErrorCorrectLevel[\"Q\"] = 3] = \"Q\";\n /**\n * 30%\n */\n ErrorCorrectLevel[ErrorCorrectLevel[\"H\"] = 2] = \"H\";\n})(ErrorCorrectLevel || (ErrorCorrectLevel = {}));\n//# sourceMappingURL=ErrorCorrectLevel.js.map","/**\n * QRMath\n * @author Kazuhiko Arase\n */\nexport class QRMath {\n constructor() {\n throw \"error\";\n }\n static glog(n) {\n if (n < 1) {\n throw \"log(\" + n + \")\";\n }\n return QRMath.LOG_TABLE[n];\n }\n static gexp(n) {\n while (n < 0) {\n n += 255;\n }\n while (n >= 256) {\n n -= 255;\n }\n return QRMath.EXP_TABLE[n];\n }\n}\nQRMath.initialize = (function () {\n QRMath.EXP_TABLE = [];\n QRMath.LOG_TABLE = [];\n for (let i = 0; i < 256; i += 1) {\n QRMath.EXP_TABLE.push(i < 8\n ? 1 << i\n : QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8]);\n QRMath.LOG_TABLE.push(0);\n }\n for (let i = 0; i < 255; i += 1) {\n QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;\n }\n})();\n//# sourceMappingURL=QRMath.js.map","import { QRMath } from \"./QRMath.js\";\n/**\n * Polynomial\n * @author Kazuhiko Arase\n */\nexport class Polynomial {\n constructor(num, shift = 0) {\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n this.num = [];\n const len = num.length - offset;\n for (let i = 0; i < len; i += 1) {\n this.num.push(num[offset + i]);\n }\n for (let i = 0; i < shift; i += 1) {\n this.num.push(0);\n }\n }\n getAt(index) {\n return this.num[index];\n }\n getLength() {\n return this.num.length;\n }\n toString() {\n let buffer = \"\";\n for (let i = 0; i < this.getLength(); i += 1) {\n if (i > 0) {\n buffer += \",\";\n }\n buffer += this.getAt(i);\n }\n return buffer.toString();\n }\n toLogString() {\n let buffer = \"\";\n for (let i = 0; i < this.getLength(); i += 1) {\n if (i > 0) {\n buffer += \",\";\n }\n buffer += QRMath.glog(this.getAt(i));\n }\n return buffer.toString();\n }\n multiply(e) {\n const num = [];\n const len = this.getLength() + e.getLength() - 1;\n for (let i = 0; i < len; i += 1) {\n num.push(0);\n }\n for (let i = 0; i < this.getLength(); i += 1) {\n for (let j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(this.getAt(i)) + QRMath.glog(e.getAt(j)));\n }\n }\n return new Polynomial(num);\n }\n mod(e) {\n if (this.getLength() - e.getLength() < 0) {\n return this;\n }\n const ratio = QRMath.glog(this.getAt(0)) - QRMath.glog(e.getAt(0));\n // create copy\n const num = [];\n for (let i = 0; i < this.getLength(); i += 1) {\n num.push(this.getAt(i));\n }\n // subtract and calc rest.\n for (let i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i)) + ratio);\n }\n // call recursively\n return new Polynomial(num).mod(e);\n }\n}\n//# sourceMappingURL=Polynomial.js.map","/**\n * Mode\n * @author Kazuhiko Arase\n */\nexport var Mode;\n(function (Mode) {\n /**\n * number\n */\n Mode[Mode[\"MODE_NUMBER\"] = 1] = \"MODE_NUMBER\";\n /**\n * alphabet and number\n */\n Mode[Mode[\"MODE_ALPHA_NUM\"] = 2] = \"MODE_ALPHA_NUM\";\n /**\n * 8bit byte\n */\n Mode[Mode[\"MODE_8BIT_BYTE\"] = 4] = \"MODE_8BIT_BYTE\";\n /**\n * KANJI\n */\n Mode[Mode[\"MODE_KANJI\"] = 8] = \"MODE_KANJI\";\n})(Mode || (Mode = {}));\n//# sourceMappingURL=Mode.js.map","import { Mode } from \"./Mode.js\";\n/**\n * QRData\n * @author Kazuhiko Arase\n */\nexport class QRData {\n constructor(mode, data) {\n this.mode = mode;\n this.data = data;\n }\n getMode() {\n return this.mode;\n }\n getData() {\n return this.data;\n }\n getLengthInBits(typeNumber) {\n if (1 <= typeNumber && typeNumber < 10) {\n // 1 - 9\n switch (this.mode) {\n case Mode.MODE_NUMBER:\n return 10;\n case Mode.MODE_ALPHA_NUM:\n return 9;\n case Mode.MODE_8BIT_BYTE:\n return 8;\n case Mode.MODE_KANJI:\n return 8;\n default:\n throw \"mode:\" + this.mode;\n }\n }\n else if (typeNumber < 27) {\n // 10 - 26\n switch (this.mode) {\n case Mode.MODE_NUMBER:\n return 12;\n case Mode.MODE_ALPHA_NUM:\n return 11;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 10;\n default:\n throw \"mode:\" + this.mode;\n }\n }\n else if (typeNumber < 41) {\n // 27 - 40\n switch (this.mode) {\n case Mode.MODE_NUMBER:\n return 14;\n case Mode.MODE_ALPHA_NUM:\n return 13;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 12;\n default:\n throw \"mode:\" + this.mode;\n }\n }\n else {\n throw \"typeNumber:\" + typeNumber;\n }\n }\n}\n//# sourceMappingURL=QRData.js.map","import { Mode } from \"./Mode.js\";\nimport { QRData } from \"./QRData.js\";\n/**\n * QR8BitByte\n * @author Kazuhiko Arase\n */\nexport class QR8BitByte extends QRData {\n constructor(data, stringToBytes) {\n super(Mode.MODE_8BIT_BYTE, data);\n this.stringToBytes = stringToBytes;\n }\n write(buffer) {\n const data = this.stringToBytes(this.getData());\n for (let i = 0; i < data.length; i += 1) {\n buffer.put(data[i], 8);\n }\n }\n getLength() {\n return this.stringToBytes(this.getData()).length;\n }\n}\n//# sourceMappingURL=QR8BitByte.js.map","import { Mode } from \"./Mode.js\";\nimport { QRData } from \"./QRData.js\";\n/**\n * QRAlphaNum\n * @author Kazuhiko Arase\n */\nexport class QRAlphaNum extends QRData {\n constructor(data) {\n super(Mode.MODE_ALPHA_NUM, data);\n }\n write(buffer) {\n const s = this.getData();\n let i = 0;\n while (i + 1 < s.length) {\n buffer.put(QRAlphaNum.getCode(s.charAt(i)) * 45 + QRAlphaNum.getCode(s.charAt(i + 1)), 11);\n i += 2;\n }\n if (i < s.length) {\n buffer.put(QRAlphaNum.getCode(s.charAt(i)), 6);\n }\n }\n getLength() {\n return this.getData().length;\n }\n static getCode(c) {\n if (\"0\" <= c && c <= \"9\") {\n return c.charCodeAt(0) - \"0\".charCodeAt(0);\n }\n else if (\"A\" <= c && c <= \"Z\") {\n return c.charCodeAt(0) - \"A\".charCodeAt(0) + 10;\n }\n else {\n switch (c) {\n case \" \":\n return 36;\n case \"$\":\n return 37;\n case \"%\":\n return 38;\n case \"*\":\n return 39;\n case \"+\":\n return 40;\n case \"-\":\n return 41;\n case \".\":\n return 42;\n case \"/\":\n return 43;\n case \":\":\n return 44;\n default:\n throw \"illegal char :\" + c;\n }\n }\n }\n}\n//# sourceMappingURL=QRAlphaNum.js.map","import { Mode } from \"./Mode.js\";\nimport { QRData } from \"./QRData.js\";\n/**\n * QRKanji(SJIS only)\n * @author Kazuhiko Arase\n */\nexport class QRKanji extends QRData {\n constructor(data, stringToBytes) {\n super(Mode.MODE_KANJI, data);\n this.stringToBytes = stringToBytes;\n }\n write(buffer) {\n const data = this.stringToBytes(this.getData());\n let i = 0;\n while (i + 1 < data.length) {\n let c = ((0xff & data[i]) << 8) | (0xff & data[i + 1]);\n if (0x8140 <= c && c <= 0x9ffc) {\n c -= 0x8140;\n }\n else if (0xe040 <= c && c <= 0xebbf) {\n c -= 0xc140;\n }\n else {\n throw \"illegal char at \" + (i + 1) + \"/\" + c;\n }\n c = ((c >>> 8) & 0xff) * 0xc0 + (c & 0xff);\n buffer.put(c, 13);\n i += 2;\n }\n if (i < data.length) {\n throw \"illegal char at \" + (i + 1);\n }\n }\n getLength() {\n return this.stringToBytes(this.getData()).length / 2;\n }\n}\n//# sourceMappingURL=QRKanji.js.map","import { Mode } from \"./Mode.js\";\nimport { QRData } from \"./QRData.js\";\n/**\n * QRNumber\n * @author Kazuhiko Arase\n */\nexport class QRNumber extends QRData {\n constructor(data) {\n super(Mode.MODE_NUMBER, data);\n }\n write(buffer) {\n const data = this.getData();\n let i = 0;\n while (i + 2 < data.length) {\n buffer.put(QRNumber.strToNum(data.substring(i, i + 3)), 10);\n i += 3;\n }\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(QRNumber.strToNum(data.substring(i, i + 1)), 4);\n }\n else if (data.length - i == 2) {\n buffer.put(QRNumber.strToNum(data.substring(i, i + 2)), 7);\n }\n }\n }\n getLength() {\n return this.getData().length;\n }\n static strToNum(s) {\n let num = 0;\n for (let i = 0; i < s.length; i += 1) {\n num = num * 10 + QRNumber.chatToNum(s.charAt(i));\n }\n return num;\n }\n static chatToNum(c) {\n if (\"0\" <= c && c <= \"9\") {\n return c.charCodeAt(0) - \"0\".charCodeAt(0);\n }\n throw \"illegal char :\" + c;\n }\n}\n//# sourceMappingURL=QRNumber.js.map","/**\n * MaskPattern\n * @author Kazuhiko Arase\n */\nexport var MaskPattern;\n(function (MaskPattern) {\n /**\n * mask pattern 000\n */\n MaskPattern[MaskPattern[\"PATTERN000\"] = 0] = \"PATTERN000\";\n /**\n * mask pattern 001\n */\n MaskPattern[MaskPattern[\"PATTERN001\"] = 1] = \"PATTERN001\";\n /**\n * mask pattern 010\n */\n MaskPattern[MaskPattern[\"PATTERN010\"] = 2] = \"PATTERN010\";\n /**\n * mask pattern 011\n */\n MaskPattern[MaskPattern[\"PATTERN011\"] = 3] = \"PATTERN011\";\n /**\n * mask pattern 100\n */\n MaskPattern[MaskPattern[\"PATTERN100\"] = 4] = \"PATTERN100\";\n /**\n * mask pattern 101\n */\n MaskPattern[MaskPattern[\"PATTERN101\"] = 5] = \"PATTERN101\";\n /**\n * mask pattern 110\n */\n MaskPattern[MaskPattern[\"PATTERN110\"] = 6] = \"PATTERN110\";\n /**\n * mask pattern 111\n */\n MaskPattern[MaskPattern[\"PATTERN111\"] = 7] = \"PATTERN111\";\n})(MaskPattern || (MaskPattern = {}));\n//# sourceMappingURL=MaskPattern.js.map","import { ErrorCorrectLevel } from \"./ErrorCorrectLevel.js\";\nimport { MaskPattern } from \"./MaskPattern.js\";\nimport { Mode } from \"./Mode.js\";\nimport { Polynomial } from \"./Polynomial.js\";\nimport { QRMath } from \"./QRMath.js\";\n/**\n * QRUtil\n * @author Kazuhiko Arase\n */\nexport class QRUtil {\n constructor() {\n throw \"error\";\n }\n static getPatternPosition(typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n }\n static getMaxLength(typeNumber, mode, errorCorrectLevel) {\n const t = typeNumber - 1;\n let e = 0;\n let m = 0;\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n e = 0;\n break;\n case ErrorCorrectLevel.M:\n e = 1;\n break;\n case ErrorCorrectLevel.Q:\n e = 2;\n break;\n case ErrorCorrectLevel.H:\n e = 3;\n break;\n default:\n throw \"e:\" + errorCorrectLevel;\n }\n switch (mode) {\n case Mode.MODE_NUMBER:\n m = 0;\n break;\n case Mode.MODE_ALPHA_NUM:\n m = 1;\n break;\n case Mode.MODE_8BIT_BYTE:\n m = 2;\n break;\n case Mode.MODE_KANJI:\n m = 3;\n break;\n default:\n throw \"m:\" + mode;\n }\n return QRUtil.MAX_LENGTH[t][e][m];\n }\n static getErrorCorrectPolynomial(errorCorrectLength) {\n let a = new Polynomial([1]);\n for (let i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(new Polynomial([1, QRMath.gexp(i)]));\n }\n return a;\n }\n static getMaskFunc(maskPattern) {\n switch (maskPattern) {\n case MaskPattern.PATTERN000:\n return (i, j) => (i + j) % 2 == 0;\n case MaskPattern.PATTERN001:\n return (i, _j) => i % 2 == 0;\n case MaskPattern.PATTERN010:\n return (_i, j) => j % 3 == 0;\n case MaskPattern.PATTERN011:\n return (i, j) => (i + j) % 3 == 0;\n case MaskPattern.PATTERN100:\n return (i, j) => (~~(i / 2) + ~~(j / 3)) % 2 == 0;\n case MaskPattern.PATTERN101:\n return (i, j) => ((i * j) % 2) + ((i * j) % 3) == 0;\n case MaskPattern.PATTERN110:\n return (i, j) => (((i * j) % 2) + ((i * j) % 3)) % 2 == 0;\n case MaskPattern.PATTERN111:\n return (i, j) => (((i * j) % 3) + ((i + j) % 2)) % 2 == 0;\n default:\n throw \"mask:\" + maskPattern;\n }\n }\n static getLostPoint(qrCode) {\n const moduleCount = qrCode.getModuleCount();\n let lostPoint = 0;\n // LEVEL1\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount; col += 1) {\n let sameCount = 0;\n const dark = qrCode.isDark(row, col);\n for (let r = -1; r <= 1; r += 1) {\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n for (let c = -1; c <= 1; c += 1) {\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n if (r == 0 && c == 0) {\n continue;\n }\n if (dark == qrCode.isDark(row + r, col + c)) {\n sameCount += 1;\n }\n }\n }\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n }\n // LEVEL2\n for (let row = 0; row < moduleCount - 1; row += 1) {\n for (let col = 0; col < moduleCount - 1; col += 1) {\n let count = 0;\n if (qrCode.isDark(row, col))\n count += 1;\n if (qrCode.isDark(row + 1, col))\n count += 1;\n if (qrCode.isDark(row, col + 1))\n count += 1;\n if (qrCode.isDark(row + 1, col + 1))\n count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n // LEVEL3\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount - 6; col += 1) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row, col + 1) &&\n qrCode.isDark(row, col + 2) &&\n qrCode.isDark(row, col + 3) &&\n qrCode.isDark(row, col + 4) &&\n !qrCode.isDark(row, col + 5) &&\n qrCode.isDark(row, col + 6)) {\n lostPoint += 40;\n }\n }\n }\n for (let col = 0; col < moduleCount; col += 1) {\n for (let row = 0; row < moduleCount - 6; row += 1) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col)) {\n lostPoint += 40;\n }\n }\n }\n // LEVEL4\n let darkCount = 0;\n for (let col = 0; col < moduleCount; col += 1) {\n for (let row = 0; row < moduleCount; row += 1) {\n if (qrCode.isDark(row, col)) {\n darkCount += 1;\n }\n }\n }\n const ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n return lostPoint;\n }\n static getBCHTypeInfo(data) {\n let d = data << 10;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15));\n }\n return ((data << 10) | d) ^ QRUtil.G15_MASK;\n }\n static getBCHTypeNumber(data) {\n let d = data << 12;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18));\n }\n return (data << 12) | d;\n }\n static getBCHDigit(data) {\n let digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n }\n}\nQRUtil.PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n];\nQRUtil.MAX_LENGTH = [\n [\n [41, 25, 17, 10],\n [34, 20, 14, 8],\n [27, 16, 11, 7],\n [17, 10, 7, 4]\n ],\n [\n [77, 47, 32, 20],\n [63, 38, 26, 16],\n [48, 29, 20, 12],\n [34, 20, 14, 8]\n ],\n [\n [127, 77, 53, 32],\n [101, 61, 42, 26],\n [77, 47, 32, 20],\n [58, 35, 24, 15]\n ],\n [\n [187, 114, 78, 48],\n [149, 90, 62, 38],\n [111, 67, 46, 28],\n [82, 50, 34, 21]\n ],\n [\n [255, 154, 106, 65],\n [202, 122, 84, 52],\n [144, 87, 60, 37],\n [106, 64, 44, 27]\n ],\n [\n [322, 195, 134, 82],\n [255, 154, 106, 65],\n [178, 108, 74, 45],\n [139, 84, 58, 36]\n ],\n [\n [370, 224, 154, 95],\n [293, 178, 122, 75],\n [207, 125, 86, 53],\n [154, 93, 64, 39]\n ],\n [\n [461, 279, 192, 118],\n [365, 221, 152, 93],\n [259, 157, 108, 66],\n [202, 122, 84, 52]\n ],\n [\n [552, 335, 230, 141],\n [432, 262, 180, 111],\n [312, 189, 130, 80],\n [235, 143, 98, 60]\n ],\n [\n [652, 395, 271, 167],\n [513, 311, 213, 131],\n [364, 221, 151, 93],\n [288, 174, 119, 74]\n ]\n];\nQRUtil.G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\nQRUtil.G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\nQRUtil.G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n//# sourceMappingURL=QRUtil.js.map","import { ErrorCorrectLevel } from \"./ErrorCorrectLevel.js\";\n/**\n * RSBlock\n * @author Kazuhiko Arase\n */\nexport class RSBlock {\n constructor(totalCount, dataCount) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n }\n getDataCount() {\n return this.dataCount;\n }\n getTotalCount() {\n return this.totalCount;\n }\n static getRSBlocks(typeNumber, errorCorrectLevel) {\n const rsBlock = RSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n const length = rsBlock.length / 3;\n const list = [];\n for (let i = 0; i < length; i += 1) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n for (let j = 0; j < count; j += 1) {\n list.push(new RSBlock(totalCount, dataCount));\n }\n }\n return list;\n }\n static getRsBlockTable(typeNumber, errorCorrectLevel) {\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n return RSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case ErrorCorrectLevel.M:\n return RSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case ErrorCorrectLevel.Q:\n return RSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case ErrorCorrectLevel.H:\n return RSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default:\n break;\n }\n throw \"tn:\" + typeNumber + \"/ecl:\" + errorCorrectLevel;\n }\n}\nRSBlock.RS_BLOCK_TABLE = [\n // L\n // M\n // Q\n // H\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n];\n//# sourceMappingURL=RSBlock.js.map","import { BitBuffer } from \"./BitBuffer.js\";\nimport { ErrorCorrectLevel } from \"./ErrorCorrectLevel.js\";\nimport { Polynomial } from \"./Polynomial.js\";\nimport { QR8BitByte } from \"./QR8BitByte.js\";\nimport { QRAlphaNum } from \"./QRAlphaNum.js\";\nimport { QRData } from \"./QRData.js\";\nimport { QRKanji } from \"./QRKanji.js\";\nimport { QRNumber } from \"./QRNumber.js\";\nimport { QRUtil } from \"./QRUtil.js\";\nimport { RSBlock } from \"./RSBlock.js\";\nconst TypeNumber = Array(41)\n .fill(0)\n .map((_, i) => i);\nexport { TypeNumber };\nexport var ErrorCorrectionLevel;\n(function (ErrorCorrectionLevel) {\n ErrorCorrectionLevel[\"L\"] = \"L\";\n ErrorCorrectionLevel[\"M\"] = \"M\";\n ErrorCorrectionLevel[\"Q\"] = \"Q\";\n ErrorCorrectionLevel[\"H\"] = \"H\";\n})(ErrorCorrectionLevel || (ErrorCorrectionLevel = {}));\nexport var Mode;\n(function (Mode) {\n Mode[\"numeric\"] = \"numeric\";\n Mode[\"alphanumeric\"] = \"alphanumeric\";\n /**\n * Default\n */\n Mode[\"byte\"] = \"byte\";\n Mode[\"kanji\"] = \"kanji\";\n Mode[\"unicode\"] = \"unicode\";\n})(Mode || (Mode = {}));\n/**\n * QRCode\n * @author Kazuhiko Arase\n */\nexport class QRCodeMinimal {\n constructor(typeNumber = 0, errorCorrectionLevel = ErrorCorrectionLevel.L) {\n this.modules = [];\n this.moduleCount = 0;\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = ErrorCorrectLevel[errorCorrectionLevel];\n this.qrDataList = [];\n }\n getTypeNumber() {\n return this.typeNumber;\n }\n setTypeNumber(typeNumber) {\n this.typeNumber = typeNumber;\n }\n getErrorCorrectLevel() {\n return this.errorCorrectLevel;\n }\n setErrorCorrectLevel(errorCorrectLevel) {\n this.errorCorrectLevel = errorCorrectLevel;\n }\n clearData() {\n this.qrDataList = [];\n }\n addData(qrData, mode = Mode.byte) {\n if (qrData instanceof QRData) {\n this.qrDataList.push(qrData);\n }\n else if (typeof qrData === \"string\") {\n switch (mode) {\n case Mode.numeric:\n this.qrDataList.push(new QRNumber(qrData));\n break;\n case Mode.alphanumeric:\n this.qrDataList.push(new QRAlphaNum(qrData));\n break;\n case Mode.byte:\n this.qrDataList.push(new QR8BitByte(qrData, QRCodeMinimal.stringToBytesFuncs.default));\n break;\n case Mode.unicode:\n this.qrDataList.push(new QR8BitByte(qrData, QRCodeMinimal.stringToBytesFuncs[\"UTF8\"]));\n break;\n case Mode.kanji:\n this.qrDataList.push(new QRKanji(qrData, QRCodeMinimal.stringToBytesFuncs[\"SJIS\"]));\n break;\n default:\n throw \"mode:\" + mode;\n }\n }\n else {\n throw typeof qrData;\n }\n }\n /*private getDataCount(): number {\n return this.qrDataList.length;\n }\n \n private getData(index: number): QRData {\n return this.qrDataList[index];\n }*/\n isDark(row, col) {\n if (this.modules[row][col] != null) {\n return this.modules[row][col];\n }\n else {\n return false;\n }\n }\n getModuleCount() {\n return this.moduleCount;\n }\n make() {\n if (this.typeNumber < 1) {\n let typeNumber = 1;\n for (; typeNumber < 40; typeNumber++) {\n const rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n const buffer = new BitBuffer();\n for (let i = 0; i < this.qrDataList.length; i++) {\n const data = this.qrDataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), data.getLengthInBits(typeNumber));\n data.write(buffer);\n }\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].getDataCount();\n }\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n this.typeNumber = typeNumber;\n }\n this.makeImpl(false, this.getBestMaskPattern());\n }\n getBestMaskPattern() {\n let minLostPoint = 0;\n let pattern = 0;\n for (let i = 0; i < 8; i += 1) {\n this.makeImpl(true, i);\n const lostPoint = QRUtil.getLostPoint(this);\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n return pattern;\n }\n makeImpl(test, maskPattern) {\n // initialize modules\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = [];\n for (let i = 0; i < this.moduleCount; i += 1) {\n this.modules.push([]);\n for (let j = 0; j < this.moduleCount; j += 1) {\n this.modules[i].push(null);\n }\n }\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n const data = QRCodeMinimal.createData(this.typeNumber, this.errorCorrectLevel, this.qrDataList);\n this.mapData(data, maskPattern);\n }\n mapData(data, maskPattern) {\n let inc = -1;\n let row = this.moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n const maskFunc = QRUtil.getMaskFunc(maskPattern);\n for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col == 6) {\n col -= 1;\n }\n while (true) {\n for (let c = 0; c < 2; c += 1) {\n if (this.modules[row][col - c] == null) {\n let dark = false;\n if (byteIndex < data.length) {\n dark = ((data[byteIndex] >>> bitIndex) & 1) == 1;\n }\n const mask = maskFunc(row, col - c);\n if (mask) {\n dark = !dark;\n }\n this.modules[row][col - c] = dark;\n bitIndex -= 1;\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n row += inc;\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n }\n setupPositionAdjustPattern() {\n const pos = QRUtil.getPatternPosition(this.typeNumber);\n for (let i = 0; i < pos.length; i += 1) {\n for (let j = 0; j < pos.length; j += 1) {\n const row = pos[i];\n const col = pos[j];\n if (this.modules[row][col] != null) {\n continue;\n }\n for (let r = -2; r <= 2; r += 1) {\n for (let c = -2; c <= 2; c += 1) {\n if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n }\n setupPositionProbePattern(row, col) {\n for (let r = -1; r <= 7; r += 1) {\n for (let c = -1; c <= 7; c += 1) {\n if (row + r <= -1 || this.moduleCount <= row + r || col + c <= -1 || this.moduleCount <= col + c) {\n continue;\n }\n if ((0 <= r && r <= 6 && (c == 0 || c == 6)) ||\n (0 <= c && c <= 6 && (r == 0 || r == 6)) ||\n (2 <= r && r <= 4 && 2 <= c && c <= 4)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n setupTimingPattern() {\n for (let r = 8; r < this.moduleCount - 8; r += 1) {\n if (this.modules[r][6] != null) {\n continue;\n }\n this.modules[r][6] = r % 2 == 0;\n }\n for (let c = 8; c < this.moduleCount - 8; c += 1) {\n if (this.modules[6][c] != null) {\n continue;\n }\n this.modules[6][c] = c % 2 == 0;\n }\n }\n setupTypeNumber(test) {\n const bits = QRUtil.getBCHTypeNumber(this.typeNumber);\n for (let i = 0; i < 18; i += 1) {\n this.modules[~~(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = !test && ((bits >> i) & 1) == 1;\n }\n for (let i = 0; i < 18; i += 1) {\n this.modules[(i % 3) + this.moduleCount - 8 - 3][~~(i / 3)] = !test && ((bits >> i) & 1) == 1;\n }\n }\n setupTypeInfo(test, maskPattern) {\n const data = (this.errorCorrectLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n // vertical\n for (let i = 0; i < 15; i += 1) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 6) {\n this.modules[i][8] = mod;\n }\n else if (i < 8) {\n this.modules[i + 1][8] = mod;\n }\n else {\n this.modules[this.moduleCount - 15 + i][8] = mod;\n }\n }\n // horizontal\n for (let i = 0; i < 15; i += 1) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 8) {\n this.modules[8][this.moduleCount - i - 1] = mod;\n }\n else if (i < 9) {\n this.modules[8][15 - i - 1 + 1] = mod;\n }\n else {\n this.modules[8][15 - i - 1] = mod;\n }\n }\n // fixed\n this.modules[this.moduleCount - 8][8] = !test;\n }\n static createData(typeNumber, errorCorrectLevel, dataArray) {\n const rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n const buffer = new BitBuffer();\n for (let i = 0; i < dataArray.length; i += 1) {\n const data = dataArray[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), data.getLengthInBits(typeNumber));\n data.write(buffer);\n }\n // calc max data count\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].getDataCount();\n }\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw \"code length overflow. (\" + buffer.getLengthInBits() + \">\" + totalDataCount * 8 + \")\";\n }\n // end\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n // padding\n while (true) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCodeMinimal.PAD0, 8);\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCodeMinimal.PAD1, 8);\n }\n return QRCodeMinimal.createBytes(buffer, rsBlocks);\n }\n static createBytes(buffer, rsBlocks) {\n let offset = 0;\n let maxDcCount = 0;\n let maxEcCount = 0;\n const dcdata = [];\n const ecdata = [];\n for (let r = 0; r < rsBlocks.length; r += 1) {\n dcdata.push([]);\n ecdata.push([]);\n }\n function createNumArray(len) {\n const a = [];\n for (let i = 0; i < len; i += 1) {\n a.push(0);\n }\n return a;\n }\n for (let r = 0; r < rsBlocks.length; r += 1) {\n const dcCount = rsBlocks[r].getDataCount();\n const ecCount = rsBlocks[r].getTotalCount() - dcCount;\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n dcdata[r] = createNumArray(dcCount);\n for (let i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = createNumArray(rsPoly.getLength() - 1);\n for (let i = 0; i < ecdata[r].length; i += 1) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.getAt(modIndex) : 0;\n }\n }\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].getTotalCount();\n }\n const data = createNumArray(totalCodeCount);\n let index = 0;\n for (let i = 0; i < maxDcCount; i += 1) {\n for (let r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n for (let i = 0; i < maxEcCount; i += 1) {\n for (let r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n return data;\n }\n}\nQRCodeMinimal.PAD0 = 0xec;\nQRCodeMinimal.PAD1 = 0x11;\nQRCodeMinimal.stringToBytesFuncs = {\n default: function (s) {\n const bytes = [];\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n};\n//# sourceMappingURL=QRCodeMinimal.js.map","const isObject = (obj: Record<string, unknown> | undefined): boolean =>\n !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport type UnknownObject =\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n }\n | undefined;\n\nexport function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export enum GradientType {\n radial = \"radial\",\n linear = \"linear\"\n}\n\nexport type Gradient = {\n /**\n * Type of gradient spread\n *\n * @default GradientType.linear\n */\n type: `${GradientType}`;\n /**\n * Rotation of gradient (in radians, Math.PI === 180 degrees)\n *\n * @default 0\n */\n rotation?: number;\n /** Gradient colors. */\n colorStops: {\n /** Position of color in gradient range */\n offset: number;\n /** Color of stop in gradient range */\n color: string;\n }[];\n};\n\nexport function sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n","import { ErrorCorrectionLevel, Mode, TypeNumber } from \"@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js\";\nimport { browserImageTools } from \"../tools/browser-image-tools.js\";\nimport { Gradient, sanitizeGradient } from \"./gradient.js\";\n\nexport enum DotType {\n dot = \"dot\",\n randomDot = \"random-dot\",\n rounded = \"rounded\",\n extraRounded = \"extra-rounded\",\n verticalLine = \"vertical-line\",\n horizontalLine = \"horizontal-line\",\n classy = \"classy\",\n classyRounded = \"classy-rounded\",\n square = \"square\",\n smallSquare = \"small-square\",\n tinySquare = \"tiny-square\",\n diamond = \"diamond\"\n}\n\nexport enum CornerDotType {\n dot = \"dot\",\n square = \"square\",\n heart = \"heart\",\n extraRounded = \"extra-rounded\",\n classy = \"classy\",\n outpoint = \"outpoint\",\n inpoint = \"inpoint\"\n}\n\nexport enum CornerSquareType {\n dot = \"dot\",\n square = \"square\",\n extraRounded = \"extra-rounded\",\n classy = \"classy\",\n outpoint = \"outpoint\",\n inpoint = \"inpoint\"\n}\n\nexport enum ShapeType {\n square = \"square\",\n circle = \"circle\"\n}\n\nexport enum ImageMode {\n /**\n * Place image in the center of the code\n */\n center = \"center\",\n /**\n * Place image over the center of the code\n */\n overlay = \"overlay\",\n /**\n * Use image as background, draw dots over it\n */\n background = \"background\"\n}\n\nexport interface Options {\n /** Use a custom DOM domplementation */\n document: Document;\n /** Use a custom image fetching & serializaton implementation */\n imageTools?: typeof browserImageTools;\n /** @ignore */\n width: number;\n /** @ignore */\n height: number;\n /** The data will be encoded in the QR code */\n data: string;\n /** The image will be copied to the center of the QR code */\n image?: string | Buffer | Blob;\n /**\n * QR code shape\n *\n * @default ShapeType.square\n */\n shape: `${ShapeType}`;\n /** Options will be passed to `@liquid-js/qrcode-generator` lib */\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: `${Mode}`;\n /** @default ErrorCorrectionLevel.Q */\n errorCorrectionLevel: `${ErrorCorrectionLevel}`;\n };\n imageOptions: {\n /**\n * Image mode\n *\n * @default ImageMode.center\n */\n mode: `${ImageMode}`;\n /**\n * Fill blank areas of the code with selected color\n */\n fill: {\n /**\n * Color of QR dots\n *\n * @default \"rgba(255,255,255,0.75)\"\n */\n color: string;\n /** Gradient of Corners Dot */\n gradient?: Gradient;\n };\n /**\n * Coefficient of the image size\n *\n * @default 0.4\n */\n imageSize: number;\n /**\n * Margin of the image (in blocks)\n *\n * @default 0\n */\n margin: number;\n /**\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLImageElement/crossOrigin)\n */\n crossOrigin?: string;\n };\n dotsOptions: {\n /**\n * QR dot size (in pixels)\n *\n * @default 10\n */\n size: number;\n /**\n * Color of QR dots\n *\n * @default \"#000\"\n */\n color: string;\n /** Gradient of QR dots */\n gradient?: Gradient;\n /**\n * Style of QR dots\n *\n * @default DotType.square\n */\n type: `${DotType}`;\n };\n /** Corners Square options, omitted values match dots */\n cornersSquareOptions?: {\n /** Color of Corners Square */\n color?: string;\n /** Gradient of Corners Square */\n gradient?: Gradient;\n /** Style of Corners Square */\n type?: `${CornerSquareType}`;\n };\n /** Corners Dot options, omitted values match squares */\n cornersDotOptions?: {\n /** Color of Corners Dot */\n color?: string;\n /** Gradient of Corners Dot */\n gradient?: Gradient;\n /** Style of Corners Dot */\n type?: `${CornerDotType}`;\n };\n /** QR background styling options, false to disable background */\n backgroundOptions?:\n | {\n /** Background roundnes, from 0 (square) to 1 (circle) */\n round?: number;\n /** Background color */\n color?: string;\n /** Background Gradient */\n gradient?: Gradient;\n /**\n * Margin (in blocks) between background and the QR code\n *\n * @default 0\n */\n margin?: number;\n }\n | false;\n /** `import { stringToBytesFuncs } from \"@liquid-js/qr-code-styling/kanji\";` to add Kanji support */\n stringToBytesFuncs?: { [encoding: string]: (s: string) => number[] };\n}\n\nexport const defaultOptions: Options = {\n document: undefined as never,\n shape: ShapeType.square,\n width: undefined as never,\n height: undefined as never,\n data: \"\",\n qrOptions: {\n typeNumber: TypeNumber[0],\n mode: undefined,\n errorCorrectionLevel: ErrorCorrectionLevel.Q\n },\n imageOptions: {\n mode: ImageMode.center,\n imageSize: 0.4,\n crossOrigin: undefined,\n margin: 0,\n fill: {\n color: \"rgba(255,255,255,1)\"\n }\n },\n dotsOptions: {\n type: DotType.square,\n color: \"#000\",\n size: 10\n }\n};\n\nexport function sanitizeOptions(options: Options): Options {\n const newOptions = { ...options };\n\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n imageSize: Math.min(1, Number(newOptions.imageOptions.imageSize)) || 1,\n margin: Number(newOptions.imageOptions.margin),\n fill: {\n ...newOptions.imageOptions.fill\n }\n };\n\n if (newOptions.imageOptions.mode == ImageMode.overlay) newOptions.imageOptions.margin = 0;\n if (newOptions.imageOptions.fill.gradient) {\n newOptions.imageOptions.fill.gradient = sanitizeGradient(newOptions.imageOptions.fill.gradient);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n // Ensure integer dot size\n newOptions.dotsOptions.size = Math.round(Math.max(0, newOptions.dotsOptions.size) || 10);\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n if (!newOptions.document) newOptions.document = document;\n\n return newOptions;\n}\n","import { ErrorCorrectionLevel, Mode } from \"@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js\";\n\nexport const ErrorCorrectionPercents = {\n [ErrorCorrectionLevel.L]: 0.07,\n [ErrorCorrectionLevel.M]: 0.15,\n [ErrorCorrectionLevel.Q]: 0.25,\n [ErrorCorrectionLevel.H]: 0.3\n};\n\nexport function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return Mode.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return Mode.alphanumeric;\n // eslint-disable-next-line no-control-regex\n case /[^\\u0000-\\u00ff]/.test(data):\n return Mode.unicode;\n default:\n return Mode.byte;\n }\n}\n","const rx = /\\.?0+$/;\n\nexport function numToAttr(value: number) {\n return value.toFixed(7).replace(rx, \"\");\n}\n\nexport function svgPath(strings: TemplateStringsArray, ...values: unknown[]) {\n return strings\n .reduce((t, v, i) => {\n let p: unknown = \"\";\n if (i) p = values[i - 1];\n if (typeof p == \"number\") p = numToAttr(p);\n return `${t}${p}${v}`;\n }, \"\")\n .trim()\n .replace(/[\\s\\n\\r]+/gim, \" \");\n}\n","import { BasicFigureDrawArgs, DrawArgs, RotateFigureArgs } from \"../types/helper.js\";\nimport { CornerDotType } from \"../utils/options.js\";\nimport { numToAttr, svgPath } from \"../utils/svg.js\";\n\nexport class QRCornerDot {\n private _element?: SVGElement;\n\n get element() {\n return this._element;\n }\n\n constructor(\n private readonly type: `${CornerDotType}`,\n private readonly document: Document\n ) {}\n\n draw(args: DrawArgs): void {\n const type = this.type;\n let drawFunction;\n\n switch (type) {\n case CornerDotType.square:\n drawFunction = this.drawSquare;\n break;\n case CornerDotType.heart:\n drawFunction = this.drawHeart;\n break;\n case CornerDotType.extraRounded:\n drawFunction = this.drawRounded;\n break;\n case CornerDotType.classy:\n drawFunction = this.drawClassy;\n break;\n case CornerDotType.inpoint:\n drawFunction = this.drawInpoint;\n break;\n case CornerDotType.outpoint:\n drawFunction = this.drawOutpoint;\n break;\n case CornerDotType.dot:\n default:\n drawFunction = this.drawDot;\n }\n\n drawFunction.call(this, args);\n }\n\n private rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${numToAttr((180 * rotation) / Math.PI)},${cx},${cy})`);\n }\n\n private basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", numToAttr(x + size / 2));\n this._element.setAttribute(\"cy\", numToAttr(y + size / 2));\n this._element.setAttribute(\"r\", numToAttr(size / 2));\n }\n });\n }\n\n private basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", numToAttr(x));\n this._element.setAttribute(\"y\", numToAttr(y));\n this._element.setAttribute(\"width\", numToAttr(size));\n this._element.setAttribute(\"height\", numToAttr(size));\n }\n });\n }\n\n private basicHeart(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n const path = [\n \"M\",\n 1,\n 0.3262506,\n \"c\",\n 0,\n 0.0383376,\n -0.0064626,\n 0.0758377,\n -0.0193751,\n 0.1125001,\n \"s\",\n -0.0356247,\n 0.076875,\n -0.0681248,\n 0.1206252,\n \"c\",\n -0.0325,\n 0.0437499,\n -0.0762503,\n 0.0931247,\n -0.1312501,\n 0.1481249,\n \"C\",\n 0.7262502,\n 0.7625008,\n 0.6566626,\n 0.8279132,\n 0.5724999,\n 0.9037505,\n \"L\",\n 0.5,\n 0.9687506,\n \"L\",\n 0.4275001,\n 0.9037505,\n \"C\",\n 0.3433374,\n 0.8279132,\n 0.2737499,\n 0.7625005,\n 0.21875,\n 0.7075007,\n \"C\",\n 0.1637501,\n 0.6525008,\n 0.1199999,\n 0.6031258,\n 0.0874999,\n 0.5593758,\n \"S\",\n 0.0322876,\n 0.4754133,\n 0.0193751,\n 0.4387506,\n \"S\",\n 0,\n 0.3645881,\n 0,\n 0.3262506,\n \"c\",\n 0,\n -0.0783374,\n 0.0262499,\n -0.1437498,\n 0.07875,\n -0.1962499,\n \"s\",\n 0.1179124,\n -0.07875,\n 0.1962499,\n -0.07875,\n \"c\",\n 0.0433376,\n 0,\n 0.0845875,\n 0.0091625,\n 0.12375,\n 0.0274999,\n \"S\",\n 0.4716623,\n 0.1229131,\n 0.5,\n 0.1562506,\n \"c\",\n 0.0283374,\n -0.0333375,\n 0.0620874,\n -0.0591625,\n 0.1012502,\n -0.0775,\n \"c\",\n 0.0391627,\n -0.0183375,\n 0.0804126,\n -0.0274999,\n 0.12375,\n -0.0274999,\n \"c\",\n 0.0783374,\n 0,\n 0.1437497,\n 0.0262499,\n 0.1962501,\n 0.07875,\n \"S\",\n 1,\n 0.2479131,\n 1,\n 0.3262506,\n \"z\"\n ];\n let move = false;\n let i = 0;\n this._element.setAttribute(\n \"d\",\n path\n .map((v) => {\n if (typeof v == \"string\") {\n i = 0;\n move = v.toUpperCase() == v;\n return v;\n }\n i++;\n v = v * size;\n if (move) {\n v += i % 2 == 1 ? x : y;\n }\n return numToAttr(v);\n })\n .join(\" \")\n );\n }\n\n private basicRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", numToAttr(x));\n this._element.setAttribute(\"y\", numToAttr(y));\n this._element.setAttribute(\"width\", numToAttr(size));\n this._element.setAttribute(\"height\", numToAttr(size));\n this._element.setAttribute(\"rx\", numToAttr(size / 4));\n this._element.setAttribute(\"ry\", numToAttr(size / 4));\n }\n });\n }\n\n private basicClassy(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y + 2.5 * dotSize}\n v ${2 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}\n h ${4.5 * dotSize}\n v ${-4.5 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}\n h ${-2 * dotSize}\n H ${x}\n z`\n );\n }\n });\n }\n\n private basicInpoint(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y + dotSize / 2}\n v ${dotSize / 4}\n a ${dotSize / 4}, ${dotSize / 4} 0 0 0 ${dotSize / 4}, ${dotSize / 4}\n h ${(dotSize / 4) * 3}\n v ${(-dotSize / 4) * 3}\n a ${dotSize / 4}, ${dotSize / 4} 0 0 0 ${-dotSize / 4}, ${-dotSize / 4}\n h ${-dotSize / 2}\n a ${dotSize / 4}, ${dotSize / 4} 0 0 0 ${-dotSize / 4}, ${dotSize / 4}\n z`\n );\n }\n });\n }\n\n private drawDot({ x, y, size, rotation }: DrawArgs): void {\n this.basicDot({ x, y, size, rotation });\n }\n\n private drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this.basicSquare({ x, y, size, rotation });\n }\n\n private drawHeart({ x, y, size, rotation }: DrawArgs): void {\n this.basicHeart({ x, y, size, rotation });\n }\n\n private drawRounded({ x, y, size, rotation }: DrawArgs): void {\n this.basicRounded({ x, y, size, rotation });\n }\n\n private drawClassy({ x, y, size, rotation }: DrawArgs): void {\n this.basicClassy({ x, y, size, rotation });\n }\n\n private drawInpoint({ x, y, size, rotation }: DrawArgs): void {\n this.basicInpoint({ x, y, size, rotation });\n }\n\n private drawOutpoint({ x, y, size, rotation }: DrawArgs): void {\n this.basicInpoint({ x, y, size, rotation: (rotation || 0) + Math.PI });\n }\n}\n","import { BasicFigureDrawArgs, DrawArgs, RotateFigureArgs } from \"../types/helper.js\";\nimport { CornerSquareType } from \"../utils/options.js\";\nimport { numToAttr, svgPath } from \"../utils/svg.js\";\n\nexport class QRCornerSquare {\n private _element?: SVGElement;\n private _fill?: SVGElement;\n\n get element() {\n return this._element;\n }\n\n get fill() {\n return this._fill;\n }\n\n constructor(\n private readonly type: `${CornerSquareType}`,\n private readonly document: Document\n ) {}\n\n draw(args: DrawArgs): void {\n const type = this.type;\n let drawFunction;\n\n switch (type) {\n case CornerSquareType.square:\n drawFunction = this.drawSquare;\n break;\n case CornerSquareType.extraRounded:\n drawFunction = this.drawExtraRounded;\n break;\n case CornerSquareType.classy:\n drawFunction = this.drawClassy;\n break;\n case CornerSquareType.outpoint:\n drawFunction = this.drawOutpoint;\n break;\n case CornerSquareType.inpoint:\n drawFunction = this.drawInpoint;\n break;\n case CornerSquareType.dot:\n default:\n drawFunction = this.drawDot;\n }\n\n drawFunction.call(this, args);\n }\n\n private rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${numToAttr((180 * rotation) / Math.PI)},${cx},${cy})`);\n this._fill?.setAttribute(\"transform\", `rotate(${numToAttr((180 * rotation) / Math.PI)},${cx},${cy})`);\n }\n\n private basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x + size / 2} ${y}\n a ${size / 2} ${size / 2} 0 1 0 0.1 0\n z\n m 0 ${dotSize}\n a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0\n Z`\n );\n this._fill = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._fill.setAttribute(\"clip-rule\", \"evenodd\");\n this._fill.setAttribute(\n \"d\",\n svgPath`M ${x + size / 2} ${y - dotSize}\n a ${size / 2 + dotSize} ${size / 2 + dotSize} 0 1 0 0.1 0\n z`\n );\n }\n });\n }\n\n private basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y}\n v ${size}\n h ${size}\n v ${-size}\n z\n M ${x + dotSize} ${y + dotSize}\n h ${size - 2 * dotSize}\n v ${size - 2 * dotSize}\n h ${-size + 2 * dotSize}\n z`\n );\n this._fill = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._fill.setAttribute(\"clip-rule\", \"evenodd\");\n this._fill.setAttribute(\n \"d\",\n svgPath`\n M ${x - dotSize} ${y - dotSize}\n h ${size + 2 * dotSize}\n v ${size + 2 * dotSize}\n h ${-size - 2 * dotSize}\n z`\n );\n }\n });\n }\n\n private basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y + 2.5 * dotSize}\n v ${2 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}\n h ${2 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}\n v ${-2 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}\n h ${-2 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}\n z\n M ${x + 2.5 * dotSize} ${y + dotSize}\n h ${2 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}\n v ${2 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}\n h ${-2 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}\n v ${-2 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}\n z`\n );\n this._fill = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._fill.setAttribute(\"clip-rule\", \"evenodd\");\n this._fill.setAttribute(\n \"d\",\n svgPath`\n M ${x - dotSize} ${y + 2.5 * dotSize}\n v ${2 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 0, ${dotSize * 3.5} ${dotSize * 3.5}\n h ${2 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 0, ${dotSize * 3.5} ${-dotSize * 3.5}\n v ${-2 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 0, ${-dotSize * 3.5} ${-dotSize * 3.5}\n h ${-2 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 0, ${-dotSize * 3.5} ${dotSize * 3.5}\n z`\n );\n }\n });\n }\n\n private basicClassy(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y + 2.5 * dotSize}\n v ${2 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}\n h ${4.5 * dotSize}\n v ${-4.5 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}\n h ${-2 * dotSize}\n H ${x}\n z\n M ${x + 2.5 * dotSize} ${y + dotSize}\n h ${2 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}\n v ${3.5 * dotSize}\n h ${-3.5 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}\n v ${-3.5 * dotSize}\n z`\n );\n this._fill = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._fill.setAttribute(\"clip-rule\", \"evenodd\");\n this._fill.setAttribute(\n \"d\",\n svgPath`\n M ${x + 0.5 * dotSize} ${y - dotSize}\n h ${4 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${dotSize * 3.5} ${dotSize * 3.5}\n v ${5.5 * dotSize}\n h ${-5.5 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${-dotSize * 3.5} ${-dotSize * 3.5}\n v ${-5.5 * dotSize}\n z`\n );\n }\n });\n }\n\n private basicInpoint(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y + 2.5 * dotSize}\n v ${2 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}\n h ${4.5 * dotSize}\n v ${-4.5 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}\n h ${-2 * dotSize}\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}\n z\n M ${x + 2.5 * dotSize} ${y + dotSize}\n h ${2 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}\n v ${3.5 * dotSize}\n h ${-3.5 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}\n v ${-2 * dotSize}\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}\n z`\n );\n this._fill = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._fill.setAttribute(\"clip-rule\", \"evenodd\");\n this._fill.setAttribute(\n \"d\",\n svgPath`\n M ${x + 0.5 * dotSize} ${y - dotSize}\n h ${4 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${dotSize * 3.5} ${dotSize * 3.5}\n v ${5.5 * dotSize}\n h ${-5.5 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${-dotSize * 3.5} ${-dotSize * 3.5}\n v ${-2 * dotSize}\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${dotSize * 3.5} ${-dotSize * 3.5}\n z`\n );\n }\n });\n }\n\n private drawDot({ x, y, size, rotation }: DrawArgs): void {\n this.basicDot({ x, y, size, rotation });\n }\n\n private drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this.basicSquare({ x, y, size, rotation });\n }\n\n private drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this.basicExtraRounded({ x, y, size, rotation });\n }\n\n private drawClassy({ x, y, size, rotation }: DrawArgs): void {\n this.basicClassy({ x, y, size, rotation });\n }\n\n private drawInpoint({ x, y, size, rotation }: DrawArgs): void {\n this.basicInpoint({ x, y, size, rotation });\n }\n\n private drawOutpoint({ x, y, size, rotation }: DrawArgs): void {\n this.basicInpoint({ x, y, size, rotation: (rotation || 0) + Math.PI });\n }\n}\n","import { BasicFigureDrawArgs, DrawArgs, RotateFigureArgs } from \"../types/helper.js\";\nimport { DotType } from \"../utils/options.js\";\nimport { numToAttr, svgPath } from \"../utils/svg.js\";\n\nexport class QRDot {\n private _element?: SVGElement;\n\n get element() {\n return this._element;\n }\n\n constructor(\n private readonly type: `${DotType}`,\n private readonly document: Document\n ) {}\n\n draw(args: DrawArgs): void {\n const type = this.type;\n let drawFunction;\n\n switch (type) {\n case DotType.dot:\n drawFunction = this.drawDot;\n break;\n case DotType.randomDot:\n drawFunction = this.drawRandomDot;\n break;\n case DotType.classy:\n drawFunction = this.drawClassy;\n break;\n case DotType.classyRounded:\n drawFunction = this.drawClassyRounded;\n break;\n case DotType.rounded:\n drawFunction = this.drawRounded;\n break;\n case DotType.verticalLine:\n drawFunction = this.drawVerticalLine;\n break;\n case DotType.horizontalLine:\n drawFunction = this.drawHorizontalLine;\n break;\n case DotType.extraRounded:\n drawFunction = this.drawExtraRounded;\n break;\n case DotType.diamond:\n drawFunction = this.drawDiamond;\n break;\n case DotType.smallSquare:\n drawFunction = this.drawSmallSquare;\n break;\n case DotType.tinySquare:\n drawFunction = this.drawTinySquare;\n break;\n case DotType.square:\n default:\n drawFunction = this.drawSquare;\n }\n\n drawFunction.call(this, args);\n }\n\n private rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${numToAttr((180 * rotation) / Math.PI)},${cx},${cy})`);\n }\n\n private basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", numToAttr(x + size / 2));\n this._element.setAttribute(\"cy\", numToAttr(y + size / 2));\n this._element.setAttribute(\"r\", numToAttr(size / 2));\n }\n });\n }\n\n private basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", numToAttr(x));\n this._element.setAttribute(\"y\", numToAttr(y));\n this._element.setAttribute(\"width\", numToAttr(size));\n this._element.setAttribute(\"height\", numToAttr(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n private basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y}\n v ${size}\n h ${size / 2}\n a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}\n z`\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n private basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y}\n v ${size}\n h ${size}\n v ${-size / 2}\n a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}\n z`\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n private basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y}\n v ${size}\n h ${size}\n a ${size} ${size}, 0, 0, 0, ${-size} ${-size}\n z`\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n private basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this.rotateFigure({\n ...args,\n draw: () => {\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n svgPath`M ${x} ${y}\n v ${size / 2}\n a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}\n h ${size / 2}\n v ${-size / 2}\n a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}\n z`\n );\n }\n });\n }\n\n private drawDot({ x, y, size }: DrawArgs): void {\n this.basicDot({ x, y, size, rotation: 0 });\n }\n\n private drawRandomDot({ x, y, size }: DrawArgs): void {\n const randomFactor = Math.random() * (1 - 0.75) + 0.75;\n this.basicDot({ x, y, size: size * randomFactor, rotation: 0 });\n }\n\n private drawSquare({ x, y, size }: DrawArgs): void {\n this.basicSquare({ x, y, size, rotation: 0 });\n }\n\n private drawSmallSquare({ x, y, size }: DrawArgs): void {\n const originalSize = size;\n\n size = originalSize * 0.7;\n x = x + originalSize * 0.15;\n y = y + originalSize * 0.15;\n\n this.basicSquare({ x, y, size, rotation: 0 });\n }\n\n private drawTinySquare({ x, y, size }: DrawArgs): void {\n const originalSize = size;\n\n size = originalSize * 0.3;\n x = x + originalSize * 0.35;\n y = y + originalSize * 0.35;\n\n this.basicSquare({ x, y, size, rotation: 0 });\n }\n\n private drawDiamond({ x, y, size }: DrawArgs): void {\n this.basicSquare({ x, y, size, rotation: Math.PI / 4 });\n }\n\n private drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this.basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this.basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this.basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this.basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n private drawVerticalLine({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (\n neighborsCount === 0 ||\n (leftNeighbor && !(topNeighbor || bottomNeighbor)) ||\n (rightNeighbor && !(topNeighbor || bottomNeighbor))\n ) {\n this.basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (topNeighbor && bottomNeighbor) {\n this.basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (topNeighbor && !bottomNeighbor) {\n const rotation = Math.PI / 2;\n this.basicSideRounded({ x, y, size, rotation });\n return;\n }\n\n if (bottomNeighbor && !topNeighbor) {\n const rotation = -Math.PI / 2;\n this.basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n private drawHorizontalLine({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (\n neighborsCount === 0 ||\n (topNeighbor && !(leftNeighbor || rightNeighbor)) ||\n (bottomNeighbor && !(leftNeighbor || rightNeighbor))\n ) {\n this.basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (leftNeighbor && rightNeighbor) {\n this.basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (leftNeighbor && !rightNeighbor) {\n const rotation = 0;\n this.basicSideRounded({ x, y, size, rotation });\n return;\n }\n\n if (rightNeighbor && !leftNeighbor) {\n const rotation = Math.PI;\n this.basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n private drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this.basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this.basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this.basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this.basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n private drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this.basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this.basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this.basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this.basicSquare({ x, y, size, rotation: 0 });\n }\n\n private drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this.basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this.basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this.basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this.basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","export const browserImageTools = {\n toDataURL(url: string | Buffer | Blob): Promise<string> {\n if (typeof url == \"string\" && url.startsWith(\"data:\")) return Promise.resolve(url);\n return new Promise((resolve, reject) => {\n if (typeof url == \"string\") {\n const xhr = new XMLHttpRequest();\n xhr.onload = function () {\n const reader = new FileReader();\n reader.onloadend = function () {\n resolve(reader.result as string);\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.onerror = xhr.onabort = xhr.ontimeout = reject;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n const reader = new FileReader();\n reader.onloadend = function () {\n resolve(reader.result as string);\n };\n reader.readAsDataURL(url as Blob);\n }\n });\n },\n getSize(src: string | Blob | Buffer, crossOrigin?: string): Promise<{ width: number; height: number }> {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n if (crossOrigin === \"string\") {\n image.crossOrigin = crossOrigin;\n }\n\n image.onload = (): void => {\n resolve({ width: image.width, height: image.height });\n };\n image.onerror = image.onabort = reject;\n\n if (typeof src == \"string\") image.src = src;\n else\n browserImageTools\n .toDataURL(src)\n .then((url) => (image.src = url))\n .catch(reject);\n });\n }\n};\n","export function parseColor(cstr: string) {\n let m: RegExpExecArray | null,\n parts: string[] | number[] = [],\n alpha = 1;\n\n cstr = cstr.toLowerCase();\n\n if (cstr[0] === \"#\") {\n const base = cstr.slice(1);\n const size = base.length;\n const isShort = size <= 4;\n\n if (isShort) {\n parts = [parseInt(base[0] + base[0], 16), parseInt(base[1] + base[1], 16), parseInt(base[2] + base[2], 16)];\n if (size === 4) {\n alpha = parseInt(base[3] + base[3], 16) / 255;\n }\n } else {\n parts = [parseInt(base[0] + base[1], 16), parseInt(base[2] + base[3], 16), parseInt(base[4] + base[5], 16)];\n if (size === 8) {\n alpha = parseInt(base[6] + base[7], 16) / 255;\n }\n }\n\n if (!parts[0]) parts[0] = 0;\n if (!parts[1]) parts[1] = 0;\n if (!parts[2]) parts[2] = 0;\n } else if ((m = /^((?:rgba?))\\s*\\(([^)]*)\\)/.exec(cstr))) {\n const dims = 3;\n parts = m[2].trim().split(/\\s*[,/]\\s*|\\s+/);\n\n parts = parts.map((x, i) => {\n if (x[x.length - 1] === \"%\") {\n const v = parseFloat(x) / 100;\n if (i === 3) return v;\n return v * 255;\n }\n\n if (x === \"none\") return 0;\n return parseFloat(x);\n });\n\n alpha = parts.length > dims ? parts.pop()! : 1;\n } else {\n return {\n value: cstr,\n alpha\n };\n }\n\n const value = \"#\" + parts.map((v) => Math.max(0, Math.min(255, v)).toString(16).padStart(2, \"0\")).join(\"\");\n return {\n value,\n alpha: Math.max(0, Math.min(1, alpha))\n };\n}\n","import { QRCodeMinimal } from \"@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js\";\nimport { QRUtil } from \"@liquid-js/qrcode-generator/lib/qrcode/QRUtil.js\";\nimport { QRCornerDot } from \"../figures/corner-dot.js\";\nimport { QRCornerSquare } from \"../figures/corner-square.js\";\nimport { QRDot } from \"../figures/dot.js\";\nimport { browserImageTools } from \"../tools/browser-image-tools.js\";\nimport { parseColor } from \"../utils/color.js\";\nimport { Gradient, GradientType } from \"../utils/gradient.js\";\nimport { calculateImageSize } from \"../utils/image.js\";\nimport { DotType, ImageMode, Options, ShapeType } from \"../utils/options.js\";\nimport { numToAttr } from \"../utils/svg.js\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport class QRSVG {\n private _element: SVGElement;\n\n get element() {\n return this._element;\n }\n\n private defs: SVGElement;\n\n private backgroundMask?: SVGElement;\n private backgroundMaskGroup?: SVGElement;\n\n private dotsMask?: SVGElement;\n private dotsMaskGroup?: SVGElement;\n\n private lightDotsMask?: SVGElement;\n private lightDotsMaskGroup?: SVGElement;\n\n private qr?: QRCodeMinimal;\n private document: Document;\n private imageTools: typeof browserImageTools;\n\n constructor(\n private options: Pick<\n Options,\n | \"width\"\n | \"height\"\n | \"document\"\n | \"imageTools\"\n | \"image\"\n | \"imageOptions\"\n | \"dotsOptions\"\n | \"cornersDotOptions\"\n | \"cornersSquareOptions\"\n | \"backgroundOptions\"\n | \"shape\"\n > & { errorCorrectionPercent: number }\n ) {\n this.document = options.document;\n this._element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n const width = numToAttr(options.width);\n const height = numToAttr(options.height);\n this._element.setAttribute(\"width\", width);\n this._element.setAttribute(\"height\", height);\n this._element.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n this.defs = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._element.appendChild(this.defs);\n this.imageTools = options.imageTools || browserImageTools;\n }\n\n get width(): number {\n return this.options.width;\n }\n\n get height(): number {\n return this.options.height;\n }\n\n async drawQR(qr: QRCodeMinimal): Promise<void> {\n const count = qr.getModuleCount();\n const typeNumber = parseInt(((count - 17) / 4).toFixed(0), 10);\n const dotSize = this.options.dotsOptions.size;\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this.qr = qr;\n\n if (this.options.image) {\n //We need it to get image size\n const size = await this.imageTools.getSize(this.options.image, this.options.imageOptions.crossOrigin);\n const { imageOptions, errorCorrectionPercent } = this.options;\n\n if (imageOptions.mode == ImageMode.background) {\n const margin = (this.options.backgroundOptions && this.options.backgroundOptions.margin) || 0;\n const maxWidth = (this.options.width - 2 * margin * dotSize) * imageOptions.imageSize;\n const maxHeight = (this.options.height - 2 * margin * dotSize) * imageOptions.imageSize;\n let { width, height } = size;\n\n height = (height / width) * maxWidth;\n width = maxWidth;\n\n if (height > maxHeight) {\n width = (width / height) * maxHeight;\n height = maxHeight;\n }\n\n drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width,\n height\n };\n } else {\n const coverLevel = imageOptions.imageSize * errorCorrectionPercent;\n const alignment = QRUtil.getPatternPosition(typeNumber);\n const maxHiddenDots = Math.floor(\n coverLevel * (count * count - 3 * 8 * 8 - 2 * (count - 16) - alignment.length ** 2 * 25)\n );\n\n drawImageSize = calculateImageSize({\n originalWidth: size.width,\n originalHeight: size.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize,\n margin: imageOptions.margin\n });\n }\n }\n\n this.drawBackground();\n\n if (\n this.options.imageOptions.mode != ImageMode.overlay &&\n this.options.image &&\n drawImageSize.width > 0 &&\n drawImageSize.height > 0\n ) {\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n\n this.drawDots((i: number, j: number): boolean => {\n if (this.options.imageOptions.mode == ImageMode.center) {\n if (\n i >= (count - drawImageSize.hideXDots) / 2 &&\n i < (count + drawImageSize.hideXDots) / 2 &&\n j >= (count - drawImageSize.hideYDots) / 2 &&\n j < (count + drawImageSize.hideYDots) / 2\n ) {\n return false;\n }\n }\n\n if ((i < 8 && j < 8) || (i >= count - 8 && j < 8) || (j >= count - 8 && i < 8)) return false;\n\n return true;\n });\n\n if (\n this.options.imageOptions.mode == ImageMode.overlay &&\n this.options.image &&\n drawImageSize.width > 0 &&\n drawImageSize.height > 0\n ) {\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n\n this.drawCorners();\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this.options;\n\n if (element && options.backgroundOptions) {\n const gradientOptions = options.backgroundOptions.gradient;\n const color = options.backgroundOptions.color;\n\n this.createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: \"background-color\"\n });\n\n const size = Math.min(options.width, options.height);\n const element = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n [this.backgroundMask, this.backgroundMaskGroup] = this.createMask(\"mask-background-color\");\n this.defs.appendChild(this.backgroundMask);\n\n element.setAttribute(\"x\", numToAttr((options.width - size) / 2));\n element.setAttribute(\"y\", numToAttr((options.height - size) / 2));\n element.setAttribute(\"width\", numToAttr(size));\n element.setAttribute(\"height\", numToAttr(size));\n element.setAttribute(\"rx\", numToAttr((size / 2) * (options.backgroundOptions.round || 0)));\n\n this.backgroundMaskGroup.appendChild(element);\n }\n }\n\n drawDots(filter?: (i: number, j: number) => boolean): void {\n if (!this.qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this.options;\n const count = this.qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const dotSize = this.options.dotsOptions.size;\n let minSize = Math.min(options.width, options.height);\n if (options.imageOptions.mode == ImageMode.background) minSize -= 2 * dotSize * (options.imageOptions.margin || 0);\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n let dot = new QRDot(options.dotsOptions.type, this.document);\n const overlayDot = new QRDot(DotType.tinySquare, this.document);\n const markerDot = new QRDot(DotType.square, this.document);\n\n [this.dotsMask, this.dotsMaskGroup] = this.createMask(\"mask-dot-color\");\n this.defs.appendChild(this.dotsMask);\n\n if (options.imageOptions.mode == ImageMode.background) {\n [this.lightDotsMask, this.lightDotsMaskGroup] = this.createMask(\"mask-light-dot-color\");\n this.defs.appendChild(this.lightDotsMask);\n }\n\n let margin = 0;\n let additionalDots = 0;\n let fakeCount = count;\n\n if (options.shape === ShapeType.circle) {\n margin = (this.options.backgroundOptions && this.options.backgroundOptions.margin) || 0;\n additionalDots = Math.floor((minSize / dotSize - count - 2 * margin) / 2);\n fakeCount = count + additionalDots * 2;\n } else if (options.imageOptions.mode == ImageMode.background) {\n additionalDots = 1;\n fakeCount = count + additionalDots * 2;\n }\n\n const xFakeBeginning = xBeginning - additionalDots * dotSize;\n const yFakeBeginning = yBeginning - additionalDots * dotSize;\n const colorX = xFakeBeginning;\n const colorY = yFakeBeginning;\n const colorCount = count + additionalDots * 2;\n const fakeMatrix: (boolean | undefined)[][] = new Array(fakeCount);\n const center = Math.floor(fakeCount / 2);\n\n for (let i = 0; i < fakeCount; i++) {\n fakeMatrix[i] = new Array(fakeCount);\n for (let j = 0; j < fakeCount; j++) {\n if (\n i > additionalDots - 1 &&\n i < fakeCount - additionalDots &&\n j > additionalDots - 1 &&\n j < fakeCount - additionalDots\n ) {\n const ii = i - additionalDots;\n const jj = j - additionalDots;\n if (filter && !filter(ii, jj)) fakeMatrix[i][j] = undefined;\n else fakeMatrix[i][j] = !!this.qr.isDark(jj, ii);\n continue;\n }\n\n if (\n options.shape === ShapeType.circle &&\n Math.sqrt((i - center) * (i - center) + (j - center) * (j - center)) > center\n ) {\n fakeMatrix[i][j] = undefined;\n continue;\n }\n\n if (\n i == additionalDots - 1 ||\n i == fakeCount - additionalDots ||\n j == additionalDots - 1 ||\n j == fakeCount - additionalDots\n ) {\n if (\n (j == additionalDots - 1 && (i < additionalDots + 8 || i > fakeCount - additionalDots - 9)) ||\n (j == fakeCount - additionalDots && i < additionalDots + 8) ||\n (i == additionalDots - 1 && (j < additionalDots + 8 || j > fakeCount - additionalDots - 9)) ||\n (i == fakeCount - additionalDots && j < additionalDots + 8)\n )\n fakeMatrix[i][j] = undefined;\n else fakeMatrix[i][j] = false;\n continue;\n }\n\n // Get random dots from QR code to show it outside of QR code\n fakeMatrix[i][j] = this.qr.isDark(\n j - 2 * additionalDots < 0 ? j : j >= count ? j - 2 * additionalDots : j - additionalDots,\n i - 2 * additionalDots < 0 ? i : i >= count ? i - 2 * additionalDots : i - additionalDots\n );\n }\n }\n\n const typeNr = (count - 17) / 4;\n const alignment = QRUtil.getPatternPosition(typeNr);\n\n for (let i = 0; i < fakeCount; i++) {\n const iAlign = alignment.find((v) => i - additionalDots > v - 3 && i - additionalDots < v + 3);\n for (let j = 0; j < fakeCount; j++) {\n const jAlign = alignment.find((v) => j - additionalDots > v - 3 && j - additionalDots < v + 3);\n if (fakeMatrix[i][j] == undefined) continue;\n\n if (this.lightDotsMask) {\n dot =\n iAlign &&\n jAlign &&\n ((iAlign != alignment[0] && jAlign != alignment[0]) ||\n (jAlign != alignment[0] && jAlign != alignment[alignment.length - 1]) ||\n (iAlign != alignment[0] && iAlign != alignment[alignment.length - 1]))\n ? markerDot\n : overlayDot;\n }\n\n if (!fakeMatrix[i][j]) {\n if (this.lightDotsMask) {\n dot.draw({\n x: xFakeBeginning + i * dotSize,\n y: yFakeBeginning + j * dotSize,\n size: dotSize,\n getNeighbor: (xOffset: number, yOffset: number): boolean => {\n return fakeMatrix[i + xOffset]?.[j + yOffset] === false;\n }\n });\n\n if (dot.element && this.lightDotsMaskGroup) {\n this.lightDotsMaskGroup.appendChild(dot.element);\n }\n }\n continue;\n }\n\n dot.draw({\n x: xFakeBeginning + i * dotSize,\n y: yFakeBeginning + j * dotSize,\n size: dotSize,\n getNeighbor: (xOffset: number, yOffset: number): boolean => {\n return fakeMatrix[i + xOffset]?.[j + yOffset] === true;\n }\n });\n if (dot.element && this.dotsMaskGroup) {\n this.dotsMaskGroup.appendChild(dot.element);\n }\n }\n }\n\n if (this.lightDotsMask) {\n this.createColor({\n options: options.imageOptions.fill.gradient,\n color: options.imageOptions.fill.color,\n additionalRotation: 0,\n x: colorX,\n y: colorY,\n height: colorCount * dotSize,\n width: colorCount * dotSize,\n name: \"light-dot-color\"\n });\n }\n\n this.createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: colorX,\n y: colorY,\n height: colorCount * dotSize,\n width: colorCount * dotSize,\n name: \"dot-color\"\n });\n }\n\n drawCorners(): void {\n if (!this.qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this.options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this.qr.getModuleCount();\n const dotSize = this.options.dotsOptions.size;\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareMask = this.dotsMask;\n let cornersSquareMaskGroup = this.dotsMaskGroup;\n let cornersDotMask = this.dotsMask;\n let cornersDotMaskGroup = this.dotsMaskGroup;\n\n if (options.cornersSquareOptions?.gradient || options.cornersSquareOptions?.color) {\n [cornersSquareMask, cornersSquareMaskGroup] = this.createMask(`mask-corners-square-color-${column}-${row}`);\n this.defs.appendChild(cornersSquareMask);\n cornersDotMask = cornersSquareMask;\n cornersDotMaskGroup = cornersSquareMaskGroup;\n\n this.createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}`\n });\n }\n\n if (options.cornersSquareOptions?.type) {\n const cornersSquare = new QRCornerSquare(options.cornersSquareOptions.type, this.document);\n\n cornersSquare.draw({\n x,\n y,\n size: cornersSquareSize,\n rotation\n });\n\n if (cornersSquare.element && cornersSquareMaskGroup) {\n cornersSquareMaskGroup.appendChild(cornersSquare.element);\n }\n\n if (cornersSquare.fill && this.lightDotsMaskGroup) {\n this.lightDotsMaskGroup.appendChild(cornersSquare.fill);\n }\n } else {\n const dot = new QRDot(options.dotsOptions.type, this.document);\n\n for (let i = 0; i < squareMask.length; i++) {\n for (let j = 0; j < squareMask[i].length; j++) {\n if (!squareMask[i]?.[j]) {\n if (this.lightDotsMask && !dotMask[i]?.[j]) {\n dot.draw({\n x: x + i * dotSize,\n y: y + j * dotSize,\n size: dotSize,\n getNeighbor: (xOffset: number, yOffset: number): boolean =>\n !squareMask[i + xOffset]?.[j + yOffset] && !dotMask[i + xOffset]?.[j + yOffset]\n });\n\n if (dot.element && this.lightDotsMaskGroup) {\n this.lightDotsMaskGroup.appendChild(dot.element);\n }\n }\n continue;\n }\n\n dot.draw({\n x: x + i * dotSize,\n y: y + j * dotSize,\n size: dotSize,\n getNeighbor: (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n });\n\n if (dot.element && cornersSquareMaskGroup) {\n cornersSquareMaskGroup.appendChild(dot.element);\n }\n }\n }\n\n if (this.lightDotsMask)\n for (let i = -1; i < 8; i++) {\n for (let j = -1; j < 8; j++) {\n if (i == -1 || i == 7 || j == -1 || j == 7) {\n dot.draw({\n x: x + i * dotSize,\n y: y + j * dotSize,\n size: dotSize,\n getNeighbor: (xOffset: number, yOffset: number): boolean => {\n const ii = i + xOffset;\n const jj = j + yOffset;\n return ii >= -1 && ii <= 7 && jj >= -1 && jj <= 7 && (ii == -1 || ii == 7 || jj == -1 || jj == 7);\n }\n });\n\n if (dot.element && this.lightDotsMaskGroup) {\n this.lightDotsMaskGroup.appendChild(dot.element);\n }\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient || options.cornersDotOptions?.color) {\n [cornersDotMask, cornersDotMaskGroup] = this.createMask(`mask-corners-dot-color-${column}-${row}`);\n this.defs.appendChild(cornersDotMask);\n\n this.createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}`\n });\n }\n\n if (options.cornersDotOptions?.type) {\n const cornersDot = new QRCornerDot(options.cornersDotOptions.type, this.document);\n\n cornersDot.draw({\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n size: cornersDotSize,\n rotation\n });\n\n if (cornersDot.element && cornersDotMaskGroup) {\n cornersDotMaskGroup.appendChild(cornersDot.element);\n }\n } else {\n const dot = new QRDot(options.dotsOptions.type, this.document);\n\n for (let i = 0; i < dotMask.length; i++) {\n for (let j = 0; j < dotMask[i].length; j++) {\n if (!dotMask[i]?.[j]) {\n continue;\n }\n\n dot.draw({\n x: x + i * dotSize,\n y: y + j * dotSize,\n size: dotSize,\n getNeighbor: (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n });\n\n if (dot.element && cornersDotMaskGroup) {\n cornersDotMaskGroup.appendChild(dot.element);\n }\n }\n }\n }\n });\n }\n\n async drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): Promise<void> {\n const options = this.options;\n const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n let margin = options.imageOptions.margin * dotSize;\n if (options.imageOptions.mode == ImageMode.background) margin = 0;\n const dx = xBeginning + margin + (count * dotSize - width) / 2;\n const dy = yBeginning + margin + (count * dotSize - height) / 2;\n const dw = width - margin * 2;\n const dh = height - margin * 2;\n\n const imageUrl = await this.imageTools.toDataURL(options.image || \"\");\n let image: SVGElement = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n image.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", imageUrl || \"\");\n\n if (imageUrl.startsWith(\"data:image/svg+xml;\")) {\n let data = imageUrl.substring(19);\n const i = data.indexOf(\",\");\n const encoding = data.substring(0, i);\n data = data.substring(i + 1);\n\n switch (encoding) {\n case \"base64\":\n data = typeof atob == \"function\" ? atob(data) : Buffer.from(data, \"base64\").toString(\"utf8\");\n break;\n default:\n data = \"\";\n break;\n }\n\n if (data) {\n const container = new DOMParser().parseFromString(data, \"text/xml\");\n const rootEl = Array.from(container.getElementsByTagName(\"svg\"));\n if (rootEl.length) {\n image = rootEl[0];\n image.setAttribute(\"overflow\", \"visible\");\n }\n }\n }\n\n image.setAttribute(\"x\", numToAttr(dx));\n image.setAttribute(\"y\", numToAttr(dy));\n image.setAttribute(\"width\", `${numToAttr(dw)}px`);\n image.setAttribute(\"height\", `${numToAttr(dh)}px`);\n\n this._element.appendChild(image);\n }\n\n private createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", numToAttr(x));\n rect.setAttribute(\"y\", numToAttr(y));\n rect.setAttribute(\"height\", numToAttr(height));\n rect.setAttribute(\"width\", numToAttr(width));\n rect.setAttribute(\"style\", `mask:url(#mask-${name})`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === GradientType.radial) {\n gradient = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", numToAttr(x + width / 2));\n gradient.setAttribute(\"fy\", numToAttr(y + height / 2));\n gradient.setAttribute(\"cx\", numToAttr(x + width / 2));\n gradient.setAttribute(\"cy\", numToAttr(y + height / 2));\n gradient.setAttribute(\"r\", numToAttr(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", numToAttr(x0));\n gradient.setAttribute(\"y1\", numToAttr(y0));\n gradient.setAttribute(\"x2\", numToAttr(x1));\n gradient.setAttribute(\"y2\", numToAttr(y1));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${numToAttr(100 * offset)}%`);\n\n const parsed = parseColor(color);\n stop.setAttribute(\"stop-color\", parsed.value);\n if (parsed.alpha < 1) stop.setAttribute(\"stop-opacity\", parsed.alpha.toFixed(7));\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url(#${name})`);\n this.defs.appendChild(gradient);\n } else if (color) {\n const parsed = parseColor(color);\n rect.setAttribute(\"fill\", parsed.value);\n if (parsed.alpha < 1) rect.setAttribute(\"opacity\", parsed.alpha.toFixed(7));\n }\n\n this._element.appendChild(rect);\n }\n\n private createMask(id: string) {\n const options = this.options;\n\n const mask = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"mask\");\n mask.setAttribute(\"id\", id);\n mask.setAttribute(\"maskUnits\", \"userSpaceOnUse\");\n mask.setAttribute(\"x\", \"0\");\n mask.setAttribute(\"y\", \"0\");\n mask.setAttribute(\"width\", numToAttr(options.width));\n mask.setAttribute(\"height\", numToAttr(options.height));\n\n const group = this.document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n group.setAttribute(\"fill\", \"#fff\");\n mask.appendChild(group);\n\n return [mask, group];\n }\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n margin: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize,\n margin\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (\n originalHeight <= 0 ||\n originalWidth <= 0 ||\n maxHiddenDots <= 0 ||\n dotSize <= 0 ||\n 4 * margin ** 2 > maxHiddenDots\n ) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n //If set, ensure maxHiddenAxisDots is odd and at least 1\n if (maxHiddenAxisDots && maxHiddenAxisDots % 2 == 0) maxHiddenAxisDots = Math.max(1, maxHiddenAxisDots - 1);\n\n //Determine the bigger and smaller image dimension\n const dimMax = Math.max(originalWidth, originalHeight);\n const dimMin = Math.min(originalWidth, originalHeight);\n\n //Find max image size along the bigger dimension\n let lower = 0,\n upper = (maxHiddenAxisDots || maxHiddenDots) - 2 * margin;\n do {\n const size = lower + (upper - lower) / 2;\n let dotsMax = Math.max(1, Math.ceil(size + 2 * margin));\n if (dotsMax % 2 == 0) dotsMax++;\n let dotsMin = Math.max(1, Math.ceil((size * dimMin) / dimMax + 2 * margin));\n if (dotsMin % 2 == 0) dotsMin++;\n\n if (dotsMax * dotsMin > maxHiddenDots) upper = size;\n else lower = size;\n } while (Math.abs(lower - upper) > 0.001);\n\n //Calculate how many dots the given size corresponds to\n const size = lower;\n let hideMax = Math.max(1, Math.ceil(size + 2 * margin));\n if (hideMax % 2 == 0) hideMax++;\n let hideMin = Math.max(1, Math.ceil((size * dimMin) / dimMax + 2 * margin));\n if (hideMin % 2 == 0) hideMin++;\n\n //Set hidden dots along bigger and smaller dimension to the right axis\n if (originalWidth > originalHeight) {\n hideDots.x = hideMax;\n hideDots.y = hideMin;\n } else {\n hideDots.x = hideMin;\n hideDots.y = hideMax;\n }\n\n //Fit image to the hidden dots\n const maxW = (hideDots.x - 2 * margin) * dotSize;\n const maxH = (hideDots.y - 2 * margin) * dotSize;\n imageSize.x = maxW;\n imageSize.y = (maxW * originalHeight) / originalWidth;\n if (imageSize.y > maxH) {\n imageSize.y = maxH;\n imageSize.x = (maxH * originalWidth) / originalHeight;\n }\n\n return {\n height: Math.round(imageSize.y + 2 * margin * dotSize),\n width: Math.round(imageSize.x + 2 * margin * dotSize),\n hideYDots: hideDots.y,\n hideXDots: hideDots.x\n };\n}\n","import { QRCodeMinimal } from \"@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js\";\nimport { stringToBytes_UTF8 } from \"@liquid-js/qrcode-generator/lib/text/stringToBytes_UTF8.js\";\nimport { RecursivePartial } from \"../types/helper.js\";\nimport { mergeDeep } from \"../utils/merge.js\";\nimport { ImageMode, Options, ShapeType, defaultOptions, sanitizeOptions } from \"../utils/options.js\";\nimport { ErrorCorrectionPercents, getMode } from \"../utils/qrcode.js\";\nimport { QRSVG } from \"./qr-svg.js\";\n\nObject.assign(QRCodeMinimal.stringToBytesFuncs, stringToBytes_UTF8);\n\nexport type ExtensionFunction = (svg: SVGElement, options: RecursivePartial<Options>) => void;\n\nexport class QRCodeStyling {\n private options: Options;\n private container?: HTMLElement;\n private qr?: QRCodeMinimal;\n private extension?: ExtensionFunction;\n private svgDrawingPromise?: Promise<void>;\n private qrSVG?: QRSVG;\n\n get size() {\n if (this.qrSVG)\n return {\n width: this.qrSVG.width,\n height: this.qrSVG.height\n };\n return undefined;\n }\n\n constructor(options?: RecursivePartial<Options>) {\n this.options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as Options) : defaultOptions;\n this.update();\n }\n\n update(\n /** The same options as for initialization */\n options?: RecursivePartial<Options>\n ): void {\n if (this.container) this.container.innerHTML = \"\";\n\n this.options = options ? sanitizeOptions(mergeDeep(this.options, options) as Options) : this.options;\n\n if (!this.options.data) {\n return;\n }\n\n if (this.options.stringToBytesFuncs) {\n Object.assign(QRCodeMinimal.stringToBytesFuncs, this.options.stringToBytesFuncs);\n delete this.options.stringToBytesFuncs;\n }\n\n this.qr = new QRCodeMinimal(this.options.qrOptions.typeNumber, this.options.qrOptions.errorCorrectionLevel);\n const mode = this.options.qrOptions.mode || getMode(this.options.data);\n this.qr.addData(this.options.data, mode);\n this.qr.make();\n\n this.setupSvg();\n\n this.append(this.container);\n }\n\n append(\n /** This container will be used for appending of the QR code */\n container?: HTMLElement\n ): void {\n if (!container) {\n return;\n }\n\n if (this.qrSVG?.element) {\n container.appendChild(this.qrSVG.element);\n }\n\n this.container = container;\n }\n\n /**\n *\n * @example\n *\n * ```js\n * const extension = (svg, options) => {\n * const { width, height } = options;\n * const size = Math.min(width, height);\n * const border = options.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n * const borderAttributes = {\n * fill: \"none\",\n * x: (width - size + 40) / 2,\n * y: (height - size + 40) / 2,\n * width: size - 40,\n * height: size - 40,\n * stroke: \"black\",\n * \"stroke-width\": 40,\n * rx: 100\n * };\n * Object.keys(borderAttributes).forEach((attribute) => {\n * border.setAttribute(attribute, borderAttributes[attribute]);\n * });\n * svg.appendChild(border);\n * };\n * ```\n */\n applyExtension(\n /** Extension is a function that takes svg and previously applied options and modifies an svg */\n extension: ExtensionFunction\n ): void {\n if (!extension) {\n throw \"Extension function should be defined.\";\n }\n\n this.extension = extension;\n this.update();\n }\n\n deleteExtension(): void {\n this.extension = undefined;\n this.update();\n }\n\n async serialize(): Promise<string | undefined> {\n if (!this.qr) throw \"QR code is empty\";\n\n if (!this.qrSVG?.element || !this.svgDrawingPromise) {\n this.setupSvg();\n }\n await this.svgDrawingPromise;\n\n if (!this.qrSVG?.element) {\n return;\n }\n\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(this.qrSVG.element);\n\n source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + source;\n return source;\n }\n\n private setupSvg(): void {\n if (!this.qr) {\n return;\n }\n let moduleCount = this.qr.getModuleCount();\n if (this.options.imageOptions.mode == ImageMode.background && this.options.shape != ShapeType.circle)\n moduleCount += 2;\n let count = Math.ceil((this.options.shape == ShapeType.circle ? Math.sqrt(2) : 1) * moduleCount);\n if (count % 2 == 0) count -= 1;\n let margin = (this.options.backgroundOptions && this.options.backgroundOptions.margin) || 0;\n if (this.options.imageOptions.mode == ImageMode.background) margin += this.options.imageOptions.margin || 0;\n const size = Math.ceil(this.options.dotsOptions.size * (count + 2 * margin));\n this.qrSVG = new QRSVG({\n ...this.options,\n width: size,\n height: size,\n errorCorrectionPercent: ErrorCorrectionPercents[this.options.qrOptions.errorCorrectionLevel]\n });\n\n this.svgDrawingPromise = this.qrSVG.drawQR(this.qr).then(() => {\n if (!this.qrSVG?.element) return;\n this.extension?.(this.qrSVG.element, this.options);\n });\n }\n}\n","/**\n * stringToBytes_UTF8\n * contributed by elhigu\n */\nexport const stringToBytes_UTF8 = {\n UTF8: function (s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80)\n utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n }\n};\n//# sourceMappingURL=stringToBytes_UTF8.js.map","export interface CanvasOptions {\n width: number;\n height: number;\n margin: number;\n}\n\nexport const defaultCanvasOptions: CanvasOptions = {\n width: 300,\n height: 300,\n margin: 0\n};\n\nexport function sanitizeCanvasOptions(options: CanvasOptions): CanvasOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n return newOptions;\n}\n","import { QRCodeStyling } from \"../core/qr-code-styling.js\";\nimport { RecursivePartial } from \"../types/helper.js\";\nimport { CanvasOptions, defaultCanvasOptions, sanitizeCanvasOptions } from \"../utils/canvas-options.js\";\nimport { mergeDeep } from \"../utils/merge.js\";\n\nexport enum FileExtension {\n svg = \"svg\",\n png = \"png\",\n jpeg = \"jpeg\",\n webp = \"webp\"\n}\n\nexport function drawToCanvas(\n qrCode: QRCodeStyling,\n options?: RecursivePartial<CanvasOptions>\n): { canvas: HTMLCanvasElement; canvasDrawingPromise: Promise<void> | undefined } | undefined {\n const { width, height, margin } = options\n ? sanitizeCanvasOptions(mergeDeep(defaultCanvasOptions, options) as CanvasOptions)\n : defaultCanvasOptions;\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n\n const size = Math.min(width, height) - 2 * margin;\n\n const canvasDrawingPromise = qrCode.serialize().then((xml) => {\n if (!xml) return;\n const svg64 = btoa(xml);\n const image64 = \"data:image/svg+xml;base64,\" + svg64;\n const image = new Image();\n\n return new Promise<void>((resolve, reject) => {\n image.onload = (): void => {\n // Ensure pixel-perfect rendering of SVG to avoid artefact, then downscale to requested size\n const aaFactor = Math.ceil((2 * size) / Math.min(image.width, image.height));\n let aaCanvas: HTMLCanvasElement | OffscreenCanvas;\n try {\n aaCanvas = new OffscreenCanvas(image.width * aaFactor, image.height * aaFactor);\n } catch (_) {\n // Fallback to regular canvas element\n aaCanvas = document.createElement(\"canvas\");\n aaCanvas.width = image.width * aaFactor;\n aaCanvas.height = image.height * aaFactor;\n }\n aaCanvas.getContext(\"2d\")?.drawImage(image, 0, 0, aaCanvas.width, aaCanvas.height);\n\n canvas?.getContext(\"2d\")?.drawImage(aaCanvas, (width - size) / 2, (height - size) / 2, size, size);\n resolve();\n };\n image.onerror = image.onabort = reject;\n\n image.src = image64;\n });\n });\n\n return { canvas, canvasDrawingPromise };\n}\n\nexport async function download(\n qrCode: QRCodeStyling,\n downloadOptions?: { name?: string; extension: `${FileExtension}` },\n options?: RecursivePartial<CanvasOptions>\n): Promise<void> {\n let extension: `${FileExtension}` = FileExtension.png;\n let name = \"qr\";\n\n if (downloadOptions) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n if (extension.toLowerCase() === \"svg\") {\n const source = await qrCode.serialize();\n if (!source) return;\n const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n downloadURI(url, `${name}.svg`);\n } else {\n const res = drawToCanvas(qrCode, options);\n if (!res) return;\n const { canvas, canvasDrawingPromise } = res;\n await canvasDrawingPromise;\n const url = canvas.toDataURL(`image/${extension}`);\n downloadURI(url, `${name}.${extension}`);\n }\n}\n\nexport function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","export { ErrorCorrectionLevel, Mode, TypeNumber } from \"@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js\";\nexport { QRCodeStyling, type ExtensionFunction } from \"./core/qr-code-styling.js\";\nexport { FileExtension } from \"./tools/browser-utils.js\";\nexport { type RecursivePartial } from \"./types/helper.js\";\nexport { type CanvasOptions } from \"./utils/canvas-options.js\";\nexport { GradientType, type Gradient } from \"./utils/gradient.js\";\nexport { CornerDotType, CornerSquareType, DotType, ImageMode, ShapeType, type Options } from \"./utils/options.js\";\nexport { ErrorCorrectionPercents } from \"./utils/qrcode.js\";\nimport * as _browserUtils from \"./tools/browser-utils.js\";\n\nexport const browserUtils: typeof _browserUtils | undefined = _browserUtils;\n"],"names":["aa","constructor","this","length","buffer","getLengthInBits","toString","b","i","getBit","a","index","put","num","c","putBit","push","r","ErrorCorrectLevel","L","v","M","Q","H","QRMath","glog","n","LOG_TABLE","gexp","EXP_TABLE","initialize","y","shift","offset","len","getAt","getLength","toLogString","multiply","e","j","Polynomial","mod","ratio","Mode","MODE_NUMBER","MODE_ALPHA_NUM","MODE_8BIT_BYTE","MODE_KANJI","QRData","mode","data","getMode","getData","typeNumber","QR8BitByte","stringToBytes","super","write","QRAlphaNum","C","s","getCode","charAt","charCodeAt","QRNumber","strToNum","substring","chatToNum","MaskPattern","F","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","QRUtil","getPatternPosition","PATTERN_POSITION_TABLE","getMaxLength","errorCorrectLevel","m","MAX_LENGTH","getErrorCorrectPolynomial","errorCorrectLength","getMaskFunc","maskPattern","_i","getLostPoint","qrCode","getModuleCount","lostPoint","row","moduleCount","col","sameCount","dark","isDark","count","darkCount","Math","getBCHTypeInfo","d","getBCHDigit","G15","G15_MASK","getBCHTypeNumber","G18","digit","I","totalCount","dataCount","getDataCount","getTotalCount","getRSBlocks","rsBlock","RSBlock","getRsBlockTable","list","RS_BLOCK_TABLE","TypeNumber","Array","fill","map","_","ErrorCorrectionLevel","fa","numeric","alphanumeric","kanji","unicode","QRCodeMinimal","errorCorrectionLevel","modules","qrDataList","getTypeNumber","setTypeNumber","getErrorCorrectLevel","setErrorCorrectLevel","clearData","addData","qrData","byte","stringToBytesFuncs","default","UTF8","QRKanji","SJIS","make","rsBlocks","BitBuffer","totalDataCount","makeImpl","getBestMaskPattern","minLostPoint","pattern","test","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","mapData","inc","bitIndex","byteIndex","maskFunc","mask","pos","bits","createData","dataArray","PAD0","PAD1","createBytes","createNumArray","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","max","getBuffer","rsPoly","modPoly","h","modIndex","totalCodeCount","bytes","isObject","obj","isArray","mergeDeep","target","sources","undefined","source","keys","forEach","key","targetValue","sourceValue","Object","assign","GradientType","ja","sanitizeGradient","gradient","colorStops","newGradient","rotation","Number","colorStop","radial","linear","DotType","dot","randomDot","rounded","extraRounded","verticalLine","horizontalLine","classy","classyRounded","square","smallSquare","tinySquare","diamond","CornerDotType","S","heart","outpoint","inpoint","CornerSquareType","U","ShapeType","ka","circle","ImageMode","la","center","overlay","background","defaultOptions","document","shape","width","height","qrOptions","imageOptions","imageSize","crossOrigin","margin","color","dotsOptions","type","size","sanitizeOptions","options","newOptions","min","round","cornersSquareOptions","cornersDotOptions","backgroundOptions","ErrorCorrectionPercents","rx","numToAttr","X","value","toFixed","replace","Y","strings","values","reduce","t","p","trim","element","_element","draw","args","drawFunction","drawSquare","drawHeart","drawRounded","drawClassy","drawInpoint","drawOutpoint","drawDot","call","rotateFigure","x","setAttribute","PI","cx","cy","basicDot","createElementNS","basicSquare","basicHeart","move","path","g","toUpperCase","join","basicRounded","basicClassy","dotSize","svgPath","basicInpoint","_fill","drawExtraRounded","basicExtraRounded","drawRandomDot","drawClassyRounded","drawVerticalLine","drawHorizontalLine","drawDiamond","drawSmallSquare","drawTinySquare","basicSideRounded","basicCornerRounded","basicCornerExtraRounded","basicCornersRounded","random","getNeighbor","leftNeighbor","rightNeighbor","topNeighbor","neighborsCount","bottomNeighbor","browserImageTools","toDataURL","url","startsWith","Promise","resolve","reject","xhr","XMLHttpRequest","onload","xhr.onload","reader","FileReader","onloadend","reader.onloadend","result","readAsDataURL","response","onerror","onabort","ontimeout","open","responseType","send","getSize","src","image","Image","then","catch","parseColor","cstr","parts","alpha","toLowerCase","base","slice","parseInt","exec","dims","split","parseFloat","pop","padStart","squareMask","dotMask","QRSVG","defs","appendChild","imageTools","drawQR","qr","drawImageSize","hideXDots","hideYDots","errorCorrectionPercent","q","maxWidth","maxHeight","alignment","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dimMax","dimMin","lower","upper","dotsMax","ceil","dotsMin","abs","hideMax","hideMin","maxW","maxH","floor","coverLevel","drawBackground","drawImage","drawDots","drawCorners","createColor","additionalRotation","name","backgroundMask","backgroundMaskGroup","createMask","filter","minSize","QRDot","overlayDot","markerDot","dotsMask","dotsMaskGroup","lightDotsMask","lightDotsMaskGroup","additionalDots","fakeCount","xBeginning","fakeMatrix","ii","jj","sqrt","iAlign","find","jAlign","xFakeBeginning","yFakeBeginning","xOffset","yOffset","colorCount","cornersSquareSize","cornersDotSize","column","yBeginning","cornersSquareMask","cornersSquareMaskGroup","cornersDotMask","cornersDotMaskGroup","cornersSquare","QRCornerSquare","cornersDot","QRCornerDot","imageUrl","dx","dy","setAttributeNS","indexOf","encoding","atob","Buffer","from","container","parseFromString","DOMParser","rootEl","getElementsByTagName","dw","dh","rect","x0","y0","x1","y1","positiveRotation","tan","stop","parsed","id","group","stringToBytes_UTF8","utf8","charcode","QRCodeStyling","qrSVG","update","innerHTML","setupSvg","append","applyExtension","extension","deleteExtension","serialize","svgDrawingPromise","serializeToString","XMLSerializer","defaultCanvasOptions","FileExtension","Da","Ea","sanitizeCanvasOptions","canvas","createElement","xml","image64","btoa","aaFactor","aaCanvas","OffscreenCanvas","getContext","canvasDrawingPromise","downloadURI","Fa","uri","link","download","href","body","click","removeChild","svg","png","jpeg","webp","browserUtils","downloadOptions","res","drawToCanvas"],"mappings":"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a,SAAU3B,EAAUX,GAA/C,GAVuC,CAerC6C,UAAAA,CAAWnB,GACjB,IAAM1B,KAAAA,EAAMqC,EAAAA,EAAG1Q,EAAAA,GAAK+P,OAEfF,SAAW1R,KAAKsP,SAASuD,gBAAgB,6BAA8B,QAiH5E,IAAIG,GAAO,EACP1S,EAAI,EACHoR,KAAAA,SAASc,aACZ,IAnHWS,CACX,IACA,EACA,SACA,IACA,EACA,UACC,SACD,UACC,SACD,SACA,KACC,SACD,SACC,SACD,SACA,KACC,MACD,UACC,SACD,UACC,SACD,SACA,IACA,SACA,SACA,SACA,SACA,SACA,SACA,IACA,GACA,SACA,IACA,SACA,SACA,IACA,SACA,SACA,SACA,SACA,OACA,SACA,IACA,SACA,SACA,SACA,SACA,SACA,SACA,IACA,SACA,SACA,SACA,SACA,IACA,EACA,SACA,EACA,SACA,IACA,GACC,SACD,UACC,SACD,QACC,SACD,IACA,UACC,OACD,UACC,OACD,IACA,SACA,EACA,SACA,SACA,OACA,SACA,IACA,SACA,SACA,GACA,SACA,IACA,UACC,SACD,UACC,SACD,UACC,MACD,IACA,UACC,SACD,UACC,SACD,QACC,SACD,IACA,SACA,EACA,SACA,SACA,SACA,OACA,IACA,EACA,SACA,EACA,SACA,KAOGrL,KAAK1G,GACY,iBAAhBgS,GAGShS,EAFH,EACJ8R,EAAO9R,EAAEiS,eAAiBjS,EACnBA,IAETZ,IACA4S,GAAQhD,EACR7N,IACEnB,GAAc,GAATZ,EAAI,EAASiS,EAAI1Q,GAEjBgP,EAAU3P,MAElBkS,KAAK,KAtIgC,CA0IpCC,YAAAA,CAAazB,GACnB,IAAM1B,KAAAA,EAAMqC,EAAAA,EAAG1Q,EAAAA,GAAK+P,EAEpB5R,KAAKsS,aAAa,IACbV,EACHD,KAAM,KACJ3R,KAAK0R,SAAW1R,KAAKsP,SAASuD,gBAAgB,6BAA8B,QAC5E7S,KAAK0R,SAASc,aAAa,IAAK3B,EAAU0B,IACrCb,KAAAA,SAASc,aAAa,IAAK3B,EAAUhP,SACrC6P,SAASc,aAAa,QAAS3B,EAAUX,IACz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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,27]}
|
|
1
|
+
{"version":3,"file":"qr-code-styling.js","sources":["../node_modules/@liquid-js/qrcode-generator/lib/qrcode/BitBuffer.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/ErrorCorrectLevel.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRMath.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/Polynomial.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/Mode.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRData.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QR8BitByte.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRAlphaNum.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRKanji.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRNumber.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/MaskPattern.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRUtil.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/RSBlock.js","../node_modules/@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js","../src/utils/merge.ts","../src/utils/gradient.ts","../src/utils/options.ts","../src/utils/qrcode.ts","../src/utils/svg.ts","../src/figures/corner-dot.ts","../src/figures/corner-square.ts","../src/figures/dot.ts","../src/tools/browser-image-tools.ts","../src/utils/color.ts","../src/core/qr-svg.ts","../src/utils/image.ts","../src/core/qr-code-styling.ts","../node_modules/@liquid-js/qrcode-generator/lib/text/stringToBytes_UTF8.js","../src/utils/canvas-options.ts","../src/tools/browser-utils.ts","../src/index.ts"],"sourcesContent":["export class BitBuffer {\n constructor() {\n this.buffer = [];\n this.length = 0;\n }\n getBuffer() {\n return this.buffer;\n }\n getLengthInBits() {\n return this.length;\n }\n toString() {\n let buffer = '';\n for (let i = 0; i < this.getLengthInBits(); i += 1) {\n buffer += this.getBit(i) ? '1' : '0';\n }\n return buffer;\n }\n getBit(index) {\n return ((this.buffer[~~(index / 8)] >>> (7 - (index % 8))) & 1) == 1;\n }\n put(num, length) {\n for (let i = 0; i < length; i += 1) {\n this.putBit(((num >>> (length - i - 1)) & 1) == 1);\n }\n }\n putBit(bit) {\n if (this.length == this.buffer.length * 8) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[~~(this.length / 8)] |= 0x80 >>> this.length % 8;\n }\n this.length += 1;\n }\n}\n//# sourceMappingURL=BitBuffer.js.map","/**\n * ErrorCorrectLevel\n *\n * @author Kazuhiko Arase\n */\nexport var ErrorCorrectLevel;\n(function (ErrorCorrectLevel) {\n /**\n * 7%\n */\n ErrorCorrectLevel[ErrorCorrectLevel[\"L\"] = 1] = \"L\";\n /**\n * 15%\n */\n ErrorCorrectLevel[ErrorCorrectLevel[\"M\"] = 0] = \"M\";\n /**\n * 25%\n */\n ErrorCorrectLevel[ErrorCorrectLevel[\"Q\"] = 3] = \"Q\";\n /**\n * 30%\n */\n ErrorCorrectLevel[ErrorCorrectLevel[\"H\"] = 2] = \"H\";\n})(ErrorCorrectLevel || (ErrorCorrectLevel = {}));\n//# sourceMappingURL=ErrorCorrectLevel.js.map","/**\n * QRMath\n *\n * @author Kazuhiko Arase\n */\nexport class QRMath {\n constructor() {\n throw new Error('error');\n }\n static glog(n) {\n if (n < 1) {\n throw new Error('log(' + n + ')');\n }\n return QRMath.LOG_TABLE[n];\n }\n static gexp(n) {\n while (n < 0) {\n n += 255;\n }\n while (n >= 256) {\n n -= 255;\n }\n return QRMath.EXP_TABLE[n];\n }\n}\nQRMath.initialize = (() => {\n QRMath.EXP_TABLE = [];\n QRMath.LOG_TABLE = [];\n for (let i = 0; i < 256; i += 1) {\n QRMath.EXP_TABLE.push(i < 8\n ? 1 << i\n : QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8]);\n QRMath.LOG_TABLE.push(0);\n }\n for (let i = 0; i < 255; i += 1) {\n QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;\n }\n})();\n//# sourceMappingURL=QRMath.js.map","import { QRMath } from './QRMath.js';\n/**\n * Polynomial\n *\n * @author Kazuhiko Arase\n */\nexport class Polynomial {\n constructor(num, shift = 0) {\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n this.num = [];\n const len = num.length - offset;\n for (let i = 0; i < len; i += 1) {\n this.num.push(num[offset + i]);\n }\n for (let i = 0; i < shift; i += 1) {\n this.num.push(0);\n }\n }\n getAt(index) {\n return this.num[index];\n }\n getLength() {\n return this.num.length;\n }\n toString() {\n let buffer = '';\n for (let i = 0; i < this.getLength(); i += 1) {\n if (i > 0) {\n buffer += ',';\n }\n buffer += this.getAt(i);\n }\n return buffer.toString();\n }\n toLogString() {\n let buffer = '';\n for (let i = 0; i < this.getLength(); i += 1) {\n if (i > 0) {\n buffer += ',';\n }\n buffer += QRMath.glog(this.getAt(i));\n }\n return buffer.toString();\n }\n multiply(e) {\n const num = [];\n const len = this.getLength() + e.getLength() - 1;\n for (let i = 0; i < len; i += 1) {\n num.push(0);\n }\n for (let i = 0; i < this.getLength(); i += 1) {\n for (let j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(this.getAt(i)) + QRMath.glog(e.getAt(j)));\n }\n }\n return new Polynomial(num);\n }\n mod(e) {\n if (this.getLength() - e.getLength() < 0) {\n return this;\n }\n const ratio = QRMath.glog(this.getAt(0)) - QRMath.glog(e.getAt(0));\n // create copy\n const num = [];\n for (let i = 0; i < this.getLength(); i += 1) {\n num.push(this.getAt(i));\n }\n // subtract and calc rest.\n for (let i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i)) + ratio);\n }\n // call recursively\n return new Polynomial(num).mod(e);\n }\n}\n//# sourceMappingURL=Polynomial.js.map","/**\n * Mode\n *\n * @author Kazuhiko Arase\n */\nexport var Mode;\n(function (Mode) {\n /**\n * number\n */\n Mode[Mode[\"MODE_NUMBER\"] = 1] = \"MODE_NUMBER\";\n /**\n * alphabet and number\n */\n Mode[Mode[\"MODE_ALPHA_NUM\"] = 2] = \"MODE_ALPHA_NUM\";\n /**\n * 8bit byte\n */\n Mode[Mode[\"MODE_8BIT_BYTE\"] = 4] = \"MODE_8BIT_BYTE\";\n /**\n * KANJI\n */\n Mode[Mode[\"MODE_KANJI\"] = 8] = \"MODE_KANJI\";\n})(Mode || (Mode = {}));\n//# sourceMappingURL=Mode.js.map","import { Mode } from './Mode.js';\n/**\n * QRData\n *\n * @author Kazuhiko Arase\n */\nexport class QRData {\n constructor(mode, data) {\n this.mode = mode;\n this.data = data;\n }\n getMode() {\n return this.mode;\n }\n getData() {\n return this.data;\n }\n getLengthInBits(typeNumber) {\n if (1 <= typeNumber && typeNumber < 10) {\n // 1 - 9\n switch (this.mode) {\n case Mode.MODE_NUMBER:\n return 10;\n case Mode.MODE_ALPHA_NUM:\n return 9;\n case Mode.MODE_8BIT_BYTE:\n return 8;\n case Mode.MODE_KANJI:\n return 8;\n default:\n throw new Error('mode:' + this.mode);\n }\n }\n else if (typeNumber < 27) {\n // 10 - 26\n switch (this.mode) {\n case Mode.MODE_NUMBER:\n return 12;\n case Mode.MODE_ALPHA_NUM:\n return 11;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 10;\n default:\n throw new Error('mode:' + this.mode);\n }\n }\n else if (typeNumber < 41) {\n // 27 - 40\n switch (this.mode) {\n case Mode.MODE_NUMBER:\n return 14;\n case Mode.MODE_ALPHA_NUM:\n return 13;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 12;\n default:\n throw new Error('mode:' + this.mode);\n }\n }\n else {\n throw new Error('typeNumber:' + typeNumber);\n }\n }\n}\n//# sourceMappingURL=QRData.js.map","import { Mode } from './Mode.js';\nimport { QRData } from './QRData.js';\n/**\n * QR8BitByte\n *\n * @author Kazuhiko Arase\n */\nexport class QR8BitByte extends QRData {\n constructor(data, stringToBytes) {\n super(Mode.MODE_8BIT_BYTE, data);\n this.stringToBytes = stringToBytes;\n }\n write(buffer) {\n const data = this.stringToBytes(this.getData());\n data.forEach(val => buffer.put(val, 8));\n }\n getLength() {\n return this.stringToBytes(this.getData()).length;\n }\n}\n//# sourceMappingURL=QR8BitByte.js.map","import { Mode } from './Mode.js';\nimport { QRData } from './QRData.js';\n/**\n * QRAlphaNum\n *\n * @author Kazuhiko Arase\n */\nexport class QRAlphaNum extends QRData {\n constructor(data) {\n super(Mode.MODE_ALPHA_NUM, data);\n }\n write(buffer) {\n const s = this.getData();\n let i = 0;\n while (i + 1 < s.length) {\n buffer.put(QRAlphaNum.getCode(s.charAt(i)) * 45 + QRAlphaNum.getCode(s.charAt(i + 1)), 11);\n i += 2;\n }\n if (i < s.length) {\n buffer.put(QRAlphaNum.getCode(s.charAt(i)), 6);\n }\n }\n getLength() {\n return this.getData().length;\n }\n static getCode(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n }\n else {\n switch (c) {\n case ' ':\n return 36;\n case '$':\n return 37;\n case '%':\n return 38;\n case '*':\n return 39;\n case '+':\n return 40;\n case '-':\n return 41;\n case '.':\n return 42;\n case '/':\n return 43;\n case ':':\n return 44;\n default:\n throw new Error('illegal char :' + c);\n }\n }\n }\n}\n//# sourceMappingURL=QRAlphaNum.js.map","import { Mode } from './Mode.js';\nimport { QRData } from './QRData.js';\n/**\n * QRKanji(SJIS only)\n *\n * @author Kazuhiko Arase\n */\nexport class QRKanji extends QRData {\n constructor(data, stringToBytes) {\n super(Mode.MODE_KANJI, data);\n this.stringToBytes = stringToBytes;\n }\n write(buffer) {\n const data = this.stringToBytes(this.getData());\n let i = 0;\n while (i + 1 < data.length) {\n let c = ((0xff & data[i]) << 8) | (0xff & data[i + 1]);\n if (0x8140 <= c && c <= 0x9ffc) {\n c -= 0x8140;\n }\n else if (0xe040 <= c && c <= 0xebbf) {\n c -= 0xc140;\n }\n else {\n throw new Error('illegal char at ' + (i + 1) + '/' + c);\n }\n c = ((c >>> 8) & 0xff) * 0xc0 + (c & 0xff);\n buffer.put(c, 13);\n i += 2;\n }\n if (i < data.length) {\n throw new Error('illegal char at ' + (i + 1));\n }\n }\n getLength() {\n return this.stringToBytes(this.getData()).length / 2;\n }\n}\n//# sourceMappingURL=QRKanji.js.map","import { Mode } from './Mode.js';\nimport { QRData } from './QRData.js';\n/**\n * QRNumber\n *\n * @author Kazuhiko Arase\n */\nexport class QRNumber extends QRData {\n constructor(data) {\n super(Mode.MODE_NUMBER, data);\n }\n write(buffer) {\n const data = this.getData();\n let i = 0;\n while (i + 2 < data.length) {\n buffer.put(QRNumber.strToNum(data.substring(i, i + 3)), 10);\n i += 3;\n }\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(QRNumber.strToNum(data.substring(i, i + 1)), 4);\n }\n else if (data.length - i == 2) {\n buffer.put(QRNumber.strToNum(data.substring(i, i + 2)), 7);\n }\n }\n }\n getLength() {\n return this.getData().length;\n }\n static strToNum(s) {\n let num = 0;\n for (let i = 0; i < s.length; i += 1) {\n num = num * 10 + QRNumber.chatToNum(s.charAt(i));\n }\n return num;\n }\n static chatToNum(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw new Error('illegal char :' + c);\n }\n}\n//# sourceMappingURL=QRNumber.js.map","/**\n * MaskPattern\n *\n * @author Kazuhiko Arase\n */\nexport var MaskPattern;\n(function (MaskPattern) {\n /**\n * mask pattern 000\n */\n MaskPattern[MaskPattern[\"PATTERN000\"] = 0] = \"PATTERN000\";\n /**\n * mask pattern 001\n */\n MaskPattern[MaskPattern[\"PATTERN001\"] = 1] = \"PATTERN001\";\n /**\n * mask pattern 010\n */\n MaskPattern[MaskPattern[\"PATTERN010\"] = 2] = \"PATTERN010\";\n /**\n * mask pattern 011\n */\n MaskPattern[MaskPattern[\"PATTERN011\"] = 3] = \"PATTERN011\";\n /**\n * mask pattern 100\n */\n MaskPattern[MaskPattern[\"PATTERN100\"] = 4] = \"PATTERN100\";\n /**\n * mask pattern 101\n */\n MaskPattern[MaskPattern[\"PATTERN101\"] = 5] = \"PATTERN101\";\n /**\n * mask pattern 110\n */\n MaskPattern[MaskPattern[\"PATTERN110\"] = 6] = \"PATTERN110\";\n /**\n * mask pattern 111\n */\n MaskPattern[MaskPattern[\"PATTERN111\"] = 7] = \"PATTERN111\";\n})(MaskPattern || (MaskPattern = {}));\n//# sourceMappingURL=MaskPattern.js.map","import { ErrorCorrectLevel } from './ErrorCorrectLevel.js';\nimport { MaskPattern } from './MaskPattern.js';\nimport { Mode } from './Mode.js';\nimport { Polynomial } from './Polynomial.js';\nimport { QRMath } from './QRMath.js';\n/**\n * QRUtil\n *\n * @author Kazuhiko Arase\n */\nexport class QRUtil {\n constructor() {\n throw new Error('error');\n }\n static getPatternPosition(typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n }\n static getMaxLength(typeNumber, mode, errorCorrectLevel) {\n const t = typeNumber - 1;\n let e = 0;\n let m = 0;\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n e = 0;\n break;\n case ErrorCorrectLevel.M:\n e = 1;\n break;\n case ErrorCorrectLevel.Q:\n e = 2;\n break;\n case ErrorCorrectLevel.H:\n e = 3;\n break;\n default:\n throw new Error('e:' + errorCorrectLevel);\n }\n switch (mode) {\n case Mode.MODE_NUMBER:\n m = 0;\n break;\n case Mode.MODE_ALPHA_NUM:\n m = 1;\n break;\n case Mode.MODE_8BIT_BYTE:\n m = 2;\n break;\n case Mode.MODE_KANJI:\n m = 3;\n break;\n default:\n throw new Error('m:' + mode);\n }\n return QRUtil.MAX_LENGTH[t][e][m];\n }\n static getErrorCorrectPolynomial(errorCorrectLength) {\n let a = new Polynomial([1]);\n for (let i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(new Polynomial([1, QRMath.gexp(i)]));\n }\n return a;\n }\n static getMaskFunc(maskPattern) {\n switch (maskPattern) {\n case MaskPattern.PATTERN000:\n return (i, j) => (i + j) % 2 == 0;\n case MaskPattern.PATTERN001:\n return (i, _j) => i % 2 == 0;\n case MaskPattern.PATTERN010:\n return (_i, j) => j % 3 == 0;\n case MaskPattern.PATTERN011:\n return (i, j) => (i + j) % 3 == 0;\n case MaskPattern.PATTERN100:\n return (i, j) => (~~(i / 2) + ~~(j / 3)) % 2 == 0;\n case MaskPattern.PATTERN101:\n return (i, j) => ((i * j) % 2) + ((i * j) % 3) == 0;\n case MaskPattern.PATTERN110:\n return (i, j) => (((i * j) % 2) + ((i * j) % 3)) % 2 == 0;\n case MaskPattern.PATTERN111:\n return (i, j) => (((i * j) % 3) + ((i + j) % 2)) % 2 == 0;\n default:\n throw new Error('mask:' + maskPattern);\n }\n }\n static getLostPoint(qrCode) {\n const moduleCount = qrCode.getModuleCount();\n let lostPoint = 0;\n // LEVEL1\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount; col += 1) {\n let sameCount = 0;\n const dark = qrCode.isDark(row, col);\n for (let r = -1; r <= 1; r += 1) {\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n for (let c = -1; c <= 1; c += 1) {\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n if (r == 0 && c == 0) {\n continue;\n }\n if (dark == qrCode.isDark(row + r, col + c)) {\n sameCount += 1;\n }\n }\n }\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n }\n // LEVEL2\n for (let row = 0; row < moduleCount - 1; row += 1) {\n for (let col = 0; col < moduleCount - 1; col += 1) {\n let count = 0;\n if (qrCode.isDark(row, col))\n count += 1;\n if (qrCode.isDark(row + 1, col))\n count += 1;\n if (qrCode.isDark(row, col + 1))\n count += 1;\n if (qrCode.isDark(row + 1, col + 1))\n count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n // LEVEL3\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount - 6; col += 1) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row, col + 1) &&\n qrCode.isDark(row, col + 2) &&\n qrCode.isDark(row, col + 3) &&\n qrCode.isDark(row, col + 4) &&\n !qrCode.isDark(row, col + 5) &&\n qrCode.isDark(row, col + 6)) {\n lostPoint += 40;\n }\n }\n }\n for (let col = 0; col < moduleCount; col += 1) {\n for (let row = 0; row < moduleCount - 6; row += 1) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col)) {\n lostPoint += 40;\n }\n }\n }\n // LEVEL4\n let darkCount = 0;\n for (let col = 0; col < moduleCount; col += 1) {\n for (let row = 0; row < moduleCount; row += 1) {\n if (qrCode.isDark(row, col)) {\n darkCount += 1;\n }\n }\n }\n const ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n return lostPoint;\n }\n static getBCHTypeInfo(data) {\n let d = data << 10;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15));\n }\n return ((data << 10) | d) ^ QRUtil.G15_MASK;\n }\n static getBCHTypeNumber(data) {\n let d = data << 12;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18));\n }\n return (data << 12) | d;\n }\n static getBCHDigit(data) {\n let digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n }\n}\nQRUtil.PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n];\nQRUtil.MAX_LENGTH = [\n [\n [41, 25, 17, 10],\n [34, 20, 14, 8],\n [27, 16, 11, 7],\n [17, 10, 7, 4]\n ],\n [\n [77, 47, 32, 20],\n [63, 38, 26, 16],\n [48, 29, 20, 12],\n [34, 20, 14, 8]\n ],\n [\n [127, 77, 53, 32],\n [101, 61, 42, 26],\n [77, 47, 32, 20],\n [58, 35, 24, 15]\n ],\n [\n [187, 114, 78, 48],\n [149, 90, 62, 38],\n [111, 67, 46, 28],\n [82, 50, 34, 21]\n ],\n [\n [255, 154, 106, 65],\n [202, 122, 84, 52],\n [144, 87, 60, 37],\n [106, 64, 44, 27]\n ],\n [\n [322, 195, 134, 82],\n [255, 154, 106, 65],\n [178, 108, 74, 45],\n [139, 84, 58, 36]\n ],\n [\n [370, 224, 154, 95],\n [293, 178, 122, 75],\n [207, 125, 86, 53],\n [154, 93, 64, 39]\n ],\n [\n [461, 279, 192, 118],\n [365, 221, 152, 93],\n [259, 157, 108, 66],\n [202, 122, 84, 52]\n ],\n [\n [552, 335, 230, 141],\n [432, 262, 180, 111],\n [312, 189, 130, 80],\n [235, 143, 98, 60]\n ],\n [\n [652, 395, 271, 167],\n [513, 311, 213, 131],\n [364, 221, 151, 93],\n [288, 174, 119, 74]\n ]\n];\nQRUtil.G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\nQRUtil.G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\nQRUtil.G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n//# sourceMappingURL=QRUtil.js.map","import { ErrorCorrectLevel } from './ErrorCorrectLevel.js';\n/**\n * RSBlock\n *\n * @author Kazuhiko Arase\n */\nexport class RSBlock {\n constructor(totalCount, dataCount) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n }\n getDataCount() {\n return this.dataCount;\n }\n getTotalCount() {\n return this.totalCount;\n }\n static getRSBlocks(typeNumber, errorCorrectLevel) {\n const rsBlock = RSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n const length = rsBlock.length / 3;\n const list = [];\n for (let i = 0; i < length; i += 1) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n for (let j = 0; j < count; j += 1) {\n list.push(new RSBlock(totalCount, dataCount));\n }\n }\n return list;\n }\n static getRsBlockTable(typeNumber, errorCorrectLevel) {\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n return RSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case ErrorCorrectLevel.M:\n return RSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case ErrorCorrectLevel.Q:\n return RSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case ErrorCorrectLevel.H:\n return RSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default:\n break;\n }\n throw new Error('tn:' + typeNumber + '/ecl:' + errorCorrectLevel);\n }\n}\nRSBlock.RS_BLOCK_TABLE = [\n // L\n // M\n // Q\n // H\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n];\n//# sourceMappingURL=RSBlock.js.map","import { BitBuffer } from './BitBuffer.js';\nimport { ErrorCorrectLevel } from './ErrorCorrectLevel.js';\nimport { Polynomial } from './Polynomial.js';\nimport { QR8BitByte } from './QR8BitByte.js';\nimport { QRAlphaNum } from './QRAlphaNum.js';\nimport { QRData } from './QRData.js';\nimport { QRKanji } from './QRKanji.js';\nimport { QRNumber } from './QRNumber.js';\nimport { QRUtil } from './QRUtil.js';\nimport { RSBlock } from './RSBlock.js';\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nconst TypeNumber = Array(41)\n .fill(0)\n .map((_, i) => i);\nexport { TypeNumber };\nexport var ErrorCorrectionLevel;\n(function (ErrorCorrectionLevel) {\n ErrorCorrectionLevel[\"L\"] = \"L\";\n ErrorCorrectionLevel[\"M\"] = \"M\";\n ErrorCorrectionLevel[\"Q\"] = \"Q\";\n ErrorCorrectionLevel[\"H\"] = \"H\";\n})(ErrorCorrectionLevel || (ErrorCorrectionLevel = {}));\nexport var Mode;\n(function (Mode) {\n Mode[\"numeric\"] = \"numeric\";\n Mode[\"alphanumeric\"] = \"alphanumeric\";\n /**\n * Default\n */\n Mode[\"byte\"] = \"byte\";\n Mode[\"kanji\"] = \"kanji\";\n Mode[\"unicode\"] = \"unicode\";\n})(Mode || (Mode = {}));\n/**\n * QRCode\n *\n * @author Kazuhiko Arase\n */\nexport class QRCodeMinimal {\n constructor(typeNumber = 0, errorCorrectionLevel = ErrorCorrectionLevel.L) {\n this.modules = [];\n this.moduleCount = 0;\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = ErrorCorrectLevel[errorCorrectionLevel];\n this.qrDataList = [];\n }\n getTypeNumber() {\n return this.typeNumber;\n }\n setTypeNumber(typeNumber) {\n this.typeNumber = typeNumber;\n }\n getErrorCorrectLevel() {\n return this.errorCorrectLevel;\n }\n setErrorCorrectLevel(errorCorrectLevel) {\n this.errorCorrectLevel = errorCorrectLevel;\n }\n clearData() {\n this.qrDataList = [];\n }\n addData(qrData, mode = Mode.byte) {\n if (qrData instanceof QRData) {\n this.qrDataList.push(qrData);\n }\n else if (typeof qrData === 'string') {\n switch (mode) {\n case Mode.numeric:\n this.qrDataList.push(new QRNumber(qrData));\n break;\n case Mode.alphanumeric:\n this.qrDataList.push(new QRAlphaNum(qrData));\n break;\n case Mode.byte:\n this.qrDataList.push(new QR8BitByte(qrData, QRCodeMinimal.stringToBytesFuncs.default));\n break;\n case Mode.unicode:\n this.qrDataList.push(new QR8BitByte(qrData, QRCodeMinimal.stringToBytesFuncs['UTF8']));\n break;\n case Mode.kanji:\n this.qrDataList.push(new QRKanji(qrData, QRCodeMinimal.stringToBytesFuncs['SJIS']));\n break;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else {\n throw new Error(typeof qrData);\n }\n }\n /*private getDataCount(): number {\n return this.qrDataList.length;\n }\n\n private getData(index: number): QRData {\n return this.qrDataList[index];\n }*/\n isDark(row, col) {\n if (this.modules[row][col] != null) {\n return this.modules[row][col];\n }\n else {\n return false;\n }\n }\n getModuleCount() {\n return this.moduleCount;\n }\n make() {\n if (this.typeNumber < 1) {\n let typeNumber = 1;\n for (; typeNumber < 40; typeNumber++) {\n const rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n const buffer = new BitBuffer();\n this.qrDataList.forEach(data => {\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), data.getLengthInBits(typeNumber));\n data.write(buffer);\n });\n const totalDataCount = rsBlocks.reduce((t, v) => t + v.getDataCount(), 0);\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n this.typeNumber = typeNumber;\n }\n this.makeImpl(false, this.getBestMaskPattern());\n }\n getBestMaskPattern() {\n let minLostPoint = 0;\n let pattern = 0;\n for (let i = 0; i < 8; i += 1) {\n this.makeImpl(true, i);\n const lostPoint = QRUtil.getLostPoint(this);\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n return pattern;\n }\n makeImpl(test, maskPattern) {\n // initialize modules\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = [];\n for (let i = 0; i < this.moduleCount; i += 1) {\n this.modules.push([]);\n for (let j = 0; j < this.moduleCount; j += 1) {\n this.modules[i].push(null);\n }\n }\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n const data = QRCodeMinimal.createData(this.typeNumber, this.errorCorrectLevel, this.qrDataList);\n this.mapData(data, maskPattern);\n }\n mapData(data, maskPattern) {\n let inc = -1;\n let row = this.moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n const maskFunc = QRUtil.getMaskFunc(maskPattern);\n for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col == 6) {\n col -= 1;\n }\n while (true) {\n for (let c = 0; c < 2; c += 1) {\n if (this.modules[row][col - c] == null) {\n let dark = false;\n if (byteIndex < data.length) {\n dark = ((data[byteIndex] >>> bitIndex) & 1) == 1;\n }\n const mask = maskFunc(row, col - c);\n if (mask) {\n dark = !dark;\n }\n this.modules[row][col - c] = dark;\n bitIndex -= 1;\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n row += inc;\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n }\n setupPositionAdjustPattern() {\n const pos = QRUtil.getPatternPosition(this.typeNumber);\n pos.forEach(row => {\n pos.forEach(col => {\n if (this.modules[row][col] != null) {\n return;\n }\n for (let r = -2; r <= 2; r += 1) {\n for (let c = -2; c <= 2; c += 1) {\n if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n });\n });\n }\n setupPositionProbePattern(row, col) {\n for (let r = -1; r <= 7; r += 1) {\n for (let c = -1; c <= 7; c += 1) {\n if (row + r <= -1 || this.moduleCount <= row + r || col + c <= -1 || this.moduleCount <= col + c) {\n continue;\n }\n if ((0 <= r && r <= 6 && (c == 0 || c == 6)) ||\n (0 <= c && c <= 6 && (r == 0 || r == 6)) ||\n (2 <= r && r <= 4 && 2 <= c && c <= 4)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n setupTimingPattern() {\n for (let r = 8; r < this.moduleCount - 8; r += 1) {\n if (this.modules[r][6] != null) {\n continue;\n }\n this.modules[r][6] = r % 2 == 0;\n }\n for (let c = 8; c < this.moduleCount - 8; c += 1) {\n if (this.modules[6][c] != null) {\n continue;\n }\n this.modules[6][c] = c % 2 == 0;\n }\n }\n setupTypeNumber(test) {\n const bits = QRUtil.getBCHTypeNumber(this.typeNumber);\n for (let i = 0; i < 18; i += 1) {\n this.modules[~~(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = !test && ((bits >> i) & 1) == 1;\n }\n for (let i = 0; i < 18; i += 1) {\n this.modules[(i % 3) + this.moduleCount - 8 - 3][~~(i / 3)] = !test && ((bits >> i) & 1) == 1;\n }\n }\n setupTypeInfo(test, maskPattern) {\n const data = (this.errorCorrectLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n // vertical\n for (let i = 0; i < 15; i += 1) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 6) {\n this.modules[i][8] = mod;\n }\n else if (i < 8) {\n this.modules[i + 1][8] = mod;\n }\n else {\n this.modules[this.moduleCount - 15 + i][8] = mod;\n }\n }\n // horizontal\n for (let i = 0; i < 15; i += 1) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 8) {\n this.modules[8][this.moduleCount - i - 1] = mod;\n }\n else if (i < 9) {\n this.modules[8][15 - i - 1 + 1] = mod;\n }\n else {\n this.modules[8][15 - i - 1] = mod;\n }\n }\n // fixed\n this.modules[this.moduleCount - 8][8] = !test;\n }\n static createData(typeNumber, errorCorrectLevel, dataArray) {\n const rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n const buffer = new BitBuffer();\n dataArray.forEach(data => {\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), data.getLengthInBits(typeNumber));\n data.write(buffer);\n });\n // calc max data count\n const totalDataCount = rsBlocks.reduce((t, v) => t + v.getDataCount(), 0);\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error('code length overflow. (' + buffer.getLengthInBits() + '>' + totalDataCount * 8 + ')');\n }\n // end\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n // padding\n while (true) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCodeMinimal.PAD0, 8);\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCodeMinimal.PAD1, 8);\n }\n return QRCodeMinimal.createBytes(buffer, rsBlocks);\n }\n static createBytes(buffer, rsBlocks) {\n let offset = 0;\n let maxDcCount = 0;\n let maxEcCount = 0;\n const dcdata = new Array(rsBlocks.length).map(_ => []);\n const ecdata = new Array(rsBlocks.length).map(_ => []);\n function createNumArray(len) {\n const a = [];\n for (let i = 0; i < len; i += 1) {\n a.push(0);\n }\n return a;\n }\n for (let r = 0; r < rsBlocks.length; r += 1) {\n const dcCount = rsBlocks[r].getDataCount();\n const ecCount = rsBlocks[r].getTotalCount() - dcCount;\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n dcdata[r] = createNumArray(dcCount);\n for (let i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = createNumArray(rsPoly.getLength() - 1);\n for (let i = 0; i < ecdata[r].length; i += 1) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.getAt(modIndex) : 0;\n }\n }\n const totalCodeCount = rsBlocks.reduce((t, v) => t + v.getTotalCount(), 0);\n const data = createNumArray(totalCodeCount);\n let index = 0;\n for (let i = 0; i < maxDcCount; i += 1) {\n for (let r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n for (let i = 0; i < maxEcCount; i += 1) {\n for (let r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n return data;\n }\n}\nQRCodeMinimal.stringToBytesFuncs = {\n default(s) {\n const bytes = [];\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n};\nQRCodeMinimal.PAD0 = 0xec;\nQRCodeMinimal.PAD1 = 0x11;\n//# sourceMappingURL=QRCodeMinimal.js.map","const isObject = (obj: Record<string, unknown> | undefined): boolean =>\r\n !!obj && typeof obj === 'object' && !Array.isArray(obj)\r\n\r\nexport type UnknownObject =\r\n | {\r\n\r\n [key: string]: any\r\n }\r\n | undefined\r\n\r\nexport function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\r\n if (!sources.length) return target\r\n const source = sources.shift()\r\n if (source === undefined || !isObject(target) || !isObject(source)) return target\r\n target = { ...target }\r\n Object.keys(source).forEach((key: string): void => {\r\n const targetValue = target[key]\r\n const sourceValue = source[key]\r\n\r\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\r\n target[key] = sourceValue\r\n } else if (isObject(targetValue) && isObject(sourceValue)) {\r\n target[key] = mergeDeep({ ...targetValue}, sourceValue)\r\n } else {\r\n target[key] = sourceValue\r\n }\r\n })\r\n\r\n return mergeDeep(target, ...sources)\r\n}\r\n","export enum GradientType {\r\n radial = 'radial',\r\n linear = 'linear'\r\n}\r\n\r\nexport interface Gradient {\r\n /**\r\n * Type of gradient spread\r\n *\r\n * @default GradientType.linear\r\n */\r\n type: `${GradientType}`\r\n /**\r\n * Rotation of gradient (in radians, Math.PI === 180 degrees)\r\n *\r\n * @default 0\r\n */\r\n rotation?: number\r\n /** Gradient colors. */\r\n colorStops: Array<{\r\n /** Position of color in gradient range */\r\n offset: number\r\n /** Color of stop in gradient range */\r\n color: string\r\n }>\r\n}\r\n\r\nexport function sanitizeGradient(gradient: Gradient): Gradient {\r\n const newGradient = { ...gradient }\r\n\r\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\r\n throw new Error(\"Field 'colorStops' is required in gradient\")\r\n }\r\n\r\n if (newGradient.rotation) {\r\n newGradient.rotation = Number(newGradient.rotation)\r\n } else {\r\n newGradient.rotation = 0\r\n }\r\n\r\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number, color: string }) => ({\r\n ...colorStop,\r\n offset: Number(colorStop.offset)\r\n }))\r\n\r\n return newGradient\r\n}\r\n","import { ErrorCorrectionLevel, Mode, TypeNumber } from '@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js'\r\nimport { browserImageTools } from '../tools/browser-image-tools.js'\r\nimport { Gradient, sanitizeGradient } from './gradient.js'\r\n\r\nexport enum DotType {\r\n dot = 'dot',\r\n randomDot = 'random-dot',\r\n rounded = 'rounded',\r\n extraRounded = 'extra-rounded',\r\n verticalLine = 'vertical-line',\r\n horizontalLine = 'horizontal-line',\r\n classy = 'classy',\r\n classyRounded = 'classy-rounded',\r\n square = 'square',\r\n smallSquare = 'small-square',\r\n tinySquare = 'tiny-square',\r\n diamond = 'diamond'\r\n}\r\n\r\nexport enum CornerDotType {\r\n dot = 'dot',\r\n square = 'square',\r\n heart = 'heart',\r\n extraRounded = 'extra-rounded',\r\n classy = 'classy',\r\n outpoint = 'outpoint',\r\n inpoint = 'inpoint'\r\n}\r\n\r\nexport enum CornerSquareType {\r\n dot = 'dot',\r\n square = 'square',\r\n extraRounded = 'extra-rounded',\r\n classy = 'classy',\r\n outpoint = 'outpoint',\r\n inpoint = 'inpoint'\r\n}\r\n\r\nexport enum ShapeType {\r\n square = 'square',\r\n circle = 'circle'\r\n}\r\n\r\nexport enum ImageMode {\r\n /**\r\n * Place image in the center of the code\r\n */\r\n center = 'center',\r\n /**\r\n * Place image over the center of the code\r\n */\r\n overlay = 'overlay',\r\n /**\r\n * Use image as background, draw dots over it\r\n */\r\n background = 'background'\r\n}\r\n\r\nexport interface Options {\r\n /** Use a custom DOM domplementation */\r\n document: Document\r\n /** Use a custom image fetching & serializaton implementation */\r\n imageTools?: typeof browserImageTools\r\n /** @ignore */\r\n width: number\r\n /** @ignore */\r\n height: number\r\n /** The data will be encoded in the QR code */\r\n data: string\r\n /** The image will be copied to the center of the QR code */\r\n image?: string | Buffer | Blob\r\n /**\r\n * QR code shape\r\n *\r\n * @default ShapeType.square\r\n */\r\n shape: `${ShapeType}`\r\n /** Options will be passed to `@liquid-js/qrcode-generator` lib */\r\n qrOptions: {\r\n typeNumber: TypeNumber\r\n mode?: `${Mode}`\r\n /** @default ErrorCorrectionLevel.Q */\r\n errorCorrectionLevel: `${ErrorCorrectionLevel}`\r\n }\r\n imageOptions: {\r\n /**\r\n * Image mode\r\n *\r\n * @default ImageMode.center\r\n */\r\n mode: `${ImageMode}`\r\n /**\r\n * Fill blank areas of the code with selected color\r\n */\r\n fill: {\r\n /**\r\n * Color of QR dots\r\n *\r\n * @default \"rgba(255,255,255,0.75)\"\r\n */\r\n color: string\r\n /** Gradient of Corners Dot */\r\n gradient?: Gradient\r\n }\r\n /**\r\n * Coefficient of the image size\r\n *\r\n * @default 0.4\r\n */\r\n imageSize: number\r\n /**\r\n * Margin of the image (in blocks)\r\n *\r\n * @default 0\r\n */\r\n margin: number\r\n /**\r\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLImageElement/crossOrigin)\r\n */\r\n crossOrigin?: string\r\n }\r\n dotsOptions: {\r\n /**\r\n * QR dot size (in pixels)\r\n *\r\n * @default 10\r\n */\r\n size: number\r\n /**\r\n * Color of QR dots\r\n *\r\n * @default \"#000\"\r\n */\r\n color: string\r\n /** Gradient of QR dots */\r\n gradient?: Gradient\r\n /**\r\n * Style of QR dots\r\n *\r\n * @default DotType.square\r\n */\r\n type: `${DotType}`\r\n }\r\n /** Corners Square options, omitted values match dots */\r\n cornersSquareOptions?: {\r\n /** Color of Corners Square */\r\n color?: string\r\n /** Gradient of Corners Square */\r\n gradient?: Gradient\r\n /** Style of Corners Square */\r\n type?: `${CornerSquareType}`\r\n }\r\n /** Corners Dot options, omitted values match squares */\r\n cornersDotOptions?: {\r\n /** Color of Corners Dot */\r\n color?: string\r\n /** Gradient of Corners Dot */\r\n gradient?: Gradient\r\n /** Style of Corners Dot */\r\n type?: `${CornerDotType}`\r\n }\r\n /** QR background styling options, false to disable background */\r\n backgroundOptions?:\r\n | {\r\n /** Background roundnes, from 0 (square) to 1 (circle) */\r\n round?: number\r\n /** Background color */\r\n color?: string\r\n /** Background Gradient */\r\n gradient?: Gradient\r\n /**\r\n * Margin (in blocks) between background and the QR code\r\n *\r\n * @default 0\r\n */\r\n margin?: number\r\n }\r\n | false\r\n /** `import { stringToBytesFuncs } from \"@liquid-js/qr-code-styling/kanji\";` to add Kanji support */\r\n stringToBytesFuncs?: { [encoding: string]: (s: string) => number[] }\r\n}\r\n\r\nexport const defaultOptions: Options = {\r\n document: undefined as never,\r\n shape: ShapeType.square,\r\n width: undefined as never,\r\n height: undefined as never,\r\n data: '',\r\n qrOptions: {\r\n typeNumber: TypeNumber[0],\r\n mode: undefined,\r\n errorCorrectionLevel: ErrorCorrectionLevel.Q\r\n },\r\n imageOptions: {\r\n mode: ImageMode.center,\r\n imageSize: 0.4,\r\n crossOrigin: undefined,\r\n margin: 0,\r\n fill: {\r\n color: 'rgba(255,255,255,1)'\r\n }\r\n },\r\n dotsOptions: {\r\n type: DotType.square,\r\n color: '#000',\r\n size: 10\r\n }\r\n}\r\n\r\nexport function sanitizeOptions(options: Options): Options {\r\n const newOptions = { ...options }\r\n\r\n newOptions.imageOptions = {\r\n ...newOptions.imageOptions,\r\n imageSize: Math.min(1, Number(newOptions.imageOptions.imageSize)) || 1,\r\n margin: Number(newOptions.imageOptions.margin),\r\n fill: {\r\n ...newOptions.imageOptions.fill\r\n }\r\n }\r\n\r\n if (newOptions.imageOptions.mode == ImageMode.overlay) newOptions.imageOptions.margin = 0\r\n if (newOptions.imageOptions.fill.gradient) {\r\n newOptions.imageOptions.fill.gradient = sanitizeGradient(newOptions.imageOptions.fill.gradient)\r\n }\r\n\r\n newOptions.dotsOptions = {\r\n ...newOptions.dotsOptions\r\n }\r\n if (newOptions.dotsOptions.gradient) {\r\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient)\r\n }\r\n // Ensure integer dot size\r\n newOptions.dotsOptions.size = Math.round(Math.max(0, newOptions.dotsOptions.size) || 10)\r\n\r\n if (newOptions.cornersSquareOptions) {\r\n newOptions.cornersSquareOptions = {\r\n ...newOptions.cornersSquareOptions\r\n }\r\n if (newOptions.cornersSquareOptions.gradient) {\r\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient)\r\n }\r\n }\r\n\r\n if (newOptions.cornersDotOptions) {\r\n newOptions.cornersDotOptions = {\r\n ...newOptions.cornersDotOptions\r\n }\r\n if (newOptions.cornersDotOptions.gradient) {\r\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient)\r\n }\r\n }\r\n\r\n if (newOptions.backgroundOptions) {\r\n newOptions.backgroundOptions = {\r\n ...newOptions.backgroundOptions\r\n }\r\n if (newOptions.backgroundOptions.gradient) {\r\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient)\r\n }\r\n }\r\n\r\n if (!newOptions.document) newOptions.document = document\r\n\r\n return newOptions\r\n}\r\n","import { ErrorCorrectionLevel, Mode } from '@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js'\r\n\r\nexport const ErrorCorrectionPercents = {\r\n [ErrorCorrectionLevel.L]: 0.07,\r\n [ErrorCorrectionLevel.M]: 0.15,\r\n [ErrorCorrectionLevel.Q]: 0.25,\r\n [ErrorCorrectionLevel.H]: 0.3\r\n}\r\n\r\nexport function getMode(data: string): Mode {\r\n switch (true) {\r\n case /^[0-9]*$/.test(data):\r\n return Mode.numeric\r\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\r\n return Mode.alphanumeric\r\n\r\n case /[^\\u0000-\\u00ff]/.test(data):\r\n return Mode.unicode\r\n default:\r\n return Mode.byte\r\n }\r\n}\r\n","const rx = /\\.?0+$/\r\n\r\nexport function numToAttr(value: number) {\r\n return value.toFixed(7).replace(rx, '')\r\n}\r\n\r\nexport function svgPath(strings: TemplateStringsArray, ...values: unknown[]) {\r\n return strings\r\n .reduce((t, v, i) => {\r\n let p: unknown = ''\r\n if (i) p = values[i - 1]\r\n if (typeof p == 'number') p = numToAttr(p)\r\n return `${t}${p}${v}`\r\n }, '')\r\n .trim()\r\n .replace(/[\\s\\n\\r]+/gim, ' ')\r\n}\r\n","import { BasicFigureDrawArgs, DrawArgs, RotateFigureArgs } from '../types/helper.js'\r\nimport { CornerDotType } from '../utils/options.js'\r\nimport { numToAttr, svgPath } from '../utils/svg.js'\r\n\r\nexport class QRCornerDot {\r\n private _element?: SVGElement\r\n\r\n get element() {\r\n return this._element\r\n }\r\n\r\n constructor(\r\n private readonly type: `${CornerDotType}`,\r\n private readonly document: Document\r\n ) {}\r\n\r\n draw(args: DrawArgs): void {\r\n const type = this.type\r\n let drawFunction\r\n\r\n switch (type) {\r\n case CornerDotType.square:\r\n drawFunction = this.drawSquare\r\n break\r\n case CornerDotType.heart:\r\n drawFunction = this.drawHeart\r\n break\r\n case CornerDotType.extraRounded:\r\n drawFunction = this.drawRounded\r\n break\r\n case CornerDotType.classy:\r\n drawFunction = this.drawClassy\r\n break\r\n case CornerDotType.inpoint:\r\n drawFunction = this.drawInpoint\r\n break\r\n case CornerDotType.outpoint:\r\n drawFunction = this.drawOutpoint\r\n break\r\n case CornerDotType.dot:\r\n default:\r\n drawFunction = this.drawDot\r\n }\r\n\r\n drawFunction.call(this, args)\r\n }\r\n\r\n private rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\r\n const cx = x + size / 2\r\n const cy = y + size / 2\r\n\r\n draw()\r\n this._element?.setAttribute('transform', `rotate(${numToAttr((180 * rotation) / Math.PI)},${cx},${cy})`)\r\n }\r\n\r\n private basicDot(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'circle')\r\n this._element.setAttribute('cx', numToAttr(x + size / 2))\r\n this._element.setAttribute('cy', numToAttr(y + size / 2))\r\n this._element.setAttribute('r', numToAttr(size / 2))\r\n }\r\n })\r\n }\r\n\r\n private basicSquare(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'rect')\r\n this._element.setAttribute('x', numToAttr(x))\r\n this._element.setAttribute('y', numToAttr(y))\r\n this._element.setAttribute('width', numToAttr(size))\r\n this._element.setAttribute('height', numToAttr(size))\r\n }\r\n })\r\n }\r\n\r\n private basicHeart(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n const path = [\r\n 'M',\r\n 1,\r\n 0.3262506,\r\n 'c',\r\n 0,\r\n 0.0383376,\r\n -0.0064626,\r\n 0.0758377,\r\n -0.0193751,\r\n 0.1125001,\r\n 's',\r\n -0.0356247,\r\n 0.076875,\r\n -0.0681248,\r\n 0.1206252,\r\n 'c',\r\n -0.0325,\r\n 0.0437499,\r\n -0.0762503,\r\n 0.0931247,\r\n -0.1312501,\r\n 0.1481249,\r\n 'C',\r\n 0.7262502,\r\n 0.7625008,\r\n 0.6566626,\r\n 0.8279132,\r\n 0.5724999,\r\n 0.9037505,\r\n 'L',\r\n 0.5,\r\n 0.9687506,\r\n 'L',\r\n 0.4275001,\r\n 0.9037505,\r\n 'C',\r\n 0.3433374,\r\n 0.8279132,\r\n 0.2737499,\r\n 0.7625005,\r\n 0.21875,\r\n 0.7075007,\r\n 'C',\r\n 0.1637501,\r\n 0.6525008,\r\n 0.1199999,\r\n 0.6031258,\r\n 0.0874999,\r\n 0.5593758,\r\n 'S',\r\n 0.0322876,\r\n 0.4754133,\r\n 0.0193751,\r\n 0.4387506,\r\n 'S',\r\n 0,\r\n 0.3645881,\r\n 0,\r\n 0.3262506,\r\n 'c',\r\n 0,\r\n -0.0783374,\r\n 0.0262499,\r\n -0.1437498,\r\n 0.07875,\r\n -0.1962499,\r\n 's',\r\n 0.1179124,\r\n -0.07875,\r\n 0.1962499,\r\n -0.07875,\r\n 'c',\r\n 0.0433376,\r\n 0,\r\n 0.0845875,\r\n 0.0091625,\r\n 0.12375,\r\n 0.0274999,\r\n 'S',\r\n 0.4716623,\r\n 0.1229131,\r\n 0.5,\r\n 0.1562506,\r\n 'c',\r\n 0.0283374,\r\n -0.0333375,\r\n 0.0620874,\r\n -0.0591625,\r\n 0.1012502,\r\n -0.0775,\r\n 'c',\r\n 0.0391627,\r\n -0.0183375,\r\n 0.0804126,\r\n -0.0274999,\r\n 0.12375,\r\n -0.0274999,\r\n 'c',\r\n 0.0783374,\r\n 0,\r\n 0.1437497,\r\n 0.0262499,\r\n 0.1962501,\r\n 0.07875,\r\n 'S',\r\n 1,\r\n 0.2479131,\r\n 1,\r\n 0.3262506,\r\n 'z'\r\n ]\r\n let move = false\r\n let i = 0\r\n this._element.setAttribute(\r\n 'd',\r\n path\r\n .map((v) => {\r\n if (typeof v == 'string') {\r\n i = 0\r\n move = v.toUpperCase() == v\r\n return v\r\n }\r\n i++\r\n v = v * size\r\n if (move) {\r\n v += i % 2 == 1 ? x : y\r\n }\r\n return numToAttr(v)\r\n })\r\n .join(' ')\r\n )\r\n }\r\n\r\n private basicRounded(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'rect')\r\n this._element.setAttribute('x', numToAttr(x))\r\n this._element.setAttribute('y', numToAttr(y))\r\n this._element.setAttribute('width', numToAttr(size))\r\n this._element.setAttribute('height', numToAttr(size))\r\n this._element.setAttribute('rx', numToAttr(size / 4))\r\n this._element.setAttribute('ry', numToAttr(size / 4))\r\n }\r\n })\r\n }\r\n\r\n private basicClassy(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n const dotSize = size / 7\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute('clip-rule', 'evenodd')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y + 2.5 * dotSize}\r\n v ${2 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}\r\n h ${4.5 * dotSize}\r\n v ${-4.5 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}\r\n h ${-2 * dotSize}\r\n H ${x}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n private basicInpoint(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n const dotSize = size\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute('clip-rule', 'evenodd')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y + dotSize / 2}\r\n v ${dotSize / 4}\r\n a ${dotSize / 4}, ${dotSize / 4} 0 0 0 ${dotSize / 4}, ${dotSize / 4}\r\n h ${(dotSize / 4) * 3}\r\n v ${(-dotSize / 4) * 3}\r\n a ${dotSize / 4}, ${dotSize / 4} 0 0 0 ${-dotSize / 4}, ${-dotSize / 4}\r\n h ${-dotSize / 2}\r\n a ${dotSize / 4}, ${dotSize / 4} 0 0 0 ${-dotSize / 4}, ${dotSize / 4}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n private drawDot({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicDot({ x, y, size, rotation })\r\n }\r\n\r\n private drawSquare({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicSquare({ x, y, size, rotation })\r\n }\r\n\r\n private drawHeart({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicHeart({ x, y, size, rotation })\r\n }\r\n\r\n private drawRounded({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicRounded({ x, y, size, rotation })\r\n }\r\n\r\n private drawClassy({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicClassy({ x, y, size, rotation })\r\n }\r\n\r\n private drawInpoint({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicInpoint({ x, y, size, rotation })\r\n }\r\n\r\n private drawOutpoint({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicInpoint({ x, y, size, rotation: (rotation || 0) + Math.PI })\r\n }\r\n}\r\n","import { BasicFigureDrawArgs, DrawArgs, RotateFigureArgs } from '../types/helper.js'\r\nimport { CornerSquareType } from '../utils/options.js'\r\nimport { numToAttr, svgPath } from '../utils/svg.js'\r\n\r\nexport class QRCornerSquare {\r\n private _element?: SVGElement\r\n private _fill?: SVGElement\r\n\r\n get element() {\r\n return this._element\r\n }\r\n\r\n get fill() {\r\n return this._fill\r\n }\r\n\r\n constructor(\r\n private readonly type: `${CornerSquareType}`,\r\n private readonly document: Document\r\n ) {}\r\n\r\n draw(args: DrawArgs): void {\r\n const type = this.type\r\n let drawFunction\r\n\r\n switch (type) {\r\n case CornerSquareType.square:\r\n drawFunction = this.drawSquare\r\n break\r\n case CornerSquareType.extraRounded:\r\n drawFunction = this.drawExtraRounded\r\n break\r\n case CornerSquareType.classy:\r\n drawFunction = this.drawClassy\r\n break\r\n case CornerSquareType.outpoint:\r\n drawFunction = this.drawOutpoint\r\n break\r\n case CornerSquareType.inpoint:\r\n drawFunction = this.drawInpoint\r\n break\r\n case CornerSquareType.dot:\r\n default:\r\n drawFunction = this.drawDot\r\n }\r\n\r\n drawFunction.call(this, args)\r\n }\r\n\r\n private rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\r\n const cx = x + size / 2\r\n const cy = y + size / 2\r\n\r\n draw()\r\n this._element?.setAttribute('transform', `rotate(${numToAttr((180 * rotation) / Math.PI)},${cx},${cy})`)\r\n this._fill?.setAttribute('transform', `rotate(${numToAttr((180 * rotation) / Math.PI)},${cx},${cy})`)\r\n }\r\n\r\n private basicDot(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n const dotSize = size / 7\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute('clip-rule', 'evenodd')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x + size / 2} ${y}\r\n a ${size / 2} ${size / 2} 0 1 0 0.1 0\r\n z\r\n m 0 ${dotSize}\r\n a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0\r\n Z`\r\n )\r\n this._fill = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._fill.setAttribute('clip-rule', 'evenodd')\r\n this._fill.setAttribute(\r\n 'd',\r\n svgPath`M ${x + size / 2} ${y - dotSize}\r\n a ${size / 2 + dotSize} ${size / 2 + dotSize} 0 1 0 0.1 0\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n private basicSquare(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n const dotSize = size / 7\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute('clip-rule', 'evenodd')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y}\r\n v ${size}\r\n h ${size}\r\n v ${-size}\r\n z\r\n M ${x + dotSize} ${y + dotSize}\r\n h ${size - 2 * dotSize}\r\n v ${size - 2 * dotSize}\r\n h ${-size + 2 * dotSize}\r\n z`\r\n )\r\n this._fill = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._fill.setAttribute('clip-rule', 'evenodd')\r\n this._fill.setAttribute(\r\n 'd',\r\n svgPath`\r\n M ${x - dotSize} ${y - dotSize}\r\n h ${size + 2 * dotSize}\r\n v ${size + 2 * dotSize}\r\n h ${-size - 2 * dotSize}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n private basicExtraRounded(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n const dotSize = size / 7\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute('clip-rule', 'evenodd')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y + 2.5 * dotSize}\r\n v ${2 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}\r\n h ${2 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}\r\n v ${-2 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}\r\n h ${-2 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}\r\n z\r\n M ${x + 2.5 * dotSize} ${y + dotSize}\r\n h ${2 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}\r\n v ${2 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}\r\n h ${-2 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}\r\n v ${-2 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}\r\n z`\r\n )\r\n this._fill = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._fill.setAttribute('clip-rule', 'evenodd')\r\n this._fill.setAttribute(\r\n 'd',\r\n svgPath`\r\n M ${x - dotSize} ${y + 2.5 * dotSize}\r\n v ${2 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 0, ${dotSize * 3.5} ${dotSize * 3.5}\r\n h ${2 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 0, ${dotSize * 3.5} ${-dotSize * 3.5}\r\n v ${-2 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 0, ${-dotSize * 3.5} ${-dotSize * 3.5}\r\n h ${-2 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 0, ${-dotSize * 3.5} ${dotSize * 3.5}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n private basicClassy(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n const dotSize = size / 7\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute('clip-rule', 'evenodd')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y + 2.5 * dotSize}\r\n v ${2 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}\r\n h ${4.5 * dotSize}\r\n v ${-4.5 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}\r\n h ${-2 * dotSize}\r\n H ${x}\r\n z\r\n M ${x + 2.5 * dotSize} ${y + dotSize}\r\n h ${2 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}\r\n v ${3.5 * dotSize}\r\n h ${-3.5 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}\r\n v ${-3.5 * dotSize}\r\n z`\r\n )\r\n this._fill = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._fill.setAttribute('clip-rule', 'evenodd')\r\n this._fill.setAttribute(\r\n 'd',\r\n svgPath`\r\n M ${x + 0.5 * dotSize} ${y - dotSize}\r\n h ${4 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${dotSize * 3.5} ${dotSize * 3.5}\r\n v ${5.5 * dotSize}\r\n h ${-5.5 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${-dotSize * 3.5} ${-dotSize * 3.5}\r\n v ${-5.5 * dotSize}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n private basicInpoint(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n const dotSize = size / 7\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute('clip-rule', 'evenodd')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y + 2.5 * dotSize}\r\n v ${2 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}\r\n h ${4.5 * dotSize}\r\n v ${-4.5 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}\r\n h ${-2 * dotSize}\r\n a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}\r\n z\r\n M ${x + 2.5 * dotSize} ${y + dotSize}\r\n h ${2 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}\r\n v ${3.5 * dotSize}\r\n h ${-3.5 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}\r\n v ${-2 * dotSize}\r\n a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}\r\n z`\r\n )\r\n this._fill = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._fill.setAttribute('clip-rule', 'evenodd')\r\n this._fill.setAttribute(\r\n 'd',\r\n svgPath`\r\n M ${x + 0.5 * dotSize} ${y - dotSize}\r\n h ${4 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${dotSize * 3.5} ${dotSize * 3.5}\r\n v ${5.5 * dotSize}\r\n h ${-5.5 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${-dotSize * 3.5} ${-dotSize * 3.5}\r\n v ${-2 * dotSize}\r\n a ${3.5 * dotSize} ${3.5 * dotSize}, 0, 0, 1, ${dotSize * 3.5} ${-dotSize * 3.5}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n private drawDot({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicDot({ x, y, size, rotation })\r\n }\r\n\r\n private drawSquare({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicSquare({ x, y, size, rotation })\r\n }\r\n\r\n private drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicExtraRounded({ x, y, size, rotation })\r\n }\r\n\r\n private drawClassy({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicClassy({ x, y, size, rotation })\r\n }\r\n\r\n private drawInpoint({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicInpoint({ x, y, size, rotation })\r\n }\r\n\r\n private drawOutpoint({ x, y, size, rotation }: DrawArgs): void {\r\n this.basicInpoint({ x, y, size, rotation: (rotation || 0) + Math.PI })\r\n }\r\n}\r\n","import { BasicFigureDrawArgs, DrawArgs, RotateFigureArgs } from '../types/helper.js'\r\nimport { DotType } from '../utils/options.js'\r\nimport { numToAttr, svgPath } from '../utils/svg.js'\r\n\r\nexport class QRDot {\r\n private _element?: SVGElement\r\n\r\n get element() {\r\n return this._element\r\n }\r\n\r\n constructor(\r\n private readonly type: `${DotType}`,\r\n private readonly document: Document\r\n ) {}\r\n\r\n draw(args: DrawArgs): void {\r\n const type = this.type\r\n let drawFunction\r\n\r\n switch (type) {\r\n case DotType.dot:\r\n drawFunction = this.drawDot\r\n break\r\n case DotType.randomDot:\r\n drawFunction = this.drawRandomDot\r\n break\r\n case DotType.classy:\r\n drawFunction = this.drawClassy\r\n break\r\n case DotType.classyRounded:\r\n drawFunction = this.drawClassyRounded\r\n break\r\n case DotType.rounded:\r\n drawFunction = this.drawRounded\r\n break\r\n case DotType.verticalLine:\r\n drawFunction = this.drawVerticalLine\r\n break\r\n case DotType.horizontalLine:\r\n drawFunction = this.drawHorizontalLine\r\n break\r\n case DotType.extraRounded:\r\n drawFunction = this.drawExtraRounded\r\n break\r\n case DotType.diamond:\r\n drawFunction = this.drawDiamond\r\n break\r\n case DotType.smallSquare:\r\n drawFunction = this.drawSmallSquare\r\n break\r\n case DotType.tinySquare:\r\n drawFunction = this.drawTinySquare\r\n break\r\n case DotType.square:\r\n default:\r\n drawFunction = this.drawSquare\r\n }\r\n\r\n drawFunction.call(this, args)\r\n }\r\n\r\n private rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\r\n const cx = x + size / 2\r\n const cy = y + size / 2\r\n\r\n draw()\r\n this._element?.setAttribute('transform', `rotate(${numToAttr((180 * rotation) / Math.PI)},${cx},${cy})`)\r\n }\r\n\r\n private basicDot(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'circle')\r\n this._element.setAttribute('cx', numToAttr(x + size / 2))\r\n this._element.setAttribute('cy', numToAttr(y + size / 2))\r\n this._element.setAttribute('r', numToAttr(size / 2))\r\n }\r\n })\r\n }\r\n\r\n private basicSquare(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'rect')\r\n this._element.setAttribute('x', numToAttr(x))\r\n this._element.setAttribute('y', numToAttr(y))\r\n this._element.setAttribute('width', numToAttr(size))\r\n this._element.setAttribute('height', numToAttr(size))\r\n }\r\n })\r\n }\r\n\r\n //if rotation === 0 - right side is rounded\r\n private basicSideRounded(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y}\r\n v ${size}\r\n h ${size / 2}\r\n a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n //if rotation === 0 - top right corner is rounded\r\n private basicCornerRounded(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y}\r\n v ${size}\r\n h ${size}\r\n v ${-size / 2}\r\n a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n //if rotation === 0 - top right corner is rounded\r\n private basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y}\r\n v ${size}\r\n h ${size}\r\n a ${size} ${size}, 0, 0, 0, ${-size} ${-size}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n //if rotation === 0 - left bottom and right top corners are rounded\r\n private basicCornersRounded(args: BasicFigureDrawArgs): void {\r\n const { size, x, y } = args\r\n\r\n this.rotateFigure({\r\n ...args,\r\n draw: () => {\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'path')\r\n this._element.setAttribute(\r\n 'd',\r\n svgPath`M ${x} ${y}\r\n v ${size / 2}\r\n a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}\r\n h ${size / 2}\r\n v ${-size / 2}\r\n a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}\r\n z`\r\n )\r\n }\r\n })\r\n }\r\n\r\n private drawDot({ x, y, size }: DrawArgs): void {\r\n this.basicDot({ x, y, size, rotation: 0 })\r\n }\r\n\r\n private drawRandomDot({ x, y, size }: DrawArgs): void {\r\n const randomFactor = Math.random() * (1 - 0.75) + 0.75\r\n this.basicDot({ x, y, size: size * randomFactor, rotation: 0 })\r\n }\r\n\r\n private drawSquare({ x, y, size }: DrawArgs): void {\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n }\r\n\r\n private drawSmallSquare({ x, y, size }: DrawArgs): void {\r\n const originalSize = size\r\n\r\n size = originalSize * 0.7\r\n x = x + originalSize * 0.15\r\n y = y + originalSize * 0.15\r\n\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n }\r\n\r\n private drawTinySquare({ x, y, size }: DrawArgs): void {\r\n const originalSize = size\r\n\r\n size = originalSize * 0.3\r\n x = x + originalSize * 0.35\r\n y = y + originalSize * 0.35\r\n\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n }\r\n\r\n private drawDiamond({ x, y, size }: DrawArgs): void {\r\n this.basicSquare({ x, y, size, rotation: Math.PI / 4 })\r\n }\r\n\r\n private drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\r\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0\r\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0\r\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0\r\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0\r\n\r\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor\r\n\r\n if (neighborsCount === 0) {\r\n this.basicDot({ x, y, size, rotation: 0 })\r\n return\r\n }\r\n\r\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n return\r\n }\r\n\r\n if (neighborsCount === 2) {\r\n let rotation = 0\r\n\r\n if (leftNeighbor && topNeighbor) {\r\n rotation = Math.PI / 2\r\n } else if (topNeighbor && rightNeighbor) {\r\n rotation = Math.PI\r\n } else if (rightNeighbor && bottomNeighbor) {\r\n rotation = -Math.PI / 2\r\n }\r\n\r\n this.basicCornerRounded({ x, y, size, rotation })\r\n return\r\n }\r\n\r\n if (neighborsCount === 1) {\r\n let rotation = 0\r\n\r\n if (topNeighbor) {\r\n rotation = Math.PI / 2\r\n } else if (rightNeighbor) {\r\n rotation = Math.PI\r\n } else if (bottomNeighbor) {\r\n rotation = -Math.PI / 2\r\n }\r\n\r\n this.basicSideRounded({ x, y, size, rotation })\r\n return\r\n }\r\n }\r\n\r\n private drawVerticalLine({ x, y, size, getNeighbor }: DrawArgs): void {\r\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0\r\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0\r\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0\r\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0\r\n\r\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor\r\n\r\n if (\r\n neighborsCount === 0 ||\r\n (leftNeighbor && !(topNeighbor || bottomNeighbor)) ||\r\n (rightNeighbor && !(topNeighbor || bottomNeighbor))\r\n ) {\r\n this.basicDot({ x, y, size, rotation: 0 })\r\n return\r\n }\r\n\r\n if (topNeighbor && bottomNeighbor) {\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n return\r\n }\r\n\r\n if (topNeighbor && !bottomNeighbor) {\r\n const rotation = Math.PI / 2\r\n this.basicSideRounded({ x, y, size, rotation })\r\n return\r\n }\r\n\r\n if (bottomNeighbor && !topNeighbor) {\r\n const rotation = -Math.PI / 2\r\n this.basicSideRounded({ x, y, size, rotation })\r\n return\r\n }\r\n }\r\n\r\n private drawHorizontalLine({ x, y, size, getNeighbor }: DrawArgs): void {\r\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0\r\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0\r\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0\r\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0\r\n\r\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor\r\n\r\n if (\r\n neighborsCount === 0 ||\r\n (topNeighbor && !(leftNeighbor || rightNeighbor)) ||\r\n (bottomNeighbor && !(leftNeighbor || rightNeighbor))\r\n ) {\r\n this.basicDot({ x, y, size, rotation: 0 })\r\n return\r\n }\r\n\r\n if (leftNeighbor && rightNeighbor) {\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n return\r\n }\r\n\r\n if (leftNeighbor && !rightNeighbor) {\r\n const rotation = 0\r\n this.basicSideRounded({ x, y, size, rotation })\r\n return\r\n }\r\n\r\n if (rightNeighbor && !leftNeighbor) {\r\n const rotation = Math.PI\r\n this.basicSideRounded({ x, y, size, rotation })\r\n return\r\n }\r\n }\r\n\r\n private drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\r\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0\r\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0\r\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0\r\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0\r\n\r\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor\r\n\r\n if (neighborsCount === 0) {\r\n this.basicDot({ x, y, size, rotation: 0 })\r\n return\r\n }\r\n\r\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n return\r\n }\r\n\r\n if (neighborsCount === 2) {\r\n let rotation = 0\r\n\r\n if (leftNeighbor && topNeighbor) {\r\n rotation = Math.PI / 2\r\n } else if (topNeighbor && rightNeighbor) {\r\n rotation = Math.PI\r\n } else if (rightNeighbor && bottomNeighbor) {\r\n rotation = -Math.PI / 2\r\n }\r\n\r\n this.basicCornerExtraRounded({ x, y, size, rotation })\r\n return\r\n }\r\n\r\n if (neighborsCount === 1) {\r\n let rotation = 0\r\n\r\n if (topNeighbor) {\r\n rotation = Math.PI / 2\r\n } else if (rightNeighbor) {\r\n rotation = Math.PI\r\n } else if (bottomNeighbor) {\r\n rotation = -Math.PI / 2\r\n }\r\n\r\n this.basicSideRounded({ x, y, size, rotation })\r\n return\r\n }\r\n }\r\n\r\n private drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\r\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0\r\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0\r\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0\r\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0\r\n\r\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor\r\n\r\n if (neighborsCount === 0) {\r\n this.basicCornersRounded({ x, y, size, rotation: Math.PI / 2 })\r\n return\r\n }\r\n\r\n if (!leftNeighbor && !topNeighbor) {\r\n this.basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 })\r\n return\r\n }\r\n\r\n if (!rightNeighbor && !bottomNeighbor) {\r\n this.basicCornerRounded({ x, y, size, rotation: Math.PI / 2 })\r\n return\r\n }\r\n\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n }\r\n\r\n private drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\r\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0\r\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0\r\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0\r\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0\r\n\r\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor\r\n\r\n if (neighborsCount === 0) {\r\n this.basicCornersRounded({ x, y, size, rotation: Math.PI / 2 })\r\n return\r\n }\r\n\r\n if (!leftNeighbor && !topNeighbor) {\r\n this.basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 })\r\n return\r\n }\r\n\r\n if (!rightNeighbor && !bottomNeighbor) {\r\n this.basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 })\r\n return\r\n }\r\n\r\n this.basicSquare({ x, y, size, rotation: 0 })\r\n }\r\n}\r\n","export const browserImageTools = {\r\n toDataURL: (url: string | Buffer | Blob): Promise<string> => {\r\n if (typeof url == 'string' && url.startsWith('data:')) return Promise.resolve(url)\r\n return new Promise((resolve, reject) => {\r\n if (typeof url == 'string') {\r\n const xhr = new XMLHttpRequest()\r\n xhr.onload = () => {\r\n const reader = new FileReader()\r\n reader.onloadend = () => {\r\n resolve(reader.result as string)\r\n }\r\n reader.readAsDataURL(xhr.response)\r\n }\r\n xhr.onerror = xhr.onabort = xhr.ontimeout = reject\r\n xhr.open('GET', url, true)\r\n xhr.responseType = 'blob'\r\n xhr.send()\r\n } else {\r\n const reader = new FileReader()\r\n reader.onloadend = () => {\r\n resolve(reader.result as string)\r\n }\r\n reader.readAsDataURL(url as Blob)\r\n }\r\n })\r\n },\r\n getSize: (src: string | Blob | Buffer, crossOrigin?: string): Promise<{ width: number, height: number }> => new Promise((resolve, reject) => {\r\n const image = new Image()\r\n\r\n if (crossOrigin === 'string') {\r\n image.crossOrigin = crossOrigin\r\n }\r\n\r\n image.onload = (): void => {\r\n resolve({ width: image.width, height: image.height })\r\n }\r\n image.onerror = image.onabort = reject\r\n\r\n if (typeof src == 'string') image.src = src\r\n else\r\n browserImageTools\r\n .toDataURL(src)\r\n .then((url) => (image.src = url))\r\n .catch(reject)\r\n })\r\n}\r\n","export function parseColor(cstr: string) {\r\n let m: RegExpExecArray | null\r\n let parts: string[] | number[] = []\r\n let alpha = 1\r\n\r\n cstr = cstr.toLowerCase()\r\n\r\n if (cstr[0] === '#') {\r\n const base = cstr.slice(1)\r\n const size = base.length\r\n const isShort = size <= 4\r\n\r\n if (isShort) {\r\n parts = [parseInt(base[0] + base[0], 16), parseInt(base[1] + base[1], 16), parseInt(base[2] + base[2], 16)]\r\n if (size === 4) {\r\n alpha = parseInt(base[3] + base[3], 16) / 255\r\n }\r\n } else {\r\n parts = [parseInt(base[0] + base[1], 16), parseInt(base[2] + base[3], 16), parseInt(base[4] + base[5], 16)]\r\n if (size === 8) {\r\n alpha = parseInt(base[6] + base[7], 16) / 255\r\n }\r\n }\r\n\r\n if (!parts[0]) parts[0] = 0\r\n if (!parts[1]) parts[1] = 0\r\n if (!parts[2]) parts[2] = 0\r\n } else if ((m = /^((?:rgba?))\\s*\\(([^)]*)\\)/.exec(cstr))) {\r\n const dims = 3\r\n parts = m[2].trim().split(/\\s*[,/]\\s*|\\s+/)\r\n\r\n parts = parts.map((x, i) => {\r\n if (x[x.length - 1] === '%') {\r\n const v = parseFloat(x) / 100\r\n if (i === 3) return v\r\n return v * 255\r\n }\r\n\r\n if (x === 'none') return 0\r\n return parseFloat(x)\r\n })\r\n\r\n alpha = parts.length > dims ? parts.pop()! : 1\r\n } else {\r\n return {\r\n value: cstr,\r\n alpha\r\n }\r\n }\r\n\r\n const value = '#' + parts.map((v) => Math.max(0, Math.min(255, v)).toString(16).padStart(2, '0')).join('')\r\n return {\r\n value,\r\n alpha: Math.max(0, Math.min(1, alpha))\r\n }\r\n}\r\n","import { QRCodeMinimal } from '@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js'\r\nimport { QRUtil } from '@liquid-js/qrcode-generator/lib/qrcode/QRUtil.js'\r\nimport { QRCornerDot } from '../figures/corner-dot.js'\r\nimport { QRCornerSquare } from '../figures/corner-square.js'\r\nimport { QRDot } from '../figures/dot.js'\r\nimport { browserImageTools } from '../tools/browser-image-tools.js'\r\nimport { parseColor } from '../utils/color.js'\r\nimport { Gradient, GradientType } from '../utils/gradient.js'\r\nimport { calculateImageSize } from '../utils/image.js'\r\nimport { DotType, ImageMode, Options, ShapeType } from '../utils/options.js'\r\nimport { numToAttr } from '../utils/svg.js'\r\n\r\nconst squareMask = [\r\n [1, 1, 1, 1, 1, 1, 1],\r\n [1, 0, 0, 0, 0, 0, 1],\r\n [1, 0, 0, 0, 0, 0, 1],\r\n [1, 0, 0, 0, 0, 0, 1],\r\n [1, 0, 0, 0, 0, 0, 1],\r\n [1, 0, 0, 0, 0, 0, 1],\r\n [1, 1, 1, 1, 1, 1, 1]\r\n]\r\n\r\nconst dotMask = [\r\n [0, 0, 0, 0, 0, 0, 0],\r\n [0, 0, 0, 0, 0, 0, 0],\r\n [0, 0, 1, 1, 1, 0, 0],\r\n [0, 0, 1, 1, 1, 0, 0],\r\n [0, 0, 1, 1, 1, 0, 0],\r\n [0, 0, 0, 0, 0, 0, 0],\r\n [0, 0, 0, 0, 0, 0, 0]\r\n]\r\n\r\nexport class QRSVG {\r\n private _element: SVGElement\r\n\r\n get element() {\r\n return this._element\r\n }\r\n\r\n private defs: SVGElement\r\n\r\n private backgroundMask?: SVGElement\r\n private backgroundMaskGroup?: SVGElement\r\n\r\n private dotsMask?: SVGElement\r\n private dotsMaskGroup?: SVGElement\r\n\r\n private lightDotsMask?: SVGElement\r\n private lightDotsMaskGroup?: SVGElement\r\n\r\n private qr?: QRCodeMinimal\r\n private document: Document\r\n private imageTools: typeof browserImageTools\r\n\r\n constructor(\r\n private options: Pick<\r\n Options,\r\n | 'width'\r\n | 'height'\r\n | 'document'\r\n | 'imageTools'\r\n | 'image'\r\n | 'imageOptions'\r\n | 'dotsOptions'\r\n | 'cornersDotOptions'\r\n | 'cornersSquareOptions'\r\n | 'backgroundOptions'\r\n | 'shape'\r\n > & { errorCorrectionPercent: number }\r\n ) {\r\n this.document = options.document\r\n this._element = this.document.createElementNS('http://www.w3.org/2000/svg', 'svg')\r\n const width = numToAttr(options.width)\r\n const height = numToAttr(options.height)\r\n this._element.setAttribute('width', width)\r\n this._element.setAttribute('height', height)\r\n this._element.setAttribute('viewBox', `0 0 ${width} ${height}`)\r\n this.defs = this.document.createElementNS('http://www.w3.org/2000/svg', 'defs')\r\n this._element.appendChild(this.defs)\r\n this.imageTools = options.imageTools || browserImageTools\r\n }\r\n\r\n get width(): number {\r\n return this.options.width\r\n }\r\n\r\n get height(): number {\r\n return this.options.height\r\n }\r\n\r\n async drawQR(qr: QRCodeMinimal): Promise<void> {\r\n const count = qr.getModuleCount()\r\n const typeNumber = parseInt(((count - 17) / 4).toFixed(0), 10)\r\n const dotSize = this.options.dotsOptions.size\r\n let drawImageSize = {\r\n hideXDots: 0,\r\n hideYDots: 0,\r\n width: 0,\r\n height: 0\r\n }\r\n\r\n this.qr = qr\r\n\r\n if (this.options.image) {\r\n //We need it to get image size\r\n const size = await this.imageTools.getSize(this.options.image, this.options.imageOptions.crossOrigin)\r\n const { imageOptions, errorCorrectionPercent } = this.options\r\n\r\n if (imageOptions.mode == ImageMode.background) {\r\n const margin = (this.options.backgroundOptions && this.options.backgroundOptions.margin) || 0\r\n const maxWidth = (this.options.width - 2 * margin * dotSize) * imageOptions.imageSize\r\n const maxHeight = (this.options.height - 2 * margin * dotSize) * imageOptions.imageSize\r\n let { width, height } = size\r\n\r\n height = (height / width) * maxWidth\r\n width = maxWidth\r\n\r\n if (height > maxHeight) {\r\n width = (width / height) * maxHeight\r\n height = maxHeight\r\n }\r\n\r\n drawImageSize = {\r\n hideXDots: 0,\r\n hideYDots: 0,\r\n width,\r\n height\r\n }\r\n } else {\r\n const coverLevel = imageOptions.imageSize * errorCorrectionPercent\r\n const alignment = QRUtil.getPatternPosition(typeNumber)\r\n const maxHiddenDots = Math.floor(\r\n coverLevel * (count * count - 3 * 8 * 8 - 2 * (count - 16) - alignment.length ** 2 * 25)\r\n )\r\n\r\n drawImageSize = calculateImageSize({\r\n originalWidth: size.width,\r\n originalHeight: size.height,\r\n maxHiddenDots,\r\n maxHiddenAxisDots: count - 14,\r\n dotSize,\r\n margin: imageOptions.margin\r\n })\r\n }\r\n }\r\n\r\n this.drawBackground()\r\n\r\n if (\r\n this.options.imageOptions.mode != ImageMode.overlay &&\r\n this.options.image &&\r\n drawImageSize.width > 0 &&\r\n drawImageSize.height > 0\r\n ) {\r\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize })\r\n }\r\n\r\n this.drawDots((i: number, j: number): boolean => {\r\n if (this.options.imageOptions.mode == ImageMode.center) {\r\n if (\r\n i >= (count - drawImageSize.hideXDots) / 2 &&\r\n i < (count + drawImageSize.hideXDots) / 2 &&\r\n j >= (count - drawImageSize.hideYDots) / 2 &&\r\n j < (count + drawImageSize.hideYDots) / 2\r\n ) {\r\n return false\r\n }\r\n }\r\n\r\n if ((i < 8 && j < 8) || (i >= count - 8 && j < 8) || (j >= count - 8 && i < 8)) return false\r\n\r\n return true\r\n })\r\n\r\n if (\r\n this.options.imageOptions.mode == ImageMode.overlay &&\r\n this.options.image &&\r\n drawImageSize.width > 0 &&\r\n drawImageSize.height > 0\r\n ) {\r\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize })\r\n }\r\n\r\n this.drawCorners()\r\n }\r\n\r\n drawBackground(): void {\r\n const options = this.options\r\n\r\n if (this._element && options.backgroundOptions) {\r\n const gradientOptions = options.backgroundOptions.gradient\r\n const color = options.backgroundOptions.color\r\n\r\n this.createColor({\r\n options: gradientOptions,\r\n color,\r\n additionalRotation: 0,\r\n x: 0,\r\n y: 0,\r\n height: options.height,\r\n width: options.width,\r\n name: 'background-color'\r\n })\r\n\r\n const size = Math.min(options.width, options.height)\r\n const element = this.document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n [this.backgroundMask, this.backgroundMaskGroup] = this.createMask('mask-background-color')\r\n this.defs.appendChild(this.backgroundMask)\r\n\r\n element.setAttribute('x', numToAttr((options.width - size) / 2))\r\n element.setAttribute('y', numToAttr((options.height - size) / 2))\r\n element.setAttribute('width', numToAttr(size))\r\n element.setAttribute('height', numToAttr(size))\r\n element.setAttribute('rx', numToAttr((size / 2) * (options.backgroundOptions.round || 0)))\r\n\r\n this.backgroundMaskGroup.appendChild(element)\r\n }\r\n }\r\n\r\n drawDots(filter?: (i: number, j: number) => boolean): void {\r\n if (!this.qr) {\r\n throw new Error('QR code is not defined')\r\n }\r\n\r\n const options = this.options\r\n const count = this.qr.getModuleCount()\r\n\r\n if (count > options.width || count > options.height) {\r\n throw new Error('The canvas is too small')\r\n }\r\n\r\n const dotSize = this.options.dotsOptions.size\r\n let minSize = Math.min(options.width, options.height)\r\n if (options.imageOptions.mode == ImageMode.background) minSize -= 2 * dotSize * (options.imageOptions.margin || 0)\r\n const xBeginning = Math.floor((options.width - count * dotSize) / 2)\r\n const yBeginning = Math.floor((options.height - count * dotSize) / 2)\r\n let dot = new QRDot(options.dotsOptions.type, this.document)\r\n const overlayDot = new QRDot(DotType.tinySquare, this.document)\r\n const markerDot = new QRDot(DotType.square, this.document);\r\n\r\n [this.dotsMask, this.dotsMaskGroup] = this.createMask('mask-dot-color')\r\n this.defs.appendChild(this.dotsMask)\r\n\r\n if (options.imageOptions.mode == ImageMode.background) {\r\n [this.lightDotsMask, this.lightDotsMaskGroup] = this.createMask('mask-light-dot-color')\r\n this.defs.appendChild(this.lightDotsMask)\r\n }\r\n\r\n let margin = 0\r\n let additionalDots = 0\r\n let fakeCount = count\r\n\r\n if (options.shape === ShapeType.circle) {\r\n margin = (this.options.backgroundOptions && this.options.backgroundOptions.margin) || 0\r\n additionalDots = Math.floor((minSize / dotSize - count - 2 * margin) / 2)\r\n fakeCount = count + additionalDots * 2\r\n } else if (options.imageOptions.mode == ImageMode.background) {\r\n additionalDots = 1\r\n fakeCount = count + additionalDots * 2\r\n }\r\n\r\n const xFakeBeginning = xBeginning - additionalDots * dotSize\r\n const yFakeBeginning = yBeginning - additionalDots * dotSize\r\n const colorX = xFakeBeginning\r\n const colorY = yFakeBeginning\r\n const colorCount = count + additionalDots * 2\r\n const fakeMatrix: Array<Array<boolean | undefined>> = new Array(fakeCount)\r\n const center = Math.floor(fakeCount / 2)\r\n\r\n for (let i = 0; i < fakeCount; i++) {\r\n fakeMatrix[i] = new Array(fakeCount)\r\n for (let j = 0; j < fakeCount; j++) {\r\n if (\r\n i > additionalDots - 1 &&\r\n i < fakeCount - additionalDots &&\r\n j > additionalDots - 1 &&\r\n j < fakeCount - additionalDots\r\n ) {\r\n const ii = i - additionalDots\r\n const jj = j - additionalDots\r\n if (filter && !filter(ii, jj)) fakeMatrix[i][j] = undefined\r\n else fakeMatrix[i][j] = !!this.qr.isDark(jj, ii)\r\n continue\r\n }\r\n\r\n if (\r\n options.shape === ShapeType.circle &&\r\n Math.sqrt((i - center) * (i - center) + (j - center) * (j - center)) > center\r\n ) {\r\n fakeMatrix[i][j] = undefined\r\n continue\r\n }\r\n\r\n if (\r\n i == additionalDots - 1 ||\r\n i == fakeCount - additionalDots ||\r\n j == additionalDots - 1 ||\r\n j == fakeCount - additionalDots\r\n ) {\r\n if (\r\n (j == additionalDots - 1 && (i < additionalDots + 8 || i > fakeCount - additionalDots - 9)) ||\r\n (j == fakeCount - additionalDots && i < additionalDots + 8) ||\r\n (i == additionalDots - 1 && (j < additionalDots + 8 || j > fakeCount - additionalDots - 9)) ||\r\n (i == fakeCount - additionalDots && j < additionalDots + 8)\r\n )\r\n fakeMatrix[i][j] = undefined\r\n else fakeMatrix[i][j] = false\r\n continue\r\n }\r\n\r\n // Get random dots from QR code to show it outside of QR code\r\n fakeMatrix[i][j] = this.qr.isDark(\r\n j - 2 * additionalDots < 0 ? j : j >= count ? j - 2 * additionalDots : j - additionalDots,\r\n i - 2 * additionalDots < 0 ? i : i >= count ? i - 2 * additionalDots : i - additionalDots\r\n )\r\n }\r\n }\r\n\r\n const typeNr = (count - 17) / 4\r\n const alignment = QRUtil.getPatternPosition(typeNr)\r\n\r\n for (let i = 0; i < fakeCount; i++) {\r\n const iAlign = alignment.find((v) => i - additionalDots > v - 3 && i - additionalDots < v + 3)\r\n for (let j = 0; j < fakeCount; j++) {\r\n const jAlign = alignment.find((v) => j - additionalDots > v - 3 && j - additionalDots < v + 3)\r\n if (fakeMatrix[i][j] == undefined) continue\r\n\r\n if (this.lightDotsMask) {\r\n dot =\r\n iAlign &&\r\n jAlign &&\r\n ((iAlign != alignment[0] && jAlign != alignment[0]) ||\r\n (jAlign != alignment[0] && jAlign != alignment[alignment.length - 1]) ||\r\n (iAlign != alignment[0] && iAlign != alignment[alignment.length - 1]))\r\n ? markerDot\r\n : overlayDot\r\n }\r\n\r\n if (!fakeMatrix[i][j]) {\r\n if (this.lightDotsMask) {\r\n dot.draw({\r\n x: xFakeBeginning + i * dotSize,\r\n y: yFakeBeginning + j * dotSize,\r\n size: dotSize,\r\n getNeighbor: (xOffset: number, yOffset: number): boolean => fakeMatrix[i + xOffset]?.[j + yOffset] === false\r\n })\r\n\r\n if (dot.element && this.lightDotsMaskGroup) {\r\n this.lightDotsMaskGroup.appendChild(dot.element)\r\n }\r\n }\r\n continue\r\n }\r\n\r\n dot.draw({\r\n x: xFakeBeginning + i * dotSize,\r\n y: yFakeBeginning + j * dotSize,\r\n size: dotSize,\r\n getNeighbor: (xOffset: number, yOffset: number): boolean => fakeMatrix[i + xOffset]?.[j + yOffset] === true\r\n })\r\n if (dot.element && this.dotsMaskGroup) {\r\n this.dotsMaskGroup.appendChild(dot.element)\r\n }\r\n }\r\n }\r\n\r\n if (this.lightDotsMask) {\r\n this.createColor({\r\n options: options.imageOptions.fill.gradient,\r\n color: options.imageOptions.fill.color,\r\n additionalRotation: 0,\r\n x: colorX,\r\n y: colorY,\r\n height: colorCount * dotSize,\r\n width: colorCount * dotSize,\r\n name: 'light-dot-color'\r\n })\r\n }\r\n\r\n this.createColor({\r\n options: options.dotsOptions?.gradient,\r\n color: options.dotsOptions.color,\r\n additionalRotation: 0,\r\n x: colorX,\r\n y: colorY,\r\n height: colorCount * dotSize,\r\n width: colorCount * dotSize,\r\n name: 'dot-color'\r\n })\r\n }\r\n\r\n drawCorners(): void {\r\n if (!this.qr) {\r\n throw new Error('QR code is not defined')\r\n }\r\n\r\n const element = this._element\r\n const options = this.options\r\n\r\n if (!element) {\r\n throw new Error('Element code is not defined')\r\n }\r\n\r\n const count = this.qr.getModuleCount()\r\n const dotSize = this.options.dotsOptions.size\r\n const cornersSquareSize = dotSize * 7\r\n const cornersDotSize = dotSize * 3\r\n const xBeginning = Math.floor((options.width - count * dotSize) / 2)\r\n const yBeginning = Math.floor((options.height - count * dotSize) / 2);\r\n\r\n [\r\n [0, 0, 0],\r\n [1, 0, Math.PI / 2],\r\n [0, 1, -Math.PI / 2]\r\n ].forEach(([column, row, rotation]) => {\r\n const x = xBeginning + column * dotSize * (count - 7)\r\n const y = yBeginning + row * dotSize * (count - 7)\r\n let cornersSquareMask = this.dotsMask\r\n let cornersSquareMaskGroup = this.dotsMaskGroup\r\n let cornersDotMask = this.dotsMask\r\n let cornersDotMaskGroup = this.dotsMaskGroup\r\n\r\n if (options.cornersSquareOptions?.gradient || options.cornersSquareOptions?.color) {\r\n [cornersSquareMask, cornersSquareMaskGroup] = this.createMask(`mask-corners-square-color-${column}-${row}`)\r\n this.defs.appendChild(cornersSquareMask)\r\n cornersDotMask = cornersSquareMask\r\n cornersDotMaskGroup = cornersSquareMaskGroup\r\n\r\n this.createColor({\r\n options: options.cornersSquareOptions?.gradient,\r\n color: options.cornersSquareOptions?.color,\r\n additionalRotation: rotation,\r\n x,\r\n y,\r\n height: cornersSquareSize,\r\n width: cornersSquareSize,\r\n name: `corners-square-color-${column}-${row}`\r\n })\r\n }\r\n\r\n if (options.cornersSquareOptions?.type) {\r\n const cornersSquare = new QRCornerSquare(options.cornersSquareOptions.type, this.document)\r\n\r\n cornersSquare.draw({\r\n x,\r\n y,\r\n size: cornersSquareSize,\r\n rotation\r\n })\r\n\r\n if (cornersSquare.element && cornersSquareMaskGroup) {\r\n cornersSquareMaskGroup.appendChild(cornersSquare.element)\r\n }\r\n\r\n if (cornersSquare.fill && this.lightDotsMaskGroup) {\r\n this.lightDotsMaskGroup.appendChild(cornersSquare.fill)\r\n }\r\n } else {\r\n const dot = new QRDot(options.dotsOptions.type, this.document)\r\n\r\n for (let i = 0; i < squareMask.length; i++) {\r\n for (let j = 0; j < squareMask[i].length; j++) {\r\n if (!squareMask[i]?.[j]) {\r\n if (this.lightDotsMask && !dotMask[i]?.[j]) {\r\n dot.draw({\r\n x: x + i * dotSize,\r\n y: y + j * dotSize,\r\n size: dotSize,\r\n getNeighbor: (xOffset: number, yOffset: number): boolean =>\r\n !squareMask[i + xOffset]?.[j + yOffset] && !dotMask[i + xOffset]?.[j + yOffset]\r\n })\r\n\r\n if (dot.element && this.lightDotsMaskGroup) {\r\n this.lightDotsMaskGroup.appendChild(dot.element)\r\n }\r\n }\r\n continue\r\n }\r\n\r\n dot.draw({\r\n x: x + i * dotSize,\r\n y: y + j * dotSize,\r\n size: dotSize,\r\n getNeighbor: (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\r\n })\r\n\r\n if (dot.element && cornersSquareMaskGroup) {\r\n cornersSquareMaskGroup.appendChild(dot.element)\r\n }\r\n }\r\n }\r\n\r\n if (this.lightDotsMask)\r\n for (let i = -1; i < 8; i++) {\r\n for (let j = -1; j < 8; j++) {\r\n if (i == -1 || i == 7 || j == -1 || j == 7) {\r\n dot.draw({\r\n x: x + i * dotSize,\r\n y: y + j * dotSize,\r\n size: dotSize,\r\n getNeighbor: (xOffset: number, yOffset: number): boolean => {\r\n const ii = i + xOffset\r\n const jj = j + yOffset\r\n return ii >= -1 && ii <= 7 && jj >= -1 && jj <= 7 && (ii == -1 || ii == 7 || jj == -1 || jj == 7)\r\n }\r\n })\r\n\r\n if (dot.element && this.lightDotsMaskGroup) {\r\n this.lightDotsMaskGroup.appendChild(dot.element)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (options.cornersDotOptions?.gradient || options.cornersDotOptions?.color) {\r\n [cornersDotMask, cornersDotMaskGroup] = this.createMask(`mask-corners-dot-color-${column}-${row}`)\r\n this.defs.appendChild(cornersDotMask)\r\n\r\n this.createColor({\r\n options: options.cornersDotOptions?.gradient,\r\n color: options.cornersDotOptions?.color,\r\n additionalRotation: rotation,\r\n x: x + dotSize * 2,\r\n y: y + dotSize * 2,\r\n height: cornersDotSize,\r\n width: cornersDotSize,\r\n name: `corners-dot-color-${column}-${row}`\r\n })\r\n }\r\n\r\n if (options.cornersDotOptions?.type) {\r\n const cornersDot = new QRCornerDot(options.cornersDotOptions.type, this.document)\r\n\r\n cornersDot.draw({\r\n x: x + dotSize * 2,\r\n y: y + dotSize * 2,\r\n size: cornersDotSize,\r\n rotation\r\n })\r\n\r\n if (cornersDot.element && cornersDotMaskGroup) {\r\n cornersDotMaskGroup.appendChild(cornersDot.element)\r\n }\r\n } else {\r\n const dot = new QRDot(options.dotsOptions.type, this.document)\r\n\r\n for (let i = 0; i < dotMask.length; i++) {\r\n for (let j = 0; j < dotMask[i].length; j++) {\r\n if (!dotMask[i]?.[j]) {\r\n continue\r\n }\r\n\r\n dot.draw({\r\n x: x + i * dotSize,\r\n y: y + j * dotSize,\r\n size: dotSize,\r\n getNeighbor: (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\r\n })\r\n\r\n if (dot.element && cornersDotMaskGroup) {\r\n cornersDotMaskGroup.appendChild(dot.element)\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n async drawImage({\r\n width,\r\n height,\r\n count,\r\n dotSize\r\n }: {\r\n width: number\r\n height: number\r\n count: number\r\n dotSize: number\r\n }): Promise<void> {\r\n const options = this.options\r\n const xBeginning = Math.floor((options.width - count * dotSize) / 2)\r\n const yBeginning = Math.floor((options.height - count * dotSize) / 2)\r\n let margin = options.imageOptions.margin * dotSize\r\n if (options.imageOptions.mode == ImageMode.background) margin = 0\r\n const dx = xBeginning + margin + (count * dotSize - width) / 2\r\n const dy = yBeginning + margin + (count * dotSize - height) / 2\r\n const dw = width - margin * 2\r\n const dh = height - margin * 2\r\n\r\n const imageUrl = await this.imageTools.toDataURL(options.image || '')\r\n let image: SVGElement = this.document.createElementNS('http://www.w3.org/2000/svg', 'image')\r\n image.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', imageUrl || '')\r\n\r\n if (imageUrl.startsWith('data:image/svg+xml;')) {\r\n let data = imageUrl.substring(19)\r\n const i = data.indexOf(',')\r\n const encoding = data.substring(0, i)\r\n data = data.substring(i + 1)\r\n\r\n switch (encoding) {\r\n case 'base64':\r\n data = typeof atob == 'function' ? atob(data) : Buffer.from(data, 'base64').toString('utf8')\r\n break\r\n default:\r\n data = ''\r\n break\r\n }\r\n\r\n if (data) {\r\n const container = new DOMParser().parseFromString(data, 'text/xml')\r\n const rootEl = Array.from(container.getElementsByTagName('svg'))\r\n if (rootEl.length) {\r\n image = rootEl[0]\r\n image.setAttribute('overflow', 'visible')\r\n }\r\n }\r\n }\r\n\r\n image.setAttribute('x', numToAttr(dx))\r\n image.setAttribute('y', numToAttr(dy))\r\n image.setAttribute('width', `${numToAttr(dw)}px`)\r\n image.setAttribute('height', `${numToAttr(dh)}px`)\r\n\r\n this._element.appendChild(image)\r\n }\r\n\r\n private createColor({\r\n options,\r\n color,\r\n additionalRotation,\r\n x,\r\n y,\r\n height,\r\n width,\r\n name\r\n }: {\r\n options?: Gradient\r\n color?: string\r\n additionalRotation: number\r\n x: number\r\n y: number\r\n height: number\r\n width: number\r\n name: string\r\n }): void {\r\n const size = width > height ? width : height\r\n const rect = this.document.createElementNS('http://www.w3.org/2000/svg', 'rect')\r\n rect.setAttribute('x', numToAttr(x))\r\n rect.setAttribute('y', numToAttr(y))\r\n rect.setAttribute('height', numToAttr(height))\r\n rect.setAttribute('width', numToAttr(width))\r\n rect.setAttribute('style', `mask:url(#mask-${name})`)\r\n\r\n if (options) {\r\n let gradient: SVGElement\r\n if (options.type === GradientType.radial) {\r\n gradient = this.document.createElementNS('http://www.w3.org/2000/svg', 'radialGradient')\r\n gradient.setAttribute('id', name)\r\n gradient.setAttribute('gradientUnits', 'userSpaceOnUse')\r\n gradient.setAttribute('fx', numToAttr(x + width / 2))\r\n gradient.setAttribute('fy', numToAttr(y + height / 2))\r\n gradient.setAttribute('cx', numToAttr(x + width / 2))\r\n gradient.setAttribute('cy', numToAttr(y + height / 2))\r\n gradient.setAttribute('r', numToAttr(size / 2))\r\n } else {\r\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI)\r\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI)\r\n let x0 = x + width / 2\r\n let y0 = y + height / 2\r\n let x1 = x + width / 2\r\n let y1 = y + height / 2\r\n\r\n if (\r\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\r\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\r\n ) {\r\n x0 = x0 - width / 2\r\n y0 = y0 - (height / 2) * Math.tan(rotation)\r\n x1 = x1 + width / 2\r\n y1 = y1 + (height / 2) * Math.tan(rotation)\r\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\r\n y0 = y0 - height / 2\r\n x0 = x0 - width / 2 / Math.tan(rotation)\r\n y1 = y1 + height / 2\r\n x1 = x1 + width / 2 / Math.tan(rotation)\r\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\r\n x0 = x0 + width / 2\r\n y0 = y0 + (height / 2) * Math.tan(rotation)\r\n x1 = x1 - width / 2\r\n y1 = y1 - (height / 2) * Math.tan(rotation)\r\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\r\n y0 = y0 + height / 2\r\n x0 = x0 + width / 2 / Math.tan(rotation)\r\n y1 = y1 - height / 2\r\n x1 = x1 - width / 2 / Math.tan(rotation)\r\n }\r\n\r\n gradient = this.document.createElementNS('http://www.w3.org/2000/svg', 'linearGradient')\r\n gradient.setAttribute('id', name)\r\n gradient.setAttribute('gradientUnits', 'userSpaceOnUse')\r\n gradient.setAttribute('x1', numToAttr(x0))\r\n gradient.setAttribute('y1', numToAttr(y0))\r\n gradient.setAttribute('x2', numToAttr(x1))\r\n gradient.setAttribute('y2', numToAttr(y1))\r\n }\r\n\r\n options.colorStops.forEach((stopCfg: { offset: number, color: string }) => {\r\n const stop = this.document.createElementNS('http://www.w3.org/2000/svg', 'stop')\r\n stop.setAttribute('offset', `${numToAttr(100 * stopCfg.offset)}%`)\r\n\r\n const parsed = parseColor(stopCfg.color)\r\n stop.setAttribute('stop-color', parsed.value)\r\n if (parsed.alpha < 1) stop.setAttribute('stop-opacity', parsed.alpha.toFixed(7))\r\n gradient.appendChild(stop)\r\n })\r\n\r\n rect.setAttribute('fill', `url(#${name})`)\r\n this.defs.appendChild(gradient)\r\n } else if (color) {\r\n const parsed = parseColor(color)\r\n rect.setAttribute('fill', parsed.value)\r\n if (parsed.alpha < 1) rect.setAttribute('opacity', parsed.alpha.toFixed(7))\r\n }\r\n\r\n this._element.appendChild(rect)\r\n }\r\n\r\n private createMask(id: string) {\r\n const options = this.options\r\n\r\n const mask = this.document.createElementNS('http://www.w3.org/2000/svg', 'mask')\r\n mask.setAttribute('id', id)\r\n mask.setAttribute('maskUnits', 'userSpaceOnUse')\r\n mask.setAttribute('x', '0')\r\n mask.setAttribute('y', '0')\r\n mask.setAttribute('width', numToAttr(options.width))\r\n mask.setAttribute('height', numToAttr(options.height))\r\n\r\n const group = this.document.createElementNS('http://www.w3.org/2000/svg', 'g')\r\n group.setAttribute('fill', '#fff')\r\n mask.appendChild(group)\r\n\r\n return [mask, group]\r\n }\r\n}\r\n","interface ImageSizeOptions {\r\n originalHeight: number\r\n originalWidth: number\r\n maxHiddenDots: number\r\n maxHiddenAxisDots?: number\r\n dotSize: number\r\n margin: number\r\n}\r\n\r\ninterface ImageSizeResult {\r\n height: number\r\n width: number\r\n hideYDots: number\r\n hideXDots: number\r\n}\r\n\r\nexport function calculateImageSize({\r\n originalHeight,\r\n originalWidth,\r\n maxHiddenDots,\r\n maxHiddenAxisDots,\r\n dotSize,\r\n margin\r\n}: ImageSizeOptions): ImageSizeResult {\r\n const hideDots = { x: 0, y: 0 }\r\n const imageSize = { x: 0, y: 0 }\r\n\r\n if (\r\n originalHeight <= 0 ||\r\n originalWidth <= 0 ||\r\n maxHiddenDots <= 0 ||\r\n dotSize <= 0 ||\r\n 4 * margin ** 2 > maxHiddenDots\r\n ) {\r\n return {\r\n height: 0,\r\n width: 0,\r\n hideYDots: 0,\r\n hideXDots: 0\r\n }\r\n }\r\n\r\n //If set, ensure maxHiddenAxisDots is odd and at least 1\r\n if (maxHiddenAxisDots && maxHiddenAxisDots % 2 == 0) maxHiddenAxisDots = Math.max(1, maxHiddenAxisDots - 1)\r\n\r\n //Determine the bigger and smaller image dimension\r\n const dimMax = Math.max(originalWidth, originalHeight)\r\n const dimMin = Math.min(originalWidth, originalHeight)\r\n\r\n //Find max image size along the bigger dimension\r\n let lower = 0\r\n let upper = (maxHiddenAxisDots || maxHiddenDots) - 2 * margin\r\n do {\r\n const newSize = lower + (upper - lower) / 2\r\n let dotsMax = Math.max(1, Math.ceil(newSize + 2 * margin))\r\n if (dotsMax % 2 == 0) dotsMax++\r\n let dotsMin = Math.max(1, Math.ceil((newSize * dimMin) / dimMax + 2 * margin))\r\n if (dotsMin % 2 == 0) dotsMin++\r\n\r\n if (dotsMax * dotsMin > maxHiddenDots) upper = newSize\r\n else lower = newSize\r\n } while (Math.abs(lower - upper) > 0.001)\r\n\r\n //Calculate how many dots the given size corresponds to\r\n const size = lower\r\n let hideMax = Math.max(1, Math.ceil(size + 2 * margin))\r\n if (hideMax % 2 == 0) hideMax++\r\n let hideMin = Math.max(1, Math.ceil((size * dimMin) / dimMax + 2 * margin))\r\n if (hideMin % 2 == 0) hideMin++\r\n\r\n //Set hidden dots along bigger and smaller dimension to the right axis\r\n if (originalWidth > originalHeight) {\r\n hideDots.x = hideMax\r\n hideDots.y = hideMin\r\n } else {\r\n hideDots.x = hideMin\r\n hideDots.y = hideMax\r\n }\r\n\r\n //Fit image to the hidden dots\r\n const maxW = (hideDots.x - 2 * margin) * dotSize\r\n const maxH = (hideDots.y - 2 * margin) * dotSize\r\n imageSize.x = maxW\r\n imageSize.y = (maxW * originalHeight) / originalWidth\r\n if (imageSize.y > maxH) {\r\n imageSize.y = maxH\r\n imageSize.x = (maxH * originalWidth) / originalHeight\r\n }\r\n\r\n return {\r\n height: Math.round(imageSize.y + 2 * margin * dotSize),\r\n width: Math.round(imageSize.x + 2 * margin * dotSize),\r\n hideYDots: hideDots.y,\r\n hideXDots: hideDots.x\r\n }\r\n}\r\n","import { QRCodeMinimal } from '@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js'\r\nimport { stringToBytes_UTF8 } from '@liquid-js/qrcode-generator/lib/text/stringToBytes_UTF8.js'\r\nimport { RecursivePartial } from '../types/helper.js'\r\nimport { mergeDeep } from '../utils/merge.js'\r\nimport { ImageMode, Options, ShapeType, defaultOptions, sanitizeOptions } from '../utils/options.js'\r\nimport { ErrorCorrectionPercents, getMode } from '../utils/qrcode.js'\r\nimport { QRSVG } from './qr-svg.js'\r\n\r\nObject.assign(QRCodeMinimal.stringToBytesFuncs, stringToBytes_UTF8)\r\n\r\nexport type ExtensionFunction = (svg: SVGElement, options: RecursivePartial<Options>) => void\r\n\r\nexport class QRCodeStyling {\r\n private options: Options\r\n private container?: HTMLElement\r\n private qr?: QRCodeMinimal\r\n private extension?: ExtensionFunction\r\n private svgDrawingPromise?: Promise<void>\r\n private qrSVG?: QRSVG\r\n\r\n get size() {\r\n if (this.qrSVG)\r\n return {\r\n width: this.qrSVG.width,\r\n height: this.qrSVG.height\r\n }\r\n return undefined\r\n }\r\n\r\n constructor(options?: RecursivePartial<Options>) {\r\n this.options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as Options) : defaultOptions\r\n this.update()\r\n }\r\n\r\n update(\r\n /** The same options as for initialization */\r\n options?: RecursivePartial<Options>\r\n ): void {\r\n if (this.container) this.container.innerHTML = ''\r\n\r\n this.options = options ? sanitizeOptions(mergeDeep(this.options, options) as Options) : this.options\r\n\r\n if (!this.options.data) {\r\n return\r\n }\r\n\r\n if (this.options.stringToBytesFuncs) {\r\n Object.assign(QRCodeMinimal.stringToBytesFuncs, this.options.stringToBytesFuncs)\r\n delete this.options.stringToBytesFuncs\r\n }\r\n\r\n this.qr = new QRCodeMinimal(this.options.qrOptions.typeNumber, this.options.qrOptions.errorCorrectionLevel)\r\n const mode = this.options.qrOptions.mode || getMode(this.options.data)\r\n this.qr.addData(this.options.data, mode)\r\n this.qr.make()\r\n\r\n this.setupSvg()\r\n\r\n this.append(this.container)\r\n }\r\n\r\n append(\r\n /** This container will be used for appending of the QR code */\r\n container?: HTMLElement\r\n ): void {\r\n if (!container) {\r\n return\r\n }\r\n\r\n if (this.qrSVG?.element) {\r\n container.appendChild(this.qrSVG.element)\r\n }\r\n\r\n this.container = container\r\n }\r\n\r\n /**\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * const extension = (svg, options) => {\r\n * const { width, height } = options;\r\n * const size = Math.min(width, height);\r\n * const border = options.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\r\n * const borderAttributes = {\r\n * fill: \"none\",\r\n * x: (width - size + 40) / 2,\r\n * y: (height - size + 40) / 2,\r\n * width: size - 40,\r\n * height: size - 40,\r\n * stroke: \"black\",\r\n * \"stroke-width\": 40,\r\n * rx: 100\r\n * };\r\n * Object.keys(borderAttributes).forEach((attribute) => {\r\n * border.setAttribute(attribute, borderAttributes[attribute]);\r\n * });\r\n * svg.appendChild(border);\r\n * };\r\n * ```\r\n */\r\n applyExtension(\r\n /** Extension is a function that takes svg and previously applied options and modifies an svg */\r\n extension: ExtensionFunction\r\n ): void {\r\n if (!extension) {\r\n throw new Error('Extension function should be defined.')\r\n }\r\n\r\n this.extension = extension\r\n this.update()\r\n }\r\n\r\n deleteExtension(): void {\r\n this.extension = undefined\r\n this.update()\r\n }\r\n\r\n async serialize(): Promise<string | undefined> {\r\n if (!this.qr) throw new Error('QR code is empty')\r\n\r\n if (!this.qrSVG?.element || !this.svgDrawingPromise) {\r\n this.setupSvg()\r\n }\r\n await this.svgDrawingPromise\r\n\r\n if (!this.qrSVG?.element) {\r\n return\r\n }\r\n\r\n const serializer = new XMLSerializer()\r\n let source = serializer.serializeToString(this.qrSVG.element)\r\n\r\n source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + source\r\n return source\r\n }\r\n\r\n private setupSvg(): void {\r\n if (!this.qr) {\r\n return\r\n }\r\n let moduleCount = this.qr.getModuleCount()\r\n if (this.options.imageOptions.mode == ImageMode.background && this.options.shape != ShapeType.circle)\r\n moduleCount += 2\r\n let count = Math.ceil((this.options.shape == ShapeType.circle ? Math.sqrt(2) : 1) * moduleCount)\r\n if (count % 2 == 0) count -= 1\r\n let margin = (this.options.backgroundOptions && this.options.backgroundOptions.margin) || 0\r\n if (this.options.imageOptions.mode == ImageMode.background) margin += this.options.imageOptions.margin || 0\r\n const size = Math.ceil(this.options.dotsOptions.size * (count + 2 * margin))\r\n this.qrSVG = new QRSVG({\r\n ...this.options,\r\n width: size,\r\n height: size,\r\n errorCorrectionPercent: ErrorCorrectionPercents[this.options.qrOptions.errorCorrectionLevel]\r\n })\r\n\r\n this.svgDrawingPromise = this.qrSVG.drawQR(this.qr).then(() => {\r\n if (!this.qrSVG?.element) return\r\n this.extension?.(this.qrSVG.element, this.options)\r\n })\r\n }\r\n}\r\n","/**\n * stringToBytes_UTF8\n * contributed by elhigu\n */\nexport const stringToBytes_UTF8 = {\n UTF8: (s) => {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80)\n utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n else {\n // surrogate pair\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n }\n};\n//# sourceMappingURL=stringToBytes_UTF8.js.map","export interface CanvasOptions {\r\n width: number\r\n height: number\r\n margin: number\r\n}\r\n\r\nexport const defaultCanvasOptions: CanvasOptions = {\r\n width: 300,\r\n height: 300,\r\n margin: 0\r\n}\r\n\r\nexport function sanitizeCanvasOptions(options: CanvasOptions): CanvasOptions {\r\n const newOptions = { ...options }\r\n\r\n newOptions.width = Number(newOptions.width)\r\n newOptions.height = Number(newOptions.height)\r\n newOptions.margin = Number(newOptions.margin)\r\n\r\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\r\n newOptions.margin = Math.min(newOptions.width, newOptions.height)\r\n }\r\n\r\n return newOptions\r\n}\r\n","import { QRCodeStyling } from '../core/qr-code-styling.js'\r\nimport { RecursivePartial } from '../types/helper.js'\r\nimport { CanvasOptions, defaultCanvasOptions, sanitizeCanvasOptions } from '../utils/canvas-options.js'\r\nimport { mergeDeep } from '../utils/merge.js'\r\n\r\nexport enum FileExtension {\r\n svg = 'svg',\r\n png = 'png',\r\n jpeg = 'jpeg',\r\n webp = 'webp'\r\n}\r\n\r\nexport function drawToCanvas(\r\n qrCode: QRCodeStyling,\r\n options?: RecursivePartial<CanvasOptions>\r\n): { canvas: HTMLCanvasElement, canvasDrawingPromise: Promise<void> | undefined } | undefined {\r\n const { width, height, margin } = options\r\n ? sanitizeCanvasOptions(mergeDeep(defaultCanvasOptions, options) as CanvasOptions)\r\n : defaultCanvasOptions\r\n\r\n const canvas = document.createElement('canvas')\r\n canvas.width = width\r\n canvas.height = height\r\n\r\n const size = Math.min(width, height) - 2 * margin\r\n\r\n const canvasDrawingPromise = qrCode.serialize().then((xml) => {\r\n if (!xml) return\r\n const svg64 = btoa(xml)\r\n const image64 = 'data:image/svg+xml;base64,' + svg64\r\n const image = new Image()\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n image.onload = (): void => {\r\n // Ensure pixel-perfect rendering of SVG to avoid artefact, then downscale to requested size\r\n const aaFactor = Math.ceil((2 * size) / Math.min(image.width, image.height))\r\n let aaCanvas: HTMLCanvasElement | OffscreenCanvas\r\n try {\r\n aaCanvas = new OffscreenCanvas(image.width * aaFactor, image.height * aaFactor)\r\n } catch (_) {\r\n // Fallback to regular canvas element\r\n aaCanvas = document.createElement('canvas')\r\n aaCanvas.width = image.width * aaFactor\r\n aaCanvas.height = image.height * aaFactor\r\n }\r\n aaCanvas.getContext('2d')?.drawImage(image, 0, 0, aaCanvas.width, aaCanvas.height)\r\n\r\n canvas?.getContext('2d')?.drawImage(aaCanvas, (width - size) / 2, (height - size) / 2, size, size)\r\n resolve()\r\n }\r\n image.onerror = image.onabort = reject\r\n\r\n image.src = image64\r\n })\r\n })\r\n\r\n return { canvas, canvasDrawingPromise }\r\n}\r\n\r\nexport async function download(\r\n qrCode: QRCodeStyling,\r\n downloadOptions?: { name?: string, extension: `${FileExtension}` },\r\n options?: RecursivePartial<CanvasOptions>\r\n): Promise<void> {\r\n let extension: `${FileExtension}` = FileExtension.png\r\n let name = 'qr'\r\n\r\n if (downloadOptions) {\r\n if (downloadOptions.name) {\r\n name = downloadOptions.name\r\n }\r\n if (downloadOptions.extension) {\r\n extension = downloadOptions.extension\r\n }\r\n }\r\n\r\n if (extension.toLowerCase() === 'svg') {\r\n const source = await qrCode.serialize()\r\n if (!source) return\r\n const url = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(source)\r\n downloadURI(url, `${name}.svg`)\r\n } else {\r\n const res = drawToCanvas(qrCode, options)\r\n if (!res) return\r\n const { canvas, canvasDrawingPromise } = res\r\n await canvasDrawingPromise\r\n const url = canvas.toDataURL(`image/${extension}`)\r\n downloadURI(url, `${name}.${extension}`)\r\n }\r\n}\r\n\r\nexport function downloadURI(uri: string, name: string): void {\r\n const link = document.createElement('a')\r\n link.download = name\r\n link.href = uri\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link)\r\n}\r\n","export { ErrorCorrectionLevel, Mode, TypeNumber } from '@liquid-js/qrcode-generator/lib/qrcode/QRCodeMinimal.js'\r\nexport { QRCodeStyling, type ExtensionFunction } from './core/qr-code-styling.js'\r\nexport { FileExtension } from './tools/browser-utils.js'\r\nexport { type RecursivePartial } from './types/helper.js'\r\nexport { type CanvasOptions } from './utils/canvas-options.js'\r\nexport { GradientType, type Gradient } from './utils/gradient.js'\r\nexport { CornerDotType, CornerSquareType, DotType, ImageMode, ShapeType, type Options } from './utils/options.js'\r\nexport { ErrorCorrectionPercents } from './utils/qrcode.js'\r\nimport * as _browserUtils from './tools/browser-utils.js'\r\n\r\nexport const browserUtils: typeof _browserUtils | undefined = _browserUtils\r\n"],"names":["BitBuffer","constructor","this","buffer","length","getBuffer","getLengthInBits","toString","i","getBit","a","index","put","num","putBit","bit","push","ErrorCorrectLevel","w","L","M","Q","H","QRMath","Error","glog","n","LOG_TABLE","gexp","EXP_TABLE","initialize","y","shift","offset","len","getAt","getLength","toLogString","multiply","e","j","Polynomial","mod","ratio","Mode","MODE_NUMBER","MODE_ALPHA_NUM","MODE_8BIT_BYTE","MODE_KANJI","QRData","mode","data","getMode","getData","typeNumber","stringToBytes","super","write","forEach","val","QRAlphaNum","C","s","getCode","charAt","c","charCodeAt","QRNumber","strToNum","substring","chatToNum","b","MaskPattern","F","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","QRUtil","getPatternPosition","PATTERN_POSITION_TABLE","getMaxLength","errorCorrectLevel","m","MAX_LENGTH","getErrorCorrectPolynomial","errorCorrectLength","getMaskFunc","maskPattern","_i","getLostPoint","qrCode","getModuleCount","lostPoint","row","moduleCount","col","sameCount","dark","isDark","r","count","darkCount","Math","getBCHTypeInfo","d","getBCHDigit","G15","G15_MASK","getBCHTypeNumber","G18","digit","I","totalCount","dataCount","getDataCount","getTotalCount","getRSBlocks","rsBlock","RSBlock","getRsBlockTable","list","RS_BLOCK_TABLE","TypeNumber","Array","fill","map","_","ErrorCorrectionLevel","fa","numeric","alphanumeric","kanji","unicode","QRCodeMinimal","errorCorrectionLevel","modules","qrDataList","getTypeNumber","setTypeNumber","getErrorCorrectLevel","setErrorCorrectLevel","clearData","addData","qrData","byte","QR8BitByte","stringToBytesFuncs","default","UTF8","QRKanji","SJIS","make","rsBlocks","totalDataCount","reduce","t","v","makeImpl","getBestMaskPattern","minLostPoint","pattern","test","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","mapData","inc","bitIndex","byteIndex","maskFunc","pos","bits","createData","dataArray","PAD0","PAD1","createBytes","createNumArray","maxDcCount","maxEcCount","dcCount","ecCount","max","f","g","dcdata","rsPoly","modPoly","h","ecdata","modIndex","totalCodeCount","bytes","isObject","obj","isArray","mergeDeep","target","sources","undefined","source","Object","keys","key","targetValue","sourceValue","GradientType","ja","sanitizeGradient","gradient","colorStops","newGradient","rotation","Number","colorStop","radial","linear","DotType","dot","randomDot","rounded","extraRounded","verticalLine","horizontalLine","classy","classyRounded","square","smallSquare","tinySquare","diamond","CornerDotType","S","heart","outpoint","inpoint","CornerSquareType","U","ShapeType","ka","circle","ImageMode","la","center","overlay","background","defaultOptions","document","shape","width","height","qrOptions","imageOptions","imageSize","crossOrigin","margin","color","dotsOptions","type","size","sanitizeOptions","options","newOptions","min","round","cornersSquareOptions","cornersDotOptions","backgroundOptions","ErrorCorrectionPercents","rx","numToAttr","X","value","toFixed","replace","Y","strings","values","p","trim","element","_element","draw","args","drawFunction","drawSquare","drawHeart","drawRounded","drawClassy","drawInpoint","drawOutpoint","drawDot","call","rotateFigure","x","setAttribute","PI","cx","cy","basicDot","createElementNS","basicSquare","basicHeart","move","path","toUpperCase","join","basicRounded","basicClassy","dotSize","svgPath","basicInpoint","_fill","drawExtraRounded","basicExtraRounded","drawRandomDot","drawClassyRounded","drawVerticalLine","drawHorizontalLine","drawDiamond","drawSmallSquare","drawTinySquare","basicSideRounded","basicCornerRounded","basicCornerExtraRounded","basicCornersRounded","random","originalSize","getNeighbor","leftNeighbor","rightNeighbor","topNeighbor","neighborsCount","bottomNeighbor","browserImageTools","toDataURL","url","startsWith","Promise","resolve","reject","xhr","XMLHttpRequest","onload","reader","FileReader","onloadend","result","readAsDataURL","response","onerror","onabort","ontimeout","open","responseType","send","getSize","src","image","Image","then","catch","parseColor","cstr","parts","alpha","toLowerCase","base","slice","parseInt","exec","dims","split","parseFloat","pop","padStart","squareMask","dotMask","QRSVG","defs","appendChild","imageTools","drawQR","qr","drawImageSize","hideXDots","hideYDots","errorCorrectionPercent","q","maxWidth","maxHeight","alignment","calculateImageSize","originalHeight","originalWidth","maxHiddenDots","maxHiddenAxisDots","dimMax","dimMin","lower","upper","newSize","dotsMax","ceil","dotsMin","abs","hideMax","hideMin","maxW","maxH","floor","coverLevel","drawBackground","drawImage","drawDots","drawCorners","createColor","additionalRotation","name","backgroundMask","backgroundMaskGroup","createMask","filter","minSize","QRDot","overlayDot","markerDot","dotsMask","dotsMaskGroup","lightDotsMask","lightDotsMaskGroup","additionalDots","fakeCount","xBeginning","fakeMatrix","ii","jj","sqrt","iAlign","find","jAlign","xFakeBeginning","yFakeBeginning","xOffset","yOffset","colorCount","cornersSquareSize","cornersDotSize","column","yBeginning","cornersSquareMask","cornersSquareMaskGroup","cornersDotMask","cornersDotMaskGroup","cornersSquare","QRCornerSquare","cornersDot","QRCornerDot","imageUrl","dx","dy","setAttributeNS","indexOf","encoding","atob","Buffer","from","container","parseFromString","DOMParser","rootEl","getElementsByTagName","dw","dh","rect","x0","y0","x1","y1","positiveRotation","tan","stopCfg","stop","parsed","id","mask","group","assign","stringToBytes_UTF8","utf8","charcode","QRCodeStyling","qrSVG","update","innerHTML","setupSvg","append","applyExtension","extension","deleteExtension","serialize","svgDrawingPromise","serializeToString","XMLSerializer","defaultCanvasOptions","FileExtension","Da","Ea","sanitizeCanvasOptions","canvas","createElement","xml","image64","btoa","aaFactor","aaCanvas","OffscreenCanvas","getContext","l","canvasDrawingPromise","downloadURI","Fa","uri","link","download","href","body","click","removeChild","svg","png","jpeg","webp","browserUtils","downloadOptions","res","drawToCanvas"],"mappings":"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AAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAErB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAErB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAEpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAErB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAEpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAErB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAErB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAErB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,SChPpBC,EAAWC,MAAQ,IACnBC,KAAK,GACLC,KAAI,CAACC,EAAG3H,IAAMA,IAET,IAAC4H,EAMRC,EAAAD,IAAyBA,EAAuB,IAJ/CA,EAAAjH,EAA4B,IAC5BiH,EAAAhH,EAA4B,IAC5BgH,EAAA/G,EAA4B,IAC5B+G,EAAA9G,EAA4B,IAEtB,IAACsB,EAURzB,EAAAyB,IAASA,EAAO,IARfA,EAAA0F,QAAkB,UAClBnH,EAAAoH,aAAuB,iBAIvB,KAAe,OACfpH,EAAAqH,MAAgB,UAChBC,QAAkB,UAOTC,MAAAA,EACTzI,WAAAA,CAAYqD,EAAa,EAAGqF,EAAuBP,EAAqBjH,GACpEjB,KAAK0I,QAAU,GACf1I,KAAKiG,YAAc,EACnBjG,KAAKoD,WAAaA,EAClBpD,KAAKoF,kBAAoBrE,EAAkB0H,GAC3CzI,KAAK2I,WAAa,EALqD,CAO3EC,aAAAA,GACI,OAAO5I,KAAKoD,UADA,CAGhByF,aAAAA,CAAczF,GACVpD,KAAKoD,WAAaA,CADI,CAG1B0F,oBAAAA,GACI,OAAY1D,KAAAA,iBADO,CAGvB2D,oBAAAA,CAAqB3D,GACjBpF,KAAKoF,kBAAoBA,CADW,CAGxC4D,SAAAA,GACIhJ,KAAK2I,WAAa,EADV,CAGZM,OAAAA,CAAQC,EAAQlG,EAAON,EAAKyG,MACxB,GAAID,aAAJvF,EACI3D,KAAK2I,WAAW7H,KAAKoI,OAEpB,IAAsB,iBAAtB1I,EAsBD,MAAMc,aAAAd,GArBN,OAAQwC,GACJ,KAAKN,EAAK0F,QACNpI,KAAK2I,WAAW7H,KAAK,IAAImD,EAASiF,UAEjCxG,KAAAA,EAAK2F,aACNrI,KAAK2I,WAAW7H,KAAK,IAAI4C,EAAWwF,IAExC,MAAA,KAAKxG,EAAKyG,KACNnJ,KAAK2I,WAAW7H,KAAK,IAAIsI,EAAWF,EAAQV,EAAca,mBAAmBC,UAEjF,MAAA,KAAK5G,EAAK6F,QACNvI,KAAK2I,WAAW7H,KAAK,IAAIsI,EAAWF,EAAQV,EAAca,mBAAdE,OAC5C,WACC7G,EAAK4F,MACNtI,KAAK2I,WAAW7H,KAAK,IAAI0I,EAAQN,EAAQV,EAAca,mBAAdI,OAE7C,MAAA,QACI,MAAUnI,MAAM,QAAU0B,GAIlC,CA1B0B,CAoClCqD,MAAAA,CAAOL,EAAKE,GACR,aAAIlG,KAAK0I,QAAQ1C,GAAKE,IACXlG,KAAK0I,QAAQ1C,GAAKE,EAFhB,CAQjBJ,cAAAA,GACI,YAAYG,WADC,CAGjByD,IAAAA,GACI,GAAsB,EAAlB1J,KAAKoD,WAAgB,CACrB,IAAIA,EAAa,EACjB,KAAoB,GAAbA,EAAiBA,IAAc,CAClC,IAAMuG,EAAWlC,EAAAF,YAAQnE,EAAsBpD,KAAEoF,uBAC3CnF,EAAS,IAAAH,EAOXG,GANC0I,KAAAA,WAAWnF,SAAQP,IACpBhD,EAAOS,IAAIuC,EAAKC,UAAW,GACpBxC,EAAAA,IAAIuC,EAAKf,YAAae,EAAK7C,gBAAgBgD,IAC7CG,EAAAA,MAAMtD,EAAX,IAEJ2J,EAAuBD,EAAAE,QAAe,CAAAC,EAAGC,IAAQD,IAAIzC,gBAAgB,GACjEpH,EAAOG,mBAAsC,EAAjBwJ,EAC5B,KAV8B,CAatC5J,KAAKoD,WAAaA,CAfG,CAiBzBpD,KAAKgK,UAAS,EAAOhK,KAAKiK,qBAlBvB,CAoBPA,kBAAAA,GACI,IAAIC,EAAe,EACfC,EAAU,EACd,IAAK,IAAI7J,EAAI,EAAO,EAAJA,EAAOA,GAAK,EAAG,CAC3BN,KAAKgK,UAAS,EAAM1J,GACpB,IAAAyF,EAAkBf,EAAAY,aAAmB5F,OAC5B,GAALM,GAAU4J,EAAenE,KACzBmE,EAAenE,EACfoE,EAAU7J,EALa,CAQ/B,OAAO6J,CAXU,CAarBH,QAAAA,CAASI,EAAM1E,GAEX1F,KAAKiG,YAAgC,EAAlBjG,KAAKoD,WAAiB,GACpCsF,KAAAA,QAAU,GACV,IAAA,IAAIpI,EAAI,EAAGA,EAAIN,KAAKiG,YAAa3F,GAAK,EAAG,CAC1CN,KAAK0I,QAAQ5H,KAAK,IACb,IAAA,IAAIwB,EAAI,EAAGA,EAAItC,KAAKiG,YAAa3D,GAAK,EACvCtC,KAAK0I,QAAQpI,GAAGQ,KAAK,KAHiB,CAM9Cd,KAAKqK,0BAA0B,EAAG,GAC7BA,KAAAA,0BAA0BrK,KAAKiG,YAAc,EAAG,GACrDjG,KAAKqK,0BAA0B,EAAGrK,KAAKiG,YAAc,GAChDqE,KAAAA,6BACLtK,KAAKuK,qBACAC,KAAAA,cAAcJ,EAAM1E,GACF,GAAnB1F,KAAKoD,YACLpD,KAAKyK,gBAAgBL,KAEf5B,aAAiBxI,KAAeoD,WAAWpD,uBAAwBA,KAAM2I,YACnF3I,KAAK0K,QAAQzH,EAAMyC,EApBK,CAsB5BgF,OAAAA,CAAQzH,EAAMyC,GACV,IAAIiF,GAAQ,EACR3E,EAAMhG,KAAKiG,YAAc,EACzB2E,EAAW,EACXC,EAAY,EAChBC,EAAiB9F,EAAAS,YAAkBC,OAC9B,IAAIQ,EAAMlG,KAAKiG,YAAc,EAAS,EAANC,EAASA,GAAO,EAIjD,IAHW,GAAPA,KACAA,IAES,CACT,IAAK,IAAInC,EAAI,EAAO,EAAJA,EAAOA,GAAK,EACxB,GAAkC,MAA9B/D,KAAK0I,QAAQ1C,GAAKE,EAAMnC,GAAY,CACpC,IAAIqC,GAAO,EACPyE,EAAY5H,EAAK/C,SACjBkG,EAA+C,IAAtCnD,EAAK4H,KAAeD,EAAY,IAEnCE,EAAW9E,EAAIE,EAAQnC,KAE7BqC,GAAQA,GAEZpG,KAAK0I,QAAQ1C,GAAKE,EAAMnC,GAAKqC,IAC7BwE,GACgB,GAAZA,IACAC,GAAa,EACbD,EAAW,EAbqB,CAkB5C,GADA5E,GAAO2E,EACG,EAAN3E,GAAWhG,KAAKiG,aAAeD,EAAK,CACpCA,GAAO2E,EACPA,GAAOA,EACP,KAHoC,CApB/B,CAVM,CAsC3BL,0BAAAA,GACI,IAAAS,EAAS/F,EAASC,wBAAoB7B,YAClCI,EAAAA,SAAQwC,IACR+E,EAAIvH,SAAQ0C,IACR,GAA8B,MAA1BlG,KAAK0I,QAAQ1C,GAAKE,GAGtB,IAAK,IAAII,GAAM,EAAO,GAALA,EAAQA,GAAK,EAC1B,IAAK,IAAIvC,GAAM,EAAO,GAALA,EAAQA,GAAK,EAEtB/D,KAAK0I,QAAQ1C,EAAMM,GAAGJ,EAAMnC,IADrB,GAAPuC,GAAgB,GAALA,IAAe,GAALvC,GAAgB,GAALA,GAAgB,GAALuC,GAAe,GAALvC,CAIpB,GAVjD,GAHqB,CAoB7BsG,yBAAAA,CAA0BrE,EAAKE,GAC3B,IAAK,IAAII,GAAM,EAAO,GAALA,EAAQA,GAAK,EAC1B,IAAK,IAAIvC,GAAM,EAAO,GAALA,EAAQA,GAAK,GACX,GAAXiC,EAAMM,GAAWtG,KAAKiG,aAAeD,EAAMM,IAAgB,GAAXJ,EAAMnC,GAAW/D,KAAKiG,aAAeC,EAAMnC,IAM3F/D,KAAK0I,QAAQ1C,EAAMM,GAAGJ,EAAMnC,GAH3B,GAAKuC,GAAU,GAALA,IAAgB,GAALvC,GAAe,GAALA,IAC/B,GAAKA,GAAU,GAALA,IAAgB,GAALuC,GAAe,GAALA,IAC/B,GAAKA,GAAU,GAALA,GAAU,GAAKvC,GAAU,GAALA,EARX,CAiBpCwG,kBAAAA,GACI,IAAK,IAAIjE,EAAI,EAAGA,EAAItG,KAAKiG,YAAc,EAAGK,GAAK,EACjB,MAAtBtG,KAAK0I,QAAQpC,GAAG,KAGpBtG,KAAK0I,QAAQpC,GAAG,GAAc,GAATA,EAAI,GAE7B,IAASvC,EAAI,EAAGA,EAAI/D,KAAKiG,YAAc,EAAGlC,GAAK,EACjB,MAAtB/D,KAAK0I,QAAQ,GAAG3E,KAGpB/D,KAAK0I,QAAQ,GAAG3E,GAAc,GAATA,EAAI,EAXZ,CAcrB0G,eAAAA,CAAgBL,GACZ,IAAAY,EAAUhG,EAAS+B,sBAAkB3D,YACrC,IAAK,IAAI9C,EAAI,EAAO,GAAJA,EAAQA,GAAK,EACzBN,KAAK0I,WAAWpI,EAAI,IAAKA,EAAI,EAAKN,KAAKiG,YAAc,EAAI,IAAMmE,GAA6B,IAAnBY,GAAQ1K,EAAK,GAEjFA,IAAAA,EAAI,EAAO,GAAJA,EAAQA,GAAK,EACzBN,KAAK0I,QAASpI,EAAI,EAAKN,KAAKiG,YAAc,EAAI,MAAM3F,EAAI,KAAO8J,GAA6B,IAAnBY,GAAQ1K,EAAK,EANxE,CAStBkK,aAAAA,CAAcJ,EAAM1E,GAEhBsF,EAAahG,EAAA0B,eADH1G,KAAIoF,mBAAsB,EAAKM,GAGzC,IAAK,IAAIpF,EAAI,EAAO,GAAJA,EAAQA,GAAK,EAAG,CAC5B,IAAMkC,GAAM4H,OAASY,GAAU1K,EAAK,GAC5B,EAAJA,EACAN,KAAK0I,QAAQpI,GAAG,GAAKkC,EAEZ,EAAJlC,EACLN,KAAK0I,QAAQpI,EAAI,GAAG,GAAKkC,EAGzBxC,KAAK0I,QAAQ1I,KAAKiG,YAAc,GAAK3F,GAAG,GAAKkC,CATrB,CAahC,IAASlC,EAAI,EAAO,GAAJA,EAAQA,GAAK,EACnBkC,GAAM4H,OAASY,GAAU1K,EAAK,GAC5B,EAAJA,EACAN,KAAK0I,QAAQ,GAAG1I,KAAKiG,YAAc3F,EAAI,GAAKkC,EAEnC,EAAJlC,EACLN,KAAK0I,QAAQ,GAAG,GAAKpI,EAAI,EAAI,GAAKkC,EAGlCxC,KAAK0I,QAAQ,GAAG,GAAKpI,EAAI,GAAKkC,EAItCxC,KAAK0I,QAAQ1I,KAAKiG,YAAc,GAAG,IAAMmE,CA9BZ,CAgC1Ba,iBAAAA,CAAW7H,EAAYgC,EAAmB8F,GAC7CvB,EAAclC,EAAUF,cAAuBnC,GAC/C,IAAMnF,EAAS,IAAAH,EAQf,KAPU0D,SAAQP,IACdhD,EAAOS,IAAIuC,EAAKC,UAAW,GAC3BjD,EAAOS,IAAIuC,EAAKf,YAAae,EAAK7C,gBAAgBgD,MAC7CG,MAAMtD,EAAX,IAGJ2J,EAAuBD,EAAAE,QAAe,CAAAC,EAAGC,IAAQD,IAAIzC,gBAAgB,GACjEpH,EAAOG,kBAAqC,EAAjBwJ,EAC3B,MAAUtI,MAAM,0BAA4BrB,EAAOG,kBAAoB,IAAuB,EAAjBwJ,EAAqB,KAOtG,IAJI3J,EAAOG,kBAAoB,GAAsB,EAAjBwJ,GAChC3J,EAAOS,IAAI,EAAG,GAGqB,GAAhCT,EAAOG,kBAAoB,GAC9BH,EAAOW,QAAO,GAGlB,OACQX,EAAOG,mBAAsC,EAAjBwJ,KAGhC3J,EAAOS,IAAI8H,EAAc2C,KAAM,KAC3BlL,EAAOG,mBAAsC,EAAjBwJ,KAGzBlJ,EAAAA,IAAI8H,EAAc4C,KAAM,GAEnC,OAAqBC,EAAAA,YAAYpL,EAAQ0J,EAhCe,CAkCrD0B,kBAAWA,CAACpL,EAAQ0J,GAMvB2B,SAAuB3E,EAAC3E,GACpB,IAAAxB,EAAO,GACF,IAAA,IAAIF,EAAI,EAAGA,EAAI0B,EAAK1B,GAAK,EAC1BE,EAAEM,KAAK,GAEX,OALyBiJ,CAAA,CAL7B,IAAIhI,EAAS,EACTwJ,EAAa,EACbC,IAAAA,EAAa,EACjB,MAAmB1D,MAAA6B,EAAczJ,QAAO8H,KAAK,IAAE,WAC5BF,MAAA6B,EAAczJ,QAAO8H,KAAK,IAAE,KAQ/C,IAAK,IAAI1B,EAAI,EAAGA,EAAIqD,EAASzJ,OAAQoG,GAAK,EAAG,CACzC,IAAAmF,EAAgB9B,EAAArD,GAAUe,eAC1BqE,EAAa/B,EAAWrD,GAAEgB,gBAAiBmE,EAC3CF,EAAa9E,KAAKkF,IAAIJ,EAAYE,GAClCG,EAAanF,KAAKkF,IAAIH,EAAYE,GAClCG,EAAOvF,GAAKgF,EAAeG,GAC3B,IAAK,IAAInL,EAAI,EAAGA,EAAIwL,EAAOxF,GAAGpG,OAAQI,GAAK,EACvCwL,EAAOxF,GAAGhG,GAAK,IAAOL,EAAOE,YAAYG,EAAIyB,GAOxCzB,IALTyD,GAAU0H,EACVM,EAAe/G,EAAAO,0BAAgCmG,GAE/CM,EAAgBxJ,IADID,EAAAuJ,EAAiBxF,GAAGyF,EAAQ7J,YAAY,GAC5CM,IAAWuJ,GAC3BE,EAAO3F,GAAKgF,EAAeS,EAAO7J,YAAc,GACvC5B,EAAI,EAAGA,EAAI4L,EAAO5F,GAAGpG,OAAQI,GAAK,EACjC6L,EAAW7L,IAAW4B,cAAqBoE,GAAEpG,OACnDgM,EAAO5F,GAAGhG,GAAiB,GAAZ6L,EAAgBH,EAAQ/J,MAAMkK,GAAY,CAhBpB,CAsBpC7L,MAFCgL,EADVc,EAAuBzC,EAAAE,QAAe,CAAAC,EAAGC,IAAQD,IAAIxC,iBAAiB,IAElE7G,EAAQ,EACHH,EAAI,EAAGA,EAAIiL,EAAYjL,GAAK,EACjC,IAASgG,EAAI,EAAGA,EAAIqD,EAASzJ,OAAQoG,GAAK,EAClChG,EAAIwL,EAAOxF,GAAGpG,SACd+C,EAAKxC,GAASqL,EAAOxF,GAAGhG,GACxBG,GAAS,GAIrB,IAASH,EAAI,EAAGA,EAAIkL,EAAYlL,GAAK,EACjC,IAASgG,EAAI,EAAGA,EAAIqD,EAASzJ,OAAQoG,GAAK,EAClChG,EAAI4L,EAAO5F,GAAGpG,SACd+C,EAAKxC,GAASyL,EAAO5F,GAAGhG,GACxBG,GAAS,GAIdwC,OAAAA,CAnD0B,EAsDzCuF,EAAca,mBAAqB,CAC/BC,QAAQ1F,GACJ,IAAAyI,EAAW,GACX,IAAK,IAAI/L,EAAI,EAAGA,EAAIsD,EAAE1D,OAAQI,GAAK,EAAG,CAClC,IAAAyD,EAAUH,EAAAI,WAAY1D,GAChBQ,EAAAA,KAAS,IAAJiD,EAFuB,CAItC,OANOM,CAAA,GASfmE,EAAc2C,KAAO,IACPC,EAAAA,KAAO,GCxYrB,IAAMkB,OACFC,GAAwB,2BAAaC,QAAaD,GAStCE,SAAAA,EAAUC,KAA0BC,GAChD,IAAKA,EAAQzM,OAAQ,eACTyM,EAAU7K,QACtB,YAAe8K,IAAXC,GAAyBP,EAASI,IAAYJ,EAASO,IAC3DrM,EAAS,IAAKkM,GACdI,OAAOC,KAAKF,GAAQrJ,SAASwJ,IACzB,MAAiBN,EAASM,KACTH,EAASG,GAEhBR,MAAAA,QAAQS,IAAgBnF,MAAM0E,QAAQU,GAC5CR,EAAOM,GAAOE,EACPZ,EAASW,IAAgBX,EAASY,GACzCR,EAAOM,GAAOP,EAAU,IAAKQ,GAAcC,GAE3CR,EAAOM,GAAOE,KAIfT,EAAUC,KAAWC,IAf+CD,CAHH,KCVhES,EAAAC,EAAAD,IAAAA,EAGX,IAwBeE,SAAAA,EAAiBC,GAGzB,OAFa,IAAKA,IAELC,aAAeC,EAAYD,WAAWrN,OACnD,MAAUoB,MAAM,8CAcbkM,OAVHA,EAAYC,SADZD,EAAYC,SACWC,OAAOF,EAAYC,UAEnB,EAG3BD,EAAYD,WAAaC,EAAYD,WAAWvF,KAAK2F,IAAkD,IAChGA,EACH5L,OAAQ2L,OAAOC,EAAU5L,YAGtByL,CAlBwC,CA1B/CL,EAAAS,OAAA,SACAT,EAAAU,OAAA,aCEQC,EAAA3M,EAAA2M,IAAAA,EAaX,CAbW,GACR3M,EAAA4M,IAAA,MACAD,EAAAE,UAAA,aACA7M,EAAA8M,QAAA,UACA9M,EAAA+M,aAAA,gBACAJ,EAAAK,aAAA,gBACAhN,EAAAiN,eAAA,kBACAN,EAAAO,OAAA,SACAP,EAAAQ,cAAA,iBACAnN,EAAAoN,OAAA,SACAT,EAAAU,YAAA,eACArN,EAAAsN,WAAA,cACAX,EAAAY,QAAA,UAGQC,IAAAA,EAAAC,EAAAD,IAAAA,EAQX,CAAA,GAPGA,EAAAZ,IAAA,MACAY,EAAAJ,OAAA,SACAK,EAAAC,MAAA,QACAD,EAAAV,aAAA,gBACAS,EAAAN,OAAA,SACAO,EAAAE,SAAA,WACAF,EAAAG,QAAA,cAGQC,EAAAC,EAAAD,IAAAA,EAOX,CAPW,GACRC,EAAAlB,IAAA,MACAkB,EAAAV,OAAA,SACAS,EAAAd,aAAA,gBACAe,EAAAZ,OAAA,SACAY,EAAAH,SAAA,WACAE,EAAAD,QAAA,cAGQG,EAAAC,EAAAD,IAAAA,EAGX,CAHW,GACRC,EAAAZ,OAAA,SACAW,EAAAE,OAAA,aAGQC,EAAAC,EAAAD,IAAAA,EAaX,CAbW,GAIRC,EAAAC,OAAA,SAIAD,EAAAE,QAAA,UAIAH,EAAAI,WAAA,aA+HGC,IAAAA,EAAgC,CACnCC,cAAU/C,EACVgD,MAAOV,EAAUX,OACjBsB,WAAOjD,EACPkD,YAAQlD,EACR3J,KAAM,GACN8M,UAAW,CACP3M,WAAYyE,EAAW,GACvB7E,UAAM4J,EACNnE,qBAAsBP,EAAqB/G,GAE/C6O,aAAc,CACVhN,KAAMqM,EAAUE,OAChBU,UAAW,GACXC,iBAAatD,EACbuD,OAAQ,EACRpI,KAAM,CACFqI,MAAO,wBAGfC,YAAa,CACTC,KAAMxC,EAAQS,OACd6B,MAAO,OACPG,KAAM,KAIEC,SAAAA,EAAgBC,GAuD5B,SAtDgB,IAAKA,IAEVT,aAAe,IACnBU,EAAWV,aACdC,UAAWxJ,KAAKkK,IAAI,EAAGjD,OAAOgD,EAAWV,aAAaC,aAAe,EACrEE,OAAQzC,OAAOgD,EAAWV,aAAaG,QACvCpI,KAAM,IACC2I,EAAWV,aAAajI,OAI/B2I,EAAWV,aAAahN,MAAQqM,EAAUG,UAASkB,EAAWV,aAAaG,OAAS,GACpFO,EAAWV,aAAajI,KAAKuF,WAC7BoD,EAAWV,aAAajI,KAAKuF,SAAWD,EAAiBqD,EAAWV,aAAajI,KAAKuF,WAG1FoD,EAAWL,YAAc,IAClBK,EAAWL,aAEdK,EAAWL,YAAY/C,WACvBoD,EAAWL,YAAY/C,SAAWD,EAAiBqD,EAAWL,YAAY/C,aAGnE+C,YAAYE,KAAO9J,KAAKmK,MAAMnK,KAAKkF,IAAI,EAAG+E,EAAWL,YAAYE,OAAS,IAEtEM,EAAAA,uBACXH,EAAWG,qBAAuB,IAC3BH,EAAWG,sBAEdH,EAAWG,qBAAqBvD,WAChCoD,EAAWG,qBAAqBvD,SAAWD,EAAiBqD,EAAWG,qBAAqBvD,YAIrFwD,EAAAA,oBACXJ,EAAWI,kBAAoB,IACxBJ,EAAWI,mBAEdJ,EAAWI,kBAAkBxD,WAC7BoD,EAAWI,kBAAkBxD,SAAWD,EAAiBqD,EAAWI,kBAAkBxD,YAI1FoD,EAAWK,oBACXL,EAAWK,kBAAoB,IACxBL,EAAWK,mBAEdL,EAAWK,kBAAkBzD,WAC7BoD,EAAWK,kBAAkBzD,SAAWD,EAAiBqD,EAAWK,kBAAkBzD,cAI9EqC,WAAUe,EAAWf,SAAWA,UArDJnP,CAAA,CC/MnC,IAAAwQ,EAA0B,CACnC,CAAC9I,EAAqBjH,GAAI,IAC1B,CAACiH,EAAqBhH,GAAI,IAC1B,CAACgH,EAAqB/G,GAAI,IAC1B,CAAC+G,EAAqB9G,GAAI,ICN9B,IAAM6P,WAEAC,SAAmBC,EAACC,GACtB,OAAaC,EAAAA,QAAQ,GAAGC,QAAQL,EAAI,GADD,UAIhBM,EAACC,KAAkCC,GACtD,OACK5H,EAAAA,QAAO,CAACC,EAAGC,EAAGzJ,KACX,IAAIoR,EAAa,GAGjB,OAFArP,IAAOqP,EAAID,EAAOnR,EAAI,IACtB,iBAAWoR,IAAeA,EAAIR,EAAUQ,OAC9B5H,IAAI4H,IAAI3H,MACnB,IACF4H,OACAL,QAAQ,eAAgB,IAT0C,SCCnE,WAAAM,GACA,OAAYC,KAAAA,QADL,CAIX9R,WAAAA,CACqBuQ,EACAX,GADA3P,KAAIsQ,KAAJA,EACAtQ,KAAQ2P,SAARA,CAAkB,CAGvCmC,IAAAA,CAAKC,GAED,IAAIC,EAEJ,OAHahS,KAAAsQ,MAIT,KAAK3B,EAAcJ,OACfyD,EAAehS,KAAKiS,WACpB,WACCtD,EAAcE,MACfmD,EAAehS,KAAKkS,UACpB,WACCvD,EAAcT,aACf8D,EAAehS,KAAKmS,kBAEnBxD,KAAAA,EAAcN,OACf2D,EAAehS,KAAKoS,iBAEnBzD,KAAAA,EAAcI,QACfiD,EAAehS,KAAKqS,YAExB,MAAA,KAAK1D,EAAcG,SACfkD,EAAehS,KAAKsS,aACpB,MAGAN,QAAAA,EAAehS,KAAKuS,QAG5BP,EAAaQ,KAAKxS,KAAM+R,EA5BT,CA+BXU,YAAAA,EAAeC,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,EAAW,EAAGqE,KAAAA,IACrCY,GAAOnC,IACP1O,GAAO0O,IAEfuB,IACKD,KAAAA,UAAUc,aAAa,YAAuB,UAAAzB,EAAW,IAAMzD,EAAYhH,KAAKmM,OAAOC,KAAMC,KAL7B,CAQjEC,QAAAA,CAAShB,GACb,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EAEfU,KAAAA,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,UACvEnB,KAAAA,SAASc,aAAa,KAAMzB,EAAUwB,EAAInC,EAAO,IACtDvQ,KAAK6R,SAASc,aAAa,KAAMzB,EAAUrP,EAAI0O,EAAO,IACjDsB,KAAAA,SAASc,aAAa,IAAKzB,EAAUX,EAAO,GAAjD,GAT8B,CAclC0C,WAAAA,CAAYlB,GAChB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EAEfU,KAAAA,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACvEnB,KAAAA,SAASc,aAAa,IAAKzB,EAAUwB,IAC1C1S,KAAK6R,SAASc,aAAa,IAAKzB,EAAUrP,IAC1C7B,KAAK6R,SAASc,aAAa,QAASzB,EAAUX,SACzCsB,SAASc,aAAa,SAAUzB,EAAUX,GAA/C,GAViC,CAerC2C,UAAAA,CAAWnB,GACf,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,OAEfF,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QAiH5E,IAAIG,GAAO,EACP7S,EAAI,EACHuR,KAAAA,SAASc,aACV,IAnHSS,CACT,IACA,EACA,SACA,IACA,EACA,UACU,SACV,UACU,SACV,SACA,KACU,SACV,SACU,SACV,SACA,KACO,MACP,UACU,SACV,UACU,SACV,SACA,IACA,SACA,SACA,SACA,SACA,SACA,SACA,IACA,GACA,SACA,IACA,SACA,SACA,IACA,SACA,SACA,SACA,SACA,OACA,SACA,IACA,SACA,SACA,SACA,SACA,SACA,SACA,IACA,SACA,SACA,SACA,SACA,IACA,EACA,SACA,EACA,SACA,IACA,GACU,SACV,UACU,SACV,QACU,SACV,IACA,UACQ,OACR,UACQ,OACR,IACA,SACA,EACA,SACA,SACA,OACA,SACA,IACA,SACA,SACA,GACA,SACA,IACA,UACU,SACV,UACU,SACV,UACO,MACP,IACA,UACU,SACV,UACU,SACV,QACU,SACV,IACA,SACA,EACA,SACA,SACA,SACA,OACA,IACA,EACA,SACA,EACA,SACA,KAOKpL,KAAK+B,GACc,iBAAhB8B,GAGW9B,EAFH,EACJoJ,EAAOpJ,EAAEsJ,eAAiBtJ,EACnBA,IAEXzJ,IACAuL,GAAQ0E,EACRlO,IACI0H,GAAc,GAATzJ,EAAI,EAASoS,EAAI7Q,GAEnBqP,EAAUnH,MAEpBuJ,KAAK,KAtI0B,CA0IpCC,YAAAA,CAAaxB,GACjB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EAEpB/R,KAAKyS,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QAC5EhT,KAAK6R,SAASc,aAAa,IAAKzB,EAAUwB,IACrCb,KAAAA,SAASc,aAAa,IAAKzB,EAAUrP,SACrCgQ,SAASc,aAAa,QAASzB,EAAUX,IACzCsB,KAAAA,SAASc,aAAa,SAAUzB,EAAUX,IAC1CsB,KAAAA,SAASc,aAAa,KAAMzB,EAAUX,EAAO,IAC7CsB,KAAAA,SAASc,aAAa,KAAMzB,EAAUX,EAAO,GAAlD,GAZkC,CAiBtCiD,WAAAA,CAAYzB,GAChB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EACd0B,EAAUlD,SACXkC,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QAC5EhT,KAAK6R,SAASc,aAAa,YAAa,WACnCd,KAAAA,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,EAAI,IAAM4R,OACjC,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,IAAMA,QACN,IAAOA,OACP,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC/D,EAAKA,OACLf,MATE,GARiC,CAwBrCiB,YAAAA,CAAa5B,GACjB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,OAGfU,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACvEnB,KAAAA,SAASc,aAAa,YAAa,WACxC3S,KAAK6R,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,EAThB0O,EAS8B,OAT9BA,EAUG,OAVHA,EAWG,MAXHA,EAWmB,WAXnBA,EAWwC,MAXxCA,EAWwD,OAXxDA,EAYI,EAAK,QAZTA,EAaK,EAAK,OAbVA,EAcG,MAdHA,EAcmB,YAdnBA,EAcyC,OAdzCA,EAc0D,QAd1DA,EAeI,OAfJA,EAgBG,MAhBHA,EAgBmB,YAhBnBA,EAgByC,MAhBzCA,EAgByD,MAT9D,GATkC,CAyBtCgC,OAAAA,EAAUG,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC1BzN,KAAK+S,SAAS,CAAEL,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI1CwE,UAAAA,EAAaS,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC7BzN,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI7CyE,SAAAA,EAAYQ,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC5BzN,KAAKkT,WAAW,CAAER,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI5C0E,WAAAA,EAAcO,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC9BzN,KAAKuT,aAAa,CAAEb,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI9C2E,UAAAA,EAAaM,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC7BzN,KAAKwT,YAAY,CAAEd,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI7C4E,WAAAA,EAAcK,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC9BzN,KAAK2T,aAAa,CAAEjB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI9C6E,YAAAA,EAAeI,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC/BzN,KAAK2T,aAAa,CAAEjB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,UAAWA,GAAY,GAAKhH,KAAKmM,IADd,UChTnD,WAAAhB,GACA,OAAYC,KAAAA,QADL,CAIP,WACA,OAAO7R,KAAK4T,KADR,CAIR7T,WAAAA,CACqBuQ,EACAX,GADA3P,KAAIsQ,KAAJA,OACQX,SAARA,CAAkB,CAGvCmC,IAAAA,CAAKC,GAED,IAAIC,EADS,OAAAhS,KAAAsQ,MAIT,KAAKtB,EAAiBT,OAClByD,EAAehS,KAAKiS,WAExB,MAAA,KAAKjD,EAAiBd,aAClB8D,EAAehS,KAAK6T,iBACpB,WACC7E,EAAiBX,OAClB2D,EAAehS,KAAKoS,WACpB,WACCpD,EAAiBF,SAClBkD,EAAehS,KAAKsS,mBAEnBtD,KAAAA,EAAiBD,QAClBiD,EAAehS,KAAKqS,YAGxB,MAAA,QACIL,EAAehS,KAAKuS,QAG5BP,EAAaQ,KAAKxS,KAAM+R,EAzBT,CA4BXU,YAAAA,EAAeC,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,EAAW,EAAGqE,KAAAA,IACrCY,GAAOnC,IACP1O,GAAO0O,IAEfuB,IACKD,KAAAA,UAAUc,aAAa,YAAuB,UAAAzB,EAAW,IAAMzD,EAAYhH,KAAKmM,OAAOC,KAAMC,MAClG9S,KAAK4T,OAAOjB,aAAa,YAAuB,UAAAzB,EAAW,IAAMzD,EAAYhH,KAAKmM,OAAOC,KAAMC,KAN1B,CASjEC,QAAAA,CAAShB,GACb,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EACd0B,EAAUlD,IAEhBvQ,KAAKyS,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QAC5EhT,KAAK6R,SAASc,aAAa,YAAa,WACxC3S,KAAK6R,SAASc,aACV,IACAe,CAAA,KAAYhB,EAAInC,EAAO,KAAK1O,OAClC0O,EAAO,KAAKA,EAAO,uBAEjBkD,OACFlD,EAAO,EAAIkD,KAAWlD,EAAO,EAAIkD,oBAG1BG,KAAAA,MAAQ5T,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACpEY,KAAAA,MAAMjB,aAAa,YAAa,WAChCiB,KAAAA,MAAMjB,aACP,IACAe,CAAA,KAAYhB,EAAInC,EAAO,KAAK1O,EAAI4R,OACtClD,EAAO,EAAIkD,KAAWlD,EAAO,EAAIkD,kBAH/B,GApB8B,CA8BlCR,WAAAA,CAAYlB,GAChB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EACd0B,EAAUlD,IAEhBvQ,KAAKyS,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QAC5EhT,KAAK6R,SAASc,aAAa,YAAa,WACnCd,KAAAA,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,OACvB0O,OACAA,QACCA,SAEDmC,EAAIe,KAAW5R,EAAI4R,OACnBlD,EAAO,EAAIkD,OACXlD,EAAO,EAAIkD,OACH,EAAIA,EAAXlD,OAGCvQ,KAAK4T,MAAQ5T,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACpEY,KAAAA,MAAMjB,aAAa,YAAa,WAChCiB,KAAAA,MAAMjB,aACP,IACAe,CAAA,KACNhB,EAAIe,KAAW5R,EAAI4R,OACnBlD,EAAO,EAAIkD,OACXlD,EAAO,EAAIkD,QACVlD,EAAO,EAAIkD,MANV,GAxBiC,CAqCrCK,iBAAAA,CAAkB/B,GACtB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EACd0B,EAAUlD,IAEXkC,KAAAA,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QAC5EhT,KAAK6R,SAASc,aAAa,YAAa,WACxC3S,KAAK6R,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,EAAI,IAAM4R,OACjC,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA4B,KAAVA,QAC5D,EAAGA,OACL,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC/D,EAAKA,OACL,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA2B,IAAVA,SAE9Df,EAAI,IAAMe,KAAW5R,EAAI4R,OACzB,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA2B,IAAVA,QAC9D,EAAKA,OACL,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC7D,EAAGA,OACL,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA4B,KAAVA,OAGvDG,KAAAA,MAAQ5T,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACpEY,KAAAA,MAAMjB,aAAa,YAAa,WAChCiB,KAAAA,MAAMjB,aACP,IACAe,CAAA,KACNhB,EAAIe,KAAW5R,EAAI,IAAM4R,OACzB,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA4B,KAAVA,QAC9D,EAAKA,OACL,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,UAC1DA,OACL,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA2B,IAAVA,MAX5D,GAlCuC,CAoD3CD,WAAAA,CAAYzB,GAChB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EACd0B,EAAUlD,IAEhBvQ,KAAKyS,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACvEnB,KAAAA,SAASc,aAAa,YAAa,WACnCd,KAAAA,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,EAAI,IAAM4R,OACjC,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,IAAMA,YACCA,OACP,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC7D,EAAGA,OACLf,SAEAA,EAAI,IAAMe,KAAW5R,EAAI4R,OACzB,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,IAAMA,YACCA,OACP,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC/D,IAAOA,OAGAG,KAAAA,MAAQ5T,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACpEY,KAAAA,MAAMjB,aAAa,YAAa,WAChCiB,KAAAA,MAAMjB,aACP,IACAe,CAAA,KACNhB,EAAI,GAAMe,KAAW5R,EAAI4R,OACzB,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,IAAMA,YACCA,OACP,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC/D,IAAOA,MATL,GA/BiC,CA+CrCE,YAAAA,CAAa5B,GACjB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EACd0B,EAAUlD,IAEhBvQ,KAAKyS,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACvEnB,KAAAA,SAASc,aAAa,YAAa,WACxC3S,KAAK6R,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,EAAI,IAAM4R,OACjC,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,IAAMA,QACF,IAAGA,OACP,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC7D,EAAGA,OACL,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA2B,IAAVA,SAE9Df,EAAI,IAAMe,KAAW5R,EAAI4R,OACzB,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,IAAMA,QACF,IAAGA,OACP,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC7D,EAAGA,OACL,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA4B,KAAVA,YAGvDG,MAAQ5T,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACzEhT,KAAK4T,MAAMjB,aAAa,YAAa,WAChCiB,KAAAA,MAAMjB,aACP,IACAe,CAAA,KACNhB,EAAI,GAAMe,KAAW5R,EAAI4R,OACzB,EAAIA,OACJ,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA2B,IAAVA,OAC7D,IAAMA,QACF,IAAGA,OACP,IAAMA,KAAW,IAAMA,eAAgC,KAAVA,KAA4B,KAAVA,QAC7D,EAAGA,OACL,IAAMA,KAAW,IAAMA,eAA+B,IAAVA,KAA4B,KAAVA,MAV5D,GAhCkC,CAiDtClB,OAAAA,EAAUG,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC1BzN,KAAK+S,SAAS,CAAEL,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI1CwE,UAAAA,EAAaS,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC7BzN,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI7CoG,gBAAAA,EAAmBnB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IACnCzN,KAAK8T,kBAAkB,CAAEpB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAInD2E,UAAAA,EAAaM,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC7BzN,KAAKwT,YAAY,CAAEd,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI7C4E,WAAAA,EAAcK,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC9BzN,KAAK2T,aAAa,CAAEjB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,GADkB,CAI9C6E,YAAAA,EAAeI,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IAC/BzN,KAAK2T,aAAa,CAAEjB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,UAAWA,GAAY,GAAKhH,KAAKmM,IADd,UC9RnD,WAAOhB,GACP,OAAYC,KAAAA,QADL,CAIX9R,WAAAA,CACqBuQ,EACAX,GADA3P,KAAIsQ,KAAJA,EACQX,KAAAA,SAARA,CAAkB,CAGvCmC,IAAAA,CAAKC,GAED,IAAIC,EADS,OAAAhS,KAAAsQ,MAIT,KAAKxC,EAAQC,IACTiE,EAAehS,KAAKuS,QAExB,MAAA,KAAKzE,EAAQE,UACTgE,EAAehS,KAAK+T,cAExB,MAAA,KAAKjG,EAAQO,OACT2D,EAAehS,KAAKoS,WAExB,MAAA,KAAKtE,EAAQQ,cACT0D,EAAehS,KAAKgU,kBAExB,MAAA,KAAKlG,EAAQG,QACT+D,EAAehS,KAAKmS,YAExB,MAAA,KAAKrE,EAAQK,aACT6D,EAAehS,KAAKiU,iBAExB,MAAA,KAAKnG,EAAQM,eACT4D,EAAehS,KAAKkU,mBAExB,MAAA,KAAKpG,EAAQI,aACT8D,EAAehS,KAAK6T,uBAEnB/F,KAAAA,EAAQY,QACTsD,EAAehS,KAAKmU,YAExB,MAAA,KAAKrG,EAAQU,YACTwD,EAAehS,KAAKoU,gBACpB,WACCtG,EAAQW,WACTuD,EAAehS,KAAKqU,eACpB,cAGArC,EAAehS,KAAKiS,WAG5BD,EAAaQ,KAAKxS,KAAM+R,EA3CT,CA8CXU,YAAAA,EAAeC,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,EAAW,EAAGqE,KAAAA,IACrCY,GAAOnC,OACAA,IAEflO,IACKwP,KAAAA,UAAUc,aAAa,YAAuB,UAAAzB,EAAW,IAAMzD,EAAYhH,KAAKmM,OAAOC,KAAMC,KAL7B,CAQjEC,QAAAA,CAAShB,GACb,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,OAEfU,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,UAC5EhT,KAAK6R,SAASc,aAAa,KAAMzB,EAAUwB,EAAInC,EAAO,IACjDsB,KAAAA,SAASc,aAAa,KAAMzB,EAAUrP,EAAI0O,EAAO,IACjDsB,KAAAA,SAASc,aAAa,IAAKzB,EAAUX,EAAO,GAAjD,GAT8B,CAclC0C,WAAAA,CAAYlB,GAChB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EAEfU,KAAAA,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QAC5EhT,KAAK6R,SAASc,aAAa,IAAKzB,EAAUwB,IAC1C1S,KAAK6R,SAASc,aAAa,IAAKzB,EAAUrP,IAC1C7B,KAAK6R,SAASc,aAAa,QAASzB,EAAUX,IACzCsB,KAAAA,SAASc,aAAa,SAAUzB,EAAUX,GAA/C,GAViC,CAgBrC+D,gBAAAA,CAAiBvC,GACrB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EAEfU,KAAAA,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACvEnB,KAAAA,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,OACvB0O,OACAA,EAAO,OACPA,EAAO,KAAKA,EAAO,kBAAkBA,MALnC,GAPsC,CAoB1CgE,kBAAAA,CAAmBxC,GACvB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,OAEfU,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACvEnB,KAAAA,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,OACvB0O,OACAA,QACCA,EAAO,OACRA,EAAO,KAAKA,EAAO,gBAAgBA,EAAO,MAAMA,EAAO,MANrD,GAPwC,CAqB5CiE,uBAAAA,CAAwBzC,GAC5B,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,EAEfU,KAAAA,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,QACvEnB,KAAAA,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,OACvB0O,OACAA,OACAA,KAAQA,gBAAmBA,MAASA,MALlC,GAP6C,CAoBjDkE,mBAAAA,CAAoB1C,GACxB,IAAMxB,KAAAA,EAAMmC,EAAAA,EAAG7Q,EAAAA,GAAKkQ,OAEfU,aAAa,IACXV,EACHD,KAAM,KACF9R,KAAK6R,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,aACvEnB,SAASc,aACV,IACAe,CAAA,KAAYhB,KAAK7Q,OACvB0O,EAAO,OACPA,EAAO,KAAKA,EAAO,eAAeA,EAAO,KAAKA,EAAO,OACrDA,EAAO,QACNA,EAAO,OACRA,EAAO,KAAKA,EAAO,gBAAgBA,EAAO,MAAMA,EAAO,MAPrD,GAPyC,CAqB7CgC,OAAAA,EAAUG,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,IACpBvQ,KAAK+S,SAAS,CAAEL,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,GADF,CAIhCsG,aAAAA,EAAgBrB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,IAE1BvQ,KAAK+S,SAAS,CAAEL,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAMA,GADM,IAAb9J,KAAAiO,cAC4BjH,SAAU,GAFjB,CAKtCwE,UAAAA,EAAaS,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,IACvBvQ,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,GADF,CAInC2G,eAAAA,EAAkB1B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,IAC5B,IAAAoE,EAAkBpE,EAElB5J,EAAsB,GAAfgO,EACPnU,GAAuB,IAAfmU,EACJ9S,GAAmB,IAAf8S,EAER3U,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,GAPG,CAUxC4G,cAAAA,EAAiB3B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,IAC3B,IAAAoE,EAAkBpE,EAElBA,EAAsB,GAAfoE,EACHjC,GAAmB,IAAfiC,KACe,IAAfA,EAEH1B,KAAAA,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,GAPE,CAUvC0G,WAAAA,EAAczB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,IACxBvQ,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAUhH,KAAKmM,GAAK,GADX,CAIpCT,WAAAA,EAAcO,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAMqE,YAAAA,IAC9B,IAAMC,EAAeD,GAAcA,GAAY,EAAG,KAC5CE,IAAAA,EAAgBF,GAAcA,EAAY,EAAE,KAC5CG,EAAcH,GAAcA,EAAY,GAAE,KAGhD,IAAAI,EAAuBH,IAA4BE,GAF7CE,EAAiBL,GAAcA,EAAY,EAAE,MAI5B,IAAnBI,EACAhV,KAAK+S,SAAS,CAAEL,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAIrB,EAAjBuH,GAAuBH,GAAgBC,GAAmBC,GAAeE,EACzEjV,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAItB,IAAnBuH,GACIvH,EAAW,EAEXoH,GAAgBE,EAChBtH,EAAWhH,KAAKmM,GAAK,EACdmC,GAAeD,EACtBrH,EAAWhH,KAAKmM,GACTkC,GAAiBG,IACxBxH,GAAYhH,KAAKmM,GAAK,GAG1B5S,KAAKuU,mBAAmB,CAAE7B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,KAInB,IAAnBuH,IACIvH,EAAW,EAEXsH,EACAtH,EAAWhH,KAAKmM,GAAK,EACdkC,EACPrH,EAAWhH,KAAKmM,GACTqC,IACPxH,GAAYhH,KAAKmM,GAAK,GAG1B5S,KAAKsU,iBAAiB,CAAE5B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IA5Ca,CAiDjDwG,gBAAAA,EAAmBvB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAMqE,YAAAA,IACnC,IAAMC,EAAeD,GAAcA,GAAY,EAAG,KAC5CE,EAAgBF,GAAcA,EAAY,EAAE,KAC5CG,EAAcH,GAAcA,EAAY,GAAE,KAKhD,IAFuBC,IAA4BE,GAF7CE,EAAiBL,GAAcA,EAAY,EAAE,OAMpDC,IAAkBE,IAAeE,GACjCH,IAAmBC,IAAeE,EAE7BjV,KAAK+S,SAAS,CAAEL,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAItCsH,GAAeE,EACfjV,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAIzCsH,IAAgBE,EAEhBjV,KAAKsU,iBAAiB,CAAE5B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SADtBhH,YAKdwO,IAAmBF,GAEnB/U,KAAKsU,iBAAiB,CAAE5B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,UADnBhH,WA7BqC,CAmCtDyN,kBAAAA,EAAqBxB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAMqE,YAAAA,IACrC,IAAMC,EAAeD,GAAcA,GAAY,EAAG,KAC5CE,EAAgBF,GAAcA,EAAY,EAAE,KAC5CG,EAAcH,GAAcA,EAAY,GAAE,KAMzB,IAHAC,IAA4BE,GAF7CE,EAAiBL,GAAcA,EAAY,EAAE,OAMpDG,IAAiBF,IAAgBC,GACjCG,IAAoBJ,IAAgBC,EAE/B9U,KAAK+S,SAAS,CAAEL,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAItCoH,GAAgBC,EAChB9U,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAIzCoH,IAAiBC,EAEjB9U,KAAKsU,iBAAiB,CAAE5B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SADtBA,IAKdqH,IAAkBD,GAElB7U,KAAKsU,iBAAiB,CAAE5B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SADnBhH,KAAAmM,IA7BuC,CAmCxDiB,gBAAAA,EAAmBnB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAMqE,YAAAA,IACnC,IAAMC,EAAeD,GAAcA,GAAY,EAAG,KAC5CE,IAAAA,EAAgBF,GAAcA,EAAY,EAAE,KAC5CG,EAAcH,GAAcA,EAAY,GAAE,KAGhDI,IAAAA,EAAuBH,IAA4BE,GAF7CE,EAAiBL,GAAcA,EAAY,EAAE,MAI5B,IAAnBI,EACAhV,KAAK+S,SAAS,CAAEL,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAIrB,EAAjBuH,GAAuBH,GAAgBC,GAAmBC,GAAeE,EACzEjV,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAItB,IAAnBuH,GACIvH,EAAW,EAEXoH,GAAgBE,EAChBtH,EAAWhH,KAAKmM,GAAK,EACdmC,GAAeD,EACtBrH,EAAWhH,KAAKmM,GACTkC,GAAiBG,IACxBxH,GAAYhH,KAAKmM,GAAK,GAG1B5S,KAAKwU,wBAAwB,CAAE9B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,KAIxB,IAAnBuH,IACIvH,EAAW,EAEXsH,EACAtH,EAAWhH,KAAKmM,GAAK,EACdkC,EACPrH,EAAWhH,KAAKmM,GACTqC,IACPxH,GAAYhH,KAAKmM,GAAK,GAG1B5S,KAAKsU,iBAAiB,CAAE5B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAAA,IA5CkB,CAiDtD2E,UAAAA,EAAaM,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAMqE,YAAAA,IAC7B,IAAMC,EAAeD,GAAcA,GAAY,EAAG,KAC5CE,EAAgBF,GAAcA,EAAY,EAAE,KAC5CG,EAAcH,GAAcA,EAAY,GAAE,KAKhD,IAFuBC,IAA4BE,GAF7CE,EAAiBL,GAAcA,EAAY,EAAE,MAK/C5U,KAAKyU,oBAAoB,CAAE/B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAUhH,KAAKmM,GAAK,IAI1DiC,GAAiBE,EAKjBD,GAAkBG,EAKvBjV,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAJrCzN,KAAKuU,mBAAmB,CAAE7B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAUhH,KAAKmM,GAAK,IAL1D5S,KAAKuU,mBAAmB,CAAE7B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,UAAWhH,KAAKmM,GAAK,GAdX,CA0BhDoB,iBAAAA,EAAoBtB,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAMqE,YAAAA,IACpC,IAAMC,EAAeD,GAAcA,GAAY,EAAG,KAC5CE,EAAgBF,GAAcA,EAAY,EAAE,KAC5CG,EAAcH,GAAcA,EAAY,GAAE,KAKhD,IAFuBC,IAA4BE,GAF7CE,EAAiBL,GAAcA,EAAY,EAAE,MAK/C5U,KAAKyU,oBAAoB,CAAE/B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAUhH,KAAKmM,GAAK,IAI1DiC,GAAiBE,EAKjBD,GAAkBG,EAKvBjV,KAAKiT,YAAY,CAAEP,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAU,IAJrCzN,KAAKwU,wBAAwB,CAAE9B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,SAAUhH,KAAKmM,GAAK,IAL/D5S,KAAKwU,wBAAwB,CAAE9B,EAAAA,EAAG7Q,EAAAA,EAAG0O,KAAAA,EAAM9C,UAAWhH,KAAKmM,GAAK,GAdT,EC7Z5D,IAAAsC,EAA0B,CAC7BC,UAAYC,GACU,iBAAPA,GAAmBA,EAAIC,WAAW,SAAiBC,QAAQC,QAAQH,GACvE,IAAIE,SAAQ,CAACC,EAASC,KACzB,GAAkB,iBAAlBhV,EAA4B,CACxB,MAAMiV,EAAM,IAAIC,iBACZC,OAAS,KACT,MAAMC,EAAS,IAAIC,aACZC,UAAY,KACfP,EAAQK,EAAOG,OAAf,IAEGC,cAAcP,EAAIQ,SAAzB,IAEAC,QAAUT,EAAIU,QAAUV,EAAIW,UAAYZ,EAC5CC,EAAIY,KAAK,MAAOjB,GAAK,GACrBK,EAAIa,aAAe,OACfC,EAAAA,MAZoB,KAarB,CACH,MAAMX,EAAS,IAAIC,WACZC,EAAAA,UAAY,KACfP,EAAQK,EAAOG,OAAf,EAEGC,EAAAA,cAAcZ,EALlB,KASfoB,QAAS,CAACC,EAA6BvG,IAAqE,IAAIoF,SAAQ,CAACC,EAASC,KAC9H,MAAMkB,EAAQ,IAAIC,MAElB,WAAIzG,IACAwG,EAAMxG,YAAcA,GAGxBwG,EAAMf,OAAS,KACXJ,EAAQ,CAAE1F,MAAO6G,EAAM7G,MAAOC,OAAQ4G,EAAM5G,QAA5C,EAEJ4G,EAAMR,QAAUQ,EAAMP,QAAUX,EAEhC,iBAAWiB,EAAiBC,EAAMD,IAAMA,EAEpCvB,EACKC,UAAUsB,GACVG,MAAMxB,GAASsB,EAAMD,IAAMrB,IAC3ByB,MAAMrB,EAHX,KCxCIsB,SAAAA,EAAWC,GAEnBC,IAAAA,EAA6B,GACjC,IAAIC,EAAQ,EAIZ,GAAgB,OAFhBzW,EAAOuW,EAAKG,eAEH,GAAY,CAEX3G,IAAAA,GADN4G,EAAaJ,EAAAK,MAAU,IACVlX,UACGqQ,GAGZyG,EAAQ,CAACK,SAASF,EAAK,GAAKA,EAAK,GAAI,IAAKE,SAASF,EAAK,GAAKA,EAAK,GAAI,IAAKE,SAASF,EAAK,GAAKA,EAAK,GAAI,KAC1F,IAAT5G,IACA0G,EAAQI,SAASF,EAAK,GAAKA,EAAK,GAAI,IAAM,OAG9CH,EAAQ,CAACK,SAASF,EAAK,GAAKA,EAAK,GAAI,IAAKE,SAASF,EAAK,GAAKA,EAAK,GAAI,IAAKE,SAASF,EAAK,GAAKA,EAAK,GAAI,KAC1F,IAAT5G,IACA0G,EAAQI,SAASF,EAAK,GAAKA,EAAK,GAAI,IAAM,MAI7CH,EAAM,KAAIA,EAAM,GAAK,GACrBA,EAAM,KAAIA,EAAM,GAAK,GACrB3S,EAAM,KAAI2S,EAAM,GAAK,EAnBT,KAoBd,MAAK3R,EAAI,6BAA6BiS,KAAKP,IAiB9C,MAAO,CACH3F,MAAO2F,EACPE,MAAAA,GAJJA,EAdUM,GAGVP,GAFAA,EAAQ3R,EAAE,GAAGsM,OAAO6F,MAAM,mBAEZxP,KAAI,CAAC0K,EAAGpS,IACM,MAApBoS,EAAEA,EAAExS,OAAS,IACb6J,EAAU0N,WAAA/E,OACA,IAANpS,EAAgByJ,EACT,IAAJA,GAGD,SAAN2I,EAAqB,EAClB+E,WAAW/E,MAGRxS,OAAgB8W,EAAMU,MAAS,CASjD,OAAO,CACHtG,MAFU,MAAWpJ,KAAI+B,GAAQtD,KAAAkF,IAAQ,EAAElF,KAAEkK,IAAQ,IAAI5G,IAAI1J,aAAasX,SAAE,EAAU,OAAMrE,KAAM,IAGlG2D,MAAOxQ,KAAKkF,IAAI,EAAGlF,KAAKkK,IAAI,EAAGsG,IArDA,CCYvC,IAAAW,EAAmB,CACf,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAGvBC,EAAgB,CACZ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAGVC,MAAAA,EAGL,WAAAlG,GACA,OAAYC,KAAAA,QADL,CAmBX9R,WAAAA,CACY0Q,GAAAzQ,KAAOyQ,QAAPA,EAeHd,KAAAA,SAAWc,EAAQd,SACnBkC,KAAAA,SAAW7R,KAAK2P,SAASqD,gBAAgB,6BAA8B,OAC5EnD,IAAAA,EAAcqB,EAAAT,EAAiBZ,OAC/BC,EAAeoB,EAAAT,EAAiBX,QAChC9P,KAAK6R,SAASc,aAAa,QAAS9C,QAC/BgC,SAASc,aAAa,SAAU7C,GAChC+B,KAAAA,SAASc,aAAa,UAAW,OAAO9C,KAASC,UACjDiI,KAAO/X,KAAK2P,SAASqD,gBAAgB,6BAA8B,aACnEnB,SAASmG,YAAYhY,KAAK+X,MAC1BE,KAAAA,WAAaxH,EAAQwH,YAAc/C,CAXF,CActC,SAAKrF,GACL,YAAYY,QAAQZ,KADf,CAIL,UAAMC,GACN,YAAYW,QAAQX,MADd,CAIJoI,YAAMA,CAACC,GACT,MAAWA,EAAKrS,iBAChB,MAAgBuR,WAAY9Q,EAAO,IAAS,GAAC8K,QAAS,GAAG,IACzD,IAAAoC,EAAgBzT,KAAAyQ,QAAYJ,YAAYE,KACpC6H,EAAgB,CAChBC,UAAW,EACXC,UAAW,EACXzI,MAAO,EACPC,OAAQ,GAKZ,GAFA9P,KAAKmY,GAAKA,EAENnY,KAAKyQ,QAAQiG,MAAO,CAEpBnG,QAAavQ,gBAAWwW,QAAWxW,KAAQyQ,QAAYiG,MAAM1W,KAAMyQ,qBAASP,aAC5E,IAAMF,aAAAA,EAAcuI,uBAAAA,GAA0BvY,KAAOyQ,QAEjDT,GAAAA,EAAahN,MAAQqM,EAAUI,WAAY,CAC3C,MAAYzP,KAAQyQ,2BAA8BzQ,KAAAyQ,QAAYM,+BAChD/Q,KAAQyQ,cAAiB,IAAUgD,GAAczD,EAAAC,aAChDjQ,KAAQyQ,eAAkB,IAAUgD,GAAczD,EAAAC,cAC3DJ,MAAAA,EAAOC,OAAAA,GAAWS,EAExBiI,EAAU1I,EAASD,EAAS4I,EAC5B5I,EAAQ4I,EAEJ3I,EAAS4I,IACT7I,EAASA,EAAQC,EAAU4I,EAC3B5I,EAAS4I,KAGG,CACZL,UAAW,EACXC,UAAW,EACXzI,MAAAA,EACAC,OAAAA,EAlBuC,QAqB3BE,cAChB2I,EAAkB3T,EAAAC,mBAAyB7B,GAK3CgV,ECvHAQ,UACZC,eAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,kBAAAA,EACAvF,QAAAA,EACAtD,OAAAA,IAKA,GACsB,GAAlB0I,GACiB,GAAjBC,GACiB,GAAjBC,GACW,GAAXtF,GACA,EAAItD,GAAU,EAAI4I,EAElB,MAAO,CACHjJ,OAAQ,EACRD,MAAO,EACPyI,UAAW,EACXD,UAAW,GAKnBtU,GAAkD,GAAzBiV,EAAoB,IAAQA,EAAoBvS,KAAKkF,IAAI,EAAGqN,EAAoB,IAGzGC,IAAAA,EAAYxS,KAAOkF,MAAkBkN,GACrCK,EAAYzS,KAAOkK,MAAkBkI,GAGjCM,EAAQ,EACRC,GAASJ,GAAqBD,GAAiB,EAAI5I,EACvD,EAAG,CACC,IAAAkJ,EAAaF,GAAQC,EAASD,GAAQ,EAClCG,EAAU7S,KAAKkF,IAAI,EAAGlF,KAAK8S,KAAKF,EAAU,EAAIlJ,IAClD,GAAImJ,EAAU,GAAQA,IAClBE,IAAAA,EAAU/S,KAAKkF,IAAI,EAAGlF,KAAK8S,KAAMF,EAAUH,EAAUD,EAAS,EAAI9I,IACnD,GAAfqJ,EAAU,GAAQA,IAElBF,EAAUE,EAAUT,EAAeK,EAAQC,EAC1CF,EAAQE,CARd,OASgC,KAA1B5S,KAAKgT,IAAIN,EAAQC,IA4BnB,OAvBP,IADIM,EAAUjT,KAAKkF,IAAI,EAAGlF,KAAK8S,KAAKhJ,EAAO,EAAIJ,KACjC,GAAQuJ,IAEtB,IADIC,EAAUlT,KAAKkF,IAAI,EAAGlF,KAAK8S,KAAMhJ,EAAO2I,EAAUD,EAAS,EAAI9I,KACrD,GAAQwJ,MAGFd,EACPnG,EAAIgH,GAGJhH,EAAIiH,EACJ9X,EAAI6X,GAMPhH,KAFYA,EAAE,EAAIvC,GAASsD,KAGtBmG,EAAOf,EAAkBC,IAFlCe,GAAgBhY,EAAE,EAAIsO,GAASsD,KAIvB5R,EAAIgY,EACJnH,EAAKmH,EAAOf,EAAiBD,GAGpC,CACH/I,OAAQrJ,KAAKmK,MAAgB/O,EAAI,EAAIsO,EAASsD,GAC9C5D,MAAOpJ,KAAKmK,MAAgB8B,EAAI,EAAIvC,EAASsD,GAC7C6E,UAAoBzW,EACpBwW,UAAoB3F,EAtET,CDgHakG,CAAmB,CAC/BE,cAAevI,EAAKV,MACpBgJ,eAAgBtI,EAAKT,OACrBiJ,cAPkBtS,KAAAqT,MAAUC,GAClBxT,EAAYA,EAAQ,IAAS,GAAIA,EAAS,IAAiC,GAA3BoS,EAAYzY,QAAW,IAOjF8Y,kBAAmBzS,EAAQ,GAC3BkN,QAAAA,EACAtD,OAAQH,EAAaG,QAtCT,CA2CxBnQ,KAAKga,sBAGIvJ,QAAQT,aAAahN,MAAQqM,EAAUG,SAC5CxP,KAAKyQ,QAAQiG,OACS,EAAtB0B,EAAcvI,OACS,EAAvBuI,EAActI,cAER9P,KAAKia,UAAU,CAAEpK,MAAOuI,EAAcvI,MAAOC,OAAQsI,EAActI,OAAQvJ,MAAAA,EAAOkN,QAAAA,IAG5FzT,KAAKka,UAAS,CAAC5Z,EAAWgC,MAClBtC,KAAKyQ,QAAQT,aAAahN,MAAQqM,EAAUE,QAExCjP,IAAMiG,EAAQ6R,EAAcC,WAAa,GACzC/X,GAAKiG,EAAQ6R,EAAcC,WAAa,GACxC/V,IAAMiE,EAAQ6R,EAAcE,WAAa,GACzChW,GAAKiE,EAAQ6R,EAAcE,WAAa,GAMvC,EAAJhY,GAAa,EAAJgC,GAAWhC,GAAKiG,EAAQ,GAAS,EAAJjE,GAAWA,GAAKiE,EAAQ,GAAS,EAAJjG,KAMnEmQ,KAAAA,QAAQT,aAAahN,MAAQqM,EAAUG,SAC5CxP,KAAKyQ,QAAQiG,OACS,EAAtB0B,EAAcvI,OACS,EAAvBuI,EAActI,cAER9P,KAAKia,UAAU,CAAEpK,MAAOuI,EAAcvI,MAAOC,OAAQsI,EAActI,OAAQvJ,MAAAA,EAAOkN,QAAAA,SAGvF0G,aA7FqB,CAgG9BH,cAAAA,GACI,IAAMvJ,EAAUzQ,KAAAyQ,QAEZ,GAAAzQ,KAAK6R,UAAYpB,EAAQM,kBAAmB,CAI5C/Q,KAAKoa,YAAY,CACb3J,QAJiBA,oBAAWnD,SAK5B8C,MAJOK,oBAAWL,MAKlBiK,mBAAoB,EACpB3H,EAAG,EACH7Q,EAAG,EACHiO,OAAQW,EAAQX,OAChBD,MAAOY,EAAQZ,MACfyK,KAAM,yBAGJ/J,EAAO9J,KAAAkK,IAAQF,EAAQZ,MAAMY,EAASX,QACtC8B,EAAU5R,KAAA2P,SAAKqD,gBAAS,6BAA4C,SACzEhT,KAAKua,eAAgBva,KAAKwa,qBAAuBxa,KAAKya,WAAW,yBAClEza,KAAK+X,KAAKC,YAAYhY,KAAKua,gBAE3B3I,EAAQe,aAAa,IAAKzB,GAAWT,EAAQZ,MAAQU,GAAQ,IACrDoC,EAAAA,aAAa,IAAKzB,GAAWT,EAAQX,OAASS,GAAQ,IACtDoC,EAAAA,aAAa,QAASzB,EAAUX,IAChCoC,EAAAA,aAAa,SAAUzB,EAAUX,IACzCqB,EAAQe,aAAa,KAAMzB,EAAWX,EAAO,GAAME,EAAQM,kBAAkBH,OAAS,KAEtF5Q,KAAKwa,oBAAoBxC,YAAYpG,EA1BO,CAHtC,CAiCdsI,QAAAA,CAASQ,GACL,IAAK1a,KAAKmY,GACN,MAAM7W,MAAU,0BAGpB,IAAMmP,EAAUzQ,KAAAyQ,YAChBlK,EAAcvG,KAAAmY,GAAOrS,oBAEjBS,EAAQkK,EAAQZ,OAAStJ,EAAQkK,EAAQX,OACzC,MAAMxO,MAAU,2BAGpB,IAAAmS,EAAgBzT,KAAAyQ,QAAYJ,YAAYE,KACpCoK,IAAAA,EAAUlU,KAAKkK,IAAIF,EAAQZ,MAAOY,EAAQX,QAC1CW,EAAQT,aAAahN,MAAQqM,EAAUI,aAAYkL,GAAW,EAAIlH,GAAWhD,EAAQT,aAAaG,QAAU,IAChH,MAAgB1J,KAAOqT,OAAMrJ,EAASZ,MAAStJ,KAAe,KAC9CE,KAAOqT,OAAMrJ,EAASX,OAAUvJ,KAAe,GAC/D,IAAIwH,EAAM,IAAI6M,EAAMnK,EAAQJ,YAAYC,KAAMtQ,KAAK2P,UAC7CkL,EAAa,IAAAD,EAAS9M,EAAQW,WAAWzO,KAAM2P,UAC/CmL,EAAY,IAAAF,EAAS9M,EAAQS,OAAOvO,KAAM2P,WAE/C3P,KAAK+a,SAAU/a,KAAKgb,eAAiBhb,KAAKya,WAAW,kBACjD1C,KAAAA,KAAKC,YAAYhY,KAAK+a,UAEf/K,EAAAA,aAAahN,MAAQqM,EAAUI,cACtCzP,KAAKib,cAAejb,KAAKkb,oBAAsBlb,KAAKya,WAAW,wBAChEza,KAAK+X,KAAKC,YAAYhY,KAAKib,gBAG3B9K,IAAAA,EAAS,EACb,IAAIgL,EAAiB,EACjBC,EAAY7U,IAEJqJ,QAAUV,EAAUE,QAC5Be,EAAUnQ,KAAKyQ,QAAQM,mBAAqB/Q,KAAKyQ,QAAQM,kBAAkBZ,QAAW,EACtFgL,EAAiB1U,KAAKqT,OAAOa,EAAUlH,EAAUlN,EAAQ,EAAI4J,GAAU,GACvEiL,EAAY7U,EAAyB,EAAjB4U,GACb1K,EAAQT,aAAahN,MAAQqM,EAAUI,aAC9C0L,EAAiB,EACjBC,EAAY7U,EAAyB,EAAjB4U,KAGJE,EAAgBF,OACAA,MAGpB5U,IAAW4U,EAC3B,YAA+DC,GAC/D,IAAA7L,EAAY9I,KAAOqT,QAAmB,GAEjC,IAAA,IAAIxZ,EAAI,EAAGA,EAAI8a,EAAW9a,IAAK,CAChCgb,EAAWhb,GAASwH,MAAMsT,GACrB,IAAA,IAAI9Y,EAAI,EAAGA,EAAI8Y,EAAW9Y,IAC3B,GACIhC,EAAI6a,EAAiB,GACrB7a,EAAI8a,EAAYD,GAChB7Y,EAAI6Y,EAAiB,GACrB7Y,EAAI8Y,EAAYD,EAClB,CACE,IAAMI,EAAKjb,IACLkb,EAAKlZ,IACPoY,IAAWA,EAAOa,EAAIC,GAAKF,EAAWhb,GAAGgC,QAAKsK,EAC7C0O,EAAWhb,GAAGgC,KAAOtC,KAAKmY,GAAG9R,OAAOmV,EAAID,EAJ/C,MAYEzR,EAAWxJ,GAAGgC,GAHdmO,EAAQb,QAAUV,EAAUE,QAC5B3I,KAAKgV,MAAMnb,EAAIiP,IAAWjP,EAAIiP,IAAWjN,EAAIiN,IAAWjN,EAAIiN,IAAWA,OAEpD3C,EAKnBtM,GAAK6a,EAAiB,GACtB7a,GAAK8a,EAAYD,GACjB7Y,GAAK6Y,EAAiB,GACtB7Y,GAAK8Y,EAAYD,GAGZ7Y,GAAK6Y,EAAiB,IAAM7a,EAAI6a,EAAiB,GAAK7a,EAAI8a,EAAYD,EAAiB,IACvF7Y,GAAK8Y,EAAYD,GAAkB7a,EAAI6a,EAAiB,GACxD7a,GAAK6a,EAAiB,IAAM7Y,EAAI6Y,EAAiB,GAAK7Y,EAAI8Y,EAAYD,EAAiB,IACvF7a,GAAK8a,EAAYD,GAAkB7Y,EAAI6Y,EAAiB,SAEtCvO,EAMR5M,KAAKmY,GAAG9R,OACE,EAAzB/D,EAAI,EAAI6Y,EAAqB7Y,EAAIA,GAAKiE,EAAQjE,EAAI,EAAI6Y,EAAiB7Y,EAAI6Y,EAClD,EAAzB7a,EAAI,EAAI6a,EAAqB7a,EAAIA,GAAKiG,EAAQjG,EAAI,EAAI6a,EAAiB7a,EAAI6a,EA5CnD,CAkDpCxC,EAAkB3T,EAAAC,oBADHsB,EAAS,OAGxB,IAAK,IAAIjG,EAAI,EAAGA,EAAI8a,EAAW9a,IAAK,CAChCob,EAAY/C,EAAYgD,MAAK5R,GAAGzJ,EAAM6a,EAAoBpR,EAAI,GAAKzJ,EAAI6a,EAAiBpR,EAAI,IACvF,IAAA,IAAIzH,EAAI,EAAGA,EAAI8Y,EAAW9Y,IAC3BsZ,EAAYjD,EAAYgD,MAAK5R,GAAGzH,EAAM6Y,EAAoBpR,EAAI,GAAKzH,EAAI6Y,EAAiBpR,EAAI,IACpE6C,MAApB0O,EAAWhb,GAAGgC,KAEdtC,KAAKib,gBACLlN,EACI2N,GACIE,IACEF,GAAU/C,EAAU,IAAMiD,GAAUjD,EAAU,IAC3CiD,GAAUjD,EAAU,IAAMiD,GAAUjD,EAAUA,EAAUzY,OAAS,IACjEwb,GAAU/C,EAAU,IAAM+C,GAAU/C,EAAUA,EAAUzY,OAAS,IACpE4a,EACAD,GAGTS,EAAWhb,GAAGgC,IAgBnByL,EAAI+D,KAAK,CACLY,EAAGmJ,EAAiBvb,EAAImT,EACxB5R,EAAGia,EAAiBxZ,EAAImR,EACxBlD,KAAMkD,EACNmB,YAAa,CAACmH,EAAiBC,KAAwE,IAA3CV,EAAWhb,EAAIyb,KAAWzZ,EAAI0Z,KAE1FjO,EAAI6D,SAAW5R,KAAKgb,eACpBhb,KAAKgb,cAAchD,YAAYjK,EAAI6D,UAtB/B5R,KAAKib,gBACLlN,EAAI+D,KAAK,CACLY,EAAGmJ,EAAiBvb,EAAImT,EACxB5R,EAAGia,EAAiBxZ,EAAImR,EACxBlD,KAAMkD,EACNmB,YAAa,CAACmH,EAAiBC,KAAwE,IAA3CV,EAAWhb,EAAIyb,KAAWzZ,EAAI0Z,KAG1FjO,EAAI6D,SAAW5R,KAAKkb,oBACpBlb,KAAKkb,mBAAmBlD,YAAYjK,EAAI6D,UA3BxB,CA6ChC5R,KAAKib,eACLjb,KAAKoa,YAAY,CACb3J,QAASA,EAAQT,aAAajI,KAAKuF,SACnC8C,MAAOK,EAAQT,aAAajI,KAAKqI,MACjCiK,mBAAoB,EACpB3H,EA5GImJ,EA6GJha,EA5GIia,EA6GJhM,OAAQmM,EAAaxI,EACrB5D,MAAOoM,EAAaxI,EACpB6G,KAAM,oBAITF,KAAAA,YAAY,CACb3J,QAASA,EAAQJ,aAAa/C,SAC9B8C,MAAOK,EAAQJ,YAAYD,MAC3BiK,mBAAoB,EACpB3H,EAxHQmJ,EAyHRha,EAxHQia,EAyHRhM,OAAQmM,EAAaxI,EACrB5D,MAAOoM,EAAaxI,EACpB6G,KAAM,aAxKqC,CA4KnDH,WAAAA,GACI,IAAKna,KAAKmY,GACN,MAAU7W,MAAM,0BAIpB,IAAMmP,EAAUzQ,KAAAyQ,YADAzQ,KAAA6R,SAIZ,MAAMvQ,MAAU,+BAGpB,IAAAiF,EAAcvG,KAAAmY,GAAOrS,iBACrB2N,EAAgBzT,KAAAyQ,QAAYJ,YAAYE,KAClC2L,IAAoBzI,EACpB0I,IAAiB1I,IACPhN,KAAOqT,OAAMrJ,EAASZ,MAAStJ,KAAe,KAC9CE,KAAOqT,OAAMrJ,EAASX,OAAUvJ,KAAe,GAE/D,CACI,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAGE,KAAKmM,GAAK,GACjB,CAAC,EAAG,GAAInM,KAAKmM,GAAK,IACpBpP,SAAQ,EAAE4Y,EAAQpW,EAAKyH,MACrB,IAAMiF,EAAI2I,EAAae,EAAS3I,GAAWlN,EAAQ,GAC7C1E,EAAIwa,EAAarW,EAAMyN,GAAWlN,EAAQ,GAC5C+V,IAAAA,EAAoBtc,KAAK+a,aACzBwB,EAAyBvc,KAAKgb,cAC9BwB,IAAAA,EAAiBxc,KAAK+a,SAqBtBtK,GApBAgM,EAAsBzc,KAAKgb,eAE3BvK,EAAQI,sBAAsBvD,UAAYmD,EAAQI,sBAAsBT,UACvEkM,EAAmBC,GAA0Bvc,KAAKya,wCAAwC2B,KAAUpW,KACrGhG,KAAK+X,KAAKC,YAAYsE,GACtBE,EAAiBF,EACjBG,EAAsBF,EAEtBvc,KAAKoa,YAAY,CACb3J,QAASA,EAAQI,sBAAsBvD,SACvC8C,MAAOK,EAAQI,sBAAsBT,MACrCiK,mBAAoB5M,EACpBiF,EAAAA,EACA7Q,EAAAA,EACAiO,OAAQoM,EACRrM,MAAOqM,EACP5B,KAAM,wBAAwB8B,KAAUpW,OAI5CyK,EAAQI,sBAAsBP,MACxBoM,EAAgB,IAAAC,IAAmB9L,qBAAQP,KAAyBtQ,KAAM2P,WAElEmC,KAAK,CACfY,EAAAA,EACA7Q,EAAAA,EACA0O,KAAM2L,EACNzO,SAAAA,IAGAiP,EAAc9K,SAAW2K,GACzBA,EAAuBvE,YAAY0E,EAAc9K,SAGjD8K,EAAc3U,MAAQ/H,KAAKkb,oBAC3Blb,KAAKkb,mBAAmBlD,YAAY0E,EAAc3U,UAEnD,CACGgG,EAAM,IAAA6M,IAAUvK,YAAQC,KAAgBtQ,KAAM2P,cAE/C,IAAIrP,EAAI,EAAGA,EAAIsX,EAAW1X,OAAQI,IACnC,IAAK,IAAIgC,EAAI,EAAGA,EAAIsV,EAAWtX,GAAGJ,OAAQoC,IACjCsV,EAAWtX,KAAKgC,IAiBrByL,EAAI+D,KAAK,CACLY,EAAGA,EAAIpS,EAAImT,EACX5R,EAAGA,EAAIS,EAAImR,EACXlD,KAAMkD,EACNmB,YAAa,CAACmH,EAAiBC,MAA+BpE,EAAWtX,EAAIyb,KAAWzZ,EAAI0Z,KAG5FjO,EAAI6D,SAAW2K,GACfA,EAAuBvE,YAAYjK,EAAI6D,UAxBnC5R,KAAKib,gBAAkBpD,EAAQvX,KAAKgC,KACpCyL,EAAI+D,KAAK,CACLY,EAAGA,EAAIpS,EAAImT,EACX5R,EAAGA,EAAIS,EAAImR,EACXlD,KAAMkD,EACNmB,YAAa,CAACmH,EAAiBC,KAC1BpE,EAAWtX,EAAIyb,KAAWzZ,EAAI0Z,KAAanE,EAAQvX,EAAIyb,KAAWzZ,EAAI0Z,KAG3EjO,EAAI6D,SAAW5R,KAAKkb,oBACpBlb,KAAKkb,mBAAmBlD,YAAYjK,EAAI6D,UAmBxD,GAAA5R,KAAKib,cACL,IAAK,IAAI3a,GAAM,EAAM,EAAJA,EAAOA,IACpB,IAAK,IAAIgC,GAAM,EAAM,EAAJA,EAAOA,KACT,GAAPhC,GAAgB,GAALA,IAAiB,GAAPgC,GAAgB,GAALA,IAChCyL,EAAI+D,KAAK,CACLY,EAAGA,EAAIpS,EAAImT,EACX5R,EAAGA,EAAIS,EAAImR,EACXlD,KAAMkD,EACNmB,YAAa,CAACmH,EAAiBC,KAErBR,EAAKlZ,KACE,IAFPiZ,EAAKjb,MAEc,GAANib,IAAmB,GAARC,GAAkB,GAANA,KAAkB,GAAND,GAAkB,GAANA,IAAmB,GAARC,GAAkB,GAANA,MAI7FzN,EAAI6D,SAAW5R,KAAKkb,oBACpBlb,KAAKkb,mBAAmBlD,YAAYjK,EAAI6D,SAnDzD,CA0EP,IAhBInB,EAAQK,mBAAmBxD,UAAYmD,EAAQK,mBAAmBV,UACjEoM,EAAgBC,GAAuBzc,KAAKya,qCAAqC2B,KAAUpW,KAC5FhG,KAAK+X,KAAKC,YAAYwE,GAEtBxc,KAAKoa,YAAY,CACb3J,QAASA,EAAQK,mBAAmBxD,SACpC8C,MAAOK,EAAQK,mBAAmBV,MAClCiK,mBAAoB5M,EACpBiF,EAAGA,EAAc,EAAVe,EACP5R,EAAGA,EAAc,EAAV4R,EACP3D,OAAQqM,EACRtM,MAAOsM,EACP7B,KAAM,qBAAqB8B,KAAUpW,OAIzCyK,EAAQK,mBAAmBR,MACrBsM,EAAa,IAAAC,IAAgB/L,kBAAQR,KAAsBtQ,KAAM2P,WAE5DmC,KAAK,CACZY,EAAGA,EAAc,EAAVe,EACP5R,EAAGA,EAAc,EAAV4R,EACPlD,KAAM4L,EACN1O,SAAAA,IAGAmP,EAAWhL,SAAW6K,GACtBA,EAAoBzE,YAAY4E,EAAWhL,aAE5C,CACG7D,EAAM,IAAA6M,IAAUvK,YAAQC,KAAgBtQ,KAAM2P,UAEpD,IAAK,IAAIrP,EAAI,EAAGA,EAAIuX,EAAQ3X,OAAQI,IAChC,IAAK,IAAIgC,EAAI,EAAGA,EAAIuV,EAAQvX,GAAGJ,OAAQoC,IAC9BuV,EAAQvX,KAAKgC,KAIlByL,EAAI+D,KAAK,CACLY,EAAGA,EAAIpS,EAAImT,EACX5R,EAAGA,EAAIS,EAAImR,EACXlD,KAAMkD,EACNmB,YAAa,CAACmH,EAAiBC,MAA+BnE,EAAQvX,EAAIyb,KAAWzZ,EAAI0Z,KAGzFjO,EAAI6D,SAAW6K,GACfA,EAAoBzE,YAAYjK,EAAI6D,SAjB7C,IAzJJ,CAkLLqI,eAASA,EACXpK,MAAAA,EACAC,OAAAA,EACAvJ,MAAAA,EACAkN,QAAAA,IAOA,IAAMhD,EAAUzQ,KAAAyQ,UACAhK,KAAOqT,OAAMrJ,EAASZ,MAAStJ,KAAe,KAC9CE,KAAOqT,OAAMrJ,EAASX,OAAUvJ,KAAe,GAC3D4J,EAASM,EAAQT,aAAaG,OAASsD,EAWvCqJ,GAVArM,EAAQT,aAAahN,MAAQqM,EAAUI,aAAYU,EAAS,GAC1D4M,EAAK1B,KAAmB9U,EAAYkN,EAAU5D,KAC9CmN,EAAKX,KAAmB9V,EAAYkN,EAAU3D,KAC5CD,KAAWM,EACXL,KAAYK,EAEd2M,QAAW9c,gBAAWmV,UAAW1E,EAAiBiG,OAAM,KAC1DA,EAAoB1W,KAAK2P,SAASqD,gBAAgB,6BAA8B,UAC9EiK,eAAe,+BAAgC,aAAcH,GAAY,IAE3EA,EAASzH,WAAW,uBAAwB,CAM5C,GAJA/U,GADI2C,EAAO6Z,EAAS3Y,UAAU,KACpB+Y,QAAY,OACRja,EAAOkB,YAAY7D,GACjC2C,EAAOA,EAAKkB,UAAU7D,EAAI,GAGjB,WADD6c,EAEAla,EAAsB,mBAARma,KAAqBA,KAAKna,GAAQoa,OAAOC,KAAKra,EAAM,UAAU5C,SAAS,aAGrF4C,EAAO,GAIXA,IACMsa,GAAyBC,IAAbC,WAAaD,gBAAGva,EAAoB,aAChDya,EAAS5V,MAAAwV,KAAMC,EAAKI,qBAAU,SACzBzd,SACPwW,EAAQgH,EAAO,IACT/K,aAAa,WAAY,WApBK,CAyBhD+D,EAAM/D,aAAa,IAAKzB,EAAU6L,IAClCrG,EAAM/D,aAAa,IAAKzB,EAAU8L,IAClCtG,EAAM/D,aAAa,QAAS,GAAGzB,EAAU0M,QACnCjL,EAAAA,aAAa,SAAU,GAAGzB,EAAU2M,QAE1C7d,KAAK6R,SAASmG,YAAYtB,EA7C7B,CAgDO0D,WAAAA,EACJ3J,QAAAA,EACAL,MAAAA,EACAiK,mBAAAA,EACA3H,EAAAA,EACA7Q,EAAAA,EACAiO,OAAAA,EACAD,MAAAA,EACAyK,KAAAA,IAWA,IAAA/J,EAAaV,IAAcA,EAAQC,EACnC,IAAMgO,EAAO9d,KAAA2P,SAAKqD,gBAAS,6BAA4C,WAClEL,EAAAA,aAAa,IAAKzB,EAAUwB,IAC5BC,EAAAA,aAAa,IAAKzB,EAAUrP,MAC5B8Q,aAAa,SAAUzB,EAAUpB,MACjC6C,aAAa,QAASzB,EAAUrB,IACrCiO,EAAKnL,aAAa,QAA2B,kBAAA2H,MAEzC7J,EAAS,CACT,IAAInD,KACAmD,EAAQH,OAASnD,EAAaS,OAC9BN,EAAWtN,KAAK2P,SAASqD,gBAAgB,6BAA8B,kBACvE1F,EAASqF,aAAa,KAAM2H,GAC5BhN,EAASqF,aAAa,gBAAiB,kBACvCrF,EAASqF,aAAa,KAAMzB,EAAUwB,EAAI7C,EAAQ,IAClDvC,EAASqF,aAAa,KAAMzB,EAAUrP,EAAIiO,EAAS,IACnDxC,EAASqF,aAAa,KAAMzB,EAAUwB,EAAI7C,EAAQ,IAClDvC,EAASqF,aAAa,KAAMzB,EAAUrP,EAAIiO,EAAS,IACnDxC,EAASqF,aAAa,IAAKzB,EAAUX,EAAO,QACzC,CAGCwN,EAAKrL,EAAI7C,EAAQ,MACjBmO,EAAKnc,EAAIiO,EAAS,EAClBmO,GAASpO,EAAQ,EACjBqO,GAASpO,EAAS,EAGG,YARRW,EAAEhD,UAAgB,GAAK4M,IAA2B,OAAQzH,OACrCnM,KAAOmM,KAAQ,OAAQA,MAO/BuL,GAAoB,IAAO1X,KAAKmM,IACzDuL,EAAmB,KAAO1X,KAAKmM,IAAMuL,GAAoB,EAAI1X,KAAKmM,IAE9DmL,GAAKlO,EAAQ,EACbmO,GAAMlO,EAAS,EAAKrJ,KAAK2X,IAAI3Q,GAC7BwQ,GAAKpO,EAAQ,EACbqO,GAAMpO,EAAS,EAAKrJ,KAAK2X,IAAI3Q,IAC3B0Q,EAAmB,IAAO1X,KAAKmM,IAAMuL,GAAoB,IAAO1X,KAAKmM,IACvEoL,GAAKlO,EAAS,EACdiO,GAAKlO,EAAQ,EAAIpJ,KAAK2X,IAAI3Q,GAC1ByQ,GAAKpO,EAAS,EACdmO,GAAKpO,EAAQ,EAAIpJ,KAAK2X,IAAI3Q,IACxB0Q,EAAmB,IAAO1X,KAAKmM,IAAMuL,GAAoB,KAAO1X,KAAKmM,IACvEmL,GAAKlO,EAAQ,EACbmO,GAAMlO,EAAS,EAAKrJ,KAAK2X,IAAI3Q,GAC7BwQ,GAAKpO,EAAQ,EACbqO,GAAMpO,EAAS,EAAKrJ,KAAK2X,IAAI3Q,IAC3B0Q,EAAmB,KAAO1X,KAAKmM,IAAMuL,GAAoB,KAAO1X,KAAKmM,KACvEoL,GAAKlO,EAAS,EACdiO,GAAKlO,EAAQ,EAAIpJ,KAAK2X,IAAI3Q,GAC1ByQ,GAAKpO,EAAS,EACdmO,GAAKpO,EAAQ,EAAIpJ,KAAK2X,IAAI3Q,IAGnCH,EAAWtN,KAAK2P,SAASqD,gBAAgB,6BAA8B,kBACvE1F,EAASqF,aAAa,KAAM2H,GAC5BhN,EAASqF,aAAa,gBAAiB,kBAC9BA,EAAAA,aAAa,KAAMzB,EAAU6M,IACtCzQ,EAASqF,aAAa,KAAMzB,EAAU8M,IACtC1Q,EAASqF,aAAa,KAAMzB,EAAU+M,IACtC3Q,EAASqF,aAAa,KAAMzB,EAAUgN,GAvCnC,CA0CPzN,EAAQlD,WAAW/J,SAAS6a,IACxB,IAAMC,EAAOte,KAAA2P,SAAKqD,gBAAS,6BAA4C,UAClEL,aAAa,YAAazB,EAAU,IAAMmN,EAAQtc,YAEvDwc,EAAezH,EAAAuH,EAAkBjO,OAC5BuC,EAAAA,aAAa,aAAc4L,EAAOnN,SACnCmN,EAAOtH,OAAWqH,EAAK3L,aAAa,eAAgB4L,EAAOtH,MAAM5F,QAAQ,IAC7E/D,EAAS0K,YAAYsG,EAArB,IAGJR,EAAKnL,aAAa,OAAgB,QAAA2H,MAC7BvC,KAAAA,KAAKC,YAAY1K,EAhEb,YAkEGwJ,EAAa1G,GACzB0N,EAAKnL,aAAa,OAAQ4L,EAAOnN,OACd,EAAfmN,EAAOtH,OAAW6G,EAAKnL,aAAa,UAAW4L,EAAOtH,MAAM5F,QAAQ,KAG5ErR,KAAK6R,SAASmG,YAAY8F,EAhF7B,CAmFOrD,UAAAA,CAAW+D,GACf,IAAM/N,EAAUzQ,KAAAyQ,QAEVgO,EAAOze,KAAA2P,SAAKqD,gBAAS,6BAA4C,eAClEL,EAAAA,aAAa,KAAM6L,GACxBC,EAAK9L,aAAa,YAAa,oBAC1BA,aAAa,IAAK,KACvB8L,EAAK9L,aAAa,IAAK,KAClBA,EAAAA,aAAa,QAASzB,EAAUT,EAAQZ,QAC7C4O,EAAK9L,aAAa,SAAUzB,EAAUT,EAAQX,UAExC4O,EAAQ1e,KAAA2P,SAAKqD,gBAAS,6BAA4C,MAClEL,aAAa,OAAQ,QAC3B8L,EAAKzG,YAAY0G,GAEV,CAACD,EAAMC,EAfW,EEhtBjC5R,OAAO6R,OAAOnW,EAAca,mBCJMuV,CAC9BrV,KAAO3F,IAGC,MAAMib,EAAO,OACR,IAAIve,EAAI,EAAGA,EAsBDsD,EAtBS1D,OAAQI,IAAK,CACjC,IAAIwe,EAqBOlb,EArBQI,WAAW1D,GACf,IAAXwe,EACAD,EAAK/d,KAAKge,GACM,KAAXA,EACLD,EAAK/d,KAAK,IAAQge,GAAY,EAAI,IAAmB,GAAXA,GAE1B,MAAXA,GAAiC,OAAZA,EAC1BD,EAAK/d,KAAK,IAAQge,GAAY,GAAK,IAASA,GAAY,EAAK,GAAO,IAAmB,GAAXA,IAI5Exe,IAIAwe,EAAW,QAAwB,KAAXA,IAAqB,GAA2B,KAMjElb,EANiDI,WAAW1D,IACnEue,EAAK/d,KAAK,IAAQge,GAAY,GAAK,IAASA,GAAY,GAAM,GAAO,IAASA,GAAY,EAAK,GAAO,IAAmB,GAAXA,GAjBjF,CAsBzC,OA1BSza,KDOJ0a,MAAAA,EAQL,QAAAxO,GACA,GAAIvQ,KAAKgf,MACL,MAAO,CACHnP,MAAO7P,KAAKgf,MAAMnP,MAClBC,OAAQ9P,KAAKgf,MAAMlP,OAJvB,CASR/P,WAAAA,CAAY0Q,GACRzQ,KAAKyQ,QAAUA,EAAUD,EAAgB/D,EAAUiD,EAAgBe,IAAuBf,EAC1F1P,KAAKif,QAFsC,CAK/CA,MAAAA,CAEIxO,GAEIzQ,KAAKud,YAAWvd,KAAKud,UAAU2B,UAAY,SAE1CzO,QAAUA,EAAUD,EAAgB/D,EAAUzM,KAAKyQ,QAASA,IAAuBzQ,KAAKyQ,QAExFzQ,KAAKyQ,QAAQxN,OAIdjD,KAAKyQ,QAAQpH,qBACbyD,OAAO6R,OAAOnW,EAAca,mBAAoBrJ,KAAKyQ,QAAQpH,2BACtDrJ,KAAKyQ,QAAQpH,oBAGxBrJ,KAAKmY,GAAK,IAAI3P,EAAcxI,KAAKyQ,QAAQV,UAAU3M,WAAYpD,KAAKyQ,QAAQV,UAAUtH,wBAC5EzI,aAAQ+P,UAAiB/M,MT3CrCE,SAAkBD,GACpB,QAAQ,GACJ,IAAK,WAAWmH,KAAKnH,GACjB,OAAYmF,EAAAA,QAChB,IAAK,wBAAwBgC,KAAKnH,GAC9B,SAAYoF,aAEX,IAAA,mBAAmB+B,KAAKnH,GACzB,OAAOP,EAAK6F,gBAEZ,OAAO7F,EAAKyG,KAVY,CS2CYjG,MAAYuN,QAAYxN,MAChEjD,KAAKmY,GAAGlP,QAAQjJ,KAAKyQ,QAAQxN,KAAMD,GACnChD,KAAKmY,GAAGzO,OAER1J,KAAKmf,WAELnf,KAAKof,OAAOpf,KAAKud,WAtBkB,CAyBvC6B,MAAAA,CAEI7B,GAEKA,IAIDvd,KAAKgf,OAAOpN,SACZ2L,EAAUvF,YAAYhY,KAAKgf,MAAMpN,SAGrC5R,KAAKud,UAAYA,EAVM,CAuC3B8B,cAAAA,CAEIC,GAEA,IAAKA,EACD,MAAUhe,MAAM,yCAGpBtB,KAAKsf,UAAYA,EACjBtf,KAAKif,QAPuB,CAUhCM,eAAAA,GACIvf,KAAKsf,eAAY1S,EACjB5M,KAAKif,QAFM,CAKTO,eAAAA,GACF,IAAKxf,KAAKmY,GAAI,MAAM7W,MAAU,oBAO9B,GALKtB,KAAKgf,OAAOpN,SAAY5R,KAAKyf,mBAC9Bzf,KAAKmf,iBAEHnf,KAAKyf,kBAENzf,KAAKgf,OAAOpN,QAQjB,MADS,6CAFe8N,IADLC,eACKD,kBAAkB1f,KAAKgf,MAAMpN,QAb1C,CAmBPuN,QAAAA,GACJ,GAAKnf,KAAKmY,GAAV,CAGA,IAAIlS,EAAcjG,KAAKmY,GAAGrS,iBACjB2K,KAAAA,QAAQT,aAAahN,MAAQqM,EAAUI,YAAczP,KAAKyQ,QAAQb,OAASV,EAAUE,SAC1FnJ,GAAe,GAEnB,IADIM,EAAQE,KAAK8S,MAAMvZ,KAAKyQ,QAAQb,OAASV,EAAUE,OAAS3I,KAAKgV,KAAK,GAAK,GAAKxV,IACxE,KAAQM,EAChB4J,IAAAA,EAAUnQ,KAAKyQ,QAAQM,mBAAqB/Q,KAAKyQ,QAAQM,kBAAkBZ,QAAW,OACjFM,QAAQT,aAAahN,MAAQqM,EAAUI,aAAYU,GAAUnQ,KAAKyQ,QAAQT,aAAaG,QAAU,GAC1GI,EAAa9J,KAAA8S,KAASvZ,aAAMqQ,YAAmBE,MAAShK,IAAS4J,IAC5D6O,KAAAA,MAAQ,IAAIlH,EAAM,IAChB9X,KAAKyQ,QACRZ,MAAOU,EACPT,OAAQS,EACRgI,uBAAwBvH,EAAwBhR,KAAKyQ,QAAQV,UAAUtH,wBAG3EzI,KAAKyf,kBAAoBzf,KAAKgf,MAAM9G,OAAOlY,KAAKmY,IAAIvB,MAAK,KAChD5W,KAAKgf,OAAOpN,SACjB5R,KAAKsf,YAAYtf,KAAKgf,MAAMpN,QAAS5R,KAAKyQ,QAA1C,GApBJ,CADY,EEpIb,IAAAmP,EAA4C,CAC/C/P,MAAO,IACPC,OAAQ,IACRK,OAAQ,OCJA0P,EAAAC,GAAAD,IAAAA,EAKX,CALW,YAOgBE,GACxBla,EACA4K,GAEA,IAAMZ,MAAAA,EAAOC,OAAAA,EAAQK,OAAAA,GAAaM,WDJAA,GAW3BC,SAVS,IAAKD,IAEVZ,MAAQnC,OAAOgD,EAAWb,OACrCa,EAAWZ,OAASpC,OAAOgD,EAAWZ,QAC3BK,EAAAA,OAASzC,OAAOgD,EAAWP,QAEvBA,EAAAA,OAAS1J,KAAKkK,IAAID,EAAWb,MAAOa,EAAWZ,UAC1DY,EAAWP,OAAS1J,KAAKkK,IAAID,EAAWb,MAAOa,EAAWZ,SAGvDY,CAXiD,CCKlDsP,CAAsBvT,EAAUmT,EAAsBnP,IACtDmP,EAENK,EAAetQ,SAAAuQ,cAAsB,UACrCD,EAAOpQ,MAAQA,EACRC,EAAAA,OAASA,EAEhB,IAAMS,EAAO9J,KAAAkK,IAAQd,EAAMC,GAAY,IAgCvC,SA9B6BjK,EAAA2Z,YAAkB5I,MAAKuJ,IAChD,GAAKA,EAAL,CAEA,IAAMC,EAAU,6BADFC,KAAKF,GAEbzJ,EAAQ,IAAIC,MAElB,WAAWrB,SAAc,CAACC,EAASC,KAC/BkB,EAAMf,OAAS,KAEX,MAAM2K,EAAW7Z,KAAK8S,KAAM,EAAIhJ,EAAQ9J,KAAKkK,IAAI+F,EAAM7G,MAAO6G,EAAM5G,SAChEyQ,IAAAA,MAEAA,EAAW,IAAIC,gBAAgB9J,EAAM7G,MAAQyQ,EAAU5J,EAAM5G,OAASwQ,EADtE,CAEF,MAAOrY,GAELsY,EAAW5Q,SAASuQ,cAAc,UAClCK,EAAS1Q,MAAQ6G,EAAM7G,MAAQyQ,EAC/BC,EAASzQ,OAAS4G,EAAM5G,OAASwQ,CAJzB,CAMZC,EAASE,WAAW,OAAOxG,UAAUvD,EAAO,EAAG,EAAG6J,EAAS1Q,MAAO0Q,EAASzQ,QAE3EmQ,GAAQQ,WAAW,OAAOxG,UAAUsG,GAAW1Q,EAAQU,GAAQ,GAAIT,EAASS,GAAQ,EAAGA,EAAMA,GAC7FmQ,GAAA,EAEExK,EAAAA,QAAUQ,EAAMP,QAAUX,EAE1BiB,EAAAA,IAAM2J,IAzBhB,KA6BG,CAAEH,OAAAA,EAAQU,qBAAAA,EA1CwB,CA6E7BC,SAAWC,GAACC,EAAaxG,GACrC,IAAAyG,EAAapR,SAAAuQ,cAAsB,KACnCa,EAAKC,SAAW1G,EAChByG,EAAKE,KAAOH,WACHI,KAAKlJ,YAAY+I,GACrBI,EAAAA,QACID,SAAAA,KAAKE,YAAYL,EANuB,IArFjDM,IAAA,MACAvB,GAAAwB,IAAA,MACAxB,GAAAyB,KAAA,OACAzB,GAAA0B,KAAA,OCCG,IAAAC,wEDiDAT,eACHnb,EACA6b,EACAjR,GAEA,IAAI6O,EAAgCO,EAAcyB,IAC9ChH,IAAAA,EAAO,QAEXjW,IACQqd,EAAgBpH,OAChBA,EAAOoH,EAAgBpH,MAEvBoH,EAAgBpC,YAChBA,EAAYoC,EAAgBpC,YAIJ,QAA5BA,EAAUpI,yBACiBsI,cAG3BoB,GADAxL,EAAY,uDAAwDvI,MAChDyN,cAGpB,GADAqH,EAAYC,GAAA/b,EAAmB4K,GAC/B,CACA,IAAMwP,OAAAA,EAAQU,qBAAAA,WACRA,EAENC,GADMxL,EAAM6K,EAAA9K,UAAgB,SAAUmK,KACrB,GAAGhF,KAAQgF,IAJ5B,CArBqC","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,27]}
|