@dotobokuri/fleet-console 1.71.0 → 1.71.1
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/dist/cli.mjs +41 -11
- package/dist/client/assets/{_baseUniq--GYoaiDn.js → _baseUniq-Bhd1wyKE.js} +1 -1
- package/dist/client/assets/{arc-ioTPutEb.js → arc-Cu9FOmUr.js} +1 -1
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-DLfH6cdt.js → architectureDiagram-Q4EWVU46-Dq9FA5I3.js} +1 -1
- package/dist/client/assets/{blockDiagram-DXYQGD6D-ZM6X_dlD.js → blockDiagram-DXYQGD6D-BDZkCLI1.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-DDPTnZGS.js → c4Diagram-AHTNJAMY-XBPYwanu.js} +1 -1
- package/dist/client/assets/channel-BTX-SvBb.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-0ShpcAto.js → chunk-4BX2VUAB-BbTQSLs0.js} +1 -1
- package/dist/client/assets/{chunk-4TB4RGXK-CvMAl5bA.js → chunk-4TB4RGXK-DukpmkUz.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CgV8t6TS.js → chunk-55IACEB6-BFyIa1Ge.js} +1 -1
- package/dist/client/assets/{chunk-EDXVE4YY-DQkbYjs9.js → chunk-EDXVE4YY-D7RHsfQm.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-D4Pm3UM-.js → chunk-FMBD7UC4-Co64dt-k.js} +1 -1
- package/dist/client/assets/{chunk-OYMX7WX6-BrWIgOQ6.js → chunk-OYMX7WX6-CdycD6Yh.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-BC-GEuDl.js → chunk-QZHKN3VN-CNvTB1xu.js} +1 -1
- package/dist/client/assets/{chunk-YZCP3GAM-Dst--QPc.js → chunk-YZCP3GAM-CY1_pTO2.js} +1 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-CixB9uB6.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-CixB9uB6.js +1 -0
- package/dist/client/assets/clone-DuMuKBBB.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-D87Ru6Nw.js → cose-bilkent-S5V4N54A-PLhfHDPQ.js} +1 -1
- package/dist/client/assets/{dagre-KV5264BT-CUG8AIPS.js → dagre-KV5264BT-gJnGByq0.js} +1 -1
- package/dist/client/assets/{diagram-5BDNPKRD-DrhhXUdy.js → diagram-5BDNPKRD-y48OdlFp.js} +1 -1
- package/dist/client/assets/{diagram-G4DWMVQ6-DgGQFVlD.js → diagram-G4DWMVQ6-DSLYc2V1.js} +1 -1
- package/dist/client/assets/{diagram-MMDJMWI5-DEyFyzNg.js → diagram-MMDJMWI5-DWgtcwcn.js} +1 -1
- package/dist/client/assets/{diagram-TYMM5635-ari8AKd5.js → diagram-TYMM5635-CLd83m-G.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-Aywt-vx8.js → erDiagram-SMLLAGMA-CGP2g7Ug.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-FO46vDh_.js → flowDiagram-DWJPFMVM-BhKzXbma.js} +1 -1
- package/dist/client/assets/{ganttDiagram-T4ZO3ILL-C0m3r6C5.js → ganttDiagram-T4ZO3ILL-BdpBmhZF.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-CTUKGfIc.js → gitGraphDiagram-UUTBAWPF-IylczS5r.js} +1 -1
- package/dist/client/assets/{graph-PzhNFXt_.js → graph-xlKIIKKy.js} +1 -1
- package/dist/client/assets/index-DH7xHFza.js +467 -0
- package/dist/client/assets/{index-Bcc3Exng.css → index-DKMT7UVt.css} +1 -1
- package/dist/client/assets/{infoDiagram-42DDH7IO-CFry6eYn.js → infoDiagram-42DDH7IO-Dm9-Iqxb.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-BBJvVjTh.js → ishikawaDiagram-UXIWVN3A-0tPrKKU3.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-glHJeITG.js → journeyDiagram-VCZTEJTY-3wTioYxO.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-Dp7IjAmS.js → kanban-definition-6JOO6SKY-DjVcpuse.js} +1 -1
- package/dist/client/assets/{layout-PhtOMDDE.js → layout-BZ0nnXEn.js} +1 -1
- package/dist/client/assets/{linear-B3pjuRWl.js → linear-DNdW4gLV.js} +1 -1
- package/dist/client/assets/{mermaid.core-DDurtDWt.js → mermaid.core-DpO6yFcA.js} +4 -4
- package/dist/client/assets/{min-ZS3oLuaq.js → min-xMtTJxkM.js} +1 -1
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-D67iQI4K.js → mindmap-definition-QFDTVHPH-8tcRIKM5.js} +1 -1
- package/dist/client/assets/{pieDiagram-DEJITSTG-B95nftHb.js → pieDiagram-DEJITSTG-DOuWZGrv.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-34T5L4WZ-BbBVDSwm.js → quadrantDiagram-34T5L4WZ-BWPtgVdA.js} +1 -1
- package/dist/client/assets/{requirementDiagram-MS252O5E-Dbtcs04o.js → requirementDiagram-MS252O5E-CkNpSYqR.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-BuqmxYyX.js → sankeyDiagram-XADWPNL6-DUPS39lN.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-FGHM5R23-DmLihX3U.js → sequenceDiagram-FGHM5R23-B4n7l5jw.js} +1 -1
- package/dist/client/assets/{stateDiagram-FHFEXIEX-D3Z_iYXj.js → stateDiagram-FHFEXIEX-DBHsG7yj.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2--18aeGq2.js +1 -0
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-witmATQr.js → timeline-definition-GMOUNBTQ-BLxUyg3R.js} +1 -1
- package/dist/client/assets/{vennDiagram-DHZGUBPP-BDI4z0F-.js → vennDiagram-DHZGUBPP-27NkxCen.js} +1 -1
- package/dist/client/assets/{wardley-RL74JXVD-oYmBD5eO.js → wardley-RL74JXVD-VNgEaZlH.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-DhnyRjSq.js → wardleyDiagram-NUSXRM2D-byIhDvPD.js} +1 -1
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-DUY-bU_6.js → xychartDiagram-5P7HB3ND-D0amCilL.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/fleet-plugins/ledger/routes.mjs +41 -11
- package/dist/fleet-plugins/quota/routes.mjs +41 -11
- package/dist/fleet-plugins/scuttlebutt/routes.mjs +41 -11
- package/dist/fleet-plugins/terminal/routes.mjs +386 -499
- package/dist/fleet.mjs +453 -566
- package/package.json +1 -1
- package/dist/client/assets/channel-BvAoE0IP.js +0 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-BeVFxENS.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-BeVFxENS.js +0 -1
- package/dist/client/assets/clone-TnYsvJuQ.js +0 -1
- package/dist/client/assets/index-DkOT93yC.js +0 -467
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-BbUn16lr.js +0 -1
|
@@ -18032,7 +18032,7 @@ var benchmarks_default = {
|
|
|
18032
18032
|
};
|
|
18033
18033
|
var models_default = {
|
|
18034
18034
|
version: 1,
|
|
18035
|
-
updatedAt: "2026-08-
|
|
18035
|
+
updatedAt: "2026-08-22T00:00:00Z",
|
|
18036
18036
|
providers: {
|
|
18037
18037
|
codex: {
|
|
18038
18038
|
name: "Codex",
|
|
@@ -18443,7 +18443,7 @@ var models_default = {
|
|
|
18443
18443
|
{
|
|
18444
18444
|
modelId: "composer-2.5",
|
|
18445
18445
|
name: "Composer-2.5",
|
|
18446
|
-
capabilityClass: "
|
|
18446
|
+
capabilityClass: "standard",
|
|
18447
18447
|
quotaScope: "auto",
|
|
18448
18448
|
contextWindow: 2e5,
|
|
18449
18449
|
benchmarkKey: "composer-2.5"
|
|
@@ -18451,9 +18451,11 @@ var models_default = {
|
|
|
18451
18451
|
{
|
|
18452
18452
|
modelId: "composer-2.5-fast",
|
|
18453
18453
|
name: "Composer-2.5-Fast",
|
|
18454
|
-
capabilityClass: "
|
|
18454
|
+
capabilityClass: "standard",
|
|
18455
|
+
variantOf: "composer-2.5",
|
|
18455
18456
|
quotaScope: "auto",
|
|
18456
|
-
contextWindow: 2e5
|
|
18457
|
+
contextWindow: 2e5,
|
|
18458
|
+
benchmarkKey: "composer-2.5"
|
|
18457
18459
|
},
|
|
18458
18460
|
{
|
|
18459
18461
|
modelId: "grok-4.5",
|
|
@@ -18475,7 +18477,8 @@ var models_default = {
|
|
|
18475
18477
|
{
|
|
18476
18478
|
modelId: "grok-4.5-fast",
|
|
18477
18479
|
name: "Grok-4.5-Fast",
|
|
18478
|
-
capabilityClass: "
|
|
18480
|
+
capabilityClass: "flagship",
|
|
18481
|
+
variantOf: "grok-4.5",
|
|
18479
18482
|
quotaScope: "auto",
|
|
18480
18483
|
contextWindow: 256e3,
|
|
18481
18484
|
effort: {
|
|
@@ -18486,7 +18489,8 @@ var models_default = {
|
|
|
18486
18489
|
"high"
|
|
18487
18490
|
],
|
|
18488
18491
|
upstreamModelIdTemplate: "cursor-grok-4.5-{effort}-fast"
|
|
18489
|
-
}
|
|
18492
|
+
},
|
|
18493
|
+
benchmarkKey: "grok-4.5"
|
|
18490
18494
|
},
|
|
18491
18495
|
{
|
|
18492
18496
|
modelId: "grok-4.6",
|
|
@@ -18509,7 +18513,8 @@ var models_default = {
|
|
|
18509
18513
|
{
|
|
18510
18514
|
modelId: "grok-4.6-fast",
|
|
18511
18515
|
name: "Grok-4.6-Fast",
|
|
18512
|
-
capabilityClass: "
|
|
18516
|
+
capabilityClass: "flagship",
|
|
18517
|
+
variantOf: "grok-4.6",
|
|
18513
18518
|
quotaScope: "auto",
|
|
18514
18519
|
contextWindow: 256e3,
|
|
18515
18520
|
effort: {
|
|
@@ -18521,7 +18526,8 @@ var models_default = {
|
|
|
18521
18526
|
"xhigh"
|
|
18522
18527
|
],
|
|
18523
18528
|
upstreamModelIdTemplate: "cursor-grok-4.6-{effort}-fast"
|
|
18524
|
-
}
|
|
18529
|
+
},
|
|
18530
|
+
benchmarkKey: "grok-4.6"
|
|
18525
18531
|
},
|
|
18526
18532
|
{
|
|
18527
18533
|
modelId: "claude-opus-5",
|
|
@@ -18906,7 +18912,7 @@ var models_default = {
|
|
|
18906
18912
|
{
|
|
18907
18913
|
modelId: "grok-composer-2.5-fast",
|
|
18908
18914
|
name: "Grok-Composer-2.5-Fast",
|
|
18909
|
-
capabilityClass: "
|
|
18915
|
+
capabilityClass: "standard",
|
|
18910
18916
|
wire: "responses",
|
|
18911
18917
|
contextWindow: 2e5
|
|
18912
18918
|
}
|
|
@@ -19103,6 +19109,14 @@ var GatewayModelEntrySchema = external_exports.object({
|
|
|
19103
19109
|
benchmarkKey: external_exports.string().min(1).optional(),
|
|
19104
19110
|
description: external_exports.string().min(1).optional(),
|
|
19105
19111
|
providerModelId: external_exports.string().min(1).optional(),
|
|
19112
|
+
/**
|
|
19113
|
+
* The catalog entry this one is a serving variant of, when the provider gives
|
|
19114
|
+
* the variant its own wire id and `providerModelId` is therefore unavailable
|
|
19115
|
+
* as the lineage link. Pure provenance: it names a sibling `modelId` in the
|
|
19116
|
+
* same provider and never reaches a request, so the variant keeps sending its
|
|
19117
|
+
* own upstream id while inheriting the base's class and benchmark evidence.
|
|
19118
|
+
*/
|
|
19119
|
+
variantOf: external_exports.string().min(1).optional(),
|
|
19106
19120
|
serviceTier: external_exports.literal("priority").optional(),
|
|
19107
19121
|
cursorMaxMode: external_exports.literal(true).optional(),
|
|
19108
19122
|
quotaScope: external_exports.enum(GATEWAY_QUOTA_SCOPES).optional(),
|
|
@@ -19301,8 +19315,24 @@ function validateRegistry(value) {
|
|
|
19301
19315
|
if (!isRoutingAlias && !model.capabilityClass) {
|
|
19302
19316
|
throw new Error(`Gateway model is missing a capability class: ${provider}/${model.modelId}`);
|
|
19303
19317
|
}
|
|
19304
|
-
|
|
19305
|
-
|
|
19318
|
+
const catalogEntry = (modelId) => modelId === void 0 ? void 0 : definition.models.find((candidate) => candidate.modelId === modelId);
|
|
19319
|
+
const providerLinkedBase = isRoutingAlias ? void 0 : catalogEntry(model.providerModelId);
|
|
19320
|
+
if (model.variantOf && providerLinkedBase && model.providerModelId !== model.variantOf) {
|
|
19321
|
+
throw new Error(`Gateway service-tier sibling names two different bases: ${provider}/${model.modelId}`);
|
|
19322
|
+
}
|
|
19323
|
+
if (model.variantOf === model.modelId) {
|
|
19324
|
+
throw new Error(`Gateway service-tier sibling names itself as its base: ${provider}/${model.modelId}`);
|
|
19325
|
+
}
|
|
19326
|
+
const baseModelId = isRoutingAlias ? void 0 : model.variantOf ?? model.providerModelId;
|
|
19327
|
+
if (baseModelId) {
|
|
19328
|
+
const base = catalogEntry(baseModelId);
|
|
19329
|
+
if (model.variantOf && !base) {
|
|
19330
|
+
throw new Error(`Gateway service-tier sibling names an unknown base: ${provider}/${model.modelId} -> ${model.variantOf}`);
|
|
19331
|
+
}
|
|
19332
|
+
const baseLink = base && base.modelId !== base.providerModelId ? base.variantOf ?? base.providerModelId : base?.variantOf;
|
|
19333
|
+
if (base && catalogEntry(baseLink)) {
|
|
19334
|
+
throw new Error(`Gateway service-tier sibling names another sibling as its base: ${provider}/${model.modelId}`);
|
|
19335
|
+
}
|
|
19306
19336
|
if (base && base.capabilityClass !== model.capabilityClass) {
|
|
19307
19337
|
throw new Error(`Gateway service-tier sibling class differs from its base: ${provider}/${model.modelId}`);
|
|
19308
19338
|
}
|
|
@@ -17709,7 +17709,7 @@ var benchmarks_default = {
|
|
|
17709
17709
|
};
|
|
17710
17710
|
var models_default = {
|
|
17711
17711
|
version: 1,
|
|
17712
|
-
updatedAt: "2026-08-
|
|
17712
|
+
updatedAt: "2026-08-22T00:00:00Z",
|
|
17713
17713
|
providers: {
|
|
17714
17714
|
codex: {
|
|
17715
17715
|
name: "Codex",
|
|
@@ -18120,7 +18120,7 @@ var models_default = {
|
|
|
18120
18120
|
{
|
|
18121
18121
|
modelId: "composer-2.5",
|
|
18122
18122
|
name: "Composer-2.5",
|
|
18123
|
-
capabilityClass: "
|
|
18123
|
+
capabilityClass: "standard",
|
|
18124
18124
|
quotaScope: "auto",
|
|
18125
18125
|
contextWindow: 2e5,
|
|
18126
18126
|
benchmarkKey: "composer-2.5"
|
|
@@ -18128,9 +18128,11 @@ var models_default = {
|
|
|
18128
18128
|
{
|
|
18129
18129
|
modelId: "composer-2.5-fast",
|
|
18130
18130
|
name: "Composer-2.5-Fast",
|
|
18131
|
-
capabilityClass: "
|
|
18131
|
+
capabilityClass: "standard",
|
|
18132
|
+
variantOf: "composer-2.5",
|
|
18132
18133
|
quotaScope: "auto",
|
|
18133
|
-
contextWindow: 2e5
|
|
18134
|
+
contextWindow: 2e5,
|
|
18135
|
+
benchmarkKey: "composer-2.5"
|
|
18134
18136
|
},
|
|
18135
18137
|
{
|
|
18136
18138
|
modelId: "grok-4.5",
|
|
@@ -18152,7 +18154,8 @@ var models_default = {
|
|
|
18152
18154
|
{
|
|
18153
18155
|
modelId: "grok-4.5-fast",
|
|
18154
18156
|
name: "Grok-4.5-Fast",
|
|
18155
|
-
capabilityClass: "
|
|
18157
|
+
capabilityClass: "flagship",
|
|
18158
|
+
variantOf: "grok-4.5",
|
|
18156
18159
|
quotaScope: "auto",
|
|
18157
18160
|
contextWindow: 256e3,
|
|
18158
18161
|
effort: {
|
|
@@ -18163,7 +18166,8 @@ var models_default = {
|
|
|
18163
18166
|
"high"
|
|
18164
18167
|
],
|
|
18165
18168
|
upstreamModelIdTemplate: "cursor-grok-4.5-{effort}-fast"
|
|
18166
|
-
}
|
|
18169
|
+
},
|
|
18170
|
+
benchmarkKey: "grok-4.5"
|
|
18167
18171
|
},
|
|
18168
18172
|
{
|
|
18169
18173
|
modelId: "grok-4.6",
|
|
@@ -18186,7 +18190,8 @@ var models_default = {
|
|
|
18186
18190
|
{
|
|
18187
18191
|
modelId: "grok-4.6-fast",
|
|
18188
18192
|
name: "Grok-4.6-Fast",
|
|
18189
|
-
capabilityClass: "
|
|
18193
|
+
capabilityClass: "flagship",
|
|
18194
|
+
variantOf: "grok-4.6",
|
|
18190
18195
|
quotaScope: "auto",
|
|
18191
18196
|
contextWindow: 256e3,
|
|
18192
18197
|
effort: {
|
|
@@ -18198,7 +18203,8 @@ var models_default = {
|
|
|
18198
18203
|
"xhigh"
|
|
18199
18204
|
],
|
|
18200
18205
|
upstreamModelIdTemplate: "cursor-grok-4.6-{effort}-fast"
|
|
18201
|
-
}
|
|
18206
|
+
},
|
|
18207
|
+
benchmarkKey: "grok-4.6"
|
|
18202
18208
|
},
|
|
18203
18209
|
{
|
|
18204
18210
|
modelId: "claude-opus-5",
|
|
@@ -18583,7 +18589,7 @@ var models_default = {
|
|
|
18583
18589
|
{
|
|
18584
18590
|
modelId: "grok-composer-2.5-fast",
|
|
18585
18591
|
name: "Grok-Composer-2.5-Fast",
|
|
18586
|
-
capabilityClass: "
|
|
18592
|
+
capabilityClass: "standard",
|
|
18587
18593
|
wire: "responses",
|
|
18588
18594
|
contextWindow: 2e5
|
|
18589
18595
|
}
|
|
@@ -18778,6 +18784,14 @@ var GatewayModelEntrySchema = external_exports.object({
|
|
|
18778
18784
|
benchmarkKey: external_exports.string().min(1).optional(),
|
|
18779
18785
|
description: external_exports.string().min(1).optional(),
|
|
18780
18786
|
providerModelId: external_exports.string().min(1).optional(),
|
|
18787
|
+
/**
|
|
18788
|
+
* The catalog entry this one is a serving variant of, when the provider gives
|
|
18789
|
+
* the variant its own wire id and `providerModelId` is therefore unavailable
|
|
18790
|
+
* as the lineage link. Pure provenance: it names a sibling `modelId` in the
|
|
18791
|
+
* same provider and never reaches a request, so the variant keeps sending its
|
|
18792
|
+
* own upstream id while inheriting the base's class and benchmark evidence.
|
|
18793
|
+
*/
|
|
18794
|
+
variantOf: external_exports.string().min(1).optional(),
|
|
18781
18795
|
serviceTier: external_exports.literal("priority").optional(),
|
|
18782
18796
|
cursorMaxMode: external_exports.literal(true).optional(),
|
|
18783
18797
|
quotaScope: external_exports.enum(GATEWAY_QUOTA_SCOPES).optional(),
|
|
@@ -19015,8 +19029,24 @@ function validateRegistry(value) {
|
|
|
19015
19029
|
if (!isRoutingAlias && !model.capabilityClass) {
|
|
19016
19030
|
throw new Error(`Gateway model is missing a capability class: ${provider}/${model.modelId}`);
|
|
19017
19031
|
}
|
|
19018
|
-
|
|
19019
|
-
|
|
19032
|
+
const catalogEntry = (modelId) => modelId === void 0 ? void 0 : definition.models.find((candidate) => candidate.modelId === modelId);
|
|
19033
|
+
const providerLinkedBase = isRoutingAlias ? void 0 : catalogEntry(model.providerModelId);
|
|
19034
|
+
if (model.variantOf && providerLinkedBase && model.providerModelId !== model.variantOf) {
|
|
19035
|
+
throw new Error(`Gateway service-tier sibling names two different bases: ${provider}/${model.modelId}`);
|
|
19036
|
+
}
|
|
19037
|
+
if (model.variantOf === model.modelId) {
|
|
19038
|
+
throw new Error(`Gateway service-tier sibling names itself as its base: ${provider}/${model.modelId}`);
|
|
19039
|
+
}
|
|
19040
|
+
const baseModelId = isRoutingAlias ? void 0 : model.variantOf ?? model.providerModelId;
|
|
19041
|
+
if (baseModelId) {
|
|
19042
|
+
const base = catalogEntry(baseModelId);
|
|
19043
|
+
if (model.variantOf && !base) {
|
|
19044
|
+
throw new Error(`Gateway service-tier sibling names an unknown base: ${provider}/${model.modelId} -> ${model.variantOf}`);
|
|
19045
|
+
}
|
|
19046
|
+
const baseLink = base && base.modelId !== base.providerModelId ? base.variantOf ?? base.providerModelId : base?.variantOf;
|
|
19047
|
+
if (base && catalogEntry(baseLink)) {
|
|
19048
|
+
throw new Error(`Gateway service-tier sibling names another sibling as its base: ${provider}/${model.modelId}`);
|
|
19049
|
+
}
|
|
19020
19050
|
if (base && base.capabilityClass !== model.capabilityClass) {
|
|
19021
19051
|
throw new Error(`Gateway service-tier sibling class differs from its base: ${provider}/${model.modelId}`);
|
|
19022
19052
|
}
|