﻿// ***************************************************************************
// *
// * Copyright (C) 2013 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/agq.xml
// *
// ***************************************************************************
/**
 *  ICU <specials> source: <path>/xml/main/agq.xml
 */
agq{
    AuxExemplarCharacters{"[q r x]"}
    ExemplarCharacters{
        "[a à â ǎ ā b c d e è ê ě ē ɛ {ɛ\u0300} {ɛ\u0302} {ɛ\u030C} {ɛ\u0304} f g h i"
        " ì î ǐ ī ɨ {ɨ\u0300} {ɨ\u0302} {ɨ\u030C} {ɨ\u0304} k l m n ŋ o ò ô ǒ ō ɔ {ɔ"
        "\u0300} {ɔ\u0302} {ɔ\u030C} {ɔ\u0304} p s t u ù û ǔ ū ʉ {ʉ\u0300} {ʉ\u0302} "
        "{ʉ\u030C} {ʉ\u0304} v w y z ʔ]"
    }
    ExemplarCharactersIndex{"[A B C D E Ɛ F G H I Ɨ K L M N Ŋ O Ɔ P S T U Ʉ V W Y Z ʔ]"}
    LocaleScript{
        "Latn",
    }
    NumberElements{
        latn{
            patterns{
                currencyFormat{"#,##0.00¤"}
                decimalFormat{"#,##0.###"}
                percentFormat{"#,##0%"}
            }
            symbols{
                decimal{","}
                group{" "}
            }
        }
    }
    Version{"2.0.82.45"}
    calendar{
        generic{
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE d MMMM y G",
                "d MMMM y G",
                "d MMM, y G",
                "d/M/y GGGGG",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                Ed{"d E"}
                Hm{"HH:mm"}
                Hms{"HH:mm:ss"}
                M{"L"}
                MEd{"E d/M"}
                MMM{"LLL"}
                MMMEd{"E d MMM"}
                MMMd{"d MMM"}
                Md{"d/M"}
                d{"d"}
                hm{"h:mm a"}
                hms{"h:mm:ss a"}
                ms{"m:ss"}
                y{"y"}
                yM{"M/y"}
                yMEd{"E d/M/y"}
                yMMM{"MMM y"}
                yMMMEd{"E d MMM y"}
                yMMMd{"d MMM y"}
                yMd{"d/M/y"}
                yQQQ{"QQQ y"}
                yQQQQ{"QQQQ y"}
            }
        }
        gregorian{
            AmPmMarkers{
                "a.g",
                "a.k",
            }
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE d MMMM y",
                "d MMMM y",
                "d MMM, y",
                "d/M/y",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                Ed{"d E"}
                Hm{"HH:mm"}
                Hms{"HH:mm:ss"}
                M{"L"}
                MEd{"E d/M"}
                MMM{"LLL"}
                MMMEd{"E d MMM"}
                MMMd{"d MMM"}
                Md{"d/M"}
                d{"d"}
                hm{"h:mm a"}
                hms{"h:mm:ss a"}
                ms{"m:ss"}
                y{"y"}
                yM{"M/y"}
                yMEd{"E d/M/y"}
                yMMM{"MMM y"}
                yMMMEd{"E d MMM y"}
                yMMMd{"d MMM y"}
                yMd{"d/M/y"}
                yQQQ{"QQQ y"}
                yQQQQ{"QQQQ y"}
            }
            dayNames{
                format{
                    abbreviated{
                        "nts",
                        "kpa",
                        "ghɔ",
                        "tɔm",
                        "ume",
                        "ghɨ",
                        "dzk",
                    }
                    wide{
                        "tsuʔntsɨ",
                        "tsuʔukpà",
                        "tsuʔughɔe",
                        "tsuʔutɔ̀mlò",
                        "tsuʔumè",
                        "tsuʔughɨ̂m",
                        "tsuʔndzɨkɔʔɔ",
                    }
                }
                stand-alone{
                    narrow{
                        "n",
                        "k",
                        "g",
                        "t",
                        "u",
                        "g",
                        "d",
                    }
                }
            }
            eras{
                abbreviated{
                    "SK",
                    "BK",
                }
                wide{
                    "Sěe Kɨ̀lesto",
                    "Bǎa Kɨ̀lesto",
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "nùm",
                        "kɨz",
                        "tɨd",
                        "taa",
                        "see",
                        "nzu",
                        "dum",
                        "fɔe",
                        "dzu",
                        "lɔm",
                        "kaa",
                        "fwo",
                    }
                    wide{
                        "ndzɔ̀ŋɔ̀nùm",
                        "ndzɔ̀ŋɔ̀kƗ̀zùʔ",
                        "ndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà",
                        "ndzɔ̀ŋɔ̀tǎafʉ̄ghā",
                        "ndzɔ̀ŋèsèe",
                        "ndzɔ̀ŋɔ̀nzùghò",
                        "ndzɔ̀ŋɔ̀dùmlo",
                        "ndzɔ̀ŋɔ̀kwîfɔ̀e",
                        "ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù",
                        "ndzɔ̀ŋɔ̀ghǔuwelɔ̀m",
                        "ndzɔ̀ŋɔ̀chwaʔàkaa wo",
                        "ndzɔ̀ŋèfwòo",
                    }
                }
                stand-alone{
                    narrow{
                        "n",
                        "k",
                        "t",
                        "t",
                        "s",
                        "z",
                        "k",
                        "f",
                        "d",
                        "l",
                        "c",
                        "f",
                    }
                }
            }
            quarters{
                format{
                    wide{
                        "kɨbâ kɨ 1",
                        "ugbâ u 2",
                        "ugbâ u 3",
                        "ugbâ u 4",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"’"}
        alternateQuotationStart{"‚"}
        quotationEnd{"”"}
        quotationStart{"„"}
    }
    fields{
        day{
            dn{"utsuʔ"}
            relative{
                "-1"{"ā zūɛɛ"}
                "0"{"nɛ"}
                "1"{"tsʉtsʉ"}
            }
        }
        dayperiod{
            dn{"â tsɨ̀"}
        }
        era{
            dn{"kɨtîgh"}
        }
        hour{
            dn{"tàm"}
        }
        minute{
            dn{"menè"}
        }
        month{
            dn{"ndzɔŋ"}
        }
        second{
            dn{"sɛkɔ̀n"}
        }
        week{
            dn{"ewɨn"}
        }
        weekday{
            dn{"tsuʔu mɨ̀ èwɨ̄n"}
        }
        year{
            dn{"kɨnûm"}
        }
        zone{
            dn{"dɨŋò kɨ enɨ̀gha"}
        }
    }
}
