syntax = "proto3";

option go_package = "github.com/lbryio/herald.go/protobuf/go/pb";

package pb;

message Claim {
    oneof type {
        Stream stream = 1;
        Channel channel = 2;
        ClaimList collection = 3;
        ClaimReference repost = 4;
    }
    string title = 8;
    string description = 9;
    Source thumbnail = 10;
    repeated string tags = 11;
    repeated Language languages = 12;
    repeated Location locations = 13;
}

message Stream {
    Source source = 1;
    string author = 2;
    string license = 3;
    string license_url = 4;
    int64 release_time = 5; // seconds since UNIX epoch
    Fee fee = 6;
    oneof type {
        Image image = 10;
        Video video = 11;
        Audio audio = 12;
        Software software = 13;
    }
}

message Channel {
    bytes public_key = 1;
    string email = 2;
    string website_url = 3;
    Source cover = 4;
    ClaimList featured = 5;
}

message ClaimReference {
    bytes claim_hash = 1;
}

message ClaimList {
    enum ListType {
        COLLECTION = 0; // play lists, etc
        DERIVATION = 2; // movie in multiple languages, software for different OSes
    }
    ListType list_type = 1;
    repeated ClaimReference claim_references = 2;
}

message Source {
    bytes hash = 1; // SHA-384 hash of the entire unencrypted file
    string name = 2;
    uint64 size = 3;
    string media_type = 4;

    string url = 5;
    bytes sd_hash = 6; // SHA-384 hash of the streams manifest blob
    bytes bt_infohash = 7; // 20-byte SHA1 hash used to reference a torrent file
}

message Fee {
    enum Currency {
        UNKNOWN_CURRENCY = 0;
        LBC = 1;
        BTC = 2;
        USD = 3;
    }
    Currency currency = 1;
    bytes address = 2;
    uint64 amount = 3; // deweys for LBC/BTC, cents for USD
}

message Image {
    uint32 width = 1;
    uint32 height = 2;
}

message Video {
    uint32 width = 1;
    uint32 height = 2;
    uint32 duration = 3;
    Audio audio = 15;
}

message Audio {
    uint32 duration = 1;
}

message Software {
    enum OS {
        UNKNOWN_OS = 0;
        ANY = 1;
        LINUX = 2;
        WINDOWS = 3;
        MAC = 4;
        ANDROID = 5;
        IOS = 6;
    }
    string os = 1;
}

// RFC 5646
message Language {
    Language language = 1;
    Script script = 2;
    Location.Country region = 3;

    // ISO 639-1
    enum Language {
        UNKNOWN_LANGUAGE = 0;
        en = 1;
        aa = 2;
        ab = 3;
        ae = 4;
        af = 5;
        ak = 6;
        am = 7;
        an = 8;
        ar = 9;
        as = 10;
        av = 11;
        ay = 12;
        az = 13;
        ba = 14;
        be = 15;
        bg = 16;
        bh = 17;
        bi = 18;
        bm = 19;
        bn = 20;
        bo = 21;
        br = 22;
        bs = 23;
        ca = 24;
        ce = 25;
        ch = 26;
        co = 27;
        cr = 28;
        cs = 29;
        cu = 30;
        cv = 31;
        cy = 32;
        da = 33;
        de = 34;
        dv = 35;
        dz = 36;
        ee = 37;
        el = 38;
        eo = 39;
        es = 40;
        et = 41;
        eu = 42;
        fa = 43;
        ff = 44;
        fi = 45;
        fj = 46;
        fo = 47;
        fr = 48;
        fy = 49;
        ga = 50;
        gd = 51;
        gl = 52;
        gn = 53;
        gu = 54;
        gv = 55;
        ha = 56;
        he = 57;
        hi = 58;
        ho = 59;
        hr = 60;
        ht = 61;
        hu = 62;
        hy = 63;
        hz = 64;
        ia = 65;
        id = 66;
        ie = 67;
        ig = 68;
        ii = 69;
        ik = 70;
        io = 71;
        is = 72;
        it = 73;
        iu = 74;
        ja = 75;
        jv = 76;
        ka = 77;
        kg = 78;
        ki = 79;
        kj = 80;
        kk = 81;
        kl = 82;
        km = 83;
        kn = 84;
        ko = 85;
        kr = 86;
        ks = 87;
        ku = 88;
        kv = 89;
        kw = 90;
        ky = 91;
        la = 92;
        lb = 93;
        lg = 94;
        li = 95;
        ln = 96;
        lo = 97;
        lt = 98;
        lu = 99;
        lv = 100;
        mg = 101;
        mh = 102;
        mi = 103;
        mk = 104;
        ml = 105;
        mn = 106;
        mr = 107;
        ms = 108;
        mt = 109;
        my = 110;
        na = 111;
        nb = 112;
        nd = 113;
        ne = 114;
        ng = 115;
        nl = 116;
        nn = 117;
        no = 118;
        nr = 119;
        nv = 120;
        ny = 121;
        oc = 122;
        oj = 123;
        om = 124;
        or = 125;
        os = 126;
        pa = 127;
        pi = 128;
        pl = 129;
        ps = 130;
        pt = 131;
        qu = 132;
        rm = 133;
        rn = 134;
        ro = 135;
        ru = 136;
        rw = 137;
        sa = 138;
        sc = 139;
        sd = 140;
        se = 141;
        sg = 142;
        si = 143;
        sk = 144;
        sl = 145;
        sm = 146;
        sn = 147;
        so = 148;
        sq = 149;
        sr = 150;
        ss = 151;
        st = 152;
        su = 153;
        sv = 154;
        sw = 155;
        ta = 156;
        te = 157;
        tg = 158;
        th = 159;
        ti = 160;
        tk = 161;
        tl = 162;
        tn = 163;
        to = 164;
        tr = 165;
        ts = 166;
        tt = 167;
        tw = 168;
        ty = 169;
        ug = 170;
        uk = 171;
        ur = 172;
        uz = 173;
        ve = 174;
        vi = 175;
        vo = 176;
        wa = 177;
        wo = 178;
        xh = 179;
        yi = 180;
        yo = 181;
        za = 182;
        zh = 183;
        zu = 184;
    }

    // ISO 15924
    enum Script {
        UNKNOWN_SCRIPT = 0;
        Adlm = 1;
        Afak = 2;
        Aghb = 3;
        Ahom = 4;
        Arab = 5;
        Aran = 6;
        Armi = 7;
        Armn = 8;
        Avst = 9;
        Bali = 10;
        Bamu = 11;
        Bass = 12;
        Batk = 13;
        Beng = 14;
        Bhks = 15;
        Blis = 16;
        Bopo = 17;
        Brah = 18;
        Brai = 19;
        Bugi = 20;
        Buhd = 21;
        Cakm = 22;
        Cans = 23;
        Cari = 24;
        Cham = 25;
        Cher = 26;
        Cirt = 27;
        Copt = 28;
        Cpmn = 29;
        Cprt = 30;
        Cyrl = 31;
        Cyrs = 32;
        Deva = 33;
        Dogr = 34;
        Dsrt = 35;
        Dupl = 36;
        Egyd = 37;
        Egyh = 38;
        Egyp = 39;
        Elba = 40;
        Elym = 41;
        Ethi = 42;
        Geok = 43;
        Geor = 44;
        Glag = 45;
        Gong = 46;
        Gonm = 47;
        Goth = 48;
        Gran = 49;
        Grek = 50;
        Gujr = 51;
        Guru = 52;
        Hanb = 53;
        Hang = 54;
        Hani = 55;
        Hano = 56;
        Hans = 57;
        Hant = 58;
        Hatr = 59;
        Hebr = 60;
        Hira = 61;
        Hluw = 62;
        Hmng = 63;
        Hmnp = 64;
        Hrkt = 65;
        Hung = 66;
        Inds = 67;
        Ital = 68;
        Jamo = 69;
        Java = 70;
        Jpan = 71;
        Jurc = 72;
        Kali = 73;
        Kana = 74;
        Khar = 75;
        Khmr = 76;
        Khoj = 77;
        Kitl = 78;
        Kits = 79;
        Knda = 80;
        Kore = 81;
        Kpel = 82;
        Kthi = 83;
        Lana = 84;
        Laoo = 85;
        Latf = 86;
        Latg = 87;
        Latn = 88;
        Leke = 89;
        Lepc = 90;
        Limb = 91;
        Lina = 92;
        Linb = 93;
        Lisu = 94;
        Loma = 95;
        Lyci = 96;
        Lydi = 97;
        Mahj = 98;
        Maka = 99;
        Mand = 100;
        Mani = 101;
        Marc = 102;
        Maya = 103;
        Medf = 104;
        Mend = 105;
        Merc = 106;
        Mero = 107;
        Mlym = 108;
        Modi = 109;
        Mong = 110;
        Moon = 111;
        Mroo = 112;
        Mtei = 113;
        Mult = 114;
        Mymr = 115;
        Nand = 116;
        Narb = 117;
        Nbat = 118;
        Newa = 119;
        Nkdb = 120;
        Nkgb = 121;
        Nkoo = 122;
        Nshu = 123;
        Ogam = 124;
        Olck = 125;
        Orkh = 126;
        Orya = 127;
        Osge = 128;
        Osma = 129;
        Palm = 130;
        Pauc = 131;
        Perm = 132;
        Phag = 133;
        Phli = 134;
        Phlp = 135;
        Phlv = 136;
        Phnx = 137;
        Plrd = 138;
        Piqd = 139;
        Prti = 140;
        Qaaa = 141;
        Qabx = 142;
        Rjng = 143;
        Rohg = 144;
        Roro = 145;
        Runr = 146;
        Samr = 147;
        Sara = 148;
        Sarb = 149;
        Saur = 150;
        Sgnw = 151;
        Shaw = 152;
        Shrd = 153;
        Shui = 154;
        Sidd = 155;
        Sind = 156;
        Sinh = 157;
        Sogd = 158;
        Sogo = 159;
        Sora = 160;
        Soyo = 161;
        Sund = 162;
        Sylo = 163;
        Syrc = 164;
        Syre = 165;
        Syrj = 166;
        Syrn = 167;
        Tagb = 168;
        Takr = 169;
        Tale = 170;
        Talu = 171;
        Taml = 172;
        Tang = 173;
        Tavt = 174;
        Telu = 175;
        Teng = 176;
        Tfng = 177;
        Tglg = 178;
        Thaa = 179;
        Thai = 180;
        Tibt = 181;
        Tirh = 182;
        Ugar = 183;
        Vaii = 184;
        Visp = 185;
        Wara = 186;
        Wcho = 187;
        Wole = 188;
        Xpeo = 189;
        Xsux = 190;
        Yiii = 191;
        Zanb = 192;
        Zinh = 193;
        Zmth = 194;
        Zsye = 195;
        Zsym = 196;
        Zxxx = 197;
        Zyyy = 198;
        Zzzz = 199;
    }
}

message Location {
    Country country = 1;
    string state = 2;
    string city = 3;
    string code = 4;
    sint32 latitude = 5;
    sint32 longitude = 6;

    enum Country {
        UNKNOWN_COUNTRY = 0;
        AF = 1;
        AX = 2;
        AL = 3;
        DZ = 4;
        AS = 5;
        AD = 6;
        AO = 7;
        AI = 8;
        AQ = 9;
        AG = 10;
        AR = 11;
        AM = 12;
        AW = 13;
        AU = 14;
        AT = 15;
        AZ = 16;
        BS = 17;
        BH = 18;
        BD = 19;
        BB = 20;
        BY = 21;
        BE = 22;
        BZ = 23;
        BJ = 24;
        BM = 25;
        BT = 26;
        BO = 27;
        BQ = 28;
        BA = 29;
        BW = 30;
        BV = 31;
        BR = 32;
        IO = 33;
        BN = 34;
        BG = 35;
        BF = 36;
        BI = 37;
        KH = 38;
        CM = 39;
        CA = 40;
        CV = 41;
        KY = 42;
        CF = 43;
        TD = 44;
        CL = 45;
        CN = 46;
        CX = 47;
        CC = 48;
        CO = 49;
        KM = 50;
        CG = 51;
        CD = 52;
        CK = 53;
        CR = 54;
        CI = 55;
        HR = 56;
        CU = 57;
        CW = 58;
        CY = 59;
        CZ = 60;
        DK = 61;
        DJ = 62;
        DM = 63;
        DO = 64;
        EC = 65;
        EG = 66;
        SV = 67;
        GQ = 68;
        ER = 69;
        EE = 70;
        ET = 71;
        FK = 72;
        FO = 73;
        FJ = 74;
        FI = 75;
        FR = 76;
        GF = 77;
        PF = 78;
        TF = 79;
        GA = 80;
        GM = 81;
        GE = 82;
        DE = 83;
        GH = 84;
        GI = 85;
        GR = 86;
        GL = 87;
        GD = 88;
        GP = 89;
        GU = 90;
        GT = 91;
        GG = 92;
        GN = 93;
        GW = 94;
        GY = 95;
        HT = 96;
        HM = 97;
        VA = 98;
        HN = 99;
        HK = 100;
        HU = 101;
        IS = 102;
        IN = 103;
        ID = 104;
        IR = 105;
        IQ = 106;
        IE = 107;
        IM = 108;
        IL = 109;
        IT = 110;
        JM = 111;
        JP = 112;
        JE = 113;
        JO = 114;
        KZ = 115;
        KE = 116;
        KI = 117;
        KP = 118;
        KR = 119;
        KW = 120;
        KG = 121;
        LA = 122;
        LV = 123;
        LB = 124;
        LS = 125;
        LR = 126;
        LY = 127;
        LI = 128;
        LT = 129;
        LU = 130;
        MO = 131;
        MK = 132;
        MG = 133;
        MW = 134;
        MY = 135;
        MV = 136;
        ML = 137;
        MT = 138;
        MH = 139;
        MQ = 140;
        MR = 141;
        MU = 142;
        YT = 143;
        MX = 144;
        FM = 145;
        MD = 146;
        MC = 147;
        MN = 148;
        ME = 149;
        MS = 150;
        MA = 151;
        MZ = 152;
        MM = 153;
        NA = 154;
        NR = 155;
        NP = 156;
        NL = 157;
        NC = 158;
        NZ = 159;
        NI = 160;
        NE = 161;
        NG = 162;
        NU = 163;
        NF = 164;
        MP = 165;
        NO = 166;
        OM = 167;
        PK = 168;
        PW = 169;
        PS = 170;
        PA = 171;
        PG = 172;
        PY = 173;
        PE = 174;
        PH = 175;
        PN = 176;
        PL = 177;
        PT = 178;
        PR = 179;
        QA = 180;
        RE = 181;
        RO = 182;
        RU = 183;
        RW = 184;
        BL = 185;
        SH = 186;
        KN = 187;
        LC = 188;
        MF = 189;
        PM = 190;
        VC = 191;
        WS = 192;
        SM = 193;
        ST = 194;
        SA = 195;
        SN = 196;
        RS = 197;
        SC = 198;
        SL = 199;
        SG = 200;
        SX = 201;
        SK = 202;
        SI = 203;
        SB = 204;
        SO = 205;
        ZA = 206;
        GS = 207;
        SS = 208;
        ES = 209;
        LK = 210;
        SD = 211;
        SR = 212;
        SJ = 213;
        SZ = 214;
        SE = 215;
        CH = 216;
        SY = 217;
        TW = 218;
        TJ = 219;
        TZ = 220;
        TH = 221;
        TL = 222;
        TG = 223;
        TK = 224;
        TO = 225;
        TT = 226;
        TN = 227;
        TR = 228;
        TM = 229;
        TC = 230;
        TV = 231;
        UG = 232;
        UA = 233;
        AE = 234;
        GB = 235;
        US = 236;
        UM = 237;
        UY = 238;
        UZ = 239;
        VU = 240;
        VE = 241;
        VN = 242;
        VG = 243;
        VI = 244;
        WF = 245;
        EH = 246;
        YE = 247;
        ZM = 248;
        ZW = 249;
        // UN M.49 Geographic Regions
        R001 = 250; // World
        R002 = 251; // Africa
        R015 = 252; // Northern Africa
        R012 = 253; // Algeria  DZA
        R818 = 254; // Egypt  EGY
        R434 = 255; // Libya  LBY
        R504 = 256; // Morocco  MAR
        R729 = 257; // Sudan  SDN LDC
        R788 = 258; // Tunisia  TUN
        R732 = 259; // Western Sahara   ESH
        R202 = 260; // Sub-Saharan Africa
        R014 = 261; // Eastern Africa
        R086 = 262; // British Indian Ocean Territory   IOT
        R108 = 263; // Burundi  BDI LDC LLDC
        R174 = 264; // Comoros  COM LDC SIDS
        R262 = 265; // Djibouti   DJI LDC
        R232 = 266; // Eritrea  ERI LDC
        R231 = 267; // Ethiopia   ETH LDC LLDC
        R260 = 268; // French Southern Territories  ATF
        R404 = 269; // Kenya  KEN
        R450 = 270; // Madagascar   MDG LDC
        R454 = 271; // Malawi   MWI LDC LLDC
        R480 = 272; // Mauritius  MUS SIDS
        R175 = 273; // Mayotte  MYT
        R508 = 274; // Mozambique   MOZ LDC
        R638 = 275; // Réunion  REU
        R646 = 276; // Rwanda   RWA LDC LLDC
        R690 = 277; // Seychelles   SYC SIDS
        R706 = 278; // Somalia  SOM LDC
        R728 = 279; // South Sudan  SSD LDC LLDC
        R800 = 280; // Uganda   UGA LDC LLDC
        R834 = 281; // United Republic of Tanzania  TZA LDC
        R894 = 282; // Zambia   ZMB LDC LLDC
        R716 = 283; // Zimbabwe   ZWE LLDC
        R017 = 284; // Middle Africa
        R024 = 285; // Angola   AGO LDC
        R120 = 286; // Cameroon   CMR
        R140 = 287; // Central African Republic   CAF LDC LLDC
        R148 = 288; // Chad   TCD LDC LLDC
        R178 = 289; // Congo  COG
        R180 = 290; // Democratic Republic of the Congo   COD LDC
        R226 = 291; // Equatorial Guinea  GNQ
        R266 = 292; // Gabon  GAB
        R678 = 293; // Sao Tome and Principe  STP LDC SIDS
        R018 = 294; // Southern Africa
        R072 = 295; // Botswana   BWA LLDC
        R748 = 296; // Eswatini   SWZ LLDC
        R426 = 297; // Lesotho  LSO LDC LLDC
        R516 = 298; // Namibia  NAM
        R710 = 299; // South Africa   ZAF
        R011 = 300; // Western Africa
        R204 = 301; // Benin  BEN LDC
        R854 = 302; // Burkina Faso   BFA LDC LLDC
        R132 = 303; // Cabo Verde   CPV SIDS
        R384 = 304; // Côte d’Ivoire  CIV
        R270 = 305; // Gambia   GMB LDC
        R288 = 306; // Ghana  GHA
        R324 = 307; // Guinea   GIN LDC
        R624 = 308; // Guinea-Bissau  GNB LDC SIDS
        R430 = 309; // Liberia  LBR LDC
        R466 = 310; // Mali   MLI LDC LLDC
        R478 = 311; // Mauritania   MRT LDC
        R562 = 312; // Niger  NER LDC LLDC
        R566 = 313; // Nigeria  NGA
        R654 = 314; // Saint Helena   SHN
        R686 = 315; // Senegal  SEN LDC
        R694 = 316; // Sierra Leone   SLE LDC
        R768 = 317; // Togo   TGO LDC
        R019 = 318; // Americas
        R419 = 319; // Latin America and the Caribbean
        R029 = 320; // Caribbean
        R660 = 321; // Anguilla   AIA SIDS
        R028 = 322; // Antigua and Barbuda  ATG SIDS
        R533 = 323; // Aruba  ABW SIDS
        R044 = 324; // Bahamas  BHS SIDS
        R052 = 325; // Barbados   BRB SIDS
        R535 = 326; // Bonaire, Sint Eustatius and Saba   BES SIDS
        R092 = 327; // British Virgin Islands   VGB SIDS
        R136 = 328; // Cayman Islands   CYM
        R192 = 329; // Cuba   CUB SIDS
        R531 = 330; // Curaçao  CUW SIDS
        R212 = 331; // Dominica   DMA SIDS
        R214 = 332; // Dominican Republic   DOM SIDS
        R308 = 333; // Grenada  GRD SIDS
        R312 = 334; // Guadeloupe   GLP
        R332 = 335; // Haiti  HTI LDC SIDS
        R388 = 336; // Jamaica  JAM SIDS
        R474 = 337; // Martinique   MTQ
        R500 = 338; // Montserrat   MSR SIDS
        R630 = 339; // Puerto Rico  PRI SIDS
        R652 = 340; // Saint Barthélemy   BLM
        R659 = 341; // Saint Kitts and Nevis  KNA SIDS
        R662 = 342; // Saint Lucia  LCA SIDS
        R663 = 343; // Saint Martin (French Part)   MAF
        R670 = 344; // Saint Vincent and the Grenadines   VCT SIDS
        R534 = 345; // Sint Maarten (Dutch part)  SXM SIDS
        R780 = 346; // Trinidad and Tobago  TTO SIDS
        R796 = 347; // Turks and Caicos Islands   TCA
        R850 = 348; // United States Virgin Islands   VIR SIDS
        R013 = 349; // Central America
        R084 = 350; // Belize   BLZ SIDS
        R188 = 351; // Costa Rica   CRI
        R222 = 352; // El Salvador  SLV
        R320 = 353; // Guatemala  GTM
        R340 = 354; // Honduras   HND
        R484 = 355; // Mexico   MEX
        R558 = 356; // Nicaragua  NIC
        R591 = 357; // Panama   PAN
        R005 = 358; // South America
        R032 = 359; // Argentina  ARG
        R068 = 360; // Bolivia (Plurinational State of)   BOL LLDC
        R074 = 361; // Bouvet Island  BVT
        R076 = 362; // Brazil   BRA
        R152 = 363; // Chile  CHL
        R170 = 364; // Colombia   COL
        R218 = 365; // Ecuador  ECU
        R238 = 366; // Falkland Islands (Malvinas)  FLK
        R254 = 367; // French Guiana  GUF
        R328 = 368; // Guyana   GUY SIDS
        R600 = 369; // Paraguay   PRY LLDC
        R604 = 370; // Peru   PER
        R239 = 371; // South Georgia and the South Sandwich Islands   SGS
        R740 = 372; // Suriname   SUR SIDS
        R858 = 373; // Uruguay  URY
        R862 = 374; // Venezuela (Bolivarian Republic of)   VEN
        R021 = 375; // Northern America
        R060 = 376; // Bermuda  BMU
        R124 = 377; // Canada   CAN
        R304 = 378; // Greenland  GRL
        R666 = 379; // Saint Pierre and Miquelon  SPM
        R840 = 380; // United States of America   USA
        R010 = 381; // Antarctica   ATA
        R142 = 382; // Asia
        R143 = 383; // Central Asia
        R398 = 384; // Kazakhstan   KAZ LLDC
        R417 = 385; // Kyrgyzstan   KGZ LLDC
        R762 = 386; // Tajikistan   TJK LLDC
        R795 = 387; // Turkmenistan   TKM LLDC
        R860 = 388; // Uzbekistan   UZB LLDC
        R030 = 389; // Eastern Asia
        R156 = 390; // China  CHN
        R344 = 391; // China, Hong Kong Special Administrative Region   HKG
        R446 = 392; // China, Macao Special Administrative Region   MAC
        R408 = 393; // Democratic People's Republic of Korea  PRK
        R392 = 394; // Japan  JPN
        R496 = 395; // Mongolia   MNG LLDC
        R410 = 396; // Republic of Korea  KOR
        R035 = 397; // South-eastern Asia
        R096 = 398; // Brunei Darussalam  BRN
        R116 = 399; // Cambodia   KHM LDC
        R360 = 400; // Indonesia  IDN
        R418 = 401; // Lao People's Democratic Republic   LAO LDC LLDC
        R458 = 402; // Malaysia   MYS
        R104 = 403; // Myanmar  MMR LDC
        R608 = 404; // Philippines  PHL
        R702 = 405; // Singapore  SGP SIDS
        R764 = 406; // Thailand   THA
        R626 = 407; // Timor-Leste  TLS LDC SIDS
        R704 = 408; // Viet Nam   VNM
        R034 = 409; // Southern Asia
        R004 = 410; // Afghanistan  AFG LDC LLDC
        R050 = 411; // Bangladesh   BGD LDC
        R064 = 412; // Bhutan   BTN LDC LLDC
        R356 = 413; // India  IND
        R364 = 414; // Iran (Islamic Republic of)   IRN
        R462 = 415; // Maldives   MDV SIDS
        R524 = 416; // Nepal  NPL LDC LLDC
        R586 = 417; // Pakistan   PAK
        R144 = 418; // Sri Lanka  LKA
        R145 = 419; // Western Asia
        R051 = 420; // Armenia  ARM LLDC
        R031 = 421; // Azerbaijan   AZE LLDC
        R048 = 422; // Bahrain  BHR
        R196 = 423; // Cyprus   CYP
        R268 = 424; // Georgia  GEO
        R368 = 425; // Iraq   IRQ
        R376 = 426; // Israel   ISR
        R400 = 427; // Jordan   JOR
        R414 = 428; // Kuwait   KWT
        R422 = 429; // Lebanon  LBN
        R512 = 430; // Oman   OMN
        R634 = 431; // Qatar  QAT
        R682 = 432; // Saudi Arabia   SAU
        R275 = 433; // State of Palestine   PSE
        R760 = 434; // Syrian Arab Republic   SYR
        R792 = 435; // Turkey   TUR
        R784 = 436; // United Arab Emirates   ARE
        R887 = 437; // Yemen  YEM LDC
        R150 = 438; // Europe
        R151 = 439; // Eastern Europe
        R112 = 440; // Belarus  BLR
        R100 = 441; // Bulgaria   BGR
        R203 = 442; // Czechia  CZE
        R348 = 443; // Hungary  HUN
        R616 = 444; // Poland   POL
        R498 = 445; // Republic of Moldova  MDA LLDC
        R642 = 446; // Romania  ROU
        R643 = 447; // Russian Federation   RUS
        R703 = 448; // Slovakia   SVK
        R804 = 449; // Ukraine  UKR
        R154 = 450; // Northern Europe
        R248 = 451; // Åland Islands  ALA
        R830 = 452; // Channel Islands
        R831 = 453; // Guernsey   GGY
        R832 = 454; // Jersey   JEY
        R680 = 455; // Sark
        R208 = 456; // Denmark  DNK
        R233 = 457; // Estonia  EST
        R234 = 458; // Faroe Islands  FRO
        R246 = 459; // Finland  FIN
        R352 = 460; // Iceland  ISL
        R372 = 461; // Ireland  IRL
        R833 = 462; // Isle of Man  IMN
        R428 = 463; // Latvia   LVA
        R440 = 464; // Lithuania  LTU
        R578 = 465; // Norway   NOR
        R744 = 466; // Svalbard and Jan Mayen Islands   SJM
        R752 = 467; // Sweden   SWE
        R826 = 468; // United Kingdom of Great Britain and Northern Ireland   GBR
        R039 = 469; // Southern Europe
        R008 = 470; // Albania  ALB
        R020 = 471; // Andorra  AND
        R070 = 472; // Bosnia and Herzegovina   BIH
        R191 = 473; // Croatia  HRV
        R292 = 474; // Gibraltar  GIB
        R300 = 475; // Greece   GRC
        R336 = 476; // Holy See   VAT
        R380 = 477; // Italy  ITA
        R470 = 478; // Malta  MLT
        R499 = 479; // Montenegro   MNE
        R807 = 480; // North Macedonia  MKD LLDC
        R620 = 481; // Portugal   PRT
        R674 = 482; // San Marino   SMR
        R688 = 483; // Serbia   SRB
        R705 = 484; // Slovenia   SVN
        R724 = 485; // Spain  ESP
        R155 = 486; // Western Europe
        R040 = 487; // Austria  AUT
        R056 = 488; // Belgium  BEL
        R250 = 489; // France   FRA
        R276 = 490; // Germany  DEU
        R438 = 491; // Liechtenstein  LIE
        R442 = 492; // Luxembourg   LUX
        R492 = 493; // Monaco   MCO
        R528 = 494; // Netherlands  NLD
        R756 = 495; // Switzerland  CHE
        R009 = 496; // Oceania
        R053 = 497; // Australia and New Zealand
        R036 = 498; // Australia  AUS
        R162 = 499; // Christmas Island   CXR
        R166 = 500; // Cocos (Keeling) Islands  CCK
        R334 = 501; // Heard Island and McDonald Islands  HMD
        R554 = 502; // New Zealand  NZL
        R574 = 503; // Norfolk Island   NFK
        R054 = 504; // Melanesia
        R242 = 505; // Fiji   FJI SIDS
        R540 = 506; // New Caledonia  NCL SIDS
        R598 = 507; // Papua New Guinea   PNG SIDS
        R090 = 508; // Solomon Islands  SLB LDC SIDS
        R548 = 509; // Vanuatu  VUT LDC SIDS
        R057 = 510; // Micronesia
        R316 = 511; // Guam   GUM SIDS
        R296 = 512; // Kiribati   KIR LDC SIDS
        R584 = 513; // Marshall Islands   MHL SIDS
        R583 = 514; // Micronesia (Federated States of)   FSM SIDS
        R520 = 515; // Nauru  NRU SIDS
        R580 = 516; // Northern Mariana Islands   MNP SIDS
        R585 = 517; // Palau  PLW SIDS
        R581 = 518; // United States Minor Outlying Islands   UMI
        R061 = 519; // Polynesia
        R016 = 520; // American Samoa   ASM SIDS
        R184 = 521; // Cook Islands   COK SIDS
        R258 = 522; // French Polynesia   PYF SIDS
        R570 = 523; // Niue   NIU SIDS
        R612 = 524; // Pitcairn   PCN
        R882 = 525; // Samoa  WSM SIDS
        R772 = 526; // Tokelau  TKL
        R776 = 527; // Tonga  TON SIDS
        R798 = 528; // Tuvalu   TUV LDC SIDS
        R876 = 529; // Wallis and Futuna Islands  WLF
    }
}
