@budiauktioner/buildi-primitives 0.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 (107) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/LICENSE +21 -0
  3. package/README.md +253 -0
  4. package/THIRD_PARTY_NOTICES.md +52 -0
  5. package/dist/banking/index.cjs +6491 -0
  6. package/dist/banking/index.cjs.map +1 -0
  7. package/dist/banking/index.d.cts +58 -0
  8. package/dist/banking/index.d.ts +58 -0
  9. package/dist/banking/index.js +6464 -0
  10. package/dist/banking/index.js.map +1 -0
  11. package/dist/contact/index.cjs +6678 -0
  12. package/dist/contact/index.cjs.map +1 -0
  13. package/dist/contact/index.d.cts +709 -0
  14. package/dist/contact/index.d.ts +709 -0
  15. package/dist/contact/index.js +6586 -0
  16. package/dist/contact/index.js.map +1 -0
  17. package/dist/country-BhD51LDL.d.cts +433 -0
  18. package/dist/country-p0n0EVQ9.d.ts +433 -0
  19. package/dist/finance/index.cjs +3592 -0
  20. package/dist/finance/index.cjs.map +1 -0
  21. package/dist/finance/index.d.cts +83 -0
  22. package/dist/finance/index.d.ts +83 -0
  23. package/dist/finance/index.js +3584 -0
  24. package/dist/finance/index.js.map +1 -0
  25. package/dist/geography/index.cjs +4227 -0
  26. package/dist/geography/index.cjs.map +1 -0
  27. package/dist/geography/index.d.cts +34 -0
  28. package/dist/geography/index.d.ts +34 -0
  29. package/dist/geography/index.js +4202 -0
  30. package/dist/geography/index.js.map +1 -0
  31. package/dist/index.cjs +14087 -0
  32. package/dist/index.cjs.map +1 -0
  33. package/dist/index.d.cts +75 -0
  34. package/dist/index.d.ts +75 -0
  35. package/dist/index.js +13868 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/isin-EeVPpNWu.d.ts +39 -0
  38. package/dist/isin-ZlQLBVm8.d.cts +39 -0
  39. package/dist/organization/index.cjs +2376 -0
  40. package/dist/organization/index.cjs.map +1 -0
  41. package/dist/organization/index.d.cts +117 -0
  42. package/dist/organization/index.d.ts +117 -0
  43. package/dist/organization/index.js +2346 -0
  44. package/dist/organization/index.js.map +1 -0
  45. package/dist/person/index.cjs +1144 -0
  46. package/dist/person/index.cjs.map +1 -0
  47. package/dist/person/index.d.cts +60 -0
  48. package/dist/person/index.d.ts +60 -0
  49. package/dist/person/index.js +1125 -0
  50. package/dist/person/index.js.map +1 -0
  51. package/dist/person-full-name-Cmc9Ynuc.d.cts +82 -0
  52. package/dist/person-full-name-D6Hbsab6.d.ts +82 -0
  53. package/dist/phone-number-C24--ggy.d.ts +139 -0
  54. package/dist/phone-number-DZ-YxCQQ.d.cts +139 -0
  55. package/dist/property/index.cjs +487 -0
  56. package/dist/property/index.cjs.map +1 -0
  57. package/dist/property/index.d.cts +56 -0
  58. package/dist/property/index.d.ts +56 -0
  59. package/dist/property/index.js +480 -0
  60. package/dist/property/index.js.map +1 -0
  61. package/dist/sample-data/index.cjs +12310 -0
  62. package/dist/sample-data/index.cjs.map +1 -0
  63. package/dist/sample-data/index.d.cts +260 -0
  64. package/dist/sample-data/index.d.ts +260 -0
  65. package/dist/sample-data/index.js +12302 -0
  66. package/dist/sample-data/index.js.map +1 -0
  67. package/dist/swedish-address-DNC3ftRF.d.cts +297 -0
  68. package/dist/swedish-address-GMzjqgxb.d.ts +297 -0
  69. package/dist/swedish-bank-account-holder-name-BFJ8h1aO.d.cts +45 -0
  70. package/dist/swedish-bank-account-holder-name-CAAru07F.d.ts +45 -0
  71. package/dist/swedish-municipality-DlUS7g7h.d.cts +87 -0
  72. package/dist/swedish-municipality-nDRHYRAd.d.ts +87 -0
  73. package/dist/swedish-organization-name-D7NvERxA.d.cts +33 -0
  74. package/dist/swedish-organization-name-rR0Q836C.d.ts +33 -0
  75. package/dist/swedish-organization-number-Bcj7V_lh.d.cts +130 -0
  76. package/dist/swedish-organization-number-DM8dpXwR.d.ts +130 -0
  77. package/dist/swedish-organization-type-CZOdETwG.d.cts +29 -0
  78. package/dist/swedish-organization-type-CZOdETwG.d.ts +29 -0
  79. package/dist/swedish-personal-identity-number-BiIg4io3.d.ts +149 -0
  80. package/dist/swedish-personal-identity-number-Cp9Coz55.d.cts +149 -0
  81. package/dist/swedish-property-designation-BM-gdd9x.d.ts +46 -0
  82. package/dist/swedish-property-designation-BaHXufqV.d.cts +46 -0
  83. package/dist/swedish-sni-code-Ccsswpni.d.ts +53 -0
  84. package/dist/swedish-sni-code-CuJFyM6l.d.cts +53 -0
  85. package/dist/swedish-swish-number-CL6Gx_h3.d.cts +397 -0
  86. package/dist/swedish-swish-number-DDG3mNDg.d.ts +397 -0
  87. package/dist/text-candidate-qg2bD9PY.d.cts +110 -0
  88. package/dist/text-candidate-qg2bD9PY.d.ts +110 -0
  89. package/dist/text-scanning/index.cjs +10414 -0
  90. package/dist/text-scanning/index.cjs.map +1 -0
  91. package/dist/text-scanning/index.d.cts +153 -0
  92. package/dist/text-scanning/index.d.ts +153 -0
  93. package/dist/text-scanning/index.js +10406 -0
  94. package/dist/text-scanning/index.js.map +1 -0
  95. package/dist/validation/index.cjs +83 -0
  96. package/dist/validation/index.cjs.map +1 -0
  97. package/dist/validation/index.d.cts +63 -0
  98. package/dist/validation/index.d.ts +63 -0
  99. package/dist/validation/index.js +79 -0
  100. package/dist/validation/index.js.map +1 -0
  101. package/dist/web/index.cjs +3994 -0
  102. package/dist/web/index.cjs.map +1 -0
  103. package/dist/web/index.d.cts +203 -0
  104. package/dist/web/index.d.ts +203 -0
  105. package/dist/web/index.js +3987 -0
  106. package/dist/web/index.js.map +1 -0
  107. package/package.json +211 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/primitives-defaults.ts","../../src/geography/continent.ts","../../src/geography/country-capital.ts","../../src/internal/input-sanitization.ts","../../src/geography/geo-coordinate.ts","../../src/geography/language.ts","../../src/text-scanning/text-candidate-category.ts","../../src/text-scanning/text-candidate.ts","../../src/text-scanning/text-match-confidence.ts","../../src/finance/currency.ts","../../src/geography/country-data.ts","../../src/geography/country-coordinates.ts","../../src/geography/country-capitals.ts","../../src/geography/country-metadata.ts","../../src/geography/country.ts","../../src/geography/swedish-county.ts","../../src/geography/swedish-municipality-data.ts","../../src/geography/swedish-municipality.ts","../../src/geography/adjacency-data.ts","../../src/geography/geography-extensions.ts","../../src/geography/geography-masking.ts","../../src/geography/geography-external-links.ts"],"names":["MAX_INPUT_LENGTH","BY_KEY","BY_NAME","BY_CODE","SCAN_PATTERN","addGenitive"],"mappings":"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KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,EACV,EAAA,EAAI,CAAC,KAAK,CAAA;AAAA,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","file":"index.js","sourcesContent":["/**\n * Configurable defaults that control locale-sensitive behaviour across all\n * primitive types. When not explicitly set, values fall back to safe Swedish\n * defaults (the .NET version derives them from `CultureInfo.CurrentCulture`,\n * which has no direct equivalent in standard JavaScript).\n *\n * Set properties at application startup or override per-request as needed.\n */\n\nconst DEFAULT_CULTURE = \"sv-SE\";\nconst DEFAULT_UI_CULTURE = \"sv-SE\";\nconst DEFAULT_COUNTRY = \"SE\";\nconst DEFAULT_CALLING_CODE = \"46\";\n\ninterface PrimitivesDefaultsState {\n culture: string;\n uiCulture: string;\n countryAlpha2Code: string;\n defaultCallingCode: string;\n}\n\nconst state: PrimitivesDefaultsState = {\n culture: DEFAULT_CULTURE,\n uiCulture: DEFAULT_UI_CULTURE,\n countryAlpha2Code: DEFAULT_COUNTRY,\n defaultCallingCode: DEFAULT_CALLING_CODE,\n};\n\n/**\n * Configurable global defaults for locale, UI language, and default country.\n *\n * These mirror the .NET `PrimitivesDefaults` static class. `culture` controls\n * formatting and casing (Swedish-aware character handling for `Å`/`Ä`/`Ö`),\n * `uiCulture` controls display-name language selection (Swedish vs English),\n * and `countryAlpha2Code` is used as the default ISO 3166-1 alpha-2 country\n * when no explicit country is supplied.\n */\nexport const PrimitivesDefaults = {\n /**\n * BCP-47 locale tag used for casing and number formatting.\n * Defaults to `'sv-SE'`.\n */\n get culture(): string {\n return state.culture;\n },\n set culture(value: string) {\n state.culture = value;\n },\n\n /**\n * BCP-47 locale tag used for display-name language selection.\n * Defaults to `'sv-SE'`.\n */\n get uiCulture(): string {\n return state.uiCulture;\n },\n set uiCulture(value: string) {\n state.uiCulture = value;\n },\n\n /**\n * Default ISO 3166-1 alpha-2 country code. Used by types like\n * `PhoneNumber` and `SwedishOrganizationIdentifierParser` when no explicit\n * country is supplied. Defaults to `'SE'`.\n */\n get countryAlpha2Code(): string {\n return state.countryAlpha2Code;\n },\n set countryAlpha2Code(value: string) {\n state.countryAlpha2Code = value;\n },\n\n /**\n * Default phone calling code (digits only, no `+`). Used by {@link PhoneNumber}\n * for inputs without an explicit country prefix. Defaults to `'46'` (Sweden).\n */\n get defaultCallingCode(): string {\n return state.defaultCallingCode;\n },\n set defaultCallingCode(value: string) {\n state.defaultCallingCode = value;\n },\n\n /**\n * `true` when {@link uiCulture} is Swedish (`sv` or `sv-*`).\n * Types use this to select between localized and English display names.\n */\n get useLocalizedDisplayNames(): boolean {\n const lang = state.uiCulture.toLowerCase().split(\"-\")[0];\n return lang === \"sv\";\n },\n\n /** Resets all overrides to the package defaults. */\n reset(): void {\n state.culture = DEFAULT_CULTURE;\n state.uiCulture = DEFAULT_UI_CULTURE;\n state.countryAlpha2Code = DEFAULT_COUNTRY;\n state.defaultCallingCode = DEFAULT_CALLING_CODE;\n },\n};\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { PrimitivesDefaults } from \"../primitives-defaults.js\";\n\nconst MAX_INPUT_LENGTH = 50;\n\nexport interface ContinentFormatOptions {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n}\n\n/**\n * A continent (`kontinent`) identified by its two-letter code, English name,\n * or Swedish name. Seven continents are recognized: Africa, Antarctica, Asia,\n * Europe, North America, Oceania, and South America.\n *\n * Sources:\n * - UN M49 Standard\n * - Datahub continent codes\n */\nexport class Continent {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Continent\",\n localizedName: \"Kontinent\",\n emoji: \"\\u{1F5FA}\\uFE0F\",\n sources: Object.freeze([\n \"https://unstats.un.org/unsd/methodology/m49/\",\n \"https://datahub.io/core/continent-codes\",\n ]),\n });\n\n static readonly Africa: Continent = new Continent(\"AF\", \"Africa\", \"Afrika\");\n static readonly Antarctica: Continent = new Continent(\"AN\", \"Antarctica\", \"Antarktis\");\n static readonly Asia: Continent = new Continent(\"AS\", \"Asia\", \"Asien\");\n static readonly Europe: Continent = new Continent(\"EU\", \"Europe\", \"Europa\");\n static readonly NorthAmerica: Continent = new Continent(\"NA\", \"North America\", \"Nordamerika\");\n static readonly Oceania: Continent = new Continent(\"OC\", \"Oceania\", \"Oceanien\");\n static readonly SouthAmerica: Continent = new Continent(\"SA\", \"South America\", \"Sydamerika\");\n\n /** All seven continents. */\n static readonly all: readonly Continent[] = Object.freeze([\n Continent.Africa,\n Continent.Antarctica,\n Continent.Asia,\n Continent.Europe,\n Continent.NorthAmerica,\n Continent.Oceania,\n Continent.SouthAmerica,\n ]);\n\n readonly code: string;\n readonly englishName: string;\n readonly localizedName: string;\n\n private constructor(code: string, englishName: string, localizedName: string) {\n this.code = code;\n this.englishName = englishName;\n this.localizedName = localizedName;\n }\n\n get displayName(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n get value(): string {\n return this.code;\n }\n\n static tryParse(input: string | null | undefined): Continent | null {\n if (input == null) return null;\n const trimmed = input.trim();\n if (trimmed.length === 0 || trimmed.length > MAX_INPUT_LENGTH) return null;\n const lower = trimmed.toLowerCase();\n return BY_KEY.get(lower) ?? null;\n }\n\n static parse(input: string): Continent {\n const r = Continent.tryParse(input);\n if (r === null) throw new Error(\"Unknown continent.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return Continent.tryParse(input) !== null;\n }\n\n static format(input: string | null | undefined, options?: ContinentFormatOptions): string | null {\n const r = Continent.tryParse(input);\n if (r) return r.displayName;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n static normalize(\n input: string | null | undefined,\n options?: ContinentFormatOptions,\n ): string | null {\n const r = Continent.tryParse(input);\n if (r) return r.code;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null) {\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n return null;\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && Continent.normalize(input) === input;\n }\n\n toNormalizedString(): string {\n return this.code;\n }\n\n toString(): string {\n return this.displayName;\n }\n\n equals(other: Continent | null | undefined): boolean {\n return other != null && this.code === other.code;\n }\n\n compareTo(other: Continent | null | undefined): number {\n if (other == null) return 1;\n return this.code < other.code ? -1 : this.code > other.code ? 1 : 0;\n }\n}\n\nconst BY_KEY = (() => {\n const m = new Map<string, Continent>();\n for (const c of Continent.all) {\n m.set(c.code.toLowerCase(), c);\n m.set(c.englishName.toLowerCase(), c);\n m.set(c.localizedName.toLowerCase(), c);\n }\n return m;\n})();\n","import { PrimitivesDefaults } from \"../primitives-defaults.js\";\nimport { GeoCoordinate } from \"./geo-coordinate.js\";\n\n/**\n * The capital city of a country (`huvudstad`), with names in English, Swedish,\n * and the country's native language, plus its geographic coordinates.\n */\nexport class CountryCapital {\n readonly englishName: string;\n readonly localizedName: string;\n readonly nativeName: string;\n readonly coordinate: GeoCoordinate;\n\n /** @internal */\n constructor(\n englishName: string,\n localizedName: string,\n nativeName: string,\n coordinate: GeoCoordinate,\n ) {\n this.englishName = englishName;\n this.localizedName = localizedName;\n this.nativeName = nativeName;\n this.coordinate = coordinate;\n }\n\n /** Capital city name in the current display language. */\n get displayName(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n toString(): string {\n return this.displayName;\n }\n}\n","/**\n * Shared input sanitization for text inputs across domain types.\n * Provides invisible-character stripping, whitespace normalization, and common\n * character-filtering helpers (digits-only, alphanumeric-only, collapse whitespace).\n *\n * Real-world inputs (e.g. from CRM/banking systems) commonly contain invisible\n * Unicode characters that break validation while being completely invisible in UIs\n * and logs. The most frequent offender is `U+202A` LEFT-TO-RIGHT EMBEDDING,\n * especially on values originating from RTL-language contexts (Arabic, Hebrew).\n * Other common contaminants include non-breaking spaces from web/PDF copy-paste,\n * null bytes from binary data, stray newlines from multi-line form fields,\n * and typographic (smart/curly) quotes from mobile keyboards and word processors.\n *\n * Equivalent of `Buildi.Primitives.InputSanitization` (internal in .NET).\n * Exposed via `internal/` and not re-exported from the public package entry.\n */\n\nconst FORMAT_OR_NOT_ASSIGNED = /[\\p{Cf}\\p{Cn}]/u;\nconst SPACE_SEPARATOR = /[\\p{Zs}\\p{Zl}\\p{Zp}]/u;\nconst CONTROL = /\\p{Cc}/u;\n\n/**\n * Strips invisible/non-printable characters, normalizes all whitespace variants\n * to ASCII space (`U+0020`), normalizes typographic single quotes to ASCII\n * apostrophe (`'`), and normalizes typographic and guillemet double quotes to\n * ASCII quotation mark (`\"`).\n */\nexport function sanitizeInput(input: string): string {\n let out = \"\";\n for (const c of input) {\n // Smart single quotes -> ASCII apostrophe.\n if (c === \"\\u2018\" || c === \"\\u2019\" || c === \"\\u201A\" || c === \"\\u201B\") {\n out += \"'\";\n continue;\n }\n // Smart and guillemet double quotes -> ASCII quotation mark.\n if (\n c === \"\\u201C\" ||\n c === \"\\u201D\" ||\n c === \"\\u201E\" ||\n c === \"\\u201F\" ||\n c === \"\\u00AB\" ||\n c === \"\\u00BB\"\n ) {\n out += '\"';\n continue;\n }\n\n if (FORMAT_OR_NOT_ASSIGNED.test(c)) {\n // Drop format characters (Cf) and unassigned code points (Cn).\n continue;\n }\n\n if (CONTROL.test(c)) {\n if (c === \"\\t\" || c === \"\\n\" || c === \"\\r\") out += \" \";\n continue;\n }\n\n if (SPACE_SEPARATOR.test(c)) {\n out += \" \";\n continue;\n }\n\n out += c;\n }\n return out;\n}\n\nconst WHITESPACE_RUN = /\\s+/g;\n\n/**\n * Sanitizes the input, trims, and collapses whitespace runs to a single space.\n * Returns an empty string when `input` is `null` or `undefined`.\n */\nexport function collapseWhitespace(input: string | null | undefined): string {\n if (input == null) return \"\";\n return sanitizeInput(input).trim().replace(WHITESPACE_RUN, \" \");\n}\n\n/** Keeps only ASCII digits (`0`-`9`), stripping everything else. */\nexport function keepDigits(input: string): string {\n let out = \"\";\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n if (c >= 0x30 && c <= 0x39) out += input[i];\n }\n return out;\n}\n\n/**\n * Keeps only ASCII letters and digits, uppercasing letters.\n * Strips whitespace, hyphens, and all other non-alphanumeric characters.\n */\nexport function keepAsciiAlphanumericUppercase(input: string): string {\n let out = \"\";\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n if (c >= 0x30 && c <= 0x39) out += input[i];\n else if (c >= 0x41 && c <= 0x5a) out += input[i];\n else if (c >= 0x61 && c <= 0x7a) out += String.fromCharCode(c - 32);\n }\n return out;\n}\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\n\nexport interface GeoCoordinateFormatOptions {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n}\n\n/**\n * A geographic coordinate pair (latitude, longitude) in the WGS 84 reference\n * system (`geografisk koordinat`). Parsing accepts decimal degrees, degrees\n * with cardinal directions, DMS, and DDM formats. Swedish cardinal letters Ö\n * (east) and V (west) are accepted alongside E and W.\n */\nexport class GeoCoordinate {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Geographic Coordinate\",\n localizedName: \"Geografisk koordinat\",\n emoji: \"\\u{1F4CD}\",\n sources: Object.freeze([\n \"https://en.wikipedia.org/wiki/Geographic_coordinate_system\",\n \"https://epsg.io/4326\",\n ]),\n });\n\n readonly latitude: number;\n readonly longitude: number;\n\n private constructor(latitude: number, longitude: number) {\n this.latitude = latitude;\n this.longitude = longitude;\n }\n\n /** @internal */\n static _unsafe(latitude: number, longitude: number): GeoCoordinate {\n return new GeoCoordinate(latitude, longitude);\n }\n\n get latitudeDirection(): \"N\" | \"S\" {\n return this.latitude >= 0 ? \"N\" : \"S\";\n }\n\n get longitudeDirection(): \"E\" | \"W\" {\n return this.longitude >= 0 ? \"E\" : \"W\";\n }\n\n /** Creates a coordinate from explicit latitude and longitude values. */\n static create(latitude: number, longitude: number): GeoCoordinate {\n if (!Number.isFinite(latitude) || latitude < -90 || latitude > 90) {\n throw new RangeError(\"Latitude must be between -90 and 90.\");\n }\n if (!Number.isFinite(longitude) || longitude < -180 || longitude > 180) {\n throw new RangeError(\"Longitude must be between -180 and 180.\");\n }\n return GeoCoordinate._unsafe(latitude, longitude);\n }\n\n static tryParse(input: string | null | undefined): GeoCoordinate | null {\n if (input == null || input.trim() === \"\") return null;\n const sanitized = sanitizeInput(input).trim();\n if (sanitized.length === 0 || sanitized.length > 200) return null;\n\n let m: RegExpMatchArray | null;\n\n m = sanitized.match(DECIMAL_DEGREES);\n if (m) return tryDecimal(m.groups!.lat!, m.groups!.lon!);\n\n m = sanitized.match(SPACE_SEPARATED);\n if (m) return tryDecimal(m.groups!.lat!, m.groups!.lon!);\n\n m = sanitized.match(DECIMAL_CARDINAL_SUFFIX);\n if (m) {\n return tryDecimalCardinal(\n m.groups!.lat!,\n m.groups!.latDir!,\n m.groups!.lon!,\n m.groups!.lonDir!,\n );\n }\n\n m = sanitized.match(CARDINAL_PREFIX);\n if (m) {\n return tryDecimalCardinal(\n m.groups!.lat!,\n m.groups!.latDir!,\n m.groups!.lon!,\n m.groups!.lonDir!,\n );\n }\n\n m = sanitized.match(DMS);\n if (m) return tryDms(m.groups!);\n\n m = sanitized.match(DDM);\n if (m) return tryDdm(m.groups!);\n\n return null;\n }\n\n static parse(input: string): GeoCoordinate {\n const r = GeoCoordinate.tryParse(input);\n if (r === null) throw new Error(\"Invalid geographic coordinate.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return GeoCoordinate.tryParse(input) !== null;\n }\n\n static format(\n input: string | null | undefined,\n options?: GeoCoordinateFormatOptions,\n ): string | null {\n const r = GeoCoordinate.tryParse(input);\n if (r) return r.toString();\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n static normalize(\n input: string | null | undefined,\n options?: GeoCoordinateFormatOptions,\n ): string | null {\n const r = GeoCoordinate.tryParse(input);\n if (r) return r.toNormalizedString();\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null) {\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n return null;\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && GeoCoordinate.normalize(input) === input;\n }\n\n toNormalizedString(): string {\n return `${formatNumber(this.latitude)}, ${formatNumber(this.longitude)}`;\n }\n\n toString(): string {\n return `${formatNumber(Math.abs(this.latitude))}°${this.latitudeDirection}, ${formatNumber(Math.abs(this.longitude))}°${this.longitudeDirection}`;\n }\n\n /** Returns the coordinate in degrees, minutes, and seconds, e.g. `59°19'45.5\"N, 18°4'7\"E`. */\n toDmsString(): string {\n const [latDeg, latMin, latSec] = toDmsParts(Math.abs(this.latitude));\n const [lonDeg, lonMin, lonSec] = toDmsParts(Math.abs(this.longitude));\n return `${latDeg}°${latMin}'${formatSeconds(latSec)}\"${this.latitudeDirection}, ${lonDeg}°${lonMin}'${formatSeconds(lonSec)}\"${this.longitudeDirection}`;\n }\n\n /** Distance in kilometers (Haversine) between two coordinates. */\n static distanceKilometers(a: GeoCoordinate, b: GeoCoordinate): number {\n return haversineKm(a, b);\n }\n\n /** Returns true if coordinates `a` and `b` are within `radiusKm` kilometers of each other. */\n static isWithinKilometers(a: GeoCoordinate, b: GeoCoordinate, radiusKm: number): boolean {\n return GeoCoordinate.distanceKilometers(a, b) <= radiusKm;\n }\n\n /** Distance in kilometers from this coordinate to `other`. */\n distanceKilometersTo(other: GeoCoordinate): number {\n return haversineKm(this, other);\n }\n\n /**\n * Returns true if `other` is within `radiusKm` kilometers of this\n * coordinate (inclusive).\n */\n isWithinKilometers(other: GeoCoordinate, radiusKm: number): boolean {\n return this.distanceKilometersTo(other) <= radiusKm;\n }\n\n equals(other: GeoCoordinate | null | undefined): boolean {\n return other != null && this.latitude === other.latitude && this.longitude === other.longitude;\n }\n}\n\n// --- Regexes ---\n\nconst DECIMAL_DEGREES =\n /^\\s*\\(?\\s*(?<lat>[+-]?\\d+(?:\\.\\d+)?)\\s*[,;]\\s*(?<lon>[+-]?\\d+(?:\\.\\d+)?)\\s*\\)?\\s*$/;\n\nconst SPACE_SEPARATED =\n /^\\s*\\(?\\s*(?<lat>[+-]?\\d+(?:\\.\\d+)?)\\s+(?<lon>[+-]?\\d+(?:\\.\\d+)?)\\s*\\)?\\s*$/;\n\nconst DECIMAL_CARDINAL_SUFFIX =\n /^\\s*\\(?\\s*(?<lat>\\d+(?:\\.\\d+)?)\\s*°?\\s*(?<latDir>[NSns])\\s*[,;\\s]\\s*(?<lon>\\d+(?:\\.\\d+)?)\\s*°?\\s*(?<lonDir>[EWewÖöVv])\\s*\\)?\\s*$/u;\n\nconst CARDINAL_PREFIX =\n /^\\s*\\(?\\s*(?<latDir>[NSns])\\s*(?<lat>\\d+(?:\\.\\d+)?)\\s*°?\\s*[,;\\s]\\s*(?<lonDir>[EWewÖöVv])\\s*(?<lon>\\d+(?:\\.\\d+)?)\\s*°?\\s*\\)?\\s*$/u;\n\nconst DMS =\n /^\\s*\\(?\\s*(?<latDeg>\\d+)\\s*°\\s*(?<latMin>\\d+)\\s*[′']\\s*(?<latSec>\\d+(?:\\.\\d+)?)\\s*[″\"]\\s*(?<latDir>[NSns])\\s*[,;\\s]\\s*(?<lonDeg>\\d+)\\s*°\\s*(?<lonMin>\\d+)\\s*[′']\\s*(?<lonSec>\\d+(?:\\.\\d+)?)\\s*[″\"]\\s*(?<lonDir>[EWewÖöVv])\\s*\\)?\\s*$/u;\n\nconst DDM =\n /^\\s*\\(?\\s*(?<latDeg>\\d+)\\s*°\\s*(?<latDecMin>\\d+(?:\\.\\d+)?)\\s*[′']\\s*(?<latDir>[NSns])\\s*[,;\\s]\\s*(?<lonDeg>\\d+)\\s*°\\s*(?<lonDecMin>\\d+(?:\\.\\d+)?)\\s*[′']\\s*(?<lonDir>[EWewÖöVv])\\s*\\)?\\s*$/u;\n\n// --- Helpers ---\n\nfunction tryDecimal(latStr: string, lonStr: string): GeoCoordinate | null {\n const lat = parseFloat(latStr);\n const lon = parseFloat(lonStr);\n if (!Number.isFinite(lat) || !Number.isFinite(lon)) return null;\n if (!isInRange(lat, lon)) return null;\n return GeoCoordinate._unsafe(lat, lon);\n}\n\nfunction tryDecimalCardinal(\n latStr: string,\n latDir: string,\n lonStr: string,\n lonDir: string,\n): GeoCoordinate | null {\n const lat = applyLatDirection(parseFloat(latStr), latDir);\n const lon = applyLonDirection(parseFloat(lonStr), lonDir);\n if (!Number.isFinite(lat) || !Number.isFinite(lon)) return null;\n if (!isInRange(lat, lon)) return null;\n return GeoCoordinate._unsafe(lat, lon);\n}\n\nfunction tryDms(g: { [key: string]: string }): GeoCoordinate | null {\n const latDeg = parseFloat(g.latDeg!);\n const latMin = parseFloat(g.latMin!);\n const latSec = parseFloat(g.latSec!);\n const lonDeg = parseFloat(g.lonDeg!);\n const lonMin = parseFloat(g.lonMin!);\n const lonSec = parseFloat(g.lonSec!);\n if (latMin >= 60 || latSec >= 60 || lonMin >= 60 || lonSec >= 60) return null;\n let lat = round8(latDeg + latMin / 60 + latSec / 3600);\n let lon = round8(lonDeg + lonMin / 60 + lonSec / 3600);\n lat = applyLatDirection(lat, g.latDir!);\n lon = applyLonDirection(lon, g.lonDir!);\n if (!isInRange(lat, lon)) return null;\n return GeoCoordinate._unsafe(lat, lon);\n}\n\nfunction tryDdm(g: { [key: string]: string }): GeoCoordinate | null {\n const latDeg = parseFloat(g.latDeg!);\n const latDecMin = parseFloat(g.latDecMin!);\n const lonDeg = parseFloat(g.lonDeg!);\n const lonDecMin = parseFloat(g.lonDecMin!);\n if (latDecMin >= 60 || lonDecMin >= 60) return null;\n let lat = round8(latDeg + latDecMin / 60);\n let lon = round8(lonDeg + lonDecMin / 60);\n lat = applyLatDirection(lat, g.latDir!);\n lon = applyLonDirection(lon, g.lonDir!);\n if (!isInRange(lat, lon)) return null;\n return GeoCoordinate._unsafe(lat, lon);\n}\n\nfunction applyLatDirection(lat: number, dir: string): number {\n return dir.toUpperCase() === \"S\" ? -lat : lat;\n}\n\nfunction applyLonDirection(lon: number, dir: string): number {\n const u = dir.toUpperCase();\n return u === \"W\" || u === \"V\" ? -lon : lon;\n}\n\nfunction isInRange(lat: number, lon: number): boolean {\n return lat >= -90 && lat <= 90 && lon >= -180 && lon <= 180;\n}\n\nfunction round8(v: number): number {\n return Math.round(v * 1e8) / 1e8;\n}\n\nfunction toDmsParts(dd: number): [number, number, number] {\n const degrees = Math.trunc(dd);\n const fracMinutes = (dd - degrees) * 60;\n const minutes = Math.trunc(fracMinutes);\n const seconds = Math.round((fracMinutes - minutes) * 600) / 10;\n return [degrees, minutes, seconds];\n}\n\nfunction formatNumber(value: number): string {\n // Match C# \"G\" format on a double: minimal representation, no trailing zeros.\n // For our use cases this matches `value.toString()` in JS.\n return value.toString();\n}\n\nfunction formatSeconds(seconds: number): string {\n // Match C# \"0.#\" format: drop trailing zero after the decimal point.\n if (Number.isInteger(seconds)) return seconds.toString();\n return seconds.toString().replace(/(\\.\\d*?)0+$/, \"$1\");\n}\n\nfunction haversineKm(a: GeoCoordinate, b: GeoCoordinate): number {\n const R = 6371;\n const dLat = toRadians(b.latitude - a.latitude);\n const dLon = toRadians(b.longitude - a.longitude);\n const lat1 = toRadians(a.latitude);\n const lat2 = toRadians(b.latitude);\n const h = Math.sin(dLat / 2) ** 2 + Math.cos(lat1) * Math.cos(lat2) * Math.sin(dLon / 2) ** 2;\n return R * 2 * Math.atan2(Math.sqrt(h), Math.sqrt(1 - h));\n}\n\nfunction toRadians(degrees: number): number {\n return degrees * (Math.PI / 180);\n}\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { PrimitivesDefaults } from \"../primitives-defaults.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\n\n/** Text direction for a writing system. */\nexport const TextDirection = {\n LeftToRight: \"LeftToRight\",\n RightToLeft: \"RightToLeft\",\n} as const;\nexport type TextDirection = (typeof TextDirection)[keyof typeof TextDirection];\n\n/** Primary writing script / writing system used by a language. */\nexport const WritingScript = {\n Unknown: \"Unknown\",\n Latin: \"Latin\",\n Cyrillic: \"Cyrillic\",\n Arabic: \"Arabic\",\n Greek: \"Greek\",\n Hebrew: \"Hebrew\",\n Devanagari: \"Devanagari\",\n Bengali: \"Bengali\",\n Gurmukhi: \"Gurmukhi\",\n Gujarati: \"Gujarati\",\n Oriya: \"Oriya\",\n Tamil: \"Tamil\",\n Telugu: \"Telugu\",\n Kannada: \"Kannada\",\n Malayalam: \"Malayalam\",\n Sinhala: \"Sinhala\",\n Thai: \"Thai\",\n Lao: \"Lao\",\n Tibetan: \"Tibetan\",\n Myanmar: \"Myanmar\",\n Georgian: \"Georgian\",\n Hangul: \"Hangul\",\n Ethiopic: \"Ethiopic\",\n Cherokee: \"Cherokee\",\n Canadian: \"Canadian\",\n Khmer: \"Khmer\",\n Mongolian: \"Mongolian\",\n Han: \"Han\",\n Armenian: \"Armenian\",\n Thaana: \"Thaana\",\n} as const;\nexport type WritingScript = (typeof WritingScript)[keyof typeof WritingScript];\n\nconst MAX_INPUT_LENGTH = 100;\n\nexport interface LanguageFormatOptions {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n}\n\n/**\n * A language (`språk`) identified by its ISO 639-1 two-letter code, ISO 639-2/T\n * three-letter code, English name, Swedish name, or native name (endonym).\n */\nexport class Language {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Language\",\n localizedName: \"Språk\",\n emoji: \"\\u{1F5E3}\\uFE0F\",\n sources: Object.freeze([\n \"https://www.loc.gov/standards/iso639-2/php/code_list.php\",\n \"https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\",\n \"https://iso639-3.sil.org/\",\n ]),\n });\n\n readonly alpha2Code: string;\n readonly alpha3Code: string;\n readonly englishName: string;\n readonly localizedName: string;\n readonly nativeName: string;\n readonly script: WritingScript;\n readonly direction: TextDirection;\n\n private constructor(\n alpha2: string,\n alpha3: string,\n en: string,\n sv: string,\n native: string,\n script: WritingScript,\n direction: TextDirection,\n ) {\n this.alpha2Code = alpha2;\n this.alpha3Code = alpha3;\n this.englishName = en;\n this.localizedName = sv;\n this.nativeName = native;\n this.script = script;\n this.direction = direction;\n }\n\n get displayName(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n get value(): string {\n return this.alpha2Code;\n }\n\n /** @internal Used by Country and other types. */\n static _create(\n alpha2: string,\n alpha3: string,\n en: string,\n sv: string,\n native: string,\n script: WritingScript,\n direction: TextDirection = TextDirection.LeftToRight,\n ): Language {\n return new Language(alpha2, alpha3, en, sv, native, script, direction);\n }\n\n static tryParse(input: string | null | undefined): Language | null {\n if (input == null || input.trim() === \"\") return null;\n const trimmed = sanitizeInput(input).trim();\n if (trimmed.length === 0 || trimmed.length > MAX_INPUT_LENGTH) return null;\n const lower = trimmed.toLowerCase();\n return BY_KEY.get(lower) ?? null;\n }\n\n static parse(input: string): Language {\n const r = Language.tryParse(input);\n if (r === null) throw new Error(\"Unknown language.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return Language.tryParse(input) !== null;\n }\n\n static format(input: string | null | undefined, options?: LanguageFormatOptions): string | null {\n const r = Language.tryParse(input);\n if (r) return r.displayName;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n static normalize(\n input: string | null | undefined,\n options?: LanguageFormatOptions,\n ): string | null {\n const r = Language.tryParse(input);\n if (r) return r.alpha2Code;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null) {\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n return null;\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && Language.normalize(input) === input;\n }\n\n toNormalizedString(): string {\n return this.alpha2Code;\n }\n\n toDisplayString(): string {\n return this.displayName;\n }\n\n toEnglishString(): string {\n return this.englishName;\n }\n\n toNativeString(): string {\n return this.nativeName;\n }\n\n toString(): string {\n return this.displayName;\n }\n\n equals(other: Language | null | undefined): boolean {\n return other != null && this.alpha2Code === other.alpha2Code;\n }\n\n compareTo(other: Language | null | undefined): number {\n if (other == null) return 1;\n return this.alpha2Code < other.alpha2Code ? -1 : this.alpha2Code > other.alpha2Code ? 1 : 0;\n }\n\n /** All recognized ISO 639-1 languages. */\n static get all(): readonly Language[] {\n return ALL;\n }\n\n // Frequently used language constants — populated below ALL.\n static readonly Afrikaans: Language;\n static readonly Albanian: Language;\n static readonly Arabic: Language;\n static readonly Bulgarian: Language;\n static readonly Catalan: Language;\n static readonly Chinese: Language;\n static readonly Croatian: Language;\n static readonly Czech: Language;\n static readonly Danish: Language;\n static readonly Dutch: Language;\n static readonly English: Language;\n static readonly Estonian: Language;\n static readonly Faroese: Language;\n static readonly Finnish: Language;\n static readonly French: Language;\n static readonly German: Language;\n static readonly Greek: Language;\n static readonly Hindi: Language;\n static readonly Hungarian: Language;\n static readonly Icelandic: Language;\n static readonly Italian: Language;\n static readonly Japanese: Language;\n static readonly Korean: Language;\n static readonly Latvian: Language;\n static readonly Lithuanian: Language;\n static readonly NorthernSami: Language;\n static readonly Norwegian: Language;\n static readonly NorwegianBokmal: Language;\n static readonly NorwegianNynorsk: Language;\n static readonly Polish: Language;\n static readonly Portuguese: Language;\n static readonly Romanian: Language;\n static readonly Russian: Language;\n static readonly Slovak: Language;\n static readonly Slovenian: Language;\n static readonly Spanish: Language;\n static readonly Swahili: Language;\n static readonly Swedish: Language;\n static readonly Turkish: Language;\n static readonly Ukrainian: Language;\n}\n\nconst L = Language._create;\n\nconst ALL: readonly Language[] = Object.freeze([\n L(\"aa\", \"aar\", \"Afar\", \"Afar\", \"Afaraf\", WritingScript.Latin),\n L(\"ab\", \"abk\", \"Abkhazian\", \"Abchaziska\", \"Аҧсуа\", WritingScript.Cyrillic),\n L(\"af\", \"afr\", \"Afrikaans\", \"Afrikaans\", \"Afrikaans\", WritingScript.Latin),\n L(\"ak\", \"aka\", \"Akan\", \"Akan\", \"Akan\", WritingScript.Latin),\n L(\"am\", \"amh\", \"Amharic\", \"Amhariska\", \"አማርኛ\", WritingScript.Ethiopic),\n L(\"an\", \"arg\", \"Aragonese\", \"Aragonesiska\", \"Aragonés\", WritingScript.Latin),\n L(\"ar\", \"ara\", \"Arabic\", \"Arabiska\", \"العربية\", WritingScript.Arabic, TextDirection.RightToLeft),\n L(\"as\", \"asm\", \"Assamese\", \"Assamesiska\", \"অসমীয়া\", WritingScript.Bengali),\n L(\"av\", \"ava\", \"Avaric\", \"Avariska\", \"Авар\", WritingScript.Cyrillic),\n L(\"ay\", \"aym\", \"Aymara\", \"Aymara\", \"Aymar\", WritingScript.Latin),\n L(\"az\", \"aze\", \"Azerbaijani\", \"Azerbajdzjanska\", \"Azərbaycan\", WritingScript.Latin),\n L(\"ba\", \"bak\", \"Bashkir\", \"Basjkiriska\", \"Башҡорт\", WritingScript.Cyrillic),\n L(\"be\", \"bel\", \"Belarusian\", \"Vitryska\", \"Беларуская\", WritingScript.Cyrillic),\n L(\"bg\", \"bul\", \"Bulgarian\", \"Bulgariska\", \"Български\", WritingScript.Cyrillic),\n L(\"bh\", \"bih\", \"Bihari\", \"Bihari\", \"भोजपुरी\", WritingScript.Devanagari),\n L(\"bi\", \"bis\", \"Bislama\", \"Bislama\", \"Bislama\", WritingScript.Latin),\n L(\"bm\", \"bam\", \"Bambara\", \"Bambara\", \"Bamanankan\", WritingScript.Latin),\n L(\"bn\", \"ben\", \"Bengali\", \"Bengali\", \"বাংলা\", WritingScript.Bengali),\n L(\"bo\", \"bod\", \"Tibetan\", \"Tibetanska\", \"བོད་ཡིག\", WritingScript.Tibetan),\n L(\"br\", \"bre\", \"Breton\", \"Bretonska\", \"Brezhoneg\", WritingScript.Latin),\n L(\"bs\", \"bos\", \"Bosnian\", \"Bosniska\", \"Bosanski\", WritingScript.Latin),\n L(\"ca\", \"cat\", \"Catalan\", \"Katalanska\", \"Català\", WritingScript.Latin),\n L(\"ce\", \"che\", \"Chechen\", \"Tjetjenska\", \"Нохчийн\", WritingScript.Cyrillic),\n L(\"ch\", \"cha\", \"Chamorro\", \"Chamorro\", \"Chamoru\", WritingScript.Latin),\n L(\"co\", \"cos\", \"Corsican\", \"Korsikanska\", \"Corsu\", WritingScript.Latin),\n L(\"cr\", \"cre\", \"Cree\", \"Cree\", \"ᓀᐦᐃᔭᐍᐏᐣ\", WritingScript.Canadian),\n L(\"cs\", \"ces\", \"Czech\", \"Tjeckiska\", \"Čeština\", WritingScript.Latin),\n L(\"cu\", \"chu\", \"Church Slavonic\", \"Kyrkoslaviska\", \"Словѣньскъ\", WritingScript.Cyrillic),\n L(\"cv\", \"chv\", \"Chuvash\", \"Tjuvasjiska\", \"Чӑваш\", WritingScript.Cyrillic),\n L(\"cy\", \"cym\", \"Welsh\", \"Walesiska\", \"Cymraeg\", WritingScript.Latin),\n L(\"da\", \"dan\", \"Danish\", \"Danska\", \"Dansk\", WritingScript.Latin),\n L(\"de\", \"deu\", \"German\", \"Tyska\", \"Deutsch\", WritingScript.Latin),\n L(\"dv\", \"div\", \"Divehi\", \"Divehi\", \"ދިވެހި\", WritingScript.Thaana, TextDirection.RightToLeft),\n L(\"dz\", \"dzo\", \"Dzongkha\", \"Dzongkha\", \"རྫོང་ཁ\", WritingScript.Tibetan),\n L(\"ee\", \"ewe\", \"Ewe\", \"Ewe\", \"Eʋegbe\", WritingScript.Latin),\n L(\"el\", \"ell\", \"Greek\", \"Grekiska\", \"Ελληνικά\", WritingScript.Greek),\n L(\"en\", \"eng\", \"English\", \"Engelska\", \"English\", WritingScript.Latin),\n L(\"eo\", \"epo\", \"Esperanto\", \"Esperanto\", \"Esperanto\", WritingScript.Latin),\n L(\"es\", \"spa\", \"Spanish\", \"Spanska\", \"Español\", WritingScript.Latin),\n L(\"et\", \"est\", \"Estonian\", \"Estniska\", \"Eesti\", WritingScript.Latin),\n L(\"eu\", \"eus\", \"Basque\", \"Baskiska\", \"Euskara\", WritingScript.Latin),\n L(\"fa\", \"fas\", \"Persian\", \"Persiska\", \"فارسی\", WritingScript.Arabic, TextDirection.RightToLeft),\n L(\"ff\", \"ful\", \"Fulah\", \"Fulani\", \"Fulfulde\", WritingScript.Latin),\n L(\"fi\", \"fin\", \"Finnish\", \"Finska\", \"Suomi\", WritingScript.Latin),\n L(\"fj\", \"fij\", \"Fijian\", \"Fijianska\", \"Vosa Vakaviti\", WritingScript.Latin),\n L(\"fo\", \"fao\", \"Faroese\", \"Färöiska\", \"Føroyskt\", WritingScript.Latin),\n L(\"fr\", \"fra\", \"French\", \"Franska\", \"Français\", WritingScript.Latin),\n L(\"fy\", \"fry\", \"Western Frisian\", \"Frisiska\", \"Frysk\", WritingScript.Latin),\n L(\"ga\", \"gle\", \"Irish\", \"Iriska\", \"Gaeilge\", WritingScript.Latin),\n L(\"gd\", \"gla\", \"Scottish Gaelic\", \"Skotsk gaeliska\", \"Gàidhlig\", WritingScript.Latin),\n L(\"gl\", \"glg\", \"Galician\", \"Galiciska\", \"Galego\", WritingScript.Latin),\n L(\"gn\", \"grn\", \"Guarani\", \"Guaraní\", \"Avañe'ẽ\", WritingScript.Latin),\n L(\"gu\", \"guj\", \"Gujarati\", \"Gujarati\", \"ગુજરાતી\", WritingScript.Gujarati),\n L(\"gv\", \"glv\", \"Manx\", \"Manx\", \"Gaelg\", WritingScript.Latin),\n L(\"ha\", \"hau\", \"Hausa\", \"Hausa\", \"Hausa\", WritingScript.Latin),\n L(\"he\", \"heb\", \"Hebrew\", \"Hebreiska\", \"עברית\", WritingScript.Hebrew, TextDirection.RightToLeft),\n L(\"hi\", \"hin\", \"Hindi\", \"Hindi\", \"हिन्दी\", WritingScript.Devanagari),\n L(\"ho\", \"hmo\", \"Hiri Motu\", \"Hiri Motu\", \"Hiri Motu\", WritingScript.Latin),\n L(\"hr\", \"hrv\", \"Croatian\", \"Kroatiska\", \"Hrvatski\", WritingScript.Latin),\n L(\"ht\", \"hat\", \"Haitian Creole\", \"Haitisk kreol\", \"Kreyòl Ayisyen\", WritingScript.Latin),\n L(\"hu\", \"hun\", \"Hungarian\", \"Ungerska\", \"Magyar\", WritingScript.Latin),\n L(\"hy\", \"hye\", \"Armenian\", \"Armeniska\", \"Հայերեն\", WritingScript.Armenian),\n L(\"ia\", \"ina\", \"Interlingua\", \"Interlingua\", \"Interlingua\", WritingScript.Latin),\n L(\"id\", \"ind\", \"Indonesian\", \"Indonesiska\", \"Bahasa Indonesia\", WritingScript.Latin),\n L(\"ie\", \"ile\", \"Interlingue\", \"Interlingue\", \"Interlingue\", WritingScript.Latin),\n L(\"ig\", \"ibo\", \"Igbo\", \"Igbo\", \"Igbo\", WritingScript.Latin),\n L(\"ii\", \"iii\", \"Sichuan Yi\", \"Yi\", \"ꆈꌠ꒡\", WritingScript.Unknown),\n L(\"ik\", \"ipk\", \"Inupiaq\", \"Inupiaq\", \"Iñupiaq\", WritingScript.Latin),\n L(\"io\", \"ido\", \"Ido\", \"Ido\", \"Ido\", WritingScript.Latin),\n L(\"is\", \"isl\", \"Icelandic\", \"Isländska\", \"Íslenska\", WritingScript.Latin),\n L(\"it\", \"ita\", \"Italian\", \"Italienska\", \"Italiano\", WritingScript.Latin),\n L(\"iu\", \"iku\", \"Inuktitut\", \"Inuktitut\", \"ᐃᓄᒃᑎᑐᑦ\", WritingScript.Canadian),\n L(\"ja\", \"jpn\", \"Japanese\", \"Japanska\", \"日本語\", WritingScript.Han),\n L(\"jv\", \"jav\", \"Javanese\", \"Javanesiska\", \"Basa Jawa\", WritingScript.Latin),\n L(\"ka\", \"kat\", \"Georgian\", \"Georgiska\", \"ქართული\", WritingScript.Georgian),\n L(\"kg\", \"kon\", \"Kongo\", \"Kikongo\", \"KiKongo\", WritingScript.Latin),\n L(\"ki\", \"kik\", \"Kikuyu\", \"Kikuyu\", \"Gĩkũyũ\", WritingScript.Latin),\n L(\"kj\", \"kua\", \"Kuanyama\", \"Kuanyama\", \"Kuanyama\", WritingScript.Latin),\n L(\"kk\", \"kaz\", \"Kazakh\", \"Kazakiska\", \"Қазақша\", WritingScript.Cyrillic),\n L(\"kl\", \"kal\", \"Kalaallisut\", \"Grönländska\", \"Kalaallisut\", WritingScript.Latin),\n L(\"km\", \"khm\", \"Khmer\", \"Khmer\", \"ភាសាខ្មែរ\", WritingScript.Khmer),\n L(\"kn\", \"kan\", \"Kannada\", \"Kannada\", \"ಕನ್ನಡ\", WritingScript.Kannada),\n L(\"ko\", \"kor\", \"Korean\", \"Koreanska\", \"한국어\", WritingScript.Hangul),\n L(\"kr\", \"kau\", \"Kanuri\", \"Kanuri\", \"Kanuri\", WritingScript.Latin),\n L(\n \"ks\",\n \"kas\",\n \"Kashmiri\",\n \"Kashmiri\",\n \"कश्मीरी\",\n WritingScript.Arabic,\n TextDirection.RightToLeft,\n ),\n L(\"ku\", \"kur\", \"Kurdish\", \"Kurdiska\", \"Kurdî\", WritingScript.Latin),\n L(\"kv\", \"kom\", \"Komi\", \"Komi\", \"Коми\", WritingScript.Cyrillic),\n L(\"kw\", \"cor\", \"Cornish\", \"Korniska\", \"Kernewek\", WritingScript.Latin),\n L(\"ky\", \"kir\", \"Kyrgyz\", \"Kirgiziska\", \"Кыргызча\", WritingScript.Cyrillic),\n L(\"la\", \"lat\", \"Latin\", \"Latin\", \"Latina\", WritingScript.Latin),\n L(\"lb\", \"ltz\", \"Luxembourgish\", \"Luxemburgiska\", \"Lëtzebuergesch\", WritingScript.Latin),\n L(\"lg\", \"lug\", \"Ganda\", \"Luganda\", \"Luganda\", WritingScript.Latin),\n L(\"li\", \"lim\", \"Limburgish\", \"Limburgiska\", \"Limburgs\", WritingScript.Latin),\n L(\"ln\", \"lin\", \"Lingala\", \"Lingala\", \"Lingála\", WritingScript.Latin),\n L(\"lo\", \"lao\", \"Lao\", \"Laotiska\", \"ພາສາລາວ\", WritingScript.Lao),\n L(\"lt\", \"lit\", \"Lithuanian\", \"Litauiska\", \"Lietuvių\", WritingScript.Latin),\n L(\"lu\", \"lub\", \"Luba-Katanga\", \"Luba-Katanga\", \"Kiluba\", WritingScript.Latin),\n L(\"lv\", \"lav\", \"Latvian\", \"Lettiska\", \"Latviešu\", WritingScript.Latin),\n L(\"mg\", \"mlg\", \"Malagasy\", \"Malagassiska\", \"Malagasy\", WritingScript.Latin),\n L(\"mh\", \"mah\", \"Marshallese\", \"Marshallesiska\", \"Kajin M̧ajeļ\", WritingScript.Latin),\n L(\"mi\", \"mri\", \"Maori\", \"Maori\", \"Te Reo Māori\", WritingScript.Latin),\n L(\"mk\", \"mkd\", \"Macedonian\", \"Makedonska\", \"Македонски\", WritingScript.Cyrillic),\n L(\"ml\", \"mal\", \"Malayalam\", \"Malayalam\", \"മലയാളം\", WritingScript.Malayalam),\n L(\"mn\", \"mon\", \"Mongolian\", \"Mongoliska\", \"Монгол\", WritingScript.Cyrillic),\n L(\"mr\", \"mar\", \"Marathi\", \"Marathi\", \"मराठी\", WritingScript.Devanagari),\n L(\"ms\", \"msa\", \"Malay\", \"Malajiska\", \"Bahasa Melayu\", WritingScript.Latin),\n L(\"mt\", \"mlt\", \"Maltese\", \"Maltesiska\", \"Malti\", WritingScript.Latin),\n L(\"my\", \"mya\", \"Burmese\", \"Burmesiska\", \"မြန်မာစာ\", WritingScript.Myanmar),\n L(\"na\", \"nau\", \"Nauru\", \"Nauru\", \"Dorerin Naoero\", WritingScript.Latin),\n L(\"nb\", \"nob\", \"Norwegian Bokmål\", \"Norska (bokmål)\", \"Norsk bokmål\", WritingScript.Latin),\n L(\"nd\", \"nde\", \"Northern Ndebele\", \"Nordndebele\", \"isiNdebele\", WritingScript.Latin),\n L(\"ne\", \"nep\", \"Nepali\", \"Nepalesiska\", \"नेपाली\", WritingScript.Devanagari),\n L(\"ng\", \"ndo\", \"Ndonga\", \"Ndonga\", \"Owambo\", WritingScript.Latin),\n L(\"nl\", \"nld\", \"Dutch\", \"Nederländska\", \"Nederlands\", WritingScript.Latin),\n L(\"nn\", \"nno\", \"Norwegian Nynorsk\", \"Norska (nynorsk)\", \"Norsk nynorsk\", WritingScript.Latin),\n L(\"no\", \"nor\", \"Norwegian\", \"Norska\", \"Norsk\", WritingScript.Latin),\n L(\"nr\", \"nbl\", \"Southern Ndebele\", \"Sydndebele\", \"isiNdebele\", WritingScript.Latin),\n L(\"nv\", \"nav\", \"Navajo\", \"Navajo\", \"Diné Bizaad\", WritingScript.Latin),\n L(\"ny\", \"nya\", \"Chichewa\", \"Chichewa\", \"Chichewa\", WritingScript.Latin),\n L(\"oc\", \"oci\", \"Occitan\", \"Occitanska\", \"Occitan\", WritingScript.Latin),\n L(\"oj\", \"oji\", \"Ojibwa\", \"Ojibwa\", \"ᐊᓂᔑᓈᐯᒧᐎᓐ\", WritingScript.Canadian),\n L(\"om\", \"orm\", \"Oromo\", \"Oromo\", \"Afaan Oromoo\", WritingScript.Latin),\n L(\"or\", \"ori\", \"Oriya\", \"Oriya\", \"ଓଡ଼ିଆ\", WritingScript.Oriya),\n L(\"os\", \"oss\", \"Ossetian\", \"Ossetiska\", \"Ирон\", WritingScript.Cyrillic),\n L(\"pa\", \"pan\", \"Punjabi\", \"Punjabi\", \"ਪੰਜਾਬੀ\", WritingScript.Gurmukhi),\n L(\"pi\", \"pli\", \"Pali\", \"Pali\", \"पालि\", WritingScript.Devanagari),\n L(\"pl\", \"pol\", \"Polish\", \"Polska\", \"Polski\", WritingScript.Latin),\n L(\"ps\", \"pus\", \"Pashto\", \"Pashto\", \"پښتو\", WritingScript.Arabic, TextDirection.RightToLeft),\n L(\"pt\", \"por\", \"Portuguese\", \"Portugisiska\", \"Português\", WritingScript.Latin),\n L(\"qu\", \"que\", \"Quechua\", \"Quechua\", \"Runa Simi\", WritingScript.Latin),\n L(\"rm\", \"roh\", \"Romansh\", \"Rätoromanska\", \"Rumantsch\", WritingScript.Latin),\n L(\"rn\", \"run\", \"Rundi\", \"Kirundi\", \"Ikirundi\", WritingScript.Latin),\n L(\"ro\", \"ron\", \"Romanian\", \"Rumänska\", \"Română\", WritingScript.Latin),\n L(\"ru\", \"rus\", \"Russian\", \"Ryska\", \"Русский\", WritingScript.Cyrillic),\n L(\"rw\", \"kin\", \"Kinyarwanda\", \"Kinyarwanda\", \"Ikinyarwanda\", WritingScript.Latin),\n L(\"sa\", \"san\", \"Sanskrit\", \"Sanskrit\", \"संस्कृतम्\", WritingScript.Devanagari),\n L(\"sc\", \"srd\", \"Sardinian\", \"Sardiska\", \"Sardu\", WritingScript.Latin),\n L(\"sd\", \"snd\", \"Sindhi\", \"Sindhi\", \"سنڌي\", WritingScript.Arabic, TextDirection.RightToLeft),\n L(\"se\", \"sme\", \"Northern Sami\", \"Nordsamiska\", \"Davvisámegiella\", WritingScript.Latin),\n L(\"sg\", \"sag\", \"Sango\", \"Sango\", \"Yângâ tî Sängö\", WritingScript.Latin),\n L(\"si\", \"sin\", \"Sinhala\", \"Singalesiska\", \"සිංහල\", WritingScript.Sinhala),\n L(\"sk\", \"slk\", \"Slovak\", \"Slovakiska\", \"Slovenčina\", WritingScript.Latin),\n L(\"sl\", \"slv\", \"Slovenian\", \"Slovenska\", \"Slovenščina\", WritingScript.Latin),\n L(\"sm\", \"smo\", \"Samoan\", \"Samoanska\", \"Gagana Sāmoa\", WritingScript.Latin),\n L(\"sn\", \"sna\", \"Shona\", \"Shona\", \"ChiShona\", WritingScript.Latin),\n L(\"so\", \"som\", \"Somali\", \"Somaliska\", \"Soomaali\", WritingScript.Latin),\n L(\"sq\", \"sqi\", \"Albanian\", \"Albanska\", \"Shqip\", WritingScript.Latin),\n L(\"sr\", \"srp\", \"Serbian\", \"Serbiska\", \"Српски\", WritingScript.Cyrillic),\n L(\"ss\", \"ssw\", \"Swati\", \"Swati\", \"SiSwati\", WritingScript.Latin),\n L(\"st\", \"sot\", \"Southern Sotho\", \"Sotho\", \"Sesotho\", WritingScript.Latin),\n L(\"su\", \"sun\", \"Sundanese\", \"Sundanesiska\", \"Basa Sunda\", WritingScript.Latin),\n L(\"sv\", \"swe\", \"Swedish\", \"Svenska\", \"Svenska\", WritingScript.Latin),\n L(\"sw\", \"swa\", \"Swahili\", \"Swahili\", \"Kiswahili\", WritingScript.Latin),\n L(\"ta\", \"tam\", \"Tamil\", \"Tamil\", \"தமிழ்\", WritingScript.Tamil),\n L(\"te\", \"tel\", \"Telugu\", \"Telugu\", \"తెలుగు\", WritingScript.Telugu),\n L(\"tg\", \"tgk\", \"Tajik\", \"Tadzjikiska\", \"Тоҷикӣ\", WritingScript.Cyrillic),\n L(\"th\", \"tha\", \"Thai\", \"Thailändska\", \"ไทย\", WritingScript.Thai),\n L(\"ti\", \"tir\", \"Tigrinya\", \"Tigrinja\", \"ትግርኛ\", WritingScript.Ethiopic),\n L(\"tk\", \"tuk\", \"Turkmen\", \"Turkmeniska\", \"Türkmen\", WritingScript.Latin),\n L(\"tl\", \"tgl\", \"Tagalog\", \"Tagalog\", \"Tagalog\", WritingScript.Latin),\n L(\"tn\", \"tsn\", \"Tswana\", \"Tswana\", \"Setswana\", WritingScript.Latin),\n L(\"to\", \"ton\", \"Tongan\", \"Tonganska\", \"Lea Faka-Tonga\", WritingScript.Latin),\n L(\"tr\", \"tur\", \"Turkish\", \"Turkiska\", \"Türkçe\", WritingScript.Latin),\n L(\"ts\", \"tso\", \"Tsonga\", \"Tsonga\", \"Xitsonga\", WritingScript.Latin),\n L(\"tt\", \"tat\", \"Tatar\", \"Tatariska\", \"Татар\", WritingScript.Cyrillic),\n L(\"tw\", \"twi\", \"Twi\", \"Twi\", \"Twi\", WritingScript.Latin),\n L(\"ty\", \"tah\", \"Tahitian\", \"Tahitiska\", \"Reo Tahiti\", WritingScript.Latin),\n L(\n \"ug\",\n \"uig\",\n \"Uyghur\",\n \"Uiguriska\",\n \"ئۇيغۇرچە\",\n WritingScript.Arabic,\n TextDirection.RightToLeft,\n ),\n L(\"uk\", \"ukr\", \"Ukrainian\", \"Ukrainska\", \"Українська\", WritingScript.Cyrillic),\n L(\"ur\", \"urd\", \"Urdu\", \"Urdu\", \"اردو\", WritingScript.Arabic, TextDirection.RightToLeft),\n L(\"uz\", \"uzb\", \"Uzbek\", \"Uzbekiska\", \"Oʻzbek\", WritingScript.Latin),\n L(\"ve\", \"ven\", \"Venda\", \"Venda\", \"Tshivenḓa\", WritingScript.Latin),\n L(\"vi\", \"vie\", \"Vietnamese\", \"Vietnamesiska\", \"Tiếng Việt\", WritingScript.Latin),\n L(\"vo\", \"vol\", \"Volapük\", \"Volapük\", \"Volapük\", WritingScript.Latin),\n L(\"wa\", \"wln\", \"Walloon\", \"Vallonska\", \"Walon\", WritingScript.Latin),\n L(\"wo\", \"wol\", \"Wolof\", \"Wolof\", \"Wollof\", WritingScript.Latin),\n L(\"xh\", \"xho\", \"Xhosa\", \"Xhosa\", \"isiXhosa\", WritingScript.Latin),\n L(\"yi\", \"yid\", \"Yiddish\", \"Jiddisch\", \"ייִדיש\", WritingScript.Hebrew, TextDirection.RightToLeft),\n L(\"yo\", \"yor\", \"Yoruba\", \"Yoruba\", \"Yorùbá\", WritingScript.Latin),\n L(\"za\", \"zha\", \"Zhuang\", \"Zhuang\", \"Saɯ cueŋƅ\", WritingScript.Latin),\n L(\"zh\", \"zho\", \"Chinese\", \"Kinesiska\", \"中文\", WritingScript.Han),\n L(\"zu\", \"zul\", \"Zulu\", \"Zulu\", \"isiZulu\", WritingScript.Latin),\n]);\n\nconst BY_KEY = (() => {\n const m = new Map<string, Language>();\n for (const lang of ALL) {\n m.set(lang.alpha2Code, lang);\n m.set(lang.alpha3Code, lang);\n m.set(lang.englishName.toLowerCase(), lang);\n if (!m.has(lang.localizedName.toLowerCase())) {\n m.set(lang.localizedName.toLowerCase(), lang);\n }\n if (\n lang.nativeName.toLowerCase() !== lang.englishName.toLowerCase() &&\n !m.has(lang.nativeName.toLowerCase())\n ) {\n m.set(lang.nativeName.toLowerCase(), lang);\n }\n }\n return m;\n})();\n\nconst byA2 = (a2: string) => BY_KEY.get(a2)!;\n\n(Language as { Afrikaans: Language }).Afrikaans = byA2(\"af\");\n(Language as { Albanian: Language }).Albanian = byA2(\"sq\");\n(Language as { Arabic: Language }).Arabic = byA2(\"ar\");\n(Language as { Bulgarian: Language }).Bulgarian = byA2(\"bg\");\n(Language as { Catalan: Language }).Catalan = byA2(\"ca\");\n(Language as { Chinese: Language }).Chinese = byA2(\"zh\");\n(Language as { Croatian: Language }).Croatian = byA2(\"hr\");\n(Language as { Czech: Language }).Czech = byA2(\"cs\");\n(Language as { Danish: Language }).Danish = byA2(\"da\");\n(Language as { Dutch: Language }).Dutch = byA2(\"nl\");\n(Language as { English: Language }).English = byA2(\"en\");\n(Language as { Estonian: Language }).Estonian = byA2(\"et\");\n(Language as { Faroese: Language }).Faroese = byA2(\"fo\");\n(Language as { Finnish: Language }).Finnish = byA2(\"fi\");\n(Language as { French: Language }).French = byA2(\"fr\");\n(Language as { German: Language }).German = byA2(\"de\");\n(Language as { Greek: Language }).Greek = byA2(\"el\");\n(Language as { Hindi: Language }).Hindi = byA2(\"hi\");\n(Language as { Hungarian: Language }).Hungarian = byA2(\"hu\");\n(Language as { Icelandic: Language }).Icelandic = byA2(\"is\");\n(Language as { Italian: Language }).Italian = byA2(\"it\");\n(Language as { Japanese: Language }).Japanese = byA2(\"ja\");\n(Language as { Korean: Language }).Korean = byA2(\"ko\");\n(Language as { Latvian: Language }).Latvian = byA2(\"lv\");\n(Language as { Lithuanian: Language }).Lithuanian = byA2(\"lt\");\n(Language as { NorthernSami: Language }).NorthernSami = byA2(\"se\");\n(Language as { Norwegian: Language }).Norwegian = byA2(\"no\");\n(Language as { NorwegianBokmal: Language }).NorwegianBokmal = byA2(\"nb\");\n(Language as { NorwegianNynorsk: Language }).NorwegianNynorsk = byA2(\"nn\");\n(Language as { Polish: Language }).Polish = byA2(\"pl\");\n(Language as { Portuguese: Language }).Portuguese = byA2(\"pt\");\n(Language as { Romanian: Language }).Romanian = byA2(\"ro\");\n(Language as { Russian: Language }).Russian = byA2(\"ru\");\n(Language as { Slovak: Language }).Slovak = byA2(\"sk\");\n(Language as { Slovenian: Language }).Slovenian = byA2(\"sl\");\n(Language as { Spanish: Language }).Spanish = byA2(\"es\");\n(Language as { Swahili: Language }).Swahili = byA2(\"sw\");\n(Language as { Swedish: Language }).Swedish = byA2(\"sv\");\n(Language as { Turkish: Language }).Turkish = byA2(\"tr\");\n(Language as { Ukrainian: Language }).Ukrainian = byA2(\"uk\");\n","/**\n * Broad classification of a {@link TextCandidate} for filtering and selective\n * masking.\n */\nexport const TextCandidateCategory = {\n PersonalIdentifier: \"PersonalIdentifier\",\n OrganizationIdentifier: \"OrganizationIdentifier\",\n Financial: \"Financial\",\n Contact: \"Contact\",\n Vehicle: \"Vehicle\",\n Property: \"Property\",\n Product: \"Product\",\n Geography: \"Geography\",\n Measurement: \"Measurement\",\n} as const;\n\nexport type TextCandidateCategory =\n (typeof TextCandidateCategory)[keyof typeof TextCandidateCategory];\n","import { TextCandidateCategory } from \"./text-candidate-category.js\";\nimport { TextMatchConfidence } from \"./text-match-confidence.js\";\n\n/**\n * A potential match of a structured type found in unstructured text.\n *\n * Text scanning is heuristic-based. Candidates may be false positives, and\n * valid occurrences may be missed. No guarantee is made that the matched text\n * actually represents the identified type in its original context.\n */\nexport class TextCandidate<T = unknown> {\n /** Zero-based start position in the scanned text. */\n readonly startIndex: number;\n /** Number of characters in the original matched span. */\n readonly length: number;\n /** The raw substring from the input text that was matched. */\n readonly originalText: string;\n /**\n * Short type name, e.g. `EmailAddress` or `SwedishPersonalIdentityNumber`.\n */\n readonly typeName: string;\n /** Broad category of the matched type. */\n readonly category: TextCandidateCategory;\n /** Machine-comparable canonical form of the matched value. */\n readonly normalizedForm: string;\n /** Human-readable display form of the matched value. */\n readonly formattedForm: string;\n /**\n * Display form with sensitive content masked (e.g. `990807-****`).\n * Produced by the type's `toMaskedString()` helper.\n */\n readonly maskedForm: string;\n /** Heuristic confidence level. */\n readonly confidence: TextMatchConfidence;\n /** The successfully parsed instance of the matched type. */\n readonly value: T;\n\n constructor(opts: {\n startIndex: number;\n length: number;\n originalText: string;\n typeName: string;\n category: TextCandidateCategory;\n normalizedForm: string;\n formattedForm: string;\n maskedForm: string;\n confidence: TextMatchConfidence;\n value: T;\n }) {\n this.startIndex = opts.startIndex;\n this.length = opts.length;\n this.originalText = opts.originalText;\n this.typeName = opts.typeName;\n this.category = opts.category;\n this.normalizedForm = opts.normalizedForm;\n this.formattedForm = opts.formattedForm;\n this.maskedForm = opts.maskedForm;\n this.confidence = opts.confidence;\n this.value = opts.value;\n }\n\n /** Exclusive end position (`startIndex + length`). */\n get endIndex(): number {\n return this.startIndex + this.length;\n }\n\n /** Returns `true` if this candidate's span overlaps with `other`. */\n overlaps(other: TextCandidate): boolean {\n return this.startIndex < other.endIndex && other.startIndex < this.endIndex;\n }\n\n /** Returns `true` if this candidate's span fully contains `other`. */\n contains(other: TextCandidate): boolean {\n return this.startIndex <= other.startIndex && this.endIndex >= other.endIndex;\n }\n}\n","/**\n * Indicates the confidence level of a candidate found by text scanning.\n * Higher confidence means stronger structural evidence, but no level guarantees\n * the absence of false positives.\n */\nexport const TextMatchConfidence = {\n /**\n * Pattern match only. High false-positive risk — the matched text merely\n * fits a syntactic pattern (e.g. a run of digits that happens to be the\n * right length).\n */\n Low: 0,\n /**\n * Structural match with partial validation — the format is correct but no\n * checksum or strong distinguishing feature confirms the match.\n */\n Medium: 1,\n /**\n * Strong match with checksum or format-specific validation (e.g. a personal\n * identity number with a valid Luhn check digit and plausible date, or an\n * IBAN with valid MOD-97).\n */\n High: 2,\n} as const;\n\nexport type TextMatchConfidence = (typeof TextMatchConfidence)[keyof typeof TextMatchConfidence];\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { PrimitivesDefaults } from \"../primitives-defaults.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\n// `geography/country.ts` imports this module for its currency accessors. Both\n// directions are only used inside function bodies, never at module-evaluation\n// time, so the cycle resolves safely under ESM.\nimport { Country } from \"../geography/country.js\";\n\ninterface CurrencyRow {\n code: string;\n en: string;\n sv: string;\n symbol: string;\n decimalPlaces: number;\n}\n\nconst KNOWN_CURRENCIES: readonly CurrencyRow[] = [\n { code: \"SEK\", en: \"Swedish krona\", sv: \"Svensk krona\", symbol: \"kr\", decimalPlaces: 2 },\n { code: \"NOK\", en: \"Norwegian krone\", sv: \"Norsk krona\", symbol: \"kr\", decimalPlaces: 2 },\n { code: \"DKK\", en: \"Danish krone\", sv: \"Dansk krona\", symbol: \"kr\", decimalPlaces: 2 },\n { code: \"ISK\", en: \"Icelandic króna\", sv: \"Isländsk krona\", symbol: \"kr\", decimalPlaces: 0 },\n { code: \"EUR\", en: \"Euro\", sv: \"Euro\", symbol: \"€\", decimalPlaces: 2 },\n {\n code: \"USD\",\n en: \"United States dollar\",\n sv: \"Amerikansk dollar\",\n symbol: \"$\",\n decimalPlaces: 2,\n },\n { code: \"GBP\", en: \"Pound sterling\", sv: \"Brittiskt pund\", symbol: \"£\", decimalPlaces: 2 },\n { code: \"CHF\", en: \"Swiss franc\", sv: \"Schweizisk franc\", symbol: \"CHF\", decimalPlaces: 2 },\n { code: \"JPY\", en: \"Japanese yen\", sv: \"Japansk yen\", symbol: \"¥\", decimalPlaces: 0 },\n { code: \"CNY\", en: \"Chinese yuan\", sv: \"Kinesisk yuan\", symbol: \"¥\", decimalPlaces: 2 },\n { code: \"CAD\", en: \"Canadian dollar\", sv: \"Kanadensisk dollar\", symbol: \"CA$\", decimalPlaces: 2 },\n { code: \"AUD\", en: \"Australian dollar\", sv: \"Australisk dollar\", symbol: \"A$\", decimalPlaces: 2 },\n {\n code: \"NZD\",\n en: \"New Zealand dollar\",\n sv: \"Nyzeeländsk dollar\",\n symbol: \"NZ$\",\n decimalPlaces: 2,\n },\n { code: \"PLN\", en: \"Polish złoty\", sv: \"Polsk zloty\", symbol: \"zł\", decimalPlaces: 2 },\n { code: \"CZK\", en: \"Czech koruna\", sv: \"Tjeckisk koruna\", symbol: \"Kč\", decimalPlaces: 2 },\n { code: \"HUF\", en: \"Hungarian forint\", sv: \"Ungersk forint\", symbol: \"Ft\", decimalPlaces: 2 },\n { code: \"RON\", en: \"Romanian leu\", sv: \"Rumänsk leu\", symbol: \"lei\", decimalPlaces: 2 },\n { code: \"BGN\", en: \"Bulgarian lev\", sv: \"Bulgarisk lev\", symbol: \"лв\", decimalPlaces: 2 },\n { code: \"HRK\", en: \"Croatian kuna\", sv: \"Kroatisk kuna\", symbol: \"kn\", decimalPlaces: 2 },\n { code: \"TRY\", en: \"Turkish lira\", sv: \"Turkisk lira\", symbol: \"₺\", decimalPlaces: 2 },\n { code: \"RUB\", en: \"Russian ruble\", sv: \"Rysk rubel\", symbol: \"₽\", decimalPlaces: 2 },\n { code: \"INR\", en: \"Indian rupee\", sv: \"Indisk rupie\", symbol: \"₹\", decimalPlaces: 2 },\n { code: \"BRL\", en: \"Brazilian real\", sv: \"Brasiliansk real\", symbol: \"R$\", decimalPlaces: 2 },\n { code: \"ZAR\", en: \"South African rand\", sv: \"Sydafrikansk rand\", symbol: \"R\", decimalPlaces: 2 },\n { code: \"MXN\", en: \"Mexican peso\", sv: \"Mexikansk peso\", symbol: \"MX$\", decimalPlaces: 2 },\n {\n code: \"SGD\",\n en: \"Singapore dollar\",\n sv: \"Singaporiansk dollar\",\n symbol: \"S$\",\n decimalPlaces: 2,\n },\n { code: \"HKD\", en: \"Hong Kong dollar\", sv: \"Hongkongdollar\", symbol: \"HK$\", decimalPlaces: 2 },\n { code: \"KRW\", en: \"South Korean won\", sv: \"Sydkoreansk won\", symbol: \"₩\", decimalPlaces: 0 },\n { code: \"THB\", en: \"Thai baht\", sv: \"Thailändsk baht\", symbol: \"฿\", decimalPlaces: 2 },\n {\n code: \"TWD\",\n en: \"New Taiwan dollar\",\n sv: \"Taiwanesisk dollar\",\n symbol: \"NT$\",\n decimalPlaces: 2,\n },\n { code: \"ILS\", en: \"Israeli new shekel\", sv: \"Israelisk shekel\", symbol: \"₪\", decimalPlaces: 2 },\n {\n code: \"AED\",\n en: \"United Arab Emirates dirham\",\n sv: \"Emiratisk dirham\",\n symbol: \"د.إ\",\n decimalPlaces: 2,\n },\n { code: \"SAR\", en: \"Saudi riyal\", sv: \"Saudisk riyal\", symbol: \"﷼\", decimalPlaces: 2 },\n { code: \"PHP\", en: \"Philippine peso\", sv: \"Filippinsk peso\", symbol: \"₱\", decimalPlaces: 2 },\n { code: \"IDR\", en: \"Indonesian rupiah\", sv: \"Indonesisk rupiah\", symbol: \"Rp\", decimalPlaces: 2 },\n { code: \"MYR\", en: \"Malaysian ringgit\", sv: \"Malaysisk ringgit\", symbol: \"RM\", decimalPlaces: 2 },\n { code: \"VND\", en: \"Vietnamese đồng\", sv: \"Vietnamesisk dong\", symbol: \"₫\", decimalPlaces: 0 },\n { code: \"UAH\", en: \"Ukrainian hryvnia\", sv: \"Ukrainsk hryvnia\", symbol: \"₴\", decimalPlaces: 2 },\n { code: \"EGP\", en: \"Egyptian pound\", sv: \"Egyptiskt pund\", symbol: \"E£\", decimalPlaces: 2 },\n { code: \"NGN\", en: \"Nigerian naira\", sv: \"Nigeriansk naira\", symbol: \"₦\", decimalPlaces: 2 },\n { code: \"KES\", en: \"Kenyan shilling\", sv: \"Kenyansk shilling\", symbol: \"KSh\", decimalPlaces: 2 },\n { code: \"COP\", en: \"Colombian peso\", sv: \"Colombiansk peso\", symbol: \"CO$\", decimalPlaces: 2 },\n { code: \"ARS\", en: \"Argentine peso\", sv: \"Argentinsk peso\", symbol: \"AR$\", decimalPlaces: 2 },\n { code: \"CLP\", en: \"Chilean peso\", sv: \"Chilensk peso\", symbol: \"CL$\", decimalPlaces: 0 },\n { code: \"PEN\", en: \"Peruvian sol\", sv: \"Peruansk sol\", symbol: \"S/.\", decimalPlaces: 2 },\n];\n\n/**\n * An ISO 4217 currency identified by its three-letter code (e.g. `SEK`, `EUR`).\n */\nexport class Currency {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Currency\",\n localizedName: \"Valuta\",\n emoji: \"\\u{1F4B1}\",\n sources: Object.freeze([\n \"https://www.iso.org/iso-4217-currency-codes.html\",\n \"https://en.wikipedia.org/wiki/ISO_4217\",\n ]),\n });\n\n readonly code: string;\n readonly englishName: string;\n readonly localizedName: string;\n readonly symbol: string;\n readonly decimalPlaces: number;\n\n private constructor(row: CurrencyRow) {\n this.code = row.code;\n this.englishName = row.en;\n this.localizedName = row.sv;\n this.symbol = row.symbol;\n this.decimalPlaces = row.decimalPlaces;\n }\n\n /** @internal */\n static _fromRow(row: CurrencyRow): Currency {\n return new Currency(row);\n }\n\n /** Display name in current UI culture (Swedish or English). */\n /**\n * The currency name as used in its issuing country. Falls back to\n * {@link englishName} when no issuing country is known.\n */\n get nativeName(): string {\n const country = Country.all.find(\n (c) => c.currencyCode != null && c.currencyCode.toUpperCase() === this.code.toUpperCase(),\n );\n if (country === undefined) return this.englishName;\n return country.nativeName === country.englishName ? this.englishName : this.localizedName;\n }\n\n get displayName(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n static tryParse(input: string | null | undefined): Currency | null {\n if (input == null || input.trim() === \"\") return null;\n const trimmed = sanitizeInput(input).trim();\n const byCode = BY_CODE.get(trimmed.toUpperCase());\n if (byCode) return byCode;\n const byName = BY_NAME.get(trimmed.toLowerCase());\n if (byName) return byName;\n return null;\n }\n\n static parse(input: string): Currency {\n const r = Currency.tryParse(input);\n if (r === null) throw new Error(\"Unknown currency.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return Currency.tryParse(input) !== null;\n }\n\n static format(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = Currency.tryParse(input);\n if (r) return r.displayName;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n static normalize(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = Currency.tryParse(input);\n if (r) return r.code;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && Currency.normalize(input) === input;\n }\n\n /** All known currencies. */\n static get all(): readonly Currency[] {\n return ALL_CURRENCIES;\n }\n\n /** @internal Lookup by symbol. */\n static tryParseSymbol(symbol: string | null | undefined): Currency | null {\n if (symbol == null || symbol.trim() === \"\") return null;\n return BY_SYMBOL.get(symbol.trim().toLowerCase()) ?? null;\n }\n\n toNormalizedString(): string {\n return this.code;\n }\n\n toString(): string {\n return this.displayName;\n }\n\n toDisplayString(): string {\n return this.displayName;\n }\n\n toEnglishString(): string {\n return this.englishName;\n }\n\n toNativeString(): string {\n return this.nativeName;\n }\n\n equals(other: Currency | null | undefined): boolean {\n return other != null && this.code === other.code;\n }\n\n compareTo(other: Currency | null | undefined): number {\n if (other == null) return 1;\n return this.code < other.code ? -1 : this.code > other.code ? 1 : 0;\n }\n\n static get SEK(): Currency {\n return BY_CODE.get(\"SEK\")!;\n }\n static get EUR(): Currency {\n return BY_CODE.get(\"EUR\")!;\n }\n static get USD(): Currency {\n return BY_CODE.get(\"USD\")!;\n }\n static get NOK(): Currency {\n return BY_CODE.get(\"NOK\")!;\n }\n static get DKK(): Currency {\n return BY_CODE.get(\"DKK\")!;\n }\n static get GBP(): Currency {\n return BY_CODE.get(\"GBP\")!;\n }\n}\n\nconst ALL_CURRENCIES: readonly Currency[] = KNOWN_CURRENCIES.map((r) => Currency._fromRow(r));\n\nconst BY_CODE = new Map<string, Currency>();\nfor (const c of ALL_CURRENCIES) BY_CODE.set(c.code.toUpperCase(), c);\n\nconst BY_NAME = new Map<string, Currency>();\nfor (const c of ALL_CURRENCIES) {\n BY_NAME.set(c.englishName.toLowerCase(), c);\n BY_NAME.set(c.localizedName.toLowerCase(), c);\n}\n\nconst BY_SYMBOL = new Map<string, Currency>();\nfor (const c of ALL_CURRENCIES) {\n if (!BY_SYMBOL.has(c.symbol.toLowerCase())) BY_SYMBOL.set(c.symbol.toLowerCase(), c);\n}\n\n/**\n * Returns the primary currency for a country, or `null` when no association\n * is known. Resolves the country's first `currencyCodes` entry to a\n * {@link Currency} instance.\n */\nexport function getCurrencyForCountry(country: Country): Currency | null {\n const codes = country.currencyCodes;\n if (codes.length === 0) return null;\n const first = codes[0];\n if (first == null) return null;\n return Currency.tryParse(first);\n}\n","import { Continent } from \"./continent.js\";\n\n/**\n * Static country data: ISO 3166-1 alpha-2/alpha-3/numeric codes, English/Swedish/native names,\n * E.164 calling code, ccTLD, continent. Sourced from ISO 3166, ITU-T E.164, and IANA root db.\n */\nexport interface CountryRow {\n readonly alpha2: string;\n readonly alpha3: string;\n readonly numeric: number;\n readonly en: string;\n readonly sv: string;\n readonly native: string;\n readonly callingCode: string;\n readonly tld: string;\n readonly continent: Continent;\n}\n\nconst C = (\n alpha2: string,\n alpha3: string,\n numeric: number,\n en: string,\n sv: string,\n native: string,\n callingCode: string,\n tld: string,\n continent: Continent,\n): CountryRow => ({ alpha2, alpha3, numeric, en, sv, native, callingCode, tld, continent });\n\nexport const COUNTRY_ROWS: readonly CountryRow[] = [\n C(\"AF\", \"AFG\", 4, \"Afghanistan\", \"Afghanistan\", \"افغانستان\", \"93\", \".af\", Continent.Asia),\n C(\"AL\", \"ALB\", 8, \"Albania\", \"Albanien\", \"Shqipëria\", \"355\", \".al\", Continent.Europe),\n C(\"DZ\", \"DZA\", 12, \"Algeria\", \"Algeriet\", \"الجزائر\", \"213\", \".dz\", Continent.Africa),\n C(\n \"AS\",\n \"ASM\",\n 16,\n \"American Samoa\",\n \"Amerikanska Samoa\",\n \"American Samoa\",\n \"1\",\n \".as\",\n Continent.Oceania,\n ),\n C(\"AD\", \"AND\", 20, \"Andorra\", \"Andorra\", \"Andorra\", \"376\", \".ad\", Continent.Europe),\n C(\"AO\", \"AGO\", 24, \"Angola\", \"Angola\", \"Angola\", \"244\", \".ao\", Continent.Africa),\n C(\n \"AG\",\n \"ATG\",\n 28,\n \"Antigua and Barbuda\",\n \"Antigua och Barbuda\",\n \"Antigua and Barbuda\",\n \"1\",\n \".ag\",\n Continent.NorthAmerica,\n ),\n C(\"AR\", \"ARG\", 32, \"Argentina\", \"Argentina\", \"Argentina\", \"54\", \".ar\", Continent.SouthAmerica),\n C(\"AM\", \"ARM\", 51, \"Armenia\", \"Armenien\", \"Հայաստան\", \"374\", \".am\", Continent.Asia),\n C(\"AW\", \"ABW\", 533, \"Aruba\", \"Aruba\", \"Aruba\", \"297\", \".aw\", Continent.NorthAmerica),\n C(\"AU\", \"AUS\", 36, \"Australia\", \"Australien\", \"Australia\", \"61\", \".au\", Continent.Oceania),\n C(\"AT\", \"AUT\", 40, \"Austria\", \"Österrike\", \"Österreich\", \"43\", \".at\", Continent.Europe),\n C(\"AZ\", \"AZE\", 31, \"Azerbaijan\", \"Azerbajdzjan\", \"Azərbaycan\", \"994\", \".az\", Continent.Asia),\n C(\"BS\", \"BHS\", 44, \"Bahamas\", \"Bahamas\", \"Bahamas\", \"1\", \".bs\", Continent.NorthAmerica),\n C(\"BH\", \"BHR\", 48, \"Bahrain\", \"Bahrain\", \"البحرين\", \"973\", \".bh\", Continent.Asia),\n C(\"BD\", \"BGD\", 50, \"Bangladesh\", \"Bangladesh\", \"বাংলাদেশ\", \"880\", \".bd\", Continent.Asia),\n C(\"BB\", \"BRB\", 52, \"Barbados\", \"Barbados\", \"Barbados\", \"1\", \".bb\", Continent.NorthAmerica),\n C(\"BY\", \"BLR\", 112, \"Belarus\", \"Belarus\", \"Беларусь\", \"375\", \".by\", Continent.Europe),\n C(\"BE\", \"BEL\", 56, \"Belgium\", \"Belgien\", \"België\", \"32\", \".be\", Continent.Europe),\n C(\"BZ\", \"BLZ\", 84, \"Belize\", \"Belize\", \"Belize\", \"501\", \".bz\", Continent.NorthAmerica),\n C(\"BJ\", \"BEN\", 204, \"Benin\", \"Benin\", \"Bénin\", \"229\", \".bj\", Continent.Africa),\n C(\"BM\", \"BMU\", 60, \"Bermuda\", \"Bermuda\", \"Bermuda\", \"1\", \".bm\", Continent.NorthAmerica),\n C(\"BT\", \"BTN\", 64, \"Bhutan\", \"Bhutan\", \"འབྲུག\", \"975\", \".bt\", Continent.Asia),\n C(\"BO\", \"BOL\", 68, \"Bolivia\", \"Bolivia\", \"Bolivia\", \"591\", \".bo\", Continent.SouthAmerica),\n C(\n \"BA\",\n \"BIH\",\n 70,\n \"Bosnia and Herzegovina\",\n \"Bosnien och Hercegovina\",\n \"Bosna i Hercegovina\",\n \"387\",\n \".ba\",\n Continent.Europe,\n ),\n C(\"BW\", \"BWA\", 72, \"Botswana\", \"Botswana\", \"Botswana\", \"267\", \".bw\", Continent.Africa),\n C(\"BR\", \"BRA\", 76, \"Brazil\", \"Brasilien\", \"Brasil\", \"55\", \".br\", Continent.SouthAmerica),\n C(\"BN\", \"BRN\", 96, \"Brunei\", \"Brunei\", \"Brunei\", \"673\", \".bn\", Continent.Asia),\n C(\"BG\", \"BGR\", 100, \"Bulgaria\", \"Bulgarien\", \"България\", \"359\", \".bg\", Continent.Europe),\n C(\n \"BF\",\n \"BFA\",\n 854,\n \"Burkina Faso\",\n \"Burkina Faso\",\n \"Burkina Faso\",\n \"226\",\n \".bf\",\n Continent.Africa,\n ),\n C(\"BI\", \"BDI\", 108, \"Burundi\", \"Burundi\", \"Burundi\", \"257\", \".bi\", Continent.Africa),\n C(\"CV\", \"CPV\", 132, \"Cabo Verde\", \"Kap Verde\", \"Cabo Verde\", \"238\", \".cv\", Continent.Africa),\n C(\"KH\", \"KHM\", 116, \"Cambodia\", \"Kambodja\", \"កម្ពុជា\", \"855\", \".kh\", Continent.Asia),\n C(\"CM\", \"CMR\", 120, \"Cameroon\", \"Kamerun\", \"Cameroun\", \"237\", \".cm\", Continent.Africa),\n C(\"CA\", \"CAN\", 124, \"Canada\", \"Kanada\", \"Canada\", \"1\", \".ca\", Continent.NorthAmerica),\n C(\n \"CF\",\n \"CAF\",\n 140,\n \"Central African Republic\",\n \"Centralafrikanska republiken\",\n \"République centrafricaine\",\n \"236\",\n \".cf\",\n Continent.Africa,\n ),\n C(\"TD\", \"TCD\", 148, \"Chad\", \"Tchad\", \"Tchad\", \"235\", \".td\", Continent.Africa),\n C(\"CL\", \"CHL\", 152, \"Chile\", \"Chile\", \"Chile\", \"56\", \".cl\", Continent.SouthAmerica),\n C(\"CN\", \"CHN\", 156, \"China\", \"Kina\", \"中国\", \"86\", \".cn\", Continent.Asia),\n C(\"CO\", \"COL\", 170, \"Colombia\", \"Colombia\", \"Colombia\", \"57\", \".co\", Continent.SouthAmerica),\n C(\"KM\", \"COM\", 174, \"Comoros\", \"Komorerna\", \"Komori\", \"269\", \".km\", Continent.Africa),\n C(\"CG\", \"COG\", 178, \"Congo\", \"Kongo\", \"Congo\", \"242\", \".cg\", Continent.Africa),\n C(\n \"CD\",\n \"COD\",\n 180,\n \"Congo (Democratic Republic)\",\n \"Demokratiska republiken Kongo\",\n \"République démocratique du Congo\",\n \"243\",\n \".cd\",\n Continent.Africa,\n ),\n C(\n \"CR\",\n \"CRI\",\n 188,\n \"Costa Rica\",\n \"Costa Rica\",\n \"Costa Rica\",\n \"506\",\n \".cr\",\n Continent.NorthAmerica,\n ),\n C(\n \"CI\",\n \"CIV\",\n 384,\n \"Côte d'Ivoire\",\n \"Elfenbenskusten\",\n \"Côte d'Ivoire\",\n \"225\",\n \".ci\",\n Continent.Africa,\n ),\n C(\"HR\", \"HRV\", 191, \"Croatia\", \"Kroatien\", \"Hrvatska\", \"385\", \".hr\", Continent.Europe),\n C(\"CU\", \"CUB\", 192, \"Cuba\", \"Kuba\", \"Cuba\", \"53\", \".cu\", Continent.NorthAmerica),\n C(\"CW\", \"CUW\", 531, \"Curaçao\", \"Curaçao\", \"Curaçao\", \"599\", \".cw\", Continent.NorthAmerica),\n C(\"CY\", \"CYP\", 196, \"Cyprus\", \"Cypern\", \"Κύπρος\", \"357\", \".cy\", Continent.Europe),\n C(\"CZ\", \"CZE\", 203, \"Czechia\", \"Tjeckien\", \"Česko\", \"420\", \".cz\", Continent.Europe),\n C(\"DK\", \"DNK\", 208, \"Denmark\", \"Danmark\", \"Danmark\", \"45\", \".dk\", Continent.Europe),\n C(\"DJ\", \"DJI\", 262, \"Djibouti\", \"Djibouti\", \"Djibouti\", \"253\", \".dj\", Continent.Africa),\n C(\"DM\", \"DMA\", 212, \"Dominica\", \"Dominica\", \"Dominica\", \"1\", \".dm\", Continent.NorthAmerica),\n C(\n \"DO\",\n \"DOM\",\n 214,\n \"Dominican Republic\",\n \"Dominikanska republiken\",\n \"República Dominicana\",\n \"1\",\n \".do\",\n Continent.NorthAmerica,\n ),\n C(\"EC\", \"ECU\", 218, \"Ecuador\", \"Ecuador\", \"Ecuador\", \"593\", \".ec\", Continent.SouthAmerica),\n C(\"EG\", \"EGY\", 818, \"Egypt\", \"Egypten\", \"مصر\", \"20\", \".eg\", Continent.Africa),\n C(\n \"SV\",\n \"SLV\",\n 222,\n \"El Salvador\",\n \"El Salvador\",\n \"El Salvador\",\n \"503\",\n \".sv\",\n Continent.NorthAmerica,\n ),\n C(\n \"GQ\",\n \"GNQ\",\n 226,\n \"Equatorial Guinea\",\n \"Ekvatorialguinea\",\n \"Guinea Ecuatorial\",\n \"240\",\n \".gq\",\n Continent.Africa,\n ),\n C(\"ER\", \"ERI\", 232, \"Eritrea\", \"Eritrea\", \"ኤርትራ\", \"291\", \".er\", Continent.Africa),\n C(\"EE\", \"EST\", 233, \"Estonia\", \"Estland\", \"Eesti\", \"372\", \".ee\", Continent.Europe),\n C(\"SZ\", \"SWZ\", 748, \"Eswatini\", \"Eswatini\", \"eSwatini\", \"268\", \".sz\", Continent.Africa),\n C(\"ET\", \"ETH\", 231, \"Ethiopia\", \"Etiopien\", \"ኢትዮጵያ\", \"251\", \".et\", Continent.Africa),\n C(\"FJ\", \"FJI\", 242, \"Fiji\", \"Fiji\", \"Fiji\", \"679\", \".fj\", Continent.Oceania),\n C(\"FI\", \"FIN\", 246, \"Finland\", \"Finland\", \"Suomi\", \"358\", \".fi\", Continent.Europe),\n C(\"FR\", \"FRA\", 250, \"France\", \"Frankrike\", \"France\", \"33\", \".fr\", Continent.Europe),\n C(\"GA\", \"GAB\", 266, \"Gabon\", \"Gabon\", \"Gabon\", \"241\", \".ga\", Continent.Africa),\n C(\"GM\", \"GMB\", 270, \"Gambia\", \"Gambia\", \"Gambia\", \"220\", \".gm\", Continent.Africa),\n C(\"GE\", \"GEO\", 268, \"Georgia\", \"Georgien\", \"საქართველო\", \"995\", \".ge\", Continent.Asia),\n C(\"DE\", \"DEU\", 276, \"Germany\", \"Tyskland\", \"Deutschland\", \"49\", \".de\", Continent.Europe),\n C(\"GH\", \"GHA\", 288, \"Ghana\", \"Ghana\", \"Ghana\", \"233\", \".gh\", Continent.Africa),\n C(\"GI\", \"GIB\", 292, \"Gibraltar\", \"Gibraltar\", \"Gibraltar\", \"350\", \".gi\", Continent.Europe),\n C(\"GR\", \"GRC\", 300, \"Greece\", \"Grekland\", \"Ελλάδα\", \"30\", \".gr\", Continent.Europe),\n C(\n \"GL\",\n \"GRL\",\n 304,\n \"Greenland\",\n \"Grönland\",\n \"Kalaallit Nunaat\",\n \"299\",\n \".gl\",\n Continent.NorthAmerica,\n ),\n C(\"GD\", \"GRD\", 308, \"Grenada\", \"Grenada\", \"Grenada\", \"1\", \".gd\", Continent.NorthAmerica),\n C(\"GU\", \"GUM\", 316, \"Guam\", \"Guam\", \"Guam\", \"1\", \".gu\", Continent.Oceania),\n C(\"GT\", \"GTM\", 320, \"Guatemala\", \"Guatemala\", \"Guatemala\", \"502\", \".gt\", Continent.NorthAmerica),\n C(\"GG\", \"GGY\", 831, \"Guernsey\", \"Guernsey\", \"Guernsey\", \"44\", \".gg\", Continent.Europe),\n C(\"GN\", \"GIN\", 324, \"Guinea\", \"Guinea\", \"Guinée\", \"224\", \".gn\", Continent.Africa),\n C(\n \"GW\",\n \"GNB\",\n 624,\n \"Guinea-Bissau\",\n \"Guinea-Bissau\",\n \"Guiné-Bissau\",\n \"245\",\n \".gw\",\n Continent.Africa,\n ),\n C(\"GY\", \"GUY\", 328, \"Guyana\", \"Guyana\", \"Guyana\", \"592\", \".gy\", Continent.SouthAmerica),\n C(\"HT\", \"HTI\", 332, \"Haiti\", \"Haiti\", \"Haïti\", \"509\", \".ht\", Continent.NorthAmerica),\n C(\"HN\", \"HND\", 340, \"Honduras\", \"Honduras\", \"Honduras\", \"504\", \".hn\", Continent.NorthAmerica),\n C(\"HK\", \"HKG\", 344, \"Hong Kong\", \"Hongkong\", \"香港\", \"852\", \".hk\", Continent.Asia),\n C(\"HU\", \"HUN\", 348, \"Hungary\", \"Ungern\", \"Magyarország\", \"36\", \".hu\", Continent.Europe),\n C(\"IS\", \"ISL\", 352, \"Iceland\", \"Island\", \"Ísland\", \"354\", \".is\", Continent.Europe),\n C(\"IN\", \"IND\", 356, \"India\", \"Indien\", \"भारत\", \"91\", \".in\", Continent.Asia),\n C(\"ID\", \"IDN\", 360, \"Indonesia\", \"Indonesien\", \"Indonesia\", \"62\", \".id\", Continent.Asia),\n C(\"IR\", \"IRN\", 364, \"Iran\", \"Iran\", \"ایران\", \"98\", \".ir\", Continent.Asia),\n C(\"IQ\", \"IRQ\", 368, \"Iraq\", \"Irak\", \"العراق\", \"964\", \".iq\", Continent.Asia),\n C(\"IE\", \"IRL\", 372, \"Ireland\", \"Irland\", \"Éire\", \"353\", \".ie\", Continent.Europe),\n C(\"IM\", \"IMN\", 833, \"Isle of Man\", \"Isle of Man\", \"Isle of Man\", \"44\", \".im\", Continent.Europe),\n C(\"IL\", \"ISR\", 376, \"Israel\", \"Israel\", \"ישראל\", \"972\", \".il\", Continent.Asia),\n C(\"IT\", \"ITA\", 380, \"Italy\", \"Italien\", \"Italia\", \"39\", \".it\", Continent.Europe),\n C(\"JM\", \"JAM\", 388, \"Jamaica\", \"Jamaica\", \"Jamaica\", \"1\", \".jm\", Continent.NorthAmerica),\n C(\"JP\", \"JPN\", 392, \"Japan\", \"Japan\", \"日本\", \"81\", \".jp\", Continent.Asia),\n C(\"JE\", \"JEY\", 832, \"Jersey\", \"Jersey\", \"Jersey\", \"44\", \".je\", Continent.Europe),\n C(\"JO\", \"JOR\", 400, \"Jordan\", \"Jordanien\", \"الأردن\", \"962\", \".jo\", Continent.Asia),\n C(\"KZ\", \"KAZ\", 398, \"Kazakhstan\", \"Kazakstan\", \"Қазақстан\", \"7\", \".kz\", Continent.Asia),\n C(\"KE\", \"KEN\", 404, \"Kenya\", \"Kenya\", \"Kenya\", \"254\", \".ke\", Continent.Africa),\n C(\"KI\", \"KIR\", 296, \"Kiribati\", \"Kiribati\", \"Kiribati\", \"686\", \".ki\", Continent.Oceania),\n C(\"KP\", \"PRK\", 408, \"North Korea\", \"Nordkorea\", \"조선\", \"850\", \".kp\", Continent.Asia),\n C(\"KR\", \"KOR\", 410, \"South Korea\", \"Sydkorea\", \"대한민국\", \"82\", \".kr\", Continent.Asia),\n C(\"KW\", \"KWT\", 414, \"Kuwait\", \"Kuwait\", \"الكويت\", \"965\", \".kw\", Continent.Asia),\n C(\"KG\", \"KGZ\", 417, \"Kyrgyzstan\", \"Kirgizistan\", \"Кыргызстан\", \"996\", \".kg\", Continent.Asia),\n C(\"LA\", \"LAO\", 418, \"Laos\", \"Laos\", \"ລາວ\", \"856\", \".la\", Continent.Asia),\n C(\"LV\", \"LVA\", 428, \"Latvia\", \"Lettland\", \"Latvija\", \"371\", \".lv\", Continent.Europe),\n C(\"LB\", \"LBN\", 422, \"Lebanon\", \"Libanon\", \"لبنان\", \"961\", \".lb\", Continent.Asia),\n C(\"LS\", \"LSO\", 426, \"Lesotho\", \"Lesotho\", \"Lesotho\", \"266\", \".ls\", Continent.Africa),\n C(\"LR\", \"LBR\", 430, \"Liberia\", \"Liberia\", \"Liberia\", \"231\", \".lr\", Continent.Africa),\n C(\"LY\", \"LBY\", 434, \"Libya\", \"Libyen\", \"ليبيا\", \"218\", \".ly\", Continent.Africa),\n C(\n \"LI\",\n \"LIE\",\n 438,\n \"Liechtenstein\",\n \"Liechtenstein\",\n \"Liechtenstein\",\n \"423\",\n \".li\",\n Continent.Europe,\n ),\n C(\"LT\", \"LTU\", 440, \"Lithuania\", \"Litauen\", \"Lietuva\", \"370\", \".lt\", Continent.Europe),\n C(\"LU\", \"LUX\", 442, \"Luxembourg\", \"Luxemburg\", \"Lëtzebuerg\", \"352\", \".lu\", Continent.Europe),\n C(\"MO\", \"MAC\", 446, \"Macao\", \"Macao\", \"澳門\", \"853\", \".mo\", Continent.Asia),\n C(\"MG\", \"MDG\", 450, \"Madagascar\", \"Madagaskar\", \"Madagasikara\", \"261\", \".mg\", Continent.Africa),\n C(\"MW\", \"MWI\", 454, \"Malawi\", \"Malawi\", \"Malawi\", \"265\", \".mw\", Continent.Africa),\n C(\"MY\", \"MYS\", 458, \"Malaysia\", \"Malaysia\", \"Malaysia\", \"60\", \".my\", Continent.Asia),\n C(\"MV\", \"MDV\", 462, \"Maldives\", \"Maldiverna\", \"ދިވެހިރާއްޖެ\", \"960\", \".mv\", Continent.Asia),\n C(\"ML\", \"MLI\", 466, \"Mali\", \"Mali\", \"Mali\", \"223\", \".ml\", Continent.Africa),\n C(\"MT\", \"MLT\", 470, \"Malta\", \"Malta\", \"Malta\", \"356\", \".mt\", Continent.Europe),\n C(\n \"MH\",\n \"MHL\",\n 584,\n \"Marshall Islands\",\n \"Marshallöarna\",\n \"Marshall Islands\",\n \"692\",\n \".mh\",\n Continent.Oceania,\n ),\n C(\"MR\", \"MRT\", 478, \"Mauritania\", \"Mauretanien\", \"موريتانيا\", \"222\", \".mr\", Continent.Africa),\n C(\"MU\", \"MUS\", 480, \"Mauritius\", \"Mauritius\", \"Maurice\", \"230\", \".mu\", Continent.Africa),\n C(\"MX\", \"MEX\", 484, \"Mexico\", \"Mexiko\", \"México\", \"52\", \".mx\", Continent.NorthAmerica),\n C(\"FM\", \"FSM\", 583, \"Micronesia\", \"Mikronesien\", \"Micronesia\", \"691\", \".fm\", Continent.Oceania),\n C(\"MD\", \"MDA\", 498, \"Moldova\", \"Moldavien\", \"Moldova\", \"373\", \".md\", Continent.Europe),\n C(\"MC\", \"MCO\", 492, \"Monaco\", \"Monaco\", \"Monaco\", \"377\", \".mc\", Continent.Europe),\n C(\"MN\", \"MNG\", 496, \"Mongolia\", \"Mongoliet\", \"Монгол\", \"976\", \".mn\", Continent.Asia),\n C(\"ME\", \"MNE\", 499, \"Montenegro\", \"Montenegro\", \"Crna Gora\", \"382\", \".me\", Continent.Europe),\n C(\"MA\", \"MAR\", 504, \"Morocco\", \"Marocko\", \"المغرب\", \"212\", \".ma\", Continent.Africa),\n C(\"MZ\", \"MOZ\", 508, \"Mozambique\", \"Moçambique\", \"Moçambique\", \"258\", \".mz\", Continent.Africa),\n C(\"MM\", \"MMR\", 104, \"Myanmar\", \"Myanmar\", \"မြန်မာ\", \"95\", \".mm\", Continent.Asia),\n C(\"NA\", \"NAM\", 516, \"Namibia\", \"Namibia\", \"Namibia\", \"264\", \".na\", Continent.Africa),\n C(\"NR\", \"NRU\", 520, \"Nauru\", \"Nauru\", \"Nauru\", \"674\", \".nr\", Continent.Oceania),\n C(\"NP\", \"NPL\", 524, \"Nepal\", \"Nepal\", \"नेपाल\", \"977\", \".np\", Continent.Asia),\n C(\"NL\", \"NLD\", 528, \"Netherlands\", \"Nederländerna\", \"Nederland\", \"31\", \".nl\", Continent.Europe),\n C(\"NZ\", \"NZL\", 554, \"New Zealand\", \"Nya Zeeland\", \"Aotearoa\", \"64\", \".nz\", Continent.Oceania),\n C(\"NI\", \"NIC\", 558, \"Nicaragua\", \"Nicaragua\", \"Nicaragua\", \"505\", \".ni\", Continent.NorthAmerica),\n C(\"NE\", \"NER\", 562, \"Niger\", \"Niger\", \"Niger\", \"227\", \".ne\", Continent.Africa),\n C(\"NG\", \"NGA\", 566, \"Nigeria\", \"Nigeria\", \"Nigeria\", \"234\", \".ng\", Continent.Africa),\n C(\n \"MK\",\n \"MKD\",\n 807,\n \"North Macedonia\",\n \"Nordmakedonien\",\n \"Северна Македонија\",\n \"389\",\n \".mk\",\n Continent.Europe,\n ),\n C(\"NO\", \"NOR\", 578, \"Norway\", \"Norge\", \"Norge\", \"47\", \".no\", Continent.Europe),\n C(\"OM\", \"OMN\", 512, \"Oman\", \"Oman\", \"عمان\", \"968\", \".om\", Continent.Asia),\n C(\"PK\", \"PAK\", 586, \"Pakistan\", \"Pakistan\", \"پاکستان\", \"92\", \".pk\", Continent.Asia),\n C(\"PW\", \"PLW\", 585, \"Palau\", \"Palau\", \"Palau\", \"680\", \".pw\", Continent.Oceania),\n C(\"PS\", \"PSE\", 275, \"Palestine\", \"Palestina\", \"فلسطين\", \"970\", \".ps\", Continent.Asia),\n C(\"PA\", \"PAN\", 591, \"Panama\", \"Panama\", \"Panamá\", \"507\", \".pa\", Continent.NorthAmerica),\n C(\n \"PG\",\n \"PNG\",\n 598,\n \"Papua New Guinea\",\n \"Papua Nya Guinea\",\n \"Papua Niugini\",\n \"675\",\n \".pg\",\n Continent.Oceania,\n ),\n C(\"PY\", \"PRY\", 600, \"Paraguay\", \"Paraguay\", \"Paraguay\", \"595\", \".py\", Continent.SouthAmerica),\n C(\"PE\", \"PER\", 604, \"Peru\", \"Peru\", \"Perú\", \"51\", \".pe\", Continent.SouthAmerica),\n C(\"PH\", \"PHL\", 608, \"Philippines\", \"Filippinerna\", \"Pilipinas\", \"63\", \".ph\", Continent.Asia),\n C(\"PL\", \"POL\", 616, \"Poland\", \"Polen\", \"Polska\", \"48\", \".pl\", Continent.Europe),\n C(\"PT\", \"PRT\", 620, \"Portugal\", \"Portugal\", \"Portugal\", \"351\", \".pt\", Continent.Europe),\n C(\n \"PR\",\n \"PRI\",\n 630,\n \"Puerto Rico\",\n \"Puerto Rico\",\n \"Puerto Rico\",\n \"1\",\n \".pr\",\n Continent.NorthAmerica,\n ),\n C(\"QA\", \"QAT\", 634, \"Qatar\", \"Qatar\", \"قطر\", \"974\", \".qa\", Continent.Asia),\n C(\"RO\", \"ROU\", 642, \"Romania\", \"Rumänien\", \"România\", \"40\", \".ro\", Continent.Europe),\n C(\"RU\", \"RUS\", 643, \"Russia\", \"Ryssland\", \"Россия\", \"7\", \".ru\", Continent.Europe),\n C(\"RW\", \"RWA\", 646, \"Rwanda\", \"Rwanda\", \"Rwanda\", \"250\", \".rw\", Continent.Africa),\n C(\n \"KN\",\n \"KNA\",\n 659,\n \"Saint Kitts and Nevis\",\n \"Saint Kitts och Nevis\",\n \"Saint Kitts and Nevis\",\n \"1\",\n \".kn\",\n Continent.NorthAmerica,\n ),\n C(\n \"LC\",\n \"LCA\",\n 662,\n \"Saint Lucia\",\n \"Saint Lucia\",\n \"Saint Lucia\",\n \"1\",\n \".lc\",\n Continent.NorthAmerica,\n ),\n C(\n \"VC\",\n \"VCT\",\n 670,\n \"Saint Vincent and the Grenadines\",\n \"Saint Vincent och Grenadinerna\",\n \"Saint Vincent and the Grenadines\",\n \"1\",\n \".vc\",\n Continent.NorthAmerica,\n ),\n C(\"WS\", \"WSM\", 882, \"Samoa\", \"Samoa\", \"Sāmoa\", \"685\", \".ws\", Continent.Oceania),\n C(\"SM\", \"SMR\", 674, \"San Marino\", \"San Marino\", \"San Marino\", \"378\", \".sm\", Continent.Europe),\n C(\n \"ST\",\n \"STP\",\n 678,\n \"São Tomé and Príncipe\",\n \"São Tomé och Príncipe\",\n \"São Tomé e Príncipe\",\n \"239\",\n \".st\",\n Continent.Africa,\n ),\n C(\"SA\", \"SAU\", 682, \"Saudi Arabia\", \"Saudiarabien\", \"السعودية\", \"966\", \".sa\", Continent.Asia),\n C(\"SN\", \"SEN\", 686, \"Senegal\", \"Senegal\", \"Sénégal\", \"221\", \".sn\", Continent.Africa),\n C(\"RS\", \"SRB\", 688, \"Serbia\", \"Serbien\", \"Србија\", \"381\", \".rs\", Continent.Europe),\n C(\"SC\", \"SYC\", 690, \"Seychelles\", \"Seychellerna\", \"Seychelles\", \"248\", \".sc\", Continent.Africa),\n C(\n \"SL\",\n \"SLE\",\n 694,\n \"Sierra Leone\",\n \"Sierra Leone\",\n \"Sierra Leone\",\n \"232\",\n \".sl\",\n Continent.Africa,\n ),\n C(\"SG\", \"SGP\", 702, \"Singapore\", \"Singapore\", \"Singapore\", \"65\", \".sg\", Continent.Asia),\n C(\"SK\", \"SVK\", 703, \"Slovakia\", \"Slovakien\", \"Slovensko\", \"421\", \".sk\", Continent.Europe),\n C(\"SI\", \"SVN\", 705, \"Slovenia\", \"Slovenien\", \"Slovenija\", \"386\", \".si\", Continent.Europe),\n C(\n \"SB\",\n \"SLB\",\n 90,\n \"Solomon Islands\",\n \"Salomonöarna\",\n \"Solomon Islands\",\n \"677\",\n \".sb\",\n Continent.Oceania,\n ),\n C(\"SO\", \"SOM\", 706, \"Somalia\", \"Somalia\", \"Soomaaliya\", \"252\", \".so\", Continent.Africa),\n C(\"ZA\", \"ZAF\", 710, \"South Africa\", \"Sydafrika\", \"Suid-Afrika\", \"27\", \".za\", Continent.Africa),\n C(\"SS\", \"SSD\", 728, \"South Sudan\", \"Sydsudan\", \"South Sudan\", \"211\", \".ss\", Continent.Africa),\n C(\"ES\", \"ESP\", 724, \"Spain\", \"Spanien\", \"España\", \"34\", \".es\", Continent.Europe),\n C(\"LK\", \"LKA\", 144, \"Sri Lanka\", \"Sri Lanka\", \"ශ්‍රී ලංකාව\", \"94\", \".lk\", Continent.Asia),\n C(\"SD\", \"SDN\", 729, \"Sudan\", \"Sudan\", \"السودان\", \"249\", \".sd\", Continent.Africa),\n C(\"SR\", \"SUR\", 740, \"Suriname\", \"Surinam\", \"Suriname\", \"597\", \".sr\", Continent.SouthAmerica),\n C(\"SE\", \"SWE\", 752, \"Sweden\", \"Sverige\", \"Sverige\", \"46\", \".se\", Continent.Europe),\n C(\"CH\", \"CHE\", 756, \"Switzerland\", \"Schweiz\", \"Schweiz\", \"41\", \".ch\", Continent.Europe),\n C(\"SY\", \"SYR\", 760, \"Syria\", \"Syrien\", \"سوريا\", \"963\", \".sy\", Continent.Asia),\n C(\"TW\", \"TWN\", 158, \"Taiwan\", \"Taiwan\", \"臺灣\", \"886\", \".tw\", Continent.Asia),\n C(\"TJ\", \"TJK\", 762, \"Tajikistan\", \"Tadzjikistan\", \"Тоҷикистон\", \"992\", \".tj\", Continent.Asia),\n C(\"TZ\", \"TZA\", 834, \"Tanzania\", \"Tanzania\", \"Tanzania\", \"255\", \".tz\", Continent.Africa),\n C(\"TH\", \"THA\", 764, \"Thailand\", \"Thailand\", \"ประเทศไทย\", \"66\", \".th\", Continent.Asia),\n C(\"TL\", \"TLS\", 626, \"Timor-Leste\", \"Östtimor\", \"Timor-Leste\", \"670\", \".tl\", Continent.Asia),\n C(\"TG\", \"TGO\", 768, \"Togo\", \"Togo\", \"Togo\", \"228\", \".tg\", Continent.Africa),\n C(\"TO\", \"TON\", 776, \"Tonga\", \"Tonga\", \"Tonga\", \"676\", \".to\", Continent.Oceania),\n C(\n \"TT\",\n \"TTO\",\n 780,\n \"Trinidad and Tobago\",\n \"Trinidad och Tobago\",\n \"Trinidad and Tobago\",\n \"1\",\n \".tt\",\n Continent.NorthAmerica,\n ),\n C(\"TN\", \"TUN\", 788, \"Tunisia\", \"Tunisien\", \"تونس\", \"216\", \".tn\", Continent.Africa),\n C(\"TR\", \"TUR\", 792, \"Turkey\", \"Turkiet\", \"Türkiye\", \"90\", \".tr\", Continent.Asia),\n C(\"TM\", \"TKM\", 795, \"Turkmenistan\", \"Turkmenistan\", \"Türkmenistan\", \"993\", \".tm\", Continent.Asia),\n C(\"TV\", \"TUV\", 798, \"Tuvalu\", \"Tuvalu\", \"Tuvalu\", \"688\", \".tv\", Continent.Oceania),\n C(\"UG\", \"UGA\", 800, \"Uganda\", \"Uganda\", \"Uganda\", \"256\", \".ug\", Continent.Africa),\n C(\"UA\", \"UKR\", 804, \"Ukraine\", \"Ukraina\", \"Україна\", \"380\", \".ua\", Continent.Europe),\n C(\n \"AE\",\n \"ARE\",\n 784,\n \"United Arab Emirates\",\n \"Förenade Arabemiraten\",\n \"الإمارات\",\n \"971\",\n \".ae\",\n Continent.Asia,\n ),\n C(\n \"GB\",\n \"GBR\",\n 826,\n \"United Kingdom\",\n \"Storbritannien\",\n \"United Kingdom\",\n \"44\",\n \".uk\",\n Continent.Europe,\n ),\n C(\n \"US\",\n \"USA\",\n 840,\n \"United States\",\n \"Förenta staterna\",\n \"United States\",\n \"1\",\n \".us\",\n Continent.NorthAmerica,\n ),\n C(\"UY\", \"URY\", 858, \"Uruguay\", \"Uruguay\", \"Uruguay\", \"598\", \".uy\", Continent.SouthAmerica),\n C(\"UZ\", \"UZB\", 860, \"Uzbekistan\", \"Uzbekistan\", \"Oʻzbekiston\", \"998\", \".uz\", Continent.Asia),\n C(\"VU\", \"VUT\", 548, \"Vanuatu\", \"Vanuatu\", \"Vanuatu\", \"678\", \".vu\", Continent.Oceania),\n C(\n \"VA\",\n \"VAT\",\n 336,\n \"Vatican City\",\n \"Vatikanstaten\",\n \"Città del Vaticano\",\n \"379\",\n \".va\",\n Continent.Europe,\n ),\n C(\"VE\", \"VEN\", 862, \"Venezuela\", \"Venezuela\", \"Venezuela\", \"58\", \".ve\", Continent.SouthAmerica),\n C(\"VN\", \"VNM\", 704, \"Vietnam\", \"Vietnam\", \"Việt Nam\", \"84\", \".vn\", Continent.Asia),\n C(\"YE\", \"YEM\", 887, \"Yemen\", \"Jemen\", \"اليمن\", \"967\", \".ye\", Continent.Asia),\n C(\"ZM\", \"ZMB\", 894, \"Zambia\", \"Zambia\", \"Zambia\", \"260\", \".zm\", Continent.Africa),\n C(\"ZW\", \"ZWE\", 716, \"Zimbabwe\", \"Zimbabwe\", \"Zimbabwe\", \"263\", \".zw\", Continent.Africa),\n C(\"AX\", \"ALA\", 248, \"Åland Islands\", \"Åland\", \"Åland\", \"358\", \".ax\", Continent.Europe),\n C(\"FO\", \"FRO\", 234, \"Faroe Islands\", \"Färöarna\", \"Føroyar\", \"298\", \".fo\", Continent.Europe),\n C(\"XK\", \"XKX\", 0, \"Kosovo\", \"Kosovo\", \"Kosova\", \"383\", \".xk\", Continent.Europe),\n];\n","/** Geographic coordinates (latitude, longitude) for each country, sourced from Wikidata P625. */\nexport const COUNTRY_COORDINATES: Readonly<Record<string, readonly [number, number]>> =\n Object.freeze({\n AF: [33.0, 65.0],\n AL: [41.0, 20.0],\n DZ: [28.0, 3.0],\n AS: [-14.27, -170.7],\n AD: [42.5, 1.5],\n AO: [-12.5, 18.5],\n AG: [17.05, -61.8],\n AR: [-34.0, -64.0],\n AM: [40.0, 45.0],\n AW: [12.5, -69.97],\n AU: [-27.0, 133.0],\n AT: [47.33, 13.33],\n AZ: [40.5, 47.5],\n BS: [24.25, -76.0],\n BH: [26.0, 50.55],\n BD: [24.0, 90.0],\n BB: [13.17, -59.53],\n BY: [53.0, 28.0],\n BE: [50.83, 4.0],\n BZ: [17.25, -88.75],\n BJ: [9.5, 2.25],\n BM: [32.33, -64.75],\n BT: [27.5, 90.5],\n BO: [-17.0, -65.0],\n BA: [44.0, 18.0],\n BW: [-22.0, 24.0],\n BR: [-10.0, -55.0],\n BN: [4.5, 114.67],\n BG: [43.0, 25.0],\n BF: [13.0, -2.0],\n BI: [-3.5, 30.0],\n CV: [16.0, -24.0],\n KH: [13.0, 105.0],\n CM: [6.0, 12.0],\n CA: [60.0, -95.0],\n CF: [7.0, 21.0],\n TD: [15.0, 19.0],\n CL: [-30.0, -71.0],\n CN: [35.0, 105.0],\n CO: [4.0, -72.0],\n KM: [-12.17, 44.25],\n CG: [-1.0, 15.0],\n CD: [0.0, 25.0],\n CR: [10.0, -84.0],\n CI: [8.0, -5.0],\n HR: [45.17, 15.5],\n CU: [21.5, -80.0],\n CW: [12.17, -68.98],\n CY: [35.0, 33.0],\n CZ: [49.75, 15.5],\n DK: [56.0, 10.0],\n DJ: [11.5, 43.0],\n DM: [15.42, -61.33],\n DO: [19.0, -70.67],\n EC: [-2.0, -77.5],\n EG: [27.0, 30.0],\n SV: [13.83, -88.92],\n GQ: [2.0, 10.0],\n ER: [15.0, 39.0],\n EE: [59.0, 26.0],\n SZ: [-26.5, 31.5],\n ET: [8.0, 38.0],\n FJ: [-18.0, 175.0],\n FI: [64.0, 26.0],\n FR: [46.0, 2.0],\n GA: [-1.0, 11.75],\n GM: [13.47, -16.57],\n GE: [42.0, 43.5],\n DE: [51.0, 9.0],\n GH: [8.0, -2.0],\n GI: [36.13, -5.35],\n GR: [39.0, 22.0],\n GL: [72.0, -40.0],\n GD: [12.12, -61.67],\n GU: [13.47, 144.78],\n GT: [15.5, -90.25],\n GG: [49.45, -2.54],\n GN: [11.0, -10.0],\n GW: [12.0, -15.0],\n GY: [5.0, -59.0],\n HT: [19.0, -72.42],\n HN: [15.0, -86.5],\n HK: [22.25, 114.17],\n HU: [47.0, 20.0],\n IS: [65.0, -18.0],\n IN: [20.0, 77.0],\n ID: [-5.0, 120.0],\n IR: [32.0, 53.0],\n IQ: [33.0, 44.0],\n IE: [53.0, -8.0],\n IM: [54.23, -4.55],\n IL: [31.5, 34.75],\n IT: [42.83, 12.83],\n JM: [18.25, -77.5],\n JP: [36.0, 138.0],\n JE: [49.21, -2.13],\n JO: [31.0, 36.0],\n KZ: [48.0, 68.0],\n KE: [1.0, 38.0],\n KI: [1.42, 173.0],\n KP: [40.0, 127.0],\n KR: [37.0, 127.5],\n KW: [29.34, 47.66],\n KG: [41.0, 75.0],\n LA: [18.0, 105.0],\n LV: [57.0, 25.0],\n LB: [33.83, 35.83],\n LS: [-29.5, 28.5],\n LR: [6.5, -9.5],\n LY: [25.0, 17.0],\n LI: [47.17, 9.53],\n LT: [56.0, 24.0],\n LU: [49.75, 6.17],\n MO: [22.17, 113.55],\n MG: [-20.0, 47.0],\n MW: [-13.5, 34.0],\n MY: [2.5, 112.5],\n MV: [3.25, 73.0],\n ML: [17.0, -4.0],\n MT: [35.83, 14.58],\n MH: [9.0, 168.0],\n MR: [20.0, -12.0],\n MU: [-20.28, 57.55],\n MX: [23.0, -102.0],\n FM: [6.92, 158.25],\n MD: [47.0, 29.0],\n MC: [43.73, 7.42],\n MN: [46.0, 105.0],\n ME: [42.0, 19.0],\n MA: [32.0, -5.0],\n MZ: [-18.25, 35.0],\n MM: [22.0, 98.0],\n NA: [-22.0, 17.0],\n NR: [-0.53, 166.92],\n NP: [28.0, 84.0],\n NL: [52.5, 5.75],\n NZ: [-41.0, 174.0],\n NI: [13.0, -85.0],\n NE: [16.0, 8.0],\n NG: [10.0, 8.0],\n MK: [41.83, 22.0],\n NO: [62.0, 10.0],\n OM: [21.0, 57.0],\n PK: [30.0, 70.0],\n PW: [7.5, 134.5],\n PS: [32.0, 35.25],\n PA: [9.0, -80.0],\n PG: [-6.0, 147.0],\n PY: [-23.0, -58.0],\n PE: [-10.0, -76.0],\n PH: [13.0, 122.0],\n PL: [52.0, 20.0],\n PT: [39.5, -8.0],\n PR: [18.25, -66.5],\n QA: [25.5, 51.25],\n RO: [46.0, 25.0],\n RU: [60.0, 100.0],\n RW: [-2.0, 30.0],\n KN: [17.33, -62.75],\n LC: [13.88, -61.13],\n VC: [13.25, -61.2],\n WS: [-13.58, -172.33],\n SM: [43.77, 12.42],\n ST: [1.0, 7.0],\n SA: [25.0, 45.0],\n SN: [14.0, -14.0],\n RS: [44.0, 21.0],\n SC: [-4.58, 55.67],\n SL: [8.5, -11.5],\n SG: [1.37, 103.8],\n SK: [48.67, 19.5],\n SI: [46.12, 14.82],\n SB: [-8.0, 159.0],\n SO: [10.0, 49.0],\n ZA: [-29.0, 24.0],\n SS: [8.0, 30.0],\n ES: [40.0, -4.0],\n LK: [7.0, 81.0],\n SD: [15.0, 30.0],\n SR: [4.0, -56.0],\n SE: [62.0, 15.0],\n CH: [47.0, 8.0],\n SY: [35.0, 38.0],\n TW: [23.5, 121.0],\n TJ: [39.0, 71.0],\n TZ: [-6.0, 35.0],\n TH: [15.0, 100.0],\n TL: [-8.55, 125.73],\n TG: [8.0, 1.17],\n TO: [-20.0, -175.0],\n TT: [11.0, -61.0],\n TN: [34.0, 9.0],\n TR: [39.0, 35.0],\n TM: [40.0, 60.0],\n TV: [-8.0, 178.0],\n UG: [1.0, 32.0],\n UA: [49.0, 32.0],\n AE: [24.0, 54.0],\n GB: [54.0, -2.0],\n US: [38.0, -97.0],\n UY: [-33.0, -56.0],\n UZ: [41.0, 64.0],\n VU: [-16.0, 167.0],\n VA: [41.9, 12.45],\n VE: [8.0, -66.0],\n VN: [16.0, 106.0],\n YE: [15.0, 48.0],\n ZM: [-15.0, 30.0],\n ZW: [-20.0, 30.0],\n AX: [60.12, 19.9],\n FO: [62.0, -7.0],\n XK: [42.67, 21.17],\n } as const);\n","import { CountryCapital } from \"./country-capital.js\";\nimport { GeoCoordinate } from \"./geo-coordinate.js\";\n\ninterface RawCapital {\n readonly en: string;\n readonly sv: string;\n readonly native: string;\n readonly lat: number;\n readonly lon: number;\n}\n\nconst RAW: Readonly<Record<string, RawCapital>> = {\n AF: { en: \"Kabul\", sv: \"Kabul\", native: \"کابل\", lat: 34.53, lon: 69.17 },\n AL: { en: \"Tirana\", sv: \"Tirana\", native: \"Tiranë\", lat: 41.33, lon: 19.82 },\n DZ: { en: \"Algiers\", sv: \"Alger\", native: \"الجزائر\", lat: 36.75, lon: 3.04 },\n AD: {\n en: \"Andorra la Vella\",\n sv: \"Andorra la Vella\",\n native: \"Andorra la Vella\",\n lat: 42.51,\n lon: 1.52,\n },\n AO: { en: \"Luanda\", sv: \"Luanda\", native: \"Luanda\", lat: -8.84, lon: 13.23 },\n AG: { en: \"St. John's\", sv: \"Saint John's\", native: \"St. John's\", lat: 17.12, lon: -61.85 },\n AR: { en: \"Buenos Aires\", sv: \"Buenos Aires\", native: \"Buenos Aires\", lat: -34.61, lon: -58.38 },\n AM: { en: \"Yerevan\", sv: \"Jerevan\", native: \"Երևան\", lat: 40.18, lon: 44.51 },\n AU: { en: \"Canberra\", sv: \"Canberra\", native: \"Canberra\", lat: -35.28, lon: 149.13 },\n AT: { en: \"Vienna\", sv: \"Wien\", native: \"Wien\", lat: 48.21, lon: 16.37 },\n AZ: { en: \"Baku\", sv: \"Baku\", native: \"Bakı\", lat: 40.41, lon: 49.87 },\n BS: { en: \"Nassau\", sv: \"Nassau\", native: \"Nassau\", lat: 25.06, lon: -77.34 },\n BH: { en: \"Manama\", sv: \"Manama\", native: \"المنامة\", lat: 26.23, lon: 50.59 },\n BD: { en: \"Dhaka\", sv: \"Dhaka\", native: \"ঢাকা\", lat: 23.71, lon: 90.41 },\n BB: { en: \"Bridgetown\", sv: \"Bridgetown\", native: \"Bridgetown\", lat: 13.1, lon: -59.62 },\n BY: { en: \"Minsk\", sv: \"Minsk\", native: \"Мінск\", lat: 53.9, lon: 27.57 },\n BE: { en: \"Brussels\", sv: \"Bryssel\", native: \"Bruxelles\", lat: 50.85, lon: 4.35 },\n BZ: { en: \"Belmopan\", sv: \"Belmopan\", native: \"Belmopan\", lat: 17.25, lon: -88.77 },\n BJ: { en: \"Porto-Novo\", sv: \"Porto-Novo\", native: \"Porto-Novo\", lat: 6.5, lon: 2.6 },\n BT: { en: \"Thimphu\", sv: \"Thimphu\", native: \"ཐིམ་ཕུ\", lat: 27.47, lon: 89.64 },\n BO: { en: \"Sucre\", sv: \"Sucre\", native: \"Sucre\", lat: -19.04, lon: -65.26 },\n BA: { en: \"Sarajevo\", sv: \"Sarajevo\", native: \"Sarajevo\", lat: 43.86, lon: 18.41 },\n BW: { en: \"Gaborone\", sv: \"Gaborone\", native: \"Gaborone\", lat: -24.65, lon: 25.91 },\n BR: { en: \"Brasília\", sv: \"Brasília\", native: \"Brasília\", lat: -15.79, lon: -47.88 },\n BN: {\n en: \"Bandar Seri Begawan\",\n sv: \"Bandar Seri Begawan\",\n native: \"Bandar Seri Begawan\",\n lat: 4.94,\n lon: 114.95,\n },\n BG: { en: \"Sofia\", sv: \"Sofia\", native: \"София\", lat: 42.7, lon: 23.32 },\n BF: { en: \"Ouagadougou\", sv: \"Ouagadougou\", native: \"Ouagadougou\", lat: 12.37, lon: -1.52 },\n BI: { en: \"Gitega\", sv: \"Gitega\", native: \"Gitega\", lat: -3.43, lon: 29.93 },\n CV: { en: \"Praia\", sv: \"Praia\", native: \"Praia\", lat: 14.92, lon: -23.51 },\n KH: { en: \"Phnom Penh\", sv: \"Phnom Penh\", native: \"ភ្នំពេញ\", lat: 11.56, lon: 104.93 },\n CM: { en: \"Yaoundé\", sv: \"Yaoundé\", native: \"Yaoundé\", lat: 3.87, lon: 11.52 },\n CA: { en: \"Ottawa\", sv: \"Ottawa\", native: \"Ottawa\", lat: 45.42, lon: -75.7 },\n CF: { en: \"Bangui\", sv: \"Bangui\", native: \"Bangui\", lat: 4.37, lon: 18.59 },\n TD: { en: \"N'Djamena\", sv: \"N'Djamena\", native: \"N'Djamena\", lat: 12.11, lon: 15.05 },\n CL: { en: \"Santiago\", sv: \"Santiago\", native: \"Santiago\", lat: -33.45, lon: -70.67 },\n CN: { en: \"Beijing\", sv: \"Peking\", native: \"北京\", lat: 39.91, lon: 116.39 },\n CO: { en: \"Bogotá\", sv: \"Bogotá\", native: \"Bogotá\", lat: 4.71, lon: -74.07 },\n KM: { en: \"Moroni\", sv: \"Moroni\", native: \"Moroni\", lat: -11.7, lon: 43.26 },\n CG: { en: \"Brazzaville\", sv: \"Brazzaville\", native: \"Brazzaville\", lat: -4.27, lon: 15.28 },\n CD: { en: \"Kinshasa\", sv: \"Kinshasa\", native: \"Kinshasa\", lat: -4.32, lon: 15.31 },\n CR: { en: \"San José\", sv: \"San José\", native: \"San José\", lat: 9.93, lon: -84.08 },\n CI: { en: \"Yamoussoukro\", sv: \"Yamoussoukro\", native: \"Yamoussoukro\", lat: 6.82, lon: -5.28 },\n HR: { en: \"Zagreb\", sv: \"Zagreb\", native: \"Zagreb\", lat: 45.81, lon: 15.98 },\n CU: { en: \"Havana\", sv: \"Havanna\", native: \"La Habana\", lat: 23.13, lon: -82.38 },\n CY: { en: \"Nicosia\", sv: \"Nicosia\", native: \"Λευκωσία\", lat: 35.17, lon: 33.37 },\n CZ: { en: \"Prague\", sv: \"Prag\", native: \"Praha\", lat: 50.09, lon: 14.42 },\n DK: { en: \"Copenhagen\", sv: \"Köpenhamn\", native: \"København\", lat: 55.68, lon: 12.57 },\n DJ: { en: \"Djibouti\", sv: \"Djibouti\", native: \"Djibouti\", lat: 11.59, lon: 43.15 },\n DM: { en: \"Roseau\", sv: \"Roseau\", native: \"Roseau\", lat: 15.3, lon: -61.39 },\n DO: { en: \"Santo Domingo\", sv: \"Santo Domingo\", native: \"Santo Domingo\", lat: 18.47, lon: -69.9 },\n EC: { en: \"Quito\", sv: \"Quito\", native: \"Quito\", lat: -0.18, lon: -78.47 },\n EG: { en: \"Cairo\", sv: \"Kairo\", native: \"القاهرة\", lat: 30.04, lon: 31.24 },\n SV: { en: \"San Salvador\", sv: \"San Salvador\", native: \"San Salvador\", lat: 13.69, lon: -89.19 },\n GQ: { en: \"Malabo\", sv: \"Malabo\", native: \"Malabo\", lat: 3.75, lon: 8.78 },\n ER: { en: \"Asmara\", sv: \"Asmara\", native: \"ኣስመራ\", lat: 15.33, lon: 38.93 },\n EE: { en: \"Tallinn\", sv: \"Tallinn\", native: \"Tallinn\", lat: 59.44, lon: 24.75 },\n SZ: { en: \"Mbabane\", sv: \"Mbabane\", native: \"Mbabane\", lat: -26.32, lon: 31.13 },\n ET: { en: \"Addis Ababa\", sv: \"Addis Abeba\", native: \"አዲስ አበባ\", lat: 9.02, lon: 38.75 },\n FJ: { en: \"Suva\", sv: \"Suva\", native: \"Suva\", lat: -18.14, lon: 178.44 },\n FI: { en: \"Helsinki\", sv: \"Helsingfors\", native: \"Helsinki\", lat: 60.17, lon: 24.94 },\n FR: { en: \"Paris\", sv: \"Paris\", native: \"Paris\", lat: 48.86, lon: 2.35 },\n GA: { en: \"Libreville\", sv: \"Libreville\", native: \"Libreville\", lat: 0.39, lon: 9.45 },\n GM: { en: \"Banjul\", sv: \"Banjul\", native: \"Banjul\", lat: 13.45, lon: -16.58 },\n GE: { en: \"Tbilisi\", sv: \"Tbilisi\", native: \"თბილისი\", lat: 41.69, lon: 44.8 },\n DE: { en: \"Berlin\", sv: \"Berlin\", native: \"Berlin\", lat: 52.52, lon: 13.41 },\n GH: { en: \"Accra\", sv: \"Accra\", native: \"Accra\", lat: 5.56, lon: -0.19 },\n GR: { en: \"Athens\", sv: \"Aten\", native: \"Αθήνα\", lat: 37.98, lon: 23.73 },\n GD: { en: \"St. George's\", sv: \"Saint George's\", native: \"St. George's\", lat: 12.05, lon: -61.75 },\n GT: {\n en: \"Guatemala City\",\n sv: \"Guatemala City\",\n native: \"Ciudad de Guatemala\",\n lat: 14.63,\n lon: -90.51,\n },\n GN: { en: \"Conakry\", sv: \"Conakry\", native: \"Conakry\", lat: 9.54, lon: -13.68 },\n GW: { en: \"Bissau\", sv: \"Bissau\", native: \"Bissau\", lat: 11.86, lon: -15.6 },\n GY: { en: \"Georgetown\", sv: \"Georgetown\", native: \"Georgetown\", lat: 6.8, lon: -58.16 },\n HT: { en: \"Port-au-Prince\", sv: \"Port-au-Prince\", native: \"Pòtoprens\", lat: 18.54, lon: -72.34 },\n HN: { en: \"Tegucigalpa\", sv: \"Tegucigalpa\", native: \"Tegucigalpa\", lat: 14.1, lon: -87.22 },\n HK: { en: \"Hong Kong\", sv: \"Hongkong\", native: \"香港\", lat: 22.28, lon: 114.16 },\n HU: { en: \"Budapest\", sv: \"Budapest\", native: \"Budapest\", lat: 47.5, lon: 19.04 },\n IS: { en: \"Reykjavik\", sv: \"Reykjavik\", native: \"Reykjavík\", lat: 64.14, lon: -21.9 },\n IN: { en: \"New Delhi\", sv: \"New Delhi\", native: \"नई दिल्ली\", lat: 28.61, lon: 77.21 },\n ID: { en: \"Jakarta\", sv: \"Jakarta\", native: \"Jakarta\", lat: -6.21, lon: 106.85 },\n IR: { en: \"Tehran\", sv: \"Teheran\", native: \"تهران\", lat: 35.69, lon: 51.39 },\n IQ: { en: \"Baghdad\", sv: \"Bagdad\", native: \"بغداد\", lat: 33.34, lon: 44.4 },\n IE: { en: \"Dublin\", sv: \"Dublin\", native: \"Baile Átha Cliath\", lat: 53.35, lon: -6.26 },\n IL: { en: \"Jerusalem\", sv: \"Jerusalem\", native: \"ירושלים\", lat: 31.77, lon: 35.23 },\n IT: { en: \"Rome\", sv: \"Rom\", native: \"Roma\", lat: 41.9, lon: 12.5 },\n JM: { en: \"Kingston\", sv: \"Kingston\", native: \"Kingston\", lat: 18.0, lon: -76.79 },\n JP: { en: \"Tokyo\", sv: \"Tokyo\", native: \"東京\", lat: 35.68, lon: 139.69 },\n JO: { en: \"Amman\", sv: \"Amman\", native: \"عمّان\", lat: 31.95, lon: 35.93 },\n KZ: { en: \"Astana\", sv: \"Astana\", native: \"Астана\", lat: 51.17, lon: 71.43 },\n KE: { en: \"Nairobi\", sv: \"Nairobi\", native: \"Nairobi\", lat: -1.29, lon: 36.82 },\n KI: { en: \"Tarawa\", sv: \"Tarawa\", native: \"Tarawa\", lat: 1.45, lon: 173.0 },\n KP: { en: \"Pyongyang\", sv: \"Pyongyang\", native: \"평양\", lat: 39.02, lon: 125.75 },\n KR: { en: \"Seoul\", sv: \"Seoul\", native: \"서울\", lat: 37.57, lon: 126.98 },\n KW: { en: \"Kuwait City\", sv: \"Kuwait City\", native: \"مدينة الكويت\", lat: 29.37, lon: 47.98 },\n KG: { en: \"Bishkek\", sv: \"Bisjkek\", native: \"Бишкек\", lat: 42.87, lon: 74.59 },\n LA: { en: \"Vientiane\", sv: \"Vientiane\", native: \"ວຽງຈັນ\", lat: 17.97, lon: 102.63 },\n LV: { en: \"Riga\", sv: \"Riga\", native: \"Rīga\", lat: 56.95, lon: 24.11 },\n LB: { en: \"Beirut\", sv: \"Beirut\", native: \"بيروت\", lat: 33.89, lon: 35.5 },\n LS: { en: \"Maseru\", sv: \"Maseru\", native: \"Maseru\", lat: -29.31, lon: 27.48 },\n LR: { en: \"Monrovia\", sv: \"Monrovia\", native: \"Monrovia\", lat: 6.3, lon: -10.8 },\n LY: { en: \"Tripoli\", sv: \"Tripoli\", native: \"طرابلس\", lat: 32.9, lon: 13.18 },\n LI: { en: \"Vaduz\", sv: \"Vaduz\", native: \"Vaduz\", lat: 47.14, lon: 9.52 },\n LT: { en: \"Vilnius\", sv: \"Vilnius\", native: \"Vilnius\", lat: 54.69, lon: 25.28 },\n LU: { en: \"Luxembourg City\", sv: \"Luxemburg\", native: \"Lëtzebuerg\", lat: 49.61, lon: 6.13 },\n MO: { en: \"Macao\", sv: \"Macao\", native: \"澳門\", lat: 22.2, lon: 113.54 },\n MG: { en: \"Antananarivo\", sv: \"Antananarivo\", native: \"Antananarivo\", lat: -18.91, lon: 47.53 },\n MW: { en: \"Lilongwe\", sv: \"Lilongwe\", native: \"Lilongwe\", lat: -13.97, lon: 33.79 },\n MY: { en: \"Kuala Lumpur\", sv: \"Kuala Lumpur\", native: \"Kuala Lumpur\", lat: 3.14, lon: 101.69 },\n MV: { en: \"Malé\", sv: \"Malé\", native: \"މާލެ\", lat: 4.18, lon: 73.51 },\n ML: { en: \"Bamako\", sv: \"Bamako\", native: \"Bamako\", lat: 12.65, lon: -8.0 },\n MT: { en: \"Valletta\", sv: \"Valletta\", native: \"Valletta\", lat: 35.9, lon: 14.51 },\n MH: { en: \"Majuro\", sv: \"Majuro\", native: \"Majuro\", lat: 7.09, lon: 171.38 },\n MR: { en: \"Nouakchott\", sv: \"Nouakchott\", native: \"نواكشوط\", lat: 18.09, lon: -15.98 },\n MU: { en: \"Port Louis\", sv: \"Port Louis\", native: \"Port Louis\", lat: -20.16, lon: 57.5 },\n MX: { en: \"Mexico City\", sv: \"Mexico City\", native: \"Ciudad de México\", lat: 19.43, lon: -99.13 },\n FM: { en: \"Palikir\", sv: \"Palikir\", native: \"Palikir\", lat: 6.92, lon: 158.16 },\n MD: { en: \"Chișinău\", sv: \"Chișinău\", native: \"Chișinău\", lat: 47.01, lon: 28.86 },\n MC: { en: \"Monaco\", sv: \"Monaco\", native: \"Monaco\", lat: 43.73, lon: 7.42 },\n MN: { en: \"Ulaanbaatar\", sv: \"Ulaanbaatar\", native: \"Улаанбаатар\", lat: 47.91, lon: 106.91 },\n ME: { en: \"Podgorica\", sv: \"Podgorica\", native: \"Podgorica\", lat: 42.44, lon: 19.26 },\n MA: { en: \"Rabat\", sv: \"Rabat\", native: \"الرباط\", lat: 34.01, lon: -6.84 },\n MZ: { en: \"Maputo\", sv: \"Maputo\", native: \"Maputo\", lat: -25.97, lon: 32.57 },\n MM: { en: \"Naypyidaw\", sv: \"Naypyidaw\", native: \"နေပြည်တော်\", lat: 19.76, lon: 96.07 },\n NA: { en: \"Windhoek\", sv: \"Windhoek\", native: \"Windhoek\", lat: -22.57, lon: 17.08 },\n NR: { en: \"Yaren\", sv: \"Yaren\", native: \"Yaren\", lat: -0.55, lon: 166.93 },\n NP: { en: \"Kathmandu\", sv: \"Kathmandu\", native: \"काठमाडौं\", lat: 27.7, lon: 85.32 },\n NL: { en: \"Amsterdam\", sv: \"Amsterdam\", native: \"Amsterdam\", lat: 52.37, lon: 4.9 },\n NZ: { en: \"Wellington\", sv: \"Wellington\", native: \"Wellington\", lat: -41.29, lon: 174.78 },\n NI: { en: \"Managua\", sv: \"Managua\", native: \"Managua\", lat: 12.15, lon: -86.27 },\n NE: { en: \"Niamey\", sv: \"Niamey\", native: \"Niamey\", lat: 13.51, lon: 2.11 },\n NG: { en: \"Abuja\", sv: \"Abuja\", native: \"Abuja\", lat: 9.06, lon: 7.49 },\n MK: { en: \"Skopje\", sv: \"Skopje\", native: \"Скопје\", lat: 42.0, lon: 21.43 },\n NO: { en: \"Oslo\", sv: \"Oslo\", native: \"Oslo\", lat: 59.91, lon: 10.75 },\n OM: { en: \"Muscat\", sv: \"Muskat\", native: \"مسقط\", lat: 23.59, lon: 58.54 },\n PK: { en: \"Islamabad\", sv: \"Islamabad\", native: \"اسلام آباد\", lat: 33.69, lon: 73.04 },\n PW: { en: \"Ngerulmud\", sv: \"Ngerulmud\", native: \"Ngerulmud\", lat: 7.5, lon: 134.62 },\n PS: { en: \"Ramallah\", sv: \"Ramallah\", native: \"رام الله\", lat: 31.9, lon: 35.2 },\n PA: { en: \"Panama City\", sv: \"Panama City\", native: \"Ciudad de Panamá\", lat: 8.98, lon: -79.52 },\n PG: { en: \"Port Moresby\", sv: \"Port Moresby\", native: \"Port Moresby\", lat: -9.48, lon: 147.15 },\n PY: { en: \"Asunción\", sv: \"Asunción\", native: \"Asunción\", lat: -25.26, lon: -57.58 },\n PE: { en: \"Lima\", sv: \"Lima\", native: \"Lima\", lat: -12.05, lon: -77.04 },\n PH: { en: \"Manila\", sv: \"Manila\", native: \"Maynila\", lat: 14.6, lon: 120.98 },\n PL: { en: \"Warsaw\", sv: \"Warszawa\", native: \"Warszawa\", lat: 52.23, lon: 21.01 },\n PT: { en: \"Lisbon\", sv: \"Lissabon\", native: \"Lisboa\", lat: 38.72, lon: -9.14 },\n PR: { en: \"San Juan\", sv: \"San Juan\", native: \"San Juan\", lat: 18.47, lon: -66.11 },\n QA: { en: \"Doha\", sv: \"Doha\", native: \"الدوحة\", lat: 25.29, lon: 51.53 },\n RO: { en: \"Bucharest\", sv: \"Bukarest\", native: \"București\", lat: 44.43, lon: 26.1 },\n RU: { en: \"Moscow\", sv: \"Moskva\", native: \"Москва\", lat: 55.76, lon: 37.62 },\n RW: { en: \"Kigali\", sv: \"Kigali\", native: \"Kigali\", lat: -1.94, lon: 30.06 },\n KN: { en: \"Basseterre\", sv: \"Basseterre\", native: \"Basseterre\", lat: 17.3, lon: -62.72 },\n LC: { en: \"Castries\", sv: \"Castries\", native: \"Castries\", lat: 14.01, lon: -61.0 },\n VC: { en: \"Kingstown\", sv: \"Kingstown\", native: \"Kingstown\", lat: 13.15, lon: -61.22 },\n WS: { en: \"Apia\", sv: \"Apia\", native: \"Apia\", lat: -13.83, lon: -171.76 },\n SM: { en: \"San Marino\", sv: \"San Marino\", native: \"San Marino\", lat: 43.94, lon: 12.45 },\n ST: { en: \"São Tomé\", sv: \"São Tomé\", native: \"São Tomé\", lat: 0.34, lon: 6.73 },\n SA: { en: \"Riyadh\", sv: \"Riyadh\", native: \"الرياض\", lat: 24.69, lon: 46.72 },\n SN: { en: \"Dakar\", sv: \"Dakar\", native: \"Dakar\", lat: 14.69, lon: -17.44 },\n RS: { en: \"Belgrade\", sv: \"Belgrad\", native: \"Београд\", lat: 44.82, lon: 20.46 },\n SC: { en: \"Victoria\", sv: \"Victoria\", native: \"Victoria\", lat: -4.62, lon: 55.45 },\n SL: { en: \"Freetown\", sv: \"Freetown\", native: \"Freetown\", lat: 8.48, lon: -13.23 },\n SG: { en: \"Singapore\", sv: \"Singapore\", native: \"Singapore\", lat: 1.29, lon: 103.85 },\n SK: { en: \"Bratislava\", sv: \"Bratislava\", native: \"Bratislava\", lat: 48.14, lon: 17.11 },\n SI: { en: \"Ljubljana\", sv: \"Ljubljana\", native: \"Ljubljana\", lat: 46.05, lon: 14.51 },\n SB: { en: \"Honiara\", sv: \"Honiara\", native: \"Honiara\", lat: -9.43, lon: 159.96 },\n SO: { en: \"Mogadishu\", sv: \"Mogadishu\", native: \"Muqdisho\", lat: 2.05, lon: 45.32 },\n ZA: { en: \"Pretoria\", sv: \"Pretoria\", native: \"Pretoria\", lat: -25.75, lon: 28.19 },\n SS: { en: \"Juba\", sv: \"Juba\", native: \"Juba\", lat: 4.85, lon: 31.58 },\n ES: { en: \"Madrid\", sv: \"Madrid\", native: \"Madrid\", lat: 40.42, lon: -3.7 },\n LK: {\n en: \"Sri Jayawardenepura Kotte\",\n sv: \"Sri Jayawardenepura Kotte\",\n native: \"ශ්‍රී ජයවර්ධනපුර කෝට්ටේ\",\n lat: 6.89,\n lon: 79.92,\n },\n SD: { en: \"Khartoum\", sv: \"Khartoum\", native: \"الخرطوم\", lat: 15.59, lon: 32.53 },\n SR: { en: \"Paramaribo\", sv: \"Paramaribo\", native: \"Paramaribo\", lat: 5.83, lon: -55.17 },\n SE: { en: \"Stockholm\", sv: \"Stockholm\", native: \"Stockholm\", lat: 59.33, lon: 18.07 },\n CH: { en: \"Bern\", sv: \"Bern\", native: \"Bern\", lat: 46.95, lon: 7.45 },\n SY: { en: \"Damascus\", sv: \"Damaskus\", native: \"دمشق\", lat: 33.51, lon: 36.29 },\n TW: { en: \"Taipei\", sv: \"Taipei\", native: \"臺北\", lat: 25.03, lon: 121.57 },\n TJ: { en: \"Dushanbe\", sv: \"Dusjanbe\", native: \"Душанбе\", lat: 38.56, lon: 68.77 },\n TZ: { en: \"Dodoma\", sv: \"Dodoma\", native: \"Dodoma\", lat: -6.16, lon: 35.75 },\n TH: { en: \"Bangkok\", sv: \"Bangkok\", native: \"กรุงเทพมหานคร\", lat: 13.76, lon: 100.5 },\n TL: { en: \"Dili\", sv: \"Dili\", native: \"Dili\", lat: -8.56, lon: 125.57 },\n TG: { en: \"Lomé\", sv: \"Lomé\", native: \"Lomé\", lat: 6.14, lon: 1.21 },\n TO: { en: \"Nukuʻalofa\", sv: \"Nukuʻalofa\", native: \"Nukuʻalofa\", lat: -21.21, lon: -175.2 },\n TT: {\n en: \"Port of Spain\",\n sv: \"Port of Spain\",\n native: \"Port of Spain\",\n lat: 10.66,\n lon: -61.51,\n },\n TN: { en: \"Tunis\", sv: \"Tunis\", native: \"تونس\", lat: 36.81, lon: 10.17 },\n TR: { en: \"Ankara\", sv: \"Ankara\", native: \"Ankara\", lat: 39.93, lon: 32.86 },\n TM: { en: \"Ashgabat\", sv: \"Asjchabad\", native: \"Aşgabat\", lat: 37.95, lon: 58.38 },\n TV: { en: \"Funafuti\", sv: \"Funafuti\", native: \"Funafuti\", lat: -8.52, lon: 179.2 },\n UG: { en: \"Kampala\", sv: \"Kampala\", native: \"Kampala\", lat: 0.31, lon: 32.58 },\n UA: { en: \"Kyiv\", sv: \"Kiev\", native: \"Київ\", lat: 50.45, lon: 30.52 },\n AE: { en: \"Abu Dhabi\", sv: \"Abu Dhabi\", native: \"أبو ظبي\", lat: 24.45, lon: 54.65 },\n GB: { en: \"London\", sv: \"London\", native: \"London\", lat: 51.51, lon: -0.13 },\n US: {\n en: \"Washington, D.C.\",\n sv: \"Washington, D.C.\",\n native: \"Washington, D.C.\",\n lat: 38.9,\n lon: -77.04,\n },\n UY: { en: \"Montevideo\", sv: \"Montevideo\", native: \"Montevideo\", lat: -34.88, lon: -56.19 },\n UZ: { en: \"Tashkent\", sv: \"Tasjkent\", native: \"Toshkent\", lat: 41.3, lon: 69.28 },\n VU: { en: \"Port Vila\", sv: \"Port Vila\", native: \"Port Vila\", lat: -17.74, lon: 168.31 },\n VA: {\n en: \"Vatican City\",\n sv: \"Vatikanstaden\",\n native: \"Città del Vaticano\",\n lat: 41.9,\n lon: 12.45,\n },\n VE: { en: \"Caracas\", sv: \"Caracas\", native: \"Caracas\", lat: 10.49, lon: -66.9 },\n VN: { en: \"Hanoi\", sv: \"Hanoi\", native: \"Hà Nội\", lat: 21.03, lon: 105.85 },\n YE: { en: \"Sana'a\", sv: \"Sana'a\", native: \"صنعاء\", lat: 15.35, lon: 44.21 },\n ZM: { en: \"Lusaka\", sv: \"Lusaka\", native: \"Lusaka\", lat: -15.39, lon: 28.32 },\n ZW: { en: \"Harare\", sv: \"Harare\", native: \"Harare\", lat: -17.83, lon: 31.05 },\n AX: { en: \"Mariehamn\", sv: \"Mariehamn\", native: \"Mariehamn\", lat: 60.1, lon: 19.94 },\n FO: { en: \"Tórshavn\", sv: \"Torshamn\", native: \"Tórshavn\", lat: 62.01, lon: -6.77 },\n XK: { en: \"Pristina\", sv: \"Pristina\", native: \"Prishtinë\", lat: 42.66, lon: 21.17 },\n GI: { en: \"Gibraltar\", sv: \"Gibraltar\", native: \"Gibraltar\", lat: 36.14, lon: -5.35 },\n GL: { en: \"Nuuk\", sv: \"Nuuk\", native: \"Nuuk\", lat: 64.17, lon: -51.74 },\n GG: {\n en: \"St. Peter Port\",\n sv: \"Saint Peter Port\",\n native: \"St. Peter Port\",\n lat: 49.46,\n lon: -2.54,\n },\n IM: { en: \"Douglas\", sv: \"Douglas\", native: \"Douglas\", lat: 54.15, lon: -4.48 },\n JE: { en: \"St. Helier\", sv: \"Saint Helier\", native: \"St. Helier\", lat: 49.19, lon: -2.1 },\n};\n\n/** Returns the {@link CountryCapital} for the given alpha-2 code, or `null` if unknown. */\nexport function getCountryCapital(alpha2: string): CountryCapital | null {\n const r = RAW[alpha2];\n if (!r) return null;\n return new CountryCapital(r.en, r.sv, r.native, GeoCoordinate.create(r.lat, r.lon));\n}\n","/** EU/EEA/Schengen/Nordic/SEPA membership and currency overrides. */\n\nconst set = (codes: readonly string[]): ReadonlySet<string> => {\n const s = new Set<string>();\n for (const c of codes) s.add(c.toUpperCase());\n return s;\n};\n\nexport const EU_COUNTRIES: ReadonlySet<string> = set([\n \"AT\",\n \"BE\",\n \"BG\",\n \"HR\",\n \"CY\",\n \"CZ\",\n \"DK\",\n \"EE\",\n \"FI\",\n \"FR\",\n \"DE\",\n \"GR\",\n \"HU\",\n \"IE\",\n \"IT\",\n \"LV\",\n \"LT\",\n \"LU\",\n \"MT\",\n \"NL\",\n \"PL\",\n \"PT\",\n \"RO\",\n \"SK\",\n \"SI\",\n \"ES\",\n \"SE\",\n]);\n\nexport const EEA_COUNTRIES: ReadonlySet<string> = set([\n \"AT\",\n \"BE\",\n \"BG\",\n \"HR\",\n \"CY\",\n \"CZ\",\n \"DK\",\n \"EE\",\n \"FI\",\n \"FR\",\n \"DE\",\n \"GR\",\n \"HU\",\n \"IE\",\n \"IT\",\n \"LV\",\n \"LT\",\n \"LU\",\n \"MT\",\n \"NL\",\n \"PL\",\n \"PT\",\n \"RO\",\n \"SK\",\n \"SI\",\n \"ES\",\n \"SE\",\n \"IS\",\n \"LI\",\n \"NO\",\n]);\n\nexport const SCHENGEN_COUNTRIES: ReadonlySet<string> = set([\n \"AT\",\n \"BE\",\n \"BG\",\n \"HR\",\n \"CZ\",\n \"DK\",\n \"EE\",\n \"FI\",\n \"FR\",\n \"DE\",\n \"GR\",\n \"HU\",\n \"IT\",\n \"LV\",\n \"LT\",\n \"LU\",\n \"MT\",\n \"NL\",\n \"PL\",\n \"PT\",\n \"RO\",\n \"SK\",\n \"SI\",\n \"ES\",\n \"SE\",\n \"IS\",\n \"LI\",\n \"NO\",\n \"CH\",\n]);\n\nexport const NORDIC_COUNTRIES: ReadonlySet<string> = set([\"DK\", \"FI\", \"IS\", \"NO\", \"SE\"]);\n\nexport const SEPA_COUNTRIES: ReadonlySet<string> = set([\n \"AT\",\n \"BE\",\n \"BG\",\n \"HR\",\n \"CY\",\n \"CZ\",\n \"DK\",\n \"EE\",\n \"FI\",\n \"FR\",\n \"DE\",\n \"GR\",\n \"HU\",\n \"IE\",\n \"IT\",\n \"LV\",\n \"LT\",\n \"LU\",\n \"MT\",\n \"NL\",\n \"PL\",\n \"PT\",\n \"RO\",\n \"SK\",\n \"SI\",\n \"ES\",\n \"SE\",\n \"IS\",\n \"LI\",\n \"NO\",\n \"AL\",\n \"AD\",\n \"MD\",\n \"MC\",\n \"ME\",\n \"MK\",\n \"SM\",\n \"RS\",\n \"CH\",\n \"GB\",\n \"VA\",\n \"GG\",\n \"IM\",\n \"JE\",\n]);\n\n/** ISO 4217 currency codes per ISO 3166 country, with overrides for territories. */\nexport const COUNTRY_CURRENCIES: Readonly<Record<string, readonly string[]>> = Object.freeze({\n AF: [\"AFN\"],\n AL: [\"ALL\"],\n DZ: [\"DZD\"],\n AS: [\"USD\"],\n AD: [\"EUR\"],\n AO: [\"AOA\"],\n AG: [\"XCD\"],\n AR: [\"ARS\"],\n AM: [\"AMD\"],\n AW: [\"AWG\"],\n AU: [\"AUD\"],\n AT: [\"EUR\"],\n AZ: [\"AZN\"],\n BS: [\"BSD\"],\n BH: [\"BHD\"],\n BD: [\"BDT\"],\n BB: [\"BBD\"],\n BY: [\"BYN\"],\n BE: [\"EUR\"],\n BZ: [\"BZD\"],\n BJ: [\"XOF\"],\n BM: [\"BMD\"],\n BT: [\"BTN\"],\n BO: [\"BOB\"],\n BA: [\"BAM\"],\n BW: [\"BWP\"],\n BR: [\"BRL\"],\n BN: [\"BND\"],\n BG: [\"BGN\"],\n BF: [\"XOF\"],\n BI: [\"BIF\"],\n CV: [\"CVE\"],\n KH: [\"KHR\"],\n CM: [\"XAF\"],\n CA: [\"CAD\"],\n CF: [\"XAF\"],\n TD: [\"XAF\"],\n CL: [\"CLP\"],\n CN: [\"CNY\"],\n CO: [\"COP\"],\n KM: [\"KMF\"],\n CG: [\"XAF\"],\n CD: [\"CDF\"],\n CR: [\"CRC\"],\n CI: [\"XOF\"],\n HR: [\"EUR\"],\n CU: [\"CUP\"],\n CW: [\"ANG\"],\n CY: [\"EUR\"],\n CZ: [\"CZK\"],\n DK: [\"DKK\"],\n DJ: [\"DJF\"],\n DM: [\"XCD\"],\n DO: [\"DOP\"],\n EC: [\"USD\"],\n EG: [\"EGP\"],\n SV: [\"USD\"],\n GQ: [\"XAF\"],\n ER: [\"ERN\"],\n EE: [\"EUR\"],\n SZ: [\"SZL\"],\n ET: [\"ETB\"],\n FJ: [\"FJD\"],\n FI: [\"EUR\"],\n FR: [\"EUR\"],\n GA: [\"XAF\"],\n GM: [\"GMD\"],\n GE: [\"GEL\"],\n DE: [\"EUR\"],\n GH: [\"GHS\"],\n GI: [\"GIP\"],\n GR: [\"EUR\"],\n GL: [\"DKK\"],\n GD: [\"XCD\"],\n GU: [\"USD\"],\n GT: [\"GTQ\"],\n GG: [\"GBP\"],\n GN: [\"GNF\"],\n GW: [\"XOF\"],\n GY: [\"GYD\"],\n HT: [\"HTG\"],\n HN: [\"HNL\"],\n HK: [\"HKD\"],\n HU: [\"HUF\"],\n IS: [\"ISK\"],\n IN: [\"INR\"],\n ID: [\"IDR\"],\n IR: [\"IRR\"],\n IQ: [\"IQD\"],\n IE: [\"EUR\"],\n IM: [\"GBP\"],\n IL: [\"ILS\"],\n IT: [\"EUR\"],\n JM: [\"JMD\"],\n JP: [\"JPY\"],\n JE: [\"GBP\"],\n JO: [\"JOD\"],\n KZ: [\"KZT\"],\n KE: [\"KES\"],\n KI: [\"AUD\"],\n KP: [\"KPW\"],\n KR: [\"KRW\"],\n KW: [\"KWD\"],\n KG: [\"KGS\"],\n LA: [\"LAK\"],\n LV: [\"EUR\"],\n LB: [\"LBP\"],\n LS: [\"LSL\"],\n LR: [\"LRD\"],\n LY: [\"LYD\"],\n LI: [\"CHF\"],\n LT: [\"EUR\"],\n LU: [\"EUR\"],\n MO: [\"MOP\"],\n MG: [\"MGA\"],\n MW: [\"MWK\"],\n MY: [\"MYR\"],\n MV: [\"MVR\"],\n ML: [\"XOF\"],\n MT: [\"EUR\"],\n MH: [\"USD\"],\n MR: [\"MRU\"],\n MU: [\"MUR\"],\n MX: [\"MXN\"],\n FM: [\"USD\"],\n MD: [\"MDL\"],\n MC: [\"EUR\"],\n MN: [\"MNT\"],\n ME: [\"EUR\"],\n MA: [\"MAD\"],\n MZ: [\"MZN\"],\n MM: [\"MMK\"],\n NA: [\"NAD\"],\n NR: [\"AUD\"],\n NP: [\"NPR\"],\n NL: [\"EUR\"],\n NZ: [\"NZD\"],\n NI: [\"NIO\"],\n NE: [\"XOF\"],\n NG: [\"NGN\"],\n MK: [\"MKD\"],\n NO: [\"NOK\"],\n OM: [\"OMR\"],\n PK: [\"PKR\"],\n PW: [\"USD\"],\n PS: [\"ILS\"],\n PA: [\"PAB\"],\n PG: [\"PGK\"],\n PY: [\"PYG\"],\n PE: [\"PEN\"],\n PH: [\"PHP\"],\n PL: [\"PLN\"],\n PT: [\"EUR\"],\n PR: [\"USD\"],\n QA: [\"QAR\"],\n RO: [\"RON\"],\n RU: [\"RUB\"],\n RW: [\"RWF\"],\n KN: [\"XCD\"],\n LC: [\"XCD\"],\n VC: [\"XCD\"],\n WS: [\"WST\"],\n SM: [\"EUR\"],\n ST: [\"STN\"],\n SA: [\"SAR\"],\n SN: [\"XOF\"],\n RS: [\"RSD\"],\n SC: [\"SCR\"],\n SL: [\"SLE\"],\n SG: [\"SGD\"],\n SK: [\"EUR\"],\n SI: [\"EUR\"],\n SB: [\"SBD\"],\n SO: [\"SOS\"],\n ZA: [\"ZAR\"],\n SS: [\"SSP\"],\n ES: [\"EUR\"],\n LK: [\"LKR\"],\n SD: [\"SDG\"],\n SR: [\"SRD\"],\n SE: [\"SEK\"],\n CH: [\"CHF\"],\n SY: [\"SYP\"],\n TW: [\"TWD\"],\n TJ: [\"TJS\"],\n TZ: [\"TZS\"],\n TH: [\"THB\"],\n TL: [\"USD\"],\n TG: [\"XOF\"],\n TO: [\"TOP\"],\n TT: [\"TTD\"],\n TN: [\"TND\"],\n TR: [\"TRY\"],\n TM: [\"TMT\"],\n TV: [\"AUD\"],\n UG: [\"UGX\"],\n UA: [\"UAH\"],\n AE: [\"AED\"],\n GB: [\"GBP\"],\n US: [\"USD\"],\n UY: [\"UYU\"],\n UZ: [\"UZS\"],\n VU: [\"VUV\"],\n VA: [\"EUR\"],\n VE: [\"VES\"],\n VN: [\"VND\"],\n YE: [\"YER\"],\n ZM: [\"ZMW\"],\n ZW: [\"ZWG\"],\n AX: [\"EUR\"],\n FO: [\"DKK\"],\n XK: [\"EUR\"],\n} as const);\n\n/** ISO 639-1 official language codes per country. */\nexport const COUNTRY_LANGUAGES: Readonly<Record<string, readonly string[]>> = Object.freeze({\n AF: [\"ps\", \"fa\"],\n AL: [\"sq\"],\n DZ: [\"ar\"],\n AD: [\"ca\"],\n AO: [\"pt\"],\n AG: [\"en\"],\n AR: [\"es\"],\n AM: [\"hy\"],\n AU: [\"en\"],\n AT: [\"de\"],\n AZ: [\"az\"],\n BS: [\"en\"],\n BH: [\"ar\"],\n BD: [\"bn\"],\n BB: [\"en\"],\n BY: [\"be\", \"ru\"],\n BE: [\"nl\", \"fr\", \"de\"],\n BZ: [\"en\"],\n BJ: [\"fr\"],\n BT: [\"dz\"],\n BO: [\"es\", \"qu\", \"ay\"],\n BA: [\"bs\", \"hr\", \"sr\"],\n BW: [\"en\", \"tn\"],\n BR: [\"pt\"],\n BN: [\"ms\"],\n BG: [\"bg\"],\n BF: [\"fr\"],\n BI: [\"rn\", \"fr\"],\n CV: [\"pt\"],\n KH: [\"km\"],\n CM: [\"fr\", \"en\"],\n CA: [\"en\", \"fr\"],\n CF: [\"fr\", \"sg\"],\n TD: [\"fr\", \"ar\"],\n CL: [\"es\"],\n CN: [\"zh\"],\n CO: [\"es\"],\n KM: [\"ar\", \"fr\"],\n CG: [\"fr\"],\n CD: [\"fr\"],\n CR: [\"es\"],\n CI: [\"fr\"],\n HR: [\"hr\"],\n CU: [\"es\"],\n CY: [\"el\", \"tr\"],\n CZ: [\"cs\"],\n DK: [\"da\"],\n DJ: [\"fr\", \"ar\"],\n DM: [\"en\"],\n DO: [\"es\"],\n EC: [\"es\"],\n EG: [\"ar\"],\n SV: [\"es\"],\n GQ: [\"es\", \"fr\", \"pt\"],\n ER: [\"ti\", \"ar\", \"en\"],\n EE: [\"et\"],\n SZ: [\"en\", \"ss\"],\n ET: [\"am\"],\n FJ: [\"en\", \"fj\"],\n FI: [\"fi\", \"sv\"],\n FR: [\"fr\"],\n GA: [\"fr\"],\n GM: [\"en\"],\n GE: [\"ka\"],\n DE: [\"de\"],\n GH: [\"en\"],\n GR: [\"el\"],\n GD: [\"en\"],\n GT: [\"es\"],\n GN: [\"fr\"],\n GW: [\"pt\"],\n GY: [\"en\"],\n HT: [\"ht\", \"fr\"],\n HN: [\"es\"],\n HU: [\"hu\"],\n IS: [\"is\"],\n IN: [\"hi\", \"en\"],\n ID: [\"id\"],\n IR: [\"fa\"],\n IQ: [\"ar\", \"ku\"],\n IE: [\"en\", \"ga\"],\n IL: [\"he\", \"ar\"],\n IT: [\"it\"],\n JM: [\"en\"],\n JP: [\"ja\"],\n JO: [\"ar\"],\n KZ: [\"kk\", \"ru\"],\n KE: [\"en\", \"sw\"],\n KI: [\"en\"],\n KP: [\"ko\"],\n KR: [\"ko\"],\n KW: [\"ar\"],\n KG: [\"ky\", \"ru\"],\n LA: [\"lo\"],\n LV: [\"lv\"],\n LB: [\"ar\", \"fr\"],\n LS: [\"en\", \"st\"],\n LR: [\"en\"],\n LY: [\"ar\"],\n LI: [\"de\"],\n LT: [\"lt\"],\n LU: [\"lb\", \"fr\", \"de\"],\n MG: [\"mg\", \"fr\"],\n MW: [\"en\", \"ny\"],\n MY: [\"ms\"],\n MV: [\"dv\"],\n ML: [\"fr\"],\n MT: [\"mt\", \"en\"],\n MH: [\"en\", \"mh\"],\n MR: [\"ar\"],\n MU: [\"en\"],\n MX: [\"es\"],\n MD: [\"ro\"],\n MC: [\"fr\"],\n MN: [\"mn\"],\n ME: [\"sr\"],\n MA: [\"ar\"],\n MZ: [\"pt\"],\n MM: [\"my\"],\n NA: [\"en\"],\n NR: [\"en\", \"na\"],\n NP: [\"ne\"],\n NL: [\"nl\"],\n NZ: [\"en\", \"mi\"],\n NI: [\"es\"],\n NE: [\"fr\"],\n NG: [\"en\"],\n MK: [\"mk\"],\n NO: [\"no\", \"nb\", \"nn\"],\n OM: [\"ar\"],\n PK: [\"ur\", \"en\"],\n PW: [\"en\"],\n PA: [\"es\"],\n PG: [\"en\"],\n PY: [\"es\", \"gn\"],\n PE: [\"es\", \"qu\"],\n PH: [\"tl\", \"en\"],\n PL: [\"pl\"],\n PT: [\"pt\"],\n QA: [\"ar\"],\n RO: [\"ro\"],\n RU: [\"ru\"],\n RW: [\"rw\", \"fr\", \"en\"],\n KN: [\"en\"],\n LC: [\"en\"],\n VC: [\"en\"],\n WS: [\"sm\", \"en\"],\n SM: [\"it\"],\n ST: [\"pt\"],\n SA: [\"ar\"],\n SN: [\"fr\"],\n RS: [\"sr\"],\n SC: [\"en\", \"fr\"],\n SL: [\"en\"],\n SG: [\"en\", \"ms\", \"zh\", \"ta\"],\n SK: [\"sk\"],\n SI: [\"sl\"],\n SB: [\"en\"],\n SO: [\"so\", \"ar\"],\n ZA: [\"en\", \"af\", \"zu\"],\n SS: [\"en\"],\n ES: [\"es\"],\n LK: [\"si\", \"ta\"],\n SD: [\"ar\", \"en\"],\n SR: [\"nl\"],\n SE: [\"sv\"],\n CH: [\"de\", \"fr\", \"it\", \"rm\"],\n SY: [\"ar\"],\n TW: [\"zh\"],\n TJ: [\"tg\"],\n TZ: [\"sw\", \"en\"],\n TH: [\"th\"],\n TL: [\"pt\"],\n TG: [\"fr\"],\n TO: [\"en\", \"to\"],\n TT: [\"en\"],\n TN: [\"ar\"],\n TR: [\"tr\"],\n TM: [\"tk\"],\n TV: [\"en\"],\n UG: [\"en\", \"sw\"],\n UA: [\"uk\"],\n AE: [\"ar\"],\n GB: [\"en\"],\n US: [\"en\"],\n UY: [\"es\"],\n UZ: [\"uz\"],\n VU: [\"en\", \"fr\", \"bi\"],\n VA: [\"it\", \"la\"],\n VE: [\"es\"],\n VN: [\"vi\"],\n YE: [\"ar\"],\n ZM: [\"en\"],\n ZW: [\"en\", \"sn\", \"nd\"],\n AS: [\"en\", \"sm\"],\n AW: [\"nl\"],\n BM: [\"en\"],\n CW: [\"nl\"],\n FO: [\"fo\", \"da\"],\n GI: [\"en\"],\n GL: [\"kl\", \"da\"],\n GG: [\"en\"],\n GU: [\"en\"],\n HK: [\"zh\", \"en\"],\n IM: [\"en\"],\n JE: [\"en\"],\n XK: [\"sq\", \"sr\"],\n MO: [\"zh\", \"pt\"],\n PR: [\"es\", \"en\"],\n} as const);\n\n/** Aliases for Country.tryParse — common alternative names not in the canonical list. */\nexport const COUNTRY_ALIASES: Readonly<Record<string, string>> = Object.freeze({\n USA: \"US\",\n UK: \"GB\",\n Holland: \"NL\",\n \"Czech Republic\": \"CZ\",\n \"Ivory Coast\": \"CI\",\n Burma: \"MM\",\n Swaziland: \"SZ\",\n Persia: \"IR\",\n \"Great Britain\": \"GB\",\n England: \"GB\",\n UAE: \"AE\",\n \"South Korea\": \"KR\",\n \"North Korea\": \"KP\",\n \"Republic of Ireland\": \"IE\",\n Suisse: \"CH\",\n Svizzera: \"CH\",\n Belgique: \"BE\",\n Noreg: \"NO\",\n Vitryssland: \"BY\",\n});\n\n/**\n * Country alpha-2 codes that own each shared phone calling code (`+1` is shared\n * by US, Canada, Caribbean countries; `+44` by UK, Guernsey, Isle of Man,\n * Jersey; `+7` by Russia and Kazakhstan). The first entry is the primary.\n */\nexport const PRIMARY_BY_CALLING_CODE: Readonly<Record<string, string>> = Object.freeze({\n \"1\": \"US\",\n \"44\": \"GB\",\n \"7\": \"RU\",\n});\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { PrimitivesDefaults } from \"../primitives-defaults.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\nimport { TextCandidateCategory } from \"../text-scanning/text-candidate-category.js\";\nimport { TextCandidate } from \"../text-scanning/text-candidate.js\";\nimport { TextMatchConfidence } from \"../text-scanning/text-match-confidence.js\";\nimport { Currency } from \"../finance/currency.js\";\nimport { Continent } from \"./continent.js\";\nimport { CountryCapital } from \"./country-capital.js\";\nimport { GeoCoordinate } from \"./geo-coordinate.js\";\nimport { Language } from \"./language.js\";\nimport { COUNTRY_ROWS, type CountryRow } from \"./country-data.js\";\nimport { COUNTRY_COORDINATES } from \"./country-coordinates.js\";\nimport { getCountryCapital } from \"./country-capitals.js\";\nimport {\n COUNTRY_ALIASES,\n COUNTRY_CURRENCIES,\n COUNTRY_LANGUAGES,\n EEA_COUNTRIES,\n EU_COUNTRIES,\n NORDIC_COUNTRIES,\n PRIMARY_BY_CALLING_CODE,\n SCHENGEN_COUNTRIES,\n SEPA_COUNTRIES,\n} from \"./country-metadata.js\";\n\nconst MAX_INPUT_LENGTH = 100;\n\n/** A neighboring country with its distance from a reference point (kilometers). */\nexport interface CountryDistance {\n readonly country: Country;\n readonly distanceKilometers: number;\n}\n\n/**\n * A country identified by its English name, Swedish name, local name (endonym),\n * or ISO 3166-1 codes. Each country exposes its phone calling code, ccTLD,\n * continent, European classifications (EU, EEA, Schengen, Nordics, SEPA), and\n * currency metadata. Parsing accepts English/Swedish/local names, alpha-2 and\n * alpha-3 codes, and common aliases (USA, UK, Holland, etc.).\n */\nexport class Country {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Country\",\n localizedName: \"Land\",\n emoji: \"\\u{1F30D}\",\n sources: Object.freeze([\n \"https://www.iso.org/iso-3166-country-codes.html\",\n \"https://en.wikipedia.org/wiki/ISO_3166-1\",\n \"https://www.itu.int/rec/T-REC-E.164/\",\n \"https://www.iana.org/domains/root/db\",\n \"https://www.wikidata.org/wiki/Property:P625\",\n \"https://www.wikidata.org/wiki/Property:P36\",\n \"https://www.wikidata.org/wiki/Property:P47\",\n ]),\n });\n\n readonly alpha2Code: string;\n readonly alpha3Code: string;\n readonly numericCode: number;\n readonly englishName: string;\n readonly localizedName: string;\n readonly nativeName: string;\n readonly callingCode: string;\n readonly topLevelDomain: string;\n readonly continent: Continent;\n readonly currencyCodes: readonly string[];\n readonly languageCodes: readonly string[];\n\n private constructor(row: CountryRow) {\n this.alpha2Code = row.alpha2;\n this.alpha3Code = row.alpha3;\n this.numericCode = row.numeric;\n this.englishName = row.en;\n this.localizedName = row.sv;\n this.nativeName = row.native;\n this.callingCode = row.callingCode;\n this.topLevelDomain = row.tld;\n this.continent = row.continent;\n this.currencyCodes = COUNTRY_CURRENCIES[row.alpha2] ?? [];\n this.languageCodes = COUNTRY_LANGUAGES[row.alpha2] ?? [];\n }\n\n /** The canonical value of this country: its ISO 3166-1 alpha-2 code. */\n get value(): string {\n return this.alpha2Code;\n }\n\n /** Display name in the current culture (Swedish or English). */\n get displayName(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n /** Culture-independent display form. Always the English name. */\n get formatted(): string {\n return this.englishName;\n }\n\n /** Geographic coordinate of the country (centroid, from Wikidata P625). */\n get coordinate(): GeoCoordinate {\n const c = COUNTRY_COORDINATES[this.alpha2Code];\n if (!c) throw new Error(`No coordinate for country ${this.alpha2Code}.`);\n return GeoCoordinate.create(c[0], c[1]);\n }\n\n /** Approximate latitude (WGS 84) of the country centroid. */\n get latitude(): number {\n return this.coordinate.latitude;\n }\n\n /** Approximate longitude (WGS 84) of the country centroid. */\n get longitude(): number {\n return this.coordinate.longitude;\n }\n\n /** Capital city, or `null` for entries without a capital (e.g. Antarctica). */\n get capital(): CountryCapital | null {\n return getCountryCapital(this.alpha2Code);\n }\n\n get isInEuropeanUnion(): boolean {\n return EU_COUNTRIES.has(this.alpha2Code);\n }\n get isInEea(): boolean {\n return EEA_COUNTRIES.has(this.alpha2Code);\n }\n get isInSchengen(): boolean {\n return SCHENGEN_COUNTRIES.has(this.alpha2Code);\n }\n get isInNordics(): boolean {\n return NORDIC_COUNTRIES.has(this.alpha2Code);\n }\n get isInSepa(): boolean {\n return SEPA_COUNTRIES.has(this.alpha2Code);\n }\n\n /** True when the euro is among the country's legal tenders. */\n get usesEuro(): boolean {\n return this.currencyCodes.includes(\"EUR\");\n }\n\n /** Primary ISO 4217 currency code, or `null` when unknown. */\n get currencyCode(): string | null {\n return this.currencyCodes[0] ?? null;\n }\n\n /**\n * Primary legal-tender currency, or `null` when unknown. Countries with\n * several legal tenders (Cuba, Panama, Namibia) return the first; use\n * {@link currencies} for the full list.\n */\n get currency(): Currency | null {\n const code = this.currencyCode;\n return code == null ? null : Currency.tryParse(code);\n }\n\n /** All recognized currencies for this country, in priority order. */\n get currencies(): readonly Currency[] {\n return Object.freeze(\n this.currencyCodes\n .map((code) => Currency.tryParse(code))\n .filter((c): c is Currency => c !== null),\n );\n }\n\n /**\n * Primary official language, or `null` when unknown. Countries with several\n * official languages (Belgium, Switzerland) return the most widely spoken;\n * use {@link officialLanguages} for the full list.\n */\n get primaryLanguage(): Language | null {\n const code = this.languageCodes[0];\n return code == null ? null : Language.tryParse(code);\n }\n\n /** All official languages of the country, in priority order. */\n get officialLanguages(): readonly Language[] {\n return Object.freeze(\n this.languageCodes\n .map((code) => Language.tryParse(code))\n .filter((l): l is Language => l !== null),\n );\n }\n\n static tryParse(input: string | null | undefined): Country | null {\n if (input == null) return null;\n const sanitized = sanitizeInput(input).trim();\n if (sanitized.length === 0 || sanitized.length > MAX_INPUT_LENGTH) return null;\n\n const direct = lookupCi(sanitized);\n if (direct) return direct;\n\n if (sanitized.length > 4 && sanitized.slice(0, 4).toLowerCase() === \"the \") {\n const without = sanitized.slice(4);\n const stripped = lookupCi(without);\n if (stripped) return stripped;\n }\n return null;\n }\n\n static parse(input: string): Country {\n const r = Country.tryParse(input);\n if (r === null) throw new Error(\"Unknown country.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return Country.tryParse(input) !== null;\n }\n\n static format(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = Country.tryParse(input);\n if (r) return r.displayName;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n static normalize(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = Country.tryParse(input);\n if (r) return r.alpha2Code;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null) {\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n return null;\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && Country.normalize(input) === input;\n }\n\n /** Look up a country by its phone calling code. Primary owner wins for shared codes. */\n static tryFindByCallingCode(callingCode: string | null | undefined): Country | null {\n if (callingCode == null) return null;\n const trimmed = callingCode.trim();\n if (trimmed.length === 0) return null;\n return BY_CALLING_CODE.get(trimmed) ?? null;\n }\n\n /** All known countries. */\n static get all(): readonly Country[] {\n return ALL_COUNTRIES;\n }\n\n /**\n * Returns countries within `radiusKm` of this country, ordered by distance.\n */\n findNeighbors(radiusKm: number): readonly CountryDistance[] {\n if (!Number.isFinite(radiusKm) || radiusKm <= 0) {\n throw new RangeError(\"radiusKm must be a positive finite number.\");\n }\n return Country.findNeighbors(this.coordinate, radiusKm).filter((d) => d.country !== this);\n }\n\n /** Returns countries within `radiusKm` of `coordinate`, ordered by distance. */\n static findNeighbors(coordinate: GeoCoordinate, radiusKm: number): readonly CountryDistance[] {\n if (!Number.isFinite(radiusKm) || radiusKm <= 0) {\n throw new RangeError(\"radiusKm must be a positive finite number.\");\n }\n const out: CountryDistance[] = [];\n for (const c of ALL_COUNTRIES) {\n const dist = GeoCoordinate.distanceKilometers(coordinate, c.coordinate);\n if (dist <= radiusKm) out.push({ country: c, distanceKilometers: dist });\n }\n out.sort((a, b) => a.distanceKilometers - b.distanceKilometers);\n return out;\n }\n\n /**\n * Scans unstructured text for country names (4+ chars, word-bounded). Low confidence\n * because country names can occur in non-geographic contexts.\n */\n static findCandidatesInText(text: string): readonly TextCandidate<Country>[] {\n if (!text) return [];\n const out: TextCandidate<Country>[] = [];\n SCAN_PATTERN.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = SCAN_PATTERN.exec(text)) !== null) {\n const country = Country.tryParse(m[0]);\n if (!country) continue;\n out.push(\n new TextCandidate<Country>({\n startIndex: m.index,\n length: m[0].length,\n originalText: m[0],\n typeName: \"Country\",\n category: TextCandidateCategory.Geography,\n normalizedForm: country.toNormalizedString(),\n formattedForm: country.toString(),\n maskedForm: country.localizedName,\n confidence: TextMatchConfidence.Low,\n value: country,\n }),\n );\n }\n return out;\n }\n\n toNormalizedString(): string {\n return this.alpha2Code;\n }\n toString(): string {\n return this.displayName;\n }\n toDisplayString(): string {\n return this.displayName;\n }\n toEnglishString(): string {\n return this.englishName;\n }\n toNativeString(): string {\n return this.nativeName;\n }\n\n equals(other: Country | null | undefined): boolean {\n return other != null && this.alpha2Code === other.alpha2Code;\n }\n compareTo(other: Country | null | undefined): number {\n if (other == null) return 1;\n return this.alpha2Code < other.alpha2Code ? -1 : this.alpha2Code > other.alpha2Code ? 1 : 0;\n }\n\n static get Sweden(): Country {\n return getByAlpha2(\"SE\");\n }\n static get Norway(): Country {\n return getByAlpha2(\"NO\");\n }\n static get Finland(): Country {\n return getByAlpha2(\"FI\");\n }\n static get Denmark(): Country {\n return getByAlpha2(\"DK\");\n }\n static get Iceland(): Country {\n return getByAlpha2(\"IS\");\n }\n static get Germany(): Country {\n return getByAlpha2(\"DE\");\n }\n static get Poland(): Country {\n return getByAlpha2(\"PL\");\n }\n static get Estonia(): Country {\n return getByAlpha2(\"EE\");\n }\n static get Lithuania(): Country {\n return getByAlpha2(\"LT\");\n }\n static get Latvia(): Country {\n return getByAlpha2(\"LV\");\n }\n static get Romania(): Country {\n return getByAlpha2(\"RO\");\n }\n static get Bulgaria(): Country {\n return getByAlpha2(\"BG\");\n }\n static get CzechRepublic(): Country {\n return getByAlpha2(\"CZ\");\n }\n static get Spain(): Country {\n return getByAlpha2(\"ES\");\n }\n static get Netherlands(): Country {\n return getByAlpha2(\"NL\");\n }\n static get Greece(): Country {\n return getByAlpha2(\"GR\");\n }\n static get Italy(): Country {\n return getByAlpha2(\"IT\");\n }\n static get Slovenia(): Country {\n return getByAlpha2(\"SI\");\n }\n static get Croatia(): Country {\n return getByAlpha2(\"HR\");\n }\n static get Portugal(): Country {\n return getByAlpha2(\"PT\");\n }\n static get Hungary(): Country {\n return getByAlpha2(\"HU\");\n }\n static get France(): Country {\n return getByAlpha2(\"FR\");\n }\n static get Slovakia(): Country {\n return getByAlpha2(\"SK\");\n }\n static get Belgium(): Country {\n return getByAlpha2(\"BE\");\n }\n static get UnitedKingdom(): Country {\n return getByAlpha2(\"GB\");\n }\n static get Austria(): Country {\n return getByAlpha2(\"AT\");\n }\n static get Cyprus(): Country {\n return getByAlpha2(\"CY\");\n }\n static get Switzerland(): Country {\n return getByAlpha2(\"CH\");\n }\n static get Ireland(): Country {\n return getByAlpha2(\"IE\");\n }\n static get Luxembourg(): Country {\n return getByAlpha2(\"LU\");\n }\n static get Malta(): Country {\n return getByAlpha2(\"MT\");\n }\n static get Liechtenstein(): Country {\n return getByAlpha2(\"LI\");\n }\n\n /** @internal */\n static _fromRow(row: CountryRow): Country {\n return new Country(row);\n }\n}\n\nconst ALL_COUNTRIES: readonly Country[] = COUNTRY_ROWS.map((r) => Country._fromRow(r));\n\nconst BY_ALPHA2 = new Map<string, Country>();\nconst BY_NAME = new Map<string, Country>();\nconst BY_CALLING_CODE = new Map<string, Country>();\n\nfor (const c of ALL_COUNTRIES) {\n BY_ALPHA2.set(c.alpha2Code.toUpperCase(), c);\n BY_NAME.set(c.alpha2Code.toUpperCase(), c);\n BY_NAME.set(c.alpha3Code.toUpperCase(), c);\n BY_NAME.set(c.englishName.toLowerCase(), c);\n if (!BY_NAME.has(c.localizedName.toLowerCase())) BY_NAME.set(c.localizedName.toLowerCase(), c);\n if (\n c.nativeName.toLowerCase() !== c.englishName.toLowerCase() &&\n !BY_NAME.has(c.nativeName.toLowerCase())\n ) {\n BY_NAME.set(c.nativeName.toLowerCase(), c);\n }\n if (!BY_CALLING_CODE.has(c.callingCode)) BY_CALLING_CODE.set(c.callingCode, c);\n}\n\nfor (const [aliasOrCode, alpha2] of Object.entries(COUNTRY_ALIASES)) {\n const target = BY_ALPHA2.get(alpha2.toUpperCase());\n if (target) BY_NAME.set(aliasOrCode.toLowerCase(), target);\n}\n\nfor (const [code, alpha2] of Object.entries(PRIMARY_BY_CALLING_CODE)) {\n const target = BY_ALPHA2.get(alpha2.toUpperCase());\n if (target) BY_CALLING_CODE.set(code, target);\n}\n\nconst SCAN_PATTERN: RegExp = (() => {\n const names = [...BY_NAME.keys()]\n .filter((n) => n.length >= 4)\n .sort((a, b) => b.length - a.length)\n .map(escapeRegex);\n return new RegExp(`(?<![\\\\p{L}\\\\p{N}_])(?:${names.join(\"|\")})(?![\\\\p{L}\\\\p{N}_])`, \"giu\");\n})();\n\nfunction getByAlpha2(code: string): Country {\n const c = BY_ALPHA2.get(code.toUpperCase());\n if (!c) throw new Error(`Unknown country code ${code}.`);\n return c;\n}\n\nfunction lookupCi(input: string): Country | null {\n const upper = input.toUpperCase();\n const a2 = BY_ALPHA2.get(upper);\n if (a2) return a2;\n const lower = input.toLowerCase();\n return BY_NAME.get(lower) ?? BY_NAME.get(upper) ?? null;\n}\n\nfunction escapeRegex(s: string): string {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { PrimitivesDefaults } from \"../primitives-defaults.js\";\nimport { keepDigits, sanitizeInput } from \"../internal/input-sanitization.js\";\nimport { TextCandidateCategory } from \"../text-scanning/text-candidate-category.js\";\nimport { TextCandidate } from \"../text-scanning/text-candidate.js\";\nimport { TextMatchConfidence } from \"../text-scanning/text-match-confidence.js\";\nimport { GeoCoordinate } from \"./geo-coordinate.js\";\n\nconst MAX_INPUT_LENGTH = 100;\n\n/** A Swedish county (`län`), keyed by SCB's 2-digit county code. */\nexport class SwedishCounty {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"County\",\n localizedName: \"Län\",\n emoji: \"\\u{1F3DB}\\uFE0F\",\n sources: Object.freeze([\n \"https://www.scb.se/en/finding-statistics/regional-statistics/regional-divisions/counties-and-municipalities/\",\n \"https://www.scb.se/en/finding-statistics/regional-statistics/regional-divisions/counties-and-municipalities/counties-and-municipalities-in-numerical-order/\",\n ]),\n });\n\n readonly code: string;\n readonly localizedName: string;\n readonly englishName: string;\n readonly coordinate: GeoCoordinate;\n\n private constructor(code: string, localized: string, english: string, coord: GeoCoordinate) {\n this.code = code;\n this.localizedName = localized;\n this.englishName = english;\n this.coordinate = coord;\n }\n\n get latitude(): number {\n return this.coordinate.latitude;\n }\n get longitude(): number {\n return this.coordinate.longitude;\n }\n\n get displayName(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n static tryParse(input: string | null | undefined): SwedishCounty | null {\n if (input == null) return null;\n const trimmed = sanitizeInput(input).trim();\n if (trimmed.length === 0 || trimmed.length > MAX_INPUT_LENGTH) return null;\n\n const digits = keepDigits(trimmed);\n if (digits.length === 2 && BY_CODE.has(digits)) return BY_CODE.get(digits)!;\n\n return BY_NAME.get(trimmed.toLowerCase()) ?? null;\n }\n\n static parse(input: string): SwedishCounty {\n const r = SwedishCounty.tryParse(input);\n if (r === null) throw new Error(\"Invalid Swedish county.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return SwedishCounty.tryParse(input) !== null;\n }\n\n static format(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = SwedishCounty.tryParse(input);\n if (r) return r.localizedName;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n static normalize(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = SwedishCounty.tryParse(input);\n if (r) return r.code;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null) {\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n return null;\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && SwedishCounty.normalize(input) === input;\n }\n\n /** All 21 Swedish counties. */\n static get all(): readonly SwedishCounty[] {\n return ALL_COUNTIES;\n }\n\n static findCandidatesInText(text: string): readonly TextCandidate<SwedishCounty>[] {\n if (!text) return [];\n const out: TextCandidate<SwedishCounty>[] = [];\n SCAN_PATTERN.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = SCAN_PATTERN.exec(text)) !== null) {\n const county = SwedishCounty.tryParse(m[0]);\n if (!county) continue;\n out.push(\n new TextCandidate<SwedishCounty>({\n startIndex: m.index,\n length: m[0].length,\n originalText: m[0],\n typeName: \"SwedishCounty\",\n category: TextCandidateCategory.Geography,\n normalizedForm: county.toNormalizedString(),\n formattedForm: county.toString(),\n maskedForm: county.localizedName,\n confidence: TextMatchConfidence.Low,\n value: county,\n }),\n );\n }\n return out;\n }\n\n /** Distance in kilometers between two counties (by county seat). */\n static distanceKilometers(a: SwedishCounty, b: SwedishCounty): number {\n return GeoCoordinate.distanceKilometers(a.coordinate, b.coordinate);\n }\n\n distanceKilometersTo(other: SwedishCounty | GeoCoordinate): number {\n const target = other instanceof SwedishCounty ? other.coordinate : other;\n return GeoCoordinate.distanceKilometers(this.coordinate, target);\n }\n\n toNormalizedString(): string {\n return this.code;\n }\n toString(): string {\n return this.displayName;\n }\n toDisplayString(): string {\n return this.displayName;\n }\n toEnglishString(): string {\n return this.englishName;\n }\n toLocalString(): string {\n return this.localizedName;\n }\n\n equals(other: SwedishCounty | null | undefined): boolean {\n return other != null && this.code === other.code;\n }\n compareTo(other: SwedishCounty | null | undefined): number {\n if (other == null) return 1;\n return this.code < other.code ? -1 : this.code > other.code ? 1 : 0;\n }\n\n /** @internal */\n static _new(code: string, sv: string, en: string, c: GeoCoordinate): SwedishCounty {\n return new SwedishCounty(code, sv, en, c);\n }\n}\n\ninterface CountyDef {\n readonly code: string;\n readonly sv: string;\n readonly en: string;\n readonly lat: number;\n readonly lon: number;\n}\n\nconst COUNTY_DEFS: readonly CountyDef[] = [\n { code: \"01\", sv: \"Stockholms län\", en: \"Stockholm County\", lat: 59.3275, lon: 18.054719 },\n { code: \"03\", sv: \"Uppsala län\", en: \"Uppsala County\", lat: 59.866667, lon: 17.633333 },\n {\n code: \"04\",\n sv: \"Södermanlands län\",\n en: \"Södermanland County\",\n lat: 58.752778,\n lon: 17.008611,\n },\n { code: \"05\", sv: \"Östergötlands län\", en: \"Östergötland County\", lat: 58.4, lon: 15.616667 },\n { code: \"06\", sv: \"Jönköpings län\", en: \"Jönköping County\", lat: 57.783333, lon: 14.2 },\n { code: \"07\", sv: \"Kronobergs län\", en: \"Kronoberg County\", lat: 56.883333, lon: 14.8 },\n { code: \"08\", sv: \"Kalmar län\", en: \"Kalmar County\", lat: 56.666667, lon: 16.366667 },\n { code: \"09\", sv: \"Gotlands län\", en: \"Gotland County\", lat: 57.615278, lon: 18.280556 },\n { code: \"10\", sv: \"Blekinge län\", en: \"Blekinge County\", lat: 56.183333, lon: 15.65 },\n { code: \"12\", sv: \"Skåne län\", en: \"Skåne County\", lat: 55.565, lon: 13.018611 },\n { code: \"13\", sv: \"Hallands län\", en: \"Halland County\", lat: 56.666667, lon: 12.85 },\n {\n code: \"14\",\n sv: \"Västra Götalands län\",\n en: \"Västra Götaland County\",\n lat: 57.7,\n lon: 11.933333,\n },\n { code: \"17\", sv: \"Värmlands län\", en: \"Värmland County\", lat: 59.383333, lon: 13.533333 },\n { code: \"18\", sv: \"Örebro län\", en: \"Örebro County\", lat: 59.273889, lon: 15.213333 },\n { code: \"19\", sv: \"Västmanlands län\", en: \"Västmanland County\", lat: 59.616667, lon: 16.533333 },\n { code: \"20\", sv: \"Dalarnas län\", en: \"Dalarna County\", lat: 60.6, lon: 15.633333 },\n { code: \"21\", sv: \"Gävleborgs län\", en: \"Gävleborg County\", lat: 60.666667, lon: 17.166667 },\n {\n code: \"22\",\n sv: \"Västernorrlands län\",\n en: \"Västernorrland County\",\n lat: 62.633333,\n lon: 17.933333,\n },\n { code: \"23\", sv: \"Jämtlands län\", en: \"Jämtland County\", lat: 63.183333, lon: 14.666667 },\n { code: \"24\", sv: \"Västerbottens län\", en: \"Västerbotten County\", lat: 63.833333, lon: 20.25 },\n { code: \"25\", sv: \"Norrbottens län\", en: \"Norrbotten County\", lat: 65.584444, lon: 22.153889 },\n];\n\nconst ALL_COUNTIES: readonly SwedishCounty[] = COUNTY_DEFS.map((d) =>\n SwedishCounty._new(d.code, d.sv, d.en, GeoCoordinate.create(d.lat, d.lon)),\n);\n\nconst BY_CODE = new Map<string, SwedishCounty>();\nconst BY_NAME = new Map<string, SwedishCounty>();\n\nfor (const c of ALL_COUNTIES) {\n BY_CODE.set(c.code, c);\n BY_NAME.set(c.localizedName.toLowerCase(), c);\n BY_NAME.set(c.englishName.toLowerCase(), c);\n\n const sv = c.localizedName;\n if (sv.endsWith(\" län\")) {\n const baseSv = sv.slice(0, -4);\n if (!BY_NAME.has(baseSv.toLowerCase())) BY_NAME.set(baseSv.toLowerCase(), c);\n addGenitive(baseSv, c);\n }\n const en = c.englishName;\n if (en.endsWith(\" County\")) {\n const baseEn = en.slice(0, -7);\n if (!BY_NAME.has(baseEn.toLowerCase())) BY_NAME.set(baseEn.toLowerCase(), c);\n addGenitive(baseEn, c);\n }\n}\n\nfunction addGenitive(name: string, county: SwedishCounty): void {\n if (name.endsWith(\"s\") || name.endsWith(\"S\")) return;\n const key = (name + \"s\").toLowerCase();\n if (!BY_NAME.has(key)) BY_NAME.set(key, county);\n}\n\nconst SCAN_PATTERN: RegExp = (() => {\n const names = [...BY_NAME.keys()]\n .sort((a, b) => b.length - a.length)\n .map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"));\n return new RegExp(`(?<![\\\\p{L}\\\\p{N}_])(?:${names.join(\"|\")})(?![\\\\p{L}\\\\p{N}_])`, \"giu\");\n})();\n","// Swedish municipality (kommun) data — code, name, county code, type, etc.\n// Originally generated from the .NET source; now maintained by hand in this repo.\n\nexport interface MunicipalityRow {\n readonly code: string;\n readonly name: string;\n readonly englishName?: string;\n readonly lat: number;\n readonly lon: number;\n}\n\nexport const MUNICIPALITY_ROWS: readonly MunicipalityRow[] = [\n { code: \"0114\", name: \"Upplands Väsby\", lat: 59.516667, lon: 17.9 },\n { code: \"0115\", name: \"Vallentuna\", lat: 59.583333, lon: 18.2 },\n { code: \"0117\", name: \"Österåker\", lat: 59.5, lon: 18.45 },\n { code: \"0120\", name: \"Värmdö\", lat: 59.316667, lon: 18.566667 },\n { code: \"0123\", name: \"Järfälla\", lat: 59.433333, lon: 17.833333 },\n { code: \"0125\", name: \"Ekerö\", lat: 59.35, lon: 17.683333 },\n { code: \"0126\", name: \"Huddinge\", lat: 59.233333, lon: 17.983333 },\n { code: \"0127\", name: \"Botkyrka\", lat: 59.2, lon: 17.833333 },\n { code: \"0128\", name: \"Salem\", lat: 59.233333, lon: 17.683333 },\n { code: \"0136\", name: \"Haninge\", lat: 59.166667, lon: 18.133333 },\n { code: \"0138\", name: \"Tyresö\", lat: 59.233333, lon: 18.216667 },\n { code: \"0139\", name: \"Upplands-Bro\", lat: 59.533333, lon: 17.666667 },\n { code: \"0140\", name: \"Nykvarn\", lat: 59.183333, lon: 17.4 },\n { code: \"0160\", name: \"Täby\", lat: 59.4439, lon: 18.06872 },\n { code: \"0162\", name: \"Danderyd\", lat: 59.4, lon: 18.083333 },\n { code: \"0163\", name: \"Sollentuna\", lat: 59.45, lon: 17.916667 },\n { code: \"0180\", name: \"Stockholm\", lat: 59.3275, lon: 18.054719 },\n { code: \"0181\", name: \"Södertälje\", lat: 59.1, lon: 17.516667 },\n { code: \"0182\", name: \"Nacka\", lat: 59.316667, lon: 18.166667 },\n { code: \"0183\", name: \"Sundbyberg\", lat: 59.363333, lon: 17.965556 },\n { code: \"0184\", name: \"Solna\", lat: 59.366667, lon: 18.016667 },\n { code: \"0186\", name: \"Lidingö\", lat: 59.36303, lon: 18.15096 },\n { code: \"0187\", name: \"Vaxholm\", lat: 59.4, lon: 18.283333 },\n { code: \"0188\", name: \"Norrtälje\", lat: 59.766667, lon: 18.7 },\n { code: \"0191\", name: \"Sigtuna\", lat: 59.633333, lon: 17.883333 },\n { code: \"0192\", name: \"Nynäshamn\", lat: 58.933333, lon: 17.883333 },\n { code: \"0305\", name: \"Håbo\", lat: 59.567778, lon: 17.529722 },\n { code: \"0319\", name: \"Älvkarleby\", lat: 60.624444, lon: 17.416111 },\n { code: \"0330\", name: \"Knivsta\", lat: 59.716667, lon: 17.8 },\n { code: \"0331\", name: \"Heby\", lat: 59.933333, lon: 16.883333 },\n { code: \"0360\", name: \"Tierp\", lat: 60.344444, lon: 17.513056 },\n { code: \"0380\", name: \"Uppsala\", lat: 59.866667, lon: 17.633333 },\n { code: \"0381\", name: \"Enköping\", lat: 59.635556, lon: 17.076389 },\n { code: \"0382\", name: \"Östhammar\", lat: 60.258889, lon: 18.373611 },\n { code: \"0428\", name: \"Vingåker\", lat: 59.033333, lon: 15.866667 },\n { code: \"0461\", name: \"Gnesta\", lat: 59.0475, lon: 17.312222 },\n { code: \"0480\", name: \"Nyköping\", lat: 58.752778, lon: 17.008611 },\n { code: \"0481\", name: \"Oxelösund\", lat: 58.666667, lon: 17.116667 },\n { code: \"0482\", name: \"Flen\", lat: 59.058333, lon: 16.588889 },\n { code: \"0483\", name: \"Katrineholm\", lat: 58.995556, lon: 16.206111 },\n { code: \"0484\", name: \"Eskilstuna\", lat: 59.370556, lon: 16.512778 },\n { code: \"0486\", name: \"Strängnäs\", lat: 59.376944, lon: 17.035278 },\n { code: \"0488\", name: \"Trosa\", lat: 58.893889, lon: 17.552222 },\n { code: \"0509\", name: \"Ödeshög\", lat: 58.230833, lon: 14.652778 },\n { code: \"0512\", name: \"Ydre\", lat: 57.827222, lon: 15.273889 },\n { code: \"0513\", name: \"Kinda\", lat: 57.989167, lon: 15.627222 },\n { code: \"0560\", name: \"Boxholm\", lat: 58.196389, lon: 15.051944 },\n { code: \"0561\", name: \"Åtvidaberg\", lat: 58.201667, lon: 15.998056 },\n { code: \"0562\", name: \"Finspång\", lat: 58.709167, lon: 15.786944 },\n { code: \"0563\", name: \"Valdemarsvik\", lat: 58.205556, lon: 16.601944 },\n { code: \"0580\", name: \"Linköping\", lat: 58.4, lon: 15.616667 },\n { code: \"0581\", name: \"Norrköping\", lat: 58.591944, lon: 16.185556 },\n { code: \"0582\", name: \"Söderköping\", lat: 58.480278, lon: 16.3225 },\n { code: \"0583\", name: \"Motala\", lat: 58.536389, lon: 15.0375 },\n { code: \"0584\", name: \"Vadstena\", lat: 58.448333, lon: 14.889722 },\n { code: \"0586\", name: \"Mjölby\", lat: 58.325, lon: 15.130556 },\n { code: \"0604\", name: \"Aneby\", lat: 57.833333, lon: 14.8 },\n { code: \"0617\", name: \"Gnosjö\", lat: 57.366667, lon: 13.733333 },\n { code: \"0642\", name: \"Mullsjö\", lat: 57.916667, lon: 13.883333 },\n { code: \"0643\", name: \"Habo\", lat: 57.916667, lon: 14.066667 },\n { code: \"0662\", name: \"Gislaved\", lat: 57.3, lon: 13.533333 },\n { code: \"0665\", name: \"Vaggeryd\", lat: 57.5, lon: 14.116667 },\n { code: \"0680\", name: \"Jönköping\", lat: 57.783333, lon: 14.2 },\n { code: \"0682\", name: \"Nässjö\", lat: 57.65, lon: 14.683333 },\n { code: \"0683\", name: \"Värnamo\", lat: 57.183333, lon: 14.033333 },\n { code: \"0684\", name: \"Sävsjö\", lat: 57.4, lon: 14.666667 },\n { code: \"0685\", name: \"Vetlanda\", lat: 57.433333, lon: 15.066667 },\n { code: \"0686\", name: \"Eksjö\", lat: 57.666667, lon: 14.966667 },\n { code: \"0687\", name: \"Tranås\", lat: 58.033333, lon: 14.966667 },\n { code: \"0760\", name: \"Uppvidinge\", lat: 57.166667, lon: 15.333333 },\n { code: \"0761\", name: \"Lessebo\", lat: 56.75, lon: 15.266667 },\n { code: \"0763\", name: \"Tingsryd\", lat: 56.533333, lon: 14.983333 },\n { code: \"0764\", name: \"Alvesta\", lat: 56.9, lon: 14.55 },\n { code: \"0765\", name: \"Älmhult\", lat: 56.55, lon: 14.133333 },\n { code: \"0767\", name: \"Markaryd\", lat: 56.466667, lon: 13.6 },\n { code: \"0780\", name: \"Växjö\", lat: 56.883333, lon: 14.8 },\n { code: \"0781\", name: \"Ljungby\", lat: 56.833333, lon: 13.933333 },\n { code: \"0821\", name: \"Högsby\", lat: 57.166667, lon: 16.033333 },\n { code: \"0834\", name: \"Torsås\", lat: 56.4, lon: 16 },\n { code: \"0840\", name: \"Mörbylånga\", lat: 56.516667, lon: 16.383333 },\n { code: \"0860\", name: \"Hultsfred\", lat: 57.483333, lon: 15.833333 },\n { code: \"0861\", name: \"Mönsterås\", lat: 57.033333, lon: 16.45 },\n { code: \"0862\", name: \"Emmaboda\", lat: 56.616667, lon: 15.55 },\n { code: \"0880\", name: \"Kalmar\", lat: 56.666667, lon: 16.366667 },\n { code: \"0881\", name: \"Nybro\", lat: 56.733333, lon: 15.9 },\n { code: \"0882\", name: \"Oskarshamn\", lat: 57.266667, lon: 16.45 },\n { code: \"0883\", name: \"Västervik\", lat: 57.75, lon: 16.633333 },\n { code: \"0884\", name: \"Vimmerby\", lat: 57.666667, lon: 15.85 },\n { code: \"0885\", name: \"Borgholm\", lat: 56.878056, lon: 16.661667 },\n { code: \"0980\", name: \"Gotland\", lat: 57.615278, lon: 18.280556 },\n { code: \"1060\", name: \"Olofström\", lat: 56.266667, lon: 14.533333 },\n { code: \"1080\", name: \"Karlskrona\", lat: 56.183333, lon: 15.65 },\n { code: \"1081\", name: \"Ronneby\", lat: 56.2, lon: 15.283333 },\n { code: \"1082\", name: \"Karlshamn\", lat: 56.166667, lon: 14.85 },\n { code: \"1083\", name: \"Sölvesborg\", lat: 56.05, lon: 14.583333 },\n { code: \"1214\", name: \"Svalöv\", lat: 55.916667, lon: 13.116667 },\n { code: \"1230\", name: \"Staffanstorp\", lat: 55.633333, lon: 13.2 },\n { code: \"1231\", name: \"Burlöv\", lat: 55.633333, lon: 13.066667 },\n { code: \"1233\", name: \"Vellinge\", lat: 55.466667, lon: 13.016667 },\n { code: \"1256\", name: \"Östra Göinge\", lat: 56.25, lon: 14.066667 },\n { code: \"1257\", name: \"Örkelljunga\", lat: 56.283333, lon: 13.283333 },\n { code: \"1260\", name: \"Bjuv\", lat: 56.083333, lon: 12.916667 },\n { code: \"1261\", name: \"Kävlinge\", lat: 55.8, lon: 13.116667 },\n { code: \"1262\", name: \"Lomma\", lat: 55.666667, lon: 13.083333 },\n { code: \"1263\", name: \"Svedala\", lat: 55.5, lon: 13.233333 },\n { code: \"1264\", name: \"Skurup\", lat: 55.483333, lon: 13.5 },\n { code: \"1265\", name: \"Sjöbo\", lat: 55.633333, lon: 13.7 },\n { code: \"1266\", name: \"Hörby\", lat: 55.85, lon: 13.65 },\n { code: \"1267\", name: \"Höör\", lat: 55.933333, lon: 13.55 },\n { code: \"1270\", name: \"Tomelilla\", lat: 55.55, lon: 13.95 },\n { code: \"1272\", name: \"Bromölla\", lat: 56.05, lon: 14.466667 },\n { code: \"1273\", name: \"Osby\", lat: 56.366667, lon: 13.983333 },\n { code: \"1275\", name: \"Perstorp\", lat: 56.133333, lon: 13.383333 },\n { code: \"1276\", name: \"Klippan\", lat: 56.133333, lon: 13.133333 },\n { code: \"1277\", name: \"Åstorp\", lat: 56.133333, lon: 12.95 },\n { code: \"1278\", name: \"Båstad\", lat: 56.416667, lon: 12.866667 },\n { code: \"1280\", name: \"Malmö\", lat: 55.565, lon: 13.018611 },\n { code: \"1281\", name: \"Lund\", lat: 55.7, lon: 13.2 },\n { code: \"1282\", name: \"Landskrona\", lat: 55.866667, lon: 12.85 },\n { code: \"1283\", name: \"Helsingborg\", lat: 56.05, lon: 12.716667 },\n { code: \"1284\", name: \"Höganäs\", lat: 56.2, lon: 12.566667 },\n { code: \"1285\", name: \"Eslöv\", lat: 55.833333, lon: 13.3 },\n { code: \"1286\", name: \"Ystad\", lat: 55.416667, lon: 13.833333 },\n { code: \"1287\", name: \"Trelleborg\", lat: 55.366667, lon: 13.166667 },\n { code: \"1290\", name: \"Kristianstad\", lat: 56.033333, lon: 14.15 },\n { code: \"1291\", name: \"Simrishamn\", lat: 55.55, lon: 14.35 },\n { code: \"1292\", name: \"Ängelholm\", lat: 56.25, lon: 12.85 },\n { code: \"1293\", name: \"Hässleholm\", lat: 56.166667, lon: 13.766667 },\n { code: \"1315\", name: \"Hylte\", lat: 57, lon: 13.25 },\n { code: \"1380\", name: \"Halmstad\", lat: 56.666667, lon: 12.85 },\n { code: \"1381\", name: \"Laholm\", lat: 56.516667, lon: 13.033333 },\n { code: \"1382\", name: \"Falkenberg\", lat: 56.916667, lon: 12.5 },\n { code: \"1383\", name: \"Varberg\", lat: 57.1, lon: 12.25 },\n { code: \"1384\", name: \"Kungsbacka\", lat: 57.483333, lon: 12.066667 },\n { code: \"1401\", name: \"Härryda\", lat: 57.666667, lon: 12.116667 },\n { code: \"1402\", name: \"Partille\", lat: 57.733333, lon: 12.1 },\n { code: \"1407\", name: \"Öckerö\", lat: 57.711111, lon: 11.647222 },\n { code: \"1415\", name: \"Stenungsund\", lat: 58.083333, lon: 11.816667 },\n { code: \"1419\", name: \"Tjörn\", lat: 58, lon: 11.55 },\n { code: \"1421\", name: \"Orust\", lat: 58.233333, lon: 11.683333 },\n { code: \"1427\", name: \"Sotenäs\", lat: 58.366667, lon: 11.25 },\n { code: \"1430\", name: \"Munkedal\", lat: 58.483333, lon: 11.683333 },\n { code: \"1435\", name: \"Tanum\", lat: 58.716667, lon: 11.316667 },\n { code: \"1438\", name: \"Dals-Ed\", lat: 58.916667, lon: 11.916667 },\n { code: \"1439\", name: \"Färgelanda\", lat: 58.566667, lon: 11.983333 },\n { code: \"1440\", name: \"Ale\", lat: 57.925, lon: 12.086944 },\n { code: \"1441\", name: \"Lerum\", lat: 57.766667, lon: 12.3 },\n { code: \"1442\", name: \"Vårgårda\", lat: 58.033333, lon: 12.8 },\n { code: \"1443\", name: \"Bollebygd\", lat: 57.666667, lon: 12.566667 },\n { code: \"1444\", name: \"Grästorp\", lat: 58.333333, lon: 12.666667 },\n { code: \"1445\", name: \"Essunga\", lat: 58.183333, lon: 12.716667 },\n { code: \"1446\", name: \"Karlsborg\", lat: 58.533333, lon: 14.516667 },\n { code: \"1447\", name: \"Gullspång\", lat: 58.983333, lon: 14.116667 },\n { code: \"1452\", name: \"Tranemo\", lat: 57.483333, lon: 13.35 },\n { code: \"1460\", name: \"Bengtsfors\", lat: 59.033333, lon: 12.216667 },\n { code: \"1461\", name: \"Mellerud\", lat: 58.7, lon: 12.466667 },\n { code: \"1462\", name: \"Lilla Edet\", lat: 58.133333, lon: 12.133333 },\n { code: \"1463\", name: \"Mark\", lat: 57.516667, lon: 12.683333 },\n { code: \"1465\", name: \"Svenljunga\", lat: 57.5, lon: 13.116667 },\n { code: \"1466\", name: \"Herrljunga\", lat: 58.083333, lon: 13.033333 },\n { code: \"1470\", name: \"Vara\", lat: 58.266667, lon: 12.95 },\n { code: \"1471\", name: \"Götene\", lat: 58.533333, lon: 13.483333 },\n { code: \"1472\", name: \"Tibro\", lat: 58.416667, lon: 14.166667 },\n { code: \"1473\", name: \"Töreboda\", lat: 58.716667, lon: 14.133333 },\n { code: \"1480\", name: \"Göteborg\", englishName: \"Gothenburg\", lat: 57.7, lon: 11.933333 },\n { code: \"1481\", name: \"Mölndal\", lat: 57.654167, lon: 12.019167 },\n { code: \"1482\", name: \"Kungälv\", lat: 57.866667, lon: 11.966667 },\n { code: \"1484\", name: \"Lysekil\", lat: 58.283333, lon: 11.433333 },\n { code: \"1485\", name: \"Uddevalla\", lat: 58.35, lon: 11.916667 },\n { code: \"1486\", name: \"Strömstad\", lat: 58.933333, lon: 11.166667 },\n { code: \"1487\", name: \"Vänersborg\", lat: 58.383333, lon: 12.316667 },\n { code: \"1488\", name: \"Trollhättan\", lat: 58.283333, lon: 12.283333 },\n { code: \"1489\", name: \"Alingsås\", lat: 57.933333, lon: 12.533333 },\n { code: \"1490\", name: \"Borås\", lat: 57.716667, lon: 12.933333 },\n { code: \"1491\", name: \"Ulricehamn\", lat: 57.791667, lon: 13.412778 },\n { code: \"1492\", name: \"Åmål\", lat: 59.05, lon: 12.7 },\n { code: \"1493\", name: \"Mariestad\", lat: 58.7, lon: 13.816667 },\n { code: \"1494\", name: \"Lidköping\", lat: 58.5, lon: 13.183333 },\n { code: \"1495\", name: \"Skara\", lat: 58.383333, lon: 13.433333 },\n { code: \"1496\", name: \"Skövde\", lat: 58.383333, lon: 13.85 },\n { code: \"1497\", name: \"Hjo\", lat: 58.3, lon: 14.283333 },\n { code: \"1498\", name: \"Tidaholm\", lat: 58.183333, lon: 13.95 },\n { code: \"1499\", name: \"Falköping\", lat: 58.166667, lon: 13.55 },\n { code: \"1715\", name: \"Kil\", lat: 59.5, lon: 13.316389 },\n { code: \"1730\", name: \"Eda\", lat: 59.883333, lon: 12.283333 },\n { code: \"1737\", name: \"Torsby\", lat: 60.133333, lon: 13 },\n { code: \"1760\", name: \"Storfors\", lat: 59.533333, lon: 14.266667 },\n { code: \"1761\", name: \"Hammarö\", lat: 59.333333, lon: 13.433333 },\n { code: \"1762\", name: \"Munkfors\", lat: 59.833333, lon: 13.533333 },\n { code: \"1763\", name: \"Forshaga\", lat: 59.533333, lon: 13.466667 },\n { code: \"1764\", name: \"Grums\", lat: 59.351667, lon: 13.111389 },\n { code: \"1765\", name: \"Årjäng\", lat: 59.383333, lon: 12.133333 },\n { code: \"1766\", name: \"Sunne\", lat: 59.833333, lon: 13.133333 },\n { code: \"1780\", name: \"Karlstad\", lat: 59.383333, lon: 13.533333 },\n { code: \"1781\", name: \"Kristinehamn\", lat: 59.3, lon: 14.116667 },\n { code: \"1782\", name: \"Filipstad\", lat: 59.716667, lon: 14.166667 },\n { code: \"1783\", name: \"Hagfors\", lat: 60.033333, lon: 13.65 },\n { code: \"1784\", name: \"Arvika\", lat: 59.65, lon: 12.583333 },\n { code: \"1785\", name: \"Säffle\", lat: 59.133333, lon: 12.933333 },\n { code: \"1814\", name: \"Lekeberg\", lat: 59.166667, lon: 14.866667 },\n { code: \"1860\", name: \"Laxå\", lat: 58.988611, lon: 14.6175 },\n { code: \"1861\", name: \"Hallsberg\", lat: 59.066667, lon: 15.116667 },\n { code: \"1862\", name: \"Degerfors\", lat: 59.233333, lon: 14.433333 },\n { code: \"1863\", name: \"Hällefors\", lat: 59.766667, lon: 14.516667 },\n { code: \"1864\", name: \"Ljusnarsberg\", lat: 59.866667, lon: 14.983333 },\n { code: \"1880\", name: \"Örebro\", lat: 59.273889, lon: 15.213333 },\n { code: \"1881\", name: \"Kumla\", lat: 59.116667, lon: 15.133333 },\n { code: \"1882\", name: \"Askersund\", lat: 58.883333, lon: 14.9 },\n { code: \"1883\", name: \"Karlskoga\", lat: 59.325, lon: 14.525 },\n { code: \"1884\", name: \"Nora\", lat: 59.516667, lon: 15.033333 },\n { code: \"1885\", name: \"Lindesberg\", lat: 59.583333, lon: 15.25 },\n { code: \"1904\", name: \"Skinnskatteberg\", lat: 59.833333, lon: 15.683333 },\n { code: \"1907\", name: \"Surahammar\", lat: 59.716667, lon: 16.216667 },\n { code: \"1960\", name: \"Kungsör\", lat: 59.416667, lon: 16.083333 },\n { code: \"1961\", name: \"Hallstahammar\", lat: 59.616667, lon: 16.25 },\n { code: \"1962\", name: \"Norberg\", lat: 60.083333, lon: 15.95 },\n { code: \"1980\", name: \"Västerås\", lat: 59.616667, lon: 16.533333 },\n { code: \"1981\", name: \"Sala\", lat: 59.920417, lon: 16.606111 },\n { code: \"1982\", name: \"Fagersta\", lat: 60, lon: 15.816667 },\n { code: \"1983\", name: \"Köping\", lat: 59.513056, lon: 15.998611 },\n { code: \"1984\", name: \"Arboga\", lat: 59.4, lon: 15.833333 },\n { code: \"2021\", name: \"Vansbro\", lat: 60.516667, lon: 14.216667 },\n { code: \"2023\", name: \"Malung-Sälen\", lat: 60.683333, lon: 13.733333 },\n { code: \"2026\", name: \"Gagnef\", lat: 60.55, lon: 15.133333 },\n { code: \"2029\", name: \"Leksand\", lat: 60.733333, lon: 15 },\n { code: \"2031\", name: \"Rättvik\", lat: 60.883333, lon: 15.133333 },\n { code: \"2034\", name: \"Orsa\", lat: 61.116667, lon: 14.616667 },\n { code: \"2039\", name: \"Älvdalen\", lat: 61.233333, lon: 14.033333 },\n { code: \"2061\", name: \"Smedjebacken\", lat: 60.133333, lon: 15.416667 },\n { code: \"2062\", name: \"Mora\", lat: 61.016667, lon: 14.533333 },\n { code: \"2080\", name: \"Falun\", lat: 60.6, lon: 15.633333 },\n { code: \"2081\", name: \"Borlänge\", lat: 60.482778, lon: 15.436389 },\n { code: \"2082\", name: \"Säter\", lat: 60.35, lon: 15.75 },\n { code: \"2083\", name: \"Hedemora\", lat: 60.283333, lon: 15.983333 },\n { code: \"2084\", name: \"Avesta\", lat: 60.145556, lon: 16.168333 },\n { code: \"2085\", name: \"Ludvika\", lat: 60.133333, lon: 15.183333 },\n { code: \"2101\", name: \"Ockelbo\", lat: 60.883333, lon: 16.716667 },\n { code: \"2104\", name: \"Hofors\", lat: 60.55, lon: 16.283333 },\n { code: \"2121\", name: \"Ovanåker\", lat: 61.383333, lon: 15.816667 },\n { code: \"2132\", name: \"Nordanstig\", lat: 61.983333, lon: 17.066667 },\n { code: \"2161\", name: \"Ljusdal\", lat: 61.833333, lon: 16.083333 },\n { code: \"2180\", name: \"Gävle\", lat: 60.666667, lon: 17.166667 },\n { code: \"2181\", name: \"Sandviken\", lat: 60.616667, lon: 16.783333 },\n { code: \"2182\", name: \"Söderhamn\", lat: 61.3, lon: 17.083333 },\n { code: \"2183\", name: \"Bollnäs\", lat: 61.35, lon: 16.4 },\n { code: \"2184\", name: \"Hudiksvall\", lat: 61.733333, lon: 17.116667 },\n { code: \"2260\", name: \"Ånge\", lat: 62.516667, lon: 15.616667 },\n { code: \"2262\", name: \"Timrå\", lat: 62.5, lon: 17.333333 },\n { code: \"2280\", name: \"Härnösand\", lat: 62.633333, lon: 17.933333 },\n { code: \"2281\", name: \"Sundsvall\", lat: 62.4, lon: 17.316667 },\n { code: \"2282\", name: \"Kramfors\", lat: 62.932167, lon: 17.777167 },\n { code: \"2283\", name: \"Sollefteå\", lat: 63.166667, lon: 17.266667 },\n { code: \"2284\", name: \"Örnsköldsvik\", lat: 63.283333, lon: 18.733333 },\n { code: \"2303\", name: \"Ragunda\", lat: 63.1, lon: 16.35 },\n { code: \"2305\", name: \"Bräcke\", lat: 62.75, lon: 15.416667 },\n { code: \"2309\", name: \"Krokom\", lat: 63.316667, lon: 14.5 },\n { code: \"2313\", name: \"Strömsund\", lat: 63.85, lon: 15.583333 },\n { code: \"2321\", name: \"Åre\", lat: 63.35, lon: 13.466667 },\n { code: \"2326\", name: \"Berg\", lat: 62.766667, lon: 14.45 },\n { code: \"2361\", name: \"Härjedalen\", lat: 62.033333, lon: 14.35 },\n { code: \"2380\", name: \"Östersund\", lat: 63.183333, lon: 14.666667 },\n { code: \"2401\", name: \"Nordmaling\", lat: 63.566667, lon: 19.5 },\n { code: \"2403\", name: \"Bjurholm\", lat: 63.916667, lon: 19.216667 },\n { code: \"2404\", name: \"Vindeln\", lat: 64.2, lon: 19.716667 },\n { code: \"2409\", name: \"Robertsfors\", lat: 64.192014, lon: 20.849513 },\n { code: \"2417\", name: \"Norsjö\", lat: 64.916667, lon: 19.483333 },\n { code: \"2418\", name: \"Malå\", lat: 65.183333, lon: 18.75 },\n { code: \"2421\", name: \"Storuman\", lat: 65.1, lon: 17.1 },\n { code: \"2422\", name: \"Sorsele\", lat: 65.533333, lon: 17.533333 },\n { code: \"2425\", name: \"Dorotea\", lat: 64.266667, lon: 16.416667 },\n { code: \"2460\", name: \"Vännäs\", lat: 63.916667, lon: 19.75 },\n { code: \"2462\", name: \"Vilhelmina\", lat: 64.616667, lon: 16.65 },\n { code: \"2463\", name: \"Åsele\", lat: 64.15, lon: 17.35 },\n { code: \"2480\", name: \"Umeå\", lat: 63.833333, lon: 20.25 },\n { code: \"2481\", name: \"Lycksele\", lat: 64.6, lon: 18.666667 },\n { code: \"2482\", name: \"Skellefteå\", lat: 64.75, lon: 20.95 },\n { code: \"2505\", name: \"Arvidsjaur\", lat: 65.583333, lon: 19.116667 },\n { code: \"2506\", name: \"Arjeplog\", lat: 66.033333, lon: 17.95 },\n { code: \"2510\", name: \"Jokkmokk\", lat: 66.616667, lon: 19.833333 },\n { code: \"2513\", name: \"Överkalix\", lat: 66.35, lon: 22.883333 },\n { code: \"2514\", name: \"Kalix\", lat: 65.85, lon: 23.166667 },\n { code: \"2518\", name: \"Övertorneå\", lat: 66.383333, lon: 23.666667 },\n { code: \"2521\", name: \"Pajala\", lat: 67.183333, lon: 23.366667 },\n { code: \"2523\", name: \"Gällivare\", lat: 67.133333, lon: 20.65 },\n { code: \"2560\", name: \"Älvsbyn\", lat: 65.683333, lon: 21.016667 },\n { code: \"2580\", name: \"Luleå\", lat: 65.584444, lon: 22.153889 },\n { code: \"2581\", name: \"Piteå\", lat: 65.333333, lon: 21.5 },\n { code: \"2582\", name: \"Boden\", lat: 65.833333, lon: 21.716667 },\n { code: \"2583\", name: \"Haparanda\", lat: 65.833333, lon: 24.133333 },\n { code: \"2584\", name: \"Kiruna\", lat: 67.854722, lon: 20.222778 },\n];\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { PrimitivesDefaults } from \"../primitives-defaults.js\";\nimport { keepDigits, sanitizeInput } from \"../internal/input-sanitization.js\";\nimport { TextCandidateCategory } from \"../text-scanning/text-candidate-category.js\";\nimport { TextCandidate } from \"../text-scanning/text-candidate.js\";\nimport { TextMatchConfidence } from \"../text-scanning/text-match-confidence.js\";\nimport { GeoCoordinate } from \"./geo-coordinate.js\";\nimport { SwedishCounty } from \"./swedish-county.js\";\nimport { MUNICIPALITY_ROWS } from \"./swedish-municipality-data.js\";\n\nconst MAX_INPUT_LENGTH = 100;\nconst MIN_SCAN_NAME_LENGTH = 4;\n\nexport interface MunicipalityDistance {\n readonly municipality: SwedishMunicipality;\n readonly distanceKilometers: number;\n}\n\n/** A Swedish municipality (`kommun`), keyed by SCB's 4-digit municipality code. */\nexport class SwedishMunicipality {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Municipality\",\n localizedName: \"Kommun\",\n emoji: \"\\u{1F3D8}\\uFE0F\",\n sources: Object.freeze([\n \"https://www.scb.se/en/finding-statistics/regional-statistics/regional-divisions/counties-and-municipalities/counties-and-municipalities-in-numerical-order/\",\n ]),\n });\n\n readonly code: string;\n readonly localizedName: string;\n readonly englishName: string;\n readonly county: SwedishCounty;\n readonly coordinate: GeoCoordinate;\n\n private constructor(\n code: string,\n localized: string,\n english: string,\n county: SwedishCounty,\n coord: GeoCoordinate,\n ) {\n this.code = code;\n this.localizedName = localized;\n this.englishName = english;\n this.county = county;\n this.coordinate = coord;\n }\n\n get countyCode(): string {\n return this.county.code;\n }\n get latitude(): number {\n return this.coordinate.latitude;\n }\n get longitude(): number {\n return this.coordinate.longitude;\n }\n get displayName(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n static tryParse(input: string | null | undefined): SwedishMunicipality | null {\n if (input == null) return null;\n const trimmed = sanitizeInput(input).trim();\n if (trimmed.length === 0 || trimmed.length > MAX_INPUT_LENGTH) return null;\n\n const digits = keepDigits(trimmed);\n if (digits.length === 4 && BY_CODE.has(digits)) return BY_CODE.get(digits)!;\n\n return BY_NAME.get(trimmed.toLowerCase()) ?? null;\n }\n\n static parse(input: string): SwedishMunicipality {\n const r = SwedishMunicipality.tryParse(input);\n if (r === null) throw new Error(\"Invalid Swedish municipality.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return SwedishMunicipality.tryParse(input) !== null;\n }\n\n static format(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = SwedishMunicipality.tryParse(input);\n if (r) return r.localizedName;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n static normalize(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = SwedishMunicipality.tryParse(input);\n if (r) return r.code;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null) {\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n return null;\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && SwedishMunicipality.normalize(input) === input;\n }\n\n /** All 290 Swedish municipalities, ordered by code. */\n static get all(): readonly SwedishMunicipality[] {\n return ALL_MUNICIPALITIES;\n }\n\n static findCandidatesInText(text: string): readonly TextCandidate<SwedishMunicipality>[] {\n if (!text) return [];\n const out: TextCandidate<SwedishMunicipality>[] = [];\n SCAN_PATTERN.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = SCAN_PATTERN.exec(text)) !== null) {\n const municipality = SwedishMunicipality.tryParse(m[0]);\n if (!municipality) continue;\n out.push(\n new TextCandidate<SwedishMunicipality>({\n startIndex: m.index,\n length: m[0].length,\n originalText: m[0],\n typeName: \"SwedishMunicipality\",\n category: TextCandidateCategory.Geography,\n normalizedForm: municipality.toNormalizedString(),\n formattedForm: municipality.toString(),\n maskedForm: municipality.localizedName,\n confidence: TextMatchConfidence.Low,\n value: municipality,\n }),\n );\n }\n return out;\n }\n\n static distanceKilometers(a: SwedishMunicipality, b: SwedishMunicipality): number {\n return GeoCoordinate.distanceKilometers(a.coordinate, b.coordinate);\n }\n\n distanceKilometersTo(other: SwedishMunicipality | GeoCoordinate): number {\n const target = other instanceof SwedishMunicipality ? other.coordinate : other;\n return GeoCoordinate.distanceKilometers(this.coordinate, target);\n }\n\n findNeighbors(radiusKm: number): readonly MunicipalityDistance[] {\n if (!Number.isFinite(radiusKm) || radiusKm <= 0) {\n throw new RangeError(\"radiusKm must be a positive finite number.\");\n }\n const out: MunicipalityDistance[] = [];\n for (const m of ALL_MUNICIPALITIES) {\n if (m === this) continue;\n const dist = GeoCoordinate.distanceKilometers(this.coordinate, m.coordinate);\n if (dist <= radiusKm) out.push({ municipality: m, distanceKilometers: dist });\n }\n out.sort((a, b) => a.distanceKilometers - b.distanceKilometers);\n return out;\n }\n\n static findNeighbors(\n coordinate: GeoCoordinate,\n radiusKm: number,\n ): readonly MunicipalityDistance[] {\n if (!Number.isFinite(radiusKm) || radiusKm <= 0) {\n throw new RangeError(\"radiusKm must be a positive finite number.\");\n }\n const out: MunicipalityDistance[] = [];\n for (const m of ALL_MUNICIPALITIES) {\n const dist = GeoCoordinate.distanceKilometers(coordinate, m.coordinate);\n if (dist <= radiusKm) out.push({ municipality: m, distanceKilometers: dist });\n }\n out.sort((a, b) => a.distanceKilometers - b.distanceKilometers);\n return out;\n }\n\n toNormalizedString(): string {\n return this.code;\n }\n toString(): string {\n return this.displayName;\n }\n toDisplayString(): string {\n return this.displayName;\n }\n toEnglishString(): string {\n return this.englishName;\n }\n toLocalString(): string {\n return this.localizedName;\n }\n\n equals(other: SwedishMunicipality | null | undefined): boolean {\n return other != null && this.code === other.code;\n }\n compareTo(other: SwedishMunicipality | null | undefined): number {\n if (other == null) return 1;\n return this.code < other.code ? -1 : this.code > other.code ? 1 : 0;\n }\n\n /** @internal */\n static _new(\n code: string,\n sv: string,\n en: string,\n county: SwedishCounty,\n coord: GeoCoordinate,\n ): SwedishMunicipality {\n return new SwedishMunicipality(code, sv, en, county, coord);\n }\n}\n\nconst ALL_MUNICIPALITIES: readonly SwedishMunicipality[] = MUNICIPALITY_ROWS.map((r) => {\n const county = SwedishCounty.parse(r.code.slice(0, 2));\n const coord = GeoCoordinate.create(r.lat, r.lon);\n return SwedishMunicipality._new(r.code, r.name, r.englishName ?? r.name, county, coord);\n})\n .slice()\n .sort((a, b) => a.code.localeCompare(b.code));\n\nconst BY_CODE = new Map<string, SwedishMunicipality>();\nconst BY_NAME = new Map<string, SwedishMunicipality>();\n\nfor (const m of ALL_MUNICIPALITIES) {\n BY_CODE.set(m.code, m);\n BY_NAME.set(m.localizedName.toLowerCase(), m);\n if (m.englishName.toLowerCase() !== m.localizedName.toLowerCase()) {\n BY_NAME.set(m.englishName.toLowerCase(), m);\n }\n addGenitive(m.localizedName, m);\n if (m.englishName.toLowerCase() !== m.localizedName.toLowerCase()) {\n addGenitive(m.englishName, m);\n }\n}\n\nfunction addGenitive(name: string, m: SwedishMunicipality): void {\n if (name.endsWith(\"s\") || name.endsWith(\"S\")) return;\n const key = (name + \"s\").toLowerCase();\n if (!BY_NAME.has(key)) BY_NAME.set(key, m);\n}\n\nconst SCAN_PATTERN: RegExp = (() => {\n const names = [...BY_NAME.keys()]\n .filter((n) => n.length >= MIN_SCAN_NAME_LENGTH)\n .sort((a, b) => b.length - a.length)\n .map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"));\n // Unicode-aware word boundaries: \\b in JS is ASCII-only even with /u, so\n // we use look-around on Unicode letters/digits to mimic .NET's \\b behaviour.\n return new RegExp(`(?<![\\\\p{L}\\\\p{N}_])(?:${names.join(\"|\")})(?![\\\\p{L}\\\\p{N}_])`, \"giu\");\n})();\n","// County and municipality adjacency tables. Originally generated from the\n// .NET source; now maintained by hand in this repo.\n\nexport const COUNTY_ADJACENCY: Readonly<Record<string, readonly string[]>> = Object.freeze({\n \"01\": [\"03\", \"04\"],\n \"03\": [\"01\", \"19\", \"20\", \"21\"],\n \"04\": [\"01\", \"05\", \"18\", \"19\"],\n \"05\": [\"04\", \"06\", \"08\", \"18\"],\n \"06\": [\"05\", \"07\", \"08\", \"13\", \"14\"],\n \"07\": [\"06\", \"08\", \"10\", \"12\", \"13\"],\n \"08\": [\"05\", \"06\", \"07\", \"10\"],\n \"09\": [],\n \"10\": [\"07\", \"08\", \"12\"],\n \"12\": [\"07\", \"10\", \"13\"],\n \"13\": [\"06\", \"07\", \"12\", \"14\"],\n \"14\": [\"06\", \"13\", \"17\", \"18\"],\n \"17\": [\"14\", \"18\", \"20\"],\n \"18\": [\"04\", \"05\", \"14\", \"17\", \"19\", \"20\"],\n \"19\": [\"03\", \"04\", \"18\", \"20\", \"21\"],\n \"20\": [\"03\", \"17\", \"18\", \"19\", \"21\", \"23\"],\n \"21\": [\"03\", \"19\", \"20\", \"22\", \"23\"],\n \"22\": [\"21\", \"23\", \"24\"],\n \"23\": [\"20\", \"21\", \"22\", \"24\"],\n \"24\": [\"22\", \"23\", \"25\"],\n \"25\": [\"24\"],\n});\n\nexport const MUNICIPALITY_ADJACENCY: Readonly<Record<string, readonly string[]>> = Object.freeze({\n \"0114\": [\"0115\", \"0123\", \"0139\", \"0160\", \"0163\", \"0191\"],\n \"0115\": [\"0114\", \"0117\", \"0160\", \"0188\", \"0191\"],\n \"0117\": [\"0115\", \"0160\", \"0187\", \"0188\"],\n \"0120\": [\"0182\"],\n \"0123\": [\"0114\", \"0139\", \"0163\", \"0180\"],\n \"0126\": [\"0127\", \"0136\", \"0138\", \"0180\"],\n \"0127\": [\"0126\", \"0128\", \"0136\", \"0181\", \"0192\"],\n \"0128\": [\"0127\", \"0181\"],\n \"0136\": [\"0126\", \"0127\", \"0138\", \"0192\"],\n \"0138\": [\"0126\", \"0136\", \"0180\", \"0182\"],\n \"0139\": [\"0114\", \"0123\", \"0191\", \"0305\"],\n \"0140\": [\"0181\", \"0461\", \"0486\"],\n \"0160\": [\"0114\", \"0115\", \"0117\", \"0162\", \"0163\"],\n \"0162\": [\"0160\", \"0163\", \"0180\", \"0184\"],\n \"0163\": [\"0114\", \"0123\", \"0160\", \"0162\", \"0180\", \"0183\", \"0184\"],\n \"0180\": [\"0123\", \"0126\", \"0138\", \"0162\", \"0163\", \"0182\", \"0183\", \"0184\"],\n \"0181\": [\"0127\", \"0128\", \"0140\", \"0461\", \"0488\"],\n \"0182\": [\"0120\", \"0138\", \"0180\"],\n \"0183\": [\"0163\", \"0180\", \"0184\"],\n \"0184\": [\"0162\", \"0163\", \"0180\", \"0183\"],\n \"0187\": [\"0117\"],\n \"0188\": [\"0115\", \"0117\", \"0191\", \"0330\", \"0380\", \"0382\"],\n \"0191\": [\"0114\", \"0115\", \"0139\", \"0188\", \"0305\", \"0330\", \"0380\"],\n \"0192\": [\"0127\", \"0136\"],\n \"0305\": [\"0139\", \"0191\", \"0330\", \"0380\", \"0381\"],\n \"0319\": [\"0360\", \"2180\"],\n \"0330\": [\"0188\", \"0191\", \"0305\", \"0380\"],\n \"0331\": [\"0360\", \"0380\", \"0381\", \"1981\", \"2084\", \"2180\", \"2181\"],\n \"0360\": [\"0319\", \"0331\", \"0380\", \"0382\", \"2180\"],\n \"0380\": [\"0188\", \"0191\", \"0305\", \"0330\", \"0331\", \"0360\", \"0381\", \"0382\"],\n \"0381\": [\"0305\", \"0331\", \"0380\", \"1980\", \"1981\"],\n \"0382\": [\"0188\", \"0360\", \"0380\"],\n \"0428\": [\"0483\", \"0562\", \"1880\"],\n \"0461\": [\"0140\", \"0181\", \"0480\", \"0482\", \"0486\", \"0488\"],\n \"0480\": [\"0461\", \"0481\", \"0482\", \"0483\", \"0488\", \"0581\"],\n \"0481\": [\"0480\"],\n \"0482\": [\"0461\", \"0480\", \"0483\", \"0484\", \"0486\"],\n \"0483\": [\"0428\", \"0480\", \"0482\", \"0484\", \"0562\", \"0581\"],\n \"0484\": [\"0482\", \"0483\", \"0486\", \"1960\", \"1984\"],\n \"0486\": [\"0140\", \"0461\", \"0482\", \"0484\"],\n \"0488\": [\"0181\", \"0461\", \"0480\"],\n \"0509\": [\"0560\", \"0584\", \"0586\", \"0680\", \"0687\"],\n \"0512\": [\"0513\", \"0560\", \"0604\", \"0686\", \"0687\", \"0884\"],\n \"0513\": [\"0512\", \"0560\", \"0561\", \"0580\", \"0883\", \"0884\"],\n \"0560\": [\"0509\", \"0512\", \"0513\", \"0580\", \"0586\", \"0687\"],\n \"0561\": [\"0513\", \"0563\", \"0580\", \"0582\", \"0883\"],\n \"0562\": [\"0428\", \"0483\", \"0580\", \"0581\", \"0583\", \"1861\", \"1880\"],\n \"0563\": [\"0561\", \"0582\", \"0883\"],\n \"0580\": [\"0513\", \"0560\", \"0561\", \"0562\", \"0581\", \"0582\", \"0583\", \"0586\"],\n \"0581\": [\"0480\", \"0483\", \"0562\", \"0580\", \"0582\"],\n \"0582\": [\"0561\", \"0563\", \"0580\", \"0581\"],\n \"0583\": [\"0562\", \"0580\", \"0584\", \"0586\", \"1861\", \"1882\"],\n \"0584\": [\"0509\", \"0583\", \"0586\"],\n \"0586\": [\"0509\", \"0560\", \"0580\", \"0583\", \"0584\"],\n \"0604\": [\"0512\", \"0680\", \"0682\", \"0686\", \"0687\"],\n \"0617\": [\"0662\", \"0665\", \"0683\"],\n \"0642\": [\"0643\", \"0680\", \"1491\", \"1498\", \"1499\"],\n \"0643\": [\"0642\", \"0680\", \"1497\", \"1498\"],\n \"0662\": [\"0617\", \"0665\", \"0680\", \"0683\", \"0781\", \"1315\", \"1382\", \"1452\", \"1465\"],\n \"0665\": [\"0617\", \"0662\", \"0680\", \"0682\", \"0683\", \"0684\"],\n \"0680\": [\"0509\", \"0604\", \"0642\", \"0643\", \"0662\", \"0665\", \"0682\", \"0687\", \"1452\", \"1491\"],\n \"0682\": [\"0604\", \"0665\", \"0680\", \"0684\", \"0685\", \"0686\"],\n \"0683\": [\"0617\", \"0662\", \"0665\", \"0684\", \"0764\", \"0781\"],\n \"0684\": [\"0665\", \"0682\", \"0683\", \"0685\", \"0764\", \"0780\"],\n \"0685\": [\"0682\", \"0684\", \"0686\", \"0760\", \"0780\", \"0821\", \"0860\"],\n \"0686\": [\"0512\", \"0604\", \"0682\", \"0685\", \"0860\", \"0884\"],\n \"0687\": [\"0509\", \"0512\", \"0560\", \"0604\", \"0680\"],\n \"0760\": [\"0685\", \"0761\", \"0780\", \"0821\", \"0860\", \"0881\"],\n \"0761\": [\"0760\", \"0763\", \"0780\", \"0862\", \"0881\"],\n \"0763\": [\"0761\", \"0764\", \"0765\", \"0780\", \"0862\", \"1060\", \"1081\", \"1082\"],\n \"0764\": [\"0683\", \"0684\", \"0763\", \"0765\", \"0780\", \"0781\"],\n \"0765\": [\"0763\", \"0764\", \"0767\", \"0781\", \"1060\", \"1273\", \"1293\"],\n \"0767\": [\"0765\", \"0781\", \"1257\", \"1273\", \"1293\", \"1381\"],\n \"0780\": [\"0684\", \"0685\", \"0760\", \"0761\", \"0763\", \"0764\"],\n \"0781\": [\"0662\", \"0683\", \"0764\", \"0765\", \"0767\", \"1315\", \"1380\", \"1381\"],\n \"0821\": [\"0685\", \"0760\", \"0860\", \"0861\", \"0881\", \"0882\"],\n \"0834\": [\"0862\", \"0880\", \"1080\"],\n \"0840\": [\"0885\"],\n \"0860\": [\"0685\", \"0686\", \"0760\", \"0821\", \"0882\", \"0884\"],\n \"0861\": [\"0821\", \"0880\", \"0881\", \"0882\"],\n \"0862\": [\"0761\", \"0763\", \"0834\", \"0880\", \"0881\", \"1080\", \"1081\"],\n \"0880\": [\"0834\", \"0861\", \"0862\", \"0881\"],\n \"0881\": [\"0760\", \"0761\", \"0821\", \"0861\", \"0862\", \"0880\"],\n \"0882\": [\"0821\", \"0860\", \"0861\", \"0883\", \"0884\"],\n \"0883\": [\"0513\", \"0561\", \"0563\", \"0882\", \"0884\"],\n \"0884\": [\"0512\", \"0513\", \"0686\", \"0860\", \"0882\", \"0883\"],\n \"0885\": [\"0840\"],\n \"1060\": [\"0763\", \"0765\", \"1082\", \"1083\", \"1256\", \"1272\", \"1273\", \"1290\"],\n \"1080\": [\"0834\", \"0862\", \"1081\"],\n \"1081\": [\"0763\", \"0862\", \"1080\", \"1082\"],\n \"1082\": [\"0763\", \"1060\", \"1081\", \"1083\"],\n \"1083\": [\"1060\", \"1082\", \"1272\"],\n \"1214\": [\"1260\", \"1261\", \"1276\", \"1277\", \"1282\", \"1283\", \"1285\"],\n \"1230\": [\"1231\", \"1262\", \"1263\", \"1280\", \"1281\"],\n \"1231\": [\"1230\", \"1262\", \"1280\"],\n \"1233\": [\"1263\", \"1280\", \"1287\"],\n \"1256\": [\"1060\", \"1273\", \"1290\", \"1293\"],\n \"1257\": [\"0767\", \"1275\", \"1276\", \"1292\", \"1293\", \"1381\"],\n \"1260\": [\"1214\", \"1277\", \"1283\"],\n \"1261\": [\"1214\", \"1262\", \"1281\", \"1282\", \"1285\"],\n \"1262\": [\"1230\", \"1231\", \"1261\", \"1281\"],\n \"1263\": [\"1230\", \"1233\", \"1264\", \"1280\", \"1281\", \"1287\"],\n \"1264\": [\"1263\", \"1265\", \"1281\", \"1286\", \"1287\"],\n \"1265\": [\"1264\", \"1266\", \"1270\", \"1281\", \"1285\", \"1286\"],\n \"1266\": [\"1265\", \"1267\", \"1270\", \"1285\", \"1290\", \"1293\"],\n \"1267\": [\"1266\", \"1276\", \"1285\", \"1293\"],\n \"1270\": [\"1265\", \"1266\", \"1286\", \"1290\", \"1291\"],\n \"1272\": [\"1060\", \"1083\", \"1290\"],\n \"1273\": [\"0765\", \"0767\", \"1060\", \"1256\", \"1290\", \"1293\"],\n \"1275\": [\"1257\", \"1276\", \"1293\"],\n \"1276\": [\"1214\", \"1257\", \"1267\", \"1275\", \"1277\", \"1285\", \"1292\", \"1293\"],\n \"1277\": [\"1214\", \"1260\", \"1276\", \"1283\", \"1292\"],\n \"1278\": [\"1292\", \"1381\"],\n \"1280\": [\"1230\", \"1231\", \"1233\", \"1263\"],\n \"1281\": [\"1230\", \"1261\", \"1262\", \"1263\", \"1264\", \"1265\", \"1285\", \"1287\"],\n \"1282\": [\"1214\", \"1261\", \"1283\"],\n \"1283\": [\"1214\", \"1260\", \"1277\", \"1282\", \"1284\", \"1292\"],\n \"1284\": [\"1283\"],\n \"1285\": [\"1214\", \"1261\", \"1265\", \"1266\", \"1267\", \"1276\", \"1281\"],\n \"1286\": [\"1264\", \"1265\", \"1270\", \"1291\"],\n \"1287\": [\"1233\", \"1263\", \"1264\", \"1281\"],\n \"1290\": [\"1060\", \"1256\", \"1266\", \"1270\", \"1272\", \"1273\", \"1291\", \"1293\"],\n \"1291\": [\"1270\", \"1286\", \"1290\"],\n \"1292\": [\"1257\", \"1276\", \"1277\", \"1278\", \"1283\", \"1381\"],\n \"1293\": [\"0765\", \"0767\", \"1256\", \"1257\", \"1266\", \"1267\", \"1273\", \"1275\", \"1276\", \"1290\"],\n \"1315\": [\"0662\", \"0781\", \"1380\", \"1382\"],\n \"1380\": [\"0781\", \"1315\", \"1381\", \"1382\"],\n \"1381\": [\"0767\", \"0781\", \"1257\", \"1278\", \"1292\", \"1380\"],\n \"1382\": [\"0662\", \"1315\", \"1380\", \"1383\", \"1463\", \"1465\"],\n \"1383\": [\"1382\", \"1384\", \"1463\", \"1465\"],\n \"1384\": [\"1383\", \"1401\", \"1463\", \"1480\", \"1481\"],\n \"1401\": [\"1384\", \"1402\", \"1441\", \"1443\", \"1463\", \"1480\", \"1481\"],\n \"1402\": [\"1401\", \"1441\", \"1480\"],\n \"1415\": [\"1462\", \"1482\", \"1485\"],\n \"1421\": [\"1484\", \"1485\"],\n \"1427\": [\"1430\", \"1435\", \"1484\"],\n \"1430\": [\"1427\", \"1435\", \"1438\", \"1439\", \"1484\", \"1485\"],\n \"1435\": [\"1427\", \"1430\", \"1438\", \"1486\"],\n \"1438\": [\"1430\", \"1435\", \"1439\", \"1460\", \"1765\"],\n \"1439\": [\"1430\", \"1438\", \"1460\", \"1461\", \"1485\", \"1487\"],\n \"1440\": [\"1441\", \"1462\", \"1480\", \"1482\", \"1488\", \"1489\"],\n \"1441\": [\"1401\", \"1402\", \"1440\", \"1443\", \"1480\", \"1489\"],\n \"1442\": [\"1443\", \"1445\", \"1466\", \"1489\", \"1490\"],\n \"1443\": [\"1401\", \"1441\", \"1442\", \"1463\", \"1489\", \"1490\"],\n \"1444\": [\"1445\", \"1470\", \"1487\", \"1488\", \"1494\"],\n \"1445\": [\"1442\", \"1444\", \"1466\", \"1470\", \"1488\", \"1489\"],\n \"1446\": [\"1472\", \"1473\", \"1497\", \"1860\", \"1882\"],\n \"1447\": [\"1473\", \"1493\", \"1781\", \"1860\", \"1862\"],\n \"1452\": [\"0662\", \"0680\", \"1465\", \"1490\", \"1491\"],\n \"1460\": [\"1438\", \"1439\", \"1461\", \"1492\", \"1765\", \"1785\"],\n \"1461\": [\"1439\", \"1460\", \"1487\", \"1492\"],\n \"1462\": [\"1415\", \"1440\", \"1482\", \"1485\", \"1487\", \"1488\"],\n \"1463\": [\"1382\", \"1383\", \"1384\", \"1401\", \"1443\", \"1465\", \"1481\", \"1490\"],\n \"1465\": [\"0662\", \"1382\", \"1383\", \"1452\", \"1463\", \"1490\"],\n \"1466\": [\"1442\", \"1445\", \"1470\", \"1490\", \"1491\", \"1499\"],\n \"1470\": [\"1444\", \"1445\", \"1466\", \"1494\", \"1495\", \"1499\"],\n \"1471\": [\"1493\", \"1494\", \"1495\", \"1496\"],\n \"1472\": [\"1446\", \"1473\", \"1496\", \"1497\"],\n \"1473\": [\"1446\", \"1447\", \"1472\", \"1493\", \"1496\", \"1860\"],\n \"1480\": [\"1384\", \"1401\", \"1402\", \"1440\", \"1441\", \"1481\", \"1482\"],\n \"1481\": [\"1384\", \"1401\", \"1463\", \"1480\"],\n \"1482\": [\"1415\", \"1440\", \"1462\", \"1480\"],\n \"1484\": [\"1421\", \"1427\", \"1430\", \"1485\"],\n \"1485\": [\"1415\", \"1421\", \"1430\", \"1439\", \"1462\", \"1484\", \"1487\", \"1488\"],\n \"1486\": [\"1435\"],\n \"1487\": [\"1439\", \"1444\", \"1461\", \"1462\", \"1485\", \"1488\", \"1494\"],\n \"1488\": [\"1440\", \"1444\", \"1445\", \"1462\", \"1485\", \"1487\", \"1489\"],\n \"1489\": [\"1440\", \"1441\", \"1442\", \"1443\", \"1445\", \"1488\"],\n \"1490\": [\"1442\", \"1443\", \"1452\", \"1463\", \"1465\", \"1466\", \"1491\"],\n \"1491\": [\"0642\", \"0680\", \"1452\", \"1466\", \"1490\", \"1499\"],\n \"1492\": [\"1460\", \"1461\", \"1765\", \"1785\"],\n \"1493\": [\"1447\", \"1471\", \"1473\", \"1496\"],\n \"1494\": [\"1444\", \"1470\", \"1471\", \"1487\", \"1495\"],\n \"1495\": [\"1470\", \"1471\", \"1494\", \"1496\", \"1499\"],\n \"1496\": [\"1471\", \"1472\", \"1473\", \"1493\", \"1495\", \"1497\", \"1498\", \"1499\"],\n \"1497\": [\"0643\", \"1446\", \"1472\", \"1496\", \"1498\"],\n \"1498\": [\"0642\", \"0643\", \"1496\", \"1497\", \"1499\"],\n \"1499\": [\"0642\", \"1466\", \"1470\", \"1491\", \"1495\", \"1496\", \"1498\"],\n \"1715\": [\"1763\", \"1764\", \"1766\", \"1780\", \"1784\"],\n \"1730\": [\"1765\", \"1784\"],\n \"1737\": [\"1766\", \"1783\", \"1784\", \"2023\"],\n \"1760\": [\"1780\", \"1781\", \"1782\", \"1863\", \"1883\"],\n \"1761\": [\"1780\"],\n \"1762\": [\"1763\", \"1766\", \"1783\"],\n \"1763\": [\"1715\", \"1762\", \"1766\", \"1780\", \"1783\"],\n \"1764\": [\"1715\", \"1780\", \"1784\", \"1785\"],\n \"1765\": [\"1438\", \"1460\", \"1492\", \"1730\", \"1784\", \"1785\"],\n \"1766\": [\"1715\", \"1737\", \"1762\", \"1763\", \"1783\", \"1784\"],\n \"1780\": [\"1715\", \"1760\", \"1761\", \"1763\", \"1764\", \"1781\", \"1782\", \"1783\"],\n \"1781\": [\"1447\", \"1760\", \"1780\", \"1860\", \"1862\", \"1883\"],\n \"1782\": [\"1760\", \"1780\", \"1783\", \"1863\", \"2021\", \"2023\", \"2085\"],\n \"1783\": [\"1737\", \"1762\", \"1763\", \"1766\", \"1780\", \"1782\", \"2023\"],\n \"1784\": [\"1715\", \"1730\", \"1737\", \"1764\", \"1765\", \"1766\", \"1785\"],\n \"1785\": [\"1460\", \"1492\", \"1764\", \"1765\", \"1784\"],\n \"1814\": [\"1860\", \"1861\", \"1862\", \"1880\", \"1881\", \"1883\"],\n \"1860\": [\"1446\", \"1447\", \"1473\", \"1781\", \"1814\", \"1861\", \"1862\", \"1882\"],\n \"1861\": [\"0562\", \"0583\", \"1814\", \"1860\", \"1880\", \"1881\", \"1882\"],\n \"1862\": [\"1447\", \"1781\", \"1814\", \"1860\", \"1883\"],\n \"1863\": [\"1760\", \"1782\", \"1864\", \"1883\", \"1884\", \"1885\", \"2085\"],\n \"1864\": [\"1863\", \"1885\", \"2061\", \"2085\"],\n \"1880\": [\"0428\", \"0562\", \"1814\", \"1861\", \"1881\", \"1883\", \"1884\", \"1885\", \"1984\"],\n \"1881\": [\"1814\", \"1861\", \"1880\"],\n \"1882\": [\"0583\", \"1446\", \"1860\", \"1861\"],\n \"1883\": [\"1760\", \"1781\", \"1814\", \"1862\", \"1863\", \"1880\", \"1884\"],\n \"1884\": [\"1863\", \"1880\", \"1883\", \"1885\"],\n \"1885\": [\"1863\", \"1864\", \"1880\", \"1884\", \"1904\", \"1983\", \"1984\", \"2061\"],\n \"1904\": [\"1885\", \"1907\", \"1982\", \"1983\", \"2061\"],\n \"1907\": [\"1904\", \"1961\", \"1980\", \"1981\", \"1982\", \"1983\"],\n \"1960\": [\"0484\", \"1983\", \"1984\"],\n \"1961\": [\"1907\", \"1980\", \"1983\"],\n \"1962\": [\"1981\", \"1982\", \"2061\", \"2083\", \"2084\"],\n \"1980\": [\"0381\", \"1907\", \"1961\", \"1981\", \"1983\"],\n \"1981\": [\"0331\", \"0381\", \"1907\", \"1962\", \"1980\", \"1982\", \"2084\", \"2181\"],\n \"1982\": [\"1904\", \"1907\", \"1962\", \"1981\", \"2061\"],\n \"1983\": [\"1885\", \"1904\", \"1907\", \"1960\", \"1961\", \"1980\", \"1984\"],\n \"1984\": [\"0484\", \"1880\", \"1885\", \"1960\", \"1983\"],\n \"2021\": [\"1782\", \"2023\", \"2026\", \"2029\", \"2062\", \"2085\"],\n \"2023\": [\"1737\", \"1782\", \"1783\", \"2021\", \"2039\", \"2062\"],\n \"2026\": [\"2021\", \"2029\", \"2080\", \"2081\", \"2085\"],\n \"2029\": [\"2021\", \"2026\", \"2031\", \"2062\", \"2080\", \"2081\"],\n \"2031\": [\"2029\", \"2034\", \"2062\", \"2080\", \"2121\", \"2161\"],\n \"2034\": [\"2031\", \"2062\", \"2161\", \"2361\"],\n \"2039\": [\"2023\", \"2062\", \"2361\"],\n \"2061\": [\"1864\", \"1885\", \"1904\", \"1962\", \"1982\", \"2082\", \"2083\", \"2085\"],\n \"2062\": [\"2021\", \"2023\", \"2029\", \"2031\", \"2034\", \"2039\", \"2361\"],\n \"2080\": [\"2026\", \"2029\", \"2031\", \"2081\", \"2082\", \"2083\", \"2101\", \"2104\", \"2121\", \"2181\", \"2183\"],\n \"2081\": [\"2026\", \"2029\", \"2080\", \"2082\", \"2085\"],\n \"2082\": [\"2061\", \"2080\", \"2081\", \"2083\", \"2085\", \"2104\"],\n \"2083\": [\"1962\", \"2061\", \"2080\", \"2082\", \"2084\", \"2104\"],\n \"2084\": [\"0331\", \"1962\", \"1981\", \"2083\", \"2104\", \"2181\"],\n \"2085\": [\"1782\", \"1863\", \"1864\", \"2021\", \"2026\", \"2061\", \"2081\", \"2082\"],\n \"2101\": [\"2080\", \"2180\", \"2181\", \"2182\", \"2183\"],\n \"2104\": [\"2080\", \"2082\", \"2083\", \"2084\", \"2181\"],\n \"2121\": [\"2031\", \"2080\", \"2161\", \"2183\"],\n \"2132\": [\"2184\", \"2260\", \"2281\"],\n \"2161\": [\"2031\", \"2034\", \"2121\", \"2183\", \"2184\", \"2260\", \"2361\"],\n \"2180\": [\"0319\", \"0331\", \"0360\", \"2101\", \"2181\", \"2182\"],\n \"2181\": [\"0331\", \"1981\", \"2080\", \"2084\", \"2101\", \"2104\", \"2180\"],\n \"2182\": [\"2101\", \"2180\", \"2183\", \"2184\"],\n \"2183\": [\"2080\", \"2101\", \"2121\", \"2161\", \"2182\", \"2184\"],\n \"2184\": [\"2132\", \"2161\", \"2182\", \"2183\", \"2260\"],\n \"2260\": [\"2132\", \"2161\", \"2184\", \"2281\", \"2305\", \"2326\", \"2361\"],\n \"2262\": [\"2280\", \"2281\", \"2283\"],\n \"2280\": [\"2262\", \"2281\", \"2282\", \"2283\"],\n \"2281\": [\"2132\", \"2260\", \"2262\", \"2280\", \"2283\", \"2303\", \"2305\"],\n \"2282\": [\"2280\", \"2283\", \"2284\"],\n \"2283\": [\"2262\", \"2280\", \"2281\", \"2282\", \"2284\", \"2303\", \"2313\", \"2425\", \"2463\"],\n \"2284\": [\"2282\", \"2283\", \"2401\", \"2403\", \"2463\"],\n \"2303\": [\"2281\", \"2283\", \"2305\", \"2313\", \"2380\"],\n \"2305\": [\"2260\", \"2281\", \"2303\", \"2326\", \"2380\"],\n \"2309\": [\"2313\", \"2321\", \"2380\"],\n \"2313\": [\"2283\", \"2303\", \"2309\", \"2380\", \"2425\", \"2462\"],\n \"2321\": [\"2309\", \"2326\"],\n \"2326\": [\"2260\", \"2305\", \"2321\", \"2361\", \"2380\"],\n \"2361\": [\"2034\", \"2039\", \"2062\", \"2161\", \"2260\", \"2326\"],\n \"2380\": [\"2303\", \"2305\", \"2309\", \"2313\", \"2326\"],\n \"2401\": [\"2284\", \"2403\", \"2460\", \"2480\"],\n \"2403\": [\"2284\", \"2401\", \"2404\", \"2460\", \"2463\", \"2481\"],\n \"2404\": [\"2403\", \"2417\", \"2460\", \"2480\", \"2481\", \"2482\"],\n \"2409\": [\"2480\", \"2482\"],\n \"2417\": [\"2404\", \"2418\", \"2481\", \"2482\", \"2505\"],\n \"2418\": [\"2417\", \"2422\", \"2481\", \"2505\"],\n \"2421\": [\"2422\", \"2462\", \"2481\"],\n \"2422\": [\"2418\", \"2421\", \"2481\", \"2505\", \"2506\"],\n \"2425\": [\"2283\", \"2313\", \"2462\", \"2463\"],\n \"2460\": [\"2401\", \"2403\", \"2404\", \"2480\"],\n \"2462\": [\"2313\", \"2421\", \"2425\", \"2463\", \"2481\"],\n \"2463\": [\"2283\", \"2284\", \"2403\", \"2425\", \"2462\", \"2481\"],\n \"2480\": [\"2401\", \"2404\", \"2409\", \"2460\", \"2482\"],\n \"2481\": [\"2403\", \"2404\", \"2417\", \"2418\", \"2421\", \"2422\", \"2462\", \"2463\"],\n \"2482\": [\"2404\", \"2409\", \"2417\", \"2480\", \"2505\", \"2581\"],\n \"2505\": [\"2417\", \"2418\", \"2422\", \"2482\", \"2506\", \"2510\", \"2560\", \"2581\"],\n \"2506\": [\"2422\", \"2505\", \"2510\"],\n \"2510\": [\"2505\", \"2506\", \"2523\", \"2560\", \"2582\"],\n \"2513\": [\"2514\", \"2518\", \"2521\", \"2523\", \"2580\", \"2582\"],\n \"2514\": [\"2513\", \"2518\", \"2580\", \"2583\"],\n \"2518\": [\"2513\", \"2514\", \"2521\", \"2583\"],\n \"2521\": [\"2513\", \"2518\", \"2523\", \"2584\"],\n \"2523\": [\"2510\", \"2513\", \"2521\", \"2582\", \"2584\"],\n \"2560\": [\"2505\", \"2510\", \"2580\", \"2581\", \"2582\"],\n \"2580\": [\"2513\", \"2514\", \"2560\", \"2581\", \"2582\"],\n \"2581\": [\"2482\", \"2505\", \"2560\", \"2580\", \"2582\"],\n \"2582\": [\"2510\", \"2513\", \"2523\", \"2560\", \"2580\", \"2581\"],\n \"2583\": [\"2514\", \"2518\"],\n \"2584\": [\"2521\", \"2523\"],\n});\n","import { SwedishCounty } from \"./swedish-county.js\";\nimport { SwedishMunicipality } from \"./swedish-municipality.js\";\nimport { COUNTY_ADJACENCY, MUNICIPALITY_ADJACENCY } from \"./adjacency-data.js\";\nimport { Continent } from \"./continent.js\";\nimport { Country } from \"./country.js\";\n\n/** Returns all municipalities belonging to `county`, ordered by code. */\nexport function getMunicipalities(county: SwedishCounty): readonly SwedishMunicipality[] {\n return SwedishMunicipality.all\n .filter((m) => m.countyCode === county.code)\n .slice()\n .sort((a, b) => a.code.localeCompare(b.code));\n}\n\n/** Returns all municipalities sharing a land border with `municipality`. */\nexport function getAdjacentMunicipalities(\n municipality: SwedishMunicipality,\n): readonly SwedishMunicipality[] {\n const codes = MUNICIPALITY_ADJACENCY[municipality.code];\n if (!codes) return [];\n const out: SwedishMunicipality[] = [];\n for (const c of codes) {\n const m = SwedishMunicipality.tryParse(c);\n if (m) out.push(m);\n }\n return out;\n}\n\n/** Returns all counties sharing a land border with `county`. */\nexport function getAdjacentCounties(county: SwedishCounty): readonly SwedishCounty[] {\n const codes = COUNTY_ADJACENCY[county.code];\n if (!codes) return [];\n const out: SwedishCounty[] = [];\n for (const c of codes) {\n const cn = SwedishCounty.tryParse(c);\n if (cn) out.push(cn);\n }\n return out;\n}\n\n/** Returns all countries sharing a land border with `country`. */\nexport function getBorderingCountries(country: Country): readonly Country[] {\n const codes = COUNTRY_BORDERS[country.alpha2Code];\n if (!codes) return [];\n return codes.map((code) => Country.parse(code));\n}\n\n/** Returns all countries on `continent`, ordered by English name. */\nexport function getCountries(continent: Continent): readonly Country[] {\n return Country.all\n .filter((country) => country.continent.equals(continent))\n .slice()\n .sort((a, b) => a.englishName.localeCompare(b.englishName));\n}\n\nconst COUNTRY_BORDERS: Record<string, readonly string[]> = {\n AT: [\"CH\", \"CZ\", \"DE\", \"HU\", \"IT\", \"LI\", \"SI\", \"SK\"],\n BE: [\"DE\", \"FR\", \"LU\", \"NL\"],\n CA: [\"US\"],\n CH: [\"AT\", \"FR\", \"DE\", \"IT\", \"LI\"],\n CZ: [\"AT\", \"DE\", \"PL\", \"SK\"],\n DE: [\"AT\", \"BE\", \"CH\", \"CZ\", \"DK\", \"FR\", \"LU\", \"NL\", \"PL\"],\n DK: [\"DE\"],\n ES: [\"AD\", \"FR\", \"GI\", \"MA\", \"PT\"],\n FI: [\"NO\", \"RU\", \"SE\"],\n FR: [\"AD\", \"BE\", \"DE\", \"IT\", \"LU\", \"MC\", \"ES\", \"CH\"],\n LU: [\"BE\", \"DE\", \"FR\"],\n NL: [\"BE\", \"DE\"],\n NO: [\"FI\", \"RU\", \"SE\"],\n PL: [\"BY\", \"CZ\", \"DE\", \"LT\", \"RU\", \"SK\", \"UA\"],\n RU: [\"AZ\", \"BY\", \"CN\", \"EE\", \"FI\", \"GE\", \"KZ\", \"KP\", \"LV\", \"LT\", \"MN\", \"NO\", \"PL\", \"UA\"],\n SE: [\"FI\", \"NO\"],\n US: [\"CA\", \"CU\", \"MX\"],\n};\n","import { GeoCoordinate } from \"./geo-coordinate.js\";\nimport { Language } from \"./language.js\";\nimport { SwedishCounty } from \"./swedish-county.js\";\nimport { SwedishMunicipality } from \"./swedish-municipality.js\";\n\nconst MASK_CHAR = \"*\";\n\n/** Mask a coordinate to ~11 km precision (1 decimal place visible). */\nexport function maskGeoCoordinate(coordinate: GeoCoordinate): string {\n return `${maskDecimals(coordinate.latitude.toFixed(4))}, ${maskDecimals(coordinate.longitude.toFixed(4))}`;\n}\n\n/** Mask a Swedish municipality, showing only the first character. */\nexport function maskSwedishMunicipality(m: SwedishMunicipality): string {\n return maskKeepFirst(m.displayName);\n}\n\n/** Mask a Swedish county, showing only the first character of the first word. */\nexport function maskSwedishCounty(c: SwedishCounty): string {\n const parts = c.displayName.split(\" \");\n return parts\n .map((p, i) =>\n i === 0 && p.length > 1 ? p[0] + MASK_CHAR.repeat(p.length - 1) : MASK_CHAR.repeat(p.length),\n )\n .join(\" \");\n}\n\n/** Mask a language name, showing only the first character. */\nexport function maskLanguage(l: Language): string {\n return maskKeepFirst(l.displayName);\n}\n\nfunction maskKeepFirst(name: string): string {\n if (name.length <= 1) return MASK_CHAR.repeat(name.length);\n return name[0] + MASK_CHAR.repeat(name.length - 1);\n}\n\nfunction maskDecimals(num: string): string {\n const dot = num.indexOf(\".\");\n if (dot < 0) return num;\n const head = num.slice(0, dot + 2);\n const tail = num.slice(dot + 2);\n return head + MASK_CHAR.repeat(tail.length);\n}\n","import { SwedishCounty } from \"./swedish-county.js\";\nimport { SwedishMunicipality } from \"./swedish-municipality.js\";\n\nconst SCB_URL =\n \"https://www.scb.se/hitta-statistik/regional-statistik-och-kartor/regionala-indelningar/lan-och-kommuner/\";\n\nexport function getCountyScbUrl(_county: SwedishCounty): string {\n return SCB_URL;\n}\nexport function getCountyWikipediaUrl(county: SwedishCounty): string {\n return `https://sv.wikipedia.org/wiki/${encodeURIComponent(county.localizedName.replace(/ /g, \"_\"))}`;\n}\nexport function getCountyGoogleMapsUrl(county: SwedishCounty): string {\n return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(county.localizedName)}`;\n}\nexport function getMunicipalityScbUrl(_m: SwedishMunicipality): string {\n return SCB_URL;\n}\nexport function getMunicipalityWikipediaUrl(m: SwedishMunicipality): string {\n return `https://sv.wikipedia.org/wiki/${encodeURIComponent(\n `${m.localizedName}s kommun`.replace(/ /g, \"_\"),\n )}`;\n}\nexport function getMunicipalityGoogleMapsUrl(m: SwedishMunicipality): string {\n return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(\n `${m.localizedName} kommun`,\n )}`;\n}\n"]}