warframe-public-export-plus 0.2.0 → 0.2.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/ExportDrones.json CHANGED
@@ -14,8 +14,7 @@
14
14
  6,
15
15
  4,
16
16
  1
17
- ],
18
- "specialities": []
17
+ ]
19
18
  },
20
19
  "/Lotus/Types/Ship/AdvancedUcResourceDrone": {
21
20
  "name": "/Lotus/Language/Items/AdvancedUcResourceDrone",
@@ -32,8 +31,7 @@
32
31
  6,
33
32
  4,
34
33
  1
35
- ],
36
- "specialities": []
34
+ ]
37
35
  },
38
36
  "/Lotus/Types/Ship/BasicResourceDrone": {
39
37
  "name": "/Lotus/Language/Items/BasicResourceDrone",
@@ -50,8 +48,7 @@
50
48
  6,
51
49
  4,
52
50
  1
53
- ],
54
- "specialities": []
51
+ ]
55
52
  },
56
53
  "/Lotus/Types/Ship/BasicUcResourceDrone": {
57
54
  "name": "/Lotus/Language/Items/BasicUcResourceDrone",
@@ -68,8 +65,7 @@
68
65
  6,
69
66
  4,
70
67
  1
71
- ],
72
- "specialities": []
68
+ ]
73
69
  },
74
70
  "/Lotus/Types/Ship/LandscapeTrapLight": {
75
71
  "name": "/Lotus/Language/Items/BasicResourceDrone",
@@ -86,8 +82,7 @@
86
82
  4,
87
83
  1,
88
84
  1
89
- ],
90
- "specialities": []
85
+ ]
91
86
  },
92
87
  "/Lotus/Types/Ship/VoidTraderResourceDrone": {
93
88
  "name": "/Lotus/Language/Items/VoidTraderResourceDroneName",
@@ -104,7 +99,6 @@
104
99
  6,
105
100
  4,
106
101
  1
107
- ],
108
- "specialities": []
102
+ ]
109
103
  }
110
104
  }
@@ -4,7 +4,6 @@
4
4
  "typeName": "/Lotus/Upgrades/Mods/Randomized/RawRifleRandomMod",
5
5
  "name": "/Lotus/Language/Omega/OmegaRifleMod",
6
6
  "icon": "/Lotus/Interface/Cards/Images/OmegaModIndistinctUnveiled.png",
7
- "rarity": "COMMON",
8
7
  "tier": 0,
9
8
  "itemCount": 1,
10
9
  "probability": 0.07
@@ -15,7 +14,6 @@
15
14
  "name": "/Lotus/Language/Items/FusionTreasureFName",
16
15
  "description": "/Lotus/Language/Items/FusionTreasureFDescription",
17
16
  "icon": "/Lotus/Interface/Icons/StoreIcons/MiscItems/Treasures/OroFusexF.png",
18
- "rarity": "COMMON",
19
17
  "tier": 0,
20
18
  "itemCount": 1,
21
19
  "probability": 0.28
@@ -26,7 +24,6 @@
26
24
  "name": "/Lotus/Language/Items/FusionBundle",
27
25
  "description": "/Lotus/Language/Items/FusionPartDesc",
28
26
  "icon": "/Lotus/Interface/Icons/StoreIcons/Currency/EndoIconRenderLarge.png",
29
- "rarity": "COMMON",
30
27
  "tier": 0,
31
28
  "itemCount": 50,
32
29
  "probability": 0.12
@@ -37,7 +34,6 @@
37
34
  "name": "/Lotus/Language/Items/Forma",
38
35
  "description": "/Lotus/Language/Items/FormaDesc",
39
36
  "icon": "/Lotus/Interface/Icons/StoreIcons/Resources/CraftingComponents/GenericComponent.png",
40
- "rarity": "COMMON",
41
37
  "tier": 0,
42
38
  "itemCount": 1,
43
39
  "probability": 0.025
@@ -48,7 +44,6 @@
48
44
  "name": "/Lotus/Language/Items/UtilityUnlocker",
49
45
  "description": "/Lotus/Language/Items/UtilityUnlockerDesc",
50
46
  "icon": "/Lotus/Interface/Icons/StoreIcons/Resources/CraftingComponents/UtilityModule.png",
51
- "rarity": "COMMON",
52
47
  "tier": 0,
53
48
  "itemCount": 1,
54
49
  "probability": 0.025
@@ -59,7 +54,6 @@
59
54
  "name": "/Lotus/Language/Items/OrokinReactor",
60
55
  "description": "/Lotus/Language/Items/OrokinReactorDesc",
61
56
  "icon": "/Lotus/Interface/Icons/StoreIcons/Resources/CraftingComponents/ComponentReactor.png",
62
- "rarity": "COMMON",
63
57
  "tier": 0,
64
58
  "itemCount": 1,
65
59
  "probability": 0.025
@@ -70,7 +64,6 @@
70
64
  "name": "/Lotus/Language/Items/OrokinCatalyst",
71
65
  "description": "/Lotus/Language/Items/OrokinCatalystDesc",
72
66
  "icon": "/Lotus/Interface/Icons/StoreIcons/Resources/CraftingComponents/ComponentCatalyst.png",
73
- "rarity": "COMMON",
74
67
  "tier": 0,
75
68
  "itemCount": 1,
76
69
  "probability": 0.025
@@ -81,7 +74,6 @@
81
74
  "name": "/Lotus/Language/Items/LegendaryFusionPart",
82
75
  "description": "/Lotus/Language/Items/LegendaryFusionPartDesc",
83
76
  "icon": "/Lotus/Interface/Icons/StoreIcons/Resources/CraftingComponents/LegendaryCore.png",
84
- "rarity": "COMMON",
85
77
  "tier": 0,
86
78
  "itemCount": 1,
87
79
  "probability": 0.0019
@@ -92,7 +84,6 @@
92
84
  "name": "/Lotus/Language/Items/Kuva",
93
85
  "description": "/Lotus/Language/Items/KuvaDesc",
94
86
  "icon": "/Lotus/Interface/Icons/StoreIcons/Currency/Kuva.png",
95
- "rarity": "COMMON",
96
87
  "tier": 0,
97
88
  "itemCount": 6000,
98
89
  "probability": 0.12
@@ -103,7 +94,6 @@
103
94
  "name": "/Lotus/Language/Items/ModDropChanceBoosterName",
104
95
  "description": "/Lotus/Language/Items/ModDropChanceBoosterDesc",
105
96
  "icon": "/Lotus/Interface/Icons/StoreIcons/Boosters/ModDropChanceBooster.png",
106
- "rarity": "COMMON",
107
97
  "tier": 0,
108
98
  "itemCount": 1,
109
99
  "probability": 0.0327
@@ -114,7 +104,6 @@
114
104
  "name": "/Lotus/Language/Items/AffinityBoosterName",
115
105
  "description": "/Lotus/Language/Items/AffinityBoosterDesc",
116
106
  "icon": "/Lotus/Interface/Icons/StoreIcons/Boosters/AffinityBooster.png",
117
- "rarity": "COMMON",
118
107
  "tier": 0,
119
108
  "itemCount": 1,
120
109
  "probability": 0.0327
@@ -125,7 +114,6 @@
125
114
  "name": "/Lotus/Language/Items/ResourceDropChanceBoosterName",
126
115
  "description": "/Lotus/Language/Items/ResourceDropChanceBoosterDesc",
127
116
  "icon": "/Lotus/Interface/Icons/StoreIcons/Boosters/ResourceBoosterBlue.png",
128
- "rarity": "COMMON",
129
117
  "tier": 0,
130
118
  "itemCount": 1,
131
119
  "probability": 0.0327
@@ -135,7 +123,6 @@
135
123
  "typeName": "/Lotus/Upgrades/Mods/Randomized/RawPistolRandomMod",
136
124
  "name": "/Lotus/Language/Omega/OmegaPistolMod",
137
125
  "icon": "/Lotus/Interface/Cards/Images/OmegaModIndistinctUnveiled.png",
138
- "rarity": "COMMON",
139
126
  "tier": 0,
140
127
  "itemCount": 1,
141
128
  "probability": 0.07
@@ -145,7 +132,6 @@
145
132
  "typeName": "/Lotus/Upgrades/Mods/Randomized/RawShotgunRandomMod",
146
133
  "name": "/Lotus/Language/Omega/OmegaShotgunMod",
147
134
  "icon": "/Lotus/Interface/Cards/Images/OmegaModIndistinctUnveiled.png",
148
- "rarity": "COMMON",
149
135
  "tier": 0,
150
136
  "itemCount": 1,
151
137
  "probability": 0.022
@@ -155,7 +141,6 @@
155
141
  "typeName": "/Lotus/Upgrades/Mods/Randomized/RawMeleeRandomMod",
156
142
  "name": "/Lotus/Language/Omega/OmegaMeleeMod",
157
143
  "icon": "/Lotus/Interface/Cards/Images/OmegaModIndistinctUnveiled.png",
158
- "rarity": "COMMON",
159
144
  "tier": 0,
160
145
  "itemCount": 1,
161
146
  "probability": 0.098
@@ -165,7 +150,6 @@
165
150
  "typeName": "/Lotus/Upgrades/Mods/Randomized/RawModularMeleeRandomMod",
166
151
  "name": "/Lotus/Language/Omega/OmegaZawMod",
167
152
  "icon": "/Lotus/Interface/Cards/Images/OmegaModIndistinctUnveiled.png",
168
- "rarity": "COMMON",
169
153
  "tier": 0,
170
154
  "itemCount": 1,
171
155
  "probability": 0.01
@@ -175,7 +159,6 @@
175
159
  "typeName": "/Lotus/Upgrades/Mods/Randomized/RawModularPistolRandomMod",
176
160
  "name": "/Lotus/Language/Omega/OmegaKitgunMod",
177
161
  "icon": "/Lotus/Interface/Cards/Images/OmegaModIndistinctUnveiled.png",
178
- "rarity": "COMMON",
179
162
  "tier": 0,
180
163
  "itemCount": 1,
181
164
  "probability": 0.01
package/index.ts ADDED
@@ -0,0 +1,366 @@
1
+ export const dict_en: Record<string, string> = require("./dict.en.json");
2
+ export const dict_de: Record<string, string> = require("./dict.de.json");
3
+ export const dict_es: Record<string, string> = require("./dict.es.json");
4
+ export const dict_fr: Record<string, string> = require("./dict.fr.json");
5
+ export const dict_it: Record<string, string> = require("./dict.it.json");
6
+ export const dict_ja: Record<string, string> = require("./dict.ja.json");
7
+ export const dict_ko: Record<string, string> = require("./dict.ko.json");
8
+ export const dict_pl: Record<string, string> = require("./dict.pl.json");
9
+ export const dict_pt: Record<string, string> = require("./dict.pt.json");
10
+ export const dict_ru: Record<string, string> = require("./dict.ru.json");
11
+ export const dict_tc: Record<string, string> = require("./dict.tc.json");
12
+ export const dict_th: Record<string, string> = require("./dict.th.json");
13
+ export const dict_tr: Record<string, string> = require("./dict.tr.json");
14
+ export const dict_uk: Record<string, string> = require("./dict.uk.json");
15
+ export const dict_zh: Record<string, string> = require("./dict.zh.json");
16
+
17
+ export const ExportAbilities: Record<string, IAbility> = require("./ExportAbilities.json");
18
+ export const ExportArcanes: Record<string, IArcane> = require("./ExportArcanes.json");
19
+ export const ExportCustoms: Record<string, ICustom> = require("./ExportCustoms.json");
20
+ export const ExportDojoRecipes: Record<string, IDojoRecipe> = require("./ExportDojoRecipes.json");
21
+ export const ExportDrones: Record<string, IDrone> = require("./ExportDrones.json");
22
+ export const ExportFlavour: Record<string, IFlavourItem> = require("./ExportFlavour.json");
23
+ export const ExportFocusUpgrades: Record<string, IFocusUpgrade> = require("./ExportFocusUpgrades.json");
24
+ export const ExportFusionBundles: Record<string, IFusionBundle> = require("./ExportFusionBundles.json");
25
+ export const ExportGear: Record<string, IGear> = require("./ExportGear.json");
26
+ export const ExportImages: Record<string, IImage> = require("./ExportImages.json");
27
+ export const ExportIntrinsics: Record<string, IIntrinsic> = require("./ExportIntrinsics.json");
28
+ export const ExportKeys: Record<string, IKey> = require("./ExportKeys.json");
29
+ export const ExportOther: Record<string, IOther> = require("./ExportOther.json");
30
+ export const ExportRailjackWeapons: Record<string, IRailjackWeapon> = require("./ExportRailjackWeapons.json");
31
+ export const ExportRecipes: Record<string, IRecipe> = require("./ExportRecipes.json");
32
+ export const ExportRegions: Record<string, IRegion> = require("./ExportRegions.json");
33
+ export const ExportRelics: Record<string, IRelic> = require("./ExportRelics.json");
34
+ export const ExportResources: Record<string, IResource> = require("./ExportResources.json");
35
+ export const ExportSentinels: Record<string, ISentinel> = require("./ExportSentinels.json");
36
+ export const ExportSortieRewards: Record<string, ISortieReward> = require("./ExportSortieRewards.json");
37
+ export const ExportUpgrades: Record<string, IUpgrade> = require("./ExportUpgrades.json");
38
+ export const ExportWarframes: Record<string, IPowersuit> = require("./ExportWarframes.json");
39
+ export const ExportWeapons: Record<string, IWeapon> = require("./ExportWeapons.json");
40
+
41
+ export interface IAbility {
42
+ name: string;
43
+ description: string;
44
+ icon: string;
45
+ energyRequiredToActivate: number;
46
+ energyConsumptionOverTime?: number;
47
+ }
48
+
49
+ export interface IArcane {
50
+ name: string;
51
+ icon: string;
52
+ codexSecret: boolean;
53
+ excludeFromCodex?: boolean;
54
+ rarity?: "UNCOMMON" | "RARE" | "LEGENDARY";
55
+ }
56
+
57
+ export interface ICustom {
58
+ name: string;
59
+ codexSecret: boolean;
60
+ description?: string;
61
+ icon?: string;
62
+ excludeFromCodex?: boolean;
63
+ }
64
+
65
+ export interface IDojoRecipe {
66
+ icon?: string;
67
+ price: number;
68
+ time: number;
69
+ skipTimePrice: number;
70
+ ingredients?: { ItemType: string; ItemCount: number; }[];
71
+ replicatePrice?: number;
72
+ guildXpValue?: number;
73
+ techPrereq?: string;
74
+ }
75
+
76
+ export interface IDrone {
77
+ name: string;
78
+ description: string;
79
+ icon: string;
80
+ binCount: number;
81
+ binCapacity: number;
82
+ fillRate: number;
83
+ durability: number;
84
+ repairRate: number;
85
+ codexSecret: boolean;
86
+ capacityMultiplier: number[];
87
+ }
88
+
89
+ export interface IFlavourItem {
90
+ name: string;
91
+ description: string;
92
+ icon: string;
93
+ codexSecret: boolean;
94
+ excludeFromCodex?: boolean;
95
+ hexColours?: { value: string }[];
96
+ }
97
+
98
+ export interface IFocusUpgrade {
99
+ name: string;
100
+ icon: string;
101
+ polarity: "AP_ATTACK" | "AP_DEFENSE" | "AP_POWER" | "AP_TACTIC" | "AP_WARD";
102
+ rarity: "UNCOMMON" | "RARE" | "COMMON";
103
+ codexSecret: boolean;
104
+ baseDrain: number;
105
+ fusionLimit: number;
106
+ excludeFromCodex: boolean;
107
+ levelStats: object[];
108
+ description: string;
109
+ baseFocusPointCost: number;
110
+ }
111
+
112
+ export interface IFusionBundle {
113
+ name: string;
114
+ description: string;
115
+ icon: string;
116
+ codexSecret: boolean;
117
+ fusionPoints: number;
118
+ }
119
+
120
+ export interface IGear {
121
+ name: string;
122
+ description: string;
123
+ icon: string;
124
+ codexSecret: boolean;
125
+ parentName: string;
126
+ }
127
+
128
+ export interface IImage {
129
+ contentHash: string;
130
+ }
131
+
132
+ export interface IIntrinsic {
133
+ name: string;
134
+ description: string;
135
+ icon: string;
136
+ ranks: IIntrinsicRank[];
137
+ }
138
+
139
+ export interface IIntrinsicRank {
140
+ name: string;
141
+ description: string;
142
+ }
143
+
144
+ export interface IKey {
145
+ name: string;
146
+ description: string;
147
+ icon: string;
148
+ parentName: string;
149
+ codexSecret: boolean;
150
+ excludeFromCodex?: boolean;
151
+ }
152
+
153
+ export interface IOther {
154
+ name: string;
155
+ description: string;
156
+ icon: string;
157
+ excludeFromCodex?: boolean;
158
+ }
159
+
160
+ export interface IRailjackWeapon {
161
+ name: string;
162
+ icon: string;
163
+ codexSecret: boolean;
164
+ damagePerShot: number[];
165
+ totalDamage: number;
166
+ description: string;
167
+ criticalChance: number;
168
+ criticalMultiplier: number;
169
+ procChance: number;
170
+ fireRate: number;
171
+ masteryReq: number;
172
+ productCategory: "CrewShipWeapons";
173
+ excludeFromCodex: boolean;
174
+ slot: number;
175
+ accuracy: number;
176
+ omegaAttenuation: number;
177
+ noise: "ALARMING";
178
+ trigger: "BURST" | "SEMI" | "AUTO" | "HELD";
179
+ magazineSize: number;
180
+ reloadTime: number;
181
+ multishot: number;
182
+ }
183
+
184
+ export interface IRecipe {
185
+ resultType: string;
186
+ buildPrice: number;
187
+ buildTime: number;
188
+ skipBuildTimePrice: number;
189
+ consumeOnUse: boolean;
190
+ num: number;
191
+ codexSecret: boolean;
192
+ ingredients: {
193
+ ItemType: string;
194
+ ItemCount: number;
195
+ ProductCategory: "Consumables" | "MiscItems" | "WeaponSkins" | "Pistols" | "Melee" | "LongGuns";
196
+ }[];
197
+ secretIngredients: {
198
+ ItemType: "/Lotus/Types/Game/PowerSuits/PlayerPowerSuit" | "/Lotus/Weapons/Tenno/Pistol/LotusPistol" | "/Lotus/Weapons/Tenno/LotusLongGun" | "/Lotus/Types/Game/LotusMeleeWeapon";
199
+ ItemCount: number;
200
+ }[];
201
+ excludeFromCodex?: boolean;
202
+ primeSellingPrice?: number;
203
+ alwaysAvailable?: boolean;
204
+ }
205
+
206
+ export interface IRegion {
207
+ name: string;
208
+ systemIndex: number;
209
+ systemName: string;
210
+ nodeType: number;
211
+ masteryReq: number;
212
+ missionIndex: number;
213
+ missionName: string;
214
+ factionIndex: number;
215
+ minEnemyLevel: number;
216
+ maxEnemyLevel: number;
217
+ }
218
+
219
+ export interface IRelic {
220
+ category: string;
221
+ era: "Requiem" | "Axi" | "Neo" | "Meso" | "Lith";
222
+ icon: string;
223
+ codexSecret: boolean;
224
+ description: "/Lotus/Language/Relics/ImmortalProjectionBaseDesc" | "/Lotus/Language/Items/ProjectionDescription";
225
+ relicRewards: {
226
+ rewardName: string;
227
+ rarity: "RARE" | "UNCOMMON" | "COMMON";
228
+ tier: number;
229
+ itemCount: number;
230
+ }[];
231
+ }
232
+
233
+ export interface IResource {
234
+ name: string;
235
+ description: string;
236
+ icon: string;
237
+ codexSecret: boolean;
238
+ parentName: string;
239
+ excludeFromCodex?: boolean;
240
+ showInInventory?: boolean;
241
+ longDescription?: string;
242
+ primeSellingPrice?: number;
243
+ }
244
+
245
+ export interface ISentinel {
246
+ name: string;
247
+ icon: string;
248
+ health: number;
249
+ shield: number;
250
+ armor: number;
251
+ stamina: number;
252
+ power: number;
253
+ codexSecret: boolean;
254
+ excludeFromCodex?: boolean;
255
+ description: string;
256
+ productCategory: "SpecialItems" | "KubrowPets" | "Sentinels";
257
+ }
258
+
259
+ export interface ISortieReward {
260
+ rewardName: string;
261
+ typeName: string;
262
+ name: string;
263
+ icon: string;
264
+ tier: number;
265
+ itemCount: number;
266
+ probability: number;
267
+ description?: string;
268
+ }
269
+
270
+ export interface IUpgrade {
271
+ name: string;
272
+ icon: string;
273
+ polarity: "AP_POWER" | "AP_DEFENSE" | "AP_TACTIC" | "AP_ATTACK" | "AP_WARD" | "AP_UNIVERSAL" | "AP_UMBRA" | "AP_PRECEPT" | "AP_ANY";
274
+ rarity: "RARE" | "UNCOMMON" | "COMMON" | "LEGENDARY";
275
+ codexSecret: boolean;
276
+ baseDrain: number;
277
+ fusionLimit: number;
278
+ compatName?: string;
279
+ type?: "STANCE" | "WARFRAME" | "PARAZON" | "MELEE" | "---" | "PRIMARY" | "SECONDARY" | "KAVAT" | "SENTINEL" | "KUBROW" | "AURA" | "ARCH-GUN" | "ARCHWING" | "ARCH-MELEE" | "HELMINTH CHARGER";
280
+ description?: string;
281
+ isUtility?: boolean;
282
+ modSet?: string;
283
+ modSetValues?: number[];
284
+ subtype?: string;
285
+ excludeFromCodex?: boolean;
286
+ isStarter?: boolean;
287
+ upgradeEntries?: {
288
+ tag: string;
289
+ prefixTag: string;
290
+ suffixTag: string;
291
+ upgradeValues: {
292
+ value: number;
293
+ locTag?: string;
294
+ reverseValueSymbol?: boolean;
295
+ }[];
296
+ }[];
297
+ availableChallenges?: {
298
+ fullName: string;
299
+ description: string;
300
+ complications: {
301
+ fullName: string;
302
+ description: string;
303
+ overrideTag?: string;
304
+ }[];
305
+ }[];
306
+ }
307
+
308
+ export interface IPowersuit {
309
+ name: string;
310
+ parentName: string;
311
+ description: string;
312
+ icon: string;
313
+ health: number;
314
+ shield: number;
315
+ armor: number;
316
+ stamina: number;
317
+ power: number;
318
+ codexSecret: boolean;
319
+ masteryReq: number;
320
+ sprintSpeed: number;
321
+ abilities: IAbility[];
322
+ passiveDescription?: string;
323
+ productCategory: "Suits" | "SpaceSuits" | "MechSuits";
324
+ exalted?: string[];
325
+ longDescription?: string;
326
+ }
327
+
328
+ export interface IWeapon {
329
+ name: string;
330
+ icon: string;
331
+ codexSecret: boolean;
332
+ damagePerShot: number[];
333
+ totalDamage: number;
334
+ description: string;
335
+ criticalChance: number;
336
+ criticalMultiplier: number;
337
+ procChance: number;
338
+ fireRate: number;
339
+ masteryReq: number;
340
+ productCategory: "Pistols" | "Melee" | "LongGuns" | "SpaceGuns" | "SpaceMelee" | "OperatorAmps" | "SentinelWeapons" | "SpecialItems";
341
+ slot?: number;
342
+ accuracy?: number;
343
+ omegaAttenuation: number;
344
+ noise?: "ALARMING" | "SILENT";
345
+ trigger?: "SEMI" | "AUTO" | "BURST" | "ACTIVE" | "CHARGE" | "DUPLEX" | "HELD" | "Auto Burst";
346
+ magazineSize?: number;
347
+ reloadTime?: number;
348
+ multishot?: number;
349
+ blockingAngle?: number;
350
+ comboDuration?: number;
351
+ followThrough?: number;
352
+ range?: number;
353
+ slamAttack?: number;
354
+ slamRadialDamage?: number;
355
+ slamRadius?: number;
356
+ slideAttack?: number;
357
+ heavyAttackDamage?: number;
358
+ heavySlamAttack?: number;
359
+ heavySlamRadialDamage?: number;
360
+ heavySlamRadius?: number;
361
+ windUp?: number;
362
+ maxLevelCap?: number;
363
+ sentinel?: boolean;
364
+ excludeFromCodex?: boolean;
365
+ primeOmegaAttenuation?: number;
366
+ }
package/package.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "warframe-public-export-plus",
3
- "version": "0.2.0"
3
+ "version": "0.2.1"
4
4
  }