@elite-dangerous-almanac/core 0.1.7 → 0.2.0

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.
Files changed (274) hide show
  1. package/PROVENANCE/i18n/SOURCES.md +2 -2
  2. package/PROVENANCE/ships/SOURCES.md +29 -9
  3. package/README.md +54 -40
  4. package/dist/astro/galaxy-grid.js +1 -1
  5. package/dist/astro/index.d.ts +1 -1
  6. package/dist/astro/index.js +1 -1
  7. package/dist/astro/naming-region-origins.d.ts +1 -1
  8. package/dist/astro/naming-region-origins.js +1 -1
  9. package/dist/astro/nebulae.d.ts +2 -2
  10. package/dist/astro/permit-locks.d.ts +2 -1
  11. package/dist/astro/permit-locks.js +1 -1
  12. package/dist/astro/procedural-system.d.ts +2 -1
  13. package/dist/astro/procedural-system.js +1 -1
  14. package/dist/astro/sector-name.d.ts +2 -1
  15. package/dist/astro/sector-name.js +1 -1
  16. package/dist/astro/system-address.d.ts +1 -1
  17. package/dist/astro/system-name.d.ts +14 -9
  18. package/dist/astro/system-name.js +1 -1
  19. package/dist/chunk-2W5MW376.js +1 -0
  20. package/dist/chunk-2W5MW376.js.map +1 -0
  21. package/dist/{chunk-VZZUNSDF.js → chunk-4KJ7CR74.js} +1 -1
  22. package/dist/{chunk-VZZUNSDF.js.map → chunk-4KJ7CR74.js.map} +1 -1
  23. package/dist/{chunk-6EUVIZAS.js → chunk-4QYTVSNR.js} +1 -1
  24. package/dist/{chunk-EKQCVCMK.js → chunk-5ZVYRX6Z.js} +1 -1
  25. package/dist/{chunk-EKQCVCMK.js.map → chunk-5ZVYRX6Z.js.map} +1 -1
  26. package/dist/chunk-6GJHUWMO.js +1 -0
  27. package/dist/chunk-6GJHUWMO.js.map +1 -0
  28. package/dist/chunk-6L56LWTT.js +1 -0
  29. package/dist/chunk-6L56LWTT.js.map +1 -0
  30. package/dist/{chunk-GQ5GX5TB.js → chunk-6O4NRRSB.js} +1 -1
  31. package/dist/chunk-6O4NRRSB.js.map +1 -0
  32. package/dist/{chunk-WNGQ3IAM.js → chunk-6UNAD74Z.js} +1 -1
  33. package/dist/{chunk-WNGQ3IAM.js.map → chunk-6UNAD74Z.js.map} +1 -1
  34. package/dist/{chunk-JPBMRJFC.js → chunk-77I24V6B.js} +1 -1
  35. package/dist/chunk-77I24V6B.js.map +1 -0
  36. package/dist/chunk-7ATBEOVC.js +1 -0
  37. package/dist/chunk-7ATBEOVC.js.map +1 -0
  38. package/dist/chunk-7TQ2X6Q3.js +1 -0
  39. package/dist/chunk-7TQ2X6Q3.js.map +1 -0
  40. package/dist/{chunk-6EPYVBAX.js → chunk-A6OINYNP.js} +1 -1
  41. package/dist/{chunk-Q3QCLNVG.js → chunk-AYAKU4YA.js} +1 -1
  42. package/dist/chunk-AYAKU4YA.js.map +1 -0
  43. package/dist/chunk-B7EYTZRK.js +1 -0
  44. package/dist/chunk-B7EYTZRK.js.map +1 -0
  45. package/dist/{chunk-EBAHNZ36.js → chunk-CIULJH3G.js} +1 -1
  46. package/dist/{chunk-EBAHNZ36.js.map → chunk-CIULJH3G.js.map} +1 -1
  47. package/dist/{chunk-SNADUQSJ.js → chunk-CJK2IBI2.js} +1 -1
  48. package/dist/{chunk-SNADUQSJ.js.map → chunk-CJK2IBI2.js.map} +1 -1
  49. package/dist/{chunk-DYPOL3CI.js → chunk-CJQ37JII.js} +1 -1
  50. package/dist/chunk-CJQ37JII.js.map +1 -0
  51. package/dist/chunk-D6YEHR5S.js +1 -0
  52. package/dist/chunk-D6YEHR5S.js.map +1 -0
  53. package/dist/{chunk-Z6XMXMVI.js → chunk-DBDCOHI4.js} +1 -1
  54. package/dist/chunk-DBDCOHI4.js.map +1 -0
  55. package/dist/{chunk-AFVYCQWL.js → chunk-DCB4COCL.js} +1 -1
  56. package/dist/{chunk-AFVYCQWL.js.map → chunk-DCB4COCL.js.map} +1 -1
  57. package/dist/{chunk-CJWFY6OX.js → chunk-DSMLYA2M.js} +1 -1
  58. package/dist/{chunk-CJWFY6OX.js.map → chunk-DSMLYA2M.js.map} +1 -1
  59. package/dist/{chunk-UXBCLFGU.js → chunk-DWRNXUAX.js} +1 -1
  60. package/dist/{chunk-UXBCLFGU.js.map → chunk-DWRNXUAX.js.map} +1 -1
  61. package/dist/{chunk-UHSNB5SV.js → chunk-EVJ32UF3.js} +1 -1
  62. package/dist/{chunk-UHSNB5SV.js.map → chunk-EVJ32UF3.js.map} +1 -1
  63. package/dist/chunk-EVW4Z4CB.js +1 -0
  64. package/dist/chunk-EVW4Z4CB.js.map +1 -0
  65. package/dist/{chunk-4S6WB7QR.js → chunk-FF2X4K5P.js} +1 -1
  66. package/dist/chunk-FF2X4K5P.js.map +1 -0
  67. package/dist/chunk-FYVPZBXN.js +1 -0
  68. package/dist/chunk-FYVPZBXN.js.map +1 -0
  69. package/dist/{chunk-QTZPA2FR.js → chunk-GLWPSVFV.js} +1 -1
  70. package/dist/chunk-GLWPSVFV.js.map +1 -0
  71. package/dist/chunk-GZYPQIO2.js +1 -0
  72. package/dist/chunk-GZYPQIO2.js.map +1 -0
  73. package/dist/chunk-H47K3UWG.js +1 -0
  74. package/dist/chunk-H47K3UWG.js.map +1 -0
  75. package/dist/chunk-JGOAQLYW.js +1 -0
  76. package/dist/chunk-JGOAQLYW.js.map +1 -0
  77. package/dist/{chunk-JWWYAMGD.js → chunk-MGRDB2BZ.js} +1 -1
  78. package/dist/{chunk-JWWYAMGD.js.map → chunk-MGRDB2BZ.js.map} +1 -1
  79. package/dist/{chunk-MKGJPVPS.js → chunk-MRTTQYT5.js} +1 -1
  80. package/dist/{chunk-MKGJPVPS.js.map → chunk-MRTTQYT5.js.map} +1 -1
  81. package/dist/chunk-MTJ4MS7W.js +1 -0
  82. package/dist/chunk-MTJ4MS7W.js.map +1 -0
  83. package/dist/chunk-NIURLW2F.js +1 -0
  84. package/dist/chunk-NIURLW2F.js.map +1 -0
  85. package/dist/chunk-OLKNYGGT.js +1 -0
  86. package/dist/chunk-OLKNYGGT.js.map +1 -0
  87. package/dist/{chunk-UXFMVZAY.js → chunk-OVUHQEH5.js} +1 -1
  88. package/dist/{chunk-UXFMVZAY.js.map → chunk-OVUHQEH5.js.map} +1 -1
  89. package/dist/chunk-OYFMHDYT.js +1 -0
  90. package/dist/chunk-OYFMHDYT.js.map +1 -0
  91. package/dist/chunk-OYR5HUQZ.js +1 -0
  92. package/dist/chunk-OYR5HUQZ.js.map +1 -0
  93. package/dist/{chunk-LLHGSBPI.js → chunk-PA5EITW5.js} +1 -1
  94. package/dist/{chunk-LLHGSBPI.js.map → chunk-PA5EITW5.js.map} +1 -1
  95. package/dist/chunk-PL75RTA2.js +1 -0
  96. package/dist/{chunk-2VPVZELZ.js.map → chunk-PL75RTA2.js.map} +1 -1
  97. package/dist/chunk-PY5L6WC5.js +1 -0
  98. package/dist/chunk-PY5L6WC5.js.map +1 -0
  99. package/dist/{chunk-W6EPHHTS.js → chunk-Q2L75GSI.js} +1 -1
  100. package/dist/chunk-Q2L75GSI.js.map +1 -0
  101. package/dist/chunk-QJ7GB6FF.js +1 -0
  102. package/dist/chunk-QJ7GB6FF.js.map +1 -0
  103. package/dist/chunk-QTAMQ6ME.js +1 -0
  104. package/dist/chunk-QTAMQ6ME.js.map +1 -0
  105. package/dist/{chunk-VDVFJXX5.js → chunk-QY3L5BKN.js} +1 -1
  106. package/dist/{chunk-FMPRCYKY.js → chunk-RRYBSAPX.js} +1 -1
  107. package/dist/chunk-RRYBSAPX.js.map +1 -0
  108. package/dist/{chunk-J42ZXLBL.js → chunk-T62GO4AA.js} +1 -1
  109. package/dist/chunk-T62GO4AA.js.map +1 -0
  110. package/dist/{chunk-E3BRVGJJ.js → chunk-TBZJIQ5P.js} +1 -1
  111. package/dist/{chunk-E3BRVGJJ.js.map → chunk-TBZJIQ5P.js.map} +1 -1
  112. package/dist/chunk-V3AEUBHV.js +1 -0
  113. package/dist/chunk-V3AEUBHV.js.map +1 -0
  114. package/dist/chunk-VYDQHPY2.js +1 -0
  115. package/dist/chunk-VYDQHPY2.js.map +1 -0
  116. package/dist/chunk-XUHAPOM6.js +1 -0
  117. package/dist/chunk-XUHAPOM6.js.map +1 -0
  118. package/dist/chunk-Y6KJJMIM.js +1 -0
  119. package/dist/chunk-Y6KJJMIM.js.map +1 -0
  120. package/dist/chunk-YXPZ7QQB.js +1 -0
  121. package/dist/chunk-YXPZ7QQB.js.map +1 -0
  122. package/dist/{chunk-Y6UZWNP4.js → chunk-ZCEAPJDH.js} +1 -1
  123. package/dist/{chunk-Y6UZWNP4.js.map → chunk-ZCEAPJDH.js.map} +1 -1
  124. package/dist/commodities/commodities.d.ts +20 -10
  125. package/dist/commodities/commodities.js +1 -1
  126. package/dist/commodities/index.d.ts +15 -4
  127. package/dist/commodities/index.js +1 -1
  128. package/dist/equipment/index.js +1 -1
  129. package/dist/equipment/modification-costs.d.ts +2 -1
  130. package/dist/equipment/modification-costs.js.map +1 -1
  131. package/dist/equipment/modification-journal.js +1 -1
  132. package/dist/equipment/modifications.d.ts +2 -1
  133. package/dist/equipment/modifications.js +1 -1
  134. package/dist/equipment/suits.d.ts +6 -3
  135. package/dist/equipment/suits.js +1 -1
  136. package/dist/equipment/upgrade-costs.d.ts +8 -4
  137. package/dist/equipment/upgrade-costs.js +1 -1
  138. package/dist/equipment/upgrade-costs.js.map +1 -1
  139. package/dist/equipment/weapons.d.ts +13 -5
  140. package/dist/equipment/weapons.js +1 -1
  141. package/dist/i18n/blueprints.d.ts +6 -6
  142. package/dist/i18n/blueprints.js +1 -1
  143. package/dist/i18n/diagnostics.d.ts +1 -13
  144. package/dist/i18n/engineering-groups.d.ts +1 -0
  145. package/dist/i18n/engineering-groups.js +1 -1
  146. package/dist/i18n/experimental-effect-descriptions.d.ts +4 -3
  147. package/dist/i18n/experimental-effect-descriptions.js +1 -1
  148. package/dist/i18n/experimental-effects.d.ts +5 -4
  149. package/dist/i18n/experimental-effects.js +1 -1
  150. package/dist/i18n/index.d.ts +1 -13
  151. package/dist/i18n/index.js +1 -1
  152. package/dist/i18n/pre-engineered.d.ts +7 -6
  153. package/dist/i18n/pre-engineered.js +1 -1
  154. package/dist/materials/index.d.ts +16 -4
  155. package/dist/materials/index.js +1 -1
  156. package/dist/materials/materials.d.ts +36 -19
  157. package/dist/materials/materials.js +1 -1
  158. package/dist/materials/micro-resources.d.ts +18 -7
  159. package/dist/materials/micro-resources.js +1 -1
  160. package/dist/ships/armour.d.ts +20 -4
  161. package/dist/ships/armour.js +1 -1
  162. package/dist/ships/blueprint-costs.d.ts +20 -17
  163. package/dist/ships/blueprint-costs.js +1 -1
  164. package/dist/ships/blueprint-journal.d.ts +9 -8
  165. package/dist/ships/blueprint-journal.js +1 -1
  166. package/dist/ships/blueprints.d.ts +14 -12
  167. package/dist/ships/blueprints.js +1 -1
  168. package/dist/ships/build-metrics.d.ts +1061 -0
  169. package/dist/ships/build-metrics.js +1 -0
  170. package/dist/ships/build-metrics.js.map +1 -0
  171. package/dist/ships/distributor.d.ts +10 -3
  172. package/dist/ships/distributor.js +1 -1
  173. package/dist/ships/engineering-options.d.ts +8 -6
  174. package/dist/ships/engineering-options.js +1 -1
  175. package/dist/ships/engineering.d.ts +2 -16
  176. package/dist/ships/engineering.js +1 -1
  177. package/dist/ships/experimental-effect-costs.d.ts +5 -5
  178. package/dist/ships/experimental-effect-costs.js +1 -1
  179. package/dist/ships/experimental-effects.d.ts +9 -8
  180. package/dist/ships/experimental-effects.js +1 -1
  181. package/dist/ships/heat.d.ts +7 -2
  182. package/dist/ships/heat.js +1 -1
  183. package/dist/ships/index.d.ts +34 -22
  184. package/dist/ships/index.js +1 -1
  185. package/dist/ships/jump-range.d.ts +10 -3
  186. package/dist/ships/jump-range.js +1 -1
  187. package/dist/ships/loadout-calculations.d.ts +1 -1
  188. package/dist/ships/loadout-calculations.js +1 -1
  189. package/dist/ships/mobility-capacitor.d.ts +90 -0
  190. package/dist/ships/mobility-capacitor.js +1 -0
  191. package/dist/ships/mobility-capacitor.js.map +1 -0
  192. package/dist/ships/mobility.d.ts +41 -17
  193. package/dist/ships/mobility.js +1 -1
  194. package/dist/ships/modules-all.js +1 -1
  195. package/dist/ships/modules-core.js +1 -1
  196. package/dist/ships/modules.d.ts +27 -1
  197. package/dist/ships/modules.js +1 -1
  198. package/dist/ships/power.d.ts +12 -5
  199. package/dist/ships/power.js +1 -1
  200. package/dist/ships/pre-engineered-stats.d.ts +10 -8
  201. package/dist/ships/pre-engineered-stats.js +1 -1
  202. package/dist/ships/pre-engineered.d.ts +6 -6
  203. package/dist/ships/pre-engineered.js +1 -1
  204. package/dist/ships/resistances.d.ts +2 -2
  205. package/dist/ships/resistances.js +1 -1
  206. package/dist/ships/shield-capacitor.d.ts +133 -0
  207. package/dist/ships/shield-capacitor.js +1 -0
  208. package/dist/ships/shield-capacitor.js.map +1 -0
  209. package/dist/ships/shield-recovery.d.ts +16 -2
  210. package/dist/ships/shield-recovery.js +1 -1
  211. package/dist/ships/shields.d.ts +86 -28
  212. package/dist/ships/shields.js +1 -1
  213. package/dist/ships/ship-loadout.d.ts +100 -671
  214. package/dist/ships/ship-loadout.js +1 -1
  215. package/dist/ships/ships.d.ts +7 -6
  216. package/dist/ships/ships.js +1 -1
  217. package/dist/ships/slef.d.ts +11 -9
  218. package/dist/ships/slef.js +1 -1
  219. package/dist/ships/source-purchase.d.ts +2 -1
  220. package/dist/ships/source-purchase.js +1 -1
  221. package/dist/ships/weapons-capacitor.d.ts +10 -3
  222. package/dist/ships/weapons-capacitor.js +1 -1
  223. package/dist/ships/weapons.d.ts +22 -6
  224. package/dist/ships/weapons.js +1 -1
  225. package/dist/{system-address-DYsN1qOT.d.ts → system-address-cyJaeZIS.d.ts} +2 -1
  226. package/package.json +17 -2
  227. package/dist/chunk-24INI4U7.js +0 -1
  228. package/dist/chunk-24INI4U7.js.map +0 -1
  229. package/dist/chunk-2FHHMYDC.js +0 -1
  230. package/dist/chunk-2FHHMYDC.js.map +0 -1
  231. package/dist/chunk-2TW4ZBI3.js +0 -1
  232. package/dist/chunk-2TW4ZBI3.js.map +0 -1
  233. package/dist/chunk-2VPVZELZ.js +0 -1
  234. package/dist/chunk-4S6WB7QR.js.map +0 -1
  235. package/dist/chunk-DVL5RBKX.js +0 -1
  236. package/dist/chunk-DVL5RBKX.js.map +0 -1
  237. package/dist/chunk-DYPOL3CI.js.map +0 -1
  238. package/dist/chunk-EXVCRIDP.js +0 -1
  239. package/dist/chunk-EXVCRIDP.js.map +0 -1
  240. package/dist/chunk-FGXWVFN6.js +0 -1
  241. package/dist/chunk-FGXWVFN6.js.map +0 -1
  242. package/dist/chunk-FMPRCYKY.js.map +0 -1
  243. package/dist/chunk-G3265B27.js +0 -1
  244. package/dist/chunk-G3265B27.js.map +0 -1
  245. package/dist/chunk-GQ5GX5TB.js.map +0 -1
  246. package/dist/chunk-IOJXLDJN.js +0 -1
  247. package/dist/chunk-IOJXLDJN.js.map +0 -1
  248. package/dist/chunk-IYU4WLFM.js +0 -1
  249. package/dist/chunk-IYU4WLFM.js.map +0 -1
  250. package/dist/chunk-J42ZXLBL.js.map +0 -1
  251. package/dist/chunk-JPBMRJFC.js.map +0 -1
  252. package/dist/chunk-LJI7VXJD.js +0 -1
  253. package/dist/chunk-LJI7VXJD.js.map +0 -1
  254. package/dist/chunk-OCND33TO.js +0 -1
  255. package/dist/chunk-OCND33TO.js.map +0 -1
  256. package/dist/chunk-P2QOL63K.js +0 -1
  257. package/dist/chunk-P2QOL63K.js.map +0 -1
  258. package/dist/chunk-Q3QCLNVG.js.map +0 -1
  259. package/dist/chunk-QTZPA2FR.js.map +0 -1
  260. package/dist/chunk-RLUS76LZ.js +0 -1
  261. package/dist/chunk-RLUS76LZ.js.map +0 -1
  262. package/dist/chunk-TEOJCBSG.js +0 -1
  263. package/dist/chunk-TEOJCBSG.js.map +0 -1
  264. package/dist/chunk-TMMGS6TC.js +0 -1
  265. package/dist/chunk-TMMGS6TC.js.map +0 -1
  266. package/dist/chunk-W6EPHHTS.js.map +0 -1
  267. package/dist/chunk-Z6XMXMVI.js.map +0 -1
  268. package/dist/chunk-ZNCXENNB.js +0 -1
  269. package/dist/chunk-ZNCXENNB.js.map +0 -1
  270. package/dist/chunk-ZZT2PQZ5.js +0 -1
  271. package/dist/chunk-ZZT2PQZ5.js.map +0 -1
  272. /package/dist/{chunk-6EUVIZAS.js.map → chunk-4QYTVSNR.js.map} +0 -0
  273. /package/dist/{chunk-6EPYVBAX.js.map → chunk-A6OINYNP.js.map} +0 -0
  274. /package/dist/{chunk-VDVFJXX5.js.map → chunk-QY3L5BKN.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ships/modules-core.ts"],"names":["buildModuleCatalogue","modules_core_default","CORE_MODULES"],"mappings":"O,y+gIAqCO,IAAME,aAA4CF,qBACrDC,qBACA,eACJC"}
1
+ {"version":3,"sources":["../src/ships/modules-core.ts"],"names":["buildModuleCatalogue","modules_core_default","CORE_MODULES"],"mappings":"O,q7iIAqCO,IAAME,aAA4CF,qBACrDC,qBACA,eACJC"}
@@ -0,0 +1 @@
1
+ function requireFiniteNonNegative(scope,name,value){if(!Number.isFinite(value)||value<0){throw new RangeError(`${scope}: ${name} must be a finite non-negative number`)}}function validateMassCurve(label,curve){for(const field of["minMass","optMass","maxMass"]){requireFiniteNonNegative(label,field,curve[field])}const allMassesEqual=curve.minMass===curve.optMass&&curve.optMass===curve.maxMass;if(!allMassesEqual&&!(curve.minMass<curve.optMass&&curve.optMass<curve.maxMass)){throw new RangeError(`${label}: masses must be strictly ordered minMass < optMass < maxMass, or all equal`)}for(const field of["minMultiplier","optMultiplier","maxMultiplier"]){requireFiniteNonNegative(label,field,curve[field])}const allMultipliersEqual=curve.minMultiplier===curve.optMultiplier&&curve.optMultiplier===curve.maxMultiplier;const strictlyOrderedMultipliers=curve.minMultiplier<curve.optMultiplier&&curve.optMultiplier<curve.maxMultiplier;if(!allMultipliersEqual&&!strictlyOrderedMultipliers){throw new RangeError(`${label}: multipliers must be strictly ordered minMultiplier < optMultiplier < maxMultiplier, or all equal`)}if(allMassesEqual&&!allMultipliersEqual){throw new RangeError(`${label}: an all-equal mass curve must have equal multipliers`)}}function massCurveMultiplier(labels,mass,curve){requireFiniteNonNegative(labels.scope,labels.mass,mass);validateMassCurve(`${labels.scope}: ${labels.curve}`,curve);if(mass>curve.maxMass)return 0;const span=curve.maxMass-curve.minMass;if(span<=0||curve.maxMultiplier===curve.minMultiplier)return curve.optMultiplier;const normalised=Math.max(0,Math.min(1,(curve.maxMass-mass)/span));const optNormalised=Math.min(1,(curve.maxMass-curve.optMass)/span);const exponent=Math.log((curve.optMultiplier-curve.minMultiplier)/(curve.maxMultiplier-curve.minMultiplier))/Math.log(optNormalised);if(!Number.isFinite(exponent)){throw new RangeError(`${labels.scope}: curve values do not produce a finite exponent`)}return curve.minMultiplier+Math.pow(normalised,exponent)*(curve.maxMultiplier-curve.minMultiplier)}export{massCurveMultiplier,requireFiniteNonNegative,validateMassCurve};//# sourceMappingURL=chunk-EVW4Z4CB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/internal/mass-curve.ts"],"names":["requireFiniteNonNegative","scope","name","value","Number","isFinite","RangeError","validateMassCurve","label","curve","field","allMassesEqual","minMass","optMass","maxMass","allMultipliersEqual","minMultiplier","optMultiplier","maxMultiplier","strictlyOrderedMultipliers","massCurveMultiplier","labels","mass","span","normalised","Math","max","min","optNormalised","exponent","log","pow"],"mappings":"AAqEO,SAASA,yBAAyBC,MAAeC,KAAcC,OAClE,IAAKC,OAAOC,SAASF,QAAUA,MAAQ,EAAG,CACtC,MAAM,IAAIG,WAAW,GAAGL,UAAUC,4CACtC,CACJ,CAWO,SAASK,kBAAkBC,MAAeC,OAC7C,IAAA,MAAWC,QAAS,CAAC,UAAW,UAAW,WAAqB,CAC5DV,yBAAyBQ,MAAOE,MAAOD,MAAMC,OACjD,CACA,MAAMC,eAAiBF,MAAMG,UAAYH,MAAMI,SAAWJ,MAAMI,UAAYJ,MAAMK,QAClF,IAAKH,kBAAoBF,MAAMG,QAAUH,MAAMI,SAAWJ,MAAMI,QAAUJ,MAAMK,SAAU,CACtF,MAAM,IAAIR,WACN,GAAGE,mFAEX,CACA,IAAA,MAAWE,QAAS,CAAC,gBAAiB,gBAAiB,iBAA2B,CAC9EV,yBAAyBQ,MAAOE,MAAOD,MAAMC,OACjD,CACA,MAAMK,oBACFN,MAAMO,gBAAkBP,MAAMQ,eAAiBR,MAAMQ,gBAAkBR,MAAMS,cACjF,MAAMC,2BACFV,MAAMO,cAAgBP,MAAMQ,eAAiBR,MAAMQ,cAAgBR,MAAMS,cAC7E,IAAKH,sBAAwBI,2BAA4B,CACrD,MAAM,IAAIb,WACN,GAAGE,0GAEX,CACA,GAAIG,iBAAmBI,oBAAqB,CACxC,MAAM,IAAIT,WAAW,GAAGE,6DAC5B,CACJ,CAaO,SAASY,oBACZC,OACAC,KACAb,OAEAT,yBAAyBqB,OAAOpB,MAAOoB,OAAOC,KAAMA,MACpDf,kBAAkB,GAAGc,OAAOpB,UAAUoB,OAAOZ,QAASA,OACtD,GAAIa,KAAOb,MAAMK,QAAS,OAAO,EACjC,MAAMS,KAAOd,MAAMK,QAAUL,MAAMG,QACnC,GAAIW,MAAQ,GAAKd,MAAMS,gBAAkBT,MAAMO,cAAA,OAAsBP,MAAMQ,cAC3E,MAAMO,WAAaC,KAAKC,IAAI,EAAGD,KAAKE,IAAI,GAAIlB,MAAMK,QAAUQ,MAAQC,OACpE,MAAMK,cAAgBH,KAAKE,IAAI,GAAIlB,MAAMK,QAAUL,MAAMI,SAAWU,MACpE,MAAMM,SACFJ,KAAKK,KACArB,MAAMQ,cAAgBR,MAAMO,gBACxBP,MAAMS,cAAgBT,MAAMO,gBACjCS,KAAKK,IAAIF,eACjB,IAAKxB,OAAOC,SAASwB,UAAW,CAG5B,MAAM,IAAIvB,WAAW,GAAGe,OAAOpB,uDACnC,CACA,OACIQ,MAAMO,cACNS,KAAKM,IAAIP,WAAYK,WAAapB,MAAMS,cAAgBT,MAAMO,cAEtE,QAAAI,oBAAApB,yBAAAO"}
@@ -1 +1 @@
1
- import{getLocalizedName,createLocalizedNameIndex}from"./chunk-RVIYOHYF.js";var experimental_effect_descriptions_default={special_auto_loader:{en:"Reloads the weapon while it continues firing."},special_corrosive_shell:{en:"Reduces the target armour hardness; costs 20% maximum ammo."},special_blinding_shell:{en:"Reduces the target's sensor acuity."},special_dispersal_field:{en:"Reduces the target's gimbal and turret tracking."},special_drag_munitions:{en:"Reduces the target's speed and prevents it from boosting engine thrust."},special_force_shell:{en:"Pushes the target off course."},special_fsd_interrupt:{en:"Reboots the target's frame shift drive."},special_high_yield_shell:{en:"Deals 50/50 kinetic/explosive damage with module splash damage."},special_distortion_field:{en:"Deals 50/50 kinetic/thermal damage."},special_choke_canister:{en:"Reboots the target's thrusters."},special_mass_lock:{en:"Inhibits the target's frame shift drive."},special_overload_munitions:{en:"Converts damage to 50/50 explosive/thermal."},special_penetrator_munitions:{en:"Deals damage to the target's modules."},special_deep_cut_payload:{en:"Deals damage to the target's modules."},special_phasing_sequence:{en:"10% of damage bypasses shields."},special_plasma_slug:{en:"Reloads from ship fuel instead of ammunition."},special_radiant_canister:{en:"Emits an area of heat and sensor disruption."},special_regeneration_sequence:{en:"Regenerates wingmates’ shields on hits."},special_reverberating_cascade:{en:"Damages the target's shield generator."},special_scramble_spectrum:{en:"Causes the target's modules to malfunction."},special_screening_shell:{en:"Effective against munitions (e.g. missiles)."},special_shiftlock_canister:{en:"Reboots the frame shift drives of ships in the area."},special_smart_rounds:{en:"Deals no damage to ships that are not the current target."},special_super_penetrator:{en:"Deals damage to the target's modules."},special_lock_breaker:{en:"Causes the target to lose its lock."},special_thermal_cascade:{en:"Increases heat on a shielded target."},special_thermal_conduit:{en:"Damage scales with the attacker's heat level."},special_thermalshock:{en:"Increases the target's heat."},special_thermal_vent:{en:"Reduces the attacker's heat when hitting a target."}};var DESCRIPTIONS=/* @__PURE__ */createLocalizedNameIndex(experimental_effect_descriptions_default);function getExperimentalEffectDescription(fdname,locale){return getLocalizedName(DESCRIPTIONS,fdname,locale,"getExperimentalEffectDescription","fdname")}export{getExperimentalEffectDescription};//# sourceMappingURL=chunk-4S6WB7QR.js.map
1
+ import{getLocalizedName,createLocalizedNameIndex}from"./chunk-RVIYOHYF.js";var experimental_effect_descriptions_default={special_auto_loader:{en:"Reloads the weapon while it continues firing."},special_corrosive_shell:{en:"Reduces the target armour hardness; costs 20% maximum ammo."},special_blinding_shell:{en:"Reduces the target's sensor acuity."},special_dispersal_field:{en:"Reduces the target's gimbal and turret tracking."},special_drag_munitions:{en:"Reduces the target's speed and prevents it from boosting engine thrust."},special_force_shell:{en:"Pushes the target off course."},special_fsd_interrupt:{en:"Reboots the target's frame shift drive."},special_high_yield_shell:{en:"Deals 50/50 kinetic/explosive damage with module splash damage."},special_distortion_field:{en:"Deals 50/50 kinetic/thermal damage."},special_choke_canister:{en:"Reboots the target's thrusters."},special_mass_lock:{en:"Inhibits the target's frame shift drive."},special_overload_munitions:{en:"Converts damage to 50/50 explosive/thermal."},special_penetrator_munitions:{en:"Deals damage to the target's modules."},special_deep_cut_payload:{en:"Deals damage to the target's modules."},special_phasing_sequence:{en:"10% of damage bypasses shields."},special_plasma_slug:{en:"Reloads from ship fuel instead of ammunition."},special_radiant_canister:{en:"Emits an area of heat and sensor disruption."},special_regeneration_sequence:{en:"Regenerates wingmates’ shields on hits."},special_reverberating_cascade:{en:"Damages the target's shield generator."},special_scramble_spectrum:{en:"Causes the target's modules to malfunction."},special_screening_shell:{en:"Effective against munitions (e.g. missiles)."},special_shiftlock_canister:{en:"Reboots the frame shift drives of ships in the area."},special_smart_rounds:{en:"Deals no damage to ships that are not the current target."},special_super_penetrator:{en:"Deals damage to the target's modules."},special_lock_breaker:{en:"Causes the target to lose its lock."},special_thermal_cascade:{en:"Increases heat on a shielded target."},special_thermal_conduit:{en:"Damage scales with the attacker's heat level."},special_thermalshock:{en:"Increases the target's heat."},special_thermal_vent:{en:"Reduces the attacker's heat when hitting a target."}};var DESCRIPTIONS=/* @__PURE__ */createLocalizedNameIndex(experimental_effect_descriptions_default);function getExperimentalEffectDescription(experimentalEffectSymbol,locale){return getLocalizedName(DESCRIPTIONS,experimentalEffectSymbol,locale,"getExperimentalEffectDescription","experimentalEffectSymbol")}export{getExperimentalEffectDescription};//# sourceMappingURL=chunk-FF2X4K5P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/experimental-effect-descriptions.ts"],"names":["getLocalizedName","createLocalizedNameIndex","experimental_effect_descriptions_default","DESCRIPTIONS","getExperimentalEffectDescription","experimentalEffectSymbol","locale"],"mappings":"O,muEASA,IAAMG,4BAAAF,yBAAwDC,0CAmBvD,SAASE,iCACZC,yBACAC,QAEA,OAAON,iBACHG,aACAE,yBACAC,OACA,mCACA,2BAER,QAAAF"}
@@ -0,0 +1 @@
1
+ import{mapDamageTypes,stackArmourResistance,effectiveHitPoints}from"./chunk-JGOAQLYW.js";var reinforcementResistances=(sources,type)=>sources.map(source=>source[`${type}Resistance`]??0);function armourMetrics(input){const bulkhead=input.bulkhead??{};const reinforcements=input.reinforcements??[];const moduleReinforcements=input.moduleReinforcements??[];const bulkheads=input.baseArmour*(1+(bulkhead.hullBoost??0));const reinforcement=reinforcements.reduce((sum,pack)=>sum+(pack.hullReinforcement??0)+input.baseArmour*(pack.hullBoost??0),0);const hitPoints=bulkheads+reinforcement;const resistances=Object.freeze(mapDamageTypes(type=>stackArmourResistance(bulkhead[`${type}Resistance`]??0,reinforcementResistances(reinforcements,type))));return Object.freeze({hitPoints:hitPoints,bulkheads:bulkheads,reinforcement:reinforcement,resistances:resistances,effectiveHitPoints:Object.freeze(effectiveHitPoints(hitPoints,resistances)),moduleArmour:moduleReinforcements.reduce((sum,pack)=>sum+(pack.integrity??0),0),moduleProtection:1-moduleReinforcements.reduce((product,pack)=>product*(1-(pack.moduleProtection??0)),1)})}export{armourMetrics};//# sourceMappingURL=chunk-FYVPZBXN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/armour.ts"],"names":["mapDamageTypes","stackArmourResistance","effectiveHitPoints","reinforcementResistances","sources","type","map","source","armourMetrics","input","bulkhead","reinforcements","moduleReinforcements","bulkheads","baseArmour","hullBoost","reinforcement","reduce","sum","pack","hullReinforcement","hitPoints","resistances","Object","freeze","moduleArmour","integrity","moduleProtection","product"],"mappings":"O,kFA8IA,IAAMG,yBAA2B,CAC7BC,QACAC,OACWD,QAAQE,IAAKC,QAAWA,OAAO,GAAGF,mBAAqB,GAqB/D,SAASG,cAAcC,OAC1B,MAAMC,SAA2BD,MAAMC,UAAY,CAAA,EACnD,MAAMC,eAAiBF,MAAME,gBAAkB,GAC/C,MAAMC,qBAAuBH,MAAMG,sBAAwB,GAE3D,MAAMC,UAAYJ,MAAMK,YAAc,GAAKJ,SAASK,WAAa,IACjE,MAAMC,cAAgBL,eAAeM,OACjC,CAACC,IAAKC,OACFD,KAAOC,KAAKC,mBAAqB,GAAKX,MAAMK,YAAcK,KAAKJ,WAAa,GAChF,GAEJ,MAAMM,UAAYR,UAAYG,cAE9B,MAAMM,YAAiCC,OAAOC,OAC1CxB,eAAgBK,MACZJ,sBACIS,SAAS,GAAGL,mBAAqB,EACjCF,yBAAyBQ,eAAgBN,SAKrD,OAAOkB,OAAOC,OAAO,CACjBH,oBACAR,oBACAG,4BACAM,wBACApB,mBAAoBqB,OAAOC,OAAOtB,mBAAmBmB,UAAWC,cAChEG,aAAcb,qBAAqBK,OAAO,CAACC,IAAKC,OAASD,KAAOC,KAAKO,WAAa,GAAI,GACtFC,iBACI,EACAf,qBAAqBK,OACjB,CAACW,QAAST,OAASS,SAAW,GAAKT,KAAKQ,kBAAoB,IAC5D,IAGhB,QAAAnB"}
@@ -1 +1 @@
1
- import{normalizeKey}from"./chunk-BKWLI44T.js";import{requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var engineering_options_default={groups:{powerPlants:{name:"Power Plants",blueprints:["PowerPlant_Armoured","PowerPlant_Boosted","PowerPlant_Stealth"],experimentals:["special_powerplant_cooled","special_powerplant_highcharge","special_powerplant_lightweight","special_powerplant_toughened"]},guardianPowerPlants:{name:"Guardian Power Plants",blueprints:["GuardianModule_Sturdy"],experimentals:[]},thrusters:{name:"Thrusters",blueprints:["Engine_Dirty","Engine_Reinforced","Engine_Tuned"],experimentals:["special_engine_cooled","special_engine_haulage","special_engine_lightweight","special_engine_overloaded","special_engine_toughened"]},frameShiftDrives:{name:"Frame Shift Drives",blueprints:["FSD_FastBoot","FSD_LongRange","FSD_Shielded"],experimentals:["special_fsd_cooled","special_fsd_fuelcapacity","special_fsd_heavy","special_fsd_lightweight","special_fsd_toughened"]},powerDistributors:{name:"Power Distributors",blueprints:["PowerDistributor_HighCapacity","PowerDistributor_HighFrequency","PowerDistributor_PriorityEngines","PowerDistributor_PrioritySystems","PowerDistributor_PriorityWeapons","PowerDistributor_Shielded"],experimentals:["special_powerdistributor_capacity","special_powerdistributor_efficient","special_powerdistributor_fast","special_powerdistributor_lightweight","special_powerdistributor_toughened"]},guardianPowerDistributors:{name:"Guardian Power Distributors",blueprints:["GuardianModule_Sturdy"],experimentals:[]},frameShiftDrivesSCO:{name:"Frame Shift Drives (SCO)",blueprints:["FSD_FastBoot","FSD_LongRange","FSD_Shielded"],experimentals:["special_fsd_cooled","special_fsd_fuelcapacity","special_fsd_heavy","special_fsd_lightweight","special_fsd_toughened"]},shieldGenerators:{name:"Shield Generators",blueprints:["ShieldGenerator_Kinetic","ShieldGenerator_Optimised","ShieldGenerator_Reinforced","ShieldGenerator_Thermic"],experimentals:["special_shield_efficient","special_shield_health","special_shield_kinetic","special_shield_lightweight","special_shield_regenerative","special_shield_resistive","special_shield_thermic","special_shield_toughened"]},shieldCellBanks:{name:"Shield Cell Banks",blueprints:["ShieldCellBank_Rapid","ShieldCellBank_Specialised"],experimentals:["special_shieldcell_efficient","special_shieldcell_gradual","special_shieldcell_lightweight","special_shieldcell_oversized","special_shieldcell_toughened"]},hullReinforcements:{name:"Hull Reinforcements",blueprints:["HullReinforcement_Advanced","HullReinforcement_Explosive","HullReinforcement_HeavyDuty","HullReinforcement_Kinetic","HullReinforcement_Thermic"],experimentals:["special_hullreinforcement_chunky","special_hullreinforcement_explosive","special_hullreinforcement_kinetic","special_hullreinforcement_thermic"]},guardianHullReinforcements:{name:"Guardian Hull Reinforcements",blueprints:["GuardianModule_Sturdy"],experimentals:[]},pulseLasers:{name:"Pulse Lasers",blueprints:["PulseLaser_ThermalPlasmaConversion","Weapon_Efficient","Weapon_Focused","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_concordant_sequence","special_emissive_munitions","special_phasing_sequence","special_scramble_spectrum","special_thermalshock","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},burstLasers:{name:"Burst Lasers",blueprints:["BurstLaser_ThermalPlasmaConversion","Weapon_Efficient","Weapon_Focused","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_concordant_sequence","special_distortion_field","special_phasing_sequence","special_scramble_spectrum","special_thermalshock","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},beamLasers:{name:"Beam Lasers",blueprints:["BeamLaser_ThermalPlasmaConversion","Weapon_Efficient","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_concordant_sequence","special_regeneration_sequence","special_thermal_conduit","special_thermal_vent","special_thermalshock","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_toughened"]},cannons:{name:"Cannons",blueprints:["Weapon_Efficient","Weapon_HighCapacity","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_auto_loader","special_dispersal_field","special_force_shell","special_high_yield_shell","special_smart_rounds","special_thermal_cascade","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},fragmentCannons:{name:"Fragment Cannons",blueprints:["Weapon_DoubleShot","Weapon_Efficient","Weapon_HighCapacity","Weapon_LightWeight","Weapon_Overcharged","Weapon_RapidFire","Weapon_Sturdy"],experimentals:["special_blinding_shell","special_corrosive_shell","special_drag_munitions","special_incendiary_rounds","special_screening_shell","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},multiCannons:{name:"Multi-Cannons",blueprints:["MC_Overcharged","Weapon_Efficient","Weapon_HighCapacity","Weapon_LightWeight","Weapon_LongRange","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_auto_loader","special_corrosive_shell","special_emissive_munitions","special_incendiary_rounds","special_phasing_sequence","special_smart_rounds","special_thermalshock","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},plasmaAccelerators:{name:"Plasma Accelerators",blueprints:["Weapon_Efficient","Weapon_Focused","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_blinding_shell","special_dispersal_field","special_lock_breaker","special_phasing_sequence","special_plasma_slug","special_thermal_conduit","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},railGuns:{name:"Rail Guns",blueprints:["Weapon_HighCapacity","Weapon_LightWeight","Weapon_LongRange","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_feedback_cascade_cooled","special_plasma_slug_cooled","special_super_penetrator","special_super_penetrator_cooled","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},missiles:{name:"Missiles",blueprints:["Weapon_HighCapacity","Weapon_LightWeight","Weapon_RapidFire","Weapon_Sturdy"],experimentals:["special_drag_munitions","special_emissive_munitions","special_fsd_interrupt","special_overload_munitions","special_penetrator_munitions","special_thermal_cascade","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},mines:{name:"Mines",blueprints:["Weapon_HighCapacity","Weapon_LightWeight","Weapon_RapidFire","Weapon_Sturdy"],experimentals:["special_choke_canister","special_emissive_munitions","special_overload_munitions","special_radiant_canister","special_reverberating_cascade","special_shiftlock_canister","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_toughened"]},torpedoes:{name:"Torpedoes",blueprints:["Weapon_LightWeight","Weapon_Sturdy"],experimentals:["special_deep_cut_payload","special_mass_lock","special_reverberating_cascade","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_toughened"]},shieldBoosters:{name:"Shield Boosters",blueprints:["ShieldBooster_Explosive","ShieldBooster_HeavyDuty","ShieldBooster_Kinetic","ShieldBooster_Resistive","ShieldBooster_Thermic"],experimentals:["special_shieldbooster_chunky","special_shieldbooster_efficient","special_shieldbooster_explosive","special_shieldbooster_kinetic","special_shieldbooster_thermic","special_shieldbooster_toughened"]},bulkheads:{name:"Bulkheads",blueprints:["Armour_Advanced","Armour_Explosive","Armour_HeavyDuty","Armour_Kinetic","Armour_Thermic"],experimentals:["special_armour_chunky","special_armour_explosive","special_armour_kinetic","special_armour_thermic"]},lifeSupports:{name:"Life Supports",blueprints:["LifeSupport_LightWeight","LifeSupport_Reinforced","LifeSupport_Shielded"],experimentals:[]},sensors:{name:"Sensors",blueprints:["Sensor_LightWeight","Sensor_LongRange","Sensor_WideAngle"],experimentals:[]},autoFieldMaintenanceUnits:{name:"Auto Field-Maintenance Units",blueprints:["AFM_Shielded"],experimentals:[]},collectionLimpets:{name:"Collection Limpets",blueprints:["CollectionLimpet_LightWeight","CollectionLimpet_Reinforced","CollectionLimpet_Shielded"],experimentals:[]},fsdBoosters:{name:"FSD Boosters",blueprints:["GuardianModule_Sturdy"],experimentals:[]},fsdInterdictors:{name:"FSD Interdictors",blueprints:["FSDinterdictor_Expanded","FSDinterdictor_LongRange"],experimentals:[]},fuelScoops:{name:"Fuel Scoops",blueprints:["FuelScoop_Efficiency","FuelScoop_Shielded"],experimentals:[]},fuelTransferLimpets:{name:"Fuel Transfer Limpets",blueprints:["FuelTransferLimpet_LightWeight","FuelTransferLimpet_Reinforced","FuelTransferLimpet_Shielded"],experimentals:[]},hatchBreakerLimpets:{name:"Hatch Breaker Limpets",blueprints:["HatchBreakerLimpet_LightWeight","HatchBreakerLimpet_Reinforced","HatchBreakerLimpet_Shielded"],experimentals:[]},moduleReinforcements:{name:"Module Reinforcements",blueprints:["GuardianModule_Sturdy"],experimentals:[]},prospectingLimpets:{name:"Prospecting Limpets",blueprints:["ProspectingLimpet_LightWeight","ProspectingLimpet_Reinforced","ProspectingLimpet_Shielded"],experimentals:[]},refineries:{name:"Refineries",blueprints:["Refineries_Shielded"],experimentals:[]},shieldReinforcements:{name:"Shield Reinforcements",blueprints:["GuardianModule_Sturdy"],experimentals:[]},surfaceScanners:{name:"Surface Scanners",blueprints:["Sensor_Expanded"],experimentals:[]},chaffLaunchers:{name:"Chaff Launchers",blueprints:["Misc_ChaffCapacity","Misc_LightWeight","Misc_Reinforced","Misc_Shielded"],experimentals:[]},ecms:{name:"ECMs",blueprints:["Misc_LightWeight","Misc_Reinforced","Misc_Shielded"],experimentals:[]},heatSinkLaunchers:{name:"Heat Sink Launchers",blueprints:["Misc_HeatSinkCapacity","Misc_LightWeight","Misc_Reinforced","Misc_Shielded"],experimentals:[]},killWarrantScanners:{name:"Kill Warrant Scanners",blueprints:["Misc_LightWeight","Misc_Reinforced","Misc_Shielded","Scanner_LongRange","Scanner_WideAngle","Sensor_FastScan"],experimentals:[]},manifestScanners:{name:"Manifest Scanners",blueprints:["Misc_LightWeight","Misc_Reinforced","Misc_Shielded","Scanner_LongRange","Scanner_WideAngle","Sensor_FastScan"],experimentals:[]},pointDefence:{name:"Point Defence",blueprints:["Misc_LightWeight","Misc_PointDefenseCapacity","Misc_Reinforced","Misc_Shielded"],experimentals:[]},wakeScanners:{name:"Wake Scanners",blueprints:["Misc_LightWeight","Misc_Reinforced","Misc_Shielded","Scanner_LongRange","Scanner_WideAngle","Sensor_FastScan"],experimentals:[]},guardianGauss:{name:"Exp - Guardian Gauss",blueprints:["GuardianModule_Sturdy"],experimentals:[]},guardianPlasma:{name:"Exp - Guardian Plasma",blueprints:["GuardianModule_Sturdy"],experimentals:[]},guardianShard:{name:"Exp - Guardian Shard",blueprints:["GuardianModule_Sturdy"],experimentals:[]}},modules:{Int_Powerplant_Size2_Class1:"powerPlants",Int_Powerplant_Size2_Class2:"powerPlants",Int_Powerplant_Size2_Class3:"powerPlants",Int_Powerplant_Size2_Class4:"powerPlants",Int_Powerplant_Size2_Class5:"powerPlants",Int_Powerplant_Size3_Class1:"powerPlants",Int_Powerplant_Size3_Class2:"powerPlants",Int_Powerplant_Size3_Class3:"powerPlants",Int_Powerplant_Size3_Class4:"powerPlants",Int_Powerplant_Size3_Class5:"powerPlants",Int_Powerplant_Size4_Class1:"powerPlants",Int_Powerplant_Size4_Class2:"powerPlants",Int_Powerplant_Size4_Class3:"powerPlants",Int_Powerplant_Size4_Class4:"powerPlants",Int_Powerplant_Size4_Class5:"powerPlants",Int_Powerplant_Size5_Class1:"powerPlants",Int_Powerplant_Size5_Class2:"powerPlants",Int_Powerplant_Size5_Class3:"powerPlants",Int_Powerplant_Size5_Class4:"powerPlants",Int_Powerplant_Size5_Class5:"powerPlants",Int_Powerplant_Size6_Class1:"powerPlants",Int_Powerplant_Size6_Class2:"powerPlants",Int_Powerplant_Size6_Class3:"powerPlants",Int_Powerplant_Size6_Class4:"powerPlants",Int_Powerplant_Size6_Class5:"powerPlants",Int_Powerplant_Size7_Class1:"powerPlants",Int_Powerplant_Size7_Class2:"powerPlants",Int_Powerplant_Size7_Class3:"powerPlants",Int_Powerplant_Size7_Class4:"powerPlants",Int_Powerplant_Size7_Class5:"powerPlants",Int_Powerplant_Size8_Class1:"powerPlants",Int_Powerplant_Size8_Class2:"powerPlants",Int_Powerplant_Size8_Class3:"powerPlants",Int_Powerplant_Size8_Class4:"powerPlants",Int_Powerplant_Size8_Class5:"powerPlants",Int_PowerPlant_Size2_Class1_free:"powerPlants",Int_GuardianPowerplant_Size2:"guardianPowerPlants",Int_GuardianPowerplant_Size3:"guardianPowerPlants",Int_GuardianPowerplant_Size4:"guardianPowerPlants",Int_GuardianPowerplant_Size5:"guardianPowerPlants",Int_GuardianPowerplant_Size6:"guardianPowerPlants",Int_GuardianPowerplant_Size7:"guardianPowerPlants",Int_GuardianPowerplant_Size8:"guardianPowerPlants",Int_Engine_Size2_Class1:"thrusters",Int_Engine_Size2_Class2:"thrusters",Int_Engine_Size2_Class3:"thrusters",Int_Engine_Size2_Class4:"thrusters",Int_Engine_Size2_Class5:"thrusters",Int_Engine_Size3_Class1:"thrusters",Int_Engine_Size3_Class2:"thrusters",Int_Engine_Size3_Class3:"thrusters",Int_Engine_Size3_Class4:"thrusters",Int_Engine_Size3_Class5:"thrusters",Int_Engine_Size4_Class1:"thrusters",Int_Engine_Size4_Class2:"thrusters",Int_Engine_Size4_Class3:"thrusters",Int_Engine_Size4_Class4:"thrusters",Int_Engine_Size4_Class5:"thrusters",Int_Engine_Size5_Class1:"thrusters",Int_Engine_Size5_Class2:"thrusters",Int_Engine_Size5_Class3:"thrusters",Int_Engine_Size5_Class4:"thrusters",Int_Engine_Size5_Class5:"thrusters",Int_Engine_Size6_Class1:"thrusters",Int_Engine_Size6_Class2:"thrusters",Int_Engine_Size6_Class3:"thrusters",Int_Engine_Size6_Class4:"thrusters",Int_Engine_Size6_Class5:"thrusters",Int_Engine_Size7_Class1:"thrusters",Int_Engine_Size7_Class2:"thrusters",Int_Engine_Size7_Class3:"thrusters",Int_Engine_Size7_Class4:"thrusters",Int_Engine_Size7_Class5:"thrusters",Int_Engine_Size8_Class1:"thrusters",Int_Engine_Size8_Class2:"thrusters",Int_Engine_Size8_Class3:"thrusters",Int_Engine_Size8_Class4:"thrusters",Int_Engine_Size8_Class5:"thrusters",Int_Engine_Size2_Class1_free:"thrusters",Int_Engine_Size3_Class5_Fast:"thrusters",Int_Engine_Size2_Class5_Fast:"thrusters",Int_Engine_Size7_Class5_GravityOptimised_MkII:"thrusters",Int_MkIIAgileBoost_Engine_Size5_Class5:"thrusters",Int_Hyperdrive_Size2_Class1:"frameShiftDrives",Int_Hyperdrive_Size2_Class2:"frameShiftDrives",Int_Hyperdrive_Size2_Class3:"frameShiftDrives",Int_Hyperdrive_Size2_Class4:"frameShiftDrives",Int_Hyperdrive_Size2_Class5:"frameShiftDrives",Int_Hyperdrive_Size3_Class1:"frameShiftDrives",Int_Hyperdrive_Size3_Class2:"frameShiftDrives",Int_Hyperdrive_Size3_Class3:"frameShiftDrives",Int_Hyperdrive_Size3_Class4:"frameShiftDrives",Int_Hyperdrive_Size3_Class5:"frameShiftDrives",Int_Hyperdrive_Size4_Class1:"frameShiftDrives",Int_Hyperdrive_Size4_Class2:"frameShiftDrives",Int_Hyperdrive_Size4_Class3:"frameShiftDrives",Int_Hyperdrive_Size4_Class4:"frameShiftDrives",Int_Hyperdrive_Size4_Class5:"frameShiftDrives",Int_Hyperdrive_Size5_Class1:"frameShiftDrives",Int_Hyperdrive_Size5_Class2:"frameShiftDrives",Int_Hyperdrive_Size5_Class3:"frameShiftDrives",Int_Hyperdrive_Size5_Class4:"frameShiftDrives",Int_Hyperdrive_Size5_Class5:"frameShiftDrives",Int_Hyperdrive_Size6_Class1:"frameShiftDrives",Int_Hyperdrive_Size6_Class2:"frameShiftDrives",Int_Hyperdrive_Size6_Class3:"frameShiftDrives",Int_Hyperdrive_Size6_Class4:"frameShiftDrives",Int_Hyperdrive_Size6_Class5:"frameShiftDrives",Int_Hyperdrive_Size7_Class1:"frameShiftDrives",Int_Hyperdrive_Size7_Class2:"frameShiftDrives",Int_Hyperdrive_Size7_Class3:"frameShiftDrives",Int_Hyperdrive_Size7_Class4:"frameShiftDrives",Int_Hyperdrive_Size7_Class5:"frameShiftDrives",Int_Hyperdrive_Size8_Class1:"frameShiftDrives",Int_Hyperdrive_Size8_Class2:"frameShiftDrives",Int_Hyperdrive_Size8_Class3:"frameShiftDrives",Int_Hyperdrive_Size8_Class4:"frameShiftDrives",Int_Hyperdrive_Size8_Class5:"frameShiftDrives",Int_Hyperdrive_Size2_Class1_free:"frameShiftDrives",Int_PowerDistributor_Size1_Class1:"powerDistributors",Int_PowerDistributor_Size1_Class2:"powerDistributors",Int_PowerDistributor_Size1_Class3:"powerDistributors",Int_PowerDistributor_Size1_Class4:"powerDistributors",Int_PowerDistributor_Size1_Class5:"powerDistributors",Int_PowerDistributor_Size2_Class1:"powerDistributors",Int_PowerDistributor_Size2_Class2:"powerDistributors",Int_PowerDistributor_Size2_Class3:"powerDistributors",Int_PowerDistributor_Size2_Class4:"powerDistributors",Int_PowerDistributor_Size2_Class5:"powerDistributors",Int_PowerDistributor_Size3_Class1:"powerDistributors",Int_PowerDistributor_Size3_Class2:"powerDistributors",Int_PowerDistributor_Size3_Class3:"powerDistributors",Int_PowerDistributor_Size3_Class4:"powerDistributors",Int_PowerDistributor_Size3_Class5:"powerDistributors",Int_PowerDistributor_Size4_Class1:"powerDistributors",Int_PowerDistributor_Size4_Class2:"powerDistributors",Int_PowerDistributor_Size4_Class3:"powerDistributors",Int_PowerDistributor_Size4_Class4:"powerDistributors",Int_PowerDistributor_Size4_Class5:"powerDistributors",Int_PowerDistributor_Size5_Class1:"powerDistributors",Int_PowerDistributor_Size5_Class2:"powerDistributors",Int_PowerDistributor_Size5_Class3:"powerDistributors",Int_PowerDistributor_Size5_Class4:"powerDistributors",Int_PowerDistributor_Size5_Class5:"powerDistributors",Int_PowerDistributor_Size6_Class1:"powerDistributors",Int_PowerDistributor_Size6_Class2:"powerDistributors",Int_PowerDistributor_Size6_Class3:"powerDistributors",Int_PowerDistributor_Size6_Class4:"powerDistributors",Int_PowerDistributor_Size6_Class5:"powerDistributors",Int_PowerDistributor_Size7_Class1:"powerDistributors",Int_PowerDistributor_Size7_Class2:"powerDistributors",Int_PowerDistributor_Size7_Class3:"powerDistributors",Int_PowerDistributor_Size7_Class4:"powerDistributors",Int_PowerDistributor_Size7_Class5:"powerDistributors",Int_PowerDistributor_Size8_Class1:"powerDistributors",Int_PowerDistributor_Size8_Class2:"powerDistributors",Int_PowerDistributor_Size8_Class3:"powerDistributors",Int_PowerDistributor_Size8_Class4:"powerDistributors",Int_PowerDistributor_Size8_Class5:"powerDistributors",Int_PowerDistributor_Size1_Class1_free:"powerDistributors",Int_GuardianPowerDistributor_Size1:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size2:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size3:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size4:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size5:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size6:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size7:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size8:"guardianPowerDistributors",Int_Hyperdrive_Overcharge_Size5_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size5_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size5_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size5_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size5_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class5_OverchargeBooster_MkII:"frameShiftDrivesSCO",Int_ShieldGenerator_Size1_Class1:"shieldGenerators",Int_ShieldGenerator_Size1_Class2:"shieldGenerators",Int_ShieldGenerator_Size1_Class3:"shieldGenerators",Int_ShieldGenerator_Size1_Class4:"shieldGenerators",Int_ShieldGenerator_Size1_Class5:"shieldGenerators",Int_ShieldGenerator_Size2_Class1:"shieldGenerators",Int_ShieldGenerator_Size2_Class2:"shieldGenerators",Int_ShieldGenerator_Size2_Class3:"shieldGenerators",Int_ShieldGenerator_Size2_Class4:"shieldGenerators",Int_ShieldGenerator_Size2_Class5:"shieldGenerators",Int_ShieldGenerator_Size3_Class1:"shieldGenerators",Int_ShieldGenerator_Size3_Class2:"shieldGenerators",Int_ShieldGenerator_Size3_Class3:"shieldGenerators",Int_ShieldGenerator_Size3_Class4:"shieldGenerators",Int_ShieldGenerator_Size3_Class5:"shieldGenerators",Int_ShieldGenerator_Size4_Class1:"shieldGenerators",Int_ShieldGenerator_Size4_Class2:"shieldGenerators",Int_ShieldGenerator_Size4_Class3:"shieldGenerators",Int_ShieldGenerator_Size4_Class4:"shieldGenerators",Int_ShieldGenerator_Size4_Class5:"shieldGenerators",Int_ShieldGenerator_Size5_Class1:"shieldGenerators",Int_ShieldGenerator_Size5_Class2:"shieldGenerators",Int_ShieldGenerator_Size5_Class3:"shieldGenerators",Int_ShieldGenerator_Size5_Class4:"shieldGenerators",Int_ShieldGenerator_Size5_Class5:"shieldGenerators",Int_ShieldGenerator_Size6_Class1:"shieldGenerators",Int_ShieldGenerator_Size6_Class2:"shieldGenerators",Int_ShieldGenerator_Size6_Class3:"shieldGenerators",Int_ShieldGenerator_Size6_Class4:"shieldGenerators",Int_ShieldGenerator_Size6_Class5:"shieldGenerators",Int_ShieldGenerator_Size7_Class1:"shieldGenerators",Int_ShieldGenerator_Size7_Class2:"shieldGenerators",Int_ShieldGenerator_Size7_Class3:"shieldGenerators",Int_ShieldGenerator_Size7_Class4:"shieldGenerators",Int_ShieldGenerator_Size7_Class5:"shieldGenerators",Int_ShieldGenerator_Size8_Class1:"shieldGenerators",Int_ShieldGenerator_Size8_Class2:"shieldGenerators",Int_ShieldGenerator_Size8_Class3:"shieldGenerators",Int_ShieldGenerator_Size8_Class4:"shieldGenerators",Int_ShieldGenerator_Size8_Class5:"shieldGenerators",Int_ShieldGenerator_Size2_Class1_free:"shieldGenerators",Int_ShieldGenerator_Size1_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size2_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size3_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size4_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size5_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size6_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size7_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size8_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size1_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size2_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size3_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size4_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size5_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size6_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size7_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size8_Class3_Fast:"shieldGenerators",Int_ShieldCellBank_Size1_Class1:"shieldCellBanks",Int_ShieldCellBank_Size1_Class2:"shieldCellBanks",Int_ShieldCellBank_Size1_Class3:"shieldCellBanks",Int_ShieldCellBank_Size1_Class4:"shieldCellBanks",Int_ShieldCellBank_Size1_Class5:"shieldCellBanks",Int_ShieldCellBank_Size2_Class1:"shieldCellBanks",Int_ShieldCellBank_Size2_Class2:"shieldCellBanks",Int_ShieldCellBank_Size2_Class3:"shieldCellBanks",Int_ShieldCellBank_Size2_Class4:"shieldCellBanks",Int_ShieldCellBank_Size2_Class5:"shieldCellBanks",Int_ShieldCellBank_Size3_Class1:"shieldCellBanks",Int_ShieldCellBank_Size3_Class2:"shieldCellBanks",Int_ShieldCellBank_Size3_Class3:"shieldCellBanks",Int_ShieldCellBank_Size3_Class4:"shieldCellBanks",Int_ShieldCellBank_Size3_Class5:"shieldCellBanks",Int_ShieldCellBank_Size4_Class1:"shieldCellBanks",Int_ShieldCellBank_Size4_Class2:"shieldCellBanks",Int_ShieldCellBank_Size4_Class3:"shieldCellBanks",Int_ShieldCellBank_Size4_Class4:"shieldCellBanks",Int_ShieldCellBank_Size4_Class5:"shieldCellBanks",Int_ShieldCellBank_Size5_Class1:"shieldCellBanks",Int_ShieldCellBank_Size5_Class2:"shieldCellBanks",Int_ShieldCellBank_Size5_Class3:"shieldCellBanks",Int_ShieldCellBank_Size5_Class4:"shieldCellBanks",Int_ShieldCellBank_Size5_Class5:"shieldCellBanks",Int_ShieldCellBank_Size6_Class1:"shieldCellBanks",Int_ShieldCellBank_Size6_Class2:"shieldCellBanks",Int_ShieldCellBank_Size6_Class3:"shieldCellBanks",Int_ShieldCellBank_Size6_Class4:"shieldCellBanks",Int_ShieldCellBank_Size6_Class5:"shieldCellBanks",Int_ShieldCellBank_Size7_Class1:"shieldCellBanks",Int_ShieldCellBank_Size7_Class2:"shieldCellBanks",Int_ShieldCellBank_Size7_Class3:"shieldCellBanks",Int_ShieldCellBank_Size7_Class4:"shieldCellBanks",Int_ShieldCellBank_Size7_Class5:"shieldCellBanks",Int_ShieldCellBank_Size8_Class1:"shieldCellBanks",Int_ShieldCellBank_Size8_Class2:"shieldCellBanks",Int_ShieldCellBank_Size8_Class3:"shieldCellBanks",Int_ShieldCellBank_Size8_Class4:"shieldCellBanks",Int_ShieldCellBank_Size8_Class5:"shieldCellBanks",Int_HullReinforcement_Size1_Class1:"hullReinforcements",Int_HullReinforcement_Size1_Class2:"hullReinforcements",Int_HullReinforcement_Size2_Class1:"hullReinforcements",Int_HullReinforcement_Size2_Class2:"hullReinforcements",Int_HullReinforcement_Size3_Class1:"hullReinforcements",Int_HullReinforcement_Size3_Class2:"hullReinforcements",Int_HullReinforcement_Size4_Class1:"hullReinforcements",Int_HullReinforcement_Size4_Class2:"hullReinforcements",Int_HullReinforcement_Size5_Class1:"hullReinforcements",Int_HullReinforcement_Size5_Class2:"hullReinforcements",Int_GuardianHullReinforcement_Size1_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size1_Class2:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size2_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size2_Class2:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size3_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size3_Class2:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size4_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size4_Class2:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size5_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size5_Class2:"guardianHullReinforcements",Hpt_PulseLaser_Fixed_Small:"pulseLasers",Hpt_PulseLaser_Fixed_Medium:"pulseLasers",Hpt_PulseLaser_Fixed_Large:"pulseLasers",Hpt_PulseLaser_Fixed_Huge:"pulseLasers",Hpt_PulseLaser_Gimbal_Small:"pulseLasers",Hpt_PulseLaser_Gimbal_Medium:"pulseLasers",Hpt_PulseLaser_Gimbal_Large:"pulseLasers",Hpt_PulseLaser_Turret_Small:"pulseLasers",Hpt_PulseLaser_Turret_Medium:"pulseLasers",Hpt_PulseLaser_Turret_Large:"pulseLasers",Hpt_PulseLaser_Fixed_Medium_Disruptor:"pulseLasers",Hpt_PulseLaser_Gimbal_Huge:"pulseLasers",Hpt_PulseLaserBurst_Fixed_Small:"burstLasers",Hpt_PulseLaserBurst_Fixed_Medium:"burstLasers",Hpt_PulseLaserBurst_Fixed_Large:"burstLasers",Hpt_PulseLaserBurst_Fixed_Huge:"burstLasers",Hpt_PulseLaserBurst_Gimbal_Small:"burstLasers",Hpt_PulseLaserBurst_Gimbal_Medium:"burstLasers",Hpt_PulseLaserBurst_Gimbal_Large:"burstLasers",Hpt_PulseLaserBurst_Turret_Small:"burstLasers",Hpt_PulseLaserBurst_Turret_Medium:"burstLasers",Hpt_PulseLaserBurst_Turret_Large:"burstLasers",Hpt_PulseLaserBurst_Fixed_Small_Scatter:"burstLasers",Hpt_PulseLaserBurst_Gimbal_Huge:"burstLasers",Hpt_BeamLaser_Fixed_Small:"beamLasers",Hpt_BeamLaser_Fixed_Medium:"beamLasers",Hpt_BeamLaser_Fixed_Large:"beamLasers",Hpt_BeamLaser_Fixed_Huge:"beamLasers",Hpt_BeamLaser_Gimbal_Small:"beamLasers",Hpt_BeamLaser_Gimbal_Medium:"beamLasers",Hpt_BeamLaser_Gimbal_Large:"beamLasers",Hpt_BeamLaser_Turret_Small:"beamLasers",Hpt_BeamLaser_Turret_Medium:"beamLasers",Hpt_BeamLaser_Turret_Large:"beamLasers",Hpt_BeamLaser_Fixed_Small_Heat:"beamLasers",Hpt_BeamLaser_Gimbal_Huge:"beamLasers",Hpt_Cannon_Fixed_Small:"cannons",Hpt_Cannon_Fixed_Medium:"cannons",Hpt_Cannon_Fixed_Large:"cannons",Hpt_Cannon_Fixed_Huge:"cannons",Hpt_Cannon_Gimbal_Small:"cannons",Hpt_Cannon_Gimbal_Medium:"cannons",Hpt_Cannon_Gimbal_Huge:"cannons",Hpt_Cannon_Turret_Small:"cannons",Hpt_Cannon_Turret_Medium:"cannons",Hpt_Cannon_Turret_Large:"cannons",Hpt_Cannon_Gimbal_Large:"cannons",Hpt_Cannon_Gimbal_Medium_Burst:"cannons",Hpt_Slugshot_Fixed_Small:"fragmentCannons",Hpt_Slugshot_Fixed_Medium:"fragmentCannons",Hpt_Slugshot_Fixed_Large:"fragmentCannons",Hpt_Slugshot_Gimbal_Small:"fragmentCannons",Hpt_Slugshot_Gimbal_Medium:"fragmentCannons",Hpt_Slugshot_Turret_Small:"fragmentCannons",Hpt_Slugshot_Turret_Medium:"fragmentCannons",Hpt_Slugshot_Gimbal_Large:"fragmentCannons",Hpt_Slugshot_Turret_Large:"fragmentCannons",Hpt_Slugshot_Fixed_Large_Range:"fragmentCannons",Hpt_MultiCannon_Fixed_Small:"multiCannons",Hpt_MultiCannon_Fixed_Medium:"multiCannons",Hpt_MultiCannon_Fixed_Large:"multiCannons",Hpt_MultiCannon_Fixed_Huge:"multiCannons",Hpt_MultiCannon_Gimbal_Small:"multiCannons",Hpt_MultiCannon_Gimbal_Medium:"multiCannons",Hpt_MultiCannon_Gimbal_Large:"multiCannons",Hpt_MultiCannon_Turret_Small:"multiCannons",Hpt_MultiCannon_Turret_Medium:"multiCannons",Hpt_MultiCannon_Turret_Large:"multiCannons",Hpt_MultiCannon_Fixed_Small_Strong:"multiCannons",Hpt_MultiCannon_Gimbal_Huge:"multiCannons",Hpt_MultiCannon_Fixed_Medium_Advanced:"multiCannons",Hpt_MultiCannon_Fixed_Small_Advanced:"multiCannons",Hpt_PlasmaAccelerator_Fixed_Medium:"plasmaAccelerators",Hpt_PlasmaAccelerator_Fixed_Large:"plasmaAccelerators",Hpt_PlasmaAccelerator_Fixed_Huge:"plasmaAccelerators",Hpt_PlasmaAccelerator_Fixed_Large_Advanced:"plasmaAccelerators",Hpt_Railgun_Fixed_Small:"railGuns",Hpt_Railgun_Fixed_Medium:"railGuns",Hpt_Railgun_Fixed_Medium_Burst:"railGuns",Hpt_BasicMissileRack_Fixed_Small:"missiles",Hpt_BasicMissileRack_Fixed_Medium:"missiles",Hpt_BasicMissileRack_Fixed_Large:"missiles",Hpt_DumbfireMissileRack_Fixed_Small:"missiles",Hpt_DumbfireMissileRack_Fixed_Medium:"missiles",Hpt_DrunkMissileRack_Fixed_Medium:"missiles",Hpt_DumbfireMissileRack_Fixed_Medium_Lasso:"missiles",Hpt_DumbfireMissileRack_Fixed_Large:"missiles",Hpt_DumbfireMissileRack_Fixed_Small_Advanced:"missiles",Hpt_DumbfireMissileRack_Fixed_Medium_Advanced:"missiles",Hpt_MineLauncher_Fixed_Small:"mines",Hpt_MineLauncher_Fixed_Medium:"mines",Hpt_MineLauncher_Fixed_Small_Impulse:"mines",Hpt_AdvancedTorpPylon_Fixed_Small:"torpedoes",Hpt_AdvancedTorpPylon_Fixed_Medium:"torpedoes",Hpt_AdvancedTorpPylon_Fixed_Large:"torpedoes",Hpt_ShieldBooster_Size0_Class1:"shieldBoosters",Hpt_ShieldBooster_Size0_Class2:"shieldBoosters",Hpt_ShieldBooster_Size0_Class3:"shieldBoosters",Hpt_ShieldBooster_Size0_Class4:"shieldBoosters",Hpt_ShieldBooster_Size0_Class5:"shieldBoosters",SideWinder_Armour_Grade1:"bulkheads",SideWinder_Armour_Grade2:"bulkheads",SideWinder_Armour_Grade3:"bulkheads",SideWinder_Armour_Mirrored:"bulkheads",SideWinder_Armour_Reactive:"bulkheads",Eagle_Armour_Grade1:"bulkheads",Eagle_Armour_Grade2:"bulkheads",Eagle_Armour_Grade3:"bulkheads",Eagle_Armour_Mirrored:"bulkheads",Eagle_Armour_Reactive:"bulkheads",Hauler_Armour_Grade1:"bulkheads",Hauler_Armour_Grade2:"bulkheads",Hauler_Armour_Grade3:"bulkheads",Hauler_Armour_Mirrored:"bulkheads",Hauler_Armour_Reactive:"bulkheads",Adder_Armour_Grade1:"bulkheads",Adder_Armour_Grade2:"bulkheads",Adder_Armour_Grade3:"bulkheads",Adder_Armour_Mirrored:"bulkheads",Adder_Armour_Reactive:"bulkheads",Viper_Armour_Grade1:"bulkheads",Viper_Armour_Grade2:"bulkheads",Viper_Armour_Grade3:"bulkheads",Viper_Armour_Mirrored:"bulkheads",Viper_Armour_Reactive:"bulkheads",CobraMkIII_Armour_Grade1:"bulkheads",CobraMkIII_Armour_Grade2:"bulkheads",CobraMkIII_Armour_Grade3:"bulkheads",CobraMkIII_Armour_Mirrored:"bulkheads",CobraMkIII_Armour_Reactive:"bulkheads",Type6_Armour_Grade1:"bulkheads",Type6_Armour_Grade2:"bulkheads",Type6_Armour_Grade3:"bulkheads",Type6_Armour_Mirrored:"bulkheads",Type6_Armour_Reactive:"bulkheads",Dolphin_Armour_Grade1:"bulkheads",Dolphin_Armour_Grade2:"bulkheads",Dolphin_Armour_Grade3:"bulkheads",Dolphin_Armour_Mirrored:"bulkheads",Dolphin_Armour_Reactive:"bulkheads",Type7_Armour_Grade1:"bulkheads",Type7_Armour_Grade2:"bulkheads",Type7_Armour_Grade3:"bulkheads",Type7_Armour_Mirrored:"bulkheads",Type7_Armour_Reactive:"bulkheads",Asp_Armour_Grade1:"bulkheads",Asp_Armour_Grade2:"bulkheads",Asp_Armour_Grade3:"bulkheads",Asp_Armour_Mirrored:"bulkheads",Asp_Armour_Reactive:"bulkheads",Vulture_Armour_Grade1:"bulkheads",Vulture_Armour_Grade2:"bulkheads",Vulture_Armour_Grade3:"bulkheads",Vulture_Armour_Mirrored:"bulkheads",Vulture_Armour_Reactive:"bulkheads",Empire_Trader_Armour_Grade1:"bulkheads",Empire_Trader_Armour_Grade2:"bulkheads",Empire_Trader_Armour_Grade3:"bulkheads",Empire_Trader_Armour_Mirrored:"bulkheads",Empire_Trader_Armour_Reactive:"bulkheads",Federation_Dropship_Armour_Grade1:"bulkheads",Federation_Dropship_Armour_Grade2:"bulkheads",Federation_Dropship_Armour_Grade3:"bulkheads",Federation_Dropship_Armour_Mirrored:"bulkheads",Federation_Dropship_Armour_Reactive:"bulkheads",Orca_Armour_Grade1:"bulkheads",Orca_Armour_Grade2:"bulkheads",Orca_Armour_Grade3:"bulkheads",Orca_Armour_Mirrored:"bulkheads",Orca_Armour_Reactive:"bulkheads",Type9_Armour_Grade1:"bulkheads",Type9_Armour_Grade2:"bulkheads",Type9_Armour_Grade3:"bulkheads",Type9_Armour_Mirrored:"bulkheads",Type9_Armour_Reactive:"bulkheads",Python_Armour_Grade1:"bulkheads",Python_Armour_Grade2:"bulkheads",Python_Armour_Grade3:"bulkheads",Python_Armour_Mirrored:"bulkheads",Python_Armour_Reactive:"bulkheads",BelugaLiner_Armour_Grade1:"bulkheads",BelugaLiner_Armour_Grade2:"bulkheads",BelugaLiner_Armour_Grade3:"bulkheads",BelugaLiner_Armour_Mirrored:"bulkheads",BelugaLiner_Armour_Reactive:"bulkheads",FerDeLance_Armour_Grade1:"bulkheads",FerDeLance_Armour_Grade2:"bulkheads",FerDeLance_Armour_Grade3:"bulkheads",FerDeLance_Armour_Mirrored:"bulkheads",FerDeLance_Armour_Reactive:"bulkheads",Anaconda_Armour_Grade1:"bulkheads",Anaconda_Armour_Grade2:"bulkheads",Anaconda_Armour_Grade3:"bulkheads",Anaconda_Armour_Mirrored:"bulkheads",Anaconda_Armour_Reactive:"bulkheads",Federation_Corvette_Armour_Grade1:"bulkheads",Federation_Corvette_Armour_Grade2:"bulkheads",Federation_Corvette_Armour_Grade3:"bulkheads",Federation_Corvette_Armour_Mirrored:"bulkheads",Federation_Corvette_Armour_Reactive:"bulkheads",Cutter_Armour_Grade1:"bulkheads",Cutter_Armour_Grade2:"bulkheads",Cutter_Armour_Grade3:"bulkheads",Cutter_Armour_Mirrored:"bulkheads",Cutter_Armour_Reactive:"bulkheads",DiamondBack_Armour_Grade1:"bulkheads",DiamondBack_Armour_Grade2:"bulkheads",DiamondBack_Armour_Grade3:"bulkheads",DiamondBack_Armour_Mirrored:"bulkheads",DiamondBack_Armour_Reactive:"bulkheads",Empire_Courier_Armour_Grade1:"bulkheads",Empire_Courier_Armour_Grade2:"bulkheads",Empire_Courier_Armour_Grade3:"bulkheads",Empire_Courier_Armour_Mirrored:"bulkheads",Empire_Courier_Armour_Reactive:"bulkheads",DiamondBackXL_Armour_Grade1:"bulkheads",DiamondBackXL_Armour_Grade2:"bulkheads",DiamondBackXL_Armour_Grade3:"bulkheads",DiamondBackXL_Armour_Mirrored:"bulkheads",DiamondBackXL_Armour_Reactive:"bulkheads",Empire_Eagle_Armour_Grade1:"bulkheads",Empire_Eagle_Armour_Grade2:"bulkheads",Empire_Eagle_Armour_Grade3:"bulkheads",Empire_Eagle_Armour_Mirrored:"bulkheads",Empire_Eagle_Armour_Reactive:"bulkheads",Federation_Dropship_MkII_Armour_Grade1:"bulkheads",Federation_Dropship_MkII_Armour_Grade2:"bulkheads",Federation_Dropship_MkII_Armour_Grade3:"bulkheads",Federation_Dropship_MkII_Armour_Mirrored:"bulkheads",Federation_Dropship_MkII_Armour_Reactive:"bulkheads",Federation_Gunship_Armour_Grade1:"bulkheads",Federation_Gunship_Armour_Grade2:"bulkheads",Federation_Gunship_Armour_Grade3:"bulkheads",Federation_Gunship_Armour_Mirrored:"bulkheads",Federation_Gunship_Armour_Reactive:"bulkheads",Viper_MkIV_Armour_Grade1:"bulkheads",Viper_MkIV_Armour_Grade2:"bulkheads",Viper_MkIV_Armour_Grade3:"bulkheads",Viper_MkIV_Armour_Mirrored:"bulkheads",Viper_MkIV_Armour_Reactive:"bulkheads",CobraMkIV_Armour_Grade1:"bulkheads",CobraMkIV_Armour_Grade2:"bulkheads",CobraMkIV_Armour_Grade3:"bulkheads",CobraMkIV_Armour_Mirrored:"bulkheads",CobraMkIV_Armour_Reactive:"bulkheads",Independant_Trader_Armour_Grade1:"bulkheads",Independant_Trader_Armour_Grade2:"bulkheads",Independant_Trader_Armour_Grade3:"bulkheads",Independant_Trader_Armour_Mirrored:"bulkheads",Independant_Trader_Armour_Reactive:"bulkheads",Asp_Scout_Armour_Grade1:"bulkheads",Asp_Scout_Armour_Grade2:"bulkheads",Asp_Scout_Armour_Grade3:"bulkheads",Asp_Scout_Armour_Mirrored:"bulkheads",Asp_Scout_Armour_Reactive:"bulkheads",Type9_Military_Armour_Grade1:"bulkheads",Type9_Military_Armour_Grade2:"bulkheads",Type9_Military_Armour_Grade3:"bulkheads",Type9_Military_Armour_Mirrored:"bulkheads",Type9_Military_Armour_Reactive:"bulkheads",Krait_MkII_Armour_Grade1:"bulkheads",Krait_MkII_Armour_Grade2:"bulkheads",Krait_MkII_Armour_Grade3:"bulkheads",Krait_MkII_Armour_Mirrored:"bulkheads",Krait_MkII_Armour_Reactive:"bulkheads",TypeX_Armour_Grade1:"bulkheads",TypeX_Armour_Grade2:"bulkheads",TypeX_Armour_Grade3:"bulkheads",TypeX_Armour_Mirrored:"bulkheads",TypeX_Armour_Reactive:"bulkheads",TypeX_2_Armour_Grade1:"bulkheads",TypeX_2_Armour_Grade2:"bulkheads",TypeX_2_Armour_Grade3:"bulkheads",TypeX_2_Armour_Mirrored:"bulkheads",TypeX_2_Armour_Reactive:"bulkheads",TypeX_3_Armour_Grade1:"bulkheads",TypeX_3_Armour_Grade2:"bulkheads",TypeX_3_Armour_Grade3:"bulkheads",TypeX_3_Armour_Mirrored:"bulkheads",TypeX_3_Armour_Reactive:"bulkheads",Krait_Light_Armour_Grade1:"bulkheads",Krait_Light_Armour_Grade2:"bulkheads",Krait_Light_Armour_Grade3:"bulkheads",Krait_Light_Armour_Mirrored:"bulkheads",Krait_Light_Armour_Reactive:"bulkheads",Mamba_Armour_Grade1:"bulkheads",Mamba_Armour_Grade2:"bulkheads",Mamba_Armour_Grade3:"bulkheads",Mamba_Armour_Mirrored:"bulkheads",Mamba_Armour_Reactive:"bulkheads",Python_NX_Armour_Grade1:"bulkheads",Python_NX_Armour_Grade2:"bulkheads",Python_NX_Armour_Grade3:"bulkheads",Python_NX_Armour_Mirrored:"bulkheads",Python_NX_Armour_Reactive:"bulkheads",Type8_Armour_Grade1:"bulkheads",Type8_Armour_Grade2:"bulkheads",Type8_Armour_Grade3:"bulkheads",Type8_Armour_Mirrored:"bulkheads",Type8_Armour_Reactive:"bulkheads",Mandalay_Armour_Grade1:"bulkheads",Mandalay_Armour_Grade2:"bulkheads",Mandalay_Armour_Grade3:"bulkheads",Mandalay_Armour_Mirrored:"bulkheads",Mandalay_Armour_Reactive:"bulkheads",CobraMkV_Armour_Grade1:"bulkheads",CobraMkV_Armour_Grade2:"bulkheads",CobraMkV_Armour_Grade3:"bulkheads",CobraMkV_Armour_Mirrored:"bulkheads",CobraMkV_Armour_Reactive:"bulkheads",Corsair_Armour_Grade1:"bulkheads",Corsair_Armour_Grade2:"bulkheads",Corsair_Armour_Grade3:"bulkheads",Corsair_Armour_Mirrored:"bulkheads",Corsair_Armour_Reactive:"bulkheads",PantherMkII_Armour_Grade1:"bulkheads",PantherMkII_Armour_Grade2:"bulkheads",PantherMkII_Armour_Grade3:"bulkheads",PantherMkII_Armour_Mirrored:"bulkheads",PantherMkII_Armour_Reactive:"bulkheads",LakonMiner_Armour_Grade1:"bulkheads",LakonMiner_Armour_Grade2:"bulkheads",LakonMiner_Armour_Grade3:"bulkheads",LakonMiner_Armour_Mirrored:"bulkheads",LakonMiner_Armour_Reactive:"bulkheads",Explorer_NX_Armour_Grade1:"bulkheads",Explorer_NX_Armour_Grade2:"bulkheads",Explorer_NX_Armour_Grade3:"bulkheads",Explorer_NX_Armour_Mirrored:"bulkheads",Explorer_NX_Armour_Reactive:"bulkheads",Explorer_NX_Armour_Grade1_Default:"bulkheads",SmallCombat01_NX_Armour_Grade1:"bulkheads",SmallCombat01_NX_Armour_Grade2:"bulkheads",SmallCombat01_NX_Armour_Grade3:"bulkheads",SmallCombat01_NX_Armour_Mirrored:"bulkheads",SmallCombat01_NX_Armour_Reactive:"bulkheads",MediumTransport01_Armour_Grade1:"bulkheads",MediumTransport01_Armour_Grade2:"bulkheads",MediumTransport01_Armour_Grade3:"bulkheads",MediumTransport01_Armour_Mirrored:"bulkheads",MediumTransport01_Armour_Reactive:"bulkheads",Int_LifeSupport_Size1_Class1:"lifeSupports",Int_LifeSupport_Size1_Class2:"lifeSupports",Int_LifeSupport_Size1_Class3:"lifeSupports",Int_LifeSupport_Size1_Class4:"lifeSupports",Int_LifeSupport_Size1_Class5:"lifeSupports",Int_LifeSupport_Size2_Class1:"lifeSupports",Int_LifeSupport_Size2_Class2:"lifeSupports",Int_LifeSupport_Size2_Class3:"lifeSupports",Int_LifeSupport_Size2_Class4:"lifeSupports",Int_LifeSupport_Size2_Class5:"lifeSupports",Int_LifeSupport_Size3_Class1:"lifeSupports",Int_LifeSupport_Size3_Class2:"lifeSupports",Int_LifeSupport_Size3_Class3:"lifeSupports",Int_LifeSupport_Size3_Class4:"lifeSupports",Int_LifeSupport_Size3_Class5:"lifeSupports",Int_LifeSupport_Size4_Class1:"lifeSupports",Int_LifeSupport_Size4_Class2:"lifeSupports",Int_LifeSupport_Size4_Class3:"lifeSupports",Int_LifeSupport_Size4_Class4:"lifeSupports",Int_LifeSupport_Size4_Class5:"lifeSupports",Int_LifeSupport_Size5_Class1:"lifeSupports",Int_LifeSupport_Size5_Class2:"lifeSupports",Int_LifeSupport_Size5_Class3:"lifeSupports",Int_LifeSupport_Size5_Class4:"lifeSupports",Int_LifeSupport_Size5_Class5:"lifeSupports",Int_LifeSupport_Size6_Class1:"lifeSupports",Int_LifeSupport_Size6_Class2:"lifeSupports",Int_LifeSupport_Size6_Class3:"lifeSupports",Int_LifeSupport_Size6_Class4:"lifeSupports",Int_LifeSupport_Size6_Class5:"lifeSupports",Int_LifeSupport_Size7_Class1:"lifeSupports",Int_LifeSupport_Size7_Class2:"lifeSupports",Int_LifeSupport_Size7_Class3:"lifeSupports",Int_LifeSupport_Size7_Class4:"lifeSupports",Int_LifeSupport_Size7_Class5:"lifeSupports",Int_LifeSupport_Size8_Class1:"lifeSupports",Int_LifeSupport_Size8_Class2:"lifeSupports",Int_LifeSupport_Size8_Class3:"lifeSupports",Int_LifeSupport_Size8_Class4:"lifeSupports",Int_LifeSupport_Size8_Class5:"lifeSupports",Int_LifeSupport_Size1_Class1_free:"lifeSupports",Int_Sensors_Size1_Class1:"sensors",Int_Sensors_Size1_Class2:"sensors",Int_Sensors_Size1_Class3:"sensors",Int_Sensors_Size1_Class4:"sensors",Int_Sensors_Size1_Class5:"sensors",Int_Sensors_Size2_Class1:"sensors",Int_Sensors_Size2_Class2:"sensors",Int_Sensors_Size2_Class3:"sensors",Int_Sensors_Size2_Class4:"sensors",Int_Sensors_Size2_Class5:"sensors",Int_Sensors_Size3_Class1:"sensors",Int_Sensors_Size3_Class2:"sensors",Int_Sensors_Size3_Class3:"sensors",Int_Sensors_Size3_Class4:"sensors",Int_Sensors_Size3_Class5:"sensors",Int_Sensors_Size4_Class1:"sensors",Int_Sensors_Size4_Class2:"sensors",Int_Sensors_Size4_Class3:"sensors",Int_Sensors_Size4_Class4:"sensors",Int_Sensors_Size4_Class5:"sensors",Int_Sensors_Size5_Class1:"sensors",Int_Sensors_Size5_Class2:"sensors",Int_Sensors_Size5_Class3:"sensors",Int_Sensors_Size5_Class4:"sensors",Int_Sensors_Size5_Class5:"sensors",Int_Sensors_Size6_Class1:"sensors",Int_Sensors_Size6_Class2:"sensors",Int_Sensors_Size6_Class3:"sensors",Int_Sensors_Size6_Class4:"sensors",Int_Sensors_Size6_Class5:"sensors",Int_Sensors_Size7_Class1:"sensors",Int_Sensors_Size7_Class2:"sensors",Int_Sensors_Size7_Class3:"sensors",Int_Sensors_Size7_Class4:"sensors",Int_Sensors_Size7_Class5:"sensors",Int_Sensors_Size8_Class1:"sensors",Int_Sensors_Size8_Class2:"sensors",Int_Sensors_Size8_Class3:"sensors",Int_Sensors_Size8_Class4:"sensors",Int_Sensors_Size8_Class5:"sensors",Int_Sensors_Size1_Class1_free:"sensors",Int_Repairer_Size1_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size1_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size1_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size1_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size1_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class5:"autoFieldMaintenanceUnits",Int_DroneControl_Collection_Size1_Class1:"collectionLimpets",Int_DroneControl_Collection_Size1_Class2:"collectionLimpets",Int_DroneControl_Collection_Size1_Class3:"collectionLimpets",Int_DroneControl_Collection_Size1_Class4:"collectionLimpets",Int_DroneControl_Collection_Size1_Class5:"collectionLimpets",Int_DroneControl_Collection_Size3_Class1:"collectionLimpets",Int_DroneControl_Collection_Size3_Class2:"collectionLimpets",Int_DroneControl_Collection_Size3_Class3:"collectionLimpets",Int_DroneControl_Collection_Size3_Class4:"collectionLimpets",Int_DroneControl_Collection_Size3_Class5:"collectionLimpets",Int_DroneControl_Collection_Size5_Class1:"collectionLimpets",Int_DroneControl_Collection_Size5_Class2:"collectionLimpets",Int_DroneControl_Collection_Size5_Class3:"collectionLimpets",Int_DroneControl_Collection_Size5_Class4:"collectionLimpets",Int_DroneControl_Collection_Size5_Class5:"collectionLimpets",Int_DroneControl_Collection_Size7_Class1:"collectionLimpets",Int_DroneControl_Collection_Size7_Class2:"collectionLimpets",Int_DroneControl_Collection_Size7_Class3:"collectionLimpets",Int_DroneControl_Collection_Size7_Class4:"collectionLimpets",Int_DroneControl_Collection_Size7_Class5:"collectionLimpets",Int_GuardianFSDBooster_Size1:"fsdBoosters",Int_GuardianFSDBooster_Size2:"fsdBoosters",Int_GuardianFSDBooster_Size3:"fsdBoosters",Int_GuardianFSDBooster_Size4:"fsdBoosters",Int_GuardianFSDBooster_Size5:"fsdBoosters",Int_FSDInterdictor_Size1_Class1:"fsdInterdictors",Int_FSDInterdictor_Size2_Class1:"fsdInterdictors",Int_FSDInterdictor_Size3_Class1:"fsdInterdictors",Int_FSDInterdictor_Size4_Class1:"fsdInterdictors",Int_FSDInterdictor_Size1_Class2:"fsdInterdictors",Int_FSDInterdictor_Size2_Class2:"fsdInterdictors",Int_FSDInterdictor_Size3_Class2:"fsdInterdictors",Int_FSDInterdictor_Size4_Class2:"fsdInterdictors",Int_FSDInterdictor_Size1_Class3:"fsdInterdictors",Int_FSDInterdictor_Size2_Class3:"fsdInterdictors",Int_FSDInterdictor_Size3_Class3:"fsdInterdictors",Int_FSDInterdictor_Size4_Class3:"fsdInterdictors",Int_FSDInterdictor_Size1_Class4:"fsdInterdictors",Int_FSDInterdictor_Size2_Class4:"fsdInterdictors",Int_FSDInterdictor_Size3_Class4:"fsdInterdictors",Int_FSDInterdictor_Size4_Class4:"fsdInterdictors",Int_FSDInterdictor_Size1_Class5:"fsdInterdictors",Int_FSDInterdictor_Size2_Class5:"fsdInterdictors",Int_FSDInterdictor_Size3_Class5:"fsdInterdictors",Int_FSDInterdictor_Size4_Class5:"fsdInterdictors",Int_FuelScoop_Size1_Class1:"fuelScoops",Int_FuelScoop_Size2_Class1:"fuelScoops",Int_FuelScoop_Size3_Class1:"fuelScoops",Int_FuelScoop_Size4_Class1:"fuelScoops",Int_FuelScoop_Size5_Class1:"fuelScoops",Int_FuelScoop_Size6_Class1:"fuelScoops",Int_FuelScoop_Size7_Class1:"fuelScoops",Int_FuelScoop_Size8_Class1:"fuelScoops",Int_FuelScoop_Size1_Class2:"fuelScoops",Int_FuelScoop_Size2_Class2:"fuelScoops",Int_FuelScoop_Size3_Class2:"fuelScoops",Int_FuelScoop_Size4_Class2:"fuelScoops",Int_FuelScoop_Size5_Class2:"fuelScoops",Int_FuelScoop_Size6_Class2:"fuelScoops",Int_FuelScoop_Size7_Class2:"fuelScoops",Int_FuelScoop_Size8_Class2:"fuelScoops",Int_FuelScoop_Size1_Class3:"fuelScoops",Int_FuelScoop_Size2_Class3:"fuelScoops",Int_FuelScoop_Size3_Class3:"fuelScoops",Int_FuelScoop_Size4_Class3:"fuelScoops",Int_FuelScoop_Size5_Class3:"fuelScoops",Int_FuelScoop_Size6_Class3:"fuelScoops",Int_FuelScoop_Size7_Class3:"fuelScoops",Int_FuelScoop_Size8_Class3:"fuelScoops",Int_FuelScoop_Size1_Class4:"fuelScoops",Int_FuelScoop_Size2_Class4:"fuelScoops",Int_FuelScoop_Size3_Class4:"fuelScoops",Int_FuelScoop_Size4_Class4:"fuelScoops",Int_FuelScoop_Size5_Class4:"fuelScoops",Int_FuelScoop_Size6_Class4:"fuelScoops",Int_FuelScoop_Size7_Class4:"fuelScoops",Int_FuelScoop_Size8_Class4:"fuelScoops",Int_FuelScoop_Size1_Class5:"fuelScoops",Int_FuelScoop_Size2_Class5:"fuelScoops",Int_FuelScoop_Size3_Class5:"fuelScoops",Int_FuelScoop_Size4_Class5:"fuelScoops",Int_FuelScoop_Size5_Class5:"fuelScoops",Int_FuelScoop_Size6_Class5:"fuelScoops",Int_FuelScoop_Size7_Class5:"fuelScoops",Int_FuelScoop_Size8_Class5:"fuelScoops",Int_DroneControl_FuelTransfer_Size1_Class1:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size1_Class2:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size1_Class3:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size1_Class4:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size1_Class5:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class1:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class2:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class3:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class4:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class5:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class1:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class2:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class3:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class4:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class5:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class1:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class2:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class3:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class4:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class5:"fuelTransferLimpets",Int_DroneControl_ResourceSiphon:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class1:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class2:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class3:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class4:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class5:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class1:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class2:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class3:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class4:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class5:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class1:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class2:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class3:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class4:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class5:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class1:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class2:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class3:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class4:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class5:"hatchBreakerLimpets",Int_GuardianModuleReinforcement_Size1_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size1_Class2:"moduleReinforcements",Int_GuardianModuleReinforcement_Size2_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size2_Class2:"moduleReinforcements",Int_GuardianModuleReinforcement_Size3_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size3_Class2:"moduleReinforcements",Int_GuardianModuleReinforcement_Size4_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size4_Class2:"moduleReinforcements",Int_GuardianModuleReinforcement_Size5_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size5_Class2:"moduleReinforcements",Int_DroneControl_Prospector_Size1_Class1:"prospectingLimpets",Int_DroneControl_Prospector_Size1_Class2:"prospectingLimpets",Int_DroneControl_Prospector_Size1_Class3:"prospectingLimpets",Int_DroneControl_Prospector_Size1_Class4:"prospectingLimpets",Int_DroneControl_Prospector_Size1_Class5:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class1:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class2:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class3:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class4:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class5:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class1:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class2:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class3:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class4:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class5:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class1:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class2:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class3:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class4:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class5:"prospectingLimpets",Int_Refinery_Size1_Class1:"refineries",Int_Refinery_Size2_Class1:"refineries",Int_Refinery_Size3_Class1:"refineries",Int_Refinery_Size4_Class1:"refineries",Int_Refinery_Size1_Class2:"refineries",Int_Refinery_Size2_Class2:"refineries",Int_Refinery_Size3_Class2:"refineries",Int_Refinery_Size4_Class2:"refineries",Int_Refinery_Size1_Class3:"refineries",Int_Refinery_Size2_Class3:"refineries",Int_Refinery_Size3_Class3:"refineries",Int_Refinery_Size4_Class3:"refineries",Int_Refinery_Size1_Class4:"refineries",Int_Refinery_Size2_Class4:"refineries",Int_Refinery_Size3_Class4:"refineries",Int_Refinery_Size4_Class4:"refineries",Int_Refinery_Size1_Class5:"refineries",Int_Refinery_Size2_Class5:"refineries",Int_Refinery_Size3_Class5:"refineries",Int_Refinery_Size4_Class5:"refineries",Int_GuardianShieldReinforcement_Size1_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size1_Class2:"shieldReinforcements",Int_GuardianShieldReinforcement_Size2_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size2_Class2:"shieldReinforcements",Int_GuardianShieldReinforcement_Size3_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size3_Class2:"shieldReinforcements",Int_GuardianShieldReinforcement_Size4_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size4_Class2:"shieldReinforcements",Int_GuardianShieldReinforcement_Size5_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size5_Class2:"shieldReinforcements",Int_DetailedSurfaceScanner_Tiny:"surfaceScanners",Hpt_ChaffLauncher_Tiny:"chaffLaunchers",Hpt_ElectronicCountermeasure_Tiny:"ecms",Hpt_HeatSinkLauncher_Turret_Tiny:"heatSinkLaunchers",Hpt_CausticSinkLauncher_Turret_Tiny:"heatSinkLaunchers",Hpt_CrimeScanner_Size0_Class1:"killWarrantScanners",Hpt_CrimeScanner_Size0_Class2:"killWarrantScanners",Hpt_CrimeScanner_Size0_Class3:"killWarrantScanners",Hpt_CrimeScanner_Size0_Class4:"killWarrantScanners",Hpt_CrimeScanner_Size0_Class5:"killWarrantScanners",Hpt_CargoScanner_Size0_Class1:"manifestScanners",Hpt_CargoScanner_Size0_Class2:"manifestScanners",Hpt_CargoScanner_Size0_Class3:"manifestScanners",Hpt_CargoScanner_Size0_Class4:"manifestScanners",Hpt_CargoScanner_Size0_Class5:"manifestScanners",Hpt_PlasmaPointDefence_Turret_Tiny:"pointDefence",Hpt_CloudScanner_Size0_Class1:"wakeScanners",Hpt_CloudScanner_Size0_Class2:"wakeScanners",Hpt_CloudScanner_Size0_Class3:"wakeScanners",Hpt_CloudScanner_Size0_Class4:"wakeScanners",Hpt_CloudScanner_Size0_Class5:"wakeScanners",Hpt_Guardian_GaussCannon_Fixed_Medium:"guardianGauss",Hpt_Guardian_GaussCannon_Fixed_Small:"guardianGauss",Hpt_Guardian_PlasmaLauncher_Fixed_Medium:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Turret_Medium:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Fixed_Large:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Turret_Large:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Turret_Small:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Fixed_Small:"guardianPlasma",Hpt_Guardian_ShardCannon_Fixed_Medium:"guardianShard",Hpt_Guardian_ShardCannon_Turret_Medium:"guardianShard",Hpt_Guardian_ShardCannon_Fixed_Large:"guardianShard",Hpt_Guardian_ShardCannon_Turret_Large:"guardianShard",Hpt_Guardian_ShardCannon_Turret_Small:"guardianShard",Hpt_Guardian_ShardCannon_Fixed_Small:"guardianShard"},exclusions:{Hpt_MultiCannon_Fixed_Small:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Large:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Huge:["special_phasing_sequence"],Hpt_MultiCannon_Gimbal_Small:["special_phasing_sequence"],Hpt_MultiCannon_Gimbal_Medium:["special_phasing_sequence"],Hpt_MultiCannon_Gimbal_Large:["special_phasing_sequence"],Hpt_MultiCannon_Turret_Small:["special_phasing_sequence"],Hpt_MultiCannon_Turret_Medium:["special_phasing_sequence"],Hpt_MultiCannon_Turret_Large:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Small_Strong:["special_phasing_sequence"],Hpt_MultiCannon_Gimbal_Huge:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Medium_Advanced:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Small_Advanced:["special_phasing_sequence"],Hpt_BasicMissileRack_Fixed_Small:["special_fsd_interrupt","special_penetrator_munitions"],Hpt_BasicMissileRack_Fixed_Medium:["special_penetrator_munitions"],Hpt_BasicMissileRack_Fixed_Large:["special_penetrator_munitions"],Hpt_DumbfireMissileRack_Fixed_Small:["special_drag_munitions"],Hpt_DumbfireMissileRack_Fixed_Medium:["special_drag_munitions"],Hpt_DrunkMissileRack_Fixed_Medium:["special_fsd_interrupt","special_penetrator_munitions"],Hpt_DumbfireMissileRack_Fixed_Medium_Lasso:["special_drag_munitions"],Hpt_DumbfireMissileRack_Fixed_Large:["special_drag_munitions"],Hpt_DumbfireMissileRack_Fixed_Small_Advanced:["special_drag_munitions"],Hpt_DumbfireMissileRack_Fixed_Medium_Advanced:["special_drag_munitions"]}};var DATA=deepFreeze(engineering_options_default);var ENGINEERING_OPTION_GROUPS=DATA.groups;var moduleGroup=new Map(Object.entries(DATA.modules).map(([symbol,group])=>[symbol.toLowerCase(),group]));var moduleExclusions=new Map(Object.entries(DATA.exclusions).map(([symbol,effects])=>[symbol.toLowerCase(),new Set(effects.map(e=>e.toLowerCase()))]));function getEngineeringGroup(symbol){return moduleGroup.get(normalizeKey(symbol,"getEngineeringGroup: symbol"))??null}function getBlueprintsForModule(symbol){requireStringIfPresent(symbol,"getBlueprintsForModule: symbol");const group=getEngineeringGroup(symbol);return group===null?[]:ENGINEERING_OPTION_GROUPS[group].blueprints}function getExperimentalsForModule(symbol){const normalized=normalizeKey(symbol,"getExperimentalsForModule: symbol");const group=moduleGroup.get(normalized);if(group===void 0)return[];const all=ENGINEERING_OPTION_GROUPS[group].experimentals;const excluded=moduleExclusions.get(normalized);return excluded===void 0?all:all.filter(e=>!excluded.has(e.toLowerCase()))}function getExperimentalsForBlueprint(fdname){const normalized=normalizeKey(fdname,"getExperimentalsForBlueprint: fdname");const out=/* @__PURE__ */new Set;for(const group of Object.values(ENGINEERING_OPTION_GROUPS)){if(!group.blueprints.some(b=>b.toLowerCase()===normalized))continue;for(const effect of group.experimentals)out.add(effect)}return[...out].sort()}export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule};//# sourceMappingURL=chunk-QTZPA2FR.js.map
1
+ import{normalizeKey}from"./chunk-BKWLI44T.js";import{requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var engineering_options_default={groups:{powerPlants:{name:"Power Plants",blueprints:["PowerPlant_Armoured","PowerPlant_Boosted","PowerPlant_Stealth"],experimentals:["special_powerplant_cooled","special_powerplant_highcharge","special_powerplant_lightweight","special_powerplant_toughened"]},guardianPowerPlants:{name:"Guardian Power Plants",blueprints:["GuardianModule_Sturdy"],experimentals:[]},thrusters:{name:"Thrusters",blueprints:["Engine_Dirty","Engine_Reinforced","Engine_Tuned"],experimentals:["special_engine_cooled","special_engine_haulage","special_engine_lightweight","special_engine_overloaded","special_engine_toughened"]},frameShiftDrives:{name:"Frame Shift Drives",blueprints:["FSD_FastBoot","FSD_LongRange","FSD_Shielded"],experimentals:["special_fsd_cooled","special_fsd_fuelcapacity","special_fsd_heavy","special_fsd_lightweight","special_fsd_toughened"]},powerDistributors:{name:"Power Distributors",blueprints:["PowerDistributor_HighCapacity","PowerDistributor_HighFrequency","PowerDistributor_PriorityEngines","PowerDistributor_PrioritySystems","PowerDistributor_PriorityWeapons","PowerDistributor_Shielded"],experimentals:["special_powerdistributor_capacity","special_powerdistributor_efficient","special_powerdistributor_fast","special_powerdistributor_lightweight","special_powerdistributor_toughened"]},guardianPowerDistributors:{name:"Guardian Power Distributors",blueprints:["GuardianModule_Sturdy"],experimentals:[]},frameShiftDrivesSCO:{name:"Frame Shift Drives (SCO)",blueprints:["FSD_FastBoot","FSD_LongRange","FSD_Shielded"],experimentals:["special_fsd_cooled","special_fsd_fuelcapacity","special_fsd_heavy","special_fsd_lightweight","special_fsd_toughened"]},shieldGenerators:{name:"Shield Generators",blueprints:["ShieldGenerator_Kinetic","ShieldGenerator_Optimised","ShieldGenerator_Reinforced","ShieldGenerator_Thermic"],experimentals:["special_shield_efficient","special_shield_health","special_shield_kinetic","special_shield_lightweight","special_shield_regenerative","special_shield_resistive","special_shield_thermic","special_shield_toughened"]},shieldCellBanks:{name:"Shield Cell Banks",blueprints:["ShieldCellBank_Rapid","ShieldCellBank_Specialised"],experimentals:["special_shieldcell_efficient","special_shieldcell_gradual","special_shieldcell_lightweight","special_shieldcell_oversized","special_shieldcell_toughened"]},hullReinforcements:{name:"Hull Reinforcements",blueprints:["HullReinforcement_Advanced","HullReinforcement_Explosive","HullReinforcement_HeavyDuty","HullReinforcement_Kinetic","HullReinforcement_Thermic"],experimentals:["special_hullreinforcement_chunky","special_hullreinforcement_explosive","special_hullreinforcement_kinetic","special_hullreinforcement_thermic"]},guardianHullReinforcements:{name:"Guardian Hull Reinforcements",blueprints:["GuardianModule_Sturdy"],experimentals:[]},pulseLasers:{name:"Pulse Lasers",blueprints:["PulseLaser_ThermalPlasmaConversion","Weapon_Efficient","Weapon_Focused","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_concordant_sequence","special_emissive_munitions","special_phasing_sequence","special_scramble_spectrum","special_thermalshock","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},burstLasers:{name:"Burst Lasers",blueprints:["BurstLaser_ThermalPlasmaConversion","Weapon_Efficient","Weapon_Focused","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_concordant_sequence","special_distortion_field","special_phasing_sequence","special_scramble_spectrum","special_thermalshock","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},beamLasers:{name:"Beam Lasers",blueprints:["BeamLaser_ThermalPlasmaConversion","Weapon_Efficient","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_concordant_sequence","special_regeneration_sequence","special_thermal_conduit","special_thermal_vent","special_thermalshock","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_toughened"]},cannons:{name:"Cannons",blueprints:["Weapon_Efficient","Weapon_HighCapacity","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_auto_loader","special_dispersal_field","special_force_shell","special_high_yield_shell","special_smart_rounds","special_thermal_cascade","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},fragmentCannons:{name:"Fragment Cannons",blueprints:["Weapon_DoubleShot","Weapon_Efficient","Weapon_HighCapacity","Weapon_LightWeight","Weapon_Overcharged","Weapon_RapidFire","Weapon_Sturdy"],experimentals:["special_blinding_shell","special_corrosive_shell","special_drag_munitions","special_incendiary_rounds","special_screening_shell","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},multiCannons:{name:"Multi-Cannons",blueprints:["MC_Overcharged","Weapon_Efficient","Weapon_HighCapacity","Weapon_LightWeight","Weapon_LongRange","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_auto_loader","special_corrosive_shell","special_emissive_munitions","special_incendiary_rounds","special_phasing_sequence","special_smart_rounds","special_thermalshock","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},plasmaAccelerators:{name:"Plasma Accelerators",blueprints:["Weapon_Efficient","Weapon_Focused","Weapon_LightWeight","Weapon_LongRange","Weapon_Overcharged","Weapon_RapidFire","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_blinding_shell","special_dispersal_field","special_lock_breaker","special_phasing_sequence","special_plasma_slug","special_thermal_conduit","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},railGuns:{name:"Rail Guns",blueprints:["Weapon_HighCapacity","Weapon_LightWeight","Weapon_LongRange","Weapon_ShortRange","Weapon_Sturdy"],experimentals:["special_feedback_cascade_cooled","special_plasma_slug_cooled","special_super_penetrator","special_super_penetrator_cooled","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},missiles:{name:"Missiles",blueprints:["Weapon_HighCapacity","Weapon_LightWeight","Weapon_RapidFire","Weapon_Sturdy"],experimentals:["special_drag_munitions","special_emissive_munitions","special_fsd_interrupt","special_overload_munitions","special_penetrator_munitions","special_thermal_cascade","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_rateoffire","special_weapon_toughened"]},mines:{name:"Mines",blueprints:["Weapon_HighCapacity","Weapon_LightWeight","Weapon_RapidFire","Weapon_Sturdy"],experimentals:["special_choke_canister","special_emissive_munitions","special_overload_munitions","special_radiant_canister","special_reverberating_cascade","special_shiftlock_canister","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_toughened"]},torpedoes:{name:"Torpedoes",blueprints:["Weapon_LightWeight","Weapon_Sturdy"],experimentals:["special_deep_cut_payload","special_mass_lock","special_reverberating_cascade","special_weapon_damage","special_weapon_efficient","special_weapon_lightweight","special_weapon_toughened"]},shieldBoosters:{name:"Shield Boosters",blueprints:["ShieldBooster_Explosive","ShieldBooster_HeavyDuty","ShieldBooster_Kinetic","ShieldBooster_Resistive","ShieldBooster_Thermic"],experimentals:["special_shieldbooster_chunky","special_shieldbooster_efficient","special_shieldbooster_explosive","special_shieldbooster_kinetic","special_shieldbooster_thermic","special_shieldbooster_toughened"]},bulkheads:{name:"Bulkheads",blueprints:["Armour_Advanced","Armour_Explosive","Armour_HeavyDuty","Armour_Kinetic","Armour_Thermic"],experimentals:["special_armour_chunky","special_armour_explosive","special_armour_kinetic","special_armour_thermic"]},lifeSupports:{name:"Life Supports",blueprints:["LifeSupport_LightWeight","LifeSupport_Reinforced","LifeSupport_Shielded"],experimentals:[]},sensors:{name:"Sensors",blueprints:["Sensor_LightWeight","Sensor_LongRange","Sensor_WideAngle"],experimentals:[]},autoFieldMaintenanceUnits:{name:"Auto Field-Maintenance Units",blueprints:["AFM_Shielded"],experimentals:[]},collectionLimpets:{name:"Collection Limpets",blueprints:["CollectionLimpet_LightWeight","CollectionLimpet_Reinforced","CollectionLimpet_Shielded"],experimentals:[]},fsdBoosters:{name:"FSD Boosters",blueprints:["GuardianModule_Sturdy"],experimentals:[]},fsdInterdictors:{name:"FSD Interdictors",blueprints:["FSDinterdictor_Expanded","FSDinterdictor_LongRange"],experimentals:[]},fuelScoops:{name:"Fuel Scoops",blueprints:["FuelScoop_Efficiency","FuelScoop_Shielded"],experimentals:[]},fuelTransferLimpets:{name:"Fuel Transfer Limpets",blueprints:["FuelTransferLimpet_LightWeight","FuelTransferLimpet_Reinforced","FuelTransferLimpet_Shielded"],experimentals:[]},hatchBreakerLimpets:{name:"Hatch Breaker Limpets",blueprints:["HatchBreakerLimpet_LightWeight","HatchBreakerLimpet_Reinforced","HatchBreakerLimpet_Shielded"],experimentals:[]},moduleReinforcements:{name:"Module Reinforcements",blueprints:["GuardianModule_Sturdy"],experimentals:[]},prospectingLimpets:{name:"Prospecting Limpets",blueprints:["ProspectingLimpet_LightWeight","ProspectingLimpet_Reinforced","ProspectingLimpet_Shielded"],experimentals:[]},refineries:{name:"Refineries",blueprints:["Refineries_Shielded"],experimentals:[]},shieldReinforcements:{name:"Shield Reinforcements",blueprints:["GuardianModule_Sturdy"],experimentals:[]},surfaceScanners:{name:"Surface Scanners",blueprints:["Sensor_Expanded"],experimentals:[]},chaffLaunchers:{name:"Chaff Launchers",blueprints:["Misc_ChaffCapacity","Misc_LightWeight","Misc_Reinforced","Misc_Shielded"],experimentals:[]},ecms:{name:"ECMs",blueprints:["Misc_LightWeight","Misc_Reinforced","Misc_Shielded"],experimentals:[]},heatSinkLaunchers:{name:"Heat Sink Launchers",blueprints:["Misc_HeatSinkCapacity","Misc_LightWeight","Misc_Reinforced","Misc_Shielded"],experimentals:[]},killWarrantScanners:{name:"Kill Warrant Scanners",blueprints:["Misc_LightWeight","Misc_Reinforced","Misc_Shielded","Scanner_LongRange","Scanner_WideAngle","Sensor_FastScan"],experimentals:[]},manifestScanners:{name:"Manifest Scanners",blueprints:["Misc_LightWeight","Misc_Reinforced","Misc_Shielded","Scanner_LongRange","Scanner_WideAngle","Sensor_FastScan"],experimentals:[]},pointDefence:{name:"Point Defence",blueprints:["Misc_LightWeight","Misc_PointDefenseCapacity","Misc_Reinforced","Misc_Shielded"],experimentals:[]},wakeScanners:{name:"Wake Scanners",blueprints:["Misc_LightWeight","Misc_Reinforced","Misc_Shielded","Scanner_LongRange","Scanner_WideAngle","Sensor_FastScan"],experimentals:[]},guardianGauss:{name:"Exp - Guardian Gauss",blueprints:["GuardianModule_Sturdy"],experimentals:[]},guardianPlasma:{name:"Exp - Guardian Plasma",blueprints:["GuardianModule_Sturdy"],experimentals:[]},guardianShard:{name:"Exp - Guardian Shard",blueprints:["GuardianModule_Sturdy"],experimentals:[]}},modules:{Int_Powerplant_Size2_Class1:"powerPlants",Int_Powerplant_Size2_Class2:"powerPlants",Int_Powerplant_Size2_Class3:"powerPlants",Int_Powerplant_Size2_Class4:"powerPlants",Int_Powerplant_Size2_Class5:"powerPlants",Int_Powerplant_Size3_Class1:"powerPlants",Int_Powerplant_Size3_Class2:"powerPlants",Int_Powerplant_Size3_Class3:"powerPlants",Int_Powerplant_Size3_Class4:"powerPlants",Int_Powerplant_Size3_Class5:"powerPlants",Int_Powerplant_Size4_Class1:"powerPlants",Int_Powerplant_Size4_Class2:"powerPlants",Int_Powerplant_Size4_Class3:"powerPlants",Int_Powerplant_Size4_Class4:"powerPlants",Int_Powerplant_Size4_Class5:"powerPlants",Int_Powerplant_Size5_Class1:"powerPlants",Int_Powerplant_Size5_Class2:"powerPlants",Int_Powerplant_Size5_Class3:"powerPlants",Int_Powerplant_Size5_Class4:"powerPlants",Int_Powerplant_Size5_Class5:"powerPlants",Int_Powerplant_Size6_Class1:"powerPlants",Int_Powerplant_Size6_Class2:"powerPlants",Int_Powerplant_Size6_Class3:"powerPlants",Int_Powerplant_Size6_Class4:"powerPlants",Int_Powerplant_Size6_Class5:"powerPlants",Int_Powerplant_Size7_Class1:"powerPlants",Int_Powerplant_Size7_Class2:"powerPlants",Int_Powerplant_Size7_Class3:"powerPlants",Int_Powerplant_Size7_Class4:"powerPlants",Int_Powerplant_Size7_Class5:"powerPlants",Int_Powerplant_Size8_Class1:"powerPlants",Int_Powerplant_Size8_Class2:"powerPlants",Int_Powerplant_Size8_Class3:"powerPlants",Int_Powerplant_Size8_Class4:"powerPlants",Int_Powerplant_Size8_Class5:"powerPlants",Int_PowerPlant_Size2_Class1_free:"powerPlants",Int_GuardianPowerplant_Size2:"guardianPowerPlants",Int_GuardianPowerplant_Size3:"guardianPowerPlants",Int_GuardianPowerplant_Size4:"guardianPowerPlants",Int_GuardianPowerplant_Size5:"guardianPowerPlants",Int_GuardianPowerplant_Size6:"guardianPowerPlants",Int_GuardianPowerplant_Size7:"guardianPowerPlants",Int_GuardianPowerplant_Size8:"guardianPowerPlants",Int_Engine_Size2_Class1:"thrusters",Int_Engine_Size2_Class2:"thrusters",Int_Engine_Size2_Class3:"thrusters",Int_Engine_Size2_Class4:"thrusters",Int_Engine_Size2_Class5:"thrusters",Int_Engine_Size3_Class1:"thrusters",Int_Engine_Size3_Class2:"thrusters",Int_Engine_Size3_Class3:"thrusters",Int_Engine_Size3_Class4:"thrusters",Int_Engine_Size3_Class5:"thrusters",Int_Engine_Size4_Class1:"thrusters",Int_Engine_Size4_Class2:"thrusters",Int_Engine_Size4_Class3:"thrusters",Int_Engine_Size4_Class4:"thrusters",Int_Engine_Size4_Class5:"thrusters",Int_Engine_Size5_Class1:"thrusters",Int_Engine_Size5_Class2:"thrusters",Int_Engine_Size5_Class3:"thrusters",Int_Engine_Size5_Class4:"thrusters",Int_Engine_Size5_Class5:"thrusters",Int_Engine_Size6_Class1:"thrusters",Int_Engine_Size6_Class2:"thrusters",Int_Engine_Size6_Class3:"thrusters",Int_Engine_Size6_Class4:"thrusters",Int_Engine_Size6_Class5:"thrusters",Int_Engine_Size7_Class1:"thrusters",Int_Engine_Size7_Class2:"thrusters",Int_Engine_Size7_Class3:"thrusters",Int_Engine_Size7_Class4:"thrusters",Int_Engine_Size7_Class5:"thrusters",Int_Engine_Size8_Class1:"thrusters",Int_Engine_Size8_Class2:"thrusters",Int_Engine_Size8_Class3:"thrusters",Int_Engine_Size8_Class4:"thrusters",Int_Engine_Size8_Class5:"thrusters",Int_Engine_Size2_Class1_free:"thrusters",Int_Engine_Size3_Class5_Fast:"thrusters",Int_Engine_Size2_Class5_Fast:"thrusters",Int_Engine_Size7_Class5_GravityOptimised_MkII:"thrusters",Int_MkIIAgileBoost_Engine_Size5_Class5:"thrusters",Int_Hyperdrive_Size2_Class1:"frameShiftDrives",Int_Hyperdrive_Size2_Class2:"frameShiftDrives",Int_Hyperdrive_Size2_Class3:"frameShiftDrives",Int_Hyperdrive_Size2_Class4:"frameShiftDrives",Int_Hyperdrive_Size2_Class5:"frameShiftDrives",Int_Hyperdrive_Size3_Class1:"frameShiftDrives",Int_Hyperdrive_Size3_Class2:"frameShiftDrives",Int_Hyperdrive_Size3_Class3:"frameShiftDrives",Int_Hyperdrive_Size3_Class4:"frameShiftDrives",Int_Hyperdrive_Size3_Class5:"frameShiftDrives",Int_Hyperdrive_Size4_Class1:"frameShiftDrives",Int_Hyperdrive_Size4_Class2:"frameShiftDrives",Int_Hyperdrive_Size4_Class3:"frameShiftDrives",Int_Hyperdrive_Size4_Class4:"frameShiftDrives",Int_Hyperdrive_Size4_Class5:"frameShiftDrives",Int_Hyperdrive_Size5_Class1:"frameShiftDrives",Int_Hyperdrive_Size5_Class2:"frameShiftDrives",Int_Hyperdrive_Size5_Class3:"frameShiftDrives",Int_Hyperdrive_Size5_Class4:"frameShiftDrives",Int_Hyperdrive_Size5_Class5:"frameShiftDrives",Int_Hyperdrive_Size6_Class1:"frameShiftDrives",Int_Hyperdrive_Size6_Class2:"frameShiftDrives",Int_Hyperdrive_Size6_Class3:"frameShiftDrives",Int_Hyperdrive_Size6_Class4:"frameShiftDrives",Int_Hyperdrive_Size6_Class5:"frameShiftDrives",Int_Hyperdrive_Size7_Class1:"frameShiftDrives",Int_Hyperdrive_Size7_Class2:"frameShiftDrives",Int_Hyperdrive_Size7_Class3:"frameShiftDrives",Int_Hyperdrive_Size7_Class4:"frameShiftDrives",Int_Hyperdrive_Size7_Class5:"frameShiftDrives",Int_Hyperdrive_Size8_Class1:"frameShiftDrives",Int_Hyperdrive_Size8_Class2:"frameShiftDrives",Int_Hyperdrive_Size8_Class3:"frameShiftDrives",Int_Hyperdrive_Size8_Class4:"frameShiftDrives",Int_Hyperdrive_Size8_Class5:"frameShiftDrives",Int_Hyperdrive_Size2_Class1_free:"frameShiftDrives",Int_PowerDistributor_Size1_Class1:"powerDistributors",Int_PowerDistributor_Size1_Class2:"powerDistributors",Int_PowerDistributor_Size1_Class3:"powerDistributors",Int_PowerDistributor_Size1_Class4:"powerDistributors",Int_PowerDistributor_Size1_Class5:"powerDistributors",Int_PowerDistributor_Size2_Class1:"powerDistributors",Int_PowerDistributor_Size2_Class2:"powerDistributors",Int_PowerDistributor_Size2_Class3:"powerDistributors",Int_PowerDistributor_Size2_Class4:"powerDistributors",Int_PowerDistributor_Size2_Class5:"powerDistributors",Int_PowerDistributor_Size3_Class1:"powerDistributors",Int_PowerDistributor_Size3_Class2:"powerDistributors",Int_PowerDistributor_Size3_Class3:"powerDistributors",Int_PowerDistributor_Size3_Class4:"powerDistributors",Int_PowerDistributor_Size3_Class5:"powerDistributors",Int_PowerDistributor_Size4_Class1:"powerDistributors",Int_PowerDistributor_Size4_Class2:"powerDistributors",Int_PowerDistributor_Size4_Class3:"powerDistributors",Int_PowerDistributor_Size4_Class4:"powerDistributors",Int_PowerDistributor_Size4_Class5:"powerDistributors",Int_PowerDistributor_Size5_Class1:"powerDistributors",Int_PowerDistributor_Size5_Class2:"powerDistributors",Int_PowerDistributor_Size5_Class3:"powerDistributors",Int_PowerDistributor_Size5_Class4:"powerDistributors",Int_PowerDistributor_Size5_Class5:"powerDistributors",Int_PowerDistributor_Size6_Class1:"powerDistributors",Int_PowerDistributor_Size6_Class2:"powerDistributors",Int_PowerDistributor_Size6_Class3:"powerDistributors",Int_PowerDistributor_Size6_Class4:"powerDistributors",Int_PowerDistributor_Size6_Class5:"powerDistributors",Int_PowerDistributor_Size7_Class1:"powerDistributors",Int_PowerDistributor_Size7_Class2:"powerDistributors",Int_PowerDistributor_Size7_Class3:"powerDistributors",Int_PowerDistributor_Size7_Class4:"powerDistributors",Int_PowerDistributor_Size7_Class5:"powerDistributors",Int_PowerDistributor_Size8_Class1:"powerDistributors",Int_PowerDistributor_Size8_Class2:"powerDistributors",Int_PowerDistributor_Size8_Class3:"powerDistributors",Int_PowerDistributor_Size8_Class4:"powerDistributors",Int_PowerDistributor_Size8_Class5:"powerDistributors",Int_PowerDistributor_Size1_Class1_free:"powerDistributors",Int_GuardianPowerDistributor_Size1:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size2:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size3:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size4:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size5:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size6:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size7:"guardianPowerDistributors",Int_GuardianPowerDistributor_Size8:"guardianPowerDistributors",Int_Hyperdrive_Overcharge_Size5_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size2_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size3_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size4_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size5_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size5_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size5_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size5_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size6_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size7_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class1:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class2:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class3:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class4:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class5:"frameShiftDrivesSCO",Int_Hyperdrive_Overcharge_Size8_Class5_OverchargeBooster_MkII:"frameShiftDrivesSCO",Int_ShieldGenerator_Size1_Class1:"shieldGenerators",Int_ShieldGenerator_Size1_Class2:"shieldGenerators",Int_ShieldGenerator_Size1_Class3:"shieldGenerators",Int_ShieldGenerator_Size1_Class4:"shieldGenerators",Int_ShieldGenerator_Size1_Class5:"shieldGenerators",Int_ShieldGenerator_Size2_Class1:"shieldGenerators",Int_ShieldGenerator_Size2_Class2:"shieldGenerators",Int_ShieldGenerator_Size2_Class3:"shieldGenerators",Int_ShieldGenerator_Size2_Class4:"shieldGenerators",Int_ShieldGenerator_Size2_Class5:"shieldGenerators",Int_ShieldGenerator_Size3_Class1:"shieldGenerators",Int_ShieldGenerator_Size3_Class2:"shieldGenerators",Int_ShieldGenerator_Size3_Class3:"shieldGenerators",Int_ShieldGenerator_Size3_Class4:"shieldGenerators",Int_ShieldGenerator_Size3_Class5:"shieldGenerators",Int_ShieldGenerator_Size4_Class1:"shieldGenerators",Int_ShieldGenerator_Size4_Class2:"shieldGenerators",Int_ShieldGenerator_Size4_Class3:"shieldGenerators",Int_ShieldGenerator_Size4_Class4:"shieldGenerators",Int_ShieldGenerator_Size4_Class5:"shieldGenerators",Int_ShieldGenerator_Size5_Class1:"shieldGenerators",Int_ShieldGenerator_Size5_Class2:"shieldGenerators",Int_ShieldGenerator_Size5_Class3:"shieldGenerators",Int_ShieldGenerator_Size5_Class4:"shieldGenerators",Int_ShieldGenerator_Size5_Class5:"shieldGenerators",Int_ShieldGenerator_Size6_Class1:"shieldGenerators",Int_ShieldGenerator_Size6_Class2:"shieldGenerators",Int_ShieldGenerator_Size6_Class3:"shieldGenerators",Int_ShieldGenerator_Size6_Class4:"shieldGenerators",Int_ShieldGenerator_Size6_Class5:"shieldGenerators",Int_ShieldGenerator_Size7_Class1:"shieldGenerators",Int_ShieldGenerator_Size7_Class2:"shieldGenerators",Int_ShieldGenerator_Size7_Class3:"shieldGenerators",Int_ShieldGenerator_Size7_Class4:"shieldGenerators",Int_ShieldGenerator_Size7_Class5:"shieldGenerators",Int_ShieldGenerator_Size8_Class1:"shieldGenerators",Int_ShieldGenerator_Size8_Class2:"shieldGenerators",Int_ShieldGenerator_Size8_Class3:"shieldGenerators",Int_ShieldGenerator_Size8_Class4:"shieldGenerators",Int_ShieldGenerator_Size8_Class5:"shieldGenerators",Int_ShieldGenerator_Size2_Class1_free:"shieldGenerators",Int_ShieldGenerator_Size1_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size2_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size3_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size4_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size5_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size6_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size7_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size8_Class5_Strong:"shieldGenerators",Int_ShieldGenerator_Size1_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size2_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size3_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size4_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size5_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size6_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size7_Class3_Fast:"shieldGenerators",Int_ShieldGenerator_Size8_Class3_Fast:"shieldGenerators",Int_ShieldCellBank_Size1_Class1:"shieldCellBanks",Int_ShieldCellBank_Size1_Class2:"shieldCellBanks",Int_ShieldCellBank_Size1_Class3:"shieldCellBanks",Int_ShieldCellBank_Size1_Class4:"shieldCellBanks",Int_ShieldCellBank_Size1_Class5:"shieldCellBanks",Int_ShieldCellBank_Size2_Class1:"shieldCellBanks",Int_ShieldCellBank_Size2_Class2:"shieldCellBanks",Int_ShieldCellBank_Size2_Class3:"shieldCellBanks",Int_ShieldCellBank_Size2_Class4:"shieldCellBanks",Int_ShieldCellBank_Size2_Class5:"shieldCellBanks",Int_ShieldCellBank_Size3_Class1:"shieldCellBanks",Int_ShieldCellBank_Size3_Class2:"shieldCellBanks",Int_ShieldCellBank_Size3_Class3:"shieldCellBanks",Int_ShieldCellBank_Size3_Class4:"shieldCellBanks",Int_ShieldCellBank_Size3_Class5:"shieldCellBanks",Int_ShieldCellBank_Size4_Class1:"shieldCellBanks",Int_ShieldCellBank_Size4_Class2:"shieldCellBanks",Int_ShieldCellBank_Size4_Class3:"shieldCellBanks",Int_ShieldCellBank_Size4_Class4:"shieldCellBanks",Int_ShieldCellBank_Size4_Class5:"shieldCellBanks",Int_ShieldCellBank_Size5_Class1:"shieldCellBanks",Int_ShieldCellBank_Size5_Class2:"shieldCellBanks",Int_ShieldCellBank_Size5_Class3:"shieldCellBanks",Int_ShieldCellBank_Size5_Class4:"shieldCellBanks",Int_ShieldCellBank_Size5_Class5:"shieldCellBanks",Int_ShieldCellBank_Size6_Class1:"shieldCellBanks",Int_ShieldCellBank_Size6_Class2:"shieldCellBanks",Int_ShieldCellBank_Size6_Class3:"shieldCellBanks",Int_ShieldCellBank_Size6_Class4:"shieldCellBanks",Int_ShieldCellBank_Size6_Class5:"shieldCellBanks",Int_ShieldCellBank_Size7_Class1:"shieldCellBanks",Int_ShieldCellBank_Size7_Class2:"shieldCellBanks",Int_ShieldCellBank_Size7_Class3:"shieldCellBanks",Int_ShieldCellBank_Size7_Class4:"shieldCellBanks",Int_ShieldCellBank_Size7_Class5:"shieldCellBanks",Int_ShieldCellBank_Size8_Class1:"shieldCellBanks",Int_ShieldCellBank_Size8_Class2:"shieldCellBanks",Int_ShieldCellBank_Size8_Class3:"shieldCellBanks",Int_ShieldCellBank_Size8_Class4:"shieldCellBanks",Int_ShieldCellBank_Size8_Class5:"shieldCellBanks",Int_HullReinforcement_Size1_Class1:"hullReinforcements",Int_HullReinforcement_Size1_Class2:"hullReinforcements",Int_HullReinforcement_Size2_Class1:"hullReinforcements",Int_HullReinforcement_Size2_Class2:"hullReinforcements",Int_HullReinforcement_Size3_Class1:"hullReinforcements",Int_HullReinforcement_Size3_Class2:"hullReinforcements",Int_HullReinforcement_Size4_Class1:"hullReinforcements",Int_HullReinforcement_Size4_Class2:"hullReinforcements",Int_HullReinforcement_Size5_Class1:"hullReinforcements",Int_HullReinforcement_Size5_Class2:"hullReinforcements",Int_GuardianHullReinforcement_Size1_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size1_Class2:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size2_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size2_Class2:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size3_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size3_Class2:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size4_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size4_Class2:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size5_Class1:"guardianHullReinforcements",Int_GuardianHullReinforcement_Size5_Class2:"guardianHullReinforcements",Hpt_PulseLaser_Fixed_Small:"pulseLasers",Hpt_PulseLaser_Fixed_Medium:"pulseLasers",Hpt_PulseLaser_Fixed_Large:"pulseLasers",Hpt_PulseLaser_Fixed_Huge:"pulseLasers",Hpt_PulseLaser_Gimbal_Small:"pulseLasers",Hpt_PulseLaser_Gimbal_Medium:"pulseLasers",Hpt_PulseLaser_Gimbal_Large:"pulseLasers",Hpt_PulseLaser_Turret_Small:"pulseLasers",Hpt_PulseLaser_Turret_Medium:"pulseLasers",Hpt_PulseLaser_Turret_Large:"pulseLasers",Hpt_PulseLaser_Fixed_Medium_Disruptor:"pulseLasers",Hpt_PulseLaser_Gimbal_Huge:"pulseLasers",Hpt_PulseLaserBurst_Fixed_Small:"burstLasers",Hpt_PulseLaserBurst_Fixed_Medium:"burstLasers",Hpt_PulseLaserBurst_Fixed_Large:"burstLasers",Hpt_PulseLaserBurst_Fixed_Huge:"burstLasers",Hpt_PulseLaserBurst_Gimbal_Small:"burstLasers",Hpt_PulseLaserBurst_Gimbal_Medium:"burstLasers",Hpt_PulseLaserBurst_Gimbal_Large:"burstLasers",Hpt_PulseLaserBurst_Turret_Small:"burstLasers",Hpt_PulseLaserBurst_Turret_Medium:"burstLasers",Hpt_PulseLaserBurst_Turret_Large:"burstLasers",Hpt_PulseLaserBurst_Fixed_Small_Scatter:"burstLasers",Hpt_PulseLaserBurst_Gimbal_Huge:"burstLasers",Hpt_BeamLaser_Fixed_Small:"beamLasers",Hpt_BeamLaser_Fixed_Medium:"beamLasers",Hpt_BeamLaser_Fixed_Large:"beamLasers",Hpt_BeamLaser_Fixed_Huge:"beamLasers",Hpt_BeamLaser_Gimbal_Small:"beamLasers",Hpt_BeamLaser_Gimbal_Medium:"beamLasers",Hpt_BeamLaser_Gimbal_Large:"beamLasers",Hpt_BeamLaser_Turret_Small:"beamLasers",Hpt_BeamLaser_Turret_Medium:"beamLasers",Hpt_BeamLaser_Turret_Large:"beamLasers",Hpt_BeamLaser_Fixed_Small_Heat:"beamLasers",Hpt_BeamLaser_Gimbal_Huge:"beamLasers",Hpt_Cannon_Fixed_Small:"cannons",Hpt_Cannon_Fixed_Medium:"cannons",Hpt_Cannon_Fixed_Large:"cannons",Hpt_Cannon_Fixed_Huge:"cannons",Hpt_Cannon_Gimbal_Small:"cannons",Hpt_Cannon_Gimbal_Medium:"cannons",Hpt_Cannon_Gimbal_Huge:"cannons",Hpt_Cannon_Turret_Small:"cannons",Hpt_Cannon_Turret_Medium:"cannons",Hpt_Cannon_Turret_Large:"cannons",Hpt_Cannon_Gimbal_Large:"cannons",Hpt_Cannon_Gimbal_Medium_Burst:"cannons",Hpt_Slugshot_Fixed_Small:"fragmentCannons",Hpt_Slugshot_Fixed_Medium:"fragmentCannons",Hpt_Slugshot_Fixed_Large:"fragmentCannons",Hpt_Slugshot_Gimbal_Small:"fragmentCannons",Hpt_Slugshot_Gimbal_Medium:"fragmentCannons",Hpt_Slugshot_Turret_Small:"fragmentCannons",Hpt_Slugshot_Turret_Medium:"fragmentCannons",Hpt_Slugshot_Gimbal_Large:"fragmentCannons",Hpt_Slugshot_Turret_Large:"fragmentCannons",Hpt_Slugshot_Fixed_Large_Range:"fragmentCannons",Hpt_MultiCannon_Fixed_Small:"multiCannons",Hpt_MultiCannon_Fixed_Medium:"multiCannons",Hpt_MultiCannon_Fixed_Large:"multiCannons",Hpt_MultiCannon_Fixed_Huge:"multiCannons",Hpt_MultiCannon_Gimbal_Small:"multiCannons",Hpt_MultiCannon_Gimbal_Medium:"multiCannons",Hpt_MultiCannon_Gimbal_Large:"multiCannons",Hpt_MultiCannon_Turret_Small:"multiCannons",Hpt_MultiCannon_Turret_Medium:"multiCannons",Hpt_MultiCannon_Turret_Large:"multiCannons",Hpt_MultiCannon_Fixed_Small_Strong:"multiCannons",Hpt_MultiCannon_Gimbal_Huge:"multiCannons",Hpt_MultiCannon_Fixed_Medium_Advanced:"multiCannons",Hpt_MultiCannon_Fixed_Small_Advanced:"multiCannons",Hpt_PlasmaAccelerator_Fixed_Medium:"plasmaAccelerators",Hpt_PlasmaAccelerator_Fixed_Large:"plasmaAccelerators",Hpt_PlasmaAccelerator_Fixed_Huge:"plasmaAccelerators",Hpt_PlasmaAccelerator_Fixed_Large_Advanced:"plasmaAccelerators",Hpt_Railgun_Fixed_Small:"railGuns",Hpt_Railgun_Fixed_Medium:"railGuns",Hpt_Railgun_Fixed_Medium_Burst:"railGuns",Hpt_BasicMissileRack_Fixed_Small:"missiles",Hpt_BasicMissileRack_Fixed_Medium:"missiles",Hpt_BasicMissileRack_Fixed_Large:"missiles",Hpt_DumbfireMissileRack_Fixed_Small:"missiles",Hpt_DumbfireMissileRack_Fixed_Medium:"missiles",Hpt_DrunkMissileRack_Fixed_Medium:"missiles",Hpt_DumbfireMissileRack_Fixed_Medium_Lasso:"missiles",Hpt_DumbfireMissileRack_Fixed_Large:"missiles",Hpt_DumbfireMissileRack_Fixed_Small_Advanced:"missiles",Hpt_DumbfireMissileRack_Fixed_Medium_Advanced:"missiles",Hpt_MineLauncher_Fixed_Small:"mines",Hpt_MineLauncher_Fixed_Medium:"mines",Hpt_MineLauncher_Fixed_Small_Impulse:"mines",Hpt_AdvancedTorpPylon_Fixed_Small:"torpedoes",Hpt_AdvancedTorpPylon_Fixed_Medium:"torpedoes",Hpt_AdvancedTorpPylon_Fixed_Large:"torpedoes",Hpt_ShieldBooster_Size0_Class1:"shieldBoosters",Hpt_ShieldBooster_Size0_Class2:"shieldBoosters",Hpt_ShieldBooster_Size0_Class3:"shieldBoosters",Hpt_ShieldBooster_Size0_Class4:"shieldBoosters",Hpt_ShieldBooster_Size0_Class5:"shieldBoosters",SideWinder_Armour_Grade1:"bulkheads",SideWinder_Armour_Grade2:"bulkheads",SideWinder_Armour_Grade3:"bulkheads",SideWinder_Armour_Mirrored:"bulkheads",SideWinder_Armour_Reactive:"bulkheads",Eagle_Armour_Grade1:"bulkheads",Eagle_Armour_Grade2:"bulkheads",Eagle_Armour_Grade3:"bulkheads",Eagle_Armour_Mirrored:"bulkheads",Eagle_Armour_Reactive:"bulkheads",Hauler_Armour_Grade1:"bulkheads",Hauler_Armour_Grade2:"bulkheads",Hauler_Armour_Grade3:"bulkheads",Hauler_Armour_Mirrored:"bulkheads",Hauler_Armour_Reactive:"bulkheads",Adder_Armour_Grade1:"bulkheads",Adder_Armour_Grade2:"bulkheads",Adder_Armour_Grade3:"bulkheads",Adder_Armour_Mirrored:"bulkheads",Adder_Armour_Reactive:"bulkheads",Viper_Armour_Grade1:"bulkheads",Viper_Armour_Grade2:"bulkheads",Viper_Armour_Grade3:"bulkheads",Viper_Armour_Mirrored:"bulkheads",Viper_Armour_Reactive:"bulkheads",CobraMkIII_Armour_Grade1:"bulkheads",CobraMkIII_Armour_Grade2:"bulkheads",CobraMkIII_Armour_Grade3:"bulkheads",CobraMkIII_Armour_Mirrored:"bulkheads",CobraMkIII_Armour_Reactive:"bulkheads",Type6_Armour_Grade1:"bulkheads",Type6_Armour_Grade2:"bulkheads",Type6_Armour_Grade3:"bulkheads",Type6_Armour_Mirrored:"bulkheads",Type6_Armour_Reactive:"bulkheads",Dolphin_Armour_Grade1:"bulkheads",Dolphin_Armour_Grade2:"bulkheads",Dolphin_Armour_Grade3:"bulkheads",Dolphin_Armour_Mirrored:"bulkheads",Dolphin_Armour_Reactive:"bulkheads",Type7_Armour_Grade1:"bulkheads",Type7_Armour_Grade2:"bulkheads",Type7_Armour_Grade3:"bulkheads",Type7_Armour_Mirrored:"bulkheads",Type7_Armour_Reactive:"bulkheads",Asp_Armour_Grade1:"bulkheads",Asp_Armour_Grade2:"bulkheads",Asp_Armour_Grade3:"bulkheads",Asp_Armour_Mirrored:"bulkheads",Asp_Armour_Reactive:"bulkheads",Vulture_Armour_Grade1:"bulkheads",Vulture_Armour_Grade2:"bulkheads",Vulture_Armour_Grade3:"bulkheads",Vulture_Armour_Mirrored:"bulkheads",Vulture_Armour_Reactive:"bulkheads",Empire_Trader_Armour_Grade1:"bulkheads",Empire_Trader_Armour_Grade2:"bulkheads",Empire_Trader_Armour_Grade3:"bulkheads",Empire_Trader_Armour_Mirrored:"bulkheads",Empire_Trader_Armour_Reactive:"bulkheads",Federation_Dropship_Armour_Grade1:"bulkheads",Federation_Dropship_Armour_Grade2:"bulkheads",Federation_Dropship_Armour_Grade3:"bulkheads",Federation_Dropship_Armour_Mirrored:"bulkheads",Federation_Dropship_Armour_Reactive:"bulkheads",Orca_Armour_Grade1:"bulkheads",Orca_Armour_Grade2:"bulkheads",Orca_Armour_Grade3:"bulkheads",Orca_Armour_Mirrored:"bulkheads",Orca_Armour_Reactive:"bulkheads",Type9_Armour_Grade1:"bulkheads",Type9_Armour_Grade2:"bulkheads",Type9_Armour_Grade3:"bulkheads",Type9_Armour_Mirrored:"bulkheads",Type9_Armour_Reactive:"bulkheads",Python_Armour_Grade1:"bulkheads",Python_Armour_Grade2:"bulkheads",Python_Armour_Grade3:"bulkheads",Python_Armour_Mirrored:"bulkheads",Python_Armour_Reactive:"bulkheads",BelugaLiner_Armour_Grade1:"bulkheads",BelugaLiner_Armour_Grade2:"bulkheads",BelugaLiner_Armour_Grade3:"bulkheads",BelugaLiner_Armour_Mirrored:"bulkheads",BelugaLiner_Armour_Reactive:"bulkheads",FerDeLance_Armour_Grade1:"bulkheads",FerDeLance_Armour_Grade2:"bulkheads",FerDeLance_Armour_Grade3:"bulkheads",FerDeLance_Armour_Mirrored:"bulkheads",FerDeLance_Armour_Reactive:"bulkheads",Anaconda_Armour_Grade1:"bulkheads",Anaconda_Armour_Grade2:"bulkheads",Anaconda_Armour_Grade3:"bulkheads",Anaconda_Armour_Mirrored:"bulkheads",Anaconda_Armour_Reactive:"bulkheads",Federation_Corvette_Armour_Grade1:"bulkheads",Federation_Corvette_Armour_Grade2:"bulkheads",Federation_Corvette_Armour_Grade3:"bulkheads",Federation_Corvette_Armour_Mirrored:"bulkheads",Federation_Corvette_Armour_Reactive:"bulkheads",Cutter_Armour_Grade1:"bulkheads",Cutter_Armour_Grade2:"bulkheads",Cutter_Armour_Grade3:"bulkheads",Cutter_Armour_Mirrored:"bulkheads",Cutter_Armour_Reactive:"bulkheads",DiamondBack_Armour_Grade1:"bulkheads",DiamondBack_Armour_Grade2:"bulkheads",DiamondBack_Armour_Grade3:"bulkheads",DiamondBack_Armour_Mirrored:"bulkheads",DiamondBack_Armour_Reactive:"bulkheads",Empire_Courier_Armour_Grade1:"bulkheads",Empire_Courier_Armour_Grade2:"bulkheads",Empire_Courier_Armour_Grade3:"bulkheads",Empire_Courier_Armour_Mirrored:"bulkheads",Empire_Courier_Armour_Reactive:"bulkheads",DiamondBackXL_Armour_Grade1:"bulkheads",DiamondBackXL_Armour_Grade2:"bulkheads",DiamondBackXL_Armour_Grade3:"bulkheads",DiamondBackXL_Armour_Mirrored:"bulkheads",DiamondBackXL_Armour_Reactive:"bulkheads",Empire_Eagle_Armour_Grade1:"bulkheads",Empire_Eagle_Armour_Grade2:"bulkheads",Empire_Eagle_Armour_Grade3:"bulkheads",Empire_Eagle_Armour_Mirrored:"bulkheads",Empire_Eagle_Armour_Reactive:"bulkheads",Federation_Dropship_MkII_Armour_Grade1:"bulkheads",Federation_Dropship_MkII_Armour_Grade2:"bulkheads",Federation_Dropship_MkII_Armour_Grade3:"bulkheads",Federation_Dropship_MkII_Armour_Mirrored:"bulkheads",Federation_Dropship_MkII_Armour_Reactive:"bulkheads",Federation_Gunship_Armour_Grade1:"bulkheads",Federation_Gunship_Armour_Grade2:"bulkheads",Federation_Gunship_Armour_Grade3:"bulkheads",Federation_Gunship_Armour_Mirrored:"bulkheads",Federation_Gunship_Armour_Reactive:"bulkheads",Viper_MkIV_Armour_Grade1:"bulkheads",Viper_MkIV_Armour_Grade2:"bulkheads",Viper_MkIV_Armour_Grade3:"bulkheads",Viper_MkIV_Armour_Mirrored:"bulkheads",Viper_MkIV_Armour_Reactive:"bulkheads",CobraMkIV_Armour_Grade1:"bulkheads",CobraMkIV_Armour_Grade2:"bulkheads",CobraMkIV_Armour_Grade3:"bulkheads",CobraMkIV_Armour_Mirrored:"bulkheads",CobraMkIV_Armour_Reactive:"bulkheads",Independant_Trader_Armour_Grade1:"bulkheads",Independant_Trader_Armour_Grade2:"bulkheads",Independant_Trader_Armour_Grade3:"bulkheads",Independant_Trader_Armour_Mirrored:"bulkheads",Independant_Trader_Armour_Reactive:"bulkheads",Asp_Scout_Armour_Grade1:"bulkheads",Asp_Scout_Armour_Grade2:"bulkheads",Asp_Scout_Armour_Grade3:"bulkheads",Asp_Scout_Armour_Mirrored:"bulkheads",Asp_Scout_Armour_Reactive:"bulkheads",Type9_Military_Armour_Grade1:"bulkheads",Type9_Military_Armour_Grade2:"bulkheads",Type9_Military_Armour_Grade3:"bulkheads",Type9_Military_Armour_Mirrored:"bulkheads",Type9_Military_Armour_Reactive:"bulkheads",Krait_MkII_Armour_Grade1:"bulkheads",Krait_MkII_Armour_Grade2:"bulkheads",Krait_MkII_Armour_Grade3:"bulkheads",Krait_MkII_Armour_Mirrored:"bulkheads",Krait_MkII_Armour_Reactive:"bulkheads",TypeX_Armour_Grade1:"bulkheads",TypeX_Armour_Grade2:"bulkheads",TypeX_Armour_Grade3:"bulkheads",TypeX_Armour_Mirrored:"bulkheads",TypeX_Armour_Reactive:"bulkheads",TypeX_2_Armour_Grade1:"bulkheads",TypeX_2_Armour_Grade2:"bulkheads",TypeX_2_Armour_Grade3:"bulkheads",TypeX_2_Armour_Mirrored:"bulkheads",TypeX_2_Armour_Reactive:"bulkheads",TypeX_3_Armour_Grade1:"bulkheads",TypeX_3_Armour_Grade2:"bulkheads",TypeX_3_Armour_Grade3:"bulkheads",TypeX_3_Armour_Mirrored:"bulkheads",TypeX_3_Armour_Reactive:"bulkheads",Krait_Light_Armour_Grade1:"bulkheads",Krait_Light_Armour_Grade2:"bulkheads",Krait_Light_Armour_Grade3:"bulkheads",Krait_Light_Armour_Mirrored:"bulkheads",Krait_Light_Armour_Reactive:"bulkheads",Mamba_Armour_Grade1:"bulkheads",Mamba_Armour_Grade2:"bulkheads",Mamba_Armour_Grade3:"bulkheads",Mamba_Armour_Mirrored:"bulkheads",Mamba_Armour_Reactive:"bulkheads",Python_NX_Armour_Grade1:"bulkheads",Python_NX_Armour_Grade2:"bulkheads",Python_NX_Armour_Grade3:"bulkheads",Python_NX_Armour_Mirrored:"bulkheads",Python_NX_Armour_Reactive:"bulkheads",Type8_Armour_Grade1:"bulkheads",Type8_Armour_Grade2:"bulkheads",Type8_Armour_Grade3:"bulkheads",Type8_Armour_Mirrored:"bulkheads",Type8_Armour_Reactive:"bulkheads",Mandalay_Armour_Grade1:"bulkheads",Mandalay_Armour_Grade2:"bulkheads",Mandalay_Armour_Grade3:"bulkheads",Mandalay_Armour_Mirrored:"bulkheads",Mandalay_Armour_Reactive:"bulkheads",CobraMkV_Armour_Grade1:"bulkheads",CobraMkV_Armour_Grade2:"bulkheads",CobraMkV_Armour_Grade3:"bulkheads",CobraMkV_Armour_Mirrored:"bulkheads",CobraMkV_Armour_Reactive:"bulkheads",Corsair_Armour_Grade1:"bulkheads",Corsair_Armour_Grade2:"bulkheads",Corsair_Armour_Grade3:"bulkheads",Corsair_Armour_Mirrored:"bulkheads",Corsair_Armour_Reactive:"bulkheads",PantherMkII_Armour_Grade1:"bulkheads",PantherMkII_Armour_Grade2:"bulkheads",PantherMkII_Armour_Grade3:"bulkheads",PantherMkII_Armour_Mirrored:"bulkheads",PantherMkII_Armour_Reactive:"bulkheads",LakonMiner_Armour_Grade1:"bulkheads",LakonMiner_Armour_Grade2:"bulkheads",LakonMiner_Armour_Grade3:"bulkheads",LakonMiner_Armour_Mirrored:"bulkheads",LakonMiner_Armour_Reactive:"bulkheads",Explorer_NX_Armour_Grade1:"bulkheads",Explorer_NX_Armour_Grade2:"bulkheads",Explorer_NX_Armour_Grade3:"bulkheads",Explorer_NX_Armour_Mirrored:"bulkheads",Explorer_NX_Armour_Reactive:"bulkheads",Explorer_NX_Armour_Grade1_Default:"bulkheads",SmallCombat01_NX_Armour_Grade1:"bulkheads",SmallCombat01_NX_Armour_Grade2:"bulkheads",SmallCombat01_NX_Armour_Grade3:"bulkheads",SmallCombat01_NX_Armour_Mirrored:"bulkheads",SmallCombat01_NX_Armour_Reactive:"bulkheads",MediumTransport01_Armour_Grade1:"bulkheads",MediumTransport01_Armour_Grade2:"bulkheads",MediumTransport01_Armour_Grade3:"bulkheads",MediumTransport01_Armour_Mirrored:"bulkheads",MediumTransport01_Armour_Reactive:"bulkheads",Int_LifeSupport_Size1_Class1:"lifeSupports",Int_LifeSupport_Size1_Class2:"lifeSupports",Int_LifeSupport_Size1_Class3:"lifeSupports",Int_LifeSupport_Size1_Class4:"lifeSupports",Int_LifeSupport_Size1_Class5:"lifeSupports",Int_LifeSupport_Size2_Class1:"lifeSupports",Int_LifeSupport_Size2_Class2:"lifeSupports",Int_LifeSupport_Size2_Class3:"lifeSupports",Int_LifeSupport_Size2_Class4:"lifeSupports",Int_LifeSupport_Size2_Class5:"lifeSupports",Int_LifeSupport_Size3_Class1:"lifeSupports",Int_LifeSupport_Size3_Class2:"lifeSupports",Int_LifeSupport_Size3_Class3:"lifeSupports",Int_LifeSupport_Size3_Class4:"lifeSupports",Int_LifeSupport_Size3_Class5:"lifeSupports",Int_LifeSupport_Size4_Class1:"lifeSupports",Int_LifeSupport_Size4_Class2:"lifeSupports",Int_LifeSupport_Size4_Class3:"lifeSupports",Int_LifeSupport_Size4_Class4:"lifeSupports",Int_LifeSupport_Size4_Class5:"lifeSupports",Int_LifeSupport_Size5_Class1:"lifeSupports",Int_LifeSupport_Size5_Class2:"lifeSupports",Int_LifeSupport_Size5_Class3:"lifeSupports",Int_LifeSupport_Size5_Class4:"lifeSupports",Int_LifeSupport_Size5_Class5:"lifeSupports",Int_LifeSupport_Size6_Class1:"lifeSupports",Int_LifeSupport_Size6_Class2:"lifeSupports",Int_LifeSupport_Size6_Class3:"lifeSupports",Int_LifeSupport_Size6_Class4:"lifeSupports",Int_LifeSupport_Size6_Class5:"lifeSupports",Int_LifeSupport_Size7_Class1:"lifeSupports",Int_LifeSupport_Size7_Class2:"lifeSupports",Int_LifeSupport_Size7_Class3:"lifeSupports",Int_LifeSupport_Size7_Class4:"lifeSupports",Int_LifeSupport_Size7_Class5:"lifeSupports",Int_LifeSupport_Size8_Class1:"lifeSupports",Int_LifeSupport_Size8_Class2:"lifeSupports",Int_LifeSupport_Size8_Class3:"lifeSupports",Int_LifeSupport_Size8_Class4:"lifeSupports",Int_LifeSupport_Size8_Class5:"lifeSupports",Int_LifeSupport_Size1_Class1_free:"lifeSupports",Int_Sensors_Size1_Class1:"sensors",Int_Sensors_Size1_Class2:"sensors",Int_Sensors_Size1_Class3:"sensors",Int_Sensors_Size1_Class4:"sensors",Int_Sensors_Size1_Class5:"sensors",Int_Sensors_Size2_Class1:"sensors",Int_Sensors_Size2_Class2:"sensors",Int_Sensors_Size2_Class3:"sensors",Int_Sensors_Size2_Class4:"sensors",Int_Sensors_Size2_Class5:"sensors",Int_Sensors_Size3_Class1:"sensors",Int_Sensors_Size3_Class2:"sensors",Int_Sensors_Size3_Class3:"sensors",Int_Sensors_Size3_Class4:"sensors",Int_Sensors_Size3_Class5:"sensors",Int_Sensors_Size4_Class1:"sensors",Int_Sensors_Size4_Class2:"sensors",Int_Sensors_Size4_Class3:"sensors",Int_Sensors_Size4_Class4:"sensors",Int_Sensors_Size4_Class5:"sensors",Int_Sensors_Size5_Class1:"sensors",Int_Sensors_Size5_Class2:"sensors",Int_Sensors_Size5_Class3:"sensors",Int_Sensors_Size5_Class4:"sensors",Int_Sensors_Size5_Class5:"sensors",Int_Sensors_Size6_Class1:"sensors",Int_Sensors_Size6_Class2:"sensors",Int_Sensors_Size6_Class3:"sensors",Int_Sensors_Size6_Class4:"sensors",Int_Sensors_Size6_Class5:"sensors",Int_Sensors_Size7_Class1:"sensors",Int_Sensors_Size7_Class2:"sensors",Int_Sensors_Size7_Class3:"sensors",Int_Sensors_Size7_Class4:"sensors",Int_Sensors_Size7_Class5:"sensors",Int_Sensors_Size8_Class1:"sensors",Int_Sensors_Size8_Class2:"sensors",Int_Sensors_Size8_Class3:"sensors",Int_Sensors_Size8_Class4:"sensors",Int_Sensors_Size8_Class5:"sensors",Int_Sensors_Size1_Class1_free:"sensors",Int_Repairer_Size1_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class1:"autoFieldMaintenanceUnits",Int_Repairer_Size1_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class2:"autoFieldMaintenanceUnits",Int_Repairer_Size1_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class3:"autoFieldMaintenanceUnits",Int_Repairer_Size1_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class4:"autoFieldMaintenanceUnits",Int_Repairer_Size1_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size2_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size3_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size4_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size5_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size6_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size7_Class5:"autoFieldMaintenanceUnits",Int_Repairer_Size8_Class5:"autoFieldMaintenanceUnits",Int_DroneControl_Collection_Size1_Class1:"collectionLimpets",Int_DroneControl_Collection_Size1_Class2:"collectionLimpets",Int_DroneControl_Collection_Size1_Class3:"collectionLimpets",Int_DroneControl_Collection_Size1_Class4:"collectionLimpets",Int_DroneControl_Collection_Size1_Class5:"collectionLimpets",Int_DroneControl_Collection_Size3_Class1:"collectionLimpets",Int_DroneControl_Collection_Size3_Class2:"collectionLimpets",Int_DroneControl_Collection_Size3_Class3:"collectionLimpets",Int_DroneControl_Collection_Size3_Class4:"collectionLimpets",Int_DroneControl_Collection_Size3_Class5:"collectionLimpets",Int_DroneControl_Collection_Size5_Class1:"collectionLimpets",Int_DroneControl_Collection_Size5_Class2:"collectionLimpets",Int_DroneControl_Collection_Size5_Class3:"collectionLimpets",Int_DroneControl_Collection_Size5_Class4:"collectionLimpets",Int_DroneControl_Collection_Size5_Class5:"collectionLimpets",Int_DroneControl_Collection_Size7_Class1:"collectionLimpets",Int_DroneControl_Collection_Size7_Class2:"collectionLimpets",Int_DroneControl_Collection_Size7_Class3:"collectionLimpets",Int_DroneControl_Collection_Size7_Class4:"collectionLimpets",Int_DroneControl_Collection_Size7_Class5:"collectionLimpets",Int_GuardianFSDBooster_Size1:"fsdBoosters",Int_GuardianFSDBooster_Size2:"fsdBoosters",Int_GuardianFSDBooster_Size3:"fsdBoosters",Int_GuardianFSDBooster_Size4:"fsdBoosters",Int_GuardianFSDBooster_Size5:"fsdBoosters",Int_FSDInterdictor_Size1_Class1:"fsdInterdictors",Int_FSDInterdictor_Size2_Class1:"fsdInterdictors",Int_FSDInterdictor_Size3_Class1:"fsdInterdictors",Int_FSDInterdictor_Size4_Class1:"fsdInterdictors",Int_FSDInterdictor_Size1_Class2:"fsdInterdictors",Int_FSDInterdictor_Size2_Class2:"fsdInterdictors",Int_FSDInterdictor_Size3_Class2:"fsdInterdictors",Int_FSDInterdictor_Size4_Class2:"fsdInterdictors",Int_FSDInterdictor_Size1_Class3:"fsdInterdictors",Int_FSDInterdictor_Size2_Class3:"fsdInterdictors",Int_FSDInterdictor_Size3_Class3:"fsdInterdictors",Int_FSDInterdictor_Size4_Class3:"fsdInterdictors",Int_FSDInterdictor_Size1_Class4:"fsdInterdictors",Int_FSDInterdictor_Size2_Class4:"fsdInterdictors",Int_FSDInterdictor_Size3_Class4:"fsdInterdictors",Int_FSDInterdictor_Size4_Class4:"fsdInterdictors",Int_FSDInterdictor_Size1_Class5:"fsdInterdictors",Int_FSDInterdictor_Size2_Class5:"fsdInterdictors",Int_FSDInterdictor_Size3_Class5:"fsdInterdictors",Int_FSDInterdictor_Size4_Class5:"fsdInterdictors",Int_FuelScoop_Size1_Class1:"fuelScoops",Int_FuelScoop_Size2_Class1:"fuelScoops",Int_FuelScoop_Size3_Class1:"fuelScoops",Int_FuelScoop_Size4_Class1:"fuelScoops",Int_FuelScoop_Size5_Class1:"fuelScoops",Int_FuelScoop_Size6_Class1:"fuelScoops",Int_FuelScoop_Size7_Class1:"fuelScoops",Int_FuelScoop_Size8_Class1:"fuelScoops",Int_FuelScoop_Size1_Class2:"fuelScoops",Int_FuelScoop_Size2_Class2:"fuelScoops",Int_FuelScoop_Size3_Class2:"fuelScoops",Int_FuelScoop_Size4_Class2:"fuelScoops",Int_FuelScoop_Size5_Class2:"fuelScoops",Int_FuelScoop_Size6_Class2:"fuelScoops",Int_FuelScoop_Size7_Class2:"fuelScoops",Int_FuelScoop_Size8_Class2:"fuelScoops",Int_FuelScoop_Size1_Class3:"fuelScoops",Int_FuelScoop_Size2_Class3:"fuelScoops",Int_FuelScoop_Size3_Class3:"fuelScoops",Int_FuelScoop_Size4_Class3:"fuelScoops",Int_FuelScoop_Size5_Class3:"fuelScoops",Int_FuelScoop_Size6_Class3:"fuelScoops",Int_FuelScoop_Size7_Class3:"fuelScoops",Int_FuelScoop_Size8_Class3:"fuelScoops",Int_FuelScoop_Size1_Class4:"fuelScoops",Int_FuelScoop_Size2_Class4:"fuelScoops",Int_FuelScoop_Size3_Class4:"fuelScoops",Int_FuelScoop_Size4_Class4:"fuelScoops",Int_FuelScoop_Size5_Class4:"fuelScoops",Int_FuelScoop_Size6_Class4:"fuelScoops",Int_FuelScoop_Size7_Class4:"fuelScoops",Int_FuelScoop_Size8_Class4:"fuelScoops",Int_FuelScoop_Size1_Class5:"fuelScoops",Int_FuelScoop_Size2_Class5:"fuelScoops",Int_FuelScoop_Size3_Class5:"fuelScoops",Int_FuelScoop_Size4_Class5:"fuelScoops",Int_FuelScoop_Size5_Class5:"fuelScoops",Int_FuelScoop_Size6_Class5:"fuelScoops",Int_FuelScoop_Size7_Class5:"fuelScoops",Int_FuelScoop_Size8_Class5:"fuelScoops",Int_DroneControl_FuelTransfer_Size1_Class1:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size1_Class2:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size1_Class3:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size1_Class4:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size1_Class5:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class1:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class2:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class3:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class4:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size3_Class5:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class1:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class2:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class3:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class4:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size5_Class5:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class1:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class2:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class3:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class4:"fuelTransferLimpets",Int_DroneControl_FuelTransfer_Size7_Class5:"fuelTransferLimpets",Int_DroneControl_ResourceSiphon:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class1:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class2:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class3:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class4:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size1_Class5:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class1:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class2:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class3:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class4:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size3_Class5:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class1:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class2:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class3:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class4:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size5_Class5:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class1:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class2:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class3:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class4:"hatchBreakerLimpets",Int_DroneControl_ResourceSiphon_Size7_Class5:"hatchBreakerLimpets",Int_GuardianModuleReinforcement_Size1_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size1_Class2:"moduleReinforcements",Int_GuardianModuleReinforcement_Size2_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size2_Class2:"moduleReinforcements",Int_GuardianModuleReinforcement_Size3_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size3_Class2:"moduleReinforcements",Int_GuardianModuleReinforcement_Size4_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size4_Class2:"moduleReinforcements",Int_GuardianModuleReinforcement_Size5_Class1:"moduleReinforcements",Int_GuardianModuleReinforcement_Size5_Class2:"moduleReinforcements",Int_DroneControl_Prospector_Size1_Class1:"prospectingLimpets",Int_DroneControl_Prospector_Size1_Class2:"prospectingLimpets",Int_DroneControl_Prospector_Size1_Class3:"prospectingLimpets",Int_DroneControl_Prospector_Size1_Class4:"prospectingLimpets",Int_DroneControl_Prospector_Size1_Class5:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class1:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class2:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class3:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class4:"prospectingLimpets",Int_DroneControl_Prospector_Size3_Class5:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class1:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class2:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class3:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class4:"prospectingLimpets",Int_DroneControl_Prospector_Size5_Class5:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class1:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class2:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class3:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class4:"prospectingLimpets",Int_DroneControl_Prospector_Size7_Class5:"prospectingLimpets",Int_Refinery_Size1_Class1:"refineries",Int_Refinery_Size2_Class1:"refineries",Int_Refinery_Size3_Class1:"refineries",Int_Refinery_Size4_Class1:"refineries",Int_Refinery_Size1_Class2:"refineries",Int_Refinery_Size2_Class2:"refineries",Int_Refinery_Size3_Class2:"refineries",Int_Refinery_Size4_Class2:"refineries",Int_Refinery_Size1_Class3:"refineries",Int_Refinery_Size2_Class3:"refineries",Int_Refinery_Size3_Class3:"refineries",Int_Refinery_Size4_Class3:"refineries",Int_Refinery_Size1_Class4:"refineries",Int_Refinery_Size2_Class4:"refineries",Int_Refinery_Size3_Class4:"refineries",Int_Refinery_Size4_Class4:"refineries",Int_Refinery_Size1_Class5:"refineries",Int_Refinery_Size2_Class5:"refineries",Int_Refinery_Size3_Class5:"refineries",Int_Refinery_Size4_Class5:"refineries",Int_GuardianShieldReinforcement_Size1_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size1_Class2:"shieldReinforcements",Int_GuardianShieldReinforcement_Size2_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size2_Class2:"shieldReinforcements",Int_GuardianShieldReinforcement_Size3_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size3_Class2:"shieldReinforcements",Int_GuardianShieldReinforcement_Size4_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size4_Class2:"shieldReinforcements",Int_GuardianShieldReinforcement_Size5_Class1:"shieldReinforcements",Int_GuardianShieldReinforcement_Size5_Class2:"shieldReinforcements",Int_DetailedSurfaceScanner_Tiny:"surfaceScanners",Hpt_ChaffLauncher_Tiny:"chaffLaunchers",Hpt_ElectronicCountermeasure_Tiny:"ecms",Hpt_HeatSinkLauncher_Turret_Tiny:"heatSinkLaunchers",Hpt_CausticSinkLauncher_Turret_Tiny:"heatSinkLaunchers",Hpt_CrimeScanner_Size0_Class1:"killWarrantScanners",Hpt_CrimeScanner_Size0_Class2:"killWarrantScanners",Hpt_CrimeScanner_Size0_Class3:"killWarrantScanners",Hpt_CrimeScanner_Size0_Class4:"killWarrantScanners",Hpt_CrimeScanner_Size0_Class5:"killWarrantScanners",Hpt_CargoScanner_Size0_Class1:"manifestScanners",Hpt_CargoScanner_Size0_Class2:"manifestScanners",Hpt_CargoScanner_Size0_Class3:"manifestScanners",Hpt_CargoScanner_Size0_Class4:"manifestScanners",Hpt_CargoScanner_Size0_Class5:"manifestScanners",Hpt_PlasmaPointDefence_Turret_Tiny:"pointDefence",Hpt_CloudScanner_Size0_Class1:"wakeScanners",Hpt_CloudScanner_Size0_Class2:"wakeScanners",Hpt_CloudScanner_Size0_Class3:"wakeScanners",Hpt_CloudScanner_Size0_Class4:"wakeScanners",Hpt_CloudScanner_Size0_Class5:"wakeScanners",Hpt_Guardian_GaussCannon_Fixed_Medium:"guardianGauss",Hpt_Guardian_GaussCannon_Fixed_Small:"guardianGauss",Hpt_Guardian_PlasmaLauncher_Fixed_Medium:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Turret_Medium:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Fixed_Large:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Turret_Large:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Turret_Small:"guardianPlasma",Hpt_Guardian_PlasmaLauncher_Fixed_Small:"guardianPlasma",Hpt_Guardian_ShardCannon_Fixed_Medium:"guardianShard",Hpt_Guardian_ShardCannon_Turret_Medium:"guardianShard",Hpt_Guardian_ShardCannon_Fixed_Large:"guardianShard",Hpt_Guardian_ShardCannon_Turret_Large:"guardianShard",Hpt_Guardian_ShardCannon_Turret_Small:"guardianShard",Hpt_Guardian_ShardCannon_Fixed_Small:"guardianShard"},exclusions:{Hpt_MultiCannon_Fixed_Small:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Large:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Huge:["special_phasing_sequence"],Hpt_MultiCannon_Gimbal_Small:["special_phasing_sequence"],Hpt_MultiCannon_Gimbal_Medium:["special_phasing_sequence"],Hpt_MultiCannon_Gimbal_Large:["special_phasing_sequence"],Hpt_MultiCannon_Turret_Small:["special_phasing_sequence"],Hpt_MultiCannon_Turret_Medium:["special_phasing_sequence"],Hpt_MultiCannon_Turret_Large:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Small_Strong:["special_phasing_sequence"],Hpt_MultiCannon_Gimbal_Huge:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Medium_Advanced:["special_phasing_sequence"],Hpt_MultiCannon_Fixed_Small_Advanced:["special_phasing_sequence"],Hpt_BasicMissileRack_Fixed_Small:["special_fsd_interrupt","special_penetrator_munitions"],Hpt_BasicMissileRack_Fixed_Medium:["special_penetrator_munitions"],Hpt_BasicMissileRack_Fixed_Large:["special_penetrator_munitions"],Hpt_DumbfireMissileRack_Fixed_Small:["special_drag_munitions"],Hpt_DumbfireMissileRack_Fixed_Medium:["special_drag_munitions"],Hpt_DrunkMissileRack_Fixed_Medium:["special_fsd_interrupt","special_penetrator_munitions"],Hpt_DumbfireMissileRack_Fixed_Medium_Lasso:["special_drag_munitions"],Hpt_DumbfireMissileRack_Fixed_Large:["special_drag_munitions"],Hpt_DumbfireMissileRack_Fixed_Small_Advanced:["special_drag_munitions"],Hpt_DumbfireMissileRack_Fixed_Medium_Advanced:["special_drag_munitions"]}};var DATA=deepFreeze(engineering_options_default);var ENGINEERING_OPTION_GROUPS=DATA.groups;var moduleGroup=new Map(Object.entries(DATA.modules).map(([symbol,group])=>[symbol.toLowerCase(),group]));var moduleExclusions=new Map(Object.entries(DATA.exclusions).map(([symbol,effects])=>[symbol.toLowerCase(),new Set(effects.map(e=>e.toLowerCase()))]));function getEngineeringGroup(symbol){return moduleGroup.get(normalizeKey(symbol,"getEngineeringGroup: symbol"))??null}function getBlueprintsForModule(symbol){requireStringIfPresent(symbol,"getBlueprintsForModule: symbol");const group=getEngineeringGroup(symbol);return group===null?[]:ENGINEERING_OPTION_GROUPS[group].blueprints}function getExperimentalsForModule(symbol){const normalized=normalizeKey(symbol,"getExperimentalsForModule: symbol");const group=moduleGroup.get(normalized);if(group===void 0)return[];const all=ENGINEERING_OPTION_GROUPS[group].experimentals;const excluded=moduleExclusions.get(normalized);return excluded===void 0?all:all.filter(e=>!excluded.has(e.toLowerCase()))}function getExperimentalsForBlueprint(blueprintSymbol){const normalized=normalizeKey(blueprintSymbol,"getExperimentalsForBlueprint: blueprintSymbol");const out=/* @__PURE__ */new Set;for(const group of Object.values(ENGINEERING_OPTION_GROUPS)){if(!group.blueprints.some(b=>b.toLowerCase()===normalized))continue;for(const effect of group.experimentals)out.add(effect)}return[...out].sort()}export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule};//# sourceMappingURL=chunk-GLWPSVFV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/engineering-options.ts"],"names":["normalizeKey","requireStringIfPresent","deepFreeze","engineering_options_default","groups","blueprints","experimentals","modules","exclusions","DATA","ENGINEERING_OPTION_GROUPS","moduleGroup","Map","Object","entries","map","symbol","group","toLowerCase","moduleExclusions","effects","Set","e","getEngineeringGroup","get","getBlueprintsForModule","getExperimentalsForModule","normalized","all","excluded","filter","has","getExperimentalsForBlueprint","blueprintSymbol","out","values","some","b","effect","add","sort"],"mappings":"O,oi2DAwJA,IAAMS,KAA8BP,WAAWC,6BAcxC,IAAMO,0BAETD,KAAKL,OAET,IAAMO,YAAc,IAAIC,IACpBC,OAAOC,QAAQL,KAAKF,SAASQ,IAAI,EAAEC,OAAQC,SAAW,CAACD,OAAOE,cAAeD,SAEjF,IAAME,iBAAmB,IAAIP,IACzBC,OAAOC,QAAQL,KAAKD,YAAYO,IAAI,EAAEC,OAAQI,WAAa,CACvDJ,OAAOE,cACP,IAAIG,IAAID,QAAQL,IAAKO,GAAMA,EAAEJ,mBAiC9B,SAASK,oBAAoBP,QAChC,OAAOL,YAAYa,IAAIxB,aAAagB,OAAQ,iCAAmC,IACnF,CA4CO,SAASS,uBAAuBT,QACnCf,uBAAuBe,OAAQ,kCAC/B,MAAMC,MAAQM,oBAAoBP,QAClC,OAAOC,QAAU,KAAO,GAAKP,0BAA0BO,OAAQZ,UACnE,CAmCO,SAASqB,0BAA0BV,QACtC,MAAMW,WAAa3B,aAAagB,OAAQ,qCACxC,MAAMC,MAAQN,YAAYa,IAAIG,YAC9B,GAAIV,aAAU,EAAW,MAAO,GAChC,MAAMW,IAAMlB,0BAA0BO,OAAQX,cAC9C,MAAMuB,SAAWV,iBAAiBK,IAAIG,YACtC,OAAOE,gBAAa,EAAYD,IAAMA,IAAIE,OAAQR,IAAOO,SAASE,IAAIT,EAAEJ,eAC5E,CAuCO,SAASc,6BAA6BC,iBACzC,MAAMN,WAAa3B,aACfiC,gBACA,iDAEJ,MAAMC,mBAAA,IAAUb,IAChB,IAAA,MAAWJ,SAASJ,OAAOsB,OAAOzB,2BAA4B,CAC1D,IAAKO,MAAMZ,WAAW+B,KAAMC,GAAMA,EAAEnB,gBAAkBS,YAAa,SACnE,IAAA,MAAWW,UAAUrB,MAAMX,cAAe4B,IAAIK,IAAID,OACtD,CACA,MAAO,IAAIJ,KAAKM,MACpB,QAAA9B,0BAAAe,uBAAAF,oBAAAS,6BAAAN"}
@@ -0,0 +1 @@
1
+ import{combinedRateOfFire}from"./chunk-7TQ2X6Q3.js";import{getPreEngineeredVariants}from"./chunk-PL75RTA2.js";import{builtInModuleBySymbol,getModuleBySymbol}from"./chunk-PA5EITW5.js";import{ALL_MODULES}from"./chunk-QY3L5BKN.js";import{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"./chunk-77I24V6B.js";import{fieldForLabel,baseStats,computeModifiers,labelsForDamageType,scaleForLabel,preciseModifierValue,capabilityValueForLabel}from"./chunk-CJQ37JII.js";import{resolveBlueprintForModule}from"./chunk-OLKNYGGT.js";import{getBlueprintsForModule,getExperimentalsForModule,getEngineeringGroup}from"./chunk-GLWPSVFV.js";import{getBlueprintGrade,getBlueprint,BLUEPRINTS}from"./chunk-AYAKU4YA.js";import{normalizeKey}from"./chunk-BKWLI44T.js";import{requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";function scaleDamageComponents(components,baseDamage,effectiveDamage){const scale=baseDamage!==void 0&&baseDamage!==0&&effectiveDamage!==void 0?effectiveDamage/baseDamage:1;return{...components.kinetic===void 0?{}:{kinetic:components.kinetic*scale},...components.thermal===void 0?{}:{thermal:components.thermal*scale},...components.explosive===void 0?{}:{explosive:components.explosive*scale},...components.absolute===void 0?{}:{absolute:components.absolute*scale},...components.antiXeno===void 0?{}:{antiXeno:components.antiXeno*scale},...components.unclassified===void 0?{}:{unclassified:components.unclassified.map(value=>value*scale)}}}function fixedModifierFeatures(modifiers){return modifiers.map(modifier=>({label:modifier.label,method:modifier.method,min:modifier.value,max:modifier.value}))}var FITTED_ITEM="ShipLoadout: fitted module Item";function isNonOutfittingSlot(slotKey){return/^(paintjob|shipname\d+|shipid\d+|bobble\d+|decal\d+|shipkit.+|weaponcolour|enginecolour|vesselvoice|shipcockpit|stringlights)$/i.test(slotKey)}function isCargoHatchSlot(slotKey){return slotKey.toLowerCase()==="cargohatch"}function isBuiltInHullModule(module){return isCargoHatchSlot(module.Slot)&&module.Item.toLowerCase().startsWith("modularcargobaydoor")}function cloneLoadoutModule(module){return{Slot:module.Slot,Item:module.Item,...module.On===void 0?{}:{On:module.On},...module.Priority===void 0?{}:{Priority:module.Priority},...module.Health===void 0?{}:{Health:module.Health},...module.Value===void 0?{}:{Value:module.Value},...module.Engineering===void 0?{}:{Engineering:{BlueprintName:module.Engineering.BlueprintName,Level:module.Engineering.Level,Quality:module.Engineering.Quality,...module.Engineering.ExperimentalEffect===void 0?{}:{ExperimentalEffect:module.Engineering.ExperimentalEffect},...module.Engineering.ExperimentalEffect_Localised===void 0?{}:{ExperimentalEffect_Localised:module.Engineering.ExperimentalEffect_Localised},...module.Engineering.Modifiers===void 0?{}:{Modifiers:module.Engineering.Modifiers.map(modifier=>({...modifier}))}}}}}function matchingKeyIn(keyed,slotKey){if(keyed.has(slotKey))return slotKey;const wanted=slotKey.toLowerCase();for(const key of keyed.keys()){if(key.toLowerCase()===wanted)return key}return null}function ownKeyIn(keyed,canonicalKey){return matchingKeyIn(keyed,canonicalKey)??(keyed.size>0&&[...keyed.keys()].every(key=>key===key.toLowerCase())?canonicalKey.toLowerCase():canonicalKey)}function orderBySlotLayout(values,layout,slotOf){const order=new Map(layout.map((slot,index)=>[slot.key.toLowerCase(),index]));return[...values].sort((left,right)=>(order.get(slotOf(left).toLowerCase())??Number.MAX_SAFE_INTEGER)-(order.get(slotOf(right).toLowerCase())??Number.MAX_SAFE_INTEGER))}function cloneModuleStats(module){try{return deepFreeze(structuredClone(module))}catch(error){if(!(error instanceof Error&&error.name==="DataCloneError"))throw error;return deepFreeze({...module,...module.restrictedToShips===void 0?{}:{restrictedToShips:[...module.restrictedToShips]},...module.limitIncrease===void 0?{}:{limitIncrease:{...module.limitIncrease}},...module.damageDistribution===void 0?{}:{damageDistribution:{...module.damageDistribution}},...module.damageComponents===void 0?{}:{damageComponents:{...module.damageComponents,...module.damageComponents.unclassified===void 0?{}:{unclassified:[...module.damageComponents.unclassified]}}},...module.projectileRange===void 0?{}:{projectileRange:{...module.projectileRange}}})}}var GUARDIAN_WEAPON_GROUPS=/* @__PURE__ */new Set(["guardianGauss","guardianPlasma","guardianShard"]);function missingBaseLabels(stats,base,features,experimental){const contributions=[...features,...experimental??[]];return[...new Set(contributions.map(contribution=>contribution.label).filter(label=>{if(base[label]!==void 0)return false;return fieldForLabel(label,stats)===null}))]}function recipeSignature(blueprintSymbol){const blueprint=getBlueprint(blueprintSymbol);if(!blueprint)return null;const grades=Object.entries(blueprint.grades).map(([grade,{features:features}])=>`${grade}:${features.map(feature=>`${feature.label}/${feature.method??""}`).sort().join(",")}`).sort().join(";");return`${blueprint.name.toLowerCase()}|${grades}`}var isGenericSpelling=blueprintSymbol=>blueprintSymbol.toLowerCase().startsWith("misc_");function isSoldWithBlueprint(item,wanted){return getPreEngineeredVariants(item).some(variant=>variant.acquisition==="mercenary"&&variant.blueprintSymbol.toLowerCase()===wanted)}function blueprintRoutesFor(item){const routes=/* @__PURE__ */new Map;for(const blueprintSymbol of getBlueprintsForModule(item))routes.set(blueprintSymbol,"ordinary");for(const variant of getPreEngineeredVariants(item)){if(variant.acquisition==="mercenary"&&!routes.has(variant.blueprintSymbol)){routes.set(variant.blueprintSymbol,"mercenary")}}return routes}function blueprintAvailableFor(item,blueprintSymbol){const offered=getBlueprintsForModule(item);const asWritten=normalizeKey(blueprintSymbol,"ShipLoadout.applyBlueprint: blueprintSymbol");const resolved=resolveBlueprintForModule(item,blueprintSymbol).trim();const wanted=resolved.toLowerCase();if(offered.some(id=>id.toLowerCase()===wanted))return true;if(isSoldWithBlueprint(item,wanted)||isSoldWithBlueprint(item,asWritten))return true;if(!isGenericSpelling(wanted))return false;const signature=recipeSignature(resolved);if(signature===null)return false;return offered.some(id=>recipeSignature(id)===signature&&!isGenericSpelling(id))}function experimentalAvailableFor(item,experimentalEffectSymbol){const wanted=normalizeKey(experimentalEffectSymbol,"ShipLoadout.applyBlueprint: options.experimentalEffectSymbol");return getExperimentalsForModule(item).some(id=>id.toLowerCase()===wanted)}function primitiveLabelFor(stats,label){if(label==="MaximumRange"&&stats.maximumRange!==void 0)return"Range";if(label==="DamageFalloffRange"&&stats.falloffRange!==void 0){return"FalloffRange"}if(label==="Range"&&stats.scannerRange!==void 0)return"ScannerRange";if(label==="DSS_PatchRadius")return"ProbeRadius";if(label==="FuelScoopRate")return"RefuelRate";if(label==="EnergyPerRegen"&&stats.shieldRegenRate!==void 0){return"DistributorDraw"}return label}function primitiveEngineeringInputsFor(stats,grade,experimental){const canonicalGrade={...grade,features:grade.features.map(feature=>{const label=primitiveLabelFor(stats,feature.label);return label===feature.label?feature:{...feature,label:label}})};if(!experimental)return{grade:canonicalGrade};return{grade:canonicalGrade,experimental:{...experimental,modifiers:experimental.modifiers.map(modifier=>{const label=primitiveLabelFor(stats,modifier.label);return label===modifier.label?modifier:{...modifier,label:label}})}}}function matchesCalculatedModifiers(captured,calculated){if(!captured||captured.length!==calculated.length)return false;const byLabel=new Map(captured.map(modifier=>[modifier.Label.trim().toLowerCase(),modifier]));if(byLabel.size!==captured.length)return false;return calculated.every(expected=>{const actual=byLabel.get(expected.Label.trim().toLowerCase());if(!actual)return false;if(expected.Value!==void 0){return actual.Value!==void 0&&Math.abs(actual.Value-expected.Value)<=1e-5*Math.max(1,Math.abs(expected.Value))}return actual.ValueStr===expected.ValueStr})}function ordinaryEngineeringProof(item,engineering,experimental){const recipe=resolveBlueprintForModule(item,engineering.BlueprintName);const fixedCandidate=getPreEngineeredVariants(item).some(candidate=>candidate.acquisition!=="mercenary"&&candidate.blueprintSymbol.trim().toLowerCase()===recipe.trim().toLowerCase());if(!fixedCandidate)return"notFixedCandidate";const grade=getBlueprintGrade(recipe,engineering.Level);const quality=engineering.Quality;const stock=builtInModuleBySymbol(item,FITTED_ITEM);if(!stock||!grade||experimental===null||!Number.isFinite(quality)||quality<0||quality>1){return"unproven"}const current=primitiveEngineeringInputsFor(stock,grade,experimental);if(missingBaseLabels(stock,baseStats(stock),current.grade.features,current.experimental?.modifiers).length>0){return"unproven"}const calculated=journalModifiersFor(stock,computeModifiers(baseStats(stock),current.grade,quality,current.experimental));const damageDistribution=current.experimental?.damageDistribution??current.grade.damageDistribution;if(damageDistribution){for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];if(value===void 0)continue;const label=labelsForDamageType(type)[0];if(label===void 0)continue;calculated.push({Label:label,Value:value*scaleForLabel(label),OriginalValue:(stock.damageDistribution?.[type]??0)*scaleForLabel(label)})}}return matchesCalculatedModifiers(engineering.Modifiers,calculated)?"proven":"unproven"}var round6=value=>{const rounded=Math.round(value*1e6)/1e6;return Object.is(rounded,-0)?0:rounded};function float32FiringCycle(interval,burstRounds,burstRateOfFire){if(interval<=0)return void 0;const withinBurst=burstRounds>1?Math.fround(Math.fround(burstRounds-1)/Math.fround(burstRateOfFire)):0;const cycle=Math.fround(withinBurst+Math.fround(interval));return cycle>0?cycle:void 0}function float32RateOfFire(interval,burstRounds,burstRateOfFire){const cycle=float32FiringCycle(interval,burstRounds,burstRateOfFire);return cycle===void 0?void 0:Math.fround(Math.fround(burstRounds)/cycle)}function float32DamagePerSecond(damage,rounds,rate,burstRounds,cycle){if(cycle!==void 0&&(rounds!==1||burstRounds!==1)){const damagePerCycle=Math.fround(Math.fround(Math.fround(damage)*Math.fround(rounds))*Math.fround(burstRounds));return Math.fround(damagePerCycle/cycle)}return Math.fround(Math.fround(Math.fround(damage)*Math.fround(rounds))*Math.fround(rate))}var JOURNAL_MODIFIER_ORDER=["CargoCapacity","GuardianModuleResistance","Mass","Integrity","PowerDraw","BootTime","PowerCapacity","HeatEfficiency","FSDOptimalMass","MaxFuelPerJump","FSDHeatRate","EngineOptimalMass","EngineOptPerformance","EngineHeatRate","ShieldGenOptimalMass","ShieldGenStrength","DamagePerSecond","Damage","DistributorDraw","ThermalLoad","ArmourPenetration","MaximumRange","ShotSpeed","RateOfFire","DamageType","$Kinetic;","$Thermal;","$Explosive;","$Absolute;","AmmoClipSize","AmmoMaximum","ReloadTime","Jitter","DamageFalloffRange","DefenceModifierShieldMultiplier","DefenceModifierHealthMultiplier","DefenceModifierHealthAddition","DefenceModifierShieldAddition","RegenRate","BrokenRegenRate","EnergyPerRegen","KineticResistance","ThermicResistance","ExplosiveResistance","CausticResistance","DamageProtection","ModuleDefenceAbsorption","WeaponsCapacity","WeaponsRecharge","EnginesCapacity","EnginesRecharge","SystemsCapacity","SystemsRecharge","ShieldBankSpinUp","ShieldBankDuration","ShieldBankReinforcement","ShieldBankHeat","FSDInterdictorRange","FSDInterdictorFacingLimit","SensorTargetScanAngle","MaxAngle","ScannerTimeToScan","Range","DSS_PatchRadius","FuelScoopRate","FuelCapacity"];var JOURNAL_MODIFIER_RANK=new Map(JOURNAL_MODIFIER_ORDER.map((label,index)=>[label,index]));function sortJournalModifiers(modifiers){return modifiers.map((modifier,index)=>({modifier:modifier,index:index})).sort((a,b)=>(JOURNAL_MODIFIER_RANK.get(a.modifier.Label)??JOURNAL_MODIFIER_ORDER.length)-(JOURNAL_MODIFIER_RANK.get(b.modifier.Label)??JOURNAL_MODIFIER_ORDER.length)||a.index-b.index).map(({modifier:modifier})=>modifier)}function journalModifiersFor(stats,modifiers){const weapon=stats.damage!==void 0;const valueFor=(label,fallback)=>{const modifier=modifiers.find(candidate=>candidate.Label===label);return(modifier&&preciseModifierValue(modifier))??Math.fround(fallback)};const burstTouched=["BurstInterval","BurstSize","BurstRateOfFire"].some(label=>modifiers.some(modifier=>modifier.Label===label));const damageTouched=modifiers.some(modifier=>modifier.Label==="Damage");const rateTouched=burstTouched||modifiers.some(modifier=>modifier.Label==="RateOfFire");let damagePerSecond;let derivedRate;if(weapon&&(damageTouched||rateTouched)){const continuous=stats.burstInterval===void 0&&stats.rateOfFire===void 0;const baseDamage=Math.fround(stats.damage);const effectiveDamage=valueFor("Damage",stats.damage);if(continuous){damagePerSecond={Label:"DamagePerSecond",Value:round6(effectiveDamage),OriginalValue:round6(baseDamage)}}else{const burstRounds=valueFor("BurstSize",stats.burstRounds??1);const burstRate=valueFor("BurstRateOfFire",stats.burstRateOfFire??1);const baseBurstRounds=Math.fround(stats.burstRounds??1);const baseBurstRate=Math.fround(stats.burstRateOfFire??1);const baseInterval=stats.burstInterval===void 0?void 0:Math.fround(stats.burstInterval);const baseCycle=baseInterval===void 0?void 0:float32FiringCycle(baseInterval,baseBurstRounds,baseBurstRate);const baseRate=baseInterval!==void 0?float32RateOfFire(baseInterval,baseBurstRounds,baseBurstRate):stats.rateOfFire===void 0?void 0:Math.fround(stats.rateOfFire);const rateModifier=modifiers.find(modifier=>modifier.Label==="RateOfFire");const effectiveRate=rateModifier&&preciseModifierValue(rateModifier);const effectiveInterval=valueFor("BurstInterval",stats.burstInterval??0);const effectiveCycle=effectiveRate===void 0?float32FiringCycle(effectiveInterval,burstRounds,burstRate):void 0;const rate=effectiveRate??(effectiveCycle===void 0?void 0:Math.fround(Math.fround(burstRounds)/effectiveCycle));if(baseRate!==void 0&&rate!==void 0){const stockRounds=Math.fround(stats.roundsPerShot??1);const effectiveRounds=Math.fround(modifiers.find(modifier=>modifier.Label==="Rounds"||modifier.Label==="RoundsPerShot")?.Value??stockRounds);damagePerSecond={Label:"DamagePerSecond",Value:round6(float32DamagePerSecond(effectiveDamage,effectiveRounds,rate,burstRounds,effectiveCycle)),OriginalValue:round6(float32DamagePerSecond(baseDamage,stockRounds,baseRate,baseBurstRounds,baseCycle))};if(burstTouched){derivedRate={Label:"RateOfFire",Value:round6(rate),OriginalValue:round6(baseRate)}}}}}const result=[];for(const modifier of modifiers){const label=modifier.Label;if(weapon&&["BurstInterval","BurstSize","BurstRateOfFire"].includes(label))continue;if(weapon&&label==="Damage"&&stats.rateOfFire===void 0)continue;let journalLabel=label;if(label==="Range"&&stats.maximumRange!==void 0)journalLabel="MaximumRange";else if(label==="FalloffRange"&&stats.falloffRange!==void 0){journalLabel="DamageFalloffRange"}else if(label==="ScannerRange"&&stats.scannerRange!==void 0){journalLabel="Range"}else if(label==="ProbeRadius")journalLabel="DSS_PatchRadius";else if(label==="RefuelRate")journalLabel="FuelScoopRate";else if(label==="DistributorDraw"&&stats.shieldRegenRate!==void 0){journalLabel="EnergyPerRegen"}result.push(journalLabel===label?modifier:{...modifier,Label:journalLabel})}if(damagePerSecond)result.push(damagePerSecond);if(derivedRate){const direct=result.findIndex(modifier=>modifier.Label==="RateOfFire");if(direct>=0)result[direct]=derivedRate;else result.push(derivedRate)}return sortJournalModifiers(result)}function isFinalGuardianWeaponEngineering(item,blueprint){const group=getEngineeringGroup(item);if(group===null||!GUARDIAN_WEAPON_GROUPS.has(group))return false;const resolved=resolveBlueprintForModule(item,blueprint);return getBlueprint(resolved)!==null&&!blueprintAvailableFor(item,blueprint)}function engineerableBase(item,statsOverride){const stats=statsOverride??builtInModuleBySymbol(item,FITTED_ITEM);if(!stats||stats.engineeringLocked)return null;return{stats:stats,base:baseStats(stats)}}function availableBlueprintsFor(item,statsOverride){const engineerable=engineerableBase(item,statsOverride);if(!engineerable)return[];const{stats:stats,base:base}=engineerable;const available=[];for(const[blueprintSymbol,route]of blueprintRoutesFor(item)){const blueprint=BLUEPRINTS[blueprintSymbol];if(!blueprint)continue;const grades=Object.entries(blueprint.grades).filter(([,grade])=>missingBaseLabels(stats,base,grade.features).length===0).map(([grade])=>Number(grade)).filter(Number.isFinite).sort((a,b)=>a-b);if(grades.length>0)available.push({blueprintSymbol:blueprintSymbol,grades:grades,route:route})}return available}function availableExperimentalsFor(item,statsOverride){const engineerable=engineerableBase(item,statsOverride);if(!engineerable)return[];const{stats:stats,base:base}=engineerable;return getExperimentalsForModule(item).filter(experimentalEffectSymbol=>{const effect=EXPERIMENTAL_EFFECTS[experimentalEffectSymbol];return effect!==void 0&&missingBaseLabels(stats,base,effect.modifiers).length===0})}var MAX_ENGINEERING_GRADE=5;function modifiersWithExperimental(variant,experimental){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);const effectName=experimental===void 0?variant.experimentalEffectSymbol:experimental;if(!module||!variant.modifiers?.length&&effectName==null)return null;const effect=effectName==null?void 0:getExperimentalEffect(effectName);if(effectName!==null&&effectName!==void 0&&!effect)return null;return computeModifiers(baseStats(module),fixedModifierFeatures(variant.modifiers??[]),1,effect??void 0)}function getPreEngineeredModifiers(variant){return modifiersWithExperimental(variant)??[]}function journalModifiersWithExperimental(variant,experimental){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);if(!module)return[];const modifiers=journalModifiersFor(module,modifiersWithExperimental(variant,experimental)??[]);const effectName=experimental===void 0?variant.experimentalEffectSymbol:experimental;const damageDistribution=effectName?getExperimentalEffect(effectName)?.damageDistribution:void 0;if(!damageDistribution)return modifiers;for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];const label=labelsForDamageType(type)[0];if(value===void 0||label===void 0)continue;modifiers.push({Label:label,Value:value*scaleForLabel(label),OriginalValue:(module.damageDistribution?.[type]??0)*scaleForLabel(label)})}return modifiers}function getPreEngineeredJournalModifiers(variant){return journalModifiersWithExperimental(variant)}function sameJournalNumber(actual,expected){return Math.abs(actual-expected)<=Math.max(1e-5,Math.abs(expected)*1e-6)}function modifierKey(modifier,module){return fieldForLabel(modifier.Label,module)??`label:${normalizeKey(modifier.Label,"identifyPreEngineeredVariant: module.Engineering.Modifiers[].Label")}`}function sameModifier(actual,expected){if(expected.Value!==void 0){return actual.Value!==void 0&&sameJournalNumber(actual.Value,expected.Value)}return expected.ValueStr!==void 0&&actual.ValueStr!==void 0}function matchesModifierSignature(actualByKey,expected,module){let matched=0;for(const predicted of expected){const actual=actualByKey.get(modifierKey(predicted,module));if(!actual)continue;if(!sameModifier(actual,predicted))return false;matched++}return matched>=Math.max(1,expected.length-1)}function identifyPreEngineeredVariant(module){const engineering=module.Engineering;if(!engineering)return null;requireStringIfPresent(module.Item,"identifyPreEngineeredVariant: module.Item");const stock=getModuleBySymbol(module.Item,ALL_MODULES);if(!stock)return null;const capturedBlueprint=normalizeKey(engineering.BlueprintName,"identifyPreEngineeredVariant: module.Engineering.BlueprintName");const variants=getPreEngineeredVariants(module.Item);const blueprintMatches=variants.filter(candidate=>candidate.blueprintSymbol.toLowerCase()===capturedBlueprint);const blueprintMatch=blueprintMatches.length===1?blueprintMatches[0]:null;const capturedGrade=engineering.Level;if(blueprintMatch?.acquisition==="mercenary"&&Number.isInteger(capturedGrade)&&capturedGrade>=blueprintMatch.grade&&capturedGrade<=MAX_ENGINEERING_GRADE){return blueprintMatch}if(engineering.Modifiers===void 0){const capturedExperimental=normalizeKey(engineering.ExperimentalEffect,"identifyPreEngineeredVariant: module.Engineering.ExperimentalEffect");const identityMatches=blueprintMatches.filter(candidate=>candidate.engineeringLocked===true&&candidate.grade===capturedGrade&&(candidate.experimentalEffectSymbol===void 0?capturedExperimental===void 0&&engineering.ExperimentalEffect_Localised===void 0:candidate.experimentalEffectSymbol.toLowerCase()===capturedExperimental));return identityMatches.length===1?identityMatches[0]:null}if(!engineering.Modifiers?.length)return null;const actualByKey=/* @__PURE__ */new Map;for(const modifier of engineering.Modifiers){actualByKey.set(modifierKey(modifier,stock),modifier)}requireStringIfPresent(engineering.ExperimentalEffect,"identifyPreEngineeredVariant: module.Engineering.ExperimentalEffect");const matches=[];for(const candidate of variants){if(!candidate.modifiers?.length)continue;if(candidate.grade!==engineering.Level)continue;if(candidate.acquisition==="eventReward"&&(engineering.ExperimentalEffect!==void 0||engineering.ExperimentalEffect_Localised!==void 0||capturedBlueprint!==candidate.blueprintSymbol.toLowerCase())){continue}const primitive=modifiersWithExperimental(candidate,engineering.ExperimentalEffect??null);if(!primitive?.length)continue;const matched=matchesModifierSignature(actualByKey,primitive,stock)||matchesModifierSignature(actualByKey,journalModifiersWithExperimental(candidate,engineering.ExperimentalEffect??null),stock);if(matched)matches.push(candidate)}return matches.length===1?matches[0]:null}function unresolvedModifiers(variant){const resolved=new Set(getPreEngineeredModifiers(variant).map(modifier=>modifier.Label));return(variant.modifiers??[]).map(modifier=>modifier.label).filter(label=>!resolved.has(label))}function getPreEngineeredStats(variant){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);if(!module)return null;if(!variant.modifiers?.length&&!variant.engineeringLocked&&variant.experimentalEffectSymbol===void 0)return{...module};const modifiers=variant.modifiers??[];const resolved={...module,...variant.engineeringLocked?{engineeringLocked:true}:{}};for(const{Label:Label,Value:Value,ValueStr:ValueStr}of getPreEngineeredModifiers(variant)){const field=fieldForLabel(Label,module);if(field&&field!=="damageDistribution"&&Value!==void 0){Object.assign(resolved,{[field]:Value/scaleForLabel(Label)})}else if(field&&ValueStr!==void 0&&capabilityValueForLabel(Label)!==null){Object.assign(resolved,{[field]:true})}}const experimentalDamageDistribution=variant.experimentalEffectSymbol?getExperimentalEffect(variant.experimentalEffectSymbol)?.damageDistribution:void 0;if(experimentalDamageDistribution){resolved.damageDistribution={...experimentalDamageDistribution};delete resolved.damageComponents}if(resolved.rateOfFire!==void 0&&!modifiers.some(m=>m.label==="RateOfFire")&&modifiers.some(m=>m.label==="BurstSize"||m.label==="BurstRateOfFire"||m.label==="BurstInterval")){const rate=combinedRateOfFire(resolved);if(rate!==void 0)resolved.rateOfFire=rate}if(module.damageComponents&&!experimentalDamageDistribution){resolved.damageComponents=scaleDamageComponents(module.damageComponents,module.damage,resolved.damage)}return resolved}export{FITTED_ITEM,availableBlueprintsFor,availableExperimentalsFor,blueprintAvailableFor,blueprintRoutesFor,cloneLoadoutModule,cloneModuleStats,experimentalAvailableFor,getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,isBuiltInHullModule,isCargoHatchSlot,isFinalGuardianWeaponEngineering,isNonOutfittingSlot,journalModifiersFor,matchingKeyIn,missingBaseLabels,orderBySlotLayout,ordinaryEngineeringProof,ownKeyIn,primitiveEngineeringInputsFor,scaleDamageComponents,unresolvedModifiers};//# sourceMappingURL=chunk-GZYPQIO2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/internal/damage-components.ts","../src/ships/internal/fixed-modifier-features.ts","../src/ships/internal/loadout-state.ts","../src/ships/internal/loadout-engineering.ts","../src/ships/pre-engineered-stats.ts"],"names":["combinedRateOfFire","getPreEngineeredVariants","builtInModuleBySymbol","getModuleBySymbol","ALL_MODULES","EXPERIMENTAL_EFFECTS","getExperimentalEffect","fieldForLabel","baseStats","computeModifiers","labelsForDamageType","scaleForLabel","preciseModifierValue","capabilityValueForLabel","resolveBlueprintForModule","getBlueprintsForModule","getExperimentalsForModule","getEngineeringGroup","getBlueprintGrade","getBlueprint","BLUEPRINTS","normalizeKey","requireStringIfPresent","deepFreeze","scaleDamageComponents","components","baseDamage","effectiveDamage","scale","kinetic","thermal","explosive","absolute","antiXeno","unclassified","map","value","fixedModifierFeatures","modifiers","modifier","label","method","min","max","FITTED_ITEM","isNonOutfittingSlot","slotKey","test","isCargoHatchSlot","toLowerCase","isBuiltInHullModule","module","Slot","Item","startsWith","cloneLoadoutModule","On","Priority","Health","Value","Engineering","BlueprintName","Level","Quality","ExperimentalEffect","ExperimentalEffect_Localised","Modifiers","matchingKeyIn","keyed","has","wanted","key","keys","ownKeyIn","canonicalKey","size","every","orderBySlotLayout","values","layout","slotOf","order","Map","slot","index","sort","left","right","get","Number","MAX_SAFE_INTEGER","cloneModuleStats","structuredClone","error","Error","name","restrictedToShips","limitIncrease","damageDistribution","damageComponents","projectileRange","GUARDIAN_WEAPON_GROUPS","Set","missingBaseLabels","stats","base","features","experimental","contributions","contribution","filter","recipeSignature","blueprintSymbol","blueprint","grades","Object","entries","grade","feature","join","isGenericSpelling","isSoldWithBlueprint","item","some","variant","acquisition","blueprintRoutesFor","routes","set","blueprintAvailableFor","offered","asWritten","resolved","trim","id","signature","experimentalAvailableFor","experimentalEffectSymbol","primitiveLabelFor","maximumRange","falloffRange","scannerRange","shieldRegenRate","primitiveEngineeringInputsFor","canonicalGrade","matchesCalculatedModifiers","captured","calculated","length","byLabel","Label","expected","actual","Math","abs","ValueStr","ordinaryEngineeringProof","engineering","recipe","fixedCandidate","candidate","quality","stock","isFinite","current","journalModifiersFor","type","push","OriginalValue","round6","rounded","round","is","float32FiringCycle","interval","burstRounds","burstRateOfFire","withinBurst","fround","cycle","float32RateOfFire","float32DamagePerSecond","damage","rounds","rate","damagePerCycle","JOURNAL_MODIFIER_ORDER","JOURNAL_MODIFIER_RANK","sortJournalModifiers","a","b","weapon","valueFor","fallback","find","burstTouched","damageTouched","rateTouched","damagePerSecond","derivedRate","continuous","burstInterval","rateOfFire","burstRate","baseBurstRounds","baseBurstRate","baseInterval","baseCycle","baseRate","rateModifier","effectiveRate","effectiveInterval","effectiveCycle","stockRounds","roundsPerShot","effectiveRounds","result","includes","journalLabel","direct","findIndex","isFinalGuardianWeaponEngineering","group","engineerableBase","statsOverride","engineeringLocked","availableBlueprintsFor","engineerable","available","route","availableExperimentalsFor","effect","MAX_ENGINEERING_GRADE","modifiersWithExperimental","symbol","effectName","getPreEngineeredModifiers","journalModifiersWithExperimental","getPreEngineeredJournalModifiers","sameJournalNumber","modifierKey","sameModifier","matchesModifierSignature","actualByKey","matched","predicted","identifyPreEngineeredVariant","capturedBlueprint","variants","blueprintMatches","blueprintMatch","capturedGrade","isInteger","capturedExperimental","identityMatches","matches","primitive","unresolvedModifiers","getPreEngineeredStats","field","assign","experimentalDamageDistribution","m"],"mappings":"O,g0BAWO,SAASwB,sBACZC,WACAC,WACAC,iBAEA,MAAMC,MACFF,kBAAe,GAAaA,aAAe,GAAKC,uBAAoB,EAC9DA,gBAAkBD,WAClB,EACV,MAAO,IACCD,WAAWI,eAAY,EAAY,CAAA,EAAK,CAAEA,QAASJ,WAAWI,QAAUD,UACxEH,WAAWK,eAAY,EAAY,CAAA,EAAK,CAAEA,QAASL,WAAWK,QAAUF,UACxEH,WAAWM,iBAAc,EAAY,CAAA,EAAK,CAAEA,UAAWN,WAAWM,UAAYH,UAC9EH,WAAWO,gBAAa,EAAY,CAAA,EAAK,CAAEA,SAAUP,WAAWO,SAAWJ,UAC3EH,WAAWQ,gBAAa,EAAY,CAAA,EAAK,CAAEA,SAAUR,WAAWQ,SAAWL,UAC3EH,WAAWS,oBAAiB,EAC1B,CAAA,EACA,CAAEA,aAAcT,WAAWS,aAAaC,IAAKC,OAAUA,MAAQR,QAE7E,CCdO,SAASS,sBACZC,WAEA,OAAOA,UAAUH,IAAKI,WAAA,CAClBC,MAAOD,SAASC,MAChBC,OAAQF,SAASE,OACjBC,IAAKH,SAASH,MACdO,IAAKJ,SAASH,QAEtB,CCZO,IAAMQ,YAAc,kCAGpB,SAASC,oBAAoBC,SAChC,MAAO,kIAAkIC,KACrID,QAER,CAGO,SAASE,iBAAiBF,SAC7B,OAAOA,QAAQG,gBAAkB,YACrC,CAGO,SAASC,oBAAoBC,QAChC,OACIH,iBAAiBG,OAAOC,OAASD,OAAOE,KAAKJ,cAAcK,WAAW,sBAE9E,CAGO,SAASC,mBAAmBJ,QAC/B,MAAO,CACHC,KAAMD,OAAOC,KACbC,KAAMF,OAAOE,QACTF,OAAOK,UAAO,EAAY,CAAA,EAAK,CAAEA,GAAIL,OAAOK,OAC5CL,OAAOM,gBAAa,EAAY,CAAA,EAAK,CAAEA,SAAUN,OAAOM,aACxDN,OAAOO,cAAW,EAAY,CAAA,EAAK,CAAEA,OAAQP,OAAOO,WACpDP,OAAOQ,aAAU,EAAY,CAAA,EAAK,CAAEA,MAAOR,OAAOQ,UAClDR,OAAOS,mBAAgB,EACrB,CAAA,EACA,CACIA,YAAa,CACTC,cAAeV,OAAOS,YAAYC,cAClCC,MAAOX,OAAOS,YAAYE,MAC1BC,QAASZ,OAAOS,YAAYG,WACxBZ,OAAOS,YAAYI,0BAAuB,EACxC,CAAA,EACA,CAAEA,mBAAoBb,OAAOS,YAAYI,uBAC3Cb,OAAOS,YAAYK,oCAAiC,EAClD,CAAA,EACA,CACIA,6BACId,OAAOS,YAAYK,iCAE7Bd,OAAOS,YAAYM,iBAAc,EAC/B,CAAA,EACA,CACIA,UAAWf,OAAOS,YAAYM,UAAU/B,IAAKI,WAAA,IACtCA,eAMvC,CAaO,SAAS4B,cAAcC,MAAqCtB,SAC/D,GAAIsB,MAAMC,IAAIvB,SAAU,OAAOA,QAC/B,MAAMwB,OAASxB,QAAQG,cACvB,IAAA,MAAWsB,OAAOH,MAAMI,OAAQ,CAC5B,GAAID,IAAItB,gBAAkBqB,OAAQ,OAAOC,GAC7C,CACA,OAAO,IACX,CAGO,SAASE,SAASL,MAAqCM,cAC1D,OACIP,cAAcC,MAAOM,gBACpBN,MAAMO,KAAO,GAAK,IAAIP,MAAMI,QAAQI,MAAOL,KAAQA,MAAQA,IAAItB,eAC1DyB,aAAazB,cACbyB,aAEd,CAGO,SAASG,kBACZC,OACAC,OACAC,QAEA,MAAMC,MAAQ,IAAIC,IAAIH,OAAO5C,IAAI,CAACgD,KAAMC,QAAU,CAACD,KAAKZ,IAAItB,cAAemC,SAC3E,MAAO,IAAIN,QAAQO,KACf,CAACC,KAAMC,SACFN,MAAMO,IAAIR,OAAOM,MAAMrC,gBAAkBwC,OAAOC,mBAChDT,MAAMO,IAAIR,OAAOO,OAAOtC,gBAAkBwC,OAAOC,kBAE9D,CAGO,SAASC,iBAAiBxC,QAC7B,IACI,OAAO5B,WAAWqE,gBAAgBzC,QACtC,CAAA,MAAS0C,OACL,KAAMA,iBAAiBC,OAASD,MAAME,OAAS,kBAAmB,MAAMF,MACxE,OAAOtE,WAAW,IACX4B,UACCA,OAAO6C,yBAAsB,EAC3B,CAAA,EACA,CAAEA,kBAAmB,IAAI7C,OAAO6C,uBAClC7C,OAAO8C,qBAAkB,EACvB,CAAA,EACA,CAAEA,cAAe,IAAK9C,OAAO8C,mBAC/B9C,OAAO+C,0BAAuB,EAC5B,CAAA,EACA,CAAEA,mBAAoB,IAAK/C,OAAO+C,wBACpC/C,OAAOgD,wBAAqB,EAC1B,CAAA,EACA,CACIA,iBAAkB,IACXhD,OAAOgD,oBACNhD,OAAOgD,iBAAiBjE,oBAAiB,EACvC,CAAA,EACA,CAAEA,aAAc,IAAIiB,OAAOgD,iBAAiBjE,oBAG5DiB,OAAOiD,uBAAoB,EACzB,CAAA,EACA,CAAEA,gBAAiB,IAAKjD,OAAOiD,mBAE7C,CACJ,CCpHA,IAAMC,sCAAA,IAAkDC,IAAI,CACxD,gBACA,iBACA,kBAeG,SAASC,kBACZC,MACAC,KACAC,SACAC,cAEA,MAAMC,cAAgB,IAAIF,YAAcC,cAAgB,IACxD,MAAO,IACA,IAAIL,IACHM,cACKzE,IAAK0E,cAAiBA,aAAarE,OACnCsE,OAAQtE,QACL,GAAIiE,KAAKjE,cAAW,EAAW,OAAO,MACtC,OAAOjC,cAAciC,MAAOgE,SAAW,QAI3D,CAeA,SAASO,gBAAgBC,iBACrB,MAAMC,UAAY9F,aAAa6F,iBAC/B,IAAKC,UAAW,OAAO,KACvB,MAAMC,OAASC,OAAOC,QAAQH,UAAUC,QACnC/E,IACG,EAAEkF,OAASX,sBACP,GAAGW,SAASX,SACPvE,IAAKmF,SAAY,GAAGA,QAAQ9E,SAAS8E,QAAQ7E,QAAU,MACvD4C,OACAkC,KAAK,QAEjBlC,OACAkC,KAAK,KACV,MAAO,GAAGN,UAAUlB,KAAK9C,iBAAiBiE,QAC9C,CAGA,IAAMM,kBAAqBR,iBACvBA,gBAAgB/D,cAAcK,WAAW,SA2B7C,SAASmE,oBAAoBC,KAAcpD,QACvC,OAAOrE,yBAAyByH,MAAMC,KACjCC,SACGA,QAAQC,cAAgB,aAAeD,QAAQZ,gBAAgB/D,gBAAkBqB,OAE7F,CASO,SAASwD,mBAAmBJ,MAC/B,MAAMK,sBAAA,IAAa7C,IACnB,IAAA,MAAW8B,mBAAmBjG,uBAAuB2G,MACjDK,OAAOC,IAAIhB,gBAAiB,YAChC,IAAA,MAAWY,WAAW3H,yBAAyByH,MAAO,CAClD,GAAIE,QAAQC,cAAgB,cAAgBE,OAAO1D,IAAIuD,QAAQZ,iBAAkB,CAC7Ee,OAAOC,IAAIJ,QAAQZ,gBAAiB,YACxC,CACJ,CACA,OAAOe,MACX,CA+DO,SAASE,sBAAsBP,KAAcV,iBAChD,MAAMkB,QAAUnH,uBAAuB2G,MACvC,MAAMS,UAAY9G,aAAa2F,gBAAiB,+CAChD,MAAMoB,SAAWtH,0BAA0B4G,KAAMV,iBAAiBqB,OAClE,MAAM/D,OAAS8D,SAASnF,cACxB,GAAIiF,QAAQP,KAAMW,IAAOA,GAAGrF,gBAAkBqB,QAAS,OAAO,KAE9D,GAAImD,oBAAoBC,KAAMpD,SAAWmD,oBAAoBC,KAAMS,WAAY,OAAO,KACtF,IAAKX,kBAAkBlD,QAAS,OAAO,MACvC,MAAMiE,UAAYxB,gBAAgBqB,UAClC,GAAIG,YAAc,KAAM,OAAO,MAE/B,OAAOL,QAAQP,KAAMW,IAAOvB,gBAAgBuB,MAAQC,YAAcf,kBAAkBc,IACxF,CAaO,SAASE,yBAAyBd,KAAce,0BACnD,MAAMnE,OAASjD,aACXoH,yBACA,gEAEJ,OAAOzH,0BAA0B0G,MAAMC,KAAMW,IAAOA,GAAGrF,gBAAkBqB,OAC7E,CAGA,SAASoE,kBAAkBlC,MAAyBhE,OAChD,GAAIA,QAAU,gBAAkBgE,MAAMmC,oBAAiB,EAAW,MAAO,QACzE,GAAInG,QAAU,sBAAwBgE,MAAMoC,oBAAiB,EAAW,CACpE,MAAO,cACX,CACA,GAAIpG,QAAU,SAAWgE,MAAMqC,oBAAiB,EAAW,MAAO,eAClE,GAAIrG,QAAU,kBAAmB,MAAO,cACxC,GAAIA,QAAU,gBAAiB,MAAO,aACtC,GAAIA,QAAU,kBAAoBgE,MAAMsC,uBAAoB,EAAW,CACnE,MAAO,iBACX,CACA,OAAOtG,KACX,CAYO,SAASuG,8BACZvC,MACAa,MACAV,cAEA,MAAMqC,eAAiB,IAChB3B,MACHX,SAAUW,MAAMX,SAASvE,IAAKmF,UAC1B,MAAM9E,MAAQkG,kBAAkBlC,MAAOc,QAAQ9E,OAC/C,OAAOA,QAAU8E,QAAQ9E,MAAQ8E,QAAU,IAAKA,QAAS9E,gBAGjE,IAAKmE,aAAc,MAAO,CAAEU,MAAO2B,gBACnC,MAAO,CACH3B,MAAO2B,eACPrC,aAAc,IACPA,aACHrE,UAAWqE,aAAarE,UAAUH,IAAKI,WACnC,MAAMC,MAAQkG,kBAAkBlC,MAAOjE,SAASC,OAChD,OAAOA,QAAUD,SAASC,MAAQD,SAAW,IAAKA,SAAUC,gBAI5E,CAGA,SAASyG,2BACLC,SACAC,YAEA,IAAKD,UAAYA,SAASE,SAAWD,WAAWC,OAAQ,OAAO,MAC/D,MAAMC,QAAU,IAAInE,IAChBgE,SAAS/G,IAAKI,UAAa,CAACA,SAAS+G,MAAMjB,OAAOpF,cAAeV,YAErE,GAAI8G,QAAQ1E,OAASuE,SAASE,OAAQ,OAAO,MAC7C,OAAOD,WAAWvE,MAAO2E,WACrB,MAAMC,OAASH,QAAQ7D,IAAI+D,SAASD,MAAMjB,OAAOpF,eACjD,IAAKuG,OAAQ,OAAO,MACpB,GAAID,SAAS5F,aAAU,EAAW,CAC9B,OACI6F,OAAO7F,aAAU,GACjB8F,KAAKC,IAAIF,OAAO7F,MAAQ4F,SAAS5F,QAC7B,KAAO8F,KAAK9G,IAAI,EAAG8G,KAAKC,IAAIH,SAAS5F,OAEjD,CACA,OAAO6F,OAAOG,WAAaJ,SAASI,UAE5C,CAYO,SAASC,yBACZlC,KACAmC,YACAlD,cAEA,MAAMmD,OAAShJ,0BAA0B4G,KAAMmC,YAAYhG,eAC3D,MAAMkG,eAAiB9J,yBAAyByH,MAAMC,KACjDqC,WACGA,UAAUnC,cAAgB,aAC1BmC,UAAUhD,gBAAgBqB,OAAOpF,gBAAkB6G,OAAOzB,OAAOpF,eAEzE,IAAK8G,eAAgB,MAAO,oBAE5B,MAAM1C,MAAQnG,kBAAkB4I,OAAQD,YAAY/F,OACpD,MAAMmG,QAAUJ,YAAY9F,QAC5B,MAAMmG,MAAQhK,sBAAsBwH,KAAM9E,aAC1C,IACKsH,QACA7C,OACDV,eAAiB,OAChBlB,OAAO0E,SAASF,UACjBA,QAAU,GACVA,QAAU,EACZ,CACE,MAAO,UACX,CAEA,MAAMG,QAAUrB,8BAA8BmB,MAAO7C,MAAOV,cAC5D,GACIJ,kBACI2D,MACA1J,UAAU0J,OACVE,QAAQ/C,MAAMX,SACd0D,QAAQzD,cAAcrE,WACxB8G,OAAS,EACb,CACE,MAAO,UACX,CAEA,MAAMD,WAAakB,oBACfH,MACAzJ,iBAAiBD,UAAU0J,OAAQE,QAAQ/C,MAAO4C,QAASG,QAAQzD,eAEvE,MAAMT,mBACFkE,QAAQzD,cAAcT,oBAAsBkE,QAAQ/C,MAAMnB,mBAC9D,GAAIA,mBAAoB,CACpB,IAAA,MAAWoE,OAAQ,CAAC,UAAW,UAAW,YAAa,YAAsB,CACzE,MAAMlI,MAAQ8D,mBAAmBoE,MACjC,GAAIlI,aAAU,EAAW,SACzB,MAAMI,MAAQ9B,oBAAoB4J,MAAM,GACxC,GAAI9H,aAAU,EAAW,SACzB2G,WAAWoB,KAAK,CACZjB,MAAO9G,MACPmB,MAAOvB,MAAQzB,cAAc6B,OAC7BgI,eAAgBN,MAAMhE,qBAAqBoE,OAAS,GAAK3J,cAAc6B,QAE/E,CACJ,CACA,OAAOyG,2BAA2BY,YAAY3F,UAAWiF,YAAc,SAAW,UACtF,CAGA,IAAMsB,OAAUrI,QACZ,MAAMsI,QAAUjB,KAAKkB,MAAMvI,MAAQ,KAAO,IAC1C,OAAO+E,OAAOyD,GAAGF,SAAS,GAAM,EAAIA,SAIxC,SAASG,mBACLC,SACAC,YACAC,iBAEA,GAAIF,UAAY,EAAG,YAAO,EAC1B,MAAMG,YACFF,YAAc,EACRtB,KAAKyB,OAAOzB,KAAKyB,OAAOH,YAAc,GAAKtB,KAAKyB,OAAOF,kBACvD,EACV,MAAMG,MAAQ1B,KAAKyB,OAAOD,YAAcxB,KAAKyB,OAAOJ,WACpD,OAAOK,MAAQ,EAAIA,WAAQ,CAC/B,CAGA,SAASC,kBACLN,SACAC,YACAC,iBAEA,MAAMG,MAAQN,mBAAmBC,SAAUC,YAAaC,iBACxD,OAAOG,aAAU,OAAY,EAAY1B,KAAKyB,OAAOzB,KAAKyB,OAAOH,aAAeI,MACpF,CAGA,SAASE,uBACLC,OACAC,OACAC,KACAT,YACAI,OAEA,GAAIA,aAAU,IAAcI,SAAW,GAAKR,cAAgB,GAAI,CAC5D,MAAMU,eAAiBhC,KAAKyB,OACxBzB,KAAKyB,OAAOzB,KAAKyB,OAAOI,QAAU7B,KAAKyB,OAAOK,SAAW9B,KAAKyB,OAAOH,cAEzE,OAAOtB,KAAKyB,OAAOO,eAAiBN,MACxC,CACA,OAAO1B,KAAKyB,OAAOzB,KAAKyB,OAAOzB,KAAKyB,OAAOI,QAAU7B,KAAKyB,OAAOK,SAAW9B,KAAKyB,OAAOM,MAC5F,CAEA,IAAME,uBAAyB,CAC3B,gBACA,2BACA,OACA,YACA,YACA,WACA,gBACA,iBACA,iBACA,iBACA,cACA,oBACA,uBACA,iBACA,uBACA,oBACA,kBACA,SACA,kBACA,cACA,oBACA,eACA,YACA,aACA,aACA,YACA,YACA,cACA,aACA,eACA,cACA,aACA,SACA,qBACA,kCACA,kCACA,gCACA,gCACA,YACA,kBACA,iBACA,oBACA,oBACA,sBACA,oBACA,mBACA,0BACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,qBACA,0BACA,iBACA,sBACA,4BACA,wBACA,WACA,oBACA,QACA,kBACA,gBACA,gBAGJ,IAAMC,sBAAqD,IAAIzG,IAC3DwG,uBAAuBvJ,IAAI,CAACK,MAAO4C,QAAU,CAAC5C,MAAO4C,SAIzD,SAASwG,qBAAqBtJ,WAC1B,OAAOA,UACFH,IAAI,CAACI,SAAU6C,SAAA,CAAa7C,kBAAU6C,eACtCC,KACG,CAACwG,EAAGC,KACCH,sBAAsBnG,IAAIqG,EAAEtJ,SAAS+G,QAAUoC,uBAAuBtC,SAClEuC,sBAAsBnG,IAAIsG,EAAEvJ,SAAS+G,QAClCoC,uBAAuBtC,SAAWyC,EAAEzG,MAAQ0G,EAAE1G,OAE7DjD,IAAI,EAAGI,qBAAeA,SAC/B,CAeO,SAAS8H,oBACZ7D,MACAlE,WAEA,MAAMyJ,OAASvF,MAAM8E,cAAW,EAChC,MAAMU,SAAW,CAACxJ,MAAeyJ,YAC7B,MAAM1J,SAAWD,UAAU4J,KAAMlC,WAAcA,UAAUV,QAAU9G,OACnE,OAAQD,UAAY3B,qBAAqB2B,YAAckH,KAAKyB,OAAOe,WAEvE,MAAME,aAAe,CAAC,gBAAiB,YAAa,mBAAmBxE,KAAMnF,OACzEF,UAAUqF,KAAMpF,UAAaA,SAAS+G,QAAU9G,QAEpD,MAAM4J,cAAgB9J,UAAUqF,KAAMpF,UAAaA,SAAS+G,QAAU,UACtE,MAAM+C,YACFF,cAAgB7J,UAAUqF,KAAMpF,UAAaA,SAAS+G,QAAU,cAEpE,IAAIgD,gBACJ,IAAIC,YACJ,GAAIR,SAAWK,eAAiBC,aAAc,CAC1C,MAAMG,WAAahG,MAAMiG,qBAAkB,GAAajG,MAAMkG,kBAAe,EAC7E,MAAMhL,WAAa+H,KAAKyB,OAAO1E,MAAM8E,QACrC,MAAM3J,gBAAkBqK,SAAS,SAAUxF,MAAM8E,QACjD,GAAIkB,WAAY,CACZF,gBAAkB,CACdhD,MAAO,kBACP3F,MAAO8G,OAAO9I,iBACd6I,cAAeC,OAAO/I,YAE9B,KAAO,CACH,MAAMqJ,YAAciB,SAAS,YAAaxF,MAAMuE,aAAe,GAC/D,MAAM4B,UAAYX,SAAS,kBAAmBxF,MAAMwE,iBAAmB,GACvE,MAAM4B,gBAAkBnD,KAAKyB,OAAO1E,MAAMuE,aAAe,GACzD,MAAM8B,cAAgBpD,KAAKyB,OAAO1E,MAAMwE,iBAAmB,GAC3D,MAAM8B,aACFtG,MAAMiG,qBAAkB,OAAY,EAAYhD,KAAKyB,OAAO1E,MAAMiG,eACtE,MAAMM,UACFD,oBAAiB,OACX,EACAjC,mBAAmBiC,aAAcF,gBAAiBC,eAC5D,MAAMG,SACFF,oBAAiB,EACX1B,kBAAkB0B,aAAcF,gBAAiBC,eACjDrG,MAAMkG,kBAAe,OACnB,EACAjD,KAAKyB,OAAO1E,MAAMkG,YAC9B,MAAMO,aAAe3K,UAAU4J,KAAM3J,UAAaA,SAAS+G,QAAU,cACrE,MAAM4D,cAAgBD,cAAgBrM,qBAAqBqM,cAC3D,MAAME,kBAAoBnB,SAAS,gBAAiBxF,MAAMiG,eAAiB,GAC3E,MAAMW,eACFF,qBAAkB,EACZrC,mBAAmBsC,kBAAmBpC,YAAa4B,gBACnD,EACV,MAAMnB,KACF0B,gBACCE,sBAAmB,OACd,EACA3D,KAAKyB,OAAOzB,KAAKyB,OAAOH,aAAeqC,iBACjD,GAAIJ,gBAAa,GAAaxB,YAAS,EAAW,CAC9C,MAAM6B,YAAc5D,KAAKyB,OAAO1E,MAAM8G,eAAiB,GACvD,MAAMC,gBAAkB9D,KAAKyB,OACzB5I,UAAU4J,KACL3J,UACGA,SAAS+G,QAAU,UAAY/G,SAAS+G,QAAU,kBACvD3F,OAAS0J,aAEhBf,gBAAkB,CACdhD,MAAO,kBACP3F,MAAO8G,OACHY,uBACI1J,gBACA4L,gBACA/B,KACAT,YACAqC,iBAGR5C,cAAeC,OACXY,uBACI3J,WACA2L,YACAL,SACAJ,gBACAG,aAIZ,GAAIZ,aAAc,CACdI,YAAc,CACVjD,MAAO,aACP3F,MAAO8G,OAAOe,MACdhB,cAAeC,OAAOuC,UAE9B,CACJ,CACJ,CACJ,CAEA,MAAMQ,OAAgC,GACtC,IAAA,MAAWjL,YAAYD,UAAW,CAC9B,MAAME,MAAQD,SAAS+G,MACvB,GAAIyC,QAAU,CAAC,gBAAiB,YAAa,mBAAmB0B,SAASjL,OAAQ,SACjF,GAAIuJ,QAAUvJ,QAAU,UAAYgE,MAAMkG,kBAAe,EAAW,SACpE,IAAIgB,aAAelL,MACnB,GAAIA,QAAU,SAAWgE,MAAMmC,oBAAiB,EAAW+E,aAAe,oBAAA,GACjElL,QAAU,gBAAkBgE,MAAMoC,oBAAiB,EAAW,CACnE8E,aAAe,oBACnB,MAAA,GAAWlL,QAAU,gBAAkBgE,MAAMqC,oBAAiB,EAAW,CACrE6E,aAAe,OACnB,MAAA,GAAWlL,QAAU,cAAekL,aAAe,uBAAA,GAC1ClL,QAAU,aAAckL,aAAe,qBAAA,GACvClL,QAAU,mBAAqBgE,MAAMsC,uBAAoB,EAAW,CACzE4E,aAAe,gBACnB,CACAF,OAAOjD,KAAKmD,eAAiBlL,MAAQD,SAAW,IAAKA,SAAU+G,MAAOoE,cAC1E,CACA,GAAIpB,gBAAiBkB,OAAOjD,KAAK+B,iBACjC,GAAIC,YAAa,CACb,MAAMoB,OAASH,OAAOI,UAAWrL,UAAaA,SAAS+G,QAAU,cACjE,GAAIqE,QAAU,EAAGH,OAAOG,QAAUpB,iBAC7BiB,OAAOjD,KAAKgC,YACrB,CACA,OAAOX,qBAAqB4B,OAChC,CAYO,SAASK,iCAAiCnG,KAAcT,WAC3D,MAAM6G,MAAQ7M,oBAAoByG,MAClC,GAAIoG,QAAU,OAASzH,uBAAuBhC,IAAIyJ,OAAQ,OAAO,MACjE,MAAM1F,SAAWtH,0BAA0B4G,KAAMT,WACjD,OAAO9F,aAAaiH,YAAc,OAASH,sBAAsBP,KAAMT,UAC3E,CAOA,SAAS8G,iBACLrG,KACAsG,eAEA,MAAMxH,MAAQwH,eAAiB9N,sBAAsBwH,KAAM9E,aAC3D,IAAK4D,OAASA,MAAMyH,kBAAmB,OAAO,KAC9C,MAAO,CAAEzH,YAAOC,KAAMjG,UAAUgG,OACpC,CAYO,SAAS0H,uBACZxG,KACAsG,eAEA,MAAMG,aAAeJ,iBAAiBrG,KAAMsG,eAC5C,IAAKG,aAAc,MAAO,GAC1B,MAAM3H,MAAEA,MAAAC,KAAOA,MAAS0H,aACxB,MAAMC,UAAkC,GACxC,IAAA,MAAYpH,gBAAiBqH,SAAUvG,mBAAmBJ,MAAO,CAC7D,MAAMT,UAAY7F,WAAW4F,iBAC7B,IAAKC,UAAW,SAChB,MAAMC,OAASC,OAAOC,QAAQH,UAAUC,QACnCJ,OAAO,EAAC,CAAGO,SAAWd,kBAAkBC,MAAOC,KAAMY,MAAMX,UAAU0C,SAAW,GAChFjH,IAAI,EAAEkF,SAAW5B,OAAO4B,QACxBP,OAAOrB,OAAO0E,UACd9E,KAAK,CAACwG,EAAGC,IAAMD,EAAIC,GACxB,GAAI5E,OAAOkC,OAAS,EAAGgF,UAAU7D,KAAK,CAAEvD,gCAAiBE,cAAQmH,aACrE,CACA,OAAOD,SACX,CAGO,SAASE,0BACZ5G,KACAsG,eAEA,MAAMG,aAAeJ,iBAAiBrG,KAAMsG,eAC5C,IAAKG,aAAc,MAAO,GAC1B,MAAM3H,MAAEA,MAAAC,KAAOA,MAAS0H,aACxB,OAAOnN,0BAA0B0G,MAAMZ,OAAQ2B,2BAC3C,MAAM8F,OAASlO,qBAAqBoI,0BACpC,OACI8F,cAAW,GAAahI,kBAAkBC,MAAOC,KAAM8H,OAAOjM,WAAW8G,SAAW,GAGhG,CCnrBA,IAAMoF,sBAAwB,EAG9B,SAASC,0BACL7G,QACAjB,cAEA,MAAMxD,OAAShD,kBAAkByH,QAAQ8G,OAAQtO,aACjD,MAAMuO,WAAahI,oBAAiB,EAAYiB,QAAQa,yBAA2B9B,aACnF,IAAKxD,SAAYyE,QAAQtF,WAAW8G,QAAUuF,YAAc,KAAO,OAAO,KAC1E,MAAMJ,OAASI,YAAc,UAAO,EAAYrO,sBAAsBqO,YACtE,GAAIA,aAAe,MAAQA,kBAAe,IAAcJ,OAAQ,OAAO,KACvE,OAAO9N,iBACHD,UAAU2C,QACVd,sBAAsBuF,QAAQtF,WAAa,IAC3C,EACAiM,aAAU,EAElB,CA2BO,SAASK,0BAA0BhH,SACtC,OAAO6G,0BAA0B7G,UAAY,EACjD,CAGA,SAASiH,iCACLjH,QACAjB,cAEA,MAAMxD,OAAShD,kBAAkByH,QAAQ8G,OAAQtO,aACjD,IAAK+C,OAAQ,MAAO,GACpB,MAAMb,UAAY+H,oBACdlH,OACAsL,0BAA0B7G,QAASjB,eAAiB,IAExD,MAAMgI,WAAahI,oBAAiB,EAAYiB,QAAQa,yBAA2B9B,aACnF,MAAMT,mBAAqByI,WACrBrO,sBAAsBqO,aAAazI,wBACnC,EACN,IAAKA,mBAAoB,OAAO5D,UAChC,IAAA,MAAWgI,OAAQ,CAAC,UAAW,UAAW,YAAa,YAAsB,CACzE,MAAMlI,MAAQ8D,mBAAmBoE,MACjC,MAAM9H,MAAQ9B,oBAAoB4J,MAAM,GACxC,GAAIlI,aAAU,GAAaI,aAAU,EAAW,SAChDF,UAAUiI,KAAK,CACXjB,MAAO9G,MACPmB,MAAOvB,MAAQzB,cAAc6B,OAC7BgI,eAAgBrH,OAAO+C,qBAAqBoE,OAAS,GAAK3J,cAAc6B,QAEhF,CACA,OAAOF,SACX,CAyBO,SAASwM,iCACZlH,SAEA,OAAOiH,iCAAiCjH,QAC5C,CAGA,SAASmH,kBAAkBvF,OAAgBD,UACvC,OAAOE,KAAKC,IAAIF,OAASD,WAAaE,KAAK9G,IAAI,KAAM8G,KAAKC,IAAIH,UAAY,KAC9E,CAGA,SAASyF,YAAYzM,SAA+BY,QAChD,OACI5C,cAAcgC,SAAS+G,MAAOnG,SAC9B,SAAS9B,aAAakB,SAAS+G,MAAO,uEAE9C,CAGA,SAAS2F,aAAazF,OAA6BD,UAC/C,GAAIA,SAAS5F,aAAU,EAAW,CAC9B,OAAO6F,OAAO7F,aAAU,GAAaoL,kBAAkBvF,OAAO7F,MAAO4F,SAAS5F,MAClF,CAGA,OAAO4F,SAASI,gBAAa,GAAaH,OAAOG,gBAAa,CAClE,CAGA,SAASuF,yBACLC,YACA5F,SACApG,QAEA,IAAIiM,QAAU,EACd,IAAA,MAAWC,aAAa9F,SAAU,CAC9B,MAAMC,OAAS2F,YAAY3J,IAAIwJ,YAAYK,UAAWlM,SACtD,IAAKqG,OAAQ,SACb,IAAKyF,aAAazF,OAAQ6F,WAAY,OAAO,MAC7CD,SACJ,CACA,OAAOA,SAAW3F,KAAK9G,IAAI,EAAG4G,SAASH,OAAS,EACpD,CAkDO,SAASkG,6BAA6BnM,QACzC,MAAM0G,YAAc1G,OAAOS,YAC3B,IAAKiG,YAAa,OAAO,KAGzBvI,uBAAuB6B,OAAOE,KAAM,6CACpC,MAAM6G,MAAQ/J,kBAAkBgD,OAAOE,KAAMjD,aAC7C,IAAK8J,MAAO,OAAO,KAEnB,MAAMqF,kBAAoBlO,aACtBwI,YAAYhG,cACZ,kEAEJ,MAAM2L,SAAWvP,yBAAyBkD,OAAOE,MACjD,MAAMoM,iBAAmBD,SAAS1I,OAC7BkD,WAAcA,UAAUhD,gBAAgB/D,gBAAkBsM,mBAE/D,MAAMG,eAAiBD,iBAAiBrG,SAAW,EAAIqG,iBAAiB,GAAM,KAC9E,MAAME,cAAgB9F,YAAY/F,MAClC,GACI4L,gBAAgB7H,cAAgB,aAChCpC,OAAOmK,UAAUD,gBACjBA,eAAiBD,eAAerI,OAChCsI,eAAiBnB,sBACnB,CACE,OAAOkB,cACX,CACA,GAAI7F,YAAY3F,iBAAc,EAAW,CACrC,MAAM2L,qBAAuBxO,aACzBwI,YAAY7F,mBACZ,uEAEJ,MAAM8L,gBAAkBL,iBAAiB3I,OACpCkD,WACGA,UAAUiE,oBAAsB,MAChCjE,UAAU3C,QAAUsI,gBACnB3F,UAAUvB,gCAA6B,EAClCoH,4BAAyB,GACzBhG,YAAY5F,oCAAiC,EAC7C+F,UAAUvB,yBAAyBxF,gBAAkB4M,uBAEnE,OAAOC,gBAAgB1G,SAAW,EAAI0G,gBAAgB,GAAM,IAChE,CACA,IAAKjG,YAAY3F,WAAWkF,OAAQ,OAAO,KAE3C,MAAM+F,2BAAA,IAAkBjK,IACxB,IAAA,MAAW3C,YAAYsH,YAAY3F,UAAW,CAC1CiL,YAAYnH,IAAIgH,YAAYzM,SAAU2H,OAAQ3H,SAClD,CACAjB,uBACIuI,YAAY7F,mBACZ,uEAEJ,MAAM+L,QAAkC,GACxC,IAAA,MAAW/F,aAAawF,SAAU,CAC9B,IAAKxF,UAAU1H,WAAW8G,OAAQ,SAClC,GAAIY,UAAU3C,QAAUwC,YAAY/F,MAAO,SAK3C,GACIkG,UAAUnC,cAAgB,gBACzBgC,YAAY7F,0BAAuB,GAChC6F,YAAY5F,oCAAiC,GAC7CsL,oBAAsBvF,UAAUhD,gBAAgB/D,eACtD,CACE,QACJ,CACA,MAAM+M,UAAYvB,0BACdzE,UACAH,YAAY7F,oBAAsB,MAEtC,IAAKgM,WAAW5G,OAAQ,SAIxB,MAAMgG,QACFF,yBAAyBC,YAAaa,UAAW9F,QACjDgF,yBACIC,YACAN,iCAAiC7E,UAAWH,YAAY7F,oBAAsB,MAC9EkG,OAER,GAAIkF,QAASW,QAAQxF,KAAKP,UAC9B,CACA,OAAO+F,QAAQ3G,SAAW,EAAI2G,QAAQ,GAAM,IAChD,CAuBO,SAASE,oBAAoBrI,SAChC,MAAMQ,SAAW,IAAI9B,IAAIsI,0BAA0BhH,SAASzF,IAAKI,UAAaA,SAAS+G,QACvF,OAAQ1B,QAAQtF,WAAa,IACxBH,IAAKI,UAAaA,SAASC,OAC3BsE,OAAQtE,QAAW4F,SAAS/D,IAAI7B,OACzC,CAqCO,SAAS0N,sBAAsBtI,SAClC,MAAMzE,OAAShD,kBAAkByH,QAAQ8G,OAAQtO,aACjD,IAAK+C,OAAQ,OAAO,KACpB,IACKyE,QAAQtF,WAAW8G,SACnBxB,QAAQqG,mBACTrG,QAAQa,gCAA6B,EAKrC,MAAO,IAAKtF,QAChB,MAAMb,UAAYsF,QAAQtF,WAAa,GACvC,MAAM8F,SAA6E,IAC5EjF,UACCyE,QAAQqG,kBAAoB,CAAEA,kBAAmB,MAAS,CAAA,GAElE,IAAA,MAAW3E,MAAEA,MAAA3F,MAAOA,MAAAgG,SAAOA,YAAciF,0BAA0BhH,SAAU,CACzE,MAAMuI,MAAQ5P,cAAc+I,MAAOnG,QAInC,GAAIgN,OAASA,QAAU,sBAAwBxM,aAAU,EAAW,CAChEwD,OAAOiJ,OAAOhI,SAAU,CAAE+H,CAACA,OAAQxM,MAAQhD,cAAc2I,QAC7D,MAAA,GAAW6G,OAASxG,gBAAa,GAAa9I,wBAAwByI,SAAW,KAAM,CACnFnC,OAAOiJ,OAAOhI,SAAU,CAAE+H,CAACA,OAAQ,MACvC,CACJ,CACA,MAAME,+BAAiCzI,QAAQa,yBACzCnI,sBAAsBsH,QAAQa,2BAA2BvC,wBACzD,EACN,GAAImK,+BAAgC,CAChCjI,SAASlC,mBAAqB,IAAKmK,uCAC5BjI,SAASjC,gBACpB,CAGA,GACIiC,SAASsE,kBAAe,IACvBpK,UAAUqF,KAAM2I,GAAMA,EAAE9N,QAAU,eACnCF,UAAUqF,KACL2I,GACGA,EAAE9N,QAAU,aACZ8N,EAAE9N,QAAU,mBACZ8N,EAAE9N,QAAU,iBAEtB,CACE,MAAMgJ,KAAOxL,mBAAmBoI,UAChC,GAAIoD,YAAS,EAAWpD,SAASsE,WAAalB,IAClD,CACA,GAAIrI,OAAOgD,mBAAqBkK,+BAAgC,CAC5DjI,SAASjC,iBAAmB3E,sBACxB2B,OAAOgD,iBACPhD,OAAOmI,OACPlD,SAASkD,OAEjB,CACA,OAAOlD,QACX,QAAAxF,YAAAsL,uBAAAI,0BAAArG,sBAAAH,mBAAAvE,mBAAAoC,iBAAA6C,yBAAAsG,iCAAAF,0BAAAsB,sBAAAZ,6BAAApM,oBAAAF,iBAAA6K,iCAAAhL,oBAAAwH,oBAAAlG,cAAAoC,kBAAA1B,kBAAA+E,yBAAAnF,SAAAsE,8BAAAvH,sBAAAyO"}
@@ -0,0 +1 @@
1
+ import{normalizeKey}from"./chunk-BKWLI44T.js";import{describeValue,requireStringIfPresent}from"./chunk-PKWVG2JY.js";var PREFIXES=["Th","Eo","Oo","Eu","Tr","Sly","Dry","Ou","Tz","Phl","Ae","Sch","Hyp","Syst","Ai","Kyl","Phr","Eae","Ph","Fl","Ao","Scr","Shr","Fly","Pl","Fr","Au","Pry","Pr","Hyph","Py","Chr","Phyl","Tyr","Bl","Cry","Gl","Br","Gr","By","Aae","Myc","Gyr","Ly","Myl","Lych","Myn","Ch","Myr","Cl","Rh","Wh","Pyr","Cr","Syn","Str","Syr","Cy","Wr","Hy","My","Sty","Sc","Sph","Spl","A","Sh","B","C","D","Sk","Io","Dr","E","Sl","F","Sm","G","H","I","Sp","J","Sq","K","L","Pyth","M","St","N","O","Ny","Lyr","P","Sw","Thr","Lys","Q","R","S","T","Ea","U","V","W","Schr","X","Ee","Y","Z","Ei","Oe"];var INFIXES1=["o","ai","a","oi","ea","ie","u","e","ee","oo","ue","i","oa","au","ae","oe"];var INFIXES2=["ll","ss","b","c","d","f","dg","g","ng","h","j","k","l","m","n","mb","p","q","gn","th","r","s","t","ch","tch","v","w","wh","ck","x","y","z","ph","sh","ct","wr"];var SUFFIXES1=["oe","io","oea","oi","aa","ua","eia","ae","ooe","oo","a","ue","ai","e","iae","oae","ou","uae","i","ao","au","o","eae","u","aea","ia","ie","eou","aei","ea","uia","oa","aae","eau","ee"];var SUFFIXES2=["b","scs","wsy","c","d","vsky","f","sms","dst","g","rb","h","nts","ch","rd","rld","k","lls","ck","rgh","l","rg","m","n","hm","p","hn","rk","q","rl","r","rm","s","cs","wyg","rn","ct","t","hs","rbs","rp","tts","v","wn","ms","w","rr","mt","x","rs","cy","y","rt","z","ws","lch","my","ry","nks","nd","sc","ng","sh","nk","sk","nn","ds","sm","sp","ns","nt","dy","ss","st","rrs","xt","nz","sy","xy","rsch","rphs","sts","sys","sty","th","tl","tls","rds","nch","rns","ts","wls","rnt","tt","rdy","rst","pps","tz","tch","sks","ppy","ff","sps","kh","sky","ph","lts","wnst","rth","ths","fs","pp","ft","ks","pr","ps","pt","fy","rts","ky","rshch","mly","py","bb","nds","wry","zz","nns","ld","lf","gh","lks","sly","lk","ll","rph","ln","bs","rsts","gs","ls","vvy","lt","rks","qs","rps","gy","wns","lz","nth","phs"];var C2_PREFIX_SUFFIX2=new Set(["Eo","Oo","Eu","Ou","Ae","Ai","Eae","Ao","Au","Aae"].map(s=>s.toLowerCase()));var C1_PREFIX_INFIX2=new Set(["Eo","Oo","Eu","Ou","Ae","Ai","Eae","Ao","Au","Aae","A","Io","E","I","O","Ea","U","Ee","Ei","Oe"].map(s=>s.toLowerCase()));var PREFIX_RUN_LENGTHS=/* @__PURE__ */new Map([["eu",31],["sly",4],["tz",1],["phl",13],["ae",12],["hyp",25],["kyl",30],["phr",10],["eae",4],["ao",5],["scr",24],["shr",11],["fly",20],["pry",3],["hyph",14],["py",12],["phyl",8],["tyr",25],["cry",5],["aae",5],["myc",2],["gyr",10],["myl",12],["lych",3],["myn",10],["myr",4],["rh",15],["wr",31],["sty",4],["spl",16],["sk",27],["sq",7],["pyth",1],["lyr",10],["sw",24],["thr",32],["lys",10],["schr",3],["z",34]]);var INFIX_RUN_LENGTHS=/* @__PURE__ */new Map([["oi",88],["ue",147],["oa",57],["au",119],["ae",12],["oe",39],["dg",31],["tch",20],["wr",31]]);var PREFIX_DEFAULT_RUN_LENGTH=35;function buildOffsets(items,explicitRunLengths,defaultLen){const offsets=/* @__PURE__ */new Map;const runLengths=/* @__PURE__ */new Map;let cnt=0;for(const item of items){const key=item.toLowerCase();const len=explicitRunLengths.get(key)??defaultLen;runLengths.set(key,len);offsets.set(key,cnt);cnt+=len}return{offsets:offsets,runLengths:runLengths,total:cnt}}var prefixTable=buildOffsets(PREFIXES,PREFIX_RUN_LENGTHS,PREFIX_DEFAULT_RUN_LENGTH);var prefixOffsets=prefixTable.offsets;var prefixTotalRunLength=prefixTable.total;var infix1Table=buildOffsets(INFIXES1,INFIX_RUN_LENGTHS,SUFFIXES2.length);var infix2Table=buildOffsets(INFIXES2,INFIX_RUN_LENGTHS,SUFFIXES1.length);var infixOffsets=new Map([...infix1Table.offsets,...infix2Table.offsets]);var infix1TotalRunLength=infix1Table.total;var infix2TotalRunLength=infix2Table.total;var prefixRunLengths=prefixTable.runLengths;var infixRunLengths=new Map([...infix1Table.runLengths,...infix2Table.runLengths]);var prefixRunLength=key=>prefixRunLengths.get(key);var infixRunLength=key=>infixRunLengths.get(key);function emptyFragment(value){return{value:value,isPrefix:false,isC1VowelPrefix:false,isC2VowelPrefix:false,isInfix:false,isVowelInfix:false,isSuffix:false,isVowelSuffix:false,suffixIndex:0}}var FRAGMENTS=(()=>{const frags=/* @__PURE__ */new Map;const get=v=>{const key=v.toLowerCase();let f=frags.get(key);if(!f){f=emptyFragment(key);frags.set(key,f)}return f};for(const p of PREFIXES){const f=get(p);const key=p.toLowerCase();f.isPrefix=true;f.isC1VowelPrefix=C1_PREFIX_INFIX2.has(key);f.isC2VowelPrefix=C2_PREFIX_SUFFIX2.has(key)}for(const p of INFIXES1){const f=get(p);f.isInfix=true;f.isVowelInfix=true}for(const p of INFIXES2){const f=get(p);f.isInfix=true;f.isVowelInfix=false}for(let i=0;i<SUFFIXES1.length;i++){const f=get(SUFFIXES1[i]);f.isSuffix=true;f.isVowelSuffix=true;f.suffixIndex=i}for(let i=0;i<SUFFIXES2.length;i++){const f=get(SUFFIXES2[i]);f.isSuffix=true;f.isVowelSuffix=false;f.suffixIndex=i}return[...frags.values()].sort((a,b)=>b.value.length-a.value.length||a.value.localeCompare(b.value))})();function isC1Sector(offset){let key=offset>>>0;key=key+(key<<12)>>>0;key^=key>>>22;key=key+(key<<4)>>>0;key^=key>>>9;key=key+(key<<10)>>>0;key^=key>>>2;key=key+(key<<7)>>>0;key^=key>>>12;return(key&1)===0}function c1Name(offset){const frags=[];const prefixCnt=Math.floor(offset/prefixTotalRunLength);let curOffset=offset%prefixTotalRunLength;let prefix="";for(const p of PREFIXES){if((prefixOffsets.get(p.toLowerCase())??0)<=curOffset)prefix=p}const prefixLower=prefix.toLowerCase();frags.push(prefix);curOffset-=prefixOffsets.get(prefixLower)??0;const infix1IsConsonant=C1_PREFIX_INFIX2.has(prefixLower);const infix1Total=infix1IsConsonant?infix2TotalRunLength:infix1TotalRunLength;const infix1Table2=infix1IsConsonant?INFIXES2:INFIXES1;const scaled=prefixCnt*prefixRunLength(prefixLower)+curOffset;const infix1Cnt=Math.floor(scaled/infix1Total);curOffset=scaled%infix1Total;let infix1="";for(const p of infix1Table2){const key=p.toLowerCase();if((infixOffsets.get(key)??0)<=curOffset)infix1=key}frags.push(infix1);curOffset-=infixOffsets.get(infix1)??0;let suffixes=infix1IsConsonant?SUFFIXES1:SUFFIXES2;let nextIdx=infixRunLength(infix1)*infix1Cnt+curOffset;if(nextIdx>=suffixes.length){const infix2IsConsonant=!infix1IsConsonant;const infix2Total=infix2IsConsonant?infix2TotalRunLength:infix1TotalRunLength;const infix2Cnt=Math.floor(nextIdx/infix2Total);curOffset=nextIdx%infix2Total;const infix2Table2=infix2IsConsonant?INFIXES2:INFIXES1;let infix2="";for(const p of infix2Table2){const key=p.toLowerCase();if((infixOffsets.get(key)??0)<=curOffset)infix2=key}frags.push(infix2);curOffset-=infixOffsets.get(infix2)??0;suffixes=infix2IsConsonant?SUFFIXES1:SUFFIXES2;nextIdx=infixRunLength(infix2)*infix2Cnt+curOffset}if(nextIdx>=suffixes.length)return null;frags.push(suffixes[nextIdx].toLowerCase());return frags.join("")}function c2Name(offset){const[idx0,idx1]=deinterleave2(offset);let p1="";for(const p of PREFIXES){if((prefixOffsets.get(p.toLowerCase())??0)<=idx0)p1=p}let p2="";for(const p of PREFIXES){if((prefixOffsets.get(p.toLowerCase())??0)<=idx1)p2=p}const p1Lower=p1.toLowerCase();const p2Lower=p2.toLowerCase();const s1s=C2_PREFIX_SUFFIX2.has(p1Lower)?SUFFIXES2:SUFFIXES1;const s2s=C2_PREFIX_SUFFIX2.has(p2Lower)?SUFFIXES2:SUFFIXES1;const s1=s1s[idx0-(prefixOffsets.get(p1Lower)??0)];const s2=s2s[idx1-(prefixOffsets.get(p2Lower)??0)];return`${p1}${s1.toLowerCase()} ${p2}${s2.toLowerCase()}`}function sectorNameFromGridPosition(position){for(const v of[position.sectorX,position.sectorY,position.sectorZ]){if(!Number.isInteger(v)||v<0||v>127){throw new RangeError(`Sector grid position out of range (expected integer 0–127): ${describeValue(position)}`)}}const offset=(position.sectorZ<<14)+(position.sectorY<<7)+position.sectorX;const name=isC1Sector(offset)?c1Name(offset):c2Name(offset);if(name===null){throw new RangeError(`Sector grid position has no procedural name: ${describeValue(position)}`)}return name}function splitFragmentCandidates(normalizedName){const candidates=[];const visit=(remaining,out)=>{if(remaining.length===0){candidates.push([...out]);return}if(out.length>=4)return;const spaceStart=remaining.startsWith(" ");const current=remaining.trimStart();if(current.length===0)return;for(const match of FRAGMENTS){if(!current.startsWith(match.value))continue;const frag={...match};if(spaceStart){frag.isSuffix=false;frag.isInfix=false}else if(out.length>0&&frag.isInfix&&frag.isVowelInfix!==out[out.length-1].isVowelInfix){frag.isPrefix=false}visit(current.substring(frag.value.length),[...out,frag])}};visit(normalizedName,[]);return candidates}function c1ProcessInfix(frag,offset){const runLen=infixRunLength(frag.value);const rem=offset%runLen;let out=Math.floor(offset/runLen);out*=frag.isVowelInfix?infix1TotalRunLength:infix2TotalRunLength;out+=rem;out+=infixOffsets.get(frag.value)??0;return out}function c1ProcessPrefix(frag,offset){const runLen=prefixRunLength(frag.value);const rem=offset%runLen;let out=Math.floor(offset/runLen);out*=prefixTotalRunLength;out+=rem;out+=prefixOffsets.get(frag.value)??0;return out}function coordsFromOffset(offset){return{sectorX:offset&127,sectorY:offset>>7&127,sectorZ:offset>>14&127}}function c2SectorGridPosition(f){if(f[0].isC2VowelPrefix===f[1].isVowelSuffix||f[2].isC2VowelPrefix===f[3].isVowelSuffix){return null}const idx0=(prefixOffsets.get(f[0].value)??0)+f[1].suffixIndex;const idx1=(prefixOffsets.get(f[2].value)??0)+f[3].suffixIndex;return coordsFromOffset(interleave2(idx0,idx1))}function c1SectorGridPosition3(f){if(f[0].isC1VowelPrefix===f[1].isVowelInfix||f[1].isVowelInfix===f[2].isVowelSuffix){return null}let offset=f[2].suffixIndex;offset=c1ProcessInfix(f[1],offset);offset=c1ProcessPrefix(f[0],offset);return coordsFromOffset(offset)}function c1SectorGridPosition4(f){if(f[0].isC1VowelPrefix===f[1].isVowelInfix||f[1].isVowelInfix===f[2].isVowelInfix||f[2].isVowelInfix===f[3].isVowelSuffix){return null}let offset=f[3].suffixIndex;offset=c1ProcessInfix(f[2],offset);offset=c1ProcessInfix(f[1],offset);offset=c1ProcessPrefix(f[0],offset);return coordsFromOffset(offset)}function sectorGridPositionFromName(name){if(name==null)return null;const normalized=normalizeKey(name,"sectorGridPositionFromName: name");const candidates=splitFragmentCandidates(normalized);const normalizedName=normalized.replace(/\s+/g," ");for(const f of candidates){let coords=null;if(f.length===4&&f[0].isPrefix&&f[1].isSuffix&&f[2].isPrefix&&f[3].isSuffix){coords=c2SectorGridPosition(f)}else if(f.length===3&&f[0].isPrefix&&f[1].isInfix&&f[2].isSuffix){coords=c1SectorGridPosition3(f)}else if(f.length===4&&f[0].isPrefix&&f[1].isInfix&&f[2].isInfix&&f[3].isSuffix){coords=c1SectorGridPosition4(f)}if(!coords)continue;try{const canonicalName=sectorNameFromGridPosition(coords);if(canonicalName.toLowerCase()===normalizedName)return coords}catch(error){if(!(error instanceof RangeError))throw error}}return null}function canonicalizeSectorName(name){requireStringIfPresent(name,"canonicalizeSectorName: name");const position=sectorGridPositionFromName(name);return position?sectorNameFromGridPosition(position):null}function interleave2(v1,v2){let x=BigInt(v1)|BigInt(v2)<<32n;x=(x|x<<8n)&0x00ff00ff00ff00ffn;x=(x|x<<4n)&0x0f0f0f0f0f0f0f0fn;x=(x|x<<2n)&0x3333333333333333n;x=(x|x<<1n)&0x5555555555555555n;return Number((x|x>>31n)&0xffffffffn)}function deinterleave2(val){const v=BigInt(val);let x=v&0x55555555n|(v&0xaaaaaaaan)<<31n;x=(x|x>>1n)&0x3333333333333333n;x=(x|x>>2n)&0x0f0f0f0f0f0f0f0fn;x=(x|x>>4n)&0x00ff00ff00ff00ffn;x=(x|x>>8n)&0x0000ffff0000ffffn;return[Number(x&0xffffn),Number(x>>32n&0xffffn)]}export{canonicalizeSectorName,sectorGridPositionFromName,sectorNameFromGridPosition};//# sourceMappingURL=chunk-H47K3UWG.js.map