diff --git a/src/Nager.Country.Subdivision/EmptySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/EmptySubdivisionTranslation.cs new file mode 100644 index 0000000..3e89235 --- /dev/null +++ b/src/Nager.Country.Subdivision/EmptySubdivisionTranslation.cs @@ -0,0 +1,8 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision; + +public class EmptySubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => []; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/ISubdivisionInfo.cs b/src/Nager.Country.Subdivision/ISubdivisionInfo.cs new file mode 100644 index 0000000..8e9bd73 --- /dev/null +++ b/src/Nager.Country.Subdivision/ISubdivisionInfo.cs @@ -0,0 +1,21 @@ +namespace Nager.Country.Subdivision; + +public interface ISubdivisionInfo +{ + /// + /// CommonName (english) + /// + string CommonName { get; } + /// + /// ISO-3166-2 code + /// + string TextCode { get; } + /// + /// Subdivision code + /// + SubdivisionCode Code { get; } + /// + /// Alpha2Code of parent + /// + Alpha2Code ParentAlpha2Code { get; } +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/ISubdivisionProvider.cs b/src/Nager.Country.Subdivision/ISubdivisionProvider.cs new file mode 100644 index 0000000..d786ba6 --- /dev/null +++ b/src/Nager.Country.Subdivision/ISubdivisionProvider.cs @@ -0,0 +1,10 @@ +namespace Nager.Country.Subdivision; + +public interface ISubdivisionProvider +{ + IEnumerable GetSubdivisions(); + IEnumerable GetSubdivisions( Alpha2Code alpha2Code ); + IEnumerable GetSubdivisions( Alpha3Code alpha3Code ); + + ISubdivisionInfo GetSubdivision( SubdivisionCode code ); +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/ISubdivisionTranslation.cs b/src/Nager.Country.Subdivision/ISubdivisionTranslation.cs new file mode 100644 index 0000000..85f19db --- /dev/null +++ b/src/Nager.Country.Subdivision/ISubdivisionTranslation.cs @@ -0,0 +1,14 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision; + +/// +/// ISubdivisionTranslation +/// +public interface ISubdivisionTranslation +{ + /// + /// Get all subdivision translation (different than common name) + /// + TranslationInfo[] Translations { get; } +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/ISubdivisionTranslationProvider.cs b/src/Nager.Country.Subdivision/ISubdivisionTranslationProvider.cs new file mode 100644 index 0000000..bbabdbf --- /dev/null +++ b/src/Nager.Country.Subdivision/ISubdivisionTranslationProvider.cs @@ -0,0 +1,12 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision; + +public interface ISubdivisionTranslationProvider +{ + ISubdivisionTranslation GetSubdivisionTranslation( SubdivisionCode code ); + + string GetSubdivisionTranslatedName( SubdivisionCode code, LanguageCode languageCode ); + + string GetSubdivisionTranslatedOrCommonName( SubdivisionCode code, LanguageCode languageCode ); +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/Nager.Country.Subdivision.csproj b/src/Nager.Country.Subdivision/Nager.Country.Subdivision.csproj new file mode 100644 index 0000000..f945e3a --- /dev/null +++ b/src/Nager.Country.Subdivision/Nager.Country.Subdivision.csproj @@ -0,0 +1,13 @@ + + + + netstandard2.0;netstandard2.1;net6;net48 + disable + + + + + + + + diff --git a/src/Nager.Country.Subdivision/SubdivisionCode.cs b/src/Nager.Country.Subdivision/SubdivisionCode.cs new file mode 100644 index 0000000..da9a4f6 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionCode.cs @@ -0,0 +1,3515 @@ +namespace Nager.Country.Subdivision; + +public enum SubdivisionCode +{ + AD02 = 1, + AD03 = 2, + AD04 = 3, + AD05 = 4, + AD06 = 5, + AD07 = 6, + AD08 = 7, + AEAJ = 8, + AEAZ = 9, + AEDU = 10, + AEFU = 11, + AERK = 12, + AESH = 13, + AEUQ = 14, + AFBAL = 15, + AFBAM = 16, + AFBDG = 17, + AFBDS = 18, + AFBGL = 19, + AFDAY = 20, + AFFRA = 21, + AFFYB = 22, + AFGHA = 23, + AFGHO = 24, + AFHEL = 25, + AFHER = 26, + AFJOW = 27, + AFKAB = 28, + AFKAN = 29, + AFKDZ = 30, + AFKHO = 31, + AFLAG = 32, + AFLOG = 33, + AFNAN = 34, + AFNIM = 35, + AFPAR = 36, + AFPIA = 37, + AFPKA = 38, + AFSAM = 39, + AFSAR = 40, + AFTAK = 41, + AFURU = 42, + AG03 = 43, + AG04 = 44, + AG05 = 45, + AG06 = 46, + AG07 = 47, + AG08 = 48, + AG10 = 49, + AL01 = 50, + AL02 = 51, + AL03 = 52, + AL04 = 53, + AL05 = 54, + AL06 = 55, + AL07 = 56, + AL08 = 57, + AL09 = 58, + AL10 = 59, + AL11 = 60, + AL12 = 61, + AMAG = 62, + AMAR = 63, + AMAV = 64, + AMER = 65, + AMGR = 66, + AMKT = 67, + AMLO = 68, + AMSH = 69, + AMSU = 70, + AMTV = 71, + AMVD = 72, + AOBGO = 73, + AOBGU = 74, + AOBIE = 75, + AOCAB = 76, + AOCCU = 77, + AOCNO = 78, + AOCUS = 79, + AOHUA = 80, + AOHUI = 81, + AOLNO = 82, + AOLSU = 83, + AOLUA = 84, + AOMAL = 85, + AOMOX = 86, + AONAM = 87, + AOUIG = 88, + AOZAI = 89, + ARA = 90, + ARB = 91, + ARC = 92, + ARD = 93, + ARE = 94, + ARF = 95, + ARG = 96, + ARH = 97, + ARJ = 98, + ARK = 99, + ARL = 100, + ARM = 101, + ARN = 102, + ARP = 103, + ARQ = 104, + ARR = 105, + ARS = 106, + ART = 107, + ARU = 108, + ARV = 109, + ARW = 110, + ARX = 111, + ARY = 112, + ARZ = 113, + AT1 = 114, + AT2 = 115, + AT3 = 116, + AT4 = 117, + AT5 = 118, + AT6 = 119, + AT7 = 120, + AT8 = 121, + AT9 = 122, + AUACT = 123, + AUNSW = 124, + AUNT = 125, + AUQLD = 126, + AUSA = 127, + AUTAS = 128, + AUVIC = 129, + AUWA = 130, + AZABS = 131, + AZAGA = 132, + AZAGC = 133, + AZAGS = 134, + AZAGU = 135, + AZAST = 136, + AZBA = 137, + AZBAL = 138, + AZBAR = 139, + AZBEY = 140, + AZCAL = 141, + AZGA = 142, + AZGAD = 143, + AZGOR = 144, + AZGOY = 145, + AZGYG = 146, + AZIMI = 147, + AZISM = 148, + AZKUR = 149, + AZLA = 150, + AZMAS = 151, + AZMI = 152, + AZNEF = 153, + AZNX = 154, + AZOGU = 155, + AZQAB = 156, + AZQAZ = 157, + AZQBA = 158, + AZQUS = 159, + AZSAB = 160, + AZSAK = 161, + AZSAL = 162, + AZSAT = 163, + AZSIY = 164, + AZSKR = 165, + AZSM = 166, + AZSMI = 167, + AZSMX = 168, + AZSR = 169, + AZTAR = 170, + AZTOV = 171, + AZUCA = 172, + AZXAC = 173, + AZXIZ = 174, + AZYAR = 175, + AZYEV = 176, + AZZAQ = 177, + AZZAR = 178, + BABIH = 179, + BABRC = 180, + BASRP = 181, + BB01 = 182, + BB02 = 183, + BB03 = 184, + BB04 = 185, + BB05 = 186, + BB06 = 187, + BB07 = 188, + BB08 = 189, + BB09 = 190, + BB10 = 191, + BB11 = 192, + BDA = 193, + BDB = 194, + BDC = 195, + BDD = 196, + BDE = 197, + BDF = 198, + BDG = 199, + BEBRU = 200, + BEVAN = 201, + BEVBR = 202, + BEVLI = 203, + BEVOV = 204, + BEVWV = 205, + BEWBR = 206, + BEWHT = 207, + BEWLG = 208, + BEWLX = 209, + BEWNA = 210, + BFBAL = 211, + BFBAM = 212, + BFBAN = 213, + BFBAZ = 214, + BFBGR = 215, + BFBLG = 216, + BFBLK = 217, + BFCOM = 218, + BFGAN = 219, + BFGNA = 220, + BFGOU = 221, + BFHOU = 222, + BFKAD = 223, + BFKEN = 224, + BFKMP = 225, + BFKOS = 226, + BFKOT = 227, + BFKOW = 228, + BFLER = 229, + BFLOR = 230, + BFMOU = 231, + BFNAM = 232, + BFNAO = 233, + BFNAY = 234, + BFOUB = 235, + BFOUD = 236, + BFPAS = 237, + BFPON = 238, + BFSEN = 239, + BFSIS = 240, + BFSMT = 241, + BFSOM = 242, + BFTAP = 243, + BFTUI = 244, + BFYAT = 245, + BFZIR = 246, + BFZON = 247, + BFZOU = 248, + BG01 = 249, + BG02 = 250, + BG03 = 251, + BG04 = 252, + BG05 = 253, + BG06 = 254, + BG07 = 255, + BG08 = 256, + BG09 = 257, + BG10 = 258, + BG11 = 259, + BG12 = 260, + BG13 = 261, + BG14 = 262, + BG15 = 263, + BG16 = 264, + BG17 = 265, + BG18 = 266, + BG19 = 267, + BG20 = 268, + BG21 = 269, + BG22 = 270, + BG23 = 271, + BG24 = 272, + BG25 = 273, + BG26 = 274, + BG27 = 275, + BG28 = 276, + BH13 = 277, + BH14 = 278, + BH15 = 279, + BH17 = 280, + BIBM = 281, + BIBR = 282, + BICI = 283, + BIGI = 284, + BIKI = 285, + BIMA = 286, + BIMW = 287, + BING = 288, + BIRM = 289, + BIRT = 290, + BIRY = 291, + BJAK = 292, + BJAQ = 293, + BJBO = 294, + BJCO = 295, + BJLI = 296, + BJOU = 297, + BJPL = 298, + BJZO = 299, + BNBE = 300, + BNBM = 301, + BNTE = 302, + BNTU = 303, + BOB = 304, + BOC = 305, + BOH = 306, + BOL = 307, + BON = 308, + BOO = 309, + BOP = 310, + BOS = 311, + BOT = 312, + BQBO = 313, + BQSA = 314, + BQSE = 315, + BRAC = 316, + BRAL = 317, + BRAM = 318, + BRAP = 319, + BRBA = 320, + BRCE = 321, + BRDF = 322, + BRES = 323, + BRGO = 324, + BRMA = 325, + BRMG = 326, + BRMS = 327, + BRMT = 328, + BRPA = 329, + BRPB = 330, + BRPE = 331, + BRPI = 332, + BRPR = 333, + BRRJ = 334, + BRRN = 335, + BRRO = 336, + BRRR = 337, + BRRS = 338, + BRSC = 339, + BRSE = 340, + BRSP = 341, + BRTO = 342, + BSBP = 343, + BSCO = 344, + BSEG = 345, + BSFP = 346, + BSHI = 347, + BSLI = 348, + BSMI = 349, + BSNE = 350, + BSNP = 351, + BSNS = 352, + BSSE = 353, + BSSS = 354, + BSWG = 355, + BT11 = 356, + BT12 = 357, + BT14 = 358, + BT15 = 359, + BT21 = 360, + BT22 = 361, + BT23 = 362, + BT24 = 363, + BT31 = 364, + BT32 = 365, + BT33 = 366, + BT41 = 367, + BT42 = 368, + BT43 = 369, + BT44 = 370, + BT45 = 371, + BTGA = 372, + BWCE = 373, + BWCH = 374, + BWGH = 375, + BWKG = 376, + BWKL = 377, + BWKW = 378, + BWNE = 379, + BWNW = 380, + BWSE = 381, + BWSO = 382, + BYBR = 383, + BYHM = 384, + BYHO = 385, + BYHR = 386, + BYMA = 387, + BYMI = 388, + BYVI = 389, + BZBZ = 390, + BZCY = 391, + BZCZL = 392, + BZOW = 393, + BZSC = 394, + BZTOL = 395, + CAAB = 396, + CABC = 397, + CAMB = 398, + CANB = 399, + CANL = 400, + CANS = 401, + CANT = 402, + CANU = 403, + CAON = 404, + CAPE = 405, + CAQC = 406, + CASK = 407, + CAYT = 408, + CDBC = 409, + CDEQ = 410, + CDHK = 411, + CDIT = 412, + CDKC = 413, + CDKE = 414, + CDKN = 415, + CDKS = 416, + CDLU = 417, + CDMA = 418, + CDNK = 419, + CDNU = 420, + CDSA = 421, + CDSK = 422, + CDTA = 423, + CDTO = 424, + CFAC = 425, + CFBB = 426, + CFBGF = 427, + CFHK = 428, + CFHM = 429, + CFHS = 430, + CFKB = 431, + CFKG = 432, + CFLB = 433, + CFNM = 434, + CFOP = 435, + CFUK = 436, + CFVK = 437, + CG11 = 438, + CG13 = 439, + CG16 = 440, + CG7 = 441, + CG8 = 442, + CG9 = 443, + CGBZV = 444, + CHAG = 445, + CHAI = 446, + CHAR = 447, + CHBE = 448, + CHBL = 449, + CHBS = 450, + CHFR = 451, + CHGE = 452, + CHGL = 453, + CHGR = 454, + CHJU = 455, + CHLU = 456, + CHNE = 457, + CHNW = 458, + CHOW = 459, + CHSG = 460, + CHSH = 461, + CHSO = 462, + CHSZ = 463, + CHTG = 464, + CHTI = 465, + CHUR = 466, + CHVD = 467, + CHVS = 468, + CHZG = 469, + CHZH = 470, + CIAB = 471, + CIBS = 472, + CICM = 473, + CIDN = 474, + CIGD = 475, + CILC = 476, + CILG = 477, + CIMG = 478, + CISM = 479, + CISV = 480, + CIVB = 481, + CIWR = 482, + CIYM = 483, + CIZZ = 484, + CLAI = 485, + CLAN = 486, + CLAP = 487, + CLAR = 488, + CLAT = 489, + CLBI = 490, + CLCO = 491, + CLLI = 492, + CLLL = 493, + CLLR = 494, + CLMA = 495, + CLML = 496, + CLNB = 497, + CLRM = 498, + CLTA = 499, + CLVS = 500, + CMAD = 501, + CMCE = 502, + CMEN = 503, + CMES = 504, + CMLT = 505, + CMNO = 506, + CMNW = 507, + CMOU = 508, + CMSU = 509, + CMSW = 510, + CNAH = 511, + CNBJ = 512, + CNCQ = 513, + CNFJ = 514, + CNGD = 515, + CNGS = 516, + CNGX = 517, + CNGZ = 518, + CNHA = 519, + CNHB = 520, + CNHE = 521, + CNHI = 522, + CNHL = 523, + CNHN = 524, + CNJL = 525, + CNJS = 526, + CNJX = 527, + CNLN = 528, + CNNM = 529, + CNNX = 530, + CNQH = 531, + CNSC = 532, + CNSD = 533, + CNSH = 534, + CNSN = 535, + CNSX = 536, + CNTJ = 537, + CNXJ = 538, + CNXZ = 539, + CNYN = 540, + CNZJ = 541, + COAMA = 542, + COANT = 543, + COARA = 544, + COATL = 545, + COBOL = 546, + COBOY = 547, + COCAL = 548, + COCAQ = 549, + COCAS = 550, + COCAU = 551, + COCES = 552, + COCHO = 553, + COCOR = 554, + COCUN = 555, + CODC = 556, + COGUA = 557, + COGUV = 558, + COHUI = 559, + COLAG = 560, + COMAG = 561, + COMET = 562, + CONAR = 563, + CONSA = 564, + COPUT = 565, + COQUI = 566, + CORIS = 567, + COSAN = 568, + COSAP = 569, + COSUC = 570, + COTOL = 571, + COVAC = 572, + COVID = 573, + CRA = 574, + CRC = 575, + CRG = 576, + CRH = 577, + CRL = 578, + CRP = 579, + CRSJ = 580, + CU01 = 581, + CU03 = 582, + CU04 = 583, + CU05 = 584, + CU06 = 585, + CU07 = 586, + CU08 = 587, + CU09 = 588, + CU10 = 589, + CU11 = 590, + CU12 = 591, + CU13 = 592, + CU14 = 593, + CU15 = 594, + CU16 = 595, + CU99 = 596, + CVBV = 597, + CVCA = 598, + CVPA = 599, + CVPN = 600, + CVPR = 601, + CVRG = 602, + CVRS = 603, + CVSF = 604, + CVSL = 605, + CVSO = 606, + CVSV = 607, + CVTA = 608, + CY01 = 609, + CY02 = 610, + CY03 = 611, + CY04 = 612, + CY05 = 613, + CY06 = 614, + CZ10 = 615, + CZ20 = 616, + CZ31 = 617, + CZ32 = 618, + CZ41 = 619, + CZ42 = 620, + CZ51 = 621, + CZ52 = 622, + CZ53 = 623, + CZ63 = 624, + CZ64 = 625, + CZ71 = 626, + CZ72 = 627, + CZ80 = 628, + DEBB = 629, + DEBE = 630, + DEBW = 631, + DEBY = 632, + DEHB = 633, + DEHE = 634, + DEHH = 635, + DEMV = 636, + DENI = 637, + DENW = 638, + DERP = 639, + DESH = 640, + DESL = 641, + DESN = 642, + DEST = 643, + DETH = 644, + DJAR = 645, + DJDI = 646, + DJDJ = 647, + DJTA = 648, + DK81 = 649, + DK82 = 650, + DK83 = 651, + DK84 = 652, + DK85 = 653, + DM02 = 654, + DM04 = 655, + DM05 = 656, + DM06 = 657, + DM07 = 658, + DM09 = 659, + DM10 = 660, + DO01 = 661, + DO02 = 662, + DO03 = 663, + DO04 = 664, + DO05 = 665, + DO06 = 666, + DO07 = 667, + DO08 = 668, + DO09 = 669, + DO10 = 670, + DO11 = 671, + DO12 = 672, + DO13 = 673, + DO14 = 674, + DO15 = 675, + DO17 = 676, + DO18 = 677, + DO19 = 678, + DO20 = 679, + DO21 = 680, + DO22 = 681, + DO23 = 682, + DO24 = 683, + DO25 = 684, + DO26 = 685, + DO27 = 686, + DO28 = 687, + DO29 = 688, + DO30 = 689, + DO31 = 690, + DZ01 = 691, + DZ02 = 692, + DZ03 = 693, + DZ04 = 694, + DZ05 = 695, + DZ06 = 696, + DZ07 = 697, + DZ08 = 698, + DZ09 = 699, + DZ10 = 700, + DZ11 = 701, + DZ12 = 702, + DZ13 = 703, + DZ14 = 704, + DZ15 = 705, + DZ16 = 706, + DZ17 = 707, + DZ18 = 708, + DZ19 = 709, + DZ20 = 710, + DZ21 = 711, + DZ22 = 712, + DZ23 = 713, + DZ24 = 714, + DZ25 = 715, + DZ26 = 716, + DZ27 = 717, + DZ28 = 718, + DZ29 = 719, + DZ30 = 720, + DZ31 = 721, + DZ32 = 722, + DZ33 = 723, + DZ34 = 724, + DZ35 = 725, + DZ36 = 726, + DZ37 = 727, + DZ38 = 728, + DZ39 = 729, + DZ40 = 730, + DZ41 = 731, + DZ42 = 732, + DZ43 = 733, + DZ44 = 734, + DZ45 = 735, + DZ46 = 736, + DZ47 = 737, + DZ48 = 738, + DZ49 = 739, + DZ51 = 740, + DZ53 = 741, + DZ55 = 742, + DZ56 = 743, + DZ57 = 744, + ECA = 745, + ECB = 746, + ECC = 747, + ECD = 748, + ECE = 749, + ECF = 750, + ECG = 751, + ECH = 752, + ECI = 753, + ECL = 754, + ECM = 755, + ECN = 756, + ECO = 757, + ECP = 758, + ECR = 759, + ECS = 760, + ECSD = 761, + ECSE = 762, + ECT = 763, + ECU = 764, + ECW = 765, + ECX = 766, + ECY = 767, + ECZ = 768, + EE37 = 769, + EE39 = 770, + EE45 = 771, + EE50 = 772, + EE52 = 773, + EE56 = 774, + EE60 = 775, + EE64 = 776, + EE68 = 777, + EE71 = 778, + EE74 = 779, + EE79 = 780, + EE81 = 781, + EE84 = 782, + EE87 = 783, + EGALX = 784, + EGASN = 785, + EGAST = 786, + EGBA = 787, + EGBH = 788, + EGBNS = 789, + EGC = 790, + EGDK = 791, + EGDT = 792, + EGFYM = 793, + EGGH = 794, + EGGZ = 795, + EGIS = 796, + EGJS = 797, + EGKB = 798, + EGKFS = 799, + EGKN = 800, + EGLX = 801, + EGMN = 802, + EGMNF = 803, + EGMT = 804, + EGPTS = 805, + EGSHG = 806, + EGSHR = 807, + EGSIN = 808, + EGSUZ = 809, + EGWAD = 810, + ERGB = 811, + ERMA = 812, + ESAN = 813, + ESAR = 814, + ESAS = 815, + ESCB = 816, + ESCE = 817, + ESCL = 818, + ESCM = 819, + ESCN = 820, + ESCT = 821, + ESEX = 822, + ESGA = 823, + ESIB = 824, + ESMC = 825, + ESMD = 826, + ESML = 827, + ESNC = 828, + ESPV = 829, + ESRI = 830, + ESVC = 831, + ETAA = 832, + ETAF = 833, + ETAM = 834, + ETBE = 835, + ETDD = 836, + ETHA = 837, + ETOR = 838, + ETSN = 839, + ETSO = 840, + ETTI = 841, + FI02 = 842, + FI03 = 843, + FI04 = 844, + FI05 = 845, + FI06 = 846, + FI07 = 847, + FI08 = 848, + FI09 = 849, + FI10 = 850, + FI11 = 851, + FI12 = 852, + FI13 = 853, + FI14 = 854, + FI15 = 855, + FI16 = 856, + FI17 = 857, + FI18 = 858, + FI19 = 859, + FJC = 860, + FJE = 861, + FJN = 862, + FJR = 863, + FJW = 864, + FMKSA = 865, + FMPNI = 866, + FMTRK = 867, + FMYAP = 868, + FR20R = 869, + FRARA = 870, + FRBFC = 871, + FRBRE = 872, + FRCVL = 873, + FRGES = 874, + FRHDF = 875, + FRIDF = 876, + FRNAQ = 877, + FRNOR = 878, + FROCC = 879, + FRPAC = 880, + FRPDL = 881, + GA1 = 882, + GA2 = 883, + GA3 = 884, + GA4 = 885, + GA5 = 886, + GA7 = 887, + GA8 = 888, + GA9 = 889, + GBENG = 890, + GBNIR = 891, + GBSCT = 892, + GBWLS = 893, + GD01 = 894, + GD02 = 895, + GD03 = 896, + GD04 = 897, + GD05 = 898, + GD06 = 899, + GD10 = 900, + GEAB = 901, + GEAJ = 902, + GEGU = 903, + GEIM = 904, + GEKA = 905, + GEKK = 906, + GEMM = 907, + GERL = 908, + GESJ = 909, + GESK = 910, + GESZ = 911, + GETB = 912, + GHAA = 913, + GHAF = 914, + GHAH = 915, + GHBE = 916, + GHBO = 917, + GHCP = 918, + GHEP = 919, + GHNP = 920, + GHTV = 921, + GHUE = 922, + GHUW = 923, + GHWP = 924, + GLAV = 925, + GLKU = 926, + GLQE = 927, + GLQT = 928, + GLSM = 929, + GMB = 930, + GML = 931, + GMM = 932, + GMN = 933, + GMW = 934, + GNBE = 935, + GNBF = 936, + GNBK = 937, + GNC = 938, + GNDB = 939, + GNDI = 940, + GNDU = 941, + GNFR = 942, + GNKA = 943, + GNKO = 944, + GNLA = 945, + GNMM = 946, + GNPI = 947, + GNSI = 948, + GQBN = 949, + GQCS = 950, + GQKN = 951, + GQLI = 952, + GQWN = 953, + GRA = 954, + GRB = 955, + GRC = 956, + GRD = 957, + GRE = 958, + GRF = 959, + GRG = 960, + GRH = 961, + GRI = 962, + GRJ = 963, + GRK = 964, + GRL = 965, + GRM = 966, + GT01 = 967, + GT02 = 968, + GT03 = 969, + GT04 = 970, + GT05 = 971, + GT06 = 972, + GT07 = 973, + GT08 = 974, + GT09 = 975, + GT10 = 976, + GT11 = 977, + GT12 = 978, + GT13 = 979, + GT14 = 980, + GT15 = 981, + GT16 = 982, + GT17 = 983, + GT18 = 984, + GT19 = 985, + GT20 = 986, + GT21 = 987, + GT22 = 988, + GWBA = 989, + GWBS = 990, + GWCA = 991, + GWGA = 992, + GWOI = 993, + GWQU = 994, + GYBA = 995, + GYCU = 996, + GYDE = 997, + GYEB = 998, + GYES = 999, + GYMA = 1000, + GYPM = 1001, + GYPT = 1002, + GYUD = 1003, + GYUT = 1004, + HNAT = 1005, + HNCH = 1006, + HNCL = 1007, + HNCM = 1008, + HNCP = 1009, + HNCR = 1010, + HNEP = 1011, + HNFM = 1012, + HNIB = 1013, + HNIN = 1014, + HNLE = 1015, + HNLP = 1016, + HNOC = 1017, + HNOL = 1018, + HNSB = 1019, + HNVA = 1020, + HNYO = 1021, + HR01 = 1022, + HR02 = 1023, + HR03 = 1024, + HR04 = 1025, + HR05 = 1026, + HR06 = 1027, + HR07 = 1028, + HR08 = 1029, + HR09 = 1030, + HR10 = 1031, + HR11 = 1032, + HR12 = 1033, + HR13 = 1034, + HR14 = 1035, + HR15 = 1036, + HR16 = 1037, + HR17 = 1038, + HR18 = 1039, + HR19 = 1040, + HR20 = 1041, + HR21 = 1042, + HTAR = 1043, + HTCE = 1044, + HTGA = 1045, + HTND = 1046, + HTNO = 1047, + HTOU = 1048, + HTSD = 1049, + HTSE = 1050, + HUBA = 1051, + HUBE = 1052, + HUBK = 1053, + HUBU = 1054, + HUBZ = 1055, + HUCS = 1056, + HUFE = 1057, + HUGS = 1058, + HUHB = 1059, + HUHE = 1060, + HUJN = 1061, + HUKE = 1062, + HUNO = 1063, + HUPE = 1064, + HUSO = 1065, + HUSZ = 1066, + HUTO = 1067, + HUVA = 1068, + HUVE = 1069, + HUZA = 1070, + IDAC = 1071, + IDBA = 1072, + IDBB = 1073, + IDBE = 1074, + IDBT = 1075, + IDGO = 1076, + IDJA = 1077, + IDJB = 1078, + IDJI = 1079, + IDJK = 1080, + IDJT = 1081, + IDKB = 1082, + IDKI = 1083, + IDKR = 1084, + IDKS = 1085, + IDKT = 1086, + IDKU = 1087, + IDLA = 1088, + IDML = 1089, + IDMU = 1090, + IDNB = 1091, + IDNT = 1092, + IDPB = 1093, + IDPD = 1094, + IDPE = 1095, + IDPP = 1096, + IDPS = 1097, + IDPT = 1098, + IDRI = 1099, + IDSA = 1100, + IDSB = 1101, + IDSG = 1102, + IDSN = 1103, + IDSR = 1104, + IDSS = 1105, + IDST = 1106, + IDSU = 1107, + IDYO = 1108, + IECE = 1109, + IECN = 1110, + IECO = 1111, + IECW = 1112, + IED = 1113, + IEDL = 1114, + IEG = 1115, + IEKE = 1116, + IEKK = 1117, + IEKY = 1118, + IELD = 1119, + IELH = 1120, + IELK = 1121, + IELM = 1122, + IELS = 1123, + IEMH = 1124, + IEMN = 1125, + IEMO = 1126, + IEOY = 1127, + IERN = 1128, + IESO = 1129, + IETA = 1130, + IEWD = 1131, + IEWH = 1132, + IEWW = 1133, + IEWX = 1134, + ILD = 1135, + ILHA = 1136, + ILJM = 1137, + ILM = 1138, + ILTA = 1139, + ILZ = 1140, + INAN = 1141, + INAP = 1142, + INAR = 1143, + INAS = 1144, + INBR = 1145, + INCG = 1146, + INCH = 1147, + INDH = 1148, + INDL = 1149, + INGA = 1150, + INGJ = 1151, + INHP = 1152, + INHR = 1153, + INJH = 1154, + INJK = 1155, + INKA = 1156, + INKL = 1157, + INLD = 1158, + INMH = 1159, + INML = 1160, + INMN = 1161, + INMP = 1162, + INMZ = 1163, + INNL = 1164, + INOD = 1165, + INPB = 1166, + INPY = 1167, + INRJ = 1168, + INSK = 1169, + INTN = 1170, + INTR = 1171, + INTS = 1172, + INUK = 1173, + INUP = 1174, + INWB = 1175, + IQAN = 1176, + IQAR = 1177, + IQBA = 1178, + IQBB = 1179, + IQBG = 1180, + IQDA = 1181, + IQDI = 1182, + IQDQ = 1183, + IQKA = 1184, + IQKI = 1185, + IQMA = 1186, + IQMU = 1187, + IQNA = 1188, + IQNI = 1189, + IQQA = 1190, + IQSD = 1191, + IQSU = 1192, + IQWA = 1193, + IR00 = 1194, + IR01 = 1195, + IR02 = 1196, + IR03 = 1197, + IR04 = 1198, + IR05 = 1199, + IR06 = 1200, + IR07 = 1201, + IR08 = 1202, + IR09 = 1203, + IR10 = 1204, + IR11 = 1205, + IR12 = 1206, + IR13 = 1207, + IR14 = 1208, + IR15 = 1209, + IR16 = 1210, + IR17 = 1211, + IR18 = 1212, + IR19 = 1213, + IR20 = 1214, + IR21 = 1215, + IR22 = 1216, + IR23 = 1217, + IR24 = 1218, + IR25 = 1219, + IR26 = 1220, + IR27 = 1221, + IR28 = 1222, + IR29 = 1223, + IR30 = 1224, + IS1 = 1225, + IS2 = 1226, + IS3 = 1227, + IS4 = 1228, + IS5 = 1229, + IS6 = 1230, + IS7 = 1231, + IS8 = 1232, + IT21 = 1233, + IT23 = 1234, + IT25 = 1235, + IT32 = 1236, + IT34 = 1237, + IT36 = 1238, + IT42 = 1239, + IT45 = 1240, + IT52 = 1241, + IT55 = 1242, + IT57 = 1243, + IT62 = 1244, + IT65 = 1245, + IT67 = 1246, + IT72 = 1247, + IT75 = 1248, + IT77 = 1249, + IT78 = 1250, + IT82 = 1251, + IT88 = 1252, + JM01 = 1253, + JM02 = 1254, + JM03 = 1255, + JM04 = 1256, + JM05 = 1257, + JM06 = 1258, + JM07 = 1259, + JM08 = 1260, + JM09 = 1261, + JM10 = 1262, + JM11 = 1263, + JM12 = 1264, + JM13 = 1265, + JM14 = 1266, + JOAJ = 1267, + JOAM = 1268, + JOAQ = 1269, + JOAT = 1270, + JOAZ = 1271, + JOBA = 1272, + JOIR = 1273, + JOJA = 1274, + JOKA = 1275, + JOMA = 1276, + JOMD = 1277, + JOMN = 1278, + JP01 = 1279, + JP02 = 1280, + JP03 = 1281, + JP04 = 1282, + JP05 = 1283, + JP06 = 1284, + JP07 = 1285, + JP08 = 1286, + JP09 = 1287, + JP10 = 1288, + JP11 = 1289, + JP12 = 1290, + JP13 = 1291, + JP14 = 1292, + JP15 = 1293, + JP16 = 1294, + JP17 = 1295, + JP18 = 1296, + JP19 = 1297, + JP20 = 1298, + JP21 = 1299, + JP22 = 1300, + JP23 = 1301, + JP24 = 1302, + JP25 = 1303, + JP26 = 1304, + JP27 = 1305, + JP28 = 1306, + JP29 = 1307, + JP30 = 1308, + JP31 = 1309, + JP32 = 1310, + JP33 = 1311, + JP34 = 1312, + JP35 = 1313, + JP36 = 1314, + JP37 = 1315, + JP38 = 1316, + JP39 = 1317, + JP40 = 1318, + JP41 = 1319, + JP42 = 1320, + JP43 = 1321, + JP44 = 1322, + JP45 = 1323, + JP46 = 1324, + JP47 = 1325, + KE01 = 1326, + KE02 = 1327, + KE03 = 1328, + KE04 = 1329, + KE05 = 1330, + KE06 = 1331, + KE07 = 1332, + KE08 = 1333, + KE09 = 1334, + KE10 = 1335, + KE11 = 1336, + KE12 = 1337, + KE13 = 1338, + KE14 = 1339, + KE15 = 1340, + KE16 = 1341, + KE17 = 1342, + KE18 = 1343, + KE19 = 1344, + KE20 = 1345, + KE21 = 1346, + KE22 = 1347, + KE23 = 1348, + KE24 = 1349, + KE25 = 1350, + KE26 = 1351, + KE27 = 1352, + KE28 = 1353, + KE29 = 1354, + KE30 = 1355, + KE31 = 1356, + KE32 = 1357, + KE33 = 1358, + KE34 = 1359, + KE35 = 1360, + KE36 = 1361, + KE37 = 1362, + KE38 = 1363, + KE39 = 1364, + KE40 = 1365, + KE41 = 1366, + KE42 = 1367, + KE43 = 1368, + KE44 = 1369, + KE45 = 1370, + KE46 = 1371, + KE47 = 1372, + KGB = 1373, + KGC = 1374, + KGGB = 1375, + KGGO = 1376, + KGJ = 1377, + KGN = 1378, + KGT = 1379, + KGY = 1380, + KH1 = 1381, + KH10 = 1382, + KH11 = 1383, + KH12 = 1384, + KH13 = 1385, + KH14 = 1386, + KH16 = 1387, + KH17 = 1388, + KH18 = 1389, + KH19 = 1390, + KH2 = 1391, + KH20 = 1392, + KH21 = 1393, + KH22 = 1394, + KH23 = 1395, + KH24 = 1396, + KH3 = 1397, + KH4 = 1398, + KH5 = 1399, + KH6 = 1400, + KH7 = 1401, + KH8 = 1402, + KH9 = 1403, + KIG = 1404, + KIL = 1405, + KMA = 1406, + KMG = 1407, + KMM = 1408, + KN01 = 1409, + KN02 = 1410, + KN03 = 1411, + KN05 = 1412, + KN06 = 1413, + KN07 = 1414, + KN08 = 1415, + KN09 = 1416, + KN10 = 1417, + KN11 = 1418, + KN12 = 1419, + KN13 = 1420, + KN15 = 1421, + KP01 = 1422, + KR11 = 1423, + KR26 = 1424, + KR27 = 1425, + KR28 = 1426, + KR29 = 1427, + KR30 = 1428, + KR31 = 1429, + KR41 = 1430, + KR42 = 1431, + KR43 = 1432, + KR44 = 1433, + KR45 = 1434, + KR46 = 1435, + KR47 = 1436, + KR48 = 1437, + KR49 = 1438, + KR50 = 1439, + KWAH = 1440, + KWFA = 1441, + KWHA = 1442, + KWJA = 1443, + KWKU = 1444, + KWMU = 1445, + KZ10 = 1446, + KZ11 = 1447, + KZ15 = 1448, + KZ19 = 1449, + KZ23 = 1450, + KZ27 = 1451, + KZ31 = 1452, + KZ33 = 1453, + KZ35 = 1454, + KZ39 = 1455, + KZ43 = 1456, + KZ47 = 1457, + KZ55 = 1458, + KZ59 = 1459, + KZ61 = 1460, + KZ62 = 1461, + KZ63 = 1462, + KZ71 = 1463, + KZ75 = 1464, + KZ79 = 1465, + LAAT = 1466, + LABK = 1467, + LACH = 1468, + LAHO = 1469, + LAKH = 1470, + LALM = 1471, + LALP = 1472, + LAOU = 1473, + LAPH = 1474, + LASL = 1475, + LASV = 1476, + LAVI = 1477, + LAXA = 1478, + LAXE = 1479, + LAXI = 1480, + LBAK = 1481, + LBAS = 1482, + LBBA = 1483, + LBBH = 1484, + LBBI = 1485, + LBJA = 1486, + LBJL = 1487, + LBNA = 1488, + LC01 = 1489, + LC02 = 1490, + LC03 = 1491, + LC05 = 1492, + LC06 = 1493, + LC07 = 1494, + LC08 = 1495, + LC10 = 1496, + LC11 = 1497, + LI01 = 1498, + LI02 = 1499, + LI03 = 1500, + LI04 = 1501, + LI06 = 1502, + LI07 = 1503, + LI09 = 1504, + LI10 = 1505, + LI11 = 1506, + LK1 = 1507, + LK2 = 1508, + LK3 = 1509, + LK4 = 1510, + LK5 = 1511, + LK6 = 1512, + LK7 = 1513, + LK8 = 1514, + LK9 = 1515, + LRBG = 1516, + LRBM = 1517, + LRCM = 1518, + LRGG = 1519, + LRMG = 1520, + LRMO = 1521, + LRNI = 1522, + LRRG = 1523, + LRRI = 1524, + LRSI = 1525, + LSA = 1526, + LSB = 1527, + LSC = 1528, + LSD = 1529, + LSE = 1530, + LSF = 1531, + LSG = 1532, + LSH = 1533, + LSJ = 1534, + LSK = 1535, + LTAL = 1536, + LTKL = 1537, + LTKU = 1538, + LTMR = 1539, + LTPN = 1540, + LTSA = 1541, + LTTA = 1542, + LTTE = 1543, + LTUT = 1544, + LTVL = 1545, + LUCA = 1546, + LUCL = 1547, + LUDI = 1548, + LUEC = 1549, + LUES = 1550, + LUGR = 1551, + LULU = 1552, + LUME = 1553, + LURD = 1554, + LURM = 1555, + LUVD = 1556, + LUWI = 1557, + LV002 = 1558, + LV007 = 1559, + LV011 = 1560, + LV015 = 1561, + LV016 = 1562, + LV022 = 1563, + LV026 = 1564, + LV033 = 1565, + LV041 = 1566, + LV042 = 1567, + LV047 = 1568, + LV050 = 1569, + LV052 = 1570, + LV054 = 1571, + LV056 = 1572, + LV058 = 1573, + LV059 = 1574, + LV062 = 1575, + LV067 = 1576, + LV068 = 1577, + LV073 = 1578, + LV077 = 1579, + LV080 = 1580, + LV087 = 1581, + LV088 = 1582, + LV089 = 1583, + LV091 = 1584, + LV094 = 1585, + LV097 = 1586, + LV099 = 1587, + LV101 = 1588, + LV102 = 1589, + LV106 = 1590, + LV112 = 1591, + LV113 = 1592, + LVDGV = 1593, + LVJEL = 1594, + LVJUR = 1595, + LVLPX = 1596, + LVRIX = 1597, + LYBA = 1598, + LYBU = 1599, + LYDR = 1600, + LYGT = 1601, + LYJA = 1602, + LYJG = 1603, + LYJI = 1604, + LYJU = 1605, + LYKF = 1606, + LYMB = 1607, + LYMI = 1608, + LYMJ = 1609, + LYMQ = 1610, + LYNL = 1611, + LYNQ = 1612, + LYSB = 1613, + LYSR = 1614, + LYTB = 1615, + LYWA = 1616, + LYWD = 1617, + LYWS = 1618, + LYZA = 1619, + MA01 = 1620, + MA02 = 1621, + MA03 = 1622, + MA04 = 1623, + MA05 = 1624, + MA06 = 1625, + MA07 = 1626, + MA08 = 1627, + MA09 = 1628, + MA10 = 1629, + MA11 = 1630, + MCCO = 1631, + MCFO = 1632, + MCMC = 1633, + MCMG = 1634, + MCMO = 1635, + MCSR = 1636, + MDAN = 1637, + MDBA = 1638, + MDBD = 1639, + MDBR = 1640, + MDBS = 1641, + MDCA = 1642, + MDCL = 1643, + MDCM = 1644, + MDCR = 1645, + MDCS = 1646, + MDCT = 1647, + MDCU = 1648, + MDDO = 1649, + MDDR = 1650, + MDDU = 1651, + MDED = 1652, + MDFA = 1653, + MDFL = 1654, + MDGA = 1655, + MDGL = 1656, + MDHI = 1657, + MDIA = 1658, + MDLE = 1659, + MDNI = 1660, + MDOC = 1661, + MDOR = 1662, + MDRE = 1663, + MDRI = 1664, + MDSD = 1665, + MDSI = 1666, + MDSN = 1667, + MDSO = 1668, + MDST = 1669, + MDSV = 1670, + MDTA = 1671, + MDTE = 1672, + MDUN = 1673, + ME02 = 1674, + ME03 = 1675, + ME04 = 1676, + ME05 = 1677, + ME06 = 1678, + ME07 = 1679, + ME08 = 1680, + ME09 = 1681, + ME10 = 1682, + ME11 = 1683, + ME12 = 1684, + ME13 = 1685, + ME14 = 1686, + ME15 = 1687, + ME16 = 1688, + ME17 = 1689, + ME19 = 1690, + ME20 = 1691, + ME21 = 1692, + ME24 = 1693, + ME25 = 1694, + MGA = 1695, + MGD = 1696, + MGF = 1697, + MGM = 1698, + MGT = 1699, + MGU = 1700, + MHKWA = 1701, + MHMAJ = 1702, + MK101 = 1703, + MK104 = 1704, + MK105 = 1705, + MK106 = 1706, + MK107 = 1707, + MK108 = 1708, + MK109 = 1709, + MK201 = 1710, + MK202 = 1711, + MK203 = 1712, + MK204 = 1713, + MK205 = 1714, + MK206 = 1715, + MK207 = 1716, + MK208 = 1717, + MK209 = 1718, + MK211 = 1719, + MK301 = 1720, + MK303 = 1721, + MK304 = 1722, + MK307 = 1723, + MK308 = 1724, + MK310 = 1725, + MK311 = 1726, + MK312 = 1727, + MK313 = 1728, + MK401 = 1729, + MK402 = 1730, + MK403 = 1731, + MK404 = 1732, + MK405 = 1733, + MK406 = 1734, + MK407 = 1735, + MK408 = 1736, + MK409 = 1737, + MK410 = 1738, + MK501 = 1739, + MK502 = 1740, + MK503 = 1741, + MK504 = 1742, + MK506 = 1743, + MK507 = 1744, + MK508 = 1745, + MK509 = 1746, + MK601 = 1747, + MK602 = 1748, + MK603 = 1749, + MK604 = 1750, + MK605 = 1751, + MK606 = 1752, + MK607 = 1753, + MK608 = 1754, + MK609 = 1755, + MK701 = 1756, + MK702 = 1757, + MK703 = 1758, + MK704 = 1759, + MK705 = 1760, + MK802 = 1761, + MK803 = 1762, + MK804 = 1763, + MK806 = 1764, + MK807 = 1765, + MK809 = 1766, + MK810 = 1767, + MK811 = 1768, + MK812 = 1769, + MK813 = 1770, + MK814 = 1771, + MK816 = 1772, + ML1 = 1773, + ML2 = 1774, + ML3 = 1775, + ML4 = 1776, + ML5 = 1777, + ML6 = 1778, + ML7 = 1779, + ML8 = 1780, + MLBKO = 1781, + MM01 = 1782, + MM02 = 1783, + MM03 = 1784, + MM04 = 1785, + MM05 = 1786, + MM06 = 1787, + MM07 = 1788, + MM11 = 1789, + MM12 = 1790, + MM13 = 1791, + MM14 = 1792, + MM15 = 1793, + MM16 = 1794, + MM17 = 1795, + MM18 = 1796, + MN035 = 1797, + MN037 = 1798, + MN041 = 1799, + MN043 = 1800, + MN047 = 1801, + MN049 = 1802, + MN053 = 1803, + MN055 = 1804, + MN057 = 1805, + MN059 = 1806, + MN061 = 1807, + MN064 = 1808, + MN065 = 1809, + MN069 = 1810, + MN071 = 1811, + MN1 = 1812, + MR02 = 1813, + MR03 = 1814, + MR04 = 1815, + MR05 = 1816, + MR06 = 1817, + MR07 = 1818, + MR08 = 1819, + MR09 = 1820, + MR10 = 1821, + MR11 = 1822, + MR12 = 1823, + MR13 = 1824, + MT01 = 1825, + MT02 = 1826, + MT03 = 1827, + MT04 = 1828, + MT05 = 1829, + MT06 = 1830, + MT07 = 1831, + MT08 = 1832, + MT09 = 1833, + MT10 = 1834, + MT11 = 1835, + MT12 = 1836, + MT13 = 1837, + MT14 = 1838, + MT15 = 1839, + MT16 = 1840, + MT17 = 1841, + MT18 = 1842, + MT19 = 1843, + MT20 = 1844, + MT21 = 1845, + MT23 = 1846, + MT24 = 1847, + MT25 = 1848, + MT26 = 1849, + MT27 = 1850, + MT28 = 1851, + MT29 = 1852, + MT30 = 1853, + MT31 = 1854, + MT32 = 1855, + MT33 = 1856, + MT34 = 1857, + MT35 = 1858, + MT36 = 1859, + MT37 = 1860, + MT38 = 1861, + MT39 = 1862, + MT40 = 1863, + MT41 = 1864, + MT42 = 1865, + MT43 = 1866, + MT44 = 1867, + MT45 = 1868, + MT46 = 1869, + MT47 = 1870, + MT48 = 1871, + MT49 = 1872, + MT50 = 1873, + MT51 = 1874, + MT52 = 1875, + MT53 = 1876, + MT54 = 1877, + MT55 = 1878, + MT56 = 1879, + MT57 = 1880, + MT58 = 1881, + MT59 = 1882, + MT60 = 1883, + MT61 = 1884, + MT62 = 1885, + MT63 = 1886, + MT64 = 1887, + MT65 = 1888, + MT67 = 1889, + MT68 = 1890, + MUBL = 1891, + MUFL = 1892, + MUGP = 1893, + MUMO = 1894, + MUPA = 1895, + MUPL = 1896, + MUPW = 1897, + MURO = 1898, + MURR = 1899, + MUSA = 1900, + MV00 = 1901, + MV01 = 1902, + MV02 = 1903, + MV03 = 1904, + MV04 = 1905, + MV05 = 1906, + MV07 = 1907, + MV12 = 1908, + MV13 = 1909, + MV14 = 1910, + MV17 = 1911, + MV20 = 1912, + MV23 = 1913, + MV24 = 1914, + MV25 = 1915, + MV27 = 1916, + MV28 = 1917, + MV29 = 1918, + MVMLE = 1919, + MWBA = 1920, + MWBL = 1921, + MWCK = 1922, + MWCR = 1923, + MWDE = 1924, + MWDO = 1925, + MWKR = 1926, + MWLI = 1927, + MWLK = 1928, + MWMG = 1929, + MWMH = 1930, + MWMW = 1931, + MWMZ = 1932, + MWNE = 1933, + MWNI = 1934, + MWNK = 1935, + MWSA = 1936, + MWTH = 1937, + MWZO = 1938, + MXAGU = 1939, + MXBCN = 1940, + MXBCS = 1941, + MXCAM = 1942, + MXCHH = 1943, + MXCHP = 1944, + MXCMX = 1945, + MXCOA = 1946, + MXCOL = 1947, + MXDUR = 1948, + MXGRO = 1949, + MXGUA = 1950, + MXHID = 1951, + MXJAL = 1952, + MXMEX = 1953, + MXMIC = 1954, + MXMOR = 1955, + MXNAY = 1956, + MXNLE = 1957, + MXOAX = 1958, + MXPUE = 1959, + MXQUE = 1960, + MXROO = 1961, + MXSIN = 1962, + MXSLP = 1963, + MXSON = 1964, + MXTAB = 1965, + MXTAM = 1966, + MXTLA = 1967, + MXVER = 1968, + MXYUC = 1969, + MXZAC = 1970, + MY01 = 1971, + MY02 = 1972, + MY03 = 1973, + MY04 = 1974, + MY05 = 1975, + MY06 = 1976, + MY07 = 1977, + MY08 = 1978, + MY09 = 1979, + MY10 = 1980, + MY11 = 1981, + MY12 = 1982, + MY13 = 1983, + MY14 = 1984, + MY15 = 1985, + MY16 = 1986, + MZA = 1987, + MZB = 1988, + MZG = 1989, + MZI = 1990, + MZL = 1991, + MZN = 1992, + MZP = 1993, + MZQ = 1994, + MZS = 1995, + MZT = 1996, + NACA = 1997, + NAER = 1998, + NAHA = 1999, + NAKA = 2000, + NAKE = 2001, + NAKH = 2002, + NAKU = 2003, + NAKW = 2004, + NAOD = 2005, + NAOH = 2006, + NAON = 2007, + NAOS = 2008, + NAOT = 2009, + NAOW = 2010, + NE1 = 2011, + NE2 = 2012, + NE3 = 2013, + NE4 = 2014, + NE5 = 2015, + NE6 = 2016, + NE7 = 2017, + NE8 = 2018, + NGAB = 2019, + NGAD = 2020, + NGAK = 2021, + NGAN = 2022, + NGBA = 2023, + NGBE = 2024, + NGBO = 2025, + NGBY = 2026, + NGCR = 2027, + NGDE = 2028, + NGEB = 2029, + NGED = 2030, + NGEK = 2031, + NGEN = 2032, + NGFC = 2033, + NGGO = 2034, + NGIM = 2035, + NGJI = 2036, + NGKD = 2037, + NGKE = 2038, + NGKN = 2039, + NGKO = 2040, + NGKT = 2041, + NGKW = 2042, + NGLA = 2043, + NGNA = 2044, + NGNI = 2045, + NGOG = 2046, + NGON = 2047, + NGOS = 2048, + NGOY = 2049, + NGPL = 2050, + NGRI = 2051, + NGSO = 2052, + NGTA = 2053, + NGYO = 2054, + NGZA = 2055, + NIAN = 2056, + NIAS = 2057, + NIBO = 2058, + NICA = 2059, + NICI = 2060, + NICO = 2061, + NIES = 2062, + NIGR = 2063, + NIJI = 2064, + NILE = 2065, + NIMD = 2066, + NIMN = 2067, + NIMS = 2068, + NIMT = 2069, + NINS = 2070, + NIRI = 2071, + NISJ = 2072, + NLDR = 2073, + NLFL = 2074, + NLFR = 2075, + NLGE = 2076, + NLGR = 2077, + NLLI = 2078, + NLNB = 2079, + NLNH = 2080, + NLOV = 2081, + NLUT = 2082, + NLZE = 2083, + NLZH = 2084, + NO03 = 2085, + NO11 = 2086, + NO15 = 2087, + NO18 = 2088, + NO30 = 2089, + NO34 = 2090, + NO38 = 2091, + NO42 = 2092, + NO46 = 2093, + NO50 = 2094, + NO54 = 2095, + NPP1 = 2096, + NPP2 = 2097, + NPP3 = 2098, + NPP4 = 2099, + NPP5 = 2100, + NPP6 = 2101, + NPP7 = 2102, + NR01 = 2103, + NR03 = 2104, + NR14 = 2105, + NZAUK = 2106, + NZBOP = 2107, + NZCAN = 2108, + NZCIT = 2109, + NZGIS = 2110, + NZHKB = 2111, + NZMBH = 2112, + NZMWT = 2113, + NZNSN = 2114, + NZNTL = 2115, + NZOTA = 2116, + NZSTL = 2117, + NZTAS = 2118, + NZTKI = 2119, + NZWGN = 2120, + NZWKO = 2121, + NZWTC = 2122, + OMBJ = 2123, + OMBS = 2124, + OMBU = 2125, + OMDA = 2126, + OMMA = 2127, + OMMU = 2128, + OMSJ = 2129, + OMSS = 2130, + OMWU = 2131, + OMZA = 2132, + OMZU = 2133, + PA1 = 2134, + PA2 = 2135, + PA3 = 2136, + PA4 = 2137, + PA5 = 2138, + PA6 = 2139, + PA7 = 2140, + PA8 = 2141, + PA9 = 2142, + PANB = 2143, + PEAMA = 2144, + PEANC = 2145, + PEAPU = 2146, + PEARE = 2147, + PEAYA = 2148, + PECAJ = 2149, + PECAL = 2150, + PECUS = 2151, + PEHUC = 2152, + PEHUV = 2153, + PEICA = 2154, + PEJUN = 2155, + PELAL = 2156, + PELAM = 2157, + PELIM = 2158, + PELOR = 2159, + PEMDD = 2160, + PEMOQ = 2161, + PEPAS = 2162, + PEPIU = 2163, + PEPUN = 2164, + PESAM = 2165, + PETAC = 2166, + PETUM = 2167, + PEUCA = 2168, + PGCPM = 2169, + PGEBR = 2170, + PGEHG = 2171, + PGEPW = 2172, + PGMBA = 2173, + PGMPL = 2174, + PGMPM = 2175, + PGMRL = 2176, + PGNCD = 2177, + PGNIK = 2178, + PGNPP = 2179, + PGNSB = 2180, + PGSAN = 2181, + PGSHM = 2182, + PGWBK = 2183, + PGWHM = 2184, + PGWPD = 2185, + PH00 = 2186, + PHABR = 2187, + PHAGN = 2188, + PHAGS = 2189, + PHAKL = 2190, + PHALB = 2191, + PHANT = 2192, + PHAPA = 2193, + PHAUR = 2194, + PHBAN = 2195, + PHBAS = 2196, + PHBEN = 2197, + PHBIL = 2198, + PHBOH = 2199, + PHBTG = 2200, + PHBTN = 2201, + PHBUK = 2202, + PHBUL = 2203, + PHCAG = 2204, + PHCAM = 2205, + PHCAN = 2206, + PHCAP = 2207, + PHCAS = 2208, + PHCAT = 2209, + PHCAV = 2210, + PHCEB = 2211, + PHCOM = 2212, + PHDAO = 2213, + PHDAS = 2214, + PHDAV = 2215, + PHDIN = 2216, + PHEAS = 2217, + PHGUI = 2218, + PHIFU = 2219, + PHILI = 2220, + PHILN = 2221, + PHILS = 2222, + PHISA = 2223, + PHKAL = 2224, + PHLAG = 2225, + PHLAN = 2226, + PHLAS = 2227, + PHLEY = 2228, + PHLUN = 2229, + PHMAD = 2230, + PHMAG = 2231, + PHMAS = 2232, + PHMDC = 2233, + PHMDR = 2234, + PHMOU = 2235, + PHMSC = 2236, + PHMSR = 2237, + PHNCO = 2238, + PHNEC = 2239, + PHNER = 2240, + PHNSA = 2241, + PHNUE = 2242, + PHNUV = 2243, + PHPAM = 2244, + PHPAN = 2245, + PHPLW = 2246, + PHQUE = 2247, + PHQUI = 2248, + PHRIZ = 2249, + PHROM = 2250, + PHSAR = 2251, + PHSCO = 2252, + PHSIG = 2253, + PHSLE = 2254, + PHSLU = 2255, + PHSOR = 2256, + PHSUK = 2257, + PHSUN = 2258, + PHSUR = 2259, + PHTAR = 2260, + PHTAW = 2261, + PHWSA = 2262, + PHZAN = 2263, + PHZAS = 2264, + PHZMB = 2265, + PHZSI = 2266, + PKBA = 2267, + PKGB = 2268, + PKIS = 2269, + PKJK = 2270, + PKKP = 2271, + PKPB = 2272, + PKSD = 2273, + PL02 = 2274, + PL04 = 2275, + PL06 = 2276, + PL08 = 2277, + PL10 = 2278, + PL12 = 2279, + PL14 = 2280, + PL16 = 2281, + PL18 = 2282, + PL20 = 2283, + PL22 = 2284, + PL24 = 2285, + PL26 = 2286, + PL28 = 2287, + PL30 = 2288, + PL32 = 2289, + PSBTH = 2290, + PSDEB = 2291, + PSGZA = 2292, + PSHBN = 2293, + PSJEM = 2294, + PSJEN = 2295, + PSJRH = 2296, + PSKYS = 2297, + PSNBS = 2298, + PSQQA = 2299, + PSRBH = 2300, + PSRFH = 2301, + PSSLT = 2302, + PSTBS = 2303, + PSTKM = 2304, + PT01 = 2305, + PT02 = 2306, + PT03 = 2307, + PT04 = 2308, + PT05 = 2309, + PT06 = 2310, + PT07 = 2311, + PT08 = 2312, + PT09 = 2313, + PT10 = 2314, + PT11 = 2315, + PT12 = 2316, + PT13 = 2317, + PT14 = 2318, + PT15 = 2319, + PT16 = 2320, + PT17 = 2321, + PT18 = 2322, + PT20 = 2323, + PT30 = 2324, + PW004 = 2325, + PW150 = 2326, + PW212 = 2327, + PW214 = 2328, + PW222 = 2329, + PW224 = 2330, + PW370 = 2331, + PY1 = 2332, + PY10 = 2333, + PY11 = 2334, + PY12 = 2335, + PY13 = 2336, + PY14 = 2337, + PY15 = 2338, + PY16 = 2339, + PY19 = 2340, + PY2 = 2341, + PY3 = 2342, + PY4 = 2343, + PY5 = 2344, + PY6 = 2345, + PY7 = 2346, + PY8 = 2347, + PY9 = 2348, + PYASU = 2349, + QADA = 2350, + QAKH = 2351, + QAMS = 2352, + QARA = 2353, + QAUS = 2354, + QAWA = 2355, + QAZA = 2356, + ROAB = 2357, + ROAG = 2358, + ROAR = 2359, + ROB = 2360, + ROBC = 2361, + ROBH = 2362, + ROBN = 2363, + ROBR = 2364, + ROBT = 2365, + ROBV = 2366, + ROBZ = 2367, + ROCJ = 2368, + ROCL = 2369, + ROCS = 2370, + ROCT = 2371, + ROCV = 2372, + RODB = 2373, + RODJ = 2374, + ROGJ = 2375, + ROGL = 2376, + ROGR = 2377, + ROHD = 2378, + ROHR = 2379, + ROIF = 2380, + ROIL = 2381, + ROIS = 2382, + ROMH = 2383, + ROMM = 2384, + ROMS = 2385, + RONT = 2386, + ROOT = 2387, + ROPH = 2388, + ROSB = 2389, + ROSJ = 2390, + ROSM = 2391, + ROSV = 2392, + ROTL = 2393, + ROTM = 2394, + ROTR = 2395, + ROVL = 2396, + ROVN = 2397, + ROVS = 2398, + RS00 = 2399, + RS01 = 2400, + RS02 = 2401, + RS03 = 2402, + RS04 = 2403, + RS05 = 2404, + RS06 = 2405, + RS07 = 2406, + RS08 = 2407, + RS09 = 2408, + RS10 = 2409, + RS11 = 2410, + RS12 = 2411, + RS13 = 2412, + RS14 = 2413, + RS15 = 2414, + RS16 = 2415, + RS17 = 2416, + RS18 = 2417, + RS19 = 2418, + RS20 = 2419, + RS21 = 2420, + RS22 = 2421, + RS23 = 2422, + RS24 = 2423, + RS26 = 2424, + RS27 = 2425, + RS28 = 2426, + RUAD = 2427, + RUAL = 2428, + RUALT = 2429, + RUAMU = 2430, + RUARK = 2431, + RUAST = 2432, + RUBA = 2433, + RUBEL = 2434, + RUBRY = 2435, + RUBU = 2436, + RUCE = 2437, + RUCHE = 2438, + RUCHU = 2439, + RUCU = 2440, + RUDA = 2441, + RUIN = 2442, + RUIRK = 2443, + RUIVA = 2444, + RUKAM = 2445, + RUKB = 2446, + RUKC = 2447, + RUKDA = 2448, + RUKEM = 2449, + RUKGD = 2450, + RUKGN = 2451, + RUKHA = 2452, + RUKHM = 2453, + RUKIR = 2454, + RUKK = 2455, + RUKL = 2456, + RUKLU = 2457, + RUKO = 2458, + RUKOS = 2459, + RUKR = 2460, + RUKRS = 2461, + RUKYA = 2462, + RULEN = 2463, + RULIP = 2464, + RUMAG = 2465, + RUME = 2466, + RUMO = 2467, + RUMOS = 2468, + RUMOW = 2469, + RUMUR = 2470, + RUNEN = 2471, + RUNGR = 2472, + RUNIZ = 2473, + RUNVS = 2474, + RUOMS = 2475, + RUORE = 2476, + RUORL = 2477, + RUPER = 2478, + RUPNZ = 2479, + RUPRI = 2480, + RUPSK = 2481, + RUROS = 2482, + RURYA = 2483, + RUSA = 2484, + RUSAK = 2485, + RUSAM = 2486, + RUSAR = 2487, + RUSE = 2488, + RUSMO = 2489, + RUSPE = 2490, + RUSTA = 2491, + RUSVE = 2492, + RUTA = 2493, + RUTAM = 2494, + RUTOM = 2495, + RUTUL = 2496, + RUTVE = 2497, + RUTY = 2498, + RUTYU = 2499, + RUUD = 2500, + RUULY = 2501, + RUVGG = 2502, + RUVLA = 2503, + RUVLG = 2504, + RUVOR = 2505, + RUYAN = 2506, + RUYAR = 2507, + RUYEV = 2508, + RUZAB = 2509, + RW01 = 2510, + RW02 = 2511, + RW03 = 2512, + RW04 = 2513, + RW05 = 2514, + SA01 = 2515, + SA02 = 2516, + SA03 = 2517, + SA04 = 2518, + SA05 = 2519, + SA06 = 2520, + SA07 = 2521, + SA08 = 2522, + SA09 = 2523, + SA10 = 2524, + SA11 = 2525, + SA12 = 2526, + SA14 = 2527, + SBGU = 2528, + SBMK = 2529, + SBWE = 2530, + SC01 = 2531, + SC02 = 2532, + SC05 = 2533, + SC06 = 2534, + SC07 = 2535, + SC08 = 2536, + SC10 = 2537, + SC11 = 2538, + SC13 = 2539, + SC14 = 2540, + SC15 = 2541, + SC16 = 2542, + SC20 = 2543, + SC23 = 2544, + SDDC = 2545, + SDDN = 2546, + SDDS = 2547, + SDDW = 2548, + SDGD = 2549, + SDGK = 2550, + SDGZ = 2551, + SDKA = 2552, + SDKH = 2553, + SDKN = 2554, + SDKS = 2555, + SDNB = 2556, + SDNO = 2557, + SDNR = 2558, + SDNW = 2559, + SDRS = 2560, + SDSI = 2561, + SEAB = 2562, + SEAC = 2563, + SEBD = 2564, + SEC = 2565, + SED = 2566, + SEE = 2567, + SEF = 2568, + SEG = 2569, + SEH = 2570, + SEI = 2571, + SEK = 2572, + SEM = 2573, + SEN = 2574, + SEO = 2575, + SES = 2576, + SET = 2577, + SEU = 2578, + SEW = 2579, + SEX = 2580, + SEY = 2581, + SEZ = 2582, + SHHL = 2583, + SI001 = 2584, + SI002 = 2585, + SI003 = 2586, + SI004 = 2587, + SI005 = 2588, + SI006 = 2589, + SI007 = 2590, + SI008 = 2591, + SI009 = 2592, + SI010 = 2593, + SI011 = 2594, + SI012 = 2595, + SI013 = 2596, + SI014 = 2597, + SI015 = 2598, + SI017 = 2599, + SI018 = 2600, + SI019 = 2601, + SI020 = 2602, + SI021 = 2603, + SI023 = 2604, + SI024 = 2605, + SI025 = 2606, + SI026 = 2607, + SI029 = 2608, + SI031 = 2609, + SI032 = 2610, + SI033 = 2611, + SI034 = 2612, + SI035 = 2613, + SI036 = 2614, + SI037 = 2615, + SI038 = 2616, + SI039 = 2617, + SI040 = 2618, + SI041 = 2619, + SI042 = 2620, + SI043 = 2621, + SI044 = 2622, + SI045 = 2623, + SI046 = 2624, + SI047 = 2625, + SI048 = 2626, + SI049 = 2627, + SI050 = 2628, + SI052 = 2629, + SI053 = 2630, + SI054 = 2631, + SI055 = 2632, + SI056 = 2633, + SI057 = 2634, + SI058 = 2635, + SI059 = 2636, + SI060 = 2637, + SI061 = 2638, + SI063 = 2639, + SI064 = 2640, + SI065 = 2641, + SI066 = 2642, + SI067 = 2643, + SI068 = 2644, + SI069 = 2645, + SI070 = 2646, + SI071 = 2647, + SI072 = 2648, + SI073 = 2649, + SI074 = 2650, + SI075 = 2651, + SI076 = 2652, + SI077 = 2653, + SI079 = 2654, + SI080 = 2655, + SI081 = 2656, + SI082 = 2657, + SI083 = 2658, + SI084 = 2659, + SI085 = 2660, + SI086 = 2661, + SI087 = 2662, + SI090 = 2663, + SI091 = 2664, + SI092 = 2665, + SI094 = 2666, + SI095 = 2667, + SI096 = 2668, + SI097 = 2669, + SI098 = 2670, + SI099 = 2671, + SI100 = 2672, + SI101 = 2673, + SI102 = 2674, + SI103 = 2675, + SI104 = 2676, + SI105 = 2677, + SI106 = 2678, + SI108 = 2679, + SI109 = 2680, + SI110 = 2681, + SI111 = 2682, + SI112 = 2683, + SI113 = 2684, + SI114 = 2685, + SI115 = 2686, + SI116 = 2687, + SI117 = 2688, + SI118 = 2689, + SI119 = 2690, + SI120 = 2691, + SI121 = 2692, + SI122 = 2693, + SI123 = 2694, + SI124 = 2695, + SI125 = 2696, + SI126 = 2697, + SI127 = 2698, + SI128 = 2699, + SI129 = 2700, + SI130 = 2701, + SI131 = 2702, + SI132 = 2703, + SI133 = 2704, + SI134 = 2705, + SI135 = 2706, + SI136 = 2707, + SI137 = 2708, + SI138 = 2709, + SI139 = 2710, + SI140 = 2711, + SI141 = 2712, + SI142 = 2713, + SI143 = 2714, + SI144 = 2715, + SI146 = 2716, + SI147 = 2717, + SI148 = 2718, + SI149 = 2719, + SI150 = 2720, + SI151 = 2721, + SI152 = 2722, + SI154 = 2723, + SI155 = 2724, + SI156 = 2725, + SI158 = 2726, + SI159 = 2727, + SI160 = 2728, + SI161 = 2729, + SI162 = 2730, + SI164 = 2731, + SI165 = 2732, + SI166 = 2733, + SI167 = 2734, + SI168 = 2735, + SI169 = 2736, + SI170 = 2737, + SI171 = 2738, + SI172 = 2739, + SI173 = 2740, + SI174 = 2741, + SI175 = 2742, + SI176 = 2743, + SI179 = 2744, + SI180 = 2745, + SI182 = 2746, + SI183 = 2747, + SI184 = 2748, + SI185 = 2749, + SI186 = 2750, + SI187 = 2751, + SI188 = 2752, + SI189 = 2753, + SI190 = 2754, + SI191 = 2755, + SI193 = 2756, + SI194 = 2757, + SI195 = 2758, + SI196 = 2759, + SI197 = 2760, + SI198 = 2761, + SI199 = 2762, + SI200 = 2763, + SI201 = 2764, + SI203 = 2765, + SI204 = 2766, + SI205 = 2767, + SI206 = 2768, + SI207 = 2769, + SI208 = 2770, + SI209 = 2771, + SI210 = 2772, + SI211 = 2773, + SI212 = 2774, + SI213 = 2775, + SKBC = 2776, + SKBL = 2777, + SKKI = 2778, + SKNI = 2779, + SKPV = 2780, + SKTA = 2781, + SKTC = 2782, + SKZI = 2783, + SLE = 2784, + SLN = 2785, + SLNW = 2786, + SLS = 2787, + SLW = 2788, + SM02 = 2789, + SM04 = 2790, + SM07 = 2791, + SM09 = 2792, + SNDB = 2793, + SNDK = 2794, + SNFK = 2795, + SNKA = 2796, + SNKD = 2797, + SNKE = 2798, + SNKL = 2799, + SNLG = 2800, + SNMT = 2801, + SNSE = 2802, + SNSL = 2803, + SNTC = 2804, + SNTH = 2805, + SNZG = 2806, + SOAW = 2807, + SOBN = 2808, + SOBR = 2809, + SOBY = 2810, + SOGA = 2811, + SOHI = 2812, + SOJH = 2813, + SOMU = 2814, + SONU = 2815, + SOSA = 2816, + SOSO = 2817, + SOTO = 2818, + SOWO = 2819, + SRBR = 2820, + SRCM = 2821, + SRCR = 2822, + SRMA = 2823, + SRNI = 2824, + SRPM = 2825, + SRPR = 2826, + SRSA = 2827, + SRSI = 2828, + SRWA = 2829, + SSBN = 2830, + SSBW = 2831, + SSEC = 2832, + SSEE = 2833, + SSEW = 2834, + SSJG = 2835, + SSNU = 2836, + SSUY = 2837, + SSWR = 2838, + ST01 = 2839, + STP = 2840, + SVAH = 2841, + SVCA = 2842, + SVCH = 2843, + SVCU = 2844, + SVLI = 2845, + SVMO = 2846, + SVPA = 2847, + SVSA = 2848, + SVSM = 2849, + SVSO = 2850, + SVSS = 2851, + SVSV = 2852, + SVUN = 2853, + SVUS = 2854, + SYDI = 2855, + SYDR = 2856, + SYDY = 2857, + SYHA = 2858, + SYHI = 2859, + SYHL = 2860, + SYHM = 2861, + SYID = 2862, + SYLA = 2863, + SYQU = 2864, + SYRA = 2865, + SYRD = 2866, + SYSU = 2867, + SYTA = 2868, + SZHH = 2869, + SZLU = 2870, + SZMA = 2871, + SZSH = 2872, + TDBG = 2873, + TDCB = 2874, + TDGR = 2875, + TDLC = 2876, + TDLO = 2877, + TDND = 2878, + TDOD = 2879, + TDSI = 2880, + TGC = 2881, + TGK = 2882, + TGM = 2883, + TGP = 2884, + TGS = 2885, + TH10 = 2886, + TH11 = 2887, + TH12 = 2888, + TH13 = 2889, + TH14 = 2890, + TH15 = 2891, + TH16 = 2892, + TH17 = 2893, + TH18 = 2894, + TH19 = 2895, + TH20 = 2896, + TH21 = 2897, + TH22 = 2898, + TH23 = 2899, + TH24 = 2900, + TH25 = 2901, + TH26 = 2902, + TH27 = 2903, + TH30 = 2904, + TH31 = 2905, + TH32 = 2906, + TH33 = 2907, + TH34 = 2908, + TH35 = 2909, + TH36 = 2910, + TH37 = 2911, + TH38 = 2912, + TH39 = 2913, + TH40 = 2914, + TH41 = 2915, + TH42 = 2916, + TH43 = 2917, + TH44 = 2918, + TH45 = 2919, + TH46 = 2920, + TH47 = 2921, + TH48 = 2922, + TH49 = 2923, + TH50 = 2924, + TH51 = 2925, + TH52 = 2926, + TH53 = 2927, + TH54 = 2928, + TH55 = 2929, + TH56 = 2930, + TH57 = 2931, + TH58 = 2932, + TH60 = 2933, + TH61 = 2934, + TH62 = 2935, + TH63 = 2936, + TH64 = 2937, + TH65 = 2938, + TH66 = 2939, + TH67 = 2940, + TH70 = 2941, + TH71 = 2942, + TH72 = 2943, + TH73 = 2944, + TH74 = 2945, + TH75 = 2946, + TH76 = 2947, + TH77 = 2948, + TH80 = 2949, + TH81 = 2950, + TH82 = 2951, + TH83 = 2952, + TH84 = 2953, + TH85 = 2954, + TH86 = 2955, + TH90 = 2956, + TH91 = 2957, + TH92 = 2958, + TH93 = 2959, + TH94 = 2960, + TH95 = 2961, + TH96 = 2962, + TJDU = 2963, + TJGB = 2964, + TJKT = 2965, + TJRA = 2966, + TJSU = 2967, + TLAL = 2968, + TLAN = 2969, + TLCO = 2970, + TLDI = 2971, + TLER = 2972, + TLLI = 2973, + TMA = 2974, + TMB = 2975, + TMD = 2976, + TML = 2977, + TMM = 2978, + TN11 = 2979, + TN12 = 2980, + TN13 = 2981, + TN14 = 2982, + TN21 = 2983, + TN22 = 2984, + TN23 = 2985, + TN31 = 2986, + TN32 = 2987, + TN33 = 2988, + TN34 = 2989, + TN41 = 2990, + TN42 = 2991, + TN43 = 2992, + TN51 = 2993, + TN52 = 2994, + TN53 = 2995, + TN61 = 2996, + TN71 = 2997, + TN72 = 2998, + TN73 = 2999, + TN81 = 3000, + TN82 = 3001, + TN83 = 3002, + TO01 = 3003, + TO02 = 3004, + TO03 = 3005, + TO04 = 3006, + TO05 = 3007, + TR01 = 3008, + TR02 = 3009, + TR03 = 3010, + TR04 = 3011, + TR05 = 3012, + TR06 = 3013, + TR07 = 3014, + TR08 = 3015, + TR09 = 3016, + TR10 = 3017, + TR11 = 3018, + TR12 = 3019, + TR13 = 3020, + TR14 = 3021, + TR15 = 3022, + TR16 = 3023, + TR17 = 3024, + TR18 = 3025, + TR19 = 3026, + TR20 = 3027, + TR21 = 3028, + TR22 = 3029, + TR23 = 3030, + TR24 = 3031, + TR25 = 3032, + TR26 = 3033, + TR27 = 3034, + TR28 = 3035, + TR29 = 3036, + TR30 = 3037, + TR31 = 3038, + TR32 = 3039, + TR33 = 3040, + TR34 = 3041, + TR35 = 3042, + TR36 = 3043, + TR37 = 3044, + TR38 = 3045, + TR39 = 3046, + TR40 = 3047, + TR41 = 3048, + TR42 = 3049, + TR43 = 3050, + TR44 = 3051, + TR45 = 3052, + TR46 = 3053, + TR47 = 3054, + TR48 = 3055, + TR49 = 3056, + TR50 = 3057, + TR51 = 3058, + TR52 = 3059, + TR53 = 3060, + TR54 = 3061, + TR55 = 3062, + TR56 = 3063, + TR57 = 3064, + TR58 = 3065, + TR59 = 3066, + TR60 = 3067, + TR61 = 3068, + TR62 = 3069, + TR63 = 3070, + TR64 = 3071, + TR65 = 3072, + TR66 = 3073, + TR67 = 3074, + TR68 = 3075, + TR69 = 3076, + TR70 = 3077, + TR71 = 3078, + TR72 = 3079, + TR73 = 3080, + TR74 = 3081, + TR75 = 3082, + TR76 = 3083, + TR77 = 3084, + TR78 = 3085, + TR79 = 3086, + TR80 = 3087, + TR81 = 3088, + TTARI = 3089, + TTCHA = 3090, + TTCTT = 3091, + TTDMN = 3092, + TTMRC = 3093, + TTPED = 3094, + TTPOS = 3095, + TTPRT = 3096, + TTPTF = 3097, + TTSFO = 3098, + TTSGE = 3099, + TTSIP = 3100, + TTSJL = 3101, + TTTOB = 3102, + TTTUP = 3103, + TVFUN = 3104, + TWCHA = 3105, + TWCYQ = 3106, + TWHSQ = 3107, + TWHUA = 3108, + TWILA = 3109, + TWKEE = 3110, + TWKHH = 3111, + TWKIN = 3112, + TWLIE = 3113, + TWMIA = 3114, + TWNAN = 3115, + TWNWT = 3116, + TWPEN = 3117, + TWPIF = 3118, + TWTAO = 3119, + TWTNN = 3120, + TWTPE = 3121, + TWTTT = 3122, + TWTXG = 3123, + TWYUN = 3124, + TZ01 = 3125, + TZ02 = 3126, + TZ03 = 3127, + TZ04 = 3128, + TZ05 = 3129, + TZ06 = 3130, + TZ07 = 3131, + TZ08 = 3132, + TZ09 = 3133, + TZ10 = 3134, + TZ11 = 3135, + TZ12 = 3136, + TZ13 = 3137, + TZ14 = 3138, + TZ15 = 3139, + TZ16 = 3140, + TZ17 = 3141, + TZ18 = 3142, + TZ19 = 3143, + TZ20 = 3144, + TZ21 = 3145, + TZ22 = 3146, + TZ23 = 3147, + TZ24 = 3148, + TZ25 = 3149, + TZ26 = 3150, + TZ27 = 3151, + TZ28 = 3152, + TZ29 = 3153, + TZ30 = 3154, + TZ31 = 3155, + UA05 = 3156, + UA07 = 3157, + UA09 = 3158, + UA12 = 3159, + UA14 = 3160, + UA18 = 3161, + UA21 = 3162, + UA23 = 3163, + UA26 = 3164, + UA30 = 3165, + UA32 = 3166, + UA35 = 3167, + UA40 = 3168, + UA43 = 3169, + UA46 = 3170, + UA48 = 3171, + UA51 = 3172, + UA53 = 3173, + UA56 = 3174, + UA59 = 3175, + UA61 = 3176, + UA63 = 3177, + UA65 = 3178, + UA68 = 3179, + UA71 = 3180, + UA74 = 3181, + UA77 = 3182, + UG101 = 3183, + UG102 = 3184, + UG103 = 3185, + UG104 = 3186, + UG105 = 3187, + UG106 = 3188, + UG107 = 3189, + UG108 = 3190, + UG109 = 3191, + UG110 = 3192, + UG111 = 3193, + UG112 = 3194, + UG113 = 3195, + UG114 = 3196, + UG115 = 3197, + UG116 = 3198, + UG117 = 3199, + UG118 = 3200, + UG120 = 3201, + UG121 = 3202, + UG122 = 3203, + UG123 = 3204, + UG124 = 3205, + UG201 = 3206, + UG202 = 3207, + UG203 = 3208, + UG204 = 3209, + UG205 = 3210, + UG206 = 3211, + UG207 = 3212, + UG208 = 3213, + UG209 = 3214, + UG211 = 3215, + UG212 = 3216, + UG213 = 3217, + UG214 = 3218, + UG215 = 3219, + UG218 = 3220, + UG219 = 3221, + UG222 = 3222, + UG223 = 3223, + UG225 = 3224, + UG226 = 3225, + UG227 = 3226, + UG228 = 3227, + UG229 = 3228, + UG230 = 3229, + UG301 = 3230, + UG302 = 3231, + UG303 = 3232, + UG304 = 3233, + UG305 = 3234, + UG307 = 3235, + UG308 = 3236, + UG309 = 3237, + UG310 = 3238, + UG311 = 3239, + UG312 = 3240, + UG313 = 3241, + UG314 = 3242, + UG318 = 3243, + UG319 = 3244, + UG320 = 3245, + UG321 = 3246, + UG322 = 3247, + UG323 = 3248, + UG325 = 3249, + UG326 = 3250, + UG327 = 3251, + UG328 = 3252, + UG330 = 3253, + UG401 = 3254, + UG402 = 3255, + UG403 = 3256, + UG404 = 3257, + UG405 = 3258, + UG406 = 3259, + UG407 = 3260, + UG408 = 3261, + UG409 = 3262, + UG410 = 3263, + UG411 = 3264, + UG412 = 3265, + UG413 = 3266, + UG414 = 3267, + UG415 = 3268, + UG416 = 3269, + UG417 = 3270, + UG418 = 3271, + UG419 = 3272, + UG420 = 3273, + UG421 = 3274, + UG422 = 3275, + UG423 = 3276, + UG424 = 3277, + UG425 = 3278, + UG426 = 3279, + UM95 = 3280, + USAK = 3281, + USAL = 3282, + USAR = 3283, + USAZ = 3284, + USCA = 3285, + USCO = 3286, + USCT = 3287, + USDC = 3288, + USDE = 3289, + USFL = 3290, + USGA = 3291, + USHI = 3292, + USIA = 3293, + USID = 3294, + USIL = 3295, + USIN = 3296, + USKS = 3297, + USKY = 3298, + USLA = 3299, + USMA = 3300, + USMD = 3301, + USME = 3302, + USMI = 3303, + USMN = 3304, + USMO = 3305, + USMS = 3306, + USMT = 3307, + USNC = 3308, + USND = 3309, + USNE = 3310, + USNH = 3311, + USNJ = 3312, + USNM = 3313, + USNV = 3314, + USNY = 3315, + USOH = 3316, + USOK = 3317, + USOR = 3318, + USPA = 3319, + USRI = 3320, + USSC = 3321, + USSD = 3322, + USTN = 3323, + USTX = 3324, + USUT = 3325, + USVA = 3326, + USVT = 3327, + USWA = 3328, + USWI = 3329, + USWV = 3330, + USWY = 3331, + UYAR = 3332, + UYCA = 3333, + UYCL = 3334, + UYCO = 3335, + UYDU = 3336, + UYFD = 3337, + UYFS = 3338, + UYLA = 3339, + UYMA = 3340, + UYMO = 3341, + UYPA = 3342, + UYRN = 3343, + UYRO = 3344, + UYRV = 3345, + UYSA = 3346, + UYSJ = 3347, + UYSO = 3348, + UYTA = 3349, + UYTT = 3350, + UZAN = 3351, + UZBU = 3352, + UZFA = 3353, + UZJI = 3354, + UZNG = 3355, + UZNW = 3356, + UZQA = 3357, + UZQR = 3358, + UZSA = 3359, + UZSI = 3360, + UZSU = 3361, + UZTK = 3362, + UZXO = 3363, + VC01 = 3364, + VC04 = 3365, + VC05 = 3366, + VC06 = 3367, + VEA = 3368, + VEB = 3369, + VEC = 3370, + VED = 3371, + VEE = 3372, + VEF = 3373, + VEG = 3374, + VEH = 3375, + VEI = 3376, + VEJ = 3377, + VEK = 3378, + VEL = 3379, + VEM = 3380, + VEN = 3381, + VEO = 3382, + VEP = 3383, + VER = 3384, + VES = 3385, + VET = 3386, + VEU = 3387, + VEV = 3388, + VEW = 3389, + VEX = 3390, + VEY = 3391, + VEZ = 3392, + VN01 = 3393, + VN02 = 3394, + VN03 = 3395, + VN04 = 3396, + VN05 = 3397, + VN06 = 3398, + VN07 = 3399, + VN09 = 3400, + VN13 = 3401, + VN14 = 3402, + VN18 = 3403, + VN20 = 3404, + VN21 = 3405, + VN22 = 3406, + VN23 = 3407, + VN24 = 3408, + VN25 = 3409, + VN26 = 3410, + VN27 = 3411, + VN28 = 3412, + VN29 = 3413, + VN30 = 3414, + VN31 = 3415, + VN32 = 3416, + VN33 = 3417, + VN34 = 3418, + VN35 = 3419, + VN36 = 3420, + VN37 = 3421, + VN39 = 3422, + VN40 = 3423, + VN41 = 3424, + VN43 = 3425, + VN44 = 3426, + VN45 = 3427, + VN46 = 3428, + VN47 = 3429, + VN49 = 3430, + VN50 = 3431, + VN51 = 3432, + VN52 = 3433, + VN53 = 3434, + VN54 = 3435, + VN55 = 3436, + VN56 = 3437, + VN57 = 3438, + VN58 = 3439, + VN59 = 3440, + VN61 = 3441, + VN63 = 3442, + VN66 = 3443, + VN67 = 3444, + VN68 = 3445, + VN69 = 3446, + VN70 = 3447, + VN71 = 3448, + VN72 = 3449, + VN73 = 3450, + VNCT = 3451, + VNDN = 3452, + VNHN = 3453, + VNHP = 3454, + VNSG = 3455, + VUSAM = 3456, + VUSEE = 3457, + VUTAE = 3458, + WFSG = 3459, + WFUV = 3460, + WSAT = 3461, + WSFA = 3462, + WSTU = 3463, + YEAB = 3464, + YEAD = 3465, + YEAM = 3466, + YEBA = 3467, + YEDA = 3468, + YEDH = 3469, + YEHD = 3470, + YEHU = 3471, + YEIB = 3472, + YEJA = 3473, + YELA = 3474, + YEMA = 3475, + YEMW = 3476, + YESA = 3477, + YESD = 3478, + YESH = 3479, + YESN = 3480, + YETA = 3481, + ZAEC = 3482, + ZAFS = 3483, + ZAGP = 3484, + ZAKZN = 3485, + ZALP = 3486, + ZAMP = 3487, + ZANC = 3488, + ZANW = 3489, + ZAWC = 3490, + ZM01 = 3491, + ZM02 = 3492, + ZM03 = 3493, + ZM04 = 3494, + ZM05 = 3495, + ZM06 = 3496, + ZM07 = 3497, + ZM08 = 3498, + ZM09 = 3499, + ZM10 = 3500, + ZWBU = 3501, + ZWHA = 3502, + ZWMA = 3503, + ZWMC = 3504, + ZWME = 3505, + ZWMI = 3506, + ZWMN = 3507, + ZWMS = 3508, + ZWMV = 3509, + ZWMW = 3510 +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionCodeExtensions.cs b/src/Nager.Country.Subdivision/SubdivisionCodeExtensions.cs new file mode 100644 index 0000000..4b07a38 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionCodeExtensions.cs @@ -0,0 +1,22 @@ +namespace Nager.Country.Subdivision; + +public static class SubdivisionCodeExtensions +{ + public static Alpha2Code GetAlpha2Code( this SubdivisionCode subdivisionCode ) + { + // get name + string subdivisionName = Enum.GetName( typeof( SubdivisionCode ), subdivisionCode ); + if( subdivisionName == null ) + { + throw new UnknownSubdivisionException( $"Cannot found subdivisions for subdivision code {subdivisionCode}" ); + } + + // get alpha code 2 part + string alpha2Part = subdivisionName.Substring( 0, 2 ); + if( Enum.TryParse( alpha2Part, out Alpha2Code alpha2Code ) ) + { + return alpha2Code; + } + throw new UnknownSubdivisionException( $"Cannot found alpha2code for subdivision code {subdivisionCode}" ); + } +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/AargauSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/AargauSubdivisionInfo.cs new file mode 100644 index 0000000..1535415 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/AargauSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class AargauSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Aargau"; + public string TextCode => "CH-AG"; + public SubdivisionCode Code => SubdivisionCode.CHAG; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellAusserrhodenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellAusserrhodenSubdivisionInfo.cs new file mode 100644 index 0000000..f9d871b --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellAusserrhodenSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class AppenzellAusserrhodenSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Appenzell Ausserrhoden"; + public string TextCode => "CH-AR"; + public SubdivisionCode Code => SubdivisionCode.CHAR; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellInnerrhodenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellInnerrhodenSubdivisionInfo.cs new file mode 100644 index 0000000..94aabbf --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellInnerrhodenSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class AppenzellInnerrhodenSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Appenzell Innerrhoden"; + public string TextCode => "CH-AI"; + public SubdivisionCode Code => SubdivisionCode.CHAI; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BadenWuerttembergSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BadenWuerttembergSubdivisionInfo.cs new file mode 100644 index 0000000..329c0cf --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BadenWuerttembergSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BadenWuerttembergSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Baden-Wuerttemberg"; + public string TextCode => "DE-BW"; + public SubdivisionCode Code => SubdivisionCode.DEBW; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCitySubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCitySubdivisionInfo.cs new file mode 100644 index 0000000..b975ef1 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCitySubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BaselCitySubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Basel-City"; + public string TextCode => "CH-BS"; + public SubdivisionCode Code => SubdivisionCode.CHBS; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCountrySubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCountrySubdivisionInfo.cs new file mode 100644 index 0000000..1a000ad --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCountrySubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BaselCountrySubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Basel-Country"; + public string TextCode => "CH-BL"; + public SubdivisionCode Code => SubdivisionCode.CHBL; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BavariaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BavariaSubdivisionInfo.cs new file mode 100644 index 0000000..c7e0794 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BavariaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BavariaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Bavaria"; + public string TextCode => "DE-BY"; + public SubdivisionCode Code => SubdivisionCode.DEBY; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BerlinSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BerlinSubdivisionInfo.cs new file mode 100644 index 0000000..0e9b372 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BerlinSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BerlinSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Berlin"; + public string TextCode => "DE-BE"; + public SubdivisionCode Code => SubdivisionCode.DEBE; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BernSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BernSubdivisionInfo.cs new file mode 100644 index 0000000..9774888 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BernSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BernSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Bern"; + public string TextCode => "CH-BE"; + public SubdivisionCode Code => SubdivisionCode.CHBE; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BrandenburgSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BrandenburgSubdivisionInfo.cs new file mode 100644 index 0000000..503416f --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BrandenburgSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BrandenburgSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Brandenburg"; + public string TextCode => "DE-BB"; + public SubdivisionCode Code => SubdivisionCode.DEBB; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BremenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BremenSubdivisionInfo.cs new file mode 100644 index 0000000..df529cb --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BremenSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BremenSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Bremen"; + public string TextCode => "DE-HB"; + public SubdivisionCode Code => SubdivisionCode.DEHB; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BurgenlandSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BurgenlandSubdivisionInfo.cs new file mode 100644 index 0000000..6450202 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BurgenlandSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class BurgenlandSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Burgenland"; + public string TextCode => "AT-1"; + public SubdivisionCode Code => SubdivisionCode.AT1; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/CarinthiaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/CarinthiaSubdivisionInfo.cs new file mode 100644 index 0000000..d974498 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/CarinthiaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class CarinthiaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Carinthia"; + public string TextCode => "AT-2"; + public SubdivisionCode Code => SubdivisionCode.AT2; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/FribourgSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/FribourgSubdivisionInfo.cs new file mode 100644 index 0000000..47eeaea --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/FribourgSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class FribourgSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Fribourg"; + public string TextCode => "CH-FR"; + public SubdivisionCode Code => SubdivisionCode.CHFR; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/GenevaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/GenevaSubdivisionInfo.cs new file mode 100644 index 0000000..8704db2 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/GenevaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class GenevaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Geneva"; + public string TextCode => "CH-GE"; + public SubdivisionCode Code => SubdivisionCode.CHGE; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/GlarusSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/GlarusSubdivisionInfo.cs new file mode 100644 index 0000000..5b9bf08 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/GlarusSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class GlarusSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Glarus"; + public string TextCode => "CH-GL"; + public SubdivisionCode Code => SubdivisionCode.CHGL; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/GrisonsSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/GrisonsSubdivisionInfo.cs new file mode 100644 index 0000000..3883b7c --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/GrisonsSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class GrisonsSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Grisons"; + public string TextCode => "CH-GR"; + public SubdivisionCode Code => SubdivisionCode.CHGR; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/HamburgSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/HamburgSubdivisionInfo.cs new file mode 100644 index 0000000..7053c4a --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/HamburgSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class HamburgSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Hamburg"; + public string TextCode => "DE-HH"; + public SubdivisionCode Code => SubdivisionCode.DEHH; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/HesseSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/HesseSubdivisionInfo.cs new file mode 100644 index 0000000..1ce3029 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/HesseSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class HesseSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Hesse"; + public string TextCode => "DE-HE"; + public SubdivisionCode Code => SubdivisionCode.DEHE; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/JuraSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/JuraSubdivisionInfo.cs new file mode 100644 index 0000000..85583b3 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/JuraSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class JuraSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Jura"; + public string TextCode => "CH-JU"; + public SubdivisionCode Code => SubdivisionCode.CHJU; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/LowerAustriaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/LowerAustriaSubdivisionInfo.cs new file mode 100644 index 0000000..8757a63 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/LowerAustriaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class LowerAustriaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Lower Austria"; + public string TextCode => "AT-3"; + public SubdivisionCode Code => SubdivisionCode.AT3; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/LowerSaxonySubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/LowerSaxonySubdivisionInfo.cs new file mode 100644 index 0000000..26c84ec --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/LowerSaxonySubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class LowerSaxonySubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Lower Saxony"; + public string TextCode => "DE-NI"; + public SubdivisionCode Code => SubdivisionCode.DENI; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/LucerneSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/LucerneSubdivisionInfo.cs new file mode 100644 index 0000000..deeb931 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/LucerneSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class LucerneSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Lucerne"; + public string TextCode => "CH-LU"; + public SubdivisionCode Code => SubdivisionCode.CHLU; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/MecklenburgWesternPomeraniaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/MecklenburgWesternPomeraniaSubdivisionInfo.cs new file mode 100644 index 0000000..23ee86a --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/MecklenburgWesternPomeraniaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class MecklenburgWesternPomeraniaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Mecklenburg-Western Pomerania"; + public string TextCode => "DE-MV"; + public SubdivisionCode Code => SubdivisionCode.DEMV; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/NeuchatelSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/NeuchatelSubdivisionInfo.cs new file mode 100644 index 0000000..d653d26 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/NeuchatelSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class NeuchatelSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Neuchatel"; + public string TextCode => "CH-NE"; + public SubdivisionCode Code => SubdivisionCode.CHNE; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/NidwaldenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/NidwaldenSubdivisionInfo.cs new file mode 100644 index 0000000..09809c8 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/NidwaldenSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class NidwaldenSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Nidwalden"; + public string TextCode => "CH-NW"; + public SubdivisionCode Code => SubdivisionCode.CHNW; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/NorthRhineWestphaliaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/NorthRhineWestphaliaSubdivisionInfo.cs new file mode 100644 index 0000000..d08571a --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/NorthRhineWestphaliaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class NorthRhineWestphaliaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "North Rhine-Westphalia"; + public string TextCode => "DE-NW"; + public SubdivisionCode Code => SubdivisionCode.DENW; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ObwaldenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ObwaldenSubdivisionInfo.cs new file mode 100644 index 0000000..fad4aa7 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ObwaldenSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class ObwaldenSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Obwalden"; + public string TextCode => "CH-OW"; + public SubdivisionCode Code => SubdivisionCode.CHOW; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/RhinelandPalatinateSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/RhinelandPalatinateSubdivisionInfo.cs new file mode 100644 index 0000000..c201665 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/RhinelandPalatinateSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class RhinelandPalatinateSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Rhineland-Palatinate"; + public string TextCode => "DE-RP"; + public SubdivisionCode Code => SubdivisionCode.DERP; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SaarlandSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SaarlandSubdivisionInfo.cs new file mode 100644 index 0000000..6ba0354 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SaarlandSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SaarlandSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Saarland"; + public string TextCode => "DE-SL"; + public SubdivisionCode Code => SubdivisionCode.DESL; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SaintGallSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SaintGallSubdivisionInfo.cs new file mode 100644 index 0000000..0445600 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SaintGallSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SaintGallSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Saint Gall"; + public string TextCode => "CH-SG"; + public SubdivisionCode Code => SubdivisionCode.CHSG; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SalzburgSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SalzburgSubdivisionInfo.cs new file mode 100644 index 0000000..0c6a262 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SalzburgSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SalzburgSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Salzburg"; + public string TextCode => "AT-5"; + public SubdivisionCode Code => SubdivisionCode.AT5; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonyAnhaltSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonyAnhaltSubdivisionInfo.cs new file mode 100644 index 0000000..ee37f1c --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonyAnhaltSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SaxonyAnhaltSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Saxony-Anhalt"; + public string TextCode => "DE-ST"; + public SubdivisionCode Code => SubdivisionCode.DEST; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonySubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonySubdivisionInfo.cs new file mode 100644 index 0000000..a29d178 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonySubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SaxonySubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Saxony"; + public string TextCode => "DE-SN"; + public SubdivisionCode Code => SubdivisionCode.DESN; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SchaffhausenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SchaffhausenSubdivisionInfo.cs new file mode 100644 index 0000000..b5849a7 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SchaffhausenSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SchaffhausenSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Schaffhausen"; + public string TextCode => "CH-SH"; + public SubdivisionCode Code => SubdivisionCode.CHSH; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SchleswigHolsteinSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SchleswigHolsteinSubdivisionInfo.cs new file mode 100644 index 0000000..1691618 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SchleswigHolsteinSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SchleswigHolsteinSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Schleswig-Holstein"; + public string TextCode => "DE-SH"; + public SubdivisionCode Code => SubdivisionCode.DESH; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SchwyzSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SchwyzSubdivisionInfo.cs new file mode 100644 index 0000000..4ee77e5 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SchwyzSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SchwyzSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Schwyz"; + public string TextCode => "CH-SZ"; + public SubdivisionCode Code => SubdivisionCode.CHSZ; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SolothurnSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SolothurnSubdivisionInfo.cs new file mode 100644 index 0000000..04050ed --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SolothurnSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class SolothurnSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Solothurn"; + public string TextCode => "CH-SO"; + public SubdivisionCode Code => SubdivisionCode.CHSO; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/StyriaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/StyriaSubdivisionInfo.cs new file mode 100644 index 0000000..ff511e2 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/StyriaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class StyriaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Styria"; + public string TextCode => "AT-6"; + public SubdivisionCode Code => SubdivisionCode.AT6; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ThurgauSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ThurgauSubdivisionInfo.cs new file mode 100644 index 0000000..8d901ec --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ThurgauSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class ThurgauSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Thurgau"; + public string TextCode => "CH-TG"; + public SubdivisionCode Code => SubdivisionCode.CHTG; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ThuringiaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ThuringiaSubdivisionInfo.cs new file mode 100644 index 0000000..5ff5fcf --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ThuringiaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class ThuringiaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Thuringia"; + public string TextCode => "DE-TH"; + public SubdivisionCode Code => SubdivisionCode.DETH; + public Alpha2Code ParentAlpha2Code => Alpha2Code.DE; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/TicinoSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/TicinoSubdivisionInfo.cs new file mode 100644 index 0000000..85c61d2 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/TicinoSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class TicinoSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Ticino"; + public string TextCode => "CH-TI"; + public SubdivisionCode Code => SubdivisionCode.CHTI; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/TyrolSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/TyrolSubdivisionInfo.cs new file mode 100644 index 0000000..54136a0 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/TyrolSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class TyrolSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Tyrol"; + public string TextCode => "AT-7"; + public SubdivisionCode Code => SubdivisionCode.AT7; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/UpperAustriaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/UpperAustriaSubdivisionInfo.cs new file mode 100644 index 0000000..2b38445 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/UpperAustriaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class UpperAustriaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Upper Austria"; + public string TextCode => "AT-4"; + public SubdivisionCode Code => SubdivisionCode.AT4; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/UriSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/UriSubdivisionInfo.cs new file mode 100644 index 0000000..5b58086 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/UriSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class UriSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Uri"; + public string TextCode => "CH-UR"; + public SubdivisionCode Code => SubdivisionCode.CHUR; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ValaisSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ValaisSubdivisionInfo.cs new file mode 100644 index 0000000..74e3d5d --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ValaisSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class ValaisSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Valais"; + public string TextCode => "CH-VS"; + public SubdivisionCode Code => SubdivisionCode.CHVS; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/VaudSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/VaudSubdivisionInfo.cs new file mode 100644 index 0000000..ab51058 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/VaudSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class VaudSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Vaud"; + public string TextCode => "CH-VD"; + public SubdivisionCode Code => SubdivisionCode.CHVD; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ViennaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ViennaSubdivisionInfo.cs new file mode 100644 index 0000000..46d1102 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ViennaSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class ViennaSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Vienna"; + public string TextCode => "AT-9"; + public SubdivisionCode Code => SubdivisionCode.AT9; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/VorarlbergSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/VorarlbergSubdivisionInfo.cs new file mode 100644 index 0000000..f7cc4d6 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/VorarlbergSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class VorarlbergSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Vorarlberg"; + public string TextCode => "AT-8"; + public SubdivisionCode Code => SubdivisionCode.AT8; + public Alpha2Code ParentAlpha2Code => Alpha2Code.AT; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ZugSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ZugSubdivisionInfo.cs new file mode 100644 index 0000000..d35a7cc --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ZugSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class ZugSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Zug"; + public string TextCode => "CH-ZG"; + public SubdivisionCode Code => SubdivisionCode.CHZG; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ZurichSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ZurichSubdivisionInfo.cs new file mode 100644 index 0000000..5a1b6e5 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ZurichSubdivisionInfo.cs @@ -0,0 +1,9 @@ +namespace Nager.Country.Subdivision.SubdivisionInfos; + +public class ZurichSubdivisionInfo : ISubdivisionInfo +{ + public string CommonName => "Zurich"; + public string TextCode => "CH-ZH"; + public SubdivisionCode Code => SubdivisionCode.CHZH; + public Alpha2Code ParentAlpha2Code => Alpha2Code.CH; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionProvider.cs b/src/Nager.Country.Subdivision/SubdivisionProvider.cs new file mode 100644 index 0000000..4695811 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionProvider.cs @@ -0,0 +1,47 @@ +namespace Nager.Country.Subdivision; + +public class SubdivisionProvider : ISubdivisionProvider +{ + private readonly Dictionary _alpha2Code2SubdivisionInfos; + private readonly Dictionary _code2SubdivisionInfo; + + public SubdivisionProvider() + { + _code2SubdivisionInfo = SubdivisionProviderInitializer.Create(); + + // generate alpha 2 infos + _alpha2Code2SubdivisionInfos = _code2SubdivisionInfo + .GroupBy( entry => entry.Value.ParentAlpha2Code ) + .ToDictionary( group => group.Key, entry => entry.Select( info => info.Value ).ToArray() ); + } + + public IEnumerable GetSubdivisions() + { + return _alpha2Code2SubdivisionInfos.Values.SelectMany( x => x ); + } + + public IEnumerable GetSubdivisions( Alpha2Code alpha2Code ) + { + if( _alpha2Code2SubdivisionInfos.TryGetValue( alpha2Code, out ISubdivisionInfo[] subdivisions ) ) + { + return subdivisions; + } + + return []; + } + + public IEnumerable GetSubdivisions( Alpha3Code alpha3Code ) + { + return GetSubdivisions( alpha3Code.ToAlpha2Code() ); + } + + public ISubdivisionInfo GetSubdivision( SubdivisionCode code ) + { + if( _code2SubdivisionInfo.TryGetValue( code, out ISubdivisionInfo value ) ) + { + return value; + } + + throw new UnknownSubdivisionException( $"Cannot found subdivision for code {code}" ); + } +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionProviderExtensions.cs b/src/Nager.Country.Subdivision/SubdivisionProviderExtensions.cs new file mode 100644 index 0000000..395d0f8 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionProviderExtensions.cs @@ -0,0 +1,45 @@ +namespace Nager.Country.Subdivision; + +public static class SubdivisionProviderExtensions +{ + public static IEnumerable GetSubdivisions( this ISubdivisionProvider provider, + ICountryInfo country ) + { + return provider.GetSubdivisions( country.Alpha2Code ); + } + + public static ISubdivisionInfo GetSubdivision( this ISubdivisionProvider provider, string code ) + { + if( TryGetSubdivision( provider, code, out ISubdivisionInfo subdivision ) ) + { + return subdivision; + } + + throw new UnknownSubdivisionException( $"Cannot found a subdivision for code {code}" ); + } + + public static bool TryGetSubdivision( this ISubdivisionProvider provider, string code, out ISubdivisionInfo subdivision ) + { + if( Enum.TryParse( code, true, out SubdivisionCode subdivisionCode ) ) + { + subdivision = provider.GetSubdivision( subdivisionCode ); + return true; + } + + subdivision = null; + return false; + } + + public static ISubdivisionInfo GetSubdivisionByName( this ISubdivisionProvider provider, string subdivisionName ) + { + foreach( var subdivisionInfo in provider.GetSubdivisions() ) + { + if( subdivisionInfo.CommonName.Equals( subdivisionName, StringComparison.OrdinalIgnoreCase ) ) + { + return subdivisionInfo; + } + } + + throw new UnknownSubdivisionException( $"Cannot found a subdivision for subdivisionName {subdivisionName}" ); + } +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionProviderInitializer.cs b/src/Nager.Country.Subdivision/SubdivisionProviderInitializer.cs new file mode 100644 index 0000000..7d4b6e5 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionProviderInitializer.cs @@ -0,0 +1,64 @@ +using Nager.Country.Subdivision.SubdivisionInfos; + +namespace Nager.Country.Subdivision; + +internal static class SubdivisionProviderInitializer +{ + public static Dictionary Create() + { + return new Dictionary + { + { SubdivisionCode.AT1, new BurgenlandSubdivisionInfo() }, + { SubdivisionCode.AT2, new CarinthiaSubdivisionInfo() }, + { SubdivisionCode.AT3, new LowerAustriaSubdivisionInfo() }, + { SubdivisionCode.AT4, new UpperAustriaSubdivisionInfo() }, + { SubdivisionCode.AT5, new SalzburgSubdivisionInfo() }, + { SubdivisionCode.AT6, new StyriaSubdivisionInfo() }, + { SubdivisionCode.AT7, new TyrolSubdivisionInfo() }, + { SubdivisionCode.AT8, new VorarlbergSubdivisionInfo() }, + { SubdivisionCode.AT9, new ViennaSubdivisionInfo() }, + { SubdivisionCode.CHAG, new AargauSubdivisionInfo() }, + { SubdivisionCode.CHAR, new AppenzellAusserrhodenSubdivisionInfo() }, + { SubdivisionCode.CHAI, new AppenzellInnerrhodenSubdivisionInfo() }, + { SubdivisionCode.CHBL, new BaselCountrySubdivisionInfo() }, + { SubdivisionCode.CHBS, new BaselCitySubdivisionInfo() }, + { SubdivisionCode.CHBE, new BernSubdivisionInfo() }, + { SubdivisionCode.CHFR, new FribourgSubdivisionInfo() }, + { SubdivisionCode.CHGE, new GenevaSubdivisionInfo() }, + { SubdivisionCode.CHGL, new GlarusSubdivisionInfo() }, + { SubdivisionCode.CHGR, new GrisonsSubdivisionInfo() }, + { SubdivisionCode.CHJU, new JuraSubdivisionInfo() }, + { SubdivisionCode.CHLU, new LucerneSubdivisionInfo() }, + { SubdivisionCode.CHNE, new NeuchatelSubdivisionInfo() }, + { SubdivisionCode.CHNW, new NidwaldenSubdivisionInfo() }, + { SubdivisionCode.CHOW, new ObwaldenSubdivisionInfo() }, + { SubdivisionCode.CHSG, new SaintGallSubdivisionInfo() }, + { SubdivisionCode.CHSH, new SchaffhausenSubdivisionInfo() }, + { SubdivisionCode.CHSZ, new SchwyzSubdivisionInfo() }, + { SubdivisionCode.CHSO, new SolothurnSubdivisionInfo() }, + { SubdivisionCode.CHTG, new ThurgauSubdivisionInfo() }, + { SubdivisionCode.CHTI, new TicinoSubdivisionInfo() }, + { SubdivisionCode.CHUR, new UriSubdivisionInfo() }, + { SubdivisionCode.CHVS, new ValaisSubdivisionInfo() }, + { SubdivisionCode.CHVD, new VaudSubdivisionInfo() }, + { SubdivisionCode.CHZG, new ZugSubdivisionInfo() }, + { SubdivisionCode.CHZH, new ZurichSubdivisionInfo() }, + { SubdivisionCode.DEBW, new BadenWuerttembergSubdivisionInfo() }, + { SubdivisionCode.DEBY, new BavariaSubdivisionInfo() }, + { SubdivisionCode.DEBE, new BerlinSubdivisionInfo() }, + { SubdivisionCode.DEBB, new BrandenburgSubdivisionInfo() }, + { SubdivisionCode.DEHB, new BremenSubdivisionInfo() }, + { SubdivisionCode.DEHH, new HamburgSubdivisionInfo() }, + { SubdivisionCode.DEHE, new HesseSubdivisionInfo() }, + { SubdivisionCode.DEMV, new MecklenburgWesternPomeraniaSubdivisionInfo() }, + { SubdivisionCode.DENI, new LowerSaxonySubdivisionInfo() }, + { SubdivisionCode.DENW, new NorthRhineWestphaliaSubdivisionInfo() }, + { SubdivisionCode.DERP, new RhinelandPalatinateSubdivisionInfo() }, + { SubdivisionCode.DESL, new SaarlandSubdivisionInfo() }, + { SubdivisionCode.DESN, new SaxonySubdivisionInfo() }, + { SubdivisionCode.DEST, new SaxonyAnhaltSubdivisionInfo() }, + { SubdivisionCode.DESH, new SchleswigHolsteinSubdivisionInfo() }, + { SubdivisionCode.DETH, new ThuringiaSubdivisionInfo() } + }; + } +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslationInitializer.cs b/src/Nager.Country.Subdivision/SubdivisionTranslationInitializer.cs new file mode 100644 index 0000000..3c473a2 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslationInitializer.cs @@ -0,0 +1,42 @@ +using Nager.Country.Subdivision.SubdivisionTranslations; + +namespace Nager.Country.Subdivision; + +internal static class SubdivisionTranslationInitializer +{ + public static Dictionary Create() + { + return new Dictionary + { + { SubdivisionCode.AT2, new CarinthiaSubdivisionTranslation() }, + { SubdivisionCode.AT3, new LowerAustriaSubdivisionTranslation() }, + { SubdivisionCode.AT4, new UpperAustriaSubdivisionTranslation() }, + { SubdivisionCode.AT5, new SalzburgSubdivisionTranslation() }, + { SubdivisionCode.AT6, new StyriaSubdivisionTranslation() }, + { SubdivisionCode.AT7, new TyrolSubdivisionTranslation() }, + { SubdivisionCode.AT8, new VorarlbergSubdivisionTranslation() }, + { SubdivisionCode.AT9, new ViennaSubdivisionTranslation() }, + { SubdivisionCode.CHBL, new BaselCountrySubdivisionTranslation() }, + { SubdivisionCode.CHBS, new BaselCitySubdivisionTranslation() }, + { SubdivisionCode.CHBE, new BernSubdivisionTranslation() }, + { SubdivisionCode.CHFR, new FribourgSubdivisionTranslation() }, + { SubdivisionCode.CHGE, new GenevaSubdivisionTranslation() }, + { SubdivisionCode.CHGR, new GrisonsSubdivisionTranslation() }, + { SubdivisionCode.CHLU, new LucerneSubdivisionTranslation() }, + { SubdivisionCode.CHNE, new NeuchatelSubdivisionTranslation() }, + { SubdivisionCode.CHSG, new SaintGallSubdivisionTranslation() }, + { SubdivisionCode.CHVS, new ValaisSubdivisionTranslation() }, + { SubdivisionCode.CHZH, new ZurichSubdivisionTranslation() }, + { SubdivisionCode.DEBW, new BadenWuerttembergSubdivisionTranslation() }, + { SubdivisionCode.DEBY, new BavariaSubdivisionTranslation() }, + { SubdivisionCode.DEMV, new MecklenburgWesternPomeraniaSubdivisionTranslation() }, + { SubdivisionCode.DENI, new LowerSaxonySubdivisionTranslation() }, + { SubdivisionCode.DENW, new NorthRhineWestphaliaSubdivisionTranslation() }, + { SubdivisionCode.DERP, new RhinelandPalatinateSubdivisionTranslation() }, + { SubdivisionCode.DESN, new SaxonySubdivisionTranslation() }, + { SubdivisionCode.DEST, new SaxonyAnhaltSubdivisionTranslation() }, + { SubdivisionCode.DESH, new SchleswigHolsteinSubdivisionTranslation() }, + { SubdivisionCode.DETH, new ThuringiaSubdivisionTranslation() } + }; + } +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslationProvider.cs b/src/Nager.Country.Subdivision/SubdivisionTranslationProvider.cs new file mode 100644 index 0000000..1fafb86 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslationProvider.cs @@ -0,0 +1,58 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision; + +public class SubdivisionTranslationProvider : ISubdivisionTranslationProvider +{ + private static readonly ISubdivisionTranslation EmptyTranslation = new EmptySubdivisionTranslation(); + + private readonly Dictionary _code2SubdivisionTranslation = []; + + private ISubdivisionProvider _subdivisionProvider; + + public SubdivisionTranslationProvider( ISubdivisionProvider subdivisionProvider = null ) + { + _subdivisionProvider = subdivisionProvider; + + _code2SubdivisionTranslation = SubdivisionTranslationInitializer.Create(); + } + + public ISubdivisionTranslation GetSubdivisionTranslation( SubdivisionCode code ) + { + if( _code2SubdivisionTranslation.TryGetValue( code, out var translation ) ) + { + return translation; + } + + return EmptyTranslation; + } + + public string GetSubdivisionTranslatedName( SubdivisionCode code, LanguageCode languageCode ) + { + if( !_code2SubdivisionTranslation.TryGetValue( code, + out ISubdivisionTranslation subdivisionTranslation ) ) + { + return null; + } + + return subdivisionTranslation.Translations + .FirstOrDefault( x => x.LanguageCode == languageCode ) + ?.Name; + } + + public string GetSubdivisionTranslatedOrCommonName( SubdivisionCode code, LanguageCode languageCode ) + { + string translatedName = GetSubdivisionTranslatedName( code, languageCode ); + if( translatedName != null ) + { + return translatedName; + } + + return GetProvider().GetSubdivision( code ).CommonName; + } + + private ISubdivisionProvider GetProvider() + { + return _subdivisionProvider ??= new SubdivisionProvider(); + } +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BadenWuerttembergSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BadenWuerttembergSubdivisionTranslation.cs new file mode 100644 index 0000000..da18fdb --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BadenWuerttembergSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class BadenWuerttembergSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Baden-Württemberg") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCitySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCitySubdivisionTranslation.cs new file mode 100644 index 0000000..22c12b2 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCitySubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class BaselCitySubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Basel-Stadt") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCountrySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCountrySubdivisionTranslation.cs new file mode 100644 index 0000000..f39c3c5 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCountrySubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class BaselCountrySubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Basel-Landschaft") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BavariaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BavariaSubdivisionTranslation.cs new file mode 100644 index 0000000..30211d0 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BavariaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class BavariaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Bayern") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BernSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BernSubdivisionTranslation.cs new file mode 100644 index 0000000..a22809c --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BernSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class BernSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.FR, "Berne") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/CarinthiaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/CarinthiaSubdivisionTranslation.cs new file mode 100644 index 0000000..653aff9 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/CarinthiaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class CarinthiaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Kärnten") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/FribourgSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/FribourgSubdivisionTranslation.cs new file mode 100644 index 0000000..ab26d75 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/FribourgSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class FribourgSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.FR, "Fribourg"), new TranslationInfo( LanguageCode.DE, "Freiburg") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/GenevaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/GenevaSubdivisionTranslation.cs new file mode 100644 index 0000000..816c0b7 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/GenevaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class GenevaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.FR, "Genève") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/GrisonsSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/GrisonsSubdivisionTranslation.cs new file mode 100644 index 0000000..d490be5 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/GrisonsSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class GrisonsSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Graubünden"), new TranslationInfo( LanguageCode.IT, "Grigioni"), new TranslationInfo( LanguageCode.RM, "Grischun") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerAustriaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerAustriaSubdivisionTranslation.cs new file mode 100644 index 0000000..5cbfc8d --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerAustriaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class LowerAustriaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Niederösterreich") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerSaxonySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerSaxonySubdivisionTranslation.cs new file mode 100644 index 0000000..6486a6e --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerSaxonySubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class LowerSaxonySubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Niedersachsen") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/LucerneSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/LucerneSubdivisionTranslation.cs new file mode 100644 index 0000000..e34ce0a --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/LucerneSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class LucerneSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Luzern") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/MecklenburgWesternPomeraniaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/MecklenburgWesternPomeraniaSubdivisionTranslation.cs new file mode 100644 index 0000000..25cf38e --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/MecklenburgWesternPomeraniaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class MecklenburgWesternPomeraniaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Mecklenburg-Vorpommern") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/NeuchatelSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/NeuchatelSubdivisionTranslation.cs new file mode 100644 index 0000000..81cdeae --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/NeuchatelSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class NeuchatelSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.FR, "Neuchâtel"), new TranslationInfo( LanguageCode.DE, "Neuenburg") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/NorthRhineWestphaliaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/NorthRhineWestphaliaSubdivisionTranslation.cs new file mode 100644 index 0000000..bf1295e --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/NorthRhineWestphaliaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class NorthRhineWestphaliaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Nordrhein-Westfalen") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/RhinelandPalatinateSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/RhinelandPalatinateSubdivisionTranslation.cs new file mode 100644 index 0000000..bd22f5f --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/RhinelandPalatinateSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class RhinelandPalatinateSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Rheinland-Pfalz") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SaintGallSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaintGallSubdivisionTranslation.cs new file mode 100644 index 0000000..4a9c829 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaintGallSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class SaintGallSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Sankt Gallen") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SalzburgSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SalzburgSubdivisionTranslation.cs new file mode 100644 index 0000000..b4495fa --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SalzburgSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class SalzburgSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Salzburg") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonyAnhaltSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonyAnhaltSubdivisionTranslation.cs new file mode 100644 index 0000000..e66d049 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonyAnhaltSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class SaxonyAnhaltSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Sachsen-Anhalt") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonySubdivisionTranslation.cs new file mode 100644 index 0000000..edc876d --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonySubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class SaxonySubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Sachsen") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SchleswigHolsteinSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SchleswigHolsteinSubdivisionTranslation.cs new file mode 100644 index 0000000..3603d82 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SchleswigHolsteinSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class SchleswigHolsteinSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Schleswig-Holstein") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/StyriaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/StyriaSubdivisionTranslation.cs new file mode 100644 index 0000000..cffd246 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/StyriaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class StyriaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Steiermark") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/ThuringiaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/ThuringiaSubdivisionTranslation.cs new file mode 100644 index 0000000..a5dc309 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/ThuringiaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class ThuringiaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Thüringen") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/TyrolSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/TyrolSubdivisionTranslation.cs new file mode 100644 index 0000000..efdb3f7 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/TyrolSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class TyrolSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Tirol") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/UpperAustriaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/UpperAustriaSubdivisionTranslation.cs new file mode 100644 index 0000000..8bcc3fc --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/UpperAustriaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class UpperAustriaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Oberösterreich") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/ValaisSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/ValaisSubdivisionTranslation.cs new file mode 100644 index 0000000..699df47 --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/ValaisSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class ValaisSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Wallis") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/ViennaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/ViennaSubdivisionTranslation.cs new file mode 100644 index 0000000..ca5b33f --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/ViennaSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class ViennaSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Wien") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/VorarlbergSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/VorarlbergSubdivisionTranslation.cs new file mode 100644 index 0000000..dcb0b1d --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/VorarlbergSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class VorarlbergSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Vorarlberg") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/ZurichSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/ZurichSubdivisionTranslation.cs new file mode 100644 index 0000000..5ca131e --- /dev/null +++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/ZurichSubdivisionTranslation.cs @@ -0,0 +1,11 @@ +using Nager.Country.Translation; + +namespace Nager.Country.Subdivision.SubdivisionTranslations; + +public class ZurichSubdivisionTranslation : ISubdivisionTranslation +{ + public TranslationInfo[] Translations => new[] + { + new TranslationInfo( LanguageCode.DE, "Zürich") + }; +} \ No newline at end of file diff --git a/src/Nager.Country.Subdivision/UnknownSubdivisionException.cs b/src/Nager.Country.Subdivision/UnknownSubdivisionException.cs new file mode 100644 index 0000000..66bfec9 --- /dev/null +++ b/src/Nager.Country.Subdivision/UnknownSubdivisionException.cs @@ -0,0 +1,13 @@ +namespace Nager.Country.Subdivision; + +public class UnknownSubdivisionException : Exception +{ + public UnknownSubdivisionException() + { + } + + public UnknownSubdivisionException( string message ) : base( message ) + { + + } +} \ No newline at end of file diff --git a/src/Nager.Country.Translation/TranslatorProviderExtensions.cs b/src/Nager.Country.Translation/TranslatorProviderExtensions.cs new file mode 100644 index 0000000..03f98f0 --- /dev/null +++ b/src/Nager.Country.Translation/TranslatorProviderExtensions.cs @@ -0,0 +1,22 @@ +namespace Nager.Country.Translation; + +public static class TranslatorProviderExtensions +{ + public static string GetCountryTranslatedOrCommonName( this ITranslationProvider provider, + Alpha2Code alpha2Code, + LanguageCode languageCode, + ICountryProvider countryProvider ) + { + ICountryTranslation translation = provider.GetCountryTranslation( alpha2Code ); + + TranslationInfo countryTranslation = + translation.Translations.FirstOrDefault( x => x.LanguageCode == languageCode ); + + if( countryTranslation != null ) + { + return countryTranslation.Name; + } + + return countryProvider.GetCountry( alpha2Code ).CommonName; + } +} \ No newline at end of file diff --git a/src/Nager.Country.sln b/src/Nager.Country.sln index d77a48d..deea421 100644 --- a/src/Nager.Country.sln +++ b/src/Nager.Country.sln @@ -11,6 +11,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Nager.Country.Export", "Nag EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Nager.Country.Translation", "Nager.Country.Translation\Nager.Country.Translation.csproj", "{B72F1FD6-FDCB-4ACC-9B67-4A9CF8C02D34}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nager.Country.Subdivision", "Nager.Country.Subdivision\Nager.Country.Subdivision.csproj", "{4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -33,6 +35,10 @@ Global {B72F1FD6-FDCB-4ACC-9B67-4A9CF8C02D34}.Debug|Any CPU.Build.0 = Debug|Any CPU {B72F1FD6-FDCB-4ACC-9B67-4A9CF8C02D34}.Release|Any CPU.ActiveCfg = Release|Any CPU {B72F1FD6-FDCB-4ACC-9B67-4A9CF8C02D34}.Release|Any CPU.Build.0 = Release|Any CPU + {4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/Nager.Country/AlphaCodeConversionExtensions.cs b/src/Nager.Country/AlphaCodeConversionExtensions.cs new file mode 100644 index 0000000..e3ce5dd --- /dev/null +++ b/src/Nager.Country/AlphaCodeConversionExtensions.cs @@ -0,0 +1,14 @@ +namespace Nager.Country; + +public static class AlphaCodeConversionExtensions +{ + public static Alpha3Code ToAlpha3Code( this Alpha2Code code ) + { + return (Alpha3Code)code; + } + + public static Alpha2Code ToAlpha2Code( this Alpha3Code code ) + { + return (Alpha2Code)code; + } +} \ No newline at end of file diff --git a/src/Nager.Country/CountryProviderExtensions.cs b/src/Nager.Country/CountryProviderExtensions.cs new file mode 100644 index 0000000..e0bb3a9 --- /dev/null +++ b/src/Nager.Country/CountryProviderExtensions.cs @@ -0,0 +1,15 @@ +namespace Nager.Country; + +public static class CountryProviderExtensions +{ + public static IEnumerable GetCountriesByRegion( this ICountryProvider provider, Region region ) + { + return provider.GetCountries().Where( x => x.Region == region ); + } + + public static IEnumerable GetCountriesBySubRegion( this ICountryProvider provider, + SubRegion subRegion ) + { + return provider.GetCountries().Where( x => x.SubRegion == subRegion ); + } +} \ No newline at end of file