@unbrained/pm-web 2026.8.14 → 2026.8.17
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 +6 -0
- package/dist/index.js +1 -1
- package/dist/routes/extensions.js +10 -0
- package/dist/routes/extensions.js.map +1 -1
- package/dist/services/package-catalog.d.ts +24 -0
- package/dist/services/package-catalog.js +22 -2
- package/dist/services/package-catalog.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/public/src/i18n/de.json +3 -1
- package/public/src/i18n/en.json +3 -1
- package/public/src/i18n/es.json +3 -1
- package/public/src/i18n/zh.json +3 -1
- package/public/src/views/packages.js +26 -5
- package/public/src/views/packages.js.map +1 -1
- package/public/src/views/packages.ts +33 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.8.17 - 2026-08-17
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- The package catalog could silently omit a fleet package, and had already drifted from pm-ops capabilities ([pm-web-yqmi](https://github.com/unbraind/pm-web/blob/main/.agents/pm/issues/pm-web-yqmi.toon))
|
|
8
|
+
|
|
3
9
|
## 2026.8.14 - 2026-08-14
|
|
4
10
|
|
|
5
11
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -227,7 +227,7 @@ function processAlive(pid) {
|
|
|
227
227
|
}
|
|
228
228
|
export default defineExtension({
|
|
229
229
|
name: "pm-web",
|
|
230
|
-
version: "2026.8.
|
|
230
|
+
version: "2026.8.17",
|
|
231
231
|
activate(api) {
|
|
232
232
|
// -----------------------------------------------------------------------
|
|
233
233
|
// Command: pm web [--port <port>] [--detach]
|
|
@@ -136,6 +136,16 @@ router.post("/:name/install", async (req, res) => {
|
|
|
136
136
|
if (!project)
|
|
137
137
|
return;
|
|
138
138
|
const entry = catalogEntry(res);
|
|
139
|
+
// An unreleased package is catalogued so the UI can show it honestly, but no
|
|
140
|
+
// install spec resolves for it. Refuse here with a reason rather than
|
|
141
|
+
// spawning a `pm install` that would fail against the registry with an
|
|
142
|
+
// opaque 404 the user cannot act on.
|
|
143
|
+
if (entry.availability === "unreleased") {
|
|
144
|
+
res.status(409).json({
|
|
145
|
+
error: `${entry.name} is not published to npm yet, so it cannot be installed.`,
|
|
146
|
+
});
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
139
149
|
const result = await runPm({
|
|
140
150
|
// entry.npmSpec is a catalog constant, never the request string.
|
|
141
151
|
args: ["install", entry.npmSpec, "--project"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/routes/extensions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/routes/extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,24 @@ export type PackageCapability = string;
|
|
|
22
22
|
* product extension.
|
|
23
23
|
*/
|
|
24
24
|
export type PackageCategory = "extension" | "template";
|
|
25
|
+
/**
|
|
26
|
+
* Whether a catalogued package can actually be installed right now.
|
|
27
|
+
*
|
|
28
|
+
* - `"published"` — the package is on npm and `pm install npm:<name>` works.
|
|
29
|
+
* This is the default and the state every product extension is in.
|
|
30
|
+
* - `"unreleased"` — the package exists in the fleet and is developed in the
|
|
31
|
+
* open, but is deliberately not published to npm yet, so no install spec can
|
|
32
|
+
* resolve. It is listed rather than hidden because silently omitting it
|
|
33
|
+
* would make the catalog look complete while a user reading the fleet on
|
|
34
|
+
* GitHub can plainly see a package the UI never mentions. The UI must render
|
|
35
|
+
* these as not-yet-installable and must not offer an install action.
|
|
36
|
+
*
|
|
37
|
+
* A catalogued package must be in exactly one of these states, and the state
|
|
38
|
+
* is asserted against the npm registry metadata in `test/catalog.test.ts` —
|
|
39
|
+
* declaring `"published"` for a package that is not on npm is a failing test,
|
|
40
|
+
* not a broken install button.
|
|
41
|
+
*/
|
|
42
|
+
export type PackageAvailability = "published" | "unreleased";
|
|
25
43
|
/**
|
|
26
44
|
* Honest gating metadata so the UI can tell a user what they must configure
|
|
27
45
|
* before a package is useful. Both fields are OPTIONAL — most packages work
|
|
@@ -75,6 +93,12 @@ export interface PackageCatalogEntry {
|
|
|
75
93
|
* extension. See {@link PackageCategory}.
|
|
76
94
|
*/
|
|
77
95
|
readonly category: PackageCategory;
|
|
96
|
+
/**
|
|
97
|
+
* Whether the package is installable today. Defaults to `"published"` when
|
|
98
|
+
* absent, because every entry was installable before unreleased packages
|
|
99
|
+
* were representable. See {@link PackageAvailability}.
|
|
100
|
+
*/
|
|
101
|
+
readonly availability?: PackageAvailability;
|
|
78
102
|
/** Backing service the package needs (optional). */
|
|
79
103
|
readonly requiresService?: ServiceRequirement;
|
|
80
104
|
/** Credentials the user must configure (optional). */
|
|
@@ -143,7 +143,7 @@ export const PACKAGE_CATALOG = [
|
|
|
143
143
|
npmSpec: "npm:pm-ops",
|
|
144
144
|
title: "Ops",
|
|
145
145
|
description: "Multi-repo fleet operations for pm-cli",
|
|
146
|
-
capabilities: ["commands", "renderers", "schema", "parser"],
|
|
146
|
+
capabilities: ["commands", "renderers", "schema", "parser", "services"],
|
|
147
147
|
category: "extension",
|
|
148
148
|
},
|
|
149
149
|
{
|
|
@@ -226,6 +226,24 @@ export const PACKAGE_CATALOG = [
|
|
|
226
226
|
],
|
|
227
227
|
category: "template",
|
|
228
228
|
},
|
|
229
|
+
{
|
|
230
|
+
name: "pm-vcs",
|
|
231
|
+
npmSpec: "npm:pm-vcs",
|
|
232
|
+
title: "VCS",
|
|
233
|
+
description: "A general version control system written from scratch on the pm SDK for arbitrary files and structured records, with stable file and change identities, native PM attribution, its own object store, refs, merge, operation log and bundles, and no Git dependency in its engine.",
|
|
234
|
+
capabilities: ["commands", "schema"],
|
|
235
|
+
category: "extension",
|
|
236
|
+
availability: "unreleased",
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: "pm-rl",
|
|
240
|
+
npmSpec: "npm:pm-rl",
|
|
241
|
+
title: "RL",
|
|
242
|
+
description: "Reinforcement-learning programme management on the pm SDK. Content-addressed environments keep runs attributable; bounded compressed metric segments preserve every accepted branch occurrence. Commands: `pm rl env register/list/show`, `pm rl run start/log/show/finish`, `pm rl generation register/promote/show`, `pm rl lineage`, `pm rl invalidate`, and `pm rl compare`.",
|
|
243
|
+
capabilities: ["commands", "schema"],
|
|
244
|
+
category: "extension",
|
|
245
|
+
availability: "unreleased",
|
|
246
|
+
},
|
|
229
247
|
];
|
|
230
248
|
/** A frozen map keyed by package name for O(1) catalog lookup. */
|
|
231
249
|
const CATALOG_BY_NAME = new Map(PACKAGE_CATALOG.map((entry) => [entry.name, entry]));
|
|
@@ -247,7 +265,9 @@ export function findCatalogEntry(name) {
|
|
|
247
265
|
*/
|
|
248
266
|
export function resolveNpmSpec(name) {
|
|
249
267
|
const entry = CATALOG_BY_NAME.get(name);
|
|
250
|
-
|
|
268
|
+
if (!entry || entry.availability === "unreleased")
|
|
269
|
+
return null;
|
|
270
|
+
return entry.npmSpec;
|
|
251
271
|
}
|
|
252
272
|
/** The immutable list of catalog package names, in display order. */
|
|
253
273
|
export function catalogNames() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-catalog.js","sourceRoot":"","sources":["../../src/services/package-catalog.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,8EAA8E;AAC9E,kEAAkE;AAClE,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,4EAA4E;AAC5E,0EAA0E;AAC1E,2EAA2E;AAC3E,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,4EAA4E;AAC5E,sEAAsE;AACtE,gEAAgE;AAChE,yEAAyE;AACzE,wEAAwE;AACxE,6EAA6E;AAC7E,mEAAmE;AACnE,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,iEAAiE;AACjE,0EAA0E;AAC1E,6EAA6E;AAC7E,8EAA8E;AAC9E,6DAA6D;AAC7D,gFAAgF;AAChF,0EAA0E;AAC1E,8EAA8E;AAC9E,UAAU;
|
|
1
|
+
{"version":3,"file":"package-catalog.js","sourceRoot":"","sources":["../../src/services/package-catalog.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-web",
|
|
3
|
-
"version": "2026.8.
|
|
3
|
+
"version": "2026.8.17",
|
|
4
4
|
"description": "Full web UI for pm-cli — browse, create, update, search and manage pm projects in the browser. Self-hosted via Docker or Node.js.",
|
|
5
5
|
"author": "@unbraind",
|
|
6
6
|
"entry": "./dist/index.js",
|
package/package.json
CHANGED
package/public/src/i18n/de.json
CHANGED
|
@@ -137,5 +137,7 @@
|
|
|
137
137
|
"packages.confirmUninstall": "{name} aus diesem Projekt deinstallieren?",
|
|
138
138
|
"packages.noProject": "Kein Projekt ausgewählt",
|
|
139
139
|
"packages.changedByOther": "Paket {name} von einem anderen Benutzer {operation}",
|
|
140
|
-
"packages.templateBadge": "Vorlage"
|
|
140
|
+
"packages.templateBadge": "Vorlage",
|
|
141
|
+
"packages.unreleasedBadge": "Noch nicht veröffentlicht",
|
|
142
|
+
"packages.unreleased": "Dieses Paket wird offen entwickelt, ist aber noch nicht auf npm veröffentlicht und kann daher nicht installiert werden."
|
|
141
143
|
}
|
package/public/src/i18n/en.json
CHANGED
|
@@ -137,5 +137,7 @@
|
|
|
137
137
|
"packages.confirmUninstall": "Uninstall {name} from this project?",
|
|
138
138
|
"packages.noProject": "No project selected",
|
|
139
139
|
"packages.changedByOther": "Package {name} {operation} by another user",
|
|
140
|
-
"packages.templateBadge": "Template"
|
|
140
|
+
"packages.templateBadge": "Template",
|
|
141
|
+
"packages.unreleasedBadge": "Not yet released",
|
|
142
|
+
"packages.unreleased": "This package is developed in the open but is not published to npm yet, so it cannot be installed."
|
|
141
143
|
}
|
package/public/src/i18n/es.json
CHANGED
|
@@ -137,5 +137,7 @@
|
|
|
137
137
|
"packages.confirmUninstall": "¿Desinstalar {name} de este proyecto?",
|
|
138
138
|
"packages.noProject": "Ningún proyecto seleccionado",
|
|
139
139
|
"packages.changedByOther": "Paquete {name} {operation} por otro usuario",
|
|
140
|
-
"packages.templateBadge": "Plantilla"
|
|
140
|
+
"packages.templateBadge": "Plantilla",
|
|
141
|
+
"packages.unreleasedBadge": "Aún no publicado",
|
|
142
|
+
"packages.unreleased": "Este paquete se desarrolla de forma abierta, pero todavía no está publicado en npm, por lo que no se puede instalar."
|
|
141
143
|
}
|
package/public/src/i18n/zh.json
CHANGED
|
@@ -137,5 +137,7 @@
|
|
|
137
137
|
"packages.confirmUninstall": "是否从该项目卸载 {name}?",
|
|
138
138
|
"packages.noProject": "未选择项目",
|
|
139
139
|
"packages.changedByOther": "软件包 {name} 已被其他用户{operation}",
|
|
140
|
-
"packages.templateBadge": "模板"
|
|
140
|
+
"packages.templateBadge": "模板",
|
|
141
|
+
"packages.unreleasedBadge": "尚未发布",
|
|
142
|
+
"packages.unreleased": "该软件包公开开发,但尚未发布到 npm,因此无法安装。"
|
|
141
143
|
}
|
|
@@ -115,6 +115,19 @@ function renderPackageCard(row) {
|
|
|
115
115
|
const templateBadge = row.category === 'template'
|
|
116
116
|
? `<span style="font-size:11px;color:var(--text-secondary);background:var(--bg-accent);padding:2px 8px;border-radius:4px" data-i18n="packages.templateBadge">${escHtml(t('packages.templateBadge'))}</span>`
|
|
117
117
|
: '';
|
|
118
|
+
// A package with no published release is shown, because hiding it would make
|
|
119
|
+
// the catalog look complete while the fleet plainly contains it — but it is
|
|
120
|
+
// shown as unavailable, never with an install action that cannot succeed.
|
|
121
|
+
const unreleased = row.availability === 'unreleased';
|
|
122
|
+
const unreleasedBadge = unreleased
|
|
123
|
+
? `<span style="font-size:11px;color:var(--text-secondary);background:var(--bg-accent);padding:2px 8px;border-radius:4px" data-i18n="packages.unreleasedBadge">${escHtml(t('packages.unreleasedBadge'))}</span>`
|
|
124
|
+
: '';
|
|
125
|
+
// The explanation is about not being installable, so it only applies while
|
|
126
|
+
// the package is not installed. Showing it beside an installed package would
|
|
127
|
+
// contradict the card's own status chip.
|
|
128
|
+
const unreleasedNote = unreleased && !row.installed
|
|
129
|
+
? `<div class="pkg-req" style="font-size:12px;color:var(--text-secondary);margin-top:6px">🚧 ${escHtml(t('packages.unreleased'))}</div>`
|
|
130
|
+
: '';
|
|
118
131
|
// Honest gating explanations — the UI must not promise a one-click install
|
|
119
132
|
// for a package that needs a Neo4j instance or an API token.
|
|
120
133
|
const serviceNote = row.requiresService
|
|
@@ -134,7 +147,15 @@ function renderPackageCard(row) {
|
|
|
134
147
|
// a raw DOM string — and the server validates it against the catalog again
|
|
135
148
|
// before any pm command is spawned.
|
|
136
149
|
let actions = '';
|
|
137
|
-
if (!row.installed) {
|
|
150
|
+
if (unreleased && !row.installed) {
|
|
151
|
+
// Nothing to install: there is no published version to install from. An
|
|
152
|
+
// unreleased package that IS installed — from a local path or a
|
|
153
|
+
// preexisting install — keeps its full management controls below, because
|
|
154
|
+
// the server supports deactivating and removing it and hiding those would
|
|
155
|
+
// strand the user with a package they cannot get rid of.
|
|
156
|
+
actions = '';
|
|
157
|
+
}
|
|
158
|
+
else if (!row.installed) {
|
|
138
159
|
actions = `<button class="btn btn-primary btn-sm" style="width:100%" data-pkg-action="install" data-pkg-name="${escHtml(row.name)}">${escHtml(t('packages.install'))}</button>`;
|
|
139
160
|
}
|
|
140
161
|
else if (row.active && row.enabled) {
|
|
@@ -156,14 +177,14 @@ function renderPackageCard(row) {
|
|
|
156
177
|
<div class="card-header" style="display:flex;align-items:center;justify-content:space-between;gap:8px">
|
|
157
178
|
<div style="display:flex;align-items:center;gap:6px">
|
|
158
179
|
<div class="card-title">${escHtml(row.title)}</div>
|
|
159
|
-
${templateBadge}
|
|
180
|
+
${templateBadge}${unreleasedBadge}
|
|
160
181
|
</div>
|
|
161
|
-
${statusChip}
|
|
182
|
+
${unreleased && !row.installed ? '' : statusChip}
|
|
162
183
|
</div>
|
|
163
184
|
<div class="card-body" style="padding-top:0">
|
|
164
185
|
<div style="font-size:12px;color:var(--text-muted);margin-bottom:8px;line-height:1.4">${escHtml(row.description)}</div>
|
|
165
|
-
${serviceNote}${credNotes}${caps}
|
|
166
|
-
|
|
186
|
+
${unreleasedNote}${serviceNote}${credNotes}${caps}
|
|
187
|
+
${actions ? `<div style="margin-top:12px">${actions}</div>` : ''}
|
|
167
188
|
</div>
|
|
168
189
|
</div>`;
|
|
169
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packages.js","sourceRoot":"","sources":["packages.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,iDAAiD;AACjD,kEAAkE;AAClE,EAAE;AACF,sDAAsD;AACtD,iDAAiD;AACjD,uEAAuE;AACvE,2EAA2E;AAC3E,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,6DAA6D;AAC7D,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,oEAAoE;AAEpE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"packages.js","sourceRoot":"","sources":["packages.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,13 @@ interface PackageRow {
|
|
|
35
35
|
capabilities: string[];
|
|
36
36
|
/** "extension" (product) or "template" (authoring reference scaffold). */
|
|
37
37
|
category: 'extension' | 'template';
|
|
38
|
+
/**
|
|
39
|
+
* Whether the package can be installed today. Absent means published, which
|
|
40
|
+
* is the state of every package that has a release on npm. "unreleased"
|
|
41
|
+
* means the package is real and developed in the open but has no published
|
|
42
|
+
* version, so no install can succeed and the card must not offer one.
|
|
43
|
+
*/
|
|
44
|
+
availability?: 'published' | 'unreleased';
|
|
38
45
|
requiresService?: { name: string; optional?: boolean };
|
|
39
46
|
requiresCredentials?: Array<{ label: string; envVars: string[]; optional?: boolean }>;
|
|
40
47
|
installed: boolean;
|
|
@@ -143,6 +150,20 @@ function renderPackageCard(row: PackageRow): string {
|
|
|
143
150
|
? `<span style="font-size:11px;color:var(--text-secondary);background:var(--bg-accent);padding:2px 8px;border-radius:4px" data-i18n="packages.templateBadge">${escHtml(t('packages.templateBadge'))}</span>`
|
|
144
151
|
: '';
|
|
145
152
|
|
|
153
|
+
// A package with no published release is shown, because hiding it would make
|
|
154
|
+
// the catalog look complete while the fleet plainly contains it — but it is
|
|
155
|
+
// shown as unavailable, never with an install action that cannot succeed.
|
|
156
|
+
const unreleased = row.availability === 'unreleased';
|
|
157
|
+
const unreleasedBadge = unreleased
|
|
158
|
+
? `<span style="font-size:11px;color:var(--text-secondary);background:var(--bg-accent);padding:2px 8px;border-radius:4px" data-i18n="packages.unreleasedBadge">${escHtml(t('packages.unreleasedBadge'))}</span>`
|
|
159
|
+
: '';
|
|
160
|
+
// The explanation is about not being installable, so it only applies while
|
|
161
|
+
// the package is not installed. Showing it beside an installed package would
|
|
162
|
+
// contradict the card's own status chip.
|
|
163
|
+
const unreleasedNote = unreleased && !row.installed
|
|
164
|
+
? `<div class="pkg-req" style="font-size:12px;color:var(--text-secondary);margin-top:6px">🚧 ${escHtml(t('packages.unreleased'))}</div>`
|
|
165
|
+
: '';
|
|
166
|
+
|
|
146
167
|
// Honest gating explanations — the UI must not promise a one-click install
|
|
147
168
|
// for a package that needs a Neo4j instance or an API token.
|
|
148
169
|
const serviceNote = row.requiresService
|
|
@@ -164,7 +185,14 @@ function renderPackageCard(row: PackageRow): string {
|
|
|
164
185
|
// a raw DOM string — and the server validates it against the catalog again
|
|
165
186
|
// before any pm command is spawned.
|
|
166
187
|
let actions = '';
|
|
167
|
-
if (!row.installed) {
|
|
188
|
+
if (unreleased && !row.installed) {
|
|
189
|
+
// Nothing to install: there is no published version to install from. An
|
|
190
|
+
// unreleased package that IS installed — from a local path or a
|
|
191
|
+
// preexisting install — keeps its full management controls below, because
|
|
192
|
+
// the server supports deactivating and removing it and hiding those would
|
|
193
|
+
// strand the user with a package they cannot get rid of.
|
|
194
|
+
actions = '';
|
|
195
|
+
} else if (!row.installed) {
|
|
168
196
|
actions = `<button class="btn btn-primary btn-sm" style="width:100%" data-pkg-action="install" data-pkg-name="${escHtml(row.name)}">${escHtml(t('packages.install'))}</button>`;
|
|
169
197
|
} else if (row.active && row.enabled) {
|
|
170
198
|
actions = `
|
|
@@ -185,14 +213,14 @@ function renderPackageCard(row: PackageRow): string {
|
|
|
185
213
|
<div class="card-header" style="display:flex;align-items:center;justify-content:space-between;gap:8px">
|
|
186
214
|
<div style="display:flex;align-items:center;gap:6px">
|
|
187
215
|
<div class="card-title">${escHtml(row.title)}</div>
|
|
188
|
-
${templateBadge}
|
|
216
|
+
${templateBadge}${unreleasedBadge}
|
|
189
217
|
</div>
|
|
190
|
-
${statusChip}
|
|
218
|
+
${unreleased && !row.installed ? '' : statusChip}
|
|
191
219
|
</div>
|
|
192
220
|
<div class="card-body" style="padding-top:0">
|
|
193
221
|
<div style="font-size:12px;color:var(--text-muted);margin-bottom:8px;line-height:1.4">${escHtml(row.description)}</div>
|
|
194
|
-
${serviceNote}${credNotes}${caps}
|
|
195
|
-
|
|
222
|
+
${unreleasedNote}${serviceNote}${credNotes}${caps}
|
|
223
|
+
${actions ? `<div style="margin-top:12px">${actions}</div>` : ''}
|
|
196
224
|
</div>
|
|
197
225
|
</div>`;
|
|
198
226
|
}
|