Improve collation string and locales support

Merge collation support from Illumos and DragonflyBSD.

Locales are now generated with the new localedef(1) tool from CLDR POSIX files.
The generated files are now identified as "BSD 1.0" format.

The libc now only read "BSD 1.0" locales definitions, all other version will be
set to "C"
The localedef(1) tool has been imported from Illumos and modified to use tree(3)
instead of the CDDL avl(3)
A set of tool created by edwin@ and extended by marino@ for dragonfly has been
added to be able to generate locales and the Makefiles from the vanilla CLDR
unicode databases + a universal UTF-8 charmap (by marino@)
Update the locales to unicode v27
Given our regex(3) does not support multibyte (yet) it has been forced to always
use locale C
Remove now unused colldef(1) and mklocale(1)
Finish implementing the numeric BSD extension for ctypes
The number of supported locales has grown from 175 to 250 locales. Among the new
locales: 6 Arabic locales (AE EG JO MA QA SA), Different variations of spanish
locales.
Added new 3 components locales for mn_Cyrl_MN, sr_Cyrl_RS sr_Latn_RS,
zh_Hans_CN, zh_Hant_HK and zh_Hant_TW. Some aliases has been for 2 components
version when possible.

Thanks: Garrett D'Amore (Illumos) who made sure all his work was done under
BSD license!, Edwin Groothuis (edwin@) for the work he made on tools to be able
to generate locales definition usable in freebsd sources out of vanilla CLDR
definitions, John Marino (DragonflyBSD) who first merge the Illumos work into
Dragonfly and spent hours tracking down bugs.
This commit is contained in:
Baptiste Daroussin 2015-11-07 12:43:35 +00:00
commit e25206800f
744 changed files with 944273 additions and 33830 deletions

View File

@ -1486,7 +1486,8 @@ bootstrap-tools: .PHONY
usr.sbin/config \
${_crunch} \
${_nmtree} \
${_vtfontcvt}
${_vtfontcvt} \
usr.bin/localedef
${_bt}-${_tool}: .PHONY .MAKE
${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
cd ${.CURDIR}/${_tool} && \

View File

@ -38,6 +38,65 @@
# xargs -n1 | sort | uniq -d;
# done
# 20151107: String collation improvements
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_COLLATE
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_CTYPE
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_MESSAGES
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_MONETARY
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_NUMERIC
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_TIME
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_TIME
OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_TIME
OLD_FILES+=usr/share/locale/la_LN.ISO8859-13/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-13/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_TIME
OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_TIME
OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_TIME
OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_TIME
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_TIME
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_TIME
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_TIME
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_TIME
OLD_FILES+=usr/share/locale/UTF-8/LC_CTYPE
OLD_FILES+=usr/bin/colldef
OLD_FILES+=usr/share/man/man1/colldef.1.gz
OLD_FILES+=usr/bin/mklocale
OLD_FILES+=usr/share/man/man1/mklocale.1.gz
# 20151101: added missing _test suffix on multiple tests in lib/libc
OLD_FILES+=usr/tests/lib/libc/c063/faccessat
OLD_FILES+=usr/tests/lib/libc/c063/fchmodat

View File

@ -87,7 +87,11 @@ static struct test {
0x5B, 0x01, 0x7F, 0x5D, 0x5B, 0x80, 0x07FF, 0x5D, 0x5B, 0x0800,
0xFFFF, 0x5D, 0x5B, 0x10000, 0x10FFFF, 0x5D, 0x0A
},
#ifdef __FreeBSD__
{ 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1,
#else
{ 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1,
#endif
1, 1, -1, -1, 1, 1, -1, -1, 1, -1
},
-1

View File

@ -505,14 +505,22 @@
..
..
locale
UTF-8
..
af_ZA.ISO8859-1
..
af_ZA.ISO8859-15
..
af_ZA.UTF-8
..
ar_AE.UTF-8
..
ar_EG.UTF-8
..
ar_JO.UTF-8
..
ar_MA.UTF-8
..
ar_QA.UTF-8
..
ar_SA.UTF-8
..
am_ET.UTF-8
..
be_BY.CP1131
@ -527,54 +535,38 @@
..
bg_BG.UTF-8
..
ca_AD.ISO8859-1
..
ca_AD.ISO8859-15
..
ca_AD.UTF-8
..
ca_ES.ISO8859-1
..
ca_ES.ISO8859-15
..
ca_ES.UTF-8
..
ca_FR.ISO8859-1
..
ca_FR.ISO8859-15
..
ca_FR.UTF-8
..
ca_IT.ISO8859-1
..
ca_IT.ISO8859-15
..
ca_AD.UTF-8
..
ca_ES.UTF-8
..
ca_FR.UTF-8
..
ca_IT.UTF-8
..
cs_CZ.ISO8859-2
..
cs_CZ.UTF-8
..
da_DK.ISO8859-1
..
da_DK.ISO8859-15
..
da_DK.UTF-8
..
de_AT.ISO8859-1
..
de_AT.ISO8859-15
..
de_AT.UTF-8
..
de_CH.ISO8859-1
..
de_CH.ISO8859-15
..
de_CH.UTF-8
..
de_DE.ISO8859-1
..
de_DE.ISO8859-15
..
de_DE.UTF-8
@ -585,88 +577,92 @@
..
en_AU.ISO8859-1
..
en_AU.ISO8859-15
..
en_AU.US-ASCII
..
en_AU.UTF-8
..
en_CA.ISO8859-1
..
en_CA.ISO8859-15
..
en_CA.US-ASCII
..
en_CA.UTF-8
..
en_GB.ISO8859-1
..
en_GB.ISO8859-15
..
en_GB.US-ASCII
..
en_GB.UTF-8
..
en_HK.ISO8859-1
..
en_HK.UTF-8
..
en_IE.ISO8859-15
..
en_IE.UTF-8
..
en_NZ.ISO8859-1
..
en_NZ.ISO8859-15
..
en_NZ.US-ASCII
..
en_NZ.UTF-8
..
en_US.ISO8859-1
en_PH.UTF-8
..
en_US.ISO8859-15
en_SG.ISO8859-1
..
en_SG.UTF-8
..
en_US.ISO8859-1
..
en_US.US-ASCII
..
en_US.UTF-8
..
es_ES.ISO8859-1
en_ZA.ISO8859-1
..
en_ZA.US-ASCII
..
en_ZA.UTF-8
..
es_AR.ISO8859-1
..
es_AR.UTF-8
..
es_CR.UTF-8
..
es_ES.ISO8859-15
..
es_ES.UTF-8
..
es_MX.ISO8859-1
..
es_MX.UTF-8
..
et_EE.ISO8859-15
..
et_EE.UTF-8
..
eu_ES.ISO8859-1
..
eu_ES.ISO8859-15
..
eu_ES.UTF-8
..
fi_FI.ISO8859-1
..
fi_FI.ISO8859-15
..
fi_FI.UTF-8
..
fr_BE.ISO8859-1
..
fr_BE.ISO8859-15
..
fr_BE.UTF-8
..
fr_CA.ISO8859-1
..
fr_CA.ISO8859-15
..
fr_CA.UTF-8
..
fr_CH.ISO8859-1
..
fr_CH.ISO8859-15
..
fr_CH.UTF-8
..
fr_FR.ISO8859-1
..
fr_FR.ISO8859-15
..
fr_FR.UTF-8
@ -675,6 +671,8 @@
..
hi_IN.ISCII-DEV
..
hi_IN.UTF-8
..
hr_HR.ISO8859-2
..
hr_HR.UTF-8
@ -687,20 +685,14 @@
..
hy_AM.UTF-8
..
is_IS.ISO8859-1
..
is_IS.ISO8859-15
..
is_IS.UTF-8
..
it_CH.ISO8859-1
..
it_CH.ISO8859-15
..
it_CH.UTF-8
..
it_IT.ISO8859-1
..
it_IT.ISO8859-15
..
it_IT.UTF-8
@ -713,70 +705,38 @@
..
kk_Cyrl_KZ.UTF-8
..
kk_KZ.PT154
..
kk_KZ.UTF-8
..
ko_KR.CP949
..
ko_KR.UTF-8
..
ko_KR.eucKR
..
la_LN.ISO8859-1
..
la_LN.ISO8859-13
..
la_LN.ISO8859-15
..
la_LN.ISO8859-2
..
la_LN.ISO8859-4
..
la_LN.US-ASCII
..
lt_LT.ISO8859-13
..
lt_LT.ISO8859-4
..
lt_LT.UTF-8
..
lv_LV.ISO8859-13
..
lv_LV.UTF-8
..
mn_MN.UTF-8
..
nb_NO.ISO8859-1
mn_Cyrl_MN.UTF-8
..
nb_NO.ISO8859-15
..
nb_NO.UTF-8
..
nl_BE.ISO8859-1
..
nl_BE.ISO8859-15
..
nl_BE.UTF-8
..
nl_NL.ISO8859-1
..
nl_NL.ISO8859-15
..
nl_NL.UTF-8
..
nn_NO.ISO8859-1
..
nn_NO.ISO8859-15
..
nn_NO.UTF-8
..
no_NO.ISO8859-1
..
no_NO.ISO8859-15
..
no_NO.UTF-8
..
pl_PL.ISO8859-2
..
pl_PL.UTF-8
@ -785,8 +745,6 @@
..
pt_BR.UTF-8
..
pt_PT.ISO8859-1
..
pt_PT.ISO8859-15
..
pt_PT.UTF-8
@ -805,6 +763,10 @@
..
ru_RU.UTF-8
..
se_FI.UTF-8
..
se_NO.UTF-8
..
sk_SK.ISO8859-2
..
sk_SK.UTF-8
@ -813,13 +775,17 @@
..
sl_SI.UTF-8
..
sr_YU.ISO8859-2
sr_Cyrl_RS.ISO8859-5
..
sr_YU.ISO8859-5
sr_Cyrl_RS.UTF-8
..
sr_YU.UTF-8
sr_Latn_RS.ISO8859-2
..
sv_SE.ISO8859-1
sr_Latn_RS.UTF-8
..
sv_FI.ISO8859-15
..
sv_FI.UTF-8
..
sv_SE.ISO8859-15
..
@ -837,23 +803,23 @@
..
uk_UA.UTF-8
..
zh_CN.GB18030
zh_Hans_CN.GB18030
..
zh_CN.GB2312
zh_Hans_CN.GB2312
..
zh_CN.GBK
zh_Hans_CN.GBK
..
zh_CN.UTF-8
zh_Hans_CN.UTF-8
..
zh_CN.eucCN
zh_Hans_CN.eucCN
..
zh_HK.Big5HKSCS
zh_Hant_HK.Big5HKSCS
..
zh_HK.UTF-8
zh_Hant_HK.UTF-8
..
zh_TW.Big5
zh_Hant_TW.Big5
..
zh_TW.UTF-8
zh_Hant_TW.UTF-8
..
..
man

View File

@ -59,6 +59,7 @@
#define _CTYPE_I 0x00080000L /* Ideogram */
#define _CTYPE_T 0x00100000L /* Special */
#define _CTYPE_Q 0x00200000L /* Phonogram */
#define _CTYPE_N 0x00400000L /* Number (superset of digit) */
#define _CTYPE_SW0 0x20000000L /* 0 width character */
#define _CTYPE_SW1 0x40000000L /* 1 width character */
#define _CTYPE_SW2 0x80000000L /* 2 width character */

View File

@ -85,17 +85,17 @@ int isspecial(int);
__END_DECLS
#ifndef __cplusplus
#define isalnum(c) __sbistype((c), _CTYPE_A|_CTYPE_D)
#define isalnum(c) __sbistype((c), _CTYPE_A|_CTYPE_D|_CTYPE_N)
#define isalpha(c) __sbistype((c), _CTYPE_A)
#define iscntrl(c) __sbistype((c), _CTYPE_C)
#define isdigit(c) __isctype((c), _CTYPE_D) /* ANSI -- locale independent */
#define isdigit(c) __sbistype((c), _CTYPE_D)
#define isgraph(c) __sbistype((c), _CTYPE_G)
#define islower(c) __sbistype((c), _CTYPE_L)
#define isprint(c) __sbistype((c), _CTYPE_R)
#define ispunct(c) __sbistype((c), _CTYPE_P)
#define isspace(c) __sbistype((c), _CTYPE_S)
#define isupper(c) __sbistype((c), _CTYPE_U)
#define isxdigit(c) __isctype((c), _CTYPE_X) /* ANSI -- locale independent */
#define isxdigit(c) __sbistype((c), _CTYPE_X)
#define tolower(c) __sbtolower(c)
#define toupper(c) __sbtoupper(c)
#endif /* !__cplusplus */
@ -126,7 +126,7 @@ __END_DECLS
#define digittoint(c) __sbmaskrune((c), 0xFF)
#define ishexnumber(c) __sbistype((c), _CTYPE_X)
#define isideogram(c) __sbistype((c), _CTYPE_I)
#define isnumber(c) __sbistype((c), _CTYPE_D)
#define isnumber(c) __sbistype((c), _CTYPE_D|_CTYPE_N)
#define isphonogram(c) __sbistype((c), _CTYPE_Q)
#define isrune(c) __sbistype((c), 0xFFFFFF00L)
#define isspecial(c) __sbistype((c), _CTYPE_T)

View File

@ -63,7 +63,7 @@
#define BC_DIM_MAX 2048 /* max array elements in bc(1) */
#define BC_SCALE_MAX 99 /* max scale value in bc(1) */
#define BC_STRING_MAX 1000 /* max const string length in bc(1) */
#define COLL_WEIGHTS_MAX 0 /* max weights for order keyword */
#define COLL_WEIGHTS_MAX 10 /* max weights for order keyword */
#define EXPR_NEST_MAX 32 /* max expressions nested in expr(1) */
#define LINE_MAX 2048 /* max bytes in an input line */
#define RE_DUP_MAX 255 /* max RE's in interval notation */

View File

@ -95,27 +95,27 @@ wint_t nextwctype(wint_t, wctype_t);
__END_DECLS
#ifndef __cplusplus
#define iswalnum(wc) __istype((wc), _CTYPE_A|_CTYPE_D)
#define iswalnum(wc) __istype((wc), _CTYPE_A|_CTYPE_D|_CTYPE_N)
#define iswalpha(wc) __istype((wc), _CTYPE_A)
#define iswblank(wc) __istype((wc), _CTYPE_B)
#define iswcntrl(wc) __istype((wc), _CTYPE_C)
#define iswctype(wc, charclass) __istype((wc), (charclass))
#define iswdigit(wc) __isctype((wc), _CTYPE_D)
#define iswdigit(wc) __istype((wc), _CTYPE_D)
#define iswgraph(wc) __istype((wc), _CTYPE_G)
#define iswlower(wc) __istype((wc), _CTYPE_L)
#define iswprint(wc) __istype((wc), _CTYPE_R)
#define iswpunct(wc) __istype((wc), _CTYPE_P)
#define iswspace(wc) __istype((wc), _CTYPE_S)
#define iswupper(wc) __istype((wc), _CTYPE_U)
#define iswxdigit(wc) __isctype((wc), _CTYPE_X)
#define iswxdigit(wc) __istype((wc), _CTYPE_X)
#define towlower(wc) __tolower(wc)
#define towupper(wc) __toupper(wc)
#if __BSD_VISIBLE
#define iswascii(wc) (((wc) & ~0x7F) == 0)
#define iswhexnumber(wc) __istype((wc), _CTYPE_X)
#define iswhexnumber(wc) __istype((wc), _CTYPE_X) /* alias of iswxdigit */
#define iswideogram(wc) __istype((wc), _CTYPE_I)
#define iswnumber(wc) __istype((wc), _CTYPE_D)
#define iswnumber(wc) __istype((wc), _CTYPE_D|_CTYPE_N)
#define iswphonogram(wc) __istype((wc), _CTYPE_Q)
#define iswrune(wc) __istype((wc), 0xFFFFFF00L)
#define iswspecial(wc) __istype((wc), _CTYPE_T)

View File

@ -119,7 +119,7 @@ __sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{ return __sbistype_l(__c, __cat, __l); }
#endif
XLOCALE_ISCTYPE(alnum, _CTYPE_A|_CTYPE_D)
XLOCALE_ISCTYPE(alnum, _CTYPE_A|_CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(alpha, _CTYPE_A)
XLOCALE_ISCTYPE(blank, _CTYPE_B)
XLOCALE_ISCTYPE(cntrl, _CTYPE_C)
@ -128,7 +128,7 @@ XLOCALE_ISCTYPE(graph, _CTYPE_G)
XLOCALE_ISCTYPE(hexnumber, _CTYPE_X)
XLOCALE_ISCTYPE(ideogram, _CTYPE_I)
XLOCALE_ISCTYPE(lower, _CTYPE_L)
XLOCALE_ISCTYPE(number, _CTYPE_D)
XLOCALE_ISCTYPE(number, _CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(phonogram, _CTYPE_Q)
XLOCALE_ISCTYPE(print, _CTYPE_R)
XLOCALE_ISCTYPE(punct, _CTYPE_P)

View File

@ -4,7 +4,7 @@
# locale sources
.PATH: ${LIBC_SRCTOP}/${LIBC_ARCH}/locale ${LIBC_SRCTOP}/locale
SRCS+= ascii.c big5.c btowc.c collate.c collcmp.c euc.c fix_grouping.c \
SRCS+= big5.c btowc.c collate.c collcmp.c euc.c fix_grouping.c \
gb18030.c gb2312.c gbk.c ctype.c isctype.c iswctype.c \
ldpart.c lmessages.c lmonetary.c lnumeric.c localeconv.c mblen.c \
mbrlen.c \

View File

@ -1,192 +0,0 @@
/*-
* Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved.
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Paul Borman at Krystal Technologies.
*
* Copyright (c) 2011 The FreeBSD Foundation
* All rights reserved.
* Portions of this software were developed by David Chisnall
* under sponsorship from the FreeBSD Foundation.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <errno.h>
#include <limits.h>
#include <runetype.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include "mblocal.h"
static size_t _ascii_mbrtowc(wchar_t * __restrict, const char * __restrict,
size_t, mbstate_t * __restrict);
static int _ascii_mbsinit(const mbstate_t *);
static size_t _ascii_mbsnrtowcs(wchar_t * __restrict dst,
const char ** __restrict src, size_t nms, size_t len,
mbstate_t * __restrict ps __unused);
static size_t _ascii_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _ascii_wcsnrtombs(char * __restrict, const wchar_t ** __restrict,
size_t, size_t, mbstate_t * __restrict);
int
_ascii_init(struct xlocale_ctype *l,_RuneLocale *rl)
{
l->__mbrtowc = _ascii_mbrtowc;
l->__mbsinit = _ascii_mbsinit;
l->__mbsnrtowcs = _ascii_mbsnrtowcs;
l->__wcrtomb = _ascii_wcrtomb;
l->__wcsnrtombs = _ascii_wcsnrtombs;
l->runes = rl;
l->__mb_cur_max = 1;
l->__mb_sb_limit = 128;
return(0);
}
static int
_ascii_mbsinit(const mbstate_t *ps __unused)
{
/*
* Encoding is not state dependent - we are always in the
* initial state.
*/
return (1);
}
static size_t
_ascii_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, size_t n,
mbstate_t * __restrict ps __unused)
{
if (s == NULL)
/* Reset to initial shift state (no-op) */
return (0);
if (n == 0)
/* Incomplete multibyte sequence */
return ((size_t)-2);
if (*s & 0x80) {
errno = EILSEQ;
return ((size_t)-1);
}
if (pwc != NULL)
*pwc = (unsigned char)*s;
return (*s == '\0' ? 0 : 1);
}
static size_t
_ascii_wcrtomb(char * __restrict s, wchar_t wc,
mbstate_t * __restrict ps __unused)
{
if (s == NULL)
/* Reset to initial shift state (no-op) */
return (1);
if (wc < 0 || wc > 127) {
errno = EILSEQ;
return ((size_t)-1);
}
*s = (unsigned char)wc;
return (1);
}
static size_t
_ascii_mbsnrtowcs(wchar_t * __restrict dst, const char ** __restrict src,
size_t nms, size_t len, mbstate_t * __restrict ps __unused)
{
const char *s;
size_t nchr;
if (dst == NULL) {
for (s = *src; nms > 0 && *s != '\0'; s++, nms--) {
if (*s & 0x80) {
errno = EILSEQ;
return ((size_t)-1);
}
}
return (s - *src);
}
s = *src;
nchr = 0;
while (len-- > 0 && nms-- > 0) {
if (*s & 0x80) {
errno = EILSEQ;
return ((size_t)-1);
}
if ((*dst++ = (unsigned char)*s++) == L'\0') {
*src = NULL;
return (nchr);
}
nchr++;
}
*src = s;
return (nchr);
}
static size_t
_ascii_wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
size_t nwc, size_t len, mbstate_t * __restrict ps __unused)
{
const wchar_t *s;
size_t nchr;
if (dst == NULL) {
for (s = *src; nwc > 0 && *s != L'\0'; s++, nwc--) {
if (*s < 0 || *s > 127) {
errno = EILSEQ;
return ((size_t)-1);
}
}
return (s - *src);
}
s = *src;
nchr = 0;
while (len-- > 0 && nwc-- > 0) {
if (*s < 0 || *s > 127) {
errno = EILSEQ;
return ((size_t)-1);
}
if ((*dst++ = *s++) == '\0') {
*src = NULL;
return (nchr);
}
nchr++;
}
*src = s;
return (nchr);
}

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved.
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
@ -19,11 +21,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@ -61,6 +59,12 @@ static size_t _BIG5_mbrtowc(wchar_t * __restrict, const char * __restrict,
static int _BIG5_mbsinit(const mbstate_t *);
static size_t _BIG5_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _BIG5_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _BIG5_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
typedef struct {
wchar_t ch;
@ -72,6 +76,8 @@ _BIG5_init(struct xlocale_ctype *l, _RuneLocale *rl)
l->__mbrtowc = _BIG5_mbrtowc;
l->__wcrtomb = _BIG5_wcrtomb;
l->__mbsnrtowcs = _BIG5_mbsnrtowcs;
l->__wcsnrtombs = _BIG5_wcsnrtombs;
l->__mbsinit = _BIG5_mbsinit;
l->runes = rl;
l->__mb_cur_max = 2;
@ -147,7 +153,7 @@ _BIG5_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, size_t n,
wc = (wc << 8) | (*s++ & 0xff);
if (pwc != NULL)
*pwc = wc;
return (2);
return (2);
} else {
if (pwc != NULL)
*pwc = wc;
@ -178,3 +184,17 @@ _BIG5_wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
*s = wc & 0xff;
return (1);
}
static size_t
_BIG5_mbsnrtowcs(wchar_t * __restrict dst, const char ** __restrict src,
size_t nms, size_t len, mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _BIG5_mbrtowc));
}
static size_t
_BIG5_wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
size_t nwc, size_t len, mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _BIG5_wcrtomb));
}

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2014 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua>
* at Electronni Visti IA, Kiev, Ukraine.
* All rights reserved.
@ -28,66 +30,57 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* Adapted to xlocale by John Marino <draco@marino.st>
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include "namespace.h"
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include <errno.h>
#include <unistd.h>
#include <sysexits.h>
#include <fcntl.h>
#include "un-namespace.h"
#include "collate.h"
#include "setlocale.h"
#include "ldpart.h"
#include "libc_private.h"
/*
* To avoid modifying the original (single-threaded) code too much, we'll just
* define the old globals as fields inside the table.
*
* We also modify the collation table test functions to search the thread-local
* table first and the global table second.
*/
#define __collate_substitute_nontrivial (table->__collate_substitute_nontrivial)
#define __collate_substitute_table_ptr (table->__collate_substitute_table_ptr)
#define __collate_char_pri_table_ptr (table->__collate_char_pri_table_ptr)
#define __collate_chain_pri_table (table->__collate_chain_pri_table)
int __collate_load_error;
struct xlocale_collate __xlocale_global_collate = {
{{0}, "C"}, 1, 0
{{0}, "C"}, 1, 0, 0, 0
};
struct xlocale_collate __xlocale_C_collate = {
{{0}, "C"}, 1, 0
struct xlocale_collate __xlocale_C_collate = {
{{0}, "C"}, 1, 0, 0, 0
};
void __collate_err(int ex, const char *f) __dead2;
int
static int
__collate_load_tables_l(const char *encoding, struct xlocale_collate *table);
static void
destruct_collate(void *t)
{
struct xlocale_collate *table = t;
if (__collate_chain_pri_table) {
free(__collate_chain_pri_table);
if (table->map && (table->maplen > 0)) {
(void) munmap(table->map, table->maplen);
}
free(t);
}
void *
__collate_load(const char *encoding, locale_t unused)
__collate_load(const char *encoding, __unused locale_t unused)
{
if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0) {
return &__xlocale_C_collate;
@ -109,237 +102,602 @@ __collate_load(const char *encoding, locale_t unused)
int
__collate_load_tables(const char *encoding)
{
int ret = __collate_load_tables_l(encoding, &__xlocale_global_collate);
__collate_load_error = __xlocale_global_collate.__collate_load_error;
return ret;
return (__collate_load_tables_l(encoding, &__xlocale_global_collate));
}
int
__collate_load_tables_l(const char *encoding, struct xlocale_collate *table)
{
FILE *fp;
int i, saverr, chains;
uint32_t u32;
char strbuf[STR_LEN], buf[PATH_MAX];
void *TMP_substitute_table, *TMP_char_pri_table, *TMP_chain_pri_table;
int i, chains, z;
char *buf;
char *TMP;
char *map;
collate_info_t *info;
struct stat sbuf;
int fd;
table->__collate_load_error = 1;
/* 'encoding' must be already checked. */
if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0) {
table->__collate_load_error = 1;
return (_LDP_CACHE);
}
/* 'PathLocale' must be already set & checked. */
/* Range checking not needed, encoding has fixed size */
(void)strcpy(buf, _PathLocale);
(void)strcat(buf, "/");
(void)strcat(buf, encoding);
(void)strcat(buf, "/LC_COLLATE");
if ((fp = fopen(buf, "re")) == NULL)
asprintf(&buf, "%s/%s/LC_COLLATE", _PathLocale, encoding);
if (buf == NULL)
return (_LDP_ERROR);
if (fread(strbuf, sizeof(strbuf), 1, fp) != 1) {
saverr = errno;
(void)fclose(fp);
errno = saverr;
if ((fd = _open(buf, O_RDONLY)) < 0) {
free(buf);
return (_LDP_ERROR);
}
chains = -1;
if (strcmp(strbuf, COLLATE_VERSION) == 0)
chains = 0;
else if (strcmp(strbuf, COLLATE_VERSION1_2) == 0)
chains = 1;
if (chains < 0) {
(void)fclose(fp);
errno = EFTYPE;
free(buf);
if (_fstat(fd, &sbuf) < 0) {
(void) _close(fd);
return (_LDP_ERROR);
}
if (chains) {
if (fread(&u32, sizeof(u32), 1, fp) != 1) {
saverr = errno;
(void)fclose(fp);
errno = saverr;
return (_LDP_ERROR);
}
if ((chains = (int)ntohl(u32)) < 1) {
(void)fclose(fp);
errno = EFTYPE;
return (_LDP_ERROR);
if (sbuf.st_size < (COLLATE_STR_LEN + sizeof (info))) {
(void) _close(fd);
errno = EINVAL;
return (_LDP_ERROR);
}
map = mmap(NULL, sbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
(void) _close(fd);
if ((TMP = map) == NULL) {
return (_LDP_ERROR);
}
if (strncmp(TMP, COLLATE_VERSION, COLLATE_STR_LEN) != 0) {
(void) munmap(map, sbuf.st_size);
errno = EINVAL;
return (_LDP_ERROR);
}
TMP += COLLATE_STR_LEN;
info = (void *)TMP;
TMP += sizeof (*info);
if ((info->directive_count < 1) ||
(info->directive_count >= COLL_WEIGHTS_MAX) ||
((chains = info->chain_count) < 0)) {
(void) munmap(map, sbuf.st_size);
errno = EINVAL;
return (_LDP_ERROR);
}
i = (sizeof (collate_char_t) * (UCHAR_MAX + 1)) +
(sizeof (collate_chain_t) * chains) +
(sizeof (collate_large_t) * info->large_count);
for (z = 0; z < info->directive_count; z++) {
i += sizeof (collate_subst_t) * info->subst_count[z];
}
if (i != (sbuf.st_size - (TMP - map))) {
(void) munmap(map, sbuf.st_size);
errno = EINVAL;
return (_LDP_ERROR);
}
table->info = info;
table->char_pri_table = (void *)TMP;
TMP += sizeof (collate_char_t) * (UCHAR_MAX + 1);
for (z = 0; z < info->directive_count; z++) {
if (info->subst_count[z] > 0) {
table->subst_table[z] = (void *)TMP;
TMP += info->subst_count[z] * sizeof (collate_subst_t);
} else {
table->subst_table[z] = NULL;
}
}
if (chains > 0) {
table->chain_pri_table = (void *)TMP;
TMP += chains * sizeof (collate_chain_t);
} else
chains = TABLE_SIZE;
table->chain_pri_table = NULL;
if (info->large_count > 0)
table->large_pri_table = (void *)TMP;
else
table->large_pri_table = NULL;
if ((TMP_substitute_table =
malloc(sizeof(__collate_substitute_table))) == NULL) {
saverr = errno;
(void)fclose(fp);
errno = saverr;
return (_LDP_ERROR);
}
if ((TMP_char_pri_table =
malloc(sizeof(__collate_char_pri_table))) == NULL) {
saverr = errno;
free(TMP_substitute_table);
(void)fclose(fp);
errno = saverr;
return (_LDP_ERROR);
}
if ((TMP_chain_pri_table =
malloc(sizeof(*__collate_chain_pri_table) * chains)) == NULL) {
saverr = errno;
free(TMP_substitute_table);
free(TMP_char_pri_table);
(void)fclose(fp);
errno = saverr;
return (_LDP_ERROR);
}
#define FREAD(a, b, c, d) \
{ \
if (fread(a, b, c, d) != c) { \
saverr = errno; \
free(TMP_substitute_table); \
free(TMP_char_pri_table); \
free(TMP_chain_pri_table); \
(void)fclose(d); \
errno = saverr; \
return (_LDP_ERROR); \
} \
}
FREAD(TMP_substitute_table, sizeof(__collate_substitute_table), 1, fp);
FREAD(TMP_char_pri_table, sizeof(__collate_char_pri_table), 1, fp);
FREAD(TMP_chain_pri_table,
sizeof(*__collate_chain_pri_table), chains, fp);
(void)fclose(fp);
if (__collate_substitute_table_ptr != NULL)
free(__collate_substitute_table_ptr);
__collate_substitute_table_ptr = TMP_substitute_table;
if (__collate_char_pri_table_ptr != NULL)
free(__collate_char_pri_table_ptr);
__collate_char_pri_table_ptr = TMP_char_pri_table;
for (i = 0; i < UCHAR_MAX + 1; i++) {
__collate_char_pri_table[i].prim =
ntohl(__collate_char_pri_table[i].prim);
__collate_char_pri_table[i].sec =
ntohl(__collate_char_pri_table[i].sec);
}
if (__collate_chain_pri_table != NULL)
free(__collate_chain_pri_table);
__collate_chain_pri_table = TMP_chain_pri_table;
for (i = 0; i < chains; i++) {
__collate_chain_pri_table[i].prim =
ntohl(__collate_chain_pri_table[i].prim);
__collate_chain_pri_table[i].sec =
ntohl(__collate_chain_pri_table[i].sec);
}
__collate_substitute_nontrivial = 0;
for (i = 0; i < UCHAR_MAX + 1; i++) {
if (__collate_substitute_table[i][0] != i ||
__collate_substitute_table[i][1] != 0) {
__collate_substitute_nontrivial = 1;
break;
}
}
table->__collate_load_error = 0;
return (_LDP_LOADED);
}
u_char *
__collate_substitute(struct xlocale_collate *table, const u_char *s)
static const int32_t *
substsearch(struct xlocale_collate *table, const wchar_t key, int pass)
{
int dest_len, len, nlen;
int delta = strlen(s);
u_char *dest_str = NULL;
const collate_subst_t *p;
int n = table->info->subst_count[pass];
if (s == NULL || *s == '\0')
return (__collate_strdup(""));
delta += delta / 8;
dest_str = malloc(dest_len = delta);
if (dest_str == NULL)
__collate_err(EX_OSERR, __func__);
len = 0;
while (*s) {
nlen = len + strlen(__collate_substitute_table[*s]);
if (dest_len <= nlen) {
dest_str = reallocf(dest_str, dest_len = nlen + delta);
if (dest_str == NULL)
__collate_err(EX_OSERR, __func__);
if (n == 0)
return (NULL);
if (pass >= table->info->directive_count)
return (NULL);
if (!(key & COLLATE_SUBST_PRIORITY))
return (NULL);
p = table->subst_table[pass] + (key & ~COLLATE_SUBST_PRIORITY);
assert(p->key == key);
return (p->pri);
}
static collate_chain_t *
chainsearch(struct xlocale_collate *table, const wchar_t *key, int *len)
{
int low = 0;
int high = table->info->chain_count - 1;;
int next, compar, l;
collate_chain_t *p;
collate_chain_t *tab = table->chain_pri_table;
if (high < 0)
return (NULL);
while (low <= high) {
next = (low + high) / 2;
p = tab + next;
compar = *key - *p->str;
if (compar == 0) {
l = wcsnlen(p->str, COLLATE_STR_LEN);
compar = wcsncmp(key, p->str, l);
if (compar == 0) {
*len = l;
return (p);
}
}
(void)strcpy(dest_str + len, __collate_substitute_table[*s++]);
len = nlen;
if (compar > 0)
low = next + 1;
else
high = next - 1;
}
return (dest_str);
return (NULL);
}
static collate_large_t *
largesearch(struct xlocale_collate *table, const wchar_t key)
{
int low = 0;
int high = table->info->large_count - 1;
int next, compar;
collate_large_t *p;
collate_large_t *tab = table->large_pri_table;
if (high < 0)
return (NULL);
while (low <= high) {
next = (low + high) / 2;
p = tab + next;
compar = key - p->val;
if (compar == 0)
return (p);
if (compar > 0)
low = next + 1;
else
high = next - 1;
}
return (NULL);
}
void
__collate_lookup(struct xlocale_collate *table, const u_char *t, int *len, int *prim, int *sec)
_collate_lookup(struct xlocale_collate *table, const wchar_t *t, int *len,
int *pri, int which, const int **state)
{
struct __collate_st_chain_pri *p2;
collate_chain_t *p2;
collate_large_t *match;
int p, l;
const int *sptr;
/*
* If this is the "last" pass for the UNDEFINED, then
* we just return the priority itself.
*/
if (which >= table->info->directive_count) {
*pri = *t;
*len = 1;
*state = NULL;
return;
}
/*
* If we have remaining substitution data from a previous
* call, consume it first.
*/
if ((sptr = *state) != NULL) {
*pri = *sptr;
sptr++;
if ((sptr == *state) || (sptr == NULL))
*state = NULL;
else
*state = sptr;
*len = 0;
return;
}
/* No active substitutions */
*len = 1;
*prim = *sec = 0;
for (p2 = __collate_chain_pri_table; p2->str[0] != '\0'; p2++) {
if (*t == p2->str[0] &&
strncmp(t, p2->str, strlen(p2->str)) == 0) {
*len = strlen(p2->str);
*prim = p2->prim;
*sec = p2->sec;
return;
/*
* Check for composites such as dipthongs that collate as a
* single element (aka chains or collating-elements).
*/
if (((p2 = chainsearch(table, t, &l)) != NULL) &&
((p = p2->pri[which]) >= 0)) {
*len = l;
*pri = p;
} else if (*t <= UCHAR_MAX) {
/*
* Character is a small (8-bit) character.
* We just look these up directly for speed.
*/
*pri = table->char_pri_table[*t].pri[which];
} else if ((table->info->large_count > 0) &&
((match = largesearch(table, *t)) != NULL)) {
/*
* Character was found in the extended table.
*/
*pri = match->pri.pri[which];
} else {
/*
* Character lacks a specific definition.
*/
if (table->info->directive[which] & DIRECTIVE_UNDEFINED) {
/* Mask off sign bit to prevent ordering confusion. */
*pri = (*t & COLLATE_MAX_PRIORITY);
} else {
*pri = table->info->undef_pri[which];
}
/* No substitutions for undefined characters! */
return;
}
/*
* Try substituting (expanding) the character. We are
* currently doing this *after* the chain compression. I
* think it should not matter, but this way might be slightly
* faster.
*
* We do this after the priority search, as this will help us
* to identify a single key value. In order for this to work,
* its important that the priority assigned to a given element
* to be substituted be unique for that level. The localedef
* code ensures this for us.
*/
if ((sptr = substsearch(table, *pri, which)) != NULL) {
if ((*pri = *sptr) > 0) {
sptr++;
*state = *sptr ? sptr : NULL;
}
}
*prim = __collate_char_pri_table[*t].prim;
*sec = __collate_char_pri_table[*t].sec;
}
u_char *
__collate_strdup(u_char *s)
/*
* This is the meaty part of wcsxfrm & strxfrm. Note that it does
* NOT NULL terminate. That is left to the caller.
*/
size_t
_collate_wxfrm(struct xlocale_collate *table, const wchar_t *src, wchar_t *xf,
size_t room)
{
u_char *t = strdup(s);
int pri;
int len;
const wchar_t *t;
wchar_t *tr = NULL;
int direc;
int pass;
const int32_t *state;
size_t want = 0;
size_t need = 0;
int ndir = table->info->directive_count;
if (t == NULL)
__collate_err(EX_OSERR, __func__);
return (t);
assert(src);
for (pass = 0; pass <= ndir; pass++) {
state = NULL;
if (pass != 0) {
/* insert level separator from the previous pass */
if (room) {
*xf++ = 1;
room--;
}
want++;
}
/* special pass for undefined */
if (pass == ndir) {
direc = DIRECTIVE_FORWARD | DIRECTIVE_UNDEFINED;
} else {
direc = table->info->directive[pass];
}
t = src;
if (direc & DIRECTIVE_BACKWARD) {
wchar_t *bp, *fp, c;
free(tr);
if ((tr = wcsdup(t)) == NULL) {
errno = ENOMEM;
goto fail;
}
bp = tr;
fp = tr + wcslen(tr) - 1;
while (bp < fp) {
c = *bp;
*bp++ = *fp;
*fp-- = c;
}
t = (const wchar_t *)tr;
}
if (direc & DIRECTIVE_POSITION) {
while (*t || state) {
_collate_lookup(table, t, &len, &pri, pass, &state);
t += len;
if (pri <= 0) {
if (pri < 0) {
errno = EINVAL;
goto fail;
}
pri = COLLATE_MAX_PRIORITY;
}
if (room) {
*xf++ = pri;
room--;
}
want++;
need = want;
}
} else {
while (*t || state) {
_collate_lookup(table, t, &len, &pri, pass, &state);
t += len;
if (pri <= 0) {
if (pri < 0) {
errno = EINVAL;
goto fail;
}
continue;
}
if (room) {
*xf++ = pri;
room--;
}
want++;
need = want;
}
}
}
free(tr);
return (need);
fail:
free(tr);
return ((size_t)(-1));
}
void
__collate_err(int ex, const char *f)
/*
* In the non-POSIX case, we transform each character into a string of
* characters representing the character's priority. Since char is usually
* signed, we are limited by 7 bits per byte. To avoid zero, we need to add
* XFRM_OFFSET, so we can't use a full 7 bits. For simplicity, we choose 6
* bits per byte.
*
* It turns out that we sometimes have real priorities that are
* 31-bits wide. (But: be careful using priorities where the high
* order bit is set -- i.e. the priority is negative. The sort order
* may be surprising!)
*
* TODO: This would be a good area to optimize somewhat. It turns out
* that real prioririties *except for the last UNDEFINED pass* are generally
* very small. We need the localedef code to precalculate the max
* priority for us, and ideally also give us a mask, and then we could
* severely limit what we expand to.
*/
#define XFRM_BYTES 6
#define XFRM_OFFSET ('0') /* make all printable characters */
#define XFRM_SHIFT 6
#define XFRM_MASK ((1 << XFRM_SHIFT) - 1)
#define XFRM_SEP ('.') /* chosen to be less than XFRM_OFFSET */
static int
xfrm(struct xlocale_collate *table, unsigned char *p, int pri, int pass)
{
const char *s;
int serrno = errno;
/* we use unsigned to ensure zero fill on right shift */
uint32_t val = (uint32_t)table->info->pri_count[pass];
int nc = 0;
s = _getprogname();
_write(STDERR_FILENO, s, strlen(s));
_write(STDERR_FILENO, ": ", 2);
s = f;
_write(STDERR_FILENO, s, strlen(s));
_write(STDERR_FILENO, ": ", 2);
s = strerror(serrno);
_write(STDERR_FILENO, s, strlen(s));
_write(STDERR_FILENO, "\n", 1);
exit(ex);
while (val) {
*p = (pri & XFRM_MASK) + XFRM_OFFSET;
pri >>= XFRM_SHIFT;
val >>= XFRM_SHIFT;
p++;
nc++;
}
return (nc);
}
#ifdef COLLATE_DEBUG
void
__collate_print_tables()
size_t
_collate_sxfrm(struct xlocale_collate *table, const wchar_t *src, char *xf,
size_t room)
{
int i;
struct __collate_st_chain_pri *p2;
int pri;
int len;
const wchar_t *t;
wchar_t *tr = NULL;
int direc;
int pass;
const int32_t *state;
size_t want = 0;
size_t need = 0;
int b;
uint8_t buf[XFRM_BYTES];
int ndir = table->info->directive_count;
printf("Substitute table:\n");
for (i = 0; i < UCHAR_MAX + 1; i++)
if (i != *__collate_substitute_table[i])
printf("\t'%c' --> \"%s\"\n", i,
__collate_substitute_table[i]);
printf("Chain priority table:\n");
for (p2 = __collate_chain_pri_table; p2->str[0] != '\0'; p2++)
printf("\t\"%s\" : %d %d\n", p2->str, p2->prim, p2->sec);
printf("Char priority table:\n");
for (i = 0; i < UCHAR_MAX + 1; i++)
printf("\t'%c' : %d %d\n", i, __collate_char_pri_table[i].prim,
__collate_char_pri_table[i].sec);
assert(src);
for (pass = 0; pass <= ndir; pass++) {
state = NULL;
if (pass != 0) {
/* insert level separator from the previous pass */
if (room) {
*xf++ = XFRM_SEP;
room--;
}
want++;
}
/* special pass for undefined */
if (pass == ndir) {
direc = DIRECTIVE_FORWARD | DIRECTIVE_UNDEFINED;
} else {
direc = table->info->directive[pass];
}
t = src;
if (direc & DIRECTIVE_BACKWARD) {
wchar_t *bp, *fp, c;
free(tr);
if ((tr = wcsdup(t)) == NULL) {
errno = ENOMEM;
goto fail;
}
bp = tr;
fp = tr + wcslen(tr) - 1;
while (bp < fp) {
c = *bp;
*bp++ = *fp;
*fp-- = c;
}
t = (const wchar_t *)tr;
}
if (direc & DIRECTIVE_POSITION) {
while (*t || state) {
_collate_lookup(table, t, &len, &pri, pass, &state);
t += len;
if (pri <= 0) {
if (pri < 0) {
errno = EINVAL;
goto fail;
}
pri = COLLATE_MAX_PRIORITY;
}
b = xfrm(table, buf, pri, pass);
want += b;
if (room) {
while (b) {
b--;
if (room) {
*xf++ = buf[b];
room--;
}
}
}
need = want;
}
} else {
while (*t || state) {
_collate_lookup(table, t, &len, &pri, pass, &state);
t += len;
if (pri <= 0) {
if (pri < 0) {
errno = EINVAL;
goto fail;
}
continue;
}
b = xfrm(table, buf, pri, pass);
want += b;
if (room) {
while (b) {
b--;
if (room) {
*xf++ = buf[b];
room--;
}
}
}
need = want;
}
}
}
free(tr);
return (need);
fail:
free(tr);
return ((size_t)(-1));
}
/*
* __collate_equiv_value returns the primary collation value for the given
* collating symbol specified by str and len. Zero or negative is returned
* if the collating symbol was not found. This function is used by bracket
* code in the TRE regex library.
*/
int
__collate_equiv_value(locale_t locale, const wchar_t *str, size_t len)
{
int32_t e;
if (len < 1 || len >= COLLATE_STR_LEN)
return (-1);
FIX_LOCALE(locale);
struct xlocale_collate *table =
(struct xlocale_collate*)locale->components[XLC_COLLATE];
if (table->__collate_load_error)
return ((len == 1 && *str <= UCHAR_MAX) ? *str : -1);
if (len == 1) {
e = -1;
if (*str <= UCHAR_MAX)
e = table->char_pri_table[*str].pri[0];
else if (table->info->large_count > 0) {
collate_large_t *match_large;
match_large = largesearch(table, *str);
if (match_large)
e = match_large->pri.pri[0];
}
if (e == 0)
return (1);
return (e > 0 ? e : 0);
}
if (table->info->chain_count > 0) {
wchar_t name[COLLATE_STR_LEN];
collate_chain_t *match_chain;
int clen;
wcsncpy (name, str, len);
name[len] = 0;
match_chain = chainsearch(table, name, &clen);
if (match_chain) {
e = match_chain->pri[0];
if (e == 0)
return (1);
return (e < 0 ? -e : e);
}
}
return (0);
}
#endif

View File

@ -1,4 +1,5 @@
/*-
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua>
* at Electronni Visti IA, Kiev, Ukraine.
* All rights reserved.
@ -40,42 +41,98 @@
#include <limits.h>
#include "xlocale_private.h"
#define STR_LEN 10
#define TABLE_SIZE 100
#define COLLATE_VERSION "1.0\n"
#define COLLATE_VERSION1_2 "1.2\n"
/*
* Work around buildworld bootstrapping from older systems whose limits.h
* sets COLL_WEIGHTS_MAX to 0.
*/
#if COLL_WEIGHTS_MAX == 0
#undef COLL_WEIGHTS_MAX
#define COLL_WEIGHTS_MAX 10
#endif
struct __collate_st_char_pri {
int prim, sec;
};
struct __collate_st_chain_pri {
u_char str[STR_LEN];
int prim, sec;
};
#define COLLATE_STR_LEN 24 /* should be 64-bit multiple */
#define COLLATE_VERSION "BSD 1.0\n"
#define __collate_substitute_table (*__collate_substitute_table_ptr)
#define __collate_char_pri_table (*__collate_char_pri_table_ptr)
#define COLLATE_MAX_PRIORITY (0x7fffffff) /* max signed value */
#define COLLATE_SUBST_PRIORITY (0x40000000) /* bit indicates subst table */
#define DIRECTIVE_UNDEF 0x00
#define DIRECTIVE_FORWARD 0x01
#define DIRECTIVE_BACKWARD 0x02
#define DIRECTIVE_POSITION 0x04
#define DIRECTIVE_UNDEFINED 0x08 /* special last weight for UNDEFINED */
#define DIRECTIVE_DIRECTION_MASK (DIRECTIVE_FORWARD | DIRECTIVE_BACKWARD)
/*
* The collate file format is as follows:
*
* char version[COLLATE_STR_LEN]; // must be COLLATE_VERSION
* collate_info_t info; // see below, includes padding
* collate_char_pri_t char_data[256]; // 8 bit char values
* collate_subst_t subst[*]; // 0 or more substitutions
* collate_chain_pri_t chains[*]; // 0 or more chains
* collate_large_pri_t large[*]; // extended char priorities
*
* Note that all structures must be 32-bit aligned, as each structure
* contains 32-bit member fields. The entire file is mmap'd, so its
* critical that alignment be observed. It is not generally safe to
* use any 64-bit values in the structures.
*/
typedef struct collate_info {
uint8_t directive_count;
uint8_t directive[COLL_WEIGHTS_MAX];
int32_t pri_count[COLL_WEIGHTS_MAX];
int32_t flags;
int32_t chain_count;
int32_t large_count;
int32_t subst_count[COLL_WEIGHTS_MAX];
int32_t undef_pri[COLL_WEIGHTS_MAX];
} collate_info_t;
typedef struct collate_char {
int32_t pri[COLL_WEIGHTS_MAX];
} collate_char_t;
typedef struct collate_chain {
wchar_t str[COLLATE_STR_LEN];
int32_t pri[COLL_WEIGHTS_MAX];
} collate_chain_t;
typedef struct collate_large {
int32_t val;
collate_char_t pri;
} collate_large_t;
typedef struct collate_subst {
int32_t key;
int32_t pri[COLLATE_STR_LEN];
} collate_subst_t;
struct xlocale_collate {
struct xlocale_component header;
int __collate_load_error;
int __collate_substitute_nontrivial;
char * map;
size_t maplen;
u_char (*__collate_substitute_table_ptr)[UCHAR_MAX + 1][STR_LEN];
struct __collate_st_char_pri (*__collate_char_pri_table_ptr)[UCHAR_MAX + 1];
struct __collate_st_chain_pri *__collate_chain_pri_table;
collate_info_t *info;
collate_char_t *char_pri_table;
collate_large_t *large_pri_table;
collate_chain_t *chain_pri_table;
collate_subst_t *subst_table[COLL_WEIGHTS_MAX];
};
__BEGIN_DECLS
u_char *__collate_strdup(u_char *);
u_char *__collate_substitute(struct xlocale_collate *, const u_char *);
int __collate_load_tables(const char *);
void __collate_lookup(struct xlocale_collate *, const u_char *, int *, int *, int *);
int __collate_range_cmp(struct xlocale_collate *, int, int);
#ifdef COLLATE_DEBUG
void __collate_print_tables(void);
#endif
int __collate_equiv_value(locale_t, const wchar_t *, size_t);
void _collate_lookup(struct xlocale_collate *,const wchar_t *, int *, int *,
int, const int **);
int __collate_range_cmp(struct xlocale_collate *, wchar_t, wchar_t);
size_t _collate_wxfrm(struct xlocale_collate *, const wchar_t *, wchar_t *,
size_t);
size_t _collate_sxfrm(struct xlocale_collate *, const wchar_t *, char *,
size_t);
__END_DECLS
#endif /* !_COLLATE_H_ */

View File

@ -33,6 +33,7 @@
__FBSDID("$FreeBSD$");
#include <string.h>
#include <wchar.h>
#include <xlocale.h>
#include "collate.h"
@ -40,13 +41,15 @@ __FBSDID("$FreeBSD$");
* Compare two characters using collate
*/
int __collate_range_cmp(struct xlocale_collate *table, int c1, int c2)
int __collate_range_cmp(struct xlocale_collate *table, wchar_t c1, wchar_t c2)
{
static char s1[2], s2[2];
wchar_t s1[2], s2[2];
s1[0] = c1;
s1[1] = 0;
s2[0] = c2;
s2[1] = 0;
struct _xlocale l = {{0}};
l.components[XLC_COLLATE] = (struct xlocale_component *)table;
return (strcoll_l(s1, s2, &l));
return (wcscoll_l(s1, s2, &l));
}

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved.
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
@ -19,11 +21,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@ -56,17 +54,56 @@ __FBSDID("$FreeBSD$");
extern int __mb_sb_limit;
static size_t _EUC_mbrtowc(wchar_t * __restrict, const char * __restrict,
static size_t _EUC_mbrtowc_impl(wchar_t * __restrict, const char * __restrict,
size_t, mbstate_t * __restrict, uint8_t, uint8_t, uint8_t, uint8_t);
static size_t _EUC_wcrtomb_impl(char * __restrict, wchar_t,
mbstate_t * __restrict, uint8_t, uint8_t, uint8_t, uint8_t);
static size_t _EUC_CN_mbrtowc(wchar_t * __restrict, const char * __restrict,
size_t, mbstate_t * __restrict);
static int _EUC_mbsinit(const mbstate_t *);
static size_t _EUC_wcrtomb(char * __restrict, wchar_t,
static size_t _EUC_JP_mbrtowc(wchar_t * __restrict, const char * __restrict,
size_t, mbstate_t * __restrict);
static size_t _EUC_KR_mbrtowc(wchar_t * __restrict, const char * __restrict,
size_t, mbstate_t * __restrict);
static size_t _EUC_TW_mbrtowc(wchar_t * __restrict, const char * __restrict,
size_t, mbstate_t * __restrict);
static size_t _EUC_CN_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _EUC_JP_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _EUC_KR_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _EUC_TW_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
typedef struct {
int count[4];
wchar_t bits[4];
wchar_t mask;
} _EucInfo;
static size_t _EUC_CN_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _EUC_JP_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _EUC_KR_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _EUC_TW_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _EUC_CN_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _EUC_JP_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _EUC_KR_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _EUC_TW_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static int _EUC_mbsinit(const mbstate_t *);
typedef struct {
wchar_t ch;
@ -74,59 +111,6 @@ typedef struct {
int want;
} _EucState;
int
_EUC_init(struct xlocale_ctype *l, _RuneLocale *rl)
{
_EucInfo *ei;
int x, new__mb_cur_max;
char *v, *e;
if (rl->__variable == NULL)
return (EFTYPE);
v = (char *)rl->__variable;
while (*v == ' ' || *v == '\t')
++v;
if ((ei = malloc(sizeof(_EucInfo))) == NULL)
return (errno == 0 ? ENOMEM : errno);
new__mb_cur_max = 0;
for (x = 0; x < 4; ++x) {
ei->count[x] = (int)strtol(v, &e, 0);
if (v == e || !(v = e)) {
free(ei);
return (EFTYPE);
}
if (new__mb_cur_max < ei->count[x])
new__mb_cur_max = ei->count[x];
while (*v == ' ' || *v == '\t')
++v;
ei->bits[x] = (int)strtol(v, &e, 0);
if (v == e || !(v = e)) {
free(ei);
return (EFTYPE);
}
while (*v == ' ' || *v == '\t')
++v;
}
ei->mask = (int)strtol(v, &e, 0);
if (v == e || !(v = e)) {
free(ei);
return (EFTYPE);
}
rl->__variable = ei;
rl->__variable_len = sizeof(_EucInfo);
l->runes = rl;
l->__mb_cur_max = new__mb_cur_max;
l->__mbrtowc = _EUC_mbrtowc;
l->__wcrtomb = _EUC_wcrtomb;
l->__mbsinit = _EUC_mbsinit;
l->__mb_sb_limit = 256;
return (0);
}
static int
_EUC_mbsinit(const mbstate_t *ps)
{
@ -134,34 +118,211 @@ _EUC_mbsinit(const mbstate_t *ps)
return (ps == NULL || ((const _EucState *)ps)->want == 0);
}
#define CEI ((_EucInfo *)(_CurrentRuneLocale->__variable))
#define _SS2 0x008e
#define _SS3 0x008f
#define GR_BITS 0x80808080 /* XXX: to be fixed */
static __inline int
_euc_set(u_int c)
/*
* EUC-CN uses CS0, CS1 and CS2 (4 bytes).
*/
int
_EUC_CN_init(struct xlocale_ctype *l, _RuneLocale *rl)
{
l->__mbrtowc = _EUC_CN_mbrtowc;
l->__wcrtomb = _EUC_CN_wcrtomb;
l->__mbsnrtowcs = _EUC_CN_mbsnrtowcs;
l->__wcsnrtombs = _EUC_CN_wcsnrtombs;
l->__mbsinit = _EUC_mbsinit;
c &= 0xff;
return ((c & 0x80) ? c == _SS3 ? 3 : c == _SS2 ? 2 : 1 : 0);
l->runes = rl;
l->__mb_cur_max = 4;
l->__mb_sb_limit = 256;
return (0);
}
static size_t
_EUC_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, size_t n,
_EUC_CN_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s,
size_t n, mbstate_t * __restrict ps)
{
return (_EUC_mbrtowc_impl(pwc, s, n, ps, SS2, 4, 0, 0));
}
static size_t
_EUC_CN_mbsnrtowcs(wchar_t * __restrict dst,
const char ** __restrict src,
size_t nms, size_t len, mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _EUC_CN_mbrtowc));
}
static size_t
_EUC_CN_wcrtomb(char * __restrict s, wchar_t wc,
mbstate_t * __restrict ps)
{
return (_EUC_wcrtomb_impl(s, wc, ps, SS2, 4, 0, 0));
}
static size_t
_EUC_CN_wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
size_t nwc, size_t len, mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _EUC_CN_wcrtomb));
}
/*
* EUC-KR uses only CS0 and CS1.
*/
int
_EUC_KR_init(struct xlocale_ctype *l, _RuneLocale *rl)
{
l->__mbrtowc = _EUC_KR_mbrtowc;
l->__wcrtomb = _EUC_KR_wcrtomb;
l->__mbsnrtowcs = _EUC_KR_mbsnrtowcs;
l->__wcsnrtombs = _EUC_KR_wcsnrtombs;
l->__mbsinit = _EUC_mbsinit;
l->runes = rl;
l->__mb_cur_max = 2;
l->__mb_sb_limit = 128;
return (0);
}
static size_t
_EUC_KR_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s,
size_t n, mbstate_t * __restrict ps)
{
return (_EUC_mbrtowc_impl(pwc, s, n, ps, 0, 0, 0, 0));
}
static size_t
_EUC_KR_mbsnrtowcs(wchar_t * __restrict dst,
const char ** __restrict src,
size_t nms, size_t len, mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _EUC_KR_mbrtowc));
}
static size_t
_EUC_KR_wcrtomb(char * __restrict s, wchar_t wc,
mbstate_t * __restrict ps)
{
return (_EUC_wcrtomb_impl(s, wc, ps, 0, 0, 0, 0));
}
static size_t
_EUC_KR_wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
size_t nwc, size_t len, mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _EUC_KR_wcrtomb));
}
/*
* EUC-JP uses CS0, CS1, CS2, and CS3.
*/
int
_EUC_JP_init(struct xlocale_ctype *l, _RuneLocale *rl)
{
l->__mbrtowc = _EUC_JP_mbrtowc;
l->__wcrtomb = _EUC_JP_wcrtomb;
l->__mbsnrtowcs = _EUC_JP_mbsnrtowcs;
l->__wcsnrtombs = _EUC_JP_wcsnrtombs;
l->__mbsinit = _EUC_mbsinit;
l->runes = rl;
l->__mb_cur_max = 3;
l->__mb_sb_limit = 196;
return (0);
}
static size_t
_EUC_JP_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s,
size_t n, mbstate_t * __restrict ps)
{
return (_EUC_mbrtowc_impl(pwc, s, n, ps, SS2, 2, SS3, 3));
}
static size_t
_EUC_JP_mbsnrtowcs(wchar_t * __restrict dst,
const char ** __restrict src,
size_t nms, size_t len, mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _EUC_JP_mbrtowc));
}
static size_t
_EUC_JP_wcrtomb(char * __restrict s, wchar_t wc,
mbstate_t * __restrict ps)
{
return (_EUC_wcrtomb_impl(s, wc, ps, SS2, 2, SS3, 3));
}
static size_t
_EUC_JP_wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
size_t nwc, size_t len, mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _EUC_JP_wcrtomb));
}
/*
* EUC-TW uses CS0, CS1, and CS2.
*/
int
_EUC_TW_init(struct xlocale_ctype *l, _RuneLocale *rl)
{
l->__mbrtowc = _EUC_TW_mbrtowc;
l->__wcrtomb = _EUC_TW_wcrtomb;
l->__mbsnrtowcs = _EUC_TW_mbsnrtowcs;
l->__wcsnrtombs = _EUC_TW_wcsnrtombs;
l->__mbsinit = _EUC_mbsinit;
l->runes = rl;
l->__mb_cur_max = 4;
l->__mb_sb_limit = 256;
return (0);
}
static size_t
_EUC_TW_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s,
size_t n, mbstate_t * __restrict ps)
{
return (_EUC_mbrtowc_impl(pwc, s, n, ps, SS2, 4, 0, 0));
}
static size_t
_EUC_TW_mbsnrtowcs(wchar_t * __restrict dst,
const char ** __restrict src,
size_t nms, size_t len, mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _EUC_TW_mbrtowc));
}
static size_t
_EUC_TW_wcrtomb(char * __restrict s, wchar_t wc,
mbstate_t * __restrict ps)
{
return (_EUC_wcrtomb_impl(s, wc, ps, SS2, 4, 0, 0));
}
static size_t
_EUC_TW_wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
size_t nwc, size_t len, mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _EUC_TW_wcrtomb));
}
/*
* Common EUC code.
*/
static size_t
_EUC_mbrtowc_impl(wchar_t * __restrict pwc, const char * __restrict s,
size_t n, mbstate_t * __restrict ps,
uint8_t cs2, uint8_t cs2width, uint8_t cs3, uint8_t cs3width)
{
_EucState *es;
int i, set, want;
wchar_t wc;
const char *os;
int i, want;
wchar_t wc = 0;
unsigned char ch, chs;
es = (_EucState *)ps;
if (es->want < 0 || es->want > MB_CUR_MAX || es->set < 0 ||
es->set > 3) {
if (es->want < 0 || es->want > MB_CUR_MAX) {
errno = EINVAL;
return ((size_t)-1);
}
@ -176,58 +337,61 @@ _EUC_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, size_t n,
/* Incomplete multibyte sequence */
return ((size_t)-2);
os = s;
if (es->want == 0) {
want = CEI->count[set = _euc_set(*s)];
if (set == 2 || set == 3) {
--want;
if (--n == 0) {
/* Incomplete multibyte sequence */
es->set = set;
es->want = want;
es->ch = 0;
return ((size_t)-2);
}
++s;
if (*s == '\0') {
errno = EILSEQ;
return ((size_t)-1);
}
/* Fast path for plain ASCII (CS0) */
if (((ch = (unsigned char)*s) & 0x80) == 0) {
if (pwc != NULL)
*pwc = ch;
return (ch != '\0' ? 1 : 0);
}
wc = (unsigned char)*s++;
} else {
set = es->set;
want = es->want;
wc = es->ch;
}
for (i = (es->want == 0) ? 1 : 0; i < MIN(want, n); i++) {
if (*s == '\0') {
if (ch >= 0xa1) {
/* CS1 */
want = 2;
} else if (ch == cs2) {
want = cs2width;
} else if (ch == cs3) {
want = cs3width;
} else {
errno = EILSEQ;
return ((size_t)-1);
}
wc = (wc << 8) | (unsigned char)*s++;
es->want = want;
es->ch = 0;
} else {
want = es->want;
wc = es->ch;
}
for (i = 0; i < MIN(want, n); i++) {
wc <<= 8;
chs = *s;
wc |= chs;
s++;
}
if (i < want) {
/* Incomplete multibyte sequence */
es->set = set;
es->want = want - i;
es->ch = wc;
errno = EILSEQ;
return ((size_t)-2);
}
wc = (wc & ~CEI->mask) | CEI->bits[set];
if (pwc != NULL)
*pwc = wc;
es->want = 0;
return (wc == L'\0' ? 0 : s - os);
return (wc == L'\0' ? 0 : want);
}
static size_t
_EUC_wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
_EUC_wcrtomb_impl(char * __restrict s, wchar_t wc,
mbstate_t * __restrict ps,
uint8_t cs2, uint8_t cs2width, uint8_t cs3, uint8_t cs3width)
{
_EucState *es;
wchar_t m, nm;
int i, len;
wchar_t nm;
es = (_EucState *)ps;
@ -240,34 +404,52 @@ _EUC_wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
/* Reset to initial shift state (no-op) */
return (1);
m = wc & CEI->mask;
nm = wc & ~m;
if ((wc & ~0x7f) == 0) {
/* Fast path for plain ASCII (CS0) */
*s = (char)wc;
return (1);
}
if (m == CEI->bits[1]) {
CodeSet1:
/* Codeset 1: The first byte must have 0x80 in it. */
i = len = CEI->count[1];
while (i-- > 0)
*s++ = (nm >> (i << 3)) | 0x80;
/* Determine the "length" */
if ((unsigned)wc > 0xffffff) {
len = 4;
} else if ((unsigned)wc > 0xffff) {
len = 3;
} else if ((unsigned)wc > 0xff) {
len = 2;
} else {
if (m == CEI->bits[0])
i = len = CEI->count[0];
else if (m == CEI->bits[2]) {
i = len = CEI->count[2];
*s++ = _SS2;
--i;
/* SS2 designates G2 into GR */
nm |= GR_BITS;
} else if (m == CEI->bits[3]) {
i = len = CEI->count[3];
*s++ = _SS3;
--i;
/* SS3 designates G3 into GR */
nm |= GR_BITS;
} else
goto CodeSet1; /* Bletch */
while (i-- > 0)
*s++ = (nm >> (i << 3)) & 0xff;
len = 1;
}
if (len > MB_CUR_MAX) {
errno = EILSEQ;
return ((size_t)-1);
}
/* This first check excludes CS1, which is implicitly valid. */
if ((wc < 0xa100) || (wc > 0xffff)) {
/* Check for valid CS2 or CS3 */
nm = (wc >> ((len - 1) * 8));
if (nm == cs2) {
if (len != cs2width) {
errno = EILSEQ;
return ((size_t)-1);
}
} else if (nm == cs3) {
if (len != cs3width) {
errno = EILSEQ;
return ((size_t)-1);
}
} else {
errno = EILSEQ;
return ((size_t)-1);
}
}
/* Stash the bytes, least significant last */
for (i = len - 1; i >= 0; i--) {
s[i] = (wc & 0xff);
wc >>= 8;
}
return (len);
}

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins
* All rights reserved.
*
@ -28,6 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* PRC National Standard GB 18030-2000 encoding of Chinese text.
*
@ -49,6 +52,13 @@ static size_t _GB18030_mbrtowc(wchar_t * __restrict, const char * __restrict,
static int _GB18030_mbsinit(const mbstate_t *);
static size_t _GB18030_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _GB18030_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _GB18030_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
typedef struct {
int count;
@ -62,6 +72,8 @@ _GB18030_init(struct xlocale_ctype *l, _RuneLocale *rl)
l->__mbrtowc = _GB18030_mbrtowc;
l->__wcrtomb = _GB18030_wcrtomb;
l->__mbsinit = _GB18030_mbsinit;
l->__mbsnrtowcs = _GB18030_mbsnrtowcs;
l->__wcsnrtombs = _GB18030_wcsnrtombs;
l->runes = rl;
l->__mb_cur_max = 4;
l->__mb_sb_limit = 128;
@ -222,3 +234,19 @@ ilseq:
errno = EILSEQ;
return ((size_t)-1);
}
static size_t
_GB18030_mbsnrtowcs(wchar_t * __restrict dst,
const char ** __restrict src, size_t nms, size_t len,
mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _GB18030_mbrtowc));
}
static size_t
_GB18030_wcsnrtombs(char * __restrict dst,
const wchar_t ** __restrict src, size_t nwc, size_t len,
mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _GB18030_wcrtomb));
}

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2004 Tim J. Robbins. All rights reserved.
* Copyright (c) 2003 David Xu <davidxu@freebsd.org>
* All rights reserved.
@ -45,6 +47,13 @@ static size_t _GB2312_mbrtowc(wchar_t * __restrict, const char * __restrict,
static int _GB2312_mbsinit(const mbstate_t *);
static size_t _GB2312_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _GB2312_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _GB2312_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
typedef struct {
int count;
@ -59,6 +68,8 @@ _GB2312_init(struct xlocale_ctype *l, _RuneLocale *rl)
l->__mbrtowc = _GB2312_mbrtowc;
l->__wcrtomb = _GB2312_wcrtomb;
l->__mbsinit = _GB2312_mbsinit;
l->__mbsnrtowcs = _GB2312_mbsnrtowcs;
l->__wcsnrtombs = _GB2312_wcsnrtombs;
l->__mb_cur_max = 2;
l->__mb_sb_limit = 128;
return (0);
@ -71,7 +82,7 @@ _GB2312_mbsinit(const mbstate_t *ps)
return (ps == NULL || ((const _GB2312State *)ps)->count == 0);
}
static __inline int
static int
_GB2312_check(const char *str, size_t n)
{
const u_char *s = (const u_char *)str;
@ -90,7 +101,7 @@ _GB2312_check(const char *str, size_t n)
} else if (s[0] & 0x80) {
/* Invalid multibyte sequence */
return (-1);
}
}
return (1);
}
@ -158,3 +169,19 @@ _GB2312_wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
*s = wc & 0xff;
return (1);
}
static size_t
_GB2312_mbsnrtowcs(wchar_t * __restrict dst,
const char ** __restrict src, size_t nms, size_t len,
mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _GB2312_mbrtowc));
}
static size_t
_GB2312_wcsnrtombs(char * __restrict dst,
const wchar_t ** __restrict src, size_t nwc, size_t len,
mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _GB2312_wcrtomb));
}

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved.
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
@ -54,6 +56,12 @@ static size_t _GBK_mbrtowc(wchar_t * __restrict, const char * __restrict,
static int _GBK_mbsinit(const mbstate_t *);
static size_t _GBK_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _GBK_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _GBK_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
typedef struct {
wchar_t ch;
@ -66,6 +74,8 @@ _GBK_init(struct xlocale_ctype *l, _RuneLocale *rl)
l->__mbrtowc = _GBK_mbrtowc;
l->__wcrtomb = _GBK_wcrtomb;
l->__mbsinit = _GBK_mbsinit;
l->__mbsnrtowcs = _GBK_mbsnrtowcs;
l->__wcsnrtombs = _GBK_wcsnrtombs;
l->runes = rl;
l->__mb_cur_max = 2;
l->__mb_sb_limit = 128;
@ -79,7 +89,7 @@ _GBK_mbsinit(const mbstate_t *ps)
return (ps == NULL || ((const _GBKState *)ps)->ch == 0);
}
static __inline int
static int
_gbk_check(u_int c)
{
@ -140,7 +150,7 @@ _GBK_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, size_t n,
wc = (wc << 8) | (*s++ & 0xff);
if (pwc != NULL)
*pwc = wc;
return (2);
return (2);
} else {
if (pwc != NULL)
*pwc = wc;
@ -171,3 +181,17 @@ _GBK_wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
*s = wc & 0xff;
return (1);
}
static size_t
_GBK_mbsnrtowcs(wchar_t * __restrict dst, const char ** __restrict src,
size_t nms, size_t len, mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _GBK_mbrtowc));
}
static size_t
_GBK_wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
size_t nwc, size_t len, mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _GBK_wcrtomb));
}

View File

@ -54,7 +54,7 @@ digittoint(int c)
int
isalnum(int c)
{
return (__sbistype(c, _CTYPE_A|_CTYPE_D));
return (__sbistype(c, _CTYPE_A|_CTYPE_N));
}
#undef isalpha
@ -124,7 +124,7 @@ islower(int c)
int
isnumber(int c)
{
return (__sbistype(c, _CTYPE_D));
return (__sbistype(c, _CTYPE_N));
}
#undef isphonogram

View File

@ -44,7 +44,7 @@ __FBSDID("$FreeBSD$");
int
iswalnum(wint_t wc)
{
return (__istype(wc, _CTYPE_A|_CTYPE_D));
return (__istype(wc, _CTYPE_A|_CTYPE_N));
}
#undef iswalpha
@ -79,7 +79,7 @@ iswcntrl(wint_t wc)
int
iswdigit(wint_t wc)
{
return (__isctype(wc, _CTYPE_D));
return (__istype(wc, _CTYPE_D));
}
#undef iswgraph
@ -114,7 +114,7 @@ iswlower(wint_t wc)
int
iswnumber(wint_t wc)
{
return (__istype(wc, _CTYPE_D));
return (__istype(wc, _CTYPE_N));
}
#undef iswphonogram
@ -170,7 +170,7 @@ iswupper(wint_t wc)
int
iswxdigit(wint_t wc)
{
return (__isctype(wc, _CTYPE_X));
return (__istype(wc, _CTYPE_X));
}
#undef towlower

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2004 Tim J. Robbins.
* All rights reserved.
*
@ -37,6 +39,8 @@
#include <runetype.h>
#include "xlocale_private.h"
#define SS2 0x008e
#define SS3 0x008f
/*
* Conversion function pointers for current encoding.
@ -62,18 +66,24 @@ extern struct xlocale_ctype __xlocale_global_ctype;
* Rune initialization function prototypes.
*/
int _none_init(struct xlocale_ctype *, _RuneLocale *);
int _ascii_init(struct xlocale_ctype *, _RuneLocale *);
int _UTF8_init(struct xlocale_ctype *, _RuneLocale *);
int _EUC_init(struct xlocale_ctype *, _RuneLocale *);
int _EUC_CN_init(struct xlocale_ctype *, _RuneLocale *);
int _EUC_JP_init(struct xlocale_ctype *, _RuneLocale *);
int _EUC_KR_init(struct xlocale_ctype *, _RuneLocale *);
int _EUC_TW_init(struct xlocale_ctype *, _RuneLocale *);
int _GB18030_init(struct xlocale_ctype *, _RuneLocale *);
int _GB2312_init(struct xlocale_ctype *, _RuneLocale *);
int _GBK_init(struct xlocale_ctype *, _RuneLocale *);
int _BIG5_init(struct xlocale_ctype *, _RuneLocale *);
int _MSKanji_init(struct xlocale_ctype *, _RuneLocale *);
extern size_t __mbsnrtowcs_std(wchar_t * __restrict, const char ** __restrict,
size_t, size_t, mbstate_t * __restrict);
extern size_t __wcsnrtombs_std(char * __restrict, const wchar_t ** __restrict,
size_t, size_t, mbstate_t * __restrict);
typedef size_t (*mbrtowc_pfn_t)(wchar_t * __restrict,
const char * __restrict, size_t, mbstate_t * __restrict);
typedef size_t (*wcrtomb_pfn_t)(char * __restrict, wchar_t,
mbstate_t * __restrict);
size_t __mbsnrtowcs_std(wchar_t * __restrict, const char ** __restrict,
size_t, size_t, mbstate_t * __restrict, mbrtowc_pfn_t);
size_t __wcsnrtombs_std(char * __restrict, const wchar_t ** __restrict,
size_t, size_t, mbstate_t * __restrict, wcrtomb_pfn_t);
#endif /* _MBLOCAL_H_ */

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins.
*
* Copyright (c) 2011 The FreeBSD Foundation
@ -56,20 +58,20 @@ mbsnrtowcs(wchar_t * __restrict dst, const char ** __restrict src,
size_t
__mbsnrtowcs_std(wchar_t * __restrict dst, const char ** __restrict src,
size_t nms, size_t len, mbstate_t * __restrict ps)
size_t nms, size_t len, mbstate_t * __restrict ps,
mbrtowc_pfn_t pmbrtowc)
{
const char *s;
size_t nchr;
wchar_t wc;
size_t nb;
struct xlocale_ctype *ct = XLOCALE_CTYPE(__get_locale());
s = *src;
nchr = 0;
if (dst == NULL) {
for (;;) {
if ((nb = ct->__mbrtowc(&wc, s, nms, ps)) == (size_t)-1)
if ((nb = pmbrtowc(&wc, s, nms, ps)) == (size_t)-1)
/* Invalid sequence - mbrtowc() sets errno. */
return ((size_t)-1);
else if (nb == 0 || nb == (size_t)-2)
@ -82,7 +84,7 @@ __mbsnrtowcs_std(wchar_t * __restrict dst, const char ** __restrict src,
}
while (len-- > 0) {
if ((nb = ct->__mbrtowc(dst, s, nms, ps)) == (size_t)-1) {
if ((nb = pmbrtowc(dst, s, nms, ps)) == (size_t)-1) {
*src = s;
return ((size_t)-1);
} else if (nb == (size_t)-2) {

View File

@ -1,4 +1,6 @@
/*
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved.
*
* ja_JP.SJIS locale table for BSD4.4/rune
@ -28,14 +30,14 @@
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
@ -59,6 +61,12 @@ static size_t _MSKanji_mbrtowc(wchar_t * __restrict, const char * __restrict,
static int _MSKanji_mbsinit(const mbstate_t *);
static size_t _MSKanji_wcrtomb(char * __restrict, wchar_t,
mbstate_t * __restrict);
static size_t _MSKanji_mbsnrtowcs(wchar_t * __restrict,
const char ** __restrict, size_t, size_t,
mbstate_t * __restrict);
static size_t _MSKanji_wcsnrtombs(char * __restrict,
const wchar_t ** __restrict, size_t, size_t,
mbstate_t * __restrict);
typedef struct {
wchar_t ch;
@ -70,6 +78,8 @@ _MSKanji_init(struct xlocale_ctype *l, _RuneLocale *rl)
l->__mbrtowc = _MSKanji_mbrtowc;
l->__wcrtomb = _MSKanji_wcrtomb;
l->__mbsnrtowcs = _MSKanji_mbsnrtowcs;
l->__wcsnrtombs = _MSKanji_wcsnrtombs;
l->__mbsinit = _MSKanji_mbsinit;
l->runes = rl;
l->__mb_cur_max = 2;
@ -163,3 +173,19 @@ _MSKanji_wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps)
*s++ = wc >> (i << 3);
return (len);
}
static size_t
_MSKanji_mbsnrtowcs(wchar_t * __restrict dst,
const char ** __restrict src, size_t nms,
size_t len, mbstate_t * __restrict ps)
{
return (__mbsnrtowcs_std(dst, src, nms, len, ps, _MSKanji_mbrtowc));
}
static size_t
_MSKanji_wcsnrtombs(char * __restrict dst,
const wchar_t ** __restrict src, size_t nwc,
size_t len, mbstate_t * __restrict ps)
{
return (__wcsnrtombs_std(dst, src, nwc, len, ps, _MSKanji_wcrtomb));
}

View File

@ -37,7 +37,10 @@ __FBSDID("$FreeBSD$");
#include <locale.h>
#include <stdlib.h>
#include <string.h>
#include <runetype.h>
#include <wchar.h>
#include "mblocal.h"
#include "lnumeric.h"
#include "lmessages.h"
#include "lmonetary.h"
@ -54,14 +57,25 @@ nl_langinfo_l(nl_item item, locale_t loc)
switch (item) {
case CODESET:
ret = "";
if ((s = querylocale(LC_CTYPE_MASK, loc)) != NULL) {
if ((cs = strchr(s, '.')) != NULL)
ret = cs + 1;
else if (strcmp(s, "C") == 0 ||
strcmp(s, "POSIX") == 0)
ret = "US-ASCII";
}
s = XLOCALE_CTYPE(loc)->runes->__encoding;
if (strcmp(s, "EUC-CN") == 0)
ret = "eucCN";
else if (strcmp(s, "EUC-JP") == 0)
ret = "eucJP";
else if (strcmp(s, "EUC-KR") == 0)
ret = "eucKR";
else if (strcmp(s, "EUC-TW") == 0)
ret = "eucTW";
else if (strcmp(s, "BIG5") == 0)
ret = "Big5";
else if (strcmp(s, "MSKanji") == 0)
ret = "SJIS";
else if (strcmp(s, "NONE") == 0)
ret = "US-ASCII";
else if (strncmp(s, "NONE:", 5) == 0)
ret = (char *)(s + 5);
else
ret = (char *)s;
break;
case D_T_FMT:
ret = (char *) __get_current_time_locale(loc)->c_fmt;

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved.
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
@ -187,16 +189,6 @@ _none_wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
/* setup defaults */
size_t (*__mbrtowc)(wchar_t * __restrict, const char * __restrict, size_t,
mbstate_t * __restrict) = _none_mbrtowc;
int (*__mbsinit)(const mbstate_t *) = _none_mbsinit;
size_t (*__mbsnrtowcs)(wchar_t * __restrict, const char ** __restrict,
size_t, size_t, mbstate_t * __restrict) = _none_mbsnrtowcs;
size_t (*__wcrtomb)(char * __restrict, wchar_t, mbstate_t * __restrict) =
_none_wcrtomb;
size_t (*__wcsnrtombs)(char * __restrict, const wchar_t ** __restrict,
size_t, size_t, mbstate_t * __restrict) = _none_wcsnrtombs;
struct xlocale_ctype __xlocale_global_ctype = {
{{0}, "C"},
(_RuneLocale*)&_DefaultRuneLocale,

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2014 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
@ -45,14 +47,15 @@ __FBSDID("$FreeBSD$");
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include "un-namespace.h"
#include "runefile.h"
_RuneLocale *_Read_RuneMagi(FILE *);
_RuneLocale *
_Read_RuneMagi(FILE *fp)
_Read_RuneMagi(const char *fname)
{
char *fdata, *data;
void *lastp;
@ -67,119 +70,77 @@ _Read_RuneMagi(FILE *fp)
_FileRuneEntry *maplower_ext_ranges;
_FileRuneEntry *mapupper_ext_ranges;
int runetype_ext_len = 0;
int fd;
if (_fstat(fileno(fp), &sb) < 0)
return (NULL);
if ((size_t)sb.st_size < sizeof(_FileRuneLocale)) {
errno = EFTYPE;
if ((fd = _open(fname, O_RDONLY)) < 0) {
errno = EINVAL;
return (NULL);
}
if ((fdata = malloc(sb.st_size)) == NULL)
return (NULL);
errno = 0;
rewind(fp); /* Someone might have read the magic number once already */
if (errno) {
saverr = errno;
free(fdata);
errno = saverr;
if (_fstat(fd, &sb) < 0) {
(void) _close(fd);
errno = EINVAL;
return (NULL);
}
if (fread(fdata, sb.st_size, 1, fp) != 1) {
saverr = errno;
free(fdata);
errno = saverr;
if ((size_t)sb.st_size < sizeof (_FileRuneLocale)) {
(void) _close(fd);
errno = EINVAL;
return (NULL);
}
frl = (_FileRuneLocale *)fdata;
fdata = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
(void) _close(fd);
if (fdata == NULL) {
errno = EINVAL;
return (NULL);
}
frl = (_FileRuneLocale *)(void *)fdata;
lastp = fdata + sb.st_size;
variable = frl + 1;
if (memcmp(frl->magic, _FILE_RUNE_MAGIC_1, sizeof(frl->magic))) {
free(fdata);
errno = EFTYPE;
return (NULL);
}
frl->variable_len = ntohl(frl->variable_len);
frl->runetype_ext_nranges = ntohl(frl->runetype_ext_nranges);
frl->maplower_ext_nranges = ntohl(frl->maplower_ext_nranges);
frl->mapupper_ext_nranges = ntohl(frl->mapupper_ext_nranges);
for (x = 0; x < _CACHED_RUNES; ++x) {
frl->runetype[x] = ntohl(frl->runetype[x]);
frl->maplower[x] = ntohl(frl->maplower[x]);
frl->mapupper[x] = ntohl(frl->mapupper[x]);
if (memcmp(frl->magic, _FILE_RUNE_MAGIC_1, sizeof (frl->magic))) {
goto invalid;
}
runetype_ext_ranges = (_FileRuneEntry *)variable;
variable = runetype_ext_ranges + frl->runetype_ext_nranges;
if (variable > lastp) {
free(fdata);
errno = EFTYPE;
return (NULL);
goto invalid;
}
maplower_ext_ranges = (_FileRuneEntry *)variable;
variable = maplower_ext_ranges + frl->maplower_ext_nranges;
if (variable > lastp) {
free(fdata);
errno = EFTYPE;
return (NULL);
goto invalid;
}
mapupper_ext_ranges = (_FileRuneEntry *)variable;
variable = mapupper_ext_ranges + frl->mapupper_ext_nranges;
if (variable > lastp) {
free(fdata);
errno = EFTYPE;
return (NULL);
goto invalid;
}
frr = runetype_ext_ranges;
for (x = 0; x < frl->runetype_ext_nranges; ++x) {
uint32_t *types;
frr[x].min = ntohl(frr[x].min);
frr[x].max = ntohl(frr[x].max);
frr[x].map = ntohl(frr[x].map);
if (frr[x].map == 0) {
int len = frr[x].max - frr[x].min + 1;
types = variable;
variable = types + len;
runetype_ext_len += len;
if (variable > lastp) {
free(fdata);
errno = EFTYPE;
return (NULL);
goto invalid;
}
while (len-- > 0)
types[len] = ntohl(types[len]);
}
}
frr = maplower_ext_ranges;
for (x = 0; x < frl->maplower_ext_nranges; ++x) {
frr[x].min = ntohl(frr[x].min);
frr[x].max = ntohl(frr[x].max);
frr[x].map = ntohl(frr[x].map);
}
frr = mapupper_ext_ranges;
for (x = 0; x < frl->mapupper_ext_nranges; ++x) {
frr[x].min = ntohl(frr[x].min);
frr[x].max = ntohl(frr[x].max);
frr[x].map = ntohl(frr[x].map);
}
if ((char *)variable + frl->variable_len > (char *)lastp) {
free(fdata);
errno = EFTYPE;
return (NULL);
goto invalid;
}
/*
@ -192,7 +153,7 @@ _Read_RuneMagi(FILE *fp)
frl->variable_len);
if (data == NULL) {
saverr = errno;
free(fdata);
munmap(fdata, sb.st_size);
errno = saverr;
return (NULL);
}
@ -202,7 +163,6 @@ _Read_RuneMagi(FILE *fp)
memcpy(rl->__magic, _RUNE_MAGIC_1, sizeof(rl->__magic));
memcpy(rl->__encoding, frl->encoding, sizeof(rl->__encoding));
rl->__invalid_rune = 0;
rl->__variable_len = frl->variable_len;
rl->__runetype_ext.__nranges = frl->runetype_ext_nranges;
@ -265,7 +225,7 @@ _Read_RuneMagi(FILE *fp)
}
memcpy(rl->__variable, variable, rl->__variable_len);
free(fdata);
munmap(fdata, sb.st_size);
/*
* Go out and zero pointers that should be zero.
@ -283,4 +243,9 @@ _Read_RuneMagi(FILE *fp)
rl->__mapupper_ext.__ranges = NULL;
return (rl);
invalid:
munmap(fdata, sb.st_size);
errno = EINVAL;
return (NULL);
}

View File

@ -63,23 +63,15 @@ _Thread_local const _RuneLocale *_ThreadRuneLocale;
extern int __mb_sb_limit;
extern _RuneLocale *_Read_RuneMagi(FILE *);
extern _RuneLocale *_Read_RuneMagi(const char *);
static int __setrunelocale(struct xlocale_ctype *l, const char *);
#define __collate_substitute_nontrivial (table->__collate_substitute_nontrivial)
#define __collate_substitute_table_ptr (table->__collate_substitute_table_ptr)
#define __collate_char_pri_table_ptr (table->__collate_char_pri_table_ptr)
#define __collate_chain_pri_table (table->__collate_chain_pri_table)
static void
destruct_ctype(void *v)
{
struct xlocale_ctype *l = v;
if (strcmp(l->runes->__encoding, "EUC") == 0)
free(l->runes->__variable);
if (&_DefaultRuneLocale != l->runes)
free(l->runes);
free(l);
@ -95,12 +87,7 @@ __getCurrentRuneLocale(void)
static void
free_runes(_RuneLocale *rl)
{
/* FIXME: The "EUC" check here is a hideous abstraction violation. */
if ((rl != &_DefaultRuneLocale) && (rl)) {
if (strcmp(rl->__encoding, "EUC") == 0) {
free(rl->__variable);
}
free(rl);
}
}
@ -108,10 +95,9 @@ free_runes(_RuneLocale *rl)
static int
__setrunelocale(struct xlocale_ctype *l, const char *encoding)
{
FILE *fp;
char name[PATH_MAX];
_RuneLocale *rl;
int saverr, ret;
int ret;
char *path;
struct xlocale_ctype saved = *l;
/*
@ -124,37 +110,37 @@ __setrunelocale(struct xlocale_ctype *l, const char *encoding)
}
/* Range checking not needed, encoding length already checked before */
(void) strcpy(name, _PathLocale);
(void) strcat(name, "/");
(void) strcat(name, encoding);
(void) strcat(name, "/LC_CTYPE");
asprintf(&path, "%s/%s/LC_CTYPE", _PathLocale, encoding);
if (path == NULL)
return (0);
if ((fp = fopen(name, "re")) == NULL)
return (errno == 0 ? ENOENT : errno);
if ((rl = _Read_RuneMagi(fp)) == NULL) {
saverr = (errno == 0 ? EFTYPE : errno);
(void)fclose(fp);
return (saverr);
if ((rl = _Read_RuneMagi(path)) == NULL) {
free(path);
errno = EINVAL;
return (errno);
}
(void)fclose(fp);
free(path);
l->__mbrtowc = NULL;
l->__mbsinit = NULL;
l->__mbsnrtowcs = __mbsnrtowcs_std;
l->__mbsnrtowcs = NULL;
l->__wcrtomb = NULL;
l->__wcsnrtombs = __wcsnrtombs_std;
l->__wcsnrtombs = NULL;
rl->__sputrune = NULL;
rl->__sgetrune = NULL;
if (strcmp(rl->__encoding, "NONE") == 0)
if (strncmp(rl->__encoding, "NONE", 4) == 0)
ret = _none_init(l, rl);
else if (strcmp(rl->__encoding, "ASCII") == 0)
ret = _ascii_init(l, rl);
else if (strcmp(rl->__encoding, "UTF-8") == 0)
ret = _UTF8_init(l, rl);
else if (strcmp(rl->__encoding, "EUC") == 0)
ret = _EUC_init(l, rl);
else if (strcmp(rl->__encoding, "EUC-CN") == 0)
ret = _EUC_CN_init(l, rl);
else if (strcmp(rl->__encoding, "EUC-JP") == 0)
ret = _EUC_JP_init(l, rl);
else if (strcmp(rl->__encoding, "EUC-KR") == 0)
ret = _EUC_KR_init(l, rl);
else if (strcmp(rl->__encoding, "EUC-TW") == 0)
ret = _EUC_TW_init(l, rl);
else if (strcmp(rl->__encoding, "GB18030") == 0)
ret = _GB18030_init(l, rl);
else if (strcmp(rl->__encoding, "GB2312") == 0)
@ -211,7 +197,7 @@ __set_thread_rune_locale(locale_t loc)
#endif
void *
__ctype_load(const char *locale, locale_t unused)
__ctype_load(const char *locale, locale_t unused __unused)
{
struct xlocale_ctype *l = calloc(sizeof(struct xlocale_ctype), 1);

View File

@ -101,16 +101,16 @@ const _RuneLocale _DefaultRuneLocale = {
_CTYPE_P|_CTYPE_R|_CTYPE_G,
_CTYPE_P|_CTYPE_R|_CTYPE_G,
_CTYPE_P|_CTYPE_R|_CTYPE_G,
/*30*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|0,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|1,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|2,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|3,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|4,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|5,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|6,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|7,
/*38*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|8,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|9,
/*30*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|0,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|1,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|2,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|3,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|4,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|5,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|6,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|7,
/*38*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|8,
_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|9,
_CTYPE_P|_CTYPE_R|_CTYPE_G,
_CTYPE_P|_CTYPE_R|_CTYPE_G,
_CTYPE_P|_CTYPE_R|_CTYPE_G,

View File

@ -1,4 +1,5 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins
* All rights reserved.
@ -70,7 +71,7 @@ _UTF8_init(struct xlocale_ctype *l, _RuneLocale *rl)
l->__mbsnrtowcs = _UTF8_mbsnrtowcs;
l->__wcsnrtombs = _UTF8_wcsnrtombs;
l->runes = rl;
l->__mb_cur_max = 6;
l->__mb_cur_max = 4;
/*
* UCS-4 encoding used as the internal representation, so
* slots 0x0080-0x00FF are occuped and must be excluded
@ -165,6 +166,7 @@ _UTF8_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, size_t n,
wch = (unsigned char)*s++ & mask;
else
wch = us->ch;
for (i = (us->want == 0) ? 1 : 0; i < MIN(want, n); i++) {
if ((*s & 0xc0) != 0x80) {
/*

View File

@ -1,4 +1,6 @@
/*-
* Copyright 2013 Garrett D'Amore <garrett@damore.org>
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins.
* All rights reserved.
*
@ -57,21 +59,21 @@ wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src, size_t nwc,
size_t
__wcsnrtombs_std(char * __restrict dst, const wchar_t ** __restrict src,
size_t nwc, size_t len, mbstate_t * __restrict ps)
size_t nwc, size_t len, mbstate_t * __restrict ps,
wcrtomb_pfn_t pwcrtomb)
{
mbstate_t mbsbak;
char buf[MB_LEN_MAX];
const wchar_t *s;
size_t nbytes;
size_t nb;
struct xlocale_ctype *l = XLOCALE_CTYPE(__get_locale());
s = *src;
nbytes = 0;
if (dst == NULL) {
while (nwc-- > 0) {
if ((nb = l->__wcrtomb(buf, *s, ps)) == (size_t)-1)
if ((nb = pwcrtomb(buf, *s, ps)) == (size_t)-1)
/* Invalid character - wcrtomb() sets errno. */
return ((size_t)-1);
else if (*s == L'\0')
@ -85,7 +87,7 @@ __wcsnrtombs_std(char * __restrict dst, const wchar_t ** __restrict src,
while (len > 0 && nwc-- > 0) {
if (len > (size_t)MB_CUR_MAX) {
/* Enough space to translate in-place. */
if ((nb = l->__wcrtomb(dst, *s, ps)) == (size_t)-1) {
if ((nb = pwcrtomb(dst, *s, ps)) == (size_t)-1) {
*src = s;
return ((size_t)-1);
}
@ -98,7 +100,7 @@ __wcsnrtombs_std(char * __restrict dst, const wchar_t ** __restrict src,
* character is too long for the buffer.
*/
mbsbak = *ps;
if ((nb = l->__wcrtomb(buf, *s, ps)) == (size_t)-1) {
if ((nb = pwcrtomb(buf, *s, ps)) == (size_t)-1) {
*src = s;
return ((size_t)-1);
}

View File

@ -73,9 +73,10 @@ wctype_l(const char *property, locale_t locale)
"ideogram\0" /* BSD extension */
"special\0" /* BSD extension */
"phonogram\0" /* BSD extension */
"number\0" /* BSD extension */
"rune\0"; /* BSD extension */
static const wctype_t propmasks[] = {
_CTYPE_A|_CTYPE_D,
_CTYPE_A|_CTYPE_N,
_CTYPE_A,
_CTYPE_B,
_CTYPE_C,
@ -90,6 +91,7 @@ wctype_l(const char *property, locale_t locale)
_CTYPE_I,
_CTYPE_T,
_CTYPE_Q,
_CTYPE_N,
0xFFFFFF00L
};
size_t len1, len2;

View File

@ -1,4 +1,5 @@
/*-
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua>
* at Electronni Visti IA, Kiev, Ukraine.
* All rights reserved.
@ -35,63 +36,78 @@ __FBSDID("$FreeBSD$");
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <wchar.h>
#include "collate.h"
#include <stdio.h>
/*
* In order to properly handle multibyte locales, its easiest to just
* convert to wide characters and then use wcscoll. However if an
* error occurs, we gracefully fall back to simple strcmp. Caller
* should check errno.
*/
int
strcoll_l(const char *s, const char *s2, locale_t locale)
{
int len, len2, prim, prim2, sec, sec2, ret, ret2;
const char *t, *t2;
char *tt, *tt2;
int ret;
wchar_t *t1 = NULL, *t2 = NULL;
wchar_t *w1 = NULL, *w2 = NULL;
const char *cs1, *cs2;
mbstate_t mbs1;
mbstate_t mbs2;
size_t sz1, sz2;
memset(&mbs1, 0, sizeof (mbstate_t));
memset(&mbs2, 0, sizeof (mbstate_t));
/*
* The mbsrtowcs_l function can set the src pointer to null upon
* failure, so it should act on a copy to avoid:
* - sending null pointer to strcmp
* - having strcoll/strcoll_l change *s or *s2 to null
*/
cs1 = s;
cs2 = s2;
FIX_LOCALE(locale);
struct xlocale_collate *table =
(struct xlocale_collate*)locale->components[XLC_COLLATE];
if (table->__collate_load_error)
return strcmp(s, s2);
goto error;
len = len2 = 1;
ret = ret2 = 0;
if (table->__collate_substitute_nontrivial) {
t = tt = __collate_substitute(table, s);
t2 = tt2 = __collate_substitute(table, s2);
} else {
tt = tt2 = NULL;
t = s;
t2 = s2;
}
while(*t && *t2) {
prim = prim2 = 0;
while(*t && !prim) {
__collate_lookup(table, t, &len, &prim, &sec);
t += len;
}
while(*t2 && !prim2) {
__collate_lookup(table, t2, &len2, &prim2, &sec2);
t2 += len2;
}
if(!prim || !prim2)
break;
if(prim != prim2) {
ret = prim - prim2;
goto end;
}
if(!ret2)
ret2 = sec - sec2;
}
if(!*t && *t2)
ret = -(int)((u_char)*t2);
else if(*t && !*t2)
ret = (u_char)*t;
else if(!*t && !*t2)
ret = ret2;
end:
free(tt);
free(tt2);
sz1 = strlen(s) + 1;
sz2 = strlen(s2) + 1;
return ret;
/*
* Simple assumption: conversion to wide format is strictly
* reducing, i.e. a single byte (or multibyte character)
* cannot result in multiple wide characters.
*/
if ((t1 = malloc(sz1 * sizeof (wchar_t))) == NULL)
goto error;
w1 = t1;
if ((t2 = malloc(sz2 * sizeof (wchar_t))) == NULL)
goto error;
w2 = t2;
if ((mbsrtowcs_l(w1, &cs1, sz1, &mbs1, locale)) == (size_t)-1)
goto error;
if ((mbsrtowcs_l(w2, &cs2, sz2, &mbs2, locale)) == (size_t)-1)
goto error;
ret = wcscoll_l(w1, w2, locale);
free(t1);
free(t2);
return (ret);
error:
free(t1);
free(t2);
return (strcmp(s, s2));
}
int

View File

@ -1,4 +1,5 @@
/*-
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua>
* at Electronni Visti IA, Kiev, Ukraine.
* All rights reserved.
@ -35,6 +36,8 @@ __FBSDID("$FreeBSD$");
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <wchar.h>
#include "collate.h"
size_t
@ -48,9 +51,10 @@ strxfrm(char * __restrict dest, const char * __restrict src, size_t len)
size_t
strxfrm_l(char * __restrict dest, const char * __restrict src, size_t len, locale_t locale)
{
int prim, sec, l;
size_t slen;
char *s, *ss;
size_t xlen;
wchar_t *wcs = NULL;
FIX_LOCALE(locale);
struct xlocale_collate *table =
(struct xlocale_collate*)locale->components[XLC_COLLATE];
@ -58,32 +62,42 @@ strxfrm_l(char * __restrict dest, const char * __restrict src, size_t len, local
if (!*src) {
if (len > 0)
*dest = '\0';
return 0;
return (0);
}
/*
* The conversion from multibyte to wide character strings is
* strictly reducing (one byte of an mbs cannot expand to more
* than one wide character.)
*/
slen = strlen(src);
if (table->__collate_load_error)
return strlcpy(dest, src, len);
goto error;
slen = 0;
prim = sec = 0;
ss = s = __collate_substitute(table, src);
while (*s) {
while (*s && !prim) {
__collate_lookup(table, s, &l, &prim, &sec);
s += l;
}
if (prim) {
if (len > 1) {
*dest++ = (char)prim;
len--;
}
slen++;
prim = 0;
}
if ((wcs = malloc((slen + 1) * sizeof (wchar_t))) == NULL)
goto error;
if (mbstowcs_l(wcs, src, slen + 1, locale) == (size_t)-1)
goto error;
if ((xlen = _collate_sxfrm(table, wcs, dest, len)) == (size_t)-1)
goto error;
free(wcs);
if (len > xlen) {
dest[xlen] = 0;
} else if (len) {
dest[len-1] = 0;
}
free(ss);
if (len > 0)
*dest = '\0';
return slen;
return (xlen);
error:
/* errno should be set to ENOMEM if malloc failed */
free(wcs);
strlcpy(dest, src, len);
return (slen);
}

View File

@ -1,4 +1,5 @@
/*-
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002 Tim J. Robbins
* All rights reserved.
*
@ -38,50 +39,181 @@ __FBSDID("$FreeBSD$");
#include <wchar.h>
#include "collate.h"
static char *__mbsdup(const wchar_t *);
/*
* Placeholder implementation of wcscoll(). Attempts to use the single-byte
* collation ordering where possible, and falls back on wcscmp() in locales
* with extended character sets.
*/
int
wcscoll_l(const wchar_t *ws1, const wchar_t *ws2, locale_t locale)
{
char *mbs1, *mbs2;
int diff, sverrno;
int len1, len2, pri1, pri2, ret;
wchar_t *tr1 = NULL, *tr2 = NULL;
int direc, pass;
FIX_LOCALE(locale);
struct xlocale_collate *table =
(struct xlocale_collate*)locale->components[XLC_COLLATE];
if (table->__collate_load_error || MB_CUR_MAX > 1)
if (table->__collate_load_error)
/*
* Locale has no special collating order, could not be
* loaded, or has an extended character set; do a fast binary
* comparison.
* Locale has no special collating order or could not be
* loaded, do a fast binary comparison.
*/
return (wcscmp(ws1, ws2));
if ((mbs1 = __mbsdup(ws1)) == NULL || (mbs2 = __mbsdup(ws2)) == NULL) {
/*
* Out of memory or illegal wide chars; fall back to wcscmp()
* but leave errno indicating the error. Callers that don't
* check for error will get a reasonable but often slightly
* incorrect result.
*/
sverrno = errno;
free(mbs1);
errno = sverrno;
return (wcscmp(ws1, ws2));
ret = 0;
/*
* Once upon a time we had code to try to optimize this, but
* it turns out that you really can't make many assumptions
* safely. You absolutely have to run this pass by pass,
* because some passes will be ignored for a given character,
* while others will not. Simpler locales will benefit from
* having fewer passes, and most comparisions should resolve
* during the primary pass anyway.
*
* Note that we do one final extra pass at the end to pick
* up UNDEFINED elements. There is special handling for them.
*/
for (pass = 0; pass <= table->info->directive_count; pass++) {
const int32_t *st1 = NULL;
const int32_t *st2 = NULL;
const wchar_t *w1 = ws1;
const wchar_t *w2 = ws2;
int check1, check2;
/* special pass for UNDEFINED */
if (pass == table->info->directive_count) {
direc = DIRECTIVE_FORWARD | DIRECTIVE_UNDEFINED;
} else {
direc = table->info->directive[pass];
}
if (direc & DIRECTIVE_BACKWARD) {
wchar_t *bp, *fp, c;
if ((tr1 = wcsdup(w1)) == NULL)
goto fail;
bp = tr1;
fp = tr1 + wcslen(tr1) - 1;
while (bp < fp) {
c = *bp;
*bp++ = *fp;
*fp-- = c;
}
if ((tr2 = wcsdup(w2)) == NULL)
goto fail;
bp = tr2;
fp = tr2 + wcslen(tr2) - 1;
while (bp < fp) {
c = *bp;
*bp++ = *fp;
*fp-- = c;
}
w1 = tr1;
w2 = tr2;
}
if (direc & DIRECTIVE_POSITION) {
while (*w1 && *w2) {
pri1 = pri2 = 0;
check1 = check2 = 1;
while ((pri1 == pri2) && (check1 || check2)) {
if (check1) {
_collate_lookup(table, w1, &len1,
&pri1, pass, &st1);
if (pri1 < 0) {
errno = EINVAL;
goto fail;
}
if (!pri1) {
pri1 = COLLATE_MAX_PRIORITY;
st1 = NULL;
}
check1 = (st1 != NULL);
}
if (check2) {
_collate_lookup(table, w2, &len2,
&pri2, pass, &st2);
if (pri2 < 0) {
errno = EINVAL;
goto fail;
}
if (!pri2) {
pri2 = COLLATE_MAX_PRIORITY;
st2 = NULL;
}
check2 = (st2 != NULL);
}
}
if (pri1 != pri2) {
ret = pri1 - pri2;
goto end;
}
w1 += len1;
w2 += len2;
}
} else {
while (*w1 && *w2) {
pri1 = pri2 = 0;
check1 = check2 = 1;
while ((pri1 == pri2) && (check1 || check2)) {
while (check1 && *w1) {
_collate_lookup(table, w1,
&len1, &pri1, pass, &st1);
if (pri1 > 0)
break;
if (pri1 < 0) {
errno = EINVAL;
goto fail;
}
st1 = NULL;
w1 += 1;
}
check1 = (st1 != NULL);
while (check2 && *w2) {
_collate_lookup(table, w2,
&len2, &pri2, pass, &st2);
if (pri2 > 0)
break;
if (pri2 < 0) {
errno = EINVAL;
goto fail;
}
st2 = NULL;
w2 += 1;
}
check2 = (st2 != NULL);
if (!pri1 || !pri2)
break;
}
if (!pri1 || !pri2)
break;
if (pri1 != pri2) {
ret = pri1 - pri2;
goto end;
}
w1 += len1;
w2 += len2;
}
}
if (!*w1) {
if (*w2) {
ret = -(int)*w2;
goto end;
}
} else {
ret = *w1;
goto end;
}
}
ret = 0;
diff = strcoll_l(mbs1, mbs2, locale);
sverrno = errno;
free(mbs1);
free(mbs2);
errno = sverrno;
end:
free(tr1);
free(tr2);
return (diff);
return (ret);
fail:
ret = wcscmp(ws1, ws2);
goto end;
}
int
@ -89,24 +221,3 @@ wcscoll(const wchar_t *ws1, const wchar_t *ws2)
{
return wcscoll_l(ws1, ws2, __get_locale());
}
static char *
__mbsdup(const wchar_t *ws)
{
static const mbstate_t initial;
mbstate_t st;
const wchar_t *wcp;
size_t len;
char *mbs;
wcp = ws;
st = initial;
if ((len = wcsrtombs(NULL, &wcp, 0, &st)) == (size_t)-1)
return (NULL);
if ((mbs = malloc(len + 1)) == NULL)
return (NULL);
st = initial;
wcsrtombs(mbs, &ws, len + 1, &st);
return (mbs);
}

View File

@ -1,4 +1,5 @@
/*-
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua>
* at Electronni Visti IA, Kiev, Ukraine.
* All rights reserved.
@ -31,9 +32,6 @@
*/
#include <sys/cdefs.h>
#if 0
__FBSDID("FreeBSD: src/lib/libc/string/strxfrm.c,v 1.15 2002/09/06 11:24:06 tjr Exp ");
#endif
__FBSDID("$FreeBSD$");
#include <stdlib.h>
@ -41,18 +39,10 @@ __FBSDID("$FreeBSD$");
#include <wchar.h>
#include "collate.h"
static char *__mbsdup(const wchar_t *);
/*
* Placeholder wcsxfrm() implementation. See wcscoll.c for a description of
* the logic used.
*/
size_t
wcsxfrm_l(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len, locale_t locale)
{
int prim, sec, l;
size_t slen;
char *mbsrc, *s, *ss;
FIX_LOCALE(locale);
struct xlocale_collate *table =
(struct xlocale_collate*)locale->components[XLC_COLLATE];
@ -63,67 +53,33 @@ wcsxfrm_l(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len,
return (0);
}
if (table->__collate_load_error || MB_CUR_MAX > 1) {
slen = wcslen(src);
if (len > 0) {
if (slen < len)
wcscpy(dest, src);
else {
wcsncpy(dest, src, len - 1);
dest[len - 1] = L'\0';
}
}
return (slen);
if ((table->__collate_load_error) ||
((slen = _collate_wxfrm(table, src, dest, len)) == (size_t)-1)) {
goto error;
}
mbsrc = __mbsdup(src);
slen = 0;
prim = sec = 0;
ss = s = __collate_substitute(table, mbsrc);
while (*s != '\0') {
while (*s != '\0' && prim == 0) {
__collate_lookup(table, s, &l, &prim, &sec);
s += l;
}
if (prim != 0) {
if (len > 1) {
*dest++ = (wchar_t)prim;
len--;
}
slen++;
prim = 0;
}
/* Add null termination at the correct location. */
if (len > slen) {
dest[slen] = 0;
} else if (len) {
dest[len-1] = 0;
}
free(ss);
free(mbsrc);
if (len != 0)
*dest = L'\0';
return (slen);
error:
slen = wcslen(src);
if (slen < len)
(void) wcscpy(dest, src);
else {
(void) wcsncpy(dest, src, len - 1);
dest[len - 1] = L'\0';
}
return (slen);
}
size_t
wcsxfrm(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len)
{
return wcsxfrm_l(dest, src, len, __get_locale());
}
static char *
__mbsdup(const wchar_t *ws)
{
static const mbstate_t initial;
mbstate_t st;
const wchar_t *wcp;
size_t len;
char *mbs;
wcp = ws;
st = initial;
if ((len = wcsrtombs(NULL, &wcp, 0, &st)) == (size_t)-1)
return (NULL);
if ((mbs = malloc(len + 1)) == NULL)
return (NULL);
st = initial;
wcsrtombs(mbs, &ws, len + 1, &st);
return (mbs);
}

View File

@ -6,17 +6,18 @@
# Do not include `info' in the SUBDIR list, it is handled separately.
SUBDIR= ${_colldef} \
${_ctypedef} \
${_dict} \
${_doc} \
${_dtrace} \
${_examples} \
${_i18n} \
keys \
${_locale-links} \
${_man} \
${_me} \
misc \
${_mk} \
${_mklocale} \
${_monetdef} \
${_msgdef} \
${_numericdef} \
@ -58,12 +59,13 @@ _i18n= i18n
.endif
.if ${MK_LOCALES} != "no"
_colldef = colldef
_mklocale = mklocale
_monetdef = monetdef
_msgdef = msgdef
_numericdef = numericdef
_timedef = timedef
_colldef= colldef
_ctypedef= ctypedef
_locale-links= locale-links
_monetdef= monetdef
_msgdef= msgdef
_numericdef= numericdef
_timedef= timedef
.endif
.if ${MK_MAKE} != "no"

View File

@ -1,117 +1,185 @@
# $FreeBSD$
LOCALES= bg_BG.CP1251 \
be_BY.CP1131 \
be_BY.CP1251 \
be_BY.ISO8859-5 \
ca_ES.ISO8859-1 \
ca_ES.ISO8859-15 \
cs_CZ.ISO8859-2 \
de_DE.ISO8859-1 \
de_DE.ISO8859-15 \
el_GR.ISO8859-7 \
es_ES.ISO8859-1 \
es_ES.ISO8859-15 \
et_EE.ISO8859-15 \
hi_IN.ISCII-DEV \
hr_HR.ISO8859-2 \
hy_AM.ARMSCII-8 \
is_IS.ISO8859-1 \
is_IS.ISO8859-15 \
kk_KZ.PT154 \
la_LN.ISO8859-1 \
la_LN.ISO8859-13 \
la_LN.ISO8859-15 \
la_LN.ISO8859-2 \
la_LN.ISO8859-4 \
la_LN.US-ASCII \
no_NO.ISO8859-1 \
no_NO.ISO8859-15 \
lt_LT.ISO8859-4 \
pl_PL.ISO8859-2 \
ru_RU.CP1251 \
ru_RU.CP866 \
ru_RU.ISO8859-5 \
ru_RU.KOI8-R \
sl_SI.ISO8859-2 \
sr_YU.ISO8859-5 \
sv_SE.ISO8859-1 \
sv_SE.ISO8859-15 \
tr_TR.ISO8859-9 \
uk_UA.CP1251 \
uk_UA.ISO8859-5 \
uk_UA.KOI8-U
# Warning: Do not edit. This file is automatically generated from the
# tools in /usr/src/tools/tools/locale.
LOCALEDIR= ${SHAREDIR}/locale
.SUFFIXES: .src .out
.src.out:
colldef -I ${.CURDIR} -o ${.TARGET} ${.IMPSRC}
FILES= ${LOCALES:S/$/.out/}
FILESNAME= LC_COLLATE
.SUFFIXES: .src .LC_COLLATE
MAPLOC= ${.CURDIR}/../../tools/tools/locale/etc/final-maps
.for locale in ${LOCALES}
FILESDIR_${locale}.out= ${LOCALEDIR}/${locale}
.if exists(${.CURDIR}/map.${locale:E})
${locale}.out: map.${locale:E}
.endif
.endfor
.src.LC_COLLATE:
localedef -D -U -i ${.IMPSRC} \
-f ${MAPLOC}/map.UTF-8 ${.OBJDIR}/${.IMPSRC:T:R}
LOCALES+= af_ZA.UTF-8
LOCALES+= am_ET.UTF-8
LOCALES+= ar_SA.UTF-8
LOCALES+= be_BY.UTF-8
LOCALES+= ca_AD.UTF-8
LOCALES+= cs_CZ.UTF-8
LOCALES+= da_DK.UTF-8
LOCALES+= el_GR.UTF-8
LOCALES+= en_US.UTF-8
LOCALES+= es_MX.UTF-8
LOCALES+= et_EE.UTF-8
LOCALES+= fi_FI.UTF-8
LOCALES+= he_IL.UTF-8
LOCALES+= hi_IN.UTF-8
LOCALES+= hr_HR.UTF-8
LOCALES+= hu_HU.UTF-8
LOCALES+= hy_AM.UTF-8
LOCALES+= is_IS.UTF-8
LOCALES+= ja_JP.UTF-8
LOCALES+= kk_Cyrl_KZ.UTF-8
LOCALES+= ko_KR.UTF-8
LOCALES+= lt_LT.UTF-8
LOCALES+= lv_LV.UTF-8
LOCALES+= nb_NO.UTF-8
LOCALES+= pl_PL.UTF-8
LOCALES+= ro_RO.UTF-8
LOCALES+= ru_RU.UTF-8
LOCALES+= se_NO.UTF-8
LOCALES+= sk_SK.UTF-8
LOCALES+= sl_SI.UTF-8
LOCALES+= sv_SE.UTF-8
LOCALES+= tr_TR.UTF-8
LOCALES+= uk_UA.UTF-8
LOCALES+= zh_Hans_CN.UTF-8
LOCALES+= zh_Hant_TW.UTF-8
SAME+= af_ZA.UTF-8:af_ZA.ISO8859-1
SAME+= ar_SA.UTF-8:ar_QA.UTF-8
SAME+= ar_SA.UTF-8:ar_MA.UTF-8
SAME+= ar_SA.UTF-8:ar_JO.UTF-8
SAME+= ar_SA.UTF-8:ar_EG.UTF-8
SAME+= ar_SA.UTF-8:ar_AE.UTF-8
SAME+= be_BY.UTF-8:be_BY.ISO8859-5
SAME+= be_BY.UTF-8:be_BY.CP1251
SAME+= be_BY.UTF-8:be_BY.CP1131
SAME+= ru_RU.UTF-8:sr_Cyrl_RS.UTF-8
SAME+= ru_RU.UTF-8:sr_Cyrl_RS.ISO8859-5
SAME+= ru_RU.UTF-8:ru_RU.KOI8-R
SAME+= ru_RU.UTF-8:ru_RU.ISO8859-5
SAME+= ru_RU.UTF-8:ru_RU.CP866
SAME+= ru_RU.UTF-8:ru_RU.CP1251
SAME+= ru_RU.UTF-8:mn_Cyrl_MN.UTF-8
SAME+= ru_RU.UTF-8:bg_BG.UTF-8
SAME+= ru_RU.UTF-8:bg_BG.CP1251
SAME+= ca_AD.UTF-8:ca_IT.UTF-8
SAME+= ca_AD.UTF-8:ca_IT.ISO8859-15
SAME+= ca_AD.UTF-8:ca_FR.UTF-8
SAME+= ca_AD.UTF-8:ca_FR.ISO8859-15
SAME+= ca_AD.UTF-8:ca_ES.UTF-8
SAME+= ca_AD.UTF-8:ca_ES.ISO8859-15
SAME+= ca_AD.UTF-8:ca_AD.ISO8859-15
SAME+= cs_CZ.UTF-8:cs_CZ.ISO8859-2
SAME+= da_DK.UTF-8:da_DK.ISO8859-15
SAME+= en_US.UTF-8:sr_Latn_RS.UTF-8
SAME+= en_US.UTF-8:sr_Latn_RS.ISO8859-2
SAME+= en_US.UTF-8:pt_PT.UTF-8
SAME+= en_US.UTF-8:pt_PT.ISO8859-15
SAME+= en_US.UTF-8:pt_BR.UTF-8
SAME+= en_US.UTF-8:pt_BR.ISO8859-1
SAME+= en_US.UTF-8:nn_NO.UTF-8
SAME+= en_US.UTF-8:nn_NO.ISO8859-15
SAME+= en_US.UTF-8:nl_NL.UTF-8
SAME+= en_US.UTF-8:nl_NL.ISO8859-15
SAME+= en_US.UTF-8:nl_BE.UTF-8
SAME+= en_US.UTF-8:nl_BE.ISO8859-15
SAME+= en_US.UTF-8:it_IT.UTF-8
SAME+= en_US.UTF-8:it_IT.ISO8859-15
SAME+= en_US.UTF-8:it_CH.UTF-8
SAME+= en_US.UTF-8:it_CH.ISO8859-15
SAME+= en_US.UTF-8:fr_FR.UTF-8
SAME+= en_US.UTF-8:fr_FR.ISO8859-15
SAME+= en_US.UTF-8:fr_CH.UTF-8
SAME+= en_US.UTF-8:fr_CH.ISO8859-15
SAME+= en_US.UTF-8:fr_CA.UTF-8
SAME+= en_US.UTF-8:fr_CA.ISO8859-1
SAME+= en_US.UTF-8:fr_BE.UTF-8
SAME+= en_US.UTF-8:fr_BE.ISO8859-15
SAME+= en_US.UTF-8:eu_ES.UTF-8
SAME+= en_US.UTF-8:eu_ES.ISO8859-15
SAME+= en_US.UTF-8:en_ZA.UTF-8
SAME+= en_US.UTF-8:en_ZA.US-ASCII
SAME+= en_US.UTF-8:en_ZA.ISO8859-1
SAME+= en_US.UTF-8:en_US.US-ASCII
SAME+= en_US.UTF-8:en_US.ISO8859-1
SAME+= en_US.UTF-8:en_SG.UTF-8
SAME+= en_US.UTF-8:en_SG.ISO8859-1
SAME+= en_US.UTF-8:en_PH.UTF-8
SAME+= en_US.UTF-8:en_NZ.UTF-8
SAME+= en_US.UTF-8:en_NZ.US-ASCII
SAME+= en_US.UTF-8:en_NZ.ISO8859-1
SAME+= en_US.UTF-8:en_IE.UTF-8
SAME+= en_US.UTF-8:en_IE.ISO8859-15
SAME+= en_US.UTF-8:en_HK.UTF-8
SAME+= en_US.UTF-8:en_HK.ISO8859-1
SAME+= en_US.UTF-8:en_GB.UTF-8
SAME+= en_US.UTF-8:en_GB.US-ASCII
SAME+= en_US.UTF-8:en_GB.ISO8859-15
SAME+= en_US.UTF-8:en_CA.UTF-8
SAME+= en_US.UTF-8:en_CA.US-ASCII
SAME+= en_US.UTF-8:en_CA.ISO8859-1
SAME+= en_US.UTF-8:en_AU.UTF-8
SAME+= en_US.UTF-8:en_AU.US-ASCII
SAME+= en_US.UTF-8:en_AU.ISO8859-1
SAME+= en_US.UTF-8:de_DE.UTF-8
SAME+= en_US.UTF-8:de_DE.ISO8859-15
SAME+= en_US.UTF-8:de_CH.UTF-8
SAME+= en_US.UTF-8:de_CH.ISO8859-15
SAME+= en_US.UTF-8:de_AT.UTF-8
SAME+= en_US.UTF-8:de_AT.ISO8859-15
SAME+= el_GR.UTF-8:el_GR.ISO8859-7
SAME+= es_MX.UTF-8:es_MX.ISO8859-1
SAME+= es_MX.UTF-8:es_ES.UTF-8
SAME+= es_MX.UTF-8:es_ES.ISO8859-15
SAME+= es_MX.UTF-8:es_CR.UTF-8
SAME+= es_MX.UTF-8:es_AR.UTF-8
SAME+= es_MX.UTF-8:es_AR.ISO8859-1
SAME+= et_EE.UTF-8:et_EE.ISO8859-15
SAME+= fi_FI.UTF-8:fi_FI.ISO8859-15
SAME+= hi_IN.UTF-8:hi_IN.ISCII-DEV
SAME+= hr_HR.UTF-8:hr_HR.ISO8859-2
SAME+= hu_HU.UTF-8:hu_HU.ISO8859-2
SAME+= hy_AM.UTF-8:hy_AM.ARMSCII-8
SAME+= is_IS.UTF-8:is_IS.ISO8859-15
SAME+= ja_JP.UTF-8:ja_JP.SJIS
SAME+= ja_JP.UTF-8:ja_JP.eucJP
SAME+= ko_KR.UTF-8:ko_KR.eucKR
SAME+= lt_LT.UTF-8:lt_LT.ISO8859-13
SAME+= lv_LV.UTF-8:lv_LV.ISO8859-13
SAME+= nb_NO.UTF-8:nb_NO.ISO8859-15
SAME+= pl_PL.UTF-8:pl_PL.ISO8859-2
SAME+= ro_RO.UTF-8:ro_RO.ISO8859-2
SAME+= se_NO.UTF-8:se_FI.UTF-8
SAME+= sk_SK.UTF-8:sk_SK.ISO8859-2
SAME+= sl_SI.UTF-8:sl_SI.ISO8859-2
SAME+= sv_SE.UTF-8:sv_SE.ISO8859-15
SAME+= sv_SE.UTF-8:sv_FI.UTF-8
SAME+= sv_SE.UTF-8:sv_FI.ISO8859-15
SAME+= tr_TR.UTF-8:tr_TR.ISO8859-9
SAME+= uk_UA.UTF-8:uk_UA.KOI8-U
SAME+= uk_UA.UTF-8:uk_UA.ISO8859-5
SAME+= uk_UA.UTF-8:uk_UA.CP1251
SAME+= zh_Hans_CN.UTF-8:zh_Hans_CN.GBK
SAME+= zh_Hans_CN.UTF-8:zh_Hans_CN.GB2312
SAME+= zh_Hans_CN.UTF-8:zh_Hans_CN.GB18030
SAME+= zh_Hans_CN.UTF-8:zh_Hans_CN.eucCN
SAME+= zh_Hant_TW.UTF-8:zh_Hant_TW.Big5
SAME+= zh_Hant_TW.UTF-8:zh_Hant_HK.UTF-8
SAME+= zh_Hant_TW.UTF-8:zh_Hant_HK.Big5HKSCS
SAME+= ko_KR.eucKR:ko_KR.CP949 # legacy (same charset)
FILES= ${LOCALES:S/$/.LC_COLLATE/}
CLEANFILES= ${FILES}
ENCODINGS= Big5 Big5HKSCS CP949 eucCN eucJP eucKR GB18030 GB2312 GBK \
ISO8859-1 ISO8859-2 ISO8859-13 ISO8859-15 SJIS US-ASCII UTF-8
ISO8859-1_Big5= is_IS:zh_TW
ISO8859-1_ISO8859-1= ${ISO8859-15_ISO8859-15} pt_PT:pt_BR
LATIN1LINKS= af_ZA da_DK en_AU en_CA en_GB en_NZ en_US eu_ES fi_FI \
fr_BE fr_CA fr_CH fr_FR it_CH it_IT nl_BE nl_NL pt_PT
ISO8859-15_ISO8859-15= \
ca_ES:ca_AD ca_ES:ca_FR ca_ES:ca_IT \
de_DE:de_AT de_DE:de_CH \
no_NO:nb_NO no_NO:nn_NO \
${LATIN1LINKS:C/^/la_LN:/}
LATIN2LINKS= hu_HU ro_RO sr_YU
ISO8859-2_ISO8859-2= ${LATIN2LINKS:C/^/la_LN:/} cs_CZ:sk_SK
LATIN13LINKS= lt_LT lv_LV
ISO8859-13_ISO8859-13= ${LATIN13LINKS:C/^/la_LN:/}
US-ASCII_Big5HKSCS= la_LN:zh_HK
US-ASCII_CP949= la_LN:ko_KR
US-ASCII_eucCN= la_LN:zh_CN
US-ASCII_eucJP= la_LN:ja_JP
US-ASCII_eucKR= la_LN:ko_KR
US-ASCII_GB18030= la_LN:zh_CN
US-ASCII_GB2312= la_LN:zh_CN
US-ASCII_GBK= la_LN:zh_CN
US-ASCII_SJIS= la_LN:ja_JP
ASCIILINKS= en_AU en_CA en_GB en_NZ en_US
US-ASCII_US-ASCII= ${ASCIILINKS:C/^/la_LN:/}
UTF8LINKS= af_ZA am_ET be_BY bg_BG ca_AD ca_ES ca_FR ca_IT cs_CZ \
da_DK de_AT de_CH de_DE \
el_GR en_AU en_CA en_GB en_IE en_NZ en_US es_ES et_EE eu_ES \
fi_FI fr_BE fr_CA fr_CH fr_FR he_IL hr_HR hu_HU hy_AM \
is_IS it_CH it_IT ja_JP kk_KZ ko_KR lt_LT lv_LV mn_MN \
nb_NO nl_BE nl_NL nn_NO no_NO pl_PL pt_BR pt_PT \
ro_RO ru_RU sk_SK sl_SI sr_YU sv_SE tr_TR uk_UA zh_CN zh_HK \
zh_TW
US-ASCII_UTF-8= ${UTF8LINKS:C/^/la_LN:/}
SYMLINKS=
.for enc1 in ${ENCODINGS}
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.for f in ${SAME}
SYMLINKS+= ../${f:C/:.*$//}/${FILESNAME} ${LOCALEDIR}/${f:C/^.*://}
.endfor
.for f in ${LOCALES}
FILESDIR_${f}.LC_COLLATE= ${LOCALEDIR}/${f}
.endfor
.include <bsd.prog.mk>

View File

@ -1,6 +0,0 @@
$FreeBSD$
WARNING: For the compatibility sake try to keep collating table backward
compatible with ASCII, i.e. add other symbols to the existent ASCII order.
For mnemonic names see ftp://std.dkuug.dk/i18n/charmaps/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +0,0 @@
# $FreeBSD$
charmap map.CP1131
order \
# controls
<NU>;...;<US>;\
#
<SP>;!;\";<Nb>;<DO>;\
%;&;';\(;\);*;+;\,;-;.;/;\
# digits
0;1;2;3;...;9;\
#
:;\;;\<;=;>;?;<At>;\
# uppercase
A;...;Z;\
<A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
<II>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
<S=>;<T=>;(<U=>,<V%>);<F=>;<H=>;<C=>;<C%>;<S%>;\
<Y=>;<%">;<JE>;<JU>;<JA>;\
#
[;\\;];^;_;`;\
# lowercase
a;...;z;\
<a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
<ii>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
<s=>;<t=>;(<u=>,<v%>);<f=>;<h=>;<c=>;<c%>;<s%>;\
<y=>;<%'>;<je>;<ju>;<ja>;\
#
\{;|;\};~;<DT>;\
#
<IE>;<YI>;<G3>;\
\
<ie>;<yi>;<g3>;<I=>;<i=>;<Sc>;<sc>;<=">;<='>;\
\
<.M>;<Cu>;<NS>;<Sb>;\
\
<.S>;<:S>;<?S>;<vv>;<vl>;<vL>;<Vl>;<Dl>;\
<dL>;<VL>;<VV>;<LD>;<UL>;<Ul>;<uL>;<dl>;\
<ur>;<uh>;<dh>;<vr>;<hh>;<vh>;<vR>;<Vr>;\
<UR>;<DR>;<UH>;<DH>;<VR>;<HH>;<VH>;<uH>;\
<Uh>;<dH>;<Dh>;<Ur>;<uR>;<dR>;<Dr>;<Vh>;\
<vH>;<ul>;<dr>;<FB>;<LB>;<lB>;<RB>;<TB>

View File

@ -1,37 +0,0 @@
# $FreeBSD$
charmap map.CP1251
order \
# controls
<NU>;...;<US>;\
#
<SP>;!;\";<Nb>;<DO>;\
%;&;';\(;\);*;+;\,;-;.;/;\
# digits
0;1;2;3;...;9;\
#
:;\;;\<;=;>;?;<At>;\
# uppercase
A;...;Z;\
<A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
<II>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
<S=>;<T=>;(<U=>,<V%>);<F=>;<H=>;<C=>;<C%>;<S%>;\
<Y=>;<%">;<JE>;<JU>;<JA>;\
#
[;\\;];^;_;`;\
# lowercase
a;...;z;\
<a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
<ii>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
<s=>;<t=>;(<u=>,<v%>);<f=>;<h=>;<c=>;<c%>;<s%>;\
<y=>;<%'>;<je>;<ju>;<ja>;\
#
\{;|;\};~;<DT>;\
#
<D%>;<G%>;<.9>;<g%>;<:9>;<.3>;</->;</=>;\
<Eu>;<%0>;<LJ>;<<1>;<NJ>;<KJ>;<Ts>;<DZ>;\
<d%>;<'6>;<'9>;<"6>;<"9>;<sb>;<-N>;<-M>;\
<FB>;<TM>;<lj>;</>1>;<nj>;<kj>;<ts>;<dz>;\
<NS>;<J%>;<Cu>;<G3>;<BB>;<SE>;\
<Co>;<IE>;<<<>;<NO>;<-->;<Rg>;<YI>;\
<DG>;<+->;<g3>;<My>;<PI>;<.M>;\
<N0>;<ie>;</>/>>;<j%>;<DS>;<ds>;<yi>;<I=>;<i=>;<Sc>;<sc>;<=">;<='>

View File

@ -1,39 +0,0 @@
# $FreeBSD$
charmap map.ISO8859-5
order \
# controls
<NU>;...;<US>;\
#
<SP>;!;\";<Nb>;<DO>;\
%;&;';\(;\);*;+;\,;-;.;/;\
# digits
0;1;2;3;...;9;\
#
:;\;;\<;=;>;?;<At>;\
# uppercase
A;...;Z;\
<A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
<II>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
<S=>;<T=>;(<U=>,<V%>);<F=>;<H=>;<C=>;<C%>;<S%>;\
<Y=>;<%">;<JE>;<JU>;<JA>;\
#
[;\\;];^;_;`;\
# lowercase
a;...;z;\
<a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
<ii>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
<s=>;<t=>;(<u=>,<v%>);<f=>;<h=>;<c=>;<c%>;<s%>;\
<y=>;<%'>;<je>;<ju>;<ja>;\
#
\{;|;\};~;<DT>;\
#
<D%>;<G%>;<g%>;\
<LJ>;<NJ>;<KJ>;<Ts>;<DZ>;\
<d%>;\
<lj>;<nj>;<kj>;<ts>;<dz>;\
<NS>;<J%>;<SE>;\
<IE>;<-->;<YI>;\
\
<N0>;<ie>;<j%>;<DS>;<ds>;<yi>;<I=>;<i=>;<Sc>;<sc>;<=">;<='>;\
<PA>;<HO>;<BH>;<NH>;<IN>;<NL>;<SA>;<ES>;<HS>;<HJ>;<VS>;<PD>;<PU>;<RI>;<S2>;<S3>;\
<DC>;<P1>;<P2>;<TS>;<CC>;<MW>;<SG>;<EG>;<SS>;<GC>;<SC>;<CI>;<ST>;<OC>;<PM>;<AC>

File diff suppressed because it is too large Load Diff

View File

@ -1,43 +0,0 @@
# CP1251 (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.CP1251
order \
# controls
<NU>;...;<US>;\
#
<NS>;<SP>;!;\";<"6>;<"9>;<<<>;</>/>>;\
<Nb>;<Eu>;<Cu>;<DO>;\
%;&;';<'6>;<'9>;\(;\);*;+;<+->;\,;<-->;-;.;/;\
# digits
0;...;9;\
#
:;\;;\<;=;>;?;<SE>;<PI>;<Co>;<Rg>;<At>;\
# uppercase
A;...;Z;\
<A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<Z%>;<Z=>;\
<I=>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
<S=>;<T=>;<U=>;<F=>;<H=>;<C=>;<C%>;<S%>;<Sc>;\
<=">;<Y=>;<%">;<JE>;<JU>;<JA>;\
#
[;\\;];^;_;`;\
# lowercase
a;...;z;\
<a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<z%>;<z=>;\
<i=>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
<s=>;<t=>;<u=>;<f=>;<h=>;<c=>;<c%>;<s%>;<sc>;\
<='>;<y=>;<%'>;<je>;<ju>;<ja>;\
#
\{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;\
<-N>;<-M>;<.9>;<:9>;</->;</=>;<.3>;<%0>;<<1>;</>1>;\
<N0>;<TM>;<sb>;<FB>;<DT>;\
#
<D%>;<G%>;<g%>;\
<LJ>;<NJ>;<KJ>;<Ts>;<DZ>;\
<d%>;\
<lj>;<nj>;<kj>;<ts>;<dz>;\
<V%>;<v%>;<J%>;<G3>;\
<IO>;<IE>;<YI>;\
<II>;<ii>;<g3>;\
<io>;<ie>;<j%>;<DS>;<ds>;<yi>

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@
# Espan~ol (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-1
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
(0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
B;(C,<C,>);{CH,Ch};D;(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;K;L;{LL,Ll};M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
P;Q;R;{RR,Rr};S;T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>);Z;\
<D->;<TH>;\
#
[;\\;];^;<':>;_;<'m>;<''>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
b;(c,<c,>);ch;d;(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;k;l;ll;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
p;q;r;rr;s;t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);z;\
<d->;<th>;<ss>;\
#
\{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

View File

@ -1,38 +0,0 @@
# Espan~ol (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-15
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
B;(C,<C,>);{CH,Ch};D;(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;K;L;{LL,Ll};M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\
P;Q;R;{RR,Rr};(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
<D->;<TH>;\
#
[;\\;];^;_;<'m>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
b;(c,<c,>);ch;d;(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;k;l;ll;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\
p;q;r;rr;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);(z,<z<>);\
<d->;<th>;<ss>;\
#
\{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

View File

@ -1,52 +0,0 @@
# Latin2 (for Czech; partially according to CSN 97 6030)
# by Rudolf Cejka <cejkar@dcse.fee.vutbr.cz>
#
# $FreeBSD$
#
charmap map.ISO8859-2
substitute <ss> with "ss"
order \
# spaces
<SP>;<NS>;\
# capital and small
(A,a,<A'>,<a'>,<A/>>,<a/>>,<A(>,<a(>,<A:>,<a:>,<A;>,<a;>);\
(B,b);\
(C,c,<C'>,<c'>,<C,>,<c,>);\
(<C<>,<c<>);\
(D,d,<D<>,<d<>,<D//>,<d//>);\
(E,e,<E'>,<e'>,<E<>,<e<>,<E:>,<e:>,<E;>,<e;>);\
(F,f);\
(G,g);\
(H,h);\
(CH,Ch,ch);\
(I,i,<I'>,<i'>,<I/>>,<i/>>);\
(J,j);\
(K,k);\
(L,l,<L'>,<l'>,<L<>,<l<>,<L//>,<l//>);\
(M,m);\
(N,n,<N'>,<n'>,<N<>,<n<>);\
(O,o,<O'>,<o'>,<O/>>,<o/>>,<O:>,<o:>,<O">,<o">);\
(P,p);\
(Q,q);\
(R,r,<R'>,<r'>);\
(<R<>,<r<>);\
(S,s,<S'>,<s'>,<S,>,<s,>);\
(<S<>,<s<>);\
(T,t,<T<>,<t<>,<T,>,<t,>);\
(U,u,<U'>,<u'>,<U0>,<u0>,<U:>,<u:>,<U">,<u">);\
(V,v);\
(W,w);\
(X,x);\
(Y,y,<Y'>,<y'>);\
(Z,z,<Z.>,<z.>,<Z'>,<z'>);\
(<Z<>,<z<>);\
# digits
0;...;9;\
# symbols
.;\,;\;;?;!;:;';`;\";\
<-->;-;|;/;\\;\(;\);[;];\<;>;\{;\};\
&;<SE>;%;<DO>;<At>;\
_;=;^;<-:>;+;<*X>;*;<Nb>;~;<DG>;<Cu>;\
<'.>;<''>;<'<>;<'(>;<':>;<'">;<',>;<';>;\
# controls
<NU>;...;<US>;<DT>;<PA>;...;<AC>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,39 +0,0 @@
# German/ISO 8859-1 (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-1
substitute <ss> with "ss"
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
(0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
P;...;T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>);Z;\
<D->;<TH>;\
#
[;\\;];^;<':>;_;<'m>;<''>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
p;...;t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);z;\
<d->;<th>;\
#
\{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

View File

@ -1,39 +0,0 @@
# German/ISO 8859-1 (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-15
substitute <ss> with "ss"
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\
P;...;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
<D->;<TH>;\
#
[;\\;];^;_;<'m>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\
p;...;r;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);(z,<z<>);\
<d->;<th>;\
#
\{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

View File

@ -1,34 +0,0 @@
# $FreeBSD$
#
# Greek/ISO 8859-7 (backward compatible with ASCII)
#
charmap map.ISO8859-7
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;\";<<<>;</>/>>;<Nb>;<DO>;<Pd>;%;&;\
';\(;\);*;+;<+->;\,;<-->;-;.;/;\
# digits
(0,<12>);1;(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<SE>;<Co>;<At>;\
# capital
A;...;Z;\
(<A%>,<A*>);<B*>;<G*>;<D*>;(<E%>,<E*>);<Z*>;(<Y%>,\
<Y*>);<H*>;(<J*>,<I%>,<I*>);<K*>;<L*>;<M*>;<N*>;\
<C*>;(<O%>,<O*>);<P*>;<R*>;<S*>;<T*>;(<V*>,<U%>,\
<U*>);<F*>;<X*>;<Q*>;(<W%>,<W*>);\
# small
a;...;z;\
(<a%>,<a*>);<b*>;<g*>;<d*>;(<e%>,<e*>);<z*>;(<y%>,\
<y*>);<h*>;(<i3>,<j*>,<i%>,<i*>);<k*>;<l*>;<m*>;\
<n*>;<c*>;(<o%>,<o*>);<p*>;<r*>;<s*>;<*s>;<t*>;\
(<u3>,<v*>,<u%>,<u*>);<f*>;<x*>;<q*>;(<w%>,<w*>);\
#
[;\\;];<':>;_;<''>;`;\
#
\{;<NO>;|;<BB>;\};~;<.M>;<DG>;<DT>;\
# remains
<'/>>;<9'>;<'9>;<IE>;<DS>;<NJ>;<V%>;<-M>;<'%>;\
<v=>;<dz>

View File

@ -0,0 +1,833 @@
# Warning: Do not edit. This file is automatically extracted from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
comment_char *
escape_char /
LC_COLLATE
*************
* Define collation weights as symbols
collating-symbol <X01>
collating-symbol <X05>
collating-symbol <X10>
collating-symbol <X28>
collating-symbol <X2C>
collating-symbol <X30>
collating-symbol <X31>
collating-symbol <X33>
collating-symbol <X84>
collating-symbol <X86>
collating-symbol <X88>
collating-symbol <X8A>
collating-symbol <X8C>
collating-symbol <X94>
collating-symbol <X96>
collating-symbol <X98>
collating-symbol <X9B>
collating-symbol <X9C>
collating-symbol <X9E>
collating-symbol <XA0>
collating-symbol <XA4>
collating-symbol <XA5>
collating-symbol <XA6>
collating-symbol <XA8>
collating-symbol <XC0>
collating-symbol <XD8>
collating-symbol <X0304>
collating-symbol <X0306>
collating-symbol <X0308>
collating-symbol <X030A>
collating-symbol <X030C>
collating-symbol <X0400>
collating-symbol <X050A>
collating-symbol <X050E>
collating-symbol <X0600>
collating-symbol <X0722>
collating-symbol <X072C>
collating-symbol <X0750>
collating-symbol <X0758>
collating-symbol <X0800>
collating-symbol <X0900>
collating-symbol <X0968>
collating-symbol <X0976>
collating-symbol <X098C>
collating-symbol <X098E>
collating-symbol <X0990>
collating-symbol <X0992>
collating-symbol <X0994>
collating-symbol <X0996>
collating-symbol <X0A7A>
collating-symbol <X0A7C>
collating-symbol <X0A86>
collating-symbol <X0A88>
collating-symbol <X0A8A>
collating-symbol <X0A8E>
collating-symbol <X0A90>
collating-symbol <X0C04>
collating-symbol <X0C06>
collating-symbol <X0C0A>
collating-symbol <X0C10>
collating-symbol <X0C16>
collating-symbol <X0C1A>
collating-symbol <X0C61>
collating-symbol <X0C63>
collating-symbol <X0C6B>
collating-symbol <X0C6D>
collating-symbol <X0C6F>
collating-symbol <X0C73>
collating-symbol <X0C77>
collating-symbol <X0D26>
collating-symbol <X1000>
collating-symbol <X1200>
collating-symbol <X1400>
collating-symbol <X1600>
collating-symbol <X1700>
collating-symbol <X1800>
collating-symbol <X1A00>
collating-symbol <X1C00>
collating-symbol <X1E00>
collating-symbol <X2000>
collating-symbol <X2200>
collating-symbol <X2400>
collating-symbol <X2900>
collating-symbol <X2B00>
collating-symbol <X2D00>
collating-symbol <X2F00>
collating-symbol <X3100>
collating-symbol <X3300>
collating-symbol <X3500>
collating-symbol <X3700>
collating-symbol <X3900>
collating-symbol <X3B00>
collating-symbol <X3D00>
collating-symbol <X3F00>
collating-symbol <X4100>
collating-symbol <X4300>
collating-symbol <X4500>
collating-symbol <X4700>
collating-symbol <X4900>
collating-symbol <X4B00>
collating-symbol <X4D00>
collating-symbol <X4F00>
collating-symbol <X5100>
collating-symbol <X5300>
collating-symbol <X5500>
collating-symbol <X5700>
collating-symbol <X5900>
collating-symbol <X5B00>
collating-symbol <X5F06>
collating-symbol <X5F08>
collating-symbol <X5F0A>
collating-symbol <X5F0C>
collating-symbol <X5F0E>
collating-symbol <X5F10>
collating-symbol <X5F12>
collating-symbol <X5F14>
collating-symbol <X5F16>
collating-symbol <X5F18>
collating-symbol <X5F1A>
collating-symbol <X5F1C>
collating-symbol <X5F1E>
collating-symbol <X5F20>
collating-symbol <X5F22>
collating-symbol <X5F24>
collating-symbol <X5F26>
collating-symbol <X5F28>
collating-symbol <X5F2A>
collating-symbol <X5F2C>
collating-symbol <X5F2E>
collating-symbol <X5F30>
collating-symbol <X5F32>
collating-symbol <X5F34>
collating-symbol <X5F36>
collating-symbol <X5F38>
collating-symbol <X5F3A>
collating-symbol <X5F3C>
collating-symbol <X5F3E>
collating-symbol <X5F40>
collating-symbol <X5F42>
collating-symbol <X5F44>
collating-symbol <X5F46>
collating-symbol <X5F48>
collating-symbol <X5F4A>
collating-symbol <X5F4C>
collating-symbol <X5F4E>
collating-symbol <X5F50>
collating-symbol <X5F52>
collating-symbol <X5F54>
collating-symbol <X5F56>
collating-symbol <X5F58>
collating-symbol <X5F5A>
collating-symbol <X5F5C>
collating-symbol <X5F5E>
collating-symbol <XC700>
order_start forward;forward;forward;forward
* collation weights in order
<X01>
<X05>
<X10>
<X28>
<X2C>
<X30>
<X31>
<X33>
<X84>
<X86>
<X88>
<X8A>
<X8C>
<X94>
<X96>
<X98>
<X9B>
<X9C>
<X9E>
<XA0>
<XA4>
<XA5>
<XA6>
<XA8>
<XC0>
<XD8>
<X0304>
<X0306>
<X0308>
<X030A>
<X030C>
<X0400>
<X050A>
<X050E>
<X0600>
<X0722>
<X072C>
<X0750>
<X0758>
<X0800>
<X0900>
<X0968>
<X0976>
<X098C>
<X098E>
<X0990>
<X0992>
<X0994>
<X0996>
<X0A7A>
<X0A7C>
<X0A86>
<X0A88>
<X0A8A>
<X0A8E>
<X0A90>
<X0C04>
<X0C06>
<X0C0A>
<X0C10>
<X0C16>
<X0C1A>
<X0C61>
<X0C63>
<X0C6B>
<X0C6D>
<X0C6F>
<X0C73>
<X0C77>
<X0D26>
<X1000>
<X1200>
<X1400>
<X1600>
<X1700>
<X1800>
<X1A00>
<X1C00>
<X1E00>
<X2000>
<X2200>
<X2400>
<X2900>
<X2B00>
<X2D00>
<X2F00>
<X3100>
<X3300>
<X3500>
<X3700>
<X3900>
<X3B00>
<X3D00>
<X3F00>
<X4100>
<X4300>
<X4500>
<X4700>
<X4900>
<X4B00>
<X4D00>
<X4F00>
<X5100>
<X5300>
<X5500>
<X5700>
<X5900>
<X5B00>
<X5F06>
<X5F08>
<X5F0A>
<X5F0C>
<X5F0E>
<X5F10>
<X5F12>
<X5F14>
<X5F16>
<X5F18>
<X5F1A>
<X5F1C>
<X5F1E>
<X5F20>
<X5F22>
<X5F24>
<X5F26>
<X5F28>
<X5F2A>
<X5F2C>
<X5F2E>
<X5F30>
<X5F32>
<X5F34>
<X5F36>
<X5F38>
<X5F3A>
<X5F3C>
<X5F3E>
<X5F40>
<X5F42>
<X5F44>
<X5F46>
<X5F48>
<X5F4A>
<X5F4C>
<X5F4E>
<X5F50>
<X5F52>
<X5F54>
<X5F56>
<X5F58>
<X5F5A>
<X5F5C>
<X5F5E>
<XC700>
* assignment of characters to weights
<NULL> IGNORE;IGNORE;IGNORE;<NULL>
<START_OF_HEADING> IGNORE;IGNORE;IGNORE;<START_OF_HEADING>
<START_OF_TEXT> IGNORE;IGNORE;IGNORE;<START_OF_TEXT>
<END_OF_TEXT> IGNORE;IGNORE;IGNORE;<END_OF_TEXT>
<END_OF_TRANSMISSION> IGNORE;IGNORE;IGNORE;<END_OF_TRANSMISSION>
<ENQUIRY> IGNORE;IGNORE;IGNORE;<ENQUIRY>
<ACKNOWLEDGE> IGNORE;IGNORE;IGNORE;<ACKNOWLEDGE>
<ALERT> IGNORE;IGNORE;IGNORE;<ALERT>
<BACKSPACE> IGNORE;IGNORE;IGNORE;<BACKSPACE>
<SHIFT_OUT> IGNORE;IGNORE;IGNORE;<SHIFT_OUT>
<SHIFT_IN> IGNORE;IGNORE;IGNORE;<SHIFT_IN>
<DATA_LINK_ESCAPE> IGNORE;IGNORE;IGNORE;<DATA_LINK_ESCAPE>
<DEVICE_CONTROL_ONE> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_ONE>
<DEVICE_CONTROL_TWO> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_TWO>
<DEVICE_CONTROL_THREE> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_THREE>
<DEVICE_CONTROL_FOUR> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_FOUR>
<NEGATIVE_ACKNOWLEDGE> IGNORE;IGNORE;IGNORE;<NEGATIVE_ACKNOWLEDGE>
<SYNCHRONOUS_IDLE> IGNORE;IGNORE;IGNORE;<SYNCHRONOUS_IDLE>
<END_OF_TRANSMISSION_BLOCK> IGNORE;IGNORE;IGNORE;<END_OF_TRANSMISSION_BLOCK>
<CANCEL> IGNORE;IGNORE;IGNORE;<CANCEL>
<END_OF_MEDIUM> IGNORE;IGNORE;IGNORE;<END_OF_MEDIUM>
<SUBSTITUTE> IGNORE;IGNORE;IGNORE;<SUBSTITUTE>
<ESCAPE> IGNORE;IGNORE;IGNORE;<ESCAPE>
<INFORMATION_SEPARATOR_FOUR> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_FOUR>
<INFORMATION_SEPARATOR_THREE> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_THREE>
<INFORMATION_SEPARATOR_TWO> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_TWO>
<INFORMATION_SEPARATOR_ONE> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_ONE>
<DELETE> IGNORE;IGNORE;IGNORE;<DELETE>
<COMBINING_GREEK_YPOGEGRAMMENI> IGNORE;<XD8>;<X05>;<COMBINING_GREEK_YPOGEGRAMMENI>
<tab> <X0304>;<X05>;<X05>;<tab>
<newline> <X0306>;<X05>;<X05>;<newline>
<vertical-tab> <X0308>;<X05>;<X05>;<vertical-tab>
<form-feed> <X030A>;<X05>;<X05>;<form-feed>
<carriage-return> <X030C>;<X05>;<X05>;<carriage-return>
<space> <X0400>;<X05>;<X05>;<space>
<LOW_LINE> <X050A>;<X05>;<X05>;<LOW_LINE>
<HYPHEN-MINUS> <X050E>;<X05>;<X05>;<HYPHEN-MINUS>
<COMMA> <X0600>;<X05>;<X05>;<COMMA>
<SEMICOLON> <X0722>;<X05>;<X05>;<SEMICOLON>
<COLON> <X072C>;<X05>;<X05>;<COLON>
<EXCLAMATION_MARK> <X0750>;<X05>;<X05>;<EXCLAMATION_MARK>
<QUESTION_MARK> <X0758>;<X05>;<X05>;<QUESTION_MARK>
<FULL_STOP> <X0800>;<X05>;<X05>;<FULL_STOP>
<APOSTROPHE> <X0968>;<X05>;<X05>;<APOSTROPHE>
<QUOTATION_MARK> <X0976>;<X05>;<X05>;<QUOTATION_MARK>
<LEFT_PARENTHESIS> <X098C>;<X05>;<X05>;<LEFT_PARENTHESIS>
<RIGHT_PARENTHESIS> <X098E>;<X05>;<X05>;<RIGHT_PARENTHESIS>
<LEFT_SQUARE_BRACKET> <X0990>;<X05>;<X05>;<LEFT_SQUARE_BRACKET>
<RIGHT_SQUARE_BRACKET> <X0992>;<X05>;<X05>;<RIGHT_SQUARE_BRACKET>
<LEFT_CURLY_BRACKET> <X0994>;<X05>;<X05>;<LEFT_CURLY_BRACKET>
<RIGHT_CURLY_BRACKET> <X0996>;<X05>;<X05>;<RIGHT_CURLY_BRACKET>
<COMMERCIAL_AT> <X0A7A>;<X05>;<X05>;<COMMERCIAL_AT>
<ASTERISK> <X0A7C>;<X05>;<X05>;<ASTERISK>
<SOLIDUS> <X0A86>;<X05>;<X05>;<SOLIDUS>
<REVERSE_SOLIDUS> <X0A88>;<X05>;<X05>;<REVERSE_SOLIDUS>
<AMPERSAND> <X0A8A>;<X05>;<X05>;<AMPERSAND>
<NUMBER_SIGN> <X0A8E>;<X05>;<X05>;<NUMBER_SIGN>
<PERCENT_SIGN> <X0A90>;<X05>;<X05>;<PERCENT_SIGN>
<GRAVE_ACCENT> <X0C04>;<X05>;<X05>;<GRAVE_ACCENT>
<GREEK_VARIA> <X0C04>;<X05>;<X05>;<GREEK_VARIA>
<GREEK_OXIA> <X0C06>;<X05>;<X05>;<GREEK_OXIA>
<GREEK_TONOS> <X0C06>;<X05>;<X05>;<GREEK_TONOS>
<CIRCUMFLEX_ACCENT> <X0C0A>;<X05>;<X05>;<CIRCUMFLEX_ACCENT>
<GREEK_DIALYTIKA_AND_OXIA> <X0C10>;"<X05><X88>";"<X05><X05>";<GREEK_DIALYTIKA_AND_OXIA>
<GREEK_DIALYTIKA_AND_VARIA> <X0C10>;"<X05><X8A>";"<X05><X05>";<GREEK_DIALYTIKA_AND_VARIA>
<GREEK_DIALYTIKA_AND_PERISPOMENI> <X0C10>;"<X05><X94>";"<X05><X05>";<GREEK_DIALYTIKA_AND_PERISPOMENI>
<GREEK_KORONIS> "<X0C16><X0900>";<X05>;"<X05><XC0>";<GREEK_KORONIS>
<GREEK_PSILI> "<X0C16><X0900>";<X05>;"<X05><XC0>";<GREEK_PSILI>
<GREEK_PSILI_AND_OXIA> "<X0C16><X0900>";"<X05><X88>";"<X05><XC0><X05>";<GREEK_PSILI_AND_OXIA>
<GREEK_PSILI_AND_VARIA> "<X0C16><X0900>";"<X05><X8A>";"<X05><XC0><X05>";<GREEK_PSILI_AND_VARIA>
<GREEK_PSILI_AND_PERISPOMENI> "<X0C16><X0900>";"<X05><X94>";"<X05><XC0><X05>";<GREEK_PSILI_AND_PERISPOMENI>
<GREEK_DASIA> "<X0C16><X1000>";<X05>;"<X05><XC0>";<GREEK_DASIA>
<GREEK_DASIA_AND_OXIA> "<X0C16><X1000>";"<X05><X88>";"<X05><XC0><X05>";<GREEK_DASIA_AND_OXIA>
<GREEK_DASIA_AND_VARIA> "<X0C16><X1000>";"<X05><X8A>";"<X05><XC0><X05>";<GREEK_DASIA_AND_VARIA>
<GREEK_DASIA_AND_PERISPOMENI> "<X0C16><X1000>";"<X05><X94>";"<X05><XC0><X05>";<GREEK_DASIA_AND_PERISPOMENI>
<GREEK_PERISPOMENI> "<X0C16><X1700>";<X05>;"<X05><XC0>";<GREEK_PERISPOMENI>
<GREEK_LOWER_NUMERAL_SIGN> <X0C1A>;<X05>;<X05>;<GREEK_LOWER_NUMERAL_SIGN>
<GREEK_REVERSED_LUNATE_EPSILON_SYMBOL> "<X0C61><XC700>";<X05>;"<X05><XC0>";<GREEK_REVERSED_LUNATE_EPSILON_SYMBOL>
<PLUS_SIGN> <X0C63>;<X05>;<X05>;<PLUS_SIGN>
<LESS-THAN_SIGN> <X0C6B>;<X05>;<X05>;<LESS-THAN_SIGN>
<EQUALS_SIGN> <X0C6D>;<X05>;<X05>;<EQUALS_SIGN>
<GREATER-THAN_SIGN> <X0C6F>;<X05>;<X05>;<GREATER-THAN_SIGN>
<VERTICAL_LINE> <X0C73>;<X05>;<X05>;<VERTICAL_LINE>
<TILDE> <X0C77>;<X05>;<X05>;<TILDE>
<DOLLAR_SIGN> <X0D26>;<X05>;<X05>;<DOLLAR_SIGN>
<zero> <X1200>;<X05>;<X05>;<zero>
<one> <X1400>;<X05>;<X05>;<one>
<two> <X1600>;<X05>;<X05>;<two>
<three> <X1800>;<X05>;<X05>;<three>
<four> <X1A00>;<X05>;<X05>;<four>
<five> <X1C00>;<X05>;<X05>;<five>
<six> <X1E00>;<X05>;<X05>;<six>
<seven> <X2000>;<X05>;<X05>;<seven>
<eight> <X2200>;<X05>;<X05>;<eight>
<nine> <X2400>;<X05>;<X05>;<nine>
<a> <X2900>;<X05>;<X05>;<a>
<A> <X2900>;<X05>;<X9C>;<A>
<b> <X2B00>;<X05>;<X05>;<b>
<B> <X2B00>;<X05>;<X9C>;<B>
<c> <X2D00>;<X05>;<X05>;<c>
<C> <X2D00>;<X05>;<X9C>;<C>
<d> <X2F00>;<X05>;<X05>;<d>
<D> <X2F00>;<X05>;<X9C>;<D>
<e> <X3100>;<X05>;<X05>;<e>
<E> <X3100>;<X05>;<X9C>;<E>
<f> <X3300>;<X05>;<X05>;<f>
<F> <X3300>;<X05>;<X9C>;<F>
<g> <X3500>;<X05>;<X05>;<g>
<G> <X3500>;<X05>;<X9C>;<G>
<h> <X3700>;<X05>;<X05>;<h>
<H> <X3700>;<X05>;<X9C>;<H>
<i> <X3900>;<X05>;<X05>;<i>
<I> <X3900>;<X05>;<X9C>;<I>
<j> <X3B00>;<X05>;<X05>;<j>
<J> <X3B00>;<X05>;<X9C>;<J>
<k> <X3D00>;<X05>;<X05>;<k>
<K> <X3D00>;<X05>;<X9C>;<K>
<l> <X3F00>;<X05>;<X05>;<l>
<L> <X3F00>;<X05>;<X9C>;<L>
<m> <X4100>;<X05>;<X05>;<m>
<M> <X4100>;<X05>;<X9C>;<M>
<n> <X4300>;<X05>;<X05>;<n>
<N> <X4300>;<X05>;<X9C>;<N>
<o> <X4500>;<X05>;<X05>;<o>
<O> <X4500>;<X05>;<X9C>;<O>
<p> <X4700>;<X05>;<X05>;<p>
<P> <X4700>;<X05>;<X9C>;<P>
<q> <X4900>;<X05>;<X05>;<q>
<Q> <X4900>;<X05>;<XA0>;<Q>
<r> <X4B00>;<X05>;<X05>;<r>
<R> <X4B00>;<X05>;<X9C>;<R>
<s> <X4D00>;<X05>;<X05>;<s>
<S> <X4D00>;<X05>;<X9C>;<S>
<t> <X4F00>;<X05>;<X05>;<t>
<T> <X4F00>;<X05>;<X9C>;<T>
<u> <X5100>;<X05>;<X05>;<u>
<U> <X5100>;<X05>;<X9C>;<U>
<v> <X5300>;<X05>;<X05>;<v>
<V> <X5300>;<X05>;<X9C>;<V>
<w> <X5500>;<X05>;<X05>;<w>
<W> <X5500>;<X05>;<XA0>;<W>
<x> <X5700>;<X05>;<X05>;<x>
<X> <X5700>;<X05>;<X9C>;<X>
<y> <X5900>;<X05>;<X05>;<y>
<Y> <X5900>;<X05>;<X9C>;<Y>
<z> <X5B00>;<X05>;<X05>;<z>
<Z> <X5B00>;<X05>;<X9C>;<Z>
<GREEK_SMALL_LETTER_ALPHA> <X5F06>;<X05>;<X05>;<GREEK_SMALL_LETTER_ALPHA>
<GREEK_CAPITAL_LETTER_ALPHA> <X5F06>;<X05>;<XA6>;<GREEK_CAPITAL_LETTER_ALPHA>
<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI> <X5F06>;"<X05><X84>";"<X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI> <X5F06>;"<X05><X84>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI>
<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_OXIA> <X5F06>;"<X05><X84><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_OXIA>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_OXIA> <X5F06>;"<X05><X84><X88>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_OXIA>
<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_OXIA_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X84><X88><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_OXIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_OXIA_AND_PROSGEGRAMMENI> <X5F06>;"<X05><X84><X88><XD8>";"<XA6><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_OXIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_VARIA> <X5F06>;"<X05><X84><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_VARIA>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_VARIA> <X5F06>;"<X05><X84><X8A>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_VARIA>
<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_VARIA_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X84><X8A><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_VARIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_VARIA_AND_PROSGEGRAMMENI> <X5F06>;"<X05><X84><X8A><XD8>";"<XA6><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_VARIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_PERISPOMENI> <X5F06>;"<X05><X84><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_PERISPOMENI> <X5F06>;"<X05><X84><X94>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X84><X94><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_PERISPOMENI_AND_PROSGEGRAMMENI> <X5F06>;"<X05><X84><X94><XD8>";"<XA6><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_PERISPOMENI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X84><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PSILI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_PROSGEGRAMMENI> <X5F06>;"<X05><X84><XD8>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PSILI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA> <X5F06>;"<X05><X86>";"<X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA> <X5F06>;"<X05><X86>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA>
<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_OXIA> <X5F06>;"<X05><X86><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_OXIA>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_OXIA> <X5F06>;"<X05><X86><X88>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_OXIA>
<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_OXIA_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X86><X88><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_OXIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_OXIA_AND_PROSGEGRAMMENI> <X5F06>;"<X05><X86><X88><XD8>";"<XA6><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_OXIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_VARIA> <X5F06>;"<X05><X86><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_VARIA>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_VARIA> <X5F06>;"<X05><X86><X8A>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_VARIA>
<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_VARIA_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X86><X8A><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_VARIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_VARIA_AND_PROSGEGRAMMENI> <X5F06>;"<X05><X86><X8A><XD8>";"<XA6><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_VARIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_PERISPOMENI> <X5F06>;"<X05><X86><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_PERISPOMENI> <X5F06>;"<X05><X86><X94>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X86><X94><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_PERISPOMENI_AND_PROSGEGRAMMENI> <X5F06>;"<X05><X86><X94><XD8>";"<XA6><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_PERISPOMENI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X86><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_DASIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_PROSGEGRAMMENI> <X5F06>;"<X05><X86><XD8>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_DASIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_TONOS> <X5F06>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_ALPHA><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_ALPHA_WITH_OXIA> <X5F06>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_ALPHA><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_ALPHA_WITH_TONOS> <X5F06>;"<X05><X88>";"<XA6><X05>";"<GREEK_CAPITAL_LETTER_ALPHA><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_ALPHA_WITH_OXIA> <X5F06>;"<X05><X88>";"<XA6><X05>";"<GREEK_CAPITAL_LETTER_ALPHA><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_ALPHA_WITH_OXIA_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X88><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_OXIA_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_VARIA> <X5F06>;"<X05><X8A>";"<X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_VARIA>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_VARIA> <X5F06>;"<X05><X8A>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_VARIA>
<GREEK_SMALL_LETTER_ALPHA_WITH_VARIA_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X8A><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_VARIA_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_VRACHY> <X5F06>;"<X05><X8C>";"<X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_VRACHY>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_VRACHY> <X5F06>;"<X05><X8C>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_VRACHY>
<GREEK_SMALL_LETTER_ALPHA_WITH_PERISPOMENI> <X5F06>;"<X05><X94>";"<X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PERISPOMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F06>;"<X05><X94><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_ALPHA_WITH_MACRON> <X5F06>;"<X05><XA4>";"<X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_MACRON>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_MACRON> <X5F06>;"<X05><XA4>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_MACRON>
<GREEK_SMALL_LETTER_ALPHA_WITH_YPOGEGRAMMENI> <X5F06>;"<X05><XD8>";"<X05><X05>";<GREEK_SMALL_LETTER_ALPHA_WITH_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ALPHA_WITH_PROSGEGRAMMENI> <X5F06>;"<X05><XD8>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_ALPHA_WITH_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_BETA> <X5F08>;<X05>;<X05>;<GREEK_SMALL_LETTER_BETA>
<GREEK_BETA_SYMBOL> <X5F08>;<X05>;<X10>;<GREEK_BETA_SYMBOL>
<GREEK_CAPITAL_LETTER_BETA> <X5F08>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_BETA>
<MODIFIER_LETTER_SMALL_BETA> <X5F08>;<X05>;<X2C>;<MODIFIER_LETTER_SMALL_BETA>
<GREEK_SUBSCRIPT_SMALL_LETTER_BETA> <X5F08>;<X05>;<X33>;<GREEK_SUBSCRIPT_SMALL_LETTER_BETA>
<GREEK_SMALL_LETTER_GAMMA> <X5F0A>;<X05>;<X05>;<GREEK_SMALL_LETTER_GAMMA>
<GREEK_CAPITAL_LETTER_GAMMA> <X5F0A>;<X05>;<X98>;<GREEK_CAPITAL_LETTER_GAMMA>
<MODIFIER_LETTER_SMALL_GREEK_GAMMA> <X5F0A>;<X05>;<X28>;<MODIFIER_LETTER_SMALL_GREEK_GAMMA>
<GREEK_SUBSCRIPT_SMALL_LETTER_GAMMA> <X5F0A>;<X05>;<X30>;<GREEK_SUBSCRIPT_SMALL_LETTER_GAMMA>
<GREEK_LETTER_SMALL_CAPITAL_GAMMA> <X5F0C>;<X05>;<X05>;<GREEK_LETTER_SMALL_CAPITAL_GAMMA>
<GREEK_SMALL_LETTER_DELTA> <X5F0E>;<X05>;<X05>;<GREEK_SMALL_LETTER_DELTA>
<GREEK_CAPITAL_LETTER_DELTA> <X5F0E>;<X05>;<X9B>;<GREEK_CAPITAL_LETTER_DELTA>
<MODIFIER_LETTER_SMALL_DELTA> <X5F0E>;<X05>;<X31>;<MODIFIER_LETTER_SMALL_DELTA>
<GREEK_SMALL_LETTER_EPSILON> <X5F10>;<X05>;<X05>;<GREEK_SMALL_LETTER_EPSILON>
<GREEK_LUNATE_EPSILON_SYMBOL> <X5F10>;<X05>;<X10>;<GREEK_LUNATE_EPSILON_SYMBOL>
<GREEK_CAPITAL_LETTER_EPSILON> <X5F10>;<X05>;<XA6>;<GREEK_CAPITAL_LETTER_EPSILON>
<GREEK_SMALL_LETTER_EPSILON_WITH_PSILI> <X5F10>;"<X05><X84>";"<X05><X05>";<GREEK_SMALL_LETTER_EPSILON_WITH_PSILI>
<GREEK_CAPITAL_LETTER_EPSILON_WITH_PSILI> <X5F10>;"<X05><X84>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_EPSILON_WITH_PSILI>
<GREEK_SMALL_LETTER_EPSILON_WITH_PSILI_AND_OXIA> <X5F10>;"<X05><X84><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_EPSILON_WITH_PSILI_AND_OXIA>
<GREEK_CAPITAL_LETTER_EPSILON_WITH_PSILI_AND_OXIA> <X5F10>;"<X05><X84><X88>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_EPSILON_WITH_PSILI_AND_OXIA>
<GREEK_SMALL_LETTER_EPSILON_WITH_PSILI_AND_VARIA> <X5F10>;"<X05><X84><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_EPSILON_WITH_PSILI_AND_VARIA>
<GREEK_CAPITAL_LETTER_EPSILON_WITH_PSILI_AND_VARIA> <X5F10>;"<X05><X84><X8A>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_EPSILON_WITH_PSILI_AND_VARIA>
<GREEK_SMALL_LETTER_EPSILON_WITH_DASIA> <X5F10>;"<X05><X86>";"<X05><X05>";<GREEK_SMALL_LETTER_EPSILON_WITH_DASIA>
<GREEK_CAPITAL_LETTER_EPSILON_WITH_DASIA> <X5F10>;"<X05><X86>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_EPSILON_WITH_DASIA>
<GREEK_SMALL_LETTER_EPSILON_WITH_DASIA_AND_OXIA> <X5F10>;"<X05><X86><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_EPSILON_WITH_DASIA_AND_OXIA>
<GREEK_CAPITAL_LETTER_EPSILON_WITH_DASIA_AND_OXIA> <X5F10>;"<X05><X86><X88>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_EPSILON_WITH_DASIA_AND_OXIA>
<GREEK_SMALL_LETTER_EPSILON_WITH_DASIA_AND_VARIA> <X5F10>;"<X05><X86><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_EPSILON_WITH_DASIA_AND_VARIA>
<GREEK_CAPITAL_LETTER_EPSILON_WITH_DASIA_AND_VARIA> <X5F10>;"<X05><X86><X8A>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_EPSILON_WITH_DASIA_AND_VARIA>
<GREEK_SMALL_LETTER_EPSILON_WITH_TONOS> <X5F10>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_EPSILON><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_EPSILON_WITH_OXIA> <X5F10>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_EPSILON><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_EPSILON_WITH_TONOS> <X5F10>;"<X05><X88>";"<XA6><X05>";"<GREEK_CAPITAL_LETTER_EPSILON><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_EPSILON_WITH_OXIA> <X5F10>;"<X05><X88>";"<XA6><X05>";"<GREEK_CAPITAL_LETTER_EPSILON><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_EPSILON_WITH_VARIA> <X5F10>;"<X05><X8A>";"<X05><X05>";<GREEK_SMALL_LETTER_EPSILON_WITH_VARIA>
<GREEK_CAPITAL_LETTER_EPSILON_WITH_VARIA> <X5F10>;"<X05><X8A>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_EPSILON_WITH_VARIA>
<GREEK_SMALL_LETTER_DIGAMMA> <X5F12>;<X05>;<X05>;<GREEK_SMALL_LETTER_DIGAMMA>
<GREEK_LETTER_DIGAMMA> <X5F12>;<X05>;<X9E>;<GREEK_LETTER_DIGAMMA>
<GREEK_SMALL_LETTER_PAMPHYLIAN_DIGAMMA> <X5F14>;<X05>;<X05>;<GREEK_SMALL_LETTER_PAMPHYLIAN_DIGAMMA>
<GREEK_CAPITAL_LETTER_PAMPHYLIAN_DIGAMMA> <X5F14>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_PAMPHYLIAN_DIGAMMA>
<GREEK_SMALL_LETTER_STIGMA> <X5F16>;<X05>;<X05>;<GREEK_SMALL_LETTER_STIGMA>
<GREEK_LETTER_STIGMA> <X5F16>;<X05>;<XA0>;<GREEK_LETTER_STIGMA>
<GREEK_SMALL_LETTER_ZETA> <X5F18>;<X05>;<X05>;<GREEK_SMALL_LETTER_ZETA>
<GREEK_CAPITAL_LETTER_ZETA> <X5F18>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_ZETA>
<GREEK_SMALL_LETTER_HETA> <X5F1A>;<X05>;<X05>;<GREEK_SMALL_LETTER_HETA>
<GREEK_CAPITAL_LETTER_HETA> <X5F1A>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_HETA>
<GREEK_SMALL_LETTER_ETA> <X5F1C>;<X05>;<X05>;<GREEK_SMALL_LETTER_ETA>
<GREEK_CAPITAL_LETTER_ETA> <X5F1C>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_ETA>
<GREEK_SMALL_LETTER_ETA_WITH_PSILI> <X5F1C>;"<X05><X84>";"<X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PSILI>
<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI> <X5F1C>;"<X05><X84>";"<X9E><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI>
<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_OXIA> <X5F1C>;"<X05><X84><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_OXIA>
<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_OXIA> <X5F1C>;"<X05><X84><X88>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_OXIA>
<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_OXIA_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X84><X88><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_OXIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_OXIA_AND_PROSGEGRAMMENI> <X5F1C>;"<X05><X84><X88><XD8>";"<X9E><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_OXIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_VARIA> <X5F1C>;"<X05><X84><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_VARIA>
<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_VARIA> <X5F1C>;"<X05><X84><X8A>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_VARIA>
<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_VARIA_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X84><X8A><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_VARIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_VARIA_AND_PROSGEGRAMMENI> <X5F1C>;"<X05><X84><X8A><XD8>";"<X9E><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_VARIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_PERISPOMENI> <X5F1C>;"<X05><X84><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_PERISPOMENI> <X5F1C>;"<X05><X84><X94>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X84><X94><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_PERISPOMENI_AND_PROSGEGRAMMENI> <X5F1C>;"<X05><X84><X94><XD8>";"<X9E><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_PERISPOMENI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X84><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PSILI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_PROSGEGRAMMENI> <X5F1C>;"<X05><X84><XD8>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PSILI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_DASIA> <X5F1C>;"<X05><X86>";"<X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_DASIA>
<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA> <X5F1C>;"<X05><X86>";"<X9E><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA>
<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_OXIA> <X5F1C>;"<X05><X86><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_OXIA>
<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_OXIA> <X5F1C>;"<X05><X86><X88>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_OXIA>
<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_OXIA_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X86><X88><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_OXIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_OXIA_AND_PROSGEGRAMMENI> <X5F1C>;"<X05><X86><X88><XD8>";"<X9E><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_OXIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_VARIA> <X5F1C>;"<X05><X86><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_VARIA>
<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_VARIA> <X5F1C>;"<X05><X86><X8A>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_VARIA>
<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_VARIA_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X86><X8A><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_VARIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_VARIA_AND_PROSGEGRAMMENI> <X5F1C>;"<X05><X86><X8A><XD8>";"<X9E><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_VARIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_PERISPOMENI> <X5F1C>;"<X05><X86><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_PERISPOMENI> <X5F1C>;"<X05><X86><X94>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X86><X94><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_PERISPOMENI_AND_PROSGEGRAMMENI> <X5F1C>;"<X05><X86><X94><XD8>";"<X9E><X05><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_PERISPOMENI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X86><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_DASIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_PROSGEGRAMMENI> <X5F1C>;"<X05><X86><XD8>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_DASIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_OXIA> <X5F1C>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_ETA><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_ETA_WITH_TONOS> <X5F1C>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_ETA><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_ETA_WITH_TONOS> <X5F1C>;"<X05><X88>";"<X9E><X05>";"<GREEK_CAPITAL_LETTER_ETA><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_ETA_WITH_OXIA> <X5F1C>;"<X05><X88>";"<X9E><X05>";"<GREEK_CAPITAL_LETTER_ETA><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_ETA_WITH_OXIA_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X88><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_OXIA_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_VARIA> <X5F1C>;"<X05><X8A>";"<X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_VARIA>
<GREEK_CAPITAL_LETTER_ETA_WITH_VARIA> <X5F1C>;"<X05><X8A>";"<X9E><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_VARIA>
<GREEK_SMALL_LETTER_ETA_WITH_VARIA_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X8A><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_VARIA_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_PERISPOMENI> <X5F1C>;"<X05><X94>";"<X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PERISPOMENI>
<GREEK_SMALL_LETTER_ETA_WITH_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F1C>;"<X05><X94><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_ETA_WITH_YPOGEGRAMMENI> <X5F1C>;"<X05><XD8>";"<X05><X05>";<GREEK_SMALL_LETTER_ETA_WITH_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_ETA_WITH_PROSGEGRAMMENI> <X5F1C>;"<X05><XD8>";"<X9E><X05>";<GREEK_CAPITAL_LETTER_ETA_WITH_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_THETA> <X5F1E>;<X05>;<X05>;<GREEK_SMALL_LETTER_THETA>
<GREEK_THETA_SYMBOL> <X5F1E>;<X05>;<X10>;<GREEK_THETA_SYMBOL>
<GREEK_CAPITAL_LETTER_THETA> <X5F1E>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_THETA>
<GREEK_CAPITAL_THETA_SYMBOL> <X5F1E>;<X05>;<XA5>;<GREEK_CAPITAL_THETA_SYMBOL>
<MODIFIER_LETTER_SMALL_THETA> <X5F1E>;<X05>;<X33>;<MODIFIER_LETTER_SMALL_THETA>
<GREEK_SMALL_LETTER_IOTA> <X5F20>;<X05>;<X05>;<GREEK_SMALL_LETTER_IOTA>
<GREEK_PROSGEGRAMMENI> <X5F20>;<X05>;<X05>;<GREEK_PROSGEGRAMMENI>
<GREEK_YPOGEGRAMMENI> <X5F20>;<X05>;<X10>;<GREEK_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_IOTA> <X5F20>;<X05>;<XA6>;<GREEK_CAPITAL_LETTER_IOTA>
<GREEK_SMALL_LETTER_IOTA_WITH_PSILI> <X5F20>;"<X05><X84>";"<X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_PSILI>
<GREEK_CAPITAL_LETTER_IOTA_WITH_PSILI> <X5F20>;"<X05><X84>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_PSILI>
<GREEK_SMALL_LETTER_IOTA_WITH_PSILI_AND_OXIA> <X5F20>;"<X05><X84><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_PSILI_AND_OXIA>
<GREEK_CAPITAL_LETTER_IOTA_WITH_PSILI_AND_OXIA> <X5F20>;"<X05><X84><X88>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_PSILI_AND_OXIA>
<GREEK_SMALL_LETTER_IOTA_WITH_PSILI_AND_VARIA> <X5F20>;"<X05><X84><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_PSILI_AND_VARIA>
<GREEK_CAPITAL_LETTER_IOTA_WITH_PSILI_AND_VARIA> <X5F20>;"<X05><X84><X8A>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_PSILI_AND_VARIA>
<GREEK_SMALL_LETTER_IOTA_WITH_PSILI_AND_PERISPOMENI> <X5F20>;"<X05><X84><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_PSILI_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_IOTA_WITH_PSILI_AND_PERISPOMENI> <X5F20>;"<X05><X84><X94>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_PSILI_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_IOTA_WITH_DASIA> <X5F20>;"<X05><X86>";"<X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_DASIA>
<GREEK_CAPITAL_LETTER_IOTA_WITH_DASIA> <X5F20>;"<X05><X86>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_DASIA>
<GREEK_SMALL_LETTER_IOTA_WITH_DASIA_AND_OXIA> <X5F20>;"<X05><X86><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_DASIA_AND_OXIA>
<GREEK_CAPITAL_LETTER_IOTA_WITH_DASIA_AND_OXIA> <X5F20>;"<X05><X86><X88>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_DASIA_AND_OXIA>
<GREEK_SMALL_LETTER_IOTA_WITH_DASIA_AND_VARIA> <X5F20>;"<X05><X86><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_DASIA_AND_VARIA>
<GREEK_CAPITAL_LETTER_IOTA_WITH_DASIA_AND_VARIA> <X5F20>;"<X05><X86><X8A>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_DASIA_AND_VARIA>
<GREEK_SMALL_LETTER_IOTA_WITH_DASIA_AND_PERISPOMENI> <X5F20>;"<X05><X86><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_DASIA_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_IOTA_WITH_DASIA_AND_PERISPOMENI> <X5F20>;"<X05><X86><X94>";"<XA6><X05><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_DASIA_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_IOTA_WITH_TONOS> <X5F20>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_IOTA><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_IOTA_WITH_OXIA> <X5F20>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_IOTA><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_IOTA_WITH_TONOS> <X5F20>;"<X05><X88>";"<XA6><X05>";"<GREEK_CAPITAL_LETTER_IOTA><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_IOTA_WITH_OXIA> <X5F20>;"<X05><X88>";"<XA6><X05>";"<GREEK_CAPITAL_LETTER_IOTA><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_IOTA_WITH_VARIA> <X5F20>;"<X05><X8A>";"<X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_VARIA>
<GREEK_CAPITAL_LETTER_IOTA_WITH_VARIA> <X5F20>;"<X05><X8A>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_VARIA>
<GREEK_SMALL_LETTER_IOTA_WITH_VRACHY> <X5F20>;"<X05><X8C>";"<X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_VRACHY>
<GREEK_CAPITAL_LETTER_IOTA_WITH_VRACHY> <X5F20>;"<X05><X8C>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_VRACHY>
<GREEK_SMALL_LETTER_IOTA_WITH_PERISPOMENI> <X5F20>;"<X05><X94>";"<X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_PERISPOMENI>
<GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA> <X5F20>;"<X05><X96>";"<X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA>
<GREEK_CAPITAL_LETTER_IOTA_WITH_DIALYTIKA> <X5F20>;"<X05><X96>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_DIALYTIKA>
<GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA_AND_TONOS> <X5F20>;"<X05><X96><X88>";"<X05><X05><X05>";"<GREEK_SMALL_LETTER_IOTA><COMBINING_DIAERESIS><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA_AND_OXIA> <X5F20>;"<X05><X96><X88>";"<X05><X05><X05>";"<GREEK_SMALL_LETTER_IOTA><COMBINING_DIAERESIS><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA_AND_VARIA> <X5F20>;"<X05><X96><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA_AND_VARIA>
<GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA_AND_PERISPOMENI> <X5F20>;"<X05><X96><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_IOTA_WITH_MACRON> <X5F20>;"<X05><XA4>";"<X05><X05>";<GREEK_SMALL_LETTER_IOTA_WITH_MACRON>
<GREEK_CAPITAL_LETTER_IOTA_WITH_MACRON> <X5F20>;"<X05><XA4>";"<XA6><X05>";<GREEK_CAPITAL_LETTER_IOTA_WITH_MACRON>
<GREEK_LETTER_YOT> <X5F22>;<X05>;<X05>;<GREEK_LETTER_YOT>
<GREEK_CAPITAL_LETTER_YOT> <X5F22>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_YOT>
<GREEK_SMALL_LETTER_KAPPA> <X5F24>;<X05>;<X05>;<GREEK_SMALL_LETTER_KAPPA>
<GREEK_KAPPA_SYMBOL> <X5F24>;<X05>;<X10>;<GREEK_KAPPA_SYMBOL>
<GREEK_CAPITAL_LETTER_KAPPA> <X5F24>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_KAPPA>
<GREEK_KAI_SYMBOL> "<X5F24><X5F06><X5F20>";"<X05><X05><X05>";"<X10><X10><X10>";<GREEK_KAI_SYMBOL>
<GREEK_CAPITAL_KAI_SYMBOL> "<X5F24><X5F06><X5F20>";"<X05><X05><X05>";"<XA8><X10><X10>";<GREEK_CAPITAL_KAI_SYMBOL>
<GREEK_SMALL_LETTER_LAMDA> <X5F26>;<X05>;<X05>;<GREEK_SMALL_LETTER_LAMDA>
<GREEK_CAPITAL_LETTER_LAMDA> <X5F26>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_LAMDA>
<GREEK_LETTER_SMALL_CAPITAL_LAMDA> <X5F28>;<X05>;<X05>;<GREEK_LETTER_SMALL_CAPITAL_LAMDA>
<GREEK_SMALL_LETTER_MU> <X5F2A>;<X05>;<X05>;<GREEK_SMALL_LETTER_MU>
<MICRO_SIGN> <X5F2A>;<X05>;<X10>;<MICRO_SIGN>
<GREEK_CAPITAL_LETTER_MU> <X5F2A>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_MU>
<GREEK_SMALL_LETTER_NU> <X5F2C>;<X05>;<X05>;<GREEK_SMALL_LETTER_NU>
<GREEK_CAPITAL_LETTER_NU> <X5F2C>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_NU>
<GREEK_SMALL_LETTER_XI> <X5F2E>;<X05>;<X05>;<GREEK_SMALL_LETTER_XI>
<GREEK_CAPITAL_LETTER_XI> <X5F2E>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_XI>
<GREEK_SMALL_LETTER_OMICRON> <X5F30>;<X05>;<X05>;<GREEK_SMALL_LETTER_OMICRON>
<GREEK_CAPITAL_LETTER_OMICRON> <X5F30>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_OMICRON>
<GREEK_SMALL_LETTER_OMICRON_WITH_PSILI> <X5F30>;"<X05><X84>";"<X05><X05>";<GREEK_SMALL_LETTER_OMICRON_WITH_PSILI>
<GREEK_CAPITAL_LETTER_OMICRON_WITH_PSILI> <X5F30>;"<X05><X84>";"<X9E><X05>";<GREEK_CAPITAL_LETTER_OMICRON_WITH_PSILI>
<GREEK_SMALL_LETTER_OMICRON_WITH_PSILI_AND_OXIA> <X5F30>;"<X05><X84><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMICRON_WITH_PSILI_AND_OXIA>
<GREEK_CAPITAL_LETTER_OMICRON_WITH_PSILI_AND_OXIA> <X5F30>;"<X05><X84><X88>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_OMICRON_WITH_PSILI_AND_OXIA>
<GREEK_SMALL_LETTER_OMICRON_WITH_PSILI_AND_VARIA> <X5F30>;"<X05><X84><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMICRON_WITH_PSILI_AND_VARIA>
<GREEK_CAPITAL_LETTER_OMICRON_WITH_PSILI_AND_VARIA> <X5F30>;"<X05><X84><X8A>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_OMICRON_WITH_PSILI_AND_VARIA>
<GREEK_SMALL_LETTER_OMICRON_WITH_DASIA> <X5F30>;"<X05><X86>";"<X05><X05>";<GREEK_SMALL_LETTER_OMICRON_WITH_DASIA>
<GREEK_CAPITAL_LETTER_OMICRON_WITH_DASIA> <X5F30>;"<X05><X86>";"<X9E><X05>";<GREEK_CAPITAL_LETTER_OMICRON_WITH_DASIA>
<GREEK_SMALL_LETTER_OMICRON_WITH_DASIA_AND_OXIA> <X5F30>;"<X05><X86><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMICRON_WITH_DASIA_AND_OXIA>
<GREEK_CAPITAL_LETTER_OMICRON_WITH_DASIA_AND_OXIA> <X5F30>;"<X05><X86><X88>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_OMICRON_WITH_DASIA_AND_OXIA>
<GREEK_SMALL_LETTER_OMICRON_WITH_DASIA_AND_VARIA> <X5F30>;"<X05><X86><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMICRON_WITH_DASIA_AND_VARIA>
<GREEK_CAPITAL_LETTER_OMICRON_WITH_DASIA_AND_VARIA> <X5F30>;"<X05><X86><X8A>";"<X9E><X05><X05>";<GREEK_CAPITAL_LETTER_OMICRON_WITH_DASIA_AND_VARIA>
<GREEK_SMALL_LETTER_OMICRON_WITH_TONOS> <X5F30>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_OMICRON><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_OMICRON_WITH_OXIA> <X5F30>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_OMICRON><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_OMICRON_WITH_TONOS> <X5F30>;"<X05><X88>";"<X9E><X05>";"<GREEK_CAPITAL_LETTER_OMICRON><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_OMICRON_WITH_OXIA> <X5F30>;"<X05><X88>";"<X9E><X05>";"<GREEK_CAPITAL_LETTER_OMICRON><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_OMICRON_WITH_VARIA> <X5F30>;"<X05><X8A>";"<X05><X05>";<GREEK_SMALL_LETTER_OMICRON_WITH_VARIA>
<GREEK_CAPITAL_LETTER_OMICRON_WITH_VARIA> <X5F30>;"<X05><X8A>";"<X9E><X05>";<GREEK_CAPITAL_LETTER_OMICRON_WITH_VARIA>
<GREEK_SMALL_LETTER_PI> <X5F32>;<X05>;<X05>;<GREEK_SMALL_LETTER_PI>
<GREEK_PI_SYMBOL> <X5F32>;<X05>;<X10>;<GREEK_PI_SYMBOL>
<GREEK_CAPITAL_LETTER_PI> <X5F32>;<X05>;<XA6>;<GREEK_CAPITAL_LETTER_PI>
<GREEK_LETTER_SMALL_CAPITAL_PI> <X5F34>;<X05>;<X05>;<GREEK_LETTER_SMALL_CAPITAL_PI>
<GREEK_SMALL_LETTER_SAN> <X5F36>;<X05>;<X05>;<GREEK_SMALL_LETTER_SAN>
<GREEK_CAPITAL_LETTER_SAN> <X5F36>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_SAN>
<GREEK_SMALL_LETTER_KOPPA> <X5F38>;<X05>;<X05>;<GREEK_SMALL_LETTER_KOPPA>
<GREEK_LETTER_KOPPA> <X5F38>;<X05>;<XA0>;<GREEK_LETTER_KOPPA>
<GREEK_SMALL_LETTER_ARCHAIC_KOPPA> <X5F3A>;<X05>;<X05>;<GREEK_SMALL_LETTER_ARCHAIC_KOPPA>
<GREEK_LETTER_ARCHAIC_KOPPA> <X5F3A>;<X05>;<XA0>;<GREEK_LETTER_ARCHAIC_KOPPA>
<GREEK_SMALL_LETTER_RHO> <X5F3C>;<X05>;<X05>;<GREEK_SMALL_LETTER_RHO>
<GREEK_RHO_SYMBOL> <X5F3C>;<X05>;<X10>;<GREEK_RHO_SYMBOL>
<GREEK_CAPITAL_LETTER_RHO> <X5F3C>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_RHO>
<GREEK_SUBSCRIPT_SMALL_LETTER_RHO> <X5F3C>;<X05>;<X30>;<GREEK_SUBSCRIPT_SMALL_LETTER_RHO>
<GREEK_SMALL_LETTER_RHO_WITH_PSILI> <X5F3C>;"<X05><X84>";"<X05><X05>";<GREEK_SMALL_LETTER_RHO_WITH_PSILI>
<GREEK_SMALL_LETTER_RHO_WITH_DASIA> <X5F3C>;"<X05><X86>";"<X05><X05>";<GREEK_SMALL_LETTER_RHO_WITH_DASIA>
<GREEK_CAPITAL_LETTER_RHO_WITH_DASIA> <X5F3C>;"<X05><X86>";"<XA0><X05>";<GREEK_CAPITAL_LETTER_RHO_WITH_DASIA>
<GREEK_LETTER_SMALL_CAPITAL_RHO> <X5F3E>;<X05>;<X05>;<GREEK_LETTER_SMALL_CAPITAL_RHO>
<GREEK_RHO_WITH_STROKE_SYMBOL> <X5F40>;<X05>;<X05>;<GREEK_RHO_WITH_STROKE_SYMBOL>
<GREEK_SMALL_LETTER_SIGMA> <X5F42>;<X05>;<X05>;<GREEK_SMALL_LETTER_SIGMA>
<GREEK_LUNATE_SIGMA_SYMBOL> <X5F42>;<X05>;<X10>;<GREEK_LUNATE_SIGMA_SYMBOL>
<GREEK_CAPITAL_LETTER_SIGMA> <X5F42>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_SIGMA>
<GREEK_CAPITAL_LUNATE_SIGMA_SYMBOL> <X5F42>;<X05>;<XA5>;<GREEK_CAPITAL_LUNATE_SIGMA_SYMBOL>
<GREEK_SMALL_LETTER_FINAL_SIGMA> <X5F42>;<X05>;<X33>;<GREEK_SMALL_LETTER_FINAL_SIGMA>
<GREEK_SMALL_DOTTED_LUNATE_SIGMA_SYMBOL> <X5F44>;<X05>;<X05>;<GREEK_SMALL_DOTTED_LUNATE_SIGMA_SYMBOL>
<GREEK_CAPITAL_DOTTED_LUNATE_SIGMA_SYMBOL> <X5F44>;<X05>;<XA0>;<GREEK_CAPITAL_DOTTED_LUNATE_SIGMA_SYMBOL>
<GREEK_SMALL_REVERSED_LUNATE_SIGMA_SYMBOL> <X5F46>;<X05>;<X05>;<GREEK_SMALL_REVERSED_LUNATE_SIGMA_SYMBOL>
<GREEK_CAPITAL_REVERSED_LUNATE_SIGMA_SYMBOL> <X5F46>;<X05>;<XA0>;<GREEK_CAPITAL_REVERSED_LUNATE_SIGMA_SYMBOL>
<GREEK_SMALL_REVERSED_DOTTED_LUNATE_SIGMA_SYMBOL> <X5F48>;<X05>;<X05>;<GREEK_SMALL_REVERSED_DOTTED_LUNATE_SIGMA_SYMBOL>
<GREEK_CAPITAL_REVERSED_DOTTED_LUNATE_SIGMA_SYMBOL> <X5F48>;<X05>;<XA0>;<GREEK_CAPITAL_REVERSED_DOTTED_LUNATE_SIGMA_SYMBOL>
<GREEK_SMALL_LETTER_TAU> <X5F4A>;<X05>;<X05>;<GREEK_SMALL_LETTER_TAU>
<GREEK_CAPITAL_LETTER_TAU> <X5F4A>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_TAU>
<GREEK_SMALL_LETTER_UPSILON> <X5F4C>;<X05>;<X05>;<GREEK_SMALL_LETTER_UPSILON>
<GREEK_CAPITAL_LETTER_UPSILON> <X5F4C>;<X05>;<X9B>;<GREEK_CAPITAL_LETTER_UPSILON>
<GREEK_UPSILON_WITH_HOOK_SYMBOL> <X5F4C>;<X05>;<XA6>;<GREEK_UPSILON_WITH_HOOK_SYMBOL>
<GREEK_SMALL_LETTER_UPSILON_WITH_PSILI> <X5F4C>;"<X05><X84>";"<X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_PSILI>
<GREEK_SMALL_LETTER_UPSILON_WITH_PSILI_AND_OXIA> <X5F4C>;"<X05><X84><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_PSILI_AND_OXIA>
<GREEK_SMALL_LETTER_UPSILON_WITH_PSILI_AND_VARIA> <X5F4C>;"<X05><X84><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_PSILI_AND_VARIA>
<GREEK_SMALL_LETTER_UPSILON_WITH_PSILI_AND_PERISPOMENI> <X5F4C>;"<X05><X84><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_PSILI_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_UPSILON_WITH_DASIA> <X5F4C>;"<X05><X86>";"<X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_DASIA>
<GREEK_CAPITAL_LETTER_UPSILON_WITH_DASIA> <X5F4C>;"<X05><X86>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_UPSILON_WITH_DASIA>
<GREEK_SMALL_LETTER_UPSILON_WITH_DASIA_AND_OXIA> <X5F4C>;"<X05><X86><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_DASIA_AND_OXIA>
<GREEK_CAPITAL_LETTER_UPSILON_WITH_DASIA_AND_OXIA> <X5F4C>;"<X05><X86><X88>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_UPSILON_WITH_DASIA_AND_OXIA>
<GREEK_SMALL_LETTER_UPSILON_WITH_DASIA_AND_VARIA> <X5F4C>;"<X05><X86><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_DASIA_AND_VARIA>
<GREEK_CAPITAL_LETTER_UPSILON_WITH_DASIA_AND_VARIA> <X5F4C>;"<X05><X86><X8A>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_UPSILON_WITH_DASIA_AND_VARIA>
<GREEK_SMALL_LETTER_UPSILON_WITH_DASIA_AND_PERISPOMENI> <X5F4C>;"<X05><X86><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_DASIA_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_UPSILON_WITH_DASIA_AND_PERISPOMENI> <X5F4C>;"<X05><X86><X94>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_UPSILON_WITH_DASIA_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_UPSILON_WITH_TONOS> <X5F4C>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_UPSILON><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_UPSILON_WITH_OXIA> <X5F4C>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_UPSILON><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_UPSILON_WITH_TONOS> <X5F4C>;"<X05><X88>";"<X9B><X05>";"<GREEK_CAPITAL_LETTER_UPSILON><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_UPSILON_WITH_OXIA> <X5F4C>;"<X05><X88>";"<X9B><X05>";"<GREEK_CAPITAL_LETTER_UPSILON><COMBINING_ACUTE_ACCENT>"
<GREEK_UPSILON_WITH_ACUTE_AND_HOOK_SYMBOL> <X5F4C>;"<X05><X88>";"<XA6><X05>";<GREEK_UPSILON_WITH_ACUTE_AND_HOOK_SYMBOL>
<GREEK_SMALL_LETTER_UPSILON_WITH_VARIA> <X5F4C>;"<X05><X8A>";"<X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_VARIA>
<GREEK_CAPITAL_LETTER_UPSILON_WITH_VARIA> <X5F4C>;"<X05><X8A>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_UPSILON_WITH_VARIA>
<GREEK_SMALL_LETTER_UPSILON_WITH_VRACHY> <X5F4C>;"<X05><X8C>";"<X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_VRACHY>
<GREEK_CAPITAL_LETTER_UPSILON_WITH_VRACHY> <X5F4C>;"<X05><X8C>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_UPSILON_WITH_VRACHY>
<GREEK_SMALL_LETTER_UPSILON_WITH_PERISPOMENI> <X5F4C>;"<X05><X94>";"<X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_PERISPOMENI>
<GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA> <X5F4C>;"<X05><X96>";"<X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA>
<GREEK_CAPITAL_LETTER_UPSILON_WITH_DIALYTIKA> <X5F4C>;"<X05><X96>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_UPSILON_WITH_DIALYTIKA>
<GREEK_UPSILON_WITH_DIAERESIS_AND_HOOK_SYMBOL> <X5F4C>;"<X05><X96>";"<XA6><X05>";<GREEK_UPSILON_WITH_DIAERESIS_AND_HOOK_SYMBOL>
<GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA_AND_TONOS> <X5F4C>;"<X05><X96><X88>";"<X05><X05><X05>";"<GREEK_SMALL_LETTER_UPSILON><COMBINING_DIAERESIS><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA_AND_OXIA> <X5F4C>;"<X05><X96><X88>";"<X05><X05><X05>";"<GREEK_SMALL_LETTER_UPSILON><COMBINING_DIAERESIS><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA_AND_VARIA> <X5F4C>;"<X05><X96><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA_AND_VARIA>
<GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA_AND_PERISPOMENI> <X5F4C>;"<X05><X96><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_UPSILON_WITH_MACRON> <X5F4C>;"<X05><XA4>";"<X05><X05>";<GREEK_SMALL_LETTER_UPSILON_WITH_MACRON>
<GREEK_CAPITAL_LETTER_UPSILON_WITH_MACRON> <X5F4C>;"<X05><XA4>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_UPSILON_WITH_MACRON>
<GREEK_SMALL_LETTER_PHI> <X5F4E>;<X05>;<X05>;<GREEK_SMALL_LETTER_PHI>
<GREEK_PHI_SYMBOL> <X5F4E>;<X05>;<X10>;<GREEK_PHI_SYMBOL>
<GREEK_CAPITAL_LETTER_PHI> <X5F4E>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_PHI>
<MODIFIER_LETTER_SMALL_GREEK_PHI> <X5F4E>;<X05>;<X2C>;<MODIFIER_LETTER_SMALL_GREEK_PHI>
<GREEK_SUBSCRIPT_SMALL_LETTER_PHI> <X5F4E>;<X05>;<X33>;<GREEK_SUBSCRIPT_SMALL_LETTER_PHI>
<GREEK_SMALL_LETTER_CHI> <X5F50>;<X05>;<X05>;<GREEK_SMALL_LETTER_CHI>
<GREEK_CAPITAL_LETTER_CHI> <X5F50>;<X05>;<X98>;<GREEK_CAPITAL_LETTER_CHI>
<MODIFIER_LETTER_SMALL_CHI> <X5F50>;<X05>;<X28>;<MODIFIER_LETTER_SMALL_CHI>
<GREEK_SUBSCRIPT_SMALL_LETTER_CHI> <X5F50>;<X05>;<X30>;<GREEK_SUBSCRIPT_SMALL_LETTER_CHI>
<GREEK_SMALL_LETTER_PSI> <X5F52>;<X05>;<X05>;<GREEK_SMALL_LETTER_PSI>
<GREEK_CAPITAL_LETTER_PSI> <X5F52>;<X05>;<X9E>;<GREEK_CAPITAL_LETTER_PSI>
<GREEK_LETTER_SMALL_CAPITAL_PSI> <X5F54>;<X05>;<X05>;<GREEK_LETTER_SMALL_CAPITAL_PSI>
<GREEK_SMALL_LETTER_OMEGA> <X5F56>;<X05>;<X05>;<GREEK_SMALL_LETTER_OMEGA>
<GREEK_CAPITAL_LETTER_OMEGA> <X5F56>;<X05>;<X9B>;<GREEK_CAPITAL_LETTER_OMEGA>
<OHM_SIGN> <X5F56>;<X05>;<X9B>;<OHM_SIGN>
<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI> <X5F56>;"<X05><X84>";"<X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI> <X5F56>;"<X05><X84>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI>
<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_OXIA> <X5F56>;"<X05><X84><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_OXIA>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_OXIA> <X5F56>;"<X05><X84><X88>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_OXIA>
<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_OXIA_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X84><X88><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_OXIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_OXIA_AND_PROSGEGRAMMENI> <X5F56>;"<X05><X84><X88><XD8>";"<X9B><X05><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_OXIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_VARIA> <X5F56>;"<X05><X84><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_VARIA>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_VARIA> <X5F56>;"<X05><X84><X8A>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_VARIA>
<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_VARIA_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X84><X8A><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_VARIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_VARIA_AND_PROSGEGRAMMENI> <X5F56>;"<X05><X84><X8A><XD8>";"<X9B><X05><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_VARIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_PERISPOMENI> <X5F56>;"<X05><X84><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_PERISPOMENI> <X5F56>;"<X05><X84><X94>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X84><X94><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_PERISPOMENI_AND_PROSGEGRAMMENI> <X5F56>;"<X05><X84><X94><XD8>";"<X9B><X05><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_PERISPOMENI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X84><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PSILI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_PROSGEGRAMMENI> <X5F56>;"<X05><X84><XD8>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PSILI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA> <X5F56>;"<X05><X86>";"<X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA> <X5F56>;"<X05><X86>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA>
<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_OXIA> <X5F56>;"<X05><X86><X88>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_OXIA>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_OXIA> <X5F56>;"<X05><X86><X88>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_OXIA>
<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_OXIA_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X86><X88><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_OXIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_OXIA_AND_PROSGEGRAMMENI> <X5F56>;"<X05><X86><X88><XD8>";"<X9B><X05><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_OXIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_VARIA> <X5F56>;"<X05><X86><X8A>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_VARIA>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_VARIA> <X5F56>;"<X05><X86><X8A>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_VARIA>
<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_VARIA_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X86><X8A><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_VARIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_VARIA_AND_PROSGEGRAMMENI> <X5F56>;"<X05><X86><X8A><XD8>";"<X9B><X05><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_VARIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_PERISPOMENI> <X5F56>;"<X05><X86><X94>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_PERISPOMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_PERISPOMENI> <X5F56>;"<X05><X86><X94>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_PERISPOMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X86><X94><XD8>";"<X05><X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_PERISPOMENI_AND_PROSGEGRAMMENI> <X5F56>;"<X05><X86><X94><XD8>";"<X9B><X05><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_PERISPOMENI_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X86><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_DASIA_AND_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_PROSGEGRAMMENI> <X5F56>;"<X05><X86><XD8>";"<X9B><X05><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_DASIA_AND_PROSGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_OXIA> <X5F56>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_OMEGA><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_OMEGA_WITH_TONOS> <X5F56>;"<X05><X88>";"<X05><X05>";"<GREEK_SMALL_LETTER_OMEGA><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_OMEGA_WITH_TONOS> <X5F56>;"<X05><X88>";"<X9B><X05>";"<GREEK_CAPITAL_LETTER_OMEGA><COMBINING_ACUTE_ACCENT>"
<GREEK_CAPITAL_LETTER_OMEGA_WITH_OXIA> <X5F56>;"<X05><X88>";"<X9B><X05>";"<GREEK_CAPITAL_LETTER_OMEGA><COMBINING_ACUTE_ACCENT>"
<GREEK_SMALL_LETTER_OMEGA_WITH_OXIA_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X88><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_OXIA_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_VARIA> <X5F56>;"<X05><X8A>";"<X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_VARIA>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_VARIA> <X5F56>;"<X05><X8A>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_VARIA>
<GREEK_SMALL_LETTER_OMEGA_WITH_VARIA_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X8A><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_VARIA_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_PERISPOMENI> <X5F56>;"<X05><X94>";"<X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PERISPOMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_PERISPOMENI_AND_YPOGEGRAMMENI> <X5F56>;"<X05><X94><XD8>";"<X05><X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_PERISPOMENI_AND_YPOGEGRAMMENI>
<GREEK_SMALL_LETTER_OMEGA_WITH_YPOGEGRAMMENI> <X5F56>;"<X05><XD8>";"<X05><X05>";<GREEK_SMALL_LETTER_OMEGA_WITH_YPOGEGRAMMENI>
<GREEK_CAPITAL_LETTER_OMEGA_WITH_PROSGEGRAMMENI> <X5F56>;"<X05><XD8>";"<X9B><X05>";<GREEK_CAPITAL_LETTER_OMEGA_WITH_PROSGEGRAMMENI>
<GREEK_LETTER_SMALL_CAPITAL_OMEGA> <X5F58>;<X05>;<X05>;<GREEK_LETTER_SMALL_CAPITAL_OMEGA>
<GREEK_SMALL_LETTER_SAMPI> <X5F5A>;<X05>;<X05>;<GREEK_SMALL_LETTER_SAMPI>
<GREEK_LETTER_SAMPI> <X5F5A>;<X05>;<XA0>;<GREEK_LETTER_SAMPI>
<GREEK_SMALL_LETTER_ARCHAIC_SAMPI> <X5F5C>;<X05>;<X05>;<GREEK_SMALL_LETTER_ARCHAIC_SAMPI>
<GREEK_CAPITAL_LETTER_ARCHAIC_SAMPI> <X5F5C>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_ARCHAIC_SAMPI>
<GREEK_SMALL_LETTER_SHO> <X5F5E>;<X05>;<X05>;<GREEK_SMALL_LETTER_SHO>
<GREEK_CAPITAL_LETTER_SHO> <X5F5E>;<X05>;<XA0>;<GREEK_CAPITAL_LETTER_SHO>
UNDEFINED IGNORE;IGNORE;IGNORE;...
order_end
END LC_COLLATE

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@
# Espan~ol (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-1
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
(0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
B;(C,<C,>);{CH,Ch};D;(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;K;L;{LL,Ll};M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
P;Q;R;{RR,Rr};S;T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>);Z;\
<D->;<TH>;\
#
[;\\;];^;<':>;_;<'m>;<''>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
b;(c,<c,>);ch;d;(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;k;l;ll;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
p;q;r;rr;s;t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);z;\
<d->;<th>;<ss>;\
#
\{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

View File

@ -1,38 +0,0 @@
# Espan~ol (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-15
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
B;(C,<C,>);{CH,Ch};D;(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;K;L;{LL,Ll};M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\
P;Q;R;{RR,Rr};(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
<D->;<TH>;\
#
[;\\;];^;_;<'m>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
b;(c,<c,>);ch;d;(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;k;l;ll;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\
p;q;r;rr;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);(z,<z<>);\
<d->;<th>;<ss>;\
#
\{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

File diff suppressed because it is too large Load Diff

View File

@ -1,62 +0,0 @@
# $FreeBSD$
# latin1 (backward compatible with ASCII)
#
#
charmap map.ISO8859-15
substitute <ss> with "ss"
order \
# controls
<NU>;...;<US>;<DT>;<PA>;...;<AC>;\
# spaces
<SP>;<NS>;\
#
_;-;<-->;\,;\;;:;!;<!I>;?;<?I>;/;.;\
# accents
`;^;~;<.M>;<'m>;\
# paired brackets
';\";<<<>;</>/>>;\(;[;\{;\};];\);\
# typography
<SE>;<PI>;<Co>;<Rg>;<At>;<Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
# math and logic
*;\\;&;<Nb>;%;+;<+->;<*X>;<-:>;\<;=;>;|;<NO>;\
# measurement
<DG>;<My>;\
# digits
0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
# small and capital
(a,A,<a'>,<A'>,<a!>,<A!>,<A/>>,<a/>>,<aa>,<AA>,<a?>,<A?>,<ae>,<AE>);\
<-a>;\
(b,B);\
(c,C,<c,>,<C,>);\
(d,D,<d->,<D->);\
(e,E,<e'>,<E'>,<e!>,<E!>,<e/>>,<E/>>,<E:>,<e:>);\
(f,F);\
(g,G);\
(h,H);\
(i,I,<i'>,<I'>,<i!>,<I!>,<i/>>,<I/>>,<i:>,<I:>);\
(j,J);\
(k,K);\
(l,L);\
(m,M);\
(n,N,<n?>,<N?>);\
(o,O,<o'>,<O'>,<o!>,<O!>,<o/>>,<O/>>,<o//>,<O//>);\
<-o>;\
(<oe>,<OE>);\
(p,P);\
(q,Q);\
(r,R);\
(s,S);\
(<s<>,<S<>);\
(z,Z);\
(<z<>,<Z<>);\
(t,T);\
(u,U,<u'>,<U'>,<u!>,<U!>,<u/>>,<U/>>);\
(v,V);\
(w,W);\
(<o?>,<O?>);\
(<a:>,<A:>);\
(<o:>,<O:>);\
(<u:>,<U:>);\
(x,X);\
(y,Y,<y'>,<Y'>,<y:>,<Y:>);\
(<th>,<TH>)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,540 @@
# Warning: Do not edit. This file is automatically extracted from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
comment_char *
escape_char /
LC_COLLATE
*************
* Define collation weights as symbols
collating-symbol <X01>
collating-symbol <X02>
collating-symbol <X05>
collating-symbol <X0C>
collating-symbol <X18>
collating-symbol <X20>
collating-symbol <X23>
collating-symbol <X2D>
collating-symbol <X2E>
collating-symbol <X44>
collating-symbol <X4E>
collating-symbol <X65>
collating-symbol <X6F>
collating-symbol <X86>
collating-symbol <X90>
collating-symbol <X9C>
collating-symbol <XA0>
collating-symbol <XA7>
collating-symbol <XB1>
collating-symbol <XC0>
collating-symbol <XC8>
collating-symbol <XD2>
collating-symbol <XE4>
collating-symbol <XE5>
collating-symbol <XE9>
collating-symbol <XF3>
collating-symbol <X0304>
collating-symbol <X0306>
collating-symbol <X0308>
collating-symbol <X030A>
collating-symbol <X030C>
collating-symbol <X0400>
collating-symbol <X050A>
collating-symbol <X050E>
collating-symbol <X0600>
collating-symbol <X0722>
collating-symbol <X072C>
collating-symbol <X0750>
collating-symbol <X0758>
collating-symbol <X0800>
collating-symbol <X0968>
collating-symbol <X0976>
collating-symbol <X098C>
collating-symbol <X098E>
collating-symbol <X0990>
collating-symbol <X0992>
collating-symbol <X0994>
collating-symbol <X0996>
collating-symbol <X0A7A>
collating-symbol <X0A7C>
collating-symbol <X0A86>
collating-symbol <X0A88>
collating-symbol <X0A8A>
collating-symbol <X0A8E>
collating-symbol <X0A90>
collating-symbol <X0AF8>
collating-symbol <X0AFA>
collating-symbol <X0AFC>
collating-symbol <X0AFE>
collating-symbol <X0C04>
collating-symbol <X0C0A>
collating-symbol <X0C63>
collating-symbol <X0C6B>
collating-symbol <X0C6D>
collating-symbol <X0C6F>
collating-symbol <X0C73>
collating-symbol <X0C77>
collating-symbol <X0D26>
collating-symbol <X1200>
collating-symbol <X1400>
collating-symbol <X1600>
collating-symbol <X1800>
collating-symbol <X1A00>
collating-symbol <X1C00>
collating-symbol <X1E00>
collating-symbol <X2000>
collating-symbol <X2200>
collating-symbol <X2400>
collating-symbol <X2900>
collating-symbol <X2B00>
collating-symbol <X2D00>
collating-symbol <X2F00>
collating-symbol <X3100>
collating-symbol <X3300>
collating-symbol <X3500>
collating-symbol <X3700>
collating-symbol <X3900>
collating-symbol <X3B00>
collating-symbol <X3D00>
collating-symbol <X3F00>
collating-symbol <X4100>
collating-symbol <X4300>
collating-symbol <X4500>
collating-symbol <X4700>
collating-symbol <X4900>
collating-symbol <X4B00>
collating-symbol <X4D00>
collating-symbol <X4F00>
collating-symbol <X5100>
collating-symbol <X5300>
collating-symbol <X5500>
collating-symbol <X5700>
collating-symbol <X5900>
collating-symbol <X5B00>
collating-symbol <X6306>
collating-symbol <X6308>
collating-symbol <X630A>
collating-symbol <X630C>
collating-symbol <X630E>
collating-symbol <X6310>
collating-symbol <X6312>
collating-symbol <X6314>
collating-symbol <X6316>
collating-symbol <X6318>
collating-symbol <X631A>
collating-symbol <X631C>
collating-symbol <X631E>
collating-symbol <X6320>
collating-symbol <X6322>
collating-symbol <X6324>
collating-symbol <X6326>
collating-symbol <X6328>
collating-symbol <X632A>
collating-symbol <X632C>
collating-symbol <X632E>
collating-symbol <X6330>
order_start forward;forward;forward;forward
* collation weights in order
<X01>
<X02>
<X05>
<X0C>
<X18>
<X20>
<X23>
<X2D>
<X2E>
<X44>
<X4E>
<X65>
<X6F>
<X86>
<X90>
<X9C>
<XA0>
<XA7>
<XB1>
<XC0>
<XC8>
<XD2>
<XE4>
<XE5>
<XE9>
<XF3>
<X0304>
<X0306>
<X0308>
<X030A>
<X030C>
<X0400>
<X050A>
<X050E>
<X0600>
<X0722>
<X072C>
<X0750>
<X0758>
<X0800>
<X0968>
<X0976>
<X098C>
<X098E>
<X0990>
<X0992>
<X0994>
<X0996>
<X0A7A>
<X0A7C>
<X0A86>
<X0A88>
<X0A8A>
<X0A8E>
<X0A90>
<X0AF8>
<X0AFA>
<X0AFC>
<X0AFE>
<X0C04>
<X0C0A>
<X0C63>
<X0C6B>
<X0C6D>
<X0C6F>
<X0C73>
<X0C77>
<X0D26>
<X1200>
<X1400>
<X1600>
<X1800>
<X1A00>
<X1C00>
<X1E00>
<X2000>
<X2200>
<X2400>
<X2900>
<X2B00>
<X2D00>
<X2F00>
<X3100>
<X3300>
<X3500>
<X3700>
<X3900>
<X3B00>
<X3D00>
<X3F00>
<X4100>
<X4300>
<X4500>
<X4700>
<X4900>
<X4B00>
<X4D00>
<X4F00>
<X5100>
<X5300>
<X5500>
<X5700>
<X5900>
<X5B00>
<X6306>
<X6308>
<X630A>
<X630C>
<X630E>
<X6310>
<X6312>
<X6314>
<X6316>
<X6318>
<X631A>
<X631C>
<X631E>
<X6320>
<X6322>
<X6324>
<X6326>
<X6328>
<X632A>
<X632C>
<X632E>
<X6330>
* assignment of characters to weights
<NULL> IGNORE;IGNORE;IGNORE;<NULL>
<START_OF_HEADING> IGNORE;IGNORE;IGNORE;<START_OF_HEADING>
<START_OF_TEXT> IGNORE;IGNORE;IGNORE;<START_OF_TEXT>
<END_OF_TEXT> IGNORE;IGNORE;IGNORE;<END_OF_TEXT>
<END_OF_TRANSMISSION> IGNORE;IGNORE;IGNORE;<END_OF_TRANSMISSION>
<ENQUIRY> IGNORE;IGNORE;IGNORE;<ENQUIRY>
<ACKNOWLEDGE> IGNORE;IGNORE;IGNORE;<ACKNOWLEDGE>
<ALERT> IGNORE;IGNORE;IGNORE;<ALERT>
<BACKSPACE> IGNORE;IGNORE;IGNORE;<BACKSPACE>
<SHIFT_OUT> IGNORE;IGNORE;IGNORE;<SHIFT_OUT>
<SHIFT_IN> IGNORE;IGNORE;IGNORE;<SHIFT_IN>
<DATA_LINK_ESCAPE> IGNORE;IGNORE;IGNORE;<DATA_LINK_ESCAPE>
<DEVICE_CONTROL_ONE> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_ONE>
<DEVICE_CONTROL_TWO> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_TWO>
<DEVICE_CONTROL_THREE> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_THREE>
<DEVICE_CONTROL_FOUR> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_FOUR>
<NEGATIVE_ACKNOWLEDGE> IGNORE;IGNORE;IGNORE;<NEGATIVE_ACKNOWLEDGE>
<SYNCHRONOUS_IDLE> IGNORE;IGNORE;IGNORE;<SYNCHRONOUS_IDLE>
<END_OF_TRANSMISSION_BLOCK> IGNORE;IGNORE;IGNORE;<END_OF_TRANSMISSION_BLOCK>
<CANCEL> IGNORE;IGNORE;IGNORE;<CANCEL>
<END_OF_MEDIUM> IGNORE;IGNORE;IGNORE;<END_OF_MEDIUM>
<SUBSTITUTE> IGNORE;IGNORE;IGNORE;<SUBSTITUTE>
<ESCAPE> IGNORE;IGNORE;IGNORE;<ESCAPE>
<INFORMATION_SEPARATOR_FOUR> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_FOUR>
<INFORMATION_SEPARATOR_THREE> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_THREE>
<INFORMATION_SEPARATOR_TWO> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_TWO>
<INFORMATION_SEPARATOR_ONE> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_ONE>
<DELETE> IGNORE;IGNORE;IGNORE;<DELETE>
<HEBREW_ACCENT_ETNAHTA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_ETNAHTA>
<HEBREW_ACCENT_SEGOL> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_SEGOL>
<HEBREW_ACCENT_SHALSHELET> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_SHALSHELET>
<HEBREW_ACCENT_ZAQEF_QATAN> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_ZAQEF_QATAN>
<HEBREW_ACCENT_ZAQEF_GADOL> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_ZAQEF_GADOL>
<HEBREW_ACCENT_TIPEHA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_TIPEHA>
<HEBREW_ACCENT_REVIA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_REVIA>
<HEBREW_ACCENT_ZARQA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_ZARQA>
<HEBREW_ACCENT_PASHTA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_PASHTA>
<HEBREW_ACCENT_YETIV> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_YETIV>
<HEBREW_ACCENT_TEVIR> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_TEVIR>
<HEBREW_ACCENT_GERESH> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_GERESH>
<HEBREW_ACCENT_GERESH_MUQDAM> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_GERESH_MUQDAM>
<HEBREW_ACCENT_GERSHAYIM> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_GERSHAYIM>
<HEBREW_ACCENT_QARNEY_PARA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_QARNEY_PARA>
<HEBREW_ACCENT_TELISHA_GEDOLA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_TELISHA_GEDOLA>
<HEBREW_ACCENT_PAZER> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_PAZER>
<HEBREW_ACCENT_ATNAH_HAFUKH> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_ATNAH_HAFUKH>
<HEBREW_ACCENT_MUNAH> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_MUNAH>
<HEBREW_ACCENT_MAHAPAKH> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_MAHAPAKH>
<HEBREW_ACCENT_MERKHA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_MERKHA>
<HEBREW_ACCENT_MERKHA_KEFULA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_MERKHA_KEFULA>
<HEBREW_ACCENT_DARGA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_DARGA>
<HEBREW_ACCENT_QADMA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_QADMA>
<HEBREW_ACCENT_TELISHA_QETANA> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_TELISHA_QETANA>
<HEBREW_ACCENT_YERAH_BEN_YOMO> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_YERAH_BEN_YOMO>
<HEBREW_ACCENT_OLE> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_OLE>
<HEBREW_ACCENT_ILUY> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_ILUY>
<HEBREW_ACCENT_DEHI> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_DEHI>
<HEBREW_ACCENT_ZINOR> IGNORE;IGNORE;IGNORE;<HEBREW_ACCENT_ZINOR>
<HEBREW_MARK_MASORA_CIRCLE> IGNORE;IGNORE;IGNORE;<HEBREW_MARK_MASORA_CIRCLE>
<HEBREW_POINT_METEG> IGNORE;IGNORE;IGNORE;<HEBREW_POINT_METEG>
<HEBREW_MARK_UPPER_DOT> IGNORE;IGNORE;IGNORE;<HEBREW_MARK_UPPER_DOT>
<HEBREW_MARK_LOWER_DOT> IGNORE;IGNORE;IGNORE;<HEBREW_MARK_LOWER_DOT>
<HEBREW_POINT_SHEVA> IGNORE;"<XE4><X02>";"<X05><XC0>";<HEBREW_POINT_SHEVA>
<HEBREW_POINT_HATAF_SEGOL> IGNORE;"<XE4><X23>";"<X05><XC0>";<HEBREW_POINT_HATAF_SEGOL>
<HEBREW_POINT_HATAF_PATAH> IGNORE;"<XE4><X44>";"<X05><XC0>";<HEBREW_POINT_HATAF_PATAH>
<HEBREW_POINT_HATAF_QAMATS> IGNORE;"<XE4><X65>";"<X05><XC0>";<HEBREW_POINT_HATAF_QAMATS>
<HEBREW_POINT_HIRIQ> IGNORE;"<XE4><X86>";"<X05><XC0>";<HEBREW_POINT_HIRIQ>
<HEBREW_POINT_TSERE> IGNORE;"<XE4><XA7>";"<X05><XC0>";<HEBREW_POINT_TSERE>
<HEBREW_POINT_SEGOL> IGNORE;"<XE4><XC8>";"<X05><XC0>";<HEBREW_POINT_SEGOL>
<HEBREW_POINT_PATAH> IGNORE;"<XE4><XE9>";"<X05><XC0>";<HEBREW_POINT_PATAH>
<HEBREW_POINT_QAMATS> IGNORE;"<XE5><X0C>";"<X05><XC0>";<HEBREW_POINT_QAMATS>
<HEBREW_POINT_QAMATS_QATAN> IGNORE;"<XE5><X0C>";"<X05><XC0>";<HEBREW_POINT_QAMATS_QATAN>
<HEBREW_POINT_HOLAM> IGNORE;"<XE5><X2D>";"<X05><XC0>";<HEBREW_POINT_HOLAM>
<HEBREW_POINT_HOLAM_HASER_FOR_VAV> IGNORE;"<XE5><X2D>";"<X05><XC0>";<HEBREW_POINT_HOLAM_HASER_FOR_VAV>
<HEBREW_POINT_QUBUTS> IGNORE;"<XE5><X4E>";"<X05><XC0>";<HEBREW_POINT_QUBUTS>
<HEBREW_POINT_SIN_DOT> IGNORE;"<XE5><X6F>";"<X05><XC0>";<HEBREW_POINT_SIN_DOT>
<HEBREW_POINT_SHIN_DOT> IGNORE;"<XE5><X90>";"<X05><XC0>";<HEBREW_POINT_SHIN_DOT>
<HEBREW_POINT_DAGESH_OR_MAPIQ> IGNORE;"<XE5><XB1>";"<X05><XC0>";<HEBREW_POINT_DAGESH_OR_MAPIQ>
<HEBREW_POINT_RAFE> IGNORE;"<XE5><XD2>";"<X05><XC0>";<HEBREW_POINT_RAFE>
<HEBREW_POINT_JUDEO-SPANISH_VARIKA> IGNORE;"<XE5><XF3>";"<X05><XC0>";<HEBREW_POINT_JUDEO-SPANISH_VARIKA>
<tab> <X0304>;<X05>;<X05>;<tab>
<newline> <X0306>;<X05>;<X05>;<newline>
<vertical-tab> <X0308>;<X05>;<X05>;<vertical-tab>
<form-feed> <X030A>;<X05>;<X05>;<form-feed>
<carriage-return> <X030C>;<X05>;<X05>;<carriage-return>
<space> <X0400>;<X05>;<X05>;<space>
<LOW_LINE> <X050A>;<X05>;<X05>;<LOW_LINE>
<HYPHEN-MINUS> <X050E>;<X05>;<X05>;<HYPHEN-MINUS>
<COMMA> <X0600>;<X05>;<X05>;<COMMA>
<SEMICOLON> <X0722>;<X05>;<X05>;<SEMICOLON>
<COLON> <X072C>;<X05>;<X05>;<COLON>
<EXCLAMATION_MARK> <X0750>;<X05>;<X05>;<EXCLAMATION_MARK>
<QUESTION_MARK> <X0758>;<X05>;<X05>;<QUESTION_MARK>
<FULL_STOP> <X0800>;<X05>;<X05>;<FULL_STOP>
<HEBREW_PUNCTUATION_GERESH> <X0968>;<X02>;<X05>;<HEBREW_PUNCTUATION_GERESH>
<APOSTROPHE> <X0968>;<X05>;<X05>;<APOSTROPHE>
<QUOTATION_MARK> <X0976>;<X05>;<X05>;<QUOTATION_MARK>
<LEFT_PARENTHESIS> <X098C>;<X05>;<X05>;<LEFT_PARENTHESIS>
<RIGHT_PARENTHESIS> <X098E>;<X05>;<X05>;<RIGHT_PARENTHESIS>
<LEFT_SQUARE_BRACKET> <X0990>;<X05>;<X05>;<LEFT_SQUARE_BRACKET>
<RIGHT_SQUARE_BRACKET> <X0992>;<X05>;<X05>;<RIGHT_SQUARE_BRACKET>
<LEFT_CURLY_BRACKET> <X0994>;<X05>;<X05>;<LEFT_CURLY_BRACKET>
<RIGHT_CURLY_BRACKET> <X0996>;<X05>;<X05>;<RIGHT_CURLY_BRACKET>
<COMMERCIAL_AT> <X0A7A>;<X05>;<X05>;<COMMERCIAL_AT>
<ASTERISK> <X0A7C>;<X05>;<X05>;<ASTERISK>
<SOLIDUS> <X0A86>;<X05>;<X05>;<SOLIDUS>
<REVERSE_SOLIDUS> <X0A88>;<X05>;<X05>;<REVERSE_SOLIDUS>
<HEBREW_PUNCTUATION_GERSHAYIM> "<X0A88><X0976>";"<X05><X02>";"<X05><X05>";<HEBREW_PUNCTUATION_GERSHAYIM>
<AMPERSAND> <X0A8A>;<X05>;<X05>;<AMPERSAND>
<NUMBER_SIGN> <X0A8E>;<X05>;<X05>;<NUMBER_SIGN>
<PERCENT_SIGN> <X0A90>;<X05>;<X05>;<PERCENT_SIGN>
<HEBREW_PUNCTUATION_MAQAF> <X0AF8>;<X05>;<X05>;<HEBREW_PUNCTUATION_MAQAF>
<HEBREW_PUNCTUATION_PASEQ> <X0AFA>;<X05>;<X05>;<HEBREW_PUNCTUATION_PASEQ>
<HEBREW_PUNCTUATION_SOF_PASUQ> <X0AFC>;<X05>;<X05>;<HEBREW_PUNCTUATION_SOF_PASUQ>
<HEBREW_PUNCTUATION_NUN_HAFUKHA> <X0AFE>;<X05>;<X05>;<HEBREW_PUNCTUATION_NUN_HAFUKHA>
<GRAVE_ACCENT> <X0C04>;<X05>;<X05>;<GRAVE_ACCENT>
<CIRCUMFLEX_ACCENT> <X0C0A>;<X05>;<X05>;<CIRCUMFLEX_ACCENT>
<PLUS_SIGN> <X0C63>;<X05>;<X05>;<PLUS_SIGN>
<HEBREW_LETTER_ALTERNATIVE_PLUS_SIGN> <X0C63>;<X05>;<X18>;<HEBREW_LETTER_ALTERNATIVE_PLUS_SIGN>
<LESS-THAN_SIGN> <X0C6B>;<X05>;<X05>;<LESS-THAN_SIGN>
<EQUALS_SIGN> <X0C6D>;<X05>;<X05>;<EQUALS_SIGN>
<GREATER-THAN_SIGN> <X0C6F>;<X05>;<X05>;<GREATER-THAN_SIGN>
<VERTICAL_LINE> <X0C73>;<X05>;<X05>;<VERTICAL_LINE>
<TILDE> <X0C77>;<X05>;<X05>;<TILDE>
<DOLLAR_SIGN> <X0D26>;<X05>;<X05>;<DOLLAR_SIGN>
<zero> <X1200>;<X05>;<X05>;<zero>
<one> <X1400>;<X05>;<X05>;<one>
<two> <X1600>;<X05>;<X05>;<two>
<three> <X1800>;<X05>;<X05>;<three>
<four> <X1A00>;<X05>;<X05>;<four>
<five> <X1C00>;<X05>;<X05>;<five>
<six> <X1E00>;<X05>;<X05>;<six>
<seven> <X2000>;<X05>;<X05>;<seven>
<eight> <X2200>;<X05>;<X05>;<eight>
<nine> <X2400>;<X05>;<X05>;<nine>
<a> <X2900>;<X05>;<X05>;<a>
<A> <X2900>;<X05>;<X9C>;<A>
<b> <X2B00>;<X05>;<X05>;<b>
<B> <X2B00>;<X05>;<X9C>;<B>
<c> <X2D00>;<X05>;<X05>;<c>
<C> <X2D00>;<X05>;<X9C>;<C>
<d> <X2F00>;<X05>;<X05>;<d>
<D> <X2F00>;<X05>;<X9C>;<D>
<e> <X3100>;<X05>;<X05>;<e>
<E> <X3100>;<X05>;<X9C>;<E>
<f> <X3300>;<X05>;<X05>;<f>
<F> <X3300>;<X05>;<X9C>;<F>
<g> <X3500>;<X05>;<X05>;<g>
<G> <X3500>;<X05>;<X9C>;<G>
<h> <X3700>;<X05>;<X05>;<h>
<H> <X3700>;<X05>;<X9C>;<H>
<i> <X3900>;<X05>;<X05>;<i>
<I> <X3900>;<X05>;<X9C>;<I>
<j> <X3B00>;<X05>;<X05>;<j>
<J> <X3B00>;<X05>;<X9C>;<J>
<k> <X3D00>;<X05>;<X05>;<k>
<K> <X3D00>;<X05>;<X9C>;<K>
<l> <X3F00>;<X05>;<X05>;<l>
<L> <X3F00>;<X05>;<X9C>;<L>
<m> <X4100>;<X05>;<X05>;<m>
<M> <X4100>;<X05>;<X9C>;<M>
<n> <X4300>;<X05>;<X05>;<n>
<N> <X4300>;<X05>;<X9C>;<N>
<o> <X4500>;<X05>;<X05>;<o>
<O> <X4500>;<X05>;<X9C>;<O>
<p> <X4700>;<X05>;<X05>;<p>
<P> <X4700>;<X05>;<X9C>;<P>
<q> <X4900>;<X05>;<X05>;<q>
<Q> <X4900>;<X05>;<XA0>;<Q>
<r> <X4B00>;<X05>;<X05>;<r>
<R> <X4B00>;<X05>;<X9C>;<R>
<s> <X4D00>;<X05>;<X05>;<s>
<S> <X4D00>;<X05>;<X9C>;<S>
<t> <X4F00>;<X05>;<X05>;<t>
<T> <X4F00>;<X05>;<X9C>;<T>
<u> <X5100>;<X05>;<X05>;<u>
<U> <X5100>;<X05>;<X9C>;<U>
<v> <X5300>;<X05>;<X05>;<v>
<V> <X5300>;<X05>;<X9C>;<V>
<w> <X5500>;<X05>;<X05>;<w>
<W> <X5500>;<X05>;<XA0>;<W>
<x> <X5700>;<X05>;<X05>;<x>
<X> <X5700>;<X05>;<X9C>;<X>
<y> <X5900>;<X05>;<X05>;<y>
<Y> <X5900>;<X05>;<X9C>;<Y>
<z> <X5B00>;<X05>;<X05>;<z>
<Z> <X5B00>;<X05>;<X9C>;<Z>
<HEBREW_LETTER_ALEF> <X6306>;<X05>;<X05>;<HEBREW_LETTER_ALEF>
<HEBREW_LETTER_WIDE_ALEF> <X6306>;<X05>;<X2E>;<HEBREW_LETTER_WIDE_ALEF>
<HEBREW_LETTER_ALEF_WITH_PATAH> <X6306>;"<X05><XE4><XE9>";"<X05><X05><XC0>";<HEBREW_LETTER_ALEF_WITH_PATAH>
<HEBREW_LETTER_ALEF_WITH_QAMATS> <X6306>;"<X05><XE5><X0C>";"<X05><X05><XC0>";<HEBREW_LETTER_ALEF_WITH_QAMATS>
<HEBREW_LETTER_ALEF_WITH_MAPIQ> <X6306>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_ALEF_WITH_MAPIQ>
<HEBREW_LIGATURE_ALEF_LAMED> "<X6306><X631C>";"<X05><X05>";"<X20><X20>";<HEBREW_LIGATURE_ALEF_LAMED>
<HEBREW_LETTER_BET> <X6308>;<X05>;<X05>;<HEBREW_LETTER_BET>
<HEBREW_LETTER_BET_WITH_DAGESH> <X6308>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_BET_WITH_DAGESH>
<HEBREW_LETTER_BET_WITH_RAFE> <X6308>;"<X05><XE5><XD2>";"<X05><X05><XC0>";<HEBREW_LETTER_BET_WITH_RAFE>
<HEBREW_LETTER_GIMEL> <X630A>;<X05>;<X05>;<HEBREW_LETTER_GIMEL>
<HEBREW_LETTER_GIMEL_WITH_DAGESH> <X630A>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_GIMEL_WITH_DAGESH>
<HEBREW_LETTER_DALET> <X630C>;<X05>;<X05>;<HEBREW_LETTER_DALET>
<HEBREW_LETTER_WIDE_DALET> <X630C>;<X05>;<X2E>;<HEBREW_LETTER_WIDE_DALET>
<HEBREW_LETTER_DALET_WITH_DAGESH> <X630C>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_DALET_WITH_DAGESH>
<HEBREW_LETTER_HE> <X630E>;<X05>;<X05>;<HEBREW_LETTER_HE>
<HEBREW_LETTER_WIDE_HE> <X630E>;<X05>;<X20>;<HEBREW_LETTER_WIDE_HE>
<HEBREW_LETTER_HE_WITH_MAPIQ> <X630E>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_HE_WITH_MAPIQ>
<HEBREW_LETTER_VAV> <X6310>;<X05>;<X05>;<HEBREW_LETTER_VAV>
<HEBREW_LETTER_VAV_WITH_HOLAM> <X6310>;"<X05><XE5><X2D>";"<X05><X05><XC0>";<HEBREW_LETTER_VAV_WITH_HOLAM>
<HEBREW_LETTER_VAV_WITH_DAGESH> <X6310>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_VAV_WITH_DAGESH>
<HEBREW_LIGATURE_YIDDISH_DOUBLE_VAV> "<X6310><X6310>";"<X05><X05>";"<X20><X20>";<HEBREW_LIGATURE_YIDDISH_DOUBLE_VAV>
<HEBREW_LIGATURE_YIDDISH_VAV_YOD> "<X6310><X6318>";"<X05><X05>";"<X20><X20>";<HEBREW_LIGATURE_YIDDISH_VAV_YOD>
<HEBREW_LETTER_ZAYIN> <X6312>;<X05>;<X05>;<HEBREW_LETTER_ZAYIN>
<HEBREW_LETTER_ZAYIN_WITH_DAGESH> <X6312>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_ZAYIN_WITH_DAGESH>
<HEBREW_LETTER_HET> <X6314>;<X05>;<X05>;<HEBREW_LETTER_HET>
<HEBREW_LETTER_TET> <X6316>;<X05>;<X05>;<HEBREW_LETTER_TET>
<HEBREW_LETTER_TET_WITH_DAGESH> <X6316>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_TET_WITH_DAGESH>
<HEBREW_LETTER_YOD> <X6318>;<X05>;<X05>;<HEBREW_LETTER_YOD>
<HEBREW_LETTER_YOD_WITH_HIRIQ> <X6318>;"<X05><XE4><X86>";"<X05><X05><XC0>";<HEBREW_LETTER_YOD_WITH_HIRIQ>
<HEBREW_LETTER_YOD_WITH_DAGESH> <X6318>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_YOD_WITH_DAGESH>
<HEBREW_LIGATURE_YIDDISH_DOUBLE_YOD> "<X6318><X6318>";"<X05><X05>";"<X20><X20>";<HEBREW_LIGATURE_YIDDISH_DOUBLE_YOD>
<HEBREW_LIGATURE_YIDDISH_YOD_YOD_PATAH> "<X6318><X6318>";"<X05><X05><XE4><XE9>";"<X20><X20><X05><XC0>";<HEBREW_LIGATURE_YIDDISH_YOD_YOD_PATAH>
<HEBREW_LETTER_KAF> <X631A>;<X05>;<X05>;<HEBREW_LETTER_KAF>
<HEBREW_LETTER_WIDE_KAF> <X631A>;<X05>;<X20>;<HEBREW_LETTER_WIDE_KAF>
<HEBREW_LETTER_FINAL_KAF> <X631A>;<X05>;<X2E>;<HEBREW_LETTER_FINAL_KAF>
<HEBREW_LETTER_KAF_WITH_DAGESH> <X631A>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_KAF_WITH_DAGESH>
<HEBREW_LETTER_FINAL_KAF_WITH_DAGESH> <X631A>;"<X05><XE5><XB1>";"<X2E><X05><XC0>";<HEBREW_LETTER_FINAL_KAF_WITH_DAGESH>
<HEBREW_LETTER_KAF_WITH_RAFE> <X631A>;"<X05><XE5><XD2>";"<X05><X05><XC0>";<HEBREW_LETTER_KAF_WITH_RAFE>
<HEBREW_LETTER_LAMED> <X631C>;<X05>;<X05>;<HEBREW_LETTER_LAMED>
<HEBREW_LETTER_WIDE_LAMED> <X631C>;<X05>;<X2E>;<HEBREW_LETTER_WIDE_LAMED>
<HEBREW_LETTER_LAMED_WITH_DAGESH> <X631C>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_LAMED_WITH_DAGESH>
<HEBREW_LETTER_MEM> <X631E>;<X05>;<X05>;<HEBREW_LETTER_MEM>
<HEBREW_LETTER_WIDE_FINAL_MEM> <X631E>;<X05>;<X20>;<HEBREW_LETTER_WIDE_FINAL_MEM>
<HEBREW_LETTER_FINAL_MEM> <X631E>;<X05>;<X2E>;<HEBREW_LETTER_FINAL_MEM>
<HEBREW_LETTER_MEM_WITH_DAGESH> <X631E>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_MEM_WITH_DAGESH>
<HEBREW_LETTER_NUN> <X6320>;<X05>;<X05>;<HEBREW_LETTER_NUN>
<HEBREW_LETTER_FINAL_NUN> <X6320>;<X05>;<X20>;<HEBREW_LETTER_FINAL_NUN>
<HEBREW_LETTER_NUN_WITH_DAGESH> <X6320>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_NUN_WITH_DAGESH>
<HEBREW_LETTER_SAMEKH> <X6322>;<X05>;<X05>;<HEBREW_LETTER_SAMEKH>
<HEBREW_LETTER_SAMEKH_WITH_DAGESH> <X6322>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_SAMEKH_WITH_DAGESH>
<HEBREW_LETTER_AYIN> <X6324>;<X05>;<X05>;<HEBREW_LETTER_AYIN>
<HEBREW_LETTER_ALTERNATIVE_AYIN> <X6324>;<X05>;<X20>;<HEBREW_LETTER_ALTERNATIVE_AYIN>
<HEBREW_LETTER_PE> <X6326>;<X05>;<X05>;<HEBREW_LETTER_PE>
<HEBREW_LETTER_FINAL_PE> <X6326>;<X05>;<X20>;<HEBREW_LETTER_FINAL_PE>
<HEBREW_LETTER_PE_WITH_DAGESH> <X6326>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_PE_WITH_DAGESH>
<HEBREW_LETTER_FINAL_PE_WITH_DAGESH> <X6326>;"<X05><XE5><XB1>";"<X20><X05><XC0>";<HEBREW_LETTER_FINAL_PE_WITH_DAGESH>
<HEBREW_LETTER_PE_WITH_RAFE> <X6326>;"<X05><XE5><XD2>";"<X05><X05><XC0>";<HEBREW_LETTER_PE_WITH_RAFE>
<HEBREW_LETTER_TSADI> <X6328>;<X05>;<X05>;<HEBREW_LETTER_TSADI>
<HEBREW_LETTER_FINAL_TSADI> <X6328>;<X05>;<X20>;<HEBREW_LETTER_FINAL_TSADI>
<HEBREW_LETTER_TSADI_WITH_DAGESH> <X6328>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_TSADI_WITH_DAGESH>
<HEBREW_LETTER_QOF> <X632A>;<X05>;<X05>;<HEBREW_LETTER_QOF>
<HEBREW_LETTER_QOF_WITH_DAGESH> <X632A>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_QOF_WITH_DAGESH>
<HEBREW_LETTER_RESH> <X632C>;<X05>;<X05>;<HEBREW_LETTER_RESH>
<HEBREW_LETTER_WIDE_RESH> <X632C>;<X05>;<X20>;<HEBREW_LETTER_WIDE_RESH>
<HEBREW_LETTER_RESH_WITH_DAGESH> <X632C>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_RESH_WITH_DAGESH>
<HEBREW_LETTER_SHIN> <X632E>;<X05>;<X05>;<HEBREW_LETTER_SHIN>
<HEBREW_LETTER_SHIN_WITH_SIN_DOT> <X632E>;"<X05><XE5><X6F>";"<X05><X05><XC0>";<HEBREW_LETTER_SHIN_WITH_SIN_DOT>
<HEBREW_LETTER_SHIN_WITH_SHIN_DOT> <X632E>;"<X05><XE5><X90>";"<X05><X05><XC0>";<HEBREW_LETTER_SHIN_WITH_SHIN_DOT>
<HEBREW_LETTER_SHIN_WITH_DAGESH> <X632E>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_SHIN_WITH_DAGESH>
<HEBREW_LETTER_SHIN_WITH_DAGESH_AND_SIN_DOT> <X632E>;"<X05><XE5><XB1><XE5><X6F>";"<X05><X05><XC0><X05><XC0>";<HEBREW_LETTER_SHIN_WITH_DAGESH_AND_SIN_DOT>
<HEBREW_LETTER_SHIN_WITH_DAGESH_AND_SHIN_DOT> <X632E>;"<X05><XE5><XB1><XE5><X90>";"<X05><X05><XC0><X05><XC0>";<HEBREW_LETTER_SHIN_WITH_DAGESH_AND_SHIN_DOT>
<HEBREW_LETTER_TAV> <X6330>;<X05>;<X05>;<HEBREW_LETTER_TAV>
<HEBREW_LETTER_WIDE_TAV> <X6330>;<X05>;<X20>;<HEBREW_LETTER_WIDE_TAV>
<HEBREW_LETTER_TAV_WITH_DAGESH> <X6330>;"<X05><XE5><XB1>";"<X05><X05><XC0>";<HEBREW_LETTER_TAV_WITH_DAGESH>
UNDEFINED IGNORE;IGNORE;IGNORE;...
order_end
END LC_COLLATE

View File

@ -1,25 +0,0 @@
# ISCII-DEV
#
# $FreeBSD$
#
charmap map.ISCII-DEV
order \
# controls
<NU>;...;<US>;\
<NS>;<SP>;!;\";<Nb>;<DO>;\
%;&;';\(;\);*;+;\,;-;.;/;:;...;@;[;...;`;\{;...;<AC>; \
<Vowel-modifier-Chandrabindu>;...;<Vowel-modifier-Visarg>; \
<Consonant-invisible>;...;<Full-Stop-Viram>; \
# digits
0;...;9; \
<Digit-0>;...;<Digit-9>; \
# capital
A;...;Z; \
# small
a;...;z; \
# Everything else
<Vowel-A>;...;<Consonant-HA>; \
# unused etc
ë;...;ð;û;...;ÿ

View File

@ -0,0 +1,687 @@
# Warning: Do not edit. This file is automatically extracted from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
comment_char *
escape_char /
LC_COLLATE
*************
* Define collation weights as symbols
collating-symbol <X01>
collating-symbol <X05>
collating-symbol <X20>
collating-symbol <X46>
collating-symbol <X88>
collating-symbol <X8A>
collating-symbol <X9C>
collating-symbol <XA0>
collating-symbol <XC0>
collating-symbol <XC6>
collating-symbol <XE7>
collating-symbol <XF1>
collating-symbol <X0200>
collating-symbol <X0300>
collating-symbol <X0304>
collating-symbol <X0306>
collating-symbol <X0308>
collating-symbol <X030A>
collating-symbol <X030C>
collating-symbol <X0400>
collating-symbol <X050A>
collating-symbol <X050E>
collating-symbol <X0600>
collating-symbol <X0722>
collating-symbol <X072C>
collating-symbol <X0750>
collating-symbol <X0758>
collating-symbol <X0800>
collating-symbol <X0968>
collating-symbol <X0976>
collating-symbol <X098C>
collating-symbol <X098E>
collating-symbol <X0990>
collating-symbol <X0992>
collating-symbol <X0994>
collating-symbol <X0996>
collating-symbol <X0A7A>
collating-symbol <X0A7C>
collating-symbol <X0A86>
collating-symbol <X0A88>
collating-symbol <X0A8A>
collating-symbol <X0A8E>
collating-symbol <X0A90>
collating-symbol <X0B08>
collating-symbol <X0B0A>
collating-symbol <X0B0C>
collating-symbol <X0B0E>
collating-symbol <X0C04>
collating-symbol <X0C0A>
collating-symbol <X0C63>
collating-symbol <X0C6B>
collating-symbol <X0C6D>
collating-symbol <X0C6F>
collating-symbol <X0C73>
collating-symbol <X0C77>
collating-symbol <X0CFC>
collating-symbol <X0D26>
collating-symbol <X1200>
collating-symbol <X1400>
collating-symbol <X1600>
collating-symbol <X1800>
collating-symbol <X1A00>
collating-symbol <X1C00>
collating-symbol <X1E00>
collating-symbol <X2000>
collating-symbol <X2200>
collating-symbol <X2400>
collating-symbol <X2900>
collating-symbol <X2B00>
collating-symbol <X2D00>
collating-symbol <X2F00>
collating-symbol <X3100>
collating-symbol <X3300>
collating-symbol <X3500>
collating-symbol <X3700>
collating-symbol <X3900>
collating-symbol <X3B00>
collating-symbol <X3D00>
collating-symbol <X3F00>
collating-symbol <X4100>
collating-symbol <X4300>
collating-symbol <X4500>
collating-symbol <X4700>
collating-symbol <X4900>
collating-symbol <X4B00>
collating-symbol <X4D00>
collating-symbol <X4F00>
collating-symbol <X5100>
collating-symbol <X5300>
collating-symbol <X5500>
collating-symbol <X5700>
collating-symbol <X5900>
collating-symbol <X5B00>
collating-symbol <X6606>
collating-symbol <X6607>
collating-symbol <X6608>
collating-symbol <X660A>
collating-symbol <X660C>
collating-symbol <X660E>
collating-symbol <X6610>
collating-symbol <X6612>
collating-symbol <X6614>
collating-symbol <X6616>
collating-symbol <X6618>
collating-symbol <X661A>
collating-symbol <X661C>
collating-symbol <X661E>
collating-symbol <X6620>
collating-symbol <X6622>
collating-symbol <X6624>
collating-symbol <X6626>
collating-symbol <X6628>
collating-symbol <X662A>
collating-symbol <X662C>
collating-symbol <X662E>
collating-symbol <X6630>
collating-symbol <X6632>
collating-symbol <X6634>
collating-symbol <X6636>
collating-symbol <X6638>
collating-symbol <X663A>
collating-symbol <X663C>
collating-symbol <X663E>
collating-symbol <X6640>
collating-symbol <X6642>
collating-symbol <X6644>
collating-symbol <X6646>
collating-symbol <X6648>
collating-symbol <X664A>
collating-symbol <X664C>
collating-symbol <X664E>
collating-symbol <X6650>
collating-symbol <X6652>
collating-symbol <X6654>
collating-symbol <X6656>
collating-symbol <X6658>
collating-symbol <X665A>
collating-symbol <X665C>
collating-symbol <X665E>
collating-symbol <X6660>
collating-symbol <X6662>
collating-symbol <X6664>
collating-symbol <X6666>
collating-symbol <X6668>
collating-symbol <X666A>
collating-symbol <X666C>
collating-symbol <X666E>
collating-symbol <X6670>
collating-symbol <X6672>
collating-symbol <X6674>
collating-symbol <X6676>
collating-symbol <X6678>
collating-symbol <X667A>
collating-symbol <X667C>
collating-symbol <X667E>
collating-symbol <X6680>
collating-symbol <X6682>
collating-symbol <X6684>
collating-symbol <X6686>
collating-symbol <X6688>
collating-symbol <X668A>
collating-symbol <X668C>
collating-symbol <X668E>
collating-symbol <X6696>
collating-symbol <X6698>
collating-symbol <X669A>
collating-symbol <X669C>
collating-symbol <X669E>
collating-symbol <X66A0>
collating-symbol <X66A2>
collating-symbol <X66A4>
collating-symbol <X66A6>
collating-symbol <X66A8>
collating-symbol <X66AA>
collating-symbol <X66AC>
collating-symbol <X66AE>
collating-symbol <X66B0>
collating-symbol <X66B2>
collating-symbol <X66B4>
collating-symbol <X66B6>
collating-symbol <X66B8>
collating-symbol <X66BA>
collating-symbol <X66BC>
collating-symbol <X66BE>
collating-symbol <X66C0>
collating-symbol <X66C2>
collating-symbol <X66C4>
collating-symbol <X66C6>
collating-symbol <X66C8>
collating-symbol <X66CA>
order_start forward;forward;forward;forward
* collation weights in order
<X01>
<X05>
<X20>
<X46>
<X88>
<X8A>
<X9C>
<XA0>
<XC0>
<XC6>
<XE7>
<XF1>
<X0200>
<X0300>
<X0304>
<X0306>
<X0308>
<X030A>
<X030C>
<X0400>
<X050A>
<X050E>
<X0600>
<X0722>
<X072C>
<X0750>
<X0758>
<X0800>
<X0968>
<X0976>
<X098C>
<X098E>
<X0990>
<X0992>
<X0994>
<X0996>
<X0A7A>
<X0A7C>
<X0A86>
<X0A88>
<X0A8A>
<X0A8E>
<X0A90>
<X0B08>
<X0B0A>
<X0B0C>
<X0B0E>
<X0C04>
<X0C0A>
<X0C63>
<X0C6B>
<X0C6D>
<X0C6F>
<X0C73>
<X0C77>
<X0CFC>
<X0D26>
<X1200>
<X1400>
<X1600>
<X1800>
<X1A00>
<X1C00>
<X1E00>
<X2000>
<X2200>
<X2400>
<X2900>
<X2B00>
<X2D00>
<X2F00>
<X3100>
<X3300>
<X3500>
<X3700>
<X3900>
<X3B00>
<X3D00>
<X3F00>
<X4100>
<X4300>
<X4500>
<X4700>
<X4900>
<X4B00>
<X4D00>
<X4F00>
<X5100>
<X5300>
<X5500>
<X5700>
<X5900>
<X5B00>
<X6606>
<X6607>
<X6608>
<X660A>
<X660C>
<X660E>
<X6610>
<X6612>
<X6614>
<X6616>
<X6618>
<X661A>
<X661C>
<X661E>
<X6620>
<X6622>
<X6624>
<X6626>
<X6628>
<X662A>
<X662C>
<X662E>
<X6630>
<X6632>
<X6634>
<X6636>
<X6638>
<X663A>
<X663C>
<X663E>
<X6640>
<X6642>
<X6644>
<X6646>
<X6648>
<X664A>
<X664C>
<X664E>
<X6650>
<X6652>
<X6654>
<X6656>
<X6658>
<X665A>
<X665C>
<X665E>
<X6660>
<X6662>
<X6664>
<X6666>
<X6668>
<X666A>
<X666C>
<X666E>
<X6670>
<X6672>
<X6674>
<X6676>
<X6678>
<X667A>
<X667C>
<X667E>
<X6680>
<X6682>
<X6684>
<X6686>
<X6688>
<X668A>
<X668C>
<X668E>
<X6696>
<X6698>
<X669A>
<X669C>
<X669E>
<X66A0>
<X66A2>
<X66A4>
<X66A6>
<X66A8>
<X66AA>
<X66AC>
<X66AE>
<X66B0>
<X66B2>
<X66B4>
<X66B6>
<X66B8>
<X66BA>
<X66BC>
<X66BE>
<X66C0>
<X66C2>
<X66C4>
<X66C6>
<X66C8>
<X66CA>
* assignment of characters to weights
<NULL> IGNORE;IGNORE;IGNORE;<NULL>
<START_OF_HEADING> IGNORE;IGNORE;IGNORE;<START_OF_HEADING>
<START_OF_TEXT> IGNORE;IGNORE;IGNORE;<START_OF_TEXT>
<END_OF_TEXT> IGNORE;IGNORE;IGNORE;<END_OF_TEXT>
<END_OF_TRANSMISSION> IGNORE;IGNORE;IGNORE;<END_OF_TRANSMISSION>
<ENQUIRY> IGNORE;IGNORE;IGNORE;<ENQUIRY>
<ACKNOWLEDGE> IGNORE;IGNORE;IGNORE;<ACKNOWLEDGE>
<ALERT> IGNORE;IGNORE;IGNORE;<ALERT>
<BACKSPACE> IGNORE;IGNORE;IGNORE;<BACKSPACE>
<SHIFT_OUT> IGNORE;IGNORE;IGNORE;<SHIFT_OUT>
<SHIFT_IN> IGNORE;IGNORE;IGNORE;<SHIFT_IN>
<DATA_LINK_ESCAPE> IGNORE;IGNORE;IGNORE;<DATA_LINK_ESCAPE>
<DEVICE_CONTROL_ONE> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_ONE>
<DEVICE_CONTROL_TWO> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_TWO>
<DEVICE_CONTROL_THREE> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_THREE>
<DEVICE_CONTROL_FOUR> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_FOUR>
<NEGATIVE_ACKNOWLEDGE> IGNORE;IGNORE;IGNORE;<NEGATIVE_ACKNOWLEDGE>
<SYNCHRONOUS_IDLE> IGNORE;IGNORE;IGNORE;<SYNCHRONOUS_IDLE>
<END_OF_TRANSMISSION_BLOCK> IGNORE;IGNORE;IGNORE;<END_OF_TRANSMISSION_BLOCK>
<CANCEL> IGNORE;IGNORE;IGNORE;<CANCEL>
<END_OF_MEDIUM> IGNORE;IGNORE;IGNORE;<END_OF_MEDIUM>
<SUBSTITUTE> IGNORE;IGNORE;IGNORE;<SUBSTITUTE>
<ESCAPE> IGNORE;IGNORE;IGNORE;<ESCAPE>
<INFORMATION_SEPARATOR_FOUR> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_FOUR>
<INFORMATION_SEPARATOR_THREE> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_THREE>
<INFORMATION_SEPARATOR_TWO> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_TWO>
<INFORMATION_SEPARATOR_ONE> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_ONE>
<DELETE> IGNORE;IGNORE;IGNORE;<DELETE>
<COMBINING_DEVANAGARI_DIGIT_ZERO> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_ZERO>
<COMBINING_DEVANAGARI_DIGIT_ONE> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_ONE>
<COMBINING_DEVANAGARI_DIGIT_TWO> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_TWO>
<COMBINING_DEVANAGARI_DIGIT_THREE> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_THREE>
<COMBINING_DEVANAGARI_DIGIT_FOUR> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_FOUR>
<COMBINING_DEVANAGARI_DIGIT_FIVE> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_FIVE>
<COMBINING_DEVANAGARI_DIGIT_SIX> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_SIX>
<COMBINING_DEVANAGARI_DIGIT_SEVEN> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_SEVEN>
<COMBINING_DEVANAGARI_DIGIT_EIGHT> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_EIGHT>
<COMBINING_DEVANAGARI_DIGIT_NINE> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_DIGIT_NINE>
<COMBINING_DEVANAGARI_LETTER_A> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_LETTER_A>
<COMBINING_DEVANAGARI_LETTER_U> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_LETTER_U>
<COMBINING_DEVANAGARI_LETTER_KA> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_LETTER_KA>
<COMBINING_DEVANAGARI_LETTER_NA> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_LETTER_NA>
<COMBINING_DEVANAGARI_LETTER_PA> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_LETTER_PA>
<COMBINING_DEVANAGARI_LETTER_RA> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_LETTER_RA>
<COMBINING_DEVANAGARI_LETTER_VI> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_LETTER_VI>
<COMBINING_DEVANAGARI_SIGN_AVAGRAHA> IGNORE;IGNORE;IGNORE;<COMBINING_DEVANAGARI_SIGN_AVAGRAHA>
<DEVANAGARI_ACUTE_ACCENT> IGNORE;<X88>;<X05>;<DEVANAGARI_ACUTE_ACCENT>
<DEVANAGARI_GRAVE_ACCENT> IGNORE;<X8A>;<X05>;<DEVANAGARI_GRAVE_ACCENT>
<DEVANAGARI_SIGN_NUKTA> IGNORE;"<XF1><XC6>";"<X05><XC0>";<DEVANAGARI_SIGN_NUKTA>
<DEVANAGARI_SIGN_INVERTED_CANDRABINDU> IGNORE;"<XF1><XE7>";"<X05><XC0>";<DEVANAGARI_SIGN_INVERTED_CANDRABINDU>
<tab> <X0304>;<X05>;<X05>;<tab>
<newline> <X0306>;<X05>;<X05>;<newline>
<vertical-tab> <X0308>;<X05>;<X05>;<vertical-tab>
<form-feed> <X030A>;<X05>;<X05>;<form-feed>
<carriage-return> <X030C>;<X05>;<X05>;<carriage-return>
<space> <X0400>;<X05>;<X05>;<space>
<LOW_LINE> <X050A>;<X05>;<X05>;<LOW_LINE>
<HYPHEN-MINUS> <X050E>;<X05>;<X05>;<HYPHEN-MINUS>
<COMMA> <X0600>;<X05>;<X05>;<COMMA>
<SEMICOLON> <X0722>;<X05>;<X05>;<SEMICOLON>
<COLON> <X072C>;<X05>;<X05>;<COLON>
<EXCLAMATION_MARK> <X0750>;<X05>;<X05>;<EXCLAMATION_MARK>
<QUESTION_MARK> <X0758>;<X05>;<X05>;<QUESTION_MARK>
<FULL_STOP> <X0800>;<X05>;<X05>;<FULL_STOP>
<APOSTROPHE> <X0968>;<X05>;<X05>;<APOSTROPHE>
<QUOTATION_MARK> <X0976>;<X05>;<X05>;<QUOTATION_MARK>
<LEFT_PARENTHESIS> <X098C>;<X05>;<X05>;<LEFT_PARENTHESIS>
<RIGHT_PARENTHESIS> <X098E>;<X05>;<X05>;<RIGHT_PARENTHESIS>
<LEFT_SQUARE_BRACKET> <X0990>;<X05>;<X05>;<LEFT_SQUARE_BRACKET>
<RIGHT_SQUARE_BRACKET> <X0992>;<X05>;<X05>;<RIGHT_SQUARE_BRACKET>
<LEFT_CURLY_BRACKET> <X0994>;<X05>;<X05>;<LEFT_CURLY_BRACKET>
<RIGHT_CURLY_BRACKET> <X0996>;<X05>;<X05>;<RIGHT_CURLY_BRACKET>
<COMMERCIAL_AT> <X0A7A>;<X05>;<X05>;<COMMERCIAL_AT>
<ASTERISK> <X0A7C>;<X05>;<X05>;<ASTERISK>
<SOLIDUS> <X0A86>;<X05>;<X05>;<SOLIDUS>
<REVERSE_SOLIDUS> <X0A88>;<X05>;<X05>;<REVERSE_SOLIDUS>
<AMPERSAND> <X0A8A>;<X05>;<X05>;<AMPERSAND>
<NUMBER_SIGN> <X0A8E>;<X05>;<X05>;<NUMBER_SIGN>
<PERCENT_SIGN> <X0A90>;<X05>;<X05>;<PERCENT_SIGN>
<DEVANAGARI_ABBREVIATION_SIGN> <X0B08>;<X05>;<X05>;<DEVANAGARI_ABBREVIATION_SIGN>
<DEVANAGARI_SIGN_PUSHPIKA> <X0B0A>;<X05>;<X05>;<DEVANAGARI_SIGN_PUSHPIKA>
<DEVANAGARI_GAP_FILLER> <X0B0C>;<X05>;<X05>;<DEVANAGARI_GAP_FILLER>
<DEVANAGARI_CARET> <X0B0E>;<X05>;<X05>;<DEVANAGARI_CARET>
<GRAVE_ACCENT> <X0C04>;<X05>;<X05>;<GRAVE_ACCENT>
<CIRCUMFLEX_ACCENT> <X0C0A>;<X05>;<X05>;<CIRCUMFLEX_ACCENT>
<PLUS_SIGN> <X0C63>;<X05>;<X05>;<PLUS_SIGN>
<LESS-THAN_SIGN> <X0C6B>;<X05>;<X05>;<LESS-THAN_SIGN>
<EQUALS_SIGN> <X0C6D>;<X05>;<X05>;<EQUALS_SIGN>
<GREATER-THAN_SIGN> <X0C6F>;<X05>;<X05>;<GREATER-THAN_SIGN>
<VERTICAL_LINE> <X0C73>;<X05>;<X05>;<VERTICAL_LINE>
<TILDE> <X0C77>;<X05>;<X05>;<TILDE>
<DEVANAGARI_SIGN_HIGH_SPACING_DOT> <X0CFC>;<X05>;<X05>;<DEVANAGARI_SIGN_HIGH_SPACING_DOT>
<DOLLAR_SIGN> <X0D26>;<X05>;<X05>;<DOLLAR_SIGN>
<zero> <X1200>;<X05>;<X05>;<zero>
<DEVANAGARI_DIGIT_ZERO> <X1200>;<X05>;<X05>;<DEVANAGARI_DIGIT_ZERO>
<one> <X1400>;<X05>;<X05>;<one>
<DEVANAGARI_DIGIT_ONE> <X1400>;<X05>;<X05>;<DEVANAGARI_DIGIT_ONE>
<two> <X1600>;<X05>;<X05>;<two>
<DEVANAGARI_DIGIT_TWO> <X1600>;<X05>;<X05>;<DEVANAGARI_DIGIT_TWO>
<three> <X1800>;<X05>;<X05>;<three>
<DEVANAGARI_DIGIT_THREE> <X1800>;<X05>;<X05>;<DEVANAGARI_DIGIT_THREE>
<four> <X1A00>;<X05>;<X05>;<four>
<DEVANAGARI_DIGIT_FOUR> <X1A00>;<X05>;<X05>;<DEVANAGARI_DIGIT_FOUR>
<five> <X1C00>;<X05>;<X05>;<five>
<DEVANAGARI_DIGIT_FIVE> <X1C00>;<X05>;<X05>;<DEVANAGARI_DIGIT_FIVE>
<six> <X1E00>;<X05>;<X05>;<six>
<DEVANAGARI_DIGIT_SIX> <X1E00>;<X05>;<X05>;<DEVANAGARI_DIGIT_SIX>
<seven> <X2000>;<X05>;<X05>;<seven>
<DEVANAGARI_DIGIT_SEVEN> <X2000>;<X05>;<X05>;<DEVANAGARI_DIGIT_SEVEN>
<eight> <X2200>;<X05>;<X05>;<eight>
<DEVANAGARI_DIGIT_EIGHT> <X2200>;<X05>;<X05>;<DEVANAGARI_DIGIT_EIGHT>
<nine> <X2400>;<X05>;<X05>;<nine>
<DEVANAGARI_DIGIT_NINE> <X2400>;<X05>;<X05>;<DEVANAGARI_DIGIT_NINE>
<a> <X2900>;<X05>;<X05>;<a>
<A> <X2900>;<X05>;<X9C>;<A>
<b> <X2B00>;<X05>;<X05>;<b>
<B> <X2B00>;<X05>;<X9C>;<B>
<c> <X2D00>;<X05>;<X05>;<c>
<C> <X2D00>;<X05>;<X9C>;<C>
<d> <X2F00>;<X05>;<X05>;<d>
<D> <X2F00>;<X05>;<X9C>;<D>
<e> <X3100>;<X05>;<X05>;<e>
<E> <X3100>;<X05>;<X9C>;<E>
<f> <X3300>;<X05>;<X05>;<f>
<F> <X3300>;<X05>;<X9C>;<F>
<g> <X3500>;<X05>;<X05>;<g>
<G> <X3500>;<X05>;<X9C>;<G>
<h> <X3700>;<X05>;<X05>;<h>
<H> <X3700>;<X05>;<X9C>;<H>
<i> <X3900>;<X05>;<X05>;<i>
<I> <X3900>;<X05>;<X9C>;<I>
<j> <X3B00>;<X05>;<X05>;<j>
<J> <X3B00>;<X05>;<X9C>;<J>
<k> <X3D00>;<X05>;<X05>;<k>
<K> <X3D00>;<X05>;<X9C>;<K>
<l> <X3F00>;<X05>;<X05>;<l>
<L> <X3F00>;<X05>;<X9C>;<L>
<m> <X4100>;<X05>;<X05>;<m>
<M> <X4100>;<X05>;<X9C>;<M>
<n> <X4300>;<X05>;<X05>;<n>
<N> <X4300>;<X05>;<X9C>;<N>
<o> <X4500>;<X05>;<X05>;<o>
<O> <X4500>;<X05>;<X9C>;<O>
<p> <X4700>;<X05>;<X05>;<p>
<P> <X4700>;<X05>;<X9C>;<P>
<q> <X4900>;<X05>;<X05>;<q>
<Q> <X4900>;<X05>;<XA0>;<Q>
<r> <X4B00>;<X05>;<X05>;<r>
<R> <X4B00>;<X05>;<X9C>;<R>
<s> <X4D00>;<X05>;<X05>;<s>
<S> <X4D00>;<X05>;<X9C>;<S>
<t> <X4F00>;<X05>;<X05>;<t>
<T> <X4F00>;<X05>;<X9C>;<T>
<u> <X5100>;<X05>;<X05>;<u>
<U> <X5100>;<X05>;<X9C>;<U>
<v> <X5300>;<X05>;<X05>;<v>
<V> <X5300>;<X05>;<X9C>;<V>
<w> <X5500>;<X05>;<X05>;<w>
<W> <X5500>;<X05>;<XA0>;<W>
<x> <X5700>;<X05>;<X05>;<x>
<X> <X5700>;<X05>;<X9C>;<X>
<y> <X5900>;<X05>;<X05>;<y>
<Y> <X5900>;<X05>;<X9C>;<Y>
<z> <X5B00>;<X05>;<X05>;<z>
<Z> <X5B00>;<X05>;<X9C>;<Z>
<DEVANAGARI_OM> <X6606>;<X05>;<X05>;<DEVANAGARI_OM>
<DEVANAGARI_SIGN_ANUSVARA> "<X6607><X0200>";<X05>;"<X05><XC0>";<DEVANAGARI_SIGN_ANUSVARA>
<DEVANAGARI_SIGN_CANDRABINDU> "<X6607><X0200>";<X46>;"<X05><XC0>";<DEVANAGARI_SIGN_CANDRABINDU>
<DEVANAGARI_SIGN_VISARGA> "<X6607><X0300>";<X05>;"<X05><XC0>";<DEVANAGARI_SIGN_VISARGA>
<DEVANAGARI_LETTER_CANDRA_A> <X6608>;<X05>;<X05>;<DEVANAGARI_LETTER_CANDRA_A>
<DEVANAGARI_LETTER_SHORT_A> <X660A>;<X05>;<X05>;<DEVANAGARI_LETTER_SHORT_A>
<DEVANAGARI_LETTER_A> <X660C>;<X05>;<X05>;<DEVANAGARI_LETTER_A>
<DEVANAGARI_LETTER_AA> <X660E>;<X05>;<X05>;<DEVANAGARI_LETTER_AA>
<DEVANAGARI_LETTER_OE> <X6610>;<X05>;<X05>;<DEVANAGARI_LETTER_OE>
<DEVANAGARI_LETTER_OOE> <X6612>;<X05>;<X05>;<DEVANAGARI_LETTER_OOE>
<DEVANAGARI_LETTER_AW> <X6614>;<X05>;<X05>;<DEVANAGARI_LETTER_AW>
<DEVANAGARI_LETTER_UE> <X6616>;<X05>;<X05>;<DEVANAGARI_LETTER_UE>
<DEVANAGARI_LETTER_UUE> <X6618>;<X05>;<X05>;<DEVANAGARI_LETTER_UUE>
<DEVANAGARI_LETTER_I> <X661A>;<X05>;<X05>;<DEVANAGARI_LETTER_I>
<DEVANAGARI_LETTER_II> <X661C>;<X05>;<X05>;<DEVANAGARI_LETTER_II>
<DEVANAGARI_LETTER_U> <X661E>;<X05>;<X05>;<DEVANAGARI_LETTER_U>
<DEVANAGARI_LETTER_UU> <X6620>;<X05>;<X05>;<DEVANAGARI_LETTER_UU>
<DEVANAGARI_LETTER_VOCALIC_R> <X6622>;<X05>;<X05>;<DEVANAGARI_LETTER_VOCALIC_R>
<DEVANAGARI_LETTER_VOCALIC_RR> <X6624>;<X05>;<X05>;<DEVANAGARI_LETTER_VOCALIC_RR>
<DEVANAGARI_LETTER_VOCALIC_L> <X6626>;<X05>;<X05>;<DEVANAGARI_LETTER_VOCALIC_L>
<DEVANAGARI_LETTER_VOCALIC_LL> <X6628>;<X05>;<X05>;<DEVANAGARI_LETTER_VOCALIC_LL>
<DEVANAGARI_LETTER_CANDRA_E> <X662A>;<X05>;<X05>;<DEVANAGARI_LETTER_CANDRA_E>
<DEVANAGARI_LETTER_SHORT_E> <X662C>;<X05>;<X05>;<DEVANAGARI_LETTER_SHORT_E>
<DEVANAGARI_LETTER_E> <X662E>;<X05>;<X05>;<DEVANAGARI_LETTER_E>
<DEVANAGARI_LETTER_AI> <X6630>;<X05>;<X05>;<DEVANAGARI_LETTER_AI>
<DEVANAGARI_LETTER_CANDRA_O> <X6632>;<X05>;<X05>;<DEVANAGARI_LETTER_CANDRA_O>
<DEVANAGARI_LETTER_SHORT_O> <X6634>;<X05>;<X05>;<DEVANAGARI_LETTER_SHORT_O>
<DEVANAGARI_LETTER_O> <X6636>;<X05>;<X05>;<DEVANAGARI_LETTER_O>
<DEVANAGARI_LETTER_AU> <X6638>;<X05>;<X05>;<DEVANAGARI_LETTER_AU>
<DEVANAGARI_LETTER_KA> <X663A>;<X05>;<X05>;<DEVANAGARI_LETTER_KA>
<DEVANAGARI_LETTER_QA> <X663A>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_QA>
<DEVANAGARI_LETTER_KHA> <X663C>;<X05>;<X05>;<DEVANAGARI_LETTER_KHA>
<DEVANAGARI_LETTER_KHHA> <X663C>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_KHHA>
<DEVANAGARI_LETTER_GA> <X663E>;<X05>;<X05>;<DEVANAGARI_LETTER_GA>
<DEVANAGARI_LETTER_GHHA> <X663E>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_GHHA>
<DEVANAGARI_LETTER_GGA> <X6640>;<X05>;<X05>;<DEVANAGARI_LETTER_GGA>
<DEVANAGARI_LETTER_GHA> <X6642>;<X05>;<X05>;<DEVANAGARI_LETTER_GHA>
<DEVANAGARI_LETTER_NGA> <X6644>;<X05>;<X05>;<DEVANAGARI_LETTER_NGA>
<DEVANAGARI_LETTER_CA> <X6646>;<X05>;<X05>;<DEVANAGARI_LETTER_CA>
<DEVANAGARI_LETTER_CHA> <X6648>;<X05>;<X05>;<DEVANAGARI_LETTER_CHA>
<DEVANAGARI_LETTER_JA> <X664A>;<X05>;<X05>;<DEVANAGARI_LETTER_JA>
<DEVANAGARI_LETTER_ZA> <X664A>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_ZA>
<DEVANAGARI_LETTER_ZHA> <X664C>;<X05>;<X05>;<DEVANAGARI_LETTER_ZHA>
<DEVANAGARI_LETTER_JJA> <X664E>;<X05>;<X05>;<DEVANAGARI_LETTER_JJA>
<DEVANAGARI_LETTER_JHA> <X6650>;<X05>;<X05>;<DEVANAGARI_LETTER_JHA>
<DEVANAGARI_LETTER_NYA> <X6652>;<X05>;<X05>;<DEVANAGARI_LETTER_NYA>
<DEVANAGARI_LETTER_TTA> <X6654>;<X05>;<X05>;<DEVANAGARI_LETTER_TTA>
<DEVANAGARI_LETTER_TTHA> <X6656>;<X05>;<X05>;<DEVANAGARI_LETTER_TTHA>
<DEVANAGARI_LETTER_MARWARI_DDA> <X6658>;<X05>;<X05>;<DEVANAGARI_LETTER_MARWARI_DDA>
<DEVANAGARI_LETTER_DDA> <X665A>;<X05>;<X05>;<DEVANAGARI_LETTER_DDA>
<DEVANAGARI_LETTER_DDDHA> <X665A>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_DDDHA>
<DEVANAGARI_LETTER_DDDA> <X665C>;<X05>;<X05>;<DEVANAGARI_LETTER_DDDA>
<DEVANAGARI_LETTER_DDHA> <X665E>;<X05>;<X05>;<DEVANAGARI_LETTER_DDHA>
<DEVANAGARI_LETTER_RHA> <X665E>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_RHA>
<DEVANAGARI_LETTER_NNA> <X6660>;<X05>;<X05>;<DEVANAGARI_LETTER_NNA>
<DEVANAGARI_LETTER_TA> <X6662>;<X05>;<X05>;<DEVANAGARI_LETTER_TA>
<DEVANAGARI_LETTER_THA> <X6664>;<X05>;<X05>;<DEVANAGARI_LETTER_THA>
<DEVANAGARI_LETTER_DA> <X6666>;<X05>;<X05>;<DEVANAGARI_LETTER_DA>
<DEVANAGARI_LETTER_DHA> <X6668>;<X05>;<X05>;<DEVANAGARI_LETTER_DHA>
<DEVANAGARI_LETTER_NA> <X666A>;<X05>;<X05>;<DEVANAGARI_LETTER_NA>
<DEVANAGARI_LETTER_NNNA> <X666A>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_NNNA>
<DEVANAGARI_LETTER_PA> <X666C>;<X05>;<X05>;<DEVANAGARI_LETTER_PA>
<DEVANAGARI_LETTER_PHA> <X666E>;<X05>;<X05>;<DEVANAGARI_LETTER_PHA>
<DEVANAGARI_LETTER_FA> <X666E>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_FA>
<DEVANAGARI_LETTER_BA> <X6670>;<X05>;<X05>;<DEVANAGARI_LETTER_BA>
<DEVANAGARI_LETTER_BBA> <X6672>;<X05>;<X05>;<DEVANAGARI_LETTER_BBA>
<DEVANAGARI_LETTER_BHA> <X6674>;<X05>;<X05>;<DEVANAGARI_LETTER_BHA>
<DEVANAGARI_LETTER_MA> <X6676>;<X05>;<X05>;<DEVANAGARI_LETTER_MA>
<DEVANAGARI_LETTER_YA> <X6678>;<X05>;<X05>;<DEVANAGARI_LETTER_YA>
<DEVANAGARI_LETTER_YYA> <X6678>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_YYA>
<DEVANAGARI_LETTER_HEAVY_YA> <X667A>;<X05>;<X05>;<DEVANAGARI_LETTER_HEAVY_YA>
<DEVANAGARI_LETTER_RA> <X667C>;<X05>;<X05>;<DEVANAGARI_LETTER_RA>
<DEVANAGARI_LETTER_RRA> <X667C>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_RRA>
<DEVANAGARI_LETTER_LA> <X667E>;<X05>;<X05>;<DEVANAGARI_LETTER_LA>
<DEVANAGARI_LETTER_LLA> <X6680>;<X05>;<X05>;<DEVANAGARI_LETTER_LLA>
<DEVANAGARI_LETTER_LLLA> <X6680>;"<X05><XF1><XC6>";"<X05><X05><XC0>";<DEVANAGARI_LETTER_LLLA>
<DEVANAGARI_LETTER_VA> <X6682>;<X05>;<X05>;<DEVANAGARI_LETTER_VA>
<DEVANAGARI_LETTER_SHA> <X6684>;<X05>;<X05>;<DEVANAGARI_LETTER_SHA>
<DEVANAGARI_LETTER_SSA> <X6686>;<X05>;<X05>;<DEVANAGARI_LETTER_SSA>
<DEVANAGARI_LETTER_SA> <X6688>;<X05>;<X05>;<DEVANAGARI_LETTER_SA>
<DEVANAGARI_LETTER_HA> <X668A>;<X05>;<X05>;<DEVANAGARI_LETTER_HA>
<DEVANAGARI_SIGN_AVAGRAHA> <X668C>;<X05>;<X05>;<DEVANAGARI_SIGN_AVAGRAHA>
<DEVANAGARI_LETTER_GLOTTAL_STOP> <X668E>;<X05>;<X05>;<DEVANAGARI_LETTER_GLOTTAL_STOP>
<DEVANAGARI_SIGN_SPACING_CANDRABINDU> <X6696>;<X05>;<X05>;<DEVANAGARI_SIGN_SPACING_CANDRABINDU>
<DEVANAGARI_SIGN_CANDRABINDU_VIRAMA> <X6696>;<X05>;<X20>;<DEVANAGARI_SIGN_CANDRABINDU_VIRAMA>
<DEVANAGARI_SIGN_DOUBLE_CANDRABINDU_VIRAMA> <X6696>;<X05>;<X20>;<DEVANAGARI_SIGN_DOUBLE_CANDRABINDU_VIRAMA>
<DEVANAGARI_SIGN_CANDRABINDU_TWO> <X6696>;<X05>;<X20>;<DEVANAGARI_SIGN_CANDRABINDU_TWO>
<DEVANAGARI_SIGN_CANDRABINDU_THREE> <X6696>;<X05>;<X20>;<DEVANAGARI_SIGN_CANDRABINDU_THREE>
<DEVANAGARI_SIGN_CANDRABINDU_AVAGRAHA> <X6696>;<X05>;<X20>;<DEVANAGARI_SIGN_CANDRABINDU_AVAGRAHA>
<DEVANAGARI_HEADSTROKE> <X6698>;<X05>;<X05>;<DEVANAGARI_HEADSTROKE>
<DEVANAGARI_VOWEL_SIGN_AA> <X669A>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_AA>
<DEVANAGARI_VOWEL_SIGN_OE> <X669C>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_OE>
<DEVANAGARI_VOWEL_SIGN_OOE> <X669E>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_OOE>
<DEVANAGARI_VOWEL_SIGN_AW> <X66A0>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_AW>
<DEVANAGARI_VOWEL_SIGN_UE> <X66A2>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_UE>
<DEVANAGARI_VOWEL_SIGN_UUE> <X66A4>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_UUE>
<DEVANAGARI_VOWEL_SIGN_I> <X66A6>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_I>
<DEVANAGARI_VOWEL_SIGN_II> <X66A8>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_II>
<DEVANAGARI_VOWEL_SIGN_U> <X66AA>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_U>
<DEVANAGARI_VOWEL_SIGN_UU> <X66AC>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_UU>
<DEVANAGARI_VOWEL_SIGN_VOCALIC_R> <X66AE>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_VOCALIC_R>
<DEVANAGARI_VOWEL_SIGN_VOCALIC_RR> <X66B0>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_VOCALIC_RR>
<DEVANAGARI_VOWEL_SIGN_VOCALIC_L> <X66B2>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_VOCALIC_L>
<DEVANAGARI_VOWEL_SIGN_VOCALIC_LL> <X66B4>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_VOCALIC_LL>
<DEVANAGARI_VOWEL_SIGN_CANDRA_E> <X66B6>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_CANDRA_E>
<DEVANAGARI_VOWEL_SIGN_CANDRA_LONG_E> <X66B8>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_CANDRA_LONG_E>
<DEVANAGARI_VOWEL_SIGN_SHORT_E> <X66BA>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_SHORT_E>
<DEVANAGARI_VOWEL_SIGN_E> <X66BC>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_E>
<DEVANAGARI_VOWEL_SIGN_PRISHTHAMATRA_E> <X66BE>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_PRISHTHAMATRA_E>
<DEVANAGARI_VOWEL_SIGN_AI> <X66C0>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_AI>
<DEVANAGARI_VOWEL_SIGN_CANDRA_O> <X66C2>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_CANDRA_O>
<DEVANAGARI_VOWEL_SIGN_SHORT_O> <X66C4>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_SHORT_O>
<DEVANAGARI_VOWEL_SIGN_O> <X66C6>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_O>
<DEVANAGARI_VOWEL_SIGN_AU> <X66C8>;<X05>;<X05>;<DEVANAGARI_VOWEL_SIGN_AU>
<DEVANAGARI_SIGN_VIRAMA> <X66CA>;<X05>;<X05>;<DEVANAGARI_SIGN_VIRAMA>
UNDEFINED IGNORE;IGNORE;IGNORE;...
order_end
END LC_COLLATE

View File

@ -1,39 +0,0 @@
#
# Croatian collation sequence
# 2007-01-29 numisemis at yahoo dot com
#
# $FreeBSD$
#
charmap map.ISO8859-2
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;\";<Nb>;\
<Cu>;<DO>;\
%;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
# digits
0;...;9;\
#
:;\;;\<;=;>;?;<SE>;<At>;\
# capital
(A,<A'>,<A/>>,<A:>,<A;>,<A(>);\
B;(C,<C,>);<C<>;<C'>;(D,<D<>);<D//>;(E,<E'>,<E:>,<E;>,<E<>);\
F;G;H;(I,<I'>,<I/>>);\
J;K;(L,<L//>,<L<>,<L'>);M;(N,<N'>,<N<>);(O,<O'>,<O/>>,<O:>,<O">);\
P;Q;(R,<R'>,<R<>);(S,<S'>,<S,>);<S<>;(T,<T<>,<T,>);\
(U,<U'>,<U:>,<U0>,<U">);\
V;W;X;(Y,<Y'>);(Z,<Z'>,<Z.>);<Z<>;\
#
[;\\;];^;<':>;<'">;<'<>;<'(>;_;<''>;`;\
# small
(a,<a'>,<a/>>,<a:>,<a;>,<a(>);\
b;(c,<c,>);<c<>;<c'>;(d,<d<>);<d//>;(e,<e'>,<e:>,<e;>,<e<>);\
f;g;h;(i,<i'>,<i/>>);\
j;k;(l,<l//>,<l<>,<l'>);m;(n,<n'>,<n<>);(o,<o'>,<o/>>,<o:>,<o">);\
p;q;(r,<r'>,<r<>);(s,<s'>,<s,>,<ss>);<s<>;(t,<t<>,<t,>);\
(u,<u'>,<u:>,<u0>,<u">);\
v;w;x;(y,<y'>);(z,<z'>,<z.>);<z<>;\
#
\{;|;\};~;<DG>;<DT>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,31 +0,0 @@
# $FreeBSD$
#
# LC_COLLATE source for Armenian/ARMSCII-8 (backward compatible with ASCII)
# Made available by Vahe Khachikyan <vahe@khachikyan.de>
#
charmap map.ARMSCII-8
substitute <armew> with "»õ"
order \
# controls
<armeternity>;<NU>;...;<US>;\x80;...;\xA0;\
#
<SP>;(!,<armexclam>,<armaccent>);(\",<armquotleft>,<armquotright>);<Nb>;\
<DO>;<armemdash>;\
%;&;(',<armapostrophe>);(\(,<armparenleft>);(\),<armparenright>);*;+;\
(\,,<armcomma>);(-,<armendash>);<armyentamna>;<armellipsis>;(.,<armfullstop>);/;\
# digits
0;...;9;\
#
(:,<armdot>);<armsep>;\;;\<;=;>;(?,<armquestion>);<At>;\
# capital
A;...;Z;\
#
[;\\;];^;_;`;\
# small
a;...;z;\
# remaining punktuation etc
\{;|;\};~;<DT>;\
# Armenian
<Armayb>;...;<armfe>;\
# and the rest
\xff

View File

@ -0,0 +1,516 @@
# Warning: Do not edit. This file is automatically extracted from the
# tools in /usr/src/tools/tools/locale. The data is obtained from the
# CLDR project, obtained from http://cldr.unicode.org/
# -----------------------------------------------------------------------------
comment_char *
escape_char /
LC_COLLATE
*************
collating-element <ARMENIAN_CAPITAL_LETTER_ECH-ARMENIAN_SMALL_LETTER_YIWN> from "<ARMENIAN_CAPITAL_LETTER_ECH><ARMENIAN_SMALL_LETTER_YIWN>"
* Define collation weights as symbols
collating-symbol <X01>
collating-symbol <X05>
collating-symbol <X20>
collating-symbol <X46>
collating-symbol <X9C>
collating-symbol <XA0>
collating-symbol <XAE>
collating-symbol <XC0>
collating-symbol <X0304>
collating-symbol <X0306>
collating-symbol <X0308>
collating-symbol <X030A>
collating-symbol <X030C>
collating-symbol <X0400>
collating-symbol <X050A>
collating-symbol <X050E>
collating-symbol <X0510>
collating-symbol <X0600>
collating-symbol <X070C>
collating-symbol <X0722>
collating-symbol <X072C>
collating-symbol <X0750>
collating-symbol <X0754>
collating-symbol <X0758>
collating-symbol <X075E>
collating-symbol <X0800>
collating-symbol <X0900>
collating-symbol <X0968>
collating-symbol <X0976>
collating-symbol <X098C>
collating-symbol <X098E>
collating-symbol <X0990>
collating-symbol <X0992>
collating-symbol <X0994>
collating-symbol <X0996>
collating-symbol <X0A7A>
collating-symbol <X0A7C>
collating-symbol <X0A86>
collating-symbol <X0A88>
collating-symbol <X0A8A>
collating-symbol <X0A8E>
collating-symbol <X0A90>
collating-symbol <X0AF2>
collating-symbol <X0AF4>
collating-symbol <X0AF6>
collating-symbol <X0C04>
collating-symbol <X0C0A>
collating-symbol <X0C55>
collating-symbol <X0C63>
collating-symbol <X0C6B>
collating-symbol <X0C6D>
collating-symbol <X0C6F>
collating-symbol <X0C73>
collating-symbol <X0C77>
collating-symbol <X0D26>
collating-symbol <X0D2C>
collating-symbol <X1000>
collating-symbol <X1200>
collating-symbol <X1400>
collating-symbol <X1600>
collating-symbol <X1800>
collating-symbol <X1A00>
collating-symbol <X1C00>
collating-symbol <X1E00>
collating-symbol <X2000>
collating-symbol <X2200>
collating-symbol <X2400>
collating-symbol <X2900>
collating-symbol <X2B00>
collating-symbol <X2D00>
collating-symbol <X2F00>
collating-symbol <X3100>
collating-symbol <X3300>
collating-symbol <X3500>
collating-symbol <X3700>
collating-symbol <X3900>
collating-symbol <X3B00>
collating-symbol <X3D00>
collating-symbol <X3F00>
collating-symbol <X4100>
collating-symbol <X4300>
collating-symbol <X4500>
collating-symbol <X4700>
collating-symbol <X4900>
collating-symbol <X4B00>
collating-symbol <X4D00>
collating-symbol <X4F00>
collating-symbol <X5100>
collating-symbol <X5300>
collating-symbol <X5500>
collating-symbol <X5700>
collating-symbol <X5900>
collating-symbol <X5B00>
collating-symbol <X6206>
collating-symbol <X6208>
collating-symbol <X620A>
collating-symbol <X620C>
collating-symbol <X620E>
collating-symbol <X6210>
collating-symbol <X6212>
collating-symbol <X6214>
collating-symbol <X6216>
collating-symbol <X6218>
collating-symbol <X621A>
collating-symbol <X621C>
collating-symbol <X621E>
collating-symbol <X6220>
collating-symbol <X6222>
collating-symbol <X6224>
collating-symbol <X6226>
collating-symbol <X6228>
collating-symbol <X622A>
collating-symbol <X622C>
collating-symbol <X622E>
collating-symbol <X6230>
collating-symbol <X6232>
collating-symbol <X6234>
collating-symbol <X6236>
collating-symbol <X6238>
collating-symbol <X623A>
collating-symbol <X623C>
collating-symbol <X623E>
collating-symbol <X6240>
collating-symbol <X6242>
collating-symbol <X6244>
collating-symbol <X6246>
collating-symbol <X6248>
collating-symbol <X624A>
collating-symbol <X624C>
collating-symbol <X624D>
collating-symbol <X624E>
collating-symbol <X6250>
collating-symbol <X6252>
order_start forward;forward;forward;forward
* collation weights in order
<X01>
<X05>
<X20>
<X46>
<X9C>
<XA0>
<XAE>
<XC0>
<X0304>
<X0306>
<X0308>
<X030A>
<X030C>
<X0400>
<X050A>
<X050E>
<X0510>
<X0600>
<X070C>
<X0722>
<X072C>
<X0750>
<X0754>
<X0758>
<X075E>
<X0800>
<X0900>
<X0968>
<X0976>
<X098C>
<X098E>
<X0990>
<X0992>
<X0994>
<X0996>
<X0A7A>
<X0A7C>
<X0A86>
<X0A88>
<X0A8A>
<X0A8E>
<X0A90>
<X0AF2>
<X0AF4>
<X0AF6>
<X0C04>
<X0C0A>
<X0C55>
<X0C63>
<X0C6B>
<X0C6D>
<X0C6F>
<X0C73>
<X0C77>
<X0D26>
<X0D2C>
<X1000>
<X1200>
<X1400>
<X1600>
<X1800>
<X1A00>
<X1C00>
<X1E00>
<X2000>
<X2200>
<X2400>
<X2900>
<X2B00>
<X2D00>
<X2F00>
<X3100>
<X3300>
<X3500>
<X3700>
<X3900>
<X3B00>
<X3D00>
<X3F00>
<X4100>
<X4300>
<X4500>
<X4700>
<X4900>
<X4B00>
<X4D00>
<X4F00>
<X5100>
<X5300>
<X5500>
<X5700>
<X5900>
<X5B00>
<X6206>
<X6208>
<X620A>
<X620C>
<X620E>
<X6210>
<X6212>
<X6214>
<X6216>
<X6218>
<X621A>
<X621C>
<X621E>
<X6220>
<X6222>
<X6224>
<X6226>
<X6228>
<X622A>
<X622C>
<X622E>
<X6230>
<X6232>
<X6234>
<X6236>
<X6238>
<X623A>
<X623C>
<X623E>
<X6240>
<X6242>
<X6244>
<X6246>
<X6248>
<X624A>
<X624C>
<X624D>
<X624E>
<X6250>
<X6252>
* assignment of characters to weights
<NULL> IGNORE;IGNORE;IGNORE;<NULL>
<START_OF_HEADING> IGNORE;IGNORE;IGNORE;<START_OF_HEADING>
<START_OF_TEXT> IGNORE;IGNORE;IGNORE;<START_OF_TEXT>
<END_OF_TEXT> IGNORE;IGNORE;IGNORE;<END_OF_TEXT>
<END_OF_TRANSMISSION> IGNORE;IGNORE;IGNORE;<END_OF_TRANSMISSION>
<ENQUIRY> IGNORE;IGNORE;IGNORE;<ENQUIRY>
<ACKNOWLEDGE> IGNORE;IGNORE;IGNORE;<ACKNOWLEDGE>
<ALERT> IGNORE;IGNORE;IGNORE;<ALERT>
<BACKSPACE> IGNORE;IGNORE;IGNORE;<BACKSPACE>
<SHIFT_OUT> IGNORE;IGNORE;IGNORE;<SHIFT_OUT>
<SHIFT_IN> IGNORE;IGNORE;IGNORE;<SHIFT_IN>
<DATA_LINK_ESCAPE> IGNORE;IGNORE;IGNORE;<DATA_LINK_ESCAPE>
<DEVICE_CONTROL_ONE> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_ONE>
<DEVICE_CONTROL_TWO> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_TWO>
<DEVICE_CONTROL_THREE> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_THREE>
<DEVICE_CONTROL_FOUR> IGNORE;IGNORE;IGNORE;<DEVICE_CONTROL_FOUR>
<NEGATIVE_ACKNOWLEDGE> IGNORE;IGNORE;IGNORE;<NEGATIVE_ACKNOWLEDGE>
<SYNCHRONOUS_IDLE> IGNORE;IGNORE;IGNORE;<SYNCHRONOUS_IDLE>
<END_OF_TRANSMISSION_BLOCK> IGNORE;IGNORE;IGNORE;<END_OF_TRANSMISSION_BLOCK>
<CANCEL> IGNORE;IGNORE;IGNORE;<CANCEL>
<END_OF_MEDIUM> IGNORE;IGNORE;IGNORE;<END_OF_MEDIUM>
<SUBSTITUTE> IGNORE;IGNORE;IGNORE;<SUBSTITUTE>
<ESCAPE> IGNORE;IGNORE;IGNORE;<ESCAPE>
<INFORMATION_SEPARATOR_FOUR> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_FOUR>
<INFORMATION_SEPARATOR_THREE> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_THREE>
<INFORMATION_SEPARATOR_TWO> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_TWO>
<INFORMATION_SEPARATOR_ONE> IGNORE;IGNORE;IGNORE;<INFORMATION_SEPARATOR_ONE>
<DELETE> IGNORE;IGNORE;IGNORE;<DELETE>
<tab> <X0304>;<X05>;<X05>;<tab>
<newline> <X0306>;<X05>;<X05>;<newline>
<vertical-tab> <X0308>;<X05>;<X05>;<vertical-tab>
<form-feed> <X030A>;<X05>;<X05>;<form-feed>
<carriage-return> <X030C>;<X05>;<X05>;<carriage-return>
<space> <X0400>;<X05>;<X05>;<space>
<LOW_LINE> <X050A>;<X05>;<X05>;<LOW_LINE>
<HYPHEN-MINUS> <X050E>;<X05>;<X05>;<HYPHEN-MINUS>
<ARMENIAN_HYPHEN> <X0510>;<X05>;<X05>;<ARMENIAN_HYPHEN>
<COMMA> <X0600>;<X05>;<X05>;<COMMA>
<ARMENIAN_COMMA> <X070C>;<X05>;<X05>;<ARMENIAN_COMMA>
<SEMICOLON> <X0722>;<X05>;<X05>;<SEMICOLON>
<COLON> <X072C>;<X05>;<X05>;<COLON>
<EXCLAMATION_MARK> <X0750>;<X05>;<X05>;<EXCLAMATION_MARK>
<ARMENIAN_EXCLAMATION_MARK> <X0754>;<X05>;<X05>;<ARMENIAN_EXCLAMATION_MARK>
<QUESTION_MARK> <X0758>;<X05>;<X05>;<QUESTION_MARK>
<ARMENIAN_QUESTION_MARK> <X075E>;<X05>;<X05>;<ARMENIAN_QUESTION_MARK>
<FULL_STOP> <X0800>;<X05>;<X05>;<FULL_STOP>
<APOSTROPHE> <X0968>;<X05>;<X05>;<APOSTROPHE>
<QUOTATION_MARK> <X0976>;<X05>;<X05>;<QUOTATION_MARK>
<LEFT_PARENTHESIS> <X098C>;<X05>;<X05>;<LEFT_PARENTHESIS>
<RIGHT_PARENTHESIS> <X098E>;<X05>;<X05>;<RIGHT_PARENTHESIS>
<LEFT_SQUARE_BRACKET> <X0990>;<X05>;<X05>;<LEFT_SQUARE_BRACKET>
<RIGHT_SQUARE_BRACKET> <X0992>;<X05>;<X05>;<RIGHT_SQUARE_BRACKET>
<LEFT_CURLY_BRACKET> <X0994>;<X05>;<X05>;<LEFT_CURLY_BRACKET>
<RIGHT_CURLY_BRACKET> <X0996>;<X05>;<X05>;<RIGHT_CURLY_BRACKET>
<COMMERCIAL_AT> <X0A7A>;<X05>;<X05>;<COMMERCIAL_AT>
<ASTERISK> <X0A7C>;<X05>;<X05>;<ASTERISK>
<SOLIDUS> <X0A86>;<X05>;<X05>;<SOLIDUS>
<REVERSE_SOLIDUS> <X0A88>;<X05>;<X05>;<REVERSE_SOLIDUS>
<AMPERSAND> <X0A8A>;<X05>;<X05>;<AMPERSAND>
<NUMBER_SIGN> <X0A8E>;<X05>;<X05>;<NUMBER_SIGN>
<PERCENT_SIGN> <X0A90>;<X05>;<X05>;<PERCENT_SIGN>
<ARMENIAN_APOSTROPHE> <X0AF2>;<X05>;<X05>;<ARMENIAN_APOSTROPHE>
<ARMENIAN_EMPHASIS_MARK> <X0AF4>;<X05>;<X05>;<ARMENIAN_EMPHASIS_MARK>
<ARMENIAN_ABBREVIATION_MARK> <X0AF6>;<X05>;<X05>;<ARMENIAN_ABBREVIATION_MARK>
<GRAVE_ACCENT> <X0C04>;<X05>;<X05>;<GRAVE_ACCENT>
<CIRCUMFLEX_ACCENT> <X0C0A>;<X05>;<X05>;<CIRCUMFLEX_ACCENT>
<RIGHT-FACING_ARMENIAN_ETERNITY_SIGN> "<X0C55><X0900>";<X05>;"<X05><XC0>";<RIGHT-FACING_ARMENIAN_ETERNITY_SIGN>
<LEFT-FACING_ARMENIAN_ETERNITY_SIGN> "<X0C55><X1000>";<X05>;"<X05><XC0>";<LEFT-FACING_ARMENIAN_ETERNITY_SIGN>
<PLUS_SIGN> <X0C63>;<X05>;<X05>;<PLUS_SIGN>
<LESS-THAN_SIGN> <X0C6B>;<X05>;<X05>;<LESS-THAN_SIGN>
<EQUALS_SIGN> <X0C6D>;<X05>;<X05>;<EQUALS_SIGN>
<GREATER-THAN_SIGN> <X0C6F>;<X05>;<X05>;<GREATER-THAN_SIGN>
<VERTICAL_LINE> <X0C73>;<X05>;<X05>;<VERTICAL_LINE>
<TILDE> <X0C77>;<X05>;<X05>;<TILDE>
<DOLLAR_SIGN> <X0D26>;<X05>;<X05>;<DOLLAR_SIGN>
<ARMENIAN_DRAM_SIGN> <X0D2C>;<X05>;<X05>;<ARMENIAN_DRAM_SIGN>
<zero> <X1200>;<X05>;<X05>;<zero>
<one> <X1400>;<X05>;<X05>;<one>
<two> <X1600>;<X05>;<X05>;<two>
<three> <X1800>;<X05>;<X05>;<three>
<four> <X1A00>;<X05>;<X05>;<four>
<five> <X1C00>;<X05>;<X05>;<five>
<six> <X1E00>;<X05>;<X05>;<six>
<seven> <X2000>;<X05>;<X05>;<seven>
<eight> <X2200>;<X05>;<X05>;<eight>
<nine> <X2400>;<X05>;<X05>;<nine>
<a> <X2900>;<X05>;<X05>;<a>
<A> <X2900>;<X05>;<X9C>;<A>
<b> <X2B00>;<X05>;<X05>;<b>
<B> <X2B00>;<X05>;<X9C>;<B>
<c> <X2D00>;<X05>;<X05>;<c>
<C> <X2D00>;<X05>;<X9C>;<C>
<d> <X2F00>;<X05>;<X05>;<d>
<D> <X2F00>;<X05>;<X9C>;<D>
<e> <X3100>;<X05>;<X05>;<e>
<E> <X3100>;<X05>;<X9C>;<E>
<f> <X3300>;<X05>;<X05>;<f>
<F> <X3300>;<X05>;<X9C>;<F>
<g> <X3500>;<X05>;<X05>;<g>
<G> <X3500>;<X05>;<X9C>;<G>
<h> <X3700>;<X05>;<X05>;<h>
<H> <X3700>;<X05>;<X9C>;<H>
<i> <X3900>;<X05>;<X05>;<i>
<I> <X3900>;<X05>;<X9C>;<I>
<j> <X3B00>;<X05>;<X05>;<j>
<J> <X3B00>;<X05>;<X9C>;<J>
<k> <X3D00>;<X05>;<X05>;<k>
<K> <X3D00>;<X05>;<X9C>;<K>
<l> <X3F00>;<X05>;<X05>;<l>
<L> <X3F00>;<X05>;<X9C>;<L>
<m> <X4100>;<X05>;<X05>;<m>
<M> <X4100>;<X05>;<X9C>;<M>
<n> <X4300>;<X05>;<X05>;<n>
<N> <X4300>;<X05>;<X9C>;<N>
<o> <X4500>;<X05>;<X05>;<o>
<O> <X4500>;<X05>;<X9C>;<O>
<p> <X4700>;<X05>;<X05>;<p>
<P> <X4700>;<X05>;<X9C>;<P>
<q> <X4900>;<X05>;<X05>;<q>
<Q> <X4900>;<X05>;<XA0>;<Q>
<r> <X4B00>;<X05>;<X05>;<r>
<R> <X4B00>;<X05>;<X9C>;<R>
<s> <X4D00>;<X05>;<X05>;<s>
<S> <X4D00>;<X05>;<X9C>;<S>
<t> <X4F00>;<X05>;<X05>;<t>
<T> <X4F00>;<X05>;<X9C>;<T>
<u> <X5100>;<X05>;<X05>;<u>
<U> <X5100>;<X05>;<X9C>;<U>
<v> <X5300>;<X05>;<X05>;<v>
<V> <X5300>;<X05>;<X9C>;<V>
<w> <X5500>;<X05>;<X05>;<w>
<W> <X5500>;<X05>;<XA0>;<W>
<x> <X5700>;<X05>;<X05>;<x>
<X> <X5700>;<X05>;<X9C>;<X>
<y> <X5900>;<X05>;<X05>;<y>
<Y> <X5900>;<X05>;<X9C>;<Y>
<z> <X5B00>;<X05>;<X05>;<z>
<Z> <X5B00>;<X05>;<X9C>;<Z>
<ARMENIAN_SMALL_LETTER_AYB> <X6206>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_AYB>
<ARMENIAN_CAPITAL_LETTER_AYB> <X6206>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_AYB>
<ARMENIAN_SMALL_LETTER_BEN> <X6208>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_BEN>
<ARMENIAN_CAPITAL_LETTER_BEN> <X6208>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_BEN>
<ARMENIAN_SMALL_LETTER_GIM> <X620A>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_GIM>
<ARMENIAN_CAPITAL_LETTER_GIM> <X620A>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_GIM>
<ARMENIAN_SMALL_LETTER_DA> <X620C>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_DA>
<ARMENIAN_CAPITAL_LETTER_DA> <X620C>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_DA>
<ARMENIAN_SMALL_LETTER_ECH> <X620E>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_ECH>
<ARMENIAN_CAPITAL_LETTER_ECH> <X620E>;<X05>;<XAE>;<ARMENIAN_CAPITAL_LETTER_ECH>
<ARMENIAN_SMALL_LETTER_ZA> <X6210>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_ZA>
<ARMENIAN_CAPITAL_LETTER_ZA> <X6210>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_ZA>
<ARMENIAN_SMALL_LETTER_EH> <X6212>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_EH>
<ARMENIAN_CAPITAL_LETTER_EH> <X6212>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_EH>
<ARMENIAN_SMALL_LETTER_ET> <X6214>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_ET>
<ARMENIAN_CAPITAL_LETTER_ET> <X6214>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_ET>
<ARMENIAN_SMALL_LETTER_TO> <X6216>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_TO>
<ARMENIAN_CAPITAL_LETTER_TO> <X6216>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_TO>
<ARMENIAN_SMALL_LETTER_ZHE> <X6218>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_ZHE>
<ARMENIAN_CAPITAL_LETTER_ZHE> <X6218>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_ZHE>
<ARMENIAN_SMALL_LETTER_INI> <X621A>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_INI>
<ARMENIAN_CAPITAL_LETTER_INI> <X621A>;<X05>;<XAE>;<ARMENIAN_CAPITAL_LETTER_INI>
<ARMENIAN_SMALL_LETTER_LIWN> <X621C>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_LIWN>
<ARMENIAN_CAPITAL_LETTER_LIWN> <X621C>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_LIWN>
<ARMENIAN_SMALL_LETTER_XEH> <X621E>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_XEH>
<ARMENIAN_CAPITAL_LETTER_XEH> <X621E>;<X05>;<XAE>;<ARMENIAN_CAPITAL_LETTER_XEH>
<ARMENIAN_SMALL_LETTER_CA> <X6220>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_CA>
<ARMENIAN_CAPITAL_LETTER_CA> <X6220>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_CA>
<ARMENIAN_SMALL_LETTER_KEN> <X6222>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_KEN>
<ARMENIAN_CAPITAL_LETTER_KEN> <X6222>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_KEN>
<ARMENIAN_SMALL_LETTER_HO> <X6224>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_HO>
<ARMENIAN_CAPITAL_LETTER_HO> <X6224>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_HO>
<ARMENIAN_SMALL_LETTER_JA> <X6226>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_JA>
<ARMENIAN_CAPITAL_LETTER_JA> <X6226>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_JA>
<ARMENIAN_SMALL_LETTER_GHAD> <X6228>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_GHAD>
<ARMENIAN_CAPITAL_LETTER_GHAD> <X6228>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_GHAD>
<ARMENIAN_SMALL_LETTER_CHEH> <X622A>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_CHEH>
<ARMENIAN_CAPITAL_LETTER_CHEH> <X622A>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_CHEH>
<ARMENIAN_SMALL_LETTER_MEN> <X622C>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_MEN>
<ARMENIAN_CAPITAL_LETTER_MEN> <X622C>;<X05>;<XAE>;<ARMENIAN_CAPITAL_LETTER_MEN>
<ARMENIAN_SMALL_LIGATURE_MEN_ECH> "<X622C><X620E>";"<X05><X05>";"<X20><X20>";<ARMENIAN_SMALL_LIGATURE_MEN_ECH>
<ARMENIAN_SMALL_LIGATURE_MEN_INI> "<X622C><X621A>";"<X05><X05>";"<X20><X20>";<ARMENIAN_SMALL_LIGATURE_MEN_INI>
<ARMENIAN_SMALL_LIGATURE_MEN_XEH> "<X622C><X621E>";"<X05><X05>";"<X20><X20>";<ARMENIAN_SMALL_LIGATURE_MEN_XEH>
<ARMENIAN_SMALL_LIGATURE_MEN_NOW> "<X622C><X6230>";"<X05><X05>";"<X20><X20>";<ARMENIAN_SMALL_LIGATURE_MEN_NOW>
<ARMENIAN_SMALL_LETTER_YI> <X622E>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_YI>
<ARMENIAN_CAPITAL_LETTER_YI> <X622E>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_YI>
<ARMENIAN_SMALL_LETTER_NOW> <X6230>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_NOW>
<ARMENIAN_CAPITAL_LETTER_NOW> <X6230>;<X05>;<XAE>;<ARMENIAN_CAPITAL_LETTER_NOW>
<ARMENIAN_SMALL_LETTER_SHA> <X6232>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_SHA>
<ARMENIAN_CAPITAL_LETTER_SHA> <X6232>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_SHA>
<ARMENIAN_SMALL_LETTER_VO> <X6234>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_VO>
<ARMENIAN_CAPITAL_LETTER_VO> <X6234>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_VO>
<ARMENIAN_SMALL_LETTER_CHA> <X6236>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_CHA>
<ARMENIAN_CAPITAL_LETTER_CHA> <X6236>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_CHA>
<ARMENIAN_SMALL_LETTER_PEH> <X6238>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_PEH>
<ARMENIAN_CAPITAL_LETTER_PEH> <X6238>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_PEH>
<ARMENIAN_SMALL_LETTER_JHEH> <X623A>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_JHEH>
<ARMENIAN_CAPITAL_LETTER_JHEH> <X623A>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_JHEH>
<ARMENIAN_SMALL_LETTER_RA> <X623C>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_RA>
<ARMENIAN_CAPITAL_LETTER_RA> <X623C>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_RA>
<ARMENIAN_SMALL_LETTER_SEH> <X623E>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_SEH>
<ARMENIAN_CAPITAL_LETTER_SEH> <X623E>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_SEH>
<ARMENIAN_SMALL_LETTER_VEW> <X6240>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_VEW>
<ARMENIAN_CAPITAL_LETTER_VEW> <X6240>;<X05>;<XAE>;<ARMENIAN_CAPITAL_LETTER_VEW>
<ARMENIAN_SMALL_LIGATURE_VEW_NOW> "<X6240><X6230>";"<X05><X05>";"<X20><X20>";<ARMENIAN_SMALL_LIGATURE_VEW_NOW>
<ARMENIAN_SMALL_LETTER_TIWN> <X6242>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_TIWN>
<ARMENIAN_CAPITAL_LETTER_TIWN> <X6242>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_TIWN>
<ARMENIAN_SMALL_LETTER_REH> <X6244>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_REH>
<ARMENIAN_CAPITAL_LETTER_REH> <X6244>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_REH>
<ARMENIAN_SMALL_LETTER_CO> <X6246>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_CO>
<ARMENIAN_CAPITAL_LETTER_CO> <X6246>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_CO>
<ARMENIAN_SMALL_LETTER_YIWN> <X6248>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_YIWN>
<ARMENIAN_CAPITAL_LETTER_YIWN> <X6248>;<X05>;<XAE>;<ARMENIAN_CAPITAL_LETTER_YIWN>
<ARMENIAN_SMALL_LETTER_PIWR> <X624A>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_PIWR>
<ARMENIAN_CAPITAL_LETTER_PIWR> <X624A>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_PIWR>
<ARMENIAN_SMALL_LETTER_KEH> <X624C>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_KEH>
<ARMENIAN_CAPITAL_LETTER_KEH> <X624C>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_KEH>
<ARMENIAN_SMALL_LIGATURE_ECH_YIWN> <X624D>;<X05>;<X05>;<ARMENIAN_SMALL_LIGATURE_ECH_YIWN>
<ARMENIAN_CAPITAL_LETTER_ECH-ARMENIAN_SMALL_LETTER_YIWN> <X624D>;<X05>;<X46>;<ARMENIAN_CAPITAL_LETTER_ECH-ARMENIAN_SMALL_LETTER_YIWN>
<ARMENIAN_SMALL_LETTER_OH> <X624E>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_OH>
<ARMENIAN_CAPITAL_LETTER_OH> <X624E>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_OH>
<ARMENIAN_SMALL_LETTER_FEH> <X6250>;<X05>;<X05>;<ARMENIAN_SMALL_LETTER_FEH>
<ARMENIAN_CAPITAL_LETTER_FEH> <X6250>;<X05>;<XA0>;<ARMENIAN_CAPITAL_LETTER_FEH>
<ARMENIAN_MODIFIER_LETTER_LEFT_HALF_RING> <X6252>;<X05>;<X05>;<ARMENIAN_MODIFIER_LETTER_LEFT_HALF_RING>
UNDEFINED IGNORE;IGNORE;IGNORE;...
order_end
END LC_COLLATE

View File

@ -1,38 +0,0 @@
# icelandic (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-1
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
(0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>);\
B;(C,<C,>);(D,<D->);(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O?>,<O//>);\
P;...;T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>);Z;\
<TH>;<AE>;<O:>;\
#
[;\\;];^;<':>;_;<'m>;<''>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>);\
b;(c,<c,>);(d,<d->);(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o?>,<o//>);\
p;...;t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);z;\
<th>;<ae>;<o:>;<ss>;\
#
\{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

View File

@ -1,38 +0,0 @@
# icelandic (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-15
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>);\
B;(C,<C,>);(D,<D->);(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O?>,<O//>,<OE>);\
P;...;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
<TH>;<AE>;<O:>;\
#
[;\\;];^;_;<'m>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>);\
b;(c,<c,>);(d,<d->);(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o?>,<o//>,<oe>);\
p;...;r;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);(z,<z<>);\
<th>;<ae>;<o:>;<ss>;\
#
\{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

File diff suppressed because it is too large Load Diff

20316
share/colldef/ja_JP.UTF-8.src Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +0,0 @@
# $FreeBSD$
# PT154 (backward compatible with ASCII)
#
# Birsh T <birsh@mail.kz>, 2003-12-12
#
charmap map.PT154
order \
# controls
<NU>;...;<US>;\
#
<NS>;<SP>;!;\";<"6>;<"9>;<<<>;</>/>>;\
<Nb>;<DO>;\
%;&;';<'6>;<'9>;\(;\);*;+;\,;-;.;/;\
# digits
0;...;9;\
#
:;\;;\<;=;>;?;<SE>;<PI>;<Co>;<Rg>;<At>;\
# uppercase
A;...;Z;\
<A=>;<HW>;<B=>;<V=>;<G=>;<G->;<D=>;\
<X%>;<E=>;<IO>;<Z%>;<Z.>;<Z=>;\
<I=>;<I'>;<II>;<J=>;<J%>;<K=>;<K%>;<K!>;<BK>;<L=>;\
<M=>;<N=>;<N%>;<O=>;<O->;<P=>;<R=>;\
<S=>;<DS>;<T=>;<U=>;<V%>;<U'>;<Y">;\
<Y->;<F=>;<H=>;<H%>;<HH>;<C=>;<C%>;<C.>;<C!>;<S%>;<Sc>;\
<=">;<Y=>;<%">;<JE>;<JU>;<JA>;\
#
[;\\;];^;_;`;\
# lowercase
a;...;z;\
<a=>;<hw>;<b=>;<v=>;<g=>;<g->;<d=>;\
<x%>;<e=>;<io>;<z%>;<z.>;<z=>;\
<i=>;<i'>;<ii>;<j=>;<j%>;<k=>;<k%>;<k!>;<bk>;<l=>;\
<m=>;<n=>;<n%>;<o=>;<o->;<p=>;<r=>;\
<s=>;<ds>;<t=>;<u=>;<v%>;<u'>;<y">;\
<y->;<f=>;<h=>;<h%>;<hh>;<c=>;<c%>;<c.>;<c!>;<s%>;<sc>;\
<='>;<y=>;<%'>;<je>;<ju>;<ja>;\
#
\{;<NO>;|;\};~;<.M>;<DG>;\
<-N>;<-M>;<:9>;<.3>;\
<N0>;<sb>;<DT>

20787
share/colldef/ko_KR.UTF-8.src Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@
# latin1 (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-1
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
(0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
P;...;T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>);Z;\
<D->;<TH>;\
#
[;\\;];^;<':>;_;<'m>;<''>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
p;...;t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);z;\
<d->;<th>;<ss>;\
#
\{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

View File

@ -1,37 +0,0 @@
# Latin-7 / Baltic Rim (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-13
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;\";<"">;<Nb>;\
<Cu>;<DO>;<Ct>;<Pd>;\
%;&;';\(;\);*;+;<-:>;<*X>;<.M>;\,;<,,>;<``>;<-->;<+->;-;.;<'.>;/;\
# digits
0;...;9;\
#
:;\;;\<;=;>;<<<>;</>/>>;?;<NO>;<SE>;<At>;\
# capital
(A,<AA>,<A:>,<A;>,<A->,<AE>);\
B;(C,<C<>,<C'>);D;(E,<E'>,<E;>,<E->,<E.>);\
F;(G,<G,>);H;(I,<I;>,<I->);Y;\
J;(K,<K,>);(L,<L,>,<L//>);M;(N,<N'>,<N,>);(O,<O'>,<O:>,<O?>,<O//>,<O->);\
P;Q;(R,<R,>);(S,<S'>,<S<>);T;\
(U,<U:>,<U;>,<U->);\
V;W;X;(Z,<Z'>,<Z.>,<Z<>);\
#
[;\\;];^;_;`;\
# small
(a,<aa>,<a:>,<a;>,<a->,<ae>);\
b;(c,<c<>,<c'>);d;(e,<e'>,<e;>,<e->,<e.>);\
f;(g,<g,>);h;(i,<i;>,<i->);y;\
j;(k,<k,>);(l,<l,>,<l//>);m;(n,<n'>,<n,>);(o,<o'>,<o:>,<o?>,<o//>,<o->);\
p;q;(r,<r,>);(s,<s'>,<s<>,<ss>);t;\
(u,<u:>,<u;>,<u->);\
v;w;x;(z,<z'>,<z.>,<z<>);\
#
\{;|;<BB>;\};~;<DG>;<DT>;<Co>;<Rg>;<My>;<PI>;<1S>;<2S>;<3S>;\
<14>;<12>;<34>

View File

@ -1,38 +0,0 @@
# latin1 (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-15
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
<Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
%;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
# digits
0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
#
:;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
# capital
(A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\
P;...;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
<D->;<TH>;\
#
[;\\;];^;_;<'m>;`;\
# small
(a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\
f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\
p;...;r;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
v;w;x;(y,<y'>,<y:>);(z,<z<>);\
<d->;<th>;<ss>;\
#
\{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
# remains
<-a>;<-o>

View File

@ -1,36 +0,0 @@
# latin2 (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-2
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;\";<Nb>;\
<Cu>;<DO>;\
%;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
# digits
0;...;9;\
#
:;\;;\<;=;>;?;<SE>;<At>;\
# capital
(A,<A'>,<A/>>,<A:>,<A;>,<A(>);\
B;(C,<C,>,<C'>,<C<>);(D,<D<>,<D//>);(E,<E'>,<E:>,<E;>,<E<>);\
F;G;H;(I,<I'>,<I/>>);\
J;K;(L,<L//>,<L<>,<L'>);M;(N,<N'>,<N<>);(O,<O'>,<O/>>,<O:>,<O">);\
P;Q;(R,<R'>,<R<>);(S,<S'>,<S<>,<S,>);(T,<T<>,<T,>);\
(U,<U'>,<U:>,<U0>,<U">);\
V;W;X;(Y,<Y'>);(Z,<Z'>,<Z<>,<Z.>);\
#
[;\\;];^;<':>;<'">;<'<>;<'(>;_;<''>;`;\
# small
(a,<a'>,<a/>>,<a:>,<a;>,<a(>);\
b;(c,<c,>,<c'>,<c<>);(d,<d<>,<d//>);(e,<e'>,<e:>,<e;>,<e<>);\
f;g;h;(i,<i'>,<i/>>);\
j;k;(l,<l//>,<l<>,<l'>);m;(n,<n'>,<n<>);(o,<o'>,<o/>>,<o:>,<o">);\
p;q;(r,<r'>,<r<>);(s,<s'>,<s<>,<s,>,<ss>);(t,<t<>,<t,>);\
(u,<u'>,<u:>,<u0>,<u">);\
v;w;x;(y,<y'>);(z,<z'>,<z<>,<z.>);\
#
\{;|;\};~;<DG>;<DT>

View File

@ -1,36 +0,0 @@
# latin4 (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-4
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;\";<Nb>;\
<Cu>;<DO>;\
%;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
# digits
0;...;9;\
#
:;\;;\<;=;>;?;<SE>;<At>;\
# capital
(A,<A'>,<A/>>,<AA>,<A:>,<A;>,<A?>,<A->,<AE>);\
B;(C,<C<>);(D,<D//>);(E,<E'>,<E:>,<E.>,<E;>,<E->);\
F;(G,<G,>);H;(I,<I'>,<I/>>,<I?>,<I;>,<I->);\
J;(K,<K,>);(L,<L,>);M;(N,<N,>);<NG>;(O,<O/>>,<O:>,<O?>,<O//>,<O->);\
P;Q;(R,<R,>);(S,<S<>);(T,<T//>);\
(U,<U'>,<U/>>,<U:>,<U;>,<U?>,<U->);\
V;W;X;Y;(Z,<Z<>);\
#
[;\\;];^;<':>;<'<>;_;<'m>;<''>;`;\
# small
(a,<a'>,<a/>>,<aa>,<a:>,<a?>,<a;>,<a->,<ae>);\
b;(c,<c<>);(d,<d//>);(e,<e'>,<e:>,<e.>,<e;>,<e->);\
f;(g,<g,>);h;(i,<i'>,<i/>>,<i?>,<i;>,<i->);\
j;(k,<k,>);<kk>;(l,<l,>);m;(n,<n,>);<ng>;(o,<o/>>,<o:>,<o?>,<o//>,<o->);\
p;q;(r,<r,>);(s,<s<>,<ss>);(t,<t//>);\
(u,<u'>,<u/>>,<u:>,<u;>,<u?>,<u->);\
v;w;x;y;(z,<z<>);\
#
\{;|;\};~;<DG>;<DT>

View File

@ -1,6 +0,0 @@
# ASCII
#
# $FreeBSD$
#
order \
\x00;...;\xff

View File

@ -1,36 +0,0 @@
# Lithuanian (backward compatible with ASCII)
#
# $FreeBSD$
#
charmap map.ISO8859-4
order \
# controls
<NU>;...;<US>;<PA>;...;<AC>;\
#
<NS>;<SP>;!;\";<Nb>;\
<Cu>;<DO>;\
%;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
# digits
0;...;9;\
#
:;\;;\<;=;>;?;<SE>;<At>;\
# capital
(A,<A'>,<A/>>,<AA>,<A:>,<A;>,<A?>,<A->,<AE>);\
B;(C,<C<>);(D,<D//>);(E,<E'>,<E:>,<E;>,<E->,<E.>);\
F;(G,<G,>);H;(I,<I'>,<I/>>,<I?>,<I;>,<I->);Y;\
J;(K,<K,>);(L,<L,>);M;(N,<N,>);<NG>;(O,<O/>>,<O:>,<O?>,<O//>,<O->);\
P;Q;(R,<R,>);(S,<S<>);(T,<T//>);\
(U,<U'>,<U/>>,<U:>,<U;>,<U?>,<U->);\
V;W;X;(Z,<Z<>);\
#
[;\\;];^;<':>;<'<>;_;<'m>;<''>;`;\
# small
(a,<a'>,<a/>>,<aa>,<a:>,<a?>,<a;>,<a->,<ae>);\
b;(c,<c<>);(d,<d//>);(e,<e'>,<e:>,<e;>,<e->,<e.>);\
f;(g,<g,>);h;(i,<i'>,<i/>>,<i?>,<i;>,<i->);y;\
j;(k,<k,>);<kk>;(l,<l,>);m;(n,<n,>);<ng>;(o,<o/>>,<o:>,<o?>,<o//>,<o->);\
p;q;(r,<r,>);(s,<s<>,<ss>);(t,<t//>);\
(u,<u'>,<u/>>,<u:>,<u;>,<u?>,<u->);\
v;w;x;(z,<z<>);\
#
\{;|;\};~;<DG>;<DT>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,144 +0,0 @@
# $FreeBSD$
#
# map.ARMSCII-8 defined by Vahe Khachikyan <vahe@khachikyan.de>
#
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
armeternity \xA1
armew \xA2
armfullstop \xA3
armparenright \xA4
armparenleft \xA5
armquotright \xA6
armquotleft \xA7
armemdash \xA8
armdot \xA9
armsep \xAA
armcomma \xAB
armendash \xAC
armyentamna \xAD
armellipsis \xAE
armexclam \xAF
armaccent \xB0
armquestion \xB1
Armayb \xB2
armayb \xB3
Armben \xB4
armben \xB5
Armgim \xB6
armgim \xB7
Armda \xB8
armda \xB9
Armyech \xBA
armyech \xBB
Armza \xBC
armza \xBD
Arme \xBE
arme \xBF
Armat \xC0
armat \xC1
Armto \xC2
armto \xC3
Armzhe \xC4
armzhe \xC5
Armini \xC6
armini \xC7
Armlyun \xC8
armlyun \xC9
Armkhe \xCA
armkhe \xCB
Armtsa \xCC
armtsa \xCD
Armken \xCE
armken \xCF
Armho \xD0
armho \xD1
Armdza \xD2
armdza \xD3
Armghat \xD4
armghat \xD5
Armtche \xD6
armtche \xD7
Armmen \xD8
armmen \xD9
Armhi \xDA
armhi \xDB
Armnu \xDC
armnu \xDD
Armsha \xDE
armsha \xDF
Armvo \xE0
armvo \xE1
Armcha \xE2
armcha \xE3
Armpe \xE4
armpe \xE5
Armje \xE6
armje \xE7
Armra \xE8
armra \xE9
Armse \xEA
armse \xEB
Armvev \xEC
armvev \xED
Armtyun \xEE
armtyun \xEF
Armre \xF0
armre \xF1
Armtso \xF2
armtso \xF3
Armvyun \xF4
armvyun \xF5
Armpyur \xF6
armpyur \xF7
Armke \xF8
armke \xF9
Armo \xFA
armo \xFB
Armfe \xFC
armfe \xFD
armapostrophe \xFE

View File

@ -1,175 +0,0 @@
# $FreeBSD$
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
A= \x80
B= \x81
V= \x82
G= \x83
D= \x84
E= \x85
Z% \x86
Z= \x87
I= \x88
J= \x89
K= \x8a
L= \x8b
M= \x8c
N= \x8d
O= \x8e
P= \x8f
R= \x90
S= \x91
T= \x92
U= \x93
F= \x94
H= \x95
C= \x96
C% \x97
S% \x98
Sc \x99
=" \x9a
Y= \x9b
%" \x9c
JE \x9d
JU \x9e
JA \x9f
a= \xa0
b= \xa1
v= \xa2
g= \xa3
d= \xa4
e= \xa5
z% \xa6
z= \xa7
i= \xa8
j= \xa9
k= \xaa
l= \xab
m= \xac
n= \xad
o= \xae
p= \xaf
.S \xb0
:S \xb1
?S \xb2
vv \xb3
vl \xb4
vL \xb5
Vl \xb6
Dl \xb7
dL \xb8
VL \xb9
VV \xba
LD \xbb
UL \xbc
Ul \xbd
uL \xbe
dl \xbf
ur \xc0
uh \xc1
dh \xc2
vr \xc3
hh \xc4
vh \xc5
vR \xc6
Vr \xc7
UR \xc8
DR \xc9
UH \xca
DH \xcb
VR \xcc
HH \xcd
VH \xce
uH \xcf
Uh \xd0
dH \xd1
Dh \xd2
Ur \xd3
uR \xd4
dR \xd5
Dr \xd6
Vh \xd7
vH \xd8
ul \xd9
dr \xda
FB \xdb
LB \xdc
lB \xdd
RB \xde
TB \xdf
r= \xe0
s= \xe1
t= \xe2
u= \xe3
f= \xe4
h= \xe5
c= \xe6
c% \xe7
s% \xe8
sc \xe9
=' \xea
y= \xeb
%' \xec
je \xed
ju \xee
ja \xef
IO \xf0
io \xf1
IE \xf2
ie \xf3
YI \xf4
yi \xf5
V% \xf6
v% \xf7
II \xf8
ii \xf9
.M \xfa
Cu \xfb
G3 \xfc
g3 \xfd
Sb \xfe
NS \xff

View File

@ -1,257 +0,0 @@
# $FreeBSD$
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
! \x21
" \x22
Nb \x23
DO \x24
% \x25
& \x26
' \x27
( \x28
) \x29
* \x2a
+ \x2b
, \x2c
- \x2d
. \x2e
/ \x2f
0 \x30
1 \x31
2 \x32
3 \x33
4 \x34
5 \x35
6 \x36
7 \x37
8 \x38
9 \x39
: \x3a
; \x3b
< \x3c
= \x3d
> \x3e
? \x3f
At \x40
A \x41
B \x42
C \x43
D \x44
E \x45
F \x46
G \x47
H \x48
I \x49
J \x4a
K \x4b
L \x4c
M \x4d
N \x4e
O \x4f
P \x50
Q \x51
R \x52
S \x53
T \x54
U \x55
V \x56
W \x57
X \x58
Y \x59
Z \x5a
<( \x5b
// \x5c
)> \x5d
'> \x5e
_ \x5f
'! \x60
a \x61
b \x62
c \x63
d \x64
e \x65
f \x66
g \x67
h \x68
i \x69
j \x6a
k \x6b
l \x6c
m \x6d
n \x6e
o \x6f
p \x70
q \x71
r \x72
s \x73
t \x74
u \x75
v \x76
w \x77
x \x78
y \x79
z \x7a
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
D% \x80
G% \x81
.9 \x82
g% \x83
:9 \x84
.3 \x85
/- \x86
/= \x87
Eu \x88
%0 \x89
LJ \x8a
<1 \x8b
NJ \x8c
KJ \x8d
Ts \x8e
DZ \x8f
d% \x90
'6 \x91
'9 \x92
"6 \x93
"9 \x94
sb \x95
-N \x96
-M \x97
FB \x98
TM \x99
lj \x9a
>1 \x9b
nj \x9c
kj \x9d
ts \x9e
dz \x9f
NS \xa0
V% \xa1
v% \xa2
J% \xa3
Cu \xa4
G3 \xa5
BB \xa6
SE \xa7
IO \xa8
Co \xa9
IE \xaa
<< \xab
NO \xac
-- \xad
Rg \xae
YI \xaf
DG \xb0
+- \xb1
II \xb2
ii \xb3
g3 \xb4
My \xb5
PI \xb6
.M \xb7
io \xb8
N0 \xb9
ie \xba
>> \xbb
j% \xbc
DS \xbd
ds \xbe
yi \xbf
A= \xc0
B= \xc1
V= \xc2
G= \xc3
D= \xc4
E= \xc5
Z% \xc6
Z= \xc7
I= \xc8
J= \xc9
K= \xca
L= \xcb
M= \xcc
N= \xcd
O= \xce
P= \xcf
R= \xd0
S= \xd1
T= \xd2
U= \xd3
F= \xd4
H= \xd5
C= \xd6
C% \xd7
S% \xd8
Sc \xd9
=" \xda
Y= \xdb
%" \xdc
JE \xdd
JU \xde
JA \xdf
a= \xe0
b= \xe1
v= \xe2
g= \xe3
d= \xe4
e= \xe5
z% \xe6
z= \xe7
i= \xe8
j= \xe9
k= \xea
l= \xeb
m= \xec
n= \xed
o= \xee
p= \xef
r= \xf0
s= \xf1
t= \xf2
u= \xf3
f= \xf4
h= \xf5
c= \xf6
c% \xf7
s% \xf8
sc \xf9
=' \xfa
y= \xfb
%' \xfc
je \xfd
ju \xfe
ja \xff

View File

@ -1,175 +0,0 @@
# $FreeBSD$
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
A= \x80
B= \x81
V= \x82
G= \x83
D= \x84
E= \x85
Z% \x86
Z= \x87
I= \x88
J= \x89
K= \x8a
L= \x8b
M= \x8c
N= \x8d
O= \x8e
P= \x8f
R= \x90
S= \x91
T= \x92
U= \x93
F= \x94
H= \x95
C= \x96
C% \x97
S% \x98
Sc \x99
=" \x9a
Y= \x9b
%" \x9c
JE \x9d
JU \x9e
JA \x9f
a= \xa0
b= \xa1
v= \xa2
g= \xa3
d= \xa4
e= \xa5
z% \xa6
z= \xa7
i= \xa8
j= \xa9
k= \xaa
l= \xab
m= \xac
n= \xad
o= \xae
p= \xaf
.S \xb0
:S \xb1
?S \xb2
vv \xb3
vl \xb4
vL \xb5
Vl \xb6
Dl \xb7
dL \xb8
VL \xb9
VV \xba
LD \xbb
UL \xbc
Ul \xbd
uL \xbe
dl \xbf
ur \xc0
uh \xc1
dh \xc2
vr \xc3
hh \xc4
vh \xc5
vR \xc6
Vr \xc7
UR \xc8
DR \xc9
UH \xca
DH \xcb
VR \xcc
HH \xcd
VH \xce
uH \xcf
Uh \xd0
dH \xd1
Dh \xd2
Ur \xd3
uR \xd4
dR \xd5
Dr \xd6
Vh \xd7
vH \xd8
ul \xd9
dr \xda
FB \xdb
LB \xdc
lB \xdd
RB \xde
TB \xdf
r= \xe0
s= \xe1
t= \xe2
u= \xe3
f= \xe4
h= \xe5
c= \xe6
c% \xe7
s% \xe8
sc \xe9
=' \xea
y= \xeb
%' \xec
je \xed
ju \xee
ja \xef
IO \xf0
io \xf1
IE \xf2
ie \xf3
YI \xf4
yi \xf5
V% \xf6
v% \xf7
DG \xf8
Sb \xf9
.M \xfa
RT \xfb
N0 \xfc
Cu \xfd
fS \xfe
NS \xff

View File

@ -1,164 +0,0 @@
# $FreeBSD$
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
PA \x80
HO \x81
BH \x82
NH \x83
IN \x84
NL \x85
SA \x86
ES \x87
HS \x88
HJ \x89
VS \x8a
PD \x8b
PU \x8c
RI \x8d
S2 \x8e
S3 \x8f
DC \x90
P1 \x91
P2 \x92
TS \x93
CC \x94
MW \x95
SG \x96
EG \x97
SS \x98
GC \x99
SC \x9a
CI \x9b
ST \x9c
OC \x9d
PM \x9e
AC \x9f
NS \xa0
Vowel-modifier-Chandrabindu ¡
Vowel-modifier-Anuswar ¢
Vowel-modifier-Visarg £
Vowel-A ¤
Vowel-AA ¥
Vowel-I ¦
Vowel-II §
Vowel-U ¨
Vowel-UU ©
Vowel-RI ª
Vowel-E «
Vowel-EY ¬
Vowel-AI ­
Vowel-AYE ®
Vowel-O ¯
Vowel-OW °
Vowel-AU ±
Vowel-AWE ²
Consonant-KA ³
Consonant-KHA ´
Consonant-GA µ
Consonant-GHA ¶
Consonant-NGA ·
Consonant-CHA ¸
Consonant-CHHA ¹
Consonant-JA º
Consonant-JHA »
Consonant-JNA ¼
Consonant-Hard-TA ½
Consonant-Hard-THA ¾
Consonant-Hard-DA ¿
Consonant-Hard-DHA À
Consonant-Hard-NA Á
Consonant-Soft-TA Â
Consonant-Soft-THA Ã
Consonant-Soft-DA Ä
Consonant-Soft-DHA Å
Consonant-Soft-NA Æ
Consonant-NA-Tamil Ç
Consonant-PA È
Consonant-PHA É
Consonant-BA Ê
Consonant-BHA Ë
Consonant-MA Ì
Consonant-YA Í
Consonant-JYA Î
Consonant-RA Ï
Consonant-Hard-RA Ð
Consonant-LA Ñ
Consonant-Hard-LA Ò
Consonant-ZHA-Tamil Ó
Consonant-VA Ô
Consonant-SHA Õ
Consonant-Hard-SHA Ö
Consonant-SA ×
Consonant-HA Ø
Consonant-invisible Ù
Vowel-sign-AA Ú
Vowel-sign-I Û
Vowel-sign-II Ü
Vowel-sign-U Ý
Vowel-sign-UU Þ
Vowel-sign-RI ß
Vowel-sign-E à
Vowel-sign-EY á
Vowel-sign-AI â
Vowel-sign-AYE ã
Vowel-sign-O ä
Vowel-sign-OW å
Vowel-sign-AU æ
Vowel-sign-AWE ç
Vowel-omission-sign è
Diacritic-sign-Nukta é
Full-Stop-Viram ê
Digit-0 ñ
Digit-1 ò
Digit-2 ó
Digit-3 ô
Digit-4 õ
Digit-5 ö
Digit-6 ÷
Digit-7 ø
Digit-8 ù
Digit-9 ú

View File

@ -1,174 +0,0 @@
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
PA \x80
HO \x81
BH \x82
NH \x83
IN \x84
NL \x85
SA \x86
ES \x87
HS \x88
HJ \x89
VS \x8a
PD \x8b
PU \x8c
RI \x8d
S2 \x8e
S3 \x8f
DC \x90
P1 \x91
P2 \x92
TS \x93
CC \x94
MW \x95
SG \x96
EG \x97
SS \x98
GC \x99
SC \x9a
CI \x9b
ST \x9c
OC \x9d
PM \x9e
AC \x9f
NS \xa0
!I \xa1
Ct \xa2
Pd \xa3
Cu \xa4
Ye \xa5
BB \xa6
SE \xa7
': \xa8
Co \xa9
-a \xaa
<< \xab
NO \xac
-- \xad
Rg \xae
'm \xaf
DG \xb0
+- \xb1
2S \xb2
3S \xb3
'' \xb4
My \xb5
PI \xb6
.M \xb7
', \xb8
1S \xb9
-o \xba
>> \xbb
14 \xbc
12 \xbd
34 \xbe
?I \xbf
A! \xc0
A' \xc1
A> \xc2
A? \xc3
A: \xc4
AA \xc5
AE \xc6
C, \xc7
E! \xc8
E' \xc9
E> \xca
E: \xcb
I! \xcc
I' \xcd
I> \xce
I: \xcf
D- \xd0
N? \xd1
O! \xd2
O' \xd3
O> \xd4
O? \xd5
O: \xd6
*X \xd7
O/ \xd8
U! \xd9
U' \xda
U> \xdb
U: \xdc
Y' \xdd
TH \xde
ss \xdf
a! \xe0
a' \xe1
a> \xe2
a? \xe3
a: \xe4
aa \xe5
ae \xe6
c, \xe7
e! \xe8
e' \xe9
e> \xea
e: \xeb
i! \xec
i' \xed
i> \xee
i: \xef
d- \xf0
n? \xf1
o! \xf2
o' \xf3
o> \xf4
o? \xf5
o: \xf6
-: \xf7
o/ \xf8
u! \xf9
u' \xfa
u> \xfb
u: \xfc
y' \xfd
th \xfe
y: \xff

View File

@ -1,175 +0,0 @@
# $FreeBSD$
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
PA \x80
HO \x81
BH \x82
NH \x83
IN \x84
NL \x85
SA \x86
ES \x87
HS \x88
HJ \x89
VS \x8a
PD \x8b
PU \x8c
RI \x8d
S2 \x8e
S3 \x8f
DC \x90
P1 \x91
P2 \x92
TS \x93
CC \x94
MW \x95
SG \x96
EG \x97
SS \x98
GC \x99
SC \x9a
CI \x9b
ST \x9c
OC \x9d
PM \x9e
AC \x9f
NS \xa0
"" \xa1
Ct \xa2
Pd \xa3
Cu \xa4
,, \xa5
BB \xa6
SE \xa7
O/ \xa8
Co \xa9
R, \xaa
<< \xab
NO \xac
-- \xad
Rg \xae
AE \xaf
DG \xb0
+- \xb1
2S \xb2
3S \xb3
`` \xb4
My \xb5
PI \xb6
.M \xb7
o/ \xb8
1S \xb9
r, \xba
>> \xbb
14 \xbc
12 \xbd
34 \xbe
ae \xbf
A; \xc0
I; \xc1
A- \xc2
C' \xc3
A: \xc4
AA \xc5
E; \xc6
E- \xc7
C< \xc8
E' \xc9
Z' \xca
E. \xcb
G, \xcc
K, \xcd
I- \xce
L, \xcf
S< \xd0
N' \xd1
N, \xd2
O' \xd3
O- \xd4
O? \xd5
O: \xd6
*X \xd7
U; \xd8
L/ \xd9
S' \xda
U- \xdb
U: \xdc
Z. \xdd
Z< \xde
ss \xdf
a; \xe0
i; \xe1
a- \xe2
c' \xe3
a: \xe4
aa \xe5
e; \xe6
e- \xe7
c< \xe8
e' \xe9
z' \xea
e. \xeb
g, \xec
k, \xed
i- \xee
l, \xef
s< \xf0
n' \xf1
n, \xf2
o' \xf3
o- \xf4
o? \xf5
o: \xf6
-: \xf7
u; \xf8
l/ \xf9
s' \xfa
u- \xfb
u: \xfc
z. \xfd
z< \xfe
'. \xff

View File

@ -1,174 +0,0 @@
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
PA \x80
HO \x81
BH \x82
NH \x83
IN \x84
NL \x85
SA \x86
ES \x87
HS \x88
HJ \x89
VS \x8a
PD \x8b
PU \x8c
RI \x8d
S2 \x8e
S3 \x8f
DC \x90
P1 \x91
P2 \x92
TS \x93
CC \x94
MW \x95
SG \x96
EG \x97
SS \x98
GC \x99
SC \x9a
CI \x9b
ST \x9c
OC \x9d
PM \x9e
AC \x9f
NS \xa0
!I \xa1
Ct \xa2
Pd \xa3
Eu \xa4
Ye \xa5
S< \xa6
SE \xa7
s< \xa8
Co \xa9
-a \xaa
<< \xab
NO \xac
-- \xad
Rg \xae
'm \xaf
DG \xb0
+- \xb1
2S \xb2
3S \xb3
Z< \xb4
My \xb5
PI \xb6
.M \xb7
z< \xb8
1S \xb9
-o \xba
>> \xbb
OE \xbc
oe \xbd
Y: \xbe
?I \xbf
A! \xc0
A' \xc1
A> \xc2
A? \xc3
A: \xc4
AA \xc5
AE \xc6
C, \xc7
E! \xc8
E' \xc9
E> \xca
E: \xcb
I! \xcc
I' \xcd
I> \xce
I: \xcf
D- \xd0
N? \xd1
O! \xd2
O' \xd3
O> \xd4
O? \xd5
O: \xd6
*X \xd7
O/ \xd8
U! \xd9
U' \xda
U> \xdb
U: \xdc
Y' \xdd
TH \xde
ss \xdf
a! \xe0
a' \xe1
a> \xe2
a? \xe3
a: \xe4
aa \xe5
ae \xe6
c, \xe7
e! \xe8
e' \xe9
e> \xea
e: \xeb
i! \xec
i' \xed
i> \xee
i: \xef
d- \xf0
n? \xf1
o! \xf2
o' \xf3
o> \xf4
o? \xf5
o: \xf6
-: \xf7
o/ \xf8
u! \xf9
u' \xfa
u> \xfb
u: \xfc
y' \xfd
th \xfe
y: \xff

View File

@ -1,174 +0,0 @@
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
PA \x80
HO \x81
BH \x82
NH \x83
IN \x84
NL \x85
SA \x86
ES \x87
HS \x88
HJ \x89
VS \x8a
PD \x8b
PU \x8c
RI \x8d
S2 \x8e
S3 \x8f
DC \x90
P1 \x91
P2 \x92
TS \x93
CC \x94
MW \x95
SG \x96
EG \x97
SS \x98
GC \x99
SC \x9a
CI \x9b
ST \x9c
OC \x9d
PM \x9e
AC \x9f
NS \xa0
A; \xa1
'( \xa2
L/ \xa3
Cu \xa4
L< \xa5
S' \xa6
SE \xa7
': \xa8
S< \xa9
S, \xaa
T< \xab
Z' \xac
-- \xad
Z< \xae
Z. \xaf
DG \xb0
a; \xb1
'; \xb2
l/ \xb3
'' \xb4
l< \xb5
s' \xb6
'< \xb7
', \xb8
s< \xb9
s, \xba
t< \xbb
z' \xbc
'" \xbd
z< \xbe
z. \xbf
R' \xc0
A' \xc1
A> \xc2
A( \xc3
A: \xc4
L' \xc5
C' \xc6
C, \xc7
C< \xc8
E' \xc9
E; \xca
E: \xcb
E< \xcc
I' \xcd
I> \xce
D< \xcf
D/ \xd0
N' \xd1
N< \xd2
O' \xd3
O> \xd4
O" \xd5
O: \xd6
*X \xd7
R< \xd8
U0 \xd9
U' \xda
U" \xdb
U: \xdc
Y' \xdd
T, \xde
ss \xdf
r' \xe0
a' \xe1
a> \xe2
a( \xe3
a: \xe4
l' \xe5
c' \xe6
c, \xe7
c< \xe8
e' \xe9
e; \xea
e: \xeb
e< \xec
i' \xed
i> \xee
d< \xef
d/ \xf0
n' \xf1
n< \xf2
o' \xf3
o> \xf4
o" \xf5
o: \xf6
-: \xf7
r< \xf8
u0 \xf9
u' \xfa
u" \xfb
u: \xfc
y' \xfd
t, \xfe
'. \xff

View File

@ -1,175 +0,0 @@
# $FreeBSD$
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
PA \x80
HO \x81
BH \x82
NH \x83
IN \x84
NL \x85
SA \x86
ES \x87
HS \x88
HJ \x89
VS \x8a
PD \x8b
PU \x8c
RI \x8d
S2 \x8e
S3 \x8f
DC \x90
P1 \x91
P2 \x92
TS \x93
CC \x94
MW \x95
SG \x96
EG \x97
SS \x98
GC \x99
SC \x9a
CI \x9b
ST \x9c
OC \x9d
PM \x9e
AC \x9f
NS \xa0
A; \xa1
kk \xa2
R, \xa3
Cu \xa4
I? \xa5
L, \xa6
SE \xa7
': \xa8
S< \xa9
E- \xaa
G, \xab
T/ \xac
-- \xad
Z< \xae
'm \xaf
DG \xb0
a; \xb1
'; \xb2
r, \xb3
'' \xb4
i? \xb5
l, \xb6
'< \xb7
', \xb8
s< \xb9
e- \xba
g, \xbb
t/ \xbc
NG \xbd
z< \xbe
ng \xbf
A- \xc0
A' \xc1
A> \xc2
A? \xc3
A: \xc4
AA \xc5
AE \xc6
I; \xc7
C< \xc8
E' \xc9
E; \xca
E: \xcb
E. \xcc
I' \xcd
I> \xce
I- \xcf
D/ \xd0
N, \xd1
O- \xd2
K, \xd3
O> \xd4
O? \xd5
O: \xd6
*X \xd7
O/ \xd8
U; \xd9
U' \xda
U> \xdb
U: \xdc
U? \xdd
U- \xde
ss \xdf
a- \xe0
a' \xe1
a> \xe2
a? \xe3
a: \xe4
aa \xe5
ae \xe6
i; \xe7
c< \xe8
e' \xe9
e; \xea
e: \xeb
e. \xec
i' \xed
i> \xee
i- \xef
d/ \xf0
n, \xf1
o- \xf2
k, \xf3
o> \xf4
o? \xf5
o: \xf6
-: \xf7
o/ \xf8
u; \xf9
u' \xfa
u> \xfb
u: \xfc
u? \xfd
u- \xfe
'. \xff

View File

@ -1,175 +0,0 @@
# $FreeBSD$
NU \x00
SH \x01
SX \x02
EX \x03
ET \x04
EQ \x05
AK \x06
BL \x07
BS \x08
HT \x09
LF \x0a
VT \x0b
FF \x0c
CR \x0d
SO \x0e
SI \x0f
DL \x10
D1 \x11
D2 \x12
D3 \x13
D4 \x14
NK \x15
SY \x16
EB \x17
CN \x18
EM \x19
SB \x1a
EC \x1b
FS \x1c
GS \x1d
RS \x1e
US \x1f
SP \x20
Nb \x23
DO \x24
At \x40
<( \x5b
// \x5c
)> \x5d
'> \x5e
'! \x60
(! \x7b
!! \x7c
!) \x7d
'? \x7e
DT \x7f
PA \x80
HO \x81
BH \x82
NH \x83
IN \x84
NL \x85
SA \x86
ES \x87
HS \x88
HJ \x89
VS \x8a
PD \x8b
PU \x8c
RI \x8d
S2 \x8e
S3 \x8f
DC \x90
P1 \x91
P2 \x92
TS \x93
CC \x94
MW \x95
SG \x96
EG \x97
SS \x98
GC \x99
SC \x9a
CI \x9b
ST \x9c
OC \x9d
PM \x9e
AC \x9f
NS \xa0
IO \xa1
D% \xa2
G% \xa3
IE \xa4
DS \xa5
II \xa6
YI \xa7
J% \xa8
LJ \xa9
NJ \xaa
Ts \xab
KJ \xac
-- \xad
V% \xae
DZ \xaf
A= \xb0
B= \xb1
V= \xb2
G= \xb3
D= \xb4
E= \xb5
Z% \xb6
Z= \xb7
I= \xb8
J= \xb9
K= \xba
L= \xbb
M= \xbc
N= \xbd
O= \xbe
P= \xbf
R= \xc0
S= \xc1
T= \xc2
U= \xc3
F= \xc4
H= \xc5
C= \xc6
C% \xc7
S% \xc8
Sc \xc9
=" \xca
Y= \xcb
%" \xcc
JE \xcd
JU \xce
JA \xcf
a= \xd0
b= \xd1
v= \xd2
g= \xd3
d= \xd4
e= \xd5
z% \xd6
z= \xd7
i= \xd8
j= \xd9
k= \xda
l= \xdb
m= \xdc
n= \xdd
o= \xde
p= \xdf
r= \xe0
s= \xe1
t= \xe2
u= \xe3
f= \xe4
h= \xe5
c= \xe6
c% \xe7
s% \xe8
sc \xe9
=' \xea
y= \xeb
%' \xec
je \xed
ju \xee
ja \xef
N0 \xf0
io \xf1
d% \xf2
g% \xf3
ie \xf4
ds \xf5
ii \xf6
yi \xf7
j% \xf8
lj \xf9
nj \xfa
ts \xfb
kj \xfc
SE \xfd
v% \xfe
dz \xff

Some files were not shown because too many files have changed in this diff Show More