system-tracker 0.0.0-stage → 3.0.12

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 (70) hide show
  1. package/README.md +1151 -2
  2. package/SKILL.md +376 -0
  3. package/dist/auto/capture.d.ts +9 -0
  4. package/dist/auto/capture.js +1 -0
  5. package/dist/auto/classify.d.ts +16 -0
  6. package/dist/auto/classify.js +1 -0
  7. package/dist/auto/http.d.ts +3 -0
  8. package/dist/auto/http.js +1 -0
  9. package/dist/auto/naming.d.ts +18 -0
  10. package/dist/auto/naming.js +1 -0
  11. package/dist/auto/outbound.d.ts +1 -0
  12. package/dist/auto/outbound.js +1 -0
  13. package/dist/auto/patch.d.ts +3 -0
  14. package/dist/auto/patch.js +1 -0
  15. package/dist/auto/record.d.ts +4 -0
  16. package/dist/auto/record.js +1 -0
  17. package/dist/auto/samples.d.ts +28 -0
  18. package/dist/auto/samples.js +1 -0
  19. package/dist/auto/sites.d.ts +7 -0
  20. package/dist/auto/sites.js +1 -0
  21. package/dist/auto/views.d.ts +3 -0
  22. package/dist/auto/views.js +1 -0
  23. package/dist/auto/ws.d.ts +1 -0
  24. package/dist/auto/ws.js +1 -0
  25. package/dist/buckets.d.ts +4 -0
  26. package/dist/buckets.js +1 -0
  27. package/dist/dashboard/announce.d.ts +5 -0
  28. package/dist/dashboard/announce.js +1 -0
  29. package/dist/dashboard/auth.d.ts +7 -0
  30. package/dist/dashboard/auth.js +1 -0
  31. package/dist/dashboard/boards.d.ts +22 -0
  32. package/dist/dashboard/boards.js +1 -0
  33. package/dist/dashboard/config.d.ts +49 -0
  34. package/dist/dashboard/config.js +1 -0
  35. package/dist/dashboard/data.d.ts +135 -0
  36. package/dist/dashboard/data.js +1 -0
  37. package/dist/dashboard/index.d.ts +2 -0
  38. package/dist/dashboard/index.js +1 -0
  39. package/dist/dashboard/insights.d.ts +98 -0
  40. package/dist/dashboard/insights.js +1 -0
  41. package/dist/dashboard/page-html.js +2 -0
  42. package/dist/dashboard/page.d.ts +1 -0
  43. package/dist/dashboard/page.js +1 -0
  44. package/dist/dashboard/periods.d.ts +36 -0
  45. package/dist/dashboard/periods.js +1 -0
  46. package/dist/dashboard/query.d.ts +45 -0
  47. package/dist/dashboard/query.js +1 -0
  48. package/dist/dashboard/report.d.ts +181 -0
  49. package/dist/dashboard/report.js +1 -0
  50. package/dist/dashboard/reset.d.ts +5 -0
  51. package/dist/dashboard/reset.js +1 -0
  52. package/dist/dashboard/storage.d.ts +37 -0
  53. package/dist/dashboard/storage.js +1 -0
  54. package/dist/index.d.ts +3 -0
  55. package/dist/index.js +1 -0
  56. package/dist/init.d.ts +5 -0
  57. package/dist/init.js +1 -0
  58. package/dist/logger.d.ts +2 -0
  59. package/dist/logger.js +1 -0
  60. package/dist/lua.d.ts +3 -0
  61. package/dist/lua.js +1 -0
  62. package/dist/redis.d.ts +11 -0
  63. package/dist/redis.js +1 -0
  64. package/dist/search.d.ts +1 -0
  65. package/dist/search.js +1 -0
  66. package/dist/state.d.ts +24 -0
  67. package/dist/state.js +1 -0
  68. package/dist/types.d.ts +107 -0
  69. package/dist/types.js +1 -0
  70. package/package.json +86 -4
package/SKILL.md ADDED
@@ -0,0 +1,376 @@
1
+ ---
2
+ name: system-tracker
3
+ description: Use this skill when integrating the `system-tracker` npm package into a codebase, a single project or a workspace with several. It inspects the projects, asks the user step by step in plain words what to track (website pages, API, GraphQL, JSON-RPC, WebSockets, outside calls and more) with a recommended answer for each, then sets up `statis.init(...)`, the page-view script and the dashboard.
4
+ ---
5
+
6
+ # system-tracker
7
+
8
+ Use this skill with the package docs at `https://www.npmjs.com/package/system-tracker`.
9
+
10
+ You are helping integrate the npm package `system-tracker` into a codebase.
11
+
12
+ ## What `system-tracker` is for
13
+
14
+ - It stores Redis-based request counters per second, minute, hour, day, month and year.
15
+ - One `statis.init(...)` call counts every request the app handles automatically: API calls, page views, GraphQL, JSON-RPC, WebSockets, Socket.IO events, SSE and gRPC. Static files and outgoing calls can be turned on.
16
+ - There is no manual tracking API. Work that never arrives as a request (cron jobs, queue workers, scripts, business events) is not counted. If the user needs that, tell them system-tracker only counts incoming requests and, with `OUT`, outgoing calls.
17
+
18
+ ## Package exports
19
+
20
+ - `statis` (only `statis.init(...)`)
21
+ - `searchKeys`
22
+ - `statRedis`
23
+
24
+ ## Important API facts
25
+
26
+ - Call `statis.init(...)` once, at the top of the entry file, before the server starts listening.
27
+ - Minimal call:
28
+
29
+ ```ts
30
+ import { statis } from "system-tracker";
31
+
32
+ statis.init({
33
+ redis: "redis://127.0.0.1:6379",
34
+ prefix: "qa-server",
35
+ });
36
+ ```
37
+
38
+ - `redis` and `prefix` are passed to `init` directly; the package reads no environment variables.
39
+ - `redis` accepts one of:
40
+ - a `redis://` or `rediss://` (TLS) URL string, such as `"redis://default:secret@host:6379"`
41
+ - `{ host, port, username?, password? }` (standalone)
42
+ - `{ nodes: [{ host, port }, ...], username?, password? }` (cluster)
43
+ - `{ client: existingIoredisClient, type: "standalone" | "cluster" }` (reuse an existing client)
44
+ - All options and defaults:
45
+
46
+ | Option | Default | What it does |
47
+ | --- | --- | --- |
48
+ | `redis` | required | Redis connection |
49
+ | `prefix` | required | First part of every key; not empty, no `:` |
50
+ | `timeConfig` | all buckets on; 1h / 1d / 1d / 30d / 180d / 10y | Buckets to keep and their `expiry_in_sec`, e.g. `{ sec: { enable: false }, day: { expiry_in_sec: 90 * 24 * 60 * 60 } }` |
51
+ | `ignore.paths` | `[]` | Paths to skip, e.g. `["/health", "/metrics"]`; `"/admin/*"` matches a subtree |
52
+ | `ignore.methods` | `["OPTIONS", "HEAD"]` | Methods to skip |
53
+ | `ignore.bots` | `false` | Skip crawlers by user agent |
54
+ | `track` | all on except `STATIC` and `OUT` | Turn types on or off: `API`, `WEB`, `GRAPHQL`, `RPC`, `WSS`, `SSE`, `GRPC`, `OTHER`, `STATIC`, `OUT` |
55
+ | `global.total` | `true` | `{prefix}:global` keys |
56
+ | `global.perType` | `true` | `{prefix}:{TYPE}:global` keys |
57
+ | `failures` | `false` | Extra `:5xx` key for responses with status 500 or higher |
58
+ | `types` | `[]` | Custom types by path, e.g. `{ path: "/webhooks/*", type: "HOOK" }` |
59
+ | `operations` | `[]` | Read an operation name from the body, e.g. `{ path: "/action", type: "ACT", read: (body) => body.action }` |
60
+ | `limits.maxNamesPerType` | `200` | Names beyond this are counted as `<other>` |
61
+ | `limits.collapseAfter` | `50` | A URL part with more distinct values becomes `<slug>` |
62
+ | `name` | — | `(req) => ({ type, action, name })` to name any request yourself |
63
+ | `enabled` | `true` | `false` turns tracking off (e.g. in tests) |
64
+ | `ownDomains` | `[]` | Domains of the app's own backend, e.g. `["example.com"]`. Outgoing calls to them (and to local/private hosts, and to the domain the app is reached on) show as "your backend" instead of "third-party" in the dashboard |
65
+ | `dashboard` | off | `{ enable: true, url?: "/system-tracker", username?, password? }` serves a built-in dashboard from the app's own server; the app's log prints its full URL at startup |
66
+
67
+ - Single-page apps (React, Angular, Vue, Next.js): the server sees only the first page load. To count page changes, add `<script src="/system-tracker/view.js" defer></script>` to the app's HTML (Next.js: `next/script` in `app/layout.tsx` or `pages/_app.tsx`; Angular: `src/index.html`; Vite/CRA: `index.html`; Nuxt: `app.head.script` in `nuxt.config.ts`; SvelteKit: `src/app.html`; Remix/React Router: `app/root.tsx`; anything else: the HTML every page shares). It posts each new path to `/system-tracker/view`, counted as `WEB`. When the pages come from another origin, use the API server's full URL and add `data-count-first`. Next.js navigation data requests (`RSC: 1`, `/_next/data/`) aren't counted. Server-rendered sites where every link is a full page load don't need the script. If the app's Content Security Policy uses a nonce, pass the same nonce to the tag (Next.js: `nonce={nonce}` on `<Script>`), or the browser blocks it.
68
+
69
+ - Key layout:
70
+ - `{prefix}:{TYPE}:{ACTION}:{name}:{bucket}:{bucket_id}`
71
+ - `{prefix}:{TYPE}:{ACTION}:{name}:5xx:{bucket}:{bucket_id}` (only with `failures: true`)
72
+ - `{prefix}:global:{bucket}:{bucket_id}` (all requests; WebSocket messages, Socket.IO events and outgoing calls are not included)
73
+ - `{prefix}:{TYPE}:global:{bucket}:{bucket_id}`
74
+ - `name` is the route without the leading `/`. Numbers, UUIDs, ObjectIds, long hex strings, `0x` addresses and long tokens become `<id>`. Express routes use their own param names (`/users/:userId` → `users/<userId>`).
75
+ - Bucket ids are in IST (UTC+5:30).
76
+ - Types:
77
+
78
+ | TYPE | ACTION | Example key |
79
+ | --- | --- | --- |
80
+ | `API` | HTTP method | `qa-server:API:GET:api/users/<id>:min:2026-10-29-23-35` |
81
+ | `WEB` | HTTP method | `qa-server:WEB:GET:products/<id>:min:…` |
82
+ | `GRAPHQL` | `QUERY` / `MUTATION` / `SUBSCRIPTION` | `qa-server:GRAPHQL:QUERY:GetUser:min:…` |
83
+ | `RPC` | `CALL` / `NOTIFY` | `qa-server:RPC:CALL:eth_getBalance:min:…` |
84
+ | `WSS` | `CONNECT` / `MESSAGE` / `EVENT` | `qa-server:WSS:CONNECT:ws/chat:min:…` |
85
+ | `SSE` | HTTP method | `qa-server:SSE:GET:events/prices:min:…` |
86
+ | `GRPC` | `CALL` | `qa-server:GRPC:CALL:user.UserService/GetUser:min:…` |
87
+ | `OTHER` | HTTP method | `qa-server:OTHER:GET:<unmatched>:min:…` |
88
+ | `STATIC` (off) | HTTP method | `qa-server:STATIC:GET:assets/<file>:min:…` |
89
+ | `OUT` (off) | HTTP method | `qa-server:OUT:GET:rpc-testnet.supra.com/rpc/v1/block:min:…` |
90
+
91
+ - GraphQL and JSON-RPC are recognised from the JSON body on every framework: `req.body` when a body parser set it, otherwise the body as the app read it (up to 64 KB). GraphQL also via `GET ?query=`, `application/graphql` bodies and batches. See [Make every kind of traffic count](#make-every-kind-of-traffic-count) for what still isn't recognised.
92
+ - With the dashboard on, each route's page shows its recent requests as curl (the exact sample by default, or the structure) and its recent failures with the error response and, in Express, the stack. Outgoing calls (`OUT`) get the same, bodies included. Every screen has an Export button (CSV, PDF, JSON). No code is needed for this.
93
+ - Where to call `statis.init(...)`:
94
+ - Express, Fastify, Koa, plain Node: top of `server.ts` / `index.js`
95
+ - NestJS: `main.ts`, before `NestFactory.create()`
96
+ - Next.js: `instrumentation.ts`, inside `register()`, guarded by `if (process.env.NEXT_RUNTIME === "nodejs")` and loading the package with `await import("system-tracker")`
97
+ - Nuxt: `server/plugins/system-tracker.ts` inside `defineNitroPlugin(() => { ... })`
98
+ - SvelteKit (`adapter-node`): top of `src/hooks.server.ts`
99
+ - Remix / React Router: top of `app/entry.server.tsx`
100
+ - Astro (`@astrojs/node`): top of `src/middleware.ts`
101
+ - React, Vue, Angular, Svelte SPAs (Vite, CRA, Angular CLI): in the API server they call, not in the app; the page-view script then uses the API server's full URL with `data-count-first` when the pages are served from elsewhere
102
+ - For every framework whose pages change without a reload, also add the page-view script (see the single-page apps bullet above) in the same change, so the setup is complete.
103
+ - `prefix` is the environment the app runs in, read from the environment variable the project already uses: `prefix: process.env.APP_ENV ?? "development"` gives keys like `production:API:GET:…`, `staging:API:GET:…`, so local, staging and production counts never mix in a shared Redis (see [Config values](#config-values)). Never put per-request values such as `userId`, `walletAddress`, `tenantId` or `sessionId` inside it, and never `:`.
104
+ - Use the same `prefix` in every service that should share one `global` total.
105
+
106
+ ### Reading counts
107
+
108
+ - The dashboard shows the counts, so don't add a stats endpoint or helper unless the user asks for one. If they do, use these:
109
+ - `searchKeys(pattern)` returns matching keys across standalone or cluster nodes.
110
+ - `statRedis` proxies the active Redis client for commands like `get`, `ttl`, `del`.
111
+
112
+ ```ts
113
+ const keys = await searchKeys("qa-server:API:*:day:2026-10-29");
114
+ const counts = await Promise.all(
115
+ keys.map(async (key) => ({ key, value: Number((await statRedis.get(key)) || 0) })),
116
+ );
117
+ ```
118
+
119
+ ## Workflow
120
+
121
+ 1. Inspect the codebase first. Do not edit code yet.
122
+ 2. Report what you found (see [First response format](#first-response-format)).
123
+ 3. Ask the steps below one at a time, in plain words, each with a recommended answer.
124
+ 4. Only after the final confirmation, change the code.
125
+
126
+ If you have no code access, ask for the root `package.json`, the startup/entry files, the Redis setup and the route files, then continue the same way.
127
+
128
+ ## How to ask
129
+
130
+ - Ask in plain words first, the technical name second: "People opening pages of your website (`WEB`)", not "`track.WEB`?".
131
+ - If your tool has an interactive question picker (for example `AskUserQuestion` in Claude Code), use it: one question per step, short option labels, and a one-line description per option. Use multi-select for "what to track" questions. Otherwise, write the options as a numbered list and say how to reply (`1,3,4`, `yes`/`no`, or the option name).
132
+ - Mark the option you recommend with `(Recommended)` and put it first. Base it on what you found in the code, and say why in a few words (for example "found `ws` server in `src/socket.ts`").
133
+ - Ask only one step at a time and wait for the answer. If the answer is partial, confirm what's decided and ask only the missing part.
134
+ - Skip steps that don't apply (no frontend → no page-view step; no Redis question when the project's client is reused and its mode is clear). Say in one line that you skipped it and why.
135
+ - Never assume standalone vs cluster, which paths to ignore, or which optional types to turn on. Ask.
136
+
137
+ ## What to inspect
138
+
139
+ ### The workspace
140
+
141
+ - Is the root one project, or several? Look for a root `package.json` with `workspaces`, `pnpm-workspace.yaml`, `turbo.json`, `nx.json`, `lerna.json`, and folders such as `apps/*`, `packages/*`, `services/*`, `frontend/`, `backend/`, `client/`, `server/`, or several sibling folders with their own `package.json`.
142
+ - For each project, note its name and path, its framework, and its role:
143
+ - **Server**: receives requests (Express, NestJS, Fastify, Koa, plain Node, a gRPC or WebSocket server). Needs `statis.init`.
144
+ - **Full-stack**: serves pages and handles requests itself (Next.js, Nuxt, SvelteKit, Remix, React Router, Astro on Node). Needs `statis.init` and, when pages change without a reload, the page-view script.
145
+ - **Frontend only**: built into static files (React, Vue, Svelte with Vite or Create React App, Angular CLI). Can't run `statis.init`; only the page-view script, pointing at the server it calls.
146
+ - **Library or tooling**: shared packages, scripts, configs. Nothing to set up.
147
+ - Note which frontend calls which server (base URLs, proxies in `vite.config`, `angular.json`, `next.config`, env files).
148
+
149
+ ### Each project
150
+
151
+ - Redis in the project: is there an `ioredis` client (reuse it), a `redis` (node-redis) or other client (its client can't be passed in; reuse its URL or host/port instead), a DI container or shared service module, a Redis URL in the config, or a `redis` service in `docker-compose.yml`. Standalone or cluster.
152
+ - Redis on this machine (when you can run commands), so the setup can be tried right away: `redis-cli ping` answers `PONG`, `docker ps` lists a running Redis container, or port 6379 is open on `127.0.0.1`. Only read; don't start or change anything without asking.
153
+ - The package manager, from the lockfile (`package-lock.json` → npm, `yarn.lock` → yarn, `pnpm-lock.yaml` → pnpm, `bun.lockb` → bun), to install `system-tracker` with. It brings its own Redis client (`ioredis`); nothing else needs installing.
154
+ - The environment variable the project uses to tell environments apart: `APP_ENV`, `ENVIRONMENT`, `STAGE`, `DEPLOY_ENV`, `VERCEL_ENV`, `RAILWAY_ENVIRONMENT`, or only `NODE_ENV`. Note its values (`development`, `staging`, `production`).
155
+ - Env files (`.env`, `.env.local`, `.env.development`, `.env.example`), whether they're in `.gitignore`, how they're loaded (`dotenv`, `@nestjs/config`, framework built-in), and any config schema (`zod`, `joi`, `envalid`, a typed `config.ts`) that new variables must be added to.
156
+ - Entry file and the best place for `statis.init(...)` (see "Where to call `statis.init(...)`" above).
157
+ - Traffic it handles, with the file that shows it:
158
+ - pages rendered by the server, and whether pages change without a reload (client-side routing)
159
+ - REST/JSON API routes
160
+ - GraphQL (`apollo-server`, `graphql-yoga`, `mercurius`, a `/graphql` route)
161
+ - JSON-RPC (`"jsonrpc": "2.0"` bodies, `/rpc` routes, `json-rpc-2.0`, `jayson`)
162
+ - WebSockets or Socket.IO (`ws`, `socket.io`)
163
+ - server-sent events (`text/event-stream`)
164
+ - gRPC (`@grpc/grpc-js`)
165
+ - calls the app makes to other services (`fetch`, `axios`, `http.request`, RPC providers, payment or email APIs)
166
+ - static files served by the app
167
+ - Every route the app defines (router files, controllers, `app/api/**/route.ts`, `pages/api/**`, GraphQL resolvers, RPC method tables, socket event handlers), so you can predict the key each one gets. See [Make every kind of traffic count](#make-every-kind-of-traffic-count).
168
+ - Noisy paths: health checks, metrics, readiness probes, admin tools.
169
+ - Route groups that deserve their own `types` (webhooks, admin) and single-URL endpoints whose operation name is in a custom body field (`operations`).
170
+ - A Content Security Policy, and whether it uses a nonce (Next.js middleware setting `x-nonce`, `helmet` with nonces).
171
+ - Work that never arrives as a request (cron, queue workers, scripts). It won't be counted; say so.
172
+
173
+ ## Make every kind of traffic count
174
+
175
+ Don't assume a kind of traffic is counted because the library is installed. For each one found, check the condition below against the code; when it doesn't hold, apply the fix in the same change, then verify it.
176
+
177
+ | Traffic | Counted when | If not, the fix |
178
+ | --- | --- | --- |
179
+ | GraphQL | the operation arrives as JSON `{ "query": "…" }` (POST, read by the app), `GET ?query=`, or `application/graphql` | Persisted queries that send only a hash (`extensions.persistedQuery`, no `query`): `operations: [{ path: "/graphql", type: "GRAPHQL", read: (b) => b.operationName }]`. Unnamed operations count as `<anonymous>`: name them in the client, or read a name the same way. |
180
+ | GraphQL subscriptions | over WebSockets (`graphql-ws`, `subscriptions-transport-ws`) they're counted as `WSS` connections and messages on the socket's path, not per operation | Say so; nothing to change. |
181
+ | Next.js Server Actions | a `POST` with a `Next-Action` header; counted as `RPC` `ACTION`, named by the page | Nothing to change. |
182
+ | tRPC | the path ends in `/trpc/{procedure}` (e.g. `/api/trpc/user.byId`); `RPC` `QUERY` / `MUTATION` / `SUBSCRIPTION` | Nothing to change. |
183
+ | gRPC-Web, Connect | `POST /package.Service/Method` with a gRPC-Web, gRPC or Connect content type; counted as `GRPC` | Nothing to change. |
184
+ | JSON-RPC | the body has `"jsonrpc": "2.0"` and a `method` | RPC-style bodies without `jsonrpc` (`{ "action": "swap" }`, `{ "op": … }`): `operations: [{ path: "/action", type: "RPC", read: (b) => b.action }]`. |
185
+ | WebSockets | the socket server runs on a Node `http`/`https` server in the same process (`ws`, `socket.io`, `new WebSocketServer({ port })` all do) | Messages and Socket.IO events are counted only when `ws` / `socket.io` resolve from the folder the app starts in (its `node_modules`). In a monorepo started from the root, check this. `uWebSockets.js`, `Bun.serve` and `Deno.serve` aren't Node servers and can't be counted; say so. |
186
+ | Server-sent events | the response sets `Content-Type: text/event-stream` | Set that header on the stream (SSE needs it anyway). |
187
+ | gRPC | `@grpc/grpc-js` serves in the same process | A proxy or separate binary isn't counted; say so. |
188
+ | Outgoing calls | made with `http`, `https`, `fetch`, `undici` or a client built on them (axios, got, node-fetch), and `track: { OUT: true }` | Turn `OUT` on if the user chose it. When the app calls its own backend on a domain other than the one it's served on (or the dashboard is opened before any request, e.g. in local development against a remote API), add that domain to `ownDomains`. |
189
+ | Pages changed in the browser | the page-view script is in the shared layout | Add it (Step-6). |
190
+
191
+ Then make sure nothing important ends up under a catch-all name. Go through the routes you listed and predict each key; fix every one that would land in:
192
+
193
+ - `OTHER:…:<unmatched>`: on frameworks other than Express, any 404 is `OTHER`, including a real route answering "not found" (`GET /api/users/999`). Keep those under their route with a `types` entry that reuses the built-in type, for example `types: [{ path: "/api/*", type: "API" }]`.
194
+ - `<unknown>`: an `operations` `read` that returns nothing for some requests. Read the field those requests do send, or fall back to another one.
195
+ - `<anonymous>`: GraphQL operations without a name (see the table).
196
+ - `<other>`: more names in a type than `limits.maxNamesPerType` (200). If the app really has more routes, raise it to fit, with room to grow.
197
+ - `<slug>`: a URL part with more than `limits.collapseAfter` (50) values. Fine for slugs and usernames; if a real fixed route family collapses, raise it.
198
+ - A route family that deserves its own name (webhooks, admin, a proxy under one path): give it a `types` entry.
199
+
200
+ With the dashboard on, requests under `<unmatched>`, `<other>`, `<unknown>` and `<anonymous>` keep their last 20 curls on the route's page. Mention it, so the user can find what's still unnamed later.
201
+
202
+ ### Verify
203
+
204
+ When you can run the app and Redis is reachable, prove each fix with a real request, then look for the key:
205
+
206
+ ```bash
207
+ curl -s -X POST localhost:3000/graphql -H 'content-type: application/json' -d '{"query":"query GetUser { user { id } }"}'
208
+ redis-cli --scan --pattern '<prefix>:GRAPHQL:*' # expect <prefix>:GRAPHQL:QUERY:GetUser:…
209
+ ```
210
+
211
+ Do the same for JSON-RPC (`<prefix>:RPC:*`), a WebSocket connection and message (`<prefix>:WSS:*`), and a 404 from a real route. Report what you checked and what you couldn't.
212
+
213
+ ## First response format
214
+
215
+ Start with `I inspected the codebase.` Then:
216
+
217
+ - `Workspace:` single project, or a table of the projects found:
218
+
219
+ | Project | Path | Framework | Role | Can track |
220
+ | --- | --- | --- | --- | --- |
221
+ | api | `apps/api` | Express | Server | API, JSON-RPC, WebSockets, outside calls |
222
+ | web | `apps/web` | Next.js | Full-stack | pages, page changes, API |
223
+ | admin | `apps/admin` | React (Vite) | Frontend only | page changes (via `api`) |
224
+
225
+ - `Found:` for each project to set up: Redis (yes/no, where), entry file, each kind of traffic with the file that shows it, noisy paths, possible custom `types`/`operations`, CSP nonce, work that won't be counted, env files and the environment variable, and whether Redis runs on this machine.
226
+ - `Best path:` where `statis.init(...)` and the page-view script go, reuse Redis or add it, and the options you recommend.
227
+ - `Steps:` list the steps that apply, then say: `Let's go step by step. I'll ask the first question now.` and ask only the first one.
228
+
229
+ ## Steps
230
+
231
+ Ask only the steps that apply, in this order. In a workspace with several projects, Step-0 comes first, and Steps 4 to 11 are asked per chosen project (name the project in each question). Step-3 decides whether Steps 4 to 11 are asked at all.
232
+
233
+ - `Step-0` Which projects (only when the root has several)
234
+ - Multi-select of the projects that can be tracked, with their role.
235
+ - Recommend every Server and Full-stack project that handles real traffic. A Frontend-only project is set up together with the server it calls.
236
+ - `Step-1` Redis connection
237
+ - An `ioredis` client found: `Reuse the Redis connection in <file> (Recommended)`: no new connection, no new config. / `Use a separate connection`.
238
+ - Another client or only a URL found: `Use the project's Redis settings from <file/variable> (Recommended)`. system-tracker opens its own connection with them.
239
+ - No Redis in the project, but one runs on this machine: `Use the Redis running locally at redis://127.0.0.1:6379 (Recommended)`: adds `REDIS_URL` to the local env file, so tracking works right away; set the real URL for staging and production on the hosting. / `I'll give a Redis URL` / `Stop here`.
240
+ - No Redis anywhere: `Add Redis to this project (Recommended)`: adds `REDIS_URL` to the env files; offer to start one locally with Docker (`docker run -d --name redis -p 6379:6379 redis:7`) and run it only if the user says yes. / `Stop here`.
241
+ - In every case: `system-tracker` is installed with the project's package manager, and it brings its own Redis client.
242
+ - `Step-2` Redis mode (only for a new connection, or when the existing mode is unclear): `Standalone` / `Cluster`. Recommend the one the project's hosting or config points to; if nothing does, recommend `Standalone` and say why.
243
+ - `Step-3` How to set up the rest. This keeps the setup fast.
244
+ - First show the recommended settings in a short list, one line each, based on what you found: prefix, what to track, page-view script, skipped paths and crawlers, failures, groups, time periods, dashboard. For example:
245
+
246
+ ```text
247
+ Prefix: ${APP_ENV} (production, staging, development)
248
+ Track: defaults + calls to outside services (OUT: rpc.example.com, api.stripe.com)
249
+ Page changes: script in app/layout.tsx (with your CSP nonce)
250
+ Skip: /health, /metrics · crawlers skipped
251
+ Failures: counted (5xx)
252
+ Time periods: standard (sec 1h · min/hour 1d · day 30d · month 180d · year 10y)
253
+ Dashboard: on at /system-tracker, login from SYSTEM_TRACKER_DASHBOARD_USERNAME / _PASSWORD
254
+ ```
255
+
256
+ - Then ask: `How do you want to set up the rest?`
257
+ - `Use the recommended settings (Recommended)`: skip Steps 4 to 11 and go straight to Step-12, with the list above.
258
+ - `Recommended, but let me change some`: multi-select of the settings above; ask only the steps for the ones picked, and use the recommended answer for the rest.
259
+ - `Go through each setting`: ask Steps 4 to 11 one by one.
260
+ - With several projects, show one list per project and ask once for all of them.
261
+ - `Step-4` Prefix (the first part of every key)
262
+ - Recommend the environment variable you found, on its own, and show the code and the keys it gives, for example `process.env.APP_ENV ?? "development"` → `production:API:GET:…`. The fallback keeps it from being empty where the variable isn't set.
263
+ - Options: `The project's <VARIABLE> (Recommended)` / `A fixed name` (only for one environment per Redis) / `Something else`.
264
+ - If the project has only `NODE_ENV`, use it, but say that staging usually runs with `NODE_ENV=production`; if staging and production share one Redis, recommend adding an `APP_ENV` variable instead.
265
+ - With several projects, they share this prefix, so their counts add up in one total and every dashboard shows all of them together. Say so. If two projects have routes with the same name and share a Redis, offer to keep them apart by adding the project name (`` `api-${process.env.APP_ENV ?? "development"}` ``).
266
+ - `Step-5` What to track (multi-select). One option per kind of activity, in plain words:
267
+
268
+ | Option | Type | Default | Recommend when |
269
+ | --- | --- | --- | --- |
270
+ | People opening pages of your website | `WEB` | on | the project serves pages |
271
+ | API calls to your backend | `API` | on | it has API routes |
272
+ | GraphQL queries and mutations | `GRAPHQL` | on | GraphQL is found |
273
+ | JSON-RPC calls, Next.js Server Actions, tRPC procedures | `RPC` | on | JSON-RPC, `"use server"` actions or tRPC are found |
274
+ | Real-time connections and messages (WebSockets, Socket.IO) | `WSS` | on | `ws` or `socket.io` is found |
275
+ | Live streams to the browser (server-sent events) | `SSE` | on | `text/event-stream` is found |
276
+ | gRPC calls | `GRPC` | on | gRPC is found |
277
+ | Calls your app makes to its own backend or outside services (RPC providers, payment, email APIs) | `OUT` | off | outgoing calls are found; name them, and list the app's own backend domains in `ownDomains` |
278
+ | Requests to unknown URLs (404s, bot scans) | `OTHER` | on | always |
279
+ | Files like JS, CSS and images | `STATIC` | off | rarely; only if the app serves files and the user wants them counted |
280
+
281
+ - Pre-select and mark `(Recommended)` what you found. For a built-in type you didn't find, say "not found in the code; leaving it on costs nothing until such traffic appears". Recommend leaving it on, so `init` stays short.
282
+ - In `init`, write only the entries that differ from the defaults, for example `track: { OUT: true }`.
283
+ - `Step-6` Page changes in the browser (only for Full-stack or Frontend-only projects whose pages change without a reload)
284
+ - `Count page changes inside the app (Recommended)`: adds the page-view script to `<file>`. / `Count only full page loads`.
285
+ - Pages served from another origin than the server: use the server's full URL and `data-count-first`. CSP with a nonce: pass the nonce. Say which applies.
286
+ - `Step-7` Skip noise
287
+ - Multi-select of the noisy paths found for `ignore.paths` (health, metrics, readiness probes), each `(Recommended)`.
288
+ - Then: `Skip search engines and crawlers?` `Yes (Recommended)` for public websites, `No (Recommended)` for internal APIs.
289
+ - `Step-8` Failures: `Also count failed requests (status 500 and above) (Recommended)` / `No`. It adds one `:5xx` key per failed request and powers the failure charts and alerts in the dashboard.
290
+ - `Step-9` Groups (only when found): offer the route groups as custom `types` (for example `/webhooks/*` as `HOOK`) and single-URL endpoints as `operations`. Recommend each one that's found; `Keep the defaults` is the other option.
291
+ - `Step-10` How long to keep counts:
292
+ - `Standard (Recommended)`: every bucket, kept 1 hour (sec), 1 day (min, hour), 30 days (day), 180 days (month), 10 years (year). Nothing to add to `init`.
293
+ - `Lighter`: no per-second counts (`sec: { enable: false }`). Fewer Redis writes.
294
+ - `Longer history`: day counts for 90 days.
295
+ - `Custom`: the user lists buckets and expiries, such as `hour,day,month` or `day: 90 days`.
296
+ - Buckets not chosen get `enable: false`. Confirm the breakdown back.
297
+ - `Step-11` Dashboard. Strongly recommend it, with a login:
298
+ - `Turn on the dashboard with a login from env variables (Recommended)`: adds `SYSTEM_TRACKER_DASHBOARD_USERNAME` and `SYSTEM_TRACKER_DASHBOARD_PASSWORD` (or names that follow the project's convention) to the env files, and reads them in `init`. It stays off wherever they aren't set, so it's never open by accident.
299
+ - `Turn it on without a login`: local development only; anyone who can reach the URL sees the traffic and can change boards. Say this plainly.
300
+ - `No dashboard`.
301
+ - Write `url: "/system-tracker"` in `init` even though it's the default, so the path is visible in the code. Tell the user the URL it'll be at (for example `http://localhost:3000/system-tracker`), that the app's log prints it at startup (`[system-tracker] dashboard: http://localhost:3000/system-tracker`), and that reset data needs the login.
302
+ - Say what they get: charts per route, insights, boards, an export of any screen, and on each route's page (outgoing calls included) its recent requests as curl (the exact sample or the structure, copyable into Postman) and its recent failures with the error response and stack. Those requests are kept as sent, tokens included, which is one more reason for the login.
303
+ - `Step-12` Final confirmation
304
+ - Show, per project, the full `statis.init({...})` call, the page-view script tag and the file for each, the env variables to add (names and which files; never the password value).
305
+ - Ask: `Should I make these changes now?` `Implement (Recommended)` / `Change something` / `Stop`.
306
+ - On `Change something`, ask which setting, ask only that step, then show this confirmation again.
307
+
308
+ ## Config values
309
+
310
+ system-tracker reads no environment variables itself. The project's own code reads them and passes the values to `statis.init(...)`:
311
+
312
+ ```ts
313
+ const env = process.env;
314
+
315
+ statis.init({
316
+ redis: env.REDIS_URL!, // or the project's existing variable, or { client: existingRedis, type: "standalone" }
317
+ prefix: env.APP_ENV ?? "development", // the project's environment variable
318
+ dashboard: {
319
+ enable: Boolean(env.SYSTEM_TRACKER_DASHBOARD_USERNAME && env.SYSTEM_TRACKER_DASHBOARD_PASSWORD),
320
+ url: "/system-tracker", // the default; the app's log prints the full URL at startup
321
+ username: env.SYSTEM_TRACKER_DASHBOARD_USERNAME,
322
+ password: env.SYSTEM_TRACKER_DASHBOARD_PASSWORD,
323
+ },
324
+ });
325
+ ```
326
+
327
+ - Reuse variables the project already has (its Redis URL, its environment variable) as they are. Only add new ones for what's missing.
328
+ - New variables follow the project's naming convention; without one, use `REDIS_URL`, `SYSTEM_TRACKER_DASHBOARD_USERNAME` and `SYSTEM_TRACKER_DASHBOARD_PASSWORD`.
329
+ - Add them to:
330
+ - the local env file (`.env`, `.env.local`), with working local values. For the password, generate a strong random one (for example `openssl rand -base64 24`) instead of a word like `admin`.
331
+ - `.env.example` (or the project's template), with the names and an empty or placeholder value, never the real password.
332
+ - the project's config schema, if it has one.
333
+ - Make sure the local env file is in `.gitignore`. If it isn't, say so and offer to add it.
334
+ - Never use a browser-exposed prefix (`NEXT_PUBLIC_`, `VITE_`, `NUXT_PUBLIC_`, `REACT_APP_`) for these: they'd end up in the page.
335
+ - Make sure the env file is loaded before `statis.init(...)` runs (`import "dotenv/config"` at the top of the entry file, when the project uses `dotenv`; Next.js, Nuxt, SvelteKit and NestJS's `ConfigModule` handle it themselves, but check `instrumentation.ts` and other early files).
336
+ - Remind the user to set the same variables on their hosting (staging, production), with their own values.
337
+ - The `dashboard.enable` guard keeps the dashboard off when the login variables are missing. Without it, a missing variable would serve the dashboard with no login.
338
+
339
+ ## Implementation rules
340
+
341
+ - Keep it simple. Change as few files as possible: usually the entry file (`statis.init`), the shared layout (the page-view script) and the env files. Don't create helper files, wrapper modules, config classes or abstractions for system-tracker; put the `init` call inline where it belongs, and match the surrounding code's style.
342
+ - Don't add packages besides `system-tracker`, and don't touch routes, controllers or business code.
343
+ - Call `statis.init(...)` once per server process, at the place listed in "Where to call `statis.init(...)`", before the server listens.
344
+ - Write only options that differ from the defaults, so `init` stays short and readable.
345
+ - If the project already has an `ioredis` client, prefer `statis.init({ redis: { client, type }, prefix })`.
346
+ - If Redis is set up fresh, pass its URL from an env variable (see [Config values](#config-values)). Never hardcode a Redis password or a dashboard password in source.
347
+ - Install `system-tracker` with the project's package manager.
348
+ - Add the page-view script in the same change as `init` whenever the user chose it in Step-6.
349
+ - Do not add a stats endpoint or stat-reading helper unless the user asks; the dashboard covers it.
350
+ - Do not add tracking calls to routes, controllers, services, workers or jobs; system-tracker has no manual tracking API.
351
+ - The prefix is the project's environment variable (Step-4). Never use per-request prefixes such as `qa-server:${userId}`.
352
+ - In tests, pass `enabled: false` to `statis.init(...)`.
353
+ - Set up `dashboard` as chosen in Step-11. With a login, read the username and password from env variables and guard `enable` with them, as in [Config values](#config-values).
354
+
355
+ ## After all changes are done
356
+
357
+ At the end, output a summary per project in this format:
358
+
359
+ ```text
360
+ ✅ system-tracker is implemented successfully.
361
+
362
+ Project: <name> (<path>)
363
+ - statis.init in: <path/to/entry-file>
364
+ - prefix: <prefix>
365
+ - tracking: <API, WEB, ... / changes from defaults>
366
+ - page-view script: <file, or not needed>
367
+ - custom types / operations: <list or none>
368
+ - ignored paths: <list or none>, bots: <skipped / counted>
369
+ - failures key: <on/off>
370
+ - time periods: sec <on/off, expiry> · min <…> · hour <…> · day <…> · month <…> · year <…>
371
+ - dashboard: <URL, with/without login, or off>
372
+ - Redis connection: <reused client / URL from <variable>>
373
+ - env variables added: <names and files, or none>; set them on your hosting too
374
+
375
+ Not counted (never arrives as a request): <list of workers/jobs or none>
376
+ ```
@@ -0,0 +1,9 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ export type Capture = {
3
+ body(): string | null;
4
+ bodyCut(): boolean;
5
+ response(): string | null;
6
+ };
7
+ export declare function capture(req: IncomingMessage, res: ServerResponse, samples: boolean): Capture;
8
+ export declare function errorOf(req: IncomingMessage): string | null;
9
+ export declare function installErrorHooks(): void;
@@ -0,0 +1 @@
1
+ 'use strict';const _0x39c2ad=_0x4db9;(function(_0x3c0de3,_0x172666){const _0x323303={_0x5cbb14:0x16c,_0x5096e8:0x17d,_0x3c5cee:0x176,_0x24f4a5:0x140,_0x4ea01a:0x173,_0x5170d2:0x170,_0x2339cf:0x189,_0x23b610:0x13f,_0xc85924:0x190,_0x1e244a:0x15f},_0x54f138=_0x4db9,_0x230a24=_0x3c0de3();while(!![]){try{const _0x3d1222=-parseInt(_0x54f138(_0x323303._0x5cbb14))/(0x1a56*-0x1+0x117d+0x2*0x46d)+parseInt(_0x54f138(_0x323303._0x5096e8))/(-0xd73*0x1+-0x180e*0x1+-0x63*-0x61)+-parseInt(_0x54f138(_0x323303._0x3c5cee))/(-0xdc8+-0x1*-0x721+-0x355*-0x2)*(-parseInt(_0x54f138(_0x323303._0x24f4a5))/(0x139+-0xcb*-0x1d+0x1834*-0x1))+parseInt(_0x54f138(_0x323303._0x4ea01a))/(-0xe08+-0x2687*-0x1+-0x1e2*0xd)*(-parseInt(_0x54f138(_0x323303._0x5170d2))/(0x1102+0x6*0x4d+0x4a*-0x41))+parseInt(_0x54f138(_0x323303._0x2339cf))/(0x3*-0xb36+-0x1*-0x1cf9+0x4b0)+-parseInt(_0x54f138(_0x323303._0x23b610))/(-0x38*0x8b+-0xd46+0x2bb6)*(parseInt(_0x54f138(_0x323303._0xc85924))/(0x1*0xc95+-0x1638+0x9ac))+parseInt(_0x54f138(_0x323303._0x1e244a))/(-0xaee+-0x7*-0x1df+-0x221);if(_0x3d1222===_0x172666)break;else _0x230a24['push'](_0x230a24['shift']());}catch(_0x22e30f){_0x230a24['push'](_0x230a24['shift']());}}}(_0x2a61,0x7946e+0xd6326+-0x2c8bf*0x5));function _0x2a61(){const _0x2bed3b=['C3rHDhvZq28','y2fWDhvYzq','C3LZDgvTlxq','zM9Y','zgf0yq','zxf1zxn0','Dg9tDhjPBMC','BNLwqNm','CNjVCG','C2XPy2u','DgvZDa','yxbWBhK','BgvUz3rO','BwvZC2fNzq','DhLWzq','D0nNy3i','Aw5ZDgfSBeu','C3rYAw5N','zw5JB2rPBMC','kgnVBxbYzxm','r0vu','AxncDwzMzxi','zNvUy3rPB24','yxnL','mta0mJGXntbtAxfrwwe','s1zXv2i','B3bLCNr5','z2v0sgvHzgu','Bwv0Ag9K','ChvZAa','CMfJA2vYlMu','y0PUyxG','AgfUzgXLuMu','DxrLCI9SyxK','zw5K','y29Uy2f0','Dg9mB3DLCKm','mJuYmZG4thHmCuX5','x19LC01Vzhu','Dg9vChbLCKm','CNjVCKHVB2S','ndqWmJm4nLflr1LoAG','CM91DgvYl2W','AgfUzgXLx3i','nxPqEeDeCG','B25ZzsK','C2vKihjLC3a','m1n4D21dtq','CM91DgvY','zgvMAw5Luhi','sevbra','vhjky2W','yw1xuKW','lI9SAwiVCM8','ndGXnJqWAKzoyMvr','D3jPDgu','AgvHzgvYCW','BwLU','zw1PDa','wLnou1y','D3jHCe1LDgG','B2jQzwn0','zxHWCMvZCW','AwiVBgf5zxi','zxjYB3jpzG','CxvLC3q','mZaZmJG2ouLgs09lDW','CM91Dgu','C3rHy2S','zxiUANm','Bg9HzezYB20','lMPZ','DxrMoa','mtqXm3z2re1Yyq','u1byrK8','mJm5ndrKtMTXu3u','odaZnJeYyNnQBu9v','y29UDgvUDc0','yMH4t2i','ChjVDg90Exa','C3vIyxjYyxK','zNjVBq','t1busu9ouW'];_0x2a61=function(){return _0x2bed3b;};return _0x2a61();}Object[_0x39c2ad(0x178)+_0x39c2ad(0x161)](exports,_0x39c2ad(0x16d)+'le',{'value':!![]}),exports[_0x39c2ad(0x148)]=capture,exports[_0x39c2ad(0x187)]=errorOf,exports[_0x39c2ad(0x157)+_0x39c2ad(0x16f)+'s']=installErrorHooks;function _0x4db9(_0x482191,_0xda944d){_0x482191=_0x482191-(-0x1ce9+0x43*-0x59+0x3572);const _0x56b7bf=_0x2a61();let _0x41acb3=_0x56b7bf[_0x482191];if(_0x4db9['pgSfyf']===undefined){var _0x95aa2c=function(_0x2db727){const _0xa0a687='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4b7bb0='',_0x142fea='';for(let _0x8b9d21=-0x19*-0x169+-0xc92*-0x1+-0x2fd3,_0x1e812a,_0x19c6dc,_0x12cad5=0x49*0x1f+0x21e*0x2+0x1*-0xd13;_0x19c6dc=_0x2db727['charAt'](_0x12cad5++);~_0x19c6dc&&(_0x1e812a=_0x8b9d21%(-0x1*-0x23de+-0x7b5*0x5+0x2af)?_0x1e812a*(-0xc4b+-0xd59*0x1+-0x4*-0x679)+_0x19c6dc:_0x19c6dc,_0x8b9d21++%(-0x17*0x1a9+-0x358+0xf*0x2c5))?_0x4b7bb0+=String['fromCharCode'](0x19a+-0x47*0x62+0x1a93&_0x1e812a>>(-(0x20a1+-0x197*-0x1+0x1*-0x2236)*_0x8b9d21&0x43*0x7f+0x1670+0x128d*-0x3)):-0xcfb+0xe80+-0x185){_0x19c6dc=_0xa0a687['indexOf'](_0x19c6dc);}for(let _0x5b7c4a=0x7*0x173+-0x1a2d+0x1008*0x1,_0x437fd4=_0x4b7bb0['length'];_0x5b7c4a<_0x437fd4;_0x5b7c4a++){_0x142fea+='%'+('00'+_0x4b7bb0['charCodeAt'](_0x5b7c4a)['toString'](0x1*0x486+-0x1d2d+0x18b7))['slice'](-(-0xba*0xd+0x3f1*-0x1+0x7f*0x1b));}return decodeURIComponent(_0x142fea);};_0x4db9['WmlozL']=_0x95aa2c,_0x4db9['DVORrK']={},_0x4db9['pgSfyf']=!![];}const _0x5726ff=_0x56b7bf[0x1bd9+0x1fa5*0x1+-0x3b7e];_0x4db9['MojoHP']!==_0x5726ff&&(_0x4db9['DVORrK']={},_0x4db9['MojoHP']=_0x5726ff);const _0x103bd4=_0x4db9['DVORrK'][_0x482191];return _0x103bd4===undefined?(_0x41acb3=_0x4db9['WmlozL'](_0x41acb3),_0x4db9['DVORrK'][_0x482191]=_0x41acb3):_0x41acb3=_0x103bd4,_0x41acb3;}const patch_1=require('./patch'),MAX_BODY=(0x19ae+0x1f40+-0x38ae)*(-0x194*-0x5+0x1bf1+-0x1fd5),MAX_RESPONSE=-0x2096+-0x2468*0x1+0x4cfe,ERROR=Symbol[_0x39c2ad(0x14a)](_0x39c2ad(0x149)+_0x39c2ad(0x165)+_0x39c2ad(0x14f)),DETECT=/^application\/(json|[\w.+-]+\+json|graphql)/,BINARY=/^(multipart\/|application\/octet-stream|image\/|audio\/|video\/|application\/(zip|pdf|gzip))/;function wantsBody(_0x575593,_0x194ded){const _0x45ac07={_0x2df348:0x141,_0x1e589f:0x155,_0x3b4d53:0x163,_0x44cf3b:0x15b,_0x3ad8a9:0x16e,_0x4c0426:0x15e,_0x1733c3:0x156,_0x1caf7d:0x166,_0xe8ee54:0x179,_0x561120:0x146,_0x19eb2c:0x17f,_0x150832:0x14e,_0x437f7b:0x16b,_0xba85e2:0x151,_0x9bdb39:0x17a,_0x15f1ea:0x17f,_0x12f8b5:0x141,_0x12729b:0x153},_0x13ea04=_0x39c2ad,_0x5b4966={'wCgcr':function(_0x3573e3,_0x4d9763){return _0x3573e3===_0x4d9763;},'cJnax':function(_0x5803dd,_0x8b2152){return _0x5803dd===_0x8b2152;},'nyVBs':_0x13ea04(_0x45ac07._0x2df348)+_0x13ea04(_0x45ac07._0x1e589f),'TrJcl':function(_0xd3bf42,_0x398582){return _0xd3bf42(_0x398582);}},_0x1a09b4=(_0x575593[_0x13ea04(_0x45ac07._0x3b4d53)]??_0x13ea04(_0x45ac07._0x44cf3b))[_0x13ea04(_0x45ac07._0x3ad8a9)+_0x13ea04(_0x45ac07._0x4c0426)]();if(_0x5b4966[_0x13ea04(_0x45ac07._0x1733c3)](_0x1a09b4,_0x13ea04(_0x45ac07._0x44cf3b))||_0x5b4966[_0x13ea04(_0x45ac07._0x1caf7d)](_0x1a09b4,_0x13ea04(_0x45ac07._0xe8ee54))||_0x1a09b4===_0x13ea04(_0x45ac07._0x561120))return![];const _0x51693b=String(_0x575593[_0x13ea04(_0x45ac07._0x19eb2c)][_0x5b4966[_0x13ea04(_0x45ac07._0x150832)]]??'')[_0x13ea04(_0x45ac07._0x437f7b)+_0x13ea04(_0x45ac07._0x4c0426)]();if(DETECT[_0x13ea04(_0x45ac07._0xba85e2)](_0x51693b))return!![];return _0x194ded&&!BINARY[_0x13ea04(_0x45ac07._0xba85e2)](_0x51693b)&&(!!_0x51693b||_0x5b4966[_0x13ea04(_0x45ac07._0x9bdb39)](Number,_0x575593[_0x13ea04(_0x45ac07._0x15f1ea)][_0x13ea04(_0x45ac07._0x12f8b5)+_0x13ea04(_0x45ac07._0x12729b)])>-0x26e9+0x124f*0x1+0x149a);}function capture(_0x1f5983,_0x24a0a4,_0x2bfa39){const _0x39bb9d={_0x148691:0x181,_0x24df05:0x17e,_0x498caa:0x169},_0x4406e0={_0x173a3e:0x153,_0x5a9001:0x162,_0x2af3ea:0x141,_0x489ac5:0x159,_0x1461ef:0x15a,_0x17579f:0x175,_0x53e595:0x174,_0x1ae00f:0x16a,_0x450f24:0x14d,_0x5a2c52:0x18f},_0x25a404={_0x12355d:0x152},_0x35134f={_0x5a4895:0x152},_0x384ae3={_0x2a9600:0x147,_0x354f63:0x15d,_0x37ce27:0x158,_0x5e1f0b:0x145,_0x413763:0x158,_0x278df2:0x18f,_0xec5e3e:0x145,_0x1b3acc:0x164,_0x32f2f4:0x144,_0x40261b:0x180,_0x15a9b5:0x153},_0x4b951c={_0x42d2c4:0x14b,_0x799f2f:0x182,_0x1dd251:0x158,_0x32dd50:0x145,_0x2dce10:0x15c,_0x460b3c:0x153,_0x232d16:0x164,_0x51e006:0x153,_0x7808b3:0x152},_0x32cea7=_0x39c2ad,_0x3c74ff={'ZSNSV':function(_0x48968e,_0x538000){return _0x48968e!=_0x538000;}},_0x5ad4a5=[];let _0x3447b7=-0xa2+0x18a1+-0x17ff*0x1,_0x54017d=![];if(wantsBody(_0x1f5983,_0x2bfa39)){const _0x21148c=_0x1f5983[_0x32cea7(_0x39bb9d._0x148691)];_0x1f5983[_0x32cea7(_0x39bb9d._0x148691)]=function(_0x4ce111,_0x197c7d){const _0x52f47f=_0x32cea7;if(_0x4ce111===_0x52f47f(_0x4b951c._0x42d2c4)&&!_0x54017d&&_0x3c74ff[_0x52f47f(_0x4b951c._0x799f2f)](_0x197c7d,null)){const _0x4156a6=typeof _0x197c7d===_0x52f47f(_0x4b951c._0x1dd251)?Buffer[_0x52f47f(_0x4b951c._0x32dd50)](_0x197c7d):Buffer[_0x52f47f(_0x4b951c._0x2dce10)](_0x197c7d)?_0x197c7d:null;if(_0x4156a6){if(_0x3447b7+_0x4156a6[_0x52f47f(_0x4b951c._0x460b3c)]>MAX_BODY)_0x54017d=!![];else _0x5ad4a5[_0x52f47f(_0x4b951c._0x232d16)](_0x4156a6),_0x3447b7+=_0x4156a6[_0x52f47f(_0x4b951c._0x51e006)];}}return _0x21148c[_0x52f47f(_0x4b951c._0x7808b3)](this,arguments);};}const _0x212983=[];let _0x1354a1=-0x5f8+-0x141c*-0x1+-0xe24;if(_0x2bfa39){const _0x4bc875=(_0x43c802,_0x291491)=>{const _0x246bc1=_0x32cea7;if(_0x24a0a4[_0x246bc1(_0x384ae3._0x2a9600)+'de']<-0x1b4d*0x1+0x1724*-0x1+-0x1*-0x3465||_0x1354a1>=MAX_RESPONSE||_0x43c802==null||typeof _0x43c802===_0x246bc1(_0x384ae3._0x354f63))return;const _0x2f05ad=typeof _0x43c802===_0x246bc1(_0x384ae3._0x37ce27)?Buffer[_0x246bc1(_0x384ae3._0x5e1f0b)](_0x43c802,typeof _0x291491===_0x246bc1(_0x384ae3._0x413763)?_0x291491:_0x246bc1(_0x384ae3._0x278df2)):_0x43c802 instanceof Uint8Array?Buffer[_0x246bc1(_0x384ae3._0xec5e3e)](_0x43c802):null;if(!_0x2f05ad)return;_0x212983[_0x246bc1(_0x384ae3._0x1b3acc)](_0x2f05ad[_0x246bc1(_0x384ae3._0x32f2f4)](-0xabc+0xa9*0xe+0x17e,MAX_RESPONSE-_0x1354a1)),_0x1354a1+=Math[_0x246bc1(_0x384ae3._0x40261b)](_0x2f05ad[_0x246bc1(_0x384ae3._0x15a9b5)],MAX_RESPONSE-_0x1354a1);},_0x4282fe=_0x24a0a4[_0x32cea7(_0x39bb9d._0x24df05)],_0x421794=_0x24a0a4[_0x32cea7(_0x39bb9d._0x498caa)];_0x24a0a4[_0x32cea7(_0x39bb9d._0x24df05)]=function(_0x1662e9,_0x403169){const _0x33449d=_0x32cea7;try{_0x4bc875(_0x1662e9,_0x403169);}catch{}return _0x4282fe[_0x33449d(_0x35134f._0x5a4895)](this,arguments);},_0x24a0a4[_0x32cea7(_0x39bb9d._0x498caa)]=function(_0x39db4d,_0x22e25e){const _0x45d66d=_0x32cea7;try{_0x4bc875(_0x39db4d,_0x22e25e);}catch{}return _0x421794[_0x45d66d(_0x25a404._0x12355d)](this,arguments);};}return{'body':()=>_0x54017d||!_0x5ad4a5[_0x32cea7(0x153)]?null:Buffer[_0x32cea7(0x16a)](_0x5ad4a5)[_0x32cea7(0x14d)](_0x32cea7(0x18f)),'bodyCut':()=>_0x54017d,'response':()=>{const _0x5d1466=_0x32cea7;if(!_0x212983[_0x5d1466(_0x4406e0._0x173a3e)])return null;if(_0x24a0a4[_0x5d1466(_0x4406e0._0x5a9001)+'r'](_0x5d1466(_0x4406e0._0x2af3ea)+_0x5d1466(_0x4406e0._0x489ac5)))return _0x5d1466(_0x4406e0._0x1461ef)+_0x5d1466(_0x4406e0._0x17579f)+_0x5d1466(_0x4406e0._0x53e595);return Buffer[_0x5d1466(_0x4406e0._0x1ae00f)](_0x212983)[_0x5d1466(_0x4406e0._0x450f24)](_0x5d1466(_0x4406e0._0x5a2c52));}};}function errorOf(_0x4da44f){const _0x48c7b2={_0x5b64f2:0x142,_0x5ef026:0x18b,_0x5bad56:0x154,_0x276885:0x150},_0x408111=_0x39c2ad,_0x340e63={'bhxOb':function(_0x48695f,_0x4ebcf2){return _0x48695f instanceof _0x4ebcf2;}},_0x58ecfe=_0x4da44f[ERROR];if(!_0x58ecfe)return null;return String(_0x340e63[_0x408111(_0x48c7b2._0x5b64f2)](_0x58ecfe,Error)?_0x58ecfe[_0x408111(_0x48c7b2._0x5ef026)]||_0x58ecfe[_0x408111(_0x48c7b2._0x5bad56)]:_0x58ecfe)[_0x408111(_0x48c7b2._0x276885)](0x17d0+0x113c+0x4*-0xa43,0x7dd+-0x16b*0x19+0x2b96*0x1);}function keepError(_0x4f062c,_0x2985d7){const _0x394b43={_0x353fdd:0x184,_0x51c77f:0x15d},_0x478bc8={_0x2abca6:0x18a,_0x42790e:0x177,_0x172de1:0x152},_0x2f8008=_0x39c2ad,_0x25de6e=_0x2985d7[-0x262c*0x1+0x84*0x1d+-0x1738*-0x1],_0x258372=_0x2985d7[0x17*0xb2+0xbce+0x1bca*-0x1];if(!_0x25de6e||typeof _0x25de6e!==_0x2f8008(_0x394b43._0x353fdd)||typeof _0x258372!==_0x2f8008(_0x394b43._0x51c77f))return;_0x2985d7[-0xca*0x2+0x1740+-0x15aa]=function(_0xb6f916){const _0x41c9e3=_0x2f8008;if(_0xb6f916&&_0xb6f916!==_0x41c9e3(_0x478bc8._0x2abca6)&&_0xb6f916!==_0x41c9e3(_0x478bc8._0x42790e)&&!_0x25de6e[ERROR])_0x25de6e[ERROR]=_0xb6f916;return _0x258372[_0x41c9e3(_0x478bc8._0x172de1)](this,arguments);};}function installErrorHooks(){const _0xc7528e={_0x3afd7a:0x17c,_0x58d81c:0x168,_0x2b989:0x18c,_0x3896de:0x185,_0x228efd:0x167,_0x9f4493:0x188,_0xdf39c3:0x183,_0x56032f:0x18d,_0x354795:0x160,_0x36ebed:0x143,_0x8f676e:0x172,_0x169312:0x14c,_0x22f0b7:0x18d,_0x5f504d:0x17b,_0x3c6cd0:0x171,_0x1a1d36:0x186,_0x3ab461:0x18e,_0x50033a:0x143,_0x585882:0x13e},_0x3dd0b5=_0x39c2ad,_0x5a4f1b={'KVqWb':_0x3dd0b5(_0xc7528e._0x3afd7a)+_0x3dd0b5(_0xc7528e._0x58d81c)+_0x3dd0b5(_0xc7528e._0x2b989),'amWRL':_0x3dd0b5(_0xc7528e._0x3896de),'SPXFO':_0x3dd0b5(_0xc7528e._0x228efd)+_0x3dd0b5(_0xc7528e._0x9f4493)};(0x2b*0x5b+0x1e20+-0x5*0x915,patch_1[_0x3dd0b5(_0xc7528e._0xdf39c3)+'od'])((0x15dc+0x2217+-0x37f3,patch_1[_0x3dd0b5(_0xc7528e._0x56032f)])(_0x3dd0b5(_0xc7528e._0x3896de),_0x5a4f1b[_0x3dd0b5(_0xc7528e._0x354795)])?.[_0x3dd0b5(_0xc7528e._0x36ebed)+'e'],_0x3dd0b5(_0xc7528e._0x8f676e)+_0x3dd0b5(_0xc7528e._0x169312),keepError),(0xb8d+-0x6*-0x3a9+-0x2183,patch_1[_0x3dd0b5(_0xc7528e._0xdf39c3)+'od'])((-0x286*0xb+-0x821*-0x1+0x13a1,patch_1[_0x3dd0b5(_0xc7528e._0x22f0b7)])(_0x5a4f1b[_0x3dd0b5(_0xc7528e._0x5f504d)],_0x3dd0b5(_0xc7528e._0x3c6cd0)+_0x3dd0b5(_0xc7528e._0x1a1d36)+_0x3dd0b5(_0xc7528e._0x3ab461))?.[_0x3dd0b5(_0xc7528e._0x50033a)+'e'],_0x5a4f1b[_0x3dd0b5(_0xc7528e._0x585882)],keepError);}
@@ -0,0 +1,16 @@
1
+ import type { IncomingMessage } from "node:http";
2
+ import type { AutoConfig, Hit } from "../types";
3
+ import { RouteNamer } from "./naming";
4
+ type Req = IncomingMessage & {
5
+ body?: unknown;
6
+ route?: unknown;
7
+ baseUrl?: string;
8
+ };
9
+ type Res = {
10
+ statusCode: number;
11
+ getHeader(name: string): unknown;
12
+ };
13
+ export declare const BOT: RegExp;
14
+ export declare function classifyRequest(req: Req, res: Res, cfg: AutoConfig, namer: RouteNamer, url?: string | undefined, raw?: () => string | null): Hit[];
15
+ export declare function classifyUpgrade(req: IncomingMessage, cfg: AutoConfig, namer: RouteNamer): Hit[];
16
+ export {};
@@ -0,0 +1 @@
1
+ 'use strict';function _0x3145(){const _0x4b0c34=['tvvuqvrjt04','svvABfi','rgfzy2e','qK9u','DxjS','s1fiwwC','uMvXDwvZDa','CgfYC2u','AxncDwzMzxi','Ee9M','r1jbueHrta','vxbNCMfKzq','y2XHC3nPzNK','DhjPBq','Ag1fvhK','BgvUz3rO','ntiYmdu3ovHyvNfLuW','yxnL','AhfS','veLptG','Cgf0Aa','DhjHy2S','l19UzxH0l2q','lxzLCNnPB24','u1rbveLd','BK5HBwu','BgfZDeLUzgu','ovjgy2L4EG','u1nf','lZXMAwXLpG','zgvMAw5Luhi','phvUA25VD24','AM9PBG','t1rirvi','Dg9tDhjPBMC','uLbd','yLzAAKm','ChjVDg9JB2W','Cgf0Ae5HBwu','CxvLCNK','Aw5JBhvKzxm','zwq+','zxHWCMvZC1i','ntq0ntHUsfPLvve','Aw9U','u1vcu0nssva','Aw5KzxHpzG','zMLSDgvY','ue9tva','z2v0','Aw9Ul2DYyxa','C2vJlwzLDgm','C2vJlxb1CNa','ywPbyxK','D2vIC29JA2u','uvvfuLK','r1jqqW','C3rYAw5N','BNqTC3rYzwe','BgvjyMO','C3bSAxq','DgvYlxbYzwy','DhLWzq','q09otKvdva','CLjjC0i','Aw9Ul2DYCgm','AfnTEu8','l19UzxH0l3m','B3bLCNr5','pgfUB255Bw8','B3bLCMf0Aw8','DxrMoa','yxbWBgLJyxq','qxLoAvy','C3rHCNrZv2K','zxrJAa','uLjTEMK','CMvHza','mJi0ntiWD2LQDLvY','Bwf0y2Hqyxq','Cgf0Ahm','BhnyDg4','BMv4Dc1Hy3q','ANnVBNjWyW','qNzxvLG','pgzPBgu+','BwfW','qvbj','y29UBMvJDc0','B3v0zq','DxnLCI1Hz2u','Dxm+','z2v0sgvHzgu','BgLTAxq','uwfHrxa','B2jQzwn0','x19LC01Vzhu','DhjWyW','qunusu9o','DgvZDa','Ac1Kzxn0','AgvHzgvYCW','Bwv0Ag9K','zMLUza','l3nVy2TLDc4','y29UDgvUDc0','nJm5mtu5nKnyu01nwG','v1nt','BMv4Dc1YB3u','Dgf0AwmV','r0vu','DgXZwg0','BMfTzq','C2fUAxrPEMu','AM5Qu3u','tK9usuzz','q0fmta','zg9JDw1LBNq','AxnbCNjHEq','mI4W','zxHLyW','C29Tzq','yM9KEq','yxrHlW','nxr1vvvtAa','DhLWzxm','A3v3wey','mJC2ntK3nM1NBe91EG','Dgv4Dc9LDMu','DxbNCMfKzq','sLPVCe0','C2XPy2u','phvUBwf0y2G','ywn0Aw9U','ChvYCg9Zzq','z2fSDKO','Aw8V','C3rYAxbrDwu','AvfIBLq','Ehv2r1G','CMvWBgfJzq','ywnJzxb0','AeLQAMS','t1vu','yM90CW','B3nL','l19UzxH0lW','AwDUB3jL','Aw9Ul2nVBM4','AhjKAg8','Bwv0Ag9KCW','AgfZ','Dg9mB3DLCKm','mZK5mZjdq1rivxu','mteXmZu0mejTDw13sW','CNnJ','C3rHDhvZq28','v0vc','Dgv4Dc9ODg0','ChvZAa','Dg9vChbLCKm','zwn0kW'];_0x3145=function(){return _0x4b0c34;};return _0x3145();}const _0x57a12c=_0x13b6;(function(_0x40f5f9,_0x363a90){const _0x59796f={_0x1b6cd8:0x207,_0x3f81f3:0x1d4,_0x3e21bf:0x25b,_0x237b3e:0x1d3,_0x14f4cb:0x258,_0x20f0c3:0x246,_0x1b7869:0x1ec,_0x48d620:0x22a,_0x5a0a58:0x1f7},_0x1a7f21=_0x13b6,_0x3cc197=_0x40f5f9();while(!![]){try{const _0x3f3a89=parseInt(_0x1a7f21(_0x59796f._0x1b6cd8))/(-0x860*-0x2+-0x40c*0x5+0x13*0x2f)+-parseInt(_0x1a7f21(_0x59796f._0x3f81f3))/(-0x1*0x24cb+-0x26c3+0x4b90)+parseInt(_0x1a7f21(_0x59796f._0x3e21bf))/(0x2302+0x129b+0x2*-0x1acd)+parseInt(_0x1a7f21(_0x59796f._0x237b3e))/(0x4cd+0x1d51+-0x221a)*(-parseInt(_0x1a7f21(_0x59796f._0x14f4cb))/(-0x1d20+0x1*-0x18ea+0x293*0x15))+parseInt(_0x1a7f21(_0x59796f._0x20f0c3))/(0x5*0x497+0x20e4+-0x37d1)+-parseInt(_0x1a7f21(_0x59796f._0x1b7869))/(0x81*-0x2+0x20*-0x40+0x909)+-parseInt(_0x1a7f21(_0x59796f._0x48d620))/(-0x1*0x987+-0x2346+0x2cd5)*(parseInt(_0x1a7f21(_0x59796f._0x5a0a58))/(-0x4*0x926+-0x1fe2+0x1*0x4483));if(_0x3f3a89===_0x363a90)break;else _0x3cc197['push'](_0x3cc197['shift']());}catch(_0x3aa04a){_0x3cc197['push'](_0x3cc197['shift']());}}}(_0x3145,0x235*-0x6ad+-0x9bf5c+0x2ce*0xc8b));Object[_0x57a12c(0x1fa)+_0x57a12c(0x220)](exports,_0x57a12c(0x23c)+'le',{'value':!![]}),exports[_0x57a12c(0x1df)]=void(-0xa71*-0x3+0x1*-0x17b6+-0x1*0x79d),exports[_0x57a12c(0x1e8)+_0x57a12c(0x1e2)]=classifyRequest,exports[_0x57a12c(0x1e8)+_0x57a12c(0x1e7)]=classifyUpgrade;const naming_1=require('./naming');exports[_0x57a12c(0x1df)]=/bot|crawl|spider|slurp|bingpreview|facebookexternalhit|headless/i;const STATIC_FILE=/\.(js|mjs|css|map|png|jpe?g|gif|svg|ico|webp|avif|woff2?|ttf|otf|eot|mp4|webm)$/i,GRAPHQL_DOC=/^(?:\{|(query|mutation|subscription)\b\s*([_A-Za-z][_0-9A-Za-z]*)?[^{]*\{)/,BUILT_IN=new Set([_0x57a12c(0x233),_0x57a12c(0x1d7),_0x57a12c(0x1e6),_0x57a12c(0x1ff),_0x57a12c(0x247),_0x57a12c(0x1f8),_0x57a12c(0x214),_0x57a12c(0x1fd),_0x57a12c(0x1f4),_0x57a12c(0x26b)]);function header(_0x19bcec,_0x3f4766){const _0x414ff1={_0x426596:0x241,_0x167632:0x252,_0x44f205:0x1fc,_0x3f05aa:0x215},_0x5b191e=_0x57a12c,_0x5c58ff=_0x19bcec[_0x5b191e(_0x414ff1._0x426596)]?.[_0x3f4766];if(Array[_0x5b191e(_0x414ff1._0x167632)](_0x5c58ff))return _0x5c58ff[_0x5b191e(_0x414ff1._0x44f205)](',');return typeof _0x5c58ff===_0x5b191e(_0x414ff1._0x3f05aa)?_0x5c58ff:'';}function contentType(_0x46207e){const _0x2763a8={_0x27af96:0x267,_0x149fe7:0x238,_0x589909:0x245,_0x59da8d:0x21a,_0x2d922a:0x1d2,_0x42ea04:0x1ed},_0x575c01=_0x57a12c,_0x42ca2a={'xuvGX':function(_0x218322,_0x3d13a3){return _0x218322(_0x3d13a3);}};return _0x42ca2a[_0x575c01(_0x2763a8._0x27af96)](String,_0x46207e[_0x575c01(_0x2763a8._0x149fe7)+'r'](_0x575c01(_0x2763a8._0x589909)+_0x575c01(_0x2763a8._0x59da8d))??'')[_0x575c01(_0x2763a8._0x2d922a)+_0x575c01(_0x2763a8._0x42ea04)]();}function skipped(_0x37b6fa,_0x316bee,_0x3c6458){const _0x502c3a={_0x5cbc67:0x1cd,_0x48e24b:0x22c,_0x10a409:0x255,_0x1e740b:0x1cd,_0x4e4b8f:0x26c,_0x182c1a:0x1df,_0x3120ed:0x23f,_0x1f2f91:0x236},_0x4b8c47=_0x57a12c;if(_0x3c6458[_0x4b8c47(_0x502c3a._0x5cbc67)][_0x4b8c47(_0x502c3a._0x48e24b)][_0x4b8c47(_0x502c3a._0x10a409)](_0x44e0ea=>(0x564+-0x25f6+0x16*0x17b,naming_1[_0x4b8c47(0x22b)+'h'])(_0x44e0ea,_0x316bee)))return!![];return _0x3c6458[_0x4b8c47(_0x502c3a._0x1e740b)][_0x4b8c47(_0x502c3a._0x4e4b8f)]&&exports[_0x4b8c47(_0x502c3a._0x182c1a)][_0x4b8c47(_0x502c3a._0x3120ed)](header(_0x37b6fa,_0x4b8c47(_0x502c3a._0x1f2f91)+'nt'));}function isPrefetch(_0x48ef02){const _0xec05a4={_0x3161b5:0x210,_0x5b2847:0x26d,_0x1b6cdd:0x25a,_0x5c8baa:0x241,_0x1ba6bf:0x248,_0x5cbaec:0x219,_0x327869:0x227,_0x1373f7:0x23f,_0x4bf821:0x262,_0xf04ad:0x23f,_0x2f7f55:0x200},_0x1d8f13=_0x57a12c,_0x5c7029={'kuwXF':function(_0x22e621,_0x44b15d){return _0x22e621!==_0x44b15d;},'bVZjC':_0x1d8f13(_0xec05a4._0x3161b5)+_0x1d8f13(_0xec05a4._0x5b2847)};return _0x5c7029[_0x1d8f13(_0xec05a4._0x1b6cdd)](_0x48ef02[_0x1d8f13(_0xec05a4._0x5c8baa)]?.[_0x1d8f13(_0xec05a4._0x1ba6bf)+_0x1d8f13(_0xec05a4._0x5cbaec)+_0x1d8f13(_0xec05a4._0x327869)],undefined)||/prefetch/i[_0x1d8f13(_0xec05a4._0x1373f7)](header(_0x48ef02,_0x1d8f13(_0xec05a4._0x4bf821)))||/prefetch/i[_0x1d8f13(_0xec05a4._0xf04ad)](header(_0x48ef02,_0x5c7029[_0x1d8f13(_0xec05a4._0x2f7f55)]));}function isNextNavigation(_0x265e6f,_0x366f75){const _0x1f38be={_0x4736a2:0x1f2,_0x6794c6:0x257,_0x4587b0:0x1d5,_0x107bf5:0x20f,_0x55e650:0x240,_0x46c182:0x1d2,_0x3235de:0x1ed,_0x58679f:0x251,_0x4bdb98:0x226,_0x49df60:0x1de},_0x3e9f78=_0x57a12c,_0x1d0684={'DaYca':_0x3e9f78(_0x1f38be._0x4736a2)+_0x3e9f78(_0x1f38be._0x6794c6)};return header(_0x265e6f,_0x3e9f78(_0x1f38be._0x4587b0))==='1'&&header(_0x265e6f,_0x3e9f78(_0x1f38be._0x107bf5)+_0x3e9f78(_0x1f38be._0x55e650))[_0x3e9f78(_0x1f38be._0x46c182)+_0x3e9f78(_0x1f38be._0x3235de)]()!==_0x3e9f78(_0x1f38be._0x58679f)||_0x366f75[_0x3e9f78(_0x1f38be._0x4bdb98)+'th'](_0x1d0684[_0x3e9f78(_0x1f38be._0x49df60)]);}function finish(_0x406aea,_0x21d67b,_0x1968aa){const _0x4121fb={_0x2239db:0x20b,_0x257dd2:0x232},_0x8f706d=_0x57a12c;return _0x406aea[_0x8f706d(_0x4121fb._0x2239db)](_0x8f6301=>!BUILT_IN[_0x8f706d(0x1d1)](_0x8f6301[_0x8f706d(0x21a)])||_0x21d67b[_0x8f706d(0x1f1)][_0x8f6301[_0x8f706d(0x21a)]])[_0x8f706d(_0x4121fb._0x257dd2)](_0x378806=>({..._0x378806,'name':_0x1968aa[_0x8f706d(0x239)](_0x378806[_0x8f706d(0x21a)],_0x378806[_0x8f706d(0x24c)])}));}function overrideHit(_0x29a544,_0x545342){const _0x1e54aa={_0x148d19:0x24c,_0x4d233c:0x21a,_0xf637cc:0x261,_0x4f501e:0x24c,_0x32ae21:0x24d,_0x263ea4:0x23a,_0x4daf53:0x24d,_0x516fb9:0x261},_0x2e44ee=_0x57a12c,_0xa409c={'QaaEp':function(_0x2b3ff6,_0x1fd994){return _0x2b3ff6(_0x1fd994);}},_0x51c547=_0x545342[_0x2e44ee(_0x1e54aa._0x148d19)]?.(_0x29a544);if(!_0x51c547||!_0x51c547[_0x2e44ee(_0x1e54aa._0x4d233c)]||!_0x51c547[_0x2e44ee(_0x1e54aa._0xf637cc)]||!_0x51c547[_0x2e44ee(_0x1e54aa._0x4f501e)])return null;return{'type':(0x19ae+0x22fc+-0x3caa,naming_1[_0x2e44ee(_0x1e54aa._0x32ae21)])(_0xa409c[_0x2e44ee(_0x1e54aa._0x263ea4)](String,_0x51c547[_0x2e44ee(_0x1e54aa._0x4d233c)])),'action':(0x9a3*-0x2+0x225a*0x1+-0xc1*0x14,naming_1[_0x2e44ee(_0x1e54aa._0x4daf53)])(_0xa409c[_0x2e44ee(_0x1e54aa._0x263ea4)](String,_0x51c547[_0x2e44ee(_0x1e54aa._0x516fb9)])),'name':(0x1fbe+-0x2*0xa31+-0xb5c,naming_1[_0x2e44ee(_0x1e54aa._0x4daf53)])(String(_0x51c547[_0x2e44ee(_0x1e54aa._0x4f501e)]))};}function operationName(_0x55fcd1,_0x2a9e7a){const _0x58b2bf={_0x223b57:0x21c,_0x5518b6:0x215,_0x304e3f:0x24d,_0xec924e:0x1fb,_0x2f5569:0x1fb},_0x570191=_0x57a12c,_0x2a77b4={'rRIsB':function(_0x37d00a,_0x2a65c6){return _0x37d00a(_0x2a65c6);}};try{const _0x397011=_0x2a77b4[_0x570191(_0x58b2bf._0x223b57)](_0x55fcd1,_0x2a9e7a);return typeof _0x397011===_0x570191(_0x58b2bf._0x5518b6)&&_0x397011?(0x26a9+0x1*-0x1145+-0x1564,naming_1[_0x570191(_0x58b2bf._0x304e3f)])(_0x397011):_0x570191(_0x58b2bf._0xec924e)+'>';}catch{return _0x570191(_0x58b2bf._0x2f5569)+'>';}}function rpcHits(_0x3edda8){const _0x504964={_0x597577:0x23b,_0x3d07f7:0x252,_0x439189:0x24b,_0x4d7a25:0x22f,_0x29b553:0x253,_0x4790f6:0x24e,_0x385c3d:0x242,_0x41183e:0x215,_0x51ad5c:0x1d9,_0x6813e3:0x1ff,_0x3b3300:0x26a,_0x1d808b:0x250,_0x4b6a4f:0x24f,_0x3bf241:0x24d},_0x39217d=_0x57a12c,_0x45516d={'tlsXm':_0x39217d(_0x504964._0x597577),'jnjSu':function(_0x2953ed,_0x2f4164){return _0x2953ed!==_0x2f4164;},'hIjjk':function(_0x1384cc,_0x4f4504){return _0x1384cc in _0x4f4504;}},_0x2b80bf=Array[_0x39217d(_0x504964._0x3d07f7)](_0x3edda8)?_0x3edda8:[_0x3edda8],_0xd620bf=[];for(const _0x354411 of _0x2b80bf){if(!_0x354411||typeof _0x354411!==_0x45516d[_0x39217d(_0x504964._0x439189)])continue;if(_0x354411[_0x39217d(_0x504964._0x4d7a25)]!==_0x39217d(_0x504964._0x29b553)||_0x45516d[_0x39217d(_0x504964._0x4790f6)](typeof _0x354411[_0x39217d(_0x504964._0x385c3d)],_0x39217d(_0x504964._0x41183e))||!_0x354411[_0x39217d(_0x504964._0x385c3d)])continue;_0xd620bf[_0x39217d(_0x504964._0x51ad5c)]({'type':_0x39217d(_0x504964._0x6813e3),'action':_0x45516d[_0x39217d(_0x504964._0x3b3300)]('id',_0x354411)?_0x39217d(_0x504964._0x1d808b):_0x39217d(_0x504964._0x4b6a4f),'name':(0x234e*-0x1+0x1189+-0x1*-0x11c5,naming_1[_0x39217d(_0x504964._0x3bf241)])(_0x354411[_0x39217d(_0x504964._0x385c3d)])});}return _0xd620bf;}function trpcHits(_0x12f4c3,_0x1cd7a5,_0x3760be){const _0x392bf2={_0x1c66e7:0x23d,_0x2c68a2:0x218,_0x51c448:0x20b,_0x4f2c46:0x1f6,_0x4a405d:0x1e5,_0x2d56f8:0x225,_0x3e01af:0x1eb,_0x3a918f:0x20b,_0xd779f:0x226,_0x49b10d:0x25c,_0x200050:0x216,_0x497f04:0x209,_0x520b0f:0x1ef,_0x5bd7d6:0x24a,_0x47dcf4:0x213,_0x328804:0x1dc,_0x2cc1a4:0x232},_0x2ecde4=_0x57a12c,_0x5dd0fe={'AyNiV':_0x2ecde4(_0x392bf2._0x1c66e7)},_0x14ea14=_0x12f4c3[_0x2ecde4(_0x392bf2._0x2c68a2)]('/')[_0x2ecde4(_0x392bf2._0x51c448)](Boolean),_0x2f4aca=_0x14ea14[_0x2ecde4(_0x392bf2._0x4f2c46)+_0x2ecde4(_0x392bf2._0x4a405d)](_0x5dd0fe[_0x2ecde4(_0x392bf2._0x2d56f8)]);if(_0x2f4aca===-(-0x4e7+-0x52a+0xa12*0x1)||_0x2f4aca!==_0x14ea14[_0x2ecde4(_0x392bf2._0x3e01af)]-(-0x1*0x1430+0x22ee+-0xebc))return[];let _0x18f192=_0x14ea14[_0x2f4aca+(-0x87b*-0x2+0x2d7*-0x9+0x89a)];try{_0x18f192=decodeURIComponent(_0x18f192);}catch{}const _0x25feff=_0x18f192[_0x2ecde4(_0x392bf2._0x2c68a2)](',')[_0x2ecde4(_0x392bf2._0x3a918f)](_0x1b6c36=>/^[A-Za-z0-9_.-]+$/[_0x2ecde4(0x23f)](_0x1b6c36));if(!_0x25feff[_0x2ecde4(_0x392bf2._0x3e01af)])return[];const _0x418a14=contentType(_0x3760be)[_0x2ecde4(_0x392bf2._0xd779f)+'th'](_0x2ecde4(_0x392bf2._0x49b10d)+_0x2ecde4(_0x392bf2._0x200050)+'m')?_0x2ecde4(_0x392bf2._0x497f04)+_0x2ecde4(_0x392bf2._0x520b0f):_0x1cd7a5===_0x2ecde4(_0x392bf2._0x5bd7d6)?_0x2ecde4(_0x392bf2._0x47dcf4):_0x2ecde4(_0x392bf2._0x328804);return _0x25feff[_0x2ecde4(_0x392bf2._0x2cc1a4)](_0x2fc150=>({'type':_0x2ecde4(0x1ff),'action':_0x418a14,'name':(-0x67*-0x55+0x17bf+-0x39f2*0x1,naming_1[_0x2ecde4(0x24d)])(_0x2fc150)}));}function isGrpcOverHttp(_0x2ec739,_0x510752){const _0x27af1a={_0x4adb02:0x234,_0x45e8f7:0x201,_0x5b6abc:0x1f3,_0x29e5ee:0x245,_0x2c91cd:0x21a,_0x27bd4f:0x1d2,_0x18b88d:0x1ed,_0x370ae9:0x226,_0x5b3305:0x224,_0x10d9c6:0x21d,_0x35963c:0x1ce,_0x553ff1:0x1db,_0x135353:0x25e,_0x3d3296:0x23f,_0x481410:0x23f},_0x5a3f97=_0x57a12c,_0x5b0f53={'JZopM':_0x5a3f97(_0x27af1a._0x4adb02)+_0x5a3f97(_0x27af1a._0x45e8f7)+_0x5a3f97(_0x27af1a._0x5b6abc)},_0x5ec445=header(_0x2ec739,_0x5a3f97(_0x27af1a._0x29e5ee)+_0x5a3f97(_0x27af1a._0x2c91cd))[_0x5a3f97(_0x27af1a._0x27bd4f)+_0x5a3f97(_0x27af1a._0x18b88d)](),_0x31ad9a=_0x5ec445[_0x5a3f97(_0x27af1a._0x370ae9)+'th'](_0x5a3f97(_0x27af1a._0x5b3305)+_0x5a3f97(_0x27af1a._0x10d9c6))||_0x5ec445[_0x5a3f97(_0x27af1a._0x370ae9)+'th'](_0x5a3f97(_0x27af1a._0x5b3305)+_0x5a3f97(_0x27af1a._0x35963c)+_0x5a3f97(_0x27af1a._0x553ff1))||header(_0x2ec739,_0x5b0f53[_0x5a3f97(_0x27af1a._0x135353)])!==''&&/^application\/(proto|json)/[_0x5a3f97(_0x27af1a._0x3d3296)](_0x5ec445);return _0x31ad9a&&/^\/[A-Za-z0-9_.]+\/[A-Za-z0-9_]+$/[_0x5a3f97(_0x27af1a._0x481410)](_0x510752);}function graphqlHits(_0x4788e6){const _0x5ea182={_0x395266:0x252,_0x1f26a9:0x232,_0xe715e5:0x20b,_0x59ab16:0x1eb,_0x11f6a5:0x1eb},_0x56dbc=_0x57a12c,_0xfae2fe=Array[_0x56dbc(_0x5ea182._0x395266)](_0x4788e6)?_0x4788e6:[_0x4788e6],_0x4d25b6=_0xfae2fe[_0x56dbc(_0x5ea182._0x1f26a9)](graphqlHit)[_0x56dbc(_0x5ea182._0xe715e5)](_0x57a62a=>!!_0x57a62a);return _0x4d25b6[_0x56dbc(_0x5ea182._0x59ab16)]===_0xfae2fe[_0x56dbc(_0x5ea182._0x11f6a5)]?_0x4d25b6:[];}function graphqlHit(_0x4003db){const _0x50d813={_0x33fbe6:0x23b,_0x16250f:0x1cf,_0x12756a:0x252,_0x3ef6b4:0x215,_0x57282a:0x254,_0x153d98:0x268,_0x5cfe6f:0x1e9,_0x5083cd:0x215,_0x566cd0:0x221,_0x36b665:0x237,_0x4f2c28:0x1e6,_0xfb0776:0x203,_0x65689e:0x1da,_0x2480bc:0x1ed,_0x3d7dc8:0x24d},_0x4b0ce6=_0x57a12c,_0x2f365e={'hrdho':_0x4b0ce6(_0x50d813._0x33fbe6)};if(!_0x4003db||typeof _0x4003db!==_0x2f365e[_0x4b0ce6(_0x50d813._0x16250f)]||Array[_0x4b0ce6(_0x50d813._0x12756a)](_0x4003db))return null;const {query:_0x46e158,operationName:_0x188848}=_0x4003db;if(typeof _0x46e158!==_0x4b0ce6(_0x50d813._0x3ef6b4))return null;const _0x545dbc=GRAPHQL_DOC[_0x4b0ce6(_0x50d813._0x57282a)](_0x46e158[_0x4b0ce6(_0x50d813._0x153d98)](/#[^\n]*/g,'')[_0x4b0ce6(_0x50d813._0x5cfe6f)]());if(!_0x545dbc)return null;const _0x4c741a=typeof _0x188848===_0x4b0ce6(_0x50d813._0x5083cd)&&_0x188848?_0x188848:_0x545dbc[0x1082+0x18c8+0x1*-0x2948]||_0x4b0ce6(_0x50d813._0x566cd0)+_0x4b0ce6(_0x50d813._0x36b665);return{'type':_0x4b0ce6(_0x50d813._0x4f2c28),'action':(_0x545dbc[-0xb96+0x25b2+-0x1a1b]||_0x4b0ce6(_0x50d813._0xfb0776))[_0x4b0ce6(_0x50d813._0x65689e)+_0x4b0ce6(_0x50d813._0x2480bc)](),'name':(-0x23e3+0x1*0x18f9+0xaea,naming_1[_0x4b0ce6(_0x50d813._0x3d7dc8)])(_0x4c741a)};}function bodyOf(_0x356dc2,_0x45291c){const _0x4e0a69={_0x1c0336:0x256,_0x213e94:0x215,_0x112696:0x1e4,_0x431bed:0x215,_0x49b5e0:0x1fe,_0x3e93a9:0x223,_0x57ffc5:0x22d,_0x6025c5:0x245,_0x2deb05:0x21a,_0x11058e:0x1d2,_0x26acff:0x1ed,_0x2acaa9:0x226,_0x158378:0x224,_0x3a388a:0x20e,_0x354915:0x1ee,_0x4a8768:0x1e3},_0x3bc5fa=_0x57a12c,_0x2675e2={'lsXtn':function(_0x1d7157,_0xcd9371,_0x55af11){return _0x1d7157(_0xcd9371,_0x55af11);}},_0x2140ac=_0x356dc2[_0x3bc5fa(_0x4e0a69._0x1c0336)];if(_0x2140ac!==undefined&&typeof _0x2140ac!==_0x3bc5fa(_0x4e0a69._0x213e94)&&!Buffer[_0x3bc5fa(_0x4e0a69._0x112696)](_0x2140ac))return _0x2140ac;const _0x50e7fe=typeof _0x2140ac===_0x3bc5fa(_0x4e0a69._0x431bed)?_0x2140ac:Buffer[_0x3bc5fa(_0x4e0a69._0x112696)](_0x2140ac)?_0x2140ac[_0x3bc5fa(_0x4e0a69._0x49b5e0)](_0x3bc5fa(_0x4e0a69._0x3e93a9)):_0x45291c?.();if(!_0x50e7fe)return _0x2140ac;if(_0x2675e2[_0x3bc5fa(_0x4e0a69._0x57ffc5)](header,_0x356dc2,_0x3bc5fa(_0x4e0a69._0x6025c5)+_0x3bc5fa(_0x4e0a69._0x2deb05))[_0x3bc5fa(_0x4e0a69._0x11058e)+_0x3bc5fa(_0x4e0a69._0x26acff)]()[_0x3bc5fa(_0x4e0a69._0x2acaa9)+'th'](_0x3bc5fa(_0x4e0a69._0x158378)+_0x3bc5fa(_0x4e0a69._0x3a388a)+_0x3bc5fa(_0x4e0a69._0x354915)))return{'query':_0x50e7fe};try{return JSON[_0x3bc5fa(_0x4e0a69._0x4a8768)](_0x50e7fe);}catch{return _0x2140ac;}}function graphqlFromUrl(_0x3b008b){const _0x1c53b9={_0x4be6d0:0x20a,_0x3f6d66:0x25f,_0x33ef08:0x20d,_0x5c9ee3:0x203,_0xfaf4d8:0x222,_0x2b148a:0x1f5},_0x176af0=_0x57a12c,_0x1c4745=_0x3b008b?.[_0x176af0(_0x1c53b9._0x4be6d0)]('?')??-(0x101b+-0x5*0x69f+-0x1101*-0x1);if(_0x1c4745===-(-0x13bb*-0x1+0x4bc+-0x1876))return undefined;const _0x4379bf=new URLSearchParams(_0x3b008b[_0x176af0(_0x1c53b9._0x3f6d66)](_0x1c4745+(-0x1209+-0x237c+-0x20f*-0x1a))),_0x3b6276=_0x4379bf[_0x176af0(_0x1c53b9._0x33ef08)](_0x176af0(_0x1c53b9._0x5c9ee3));return _0x3b6276?{'query':_0x3b6276,'operationName':_0x4379bf[_0x176af0(_0x1c53b9._0x33ef08)](_0x176af0(_0x1c53b9._0xfaf4d8)+_0x176af0(_0x1c53b9._0x2b148a))??undefined}:undefined;}function _0x13b6(_0xcbc2a5,_0x5ae1b2){_0xcbc2a5=_0xcbc2a5-(-0x67*0x9+0xe*-0xb0+-0x1ac*-0x9);const _0x54e366=_0x3145();let _0x5ae1d8=_0x54e366[_0xcbc2a5];if(_0x13b6['GPGpOv']===undefined){var _0x387703=function(_0x42d3fd){const _0x25e51c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xff0e07='',_0x170244='';for(let _0x5e7d95=-0x1b1d+0x1a06+-0x1*-0x117,_0x5a2397,_0x5d7e81,_0xcdc9d0=0x4b*-0x71+0xe62*0x1+-0x12b9*-0x1;_0x5d7e81=_0x42d3fd['charAt'](_0xcdc9d0++);~_0x5d7e81&&(_0x5a2397=_0x5e7d95%(-0x1ebe+-0x10b4+0x2f76)?_0x5a2397*(-0x13*-0x4f+0x6a9+-0x1*0xc46)+_0x5d7e81:_0x5d7e81,_0x5e7d95++%(0x8c1*-0x1+0x3a*-0x1b+-0x1*-0xee3))?_0xff0e07+=String['fromCharCode'](0xbdb*-0x1+-0x3cd+0x93*0x1d&_0x5a2397>>(-(-0x1b04+0x34e+0x17b8)*_0x5e7d95&-0x1*-0x568+-0x38f+-0x1d3)):-0x175e+-0xc09+0x2367){_0x5d7e81=_0x25e51c['indexOf'](_0x5d7e81);}for(let _0x35ab0a=0x1b0+-0x171c+0x3*0x724,_0x359610=_0xff0e07['length'];_0x35ab0a<_0x359610;_0x35ab0a++){_0x170244+='%'+('00'+_0xff0e07['charCodeAt'](_0x35ab0a)['toString'](-0x133b+0x1c69*0x1+0x30a*-0x3))['slice'](-(-0x723*0x1+0x18a4*-0x1+0x1fc9));}return decodeURIComponent(_0x170244);};_0x13b6['kktfyQ']=_0x387703,_0x13b6['ovJrUu']={},_0x13b6['GPGpOv']=!![];}const _0x5616c4=_0x54e366[0x348+0xa34*0x3+-0x21e4];_0x13b6['wzxiOC']!==_0x5616c4&&(_0x13b6['ovJrUu']={},_0x13b6['wzxiOC']=_0x5616c4);const _0x4cbb2b=_0x13b6['ovJrUu'][_0xcbc2a5];return _0x4cbb2b===undefined?(_0x5ae1d8=_0x13b6['kktfyQ'](_0x5ae1d8),_0x13b6['ovJrUu'][_0xcbc2a5]=_0x5ae1d8):_0x5ae1d8=_0x4cbb2b,_0x5ae1d8;}function staticName(_0x1e869d,_0x1210ec,_0x16da85){const _0x4793a8={_0x33efed:0x25f,_0x1ec70f:0x1f6,_0x4ab2dd:0x1e5,_0x477d9b:0x202,_0x469676:0x231,_0x59f14c:0x1f9},_0x1c2453=_0x57a12c,_0x39257f=_0x1e869d[_0x1c2453(_0x4793a8._0x33efed)](-0x1*0x14e3+-0x1c4+0x1*0x16a7,_0x1e869d[_0x1c2453(_0x4793a8._0x1ec70f)+_0x1c2453(_0x4793a8._0x4ab2dd)]('/')),_0x173a28=_0x39257f?_0x1210ec[_0x1c2453(_0x4793a8._0x477d9b)](_0x39257f,'',_0x16da85):'/';return _0x173a28==='/'?_0x1c2453(_0x4793a8._0x469676):_0x173a28+_0x1c2453(_0x4793a8._0x59f14c);}function wantsHtml(_0x3bfc1c){const _0xd16263={_0x3d19d1:0x251,_0x59022d:0x269,_0x553832:0x1d2,_0x17f7d9:0x1ed,_0x4796e5:0x204,_0x1e7f2b:0x1d8,_0x8312d3:0x263,_0xdac3f8:0x20f,_0x4ac8ee:0x240,_0x396f64:0x1ed,_0x5829c1:0x228},_0x2d4165=_0x57a12c,_0x5abe2a={'galvJ':function(_0x549f94,_0x6be421,_0xb53aeb){return _0x549f94(_0x6be421,_0xb53aeb);},'RRmzi':_0x2d4165(_0xd16263._0x3d19d1)};return header(_0x3bfc1c,_0x2d4165(_0xd16263._0x59022d))[_0x2d4165(_0xd16263._0x553832)+_0x2d4165(_0xd16263._0x17f7d9)]()[_0x2d4165(_0xd16263._0x4796e5)](_0x2d4165(_0xd16263._0x1e7f2b)+'l')||_0x5abe2a[_0x2d4165(_0xd16263._0x8312d3)](header,_0x3bfc1c,_0x2d4165(_0xd16263._0xdac3f8)+_0x2d4165(_0xd16263._0x4ac8ee))[_0x2d4165(_0xd16263._0x553832)+_0x2d4165(_0xd16263._0x396f64)]()===_0x5abe2a[_0x2d4165(_0xd16263._0x5829c1)];}function isStatic(_0xe08223){const _0x4aa030={_0x24622e:0x23f,_0x5ee754:0x226,_0x573a66:0x21f,_0x3cba0f:0x249},_0x185246=_0x57a12c;return STATIC_FILE[_0x185246(_0x4aa030._0x24622e)](_0xe08223)||_0xe08223[_0x185246(_0x4aa030._0x5ee754)+'th'](_0x185246(_0x4aa030._0x573a66)+_0x185246(_0x4aa030._0x3cba0f));}function classifyRequest(_0x269256,_0x57e830,_0x16675e,_0x161440,_0x5a0b04=_0x269256[_0x57a12c(0x1e0)],_0x24d4f6){const _0x1f8ad5={_0x3e8bfd:0x1fd,_0x127ceb:0x25c,_0x27a4e4:0x216,_0x2470d7:0x242,_0x380b19:0x24a,_0xedd379:0x1da,_0x35c5f3:0x1ed,_0x572e38:0x265,_0x51c5c7:0x1cd,_0x182014:0x1d0,_0x11be24:0x204,_0x33b728:0x217,_0x53b53f:0x244,_0x3fdfc5:0x226,_0x5cd752:0x244,_0x11f71c:0x264,_0x27f365:0x206,_0x49a7b7:0x235,_0x1b975d:0x21e,_0x2c8eb7:0x1d6,_0xdca194:0x259,_0x4cbd6d:0x243,_0x2b10bf:0x266,_0x1992ea:0x21a,_0x520eea:0x222,_0x5dae46:0x243,_0x19b1c2:0x21a,_0x536202:0x250,_0x25282e:0x229,_0x3259ba:0x20c,_0x5b47ae:0x22e,_0x2b8ebc:0x208,_0x1761b1:0x1ff,_0x38efa3:0x23e,_0x442267:0x1eb,_0x448de0:0x214,_0x31ac54:0x250,_0x518676:0x24d,_0x45d43f:0x25f,_0x435f52:0x1e1,_0x940c13:0x230,_0x3c3465:0x1dd,_0x39d3a5:0x260,_0x379757:0x205,_0x20cbd2:0x211,_0x535bb7:0x1f8,_0x57e6de:0x1f1,_0x890cf3:0x1f4,_0x4c3925:0x226,_0x1a9d3d:0x1d8,_0xa378e9:0x1d6,_0x42bbe1:0x1ea,_0xe897d5:0x1d7,_0x2e176f:0x233},_0x204b7e=_0x57a12c,_0x5a4f39={'leIbj':function(_0x4a9987,_0x23e19d,_0x2021a4){return _0x4a9987(_0x23e19d,_0x2021a4);},'hSmyO':function(_0x2266e9,_0x466928){return _0x2266e9<_0x466928;},'iQbnT':function(_0x3a31c1,_0x3178eb,_0x16a801,_0x400f60){return _0x3a31c1(_0x3178eb,_0x16a801,_0x400f60);},'KQHYg':function(_0x1467c8,_0x3e6073){return _0x1467c8===_0x3e6073;},'BvWVX':function(_0x2e7d3c,_0x5a09a2,_0x52c93d,_0x172754){return _0x2e7d3c(_0x5a09a2,_0x52c93d,_0x172754);},'IUZlR':_0x204b7e(_0x1f8ad5._0x3e8bfd),'ajAay':_0x204b7e(_0x1f8ad5._0x127ceb)+_0x204b7e(_0x1f8ad5._0x27a4e4)+'m','hmETy':function(_0x6cb53c,_0x239fd5){return _0x6cb53c(_0x239fd5);}};try{const _0x405e32=(_0x269256[_0x204b7e(_0x1f8ad5._0x2470d7)]??_0x204b7e(_0x1f8ad5._0x380b19))[_0x204b7e(_0x1f8ad5._0xedd379)+_0x204b7e(_0x1f8ad5._0x35c5f3)](),_0xcff31e=(-0xb3f+-0x1*0xe3b+0x197a,naming_1[_0x204b7e(_0x1f8ad5._0x572e38)+'ry'])(_0x5a0b04??'/')||'/';if(_0x16675e[_0x204b7e(_0x1f8ad5._0x51c5c7)][_0x204b7e(_0x1f8ad5._0x182014)][_0x204b7e(_0x1f8ad5._0x11be24)](_0x405e32))return[];if(skipped(_0x269256,_0xcff31e,_0x16675e)||isPrefetch(_0x269256)||_0x5a4f39[_0x204b7e(_0x1f8ad5._0x33b728)](isNextNavigation,_0x269256,_0xcff31e))return[];if(_0xcff31e===_0x204b7e(_0x1f8ad5._0x53b53f)+'io'||_0xcff31e[_0x204b7e(_0x1f8ad5._0x3fdfc5)+'th'](_0x204b7e(_0x1f8ad5._0x5cd752)+_0x204b7e(_0x1f8ad5._0x11f71c)))return[];const _0x35a0f7=overrideHit(_0x269256,_0x16675e);if(_0x35a0f7)return finish([_0x35a0f7],_0x16675e,_0x161440);const _0x65be91=(-0x1*0x24fe+0xfb8+-0x30a*-0x7,naming_1[_0x204b7e(_0x1f8ad5._0x27f365)+_0x204b7e(_0x1f8ad5._0x49a7b7)])(_0x269256),_0x467042=_0x5a4f39[_0x204b7e(_0x1f8ad5._0x1b975d)](_0x57e830[_0x204b7e(_0x1f8ad5._0x2c8eb7)+'de'],0x1*-0x12e3+0x1b31+-0x6be),_0x23ac28=()=>_0x65be91??_0x161440[_0x204b7e(0x202)](_0xcff31e,'',_0x467042),_0x14691e=(_0x51deed,_0x5be2a2,_0x152914)=>finish([{'type':_0x51deed,'action':_0x5be2a2,'name':_0x152914}],_0x16675e,_0x161440),_0xd987dd=_0x16675e[_0x204b7e(_0x1f8ad5._0xdca194)][_0x204b7e(_0x1f8ad5._0x4cbd6d)](_0x4c9344=>(-0xfdf+-0x961*-0x3+0x5*-0x274,naming_1[_0x204b7e(0x22b)+'h'])(_0x4c9344[_0x204b7e(0x1f0)],_0xcff31e));if(_0xd987dd)return _0x5a4f39[_0x204b7e(_0x1f8ad5._0x2b10bf)](_0x14691e,_0xd987dd[_0x204b7e(_0x1f8ad5._0x1992ea)],_0x405e32,_0x23ac28());const _0xcb44fc=bodyOf(_0x269256,_0x24d4f6),_0x196192=_0x16675e[_0x204b7e(_0x1f8ad5._0x520eea)+'ns'][_0x204b7e(_0x1f8ad5._0x5dae46)](_0x47d768=>(0x1364+0x2289*0x1+0x37*-0xfb,naming_1[_0x204b7e(0x22b)+'h'])(_0x47d768[_0x204b7e(0x1f0)],_0xcff31e));if(_0x196192)return _0x14691e(_0x196192[_0x204b7e(_0x1f8ad5._0x19b1c2)],_0x204b7e(_0x1f8ad5._0x536202),operationName(_0x196192[_0x204b7e(_0x1f8ad5._0x25282e)],_0xcb44fc));if(_0x405e32===_0x204b7e(_0x1f8ad5._0x3259ba)&&_0x5a4f39[_0x204b7e(_0x1f8ad5._0x33b728)](header,_0x269256,_0x204b7e(_0x1f8ad5._0x5b47ae)+_0x204b7e(_0x1f8ad5._0x2b8ebc)))return _0x14691e(_0x204b7e(_0x1f8ad5._0x1761b1),_0x204b7e(_0x1f8ad5._0x38efa3),_0x23ac28());const _0x5b6116=trpcHits(_0xcff31e,_0x405e32,_0x57e830);if(_0x5b6116[_0x204b7e(_0x1f8ad5._0x442267)])return finish(_0x5b6116,_0x16675e,_0x161440);if(_0x405e32===_0x204b7e(_0x1f8ad5._0x3259ba)&&isGrpcOverHttp(_0x269256,_0xcff31e))return _0x14691e(_0x204b7e(_0x1f8ad5._0x448de0),_0x204b7e(_0x1f8ad5._0x31ac54),(-0x1*0x122c+0xbe9*0x1+0x643,naming_1[_0x204b7e(_0x1f8ad5._0x518676)])(_0xcff31e[_0x204b7e(_0x1f8ad5._0x45d43f)](-0x2*-0xac5+-0x21d8+0xc4f)));const _0x5be466=rpcHits(_0xcb44fc);if(_0x5be466[_0x204b7e(_0x1f8ad5._0x442267)])return finish(_0x5be466,_0x16675e,_0x161440);const _0x1c8af0=graphqlHits(_0x405e32===_0x204b7e(_0x1f8ad5._0x380b19)?graphqlFromUrl(_0x5a0b04):_0xcb44fc);if(_0x1c8af0[_0x204b7e(_0x1f8ad5._0x442267)])return finish(_0x1c8af0,_0x16675e,_0x161440);if(_0x5a4f39[_0x204b7e(_0x1f8ad5._0x435f52)](_0x57e830[_0x204b7e(_0x1f8ad5._0x2c8eb7)+'de'],0x2096+-0xa92+-0x1470)&&_0x65be91===undefined)return _0x5a4f39[_0x204b7e(_0x1f8ad5._0x940c13)](_0x14691e,_0x5a4f39[_0x204b7e(_0x1f8ad5._0x3c3465)],_0x405e32,_0x204b7e(_0x1f8ad5._0x39d3a5)+_0x204b7e(_0x1f8ad5._0x379757));const _0x161ed3=contentType(_0x57e830);if(_0x161ed3[_0x204b7e(_0x1f8ad5._0x3fdfc5)+'th'](_0x5a4f39[_0x204b7e(_0x1f8ad5._0x20cbd2)]))return _0x14691e(_0x204b7e(_0x1f8ad5._0x535bb7),_0x405e32,_0x23ac28());if(isStatic(_0xcff31e))return _0x16675e[_0x204b7e(_0x1f8ad5._0x57e6de)][_0x204b7e(_0x1f8ad5._0x890cf3)]?_0x14691e(_0x204b7e(_0x1f8ad5._0x890cf3),_0x405e32,staticName(_0xcff31e,_0x161440,_0x467042)):[];const _0x2ec4d9=_0x161ed3[_0x204b7e(_0x1f8ad5._0x4c3925)+'th'](_0x204b7e(_0x1f8ad5._0x1a9d3d)+'l')&&(_0x57e830[_0x204b7e(_0x1f8ad5._0xa378e9)+'de']<-0x1cab+0x11ac+0xc8f||_0x5a4f39[_0x204b7e(_0x1f8ad5._0x42bbe1)](wantsHtml,_0x269256));if(_0x2ec4d9||!_0x161ed3&&wantsHtml(_0x269256))return _0x14691e(_0x204b7e(_0x1f8ad5._0xe897d5),_0x405e32,_0x23ac28());return _0x14691e(_0x204b7e(_0x1f8ad5._0x2e176f),_0x405e32,_0x23ac28());}catch{return[];}}function classifyUpgrade(_0x2bed73,_0xee25c9,_0x130368){const _0x58dbcc={_0x3eb55d:0x25d,_0x542ef3:0x1d2,_0x241b7e:0x1ed,_0xca65f1:0x212,_0x412b6a:0x265,_0x20d241:0x1e0,_0x10a68:0x226,_0x282ada:0x26e,_0x217474:0x247,_0x3ce345:0x21b,_0x27e848:0x202},_0x43f8c8=_0x57a12c;try{if(header(_0x2bed73,_0x43f8c8(_0x58dbcc._0x3eb55d))[_0x43f8c8(_0x58dbcc._0x542ef3)+_0x43f8c8(_0x58dbcc._0x241b7e)]()!==_0x43f8c8(_0x58dbcc._0xca65f1)+'t')return[];const _0x49fef2=(-0x1088+-0x22a+0x12b2,naming_1[_0x43f8c8(_0x58dbcc._0x412b6a)+'ry'])(_0x2bed73[_0x43f8c8(_0x58dbcc._0x20d241)]??'/')||'/';if(skipped(_0x2bed73,_0x49fef2,_0xee25c9)||_0x49fef2[_0x43f8c8(_0x58dbcc._0x10a68)+'th'](_0x43f8c8(_0x58dbcc._0x282ada)))return[];return finish([{'type':_0x43f8c8(_0x58dbcc._0x217474),'action':_0x43f8c8(_0x58dbcc._0x3ce345),'name':_0x130368[_0x43f8c8(_0x58dbcc._0x27e848)](_0x49fef2)}],_0xee25c9,_0x130368);}catch{return[];}}
@@ -0,0 +1,3 @@
1
+ import type { Socket } from "node:net";
2
+ export declare const wsNames: WeakMap<Socket, string>;
3
+ export declare function installHttpHooks(): void;
@@ -0,0 +1 @@
1
+ 'use strict';const _0x1bd892=_0x446f;(function(_0xf4dd8,_0x3658ed){const _0x2759f5={_0x233522:0x16a,_0x1e9e20:0x194,_0x2c4fb1:0x160,_0x60237a:0x169,_0x4d7fcd:0x187,_0x3b7ede:0x15f,_0x251fcd:0x17e,_0x1fb97e:0x17a,_0x2c9773:0x163},_0xf91dea=_0x446f,_0x336bdf=_0xf4dd8();while(!![]){try{const _0x129584=-parseInt(_0xf91dea(_0x2759f5._0x233522))/(0x22*-0xc6+-0x2*-0x133+0x17e7*0x1)+-parseInt(_0xf91dea(_0x2759f5._0x1e9e20))/(0x181+0x263d+0x1*-0x27bc)+parseInt(_0xf91dea(_0x2759f5._0x2c4fb1))/(0x1ce*-0xa+-0x1ad2*-0x1+0x8c3*-0x1)+-parseInt(_0xf91dea(_0x2759f5._0x60237a))/(0xbab+0xa07+-0x15ae)*(-parseInt(_0xf91dea(_0x2759f5._0x4d7fcd))/(0x1c7a*-0x1+0x1ad7+-0x4*-0x6a))+parseInt(_0xf91dea(_0x2759f5._0x3b7ede))/(-0x322*0x5+-0x186d+-0x3*-0xd5f)+parseInt(_0xf91dea(_0x2759f5._0x251fcd))/(0x3e1+-0x1d59+0x197f)+parseInt(_0xf91dea(_0x2759f5._0x1fb97e))/(-0xf*-0x247+0x1fba+0x1*-0x41db)*(parseInt(_0xf91dea(_0x2759f5._0x2c9773))/(-0x1bc9+0x145*-0x1a+0x3cd4));if(_0x129584===_0x3658ed)break;else _0x336bdf['push'](_0x336bdf['shift']());}catch(_0x301373){_0x336bdf['push'](_0x336bdf['shift']());}}}(_0x1914,0xba55c*-0x2+0x457d*-0x6c+0x439d4c));var __importDefault=this&&this[_0x1bd892(0x156)+_0x1bd892(0x175)]||function(_0x3aaa73){const _0xe68b0a={_0x30987e:0x176},_0x46ee1f=_0x1bd892;return _0x3aaa73&&_0x3aaa73[_0x46ee1f(_0xe68b0a._0x30987e)+'le']?_0x3aaa73:{'default':_0x3aaa73};};Object[_0x1bd892(0x154)+_0x1bd892(0x196)](exports,_0x1bd892(0x176)+'le',{'value':!![]}),exports[_0x1bd892(0x17b)]=void(-0x12a2+0x31b*-0x4+0x4b*0x6a),exports[_0x1bd892(0x180)+_0x1bd892(0x16f)]=installHttpHooks;const node_http_1=__importDefault(require('node:http')),node_http2_1=__importDefault(require('node:http2')),node_https_1=__importDefault(require('node:https')),state_1=require('../state'),logger_1=require('../logger'),classify_1=require('./classify'),naming_1=require('./naming'),patch_1=require('./patch'),record_1=require('./record'),capture_1=require('./capture'),samples_1=require('./samples'),dashboard_1=require('../dashboard'),views_1=require('./views'),sites_1=require('./sites'),announce_1=require('../dashboard/announce');exports[_0x1bd892(0x17b)]=new WeakMap();function onRequest(_0x15bb46,_0x25f618){const _0x5b5293={_0x4b7bd8:0x161,_0x283273:0x17f,_0x2bc5dc:0x170,_0xea54bf:0x16e,_0x91f5f4:0x15d,_0x51a2bd:0x170,_0x23cb4d:0x19e,_0x5bcf66:0x195,_0x1598c:0x167,_0x275ad3:0x157},_0x14f9a4={_0x431545:0x17f,_0x20232f:0x170,_0x4b26c9:0x19f,_0x40fe11:0x190,_0x1ad56a:0x192,_0x1d7547:0x18f,_0x57416c:0x162,_0x1e00d9:0x178,_0x2a09b5:0x18a,_0x151a8a:0x15e,_0x1d8c06:0x18c,_0x376864:0x159,_0x4221fb:0x165,_0x7276f7:0x198,_0x224ef6:0x164},_0x3fe7cf=_0x1bd892,_0x27e86e={'gGCCo':_0x3fe7cf(_0x5b5293._0x4b7bd8)+'k'};if(!(-0x11e4+0x3fe+0x251*0x6,state_1[_0x3fe7cf(_0x5b5293._0x283273)+_0x3fe7cf(_0x5b5293._0x2bc5dc)])())return;const _0x68b28f=Date[_0x3fe7cf(_0x5b5293._0xea54bf)](),_0x327b27=_0x15bb46[_0x3fe7cf(_0x5b5293._0x91f5f4)],_0x8fdb38=!!(-0x1b98+-0x13c*0x3+0x1f4c,state_1[_0x3fe7cf(_0x5b5293._0x283273)+_0x3fe7cf(_0x5b5293._0x51a2bd)])()?.[_0x3fe7cf(_0x5b5293._0x23cb4d)+'d'],_0x694176=(-0x1c4f+0x35b*0x6+0x82d,capture_1[_0x3fe7cf(_0x5b5293._0x5bcf66)])(_0x15bb46,_0x25f618,_0x8fdb38);_0x25f618[_0x3fe7cf(_0x5b5293._0x1598c)](_0x3fe7cf(_0x5b5293._0x275ad3),()=>{const _0x324b96=_0x3fe7cf;try{const _0x233bee=(-0x1832+-0x1a7c+0x32ae,state_1[_0x324b96(_0x14f9a4._0x431545)+_0x324b96(_0x14f9a4._0x20232f)])();if(!_0x233bee)return;const _0xdb51f0=(-0x2*-0x4af+-0x49*0x5d+0x1127,classify_1[_0x324b96(_0x14f9a4._0x4b26c9)+_0x324b96(_0x14f9a4._0x40fe11)])(_0x15bb46,_0x25f618,_0x233bee,(0x417*0x4+-0x1*-0xe18+-0x1e74,naming_1[_0x324b96(_0x14f9a4._0x1ad56a)+_0x324b96(_0x14f9a4._0x1d7547)])(),_0x327b27,_0x694176[_0x324b96(_0x14f9a4._0x57416c)]);(-0x8c+0x9*-0x371+0x1f85,record_1[_0x324b96(_0x14f9a4._0x1e00d9)])(_0xdb51f0,_0x25f618[_0x324b96(_0x14f9a4._0x2a09b5)+'de'],_0x68b28f,!![]);if(_0x8fdb38)(0x1c9b+0x1d3*0x15+-0x42ea,samples_1[_0x324b96(_0x14f9a4._0x151a8a)+_0x324b96(_0x14f9a4._0x1d8c06)])(_0x233bee[_0x324b96(_0x14f9a4._0x376864)],_0xdb51f0,_0x15bb46,_0x25f618,_0x327b27??'/',_0x694176,_0x68b28f);}catch(_0x533529){(0x1977+0xbfb*0x2+0x316d*-0x1,logger_1[_0x324b96(_0x14f9a4._0x4221fb)+_0x324b96(_0x14f9a4._0x7276f7)])(_0x27e86e[_0x324b96(_0x14f9a4._0x224ef6)],_0x533529);}});}function onUpgrade(_0x5d2088,_0x1bbc98){const _0x37ef59={_0x244d5c:0x17f,_0x5a1684:0x170,_0x272dd1:0x19f,_0x23d837:0x182,_0x1d443e:0x192,_0x5221dc:0x18f,_0x1beee7:0x177,_0x46afae:0x17b,_0xe2d588:0x18e,_0x2e0b1e:0x171,_0x15c37f:0x178,_0x47f4e7:0x16e},_0x132274=_0x1bd892,_0x577974=(-0xa*-0x335+-0xa7*-0x39+-0x4541*0x1,state_1[_0x132274(_0x37ef59._0x244d5c)+_0x132274(_0x37ef59._0x5a1684)])();if(!_0x577974)return;const _0x253703=(-0x5*-0x53+0x89*-0x1d+-0x2*-0x6f3,classify_1[_0x132274(_0x37ef59._0x272dd1)+_0x132274(_0x37ef59._0x23d837)])(_0x5d2088,_0x577974,(0x1789+0x1ef5+-0x367e,naming_1[_0x132274(_0x37ef59._0x1d443e)+_0x132274(_0x37ef59._0x5221dc)])());if(!_0x253703[_0x132274(_0x37ef59._0x1beee7)])return;exports[_0x132274(_0x37ef59._0x46afae)][_0x132274(_0x37ef59._0xe2d588)](_0x1bbc98,_0x253703[-0x13ed+-0x1*-0x1a91+-0x22*0x32][_0x132274(_0x37ef59._0x2e0b1e)]),(0x790+-0x1184+0x9f4,record_1[_0x132274(_0x37ef59._0x15c37f)])(_0x253703,undefined,Date[_0x132274(_0x37ef59._0x47f4e7)](),!![]);}function _0x1914(){const _0x5d8e86=['BM93','DhrWsg9VA3m','B25MAwC','BMfTzq','C2fUAxrPEMu','C2XPy2u','DhLWzq','rgvMyxvSDa','x19LC01Vzhu','BgvUz3rO','CMvJB3jK','yxbWBgLJyxq','oeHkyMXfDq','D3noyw1LCW','zgvMyxvSDa','CMvXDwvZDa','ntmXnJq1ogruC3Poua','z2v0qxv0B0m','Aw5ZDgfSBeG','t25szxf1zxm','vxbNCMfKzq','z2v0uhjVDg8','r1jqqW','ChjVDg90Exa','C3rYzwfT','mtbTzuLtteu','zw1PDa','yw5UB3vUy2u','C3rHDhvZq28','AgfUzgXLvMK','BgvZ','D3jHCe1LDgG','C2v0','BwvY','uMvXDwvZDa','BgLZDgvUAw4','C2HHCMvKtMe','y3jLyxrLu2u','mZuYodm5ngvZBvneCa','y2fWDhvYzq','B3bLCNr5','u2vYDMvY','z2vfCNjVCG','Aw9Ul2DYCgm','y29UDgvUDc0','DhjHy2S','y3vYzvnLCNy','C2HIB2fYza','zgfZAgjVyxi','y2XHC3nPzNK','AgfUzgXLrge','q0fmta','zgvMAw5Luhi','BgvHCM5tAxq','x19PBxbVCNq','y2XVC2u','zxDZ','ChjLzML4','CNzLCG','wwXqwfi','oNbHDgG','DxjS','A2vLCfnHBxa','mte3mJi4zLzYwwrx','mZGWotq1n3LLD1bxDa','yxv0B1rYywm','yM9KEq','ntaYmdyXnhrdwgHArG','z0Ddq28','Bg9NugfJA2e','C3rHCNrZv2K','B25Jzq','t25mAxn0zw4','mtu5nJaYmhDcz2TzEG','nJu2otK4yM1Kz2vp','BgLTAxq','DhLWzu9M','DxbNCMfKzq'];_0x1914=function(){return _0x5d8e86;};return _0x1914();}function onGrpcStream(_0x3f189c){const _0x418c5a={_0x541098:0x17f,_0x5273c0:0x170,_0x3e025d:0x19b,_0x31d336:0x184,_0x20c2f5:0x19a,_0x1d9185:0x174,_0x1f0f78:0x15c,_0x3fcdbd:0x166,_0x95a597:0x179,_0x5193f8:0x199,_0x1b16d7:0x177,_0x30c20b:0x192,_0x244c77:0x18f,_0x55ce59:0x16b,_0x523537:0x172,_0x208f3e:0x173,_0x39fe11:0x178,_0x45aa05:0x1a1,_0x2ce6e8:0x16e},_0x5c47cb=_0x1bd892,_0x5d0f5d=(-0x1c90+0x7*0x42b+-0x1*0x9d,state_1[_0x5c47cb(_0x418c5a._0x541098)+_0x5c47cb(_0x418c5a._0x5273c0)])();if(!_0x5d0f5d?.[_0x5c47cb(_0x418c5a._0x3e025d)][_0x5c47cb(_0x418c5a._0x31d336)])return;const _0x2f3fcd=String(_0x3f189c[_0x5c47cb(_0x418c5a._0x20c2f5)+_0x5c47cb(_0x418c5a._0x1d9185)]??''),_0x8e57de=String(_0x3f189c[_0x5c47cb(_0x418c5a._0x1f0f78)]??'');if(!_0x2f3fcd[_0x5c47cb(_0x418c5a._0x3fcdbd)+'th'](_0x5c47cb(_0x418c5a._0x95a597)+_0x5c47cb(_0x418c5a._0x5193f8))||_0x8e57de[_0x5c47cb(_0x418c5a._0x1b16d7)]<0x8fe+0x20d1+0xdef*-0x3)return;const _0x5eceeb=(-0x1022+0x8dd+0x745*0x1,naming_1[_0x5c47cb(_0x418c5a._0x30c20b)+_0x5c47cb(_0x418c5a._0x244c77)])()[_0x5c47cb(_0x418c5a._0x55ce59)](_0x5c47cb(_0x418c5a._0x31d336),(-0x74*0x1d+-0x1a54+0x2778,naming_1[_0x5c47cb(_0x418c5a._0x523537)])(_0x8e57de[_0x5c47cb(_0x418c5a._0x208f3e)](-0x1fa3+-0x1982+0x3926)));(0x83*-0x1f+-0x1*0xdee+0x1dcb,record_1[_0x5c47cb(_0x418c5a._0x39fe11)])([{'type':_0x5c47cb(_0x418c5a._0x31d336),'action':_0x5c47cb(_0x418c5a._0x45aa05),'name':_0x5eceeb}],undefined,Date[_0x5c47cb(_0x418c5a._0x2ce6e8)](),!![]);}function onServerEvent(_0xeec937,_0x3c8bc8){const _0x52bc30={_0x28a1be:0x191,_0x38f197:0x189,_0x49c84f:0x168,_0x536983:0x17d,_0x3f82c5:0x155,_0x3c1c80:0x181,_0x4288e9:0x18b,_0x1f99f9:0x158,_0x550814:0x1a0,_0x2abf56:0x19d,_0x51c972:0x16d},_0xecebe9=_0x1bd892;if(_0x3c8bc8[-0x187*0x11+0x231*0x6+0xcd1]===_0xecebe9(_0x52bc30._0x28a1be)+'g')(-0x1*-0x1191+-0x4e1+-0x1d0*0x7,announce_1[_0xecebe9(_0x52bc30._0x38f197)+_0xecebe9(_0x52bc30._0x49c84f)])(_0xeec937);else{if(_0x3c8bc8[-0x4e9+-0x2216+0x26ff]===_0xecebe9(_0x52bc30._0x536983)){(-0x214c+-0x14f6+-0x1b21*-0x2,sites_1[_0xecebe9(_0x52bc30._0x3f82c5)+'e'])(_0x3c8bc8[0x3*-0x9e9+-0x1b70+0x2*0x1c96]),(-0x20ad+0x12*-0x67+0x27eb,announce_1[_0xecebe9(_0x52bc30._0x38f197)+_0xecebe9(_0x52bc30._0x3c1c80)+'t'])(_0x3c8bc8[-0x17af+0x215d+-0x1*0x9ad]);if((0xaf9+0x21e5*0x1+-0x2cde,views_1[_0xecebe9(_0x52bc30._0x4288e9)+_0xecebe9(_0x52bc30._0x1f99f9)])(_0x3c8bc8[0x14*0x130+-0x2268+0xaa9],_0x3c8bc8[0x861+0x829+-0x1088])||(0x910+0x2269+0x2b79*-0x1,dashboard_1[_0xecebe9(_0x52bc30._0x550814)+_0xecebe9(_0x52bc30._0x2abf56)])(_0x3c8bc8[0xd7*-0x9+-0x494*0x3+0x154c],_0x3c8bc8[-0x2*-0x517+-0x2616+0xdf5*0x2]))return!![];onRequest(_0x3c8bc8[-0x9e5+-0x18b4+0x229a],_0x3c8bc8[-0x127d*-0x1+-0x1b65+0x8ea]);}else{if(_0x3c8bc8[-0x70*-0x20+-0xd0f+-0xf1]===_0xecebe9(_0x52bc30._0x51c972))onUpgrade(_0x3c8bc8[-0x268f+0x1313*0x1+-0x1*-0x137d],_0x3c8bc8[0x190a+0x3c1+-0x1cc9]);}}}function _0x446f(_0x3c8229,_0xfba5b9){_0x3c8229=_0x3c8229-(-0xa2+0x1*-0x14e5+-0x1*-0x16db);const _0x1bbbb0=_0x1914();let _0x5f2e3c=_0x1bbbb0[_0x3c8229];if(_0x446f['bBTQvv']===undefined){var _0x4714ff=function(_0x2cfe18){const _0x4d3018='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5d27a9='',_0x4baa5b='';for(let _0x95f9ff=0x17*0xd2+-0x2268+0x66*0x27,_0x641928,_0x427c21,_0x3bdc42=0x1*0xf0f+0x32*0x9b+-0x2d55;_0x427c21=_0x2cfe18['charAt'](_0x3bdc42++);~_0x427c21&&(_0x641928=_0x95f9ff%(0x1123+-0x157*0x12+0xc7*0x9)?_0x641928*(0x1*0x9b9+0x73*0x24+-0x65*0x41)+_0x427c21:_0x427c21,_0x95f9ff++%(0x673+-0x4d7+0x3*-0x88))?_0x5d27a9+=String['fromCharCode'](-0x83e+-0x20b*0x3+0x1*0xf5e&_0x641928>>(-(-0x13*-0x3c+-0x3b*0x4d+-0xd4d*-0x1)*_0x95f9ff&-0x17b1+0x3e*-0x69+-0x3125*-0x1)):-0x3cc+-0x218b+0x2557){_0x427c21=_0x4d3018['indexOf'](_0x427c21);}for(let _0x5f2fa2=0x925*0x1+-0x1cd5+-0xd2*-0x18,_0x599011=_0x5d27a9['length'];_0x5f2fa2<_0x599011;_0x5f2fa2++){_0x4baa5b+='%'+('00'+_0x5d27a9['charCodeAt'](_0x5f2fa2)['toString'](-0x61b*-0x1+-0xfb*-0x2+0x801*-0x1))['slice'](-(0x265c+0x9d2+0x4*-0xc0b));}return decodeURIComponent(_0x4baa5b);};_0x446f['aCDSlT']=_0x4714ff,_0x446f['qxiDck']={},_0x446f['bBTQvv']=!![];}const _0x3baf64=_0x1bbbb0[-0x1513+-0x1*-0xab+-0x1*-0x1468];_0x446f['mHcgjk']!==_0x3baf64&&(_0x446f['qxiDck']={},_0x446f['mHcgjk']=_0x3baf64);const _0xbdb6ee=_0x446f['qxiDck'][_0x3c8229];return _0xbdb6ee===undefined?(_0x5f2e3c=_0x446f['aCDSlT'](_0x5f2e3c),_0x446f['qxiDck'][_0x3c8229]=_0x5f2e3c):_0x5f2e3c=_0xbdb6ee,_0x5f2e3c;}function onHttp2Event(_0x5915e5,_0x153dbf){const _0x22e14d={_0x25342d:0x186},_0x17496c=_0x1bd892;if(_0x153dbf[0x37f*-0x1+0x2468+0x19*-0x151]===_0x17496c(_0x22e14d._0x25342d))onGrpcStream(_0x153dbf[-0x1*0x1e1+-0x6ad+-0x8*-0x112]);}function installHttpHooks(){const _0x5d2af5={_0xbeb86b:0x188,_0x3254c6:0x18d,_0x2d1951:0x17c,_0x174e0f:0x197,_0x2bc464:0x185,_0xf90449:0x15b,_0x3fa153:0x18d,_0x54e0bd:0x185,_0x5c5c29:0x183,_0x4c28b4:0x16c,_0x2a0f8a:0x193,_0x3e769f:0x15a,_0x46424f:0x16c,_0x559ece:0x19c},_0x13c308=_0x1bd892,_0x26c470={'YlPXR':_0x13c308(_0x5d2af5._0xbeb86b)};(0x7*-0x466+-0x2487+0x4351,patch_1[_0x13c308(_0x5d2af5._0x3254c6)+'od'])(node_http_1[_0x13c308(_0x5d2af5._0x2d1951)][_0x13c308(_0x5d2af5._0x174e0f)][_0x13c308(_0x5d2af5._0x2bc464)+'e'],_0x26c470[_0x13c308(_0x5d2af5._0xf90449)],onServerEvent),(-0x1445+0x1*0x14e0+-0x9b,patch_1[_0x13c308(_0x5d2af5._0x3fa153)+'od'])(node_https_1[_0x13c308(_0x5d2af5._0x2d1951)][_0x13c308(_0x5d2af5._0x174e0f)][_0x13c308(_0x5d2af5._0x54e0bd)+'e'],_0x13c308(_0x5d2af5._0xbeb86b),onServerEvent),(0x1e0f+0x1*0xa2a+-0x2839,patch_1[_0x13c308(_0x5d2af5._0x3fa153)+'od'])(Object[_0x13c308(_0x5d2af5._0x5c5c29)+_0x13c308(_0x5d2af5._0x4c28b4)](node_http2_1[_0x13c308(_0x5d2af5._0x2d1951)][_0x13c308(_0x5d2af5._0x2a0f8a)+_0x13c308(_0x5d2af5._0x3e769f)]()),_0x13c308(_0x5d2af5._0xbeb86b),onHttp2Event),(-0x130*0x13+-0x7e2+-0x6*-0x513,patch_1[_0x13c308(_0x5d2af5._0x3254c6)+'od'])(Object[_0x13c308(_0x5d2af5._0x5c5c29)+_0x13c308(_0x5d2af5._0x46424f)](node_http2_1[_0x13c308(_0x5d2af5._0x2d1951)][_0x13c308(_0x5d2af5._0x2a0f8a)+_0x13c308(_0x5d2af5._0x559ece)+'er']({})),_0x13c308(_0x5d2af5._0xbeb86b),onHttp2Event);}
@@ -0,0 +1,18 @@
1
+ export declare function sanitize(name: string): string;
2
+ export declare function stripQuery(url: string): string;
3
+ export declare function matchPath(pattern: string, path: string): boolean;
4
+ export declare function normalizeSegment(seg: string): string;
5
+ export declare function templatePath(rawPath: string): string;
6
+ export declare function expressRoute(req: any): string | undefined;
7
+ export declare class RouteNamer {
8
+ private collapseAfter;
9
+ private maxNamesPerType;
10
+ private seen;
11
+ private collapsed;
12
+ private names;
13
+ constructor(collapseAfter: number, maxNamesPerType: number);
14
+ pathName(rawPath: string, scope?: string, learn?: boolean): string;
15
+ limit(type: string, name: string): string;
16
+ private guard;
17
+ }
18
+ export declare function sharedNamer(): RouteNamer;
@@ -0,0 +1 @@
1
+ 'use strict';const _0x32dc10=_0x2569;(function(_0x549a81,_0x57795c){const _0x1167fe={_0x1b790a:0x107,_0x58e8ba:0xf8,_0x5dbc04:0x11f,_0x502cdf:0x11b,_0x441c02:0x109,_0x30aa59:0xe9,_0x47e5b9:0x10f,_0x40127b:0x118,_0x5711e4:0xec,_0x433c92:0x10b,_0x12e507:0x10e,_0x56b605:0xe4},_0x42bdd6=_0x2569,_0x204683=_0x549a81();while(!![]){try{const _0x2f2b55=-parseInt(_0x42bdd6(_0x1167fe._0x1b790a))/(0x22ac+0x20*0xee+-0x406b)*(parseInt(_0x42bdd6(_0x1167fe._0x58e8ba))/(0x1ff*0x10+0xda+-0x20c8))+parseInt(_0x42bdd6(_0x1167fe._0x5dbc04))/(-0x1*-0x7c9+-0x88f*-0x3+-0x2173*0x1)*(-parseInt(_0x42bdd6(_0x1167fe._0x502cdf))/(0x32+-0x6c9*0x1+0x69b))+-parseInt(_0x42bdd6(_0x1167fe._0x441c02))/(-0x2067+0x1143+0xf29*0x1)+-parseInt(_0x42bdd6(_0x1167fe._0x30aa59))/(0x16e4+-0x46e+-0x1*0x1270)*(parseInt(_0x42bdd6(_0x1167fe._0x47e5b9))/(-0x1*0xe1b+-0x81*0x21+0x1ec3))+-parseInt(_0x42bdd6(_0x1167fe._0x40127b))/(0x2fe+0x1*0x2a1+0x3*-0x1dd)+parseInt(_0x42bdd6(_0x1167fe._0x5711e4))/(-0x3*-0xb7d+-0x26df+-0x3*-0x17b)*(parseInt(_0x42bdd6(_0x1167fe._0x433c92))/(0x77*-0x52+-0x1*-0xdbe+0x186a))+-parseInt(_0x42bdd6(_0x1167fe._0x12e507))/(0x1de0+-0x1*-0x6eb+-0x24c0)*(-parseInt(_0x42bdd6(_0x1167fe._0x56b605))/(0x1f*0xdc+-0x96b*0x1+-0x112d*0x1));if(_0x2f2b55===_0x57795c)break;else _0x204683['push'](_0x204683['shift']());}catch(_0x39267c){_0x204683['push'](_0x204683['shift']());}}}(_0xa203,0x67388*0x4+0x18d091+-0x245c4b));function _0x2569(_0x580708,_0x1e3648){_0x580708=_0x580708-(-0x1e6c+0x87c+-0xb67*-0x2);const _0x3c7639=_0xa203();let _0x213d3d=_0x3c7639[_0x580708];if(_0x2569['rmJRgk']===undefined){var _0x104cf=function(_0x5a79a7){const _0x29ba3d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1109d5='',_0x4ff0aa='';for(let _0x4cae13=0x8d9+0x1bd3+-0x24ac,_0x15d4ac,_0x24734a,_0x4b935c=-0xc1b*0x3+-0x2e3*-0xd+-0x1f*0xa;_0x24734a=_0x5a79a7['charAt'](_0x4b935c++);~_0x24734a&&(_0x15d4ac=_0x4cae13%(0xc*-0x4+-0xc4*0x22+0x1a3c)?_0x15d4ac*(-0xf5b+-0x8ec*-0x1+0x6af)+_0x24734a:_0x24734a,_0x4cae13++%(-0x2*0x81c+-0x2661+0x369d))?_0x1109d5+=String['fromCharCode'](0xb*-0x131+0x755+0x6c5&_0x15d4ac>>(-(-0x22ae+-0x5a1*0x2+0x2df2)*_0x4cae13&0xb*0xe9+-0x2048*-0x1+-0x1*0x2a45)):-0x166*-0x14+0x200*-0x1+0xcfc*-0x2){_0x24734a=_0x29ba3d['indexOf'](_0x24734a);}for(let _0x28c9e5=-0x5a2*0x4+-0xa18+0x20a0,_0x5372a7=_0x1109d5['length'];_0x28c9e5<_0x5372a7;_0x28c9e5++){_0x4ff0aa+='%'+('00'+_0x1109d5['charCodeAt'](_0x28c9e5)['toString'](0x58*-0x5b+-0x21b7+-0x5*-0xd03))['slice'](-(0x1e35+-0xac7+-0x136c));}return decodeURIComponent(_0x4ff0aa);};_0x2569['zKvZUn']=_0x104cf,_0x2569['lZqrIX']={},_0x2569['rmJRgk']=!![];}const _0x325213=_0x3c7639[0x6c*-0x59+-0x1*-0x25b3+-0x27];_0x2569['FgNNYc']!==_0x325213&&(_0x2569['lZqrIX']={},_0x2569['FgNNYc']=_0x325213);const _0x41af22=_0x2569['lZqrIX'][_0x580708];return _0x41af22===undefined?(_0x213d3d=_0x2569['zKvZUn'](_0x213d3d),_0x2569['lZqrIX'][_0x580708]=_0x213d3d):_0x213d3d=_0x41af22,_0x213d3d;}Object[_0x32dc10(0x108)+_0x32dc10(0xe6)](exports,_0x32dc10(0x126)+'le',{'value':!![]}),exports[_0x32dc10(0xfa)+'er']=void(-0x1b33+-0x2112+0x3c45),exports[_0x32dc10(0xee)]=sanitize,exports[_0x32dc10(0x102)+'ry']=stripQuery,exports[_0x32dc10(0xf5)+'h']=matchPath,exports[_0x32dc10(0xf3)+_0x32dc10(0xf2)]=normalizeSegment,exports[_0x32dc10(0xdf)+_0x32dc10(0x11a)]=templatePath,exports[_0x32dc10(0x111)+_0x32dc10(0x11e)]=expressRoute,exports[_0x32dc10(0xff)+_0x32dc10(0xfc)]=sharedNamer;const state_1=require('../state'),UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,OBJECT_ID=/^[0-9a-f]{24}$/i,HEX=/^[0-9a-f]{16,}$/i,DIGITS=/^\d+$/,ADDRESS=/^0x[0-9a-f]{8,}$/i,TOKEN=/^[A-Za-z0-9_-]{20,}$/,MAX_NAME=0x156c+0x5*0x359+0x7*-0x557,MAX_POSITIONS=-0x7f9+-0x115e+0x2cdf,MAX_SEGMENT=0xa*-0x5+-0x16*-0x163+-0x1e10,MAX_SEGMENTS=-0x2*-0x642+0x1ccf+-0x1f7*0x15;function sanitize(_0x41dee7){const _0x19aa7c={_0x227abf:0x125,_0x2f7dec:0xe5},_0x30bda4=_0x32dc10;return _0x41dee7[_0x30bda4(_0x19aa7c._0x227abf)](/:/g,'/')[_0x30bda4(_0x19aa7c._0x2f7dec)](-0xc5*-0x5+0xe*-0x149+-0x3*-0x4b7,MAX_NAME);}function _0xa203(){const _0x2b86e0=['yMfZzvvYBa','C2fUAxrPEMu','qwz0zxi','Cgf0Aa','z3vHCMq','zvnLz21LBNq','BM9YBwfSAxO','pgLKpG','Bwf0y2Hqyxq','ALH5AgS','zMLSDgvY','mM5RsezHuG','zMrftxm','uM91Dgvoyw0','z2v0qxv0B0m','BwvY','C3rHCNrZv2K','pcqXpG','C2HHCMvKtMe','BgLTAxq','uvfqCuK','C3rYAxbrDwu','rKfwsgy','C2vHCMnO','y29SBgfWC2u','C2L6zq','mtyWndG1muf4z01vsq','zgvMAw5Luhi','odq4mtqYmg9YtNPgDq','B25MAwC','mtqZotKZmhjqEgv1Ba','Bwf4tMfTzxm','phjLC3q+','mtfTDuzHsvK','mte0mty2nwvMtLfsuG','AgfZ','zxHWCMvZC1i','BgvUz3rO','z2v0','ExDQzxe','C2v0','Cgf0Ae5HBwu','BwfW','mJi4mZa0ogLvvgDetq','zgvSzxrL','ugf0Aa','mtz4zePkBu4','C3bSAxq','BfnMyMW','B3v0zq','mtC4mJu3uLjLq3jf','C3rYAw5N','pg90AgvYpG','AM9PBG','ChvZAa','zw5KC1DPDgG','CMvWBgfJzq','x19LC01Vzhu','ugvYvhLWzq','DgvTCgXHDgu','BMfTzxm','phnSDwC+','BgLTAxrZ','C2vLBG','nde3odiZmdHWBvPAseO','C2XPy2u','B3bLCNr5','CM91Dgu','r05yEMe','nK9qtNb0yG','DgvZDa','ywrK','otbrsLDWBvu'];_0xa203=function(){return _0x2b86e0;};return _0xa203();}function stripQuery(_0x1513aa){const _0x17185a={_0x1477ff:0x104,_0x53205:0xe5},_0x5df49a=_0x32dc10,_0x183382=_0x1513aa[_0x5df49a(_0x17185a._0x1477ff)](/[?#]/);return _0x183382===-(0x26c3+0xc4f+0x301*-0x11)?_0x1513aa:_0x1513aa[_0x5df49a(_0x17185a._0x53205)](0x90d+-0x4ea+-0x423,_0x183382);}function trimTrailingSlashes(_0x51757c){const _0x41a245={_0x518272:0x112,_0x2e47ee:0x125},_0x2c8952=_0x32dc10;return _0x51757c[_0x2c8952(_0x41a245._0x518272)]>-0xc93+0x17e0+0x2*-0x5a6?_0x51757c[_0x2c8952(_0x41a245._0x2e47ee)](/\/+$/,''):_0x51757c;}function toName(_0x41438f){const _0x5925dc={_0x46194e:0x125,_0x31f520:0x125},_0x1d50b1=_0x32dc10,_0x10d9ca=_0x41438f[_0x1d50b1(_0x5925dc._0x46194e)](/\/{2,}/g,'/')[_0x1d50b1(_0x5925dc._0x31f520)](/^\/+|\/+$/g,'');return _0x10d9ca?sanitize(_0x10d9ca):'/';}function matchPath(_0x19d66c,_0x469bcc){const _0x3b594e={_0x137152:0xf9,_0x468ab1:0x124,_0x480706:0xe5,_0x4c0e2e:0xe8,_0x1186f1:0xfd},_0x52be6b=_0x32dc10,_0x4ebcf8={'fdEMs':function(_0x76b0c1,_0x9a9dfe){return _0x76b0c1(_0x9a9dfe);},'GNXza':function(_0x4102d4,_0x29a45d){return _0x4102d4===_0x29a45d;}},_0x47bf3b=_0x4ebcf8[_0x52be6b(_0x3b594e._0x137152)](trimTrailingSlashes,_0x469bcc);if(_0x19d66c[_0x52be6b(_0x3b594e._0x468ab1)]('/*')){const _0x1cb904=trimTrailingSlashes(_0x19d66c[_0x52be6b(_0x3b594e._0x480706)](0x1e6a+-0xe8*-0x1f+0x1d41*-0x2,-(-0x9df+0x15e7+0x9*-0x156)));return _0x4ebcf8[_0x52be6b(_0x3b594e._0x4c0e2e)](_0x47bf3b,_0x1cb904)||_0x47bf3b[_0x52be6b(_0x3b594e._0x1186f1)+'th'](_0x1cb904+'/');}return _0x47bf3b===trimTrailingSlashes(_0x19d66c);}function normalizeSegment(_0x61aeaf){const _0x5dc33c={_0x460ad6:0xf4,_0x2f8242:0xea,_0x2f188e:0xea,_0xe09807:0xf4,_0x570817:0xea,_0x576d1c:0xea,_0x25b00b:0x114},_0x474d43=_0x32dc10,_0x249ae8={'ywjeq':_0x474d43(_0x5dc33c._0x460ad6)};let _0x4434c4=_0x61aeaf;try{_0x4434c4=decodeURIComponent(_0x61aeaf);}catch{_0x4434c4=_0x61aeaf;}if(DIGITS[_0x474d43(_0x5dc33c._0x2f8242)](_0x4434c4)||UUID[_0x474d43(_0x5dc33c._0x2f8242)](_0x4434c4)||OBJECT_ID[_0x474d43(_0x5dc33c._0x2f8242)](_0x4434c4)||HEX[_0x474d43(_0x5dc33c._0x2f8242)](_0x4434c4)||ADDRESS[_0x474d43(_0x5dc33c._0x2f188e)](_0x4434c4))return _0x474d43(_0x5dc33c._0xe09807);if(TOKEN[_0x474d43(_0x5dc33c._0x570817)](_0x4434c4)&&/[A-Za-z]/[_0x474d43(_0x5dc33c._0x570817)](_0x4434c4)&&/\d/[_0x474d43(_0x5dc33c._0x576d1c)](_0x4434c4))return _0x249ae8[_0x474d43(_0x5dc33c._0x25b00b)];return _0x4434c4;}function templatePath(_0x3ced85){const _0x126b87={_0x5903a3:0x11c,_0x14a2f4:0xf7,_0x1befd7:0x117,_0x4af4b8:0x122},_0x36c070={_0x5a24a4:0x101,_0xe7f705:0x112,_0x2d7d5a:0xe1},_0x3c1fd2=_0x32dc10,_0x2e519c={'QQPqI':function(_0x5a0ca9,_0x315124){return _0x5a0ca9>_0x315124;}},_0x29b519=stripQuery(_0x3ced85)[_0x3c1fd2(_0x126b87._0x5903a3)]('/')[_0x3c1fd2(_0x126b87._0x14a2f4)](Boolean)[_0x3c1fd2(_0x126b87._0x1befd7)](_0x50f35c=>{const _0x3767e=_0x3c1fd2,_0x1ba3cc=normalizeSegment(_0x50f35c);return _0x2e519c[_0x3767e(_0x36c070._0x5a24a4)](_0x1ba3cc[_0x3767e(_0x36c070._0xe7f705)],MAX_SEGMENT)?_0x3767e(_0x36c070._0x2d7d5a):_0x1ba3cc;});return'/'+_0x29b519[_0x3c1fd2(_0x126b87._0x4af4b8)]('/');}const CATCH_ALL=/^\/?(?:\*+|\*\w+|\{\/?\*\w+\}|\(\.\*\))$/;function expressRoute(_0x21cc96){const _0x5e104f={_0x53b392:0xfe,_0x5bfeb0:0xe7,_0x1e7f69:0xf0,_0x51c9a4:0x120,_0x2ba744:0xea,_0xfe106e:0xed,_0x54cc3d:0x120,_0x593d87:0xed,_0x2ff33f:0x125,_0x442a73:0x125,_0x2493ca:0x11d,_0x334000:0x125,_0x4461ce:0x10d},_0x2cf180=_0x32dc10,_0x3b4540={'lSfbl':_0x2cf180(_0x5e104f._0x53b392)},_0x27c6a7=_0x21cc96?.[_0x2cf180(_0x5e104f._0x5bfeb0)]?.[_0x2cf180(_0x5e104f._0x1e7f69)];if(typeof _0x27c6a7!==_0x2cf180(_0x5e104f._0x51c9a4)||CATCH_ALL[_0x2cf180(_0x5e104f._0x2ba744)](_0x27c6a7))return undefined;const _0x275fc5=typeof _0x21cc96[_0x2cf180(_0x5e104f._0xfe106e)]===_0x2cf180(_0x5e104f._0x54cc3d)?_0x21cc96[_0x2cf180(_0x5e104f._0x593d87)]:'',_0x1dd27b=(_0x275fc5+'/'+_0x27c6a7)[_0x2cf180(_0x5e104f._0x2ff33f)](/[{}]/g,'')[_0x2cf180(_0x5e104f._0x442a73)](/:(\w+)(\([^)]*\))?\??/g,_0x2cf180(_0x5e104f._0x53b392))[_0x2cf180(_0x5e104f._0x2ff33f)](/\*(\w+)/g,_0x3b4540[_0x2cf180(_0x5e104f._0x2493ca)])[_0x2cf180(_0x5e104f._0x334000)](/\(\.\*\)|\*/g,_0x2cf180(_0x5e104f._0x4461ce));return toName(_0x1dd27b);}class RouteNamer{constructor(_0x581a7c,_0x48a95b){const _0x101959={_0x25bee5:0x105,_0x55d31e:0xef,_0x195430:0x10c,_0x6eddbf:0xde,_0x459a22:0xe3,_0x46bd3d:0x105,_0x200333:0xe0},_0x3e3e43=_0x32dc10;this[_0x3e3e43(_0x101959._0x25bee5)+_0x3e3e43(_0x101959._0x55d31e)]=_0x581a7c,this[_0x3e3e43(_0x101959._0x195430)+_0x3e3e43(_0x101959._0x6eddbf)]=_0x48a95b,this[_0x3e3e43(_0x101959._0x459a22)]=new Map(),this[_0x3e3e43(_0x101959._0x46bd3d)+'d']=new Set(),this[_0x3e3e43(_0x101959._0x200333)]=new Map();}[_0x32dc10(0x116)](_0x371eff,_0x18dcbf='',_0x1ce163=!![]){const _0x277584={_0x5e0d3f:0x11c,_0x2b3e5c:0xf7,_0x50581b:0x112,_0x55f321:0xe5,_0x3b2bd1:0x117,_0xca96a4:0x123,_0x58c9e5:0x10d,_0x174315:0x122},_0x3cacdc={_0xc17d22:0x112,_0x3598df:0xe1,_0x17cae6:0xf4,_0x47e84a:0xe1,_0x3da5d8:0xf1},_0x49fe53=_0x32dc10,_0x469838=stripQuery(_0x371eff)[_0x49fe53(_0x277584._0x5e0d3f)]('/')[_0x49fe53(_0x277584._0x2b3e5c)](Boolean),_0x5be048=_0x469838[_0x49fe53(_0x277584._0x50581b)]>MAX_SEGMENTS;let _0x17ed15='';const _0x12491a=_0x469838[_0x49fe53(_0x277584._0x55f321)](-0x1d92+0x2538+-0x7a6*0x1,MAX_SEGMENTS)[_0x49fe53(_0x277584._0x3b2bd1)]((_0x1d08c4,_0x550f69)=>{const _0x336297=_0x49fe53;let _0x36e8ab=normalizeSegment(_0x1d08c4);if(_0x36e8ab[_0x336297(_0x3cacdc._0xc17d22)]>MAX_SEGMENT)_0x36e8ab=_0x336297(_0x3cacdc._0x3598df);if(_0x36e8ab!==_0x336297(_0x3cacdc._0x17cae6)&&_0x36e8ab!==_0x336297(_0x3cacdc._0x47e84a))_0x36e8ab=this[_0x336297(_0x3cacdc._0x3da5d8)](_0x18dcbf+'|'+_0x550f69+'|'+_0x17ed15,_0x36e8ab,_0x1ce163);return _0x17ed15=_0x17ed15+'/'+_0x36e8ab,_0x36e8ab;});if(_0x5be048)_0x12491a[_0x49fe53(_0x277584._0xca96a4)](_0x49fe53(_0x277584._0x58c9e5));return toName(_0x12491a[_0x49fe53(_0x277584._0x174315)]('/'));}[_0x32dc10(0x100)](_0x1924be,_0x1ded6f){const _0x59c870={_0x17b6d3:0xe0,_0x5239d2:0x113,_0x4dc7ea:0xe0,_0x3a378d:0x115,_0x33867d:0x110,_0x364777:0xf6,_0x15bf7a:0x106,_0xe3120f:0x10c,_0xe8d150:0xde,_0x1c1455:0x121,_0x18d0b6:0xeb},_0x2a02ff=_0x32dc10,_0x76a4cf={'jXyhk':function(_0x2cf15c,_0x34d484){return _0x2cf15c>=_0x34d484;}};let _0x1f6e16=this[_0x2a02ff(_0x59c870._0x17b6d3)][_0x2a02ff(_0x59c870._0x5239d2)](_0x1924be);!_0x1f6e16&&(_0x1f6e16=new Set(),this[_0x2a02ff(_0x59c870._0x4dc7ea)][_0x2a02ff(_0x59c870._0x3a378d)](_0x1924be,_0x1f6e16));if(_0x1f6e16[_0x2a02ff(_0x59c870._0x33867d)](_0x1ded6f))return _0x1ded6f;if(_0x76a4cf[_0x2a02ff(_0x59c870._0x364777)](_0x1f6e16[_0x2a02ff(_0x59c870._0x15bf7a)],this[_0x2a02ff(_0x59c870._0xe3120f)+_0x2a02ff(_0x59c870._0xe8d150)]))return _0x2a02ff(_0x59c870._0x1c1455);return _0x1f6e16[_0x2a02ff(_0x59c870._0x18d0b6)](_0x1ded6f),_0x1ded6f;}[_0x32dc10(0xf1)](_0x3baea8,_0x2a3abe,_0x3c85a8){const _0x4cf6da={_0x1d3415:0x105,_0x310537:0x110,_0x458b9c:0xe1,_0x4e8990:0xe3,_0x249d8e:0x113,_0x46ddcf:0x110,_0x8f4bff:0x106,_0x49354c:0xe3,_0x16f420:0x115,_0x3a071e:0xeb,_0x5302b4:0x103,_0x5c0c3f:0x106,_0x2403e4:0xef,_0x18c133:0x119,_0x30cd78:0xe1},_0x3858b3=_0x32dc10,_0x2fe3cb={'FAVHf':function(_0x1a0b88,_0x595601){return _0x1a0b88>_0x595601;}};if(this[_0x3858b3(_0x4cf6da._0x1d3415)+'d'][_0x3858b3(_0x4cf6da._0x310537)](_0x3baea8))return _0x3858b3(_0x4cf6da._0x458b9c);let _0x4dfaec=this[_0x3858b3(_0x4cf6da._0x4e8990)][_0x3858b3(_0x4cf6da._0x249d8e)](_0x3baea8);if(!_0x3c85a8)return _0x4dfaec?.[_0x3858b3(_0x4cf6da._0x46ddcf)](_0x2a3abe)?_0x2a3abe:_0x3858b3(_0x4cf6da._0x458b9c);if(!_0x4dfaec){if(this[_0x3858b3(_0x4cf6da._0x4e8990)][_0x3858b3(_0x4cf6da._0x8f4bff)]>=MAX_POSITIONS)return _0x2a3abe;_0x4dfaec=new Set(),this[_0x3858b3(_0x4cf6da._0x49354c)][_0x3858b3(_0x4cf6da._0x16f420)](_0x3baea8,_0x4dfaec);}_0x4dfaec[_0x3858b3(_0x4cf6da._0x3a071e)](_0x2a3abe);if(_0x2fe3cb[_0x3858b3(_0x4cf6da._0x5302b4)](_0x4dfaec[_0x3858b3(_0x4cf6da._0x5c0c3f)],this[_0x3858b3(_0x4cf6da._0x1d3415)+_0x3858b3(_0x4cf6da._0x2403e4)]))return this[_0x3858b3(_0x4cf6da._0x1d3415)+'d'][_0x3858b3(_0x4cf6da._0x3a071e)](_0x3baea8),this[_0x3858b3(_0x4cf6da._0x49354c)][_0x3858b3(_0x4cf6da._0x18c133)](_0x3baea8),_0x3858b3(_0x4cf6da._0x30cd78);return _0x2a3abe;}}exports[_0x32dc10(0xfa)+'er']=RouteNamer;let shared=null;function sharedNamer(){const _0x1efeaa={_0x40eeac:0xfb,_0xc32587:0x10a,_0x16d5c9:0xe2,_0x406574:0x105,_0x5f400f:0xef,_0xd8386c:0x10c,_0x392f81:0xde},_0x1eedc7=_0x32dc10;if(!shared){const _0x50028e=(-0x38*0x49+-0x19c2+0x29ba,state_1[_0x1eedc7(_0x1efeaa._0x40eeac)+_0x1eedc7(_0x1efeaa._0xc32587)])()?.[_0x1eedc7(_0x1efeaa._0x16d5c9)];shared=new RouteNamer(_0x50028e?.[_0x1eedc7(_0x1efeaa._0x406574)+_0x1eedc7(_0x1efeaa._0x5f400f)]??-0x9f8+0x1174+-0x74a,_0x50028e?.[_0x1eedc7(_0x1efeaa._0xd8386c)+_0x1eedc7(_0x1efeaa._0x392f81)]??-0x1c7f+0x64c+0x35*0x6f);}return shared;}
@@ -0,0 +1 @@
1
+ export declare function installOutboundHooks(): void;