UNPKG

create-dynamic-app

Version:

CLI tool to generate sample applications using Dynamic's web3 authentication

1,193 lines (1,185 loc) 604 kB
#!/usr/bin/env node import { createRequire } from "node:module"; var __create = Object.create; var __getProtoOf = Object.getPrototypeOf; var __defProp = Object.defineProperty; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __toESM = (mod, isNodeMode, target) => { target = mod != null ? __create(__getProtoOf(mod)) : {}; const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target; for (let key of __getOwnPropNames(mod)) if (!__hasOwnProp.call(to, key)) __defProp(to, key, { get: () => mod[key], enumerable: true }); return to; }; var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true, configurable: true, set: (newValue) => all[name] = () => newValue }); }; var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res); var __require = /* @__PURE__ */ createRequire(import.meta.url); // node_modules/figlet/lib/figlet.js var require_figlet = __commonJS((exports, module) => { var figlet = (() => { const FULL_WIDTH = 0, FITTING = 1, SMUSHING = 2, CONTROLLED_SMUSHING = 3; const figFonts = {}; const figDefaults = { font: "Standard", fontPath: "./fonts" }; function getSmushingRules(oldLayout, newLayout) { let rules = {}; let val, index, len, code; let codes = [ [16384, "vLayout", SMUSHING], [8192, "vLayout", FITTING], [4096, "vRule5", true], [2048, "vRule4", true], [1024, "vRule3", true], [512, "vRule2", true], [256, "vRule1", true], [128, "hLayout", SMUSHING], [64, "hLayout", FITTING], [32, "hRule6", true], [16, "hRule5", true], [8, "hRule4", true], [4, "hRule3", true], [2, "hRule2", true], [1, "hRule1", true] ]; val = newLayout !== null ? newLayout : oldLayout; index = 0; len = codes.length; while (index < len) { code = codes[index]; if (val >= code[0]) { val = val - code[0]; rules[code[1]] = typeof rules[code[1]] === "undefined" ? code[2] : rules[code[1]]; } else if (code[1] !== "vLayout" && code[1] !== "hLayout") { rules[code[1]] = false; } index++; } if (typeof rules["hLayout"] === "undefined") { if (oldLayout === 0) { rules["hLayout"] = FITTING; } else if (oldLayout === -1) { rules["hLayout"] = FULL_WIDTH; } else { if (rules["hRule1"] || rules["hRule2"] || rules["hRule3"] || rules["hRule4"] || rules["hRule5"] || rules["hRule6"]) { rules["hLayout"] = CONTROLLED_SMUSHING; } else { rules["hLayout"] = SMUSHING; } } } else if (rules["hLayout"] === SMUSHING) { if (rules["hRule1"] || rules["hRule2"] || rules["hRule3"] || rules["hRule4"] || rules["hRule5"] || rules["hRule6"]) { rules["hLayout"] = CONTROLLED_SMUSHING; } } if (typeof rules["vLayout"] === "undefined") { if (rules["vRule1"] || rules["vRule2"] || rules["vRule3"] || rules["vRule4"] || rules["vRule5"]) { rules["vLayout"] = CONTROLLED_SMUSHING; } else { rules["vLayout"] = FULL_WIDTH; } } else if (rules["vLayout"] === SMUSHING) { if (rules["vRule1"] || rules["vRule2"] || rules["vRule3"] || rules["vRule4"] || rules["vRule5"]) { rules["vLayout"] = CONTROLLED_SMUSHING; } } return rules; } function hRule1_Smush(ch1, ch2, hardBlank) { if (ch1 === ch2 && ch1 !== hardBlank) { return ch1; } return false; } function hRule2_Smush(ch1, ch2) { let rule2Str = "|/\\[]{}()<>"; if (ch1 === "_") { if (rule2Str.indexOf(ch2) !== -1) { return ch2; } } else if (ch2 === "_") { if (rule2Str.indexOf(ch1) !== -1) { return ch1; } } return false; } function hRule3_Smush(ch1, ch2) { let rule3Classes = "| /\\ [] {} () <>"; let r3_pos1 = rule3Classes.indexOf(ch1); let r3_pos2 = rule3Classes.indexOf(ch2); if (r3_pos1 !== -1 && r3_pos2 !== -1) { if (r3_pos1 !== r3_pos2 && Math.abs(r3_pos1 - r3_pos2) !== 1) { const startPos = Math.max(r3_pos1, r3_pos2); const endPos = startPos + 1; return rule3Classes.substring(startPos, endPos); } } return false; } function hRule4_Smush(ch1, ch2) { let rule4Str = "[] {} ()"; let r4_pos1 = rule4Str.indexOf(ch1); let r4_pos2 = rule4Str.indexOf(ch2); if (r4_pos1 !== -1 && r4_pos2 !== -1) { if (Math.abs(r4_pos1 - r4_pos2) <= 1) { return "|"; } } return false; } function hRule5_Smush(ch1, ch2) { let rule5Str = "/\\ \\/ ><"; let rule5Hash = { 0: "|", 3: "Y", 6: "X" }; let r5_pos1 = rule5Str.indexOf(ch1); let r5_pos2 = rule5Str.indexOf(ch2); if (r5_pos1 !== -1 && r5_pos2 !== -1) { if (r5_pos2 - r5_pos1 === 1) { return rule5Hash[r5_pos1]; } } return false; } function hRule6_Smush(ch1, ch2, hardBlank) { if (ch1 === hardBlank && ch2 === hardBlank) { return hardBlank; } return false; } function vRule1_Smush(ch1, ch2) { if (ch1 === ch2) { return ch1; } return false; } function vRule2_Smush(ch1, ch2) { let rule2Str = "|/\\[]{}()<>"; if (ch1 === "_") { if (rule2Str.indexOf(ch2) !== -1) { return ch2; } } else if (ch2 === "_") { if (rule2Str.indexOf(ch1) !== -1) { return ch1; } } return false; } function vRule3_Smush(ch1, ch2) { let rule3Classes = "| /\\ [] {} () <>"; let r3_pos1 = rule3Classes.indexOf(ch1); let r3_pos2 = rule3Classes.indexOf(ch2); if (r3_pos1 !== -1 && r3_pos2 !== -1) { if (r3_pos1 !== r3_pos2 && Math.abs(r3_pos1 - r3_pos2) !== 1) { const startPos = Math.max(r3_pos1, r3_pos2); const endPos = startPos + 1; return rule3Classes.substring(startPos, endPos); } } return false; } function vRule4_Smush(ch1, ch2) { if (ch1 === "-" && ch2 === "_" || ch1 === "_" && ch2 === "-") { return "="; } return false; } function vRule5_Smush(ch1, ch2) { if (ch1 === "|" && ch2 === "|") { return "|"; } return false; } function uni_Smush(ch1, ch2, hardBlank) { if (ch2 === " " || ch2 === "") { return ch1; } else if (ch2 === hardBlank && ch1 !== " ") { return ch1; } else { return ch2; } } function canVerticalSmush(txt1, txt2, opts) { if (opts.fittingRules.vLayout === FULL_WIDTH) { return "invalid"; } let ii, len = Math.min(txt1.length, txt2.length), ch1, ch2, endSmush = false, validSmush; if (len === 0) { return "invalid"; } for (ii = 0;ii < len; ii++) { ch1 = txt1.substring(ii, ii + 1); ch2 = txt2.substring(ii, ii + 1); if (ch1 !== " " && ch2 !== " ") { if (opts.fittingRules.vLayout === FITTING) { return "invalid"; } else if (opts.fittingRules.vLayout === SMUSHING) { return "end"; } else { if (vRule5_Smush(ch1, ch2)) { endSmush = endSmush || false; continue; } validSmush = false; validSmush = opts.fittingRules.vRule1 ? vRule1_Smush(ch1, ch2) : validSmush; validSmush = !validSmush && opts.fittingRules.vRule2 ? vRule2_Smush(ch1, ch2) : validSmush; validSmush = !validSmush && opts.fittingRules.vRule3 ? vRule3_Smush(ch1, ch2) : validSmush; validSmush = !validSmush && opts.fittingRules.vRule4 ? vRule4_Smush(ch1, ch2) : validSmush; endSmush = true; if (!validSmush) { return "invalid"; } } } } if (endSmush) { return "end"; } else { return "valid"; } } function getVerticalSmushDist(lines1, lines2, opts) { let maxDist = lines1.length; let len1 = lines1.length; let len2 = lines2.length; let subLines1, subLines2, slen; let curDist = 1; let ii, ret, result; while (curDist <= maxDist) { subLines1 = lines1.slice(Math.max(0, len1 - curDist), len1); subLines2 = lines2.slice(0, Math.min(maxDist, curDist)); slen = subLines2.length; result = ""; for (ii = 0;ii < slen; ii++) { ret = canVerticalSmush(subLines1[ii], subLines2[ii], opts); if (ret === "end") { result = ret; } else if (ret === "invalid") { result = ret; break; } else { if (result === "") { result = "valid"; } } } if (result === "invalid") { curDist--; break; } if (result === "end") { break; } if (result === "valid") { curDist++; } } return Math.min(maxDist, curDist); } function verticallySmushLines(line1, line2, opts) { let ii, len = Math.min(line1.length, line2.length); let ch1, ch2, result = "", validSmush; for (ii = 0;ii < len; ii++) { ch1 = line1.substring(ii, ii + 1); ch2 = line2.substring(ii, ii + 1); if (ch1 !== " " && ch2 !== " ") { if (opts.fittingRules.vLayout === FITTING) { result += uni_Smush(ch1, ch2); } else if (opts.fittingRules.vLayout === SMUSHING) { result += uni_Smush(ch1, ch2); } else { validSmush = false; validSmush = opts.fittingRules.vRule5 ? vRule5_Smush(ch1, ch2) : validSmush; validSmush = !validSmush && opts.fittingRules.vRule1 ? vRule1_Smush(ch1, ch2) : validSmush; validSmush = !validSmush && opts.fittingRules.vRule2 ? vRule2_Smush(ch1, ch2) : validSmush; validSmush = !validSmush && opts.fittingRules.vRule3 ? vRule3_Smush(ch1, ch2) : validSmush; validSmush = !validSmush && opts.fittingRules.vRule4 ? vRule4_Smush(ch1, ch2) : validSmush; result += validSmush; } } else { result += uni_Smush(ch1, ch2); } } return result; } function verticalSmush(lines1, lines2, overlap, opts) { let len1 = lines1.length; let len2 = lines2.length; let piece1 = lines1.slice(0, Math.max(0, len1 - overlap)); let piece2_1 = lines1.slice(Math.max(0, len1 - overlap), len1); let piece2_2 = lines2.slice(0, Math.min(overlap, len2)); let ii, len, line, piece2 = [], piece3, result = []; len = piece2_1.length; for (ii = 0;ii < len; ii++) { if (ii >= len2) { line = piece2_1[ii]; } else { line = verticallySmushLines(piece2_1[ii], piece2_2[ii], opts); } piece2.push(line); } piece3 = lines2.slice(Math.min(overlap, len2), len2); return result.concat(piece1, piece2, piece3); } function padLines(lines, numSpaces) { let ii, len = lines.length, padding = ""; for (ii = 0;ii < numSpaces; ii++) { padding += " "; } for (ii = 0;ii < len; ii++) { lines[ii] += padding; } } function smushVerticalFigLines(output, lines, opts) { let len1 = output[0].length; let len2 = lines[0].length; let overlap; if (len1 > len2) { padLines(lines, len1 - len2); } else if (len2 > len1) { padLines(output, len2 - len1); } overlap = getVerticalSmushDist(output, lines, opts); return verticalSmush(output, lines, overlap, opts); } function getHorizontalSmushLength(txt1, txt2, opts) { if (opts.fittingRules.hLayout === FULL_WIDTH) { return 0; } let ii, len1 = txt1.length, len2 = txt2.length; let maxDist = len1; let curDist = 1; let breakAfter = false; let validSmush = false; let seg1, seg2, ch1, ch2; if (len1 === 0) { return 0; } distCal: while (curDist <= maxDist) { const seg1StartPos = len1 - curDist; seg1 = txt1.substring(seg1StartPos, seg1StartPos + curDist); seg2 = txt2.substring(0, Math.min(curDist, len2)); for (ii = 0;ii < Math.min(curDist, len2); ii++) { ch1 = seg1.substring(ii, ii + 1); ch2 = seg2.substring(ii, ii + 1); if (ch1 !== " " && ch2 !== " ") { if (opts.fittingRules.hLayout === FITTING) { curDist = curDist - 1; break distCal; } else if (opts.fittingRules.hLayout === SMUSHING) { if (ch1 === opts.hardBlank || ch2 === opts.hardBlank) { curDist = curDist - 1; } break distCal; } else { breakAfter = true; validSmush = false; validSmush = opts.fittingRules.hRule1 ? hRule1_Smush(ch1, ch2, opts.hardBlank) : validSmush; validSmush = !validSmush && opts.fittingRules.hRule2 ? hRule2_Smush(ch1, ch2, opts.hardBlank) : validSmush; validSmush = !validSmush && opts.fittingRules.hRule3 ? hRule3_Smush(ch1, ch2, opts.hardBlank) : validSmush; validSmush = !validSmush && opts.fittingRules.hRule4 ? hRule4_Smush(ch1, ch2, opts.hardBlank) : validSmush; validSmush = !validSmush && opts.fittingRules.hRule5 ? hRule5_Smush(ch1, ch2, opts.hardBlank) : validSmush; validSmush = !validSmush && opts.fittingRules.hRule6 ? hRule6_Smush(ch1, ch2, opts.hardBlank) : validSmush; if (!validSmush) { curDist = curDist - 1; break distCal; } } } } if (breakAfter) { break; } curDist++; } return Math.min(maxDist, curDist); } function horizontalSmush(textBlock1, textBlock2, overlap, opts) { let ii, jj, outputFig = [], overlapStart, piece1, piece2, piece3, len1, len2, txt1, txt2; for (ii = 0;ii < opts.height; ii++) { txt1 = textBlock1[ii]; txt2 = textBlock2[ii]; len1 = txt1.length; len2 = txt2.length; overlapStart = len1 - overlap; piece1 = txt1.substr(0, Math.max(0, overlapStart)); piece2 = ""; const seg1StartPos = Math.max(0, len1 - overlap); var seg1 = txt1.substring(seg1StartPos, seg1StartPos + overlap); var seg2 = txt2.substring(0, Math.min(overlap, len2)); for (jj = 0;jj < overlap; jj++) { var ch1 = jj < len1 ? seg1.substring(jj, jj + 1) : " "; var ch2 = jj < len2 ? seg2.substring(jj, jj + 1) : " "; if (ch1 !== " " && ch2 !== " ") { if (opts.fittingRules.hLayout === FITTING) { piece2 += uni_Smush(ch1, ch2, opts.hardBlank); } else if (opts.fittingRules.hLayout === SMUSHING) { piece2 += uni_Smush(ch1, ch2, opts.hardBlank); } else { var nextCh = ""; nextCh = !nextCh && opts.fittingRules.hRule1 ? hRule1_Smush(ch1, ch2, opts.hardBlank) : nextCh; nextCh = !nextCh && opts.fittingRules.hRule2 ? hRule2_Smush(ch1, ch2, opts.hardBlank) : nextCh; nextCh = !nextCh && opts.fittingRules.hRule3 ? hRule3_Smush(ch1, ch2, opts.hardBlank) : nextCh; nextCh = !nextCh && opts.fittingRules.hRule4 ? hRule4_Smush(ch1, ch2, opts.hardBlank) : nextCh; nextCh = !nextCh && opts.fittingRules.hRule5 ? hRule5_Smush(ch1, ch2, opts.hardBlank) : nextCh; nextCh = !nextCh && opts.fittingRules.hRule6 ? hRule6_Smush(ch1, ch2, opts.hardBlank) : nextCh; nextCh = nextCh || uni_Smush(ch1, ch2, opts.hardBlank); piece2 += nextCh; } } else { piece2 += uni_Smush(ch1, ch2, opts.hardBlank); } } if (overlap >= len2) { piece3 = ""; } else { piece3 = txt2.substring(overlap, overlap + Math.max(0, len2 - overlap)); } outputFig[ii] = piece1 + piece2 + piece3; } return outputFig; } function newFigChar(len) { let outputFigText = [], row; for (row = 0;row < len; row++) { outputFigText[row] = ""; } return outputFigText; } const figLinesWidth = function(textLines) { return Math.max.apply(Math, textLines.map(function(line, i) { return line.length; })); }; function joinFigArray(array, len, opts) { return array.reduce(function(acc, data) { return horizontalSmush(acc, data.fig, data.overlap, opts); }, newFigChar(len)); } function breakWord(figChars, len, opts) { const result = {}; for (let i = figChars.length;--i; ) { let w = joinFigArray(figChars.slice(0, i), len, opts); if (figLinesWidth(w) <= opts.width) { result.outputFigText = w; if (i < figChars.length) { result.chars = figChars.slice(i); } else { result.chars = []; } break; } } return result; } function generateFigTextLines(txt, figChars, opts) { let charIndex, figChar, overlap = 0, row, outputFigText, len, height = opts.height, outputFigLines = [], maxWidth, nextFigChars, figWords = [], char, isSpace, textFigWord, textFigLine, tmpBreak; outputFigText = newFigChar(height); if (opts.width > 0 && opts.whitespaceBreak) { nextFigChars = { chars: [], overlap }; } if (opts.printDirection === 1) { txt = txt.split("").reverse().join(""); } len = txt.length; for (charIndex = 0;charIndex < len; charIndex++) { char = txt.substring(charIndex, charIndex + 1); isSpace = char.match(/\s/); figChar = figChars[char.charCodeAt(0)]; textFigLine = null; if (figChar) { if (opts.fittingRules.hLayout !== FULL_WIDTH) { overlap = 1e4; for (row = 0;row < opts.height; row++) { overlap = Math.min(overlap, getHorizontalSmushLength(outputFigText[row], figChar[row], opts)); } overlap = overlap === 1e4 ? 0 : overlap; } if (opts.width > 0) { if (opts.whitespaceBreak) { textFigWord = joinFigArray(nextFigChars.chars.concat([ { fig: figChar, overlap } ]), height, opts); textFigLine = joinFigArray(figWords.concat([ { fig: textFigWord, overlap: nextFigChars.overlap } ]), height, opts); maxWidth = figLinesWidth(textFigLine); } else { textFigLine = horizontalSmush(outputFigText, figChar, overlap, opts); maxWidth = figLinesWidth(textFigLine); } if (maxWidth >= opts.width && charIndex > 0) { if (opts.whitespaceBreak) { outputFigText = joinFigArray(figWords.slice(0, -1), height, opts); if (figWords.length > 1) { outputFigLines.push(outputFigText); outputFigText = newFigChar(height); } figWords = []; } else { outputFigLines.push(outputFigText); outputFigText = newFigChar(height); } } } if (opts.width > 0 && opts.whitespaceBreak) { if (!isSpace || charIndex === len - 1) { nextFigChars.chars.push({ fig: figChar, overlap }); } if (isSpace || charIndex === len - 1) { tmpBreak = null; while (true) { textFigLine = joinFigArray(nextFigChars.chars, height, opts); maxWidth = figLinesWidth(textFigLine); if (maxWidth >= opts.width) { tmpBreak = breakWord(nextFigChars.chars, height, opts); nextFigChars = { chars: tmpBreak.chars }; outputFigLines.push(tmpBreak.outputFigText); } else { break; } } if (maxWidth > 0) { if (tmpBreak) { figWords.push({ fig: textFigLine, overlap: 1 }); } else { figWords.push({ fig: textFigLine, overlap: nextFigChars.overlap }); } } if (isSpace) { figWords.push({ fig: figChar, overlap }); outputFigText = newFigChar(height); } if (charIndex === len - 1) { outputFigText = joinFigArray(figWords, height, opts); } nextFigChars = { chars: [], overlap }; continue; } } outputFigText = horizontalSmush(outputFigText, figChar, overlap, opts); } } if (figLinesWidth(outputFigText) > 0) { outputFigLines.push(outputFigText); } if (opts.showHardBlanks !== true) { outputFigLines.forEach(function(outputFigText2) { len = outputFigText2.length; for (row = 0;row < len; row++) { outputFigText2[row] = outputFigText2[row].replace(new RegExp("\\" + opts.hardBlank, "g"), " "); } }); } return outputFigLines; } const getHorizontalFittingRules = function(layout, options) { let props = [ "hLayout", "hRule1", "hRule2", "hRule3", "hRule4", "hRule5", "hRule6" ], params = {}, ii; if (layout === "default") { for (ii = 0;ii < props.length; ii++) { params[props[ii]] = options.fittingRules[props[ii]]; } } else if (layout === "full") { params = { hLayout: FULL_WIDTH, hRule1: false, hRule2: false, hRule3: false, hRule4: false, hRule5: false, hRule6: false }; } else if (layout === "fitted") { params = { hLayout: FITTING, hRule1: false, hRule2: false, hRule3: false, hRule4: false, hRule5: false, hRule6: false }; } else if (layout === "controlled smushing") { params = { hLayout: CONTROLLED_SMUSHING, hRule1: true, hRule2: true, hRule3: true, hRule4: true, hRule5: true, hRule6: true }; } else if (layout === "universal smushing") { params = { hLayout: SMUSHING, hRule1: false, hRule2: false, hRule3: false, hRule4: false, hRule5: false, hRule6: false }; } else { return; } return params; }; const getVerticalFittingRules = function(layout, options) { let props = ["vLayout", "vRule1", "vRule2", "vRule3", "vRule4", "vRule5"], params = {}, ii; if (layout === "default") { for (ii = 0;ii < props.length; ii++) { params[props[ii]] = options.fittingRules[props[ii]]; } } else if (layout === "full") { params = { vLayout: FULL_WIDTH, vRule1: false, vRule2: false, vRule3: false, vRule4: false, vRule5: false }; } else if (layout === "fitted") { params = { vLayout: FITTING, vRule1: false, vRule2: false, vRule3: false, vRule4: false, vRule5: false }; } else if (layout === "controlled smushing") { params = { vLayout: CONTROLLED_SMUSHING, vRule1: true, vRule2: true, vRule3: true, vRule4: true, vRule5: true }; } else if (layout === "universal smushing") { params = { vLayout: SMUSHING, vRule1: false, vRule2: false, vRule3: false, vRule4: false, vRule5: false }; } else { return; } return params; }; const generateText = function(fontName, options, txt) { txt = txt.replace(/\r\n/g, ` `).replace(/\r/g, ` `); let lines = txt.split(` `); let figLines = []; let ii, len, output; len = lines.length; for (ii = 0;ii < len; ii++) { figLines = figLines.concat(generateFigTextLines(lines[ii], figFonts[fontName], options)); } len = figLines.length; output = figLines[0]; for (ii = 1;ii < len; ii++) { output = smushVerticalFigLines(output, figLines[ii], options); } return output ? output.join(` `) : ""; }; function _reworkFontOpts(fontOpts, options) { let myOpts = JSON.parse(JSON.stringify(fontOpts)), params, prop; if (typeof options.horizontalLayout !== "undefined") { params = getHorizontalFittingRules(options.horizontalLayout, fontOpts); for (prop in params) { if (params.hasOwnProperty(prop)) { myOpts.fittingRules[prop] = params[prop]; } } } if (typeof options.verticalLayout !== "undefined") { params = getVerticalFittingRules(options.verticalLayout, fontOpts); for (prop in params) { if (params.hasOwnProperty(prop)) { myOpts.fittingRules[prop] = params[prop]; } } } myOpts.printDirection = typeof options.printDirection !== "undefined" ? options.printDirection : fontOpts.printDirection; myOpts.showHardBlanks = options.showHardBlanks || false; myOpts.width = options.width || -1; myOpts.whitespaceBreak = options.whitespaceBreak || false; return myOpts; } const me = function(txt, options, next) { return me.text(txt, options, next); }; me.text = async function(txt, options, next) { let fontName = ""; txt = txt + ""; if (typeof arguments[1] === "function") { next = options; options = {}; options.font = figDefaults.font; } if (typeof options === "string") { fontName = options; options = {}; } else { options = options || {}; fontName = options.font || figDefaults.font; } return await new Promise((resolve, reject) => { me.loadFont(fontName, function(err, fontOpts) { if (err) { reject(err); if (next) next(err); return; } const generatedTxt = generateText(fontName, _reworkFontOpts(fontOpts, options), txt); resolve(generatedTxt); if (next) next(null, generatedTxt); }); }); }; me.textSync = function(txt, options) { let fontName = ""; txt = txt + ""; if (typeof options === "string") { fontName = options; options = {}; } else { options = options || {}; fontName = options.font || figDefaults.font; } var fontOpts = _reworkFontOpts(me.loadFontSync(fontName), options); return generateText(fontName, fontOpts, txt); }; me.metadata = function(fontName, next) { fontName = fontName + ""; return new Promise(function(resolve, reject) { me.loadFont(fontName, function(err, fontOpts) { if (err) { if (next) next(err); reject(err); return; } if (next) { next(null, fontOpts, figFonts[fontName].comment); } resolve([fontOpts, figFonts[fontName].comment]); }); }); }; me.defaults = function(opts) { if (typeof opts === "object" && opts !== null) { for (var prop in opts) { if (opts.hasOwnProperty(prop)) { figDefaults[prop] = opts[prop]; } } } return JSON.parse(JSON.stringify(figDefaults)); }; me.parseFont = function(fontName, data) { data = data.replace(/\r\n/g, ` `).replace(/\r/g, ` `); figFonts[fontName] = {}; var lines = data.split(` `); var headerData = lines.splice(0, 1)[0].split(" "); var figFont = figFonts[fontName]; var opts = {}; opts.hardBlank = headerData[0].substr(5, 1); opts.height = parseInt(headerData[1], 10); opts.baseline = parseInt(headerData[2], 10); opts.maxLength = parseInt(headerData[3], 10); opts.oldLayout = parseInt(headerData[4], 10); opts.numCommentLines = parseInt(headerData[5], 10); opts.printDirection = headerData.length >= 6 ? parseInt(headerData[6], 10) : 0; opts.fullLayout = headerData.length >= 7 ? parseInt(headerData[7], 10) : null; opts.codeTagCount = headerData.length >= 8 ? parseInt(headerData[8], 10) : null; opts.fittingRules = getSmushingRules(opts.oldLayout, opts.fullLayout); figFont.options = opts; if (opts.hardBlank.length !== 1 || isNaN(opts.height) || isNaN(opts.baseline) || isNaN(opts.maxLength) || isNaN(opts.oldLayout) || isNaN(opts.numCommentLines)) { throw new Error("FIGlet header contains invalid values."); } let charNums = [], ii; for (ii = 32;ii <= 126; ii++) { charNums.push(ii); } charNums = charNums.concat(196, 214, 220, 228, 246, 252, 223); if (lines.length < opts.numCommentLines + opts.height * charNums.length) { throw new Error("FIGlet file is missing data."); } let cNum, endCharRegEx, parseError = false; figFont.comment = lines.splice(0, opts.numCommentLines).join(` `); figFont.numChars = 0; while (lines.length > 0 && figFont.numChars < charNums.length) { cNum = charNums[figFont.numChars]; figFont[cNum] = lines.splice(0, opts.height); for (ii = 0;ii < opts.height; ii++) { if (typeof figFont[cNum][ii] === "undefined") { figFont[cNum][ii] = ""; } else { endCharRegEx = new RegExp("\\" + figFont[cNum][ii].substr(figFont[cNum][ii].length - 1, 1) + "+$"); figFont[cNum][ii] = figFont[cNum][ii].replace(endCharRegEx, ""); } } figFont.numChars++; } while (lines.length > 0) { cNum = lines.splice(0, 1)[0].split(" ")[0]; if (/^0[xX][0-9a-fA-F]+$/.test(cNum)) { cNum = parseInt(cNum, 16); } else if (/^0[0-7]+$/.test(cNum)) { cNum = parseInt(cNum, 8); } else if (/^[0-9]+$/.test(cNum)) { cNum = parseInt(cNum, 10); } else if (/^-0[xX][0-9a-fA-F]+$/.test(cNum)) { cNum = parseInt(cNum, 16); } else { if (cNum === "") { break; } console.log("Invalid data:" + cNum); parseError = true; break; } figFont[cNum] = lines.splice(0, opts.height); for (ii = 0;ii < opts.height; ii++) { if (typeof figFont[cNum][ii] === "undefined") { figFont[cNum][ii] = ""; } else { endCharRegEx = new RegExp("\\" + figFont[cNum][ii].substr(figFont[cNum][ii].length - 1, 1) + "+$"); figFont[cNum][ii] = figFont[cNum][ii].replace(endCharRegEx, ""); } } figFont.numChars++; } if (parseError === true) { throw new Error("Error parsing data."); } return opts; }; me.loadFont = function(fontName, next) { if (figFonts[fontName]) { if (next) { next(null, figFonts[fontName].options); } return Promise.resolve(); } if (typeof fetch !== "function") { console.error("figlet.js requires the fetch API or a fetch polyfill such as https://cdnjs.com/libraries/fetch"); throw new Error("fetch is required for figlet.js to work."); } return fetch(figDefaults.fontPath + "/" + fontName + ".flf").then(function(response) { if (response.ok) { return response.text(); } console.log("Unexpected response", response); throw new Error("Network response was not ok."); }).then(function(text) { if (next) { next(null, me.parseFont(fontName, text)); } }).catch(next); }; me.loadFontSync = function(name) { if (figFonts[name]) { return figFonts[name].options; } throw new Error("synchronous font loading is not implemented for the browser"); }; me.preloadFonts = function(fonts, next) { let fontData = []; return fonts.reduce(function(promise, name) { return promise.then(function() { return fetch(figDefaults.fontPath + "/" + name + ".flf").then((response) => { return response.text(); }).then(function(data) { fontData.push(data); }); }); }, Promise.resolve()).then(function(res) { for (var i in fonts) { if (fonts.hasOwnProperty(i)) { me.parseFont(fonts[i], fontData[i]); } } if (next) next(); }); }; me.figFonts = figFonts; return me; })(); if (typeof module !== "undefined") { if (typeof module.exports !== "undefined") { module.exports = figlet; } } }); // node_modules/figlet/lib/node-figlet.js var require_node_figlet = __commonJS((exports, module) => { var __dirname = "/home/runner/work/create-dynamic-app/create-dynamic-app/node_modules/figlet/lib"; var figlet = require_figlet(); var fs = __require("fs"); var path = __require("path"); var fontDir = path.join(__dirname, "/../fonts/"); figlet.loadFont = function(name, next) { return new Promise(function(resolve, reject) { if (figlet.figFonts[name]) { next && next(null, figlet.figFonts[name].options); resolve(figlet.figFonts[name].options); return; } fs.readFile(path.join(fontDir, name + ".flf"), { encoding: "utf-8" }, function(err, fontData) { if (err) { next && next(err); reject(err); return; } fontData = fontData + ""; try { var font = figlet.parseFont(name, fontData); next && next(null, font); resolve(font); } catch (error) { next && next(error); reject(error); } }); }); }; figlet.loadFontSync = function(name) { if (figlet.figFonts[name]) { return figlet.figFonts[name].options; } var fontData = fs.readFileSync(path.join(fontDir, name + ".flf"), { encoding: "utf-8" }); fontData = fontData + ""; return figlet.parseFont(name, fontData); }; figlet.fonts = function(next) { return new Promise(function(resolve, reject) { var fontList = []; fs.readdir(fontDir, function(err, files) { if (err) { next && next(err); reject(err); return; } files.forEach(function(file) { if (/\.flf$/.test(file)) { fontList.push(file.replace(/\.flf$/, "")); } }); next && next(null, fontList); resolve(fontList); }); }); }; figlet.fontsSync = function() { var fontList = []; fs.readdirSync(fontDir).forEach(function(file) { if (/\.flf$/.test(file)) { fontList.push(file.replace(/\.flf$/, "")); } }); return fontList; }; module.exports = figlet; }); // node_modules/yoctocolors-cjs/index.js var require_yoctocolors_cjs = __commonJS((exports, module) => { var tty2 = __require("node:tty"); var hasColors = tty2?.WriteStream?.prototype?.hasColors?.() ?? false; var format = (open, close) => { if (!hasColors) { return (input) => input; } const openCode = `\x1B[${open}m`; const closeCode = `\x1B[${close}m`; return (input) => { const string = input + ""; let index = string.indexOf(closeCode); if (index === -1) { return openCode + string + closeCode; } let result = openCode; let lastIndex = 0; while (index !== -1) { result += string.slice(lastIndex, index) + openCode; lastIndex = index + closeCode.length; index = string.indexOf(closeCode, lastIndex); } result += string.slice(lastIndex) + closeCode; return result; }; }; var colors = {}; colors.reset = format(0, 0); colors.bold = format(1, 22); colors.dim = format(2, 22); colors.italic = format(3, 23); colors.underline = format(4, 24); colors.overline = format(53, 55); colors.inverse = format(7, 27); colors.hidden = format(8, 28); colors.strikethrough = format(9, 29); colors.black = format(30, 39); colors.red = format(31, 39); colors.green = format(32, 39); colors.yellow = format(33, 39); colors.blue = format(34, 39); colors.magenta = format(35, 39); colors.cyan = format(36, 39); colors.white = format(37, 39); colors.gray = format(90, 39); colors.bgBlack = format(40, 49); colors.bgRed = format(41, 49); colors.bgGreen = format(42, 49); colors.bgYellow = format(43, 49); colors.bgBlue = format(44, 49); colors.bgMagenta = format(45, 49); colors.bgCyan = format(46, 49); colors.bgWhite = format(47, 49); colors.bgGray = format(100, 49); colors.redBright = format(91, 39); colors.greenBright = format(92, 39); colors.yellowBright = format(93, 39); colors.blueBright = format(94, 39); colors.magentaBright = format(95, 39); colors.cyanBright = format(96, 39); colors.whiteBright = format(97, 39); colors.bgRedBright = format(101, 49); colors.bgGreenBright = format(102, 49); colors.bgYellowBright = format(103, 49); colors.bgBlueBright = format(104, 49); colors.bgMagentaBright = format(105, 49); colors.bgCyanBright = format(106, 49); colors.bgWhiteBright = format(107, 49); module.exports = colors; }); // node_modules/cli-width/index.js var require_cli_width = __commonJS((exports, module) => { module.exports = cliWidth; function normalizeOpts(options) { const defaultOpts = { defaultWidth: 0, output: process.stdout, tty: __require("tty") }; if (!options) { return defaultOpts; } Object.keys(defaultOpts).forEach(function(key) { if (!options[key]) { options[key] = defaultOpts[key]; } }); return options; } function cliWidth(options) { const opts = normalizeOpts(options); if (opts.output.getWindowSize) { return opts.output.getWindowSize()[0] || opts.defaultWidth; } if (opts.tty.getWindowSize) { return opts.tty.getWindowSize()[1] || opts.defaultWidth; } if (opts.output.columns) { return opts.output.columns; } if (process.env.CLI_WIDTH) { const width = parseInt(process.env.CLI_WIDTH, 10); if (!isNaN(width) && width !== 0) { return width; } } return opts.defaultWidth; } }); // node_modules/strip-ansi/node_modules/ansi-regex/index.js var require_ansi_regex = __commonJS((exports, module) => { module.exports = ({ onlyFirst = false } = {}) => { const pattern = [ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))" ].join("|"); return new RegExp(pattern, onlyFirst ? undefined : "g"); }; }); // node_modules/strip-ansi/index.js var require_strip_ansi = __commonJS((exports, module) => { var ansiRegex = require_ansi_regex(); module.exports = (string) => typeof string === "string" ? string.replace(ansiRegex(), "") : string; }); // node_modules/is-fullwidth-code-point/index.js var require_is_fullwidth_code_point = __commonJS((exports, module) => { var isFullwidthCodePoint = (codePoint) => { if (Number.isNaN(codePoint)) { return false; } if (codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141)) { return true; } return false; }; module.exports = isFullwidthCodePoint; module.exports.default = isFullwidthCodePoint; }); // node_modules/emoji-regex/index.js var require_emoji_regex = __commonJS((exports, module) => { module.exports = function() { return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\u