@jjlmoya/utils-forensic-science 1.1.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 (316) hide show
  1. package/package.json +69 -0
  2. package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
  5. package/src/category/i18n/de.ts +55 -0
  6. package/src/category/i18n/en.ts +55 -0
  7. package/src/category/i18n/es.ts +55 -0
  8. package/src/category/i18n/fr.ts +55 -0
  9. package/src/category/i18n/id.ts +55 -0
  10. package/src/category/i18n/it.ts +55 -0
  11. package/src/category/i18n/ja.ts +56 -0
  12. package/src/category/i18n/ko.ts +56 -0
  13. package/src/category/i18n/nl.ts +55 -0
  14. package/src/category/i18n/pl.ts +55 -0
  15. package/src/category/i18n/pt.ts +55 -0
  16. package/src/category/i18n/ru.ts +55 -0
  17. package/src/category/i18n/sv.ts +55 -0
  18. package/src/category/i18n/tr.ts +55 -0
  19. package/src/category/i18n/zh.ts +56 -0
  20. package/src/category/index.ts +48 -0
  21. package/src/category/seo.astro +15 -0
  22. package/src/components/PreviewNavSidebar.astro +116 -0
  23. package/src/components/PreviewToolbar.astro +143 -0
  24. package/src/data.ts +10 -0
  25. package/src/entries.ts +48 -0
  26. package/src/env.d.ts +5 -0
  27. package/src/index.ts +29 -0
  28. package/src/layouts/PreviewLayout.astro +117 -0
  29. package/src/pages/[locale]/[slug].astro +162 -0
  30. package/src/pages/[locale].astro +261 -0
  31. package/src/pages/index.astro +3 -0
  32. package/src/tests/diacritics_density.test.ts +140 -0
  33. package/src/tests/faq_count.test.ts +19 -0
  34. package/src/tests/i18n_coverage.test.ts +36 -0
  35. package/src/tests/inverted_punctuation.test.ts +84 -0
  36. package/src/tests/locale_completeness.test.ts +24 -0
  37. package/src/tests/mocks/astro_mock.js +2 -0
  38. package/src/tests/no_en_dash.test.ts +70 -0
  39. package/src/tests/no_h1_in_components.test.ts +48 -0
  40. package/src/tests/schemas_fulfillment.test.ts +23 -0
  41. package/src/tests/script_density.test.ts +94 -0
  42. package/src/tests/seo_length.test.ts +46 -0
  43. package/src/tests/shared-test-helpers.ts +56 -0
  44. package/src/tests/slug_language_code_format.test.ts +23 -0
  45. package/src/tests/slug_uniqueness.test.ts +81 -0
  46. package/src/tests/title_quality.test.ts +55 -0
  47. package/src/tests/tool_exports.test.ts +34 -0
  48. package/src/tests/tool_validation.test.ts +16 -0
  49. package/src/tests/widmark.test.ts +28 -0
  50. package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
  51. package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
  52. package/src/tool/forensic-age-estimator/component.astro +321 -0
  53. package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
  54. package/src/tool/forensic-age-estimator/entry.ts +32 -0
  55. package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
  56. package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
  57. package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
  58. package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
  59. package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
  60. package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
  61. package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
  62. package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
  63. package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
  64. package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
  65. package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
  66. package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
  67. package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
  68. package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
  69. package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
  70. package/src/tool/forensic-age-estimator/index.ts +11 -0
  71. package/src/tool/forensic-age-estimator/logic.ts +81 -0
  72. package/src/tool/forensic-age-estimator/seo.astro +15 -0
  73. package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
  74. package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
  75. package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
  76. package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
  77. package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
  78. package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
  79. package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
  80. package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
  81. package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
  82. package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
  83. package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
  84. package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
  85. package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
  86. package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
  87. package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
  88. package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
  89. package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
  90. package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
  91. package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
  92. package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
  93. package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
  94. package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
  95. package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
  96. package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
  97. package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
  98. package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
  99. package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
  100. package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
  101. package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
  102. package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
  103. package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
  104. package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
  105. package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
  106. package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
  107. package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
  108. package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
  109. package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
  110. package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
  111. package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
  112. package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
  113. package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
  114. package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
  115. package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
  116. package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
  117. package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
  118. package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
  119. package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
  120. package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
  121. package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
  122. package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
  123. package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
  124. package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
  125. package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
  126. package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
  127. package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
  128. package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
  129. package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
  130. package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
  131. package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
  132. package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
  133. package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
  134. package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
  135. package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
  136. package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
  137. package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
  138. package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
  139. package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
  140. package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
  141. package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
  142. package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
  143. package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
  144. package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
  145. package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
  146. package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
  147. package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
  148. package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
  149. package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
  150. package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
  151. package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
  152. package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
  153. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
  154. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
  155. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
  156. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
  157. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
  158. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
  159. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
  160. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
  161. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
  162. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
  163. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
  164. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
  165. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
  166. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
  167. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
  168. package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
  169. package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
  170. package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
  171. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
  172. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
  173. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
  174. package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
  175. package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
  176. package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
  177. package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
  178. package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
  179. package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
  180. package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
  181. package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
  182. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
  183. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
  184. package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
  185. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
  186. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
  187. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
  188. package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
  189. package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
  190. package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
  191. package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
  192. package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
  193. package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
  194. package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
  195. package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
  196. package/src/tool/forensic-sex-determinator/component.astro +463 -0
  197. package/src/tool/forensic-sex-determinator/entry.ts +32 -0
  198. package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
  199. package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
  200. package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
  201. package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
  202. package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
  203. package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
  204. package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
  205. package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
  206. package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
  207. package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
  208. package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
  209. package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
  210. package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
  211. package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
  212. package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
  213. package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
  214. package/src/tool/forensic-sex-determinator/index.ts +11 -0
  215. package/src/tool/forensic-sex-determinator/logic.ts +89 -0
  216. package/src/tool/forensic-sex-determinator/seo.astro +15 -0
  217. package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
  218. package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
  219. package/src/tool/forensic-stature-estimator/component.astro +49 -0
  220. package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
  221. package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
  222. package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
  223. package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
  224. package/src/tool/forensic-stature-estimator/entry.ts +32 -0
  225. package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
  226. package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
  227. package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
  228. package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
  229. package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
  230. package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
  231. package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
  232. package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
  233. package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
  234. package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
  235. package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
  236. package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
  237. package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
  238. package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
  239. package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
  240. package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
  241. package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
  242. package/src/tool/forensic-stature-estimator/index.ts +11 -0
  243. package/src/tool/forensic-stature-estimator/logic.ts +119 -0
  244. package/src/tool/forensic-stature-estimator/script.ts +288 -0
  245. package/src/tool/forensic-stature-estimator/seo.astro +15 -0
  246. package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
  247. package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
  248. package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
  249. package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
  250. package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
  251. package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
  252. package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
  253. package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
  254. package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
  255. package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
  256. package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
  257. package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
  258. package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
  259. package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
  260. package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
  261. package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
  262. package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
  263. package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
  264. package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
  265. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
  266. package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
  267. package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
  268. package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
  269. package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
  270. package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
  271. package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
  272. package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
  273. package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
  274. package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
  275. package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
  276. package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
  277. package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
  278. package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
  279. package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
  280. package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
  281. package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
  282. package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
  283. package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
  284. package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
  285. package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
  286. package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
  287. package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
  288. package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
  289. package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
  290. package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
  291. package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
  292. package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
  293. package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
  294. package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
  295. package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
  296. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
  297. package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
  298. package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
  299. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
  300. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
  301. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
  302. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
  303. package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
  304. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
  305. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
  306. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
  307. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
  308. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
  309. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
  310. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
  311. package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
  312. package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
  313. package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
  314. package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
  315. package/src/tools.ts +27 -0
  316. package/src/types.ts +70 -0
@@ -0,0 +1,220 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const slug = 'symulator-wstepnego-badania-krwi-medycyna-sadowa';
4
+ const title = 'Symulator Wstępnego Badania Krwi w Medycynie Sądowej';
5
+ const description = 'Symuluj wstępne badania krwi za pomocą odczynników Kastle-Meyera i Luminolu. Odróżnij prawdziwą krew od fałszywych alarmów.';
6
+
7
+ const howTo = [
8
+ {
9
+ "name": "Wybierz próbkę",
10
+ "text": "Wybierz próbkę do badania ze statywu, reprezentującą krew lub materiał dający wynik fałszywie dodatni."
11
+ },
12
+ {
13
+ "name": "Wybierz metodę",
14
+ "text": "Zdecyduj, czy wykonujesz test barwny Kastle-Meyera, czy test luminescencyjny z Luminolem."
15
+ },
16
+ {
17
+ "name": "Nanieś odczynniki",
18
+ "text": "Dodaj krople odczynnika Kastle-Meyera, a następnie nadtlenek wodoru, lub bezpośrednio nanieś Luminol."
19
+ },
20
+ {
21
+ "name": "Zinterpretuj reakcję",
22
+ "text": "Obserwuj zmiany koloru lub niebieską poświatę w ciemności, aby sklasyfikować reakcję."
23
+ }
24
+ ];
25
+
26
+ const faq = [
27
+ {
28
+ "key": "faq-1",
29
+ "question": "Dlaczego to test wstępny?",
30
+ "answer": "Testy wstępne (presumpcyjne) to wstępne badania przesiewowe oparte na aktywności katalitycznej. Są bardzo czułe, ale mogą dawać wyniki fałszywie dodatnie."
31
+ },
32
+ {
33
+ "key": "faq-2",
34
+ "question": "Co powoduje wynik fałszywie dodatni w teście Kastle-Meyera?",
35
+ "answer": "Test opiera się na aktywności pseudoperoksydazowej hemu. Utleniacze chemiczne, jony metali w rdzy lub peroksydazy roślinne mogą również katalizować tę reakcję."
36
+ },
37
+ {
38
+ "key": "faq-3",
39
+ "question": "Jak zachodzi reakcja z Luminolem?",
40
+ "answer": "Luminol reaguje z nadtlenkiem wodoru w obecności katalizatora (żelaza w hemoglobinie). Wzbudzony luminol emituje niebieskie światło, wracając do stanu podstawowego."
41
+ },
42
+ {
43
+ "key": "faq-4",
44
+ "question": "Czy wybielacz domowy daje wynik fałszywie dodatni?",
45
+ "answer": "Tak, podchloryn sodu to silny utleniacz. Utlenia bezpośrednio fenoloftalinę lub luminol bez użycia katalizatora, dając szybko rozpraszającą się poświatę."
46
+ },
47
+ {
48
+ "key": "faq-5",
49
+ "question": "Jaka jest różnica między testem wstępnym a potwierdzającym?",
50
+ "answer": "Testy wstępne są szybkie i tanie, służą do lokalizacji śladów. Testy potwierdzające jednoznacznie dowodzą obecności ludzkiej krwi."
51
+ }
52
+ ];
53
+
54
+ const bibliography = [
55
+ {
56
+ "name": "Kastle-Meyer test - Wikipedia",
57
+ "url": "https://en.wikipedia.org/wiki/Kastle%E2%80%93Meyer_test"
58
+ },
59
+ {
60
+ "name": "Grodsky, M., Wright, K. & Kirk, P. L. (1951). Simplified preliminary blood testing. An improved technique and comparative study of methods. Journal of Criminal Law and Criminology.",
61
+ "url": "https://scholarlycommons.law.northwestern.edu/jclc/vol42/iss1/10/"
62
+ }
63
+ ];
64
+
65
+ export const content: ToolLocaleContent = {
66
+ slug,
67
+ title,
68
+ description,
69
+ ui: {
70
+ "title": "Symulator Badania Krwi",
71
+ "desc": "Wykonuj wirtualne doświadczenia laboratoryjne z Luminolem i Kastle-Meyerem w celu wykrywania krwi.",
72
+ "configTitle": "Kontrola Laboratoryjna",
73
+ "sampleLabel": "Wybierz Próbkę Badawczą",
74
+ "reagentLabel": "Wybierz Odczynnik",
75
+ "lightsLabel": "Oświetlenie",
76
+ "btnLightsOff": "Wyłącz Światło",
77
+ "btnLightsOn": "Włącz Światło",
78
+ "btnReset": "Wyczyść Płytkę",
79
+ "resultsTitle": "Wyniki Badania Wstępnego",
80
+ "sampleBlood": "Próbka Krwi (Kontrolna)",
81
+ "sampleRust": "Rdza (Tlenek Żelaza)",
82
+ "sampleBleach": "Wybielacz (Podchloryn Sodu)",
83
+ "samplePotato": "Ziemniak (Peroksydaza Roślinna)",
84
+ "sampleSaliva": "Próbka Śliny",
85
+ "reagentKM": "Odczynnik Kastle-Meyera",
86
+ "reagentH2O2": "Nadtlenek Wodoru (H2O2)",
87
+ "reagentLuminol": "Roztwór Luminolu",
88
+ "resultTruePositive": "Prawdziwie Dodatni (Wykryto Krew)",
89
+ "resultFalsePositive": "Fałszywie Dodatni (Katalizator Inny niż Krew)",
90
+ "resultNegative": "Reakcja Negatywna",
91
+ "statusLabel": "Status Reakcji",
92
+ "reactionLabel": "Wyjaśnienie Reakcji",
93
+ "dropReagentBtn": "Nanieś Kroplę",
94
+ "activeCompounds": "Aktywne Związki",
95
+ "reactionSpeed": "Szybkość Reakcji",
96
+ "reactionDuration": "Czas Trwania Reakcji",
97
+ "specimenBase": "Baza Próbki",
98
+ "kmPending": "Niesiono odczynnik Kastle-Meyera. Dodaj Nadtlenek Wodoru (H2O2), aby skatalizować zmianę koloru.",
99
+ "h2o2Only": "Niesiono nadtlenek wodoru. Brak widocznej reakcji bez wskaźnika Kastle-Meyera.",
100
+ "noReaction": "Nie zaobserwowano reakcji. Próbka pozostaje bezbarwna.",
101
+ "luminolBlood": "Natychmiastowa intensywna niebieska poświata w ciemności. Grupy hemowe w hemoglobinie skatalizowały utlenienie luminolu. Prawdziwie Dodatni.",
102
+ "luminolBleach": "Natychmiastowa, bardzo intensywna niebieska poświata, która zniknęła w czasie poniżej 2 sekund. Wybielacz utlenia bezpośrednio. Fałszywie Dodatni.",
103
+ "luminolRust": "Słaba, matowa niebieska poświata. Jony metalu w rdzy słabo katalizują reakcję. Fałszywie Dodatni.",
104
+ "luminolPotato": "Brak widocznej luminescencji. Peroksydazy roślinne nie katalizują utleniania luminolu w tych warunkach. Negatywny.",
105
+ "luminolNegative": "Brak luminescencji w ciemności. Związek nie katalizuje utleniania luminolu. Negatywny.",
106
+ "kmBlood": "Natychmiastowe jasnoróżowe zabarwienie po dodaniu nadtlenku wodoru. Hem w krwi skatalizował utlenienie fenoloftaliny do fenoloftaleiny. Prawdziwie Dodatni.",
107
+ "kmBleach": "Natychmiastowa silna różowa zmiana koloru. Podchloryn sodu utlenia bezpośrednio fenoloftalinę bez nadtlenku wodoru. Fałszywie Dodatni.",
108
+ "kmRust": "Powolne, słabe brązowo-różowe zabarwienie po kilku sekundach. Rdza katalizuje reakcję znacznie wolniej. Fałszywie Dodatni.",
109
+ "kmPotato": "Powolne, blade różowe zabarwienie po opóźnieniu. Peroksydazy roślinne słabo katalizują reakcję. Fałszywie Dodatni.",
110
+ "kmNegative": "Nie zaobserwowano zmiany koloru. Roztwór pozostaje bezbarwny. Negatywny."
111
+ },
112
+ seo: [
113
+ {
114
+ "type": "title",
115
+ "text": "Kompletny Podręcznik Wstępnych Badań Krwi w Kryminalistyce",
116
+ "level": 2
117
+ },
118
+ {
119
+ "type": "paragraph",
120
+ "html": "Wstępne badania krwi są niezwykle czułymi testami przesiewowymi stosowanymi na miejscach zdarzeń oraz w laboratoriach kryminalistycznych do szybkiego wykrywania obecności śladów biologicznych. Przed przystąpieniem do drogich i czasochłonnych procedur sekwencjonowania DNA, śledczy polegają na tych szybkich testach w celu zlokalizowania krwi na odzieży, narzędziach zbrodni i innych powierzchniach. Ponieważ testy te opierają się na aktywności pseudoperoksydazowej hemu, czyli żelazowej grupy hemowej hemoglobiny, ich charakter określa się jako wstępny. Wynik dodatni silnie sugeruje obecność krwi, jednak wymaga przeprowadzenia laboratoryjnych testów potwierdzających w celu wykluczenia fałszywych alarmów."
121
+ },
122
+ {
123
+ "type": "title",
124
+ "text": "Zasada Działania Testu Kastle Meyera",
125
+ "level": 3
126
+ },
127
+ {
128
+ "type": "paragraph",
129
+ "html": "Test barwny Kastle-Meyera (KM) opiera się na reakcji utleniania bezbarwnej fenoloftaliny do różowej fenoloftaleiny. Cała procedura musi przebiegać w określonej kolejności: najpierw na próbkę nanosi się odczynnik fenoloftalinowy. W obecności krwi, grupa hemowa hemoglobiny działa jako organiczny katalizator. Po dodaniu nadtlenku wodoru hem przyspiesza rozkład nadtlenku i natychmiast utlenia fenoloftalinę do fenoloftaleiny, dając intensywnie różowy kolor. Opóźniona zmiana zabarwienia po upływie piętnastu sekund uznawana jest za wynik ujemny spowodowany powolnym utlenieniem tlenem atmosferycznym."
130
+ },
131
+ {
132
+ "type": "title",
133
+ "text": "Luminol i Chemiluminescencja Sądowa w Praktyce",
134
+ "level": 3
135
+ },
136
+ {
137
+ "type": "paragraph",
138
+ "html": "Luminol to związek chemiczny wykazujący charakterystyczną niebieską świecenie w ciemności pod wpływem utleniacza i katalizatora metalicznego. Technicy kryminalistyczni rozpylają roztwór luminolu na dużych obszarach. Gdy wejdzie on w kontakt ze śladami krwi, żelazo z grupy hemowej hemoglobiny działa jako silny katalizator reakcji utleniania. Wynikiem tej reakcji jest powstanie wzbudzonego jonu aminofalanowego, który emituje światło podczas powrotu do stanu podstawowego. Ponieważ emitowana luminescencja ma niską intensywność, do jej zaobserwowania i sfotografowania konieczne jest pełne zaciemnienie."
139
+ },
140
+ {
141
+ "type": "table",
142
+ "headers": [
143
+ "Badana Substancja",
144
+ "Reakcja Kastle-Meyera",
145
+ "Reakcja z Luminolem",
146
+ "Klasyfikacja Diagnostyczna"
147
+ ],
148
+ "rows": [
149
+ [
150
+ "Ludzka Krew Kontrola",
151
+ "Natychmiastowe jasnoróżowe zabarwienie po H2O2.",
152
+ "Intensywna i trwała niebieska poświata do 8s.",
153
+ "Prawdziwie Dodatni. Hem zapewnia wysoką wydajność katalityczną."
154
+ ],
155
+ [
156
+ "Wybielacz Domowy",
157
+ "Różowe zabarwienie przed dodaniem H2O2.",
158
+ "Poświata bardzo silna, lecz szybko znika.",
159
+ "Fałszywie Dodatni. Silny utleniacz reaguje bez katalizatora."
160
+ ],
161
+ [
162
+ "Tlenek Żelaza (Rdza)",
163
+ "Powolne, słabe brązowo-różowe zabarwienie.",
164
+ "Słaba, matowa niebieska poświata w ciemności.",
165
+ "Fałszywie Dodatni. Wolne jony żelaza katalizują z niską wydajnością."
166
+ ],
167
+ [
168
+ "Ziemniak (Peroksydaza)",
169
+ "Powolne i słabe różowe zabarwienie po czasie.",
170
+ "Brak jakiejkolwiek widocznej luminescencji.",
171
+ "Fałszywie Dodatni (KM) / Negatywny (LUM)."
172
+ ]
173
+ ]
174
+ },
175
+ {
176
+ "type": "title",
177
+ "text": "Różnicowanie Krwi od Fałszywych Wyników Dodatnich",
178
+ "level": 3
179
+ },
180
+ {
181
+ "type": "paragraph",
182
+ "html": "Prawidłowe odróżnianie prawdziwej krwi od fałszywych wyników dodatnich ma kluczowe znaczenie dla rzetelności dowodów sądowych. Środki czyszczące zawierające podchloryn sodu (wybielacz) utleniają wskaźnik bezpośrednio. Eksperci sądowi identyfikują je poprzez badanie dynamiki czasowej reakcji: wybielacz daje reakcję barwną w teście Kastle-Meyera bez użycia nadtlenku wodoru, a jego luminescencja z luminolem wygasa w niecałe dwie sekundy. Z kolei peroksydazy roślinne ulegają dezaktywacji pod wpływem wysokiej temperatury, podczas gdy hemoglobina krwi pozostaje stabilna termicznie."
183
+ }
184
+ ],
185
+ faq,
186
+ bibliography,
187
+ howTo,
188
+ schemas: [
189
+ {
190
+ '@context': 'https://schema.org',
191
+ '@type': 'SoftwareApplication',
192
+ name: title,
193
+ description,
194
+ applicationCategory: 'ForensicApplication',
195
+ operatingSystem: 'Any'
196
+ },
197
+ {
198
+ '@context': 'https://schema.org',
199
+ '@type': 'FAQPage',
200
+ mainEntity: faq.map((item) => ({
201
+ '@type': 'Question',
202
+ name: item.question,
203
+ acceptedAnswer: {
204
+ '@type': 'Answer',
205
+ text: item.answer
206
+ }
207
+ }))
208
+ },
209
+ {
210
+ '@context': 'https://schema.org',
211
+ '@type': 'HowTo',
212
+ name: title,
213
+ step: howTo.map((step) => ({
214
+ '@type': 'HowToStep',
215
+ name: step.name,
216
+ text: step.text
217
+ }))
218
+ }
219
+ ]
220
+ };
@@ -0,0 +1,220 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ const slug = 'simulador-teste-presuntivo-sangue-forense';
4
+ const title = 'Simulador de Teste Presuntivo de Sangue Forense';
5
+ const description = 'Simule testes presuntivos de sangue usando os reagentes Kastle-Meyer e Luminol. Distinga sangue real de falsos positivos comuns.';
6
+
7
+ const howTo = [
8
+ {
9
+ "name": "Selecionar amostra",
10
+ "text": "Escolha uma amostra do suporte para testar, podendo ser sangue ou um material de falso positivo."
11
+ },
12
+ {
13
+ "name": "Escolher método de teste",
14
+ "text": "Decida se deseja realizar o teste de mudança de cor Kastle-Meyer ou o teste de luminescência de Luminol."
15
+ },
16
+ {
17
+ "name": "Aplicar reagentes",
18
+ "text": "Adicione gotas do reagente Kastle-Meyer seguido de Peróxido de Hidrogénio, ou aplique o Luminol diretamente."
19
+ },
20
+ {
21
+ "name": "Interpretar a reação",
22
+ "text": "Observe as mudanças de cor ou o brilho azul no escuro para classificar a reação."
23
+ }
24
+ ];
25
+
26
+ const faq = [
27
+ {
28
+ "key": "faq-1",
29
+ "question": "Porque é chamado de teste presuntivo?",
30
+ "answer": "Os testes presuntivos são análises preliminares de triagem baseadas na atividade catalítica. São muito sensíveis, mas não totalmente específicos."
31
+ },
32
+ {
33
+ "key": "faq-2",
34
+ "question": "O que causa um falso positivo no teste Kastle-Meyer?",
35
+ "answer": "O teste depende da atividade do heme. Oxidantes químicos, iões metálicos ou peroxidases vegetais também podem catalisar a reação."
36
+ },
37
+ {
38
+ "key": "faq-3",
39
+ "question": "Como ocorre a reação do Luminol?",
40
+ "answer": "O luminol reage com peróxido de hidrogénio na presença do ferro da hemoglobina. O luminol excitado emmiti luz azul ao retornar ao estado fundamental."
41
+ },
42
+ {
43
+ "key": "faq-4",
44
+ "question": "A lixívia pode causar um falso positivo?",
45
+ "answer": "Sim, o hipoclorito de sódio é um forte oxidante. Oxida diretamente a fenolftalina ou o luminol sem catalisador, com brilho muito curto."
46
+ },
47
+ {
48
+ "key": "faq-5",
49
+ "question": "Qual é la diferença entre teste presuntivo e de confirmação?",
50
+ "answer": "Os testes presuntivos são rápidos e sensíveis para localizar manchas. Os testes confirmativos provam com total certeza a presença de sangue humano."
51
+ }
52
+ ];
53
+
54
+ const bibliography = [
55
+ {
56
+ "name": "Kastle-Meyer test - Wikipedia",
57
+ "url": "https://en.wikipedia.org/wiki/Kastle%E2%80%93Meyer_test"
58
+ },
59
+ {
60
+ "name": "Grodsky, M., Wright, K. & Kirk, P. L. (1951). Simplified preliminary blood testing. An improved technique and comparative study of methods. Journal of Criminal Law and Criminology.",
61
+ "url": "https://scholarlycommons.law.northwestern.edu/jclc/vol42/iss1/10/"
62
+ }
63
+ ];
64
+
65
+ export const content: ToolLocaleContent = {
66
+ slug,
67
+ title,
68
+ description,
69
+ ui: {
70
+ "title": "Simulador de Teste de Sangue",
71
+ "desc": "Realize experiências virtuais de laboratório com reagentes de Luminol e Kastle-Meyer para detetar sangue.",
72
+ "configTitle": "Controlos de Laboratório",
73
+ "sampleLabel": "Selecionar Amostra",
74
+ "reagentLabel": "Selecionar Reagente",
75
+ "lightsLabel": "Iluminação",
76
+ "btnLightsOff": "Desligar Luzes",
77
+ "btnLightsOn": "Ligar Luzes",
78
+ "btnReset": "Limpar Placa",
79
+ "resultsTitle": "Resultados do Teste",
80
+ "sampleBlood": "Amostra de Sangue (Controlo)",
81
+ "sampleRust": "Ferrugem (Óxido de Ferro)",
82
+ "sampleBleach": "Lixívia (Hipoclorito de Sódio)",
83
+ "samplePotato": "Batata (Peroxidase Vegetal)",
84
+ "sampleSaliva": "Amostra de Saliva",
85
+ "reagentKM": "Reagente Kastle-Meyer",
86
+ "reagentH2O2": "Peróxido de Hidrogénio (H2O2)",
87
+ "reagentLuminol": "Solução de Luminol",
88
+ "resultTruePositive": "Verdadeiro Positivo (Sangue Detetado)",
89
+ "resultFalsePositive": "Falso Positivo (Catalisador Não-Sanguíneo)",
90
+ "resultNegative": "Reação Negativa",
91
+ "statusLabel": "Estado da Reação",
92
+ "reactionLabel": "Explicação da Reação",
93
+ "dropReagentBtn": "Aplicar Gota",
94
+ "activeCompounds": "Compostos Ativos",
95
+ "reactionSpeed": "Velocidade de Reação",
96
+ "reactionDuration": "Duração da Reação",
97
+ "specimenBase": "Base do Espécime",
98
+ "kmPending": "Reagente Kastle-Meyer aplicado. Adicione Peróxido de Hidrogénio (H2O2) para catalisar a mudança de cor.",
99
+ "h2o2Only": "Peróxido de hidrogénio aplicado. Sem reação visível sem indicador Kastle-Meyer.",
100
+ "noReaction": "Nenhuma reação observada. A amostra permanece incolor.",
101
+ "luminolBlood": "Brilho azul intenso observado imediatamente no escuro. O heme na hemoglobina oxidou cataliticamente o luminol. Verdadeiro Positivo.",
102
+ "luminolBleach": "Brilho azul muito intenso observado imediatamente, que desapareceu em menos de 2 segundos. A lixívia oxida o luminol diretamente. Falso Positivo.",
103
+ "luminolRust": "Brilho azul fraco observado. Os iões metálicos na ferrugem catalisam fracamente a oxidação. Falso Positivo.",
104
+ "luminolPotato": "Nenhuma luminescência. As peroxidases da batata não catalisam a oxidação do luminol nestas condições. Negativo.",
105
+ "luminolNegative": "Sem luminescência observada no escuro. O composto não é catalítico para a oxidação do luminol. Negativo.",
106
+ "kmBlood": "Coloração rosa brilhante imediata ao adicionar Peróxido de Hidrogénio. O heme no sangue catalisou a oxidação da fenolftalina para fenolftaleína. Verdadeiro Positivo.",
107
+ "kmBleach": "Mudança de cor rosa imediata. O hipoclorito de sódio oxida diretamente a fenolftalina sem necessidade de peróxido. Falso Positivo.",
108
+ "kmRust": "Coloração rosa-acastanhada lenta e fraca após vários segundos. A ferrugem catalisa a reação muito mais lentamente. Falso Positivo.",
109
+ "kmPotato": "Coloração rosa pálida tardia após um atraso. As peroxidases vegetais catalisam fracamente a reação. Falso Positivo.",
110
+ "kmNegative": "Nenhuma mudança de cor observada. A solução permanece incolor. Negativo."
111
+ },
112
+ seo: [
113
+ {
114
+ "type": "title",
115
+ "text": "Guia Completo de Testes Presuntivos de Sangue na Forense",
116
+ "level": 2
117
+ },
118
+ {
119
+ "type": "paragraph",
120
+ "html": "Os testes presuntivos de sangue são métodos preliminares de triagem de elevada sensibilidade utilizados em cenários de crime para detetar vestígios de sangue oculto. Antes de realizar análises dispendiosas e demoradas de sequenciação de ADN, os peritos forenses confiam nestes testes rápidos para localizar fluidos biológicos em peças de vestuário, armas de crime e outras superfícies. Visto que estas análises detetam a atividade catalítica semelhante à peroxidase do grupo heme da hemoglobina, são de natureza presuntiva. Um resultado positivo sugere a presença de sangue, mas requer obrigatoriamente um test confirmatório secundário em laboratório para afastar a possibilidade de falsos positivos."
121
+ },
122
+ {
123
+ "type": "title",
124
+ "text": "Princípio de Funcionamento da Reação de Kastle-Meyer",
125
+ "level": 3
126
+ },
127
+ {
128
+ "type": "paragraph",
129
+ "html": "O teste colorimétrico de Kastle-Meyer (KM) baseia-se na oxidação catalítica da fenolftalina, a forma reduzida e incolor da fenolftaleína. A ordem de aplicação dos reagentes é rigorosa: primeiro, aplica-se o indicador químico fenolftalina na amostra a testar. Caso exista sangue, o grupo heme da hemoglobina atua como um catalisador orgânico. Quando se adiciona o peróxido de hidrogénio, o heme acelera a quebra do peróxido, oxidando imediatamente a fenolftalina para fenolftaleína, o que produz uma coloração rosa brilhante. Uma mudança de cor tardia após quinze segundos é interpretada como reação negativa."
130
+ },
131
+ {
132
+ "type": "title",
133
+ "text": "Luminol e a Reação de Quimioluminescência Forense",
134
+ "level": 3
135
+ },
136
+ {
137
+ "type": "paragraph",
138
+ "html": "O luminol é um composto químico que emite um brilho azul no escuro quando é oxidado na presença de um catalisador metálico. Os técnicos forenses pulverizam uma solução diluída de luminol sobre áreas amplas do local do crime. Ao entrar em contacto com vestígios de sangue, o ferro presente no heme da hemoglobina catalisa a reação química. Esta reação gera um ião aminoftalato excitado que liberta energia sob a forma de luz ao regressar ao estado fundamental. Devido à baixa intensidade da emissão luminosa, é necessário trabalhar em escuridão total para registar fotograficamente o brilho."
139
+ },
140
+ {
141
+ "type": "table",
142
+ "headers": [
143
+ "Substância Testada",
144
+ "Reação Kastle-Meyer",
145
+ "Reação Luminol",
146
+ "Classificação Diagnóstica"
147
+ ],
148
+ "rows": [
149
+ [
150
+ "Sangue Humano Controlo",
151
+ "Coloração rosa brilhante imediata após H2O2.",
152
+ "Brilho azul intenso e duradouro até 8s.",
153
+ "Verdadeiro Positivo. O heme fornece a necessária atividade catalítica."
154
+ ],
155
+ [
156
+ "Lixívia Doméstica",
157
+ "Mudança de cor rosa antes de aplicar H2O2.",
158
+ "Brilho muito forte mas que dura menos de 2s.",
159
+ "Falso Positivo. O oxidante forte reage sem catalisador."
160
+ ],
161
+ [
162
+ "Óxido de Ferro (Ferrugem)",
163
+ "Coloração rosa-acastanhada lenta e fraca.",
164
+ "Brilho azul fraco e difuso.",
165
+ "Falso Positivo. Os iões de ferro livre catalisam com baixa eficiência."
166
+ ],
167
+ [
168
+ "Batata (Peroxidase)",
169
+ "Coloração rosa pálida com atraso.",
170
+ "Sem qualquer luminescência visivel.",
171
+ "Falso Positivo (KM) / Negativo (LUM)."
172
+ ]
173
+ ]
174
+ },
175
+ {
176
+ "type": "title",
177
+ "text": "Diferenciação de Sangue Frente a Falsos Positivos Comuns",
178
+ "level": 3
179
+ },
180
+ {
181
+ "type": "paragraph",
182
+ "html": "A exclusão de reações falsas positivas é uma etapa essencial na análise científica de vestígios criminais. Os produtos de limpeza com hipoclorito de sódio (lixívia) oxidam os reagentes diretamente, simulando sangue. Os peritos distinguem-nos analisando a dinâmica temporal da reação: a lixívia reage no teste KM sem adição de peróxido de hidrogénio e a sua emissão de luminol desaparece quase de imediato. Adicionalmente, as peroxidases de origem vegetal são destruídas pela aplicação de calor, enquanto a hemoglobina do sangue permanece estável."
183
+ }
184
+ ],
185
+ faq,
186
+ bibliography,
187
+ howTo,
188
+ schemas: [
189
+ {
190
+ '@context': 'https://schema.org',
191
+ '@type': 'SoftwareApplication',
192
+ name: title,
193
+ description,
194
+ applicationCategory: 'ForensicApplication',
195
+ operatingSystem: 'Any'
196
+ },
197
+ {
198
+ '@context': 'https://schema.org',
199
+ '@type': 'FAQPage',
200
+ mainEntity: faq.map((item) => ({
201
+ '@type': 'Question',
202
+ name: item.question,
203
+ acceptedAnswer: {
204
+ '@type': 'Answer',
205
+ text: item.answer
206
+ }
207
+ }))
208
+ },
209
+ {
210
+ '@context': 'https://schema.org',
211
+ '@type': 'HowTo',
212
+ name: title,
213
+ step: howTo.map((step) => ({
214
+ '@type': 'HowToStep',
215
+ name: step.name,
216
+ text: step.text
217
+ }))
218
+ }
219
+ ]
220
+ };