edjr 0.1.2

Elite Dangerous Journal Reader
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
use serde::Deserialize;

#[derive(Debug, Deserialize)]
pub struct BankAccountStatistics {
    #[serde(rename = "Current_Wealth")]
    pub current_wealth: u64,
    #[serde(rename = "Insurance_Claims")]
    pub insurance_claims: u64,
    #[serde(rename = "Owned_Ship_Count")]
    pub owned_ship_count: u64,
    #[serde(rename = "Premium_Stock_Bought")]
    pub premium_stock_bought: Option<u64>,
    #[serde(rename = "Spent_On_Ammo_Consumables")]
    pub spent_on_ammo_consumables: u64,
    #[serde(rename = "Spent_On_Fuel")]
    pub spent_on_fuel: u64,
    #[serde(rename = "Spent_On_Insurance")]
    pub spent_on_insurance: u64,
    #[serde(rename = "Spent_On_Outfitting")]
    pub spent_on_outfitting: u64,
    #[serde(rename = "Spent_On_Premium_Stock")]
    pub spent_on_premium_stock: Option<u64>,
    #[serde(rename = "Spent_On_Repairs")]
    pub spent_on_repairs: u64,
    #[serde(rename = "Spent_On_Ships")]
    pub spent_on_ships: u64,
    #[serde(rename = "Spent_On_Suit_Consumables")]
    pub spent_on_suit_consumables: Option<u64>,
    #[serde(rename = "Spent_On_Suits")]
    pub spent_on_suits: Option<u64>,
    #[serde(rename = "Spent_On_Weapons")]
    pub spent_on_weapons: Option<u64>,
    #[serde(rename = "Suits_Owned")]
    pub suits_owned: Option<u64>,
    #[serde(rename = "Weapons_Owned")]
    pub weapons_owned: Option<u64>,
}

#[derive(Debug, Deserialize)]
pub struct CqcStatistics {
    #[serde(rename = "CQC_Credits_Earned")]
    pub credits_earned: u64,
    #[serde(rename = "CQC_KD")]
    pub kd: f64,
    #[serde(rename = "CQC_Kills")]
    pub kills: u64,
    #[serde(rename = "CQC_Time_Played")]
    pub time_played: u64,
    #[serde(rename = "CQC_WL")]
    pub wl: u64,
}

#[derive(Debug, Deserialize)]
pub struct CombatStatistics {
    #[serde(rename = "Assassination_Profits")]
    pub assassination_profits: u64,
    #[serde(rename = "Assassinations")]
    pub assassinations: u64,
    #[serde(rename = "Bounties_Claimed")]
    pub bounties_claimed: u64,
    #[serde(rename = "Bounty_Hunting_Profit")]
    pub bounty_hunting_profit: u64,
    #[serde(rename = "Combat_Bond_Profits")]
    pub combat_bond_profits: Option<u64>,
    #[serde(rename = "Combat_Bonds")]
    pub combat_bonds: Option<u64>,
    #[serde(rename = "ConflictZone_High")]
    pub conflict_zone_high: Option<u64>,
    #[serde(rename = "ConflictZone_High_Wins")]
    pub conflict_zone_high_wins: Option<u64>,
    #[serde(rename = "ConflictZone_Low")]
    pub conflict_zone_low: Option<u64>,
    #[serde(rename = "ConflictZone_Low_Wins")]
    pub conflict_zone_low_wins: Option<u64>,
    #[serde(rename = "ConflictZone_Medium")]
    pub conflict_zone_medium: Option<u64>,
    #[serde(rename = "ConflictZone_Medium_Wins")]
    pub conflict_zone_medium_wins: Option<u64>,
    #[serde(rename = "ConflictZone_Total")]
    pub conflict_zone_total: Option<u64>,
    #[serde(rename = "ConflictZone_Total_Wins")]
    pub conflict_zone_total_wins: Option<u64>,
    #[serde(rename = "Dropships_Booked")]
    pub dropships_booked: Option<u64>,
    #[serde(rename = "Dropships_Cancelled")]
    pub dropships_cancelled: Option<u64>,
    #[serde(rename = "Dropships_Taken")]
    pub dropships_taken: Option<u64>,
    #[serde(rename = "Highest_Single_Reward")]
    pub highest_single_reward: u64,
    #[serde(rename = "OnFoot_Combat_Bonds")]
    pub on_foot_combat_bonds: Option<u64>,
    #[serde(rename = "OnFoot_Combat_Bonds_Profits")]
    pub on_foot_combat_bonds_profits: Option<u64>,
    #[serde(rename = "OnFoot_Scavs_Killed")]
    pub on_foot_scavs_killed: Option<u64>,
    #[serde(rename = "OnFoot_Ships_Destroyed")]
    pub on_foot_ships_destroyed: Option<u64>,
    #[serde(rename = "OnFoot_Skimmers_Killed")]
    pub on_foot_skimmers_killed: Option<u64>,
    #[serde(rename = "OnFoot_Vehicles_Destroyed")]
    pub on_foot_vehicles_destroyed: Option<u64>,
    #[serde(rename = "Settlement_Conquered")]
    pub settlement_conquered: Option<u64>,
    #[serde(rename = "Settlement_Defended")]
    pub settlement_defended: Option<u64>,
    #[serde(rename = "Skimmers_Killed")]
    pub skimmers_killed: u64,
}

#[derive(Debug, Deserialize)]
pub struct ExplorationStatistics {
    #[serde(rename = "Efficient_Scans")]
    pub efficient_scans: u64,
    #[serde(rename = "Exploration_Profits")]
    pub exploration_profits: u64,
    #[serde(rename = "First_Footfalls")]
    pub first_footfalls: Option<u64>,
    #[serde(rename = "Greatest_Distance_From_Start")]
    pub greatest_distance_from_start: f64,
    #[serde(rename = "Highest_Payout")]
    pub highest_payout: u64,
    #[serde(rename = "OnFoot_Distance_Travelled")]
    pub on_foot_distance_travelled: Option<u64>,
    #[serde(rename = "Planet_Footfalls")]
    pub planet_footfalls: Option<u64>,
    #[serde(rename = "Planets_Scanned_To_Level_2")]
    pub planets_scanned_to_level_2: u64,
    #[serde(rename = "Planets_Scanned_To_Level_3")]
    pub planets_scanned_to_level_3: u64,
    #[serde(rename = "Settlements_Visited")]
    pub settlements_visited: Option<u64>,
    #[serde(rename = "Shuttle_Distance_Travelled")]
    pub shuttle_distance_travelled: Option<f64>,
    #[serde(rename = "Spent_On_Shuttles")]
    pub spent_on_shuttles: Option<u64>,
    #[serde(rename = "Systems_Visited")]
    pub systems_visited: u64,
    #[serde(rename = "Time_Played")]
    pub time_played: u64,
    #[serde(rename = "Total_Hyperspace_Distance")]
    pub total_hyperspace_distance: f64,
    #[serde(rename = "Total_Hyperspace_Jumps")]
    pub total_hyperspace_jumps: u64,
}

#[derive(Debug, Deserialize)]
pub struct CraftingStatistics {
    #[serde(rename = "Count_Of_Used_Engineers")]
    pub count_of_used_engineers: u64,
    #[serde(rename = "Recipes_Generated")]
    pub recipes_generated: u64,
    #[serde(rename = "Recipes_Generated_Rank_1")]
    pub recipes_generated_rank_1: u64,
    #[serde(rename = "Recipes_Generated_Rank_2")]
    pub recipes_generated_rank_2: u64,
    #[serde(rename = "Recipes_Generated_Rank_3")]
    pub recipes_generated_rank_3: u64,
    #[serde(rename = "Recipes_Generated_Rank_4")]
    pub recipes_generated_rank_4: u64,
    #[serde(rename = "Recipes_Generated_Rank_5")]
    pub recipes_generated_rank_5: u64,
    #[serde(rename = "Suit_Mods_Applied")]
    pub suit_mods_applied: Option<u64>,
    #[serde(rename = "Suit_Mods_Applied_Full")]
    pub suit_mods_applied_full: Option<u64>,
    #[serde(rename = "Suits_Upgraded")]
    pub suits_upgraded: Option<u64>,
    #[serde(rename = "Suits_Upgraded_Full")]
    pub suits_ugraded_full: Option<u64>,
    #[serde(rename = "Weapon_Mods_Applied")]
    pub weapon_mods_applied: Option<u64>,
    #[serde(rename = "Weapon_Mods_Applied_Full")]
    pub weapon_mods_applied_full: Option<u64>,
    #[serde(rename = "Weapons_Upgraded")]
    pub weapon_upgraded: Option<u64>,
    #[serde(rename = "Weapons_Upgraded_Full")]
    pub weapons_ugraded_full: Option<u64>,
}

#[derive(Debug, Deserialize)]
pub struct MaterialTradeStatistics {
    #[serde(rename = "Assets_Traded_In")]
    pub assets_traded_in: Option<u64>,
    #[serde(rename = "Assets_Traded_Out")]
    pub assets_traded_out: Option<u64>,
    #[serde(rename = "Encoded_Materials_Traded")]
    pub encoded_materials_traded: Option<u64>,
    #[serde(rename = "Grade_1_Materials_Traded")]
    pub grade_1_materials_traded: Option<u64>,
    #[serde(rename = "Grade_2_Materials_Traded")]
    pub grade_2_materials_traded: Option<u64>,
    #[serde(rename = "Grade_3_Materials_Traded")]
    pub grade_3_materials_traded: Option<u64>,
    #[serde(rename = "Grade_4_Materials_Traded")]
    pub grade_4_materials_traded: Option<u64>,
    #[serde(rename = "Grade_5_Materials_Traded")]
    pub grade_5_materials_traded: Option<u64>,
    #[serde(rename = "Materials_Traded")]
    pub materials_traded: Option<u64>,
    #[serde(rename = "Raw_Materials_Traded")]
    pub raw_materials_traded: Option<u64>,
    #[serde(rename = "Trades_Completed")]
    pub trades_completed: u64,
}

#[derive(Debug, Deserialize)]
pub struct MiningStatistics {
    #[serde(rename = "Materials_Collected")]
    pub materials_collected: u64,
    #[serde(rename = "Mining_Profits")]
    pub mining_profits: u64,
    #[serde(rename = "Quantity_Mined")]
    pub quantity_mined: u64,
}

#[derive(Debug, Deserialize)]
pub struct PassengersStatistics {
    #[serde(rename = "Passengers_Missions_Accepted")]
    pub passengers_missions_accepted: u64,
    #[serde(rename = "Passengers_Missions_Bulk")]
    pub passengers_missions_bulk: u64,
    #[serde(rename = "Passengers_Missions_Delivered")]
    pub passengers_missions_delivered: u64,
    #[serde(rename = "Passengers_Missions_Ejected")]
    pub passengers_missions_ejected: u64,
    #[serde(rename = "Passengers_Missions_VIP")]
    pub passengers_missions_vip: u64,
}

#[derive(Debug, Deserialize)]
pub struct SearchAndRescueStatistics {
    #[serde(rename = "Maglocks_Opened")]
    pub maglocks_opened: u64,
    #[serde(rename = "Panels_Opened")]
    pub panels_opened: u64,
    #[serde(rename = "Salvage_Illegal_POI")]
    pub salvage_illegal_poi: u64,
    #[serde(rename = "Salvage_Illegal_Settlements")]
    pub salvage_illegal_settlements: u64,
    #[serde(rename = "Salvage_Legal_POI")]
    pub salvage_legal_poi: u64,
    #[serde(rename = "Salvage_Legal_Settlements")]
    pub salvage_legal_settlements: u64,
    #[serde(rename = "SearchRescue_Count")]
    pub search_rescue_count: u64,
    #[serde(rename = "SearchRescue_Profit")]
    pub search_rescue_profit: u64,
    #[serde(rename = "SearchRescue_Traded")]
    pub search_rescue_traded: u64,
    #[serde(rename = "Settlements_State_FireOut")]
    pub settlements_state_fireout: u64,
    #[serde(rename = "Settlements_State_Reboot")]
    pub settlements_state_reboot: u64,
}

#[derive(Debug, Deserialize)]
pub struct SmugglingStatistics {
    #[serde(rename = "Average_Profit")]
    pub average_profit: u64,
    #[serde(rename = "Black_Markets_Profits")]
    pub black_markets_profits: u64,
    #[serde(rename = "Black_Markets_Traded_With")]
    pub black_markets_traded_with: u64,
    #[serde(rename = "Highest_Single_Transaction")]
    pub highest_single_transactions: u64,
    #[serde(rename = "Resources_Smuggled")]
    pub resources_smuggled: u64,
}

#[derive(Debug, Deserialize)]
pub struct SquadronStatistics {
    #[serde(rename = "Squadron_Bank_Commodities_Deposited_Num")]
    pub bank_commodities_deposited_num: u64,
    #[serde(rename = "Squadron_Bank_Commodities_Deposited_Value")]
    pub bank_commodities_deposited_value: u64,
    #[serde(rename = "Squadron_Bank_Commodities_Withdrawn_Num")]
    pub bank_commodities_withdrawn_num: u64,
    #[serde(rename = "Squadron_Bank_Commodities_Withdrawn_Value")]
    pub bank_commodities_withdrawn_value: u64,
    #[serde(rename = "Squadron_Bank_Credits_Deposited")]
    pub bank_credits_deposited: u64,
    #[serde(rename = "Squadron_Bank_Credits_Withdrawn")]
    pub bank_withdrawn: u64,
    #[serde(rename = "Squadron_Bank_PersonalAssets_Deposited_Num")]
    pub bank_personal_assets_deposited_num: u64,
    #[serde(rename = "Squadron_Bank_PersonalAssets_Deposited_Value")]
    pub bank_personal_assets_deposited_value: u64,
    #[serde(rename = "Squadron_Bank_PersonalAssets_Withdrawn_Num")]
    pub bank_personal_assets_withdrawn_num: u64,
    #[serde(rename = "Squadron_Bank_PersonalAssets_Withdrawn_Value")]
    pub bank_personal_assets_withdrawn_value: u64,
    #[serde(rename = "Squadron_Bank_Ships_Deposited_Num")]
    pub bank_ships_deposited_num: u64,
    #[serde(rename = "Squadron_Bank_Ships_Deposited_Value")]
    pub bank_ships_deposited_value: u64,
    #[serde(rename = "Squadron_Leaderboard_aegis_highestcontribution")]
    pub leaderbord_aegis_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_bgs_highestcontribution")]
    pub leaderbord_bgs_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_bounty_highestcontribution")]
    pub leaderbord_bounty_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_colonisation_contribution_highestcontribution")]
    pub leaderbord_colonisation_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_combat_highestcontribution")]
    pub leaderbord_combat_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_cqc_highestcontribution")]
    pub leaderbord_cqc_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_exploration_highestcontribution")]
    pub leaderbord_exploration_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_mining_highestcontribution")]
    pub leaderbord_mining_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_podiums")]
    pub leaderbord_podiums: u64,
    #[serde(rename = "Squadron_Leaderboard_powerplay_highestcontribution")]
    pub leaderbord_powerplay_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_trade_highestcontribution")]
    pub leaderbord_trade_highest_contribution: u64,
    #[serde(rename = "Squadron_Leaderboard_trade_illicit_highestcontribution")]
    pub leaderbord_trade_illicit_highest_contribution: u64,
}

#[derive(Debug, Deserialize)]
pub struct ThargoidStatistics {
    #[serde(rename = "TG_ENCOUNTER_KILLED")]
    pub encounter_killed: u64,
    #[serde(rename = "TG_ENCOUNTER_TOTAL")]
    pub encounter_total: u64,
    #[serde(rename = "TG_ENCOUNTER_TOTAL_LAST_SHIP")]
    pub encounter_last_ship: String,
    #[serde(rename = "TG_ENCOUNTER_TOTAL_LAST_SYSTEM")]
    pub encounter_last_system: String,
    #[serde(rename = "TG_ENCOUNTER_TOTAL_LAST_TIMESTAMP")]
    pub encounter_last_timestamp: String,
}

#[derive(Debug, Deserialize)]
pub struct TradingStatistics {
    #[serde(rename = "Average_Profit")]
    pub average_profit: f64,
    #[serde(rename = "Assets_Sold")]
    pub assets_sold: Option<u64>,
    #[serde(rename = "Data_Sold")]
    pub data_sold: Option<u64>,
    #[serde(rename = "Goods_Sold")]
    pub goods_sold: Option<u64>,
    #[serde(rename = "Highest_Single_Transaction")]
    pub highest_single_transaction: u64,
    #[serde(rename = "Market_Profits")]
    pub market_profits: u64,
    #[serde(rename = "Markets_Traded_With")]
    pub markets_traded_with: u64,
    #[serde(rename = "Resources_Traded")]
    pub resources_traded: u64,
}

#[derive(Debug, Deserialize)]
pub struct CrewStatistics {
    #[serde(rename = "NpcCrew_Died")]
    pub npc_crew_died: u64,
    #[serde(rename = "NpcCrew_Fired")]
    pub npc_crew_fired: u64,
    #[serde(rename = "NpcCrew_Hired")]
    pub npc_crew_hired: u64,
    #[serde(rename = "NpcCrew_TotalWages")]
    pub npc_crew_total_wages: u64,
}

#[derive(Debug, Deserialize)]
pub struct CrimeStatistics {
    #[serde(rename = "Bounties_Received")]
    pub bounties_received: u64,
    #[serde(rename = "Citizens_Murdered")]
    pub citizens_murdered: Option<u64>,
    #[serde(rename = "Data_Stolen")]
    pub data_stolen: Option<u64>,
    #[serde(rename = "Fines")]
    pub fines: u64,
    #[serde(rename = "Goods_Stolen")]
    pub goods_stolen: Option<u64>,
    #[serde(rename = "Guards_Murdered")]
    pub guards_murdered: Option<u64>,
    #[serde(rename = "Highest_Bounty")]
    pub highest_bounty: u64,
    #[serde(rename = "Malware_Uploaded")]
    pub malware_uploaded: Option<u64>,
    #[serde(rename = "Notoriety")]
    pub notoriety: u64,
    #[serde(rename = "Omnipol_Murdered")]
    pub omnipol_murdered: Option<u64>,
    #[serde(rename = "Production_Sabotage")]
    pub production_sabotage: Option<u64>,
    #[serde(rename = "Production_Theft")]
    pub production_theft: Option<u64>,
    #[serde(rename = "Profiles_Cloned")]
    pub profiles_stolen: Option<u64>,
    #[serde(rename = "Sample_Stolen")]
    pub sample_stolen: Option<u64>,
    #[serde(rename = "Settlements_State_Shutdown")]
    pub settlements_state_shutdown: Option<u64>,
    #[serde(rename = "Total_Bounties")]
    pub total_bounties: u64,
    #[serde(rename = "Total_Fines")]
    pub total_fines: u64,
    #[serde(rename = "Total_Murders")]
    pub total_murders: Option<u64>,
    #[serde(rename = "Total_Stolen")]
    pub total_stolen: Option<u64>,
    #[serde(rename = "Turrets_Destroyed")]
    pub turrets_destroyed: Option<u64>,
    #[serde(rename = "Turrets_Overloaded")]
    pub turrets_overloaded: Option<u64>,
    #[serde(rename = "Turrets_Total")]
    pub turrets_total: Option<u64>,
    #[serde(rename = "Value_Stolen_StateChange")]
    pub value_stolen_state_change: Option<u64>,
}

#[derive(Debug, Deserialize)]
pub struct ExobiologyStatistics {
    #[serde(rename = "First_Logged")]
    pub first_logged: u64,
    #[serde(rename = "First_Logged_Profits")]
    pub first_logged_profits: u64,
    #[serde(rename = "Organic_Data")]
    pub organic_data: u64,
    #[serde(rename = "Organic_Data_Profits")]
    pub organic_data_profits: u64,
    #[serde(rename = "Organic_Genus")]
    pub organic_genus: u64,
    #[serde(rename = "Organic_Genus_Encountered")]
    pub organic_genus_encountered: u64,
    #[serde(rename = "Organic_Planets")]
    pub organic_planets: u64,
    #[serde(rename = "Organic_Species")]
    pub organic_species: u64,
    #[serde(rename = "Organic_Species_Encountered")]
    pub organic_species_encountered: u64,
    #[serde(rename = "Organic_Systems")]
    pub organic_systems: u64,
    #[serde(rename = "Organic_Variant_Encountered")]
    pub organic_systems_encountered: u64,
}

#[derive(Debug, Deserialize)]
pub struct MulticrewStatistics {
    #[serde(rename = "Multicrew_Credits_Total")]
    pub multicrew_credits_total: u64,
    #[serde(rename = "Multicrew_Fighter_Time_Total")]
    pub multicrew_fighter_time_total: u64,
    #[serde(rename = "Multicrew_Fines_Total")]
    pub multicrew_fines_total: u64,
    #[serde(rename = "Multicrew_Gunner_Time_Total")]
    pub multicrew_gunner_time_total: u64,
    #[serde(rename = "Multicrew_Time_Total")]
    pub multicrew_time_total: u64,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct StatisticsEvent {
    #[serde(rename = "Bank_Account")]
    pub bank_account: Option<BankAccountStatistics>,
    #[serde(rename = "CQC")]
    pub cqc: Option<CqcStatistics>,
    pub combat: Option<CombatStatistics>,
    pub exploration: Option<ExplorationStatistics>,
    pub crafting: Option<CraftingStatistics>,
    pub crime: Option<CrimeStatistics>,
    pub exobiology: Option<ExobiologyStatistics>,
    #[serde(rename = "Material_Trader_Stats")]
    pub material_trading: Option<MaterialTradeStatistics>,
    pub mining: Option<MiningStatistics>,
    pub passengers: Option<PassengersStatistics>,
    pub search_and_rescue: Option<SearchAndRescueStatistics>,
    pub smuggling: Option<SmugglingStatistics>,
    pub squadron: Option<SquadronStatistics>,
    pub thargoid: Option<ThargoidStatistics>,
    pub trading: Option<TradingStatistics>,
    pub crew: Option<CrewStatistics>,
    pub multicrew: Option<MulticrewStatistics>,
}