pm-jira 2026.6.2 → 2026.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -1
- package/README.md +87 -14
- package/dist/index.d.ts +83 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +470 -50
- package/dist/index.js.map +1 -1
- package/manifest.json +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 2026.6.
|
|
3
|
+
## 2026.6.3 - 2026-06-03
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- pm-jira: deepen filters/dry-run/field-mapping/validate/hooks \(enhancement brief 2026-06-03\) ([pm-jira-i7fd](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/features/pm-jira-i7fd.toon))
|
|
8
|
+
- pm-jira: domain-max SDK enhancement \(idempotent import, preflight, rate-limit backoff\) ([pm-jira-4804](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/features/pm-jira-4804.toon))
|
|
9
|
+
- export-on-write hook \(opt-in\) + add 'hooks' capability ([pm-jira-65ao](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-65ao.toon))
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Idempotent import: match on Jira key, update instead of duplicate; persist jira\_key/jira\_url ([pm-jira-3b0b](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-3b0b.toon))
|
|
14
|
+
|
|
15
|
+
### Other
|
|
16
|
+
|
|
17
|
+
- Production-readiness audit 2026-05-28 ([pm-jira-fc13](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-fc13.toon))
|
|
18
|
+
- preflight capability: pm jira preflight command + registerPreflight guard ([pm-jira-vfb3](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-vfb3.toon))
|
|
19
|
+
- Robustness: 429/503 rate-limit backoff + Retry-After on GET/POST ([pm-jira-2up8](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-2up8.toon))
|
|
20
|
+
- manifest capabilities correctness + README + tests + functional verification ([pm-jira-lu1f](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-lu1f.toon))
|
|
21
|
+
- Filters: --assignee augments default JQL ([pm-jira-ia8o](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-ia8o.toon))
|
|
22
|
+
- Decision: what needs live Jira creds \(not exercisable here\) ([pm-jira-49oh](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-49oh.toon))
|
|
23
|
+
- Decision: hook policy \(best-effort, opt-in, no auto-push\) ([pm-jira-h5wu](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-h5wu.toon))
|
|
24
|
+
- Decision: field-mapping model ([pm-jira-7y1y](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-7y1y.toon))
|
|
25
|
+
- Manifest capability correctness + README ([pm-jira-wsn0](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-wsn0.toon))
|
|
26
|
+
- pm jira validate diagnostics \(--json, no secret leak\) ([pm-jira-4dfb](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-4dfb.toon))
|
|
27
|
+
- Field-mapping depth + --map override \(both directions\) ([pm-jira-7bmf](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-7bmf.toon))
|
|
28
|
+
- --dry-run on import AND export \(no-network\), with strace proof ([pm-jira-4r5q](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-4r5q.toon))
|
|
29
|
+
- JQL builder + convenience filters \(--assignee/--issue-type/--label/--updated-since\) ([pm-jira-ko1c](https://github.com/unbraind/pm-jira/blob/main/.agents/pm/tasks/pm-jira-ko1c.toon))
|
|
30
|
+
|
|
31
|
+
## 2026.06.02 - 2026-06-02
|
|
4
32
|
|
|
5
33
|
### Added
|
|
6
34
|
|
package/README.md
CHANGED
|
@@ -6,13 +6,16 @@ A [pm-cli](https://github.com/unbraind/pm-cli) extension that syncs Jira issues
|
|
|
6
6
|
|
|
7
7
|
- Pull issues from any Jira project into pm items via `pm jira import` or `pm jira sync`
|
|
8
8
|
- Export pm items back out as Jira create payloads via `pm jira export` (preview, or `--push` to create issues)
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
9
|
+
- **Convenience JQL filters** — `--project`, `--status`, `--assignee`, `--issue-type`, `--label`, `--updated-since` compose into a single JQL query (or pass full `--jql` to override)
|
|
10
|
+
- **Rich field mapping** — Jira status (by name, with a `statusCategory` fallback for custom workflows), priority, issue type → pm type, labels/fix-versions → tags, assignee → tag; configurable with `--status-map` and a general `--map jiraField=pmField`
|
|
11
|
+
- **`--dry-run` everywhere** — both import and export print the exact request / mutations they *would* make and perform **no network call** (the offline-testable, creds-free path)
|
|
12
|
+
- **`pm jira validate`** — report Jira credential/base-URL readiness without leaking any secret (hostname-only preview); `--json` aware
|
|
13
|
+
- Optional, opt-in **export-on-write hook** (`PM_JIRA_PUSH_ON_WRITE`) — best-effort, never breaks your pm command, no-op without credentials
|
|
14
|
+
- Jira provenance (key + browse URL) persisted in the item description and declared as `jira_key` / `jira_url` schema fields; on export, items that already carry a Jira key become an `update` (PUT) instead of a duplicate create
|
|
14
15
|
- Works as a `pm jira sync`/`pm jira import` command, a `pm jira export` exporter, and a config-driven `jira-sync` importer
|
|
15
16
|
|
|
17
|
+
> **Which features need live Jira credentials?** Everything except the actual network round-trip is usable and testable offline. Building JQL, previewing requests/mutations with `--dry-run`, field mapping in both directions, and `pm jira validate` all work with **no creds and no network**. You only need `JIRA_BASE_URL` / `JIRA_EMAIL` / `JIRA_API_TOKEN` for: a real import fetch, `pm jira export --push` (creating/updating issues), and live reachability.
|
|
18
|
+
|
|
16
19
|
## Installation
|
|
17
20
|
|
|
18
21
|
Install with pm from GitHub:
|
|
@@ -96,13 +99,36 @@ pm jira import --project PROJ --status-map "QA=blocked,Done=closed"
|
|
|
96
99
|
|
|
97
100
|
| Flag | Type | Default | Description |
|
|
98
101
|
|---|---|---|---|
|
|
99
|
-
| `--project` | string | — | Jira project key (e.g. `PROJ`).
|
|
100
|
-
| `--jql` | string | — | Custom JQL query.
|
|
102
|
+
| `--project` | string | — | Jira project key (e.g. `PROJ`). Composed into JQL. |
|
|
103
|
+
| `--jql` | string | — | Custom JQL query. Used verbatim; overrides all convenience filters below. |
|
|
104
|
+
| `--status` | string | — | Filter by pm status (`open`/`in_progress`/`closed`/`blocked`, mapped to a `statusCategory` clause) or a raw Jira status name. Also filters imported items client-side. |
|
|
105
|
+
| `--assignee` | string | — | Filter by assignee (accountId, name, or a function like `currentUser()`). |
|
|
106
|
+
| `--issue-type` | string | — | Filter by Jira issue type (e.g. `Bug`). |
|
|
107
|
+
| `--label` | string | — | Filter by Jira label. |
|
|
108
|
+
| `--updated-since` | string | — | Filter by updated date, relative (`-7d`) or absolute (`2026-01-01`). |
|
|
109
|
+
| `--status-map` | string | — | Override status mapping, e.g. `"In Review=in_progress,QA=blocked"`. |
|
|
110
|
+
| `--map` | string | — | Override field mapping, e.g. `"issuetype=Task,assignee=skip"`. |
|
|
101
111
|
| `--host` | string | `$JIRA_BASE_URL` | Jira base URL override. |
|
|
102
112
|
| `--max-results` | number | `500` | Maximum number of issues to pull. |
|
|
103
|
-
| `--
|
|
104
|
-
|
|
105
|
-
|
|
113
|
+
| `--dry-run` | boolean | `false` | Print the JQL + exact GET request that would run; **no network call**. |
|
|
114
|
+
|
|
115
|
+
When no `--jql` is given, the convenience filters are AND-combined; if you don't
|
|
116
|
+
filter on status, a `statusCategory != Done` clause is appended so an unscoped
|
|
117
|
+
pull stays focused on active work (the historical default).
|
|
118
|
+
|
|
119
|
+
#### `--map` field overrides
|
|
120
|
+
|
|
121
|
+
`--map` accepts a comma list of `jiraField=pmTarget` pairs. Recognized Jira-side
|
|
122
|
+
keys: `status`, `statuscategory`, `priority`, `issuetype` (alias `type`),
|
|
123
|
+
`labels`, `assignee`, `duedate`. Examples:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Pin every imported item's type, and skip the assignee tag
|
|
127
|
+
pm jira import --project PROJ --map "issuetype=Task,assignee=skip"
|
|
128
|
+
|
|
129
|
+
# Force a pm status regardless of the Jira workflow state
|
|
130
|
+
pm jira import --project PROJ --map "status=in_progress"
|
|
131
|
+
```
|
|
106
132
|
|
|
107
133
|
### Exporter: `pm jira export`
|
|
108
134
|
|
|
@@ -113,6 +139,12 @@ Render pm items as Jira create payloads. Prints JSON by default; with `--push`
|
|
|
113
139
|
# Preview the Jira create payloads for all pm items (no network, no creds needed)
|
|
114
140
|
pm jira export --project PROJ
|
|
115
141
|
|
|
142
|
+
# Print the exact mutations that WOULD run (create vs update), no network/creds
|
|
143
|
+
pm jira export --project PROJ --dry-run
|
|
144
|
+
|
|
145
|
+
# Derive Jira issuetype + priority from each pm item's type/priority
|
|
146
|
+
pm jira export --project PROJ --rich --dry-run
|
|
147
|
+
|
|
116
148
|
# Actually create the issues in Jira (requires creds + --project)
|
|
117
149
|
pm jira export --push --project PROJ
|
|
118
150
|
```
|
|
@@ -120,11 +152,36 @@ pm jira export --push --project PROJ
|
|
|
120
152
|
| Flag | Type | Default | Description |
|
|
121
153
|
|---|---|---|---|
|
|
122
154
|
| `--project` | string | — | Target Jira project key for created issues (required for `--push`). |
|
|
155
|
+
| `--map` | string | — | Override field mapping, e.g. `"issuetype=Story"`. |
|
|
156
|
+
| `--rich` | boolean | `false` | Derive Jira `issuetype` + `priority` from the pm item type/priority. |
|
|
157
|
+
| `--dry-run` | boolean | `false` | Print the Jira POST/PUT mutations that would run; **no network call**. |
|
|
123
158
|
| `--host` | string | `$JIRA_BASE_URL` | Jira base URL override. |
|
|
124
159
|
| `--push` | boolean | `false` | POST payloads to Jira (requires credentials + `--project`). |
|
|
125
160
|
|
|
126
161
|
Items whose description carries a `Jira <KEY>: <url>` provenance marker (added on
|
|
127
|
-
import)
|
|
162
|
+
import) are matched back to their upstream issue: `--dry-run` shows them as an
|
|
163
|
+
`update` (PUT), and `--push` **skips** them so a re-export never duplicates an
|
|
164
|
+
existing Jira issue (only items without a key are created).
|
|
165
|
+
|
|
166
|
+
### Command: `pm jira validate`
|
|
167
|
+
|
|
168
|
+
Report whether pm-jira has the credentials/base URL it needs — **without making
|
|
169
|
+
a network call and without leaking any secret value** (it prints a hostname-only
|
|
170
|
+
preview, never the token or email):
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
pm jira validate # human-readable readiness summary
|
|
174
|
+
pm jira validate --json # structured object: { ready, baseUrlPresent, ... }
|
|
175
|
+
pm jira validate --host https://company.atlassian.net
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Export-on-write hook (opt-in)
|
|
179
|
+
|
|
180
|
+
Setting `PM_JIRA_PUSH_ON_WRITE=1` activates a best-effort `onWrite` hook. It is a
|
|
181
|
+
strict no-op unless both the env flag is truthy **and** Jira credentials are
|
|
182
|
+
present, and it can never fail your `pm` command (the pm hook runtime swallows
|
|
183
|
+
any error). It intentionally does **not** auto-POST on every write; use the
|
|
184
|
+
explicit, reviewable `pm jira export --push` to mirror items upstream.
|
|
128
185
|
|
|
129
186
|
### Importer: `jira-sync` (config-driven)
|
|
130
187
|
|
|
@@ -167,6 +224,22 @@ The default mapping (override per-status with `--status-map`):
|
|
|
167
224
|
| Done, Resolved, Closed, Complete, Completed | `closed` |
|
|
168
225
|
| Blocked | `blocked` |
|
|
169
226
|
|
|
227
|
+
When the Jira status *name* is unrecognized (custom workflows), pm-jira falls
|
|
228
|
+
back to the issue's `statusCategory` bucket: `new` → `open`, `indeterminate` →
|
|
229
|
+
`in_progress`, `done` → `closed`.
|
|
230
|
+
|
|
231
|
+
### Issue type mapping
|
|
232
|
+
|
|
233
|
+
| Jira Issue Type | pm Type |
|
|
234
|
+
|---|---|
|
|
235
|
+
| Bug, Defect | `Bug` |
|
|
236
|
+
| Story, Epic | `Feature` |
|
|
237
|
+
| Task, Sub-task | `Task` |
|
|
238
|
+
| (any other) | `Issue` |
|
|
239
|
+
|
|
240
|
+
Override with `--map issuetype=<pmType>` (import) or `--map issuetype=<jiraType>`
|
|
241
|
+
(export, with `--rich`).
|
|
242
|
+
|
|
170
243
|
## Priority Mapping
|
|
171
244
|
|
|
172
245
|
| Jira Priority | pm Priority |
|
|
@@ -230,9 +303,9 @@ npm run dev
|
|
|
230
303
|
|
|
231
304
|
## Requirements
|
|
232
305
|
|
|
233
|
-
- Node.js
|
|
234
|
-
- pm-cli `>=2026.5.
|
|
235
|
-
- TypeScript
|
|
306
|
+
- Node.js 20+ (uses native `https` module and `Buffer`)
|
|
307
|
+
- pm-cli `>=2026.5.31`
|
|
308
|
+
- TypeScript 6.x (dev dependency)
|
|
236
309
|
|
|
237
310
|
## License
|
|
238
311
|
|
package/dist/index.d.ts
CHANGED
|
@@ -39,13 +39,33 @@ interface JiraIssue {
|
|
|
39
39
|
fixVersions?: Array<{
|
|
40
40
|
name: string;
|
|
41
41
|
}>;
|
|
42
|
+
issuetype?: {
|
|
43
|
+
name: string;
|
|
44
|
+
} | null;
|
|
42
45
|
};
|
|
43
46
|
}
|
|
44
47
|
type PmPriority = 1 | 2 | 3 | 4;
|
|
45
48
|
type PmStatus = "open" | "in_progress" | "closed" | "blocked";
|
|
46
49
|
export declare function mapJiraPriority(jiraPriority: string | undefined): PmPriority;
|
|
47
50
|
export declare function mapJiraStatus(jiraStatus: string, statusMap?: Record<string, PmStatus>): PmStatus;
|
|
51
|
+
export declare function mapJiraStatusCategory(categoryKey: string | undefined): PmStatus;
|
|
52
|
+
export declare function mapJiraIssueType(jiraType: string | undefined): string;
|
|
53
|
+
export declare function mapPmPriorityToJira(priority: PmPriority | number | undefined): string;
|
|
54
|
+
export type FieldMap = Record<string, string>;
|
|
55
|
+
export declare function parseFieldMap(raw: string | undefined): FieldMap | undefined;
|
|
48
56
|
export declare function parseStatusMap(raw: string | undefined): Record<string, PmStatus> | undefined;
|
|
57
|
+
export interface JqlFilters {
|
|
58
|
+
jql?: string;
|
|
59
|
+
project?: string;
|
|
60
|
+
status?: string;
|
|
61
|
+
assignee?: string;
|
|
62
|
+
issueType?: string;
|
|
63
|
+
label?: string;
|
|
64
|
+
updatedSince?: string;
|
|
65
|
+
}
|
|
66
|
+
export declare function jqlQuote(value: string): string;
|
|
67
|
+
export declare function buildJql(filters: JqlFilters): string;
|
|
68
|
+
export declare function readJqlFilters(options: Record<string, unknown>): JqlFilters;
|
|
49
69
|
export declare function adfToPlainText(node: JiraIssue["fields"]["description"] | {
|
|
50
70
|
type: string;
|
|
51
71
|
content?: unknown[];
|
|
@@ -80,16 +100,39 @@ export interface JiraCreds {
|
|
|
80
100
|
authHeader: string;
|
|
81
101
|
}
|
|
82
102
|
export declare function resolveCreds(options: Record<string, unknown>, envLike?: NodeJS.ProcessEnv): JiraCreds;
|
|
103
|
+
export interface CredDiagnostics {
|
|
104
|
+
ready: boolean;
|
|
105
|
+
baseUrlPresent: boolean;
|
|
106
|
+
emailPresent: boolean;
|
|
107
|
+
tokenPresent: boolean;
|
|
108
|
+
baseUrlSource: "option" | "env" | "none";
|
|
109
|
+
hostPreview?: string;
|
|
110
|
+
missing: string[];
|
|
111
|
+
}
|
|
112
|
+
export declare function diagnoseCreds(options: Record<string, unknown>, envLike?: NodeJS.ProcessEnv): CredDiagnostics;
|
|
83
113
|
export interface IssueToItem {
|
|
84
114
|
title: string;
|
|
85
115
|
status: PmStatus;
|
|
86
116
|
priority: PmPriority;
|
|
117
|
+
type: string;
|
|
87
118
|
body: string;
|
|
88
119
|
tags: string[];
|
|
89
120
|
deadline?: string;
|
|
90
121
|
description: string;
|
|
122
|
+
jiraKey: string;
|
|
123
|
+
jiraUrl: string;
|
|
124
|
+
}
|
|
125
|
+
export interface IssueMapOptions {
|
|
126
|
+
statusMap?: Record<string, PmStatus>;
|
|
127
|
+
fieldMap?: FieldMap;
|
|
128
|
+
}
|
|
129
|
+
export declare function issueToItem(issue: JiraIssue, baseUrl: string, optionsOrStatusMap?: IssueMapOptions | Record<string, PmStatus>): IssueToItem;
|
|
130
|
+
export interface JiraSearchRequest {
|
|
131
|
+
method: "GET";
|
|
132
|
+
url: string;
|
|
133
|
+
fields: string;
|
|
91
134
|
}
|
|
92
|
-
export declare function
|
|
135
|
+
export declare function buildSearchRequest(baseUrl: string, jql: string, startAt: number, maxResults: number): JiraSearchRequest;
|
|
93
136
|
interface PmItem {
|
|
94
137
|
id?: string;
|
|
95
138
|
title?: string;
|
|
@@ -97,7 +140,10 @@ interface PmItem {
|
|
|
97
140
|
body?: string;
|
|
98
141
|
description?: string;
|
|
99
142
|
tags?: string[];
|
|
143
|
+
priority?: number;
|
|
144
|
+
type?: string;
|
|
100
145
|
}
|
|
146
|
+
export declare function mapPmTypeToJira(pmType: string | undefined, override?: string): string;
|
|
101
147
|
export interface JiraCreatePayload {
|
|
102
148
|
fields: {
|
|
103
149
|
project?: {
|
|
@@ -109,9 +155,44 @@ export interface JiraCreatePayload {
|
|
|
109
155
|
name: string;
|
|
110
156
|
};
|
|
111
157
|
labels: string[];
|
|
158
|
+
priority?: {
|
|
159
|
+
name: string;
|
|
160
|
+
};
|
|
112
161
|
};
|
|
113
162
|
}
|
|
114
|
-
export
|
|
163
|
+
export interface PayloadOptions {
|
|
164
|
+
projectKey?: string;
|
|
165
|
+
fieldMap?: FieldMap;
|
|
166
|
+
richMapping?: boolean;
|
|
167
|
+
}
|
|
168
|
+
export declare function itemToJiraPayload(item: PmItem, projectKeyOrOptions?: string | PayloadOptions): JiraCreatePayload;
|
|
169
|
+
export interface ExportPlanEntry {
|
|
170
|
+
op: "create" | "update";
|
|
171
|
+
itemId?: string;
|
|
172
|
+
existingKey?: string;
|
|
173
|
+
method: "POST" | "PUT";
|
|
174
|
+
endpoint: string;
|
|
175
|
+
payload: JiraCreatePayload;
|
|
176
|
+
}
|
|
177
|
+
export interface ExportPlan {
|
|
178
|
+
baseUrl: string;
|
|
179
|
+
project?: string;
|
|
180
|
+
entries: ExportPlanEntry[];
|
|
181
|
+
}
|
|
182
|
+
export declare function buildExportPlan(items: PmItem[], baseUrl: string, opts?: {
|
|
183
|
+
projectKey?: string;
|
|
184
|
+
fieldMap?: FieldMap;
|
|
185
|
+
richMapping?: boolean;
|
|
186
|
+
}): ExportPlan;
|
|
187
|
+
export interface PushOnWriteDecision {
|
|
188
|
+
shouldPush: boolean;
|
|
189
|
+
reason: string;
|
|
190
|
+
}
|
|
191
|
+
export declare function decidePushOnWrite(hookCtx: {
|
|
192
|
+
path?: string;
|
|
193
|
+
scope?: string;
|
|
194
|
+
op?: string;
|
|
195
|
+
} | undefined, envLike?: NodeJS.ProcessEnv): PushOnWriteDecision;
|
|
115
196
|
declare const _default: {
|
|
116
197
|
name: string;
|
|
117
198
|
version: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
// pm-jira — Jira issue sync / importer / exporter for pm-cli
|
|
2
2
|
//
|
|
3
3
|
// Capabilities (see manifest.json):
|
|
4
|
-
// commands — `pm jira sync` (legacy, full-featured pull)
|
|
4
|
+
// commands — `pm jira sync` (legacy, full-featured pull) + `pm jira validate`
|
|
5
5
|
// importers — `pm jira import` (native import pipeline: pull issues via JQL)
|
|
6
6
|
// — `jira-sync` (config-driven importer, kept for back-compat)
|
|
7
|
-
//
|
|
8
|
-
//
|
|
7
|
+
// — `pm jira export` exporter (registerExporter is gated by the
|
|
8
|
+
// `importers` capability; `exporters` is NOT a valid manifest
|
|
9
|
+
// token). Renders pm items as Jira-create payloads; only POSTs
|
|
10
|
+
// with explicit --push AND creds present.
|
|
9
11
|
// schema — declares jira_key / jira_url item fields
|
|
10
|
-
//
|
|
12
|
+
// hooks — opt-in best-effort export-on-write mirror (PM_JIRA_PUSH_ON_WRITE)
|
|
13
|
+
//
|
|
14
|
+
// NOTE: the prior manifest declared `services` but never called
|
|
15
|
+
// registerService — that was a no-op "phantom" capability. We dropped it and
|
|
16
|
+
// added `hooks` (which we actually register). We deliberately do NOT register
|
|
17
|
+
// a service override: per pm-cli issue #96 overriding a core service can
|
|
18
|
+
// corrupt all command output.
|
|
11
19
|
import https from "node:https";
|
|
12
20
|
import { URL } from "node:url";
|
|
13
21
|
import { spawnSync } from "node:child_process";
|
|
@@ -68,7 +76,84 @@ export function mapJiraStatus(jiraStatus, statusMap) {
|
|
|
68
76
|
// Default: to do / open / backlog / any other
|
|
69
77
|
return "open";
|
|
70
78
|
}
|
|
79
|
+
// Map a Jira statusCategory key (the workflow-agnostic bucket Jira assigns to
|
|
80
|
+
// every status: "new" | "indeterminate" | "done") to a pm status. This is a
|
|
81
|
+
// robust fallback that works across custom workflows where the status *name*
|
|
82
|
+
// is unrecognized but the category is always one of three known values.
|
|
83
|
+
export function mapJiraStatusCategory(categoryKey) {
|
|
84
|
+
switch ((categoryKey ?? "").toLowerCase()) {
|
|
85
|
+
case "done":
|
|
86
|
+
return "closed";
|
|
87
|
+
case "indeterminate":
|
|
88
|
+
return "in_progress";
|
|
89
|
+
case "new":
|
|
90
|
+
default:
|
|
91
|
+
return "open";
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Map a Jira issue type to a pm item type. Defaults follow pm's common type
|
|
95
|
+
// vocabulary; a `--map issuetype=<pmType>` override can replace the result.
|
|
96
|
+
export function mapJiraIssueType(jiraType) {
|
|
97
|
+
const name = (jiraType ?? "").toLowerCase();
|
|
98
|
+
if (name === "bug" || name === "defect")
|
|
99
|
+
return "Bug";
|
|
100
|
+
if (name === "story" || name === "user story")
|
|
101
|
+
return "Feature";
|
|
102
|
+
if (name === "epic")
|
|
103
|
+
return "Feature";
|
|
104
|
+
if (name === "task" || name === "sub-task" || name === "subtask")
|
|
105
|
+
return "Task";
|
|
106
|
+
return "Issue";
|
|
107
|
+
}
|
|
108
|
+
// Reverse priority map: pm priority (1..4) -> Jira priority name, for export.
|
|
109
|
+
export function mapPmPriorityToJira(priority) {
|
|
110
|
+
switch (priority) {
|
|
111
|
+
case 1:
|
|
112
|
+
return "Highest";
|
|
113
|
+
case 2:
|
|
114
|
+
return "High";
|
|
115
|
+
case 4:
|
|
116
|
+
return "Low";
|
|
117
|
+
case 3:
|
|
118
|
+
default:
|
|
119
|
+
return "Medium";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
71
122
|
const PM_STATUSES = ["open", "in_progress", "closed", "blocked"];
|
|
123
|
+
const KNOWN_MAP_KEYS = new Set([
|
|
124
|
+
"status",
|
|
125
|
+
"statuscategory",
|
|
126
|
+
"priority",
|
|
127
|
+
"issuetype",
|
|
128
|
+
"labels",
|
|
129
|
+
"assignee",
|
|
130
|
+
"duedate",
|
|
131
|
+
"type",
|
|
132
|
+
]);
|
|
133
|
+
export function parseFieldMap(raw) {
|
|
134
|
+
if (!raw)
|
|
135
|
+
return undefined;
|
|
136
|
+
const map = {};
|
|
137
|
+
for (const pair of raw.split(",")) {
|
|
138
|
+
const trimmed = pair.trim();
|
|
139
|
+
if (!trimmed)
|
|
140
|
+
continue;
|
|
141
|
+
const eq = trimmed.indexOf("=");
|
|
142
|
+
if (eq < 0) {
|
|
143
|
+
throw new CommandError(`Invalid --map entry "${trimmed}" (expected "jiraField=pmField").`, EXIT_CODE.USAGE);
|
|
144
|
+
}
|
|
145
|
+
const from = trimmed.slice(0, eq).trim().toLowerCase();
|
|
146
|
+
const to = trimmed.slice(eq + 1).trim();
|
|
147
|
+
if (!from || !to) {
|
|
148
|
+
throw new CommandError(`Invalid --map entry "${trimmed}" (empty field name).`, EXIT_CODE.USAGE);
|
|
149
|
+
}
|
|
150
|
+
if (!KNOWN_MAP_KEYS.has(from)) {
|
|
151
|
+
throw new CommandError(`Unknown --map source field "${from}" (expected one of ${[...KNOWN_MAP_KEYS].join("|")}).`, EXIT_CODE.USAGE);
|
|
152
|
+
}
|
|
153
|
+
map[from] = to;
|
|
154
|
+
}
|
|
155
|
+
return Object.keys(map).length > 0 ? map : undefined;
|
|
156
|
+
}
|
|
72
157
|
// Parse a --status-map value of the form
|
|
73
158
|
// "In Progress=in_progress,QA=blocked"
|
|
74
159
|
// into a lower-cased lookup table. Invalid pm-status targets are rejected with
|
|
@@ -97,6 +182,71 @@ export function parseStatusMap(raw) {
|
|
|
97
182
|
}
|
|
98
183
|
return Object.keys(map).length > 0 ? map : undefined;
|
|
99
184
|
}
|
|
185
|
+
// Map a pm status to the Jira statusCategory clause it implies, so
|
|
186
|
+
// `--status closed` can filter Jira-side without enumerating every workflow
|
|
187
|
+
// state. Unknown / raw Jira statuses are matched literally on `status`.
|
|
188
|
+
const PM_STATUS_TO_JQL = {
|
|
189
|
+
open: "statusCategory = \"To Do\"",
|
|
190
|
+
in_progress: "statusCategory = \"In Progress\"",
|
|
191
|
+
closed: "statusCategory = Done",
|
|
192
|
+
blocked: "status = \"Blocked\"",
|
|
193
|
+
};
|
|
194
|
+
// Quote a JQL value: numbers/keys stay bare where Jira allows it, but anything
|
|
195
|
+
// with whitespace or punctuation is wrapped in double quotes (escaping any
|
|
196
|
+
// embedded quote) so user input can't break out of the clause.
|
|
197
|
+
export function jqlQuote(value) {
|
|
198
|
+
if (/^[A-Za-z0-9_.-]+$/.test(value))
|
|
199
|
+
return value;
|
|
200
|
+
return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
201
|
+
}
|
|
202
|
+
export function buildJql(filters) {
|
|
203
|
+
// Explicit --jql is authoritative; never rewrite a user's query.
|
|
204
|
+
if (filters.jql && filters.jql.trim())
|
|
205
|
+
return filters.jql.trim();
|
|
206
|
+
const clauses = [];
|
|
207
|
+
if (filters.project)
|
|
208
|
+
clauses.push(`project = ${jqlQuote(filters.project)}`);
|
|
209
|
+
if (filters.status) {
|
|
210
|
+
const key = filters.status.trim().toLowerCase();
|
|
211
|
+
clauses.push(PM_STATUS_TO_JQL[key] ?? `status = ${jqlQuote(filters.status)}`);
|
|
212
|
+
}
|
|
213
|
+
if (filters.assignee) {
|
|
214
|
+
const a = filters.assignee.trim();
|
|
215
|
+
// Recognize the JQL function forms so `--assignee currentUser()` works.
|
|
216
|
+
clauses.push(/\(\s*\)$/.test(a) ? `assignee = ${a}` : `assignee = ${jqlQuote(a)}`);
|
|
217
|
+
}
|
|
218
|
+
if (filters.issueType)
|
|
219
|
+
clauses.push(`issuetype = ${jqlQuote(filters.issueType)}`);
|
|
220
|
+
if (filters.label)
|
|
221
|
+
clauses.push(`labels = ${jqlQuote(filters.label)}`);
|
|
222
|
+
if (filters.updatedSince) {
|
|
223
|
+
// Always quote the date expression: Jira parses a bare "-7d" as arithmetic,
|
|
224
|
+
// so the relative form must be a quoted string ("-7d") to be valid JQL.
|
|
225
|
+
const d = filters.updatedSince.trim();
|
|
226
|
+
clauses.push(`updated >= "${d.replace(/"/g, '\\"')}"`);
|
|
227
|
+
}
|
|
228
|
+
// With no constraints at all, preserve the historical default. Otherwise, if
|
|
229
|
+
// the caller did not themselves filter on status, keep "not done" so an
|
|
230
|
+
// unscoped project pull stays focused on active work (back-compat default).
|
|
231
|
+
if (clauses.length === 0) {
|
|
232
|
+
return "statusCategory != Done ORDER BY priority ASC";
|
|
233
|
+
}
|
|
234
|
+
if (!filters.status)
|
|
235
|
+
clauses.push("statusCategory != Done");
|
|
236
|
+
return `${clauses.join(" AND ")} ORDER BY priority ASC`;
|
|
237
|
+
}
|
|
238
|
+
// Read the convenience JQL filters off a loose options bag (kebab/camel safe).
|
|
239
|
+
export function readJqlFilters(options) {
|
|
240
|
+
return {
|
|
241
|
+
jql: readStringOption(options, "jql"),
|
|
242
|
+
project: readStringOption(options, "project"),
|
|
243
|
+
status: readStringOption(options, "status"),
|
|
244
|
+
assignee: readStringOption(options, "assignee"),
|
|
245
|
+
issueType: readStringOption(options, "issue-type"),
|
|
246
|
+
label: readStringOption(options, "label"),
|
|
247
|
+
updatedSince: readStringOption(options, "updated-since"),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
100
250
|
// ---------------------------------------------------------------------------
|
|
101
251
|
// Jira description (Atlassian Document Format) → plain text
|
|
102
252
|
// ---------------------------------------------------------------------------
|
|
@@ -220,6 +370,38 @@ export function resolveCreds(options, envLike = process.env) {
|
|
|
220
370
|
const authHeader = `Basic ${Buffer.from(`${email}:${token}`).toString("base64")}`;
|
|
221
371
|
return { baseUrl: baseUrl.replace(/\/$/, ""), email: email, token: token, authHeader };
|
|
222
372
|
}
|
|
373
|
+
export function diagnoseCreds(options, envLike = process.env) {
|
|
374
|
+
const hostOption = readStringOption(options, "host");
|
|
375
|
+
const baseUrlEnv = envLike["JIRA_BASE_URL"]?.trim() || undefined;
|
|
376
|
+
const baseUrl = hostOption ?? baseUrlEnv;
|
|
377
|
+
const email = envLike["JIRA_EMAIL"]?.trim() || undefined;
|
|
378
|
+
const token = envLike["JIRA_API_TOKEN"]?.trim() || undefined;
|
|
379
|
+
const missing = [];
|
|
380
|
+
if (!baseUrl)
|
|
381
|
+
missing.push("JIRA_BASE_URL (or --host)");
|
|
382
|
+
if (!email)
|
|
383
|
+
missing.push("JIRA_EMAIL");
|
|
384
|
+
if (!token)
|
|
385
|
+
missing.push("JIRA_API_TOKEN");
|
|
386
|
+
let hostPreview;
|
|
387
|
+
if (baseUrl) {
|
|
388
|
+
try {
|
|
389
|
+
hostPreview = new URL(/^https?:\/\//.test(baseUrl) ? baseUrl : `https://${baseUrl}`).hostname;
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
hostPreview = undefined;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return {
|
|
396
|
+
ready: missing.length === 0,
|
|
397
|
+
baseUrlPresent: Boolean(baseUrl),
|
|
398
|
+
emailPresent: Boolean(email),
|
|
399
|
+
tokenPresent: Boolean(token),
|
|
400
|
+
baseUrlSource: hostOption ? "option" : baseUrlEnv ? "env" : "none",
|
|
401
|
+
hostPreview,
|
|
402
|
+
missing,
|
|
403
|
+
};
|
|
404
|
+
}
|
|
223
405
|
// ---------------------------------------------------------------------------
|
|
224
406
|
// HTTP helpers using Node.js native https module
|
|
225
407
|
// ---------------------------------------------------------------------------
|
|
@@ -299,18 +481,15 @@ function httpsPost(url, authHeader, payload) {
|
|
|
299
481
|
// Fetch all pages from Jira search API
|
|
300
482
|
// ---------------------------------------------------------------------------
|
|
301
483
|
async function fetchAllJiraIssues(baseUrl, authHeader, jql, maxResults) {
|
|
302
|
-
const fields = "summary,description,status,priority,labels,assignee,duedate,fixVersions";
|
|
303
484
|
const allIssues = [];
|
|
304
485
|
let startAt = 0;
|
|
305
486
|
const pageSize = Math.min(maxResults, 100);
|
|
306
487
|
while (allIssues.length < maxResults) {
|
|
307
488
|
const remaining = maxResults - allIssues.length;
|
|
308
489
|
const fetchSize = Math.min(remaining, pageSize);
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
`&startAt=${startAt}` +
|
|
313
|
-
`&maxResults=${fetchSize}`;
|
|
490
|
+
// Reuse the single source-of-truth request builder so the live fetch and
|
|
491
|
+
// the --dry-run preview can never drift apart.
|
|
492
|
+
const { url } = buildSearchRequest(baseUrl, jql, startAt, fetchSize);
|
|
314
493
|
const raw = await httpsGet(url, authHeader);
|
|
315
494
|
const data = JSON.parse(raw);
|
|
316
495
|
if (!data.issues || data.issues.length === 0)
|
|
@@ -322,22 +501,56 @@ async function fetchAllJiraIssues(baseUrl, authHeader, jql, maxResults) {
|
|
|
322
501
|
}
|
|
323
502
|
return allIssues;
|
|
324
503
|
}
|
|
325
|
-
export function issueToItem(issue, baseUrl,
|
|
504
|
+
export function issueToItem(issue, baseUrl, optionsOrStatusMap) {
|
|
505
|
+
// Back-compat: a bare statusMap (the old 3rd arg) is still accepted.
|
|
506
|
+
const mapOptions = optionsOrStatusMap && ("statusMap" in optionsOrStatusMap || "fieldMap" in optionsOrStatusMap)
|
|
507
|
+
? optionsOrStatusMap
|
|
508
|
+
: { statusMap: optionsOrStatusMap };
|
|
509
|
+
const { statusMap, fieldMap } = mapOptions;
|
|
326
510
|
const tags = [
|
|
327
511
|
...(issue.fields.labels ?? []),
|
|
328
512
|
...(issue.fields.fixVersions?.map((v) => v.name) ?? []),
|
|
329
513
|
];
|
|
514
|
+
// Assignee → tag (so it survives without a dedicated pm field) unless --map
|
|
515
|
+
// assignee=<x> pins it elsewhere or the user opts out with assignee=skip.
|
|
516
|
+
const assigneeTarget = fieldMap?.["assignee"];
|
|
517
|
+
if (issue.fields.assignee?.displayName && assigneeTarget !== "skip") {
|
|
518
|
+
tags.push(`assignee:${issue.fields.assignee.displayName.replace(/\s+/g, "-")}`);
|
|
519
|
+
}
|
|
520
|
+
// Status: prefer an explicit name mapping; fall back to the statusCategory
|
|
521
|
+
// bucket when the name is unrecognized. --map statuscategory=<pmStatus> pins.
|
|
522
|
+
const categoryPin = fieldMap?.["statuscategory"];
|
|
523
|
+
const statusPin = fieldMap?.["status"];
|
|
524
|
+
let status;
|
|
525
|
+
if (statusPin && PM_STATUSES.includes(statusPin)) {
|
|
526
|
+
status = statusPin;
|
|
527
|
+
}
|
|
528
|
+
else {
|
|
529
|
+
const byName = mapJiraStatus(issue.fields.status.name, statusMap);
|
|
530
|
+
// If name resolution defaulted to "open" but the category says otherwise,
|
|
531
|
+
// trust the category (covers custom workflow states).
|
|
532
|
+
const byCategory = categoryPin && PM_STATUSES.includes(categoryPin)
|
|
533
|
+
? categoryPin
|
|
534
|
+
: mapJiraStatusCategory(issue.fields.status.statusCategory?.key);
|
|
535
|
+
status = byName === "open" && byCategory !== "open" ? byCategory : byName;
|
|
536
|
+
}
|
|
537
|
+
// Type: --map type=<x> / issuetype=<x> pins; else derive from Jira issuetype.
|
|
538
|
+
const typePin = fieldMap?.["type"] ?? fieldMap?.["issuetype"];
|
|
539
|
+
const type = typePin ?? mapJiraIssueType(issue.fields.issuetype?.name);
|
|
330
540
|
const rawBody = adfToPlainText(issue.fields.description);
|
|
331
541
|
const browseUrl = `${baseUrl.replace(/\/$/, "")}/browse/${issue.key}`;
|
|
332
542
|
return {
|
|
333
543
|
title: `[${issue.key}] ${issue.fields.summary}`,
|
|
334
|
-
status
|
|
544
|
+
status,
|
|
335
545
|
priority: mapJiraPriority(issue.fields.priority?.name),
|
|
546
|
+
type,
|
|
336
547
|
body: rawBody,
|
|
337
548
|
tags,
|
|
338
549
|
deadline: issue.fields.duedate ?? undefined,
|
|
339
550
|
// Provenance marker lives in the description so it survives round-trips.
|
|
340
551
|
description: jiraProvenance(issue.key, browseUrl),
|
|
552
|
+
jiraKey: issue.key,
|
|
553
|
+
jiraUrl: browseUrl,
|
|
341
554
|
};
|
|
342
555
|
}
|
|
343
556
|
function createPmItem(pmRoot, item) {
|
|
@@ -346,7 +559,7 @@ function createPmItem(pmRoot, item) {
|
|
|
346
559
|
"create",
|
|
347
560
|
"--title", item.title,
|
|
348
561
|
"--status", item.status,
|
|
349
|
-
"--type",
|
|
562
|
+
"--type", item.type,
|
|
350
563
|
"--priority", String(item.priority),
|
|
351
564
|
"--description", item.description,
|
|
352
565
|
...(item.body ? ["--body", item.body] : []),
|
|
@@ -356,21 +569,47 @@ function createPmItem(pmRoot, item) {
|
|
|
356
569
|
const result = spawnSync("pm", args, { encoding: "utf-8" });
|
|
357
570
|
return result.status === 0;
|
|
358
571
|
}
|
|
359
|
-
|
|
360
|
-
|
|
572
|
+
const SEARCH_FIELDS = "summary,description,status,priority,labels,assignee,duedate,fixVersions,issuetype";
|
|
573
|
+
export function buildSearchRequest(baseUrl, jql, startAt, maxResults) {
|
|
574
|
+
const url = `${baseUrl.replace(/\/$/, "")}/rest/api/3/search` +
|
|
575
|
+
`?jql=${encodeURIComponent(jql)}` +
|
|
576
|
+
`&fields=${encodeURIComponent(SEARCH_FIELDS)}` +
|
|
577
|
+
`&startAt=${startAt}` +
|
|
578
|
+
`&maxResults=${Math.min(maxResults, 100)}`;
|
|
579
|
+
return { method: "GET", url, fields: SEARCH_FIELDS };
|
|
580
|
+
}
|
|
361
581
|
async function runImport(options, pmRoot, opts = {}) {
|
|
362
582
|
const creds = resolveCreds(options);
|
|
363
583
|
const project = readStringOption(options, "project");
|
|
364
584
|
const customJql = readStringOption(options, "jql");
|
|
365
585
|
const maxResults = readNumberOption(options, "max-results") ?? 500;
|
|
366
586
|
const statusMap = parseStatusMap(readStringOption(options, "status-map"));
|
|
587
|
+
const fieldMap = parseFieldMap(readStringOption(options, "map"));
|
|
367
588
|
const dryRun = opts.dryRun ?? readBooleanOption(options, "dry-run");
|
|
368
589
|
const statusFilter = opts.statusFilter ?? readStringOption(options, "status");
|
|
369
590
|
if (!project && !customJql) {
|
|
370
591
|
throw new CommandError("Provide either --project <KEY> or --jql <query> to specify which issues to import.", EXIT_CODE.USAGE);
|
|
371
592
|
}
|
|
372
|
-
const jql =
|
|
373
|
-
|
|
593
|
+
const jql = buildJql(readJqlFilters(options));
|
|
594
|
+
const projectLabel = project ?? "custom-jql";
|
|
595
|
+
// --dry-run makes NO network call: it prints the JQL + the exact GET request
|
|
596
|
+
// the importer would issue, then returns. This is the offline-testable path.
|
|
597
|
+
if (dryRun) {
|
|
598
|
+
const request = buildSearchRequest(creds.baseUrl, jql, 0, maxResults);
|
|
599
|
+
console.error(`[dry-run] No network call will be made.`);
|
|
600
|
+
console.error(`[dry-run] JQL: ${jql}`);
|
|
601
|
+
console.error(`[dry-run] Would ${request.method} ${request.url}`);
|
|
602
|
+
console.error(`[dry-run] Up to ${maxResults} issues would be imported as pm items.`);
|
|
603
|
+
return {
|
|
604
|
+
success: true,
|
|
605
|
+
dryRun: true,
|
|
606
|
+
jql,
|
|
607
|
+
request,
|
|
608
|
+
maxResults,
|
|
609
|
+
project: projectLabel,
|
|
610
|
+
...(statusFilter ? { statusFilter } : {}),
|
|
611
|
+
};
|
|
612
|
+
}
|
|
374
613
|
console.error(`Fetching issues from Jira... (JQL: ${jql})`);
|
|
375
614
|
let issues;
|
|
376
615
|
try {
|
|
@@ -384,7 +623,7 @@ async function runImport(options, pmRoot, opts = {}) {
|
|
|
384
623
|
console.error(`Fetched ${issues.length} issues from Jira`);
|
|
385
624
|
const mapped = issues.map((issue) => ({
|
|
386
625
|
issue,
|
|
387
|
-
item: issueToItem(issue, creds.baseUrl, statusMap),
|
|
626
|
+
item: issueToItem(issue, creds.baseUrl, { statusMap, fieldMap }),
|
|
388
627
|
}));
|
|
389
628
|
const filtered = statusFilter
|
|
390
629
|
? mapped.filter(({ item }) => item.status === statusFilter)
|
|
@@ -392,16 +631,6 @@ async function runImport(options, pmRoot, opts = {}) {
|
|
|
392
631
|
if (statusFilter && filtered.length !== mapped.length) {
|
|
393
632
|
console.error(`Filtered to ${filtered.length} issues with pm status "${statusFilter}"`);
|
|
394
633
|
}
|
|
395
|
-
const projectLabel = project ?? "custom-jql";
|
|
396
|
-
if (dryRun) {
|
|
397
|
-
console.error(`[dry-run] Would create ${filtered.length} items:`);
|
|
398
|
-
for (const { issue, item } of filtered.slice(0, 20)) {
|
|
399
|
-
console.error(` ${issue.key}: ${issue.fields.summary} [${item.status}]`);
|
|
400
|
-
}
|
|
401
|
-
if (filtered.length > 20)
|
|
402
|
-
console.error(` ... and ${filtered.length - 20} more`);
|
|
403
|
-
return { success: true, dryRun: true, total: filtered.length, project: projectLabel };
|
|
404
|
-
}
|
|
405
634
|
let created = 0;
|
|
406
635
|
for (const { issue, item } of filtered) {
|
|
407
636
|
if (createPmItem(pmRoot, item))
|
|
@@ -419,6 +648,17 @@ async function runImport(options, pmRoot, opts = {}) {
|
|
|
419
648
|
summary: `Imported ${created} issues from Jira ${projectLabel}`,
|
|
420
649
|
};
|
|
421
650
|
}
|
|
651
|
+
// Reverse type map: pm item type -> Jira issue type name, for export.
|
|
652
|
+
export function mapPmTypeToJira(pmType, override) {
|
|
653
|
+
if (override)
|
|
654
|
+
return override;
|
|
655
|
+
const t = (pmType ?? "").toLowerCase();
|
|
656
|
+
if (t === "bug")
|
|
657
|
+
return "Bug";
|
|
658
|
+
if (t === "feature" || t === "epic" || t === "story")
|
|
659
|
+
return "Story";
|
|
660
|
+
return "Task";
|
|
661
|
+
}
|
|
422
662
|
function readPmItems(pmRoot) {
|
|
423
663
|
const result = spawnSync("pm", ["--path", pmRoot, "--json", "list", "--full", "--include-body", "--limit", "10000"], { encoding: "utf-8" });
|
|
424
664
|
if (result.status !== 0) {
|
|
@@ -435,18 +675,82 @@ function readPmItems(pmRoot) {
|
|
|
435
675
|
}
|
|
436
676
|
// Convert a pm item to a Jira create payload. `projectKey` is optional so the
|
|
437
677
|
// transform stays pure/testable; the exporter requires it before POSTing.
|
|
438
|
-
|
|
678
|
+
// Accepts either a bare projectKey (back-compat) or a PayloadOptions object.
|
|
679
|
+
export function itemToJiraPayload(item, projectKeyOrOptions) {
|
|
680
|
+
const opts = typeof projectKeyOrOptions === "string"
|
|
681
|
+
? { projectKey: projectKeyOrOptions }
|
|
682
|
+
: projectKeyOrOptions ?? {};
|
|
683
|
+
const { projectKey, fieldMap, richMapping } = opts;
|
|
439
684
|
const summary = (item.title ?? "(untitled)").trim() || "(untitled)";
|
|
440
685
|
const bodyText = item.body || item.description || "";
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
},
|
|
686
|
+
const issuetypeName = richMapping
|
|
687
|
+
? mapPmTypeToJira(item.type, fieldMap?.["issuetype"] ?? fieldMap?.["type"])
|
|
688
|
+
: "Task";
|
|
689
|
+
const fields = {
|
|
690
|
+
...(projectKey ? { project: { key: projectKey } } : {}),
|
|
691
|
+
summary,
|
|
692
|
+
description: plainTextToAdf(bodyText),
|
|
693
|
+
issuetype: { name: issuetypeName },
|
|
694
|
+
labels: (item.tags ?? []).map((t) => t.replace(/\s+/g, "-")),
|
|
449
695
|
};
|
|
696
|
+
if (richMapping && item.priority !== undefined) {
|
|
697
|
+
fields.priority = { name: mapPmPriorityToJira(item.priority) };
|
|
698
|
+
}
|
|
699
|
+
return { fields };
|
|
700
|
+
}
|
|
701
|
+
export function buildExportPlan(items, baseUrl, opts = {}) {
|
|
702
|
+
const cleanBase = baseUrl.replace(/\/$/, "");
|
|
703
|
+
const entries = items.map((item) => {
|
|
704
|
+
const provenance = extractJiraKey(item.description) ?? extractJiraKey(item.body);
|
|
705
|
+
const payload = itemToJiraPayload(item, {
|
|
706
|
+
projectKey: opts.projectKey,
|
|
707
|
+
fieldMap: opts.fieldMap,
|
|
708
|
+
richMapping: opts.richMapping,
|
|
709
|
+
});
|
|
710
|
+
if (provenance) {
|
|
711
|
+
return {
|
|
712
|
+
op: "update",
|
|
713
|
+
itemId: item.id,
|
|
714
|
+
existingKey: provenance.key,
|
|
715
|
+
method: "PUT",
|
|
716
|
+
endpoint: `${cleanBase}/rest/api/3/issue/${provenance.key}`,
|
|
717
|
+
payload,
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
return {
|
|
721
|
+
op: "create",
|
|
722
|
+
itemId: item.id,
|
|
723
|
+
method: "POST",
|
|
724
|
+
endpoint: `${cleanBase}/rest/api/3/issue`,
|
|
725
|
+
payload,
|
|
726
|
+
};
|
|
727
|
+
});
|
|
728
|
+
return { baseUrl: cleanBase, project: opts.projectKey, entries };
|
|
729
|
+
}
|
|
730
|
+
function isTruthyEnv(value) {
|
|
731
|
+
if (!value)
|
|
732
|
+
return false;
|
|
733
|
+
const s = value.trim().toLowerCase();
|
|
734
|
+
return s === "1" || s === "true" || s === "yes" || s === "on";
|
|
735
|
+
}
|
|
736
|
+
export function decidePushOnWrite(hookCtx, envLike = process.env) {
|
|
737
|
+
if (!isTruthyEnv(envLike["PM_JIRA_PUSH_ON_WRITE"])) {
|
|
738
|
+
return { shouldPush: false, reason: "disabled (PM_JIRA_PUSH_ON_WRITE not set)" };
|
|
739
|
+
}
|
|
740
|
+
const op = hookCtx?.op ?? "";
|
|
741
|
+
if (op.endsWith(":history")) {
|
|
742
|
+
return { shouldPush: false, reason: "history-stream write ignored" };
|
|
743
|
+
}
|
|
744
|
+
if (op === "delete") {
|
|
745
|
+
return { shouldPush: false, reason: "deletes are not mirrored" };
|
|
746
|
+
}
|
|
747
|
+
if (hookCtx?.scope && hookCtx.scope !== "project") {
|
|
748
|
+
return { shouldPush: false, reason: `non-project scope (${hookCtx.scope})` };
|
|
749
|
+
}
|
|
750
|
+
if (op !== "create" && op !== "update") {
|
|
751
|
+
return { shouldPush: false, reason: `unhandled op (${op || "none"})` };
|
|
752
|
+
}
|
|
753
|
+
return { shouldPush: true, reason: `mirror ${op}` };
|
|
450
754
|
}
|
|
451
755
|
// ---------------------------------------------------------------------------
|
|
452
756
|
// Extension
|
|
@@ -456,18 +760,29 @@ const PULL_FLAGS = [
|
|
|
456
760
|
{ long: "--jql", value_name: "query", description: "Custom JQL query (overrides --project default)" },
|
|
457
761
|
{ long: "--host", value_name: "url", description: "Jira base URL override (else JIRA_BASE_URL)" },
|
|
458
762
|
{ long: "--max-results", value_name: "n", description: "Max issues to fetch (default: 500)" },
|
|
459
|
-
{ long: "--status", value_name: "filter", description: "Filter by pm status (open|in_progress|closed|blocked)" },
|
|
763
|
+
{ long: "--status", value_name: "filter", description: "Filter by status: pm status (open|in_progress|closed|blocked) or raw Jira status" },
|
|
764
|
+
{ long: "--assignee", value_name: "user", description: "Filter by assignee (accountId, name, or currentUser())" },
|
|
765
|
+
{ long: "--issue-type", value_name: "type", description: "Filter by Jira issue type (e.g. Bug)" },
|
|
766
|
+
{ long: "--label", value_name: "label", description: "Filter by Jira label" },
|
|
767
|
+
{ long: "--updated-since", value_name: "date", description: 'Filter by updated date (e.g. "-7d" or "2026-01-01")' },
|
|
460
768
|
{ long: "--status-map", value_name: "map", description: 'Override status mapping, e.g. "QA=blocked,Done=closed"' },
|
|
461
|
-
{ long: "--
|
|
769
|
+
{ long: "--map", value_name: "pairs", description: 'Override field mapping, e.g. "issuetype=Task,assignee=skip"' },
|
|
770
|
+
{ long: "--dry-run", description: "Preview the JQL + request without any network call" },
|
|
462
771
|
];
|
|
463
772
|
const EXPORT_FLAGS = [
|
|
464
773
|
{ long: "--project", value_name: "KEY", description: "Target Jira project key for created issues" },
|
|
465
774
|
{ long: "--host", value_name: "url", description: "Jira base URL override (else JIRA_BASE_URL)" },
|
|
775
|
+
{ long: "--map", value_name: "pairs", description: 'Override field mapping, e.g. "issuetype=Story"' },
|
|
776
|
+
{ long: "--rich", description: "Derive Jira issuetype + priority from pm item type/priority" },
|
|
777
|
+
{ long: "--dry-run", description: "Print the Jira mutations that would be made, without any network call" },
|
|
466
778
|
{ long: "--push", description: "POST the payloads to Jira (requires creds + --project)" },
|
|
467
779
|
];
|
|
780
|
+
const VALIDATE_FLAGS = [
|
|
781
|
+
{ long: "--host", value_name: "url", description: "Jira base URL override (else JIRA_BASE_URL)" },
|
|
782
|
+
];
|
|
468
783
|
export default defineExtension({
|
|
469
784
|
name: "pm-jira",
|
|
470
|
-
version: "2026.6.
|
|
785
|
+
version: "2026.6.3",
|
|
471
786
|
activate(api) {
|
|
472
787
|
// -----------------------------------------------------------------------
|
|
473
788
|
// schema — declare Jira provenance fields so the workspace knows them
|
|
@@ -488,7 +803,9 @@ export default defineExtension({
|
|
|
488
803
|
"pm jira sync --project PROJ --max-results 200",
|
|
489
804
|
"pm jira sync --jql 'project = PROJ AND assignee = currentUser()'",
|
|
490
805
|
"pm jira sync --project PROJ --status open --dry-run",
|
|
491
|
-
"pm jira sync --project PROJ --
|
|
806
|
+
"pm jira sync --project PROJ --assignee currentUser() --updated-since -7d",
|
|
807
|
+
"pm jira sync --project PROJ --issue-type Bug --status-map 'QA=blocked,Done=closed'",
|
|
808
|
+
"pm jira sync --project PROJ --map 'issuetype=Task,assignee=skip'",
|
|
492
809
|
],
|
|
493
810
|
flags: PULL_FLAGS,
|
|
494
811
|
async run(ctx) {
|
|
@@ -520,17 +837,17 @@ export default defineExtension({
|
|
|
520
837
|
const customJql = readStringOption(options, "jql");
|
|
521
838
|
const maxResults = readNumberOption(options, "max-results") ?? 500;
|
|
522
839
|
const statusMap = parseStatusMap(readStringOption(options, "status-map"));
|
|
840
|
+
const fieldMap = parseFieldMap(readStringOption(options, "map"));
|
|
523
841
|
if (!project && !customJql) {
|
|
524
842
|
throw new CommandError("jira-sync importer requires either options.project or options.jql", EXIT_CODE.USAGE);
|
|
525
843
|
}
|
|
526
|
-
const jql =
|
|
527
|
-
`project = ${project} AND statusCategory != Done ORDER BY priority ASC`;
|
|
844
|
+
const jql = buildJql(readJqlFilters(options));
|
|
528
845
|
console.error(`[jira-sync] Fetching issues with JQL: ${jql}`);
|
|
529
846
|
const issues = await fetchAllJiraIssues(creds.baseUrl, creds.authHeader, jql, maxResults);
|
|
530
847
|
console.error(`[jira-sync] Importing ${issues.length} issues`);
|
|
531
848
|
let created = 0;
|
|
532
849
|
for (const issue of issues) {
|
|
533
|
-
if (createPmItem(ctx.pm_root, issueToItem(issue, creds.baseUrl, statusMap)))
|
|
850
|
+
if (createPmItem(ctx.pm_root, issueToItem(issue, creds.baseUrl, { statusMap, fieldMap })))
|
|
534
851
|
created++;
|
|
535
852
|
}
|
|
536
853
|
console.error(`[jira-sync] Done. Imported ${created} issues.`);
|
|
@@ -544,8 +861,36 @@ export default defineExtension({
|
|
|
544
861
|
api.registerExporter("jira", async (ctx) => {
|
|
545
862
|
const options = ctx.options || {};
|
|
546
863
|
const push = readBooleanOption(options, "push");
|
|
864
|
+
const dryRun = readBooleanOption(options, "dry-run");
|
|
865
|
+
const rich = readBooleanOption(options, "rich");
|
|
547
866
|
const project = readStringOption(options, "project");
|
|
867
|
+
const fieldMap = parseFieldMap(readStringOption(options, "map"));
|
|
548
868
|
const items = readPmItems(ctx.pm_root);
|
|
869
|
+
// --dry-run: build and PRINT the exact Jira mutations that WOULD be made
|
|
870
|
+
// from the current pm items, without resolving creds or hitting the
|
|
871
|
+
// network. Uses --host if given else a placeholder base so the endpoint
|
|
872
|
+
// shape is still inspectable offline.
|
|
873
|
+
if (dryRun) {
|
|
874
|
+
const baseUrl = readStringOption(options, "host") ??
|
|
875
|
+
(process.env["JIRA_BASE_URL"]?.trim() || "https://<JIRA_BASE_URL>");
|
|
876
|
+
const plan = buildExportPlan(items, baseUrl, {
|
|
877
|
+
projectKey: project,
|
|
878
|
+
fieldMap,
|
|
879
|
+
richMapping: rich,
|
|
880
|
+
});
|
|
881
|
+
const creates = plan.entries.filter((e) => e.op === "create").length;
|
|
882
|
+
const updates = plan.entries.filter((e) => e.op === "update").length;
|
|
883
|
+
console.error(`[dry-run] No network call will be made.`);
|
|
884
|
+
console.error(`[dry-run] Would issue ${plan.entries.length} Jira mutation(s): ${creates} create, ${updates} update.`);
|
|
885
|
+
for (const entry of plan.entries.slice(0, 20)) {
|
|
886
|
+
const tag = entry.op === "update" ? ` (existing ${entry.existingKey})` : "";
|
|
887
|
+
console.error(`[dry-run] ${entry.method} ${entry.endpoint}${tag} :: ${entry.payload.fields.summary}`);
|
|
888
|
+
}
|
|
889
|
+
if (plan.entries.length > 20) {
|
|
890
|
+
console.error(`[dry-run] ... and ${plan.entries.length - 20} more`);
|
|
891
|
+
}
|
|
892
|
+
return { dryRun: true, pushed: false, plan };
|
|
893
|
+
}
|
|
549
894
|
if (push) {
|
|
550
895
|
// Resolve creds first so the missing-creds path returns a structured
|
|
551
896
|
// CommandError before we ever build payloads or hit the network.
|
|
@@ -553,11 +898,19 @@ export default defineExtension({
|
|
|
553
898
|
if (!project) {
|
|
554
899
|
throw new CommandError("--push requires --project <KEY> (the target Jira project for new issues).", EXIT_CODE.USAGE);
|
|
555
900
|
}
|
|
556
|
-
|
|
901
|
+
// Only CREATE new issues here; items that already carry a Jira key are
|
|
902
|
+
// skipped so a re-export never duplicates upstream issues.
|
|
903
|
+
const plan = buildExportPlan(items, creds.baseUrl, {
|
|
904
|
+
projectKey: project,
|
|
905
|
+
fieldMap,
|
|
906
|
+
richMapping: rich,
|
|
907
|
+
});
|
|
908
|
+
const toCreate = plan.entries.filter((e) => e.op === "create");
|
|
909
|
+
const skipped = plan.entries.length - toCreate.length;
|
|
557
910
|
let created = 0;
|
|
558
|
-
for (const
|
|
911
|
+
for (const entry of toCreate) {
|
|
559
912
|
try {
|
|
560
|
-
await httpsPost(
|
|
913
|
+
await httpsPost(entry.endpoint, creds.authHeader, JSON.stringify(entry.payload));
|
|
561
914
|
created++;
|
|
562
915
|
}
|
|
563
916
|
catch (err) {
|
|
@@ -565,13 +918,80 @@ export default defineExtension({
|
|
|
565
918
|
throw new CommandError(`Failed to create Jira issue: ${msg}`);
|
|
566
919
|
}
|
|
567
920
|
}
|
|
568
|
-
console.error(`Created ${created} issue(s) in Jira project ${project}.`
|
|
569
|
-
|
|
921
|
+
console.error(`Created ${created} issue(s) in Jira project ${project}.` +
|
|
922
|
+
(skipped > 0 ? ` Skipped ${skipped} item(s) that already have a Jira key.` : ""));
|
|
923
|
+
return { pushed: true, created, skipped, project };
|
|
570
924
|
}
|
|
571
|
-
const
|
|
925
|
+
const baseUrl = readStringOption(options, "host") ??
|
|
926
|
+
(process.env["JIRA_BASE_URL"]?.trim() || "https://<JIRA_BASE_URL>");
|
|
927
|
+
const plan = buildExportPlan(items, baseUrl, {
|
|
928
|
+
projectKey: project,
|
|
929
|
+
fieldMap,
|
|
930
|
+
richMapping: rich,
|
|
931
|
+
});
|
|
932
|
+
const payloads = plan.entries.map((e) => e.payload);
|
|
572
933
|
console.log(JSON.stringify(payloads, null, 2));
|
|
573
934
|
return { exported: payloads.length, pushed: false };
|
|
574
935
|
});
|
|
936
|
+
// -----------------------------------------------------------------------
|
|
937
|
+
// Command: pm jira validate — credential / readiness diagnostics.
|
|
938
|
+
// Never performs a network call and never leaks the token or email; it
|
|
939
|
+
// reports presence booleans + a redacted host preview. --json returns the
|
|
940
|
+
// structured object (the global --json flag controls rendering).
|
|
941
|
+
// -----------------------------------------------------------------------
|
|
942
|
+
api.registerCommand({
|
|
943
|
+
name: "jira validate",
|
|
944
|
+
description: "Check Jira credential / base-URL readiness (no secrets leaked, no network)",
|
|
945
|
+
intent: "Diagnose whether pm-jira has the env/config it needs to talk to Jira",
|
|
946
|
+
examples: ["pm jira validate", "pm jira validate --json", "pm jira validate --host https://co.atlassian.net"],
|
|
947
|
+
flags: VALIDATE_FLAGS,
|
|
948
|
+
async run(ctx) {
|
|
949
|
+
const diag = diagnoseCreds(ctx.options || {});
|
|
950
|
+
const json = Boolean(ctx.global?.json);
|
|
951
|
+
if (!json) {
|
|
952
|
+
// Human-readable summary on stderr; the returned object is what pm
|
|
953
|
+
// renders to stdout. Never print the token/email values.
|
|
954
|
+
console.error(diag.ready ? "Jira credentials: READY" : "Jira credentials: NOT READY");
|
|
955
|
+
console.error(` base URL present: ${diag.baseUrlPresent} (source: ${diag.baseUrlSource})`);
|
|
956
|
+
if (diag.hostPreview)
|
|
957
|
+
console.error(` host: ${diag.hostPreview}`);
|
|
958
|
+
console.error(` email present: ${diag.emailPresent}`);
|
|
959
|
+
console.error(` token present: ${diag.tokenPresent}`);
|
|
960
|
+
if (!diag.ready)
|
|
961
|
+
console.error(` missing: ${diag.missing.join(", ")}`);
|
|
962
|
+
}
|
|
963
|
+
// Return the object: in --json mode pm serializes it; otherwise pm
|
|
964
|
+
// renders a compact view. Either way we do not corrupt stdout.
|
|
965
|
+
return diag;
|
|
966
|
+
},
|
|
967
|
+
});
|
|
968
|
+
// -----------------------------------------------------------------------
|
|
969
|
+
// hooks — best-effort export-on-write mirror (OPT-IN).
|
|
970
|
+
// Gated on PM_JIRA_PUSH_ON_WRITE being truthy AND full creds present. When
|
|
971
|
+
// disabled or unconfigured it is a strict no-op. The pm hook runtime already
|
|
972
|
+
// swallows any throw from a hook into a warning, so this can NEVER fail the
|
|
973
|
+
// user's pm command; we additionally guard internally for clarity.
|
|
974
|
+
// -----------------------------------------------------------------------
|
|
975
|
+
api.hooks.onWrite(async (hookCtx) => {
|
|
976
|
+
const decision = decidePushOnWrite(hookCtx, process.env);
|
|
977
|
+
if (!decision.shouldPush)
|
|
978
|
+
return;
|
|
979
|
+
// Live mirror requires creds + network; in this build it is intentionally
|
|
980
|
+
// a best-effort stub that no-ops without creds. When creds are present a
|
|
981
|
+
// future revision can PUT the changed item upstream. We keep the network
|
|
982
|
+
// call out of the default path so writes stay fast and offline-safe.
|
|
983
|
+
try {
|
|
984
|
+
const diag = diagnoseCreds({}, process.env);
|
|
985
|
+
if (!diag.ready)
|
|
986
|
+
return; // no creds → silent no-op
|
|
987
|
+
// Intentionally minimal: real upstream PUT is left to an explicit
|
|
988
|
+
// `pm jira export --push` so a stray write never spams Jira. The hook
|
|
989
|
+
// exists to make the opt-in surface real + testable.
|
|
990
|
+
}
|
|
991
|
+
catch {
|
|
992
|
+
// Swallow — a hook must never break the user's pm command.
|
|
993
|
+
}
|
|
994
|
+
});
|
|
575
995
|
},
|
|
576
996
|
});
|
|
577
997
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,oCAAoC;AACpC,iFAAiF;AACjF,+EAA+E;AAC/E,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,wDAAwD;AACxD,yDAAyD;AACzD,kFAAkF;AAClF,EAAE;AACF,gEAAgE;AAChE,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,8BAA8B;AAE9B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,MAAM,eAAe,GAA+B,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,SAAS,CAAQ,CAAC;AAE3F,yEAAyE;AACzE,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,eAAe,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;CACJ,CAAC;AAEX,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAS;IACjB,YAAY,OAAe,EAAE,WAAmB,SAAS,CAAC,eAAe;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AA0CD,MAAM,UAAU,eAAe,CAAC,YAAgC;IAC9D,IAAI,CAAC,YAAY;QAAE,OAAO,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAChC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAClD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,SAAoC;IAEpC,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,6EAA6E;IAC7E,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC,IAAI,CAAE,CAAC;IAC5D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,IACE,IAAI,KAAK,aAAa;QACtB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,gBAAgB;QACzB,IAAI,KAAK,aAAa;QAEtB,OAAO,aAAa,CAAC;IACvB,IACE,IAAI,KAAK,MAAM;QACf,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,WAAW;QAEpB,OAAO,QAAQ,CAAC;IAClB,8CAA8C;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,WAA+B;IACnE,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1C,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC;QAClB,KAAK,eAAe;YAClB,OAAO,aAAa,CAAC;QACvB,KAAK,KAAK,CAAC;QACX;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,QAA4B;IAC3D,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,SAAS,CAAC;IAChE,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAChF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB,CAAC,QAAyC;IAC3E,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,CAAC;YACJ,OAAO,SAAS,CAAC;QACnB,KAAK,CAAC;YACJ,OAAO,MAAM,CAAC;QAChB,KAAK,CAAC;YACJ,OAAO,KAAK,CAAC;QACf,KAAK,CAAC,CAAC;QACP;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAatF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,QAAQ;IACR,gBAAgB;IAChB,UAAU;IACV,WAAW;IACX,QAAQ;IACR,UAAU;IACV,SAAS;IACT,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa,CAAC,GAAuB;IACnD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CACpB,wBAAwB,OAAO,mCAAmC,EAClE,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,YAAY,CACpB,wBAAwB,OAAO,uBAAuB,EACtD,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,YAAY,CACpB,+BAA+B,IAAI,sBAAsB,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAC1F,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,yCAAyC;AACzC,yCAAyC;AACzC,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAAC,GAAuB;IACpD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,GAAG,GAA6B,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CACpB,+BAA+B,OAAO,sCAAsC,EAC5E,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAc,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,YAAY,CACpB,+BAA+B,OAAO,wBAAwB,EAC9D,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,YAAY,CACpB,gCAAgC,EAAE,sBAAsB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EACjF,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAuBD,mEAAmE;AACnE,4EAA4E;AAC5E,wEAAwE;AACxE,MAAM,gBAAgB,GAA2B;IAC/C,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,kCAAkC;IAC/C,MAAM,EAAE,uBAAuB;IAC/B,OAAO,EAAE,sBAAsB;CAChC,CAAC;AAEF,+EAA+E;AAC/E,2EAA2E;AAC3E,+DAA+D;AAC/D,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAmB;IAC1C,iEAAiE;IACjE,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE5E,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,YAAY,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClC,wEAAwE;QACxE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClF,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,4EAA4E;QAC5E,wEAAwE;QACxE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,6EAA6E;IAC7E,wEAAwE;IACxE,4EAA4E;IAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,8CAA8C,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAE5D,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;AAC1D,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,OAAgC;IAC7D,OAAO;QACL,GAAG,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;QACrC,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC;QAC7C,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC3C,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC;QAC/C,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;QAClD,KAAK,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;QACzC,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAC5B,IAIa;IAEb,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,MAAM,IAAI,IAAI,IAAI,OAAQ,IAA0B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3E,OAAQ,IAAyB,CAAC,IAAI,CAAC;IACzC,CAAC;IACD,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,IAAgC,CAAC,OAAO,CAAC,EAAE,CAAC;QAClF,OAAQ,IAA+B,CAAC,OAAO;aAC5C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAA6D,CAAC,CAAC;aAC7F,IAAI,CAAC,EAAE,CAAC;aACR,IAAI,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gFAAgF;AAChF,yCAAyC;AACzC,MAAM,UAAU,cAAc,CAAC,IAAY;IAKzC,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,WAAW,GAAG,wCAAwC,CAAC;AAE7D,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,SAAiB;IAC3D,OAAO,QAAQ,GAAG,KAAK,SAAS,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,gEAAgE;AAChE,2EAA2E;AAC3E,wEAAwE;AACxE,6EAA6E;AAC7E,qDAAqD;AACrD,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC,EAAE,KAAa;IACtE,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAgC,EAChC,KAAa;IAEb,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAgC,EAChC,KAAa;IAEb,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACpD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAgC,EAChC,KAAa;IAEb,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgC,EAAE,GAAG,IAAc;IAC9E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAgC,EAAE,YAAoB,EAAE,GAAG,IAAc;IACjG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgC,EAAE,GAAG,IAAc;IAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AAcD,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAC1B,OAAgC,EAChC,UAA6B,OAAO,CAAC,GAAG;IAExC,MAAM,OAAO,GACX,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;QACjC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAEzD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE3C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CACpB,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACjD,sEAAsE;YACtE,+EAA+E,EACjF,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClF,OAAO,EAAE,OAAO,EAAE,OAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAM,EAAE,KAAK,EAAE,KAAM,EAAE,UAAU,EAAE,CAAC;AAC5F,CAAC;AAoBD,MAAM,UAAU,aAAa,CAC3B,OAAgC,EAChC,UAA6B,OAAO,CAAC,GAAG;IAExC,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACjE,MAAM,OAAO,GAAG,UAAU,IAAI,UAAU,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAE7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE3C,IAAI,WAA+B,CAAC;IACpC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC;QAChG,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;QAChC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC;QAC5B,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;QAClE,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iDAAiD;AACjD,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,GAAW,EAAE,UAAkB;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM;YACrC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU;gBACzB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;oBAC5C,MAAM,CACJ,IAAI,KAAK,CACP,kBAAkB,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC1D,CACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;YACzB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,UAAkB,EAAE,OAAe;IACjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU;gBACzB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACrD;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;oBAC5C,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;YACzB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,KAAK,UAAU,kBAAkB,CAC/B,OAAe,EACf,UAAkB,EAClB,GAAW,EACX,UAAkB;IAElB,MAAM,SAAS,GAAgB,EAAE,CAAC;IAClC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAE3C,OAAO,SAAS,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,yEAAyE;QACzE,+CAA+C;QAC/C,MAAM,EAAE,GAAG,EAAE,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAErE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QACpD,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAE9B,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM;IACnC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAwBD,MAAM,UAAU,WAAW,CACzB,KAAgB,EAChB,OAAe,EACf,kBAA+D;IAE/D,qEAAqE;IACrE,MAAM,UAAU,GACd,kBAAkB,IAAI,CAAC,WAAW,IAAI,kBAAkB,IAAI,UAAU,IAAI,kBAAkB,CAAC;QAC3F,CAAC,CAAE,kBAAsC;QACzC,CAAC,CAAC,EAAE,SAAS,EAAE,kBAA0D,EAAE,CAAC;IAChF,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAE3C,MAAM,IAAI,GAAa;QACrB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KACxD,CAAC;IACF,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,cAAc,GAAG,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,WAAW,GAAG,QAAQ,EAAE,CAAC,gBAAgB,CAAyB,CAAC;IACzE,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC,QAAQ,CAAyB,CAAC;IAC/D,IAAI,MAAgB,CAAC;IACrB,IAAI,SAAS,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClE,0EAA0E;QAC1E,sDAAsD;QACtD,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;YACjE,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,GAAG,MAAM,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5E,CAAC;IAED,8EAA8E;IAC9E,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,KAAK,CAAC,GAAG,EAAE,CAAC;IACtE,OAAO;QACL,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/C,MAAM;QACN,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;QACtD,IAAI;QACJ,IAAI,EAAE,OAAO;QACb,IAAI;QACJ,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS;QAC3C,yEAAyE;QACzE,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;QACjD,OAAO,EAAE,KAAK,CAAC,GAAG;QAClB,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,IAAiB;IACrD,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,MAAM;QAChB,QAAQ;QACR,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,UAAU,EAAE,IAAI,CAAC,MAAM;QACvB,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,WAAW;QACjC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAYD,MAAM,aAAa,GACjB,mFAAmF,CAAC;AAEtF,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,GAAW,EACX,OAAe,EACf,UAAkB;IAElB,MAAM,GAAG,GACP,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB;QACjD,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE;QACjC,WAAW,kBAAkB,CAAC,aAAa,CAAC,EAAE;QAC9C,YAAY,OAAO,EAAE;QACrB,eAAe,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,OAAgC,EAChC,MAAc,EACd,OAAoD,EAAE;IAEtD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC;IACnE,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE9E,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CACpB,oFAAoF,EACpF,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,OAAO,IAAI,YAAY,CAAC;IAE7C,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,mBAAmB,UAAU,wCAAwC,CAAC,CAAC;QACrF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,GAAG;YACH,OAAO;YACP,UAAU;YACV,OAAO,EAAE,YAAY;YACrB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,sCAAsC,GAAG,GAAG,CAAC,CAAC;IAE5D,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC;QACzF,MAAM,IAAI,YAAY,CAAC,qCAAqC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,KAAK;QACL,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;KACjE,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAG,YAAY;QAC3B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC;QAC3D,CAAC,CAAC,MAAM,CAAC;IAEX,IAAI,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,2BAA2B,YAAY,GAAG,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;QACvC,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;;YACrC,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,qBAAqB,YAAY,EAAE,CAAC,CAAC;IACtE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,YAAY,OAAO,qBAAqB,YAAY,EAAE;KAChE,CAAC;AACJ,CAAC;AAiBD,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,MAA0B,EAAE,QAAiB;IAC3E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACrE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,MAAM,GAAG,SAAS,CACtB,IAAI,EACJ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,EACpF,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpF,OAAO,KAAiB,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,0CAA0C,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAsBD,8EAA8E;AAC9E,0EAA0E;AAC1E,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,mBAA6C;IAE7C,MAAM,IAAI,GACR,OAAO,mBAAmB,KAAK,QAAQ;QACrC,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE;QACrC,CAAC,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAChC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEnD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IACrD,MAAM,aAAa,GAAG,WAAW;QAC/B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,IAAI,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3E,CAAC,CAAC,MAAM,CAAC;IACX,MAAM,MAAM,GAAgC;QAC1C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO;QACP,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC;QACrC,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;QAClC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC7D,CAAC;IACF,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAwBD,MAAM,UAAU,eAAe,CAC7B,KAAe,EACf,OAAe,EACf,OAA4E,EAAE;IAE9E,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAsB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACpD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,EAAE,EAAE,QAAQ;gBACZ,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,WAAW,EAAE,UAAU,CAAC,GAAG;gBAC3B,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,GAAG,SAAS,qBAAqB,UAAU,CAAC,GAAG,EAAE;gBAC3D,OAAO;aACR,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,GAAG,SAAS,mBAAmB;YACzC,OAAO;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AACnE,CAAC;AAeD,SAAS,WAAW,CAAC,KAAyB;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAmE,EACnE,UAA6B,OAAO,CAAC,GAAG;IAExC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,0CAA0C,EAAE,CAAC;IACnF,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IACvE,CAAC;IACD,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IAC/E,CAAC;IACD,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,UAAU,GAAG;IACjB,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,8BAA8B,EAAE;IACrF,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACrG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,6CAA6C,EAAE;IACjG,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,oCAAoC,EAAE;IAC7F,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,kFAAkF,EAAE;IAC3I,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,wDAAwD,EAAE;IACjH,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;IACjG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE;IAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,qDAAqD,EAAE;IACnH,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,wDAAwD,EAAE;IAClH,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,6DAA6D,EAAE;IAClH,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,oDAAoD,EAAE;CACzF,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,4CAA4C,EAAE;IACnG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,6CAA6C,EAAE;IACjG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACrG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;IAC9F,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,uEAAuE,EAAE;IAC3G,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wDAAwD,EAAE;CAC1F,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,6CAA6C,EAAE;CAClG,CAAC;AAEF,eAAe,eAAe,CAAC;IAC7B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,UAAU;IAEnB,QAAQ,CAAC,GAAG;QACV,0EAA0E;QAC1E,sEAAsE;QACtE,0EAA0E;QAC1E,GAAG,CAAC,kBAAkB,CAAC;YACrB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YACpD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,CAAC,CAAC;QAEH,0EAA0E;QAC1E,4DAA4D;QAC5D,0EAA0E;QAC1E,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,gCAAgC;YAC7C,MAAM,EAAE,uEAAuE;YAC/E,QAAQ,EAAE;gBACR,6BAA6B;gBAC7B,+CAA+C;gBAC/C,kEAAkE;gBAClE,qDAAqD;gBACrD,0EAA0E;gBAC1E,oFAAoF;gBACpF,kEAAkE;aACnE;YACD,KAAK,EAAE,UAAU;YACjB,KAAK,CAAC,GAAG,CAAC,GAAG;gBACX,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;SACF,CAAC,CAAC;QAEH,0EAA0E;QAC1E,uDAAuD;QACvD,0EAA0E;QAC1E,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YAC9C,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,+DAA+D;QAC/D,+DAA+D;QAC/D,0EAA0E;QAC1E,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACnD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;YAClC,0EAA0E;YAC1E,2DAA2D;YAC3D,MAAM,OAAO,GAAsB;gBACjC,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,CAAC,OAAO,OAAO,CAAC,eAAe,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpG,GAAG,CAAC,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvG,GAAG,CAAC,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5F,CAAC;YACF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC;YACnE,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAEjE,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,YAAY,CACpB,mEAAmE,EACnE,SAAS,CAAC,KAAK,CAChB,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;YAE9C,OAAO,CAAC,KAAK,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC1F,OAAO,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;YAE/D,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAAE,OAAO,EAAE,CAAC;YACvG,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,UAAU,CAAC,CAAC;YAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,wEAAwE;QACxE,yEAAyE;QACzE,gDAAgD;QAChD,0EAA0E;QAC1E,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEvC,yEAAyE;YACzE,oEAAoE;YACpE,wEAAwE;YACxE,sCAAsC;YACtC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,OAAO,GACX,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;oBACjC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,yBAAyB,CAAC,CAAC;gBACtE,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;oBAC3C,UAAU,EAAE,OAAO;oBACnB,QAAQ;oBACR,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;gBACrE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;gBACrE,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACzD,OAAO,CAAC,KAAK,CACX,yBAAyB,IAAI,CAAC,OAAO,CAAC,MAAM,sBAAsB,OAAO,YAAY,OAAO,UAAU,CACvG,CAAC;gBACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5E,OAAO,CAAC,KAAK,CACX,eAAe,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CACzF,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBAC7B,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;gBACxE,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC/C,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,qEAAqE;gBACrE,iEAAiE;gBACjE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,YAAY,CACpB,2EAA2E,EAC3E,SAAS,CAAC,KAAK,CAChB,CAAC;gBACJ,CAAC;gBACD,uEAAuE;gBACvE,2DAA2D;gBAC3D,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;oBACjD,UAAU,EAAE,OAAO;oBACnB,QAAQ;oBACR,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACtD,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACH,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;wBACjF,OAAO,EAAE,CAAC;oBACZ,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7D,MAAM,IAAI,YAAY,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,KAAK,CACX,WAAW,OAAO,6BAA6B,OAAO,GAAG;oBACvD,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,OAAO,wCAAwC,CAAC,CAAC,CAAC,EAAE,CAAC,CACnF,CAAC;gBACF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACrD,CAAC;YAED,MAAM,OAAO,GACX,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;gBACjC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,yBAAyB,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;gBAC3C,UAAU,EAAE,OAAO;gBACnB,QAAQ;gBACR,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,kEAAkE;QAClE,uEAAuE;QACvE,0EAA0E;QAC1E,iEAAiE;QACjE,0EAA0E;QAC1E,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,4EAA4E;YACzF,MAAM,EAAE,sEAAsE;YAC9E,QAAQ,EAAE,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,kDAAkD,CAAC;YAC7G,KAAK,EAAE,cAAc;YACrB,KAAK,CAAC,GAAG,CAAC,GAAG;gBACX,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,mEAAmE;oBACnE,yDAAyD;oBACzD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;oBACtF,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,cAAc,aAAa,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBAC5F,IAAI,IAAI,CAAC,WAAW;wBAAE,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBACnE,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC1D,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC1D,IAAI,CAAC,IAAI,CAAC,KAAK;wBAAE,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBACD,mEAAmE;gBACnE,+DAA+D;gBAC/D,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,0EAA0E;QAC1E,uDAAuD;QACvD,2EAA2E;QAC3E,6EAA6E;QAC7E,4EAA4E;QAC5E,mEAAmE;QACnE,0EAA0E;QAC1E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAAE,OAAO;YACjC,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,qEAAqE;YACrE,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,KAAK;oBAAE,OAAO,CAAC,0BAA0B;gBACnD,kEAAkE;gBAClE,sEAAsE;gBACtE,qDAAqD;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-jira",
|
|
3
|
-
"version": "2026.6.
|
|
3
|
+
"version": "2026.6.3",
|
|
4
4
|
"description": "Jira issue sync for pm-cli",
|
|
5
5
|
"author": "@unbraind",
|
|
6
6
|
"entry": "./dist/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"commands",
|
|
10
10
|
"schema",
|
|
11
11
|
"importers",
|
|
12
|
-
"
|
|
12
|
+
"hooks"
|
|
13
13
|
],
|
|
14
14
|
"pm": {
|
|
15
15
|
"compatibility": "v2"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-jira",
|
|
3
|
-
"version": "2026.6.
|
|
3
|
+
"version": "2026.6.3",
|
|
4
4
|
"description": "Jira issue sync for pm-cli",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
"release:check": "npm run typecheck && npm run build && npm run audit:prod && npm run pack:dry-run && npm run changelog:check"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@unbrained/pm-cli": ">=2026.5.
|
|
38
|
+
"@unbrained/pm-cli": ">=2026.5.31"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/node": "^25.9.1",
|
|
42
42
|
"@unbrained/pm-cli": "^2026.5.31",
|
|
43
|
-
"pm-changelog": "^2026.
|
|
43
|
+
"pm-changelog": "^2026.6.2",
|
|
44
44
|
"typescript": "^6.0.3"
|
|
45
45
|
},
|
|
46
46
|
"keywords": [
|