@auth-link/web 2.0.0 → 3.0.0

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/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../node_modules/qrcode-generator/dist/qrcode.mjs", "../src/core.ts", "../src/locales/en.json", "../src/locales/zh-CN.json", "../src/locales/zh-TW.json", "../src/locales/ja.json", "../src/locales/bn.json", "../src/locales/es.json", "../src/locales/fil.json", "../src/locales/hi.json", "../src/locales/id.json", "../src/locales/ms.json", "../src/locales/pt.json", "../src/locales/th.json", "../src/locales/vi.json", "../src/i18n.ts", "../src/view.ts", "../src/modal.ts", "../src/passcode.ts"],
4
- "sourcesContent": ["//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\n//---------------------------------------------------------------------\n// qrcode\n//---------------------------------------------------------------------\n\n/**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\nexport const qrcode = function(typeNumber, errorCorrectionLevel) {\n\n const PAD0 = 0xEC;\n const PAD1 = 0x11;\n\n let _typeNumber = typeNumber;\n const _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n let _modules = null;\n let _moduleCount = 0;\n let _dataCache = null;\n const _dataList = [];\n\n const _this = {};\n\n const makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n const modules = new Array(moduleCount);\n for (let row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (let col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n const setupPositionProbePattern = function(row, col) {\n\n for (let r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (let c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) 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 _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n const getBestMaskPattern = function() {\n\n let minLostPoint = 0;\n let pattern = 0;\n\n for (let i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n const lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n const setupTimingPattern = function() {\n\n for (let r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (let c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n const setupPositionAdjustPattern = function() {\n\n const pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (let i = 0; i < pos.length; i += 1) {\n\n for (let j = 0; j < pos.length; j += 1) {\n\n const row = pos[i];\n const col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (let r = -2; r <= 2; r += 1) {\n\n for (let c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n const setupTypeNumber = function(test) {\n\n const bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (let i = 0; i < 18; i += 1) {\n const mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (let i = 0; i < 18; i += 1) {\n const mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n const setupTypeInfo = function(test, maskPattern) {\n\n const data = (_errorCorrectionLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (let i = 0; i < 15; i += 1) {\n\n const mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (let i = 0; i < 15; i += 1) {\n\n const mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n const mapData = function(data, maskPattern) {\n\n let inc = -1;\n let row = _moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n const maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (let col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (let c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n let dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n const mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n const createBytes = function(buffer, rsBlocks) {\n\n let offset = 0;\n\n let maxDcCount = 0;\n let maxEcCount = 0;\n\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n\n for (let r = 0; r < rsBlocks.length; r += 1) {\n\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\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\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(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\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n const data = new Array(totalCodeCount);\n let index = 0;\n\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\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\n return data;\n };\n\n const createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n const buffer = qrBitBuffer();\n\n for (let i = 0; i < dataList.length; i += 1) {\n const data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n let newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n let typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n const buffer = qrBitBuffer();\n\n for (let i = 0; i < _dataList.length; i++) {\n const data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n let qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (let r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (let c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n let opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n let c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n const c = Math.floor( (x - min) / cellSize);\n const r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n\n let img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n const escapeXml = function(s) {\n let escaped = '';\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charAt(i);\n switch(c) {\n case '<': escaped += '&lt;'; break;\n case '>': escaped += '&gt;'; break;\n case '&': escaped += '&amp;'; break;\n case '\"': escaped += '&quot;'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n const _createHalfASCII = function(margin) {\n const cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n let y, x, r1, r2, p;\n\n const blocks = {\n '\u2588\u2588': '\u2588',\n '\u2588 ': '\u2580',\n ' \u2588': '\u2584',\n ' ': ' '\n };\n\n const blocksLastLineNoMargin = {\n '\u2588\u2588': '\u2580',\n '\u2588 ': '\u2580',\n ' \u2588': ' ',\n ' ': ' '\n };\n\n let ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '\u2588';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '\u2588';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('\u2580');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n let y, x, r, p;\n\n const white = Array(cellSize+1).join('\u2588\u2588');\n const black = Array(cellSize+1).join(' ');\n\n let ascii = '';\n let line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n const length = _this.getModuleCount();\n for (let row = 0; row < length; row++) {\n for (let col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrcode.stringToBytes\n//---------------------------------------------------------------------\n\nqrcode.stringToBytes = 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//---------------------------------------------------------------------\n// qrcode.createStringToBytes\n//---------------------------------------------------------------------\n\n/**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\nqrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n const unicodeMap = function() {\n\n const bin = base64DecodeInputStream(unicodeData);\n const read = function() {\n const b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n let count = 0;\n const unicodeMap = {};\n while (true) {\n const b0 = bin.read();\n if (b0 == -1) break;\n const b1 = read();\n const b2 = read();\n const b3 = read();\n const k = String.fromCharCode( (b0 << 8) | b1);\n const v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n const unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n const bytes = [];\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n const b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n};\n\n//---------------------------------------------------------------------\n// QRMode\n//---------------------------------------------------------------------\n\nconst QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n};\n\n//---------------------------------------------------------------------\n// QRErrorCorrectionLevel\n//---------------------------------------------------------------------\n\nconst QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n};\n\n//---------------------------------------------------------------------\n// QRMaskPattern\n//---------------------------------------------------------------------\n\nconst QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n};\n\n//---------------------------------------------------------------------\n// QRUtil\n//---------------------------------------------------------------------\n\nconst QRUtil = function() {\n\n const 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 ];\n const G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n const G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n const G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n const _this = {};\n\n const getBCHDigit = function(data) {\n let digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n let d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n let d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n let a = qrPolynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n const moduleCount = qrcode.getModuleCount();\n\n let lostPoint = 0;\n\n // LEVEL1\n\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount; col += 1) {\n\n let sameCount = 0;\n const dark = qrcode.isDark(row, col);\n\n for (let r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (let c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\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) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\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\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\n // LEVEL4\n\n let darkCount = 0;\n\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\n const ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// QRMath\n//---------------------------------------------------------------------\n\nconst QRMath = function() {\n\n const EXP_TABLE = new Array(256);\n const LOG_TABLE = new Array(256);\n\n // initialize tables\n for (let i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (let i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (let i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n const _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrPolynomial\n//---------------------------------------------------------------------\n\nconst qrPolynomial = function(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n const _num = function() {\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n const _num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n const _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n const num = new Array(_this.getLength() + e.getLength() - 1);\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\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n const ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n const num = new Array(_this.getLength() );\n for (let i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (let i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// QRRSBlock\n//---------------------------------------------------------------------\n\nconst QRRSBlock = function() {\n\n const RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\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\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n const qrRSBlock = function(totalCount, dataCount) {\n const _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n const _this = {};\n\n const getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n const rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n const length = rsBlock.length / 3;\n\n const list = [];\n\n for (let i = 0; i < length; i += 1) {\n\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n\n for (let j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrBitBuffer\n//---------------------------------------------------------------------\n\nconst qrBitBuffer = function() {\n\n const _buffer = [];\n let _length = 0;\n\n const _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n const bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (let i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n const bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrNumber\n//---------------------------------------------------------------------\n\nconst qrNumber = function(data) {\n\n const _mode = QRMode.MODE_NUMBER;\n const _data = data;\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n const data = _data;\n\n let i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n const strToNum = function(s) {\n let num = 0;\n for (let i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n const chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrAlphaNum\n//---------------------------------------------------------------------\n\nconst qrAlphaNum = function(data) {\n\n const _mode = QRMode.MODE_ALPHA_NUM;\n const _data = data;\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n const s = _data;\n\n let i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n const getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case '\\u0020' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qr8BitByte\n//---------------------------------------------------------------------\n\nconst qr8BitByte = function(data) {\n\n const _mode = QRMode.MODE_8BIT_BYTE;\n const _data = data;\n const _bytes = qrcode.stringToBytes(data);\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (let i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrKanji\n//---------------------------------------------------------------------\n\nconst qrKanji = function(data) {\n\n const _mode = QRMode.MODE_KANJI;\n const _data = data;\n\n const stringToBytes = qrcode.stringToBytes;\n !function(c, code) {\n // self test for sjis support.\n const test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n const _bytes = stringToBytes(data);\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n const data = _bytes;\n\n let i = 0;\n\n while (i + 1 < data.length) {\n\n let c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n};\n\n//=====================================================================\n// GIF Support etc.\n//\n\n//---------------------------------------------------------------------\n// byteArrayOutputStream\n//---------------------------------------------------------------------\n\nconst byteArrayOutputStream = function() {\n\n const _bytes = [];\n\n const _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (let i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (let i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n let s = '';\n s += '[';\n for (let i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// base64EncodeOutputStream\n//---------------------------------------------------------------------\n\nconst base64EncodeOutputStream = function() {\n\n let _buffer = 0;\n let _buflen = 0;\n let _length = 0;\n let _base64 = '';\n\n const _this = {};\n\n const writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n const encode = function(n) {\n if (n < 0) {\n throw 'n:' + n;\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n } else {\n throw 'n:' + n;\n }\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n const padlen = 3 - _length % 3;\n for (let i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// base64DecodeInputStream\n//---------------------------------------------------------------------\n\nconst base64DecodeInputStream = function(str) {\n\n const _str = str;\n let _pos = 0;\n let _buffer = 0;\n let _buflen = 0;\n\n const _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n const c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n const n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n const decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// gifImage (B/W)\n//---------------------------------------------------------------------\n\nconst gifImage = function(width, height) {\n\n const _width = width;\n const _height = height;\n const _data = new Array(width * height);\n\n const _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n const lzwMinCodeSize = 2;\n const raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n let offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n const bitOutputStream = function(out) {\n\n const _out = out;\n let _bitLength = 0;\n let _bitBuffer = 0;\n\n const _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n const getLZWRaster = function(lzwMinCodeSize) {\n\n const clearCode = 1 << lzwMinCodeSize;\n const endCode = (1 << lzwMinCodeSize) + 1;\n let bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n const table = lzwTable();\n\n for (let i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n const byteOut = byteArrayOutputStream();\n const bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n let dataIndex = 0;\n\n let s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n const c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n const lzwTable = function() {\n\n const _map = {};\n let _size = 0;\n\n const _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n};\n\nconst createDataURL = function(width, height, getPixel) {\n const gif = gifImage(width, height);\n for (let y = 0; y < height; y += 1) {\n for (let x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n const b = byteArrayOutputStream();\n gif.write(b);\n\n const base64 = base64EncodeOutputStream();\n const bytes = b.toByteArray();\n for (let i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n};\n\nexport default qrcode;\n\nexport const stringToBytes = qrcode.stringToBytes;\n", "import qrcode from 'qrcode-generator';\nimport type { AuthLinkClient, Confirmation, DisplayCode, Events, Mode, Result, Snapshot, Ticket } from './types.js';\n\nconst token = /^[A-Za-z0-9_-]{43}$/;\nexport class AuthLinkError extends Error {\n constructor(public readonly code: string) { super(code); this.name = 'AuthLinkError'; }\n}\nfunction fail(code: string): never { throw new AuthLinkError(code); }\nfunction object(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) fail('INVALID_RESPONSE');\n return value as Record<string, unknown>;\n}\nexport function validateDisplayCode(value: unknown): DisplayCode {\n const m = object(value);\n const span = Date.parse(String(m.validUntil)) - Date.parse(String(m.serverTime));\n if (typeof m.value !== 'string' || !/^\\d{6}$/.test(m.value) || m.periodSeconds !== 30 ||\n !Number.isFinite(span) || span <= 0 || span > 30_000 ||\n 'seed' in m || 'secret' in m || 'key' in m) fail('INVALID_DISPLAY_CODE');\n return { value: m.value, serverTime: String(m.serverTime), validUntil: String(m.validUntil), periodSeconds: 30 };\n}\nexport function validateTicket(value: unknown, expectedMode?: Mode, trustedOrigin?: string): Ticket {\n const m = object(value);\n if ('pairing' in m || 'seed' in m || 'apiKey' in m) fail('SERVER_SECRET_FORBIDDEN');\n if (typeof m.requestId !== 'string' || !token.test(m.requestId) ||\n !['bind', 'confirm'].includes(String(m.purpose)) || (expectedMode && m.purpose !== expectedMode) ||\n typeof m.qr !== 'string' || m.qr.length > 4096 ||\n typeof m.pairingCode !== 'string' || !/^\\d{6}$/.test(m.pairingCode)) fail('INVALID_TICKET');\n let qr: Record<string, unknown>;\n try { qr = object(JSON.parse(m.qr)); } catch { return fail('INVALID_QR'); }\n let origin: URL;\n try { origin = new URL(String(qr.origin)); } catch { return fail('INVALID_QR'); }\n if (qr.v !== 1 || qr.requestId !== m.requestId || typeof qr.token !== 'string' || !token.test(qr.token) ||\n origin.protocol !== 'https:' || origin.origin !== qr.origin || origin.origin.length > 512 || origin.username || origin.password ||\n (trustedOrigin && origin.origin !== trustedOrigin)) fail('UNTRUSTED_QR');\n const displayCode = m.displayCode === undefined ? undefined : validateDisplayCode(m.displayCode);\n const expiry = Date.parse(String(m.expiresAt));\n const now = displayCode ? Date.parse(displayCode.serverTime) : Date.now();\n if (!Number.isFinite(expiry) || expiry > now + 360_000) fail('INVALID_EXPIRY');\n return { requestId: m.requestId, purpose: m.purpose as Mode, qr: m.qr, pairingCode: m.pairingCode,\n expiresAt: String(m.expiresAt), ...(displayCode ? { displayCode } : {}) };\n}\nexport function qrImage(ticket: Ticket): string {\n const value = validateTicket(ticket);\n const payload = JSON.parse(value.qr) as { v: number; origin: string; requestId: string; token: string };\n const qr = qrcode(0, 'M');\n qr.addData(JSON.stringify({ v: 1, origin: payload.origin, requestId: payload.requestId, token: payload.token }), 'Byte');\n qr.make();\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(qr.createSvgTag({ cellSize: 4, margin: 16, scalable: true }))}`;\n}\n\nexport interface ClientOptions {\n /** Application backend URL, never the AuthLink tenant API. Defaults to /api/authlink. */\n baseUrl?: string;\n /** Explicit extra backend origins, e.g. https://api.example.com (no path or wildcard). */\n allowedBackendOrigins?: readonly string[];\n /** Defaults to same-origin, or omit when accessToken is provided. */\n credentials?: RequestCredentials;\n /** Required for cookie/session authentication, including mixed cookie + Bearer mode. */\n csrfToken?: () => string | Promise<string>;\n /** Defaults to X-CSRF-Token; adapt this to your backend framework. */\n csrfHeaderName?: string;\n /** Current website login token, read on each request. Never an AuthLink tenant key. */\n accessToken?: () => string | Promise<string>;\n /** Extra headers. SDK-controlled authentication and protocol headers cannot be replaced. */\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n authLinkOrigin?: string;\n fetch?: typeof fetch;\n}\nfunction backendProtocol(url: URL): boolean {\n return url.protocol === 'https:' || (url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname));\n}\nasync function limitedJson(response: Response): Promise<unknown> {\n const reader = response.body?.getReader();\n if (!reader) fail('INVALID_RESPONSE');\n const chunks: Uint8Array[] = []; let size = 0;\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n size += value.length;\n if (size > 65_536) { await reader.cancel(); fail('RESPONSE_TOO_LARGE'); }\n chunks.push(value);\n }\n } finally { reader.releaseLock(); }\n const bytes = new Uint8Array(size); let at = 0;\n for (const chunk of chunks) { bytes.set(chunk, at); at += chunk.length; }\n try { return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes)); }\n catch { return fail('INVALID_RESPONSE'); }\n}\nexport function createBackendCall(options: ClientOptions) {\n if ('apiKey' in options || 'secret' in options) fail('SERVER_SECRET_FORBIDDEN');\n const base = options.baseUrl ?? '/api/authlink';\n const allowedOrigins = new Set(options.allowedBackendOrigins ?? []);\n for (const origin of allowedOrigins) {\n let url: URL;\n try { url = new URL(origin); } catch { return fail('INVALID_BACKEND_ORIGIN'); }\n if (url.origin !== origin || url.hostname.includes('*') || !backendProtocol(url)) fail('INVALID_BACKEND_ORIGIN');\n }\n const credentials = options.credentials ?? (options.accessToken ? 'omit' : 'same-origin');\n if (!['omit', 'same-origin', 'include'].includes(credentials)) fail('INVALID_CREDENTIALS');\n const csrfHeaderName = options.csrfHeaderName ?? 'X-CSRF-Token';\n const reserved = new Set(['accept', 'content-type', 'authorization', 'idempotency-key']);\n try { new Headers([[csrfHeaderName, 'test']]); } catch { return fail('INVALID_CSRF_HEADER'); }\n if (reserved.has(csrfHeaderName.toLowerCase())) fail('INVALID_CSRF_HEADER');\n reserved.add(csrfHeaderName.toLowerCase());\n const call = async (path: string, body: unknown, signal?: AbortSignal, key?: string): Promise<unknown> => {\n if (typeof window === 'undefined') fail('BROWSER_REQUIRED');\n let url: URL;\n try { url = new URL(base.replace(/\\/+$/, '') + path, window.location.href); } catch { return fail('INVALID_BASE_URL'); }\n if (url.username || url.password || url.search || url.hash || !backendProtocol(url)) fail('INVALID_BASE_URL');\n if (url.origin !== window.location.origin && !allowedOrigins.has(url.origin)) fail('BACKEND_ORIGIN_NOT_ALLOWED');\n signal?.throwIfAborted();\n const controller = new AbortController();\n const cancel = () => controller.abort(signal?.reason);\n signal?.addEventListener('abort', cancel, { once: true });\n const timeout = setTimeout(() => controller.abort(), 10_000);\n try {\n const headers = new Headers(typeof options.headers === 'function'\n ? await abortable(Promise.resolve().then(options.headers), controller.signal) : options.headers);\n for (const name of reserved) if (headers.has(name)) fail('RESERVED_HEADER');\n headers.set('Accept', 'application/json'); headers.set('Content-Type', 'application/json');\n if (key) headers.set('Idempotency-Key', key);\n if (options.csrfToken) {\n const csrf = await abortable(Promise.resolve().then(options.csrfToken), controller.signal);\n if (typeof csrf !== 'string' || !csrf.trim() || csrf.length > 1024 || /[\\r\\n]/.test(csrf)) fail('CSRF_REQUIRED');\n headers.set(csrfHeaderName, csrf);\n } else if (!options.accessToken || credentials !== 'omit') fail('CSRF_REQUIRED');\n if (options.accessToken) {\n const accessToken = await abortable(Promise.resolve().then(options.accessToken), controller.signal);\n if (typeof accessToken !== 'string' || !accessToken || /\\s/.test(accessToken)) fail('ACCESS_TOKEN_REQUIRED');\n headers.set('Authorization', `Bearer ${accessToken}`);\n }\n controller.signal.throwIfAborted();\n const response = await (options.fetch ?? globalThis.fetch)(url, { method: 'POST', credentials,\n redirect: 'error', cache: 'no-store', signal: controller.signal,\n headers, body: JSON.stringify(body) });\n if (!response.ok) {\n let code = '';\n try { code = String(object(await limitedJson(response)).code ?? '').replace(/^AUTHLINK_/, ''); } catch {}\n if (['CONFIRMATION_CODE_INVALID', 'CONFIRMATION_CODE_LOCKED', 'APPROVAL_REQUIRED', 'REQUEST_EXPIRED', 'PASSCODE_INVALID', 'PASSCODE_USED', 'PASSCODE_LOCKED', 'OTP_NOT_CONFIGURED'].includes(code)) fail(code);\n fail(response.status === 401 || response.status === 403 ? 'CMS_UNAUTHORIZED' : 'CMS_REQUEST_FAILED');\n }\n return await limitedJson(response);\n } catch (error) {\n if (error instanceof AuthLinkError) throw error;\n if (signal?.aborted) throw signal.reason;\n return fail('NETWORK_ERROR');\n } finally { clearTimeout(timeout); signal?.removeEventListener('abort', cancel); }\n };\n return call;\n}\n\nexport function createAuthLinkClient(options: ClientOptions): AuthLinkClient {\n const call = createBackendCall(options);\n return {\n async create(mode, { idempotencyKey, signal }) {\n if (!['bind', 'confirm'].includes(mode) || !token.test(idempotencyKey)) fail('INVALID_CREATE_OPTIONS');\n return validateTicket(await call('/requests', { purpose: mode }, signal, idempotencyKey), mode, options.authLinkOrigin);\n },\n async result(ticket, signal, confirmationCode) {\n if (!token.test(ticket.requestId)) fail('INVALID_TICKET');\n if (typeof confirmationCode !== 'string' || !/^[0-9]{6}$/.test(confirmationCode)) fail('CONFIRMATION_CODE_REQUIRED');\n return await call(`/requests/${ticket.requestId}/result`, { confirmationCode }, signal) as Result;\n },\n };\n}\n\nexport function requestKey(): string {\n const bytes = globalThis.crypto.getRandomValues(new Uint8Array(32));\n return btoa(String.fromCharCode(...bytes)).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\nexport function initialSnapshot(): Snapshot {\n return { status: 'idle', code: null, secondsRemaining: 0, codeSecondsRemaining: 0, error: null };\n}\nfunction abortable<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n signal.throwIfAborted();\n let cancel: () => void;\n const abort = new Promise<never>((_, reject) => {\n cancel = () => reject(signal.reason);\n signal.addEventListener('abort', cancel, { once: true });\n });\n return Promise.race([promise, abort]).finally(() => signal.removeEventListener('abort', cancel));\n}\nexport interface ObserveOptions extends Events {\n onReady?: (submit: (confirmationCode: string) => Promise<void>) => void;\n /** Presentation-only timing from the same monotonic clock as code expiry. */\n onCodeTiming?: (remainingMs: number) => void;\n expectedMode?: Mode;\n client: AuthLinkClient;\n signal: AbortSignal;\n intervalMs?: number;\n onUpdate: (value: Snapshot) => void;\n}\n/** Observe a request CREATED BY your backend. Mounting widgets never creates requests. */\nexport async function observeRequest(input: Ticket, options: ObserveOptions): Promise<void> {\n const { client, signal, onUpdate } = options;\n let ticket: Ticket;\n try { ticket = validateTicket(input, options.expectedMode); }\n catch (error) { if (!signal.aborted) options.onError?.(error as Error); return; }\n const expiry = Date.parse(ticket.expiresAt);\n const deadline = performance.now() + Math.max(0, expiry - Date.now());\n let ended = false, busy = false;\n let done!: () => void;\n const finished = new Promise<void>(resolve => { done = resolve; });\n const controller = new AbortController();\n const cancel = () => { ended = true; controller.abort(); done(); };\n signal.addEventListener('abort', cancel, { once: true });\n let snapshot: Snapshot = initialSnapshot();\n const remaining = () => Math.max(0, (deadline - performance.now()) / 1000);\n const tick = () => {\n if (ended || signal.aborted) return;\n if (remaining() <= 0) {\n ended = true; controller.abort();\n onUpdate({ ...snapshot, status: 'expired', code: null, submitting: false });\n void Promise.resolve().then(() => options.onExpired?.()).catch(() => options.onError?.(new AuthLinkError('CALLBACK_FAILED'))); done(); return;\n }\n snapshot = { ...snapshot, status: 'pending', code: ticket.pairingCode,\n secondsRemaining: Math.ceil(remaining()), codeSecondsRemaining: Math.ceil(remaining()), submitting: busy };\n onUpdate(snapshot);\n };\n const submit = async (confirmationCode: string) => {\n if (ended || signal.aborted || busy) return;\n if (!/^[0-9]{6}$/.test(confirmationCode)) {\n snapshot = { ...snapshot, error: new AuthLinkError('CONFIRMATION_CODE_REQUIRED') }; tick(); return;\n }\n if (remaining() <= 0) { tick(); return; }\n busy = true; snapshot = { ...snapshot, error: null }; tick();\n try {\n const value = object(await abortable(client.result(ticket, controller.signal, confirmationCode), controller.signal));\n if (ended || signal.aborted) return;\n if (value.requestId !== ticket.requestId) fail('REQUEST_MISMATCH');\n if (value.status === 'confirmed') {\n if (!token.test(String(value.verificationId)) || value.authenticationPolicy !== 'device-presence.v1' ||\n value.expiresAt !== ticket.expiresAt || value.purpose !== ticket.purpose || remaining() <= 0 ||\n 'action' in value || 'transactionHash' in value) fail('INVALID_CONFIRMATION');\n ended = true; onUpdate({ ...snapshot, status: 'confirmed', code: null, submitting: false });\n try { await options.onConfirmed?.(value as unknown as Confirmation); }\n catch { options.onError?.(new AuthLinkError('CALLBACK_FAILED')); }\n done();\n } else if (value.status === 'rejected' || value.status === 'expired') {\n ended = true; onUpdate({ ...snapshot, status: value.status, code: null, submitting: false });\n try {\n if (value.status === 'rejected') await options.onRejected?.({ status: 'rejected', code: 'REJECTED', requestId: ticket.requestId, purpose: ticket.purpose });\n else await options.onExpired?.();\n } catch { options.onError?.(new AuthLinkError('CALLBACK_FAILED')); }\n finally { done(); }\n } else { fail('CONFIRMATION_NOT_READY'); }\n } catch (error) {\n if (!ended && !signal.aborted) {\n const raw = error instanceof Error ? error : new AuthLinkError('NETWORK_ERROR');\n const code = raw.message.replace(/^AUTHLINK_/, '');\n const failure = ['CONFIRMATION_CODE_LOCKED', 'CONFIRMATION_CODE_INVALID', 'APPROVAL_REQUIRED', 'REQUEST_EXPIRED'].includes(code) ? new AuthLinkError(code) : raw;\n snapshot = { ...snapshot, error: failure };\n if (code === 'CONFIRMATION_CODE_LOCKED' || code === 'REQUEST_EXPIRED') {\n ended = true;\n onUpdate({ ...snapshot, code: null, submitting: false, status: code === 'REQUEST_EXPIRED' ? 'expired' : 'error' });\n if (code === 'REQUEST_EXPIRED') void Promise.resolve().then(() => options.onExpired?.()).catch(() => options.onError?.(new AuthLinkError('CALLBACK_FAILED')));\n else options.onError?.(failure);\n done();\n } else options.onError?.(failure);\n }\n } finally { busy = false; tick(); }\n };\n tick(); options.onReady?.(submit);\n // This timer only updates local expiry/UI. No HTTP request occurs on mount.\n const timer = setInterval(tick, 1000);\n if (signal.aborted) cancel();\n try { await finished; }\n finally { clearInterval(timer); controller.abort(); signal.removeEventListener('abort', cancel); }\n}\n", "{\n \"bind\": \"Bind your phone\",\n \"confirm\": \"Confirm verification\",\n \"scan\": \"Scan with AuthLink\",\n \"code\": \"Matching digits\",\n \"help\": \"Approve in the App, then enter its 6-digit confirmation code here.\",\n \"waiting\": \"Waiting for your phone\",\n \"loading\": \"Connecting\",\n \"confirmed\": \"Confirmed\",\n \"rejected\": \"Rejected\",\n \"expired\": \"Request expired\",\n \"error\": \"Verification is unavailable\",\n \"retry\": \"Retry\",\n \"refresh\": \"New request\",\n \"updating\": \"Updating code\",\n \"close\": \"Close\",\n \"cancel\": \"Cancel\",\n \"autoUpdate\": \"Code updates automatically every 30 seconds\",\n \"expiring\": \"Request expiring soon\",\n \"confirmationCode\": \"App confirmation code\",\n \"submitCode\": \"Verify\",\n \"codeError\": \"The code could not be verified. Check the code and approval, then retry.\",\n \"codeLocked\": \"Too many incorrect codes. Close this window and start a new request.\",\n \"otpCode\": \"App verification code\",\n \"otpHelp\": \"Open AuthLink and enter this account\u2019s current six-digit code. No approval is needed.\",\n \"otpWaiting\": \"Enter the current code\",\n \"otpError\": \"Verification failed. Check the account; wait for a new code if already used. After repeated failures, try again later.\",\n \"otpSetup\": \"Enable verification codes on this account\u2019s card in the app first.\"\n}\n", "{\n \"bind\": \"\u7ED1\u5B9A\u624B\u673A\",\n \"confirm\": \"\u786E\u8BA4\u8EAB\u4EFD\u9A8C\u8BC1\",\n \"scan\": \"\u4F7F\u7528 AuthLink \u626B\u63CF\u4E8C\u7EF4\u7801\",\n \"code\": \"\u6838\u5BF9\u6570\u5B57\",\n \"help\": \"\u5728 App \u6838\u5BF9\u5E76\u6279\u51C6\u540E\uFF0C\u5C06 App \u663E\u793A\u7684 6 \u4F4D\u786E\u8BA4\u7801\u8F93\u5165\u4E0B\u65B9\u3002\",\n \"waiting\": \"\u7B49\u5F85\u624B\u673A\u786E\u8BA4\",\n \"loading\": \"\u6B63\u5728\u8FDE\u63A5\",\n \"confirmed\": \"\u5DF2\u786E\u8BA4\",\n \"rejected\": \"\u5DF2\u62D2\u7EDD\",\n \"expired\": \"\u8BF7\u6C42\u5DF2\u8FC7\u671F\",\n \"error\": \"\u6682\u65F6\u65E0\u6CD5\u5B8C\u6210\u9A8C\u8BC1\",\n \"retry\": \"\u91CD\u8BD5\",\n \"refresh\": \"\u91CD\u65B0\u53D1\u8D77\",\n \"updating\": \"\u6B63\u5728\u66F4\u65B0\u6570\u5B57\",\n \"close\": \"\u5173\u95ED\",\n \"cancel\": \"\u53D6\u6D88\",\n \"autoUpdate\": \"\u6838\u5BF9\u7801\u6BCF 30 \u79D2\u81EA\u52A8\u66F4\u65B0\",\n \"expiring\": \"\u8BF7\u6C42\u5373\u5C06\u8FC7\u671F\",\n \"confirmationCode\": \"App \u786E\u8BA4\u7801\",\n \"submitCode\": \"\u63D0\u4EA4\u9A8C\u8BC1\",\n \"codeError\": \"\u9A8C\u8BC1\u672A\u901A\u8FC7\uFF0C\u8BF7\u68C0\u67E5\u786E\u8BA4\u7801\u548C\u624B\u673A\u6279\u51C6\u72B6\u6001\u540E\u91CD\u8BD5\u3002\",\n \"codeLocked\": \"\u786E\u8BA4\u7801\u8F93\u5165\u9519\u8BEF\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7\u5173\u95ED\u7A97\u53E3\u540E\u91CD\u65B0\u53D1\u8D77\u8BF7\u6C42\u3002\",\n \"otpCode\": \"App \u52A8\u6001\u7801\",\n \"otpHelp\": \"\u6253\u5F00 AuthLink\uFF0C\u8F93\u5165\u8BE5\u8D26\u53F7\u5F53\u524D\u7684\u516D\u4F4D\u52A8\u6001\u7801\uFF0C\u65E0\u9700\u6279\u51C6\u8BF7\u6C42\u3002\",\n \"otpWaiting\": \"\u8BF7\u8F93\u5165\u5F53\u524D\u52A8\u6001\u7801\",\n \"otpError\": \"\u9A8C\u8BC1\u672A\u901A\u8FC7\u3002\u8BF7\u6838\u5BF9\u8D26\u53F7\uFF1B\u5DF2\u4F7F\u7528\u7684\u7801\u9700\u7B49\u5F85\u66F4\u65B0\uFF0C\u591A\u6B21\u5931\u8D25\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002\",\n \"otpSetup\": \"\u8BF7\u5148\u5728 App \u7684\u8D26\u53F7\u5361\u7247\u4E2D\u542F\u7528\u52A8\u6001\u7801\u3002\"\n}\n", "{\n \"bind\": \"\u7D81\u5B9A\u624B\u6A5F\",\n \"confirm\": \"\u78BA\u8A8D\u8EAB\u5206\u9A57\u8B49\",\n \"scan\": \"\u4F7F\u7528 AuthLink \u6383\u63CF QR \u78BC\",\n \"code\": \"\u6838\u5C0D\u6578\u5B57\",\n \"help\": \"\u5728 App \u6838\u5C0D\u4E26\u6279\u51C6\u5F8C\uFF0C\u5C07 App \u986F\u793A\u7684 6 \u4F4D\u78BA\u8A8D\u78BC\u8F38\u5165\u4E0B\u65B9\u3002\",\n \"waiting\": \"\u7B49\u5F85\u624B\u6A5F\u78BA\u8A8D\",\n \"loading\": \"\u6B63\u5728\u9023\u7DDA\",\n \"confirmed\": \"\u5DF2\u78BA\u8A8D\",\n \"rejected\": \"\u5DF2\u62D2\u7D55\",\n \"expired\": \"\u8ACB\u6C42\u5DF2\u904E\u671F\",\n \"error\": \"\u66AB\u6642\u7121\u6CD5\u5B8C\u6210\u9A57\u8B49\",\n \"retry\": \"\u91CD\u8A66\",\n \"refresh\": \"\u91CD\u65B0\u767C\u8D77\",\n \"updating\": \"\u6B63\u5728\u66F4\u65B0\u6578\u5B57\",\n \"close\": \"\u95DC\u9589\",\n \"cancel\": \"\u53D6\u6D88\",\n \"autoUpdate\": \"\u6838\u5C0D\u78BC\u6BCF 30 \u79D2\u81EA\u52D5\u66F4\u65B0\",\n \"expiring\": \"\u8ACB\u6C42\u5373\u5C07\u5230\u671F\",\n \"confirmationCode\": \"App \u78BA\u8A8D\u78BC\",\n \"submitCode\": \"\u63D0\u4EA4\u9A57\u8B49\",\n \"codeError\": \"\u9A57\u8B49\u672A\u901A\u904E\uFF0C\u8ACB\u6AA2\u67E5\u78BA\u8A8D\u78BC\u53CA\u624B\u6A5F\u6279\u51C6\u72C0\u614B\u5F8C\u91CD\u8A66\u3002\",\n \"codeLocked\": \"\u78BA\u8A8D\u78BC\u8F38\u5165\u932F\u8AA4\u6B21\u6578\u904E\u591A\uFF0C\u8ACB\u95DC\u9589\u8996\u7A97\u5F8C\u91CD\u65B0\u767C\u8D77\u8ACB\u6C42\u3002\",\n \"otpCode\": \"App \u52D5\u614B\u78BC\",\n \"otpHelp\": \"\u958B\u555F AuthLink\uFF0C\u8F38\u5165\u6B64\u5E33\u865F\u76EE\u524D\u7684\u516D\u4F4D\u52D5\u614B\u78BC\uFF0C\u7121\u9700\u6279\u51C6\u8ACB\u6C42\u3002\",\n \"otpWaiting\": \"\u8ACB\u8F38\u5165\u76EE\u524D\u7684\u52D5\u614B\u78BC\",\n \"otpError\": \"\u9A57\u8B49\u672A\u901A\u904E\u3002\u8ACB\u6838\u5C0D\u5E33\u865F\uFF1B\u5DF2\u4F7F\u7528\u7684\u78BC\u9700\u7B49\u5F85\u66F4\u65B0\uFF0C\u591A\u6B21\u5931\u6557\u8ACB\u7A0D\u5F8C\u91CD\u8A66\u3002\",\n \"otpSetup\": \"\u8ACB\u5148\u5728 App \u7684\u5E33\u865F\u5361\u7247\u4E2D\u555F\u7528\u52D5\u614B\u78BC\u3002\"\n}\n", "{\n \"bind\": \"\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3092\u767B\u9332\",\n \"confirm\": \"\u672C\u4EBA\u78BA\u8A8D\",\n \"scan\": \"AuthLink \u3067 QR \u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\",\n \"code\": \"\u7167\u5408\u7528\u306E\u6570\u5B57\",\n \"help\": \"App \u3067\u627F\u8A8D\u3057\u305F\u5F8C\u3001\u8868\u793A\u3055\u308C\u305F6\u6841\u306E\u78BA\u8A8D\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\",\n \"waiting\": \"\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u306E\u78BA\u8A8D\u3092\u5F85\u3063\u3066\u3044\u307E\u3059\",\n \"loading\": \"\u63A5\u7D9A\u4E2D\",\n \"confirmed\": \"\u78BA\u8A8D\u6E08\u307F\",\n \"rejected\": \"\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\",\n \"expired\": \"\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u307E\u3057\u305F\",\n \"error\": \"\u672C\u4EBA\u78BA\u8A8D\u3092\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093\",\n \"retry\": \"\u518D\u8A66\u884C\",\n \"refresh\": \"\u65B0\u3057\u3044\u30EA\u30AF\u30A8\u30B9\u30C8\",\n \"updating\": \"\u30B3\u30FC\u30C9\u3092\u66F4\u65B0\u4E2D\",\n \"close\": \"\u9589\u3058\u308B\",\n \"cancel\": \"\u30AD\u30E3\u30F3\u30BB\u30EB\",\n \"autoUpdate\": \"\u7167\u5408\u30B3\u30FC\u30C9\u306F30\u79D2\u3054\u3068\u306B\u81EA\u52D5\u66F4\u65B0\",\n \"expiring\": \"\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u6709\u52B9\u671F\u9650\u304C\u307E\u3082\u306A\u304F\u5207\u308C\u307E\u3059\",\n \"confirmationCode\": \"App \u306E\u78BA\u8A8D\u30B3\u30FC\u30C9\",\n \"submitCode\": \"\u78BA\u8A8D\u3059\u308B\",\n \"codeError\": \"\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B3\u30FC\u30C9\u3068\u627F\u8A8D\u72B6\u6CC1\u3092\u78BA\u8A8D\u3057\u3066\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\",\n \"codeLocked\": \"\u30B3\u30FC\u30C9\u306E\u8AA4\u5165\u529B\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u753B\u9762\u3092\u9589\u3058\u3001\u65B0\u3057\u3044\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u958B\u59CB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\",\n \"otpCode\": \"\u30A2\u30D7\u30EA\u306E\u8A8D\u8A3C\u30B3\u30FC\u30C9\",\n \"otpHelp\": \"AuthLink \u3092\u958B\u304D\u3001\u3053\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u73FE\u5728\u306E6\u6841\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u627F\u8A8D\u64CD\u4F5C\u306F\u4E0D\u8981\u3067\u3059\u3002\",\n \"otpWaiting\": \"\u73FE\u5728\u306E\u30B3\u30FC\u30C9\u3092\u5165\u529B\",\n \"otpError\": \"\u8A8D\u8A3C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u78BA\u8A8D\u3057\u3001\u4F7F\u7528\u6E08\u307F\u306A\u3089\u6B21\u306E\u30B3\u30FC\u30C9\u3092\u5F85\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u5931\u6557\u304C\u7D9A\u304F\u5834\u5408\u306F\u6642\u9593\u3092\u304A\u3044\u3066\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\",\n \"otpSetup\": \"\u5148\u306B\u30A2\u30D7\u30EA\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u753B\u9762\u3067\u8A8D\u8A3C\u30B3\u30FC\u30C9\u3092\u6709\u52B9\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\"\n}\n", "{\n \"bind\": \"\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8 \u09AF\u09C1\u0995\u09CD\u09A4 \u0995\u09B0\u09C1\u09A8\",\n \"confirm\": \"\u09AF\u09BE\u099A\u09BE\u0987\u0995\u09B0\u09A3 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u0995\u09B0\u09C1\u09A8\",\n \"scan\": \"AuthLink \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8\",\n \"code\": \"\u09AE\u09BF\u09B2\u09BF\u09AF\u09BC\u09C7 \u09A6\u09C7\u0996\u09BE\u09B0 \u0995\u09CB\u09A1\",\n \"help\": \"\u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u09A6\u09BF\u09A8, \u09A4\u09BE\u09B0\u09AA\u09B0 \u098F\u0996\u09BE\u09A8\u09C7 \u09EC \u09B8\u0982\u0996\u09CD\u09AF\u09BE\u09B0 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4\u0995\u09B0\u09A3 \u0995\u09CB\u09A1 \u09B2\u09BF\u0996\u09C1\u09A8\u0964\",\n \"waiting\": \"\u09AB\u09CB\u09A8\u09C7 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4\u0995\u09B0\u09A3\u09C7\u09B0 \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE\u09AF\u09BC\",\n \"loading\": \"\u09B8\u0982\u09AF\u09CB\u0997 \u0995\u09B0\u09BE \u09B9\u099A\u09CD\u099B\u09C7\",\n \"confirmed\": \"\u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\",\n \"rejected\": \"\u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u0996\u09CD\u09AF\u09BE\u09A4\",\n \"expired\": \"\u0985\u09A8\u09C1\u09B0\u09CB\u09A7\u09C7\u09B0 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u09B6\u09C7\u09B7\",\n \"error\": \"\u09AF\u09BE\u099A\u09BE\u0987\u0995\u09B0\u09A3 \u098F\u0996\u09A8 \u09B8\u09AE\u09CD\u09AD\u09AC \u09A8\u09AF\u09BC\",\n \"retry\": \"\u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\",\n \"refresh\": \"\u09A8\u09A4\u09C1\u09A8 \u0985\u09A8\u09C1\u09B0\u09CB\u09A7\",\n \"updating\": \"\u0995\u09CB\u09A1 \u0986\u09AA\u09A1\u09C7\u099F \u09B9\u099A\u09CD\u099B\u09C7\",\n \"close\": \"\u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C1\u09A8\",\n \"cancel\": \"\u09AC\u09BE\u09A4\u09BF\u09B2\",\n \"autoUpdate\": \"\u0995\u09CB\u09A1 \u09AA\u09CD\u09B0\u09A4\u09BF \u09E9\u09E6 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7 \u09B8\u09CD\u09AC\u09AF\u09BC\u0982\u0995\u09CD\u09B0\u09BF\u09AF\u09BC\u09AD\u09BE\u09AC\u09C7 \u09AC\u09A6\u09B2\u09BE\u09AF\u09BC\",\n \"expiring\": \"\u0985\u09A8\u09C1\u09B0\u09CB\u09A7\u09C7\u09B0 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u09B6\u09C0\u0998\u09CD\u09B0\u0987 \u09B6\u09C7\u09B7 \u09B9\u09AC\u09C7\",\n \"confirmationCode\": \"\u0985\u09CD\u09AF\u09BE\u09AA\u09C7\u09B0 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4\u0995\u09B0\u09A3 \u0995\u09CB\u09A1\",\n \"submitCode\": \"\u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C1\u09A8\",\n \"codeError\": \"\u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF\u0964 \u0995\u09CB\u09A1 \u0993 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u09AA\u09B0\u09C0\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964\",\n \"codeLocked\": \"\u0985\u09A8\u09C7\u0995\u09AC\u09BE\u09B0 \u09AD\u09C1\u09B2 \u0995\u09CB\u09A1 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u0989\u0987\u09A8\u09CD\u09A1\u09CB \u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C7 \u09A8\u09A4\u09C1\u09A8 \u0985\u09A8\u09C1\u09B0\u09CB\u09A7 \u09B6\u09C1\u09B0\u09C1 \u0995\u09B0\u09C1\u09A8\u0964\",\n \"otpCode\": \"\u0985\u09CD\u09AF\u09BE\u09AA\u09C7\u09B0 \u0995\u09CB\u09A1\",\n \"otpHelp\": \"AuthLink \u0996\u09C1\u09B2\u09C7 \u098F\u0987 \u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F\u09C7\u09B0 \u09AC\u09B0\u09CD\u09A4\u09AE\u09BE\u09A8 \u099B\u09AF\u09BC \u0985\u0999\u09CD\u0995\u09C7\u09B0 \u0995\u09CB\u09A1 \u09B2\u09BF\u0996\u09C1\u09A8\u0964 \u0985\u09A8\u09C1\u09B0\u09CB\u09A7 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8\u09C7\u09B0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8 \u09A8\u09C7\u0987\u0964\",\n \"otpWaiting\": \"\u09AC\u09B0\u09CD\u09A4\u09AE\u09BE\u09A8 \u0995\u09CB\u09A1 \u09B2\u09BF\u0996\u09C1\u09A8\",\n \"otpError\": \"\u09AF\u09BE\u099A\u09BE\u0987 \u09AC\u09CD\u09AF\u09B0\u09CD\u09A5\u0964 \u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F \u09AA\u09B0\u09C0\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09C1\u09A8 \u098F\u09AC\u0982 \u09AC\u09CD\u09AF\u09AC\u09B9\u09C3\u09A4 \u0995\u09CB\u09A1 \u09B9\u09B2\u09C7 \u09A8\u09A4\u09C1\u09A8 \u0995\u09CB\u09A1\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09C1\u09A8\u0964 \u09AC\u09BE\u09B0\u09AC\u09BE\u09B0 \u09AC\u09CD\u09AF\u09B0\u09CD\u09A5 \u09B9\u09B2\u09C7 \u09AA\u09B0\u09C7 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964\",\n \"otpSetup\": \"\u09AA\u09CD\u09B0\u09A5\u09AE\u09C7 \u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u098F\u0987 \u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F\u09C7\u09B0 \u0995\u09BE\u09B0\u09CD\u09A1\u09C7 \u0995\u09CB\u09A1 \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8\u0964\"\n}\n", "{\n \"bind\": \"Vincula tu tel\u00E9fono\",\n \"confirm\": \"Confirma la verificaci\u00F3n\",\n \"scan\": \"Escanea con AuthLink\",\n \"code\": \"C\u00F3digo de comparaci\u00F3n\",\n \"help\": \"Aprueba en la app e introduce aqu\u00ED su c\u00F3digo de 6 d\u00EDgitos.\",\n \"waiting\": \"Esperando la confirmaci\u00F3n del tel\u00E9fono\",\n \"loading\": \"Conectando\",\n \"confirmed\": \"Confirmado\",\n \"rejected\": \"Rechazado\",\n \"expired\": \"La solicitud ha caducado\",\n \"error\": \"La verificaci\u00F3n no est\u00E1 disponible\",\n \"retry\": \"Reintentar\",\n \"refresh\": \"Nueva solicitud\",\n \"updating\": \"Actualizando el c\u00F3digo\",\n \"close\": \"Cerrar\",\n \"cancel\": \"Cancelar\",\n \"autoUpdate\": \"El c\u00F3digo se actualiza autom\u00E1ticamente cada 30 segundos\",\n \"expiring\": \"La solicitud est\u00E1 por caducar\",\n \"confirmationCode\": \"C\u00F3digo de confirmaci\u00F3n de la app\",\n \"submitCode\": \"Verificar\",\n \"codeError\": \"No se pudo verificar. Revisa el c\u00F3digo y la aprobaci\u00F3n.\",\n \"codeLocked\": \"Demasiados c\u00F3digos incorrectos. Cierra la ventana e inicia una nueva solicitud.\",\n \"otpCode\": \"C\u00F3digo de la app\",\n \"otpHelp\": \"Abre AuthLink e introduce el c\u00F3digo actual de seis d\u00EDgitos de esta cuenta. No hace falta aprobar una solicitud.\",\n \"otpWaiting\": \"Introduce el c\u00F3digo actual\",\n \"otpError\": \"No se pudo verificar. Comprueba la cuenta y espera un c\u00F3digo nuevo si ya lo usaste. Si fallas varias veces, int\u00E9ntalo m\u00E1s tarde.\",\n \"otpSetup\": \"Activa primero los c\u00F3digos en la tarjeta de esta cuenta en la app.\"\n}\n", "{\n \"bind\": \"Iugnay ang iyong telepono\",\n \"confirm\": \"Kumpirmahin ang pagpapatunay\",\n \"scan\": \"Mag-scan gamit ang AuthLink\",\n \"code\": \"Code na paghahambingin\",\n \"help\": \"Aprubahan sa app, saka ilagay dito ang 6-digit na confirmation code.\",\n \"waiting\": \"Hinihintay ang kumpirmasyon sa telepono\",\n \"loading\": \"Kumokonekta\",\n \"confirmed\": \"Nakumpirma\",\n \"rejected\": \"Tinanggihan\",\n \"expired\": \"Nag-expire ang kahilingan\",\n \"error\": \"Hindi available ang pagpapatunay\",\n \"retry\": \"Subukan muli\",\n \"refresh\": \"Bagong kahilingan\",\n \"updating\": \"Ina-update ang code\",\n \"close\": \"Isara\",\n \"cancel\": \"Kanselahin\",\n \"autoUpdate\": \"Awtomatikong nagbabago ang code kada 30 segundo\",\n \"expiring\": \"Malapit nang mag-expire ang kahilingan\",\n \"confirmationCode\": \"Confirmation code ng app\",\n \"submitCode\": \"I-verify\",\n \"codeError\": \"Hindi ma-verify. Suriin ang code at pag-apruba at subukan muli.\",\n \"codeLocked\": \"Masyadong maraming maling code. Isara ang window at magsimula ng bagong request.\",\n \"otpCode\": \"Code ng app\",\n \"otpHelp\": \"Buksan ang AuthLink at ilagay ang kasalukuyang anim na digit na code ng account na ito. Hindi kailangang aprubahan ang request.\",\n \"otpWaiting\": \"Ilagay ang kasalukuyang code\",\n \"otpError\": \"Hindi napatunayan. Tingnan ang account at maghintay ng bagong code kung nagamit na. Subukang muli mamaya kung maraming maling pagtatangka.\",\n \"otpSetup\": \"Paganahin muna ang mga code sa card ng account na ito sa app.\"\n}\n", "{\n \"bind\": \"\u0905\u092A\u0928\u093E \u092B\u093C\u094B\u0928 \u091C\u094B\u0921\u093C\u0947\u0902\",\n \"confirm\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u0928 \u0915\u0940 \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u0930\u0947\u0902\",\n \"scan\": \"AuthLink \u0938\u0947 \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902\",\n \"code\": \"\u092E\u093F\u0932\u093E\u0928 \u0915\u094B\u0921\",\n \"help\": \"\u0910\u092A \u092E\u0947\u0902 \u0938\u094D\u0935\u0940\u0915\u0943\u0924\u093F \u0926\u0947\u0902, \u092B\u093F\u0930 \u092F\u0939\u093E\u0901 6 \u0905\u0902\u0915\u094B\u0902 \u0915\u093E \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u094B\u0921 \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902\u0964\",\n \"waiting\": \"\u092B\u093C\u094B\u0928 \u092A\u0930 \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0939\u0948\",\n \"loading\": \"\u0915\u0928\u0947\u0915\u094D\u091F \u0939\u094B \u0930\u0939\u093E \u0939\u0948\",\n \"confirmed\": \"\u092A\u0941\u0937\u094D\u091F\u093F \u0939\u094B \u0917\u0908\",\n \"rejected\": \"\u0905\u0938\u094D\u0935\u0940\u0915\u0943\u0924\",\n \"expired\": \"\u0905\u0928\u0941\u0930\u094B\u0927 \u0915\u0940 \u0938\u092E\u092F \u0938\u0940\u092E\u093E \u0938\u092E\u093E\u092A\u094D\u0924\",\n \"error\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u0928 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 \u0939\u0948\",\n \"retry\": \"\u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\",\n \"refresh\": \"\u0928\u092F\u093E \u0905\u0928\u0941\u0930\u094B\u0927\",\n \"updating\": \"\u0915\u094B\u0921 \u0905\u092A\u0921\u0947\u091F \u0939\u094B \u0930\u0939\u093E \u0939\u0948\",\n \"close\": \"\u092C\u0902\u0926 \u0915\u0930\u0947\u0902\",\n \"cancel\": \"\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902\",\n \"autoUpdate\": \"\u0915\u094B\u0921 \u0939\u0930 30 \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 \u0905\u092A\u0928\u0947 \u0906\u092A \u092C\u0926\u0932\u0924\u093E \u0939\u0948\",\n \"expiring\": \"\u0905\u0928\u0941\u0930\u094B\u0927 \u0915\u0940 \u0938\u092E\u092F-\u0938\u0940\u092E\u093E \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B\u0928\u0947 \u0935\u093E\u0932\u0940 \u0939\u0948\",\n \"confirmationCode\": \"\u0910\u092A \u0915\u093E \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u094B\u0921\",\n \"submitCode\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u093F\u0924 \u0915\u0930\u0947\u0902\",\n \"codeError\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u0928 \u0935\u093F\u092B\u0932 \u0930\u0939\u093E\u0964 \u0915\u094B\u0921 \u0914\u0930 \u0938\u094D\u0935\u0940\u0915\u0943\u0924\u093F \u091C\u093E\u0901\u091A\u0915\u0930 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964\",\n \"codeLocked\": \"\u092C\u0939\u0941\u0924 \u0905\u0927\u093F\u0915 \u0917\u0932\u0924 \u0915\u094B\u0921\u0964 \u0935\u093F\u0902\u0921\u094B \u092C\u0902\u0926 \u0915\u0930\u0915\u0947 \u0928\u092F\u093E \u0905\u0928\u0941\u0930\u094B\u0927 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902\u0964\",\n \"otpCode\": \"\u0910\u092A \u0915\u093E \u0915\u094B\u0921\",\n \"otpHelp\": \"AuthLink \u0916\u094B\u0932\u0947\u0902 \u0914\u0930 \u0907\u0938 \u0916\u093E\u0924\u0947 \u0915\u093E \u0935\u0930\u094D\u0924\u092E\u093E\u0928 \u091B\u0939 \u0905\u0902\u0915\u094B\u0902 \u0915\u093E \u0915\u094B\u0921 \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902\u0964 \u0905\u0928\u0941\u0930\u094B\u0927 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0928\u0947 \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0928\u0939\u0940\u0902 \u0939\u0948\u0964\",\n \"otpWaiting\": \"\u0935\u0930\u094D\u0924\u092E\u093E\u0928 \u0915\u094B\u0921 \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902\",\n \"otpError\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u0928 \u0905\u0938\u092B\u0932\u0964 \u0916\u093E\u0924\u093E \u091C\u093E\u0901\u091A\u0947\u0902 \u0914\u0930 \u0909\u092A\u092F\u094B\u0917 \u0939\u094B \u091A\u0941\u0915\u093E \u0939\u094B \u0924\u094B \u0928\u090F \u0915\u094B\u0921 \u0915\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0915\u0930\u0947\u0902\u0964 \u092C\u093E\u0930-\u092C\u093E\u0930 \u0905\u0938\u092B\u0932 \u0939\u094B\u0928\u0947 \u092A\u0930 \u092C\u093E\u0926 \u092E\u0947\u0902 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964\",\n \"otpSetup\": \"\u092A\u0939\u0932\u0947 \u0910\u092A \u092E\u0947\u0902 \u0907\u0938 \u0916\u093E\u0924\u0947 \u0915\u0947 \u0915\u093E\u0930\u094D\u0921 \u092A\u0930 \u0915\u094B\u0921 \u0938\u0915\u094D\u0937\u092E \u0915\u0930\u0947\u0902\u0964\"\n}\n", "{\n \"bind\": \"Tautkan ponsel Anda\",\n \"confirm\": \"Konfirmasi verifikasi\",\n \"scan\": \"Pindai dengan AuthLink\",\n \"code\": \"Kode pencocokan\",\n \"help\": \"Setujui di aplikasi, lalu masukkan kode konfirmasi 6 digit di sini.\",\n \"waiting\": \"Menunggu konfirmasi dari ponsel\",\n \"loading\": \"Menghubungkan\",\n \"confirmed\": \"Dikonfirmasi\",\n \"rejected\": \"Ditolak\",\n \"expired\": \"Permintaan kedaluwarsa\",\n \"error\": \"Verifikasi tidak tersedia\",\n \"retry\": \"Coba lagi\",\n \"refresh\": \"Permintaan baru\",\n \"updating\": \"Memperbarui kode\",\n \"close\": \"Tutup\",\n \"cancel\": \"Batal\",\n \"autoUpdate\": \"Kode diperbarui otomatis setiap 30 detik\",\n \"expiring\": \"Permintaan akan segera kedaluwarsa\",\n \"confirmationCode\": \"Kode konfirmasi aplikasi\",\n \"submitCode\": \"Verifikasi\",\n \"codeError\": \"Verifikasi gagal. Periksa kode dan persetujuan, lalu coba lagi.\",\n \"codeLocked\": \"Terlalu banyak kode salah. Tutup jendela dan mulai permintaan baru.\",\n \"otpCode\": \"Kode aplikasi\",\n \"otpHelp\": \"Buka AuthLink dan masukkan kode enam digit terkini untuk akun ini. Tidak perlu menyetujui permintaan.\",\n \"otpWaiting\": \"Masukkan kode terkini\",\n \"otpError\": \"Verifikasi gagal. Periksa akun dan tunggu kode baru jika sudah digunakan. Setelah beberapa kegagalan, coba lagi nanti.\",\n \"otpSetup\": \"Aktifkan kode di kartu akun ini dalam aplikasi terlebih dahulu.\"\n}\n", "{\n \"bind\": \"Pautkan telefon anda\",\n \"confirm\": \"Sahkan pengesahan\",\n \"scan\": \"Imbas dengan AuthLink\",\n \"code\": \"Kod padanan\",\n \"help\": \"Luluskan dalam aplikasi, kemudian masukkan kod pengesahan 6 digit di sini.\",\n \"waiting\": \"Menunggu pengesahan daripada telefon\",\n \"loading\": \"Sedang menyambung\",\n \"confirmed\": \"Disahkan\",\n \"rejected\": \"Ditolak\",\n \"expired\": \"Permintaan telah tamat tempoh\",\n \"error\": \"Pengesahan tidak tersedia\",\n \"retry\": \"Cuba lagi\",\n \"refresh\": \"Permintaan baharu\",\n \"updating\": \"Sedang mengemas kini kod\",\n \"close\": \"Tutup\",\n \"cancel\": \"Batal\",\n \"autoUpdate\": \"Kod dikemas kini secara automatik setiap 30 saat\",\n \"expiring\": \"Permintaan akan tamat tempoh tidak lama lagi\",\n \"confirmationCode\": \"Kod pengesahan aplikasi\",\n \"submitCode\": \"Sahkan\",\n \"codeError\": \"Pengesahan gagal. Semak kod dan kelulusan, kemudian cuba lagi.\",\n \"codeLocked\": \"Terlalu banyak kod salah. Tutup tetingkap dan mulakan permintaan baharu.\",\n \"otpCode\": \"Kod aplikasi\",\n \"otpHelp\": \"Buka AuthLink dan masukkan kod enam digit semasa untuk akaun ini. Tiada kelulusan permintaan diperlukan.\",\n \"otpWaiting\": \"Masukkan kod semasa\",\n \"otpError\": \"Pengesahan gagal. Semak akaun dan tunggu kod baharu jika sudah digunakan. Selepas beberapa kegagalan, cuba lagi kemudian.\",\n \"otpSetup\": \"Aktifkan kod pada kad akaun ini dalam aplikasi dahulu.\"\n}\n", "{\n \"bind\": \"Vincule seu celular\",\n \"confirm\": \"Confirme a verifica\u00E7\u00E3o\",\n \"scan\": \"Escaneie com o AuthLink\",\n \"code\": \"C\u00F3digo de compara\u00E7\u00E3o\",\n \"help\": \"Aprove no app e digite aqui o c\u00F3digo de 6 d\u00EDgitos.\",\n \"waiting\": \"Aguardando confirma\u00E7\u00E3o no celular\",\n \"loading\": \"Conectando\",\n \"confirmed\": \"Confirmado\",\n \"rejected\": \"Recusado\",\n \"expired\": \"A solicita\u00E7\u00E3o expirou\",\n \"error\": \"A verifica\u00E7\u00E3o est\u00E1 indispon\u00EDvel\",\n \"retry\": \"Tentar novamente\",\n \"refresh\": \"Nova solicita\u00E7\u00E3o\",\n \"updating\": \"Atualizando o c\u00F3digo\",\n \"close\": \"Fechar\",\n \"cancel\": \"Cancelar\",\n \"autoUpdate\": \"O c\u00F3digo \u00E9 atualizado automaticamente a cada 30 segundos\",\n \"expiring\": \"A solicita\u00E7\u00E3o est\u00E1 prestes a expirar\",\n \"confirmationCode\": \"C\u00F3digo de confirma\u00E7\u00E3o do app\",\n \"submitCode\": \"Verificar\",\n \"codeError\": \"N\u00E3o foi poss\u00EDvel verificar. Confira o c\u00F3digo e a aprova\u00E7\u00E3o.\",\n \"codeLocked\": \"Muitos c\u00F3digos incorretos. Feche a janela e inicie uma nova solicita\u00E7\u00E3o.\",\n \"otpCode\": \"C\u00F3digo do aplicativo\",\n \"otpHelp\": \"Abra o AuthLink e digite o c\u00F3digo atual de seis d\u00EDgitos desta conta. N\u00E3o \u00E9 necess\u00E1rio aprovar uma solicita\u00E7\u00E3o.\",\n \"otpWaiting\": \"Digite o c\u00F3digo atual\",\n \"otpError\": \"Falha na verifica\u00E7\u00E3o. Confira a conta e aguarde um novo c\u00F3digo se j\u00E1 o usou. Ap\u00F3s v\u00E1rias falhas, tente mais tarde.\",\n \"otpSetup\": \"Ative primeiro os c\u00F3digos no cart\u00E3o desta conta no aplicativo.\"\n}\n", "{\n \"bind\": \"\u0E1C\u0E39\u0E01\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\",\n \"confirm\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E01\u0E32\u0E23\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\",\n \"scan\": \"\u0E2A\u0E41\u0E01\u0E19\u0E14\u0E49\u0E27\u0E22 AuthLink\",\n \"code\": \"\u0E23\u0E2B\u0E31\u0E2A\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E40\u0E1B\u0E23\u0E35\u0E22\u0E1A\u0E40\u0E17\u0E35\u0E22\u0E1A\",\n \"help\": \"\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E43\u0E19\u0E41\u0E2D\u0E1B \u0E41\u0E25\u0E49\u0E27\u0E01\u0E23\u0E2D\u0E01\u0E23\u0E2B\u0E31\u0E2A\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19 6 \u0E2B\u0E25\u0E31\u0E01\u0E17\u0E35\u0E48\u0E19\u0E35\u0E48\",\n \"waiting\": \"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E23\u0E2D\u0E01\u0E32\u0E23\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E08\u0E32\u0E01\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\",\n \"loading\": \"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E0A\u0E37\u0E48\u0E2D\u0E21\u0E15\u0E48\u0E2D\",\n \"confirmed\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E41\u0E25\u0E49\u0E27\",\n \"rejected\": \"\u0E1B\u0E0F\u0E34\u0E40\u0E2A\u0E18\u0E41\u0E25\u0E49\u0E27\",\n \"expired\": \"\u0E04\u0E33\u0E02\u0E2D\u0E2B\u0E21\u0E14\u0E2D\u0E32\u0E22\u0E38\",\n \"error\": \"\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E44\u0E14\u0E49\u0E43\u0E19\u0E02\u0E13\u0E30\u0E19\u0E35\u0E49\",\n \"retry\": \"\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\",\n \"refresh\": \"\u0E04\u0E33\u0E02\u0E2D\u0E43\u0E2B\u0E21\u0E48\",\n \"updating\": \"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E23\u0E2B\u0E31\u0E2A\",\n \"close\": \"\u0E1B\u0E34\u0E14\",\n \"cancel\": \"\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01\",\n \"autoUpdate\": \"\u0E23\u0E2B\u0E31\u0E2A\u0E08\u0E30\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E2D\u0E31\u0E15\u0E42\u0E19\u0E21\u0E31\u0E15\u0E34\u0E17\u0E38\u0E01 30 \u0E27\u0E34\u0E19\u0E32\u0E17\u0E35\",\n \"expiring\": \"\u0E04\u0E33\u0E02\u0E2D\u0E43\u0E01\u0E25\u0E49\u0E2B\u0E21\u0E14\u0E2D\u0E32\u0E22\u0E38\",\n \"confirmationCode\": \"\u0E23\u0E2B\u0E31\u0E2A\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E08\u0E32\u0E01\u0E41\u0E2D\u0E1B\",\n \"submitCode\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\",\n \"codeError\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08 \u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E23\u0E2B\u0E31\u0E2A\u0E41\u0E25\u0E30\u0E01\u0E32\u0E23\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E41\u0E25\u0E49\u0E27\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\",\n \"codeLocked\": \"\u0E01\u0E23\u0E2D\u0E01\u0E23\u0E2B\u0E31\u0E2A\u0E1C\u0E34\u0E14\u0E2B\u0E25\u0E32\u0E22\u0E04\u0E23\u0E31\u0E49\u0E07\u0E40\u0E01\u0E34\u0E19\u0E44\u0E1B \u0E42\u0E1B\u0E23\u0E14\u0E1B\u0E34\u0E14\u0E2B\u0E19\u0E49\u0E32\u0E15\u0E48\u0E32\u0E07\u0E41\u0E25\u0E49\u0E27\u0E40\u0E23\u0E34\u0E48\u0E21\u0E04\u0E33\u0E02\u0E2D\u0E43\u0E2B\u0E21\u0E48\",\n \"otpCode\": \"\u0E23\u0E2B\u0E31\u0E2A\u0E08\u0E32\u0E01\u0E41\u0E2D\u0E1B\",\n \"otpHelp\": \"\u0E40\u0E1B\u0E34\u0E14 AuthLink \u0E41\u0E25\u0E30\u0E01\u0E23\u0E2D\u0E01\u0E23\u0E2B\u0E31\u0E2A\u0E2B\u0E01\u0E2B\u0E25\u0E31\u0E01\u0E1B\u0E31\u0E08\u0E08\u0E38\u0E1A\u0E31\u0E19\u0E02\u0E2D\u0E07\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E19\u0E35\u0E49 \u0E44\u0E21\u0E48\u0E15\u0E49\u0E2D\u0E07\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E04\u0E33\u0E02\u0E2D\",\n \"otpWaiting\": \"\u0E01\u0E23\u0E2D\u0E01\u0E23\u0E2B\u0E31\u0E2A\u0E1B\u0E31\u0E08\u0E08\u0E38\u0E1A\u0E31\u0E19\",\n \"otpError\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08 \u0E42\u0E1B\u0E23\u0E14\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E41\u0E25\u0E30\u0E23\u0E2D\u0E23\u0E2B\u0E31\u0E2A\u0E43\u0E2B\u0E21\u0E48\u0E2B\u0E32\u0E01\u0E43\u0E0A\u0E49\u0E44\u0E1B\u0E41\u0E25\u0E49\u0E27 \u0E2B\u0E32\u0E01\u0E1C\u0E34\u0E14\u0E2B\u0E25\u0E32\u0E22\u0E04\u0E23\u0E31\u0E49\u0E07\u0E43\u0E2B\u0E49\u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E20\u0E32\u0E22\u0E2B\u0E25\u0E31\u0E07\",\n \"otpSetup\": \"\u0E40\u0E1B\u0E34\u0E14\u0E43\u0E0A\u0E49\u0E23\u0E2B\u0E31\u0E2A\u0E1A\u0E19\u0E01\u0E32\u0E23\u0E4C\u0E14\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E19\u0E35\u0E49\u0E43\u0E19\u0E41\u0E2D\u0E1B\u0E01\u0E48\u0E2D\u0E19\"\n}\n", "{\n \"bind\": \"Li\u00EAn k\u1EBFt \u0111i\u1EC7n tho\u1EA1i\",\n \"confirm\": \"X\u00E1c nh\u1EADn x\u00E1c th\u1EF1c\",\n \"scan\": \"Qu\u00E9t b\u1EB1ng AuthLink\",\n \"code\": \"M\u00E3 \u0111\u1ED1i chi\u1EBFu\",\n \"help\": \"Ph\u00EA duy\u1EC7t trong \u1EE9ng d\u1EE5ng r\u1ED3i nh\u1EADp m\u00E3 x\u00E1c nh\u1EADn 6 ch\u1EEF s\u1ED1 t\u1EA1i \u0111\u00E2y.\",\n \"waiting\": \"\u0110ang ch\u1EDD x\u00E1c nh\u1EADn t\u1EEB \u0111i\u1EC7n tho\u1EA1i\",\n \"loading\": \"\u0110ang k\u1EBFt n\u1ED1i\",\n \"confirmed\": \"\u0110\u00E3 x\u00E1c nh\u1EADn\",\n \"rejected\": \"\u0110\u00E3 t\u1EEB ch\u1ED1i\",\n \"expired\": \"Y\u00EAu c\u1EA7u \u0111\u00E3 h\u1EBFt h\u1EA1n\",\n \"error\": \"Hi\u1EC7n kh\u00F4ng th\u1EC3 x\u00E1c th\u1EF1c\",\n \"retry\": \"Th\u1EED l\u1EA1i\",\n \"refresh\": \"Y\u00EAu c\u1EA7u m\u1EDBi\",\n \"updating\": \"\u0110ang c\u1EADp nh\u1EADt m\u00E3\",\n \"close\": \"\u0110\u00F3ng\",\n \"cancel\": \"H\u1EE7y\",\n \"autoUpdate\": \"M\u00E3 t\u1EF1 \u0111\u1ED9ng c\u1EADp nh\u1EADt m\u1ED7i 30 gi\u00E2y\",\n \"expiring\": \"Y\u00EAu c\u1EA7u s\u1EAFp h\u1EBFt h\u1EA1n\",\n \"confirmationCode\": \"M\u00E3 x\u00E1c nh\u1EADn trong \u1EE9ng d\u1EE5ng\",\n \"submitCode\": \"X\u00E1c minh\",\n \"codeError\": \"Kh\u00F4ng th\u1EC3 x\u00E1c minh. Ki\u1EC3m tra m\u00E3 v\u00E0 tr\u1EA1ng th\u00E1i ph\u00EA duy\u1EC7t r\u1ED3i th\u1EED l\u1EA1i.\",\n \"codeLocked\": \"Nh\u1EADp sai m\u00E3 qu\u00E1 nhi\u1EC1u l\u1EA7n. \u0110\u00F3ng c\u1EEDa s\u1ED5 v\u00E0 t\u1EA1o y\u00EAu c\u1EA7u m\u1EDBi.\",\n \"otpCode\": \"M\u00E3 \u1EE9ng d\u1EE5ng\",\n \"otpHelp\": \"M\u1EDF AuthLink v\u00E0 nh\u1EADp m\u00E3 s\u00E1u ch\u1EEF s\u1ED1 hi\u1EC7n t\u1EA1i c\u1EE7a t\u00E0i kho\u1EA3n n\u00E0y. Kh\u00F4ng c\u1EA7n ph\u00EA duy\u1EC7t y\u00EAu c\u1EA7u.\",\n \"otpWaiting\": \"Nh\u1EADp m\u00E3 hi\u1EC7n t\u1EA1i\",\n \"otpError\": \"X\u00E1c minh th\u1EA5t b\u1EA1i. Ki\u1EC3m tra t\u00E0i kho\u1EA3n v\u00E0 ch\u1EDD m\u00E3 m\u1EDBi n\u1EBFu \u0111\u00E3 d\u00F9ng. N\u1EBFu sai nhi\u1EC1u l\u1EA7n, h\u00E3y th\u1EED l\u1EA1i sau.\",\n \"otpSetup\": \"Tr\u01B0\u1EDBc ti\u00EAn h\u00E3y b\u1EADt m\u00E3 tr\u00EAn th\u1EBB t\u00E0i kho\u1EA3n n\u00E0y trong \u1EE9ng d\u1EE5ng.\"\n}\n", "import type { Locale } from './types.js';\nimport l0 from './locales/en.json';\nimport l1 from './locales/zh-CN.json';\nimport l2 from './locales/zh-TW.json';\nimport l3 from './locales/ja.json';\nimport l4 from './locales/bn.json';\nimport l5 from './locales/es.json';\nimport l6 from './locales/fil.json';\nimport l7 from './locales/hi.json';\nimport l8 from './locales/id.json';\nimport l9 from './locales/ms.json';\nimport l10 from './locales/pt.json';\nimport l11 from './locales/th.json';\nimport l12 from './locales/vi.json';\n\nexport const supportedLocales = [\"en\", \"zh-CN\", \"zh-TW\", \"ja\", \"bn\", \"es\", \"fil\", \"hi\", \"id\", \"ms\", \"pt\", \"th\", \"vi\"] as const satisfies readonly Locale[];\ntype Messages = Record<\"otpCode\" | \"otpHelp\" | \"otpWaiting\" | \"otpError\" | \"otpSetup\" | \"codeLocked\" | \"confirmationCode\" | \"submitCode\" | \"codeError\" | \"cancel\" | \"close\" | \"bind\" | \"confirm\" | \"scan\" | \"code\" | \"help\" | \"waiting\" | \"loading\" | \"confirmed\" | \"rejected\" | \"expired\" | \"error\" | \"retry\" | \"refresh\" | \"autoUpdate\" | \"expiring\" | \"updating\", string>;\nconst messages = {\n \"en\": l0,\n \"zh-CN\": l1,\n \"zh-TW\": l2,\n \"ja\": l3,\n \"bn\": l4,\n \"es\": l5,\n \"fil\": l6,\n \"hi\": l7,\n \"id\": l8,\n \"ms\": l9,\n \"pt\": l10,\n \"th\": l11,\n \"vi\": l12\n} satisfies Record<Locale, Messages>;\n\nexport const defaultLocale: Locale = 'zh-CN';\n\nexport function resolveLocale(locale?: string): Locale {\n return locale && Object.hasOwn(messages, locale) ? locale as Locale : defaultLocale;\n}\nexport function getMessages(locale?: string): Messages {\n return messages[resolveLocale(locale)];\n}\n", "import { getMessages, resolveLocale } from './i18n.js';\nimport type { Locale, Mode, Snapshot } from './types.js';\n\nexport interface ViewNode { tag: string; props: Record<string, unknown>; children: (ViewNode | string)[] }\nconst node = (tag: string, props: Record<string, unknown>, ...children: (ViewNode | string)[]): ViewNode => ({ tag, props, children });\nexport function widgetView(options: { mode: Mode; locale?: Locale; snapshot: Snapshot; passcodeMode?: boolean;\n qr?: string; showQr?: boolean; submitCode?: (code: string) => Promise<void>; inputCode?: string; setCode?: (code: string) => void; retry: () => void; refresh?: () => void; className?: string }): ViewNode {\n const { snapshot: s, mode, retry, refresh } = options;\n const locale = resolveLocale(options.locale);\n const l = getMessages(locale);\n const pending = s.status === 'pending', hasQr = pending && (mode === 'bind' || Boolean(options.showQr)) && Boolean(options.qr);\n const status = ({ idle: l.loading, pending: options.passcodeMode ? l.otpWaiting : l.waiting, confirmed: l.confirmed, rejected: l.rejected, expired: l.expired, error: l.error })[s.status];\n const expiring = pending && s.secondsRemaining <= 30;\n const expiryTime = `00:${String(Math.max(0, Math.ceil(s.secondsRemaining))).padStart(2, '0')}`;\n const statusNode = () => node('p', { class: 'authlink-status', role: s.status === 'error' ? 'alert' : 'status',\n 'data-expiring': String(expiring) },\n node('span', { class: 'authlink-status-dot', 'aria-hidden': 'true' }), expiring ? l.expiring : status,\n ...(expiring ? [node('span', { class: 'authlink-expiry', 'aria-hidden': 'true' }, ` \u00B7 ${expiryTime}`)] : []));\n const children: (ViewNode | string)[] = [node('h3', { class: 'authlink-title' }, l[mode])];\n if (hasQr) children.push(node('p', { class: 'authlink-subtitle' }, l.scan));\n if (pending) {\n const qr = hasQr ? [node('figure', { class: 'authlink-qr-wrap' },\n node('img', { class: 'authlink-qr', src: options.qr, alt: l.scan, width: 240, height: 240 }),\n node('figcaption', { class: 'authlink-qr-caption' }, l.scan))] : [];\n const detail: (ViewNode | string)[] = [node('p', { class: 'authlink-help' }, options.passcodeMode ? l.otpHelp : l.help),\n node('form', { class: 'authlink-code-form', onSubmit: (event: Event) => {\n event.preventDefault();\n const input = (event.currentTarget as HTMLFormElement).querySelector('input');\n if (input) void options.submitCode?.(input.value);\n } },\n node('label', { for: 'authlink-confirmation-code' }, options.passcodeMode ? l.otpCode : l.confirmationCode),\n node('input', { id: 'authlink-confirmation-code', name: options.passcodeMode ? 'passcode' : 'confirmationCode', type: 'text', inputmode: 'numeric',\n autocomplete: 'one-time-code', pattern: '[0-9]{6}', maxlength: 6, minlength: 6, required: true,\n 'data-authlink-focus': 'confirmation-code', value: options.inputCode ?? '',\n onInput: (event: Event) => options.setCode?.((event.target as HTMLInputElement).value) }),\n node('button', { type: 'submit', class: 'authlink-button', ...(s.submitting ? { disabled: true } : {}) },\n s.submitting ? l.loading : l.submitCode)),\n ...(s.error ? [node('p', { class: 'authlink-input-error', role: 'alert' }, options.passcodeMode ? (s.error.message === 'OTP_NOT_CONFIGURED' ? l.otpSetup : l.otpError) : l.codeError)] : [])];\n children.push(node('div', { class: 'authlink-body' }, ...qr, node('div', { class: 'authlink-details' }, ...detail)));\n children.push(node('div', { class: 'authlink-footer' }, statusNode()));\n } else {\n children.push(statusNode());\n if (s.error?.message === 'CONFIRMATION_CODE_LOCKED') children.push(node('p', { class: 'authlink-input-error', role: 'alert' }, l.codeLocked));\n if (s.status === 'error' && s.error?.message !== 'CONFIRMATION_CODE_LOCKED') children.push(node('button', { type: 'button', class: 'authlink-button',\n 'data-authlink-focus': 'retry', onClick: retry }, l.retry));\n if (refresh && ['expired', 'rejected', 'error'].includes(s.status)) children.push(node('button', { type: 'button',\n class: 'authlink-button', 'data-authlink-focus': 'refresh', onClick: refresh }, l.refresh));\n }\n return node('section', { lang: locale, class: `authlink-widget ${options.className ?? ''}`.trim(), 'data-status': s.status,\n 'data-has-qr': String(hasQr), 'aria-label': l[mode] }, ...children);\n}\n", "import { initialSnapshot, observeRequest, qrImage, validateTicket, AuthLinkError } from './core.js';\nimport { getMessages, resolveLocale } from './i18n.js';\nimport { widgetView } from './view.js';\nimport type { ViewNode } from './view.js';\nimport type { Locale, Snapshot, WidgetOptions } from './types.js';\n\nexport interface AuthLinkModalOptions extends WidgetOptions {\n className?: string;\n onClose?: () => void;\n}\nexport interface AuthLinkModal {\n /** Close the UI and abort observation. Does not reject or delete the server request. */\n close(): void;\n /** Component cleanup: close without delivering a user-close callback. */\n destroy(): void;\n setLocale(locale?: Locale): void;\n retry(): void;\n}\nexport function element(value: ViewNode | string, svg = false): Node {\n if (typeof value === 'string') return document.createTextNode(value);\n svg ||= value.tag === 'svg';\n const result = svg ? document.createElementNS('http://www.w3.org/2000/svg', value.tag) : document.createElement(value.tag);\n for (const [key, v] of Object.entries(value.props)) {\n if (key.startsWith('on') && typeof v === 'function') result.addEventListener(key.slice(2).toLowerCase(), v as EventListener);\n else if (v !== undefined && v !== null) result.setAttribute(key, String(v));\n }\n result.append(...value.children.map(child => element(child, svg)));\n return result;\n}\n/** Show a backend-created request. This function never creates or authorizes a request. */\nexport function openAuthLink(options: AuthLinkModalOptions): AuthLinkModal {\n if (typeof document === 'undefined' || !document.body) throw new AuthLinkError('BROWSER_REQUIRED');\n const mode = options.mode ?? options.ticket.purpose;\n const ticket = validateTicket(options.ticket, mode);\n const dialog = document.createElement('dialog');\n if (typeof dialog.showModal !== 'function') throw new AuthLinkError('DIALOG_UNSUPPORTED');\n const previousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n dialog.className = `authlink-dialog ${options.className ?? ''}`.trim();\n dialog.setAttribute('aria-modal', 'true');\n const header = document.createElement('div'); header.className = 'authlink-header';\n const brand = document.createElement('span'); brand.className = 'authlink-brand';\n brand.textContent = 'AuthLink'; brand.tabIndex = -1;\n const closeButton = document.createElement('button');\n closeButton.type = 'button'; closeButton.className = 'authlink-close';\n const closeIcon = document.createElement('span'); closeIcon.className = 'authlink-close-icon';\n closeIcon.setAttribute('aria-hidden', 'true'); closeButton.append(closeIcon);\n const content = document.createElement('div'); content.className = 'authlink-modal-content';\n header.append(brand, closeButton); dialog.append(header, content);\n let locale = options.locale, snapshot: Snapshot = initialSnapshot(), closed = false;\n let abort: AbortController | undefined;\n let inputCode = '';\n let submitCode: ((code: string) => Promise<void>) | undefined;\n const image = qrImage(ticket);\n let progressFill: HTMLElement | undefined, progressFrame: number | undefined, progressDeadline = 0;\n const motion = window.matchMedia?.('(prefers-reduced-motion: reduce)');\n const stopProgress = () => {\n if (progressFrame !== undefined) window.cancelAnimationFrame(progressFrame);\n progressFrame = undefined;\n };\n const drawProgress = () => {\n stopProgress();\n if (closed || !progressFill?.isConnected) return;\n const remaining = Math.max(0, progressDeadline - performance.now());\n progressFill.style.transform = `scaleX(${Math.min(1, remaining / 30_000)})`;\n if (remaining > 0 && !motion?.matches && typeof window.requestAnimationFrame === 'function') {\n progressFrame = window.requestAnimationFrame(drawProgress);\n }\n };\n const syncProgress = (remainingMs: number) => {\n progressDeadline = performance.now() + remainingMs;\n drawProgress();\n };\n motion?.addEventListener?.('change', drawProgress);\n const render = () => {\n if (closed) return;\n const language = resolveLocale(locale), messages = getMessages(language);\n dialog.lang = language; dialog.setAttribute('aria-label', messages[mode]);\n dialog.dataset.mode = mode;\n dialog.dataset.hasQr = String(snapshot.status === 'pending' && (mode === 'bind' || Boolean(options.showQr)));\n closeButton.setAttribute('aria-label', messages.close);\n const focused = document.activeElement;\n const focusKey = focused instanceof HTMLElement && content.contains(focused) ? focused.dataset.authlinkFocus : undefined;\n const next = element(widgetView({ mode, locale, snapshot, qr: image,\n showQr: options.showQr, inputCode, setCode: code => { inputCode = code; }, submitCode: code => submitCode?.(code) ?? Promise.resolve(), retry, refresh: options.onRefresh })) as HTMLElement;\n const oldCode = content.querySelector<HTMLElement>('.authlink-code');\n const nextCode = next.querySelector<HTMLElement>('.authlink-code');\n const codeChanged = Boolean(oldCode && nextCode && snapshot.code && oldCode.textContent !== nextCode.textContent);\n // Preserve the number between ticks; only a new server-supplied code fades in.\n if (oldCode && nextCode && oldCode.textContent === nextCode.textContent) {\n oldCode.setAttribute('aria-label', nextCode.getAttribute('aria-label')!);\n nextCode.replaceWith(oldCode);\n }\n const oldProgress = content.querySelector<HTMLElement>('.authlink-progress');\n const nextProgress = next.querySelector<HTMLElement>('.authlink-progress');\n if (oldProgress && nextProgress) {\n oldProgress.setAttribute('aria-valuenow', nextProgress.getAttribute('aria-valuenow')!);\n oldProgress.setAttribute('aria-label', nextProgress.getAttribute('aria-label')!);\n nextProgress.replaceWith(oldProgress);\n }\n const oldInput = content.querySelector<HTMLInputElement>('input[name=confirmationCode]');\n const nextInput = next.querySelector<HTMLInputElement>('input[name=confirmationCode]');\n if (oldInput && nextInput) nextInput.replaceWith(oldInput);\n content.replaceChildren(next);\n progressFill = content.querySelector<HTMLElement>('.authlink-progress-fill') ?? undefined;\n drawProgress();\n if (codeChanged && !window.matchMedia?.('(prefers-reduced-motion: reduce)').matches) {\n nextCode?.animate?.([{ opacity: .5 }, { opacity: 1 }], { duration: 180, easing: 'ease-out' });\n }\n // Polling must not steal keyboard focus from a footer or retry control.\n if (focusKey) (Array.from(content.querySelectorAll<HTMLElement>('[data-authlink-focus]'))\n .find(item => item.dataset.authlinkFocus === focusKey) ?? brand).focus({ preventScroll: true });\n };\n const dispose = (notify: boolean) => {\n if (closed) return;\n closed = true; abort?.abort(); stopProgress(); progressFill = undefined;\n motion?.removeEventListener?.('change', drawProgress);\n if (dialog.open) dialog.close();\n dialog.remove();\n if (!document.querySelector('dialog.authlink-dialog[open]')) {\n if (document.body.style.overflow === 'hidden') document.body.style.overflow = document.body.dataset.authlinkOverflow ?? '';\n delete document.body.dataset.authlinkOverflow;\n }\n if (previousFocus?.isConnected) previousFocus.focus();\n if (notify) options.onClose?.();\n };\n const delivered = new Set<string>();\n const once = (status: string, callback: () => void | Promise<void>) => {\n if (delivered.has(status)) return;\n delivered.add(status); return callback();\n };\n const retry = () => {\n if (closed) return;\n abort?.abort(); abort = new AbortController(); snapshot = initialSnapshot(); render();\n void observeRequest(ticket, { client: options.client, intervalMs: options.intervalMs, expectedMode: mode,\n signal: abort.signal, onReady: submit => { submitCode = submit; }, onCodeTiming: syncProgress, onUpdate: value => { snapshot = value; if (value.status !== 'rejected') render(); },\n onConfirmed: value => once('confirmed', () => {\n dispose(false);\n try {\n return Promise.resolve(options.onConfirmed?.(value)).catch(() => options.onError?.(new AuthLinkError('CALLBACK_FAILED')));\n } catch { options.onError?.(new AuthLinkError('CALLBACK_FAILED')); }\n }),\n onRejected: value => once('rejected', () => {\n dispose(false);\n try {\n return Promise.resolve(options.onRejected?.(value)).catch(() => options.onError?.(new AuthLinkError('CALLBACK_FAILED')));\n } catch { options.onError?.(new AuthLinkError('CALLBACK_FAILED')); }\n }),\n onExpired: () => once('expired', () => options.onExpired?.()), onError: options.onError });\n };\n closeButton.addEventListener('click', () => dispose(true));\n dialog.addEventListener('cancel', event => { event.preventDefault(); dispose(true); });\n dialog.addEventListener('close', () => dispose(true));\n render(); document.body.append(dialog);\n try { dialog.showModal(); } catch (error) { dialog.remove(); throw error; }\n // Avoid an oversized focus ring on first open; Tab still reaches the close button.\n brand.focus({ preventScroll: true });\n if (document.body.dataset.authlinkOverflow === undefined) document.body.dataset.authlinkOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n retry();\n return { close: () => dispose(true), destroy: () => dispose(false),\n setLocale: value => { locale = value; render(); },\n retry };\n}\nexport const openAuthLinkBind = (options: AuthLinkModalOptions): AuthLinkModal => openAuthLink({ ...options, mode: 'bind' });\nexport const openAuthLinkConfirm = (options: AuthLinkModalOptions): AuthLinkModal => openAuthLink({ ...options, mode: 'confirm' });\n", "import { AuthLinkError, createBackendCall, qrImage, validateTicket } from './core.js';\nimport type { ClientOptions } from './core.js';\nimport { getMessages, resolveLocale } from './i18n.js';\nimport { element } from './modal.js';\nimport type { AuthLinkModal } from './modal.js';\nimport { widgetView } from './view.js';\nimport type { Locale, Snapshot } from './types.js';\n\nexport interface OTPVerification {\n status: 'confirmed';\n verificationId: string;\n authenticationPolicy: 'device-totp.v1';\n expiresAt: string;\n}\nexport interface PasscodeClient {\n verify(passcode: string, signal: AbortSignal): Promise<OTPVerification>;\n}\nexport interface PasscodeOptions {\n client: PasscodeClient;\n /** The CMS's single pending action deadline, not a TOTP time step. */\n expiresAt: string;\n locale?: Locale;\n /** First-time enrollment only. Ordinary verification has no QR or request ID. */\n bindingQr?: string;\n authLinkOrigin?: string;\n onVerified?: (result: OTPVerification) => void | Promise<void>;\n onClose?: () => void;\n onExpired?: () => void | Promise<void>;\n onError?: (error: Error) => void;\n}\n\nfunction validateOTPResult(value: unknown): OTPVerification {\n if (!value || typeof value !== 'object') throw new AuthLinkError('INVALID_RESPONSE');\n const result = value as Record<string, unknown>;\n const expiry = typeof result.expiresAt === 'string' ? Date.parse(result.expiresAt) : NaN;\n if (result.status !== 'confirmed' || result.authenticationPolicy !== 'device-totp.v1' ||\n typeof result.verificationId !== 'string' || !/^[A-Za-z0-9_-]{43}$/.test(result.verificationId) ||\n !Number.isFinite(expiry) || expiry <= Date.now() || expiry > Date.now() + 90_000 ||\n 'requestId' in result || 'state' in result || 'businessId' in result) throw new AuthLinkError('INVALID_CONFIRMATION');\n return result as unknown as OTPVerification;\n}\n\nexport function createPasscodeClient(options: ClientOptions): PasscodeClient {\n const call = createBackendCall(options);\n return {\n async verify(passcode, signal) {\n if (!/^[0-9]{6}$/.test(passcode)) throw new AuthLinkError('PASSCODE_INVALID');\n return validateOTPResult(await call('/auth', { passcode }, signal));\n },\n };\n}\n\n/** A session-scoped passcode prompt. No request creation, request ID or polling. */\nexport function openPasscode(options: PasscodeOptions): AuthLinkModal {\n if (typeof document === 'undefined' || !document.body) throw new AuthLinkError('BROWSER_REQUIRED');\n const deadline = Date.parse(options.expiresAt);\n if (!Number.isFinite(deadline) || deadline <= Date.now() || deadline > Date.now() + 300_000) throw new AuthLinkError('INVALID_EXPIRY');\n const previousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n const dialog = document.createElement('dialog');\n if (typeof dialog.showModal !== 'function') throw new AuthLinkError('DIALOG_UNSUPPORTED');\n dialog.className = 'authlink-dialog';\n dialog.setAttribute('aria-modal', 'true');\n const header = document.createElement('div'); header.className = 'authlink-header';\n const brand = document.createElement('span'); brand.className = 'authlink-brand'; brand.textContent = 'AuthLink';\n const close = document.createElement('button'); close.type = 'button'; close.className = 'authlink-close';\n const icon = document.createElement('span'); icon.className = 'authlink-close-icon'; icon.setAttribute('aria-hidden', 'true'); close.append(icon);\n const content = document.createElement('div'); content.className = 'authlink-modal-content';\n header.append(brand, close); dialog.append(header, content);\n let locale = options.locale, closed = false, busy = false, code = '', error: Error | undefined;\n const mode = options.bindingQr ? 'bind' : 'confirm';\n let image: string | undefined;\n if (options.bindingQr) {\n let payload: Record<string, unknown>;\n try { payload = JSON.parse(options.bindingQr) as Record<string, unknown>; } catch { throw new AuthLinkError('INVALID_TICKET'); }\n image = qrImage(validateTicket({ requestId: payload.requestId, purpose: 'bind', qr: options.bindingQr, pairingCode: '000000', expiresAt: options.expiresAt }, 'bind', options.authLinkOrigin));\n }\n const abort = new AbortController();\n let timer: ReturnType<typeof setInterval> | undefined;\n const dispose = (notify: boolean) => {\n if (closed) return;\n closed = true; abort.abort(); clearInterval(timer); dialog.remove(); previousFocus?.focus();\n if (notify) options.onClose?.();\n };\n const render = () => {\n if (closed) return;\n const l = getMessages(locale);\n dialog.lang = resolveLocale(locale); dialog.dataset.mode = mode; dialog.dataset.hasQr = String(Boolean(image));\n dialog.setAttribute('aria-label', l[mode]); close.setAttribute('aria-label', l.close);\n const focused = content.contains(document.activeElement);\n const remaining = Math.max(0, Math.ceil((deadline - Date.now()) / 1000));\n const snapshot: Snapshot = { status: remaining ? 'pending' : 'expired', code: null, secondsRemaining: remaining, codeSecondsRemaining: remaining, submitting: busy, error: error ?? null };\n content.replaceChildren(element(widgetView({ mode, locale, passcodeMode: true, snapshot, qr: image, showQr: Boolean(image), inputCode: code,\n setCode: value => { code = value; }, submitCode: submit, retry: () => { error = undefined; render(); } })));\n if (focused) content.querySelector<HTMLInputElement>('input')?.focus();\n };\n const submit = async (value: string) => {\n if (closed || busy) return;\n if (Date.now() >= deadline) { render(); return; }\n if (!/^[0-9]{6}$/.test(value)) { error = new AuthLinkError('PASSCODE_INVALID'); render(); return; }\n code = value; busy = true; error = undefined; render();\n try {\n const result = validateOTPResult(await options.client.verify(value, abort.signal));\n if (closed || abort.signal.aborted || Date.now() >= deadline) return;\n // The CMS has already verified and committed its operation before returning.\n try { await options.onVerified?.(result); } catch { options.onError?.(new AuthLinkError('CALLBACK_FAILED')); }\n dispose(false);\n } catch (cause) {\n if (!closed && !abort.signal.aborted) { error = cause instanceof Error ? cause : new AuthLinkError('NETWORK_ERROR'); options.onError?.(error); }\n } finally { busy = false; render(); }\n };\n close.addEventListener('click', () => dispose(true));\n dialog.addEventListener('cancel', event => { event.preventDefault(); dispose(true); });\n document.body.append(dialog); render(); dialog.showModal(); content.querySelector<HTMLInputElement>('input')?.focus();\n timer = setInterval(() => {\n if (closed) return;\n if (Date.now() >= deadline) { render(); clearInterval(timer); void Promise.resolve(options.onExpired?.()).catch(() => options.onError?.(new AuthLinkError('CALLBACK_FAILED'))); }\n }, 1000);\n return { close: () => dispose(true), destroy: () => dispose(false), setLocale: value => { locale = value; render(); },\n retry: () => { error = undefined; render(); } };\n}\n"],
5
- "mappings": "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",
6
- "names": ["typeNumber", "errorCorrectionLevel", "unicodeMap", "qrcode", "_num", "num", "_this", "data", "stringToBytes", "messages"]
3
+ "sources": ["../node_modules/qrcode-generator/dist/qrcode.mjs", "../src/core.ts", "../src/locales/en.json", "../src/locales/zh-CN.json", "../src/locales/zh-TW.json", "../src/locales/ja.json", "../src/locales/bn.json", "../src/locales/es.json", "../src/locales/fil.json", "../src/locales/hi.json", "../src/locales/id.json", "../src/locales/ms.json", "../src/locales/pt.json", "../src/locales/th.json", "../src/locales/vi.json", "../src/i18n.ts", "../src/view.ts", "../src/modal.ts"],
4
+ "sourcesContent": ["//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\n//---------------------------------------------------------------------\n// qrcode\n//---------------------------------------------------------------------\n\n/**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\nexport const qrcode = function(typeNumber, errorCorrectionLevel) {\n\n const PAD0 = 0xEC;\n const PAD1 = 0x11;\n\n let _typeNumber = typeNumber;\n const _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n let _modules = null;\n let _moduleCount = 0;\n let _dataCache = null;\n const _dataList = [];\n\n const _this = {};\n\n const makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n const modules = new Array(moduleCount);\n for (let row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (let col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n const setupPositionProbePattern = function(row, col) {\n\n for (let r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (let c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) 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 _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n const getBestMaskPattern = function() {\n\n let minLostPoint = 0;\n let pattern = 0;\n\n for (let i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n const lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n const setupTimingPattern = function() {\n\n for (let r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (let c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n const setupPositionAdjustPattern = function() {\n\n const pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (let i = 0; i < pos.length; i += 1) {\n\n for (let j = 0; j < pos.length; j += 1) {\n\n const row = pos[i];\n const col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (let r = -2; r <= 2; r += 1) {\n\n for (let c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n const setupTypeNumber = function(test) {\n\n const bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (let i = 0; i < 18; i += 1) {\n const mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (let i = 0; i < 18; i += 1) {\n const mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n const setupTypeInfo = function(test, maskPattern) {\n\n const data = (_errorCorrectionLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (let i = 0; i < 15; i += 1) {\n\n const mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (let i = 0; i < 15; i += 1) {\n\n const mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n const mapData = function(data, maskPattern) {\n\n let inc = -1;\n let row = _moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n const maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (let col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (let c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n let dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n const mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n const createBytes = function(buffer, rsBlocks) {\n\n let offset = 0;\n\n let maxDcCount = 0;\n let maxEcCount = 0;\n\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n\n for (let r = 0; r < rsBlocks.length; r += 1) {\n\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\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\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(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\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n const data = new Array(totalCodeCount);\n let index = 0;\n\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\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\n return data;\n };\n\n const createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n const buffer = qrBitBuffer();\n\n for (let i = 0; i < dataList.length; i += 1) {\n const data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n let newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n let typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n const buffer = qrBitBuffer();\n\n for (let i = 0; i < _dataList.length; i++) {\n const data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n let qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (let r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (let c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n let opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n let c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n const c = Math.floor( (x - min) / cellSize);\n const r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n\n let img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n const escapeXml = function(s) {\n let escaped = '';\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charAt(i);\n switch(c) {\n case '<': escaped += '&lt;'; break;\n case '>': escaped += '&gt;'; break;\n case '&': escaped += '&amp;'; break;\n case '\"': escaped += '&quot;'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n const _createHalfASCII = function(margin) {\n const cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n let y, x, r1, r2, p;\n\n const blocks = {\n '\u2588\u2588': '\u2588',\n '\u2588 ': '\u2580',\n ' \u2588': '\u2584',\n ' ': ' '\n };\n\n const blocksLastLineNoMargin = {\n '\u2588\u2588': '\u2580',\n '\u2588 ': '\u2580',\n ' \u2588': ' ',\n ' ': ' '\n };\n\n let ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '\u2588';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '\u2588';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('\u2580');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n let y, x, r, p;\n\n const white = Array(cellSize+1).join('\u2588\u2588');\n const black = Array(cellSize+1).join(' ');\n\n let ascii = '';\n let line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n const length = _this.getModuleCount();\n for (let row = 0; row < length; row++) {\n for (let col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrcode.stringToBytes\n//---------------------------------------------------------------------\n\nqrcode.stringToBytes = 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//---------------------------------------------------------------------\n// qrcode.createStringToBytes\n//---------------------------------------------------------------------\n\n/**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\nqrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n const unicodeMap = function() {\n\n const bin = base64DecodeInputStream(unicodeData);\n const read = function() {\n const b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n let count = 0;\n const unicodeMap = {};\n while (true) {\n const b0 = bin.read();\n if (b0 == -1) break;\n const b1 = read();\n const b2 = read();\n const b3 = read();\n const k = String.fromCharCode( (b0 << 8) | b1);\n const v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n const unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n const bytes = [];\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n const b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n};\n\n//---------------------------------------------------------------------\n// QRMode\n//---------------------------------------------------------------------\n\nconst QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n};\n\n//---------------------------------------------------------------------\n// QRErrorCorrectionLevel\n//---------------------------------------------------------------------\n\nconst QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n};\n\n//---------------------------------------------------------------------\n// QRMaskPattern\n//---------------------------------------------------------------------\n\nconst QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n};\n\n//---------------------------------------------------------------------\n// QRUtil\n//---------------------------------------------------------------------\n\nconst QRUtil = function() {\n\n const 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 ];\n const G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n const G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n const G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n const _this = {};\n\n const getBCHDigit = function(data) {\n let digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n let d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n let d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n let a = qrPolynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n const moduleCount = qrcode.getModuleCount();\n\n let lostPoint = 0;\n\n // LEVEL1\n\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount; col += 1) {\n\n let sameCount = 0;\n const dark = qrcode.isDark(row, col);\n\n for (let r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (let c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\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) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\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\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\n // LEVEL4\n\n let darkCount = 0;\n\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\n const ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// QRMath\n//---------------------------------------------------------------------\n\nconst QRMath = function() {\n\n const EXP_TABLE = new Array(256);\n const LOG_TABLE = new Array(256);\n\n // initialize tables\n for (let i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (let i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (let i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n const _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrPolynomial\n//---------------------------------------------------------------------\n\nconst qrPolynomial = function(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n const _num = function() {\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n const _num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n const _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n const num = new Array(_this.getLength() + e.getLength() - 1);\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\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n const ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n const num = new Array(_this.getLength() );\n for (let i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (let i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// QRRSBlock\n//---------------------------------------------------------------------\n\nconst QRRSBlock = function() {\n\n const RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\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\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n const qrRSBlock = function(totalCount, dataCount) {\n const _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n const _this = {};\n\n const getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n const rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n const length = rsBlock.length / 3;\n\n const list = [];\n\n for (let i = 0; i < length; i += 1) {\n\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n\n for (let j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrBitBuffer\n//---------------------------------------------------------------------\n\nconst qrBitBuffer = function() {\n\n const _buffer = [];\n let _length = 0;\n\n const _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n const bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (let i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n const bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrNumber\n//---------------------------------------------------------------------\n\nconst qrNumber = function(data) {\n\n const _mode = QRMode.MODE_NUMBER;\n const _data = data;\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n const data = _data;\n\n let i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n const strToNum = function(s) {\n let num = 0;\n for (let i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n const chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrAlphaNum\n//---------------------------------------------------------------------\n\nconst qrAlphaNum = function(data) {\n\n const _mode = QRMode.MODE_ALPHA_NUM;\n const _data = data;\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n const s = _data;\n\n let i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n const getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case '\\u0020' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qr8BitByte\n//---------------------------------------------------------------------\n\nconst qr8BitByte = function(data) {\n\n const _mode = QRMode.MODE_8BIT_BYTE;\n const _data = data;\n const _bytes = qrcode.stringToBytes(data);\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (let i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrKanji\n//---------------------------------------------------------------------\n\nconst qrKanji = function(data) {\n\n const _mode = QRMode.MODE_KANJI;\n const _data = data;\n\n const stringToBytes = qrcode.stringToBytes;\n !function(c, code) {\n // self test for sjis support.\n const test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n const _bytes = stringToBytes(data);\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n const data = _bytes;\n\n let i = 0;\n\n while (i + 1 < data.length) {\n\n let c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n};\n\n//=====================================================================\n// GIF Support etc.\n//\n\n//---------------------------------------------------------------------\n// byteArrayOutputStream\n//---------------------------------------------------------------------\n\nconst byteArrayOutputStream = function() {\n\n const _bytes = [];\n\n const _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (let i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (let i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n let s = '';\n s += '[';\n for (let i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// base64EncodeOutputStream\n//---------------------------------------------------------------------\n\nconst base64EncodeOutputStream = function() {\n\n let _buffer = 0;\n let _buflen = 0;\n let _length = 0;\n let _base64 = '';\n\n const _this = {};\n\n const writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n const encode = function(n) {\n if (n < 0) {\n throw 'n:' + n;\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n } else {\n throw 'n:' + n;\n }\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n const padlen = 3 - _length % 3;\n for (let i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// base64DecodeInputStream\n//---------------------------------------------------------------------\n\nconst base64DecodeInputStream = function(str) {\n\n const _str = str;\n let _pos = 0;\n let _buffer = 0;\n let _buflen = 0;\n\n const _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n const c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n const n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n const decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// gifImage (B/W)\n//---------------------------------------------------------------------\n\nconst gifImage = function(width, height) {\n\n const _width = width;\n const _height = height;\n const _data = new Array(width * height);\n\n const _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n const lzwMinCodeSize = 2;\n const raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n let offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n const bitOutputStream = function(out) {\n\n const _out = out;\n let _bitLength = 0;\n let _bitBuffer = 0;\n\n const _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n const getLZWRaster = function(lzwMinCodeSize) {\n\n const clearCode = 1 << lzwMinCodeSize;\n const endCode = (1 << lzwMinCodeSize) + 1;\n let bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n const table = lzwTable();\n\n for (let i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n const byteOut = byteArrayOutputStream();\n const bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n let dataIndex = 0;\n\n let s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n const c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n const lzwTable = function() {\n\n const _map = {};\n let _size = 0;\n\n const _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n};\n\nconst createDataURL = function(width, height, getPixel) {\n const gif = gifImage(width, height);\n for (let y = 0; y < height; y += 1) {\n for (let x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n const b = byteArrayOutputStream();\n gif.write(b);\n\n const base64 = base64EncodeOutputStream();\n const bytes = b.toByteArray();\n for (let i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n};\n\nexport default qrcode;\n\nexport const stringToBytes = qrcode.stringToBytes;\n", "import qr from 'qrcode-generator';\nimport type { BindingTicket } from './types.js';\nexport class AuthLinkError extends Error {\n readonly code: string;\n constructor(code: string) { super(code); this.name = 'AuthLinkError'; this.code = code; }\n}\nexport function deadline(value: string): number {\n const at = typeof value === 'string' ? Date.parse(value) : NaN;\n if (!Number.isFinite(at) || at <= Date.now()) throw new AuthLinkError('INVALID_EXPIRY');\n return at;\n}\n/** Public QR validation and local rendering only; no network requests. */\nexport function bindingImage(ticket: BindingTicket, expectedOrigin?: string): string {\n if (typeof ticket.qr !== 'string' || ticket.qr.length > 4096) throw new AuthLinkError('INVALID_QR');\n if (deadline(ticket.expiresAt) > Date.now() + 3_600_000) throw new AuthLinkError('INVALID_EXPIRY');\n let payload: Record<string, unknown>, origin: URL;\n try { payload = JSON.parse(ticket.qr); origin = new URL(String(payload.origin)); }\n catch { throw new AuthLinkError('INVALID_QR'); }\n const token = /^[A-Za-z0-9_-]{43}$/;\n const loopback = ['localhost', '127.0.0.1', '[::1]'].includes(origin.hostname);\n if (payload.v !== 1 || typeof payload.requestId !== 'string' || !token.test(payload.requestId) ||\n typeof payload.token !== 'string' || !token.test(payload.token) || origin.origin !== payload.origin ||\n (origin.protocol !== 'https:' && !(origin.protocol === 'http:' && loopback)) ||\n (expectedOrigin !== undefined && expectedOrigin !== origin.origin)) throw new AuthLinkError('INVALID_QR');\n const image = qr(0, 'M');\n image.addData(JSON.stringify({ v: 1, origin: origin.origin, requestId: payload.requestId, token: payload.token }), 'Byte');\n image.make();\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(image.createSvgTag({ cellSize: 4, margin: 16, scalable: true }))}`;\n}\n", "{\n \"bind\": \"Bind your phone\",\n \"confirm\": \"Confirm verification\",\n \"scan\": \"Scan with AuthLink\",\n \"code\": \"Matching digits\",\n \"help\": \"Approve in the App, then enter its 6-digit confirmation code here.\",\n \"waiting\": \"Waiting for your phone\",\n \"loading\": \"Connecting\",\n \"confirmed\": \"Confirmed\",\n \"rejected\": \"Rejected\",\n \"expired\": \"Request expired\",\n \"error\": \"Verification is unavailable\",\n \"retry\": \"Retry\",\n \"refresh\": \"New request\",\n \"updating\": \"Updating code\",\n \"close\": \"Close\",\n \"cancel\": \"Cancel\",\n \"autoUpdate\": \"Code updates automatically every 30 seconds\",\n \"expiring\": \"Request expiring soon\",\n \"confirmationCode\": \"App confirmation code\",\n \"submitCode\": \"Verify\",\n \"codeError\": \"The code could not be verified. Check the code and approval, then retry.\",\n \"codeLocked\": \"Too many incorrect codes. Close this window and start a new request.\",\n \"otpCode\": \"App verification code\",\n \"otpHelp\": \"Open AuthLink and enter this account\u2019s current six-digit code. No approval is needed.\",\n \"otpWaiting\": \"Enter the current code\",\n \"otpError\": \"Verification failed. Check the account; wait for a new code if already used. After repeated failures, try again later.\",\n \"otpSetup\": \"Enable verification codes on this account\u2019s card in the app first.\"\n}\n", "{\n \"bind\": \"\u7ED1\u5B9A\u624B\u673A\",\n \"confirm\": \"\u786E\u8BA4\u8EAB\u4EFD\u9A8C\u8BC1\",\n \"scan\": \"\u4F7F\u7528 AuthLink \u626B\u63CF\u4E8C\u7EF4\u7801\",\n \"code\": \"\u6838\u5BF9\u6570\u5B57\",\n \"help\": \"\u5728 App \u6838\u5BF9\u5E76\u6279\u51C6\u540E\uFF0C\u5C06 App \u663E\u793A\u7684 6 \u4F4D\u786E\u8BA4\u7801\u8F93\u5165\u4E0B\u65B9\u3002\",\n \"waiting\": \"\u7B49\u5F85\u624B\u673A\u786E\u8BA4\",\n \"loading\": \"\u6B63\u5728\u8FDE\u63A5\",\n \"confirmed\": \"\u5DF2\u786E\u8BA4\",\n \"rejected\": \"\u5DF2\u62D2\u7EDD\",\n \"expired\": \"\u8BF7\u6C42\u5DF2\u8FC7\u671F\",\n \"error\": \"\u6682\u65F6\u65E0\u6CD5\u5B8C\u6210\u9A8C\u8BC1\",\n \"retry\": \"\u91CD\u8BD5\",\n \"refresh\": \"\u91CD\u65B0\u53D1\u8D77\",\n \"updating\": \"\u6B63\u5728\u66F4\u65B0\u6570\u5B57\",\n \"close\": \"\u5173\u95ED\",\n \"cancel\": \"\u53D6\u6D88\",\n \"autoUpdate\": \"\u6838\u5BF9\u7801\u6BCF 30 \u79D2\u81EA\u52A8\u66F4\u65B0\",\n \"expiring\": \"\u8BF7\u6C42\u5373\u5C06\u8FC7\u671F\",\n \"confirmationCode\": \"App \u786E\u8BA4\u7801\",\n \"submitCode\": \"\u63D0\u4EA4\u9A8C\u8BC1\",\n \"codeError\": \"\u9A8C\u8BC1\u672A\u901A\u8FC7\uFF0C\u8BF7\u68C0\u67E5\u786E\u8BA4\u7801\u548C\u624B\u673A\u6279\u51C6\u72B6\u6001\u540E\u91CD\u8BD5\u3002\",\n \"codeLocked\": \"\u786E\u8BA4\u7801\u8F93\u5165\u9519\u8BEF\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7\u5173\u95ED\u7A97\u53E3\u540E\u91CD\u65B0\u53D1\u8D77\u8BF7\u6C42\u3002\",\n \"otpCode\": \"App \u52A8\u6001\u7801\",\n \"otpHelp\": \"\u6253\u5F00 AuthLink\uFF0C\u8F93\u5165\u8BE5\u8D26\u53F7\u5F53\u524D\u7684\u516D\u4F4D\u52A8\u6001\u7801\uFF0C\u65E0\u9700\u6279\u51C6\u8BF7\u6C42\u3002\",\n \"otpWaiting\": \"\u8BF7\u8F93\u5165\u5F53\u524D\u52A8\u6001\u7801\",\n \"otpError\": \"\u9A8C\u8BC1\u672A\u901A\u8FC7\u3002\u8BF7\u6838\u5BF9\u8D26\u53F7\uFF1B\u5DF2\u4F7F\u7528\u7684\u7801\u9700\u7B49\u5F85\u66F4\u65B0\uFF0C\u591A\u6B21\u5931\u8D25\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002\",\n \"otpSetup\": \"\u8BF7\u5148\u5728 App \u7684\u8D26\u53F7\u5361\u7247\u4E2D\u542F\u7528\u52A8\u6001\u7801\u3002\"\n}\n", "{\n \"bind\": \"\u7D81\u5B9A\u624B\u6A5F\",\n \"confirm\": \"\u78BA\u8A8D\u8EAB\u5206\u9A57\u8B49\",\n \"scan\": \"\u4F7F\u7528 AuthLink \u6383\u63CF QR \u78BC\",\n \"code\": \"\u6838\u5C0D\u6578\u5B57\",\n \"help\": \"\u5728 App \u6838\u5C0D\u4E26\u6279\u51C6\u5F8C\uFF0C\u5C07 App \u986F\u793A\u7684 6 \u4F4D\u78BA\u8A8D\u78BC\u8F38\u5165\u4E0B\u65B9\u3002\",\n \"waiting\": \"\u7B49\u5F85\u624B\u6A5F\u78BA\u8A8D\",\n \"loading\": \"\u6B63\u5728\u9023\u7DDA\",\n \"confirmed\": \"\u5DF2\u78BA\u8A8D\",\n \"rejected\": \"\u5DF2\u62D2\u7D55\",\n \"expired\": \"\u8ACB\u6C42\u5DF2\u904E\u671F\",\n \"error\": \"\u66AB\u6642\u7121\u6CD5\u5B8C\u6210\u9A57\u8B49\",\n \"retry\": \"\u91CD\u8A66\",\n \"refresh\": \"\u91CD\u65B0\u767C\u8D77\",\n \"updating\": \"\u6B63\u5728\u66F4\u65B0\u6578\u5B57\",\n \"close\": \"\u95DC\u9589\",\n \"cancel\": \"\u53D6\u6D88\",\n \"autoUpdate\": \"\u6838\u5C0D\u78BC\u6BCF 30 \u79D2\u81EA\u52D5\u66F4\u65B0\",\n \"expiring\": \"\u8ACB\u6C42\u5373\u5C07\u5230\u671F\",\n \"confirmationCode\": \"App \u78BA\u8A8D\u78BC\",\n \"submitCode\": \"\u63D0\u4EA4\u9A57\u8B49\",\n \"codeError\": \"\u9A57\u8B49\u672A\u901A\u904E\uFF0C\u8ACB\u6AA2\u67E5\u78BA\u8A8D\u78BC\u53CA\u624B\u6A5F\u6279\u51C6\u72C0\u614B\u5F8C\u91CD\u8A66\u3002\",\n \"codeLocked\": \"\u78BA\u8A8D\u78BC\u8F38\u5165\u932F\u8AA4\u6B21\u6578\u904E\u591A\uFF0C\u8ACB\u95DC\u9589\u8996\u7A97\u5F8C\u91CD\u65B0\u767C\u8D77\u8ACB\u6C42\u3002\",\n \"otpCode\": \"App \u52D5\u614B\u78BC\",\n \"otpHelp\": \"\u958B\u555F AuthLink\uFF0C\u8F38\u5165\u6B64\u5E33\u865F\u76EE\u524D\u7684\u516D\u4F4D\u52D5\u614B\u78BC\uFF0C\u7121\u9700\u6279\u51C6\u8ACB\u6C42\u3002\",\n \"otpWaiting\": \"\u8ACB\u8F38\u5165\u76EE\u524D\u7684\u52D5\u614B\u78BC\",\n \"otpError\": \"\u9A57\u8B49\u672A\u901A\u904E\u3002\u8ACB\u6838\u5C0D\u5E33\u865F\uFF1B\u5DF2\u4F7F\u7528\u7684\u78BC\u9700\u7B49\u5F85\u66F4\u65B0\uFF0C\u591A\u6B21\u5931\u6557\u8ACB\u7A0D\u5F8C\u91CD\u8A66\u3002\",\n \"otpSetup\": \"\u8ACB\u5148\u5728 App \u7684\u5E33\u865F\u5361\u7247\u4E2D\u555F\u7528\u52D5\u614B\u78BC\u3002\"\n}\n", "{\n \"bind\": \"\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3092\u767B\u9332\",\n \"confirm\": \"\u672C\u4EBA\u78BA\u8A8D\",\n \"scan\": \"AuthLink \u3067 QR \u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\",\n \"code\": \"\u7167\u5408\u7528\u306E\u6570\u5B57\",\n \"help\": \"App \u3067\u627F\u8A8D\u3057\u305F\u5F8C\u3001\u8868\u793A\u3055\u308C\u305F6\u6841\u306E\u78BA\u8A8D\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\",\n \"waiting\": \"\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u306E\u78BA\u8A8D\u3092\u5F85\u3063\u3066\u3044\u307E\u3059\",\n \"loading\": \"\u63A5\u7D9A\u4E2D\",\n \"confirmed\": \"\u78BA\u8A8D\u6E08\u307F\",\n \"rejected\": \"\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\",\n \"expired\": \"\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u307E\u3057\u305F\",\n \"error\": \"\u672C\u4EBA\u78BA\u8A8D\u3092\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093\",\n \"retry\": \"\u518D\u8A66\u884C\",\n \"refresh\": \"\u65B0\u3057\u3044\u30EA\u30AF\u30A8\u30B9\u30C8\",\n \"updating\": \"\u30B3\u30FC\u30C9\u3092\u66F4\u65B0\u4E2D\",\n \"close\": \"\u9589\u3058\u308B\",\n \"cancel\": \"\u30AD\u30E3\u30F3\u30BB\u30EB\",\n \"autoUpdate\": \"\u7167\u5408\u30B3\u30FC\u30C9\u306F30\u79D2\u3054\u3068\u306B\u81EA\u52D5\u66F4\u65B0\",\n \"expiring\": \"\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u6709\u52B9\u671F\u9650\u304C\u307E\u3082\u306A\u304F\u5207\u308C\u307E\u3059\",\n \"confirmationCode\": \"App \u306E\u78BA\u8A8D\u30B3\u30FC\u30C9\",\n \"submitCode\": \"\u78BA\u8A8D\u3059\u308B\",\n \"codeError\": \"\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B3\u30FC\u30C9\u3068\u627F\u8A8D\u72B6\u6CC1\u3092\u78BA\u8A8D\u3057\u3066\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\",\n \"codeLocked\": \"\u30B3\u30FC\u30C9\u306E\u8AA4\u5165\u529B\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u753B\u9762\u3092\u9589\u3058\u3001\u65B0\u3057\u3044\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u958B\u59CB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\",\n \"otpCode\": \"\u30A2\u30D7\u30EA\u306E\u8A8D\u8A3C\u30B3\u30FC\u30C9\",\n \"otpHelp\": \"AuthLink \u3092\u958B\u304D\u3001\u3053\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u73FE\u5728\u306E6\u6841\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u627F\u8A8D\u64CD\u4F5C\u306F\u4E0D\u8981\u3067\u3059\u3002\",\n \"otpWaiting\": \"\u73FE\u5728\u306E\u30B3\u30FC\u30C9\u3092\u5165\u529B\",\n \"otpError\": \"\u8A8D\u8A3C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u78BA\u8A8D\u3057\u3001\u4F7F\u7528\u6E08\u307F\u306A\u3089\u6B21\u306E\u30B3\u30FC\u30C9\u3092\u5F85\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u5931\u6557\u304C\u7D9A\u304F\u5834\u5408\u306F\u6642\u9593\u3092\u304A\u3044\u3066\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002\",\n \"otpSetup\": \"\u5148\u306B\u30A2\u30D7\u30EA\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u753B\u9762\u3067\u8A8D\u8A3C\u30B3\u30FC\u30C9\u3092\u6709\u52B9\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\"\n}\n", "{\n \"bind\": \"\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8 \u09AF\u09C1\u0995\u09CD\u09A4 \u0995\u09B0\u09C1\u09A8\",\n \"confirm\": \"\u09AF\u09BE\u099A\u09BE\u0987\u0995\u09B0\u09A3 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u0995\u09B0\u09C1\u09A8\",\n \"scan\": \"AuthLink \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8\",\n \"code\": \"\u09AE\u09BF\u09B2\u09BF\u09AF\u09BC\u09C7 \u09A6\u09C7\u0996\u09BE\u09B0 \u0995\u09CB\u09A1\",\n \"help\": \"\u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u09A6\u09BF\u09A8, \u09A4\u09BE\u09B0\u09AA\u09B0 \u098F\u0996\u09BE\u09A8\u09C7 \u09EC \u09B8\u0982\u0996\u09CD\u09AF\u09BE\u09B0 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4\u0995\u09B0\u09A3 \u0995\u09CB\u09A1 \u09B2\u09BF\u0996\u09C1\u09A8\u0964\",\n \"waiting\": \"\u09AB\u09CB\u09A8\u09C7 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4\u0995\u09B0\u09A3\u09C7\u09B0 \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE\u09AF\u09BC\",\n \"loading\": \"\u09B8\u0982\u09AF\u09CB\u0997 \u0995\u09B0\u09BE \u09B9\u099A\u09CD\u099B\u09C7\",\n \"confirmed\": \"\u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\",\n \"rejected\": \"\u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u0996\u09CD\u09AF\u09BE\u09A4\",\n \"expired\": \"\u0985\u09A8\u09C1\u09B0\u09CB\u09A7\u09C7\u09B0 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u09B6\u09C7\u09B7\",\n \"error\": \"\u09AF\u09BE\u099A\u09BE\u0987\u0995\u09B0\u09A3 \u098F\u0996\u09A8 \u09B8\u09AE\u09CD\u09AD\u09AC \u09A8\u09AF\u09BC\",\n \"retry\": \"\u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\",\n \"refresh\": \"\u09A8\u09A4\u09C1\u09A8 \u0985\u09A8\u09C1\u09B0\u09CB\u09A7\",\n \"updating\": \"\u0995\u09CB\u09A1 \u0986\u09AA\u09A1\u09C7\u099F \u09B9\u099A\u09CD\u099B\u09C7\",\n \"close\": \"\u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C1\u09A8\",\n \"cancel\": \"\u09AC\u09BE\u09A4\u09BF\u09B2\",\n \"autoUpdate\": \"\u0995\u09CB\u09A1 \u09AA\u09CD\u09B0\u09A4\u09BF \u09E9\u09E6 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7 \u09B8\u09CD\u09AC\u09AF\u09BC\u0982\u0995\u09CD\u09B0\u09BF\u09AF\u09BC\u09AD\u09BE\u09AC\u09C7 \u09AC\u09A6\u09B2\u09BE\u09AF\u09BC\",\n \"expiring\": \"\u0985\u09A8\u09C1\u09B0\u09CB\u09A7\u09C7\u09B0 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u09B6\u09C0\u0998\u09CD\u09B0\u0987 \u09B6\u09C7\u09B7 \u09B9\u09AC\u09C7\",\n \"confirmationCode\": \"\u0985\u09CD\u09AF\u09BE\u09AA\u09C7\u09B0 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4\u0995\u09B0\u09A3 \u0995\u09CB\u09A1\",\n \"submitCode\": \"\u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C1\u09A8\",\n \"codeError\": \"\u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF\u0964 \u0995\u09CB\u09A1 \u0993 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u09AA\u09B0\u09C0\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964\",\n \"codeLocked\": \"\u0985\u09A8\u09C7\u0995\u09AC\u09BE\u09B0 \u09AD\u09C1\u09B2 \u0995\u09CB\u09A1 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u0989\u0987\u09A8\u09CD\u09A1\u09CB \u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C7 \u09A8\u09A4\u09C1\u09A8 \u0985\u09A8\u09C1\u09B0\u09CB\u09A7 \u09B6\u09C1\u09B0\u09C1 \u0995\u09B0\u09C1\u09A8\u0964\",\n \"otpCode\": \"\u0985\u09CD\u09AF\u09BE\u09AA\u09C7\u09B0 \u0995\u09CB\u09A1\",\n \"otpHelp\": \"AuthLink \u0996\u09C1\u09B2\u09C7 \u098F\u0987 \u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F\u09C7\u09B0 \u09AC\u09B0\u09CD\u09A4\u09AE\u09BE\u09A8 \u099B\u09AF\u09BC \u0985\u0999\u09CD\u0995\u09C7\u09B0 \u0995\u09CB\u09A1 \u09B2\u09BF\u0996\u09C1\u09A8\u0964 \u0985\u09A8\u09C1\u09B0\u09CB\u09A7 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8\u09C7\u09B0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8 \u09A8\u09C7\u0987\u0964\",\n \"otpWaiting\": \"\u09AC\u09B0\u09CD\u09A4\u09AE\u09BE\u09A8 \u0995\u09CB\u09A1 \u09B2\u09BF\u0996\u09C1\u09A8\",\n \"otpError\": \"\u09AF\u09BE\u099A\u09BE\u0987 \u09AC\u09CD\u09AF\u09B0\u09CD\u09A5\u0964 \u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F \u09AA\u09B0\u09C0\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09C1\u09A8 \u098F\u09AC\u0982 \u09AC\u09CD\u09AF\u09AC\u09B9\u09C3\u09A4 \u0995\u09CB\u09A1 \u09B9\u09B2\u09C7 \u09A8\u09A4\u09C1\u09A8 \u0995\u09CB\u09A1\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09C1\u09A8\u0964 \u09AC\u09BE\u09B0\u09AC\u09BE\u09B0 \u09AC\u09CD\u09AF\u09B0\u09CD\u09A5 \u09B9\u09B2\u09C7 \u09AA\u09B0\u09C7 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964\",\n \"otpSetup\": \"\u09AA\u09CD\u09B0\u09A5\u09AE\u09C7 \u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u098F\u0987 \u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F\u09C7\u09B0 \u0995\u09BE\u09B0\u09CD\u09A1\u09C7 \u0995\u09CB\u09A1 \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8\u0964\"\n}\n", "{\n \"bind\": \"Vincula tu tel\u00E9fono\",\n \"confirm\": \"Confirma la verificaci\u00F3n\",\n \"scan\": \"Escanea con AuthLink\",\n \"code\": \"C\u00F3digo de comparaci\u00F3n\",\n \"help\": \"Aprueba en la app e introduce aqu\u00ED su c\u00F3digo de 6 d\u00EDgitos.\",\n \"waiting\": \"Esperando la confirmaci\u00F3n del tel\u00E9fono\",\n \"loading\": \"Conectando\",\n \"confirmed\": \"Confirmado\",\n \"rejected\": \"Rechazado\",\n \"expired\": \"La solicitud ha caducado\",\n \"error\": \"La verificaci\u00F3n no est\u00E1 disponible\",\n \"retry\": \"Reintentar\",\n \"refresh\": \"Nueva solicitud\",\n \"updating\": \"Actualizando el c\u00F3digo\",\n \"close\": \"Cerrar\",\n \"cancel\": \"Cancelar\",\n \"autoUpdate\": \"El c\u00F3digo se actualiza autom\u00E1ticamente cada 30 segundos\",\n \"expiring\": \"La solicitud est\u00E1 por caducar\",\n \"confirmationCode\": \"C\u00F3digo de confirmaci\u00F3n de la app\",\n \"submitCode\": \"Verificar\",\n \"codeError\": \"No se pudo verificar. Revisa el c\u00F3digo y la aprobaci\u00F3n.\",\n \"codeLocked\": \"Demasiados c\u00F3digos incorrectos. Cierra la ventana e inicia una nueva solicitud.\",\n \"otpCode\": \"C\u00F3digo de la app\",\n \"otpHelp\": \"Abre AuthLink e introduce el c\u00F3digo actual de seis d\u00EDgitos de esta cuenta. No hace falta aprobar una solicitud.\",\n \"otpWaiting\": \"Introduce el c\u00F3digo actual\",\n \"otpError\": \"No se pudo verificar. Comprueba la cuenta y espera un c\u00F3digo nuevo si ya lo usaste. Si fallas varias veces, int\u00E9ntalo m\u00E1s tarde.\",\n \"otpSetup\": \"Activa primero los c\u00F3digos en la tarjeta de esta cuenta en la app.\"\n}\n", "{\n \"bind\": \"Iugnay ang iyong telepono\",\n \"confirm\": \"Kumpirmahin ang pagpapatunay\",\n \"scan\": \"Mag-scan gamit ang AuthLink\",\n \"code\": \"Code na paghahambingin\",\n \"help\": \"Aprubahan sa app, saka ilagay dito ang 6-digit na confirmation code.\",\n \"waiting\": \"Hinihintay ang kumpirmasyon sa telepono\",\n \"loading\": \"Kumokonekta\",\n \"confirmed\": \"Nakumpirma\",\n \"rejected\": \"Tinanggihan\",\n \"expired\": \"Nag-expire ang kahilingan\",\n \"error\": \"Hindi available ang pagpapatunay\",\n \"retry\": \"Subukan muli\",\n \"refresh\": \"Bagong kahilingan\",\n \"updating\": \"Ina-update ang code\",\n \"close\": \"Isara\",\n \"cancel\": \"Kanselahin\",\n \"autoUpdate\": \"Awtomatikong nagbabago ang code kada 30 segundo\",\n \"expiring\": \"Malapit nang mag-expire ang kahilingan\",\n \"confirmationCode\": \"Confirmation code ng app\",\n \"submitCode\": \"I-verify\",\n \"codeError\": \"Hindi ma-verify. Suriin ang code at pag-apruba at subukan muli.\",\n \"codeLocked\": \"Masyadong maraming maling code. Isara ang window at magsimula ng bagong request.\",\n \"otpCode\": \"Code ng app\",\n \"otpHelp\": \"Buksan ang AuthLink at ilagay ang kasalukuyang anim na digit na code ng account na ito. Hindi kailangang aprubahan ang request.\",\n \"otpWaiting\": \"Ilagay ang kasalukuyang code\",\n \"otpError\": \"Hindi napatunayan. Tingnan ang account at maghintay ng bagong code kung nagamit na. Subukang muli mamaya kung maraming maling pagtatangka.\",\n \"otpSetup\": \"Paganahin muna ang mga code sa card ng account na ito sa app.\"\n}\n", "{\n \"bind\": \"\u0905\u092A\u0928\u093E \u092B\u093C\u094B\u0928 \u091C\u094B\u0921\u093C\u0947\u0902\",\n \"confirm\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u0928 \u0915\u0940 \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u0930\u0947\u0902\",\n \"scan\": \"AuthLink \u0938\u0947 \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902\",\n \"code\": \"\u092E\u093F\u0932\u093E\u0928 \u0915\u094B\u0921\",\n \"help\": \"\u0910\u092A \u092E\u0947\u0902 \u0938\u094D\u0935\u0940\u0915\u0943\u0924\u093F \u0926\u0947\u0902, \u092B\u093F\u0930 \u092F\u0939\u093E\u0901 6 \u0905\u0902\u0915\u094B\u0902 \u0915\u093E \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u094B\u0921 \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902\u0964\",\n \"waiting\": \"\u092B\u093C\u094B\u0928 \u092A\u0930 \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0939\u0948\",\n \"loading\": \"\u0915\u0928\u0947\u0915\u094D\u091F \u0939\u094B \u0930\u0939\u093E \u0939\u0948\",\n \"confirmed\": \"\u092A\u0941\u0937\u094D\u091F\u093F \u0939\u094B \u0917\u0908\",\n \"rejected\": \"\u0905\u0938\u094D\u0935\u0940\u0915\u0943\u0924\",\n \"expired\": \"\u0905\u0928\u0941\u0930\u094B\u0927 \u0915\u0940 \u0938\u092E\u092F \u0938\u0940\u092E\u093E \u0938\u092E\u093E\u092A\u094D\u0924\",\n \"error\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u0928 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 \u0939\u0948\",\n \"retry\": \"\u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\",\n \"refresh\": \"\u0928\u092F\u093E \u0905\u0928\u0941\u0930\u094B\u0927\",\n \"updating\": \"\u0915\u094B\u0921 \u0905\u092A\u0921\u0947\u091F \u0939\u094B \u0930\u0939\u093E \u0939\u0948\",\n \"close\": \"\u092C\u0902\u0926 \u0915\u0930\u0947\u0902\",\n \"cancel\": \"\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902\",\n \"autoUpdate\": \"\u0915\u094B\u0921 \u0939\u0930 30 \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 \u0905\u092A\u0928\u0947 \u0906\u092A \u092C\u0926\u0932\u0924\u093E \u0939\u0948\",\n \"expiring\": \"\u0905\u0928\u0941\u0930\u094B\u0927 \u0915\u0940 \u0938\u092E\u092F-\u0938\u0940\u092E\u093E \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B\u0928\u0947 \u0935\u093E\u0932\u0940 \u0939\u0948\",\n \"confirmationCode\": \"\u0910\u092A \u0915\u093E \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u094B\u0921\",\n \"submitCode\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u093F\u0924 \u0915\u0930\u0947\u0902\",\n \"codeError\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u0928 \u0935\u093F\u092B\u0932 \u0930\u0939\u093E\u0964 \u0915\u094B\u0921 \u0914\u0930 \u0938\u094D\u0935\u0940\u0915\u0943\u0924\u093F \u091C\u093E\u0901\u091A\u0915\u0930 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964\",\n \"codeLocked\": \"\u092C\u0939\u0941\u0924 \u0905\u0927\u093F\u0915 \u0917\u0932\u0924 \u0915\u094B\u0921\u0964 \u0935\u093F\u0902\u0921\u094B \u092C\u0902\u0926 \u0915\u0930\u0915\u0947 \u0928\u092F\u093E \u0905\u0928\u0941\u0930\u094B\u0927 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902\u0964\",\n \"otpCode\": \"\u0910\u092A \u0915\u093E \u0915\u094B\u0921\",\n \"otpHelp\": \"AuthLink \u0916\u094B\u0932\u0947\u0902 \u0914\u0930 \u0907\u0938 \u0916\u093E\u0924\u0947 \u0915\u093E \u0935\u0930\u094D\u0924\u092E\u093E\u0928 \u091B\u0939 \u0905\u0902\u0915\u094B\u0902 \u0915\u093E \u0915\u094B\u0921 \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902\u0964 \u0905\u0928\u0941\u0930\u094B\u0927 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0928\u0947 \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0928\u0939\u0940\u0902 \u0939\u0948\u0964\",\n \"otpWaiting\": \"\u0935\u0930\u094D\u0924\u092E\u093E\u0928 \u0915\u094B\u0921 \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902\",\n \"otpError\": \"\u0938\u0924\u094D\u092F\u093E\u092A\u0928 \u0905\u0938\u092B\u0932\u0964 \u0916\u093E\u0924\u093E \u091C\u093E\u0901\u091A\u0947\u0902 \u0914\u0930 \u0909\u092A\u092F\u094B\u0917 \u0939\u094B \u091A\u0941\u0915\u093E \u0939\u094B \u0924\u094B \u0928\u090F \u0915\u094B\u0921 \u0915\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0915\u0930\u0947\u0902\u0964 \u092C\u093E\u0930-\u092C\u093E\u0930 \u0905\u0938\u092B\u0932 \u0939\u094B\u0928\u0947 \u092A\u0930 \u092C\u093E\u0926 \u092E\u0947\u0902 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964\",\n \"otpSetup\": \"\u092A\u0939\u0932\u0947 \u0910\u092A \u092E\u0947\u0902 \u0907\u0938 \u0916\u093E\u0924\u0947 \u0915\u0947 \u0915\u093E\u0930\u094D\u0921 \u092A\u0930 \u0915\u094B\u0921 \u0938\u0915\u094D\u0937\u092E \u0915\u0930\u0947\u0902\u0964\"\n}\n", "{\n \"bind\": \"Tautkan ponsel Anda\",\n \"confirm\": \"Konfirmasi verifikasi\",\n \"scan\": \"Pindai dengan AuthLink\",\n \"code\": \"Kode pencocokan\",\n \"help\": \"Setujui di aplikasi, lalu masukkan kode konfirmasi 6 digit di sini.\",\n \"waiting\": \"Menunggu konfirmasi dari ponsel\",\n \"loading\": \"Menghubungkan\",\n \"confirmed\": \"Dikonfirmasi\",\n \"rejected\": \"Ditolak\",\n \"expired\": \"Permintaan kedaluwarsa\",\n \"error\": \"Verifikasi tidak tersedia\",\n \"retry\": \"Coba lagi\",\n \"refresh\": \"Permintaan baru\",\n \"updating\": \"Memperbarui kode\",\n \"close\": \"Tutup\",\n \"cancel\": \"Batal\",\n \"autoUpdate\": \"Kode diperbarui otomatis setiap 30 detik\",\n \"expiring\": \"Permintaan akan segera kedaluwarsa\",\n \"confirmationCode\": \"Kode konfirmasi aplikasi\",\n \"submitCode\": \"Verifikasi\",\n \"codeError\": \"Verifikasi gagal. Periksa kode dan persetujuan, lalu coba lagi.\",\n \"codeLocked\": \"Terlalu banyak kode salah. Tutup jendela dan mulai permintaan baru.\",\n \"otpCode\": \"Kode aplikasi\",\n \"otpHelp\": \"Buka AuthLink dan masukkan kode enam digit terkini untuk akun ini. Tidak perlu menyetujui permintaan.\",\n \"otpWaiting\": \"Masukkan kode terkini\",\n \"otpError\": \"Verifikasi gagal. Periksa akun dan tunggu kode baru jika sudah digunakan. Setelah beberapa kegagalan, coba lagi nanti.\",\n \"otpSetup\": \"Aktifkan kode di kartu akun ini dalam aplikasi terlebih dahulu.\"\n}\n", "{\n \"bind\": \"Pautkan telefon anda\",\n \"confirm\": \"Sahkan pengesahan\",\n \"scan\": \"Imbas dengan AuthLink\",\n \"code\": \"Kod padanan\",\n \"help\": \"Luluskan dalam aplikasi, kemudian masukkan kod pengesahan 6 digit di sini.\",\n \"waiting\": \"Menunggu pengesahan daripada telefon\",\n \"loading\": \"Sedang menyambung\",\n \"confirmed\": \"Disahkan\",\n \"rejected\": \"Ditolak\",\n \"expired\": \"Permintaan telah tamat tempoh\",\n \"error\": \"Pengesahan tidak tersedia\",\n \"retry\": \"Cuba lagi\",\n \"refresh\": \"Permintaan baharu\",\n \"updating\": \"Sedang mengemas kini kod\",\n \"close\": \"Tutup\",\n \"cancel\": \"Batal\",\n \"autoUpdate\": \"Kod dikemas kini secara automatik setiap 30 saat\",\n \"expiring\": \"Permintaan akan tamat tempoh tidak lama lagi\",\n \"confirmationCode\": \"Kod pengesahan aplikasi\",\n \"submitCode\": \"Sahkan\",\n \"codeError\": \"Pengesahan gagal. Semak kod dan kelulusan, kemudian cuba lagi.\",\n \"codeLocked\": \"Terlalu banyak kod salah. Tutup tetingkap dan mulakan permintaan baharu.\",\n \"otpCode\": \"Kod aplikasi\",\n \"otpHelp\": \"Buka AuthLink dan masukkan kod enam digit semasa untuk akaun ini. Tiada kelulusan permintaan diperlukan.\",\n \"otpWaiting\": \"Masukkan kod semasa\",\n \"otpError\": \"Pengesahan gagal. Semak akaun dan tunggu kod baharu jika sudah digunakan. Selepas beberapa kegagalan, cuba lagi kemudian.\",\n \"otpSetup\": \"Aktifkan kod pada kad akaun ini dalam aplikasi dahulu.\"\n}\n", "{\n \"bind\": \"Vincule seu celular\",\n \"confirm\": \"Confirme a verifica\u00E7\u00E3o\",\n \"scan\": \"Escaneie com o AuthLink\",\n \"code\": \"C\u00F3digo de compara\u00E7\u00E3o\",\n \"help\": \"Aprove no app e digite aqui o c\u00F3digo de 6 d\u00EDgitos.\",\n \"waiting\": \"Aguardando confirma\u00E7\u00E3o no celular\",\n \"loading\": \"Conectando\",\n \"confirmed\": \"Confirmado\",\n \"rejected\": \"Recusado\",\n \"expired\": \"A solicita\u00E7\u00E3o expirou\",\n \"error\": \"A verifica\u00E7\u00E3o est\u00E1 indispon\u00EDvel\",\n \"retry\": \"Tentar novamente\",\n \"refresh\": \"Nova solicita\u00E7\u00E3o\",\n \"updating\": \"Atualizando o c\u00F3digo\",\n \"close\": \"Fechar\",\n \"cancel\": \"Cancelar\",\n \"autoUpdate\": \"O c\u00F3digo \u00E9 atualizado automaticamente a cada 30 segundos\",\n \"expiring\": \"A solicita\u00E7\u00E3o est\u00E1 prestes a expirar\",\n \"confirmationCode\": \"C\u00F3digo de confirma\u00E7\u00E3o do app\",\n \"submitCode\": \"Verificar\",\n \"codeError\": \"N\u00E3o foi poss\u00EDvel verificar. Confira o c\u00F3digo e a aprova\u00E7\u00E3o.\",\n \"codeLocked\": \"Muitos c\u00F3digos incorretos. Feche a janela e inicie uma nova solicita\u00E7\u00E3o.\",\n \"otpCode\": \"C\u00F3digo do aplicativo\",\n \"otpHelp\": \"Abra o AuthLink e digite o c\u00F3digo atual de seis d\u00EDgitos desta conta. N\u00E3o \u00E9 necess\u00E1rio aprovar uma solicita\u00E7\u00E3o.\",\n \"otpWaiting\": \"Digite o c\u00F3digo atual\",\n \"otpError\": \"Falha na verifica\u00E7\u00E3o. Confira a conta e aguarde um novo c\u00F3digo se j\u00E1 o usou. Ap\u00F3s v\u00E1rias falhas, tente mais tarde.\",\n \"otpSetup\": \"Ative primeiro os c\u00F3digos no cart\u00E3o desta conta no aplicativo.\"\n}\n", "{\n \"bind\": \"\u0E1C\u0E39\u0E01\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\",\n \"confirm\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E01\u0E32\u0E23\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\",\n \"scan\": \"\u0E2A\u0E41\u0E01\u0E19\u0E14\u0E49\u0E27\u0E22 AuthLink\",\n \"code\": \"\u0E23\u0E2B\u0E31\u0E2A\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E40\u0E1B\u0E23\u0E35\u0E22\u0E1A\u0E40\u0E17\u0E35\u0E22\u0E1A\",\n \"help\": \"\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E43\u0E19\u0E41\u0E2D\u0E1B \u0E41\u0E25\u0E49\u0E27\u0E01\u0E23\u0E2D\u0E01\u0E23\u0E2B\u0E31\u0E2A\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19 6 \u0E2B\u0E25\u0E31\u0E01\u0E17\u0E35\u0E48\u0E19\u0E35\u0E48\",\n \"waiting\": \"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E23\u0E2D\u0E01\u0E32\u0E23\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E08\u0E32\u0E01\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\",\n \"loading\": \"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E0A\u0E37\u0E48\u0E2D\u0E21\u0E15\u0E48\u0E2D\",\n \"confirmed\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E41\u0E25\u0E49\u0E27\",\n \"rejected\": \"\u0E1B\u0E0F\u0E34\u0E40\u0E2A\u0E18\u0E41\u0E25\u0E49\u0E27\",\n \"expired\": \"\u0E04\u0E33\u0E02\u0E2D\u0E2B\u0E21\u0E14\u0E2D\u0E32\u0E22\u0E38\",\n \"error\": \"\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E44\u0E14\u0E49\u0E43\u0E19\u0E02\u0E13\u0E30\u0E19\u0E35\u0E49\",\n \"retry\": \"\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\",\n \"refresh\": \"\u0E04\u0E33\u0E02\u0E2D\u0E43\u0E2B\u0E21\u0E48\",\n \"updating\": \"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E23\u0E2B\u0E31\u0E2A\",\n \"close\": \"\u0E1B\u0E34\u0E14\",\n \"cancel\": \"\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01\",\n \"autoUpdate\": \"\u0E23\u0E2B\u0E31\u0E2A\u0E08\u0E30\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E2D\u0E31\u0E15\u0E42\u0E19\u0E21\u0E31\u0E15\u0E34\u0E17\u0E38\u0E01 30 \u0E27\u0E34\u0E19\u0E32\u0E17\u0E35\",\n \"expiring\": \"\u0E04\u0E33\u0E02\u0E2D\u0E43\u0E01\u0E25\u0E49\u0E2B\u0E21\u0E14\u0E2D\u0E32\u0E22\u0E38\",\n \"confirmationCode\": \"\u0E23\u0E2B\u0E31\u0E2A\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E08\u0E32\u0E01\u0E41\u0E2D\u0E1B\",\n \"submitCode\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\",\n \"codeError\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08 \u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E23\u0E2B\u0E31\u0E2A\u0E41\u0E25\u0E30\u0E01\u0E32\u0E23\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E41\u0E25\u0E49\u0E27\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\",\n \"codeLocked\": \"\u0E01\u0E23\u0E2D\u0E01\u0E23\u0E2B\u0E31\u0E2A\u0E1C\u0E34\u0E14\u0E2B\u0E25\u0E32\u0E22\u0E04\u0E23\u0E31\u0E49\u0E07\u0E40\u0E01\u0E34\u0E19\u0E44\u0E1B \u0E42\u0E1B\u0E23\u0E14\u0E1B\u0E34\u0E14\u0E2B\u0E19\u0E49\u0E32\u0E15\u0E48\u0E32\u0E07\u0E41\u0E25\u0E49\u0E27\u0E40\u0E23\u0E34\u0E48\u0E21\u0E04\u0E33\u0E02\u0E2D\u0E43\u0E2B\u0E21\u0E48\",\n \"otpCode\": \"\u0E23\u0E2B\u0E31\u0E2A\u0E08\u0E32\u0E01\u0E41\u0E2D\u0E1B\",\n \"otpHelp\": \"\u0E40\u0E1B\u0E34\u0E14 AuthLink \u0E41\u0E25\u0E30\u0E01\u0E23\u0E2D\u0E01\u0E23\u0E2B\u0E31\u0E2A\u0E2B\u0E01\u0E2B\u0E25\u0E31\u0E01\u0E1B\u0E31\u0E08\u0E08\u0E38\u0E1A\u0E31\u0E19\u0E02\u0E2D\u0E07\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E19\u0E35\u0E49 \u0E44\u0E21\u0E48\u0E15\u0E49\u0E2D\u0E07\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E04\u0E33\u0E02\u0E2D\",\n \"otpWaiting\": \"\u0E01\u0E23\u0E2D\u0E01\u0E23\u0E2B\u0E31\u0E2A\u0E1B\u0E31\u0E08\u0E08\u0E38\u0E1A\u0E31\u0E19\",\n \"otpError\": \"\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08 \u0E42\u0E1B\u0E23\u0E14\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E41\u0E25\u0E30\u0E23\u0E2D\u0E23\u0E2B\u0E31\u0E2A\u0E43\u0E2B\u0E21\u0E48\u0E2B\u0E32\u0E01\u0E43\u0E0A\u0E49\u0E44\u0E1B\u0E41\u0E25\u0E49\u0E27 \u0E2B\u0E32\u0E01\u0E1C\u0E34\u0E14\u0E2B\u0E25\u0E32\u0E22\u0E04\u0E23\u0E31\u0E49\u0E07\u0E43\u0E2B\u0E49\u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E20\u0E32\u0E22\u0E2B\u0E25\u0E31\u0E07\",\n \"otpSetup\": \"\u0E40\u0E1B\u0E34\u0E14\u0E43\u0E0A\u0E49\u0E23\u0E2B\u0E31\u0E2A\u0E1A\u0E19\u0E01\u0E32\u0E23\u0E4C\u0E14\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E19\u0E35\u0E49\u0E43\u0E19\u0E41\u0E2D\u0E1B\u0E01\u0E48\u0E2D\u0E19\"\n}\n", "{\n \"bind\": \"Li\u00EAn k\u1EBFt \u0111i\u1EC7n tho\u1EA1i\",\n \"confirm\": \"X\u00E1c nh\u1EADn x\u00E1c th\u1EF1c\",\n \"scan\": \"Qu\u00E9t b\u1EB1ng AuthLink\",\n \"code\": \"M\u00E3 \u0111\u1ED1i chi\u1EBFu\",\n \"help\": \"Ph\u00EA duy\u1EC7t trong \u1EE9ng d\u1EE5ng r\u1ED3i nh\u1EADp m\u00E3 x\u00E1c nh\u1EADn 6 ch\u1EEF s\u1ED1 t\u1EA1i \u0111\u00E2y.\",\n \"waiting\": \"\u0110ang ch\u1EDD x\u00E1c nh\u1EADn t\u1EEB \u0111i\u1EC7n tho\u1EA1i\",\n \"loading\": \"\u0110ang k\u1EBFt n\u1ED1i\",\n \"confirmed\": \"\u0110\u00E3 x\u00E1c nh\u1EADn\",\n \"rejected\": \"\u0110\u00E3 t\u1EEB ch\u1ED1i\",\n \"expired\": \"Y\u00EAu c\u1EA7u \u0111\u00E3 h\u1EBFt h\u1EA1n\",\n \"error\": \"Hi\u1EC7n kh\u00F4ng th\u1EC3 x\u00E1c th\u1EF1c\",\n \"retry\": \"Th\u1EED l\u1EA1i\",\n \"refresh\": \"Y\u00EAu c\u1EA7u m\u1EDBi\",\n \"updating\": \"\u0110ang c\u1EADp nh\u1EADt m\u00E3\",\n \"close\": \"\u0110\u00F3ng\",\n \"cancel\": \"H\u1EE7y\",\n \"autoUpdate\": \"M\u00E3 t\u1EF1 \u0111\u1ED9ng c\u1EADp nh\u1EADt m\u1ED7i 30 gi\u00E2y\",\n \"expiring\": \"Y\u00EAu c\u1EA7u s\u1EAFp h\u1EBFt h\u1EA1n\",\n \"confirmationCode\": \"M\u00E3 x\u00E1c nh\u1EADn trong \u1EE9ng d\u1EE5ng\",\n \"submitCode\": \"X\u00E1c minh\",\n \"codeError\": \"Kh\u00F4ng th\u1EC3 x\u00E1c minh. Ki\u1EC3m tra m\u00E3 v\u00E0 tr\u1EA1ng th\u00E1i ph\u00EA duy\u1EC7t r\u1ED3i th\u1EED l\u1EA1i.\",\n \"codeLocked\": \"Nh\u1EADp sai m\u00E3 qu\u00E1 nhi\u1EC1u l\u1EA7n. \u0110\u00F3ng c\u1EEDa s\u1ED5 v\u00E0 t\u1EA1o y\u00EAu c\u1EA7u m\u1EDBi.\",\n \"otpCode\": \"M\u00E3 \u1EE9ng d\u1EE5ng\",\n \"otpHelp\": \"M\u1EDF AuthLink v\u00E0 nh\u1EADp m\u00E3 s\u00E1u ch\u1EEF s\u1ED1 hi\u1EC7n t\u1EA1i c\u1EE7a t\u00E0i kho\u1EA3n n\u00E0y. Kh\u00F4ng c\u1EA7n ph\u00EA duy\u1EC7t y\u00EAu c\u1EA7u.\",\n \"otpWaiting\": \"Nh\u1EADp m\u00E3 hi\u1EC7n t\u1EA1i\",\n \"otpError\": \"X\u00E1c minh th\u1EA5t b\u1EA1i. Ki\u1EC3m tra t\u00E0i kho\u1EA3n v\u00E0 ch\u1EDD m\u00E3 m\u1EDBi n\u1EBFu \u0111\u00E3 d\u00F9ng. N\u1EBFu sai nhi\u1EC1u l\u1EA7n, h\u00E3y th\u1EED l\u1EA1i sau.\",\n \"otpSetup\": \"Tr\u01B0\u1EDBc ti\u00EAn h\u00E3y b\u1EADt m\u00E3 tr\u00EAn th\u1EBB t\u00E0i kho\u1EA3n n\u00E0y trong \u1EE9ng d\u1EE5ng.\"\n}\n", "import type { Locale } from './types.js';\nimport l0 from './locales/en.json';\nimport l1 from './locales/zh-CN.json';\nimport l2 from './locales/zh-TW.json';\nimport l3 from './locales/ja.json';\nimport l4 from './locales/bn.json';\nimport l5 from './locales/es.json';\nimport l6 from './locales/fil.json';\nimport l7 from './locales/hi.json';\nimport l8 from './locales/id.json';\nimport l9 from './locales/ms.json';\nimport l10 from './locales/pt.json';\nimport l11 from './locales/th.json';\nimport l12 from './locales/vi.json';\n\nexport const supportedLocales = [\"en\", \"zh-CN\", \"zh-TW\", \"ja\", \"bn\", \"es\", \"fil\", \"hi\", \"id\", \"ms\", \"pt\", \"th\", \"vi\"] as const satisfies readonly Locale[];\ntype Messages = Record<\"otpCode\" | \"otpHelp\" | \"otpWaiting\" | \"otpError\" | \"otpSetup\" | \"codeLocked\" | \"confirmationCode\" | \"submitCode\" | \"codeError\" | \"cancel\" | \"close\" | \"bind\" | \"confirm\" | \"scan\" | \"code\" | \"help\" | \"waiting\" | \"loading\" | \"confirmed\" | \"rejected\" | \"expired\" | \"error\" | \"retry\" | \"refresh\" | \"autoUpdate\" | \"expiring\" | \"updating\", string>;\nconst messages = {\n \"en\": l0,\n \"zh-CN\": l1,\n \"zh-TW\": l2,\n \"ja\": l3,\n \"bn\": l4,\n \"es\": l5,\n \"fil\": l6,\n \"hi\": l7,\n \"id\": l8,\n \"ms\": l9,\n \"pt\": l10,\n \"th\": l11,\n \"vi\": l12\n} satisfies Record<Locale, Messages>;\n\nexport const defaultLocale: Locale = 'zh-CN';\n\nexport function resolveLocale(locale?: string): Locale {\n return locale && Object.hasOwn(messages, locale) ? locale as Locale : defaultLocale;\n}\nexport function getMessages(locale?: string): Messages {\n return messages[resolveLocale(locale)];\n}\n", "import { getMessages, resolveLocale } from './i18n.js';\nimport type { Locale, Snapshot } from './types.js';\nexport interface ViewNode { tag: string; props: Record<string, unknown>; children: (ViewNode | string)[] }\nconst node = (tag: string, props: Record<string, unknown>, ...children: (ViewNode | string)[]): ViewNode => ({ tag, props, children });\nconst digits = (value: string) => value.replace(/[^0-9]/g, '');\nexport function widgetView(options: { mode: 'bind' | 'confirm'; locale?: Locale; snapshot: Snapshot;\n qr?: string; inputCode: string; setCode: (code: string) => void; submitCode: (code: string) => Promise<void>;\n refresh?: () => Promise<void> }): ViewNode {\n const { snapshot: s, mode } = options, locale = resolveLocale(options.locale), l = getMessages(locale);\n const pending = s.status === 'pending', hasQr = pending && mode === 'bind' && Boolean(options.qr);\n const expiring = pending && s.secondsRemaining !== undefined && s.secondsRemaining <= 30;\n const status = s.status === 'pending' ? l.otpWaiting : l[s.status];\n const remaining = s.secondsRemaining ?? 0;\n const expiryTime = `${String(Math.floor(remaining / 60)).padStart(2, '0')}:${String(remaining % 60).padStart(2, '0')}`;\n const children: (ViewNode | string)[] = [node('h3', { class: 'authlink-title' }, l[mode])];\n const errorNode = s.error ? node('p', { class: 'authlink-input-error', role: 'alert' },\n ['PASSCODE_LOCKED', 'RATE_LIMITED', 'AUTHLINK_PASSCODE_LOCKED'].includes(s.error.message) ? l.codeLocked : l.otpError) : undefined;\n if (hasQr) children.push(node('p', { class: 'authlink-subtitle' }, l.scan));\n if (pending) {\n const qr = hasQr ? [node('figure', { class: 'authlink-qr-wrap' },\n node('img', { class: 'authlink-qr', src: options.qr, alt: l.scan, width: 240, height: 240 }),\n node('figcaption', { class: 'authlink-qr-caption' }, l.scan))] : [];\n const detail = [node('p', { class: 'authlink-help' }, l.otpHelp),\n node('form', { class: 'authlink-code-form', onSubmit: (event: Event) => {\n event.preventDefault(); const input = (event.currentTarget as HTMLFormElement).querySelector('input');\n if (input) void options.submitCode(input.value);\n } },\n node('label', { for: 'authlink-passcode' }, l.otpCode),\n node('input', { id: 'authlink-passcode', name: 'passcode', type: 'text', inputmode: 'numeric', autocomplete: 'one-time-code',\n pattern: '[0-9]{6}', maxlength: 6, minlength: 6, required: true, ...(s.submitting ? { disabled: true } : {}),\n 'data-authlink-focus': 'passcode', value: options.inputCode,\n onInput: (event: Event) => {\n const input = event.target as HTMLInputElement, original = input.value;\n const start = input.selectionStart ?? original.length, end = input.selectionEnd ?? start;\n const code = digits(original).slice(0, 6);\n if (original !== code) {\n input.value = code;\n input.setSelectionRange(Math.min(6, digits(original.slice(0, start)).length), Math.min(6, digits(original.slice(0, end)).length));\n }\n options.setCode(code);\n },\n onPaste: (event: ClipboardEvent) => {\n if (!event.clipboardData) return;\n event.preventDefault();\n const input = event.target as HTMLInputElement, pasted = digits(event.clipboardData.getData('text'));\n if (!pasted) return;\n const start = input.selectionStart ?? input.value.length, end = input.selectionEnd ?? start;\n const before = input.value.slice(0, start), after = input.value.slice(end);\n const insert = pasted.slice(0, Math.max(0, 6 - before.length - after.length));\n input.value = before + insert + after;\n input.setSelectionRange(before.length + insert.length, before.length + insert.length);\n options.setCode(input.value);\n } }),\n node('button', { type: 'submit', class: 'authlink-button', ...(s.submitting ? { disabled: true } : {}) }, s.submitting ? l.loading : l.submitCode))];\n children.push(node('div', { class: 'authlink-body' }, ...qr, node('div', { class: 'authlink-details' }, ...detail, ...(errorNode ? [errorNode] : []))));\n }\n if (!pending && errorNode) children.push(errorNode);\n children.push(node('div', { class: 'authlink-footer' }, node('p', { class: 'authlink-status', role: 'status', 'data-expiring': String(expiring) },\n node('span', { class: 'authlink-status-dot', 'aria-hidden': 'true' }), expiring ? l.expiring : status,\n ...(expiring ? [node('span', { class: 'authlink-expiry', 'aria-hidden': 'true' }, ` \u00B7 ${expiryTime}`)] : []))));\n if (s.status === 'expired' && options.refresh) children.push(node('button', { type: 'button', class: 'authlink-button',\n ...(s.submitting ? { disabled: true } : {}), onClick: options.refresh }, s.submitting ? l.loading : l.refresh));\n return node('section', { lang: locale, class: 'authlink-widget', 'data-status': s.status, 'data-has-qr': String(hasQr), 'aria-label': l[mode] }, ...children);\n}\n", "import { AuthLinkError, bindingImage, deadline } from './core.js';\nimport { getMessages, resolveLocale } from './i18n.js';\nimport { widgetView } from './view.js';\nimport type { ViewNode } from './view.js';\nimport type { AuthLinkModal, BindOptions, Locale, VerifyOptions } from './types.js';\n\nfunction element(value: ViewNode | string): Node {\n if (typeof value === 'string') return document.createTextNode(value);\n const result = document.createElement(value.tag);\n for (const [key, v] of Object.entries(value.props)) {\n if (key.startsWith('on') && typeof v === 'function') result.addEventListener(key.slice(2).toLowerCase(), v as EventListener);\n else if (v !== undefined && v !== null) result.setAttribute(key, String(v));\n }\n result.append(...value.children.map(element)); return result;\n}\nfunction open(options: VerifyOptions | BindOptions, mode: 'bind' | 'confirm'): AuthLinkModal {\n if (typeof document === 'undefined' || !document.body) throw new AuthLinkError('BROWSER_REQUIRED');\n if (typeof options.submit !== 'function') throw new AuthLinkError('SUBMIT_REQUIRED');\n const binding = mode === 'bind' ? options as BindOptions : undefined;\n let image = binding ? bindingImage(binding, binding.authLinkOrigin) : undefined;\n let expires = options.expiresAt === undefined ? undefined : deadline(options.expiresAt);\n const dialog = document.createElement('dialog');\n if (typeof dialog.showModal !== 'function') throw new AuthLinkError('DIALOG_UNSUPPORTED');\n const previousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n dialog.className = 'authlink-dialog'; dialog.setAttribute('aria-modal', 'true');\n const header = document.createElement('div'); header.className = 'authlink-header';\n const brand = document.createElement('span'); brand.className = 'authlink-brand'; brand.textContent = 'AuthLink';\n const close = document.createElement('button'); close.type = 'button'; close.className = 'authlink-close';\n const icon = document.createElement('span'); icon.className = 'authlink-close-icon'; icon.setAttribute('aria-hidden', 'true'); close.append(icon);\n const content = document.createElement('div'); content.className = 'authlink-modal-content';\n header.append(brand, close); dialog.append(header, content);\n let locale = options.locale, closed = false, busy = false, code = '', error: Error | null = null;\n let abort: AbortController | undefined, timer: ReturnType<typeof setInterval> | undefined, expiredDelivered = false;\n const notifyError = (cause: unknown) => {\n const value = cause instanceof Error ? cause : new AuthLinkError('VERIFICATION_FAILED');\n try { options.onError?.(value); } catch { /* Observers cannot alter the verification result. */ }\n return value;\n };\n const callback = (fn?: () => void | Promise<void>) => {\n try { void Promise.resolve(fn?.()).catch(() => notifyError(new AuthLinkError('CALLBACK_FAILED'))); }\n catch { notifyError(new AuthLinkError('CALLBACK_FAILED')); }\n };\n const dispose = (notify: boolean) => {\n if (closed) return;\n closed = true; abort?.abort(); clearInterval(timer);\n if (dialog.open) dialog.close();\n dialog.remove(); if (previousFocus?.isConnected) previousFocus.focus();\n if (notify) callback(options.onClose);\n };\n const expired = () => expires !== undefined && Date.now() >= expires;\n const render = () => {\n if (closed) return;\n const l = getMessages(locale);\n dialog.lang = resolveLocale(locale); dialog.dataset.mode = mode; dialog.dataset.hasQr = String(Boolean(image) && !expired());\n dialog.setAttribute('aria-label', l[mode]); close.setAttribute('aria-label', l.close);\n const focused = document.activeElement;\n const focusKey = focused instanceof HTMLElement && content.contains(focused) ? focused.dataset.authlinkFocus : undefined;\n const oldInput = content.querySelector<HTMLInputElement>('input');\n const next = element(widgetView({ mode, locale,\n snapshot: { status: expired() ? 'expired' : 'pending', submitting: busy, error,\n secondsRemaining: expires === undefined ? undefined : Math.max(0, Math.ceil((expires - Date.now()) / 1000)) },\n qr: image, inputCode: code, setCode: value => { code = value; }, submitCode: submit,\n refresh: binding?.onRefresh ? refresh : undefined })) as HTMLElement;\n const nextInput = next.querySelector<HTMLInputElement>('input');\n if (oldInput && nextInput) { oldInput.disabled = busy; if (oldInput.value !== code) oldInput.value = code; nextInput.replaceWith(oldInput); }\n content.replaceChildren(next);\n if (focusKey) content.querySelector<HTMLElement>(`[data-authlink-focus=\"${focusKey}\"]`)?.focus({ preventScroll: true });\n };\n const tick = () => {\n if (closed) return;\n if (expired() && !expiredDelivered) {\n expiredDelivered = true; abort?.abort(); busy = false; render(); callback(options.onExpired);\n } else if (expires !== undefined) render();\n };\n const startTimer = () => { clearInterval(timer); if (expires !== undefined) timer = setInterval(tick, 1000); };\n const submit = async (value: string) => {\n if (closed || busy || expired()) { tick(); return; }\n if (!/^[0-9]{6}$/.test(value)) { error = notifyError(new AuthLinkError('PASSCODE_INVALID')); render(); return; }\n code = value; busy = true; error = null;\n const current = new AbortController(); abort = current; render();\n try {\n const pending = options.submit(value, { signal: current.signal });\n if (!pending || typeof pending.then !== 'function') throw new AuthLinkError('SUBMIT_MUST_RETURN_PROMISE');\n await pending;\n if (closed || current.signal.aborted || abort !== current) return;\n // CMS success is authoritative. Close before callbacks to prevent resubmission\n // if updating the business page subsequently fails.\n dispose(false); callback(options.onSuccess);\n } catch (cause) {\n if (!closed && !current.signal.aborted && abort === current) error = notifyError(cause);\n } finally { if (!closed && abort === current) { busy = false; render(); } }\n };\n const refresh = async () => {\n if (closed || busy || !binding?.onRefresh || !expired()) return;\n busy = true; error = null; expiredDelivered = true; clearInterval(timer);\n const current = new AbortController(); abort?.abort(); abort = current; render();\n try {\n const ticket = await binding.onRefresh({ signal: current.signal });\n if (closed || current.signal.aborted || abort !== current) return;\n const nextImage = bindingImage(ticket, binding.authLinkOrigin), nextDeadline = deadline(ticket.expiresAt);\n image = nextImage; expires = nextDeadline; code = ''; expiredDelivered = false; startTimer();\n } catch (cause) {\n if (!closed && !current.signal.aborted && abort === current) error = notifyError(cause);\n } finally { if (!closed && abort === current) { busy = false; render(); } }\n };\n close.addEventListener('click', () => dispose(true));\n dialog.addEventListener('cancel', event => { event.preventDefault(); dispose(true); });\n dialog.addEventListener('close', () => dispose(true));\n document.body.append(dialog); render();\n try { dialog.showModal(); } catch (cause) { dispose(false); throw cause; }\n content.querySelector<HTMLInputElement>('input')?.focus(); startTimer();\n return { close: () => dispose(true), destroy: () => dispose(false),\n setLocale: (value?: Locale) => { locale = value; render(); },\n retry: () => { if (!closed && !busy) { error = null; tick(); render(); } } };\n}\nexport const openVerify = (options: VerifyOptions): AuthLinkModal => open(options, 'confirm');\nexport const openBind = (options: BindOptions): AuthLinkModal => open(options, 'bind');\n"],
5
+ "mappings": "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",
6
+ "names": ["typeNumber", "errorCorrectionLevel", "unicodeMap", "qrcode", "_num", "num", "_this", "data", "stringToBytes"]
7
7
  }