@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/internal/input-sanitization.ts","../../src/primitives-defaults.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/geo-coordinate.ts","../../src/geography/language.ts","../../src/geography/continent.ts","../../src/geography/country-data.ts","../../src/geography/country-coordinates.ts","../../src/geography/country-capital.ts","../../src/geography/country-capitals.ts","../../src/geography/country-metadata.ts","../../src/geography/country.ts","../../src/validation/validation-error-reason.ts","../../src/validation/validation-issue.ts","../../src/validation/validation-result.ts","../../src/web/email-address.ts","../../src/web/url.ts"],"names":["MAX_INPUT_LENGTH","BY_KEY","BY_NAME","SCAN_PATTERN","tldCountryMapCache","getTldCountryMap"],"mappings":"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AAK,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,E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","file":"index.cjs","sourcesContent":["/**\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","/**\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","/**\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 { 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","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 { 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 { 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","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","/**\n * Describes why a value failed validation. Shared across all types that support\n * the `validate` method. Not every reason applies to every type.\n *\n * Maps 1:1 to the .NET `ValidationErrorReason` enum.\n */\nexport const ValidationErrorReason = {\n // --- Common ---\n InputIsEmpty: \"InputIsEmpty\",\n InputTooLong: \"InputTooLong\",\n InputTooShort: \"InputTooShort\",\n InvalidLength: \"InvalidLength\",\n InvalidFormat: \"InvalidFormat\",\n InvalidCharacters: \"InvalidCharacters\",\n InvalidCheckDigit: \"InvalidCheckDigit\",\n\n // --- Banking / clearing ---\n UnknownClearingRange: \"UnknownClearingRange\",\n InvalidSwedbankFormat: \"InvalidSwedbankFormat\",\n InvalidAccountLengthForBank: \"InvalidAccountLengthForBank\",\n InvalidClearingNumber: \"InvalidClearingNumber\",\n\n // --- Identity / organization ---\n InvalidDate: \"InvalidDate\",\n InvalidPrefix: \"InvalidPrefix\",\n InvalidEntityPattern: \"InvalidEntityPattern\",\n\n // --- International / country ---\n UnknownCountryCode: \"UnknownCountryCode\",\n InvalidCountryPrefix: \"InvalidCountryPrefix\",\n InvalidLengthForCountry: \"InvalidLengthForCountry\",\n\n // --- OCR ---\n InvalidLengthDigit: \"InvalidLengthDigit\",\n\n // --- Email ---\n MissingAtSign: \"MissingAtSign\",\n InvalidLocalPart: \"InvalidLocalPart\",\n InvalidDomain: \"InvalidDomain\",\n} as const;\n\nexport type ValidationErrorReason =\n (typeof ValidationErrorReason)[keyof typeof ValidationErrorReason];\n","import { PrimitivesDefaults } from \"../primitives-defaults.js\";\nimport { ValidationErrorReason } from \"./validation-error-reason.js\";\n\n/**\n * A single validation problem detected during `validate`, carrying a\n * machine-readable {@link reason} and human-readable descriptions in English\n * and the current locale.\n */\nexport class ValidationIssue {\n readonly reason: ValidationErrorReason;\n readonly englishDescription: string;\n readonly localizedDescription: string;\n\n constructor(\n reason: ValidationErrorReason,\n englishDescription: string,\n localizedDescription: string,\n ) {\n this.reason = reason;\n this.englishDescription = englishDescription;\n this.localizedDescription = localizedDescription;\n }\n\n /**\n * Returns {@link localizedDescription} when\n * {@link PrimitivesDefaults.useLocalizedDisplayNames} is `true`, otherwise\n * {@link englishDescription}.\n */\n get description(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames\n ? this.localizedDescription\n : this.englishDescription;\n }\n}\n","import { ValidationIssue } from \"./validation-issue.js\";\nimport { ValidationErrorReason } from \"./validation-error-reason.js\";\n\n/**\n * The outcome of a `validate` call, carrying the original input, a validity\n * flag, and zero or more {@link ValidationIssue} entries that explain why the\n * input is invalid.\n */\nexport class ValidationResult {\n readonly rawInput: string | null;\n readonly isValid: boolean;\n readonly issues: readonly ValidationIssue[];\n\n /** @internal — use `validResult` / `invalidResult` factories. */\n constructor(\n rawInput: string | null | undefined,\n isValid: boolean,\n issues: readonly ValidationIssue[],\n ) {\n this.rawInput = rawInput ?? null;\n this.isValid = isValid;\n this.issues = Object.freeze([...issues]);\n }\n}\n\n/** @internal Factory for `validate` implementations. Not part of the public API. */\nexport function validResult(rawInput: string | null | undefined): ValidationResult {\n return new ValidationResult(rawInput, true, []);\n}\n\n/** @internal Factory for `validate` implementations. Not part of the public API. */\nexport function invalidResult(\n rawInput: string | null | undefined,\n reasonOrIssues: ValidationErrorReason | readonly ValidationIssue[],\n englishDescription?: string,\n localizedDescription?: string,\n): ValidationResult {\n if (typeof reasonOrIssues === \"string\") {\n if (englishDescription === undefined || localizedDescription === undefined) {\n throw new Error(\"invalidResult requires both english and localized descriptions\");\n }\n return new ValidationResult(rawInput, false, [\n new ValidationIssue(reasonOrIssues, englishDescription, localizedDescription),\n ]);\n }\n return new ValidationResult(rawInput, false, reasonOrIssues);\n}\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\nimport { Country } from \"../geography/country.js\";\nimport { ValidationErrorReason, ValidationResult } from \"../validation/index.js\";\nimport { invalidResult, validResult } from \"../validation/validation-result.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\";\n\n/**\n * Identifies the email service behind a domain when it belongs to a well-known\n * public (consumer/free) email provider.\n */\nexport const PublicEmailProvider = {\n Unknown: \"Unknown\",\n\n Gmail: \"Gmail\",\n Outlook: \"Outlook\",\n Yahoo: \"Yahoo\",\n ICloud: \"ICloud\",\n ProtonMail: \"ProtonMail\",\n Aol: \"Aol\",\n Gmx: \"Gmx\",\n MailCom: \"MailCom\",\n Yandex: \"Yandex\",\n Zoho: \"Zoho\",\n Tuta: \"Tuta\",\n Hey: \"Hey\",\n DuckDuckGoEmail: \"DuckDuckGoEmail\",\n SimpleLogin: \"SimpleLogin\",\n\n WebDe: \"WebDe\",\n MailRu: \"MailRu\",\n WirtualnaPolska: \"WirtualnaPolska\",\n Onet: \"Onet\",\n Interia: \"Interia\",\n Tlen: \"Tlen\",\n Seznam: \"Seznam\",\n Libero: \"Libero\",\n FreemailHu: \"FreemailHu\",\n Abv: \"Abv\",\n InboxLv: \"InboxLv\",\n UkrNet: \"UkrNet\",\n Naver: \"Naver\",\n\n Telia: \"Telia\",\n Tele2: \"Tele2\",\n Comhem: \"Comhem\",\n Bredbandsbolaget: \"Bredbandsbolaget\",\n Bredband2: \"Bredband2\",\n Ownit: \"Ownit\",\n Spray: \"Spray\",\n Passagen: \"Passagen\",\n Bahnhof: \"Bahnhof\",\n Glocalnet: \"Glocalnet\",\n\n OnlineNo: \"OnlineNo\",\n Kolumbus: \"Kolumbus\",\n Aland: \"Aland\",\n} as const;\n\nexport type PublicEmailProvider = (typeof PublicEmailProvider)[keyof typeof PublicEmailProvider];\n\nconst MAX_INPUT_LENGTH = 320;\n\nconst PROVIDER_DOMAINS: Record<string, PublicEmailProvider> = {\n // International\n \"gmail.com\": PublicEmailProvider.Gmail,\n \"googlemail.com\": PublicEmailProvider.Gmail,\n\n \"outlook.com\": PublicEmailProvider.Outlook,\n \"outlook.se\": PublicEmailProvider.Outlook,\n \"outlook.fr\": PublicEmailProvider.Outlook,\n \"outlook.co\": PublicEmailProvider.Outlook,\n \"hotmail.com\": PublicEmailProvider.Outlook,\n \"hotmail.se\": PublicEmailProvider.Outlook,\n \"hotmail.co.uk\": PublicEmailProvider.Outlook,\n \"hotmail.fr\": PublicEmailProvider.Outlook,\n \"hotmail.de\": PublicEmailProvider.Outlook,\n \"hotmail.no\": PublicEmailProvider.Outlook,\n \"hotmail.dk\": PublicEmailProvider.Outlook,\n \"hotmail.fi\": PublicEmailProvider.Outlook,\n \"hotmail.it\": PublicEmailProvider.Outlook,\n \"hotmail.es\": PublicEmailProvider.Outlook,\n \"live.com\": PublicEmailProvider.Outlook,\n \"live.se\": PublicEmailProvider.Outlook,\n \"live.fr\": PublicEmailProvider.Outlook,\n \"live.dk\": PublicEmailProvider.Outlook,\n \"live.co.uk\": PublicEmailProvider.Outlook,\n \"live.it\": PublicEmailProvider.Outlook,\n \"live.no\": PublicEmailProvider.Outlook,\n \"msn.com\": PublicEmailProvider.Outlook,\n \"windowslive.com\": PublicEmailProvider.Outlook,\n\n \"yahoo.com\": PublicEmailProvider.Yahoo,\n \"yahoo.se\": PublicEmailProvider.Yahoo,\n \"yahoo.co.uk\": PublicEmailProvider.Yahoo,\n \"yahoo.fr\": PublicEmailProvider.Yahoo,\n \"yahoo.de\": PublicEmailProvider.Yahoo,\n \"yahoo.it\": PublicEmailProvider.Yahoo,\n \"yahoo.es\": PublicEmailProvider.Yahoo,\n \"yahoo.gr\": PublicEmailProvider.Yahoo,\n \"yahoo.ro\": PublicEmailProvider.Yahoo,\n \"yahoo.co\": PublicEmailProvider.Yahoo,\n \"yahoo.no\": PublicEmailProvider.Yahoo,\n \"ymail.com\": PublicEmailProvider.Yahoo,\n \"rocketmail.com\": PublicEmailProvider.Yahoo,\n\n \"icloud.com\": PublicEmailProvider.ICloud,\n \"me.com\": PublicEmailProvider.ICloud,\n \"mac.com\": PublicEmailProvider.ICloud,\n\n \"protonmail.com\": PublicEmailProvider.ProtonMail,\n \"protonmail.ch\": PublicEmailProvider.ProtonMail,\n \"proton.me\": PublicEmailProvider.ProtonMail,\n \"pm.me\": PublicEmailProvider.ProtonMail,\n\n \"aol.com\": PublicEmailProvider.Aol,\n \"aol.se\": PublicEmailProvider.Aol,\n\n \"gmx.com\": PublicEmailProvider.Gmx,\n \"gmx.de\": PublicEmailProvider.Gmx,\n \"gmx.net\": PublicEmailProvider.Gmx,\n \"gmx.at\": PublicEmailProvider.Gmx,\n\n \"mail.com\": PublicEmailProvider.MailCom,\n \"email.com\": PublicEmailProvider.MailCom,\n \"post.com\": PublicEmailProvider.MailCom,\n \"europe.com\": PublicEmailProvider.MailCom,\n \"iname.com\": PublicEmailProvider.MailCom,\n\n \"yandex.com\": PublicEmailProvider.Yandex,\n \"yandex.ru\": PublicEmailProvider.Yandex,\n\n \"zoho.com\": PublicEmailProvider.Zoho,\n\n \"tuta.io\": PublicEmailProvider.Tuta,\n \"tutanota.com\": PublicEmailProvider.Tuta,\n\n \"hey.com\": PublicEmailProvider.Hey,\n \"duck.com\": PublicEmailProvider.DuckDuckGoEmail,\n \"simplelogin.com\": PublicEmailProvider.SimpleLogin,\n\n // Regional (Europe)\n \"web.de\": PublicEmailProvider.WebDe,\n \"mail.ru\": PublicEmailProvider.MailRu,\n\n \"wp.pl\": PublicEmailProvider.WirtualnaPolska,\n \"vp.pl\": PublicEmailProvider.WirtualnaPolska,\n\n \"onet.pl\": PublicEmailProvider.Onet,\n \"onet.eu\": PublicEmailProvider.Onet,\n \"op.pl\": PublicEmailProvider.Onet,\n \"o2.pl\": PublicEmailProvider.Onet,\n \"poczta.onet.pl\": PublicEmailProvider.Onet,\n\n \"interia.pl\": PublicEmailProvider.Interia,\n \"interia.eu\": PublicEmailProvider.Interia,\n\n \"tlen.pl\": PublicEmailProvider.Tlen,\n\n \"seznam.cz\": PublicEmailProvider.Seznam,\n \"libero.it\": PublicEmailProvider.Libero,\n \"freemail.hu\": PublicEmailProvider.FreemailHu,\n \"abv.bg\": PublicEmailProvider.Abv,\n \"inbox.lv\": PublicEmailProvider.InboxLv,\n \"ukr.net\": PublicEmailProvider.UkrNet,\n \"naver.com\": PublicEmailProvider.Naver,\n\n // Swedish ISP / portal email\n \"telia.com\": PublicEmailProvider.Telia,\n \"telia.se\": PublicEmailProvider.Telia,\n \"home.se\": PublicEmailProvider.Telia,\n \"swipnet.se\": PublicEmailProvider.Telia,\n\n \"tele2.se\": PublicEmailProvider.Tele2,\n \"comhem.se\": PublicEmailProvider.Comhem,\n\n \"bredband.net\": PublicEmailProvider.Bredbandsbolaget,\n \"bredbandsbolaget.se\": PublicEmailProvider.Bredbandsbolaget,\n\n \"bredband2.com\": PublicEmailProvider.Bredband2,\n \"ownit.nu\": PublicEmailProvider.Ownit,\n \"mail.se\": PublicEmailProvider.Spray,\n \"spray.se\": PublicEmailProvider.Spray,\n \"passagen.se\": PublicEmailProvider.Passagen,\n \"bahnhof.se\": PublicEmailProvider.Bahnhof,\n \"glocalnet.net\": PublicEmailProvider.Glocalnet,\n\n // Nordic ISP\n \"online.no\": PublicEmailProvider.OnlineNo,\n \"kolumbus.fi\": PublicEmailProvider.Kolumbus,\n \"aland.net\": PublicEmailProvider.Aland,\n};\n\nconst DOMAIN_CORRECTIONS: Record<string, string> = {\n // Gmail misspellings\n \"gnail.com\": \"gmail.com\",\n \"gamil.com\": \"gmail.com\",\n \"gmai.com\": \"gmail.com\",\n \"gmil.com\": \"gmail.com\",\n \"gmsil.com\": \"gmail.com\",\n \"gmal.com\": \"gmail.com\",\n \"gmaill.com\": \"gmail.com\",\n \"gamail.com\": \"gmail.com\",\n \"gmail.con\": \"gmail.com\",\n \"gmail.vom\": \"gmail.com\",\n \"gmail.cim\": \"gmail.com\",\n \"gmail.comi\": \"gmail.com\",\n \"gmail.se\": \"gmail.com\",\n \"gmail.co\": \"gmail.com\",\n\n // Hotmail / Outlook misspellings\n \"hotmai.com\": \"hotmail.com\",\n \"hotmil.com\": \"hotmail.com\",\n \"hotmsil.com\": \"hotmail.com\",\n \"hotmal.com\": \"hotmail.com\",\n \"homail.com\": \"hotmail.com\",\n \"hotnail.com\": \"hotmail.com\",\n \"hitmail.com\": \"hotmail.com\",\n \"hptmail.com\": \"hotmail.com\",\n \"hmail.com\": \"hotmail.com\",\n \"hotmail.con\": \"hotmail.com\",\n \"hotmail.cpm\": \"hotmail.com\",\n \"hotmail.co\": \"hotmail.com\",\n \"hotmail.vom\": \"hotmail.com\",\n \"hotmail.cim\": \"hotmail.com\",\n \"hotmail.comm\": \"hotmail.com\",\n \"outlook.con\": \"outlook.com\",\n \"putlook.com\": \"outlook.com\",\n\n // iCloud misspellings\n \"icloude.com\": \"icloud.com\",\n \"icloud.se\": \"icloud.com\",\n \"icloud.co\": \"icloud.com\",\n\n // Onet misspellings\n \"02.pl\": \"o2.pl\",\n};\n\nlet tldCountryMapCache: Map<string, Country> | null = null;\nfunction getTldCountryMap(): Map<string, Country> {\n if (tldCountryMapCache) return tldCountryMapCache;\n const m = new Map<string, Country>();\n for (const c of Country.all) {\n if (c.topLevelDomain) m.set(c.topLevelDomain.toLowerCase(), c);\n }\n tldCountryMapCache = m;\n return m;\n}\n\nconst EMAIL_PATTERN =\n /^(?!\\.)[a-zA-Z0-9_](?!.*\\.\\.)(?:[a-zA-Z0-9._%+-]*[a-zA-Z0-9_%+-])?@(?!-)[a-zA-Z0-9-]+(?<!-)(?:\\.(?!-)[a-zA-Z0-9-]+(?<!-))*\\.[a-zA-Z]{2,}$/;\n\nconst SCAN_PATTERN =\n /(?<![\\w.@])(?!\\.)[a-zA-Z0-9](?:[a-zA-Z0-9._%+-]*[a-zA-Z0-9_%+-])?@(?!-)[a-zA-Z0-9-]+(?:\\.(?!-)[a-zA-Z0-9-]+)*\\.[a-zA-Z]{2,}(?![\\w@])/gu;\n\n/** Convert a Unicode domain to its ASCII (Punycode) form. Returns null if invalid. */\nfunction domainToAscii(domain: string): string | null {\n try {\n const ascii = new URL(\"http://\" + domain).hostname;\n return ascii;\n } catch {\n return null;\n }\n}\n\n/**\n * An email address (e-postadress). Normalization trims whitespace and lowercases the entire\n * address — including the local part — as a pragmatic interoperability and deduplication choice.\n */\nexport class EmailAddress {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Email Address\",\n localizedName: \"E-postadress\",\n emoji: \"\\u{1F4E7}\",\n sources: Object.freeze([\n \"https://datatracker.ietf.org/doc/html/rfc5321#section-2.3.11\",\n \"https://datatracker.ietf.org/doc/html/rfc5321\",\n ]),\n });\n\n readonly value: string;\n readonly localPart: string;\n readonly domain: string;\n readonly domainAscii: string;\n readonly topLevelDomain: string;\n readonly country: Country | null;\n readonly provider: PublicEmailProvider | null;\n readonly originalDomain: string | null;\n\n get isPublicEmailProvider(): boolean {\n return this.provider != null;\n }\n\n get isInternationalizedDomain(): boolean {\n return this.domain !== this.domainAscii;\n }\n\n get wasCorrected(): boolean {\n return this.originalDomain != null;\n }\n\n private constructor(\n value: string,\n localPart: string,\n domain: string,\n domainAscii: string,\n tld: string,\n country: Country | null,\n provider: PublicEmailProvider | null,\n originalDomain: string | null,\n ) {\n this.value = value;\n this.localPart = localPart;\n this.domain = domain;\n this.domainAscii = domainAscii;\n this.topLevelDomain = tld;\n this.country = country;\n this.provider = provider;\n this.originalDomain = originalDomain;\n }\n\n /**\n * Attempts to parse and normalize an email address.\n *\n * When `tryCorrectTypos` is `true`, common domain misspellings such as\n * `gmail.con`, `gnail.com`, or `hotmil.com` are corrected automatically.\n * The original domain is preserved in `originalDomain`. Typo correction is\n * opt-in and should only be used when silent correction is acceptable.\n */\n static tryParse(\n input: string | null | undefined,\n options?: { tryCorrectTypos?: boolean },\n ): EmailAddress | null {\n if (input == null || input.trim() === \"\") return null;\n\n let sanitized = sanitizeInput(input);\n\n const ltIndex = sanitized.indexOf(\"<\");\n if (ltIndex >= 0) {\n const gtIndex = sanitized.indexOf(\">\", ltIndex + 1);\n if (gtIndex > ltIndex) sanitized = sanitized.slice(ltIndex + 1, gtIndex);\n }\n\n sanitized = sanitized.trim();\n if (sanitized.toLowerCase().startsWith(\"mailto:\")) {\n sanitized = sanitized.slice(7);\n const qIndex = sanitized.indexOf(\"?\");\n if (qIndex >= 0) sanitized = sanitized.slice(0, qIndex);\n }\n\n let normalized = sanitized.replace(/ /g, \"\").toLowerCase();\n if (normalized.endsWith(\".\")) normalized = normalized.slice(0, -1);\n\n if (normalized.length === 0 || normalized.length > MAX_INPUT_LENGTH) return null;\n\n const atIndex = normalized.lastIndexOf(\"@\");\n if (atIndex <= 0 || atIndex === normalized.length - 1) return null;\n\n const localPart = normalized.slice(0, atIndex);\n let domain = normalized.slice(atIndex + 1);\n\n let domainForValidation = domain;\n if (hasNonAscii(domain)) {\n // Reject if non-ASCII characters include non-letters\n for (const ch of domain) {\n const cp = ch.codePointAt(0)!;\n if (cp > 127 && !isUnicodeLetter(ch)) return null;\n }\n const ascii = domainToAscii(domain);\n if (ascii == null) return null;\n domainForValidation = ascii;\n }\n\n const emailForValidation = `${localPart}@${domainForValidation}`;\n if (!EMAIL_PATTERN.test(emailForValidation)) return null;\n\n let originalDomain: string | null = null;\n if (options?.tryCorrectTypos === true) {\n const corrected = DOMAIN_CORRECTIONS[domain];\n if (corrected != null) {\n originalDomain = domain;\n domain = corrected;\n normalized = `${localPart}@${domain}`;\n domainForValidation = domain;\n }\n }\n\n const lastDot = domain.lastIndexOf(\".\");\n const tld = lastDot >= 0 ? domain.slice(lastDot + 1) : \"\";\n\n const country = tld.length > 0 ? (getTldCountryMap().get(\".\" + tld) ?? null) : null;\n const provider = PROVIDER_DOMAINS[domain] ?? null;\n\n return new EmailAddress(\n normalized,\n localPart,\n domain,\n domainForValidation,\n tld,\n country,\n provider,\n originalDomain,\n );\n }\n\n static parse(input: string, options?: { tryCorrectTypos?: boolean }): EmailAddress {\n const r = EmailAddress.tryParse(input, options);\n if (r === null) throw new Error(\"Invalid email address.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return EmailAddress.tryParse(input) !== null;\n }\n\n /**\n * Returns a `ValidationResult` describing why the input is invalid,\n * or a valid result when the input is well-formed.\n */\n static validate(input: string | null | undefined): ValidationResult {\n if (input == null || input.trim() === \"\") {\n return invalidResult(\n input,\n ValidationErrorReason.InputIsEmpty,\n \"Input is empty or whitespace.\",\n \"Värdet är tomt.\",\n );\n }\n\n let sanitized = sanitizeInput(input);\n\n const ltIndex = sanitized.indexOf(\"<\");\n if (ltIndex >= 0) {\n const gtIndex = sanitized.indexOf(\">\", ltIndex + 1);\n if (gtIndex > ltIndex) sanitized = sanitized.slice(ltIndex + 1, gtIndex);\n }\n\n sanitized = sanitized.trim();\n if (sanitized.toLowerCase().startsWith(\"mailto:\")) {\n sanitized = sanitized.slice(7);\n const qIndex = sanitized.indexOf(\"?\");\n if (qIndex >= 0) sanitized = sanitized.slice(0, qIndex);\n }\n\n let normalized = sanitized.replace(/ /g, \"\").toLowerCase();\n if (normalized.endsWith(\".\")) normalized = normalized.slice(0, -1);\n\n if (normalized.length === 0 || normalized.length > MAX_INPUT_LENGTH) {\n return invalidResult(\n input,\n ValidationErrorReason.InputTooLong,\n \"Email address is too long.\",\n \"E-postadressen är för lång.\",\n );\n }\n\n const atIndex = normalized.lastIndexOf(\"@\");\n if (atIndex <= 0 || atIndex === normalized.length - 1) {\n return invalidResult(\n input,\n ValidationErrorReason.MissingAtSign,\n \"Email address must contain an @ sign with text before and after.\",\n \"E-postadressen måste innehålla ett @-tecken med text före och efter.\",\n );\n }\n\n const localPart = normalized.slice(0, atIndex);\n const domain = normalized.slice(atIndex + 1);\n let domainForValidation = domain;\n\n if (hasNonAscii(domain)) {\n for (const ch of domain) {\n const cp = ch.codePointAt(0)!;\n if (cp > 127 && !isUnicodeLetter(ch)) {\n return invalidResult(\n input,\n ValidationErrorReason.InvalidDomain,\n \"Email address has an invalid domain.\",\n \"E-postadressen har en ogiltig domän.\",\n );\n }\n }\n const ascii = domainToAscii(domain);\n if (ascii == null) {\n return invalidResult(\n input,\n ValidationErrorReason.InvalidDomain,\n \"Email address has an invalid domain.\",\n \"E-postadressen har en ogiltig domän.\",\n );\n }\n domainForValidation = ascii;\n }\n\n const emailForValidation = `${localPart}@${domainForValidation}`;\n if (!EMAIL_PATTERN.test(emailForValidation)) {\n return invalidResult(\n input,\n ValidationErrorReason.InvalidFormat,\n \"Invalid email address format.\",\n \"Ogiltigt format för e-postadress.\",\n );\n }\n\n return validResult(input);\n }\n\n /**\n * Returns the normalized email in lowercase, e.g. `user@example.com`.\n * Returns `null` for invalid or empty input.\n */\n static format(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean; tryCorrectTypos?: boolean },\n ): string | null {\n const r = EmailAddress.tryParse(\n input,\n options?.tryCorrectTypos != null ? { tryCorrectTypos: options.tryCorrectTypos } : undefined,\n );\n if (r) return r.value;\n if (options?.fallbackToTrimmedInputWhenInvalid && input != null && input.trim() !== \"\") {\n return input.trim();\n }\n return null;\n }\n\n /** Returns the normalized email, e.g. `user@example.com`, or `null` if invalid. */\n static normalize(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean; tryCorrectTypos?: boolean },\n ): string | null {\n return EmailAddress.format(input, options);\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && EmailAddress.normalize(input) === input;\n }\n\n /** Returns the normalized email address, e.g. `user@example.com`. */\n toNormalizedString(): string {\n return this.value;\n }\n\n /** Returns the normalized email address, e.g. `user@example.com`. */\n toString(): string {\n return this.value;\n }\n\n /**\n * Returns the email with the domain in ASCII (Punycode) form, e.g.\n * `user@xn--rneholm-b1a.com`. Same as `toString()` for ASCII domains.\n */\n toAsciiString(): string {\n return this.isInternationalizedDomain ? `${this.localPart}@${this.domainAscii}` : this.value;\n }\n\n /**\n * Scans unstructured text for potential email addresses. Heuristic; may include false positives.\n */\n static findCandidatesInText(text: string): readonly TextCandidate<EmailAddress>[] {\n if (!text) return [];\n const out: TextCandidate<EmailAddress>[] = [];\n SCAN_PATTERN.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = SCAN_PATTERN.exec(text)) !== null) {\n const r = EmailAddress.tryParse(m[0]);\n if (!r) continue;\n out.push(\n new TextCandidate<EmailAddress>({\n startIndex: m.index,\n length: m[0].length,\n originalText: m[0],\n typeName: \"EmailAddress\",\n category: TextCandidateCategory.Contact,\n normalizedForm: r.toNormalizedString(),\n formattedForm: r.toString(),\n maskedForm: maskEmailAddressInternal(r, false),\n confidence: TextMatchConfidence.High,\n value: r,\n }),\n );\n }\n return out;\n }\n\n equals(other: EmailAddress | null | undefined): boolean {\n return other != null && this.value === other.value;\n }\n\n compareTo(other: EmailAddress | null | undefined): number {\n if (other == null) return 1;\n return this.value < other.value ? -1 : this.value > other.value ? 1 : 0;\n }\n}\n\nfunction hasNonAscii(s: string): boolean {\n for (let i = 0; i < s.length; i++) {\n if (s.charCodeAt(i) > 127) return true;\n }\n return false;\n}\n\nconst UNICODE_LETTER = /\\p{L}/u;\nfunction isUnicodeLetter(ch: string): boolean {\n return UNICODE_LETTER.test(ch);\n}\n\n/**\n * Returns a masked email showing the first character of the local part and the full domain,\n * e.g. `peter@example.com` → `p***@example.com`.\n * Set `maskDomain` to `true` to also mask the domain label: `p***@e***.com`.\n */\nexport function maskEmailAddress(email: EmailAddress, options?: { maskDomain?: boolean }): string {\n return maskEmailAddressInternal(email, options?.maskDomain === true);\n}\n\nfunction maskEmailAddressInternal(email: EmailAddress, maskDomain: boolean): string {\n const local = email.localPart;\n const maskedLocal =\n local.length <= 1 ? local : local[0] + \"*\".repeat(Math.min(local.length - 1, 3));\n\n if (maskDomain) {\n const domain = email.domain;\n const firstDot = domain.indexOf(\".\");\n if (firstDot > 0) {\n const label = domain.slice(0, firstDot);\n const suffix = domain.slice(firstDot);\n const maskedDomain =\n label.length <= 1 ? label : label[0] + \"*\".repeat(Math.min(label.length - 1, 3));\n return `${maskedLocal}@${maskedDomain}${suffix}`;\n }\n }\n\n return `${maskedLocal}@${email.domain}`;\n}\n\n/** Returns a `mailto:` URI, e.g. `mailto:info@example.com`. */\nexport function toMailtoUri(email: EmailAddress): string {\n return `mailto:${email.toNormalizedString()}`;\n}\n","import { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\nimport { Country } from \"../geography/country.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\";\n\nconst MAX_INPUT_LENGTH = 2048;\n\nconst RESERVED_TLDS = new Set([\"test\", \"example\", \"invalid\", \"localhost\"]);\nconst RESERVED_DOMAINS = new Set([\"example.com\", \"example.org\", \"example.net\"]);\n\nconst DEFAULT_PORTS: Record<string, number> = {\n http: 80,\n https: 443,\n ftp: 21,\n ws: 80,\n wss: 443,\n gopher: 70,\n};\n\nlet tldCountryMapCache: Map<string, Country> | null = null;\nfunction getTldCountryMap(): Map<string, Country> {\n if (tldCountryMapCache) return tldCountryMapCache;\n const m = new Map<string, Country>();\n for (const c of Country.all) {\n if (c.topLevelDomain) m.set(c.topLevelDomain.toLowerCase(), c);\n }\n tldCountryMapCache = m;\n return m;\n}\n\nconst SCAN_PATTERN =\n /(?:[a-zA-Z][\\w+.-]*:\\/\\/[^\\s<>\"']+|(?:mailto|tel|sms|callto):[^\\s<>\"']+|\\bwww\\.[^\\s<>\"']+)/gi;\n\nconst IPV4 = /^(?:\\d{1,3}\\.){3}\\d{1,3}$/;\nconst ABSOLUTE_URI = /^([a-zA-Z][a-zA-Z0-9+\\-.]*):/;\nconst HIERARCHICAL_RE = /^([a-zA-Z][a-zA-Z0-9+\\-.]*):\\/\\//;\n\ninterface UrlParts {\n value: string;\n scheme: string;\n host: string;\n port: number | null;\n path: string;\n query: string | null;\n fragment: string | null;\n tld: string;\n country: Country | null;\n isExample: boolean;\n isIp: boolean;\n}\n\n/**\n * A URL or URI (`webbadress`). Accepts any valid URI scheme — `http`, `https`,\n * `mailto`, `tel`, `ssh`, custom schemes, etc. Bare domains like `example.com`\n * are auto-prefixed with `https://`. Reserved example/test domains per\n * RFC 2606 / RFC 6761 are flagged via `isExampleDomain`.\n */\nexport class Url {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"URL\",\n localizedName: \"Webbadress\",\n emoji: \"\\u{1F517}\",\n sources: Object.freeze([\n \"https://datatracker.ietf.org/doc/html/rfc3986\",\n \"https://datatracker.ietf.org/doc/html/rfc2606\",\n \"https://datatracker.ietf.org/doc/html/rfc6761\",\n ]),\n });\n\n /** The normalized URL string, e.g. `https://www.example.com/path`. */\n readonly value: string;\n /** The URI scheme without `://`, e.g. `https`. */\n readonly scheme: string;\n /** The full hostname, e.g. `www.example.com`. Empty for non-hierarchical URIs. */\n readonly host: string;\n /** Explicit port, or `null` when the default port for the scheme is used. */\n readonly port: number | null;\n /** The path component, e.g. `/path/to/page`. Root paths are `/`. */\n readonly path: string;\n /** Query string without `?`, or `null` when absent. */\n readonly query: string | null;\n /** Fragment without `#`, or `null` when absent. */\n readonly fragment: string | null;\n /** Top-level domain without the dot, e.g. `com`, `se`. */\n readonly topLevelDomain: string;\n /** Country associated with a country-code TLD, or `null` for generic TLDs. */\n readonly country: Country | null;\n /** True when the scheme is `https`. */\n readonly isSecure: boolean;\n /** True when the host is a reserved example/test domain (RFC 2606 / RFC 6761). */\n readonly isExampleDomain: boolean;\n /** True when the host is an IP address. */\n readonly isIpAddress: boolean;\n\n private constructor(p: UrlParts) {\n this.value = p.value;\n this.scheme = p.scheme;\n this.host = p.host;\n this.port = p.port;\n this.path = p.path;\n this.query = p.query;\n this.fragment = p.fragment;\n this.topLevelDomain = p.tld;\n this.country = p.country;\n this.isSecure = p.scheme === \"https\";\n this.isExampleDomain = p.isExample;\n this.isIpAddress = p.isIp;\n }\n\n static tryParse(input: string | null | undefined): Url | null {\n if (input == null || input.trim() === \"\") return null;\n\n const trimmed = sanitizeInput(input).trim();\n if (trimmed.length === 0 || trimmed.length > MAX_INPUT_LENGTH) return null;\n\n let parsed = Url.#tryParseAbsolute(trimmed);\n if (parsed == null) {\n if (!trimmed.includes(\".\")) return null;\n parsed = Url.#tryParseAbsolute(\"https://\" + trimmed);\n if (parsed == null) return null;\n }\n\n return parsed;\n }\n\n static parse(input: string): Url {\n const r = Url.tryParse(input);\n if (r === null) throw new Error(\"Invalid URL.\");\n return r;\n }\n\n /**\n * The standard `URL` view of this value, for interop with `fetch` and other\n * web APIs. The .NET port exposes the same thing as `ToUri()`.\n */\n toUrl(): URL {\n return new URL(this.value);\n }\n\n /** Creates a {@link Url} from a standard `URL`. Throws when it cannot be represented. */\n static fromUrl(url: URL): Url {\n const r = Url.tryParse(url.href);\n if (r === null) throw new Error(\"Invalid URL.\");\n return r;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return Url.tryParse(input) !== null;\n }\n\n static format(\n input: string | null | undefined,\n options?: { fallbackToTrimmedInputWhenInvalid?: boolean },\n ): string | null {\n const r = Url.tryParse(input);\n if (r) return r.value;\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 return Url.format(input, options);\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && Url.normalize(input) === input;\n }\n\n /** Returns the normalized URL, e.g. `https://www.example.com/path`. */\n toNormalizedString(): string {\n return this.value;\n }\n\n /** Returns the normalized URL, e.g. `https://www.example.com/path`. */\n toString(): string {\n return this.value;\n }\n\n /**\n * Scans unstructured text for potential URLs. Heuristic — may include false positives.\n */\n static findCandidatesInText(text: string): readonly TextCandidate<Url>[] {\n if (!text) return [];\n const out: TextCandidate<Url>[] = [];\n SCAN_PATTERN.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = SCAN_PATTERN.exec(text)) !== null) {\n const candidate = trimTrailingPunctuation(m[0]);\n const url = Url.tryParse(candidate);\n if (!url) continue;\n out.push(\n new TextCandidate<Url>({\n startIndex: m.index,\n length: candidate.length,\n originalText: candidate,\n typeName: \"Url\",\n category: TextCandidateCategory.Contact,\n normalizedForm: url.toNormalizedString(),\n formattedForm: url.toString(),\n maskedForm: maskUrl(url),\n confidence: TextMatchConfidence.High,\n value: url,\n }),\n );\n }\n return out;\n }\n\n equals(other: Url | null | undefined): boolean {\n return other != null && this.value === other.value;\n }\n\n compareTo(other: Url | null | undefined): number {\n if (other == null) return 1;\n return this.value < other.value ? -1 : this.value > other.value ? 1 : 0;\n }\n\n static #tryParseAbsolute(input: string): Url | null {\n const m = input.match(ABSOLUTE_URI);\n if (!m) return null;\n const scheme = m[1]!.toLowerCase();\n if (scheme.includes(\".\")) return null;\n\n const isHierarchical = HIERARCHICAL_RE.test(input);\n if (isHierarchical) {\n return Url.#parseHierarchical(input, scheme);\n }\n return Url.#parseNonHierarchical(input, scheme);\n }\n\n static #parseHierarchical(input: string, scheme: string): Url | null {\n let u: URL;\n try {\n u = new URL(input);\n } catch {\n return null;\n }\n\n const rawHost = u.hostname;\n const isIp = rawHost.length > 0 && (IPV4.test(rawHost) || rawHost.startsWith(\"[\"));\n let tld = \"\";\n if (!isIp && rawHost.length > 0) {\n const lastDot = rawHost.lastIndexOf(\".\");\n tld = lastDot >= 0 ? rawHost.slice(lastDot + 1) : \"\";\n }\n\n let country: Country | null = null;\n if (!isIp && tld.length > 0) {\n country = getTldCountryMap().get(\".\" + tld) ?? null;\n }\n\n const isExample =\n !isIp &&\n rawHost.length > 0 &&\n (RESERVED_TLDS.has(tld.toLowerCase()) ||\n RESERVED_DOMAINS.has(rawHost.toLowerCase()) ||\n rawHost.toLowerCase().endsWith(\".example.com\") ||\n rawHost.toLowerCase().endsWith(\".example.org\") ||\n rawHost.toLowerCase().endsWith(\".example.net\"));\n\n let port: number | null = null;\n if (u.port !== \"\") port = parseInt(u.port, 10);\n if (port != null && DEFAULT_PORTS[scheme] === port) port = null;\n\n const normalized = u.href;\n const path = u.pathname;\n const query = u.search.length > 0 ? u.search.slice(1) : null;\n const fragment = u.hash.length > 0 ? u.hash.slice(1) : null;\n\n return new Url({\n value: normalized,\n scheme,\n host: rawHost,\n port,\n path: path.length === 0 ? \"/\" : path,\n query,\n fragment,\n tld,\n country,\n isExample,\n isIp,\n });\n }\n\n static #parseNonHierarchical(input: string, scheme: string): Url | null {\n const colonIdx = input.indexOf(\":\");\n if (colonIdx < 0) return null;\n const rest = input.slice(colonIdx + 1);\n if (rest.length === 0) return null;\n\n let host = \"\";\n let tld = \"\";\n let country: Country | null = null;\n let isExample = false;\n let path = rest;\n let query: string | null = null;\n let fragment: string | null = null;\n\n if (scheme === \"mailto\") {\n const qIdx = rest.indexOf(\"?\");\n let mainPart = rest;\n if (qIdx >= 0) {\n mainPart = rest.slice(0, qIdx);\n const fragIdx = rest.indexOf(\"#\", qIdx);\n if (fragIdx >= 0) {\n query = rest.slice(qIdx + 1, fragIdx);\n fragment = rest.slice(fragIdx + 1);\n } else {\n query = rest.slice(qIdx + 1);\n }\n } else {\n const fragIdx = rest.indexOf(\"#\");\n if (fragIdx >= 0) {\n mainPart = rest.slice(0, fragIdx);\n fragment = rest.slice(fragIdx + 1);\n }\n }\n\n const atIdx = mainPart.lastIndexOf(\"@\");\n if (atIdx >= 0) {\n host = mainPart.slice(atIdx + 1).toLowerCase();\n const lastDot = host.lastIndexOf(\".\");\n tld = lastDot >= 0 ? host.slice(lastDot + 1) : \"\";\n if (tld.length > 0) {\n country = getTldCountryMap().get(\".\" + tld) ?? null;\n }\n isExample =\n RESERVED_TLDS.has(tld.toLowerCase()) ||\n RESERVED_DOMAINS.has(host) ||\n host.endsWith(\".example.com\") ||\n host.endsWith(\".example.org\") ||\n host.endsWith(\".example.net\");\n }\n path = mainPart;\n } else {\n const qIdx = rest.indexOf(\"?\");\n if (qIdx >= 0) {\n path = rest.slice(0, qIdx);\n const fragIdx = rest.indexOf(\"#\", qIdx);\n if (fragIdx >= 0) {\n query = rest.slice(qIdx + 1, fragIdx);\n fragment = rest.slice(fragIdx + 1);\n } else {\n query = rest.slice(qIdx + 1);\n }\n } else {\n const fragIdx = rest.indexOf(\"#\");\n if (fragIdx >= 0) {\n path = rest.slice(0, fragIdx);\n fragment = rest.slice(fragIdx + 1);\n }\n }\n }\n\n const normalized = `${scheme}:${rest}`;\n return new Url({\n value: normalized,\n scheme,\n host,\n port: null,\n path,\n query,\n fragment,\n tld,\n country,\n isExample,\n isIp: false,\n });\n }\n}\n\nfunction trimTrailingPunctuation(value: string): string {\n let end = value.length;\n while (end > 0) {\n const ch = value[end - 1];\n if (\n ch === \".\" ||\n ch === \",\" ||\n ch === \";\" ||\n ch === \"!\" ||\n ch === \"?\" ||\n ch === \")\" ||\n ch === \"]\" ||\n ch === \">\" ||\n ch === \"'\" ||\n ch === '\"'\n ) {\n if (ch === \")\" && value.includes(\"(\")) break;\n if (ch === \"]\" && value.includes(\"[\")) break;\n end--;\n } else {\n break;\n }\n }\n return end < value.length ? value.slice(0, end) : value;\n}\n\n/**\n * Returns a masked URL showing the scheme and host but obscuring the path,\n * query, and fragment, e.g.\n * `https://www.example.com/my/secret/page?key=val` →\n * `https://www.example.com/***?***`.\n * For non-hierarchical URIs (mailto:, tel:), returns `scheme:***`.\n */\nexport function maskUrl(url: Url): string {\n const schemePrefix = url.scheme + \"://\";\n if (!url.value.toLowerCase().startsWith(schemePrefix)) {\n return `${url.scheme}:***`;\n }\n\n let s = url.scheme + \"://\" + url.host;\n if (url.port != null) s += \":\" + url.port;\n\n if (url.path === \"/\" || url.path === \"\") {\n s += \"/\";\n } else {\n s += \"/***\";\n }\n\n if (url.query != null) s += \"?***\";\n if (url.fragment != null) s += \"#***\";\n return s;\n}\n"]}