@ahmadjavaiddev/aura 1.0.0 → 1.0.2

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.
Files changed (3) hide show
  1. package/README.md +87 -41
  2. package/dist/index.js +16 -16
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,59 +1,105 @@
1
- # custom-structure scaffolder
1
+ # Aura
2
2
 
3
- A flexible, interactive CLI scaffolder to generate modern Express.js backends. Pick and choose only the features you need, and all framework code is cleanly abstracted into an `internals/` directory.
3
+ **The High-Performance API Scaffolder.**
4
+ Aura is an interactive CLI designed for developers who want to build modern Express.js backends—without the boilerplate. It abstracts framework complexities into a dedicated core while giving you total control over the features you need.
4
5
 
5
- ## Features you can choose:
6
- - **Core** (Included): Express, Zod validation, TS routing, centralized error handling.
7
- - **Redis**: Caching middleware and redis connection utilities.
8
- - **OpenTelemetry Logger**: PostHog integration and request logging.
9
- - **Prisma**: PostgreSQL database setup.
10
- - **Rate Limiting**: Route-specific rate limits.
11
- - **Auth Middleware**: Skeleton role-based authentication.
12
- - **Pagination**: Zod schemas and paging helpers.
6
+ [![npm version](https://img.shields.io/npm/v/@ahmadjavaiddev/aura.svg?style=flat-square)](https://www.npmjs.com/package/@ahmadjavaiddev/aura)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT)
13
8
 
14
- ## Installation / Usage
9
+ ---
15
10
 
16
- Run the CLI tool using bun:
11
+ ## Why Aura?
17
12
 
18
- ```bash
19
- bun create-custom-api my-new-project
20
- ```
13
+ - **Zero Boilerplate**: Skip the setup. Get a production-ready API in 30 seconds.
14
+ - **Abstraction-First**: Your logic in `src/routes`, framework magic in `src/base`.
15
+ - **Full-Type Safety**: Built from the ground up with TypeScript and Zod.
16
+ - **Enterprise-Ready**: Built-in support for OpenTelemetry, Redis, Auth, and Inngest.
17
+
18
+ ---
21
19
 
22
- Or run directly from the source:
20
+ ## Quick Start
21
+
22
+ Start your next project immediately with `npx`:
23
23
 
24
24
  ```bash
25
- bun run src/cli.ts my-new-project
25
+ npx @ahmadjavaiddev/aura my-new-project
26
26
  ```
27
27
 
28
- Follow the interactive prompts to select your features:
28
+ ### Options
29
+ | Command | Description |
30
+ | :--- | :--- |
31
+ | `aura [name]` | Create a new project in the specified directory |
32
+ | `-v, --version` | Display current Aura version |
33
+ | `-h, --help` | Show usage information |
29
34
 
30
- ```text
31
- ? Select features to include in your project:
32
- ◻ Redis Caching (Adds redis config and caching utilities)
33
- ◻ OpenTelemetry Logger (PostHog logging & request middleware)
34
- ◻ Prisma ORM (Database setup with Postgres)
35
- ◻ Rate Limiting (Express rate limit middleware)
36
- ◻ Auth Middleware (Role-based auth middleware skeleton)
37
- ◻ Pagination (Zod pagination helpers)
38
- ```
35
+ ---
39
36
 
40
- ## Generated Project Structure
37
+ ## Pick Your Stack
41
38
 
42
- The scaffolder abstracts away framework boilerplate. Your generated project will look like:
39
+ Aura is modular by design. Select only the components you need for your project:
43
40
 
44
- ```
41
+ ### Database & Models
42
+ - **ORM Options**: Prisma (PostgreSQL), Drizzle (SQL), Mongoose (MongoDB).
43
+ - **Auto-Sync**: Pre-configured scripts for database migrations and client generation.
44
+
45
+ ### Security & Auth
46
+ - **Providers**: Clerk (Hosted), Better-Auth (Self-hosted), Custom JWT.
47
+ - **Protection**: Optional Redis-based Rate Limiting and Role-based access skeletons.
48
+
49
+ ### Performance & Scaling
50
+ - **Caching**: Choose between local In-memory or distributed Redis caching.
51
+ - **Background Jobs**: Native Inngest support for event-driven background functions.
52
+
53
+ ### Observability & Tooling
54
+ - **Logging**: Console-based or OpenTelemetry + PostHog for production tracking.
55
+ - **Development**: Choice of **Biome** (Ultra-fast) or **ESLint + Prettier**.
56
+ - **Email**: Integrated **Resend** or traditional **SMTP** (Nodemailer).
57
+
58
+ ---
59
+
60
+ ## The Aura Blueprint
61
+
62
+ The generated project structure is designed to isolate framework code from your business logic:
63
+
64
+ ```text
45
65
  my-new-project/
46
- ├── .env
66
+ ├── src/
67
+ │ ├── app.ts # Clean main entry point
68
+ │ ├── routes/ # YOUR LOGIC: API endpoints live here
69
+ │ ├── base/ # THE CORE: Framework abstractions (Internal)
70
+ │ ├── config/ # Environment & service configurations
71
+ │ ├── middlewares/ # Custom middlewares (Auth, Logger)
72
+ │ ├── utils/ # Shared utilities (Zod, Errors, Email)
73
+ │ └── ... # Feature directories (models, inngest, etc.)
74
+ ├── .env # Pre-configured environment boilerplate
47
75
  ├── package.json
48
- └── src/
49
- ├── app.ts # Clean entry point
50
- ├── routes/
51
- │ └── health-route.ts # Your routing logic goes here
52
- └── internals/ # DO NOT TOUCH: Framework boilerplate
53
- ├── index.ts
54
- ├── define-route.ts
55
- ├── route-registry.ts
56
- └── ...
76
+ └── tsconfig.json
57
77
  ```
58
78
 
59
- To create new routes, use `defineRoute` imported from `../internals` in your generated project!
79
+ ---
80
+
81
+ ## Defining Routes
82
+
83
+ Aura makes route definition declarative and type-safe using the `defineRoute` utility:
84
+
85
+ ```typescript
86
+ import { defineRoute } from "../base";
87
+ import { z } from "zod";
88
+
89
+ export default defineRoute({
90
+ method: "POST",
91
+ path: "/users",
92
+ schema: {
93
+ body: z.object({ name: z.string(), email: z.string().email() })
94
+ },
95
+ handler: async ({ req, res, body }) => {
96
+ // Body is fully typed!
97
+ const { name, email } = body;
98
+ res.status(201).json({ success: true, user: { name, email } });
99
+ },
100
+ });
101
+ ```
102
+
103
+ ---
104
+
105
+ Built by [Ahmad Javaid](https://github.com/ahmadjavaiddev)
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- var gr=Object.create;var{getPrototypeOf:Ar,defineProperty:F,getOwnPropertyNames:Tr}=Object;var Or=Object.prototype.hasOwnProperty;var j=(r,t,o)=>{o=r!=null?gr(Ar(r)):{};let i=t||!r||!r.__esModule?F(o,"default",{value:r,enumerable:!0}):o;for(let n of Tr(r))if(!Or.call(i,n))F(i,n,{get:()=>r[n],enumerable:!0});return i};var D=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var q=D((Rt,ee)=>{var z={to(r,t){if(!t)return`\x1B[${r+1}G`;return`\x1B[${t+1};${r+1}H`},move(r,t){let o="";if(r<0)o+=`\x1B[${-r}D`;else if(r>0)o+=`\x1B[${r}C`;if(t<0)o+=`\x1B[${-t}A`;else if(t>0)o+=`\x1B[${t}B`;return o},up:(r=1)=>`\x1B[${r}A`,down:(r=1)=>`\x1B[${r}B`,forward:(r=1)=>`\x1B[${r}C`,backward:(r=1)=>`\x1B[${r}D`,nextLine:(r=1)=>"\x1B[E".repeat(r),prevLine:(r=1)=>"\x1B[F".repeat(r),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Cr={up:(r=1)=>"\x1B[S".repeat(r),down:(r=1)=>"\x1B[T".repeat(r)},jr={screen:"\x1B[2J",up:(r=1)=>"\x1B[1J".repeat(r),down:(r=1)=>"\x1B[J".repeat(r),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(r){let t="";for(let o=0;o<r;o++)t+=this.line+(o<r-1?z.up():"");if(r)t+=z.left;return t}};ee.exports={cursor:z,scroll:Cr,erase:jr,beep:"\x07"}});var H=D((It,U)=>{var P=process||{},re=P.argv||[],L=P.env||{},Lr=!(!!L.NO_COLOR||re.includes("--no-color"))&&(!!L.FORCE_COLOR||re.includes("--color")||P.platform==="win32"||(P.stdout||{}).isTTY&&L.TERM!=="dumb"||!!L.CI),Pr=(r,t,o=r)=>(i)=>{let n=""+i,s=n.indexOf(t,r.length);return~s?r+Mr(n,t,o,s)+t:r+n+t},Mr=(r,t,o,i)=>{let n="",s=0;do n+=r.substring(s,i)+o,s=i+t.length,i=r.indexOf(t,s);while(~i);return n+r.substring(s)},te=(r=Lr)=>{let t=r?Pr:()=>String;return{isColorSupported:r,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};U.exports=te();U.exports.createColors=te});var w=j(q(),1),G=j(H(),1);import{stdin as be,stdout as xe}from"node:process";import*as N from"node:readline";import oe from"node:readline";import{WriteStream as Gr}from"node:tty";function kr({onlyFirst:r=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(t,r?void 0:"g")}var fr=kr();function Ee(r){if(typeof r!="string")throw TypeError(`Expected a \`string\`, got \`${typeof r}\``);return r.replace(fr,"")}function ue(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ve={exports:{}};(function(r){var t={};r.exports=t,t.eastAsianWidth=function(i){var n=i.charCodeAt(0),s=i.length==2?i.charCodeAt(1):0,e=n;return 55296<=n&&n<=56319&&56320<=s&&s<=57343&&(n&=1023,s&=1023,e=n<<10|s,e+=65536),e==12288||65281<=e&&e<=65376||65504<=e&&e<=65510?"F":e==8361||65377<=e&&e<=65470||65474<=e&&e<=65479||65482<=e&&e<=65487||65490<=e&&e<=65495||65498<=e&&e<=65500||65512<=e&&e<=65518?"H":4352<=e&&e<=4447||4515<=e&&e<=4519||4602<=e&&e<=4607||9001<=e&&e<=9002||11904<=e&&e<=11929||11931<=e&&e<=12019||12032<=e&&e<=12245||12272<=e&&e<=12283||12289<=e&&e<=12350||12353<=e&&e<=12438||12441<=e&&e<=12543||12549<=e&&e<=12589||12593<=e&&e<=12686||12688<=e&&e<=12730||12736<=e&&e<=12771||12784<=e&&e<=12830||12832<=e&&e<=12871||12880<=e&&e<=13054||13056<=e&&e<=19903||19968<=e&&e<=42124||42128<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||55216<=e&&e<=55238||55243<=e&&e<=55291||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65106||65108<=e&&e<=65126||65128<=e&&e<=65131||110592<=e&&e<=110593||127488<=e&&e<=127490||127504<=e&&e<=127546||127552<=e&&e<=127560||127568<=e&&e<=127569||131072<=e&&e<=194367||177984<=e&&e<=196605||196608<=e&&e<=262141?"W":32<=e&&e<=126||162<=e&&e<=163||165<=e&&e<=166||e==172||e==175||10214<=e&&e<=10221||10629<=e&&e<=10630?"Na":e==161||e==164||167<=e&&e<=168||e==170||173<=e&&e<=174||176<=e&&e<=180||182<=e&&e<=186||188<=e&&e<=191||e==198||e==208||215<=e&&e<=216||222<=e&&e<=225||e==230||232<=e&&e<=234||236<=e&&e<=237||e==240||242<=e&&e<=243||247<=e&&e<=250||e==252||e==254||e==257||e==273||e==275||e==283||294<=e&&e<=295||e==299||305<=e&&e<=307||e==312||319<=e&&e<=322||e==324||328<=e&&e<=331||e==333||338<=e&&e<=339||358<=e&&e<=359||e==363||e==462||e==464||e==466||e==468||e==470||e==472||e==474||e==476||e==593||e==609||e==708||e==711||713<=e&&e<=715||e==717||e==720||728<=e&&e<=731||e==733||e==735||768<=e&&e<=879||913<=e&&e<=929||931<=e&&e<=937||945<=e&&e<=961||963<=e&&e<=969||e==1025||1040<=e&&e<=1103||e==1105||e==8208||8211<=e&&e<=8214||8216<=e&&e<=8217||8220<=e&&e<=8221||8224<=e&&e<=8226||8228<=e&&e<=8231||e==8240||8242<=e&&e<=8243||e==8245||e==8251||e==8254||e==8308||e==8319||8321<=e&&e<=8324||e==8364||e==8451||e==8453||e==8457||e==8467||e==8470||8481<=e&&e<=8482||e==8486||e==8491||8531<=e&&e<=8532||8539<=e&&e<=8542||8544<=e&&e<=8555||8560<=e&&e<=8569||e==8585||8592<=e&&e<=8601||8632<=e&&e<=8633||e==8658||e==8660||e==8679||e==8704||8706<=e&&e<=8707||8711<=e&&e<=8712||e==8715||e==8719||e==8721||e==8725||e==8730||8733<=e&&e<=8736||e==8739||e==8741||8743<=e&&e<=8748||e==8750||8756<=e&&e<=8759||8764<=e&&e<=8765||e==8776||e==8780||e==8786||8800<=e&&e<=8801||8804<=e&&e<=8807||8810<=e&&e<=8811||8814<=e&&e<=8815||8834<=e&&e<=8835||8838<=e&&e<=8839||e==8853||e==8857||e==8869||e==8895||e==8978||9312<=e&&e<=9449||9451<=e&&e<=9547||9552<=e&&e<=9587||9600<=e&&e<=9615||9618<=e&&e<=9621||9632<=e&&e<=9633||9635<=e&&e<=9641||9650<=e&&e<=9651||9654<=e&&e<=9655||9660<=e&&e<=9661||9664<=e&&e<=9665||9670<=e&&e<=9672||e==9675||9678<=e&&e<=9681||9698<=e&&e<=9701||e==9711||9733<=e&&e<=9734||e==9737||9742<=e&&e<=9743||9748<=e&&e<=9749||e==9756||e==9758||e==9792||e==9794||9824<=e&&e<=9825||9827<=e&&e<=9829||9831<=e&&e<=9834||9836<=e&&e<=9837||e==9839||9886<=e&&e<=9887||9918<=e&&e<=9919||9924<=e&&e<=9933||9935<=e&&e<=9953||e==9955||9960<=e&&e<=9983||e==10045||e==10071||10102<=e&&e<=10111||11093<=e&&e<=11097||12872<=e&&e<=12879||57344<=e&&e<=63743||65024<=e&&e<=65039||e==65533||127232<=e&&e<=127242||127248<=e&&e<=127277||127280<=e&&e<=127337||127344<=e&&e<=127386||917760<=e&&e<=917999||983040<=e&&e<=1048573||1048576<=e&&e<=1114109?"A":"N"},t.characterLength=function(i){var n=this.eastAsianWidth(i);return n=="F"||n=="W"||n=="A"?2:1};function o(i){return i.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}t.length=function(i){for(var n=o(i),s=0,e=0;e<n.length;e++)s=s+this.characterLength(n[e]);return s},t.slice=function(i,n,s){textLen=t.length(i),n=n||0,s=s||1,n<0&&(n=textLen+n),s<0&&(s=textLen+s);for(var e="",c=0,d=o(i),l=0;l<d.length;l++){var u=d[l],x=t.length(u);if(c>=n-(x==2?1:0))if(c+x<=s)e+=u;else break;c+=x}return e}})(ve);var Br=ve.exports,zr=ue(Br),qr=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\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])|\uD83C[\uDF3E\uDF73\uDF7C\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\uDF7C\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\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\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\uDF7C\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\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\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\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\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-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Ur=ue(qr);function O(r,t={}){if(typeof r!="string"||r.length===0||(t={ambiguousIsNarrow:!0,...t},r=Ee(r),r.length===0))return 0;r=r.replace(Ur()," ");let o=t.ambiguousIsNarrow?1:2,i=0;for(let n of r){let s=n.codePointAt(0);if(s<=31||s>=127&&s<=159||s>=768&&s<=879)continue;switch(zr.eastAsianWidth(n)){case"F":case"W":i+=2;break;case"A":i+=o;break;default:i+=1}}return i}var $=10,ne=(r=0)=>(t)=>`\x1B[${t+r}m`,ie=(r=0)=>(t)=>`\x1B[${38+r};5;${t}m`,se=(r=0)=>(t,o,i)=>`\x1B[${38+r};2;${t};${o};${i}m`,b={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(b.modifier);var Hr=Object.keys(b.color),$r=Object.keys(b.bgColor);[...Hr,...$r];function Wr(){let r=new Map;for(let[t,o]of Object.entries(b)){for(let[i,n]of Object.entries(o))b[i]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},o[i]=b[i],r.set(n[0],n[1]);Object.defineProperty(b,t,{value:o,enumerable:!1})}return Object.defineProperty(b,"codes",{value:r,enumerable:!1}),b.color.close="\x1B[39m",b.bgColor.close="\x1B[49m",b.color.ansi=ne(),b.color.ansi256=ie(),b.color.ansi16m=se(),b.bgColor.ansi=ne($),b.bgColor.ansi256=ie($),b.bgColor.ansi16m=se($),Object.defineProperties(b,{rgbToAnsi256:{value:(t,o,i)=>t===o&&o===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(o/255*5)+Math.round(i/255*5),enumerable:!1},hexToRgb:{value:(t)=>{let o=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!o)return[0,0,0];let[i]=o;i.length===3&&(i=[...i].map((s)=>s+s).join(""));let n=Number.parseInt(i,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:(t)=>b.rgbToAnsi256(...b.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value:(t)=>{if(t<8)return 30+t;if(t<16)return 90+(t-8);let o,i,n;if(t>=232)o=((t-232)*10+8)/255,i=o,n=o;else{t-=16;let c=t%36;o=Math.floor(t/36)/5,i=Math.floor(c/6)/5,n=c%6/5}let s=Math.max(o,i,n)*2;if(s===0)return 30;let e=30+(Math.round(n)<<2|Math.round(i)<<1|Math.round(o));return s===2&&(e+=60),e},enumerable:!1},rgbToAnsi:{value:(t,o,i)=>b.ansi256ToAnsi(b.rgbToAnsi256(t,o,i)),enumerable:!1},hexToAnsi:{value:(t)=>b.ansi256ToAnsi(b.hexToAnsi256(t)),enumerable:!1}}),b}var Jr=Wr(),k=new Set(["\x1B","›"]),Zr=39,J="\x07",he="[",Vr="]",we="m",Z=`${Vr}8;;`,me=(r)=>`${k.values().next().value}${he}${r}${we}`,ae=(r)=>`${k.values().next().value}${Z}${r}${J}`,Kr=(r)=>r.split(" ").map((t)=>O(t)),W=(r,t,o)=>{let i=[...t],n=!1,s=!1,e=O(Ee(r[r.length-1]));for(let[c,d]of i.entries()){let l=O(d);if(e+l<=o?r[r.length-1]+=d:(r.push(d),e=0),k.has(d)&&(n=!0,s=i.slice(c+1).join("").startsWith(Z)),n){s?d===J&&(n=!1,s=!1):d===we&&(n=!1);continue}e+=l,e===o&&c<i.length-1&&(r.push(""),e=0)}!e&&r[r.length-1].length>0&&r.length>1&&(r[r.length-2]+=r.pop())},Yr=(r)=>{let t=r.split(" "),o=t.length;for(;o>0&&!(O(t[o-1])>0);)o--;return o===t.length?r:t.slice(0,o).join(" ")+t.slice(o).join("")},Xr=(r,t,o={})=>{if(o.trim!==!1&&r.trim()==="")return"";let i="",n,s,e=Kr(r),c=[""];for(let[l,u]of r.split(" ").entries()){o.trim!==!1&&(c[c.length-1]=c[c.length-1].trimStart());let x=O(c[c.length-1]);if(l!==0&&(x>=t&&(o.wordWrap===!1||o.trim===!1)&&(c.push(""),x=0),(x>0||o.trim===!1)&&(c[c.length-1]+=" ",x++)),o.hard&&e[l]>t){let S=t-x,h=1+Math.floor((e[l]-S-1)/t);Math.floor((e[l]-1)/t)<h&&c.push(""),W(c,u,t);continue}if(x+e[l]>t&&x>0&&e[l]>0){if(o.wordWrap===!1&&x<t){W(c,u,t);continue}c.push("")}if(x+e[l]>t&&o.wordWrap===!1){W(c,u,t);continue}c[c.length-1]+=u}o.trim!==!1&&(c=c.map((l)=>Yr(l)));let d=[...c.join(`
3
- `)];for(let[l,u]of d.entries()){if(i+=u,k.has(u)){let{groups:S}=new RegExp(`(?:\\${he}(?<code>\\d+)m|\\${Z}(?<uri>.*)${J})`).exec(d.slice(l).join(""))||{groups:{}};if(S.code!==void 0){let h=Number.parseFloat(S.code);n=h===Zr?void 0:h}else S.uri!==void 0&&(s=S.uri.length===0?void 0:S.uri)}let x=Jr.codes.get(Number(n));d[l+1]===`
2
+ var gr=Object.create;var{getPrototypeOf:Ar,defineProperty:F,getOwnPropertyNames:Tr}=Object;var Or=Object.prototype.hasOwnProperty;function Cr(r){return this[r]}var jr,Lr,j=(r,t,o)=>{var i=r!=null&&typeof r==="object";if(i){var n=t?jr??=new WeakMap:Lr??=new WeakMap,s=n.get(r);if(s)return s}o=r!=null?gr(Ar(r)):{};let e=t||!r||!r.__esModule?F(o,"default",{value:r,enumerable:!0}):o;for(let a of Tr(r))if(!Or.call(e,a))F(e,a,{get:Cr.bind(r,a),enumerable:!0});if(i)n.set(r,e);return e};var D=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var q=D((Nt,ee)=>{var z={to(r,t){if(!t)return`\x1B[${r+1}G`;return`\x1B[${t+1};${r+1}H`},move(r,t){let o="";if(r<0)o+=`\x1B[${-r}D`;else if(r>0)o+=`\x1B[${r}C`;if(t<0)o+=`\x1B[${-t}A`;else if(t>0)o+=`\x1B[${t}B`;return o},up:(r=1)=>`\x1B[${r}A`,down:(r=1)=>`\x1B[${r}B`,forward:(r=1)=>`\x1B[${r}C`,backward:(r=1)=>`\x1B[${r}D`,nextLine:(r=1)=>"\x1B[E".repeat(r),prevLine:(r=1)=>"\x1B[F".repeat(r),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Pr={up:(r=1)=>"\x1B[S".repeat(r),down:(r=1)=>"\x1B[T".repeat(r)},Mr={screen:"\x1B[2J",up:(r=1)=>"\x1B[1J".repeat(r),down:(r=1)=>"\x1B[J".repeat(r),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(r){let t="";for(let o=0;o<r;o++)t+=this.line+(o<r-1?z.up():"");if(r)t+=z.left;return t}};ee.exports={cursor:z,scroll:Pr,erase:Mr,beep:"\x07"}});var H=D((gt,U)=>{var P=process||{},re=P.argv||[],L=P.env||{},Gr=!(!!L.NO_COLOR||re.includes("--no-color"))&&(!!L.FORCE_COLOR||re.includes("--color")||P.platform==="win32"||(P.stdout||{}).isTTY&&L.TERM!=="dumb"||!!L.CI),kr=(r,t,o=r)=>(i)=>{let n=""+i,s=n.indexOf(t,r.length);return~s?r+fr(n,t,o,s)+t:r+n+t},fr=(r,t,o,i)=>{let n="",s=0;do n+=r.substring(s,i)+o,s=i+t.length,i=r.indexOf(t,s);while(~i);return n+r.substring(s)},te=(r=Gr)=>{let t=r?kr:()=>String;return{isColorSupported:r,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};U.exports=te();U.exports.createColors=te});var w=j(q(),1),G=j(H(),1);import{stdin as be,stdout as xe}from"node:process";import*as N from"node:readline";import oe from"node:readline";import{WriteStream as Br}from"node:tty";function zr({onlyFirst:r=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(t,r?void 0:"g")}var qr=zr();function Ee(r){if(typeof r!="string")throw TypeError(`Expected a \`string\`, got \`${typeof r}\``);return r.replace(qr,"")}function ue(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ve={exports:{}};(function(r){var t={};r.exports=t,t.eastAsianWidth=function(i){var n=i.charCodeAt(0),s=i.length==2?i.charCodeAt(1):0,e=n;return 55296<=n&&n<=56319&&56320<=s&&s<=57343&&(n&=1023,s&=1023,e=n<<10|s,e+=65536),e==12288||65281<=e&&e<=65376||65504<=e&&e<=65510?"F":e==8361||65377<=e&&e<=65470||65474<=e&&e<=65479||65482<=e&&e<=65487||65490<=e&&e<=65495||65498<=e&&e<=65500||65512<=e&&e<=65518?"H":4352<=e&&e<=4447||4515<=e&&e<=4519||4602<=e&&e<=4607||9001<=e&&e<=9002||11904<=e&&e<=11929||11931<=e&&e<=12019||12032<=e&&e<=12245||12272<=e&&e<=12283||12289<=e&&e<=12350||12353<=e&&e<=12438||12441<=e&&e<=12543||12549<=e&&e<=12589||12593<=e&&e<=12686||12688<=e&&e<=12730||12736<=e&&e<=12771||12784<=e&&e<=12830||12832<=e&&e<=12871||12880<=e&&e<=13054||13056<=e&&e<=19903||19968<=e&&e<=42124||42128<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||55216<=e&&e<=55238||55243<=e&&e<=55291||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65106||65108<=e&&e<=65126||65128<=e&&e<=65131||110592<=e&&e<=110593||127488<=e&&e<=127490||127504<=e&&e<=127546||127552<=e&&e<=127560||127568<=e&&e<=127569||131072<=e&&e<=194367||177984<=e&&e<=196605||196608<=e&&e<=262141?"W":32<=e&&e<=126||162<=e&&e<=163||165<=e&&e<=166||e==172||e==175||10214<=e&&e<=10221||10629<=e&&e<=10630?"Na":e==161||e==164||167<=e&&e<=168||e==170||173<=e&&e<=174||176<=e&&e<=180||182<=e&&e<=186||188<=e&&e<=191||e==198||e==208||215<=e&&e<=216||222<=e&&e<=225||e==230||232<=e&&e<=234||236<=e&&e<=237||e==240||242<=e&&e<=243||247<=e&&e<=250||e==252||e==254||e==257||e==273||e==275||e==283||294<=e&&e<=295||e==299||305<=e&&e<=307||e==312||319<=e&&e<=322||e==324||328<=e&&e<=331||e==333||338<=e&&e<=339||358<=e&&e<=359||e==363||e==462||e==464||e==466||e==468||e==470||e==472||e==474||e==476||e==593||e==609||e==708||e==711||713<=e&&e<=715||e==717||e==720||728<=e&&e<=731||e==733||e==735||768<=e&&e<=879||913<=e&&e<=929||931<=e&&e<=937||945<=e&&e<=961||963<=e&&e<=969||e==1025||1040<=e&&e<=1103||e==1105||e==8208||8211<=e&&e<=8214||8216<=e&&e<=8217||8220<=e&&e<=8221||8224<=e&&e<=8226||8228<=e&&e<=8231||e==8240||8242<=e&&e<=8243||e==8245||e==8251||e==8254||e==8308||e==8319||8321<=e&&e<=8324||e==8364||e==8451||e==8453||e==8457||e==8467||e==8470||8481<=e&&e<=8482||e==8486||e==8491||8531<=e&&e<=8532||8539<=e&&e<=8542||8544<=e&&e<=8555||8560<=e&&e<=8569||e==8585||8592<=e&&e<=8601||8632<=e&&e<=8633||e==8658||e==8660||e==8679||e==8704||8706<=e&&e<=8707||8711<=e&&e<=8712||e==8715||e==8719||e==8721||e==8725||e==8730||8733<=e&&e<=8736||e==8739||e==8741||8743<=e&&e<=8748||e==8750||8756<=e&&e<=8759||8764<=e&&e<=8765||e==8776||e==8780||e==8786||8800<=e&&e<=8801||8804<=e&&e<=8807||8810<=e&&e<=8811||8814<=e&&e<=8815||8834<=e&&e<=8835||8838<=e&&e<=8839||e==8853||e==8857||e==8869||e==8895||e==8978||9312<=e&&e<=9449||9451<=e&&e<=9547||9552<=e&&e<=9587||9600<=e&&e<=9615||9618<=e&&e<=9621||9632<=e&&e<=9633||9635<=e&&e<=9641||9650<=e&&e<=9651||9654<=e&&e<=9655||9660<=e&&e<=9661||9664<=e&&e<=9665||9670<=e&&e<=9672||e==9675||9678<=e&&e<=9681||9698<=e&&e<=9701||e==9711||9733<=e&&e<=9734||e==9737||9742<=e&&e<=9743||9748<=e&&e<=9749||e==9756||e==9758||e==9792||e==9794||9824<=e&&e<=9825||9827<=e&&e<=9829||9831<=e&&e<=9834||9836<=e&&e<=9837||e==9839||9886<=e&&e<=9887||9918<=e&&e<=9919||9924<=e&&e<=9933||9935<=e&&e<=9953||e==9955||9960<=e&&e<=9983||e==10045||e==10071||10102<=e&&e<=10111||11093<=e&&e<=11097||12872<=e&&e<=12879||57344<=e&&e<=63743||65024<=e&&e<=65039||e==65533||127232<=e&&e<=127242||127248<=e&&e<=127277||127280<=e&&e<=127337||127344<=e&&e<=127386||917760<=e&&e<=917999||983040<=e&&e<=1048573||1048576<=e&&e<=1114109?"A":"N"},t.characterLength=function(i){var n=this.eastAsianWidth(i);return n=="F"||n=="W"||n=="A"?2:1};function o(i){return i.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}t.length=function(i){for(var n=o(i),s=0,e=0;e<n.length;e++)s=s+this.characterLength(n[e]);return s},t.slice=function(i,n,s){textLen=t.length(i),n=n||0,s=s||1,n<0&&(n=textLen+n),s<0&&(s=textLen+s);for(var e="",a=0,d=o(i),l=0;l<d.length;l++){var u=d[l],x=t.length(u);if(a>=n-(x==2?1:0))if(a+x<=s)e+=u;else break;a+=x}return e}})(ve);var Ur=ve.exports,Hr=ue(Ur),$r=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\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])|\uD83C[\uDF3E\uDF73\uDF7C\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\uDF7C\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\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\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\uDF7C\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\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\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\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\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-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Wr=ue($r);function O(r,t={}){if(typeof r!="string"||r.length===0||(t={ambiguousIsNarrow:!0,...t},r=Ee(r),r.length===0))return 0;r=r.replace(Wr()," ");let o=t.ambiguousIsNarrow?1:2,i=0;for(let n of r){let s=n.codePointAt(0);if(s<=31||s>=127&&s<=159||s>=768&&s<=879)continue;switch(Hr.eastAsianWidth(n)){case"F":case"W":i+=2;break;case"A":i+=o;break;default:i+=1}}return i}var $=10,ne=(r=0)=>(t)=>`\x1B[${t+r}m`,ie=(r=0)=>(t)=>`\x1B[${38+r};5;${t}m`,se=(r=0)=>(t,o,i)=>`\x1B[${38+r};2;${t};${o};${i}m`,b={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(b.modifier);var Jr=Object.keys(b.color),Zr=Object.keys(b.bgColor);[...Jr,...Zr];function Vr(){let r=new Map;for(let[t,o]of Object.entries(b)){for(let[i,n]of Object.entries(o))b[i]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},o[i]=b[i],r.set(n[0],n[1]);Object.defineProperty(b,t,{value:o,enumerable:!1})}return Object.defineProperty(b,"codes",{value:r,enumerable:!1}),b.color.close="\x1B[39m",b.bgColor.close="\x1B[49m",b.color.ansi=ne(),b.color.ansi256=ie(),b.color.ansi16m=se(),b.bgColor.ansi=ne($),b.bgColor.ansi256=ie($),b.bgColor.ansi16m=se($),Object.defineProperties(b,{rgbToAnsi256:{value:(t,o,i)=>t===o&&o===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(o/255*5)+Math.round(i/255*5),enumerable:!1},hexToRgb:{value:(t)=>{let o=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!o)return[0,0,0];let[i]=o;i.length===3&&(i=[...i].map((s)=>s+s).join(""));let n=Number.parseInt(i,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:(t)=>b.rgbToAnsi256(...b.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value:(t)=>{if(t<8)return 30+t;if(t<16)return 90+(t-8);let o,i,n;if(t>=232)o=((t-232)*10+8)/255,i=o,n=o;else{t-=16;let a=t%36;o=Math.floor(t/36)/5,i=Math.floor(a/6)/5,n=a%6/5}let s=Math.max(o,i,n)*2;if(s===0)return 30;let e=30+(Math.round(n)<<2|Math.round(i)<<1|Math.round(o));return s===2&&(e+=60),e},enumerable:!1},rgbToAnsi:{value:(t,o,i)=>b.ansi256ToAnsi(b.rgbToAnsi256(t,o,i)),enumerable:!1},hexToAnsi:{value:(t)=>b.ansi256ToAnsi(b.hexToAnsi256(t)),enumerable:!1}}),b}var Kr=Vr(),k=new Set(["\x1B","›"]),Yr=39,J="\x07",he="[",Xr="]",we="m",Z=`${Xr}8;;`,me=(r)=>`${k.values().next().value}${he}${r}${we}`,ae=(r)=>`${k.values().next().value}${Z}${r}${J}`,Qr=(r)=>r.split(" ").map((t)=>O(t)),W=(r,t,o)=>{let i=[...t],n=!1,s=!1,e=O(Ee(r[r.length-1]));for(let[a,d]of i.entries()){let l=O(d);if(e+l<=o?r[r.length-1]+=d:(r.push(d),e=0),k.has(d)&&(n=!0,s=i.slice(a+1).join("").startsWith(Z)),n){s?d===J&&(n=!1,s=!1):d===we&&(n=!1);continue}e+=l,e===o&&a<i.length-1&&(r.push(""),e=0)}!e&&r[r.length-1].length>0&&r.length>1&&(r[r.length-2]+=r.pop())},Fr=(r)=>{let t=r.split(" "),o=t.length;for(;o>0&&!(O(t[o-1])>0);)o--;return o===t.length?r:t.slice(0,o).join(" ")+t.slice(o).join("")},Dr=(r,t,o={})=>{if(o.trim!==!1&&r.trim()==="")return"";let i="",n,s,e=Qr(r),a=[""];for(let[l,u]of r.split(" ").entries()){o.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let x=O(a[a.length-1]);if(l!==0&&(x>=t&&(o.wordWrap===!1||o.trim===!1)&&(a.push(""),x=0),(x>0||o.trim===!1)&&(a[a.length-1]+=" ",x++)),o.hard&&e[l]>t){let S=t-x,h=1+Math.floor((e[l]-S-1)/t);Math.floor((e[l]-1)/t)<h&&a.push(""),W(a,u,t);continue}if(x+e[l]>t&&x>0&&e[l]>0){if(o.wordWrap===!1&&x<t){W(a,u,t);continue}a.push("")}if(x+e[l]>t&&o.wordWrap===!1){W(a,u,t);continue}a[a.length-1]+=u}o.trim!==!1&&(a=a.map((l)=>Fr(l)));let d=[...a.join(`
3
+ `)];for(let[l,u]of d.entries()){if(i+=u,k.has(u)){let{groups:S}=new RegExp(`(?:\\${he}(?<code>\\d+)m|\\${Z}(?<uri>.*)${J})`).exec(d.slice(l).join(""))||{groups:{}};if(S.code!==void 0){let h=Number.parseFloat(S.code);n=h===Yr?void 0:h}else S.uri!==void 0&&(s=S.uri.length===0?void 0:S.uri)}let x=Kr.codes.get(Number(n));d[l+1]===`
4
4
  `?(s&&(i+=ae("")),n&&x&&(i+=me(x))):u===`
5
5
  `&&(n&&x&&(i+=me(n)),s&&(i+=ae(s)))}return i};function ce(r,t,o){return String(r).normalize().replace(/\r\n/g,`
6
6
  `).split(`
7
- `).map((i)=>Xr(i,t,o)).join(`
8
- `)}var Qr=Object.defineProperty,Fr=(r,t,o)=>(t in r)?Qr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,y=(r,t,o)=>(Fr(r,typeof t!="symbol"?t+"":t,o),o);function Dr(r,t){if(r===t)return;let o=r.split(`
7
+ `).map((i)=>Dr(i,t,o)).join(`
8
+ `)}var et=Object.defineProperty,rt=(r,t,o)=>(t in r)?et(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,y=(r,t,o)=>(rt(r,typeof t!="symbol"?t+"":t,o),o);function tt(r,t){if(r===t)return;let o=r.split(`
9
9
  `),i=t.split(`
10
- `),n=[];for(let s=0;s<Math.max(o.length,i.length);s++)o[s]!==i[s]&&n.push(s);return n}var Se=Symbol("clack:cancel");function C(r){return r===Se}function M(r,t){r.isTTY&&r.setRawMode(t)}var pe=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),et=new Set(["up","down","left","right","space","enter"]);class f{constructor({render:r,input:t=be,output:o=xe,...i},n=!0){y(this,"input"),y(this,"output"),y(this,"rl"),y(this,"opts"),y(this,"_track",!1),y(this,"_render"),y(this,"_cursor",0),y(this,"state","initial"),y(this,"value"),y(this,"error",""),y(this,"subscribers",new Map),y(this,"_prevFrame",""),this.opts=i,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=r.bind(this),this._track=n,this.input=t,this.output=o}prompt(){let r=new Gr(0);return r._write=(t,o,i)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),i()},this.input.pipe(r),this.rl=oe.createInterface({input:this.input,output:r,tabSize:2,prompt:"",escapeCodeTimeout:50}),oe.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),M(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((t,o)=>{this.once("submit",()=>{this.output.write(w.cursor.show),this.output.off("resize",this.render),M(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(w.cursor.show),this.output.off("resize",this.render),M(this.input,!1),t(Se)})})}on(r,t){let o=this.subscribers.get(r)??[];o.push({cb:t}),this.subscribers.set(r,o)}once(r,t){let o=this.subscribers.get(r)??[];o.push({cb:t,once:!0}),this.subscribers.set(r,o)}emit(r,...t){let o=this.subscribers.get(r)??[],i=[];for(let n of o)n.cb(...t),n.once&&i.push(()=>o.splice(o.indexOf(n),1));for(let n of i)n()}unsubscribe(){this.subscribers.clear()}onKeypress(r,t){if(this.state==="error"&&(this.state="active"),t?.name&&!this._track&&pe.has(t.name)&&this.emit("cursor",pe.get(t.name)),t?.name&&et.has(t.name)&&this.emit("cursor",t.name),r&&(r.toLowerCase()==="y"||r.toLowerCase()==="n")&&this.emit("confirm",r.toLowerCase()==="y"),r==="\t"&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),r&&this.emit("key",r.toLowerCase()),t?.name==="return"){if(this.opts.validate){let o=this.opts.validate(this.value);o&&(this.error=o,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}r==="\x03"&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
10
+ `),n=[];for(let s=0;s<Math.max(o.length,i.length);s++)o[s]!==i[s]&&n.push(s);return n}var Se=Symbol("clack:cancel");function C(r){return r===Se}function M(r,t){r.isTTY&&r.setRawMode(t)}var pe=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),ot=new Set(["up","down","left","right","space","enter"]);class f{constructor({render:r,input:t=be,output:o=xe,...i},n=!0){y(this,"input"),y(this,"output"),y(this,"rl"),y(this,"opts"),y(this,"_track",!1),y(this,"_render"),y(this,"_cursor",0),y(this,"state","initial"),y(this,"value"),y(this,"error",""),y(this,"subscribers",new Map),y(this,"_prevFrame",""),this.opts=i,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=r.bind(this),this._track=n,this.input=t,this.output=o}prompt(){let r=new Br(0);return r._write=(t,o,i)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),i()},this.input.pipe(r),this.rl=oe.createInterface({input:this.input,output:r,tabSize:2,prompt:"",escapeCodeTimeout:50}),oe.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),M(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((t,o)=>{this.once("submit",()=>{this.output.write(w.cursor.show),this.output.off("resize",this.render),M(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(w.cursor.show),this.output.off("resize",this.render),M(this.input,!1),t(Se)})})}on(r,t){let o=this.subscribers.get(r)??[];o.push({cb:t}),this.subscribers.set(r,o)}once(r,t){let o=this.subscribers.get(r)??[];o.push({cb:t,once:!0}),this.subscribers.set(r,o)}emit(r,...t){let o=this.subscribers.get(r)??[],i=[];for(let n of o)n.cb(...t),n.once&&i.push(()=>o.splice(o.indexOf(n),1));for(let n of i)n()}unsubscribe(){this.subscribers.clear()}onKeypress(r,t){if(this.state==="error"&&(this.state="active"),t?.name&&!this._track&&pe.has(t.name)&&this.emit("cursor",pe.get(t.name)),t?.name&&ot.has(t.name)&&this.emit("cursor",t.name),r&&(r.toLowerCase()==="y"||r.toLowerCase()==="n")&&this.emit("confirm",r.toLowerCase()==="y"),r==="\t"&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),r&&this.emit("key",r.toLowerCase()),t?.name==="return"){if(this.opts.validate){let o=this.opts.validate(this.value);o&&(this.error=o,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}r==="\x03"&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
11
11
  `),M(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let r=ce(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
12
- `).length-1;this.output.write(w.cursor.move(-999,r*-1))}render(){let r=ce(this._render(this)??"",process.stdout.columns,{hard:!0});if(r!==this._prevFrame){if(this.state==="initial")this.output.write(w.cursor.hide);else{let t=Dr(this._prevFrame,r);if(this.restoreCursor(),t&&t?.length===1){let o=t[0];this.output.write(w.cursor.move(0,o)),this.output.write(w.erase.lines(1));let i=r.split(`
12
+ `).length-1;this.output.write(w.cursor.move(-999,r*-1))}render(){let r=ce(this._render(this)??"",process.stdout.columns,{hard:!0});if(r!==this._prevFrame){if(this.state==="initial")this.output.write(w.cursor.hide);else{let t=tt(this._prevFrame,r);if(this.restoreCursor(),t&&t?.length===1){let o=t[0];this.output.write(w.cursor.move(0,o)),this.output.write(w.erase.lines(1));let i=r.split(`
13
13
  `);this.output.write(i[o]),this._prevFrame=r,this.output.write(w.cursor.move(0,i.length-o-1));return}else if(t&&t?.length>1){let o=t[0];this.output.write(w.cursor.move(0,o)),this.output.write(w.erase.down());let i=r.split(`
14
14
  `).slice(o);this.output.write(i.join(`
15
- `)),this._prevFrame=r;return}this.output.write(w.erase.down())}this.output.write(r),this.state==="initial"&&(this.state="active"),this._prevFrame=r}}}var rt=Object.defineProperty,tt=(r,t,o)=>(t in r)?rt(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,le=(r,t,o)=>(tt(r,typeof t!="symbol"?t+"":t,o),o),ye=class extends f{constructor(r){super(r,!1),le(this,"options"),le(this,"cursor",0),this.options=r.options,this.value=[...r.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:t})=>t===r.cursorAt),0),this.on("key",(t)=>{t==="a"&&this.toggleAll()}),this.on("cursor",(t)=>{switch(t){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let r=this.value.length===this.options.length;this.value=r?[]:this.options.map((t)=>t.value)}toggleValue(){let r=this.value.includes(this._value);this.value=r?this.value.filter((t)=>t!==this._value):[...this.value,this._value]}};var ot=Object.defineProperty,nt=(r,t,o)=>(t in r)?ot(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,de=(r,t,o)=>(nt(r,typeof t!="symbol"?t+"":t,o),o),Re=class extends f{constructor(r){super(r,!1),de(this,"options"),de(this,"cursor",0),this.options=r.options,this.cursor=this.options.findIndex(({value:t})=>t===r.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(t)=>{switch(t){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var it=Object.defineProperty,st=(r,t,o)=>(t in r)?it(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,mt=(r,t,o)=>(st(r,typeof t!="symbol"?t+"":t,o),o);class V extends f{constructor(r){super(r),mt(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=r.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${G.default.inverse(G.default.hidden("_"))}`;else{let t=this.value.slice(0,this.cursor),o=this.value.slice(this.cursor);this.valueWithCursor=`${t}${G.default.inverse(o[0])}${o.slice(1)}`}})}get cursor(){return this._cursor}}var at=globalThis.process.platform.startsWith("win");function Ie({input:r=be,output:t=xe,overwrite:o=!0,hideCursor:i=!0}={}){let n=N.createInterface({input:r,output:t,prompt:"",tabSize:1});N.emitKeypressEvents(r,n),r.isTTY&&r.setRawMode(!0);let s=(e,{name:c})=>{if(String(e)==="\x03"){i&&t.write(w.cursor.show),process.exit(0);return}if(!o)return;N.moveCursor(t,c==="return"?0:-1,c==="return"?-1:0,()=>{N.clearLine(t,1,()=>{r.once("keypress",s)})})};return i&&t.write(w.cursor.hide),r.once("keypress",s),()=>{r.off("keypress",s),i&&t.write(w.cursor.show),r.isTTY&&!at&&r.setRawMode(!1),n.terminal=!1,n.close()}}var m=j(H(),1),T=j(q(),1);import I from"node:process";function ct(){return I.platform!=="win32"?I.env.TERM!=="linux":!!I.env.CI||!!I.env.WT_SESSION||!!I.env.TERMINUS_SUBLIME||I.env.ConEmuTask==="{cmd::Cmder}"||I.env.TERM_PROGRAM==="Terminus-Sublime"||I.env.TERM_PROGRAM==="vscode"||I.env.TERM==="xterm-256color"||I.env.TERM==="alacritty"||I.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var K=ct(),v=(r,t)=>K?r:t,pt=v("◆","*"),Ne=v("■","x"),ge=v("▲","x"),Ae=v("◇","o"),lt=v("┌","T"),E=v("│","|"),g=v("└","—"),dt=v("●",">"),bt=v("○"," "),xt=v("◻","[•]"),_e=v("◼","[+]"),Et=v("◻","[ ]"),kt=v("▪","•"),ft=v("─","-"),Bt=v("╮","+"),zt=v("├","+"),qt=v("╯","+"),Ut=v("●","•"),Ht=v("◆","*"),$t=v("▲","!"),Wt=v("■","x"),X=(r)=>{switch(r){case"initial":case"active":return m.default.cyan(pt);case"cancel":return m.default.red(Ne);case"error":return m.default.yellow(ge);case"submit":return m.default.green(Ae)}},Y=(r)=>{let{cursor:t,options:o,style:i}=r,n=r.maxItems??1/0,s=Math.max(process.stdout.rows-4,0),e=Math.min(s,Math.max(n,5)),c=0;t>=c+e-3?c=Math.max(Math.min(t-e+3,o.length-e),0):t<c+2&&(c=Math.max(t-2,0));let d=e<o.length&&c>0,l=e<o.length&&c+e<o.length;return o.slice(c,c+e).map((u,x,S)=>{let h=x===0&&d,R=x===S.length-1&&l;return h||R?m.default.dim("..."):i(u,x+c===t)})},Te=(r)=>new V({validate:r.validate,placeholder:r.placeholder,defaultValue:r.defaultValue,initialValue:r.initialValue,render(){let t=`${m.default.gray(E)}
15
+ `)),this._prevFrame=r;return}this.output.write(w.erase.down())}this.output.write(r),this.state==="initial"&&(this.state="active"),this._prevFrame=r}}}var nt=Object.defineProperty,it=(r,t,o)=>(t in r)?nt(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,le=(r,t,o)=>(it(r,typeof t!="symbol"?t+"":t,o),o),ye=class extends f{constructor(r){super(r,!1),le(this,"options"),le(this,"cursor",0),this.options=r.options,this.value=[...r.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:t})=>t===r.cursorAt),0),this.on("key",(t)=>{t==="a"&&this.toggleAll()}),this.on("cursor",(t)=>{switch(t){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let r=this.value.length===this.options.length;this.value=r?[]:this.options.map((t)=>t.value)}toggleValue(){let r=this.value.includes(this._value);this.value=r?this.value.filter((t)=>t!==this._value):[...this.value,this._value]}};var st=Object.defineProperty,mt=(r,t,o)=>(t in r)?st(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,de=(r,t,o)=>(mt(r,typeof t!="symbol"?t+"":t,o),o),Re=class extends f{constructor(r){super(r,!1),de(this,"options"),de(this,"cursor",0),this.options=r.options,this.cursor=this.options.findIndex(({value:t})=>t===r.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(t)=>{switch(t){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var at=Object.defineProperty,ct=(r,t,o)=>(t in r)?at(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,pt=(r,t,o)=>(ct(r,typeof t!="symbol"?t+"":t,o),o);class V extends f{constructor(r){super(r),pt(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=r.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${G.default.inverse(G.default.hidden("_"))}`;else{let t=this.value.slice(0,this.cursor),o=this.value.slice(this.cursor);this.valueWithCursor=`${t}${G.default.inverse(o[0])}${o.slice(1)}`}})}get cursor(){return this._cursor}}var lt=globalThis.process.platform.startsWith("win");function Ie({input:r=be,output:t=xe,overwrite:o=!0,hideCursor:i=!0}={}){let n=N.createInterface({input:r,output:t,prompt:"",tabSize:1});N.emitKeypressEvents(r,n),r.isTTY&&r.setRawMode(!0);let s=(e,{name:a})=>{if(String(e)==="\x03"){i&&t.write(w.cursor.show),process.exit(0);return}if(!o)return;N.moveCursor(t,a==="return"?0:-1,a==="return"?-1:0,()=>{N.clearLine(t,1,()=>{r.once("keypress",s)})})};return i&&t.write(w.cursor.hide),r.once("keypress",s),()=>{r.off("keypress",s),i&&t.write(w.cursor.show),r.isTTY&&!lt&&r.setRawMode(!1),n.terminal=!1,n.close()}}var m=j(H(),1),T=j(q(),1);import I from"node:process";function dt(){return I.platform!=="win32"?I.env.TERM!=="linux":!!I.env.CI||!!I.env.WT_SESSION||!!I.env.TERMINUS_SUBLIME||I.env.ConEmuTask==="{cmd::Cmder}"||I.env.TERM_PROGRAM==="Terminus-Sublime"||I.env.TERM_PROGRAM==="vscode"||I.env.TERM==="xterm-256color"||I.env.TERM==="alacritty"||I.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var K=dt(),v=(r,t)=>K?r:t,bt=v("◆","*"),Ne=v("■","x"),ge=v("▲","x"),Ae=v("◇","o"),xt=v("┌","T"),E=v("│","|"),g=v("└","—"),Et=v("●",">"),ut=v("○"," "),vt=v("◻","[•]"),_e=v("◼","[+]"),ht=v("◻","[ ]"),zt=v("▪","•"),qt=v("─","-"),Ut=v("╮","+"),Ht=v("├","+"),$t=v("╯","+"),Wt=v("●","•"),Jt=v("◆","*"),Zt=v("▲","!"),Vt=v("■","x"),X=(r)=>{switch(r){case"initial":case"active":return m.default.cyan(bt);case"cancel":return m.default.red(Ne);case"error":return m.default.yellow(ge);case"submit":return m.default.green(Ae)}},Y=(r)=>{let{cursor:t,options:o,style:i}=r,n=r.maxItems??1/0,s=Math.max(process.stdout.rows-4,0),e=Math.min(s,Math.max(n,5)),a=0;t>=a+e-3?a=Math.max(Math.min(t-e+3,o.length-e),0):t<a+2&&(a=Math.max(t-2,0));let d=e<o.length&&a>0,l=e<o.length&&a+e<o.length;return o.slice(a,a+e).map((u,x,S)=>{let h=x===0&&d,R=x===S.length-1&&l;return h||R?m.default.dim("..."):i(u,x+a===t)})},Te=(r)=>new V({validate:r.validate,placeholder:r.placeholder,defaultValue:r.defaultValue,initialValue:r.initialValue,render(){let t=`${m.default.gray(E)}
16
16
  ${X(this.state)} ${r.message}
17
17
  `,o=r.placeholder?m.default.inverse(r.placeholder[0])+m.default.dim(r.placeholder.slice(1)):m.default.inverse(m.default.hidden("_")),i=this.value?this.valueWithCursor:o;switch(this.state){case"error":return`${t.trim()}
18
18
  ${m.default.yellow(E)} ${i}
@@ -20,13 +20,13 @@ ${m.default.yellow(g)} ${m.default.yellow(this.error)}
20
20
  `;case"submit":return`${t}${m.default.gray(E)} ${m.default.dim(this.value||r.placeholder)}`;case"cancel":return`${t}${m.default.gray(E)} ${m.default.strikethrough(m.default.dim(this.value??""))}${this.value?.trim()?`
21
21
  `+m.default.gray(E):""}`;default:return`${t}${m.default.cyan(E)} ${i}
22
22
  ${m.default.cyan(g)}
23
- `}}}).prompt();var _=(r)=>{let t=(o,i)=>{let n=o.label??String(o.value);switch(i){case"selected":return`${m.default.dim(n)}`;case"active":return`${m.default.green(dt)} ${n} ${o.hint?m.default.dim(`(${o.hint})`):""}`;case"cancelled":return`${m.default.strikethrough(m.default.dim(n))}`;default:return`${m.default.dim(bt)} ${m.default.dim(n)}`}};return new Re({options:r.options,initialValue:r.initialValue,render(){let o=`${m.default.gray(E)}
23
+ `}}}).prompt();var _=(r)=>{let t=(o,i)=>{let n=o.label??String(o.value);switch(i){case"selected":return`${m.default.dim(n)}`;case"active":return`${m.default.green(Et)} ${n} ${o.hint?m.default.dim(`(${o.hint})`):""}`;case"cancelled":return`${m.default.strikethrough(m.default.dim(n))}`;default:return`${m.default.dim(ut)} ${m.default.dim(n)}`}};return new Re({options:r.options,initialValue:r.initialValue,render(){let o=`${m.default.gray(E)}
24
24
  ${X(this.state)} ${r.message}
25
25
  `;switch(this.state){case"submit":return`${o}${m.default.gray(E)} ${t(this.options[this.cursor],"selected")}`;case"cancel":return`${o}${m.default.gray(E)} ${t(this.options[this.cursor],"cancelled")}
26
26
  ${m.default.gray(E)}`;default:return`${o}${m.default.cyan(E)} ${Y({cursor:this.cursor,options:this.options,maxItems:r.maxItems,style:(i,n)=>t(i,n?"active":"inactive")}).join(`
27
27
  ${m.default.cyan(E)} `)}
28
28
  ${m.default.cyan(g)}
29
- `}}}).prompt()};var Oe=(r)=>{let t=(o,i)=>{let n=o.label??String(o.value);return i==="active"?`${m.default.cyan(xt)} ${n} ${o.hint?m.default.dim(`(${o.hint})`):""}`:i==="selected"?`${m.default.green(_e)} ${m.default.dim(n)}`:i==="cancelled"?`${m.default.strikethrough(m.default.dim(n))}`:i==="active-selected"?`${m.default.green(_e)} ${n} ${o.hint?m.default.dim(`(${o.hint})`):""}`:i==="submitted"?`${m.default.dim(n)}`:`${m.default.dim(Et)} ${m.default.dim(n)}`};return new ye({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(o){if(this.required&&o.length===0)return`Please select at least one option.
29
+ `}}}).prompt()};var Oe=(r)=>{let t=(o,i)=>{let n=o.label??String(o.value);return i==="active"?`${m.default.cyan(vt)} ${n} ${o.hint?m.default.dim(`(${o.hint})`):""}`:i==="selected"?`${m.default.green(_e)} ${m.default.dim(n)}`:i==="cancelled"?`${m.default.strikethrough(m.default.dim(n))}`:i==="active-selected"?`${m.default.green(_e)} ${n} ${o.hint?m.default.dim(`(${o.hint})`):""}`:i==="submitted"?`${m.default.dim(n)}`:`${m.default.dim(ht)} ${m.default.dim(n)}`};return new ye({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(o){if(this.required&&o.length===0)return`Please select at least one option.
30
30
  ${m.default.reset(m.default.dim(`Press ${m.default.gray(m.default.bgWhite(m.default.inverse(" space ")))} to select, ${m.default.gray(m.default.bgWhite(m.default.inverse(" enter ")))} to submit`))}`},render(){let o=`${m.default.gray(E)}
31
31
  ${X(this.state)} ${r.message}
32
32
  `,i=(n,s)=>{let e=this.value.includes(n.value);return s&&e?t(n,"active-selected"):e?t(n,"selected"):t(n,s?"active":"inactive")};switch(this.state){case"submit":return`${o}${m.default.gray(E)} ${this.options.filter(({value:n})=>this.value.includes(n)).map((n)=>t(n,"submitted")).join(m.default.dim(", "))||m.default.dim("none")}`;case"cancel":{let n=this.options.filter(({value:s})=>this.value.includes(s)).map((s)=>t(s,"cancelled")).join(m.default.dim(", "));return`${o}${m.default.gray(E)} ${n.trim()?`${n}
@@ -40,13 +40,13 @@ ${m.default.cyan(E)} `)}
40
40
  ${m.default.cyan(g)}
41
41
  `}}}).prompt()};var B=(r="")=>{process.stdout.write(`${m.default.gray(g)} ${m.default.red(r)}
42
42
 
43
- `)},Ce=(r="")=>{process.stdout.write(`${m.default.gray(lt)} ${r}
43
+ `)},Ce=(r="")=>{process.stdout.write(`${m.default.gray(xt)} ${r}
44
44
  `)},je=(r="")=>{process.stdout.write(`${m.default.gray(E)}
45
45
  ${m.default.gray(g)} ${r}
46
46
 
47
- `)};var Le=()=>{let r=K?["◒","◐","◓","◑"]:["•","o","O","0"],t=K?80:120,o,i,n=!1,s="",e=(h)=>{let R=h>1?"Something went wrong":"Canceled";n&&S(R,h)},c=()=>e(2),d=()=>e(1),l=()=>{process.on("uncaughtExceptionMonitor",c),process.on("unhandledRejection",c),process.on("SIGINT",d),process.on("SIGTERM",d),process.on("exit",e)},u=()=>{process.removeListener("uncaughtExceptionMonitor",c),process.removeListener("unhandledRejection",c),process.removeListener("SIGINT",d),process.removeListener("SIGTERM",d),process.removeListener("exit",e)},x=(h="")=>{n=!0,o=Ie(),s=h.replace(/\.+$/,""),process.stdout.write(`${m.default.gray(E)}
47
+ `)};var Le=()=>{let r=K?["◒","◐","◓","◑"]:["•","o","O","0"],t=K?80:120,o,i,n=!1,s="",e=(h)=>{let R=h>1?"Something went wrong":"Canceled";n&&S(R,h)},a=()=>e(2),d=()=>e(1),l=()=>{process.on("uncaughtExceptionMonitor",a),process.on("unhandledRejection",a),process.on("SIGINT",d),process.on("SIGTERM",d),process.on("exit",e)},u=()=>{process.removeListener("uncaughtExceptionMonitor",a),process.removeListener("unhandledRejection",a),process.removeListener("SIGINT",d),process.removeListener("SIGTERM",d),process.removeListener("exit",e)},x=(h="")=>{n=!0,o=Ie(),s=h.replace(/\.+$/,""),process.stdout.write(`${m.default.gray(E)}
48
48
  `);let R=0,A=0;l(),i=setInterval(()=>{let _r=m.default.magenta(r[R]),Nr=".".repeat(Math.floor(A)).slice(0,3);process.stdout.write(T.cursor.move(-999,0)),process.stdout.write(T.erase.down(1)),process.stdout.write(`${_r} ${s}${Nr}`),R=R+1<r.length?R+1:0,A=A<r.length?A+0.125:0},t)},S=(h="",R=0)=>{s=h??s,n=!1,clearInterval(i);let A=R===0?m.default.green(Ae):R===1?m.default.red(Ne):m.default.red(ge);process.stdout.write(T.cursor.move(-999,0)),process.stdout.write(T.erase.down(1)),process.stdout.write(`${A} ${s}
49
- `),u(),o()};return{start:x,stop:S,message:(h="")=>{s=h??s}}};var Pe=async(r,t)=>{let o={},i=Object.keys(r);for(let n of i){let s=r[n],e=await s({results:o})?.catch((c)=>{throw c});if(typeof t?.onCancel=="function"&&C(e)){o[n]="canceled",t.onCancel({results:o});continue}o[n]=e}return o};async function Me(){let r=await Pe({caching:()=>_({message:"Select Caching strategy:",options:[{value:"none",label:"None"},{value:"memory",label:"In-memory (Local caching)"},{value:"redis",label:"Redis (Distributed caching)"}]}),logger:()=>_({message:"Select Logging strategy:",options:[{value:"none",label:"None"},{value:"console",label:"Console (Basic terminal logs)"},{value:"otel",label:"OpenTelemetry (Advanced logging + PostHog)"}]}),orm:()=>_({message:"Select a Database ORM:",options:[{value:"prisma",label:"Prisma (PostgreSQL + Typed schemas)"},{value:"drizzle",label:"Drizzle (PostgreSQL + Lightweight SQL)"},{value:"mongoose",label:"Mongoose (MongoDB)"},{value:"none",label:"None"}]}),auth:()=>_({message:"Select an Authentication provider:",options:[{value:"clerk",label:"Clerk (Hosted Auth)"},{value:"betterauth",label:"Better-Auth (Self-hosted)"},{value:"custom",label:"Custom JWT Middleware (Starter)"},{value:"none",label:"None"}]}),rateLimit:()=>_({message:"Select Rate Limiting strategy:",options:[{value:"none",label:"None"},{value:"basic",label:"Basic (Memory-based)"},{value:"redis",label:"Redis-based (Distributed)"}]}),inngest:()=>_({message:"Select Inngest support:",options:[{value:"none",label:"None"},{value:"basic",label:"Basic (Event-driven background functions)"}]}),email:()=>_({message:"Select an Email provider:",options:[{value:"resend",label:"Resend (Modern API)"},{value:"nodemailer",label:"Nodemailer (Traditional SMTP)"},{value:"none",label:"None"}]}),features:()=>Oe({message:"Extra features:",options:[{value:"pagination",label:"Pagination",hint:"Zod pagination helpers"}],required:!1}),formatter:()=>_({message:"Select a formatter/linter:",options:[{value:"biome",label:"Biome (Recommended: Fast formatter & linter)"},{value:"prettier",label:"Prettier + ESLint"},{value:"none",label:"None"}]})},{onCancel:()=>{B("Operation cancelled."),process.exit(0)}}),t=r.features;return{caching:r.caching,logger:r.logger,orm:r.orm,rateLimit:r.rateLimit,auth:r.auth,email:r.email,pagination:t.includes("pagination"),formatter:r.formatter,inngest:r.inngest}}import p from"fs/promises";import a from"path";import{exec as ut}from"child_process";import{promisify as vt}from"util";var Ge=`{
49
+ `),u(),o()};return{start:x,stop:S,message:(h="")=>{s=h??s}}};var Pe=async(r,t)=>{let o={},i=Object.keys(r);for(let n of i){let s=r[n],e=await s({results:o})?.catch((a)=>{throw a});if(typeof t?.onCancel=="function"&&C(e)){o[n]="canceled",t.onCancel({results:o});continue}o[n]=e}return o};async function Me(){let r=await Pe({caching:()=>_({message:"Select Caching strategy:",options:[{value:"none",label:"None"},{value:"memory",label:"In-memory (Local caching)"},{value:"redis",label:"Redis (Distributed caching)"}]}),logger:()=>_({message:"Select Logging strategy:",options:[{value:"none",label:"None"},{value:"console",label:"Console (Basic terminal logs)"},{value:"otel",label:"OpenTelemetry (Advanced logging + PostHog)"}]}),orm:()=>_({message:"Select a Database ORM:",options:[{value:"prisma",label:"Prisma (PostgreSQL + Typed schemas)"},{value:"drizzle",label:"Drizzle (PostgreSQL + Lightweight SQL)"},{value:"mongoose",label:"Mongoose (MongoDB)"},{value:"none",label:"None"}]}),auth:()=>_({message:"Select an Authentication provider:",options:[{value:"clerk",label:"Clerk (Hosted Auth)"},{value:"betterauth",label:"Better-Auth (Self-hosted)"},{value:"custom",label:"Custom JWT Middleware (Starter)"},{value:"none",label:"None"}]}),rateLimit:()=>_({message:"Select Rate Limiting strategy:",options:[{value:"none",label:"None"},{value:"basic",label:"Basic (Memory-based)"},{value:"redis",label:"Redis-based (Distributed)"}]}),inngest:()=>_({message:"Select Inngest support:",options:[{value:"none",label:"None"},{value:"basic",label:"Basic (Event-driven background functions)"}]}),email:()=>_({message:"Select an Email provider:",options:[{value:"resend",label:"Resend (Modern API)"},{value:"nodemailer",label:"Nodemailer (Traditional SMTP)"},{value:"none",label:"None"}]}),features:()=>Oe({message:"Extra features:",options:[{value:"pagination",label:"Pagination",hint:"Zod pagination helpers"}],required:!1}),formatter:()=>_({message:"Select a formatter/linter:",options:[{value:"biome",label:"Biome (Recommended: Fast formatter & linter)"},{value:"prettier",label:"Prettier + ESLint"},{value:"none",label:"None"}]})},{onCancel:()=>{B("Operation cancelled."),process.exit(0)}}),t=r.features;return{caching:r.caching,logger:r.logger,orm:r.orm,rateLimit:r.rateLimit,auth:r.auth,email:r.email,pagination:t.includes("pagination"),formatter:r.formatter,inngest:r.inngest}}import p from"fs/promises";import c from"path";import{exec as wt}from"child_process";import{promisify as St}from"util";var Ge=`{
50
50
  "compilerOptions": {
51
51
  "lib": ["ESNext"],
52
52
  "target": "ESNext",
@@ -1101,7 +1101,7 @@ ${r.caching==="redis"?" redis,":""}
1101
1101
  };
1102
1102
  },
1103
1103
  });
1104
- `}var So=vt(ut);async function Rr(r,t,o){let i=Le();i.start("Scaffolding your project...");let n=[r,a.join(r,"src"),a.join(r,"src","routes"),a.join(r,"src","base"),a.join(r,"src","config"),a.join(r,"src","middlewares"),a.join(r,"src","utils")];if(o.orm==="prisma")n.push(a.join(r,"prisma"));else if(o.orm==="drizzle")n.push(a.join(r,"src","db"));else if(o.orm==="mongoose")n.push(a.join(r,"src","models"));if(o.inngest!=="none")n.push(a.join(r,"src","inngest")),n.push(a.join(r,"src","inngest","functions"));for(let u of n)await p.mkdir(u,{recursive:!0});if(await p.writeFile(a.join(r,"package.json"),br(t,o)),await p.writeFile(a.join(r,"tsconfig.json"),Ge),await p.writeFile(a.join(r,".gitignore"),ke),await p.writeFile(a.join(r,".env"),xr(o,t)),o.formatter==="biome")await p.writeFile(a.join(r,"biome.json"),ze);else if(o.formatter==="prettier")await p.writeFile(a.join(r,".prettierrc"),qe),await p.writeFile(a.join(r,"eslint.config.js"),Ue);if(o.orm==="prisma")await p.writeFile(a.join(r,"prisma.config.ts"),Xe),await p.writeFile(a.join(r,"prisma","schema.prisma"),Ye);else if(o.orm==="drizzle")await p.writeFile(a.join(r,"drizzle.config.ts"),Fe);await p.writeFile(a.join(r,"src","app.ts"),ur(o)),await p.writeFile(a.join(r,"src","routes","health-route.ts"),yr(o));let s=a.join(r,"src"),e=a.join(s,"base"),c=a.join(s,"config"),d=a.join(s,"middlewares"),l=a.join(s,"utils");if(await p.writeFile(a.join(e,"index.ts"),Sr(o)),await p.writeFile(a.join(e,"define-route.ts"),hr(o)),await p.writeFile(a.join(e,"route-loader.ts"),Be),await p.writeFile(a.join(e,"route-registry.ts"),wr(o)),await p.writeFile(a.join(c,"env.ts"),Er(o,t)),await p.writeFile(a.join(l,"app-error.ts"),fe),await p.writeFile(a.join(l,"error-handler.ts"),vr(o)),o.caching!=="none"){if(o.caching==="redis")await p.writeFile(a.join(c,"redis.ts"),He),await p.writeFile(a.join(l,"cache.ts"),$e);else await p.writeFile(a.join(l,"cache.ts"),We);await p.writeFile(a.join(l,"cache-keys.ts"),Je)}if(o.logger!=="none"){if(o.logger==="otel")await p.writeFile(a.join(l,"logger.ts"),Ze);else await p.writeFile(a.join(l,"logger.ts"),Ve);await p.writeFile(a.join(d,"request-logger.ts"),Ke)}if(o.orm==="prisma")await p.writeFile(a.join(c,"prisma.ts"),Qe);else if(o.orm==="drizzle")await p.writeFile(a.join(c,"drizzle.ts"),De),await p.writeFile(a.join(r,"src","db","schema.ts"),er);else if(o.orm==="mongoose")await p.writeFile(a.join(c,"mongoose.ts"),rr),await p.writeFile(a.join(r,"src","models","user.model.ts"),tr);if(o.auth==="custom")await p.writeFile(a.join(d,"auth.ts"),or);else if(o.auth==="clerk")await p.writeFile(a.join(d,"auth.ts"),nr);else if(o.auth==="betterauth")await p.writeFile(a.join(d,"auth.ts"),ir);if(o.pagination)await p.writeFile(a.join(l,"pagination.ts"),ar);if(o.email==="resend")await p.writeFile(a.join(l,"email.ts"),sr);else if(o.email==="nodemailer")await p.writeFile(a.join(l,"email.ts"),mr);if(o.inngest!=="none"){let u=a.join(r,"src","inngest");await p.writeFile(a.join(u,"client.ts"),cr),await p.writeFile(a.join(u,"index.ts"),lr),await p.writeFile(a.join(u,"functions","hello-world.ts"),pr),await p.writeFile(a.join(r,"src","routes","inngest-route.ts"),dr)}return i.stop("Project generated successfully."),r}import wt from"path";var Ir={name:"@ahmadjavaiddev/aura",version:"1.0.0",type:"module",description:"Interactive CLI scaffolder to generate custom API structures",main:"./dist/index.js",bin:{aura:"dist/index.js"},files:["dist"],publishConfig:{access:"public"},scripts:{start:"bun run src/cli.ts",build:"bun build ./src/cli.ts --outfile ./dist/index.js --target node --bundle --minify",prepublishOnly:"bun run build"},dependencies:{"@clack/prompts":"^0.8.2"},devDependencies:{"@types/bun":"latest","@types/node":"^22.0.0",typescript:"^5.0.0"}};async function St(){let r=process.argv.slice(2);if(r.includes("--version")||r.includes("-v"))console.log(`v${Ir.version}`),process.exit(0);if(r.includes("--help")||r.includes("-h"))console.log(`
1104
+ `}var Io=St(wt);async function Rr(r,t,o){let i=Le();i.start("Scaffolding your project...");let n=[r,c.join(r,"src"),c.join(r,"src","routes"),c.join(r,"src","base"),c.join(r,"src","config"),c.join(r,"src","middlewares"),c.join(r,"src","utils")];if(o.orm==="prisma")n.push(c.join(r,"prisma"));else if(o.orm==="drizzle")n.push(c.join(r,"src","db"));else if(o.orm==="mongoose")n.push(c.join(r,"src","models"));if(o.inngest!=="none")n.push(c.join(r,"src","inngest")),n.push(c.join(r,"src","inngest","functions"));for(let u of n)await p.mkdir(u,{recursive:!0});if(await p.writeFile(c.join(r,"package.json"),br(t,o)),await p.writeFile(c.join(r,"tsconfig.json"),Ge),await p.writeFile(c.join(r,".gitignore"),ke),await p.writeFile(c.join(r,".env"),xr(o,t)),o.formatter==="biome")await p.writeFile(c.join(r,"biome.json"),ze);else if(o.formatter==="prettier")await p.writeFile(c.join(r,".prettierrc"),qe),await p.writeFile(c.join(r,"eslint.config.js"),Ue);if(o.orm==="prisma")await p.writeFile(c.join(r,"prisma.config.ts"),Xe),await p.writeFile(c.join(r,"prisma","schema.prisma"),Ye);else if(o.orm==="drizzle")await p.writeFile(c.join(r,"drizzle.config.ts"),Fe);await p.writeFile(c.join(r,"src","app.ts"),ur(o)),await p.writeFile(c.join(r,"src","routes","health-route.ts"),yr(o));let s=c.join(r,"src"),e=c.join(s,"base"),a=c.join(s,"config"),d=c.join(s,"middlewares"),l=c.join(s,"utils");if(await p.writeFile(c.join(e,"index.ts"),Sr(o)),await p.writeFile(c.join(e,"define-route.ts"),hr(o)),await p.writeFile(c.join(e,"route-loader.ts"),Be),await p.writeFile(c.join(e,"route-registry.ts"),wr(o)),await p.writeFile(c.join(a,"env.ts"),Er(o,t)),await p.writeFile(c.join(l,"app-error.ts"),fe),await p.writeFile(c.join(l,"error-handler.ts"),vr(o)),o.caching!=="none"){if(o.caching==="redis")await p.writeFile(c.join(a,"redis.ts"),He),await p.writeFile(c.join(l,"cache.ts"),$e);else await p.writeFile(c.join(l,"cache.ts"),We);await p.writeFile(c.join(l,"cache-keys.ts"),Je)}if(o.logger!=="none"){if(o.logger==="otel")await p.writeFile(c.join(l,"logger.ts"),Ze);else await p.writeFile(c.join(l,"logger.ts"),Ve);await p.writeFile(c.join(d,"request-logger.ts"),Ke)}if(o.orm==="prisma")await p.writeFile(c.join(a,"prisma.ts"),Qe);else if(o.orm==="drizzle")await p.writeFile(c.join(a,"drizzle.ts"),De),await p.writeFile(c.join(r,"src","db","schema.ts"),er);else if(o.orm==="mongoose")await p.writeFile(c.join(a,"mongoose.ts"),rr),await p.writeFile(c.join(r,"src","models","user.model.ts"),tr);if(o.auth==="custom")await p.writeFile(c.join(d,"auth.ts"),or);else if(o.auth==="clerk")await p.writeFile(c.join(d,"auth.ts"),nr);else if(o.auth==="betterauth")await p.writeFile(c.join(d,"auth.ts"),ir);if(o.pagination)await p.writeFile(c.join(l,"pagination.ts"),ar);if(o.email==="resend")await p.writeFile(c.join(l,"email.ts"),sr);else if(o.email==="nodemailer")await p.writeFile(c.join(l,"email.ts"),mr);if(o.inngest!=="none"){let u=c.join(r,"src","inngest");await p.writeFile(c.join(u,"client.ts"),cr),await p.writeFile(c.join(u,"index.ts"),lr),await p.writeFile(c.join(u,"functions","hello-world.ts"),pr),await p.writeFile(c.join(r,"src","routes","inngest-route.ts"),dr)}return i.stop("Project generated successfully."),r}import Rt from"path";var Ir={name:"@ahmadjavaiddev/aura",version:"1.0.2",type:"module",description:"Interactive CLI scaffolder to generate custom API structures",main:"./dist/index.js",bin:{aura:"dist/index.js"},files:["dist"],publishConfig:{access:"public"},scripts:{start:"bun run src/cli.ts",build:"bun build ./src/cli.ts --outfile ./dist/index.js --target node --bundle --minify",prepublishOnly:"bun run build"},dependencies:{"@clack/prompts":"^0.8.2"},devDependencies:{"@types/bun":"latest","@types/node":"^22.0.0",typescript:"^5.0.0"}};async function It(){let r=process.argv.slice(2);if(r.includes("--version")||r.includes("-v"))console.log(`v${Ir.version}`),process.exit(0);if(r.includes("--help")||r.includes("-h"))console.log(`
1105
1105
  Usage: aura [project-name]
1106
1106
 
1107
1107
  Options:
@@ -1109,9 +1109,9 @@ Options:
1109
1109
  -h, --help Show help information
1110
1110
 
1111
1111
  Examples:
1112
- npx @ahmadjavaid/aura my-new-app
1112
+ npx @ahmadjavaiddev/aura my-new-app
1113
1113
  aura .
1114
- `),process.exit(0);Ce("\uD83D\uDE80 Welcome to Aura!");let t=r[0];if(!t){let n=await Te({message:"What is your project named?",placeholder:"my-api",validate:(s)=>{if(!s)return"Please enter a path.";return}});if(C(n))B("Operation cancelled."),process.exit(0);t=n}let o=await Me(),i=wt.resolve(process.cwd(),t);await Rr(i,t,o),je(`✨ Project scaffolding complete!
1114
+ `),process.exit(0);Ce("\uD83D\uDE80 Welcome to Aura!");let t=r[0];if(!t){let n=await Te({message:"What is your project named?",placeholder:"my-api",validate:(s)=>{if(!s)return"Please enter a path.";return}});if(C(n))B("Operation cancelled."),process.exit(0);t=n}let o=await Me(),i=Rt.resolve(process.cwd(),t);await Rr(i,t,o),je(`✨ Project scaffolding complete!
1115
1115
 
1116
1116
  Next steps:
1117
1117
  cd ${t}
@@ -1120,4 +1120,4 @@ Next steps:
1120
1120
  ${o.orm!=="none"?`# Note: Make sure your ${o.orm} database is running`:""}
1121
1121
  bun update
1122
1122
  bun run dev
1123
- `)}St().catch(console.error);
1123
+ `)}It().catch(console.error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ahmadjavaiddev/aura",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "description": "Interactive CLI scaffolder to generate custom API structures",
6
6
  "main": "./dist/index.js",